[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 20050420: Unidata decoders - syn2nc bug re Unicode



Kurt,

thanks for the complete bug report, great job.  the "no decoding" pragma
was inserted into the perl decoders but it is commented out because the
earlier version of perl < 5.8.0  Can't locate encoding.pm.  in the next
release tomorrow, there is a note about uncommenting the "no decoding"
pragma.

thanks,
robb...



On Wed, 20 Apr 2005, Unidata Support wrote:

>
> ------- Forwarded Message
>
> >To: <address@hidden>
> >From: "Hanson, Kurt" <address@hidden>
> >Subject: Unidata decoders - syn2nc bug re Unicode
> >Organization: UCAR/Unidata
> >Keywords: 200504201720.j3KHK5v2016989
>
> This is a multi-part message in MIME format.
>
> ------_=_NextPart_001_01C545CD.2E77045F
> Content-Type: multipart/alternative;
>       boundary="----_=_NextPart_002_01C545CD.2E77045F"
>
>
> ------_=_NextPart_002_01C545CD.2E77045F
> Content-Type: text/plain;
>       charset="Windows-1252"
> Content-Transfer-Encoding: quoted-printable
>
> I imagine this will end up in Rob Kambic's inbox... if so, hello again =
> Rob.
>
> We've been occasionally experiencing issues with syn2nc. The problem is =
> that once every week or two, the syn2nc log will suddenly begin filling =
> with messages about Unicode:
>
> Malformed UTF-8 character (unexpected continuation byte 0x8e, with no =
> preceding start byte) in index at /dicast2-papp/DICAST/tmp/syn2nc_308 =
> line 618, <STDIN> chunk 1.
> Malformed UTF-8 character (unexpected non-continuation byte 0x2a, =
> immediately after start byte 0xf6) in index at =
> /dicast2-papp/DICAST/tmp/syn2nc_308 line 618, <STDIN> chunk 1.
>
> The log file grows without bound until finally the disk partition fills, =
> hobbling the entire system.
>
> I think I understand the problem and have a fix. The problem appears to =
> be due to some garbage characters in several of the synoptic messages =
> from today for a single site -- FBSK in Botswana. (I imagine that all of =
> the problems we've ever seen are from this site.)
>
> The issue is that since 5.8.0, Perl has some automatic support for =
> handling Unicode characters. Once Perl sees a character outside of the =
> range [0,127], it assumes that the text data is Unicode rather than =
> ASCII. Since the garbage characters from today's FBSK data did not =
> conform to Unicode rules, Perl itself (rather than syn2nc) generated the =
> messages.
>
> So the magic fix I installed is to put a "no encoding;" line (pragma) =
> into the syn2nc script. This ensures that Perl doesn't try to guess what =
> sort of character set the text is in -- it just passes the data up to =
> the application level in raw form. That's what we need with syn2nc.
>
> Scope:
> * We experience this problem on a Linux RedHat Enterprise 3.0 Athlon =
> system running Perl 5.8.0.
> * We do not experience it on a Solaris 8 system running Perl 5.8.0.
>
> Testing:
> When I pipe the attached synoptic file =
> synoptic.20050420.1200.asc.FBSK_210 into the pristine syn2nc on the =
> Linux system, the log file grows without bound. When I pipe it into my =
> patched version, the log file size remains stable, and the file never =
> gets any Unicode error messages.
>
> Discussion:
> Thinking beyond the low-level Perl issue, I'm not sure what syn2nc =
> should do when it encounters the garbage characters... Nor am I sure =
> what it actually does -- I'd dig into the script itself to find that out =
> but I'm running short on time. What do you think?
>
> Also, I'd be curious to hear whether you see the garbage characters in =
> your FBSK synoptics for today. Its possible but unlikely that the =
> garbage is not due to the FBSK sensor itself but due to some =
> communications issue that is WSI-specific.
>
> I'm attaching a few things:
> * syn2nc.new -- an updated version of syn2nc from the 3.0.9 version of =
> the decoders package.
> * syn2nc.patch -- a diff of my version vs the pristine 3.0.9
> * synoptic.20050420.1200.asc.FBSK_210 -- message #210 from today's =
> synoptic feed, containing garbage characters 0x8e and others in line 6 =
> of the file.
>
> Relevant Perl references:
> * Unicode intro: http://perldoc.perl.org/perluniintro.html
> * encoding pragma: http://perldoc.perl.org/encoding.html
>
> Whew. I think that's about everything! Feel free to contact me.
>
> Kurt Hanson
> Senior Software Engineer & Scientific Analyst
> WSI Corporation
> 400 Minuteman Rd.
> Andover, MA 01810
> my phone: 978.983.6549
> www.wsi.com
>
>  <<syn2nc.new>>  <<syn2nc.patch>>  =
> <<synoptic.20050420.1200.asc.FBSK_210>>=20
>
>
>
>
> ------_=_NextPart_002_01C545CD.2E77045F
> Content-Type: text/html;
>       charset="Windows-1252"
> Content-Transfer-Encoding: quoted-printable
>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
> <HTML>
> <HEAD>
> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
> charset=3DWindows-1252">
> <META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
> 6.5.7226.0">
> <TITLE>Unidata decoders - syn2nc bug re Unicode</TITLE>
> </HEAD>
> <BODY>
> <!-- Converted from text/rtf format -->
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">I imagine this will end up in Rob =
> Kambic's inbox... if so, hello again Rob.</FONT>
> </P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">We've been occasionally experiencing =
> issues with syn2nc. The problem is that once every week or two, the =
> syn2nc log will suddenly begin filling with messages about =
> Unicode:</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Courier New">Malformed UTF-8 character =
> (unexpected continuation byte 0x8e, with no preceding start byte) in =
> index at /dicast2-papp/DICAST/tmp/syn2nc_308 line 618, &lt;STDIN&gt; =
> chunk 1.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Courier New">Malformed UTF-8 character =
> (unexpected non-continuation byte 0x2a, immediately after start byte =
> 0xf6) in index at /dicast2-papp/DICAST/tmp/syn2nc_308 line 618, =
> &lt;STDIN&gt; chunk 1.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">The log file grows without bound until =
> finally the disk partition fills, hobbling the entire system.</FONT>
> </P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">I think I understand the problem and =
> have a fix. The problem appears to be due to some garbage characters in =
> several of the synoptic messages from today for a single site -- FBSK in =
> Botswana. (I imagine that all of the problems we've ever seen are from =
> this site.)</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">The issue is that since 5.8.0, Perl has =
> some automatic support for handling Unicode characters. Once Perl sees a =
> character outside of the range [0,127], it assumes that the text data is =
> Unicode rather than ASCII. Since the garbage characters from today's =
> FBSK data did not conform to Unicode rules, Perl itself (rather than =
> syn2nc) generated the messages.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">So the magic fix I installed is to put =
> a &quot;no encoding;&quot; line (pragma) into the syn2nc script. This =
> ensures that Perl doesn't try to guess what sort of character set the =
> text is in -- it just passes the data up to the application level in raw =
> form. That's what we need with syn2nc.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Scope:</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* We experience this problem on a =
> Linux RedHat Enterprise 3.0 Athlon system running Perl 5.8.0.</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* We do not experience it on a Solaris =
> 8 system running Perl 5.8.0.</FONT>
> </P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Testing:</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">When I pipe the attached synoptic file =
> synoptic.20050420.1200.asc.FBSK_210 into the pristine syn2nc on the =
> Linux system, the log file grows without bound. When I pipe it into my =
> patched version, the log file size remains stable, and the file never =
> gets any Unicode error messages.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Discussion:</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">Thinking beyond the low-level Perl =
> issue, I'm not sure what syn2nc should do when it encounters the garbage =
> characters... Nor am I sure what it actually does -- I'd dig into the =
> script itself to find that out but I'm running short on time. What do =
> you think?</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Also, I'd be curious to hear whether =
> you see the garbage characters in your FBSK synoptics for today. Its =
> possible but unlikely that the garbage is not due to the FBSK sensor =
> itself but due to some communications issue that is =
> WSI-specific.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">I'm attaching a few things:</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* syn2nc.new -- an updated version of =
> syn2nc from the 3.0.9 version of the decoders package.</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* syn2nc.patch -- a diff of my version =
> vs the pristine 3.0.9</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* synoptic.20050420.1200.asc.FBSK_210 =
> -- message #210 from today's synoptic feed, containing garbage =
> characters 0x8e and others in line 6 of the file.</FONT></P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Relevant Perl references:</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* Unicode intro: <A =
> HREF=3D"http://perldoc.perl.org/perluniintro.html";>http://perldoc.perl.or=
> g/perluniintro.html</A></FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">* encoding pragma: <A =
> HREF=3D"http://perldoc.perl.org/encoding.html";>http://perldoc.perl.org/en=
> coding.html</A></FONT>
> </P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Whew. I think that's about everything! =
> Feel free to contact me.</FONT>
> </P>
>
> <P><FONT SIZE=3D2 FACE=3D"Arial">Kurt Hanson</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">Senior Software Engineer &amp; =
> Scientific Analyst</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">WSI Corporation</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">400 Minuteman Rd.</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">Andover, MA 01810</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">my phone: 978.983.6549</FONT>
>
> <BR><FONT SIZE=3D2 FACE=3D"Arial">www.wsi.com</FONT>
> </P>
>
> <P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
> &lt;&lt;syn2nc.new&gt;&gt; </FONT><FONT FACE=3D"Arial" SIZE=3D2 =
> COLOR=3D"#000000"> &lt;&lt;syn2nc.patch&gt;&gt; </FONT><FONT =
> FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
> &lt;&lt;synoptic.20050420.1200.asc.FBSK_210&gt;&gt; </FONT>
> </P>
> <BR>
> <BR>
>
> </BODY>
> </HTML>
> ------_=_NextPart_002_01C545CD.2E77045F--
>
> ------_=_NextPart_001_01C545CD.2E77045F
> Content-Type: application/octet-stream;
>       name="syn2nc.new"
> Content-Transfer-Encoding: base64
> Content-Description: syn2nc.new
> Content-Disposition: attachment;
>       filename="syn2nc.new"
>
> IyEvdXNyL2xvY2FsL2Jpbi9wZXJsCiMKIyAgdXNhZ2U6IHN5bjJuYyBjZGxmaWxlIFtkYXRhZGly
> XSBbeXl5eW1tXSA8IG5jZmlsZQojCiMKdXNlIE5ldENERiA7CnVzZSBUaW1lOjpMb2NhbCA7Cgoj
> IEVuc3VyZSB0aGF0IGNoYXJhY3RlcnMgb24gU1RESU4gYXJlIE5PVCBpbnRlcnByZXRlZCBhcyBV
> bmljb2RlLgojIFRoZW9yZXRpY2FsbHksIHRoaXMgaXMgdW5uZWNlc3NhcnksIHNpbmNlIHN5bm9w
> dGljIG1lc3NhZ2VzIHNob3VsZCBjb250YWluCiMgbm8gY2hhcmF0ZXJzIG91dHNpZGUgb2YgQVND
> SUkgKGFrYSBJU08gODg1OS0xIGFrYSBMYXRpbi0xKSByYW5nZSAwLTEyNy4KIyBIb3dldmVyLCBp
> dCBpcyBwb3NzaWJsZSBmb3Igc2l0ZXMgZXhwZXJpZW5jaW5nIHRlY2huaWNhbCBwcm9ibGVtcyB0
> byB0cmFuc21pdAojIGdhcmJhZ2UgY2hhcmFjdGVycyBvdXRzaWRlIHRoaXMgcmFuZ2UuCm5vIGVu
> Y29kaW5nOwoKIyBwcm9jZXNzIGNvbW1hbmQgbGluZSBzd2l0Y2hlcwp3aGlsZSAoJF8gPSAkQVJH
> VlswXSwgL14tLykgewoJIHNoaWZ0OwogICAgICAgbGFzdCBpZiAvXi0tJC87CgkgICAgIC9eKC12
> KS8gJiYgJHZlcmJvc2UrKzsKfQojIHByb2Nlc3MgaW5wdXQgcGFyYW1ldGVycwppZiggJCNBUkdW
> ID09IDAgKSB7CgkkY2RsZmlsZSA9ICRBUkdWWyAwIF0gOwp9IGVsc2lmKCAkI0FSR1YgPT0gMSAp
> IHsKCSRjZGxmaWxlID0gJEFSR1ZbIDAgXSA7CglpZiggJEFSR1ZbIDEgXSA9fiAvXlxkLyApIHsK
> CQkkeXl5eW1tID0gJEFSR1ZbIDEgXSA7Cgl9IGVsc2UgewoJCSRkYXRhZGlyID0gJEFSR1ZbIDEg
> XSA7Cgl9Cn0gZWxzaWYoICQjQVJHViA9PSAyICkgewoJJGNkbGZpbGUgPSAkQVJHVlsgMCBdIDsK
> CSRkYXRhZGlyID0gJEFSR1ZbIDEgXSA7CgkkeXl5eW1tID0gJEFSR1ZbIDIgXSA7Cn0gZWxzZSB7
> CglkaWUgIlVzYWdlIHdpdGggaW5wdXQgb24gU1RESU46IHN5bjJuYyBbLXZdIGNkbGZpbGUgW2Rh
> dGFkaXJdIFt5eXl5bW1dXG4iOwp9CgojIGNoZWNrIGZvciBjZGwgYW5kIG5ldENERiBuY2dlbgpk
> aWUgIk1pc3NpbmcgY2RsZmlsZSBwYXJhbWV0ZXI6ICQhXG4iIHVubGVzcyAgLWUgJGNkbGZpbGUg
> OwppZiggLWUgInV0aWwvbmNnZW4iICkgewoJJG5jZ2VuID0gInV0aWwvbmNnZW4iIDsKfSBlbHNp
> ZiggLWUgIi91c3IvbG9jYWwvbGRtL3V0aWwvbmNnZW4iICkgewoJJG5jZ2VuID0gIi91c3IvbG9j
> YWwvbGRtL3V0aWwvbmNnZW4iIDsKfSBlbHNpZiggLWUgIi91cGMvbmV0Y2RmL2Jpbi9uY2dlbiIg
> KSB7CgkkbmNnZW4gPSAiL3VwYy9uZXRjZGYvYmluL25jZ2VuIiA7Cn0gZWxzaWYoIC1lICIuL25j
> Z2VuIiApIHsKCSRuY2dlbiA9ICIuL25jZ2VuIiA7Cn0gZWxzZSB7CglvcGVuKCBOQ0dFTiwgIndo
> aWNoIG5jZ2VuIHwiICkgOwoJJG5jZ2VuID0gPE5DR0VOPiA7CgljbG9zZSggTkNHRU4gKSA7CgoJ
> aWYoICRuY2dlbiA9fiAvbm8gbmNnZW4vICkgewoJCWRpZSAiQ2FuJ3QgZmluZCBOZXRDREYgdXRp
> bGl0eSAnbmNnZW4nIGluIFBBVEgsIHV0aWwvbmNnZW4KL3Vzci9sb2NhbC9sZG0vdXRpbC9uY2dl
> biwgL3VwYy9uZXRjZGYvYmluL25jZ2VuLCBvciAuL25jZ2VuIDogJCFcbiIgOwoJfSBlbHNlIHsK
> CQkkbmNnZW4gPSAibmNnZW4iIDsKCX0KfQojIHRoZSBkYXRhIGRpcmVjdG9yeSAKJGRhdGFkaXIg
> PSAiLiIgaWYoICEgJGRhdGFkaXIgKSA7CnN5c3RlbSggIm1rZGlyIC1wICRkYXRhZGlyIiApIGlm
> KCAhIC1lICRkYXRhZGlyICkgOwojIHJlZGlyZWN0IFNURE9VVCBhbmQgU1RERVJSCm9wZW4oIFNU
> RE9VVCwgIj4kZGF0YWRpci9zeW5Mb2cuJCQubG9nIiApIHx8CgkJZGllICJjb3VsZCBub3Qgb3Bl
> biAkZGF0YWRpci9zeW5Mb2cuJCQubG9nOiAkIVxuIiA7Cm9wZW4oIFNUREVSUiwgIj4mU1RET1VU
> IiApIHx8CgkJZGllICJjb3VsZCBub3QgZHVwIHN0ZG91dDogJCFcbiIgOwpzZWxlY3QoIFNUREVS
> UiApIDsgJHwgPSAxIDsKc2VsZWN0KCBTVERPVVQgKSA7ICR8ID0gMSA7CgojIHllYXIgYW5kIG1v
> bnRoCmlmKCAhICR5eXl5bW0gKSB7CgkkdGhleWVhciA9IChnbXRpbWUoKSlbIDUgXSA7CgkkdGhl
> eWVhciA9ICggJHRoZXllYXIgPCAxMDAgPyAkdGhleWVhciA6ICR0aGV5ZWFyIC0gMTAwICkgOwoJ
> JHRoZWRlY2FkZSA9IHNwcmludGYoICIlMDJkIiwgJHRoZXllYXIgKSA7CgkkdGhleWVhciA9ICIy
> MCIgLiBzcHJpbnRmKCAiJTAyZCIsICR0aGV5ZWFyICkgOwoJJHRoZW1vbnRoID0gKGdtdGltZSgp
> KVsgNCBdIDsKCSR0aGVtb250aCsrIDsKCSR0aGVtb250aCA9IHNwcmludGYoICIlMDJkIiwgJHRo
> ZW1vbnRoICkgOwoJJHl5eXltbSA9ICIkdGhleWVhciR0aGVtb250aCIgOwp9IGVsc2UgewoJZGll
> ICJ5eXl5bW0gbXVzdCBiZSA2IGluIGxlbmd0aDogJCFcbiIgaWYoIGxlbmd0aCggJHl5eXltbSAp
> ICE9IDYgKSA7CgkkdGhleWVhciA9IHN1YnN0ciggJHl5eXltbSwgMCwgNCApIDsKCSR0aGVtb250
> aCA9IHN1YnN0ciggJHl5eXltbSwgNCApIDsKCSR0aGVkZWNhZGUgPSBzdWJzdHIoICR5eXl5bW0s
> IDIsIDIgKSA7Cn0KIyBzZXQgZXJyb3IgaGFuZGxpbmcgdG8gdmVyYm9zZSBvbmx5CiRzdGF0dXMg
> PSBOZXRDREY6Om9wdHMoIFZFUkJPU0UgKSA7CgojIHNldCBpbnRlcnJ1cHQgaGFuZGxlcgokU0lH
> eyAnSU5UJyB9ICA9ICdhdGV4aXQnIDsKJFNJR3sgJ0tJTEwnIH0gID0gJ2F0ZXhpdCcgOwokU0lH
> eyAnVEVSTScgfSAgPSAnYXRleGl0JyA7CiRTSUd7ICdRVUlUJyB9ICA9ICdhdGV4aXQnIDsKCiVD
> REwgPSAoCiJyZXBfdHlwZSIsIDAsICJ3bW9JZCIsIDEsICJzdG5OYW1lIiwgMiwgInRpbWVfb2Jz
> IiwgMywgInRpbWVfbm9taW5hbCIsIDQsIAoiTGF0IiwgNSwgIkxvbiIsIDYsICJlbGV2IiwgNywg
> InN0blR5cGUiLCA4LCAibWVhbldpbmQiLCA5LCAiVklTIiwgMTAsIAoiRElSIiwgMTEsICJTUEQi
> LCAxMiwgIlQiLCAxMywgImh1bWlkaXR5IiwgMTQsICJURCIsIDE1LCAiUFJFUyIsIDE2LCAKIlNM
> UCIsIDE3LCAiY2hhcl9QdGVuZCIsIDE4LCAiUHRlbmQiLCAxOSwgIlBSRUNJUF9hbXQiLCAyMCwg
> IlBSRUNJUF9wZXJpb2QiLCAyMSwgIldYcHJlc2VudCIsIDIyLCAiV1hwYXN0IiwgMjMsICJjbG91
> ZENvdmVyIiwgMjQsICJjbG91ZExvdyIsIDI1LCAKImNsb3VkTWlkZGxlIiwgMjYsICJjbG91ZEhp
> Z2giLCAyNywgInNoaXBUcnVlRElSIiwgMjgsICJzaGlwQXZnU1BEIiwgMjksIAoiVHciLCAzMCwg
> IlB3YSIsIDMxLCAiSHdhIiwgMzIsICJId2FfdGVudGhzIiwgMzMsICJzd2VsbERJUjEiLCAzNCwg
> IlBzMSIsIDM1LCAKIkhzMSIsIDM2LCAic3dlbGxESVIyIiwgMzcsICJQczIiLCAzOCwgIkhzMiIs
> IDM5LCAiaWNlVHlwZSIsIDQwLCAiaWNlVGhpY2siLCA0MSwgImljZVJhdGUiLCA0MiwgIlRiIiwg
> NDMsICJJQ0UiLCA0NCwgImljZUNvbmNlbiIsIDQ1LCAiaWNlU3RhZ2UiLCA0NiwgCiJpY2VMYW5k
> IiwgNDcsICJpY2VFZGdlIiwgNDgsICJpY2VTaXR1YXRpb24iLCA0OSwgIlRtYXgiLCA1MCwgIlRt
> aW4iLCA1MSwgCiJncm91bmRTdGF0ZSIsIDUyLCAic25vd0RlcHRoIiwgNTMsICJQUkVDSVBfYW10
> MjQiLCA1NCwgImNsb3VkT2JzdXJlZCIsIDU1LCAKImNsb3VkR2VudXMiLCA1NiwgImNsb3VkSGVp
> Z2h0IiwgNTcsICJyZXBvcnQiLCA1OCApIDsgCgojIHNldCBkZWZhdWx0cwokcmVwX3R5cGVfbGVu
> ID0gNCA7CiRzdG5OYW1lX2xlbiA9IDYgOwokY2xvdWRfbGV2ZWxzID0gMyA7CiRyX2xlbiA9IDI1
> NiA7CgojIG9wZW4gY2RsIGFuZCBnZXQgZGltZW5zaW9ucyBmb3IgdmFyaWFibGVzCm9wZW4oIENE
> TCwgIiRjZGxmaWxlIiApIHx8IGRpZSAiY291bGQgbm90IG9wZW4gJGNkbGZpbGU6ICQhXG4iIDsK
> d2hpbGUoIDxDREw+ICkgewoJaWYoIHMjXlxzKnJlcF90eXBlX2xlblxzKj1ccyooXGR7MSw1fSkj
> IyApIHsKCQkkcmVwX3R5cGVfbGVuID0gJDEgOwoJfSBlbHNpZiggcyNeXHMqc3RuTmFtZV9sZW5c
> cyo9XHMqKFxkezEsNX0pIyMgKSB7CgkJJHN0bk5hbWVfbGVuID0gJDEgOwoJfSBlbHNpZiggcyNe
> XHMqY2xvdWRfbGV2ZWxzXHMqPVxzKihcZHsxLDV9KSMjICkgewoJCSRjbG91ZF9sZXZlbHMgPSAk
> MSA7Cgl9IGVsc2lmKCBzI15ccypyX2xlblxzKj1ccyooXGR7MSw1fSkjIyApIHsKCQkkcl9sZW4g
> PSAkMSA7Cgl9IGVsc2lmKCBzI15ccyp2YXJpYWJsZXMjIyApIHsKCQlsYXN0IDsKCX0KfQokRiA9
> IC05OTk5OSA7CiRBID0gXCRGIDsKJFNSID0gIlwwIiB4ICRyZXBfdHlwZV9sZW4gOwokQVNSID0g
> XCRTUiA7CiRTTiA9ICJcMCIgeCAkc3RuTmFtZV9sZW4gOwokQVNOID0gXCRTTiA7CkBDTCA9ICgg
> JEYsICRGLCAkRiApIDsKQENMID0gKCAtOTk5OTkgKSB4ICggJGNsb3VkX2xldmVscyApIDsKJEFD
> TCA9IFxAQ0wgOwokU1JwdCA9ICJcMCIgeCAkcl9sZW4gOwokQVNScHQgPSBcJFNScHQgOwoKIyBk
> ZWZhdWx0IG5ldENERiByZWNvcmQgc3RydWN0dXJlLCBjb250YWlucyBhbGwgdmFycyBmb3IgdGhl
> IEJVT1kgcmVwb3J0cwpAZGVmYXVsdHJlYyA9ICggJEFTUiwgJEEsICRBU04sICRBLCAkQSwgJEEs
> ICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAKICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRB
> LCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsIAogJEEsICRBLCAk
> QSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRBLCAkQSwgJEEsICRB
> LCAkQSwgJEEsCiAkQSwgJEEsICRBLCAkQSwgJEEsICRBQ0wsICRBQ0wsICRBQ0wsICRBU1JwdCAp
> IDsKCiMgdHdvIGZvbGQgcHVycG9zZSBhcnJheSwgaWYgZW50cnkgPiAwLCB0aGVuIHZhciBpcyBy
> ZXF1ZXN0ZWQgYW5kIGl0J3MgdmFsdWUKIyBpcyB0aGUgcG9zaXRpb24gaW4gdGhlIHJlY29yZCwg
> ZXhjZXB0IGZpcnN0IGVudHJ5CkBXID0gKCAwICkgeCAoICQjZGVmYXVsdHJlYyArMSApIDsKJFdb
> IDAgXSA9IC0xIDsKCiMgY3JlYXRlIHJlY29yZCBzdHJ1Y3R1cmUgYWNjb3JkaW5nIHRvIHZhcmlh
> YmxlcwokaSA9IDAgOwp3aGlsZSggPENETD4gKSB7CglpZiggcyNeXHMqKGNoYXJ8aW50fGxvbmd8
> ZG91YmxlfGZsb2F0KSAoXHd7MSwyNX0pIyMgKSB7CgkJKCAkbnVtYmVyICkgPSAkQ0RMeyAkMiB9
> IDsKCQlwdXNoKCBAcmVjLCAkZGVmYXVsdHJlY1sgJG51bWJlciBdICkgOwoJCSRXWyAkbnVtYmVy
> IF0gPSAkaSsrIDsKCX0KfQpjbG9zZSBDREwgOwp1bmRlZiggQGRlZmF1bHRyZWMgKSA7CnVuZGVm
> KCAlQ0RMICkgOwoKIyBjbG91ZCBiYXNlIGhlaWdodApASEdIVCA9ICggMjUsIDc1LCAxNTAsIDI1
> MCwgNDUwLCA4MDAsIDEyNTAsIDE3NTAsIDIyNTAsIDI1MDAgKSA7CiMgUFJFQ0lQIHBlcmlvZApA
> dFIgPSAoIDAsIDYsIDEyICwxOCwgMjQsIDEsIDIsIDMsIDksIDE1ICkgOwojIHdhdmUgaGVpZ2h0
> CkBXSEdIVCA9ICggMCwgMC4wNSwgMC4zLCAwLjg3NSwgMS44NzUsIDMuMjUsIDUsIDcuNSwgMTEu
> NSwgMTQgKSA7CgojIHJlYWQgaW4gc3RhdGlvbiBkYXRhCmlmKCAtZSAiZXRjL3N5c3Ruc191cGMu
> dGJsIiApIHsKCSRzZmlsZSA9ICJldGMvc3lzdG5zX3VwYy50YmwiIDsKfSBlbHNpZiggLWUgIi4v
> c3lzdG5zX3VwYy50YmwiICkgewoJJHNmaWxlID0gIi4vc3lzdG5zX3VwYy50YmwiIDsKfSBlbHNl
> IHsKCWRpZSAiQ2FuJ3QgZmluZCBzeXN0bnNfdXBjLnRibCBzdGF0aW9uIGZpbGUuOiAkIVxuIiA7
> Cn0Kb3BlbiggU1RBVElPTiwgIiRzZmlsZSIgKSB8fCBkaWUgImNvdWxkIG5vdCBvcGVuICRzZmls
> ZTogJCFcbiIgOwoKd2hpbGUoIDxTVEFUSU9OPiApIHsKCXMjXihcd3szLDZ9KT9ccysoXGR7NCw1
> fSkuezQwfSMjIDsKCSRpZCA9ICQxIDsKCSR3bW9JZCA9ICQyIDsKCSR3bW9JZCA9ICIwIiAuICR3
> bW9JZCBpZiggbGVuZ3RoKCAkd21vSWQgKSA9PSA0ICkgOwoJKCAkTGF0LCAkTG9uLCAkZWxldiAp
> ID0gc3BsaXQgOwoJJExhdCA9IHNwcmludGYoICIlNy4yZiIsICRMYXQgLyAxMDAgKSA7CgkkTG9u
> ID0gc3ByaW50ZiggIiU3LjJmIiwgJExvbiAvIDEwMCkgOwoKCSMgc2V0IHRoZXNlIHZhcnMgKCAk
> d21vSWQsICRMYXQsICRMb24sICRlbGV2ICkgCgkkU1RBVElPTlN7ICIkd21vSWQiIH0gPSAiJExh
> dCAkTG9uICRlbGV2ICRpZCIgOwp9CmNsb3NlIFNUQVRJT04gOwoKIyByZWFkIGluIGxpc3Qgb2Yg
> YWxyZWFkeSBwcm9jZXNzZWQgcmVwb3J0cyBpZiBpdCBleGlzdHMKIyBvcGVuIHN5bi5sc3QsIGxp
> c3Qgb2YgcmVwb3J0cyBwcm9jZXNzZWQgaW4gdGhlIGxhc3QgPyBob3Vycy4KaWYoIC1lICIkZGF0
> YWRpci9zeW4ubHN0IiApIHsKCW9wZW4oIExTVCwgIiRkYXRhZGlyL3N5bi5sc3QiICkgfHwgCgkJ
> ZGllICJjb3VsZCBub3Qgb3BlbiAkZGF0YWRpci9zeW4ubHN0OiAkIVxuIiA7Cgl3aGlsZSggPExT
> VD4gKSB7CgkJKCAkd21vSWQsICR5eXl5bW1kZGhoLCAkcmVjb3JkICkgPSBzcGxpdCA7CgkJJHJw
> dF9oYXNoeyAiJHdtb0lkICR5eXl5bW1kZGhoIiB9ICA9ICRyZWNvcmQgOwoJfQoJY2xvc2UgTFNU
> IDsKfQojIE5vdyBiZWdpbiBwYXJzaW5nIGZpbGUgYW5kIGRlY29kaW5nIG9ic2VydmF0aW9ucyBi
> cmVha2luZyBvbiBjbnRybCBDCiQvID0gIlxjQyIgOwoKIyBtYWluIGxvb3AgICBzZXQgc2VsZWN0
> IHByb2Nlc3NpbmcgaGVyZSBmcm9tIFNURElOClNUQVJUOgp3aGlsZSggMSApIHsKCW9wZW4oIFNU
> RElOLCAnLScgKSA7Cgl2ZWMoJHJpbixmaWxlbm8oU1RESU4pLDEpID0gMTsKCSR0aW1lb3V0ID0g
> MTIwMCA7ICMgMjAgbWludXRlcwoJJG5mb3VuZCA9IHNlbGVjdCggJHJvdXQgPSAkcmluLCB1bmRl
> ZiwgdW5kZWYsICR0aW1lb3V0ICk7CgkjIHRpbWVkIG91dAoJaWYoICEgJG5mb3VuZCApIHsKCQlw
> cmludCAiU2h1dCBkb3duLCB0aW1lIG91dCAyMCBtaW51dGVzXG4iIDsKCQlhdGV4aXQoKSA7Cgl9
> CglhdGV4aXQoICJlb2YiICkgaWYoIGVvZiggU1RESU4gKSApIDsKCgkjIFByb2Nlc3MgZWFjaCBs
> aW5lIG9mIHN5biBidWxsZXRpbnMsIGhlYWRlciBmaXJzdAoJJF8gPSA8U1RESU4+IDsKCWFheHgo
> ICRfICkgaWYoIC9BQVhYLyApIDsKCWF0ZXhpdCggImVvZiIgKSBpZiggZW9mKCBTVERJTiApICkg
> Owp9ICMgZW5kIHdoaWxlKCAxICkKYXRleGl0KCAiZW9mIiApOwpleGl0KCAwICkgOyAjc2hvdWxk
> IG5ldmVyIGdldCBoZXJlCgojIEFBWFggcmVwb3J0cwpzdWIgYWF4eCB7CgooICRfICkgPSBAXyA7
> CgpzI1xjQyMjIDsKcyNcY00jI2cgOwpzI1xjQVxuIyMgOwpzI1xjXiMjZyA7CiMgRWF0IGhlYWRl
> ciBhbmQgZ2V0IGJ1bGxldGluIHRpbWUKcyNcZFxkXGQgXG4jIyA7CnMjXHd7NH1cZHsxLDJ9IFx3
> ezR9IChcZHsyfSkoXGR7Mn0pKFxkezJ9KS4qXG4jIyA7CiRiZGF5ID0gJDEgOwokYmhvdXIgPSAk
> MiA7CiRiaG91ciA9ICIyMyIgaWYoICRiaG91ciBlcSAiMjQiICkgOwokYm1pbiA9ICQzIDsKbmV4
> dCB1bmxlc3MgKCAkYmRheSAmJiBkZWZpbmVkKCAkYmhvdXIgKSAmJiBkZWZpbmVkKCAkYm1pbiAp
> ICkgOwpuZXh0IGlmKCAkYm1pbiA+IDU5IHx8ICRiaG91ciA+IDIzIHx8ICRiZGF5ID4gMzEgKSA7
> CiMgY2hlY2sgZm9yIHZhbGlkIGJ1bGxldGluIHRpbWVzIGFnYWluc3QgY3VycmVudCB0aW1lCiRj
> ZGF5ID0gKGdtdGltZSgpKVsgMyBdIDsKJGNob3VyID0gKGdtdGltZSgpKVsgMiBdIDsKIyBza2lw
> IGJ1bGxldGlucyBvdmVyIDI0IGhvdXJzIG9sZCBvciBpbiB0aGUgZnV0dXJlCmlmKCAkYmRheSA9
> PSAkY2RheSApIHsKCW5leHQgaWYoICRiaG91ciA+ICRjaG91ciApIDsKfSBlbHNlIHsgIyAgJGJk
> YXkgIT0gJGNkYXksIHNraXAgb3ZlciBkYXkgb2xkIHJlcG9ydHMKCW5leHQgaWYoICRiZGF5IDwg
> JGNkYXkgLTEgKSA7CiAJaWYoICRiZGF5ID4gJGNkYXkgKSB7CgkJbmV4dCBpZiggJGNkYXkgIT0g
> MSB8fCAkYmRheSA8IDI4KSA7Cgl9CiAJbmV4dCBpZiggJGJob3VyIDwgJGNob3VyICkgOwp9Cmlm
> KCBzIyhBQVhYKVxzKyhcZFxkKShcZFxkKShcZCk/XHMqXG4jIyApIHsKCSRyZXBfdHlwZSA9ICQx
> IDsKCSRyZGF5ID0gJDIgOwoJJHJob3VyID0gJDMgOwoJaWYoICQ0ICkgewoJCSRXaW5kaWNhdG9y
> ID0gJDQgOwoJfSBlbHNlIHsKCQkkV2luZGljYXRvciA9IDQgOwoJfQp9IGVsc2lmKCBzIyhBQVhY
> KVxzKlxuIyMgKSB7CgkkcmVwX3R5cGUgPSAkMSA7CgkkcmRheSA9ICRiZGF5IDsKCSRyaG91ciA9
> ICRiaG91ciA7CgkkV2luZGljYXRvciA9IDQgOyAjIGRlZmF1bHQgaXMga25vdHMKfSBlbHNlIHsK
> CW5leHQgOwp9CiMgY2hlY2sgZm9yIHZhbGlkIHRpbWVzCm5leHQgdW5sZXNzICgkcmRheSAmJiBk
> ZWZpbmVkKCAkcmhvdXIgKSkgOwpuZXh0IGlmKCAkcmhvdXIgPiAyMyB8fCAkcmRheSA+IDMxICkg
> OwojIHNraXAgcmVwb3J0cyBvdmVyIDI0IGhvdXJzIG9sZAokdG1weXl5eW1tID0gJHl5eXltbSA7
> CmlmKCAkcmRheSA9PSAkY2RheSApIHsKCW5leHQgaWYoICRyaG91ciA+ICRjaG91ciApIDsKfSBl
> bHNlIHsgIyAgJHJkYXkgIT0gJGNkYXksIHNraXAgb3ZlciBkYXkgb2xkIHJlcG9ydHMKCW5leHQg
> aWYoICRyZGF5IDwgKCAkY2RheSAtMSApICkgOwogCWlmKCAkcmRheSA+ICRjZGF5ICkgewoJCW5l
> eHQgaWYoICRjZGF5ICE9IDEgfHwgJHJkYXkgPCAyOCkgOwoJCSMgY2RheSA9IDEsIHJlc2V0IG1v
> bnRoIGFuZCB5ZWFyCgkJJHRtcG1vbnRoID0gc3ByaW50ZiggIiUwMmQiLCAkdGhlbW9udGggLTEg
> KSA7CgkJaWYoICR0bXBtb250aCA9PSAwICkgewoJCQkkdG1wbW9udGggPSAiMTIiIDsKCQkJJHRt
> cHllYXIgPSBzcHJpbnRmKCAiJTA0ZCIsICR0aGV5ZWFyIC0xICk7CgkJfSBlbHNlIHsKCQkJJHRt
> cHllYXIgPSAkdGhleWVhciA7CgkJfQoJCSR0bXB5eXl5bW0gPSAkdG1weWVhciAuICAkdG1wbW9u
> dGggOwoJfQoJbmV4dCBpZiggJHJob3VyIDwgJGNob3VyICkgOwp9CiR5eXl5bW1kZGhoID0gJHRt
> cHl5eXltbSAuIHNwcmludGYoICIlMDJkIiwgJHJkYXkgKSAuIHNwcmludGYoICIlMDJkIiwgJHJo
> b3VyICk7CiMgU2VwZXJhdGUgYnVsbGV0aW5zIGludG8gcmVwb3J0cyAKaWYoIC89XG4vICkgewoJ
> cyM9XHMrXG4jPVxuI2cgOwp9IGVsc2UgewoJcyNcbiMgI2cgOwp9CkByZXBvcnRzID0gc3BsaXQo
> IC89XG4vICkgOwoKZm9yICggQHJlcG9ydHMgKSB7ICMgUHJvY2VzcyBlYWNoIHJlcG9ydCBpbiB0
> aGUgYnVsbGV0aW4KCW5leHQgaWYoIC9eXG58TklMfE1JUy8gKSA7CglzI1xuIyAjZyA7CglzI1xz
> KyMgI2cgOwoJcyMtXHMqIyNnIDsKCSMgc2F2ZSBvcmlnaW5hbCByZXBvcnQgCgkkcmVwb3J0ID0g
> IkFBWFggIiAuICRfIDsKCSRfIC49ICAiICIgOwoKCSMgZGVjb2RlIFNlY3Rpb24gMCAKCXMjXihc
> ZHs1fSkgIyMgOwoJJHdtb0lkID0gJDEgOwoJbmV4dCB1bmxlc3MoIGRlZmluZWQoICR3bW9JZCAp
> ICkgOwoJIyBleHRyYWN0IExhdCwgTG9uLCBlbGV2LCBzdG5OYW1lCglpZiggZGVmaW5lZCggJFNU
> QVRJT05TeyAiJHdtb0lkIiB9ICkgKSB7CgkJKCAkTGF0LCAkTG9uLCAkZWxldiwgJHN0bk5hbWUg
> KSA9CgkJCXNwbGl0KCAiICIsICRTVEFUSU9OU3sgIiR3bW9JZCIgfSApIDsKCQlpZiggZGVmaW5l
> ZCggJHN0bk5hbWUgKSApIHsKCQkJJHN0bk5hbWUgPSBwYWRzdHIoICRzdG5OYW1lLCAkc3RuTmFt
> ZV9sZW4gKSA7IAoJCX0gZWxzZSB7CgkJCXVuZGVmKCAkc3RuTmFtZSApIDsKCQl9Cgl9CgkjIGRl
> Y29kZSBTZWN0aW9uIDEgCgluZXh0IHVubGVzcyggcyNeKFxkKShcZCkoXGR8LykoXGRcZHwuLikg
> IyMgKSA7CgkkUFJFQ0lQX2FtdCA9IDAgaWYoICQxID09IDMgKSA7ICMgcHJlY2lwaXRhdGlvbiBp
> bmRpY2F0b3IKCSRzdG5UeXBlID0gJDIgOwoJJGNsb3VkSGVpZ2h0ID0gJEhHSFRbICQzIF0gaWYo
> ICQzIG5lICIvIiApIDsKCSR0bXAgPSAkNCA7CglpZiggJHRtcCA9fiBtI1xkXGQjICkgewoJCWlm
> KCAkdG1wIDwgNTEgKSB7CgkJCSRWSVMgPSAkdG1wICogMC4xIDsKCQl9IGVsc2lmKCAkdG1wIDwg
> ODEgKSB7CgkJCSRWSVMgPSAkdG1wIC01MCA7CgkJfSBlbHNpZiggJHRtcCA8IDkwICkgewoJCQkk
> VklTID0gKCggJHRtcCAtODAgKSAqIDUgKSArIDMwIDsKCQl9IGVsc2lmKCAkdG1wID09IDkwICkg
> ewoJCQkkVklTID0gMC4wMjUgOwoJCX0gZWxzaWYoICR0bXAgPT0gOTEgKSB7CgkJCSRWSVMgPSAw
> LjA1IDsKCQl9IGVsc2lmKCAkdG1wID09IDkyICkgewoJCQkkVklTID0gMC4zIDsKCQl9IGVsc2lm
> KCAkdG1wID09IDkzICkgewoJCQkkVklTID0gMC41IDsKCQl9IGVsc2lmKCAkdG1wID09IDk0ICkg
> ewoJCQkkVklTID0gMSA7CgkJfSBlbHNpZiggJHRtcCA9PSA5NSApIHsKCQkJJFZJUyA9IDIgOwoJ
> CX0gZWxzaWYoICR0bXAgPT0gOTYgKSB7CgkJCSRWSVMgPSA0IDsKCQl9IGVsc2lmKCAkdG1wID09
> IDk3ICkgewoJCQkkVklTID0gMTAgOwoJCX0gZWxzaWYoICR0bXAgPT0gOTggKSB7CgkJCSRWSVMg
> PSAyMCA7CgkJfSBlbHNpZiggJHRtcCA9PSA5OSApIHsKCQkJJFZJUyA9IDUwIDsKCQl9Cgl9Cglu
> ZXh0IHVubGVzcyggcyNeKFxkfC8pKFxkXGR8Ly8pKFxkXGR8Ly8pICMjICkgOwoJJGNsb3VkQ292
> ZXIgPSAkMSBpZiggJDEgIG5lICIvIiApIDsKCWlmKCAkMiBuZSAiLy8iICkgewoJCSRESVIgPSAk
> MiAqIDEwIDsKCQkkU1BEID0gJDMgOwoJCWlmKCAkU1BEID09IDk5ICkgewoJCQlzIzAwKFxkezN9
> KSAjIyA7CgkJCSRTUEQgPSAkMSA7CgkJfQoJCSRTUEQgKj0gMC41MTQ0IGlmKCAkV2luZGljYXRv
> ciA+IDIgKSA7Cgl9IAoJcyMwMC8vLyAjIyA7ICMgZWF0IFNQRCBwbGFjZSBob2xkZXIgaWYgbmVj
> ZXNzYXJ5Cgl3aGlsZSggMSApIHsKCQlpZiggcyNeMSgoXGQpKFxkezN9KXwvLy8vKSAjIyApIHsK
> CQkJaWYoICQxIG5lICIvLy8vIiApIHsKCQkJCSRUID0gJDMgKiAwLjEwIDsKCQkJCSRUICo9IC0x
> LjAgaWYoICQyID09IDEgKSA7CgkJCX0KCQl9IAoJCWlmKCBzI14yOShcZHszfXwvLy8pICMjICkg
> ewoJCQkkaHVtaWRpdHkgPSAkMSBpZiggJDEgbmUgIi8vLyIgKSA7CgkJfSAKCQlpZiggcyNeMigo
> MHwxfDkpKFxkezIsM30pKC8pP3wvLy8vKSAjIyApIHsKCQkJaWYoICQxIG5lICIvLy8vIiApIHsK
> CQkJCWlmKCAkNCBuZSAiLyIgKSB7CgkJCQkJJFREID0gJDMgKiAwLjEwIDsKCQkJCX0gZWxzZSB7
> CgkJCQkJJFREID0gJDMgOwoJCQkJfQoJCQkJJFREICo9IC0xLjAgaWYoICQyID09IDEgKSA7CgkJ
> CX0KCQl9CgkJbGFzdCBpZiggbSNeMzMzfF40NDR8XjU1NSMgKSA7IAoJCWlmKCBzI14zKFxkezR9
> fC8vLy8pICMjICkgewoJCQlpZiggJDEgbmUgIi8vLy8iICkgewoJCQkJJFBSRVMgPSAkMSAqIDAu
> MTAgOwoJCQkJJFBSRVMgKz0gMTAwMCBpZiggJFBSRVMgPCAxMDAgKSA7CgkJCX0KCQl9CgkJbGFz
> dCBpZiggbSNeNDQ0fF41NTUjICkgOyAKCQlpZiggcyNeNChcZHs0fXwvLy8vKSAjIyApIHsKCQkJ
> aWYoICQxIG5lICIvLy8vIiApIHsKCQkJCSRTTFAgPSAkMSAqIDAuMTAgOwoJCQkJJFNMUCArPSAx
> MDAwIGlmKCAkU0xQIDwgMTAwICkgOwoJCQl9CgkJfQoJCWxhc3QgaWYoIG0jXjU1NSMgKSA7IAoJ
> CWlmKCBzI141KFxkfC8pKFxkezN9fC8vLykgIyMgKSB7CgkJCSRjaGFyX1B0ZW5kID0gJDEgaWYo
> ICQxIG5lICIvIiApIDsKCQkJJFB0ZW5kID0gJDIgKiAwLjEwIGlmKCAkMiBuZSAiLy8vIiApIDsK
> CQl9CgkJaWYoIHMjXjYoKFxkezN9KShcZCl8Ly8vLykgIyMgKSB7CgkJCWlmKCAkMSBuZSAiLy8v
> LyIgKSB7CgkJCQlpZiggJDIgPCA5OTAgKSB7CgkJCQkJJFBSRUNJUF9hbXQgPSAkMiA7CgkJCQl9
> IGVsc2UgewoJCQkJCSRQUkVDSVBfYW10ID0gKCAkMiAtOTkwICkgKiAwLjEgOwoJCQkJfQoJCQkJ
> JFBSRUNJUF9wZXJpb2QgPSAkdFJbICQzIF0gOwoJCQl9CgkJfQoJCWlmKCBzI143KFxkXGR8Ly8p
> KFxkXGR8Ly8pICMjICkgewoJCQkkV1hwcmVzZW50ID0gJDEgaWYoICQxIG5lICIvLyIgKSA7CgkJ
> CSRXWHBhc3QgPSAkMiBpZiggJDIgbmUgIi8vIiApIDsKCQl9CgkJaWYoIHMjXjgoXGR8LykoXGR8
> LykoXGR8LykoXGR8LykgIyMgKSB7CgkJCSRjbG91ZENvdmVyID0gJDEgaWYoICQxIG5lICIvIiAp
> IDsKCQkJJGNsb3VkTG93ID0gJDIgaWYoICQyIG5lICIvIiApIDsKCQkJJGNsb3VkTWlkZGxlID0g
> JDMgaWYoICQzIG5lICIvIiApIDsKCQkJJGNsb3VkSGlnaCA9ICQ0IGlmKCAkNCBuZSAiLyIgKSA7
> CgkJfQoJCWlmKCBzI145KChcZFxkKShcZFxkKXwvLy8vKSAjIyApIHsKCQkJaWYoICQxIG5lICIv
> Ly8vIiApIHsKCQkJCSRyaG91ciA9ICQyIDsKCQkJCSRybWluID0gJDMgOwoJCQkJJHRpbWVfb2Jz
> ID0gdGhlVGltZSggIm9icyIgKSA7CgkJCQkkdGltZV9ub21pbmFsID0gdGhlVGltZSggIm5vbWlu
> YWwiICkgOwoJCQl9CgkJfQoJCWxhc3QgOwoJfSAjIGVuZCBTZWN0aW9uIDEKCgkjIGRlY29kZSBT
> ZWN0aW9uIDIgCgl3aGlsZSggISBtI14zMzN8XjQ0NHxeNTU1IyApIHsKCQlpZiggcyNeMjIyKC4p
> KC4pICMjICkgewoJCQlpZiggJDEgbmUgIi8iICYmICQxICE9IDkgKSB7CgkJCQkkc2hpcFRydWVE
> SVIgPSAkMSAqIDQ1IDsKCQkJCWlmKCAkMiAhPSAwICkgewoJCQkJCSRzaGlwQXZnU1BEID0gKCgg
> JDIgLTEgKSAqIDUgKSArMyA7CgkJCQl9IGVsc2UgewoJCQkJCSRzaGlwQXZnU1BEID0gMCA7CgkJ
> CQl9CgkJCX0KCQl9IGVsc2UgeyAjIHNlY3Rpb24gMiBoZWFkZXIgbWlzc2luZwoJCQlsYXN0IDsK
> CQl9CgkJaWYoIHMjXjAoXGR8LykoXGR7M318Ly8vKSAjIyApIHsKCQkJJFR3ID0gJDIgKiAwLjEw
> IGlmKCAkMiBuZSAiLy8vIiApIDsgIyBXYXRlciB0ZW1wCgkJCSRUdyAqPSAtMS4wIGlmKCAkMSBu
> ZSAiLyIgJiYgKCAkMSAlIDIgKSA9PSAxICkgOwoJCX0KCQlpZiggcyNeMShcZFxkfC8vKShcZFxk
> fC8vKSAjIyApIHsKCQkJIyBQZXJpb2Qgb2Ygd2F2ZXMgaW4gc2VjcyBieSBpbnN0cnVtZW50CgkJ
> CSRQd2EgPSAkMSBpZiggJDEgbmUgIi8vIiApIDsgCgkJCSMgSGVpZ2h0IG9mIHdhdmVzIGluIC41
> IG1ldGVycyB1bml0cyBieSBpbnN0cnVtZW50CgkJCSRId2EgPSAkMiAvIDIuMCBpZiggJDIgbmUg
> Ii8vIiApIDsgCgkJfQoJCWlmKCBzI14yKFxkXGR8Ly8pKFxkXGR8Ly8pICMjICkgewoJCQkjIFBl
> cmlvZCBvZiB3YXZlcyBpbiBzZWNzCgkJCSRQd2EgPSAkMSBpZiggJDIgbmUgIi8vIiApIDsgCgkJ
> CSMgSGVpZ2h0IG9mIHdhdmVzIGluIC41IG1ldGVycyB1bml0cwoJCQkkSHdhID0gJDIgLyAyLjAg
> aWYoICQyIG5lICIvLyIgKSA7IAoJCX0KCQlsYXN0IGlmKCBtI14zMzN8XjQ0NHxeNTU1IyApIDsK
> CQlpZiggcyNeMyhcZFxkKShcZFxkfC8vKSAjIyApIHsKCQkJJHN3ZWxsRElSMSA9ICQxICogMTAg
> aWYoICQxICE9IDk5ICkgOwoJCQkkc3dlbGxESVIyID0gJDIgKiAxMCBpZiggJDIgbmUgIi8vIiAm
> JiAkMiAhPSA5OSApIDsKCQkJaWYoIHMjXjQoXGRcZHwvLykoXGRcZHwvLykgIyMgKSB7CgkJCQkj
> IFBlcmlvZCBvZiBzd2VsbCBpbiBzZWNzCgkJCQkkUHMxID0gJDEgaWYoICQxICBuZSAiLy8iICkg
> OyAKCQkJCSMgSGVpZ2h0IG9mIHN3ZWxsIGluIC41IG1ldGVycyB1bml0cwoJCQkJJEhzMSA9ICQy
> IC8gMi4wIGlmKCAkMiAgbmUgIi8vIiApIDsgCgkJCX0KCQkJaWYoIGRlZmluZWQoICRzd2VsbERJ
> UjIgKSAmJiBzI141KFxkXGQpKFxkXGQpICMjICkgewoJCQkJIyBQZXJpb2Qgb2Ygc3dlbGwgaW4g
> c2VjcwoJCQkJJFBzMiA9ICQxIDsgCgkJCQkjIEhlaWdodCBvZiBzd2VsbCBpbiAuNSBtZXRlcnMg
> dW5pdHMKCQkJCSRIczIgPSAkMiAvIDIuMCA7IAoJCQl9CgkJfQoJCXMjXjUvLy8vICMjIDsKCQlp
> ZiggcyNeNihcZHwvKShcZFxkfC8vKShcZHwvKSAjIyApIHsKCQkJIyBUeXBlLCBUaGlja25lc3Ms
> IGFuZCBSYXRlIG9mIElDRQoJCQkkaWNlVHlwZSA9ICQxIGlmKCAkMSBuZSAiLyIgKSA7IAoJCQkk
> aWNlVGhpY2sgPSAkMiBpZiggJDIgbmUgIi8vIiApIDsgCgkJCSRpY2VSYXRlID0gJDMgaWYoICQz
> IG5lICIvIiApIDsgCgkJfQoJCWlmKCBzI143MChcZHszfXwvLy8pICMjICkgewoJCQkkSHdhX3Rl
> bnRocyA9ICQxICogMC4xMCBpZiggJDEgbmUgIi8vLyIgKSA7CgkJfQoJCWlmKCBzI144KFxkfC8p
> KFxkezN9fC8vLykgIyMgKSB7CgkJCSRUYiA9ICQyICogMC4xMCBpZiggJDIgbmUgIi8vLyIgKSA7
> CgkJCSRUYiAqPSAtMSBpZiggJDEgbmUgIi8iICYmICQxICE9IDAgJiYgJDEgIT0gNSApIDsKCQl9
> CgkJJElDRSA9IDEgaWYoIHMjSUNFICMjICkgOwoJCWxhc3QgaWYoIG0jXjMzM3xeNDQ0fF41NTUj
> ICkgOwoJCWlmKCBzI14oXGR8LykoXGR8LykoXGR8LykoXGR8LykoXGR8LykgIyMgKSB7CgkJCSRp
> Y2VDb25jZW4gPSAkMSBpZiggJDEgbmUgIi8iICkgOwoJCQkkaWNlU3RhZ2UgPSAkMiBpZiggJDIg
> bmUgIi8iICkgOwoJCQkkaWNlTGFuZCA9ICQzIGlmKCAkMyBuZSAiLyIgKSA7CgkJCSRpY2VFZGdl
> ID0gJDQgaWYoICQ0IG5lICIvIiApIDsKCQkJJGljZVNpdHVhdGlvbiA9ICQ1IGlmKCAkNSBuZSAi
> LyIgKSA7CgkJfQoJCWxhc3Q7Cgl9ICMgZW5kIFNlY3Rpb24gMgoKCSMgZGVjb2RlIFNlY3Rpb24g
> MyAKCXdoaWxlKCAhIG0jXjQ0NHxeNTU1IyApIHsKCQlsYXN0IHVubGVzcyggcyNeMzMzICMjICkg
> OwoJCXMjXjAuLi4uICMjIDsKCQlpZiggcyNeMSgoMHwxfDkpKFxkezN9KXwvLy8vKSAjIyApIHsK
> CQkJaWYoICQxIG5lICIvLy8vIiApIHsKCQkJCSRUbWF4ID0gJDMgKiAwLjEwIDsKCQkJCSRUbWF4
> ICo9IC0xLjAgaWYoICQyID09IDEgKSA7CgkJCX0KCQl9CgkJaWYoIHMjXjIoKDB8MXw5KShcZHsz
> fSl8Ly8vLykgIyMgKSB7CgkJCWlmKCAkMSBuZSAiLy8vLyIgKSB7CgkJCQkkVG1pbiA9ICQzICog
> MC4xMCA7CgkJCQkkVG1pbiAqPSAtMS4wIGlmKCAkMiA9PSAxICkgOwoJCQl9CgkJfQoJCXMjXjMo
> XGQpKFxkezN9fC8vLykgIyMgOwoJCWxhc3QgaWYoIG0jXjQ0NHxeNTU1IyApIDsKCQlpZiggcyNe
> NChcZCkoXGR7M318Ly8vKSAjIyApIHsKCQkJJGdyb3VuZFN0YXRlID0gJDEgOwoJCQkkc25vd0Rl
> cHRoID0gJDIgOwoJCX0KCQlsYXN0IGlmKCBtI141NTUjICkgOwoJCSRjb3VudCA9IDAgOwoJCXdo
> aWxlKCAhIG0jXjZ8Xjd8Xjh8XjkjICkgewoJCQlzI14uezV9ICMjIDsKCQkJbGFzdCBpZiggJGNv
> dW50KysgPiAxMCB8fCAhICRfICkgOwoJCX0KCQlpZiggcyNeNigoXGR7M30pKFxkKXwvLy8vKSAj
> IyApIHsKCQkJaWYoICQxIG5lICIvLy8vIiApIHsKCQkJCWlmKCAkMiA8IDk5MCApIHsKCQkJCQkk
> UFJFQ0lQX2FtdCA9ICQyIDsKCQkJCX0gZWxzZSB7CgkJCQkJJFBSRUNJUF9hbXQgPSAoICQyIC05
> OTAgKSAqIDAuMSA7CgkJCQl9CgkJCQkkUFJFQ0lQX3BlcmlvZCA9ICR0UlsgJDMgXSA7CgkJCX0K
> CQl9CgkJaWYoIHMjXjcoXGR7NH18Ly8vLykgIyMgKSB7CgkJCSRQUkVDSVBfYW10MjQgPSAkMSAq
> IDAuMSAgaWYoICQxIG5lICIvLy8vIiAmJgoJCQkJJDEgIT0gOTk5OSApIDsKCQl9CgkJJGNvdW50
> ID0gMCA7CgkJd2hpbGUoICEgbSM4MDAwMCMgJiYgcyNeOChcZCkoXGQpKFxkXGQpICMjICkgewoJ
> CQlpZiggJGNvdW50ID09IDAgKSB7CgkJCQlAY2xvdWRPYnN1cmVkID0gKCAkRiApIHggKCAkY2xv
> dWRfbGV2ZWxzICkgOwoJCQkJQGNsb3VkR2VudXMgPSAoICRGICkgeCAoICRjbG91ZF9sZXZlbHMg
> KSA7CgkJCQlAY2xvdWRIZWlnaHQgPSAoICRGICkgeCAoICRjbG91ZF9sZXZlbHMgKSA7CgkJCX0K
> CQkJJGNsb3VkT2JzdXJlZFsgJGNvdW50IF0gPSAkMSA7IAoJCQkkY2xvdWRHZW51c1sgJGNvdW50
> IF0gPSAkMiA7IAoJCQkkY2xvdWRIZWlnaHRbICRjb3VudCBdID0gZ2V0SGVpZ2h0KCAkMyApIDsK
> CQkJbGFzdCBpZiggJGNvdW50KysgPT0gMiB8fCAhICRfICkgOwoJCX0KCQkkbWVhbldpbmQgPSAk
> MSAgaWYoIHMjXjkxMihcZFxkKSAjIyApIDsKCQkkSHdhX3RlbnRocyA9ICRXSEdIVFsgJDEgXSAg
> aWYoIHMjXjkyNChcZCkoXGQpICMjICkgOwoJCWxhc3QgOwoJfSAjIGVuZCBTZWN0aW9uIDMKCgkj
> IFNlY3Rpb24gNCBub3QgZGVjb2RlZAoJI3doaWxlKCAhIG0jXjU1NSMgKSB7CgkjCXMjXjQ0NCAj
> IyA7CgkjCXMjKC4uLi4uKSAjIyA7CgkjCXByaW50ICJHcm91cCA0NDQgJDEgbm90IGRlY29kZWRc
> biIgOwoJIwlsYXN0IDsKCSN9ICMgZW5kIFNlY3Rpb24gNAoKCSMgU2VjdGlvbiA1IG5vdCBkZWNv
> ZGVkCgoJIyBvdXRwdXQgcmVjb3JkCglkb091dHB1dCgpIDsKCXVuZGVmKCAkcm1pbiApIDsKfSAj
> IGVuZCBmb3JlYWNoIHJlcG9ydAp9ICMgZW5kIGFheHggcmVwb3J0CgojIG91dHB1dCBhIHJlcG9y
> dApzdWIgZG9PdXRwdXQgewoKcHJpbnR2YXJzKCkgaWYoICR2ZXJib3NlICkgOwoKIyB3ZSBoYXZl
> IGEgbGVnYWwgcmVwb3J0LCBvcGVuIG9yIHN3aXRjaCB0byBhIE5ldGNkZiBmaWxlCiRzdGF0dXMg
> PSBkb05ldCggKSA7CgppZiggJHN0YXR1cyApIHsgIyBPSyB0byB3cml0ZSBkYXRhCgkjIHNldCB2
> YXJpYWJsZXMgaW50byBkYXRhcmVmCglzZXR2YXJzKCkgOwoJIyByZXBvcnQgYWxyZWFkeSBlbnRl
> cmVkLCByZXdyaXRlIHRoZSByZWNvcmQgd2l0aCBuZXcgZGF0YQoJaWYoIGRlZmluZWQoICRycHRf
> aGFzaHsgIiR3bW9JZCAkeXl5eW1tZGRoaCIgfSApICkgewoJCSggJHJlY29yZCwgJG50aW1lICkg
> PQoJCQlzcGxpdCggIiAiLCAkcnB0X2hhc2h7ICIkd21vSWQgJHl5eXltbWRkaGgiIH0gKSA7Cgl9
> IGVsc2UgeyAjIG5ldyByZXBvcnQsIG5leHQgcmVjb3JkIG51bWJlcgoJCSRyZWNvcmQgPSAkcmVj
> bnVtIDsKCQkkcnB0X2hhc2h7ICIkd21vSWQgJHl5eXltbWRkaGgiIH0gPSAkcmVjb3JkIDsKCQkk
> cmVjbnVtKysgOwoJfQoJIyBlbnRlciByZXBvcnQgZGF0YSBpbnRvIE5ldENERiBmaWxlCgkkc3Rh
> dHVzID0gTmV0Q0RGOjpyZWNwdXQoICRuY2lkLCAkcmVjb3JkLCBbIEBkYXRhcmVmIF0gKTsKCWlm
> KCAkc3RhdHVzICkgewoJCXByaW50ICJOZXRDREY6OnJlY3B1dCBzdGF0dXMgPSAkc3RhdHVzXG4i
> IDsKCQljaG9wICRyZXBvcnQgd2hpbGUoIGluZGV4KCAkcmVwb3J0LCAiXDAiICkgIT0gLTEgKSA7
> CgkJcHJpbnQgIiRuY2ZpbGVcbiRyZXBvcnRcbiIgOwoJfQp9CiMgdW5kZWZpbmUgdmFycwp1bmRl
> ZmluZXZhcnMoKSA7Cn0gICMgZW5kIGRvT3V0cHV0CgojIHVuZGVmaW5lIGFsbCByZXBvcnQgdmFy
> cwpzdWIgdW5kZWZpbmV2YXJzCnsKIyByZXBvcnQgdmFycwp1bmRlZiggJHJlcG9ydCApIDsKdW5k
> ZWYoICR3bW9JZCApIDsKdW5kZWYoICRzdG5OYW1lICkgOwp1bmRlZiggJHRpbWVfb2JzICkgOwp1
> bmRlZiggJExhdCApIDsKdW5kZWYoICRMb24gKSA7CnVuZGVmKCAkZWxldiApIDsKdW5kZWYoICRz
> dG5UeXBlICkgOwp1bmRlZiggJG1lYW5XaW5kICkgOwp1bmRlZiggJFZJUyApIDsKdW5kZWYoICRE
> SVIgKSA7CnVuZGVmKCAkU1BEICkgOwp1bmRlZiggJFQgKSA7CnVuZGVmKCAkaHVtaWRpdHkgKSA7
> CnVuZGVmKCAkVEQgKSA7CnVuZGVmKCAkUFJFUyApIDsKdW5kZWYoICRTTFAgKSA7CnVuZGVmKCAk
> Y2hhcl9QdGVuZCApIDsKdW5kZWYoICRQdGVuZCApIDsKdW5kZWYoICRQUkVDSVBfYW10ICkgOwp1
> bmRlZiggJFBSRUNJUF9wZXJpb2QgKSA7CnVuZGVmKCAkV1hwcmVzZW50ICkgOwp1bmRlZiggJFdY
> cGFzdCApIDsKdW5kZWYoICRjbG91ZENvdmVyICkgOwp1bmRlZiggJGNsb3VkTG93ICkgOwp1bmRl
> ZiggJGNsb3VkTWlkZGxlICkgOwp1bmRlZiggJGNsb3VkSGlnaCApIDsKdW5kZWYoICRzaGlwVHJ1
> ZURJUiApIDsKdW5kZWYoICRzaGlwQXZnU1BEICkgOwp1bmRlZiggJFR3ICkgOwp1bmRlZiggJFB3
> YSApIDsKdW5kZWYoICRId2EgKSA7CnVuZGVmKCAkSHdhX3RlbnRocyApIDsKdW5kZWYoICRzd2Vs
> bERJUjEgKSA7CnVuZGVmKCAkUHMxICkgOwp1bmRlZiggJEhzMSApIDsKdW5kZWYoICRzd2VsbERJ
> UjIgKSA7CnVuZGVmKCAkUHMyICkgOwp1bmRlZiggJEhzMiApIDsKdW5kZWYoICRpY2VUeXBlICkg
> Owp1bmRlZiggJGljZVRoaWNrICkgOwp1bmRlZiggJGljZVJhdGUgKSA7CnVuZGVmKCAkVGIgKSA7
> CnVuZGVmKCAkSUNFICkgOwp1bmRlZiggJGljZUNvbmNlbiApIDsKdW5kZWYoICRpY2VTdGFnZSAp
> IDsKdW5kZWYoICRpY2VMYW5kICkgOwp1bmRlZiggJGljZUVkZ2UgKSA7CnVuZGVmKCAkaWNlU2l0
> dWF0aW9uICkgOwp1bmRlZiggJFRtYXggKSA7CnVuZGVmKCAkVG1pbiApIDsKdW5kZWYoICRncm91
> bmRTdGF0ZSApIDsKdW5kZWYoICRzbm93RGVwdGggKSA7CnVuZGVmKCAkUFJFQ0lQX2FtdDI0ICkg
> Owp1bmRlZiggQGNsb3VkT2JzdXJlZCApIDsKdW5kZWYoIEBjbG91ZEdlbnVzICkgOwp1bmRlZigg
> QGNsb3VkSGVpZ2h0ICkgOwp9ICMgZW5kIG9mIHVuZGVmaW5ldkFSUwoKIyBzZXR2YXJzIGludG8g
> cmVjb3JkCnN1YiBzZXR2YXJzIHsKCiRyZXBvcnQgPSBwYWRzdHIoICRyZXBvcnQsICRyX2xlbiAp
> IDsKCnVuZGVmKCBAZGF0YXJlZiApIDsKCkBkYXRhcmVmID0gQHJlYyA7CgojIHJlcG9ydCB2YXJz
> CiRkYXRhcmVmWyAkV1sgMCBdIF0gPSBcJHJlcF90eXBlIGlmKCAkV1sgMCBdICE9IC0xICkgOwok
> ZGF0YXJlZlsgJFdbIDEgXSBdID0gXCR3bW9JZCBpZiggJFdbIDEgXSAmJiBkZWZpbmVkKCAkd21v
> SWQgKSApIDsKJGRhdGFyZWZbICRXWyAyIF0gXSA9IFwkc3RuTmFtZSBpZiggJFdbIDIgXSAmJiBk
> ZWZpbmVkKCAkc3RuTmFtZSApICkgOwokZGF0YXJlZlsgJFdbIDMgXSBdID0gXCR0aW1lX29icyBp
> ZiggJFdbIDMgXSAmJiBkZWZpbmVkKCAkdGltZV9vYnMgKSApIDsKJGRhdGFyZWZbICRXWyA0IF0g
> XSA9IFwkdGltZV9ub21pbmFsIGlmKCAkV1sgNCBdICYmIGRlZmluZWQoICR0aW1lX25vbWluYWwg
> KSApIDsKJGRhdGFyZWZbICRXWyA1IF0gXSA9IFwkTGF0IGlmKCAkV1sgNSBdICYmIGRlZmluZWQo
> ICRMYXQgKSApIDsKJGRhdGFyZWZbICRXWyA2IF0gXSA9IFwkTG9uIGlmKCAkV1sgNiBdICYmIGRl
> ZmluZWQoICRMb24gKSApIDsKJGRhdGFyZWZbICRXWyA3IF0gXSA9IFwkZWxldiBpZiggJFdbIDcg
> XSAmJiBkZWZpbmVkKCAkZWxldiApICkgOwokZGF0YXJlZlsgJFdbIDggXSBdID0gXCRzdG5UeXBl
> IGlmKCAkV1sgOCBdICYmIGRlZmluZWQoICRzdG5UeXBlICkgKSA7CiRkYXRhcmVmWyAkV1sgOSBd
> IF0gPSBcJG1lYW5XaW5kIGlmKCAkV1sgOSBdICYmIGRlZmluZWQoICRtZWFuV2luZCApICkgOwok
> ZGF0YXJlZlsgJFdbIDEwIF0gXSA9IFwkVklTIGlmKCAkV1sgMTAgXSAmJiBkZWZpbmVkKCAkVklT
> ICkpOwokZGF0YXJlZlsgJFdbIDExIF0gXSA9IFwkRElSIGlmKCAkV1sgMTEgXSAmJiBkZWZpbmVk
> KCAkRElSICkgKSA7CiRkYXRhcmVmWyAkV1sgMTIgXSBdID0gXCRTUEQgaWYoICRXWyAxMiBdICYm
> IGRlZmluZWQoICRTUEQgKSApIDsKJGRhdGFyZWZbICRXWyAxMyBdIF0gPSBcJFQgaWYoICRXWyAx
> MyBdICYmIGRlZmluZWQoICRUICkgKSA7CiRkYXRhcmVmWyAkV1sgMTQgXSBdID0gXCRodW1pZGl0
> eSBpZiggJFdbIDE0IF0gJiYgZGVmaW5lZCggJGh1bWlkaXR5ICkgKSA7CiRkYXRhcmVmWyAkV1sg
> MTUgXSBdID0gXCRURCBpZiggJFdbIDE1IF0gJiYgZGVmaW5lZCggJFREICkgKSA7CiRkYXRhcmVm
> WyAkV1sgMTYgXSBdID0gXCRQUkVTIGlmKCAkV1sgMTYgXSAmJiBkZWZpbmVkKCAkUFJFUyApICkg
> OwokZGF0YXJlZlsgJFdbIDE3IF0gXSA9IFwkU0xQIGlmKCAkV1sgMTcgXSAmJiBkZWZpbmVkKCAk
> U0xQICkgKSA7CiRkYXRhcmVmWyAkV1sgMTggXSBdID0gXCRjaGFyX1B0ZW5kIGlmKCAkV1sgMTgg
> XSAmJiBkZWZpbmVkKCAkY2hhcl9QdGVuZCApICkgOwokZGF0YXJlZlsgJFdbIDE5IF0gXSA9IFwk
> UHRlbmQgaWYoICRXWyAxOSBdICYmIGRlZmluZWQoICRQdGVuZCApICkgOwokZGF0YXJlZlsgJFdb
> IDIwIF0gXSA9IFwkUFJFQ0lQX2FtdCBpZiggJFdbIDIwIF0gJiYgZGVmaW5lZCggJFBSRUNJUF9h
> bXQgKSApIDsKJGRhdGFyZWZbICRXWyAyMSBdIF0gPSBcJFBSRUNJUF9wZXJpb2QgaWYoICRXWyAy
> MSBdICYmIAoJZGVmaW5lZCggJFBSRUNJUF9wZXJpb2QgKSApIDsKJGRhdGFyZWZbICRXWyAyMiBd
> IF0gPSBcJFdYcHJlc2VudCBpZiggJFdbIDIyIF0gJiYgZGVmaW5lZCggJFdYcHJlc2VudCApICkg
> OwokZGF0YXJlZlsgJFdbIDIzIF0gXSA9IFwkV1hwYXN0IGlmKCAkV1sgMjMgXSAmJiBkZWZpbmVk
> KCAkV1hwYXN0ICkpOwokZGF0YXJlZlsgJFdbIDI0IF0gXSA9IFwkY2xvdWRDb3ZlciBpZiggJFdb
> IDI0IF0gJiYgZGVmaW5lZCggJGNsb3VkQ292ZXIgKSApIDsKJGRhdGFyZWZbICRXWyAyNSBdIF0g
> PSBcJGNsb3VkTG93IGlmKCAkV1sgMjUgXSAmJiBkZWZpbmVkKCAkY2xvdWRMb3cgKSApIDsKJGRh
> dGFyZWZbICRXWyAyNiBdIF0gPSBcJGNsb3VkTWlkZGxlIGlmKCAkV1sgMjYgXSAmJiBkZWZpbmVk
> KCAkY2xvdWRNaWRkbGUgKSApIDsKJGRhdGFyZWZbICRXWyAyNyBdIF0gPSBcJGNsb3VkSGlnaCBp
> ZiggJFdbIDI3IF0gJiYgZGVmaW5lZCggJGNsb3VkSGlnaCApICkgOwokZGF0YXJlZlsgJFdbIDI4
> IF0gXSA9IFwkc2hpcFRydWVESVIgaWYoICRXWyAyOCBdICYmIGRlZmluZWQoICRzaGlwVHJ1ZURJ
> UiApICkgOwokZGF0YXJlZlsgJFdbIDI5IF0gXSA9IFwkc2hpcEF2Z1NQRCBpZiggJFdbIDI5IF0g
> JiYgZGVmaW5lZCggJHNoaXBBdmdTUEQgKSApIDsKJGRhdGFyZWZbICRXWyAzMCBdIF0gPSBcJFR3
> IGlmKCAkV1sgMzAgXSAmJiBkZWZpbmVkKCAkVHcgKSApIDsKJGRhdGFyZWZbICRXWyAzMSBdIF0g
> PSBcJFB3YSBpZiggJFdbIDMxIF0gJiYgZGVmaW5lZCggJFB3YSApICkgOwokZGF0YXJlZlsgJFdb
> IDMyIF0gXSA9IFwkSHdhIGlmKCAkV1sgMzIgXSAmJiBkZWZpbmVkKCAkSHdhICkgKSA7CiRkYXRh
> cmVmWyAkV1sgMzMgXSBdID0gXCRId2FfdGVudGhzIGlmKCAkV1sgMzMgXSAmJiBkZWZpbmVkKCAk
> SHdhX3RlbnRocyApICkgOwokZGF0YXJlZlsgJFdbIDM0IF0gXSA9IFwkc3dlbGxESVIxIGlmKCAk
> V1sgMzQgXSAmJiBkZWZpbmVkKCAkc3dlbGxESVIxICkgKSA7CiRkYXRhcmVmWyAkV1sgMzUgXSBd
> ID0gXCRQczEgaWYoICRXWyAzNSBdICYmIGRlZmluZWQoICRQczEgKSApIDsKJGRhdGFyZWZbICRX
> WyAzNiBdIF0gPSBcJEhzMSBpZiggJFdbIDM2IF0gJiYgZGVmaW5lZCggJEhzMSApICkgOwokZGF0
> YXJlZlsgJFdbIDM3IF0gXSA9IFwkc3dlbGxESVIyIGlmKCAkV1sgMzcgXSAmJiBkZWZpbmVkKCAk
> c3dlbGxESVIyICkgKSA7CiRkYXRhcmVmWyAkV1sgMzggXSBdID0gXCRQczIgaWYoICRXWyAzOCBd
> ICYmIGRlZmluZWQoICRQczIgKSk7CiRkYXRhcmVmWyAkV1sgMzkgXSBdID0gXCRIczIgaWYoICRX
> WyAzOSBdICYmIGRlZmluZWQoICRIczIgKSApIDsKJGRhdGFyZWZbICRXWyA0MCBdIF0gPSBcJGlj
> ZVR5cGUgaWYoICRXWyA0MCBdICYmIGRlZmluZWQoICRpY2VUeXBlICkgKSA7CiRkYXRhcmVmWyAk
> V1sgNDEgXSBdID0gXCRpY2VUaGljayBpZiggJFdbIDQxIF0gJiYgZGVmaW5lZCggJGljZVRoaWNr
> ICkgKSA7CiRkYXRhcmVmWyAkV1sgNDIgXSBdID0gXCRpY2VSYXRlIGlmKCAkV1sgNDIgXSAmJiBk
> ZWZpbmVkKCAkaWNlUmF0ZSApICkgOwokZGF0YXJlZlsgJFdbIDQzIF0gXSA9IFwkVGIgaWYoICRX
> WyA0MyBdICYmIGRlZmluZWQoICRUYiApICkgOwokZGF0YXJlZlsgJFdbIDQ0IF0gXSA9IFwkSUNF
> IGlmKCAkV1sgNDQgXSAmJiBkZWZpbmVkKCAkSUNFICkgKSA7CiRkYXRhcmVmWyAkV1sgNDUgXSBd
> ID0gXCRpY2VDb25jZW4gaWYoICRXWyA0NSBdICYmIGRlZmluZWQoICRpY2VDb25jZW4gKSApIDsK
> JGRhdGFyZWZbICRXWyA0NiBdIF0gPSBcJGljZVN0YWdlIGlmKCAkV1sgNDYgXSAmJiBkZWZpbmVk
> KCAkaWNlU3RhZ2UgKSApIDsKJGRhdGFyZWZbICRXWyA0NyBdIF0gPSBcJGljZUxhbmQgaWYoICRX
> WyA0NyBdICYmIGRlZmluZWQoICRpY2VMYW5kICkgKSA7CiRkYXRhcmVmWyAkV1sgNDggXSBdID0g
> XCRpY2VFZGdlIGlmKCAkV1sgNDggXSAmJiBkZWZpbmVkKCAkaWNlRWRnZSApKTsKJGRhdGFyZWZb
> ICRXWyA0OSBdIF0gPSBcJGljZVNpdHVhdGlvbiBpZiggJFdbIDQ5IF0gJiYgZGVmaW5lZCggJGlj
> ZVNpdHVhdGlvbiApICk7CiRkYXRhcmVmWyAkV1sgNTAgXSBdID0gXCRUbWF4IGlmKCAkV1sgNTAg
> XSAmJiBkZWZpbmVkKCAkVG1heCApICkgOwokZGF0YXJlZlsgJFdbIDUxIF0gXSA9IFwkVG1pbiBp
> ZiggJFdbIDUxIF0gJiYgZGVmaW5lZCggJFRtaW4gKSApIDsKJGRhdGFyZWZbICRXWyA1MiBdIF0g
> PSBcJGdyb3VuZFN0YXRlIGlmKCAkV1sgNTIgXSAmJiBkZWZpbmVkKCAkZ3JvdW5kU3RhdGUgKSAp
> IDsKJGRhdGFyZWZbICRXWyA1MyBdIF0gPSBcJHNub3dEZXB0aCBpZiggJFdbIDUzIF0gJiYgZGVm
> aW5lZCggJHNub3dEZXB0aCApICkgOwokZGF0YXJlZlsgJFdbIDU0IF0gXSA9IFwkUFJFQ0lQX2Ft
> dDI0IGlmKCAkV1sgNTQgXSAmJiBkZWZpbmVkKCAkUFJFQ0lQX2FtdDI0ICkgKTsKJGRhdGFyZWZb
> ICRXWyA1NSBdIF0gPSBcQGNsb3VkT2JzdXJlZCBpZiggJFdbIDU1IF0gJiYgZGVmaW5lZCggQGNs
> b3VkT2JzdXJlZCApICk7CiRkYXRhcmVmWyAkV1sgNTYgXSBdID0gXEBjbG91ZEdlbnVzIGlmKCAk
> V1sgNTYgXSAmJiBkZWZpbmVkKCBAY2xvdWRHZW51cyApICkgOwokZGF0YXJlZlsgJFdbIDU3IF0g
> XSA9IFxAY2xvdWRIZWlnaHQgaWYoICRXWyA1NyBdICYmIGRlZmluZWQoIEBjbG91ZEhlaWdodCAp
> ICkgOwokZGF0YXJlZlsgJFdbIDU4IF0gXSA9IFwkcmVwb3J0IGlmKCAkV1sgNTggXSAmJiBkZWZp
> bmVkKCAkcmVwb3J0ICkgKSA7Cgp9ICMgZW5kIHNldHZhcnMKCiMgY3JlYXRlIGEgbmV0Y2RmIGZp
> bGUgb3IgcmVvcGVuIGEgZXhpc3Rpbmcgb25lCnN1YiBkb05ldCB7CgpteSggJE5jZmlsZSwgJElk
> LCAkTnVtLCAkVGltZSwgJGJhc2VUaW1lLCAkb2Zmc2V0LCAkcnB0LCAkc3RuICkgOwoKJG5jZmls
> ZSA9ICRkYXRhZGlyIC4gIi8iIC4gJHl5eXltbWRkaGggLiAiX3N5bi5uYyIgOwojIHdyaXRpbmcg
> dG8gc2FtZSBOY2ZpbGUKcmV0dXJuIDEgaWYoICRuY2ZpbGUgZXEgJGxhc3ROYyApIDsKCiMgY3Vy
> cmVudCB0aW1lCiR0aGV0aW1lID0gdGltZSgpIDsKIyBzYXZlIGN1cnJlbnQgTmNmaWxlIGluZm8K
> JE5ldHN7ICRsYXN0TmMgfSA9ICIkbmNpZCAkcmVjbnVtICR0aGV0aW1lIiBpZiggJGxhc3ROYyAp
> IDsKCiMgRmlsZSBpcyBvcGVuLCBnZXQgbmNmaWxlIGlkIGFuZCByZWNudW0gYW5kIHJlc2V0IHRo
> ZSB0aW1lIAppZiggZGVmaW5lZCggJE5ldHN7ICRuY2ZpbGUgfSApICkgeyAjIGFscmVhZHkgb3Bl
> biBmb3Igd3JpdGVzCgkoICRuY2lkLCAkcmVjbnVtLCAkbmNUaW1lICkgPSBzcGxpdCggIiAiLCAk
> TmV0c3sgJG5jZmlsZSB9ICkgOwoJJG5jVGltZSA9ICR0aGV0aW1lIDsKCSRsYXN0TmMgPSAgJG5j
> ZmlsZSA7CglyZXR1cm4gMSA7Cn0KIyBjbG9zZSBOY2ZpbGVzIHdpdGggbm8gYWN0aXZpdHkgZm9y
> IDIwIG1pbnV0ZXMKZm9yZWFjaCAkTmNmaWxlICgga2V5cyAlTmV0cyApIHsKCSggJElkLCAkTnVt
> LCAkVGltZSApID0gc3BsaXQoICIgIiwgJE5ldHN7ICROY2ZpbGUgfSApIDsKCWlmKCAkdGhldGlt
> ZSAtICRUaW1lID4gMTIwMCApIHsKCQlwcmludCAiQ2xvc2luZyAkTmNmaWxlIHdpdGggbmNpZCAk
> SWQsIE5vIHdyaXRlIGZvciA+IDIwIE1pbnV0ZXNcbiIgOwoJCSRzdGF0dXMgPSBOZXRDREY6OmNs
> b3NlKCAkSWQgKSA7CgkJZGVsZXRlKCAkTmV0c3sgJE5jZmlsZSB9ICkgOwoJfSBlbHNpZiggJE5j
> ZmlsZSBlcSAkbGFzdE5jICkgewoJCXByaW50ICJTeW5jaW5nICRsYXN0TmMgd2l0aCBuY2lkICRu
> Y2lkXG4iIDsKCQkkc3RhdHVzID0gTmV0Q0RGOjpzeW5jKCAkSWQgKSA7Cgl9Cn0KIyByZW1vdmUg
> cnB0IGVudHJpZXMgb2xkZXIgdGhhbiAyNCBob3VycwokYmFzZVRpbWUgPSAkeXl5eW1tIC4gJGNk
> YXkgLiAkY2hvdXIgOwpmb3JlYWNoICRycHQgKCBrZXlzICVycHRfaGFzaCApIHsKCSggJHN0biwg
> JFRpbWUgKSA9IHNwbGl0KCAiICIsICRycHQgKSA7Cgkkb2Zmc2V0ID0gJGJhc2VUaW1lIC0gJFRp
> bWUgOwoJbmV4dCBpZiggJG9mZnNldCA8IDEwMCApIDsgICMgc2FtZSBkYXkgb2sgJiBwcmV2aW91
> cyBkYXkgb2sgPiAkY2hvdXIKCWRlbGV0ZSggJHJwdF9oYXNoeyAkcnB0IH0gKSA7Cn0KIyBvcGVu
> IG9yIGNyZWF0ZSBuY2ZpbGVzCmlmKCAtZSAkbmNmaWxlICkgewoJJG5jaWQgPSBOZXRDREY6Om9w
> ZW4oICIkbmNmaWxlIiwgV1JJVEUgKSA7CglyZXR1cm4gMCBpZiggJG5jaWQgPT0gLTEgKSA7Cgkk
> cmVjTnVtX2lkID0gTmV0Q0RGOjpkaW1pZCggJG5jaWQsICJyZWNOdW0iICkgOwoJJG5hbWVfaWQg
> PSAgInh4eHh4eHh4IiAgOwoJJHJlY251bSA9ICAtMSAgOwoJIyBnZXQgY3VycmVudCB2YWx1ZSBv
> ZiByZWNudW0KCU5ldENERjo6ZGltaW5xKCAkbmNpZCwgJHJlY051bV9pZCwgJG5hbWVfaWQsICRy
> ZWNudW0gKSA7Cn0gZWxzZSB7CglzeXN0ZW0oICIkbmNnZW4gLW8gJG5jZmlsZSAkY2RsZmlsZSIg
> KSA7CgkkbmNpZCA9IE5ldENERjo6b3BlbiggIiRuY2ZpbGUiLCBXUklURSApIDsKCXJldHVybiAw
> IGlmKCAkbmNpZCA9PSAtMSApIDsKCSMgTmV0Q0RGIHJlY29yZCBjb3VudGVyCgkkcmVjbnVtID0g
> MCA7Cn0KJE5ldHN7ICRuY2ZpbGUgfSA9ICIkbmNpZCAkcmVjbnVtICR0aGV0aW1lIiA7CiRsYXN0
> TmMgPSAkbmNmaWxlIDsKcHJpbnQgIk9wZW5pbmcgJG5jZmlsZSB3aXRoIG5jaWQgJG5jaWRcbiIg
> OwoKcmV0dXJuIDEgOwp9ICMgZW5kIGRvTmV0CgoKIyBwcmludCB2YXJzCnN1YiBwcmludHZhcnMK
> ewoKIyBvcmlnaW5hbCByZXBvcnQgCnByaW50ICJyZXBvcnQgPSAkcmVwb3J0IFxuIiBpZiggZGVm
> aW5lZCggJHJlcG9ydCApICkgOwpwcmludCAiXG4iIDsKCiMgcmVwb3J0IHZhcnMKcHJpbnQgInJl
> cF90eXBlID0gJHJlcF90eXBlIFxuIiBpZiggZGVmaW5lZCggJHJlcF90eXBlICkgKSA7CnByaW50
> ICJ3bW9JZCA9ICR3bW9JZCBcbiIgaWYoIGRlZmluZWQoICR3bW9JZCApICkgOwpwcmludCAic3Ru
> TmFtZSA9ICRzdG5OYW1lIFxuIiBpZiggZGVmaW5lZCggJHN0bk5hbWUgKSApIDsKcHJpbnQgImRk
> ID0gJGRkIFxuIiBpZiggZGVmaW5lZCggJGRkICkgKSA7CnByaW50ICJ0aGVtb250aCA9ICR0aGVt
> b250aCBcbiIgaWYoIGRlZmluZWQoICR0aGVtb250aCApICkgOwpwcmludCAidGhleWVhciA9ICR0
> aGV5ZWFyIFxuIiBpZiggZGVmaW5lZCggJHRoZXllYXIgKSApIDsKcHJpbnQgInJob3VyID0gJHJo
> b3VyIFxuIiBpZiggZGVmaW5lZCggJHJob3VyICkgKSA7CnByaW50ICJybWluID0gJHJtaW4gXG4i
> IGlmKCBkZWZpbmVkKCAkcm1pbiApICkgOwpwcmludCAidGltZV9vYnMgPSAkdGltZV9vYnMgXG4i
> IGlmKCBkZWZpbmVkKCAkdGltZV9vYnMgKSApIDsKcHJpbnQgInRpbWVfbm9taW5hbCA9ICR0aW1l
> X25vbWluYWwgXG4iIGlmKCBkZWZpbmVkKCAkdGltZV9ub21pbmFsICkgKSA7CnByaW50ICJ5eXl5
> bW1kZGhoID0gJHl5eXltbWRkaGggXG4iIGlmKCBkZWZpbmVkKCAkeXl5eW1tZGRoaCApICkgOwpw
> cmludCAiV2luZGljYXRvciA9ICRXaW5kaWNhdG9yIFxuIiBpZiggZGVmaW5lZCggJFdpbmRpY2F0
> b3IgKSApIDsKcHJpbnQgIkxhdCA9ICRMYXQgXG4iIGlmKCBkZWZpbmVkKCAkTGF0ICkgKSA7CnBy
> aW50ICJMb24gPSAkTG9uIFxuIiBpZiggZGVmaW5lZCggJExvbiApICkgOwpwcmludCAiZWxldiA9
> ICRlbGV2IFxuIiBpZiggZGVmaW5lZCggJGVsZXYgKSApIDsKcHJpbnQgInN0blR5cGUgPSAkc3Ru
> VHlwZSBcbiIgaWYoIGRlZmluZWQoICRzdG5UeXBlICkgKSA7CnByaW50ICJtZWFuV2luZCA9ICRt
> ZWFuV2luZCBcbiIgaWYoIGRlZmluZWQoICRtZWFuV2luZCApICkgOwpwcmludCAiVklTID0gJFZJ
> UyBcbiIgaWYoIGRlZmluZWQoICRWSVMgKSApIDsKcHJpbnQgIkRJUiA9ICRESVIgXG4iIGlmKCBk
> ZWZpbmVkKCAkRElSICkgKSA7CnByaW50ICJTUEQgPSAkU1BEIFxuIiBpZiggZGVmaW5lZCggJFNQ
> RCApICkgOwpwcmludCAiVCA9ICRUIFxuIiBpZiggZGVmaW5lZCggJFQgKSApIDsKcHJpbnQgImh1
> bWlkaXR5ID0gJGh1bWlkaXR5IFxuIiBpZiggZGVmaW5lZCggJGh1bWlkaXR5ICkgKSA7CnByaW50
> ICJURCA9ICRURCBcbiIgaWYoIGRlZmluZWQoICRURCApICkgOwpwcmludCAiUFJFUyA9ICRQUkVT
> IFxuIiBpZiggZGVmaW5lZCggJFBSRVMgKSApIDsKcHJpbnQgIlNMUCA9ICRTTFAgXG4iIGlmKCBk
> ZWZpbmVkKCAkU0xQICkgKSA7CnByaW50ICJjaGFyX1B0ZW5kID0gJGNoYXJfUHRlbmQgXG4iIGlm
> KCBkZWZpbmVkKCAkY2hhcl9QdGVuZCApICkgOwpwcmludCAiUHRlbmQgPSAkUHRlbmQgXG4iIGlm
> KCBkZWZpbmVkKCAkUHRlbmQgKSApIDsKcHJpbnQgIlBSRUNJUF9hbXQgPSAkUFJFQ0lQX2FtdCBc
> biIgaWYoIGRlZmluZWQoICRQUkVDSVBfYW10ICkgKSA7CnByaW50ICJQUkVDSVBfcGVyaW9kID0g
> JFBSRUNJUF9wZXJpb2QgXG4iIGlmKCBkZWZpbmVkKCAkUFJFQ0lQX3BlcmlvZCApICkgOwpwcmlu
> dCAiV1hwcmVzZW50ID0gJFdYcHJlc2VudCBcbiIgaWYoIGRlZmluZWQoICRXWHByZXNlbnQgKSAp
> IDsKcHJpbnQgIldYcGFzdCA9ICRXWHBhc3QgXG4iIGlmKCBkZWZpbmVkKCAkV1hwYXN0ICkgKSA7
> CnByaW50ICJjbG91ZENvdmVyID0gJGNsb3VkQ292ZXIgXG4iIGlmKCBkZWZpbmVkKCAkY2xvdWRD
> b3ZlciApICkgOwpwcmludCAiY2xvdWRMb3cgPSAkY2xvdWRMb3cgXG4iIGlmKCBkZWZpbmVkKCAk
> Y2xvdWRMb3cgKSApIDsKcHJpbnQgImNsb3VkTWlkZGxlID0gJGNsb3VkTWlkZGxlIFxuIiBpZigg
> ZGVmaW5lZCggJGNsb3VkTWlkZGxlICkgKSA7CnByaW50ICJjbG91ZEhpZ2ggPSAkY2xvdWRIaWdo
> IFxuIiBpZiggZGVmaW5lZCggJGNsb3VkSGlnaCApICkgOwpwcmludCAic2hpcFRydWVEaXIgPSAk
> c2hpcFRydWVEaXIgXG4iIGlmKCBkZWZpbmVkKCAkc2hpcFRydWVEaXIgKSApIDsKcHJpbnQgInNo
> aXBBdmdTUEQgPSAkc2hpcEF2Z1NQRCBcbiIgaWYoIGRlZmluZWQoICRzaGlwQXZnU1BEICkgKSA7
> CnByaW50ICJUdyA9ICRUdyBcbiIgaWYoIGRlZmluZWQoICRUdyApICkgOwpwcmludCAiUHdhID0g
> JFB3YSBcbiIgaWYoIGRlZmluZWQoICRQd2EgKSApIDsKcHJpbnQgIkh3YSA9ICRId2EgXG4iIGlm
> KCBkZWZpbmVkKCAkSHdhICkgKSA7CnByaW50ICJId2FfdGVudGhzID0gJEh3YV90ZW50aHMgXG4i
> IGlmKCBkZWZpbmVkKCAkSHdhX3RlbnRocyApICkgOwpwcmludCAic3dlbGxEaXIxID0gJHN3ZWxs
> RGlyMSBcbiIgaWYoIGRlZmluZWQoICRzd2VsbERpcjEgKSApIDsKcHJpbnQgIlBzMSA9ICRQczEg
> XG4iIGlmKCBkZWZpbmVkKCAkUHMxICkgKSA7CnByaW50ICJIczEgPSAkSHMxIFxuIiBpZiggZGVm
> aW5lZCggJEhzMSApICkgOwpwcmludCAic3dlbGxEaXIyID0gJHN3ZWxsRGlyMiBcbiIgaWYoIGRl
> ZmluZWQoICRzd2VsbERpcjIgKSApIDsKcHJpbnQgIlBzMiA9ICRQczIgXG4iIGlmKCBkZWZpbmVk
> KCAkUHMyICkgKSA7CnByaW50ICJIczIgPSAkSHMyIFxuIiBpZiggZGVmaW5lZCggJEhzMiApICkg
> OwpwcmludCAiaWNlVHlwZSA9ICRpY2VUeXBlIFxuIiBpZiggZGVmaW5lZCggJGljZVR5cGUgKSAp
> IDsKcHJpbnQgImljZVRoaWNrID0gJGljZVRoaWNrIFxuIiBpZiggZGVmaW5lZCggJGljZVRoaWNr
> ICkgKSA7CnByaW50ICJpY2VSYXRlID0gJGljZVJhdGUgXG4iIGlmKCBkZWZpbmVkKCAkaWNlUmF0
> ZSApICkgOwpwcmludCAiVGIgPSAkVGIgXG4iIGlmKCBkZWZpbmVkKCAkVGIgKSApIDsKcHJpbnQg
> IklDRSA9ICRJQ0UgXG4iIGlmKCBkZWZpbmVkKCAkSUNFICkgKSA7CnByaW50ICJpY2VDb25jZW4g
> PSAkaWNlQ29uY2VuIFxuIiBpZiggZGVmaW5lZCggJGljZUNvbmNlbiApICkgOwpwcmludCAiaWNl
> U3RhZ2UgPSAkaWNlU3RhZ2UgXG4iIGlmKCBkZWZpbmVkKCAkaWNlU3RhZ2UgKSApIDsKcHJpbnQg
> ImljZUxhbmQgPSAkaWNlTGFuZCBcbiIgaWYoIGRlZmluZWQoICRpY2VMYW5kICkgKSA7CnByaW50
> ICJpY2VFZGdlID0gJGljZUVkZ2UgXG4iIGlmKCBkZWZpbmVkKCAkaWNlRWRnZSApICkgOwpwcmlu
> dCAiaWNlU2l0dWF0aW9uID0gJGljZVNpdHVhdGlvbiBcbiIgaWYoIGRlZmluZWQoICRpY2VTaXR1
> YXRpb24gKSApIDsKcHJpbnQgIlRtYXggPSAkVG1heCBcbiIgaWYoIGRlZmluZWQoICRUbWF4ICkg
> KSA7CnByaW50ICJUbWluID0gJFRtaW4gXG4iIGlmKCBkZWZpbmVkKCAkVG1pbiApICkgOwpwcmlu
> dCAiZ3JvdW5kU3RhdGUgPSAkZ3JvdW5kU3RhdGUgXG4iIGlmKCBkZWZpbmVkKCAkZ3JvdW5kU3Rh
> dGUgKSApIDsKcHJpbnQgInNub3dEZXB0aCA9ICRzbm93RGVwdGggXG4iIGlmKCBkZWZpbmVkKCAk
> c25vd0RlcHRoICkgKSA7CnByaW50ICJQUkVDSVBfYW10MjQgPSAkUFJFQ0lQX2FtdDI0IFxuIiBp
> ZiggZGVmaW5lZCggJFBSRUNJUF9hbXQyNCApICkgOwpwcmludCAiY2xvdWRPYnN1cmVkID0gQGNs
> b3VkT2JzdXJlZCBcbiIgaWYoIGRlZmluZWQoIEBjbG91ZE9ic3VyZWQgKSApIDsKcHJpbnQgImNs
> b3VkR2VudXMgPSBAY2xvdWRHZW51cyBcbiIgaWYoIGRlZmluZWQoIEBjbG91ZEdlbnVzICkgKSA7
> CnByaW50ICJjbG91ZEhlaWdodCA9IEBjbG91ZEhlaWdodCBcbiIgaWYoIGRlZmluZWQoIEBjbG91
> ZEhlaWdodCApICkgOwpwcmludCAicmVwb3J0ID0gJHJlcG9ydCBcbiIgaWYoIGRlZmluZWQoICRy
> ZXBvcnQgKSApIDsKcHJpbnQgIlxuIiA7Cn0gIyBlbmQgcHJpbnR2YXJzCgojIGV4ZWN1dGUgYXQg
> ZXhpdApzdWIgYXRleGl0CnsKbG9jYWwoICRzaWcgKSA9IEBfIDsKCmlmKCAkc2lnIGVxICJlb2Yi
> ICkgewoJcHJpbnQgImVvZiBvbiBTVERJTiAtLXNodXR0aW5nIGRvd25cbiIgOwp9IGVsc2lmKCBk
> ZWZpbmVkKCAkc2lnICkpIHsKCXByaW50ICJDYXVnaHQgU0lHJHNpZyAtLXNodXR0aW5nIGRvd25c
> biIgOwp9CiMgb3BlbiBzeW4ubHN0LCBsaXN0IG9mIHJlcG9ydHMgcHJvY2Vzc2VkIGluIHRoZSBs
> YXN0ID8gaG91cnMuCm9wZW4oIExTVCwgIj4kZGF0YWRpci9zeW4ubHN0IiApIHx8IAoJZGllICJj
> b3VsZCBub3Qgb3BlbiAkZGF0YWRpci9zeW4ubHN0OiAkIVxuIiA7CnNlbGVjdCggTFNUICkgOwoj
> IHJlbW92ZSBzdG4gZW50cmllcyBvbGRlciB0aGFuIDI0IGhvdXJzCiR5eXl5bW1kZGhoID0gJHl5
> eXltbSAuICRjZGF5IC4gJGNob3VyIDsKZm9yZWFjaCAkcnB0ICgga2V5cyAlcnB0X2hhc2ggKSB7
> CgkoICRzdG4sICRUaW1lICkgPSBzcGxpdCggIiAiLCAkcnB0ICkgOwoJJG9mZnNldCA9ICR5eXl5
> bW1kZGhoIC0gJFRpbWUgOwoJbmV4dCB1bmxlc3MoICRvZmZzZXQgPCAxMDAgKSA7ICAjIHNhbWUg
> ZGF5IG9rICYgcHJldmlvdXMgZGF5IG9rID4gJGNob3VyCglwcmludCAiJHJwdCAkcnB0X2hhc2h7
> ICRycHQgfVxuIiA7Cn0KY2xvc2UgTFNUIDsKZm9yZWFjaCAkZmlsZSAoIGtleXMgJU5ldHMgKSB7
> CgkoICRuY2lkLCAkcmVjbnVtLCAkbmN0aW1lICkgPSBzcGxpdCggIiAiLCAkTmV0c3sgJGZpbGUg
> fSApIDsKCXByaW50IFNURE9VVCAiQ2xvc2luZyAkZmlsZSB3aXRoIG5jaWQgJG5jaWRcbiIgOwoJ
> JHN0YXR1cyA9IE5ldENERjo6Y2xvc2UoICRuY2lkICkgOwp9CmNsb3NlKCBTVERPVVQgKSA7CmNs
> b3NlKCBTVERFUlIgKSA7CmV4aXQoIDAgKSA7Cgp9CgojIHBhZCBzdHIgdG8gY29ycmVjdCBsZW5n
> dGgKc3ViIHBhZHN0cgp7CiggJHN0ciwgJGxlbiApID0gQF8gOwoKbG9jYWwoICRzaXplLCAkaSAp
> IDsKCiRzaXplID0gbGVuZ3RoKCAkc3RyICkgOwoKZm9yKCAkaSA9ICRzaXplOyAkaSA8ICRsZW47
> ICRpKysgKSB7CiAgICAgICAgJHN0ciAuPSAiXDAiIDsKfQppZiggJHNpemUgPiAkbGVuICkgewoJ
> cHJpbnQgU1RET1VUICJTdHJpbmcgbGVuZ3RoIGlzIG92ZXIgJGxlbiBjaGFycyBsb25nOlxuICRz
> dHJcbiIgCgkJaWYoICR2ZXJib3NlICkgOwoJJHN0ciA9IHN1YnN0ciggJHN0ciwgMCwgJGxlbiAp
> IDsKfQpyZXR1cm4gJHN0ciA7Cn0gIyBlbmQgcGFkc3RyCgpzdWIgdGhlVGltZQp7CgpteSggJHdo
> ZW4sICRtaW4sICRob3VyLCAkbWRheSwgJG1vbiwgJHllYXIsICR3ZGF5LCAkeWRheSwgJGlzZHN0
> ICkgOwoKKCAkd2hlbiApID0gQF8gOwoKJGhvdXIgPSAkcmhvdXIgOwokbWRheSA9IHN1YnN0cigg
> JHl5eXltbWRkaGgsIDYsIDIgKSA7CiRtb24gPSBzdWJzdHIoICR5eXl5bW1kZGhoLCA0LCAyICkg
> OwokeWVhciA9IHN1YnN0ciggJHl5eXltbWRkaGgsIDIsIDIgKSA7CgppZiggJHdoZW4gZXEgIm9i
> cyIgKSB7CgkkbWluID0gJHJtaW4gOwp9IGVsc2lmKCAkd2hlbiBlcSAibm9taW5hbCIgKSB7Cglp
> ZiggJHJtaW4gPiAxNCAmJiAkcm1pbiA8IDQ1ICkgewoJCSRtaW4gPSAkcm1pbiA7Cgl9IGVsc2lm
> KCAkcm1pbiA+IDQ0ICkgewoJCSRtaW4gPSA2MCA7Cgl9IGVsc2UgewoJCSRtaW4gPSAwIDsKCX0g
> Cn0KJHRpbWUgPSB0aW1lZ20oMCwgJG1pbiwgJGhvdXIsICRtZGF5LCAkbW9uIC0xLCAkeWVhciwg
> MCwgMCwgMCkgOwoKcmV0dXJuICR0aW1lIDsgCgp9ICMgdGhlVGltZQoKc3ViIGdldEhlaWdodCB7
> CgpteSggJEhlaWdodCwgJGNsb3VkSGVpZ2h0ICkgOwoKKCAkSGVpZ2h0ICkgPSBAXyA7CgppZigg
> JEhlaWdodCA8IDUxICkgewoJJGNsb3VkSGVpZ2h0ID0gJEhlaWdodCAqIDMwIDsKfSBlbHNpZigg
> JEhlaWdodCA8IDgxICkgewoJJGNsb3VkSGVpZ2h0ID0gKCAkSGVpZ2h0IC01MCApICogMzAwIDsK
> fSBlbHNpZiggJEhlaWdodCA8IDkwICkgewoJJGNsb3VkSGVpZ2h0ID0gKCggJEhlaWdodCAtODAg
> KSAqIDE1MDAgKSArIDkwMDAgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDkwICkgewoJJGNsb3VkSGVp
> Z2h0ID0gMjUgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDkxICkgewoJJGNsb3VkSGVpZ2h0ID0gNzUg
> Owp9IGVsc2lmKCAkSGVpZ2h0ID09IDkyICkgewoJJGNsb3VkSGVpZ2h0ID0gMTUwIDsKfSBlbHNp
> ZiggJEhlaWdodCA9PSA5MyApIHsKCSRjbG91ZEhlaWdodCA9IDI1MCA7Cn0gZWxzaWYoICRIZWln
> aHQgPT0gOTQgKSB7CgkkY2xvdWRIZWlnaHQgPSA0NTAgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDk1
> ICkgewoJJGNsb3VkSGVpZ2h0ID0gODAwIDsKfSBlbHNpZiggJEhlaWdodCA9PSA5NiApIHsKCSRj
> bG91ZEhlaWdodCA9IDEyNTAgOwp9IGVsc2lmKCAkSGVpZ2h0ID09IDk3ICkgewoJJGNsb3VkSGVp
> Z2h0ID0gMTc1MCA7Cn0gZWxzaWYoICRIZWlnaHQgPT0gOTggKSB7CgkkY2xvdWRIZWlnaHQgPSAy
> MjUwIDsKfSBlbHNpZiggJEhlaWdodCA9PSA5OSApIHsKCSRjbG91ZEhlaWdodCA9IDI1MDAgOwp9
> CgpyZXR1cm4gJGNsb3VkSGVpZ2h0IDsKCn0gIyBlbmQgZ2V0SGVpZ2h0Cg==
>
> ------_=_NextPart_001_01C545CD.2E77045F
> Content-Type: application/octet-stream;
>       name="syn2nc.patch"
> Content-Transfer-Encoding: base64
> Content-Description: syn2nc.patch
> Content-Disposition: attachment;
>       filename="syn2nc.patch"
>
> N2E4LDE1Cj4gCj4gIyBFbnN1cmUgdGhhdCBjaGFyYWN0ZXJzIG9uIFNURElOIGFyZSBOT1QgaW50
> ZXJwcmV0ZWQgYXMgVW5pY29kZS4KPiAjIFRoZW9yZXRpY2FsbHksIHRoaXMgaXMgdW5uZWNlc3Nh
> cnksIHNpbmNlIHN5bm9wdGljIG1lc3NhZ2VzIHNob3VsZCBjb250YWluCj4gIyBubyBjaGFyYXRl
> cnMgb3V0c2lkZSBvZiBBU0NJSSAoYWthIElTTyA4ODU5LTEgYWthIExhdGluLTEpIHJhbmdlIDAt
> MTI3Lgo+ICMgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgZm9yIHNpdGVzIGV4cGVyaWVuY2luZyB0
> ZWNobmljYWwgcHJvYmxlbXMgdG8gdHJhbnNtaXQKPiAjIGdhcmJhZ2UgY2hhcmFjdGVycyBvdXRz
> aWRlIHRoaXMgcmFuZ2UuCj4gbm8gZW5jb2Rpbmc7Cj4gCg==
>
> ------_=_NextPart_001_01C545CD.2E77045F
> Content-Type: application/octet-stream;
>       name="synoptic.20050420.1200.asc.FBSK_210"
> Content-Transfer-Encoding: base64
> Content-Description: synoptic.20050420.1200.asc.FBSK_210
> Content-Disposition: attachment;
>       filename="synoptic.20050420.1200.asc.FBSK_210"
>
> MjA5DQ0KU01CQzAxIEZCU0sgMjAxMjAwDQ0KQUFYWCAyMDEyNAo2ODI0MCA0Mjk2MCAzMDIwMiAx
> MDI1NiAyMDE0MSA0ODUyMiA1NzAyMiA4MzA4MD0KNjgzMjAgNDI5NjAgMTIzMDQgMTAyMTcgMjAw
> OTggNDg1MTUgNTcwMTQgODEwODA9CjY4MDMyIDQxNjYwIDMyOTA3IDEwMzM2IDIwMDk3IDQ4NTE3
> II4oGzj2KkowMDUwMCAgODMxMDA9CjY4MDI2IDQyNjYwIDIxODAyIDEwMzQwIDIwMDc0IDQ4NTEy
> IDU3MDI2IDgyMTAwPQo2ODA0MCA0MTY2OSAyMzQwNCAxMDMzMSAyMDEyMCA0ODUyMCA1NzAyNiA4
> MjEwMD0KNjgzMjggNDI2NjAgMTIxMDggMTAxODIgMjAwNjcgNDg1NDYgNTcwMTEgODExMDA9CjY4
> MjI2IDQyNjYwIDIyMDEzIDEwMjEwIDIwMDc5IDQ4NTM4IDU3MDE5IDgxMTgwPQo2ODE0OCA0MjY2
> MCAyMTYxMSAxMDMxMCAyMDEyMiA0ODUxNyA1NzAxOSA4MTE4MD0KNjgwMzAgNDE2NjAgNDA1MDUg
> MTAzMzcgMjAxMTAgNDg1NDcgNTcwMzAgNzA1MDAgODQxMDA9CjY4MDM4IDQxOTYwIDEyNzA2IDEw
> MzQwIDIwMTMxIDQ4NTQ2IDU3MDI1IDcwNTAwIDgxMDcwPQo2ODA1NCA0MjY2MCAzMjAwNSAxMDM0
> MSAyMDEyMSA0ODUyMiA1NzAyNCA4MzIwMD0KNjgwNzAgNDI1NjAgMDAwMDAgMTAzMjUgMjAxMjIg
> NDg1MzYgNTcwMjg9CjY4MjM0IDQyNjYwIDMyNzA1IDEwMjUyIDIwMTM0IDQ4NDk2IDU3MDEzIDgy
> MTgwPQo2ODMyNSA0MjY2MCA2MjcwMyAxMDIzNSAyMDEzOCA0ODU1MCA1NzAxNiA4NDE4MD0KNjgw
> MjkgNDI2NjAgNC8vLy8gMTAzMjUgMjAxMjYgNDg1MTkgNTcwMjggODQyMDA9DQ0KDQ0KAwENDQo=
>
> ------_=_NextPart_001_01C545CD.2E77045F--
>
> --
> NOTE: All email exchanges with Unidata User Support are recorded in the
> Unidata inquiry tracking system and then made publicly available
> through the web.  If you do not want to have your interactions made
> available in this way, you must let us know in each email you send to us.
>
> ------- End of Forwarded Message
>

===============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
address@hidden             WWW: http://www.unidata.ucar.edu/
===============================================================================