Adding an update parameter to the <zip> task

[email protected] Thu, 13 Dec 2012 14:32:02 +0100
Newsgroups gmane.comp.windows.dotnet.nant.devel
Message-ID <OF33BD55F9.7ABC2A1F-ONC1257AD3.004A580D-C1257AD3.004A5810@solog.net>
--=_mixed 004A580FC1257AD3_=
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=ISO-8859-1

<font face=3D"Default Sans Serif,Verdana,Arial,Helvetica,sans-serif" size=
=3D"2"><DIV>Attached is a first draft of a <A href=3D"https://github.com/na=
nt/nant/tree/master/src/NAnt.Compression/Tasks/ZipTask.cs">https://github.c=
om/nant/nant/tree/master/src/NAnt.Compression/Tasks/ZipTask.cs</A> version =
allowing to append files to an existing zip archive (see <A href=3D"http://=
ant.apache.org/manual/Tasks/zip.html">http://ant.apache.org/manual/Tasks/zi=
p.html</A>).</DIV>
<DIV>Is it worth writing a unit test for it? What do you think?</DIV>
<DIV>/J</DIV>
<DIV></DIV></font>
--=_mixed 004A580FC1257AD3_=
Content-Type: application/octet-stream; name="ZipTask.cs"
Content-Disposition: attachment; filename="ZipTask.cs"
Content-Transfer-Encoding: base64

Ly8gTkFudCAtIEEgLk5FVCBidWlsZCB0b29sCi8vIENvcHlyaWdodCAoQykgMjAwMSBHZXJyeSBT
aGF3Ci8vCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci8vIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi8vIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAovLyBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgovLyBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlCi8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi8vCi8v
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKLy8KLy8gTWlrZSBLcnVlZ2VyICht
aWtlQGljc2hhcnBjb2RlLm5ldCkKLy8gR2VycnkgU2hhdyAoZ2Vycnlfc2hhd0B5YWhvby5jb20p
Cgp1c2luZyBTeXN0ZW07CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9uczsKdXNpbmcgU3lzdGVtLkds
b2JhbGl6YXRpb247CnVzaW5nIFN5c3RlbS5JTzsKdXNpbmcgU3lzdGVtLlRleHQ7Cgp1c2luZyBJ
Q1NoYXJwQ29kZS5TaGFycFppcExpYi5DaGVja3N1bXM7CnVzaW5nIElDU2hhcnBDb2RlLlNoYXJw
WmlwTGliLlppcDsKCnVzaW5nIE5BbnQuQ29yZTsKdXNpbmcgTkFudC5Db3JlLkF0dHJpYnV0ZXM7
CnVzaW5nIE5BbnQuQ29yZS5UeXBlczsKdXNpbmcgTkFudC5Db3JlLlV0aWw7Cgp1c2luZyBOQW50
LkNvbXByZXNzaW9uLlR5cGVzOw0KdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWM7Cgpu
YW1lc3BhY2UgTkFudC5Db21wcmVzc2lvbi5UYXNrcyB7CiAgICAvLy8gPHN1bW1hcnk+CiAgICAv
Ly8gQ3JlYXRlcyBhIHppcCBmaWxlIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlc2V0cy4KICAgIC8v
LyA8L3N1bW1hcnk+CiAgICAvLy8gPHJlbWFya3M+CiAgICAvLy8gICA8cGFyYT4KICAgIC8vLyAg
IFVzZXMgPHNlZSBocmVmPSJodHRwOi8vd3d3Lmljc2hhcnBjb2RlLm5ldC9PcGVuU291cmNlL1No
YXJwWmlwTGliLyI+I3ppcGxpYjwvc2VlPgogICAgLy8vICAgKFNoYXJwWmlwTGliKSwgYW4gb3Bl
biBzb3VyY2UgVGFyL1ppcC9HWmlwIGxpYnJhcnkgd3JpdHRlbiBlbnRpcmVseSBpbiBDIy4KICAg
IC8vLyAgIDwvcGFyYT4KICAgIC8vLyA8L3JlbWFya3M+CiAgICAvLy8gPGV4YW1wbGU+CiAgICAv
Ly8gICA8cGFyYT4KICAgIC8vLyAgIFppcCBhbGwgZmlsZXMgaW4gPGM+JHtidWlsZC5kaXJ9PC9j
PiBhbmQgPGM+JHtkb2MuZGlyfTwvYz4gaW50byBhIGZpbGUKICAgIC8vLyAgIGNhbGxlZCAmcXVv
dDtiYWNrdXAuemlwJnF1b3Q7LgogICAgLy8vICAgPC9wYXJhPgogICAgLy8vICAgPGNvZGU+CiAg
ICAvLy8gICAgIDwhW0NEQVRBWwogICAgLy8vIDx6aXAgemlwZmlsZT0iYmFja3VwLnppcCI+CiAg
ICAvLy8gICAgIDxmaWxlc2V0IGJhc2VkaXI9IiR7YmluLmRpcn0iIHByZWZpeD0iYmluIj4KICAg
IC8vLyAgICAgICAgIDxpbmNsdWRlIG5hbWU9IioqLyoiIC8+CiAgICAvLy8gICAgIDwvZmlsZXNl
dD4KICAgIC8vLyAgICAgPGZpbGVzZXQgYmFzZWRpcj0iJHtkb2MuZGlyfSIgcHJlZml4PSJkb2Mi
PgogICAgLy8vICAgICAgICAgPGluY2x1ZGUgbmFtZT0iKiovKiIgLz4KICAgIC8vLyAgICAgPC9m
aWxlc2V0PgogICAgLy8vIDwvemlwPgogICAgLy8vICAgICBdXT4KICAgIC8vLyAgIDwvY29kZT4K
ICAgIC8vLyA8L2V4YW1wbGU+CiAgICBbVGFza05hbWUoInppcCIpXQogICAgcHVibGljIGNsYXNz
IFppcFRhc2sgOiBUYXNrIHsKICAgICAgICAjcmVnaW9uIFByaXZhdGUgSW5zdGFuY2UgRmllbGRz
CgogICAgICAgIHByaXZhdGUgRmlsZUluZm8gX3ppcGZpbGU7CiAgICAgICAgcHJpdmF0ZSBpbnQg
X3ppcGxldmVsID0gNjsgCiAgICAgICAgcHJpdmF0ZSBaaXBGaWxlU2V0Q29sbGVjdGlvbiBfZmls
ZXNldHMgPSBuZXcgWmlwRmlsZVNldENvbGxlY3Rpb24oKTsKICAgICAgICBwcml2YXRlIERhdGVU
aW1lIF9zdGFtcERhdGVUaW1lOwogICAgICAgIHByaXZhdGUgc3RyaW5nIF9jb21tZW50OwogICAg
ICAgIHByaXZhdGUgYm9vbCBfaW5jbHVkZUVtcHR5RGlyczsNCiAgICAgICAgcHJpdmF0ZSBib29s
IF9mbGF0dGVuOw0KICAgICAgICBwcml2YXRlIGJvb2wgX3VwZGF0ZTsNCiAgICAgICAgcHJpdmF0
ZSBEdXBsaWNhdGVIYW5kbGluZyBfZHVwbGljYXRlSGFuZGxpbmcgPSBEdXBsaWNhdGVIYW5kbGlu
Zy5BZGQ7CiAgICAgICAgcHJpdmF0ZSBFbmNvZGluZyBfZW5jb2Rpbmc7CiAgICAgICAgcHJpdmF0
ZSBIYXNodGFibGUgX2FkZGVkRGlycyA9IG5ldyBIYXNodGFibGUoKTsKICAgICAgICBwcml2YXRl
IEhhc2h0YWJsZSBfZmlsZUVudHJpZXMgPSBuZXcgSGFzaHRhYmxlKCk7CgogICAgICAgICNlbmRy
ZWdpb24gUHJpdmF0ZSBJbnN0YW5jZSBGaWVsZHMKCiAgICAgICAgI3JlZ2lvbiBQdWJsaWMgSW5z
dGFuY2UgUHJvcGVydGllcwoKICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgLy8vIFRoZSB6
aXAgZmlsZSB0byBjcmVhdGUuCiAgICAgICAgLy8vIDwvc3VtbWFyeT4KICAgICAgICBbVGFza0F0
dHJpYnV0ZSgiemlwZmlsZSIsIFJlcXVpcmVkPXRydWUpXQogICAgICAgIHB1YmxpYyBGaWxlSW5m
byBaaXBGaWxlIHsKICAgICAgICAgICAgZ2V0IHsgcmV0dXJuIF96aXBmaWxlOyB9CiAgICAgICAg
ICAgIHNldCB7IF96aXBmaWxlID0gdmFsdWU7IH0KICAgICAgICB9CgogICAgICAgIC8vLyA8c3Vt
bWFyeT4KICAgICAgICAvLy8gVGhlIGNvbW1lbnQgZm9yIHRoZSBmaWxlLgogICAgICAgIC8vLyA8
L3N1bW1hcnk+CiAgICAgICAgW1Rhc2tBdHRyaWJ1dGUoImNvbW1lbnQiKV0KICAgICAgICBwdWJs
aWMgc3RyaW5nIENvbW1lbnQgewogICAgICAgICAgICBnZXQgeyByZXR1cm4gX2NvbW1lbnQ7IH0K
ICAgICAgICAgICAgc2V0IHsgX2NvbW1lbnQgPSBTdHJpbmdVdGlscy5Db252ZXJ0RW1wdHlUb051
bGwodmFsdWUpOyB9CiAgICAgICAgfQoKICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgLy8v
IERhdGUvdGltZSBzdGFtcCBmb3IgdGhlIGZpbGVzIGluIHRoZSBmb3JtYXQgTU0vREQvWVlZWSBI
SDpNTTpTUy4KICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAgIFtUYXNrQXR0cmlidXRlKCJz
dGFtcGRhdGV0aW1lIildCiAgICAgICAgW0RhdGVUaW1lVmFsaWRhdG9yKCldCiAgICAgICAgcHVi
bGljIERhdGVUaW1lIFN0YW1wIHsKICAgICAgICAgICAgZ2V0IHsgcmV0dXJuIF9zdGFtcERhdGVU
aW1lOyB9CiAgICAgICAgICAgIHNldCB7IF9zdGFtcERhdGVUaW1lID0gdmFsdWU7IH0KICAgICAg
ICB9CgogICAgICAgIC8vLyA8c3VtbWFyeT4KICAgICAgICAvLy8gRGVzaXJlZCBsZXZlbCBvZiBj
b21wcmVzc2lvbi4gUG9zc2libGUgdmFsdWVzIGFyZSAwIChTVE9SRSBvbmx5KSAKICAgICAgICAv
Ly8gdG8gOSAoaGlnaGVzdCkuIFRoZSBkZWZhdWx0IGlzIDxjPjY8L2M+LgogICAgICAgIC8vLyA8
L3N1bW1hcnk+CiAgICAgICAgW1Rhc2tBdHRyaWJ1dGUoInppcGxldmVsIildCiAgICAgICAgW0lu
dDMyVmFsaWRhdG9yQXR0cmlidXRlKDAsIDkpXQogICAgICAgIHB1YmxpYyBpbnQgWmlwTGV2ZWwg
ewogICAgICAgICAgICBnZXQgeyByZXR1cm4gX3ppcGxldmVsOyB9CiAgICAgICAgICAgIHNldCB7
IF96aXBsZXZlbCA9IHZhbHVlOyB9CiAgICAgICAgfQoKICAgICAgICAvLy8gPHN1bW1hcnk+CiAg
ICAgICAgLy8vIEluY2x1ZGUgZW1wdHkgZGlyZWN0b3JpZXMgaW4gdGhlIGdlbmVyYXRlZCB6aXAg
ZmlsZS4gVGhlIGRlZmF1bHQgaXMKICAgICAgICAvLy8gPHNlZSBsYW5nd29yZD0iZmFsc2UiIC8+
LgogICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgW1Rhc2tBdHRyaWJ1dGUoImluY2x1ZGVl
bXB0eWRpcnMiKV0KICAgICAgICBbQm9vbGVhblZhbGlkYXRvcigpXQogICAgICAgIHB1YmxpYyBi
b29sIEluY2x1ZGVFbXB0eURpcnMgewogICAgICAgICAgICBnZXQgeyByZXR1cm4gX2luY2x1ZGVF
bXB0eURpcnM7IH0KICAgICAgICAgICAgc2V0IHsgX2luY2x1ZGVFbXB0eURpcnMgPSB2YWx1ZTsg
fQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLy8gPHN1bW1hcnk+CiAgICAgICAgLy8vIEln
bm9yZSBkaXJlY3Rvcnkgc3RydWN0dXJlIG9mIHNvdXJjZSBkaXJlY3RvcnksIGNvbXByZXNzIGFs
bCBmaWxlcyAKICAgICAgICAvLy8gaW50byBhIHNpbmdsZSBkaXJlY3RvcnkuCiAgICAgICAgLy8v
IFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxzZWUgbGFuZ3dvcmQ9ImZhbHNlIiAvPi4KICAgICAgICAv
Ly8gPC9zdW1tYXJ5PgogICAgICAgIFtUYXNrQXR0cmlidXRlKCJmbGF0dGVuIildCiAgICAgICAg
W0Jvb2xlYW5WYWxpZGF0b3IoKV0KICAgICAgICBwdWJsaWMgdmlydHVhbCBib29sIEZsYXR0ZW4g
ewogICAgICAgICAgICBnZXQgeyByZXR1cm4gX2ZsYXR0ZW47IH0KICAgICAgICAgICAgc2V0IHsg
X2ZsYXR0ZW4gPSB2YWx1ZTsgfQogICAgICAgIH0KCiAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAg
ICAgIC8vLyBUaGUgc2V0IG9mIGZpbGVzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBhcmNoaXZlLgog
ICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgW0J1aWxkRWxlbWVudEFycmF5KCJmaWxlc2V0
IildCiAgICAgICAgcHVibGljIFppcEZpbGVTZXRDb2xsZWN0aW9uIFppcEZpbGVTZXRzIHsKICAg
ICAgICAgICAgZ2V0IHsgcmV0dXJuIF9maWxlc2V0czsgfQogICAgICAgICAgICBzZXQgeyBfZmls
ZXNldHMgPSB2YWx1ZTsgfQogICAgICAgIH0KCiAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAg
IC8vLyBTcGVjaWZpZXMgdGhlIGJlaGF2aW91ciB3aGVuIGEgZHVwbGljYXRlIGZpbGUgaXMgZm91
bmQuIFRoZSBkZWZhdWx0CiAgICAgICAgLy8vIGlzIDxzZWUgY3JlZj0iVDpOQW50LkNvbXByZXNz
aW9uLlR5cGVzLkR1cGxpY2F0ZUhhbmRsaW5nLkFkZCIgLz4uCiAgICAgICAgLy8vIDwvc3VtbWFy
eT4KICAgICAgICBbVGFza0F0dHJpYnV0ZSgiZHVwbGljYXRlIildCiAgICAgICAgcHVibGljIER1
cGxpY2F0ZUhhbmRsaW5nIER1cGxpY2F0ZUhhbmRsaW5nIHsKICAgICAgICAgICAgZ2V0IHsgcmV0
dXJuIF9kdXBsaWNhdGVIYW5kbGluZzsgfQogICAgICAgICAgICBzZXQgeyBfZHVwbGljYXRlSGFu
ZGxpbmcgPSB2YWx1ZTsgfQogICAgICAgIH0KCiAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAg
IC8vLyBUaGUgY2hhcmFjdGVyIGVuY29kaW5nIHRvIHVzZSBmb3IgZmlsZW5hbWVzIGFuZCBjb21t
ZW50IGluc2lkZSB0aGUKICAgICAgICAvLy8gemlwIGZpbGUuIFRoZSBkZWZhdWx0IGlzIHRoZSBz
eXN0ZW0ncyBPRU0gY29kZSBwYWdlLgogICAgICAgIC8vLyA8L3N1bW1hcnk+CiAgICAgICAgW1Rh
c2tBdHRyaWJ1dGUoImVuY29kaW5nIildCiAgICAgICAgcHVibGljIEVuY29kaW5nIEVuY29kaW5n
IHsKICAgICAgICAgICAgZ2V0IHsKICAgICAgICAgICAgICAgIGlmIChfZW5jb2RpbmcgPT0gbnVs
bCkgewogICAgICAgICAgICAgICAgICAgIF9lbmNvZGluZyA9IEVuY29kaW5nLkdldEVuY29kaW5n
KEN1bHR1cmVJbmZvLkN1cnJlbnRDdWx0dXJlLlRleHRJbmZvLk9FTUNvZGVQYWdlKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBfZW5jb2Rpbmc7IAogICAgICAgICAg
ICB9CiAgICAgICAgICAgIHNldCB7IF9lbmNvZGluZyA9IHZhbHVlOyB9CiAgICAgICAgfQ0KDQog
ICAgICAgIFtUYXNrQXR0cmlidXRlKCJ1cGRhdGUiKV0NCiAgICAgICAgcHVibGljIGJvb2wgVXBk
YXRlRXhpc3RpbmdaaXAgew0KICAgICAgICAgICAgZ2V0IHsgcmV0dXJuIF91cGRhdGU7IH0NCiAg
ICAgICAgICAgIHNldCB7IF91cGRhdGUgPSB2YWx1ZTsgfQogICAgICAgIH0KCiAgICAgICAgI2Vu
ZHJlZ2lvbiBQdWJsaWMgSW5zdGFuY2UgUHJvcGVydGllcwoKICAgICAgICAjcmVnaW9uIE92ZXJy
aWRlIGltcGxlbWVudGF0aW9uIG9mIFRhc2sKCiAgICAgICAgLy8vIDxzdW1tYXJ5PgogICAgICAg
IC8vLyBDcmVhdGVzIHRoZSB6aXAgZmlsZS4KICAgICAgICAvLy8gPC9zdW1tYXJ5PgogICAgICAg
IHByb3RlY3RlZCBvdmVycmlkZSB2b2lkIEV4ZWN1dGVUYXNrKCkgewogICAgICAgICAgICBaaXBP
dXRwdXRTdHJlYW0gek91dHN0cmVhbSA9IG51bGw7DQogICAgICAgICAgICBJQ1NoYXJwQ29kZS5T
aGFycFppcExpYi5aaXAuWmlwRmlsZSB6RmlsZSA9IG51bGw7CgogICAgICAgICAgICBMb2coTGV2
ZWwuSW5mbywgIlppcHBpbmcgezB9IGZpbGVzIHRvICd7MX0nLiIsIAogICAgICAgICAgICAgICAg
WmlwRmlsZVNldHMuRmlsZUNvdW50LCBaaXBGaWxlLkZ1bGxOYW1lKTsKICAgICAgICAgICAgICAg
IAogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKCFEaXJlY3RvcnkuRXhpc3Rz
KFppcEZpbGUuRGlyZWN0b3J5TmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rvcnku
Q3JlYXRlRGlyZWN0b3J5KFppcEZpbGUuRGlyZWN0b3J5TmFtZSk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gc2V0IGVuY29kaW5nIHRvIHVzZSBmb3Ig
ZmlsZW5hbWVzIGFuZCBjb21tZW50CiAgICAgICAgICAgICAgICBaaXBDb25zdGFudHMuRGVmYXVs
dENvZGVQYWdlID0gRW5jb2RpbmcuQ29kZVBhZ2U7CiAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgIC8vIGNoZWNrIGFwcGVuZCBtb2RlIHdoZW4gZmlsZSBleGlzdHMNCiAgICAgICAgICAg
ICAgICBpZiAoRmlsZS5FeGlzdHMoWmlwRmlsZS5GdWxsTmFtZSkgJiYgVXBkYXRlRXhpc3Rpbmda
aXApIHsNCiAgICAgICAgICAgICAgICAgICAgekZpbGUgPSBuZXcgSUNTaGFycENvZGUuU2hhcnBa
aXBMaWIuWmlwLlppcEZpbGUoWmlwRmlsZS5GdWxsTmFtZSk7DQogICAgICAgICAgICAgICAgICAg
IHpGaWxlLkJlZ2luVXBkYXRlKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICB6T3V0c3RyZWFtID0gbmV3IFppcE91dHB1dFN0
cmVhbShaaXBGaWxlLkNyZWF0ZSgpKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBzZXQgY29t
cHJlc3Npb24gbGV2ZWwNCiAgICAgICAgICAgICAgICAgICAgek91dHN0cmVhbS5TZXRMZXZlbCha
aXBMZXZlbCk7DQoNCiAgICAgICAgICAgICAgICAgICAgLy8gc2V0IGNvbW1lbnQNCiAgICAgICAg
ICAgICAgICAgICAgaWYgKCFTdHJpbmcuSXNOdWxsT3JFbXB0eShDb21tZW50KSkgew0KICAgICAg
ICAgICAgICAgICAgICAgICAgek91dHN0cmVhbS5TZXRDb21tZW50KENvbW1lbnQpOw0KICAgICAg
ICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVh
Y2ggKFppcEZpbGVTZXQgZmlsZXNldCBpbiBaaXBGaWxlU2V0cykgewogICAgICAgICAgICAgICAg
ICAgIHN0cmluZyBiYXNlUGF0aCA9IGZpbGVzZXQuQmFzZURpcmVjdG9yeS5GdWxsTmFtZTsKICAg
ICAgICAgICAgICAgICAgICBpZiAoUGF0aC5HZXRQYXRoUm9vdChiYXNlUGF0aCkgIT0gYmFzZVBh
dGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVBhdGggPSBQYXRoLkdldERpcmVjdG9y
eU5hbWUoYmFzZVBhdGggKyBQYXRoLkRpcmVjdG9yeVNlcGFyYXRvckNoYXIpOwogICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGZpbGVzIHRvIHppcAogICAg
ICAgICAgICAgICAgICAgIGZvcmVhY2ggKHN0cmluZyBmaWxlIGluIGZpbGVzZXQuRmlsZU5hbWVz
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuc3VyZSBmaWxlIGV4aXN0cyAoaW4gY2Fz
ZSAiYXNpcyIgd2FzIHVzZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghRmlsZS5FeGlz
dHMoZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4
Y2VwdGlvbihzdHJpbmcuRm9ybWF0KEN1bHR1cmVJbmZvLkludmFyaWFudEN1bHR1cmUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgJ3swfScgZG9lcyBub3QgZXhpc3QuIiwg
ZmlsZSksIExvY2F0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhlIG5hbWUgb2YgdGhlIHppcCBlbnRyeQogICAgICAgICAgICAgICAg
ICAgICAgICBzdHJpbmcgZW50cnlOYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV0
ZXJtaW5lIG5hbWUgb2YgdGhlIHppcCBlbnRyeQogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IUZsYXR0ZW4gJiYgZmlsZS5TdGFydHNXaXRoKGJhc2VQYXRoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW50cnlOYW1lID0gZmlsZS5TdWJzdHJpbmcoYmFzZVBhdGguTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeU5hbWUuTGVuZ3RoID4gMCAmJiBl
bnRyeU5hbWVbMF0gPT0gUGF0aC5EaXJlY3RvcnlTZXBhcmF0b3JDaGFyKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW50cnlOYW1lID0gZW50cnlOYW1lLlN1YnN0cmluZygxKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZW1lbWJlciB0aGF0IGRpcmVjdG9yeSB3YXMgYWRkZWQgdG8gemlwIGZpbGUsIHNvCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IHdlIHdvbid0IGFkZCBpdCBhZ2FpbiBs
YXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGRpciA9IFBhdGguR2V0RGly
ZWN0b3J5TmFtZShmaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYWRkZWRE
aXJzW2Rpcl0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hZGRl
ZERpcnNbZGlyXSA9IGRpcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZs
YXR0ZW4gZGlyZWN0b3J5IHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50
cnlOYW1lID0gUGF0aC5HZXRGaWxlTmFtZShmaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIHByZWZpeCBpZiBzcGVjaWZpZWQKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzZXQuUHJlZml4ICE9IG51bGwpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVudHJ5TmFtZSA9IGZpbGVzZXQuUHJlZml4ICsgZW50cnlO
YW1lOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAv
LyBlbnN1cmUgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIHVuZGVyc3Rvb2Qgb24gbGludXgKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKFBhdGguRGlyZWN0b3J5U2VwYXJhdG9yQ2hhciA9PSAn
XFwnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUgPSBlbnRyeU5hbWUu
UmVwbGFjZShAIlwiLCAiLyIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwZXJmb3JtIGR1cGxpY2F0ZSBjaGVja2luZwogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoX2ZpbGVFbnRyaWVzLkNvbnRhaW5zS2V5KGVudHJ5TmFtZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoRHVwbGljYXRlSGFuZGxpbmcpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIER1cGxpY2F0ZUhhbmRsaW5nLkFkZDoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBEdXBsaWNhdGVIYW5kbGluZy5GYWlsOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQnVpbGRFeGNlcHRpb24oc3RyaW5n
LkZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1bHR1cmVJ
bmZvLkludmFyaWFudEN1bHR1cmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkR1cGxpY2F0ZSBmaWxlICd7MH0nIHdhcyBmb3VuZC4iLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5TmFtZSksIExvY2F0aW9uLlVua25vd25Mb2Nh
dGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBEdXBsaWNhdGVIYW5k
bGluZy5QcmVzZXJ2ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2tp
cCBjdXJyZW50IGVudHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBCdWlsZEV4Y2VwdGlvbihzdHJpbmcu
Rm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VsdHVyZUlu
Zm8uSW52YXJpYW50Q3VsdHVyZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRHVwbGljYXRlIHZhbHVlICd7MH0nIGlzIG5vdCBzdXBwb3J0ZWQuIiwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVIYW5kbGluZy5Ub1N0cmlu
ZygpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbi5V
bmtub3duTG9jYXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB6aXAg
ZW50cnkNCiAgICAgICAgICAgICAgICAgICAgICAgIFppcEVudHJ5IGVudHJ5ID0gbmV3IFppcEVu
dHJ5KGVudHJ5TmFtZSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0b3JlIGVudHJ5
ICh0byBhbGxvdyBmb3IgZHVwbGljYXRlIGNoZWNraW5nKQ0KICAgICAgICAgICAgICAgICAgICAg
ICAgX2ZpbGVFbnRyaWVzW2VudHJ5TmFtZV0gPSBudWxsOw0KDQogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBzZXQgZGF0ZS90aW1lIHN0YW1wIG9uIHppcCBlbnRyeQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKFN0YW1wICE9IERhdGVUaW1lLk1pblZhbHVlKQ0KICAgICAgICAgICAgICAg
ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LkRhdGVUaW1lID0g
U3RhbXA7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW50cnkuRGF0ZVRpbWUgPSBGaWxlLkdldExhc3RXcml0ZVRpbWUoZmlsZSk7DQogICAg
ICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIExvZyhMZXZl
bC5WZXJib3NlLCAiQWRkaW5nIHswfS4iLCBlbnRyeU5hbWUpOw0KDQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoek91dHN0cmVhbSAhPSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAg
ew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGZpbGUgY29udGVudCB0byBz
dHJlYW0gaW4gc21hbGwgY2h1bmNrcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5n
IChGaWxlU3RyZWFtIGZzID0gRmlsZS5PcGVuUmVhZChmaWxlKSkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBzZXQgc2l6ZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3
aXRoIG9sZGVyIHVuemlwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LlNp
emUgPSBmcy5MZW5ndGg7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3Jp
dGUgZmlsZSB0byB6aXAgZmlsZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6T3V0
c3RyZWFtLlB1dE5leHRFbnRyeShlbnRyeSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlWzUwMDAwXTsNCg0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVzUmVh
ZCA9IGZzLlJlYWQoYnVmZmVyLCAwLCBidWZmZXIuTGVuZ3RoKTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPT0gMCkNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHpPdXRzdHJlYW0uV3JpdGUoYnVmZmVyLCAwLCBieXRlc1JlYWQpOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgekZpbGUuQWRkKGZpbGUsIGVudHJ5TmFt
ZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBhZGQgKHBvc3NpYmx5
IGVtcHR5KSBkaXJlY3RvcmllcyB0byB6aXAKICAgICAgICAgICAgICAgICAgICBpZiAoSW5jbHVk
ZUVtcHR5RGlycykgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChzdHJpbmcgZGly
ZWN0b3J5IGluIGZpbGVzZXQuRGlyZWN0b3J5TmFtZXMpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNraXAgZGlyZWN0b3JpZXMgdGhhdCB3ZXJlIGFscmVhZHkgYWRkZWQgd2hlbiB0
aGUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWxlcyB3ZXJlIGFkZGVkCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2FkZGVkRGlyc1tkaXJlY3RvcnldICE9IG51bGwp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIGRp
cmVjdG9yaWVzIHRoYXQgYXJlIG5vdCBsb2NhdGVkIGJlbmVhdGggdGhlIGJhc2UgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZGlyZWN0b3J5LlN0YXJ0c1dpdGgoYmFzZVBhdGgpIHx8IGRpcmVjdG9yeS5MZW5n
dGggPD0gYmFzZVBhdGguTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHppcCBlbnRyeSBuYW1lCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmcgZW50cnlOYW1lID0gZGlyZWN0b3J5LlN1YnN0cmluZyhiYXNlUGF0
aC5MZW5ndGggKyAxKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgcHJlZml4
IGlmIHNwZWNpZmllZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzZXQuUHJl
Zml4ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUg
PSBmaWxlc2V0LlByZWZpeCArIGVudHJ5TmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbnN1cmUgZGlyZWN0b3J5IHNlcGFy
YXRvcnMgYXJlIHVuZGVyc3Rvb2Qgb24gbGludXgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChQYXRoLkRpcmVjdG9yeVNlcGFyYXRvckNoYXIgPT0gJ1xcJykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVudHJ5TmFtZSA9IGVudHJ5TmFtZS5SZXBsYWNlKEAiXCIsICIv
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFlbnRyeU5hbWUuRW5kc1dpdGgoIi8iKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHRyYWlsaW5nIGRpcmVjdG9yeSBzaWduYWxzIHRvICN6aXBsaWIgdGhh
dCB3ZSdyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlYWxpbmcgd2l0aCBk
aXJlY3RvcnkgZW50cnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeU5hbWUg
Kz0gIi8iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gY3JlYXRlIGRpcmVjdG9yeSBlbnRyeQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFppcEVudHJ5IGVudHJ5ID0gbmV3IFppcEVudHJ5KGVudHJ5TmFtZSk7DQoNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgc2l6ZSBmb3IgYmFja3dhcmQgY29tcGF0
aWJpbGl0eSB3aXRoIG9sZGVyIHVuemlwDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50
cnkuU2l6ZSA9IDBMOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgZGly
ZWN0b3J5IHRvIHppcCBmaWxlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHpPdXRz
dHJlYW0gIT0gbnVsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHpPdXRzdHJlYW0uUHV0TmV4dEVudHJ5KGVudHJ5KTsNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpGaWxlLkFkZChlbnRyeSk7
DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAg
IGlmICh6T3V0c3RyZWFtICE9IG51bGwpDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
ICAgICAgICB6T3V0c3RyZWFtLkNsb3NlKCk7DQogICAgICAgICAgICAgICAgICAgIHpPdXRzdHJl
YW0uRmluaXNoKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0K
ICAgICAgICAgICAgICAgICAgICB6RmlsZS5Db21taXRVcGRhdGUoKTsNCiAgICAgICAgICAgICAg
ICAgICAgekZpbGUuQ2xvc2UoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRj
aCAoRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAgICAvLyBjbG9zZSB0aGUgemlwIG91dHB1
dCBzdHJlYW0KICAgICAgICAgICAgICAgIGlmICh6T3V0c3RyZWFtICE9IG51bGwpIHsKICAgICAg
ICAgICAgICAgICAgICB6T3V0c3RyZWFtLkNsb3NlKCk7CiAgICAgICAgICAgICAgICB9DQogICAg
ICAgICAgICAgICAgLy8gY2xvc2UgdGhlIHppcCBmaWxlDQogICAgICAgICAgICAgICAgaWYgKHpG
aWxlICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgekZpbGUuQ2xvc2UoKTsNCiAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZGVsZXRlIHRoZSAocG9zc2libHkgY29y
cnVwdCkgemlwIGZpbGUKICAgICAgICAgICAgICAgIGlmIChaaXBGaWxlLkV4aXN0cykgewogICAg
ICAgICAgICAgICAgICAgIFppcEZpbGUuRGVsZXRlKCk7CiAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEJ1aWxkRXhjZXB0aW9uKHN0cmluZy5Gb3JtYXQoQ3VsdHVy
ZUluZm8uSW52YXJpYW50Q3VsdHVyZSwKICAgICAgICAgICAgICAgICAgICAiWmlwIGZpbGUgJ3sw
fScgY291bGQgbm90IGJlIGNyZWF0ZWQuIiwgWmlwRmlsZS5GdWxsTmFtZSksIAogICAgICAgICAg
ICAgICAgICAgIExvY2F0aW9uLCBleCk7CiAgICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAg
ICAgICAgICBDbGVhblVwKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICNlbmRy
ZWdpb24gT3ZlcnJpZGUgaW1wbGVtZW50YXRpb24gb2YgVGFzawoKICAgICAgICAjcmVnaW9uIFBy
aXZhdGUgSW5zdGFuY2UgTWV0aG9kcwoKICAgICAgICBwcml2YXRlIHZvaWQgQ2xlYW5VcCgpIHsK
ICAgICAgICAgICAgX2FkZGVkRGlycy5DbGVhcigpOwogICAgICAgICAgICBfZmlsZUVudHJpZXMu
Q2xlYXIoKTsKICAgICAgICB9CgogICAgICAgICNlbmRyZWdpb24gUHJpdmF0ZSBJbnN0YW5jZSBN
ZXRob2RzCiAgICB9Cn0K


--=_mixed 004A580FC1257AD3_=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
--=_mixed 004A580FC1257AD3_=
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
nant-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nant-developers

--=_mixed 004A580FC1257AD3_=--