Date: Mon, 28 Jun 2004 18:02:04 +0100 Return-Path: nobody@example.com To: Test User Cc: Carbon User From: Unit Tester Reply-to: Reply Guy Subject: Unit Test: AltBody + Attachment Message-ID: <2e5da5e609061d58760408990e728f88@vv.intranet.villas-vacations.com> X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_2e5da5e609061d58760408990e728f88" --b1_2e5da5e609061d58760408990e728f88 Content-Type: multipart/alternative; boundary="b2_2e5da5e609061d58760408990e728f88" --b2_2e5da5e609061d58760408990e728f88 Content-Type: text/plain; charset = "iso-8859-1" Content-Transfer-Encoding: 8bit This is the text part of the email. --b2_2e5da5e609061d58760408990e728f88 Content-Type: text/html; charset = "iso-8859-1" Content-Transfer-Encoding: 8bit This is the HTML part of the email.

---------------------
Unit Test Information
---------------------
phpmailer version: 1.72
Content Type: text/html
Host: mail.telepac.pt
Attachments:
  • Name: phpmailer_test.php, Encoding: base64, Type: application/octet-stream

Changes
-------
  • Sender was changed to [nobody@example.com]
  • Mailer was changed to [smtp]


--b2_2e5da5e609061d58760408990e728f88-- --b1_2e5da5e609061d58760408990e728f88 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 ICAqLw0KICAgIHZhciAkSG9zdCA9ICJtYWlsLnRlbGVwYWMucHQiOw0KDQogICAgLyoqDQogICAg ICogSG9sZHMgdGhlIGNoYW5nZSBsb2cuDQogICAgICogQHByaXZhdGUNCiAgICAgKiBAdHlwZSBz dHJpbmcgYXJyYXkNCiAgICAgKi8NCiAgICB2YXIgJENoYW5nZUxvZyA9IGFycmF5KCk7DQoNCiAg ICAgLyoqDQogICAgICogSG9sZHMgdGhlIG5vdGUgbG9nLg0KICAgICAqIEBwcml2YXRlDQogICAg ICogQHR5cGUgc3RyaW5nIGFycmF5DQogICAgICovDQogICAgdmFyICROb3RlTG9nID0gYXJyYXko KTsNCg0KICAgIC8qKg0KICAgICAqIENsYXNzIGNvbnN0dWN0b3IuDQogICAgICovDQogICAgZnVu Y3Rpb24gcGhwbWFpbGVyVGVzdCgkbmFtZSkgew0KICAgICAgICAvKiBtdXN0IGRlZmluZSB0aGlz IGNvbnN0cnVjdG9yICovDQogICAgICAgICR0aGlzLT5UZXN0Q2FzZSggJG5hbWUgKTsNCiAgICB9 DQoNCiAgICAvKioNCiAgICAgKiBSdW4gYmVmb3JlIGVhY2ggdGVzdCBpcyBzdGFydGVkLg0KICAg ICAqLw0KICAgIGZ1bmN0aW9uIHNldFVwKCkgew0KICAgICAgICBnbG9iYWwgJGdsb2JhbF92YXJz Ow0KICAgICAgICBnbG9iYWwgJElOQ0xVREVfRElSOw0KDQogICAgICAgICR0aGlzLT5NYWlsID0g bmV3IFBIUE1haWxlcigpOw0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Qcmlvcml0eSA9IDM7DQog ICAgICAgICR0aGlzLT5NYWlsLT5FbmNvZGluZyA9ICI4Yml0IjsNCiAgICAgICAgJHRoaXMtPk1h aWwtPkNoYXJTZXQgPSAiaXNvLTg4NTktMSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5Gcm9tID0g InVuaXRfdGVzdEBwaHBtYWlsZXIuc2YubmV0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkZyb21O YW1lID0gIlVuaXQgVGVzdGVyIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlNlbmRlciA9ICIiOw0K ICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICJVbml0IFRlc3QiOw0KICAgICAgICAkdGhp cy0+TWFpbC0+Qm9keSA9ICIiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICIiOw0K ICAgICAgICAkdGhpcy0+TWFpbC0+V29yZFdyYXAgPSAwOw0KICAgICAgICAkdGhpcy0+TWFpbC0+ SG9zdCA9ICRnbG9iYWxfdmFyc1sibWFpbF9ob3N0Il07DQogICAgICAgICR0aGlzLT5NYWlsLT5Q b3J0ID0gMjU7DQogICAgICAgICR0aGlzLT5NYWlsLT5IZWxvID0gImxvY2FsaG9zdC5sb2NhbGRv bWFpbiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5TTVRQQXV0aCA9IGZhbHNlOw0KICAgICAgICAk dGhpcy0+TWFpbC0+VXNlcm5hbWUgPSAiIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlBhc3N3b3Jk ID0gIiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5QbHVnaW5EaXIgPSAkSU5DTFVERV9ESVI7DQoJ CSR0aGlzLT5NYWlsLT5BZGRSZXBseVRvKCJub19yZXBseUBwaHBtYWlsZXIuc2YubmV0IiwgIlJl cGx5IEd1eSIpOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U2VuZGVyID0gIm5vYm9keUBleGFtcGxl LmNvbSI7DQoNCiAgICAgICAgaWYoc3RybGVuKCR0aGlzLT5NYWlsLT5Ib3N0KSA+IDApDQogICAg ICAgICAgICAkdGhpcy0+TWFpbC0+TWFpbGVyID0gInNtdHAiOw0KICAgICAgICBlbHNlDQogICAg ICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5NYWlsLT5NYWlsZXIgPSAibWFpbCI7DQogICAgICAg ICAgICAkdGhpcy0+U2VuZGVyID0gInVuaXRfdGVzdEBwaHBtYWlsZXIuc2YubmV0IjsNCiAgICAg ICAgfQ0KDQogICAgICAgIGdsb2JhbCAkZ2xvYmFsX3ZhcnM7DQogICAgICAgICR0aGlzLT5TZXRB ZGRyZXNzKCRnbG9iYWxfdmFyc1sibWFpbF90byJdLCAiVGVzdCBVc2VyIik7DQogICAgICAgIGlm KHN0cmxlbigkZ2xvYmFsX3ZhcnNbIm1haWxfY2MiXSkgPiAwKQ0KICAgICAgICAgICAgJHRoaXMt PlNldEFkZHJlc3MoJGdsb2JhbF92YXJzWyJtYWlsX2NjIl0sICJDYXJib24gVXNlciIsICJjYyIp Ow0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFJ1biBhZnRlciBlYWNoIHRlc3QgaXMgY29tcGxl dGVkLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlYXJEb3duKCkgew0KICAgICAgICAvLyBDbGVh biBnbG9iYWwgdmFyaWFibGVzDQogICAgICAgICR0aGlzLT5NYWlsID0gTlVMTDsNCiAgICAgICAg JHRoaXMtPkNoYW5nZUxvZyA9IGFycmF5KCk7DQogICAgICAgICR0aGlzLT5Ob3RlTG9nID0gYXJy YXkoKTsNCiAgICB9DQoNCg0KICAgIC8qKg0KICAgICAqIEJ1aWxkIHRoZSBib2R5IG9mIHRoZSBt ZXNzYWdlIGluIHRoZSBhcHByb3ByaWF0ZSBmb3JtYXQuDQogICAgICogQHByaXZhdGUNCiAgICAg KiBAcmV0dXJucyB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gQnVpbGRCb2R5KCkgew0KICAg ICAgICAkdGhpcy0+Q2hlY2tDaGFuZ2VzKCk7DQoNCiAgICAgICAgLy8gRGV0ZXJtaW5lIGxpbmUg ZW5kaW5ncyBmb3IgbWVzc2FnZQ0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+Q29udGVudFR5cGUg PT0gInRleHQvaHRtbCIgfHwgc3RybGVuKCR0aGlzLT5NYWlsLT5BbHRCb2R5KSA+IDApDQogICAg ICAgIHsNCiAgICAgICAgICAgICRlb2wgPSAiPGJyLz4iOw0KICAgICAgICAgICAgJGJ1bGxldCA9 ICI8bGk+IjsNCiAgICAgICAgICAgICRidWxsZXRfc3RhcnQgPSAiPHVsPiI7DQogICAgICAgICAg ICAkYnVsbGV0X2VuZCA9ICI8L3VsPiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAg ICB7DQogICAgICAgICAgICAkZW9sID0gIlxuIjsNCiAgICAgICAgICAgICRidWxsZXQgPSAiIC0g IjsNCiAgICAgICAgICAgICRidWxsZXRfc3RhcnQgPSAiIjsNCiAgICAgICAgICAgICRidWxsZXRf ZW5kID0gIiI7DQogICAgICAgIH0NCg0KICAgICAgICAkUmVwb3J0Qm9keSA9ICIiOw0KDQogICAg ICAgICRSZXBvcnRCb2R5IC49ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0iIC4gJGVvbDsNCiAgICAg ICAgJFJlcG9ydEJvZHkgLj0gIlVuaXQgVGVzdCBJbmZvcm1hdGlvbiIgLiAkZW9sOw0KICAgICAg ICAkUmVwb3J0Qm9keSAuPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiAuICRlb2w7DQogICAgICAg ICRSZXBvcnRCb2R5IC49ICJwaHBtYWlsZXIgdmVyc2lvbjogIiAuICR0aGlzLT5NYWlsLT5WZXJz aW9uIC4gJGVvbDsNCiAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkNvbnRlbnQgVHlwZTogIiAuICR0 aGlzLT5NYWlsLT5Db250ZW50VHlwZSAuICRlb2w7DQoNCiAgICAgICAgaWYoc3RybGVuKCR0aGlz LT5NYWlsLT5Ib3N0KSA+IDApDQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAiSG9zdDogIiAu ICR0aGlzLT5NYWlsLT5Ib3N0IC4gJGVvbDsNCg0KICAgICAgICAvLyBJZiBhdHRhY2htZW50cyB0 aGVuIGNyZWF0ZSBhbiBhdHRhY2htZW50IGxpc3QNCiAgICAgICAgaWYoY291bnQoJHRoaXMtPk1h aWwtPmF0dGFjaG1lbnQpID4gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgJFJlcG9ydEJvZHkg Lj0gIkF0dGFjaG1lbnRzOiIgLiAkZW9sOw0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gJGJ1 bGxldF9zdGFydDsNCiAgICAgICAgICAgIGZvcigkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPk1h aWwtPmF0dGFjaG1lbnQpOyAkaSsrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRS ZXBvcnRCb2R5IC49ICRidWxsZXQgLiAiTmFtZTogIiAuICR0aGlzLT5NYWlsLT5hdHRhY2htZW50 WyRpXVsxXSAuICIsICI7DQogICAgICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkVuY29kaW5n OiAiIC4gJHRoaXMtPk1haWwtPmF0dGFjaG1lbnRbJGldWzNdIC4gIiwgIjsNCiAgICAgICAgICAg ICAgICAkUmVwb3J0Qm9keSAuPSAiVHlwZTogIiAuICR0aGlzLT5NYWlsLT5hdHRhY2htZW50WyRp XVs0XSAuICRlb2w7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAk YnVsbGV0X2VuZCAuICRlb2w7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBJZiB0aGVyZSBhcmUg Y2hhbmdlcyB0aGVuIGxpc3QgdGhlbQ0KICAgICAgICBpZihjb3VudCgkdGhpcy0+Q2hhbmdlTG9n KSA+IDApDQogICAgICAgIHsNCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICJDaGFuZ2VzIiAu ICRlb2w7DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAiLS0tLS0tLSIgLiAkZW9sOw0KDQog ICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X3N0YXJ0Ow0KICAgICAgICAgICAgZm9y KCRpID0gMDsgJGkgPCBjb3VudCgkdGhpcy0+Q2hhbmdlTG9nKTsgJGkrKykNCiAgICAgICAgICAg IHsNCiAgICAgICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0IC4gJHRoaXMtPkNoYW5n ZUxvZ1skaV1bMF0gLiAiIHdhcyBjaGFuZ2VkIHRvIFsiIC4NCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAkdGhpcy0+Q2hhbmdlTG9nWyRpXVsxXSAuICJdIiAuICRlb2w7DQogICAgICAg ICAgICB9DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X2VuZCAuICRlb2wgLiAk ZW9sOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vdGVzIHRoZW4gbGlz dCB0aGVtDQogICAgICAgIGlmKGNvdW50KCR0aGlzLT5Ob3RlTG9nKSA+IDApDQogICAgICAgIHsN CiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICJOb3RlcyIgLiAkZW9sOw0KICAgICAgICAgICAg JFJlcG9ydEJvZHkgLj0gIi0tLS0tIiAuICRlb2w7DQoNCiAgICAgICAgICAgICRSZXBvcnRCb2R5 IC49ICRidWxsZXRfc3RhcnQ7DQogICAgICAgICAgICBmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCR0 aGlzLT5Ob3RlTG9nKTsgJGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkUmVw b3J0Qm9keSAuPSAkYnVsbGV0IC4gJHRoaXMtPk5vdGVMb2dbJGldIC4gJGVvbDsNCiAgICAgICAg ICAgIH0NCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfZW5kOw0KICAgICAgICB9 DQoNCiAgICAgICAgLy8gUmUtYXR0YWNoIHRoZSBvcmlnaW5hbCBib2R5DQogICAgICAgICR0aGlz LT5NYWlsLT5Cb2R5IC49ICRlb2wgLiAkZW9sIC4gJFJlcG9ydEJvZHk7DQogICAgfQ0KDQogICAg LyoqDQogICAgICogQ2hlY2sgd2hpY2ggZGVmYXVsdCBzZXR0aW5ncyBoYXZlIGJlZW4gY2hhbmdl ZCBmb3IgdGhlIHJlcG9ydC4NCiAgICAgKiBAcHJpdmF0ZQ0KICAgICAqIEByZXR1cm5zIHZvaWQN CiAgICAgKi8NCiAgICBmdW5jdGlvbiBDaGVja0NoYW5nZXMoKSB7DQogICAgICAgIGlmKCR0aGlz LT5NYWlsLT5Qcmlvcml0eSAhPSAzKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiUHJp b3JpdHkiLCAkdGhpcy0+TWFpbC0+UHJpb3JpdHkpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+ RW5jb2RpbmcgIT0gIjhiaXQiKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiRW5jb2Rp bmciLCAkdGhpcy0+TWFpbC0+RW5jb2RpbmcpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+Q2hh clNldCAhPSAiaXNvLTg4NTktMSIpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJDaGFy U2V0IiwgJHRoaXMtPk1haWwtPkNoYXJTZXQpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+U2Vu ZGVyICE9ICIiKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiU2VuZGVyIiwgJHRoaXMt Pk1haWwtPlNlbmRlcik7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5Xb3JkV3JhcCAhPSAwKQ0K ICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiV29yZFdyYXAiLCAkdGhpcy0+TWFpbC0+V29y ZFdyYXApOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+TWFpbGVyICE9ICJtYWlsIikNCiAgICAg ICAgICAgICR0aGlzLT5BZGRDaGFuZ2UoIk1haWxlciIsICR0aGlzLT5NYWlsLT5NYWlsZXIpOw0K ICAgICAgICBpZigkdGhpcy0+TWFpbC0+UG9ydCAhPSAyNSkNCiAgICAgICAgICAgICR0aGlzLT5B ZGRDaGFuZ2UoIlBvcnQiLCAkdGhpcy0+TWFpbC0+UG9ydCk7DQogICAgICAgIGlmKCR0aGlzLT5N YWlsLT5IZWxvICE9ICJsb2NhbGhvc3QubG9jYWxkb21haW4iKQ0KICAgICAgICAgICAgJHRoaXMt PkFkZENoYW5nZSgiSGVsbyIsICR0aGlzLT5NYWlsLT5IZWxvKTsNCiAgICAgICAgaWYoJHRoaXMt Pk1haWwtPlNNVFBBdXRoKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiU01UUEF1dGgi LCAidHJ1ZSIpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFkZHMgYSBjaGFuZ2UgZW50cnku DQogICAgICogQHByaXZhdGUNCiAgICAgKiBAcmV0dXJucyB2b2lkDQogICAgICovDQogICAgZnVu Y3Rpb24gQWRkQ2hhbmdlKCRzTmFtZSwgJHNOZXdWYWx1ZSkgew0KICAgICAgICAkY3VyID0gY291 bnQoJHRoaXMtPkNoYW5nZUxvZyk7DQogICAgICAgICR0aGlzLT5DaGFuZ2VMb2dbJGN1cl1bMF0g PSAkc05hbWU7DQogICAgICAgICR0aGlzLT5DaGFuZ2VMb2dbJGN1cl1bMV0gPSAkc05ld1ZhbHVl Ow0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFkZHMgYSBzaW1wbGUgbm90ZSB0byB0aGUgbWVz c2FnZS4NCiAgICAgKiBAcHVibGljDQogICAgICogQHJldHVybnMgdm9pZA0KICAgICAqLw0KICAg IGZ1bmN0aW9uIEFkZE5vdGUoJHNWYWx1ZSkgew0KICAgICAgICAkdGhpcy0+Tm90ZUxvZ1tdID0g JHNWYWx1ZTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGRzIGFsbCBvZiB0aGUgYWRkcmVz c2VzDQogICAgICogQHB1YmxpYw0KICAgICAqIEByZXR1cm5zIHZvaWQNCiAgICAgKi8NCiAgICBm dW5jdGlvbiBTZXRBZGRyZXNzKCRzQWRkcmVzcywgJHNOYW1lID0gIiIsICRzVHlwZSA9ICJ0byIp IHsNCiAgICAgICAgc3dpdGNoKCRzVHlwZSkNCiAgICAgICAgew0KICAgICAgICAgICAgY2FzZSAi dG8iOg0KICAgICAgICAgICAgICAgICR0aGlzLT5NYWlsLT5BZGRBZGRyZXNzKCRzQWRkcmVzcywg JHNOYW1lKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgImNjIjoN CiAgICAgICAgICAgICAgICAkdGhpcy0+TWFpbC0+QWRkQ0MoJHNBZGRyZXNzLCAkc05hbWUpOw0K ICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiYmNjIjoNCiAgICAgICAg ICAgICAgICAkdGhpcy0+TWFpbC0+QWRkQkNDKCRzQWRkcmVzcywgJHNOYW1lKTsNCiAgICAgICAg ICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8NCiAgICAvLyBVTklUIFRFU1RTDQogICAg Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogICAg LyoqDQogICAgICogVHJ5IGEgcGxhaW4gbWVzc2FnZS4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0 ZXN0X1dvcmRXcmFwKCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Xb3JkV3JhcCA9IDQwOw0K ICAgICAgICAkbXlfYm9keSA9ICJIZXJlIGlzIHRoZSBtYWluIGJvZHkgb2YgdGhpcyBtZXNzYWdl LiAgSXQgc2hvdWxkICIgLg0KICAgICAgICAgICAgICAgICAgICJiZSBxdWl0ZSBhIGZldyBsaW5l cy4gIEl0IHNob3VsZCBiZSB3cmFwcGVkIGF0IHRoZSAiIC4NCiAgICAgICAgICAgICAgICAgICAi NDAgY2hhcmFjdGVycy4gIE1ha2Ugc3VyZSB0aGF0IGl0IGlzLiI7DQogICAgICAgICRuQm9keUxl biA9IHN0cmxlbigkbXlfYm9keSk7DQogICAgICAgICRteV9ib2R5IC49ICJcblxuVGhpcyBpcyB0 aGUgYWJvdmUgYm9keSBsZW5ndGg6ICIgLiAkbkJvZHlMZW47DQoNCiAgICAgICAgJHRoaXMtPk1h aWwtPkJvZHkgPSAkbXlfYm9keTsNCiAgICAgICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjog V29yZHdyYXAiOw0KDQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAgICAgJHRoaXMt PmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAg ICB9DQoNCiAgICAvKioNCiAgICAgKiBUcnkgYSBwbGFpbiBtZXNzYWdlLg0KICAgICAqLw0KICAg IGZ1bmN0aW9uIHRlc3RfTG93X1ByaW9yaXR5KCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Q cmlvcml0eSA9IDU7DQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkhlcmUgaXMgdGhlIG1h aW4gYm9keS4gIFRoZXJlIHNob3VsZCBiZSAiIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiYSByZXBseSB0byBhZGRyZXNzIGluIHRoaXMgbWVzc2FnZS4iOw0KICAgICAgICAkdGhpcy0+ TWFpbC0+U3ViamVjdCAuPSAiOiBMb3cgUHJpb3JpdHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+ QWRkUmVwbHlUbygibm9ib2R5QG5vYm9keS5jb20iLCAiTm9ib2R5IChVbml0IFRlc3QpIik7DQoN CiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlz LT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8q Kg0KICAgICAqIFNpbXBsZSBwbGFpbiBmaWxlIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAg ICBmdW5jdGlvbiB0ZXN0X011bHRpcGxlX1BsYWluX0ZpbGVBdHRhY2htZW50KCkgew0KDQogICAg ICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkhlcmUgaXMgdGhlIHRleHQgYm9keSI7DQogICAgICAg ICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IFBsYWluICsgTXVsdGlwbGUgRmlsZUF0dGFjaG1l bnRzIjsNCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInJvY2tzLnBu ZyIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+ TWFpbC0+RXJyb3JJbmZvKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAg ICAgIGlmKCEkdGhpcy0+TWFpbC0+QWRkQXR0YWNobWVudCgicGhwbWFpbGVyX3Rlc3QucGhwIiwg InRlc3QudHh0IikpDQogICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2Us ICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9 DQoNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0 aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAg IC8qKg0KICAgICAqIFNpbXBsZSBwbGFpbiBzdHJpbmcgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAq Lw0KICAgIGZ1bmN0aW9uIHRlc3RfUGxhaW5fU3RyaW5nQXR0YWNobWVudCgpIHsNCg0KICAgICAg ICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJIZXJlIGlzIHRoZSB0ZXh0IGJvZHkiOw0KICAgICAgICAk dGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBQbGFpbiArIFN0cmluZ0F0dGFjaG1lbnQiOw0KDQog ICAgICAgICRzQXR0YWNobWVudCA9ICJUaGVzZSBjaGFyYWN0ZXJzIGFyZSB0aGUgY29udGVudCBv ZiB0aGUgIiAuDQogICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXR0YWNobWVudC5cblRo aXMgbWlnaHQgYmUgdGFrZW4gZnJvbSBhICIuDQogICAgICAgICAgICAgICAgICAgICAgICJkYXRh YmFzZSBvciBzb21lIG90aGVyIHN1Y2ggdGhpbmcuICI7DQoNCiAgICAgICAgJHRoaXMtPk1haWwt PkFkZFN0cmluZ0F0dGFjaG1lbnQoJHNBdHRhY2htZW50LCAic3RyaW5nX2F0dGFjaC50eHQiKTsN Cg0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRo aXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAg LyoqDQogICAgICogUGxhaW4gcXVvdGVkLXByaW50YWJsZSBtZXNzYWdlLg0KICAgICAqLw0KICAg IGZ1bmN0aW9uIHRlc3RfUXVvdGVkX1ByaW50YWJsZSgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFp bC0+Qm9keSA9ICJIZXJlIGlzIHRoZSBtYWluIGJvZHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+ U3ViamVjdCAuPSAiOiBQbGFpbiArIFF1b3RlZC1wcmludGFibGUiOw0KICAgICAgICAkdGhpcy0+ TWFpbC0+RW5jb2RpbmcgPSAicXVvdGVkLXByaW50YWJsZSI7DQoNCiAgICAgICAgJHRoaXMtPkJ1 aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCksICR0 aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFRyeSBhIHBs YWluIG1lc3NhZ2UuDQogICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9IdG1sKCkgew0KDQogICAg ICAgICR0aGlzLT5NYWlsLT5Jc0hUTUwodHJ1ZSk7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJq ZWN0IC49ICI6IEhUTUwgb25seSI7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAiVGhp cyBpcyBhIDxiPnRlc3QgbWVzc2FnZTwvYj4gd3JpdHRlbiBpbiBIVE1MLiA8L2JyPiIgLg0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJHbyB0byA8YSBocmVmPVwiaHR0cDovL3BocG1haWxl ci5zb3VyY2Vmb3JnZS5uZXQvXCI+IiAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0 dHA6Ly9waHBtYWlsZXIuc291cmNlZm9yZ2UubmV0LzwvYT4gZm9yIG5ldyB2ZXJzaW9ucyBvZiAi IC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGhwbWFpbGVyLiAgPHAvPiBUaGFuayB5 b3UhIjsNCg0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3Nl cnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0K DQogICAgLyoqDQogICAgICogU2ltcGxlIEhUTUwgYW5kIGF0dGFjaG1lbnQgdGVzdA0KICAgICAq Lw0KICAgIGZ1bmN0aW9uIHRlc3RfSFRNTF9BdHRhY2htZW50KCkgew0KDQogICAgICAgICR0aGlz LT5NYWlsLT5Cb2R5ID0gIlRoaXMgaXMgdGhlIDxiPkhUTUw8L2I+IHBhcnQgb2YgdGhlIGVtYWls LiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEhUTUwgKyBBdHRhY2htZW50 IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAgICBpZighJHRo aXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0ZXN0X2F0dGFj aC50eHQiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChmYWxzZSwgJHRo aXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0K ICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMt Pk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoq DQogICAgICogQW4gZW1iZWRkZWQgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0 aW9uIHRlc3RfRW1iZWRkZWRfSW1hZ2UoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkg PSAiRW1iZWRkZWQgSW1hZ2U6IDxpbWcgYWx0PVwicGhwbWFpbGVyXCIgc3JjPVwiY2lkOm15LWF0 dGFjaFwiPiIgLg0KICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgYW4gaW1hZ2UhPC9hPiI7 DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEVtYmVkZGVkIEltYWdlIjsNCiAg ICAgICAgJHRoaXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAgICBpZighJHRoaXMtPk1h aWwtPkFkZEVtYmVkZGVkSW1hZ2UoInJvY2tzLnBuZyIsICJteS1hdHRhY2giLCAicm9ja3MucG5n IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXNlNjQiLCAi aW1hZ2UvcG5nIikpDQogICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2Us ICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9 DQoNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0 aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAg IC8qKg0KICAgICAqIEFuIGVtYmVkZGVkIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBm dW5jdGlvbiB0ZXN0X011bHRpX0VtYmVkZGVkX0ltYWdlKCkgew0KDQogICAgICAgICR0aGlzLT5N YWlsLT5Cb2R5ID0gIkVtYmVkZGVkIEltYWdlOiA8aW1nIGFsdD1cInBocG1haWxlclwiIHNyYz1c ImNpZDpteS1hdHRhY2hcIj4iIC4NCiAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIGFuIGlt YWdlITwvYT4iOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBFbWJlZGRlZCBJ bWFnZSArIEF0dGFjaG1lbnQiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+SXNIVE1MKHRydWUpOw0K DQogICAgICAgIGlmKCEkdGhpcy0+TWFpbC0+QWRkRW1iZWRkZWRJbWFnZSgicm9ja3MucG5nIiwg Im15LWF0dGFjaCIsICJyb2Nrcy5wbmciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImJhc2U2NCIsICJpbWFnZS9wbmciKSkNCiAgICAgICAgew0KICAgICAgICAg ICAgJHRoaXMtPmFzc2VydChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAg ICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0 dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0ZXN0LnR4dCIpKQ0KICAgICAgICB7DQog ICAgICAgICAgICAkdGhpcy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsN CiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5CdWlsZEJv ZHkoKTsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+ TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTaW1wbGUgbXVsdGlw YXJ0L2FsdGVybmF0aXZlIHRlc3QuDQogICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9BbHRCb2R5 KCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgaXMgdGhlIDxiPkhUTUw8 L2I+IHBhcnQgb2YgdGhlIGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5BbHRCb2R5ID0g IkhlcmUgaXMgdGhlIHRleHQgYm9keSBvZiB0aGlzIG1lc3NhZ2UuICAiIC4NCiAgICAgICAgICAg ICAgICAgICAiSXQgc2hvdWxkIGJlIHF1aXRlIGEgZmV3IGxpbmVzLiAgSXQgc2hvdWxkIGJlIHdy YXBwZWQgYXQgdGhlICIgLg0KICAgICAgICAgICAgICAgICAgICI0MCBjaGFyYWN0ZXJzLiAgTWFr ZSBzdXJlIHRoYXQgaXQgaXMuIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPldvcmRXcmFwID0gNDA7 DQogICAgICAgICR0aGlzLT5BZGROb3RlKCJUaGlzIGlzIGEgbXVsaXBhcnQgYWx0ZXJuYXRpdmUg ZW1haWwiKTsNCiAgICAgICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjogQWx0Qm9keSArIFdv cmQgV3JhcCI7DQoNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+ YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAg IH0NCg0KICAgIC8qKg0KICAgICAqIFNpbXBsZSBIVE1MIGFuZCBhdHRhY2htZW50IHRlc3QNCiAg ICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0X0FsdEJvZHlfQXR0YWNobWVudCgpIHsNCg0KICAgICAg ICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJUaGlzIGlzIHRoZSA8Yj5IVE1MPC9iPiBwYXJ0IG9mIHRo ZSBlbWFpbC4iOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICJUaGlzIGlzIHRoZSB0 ZXh0IHBhcnQgb2YgdGhlIGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49 ICI6IEFsdEJvZHkgKyBBdHRhY2htZW50IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPklzSFRNTCh0 cnVlKTsNCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1haWxl cl90ZXN0LnBocCIsICJ0ZXN0X2F0dGFjaC50eHQiKSkNCiAgICAgICAgew0KICAgICAgICAgICAg JHRoaXMtPmFzc2VydChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAg ICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAg ICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9y SW5mbyk7DQoNCiAgICAgICAgJGZwID0gZm9wZW4oIm1lc3NhZ2UudHh0IiwgInciKTsNCiAgICAg ICAgZndyaXRlKCRmcCwgJHRoaXMtPk1haWwtPkNyZWF0ZUhlYWRlcigpIC4gJHRoaXMtPk1haWwt PkNyZWF0ZUJvZHkoKSk7DQogICAgICAgIGZjbG9zZSgkZnApOw0KICAgIH0NCg0KICAgIGZ1bmN0 aW9uIHRlc3RfTXVsdGlwbGVTZW5kKCkgew0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJT ZW5kaW5nIHR3byBtZXNzYWdlcyB3aXRob3V0IGtlZXBhbGl2ZSI7DQogICAgICAgICR0aGlzLT5C dWlsZEJvZHkoKTsNCiAgICAgICAgJHN1YmplY3QgPSAkdGhpcy0+TWFpbC0+U3ViamVjdDsNCg0K ICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAxIjsNCiAg ICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJy b3JJbmZvKTsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjog U01UUCAyIjsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhp cy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0ZXN0X1NtdHBLZWVw QWxpdmUoKSB7DQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgd2FzIGRvbmUgdXNp bmcgdGhlIFNNVFAga2VlcC1hbGl2ZS4iOw0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQog ICAgICAgICRzdWJqZWN0ID0gJHRoaXMtPk1haWwtPlN1YmplY3Q7DQoNCiAgICAgICAgJHRoaXMt Pk1haWwtPlNNVFBLZWVwQWxpdmUgPSB0cnVlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVj dCA9ICRzdWJqZWN0IC4gIjogU01UUCBrZWVwLWFsaXZlIDEiOw0KICAgICAgICAkdGhpcy0+YXNz ZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KDQogICAg ICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0ID0gJHN1YmplY3QgLiAiOiBTTVRQIGtlZXAtYWxpdmUg MiI7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1h aWwtPkVycm9ySW5mbyk7DQogICAgICAgICR0aGlzLT5NYWlsLT5TbXRwQ2xvc2UoKTsNCiAgICB9 DQoNCiAgICBmdW5jdGlvbiB0ZXN0X0Vycm9yKCkgew0KICAgICAgICAkdGhpcy0+TWFpbC0+U3Vi amVjdCAuPSAiOiBUaGlzIHNob3VsZCBiZSBzZW50IjsNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9k eSgpOw0KICAgICAgICAkdGhpcy0+TWFpbC0+Q2xlYXJBbGxSZWNpcGllbnRzKCk7IC8vIG5vIGFk ZHJlc3NlcyBzaG91bGQgY2F1c2UgYW4gZXJyb3INCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhp cy0+TWFpbC0+SXNFcnJvcigpID09IGZhbHNlLCAiRXJyb3IgZm91bmQiKTsNCiAgICAgICAgJHRo aXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpID09IGZhbHNlLCAiU2VuZCBzdWNjZWVkZWQi KTsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+SXNFcnJvcigpLCAiTm8gZXJy b3IgZm91bmQiKTsNCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnWW91IG11c3QgcHJvdmlk ZSBhdCBsZWFzdCBvbmUgJyAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlY2lwaWVu dCBlbWFpbCBhZGRyZXNzLicsICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgICAgICAkdGhp cy0+TWFpbC0+QWRkQWRkcmVzcyhnZXQoIm1haWxfdG8iKSk7DQogICAgICAgICR0aGlzLT5hc3Nl cnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgIlNlbmQgZmFpbGVkIik7DQogICAgfQ0KfQ0KDQovKioN CiAqIENyZWF0ZSBhbmQgcnVuIHRlc3QgaW5zdGFuY2UuDQogKi8NCg0KaWYoaXNzZXQoJEhUVFBf R0VUX1ZBUlMpKQ0KICAgICRnbG9iYWxfdmFycyA9ICRIVFRQX0dFVF9WQVJTOw0KZWxzZQ0KICAg ICRnbG9iYWxfdmFycyA9ICRfUkVRVUVTVDsNCg0KaWYoaXNzZXQoJGdsb2JhbF92YXJzWyJzdWJt aXR0ZWQiXSkpDQp7DQogICAgZWNobyAiVGVzdCByZXN1bHRzOjxicj4iOw0KICAgICRzdWl0ZSA9 IG5ldyBUZXN0U3VpdGUoICJwaHBtYWlsZXJUZXN0IiApOw0KDQogICAgJHRlc3RSdW5uZXIgPSBu ZXcgVGVzdFJ1bm5lcjsNCiAgICAkdGVzdFJ1bm5lci0+cnVuKCRzdWl0ZSk7DQogICAgZWNobyAi PGhyIG5vc2hhZGUvPiI7DQp9DQoNCmZ1bmN0aW9uIGdldCgkc05hbWUpIHsNCiAgICBnbG9iYWwg JGdsb2JhbF92YXJzOw0KICAgIGlmKGlzc2V0KCRnbG9iYWxfdmFyc1skc05hbWVdKSkNCiAgICAg ICAgcmV0dXJuICRnbG9iYWxfdmFyc1skc05hbWVdOw0KICAgIGVsc2UNCiAgICAgICAgcmV0dXJu ICIiOw0KfQ0KDQo/Pg0KDQo8aHRtbD4NCjxib2R5Pg0KPGgzPnBocG1haWxlciBVbml0IFRlc3Q8 L2gzPg0KQnkgZW50ZXJpbmcgYSBTTVRQIGhvc3RuYW1lIGl0IHdpbGwgYXV0b21hdGljYWxseSBw ZXJmb3JtIHRlc3RzIHdpdGggU01UUC4NCg0KPGZvcm0gbmFtZT0icGhwbWFpbGVyX3VuaXQiIGFj dGlvbj0icGhwbWFpbGVyX3Rlc3QucGhwIiBtZXRob2Q9ImdldCI+DQo8aW5wdXQgdHlwZT0iaGlk ZGVuIiBuYW1lPSJzdWJtaXR0ZWQiIHZhbHVlPSIxIi8+DQpUbyBBZGRyZXNzOiA8aW5wdXQgdHlw ZT0idGV4dCIgc2l6ZT0iNTAiIG5hbWU9Im1haWxfdG8iIHZhbHVlPSI8P3BocCBlY2hvIGdldCgi bWFpbF90byIpOyA/PiIvPg0KPGJyLz4NCkNjIEFkZHJlc3M6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBz aXplPSI1MCIgbmFtZT0ibWFpbF9jYyIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0KCJtYWlsX2NjIik7 ID8+Ii8+DQo8YnIvPg0KU01UUCBIb3N0bmFtZTogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUw IiBuYW1lPSJtYWlsX2hvc3QiIHZhbHVlPSI8P3BocCBlY2hvIGdldCgibWFpbF9ob3N0Iik7ID8+ Ii8+DQo8cC8+DQo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iUnVuIFRlc3QiLz4NCg0KPC9m b3JtPg0KPC9ib2R5Pg0KPC9odG1sPg== --b1_2e5da5e609061d58760408990e728f88--