From owner-freebsd-ports@FreeBSD.ORG Tue Mar 4 00:30:09 2014 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3EB30CE2; Tue, 4 Mar 2014 00:30:09 +0000 (UTC) Received: from mail-qc0-x22e.google.com (mail-qc0-x22e.google.com [IPv6:2607:f8b0:400d:c01::22e]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C4BFD6A0; Tue, 4 Mar 2014 00:30:08 +0000 (UTC) Received: by mail-qc0-f174.google.com with SMTP id x13so4704239qcv.33 for ; Mon, 03 Mar 2014 16:30:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=Ytg5nWpIF0zTCNRWMfZfkTy6ry3OK8CjXofECPgzCg4=; b=J/j4sanSazEtdAbPYU/SnX+orGcwFG4Oi+j/3st2Tvz87FHAhdHZf++aBbJVI2l4sy s0sgbZUNV2CpOnrMk6QVgoy9LH2pQFfvUZF7p0ef6CFInoKy+QKpPqt4hOu6kbb9q/d5 s3iG1O5iANB0NrX3ZRvXCS+ImO439ZDYx8IdQACnptgh96LEpNpJ9Mi4Us7BTMkUklCC 6v/Yf9pMmB0qOEGAqrA0v4JlKV71iSPayCI3rZ5gBeJwW8RaudlCvw0lUjayHbXc27TY o5xz/8pv9PPfMjITpJFe2p+DG7MLezR6HbFnfLy7AZynb7PSHV87KvCsfPf9arvzRpSj uvfw== X-Received: by 10.224.223.134 with SMTP id ik6mr6371030qab.90.1393893007816; Mon, 03 Mar 2014 16:30:07 -0800 (PST) MIME-Version: 1.0 Received: by 10.229.64.68 with HTTP; Mon, 3 Mar 2014 16:29:47 -0800 (PST) In-Reply-To: References: From: Chad Gross Date: Mon, 3 Mar 2014 19:29:47 -0500 Message-ID: Subject: Re: [patch] net-mgmt/flowviewer and security/silktools patches To: Muhammad Moinur Rahman <5u623l20@gmail.com> Content-Type: multipart/mixed; boundary=001a11c22c70970b9204f3bd0175 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: Alex Samorukov , lx@freebsd.org, FreeBSD Ports X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Mar 2014 00:30:09 -0000 --001a11c22c70970b9204f3bd0175 Content-Type: text/plain; charset=ISO-8859-1 On Sun, Mar 2, 2014 at 11:42 PM, Muhammad Moinur Rahman <5u623l20@gmail.com>wrote: > Hi, > > Can you please send me the patches as attachment rather than inline. I > will try to rebuild it from scratch and check it out again with Silktools. > > Regards, > Muhammad > > > On Wed, Feb 19, 2014 at 12:57 AM, Chad Gross wrote: > >> On Tue, Feb 18, 2014 at 10:33 AM, Chad Gross wrote: >> >> > I managed to configure net-mgmt/flowviewer with security/silktools, but >> > had to make some modifications to get it working. FlowViewer is >> configured >> > by defaut to pass the $silk_data_dir + $device_name as the root data >> > directory to the rwfilter tool, when the root directory should be the >> same >> > as $silk_data_dir. I've confirmed it is still the configured this way in >> > the latest version (4.3, released 2/11/14) so I could be misconfiguring >> > something, but I don't see how since I following the documentation ( >> > >> http://sourceforge.net/projects/flowviewer/files/FlowViewer.pdf/download >> ). >> > I also manually ran the commands out of working/DEBUG_VIEWER and it >> > produced nothing until I updated --data-rootdir=/data/flows/S0 to >> > --data-rootdir=/data/flows. >> > >> > Here are patches for the 4 affected files: >> > >> > >> > --- FlowGrapher_Main.cgi.orig 2014-02-18 08:49:42.000000000 -0500 >> > >> > +++ FlowGrapher_Main.cgi 2014-02-18 09:09:58.000000000 -0500 >> > >> > @@ -535,7 +535,7 @@ >> > >> > $silk_flow_type =~ s/\s+//g; >> > >> > } >> > >> > >> > >> > - $data_root_dir = $silk_data_directory ."/". $device_name; >> > >> > + $data_root_dir = $silk_data_directory; >> > >> > >> > >> > # Prepare rwfilter start and end time parameters, filter >> criteria >> > and window type >> > >> > >> > --- FlowTracker_Recreate.orig 2014-02-16 15:50:35.000000000 -0500 >> > >> > +++ FlowTracker_Recreate 2014-02-18 09:09:58.000000000 -0500 >> > >> > @@ -245,7 +245,7 @@ >> > >> > $cat_start = >> > epoch_to_date($cat_start_epoch,"LOCAL"); >> > >> > $cat_end = >> epoch_to_date($cat_end_epoch,"LOCAL"); >> > >> > >> > >> > - $data_root_dir = $silk_data_directory ."/". >> > $device_name; >> > >> > + $data_root_dir = $silk_data_directory; >> > >> > >> > >> > $silk_flow_type = ""; >> > >> > >> > >> > --- FlowTracker_Collector.orig 2014-02-18 08:48:54.000000000 -0500 >> > >> > +++ FlowTracker_Collector 2014-02-18 09:09:58.000000000 -0500 >> > >> > @@ -303,7 +303,7 @@ >> > >> > >> > >> > # Set up silk data sources >> > >> > >> > >> > - $data_root_dir = $silk_data_directory ."/". >> > $device_name; >> > >> > + $data_root_dir = $silk_data_directory; >> > >> > >> > >> > $silk_flow_type = ""; >> > >> > >> > >> > --- FlowViewer_Main.cgi.orig 2014-02-18 08:52:30.000000000 -0500 >> > >> > +++ FlowViewer_Main.cgi 2014-02-18 09:09:58.000000000 -0500 >> > >> > @@ -431,7 +431,7 @@ >> > >> > $silk_flow_type =~ s/\s+//g; >> > >> > } >> > >> > >> > >> > - $data_root_dir = $silk_data_directory ."/". $device_name; >> > >> > + $data_root_dir = $silk_data_directory; >> > >> > >> > >> > # Prepare rwfilter start and end time parameters >> > >> > >> > >> > >> > I also found that security/silktools uses UTC by default, but has a >> > configuration option to enable localtime ( >> > https://tools.netsa.cert.org/silk/faq.html#timestamp-mismatch). >> > >> > Here is a patch to the Makefile containing a config option for >> localtime: >> > >> > >> > --- /usr/ports/silktools/Makefile.orig 2014-02-18 09:29:28.000000000 >> -0500 >> > >> > +++ /usr/ports/silktools/Makefile 2014-02-18 09:41:48.000000000 >> -0500 >> > >> > @@ -23,6 +23,11 @@ >> > >> > USES= perl5 >> > >> > USE_PERL5= build >> > >> > >> > +HAS_CONFIGURE= yes >> > >> > +OPTIONS_DEFINE= LOCALTIME >> > >> > +LOCALTIME_DESC= Use localtime instead of UTC >> > >> > + >> > >> > + >> > >> > MAN1= mapsid.1 num2dot.1 rwaddrcount.1 rwappend.1 \ >> > >> > rwbag.1 rwbagbuild.1 rwbagcat.1 rwbagtool.1 \ >> > >> > rwcat.1 rwcount.1 rwcut.1 rwdedupe.1 rwfglob.1 \ >> > >> > @@ -51,6 +56,13 @@ >> > >> > rwsender.8 >> > >> > >> > NO_STAGE= yes >> > >> > + >> > >> > +.include >> > >> > + >> > >> > +.if ${PORT_OPTIONS:MLOCALTIME} >> > >> > +CONFIGURE_ARGS+=--enable-localtime >> > >> > +.endif >> > >> > + >> > >> > post-patch: >> > >> > @${REINPLACE_CMD} -e 's|echo aout|echo elf|' ${WRKSRC}/configure >> > >> > >> > >> > Thanks, >> > >> > >> > Chad >> > >> >> >> >> Here is another patch for net-mgmt/flowview so sensor filtering works. I >> am >> not sure why, but this file is originally trying to use the exporter as >> the >> sensor for SiLK devices. This is interesting since the PDF above indicated >> that the @exporter array was only used for flow-tools, not SiLK but alas >> here it is using it. If anything I think it would make more sense to use >> the "device" as the sensor, especially since @ipfix_devices is already >> defined as a sensor per the documentation. To make matters worse it is >> grepping for the probes and not the sensors in order to populate the >> --sensors= flag. >> >> >> >> --- FlowViewer_Utilities.pm.orig 2014-02-18 12:52:42.000000000 -0500 >> >> +++ FlowViewer_Utilities.pm 2014-02-18 13:50:09.000000000 -0500 >> >> @@ -2339,50 +2339,50 @@ >> >> >> >> # Set up exporter address filtering, if any >> >> >> >> - if ($exporter ne "") { >> >> + if ($device_name ne "") { >> >> >> >> - $exporter =~ s/\s+//g; >> >> - $num_include_probe = 0; >> >> - @valid_probes = (); >> >> + $device_name =~ s/\s+//g; >> >> + $num_include_sensor = 0; >> >> + @valid_sensors = (); >> >> >> >> - # Get valid probes (exporters) from the sensor.conf file >> >> + # Get valid sensors (device_names) from the sensor.conf file >> >> >> >> - $probe_command = "cat $sensor_config_directory/sensor.conf | grep probe >> > >> $work_directory/valid_probes_$suffix"; >> >> - system ($probe_command); >> >> + $sensor_command = "cat $sensor_config_directory/sensor.conf | grep >> sensor >> > $work_directory/valid_sensors_$suffix"; >> >> + system ($sensor_command); >> >> >> >> - open (PROBES,"<$work_directory/valid_probes_$suffix"); >> >> + open (PROBES,"<$work_directory/valid_sensors_$suffix"); >> >> while () { >> >> - ($probe_label,$probe) = split(/\s+/,$_); >> >> - if ($probe_label eq "probe") { push (@valid_probes,$probe); } >> >> + ($sensor_label,$sensor) = split(/\s+/,$_); >> >> + if ($sensor_label eq "sensor") { push (@valid_sensors,$sensor); } >> >> } >> >> >> >> while ($still_more) { >> >> >> >> - ($exporter_name) = split(/,/,$exporter); >> >> - $start_char = length($exporter_name) + 1; >> >> - $exporter = substr($exporter,$start_char); >> >> + ($device_name_name) = split(/,/,$device_name); >> >> + $start_char = length($device_name_name) + 1; >> >> + $device_name = substr($device_name,$start_char); >> >> >> >> - if (substr($exporter_name,0,1) eq "-") { >> >> - &print_error("SiLK software does not support exclusion of Exporters >> (Sensors) at this time: -$exporter_name"); last; >> >> + if (substr($device_name_name,0,1) eq "-") { >> >> + &print_error("SiLK software does not support exclusion of Exporters >> (Sensors) at this time: -$device_name_name"); last; >> >> } else { >> >> - foreach $probe (@valid_probes) { >> >> - if ($exporter_name eq $probe) { >> >> - $num_include_probe++; >> >> - if ($num_include_probe < 2) { >> >> - $sensor_field .= $exporter_name; >> >> + foreach $sensor (@valid_sensors) { >> >> + if ($device_name_name eq $sensor) { >> >> + $num_include_sensor++; >> >> + if ($num_include_sensor < 2) { >> >> + $sensor_field .= $device_name_name; >> >> } else { >> >> - $sensor_field .= "," . $exporter_name; >> >> + $sensor_field .= "," . $device_name_name; >> >> } >> >> } >> >> } >> >> } >> >> >> >> - if ($exporter eq "") { last; } >> >> + if ($device_name eq "") { last; } >> >> } >> >> >> >> $sensor_field = " --sensors=" . $sensor_field; >> >> >> >> - $save_file .= "_" . $exporter_name; >> >> + $save_file .= "_" . $device_name; >> >> } >> >> >> >> # Set up Next Hop IP filtering, if any >> _______________________________________________ >> freebsd-ports@freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-ports >> To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org" >> > > Here are the patches from above as attachments. I also attached a patch for tools/flowtracker_restart (inline at the end as well), which should go in /usr/local/etc/rc.d/, but it is just hacked together at this point to get it to start the collector/grapher tools. It doesn't look like the tools are working yet though since I see some errors in the FlowTracker_Collector.log (see below) and the graphs have a bunch of nans. The first line is most likely because it is missing the --data-rootdir= flag the second time rwfilter is called in the FlowTracker_Collector script, but I am not sure about why the other two errors are occurring. rwfilter: Site configuration file not found rwcount: Error processing headers on file '-': Unexpected end of file while reading header ERROR: /usr/local/www/flowviewer/rrdtools/outweb.rrd: illegal attempt to update using time 1393890300 when last update time is 1393890300 (minimum one second step) PATCH: --- tools/flowtracker_restart.orig 2014-03-02 20:50:32.000000000 -0500 +++ tools/flowtracker_restart 2014-03-02 23:59:39.000000000 -0500 @@ -11,9 +11,9 @@ # can be restarted using the following command: # sudo /etc/init.d/flowtracker_restart restart -FlowViewer=/var/www/cgi-bin/FlowViewer_4.2.1 -user=flowviewer -RRDTOOL_PATH=/usr/bin +FlowViewer=/usr/local/www/flowviewer +user=www +RRDTOOL_PATH=/usr/local/bin RETVAL=0 start() { @@ -21,9 +21,8 @@ for i in FlowTracker_Collector FlowTracker_Grapher; do echo Starting $i: - if ! /bin/su --shell=/bin/sh $user \ - -c "cd $FlowViewer && - nice -20 env PATH=$PATH:$RRDTOOL_PATH ./$i&"; then + if ! /usr/bin/su -m $user \ + -c "cd $FlowViewer && ./$i&"; then echo Problem starting $i >&2 RETVAL=1 fi --001a11c22c70970b9204f3bd0175 Content-Type: application/octet-stream; name="patch-FlowGrapher_Main.cgi" Content-Disposition: attachment; filename="patch-FlowGrapher_Main.cgi" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hscfd1610 LS0tIEZsb3dHcmFwaGVyX01haW4uY2dpLm9yaWcJMjAxNC0wMi0xOCAwODo0OTo0Mi4wMDAwMDAw MDAgLTA1MDAKKysrIEZsb3dHcmFwaGVyX01haW4uY2dpCTIwMTQtMDItMTggMDk6MDk6NTguMDAw MDAwMDAwIC0wNTAwCkBAIC01MzUsNyArNTM1LDcgQEAKIAkJJHNpbGtfZmxvd190eXBlID1+IHMv XHMrLy9nOwogCX0KIAotCSRkYXRhX3Jvb3RfZGlyID0gJHNpbGtfZGF0YV9kaXJlY3RvcnkgLiIv Ii4gJGRldmljZV9uYW1lOworCSRkYXRhX3Jvb3RfZGlyID0gJHNpbGtfZGF0YV9kaXJlY3Rvcnk7 CiAKIAkjIFByZXBhcmUgcndmaWx0ZXIgc3RhcnQgYW5kIGVuZCB0aW1lIHBhcmFtZXRlcnMsIGZp bHRlciBjcml0ZXJpYSBhbmQgd2luZG93IHR5cGUKIAo= --001a11c22c70970b9204f3bd0175 Content-Type: application/octet-stream; name=patch-FlowTracker_Collector Content-Disposition: attachment; filename=patch-FlowTracker_Collector Content-Transfer-Encoding: base64 X-Attachment-Id: f_hscfd16z1 LS0tIEZsb3dUcmFja2VyX0NvbGxlY3Rvci5vcmlnCTIwMTQtMDItMTggMDg6NDg6NTQuMDAwMDAw MDAwIC0wNTAwCisrKyBGbG93VHJhY2tlcl9Db2xsZWN0b3IJMjAxNC0wMi0xOCAwOTowOTo1OC4w MDAwMDAwMDAgLTA1MDAKQEAgLTMwMyw3ICszMDMsNyBAQAogCiAJCQkjIFNldCB1cCBzaWxrIGRh dGEgc291cmNlcwogCi0JCSAgICAgICAgJGRhdGFfcm9vdF9kaXIgPSAkc2lsa19kYXRhX2RpcmVj dG9yeSAuIi8iLiAkZGV2aWNlX25hbWU7CisJCSAgICAgICAgJGRhdGFfcm9vdF9kaXIgPSAkc2ls a19kYXRhX2RpcmVjdG9yeTsKIAkJCiAJCQkkc2lsa19mbG93X3R5cGUgPSAiIjsKIAo= --001a11c22c70970b9204f3bd0175 Content-Type: application/octet-stream; name=patch-FlowTracker_Recreate Content-Disposition: attachment; filename=patch-FlowTracker_Recreate Content-Transfer-Encoding: base64 X-Attachment-Id: f_hscfd1782 LS0tIEZsb3dUcmFja2VyX1JlY3JlYXRlLm9yaWcJMjAxNC0wMi0xNiAxNTo1MDozNS4wMDAwMDAw MDAgLTA1MDAKKysrIEZsb3dUcmFja2VyX1JlY3JlYXRlCTIwMTQtMDItMTggMDk6MDk6NTguMDAw MDAwMDAwIC0wNTAwCkBAIC0yNDUsNyArMjQ1LDcgQEAKIAkJCSRjYXRfc3RhcnQgPSBlcG9jaF90 b19kYXRlKCRjYXRfc3RhcnRfZXBvY2gsIkxPQ0FMIik7CiAJCQkkY2F0X2VuZCAgID0gZXBvY2hf dG9fZGF0ZSgkY2F0X2VuZF9lcG9jaCwiTE9DQUwiKTsKIAotCQkgICAgICAgICRkYXRhX3Jvb3Rf ZGlyID0gJHNpbGtfZGF0YV9kaXJlY3RvcnkgLiIvIi4gJGRldmljZV9uYW1lOworCQkgICAgICAg ICRkYXRhX3Jvb3RfZGlyID0gJHNpbGtfZGF0YV9kaXJlY3Rvcnk7CiAJCQogCQkgICAgICAgICRz aWxrX2Zsb3dfdHlwZSA9ICIiOwogCg== --001a11c22c70970b9204f3bd0175 Content-Type: application/octet-stream; name="patch-FlowViewer_Main.cgi" Content-Disposition: attachment; filename="patch-FlowViewer_Main.cgi" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hscfd17e3 LS0tIEZsb3dWaWV3ZXJfTWFpbi5jZ2kub3JpZwkyMDE0LTAyLTE4IDA4OjUyOjMwLjAwMDAwMDAw MCAtMDUwMAorKysgRmxvd1ZpZXdlcl9NYWluLmNnaQkyMDE0LTAyLTE4IDA5OjA5OjU4LjAwMDAw MDAwMCAtMDUwMApAQCAtNDMxLDcgKzQzMSw3IEBACiAgICAgICAgICAgICAgICAgJHNpbGtfZmxv d190eXBlID1+IHMvXHMrLy9nOwogICAgICAgICB9CiAKLSAgICAgICAgJGRhdGFfcm9vdF9kaXIg PSAkc2lsa19kYXRhX2RpcmVjdG9yeSAuIi8iLiAkZGV2aWNlX25hbWU7CisgICAgICAgICRkYXRh X3Jvb3RfZGlyID0gJHNpbGtfZGF0YV9kaXJlY3Rvcnk7CiAKICAgICAgICAgIyBQcmVwYXJlIHJ3 ZmlsdGVyIHN0YXJ0IGFuZCBlbmQgdGltZSBwYXJhbWV0ZXJzCiAK --001a11c22c70970b9204f3bd0175 Content-Type: application/octet-stream; name=patch-silktools-Makefile Content-Disposition: attachment; filename=patch-silktools-Makefile Content-Transfer-Encoding: base64 X-Attachment-Id: f_hscfdokq5 LS0tIE1ha2VmaWxlLm9yaWcJMjAxNC0wMi0xOCAwOToyOToyOC4wMDAwMDAwMDAgLTA1MDAKKysr IE1ha2VmaWxlCTIwMTQtMDItMTggMDk6NDE6NDguMDAwMDAwMDAwIC0wNTAwCkBAIC0yMyw2ICsy MywxMSBAQAogVVNFUz0JCXBlcmw1CiBVU0VfUEVSTDU9CWJ1aWxkCiAKK0hBU19DT05GSUdVUkU9 CXllcworT1BUSU9OU19ERUZJTkU9IExPQ0FMVElNRQorTE9DQUxUSU1FX0RFU0M9IFVzZSBsb2Nh bHRpbWUgaW5zdGVhZCBvZiBVVEMKKworCiBNQU4xPQltYXBzaWQuMSBudW0yZG90LjEgcndhZGRy Y291bnQuMSByd2FwcGVuZC4xIFwKIAlyd2JhZy4xIHJ3YmFnYnVpbGQuMSByd2JhZ2NhdC4xIHJ3 YmFndG9vbC4xIFwKIAlyd2NhdC4xIHJ3Y291bnQuMSByd2N1dC4xIHJ3ZGVkdXBlLjEgcndmZ2xv Yi4xIFwKQEAgLTUxLDYgKzU2LDEzIEBACiAJCXJ3c2VuZGVyLjgKIAogTk9fU1RBR0U9CXllcwor CisuaW5jbHVkZSA8YnNkLnBvcnQub3B0aW9ucy5taz4KKworLmlmICR7UE9SVF9PUFRJT05TOk1M T0NBTFRJTUV9CitDT05GSUdVUkVfQVJHUys9LS1lbmFibGUtbG9jYWx0aW1lCisuZW5kaWYKKwog cG9zdC1wYXRjaDoKIAlAJHtSRUlOUExBQ0VfQ01EfSAtZSAnc3xlY2hvIGFvdXR8ZWNobyBlbGZ8 JyAke1dSS1NSQ30vY29uZmlndXJlCiAK --001a11c22c70970b9204f3bd0175 Content-Type: application/octet-stream; name=patch-flowtracker_restart Content-Disposition: attachment; filename=patch-flowtracker_restart Content-Transfer-Encoding: base64 X-Attachment-Id: f_hscfsze16 LS0tIHRvb2xzL2Zsb3d0cmFja2VyX3Jlc3RhcnQub3JpZwkyMDE0LTAzLTAyIDIwOjUwOjMyLjAw MDAwMDAwMCAtMDUwMAorKysgdG9vbHMvZmxvd3RyYWNrZXJfcmVzdGFydAkyMDE0LTAzLTAyIDIz OjU5OjM5LjAwMDAwMDAwMCAtMDUwMApAQCAtMTEsOSArMTEsOSBAQAogIyBjYW4gYmUgcmVzdGFy dGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKICMgc3VkbyAvZXRjL2luaXQuZC9mbG93 dHJhY2tlcl9yZXN0YXJ0IHJlc3RhcnQKIAotRmxvd1ZpZXdlcj0vdmFyL3d3dy9jZ2ktYmluL0Zs b3dWaWV3ZXJfNC4yLjEKLXVzZXI9Zmxvd3ZpZXdlcgotUlJEVE9PTF9QQVRIPS91c3IvYmluCitG bG93Vmlld2VyPS91c3IvbG9jYWwvd3d3L2Zsb3d2aWV3ZXIKK3VzZXI9d3d3CitSUkRUT09MX1BB VEg9L3Vzci9sb2NhbC9iaW4KIFJFVFZBTD0wCiAKIHN0YXJ0KCkgewpAQCAtMjEsOSArMjEsOCBA QAogCiAgICAgZm9yIGkgaW4gRmxvd1RyYWNrZXJfQ29sbGVjdG9yIEZsb3dUcmFja2VyX0dyYXBo ZXI7IGRvCiAgICAgICAgIGVjaG8gU3RhcnRpbmcgJGk6Ci0gICAgICAgIGlmICEgL2Jpbi9zdSAt LXNoZWxsPS9iaW4vc2ggJHVzZXIgXAotICAgICAgICAgICAgICAgIC1jICJjZCAkRmxvd1ZpZXdl ciAmJgotICAgICAgICAgICAgICAgIG5pY2UgLTIwIGVudiBQQVRIPSRQQVRIOiRSUkRUT09MX1BB VEggLi8kaSYiOyB0aGVuCisgICAgICAgIGlmICEgL3Vzci9iaW4vc3UgLW0gJHVzZXIgXAorICAg ICAgICAgICAgICAgIC1jICJjZCAkRmxvd1ZpZXdlciAmJiAuLyRpJiI7IHRoZW4KICAgICAgICAg ICAgICAgICAgICAgICAgIGVjaG8gUHJvYmxlbSBzdGFydGluZyAkaSA+JjIKICAgICAgICAgICAg ICAgICAgICAgICAgIFJFVFZBTD0xCiAgICAgICAgIGZpCg== --001a11c22c70970b9204f3bd0175--