Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nT4b2-0005Cj-5b for pgsql-hackers@arkaria.postgresql.org; Sat, 12 Mar 2022 16:28:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nT4b0-0003BW-NJ for pgsql-hackers@arkaria.postgresql.org; Sat, 12 Mar 2022 16:27:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nT4az-0003BH-Vt for pgsql-hackers@lists.postgresql.org; Sat, 12 Mar 2022 16:27:58 +0000 Received: from sfr-1.cri.mines-paristech.fr ([77.158.180.225] helo=smtp.cri.ensmp.fr) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nT4au-0007s6-9t for pgsql-hackers@lists.postgresql.org; Sat, 12 Mar 2022 16:27:56 +0000 Received: from pseudo (185.141.6.84.rev.sfr.net [84.6.141.185]) by smtp.cri.ensmp.fr (Postfix) with ESMTPSA id 512CAC027F; Sat, 12 Mar 2022 17:31:07 +0100 (CET) Date: Sat, 12 Mar 2022 17:27:48 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@pseudo Reply-To: Fabien COELHO To: Peter Eisentraut cc: "pgsql-hackers@lists.postgresql.org" Subject: Re: psql - add SHOW_ALL_RESULTS option In-Reply-To: Message-ID: References: <18c78a01-4a34-9dd4-f78b-6860f1420c8e@enterprisedb.com> <6954328d-96f2-77f7-735f-7ce493a40949@enterprisedb.com> <2570e2ae-fa0f-aac9-f72f-bb59a9983a20@enterprisedb.com> <46259d13-5f90-1475-3c85-d7a597a2b862@enterprisedb.com> <20220113054433.wdjhidtm7gvyhfts@alap3.anarazel.de> <805c0496-d60d-802b-3d61-73fed38dea16@enterprisedb.com> User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="2056645051-696669486-1647102468=:3679190" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --2056645051-696669486-1647102468=:3679190 Content-Type: text/plain; charset=US-ASCII; format=flowed >> Are you planning to send a rebased patch for this commit fest? > > Argh, I did it in a reply in another thread:-( Attached v15. > > So as to help moves things forward, I'd suggest that we should not to care > too much about corner case repetition of some error messages which are due to > libpq internals, so I could remove the ugly buffer reset from the patch and > have the repetition, and if/when the issue is fixed later in libpq then the > repetition will be removed, fine! The issue is that we just expose the > strange behavior of libpq, which is libpq to solve, not psql. See attached v16 which removes the libpq workaround. -- Fabien. --2056645051-696669486-1647102468=:3679190 Content-Type: text/x-diff; name=psql-show-all-results-16.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=psql-show-all-results-16.patch ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVj dGVkL3BnX3N0YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9leHBlY3RlZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0DQpp bmRleCBlMGFiZTM0YmI2Li44ZjdmOTMxNzJhIDEwMDY0NA0KLS0tIGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvcGdfc3RhdF9zdGF0 ZW1lbnRzLm91dA0KKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv ZXhwZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dA0KQEAgLTUwLDggKzUw LDI4IEBAIEJFR0lOIFw7DQogU0VMRUNUIDIuMCBBUyAiZmxvYXQiIFw7DQog U0VMRUNUICd3b3JsZCcgQVMgInRleHQiIFw7DQogQ09NTUlUOw0KKyBmbG9h dCANCistLS0tLS0tDQorICAgMi4wDQorKDEgcm93KQ0KKw0KKyB0ZXh0ICAN CistLS0tLS0tDQorIHdvcmxkDQorKDEgcm93KQ0KKw0KIC0tIGNvbXBvdW5k IHdpdGggZW1wdHkgc3RhdGVtZW50cyBhbmQgc3B1cmlvdXMgbGVhZGluZyBz cGFjaW5nDQogXDtcOyAgIFNFTEVDVCAzICsgMyBcO1w7XDsgICBTRUxFQ1Qg JyAnIHx8ICcgIScgXDtcOyAgIFNFTEVDVCAxICsgNCBcOzsNCisgP2NvbHVt bj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgNg0KKygxIHJvdykNCisNCisg P2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICENCisoMSByb3cpDQorDQog ID9jb2x1bW4/IA0KIC0tLS0tLS0tLS0NCiAgICAgICAgIDUNCkBAIC02MSw2 ICs4MSwxMSBAQCBDT01NSVQ7DQogU0VMRUNUIDEgKyAxICsgMSBBUyAiYWRk IiBcZ3NldA0KIFNFTEVDVCA6YWRkICsgMSArIDEgQVMgImFkZCIgXDsNCiBT RUxFQ1QgOmFkZCArIDEgKyAxIEFTICJhZGQiIFxnc2V0DQorIGFkZCANCist LS0tLQ0KKyAgIDUNCisoMSByb3cpDQorDQogLS0gc2V0IG9wZXJhdG9yDQog U0VMRUNUIDEgQVMgaSBVTklPTiBTRUxFQ1QgMiBPUkRFUiBCWSBpOw0KICBp IA0KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbA0KaW5kZXggY2Fh YmIwNmM1My4uZjAxYWRiMWZkMiAxMDA2NDQNCi0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvcHNxbC1yZWYuc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9w c3FsLXJlZi5zZ21sDQpAQCAtMTI3LDE4ICsxMjcsMTEgQEAgZWNobyAnXHgg XFwgU0VMRUNUICogRlJPTSBmb287JyB8IHBzcWwNCiAgICAgICAgY29tbWFu ZHMgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyB0byBkaXZpZGUgaXQgaW50byBt dWx0aXBsZQ0KICAgICAgICB0cmFuc2FjdGlvbnMuICAoU2VlIDx4cmVmIGxp bmtlbmQ9InByb3RvY29sLWZsb3ctbXVsdGktc3RhdGVtZW50Ii8+DQogICAg ICAgIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2ZXIgaGFu ZGxlcyBtdWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgQWxzbywgPGFw cGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPiBvbmx5IHByaW50cyB0aGUN Ci0gICAgICAgcmVzdWx0IG9mIHRoZSBsYXN0IDxhY3JvbnltPlNRTDwvYWNy b255bT4gY29tbWFuZCBpbiB0aGUgc3RyaW5nLg0KLSAgICAgICBUaGlzIGlz IGRpZmZlcmVudCBmcm9tIHRoZSBiZWhhdmlvciB3aGVuIHRoZSBzYW1lIHN0 cmluZyBpcyByZWFkIGZyb20NCi0gICAgICAgYSBmaWxlIG9yIGZlZCB0byA8 YXBwbGljYXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRhcmQgaW5w dXQsDQotICAgICAgIGJlY2F1c2UgdGhlbiA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+IHNlbmRzDQotICAgICAgIGVhY2ggPGFjcm9ueW0+U1FM PC9hY3JvbnltPiBjb21tYW5kIHNlcGFyYXRlbHkuDQogICAgICAgPC9wYXJh Pg0KICAgICAgIDxwYXJhPg0KLSAgICAgICBCZWNhdXNlIG9mIHRoaXMgYmVo YXZpb3IsIHB1dHRpbmcgbW9yZSB0aGFuIG9uZSBTUUwgY29tbWFuZCBpbiBh DQotICAgICAgIHNpbmdsZSA8b3B0aW9uPi1jPC9vcHRpb24+IHN0cmluZyBv ZnRlbiBoYXMgdW5leHBlY3RlZCByZXN1bHRzLg0KLSAgICAgICBJdCdzIGJl dHRlciB0byB1c2UgcmVwZWF0ZWQgPG9wdGlvbj4tYzwvb3B0aW9uPiBjb21t YW5kcyBvciBmZWVkDQotICAgICAgIG11bHRpcGxlIGNvbW1hbmRzIHRvIDxh cHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4ncyBzdGFuZGFyZCBpbnB1 dCwNCisgICAgICAgSWYgaGF2aW5nIHNldmVyYWwgY29tbWFuZHMgZXhlY3V0 ZWQgaW4gb25lIHRyYW5zYWN0aW9uIGlzIG5vdCBkZXNpcmVkLCANCisgICAg ICAgdXNlIHJlcGVhdGVkIDxvcHRpb24+LWM8L29wdGlvbj4gY29tbWFuZHMg b3IgZmVlZCBtdWx0aXBsZSBjb21tYW5kcyB0bw0KKyAgICAgICA8YXBwbGlj YXRpb24+cHNxbDwvYXBwbGljYXRpb24+J3Mgc3RhbmRhcmQgaW5wdXQsDQog ICAgICAgIGVpdGhlciB1c2luZyA8YXBwbGljYXRpb24+ZWNobzwvYXBwbGlj YXRpb24+IGFzIGlsbHVzdHJhdGVkIGFib3ZlLCBvcg0KICAgICAgICB2aWEg YSBzaGVsbCBoZXJlLWRvY3VtZW50LCBmb3IgZXhhbXBsZToNCiA8cHJvZ3Jh bWxpc3Rpbmc+DQpAQCAtMzU3MCwxMCArMzU2Myw2IEBAIHNlbGVjdCAxXDsg c2VsZWN0IDJcOyBzZWxlY3QgMzsNCiAgICAgICAgIGNvbW1hbmRzIGluY2x1 ZGVkIGluIHRoZSBzdHJpbmcgdG8gZGl2aWRlIGl0IGludG8gbXVsdGlwbGUN CiAgICAgICAgIHRyYW5zYWN0aW9ucy4gIChTZWUgPHhyZWYgbGlua2VuZD0i cHJvdG9jb2wtZmxvdy1tdWx0aS1zdGF0ZW1lbnQiLz4NCiAgICAgICAgIGZv ciBtb3JlIGRldGFpbHMgYWJvdXQgaG93IHRoZSBzZXJ2ZXIgaGFuZGxlcyBt dWx0aS1xdWVyeSBzdHJpbmdzLikNCi0gICAgICAgIDxhcHBsaWNhdGlvbj5w c3FsPC9hcHBsaWNhdGlvbj4gcHJpbnRzIG9ubHkgdGhlIGxhc3QgcXVlcnkg cmVzdWx0DQotICAgICAgICBpdCByZWNlaXZlcyBmb3IgZWFjaCByZXF1ZXN0 OyBpbiB0aGlzIGV4YW1wbGUsIGFsdGhvdWdoIGFsbA0KLSAgICAgICAgdGhy ZWUgPGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPnMgYXJlIGluZGVlZCBleGVj dXRlZCwgPGFwcGxpY2F0aW9uPnBzcWw8L2FwcGxpY2F0aW9uPg0KLSAgICAg ICAgb25seSBwcmludHMgdGhlIDxsaXRlcmFsPjM8L2xpdGVyYWw+Lg0KICAg ICAgICAgPC9wYXJhPg0KICAgICAgICAgPC9saXN0aXRlbT4NCiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4NCkBAIC00MTYwLDYgKzQxNDksMTggQEAgYmFyDQog ICAgICAgPC92YXJsaXN0ZW50cnk+DQogDQogICAgICAgPHZhcmxpc3RlbnRy eT4NCisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPlNIT1dfQUxMX1JFU1VMVFM8 L3Zhcm5hbWU+PC90ZXJtPg0KKyAgICAgICAgPGxpc3RpdGVtPg0KKyAgICAg ICAgPHBhcmE+DQorICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgc2V0 IHRvIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sIG9ubHkgdGhlIGxhc3QNCisg ICAgICAgIHJlc3VsdCBvZiBhIGNvbWJpbmVkIHF1ZXJ5ICg8bGl0ZXJhbD5c OzwvbGl0ZXJhbD4pIGlzIHNob3duIGluc3RlYWQgb2YNCisgICAgICAgIGFs bCBvZiB0aGVtLiAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+b248L2xpdGVy YWw+LiAgVGhlIG9mZiBiZWhhdmlvcg0KKyAgICAgICAgaXMgZm9yIGNvbXBh dGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBwc3FsLg0KKyAgICAg ICAgPC9wYXJhPg0KKyAgICAgICAgPC9saXN0aXRlbT4NCisgICAgICA8L3Zh cmxpc3RlbnRyeT4NCisNCisgICAgICAgPHZhcmxpc3RlbnRyeT4NCiAgICAg ICAgIDx0ZXJtPjx2YXJuYW1lPlNIT1dfQ09OVEVYVDwvdmFybmFtZT48L3Rl cm0+DQogICAgICAgICA8bGlzdGl0ZW0+DQogICAgICAgICA8cGFyYT4NCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvY29tbW9uLmMgYi9zcmMvYmluL3Bz cWwvY29tbW9uLmMNCmluZGV4IGQ2NWI5YTEyNGYuLjc5MDMwNzU5NzUgMTAw NjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmMNCisrKyBiL3NyYy9i aW4vcHNxbC9jb21tb24uYw0KQEAgLTM0LDYgKzM0LDggQEAgc3RhdGljIGJv b2wgRGVzY3JpYmVRdWVyeShjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpl bGFwc2VkX21zZWMpOw0KIHN0YXRpYyBib29sIEV4ZWNRdWVyeVVzaW5nQ3Vy c29yKGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYyk7 DQogc3RhdGljIGJvb2wgY29tbWFuZF9ub19iZWdpbihjb25zdCBjaGFyICpx dWVyeSk7DQogc3RhdGljIGJvb2wgaXNfc2VsZWN0X2NvbW1hbmQoY29uc3Qg Y2hhciAqcXVlcnkpOw0KK3N0YXRpYyBpbnQgU2VuZFF1ZXJ5QW5kUHJvY2Vz c1Jlc3VsdHMoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqcGVsYXBzZWRf bXNlYywNCisJYm9vbCBpc193YXRjaCwgY29uc3QgcHJpbnRRdWVyeU9wdCAq b3B0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCwgYm9vbCAqdHhfZW5kZWQpOw0K IA0KIA0KIC8qDQpAQCAtMzU0LDcgKzM1Niw3IEBAIENoZWNrQ29ubmVjdGlv bih2b2lkKQ0KICAqIFJldHVybnMgdHJ1ZSBmb3IgdmFsaWQgcmVzdWx0LCBm YWxzZSBmb3IgZXJyb3Igc3RhdGUuDQogICovDQogc3RhdGljIGJvb2wNCi1B Y2NlcHRSZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCkNCitBY2NlcHRS ZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBzaG93X2Vycm9y KQ0KIHsNCiAJYm9vbAkJT0s7DQogDQpAQCAtMzg1LDcgKzM4Nyw3IEBAIEFj Y2VwdFJlc3VsdChjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAkJCQlicmVh azsNCiAJCX0NCiANCi0JaWYgKCFPSykNCisJaWYgKCFPSyAmJiBzaG93X2Vy cm9yKQ0KIAl7DQogCQljb25zdCBjaGFyICplcnJvciA9IFBRZXJyb3JNZXNz YWdlKHBzZXQuZGIpOw0KIA0KQEAgLTQ3Myw2ICs0NzUsMTggQEAgQ2xlYXJP clNhdmVSZXN1bHQoUEdyZXN1bHQgKnJlc3VsdCkNCiAJfQ0KIH0NCiANCisv Kg0KKyAqIENvbnN1bWUgYWxsIHJlc3VsdHMNCisgKi8NCitzdGF0aWMgdm9p ZA0KK0NsZWFyT3JTYXZlQWxsUmVzdWx0cygpDQorew0KKwlQR3Jlc3VsdAkq cmVzdWx0Ow0KKw0KKwl3aGlsZSAoKHJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBz ZXQuZGIpKSAhPSBOVUxMKQ0KKwkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0 KTsNCit9DQorDQogDQogLyoNCiAgKiBQcmludCBtaWNyb3RpbWluZyBvdXRw dXQuICBBbHdheXMgcHJpbnQgcmF3IG1pbGxpc2Vjb25kczsgaWYgdGhlIGlu dGVydmFsDQpAQCAtNTczLDcgKzU4Nyw3IEBAIFBTUUxleGVjKGNvbnN0IGNo YXIgKnF1ZXJ5KQ0KIA0KIAlSZXNldENhbmNlbENvbm4oKTsNCiANCi0JaWYg KCFBY2NlcHRSZXN1bHQocmVzKSkNCisJaWYgKCFBY2NlcHRSZXN1bHQocmVz LCB0cnVlKSkNCiAJew0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzKTsNCiAJ CXJlcyA9IE5VTEw7DQpAQCAtNTk2LDExICs2MTAsOCBAQCBpbnQNCiBQU1FM ZXhlY1dhdGNoKGNvbnN0IGNoYXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5 T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0KQ0KIHsNCiAJYm9vbAkJ dGltaW5nID0gcHNldC50aW1pbmc7DQotCVBHcmVzdWx0ICAgKnJlczsNCiAJ ZG91YmxlCQllbGFwc2VkX21zZWMgPSAwOw0KLQlpbnN0cl90aW1lCWJlZm9y ZTsNCi0JaW5zdHJfdGltZQlhZnRlcjsNCi0JRklMRQkgICAqZm91dDsNCisJ aW50CQkJcmVzOw0KIA0KIAlpZiAoIXBzZXQuZGIpDQogCXsNCkBAIC02MDks NzcgKzYyMCwxNCBAQCBQU1FMZXhlY1dhdGNoKGNvbnN0IGNoYXIgKnF1ZXJ5 LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlG b3V0KQ0KIAl9DQogDQogCVNldENhbmNlbENvbm4ocHNldC5kYik7DQotDQot CWlmICh0aW1pbmcpDQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGJlZm9y ZSk7DQotDQotCXJlcyA9IFBRZXhlYyhwc2V0LmRiLCBxdWVyeSk7DQotDQor CXJlcyA9IFNlbmRRdWVyeUFuZFByb2Nlc3NSZXN1bHRzKHF1ZXJ5LCAmZWxh cHNlZF9tc2VjLCB0cnVlLCBvcHQsIHByaW50UXVlcnlGb3V0LCBOVUxMKTsN CiAJUmVzZXRDYW5jZWxDb25uKCk7DQogDQotCWlmICghQWNjZXB0UmVzdWx0 KHJlcykpDQotCXsNCi0JCUNsZWFyT3JTYXZlUmVzdWx0KHJlcyk7DQotCQly ZXR1cm4gMDsNCi0JfQ0KLQ0KLQlpZiAodGltaW5nKQ0KLQl7DQotCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKGFmdGVyKTsNCi0JCUlOU1RSX1RJTUVfU1VC VFJBQ1QoYWZ0ZXIsIGJlZm9yZSk7DQotCQllbGFwc2VkX21zZWMgPSBJTlNU Ul9USU1FX0dFVF9NSUxMSVNFQyhhZnRlcik7DQotCX0NCi0NCi0JLyoNCi0J ICogSWYgU0lHSU5UIGlzIHNlbnQgd2hpbGUgdGhlIHF1ZXJ5IGlzIHByb2Nl c3NpbmcsIHRoZSBpbnRlcnJ1cHQgd2lsbCBiZQ0KLQkgKiBjb25zdW1lZC4g IFRoZSB1c2VyJ3MgaW50ZW50aW9uLCB0aG91Z2gsIGlzIHRvIGNhbmNlbCB0 aGUgZW50aXJlIHdhdGNoDQotCSAqIHByb2Nlc3MsIHNvIGRldGVjdCBhIHNl bnQgY2FuY2VsbGF0aW9uIHJlcXVlc3QgYW5kIGV4aXQgaW4gdGhpcyBjYXNl Lg0KLQkgKi8NCi0JaWYgKGNhbmNlbF9wcmVzc2VkKQ0KLQl7DQotCQlQUWNs ZWFyKHJlcyk7DQotCQlyZXR1cm4gMDsNCi0JfQ0KLQ0KLQlmb3V0ID0gcHJp bnRRdWVyeUZvdXQgPyBwcmludFF1ZXJ5Rm91dCA6IHBzZXQucXVlcnlGb3V0 Ow0KLQ0KLQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlcykpDQotCXsNCi0J CWNhc2UgUEdSRVNfVFVQTEVTX09LOg0KLQkJCXByaW50UXVlcnkocmVzLCBv cHQsIGZvdXQsIGZhbHNlLCBwc2V0LmxvZ2ZpbGUpOw0KLQkJCWJyZWFrOw0K LQ0KLQkJY2FzZSBQR1JFU19DT01NQU5EX09LOg0KLQkJCWZwcmludGYoZm91 dCwgIiVzXG4lc1xuXG4iLCBvcHQtPnRpdGxlLCBQUWNtZFN0YXR1cyhyZXMp KTsNCi0JCQlicmVhazsNCi0NCi0JCWNhc2UgUEdSRVNfRU1QVFlfUVVFUlk6 DQotCQkJcGdfbG9nX2Vycm9yKCJcXHdhdGNoIGNhbm5vdCBiZSB1c2VkIHdp dGggYW4gZW1wdHkgcXVlcnkiKTsNCi0JCQlQUWNsZWFyKHJlcyk7DQotCQkJ cmV0dXJuIC0xOw0KLQ0KLQkJY2FzZSBQR1JFU19DT1BZX09VVDoNCi0JCWNh c2UgUEdSRVNfQ09QWV9JTjoNCi0JCWNhc2UgUEdSRVNfQ09QWV9CT1RIOg0K LQkJCXBnX2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRo IENPUFkiKTsNCi0JCQlQUWNsZWFyKHJlcyk7DQotCQkJcmV0dXJuIC0xOw0K LQ0KLQkJZGVmYXVsdDoNCi0JCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQg cmVzdWx0IHN0YXR1cyBmb3IgXFx3YXRjaCIpOw0KLQkJCVBRY2xlYXIocmVz KTsNCi0JCQlyZXR1cm4gLTE7DQotCX0NCi0NCi0JUFFjbGVhcihyZXMpOw0K LQ0KLQlmZmx1c2goZm91dCk7DQotDQogCS8qIFBvc3NpYmxlIG1pY3JvdGlt aW5nIG91dHB1dCAqLw0KIAlpZiAodGltaW5nKQ0KIAkJUHJpbnRUaW1pbmco ZWxhcHNlZF9tc2VjKTsNCiANCi0JcmV0dXJuIDE7DQorCXJldHVybiByZXM7 DQogfQ0KIA0KIA0KQEAgLTcxNCw3ICs2NjIsNyBAQCBQcmludE5vdGlmaWNh dGlvbnModm9pZCkNCiAgKiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwg ZmFsc2Ugb3RoZXJ3aXNlLg0KICAqLw0KIHN0YXRpYyBib29sDQotUHJpbnRR dWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KK1ByaW50UXVl cnlUdXBsZXMoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCwgY29uc3QgcHJpbnRR dWVyeU9wdCAqb3B0LCBGSUxFICpwcmludFF1ZXJ5Rm91dCkNCiB7DQogCWJv b2wJCW9rID0gdHJ1ZTsNCiANCkBAIC03NDYsOCArNjk0LDkgQEAgUHJpbnRR dWVyeVR1cGxlcyhjb25zdCBQR3Jlc3VsdCAqcmVzdWx0KQ0KIAl9DQogCWVs c2UNCiAJew0KLQkJcHJpbnRRdWVyeShyZXN1bHQsICZwc2V0LnBvcHQsIHBz ZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsNCi0JCWlmIChm ZXJyb3IocHNldC5xdWVyeUZvdXQpKQ0KKwkJRklMRSAqZm91dCA9IHByaW50 UXVlcnlGb3V0ID8gcHJpbnRRdWVyeUZvdXQgOiBwc2V0LnF1ZXJ5Rm91dDsN CisJCXByaW50UXVlcnkocmVzdWx0LCBvcHQgPyBvcHQgOiAmcHNldC5wb3B0 LCBmb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsNCisJCWlmIChmZXJyb3Io Zm91dCkpDQogCQl7DQogCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcHJp bnQgcmVzdWx0IHRhYmxlOiAlbSIpOw0KIAkJCW9rID0gZmFsc2U7DQpAQCAt ODkyLDIxMyArODQxLDEzMSBAQCBsb29wX2V4aXQ6DQogDQogDQogLyoNCi0g KiBQcm9jZXNzUmVzdWx0OiB1dGlsaXR5IGZ1bmN0aW9uIGZvciB1c2UgYnkg U2VuZFF1ZXJ5KCkgb25seQ0KLSAqDQotICogV2hlbiBvdXIgY29tbWFuZCBz dHJpbmcgY29udGFpbmVkIGEgQ09QWSBGUk9NIFNURElOIG9yIENPUFkgVE8g U1RET1VULA0KLSAqIFBRZXhlYygpIGhhcyBzdG9wcGVkIGF0IHRoZSBQR3Jl c3VsdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0IHN1Y2gNCi0gKiBjb21t YW5kLiAgSW4gdGhhdCBldmVudCwgd2UnbGwgbWFyc2hhbCBkYXRhIGZvciB0 aGUgQ09QWSBhbmQgdGhlbiBjeWNsZQ0KLSAqIHRocm91Z2ggYW55IHN1YnNl cXVlbnQgUEdyZXN1bHQgb2JqZWN0cy4NCi0gKg0KLSAqIFdoZW4gdGhlIGNv bW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBubyBzdWNoIENPUFkgY29tbWFuZCwg dGhpcyBmdW5jdGlvbg0KLSAqIGRlZ2VuZXJhdGVzIHRvIGFuIEFjY2VwdFJl c3VsdCgpIGNhbGwuDQotICoNCi0gKiBDaGFuZ2VzIGl0cyBhcmd1bWVudCB0 byBwb2ludCB0byB0aGUgbGFzdCBQR3Jlc3VsdCBvZiB0aGUgY29tbWFuZCBz dHJpbmcsDQotICogb3IgTlVMTCBpZiB0aGF0IHJlc3VsdCB3YXMgZm9yIGEg Q09QWSBUTyBTVERPVVQuICAoUmV0dXJuaW5nIE5VTEwgcHJldmVudHMNCi0g KiB0aGUgY29tbWFuZCBzdGF0dXMgZnJvbSBiZWluZyBwcmludGVkLCB3aGlj aCB3ZSB3YW50IGluIHRoYXQgY2FzZSBzbyB0aGF0DQotICogdGhlIHN0YXR1 cyBsaW5lIGRvZXNuJ3QgZ2V0IHRha2VuIGFzIHBhcnQgb2YgdGhlIENPUFkg ZGF0YS4pDQotICoNCi0gKiBSZXR1cm5zIHRydWUgb24gY29tcGxldGUgc3Vj Y2VzcywgZmFsc2Ugb3RoZXJ3aXNlLiAgUG9zc2libGUgZmFpbHVyZSBtb2Rl cw0KLSAqIGluY2x1ZGUgcHVyZWx5IGNsaWVudC1zaWRlIHByb2JsZW1zOyBj aGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdHVzIGZvciB0aGUNCi0gKiBzZXJ2 ZXItc2lkZSBvcGluaW9uLg0KKyAqIE1hcnNoYWwgdGhlIENPUFkgZGF0YS4g IEVpdGhlciBzdWJyb3V0aW5lIHdpbGwgZ2V0IHRoZQ0KKyAqIGNvbm5lY3Rp b24gb3V0IG9mIGl0cyBDT1BZIHN0YXRlLCB0aGVuIA0KKyAqIG9uY2UgYW5k IHJlcG9ydCBhbnkgZXJyb3IuIFJldHVybiB3aGV0aGVyIGFsbCB3YXMgb2su DQorICoNCisgKiBGb3IgQ09QWSBPVVQsIGRpcmVjdCB0aGUgb3V0cHV0IHRv IHBzZXQuY29weVN0cmVhbSBpZiBpdCdzIHNldCwNCisgKiBvdGhlcndpc2Ug dG8gcHNldC5nZm5hbWUgaWYgaXQncyBzZXQsIG90aGVyd2lzZSB0byBxdWVy eUZvdXQuDQorICogRm9yIENPUFkgSU4sIHVzZSBwc2V0LmNvcHlTdHJlYW0g YXMgZGF0YSBzb3VyY2UgaWYgaXQncyBzZXQsDQorICogb3RoZXJ3aXNlIGN1 cl9jbWRfc291cmNlLg0KKyAqDQorICogVXBkYXRlIHJlc3VsdCBpZiBmdXJ0 aGVyIHByb2Nlc3NpbmcgaXMgbmVjZXNzYXJ5LCBvciBOVUxMIG90aGVyd2lz ZS4NCisgKiBSZXR1cm4gYSByZXN1bHQgd2hlbiBxdWVyeUZvdXQgY2FuIHNh ZmVseSBvdXRwdXQgYSByZXN1bHQgc3RhdHVzOg0KKyAqIG9uIENPUFkgSU4s IG9yIG9uIENPUFkgT1VUIGlmIHdyaXR0ZW4gdG8gc29tZXRoaW5nIG90aGVy IHRoYW4gcHNldC5xdWVyeUZvdXQuDQorICogUmV0dXJuaW5nIE5VTEwgcHJl dmVudHMgdGhlIGNvbW1hbmQgc3RhdHVzIGZyb20gYmVpbmcgcHJpbnRlZCwg d2hpY2gNCisgKiB3ZSB3YW50IGlmIHRoZSBzdGF0dXMgbGluZSBkb2Vzbid0 IGdldCB0YWtlbiBhcyBwYXJ0IG9mIHRoZSBDT1BZIGRhdGEuDQogICovDQog c3RhdGljIGJvb2wNCi1Qcm9jZXNzUmVzdWx0KFBHcmVzdWx0ICoqcmVzdWx0 cCkNCitIYW5kbGVDb3B5UmVzdWx0KFBHcmVzdWx0ICoqcmVzdWx0cCkNCiB7 DQotCWJvb2wJCXN1Y2Nlc3MgPSB0cnVlOw0KLQlib29sCQlmaXJzdF9jeWNs ZSA9IHRydWU7DQorCWJvb2wJCXN1Y2Nlc3M7DQorCUZJTEUJICAgKmNvcHlz dHJlYW07DQorCVBHcmVzdWx0ICAgKmNvcHlfcmVzdWx0Ow0KKwlFeGVjU3Rh dHVzVHlwZSByZXN1bHRfc3RhdHVzID0gUFFyZXN1bHRTdGF0dXMoKnJlc3Vs dHApOw0KIA0KLQlmb3IgKDs7KQ0KKwlBc3NlcnQocmVzdWx0X3N0YXR1cyA9 PSBQR1JFU19DT1BZX09VVCB8fA0KKwkJICAgcmVzdWx0X3N0YXR1cyA9PSBQ R1JFU19DT1BZX0lOKTsNCisNCisJU2V0Q2FuY2VsQ29ubihwc2V0LmRiKTsN CisNCisJaWYgKHJlc3VsdF9zdGF0dXMgPT0gUEdSRVNfQ09QWV9PVVQpDQog CXsNCi0JCUV4ZWNTdGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7DQotCQlib29s CQlpc19jb3B5Ow0KLQkJUEdyZXN1bHQgICAqbmV4dF9yZXN1bHQ7DQorCQli b29sCQluZWVkX2Nsb3NlID0gZmFsc2U7DQorCQlib29sCQlpc19waXBlID0g ZmFsc2U7DQogDQotCQlpZiAoIUFjY2VwdFJlc3VsdCgqcmVzdWx0cCkpDQor CQlpZiAocHNldC5jb3B5U3RyZWFtKQ0KIAkJew0KLQkJCS8qDQotCQkJICog RmFpbHVyZSBhdCB0aGlzIHBvaW50IGlzIGFsd2F5cyBhIHNlcnZlci1zaWRl IGZhaWx1cmUgb3IgYQ0KLQkJCSAqIGZhaWx1cmUgdG8gc3VibWl0IHRoZSBj b21tYW5kIHN0cmluZy4gIEVpdGhlciB3YXksIHdlJ3JlDQotCQkJICogZmlu aXNoZWQgd2l0aCB0aGlzIGNvbW1hbmQgc3RyaW5nLg0KLQkJCSAqLw0KLQkJ CXN1Y2Nlc3MgPSBmYWxzZTsNCi0JCQlicmVhazsNCisJCQkvKiBpbnZva2Vk IGJ5IFxjb3B5ICovDQorCQkJY29weXN0cmVhbSA9IHBzZXQuY29weVN0cmVh bTsNCiAJCX0NCi0NCi0JCXJlc3VsdF9zdGF0dXMgPSBQUXJlc3VsdFN0YXR1 cygqcmVzdWx0cCk7DQotCQlzd2l0Y2ggKHJlc3VsdF9zdGF0dXMpDQorCQll bHNlIGlmIChwc2V0LmdmbmFtZSkNCiAJCXsNCi0JCQljYXNlIFBHUkVTX0VN UFRZX1FVRVJZOg0KLQkJCWNhc2UgUEdSRVNfQ09NTUFORF9PSzoNCi0JCQlj YXNlIFBHUkVTX1RVUExFU19PSzoNCi0JCQkJaXNfY29weSA9IGZhbHNlOw0K LQkJCQlicmVhazsNCi0NCi0JCQljYXNlIFBHUkVTX0NPUFlfT1VUOg0KLQkJ CWNhc2UgUEdSRVNfQ09QWV9JTjoNCi0JCQkJaXNfY29weSA9IHRydWU7DQot CQkJCWJyZWFrOw0KLQ0KLQkJCWRlZmF1bHQ6DQotCQkJCS8qIEFjY2VwdFJl c3VsdCgpIHNob3VsZCBoYXZlIGNhdWdodCBhbnl0aGluZyBlbHNlLiAqLw0K LQkJCQlpc19jb3B5ID0gZmFsc2U7DQotCQkJCXBnX2xvZ19lcnJvcigidW5l eHBlY3RlZCBQUXJlc3VsdFN0YXR1czogJWQiLCByZXN1bHRfc3RhdHVzKTsN Ci0JCQkJYnJlYWs7DQotCQl9DQotDQotCQlpZiAoaXNfY29weSkNCi0JCXsN Ci0JCQkvKg0KLQkJCSAqIE1hcnNoYWwgdGhlIENPUFkgZGF0YS4gIEVpdGhl ciBzdWJyb3V0aW5lIHdpbGwgZ2V0IHRoZQ0KLQkJCSAqIGNvbm5lY3Rpb24g b3V0IG9mIGl0cyBDT1BZIHN0YXRlLCB0aGVuIGNhbGwgUFFyZXN1bHRTdGF0 dXMoKQ0KLQkJCSAqIG9uY2UgYW5kIHJlcG9ydCBhbnkgZXJyb3IuDQotCQkJ ICoNCi0JCQkgKiBGb3IgQ09QWSBPVVQsIGRpcmVjdCB0aGUgb3V0cHV0IHRv IHBzZXQuY29weVN0cmVhbSBpZiBpdCdzIHNldCwNCi0JCQkgKiBvdGhlcndp c2UgdG8gcHNldC5nZm5hbWUgaWYgaXQncyBzZXQsIG90aGVyd2lzZSB0byBx dWVyeUZvdXQuDQotCQkJICogRm9yIENPUFkgSU4sIHVzZSBwc2V0LmNvcHlT dHJlYW0gYXMgZGF0YSBzb3VyY2UgaWYgaXQncyBzZXQsDQotCQkJICogb3Ro ZXJ3aXNlIGN1cl9jbWRfc291cmNlLg0KLQkJCSAqLw0KLQkJCUZJTEUJICAg KmNvcHlzdHJlYW07DQotCQkJUEdyZXN1bHQgICAqY29weV9yZXN1bHQ7DQot DQotCQkJU2V0Q2FuY2VsQ29ubihwc2V0LmRiKTsNCi0JCQlpZiAocmVzdWx0 X3N0YXR1cyA9PSBQR1JFU19DT1BZX09VVCkNCisJCQkvKiBpbnZva2VkIGJ5 IFxnICovDQorCQkJaWYgKG9wZW5RdWVyeU91dHB1dEZpbGUocHNldC5nZm5h bWUsDQorCQkJCQkJCQkJJmNvcHlzdHJlYW0sICZpc19waXBlKSkNCiAJCQl7 DQotCQkJCWJvb2wJCW5lZWRfY2xvc2UgPSBmYWxzZTsNCi0JCQkJYm9vbAkJ aXNfcGlwZSA9IGZhbHNlOw0KLQ0KLQkJCQlpZiAocHNldC5jb3B5U3RyZWFt KQ0KLQkJCQl7DQotCQkJCQkvKiBpbnZva2VkIGJ5IFxjb3B5ICovDQotCQkJ CQljb3B5c3RyZWFtID0gcHNldC5jb3B5U3RyZWFtOw0KLQkJCQl9DQotCQkJ CWVsc2UgaWYgKHBzZXQuZ2ZuYW1lKQ0KLQkJCQl7DQotCQkJCQkvKiBpbnZv a2VkIGJ5IFxnICovDQotCQkJCQlpZiAob3BlblF1ZXJ5T3V0cHV0RmlsZShw c2V0LmdmbmFtZSwNCi0JCQkJCQkJCQkJCSZjb3B5c3RyZWFtLCAmaXNfcGlw ZSkpDQotCQkJCQl7DQotCQkJCQkJbmVlZF9jbG9zZSA9IHRydWU7DQotCQkJ CQkJaWYgKGlzX3BpcGUpDQotCQkJCQkJCWRpc2FibGVfc2lncGlwZV90cmFw KCk7DQotCQkJCQl9DQotCQkJCQllbHNlDQotCQkJCQkJY29weXN0cmVhbSA9 IE5VTEw7CS8qIGRpc2NhcmQgQ09QWSBkYXRhIGVudGlyZWx5ICovDQotCQkJ CX0NCi0JCQkJZWxzZQ0KLQkJCQl7DQotCQkJCQkvKiBmYWxsIGJhY2sgdG8g dGhlIGdlbmVyaWMgcXVlcnkgb3V0cHV0IHN0cmVhbSAqLw0KLQkJCQkJY29w eXN0cmVhbSA9IHBzZXQucXVlcnlGb3V0Ow0KLQkJCQl9DQotDQotCQkJCXN1 Y2Nlc3MgPSBoYW5kbGVDb3B5T3V0KHBzZXQuZGIsDQotCQkJCQkJCQkJCWNv cHlzdHJlYW0sDQotCQkJCQkJCQkJCSZjb3B5X3Jlc3VsdCkNCi0JCQkJCSYm IHN1Y2Nlc3MNCi0JCQkJCSYmIChjb3B5c3RyZWFtICE9IE5VTEwpOw0KLQ0K LQkJCQkvKg0KLQkJCQkgKiBTdXBwcmVzcyBzdGF0dXMgcHJpbnRpbmcgaWYg dGhlIHJlcG9ydCB3b3VsZCBnbyB0byB0aGUgc2FtZQ0KLQkJCQkgKiBwbGFj ZSBhcyB0aGUgQ09QWSBkYXRhIGp1c3Qgd2VudC4gIE5vdGUgdGhpcyBkb2Vz bid0DQotCQkJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBzaW5jZSBo YW5kbGVDb3B5T3V0IGRpZCB0aGF0Lg0KLQkJCQkgKi8NCi0JCQkJaWYgKGNv cHlzdHJlYW0gPT0gcHNldC5xdWVyeUZvdXQpDQotCQkJCXsNCi0JCQkJCVBR Y2xlYXIoY29weV9yZXN1bHQpOw0KLQkJCQkJY29weV9yZXN1bHQgPSBOVUxM Ow0KLQkJCQl9DQotDQotCQkJCWlmIChuZWVkX2Nsb3NlKQ0KLQkJCQl7DQot CQkJCQkvKiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCi0JCQkJ CWlmIChpc19waXBlKQ0KLQkJCQkJew0KLQkJCQkJCXBjbG9zZShjb3B5c3Ry ZWFtKTsNCi0JCQkJCQlyZXN0b3JlX3NpZ3BpcGVfdHJhcCgpOw0KLQkJCQkJ fQ0KLQkJCQkJZWxzZQ0KLQkJCQkJew0KLQkJCQkJCWZjbG9zZShjb3B5c3Ry ZWFtKTsNCi0JCQkJCX0NCi0JCQkJfQ0KKwkJCQluZWVkX2Nsb3NlID0gdHJ1 ZTsNCisJCQkJaWYgKGlzX3BpcGUpDQorCQkJCQlkaXNhYmxlX3NpZ3BpcGVf dHJhcCgpOw0KIAkJCX0NCiAJCQllbHNlDQotCQkJew0KLQkJCQkvKiBDT1BZ IElOICovDQotCQkJCWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBw c2V0LmNvcHlTdHJlYW0gOiBwc2V0LmN1cl9jbWRfc291cmNlOw0KLQkJCQlz dWNjZXNzID0gaGFuZGxlQ29weUluKHBzZXQuZGIsDQotCQkJCQkJCQkJICAg Y29weXN0cmVhbSwNCi0JCQkJCQkJCQkgICBQUWJpbmFyeVR1cGxlcygqcmVz dWx0cCksDQotCQkJCQkJCQkJICAgJmNvcHlfcmVzdWx0KSAmJiBzdWNjZXNz Ow0KLQkJCX0NCi0JCQlSZXNldENhbmNlbENvbm4oKTsNCi0NCi0JCQkvKg0K LQkJCSAqIFJlcGxhY2UgdGhlIFBHUkVTX0NPUFlfT1VUL0lOIHJlc3VsdCB3 aXRoIENPUFkgY29tbWFuZCdzIGV4aXQNCi0JCQkgKiBzdGF0dXMsIG9yIHdp dGggTlVMTCBpZiB3ZSB3YW50IHRvIHN1cHByZXNzIHByaW50aW5nIGFueXRo aW5nLg0KLQkJCSAqLw0KLQkJCVBRY2xlYXIoKnJlc3VsdHApOw0KLQkJCSpy ZXN1bHRwID0gY29weV9yZXN1bHQ7DQorCQkJCWNvcHlzdHJlYW0gPSBOVUxM OwkvKiBkaXNjYXJkIENPUFkgZGF0YSBlbnRpcmVseSAqLw0KIAkJfQ0KLQkJ ZWxzZSBpZiAoZmlyc3RfY3ljbGUpDQorCQllbHNlDQogCQl7DQotCQkJLyog ZmFzdCBwYXRoOiBubyBDT1BZIGNvbW1hbmRzOyBQUWV4ZWMgdmlzaXRlZCBh bGwgcmVzdWx0cyAqLw0KLQkJCWJyZWFrOw0KKwkJCS8qIGZhbGwgYmFjayB0 byB0aGUgZ2VuZXJpYyBxdWVyeSBvdXRwdXQgc3RyZWFtICovDQorCQkJY29w eXN0cmVhbSA9IHBzZXQucXVlcnlGb3V0Ow0KIAkJfQ0KIA0KKwkJc3VjY2Vz cyA9IGhhbmRsZUNvcHlPdXQocHNldC5kYiwNCisJCQkJCQkJCWNvcHlzdHJl YW0sDQorCQkJCQkJCQkmY29weV9yZXN1bHQpDQorCQkJJiYgKGNvcHlzdHJl YW0gIT0gTlVMTCk7DQorDQogCQkvKg0KLQkJICogQ2hlY2sgUFFnZXRSZXN1 bHQoKSBhZ2Fpbi4gIEluIHRoZSB0eXBpY2FsIGNhc2Ugb2YgYSBzaW5nbGUt Y29tbWFuZA0KLQkJICogc3RyaW5nLCBpdCB3aWxsIHJldHVybiBOVUxMLiAg T3RoZXJ3aXNlLCB3ZSdsbCBoYXZlIG90aGVyIHJlc3VsdHMNCi0JCSAqIHRv IHByb2Nlc3MgdGhhdCBtYXkgaW5jbHVkZSBvdGhlciBDT1BZcy4gIFdlIGtl ZXAgdGhlIGxhc3QgcmVzdWx0Lg0KKwkJICogU3VwcHJlc3Mgc3RhdHVzIHBy aW50aW5nIGlmIHRoZSByZXBvcnQgd291bGQgZ28gdG8gdGhlIHNhbWUNCisJ CSAqIHBsYWNlIGFzIHRoZSBDT1BZIGRhdGEganVzdCB3ZW50LiAgTm90ZSB0 aGlzIGRvZXNuJ3QNCisJCSAqIHByZXZlbnQgZXJyb3IgcmVwb3J0aW5nLCBz aW5jZSBoYW5kbGVDb3B5T3V0IGRpZCB0aGF0Lg0KIAkJICovDQotCQluZXh0 X3Jlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIpOw0KLQkJaWYgKCFuZXh0 X3Jlc3VsdCkNCi0JCQlicmVhazsNCisJCWlmIChjb3B5c3RyZWFtID09IHBz ZXQucXVlcnlGb3V0KQ0KKwkJew0KKwkJCVBRY2xlYXIoY29weV9yZXN1bHQp Ow0KKwkJCWNvcHlfcmVzdWx0ID0gTlVMTDsNCisJCX0NCiANCi0JCVBRY2xl YXIoKnJlc3VsdHApOw0KLQkJKnJlc3VsdHAgPSBuZXh0X3Jlc3VsdDsNCi0J CWZpcnN0X2N5Y2xlID0gZmFsc2U7DQorCQlpZiAobmVlZF9jbG9zZSkNCisJ CXsNCisJCQkvKiBjbG9zZSBcZyBhcmd1bWVudCBmaWxlL3BpcGUgKi8NCisJ CQlpZiAoaXNfcGlwZSkNCisJCQl7DQorCQkJCXBjbG9zZShjb3B5c3RyZWFt KTsNCisJCQkJcmVzdG9yZV9zaWdwaXBlX3RyYXAoKTsNCisJCQl9DQorCQkJ ZWxzZQ0KKwkJCXsNCisJCQkJZmNsb3NlKGNvcHlzdHJlYW0pOw0KKwkJCX0N CisJCX0NCisJfQ0KKwllbHNlDQorCXsNCisJCS8qIENPUFkgSU4gKi8NCisJ CWNvcHlzdHJlYW0gPSBwc2V0LmNvcHlTdHJlYW0gPyBwc2V0LmNvcHlTdHJl YW0gOiBwc2V0LmN1cl9jbWRfc291cmNlOw0KKwkJc3VjY2VzcyA9IGhhbmRs ZUNvcHlJbihwc2V0LmRiLA0KKwkJCQkJCQkgICBjb3B5c3RyZWFtLA0KKwkJ CQkJCQkgICBQUWJpbmFyeVR1cGxlcygqcmVzdWx0cCksDQorCQkJCQkJCSAg ICZjb3B5X3Jlc3VsdCk7DQogCX0NCiANCi0JU2V0UmVzdWx0VmFyaWFibGVz KCpyZXN1bHRwLCBzdWNjZXNzKTsNCi0NCi0JLyogbWF5IG5lZWQgdGhpcyB0 byByZWNvdmVyIGZyb20gY29ubiBsb3NzIGR1cmluZyBDT1BZICovDQotCWlm ICghZmlyc3RfY3ljbGUgJiYgIUNoZWNrQ29ubmVjdGlvbigpKQ0KLQkJcmV0 dXJuIGZhbHNlOw0KKwlSZXNldENhbmNlbENvbm4oKTsNCisJUFFjbGVhcigq cmVzdWx0cCk7DQorCSpyZXN1bHRwID0gY29weV9yZXN1bHQ7DQogDQogCXJl dHVybiBzdWNjZXNzOw0KIH0NCiANCi0NCiAvKg0KICAqIFByaW50UXVlcnlT dGF0dXM6IHJlcG9ydCBjb21tYW5kIHN0YXR1cyBhcyByZXF1aXJlZA0KICAq DQotICogTm90ZTogVXRpbGl0eSBmdW5jdGlvbiBmb3IgdXNlIGJ5IFByaW50 UXVlcnlSZXN1bHQoKSBvbmx5Lg0KKyAqIE5vdGU6IFV0aWxpdHkgZnVuY3Rp b24gZm9yIHVzZSBieSBIYW5kbGVRdWVyeVJlc3VsdCgpIG9ubHkuDQogICov DQogc3RhdGljIHZvaWQNCi1QcmludFF1ZXJ5U3RhdHVzKFBHcmVzdWx0ICpy ZXN1bHQpDQorUHJpbnRRdWVyeVN0YXR1cyhQR3Jlc3VsdCAqcmVzdWx0LCBG SUxFICpwcmludFF1ZXJ5Rm91dCkNCiB7DQogCWNoYXIJCWJ1ZlsxNl07DQor CUZJTEUJICAgKmZvdXQgPSBwcmludFF1ZXJ5Rm91dCA/IHByaW50UXVlcnlG b3V0IDogcHNldC5xdWVyeUZvdXQ7DQogDQogCWlmICghcHNldC5xdWlldCkN CiAJew0KIAkJaWYgKHBzZXQucG9wdC50b3B0LmZvcm1hdCA9PSBQUklOVF9I VE1MKQ0KIAkJew0KLQkJCWZwdXRzKCI8cD4iLCBwc2V0LnF1ZXJ5Rm91dCk7 DQotCQkJaHRtbF9lc2NhcGVkX3ByaW50KFBRY21kU3RhdHVzKHJlc3VsdCks IHBzZXQucXVlcnlGb3V0KTsNCi0JCQlmcHV0cygiPC9wPlxuIiwgcHNldC5x dWVyeUZvdXQpOw0KKwkJCWZwdXRzKCI8cD4iLCBmb3V0KTsNCisJCQlodG1s X2VzY2FwZWRfcHJpbnQoUFFjbWRTdGF0dXMocmVzdWx0KSwgZm91dCk7DQor CQkJZnB1dHMoIjwvcD5cbiIsIGZvdXQpOw0KIAkJfQ0KIAkJZWxzZQ0KLQkJ CWZwcmludGYocHNldC5xdWVyeUZvdXQsICIlc1xuIiwgUFFjbWRTdGF0dXMo cmVzdWx0KSk7DQorCQkJZnByaW50Zihmb3V0LCAiJXNcbiIsIFBRY21kU3Rh dHVzKHJlc3VsdCkpOw0KIAl9DQogDQogCWlmIChwc2V0LmxvZ2ZpbGUpDQpA QCAtMTExMCw0MyArOTc3LDUwIEBAIFByaW50UXVlcnlTdGF0dXMoUEdyZXN1 bHQgKnJlc3VsdCkNCiANCiANCiAvKg0KLSAqIFByaW50UXVlcnlSZXN1bHQ6 IHByaW50IG91dCAob3Igc3RvcmUgb3IgZXhlY3V0ZSkgcXVlcnkgcmVzdWx0 IGFzIHJlcXVpcmVkDQotICoNCi0gKiBOb3RlOiBVdGlsaXR5IGZ1bmN0aW9u IGZvciB1c2UgYnkgU2VuZFF1ZXJ5KCkgb25seS4NCisgKiBIYW5kbGVRdWVy eVJlc3VsdDogcHJpbnQgb3V0LCBzdG9yZSBvciBleGVjdXRlIG9uZSBxdWVy eSByZXN1bHQNCisgKiBhcyByZXF1aXJlZC4NCiAgKg0KICAqIFJldHVybnMg dHJ1ZSBpZiB0aGUgcXVlcnkgZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5LCBmYWxz ZSBvdGhlcndpc2UuDQogICovDQogc3RhdGljIGJvb2wNCi1QcmludFF1ZXJ5 UmVzdWx0KFBHcmVzdWx0ICpyZXN1bHQpDQorSGFuZGxlUXVlcnlSZXN1bHQo UEdyZXN1bHQgKnJlc3VsdCwgYm9vbCBsYXN0LCBib29sIGlzX3dhdGNoLCBj b25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJTEUgKnByaW50UXVlcnlGb3V0 KQ0KIHsNCiAJYm9vbAkJc3VjY2VzczsNCiAJY29uc3QgY2hhciAqY21kc3Rh dHVzOw0KIA0KLQlpZiAoIXJlc3VsdCkNCisJaWYgKHJlc3VsdCA9PSBOVUxM KQ0KIAkJcmV0dXJuIGZhbHNlOw0KIA0KIAlzd2l0Y2ggKFBRcmVzdWx0U3Rh dHVzKHJlc3VsdCkpDQogCXsNCiAJCWNhc2UgUEdSRVNfVFVQTEVTX09LOg0K IAkJCS8qIHN0b3JlIG9yIGV4ZWN1dGUgb3IgcHJpbnQgdGhlIGRhdGEgLi4u ICovDQotCQkJaWYgKHBzZXQuZ3NldF9wcmVmaXgpDQorCQkJaWYgKGxhc3Qg JiYgcHNldC5nc2V0X3ByZWZpeCkNCiAJCQkJc3VjY2VzcyA9IFN0b3JlUXVl cnlUdXBsZShyZXN1bHQpOw0KLQkJCWVsc2UgaWYgKHBzZXQuZ2V4ZWNfZmxh ZykNCisJCQllbHNlIGlmIChsYXN0ICYmIHBzZXQuZ2V4ZWNfZmxhZykNCiAJ CQkJc3VjY2VzcyA9IEV4ZWNRdWVyeVR1cGxlcyhyZXN1bHQpOw0KLQkJCWVs c2UgaWYgKHBzZXQuY3Jvc3N0YWJfZmxhZykNCisJCQllbHNlIGlmIChsYXN0 ICYmIHBzZXQuY3Jvc3N0YWJfZmxhZykNCiAJCQkJc3VjY2VzcyA9IFByaW50 UmVzdWx0SW5Dcm9zc3RhYihyZXN1bHQpOw0KKwkJCWVsc2UgaWYgKGxhc3Qg fHwgcHNldC5zaG93X2FsbF9yZXN1bHRzKQ0KKwkJCQlzdWNjZXNzID0gUHJp bnRRdWVyeVR1cGxlcyhyZXN1bHQsIG9wdCwgcHJpbnRRdWVyeUZvdXQpOw0K IAkJCWVsc2UNCi0JCQkJc3VjY2VzcyA9IFByaW50UXVlcnlUdXBsZXMocmVz dWx0KTsNCisJCQkJc3VjY2VzcyA9IHRydWU7DQorDQogCQkJLyogaWYgaXQn cyBJTlNFUlQvVVBEQVRFL0RFTEVURSBSRVRVUk5JTkcsIGFsc28gcHJpbnQg c3RhdHVzICovDQotCQkJY21kc3RhdHVzID0gUFFjbWRTdGF0dXMocmVzdWx0 KTsNCi0JCQlpZiAoc3RybmNtcChjbWRzdGF0dXMsICJJTlNFUlQiLCA2KSA9 PSAwIHx8DQotCQkJCXN0cm5jbXAoY21kc3RhdHVzLCAiVVBEQVRFIiwgNikg PT0gMCB8fA0KLQkJCQlzdHJuY21wKGNtZHN0YXR1cywgIkRFTEVURSIsIDYp ID09IDApDQotCQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0KTsNCisJCQlp ZiAobGFzdCB8fCBwc2V0LnNob3dfYWxsX3Jlc3VsdHMpDQorCQkJew0KKwkJ CQljbWRzdGF0dXMgPSBQUWNtZFN0YXR1cyhyZXN1bHQpOw0KKwkJCQlpZiAo c3RybmNtcChjbWRzdGF0dXMsICJJTlNFUlQiLCA2KSA9PSAwIHx8DQorCQkJ CQlzdHJuY21wKGNtZHN0YXR1cywgIlVQREFURSIsIDYpID09IDAgfHwNCisJ CQkJCXN0cm5jbXAoY21kc3RhdHVzLCAiREVMRVRFIiwgNikgPT0gMCkNCisJ CQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0LCBwcmludFF1ZXJ5Rm91dCk7 DQorCQkJfQ0KKw0KIAkJCWJyZWFrOw0KIA0KIAkJY2FzZSBQR1JFU19DT01N QU5EX09LOg0KLQkJCVByaW50UXVlcnlTdGF0dXMocmVzdWx0KTsNCisJCQlp ZiAobGFzdCB8fCBwc2V0LnNob3dfYWxsX3Jlc3VsdHMpDQorCQkJCVByaW50 UXVlcnlTdGF0dXMocmVzdWx0LCBwcmludFF1ZXJ5Rm91dCk7DQogCQkJc3Vj Y2VzcyA9IHRydWU7DQogCQkJYnJlYWs7DQogDQpAQCAtMTE1Niw3ICsxMDMw LDcgQEAgUHJpbnRRdWVyeVJlc3VsdChQR3Jlc3VsdCAqcmVzdWx0KQ0KIA0K IAkJY2FzZSBQR1JFU19DT1BZX09VVDoNCiAJCWNhc2UgUEdSRVNfQ09QWV9J TjoNCi0JCQkvKiBub3RoaW5nIHRvIGRvIGhlcmUgKi8NCisJCQkvKiBub3Ro aW5nIHRvIGRvIGhlcmU6IGFscmVhZHkgcHJvY2Vzc2VkICovDQogCQkJc3Vj Y2VzcyA9IHRydWU7DQogCQkJYnJlYWs7DQogDQpAQCAtMTE3MywxMSArMTA0 NywyNTIgQEAgUHJpbnRRdWVyeVJlc3VsdChQR3Jlc3VsdCAqcmVzdWx0KQ0K IAkJCWJyZWFrOw0KIAl9DQogDQotCWZmbHVzaChwc2V0LnF1ZXJ5Rm91dCk7 DQorCWZmbHVzaChwcmludFF1ZXJ5Rm91dCA/IHByaW50UXVlcnlGb3V0IDog cHNldC5xdWVyeUZvdXQpOw0KIA0KIAlyZXR1cm4gc3VjY2VzczsNCiB9DQog DQorLyoNCisgKiBEYXRhIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zIHRvIHJl Y29yZCBub3RpY2VzIHdoaWxlIHRoZXkgYXJlDQorICogZW1pdHRlZCwgc28g dGhhdCB0aGV5IGNhbiBiZSBzaG93biBsYXRlci4NCisgKg0KKyAqIFdlIG5l ZWQgdG8ga25vdyB3aGljaCByZXN1bHQgaXMgbGFzdCwgd2hpY2ggcmVxdWly ZXMgdG8gZXh0cmFjdA0KKyAqIG9uZSByZXN1bHQgaW4gYWR2YW5jZSwgaGVu Y2UgdHdvIGJ1ZmZlcnMgYXJlIG5lZWRlZC4NCisgKi8NCit0eXBlZGVmIHN0 cnVjdCB7DQorCVBRRXhwQnVmZmVyRGF0YQltZXNzYWdlc1syXTsNCisJaW50 CQkJCWN1cnJlbnQ7DQorfSB0X25vdGljZV9tZXNzYWdlczsNCisNCisvKg0K KyAqIFN0b3JlIG5vdGljZXMgaW4gYXBwcm9wcmlhdGUgYnVmZmVyLCBmb3Ig bGF0ZXIgZGlzcGxheS4NCisgKi8NCitzdGF0aWMgdm9pZA0KK0FwcGVuZE5v dGljZU1lc3NhZ2Uodm9pZCAqYXJnLCBjb25zdCBjaGFyICptc2cpDQorew0K Kwl0X25vdGljZV9tZXNzYWdlcyAqbm90ZXMgPSAodF9ub3RpY2VfbWVzc2Fn ZXMqKSBhcmc7DQorCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZub3Rlcy0+bWVz c2FnZXNbbm90ZXMtPmN1cnJlbnRdLCBtc2cpOw0KK30NCisNCisvKg0KKyAq IFNob3cgbm90aWNlcyBzdG9yZWQgaW4gYnVmZmVyLCB3aGljaCBpcyB0aGVu IHJlc2V0Lg0KKyAqLw0KK3N0YXRpYyB2b2lkDQorU2hvd05vdGljZU1lc3Nh Z2UodF9ub3RpY2VfbWVzc2FnZXMgKm5vdGVzKQ0KK3sNCisJUFFFeHBCdWZm ZXJEYXRhCSpjdXJyZW50ID0gJm5vdGVzLT5tZXNzYWdlc1tub3Rlcy0+Y3Vy cmVudF07DQorCWlmICgqY3VycmVudC0+ZGF0YSAhPSAnXDAnKQ0KKwkJcGdf bG9nX2luZm8oIiVzIiwgY3VycmVudC0+ZGF0YSk7DQorCXJlc2V0UFFFeHBC dWZmZXIoY3VycmVudCk7DQorfQ0KKw0KKy8qDQorICogU2VuZFF1ZXJ5QW5k UHJvY2Vzc1Jlc3VsdHM6IHV0aWxpdHkgZnVuY3Rpb24gZm9yIHVzZSBieSBT ZW5kUXVlcnkoKQ0KKyAqIGFuZCBQU1FMZXhlY1dhdGNoKCkuDQorICoNCisg KiBTZW5kcyBxdWVyeSBhbmQgY3ljbGVzIHRocm91Z2ggUEdyZXN1bHQgb2Jq ZWN0cy4NCisgKg0KKyAqIFdoZW4gbm90IHVuZGVyIFx3YXRjaCBhbmQgaWYg b3VyIGNvbW1hbmQgc3RyaW5nIGNvbnRhaW5lZCBhIENPUFkgRlJPTSBTVERJ Tg0KKyAqIG9yIENPUFkgVE8gU1RET1VULCB0aGUgUEdyZXN1bHQgYXNzb2Np YXRlZCB3aXRoIHRoZXNlIGNvbW1hbmRzIG11c3QgYmUNCisgKiBwcm9jZXNz ZWQgYnkgcHJvdmlkaW5nIGFuIGlucHV0IG9yIG91dHB1dCBzdHJlYW0uICBJ biB0aGF0IGV2ZW50LCB3ZSdsbA0KKyAqIG1hcnNoYWwgZGF0YSBmb3IgdGhl IENPUFkuDQorICoNCisgKiBGb3Igb3RoZXIgY29tbWFuZHMsIHRoZSByZXN1 bHRzIGFyZSBwcm9jZXNzZWQgbm9ybWFsbHksIGRlcGVuZGluZyBvbiB0aGVp cg0KKyAqIHN0YXR1cy4NCisgKg0KKyAqIFJldHVybnMgMSBvbiBjb21wbGV0 ZSBzdWNjZXNzLCAwIG9uIGludGVycnVwdCBhbmQgLTEgb3IgZXJyb3JzLiAg UG9zc2libGUNCisgKiBmYWlsdXJlIG1vZGVzIGluY2x1ZGUgcHVyZWx5IGNs aWVudC1zaWRlIHByb2JsZW1zOyBjaGVjayB0aGUgdHJhbnNhY3Rpb24NCisg KiBzdGF0dXMgZm9yIHRoZSBzZXJ2ZXItc2lkZSBvcGluaW9uLg0KKyAqDQor ICogTm90ZSB0aGF0IG9uIGEgY29tYmluZWQgcXVlcnksIGZhaWx1cmUgZG9l cyBub3QgbWVhbiB0aGF0IG5vdGhpbmcgd2FzDQorICogY29tbWl0dGVkLg0K KyAqLw0KK3N0YXRpYyBpbnQNCitTZW5kUXVlcnlBbmRQcm9jZXNzUmVzdWx0 cyhjb25zdCBjaGFyICpxdWVyeSwgZG91YmxlICpwZWxhcHNlZF9tc2VjLA0K Kwlib29sIGlzX3dhdGNoLCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQsIEZJ TEUgKnByaW50UXVlcnlGb3V0LCBib29sICp0eF9lbmRlZCkNCit7DQorCWJv b2wJCQkJdGltaW5nID0gcHNldC50aW1pbmc7DQorCWJvb2wJCQkJc3VjY2Vz czsNCisJaW5zdHJfdGltZQkJCWJlZm9yZTsNCisJUEdyZXN1bHQJCSAgICpy ZXN1bHQ7DQorCXRfbm90aWNlX21lc3NhZ2VzCW5vdGVzOw0KKw0KKwlpZiAo dGltaW5nKQ0KKwkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChiZWZvcmUpOw0K Kw0KKwlzdWNjZXNzID0gUFFzZW5kUXVlcnkocHNldC5kYiwgcXVlcnkpOw0K Kw0KKwlpZiAoIXN1Y2Nlc3MpDQorCXsNCisJCWNvbnN0IGNoYXIgKmVycm9y ID0gUFFlcnJvck1lc3NhZ2UocHNldC5kYik7DQorDQorCQlpZiAoc3RybGVu KGVycm9yKSkNCisJCQlwZ19sb2dfaW5mbygiJXMiLCBlcnJvcik7DQorDQor CQlDaGVja0Nvbm5lY3Rpb24oKTsNCisNCisJCXJldHVybiAtMTsNCisJfQ0K Kw0KKwkvKg0KKwkgKiBJZiBTSUdJTlQgaXMgc2VudCB3aGlsZSB0aGUgcXVl cnkgaXMgcHJvY2Vzc2luZywgdGhlIGludGVycnVwdCB3aWxsIGJlDQorCSAq IGNvbnN1bWVkLiAgVGhlIHVzZXIncyBpbnRlbnRpb24sIHRob3VnaCwgaXMg dG8gY2FuY2VsIHRoZSBlbnRpcmUgd2F0Y2gNCisJICogcHJvY2Vzcywgc28g ZGV0ZWN0IGEgc2VudCBjYW5jZWxsYXRpb24gcmVxdWVzdCBhbmQgZXhpdCBp biB0aGlzIGNhc2UuDQorCSAqLw0KKwlpZiAoaXNfd2F0Y2ggJiYgY2FuY2Vs X3ByZXNzZWQpDQorCXsNCisJCUNsZWFyT3JTYXZlQWxsUmVzdWx0cygpOw0K KwkJcmV0dXJuIDA7DQorCX0NCisNCisJLyogaW50ZXJjZXB0IG5vdGljZXMg Ki8NCisJbm90ZXMuY3VycmVudCA9IDA7DQorCWluaXRQUUV4cEJ1ZmZlcigm bm90ZXMubWVzc2FnZXNbMF0pOw0KKwlpbml0UFFFeHBCdWZmZXIoJm5vdGVz Lm1lc3NhZ2VzWzFdKTsNCisJUFFzZXROb3RpY2VQcm9jZXNzb3IocHNldC5k YiwgQXBwZW5kTm90aWNlTWVzc2FnZSwgJm5vdGVzKTsNCisNCisJLyogZmly c3QgcmVzdWx0ICovDQorCXJlc3VsdCA9IFBRZ2V0UmVzdWx0KHBzZXQuZGIp Ow0KKw0KKwl3aGlsZSAocmVzdWx0ICE9IE5VTEwpDQorCXsNCisJCUV4ZWNT dGF0dXNUeXBlIHJlc3VsdF9zdGF0dXM7DQorCQlQR3Jlc3VsdCAgICpuZXh0 X3Jlc3VsdDsNCisJCWJvb2wJCWxhc3Q7DQorDQorCQlpZiAoIUFjY2VwdFJl c3VsdChyZXN1bHQsIGZhbHNlKSkNCisJCXsNCisJCQkvKg0KKwkJCSAqIFNv bWUgZXJyb3Igb2NjdXJlZCwgZWl0aGVyIGEgc2VydmVyLXNpZGUgZmFpbHVy ZSBvcg0KKwkJCSAqIGEgZmFpbHVyZSB0byBzdWJtaXQgdGhlIGNvbW1hbmQg c3RyaW5nLiAgUmVjb3JkIHRoYXQuDQorCQkJICovDQorCQkJY29uc3QgY2hh ciAqZXJyb3IgPSBQUWVycm9yTWVzc2FnZShwc2V0LmRiKTsNCisNCisJCQlT aG93Tm90aWNlTWVzc2FnZSgmbm90ZXMpOw0KKwkJCWlmIChzdHJsZW4oZXJy b3IpKQ0KKwkJCQlwZ19sb2dfaW5mbygiJXMiLCBlcnJvcik7DQorDQorCQkJ Q2hlY2tDb25uZWN0aW9uKCk7DQorCQkJaWYgKCFpc193YXRjaCkNCisJCQkJ U2V0UmVzdWx0VmFyaWFibGVzKHJlc3VsdCwgZmFsc2UpOw0KKw0KKwkJCS8q IGtlZXAgdGhlIHJlc3VsdCBzdGF0dXMgYmVmb3JlIGNsZWFyaW5nIGl0ICov DQorCQkJcmVzdWx0X3N0YXR1cyA9IFBRcmVzdWx0U3RhdHVzKHJlc3VsdCk7 DQorCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsNCisJCQlyZXN1bHQg PSBOVUxMOw0KKwkJCXN1Y2Nlc3MgPSBmYWxzZTsNCisNCisJCQkvKiBzd2l0 Y2ggdG8gbmV4dCByZXN1bHQgKi8NCisJCQlpZiAocmVzdWx0X3N0YXR1cyA9 PSBQR1JFU19DT1BZX0JPVEggfHwNCisJCQkJcmVzdWx0X3N0YXR1cyA9PSBQ R1JFU19DT1BZX09VVCB8fA0KKwkJCQlyZXN1bHRfc3RhdHVzID09IFBHUkVT X0NPUFlfSU4pDQorCQkJCS8qDQorCQkJCSAqIEZvciBzb21lIG9ic2N1cmUg cmVhc29uIFBRZ2V0UmVzdWx0IGRvZXMgKm5vdCogcmV0dXJuIGEgTlVMTCBp biBjb3B5DQorCQkJCSAqIGNhc2VzIGRlc3BpdGUgdGhlIHJlc3VsdCBoYXZp bmcgYmVlbiBjbGVhcmVkLCBidXQga2VlcHMgcmV0dXJuaW5nIGFuDQorCQkJ CSAqICJlbXB0eSIgcmVzdWx0IHRoYXQgd2UgaGF2ZSB0byBpZ25vcmUgbWFu dWFsbHkuDQorCQkJCSAqLw0KKwkJCQk7DQorCQkJZWxzZQ0KKwkJCQlyZXN1 bHQgPSBQUWdldFJlc3VsdChwc2V0LmRiKTsNCisNCisJCQljb250aW51ZTsN CisJCX0NCisJCWVsc2UgaWYgKHR4X2VuZGVkICE9IE5VTEwgJiYgISAqdHhf ZW5kZWQpDQorCQl7DQorCQkJLyogb24gc3VjY2VzcywgdGVsbCB3aGV0aGVy IHRoZSAiY3VycmVudCIgdHJhbnNhY3Rpb24gc2VxdWVuY2UgZW5kZWQgKi8N CisJCQljb25zdCBjaGFyICpjbWQgPSBQUWNtZFN0YXR1cyhyZXN1bHQpOw0K KwkJCSp0eF9lbmRlZCA9IHN0cmNtcChjbWQsICJDT01NSVQiKSA9PSAwIHx8 IHN0cmNtcChjbWQsICJST0xMQkFDSyIpID09IDAgfHwNCisJCQkJc3RyY21w KGNtZCwgIlNBVkVQT0lOVCIpID09IDAgfHwgc3RyY21wKGNtZCwgIlJFTEVB U0UiKSA9PSAwOw0KKwkJfQ0KKw0KKwkJcmVzdWx0X3N0YXR1cyA9IFBRcmVz dWx0U3RhdHVzKHJlc3VsdCk7DQorDQorCQkvKiBtdXN0IGhhbmRsZSBDT1BZ IGJlZm9yZSBjaGFuZ2luZyB0aGUgY3VycmVudCByZXN1bHQgKi8NCisJCUFz c2VydChyZXN1bHRfc3RhdHVzICE9IFBHUkVTX0NPUFlfQk9USCk7DQorCQlp ZiAocmVzdWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX0lOIHx8DQorCQkJcmVz dWx0X3N0YXR1cyA9PSBQR1JFU19DT1BZX09VVCkNCisJCXsNCisJCQlTaG93 Tm90aWNlTWVzc2FnZSgmbm90ZXMpOw0KKw0KKwkJCWlmIChpc193YXRjaCkN CisJCQl7DQorCQkJCUNsZWFyT3JTYXZlQWxsUmVzdWx0cygpOw0KKwkJCQlw Z19sb2dfZXJyb3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZ Iik7DQorCQkJCXJldHVybiAtMTsNCisJCQl9DQorDQorCQkJLyogdXNlIG5v cm1hbCBub3RpY2UgcHJvY2Vzc29yIGR1cmluZyBDT1BZICovDQorCQkJUFFz ZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwgTm90aWNlUHJvY2Vzc29yLCBO VUxMKTsNCisNCisJCQlzdWNjZXNzICY9IEhhbmRsZUNvcHlSZXN1bHQoJnJl c3VsdCk7DQorDQorCQkJUFFzZXROb3RpY2VQcm9jZXNzb3IocHNldC5kYiwg QXBwZW5kTm90aWNlTWVzc2FnZSwgJm5vdGVzKTsNCisJCX0NCisNCisJCS8q DQorCQkgKiBDaGVjayBQUWdldFJlc3VsdCgpIGFnYWluLiAgSW4gdGhlIHR5 cGljYWwgY2FzZSBvZiBhIHNpbmdsZS1jb21tYW5kDQorCQkgKiBzdHJpbmcs IGl0IHdpbGwgcmV0dXJuIE5VTEwuICBPdGhlcndpc2UsIHdlJ2xsIGhhdmUg b3RoZXIgcmVzdWx0cw0KKwkJICogdG8gcHJvY2Vzcy4gV2UgbmVlZCB0byBk byB0aGF0IHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyB0aGUgbGFzdC4NCisJ CSAqLw0KKwkJbm90ZXMuY3VycmVudCBePSAxOw0KKwkJbmV4dF9yZXN1bHQg PSBQUWdldFJlc3VsdChwc2V0LmRiKTsNCisJCW5vdGVzLmN1cnJlbnQgXj0g MTsNCisJCWxhc3QgPSAobmV4dF9yZXN1bHQgPT0gTlVMTCk7DQorDQorCQkv Kg0KKwkJICogR2V0IHRpbWluZyBtZWFzdXJlIGJlZm9yZSBwcmludGluZyB0 aGUgbGFzdCByZXN1bHQuDQorCQkgKg0KKwkJICogSXQgd2lsbCBpbmNsdWRl IHRoZSBkaXNwbGF5IG9mIHByZXZpb3VzIHJlc3VsdHMsIGlmIGFueS4NCisJ CSAqIFRoaXMgY2Fubm90IGJlIGhlbHBlZCBiZWNhdXNlIHRoZSBzZXJ2ZXIg Z29lcyBvbiBwcm9jZXNzaW5nDQorCQkgKiBmdXJ0aGVyIHF1ZXJpZXMgYW55 d2F5IHdoaWxlIHRoZSBwcmV2aW91cyBvbmVzIGFyZSBiZWluZyBkaXNwbGF5 ZWQuDQorCQkgKiBUaGUgcGFyYWxsZWwgZXhlY3V0aW9uIG9mIHRoZSBjbGll bnQgZGlzcGxheSBoaWRlcyB0aGUgc2VydmVyIHRpbWUNCisJCSAqIHdoZW4g aXQgaXMgc2hvcnRlci4NCisJCSAqDQorCQkgKiBXaXRoIGNvbWJpbmVkIHF1 ZXJpZXMsIHRpbWluZyBtdXN0IGJlIHVuZGVyc3Rvb2QgYXMgYW4gdXBwZXIg Ym91bmQNCisJCSAqIG9mIHRoZSB0aW1lIHNwZW50IHByb2Nlc3NpbmcgdGhl bS4NCisJCSAqLw0KKwkJaWYgKGxhc3QgJiYgdGltaW5nKQ0KKwkJew0KKwkJ CWluc3RyX3RpbWUJbm93Ow0KKwkJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo bm93KTsNCisJCQlJTlNUUl9USU1FX1NVQlRSQUNUKG5vdywgYmVmb3JlKTsN CisJCQkqcGVsYXBzZWRfbXNlYyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KG5vdyk7DQorCQl9DQorDQorCQkvKiBub3RpY2VzIGFscmVhZHkgc2hvd24g YWJvdmUgZm9yIGNvcHkgKi8NCisJCVNob3dOb3RpY2VNZXNzYWdlKCZub3Rl cyk7DQorDQorCQkvKiB0aGlzIG1heSBvciBtYXkgbm90IHByaW50IHNvbWV0 aGluZyBkZXBlbmRpbmcgb24gc2V0dGluZ3MgKi8NCisJCWlmIChyZXN1bHQg IT0gTlVMTCkNCisJCQlzdWNjZXNzICY9IEhhbmRsZVF1ZXJ5UmVzdWx0KHJl c3VsdCwgbGFzdCwgZmFsc2UsIG9wdCwgcHJpbnRRdWVyeUZvdXQpOw0KKw0K KwkJLyogc2V0IHZhcmlhYmxlcyBvbiBsYXN0IHJlc3VsdCBpZiBhbGwgd2Vu dCB3ZWxsICovDQorCQlpZiAoIWlzX3dhdGNoICYmIGxhc3QgJiYgc3VjY2Vz cykNCisJCQlTZXRSZXN1bHRWYXJpYWJsZXMocmVzdWx0LCB0cnVlKTsNCisN CisJCUNsZWFyT3JTYXZlUmVzdWx0KHJlc3VsdCk7DQorCQlub3Rlcy5jdXJy ZW50IF49IDE7DQorCQlyZXN1bHQgPSBuZXh0X3Jlc3VsdDsNCisNCisJCWlm IChjYW5jZWxfcHJlc3NlZCkNCisJCXsNCisJCQlDbGVhck9yU2F2ZUFsbFJl c3VsdHMoKTsNCisJCQlicmVhazsNCisJCX0NCisJfQ0KKw0KKwkvKiByZXNl dCBub3RpY2UgaG9vayAqLw0KKwlQUXNldE5vdGljZVByb2Nlc3Nvcihwc2V0 LmRiLCBOb3RpY2VQcm9jZXNzb3IsIE5VTEwpOw0KKwl0ZXJtUFFFeHBCdWZm ZXIoJm5vdGVzLm1lc3NhZ2VzWzBdKTsNCisJdGVybVBRRXhwQnVmZmVyKCZu b3Rlcy5tZXNzYWdlc1sxXSk7DQorDQorCS8qIG1heSBuZWVkIHRoaXMgdG8g cmVjb3ZlciBmcm9tIGNvbm4gbG9zcyBkdXJpbmcgQ09QWSAqLw0KKwlpZiAo IUNoZWNrQ29ubmVjdGlvbigpKQ0KKwkJcmV0dXJuIC0xOw0KKw0KKwlyZXR1 cm4gY2FuY2VsX3ByZXNzZWQgPyAwIDogc3VjY2VzcyA/IDEgOiAtMTsNCit9 DQorDQogDQogLyoNCiAgKiBTZW5kUXVlcnk6IHNlbmQgdGhlIHF1ZXJ5IHN0 cmluZyB0byB0aGUgYmFja2VuZA0KQEAgLTExOTUsMTIgKzEzMTAsMTQgQEAg Ym9vbA0KIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkNCiB7DQogCWJv b2wJCXRpbWluZyA9IHBzZXQudGltaW5nOw0KLQlQR3Jlc3VsdCAgICpyZXN1 bHQ7DQorCVBHcmVzdWx0ICAgICpyZXN1bHQgPSBOVUxMOw0KIAlQR1RyYW5z YWN0aW9uU3RhdHVzVHlwZSB0cmFuc2FjdGlvbl9zdGF0dXM7DQogCWRvdWJs ZQkJZWxhcHNlZF9tc2VjID0gMDsNCiAJYm9vbAkJT0sgPSBmYWxzZTsNCisJ Ym9vbAkJcmVzX2Vycm9yOw0KIAlpbnQJCQlpOw0KIAlib29sCQlvbl9lcnJv cl9yb2xsYmFja19zYXZlcG9pbnQgPSBmYWxzZTsNCisJYm9vbAkJdHhfZW5k ZWQgPSBmYWxzZTsNCiANCiAJaWYgKCFwc2V0LmRiKQ0KIAl7DQpAQCAtMTIz OSw4MiArMTM1Niw3MSBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkp DQogCQlmZmx1c2gocHNldC5sb2dmaWxlKTsNCiAJfQ0KIA0KKwkvKiBnbG9i YWwgcXVlcnkgY2FuY2VsbGF0aW9uIGZvciB0aGlzIHF1ZXJ5ICovDQogCVNl dENhbmNlbENvbm4ocHNldC5kYik7DQogDQogCXRyYW5zYWN0aW9uX3N0YXR1 cyA9IFBRdHJhbnNhY3Rpb25TdGF0dXMocHNldC5kYik7DQogDQorCS8qIGlz c3VlIGEgQkVHSU4gaWYgbmVlZGVkLCBjb3JyZXNwb25kaW5nIENPTU1JVC9S T0xMQkFDSyBieSB1c2VyICovDQogCWlmICh0cmFuc2FjdGlvbl9zdGF0dXMg PT0gUFFUUkFOU19JRExFICYmDQogCQkhcHNldC5hdXRvY29tbWl0ICYmDQog CQkhY29tbWFuZF9ub19iZWdpbihxdWVyeSkpDQogCXsNCisJCVBHcmVzdWx0 ICAgICpyZXN1bHQ7DQogCQlyZXN1bHQgPSBQUWV4ZWMocHNldC5kYiwgIkJF R0lOIik7DQotCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzdWx0KSAhPSBQR1JF U19DT01NQU5EX09LKQ0KKwkJcmVzX2Vycm9yID0gUFFyZXN1bHRTdGF0dXMo cmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LOw0KKwkJQ2xlYXJPclNhdmVS ZXN1bHQocmVzdWx0KTsNCisJCXJlc3VsdCA9IE5VTEw7DQorDQorCQlpZiAo cmVzX2Vycm9yKQ0KIAkJew0KIAkJCXBnX2xvZ19pbmZvKCIlcyIsIFBRZXJy b3JNZXNzYWdlKHBzZXQuZGIpKTsNCi0JCQlDbGVhck9yU2F2ZVJlc3VsdChy ZXN1bHQpOw0KLQkJCVJlc2V0Q2FuY2VsQ29ubigpOw0KIAkJCWdvdG8gc2Vu ZHF1ZXJ5X2NsZWFudXA7DQogCQl9DQotCQlDbGVhck9yU2F2ZVJlc3VsdChy ZXN1bHQpOw0KKw0KKwkJLyogbXVzdCBiZSBQUVRSQU5TX0lOVFJBTlMgYWZ0 ZXIgYSBCRUdJTiAqLw0KIAkJdHJhbnNhY3Rpb25fc3RhdHVzID0gUFF0cmFu c2FjdGlvblN0YXR1cyhwc2V0LmRiKTsNCiAJfQ0KIA0KKwkvKiBjcmVhdGUg YXV0b21hdGljIHNhdmVwb2ludCBpZiBuZWVkZWQgYW5kIHBvc3NpYmxlICov DQogCWlmICh0cmFuc2FjdGlvbl9zdGF0dXMgPT0gUFFUUkFOU19JTlRSQU5T ICYmDQogCQlwc2V0Lm9uX2Vycm9yX3JvbGxiYWNrICE9IFBTUUxfRVJST1Jf Uk9MTEJBQ0tfT0ZGICYmDQogCQkocHNldC5jdXJfY21kX2ludGVyYWN0aXZl IHx8DQogCQkgcHNldC5vbl9lcnJvcl9yb2xsYmFjayA9PSBQU1FMX0VSUk9S X1JPTExCQUNLX09OKSkNCiAJew0KKwkJUEdyZXN1bHQgICAqcmVzdWx0Ow0K IAkJcmVzdWx0ID0gUFFleGVjKHBzZXQuZGIsICJTQVZFUE9JTlQgcGdfcHNx bF90ZW1wb3Jhcnlfc2F2ZXBvaW50Iik7DQotCQlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LKQ0KKwkJcmVzX2Vycm9y ID0gUFFyZXN1bHRTdGF0dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09L Ow0KKwkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0KTsNCisJCXJlc3VsdCA9 IE5VTEw7DQorDQorCQlpZiAocmVzX2Vycm9yKQ0KIAkJew0KIAkJCXBnX2xv Z19pbmZvKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsNCi0JCQlD bGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KLQkJCVJlc2V0Q2FuY2VsQ29u bigpOw0KIAkJCWdvdG8gc2VuZHF1ZXJ5X2NsZWFudXA7DQogCQl9DQotCQlD bGVhck9yU2F2ZVJlc3VsdChyZXN1bHQpOw0KKw0KIAkJb25fZXJyb3Jfcm9s bGJhY2tfc2F2ZXBvaW50ID0gdHJ1ZTsNCiAJfQ0KIA0KKwkvKiBwcm9jZXNz IHRoZSBxdWVyeSwgb25lIHdheSBvciB0aGUgb3RoZXIgKi8NCiAJaWYgKHBz ZXQuZ2Rlc2NfZmxhZykNCiAJew0KIAkJLyogRGVzY3JpYmUgcXVlcnkncyBy ZXN1bHQgY29sdW1ucywgd2l0aG91dCBleGVjdXRpbmcgaXQgKi8NCiAJCU9L ID0gRGVzY3JpYmVRdWVyeShxdWVyeSwgJmVsYXBzZWRfbXNlYyk7DQotCQlS ZXNldENhbmNlbENvbm4oKTsNCiAJCXJlc3VsdCA9IE5VTEw7CQkJLyogUFFj bGVhcihOVUxMKSBkb2VzIG5vdGhpbmcgKi8NCiAJfQ0KIAllbHNlIGlmIChw c2V0LmZldGNoX2NvdW50IDw9IDAgfHwgcHNldC5nZXhlY19mbGFnIHx8DQog CQkJIHBzZXQuY3Jvc3N0YWJfZmxhZyB8fCAhaXNfc2VsZWN0X2NvbW1hbmQo cXVlcnkpKQ0KIAl7DQogCQkvKiBEZWZhdWx0IGZldGNoLWl0LWFsbC1hbmQt cHJpbnQgbW9kZSAqLw0KLQkJaW5zdHJfdGltZQliZWZvcmUsDQotCQkJCQlh ZnRlcjsNCi0NCi0JCWlmICh0aW1pbmcpDQotCQkJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChiZWZvcmUpOw0KLQ0KLQkJcmVzdWx0ID0gUFFleGVjKHBzZXQu ZGIsIHF1ZXJ5KTsNCi0NCi0JCS8qIHRoZXNlIG9wZXJhdGlvbnMgYXJlIGlu Y2x1ZGVkIGluIHRoZSB0aW1pbmcgcmVzdWx0OiAqLw0KLQkJUmVzZXRDYW5j ZWxDb25uKCk7DQotCQlPSyA9IFByb2Nlc3NSZXN1bHQoJnJlc3VsdCk7DQot DQotCQlpZiAodGltaW5nKQ0KLQkJew0KLQkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoYWZ0ZXIpOw0KLQkJCUlOU1RSX1RJTUVfU1VCVFJBQ1QoYWZ0ZXIs IGJlZm9yZSk7DQotCQkJZWxhcHNlZF9tc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMoYWZ0ZXIpOw0KLQkJfQ0KLQ0KLQkJLyogYnV0IHByaW50aW5n IHJlc3VsdCBpc24ndDogKi8NCi0JCWlmIChPSyAmJiByZXN1bHQpDQotCQkJ T0sgPSBQcmludFF1ZXJ5UmVzdWx0KHJlc3VsdCk7DQorCQlpbnQgcmVzID0g U2VuZFF1ZXJ5QW5kUHJvY2Vzc1Jlc3VsdHMocXVlcnksICZlbGFwc2VkX21z ZWMsIGZhbHNlLCBOVUxMLCBOVUxMLCAmdHhfZW5kZWQpOw0KKwkJT0sgPSAo cmVzID49IDApOw0KIAl9DQogCWVsc2UNCiAJew0KIAkJLyogRmV0Y2gtaW4t c2VnbWVudHMgbW9kZSAqLw0KIAkJT0sgPSBFeGVjUXVlcnlVc2luZ0N1cnNv cihxdWVyeSwgJmVsYXBzZWRfbXNlYyk7DQotCQlSZXNldENhbmNlbENvbm4o KTsNCiAJCXJlc3VsdCA9IE5VTEw7CQkJLyogUFFjbGVhcihOVUxMKSBkb2Vz IG5vdGhpbmcgKi8NCiAJfQ0KIA0KQEAgLTEzNDcsMTEgKzE0NTMsNyBAQCBT ZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpDQogCQkJCSAqIHNhdmVwb2lu dCBpcyBnb25lLiBJZiB0aGV5IGlzc3VlZCBhIFNBVkVQT0lOVCwgcmVsZWFz aW5nDQogCQkJCSAqIG91cnMgd291bGQgcmVtb3ZlIHRoZWlycy4NCiAJCQkJ ICovDQotCQkJCWlmIChyZXN1bHQgJiYNCi0JCQkJCShzdHJjbXAoUFFjbWRT dGF0dXMocmVzdWx0KSwgIkNPTU1JVCIpID09IDAgfHwNCi0JCQkJCSBzdHJj bXAoUFFjbWRTdGF0dXMocmVzdWx0KSwgIlNBVkVQT0lOVCIpID09IDAgfHwN Ci0JCQkJCSBzdHJjbXAoUFFjbWRTdGF0dXMocmVzdWx0KSwgIlJFTEVBU0Ui KSA9PSAwIHx8DQotCQkJCQkgc3RyY21wKFBRY21kU3RhdHVzKHJlc3VsdCks ICJST0xMQkFDSyIpID09IDApKQ0KKwkJCQlpZiAodHhfZW5kZWQpDQogCQkJ CQlzdnB0Y21kID0gTlVMTDsNCiAJCQkJZWxzZQ0KIAkJCQkJc3ZwdGNtZCA9 ICJSRUxFQVNFIHBnX3BzcWxfdGVtcG9yYXJ5X3NhdmVwb2ludCI7DQpAQCAt MTM3MywxNCArMTQ3NSwxNSBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVl cnkpDQogCQkJUEdyZXN1bHQgICAqc3ZwdHJlczsNCiANCiAJCQlzdnB0cmVz ID0gUFFleGVjKHBzZXQuZGIsIHN2cHRjbWQpOw0KLQkJCWlmIChQUXJlc3Vs dFN0YXR1cyhzdnB0cmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQ0KKwkJCXJl c19lcnJvciA9IFBRcmVzdWx0U3RhdHVzKHN2cHRyZXMpICE9IFBHUkVTX0NP TU1BTkRfT0s7DQorDQorCQkJaWYgKHJlc19lcnJvcikNCiAJCQl7DQogCQkJ CXBnX2xvZ19pbmZvKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsN CiAJCQkJQ2xlYXJPclNhdmVSZXN1bHQoc3ZwdHJlcyk7DQogCQkJCU9LID0g ZmFsc2U7DQogDQogCQkJCVBRY2xlYXIocmVzdWx0KTsNCi0JCQkJUmVzZXRD YW5jZWxDb25uKCk7DQogCQkJCWdvdG8gc2VuZHF1ZXJ5X2NsZWFudXA7DQog CQkJfQ0KIAkJCVBRY2xlYXIoc3ZwdHJlcyk7DQpAQCAtMTQxMSw2ICsxNTE0 LDkgQEAgU2VuZFF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5KQ0KIA0KIHNlbmRx dWVyeV9jbGVhbnVwOg0KIA0KKwkvKiBnbG9iYWwgY2FuY2VsbGF0aW9uIHJl c2V0ICovDQorCVJlc2V0Q2FuY2VsQ29ubigpOw0KKw0KIAkvKiByZXNldCBc ZydzIG91dHB1dC10by1maWxlbmFtZSB0cmlnZ2VyICovDQogCWlmIChwc2V0 LmdmbmFtZSkNCiAJew0KQEAgLTE0OTEsNyArMTU5Nyw3IEBAIERlc2NyaWJl UXVlcnkoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2Vj KQ0KIAlQUWNsZWFyKHJlc3VsdCk7DQogDQogCXJlc3VsdCA9IFBRZGVzY3Jp YmVQcmVwYXJlZChwc2V0LmRiLCAiIik7DQotCU9LID0gQWNjZXB0UmVzdWx0 KHJlc3VsdCkgJiYNCisJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0LCB0cnVl KSAmJg0KIAkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0gUEdSRVNfQ09N TUFORF9PSyk7DQogCWlmIChPSyAmJiByZXN1bHQpDQogCXsNCkBAIC0xNTM5 LDcgKzE2NDUsNyBAQCBEZXNjcmliZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5 LCBkb3VibGUgKmVsYXBzZWRfbXNlYykNCiAJCQlQUWNsZWFyKHJlc3VsdCk7 DQogDQogCQkJcmVzdWx0ID0gUFFleGVjKHBzZXQuZGIsIGJ1Zi5kYXRhKTsN Ci0JCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHQpOw0KKwkJCU9LID0gQWNj ZXB0UmVzdWx0KHJlc3VsdCwgdHJ1ZSk7DQogDQogCQkJaWYgKHRpbWluZykN CiAJCQl7DQpAQCAtMTU0OSw3ICsxNjU1LDcgQEAgRGVzY3JpYmVRdWVyeShj b25zdCBjaGFyICpxdWVyeSwgZG91YmxlICplbGFwc2VkX21zZWMpDQogCQkJ fQ0KIA0KIAkJCWlmIChPSyAmJiByZXN1bHQpDQotCQkJCU9LID0gUHJpbnRR dWVyeVJlc3VsdChyZXN1bHQpOw0KKwkJCQlPSyA9IEhhbmRsZVF1ZXJ5UmVz dWx0KHJlc3VsdCwgdHJ1ZSwgZmFsc2UsIE5VTEwsIE5VTEwpOw0KIA0KIAkJ CXRlcm1QUUV4cEJ1ZmZlcigmYnVmKTsNCiAJCX0NCkBAIC0xNjA5LDcgKzE3 MTUsNyBAQCBFeGVjUXVlcnlVc2luZ0N1cnNvcihjb25zdCBjaGFyICpxdWVy eSwgZG91YmxlICplbGFwc2VkX21zZWMpDQogCWlmIChQUXRyYW5zYWN0aW9u U3RhdHVzKHBzZXQuZGIpID09IFBRVFJBTlNfSURMRSkNCiAJew0KIAkJcmVz dWx0ID0gUFFleGVjKHBzZXQuZGIsICJCRUdJTiIpOw0KLQkJT0sgPSBBY2Nl cHRSZXN1bHQocmVzdWx0KSAmJg0KKwkJT0sgPSBBY2NlcHRSZXN1bHQocmVz dWx0LCB0cnVlKSAmJg0KIAkJCShQUXJlc3VsdFN0YXR1cyhyZXN1bHQpID09 IFBHUkVTX0NPTU1BTkRfT0spOw0KIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVz dWx0KTsNCiAJCWlmICghT0spDQpAQCAtMTYyMyw3ICsxNzI5LDcgQEAgRXhl Y1F1ZXJ5VXNpbmdDdXJzb3IoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAq ZWxhcHNlZF9tc2VjKQ0KIAkJCQkJICBxdWVyeSk7DQogDQogCXJlc3VsdCA9 IFBRZXhlYyhwc2V0LmRiLCBidWYuZGF0YSk7DQotCU9LID0gQWNjZXB0UmVz dWx0KHJlc3VsdCkgJiYNCisJT0sgPSBBY2NlcHRSZXN1bHQocmVzdWx0LCB0 cnVlKSAmJg0KIAkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0gUEdSRVNf Q09NTUFORF9PSyk7DQogCWlmICghT0spDQogCQlTZXRSZXN1bHRWYXJpYWJs ZXMocmVzdWx0LCBPSyk7DQpAQCAtMTY5Niw3ICsxODAyLDcgQEAgRXhlY1F1 ZXJ5VXNpbmdDdXJzb3IoY29uc3QgY2hhciAqcXVlcnksIGRvdWJsZSAqZWxh cHNlZF9tc2VjKQ0KIAkJCQlpc19wYWdlciA9IGZhbHNlOw0KIAkJCX0NCiAN Ci0JCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1bHQpOw0KKwkJCU9LID0gQWNj ZXB0UmVzdWx0KHJlc3VsdCwgdHJ1ZSk7DQogCQkJQXNzZXJ0KCFPSyk7DQog CQkJU2V0UmVzdWx0VmFyaWFibGVzKHJlc3VsdCwgT0spOw0KIAkJCUNsZWFy T3JTYXZlUmVzdWx0KHJlc3VsdCk7DQpAQCAtMTgwNSw3ICsxOTExLDcgQEAg Y2xlYW51cDoNCiAJcmVzdWx0ID0gUFFleGVjKHBzZXQuZGIsICJDTE9TRSBf cHNxbF9jdXJzb3IiKTsNCiAJaWYgKE9LKQ0KIAl7DQotCQlPSyA9IEFjY2Vw dFJlc3VsdChyZXN1bHQpICYmDQorCQlPSyA9IEFjY2VwdFJlc3VsdChyZXN1 bHQsIHRydWUpICYmDQogCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3VsdCkgPT0g UEdSRVNfQ09NTUFORF9PSyk7DQogCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1 bHQpOw0KIAl9DQpAQCAtMTgxNSw3ICsxOTIxLDcgQEAgY2xlYW51cDoNCiAJ aWYgKHN0YXJ0ZWRfdHhuKQ0KIAl7DQogCQlyZXN1bHQgPSBQUWV4ZWMocHNl dC5kYiwgT0sgPyAiQ09NTUlUIiA6ICJST0xMQkFDSyIpOw0KLQkJT0sgJj0g QWNjZXB0UmVzdWx0KHJlc3VsdCkgJiYNCisJCU9LICY9IEFjY2VwdFJlc3Vs dChyZXN1bHQsIHRydWUpICYmDQogCQkJKFBRcmVzdWx0U3RhdHVzKHJlc3Vs dCkgPT0gUEdSRVNfQ09NTUFORF9PSyk7DQogCQlDbGVhck9yU2F2ZVJlc3Vs dChyZXN1bHQpOw0KIAl9DQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2hl bHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMNCmluZGV4IDU2YWZhNjgxN2Uu LmIzOTcxYmNlNjQgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvaGVscC5j DQorKysgYi9zcmMvYmluL3BzcWwvaGVscC5jDQpAQCAtNDEzLDYgKzQxMyw4 IEBAIGhlbHBWYXJpYWJsZXModW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQ0K IAlmcHJpbnRmKG91dHB1dCwgXygiICBTRVJWRVJfVkVSU0lPTl9OQU1FXG4i DQogCQkJCQkgICIgIFNFUlZFUl9WRVJTSU9OX05VTVxuIg0KIAkJCQkJICAi ICAgIHNlcnZlcidzIHZlcnNpb24gKGluIHNob3J0IHN0cmluZyBvciBudW1l cmljIGZvcm1hdClcbiIpKTsNCisJZnByaW50ZihvdXRwdXQsIF8oIiAgU0hP V19BTExfUkVTVUxUU1xuIg0KKwkJCQkJICAiICAgIHNob3cgYWxsIHJlc3Vs dHMgb2YgYSBjb21iaW5lZCBxdWVyeSAoXFw7KSBpbnN0ZWFkIG9mIG9ubHkg dGhlIGxhc3RcbiIpKTsNCiAJZnByaW50ZihvdXRwdXQsIF8oIiAgU0hPV19D T05URVhUXG4iDQogCQkJCQkgICIgICAgY29udHJvbHMgZGlzcGxheSBvZiBt ZXNzYWdlIGNvbnRleHQgZmllbGRzIFtuZXZlciwgZXJyb3JzLCBhbHdheXNd XG4iKSk7DQogCWZwcmludGYob3V0cHV0LCBfKCIgIFNJTkdMRUxJTkVcbiIN CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvc2V0dGluZ3MuaCBiL3NyYy9i aW4vcHNxbC9zZXR0aW5ncy5oDQppbmRleCA4MGRiZWE5ZWZkLi4yMzk5Y2Zm YTNmIDEwMDY0NA0KLS0tIGEvc3JjL2Jpbi9wc3FsL3NldHRpbmdzLmgNCisr KyBiL3NyYy9iaW4vcHNxbC9zZXR0aW5ncy5oDQpAQCAtMTQ4LDYgKzE0OCw3 IEBAIHR5cGVkZWYgc3RydWN0IF9wc3FsU2V0dGluZ3MNCiAJY29uc3QgY2hh ciAqcHJvbXB0MjsNCiAJY29uc3QgY2hhciAqcHJvbXB0MzsNCiAJUEdWZXJi b3NpdHkgdmVyYm9zaXR5OwkJLyogY3VycmVudCBlcnJvciB2ZXJib3NpdHkg bGV2ZWwgKi8NCisJYm9vbAkJc2hvd19hbGxfcmVzdWx0czsNCiAJUEdDb250 ZXh0VmlzaWJpbGl0eSBzaG93X2NvbnRleHQ7CS8qIGN1cnJlbnQgY29udGV4 dCBkaXNwbGF5IGxldmVsICovDQogfSBQc3FsU2V0dGluZ3M7DQogDQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3N0YXJ0dXAuYyBiL3NyYy9iaW4vcHNx bC9zdGFydHVwLmMNCmluZGV4IGJlOWRlYzc0OWQuLmQwOGIxNTg4NmEgMTAw NjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jDQorKysgYi9zcmMv YmluL3BzcWwvc3RhcnR1cC5jDQpAQCAtMjAzLDYgKzIwMyw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCiAJU2V0VmFyaWFibGUocHNldC52 YXJzLCAiUFJPTVBUMSIsIERFRkFVTFRfUFJPTVBUMSk7DQogCVNldFZhcmlh YmxlKHBzZXQudmFycywgIlBST01QVDIiLCBERUZBVUxUX1BST01QVDIpOw0K IAlTZXRWYXJpYWJsZShwc2V0LnZhcnMsICJQUk9NUFQzIiwgREVGQVVMVF9Q Uk9NUFQzKTsNCisJU2V0VmFyaWFibGVCb29sKHBzZXQudmFycywgIlNIT1df QUxMX1JFU1VMVFMiKTsNCiANCiAJcGFyc2VfcHNxbF9vcHRpb25zKGFyZ2Ms IGFyZ3YsICZvcHRpb25zKTsNCiANCkBAIC0xMTUwLDYgKzExNTEsMTIgQEAg dmVyYm9zaXR5X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQ0KIAlyZXR1cm4g dHJ1ZTsNCiB9DQogDQorc3RhdGljIGJvb2wNCitzaG93X2FsbF9yZXN1bHRz X2hvb2soY29uc3QgY2hhciAqbmV3dmFsKQ0KK3sNCisJcmV0dXJuIFBhcnNl VmFyaWFibGVCb29sKG5ld3ZhbCwgIlNIT1dfQUxMX1JFU1VMVFMiLCAmcHNl dC5zaG93X2FsbF9yZXN1bHRzKTsNCit9DQorDQogc3RhdGljIGNoYXIgKg0K IHNob3dfY29udGV4dF9zdWJzdGl0dXRlX2hvb2soY2hhciAqbmV3dmFsKQ0K IHsNCkBAIC0xMjUxLDYgKzEyNTgsOSBAQCBFc3RhYmxpc2hWYXJpYWJsZVNw YWNlKHZvaWQpDQogCVNldFZhcmlhYmxlSG9va3MocHNldC52YXJzLCAiVkVS Qk9TSVRZIiwNCiAJCQkJCSB2ZXJib3NpdHlfc3Vic3RpdHV0ZV9ob29rLA0K IAkJCQkJIHZlcmJvc2l0eV9ob29rKTsNCisJU2V0VmFyaWFibGVIb29rcyhw c2V0LnZhcnMsICJTSE9XX0FMTF9SRVNVTFRTIiwNCisJCQkJCSBib29sX3N1 YnN0aXR1dGVfaG9vaywNCisJCQkJCSBzaG93X2FsbF9yZXN1bHRzX2hvb2sp Ow0KIAlTZXRWYXJpYWJsZUhvb2tzKHBzZXQudmFycywgIlNIT1dfQ09OVEVY VCIsDQogCQkJCQkgc2hvd19jb250ZXh0X3N1YnN0aXR1dGVfaG9vaywNCiAJ CQkJCSBzaG93X2NvbnRleHRfaG9vayk7DQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wc3FsL3QvMDAxX2Jh c2ljLnBsDQppbmRleCA0NGVjZDA1YWRkLi5mNThlMzM2NWE4IDEwMDY0NA0K LS0tIGEvc3JjL2Jpbi9wc3FsL3QvMDAxX2Jhc2ljLnBsDQorKysgYi9zcmMv YmluL3BzcWwvdC8wMDFfYmFzaWMucGwNCkBAIC02LDcgKzYsNyBAQCB1c2Ug d2FybmluZ3M7DQogDQogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 DQogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOw0KLXVzZSBUZXN0OjpN b3JlOw0KK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDQxOw0KIA0KIHByb2dy YW1faGVscF9vaygncHNxbCcpOw0KIHByb2dyYW1fdmVyc2lvbl9vaygncHNx bCcpOw0KQEAgLTExNSw0ICsxMTUsMjAgQEAgTk9USUZZIGZvbywgJ2Jhcic7 IiwNCiAJcXIvXkFzeW5jaHJvbm91cyBub3RpZmljYXRpb24gImZvbyIgd2l0 aCBwYXlsb2FkICJiYXIiIHJlY2VpdmVkIGZyb20gc2VydmVyIHByb2Nlc3Mg d2l0aCBQSUQgXGQrXC4kLywNCiAJJ25vdGlmaWNhdGlvbiB3aXRoIHBheWxv YWQnKTsNCiANCisjIFRlc3Qgdm9sdW50YXJ5IGNyYXNoDQorbXkgKCRyZXQs ICRvdXQsICRlcnIpID0gJG5vZGUtPnBzcWwoDQorCSdwb3N0Z3JlcycsDQor CSJTRUxFQ1QgJ2JlZm9yZScgQVMgcnVubmluZztcbiIgLg0KKwkiU0VMRUNU IHBnX3Rlcm1pbmF0ZV9iYWNrZW5kKHBnX2JhY2tlbmRfcGlkKCkpO1xuIiAu DQorCSJTRUxFQ1QgJ0FGVEVSJyBBUyBub3RfcnVubmluZztcbiIpOw0KKw0K K2lzKCRyZXQsIDIsICJzZXJ2ZXIgc3RvcHBlZCIpOw0KK2xpa2UoJG91dCwg cXIvYmVmb3JlLywgIm91dHB1dCBiZWZvcmUgY3Jhc2giKTsNCitvaygkb3V0 ICF+IHFyL0FGVEVSLywgIm5vIG91dHB1dCBhZnRlciBjcmFzaCIpOw0KK2lz KCRlcnIsICdwc3FsOjxzdGRpbj46MjogRkFUQUw6ICB0ZXJtaW5hdGluZyBj b25uZWN0aW9uIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQNCitwc3Fs OjxzdGRpbj46Mjogc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4 cGVjdGVkbHkNCisJVGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVyIHRl cm1pbmF0ZWQgYWJub3JtYWxseQ0KKwliZWZvcmUgb3Igd2hpbGUgcHJvY2Vz c2luZyB0aGUgcmVxdWVzdC4NCitwc3FsOjxzdGRpbj46MjogZmF0YWw6IGNv bm5lY3Rpb24gdG8gc2VydmVyIHdhcyBsb3N0JywgImV4cGVjdGVkIGVycm9y IG1lc3NhZ2UiKTsNCisNCiBkb25lX3Rlc3RpbmcoKTsNCmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMNCmluZGV4IDY5NTc1NjcyNjQuLmE1MzJiMGQ2OTQg MTAwNjQ0DQotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMNCisr KyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYw0KQEAgLTQ1MTEsNyAr NDUxMSw3IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBp bnQgc3RhcnQsIGludCBlbmQpDQogCQltYXRjaGVzID0gY29tcGxldGVfZnJv bV92YXJpYWJsZXModGV4dCwgIiIsICIiLCBmYWxzZSk7DQogCWVsc2UgaWYg KFRhaWxNYXRjaGVzQ1MoIlxcc2V0IiwgTWF0Y2hBbnkpKQ0KIAl7DQotCQlp ZiAoVGFpbE1hdGNoZXNDUygiQVVUT0NPTU1JVHxPTl9FUlJPUl9TVE9QfFFV SUVUfCINCisJCWlmIChUYWlsTWF0Y2hlc0NTKCJBVVRPQ09NTUlUfE9OX0VS Uk9SX1NUT1B8UVVJRVR8U0hPV19BTExfUkVTVUxUU3wiDQogCQkJCQkJICAi U0lOR0xFTElORXxTSU5HTEVTVEVQIikpDQogCQkJQ09NUExFVEVfV0lUSF9D Uygib24iLCAib2ZmIik7DQogCQllbHNlIGlmIChUYWlsTWF0Y2hlc0NTKCJD T01QX0tFWVdPUkRfQ0FTRSIpKQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weXNlbGVjdC5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHlzZWxlY3Qub3V0DQppbmRleCA3Mjg2NWZlMWVi Li5iYjllMDI2ZjkxIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5c2VsZWN0Lm91dA0KKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb3B5c2VsZWN0Lm91dA0KQEAgLTEyNiw3ICsxMjYsNyBA QCBjb3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgc2VsZWN0IDEvMDsJLS0g cm93LCB0aGVuIGVycm9yDQogRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvDQog c2VsZWN0IDEvMFw7IGNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXQ7IC0tIGVy cm9yIG9ubHkNCiBFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCi1jb3B5IChz ZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0ZG91 dFw7IHNlbGVjdCAwXDsgc2VsZWN0IDM7IC0tIDEgMiAzDQorY29weSAoc2Vs ZWN0IDEpIHRvIHN0ZG91dFw7IGNvcHkgKHNlbGVjdCAyKSB0byBzdGRvdXRc OyBzZWxlY3QgM1w7IHNlbGVjdCA0OyAtLSAxIDIgMyA0DQogMQ0KIDINCiAg P2NvbHVtbj8gDQpAQCAtMTM0LDggKzEzNCwxOCBAQCBjb3B5IChzZWxlY3Qg MSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRvIHN0ZG91dFw7IHNl bGVjdCAwXDsgc2VsZWN0IDM7IC0tDQogICAgICAgICAzDQogKDEgcm93KQ0K IA0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICA0DQorKDEg cm93KQ0KKw0KIGNyZWF0ZSB0YWJsZSB0ZXN0MyAoYyBpbnQpOw0KLXNlbGVj dCAwXDsgY29weSB0ZXN0MyBmcm9tIHN0ZGluXDsgY29weSB0ZXN0MyBmcm9t IHN0ZGluXDsgc2VsZWN0IDE7IC0tIDENCitzZWxlY3QgMFw7IGNvcHkgdGVz dDMgZnJvbSBzdGRpblw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7IHNlbGVj dCAxOyAtLSAwIDENCisgP2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAg ICAgMA0KKygxIHJvdykNCisNCiAgP2NvbHVtbj8gDQogLS0tLS0tLS0tLQ0K ICAgICAgICAgMQ0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHNxbC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bz cWwub3V0DQppbmRleCA2NDI4ZWJjNTA3Li42ZjQ2ODM1NWFiIDEwMDY0NA0K LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dA0KKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dA0KQEAgLTUy OTAsMyArNTI5MCwxMzAgQEAgRVJST1I6ICByZWxhdGlvbiAibm90ZXhpc3Rz IiBkb2VzIG5vdCBleGlzdA0KIExJTkUgMTogU0VMRUNUICogRlJPTSBub3Rl eGlzdHM7DQogICAgICAgICAgICAgICAgICAgICAgIF4NCiBTVEFURU1FTlQ6 ICBTRUxFQ1QgKiBGUk9NIG5vdGV4aXN0czsNCitcc2V0IEVDSE8gbm9uZQ0K KyBvbmUgDQorLS0tLS0NCisgICAxDQorKDEgcm93KQ0KKw0KK05PVElDRTog IHdhcm4gMS41DQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHdhcm4o dGV4dCkgbGluZSAyIGF0IFJBSVNFDQorIHdhcm4gDQorLS0tLS0tDQorIHQN CisoMSByb3cpDQorDQorIHR3byANCistLS0tLQ0KKyAgIDINCisoMSByb3cp DQorDQorIHRocmVlIA0KKy0tLS0tLS0NCisgICAgIDMNCisoMSByb3cpDQor DQorTk9USUNFOiAgd2FybiAzLjUNCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gd2Fybih0ZXh0KSBsaW5lIDIgYXQgUkFJU0UNCisgd2FybiANCist LS0tLS0NCisgdA0KKygxIHJvdykNCisNCis6dGhyZWUgNA0KK0VSUk9SOiAg c3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIjsiDQorTElORSAxOiBTRUxFQ1Qg NSA7IFNFTEVDVCA2ICsgOyBTRUxFQ1Qgd2FybignNi41JykgOyBTRUxFQ1Qg NyA7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXg0KKyBlaWdo dCANCistLS0tLS0tDQorICAgICA4DQorKDEgcm93KQ0KKw0KK0VSUk9SOiAg ZGl2aXNpb24gYnkgemVybw0KKyBiZWdpbiANCistLS0tLS0tDQorIG9rDQor KDEgcm93KQ0KKw0KK0NhbHZpbg0KK1N1c2llDQorSG9iYmVzDQorIGRvbmUg DQorLS0tLS0tDQorIG9rDQorKDEgcm93KQ0KKw0KK05PVElDRTogIHdhcm4g MS41DQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHdhcm4odGV4dCkg bGluZSAyIGF0IFJBSVNFDQorIHR3byANCistLS0tLQ0KKyAgIDINCisoMSBy b3cpDQorDQorIyBpbml0aWFsIEFVVE9DT01NSVQ6IG9uDQorIyBBVVRPQ09N TUlUOiBvZmYNCisgICBzICAgDQorLS0tLS0tLQ0KKyBoZWxsbw0KKyB3b3Js ZA0KKygyIHJvd3MpDQorDQorIyBBVVRPQ09NTUlUOiBvbg0KKyAgIHMgICAN CistLS0tLS0tDQorIGhlbGxvDQorIHdvcmxkDQorKDIgcm93cykNCisNCisj IGZpbmFsIEFVVE9DT01NSVQ6IG9uDQorIyBpbml0aWFsIE9OX0VSUk9SX1JP TExCQUNLOiBvZmYNCisjIE9OX0VSUk9SX1JPTExCQUNLOiBvbg0KKyMgQVVU T0NPTU1JVDogb24NCitFUlJPUjogIHR5cGUgIm5vX3N1Y2hfdHlwZSIgZG9l cyBub3QgZXhpc3QNCitMSU5FIDE6IENSRUFURSBUQUJMRSBibGEocyBOT19T VUNIX1RZUEUpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF4NCitF UlJPUjogIGVycm9yIG9vcHMhDQorQ09OVEVYVDogIFBML3BnU1FMIGZ1bmN0 aW9uIHBzcWxfZXJyb3IodGV4dCkgbGluZSAzIGF0IFJBSVNFDQorICAgcyAg ICANCistLS0tLS0tLQ0KKyBDYWx2aW4NCisgSG9iYmVzDQorKDIgcm93cykN CisNCisgICAgIHNob3cgICAgIA0KKy0tLS0tLS0tLS0tLS0tDQorIGJlZm9y ZSBlcnJvcg0KKygxIHJvdykNCisNCitFUlJPUjogIGVycm9yIGJvdW0hDQor Q09OVEVYVDogIFBML3BnU1FMIGZ1bmN0aW9uIHBzcWxfZXJyb3IodGV4dCkg bGluZSAzIGF0IFJBSVNFDQorRVJST1I6ICBlcnJvciBiYW0hDQorQ09OVEVY VDogIFBML3BnU1FMIGZ1bmN0aW9uIHBzcWxfZXJyb3IodGV4dCkgbGluZSAz IGF0IFJBSVNFDQorICAgICAgIHMgICAgICAgDQorLS0tLS0tLS0tLS0tLS0t DQorIENhbHZpbg0KKyBIb2JiZXMNCisgTWlzcyBXb3Jtd29vZA0KKyBTdXNp ZQ0KKyg0IHJvd3MpDQorDQorIyBBVVRPQ09NTUlUOiBvZmYNCitFUlJPUjog IGVycm9yIGJhZCENCitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gcHNx bF9lcnJvcih0ZXh0KSBsaW5lIDMgYXQgUkFJU0UNCisgI211bSANCistLS0t LS0NCisgICAgMQ0KKygxIHJvdykNCisNCitFUlJPUjogIGVycm9yIGJhZCEN CitDT05URVhUOiAgUEwvcGdTUUwgZnVuY3Rpb24gcHNxbF9lcnJvcih0ZXh0 KSBsaW5lIDMgYXQgUkFJU0UNCisgICAgICAgcyAgICAgICANCistLS0tLS0t LS0tLS0tLS0NCisgQ2FsdmluDQorIERhZA0KKyBIb2JiZXMNCisgTWlzcyBX b3Jtd29vZA0KKyBTdXNpZQ0KKyg1IHJvd3MpDQorDQorIyBmaW5hbCBPTl9F UlJPUl9ST0xMQkFDSzogb2ZmDQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQppbmRleCA1OTlkNTEx YTY3Li5hNDZmYTVkNDhhIDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC90cmFuc2FjdGlvbnMub3V0DQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RyYW5zYWN0aW9ucy5vdXQNCkBAIC05MDQsOCAr OTA0LDE4IEBAIERST1AgVEFCTEUgYWJjOw0KIC0tIHRlc3RzIHJlbHkgb24g dGhlIGZhY3QgdGhhdCBwc3FsIHdpbGwgbm90IGJyZWFrIFNRTCBjb21tYW5k cyBhcGFydCBhdCBhDQogLS0gYmFja3NsYXNoLXF1b3RlZCBzZW1pY29sb24s IGJ1dCB3aWxsIHNlbmQgdGhlbSBhcyBvbmUgUXVlcnkuDQogY3JlYXRlIHRl bXAgdGFibGUgaV90YWJsZSAoZjEgaW50KTsNCi0tLSBwc3FsIHdpbGwgc2hv dyBvbmx5IHRoZSBsYXN0IHJlc3VsdCBpbiBhIG11bHRpLXN0YXRlbWVudCBR dWVyeQ0KKy0tIHBzcWwgd2lsbCBzaG93IGFsbCByZXN1bHRzIG9mIGEgbXVs dGktc3RhdGVtZW50IFF1ZXJ5DQogU0VMRUNUIDFcOyBTRUxFQ1QgMlw7IFNF TEVDVCAzOw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICAx DQorKDEgcm93KQ0KKw0KKyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAg ICAgICAyDQorKDEgcm93KQ0KKw0KICA/Y29sdW1uPyANCiAtLS0tLS0tLS0t DQogICAgICAgICAzDQpAQCAtOTIwLDYgKzkzMCwxMiBAQCBpbnNlcnQgaW50 byBpX3RhYmxlIHZhbHVlcygxKVw7IHNlbGVjdCAqIGZyb20gaV90YWJsZTsN CiANCiAtLSAxLzAgZXJyb3Igd2lsbCBjYXVzZSByb2xsaW5nIGJhY2sgdGhl IHdob2xlIGltcGxpY2l0IHRyYW5zYWN0aW9uDQogaW5zZXJ0IGludG8gaV90 YWJsZSB2YWx1ZXMoMilcOyBzZWxlY3QgKiBmcm9tIGlfdGFibGVcOyBzZWxl Y3QgMS8wOw0KKyBmMSANCistLS0tDQorICAxDQorICAyDQorKDIgcm93cykN CisNCiBFUlJPUjogIGRpdmlzaW9uIGJ5IHplcm8NCiBzZWxlY3QgKiBmcm9t IGlfdGFibGU7DQogIGYxIA0KQEAgLTkzOSw4ICs5NTUsMTggQEAgV0FSTklO RzogIHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzDQogLS0g YmVnaW4gY29udmVydHMgaW1wbGljaXQgdHJhbnNhY3Rpb24gaW50byBhIHJl Z3VsYXIgb25lIHRoYXQNCiAtLSBjYW4gZXh0ZW5kIHBhc3QgdGhlIGVuZCBv ZiB0aGUgUXVlcnkNCiBzZWxlY3QgMVw7IGJlZ2luXDsgaW5zZXJ0IGludG8g aV90YWJsZSB2YWx1ZXMoNSk7DQorID9jb2x1bW4/IA0KKy0tLS0tLS0tLS0N CisgICAgICAgIDENCisoMSByb3cpDQorDQogY29tbWl0Ow0KIHNlbGVjdCAx XDsgYmVnaW5cOyBpbnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg2KTsNCisg P2NvbHVtbj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgMQ0KKygxIHJvdykN CisNCiByb2xsYmFjazsNCiAtLSBjb21taXQgaW4gaW1wbGljaXQtdHJhbnNh Y3Rpb24gc3RhdGUgY29tbWl0cyBidXQgaXNzdWVzIGEgd2FybmluZy4NCiBp bnNlcnQgaW50byBpX3RhYmxlIHZhbHVlcyg3KVw7IGNvbW1pdFw7IGluc2Vy dCBpbnRvIGlfdGFibGUgdmFsdWVzKDgpXDsgc2VsZWN0IDEvMDsNCkBAIC05 NjcsMjIgKzk5Myw1MiBAQCByb2xsYmFjazsgIC0tIHdlIGFyZSBub3QgaW4g YSB0cmFuc2FjdGlvbiBhdCB0aGlzIHBvaW50DQogV0FSTklORzogIHRoZXJl IGlzIG5vIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzDQogLS0gaW1wbGljaXQg dHJhbnNhY3Rpb24gYmxvY2sgaXMgc3RpbGwgYSB0cmFuc2FjdGlvbiBibG9j aywgZm9yIGUuZy4gVkFDVVVNDQogU0VMRUNUIDFcOyBWQUNVVU07DQorID9j b2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDENCisoMSByb3cpDQor DQogRVJST1I6ICBWQUNVVU0gY2Fubm90IHJ1biBpbnNpZGUgYSB0cmFuc2Fj dGlvbiBibG9jaw0KIFNFTEVDVCAxXDsgQ09NTUlUXDsgVkFDVVVNOw0KIFdB Uk5JTkc6ICB0aGVyZSBpcyBubyB0cmFuc2FjdGlvbiBpbiBwcm9ncmVzcw0K KyA/Y29sdW1uPyANCistLS0tLS0tLS0tDQorICAgICAgICAxDQorKDEgcm93 KQ0KKw0KIEVSUk9SOiAgVkFDVVVNIGNhbm5vdCBydW4gaW5zaWRlIGEgdHJh bnNhY3Rpb24gYmxvY2sNCiAtLSB3ZSBkaXNhbGxvdyBzYXZlcG9pbnQtcmVs YXRlZCBjb21tYW5kcyBpbiBpbXBsaWNpdC10cmFuc2FjdGlvbiBzdGF0ZQ0K IFNFTEVDVCAxXDsgU0FWRVBPSU5UIHNwOw0KKyA/Y29sdW1uPyANCistLS0t LS0tLS0tDQorICAgICAgICAxDQorKDEgcm93KQ0KKw0KIEVSUk9SOiAgU0FW RVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4gdHJhbnNhY3Rpb24gYmxvY2tz DQogU0VMRUNUIDFcOyBDT01NSVRcOyBTQVZFUE9JTlQgc3A7DQogV0FSTklO RzogIHRoZXJlIGlzIG5vIHRyYW5zYWN0aW9uIGluIHByb2dyZXNzDQorID9j b2x1bW4/IA0KKy0tLS0tLS0tLS0NCisgICAgICAgIDENCisoMSByb3cpDQor DQogRVJST1I6ICBTQVZFUE9JTlQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0cmFu c2FjdGlvbiBibG9ja3MNCiBST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BcOyBT RUxFQ1QgMjsNCiBFUlJPUjogIFJPTExCQUNLIFRPIFNBVkVQT0lOVCBjYW4g b25seSBiZSB1c2VkIGluIHRyYW5zYWN0aW9uIGJsb2Nrcw0KIFNFTEVDVCAy XDsgUkVMRUFTRSBTQVZFUE9JTlQgc3BcOyBTRUxFQ1QgMzsNCisgP2NvbHVt bj8gDQorLS0tLS0tLS0tLQ0KKyAgICAgICAgMg0KKygxIHJvdykNCisNCiBF UlJPUjogIFJFTEVBU0UgU0FWRVBPSU5UIGNhbiBvbmx5IGJlIHVzZWQgaW4g dHJhbnNhY3Rpb24gYmxvY2tzDQogLS0gYnV0IHRoaXMgaXMgT0ssIGJlY2F1 c2UgdGhlIEJFR0lOIGNvbnZlcnRzIGl0IHRvIGEgcmVndWxhciB4YWN0DQog U0VMRUNUIDFcOyBCRUdJTlw7IFNBVkVQT0lOVCBzcFw7IFJPTExCQUNLIFRP IFNBVkVQT0lOVCBzcFw7IENPTU1JVDsNCisgP2NvbHVtbj8gDQorLS0tLS0t LS0tLQ0KKyAgICAgICAgMQ0KKygxIHJvdykNCisNCiAtLSBUZXN0cyBmb3Ig QU5EIENIQUlOIGluIGltcGxpY2l0IHRyYW5zYWN0aW9uIGJsb2Nrcw0KIFNF VCBUUkFOU0FDVElPTiBSRUFEIE9OTFlcOyBDT01NSVQgQU5EIENIQUlOOyAg LS0gZXJyb3INCiBFUlJPUjogIENPTU1JVCBBTkQgQ0hBSU4gY2FuIG9ubHkg YmUgdXNlZCBpbiB0cmFuc2FjdGlvbiBibG9ja3MNCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5c2VsZWN0LnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHlzZWxlY3Quc3FsDQppbmRleCAxZDk4ZGFkM2M4 Li5lMzJhNGY4ZTM4IDEwMDY0NA0KLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvY29weXNlbGVjdC5zcWwNCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2NvcHlzZWxlY3Quc3FsDQpAQCAtODQsMTAgKzg0LDEwIEBAIGRyb3AgdGFi bGUgdGVzdDE7DQogLS0gcHNxbCBoYW5kbGluZyBvZiBDT1BZIGluIG11bHRp LWNvbW1hbmQgc3RyaW5ncw0KIGNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXRc OyBzZWxlY3QgMS8wOwktLSByb3csIHRoZW4gZXJyb3INCiBzZWxlY3QgMS8w XDsgY29weSAoc2VsZWN0IDEpIHRvIHN0ZG91dDsgLS0gZXJyb3Igb25seQ0K LWNvcHkgKHNlbGVjdCAxKSB0byBzdGRvdXRcOyBjb3B5IChzZWxlY3QgMikg dG8gc3Rkb3V0XDsgc2VsZWN0IDBcOyBzZWxlY3QgMzsgLS0gMSAyIDMNCitj b3B5IChzZWxlY3QgMSkgdG8gc3Rkb3V0XDsgY29weSAoc2VsZWN0IDIpIHRv IHN0ZG91dFw7IHNlbGVjdCAzXDsgc2VsZWN0IDQ7IC0tIDEgMiAzIDQNCiAN CiBjcmVhdGUgdGFibGUgdGVzdDMgKGMgaW50KTsNCi1zZWxlY3QgMFw7IGNv cHkgdGVzdDMgZnJvbSBzdGRpblw7IGNvcHkgdGVzdDMgZnJvbSBzdGRpblw7 IHNlbGVjdCAxOyAtLSAxDQorc2VsZWN0IDBcOyBjb3B5IHRlc3QzIGZyb20g c3RkaW5cOyBjb3B5IHRlc3QzIGZyb20gc3RkaW5cOyBzZWxlY3QgMTsgLS0g MCAxDQogMQ0KIFwuDQogMg0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BzcWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHNxbC5z cWwNCmluZGV4IDBmNTI4N2Y3N2IuLjJiMDY3ODliNWEgMTAwNjQ0DQotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbA0KKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcHNxbC5zcWwNCkBAIC0xMzE2LDMgKzEzMTYsMTI1 IEBAIERST1AgVEFCTEUgb2VyX3Rlc3Q7DQogXHNldCBFQ0hPIGVycm9ycw0K IFNFTEVDVCAqIEZST00gbm90ZXhpc3RzOw0KIFxzZXQgRUNITyBhbGwNCisN Citcc2V0IEVDSE8gbm9uZQ0KKw0KKy0tDQorLS0gY29tYmluZWQgcXVlcmll cw0KKy0tDQorQ1JFQVRFIEZVTkNUSU9OIHdhcm4obXNnIFRFWFQpIFJFVFVS TlMgQk9PTEVBTiBMQU5HVUFHRSBwbHBnc3FsDQorQVMgJCQNCisgIEJFR0lO IFJBSVNFIE5PVElDRSAnd2FybiAlJywgbXNnIDsgUkVUVVJOIFRSVUUgOyBF TkQNCiskJDsNCistLSBzaG93IGJvdGgNCitTRUxFQ1QgMSBBUyBvbmUgXDsg U0VMRUNUIHdhcm4oJzEuNScpIFw7IFNFTEVDVCAyIEFTIHR3byA7DQorLS0g XGdzZXQgYXBwbGllcyB0byBsYXN0IHF1ZXJ5IG9ubHkNCitTRUxFQ1QgMyBB UyB0aHJlZSBcOyBTRUxFQ1Qgd2FybignMy41JykgXDsgU0VMRUNUIDQgQVMg Zm91ciBcZ3NldA0KK1xlY2hvIDp0aHJlZSA6Zm91cg0KKy0tIHN5bnRheCBl cnJvciBzdG9wcyBhbGwgcHJvY2Vzc2luZw0KK1NFTEVDVCA1IFw7IFNFTEVD VCA2ICsgXDsgU0VMRUNUIHdhcm4oJzYuNScpIFw7IFNFTEVDVCA3IDsNCist LSB3aXRoIGFib3J0ZWQgdHJhbnNhY3Rpb24sIHN0b3Agb24gZmlyc3QgZXJy b3INCitCRUdJTiBcOyBTRUxFQ1QgOCBBUyBlaWdodCBcOyBTRUxFQ1QgOS8w IEFTIG5pbmUgXDsgUk9MTEJBQ0sgXDsgU0VMRUNUIDEwIEFTIHRlbiA7DQor LS0gY2xvc2UgcHJldmlvdXNseSBhYm9ydGVkIHRyYW5zYWN0aW9uDQorUk9M TEJBQ0s7DQorLS0gbWlzYyBTUUwgY29tbWFuZHMNCistLSAobm9uIFNFTEVD VCBvdXRwdXQgaXMgc2VudCB0byBzdGRlcnIsIHRodXMgaXMgbm90IHNob3du IGluIGV4cGVjdGVkIHJlc3VsdHMpDQorU0VMRUNUICdvaycgQVMgImJlZ2lu IiBcOw0KK0NSRUFURSBUQUJMRSBwc3FsX2NvbWljcyhzIFRFWFQpIFw7DQor SU5TRVJUIElOVE8gcHNxbF9jb21pY3MgVkFMVUVTICgnQ2FsdmluJyksICgn aG9iYmVzJykgXDsNCitDT1BZIHBzcWxfY29taWNzIEZST00gU1RESU4gXDsN CitVUERBVEUgcHNxbF9jb21pY3MgU0VUIHMgPSAnSG9iYmVzJyBXSEVSRSBz ID0gJ2hvYmJlcycgXDsNCitERUxFVEUgRlJPTSBwc3FsX2NvbWljcyBXSEVS RSBzID0gJ01vZScgXDsNCitDT1BZIHBzcWxfY29taWNzIFRPIFNURE9VVCBc Ow0KK1RSVU5DQVRFIHBzcWxfY29taWNzIFw7DQorRFJPUCBUQUJMRSBwc3Fs X2NvbWljcyBcOw0KK1NFTEVDVCAnb2snIEFTICJkb25lIiA7DQorTW9lDQor U3VzaWUNCitcLg0KK1xzZXQgU0hPV19BTExfUkVTVUxUUyBvZmYNCitTRUxF Q1QgMSBBUyBvbmUgXDsgU0VMRUNUIHdhcm4oJzEuNScpIFw7IFNFTEVDVCAy IEFTIHR3byA7DQorXHNldCBTSE9XX0FMTF9SRVNVTFRTIG9uDQorRFJPUCBG VU5DVElPTiB3YXJuKFRFWFQpOw0KKw0KKy0tDQorLS0gYXV0b2NvbW1pdA0K Ky0tDQorXGVjaG8gJyMgaW5pdGlhbCBBVVRPQ09NTUlUOicgOkFVVE9DT01N SVQNCitcc2V0IEFVVE9DT01NSVQgb2ZmDQorXGVjaG8gJyMgQVVUT0NPTU1J VDonIDpBVVRPQ09NTUlUDQorLS0gaW1wbGljaXQgQkVHSU4NCitDUkVBVEUg VEFCTEUgZm9vKHMgVEVYVCk7DQorUk9MTEJBQ0s7DQorQ1JFQVRFIFRBQkxF IGZvbyhzIFRFWFQpOw0KK0lOU0VSVCBJTlRPIGZvbyhzKSBWQUxVRVMgKCdo ZWxsbycpLCAoJ3dvcmxkJyk7DQorQ09NTUlUOw0KK0RST1AgVEFCTEUgZm9v Ow0KK1JPTExCQUNLOw0KK1NFTEVDVCAqIEZST00gZm9vIE9SREVSIEJZIDE7 DQorRFJPUCBUQUJMRSBmb287DQorQ09NTUlUOw0KK1xzZXQgQVVUT0NPTU1J VCBvbg0KK1xlY2hvICcjIEFVVE9DT01NSVQ6JyA6QVVUT0NPTU1JVA0KKy0t IGV4cGxpY2l0IEJFR0lODQorQkVHSU47DQorQ1JFQVRFIFRBQkxFIGZvbyhz IFRFWFQpOw0KK0lOU0VSVCBJTlRPIGZvbyhzKSBWQUxVRVMgKCdoZWxsbycp LCAoJ3dvcmxkJyk7DQorQ09NTUlUOw0KK0JFR0lOOw0KK0RST1AgVEFCTEUg Zm9vOw0KK1JPTExCQUNLOw0KKy0tIGltcGxpY2l0IHRyYW5zYWN0aW9ucw0K K1NFTEVDVCAqIEZST00gZm9vIE9SREVSIEJZIDE7DQorRFJPUCBUQUJMRSBm b287DQorXGVjaG8gJyMgZmluYWwgQVVUT0NPTU1JVDonIDpBVVRPQ09NTUlU DQorDQorLS0NCistLSB0ZXN0IE9OX0VSUk9SX1JPTExCQUNLDQorLS0NCitD UkVBVEUgRlVOQ1RJT04gcHNxbF9lcnJvcihtc2cgVEVYVCkgUkVUVVJOUyBC T09MRUFOIEFTICQkDQorICBCRUdJTg0KKyAgICBSQUlTRSBFWENFUFRJT04g J2Vycm9yICUnLCBtc2c7DQorICBFTkQ7DQorJCQgTEFOR1VBR0UgcGxwZ3Nx bDsNCitcZWNobyAnIyBpbml0aWFsIE9OX0VSUk9SX1JPTExCQUNLOicgOk9O X0VSUk9SX1JPTExCQUNLDQorXHNldCBPTl9FUlJPUl9ST0xMQkFDSyBvbg0K K1xlY2hvICcjIE9OX0VSUk9SX1JPTExCQUNLOicgOk9OX0VSUk9SX1JPTExC QUNLDQorXGVjaG8gJyMgQVVUT0NPTU1JVDonIDpBVVRPQ09NTUlUDQorQkVH SU47DQorQ1JFQVRFIFRBQkxFIGJsYShzIE5PX1NVQ0hfVFlQRSk7ICAgICAg ICAgLS0gZmFpbHMNCitDUkVBVEUgVEFCTEUgYmxhKHMgVEVYVCk7ICAgICAg ICAgICAgICAgICAtLSBzdWNjZWVkcw0KK1NFTEVDVCBwc3FsX2Vycm9yKCdv b3BzIScpOyAgICAgICAgICAgICAgIC0tIGZhaWxzDQorSU5TRVJUIElOVE8g YmxhIFZBTFVFUyAoJ0NhbHZpbicpLCAoJ0hvYmJlcycpOw0KK0NPTU1JVDsN CitTRUxFQ1QgKiBGUk9NIGJsYSBPUkRFUiBCWSAxOw0KK0JFR0lOOw0KK0lO U0VSVCBJTlRPIGJsYSBWQUxVRVMgKCdTdXNpZScpOyAgICAgICAgIC0tIHN1 Y2NlZWRzDQorLS0gY29tYmluZWQgcXVlcmllcw0KK0lOU0VSVCBJTlRPIGJs YSBWQUxVRVMgKCdSb3NhbHluJykgXDsgICAgIC0tIHdpbGwgcm9sbGJhY2sN CitTRUxFQ1QgJ2JlZm9yZSBlcnJvcicgQVMgc2hvdyBcOyAgICAgICAgICAt LSB3aWxsIHNob3chDQorICBTRUxFQ1QgcHNxbF9lcnJvcignYm91bSEnKSBc OyAgICAgICAgICAgLS0gZmFpbHVyZQ0KKyAgU0VMRUNUICdhZnRlciBlcnJv cicgQVMgbm9zaG93OyAgICAgICAgIC0tIGhpZGRlbiBieSBwcmVjZWVkaW5n IGVycm9yDQorSU5TRVJUIElOVE8gYmxhKHMpIFZBTFVFUyAoJ01vZScpIFw7 ICAgICAgLS0gd2lsbCByb2xsYmFjaw0KKyAgU0VMRUNUIHBzcWxfZXJyb3Io J2JhbSEnKTsNCitJTlNFUlQgSU5UTyBibGEgVkFMVUVTICgnTWlzcyBXb3Jt d29vZCcpOyAtLSBzdWNjZWVkcw0KK0NPTU1JVDsNCitTRUxFQ1QgKiBGUk9N IGJsYSBPUkRFUiBCWSAxOw0KKy0tIHNvbWUgd2l0aCBhdXRvY29tbWl0IG9m Zg0KK1xzZXQgQVVUT0NPTU1JVCBvZmYNCitcZWNobyAnIyBBVVRPQ09NTUlU OicgOkFVVE9DT01NSVQNCistLSBpbXBsaWNpdCBCRUdJTg0KK0lOU0VSVCBJ TlRPIGJsYSBWQUxVRVMgKCdEYWQnKTsgICAgICAgICAgIC0tIHN1Y2NlZWRz DQorU0VMRUNUIHBzcWxfZXJyb3IoJ2JhZCEnKTsgICAgICAgICAgICAgICAg LS0gaW1wbGljaXQgcGFydGlhbCByb2xsYmFjaw0KK0lOU0VSVCBJTlRPIGJs YSBWQUxVRVMgKCdNdW0nKSBcOyAgICAgICAgIC0tIHdpbGwgcm9sbGJhY2sN CitTRUxFQ1QgQ09VTlQoKikgQVMgIiNtdW0iDQorRlJPTSBibGEgV0hFUkUg cyA9ICdNdW0nIFw7ICAgICAgICAgICAgICAgLS0gYnV0IGJlIGNvdW50ZWQg aGVyZQ0KK1NFTEVDVCBwc3FsX2Vycm9yKCdiYWQhJyk7ICAgICAgICAgICAg ICAgIC0tIGltcGxpY2l0IHBhcnRpYWwgcm9sbGJhY2sNCitDT01NSVQ7DQor U0VMRUNUICogRlJPTSBibGEgT1JERVIgQlkgMTsNCistLSByZXNldA0KK1xz ZXQgQVVUT0NPTU1JVCBvbg0KK1xzZXQgT05fRVJST1JfUk9MTEJBQ0sgb2Zm DQorXGVjaG8gJyMgZmluYWwgT05fRVJST1JfUk9MTEJBQ0s6JyA6T05fRVJS T1JfUk9MTEJBQ0sNCitEUk9QIFRBQkxFIGJsYTsNCitEUk9QIEZVTkNUSU9O IHBzcWxfZXJyb3I7DQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvdHJhbnNhY3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Ry YW5zYWN0aW9ucy5zcWwNCmluZGV4IDBhNzE2YjUwNmIuLmQ3MWMzY2U5M2Ug MTAwNjQ0DQotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmFuc2FjdGlv bnMuc3FsDQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmFuc2FjdGlv bnMuc3FsDQpAQCAtNTA2LDcgKzUwNiw3IEBAIERST1AgVEFCTEUgYWJjOw0K IA0KIGNyZWF0ZSB0ZW1wIHRhYmxlIGlfdGFibGUgKGYxIGludCk7DQogDQot LS0gcHNxbCB3aWxsIHNob3cgb25seSB0aGUgbGFzdCByZXN1bHQgaW4gYSBt dWx0aS1zdGF0ZW1lbnQgUXVlcnkNCistLSBwc3FsIHdpbGwgc2hvdyBhbGwg cmVzdWx0cyBvZiBhIG11bHRpLXN0YXRlbWVudCBRdWVyeQ0KIFNFTEVDVCAx XDsgU0VMRUNUIDJcOyBTRUxFQ1QgMzsNCiANCiAtLSB0aGlzIGltcGxpY2l0 bHkgY29tbWl0czoNCg== --2056645051-696669486-1647102468=:3679190--