[6357] in Perl-Users-Digest
Perl-Users Digest, Issue: 979 Volume: 7
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Thu Feb 20 09:21:45 1997
Date: Thu, 20 Feb 97 06:00:26 -0800
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Thu, 20 Feb 1997 Volume: 7 Number: 979
Today's topics:
Camel eats my bits (with contest) (Jari =?ISO-8859-1?Q?M=E4kel=E4?=)
Re: Class library to make C++ more Perlish? (Ollivier Robert)
Re: Class library to make C++ more Perlish? (Ollivier Robert)
Re: efficiency of many fixed strings vs one regex <vibes@hipdrome.org>
Re: flock(2) Question <gsievers@gsievers.xnet.com>
Making sure 'perl -v' works <skbohler@ix.netcom.com>
newbie: To get me started... <danielp@tma.co.za>
Re: newbie: To get me started... (Hans Schrader)
NT and perl Try using Sendmail <stemo@powersim.no>
NT and perl <igandham@prestel.net>
Re: perl script bug (I R A Aggie)
Re: Problems with -l (Tom Grydeland)
Re: Q: Adding method to external class <seay@absyss.fr>
REMOTE DEBUGGER was Re: debugging perl & html <Brian.Ewins@gssec.bt.co.uk>
Scoping problem using my() [kinda long] (Doug Alcorn)
Re: Sourcing files from my perl script (A. Deckers)
Digest Administrivia (Last modified: 8 Jan 97) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 20 Feb 1997 15:52:00 +0200
From: jari@iki.fi (Jari =?ISO-8859-1?Q?M=E4kel=E4?=)
Subject: Camel eats my bits (with contest)
Message-Id: <lclo8j37r3.fsf@ns2.avantcomp.fi>
I was comfortably reading the Blue Camel on a bus on my way to work
when I reached the end of page 75. What I saw was devastating and
inhumane if not against the Paris Peace Treaty. There was this
example:
tr[\200-\377]
[\000-\177]; # delete 8th bit
I know the people over the pond seem to have a strange hobby of eating
the 8th bit but I thought the Camel people are not contaminated by
this disease.
Just to demonstrate the trouble this kind of example creates I would
like to announce
The Zeroeth Milleniumial Undelete The 8th Bit Perl Contest
The rules are the following:
1. The aim of the competition is to make a Perl program that scans its
input and sets all the 8th bits that have previously reseted by the
likes of that devilish tr-operator above and then prints the corrected
data to its output.
For instance if the input was my surname 8th bit stripped "Mdkeld" the
program should output "Mdkeld" but if the input was "A friend in need
is a friend in deed" the output should not be "A friend in need is a
firend in deed" nor should it be "A friend in need is a friend in
deed" but it should be "A friend in need is a friend in deed".
Of cource You cannot understand this example if Your newsreader is 8th
bit impaired.
2. The entries should be posted to this newsgroup before the contest
ends. The contest ends when someone posts the correct solution to this
problem or when this newsgroup gets bored of this thread which might
be sooner than I get to post this article.
3. The Jury is the world and the prize is the eternal happines one
gets from returning all the missng eight bits.
4. There is no rule number four.
Jari Mdkeld
--
Life is such and it gets sucher and sucher.
-- Pertti Salolainen
------------------------------
Date: 20 Feb 1997 13:20:19 GMT
From: roberto@eurocontrol.fr (Ollivier Robert)
Subject: Re: Class library to make C++ more Perlish?
Message-Id: <5ehj2j$f5d$2@polaris.eurocontrol.fr>
[courtesy cc of this posting sent to cited author via email]
In article <5edf82$nje@sparky.learnix.ca>, Alan Ezust <ezust@learnix.ca> wrote:
> Scalars are just strings. Use standard string class.
How do you store references in strings (as you call them) ?
A scalar is a scalar. All strings are scalars but not all scalars are
strings...
--
Ollivier ROBERT -=- Eurocontrol EEC/TS -=- Ollivier.Robert@eurocontrol.fr
Usenet Canal Historique
------------------------------
Date: 20 Feb 1997 13:19:13 GMT
From: roberto@eurocontrol.fr (Ollivier Robert)
Subject: Re: Class library to make C++ more Perlish?
Message-Id: <5ehj0h$f5d$1@polaris.eurocontrol.fr>
[courtesy cc of this posting sent to cited author via email]
In article <01bc1e36$64c06950$0ef03a9e@transmogrifier>,
Charlton Barreto <charltoN@illustra.com> wrote:
> <matrix> template classes which are far superior to the built-in Perl
> or C-type arrays. Regex pattern matching is available in the standard
> libraries of most post-April-1995-DWP C++ compilers. Perl scalars
> are strings, so you can just use C++ string classes.
Tom has already answered these.
> Then make sure you're not using Perl 'functionality' that forces shell
> invocation of Perl. For example, some of the sed/regex functionality in
> Perl can only be used via calling Perl through the operating shell and
> passing it the appropriate argv-s.
Come on. The only feature that require OS support is the globbing like
<*.c>. That's all. All the regex features are built-in.
> These calls make file open, read and related system calls to UNIX, and
> all such file access goes through the UNIX filesystem (unless you're one
> of those real shredders who uses rdsk space). All of this is far less
> efficient than going through built-in functionality (where it exists) in
> Perl; this is analogous to using system calls (bad, bad, bad!) versus
> library calls in C/C++.
ROTFL. And what do you supposed your library routines in C/C++ ? When you
do I/O for example ? They called read(2)/write(2)/lseek(2). Wait, there are
system calls, aren't they ?
Please don't try to confuse the issue.
> You can implement _more_ in Perl than what you can in sh, ksh, or
> csh so take advantage of it.
Right.
PS: please cut down your sig . to 4 lines, no one care about Geek code or
such or fancy boxes. Thanks,
--
Ollivier ROBERT -=- Eurocontrol EEC/TS -=- Ollivier.Robert@eurocontrol.fr
Usenet Canal Historique
------------------------------
Date: Thu, 20 Feb 1997 12:35:13 -0100
From: Jorn-Morten Innselset <vibes@hipdrome.org>
Subject: Re: efficiency of many fixed strings vs one regex
Message-Id: <330C5311.3195@hipdrome.org>
Rahul Dhesi wrote:
> For example:
>
> /\@somedomain\.com/ && &found;
> /\@anotherdomain\.com/ && &found;
> /\@yetanother\.com/ && &found;
> /\@fourthdomain\.com/ && &found;
>
> Is it better if I combine them into the following?
>
> /\@(somedomain|anotherdomain|yetanother|fourthdomain)\.com/ && &found;
If my memory serves me right the 2nd Camel mentions something about reg
exp performance. As far as I recall your last alternative was listed as
the least efficient way to do "it".
--
Jxrn-Morten Innselset vibes@hipdrome.org
http://www.bs.bi.no/~jinnsels webmaster@lfk.mil.no
------------------------------
Date: 20 Feb 1997 07:47:37 -0600
From: Jerry Sievers <gsievers@gsievers.xnet.com>
Subject: Re: flock(2) Question
Message-Id: <x7d8tv4miu.fsf@gsievers.xnet.com>
Tom Phoenix <rootbeer@teleport.com> writes:
>
> On Wed, 19 Feb 1997, John Boekhout wrote:
>
> > open(HANDLE,$path);
> > if (!flock(HANDLE,2) { #get exclusive lock
> > &error("couldn't get lock");
> > }
>
> > (I'm very certain that open file call was successful.)
>
> I'm not so certain as you are. :-) Even if you're sure it worked, you
> should always check for error returns from open before you post to the
> newsgroup, if not sooner.
good point.
> (Also, I believe that most systems only let you
> lock a file which you have open for output, since there's not much point
> in locking if you can't change the file.) Hope this helps!
i dont agree. there are times when you want to prevent another process
from writing a file that you have open for reading. this guarantees that
the file contenst are consistent until the lock is released.
--
@------------------------------------------------------------------@
| Jerry Sievers Unix Admin/Web Site Architect |
| 312 527-0618 (home) mailto:gsievers@xnet.com |
| 847 267-3594 (work) http://www.xnet.com/~gsievers |
@------------------------------------------------------------------@
------------------------------
Date: 20 Feb 1997 11:23:43 GMT
From: "Stephen K. Bohler" <skbohler@ix.netcom.com>
Subject: Making sure 'perl -v' works
Message-Id: <01bc1f20$60ae9540$7ce42ac2@steve>
I've just tried to determine the version of Perl running on my client's
server and it tells me that it is version 4. However, they have the
/usr/local/lib/perl5 libraries on it.
I told them they don't have the current version of the Perl interpreter, so
they told me to try an ISP server they are borrowing as well. Again, the
same results.
Before I tell them they've got to get the latest and greatest Perl
interpreter, I want to make sure that 'perl -v' is being accurate. I don't
understand how they have the proper libraries, but have an out-of-date
interpreter.
Can anyone explain this discrepancy?
Thanks so much in advance.
-------------------
Stephen Bohler
Oxford
United Kingdom
------------------------------
Date: 20 Feb 1997 13:24:54 GMT
From: "Daniel Pepermans" <danielp@tma.co.za>
Subject: newbie: To get me started...
Message-Id: <01bc1f31$af5ce2d0$f8381bc4@dmp>
If someone can show me what is required to print "Hello world!" on the
screen, I can figure the rest out for myself.
I have Perl5 installed on my NT4.0 workstation
I need to know what to type at the command prompt to get "hello world" to
print. i.e. is it PERL PRINT "HELLO WORLD" - understand my situation?
Also what to pass to perl when I want it to run commands from a script file
- something.pl.
Thanks for anyone patient enough to deal with my serious newbie squeaks.
Please cc me danielp@tma.co.za.
------------------------------
Date: Thu, 20 Feb 97 13:41:02 GMT
From: hans.schrader@geol.uib.no (Hans Schrader)
Subject: Re: newbie: To get me started...
Message-Id: <5ehkrm$q54$1@toralf.uib.no>
In article <01bc1f31$af5ce2d0$f8381bc4@dmp>, "Daniel Pepermans" <danielp@tma.co.za> wrote:
Check out our Perl pages- they do have exactly what you need!
URL="http://hjs.geol.uib.no/Perl/index.htm"
>If someone can show me what is required to print "Hello world!" on the
>screen, I can figure the rest out for myself.
>
>I have Perl5 installed on my NT4.0 workstation
>
>I need to know what to type at the command prompt to get "hello world" to
>print. i.e. is it PERL PRINT "HELLO WORLD" - understand my situation?
>
>Also what to pass to perl when I want it to run commands from a script file
>- something.pl.
>
>Thanks for anyone patient enough to deal with my serious newbie squeaks.
>
>Please cc me danielp@tma.co.za.
Hans Schrader-Eureka's SySop:
"nglhs@alf.uib.no"--"http://hjs.geol.uib.no/"
------------------------------
Date: Thu, 20 Feb 1997 13:58:58 +0100
From: Steinar Moen <stemo@powersim.no>
Subject: NT and perl Try using Sendmail
Message-Id: <330C4A92.73FC@powersim.no>
Iqbal Gandham wrote:
>
> Hi
>
> I am not very familiar with NT server, but can write effectively in perl
> Now I have asimple mailing scripts which works perfectly on a apache
> server. How can I adopt this so that it will run on a NT server.
>
> In unix I can just use th Mail command, is there something similar in NT
>
> Thanks
>
> Iqbal
> igandham@prestel.net
Check out the sendmail program for NT at http://www.metainfo.com
There is also a program called Blat, I've heard should be possible to
use.
Kind Regards, Steinar Moen, Powersim AS, Norway
http://www.powersim.no
------------------------------
Date: Thu, 20 Feb 1997 11:10:05 +0000
From: Iqbal Gandham <igandham@prestel.net>
Subject: NT and perl
Message-Id: <330C310D.595F@prestel.net>
Hi
I am not very familiar with NT server, but can write effectively in perl
Now I have asimple mailing scripts which works perfectly on a apache
server. How can I adopt this so that it will run on a NT server.
In unix I can just use th Mail command, is there something similar in NT
Thanks
Iqbal
igandham@prestel.net
------------------------------
Date: Sat, 15 Feb 1997 15:07:17 -0500
From: fl_aggie@hotmail.com (I R A Aggie)
Subject: Re: perl script bug
Message-Id: <fl_aggie-ya02408000R1502971507170001@news.fsu.edu>
In article <5e2pgp$9pd$1@csnews.cs.colorado.edu>, tchrist@mox.perl.com (Tom
Christiansen) wrote:
+ Just what particular part of
+
+ Literal @thepoint now requires backslash
+
+ don't you understand? JUST PUT IN THE BACKSLASH ***AS IT
+ CLEARLY TELLS YOU*** AND ALL WILL BE WELL.
Is it really clear? apparently not. Why not change the warning to
something like:
Literal @thepoint must be written as \@thepoint
Just a suggestion...
James - not a linguist... :)
--
Consulting Minster for Consultants, DNRC
To cure your perl CGI problems, please look at:
<url:http://www.perl.com/perl/faq/idiots-guide.html>
------------------------------
Date: 20 Feb 1997 13:29:18 GMT
From: tom@palver.nospam.eiscat.no (Tom Grydeland)
Subject: Re: Problems with -l
Message-Id: <TOM.97Feb20142918@palver.nospam.eiscat.no>
In article <5efdj1$le7@netline-fddi.jpl.nasa.gov> pjscott@euclid.jpl.nasa.gov (Peter Scott) writes:
> In article <slrn5gl0r5.fo3.dave@fast.thomases.com>, dave@fast.thomases.com (Dave Thomas) writes:
> > On 18 Feb 1997 19:27:37 GMT, Peter Scott <pjscott@euclid.jpl.nasa.gov> wrote:
> > > I'm confused. Maybe I don't understand the ramifications of -l.
> > > Running the following script:
> > >
> > > #!/usr/local/bin/perl -wnl
> > > if (/,/) {
> > > print "foo";
> > > } else {
> > > print "bar";
> > > }
> > >
> > > produces:
> > >
> > > euclid% echo "cat,dog" | /tmp/foo
> > > bar,bar,euclid%
> >
> > > Under debugger
> > > foo
On my machine, it's even stranger:
% cat foo
#!/usr/local/bin/perl -wnl
if (/,/) {
print "foo";
} else {
print "bar";
}
% echo cat,dog| foo
bar,bar,% echo cat,dog| perl foo
foo
% echo cat,dog| perl -wln foo
bar,bar,%
> No, but I have discovered something else. If I run it under the
> debugger by putting "d" at the end of the #! line and executing the
> resulting script with the "echo" pipeline above, then it still prints
> out "bar,bar,"; it goes around the loop twice and sees $_ as first "cat,"
> then "dog\n,".
I get "foo\n" as output in all cases when running under the debugger
(i.e. 'echo cat,dog | [perl [-wln[d]]] foo' all produce foo, whether
or not the #! line contains -d) The only thing that works outside the
debugger is
echo cat,dog | perl foo
where foo is as above.
> Either this is a bug, or I really have no clue what I'm doing.
> It looks as though somehow it's getting "," as the record separator...
That's what it looks like. I'd call it a bug.
> brain on news. Any questions? | (Peter.J.Scott@jpl.nasa.gov)
//tom
------------------------------
Date: Thu, 20 Feb 1997 12:07:00 +0000
From: Douglas Seay <seay@absyss.fr>
To: kevinz@cwe.com
Subject: Re: Q: Adding method to external class
Message-Id: <330C3E64.1E06@absyss.fr>
Kevin Zwack wrote:
>
> I've reread chapter 5 and still and figure out if/how I can do this.
> I want to implement an additional method (as opposed to overriding) an
> existing class/module.
>
> For example:
>
> #!/usr/local/perl
> use Stuff;
> my $thing = Stuff->new(); # New is already implemented in Stuff
> $thing->foo; # Foo is my own method
> exit;
> sub foo {
> ...
> };
> __END__
>
> How can I make foo a method of Stuff? (Without changing Stuff.pm?)
I've never tried this, but since "Stuff" is just a namespace,
something like
package Stuff;
sub new_method { 1; }
sub foo { $_[0]->bar(); }
package main;
should work, because you're just adding new functions to
the Stuff namespace. But you would have to insert this
each time you wanted to use the modified Stuff library.
If you did this more than once, you would create
MyStuff.pm to do this for you. Then you might as well
just have MyStuff derive from Stuff and add your method
in the MyStuff class.
doug seay
seay@absyss.fr
------------------------------
Date: Thu, 20 Feb 1997 12:52:48 +0000
From: Brian Ewins <Brian.Ewins@gssec.bt.co.uk>
Subject: REMOTE DEBUGGER was Re: debugging perl & html
Message-Id: <330C4920.47C0@gssec.bt.co.uk>
This is a multi-part message in MIME format.
--------------319A5C1115F7
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Larry Glenn wrote:
>
> Here's my approach to the same problem:
>
> packge WebDebug;
>
> # uid that the http server is running as
> my $www = 1132;
>
> BEGIN {
> if($< == $www) {
> $::SIG{'__DIE__'} = sub { print "<H2>FATAL
> ERROR:</H2>\n$_[0]\n"; die; };
> $::SIG{'__WARN__'} = sub {
> push(@WebDebug::ERRORS,$_[0]); };
> }
> }
>
> END {
> $" = "<LI>\n";
> @WebDebug::ERRORS && print qq|\n<H2>Non-Fatal
> Errors:</H2>\n<OL>\n<LI>@WebDebug::ERRORS\n<\OL>|;
> }
>
> 1;
This won't work if your server hasn't emitted a content-type
header yet (at least with Apache: you'll get a server misconfiguration
error, which is why my script did that) also if the perl gets
compilation errors due to lazy developers you will get the same
(which is why I used eval instead of trapping __DIE__)
I thought a bit more about my last post and realized what was needed
was a remote debugger. I hacked one together at home (Win95) & it
works fine on the command line but here (in a firewalled-up network
with a webserver, all Solaris) the client can't connect. The code
follows anyway in case anyone wants to try it out.
to use it, change the first couple of lines of your test script to:
#!/usr/local/bin/perl -d
BEGIN {"serverdb.pl"}
(or something like that). Run the script first and then start up the
client with:
perl clientdb.pl <server IP address>
The serverdb.pl is basically the normal debugger, but if
$ENV{'REMOTE_ADDR'} is set, as in CGI, the server will connect
DB::IN and DB::OUT to socket streams instead.
The client is almost yer bog standard chat doofer.
An interesting variation on this theme might be to set up both
debug sockets as server sockets (at the moment each has one server
and one client socket). This would allow the debugging to be done
through a java Applet (which can only do client sockets), and would
probably work through proxies (the current implementation wont).
That is, if it worked at all. Someone who actually knows what
he's talking about would be useful at this point (I never mess with
sockets much...it shows in the code)
Cheers,
Brian
--------------319A5C1115F7
Content-Type: application/x-perl; name="clientdb.pl"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="clientdb.pl"
IyAtKi1wZXJsLSotDQojIGNsaWVudGRiLnBsIDogcmVtb3RlIHBlcmwgZGVidWdnZXIgY2xp
ZW50DQojIFdBUk5JTkc6IFRISVMgQUxMT1dTIENPTk5FQ1RJT04gRlJPTSBBIFJFTU9URQ0K
IyBNQUNISU5FLiBVU0UgQVQgWU9VUiBPV04gUklTSy4NCiMgQ29weXJpZ2h0IDE5OTcgQnJp
YW4gRXdpbnMNCiMgRmVlbCBmcmVlIHRvIHVzZSBhbmQgbW9kaWZ5IHRoaXMgY29kZSBpbiBh
bnkgd2F5LA0KIyBpdCBpcyBwcm92aWRlZCBwdXJlbHkgYXMgYW4gZXhhbXBsZS4NCg0KJGFk
ZHI9JF9bMF18fCcxMjcuMC4wLjEnOw0KI2NsaWVudA0KI0knbSBhc3N1bWluZyB0aGUgZGVi
dWcgc2VydmVyIGhhcyBzdGFydGVkIGFscmVhZHkuDQooDQogICAgICAgICN0aGUgY29kZSBo
ZXJlIGlzIGhhaXJ5IGJ1dCBJJ20gd3JpdGluZw0KICAgICAgICAjaXQgb24gYSBtYWNoaW5l
IHdpdGhvdXQgU29ja2V0LnBtDQoJIyBPbiBTb2xhcmlzIDIuNS4xLCBTT0NLX1NUUkVBTSBp
cyAyLCBvbiBXaW5kb3dzIGl0cyAxCiAgICAgICAgc29ja2V0KE9VVCwgMiwgMiwgKGdldHBy
b3RvYnluYW1lKCd0Y3AnKSlbMl0pDQoJJiYgYmluZChPVVQsIHBhY2soJ1MgbiBhNCB4OCcs
IDIsIDAsIA0KICAgICAgICAgICAgICAgIChnZXRob3N0YnluYW1lKCdsb2NhbGhvc3QnKSlb
NF0pKQ0KICAgICAgICAmJiBjb25uZWN0KE9VVCxwYWNrKCdTIG4gYTQgeDgnLCAyLCA5OTky
LA0KICAgICAgICAgICAgICAgIHBhY2soJ0M0Jywoc3BsaXQoJ1wuJywkYWRkcikpKSkpDQop
fHwgZGllICQhOw0Kc2VsZWN0KE9VVCk7ICR8ID0gMTsgc2VsZWN0KFNURE9VVCk7DQoNCiNz
ZXJ2ZXINCnNlbGVjdChTRVJWRVJTT0NLRVQpOyAkfCA9IDE7IHNlbGVjdChTVERPVVQpOw0K
c29ja2V0KFNFUlZFUlNPQ0tFVCwgMiwgMiwgKGdldHByb3RvYnluYW1lKCd0Y3AnKSlbMl0p
IA0KJiYgYmluZChTRVJWRVJTT0NLRVQscGFjaygnUyBuIGE0IHg4JywgMiwgOTk5MSwgIlww
XDBcMFwwIikpIA0KJiYgbGlzdGVuKFNFUlZFUlNPQ0tFVCw1KSB8fCBkaWUgIiQhIjsNCnNl
bGVjdChJTik7ICR8ID0gMTsgc2VsZWN0KFNURE9VVCk7DQooJGFkZHIgPSBhY2NlcHQoSU4s
U0VSVkVSU09DS0VUKSkgfHwgZGllICQhOw0KDQojbm90IHRoZSB1c3VhbCBiZWhhdmlvdXIg
b2YgXkMgYnV0IGNvbnZlbmllbnQuLi4NCiRTSUd7J0lOVCd9PXN1YiB7DQogICAgICAgICNr
aWxsIHRoZSBzZXJ2ZXINCiAgICAgICAgcHJpbnQgT1VUICJxXG4iOw0KCWNsb3NlIE9VVDsN
CglwcmludCAiVGVybWluYXRlZC5cbiI7DQoJY2xvc2UgSU47DQoJZXhpdCgwKTsNCn07DQoN
CndoaWxlKDEpDQp7DQoJI3JlYWQgZnJvbSBzZXJ2ZXIgdW50aWwgZmxhZ2dlZCB0byBzdG9w
DQogICAgICAgIHdoaWxlKCgkXz08SU4+KSF+cy9ERUJVRyBTRVJWRVIgTElTVEVOSU5HXG4v
LykNCgl7DQoJCXByaW50Ow0KCX0NCiAgICAgICAgI3Nob3cgdGhlIHByb21wdA0KICAgICAg
ICBwcmludDsNCgkjc2VuZCBhIGxpbmUgYmFjay4NCgkkXz08U1RESU4+Ow0KCXByaW50IE9V
VCAkXzsNCn0NCg==
--------------319A5C1115F7
Content-Type: application/x-perl; name="serverdb.pl"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="serverdb.pl"
cGFja2FnZSBEQjsNCg0KIyBtb2RpZmllZCBQZXJsIGRlYnVnZ2VyLCB0byBiZSBydW4gZnJv
bSBFbWFjcyBpbiBwZXJsZGItbW9kZQ0KIyBSYXkgTGlzY2huZXIgKHV1bmV0IW1udGdmeCFs
aXNjaCkgYXMgb2YgNSBOb3YgMTk5MA0KIyBKb2hhbiBWcm9tYW5zIC0tIHVwZ3JhZGUgdG8g
NC4wIHBsIDEwDQojIEJyaWFuIEV3aW5zIC0tIHVwZ3JhZGUgKD8pIHRvIGFsbG93IHJlbW90
ZSBkZWJ1Z2dpbmcuDQoNCiRoZWFkZXIgPSAnJFJDU2ZpbGU6IHBlcmw1ZGIucGwsdiAkJFJl
dmlzaW9uOiA0LjEgJCREYXRlOiA5Mi8wOC8wNyAxODoyNDowNyAkJzsNCiMNCiMgVGhpcyBm
aWxlIGlzIGF1dG9tYXRpY2FsbHkgaW5jbHVkZWQgaWYgeW91IGRvIHBlcmwgLWQuDQojIEl0
J3MgcHJvYmFibHkgbm90IHVzZWZ1bCB0byBpbmNsdWRlIHRoaXMgeW91cnNlbGYuDQojDQoj
IFBlcmwgc3VwcGxpZXMgdGhlIHZhbHVlcyBmb3IgQGxpbmUgYW5kICVzdWIuICBJdCBlZmZl
Y3RpdmVseSBpbnNlcnRzDQojIGEgJkRCJ0RCKDxsaW5lbnVtPik7IGluIGZyb250IG9mIGV2
ZXJ5IHBsYWNlIHRoYXQgY2FuDQojIGhhdmUgYSBicmVha3BvaW50LiAgSXQgYWxzbyBpbnNl
cnRzIGEgZG8gJ3BlcmxkYi5wbCcgYmVmb3JlIHRoZSBmaXJzdCBsaW5lLg0KIw0KIyAkTG9n
OglwZXJsZGIucGwsdiAkDQoNCnJlcXVpcmUgQ29uZmlnOw0KDQpsb2NhbCgkXlcpID0gMDsN
Cg0KaWYgKC1lICIvZGV2L3R0eSIpIHsNCiAgICAkY29uc29sZSA9ICIvZGV2L3R0eSI7DQog
ICAgJHJjZmlsZT0iLnBlcmxkYiI7DQp9DQplbHNpZiAoLWUgImNvbiIgfHwgKCAkQ29uZmln
OjpDb25maWd7b3NuYW1lfSBlcSAnTVNXaW4zMicgKSApIHsNCiAgICAkY29uc29sZSA9ICJj
b24iOw0KICAgICRyY2ZpbGU9InBlcmxkYi5pbmkiOw0KfSANCmVsc2Ugew0KICAgICRjb25z
b2xlID0gInN5c1wkY29tbWFuZCI7DQogICAgJHJjZmlsZT0icGVybGRiLmluaSI7DQp9DQpp
ZiAoJEVOVnsnUkVNT1RFX0FERFInfSkNCnsNCiAgICAgICAgI3RoZSBjb2RlIGhlcmUgdXNl
cyBudW1iZXJzIGZvciB0aGUgY29uc3RhbnRzLg0KICAgICAgICAjSSBhbSBhIGRpcnR5IGJp
cmR5LiBJIHByb21pc2Ugbm90IHRvIGRvIGl0IGFnYWluLg0KICAgICAgICAjTXkgZXhjdXNl
IGlzIEkgZG9uJ3QgaGF2ZSBTb2NrZXQucG0gYXJvdW5kLiANCgkjc2VydmVyDQoJc2VsZWN0
KElOKTsgJHwgPSAxOyBzZWxlY3QoU1RET1VUKTsNCgkjU09DS19TVFJFQU0gaXMgMiBvbiBT
b2xhcmlzIDIuNS4xLCAxIG9uIFdpbmRvd3MKCShzb2NrZXQoU0VSVkVSU09DS0VULCAyLCAy
LCAoZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpKVsyXSkgDQoJJiYgYmluZChTRVJWRVJTT0NLRVQs
cGFjaygnUyBuIGE0IHg4JywgMiwgOTk5MiwgIlwwXDBcMFwwIikpIA0KCSYmIGxpc3RlbihT
RVJWRVJTT0NLRVQsNSkpIHx8IGRpZSAiJCEiOw0KCXNlbGVjdChTRVJWRVJTT0NLRVQpOyAk
fCA9IDE7IHNlbGVjdChTVERPVVQpOw0KCSgkYWRkciA9IGFjY2VwdChJTixTRVJWRVJTT0NL
RVQpKSB8fCBkaWUgJCE7DQoNCgkjY2xpZW50DQoJc2xlZXAoMyk7ICNnaXZlIHRoZSBzZXJ2
ZXIgdGltZSB0byBzdGFydCB1cA0KICAgICAgICBzb2NrZXQoT1VULCAyLCAyLCAoZ2V0cHJv
dG9ieW5hbWUoJ3RjcCcpKVsyXSkNCgkmJiBiaW5kKE9VVCwgcGFjaygnUyBuIGE0IHg4Jywg
MiwgMCwgDQogICAgICAgICAgICAgICAgKGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpKVs0
XSkpDQoJJiYgY29ubmVjdChPVVQscGFjaygnUyBuIGE0IHg4JywgMiwgOTk5MSwgDQogICAg
ICAgICAgICAgICAgcGFjaygnQzQnLChzcGxpdCgnXC4nLCRFTlZ7J1JFTU9URV9BRERSJ30p
KSkpKQ0KCXx8IGRpZSAkITsNCglzZWxlY3QoT1VUKTsgJHwgPSAxOyBzZWxlY3QoU1RET1VU
KTsNCgkjc2lnbmFsIHRvIGNsaWVudCB0byBzZW5kIHNvbWV0aGluZw0KICAgICAgICAkT1ZF
Uj0iREVCVUcgU0VSVkVSIExJU1RFTklOR1xuIjsNCn0NCmVsc2UgDQp7DQoJb3BlbihJTiwg
IjwkY29uc29sZSIpIHx8IG9wZW4oSU4sICAiPCZTVERJTiIpOwkjIHNvIHdlIGRvbid0IGRp
bmdsZSBzdGRpbg0KCW9wZW4oT1VULCI+JGNvbnNvbGUiKSB8fCBvcGVuKE9VVCwgIj4mU1RE
RVJSIikNCgkgICAgfHwgb3BlbihPVVQsICI+JlNURE9VVCIpOwkjIHNvIHdlIGRvbid0IGRv
bmdsZSBzdGRvdXQNCgkkT1ZFUjsNCn0NCnNlbGVjdChPVVQpOw0KJHwgPSAxOwkJCQkjIGZv
ciBEQjo6T1VUDQpzZWxlY3QoU1RET1VUKTsNCiR8ID0gMTsJCQkJIyBmb3IgcmVhbCBTVERP
VVQNCiRzdWIgPSAnJzsNCg0KIyBJcyBQZXJsIGJlaW5nIHJ1biBmcm9tIEVtYWNzPw0KJGVt
YWNzID0gJG1haW46OkFSR1ZbMF0gZXEgJy1lbWFjcyc7DQpzaGlmdChAbWFpbjo6QVJHVikg
aWYgJGVtYWNzOw0KDQokaGVhZGVyID1+IHMvLkhlYWRlcjogKFteLF0rKSx2KFxzK1xTK1xz
K1xTKykuKiQvJDEkMi87DQpwcmludCBPVVQgIlxuTG9hZGluZyBEQiByb3V0aW5lcyBmcm9t
ICRoZWFkZXJcbiI7DQpwcmludCBPVVQgKCJFbWFjcyBzdXBwb3J0ICIsDQoJICAgJGVtYWNz
ID8gImVuYWJsZWQiIDogImF2YWlsYWJsZSIsDQoJICAgIi5cbiIpOw0KcHJpbnQgT1VUICJc
bkVudGVyIGggZm9yIGhlbHAuXG5cbiI7DQoNCkBBUkdTOw0KDQpzdWIgREIgew0KICAgICZz
YXZlOw0KICAgICgkcGtnLCAkZmlsZW5hbWUsICRsaW5lKSA9IGNhbGxlcjsNCiAgICAkdXNl
cmNvbnRleHQgPSAnKCRALCAkISwgJCwsICQvLCAkXCwgJF5XKSA9IEBzYXZlZDsnIC4NCgki
cGFja2FnZSAkcGtnOyI7CQkjIHRoaXMgd29uJ3QgbGV0IHRoZW0gbW9kaWZ5LCBhbGFzDQog
ICAgbG9jYWwoKmRibGluZSkgPSAiOjpfPCRmaWxlbmFtZSI7DQogICAgJG1heCA9ICQjZGJs
aW5lOw0KICAgIGlmICgoJHN0b3AsJGFjdGlvbikgPSBzcGxpdCgvXDAvLCRkYmxpbmV7JGxp
bmV9KSkgew0KCWlmICgkc3RvcCBlcSAnMScpIHsNCgkgICAgJHNpZ25hbCB8PSAxOw0KCX0N
CgllbHNlIHsNCgkgICAgJGV2YWxhcmcgPSAiXCREQjo6c2lnbmFsIHw9IGRvIHskc3RvcDt9
IjsgJmV2YWw7DQoJICAgICRkYmxpbmV7JGxpbmV9ID1+IHMvOzkoJHxcMCkvJDEvOw0KCX0N
CiAgICB9DQogICAgaWYgKCRzaW5nbGUgfHwgJHRyYWNlIHx8ICRzaWduYWwpIHsNCglpZiAo
JGVtYWNzKSB7DQoJICAgIHByaW50IE9VVCAiXDAzMlwwMzIkZmlsZW5hbWU6JGxpbmU6MFxu
IjsNCgl9IGVsc2Ugew0KCSAgICAkcHJlZml4ID0gJHN1YiA9fiAvJ3w6Oi8gPyAiIiA6ICIk
e3BrZ306OiI7DQoJICAgICRwcmVmaXggLj0gIiRzdWIoJGZpbGVuYW1lOiI7DQoJICAgIGlm
IChsZW5ndGgoJHByZWZpeCkgPiAzMCkgew0KCQlwcmludCBPVVQgIiRwcmVmaXgkbGluZSk6
XG4kbGluZTpcdCIsJGRibGluZVskbGluZV07DQoJCSRwcmVmaXggPSAiIjsNCgkJJGluZml4
ID0gIjpcdCI7DQoJICAgIH0NCgkgICAgZWxzZSB7DQoJCSRpbmZpeCA9ICIpOlx0IjsNCgkJ
cHJpbnQgT1VUICIkcHJlZml4JGxpbmUkaW5maXgiLCRkYmxpbmVbJGxpbmVdOw0KCSAgICB9
DQoJICAgIGZvciAoJGkgPSAkbGluZSArIDE7ICRpIDw9ICRtYXggJiYgJGRibGluZVskaV0g
PT0gMDsgKyskaSkgew0KCQlsYXN0IGlmICRkYmxpbmVbJGldID1+IC9eXHMqKH18I3xcbikv
Ow0KCQlwcmludCBPVVQgIiRwcmVmaXgkaSRpbmZpeCIsJGRibGluZVskaV07DQoJICAgIH0N
Cgl9DQogICAgfQ0KICAgICRldmFsYXJnID0gJGFjdGlvbiwgJmV2YWwgaWYgJGFjdGlvbjsN
CiAgICBpZiAoJHNpbmdsZSB8fCAkc2lnbmFsKSB7DQoJJGV2YWxhcmcgPSAkcHJlLCAmZXZh
bCBpZiAkcHJlOw0KCXByaW50IE9VVCAkI3N0YWNrIC4gIiBsZXZlbHMgZGVlcCBpbiBzdWJy
b3V0aW5lIGNhbGxzIVxuIg0KCSAgICBpZiAkc2luZ2xlICYgNDsNCgkkc3RhcnQgPSAkbGlu
ZTsNCiAgICAgIENNRDoNCgl3aGlsZSAoKHByaW50IE9VVCAiICBEQjwiLCAkI2hpc3QrMSwg
Ij4gJE9WRVIiKSwgJGNtZD0mZ2V0cykgew0KCSAgICB7DQoJCSRzaW5nbGUgPSAwOw0KCQkk
c2lnbmFsID0gMDsNCgkJJGNtZCBlcSAnJyAmJiBleGl0IDA7DQoJCWNob3AoJGNtZCk7DQoJ
CSRjbWQgPX4gcy9cXCQvLyAmJiBkbyB7DQoJCSAgICBwcmludCBPVVQgIiAgY29udDogJE9W
RVIiOw0KCQkgICAgJGNtZCAuPSAmZ2V0czsNCgkJICAgIHJlZG8gQ01EOw0KCQl9Ow0KCQkk
Y21kID1+IC9ecSQvICYmIGV4aXQgMDsNCgkJJGNtZCA9fiAvXiQvICYmICgkY21kID0gJGxh
c3RzdGVwKTsNCgkJcHVzaChAaGlzdCwkY21kKSBpZiBsZW5ndGgoJGNtZCkgPiAxOw0KCQko
JGkpID0gc3BsaXQoL1xzKy8sJGNtZCk7DQoJCWV2YWwgIlwkY21kID1+ICRhbGlhc3skaX0i
LCBwcmludCBPVVQgJEAgaWYgJGFsaWFzeyRpfTsNCgkJJGNtZCA9fiAvXmgkLyAmJiBkbyB7
DQoJCSAgICBwcmludCBPVVQgIg0KVAkJU3RhY2sgdHJhY2UuDQpzCQlTaW5nbGUgc3RlcC4N
Cm4JCU5leHQsIHN0ZXBzIG92ZXIgc3Vicm91dGluZSBjYWxscy4NCnIJCVJldHVybiBmcm9t
IGN1cnJlbnQgc3Vicm91dGluZS4NCmMgW2xpbmVdCUNvbnRpbnVlOyBvcHRpb25hbGx5IGlu
c2VydHMgYSBvbmUtdGltZS1vbmx5IGJyZWFrcG9pbnQgDQoJCWF0IHRoZSBzcGVjaWZpZWQg
bGluZS4NCjxDUj4JCVJlcGVhdCBsYXN0IG4gb3Igcy4NCmwgbWluK2luY3IJTGlzdCBpbmNy
KzEgbGluZXMgc3RhcnRpbmcgYXQgbWluLg0KbCBtaW4tbWF4CUxpc3QgbGluZXMuDQpsIGxp
bmUJCUxpc3QgbGluZTsNCmwJCUxpc3QgbmV4dCB3aW5kb3cuDQotCQlMaXN0IHByZXZpb3Vz
IHdpbmRvdy4NCncgbGluZQkJTGlzdCB3aW5kb3cgYXJvdW5kIGxpbmUuDQpsIHN1Ym5hbWUJ
TGlzdCBzdWJyb3V0aW5lLg0KZiBmaWxlbmFtZQlTd2l0Y2ggdG8gZmlsZW5hbWUuDQovcGF0
dGVybi8JU2VhcmNoIGZvcndhcmRzIGZvciBwYXR0ZXJuOyBmaW5hbCAvIGlzIG9wdGlvbmFs
Lg0KP3BhdHRlcm4/CVNlYXJjaCBiYWNrd2FyZHMgZm9yIHBhdHRlcm4uDQpMCQlMaXN0IGJy
ZWFrcG9pbnRzIGFuZCBhY3Rpb25zLg0KUwkJTGlzdCBzdWJyb3V0aW5lIG5hbWVzLg0KdAkJ
VG9nZ2xlIHRyYWNlIG1vZGUuDQpiIFtsaW5lXSBbY29uZGl0aW9uXQ0KCQlTZXQgYnJlYWtw
b2ludDsgbGluZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBleGVjdXRpb24gbGluZTsgDQoJ
CWNvbmRpdGlvbiBicmVha3MgaWYgaXQgZXZhbHVhdGVzIHRvIHRydWUsIGRlZmF1bHRzIHRv
IFwnMVwnLg0KYiBzdWJuYW1lIFtjb25kaXRpb25dDQoJCVNldCBicmVha3BvaW50IGF0IGZp
cnN0IGxpbmUgb2Ygc3Vicm91dGluZS4NCmQgW2xpbmVdCURlbGV0ZSBicmVha3BvaW50Lg0K
RAkJRGVsZXRlIGFsbCBicmVha3BvaW50cy4NCmEgW2xpbmVdIGNvbW1hbmQNCgkJU2V0IGFu
IGFjdGlvbiB0byBiZSBkb25lIGJlZm9yZSB0aGUgbGluZSBpcyBleGVjdXRlZC4NCgkJU2Vx
dWVuY2UgaXM6IGNoZWNrIGZvciBicmVha3BvaW50LCBwcmludCBsaW5lIGlmIG5lY2Vzc2Fy
eSwNCgkJZG8gYWN0aW9uLCBwcm9tcHQgdXNlciBpZiBicmVha3BvaW50IG9yIHN0ZXAsIGV2
YWx1YXRlIGxpbmUuDQpBCQlEZWxldGUgYWxsIGFjdGlvbnMuDQpWIFtwa2cgW3ZhcnNdXQlM
aXN0IHNvbWUgKGRlZmF1bHQgYWxsKSB2YXJpYWJsZXMgaW4gcGFja2FnZSAoZGVmYXVsdCBj
dXJyZW50KS4NClggW3ZhcnNdCVNhbWUgYXMgXCJWIGN1cnJlbnRwYWNrYWdlIFt2YXJzXVwi
Lg0KPCBjb21tYW5kCURlZmluZSBjb21tYW5kIGJlZm9yZSBwcm9tcHQuDQo+IGNvbW1hbmQJ
RGVmaW5lIGNvbW1hbmQgYWZ0ZXIgcHJvbXB0Lg0KISBudW1iZXIJUmVkbyBjb21tYW5kIChk
ZWZhdWx0IHByZXZpb3VzIGNvbW1hbmQpLg0KISAtbnVtYmVyCVJlZG8gbnVtYmVyXCd0aCB0
byBsYXN0IGNvbW1hbmQuDQpIIC1udW1iZXIJRGlzcGxheSBsYXN0IG51bWJlciBjb21tYW5k
cyAoZGVmYXVsdCBhbGwpLg0KcSBvciBeRAkJUXVpdC4NCnAgZXhwcgkJU2FtZSBhcyBcInBy
aW50IERCOjpPVVQgZXhwclwiIGluIGN1cnJlbnQgcGFja2FnZS4NCj0gW2FsaWFzIHZhbHVl
XQlEZWZpbmUgYSBjb21tYW5kIGFsaWFzLCBvciBsaXN0IGN1cnJlbnQgYWxpYXNlcy4NCmNv
bW1hbmQJCUV4ZWN1dGUgYXMgYSBwZXJsIHN0YXRlbWVudCBpbiBjdXJyZW50IHBhY2thZ2Uu
DQoNCiI7DQoJCSAgICBuZXh0IENNRDsgfTsNCgkJJGNtZCA9fiAvXnQkLyAmJiBkbyB7DQoJ
CSAgICAkdHJhY2UgPSAhJHRyYWNlOw0KCQkgICAgcHJpbnQgT1VUICJUcmFjZSA9ICIuKCR0
cmFjZT8ib24iOiJvZmYiKS4iXG4iOw0KCQkgICAgbmV4dCBDTUQ7IH07DQoJCSRjbWQgPX4g
L15TJC8gJiYgZG8gew0KCQkgICAgZm9yZWFjaCAkc3VibmFtZSAoc29ydChrZXlzICVzdWIp
KSB7DQoJCQlwcmludCBPVVQgJHN1Ym5hbWUsIlxuIjsNCgkJICAgIH0NCgkJICAgIG5leHQg
Q01EOyB9Ow0KCQkkY21kID1+IHMvXlhcYi9WICRwa2cvOw0KCQkkY21kID1+IC9eViQvICYm
IGRvIHsNCgkJICAgICRjbWQgPSAiViAkcGtnIjsgfTsNCgkJJGNtZCA9fiAvXlZcYlxzKihc
UyspXHMqKC4qKS8gJiYgZG8gew0KCQkgICAgbG9jYWwgKCRzYXZvdXQpID0gc2VsZWN0KE9V
VCk7DQoJCSAgICAkcGFja25hbWUgPSAkMTsNCgkJICAgIEB2YXJzID0gc3BsaXQoJyAnLCQy
KTsNCgkJICAgIGRvICdkdW1wdmFyLnBsJyB1bmxlc3MgZGVmaW5lZCAmbWFpbjo6ZHVtcHZh
cjsNCgkJICAgIGlmIChkZWZpbmVkICZtYWluOjpkdW1wdmFyKSB7DQoJCQkmbWFpbjo6ZHVt
cHZhcigkcGFja25hbWUsQHZhcnMpOw0KCQkgICAgfQ0KCQkgICAgZWxzZSB7DQoJCQlwcmlu
dCBEQjo6T1VUICJkdW1wdmFyLnBsIG5vdCBhdmFpbGFibGUuXG4iOw0KCQkgICAgfQ0KCQkg
ICAgc2VsZWN0ICgkc2F2b3V0KTsNCgkJICAgIG5leHQgQ01EOyB9Ow0KCQkkY21kID1+IC9e
ZlxiXHMqKC4qKS8gJiYgZG8gew0KCQkgICAgJGZpbGUgPSAkMTsNCgkJICAgIGlmICghJGZp
bGUpIHsNCgkJCXByaW50IE9VVCAiVGhlIG9sZCBmIGNvbW1hbmQgaXMgbm93IHRoZSByIGNv
bW1hbmQuXG4iOw0KCQkJcHJpbnQgT1VUICJUaGUgbmV3IGYgY29tbWFuZCBzd2l0Y2hlcyBm
aWxlbmFtZXMuXG4iOw0KCQkJbmV4dCBDTUQ7DQoJCSAgICB9DQoJCSAgICBpZiAoIWRlZmlu
ZWQgJG1haW46OnsnXzwnIC4gJGZpbGV9KSB7DQoJCQlpZiAoKCR0cnkpID0gZ3JlcChtI15f
PC4qJGZpbGUjLCBrZXlzICVtYWluOjopKSB7DQoJCQkgICAgJGZpbGUgPSBzdWJzdHIoJHRy
eSwyKTsNCgkJCSAgICBwcmludCAiXG4kZmlsZTpcbiI7DQoJCQl9DQoJCSAgICB9DQoJCSAg
ICBpZiAoIWRlZmluZWQgJG1haW46OnsnXzwnIC4gJGZpbGV9KSB7DQoJCQlwcmludCBPVVQg
IlRoZXJlJ3Mgbm8gY29kZSBoZXJlIGFueXRoaW5nIG1hdGNoaW5nICRmaWxlLlxuIjsNCgkJ
CW5leHQgQ01EOw0KCQkgICAgfQ0KCQkgICAgZWxzaWYgKCRmaWxlIG5lICRmaWxlbmFtZSkg
ew0KCQkJKmRibGluZSA9ICI6Ol88JGZpbGUiOw0KCQkJJG1heCA9ICQjZGJsaW5lOw0KCQkJ
JGZpbGVuYW1lID0gJGZpbGU7DQoJCQkkc3RhcnQgPSAxOw0KCQkJJGNtZCA9ICJsIjsNCgkJ
ICAgIH0gfTsNCgkJJGNtZCA9fiAvXmxcYlxzKihbJzpBLVphLXpfXVsnOlx3XSopLyAmJiBk
byB7DQoJCSAgICAkc3VibmFtZSA9ICQxOw0KCQkgICAgJHN1Ym5hbWUgPSAibWFpbjo6IiAu
ICRzdWJuYW1lIHVubGVzcyAkc3VibmFtZSA9fiAvJ3w6Oi87DQoJCSAgICAkc3VibmFtZSA9
ICJtYWluIiAuICRzdWJuYW1lIGlmIHN1YnN0cigkc3VibmFtZSwwLDEpZXEgIiciOw0KCQkg
ICAgJHN1Ym5hbWUgPSAibWFpbiIgLiAkc3VibmFtZSBpZiBzdWJzdHIoJHN1Ym5hbWUsMCwy
KWVxICI6OiI7DQoJCSAgICAoJGZpbGUsJHN1YnJhbmdlKSA9IHNwbGl0KC86Lywkc3VieyRz
dWJuYW1lfSk7DQoJCSAgICBpZiAoJGZpbGUgbmUgJGZpbGVuYW1lKSB7DQoJCQkqZGJsaW5l
ID0gIjo6XzwkZmlsZSI7DQoJCQkkbWF4ID0gJCNkYmxpbmU7DQoJCQkkZmlsZW5hbWUgPSAk
ZmlsZTsNCgkJICAgIH0NCgkJICAgIGlmICgkc3VicmFuZ2UpIHsNCgkJCWlmIChldmFsKCRz
dWJyYW5nZSkgPCAtJHdpbmRvdykgew0KCQkJICAgICRzdWJyYW5nZSA9fiBzLy0uKi8rLzsN
CgkJCX0NCgkJCSRjbWQgPSAibCAkc3VicmFuZ2UiOw0KCQkgICAgfSBlbHNlIHsNCgkJCXBy
aW50IE9VVCAiU3Vicm91dGluZSAkMSBub3QgZm91bmQuXG4iOw0KCQkJbmV4dCBDTUQ7DQoJ
CSAgICB9IH07DQoJCSRjbWQgPX4gL153XGJccyooXGQqKSQvICYmIGRvIHsNCgkJICAgICRp
bmNyID0gJHdpbmRvdyAtIDE7DQoJCSAgICAkc3RhcnQgPSAkMSBpZiAkMTsNCgkJICAgICRz
dGFydCAtPSAkcHJldmlldzsNCgkJICAgICRjbWQgPSAnbCAnIC4gJHN0YXJ0IC4gJy0nIC4g
KCRzdGFydCArICRpbmNyKTsgfTsNCgkJJGNtZCA9fiAvXi0kLyAmJiBkbyB7DQoJCSAgICAk
aW5jciA9ICR3aW5kb3cgLSAxOw0KCQkgICAgJGNtZCA9ICdsICcgLiAoJHN0YXJ0LSR3aW5k
b3cqMikgLiAnKyc7IH07DQoJCSRjbWQgPX4gL15sJC8gJiYgZG8gew0KCQkgICAgJGluY3Ig
PSAkd2luZG93IC0gMTsNCgkJICAgICRjbWQgPSAnbCAnIC4gJHN0YXJ0IC4gJy0nIC4gKCRz
dGFydCArICRpbmNyKTsgfTsNCgkJJGNtZCA9fiAvXmxcYlxzKihcZCopXCsoXGQqKSQvICYm
IGRvIHsNCgkJICAgICRzdGFydCA9ICQxIGlmICQxOw0KCQkgICAgJGluY3IgPSAkMjsNCgkJ
ICAgICRpbmNyID0gJHdpbmRvdyAtIDEgdW5sZXNzICRpbmNyOw0KCQkgICAgJGNtZCA9ICds
ICcgLiAkc3RhcnQgLiAnLScgLiAoJHN0YXJ0ICsgJGluY3IpOyB9Ow0KCQkkY21kID1+IC9e
bFxiXHMqKChbXGRcJFwuXSspKFstLF0oW1xkXCRcLl0rKSk/KT8vICYmIGRvIHsNCgkJICAg
ICRlbmQgPSAoISQyKSA/ICRtYXggOiAoJDQgPyAkNCA6ICQyKTsNCgkJICAgICRlbmQgPSAk
bWF4IGlmICRlbmQgPiAkbWF4Ow0KCQkgICAgJGkgPSAkMjsNCgkJICAgICRpID0gJGxpbmUg
aWYgJGkgZXEgJy4nOw0KCQkgICAgJGkgPSAxIGlmICRpIDwgMTsNCgkJICAgIGlmICgkZW1h
Y3MpIHsNCgkJCXByaW50IE9VVCAiXDAzMlwwMzIkZmlsZW5hbWU6JGk6MFxuIjsNCgkJCSRp
ID0gJGVuZDsNCgkJICAgIH0gZWxzZSB7DQoJCQlmb3IgKDsgJGkgPD0gJGVuZDsgJGkrKykg
ew0KCQkJICAgIHByaW50IE9VVCAiJGk6XHQiLCAkZGJsaW5lWyRpXTsNCgkJCSAgICBsYXN0
IGlmICRzaWduYWw7DQoJCQl9DQoJCSAgICB9DQoJCSAgICAkc3RhcnQgPSAkaTsJIyByZW1l
bWJlciBpbiBjYXNlIHRoZXkgd2FudCBtb3JlDQoJCSAgICAkc3RhcnQgPSAkbWF4IGlmICRz
dGFydCA+ICRtYXg7DQoJCSAgICBuZXh0IENNRDsgfTsNCgkJJGNtZCA9fiAvXkQkLyAmJiBk
byB7DQoJCSAgICBwcmludCBPVVQgIkRlbGV0aW5nIGFsbCBicmVha3BvaW50cy4uLlxuIjsN
CgkJICAgIGZvciAoJGkgPSAxOyAkaSA8PSAkbWF4IDsgJGkrKykgew0KCQkJaWYgKGRlZmlu
ZWQgJGRibGluZXskaX0pIHsNCgkJCSAgICAkZGJsaW5leyRpfSA9fiBzL15bXlwwXSsvLzsN
CgkJCSAgICBpZiAoJGRibGluZXskaX0gPX4gcy9eXDA/JC8vKSB7DQoJCQkJZGVsZXRlICRk
YmxpbmV7JGl9Ow0KCQkJICAgIH0NCgkJCX0NCgkJICAgIH0NCgkJICAgIG5leHQgQ01EOyB9
Ow0KCQkkY21kID1+IC9eTCQvICYmIGRvIHsNCgkJICAgIGZvciAoJGkgPSAxOyAkaSA8PSAk
bWF4OyAkaSsrKSB7DQoJCQlpZiAoZGVmaW5lZCAkZGJsaW5leyRpfSkgew0KCQkJICAgIHBy
aW50IE9VVCAiJGk6XHQiLCAkZGJsaW5lWyRpXTsNCgkJCSAgICAoJHN0b3AsJGFjdGlvbikg
PSBzcGxpdCgvXDAvLCAkZGJsaW5leyRpfSk7DQoJCQkgICAgcHJpbnQgT1VUICIgIGJyZWFr
IGlmICgiLCAkc3RvcCwgIilcbiIgDQoJCQkJaWYgJHN0b3A7DQoJCQkgICAgcHJpbnQgT1VU
ICIgIGFjdGlvbjogICIsICRhY3Rpb24sICJcbiIgDQoJCQkJaWYgJGFjdGlvbjsNCgkJCSAg
ICBsYXN0IGlmICRzaWduYWw7DQoJCQl9DQoJCSAgICB9DQoJCSAgICBuZXh0IENNRDsgfTsN
CgkJJGNtZCA9fiAvXmJcYlxzKihbJzpBLVphLXpfXVsnOlx3XSopXHMqKC4qKS8gJiYgZG8g
ew0KCQkgICAgJHN1Ym5hbWUgPSAkMTsNCgkJICAgICRjb25kID0gJDIgfHwgJzEnOw0KCQkg
ICAgJHN1Ym5hbWUgPSAiJHtwa2d9OjoiIC4gJHN1Ym5hbWUNCgkJCXVubGVzcyAkc3VibmFt
ZSA9fiAvJ3w6Oi87DQoJCSAgICAkc3VibmFtZSA9ICJtYWluIiAuICRzdWJuYW1lIGlmIHN1
YnN0cigkc3VibmFtZSwwLDEpIGVxICInIjsNCgkJICAgICRzdWJuYW1lID0gIm1haW4iIC4g
JHN1Ym5hbWUgaWYgc3Vic3RyKCRzdWJuYW1lLDAsMikgZXEgIjo6IjsNCgkJICAgICgkZmls
ZW5hbWUsJGkpID0gc3BsaXQoLzovLCAkc3VieyRzdWJuYW1lfSk7DQoJCSAgICAkaSArPSAw
Ow0KCQkgICAgaWYgKCRpKSB7DQoJCQkqZGJsaW5lID0gIjo6XzwkZmlsZW5hbWUiOw0KCQkJ
KyskaSB3aGlsZSAkZGJsaW5lWyRpXSA9PSAwICYmICRpIDwgJCNkYmxpbmU7DQoJCQkkZGJs
aW5leyRpfSA9fiBzL15bXlwwXSovJGNvbmQvOw0KCQkgICAgfSBlbHNlIHsNCgkJCXByaW50
IE9VVCAiU3Vicm91dGluZSAkc3VibmFtZSBub3QgZm91bmQuXG4iOw0KCQkgICAgfQ0KCQkg
ICAgbmV4dCBDTUQ7IH07DQoJCSRjbWQgPX4gL15iXGJccyooXGQqKVxzKiguKikvICYmIGRv
IHsNCgkJICAgICRpID0gKCQxPyQxOiRsaW5lKTsNCgkJICAgICRjb25kID0gJDIgfHwgJzEn
Ow0KCQkgICAgaWYgKCRkYmxpbmVbJGldID09IDApIHsNCgkJCXByaW50IE9VVCAiTGluZSAk
aSBub3QgYnJlYWthYmxlLlxuIjsNCgkJICAgIH0gZWxzZSB7DQoJCQkkZGJsaW5leyRpfSA9
fiBzL15bXlwwXSovJGNvbmQvOw0KCQkgICAgfQ0KCQkgICAgbmV4dCBDTUQ7IH07DQoJCSRj
bWQgPX4gL15kXGJccyooXGQrKT8vICYmIGRvIHsNCgkJICAgICRpID0gKCQxPyQxOiRsaW5l
KTsNCgkJICAgICRkYmxpbmV7JGl9ID1+IHMvXlteXDBdKi8vOw0KCQkgICAgZGVsZXRlICRk
YmxpbmV7JGl9IGlmICRkYmxpbmV7JGl9IGVxICcnOw0KCQkgICAgbmV4dCBDTUQ7IH07DQoJ
CSRjbWQgPX4gL15BJC8gJiYgZG8gew0KCQkgICAgZm9yICgkaSA9IDE7ICRpIDw9ICRtYXgg
OyAkaSsrKSB7DQoJCQlpZiAoZGVmaW5lZCAkZGJsaW5leyRpfSkgew0KCQkJICAgICRkYmxp
bmV7JGl9ID1+IHMvXDBbXlwwXSovLzsNCgkJCSAgICBkZWxldGUgJGRibGluZXskaX0gaWYg
JGRibGluZXskaX0gZXEgJyc7DQoJCQl9DQoJCSAgICB9DQoJCSAgICBuZXh0IENNRDsgfTsN
CgkJJGNtZCA9fiAvXjxccyooLiopLyAmJiBkbyB7DQoJCSAgICAkcHJlID0gYWN0aW9uKCQx
KTsNCgkJICAgIG5leHQgQ01EOyB9Ow0KCQkkY21kID1+IC9ePlxzKiguKikvICYmIGRvIHsN
CgkJICAgICRwb3N0ID0gYWN0aW9uKCQxKTsNCgkJICAgIG5leHQgQ01EOyB9Ow0KCQkkY21k
ID1+IC9eYVxiXHMqKFxkKykoXHMrKC4qKSk/LyAmJiBkbyB7DQoJCSAgICAkaSA9ICQxOw0K
CQkgICAgaWYgKCRkYmxpbmVbJGldID09IDApIHsNCgkJCXByaW50IE9VVCAiTGluZSAkaSBt
YXkgbm90IGhhdmUgYW4gYWN0aW9uLlxuIjsNCgkJICAgIH0gZWxzZSB7DQoJCQkkZGJsaW5l
eyRpfSA9fiBzL1wwW15cMF0qLy87DQoJCQkkZGJsaW5leyRpfSAuPSAiXDAiIC4gYWN0aW9u
KCQzKTsNCgkJICAgIH0NCgkJICAgIG5leHQgQ01EOyB9Ow0KCQkkY21kID1+IC9ebiQvICYm
IGRvIHsNCgkJICAgICRzaW5nbGUgPSAyOw0KCQkgICAgJGxhc3RzdGVwID0gJGNtZDsNCgkJ
ICAgIGxhc3QgQ01EOyB9Ow0KCQkkY21kID1+IC9ecyQvICYmIGRvIHsNCgkJICAgICRzaW5n
bGUgPSAxOw0KCQkgICAgJGxhc3RzdGVwID0gJGNtZDsNCgkJICAgIGxhc3QgQ01EOyB9Ow0K
CQkkY21kID1+IC9eY1xiXHMqKFxkKilccyokLyAmJiBkbyB7DQoJCSAgICAkaSA9ICQxOw0K
CQkgICAgaWYgKCRpKSB7DQoJCQlpZiAoJGRibGluZVskaV0gPT0gMCkgew0KCQkJICAgIHBy
aW50IE9VVCAiTGluZSAkaSBub3QgYnJlYWthYmxlLlxuIjsNCgkJCSAgICBuZXh0IENNRDsN
CgkJCX0NCgkJCSRkYmxpbmV7JGl9ID1+IHMvKFwwfCQpLzs5JDEvOwkjIGFkZCBvbmUtdGlt
ZS1vbmx5IGIucC4NCgkJICAgIH0NCgkJICAgIGZvciAoJGk9MDsgJGkgPD0gJCNzdGFjazsg
KSB7DQoJCQkkc3RhY2tbJGkrK10gJj0gfjE7DQoJCSAgICB9DQoJCSAgICBsYXN0IENNRDsg
fTsNCgkJJGNtZCA9fiAvXnIkLyAmJiBkbyB7DQoJCSAgICAkc3RhY2tbJCNzdGFja10gfD0g
MjsNCgkJICAgIGxhc3QgQ01EOyB9Ow0KCQkkY21kID1+IC9eVCQvICYmIGRvIHsNCgkJICAg
IGxvY2FsKCRwLCRmLCRsLCRzLCRoLCRhLEBhLEBzdWIpOw0KCQkgICAgZm9yICgkaSA9IDE7
ICgkcCwkZiwkbCwkcywkaCwkdykgPSBjYWxsZXIoJGkpOyAkaSsrKSB7DQoJCQlAYSA9ICgp
Ow0KCQkJZm9yICRhcmcgKEBhcmdzKSB7DQoJCQkgICAgJF8gPSAiJGFyZyI7DQoJCQkgICAg
cy8nL1xcJy9nOw0KCQkJICAgIHMvKFteXDBdKikvJyQxJy8NCgkJCQl1bmxlc3MgL14oPzog
LT9bXGQuXSsgfCBcKltcdzpdKiApJC94Ow0KCQkJICAgIHMvKFtcMjAwLVwzNzddKS9zcHJp
bnRmKCJNLSVjIixvcmQoJDEpJjAxNzcpL2VnOw0KCQkJICAgIHMvKFtcMC1cMzdcMTc3XSkv
c3ByaW50ZigiXiVjIixvcmQoJDEpXjY0KS9lZzsNCgkJCSAgICBwdXNoKEBhLCAkXyk7DQoJ
CQl9DQoJCQkkdyA9ICR3ID8gJ0AgPSAnIDogJyQgPSAnOw0KCQkJJGEgPSAkaCA/ICcoJyAu
IGpvaW4oJywgJywgQGEpIC4gJyknIDogJyc7DQoJCQlwdXNoKEBzdWIsICIkdyRzJGEgZnJv
bSBmaWxlICRmIGxpbmUgJGxcbiIpOw0KCQkJbGFzdCBpZiAkc2lnbmFsOw0KCQkgICAgfQ0K
CQkgICAgZm9yICgkaT0wOyAkaSA8PSAkI3N1YjsgJGkrKykgew0KCQkJbGFzdCBpZiAkc2ln
bmFsOw0KCQkJcHJpbnQgT1VUICRzdWJbJGldOw0KCQkgICAgfQ0KCQkgICAgbmV4dCBDTUQ7
IH07DQoJCSRjbWQgPX4gL15cLyguKikkLyAmJiBkbyB7DQoJCSAgICAkaW5wYXQgPSAkMTsN
CgkJICAgICRpbnBhdCA9fiBzOihbXlxcXSkvJDokMTo7DQoJCSAgICBpZiAoJGlucGF0IG5l
ICIiKSB7DQoJCQlldmFsICckaW5wYXQgPX4gbScuIlxhJGlucGF0XGEiOwkNCgkJCWlmICgk
QCBuZSAiIikgew0KCQkJICAgIHByaW50IE9VVCAiJEAiOw0KCQkJICAgIG5leHQgQ01EOw0K
CQkJfQ0KCQkJJHBhdCA9ICRpbnBhdDsNCgkJICAgIH0NCgkJICAgICRlbmQgPSAkc3RhcnQ7
DQoJCSAgICBldmFsICcNCgkJICAgIGZvciAoOzspIHsNCgkJCSsrJHN0YXJ0Ow0KCQkJJHN0
YXJ0ID0gMSBpZiAoJHN0YXJ0ID4gJG1heCk7DQoJCQlsYXN0IGlmICgkc3RhcnQgPT0gJGVu
ZCk7DQoJCQlpZiAoJGRibGluZVskc3RhcnRdID1+IG0nLiJcYSRwYXRcYSIuJ2kpIHsNCgkJ
CSAgICBpZiAoJGVtYWNzKSB7DQoJCQkJcHJpbnQgT1VUICJcMDMyXDAzMiRmaWxlbmFtZTok
c3RhcnQ6MFxuIjsNCgkJCSAgICB9IGVsc2Ugew0KCQkJCXByaW50IE9VVCAiJHN0YXJ0Olx0
IiwgJGRibGluZVskc3RhcnRdLCAiXG4iOw0KCQkJICAgIH0NCgkJCSAgICBsYXN0Ow0KCQkJ
fQ0KCQkgICAgfSAnOw0KCQkgICAgcHJpbnQgT1VUICIvJHBhdC86IG5vdCBmb3VuZFxuIiBp
ZiAoJHN0YXJ0ID09ICRlbmQpOw0KCQkgICAgbmV4dCBDTUQ7IH07DQoJCSRjbWQgPX4gL15c
PyguKikkLyAmJiBkbyB7DQoJCSAgICAkaW5wYXQgPSAkMTsNCgkJICAgICRpbnBhdCA9fiBz
OihbXlxcXSlcPyQ6JDE6Ow0KCQkgICAgaWYgKCRpbnBhdCBuZSAiIikgew0KCQkJZXZhbCAn
JGlucGF0ID1+IG0nLiJcYSRpbnBhdFxhIjsJDQoJCQlpZiAoJEAgbmUgIiIpIHsNCgkJCSAg
ICBwcmludCBPVVQgIiRAIjsNCgkJCSAgICBuZXh0IENNRDsNCgkJCX0NCgkJCSRwYXQgPSAk
aW5wYXQ7DQoJCSAgICB9DQoJCSAgICAkZW5kID0gJHN0YXJ0Ow0KCQkgICAgZXZhbCAnDQoJ
CSAgICBmb3IgKDs7KSB7DQoJCQktLSRzdGFydDsNCgkJCSRzdGFydCA9ICRtYXggaWYgKCRz
dGFydCA8PSAwKTsNCgkJCWxhc3QgaWYgKCRzdGFydCA9PSAkZW5kKTsNCgkJCWlmICgkZGJs
aW5lWyRzdGFydF0gPX4gbScuIlxhJHBhdFxhIi4naSkgew0KCQkJICAgIGlmICgkZW1hY3Mp
IHsNCgkJCQlwcmludCBPVVQgIlwwMzJcMDMyJGZpbGVuYW1lOiRzdGFydDowXG4iOw0KCQkJ
ICAgIH0gZWxzZSB7DQoJCQkJcHJpbnQgT1VUICIkc3RhcnQ6XHQiLCAkZGJsaW5lWyRzdGFy
dF0sICJcbiI7DQoJCQkgICAgfQ0KCQkJICAgIGxhc3Q7DQoJCQl9DQoJCSAgICB9ICc7DQoJ
CSAgICBwcmludCBPVVQgIj8kcGF0Pzogbm90IGZvdW5kXG4iIGlmICgkc3RhcnQgPT0gJGVu
ZCk7DQoJCSAgICBuZXh0IENNRDsgfTsNCgkJJGNtZCA9fiAvXiErXHMqKC0pPyhcZCspPyQv
ICYmIGRvIHsNCgkJICAgIHBvcChAaGlzdCkgaWYgbGVuZ3RoKCRjbWQpID4gMTsNCgkJICAg
ICRpID0gKCQxPygkI2hpc3QtKCQyPyQyOjEpKTooJDI/JDI6JCNoaXN0KSk7DQoJCSAgICAk
Y21kID0gJGhpc3RbJGldIC4gIlxuIjsNCgkJICAgIHByaW50IE9VVCAkY21kOw0KCQkgICAg
cmVkbyBDTUQ7IH07DQoJCSRjbWQgPX4gL14hKC4rKSQvICYmIGRvIHsNCgkJICAgICRwYXQg
PSAiXiQxIjsNCgkJICAgIHBvcChAaGlzdCkgaWYgbGVuZ3RoKCRjbWQpID4gMTsNCgkJICAg
IGZvciAoJGkgPSAkI2hpc3Q7ICRpOyAtLSRpKSB7DQoJCQlsYXN0IGlmICRoaXN0WyRpXSA9
fiAkcGF0Ow0KCQkgICAgfQ0KCQkgICAgaWYgKCEkaSkgew0KCQkJcHJpbnQgT1VUICJObyBz
dWNoIGNvbW1hbmQhXG5cbiI7DQoJCQluZXh0IENNRDsNCgkJICAgIH0NCgkJICAgICRjbWQg
PSAkaGlzdFskaV0gLiAiXG4iOw0KCQkgICAgcHJpbnQgT1VUICRjbWQ7DQoJCSAgICByZWRv
IENNRDsgfTsNCgkJJGNtZCA9fiAvXkhcYlxzKigtKFxkKykpPy8gJiYgZG8gew0KCQkgICAg
JGVuZCA9ICQyPygkI2hpc3QtJDIpOjA7DQoJCSAgICAkaGlzdCA9IDAgaWYgJGhpc3QgPCAw
Ow0KCQkgICAgZm9yICgkaT0kI2hpc3Q7ICRpPiRlbmQ7ICRpLS0pIHsNCgkJCXByaW50IE9V
VCAiJGk6ICIsJGhpc3RbJGldLCJcbiINCgkJCSAgICB1bmxlc3MgJGhpc3RbJGldID1+IC9e
Lj8kLzsNCgkJICAgIH07DQoJCSAgICBuZXh0IENNRDsgfTsNCgkJJGNtZCA9fiBzL15wKCAu
Kik/JC9wcmludCBEQjo6T1VUJDEvOw0KCQkkY21kID1+IC9ePS8gJiYgZG8gew0KCQkgICAg
aWYgKGxvY2FsKCRrLCR2KSA9ICgkY21kID1+IC9ePVxzKihcUyspXHMrKC4qKS8pKSB7DQoJ
CQkkYWxpYXN7JGt9PSJzfiRrfiR2fiI7DQoJCQlwcmludCBPVVQgIiRrID0gJHZcbiI7DQoJ
CSAgICB9IGVsc2lmICgkY21kID1+IC9ePVxzKiQvKSB7DQoJCQlmb3JlYWNoICRrIChzb3J0
IGtleXMoJWFsaWFzKSkgew0KCQkJICAgIGlmICgoJHYgPSAkYWxpYXN7JGt9KSA9fiBzfl5z
XH4ka1x+KC4qKVx+JH4kMX4pIHsNCgkJCQlwcmludCBPVVQgIiRrID0gJHZcbiI7DQoJCQkg
ICAgfSBlbHNlIHsNCgkJCQlwcmludCBPVVQgIiRrXHQkYWxpYXN7JGt9XG4iOw0KCQkJICAg
IH07DQoJCQl9Ow0KCQkgICAgfTsNCgkJICAgIG5leHQgQ01EOyB9Ow0KCSAgICB9DQoJICAg
ICRldmFsYXJnID0gJGNtZDsgJmV2YWw7DQoJICAgIHByaW50IE9VVCAiXG4iOw0KCX0NCglp
ZiAoJHBvc3QpIHsNCgkgICAgJGV2YWxhcmcgPSAkcG9zdDsgJmV2YWw7DQoJfQ0KICAgIH0N
CiAgICAoJEAsICQhLCAkLCwgJC8sICRcLCAkXlcpID0gQHNhdmVkOw0KICAgICgpOw0KfQ0K
DQpzdWIgc2F2ZSB7DQogICAgQHNhdmVkID0gKCRALCAkISwgJCwsICQvLCAkXCwgJF5XKTsN
CiAgICAkLCA9ICIiOyAkLyA9ICJcbiI7ICRcID0gIiI7ICReVyA9IDA7DQp9DQoNCiMgVGhl
IGZvbGxvd2luZyB0YWtlcyBpdHMgYXJndW1lbnQgdmlhICRldmFsYXJnIHRvIHByZXNlcnZl
IGN1cnJlbnQgQF8NCg0Kc3ViIGV2YWwgew0KICAgIGV2YWwgIiR1c2VyY29udGV4dCAkZXZh
bGFyZzsgJkRCOjpzYXZlIjsNCiAgICBwcmludCBPVVQgJEA7DQp9DQoNCnN1YiBhY3Rpb24g
ew0KICAgIGxvY2FsKCRhY3Rpb24pID0gQF87DQogICAgd2hpbGUgKCRhY3Rpb24gPX4gcy9c
XCQvLykgew0KCXByaW50IE9VVCAiKyAkT1ZFUiI7DQoJJGFjdGlvbiAuPSAmZ2V0czsNCiAg
ICB9DQogICAgJGFjdGlvbjsNCn0NCg0Kc3ViIGdldHMgew0KICAgIGxvY2FsKCQuKTsNCiAg
ICA8SU4+Ow0KfQ0KDQpzdWIgY2F0Y2ggew0KICAgICRzaWduYWwgPSAxOw0KfQ0KDQpzdWIg
c3ViIHsNCiAgICBwdXNoKEBzdGFjaywgJHNpbmdsZSk7DQogICAgJHNpbmdsZSAmPSAxOw0K
ICAgICRzaW5nbGUgfD0gNCBpZiAkI3N0YWNrID09ICRkZWVwOw0KICAgIGlmICh3YW50YXJy
YXkpIHsNCglAaSA9ICYkc3ViOw0KCSRzaW5nbGUgfD0gcG9wKEBzdGFjayk7DQoJQGk7DQog
ICAgfQ0KICAgIGVsc2Ugew0KCSRpID0gJiRzdWI7DQoJJHNpbmdsZSB8PSBwb3AoQHN0YWNr
KTsNCgkkaTsNCiAgICB9DQp9DQoNCiR0cmFjZSA9ICRzaWduYWwgPSAkc2luZ2xlID0gMDsJ
IyB1bmluaXRpYWxpemVkIHdhcm5pbmcgc3VwcHJlc3Npb24NCg0KQGhpc3QgPSAoJz8nKTsN
CiRTSUd7J0lOVCd9ID0gIkRCOjpjYXRjaCI7DQokZGVlcCA9IDEwMDsJCSMgd2FybmluZyBp
ZiBzdGFjayBnZXRzIHRoaXMgZGVlcA0KJHdpbmRvdyA9IDEwOw0KJHByZXZpZXcgPSAzOw0K
DQpAc3RhY2sgPSAoMCk7DQpAQVJHUyA9IEBBUkdWOw0KZm9yIChAYXJncykgew0KICAgIHMv
Jy9cXCcvZzsNCiAgICBzLyguKikvJyQxJy8gdW5sZXNzIC9eLT9bXGQuXSskLzsNCn0NCg0K
aWYgKC1mICRyY2ZpbGUpIHsNCiAgICBkbyAiLi8kcmNmaWxlIjsNCn0NCmVsc2lmICgtZiAi
JEVOVnsnTE9HRElSJ30vJHJjZmlsZSIpIHsNCiAgICBkbyAiJEVOVnsnTE9HRElSJ30vJHJj
ZmlsZSI7DQp9DQplbHNpZiAoLWYgIiRFTlZ7J0hPTUUnfS8kcmNmaWxlIikgew0KICAgIGRv
ICIkRU5WeydIT01FJ30vJHJjZmlsZSI7DQp9DQoNCjE7DQo=
--------------319A5C1115F7--
------------------------------
Date: Wed, 19 Feb 1997 13:29:30 GMT
From: alcornd@conterra.com (Doug Alcorn)
Subject: Scoping problem using my() [kinda long]
Message-Id: <330a1697.21624751@news.conterra.com>
I have some code here to convert a number from fractional inches to
decimal inches. The variable $order_slit is preassigned a value of
00260 for example. This means the slit is 2 inches and 60 64ths. I
need to convert this to 2.9375. Here is what I have:
$order_slit = 00260;
if ($order_line[4] eq "LB") {
# get the fraction portion
($order_slit, my $fraction) = ($order_slit =~ m/(\d*){\d\d)/);
# convert to decimal and drop of the leading zero
($fraction /= 64) =~ s/^0*(\.\d*)/$1/;
# concatinate the decimal fraction to the integer inches
$order_slit .= $fraction;
} else {
# $order_slit is in metric convert to decimal inches
$order_slit /= 25.4;
}
Here is what I get when running this code in the debug mode:
DB<2> n
main::(plnt_part_num.pl:57): if ($order_line[4] eq "LB") {
DB<2> n
main::(plnt_part_num.pl:61): ($order_slit,my $fraction) =
($order_slit =~ m/(\d*)(\d\d)/);
DB<2> n
main::(plnt_part_num.pl:64): ($fraction /= 64) =~
s/^0*(\.\d*)/$1/;
DB<2> X fraction
DB<3> X fraction
DB<4>
I want the scope of fraction to be the "then" of the if block. My
question is why is $fraction undefined at this point? I expected it
to be defined to 60. It worked before I put the my() in there. In
fact, I originally used two new variables there instead of changing
the value of $order_slit. I had both of them defined with my() and
that worked.
Thanks for any help you can give.
Doug Alcorn | How can a moral wrong
Hartsville, SC | be a legal right?
doug.alcorn@sonoco.com | It can't. Read the Bible.
Opinions expressed are not necessarily those of my employer.
------------------------------
Date: 20 Feb 1997 12:52:51 GMT
From: Alain.Deckers@man.ac.uk (A. Deckers)
Subject: Re: Sourcing files from my perl script
Message-Id: <slrn5goi93.5bp.Alain.Deckers@nessie.mcc.ac.uk>
In <330114E8.167E@pcocd2.intel.com>,
Charles Peri - EUCD ~ <cperi@pcocd2.intel.com> wrote:
>Hi all,
>
> I am trying to source a file which sets env variables
>from inside my perl script. Since I need these env variables
>later in my program, I have to get the vaiables set by
>the source command.
>
>For example :
>if file, "file_to_source" has
>setenv NAME some_name
>setenv VAR1 varable1
>setenv VAR2 variable2
>
>
>Inside my perl script, I need to source the above file and
>should be able to use later VAR1 and VAR2.
>
>I know if I use system command to source the file, it spawns a
>process to spawn, so all the env variables are lost !!
=======
#!/usr/bin/perl -w
open FILE, "<$file" or die "Couldn't read $file: $!\n";
while (<FILE>) {
if (m|^\s*setenv ([^\s]+) (.+)$|) {
$ENV{$1} = $2;
}
# .. whatever
}
close FILE;
# Any child processes will now see the environment variables you've set.
# ... fork a child process, etc.
=======
HTH,
--
Alain.Deckers@man.ac.uk <URL:http://www.man.ac.uk/%7Embzalgd/>
------------------------------
Date: 8 Jan 97 21:33:47 GMT (Last modified)
From: Perl-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 8 Jan 97)
Message-Id: <null>
Administrivia:
The Perl-Users Digest is a retransmission of the USENET newsgroup
comp.lang.perl.misc. For subscription or unsubscription requests, send
the single line:
subscribe perl-users
or:
unsubscribe perl-users
to almanac@ruby.oce.orst.edu.
To submit articles to comp.lang.perl.misc (and this Digest), send your
article to perl-users@ruby.oce.orst.edu.
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
To request back copies (available for a week or so), send your request
to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
where x is the volume number and y is the issue number.
The Meta-FAQ, an article containing information about the FAQ, is
available by requesting "send perl-users meta-faq". The real FAQ, as it
appeared last in the newsgroup, can be retrieved with the request "send
perl-users FAQ". Due to their sizes, neither the Meta-FAQ nor the FAQ
are included in the digest.
For other requests pertaining to the digest, send mail to
perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
sending perl questions to the -request address, I don't have time to
answer them even if I did know the answer.
------------------------------
End of Perl-Users Digest V7 Issue 979
*************************************