Date: Mon, 29 Aug 2005 20:17:49 +0200
Return-Path: unit_test@phpmailer.sf.net
To: Test User <azamette@hotmail.com>
Cc: Carbon User <azamette@hotmail.com>
From: Unit Tester <unit_test@phpmailer.sf.net>
Reply-to: Reply Guy <no_reply@phpmailer.sf.net>
Subject: Unit Test: AltBody + Attachment
Message-ID: <8eefdaf9aef95ea3f5cb51b00ce046fb@127.0.0.1>
X-Priority: 3
X-Mailer: PHPMailer [version 1.73]
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="b1_8eefdaf9aef95ea3f5cb51b00ce046fb"


--b1_8eefdaf9aef95ea3f5cb51b00ce046fb
Content-Type: multipart/alternative;
	boundary="b2_8eefdaf9aef95ea3f5cb51b00ce046fb"

--b2_8eefdaf9aef95ea3f5cb51b00ce046fb
Content-Type: text/plain; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit


This is the text part of the email.


--b2_8eefdaf9aef95ea3f5cb51b00ce046fb
Content-Type: text/html; charset = "iso-8859-1"
Content-Transfer-Encoding: 8bit


This is the <b>HTML</b> part of the email.<br/><br/>---------------------<br/>Unit Test Information<br/>---------------------<br/>phpmailer version: 1.73<br/>Content Type: text/html<br/>Host: localhost<br/>Attachments:<br/><ul><li>Name: phpmailer_test.php, Encoding: base64, Type: application/octet-stream<br/></ul><br/>Changes<br/>-------<br/><ul><li>Sender was changed to [unit_test@phpmailer.sf.net]<br/><li>Mailer was changed to [smtp]<br/></ul><br/><br/>



--b2_8eefdaf9aef95ea3f5cb51b00ce046fb--
--b1_8eefdaf9aef95ea3f5cb51b00ce046fb
Content-Type: application/octet-stream; name="test_attach.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test_attach.txt"

PD9waHANCi8qKioqKioqKioqKioqKioqKioqDQogIFVuaXQgVGVzdA0KICBUeXBlOiBwaHBtYWls
ZXIgY2xhc3MNCioqKioqKioqKioqKioqKioqKioqLw0KDQokSU5DTFVERV9ESVIgPSAiLi4vIjsN
Cg0KcmVxdWlyZSgicGhwdW5pdC5waHAiKTsNCnJlcXVpcmUoJElOQ0xVREVfRElSIC4gImNsYXNz
LnBocG1haWxlci5waHAiKTsNCmVycm9yX3JlcG9ydGluZyhFX0FMTCk7DQoNCi8qKg0KICogUGVy
Zm9ybXMgYXV0aGVudGljYXRpb24gdGVzdHMNCiAqLw0KY2xhc3MgcGhwbWFpbGVyVGVzdCBleHRl
bmRzIFRlc3RDYXNlDQp7DQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIGRlZmF1bHQgcGhwbWFp
bGVyIGluc3RhbmNlLg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHR5cGUgb2JqZWN0DQogICAg
ICovDQogICAgdmFyICRNYWlsID0gZmFsc2U7DQoNCiAgICAvKioNCiAgICAgKiBIb2xkcyB0aGUg
U01UUCBtYWlsIGhvc3QuDQogICAgICogQHB1YmxpYw0KICAgICAqIEB0eXBlIHN0cmluZw0KICAg
ICAqLw0KICAgIHZhciAkSG9zdCA9ICIiOw0KDQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIGNo
YW5nZSBsb2cuDQogICAgICogQHByaXZhdGUNCiAgICAgKiBAdHlwZSBzdHJpbmcgYXJyYXkNCiAg
ICAgKi8NCiAgICB2YXIgJENoYW5nZUxvZyA9IGFycmF5KCk7DQoNCiAgICAgLyoqDQogICAgICog
SG9sZHMgdGhlIG5vdGUgbG9nLg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHR5cGUgc3RyaW5n
IGFycmF5DQogICAgICovDQogICAgdmFyICROb3RlTG9nID0gYXJyYXkoKTsNCg0KICAgIC8qKg0K
ICAgICAqIENsYXNzIGNvbnN0dWN0b3IuDQogICAgICovDQogICAgZnVuY3Rpb24gcGhwbWFpbGVy
VGVzdCgkbmFtZSkgew0KICAgICAgICAvKiBtdXN0IGRlZmluZSB0aGlzIGNvbnN0cnVjdG9yICov
DQogICAgICAgICR0aGlzLT5UZXN0Q2FzZSggJG5hbWUgKTsNCiAgICB9DQoNCiAgICAvKioNCiAg
ICAgKiBSdW4gYmVmb3JlIGVhY2ggdGVzdCBpcyBzdGFydGVkLg0KICAgICAqLw0KICAgIGZ1bmN0
aW9uIHNldFVwKCkgew0KICAgICAgICBnbG9iYWwgJGdsb2JhbF92YXJzOw0KICAgICAgICBnbG9i
YWwgJElOQ0xVREVfRElSOw0KDQogICAgICAgICR0aGlzLT5NYWlsID0gbmV3IFBIUE1haWxlcigp
Ow0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Qcmlvcml0eSA9IDM7DQogICAgICAgICR0aGlzLT5N
YWlsLT5FbmNvZGluZyA9ICI4Yml0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkNoYXJTZXQgPSAi
aXNvLTg4NTktMSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5Gcm9tID0gInVuaXRfdGVzdEBwaHBt
YWlsZXIuc2YubmV0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkZyb21OYW1lID0gIlVuaXQgVGVz
dGVyIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlNlbmRlciA9ICIiOw0KICAgICAgICAkdGhpcy0+
TWFpbC0+U3ViamVjdCA9ICJVbml0IFRlc3QiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9
ICIiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICIiOw0KICAgICAgICAkdGhpcy0+
TWFpbC0+V29yZFdyYXAgPSAwOw0KICAgICAgICAkdGhpcy0+TWFpbC0+SG9zdCA9ICRnbG9iYWxf
dmFyc1sibWFpbF9ob3N0Il07DQogICAgICAgICR0aGlzLT5NYWlsLT5Qb3J0ID0gMjU7DQogICAg
ICAgICR0aGlzLT5NYWlsLT5IZWxvID0gImxvY2FsaG9zdC5sb2NhbGRvbWFpbiI7DQogICAgICAg
ICR0aGlzLT5NYWlsLT5TTVRQQXV0aCA9IGZhbHNlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+VXNl
cm5hbWUgPSAiIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlBhc3N3b3JkID0gIiI7DQogICAgICAg
ICR0aGlzLT5NYWlsLT5QbHVnaW5EaXIgPSAkSU5DTFVERV9ESVI7DQoJCSR0aGlzLT5NYWlsLT5B
ZGRSZXBseVRvKCJub19yZXBseUBwaHBtYWlsZXIuc2YubmV0IiwgIlJlcGx5IEd1eSIpOw0KICAg
ICAgICAkdGhpcy0+TWFpbC0+U2VuZGVyID0gInVuaXRfdGVzdEBwaHBtYWlsZXIuc2YubmV0IjsN
Cg0KICAgICAgICBpZihzdHJsZW4oJHRoaXMtPk1haWwtPkhvc3QpID4gMCkNCiAgICAgICAgICAg
ICR0aGlzLT5NYWlsLT5NYWlsZXIgPSAic210cCI7DQogICAgICAgIGVsc2UNCiAgICAgICAgew0K
ICAgICAgICAgICAgJHRoaXMtPk1haWwtPk1haWxlciA9ICJtYWlsIjsNCiAgICAgICAgICAgICR0
aGlzLT5TZW5kZXIgPSAidW5pdF90ZXN0QHBocG1haWxlci5zZi5uZXQiOw0KICAgICAgICB9DQoN
CiAgICAgICAgZ2xvYmFsICRnbG9iYWxfdmFyczsNCiAgICAgICAgJHRoaXMtPlNldEFkZHJlc3Mo
JGdsb2JhbF92YXJzWyJtYWlsX3RvIl0sICJUZXN0IFVzZXIiKTsNCiAgICAgICAgaWYoc3RybGVu
KCRnbG9iYWxfdmFyc1sibWFpbF9jYyJdKSA+IDApDQogICAgICAgICAgICAkdGhpcy0+U2V0QWRk
cmVzcygkZ2xvYmFsX3ZhcnNbIm1haWxfY2MiXSwgIkNhcmJvbiBVc2VyIiwgImNjIik7DQogICAg
fQ0KDQogICAgLyoqDQogICAgICogUnVuIGFmdGVyIGVhY2ggdGVzdCBpcyBjb21wbGV0ZWQuDQog
ICAgICovDQogICAgZnVuY3Rpb24gdGVhckRvd24oKSB7DQogICAgICAgIC8vIENsZWFuIGdsb2Jh
bCB2YXJpYWJsZXMNCiAgICAgICAgJHRoaXMtPk1haWwgPSBOVUxMOw0KICAgICAgICAkdGhpcy0+
Q2hhbmdlTG9nID0gYXJyYXkoKTsNCiAgICAgICAgJHRoaXMtPk5vdGVMb2cgPSBhcnJheSgpOw0K
ICAgIH0NCg0KDQogICAgLyoqDQogICAgICogQnVpbGQgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2Ug
aW4gdGhlIGFwcHJvcHJpYXRlIGZvcm1hdC4NCiAgICAgKiBAcHJpdmF0ZQ0KICAgICAqIEByZXR1
cm5zIHZvaWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBCdWlsZEJvZHkoKSB7DQogICAgICAgICR0
aGlzLT5DaGVja0NoYW5nZXMoKTsNCg0KICAgICAgICAvLyBEZXRlcm1pbmUgbGluZSBlbmRpbmdz
IGZvciBtZXNzYWdlDQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5Db250ZW50VHlwZSA9PSAidGV4
dC9odG1sIiB8fCBzdHJsZW4oJHRoaXMtPk1haWwtPkFsdEJvZHkpID4gMCkNCiAgICAgICAgew0K
ICAgICAgICAgICAgJGVvbCA9ICI8YnIvPiI7DQogICAgICAgICAgICAkYnVsbGV0ID0gIjxsaT4i
Ow0KICAgICAgICAgICAgJGJ1bGxldF9zdGFydCA9ICI8dWw+IjsNCiAgICAgICAgICAgICRidWxs
ZXRfZW5kID0gIjwvdWw+IjsNCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAg
ICAgICAgICAgICRlb2wgPSAiXG4iOw0KICAgICAgICAgICAgJGJ1bGxldCA9ICIgLSAiOw0KICAg
ICAgICAgICAgJGJ1bGxldF9zdGFydCA9ICIiOw0KICAgICAgICAgICAgJGJ1bGxldF9lbmQgPSAi
IjsNCiAgICAgICAgfQ0KDQogICAgICAgICRSZXBvcnRCb2R5ID0gIiI7DQoNCiAgICAgICAgJFJl
cG9ydEJvZHkgLj0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgLiAkZW9sOw0KICAgICAgICAkUmVw
b3J0Qm9keSAuPSAiVW5pdCBUZXN0IEluZm9ybWF0aW9uIiAuICRlb2w7DQogICAgICAgICRSZXBv
cnRCb2R5IC49ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0iIC4gJGVvbDsNCiAgICAgICAgJFJlcG9y
dEJvZHkgLj0gInBocG1haWxlciB2ZXJzaW9uOiAiIC4gJHRoaXMtPk1haWwtPlZlcnNpb24gLiAk
ZW9sOw0KICAgICAgICAkUmVwb3J0Qm9keSAuPSAiQ29udGVudCBUeXBlOiAiIC4gJHRoaXMtPk1h
aWwtPkNvbnRlbnRUeXBlIC4gJGVvbDsNCg0KICAgICAgICBpZihzdHJsZW4oJHRoaXMtPk1haWwt
Pkhvc3QpID4gMCkNCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICJIb3N0OiAiIC4gJHRoaXMt
Pk1haWwtPkhvc3QgLiAkZW9sOw0KDQogICAgICAgIC8vIElmIGF0dGFjaG1lbnRzIHRoZW4gY3Jl
YXRlIGFuIGF0dGFjaG1lbnQgbGlzdA0KICAgICAgICBpZihjb3VudCgkdGhpcy0+TWFpbC0+YXR0
YWNobWVudCkgPiAwKQ0KICAgICAgICB7DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAiQXR0
YWNobWVudHM6IiAuICRlb2w7DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X3N0
YXJ0Ow0KICAgICAgICAgICAgZm9yKCRpID0gMDsgJGkgPCBjb3VudCgkdGhpcy0+TWFpbC0+YXR0
YWNobWVudCk7ICRpKyspDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgJFJlcG9ydEJv
ZHkgLj0gJGJ1bGxldCAuICJOYW1lOiAiIC4gJHRoaXMtPk1haWwtPmF0dGFjaG1lbnRbJGldWzFd
IC4gIiwgIjsNCiAgICAgICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAiRW5jb2Rpbmc6ICIgLiAk
dGhpcy0+TWFpbC0+YXR0YWNobWVudFskaV1bM10gLiAiLCAiOw0KICAgICAgICAgICAgICAgICRS
ZXBvcnRCb2R5IC49ICJUeXBlOiAiIC4gJHRoaXMtPk1haWwtPmF0dGFjaG1lbnRbJGldWzRdIC4g
JGVvbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRf
ZW5kIC4gJGVvbDsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIElmIHRoZXJlIGFyZSBjaGFuZ2Vz
IHRoZW4gbGlzdCB0aGVtDQogICAgICAgIGlmKGNvdW50KCR0aGlzLT5DaGFuZ2VMb2cpID4gMCkN
CiAgICAgICAgew0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkNoYW5nZXMiIC4gJGVvbDsN
CiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICItLS0tLS0tIiAuICRlb2w7DQoNCiAgICAgICAg
ICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfc3RhcnQ7DQogICAgICAgICAgICBmb3IoJGkgPSAw
OyAkaSA8IGNvdW50KCR0aGlzLT5DaGFuZ2VMb2cpOyAkaSsrKQ0KICAgICAgICAgICAgew0KICAg
ICAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXQgLiAkdGhpcy0+Q2hhbmdlTG9nWyRp
XVswXSAuICIgd2FzIGNoYW5nZWQgdG8gWyIgLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICR0aGlzLT5DaGFuZ2VMb2dbJGldWzFdIC4gIl0iIC4gJGVvbDsNCiAgICAgICAgICAgIH0N
CiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfZW5kIC4gJGVvbCAuICRlb2w7DQog
ICAgICAgIH0NCg0KICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm90ZXMgdGhlbiBsaXN0IHRoZW0N
CiAgICAgICAgaWYoY291bnQoJHRoaXMtPk5vdGVMb2cpID4gMCkNCiAgICAgICAgew0KICAgICAg
ICAgICAgJFJlcG9ydEJvZHkgLj0gIk5vdGVzIiAuICRlb2w7DQogICAgICAgICAgICAkUmVwb3J0
Qm9keSAuPSAiLS0tLS0iIC4gJGVvbDsNCg0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gJGJ1
bGxldF9zdGFydDsNCiAgICAgICAgICAgIGZvcigkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPk5v
dGVMb2cpOyAkaSsrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRSZXBvcnRCb2R5
IC49ICRidWxsZXQgLiAkdGhpcy0+Tm90ZUxvZ1skaV0gLiAkZW9sOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gJGJ1bGxldF9lbmQ7DQogICAgICAgIH0NCg0KICAg
ICAgICAvLyBSZS1hdHRhY2ggdGhlIG9yaWdpbmFsIGJvZHkNCiAgICAgICAgJHRoaXMtPk1haWwt
PkJvZHkgLj0gJGVvbCAuICRlb2wgLiAkUmVwb3J0Qm9keTsNCiAgICB9DQoNCiAgICAvKioNCiAg
ICAgKiBDaGVjayB3aGljaCBkZWZhdWx0IHNldHRpbmdzIGhhdmUgYmVlbiBjaGFuZ2VkIGZvciB0
aGUgcmVwb3J0Lg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHJldHVybnMgdm9pZA0KICAgICAq
Lw0KICAgIGZ1bmN0aW9uIENoZWNrQ2hhbmdlcygpIHsNCiAgICAgICAgaWYoJHRoaXMtPk1haWwt
PlByaW9yaXR5ICE9IDMpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJQcmlvcml0eSIs
ICR0aGlzLT5NYWlsLT5Qcmlvcml0eSk7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5FbmNvZGlu
ZyAhPSAiOGJpdCIpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJFbmNvZGluZyIsICR0
aGlzLT5NYWlsLT5FbmNvZGluZyk7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5DaGFyU2V0ICE9
ICJpc28tODg1OS0xIikNCiAgICAgICAgICAgICR0aGlzLT5BZGRDaGFuZ2UoIkNoYXJTZXQiLCAk
dGhpcy0+TWFpbC0+Q2hhclNldCk7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5TZW5kZXIgIT0g
IiIpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJTZW5kZXIiLCAkdGhpcy0+TWFpbC0+
U2VuZGVyKTsNCiAgICAgICAgaWYoJHRoaXMtPk1haWwtPldvcmRXcmFwICE9IDApDQogICAgICAg
ICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJXb3JkV3JhcCIsICR0aGlzLT5NYWlsLT5Xb3JkV3JhcCk7
DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5NYWlsZXIgIT0gIm1haWwiKQ0KICAgICAgICAgICAg
JHRoaXMtPkFkZENoYW5nZSgiTWFpbGVyIiwgJHRoaXMtPk1haWwtPk1haWxlcik7DQogICAgICAg
IGlmKCR0aGlzLT5NYWlsLT5Qb3J0ICE9IDI1KQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5n
ZSgiUG9ydCIsICR0aGlzLT5NYWlsLT5Qb3J0KTsNCiAgICAgICAgaWYoJHRoaXMtPk1haWwtPkhl
bG8gIT0gImxvY2FsaG9zdC5sb2NhbGRvbWFpbiIpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hh
bmdlKCJIZWxvIiwgJHRoaXMtPk1haWwtPkhlbG8pOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+
U01UUEF1dGgpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJTTVRQQXV0aCIsICJ0cnVl
Iik7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkcyBhIGNoYW5nZSBlbnRyeS4NCiAgICAg
KiBAcHJpdmF0ZQ0KICAgICAqIEByZXR1cm5zIHZvaWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBB
ZGRDaGFuZ2UoJHNOYW1lLCAkc05ld1ZhbHVlKSB7DQogICAgICAgICRjdXIgPSBjb3VudCgkdGhp
cy0+Q2hhbmdlTG9nKTsNCiAgICAgICAgJHRoaXMtPkNoYW5nZUxvZ1skY3VyXVswXSA9ICRzTmFt
ZTsNCiAgICAgICAgJHRoaXMtPkNoYW5nZUxvZ1skY3VyXVsxXSA9ICRzTmV3VmFsdWU7DQogICAg
fQ0KDQogICAgLyoqDQogICAgICogQWRkcyBhIHNpbXBsZSBub3RlIHRvIHRoZSBtZXNzYWdlLg0K
ICAgICAqIEBwdWJsaWMNCiAgICAgKiBAcmV0dXJucyB2b2lkDQogICAgICovDQogICAgZnVuY3Rp
b24gQWRkTm90ZSgkc1ZhbHVlKSB7DQogICAgICAgICR0aGlzLT5Ob3RlTG9nW10gPSAkc1ZhbHVl
Ow0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFkZHMgYWxsIG9mIHRoZSBhZGRyZXNzZXMNCiAg
ICAgKiBAcHVibGljDQogICAgICogQHJldHVybnMgdm9pZA0KICAgICAqLw0KICAgIGZ1bmN0aW9u
IFNldEFkZHJlc3MoJHNBZGRyZXNzLCAkc05hbWUgPSAiIiwgJHNUeXBlID0gInRvIikgew0KICAg
ICAgICBzd2l0Y2goJHNUeXBlKQ0KICAgICAgICB7DQogICAgICAgICAgICBjYXNlICJ0byI6DQog
ICAgICAgICAgICAgICAgJHRoaXMtPk1haWwtPkFkZEFkZHJlc3MoJHNBZGRyZXNzLCAkc05hbWUp
Ow0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiY2MiOg0KICAgICAg
ICAgICAgICAgICR0aGlzLT5NYWlsLT5BZGRDQygkc0FkZHJlc3MsICRzTmFtZSk7DQogICAgICAg
ICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICJiY2MiOg0KICAgICAgICAgICAgICAg
ICR0aGlzLT5NYWlsLT5BZGRCQ0MoJHNBZGRyZXNzLCAkc05hbWUpOw0KICAgICAgICAgICAgICAg
IGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KICAgIC8vIFVOSVQgVEVTVFMNCiAgICAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQoNCiAgICAvKioNCiAg
ICAgKiBUcnkgYSBwbGFpbiBtZXNzYWdlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3RfV29y
ZFdyYXAoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPldvcmRXcmFwID0gNDA7DQogICAgICAg
ICRteV9ib2R5ID0gIkhlcmUgaXMgdGhlIG1haW4gYm9keSBvZiB0aGlzIG1lc3NhZ2UuICBJdCBz
aG91bGQgIiAuDQogICAgICAgICAgICAgICAgICAgImJlIHF1aXRlIGEgZmV3IGxpbmVzLiAgSXQg
c2hvdWxkIGJlIHdyYXBwZWQgYXQgdGhlICIgLg0KICAgICAgICAgICAgICAgICAgICI0MCBjaGFy
YWN0ZXJzLiAgTWFrZSBzdXJlIHRoYXQgaXQgaXMuIjsNCiAgICAgICAgJG5Cb2R5TGVuID0gc3Ry
bGVuKCRteV9ib2R5KTsNCiAgICAgICAgJG15X2JvZHkgLj0gIlxuXG5UaGlzIGlzIHRoZSBhYm92
ZSBib2R5IGxlbmd0aDogIiAuICRuQm9keUxlbjsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9k
eSA9ICRteV9ib2R5Ow0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBXb3Jkd3Jh
cCI7DQoNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0
KCR0aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0K
ICAgIC8qKg0KICAgICAqIFRyeSBhIHBsYWluIG1lc3NhZ2UuDQogICAgICovDQogICAgZnVuY3Rp
b24gdGVzdF9Mb3dfUHJpb3JpdHkoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPlByaW9yaXR5
ID0gNTsNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAiSGVyZSBpcyB0aGUgbWFpbiBib2R5
LiAgVGhlcmUgc2hvdWxkIGJlICIgLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIHJl
cGx5IHRvIGFkZHJlc3MgaW4gdGhpcyBtZXNzYWdlLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5T
dWJqZWN0IC49ICI6IExvdyBQcmlvcml0eSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5BZGRSZXBs
eVRvKCJub2JvZHlAbm9ib2R5LmNvbSIsICJOb2JvZHkgKFVuaXQgVGVzdCkiKTsNCg0KICAgICAg
ICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwt
PlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAg
ICogU2ltcGxlIHBsYWluIGZpbGUgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0
aW9uIHRlc3RfTXVsdGlwbGVfUGxhaW5fRmlsZUF0dGFjaG1lbnQoKSB7DQoNCiAgICAgICAgJHRo
aXMtPk1haWwtPkJvZHkgPSAiSGVyZSBpcyB0aGUgdGV4dCBib2R5IjsNCiAgICAgICAgJHRoaXMt
Pk1haWwtPlN1YmplY3QgLj0gIjogUGxhaW4gKyBNdWx0aXBsZSBGaWxlQXR0YWNobWVudHMiOw0K
DQogICAgICAgIGlmKCEkdGhpcy0+TWFpbC0+QWRkQXR0YWNobWVudCgidGVzdC5wbmciKSkNCiAg
ICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChmYWxzZSwgJHRoaXMtPk1haWwtPkVy
cm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBpZigh
JHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0ZXN0LnR4
dCIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+
TWFpbC0+RXJyb3JJbmZvKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAg
ICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFp
bC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQoNCiAgICAvKioNCiAg
ICAgKiBTaW1wbGUgcGxhaW4gc3RyaW5nIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBm
dW5jdGlvbiB0ZXN0X1BsYWluX1N0cmluZ0F0dGFjaG1lbnQoKSB7DQoNCiAgICAgICAgJHRoaXMt
Pk1haWwtPkJvZHkgPSAiSGVyZSBpcyB0aGUgdGV4dCBib2R5IjsNCiAgICAgICAgJHRoaXMtPk1h
aWwtPlN1YmplY3QgLj0gIjogUGxhaW4gKyBTdHJpbmdBdHRhY2htZW50IjsNCg0KICAgICAgICAk
c0F0dGFjaG1lbnQgPSAiVGhlc2UgY2hhcmFjdGVycyBhcmUgdGhlIGNvbnRlbnQgb2YgdGhlICIg
Lg0KICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGF0dGFjaG1lbnQuXG5UaGlzIG1pZ2h0
IGJlIHRha2VuIGZyb20gYSAiLg0KICAgICAgICAgICAgICAgICAgICAgICAiZGF0YWJhc2Ugb3Ig
c29tZSBvdGhlciBzdWNoIHRoaW5nLiAiOw0KDQogICAgICAgICR0aGlzLT5NYWlsLT5BZGRTdHJp
bmdBdHRhY2htZW50KCRzQXR0YWNobWVudCwgInN0cmluZ19hdHRhY2gudHh0Iik7DQoNCiAgICAg
ICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWls
LT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAg
ICAqIFBsYWluIHF1b3RlZC1wcmludGFibGUgbWVzc2FnZS4NCiAgICAgKi8NCiAgICBmdW5jdGlv
biB0ZXN0X1F1b3RlZF9QcmludGFibGUoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkg
PSAiSGVyZSBpcyB0aGUgbWFpbiBib2R5IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlN1YmplY3Qg
Lj0gIjogUGxhaW4gKyBRdW90ZWQtcHJpbnRhYmxlIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkVu
Y29kaW5nID0gInF1b3RlZC1wcmludGFibGUiOw0KDQogICAgICAgICR0aGlzLT5CdWlsZEJvZHko
KTsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFp
bC0+RXJyb3JJbmZvKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBUcnkgYSBwbGFpbiBtZXNz
YWdlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3RfSHRtbCgpIHsNCg0KICAgICAgICAkdGhp
cy0+TWFpbC0+SXNIVE1MKHRydWUpOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAi
OiBIVE1MIG9ubHkiOw0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgaXMgYSA8
Yj50ZXN0IG1lc3NhZ2U8L2I+IHdyaXR0ZW4gaW4gSFRNTC4gPC9icj4iIC4NCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiR28gdG8gPGEgaHJlZj1cImh0dHA6Ly9waHBtYWlsZXIuc291cmNl
Zm9yZ2UubmV0L1wiPiIgLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vcGhw
bWFpbGVyLnNvdXJjZWZvcmdlLm5ldC88L2E+IGZvciBuZXcgdmVyc2lvbnMgb2YgIiAuDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBocG1haWxlci4gIDxwLz4gVGhhbmsgeW91ISI7DQoN
CiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlz
LT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8q
Kg0KICAgICAqIFNpbXBsZSBIVE1MIGFuZCBhdHRhY2htZW50IHRlc3QNCiAgICAgKi8NCiAgICBm
dW5jdGlvbiB0ZXN0X0hUTUxfQXR0YWNobWVudCgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+
Qm9keSA9ICJUaGlzIGlzIHRoZSA8Yj5IVE1MPC9iPiBwYXJ0IG9mIHRoZSBlbWFpbC4iOw0KICAg
ICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBIVE1MICsgQXR0YWNobWVudCI7DQogICAg
ICAgICR0aGlzLT5NYWlsLT5Jc0hUTUwodHJ1ZSk7DQoNCiAgICAgICAgaWYoISR0aGlzLT5NYWls
LT5BZGRBdHRhY2htZW50KCJwaHBtYWlsZXJfdGVzdC5waHAiLCAidGVzdF9hdHRhY2gudHh0Iikp
DQogICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2UsICR0aGlzLT5NYWls
LT5FcnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAg
JHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5T
ZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAq
IEFuIGVtYmVkZGVkIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0
X0VtYmVkZGVkX0ltYWdlKCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkVtYmVk
ZGVkIEltYWdlOiA8aW1nIGFsdD1cInBocG1haWxlclwiIHNyYz1cImNpZDpteS1hdHRhY2hcIj4i
IC4NCiAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIGFuIGltYWdlITwvYT4iOw0KICAgICAg
ICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBFbWJlZGRlZCBJbWFnZSI7DQogICAgICAgICR0
aGlzLT5NYWlsLT5Jc0hUTUwodHJ1ZSk7DQoNCiAgICAgICAgaWYoISR0aGlzLT5NYWlsLT5BZGRF
bWJlZGRlZEltYWdlKCJ0ZXN0LnBuZyIsICJteS1hdHRhY2giLCAidGVzdC5wbmciLA0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhc2U2NCIsICJpbWFnZS9wbmci
KSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChmYWxzZSwgJHRoaXMtPk1h
aWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAg
ICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwt
PlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAg
ICogQW4gZW1iZWRkZWQgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRl
c3RfTXVsdGlfRW1iZWRkZWRfSW1hZ2UoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkg
PSAiRW1iZWRkZWQgSW1hZ2U6IDxpbWcgYWx0PVwicGhwbWFpbGVyXCIgc3JjPVwiY2lkOm15LWF0
dGFjaFwiPiIgLg0KICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgYW4gaW1hZ2UhPC9hPiI7
DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEVtYmVkZGVkIEltYWdlICsgQXR0
YWNobWVudCI7DQogICAgICAgICR0aGlzLT5NYWlsLT5Jc0hUTUwodHJ1ZSk7DQoNCiAgICAgICAg
aWYoISR0aGlzLT5NYWlsLT5BZGRFbWJlZGRlZEltYWdlKCJ0ZXN0LnBuZyIsICJteS1hdHRhY2gi
LCAidGVzdC5wbmciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImJhc2U2NCIsICJpbWFnZS9wbmciKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFz
c2VydChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47
DQogICAgICAgIH0NCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBo
cG1haWxlcl90ZXN0LnBocCIsICJ0ZXN0LnR4dCIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAk
dGhpcy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAg
ICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJ
bmZvKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTaW1wbGUgbXVsdGlwYXJ0L2FsdGVybmF0
aXZlIHRlc3QuDQogICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9BbHRCb2R5KCkgew0KDQogICAg
ICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgaXMgdGhlIDxiPkhUTUw8L2I+IHBhcnQgb2Yg
dGhlIGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5BbHRCb2R5ID0gIkhlcmUgaXMgdGhl
IHRleHQgYm9keSBvZiB0aGlzIG1lc3NhZ2UuICAiIC4NCiAgICAgICAgICAgICAgICAgICAiSXQg
c2hvdWxkIGJlIHF1aXRlIGEgZmV3IGxpbmVzLiAgSXQgc2hvdWxkIGJlIHdyYXBwZWQgYXQgdGhl
ICIgLg0KICAgICAgICAgICAgICAgICAgICI0MCBjaGFyYWN0ZXJzLiAgTWFrZSBzdXJlIHRoYXQg
aXQgaXMuIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPldvcmRXcmFwID0gNDA7DQogICAgICAgICR0
aGlzLT5BZGROb3RlKCJUaGlzIGlzIGEgbXVsaXBhcnQgYWx0ZXJuYXRpdmUgZW1haWwiKTsNCiAg
ICAgICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjogQWx0Qm9keSArIFdvcmQgV3JhcCI7DQoN
CiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlz
LT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8q
Kg0KICAgICAqIFNpbXBsZSBIVE1MIGFuZCBhdHRhY2htZW50IHRlc3QNCiAgICAgKi8NCiAgICBm
dW5jdGlvbiB0ZXN0X0FsdEJvZHlfQXR0YWNobWVudCgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFp
bC0+Qm9keSA9ICJUaGlzIGlzIHRoZSA8Yj5IVE1MPC9iPiBwYXJ0IG9mIHRoZSBlbWFpbC4iOw0K
ICAgICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICJUaGlzIGlzIHRoZSB0ZXh0IHBhcnQgb2Yg
dGhlIGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEFsdEJvZHkg
KyBBdHRhY2htZW50IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAg
ICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIs
ICJ0ZXN0X2F0dGFjaC50eHQiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2Vy
dChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQog
ICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5h
c3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQoNCiAg
ICAgICAgJGZwID0gZm9wZW4oIm1lc3NhZ2UudHh0IiwgInciKTsNCiAgICAgICAgZndyaXRlKCRm
cCwgJHRoaXMtPk1haWwtPkNyZWF0ZUhlYWRlcigpIC4gJHRoaXMtPk1haWwtPkNyZWF0ZUJvZHko
KSk7DQogICAgICAgIGZjbG9zZSgkZnApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRlc3RfTXVs
dGlwbGVTZW5kKCkgew0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJTZW5kaW5nIHR3byBt
ZXNzYWdlcyB3aXRob3V0IGtlZXBhbGl2ZSI7DQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsN
CiAgICAgICAgJHN1YmplY3QgPSAkdGhpcy0+TWFpbC0+U3ViamVjdDsNCg0KICAgICAgICAkdGhp
cy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAxIjsNCiAgICAgICAgJHRoaXMt
PmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCg0K
ICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAyIjsNCiAg
ICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJy
b3JJbmZvKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0ZXN0X1NtdHBLZWVwQWxpdmUoKSB7DQog
ICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgd2FzIGRvbmUgdXNpbmcgdGhlIFNNVFAg
a2VlcC1hbGl2ZS4iOw0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICRzdWJq
ZWN0ID0gJHRoaXMtPk1haWwtPlN1YmplY3Q7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPlNNVFBL
ZWVwQWxpdmUgPSB0cnVlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0
IC4gIjogU01UUCBrZWVwLWFsaXZlIDEiOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5N
YWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KDQogICAgICAgICR0aGlzLT5N
YWlsLT5TdWJqZWN0ID0gJHN1YmplY3QgLiAiOiBTTVRQIGtlZXAtYWxpdmUgMiI7DQogICAgICAg
ICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5m
byk7DQogICAgICAgICR0aGlzLT5NYWlsLT5TbXRwQ2xvc2UoKTsNCiAgICB9DQoNCiAgICAvKioN
CiAgICAgKiBUZXN0cyB0aGlzIGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFjazoNCiAgICAgKiAgICBo
dHRwOi8vd3d3LmN5YnNlYy5jb20vdnVsbi9QSFBNYWlsZXItRE9TLnBkZg0KICAgICAqLw0KICAg
IGZ1bmN0aW9uIHRlc3RfRGVuaWFsT2ZTZXJ2aWNlQXR0YWNrKCkgew0KICAgICAgICAkdGhpcy0+
TWFpbC0+Qm9keSA9ICJUaGlzIHNob3VsZCBubyBsb25nZXIgY2F1c2UgYSBkZW5pYWwgb2Ygc2Vy
dmljZS4iOw0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQoNCiAgICAgICAgJHRoaXMtPk1h
aWwtPlN1YmplY3QgPSBzdHJfcmVwZWF0KCJBIiwgOTk4KTsNCiAgICAgICAgJHRoaXMtPmFzc2Vy
dCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQoN
CiAgICBmdW5jdGlvbiB0ZXN0X0Vycm9yKCkgew0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVj
dCAuPSAiOiBUaGlzIHNob3VsZCBiZSBzZW50IjsNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgp
Ow0KICAgICAgICAkdGhpcy0+TWFpbC0+Q2xlYXJBbGxSZWNpcGllbnRzKCk7IC8vIG5vIGFkZHJl
c3NlcyBzaG91bGQgY2F1c2UgYW4gZXJyb3INCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+
TWFpbC0+SXNFcnJvcigpID09IGZhbHNlLCAiRXJyb3IgZm91bmQiKTsNCiAgICAgICAgJHRoaXMt
PmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpID09IGZhbHNlLCAiU2VuZCBzdWNjZWVkZWQiKTsN
CiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+SXNFcnJvcigpLCAiTm8gZXJyb3Ig
Zm91bmQiKTsNCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnWW91IG11c3QgcHJvdmlkZSBh
dCBsZWFzdCBvbmUgJyAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwaWVudCBl
bWFpbCBhZGRyZXNzLicsICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgICAgICAkdGhpcy0+
TWFpbC0+QWRkQWRkcmVzcyhnZXQoIm1haWxfdG8iKSk7DQogICAgICAgICR0aGlzLT5hc3NlcnQo
JHRoaXMtPk1haWwtPlNlbmQoKSwgIlNlbmQgZmFpbGVkIik7DQogICAgfQ0KfQ0KDQovKioNCiAq
IENyZWF0ZSBhbmQgcnVuIHRlc3QgaW5zdGFuY2UuDQogKi8NCg0KaWYoaXNzZXQoJEhUVFBfR0VU
X1ZBUlMpKQ0KICAgICRnbG9iYWxfdmFycyA9ICRIVFRQX0dFVF9WQVJTOw0KZWxzZQ0KICAgICRn
bG9iYWxfdmFycyA9ICRfUkVRVUVTVDsNCg0KaWYoaXNzZXQoJGdsb2JhbF92YXJzWyJzdWJtaXR0
ZWQiXSkpDQp7DQogICAgZWNobyAiVGVzdCByZXN1bHRzOjxicj4iOw0KICAgICRzdWl0ZSA9IG5l
dyBUZXN0U3VpdGUoICJwaHBtYWlsZXJUZXN0IiApOw0KDQogICAgJHRlc3RSdW5uZXIgPSBuZXcg
VGVzdFJ1bm5lcjsNCiAgICAkdGVzdFJ1bm5lci0+cnVuKCRzdWl0ZSk7DQogICAgZWNobyAiPGhy
IG5vc2hhZGUvPiI7DQp9DQoNCmZ1bmN0aW9uIGdldCgkc05hbWUpIHsNCiAgICBnbG9iYWwgJGds
b2JhbF92YXJzOw0KICAgIGlmKGlzc2V0KCRnbG9iYWxfdmFyc1skc05hbWVdKSkNCiAgICAgICAg
cmV0dXJuICRnbG9iYWxfdmFyc1skc05hbWVdOw0KICAgIGVsc2UNCiAgICAgICAgcmV0dXJuICIi
Ow0KfQ0KDQo/Pg0KDQo8aHRtbD4NCjxib2R5Pg0KPGgzPnBocG1haWxlciBVbml0IFRlc3Q8L2gz
Pg0KQnkgZW50ZXJpbmcgYSBTTVRQIGhvc3RuYW1lIGl0IHdpbGwgYXV0b21hdGljYWxseSBwZXJm
b3JtIHRlc3RzIHdpdGggU01UUC4NCg0KPGZvcm0gbmFtZT0icGhwbWFpbGVyX3VuaXQiIGFjdGlv
bj0icGhwbWFpbGVyX3Rlc3QucGhwIiBtZXRob2Q9ImdldCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVu
IiBuYW1lPSJzdWJtaXR0ZWQiIHZhbHVlPSIxIi8+DQpUbyBBZGRyZXNzOiA8aW5wdXQgdHlwZT0i
dGV4dCIgc2l6ZT0iNTAiIG5hbWU9Im1haWxfdG8iIHZhbHVlPSI8P3BocCBlY2hvIGdldCgibWFp
bF90byIpOyA/PiIvPg0KPGJyLz4NCkNjIEFkZHJlc3M6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXpl
PSI1MCIgbmFtZT0ibWFpbF9jYyIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0KCJtYWlsX2NjIik7ID8+
Ii8+DQo8YnIvPg0KU01UUCBIb3N0bmFtZTogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUwIiBu
YW1lPSJtYWlsX2hvc3QiIHZhbHVlPSI8P3BocCBlY2hvIGdldCgibWFpbF9ob3N0Iik7ID8+Ii8+
DQo8cC8+DQo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUnVuIFRlc3QiLz4NCg0KPC9mb3Jt
Pg0KPC9ib2R5Pg0KPC9odG1sPg0K


--b1_8eefdaf9aef95ea3f5cb51b00ce046fb--
