[pkg-bioc] how to proceed?

Dirk Eddelbuettel edd@debian.org
Sat, 19 Feb 2005 15:15:35 -0600


--YAnESqaLNa
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit


On 19 February 2005 at 20:53, Egon Willighagen wrote:
| On Saturday 19 February 2005 20:47, Dirk Eddelbuettel wrote:
| > | BTW, how did you make a mirror of just the packages instead of the whole
| > | of CRAN?
| >
| > I don't understand the question. I downloaded all source packages from
| > CRAN, plus one or two of the meta files that have all the information.
| > Those are parsed mostly with Perl tools included in R.
| 
| Did you download those manually? Or do you use a script or a rsync command for 
| that? 

I used a wget command that is in the comments header:

#      - the command
#            wget --retr-symlinks -I"contrib/main/Descriptions" -nH -m \
#                 "ftp://cran.us.r-project.org/contrib/main/"
#        retrieves the top-level files as well as the Descriptions dir
#        and nothing else

| > BioC has its own mechanism with reposTools.
| 
| Can you send the bioc2deb.pl too?

I did, actually. Didn't you get it? It should also be on alioth now.

Anyway, I'll re-attach bioc2deb.pl and BIOC2DEB.pm.

| > It would be nice if you (or someone else) could try to run the script and
| > see what happens. You will probably need to update things like build
| > dependencies.
| 
| Yes, I want to try to get things build. I've got a amd64 machine so that would 
| give a nice extra dimension for the packages with C/fortran/etc code.

Excellent news on both counts.

Dirk


--YAnESqaLNa
Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename="bioc2deb.pl"
Content-Transfer-Encoding: base64

IyEvdXNyL2Jpbi9wZXJsCgojIFRoaXMgc2NyaXB0IGJ1aWxkcyBEZWJpYW4gcGFja2FnZXMgb2Yg
YWxsIFIgcGFja2FnZXMgYXZhaWxhYmxlIGF0IEJpb0MuCiMgSXQgYXNzdW1lcyBhIGxvY2FsIG1p
cnJvci4gb2YgdGhlIHNyYy9jb250cmliLyBkaXJlY3RvcnkKCiMgYmFzZWQgb24gY3JhbjJkZWIu
cGwsdiAxLjcgMjAwNC8wNy8yMyAwMzo1OToyMSBlZGQgRXhwIAoKIyAkSWQ6IGJpb2MyZGViLnBs
LHYgMS4xIDIwMDQvMDcvMjggMDM6NDY6NDQgZWRkIEV4cCBlZGQgJAoKQkVHSU57CQkJCQkjIGlu
aXRpYWxpemF0aW9uOgogIHB1c2goQElOQywgIi4iKTsJCQkjIGN1cnJlbnQgZGlyIGZvciBjcmFu
MmRlYiBwYWNrYWdlCn0KCnVzZSBzdHJpY3Q7CnVzZSB2YXJzIHF3KCRoZWxwICRkZWJ1ZyAkdmVy
Ym9zZSAkZHJ5cnVuKTsKdXNlIHdhcm5pbmdzOwp1c2UgRGF0YTo6RHVtcGVyOwp1c2UgRW5nbGlz
aDsKdXNlIEZjbnRsOwp1c2UgRmlsZTo6c3RhdDsKdXNlIEdldG9wdDo6TG9uZzsgICAgICAgICAg
ICAgICAjIGxvbmcgb3B0aW9ucwp1c2UgSVBDOjpPcGVuMjsKdXNlIElPOjpIYW5kbGU7CnVzZSBQ
T1NJWDsKdXNlIFRleHQ6OlBhcnNlV29yZHM7Cgp1c2UgQklPQzJERUI7CgpteSAlb3B0aW9ucyA9
ICgiaGVscCIgICAgICAgICAgID0+IFwkaGVscCwKICAgICAgICAgICAgICAgImRlYnVnIiAgCT0+
IFwkZGVidWcsCiAgICAgICAgICAgICAgICJ2ZXJib3NlIiAgICAgICAgPT4gXCR2ZXJib3NlLAoJ
ICAgICAgICJkcnlydW4iCQk9PiBcJGRyeXJ1bik7CgpzaG93SGVscEFuZEV4aXQoKSBpZiAoIUdl
dE9wdGlvbnMoJW9wdGlvbnMpIG9yICRoZWxwKTsKJHZlcmJvc2U9MSBpZiAkZGVidWc7CgokfD0x
OwkJCQkjIHVuYnVmZmVyZWQgb3V0cHV0OgoKbXkgJGJpbmFyY2g9ImkzODYiOwkJIyBjb25maWd1
cmFibGUgc3R1ZmYgYmVsb3cKbXkgJG1haW50YWluZXJtYWlsID0gIkRpcmsgRWRkZWxidWV0dGVs
IDxlZGRcQGRlYmlhbi5vcmc+IjsKCm15ICRtaXJyb3IgPSAiYmlvQyI7Cm15ICRvdXRwdXQgPSAi
YnVpbGRzIjsKCiMjIGN1cnJlbnRseSBoYW5kLWVkaXRlZCBmcm9tIGxvb2tpbmcgYXQgdGhlIFIg
c3JjL2xpYnJhcnkgZGlyZWN0b3J5Cm15IEBiYXNlbGlicz0oImJhc2UiLCAiY3Rlc3QiLCAiZWRh
IiwgImdyYXBoaWNzIiwgImdyaWQiLCAibHFzIiwKCSAgICAgICJtZXRob2RzIiwgIm1sZSIsICJt
b2RyZWciLCAibXZhIiwgIm5scyIsICJwcm9maWxlIiwgInNwbGluZXMiLAoJICAgICAgInN0YXRz
IiwgInN0YXRzNCIsICJzdGVwZnVuIiwgInRjbHRrIiwgInRvb2xzIiwgInRzIiwgInV0aWxzIik7
CgojIyBoYW5kLWVkaXRlZCBmcm9tIGxvb2tpbmcgYXQgdGhlIFIgc3JjL2xpYnJhcnkvUmVjb21t
ZW5kIGRpcmVjdG9yeQpteSBAcmVjbGlicz0oIktlcm5TbW9vdGgiLCAiVlIiLCAiYm9vdCIsICJj
bHVzdGVyIiwgImZvcmVpZ24iLCAibGF0dGljZSIsCgkgICAgICJtZ2N2IiwgIm5sbWUiLCAicnBh
cnQiLCAic3Vydml2YWwiKTsKCiMjIGNvbXBvbmVudHMgb2YgdGhlIFZSIGJ1bmRsZQpteSBAdnJs
aWJzID0gKCJNQVNTIiwgImNsYXNzIiwgIm5uZXQiLCAic3BhdGlhbCIpOwoKIyMgY29tcG9uZW50
cyBvZiB0aGUgTGluZHNleSBidW5kbGUgKGluIERlYmlhbiBhcyByLW5vbmNyYW4tbGluZHNleSkK
bXkgQGxpbmRzZXlsaWJzID0gKCJybXV0aWwiLCAiZ25sbSIsICJzdGFibGUiLCAiZ3Jvd3RoIiwg
InJlcGVhdGVkIiwKCQkgICJldmVudCIsICJvcmRpbmFsIik7CgojIyBwYWNrYWdlcyBmb3Igd2hp
Y2ggd2UgbGFjayBidWlsZCBkZXBlbmRlbmNpZXMKbXkgQGNhbm5vdGJ1aWxkID0gKCJ1ZHVuaXRz
IiwgIlJtU1FMIiwgIm1pbVIiLCAiUk9yYWNsZSIsIAoJCSAgICJSU1FMaXRlIiwgICAgIyMgaGFz
IHNvbWUgV2luZG93cyBsaWJzIHRoYXQgdHJpcCBsaW50aWFuIHVwCgkJICAgIlJTY2FMQVBBQ0si
LCAjIyBuZWVkIHRvIHNvcnQgLWRldiBwYWNrYWdlcyBvdXQKCQkgICAicnNwcm5nIiwgICAgICMj
IG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBmYWlscwoJCSAgICAjIyBhbGwgZGVwZW5kIG9u
IG5vbi1mcmVlIHRyaXBhY2sKCQkgICAicGhlbm8iLCAibnBycSIsICJzcGRlcCIsICJkY2x1c3Rl
ciIsCgkJICAgImlwcmVkIiwJICMjIG9uIG1sYmVuY2gKCQkgICAiY2RubW9uZXkiLCAgICMjIG9u
IHRmcmFtZSBpbnNpZGUgZHNlCgkJICAgIyMgb24gYWtpbWEKCQkgICAiY2xpbS5wYWN0IiwgImdy
YXNzIiwgImFubSIsCgkJICAgIyMgb24gY29uZi5kZXNpZ25zCgkJICAgImNyb3NzZGVzIiwKCQkg
ICAjIwoJCSAgICMjIEJpb0M6IAojIAkJICAgImFubmFmZnkiLCAgICAjIyB3ZSBsYWNrIEdPIGFu
ZCBLRUdHIGRhdGEgcGtncwojIAkJICAgImFsdGNkZmVudnMiLCAjIyBuZWVkcyBoZ3UxMzNhcHJv
YmUKIyAJCSAgICJnb3N0YXRzIiwgICAgIyMgR08KIyAJCSAgICJtYXRjaHByb2JlcyIsIyMgbG90
cyBvZiBkYXRhIHBrZ3MKIyAJCSAgICJnb3Rvb2xzIiwgICAgIyMgR08KIwkJICAgImFmZnlwZG5u
IiwgICAjIyBkYXRhIAoJCSAgICJybWFnZW1sIiwgICAgIyMgc2phdmEKIyAJCSAgICJ3ZWJiaW9j
IiwgICAgIyMgYW5uYWZ5CiMgCQkgICAiZWNvbGl0ayIsICAgICMjIGVjb2xpbGV1Y2luZQojIAkJ
ICAgIm9udG90b29scyIsICAjIyBnbyBhbmQgb3RoZXJzCgoJCSAgICJyZXBvc3Rvb2xzIiAgIyMg
YWxyZWFkeSBpbiB0aGUgYXJjaGl2ZQogICAgICAgICAgICAgICAgICAgKTsKCiMjIGdldCBsaXN0
IG9mIHItYmlvYy0qIHBhY2thZ2VzIGFscmVhZHkga25vd24gdG8gYXB0IAojIyBbIHNvIGFwdCBz
aG91bGQgbm90IHBvaW50IHRvIGFuIGFyY2hpdmUgb2YgbG9jYWwgQklPQyBEZWJpYW4gcGFja2Fn
ZXMgXSAKbXkgQGRlYmlhbnBrZ3M7Cm9wZW4oUElQRSwgImFwdC1jYWNoZSBzZWFyY2ggXCJeci1j
cmFuLVx8XnItYmlvYy1cIiB8IGN1dCAtZjEgLWRcIiBcIiB8Iikgb3IKICBkaWUgIkNhbm5vdCBx
dWVyeSBhcHQtY2FjaGVcbiI7CndoaWxlICg8UElQRT4pIHsKICBjaG9tcDsKICBwdXNoIEBkZWJp
YW5wa2dzLCAkQVJHOwp9CgpteSAlYnVpbGREZXBzID0gKAoJCSBSbXBpID0+IFsibGFtLXJ1bnRp
bWUiLCAibGFtNC1kZXYiXSwKCQkgUk15U1FMID0+IFsibGlibXlzcWxjbGllbnQtZGV2Il0sCgkJ
IFJQZ1NRTCA9PiBbInBvc3RncmVzcWwtZGV2Il0sCgkJIFJTUUxpdGUgPT4gWyJsaWJzcWxpdGUt
ZGV2IiwgInItY3Jhbi1kYmkiXSwKCQkgZ3RrRGV2aWNlID0+IFsibGliZ3RrMS4yLWRldiIsImxp
YmdsaWIxLjItZGV2IiwieGxpYnMtZGV2Il0sCgkJIGhkZjUgPT4gWyJsaWJoZGY1LXNlcmlhbC1k
ZXYiLCAiemxpYjFnLWRldiJdLAoJCSBsbWU0ID0+IFsici1jcmFuLW1hdHJpeCJdLAoJCSBuY2Rm
ID0+IFsibmV0Y2RmZy1kZXYiXSwKCQkgbmV0Q0RGID0+IFsibmV0Y2RmZy1kZXYiXSwKCQkgcmdk
YWwgPT4gWyJsaWJnZGFsMS1kZXYiXSwKCQkgcmltYWdlID0+IFsiZmZ0dy1kZXYiLCAibGlianBl
ZzYyLWRldiJdLAoJCSBycXVhbnRsaWIgPT4gWyJsaWJxdWFudGxpYjAtZGV2IiwgImxpYmJvb3N0
LWRldiIsIAoJCQkgICAgICAgImxpYmJvb3N0LXRlc3QtZGV2Il0sCgkJIHJwdm0gPT4gWyJwdm0t
ZGV2Il0sCgkJIHJzY2FsYXBhY2sgPT4gWyJsYW0tcnVudGltZSIsICJsYW00LWRldiIsICJyZWZi
bGFzMy1kZXYiLAoJCQkJImJsYWNzLWxhbS1kZXYgIiwgInNjYWxhcGFjay1tcGljaC1kZXYiIF0s
CgkJIHJzcHJuZyA9PiBbImxpYnNwcm5nMi1kZXYiLCAibGliZ21wMy1kZXYiXSwKCQkgcnB2bSA9
PiBbInB2bS1kZXYiXSwKCQkgdGtycGxvdCA9PiBbInRjbDguNC1kZXYiLCAidGs4LjQtZGV2Iiwg
InhsaWJzLWRldiJdLAojCSAgICAgICAgIHNub3cgPT4gWyJwdm0tZGV2Il0sCgkJICMjIEJpb0Nv
bmR1Y3RvcgoJCSBhZmZ5ID0+IFsici1iaW9jLWJpb2Jhc2UiXSwKCQkgYW5uYWZmeSA9PiBbInIt
YmlvYy1nbyJdLAoJCSBhbHRjZGZlbnZzID0+IFsici1iaW9jLWFmZnkiXSwKCQkgY29udmVydCA9
PiBbInItYmlvYy1saW1tYSIsICJyLWJpb2MtbWFycmF5Il0sCgkJIGV4cHJleHRlcm5hbCA9PiBb
InItYmlvYy1iaW9iYXNlIiwici1iaW9jLWV4dGVybmFsdmVjdG9yIl0sCgkJIGdlbmVwbG90dGVy
ID0+IFsici1iaW9jLWFubm90YXRlIl0sCgkJIHByb2Nlc3MgPT4gWyJyLWJpb2MtaWNlbnMiXSwK
CQkgUmdyYXBodml6ID0+IFsici1iaW9jLWdyYXBoIl0sCgkJIHJoZGY1ID0+IFsibGliaGRmNS1z
ZXJpYWwtZGV2Il0sCgkJIHJ1dWlkID0+IFsibGliZ2xpYjEuMi1kZXYiXSwKCQkgc3BsaWNlZ2Vh
ciA9PiBbInItYmlvYy1iaW9iYXNlIl0sCgkJIHRrd2lkZ2V0cyA9PiBbInItYmlvYy13aWRnZXR0
b29scyIsICJyLWJpb2MtZHluZG9jIl0sCgkJIHZzbiA9PiBbInItYmlvYy1iaW9iYXNlIl0sCgkJ
KTsKCm15ICVleHRlcm5hbERlcHMgPSAoeGdvYmkgPT4gWyd4Z29iaSddLAoJCSAgICBHUkFTUyA9
PiBbJ2dyYXNzJ10sCgkJICAgICMjIEJpb0NvbmR1Y3RvcgoJCSAgICBSZ3JhcGh2aXogPT4gWydn
cmFwaHZpeiddCgkJICAgKTsKbXkgJXBhY2thZ2VzOwpteSBAY3JhbnBhY2thZ2VzOwoKZGllICJU
aGlzIG5lZWRzIHRvIHJ1biBvbiBhIERlYmlhbiBzeXN0ZW0uXG4iIAogIHVubGVzcyBzdGF0KCIv
ZXRjL2RlYmlhbl92ZXJzaW9uIik7CgojICRSUz0iX0VPTF8iOwojIG15ICRwYWNrYWdlc2ZpbGUg
PSAiJG1pcnJvci9yZXBvc1N0YXR1cy5jc3YiOwojIG9wZW4oRklMRSwgJHBhY2thZ2VzZmlsZSkg
b3IgZGllICJDYW5ub3Qgb3BlbiAkcGFja2FnZXNmaWxlXG4iOwojIG15ICRsaW5lID0gPEZJTEU+
OwojIGNob21wICRsaW5lOwojIG15IChAbGFiZWxzKSA9IHF1b3Rld29yZHMoJywnLCAwLCAkbGlu
ZSk7CiMgbXkgJG4gPSBzY2FsYXIgQGxhYmVsczsKIyBwcmludCBEdW1wZXIoXEBsYWJlbHMpOwoK
IyAjIHN0YXJ0IHBhcnNpbmcgdGhlIFBBQ0tBR0VTIGZpbGU6CiMgd2hpbGUgKCRsaW5lID0gPEZJ
TEU+KSB7CiMgICAkbGluZSA9fiBzL19FT0xfJC8vbzsKIyAgIG15ICgkZGF0YSkgPSBuZXN0ZWRf
cXVvdGV3b3JkcygnLCcsIDAsICRsaW5lKTsKIyAgIG15ICRwYWNrYWdlID0gJGRhdGEtPlswXTsK
IyAgIG15ICR2ZXJzaW9uID0gJGRhdGEtPlsxXTsKIyAgIHByaW50ICJQYWNrYWdlIGlzICRwYWNr
YWdlXHRWZXJzaW9uICR2ZXJzaW9uXG4iOwojICAgZm9yIChteSAkaT0wOyAkaTwkbjsgJGkrKykg
ewojICAgICAkcGFja2FnZXN7JHBhY2thZ2V9eyRsYWJlbHNbJGldfSA9ICRkYXRhLT5bJGldOwoj
ICAgfQojIH0KIyBjbG9zZShGSUxFKTsKIyAkUlM9IlxuIjsKCgojICAgICBjYXQocGFzdGUoZ3N1
YihcIlxcblwiLFwiIFwiLGFzLmNoYXJhY3Rlcih1bmxpc3QoYmlvQ2RmW2ksal0pKSksXCJcXCNc
IixzZXA9XCJcIikpCm15ICRwaWQgPSBvcGVuMigqUkVBRF9SLCAqV1JJVEVfUiwgJ1InLCAnLS1z
bGF2ZScsICctLXNpbGVudCcpOwpwcmludCBXUklURV9SICIKc3RvcGlmbm90KHJlcXVpcmUocmVw
b3NUb29scywgcXVpZXQ9VFJVRSkpCmxvYWQoJ2Jpb0MuUmRhdGEnKQojIyBzaG93IGEgaGVhZGVy
IG9mIGNvbHVtbiBuYW1lcwpjYXQocGFzdGUoJ0FyY2hpdmVcdCcsIHBhc3RlKGNvbG5hbWVzKGJp
b0NkZiksY29sbGFwc2U9J1xcdCcpLCAnXFxuJywgc2VwPScnKSkKZm9yIChpIGluIDE6TlJPVyhi
aW9DZGYpKSB7CiAgY2F0KCdiaW9jXFx0JykKICBmb3IgKGogaW4gMTpOQ09MKGJpb0NkZikpCiAg
ICAgIyMgdGhlIHJlcG9zVG9vbHMgb2JqZWN0IGRvZXMgbm90IGRyb3AgaXRzIGlubmVyIFM0IHJl
cHJlc2VudGF0aW9uLAogICAgICMjIGV2ZW4gYXMgYSBkYXRhLmZyYW1lIC0tIGhlbmNlIHRoZSB1
Z2x5IGRmW2ksal1bWzFdXSB0byB1bmRvIHRoZSAKICAgICAjIyB1bmRlcmx5aW5nIGxpc3QgYW5k
IHR1cm4gaW50byBhIGNoYXIgdmVjdG9yOyB0aGUgcmVzdCBpcyBqdXN0IGljaW5nOgogICAgICMj
IERlcGVuZHMgY291bGQgaGF2ZSBzZXZlcmFsLCBzbyBjb2xsYXBzZSwKICAgICAjIyBEZXNjcmlw
dGlvbiBjYW4gaGF2ZSBuZXdsaW5lcywgc28gdW5kbyB0aG9zZSwgYW5kIAogICAgICMjIHNlcGFy
YXRlIG91dCB3aXRoIGEgbWFya2VyCiAgICAgY2F0KHBhc3RlKGdzdWIoJ1xcbicsJyAnLCBwYXN0
ZShhcy5jaGFyYWN0ZXIoYmlvQ2RmW2ksal1bWzFdXSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xsYXBzZT0nLCcpKSwgJ1xcdCcsc2VwPScnKSkKICBjYXQoJ1xcbicp
Cn0KZm9yIChpIGluIDE6TlJPVyhjcmFuZGYpKSB7CiAgY2F0KCdjcmFuXFx0JykKICBmb3IgKGog
aW4gMTpOQ09MKGNyYW5kZikpCiAgICAgY2F0KHBhc3RlKGdzdWIoJ1xcbicsJyAnLCBwYXN0ZShh
cy5jaGFyYWN0ZXIoY3JhbmRmW2ksal1bWzFdXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2xsYXBzZT0nLCcpKSwgJ1xcdCcsc2VwPScnKSkKICAgICAjI2NhdChwYXN0
ZSgnY3JhbicsIGFzLmNoYXJhY3RlcihjcmFuZGZbaSwxXVtbMV1dKSwgc2VwPSdcXHQnKSwgJ1xc
bicpCiAgY2F0KCdcXG4nKQp9CiMjd3JpdGUudGFibGUoYmlvQ2RmLCBzZXA9J1xcdCcsIGZpbGU9
J2Jpb0MuY3N2Jywgcm93Lm5hbWVzPUZBTFNFKQpxKCdubycpCiI7Cm15ICRsaW5lID0gIDxSRUFE
X1I+OwpjaG9tcCAkbGluZTsKbXkgKEBoZWFkZXIpID0gc3BsaXQgIlx0IiwgJGxpbmU7CiNteSAk
biA9IHNjYWxhciBAaGVhZGVyOwp3aGlsZSAoJGxpbmUgPSA8UkVBRF9SPikgewogIGNob21wICRs
aW5lOwogIHByaW50ICJbJGxpbmVdXG4iIGlmICRkZWJ1ZzsKICBteSAoQHJvdykgPSBzcGxpdCAi
XHQiLCAkbGluZTsKICBpZiAoJHJvd1swXSBlcSAiYmlvYyIpIHsKICAgIHByaW50ICIkcm93WzFd
IC0gJHJvd1syXSBcbiIgaWYgJHZlcmJvc2U7CiAgICAjICBmb3IgKG15ICRpPTA7ICRpPCRuOyAk
aSsrKSB7CiAgICAjICAgICRwYWNrYWdlc3skcm93WzFdfXskaGVhZGVyWyRpXX0gPSAkcm93WyRp
XTsKICAgICMgICAgIyNwcmludCAiXHQkcm93WzAxIC0gJGhlYWRlclskaV1cdCAkcm93WyRpXSBc
biI7CiAgICAjICB9CiAgICAjIyBzbGljazogd2UgY2FuIGFzc2lnbiBhbGwgaGFzaCBrZXkvdmFs
dWUgcGFpcnMgYXQgb25jZQogICAgQHskcGFja2FnZXN7JHJvd1sxXX19e0BoZWFkZXJ9ID0gKEBy
b3cpOwoKICAgICMgdHVybiBDUkFOJ3MgcG9zc2libGUgMS4yLjMtNCBpbnRvIDEuMi4zLjQKICAg
ICRwYWNrYWdlc3skcm93WzFdfXtEZWJWZXJzaW9ufSA9ICRwYWNrYWdlc3skcm93WzFdfXtWZXJz
aW9ufTsKICAgICRwYWNrYWdlc3skcm93WzFdfXtEZWJWZXJzaW9ufSA9fiBzLy0vXC4vbTsKICAg
ICRwYWNrYWdlc3skcm93WzFdfXtEZWJSZWxlYXNlfSA9IAogICAgICAkcGFja2FnZXN7JHJvd1sx
XX17RGViVmVyc2lvbn0gLiAiLTAucjJkLjEiOwogIH0gZWxzaWYgKCRyb3dbMF0gZXEgImNyYW4i
KSB7CiAgICBwdXNoIEBjcmFucGFja2FnZXMsICRyb3dbMV07CiAgfQp9CmNsb3NlKFdSSVRFX1Ip
OwpjbG9zZShSRUFEX1IpOwojcHJpbnQgRHVtcGVyKFwlcGFja2FnZXMpOyBwcmludCBEdW1wZXIo
XEBjcmFucGFja2FnZXMpOyAjZGllICJDaGVja1xuIjsKCm15IEBwYWNrYWdlbmFtZXMgPSBrZXlz
ICVwYWNrYWdlczsKCiMjIGhlcmUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUg
YmV0d2VlbiBDUkFOIGFuZCBiaW9DIERlcGVuZHMKCiMgaGFuZGxlIGludGVycGFja2FnZSBkZXBl
bmRlbmNpZXM6CiMgKGFzc3VtaW5nIHRoZXJlIGlzIG5vIGNpcmN1bGFyIGRlcGVuZGVuY3kpCmZv
cmVhY2ggbXkgJHBhY2thZ2UgKEBwYWNrYWdlbmFtZXMpIHsKICAkcGFja2FnZXN7JHBhY2thZ2V9
eydkZXBlbmRlbmNpZXMnfT0oKTsKICAkcGFja2FnZXN7JHBhY2thZ2V9eydkZWJpYW5kZXBlbmRl
bmNpZXMnfT0oKTsKICAkcGFja2FnZXN7JHBhY2thZ2V9eydkZWJpYW5idWlsZGRlcGVuZGVuY2ll
cyd9PSgpOwogIGlmKGV4aXN0cyAkZXh0ZXJuYWxEZXBzeyRwYWNrYWdlfSkgewogICAgcHVzaCAo
QHskcGFja2FnZXN7JHBhY2thZ2V9eydkZWJpYW5kZXBlbmRlbmNpZXMnfX0sCgkgIEB7JGV4dGVy
bmFsRGVwc3skcGFja2FnZX19KTsKICB9CiAgaWYoZXhpc3RzICRidWlsZERlcHN7JHBhY2thZ2V9
KSB7CiAgICBwdXNoIChAeyRwYWNrYWdlc3skcGFja2FnZX17J2RlYmlhbmJ1aWxkZGVwZW5kZW5j
aWVzJ319LAoJICBAeyRidWlsZERlcHN7JHBhY2thZ2V9fSk7CiAgfQogIGlmIChkZWZpbmVkKCRw
YWNrYWdlc3skcGFja2FnZX17RGVwZW5kc30pKSB7CiAgICBteSBAcGtncyA9IHNwbGl0KC8sLywg
JHBhY2thZ2VzeyRwYWNrYWdlfXtEZXBlbmRzfSk7CiAgICBmb3JlYWNoIG15ICRwa2cgKEBwa2dz
KSB7CiAgICAgIG5leHQgaWYgJHBrZyA9fiBtL15SKC4qXCg+PT8gXGQqXCkpPy87CiAgICAgIG5l
eHQgaWYgZ3JlcCgvXGIkcGtnXGIvLCBAYmFzZWxpYnMpID4gMDsKICAgICAgJHBrZyA9fiBzL1xz
KlwoLipcKS8vbzsJIyBudWtlIHZlcnNpb24gbnVtYmVycwogICAgICBwcmludCAiXHQkcGFja2Fn
ZSBkZXBlbmRzIG9uIG5vbi1iYXNlIHBhY2thZ2UgJHBrZ1xuIiBpZiAkdmVyYm9zZTsKICAgICAg
cHVzaChAeyRwYWNrYWdlc3skcGFja2FnZX17ZGVwZW5kZW5jaWVzfX0sICRwa2cpOwogICAgICAj
IHRyYW5zbGF0ZSBpbnRvIGRlYmlhbiBkZXBlbmRlbmNpZXM7CiAgICAgIGlmIChncmVwKC9cYiRw
a2dcYi8sIEB2cmxpYnMpID4gMCkgewoJcHVzaChAeyRwYWNrYWdlc3skcGFja2FnZX17ZGViaWFu
ZGVwZW5kZW5jaWVzfX0sICJyLWNyYW4tdnIiKTsKICAgICAgfSBlbHNpZiAoZ3JlcCgvXGIkcGtn
XGIvLCBAbGluZHNleWxpYnMpID4gMCkgewoJcHVzaChAeyRwYWNrYWdlc3skcGFja2FnZX17ZGVi
aWFuZGVwZW5kZW5jaWVzfX0sICJyLW5vbmNyYW4tbGluZHNleSIpOwogICAgICB9IGVsc2lmIChn
cmVwKC9cYiRwa2dcYi8sIEBjcmFucGFja2FnZXMpID4gMCkgewoJIyMgaWYgaXQgaXMgZnJvbSBD
UkFOIChhbmQgaXMgbm90IEljZW5zIHdoaWNoIGlzIGFsc28gaW4gQmlvQykKCXB1c2goQHskcGFj
a2FnZXN7JHBhY2thZ2V9e2RlYmlhbmRlcGVuZGVuY2llc319LAoJICAgICAici1jcmFuLSIgLiBs
b3dlckNhc2UoJHBrZykpIHVubGVzcyBsb3dlckNhc2UoJHBrZykgZXEgImljZW5zIjsKICAgICAg
fSBlbHNlIHsKCSMjIGl0IGlzIGZyb20gQmlvQ29uZHVjdG9yICh1bmxlc3MgaXQgaXMgcGxhY2Vo
b2xkZXIgIk5BIiA9PSAibmEiKQoJcHVzaChAeyRwYWNrYWdlc3skcGFja2FnZX17ZGViaWFuZGVw
ZW5kZW5jaWVzfX0sCgkgICAgICJyLWJpb2MtIiAuIGxvd2VyQ2FzZSgkcGtnKSkgdW5sZXNzIGxv
d2VyQ2FzZSgkcGtnKSBlcSAibmEiOwogICAgICB9CiAgICB9CiAgICBpZiAoZGVmaW5lZChAeyRw
YWNrYWdlc3skcGFja2FnZX17ZGVwZW5kZW5jaWVzfX0pIGFuZCAkdmVyYm9zZSkgewogICAgICBw
cmludCAiJHBhY2thZ2UgZGVwZW5kcyBvbjogIiwKCWpvaW4oIiAiLCBAeyRwYWNrYWdlc3skcGFj
a2FnZX17ZGVwZW5kZW5jaWVzfX0pLCAiXG4iOwogICAgfQogIH0KfQoKbXkgJG1heGRlcHRoPTA7
CmZvcmVhY2ggbXkgJHBhY2thZ2UgKEBwYWNrYWdlbmFtZXMpIHsKICBwcmludCAiZ2V0IGRlcGVu
ZGVuY3kgZGVwdGggZm9yICRwYWNrYWdlIC4uLiAiIGlmICR2ZXJib3NlOwogICRwYWNrYWdlc3sk
cGFja2FnZX17ZGVwZGVwdGh9ID0gZ2V0RGVwdGgoXCVwYWNrYWdlcywgJHBhY2thZ2UpOwogIHBy
aW50ICIkcGFja2FnZXN7JHBhY2thZ2V9e2RlcGRlcHRofVxuIiBpZiAkdmVyYm9zZTsKICAkbWF4
ZGVwdGg9JHBhY2thZ2VzeyRwYWNrYWdlfXtkZXBkZXB0aH0KICAgIGlmICRwYWNrYWdlc3skcGFj
a2FnZX17ZGVwZGVwdGh9PiRtYXhkZXB0aDsKfQoKbXkgJGNvdW50ZXIgPSAwOwojIG5vdyBnZW5l
cmF0ZSB0aGUgZGViaWFuIGJ1aWxkIGZpbGVzOgojIGRvIHRoaXMgaW4gJG1heGRlcHRoIHBhc3Nl
cywgaGFuZGxlIHBhY2thZ2VzIHdpdGggbG93ZXIgZGVwdGggZmlyc3QKZm9yIChteSAkcGFzcz0w
OyAkcGFzczw9JG1heGRlcHRoOyAkcGFzcysrKSB7CiAgcHJpbnQgInBhc3MgZm9yIGRlcGVuZGVu
Y3kgZGVwdGggJHBhc3NcbiIgaWYgJHZlcmJvc2U7CiAgZm9yZWFjaCBteSAkcGFja2FnZSAoQHBh
Y2thZ2VuYW1lcykgewogICAgbmV4dCB1bmxlc3MgJHBhY2thZ2VzeyRwYWNrYWdlfXsnZGVwZGVw
dGgnfSA9PSAkcGFzczsKIyAgICBuZXh0IGlmICRjb3VudGVyKysgPiA0MDA7CiAgICBwcmludCAi
XHRkZXB0aCAkcGFzcyBhbmQgcGFja2FnZSBpcyAkcGFja2FnZVxuIiBpZiAkdmVyYm9zZTsKCiAg
ICAjIHdlIGNhbiBza2lwIHJlY29tbWVuZGVkIHBhY2thZ2VzCiAgICBuZXh0IHVubGVzcyBncmVw
KC9eJHBhY2thZ2UkLywgQHJlY2xpYnMpPT0wOwoKICAgIGlmIChncmVwKC9cYiRwYWNrYWdlXGIv
LCBAY2Fubm90YnVpbGQpID4gMCkgewogICAgICBwcmludCAiXHRcdCRwYWNrYWdlIGNhbm5vdCBi
ZSBidWlsdCBmb3IgbGFjayBvZiBjb21wb25lbnRzLCBza2lwcGluZ1xuIjsKICAgICAgbmV4dDsK
ICAgIH0KCiAgICAjIGNoZWNrIExpY2Vuc2UgZm9yIHN1c3BpY2lvdXMgdGV4dCAoaS5lLiBzaWdn
ZW5lcykKICAgIG15ICRsaWNlbnNlID0gJHBhY2thZ2VzeyRwYWNrYWdlfXtMaWNlbnNlfTsKIyAg
ICBpZiAoJGxpY2Vuc2UgPX4gbS8obm9uLT8oY29tbWVyY2lhbHxhY2FkZW1pY3xmcmVlfHByb2Zp
dCkpL2kpIHsKICAgIGlmICgkbGljZW5zZSA9fiBtLyhub24tPyhjb21tZXJjaWFsfGZyZWV8cHJv
Zml0KSkvaSkgewogICAgICAkbGljZW5zZSA9fiBzL1xuLy9tbzsJIyByZW1vdmUgbGluZSBicmVh
a3MKICAgICAgcHJpbnQgInNraXBwaW5nICRwYWNrYWdlIHdpdGggc3VzcGljaW91cyBsaWNlbnNl
OiAkbGljZW5zZVxuIjsKICAgICAgbmV4dDsKICAgIH0KCiAgICAjIHByZXBhcmUgZmlsZW5hbWVz
OgogICAgbXkgJHNvdXJjZWZpbGUgPSAiJG1pcnJvci8iIC4gJHBhY2thZ2VzeyRwYWNrYWdlfXtQ
YWNrYWdlfSAuICJfIiAuCiAgICAgICRwYWNrYWdlc3skcGFja2FnZX17VmVyc2lvbn0gLiAiLnRh
ci5neiI7CiAgICAjIGxvd2VyY2FzZSBwYWNrYWdlIG5hbWU6CiAgICBteSAkbGNwYWNrYWdlID0g
bG93ZXJDYXNlKCRwYWNrYWdlc3skcGFja2FnZX17UGFja2FnZX0pOwogICAgbXkgJHBhY2thZ2Vw
YXRoID0gJGxjcGFja2FnZSAuICItIiAuICRwYWNrYWdlc3skcGFja2FnZX17RGViVmVyc2lvbn07
CiAgICAkcGFja2FnZXN7JHBhY2thZ2V9e0RlYkRpcn0gPSAkcGFja2FnZXBhdGg7CiAgICAkcGFj
a2FnZXN7JHBhY2thZ2V9e0RlYk5hbWV9ID0gJGxjcGFja2FnZTsKICAgICRwYWNrYWdlc3skcGFj
a2FnZX17RGViQXJjaH0gPSBnZXRBcmNoaXRlY3R1cmUoJHNvdXJjZWZpbGUsICRiaW5hcmNoKTsK
CiAgICBteSAkZGVibmFtZSA9ICJyLWJpb2MtIiAuICRsY3BhY2thZ2U7CiAgICBteSAkZGViZmls
ZSA9ICRvdXRwdXQgLiAiLyIgLiAkZGVibmFtZSAuICJfIiAuCiAgICAgICRwYWNrYWdlc3skcGFj
a2FnZX17RGViUmVsZWFzZX0gLiAiXyIKCS4gJHBhY2thZ2VzeyRwYWNrYWdlfXtEZWJBcmNofSAu
ICIuZGViIjsgCiMgICAgaWYgKGdyZXAoL1xiJGRlYm5hbWVcYi8sIEBkZWJpYW5wa2dzKSA+IDAp
IHsKIyAgICAgIHByaW50ICJcdFx0JGRlYm5hbWUgYWxyZWFkeSBpbiBEZWJpYW4sIHNraXBwaW5n
XG4iOwojICAgICAgbmV4dDsKIyAgICB9CgogICAgaWYgKHN0YXQoJGRlYmZpbGUpKSB7CiAgICAg
IHByaW50ICJcdFx0JGRlYmZpbGUgYWxyZWFkeSBidWlsdCwgc2tpcHBpbmdcbiIgaWYgJHZlcmJv
c2U7CiAgICAgIG5leHQ7CiAgICB9CgogICAgIyMgZWRkOiBjcmVhdGUgYSBsaW5rIHRvIC5vcmln
LnRhci5neiwgc2ltaWxhciB0byByLXJlY29tbWVuZHMgaW4gUiBzcmNzCiAgICAjIyAgICAgIGFu
ZCBsaW5rIGl0IGluIGRpcmVjdGx5IGZyb20gdGhlIEJJT0MgbWlycm9yIGluIHN1YmRpcgogICAg
bXkgJG9yaWdzb3VyY2VmaWxlID0gJGxjcGFja2FnZSAuICJfIiAuIAogICAgICAkcGFja2FnZXN7
JHBhY2thZ2V9e0RlYlZlcnNpb259ICAuICIub3JpZy50YXIuZ3oiOwoKICAgIG15ICRnZW5lcmF0
ZWZpbGVzID0gMTsKICAgIGlmIChzdGF0KCRkZWJmaWxlKSkgewogICAgICAkZ2VuZXJhdGVmaWxl
cyA9IChzdGF0KCRkZWJmaWxlKS0+bXRpbWUgPCBzdGF0KCRvcmlnc291cmNlZmlsZSktPm10aW1l
KTsKICAgIH0KCiAgICAjIGV4cGFuZCBhcmNoaXZlcyBmb3IgcGFja2FnZSBidWlsZGluZwogICAg
IyBsaW5rKCRzb3VyY2VmaWxlLCAkb3JpZ3NvdXJjZWZpbGUpIG9yIGRpZSAiQ2Fubm90IGxpbmsg
JHNvdXJjZWZpbGUiOwogICAgY2hkaXIgIiRvdXRwdXQiIG9yIGRpZSAiQ2Fubm90IGNkIGludG8g
JG91dHB1dFxuIjsKICAgIHN5c3RlbSgibG4gLXNmIC4uLyRzb3VyY2VmaWxlICRvcmlnc291cmNl
ZmlsZSIpOyMgb3IgCiAgICAgICAgICAgICAgICAgI2RpZSAiQ2Fubm90IGxpbmsgLi4vJHNvdXJj
ZWZpbGUgdG8gJG9yaWdzb3VyY2VmaWxlXG4iOwogICAgc3lzdGVtKCJybSAtcmYgLi8kcGFja2Fn
ZXBhdGgiKTsgIyBvciBkaWUgIkNhbm5vdCByZW1vdmUgJHBhY2thZ2VwYXRoXG4iOwogICAgc3lz
dGVtKCJ0YXIgeHpmICRvcmlnc291cmNlZmlsZSIpOyAjIG9yIGRpZSAiQ2Fubm90IHVucGFjayAk
c291cmNlZmlsZVxuIjsKICAgIHJlbmFtZSgkcGFja2FnZXN7JHBhY2thZ2V9e1BhY2thZ2V9LCAk
cGFja2FnZXBhdGgpIG9yIAogICAgICBkaWUgIkNhbm5vdCByZW5hbWUgJHBhY2thZ2VzeyRwYWNr
YWdlfXtQYWNrYWdlfSB0byAkcGFja2FnZXBhdGhcbiI7CgogICAgIyBpZiBuZWVkZWQsIHBvcHVs
YXRlIHRoZSBkZWJpYW4gc3ViZGlyZWN0b3J5OgogICAgaWYgKCRnZW5lcmF0ZWZpbGVzIGFuZCBz
dGF0KCRvcmlnc291cmNlZmlsZSkpIHsKICAgICAgaWYgKC1kICIkcGFja2FnZXBhdGgvZGViaWFu
IikgewoJcHJpbnQgIlx0bnVraW5nIGRlYmlhbiBkaXJlY3RvcnkgZm9yICRwYWNrYWdlXG4iOwoJ
c3lzdGVtKCJybSAtcmYgJHBhY2thZ2VwYXRoL2RlYmlhbiIpICMgVG9ueSBSLiBoYWQgY3JlYXRl
ZCBzb21lCiAgICAgIH0KICAgICAgbWtkaXIgIiRwYWNrYWdlcGF0aC9kZWJpYW4iIG9yCiAJZGll
ICJDYW5ub3QgY3JlYXRlIGRlYmlhbi8gaW4gJHBhY2thZ2VwYXRoIjsKCiAgICAgIHdyaXRlUnVs
ZXMoXCV7JHBhY2thZ2VzeyRwYWNrYWdlfX0sICRtYWludGFpbmVybWFpbCk7CiAgICAgIHdyaXRl
Q29uZmlnKFwleyRwYWNrYWdlc3skcGFja2FnZX19LCAkbWFpbnRhaW5lcm1haWwsICRiaW5hcmNo
KTsKICAgICAgd3JpdGVDb3B5cmlnaHQoXCV7JHBhY2thZ2VzeyRwYWNrYWdlfX0sICRtYWludGFp
bmVybWFpbCk7CiAgICAgICN3cml0ZVJlYWRtZShcJXskcGFja2FnZXN7JHBhY2thZ2V9fSwgJG1h
aW50YWluZXJtYWlsKTsKICAgICAgd3JpdGVDaGFuZ2Vsb2coXCV7JHBhY2thZ2VzeyRwYWNrYWdl
fX0sICRtYWludGFpbmVybWFpbCk7CiAgICAgIHdyaXRlUG9zdGluc3QoXCV7JHBhY2thZ2VzeyRw
YWNrYWdlfX0sICRtYWludGFpbmVybWFpbCk7CiAgICAgIHdyaXRlUG9zdHJtKFwleyRwYWNrYWdl
c3skcGFja2FnZX19LCAkbWFpbnRhaW5lcm1haWwpOwogICAgICAjd3JpdGVGaWxlcyhcJXskcGFj
a2FnZXN7JHBhY2thZ2V9fSwgJG1haW50YWluZXJtYWlsKTsKCiAgICAgIHByaW50ICJidWlsZGlu
ZyBwYWNrYWdlICRkZWJmaWxlIC4uLlxuIjsKICAgICAgbXkgJGxvZ2ZpbGUgPSAkbGNwYWNrYWdl
IC4gIl8iIC4gCiAJJHBhY2thZ2VzeyRwYWNrYWdlfXtEZWJWZXJzaW9ufSAgLiAiLmxvZyI7CiAg
ICAgIHVubGVzcyAoJGRyeXJ1bikgewoJc3lzdGVtKCJjZCAkcGFja2FnZXBhdGg7IGRlYnVpbGQg
LXVjIC11cyAyPiYxID4gLi4vJGxvZ2ZpbGUiKTsKCWlmICghc3RhdCgiLi4vJGRlYmZpbGUiKSkg
ewoJICBkaWUgImJ1aWxkIGZhaWxlZCBmb3IgJGRlYmZpbGVcbiI7Cgl9CiAgICAgIH0KICAgIH0K
ICAgIGNoZGlyICIuLiIgb3IgZGllICJDYW5ub3QgY2hhbmdlIGJhY2tcbiI7CiAgICAjZGllICJT
dG9wIGhlcmUgZm9yIG5vd1xuIjsKICB9Cn0KcHJpbnQgIkRPTkVcbiI7CgoKI3ByaW50IER1bXBl
cihcJXBhY2thZ2VzKTsK
--YAnESqaLNa
Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename="BIOC2DEB.pm"
Content-Transfer-Encoding: base64

CiMgJElkOiBCSU9DMkRFQi5wbSx2IDEuMSAyMDA0LzA3LzI4IDAxOjIwOjUyIGVkZCBFeHAgJAoj
IGJhc2VkIG9uIENSQU4yREVCLnBtLHYgMS4yIDIwMDQvMDcvMTMgMTk6MDc6NTUgZWRkIEV4cCBl
ZGQgJAoKcGFja2FnZSBCSU9DMkRFQjsKCnJlcXVpcmUgc3RyaWN0OwpyZXF1aXJlIEV4cG9ydGVy
OwoKdXNlIERhdGE6OkR1bXBlcjsKdXNlIEZjbnRsOwp1c2UgVGV4dDo6V3JhcDsKCkBJU0EgPSBx
dyhFeHBvcnRlcik7ICAgICAgICAgICAgIyBtYWtlIHRoZXNlIHN5bWJvbHMga25vd24KQEVYUE9S
VCA9IHF3KGxvd2VyQ2FzZQoJICAgICBnZXREZXB0aAoJICAgICBnZXRBcmNoaXRlY3R1cmUKCSAg
ICAgd3JpdGVSdWxlcyAKCSAgICAgd3JpdGVDb25maWcKCSAgICAgd3JpdGVDb3B5cmlnaHQKCSAg
ICAgd3JpdGVSZWFkbWUKCSAgICAgd3JpdGVDaGFuZ2Vsb2cKCSAgICAgd3JpdGVQb3N0aW5zdAoJ
ICAgICB3cml0ZVBvc3RybQoJICAgICB3cml0ZUZpbGVzCgkgICAgIHNob3dIZWxwQW5kRXhpdCk7
CgpARVhQT1JUX09LID0gcXcoICk7CiVFWFBPUlRfVEFHUyA9IChhbGwgPT4gW0BFWFBPUlRfT0td
KTsKCiNteSAkVkVSU0lPTiA9IHNwcmludGYoIiVkLiVkIiwgcSRSZXZpc2lvbjogMS4xICQgPX4g
LyhcZCspXC4oXGQrKS8pOwpteSAkVkVSU0lPTiA9ICIwLjAuMSI7CgoKIyBmdW5jdGlvbiBmb3Ig
bG93Y2FzaW5nIHBhY2thZ2UgbmFtZXM6CnN1YiBsb3dlckNhc2UgewogIG15ICRuYW1lID0gc2hp
ZnQ7CiNteSAkb2xkbmFtZT0kbmFtZTsKICAkbmFtZSA9fiB0ci9bQS1aXS9bYS16XS87CiAgJG5h
bWUgPX4gcy8oXGQqKS0oXGQpLyQxXC4kMi87CiNwcmludCAibG93ZXJDYXNlOiAkb2xkbmFtZSAt
PiAkbmFtZVxuIjsKICByZXR1cm4gJG5hbWU7Cn0KCgojIHJlY3Vyc2l2ZWx5IGRldGVybWluZSBk
ZXB0aCBvZiBwYWNrYWdlIGluIGRlcGVuZGVuY3kgZ3JhcGgKIyBpbnB1dCBhcmd1bWVudCBpcyBh
IHBhY2thZ2UgbmFtZSwgcmV0dXJuIGNvZGUgaXMgdGhlIGRlcGVuZGVuY3kgbGV2ZWwKc3ViIGdl
dERlcHRoKCQkKSB7CiAgbXkgKCRwa2csICRhcmcpID0gQF87CiAgcmV0dXJuIDAgdW5sZXNzIGRl
ZmluZWQoJHBrZy0+eyRhcmd9KSBhbmQgZGVmaW5lZCgkcGtnLT57JGFyZ317ZGVwZW5kZW5jaWVz
fSk7CiAgbXkgJGRlcHRoID0gMDsKICBmb3JlYWNoIG15ICRkZXAgKEB7JHBrZy0+eyRhcmd9e2Rl
cGVuZGVuY2llc319KSB7CiAgICBteSAkZCA9IGdldERlcHRoKCRwa2csICRkZXApICsgMTsKICAg
ICRkZXB0aD0kZCBpZiAkZD4kZGVwdGg7CiAgfQogIHJldHVybiAkZGVwdGg7Cn0KCgpzdWIgZ2V0
QXJjaGl0ZWN0dXJlKCQkKSB7CiAgbXkgKCR0YXJiYWxsLCAkYmluYXJjaCkgPSBAXzsKICBteSAk
YXJjaCA9ICJhbGwiOwogIG9wZW4oUElQRSwgInRhciB0ZnogJHRhcmJhbGwgMj4mMSB8Iikgb3Ig
CiAgICBkaWUgIkNhbm5vdCBydW4gdGFyKDEpIG9uICR0YXJiYWxsXG4iOwogIHdoaWxlICg8UElQ
RT4pIHsKICAgIGlmICgvXi4qXC4oW2NoZkNdfGNwcHxjYykkLykgewogICAgICAkYXJjaCA9ICRi
aW5hcmNoOwogICAgfQogIH0KICByZXR1cm4oJGFyY2gpOwp9CgoKc3ViIHdyaXRlUnVsZXMoJCQp
IHsKICBteSAoJHBrZywgJG1haW50YWluZXIpID0gQF87CgogIG15ICRmaWxlID0gJHBrZy0+e0Rl
YkRpcn0gLiAiL2RlYmlhbi9ydWxlcyI7CiAgc3lzb3BlbihGSUxFLCAkZmlsZSAsIE9fV1JPTkxZ
IHwgT19DUkVBVCB8IE9fRUNYTCwgMDc1NSkKICAgIG9yIGRpZSAiY2Fubm90IG9wZW4gJGZpbGUi
OwoKICBwcmludCAiZ2VuZXJhdGluZyBydWxlcyAuLi5cbiIgaWYgJG1haW46OnZlcmJvc2U7CiMg
IG15ICRub3cgPSBQT1NJWDo6c3RyZnRpbWUgIiVhICViICVlICVZICVIOiVNOiVTICVaIiwgbG9j
YWx0aW1lOwogIG15ICRub3cgPSBQT1NJWDo6c3RyZnRpbWUgIiVhICViICVlICVZICIsIGxvY2Fs
dGltZTsKICBwcmludCBGSUxFIDw8RU9UCiMhL3Vzci9iaW4vbWFrZSAtZgojICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtYWtlZmlsZSAt
Ki0KIyBkZWJpYW4vcnVsZXMgZmlsZSBmb3IgdGhlIERlYmlhbi9HTlUgTGludXggcGFja2FnZSBc
J3ItYmlvYy0kcGtnLT57RGViTmFtZX1cJwojIENvcHlyaWdodCAyMDA0IGJ5ICRtYWludGFpbmVy
CiMKIyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbiAkbm93IGJ5IEJJT0MyREVCICRWRVJTSU9O
CgppbmNsdWRlIC91c3Ivc2hhcmUvY2Ricy8xL3J1bGVzL2RlYmhlbHBlci5tawppbmNsdWRlIC91
c3Ivc2hhcmUvY2Ricy8xL2NsYXNzL2xhbmdjb3JlLm1rCgojIFdlIG5lZWQgdGhlIEJJT0MgKHVw
c3RyZWFtKSBuYW1lIAojI2Jpb2NOYW1lICAgICAgIDo9IFwkKHNoZWxsIGdyZXAgXCJeUGFja2Fn
ZTpcXFx8XkJ1bmRsZTpcIiBERVNDUklQVElPTiB8IGF3ayAie3ByaW50IFwkMn0iKQpiaW9jTmFt
ZSAgICAgICAgOj0gXCQoc2hlbGwgZ3JlcCBcIl5QYWNrYWdlOlxcXHxeQnVuZGxlOlwiIERFU0NS
SVBUSU9OIHwgc2VkICdzL1tcXHQgXS8vZycgfCBjdXQgLWQ6IC1mMikKIyBhbmQgd2UgbmVlZCB0
byBidWlsZCBhIERlYmlhbiBQb2xpY3ktY29uZm9ybWFudCBsb3dlci1jYXNlIHBhY2thZ2UgbmFt
ZQpiaW9jTmFtZUxDICAgICAgOj0gXCQoc2hlbGwgZWNobyBcJChiaW9jTmFtZSkgfCB0ciAiW0Et
Wl0iICJbYS16XSIgKQojIHdoaWNoIHdlIGNhbiB1c2UgdG8gYnVpbGQgdGhlIHBhY2thZ2UgZGly
ZWN0b3J5IApwYWNrYWdlICAgICAgICAgOj0gci1iaW9jLVwkKGJpb2NOYW1lTEMpCiMgd2hpY2gg
d2UgdXNlIGZvciB0aGUgdG8tYmUtaW5zdGFsbGVkLWluIGRpcmVjdG9yeQpkZWJSbGliICAgICAg
ICAgOj1cJChDVVJESVIpL2RlYmlhbi9cJChwYWNrYWdlKS91c3IvbGliL1Ivc2l0ZS1saWJyYXJ5
Cgpjb21tb24taW5zdGFsbC1pbmRlcDo6IFJfYW55X2FyY2gKY29tbW9uLWluc3RhbGwtYXJjaDo6
IFJfYW55X2FyY2gKClJfYW55X2FyY2g6CglkaF9pbnN0YWxsZGlycyAgICAgICAgICB1c3IvbGli
L1Ivc2l0ZS1saWJyYXJ5CglSIENNRCBJTlNUQUxMIC1sIFwkKGRlYlJsaWIpIC4KCSMjcm0gLXJm
IGRlYmlhbi9cJChiaW9jTmFtZSkKCSMjbWtkaXIgLXAgZGViaWFuL1wkKGJpb2NOYW1lKQoJIyNm
aW5kIC4gLW5vdCAtcGF0aCAiLi9kZWJpYW4qIiB8IGNwaW8gLXAgLW0gZGViaWFuL1wkKGJpb2NO
YW1lKQoJIyNjZCBkZWJpYW4gJiYgUiBDTUQgY2hlY2sgXCQoYmlvY05hbWUpICYmIHJtIC1yZiBc
JChiaW9jTmFtZSkKCS1ybSAtdmYgXCQoZGViUmxpYikvUi5jc3MgXCQoZGViUmxpYikvXCQoYmlv
Y05hbWUpL0NPUFlJTkcgCgllY2hvICJiaW9jTmFtZSBpcyBcJChiaW9jTmFtZSkiCgpFT1QKOwog
IGNsb3NlKEZJTEUpOwogIGNobW9kKDA3NTUsICRmaWxlKSBvciBkaWUgIkNhbm5vdCBjaG1vZCAk
ZmlsZVxuIjsKCn0KCgpzdWIgd3JpdGVDb25maWcoJCQkKSB7CiAgbXkgKCRwa2csICRtYWludGFp
bmVyLCAkYmluYXJjaCkgPSBAXzsKICAjcHJpbnQgRHVtcGVyKFwkcGtnKTsKICBteSAkZmlsZSA9
ICRwa2ctPntEZWJEaXJ9IC4gIi9kZWJpYW4vY29udHJvbCI7CiAgc3lzb3BlbihGSUxFLCAkZmls
ZSAsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fRUNYTCwgMDY0NCkKICAgIG9yIGRpZSAiY2Fubm90
IG9wZW4gJGZpbGUiOwogIHByaW50ICJnZW5lcmF0aW5nIGNvbnRyb2wgLi4uXG4iIGlmICRtYWlu
Ojp2ZXJib3NlOwoKICAkYXJjaD0iYWxsIjsKICAkZmlsZWFyY2g9ImFsbCI7CiAgJGFyY2hkZXBz
PSIiOwogICRpbmRlcD0iLUluZGVwIjsKICBpZiAoJHBrZy0+e0RlYkFyY2h9IGVxICRiaW5hcmNo
KSB7CiAgICAkYXJjaCA9ICJhbnkiOwogICAgJGZpbGVhcmNoID0gJGJpbmFyY2g7CiAgICAkYXJj
aGRlcHMgPSAiXCR7c2hsaWJzOkRlcGVuZHN9LCAiOwogICAgJGluZGVwPSIiOwogIH0KCiAgJGRw
cz0iIjsKICBmb3JlYWNoICRkZXAgKEB7JHBrZy0+e2RlYmlhbmRlcGVuZGVuY2llc319KSB7CiAg
ICAkZHBzID0gJGRwcyAuICIsICIgLiAkZGVwOwogIH0KCiAgJGJkcHM9IiI7CiAgZm9yZWFjaCAk
ZGVwIChAeyRwa2ctPntkZWJpYW5idWlsZGRlcGVuZGVuY2llc319KSB7CiAgICAkYmRwcyA9ICRi
ZHBzIC4gIiwgIiAuICRkZXA7CiAgfQoKICBwcmludCBGSUxFIDw8RU9UClNvdXJjZTogJHBrZy0+
e0RlYk5hbWV9ClNlY3Rpb246IG1hdGgKUHJpb3JpdHk6IG9wdGlvbmFsCk1haW50YWluZXI6ICRt
YWludGFpbmVyClN0YW5kYXJkcy1WZXJzaW9uOiAzLjYuMS4xCkJ1aWxkLURlcGVuZHMkaW5kZXA6
IHItYmFzZS1kZXYgKD4+IDEuOS4wKSwgZGViaGVscGVyICg+PiAzLjAuMCksIGNkYnMgJGJkcHMK
ClBhY2thZ2U6IHItYmlvYy0kcGtnLT57RGViTmFtZX0KQXJjaGl0ZWN0dXJlOiAkYXJjaApEZXBl
bmRzOiAkYXJjaGRlcHMgci1iYXNlLWNvcmUgJGRwcwpFT1QKOwoKICAkVGV4dDo6V3JhcDo6Y29s
dW1ucyA9IDcyOwkjIHdyYXAgdGhlIERlc2NyaXB0aW9uIHBlciBEZWJpYW4gUG9saWN5CgogIGlm
IChsZW5ndGgoJHBrZy0+e1RpdGxlfSkgPCA1MCkgewogICAgcHJpbnQgRklMRSAiRGVzY3JpcHRp
b246IEdOVSBSIHBhY2thZ2UgXCIkcGtnLT57VGl0bGV9XCJcbiI7CiAgfSBlbHNlIHsKICAgIHBy
aW50IEZJTEUgIkRlc2NyaXB0aW9uOiBHTlUgUiBwYWNrYWdlIFwiIiAuCiAgICAgIHN1YnN0cigk
cGtnLT57VGl0bGV9LCAwLCA1MCksICIuLi5cIlxuIjsKICAgIHByaW50IEZJTEUgd3JhcCgiICIs
ICIgIiwgJHBrZy0+e1RpdGxlfSwgIi5cbiIpOwogIH0KCiAgJGRlc2MgPSAkcGtnLT57RGVzY3Jp
cHRpb259OwogICMgIGlmICghZGVmaW5lZCgkcGtnLT57Q29udGFpbnN9KSkgewogICN9IGVsc2Ug
ewogICMgICRkZXNjID0gJHBrZy0+e0J1bmRsZURlc2NyaXB0aW9ufTsKICAjfQogICRkZXNjID1+
IHMvXG4vLzsKCiAgcHJpbnQgRklMRSB3cmFwKCIgIiwgIiAiLCAkZGVzYywgIlxuIik7CiAgcHJp
bnQgRklMRSAiIC5cbiI7CiAgcHJpbnQgRklMRSB3cmFwKCIgIiwgIiAiLCAiQXV0aG9yKHMpOiAi
LCAkcGtnLT57QXV0aG9yfSwgIlxuIik7CiMgIHByaW50IEZJTEUgd3JhcCgiICIsICIgIiwgIkRh
dGU6ICIsICRwa2ctPntEYXRlfSwgIlxuIik7CgogIGlmIChkZWZpbmVkKCRwa2ctPntVUkx9KSBh
bmQgKCRwa2ctPntVUkx9IG5lICJOQSIpKSB7CSMgVVJMIGZyb20gREVTQ1JJUFRJT046CiAgICBw
cmludCBGSUxFICIgLlxuIjsKICAgIHByaW50IEZJTEUgd3JhcCgiICIsICIgIiwgIlVSTDoiLCAk
cGtnLT57VVJMfSwgIlxuIik7CiAgfQoKICBjbG9zZShGSUxFKTsKfQoKCgpzdWIgd3JpdGVDb3B5
cmlnaHQoJCQpIHsKICBteSAoJHBrZywgJG1haW50YWluZXIpID0gQF87CgogIGlmKCFkZWZpbmVk
KCgkcGtnLT57TGljZW5zZX0pKSkgewogICAgJGxpY2Vuc2U9InVua25vd24iOwogIH0gZWxzZSB7
CiAgICAkbGljZW5zZT0kcGtnLT57TGljZW5zZX07CiAgICAkbGljZW5zZSA9fiBzL1xuLy9nOwog
IH0KICBteSAkZmlsZSA9ICRwa2ctPntEZWJEaXJ9IC4gIi9kZWJpYW4vY29weXJpZ2h0IjsKICBz
eXNvcGVuKEZJTEUsICRmaWxlICwgT19SRFdSIHwgT19DUkVBVCB8IE9fRUNYTCwgMDY0NCkKICAg
IG9yIGRpZSAiY2Fubm90IG9wZW4gJGZpbGUiOwogIHByaW50ICJnZW5lcmF0aW5nIGNvcHlyaWdo
dCAuLi5cbiIgaWYgJG1haW46OnZlcmJvc2U7CiAgcHJpbnQgRklMRSA8PEVPVApUaGlzIGlzIHRo
ZSBEZWJpYW4gR05VL0xpbnV4IHItYmlvYy0kcGtnLT57RGViTmFtZX0gcGFja2FnZSBvZiAkcGtn
LT57UGFja2FnZX0uCkl0IHdhcyB3cml0dGVuIGJ5ICRwa2ctPntBdXRob3J9LgoKVGhpcyBwYWNr
YWdlIHdhcyBjcmVhdGVkIGJ5ICRtYWludGFpbmVyCnVzaW5nIHRoZSBhdXRvbWF0ZWQgYnVpbGQg
c2NyaXB0IGJpb2MyZGViIHZlcnNpb24gJFZFUlNJT04uIEJpb2MyZGViIAppcyBhIG1vZGlmaWVk
IGFuZCBleHRlbmRlZCB2ZXJzaW9uIG9mIEFsYnJlY2h0IEdlYmhhcmR0J3MgYnVpbGQgc2NyaXB0
CglodHRwOi8vd3d3Lm1hdGgudW5pLWtsdS5hYy5hdC9+YWdlYmhhcmQvYnVpbGQtUi1jb250cmli
LWRlYnMucGwKVGhlIHBhY2thZ2Ugc291cmNlcyB3ZXJlIGRvd25sb2FkZWQgZnJvbSAKICAgICAg
ICBodHRwOi8vd3d3LmJpb2NvbmR1Y3Rvci5vcmcvCnVzaW5nIGZhY2lsaXRpZXMgaW4gdGhlIERl
YmlhbiBwYWNrYWdlIHItYmlvYy1yZXBvc3Rvb2xzLgoKVGhlIHBhY2thZ2Ugd2FzIHJlbmFtZWQg
ZnJvbSBpdHMgdXBzdHJlYW0gbmFtZSBcJyRwa2ctPntQYWNrYWdlfVwnIHRvIFwnci1iaW9jLSRw
a2ctPntEZWJOYW1lfVwnCnRvIGZpdCB0aGUgcGF0dGVybiBvZiBCSU9DIHBhY2thZ2VzIGZvciBS
LgoKVGhlIENvcHlyaWdodCwgYXMgYXNzZXJ0ZWQgaW4gdGhlIERFU0NSSVBUSU9OIGZpbGUsIGlz
OgokbGljZW5zZQoKT24gYSBEZWJpYW4gR05VL0xpbnV4IHN5c3RlbSwgY29tbW9uIGxpY2Vuc2Vz
IGFyZSBpbmNsdWRlZCBpbiB0aGUgZGlyZWN0b3J5Ci91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2Vz
Ly4KCkZvciByZWZlcmVuY2UsIHRoZSB1cHN0cmVhbSBERVNDUklQVElPTiBjYW4gYmUgZm91bmQg
YXQKL3Vzci9saWIvUi9zaXRlLWxpYnJhcnkvJHBrZy0+e1BhY2thZ2V9L0RFU0NSSVBUSU9OCgpF
T1QKOwojICcKICBjbG9zZShGSUxFKTsKfQoKCgpzdWIgd3JpdGVSZWFkbWUoJCQpIHsKICBteSAo
JHBrZywgJG1haW50YWluZXIpID0gQF87CgogIG15ICRmaWxlID0gJHBrZy0+e0RlYkRpcn0gLiAi
L2RlYmlhbi9SRUFETUUuRGViaWFuIjsKICBzeXNvcGVuKEZJTEUsICRmaWxlICwgT19SRFdSIHwg
T19DUkVBVCB8IE9fRUNYTCwgMDY0NCkKICAgIG9yIGRpZSAiY2Fubm90IG9wZW4gJGZpbGUiOwog
IHByaW50ICJnZW5lcmF0aW5nIFJFQURNRS5EZWJpYW4gLi4uXG4iIGlmICRtYWluOjp2ZXJib3Nl
OwogICRkYXRlID0gUE9TSVg6OnN0cmZ0aW1lICIlYSwgJWUgJWIgJVkgJUg6JU06JVMgJXoiLCBs
b2NhbHRpbWU7CiAgcHJpbnQgRklMRSA8PEVPVApyLWJpb2MtJHBrZy0+e0RlYk5hbWV9IGZvciBE
ZWJpYW4KClRoaXMgRGViaWFuIHBhY2thZ2Ugd2FzIGNyZWF0ZWQgZnJvbSBzb3VyY2VzIG9uIHRo
ZSBCaW9Db25kdWN0b3IKd2Vic2l0ZSBhdCB3d3cuYmlvY29uZHVjdG9yLm9yZy4KCgpUaGUgcGFj
a2FnZSB3YXMgYnVpbHQgdXNpbmcgdGhlIHNjcmlwdCBiaW9jMmRlYiwgd2hpY2ggd2FzIGRlcml2
ZWQKZnJvbSBodHRwOi8vd3d3Lm1hdGgudW5pLWtsdS5hYy5hdC9+YWdlYmhhcmQvYnVpbGQtUi1j
b250cmliLWRlYnMucGwKYnkgQWxicmVjaHQgR2ViaGFyZC4KCiAtLSAkbWFpbnRhaW5lciAgJGRh
dGUKRU9UCjsKICBjbG9zZShGSUxFKTsKfQoKCnN1YiB3cml0ZUNoYW5nZWxvZygkJCkgewogIG15
ICgkcGtnLCAkbWFpbnRhaW5lcikgPSBAXzsKCiAgbXkgJGZpbGUgPSAkcGtnLT57RGViRGlyfSAu
ICIvZGViaWFuL2NoYW5nZWxvZyI7CiAgc3lzb3BlbihGSUxFLCAkZmlsZSAsIE9fUkRXUiB8IE9f
Q1JFQVQgfCBPX0VDWEwsIDA2NDQpCiAgICBvciBkaWUgImNhbm5vdCBvcGVuICRmaWxlIjsKICAk
ZGF0ZSA9IFBPU0lYOjpzdHJmdGltZSAiJWEsICVlICViICVZICVIOiVNOiVTICV6IiwgbG9jYWx0
aW1lOwogIHByaW50ICJnZW5lcmF0aW5nIGNoYW5nZWxvZyAuLi5cbiIgaWYgJG1haW46OnZlcmJv
c2U7CiAgcHJpbnQgRklMRSA8PEVPVAokcGtnLT57RGViTmFtZX0gKCRwa2ctPntEZWJSZWxlYXNl
fSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CgogICogbWVjaGFuaWNhbGx5IGdlbmVyYXRlZCB1c2lu
ZyBiaW9jMmRlYiAkVkVSU0lPTgoKIC0tICRtYWludGFpbmVyICAkZGF0ZQpFT1QKOwogIGNsb3Nl
KEZJTEUpOwp9CgoKCnN1YiB3cml0ZVBvc3RpbnN0KCQkKSB7CiAgbXkgKCRwa2csICRtYWludGFp
bmVyKSA9IEBfOwoKICBteSAkZmlsZSA9ICRwa2ctPntEZWJEaXJ9IC4gIi9kZWJpYW4vcG9zdGlu
c3QiOwogIHN5c29wZW4oRklMRSwgJGZpbGUgLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19FQ1hMLCAw
NjQ0KQogICAgb3IgZGllICJjYW5ub3Qgb3BlbiAkZmlsZSI7CgogIHByaW50ICJnZW5lcmF0aW5n
IHBvc3RpbnN0IC4uLlxuIiBpZiAkbWFpbjo6dmVyYm9zZTsKICBwcmludCBGSUxFIDw8RU9UCiMh
L2Jpbi9zaAojIAkJCQkJCQktKi0gbWFrZWZpbGUgLSotCiMgZGViaWFuL3Bvc3RpbnN0IGZpbGUg
Zm9yIHRoZSBEZWJpYW4vR05VIExpbnV4IHItYmlvYy0kcGtnLT57RGViTmFtZX0gcGFja2FnZQoj
IENvcHlyaWdodCAyMDA0IGJ5ICRtYWludGFpbmVyCgpzZXQgLWUKCiNERUJIRUxQRVIjCgpjYXNl
ICJcJDEiIGluCiAgICBjb25maWd1cmUpCglSIENNRCBwZXJsIC91c3IvbGliL1Ivc2hhcmUvcGVy
bC9idWlsZC1oZWxwLnBsIC0taHRtbGxpc3RzCiAgICAgICAgOzsKICAgIGFib3J0LXVwZ3JhZGV8
YWJvcnQtcmVtb3ZlfGFib3J0LWRlY29uZmlndXJlKQogICAgICAgIDs7CiAgICAqKQogICAgICAg
IGVjaG8gInBvc3RpbnN0IGNhbGxlZCB3aXRoIHVua25vd24gYXJndW1lbnQgXCdcJDFcJyIgPiYy
CiAgICAgICAgOzsKZXNhYwoKZXhpdCAwCgpFT1QKOwogIGNsb3NlKEZJTEUpOwogIGNobW9kKDA3
NTUsICRmaWxlKSBvciBkaWUgIkNhbm5vdCBjaG1vZCAkZmlsZVxuIjsKfQoKCnN1YiB3cml0ZVBv
c3RybSgkJCkgewogIG15ICgkcGtnLCAkbWFpbnRhaW5lcikgPSBAXzsKCiAgbXkgJGZpbGUgPSAk
cGtnLT57RGViRGlyfSAuICIvZGViaWFuL3Bvc3RybSI7CiAgc3lzb3BlbihGSUxFLCAkZmlsZSAs
IE9fUkRXUiB8IE9fQ1JFQVQgfCBPX0VDWEwsIDA2NDQpCiAgICBvciBkaWUgImNhbm5vdCBvcGVu
ICRmaWxlIjsKCiAgcHJpbnQgImdlbmVyYXRpbmcgcG9zdHJtIC4uLlxuIiBpZiAkbWFpbjo6dmVy
Ym9zZTsKICBwcmludCBGSUxFIDw8RU9UCiMhL2Jpbi9zaAojIAkJCQkJCQktKi0gbWFrZWZpbGUg
LSotCiMgZGViaWFuL3Bvc3RpbnN0IGZpbGUgZm9yIHRoZSBEZWJpYW4vR05VIExpbnV4IHItYmlv
Yy0kcGtnLT57RGViTmFtZX0gcGFja2FnZQojIENvcHlyaWdodCAyMDA0IGJ5ICRtYWludGFpbmVy
CgpzZXQgLWUKCiNERUJIRUxQRVIjCgpjYXNlICJcJDEiIGluCiAgICB1cGdyYWRlfHJlbW92ZXxw
dXJnZSkKCVIgQ01EIHBlcmwgL3Vzci9saWIvUi9zaGFyZS9wZXJsL2J1aWxkLWhlbHAucGwgLS1o
dG1sbGlzdHMKICAgICAgICA7OwogICAgZmFpbGVkLXVwZ3JhZGV8YWJvcnQtaW5zdGFsbHxhYm9y
dC11cGdyYWRlfGRpc2FwcGVhcikKICAgICAgICA7OwogICAgKikKICAgICAgICBlY2hvICJwb3N0
cm0gY2FsbGVkIHdpdGggdW5rbm93biBhcmd1bWVudCBcJ1wkMVwnIiA+JjIKICAgICAgICA7Owpl
c2FjCgoKZXhpdCAwCgpFT1QKOwogIGNsb3NlKEZJTEUpOwogIGNobW9kKDA3NTUsICRmaWxlKSBv
ciBkaWUgIkNhbm5vdCBjaG1vZCAkZmlsZVxuIjsKfQoKCgpzdWIgd3JpdGVGaWxlcygkJCkgewkJ
IyBub3QgcmVhbGx5IG5lZWRlZAogIG15ICgkcGtnLCAkbWFpbnRhaW5lcikgPSBAXzsKCiAgbXkg
JGZpbGUgPSAkcGtnLT57RGViRGlyfSAuICIvZGViaWFuL2ZpbGVzIjsKICBzeXNvcGVuKEZJTEUs
ICRmaWxlICwgT19SRFdSIHwgT19DUkVBVCB8IE9fRUNYTCwgMDY0NCkgCiAgICBvciBkaWUgImNh
bm5vdCBvcGVuICRmaWxlIjsKICBwcmludCAiZ2VuZXJhdGluZyBmaWxlcyAuLi5cbiIgaWYgJG1h
aW46OnZlcmJvc2U7CgogIGlmIChkZWZpbmVkKCRwa2ctPntDb250YWluc30pKSB7CiAgICBAc3Vi
cGFja2FnZXMgPSBzcGxpdCgvXHMrLywkcGtnLT57Q29udGFpbnN9KTsKICB9CgogIGlmICghZGVm
aW5lZCgkcGtnLT57Q29udGFpbnN9KSkgewogICAgcHJpbnQgRklMRSA8PEVPVAokcHJlZml4L2xp
Yi9SL3NpdGUtbGlicmFyeS8kcGtnLT57UGFja2FnZX0KRU9UCiAgICAgIDsKICB9IGVsc2Ugewog
ICAgZm9yZWFjaCAkc3ViZGlyIChAc3VicGFja2FnZXMpIHsKICAgICAgcHJpbnQgRklMRSA8PEVP
VAokcHJlZml4L2xpYi9SL3NpdGUtbGlicmFyeS8kc3ViZGlyCkVPVAoJOwogICAgfQogIH0KICBj
bG9zZShGSUxFKTsKfQoKc3ViIHNob3dIZWxwQW5kRXhpdCgpIHsKICBteSAkbmFtZSA9ICJiaW9j
MmRlYiI7CiAgcHJpbnQgU1RERVJSICIKJG5hbWUgLS0gQ29udmVydCBSIHBhY2thZ2VzIGZyb20g
QklPQyBpbnRvIERlYmlhbiBwYWNrYWdlcwoKVXNhZ2U6CiAgICAkbmFtZSBbb3B0aW9uc10KCk9w
dGlvbnM6CiAgICAtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAKICAg
IC0tdmVyYm9zZSAgICAgICAgICAgICAgICAgICBtb3JlIHZlcmJvc2Ugb3BlcmF0aW9uIAogICAg
LS1kZWJ1ZwkJICAgICAgICBldmVuIG1vcmUgdmVyYm9zZSBmb3IgZGVidWdnaW5nIHB1cnBvc2Vz
CgpFeGFtcGxlOgogICAgJG5hbWUgLS12ZXJib3NlClxuIjsKICBleGl0IDE7Cn0KCjE7CQkJCSMg
cmVxdWlyZWQgZm9yIHBhY2thZ2UgZmlsZQo=
--YAnESqaLNa
Content-Type: text/plain; charset=us-ascii
Content-Description: .signature
Content-Transfer-Encoding: 7bit



-- 
Better to have an approximate answer to the right question than a precise 
answer to the wrong question.  --  John Tukey as quoted by John Chambers

--YAnESqaLNa--