Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aMz2M-0006y2-4k for pgsql-hackers@arkaria.postgresql.org; Sat, 23 Jan 2016 14:19:34 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aMz2L-00077j-DS for pgsql-hackers@arkaria.postgresql.org; Sat, 23 Jan 2016 14:19:33 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aMz2G-00075N-UB for pgsql-hackers@postgresql.org; Sat, 23 Jan 2016 14:19:29 +0000 Received: from jiboia.ensmp.fr ([194.214.158.137]) by magus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1aMz2A-0001l6-RH for pgsql-hackers@postgresql.org; Sat, 23 Jan 2016 14:19:28 +0000 Received: from cri.ensmp.fr (152.200.219.88.rev.sfr.net [88.219.200.152]) (authenticated bits=0) by jiboia.ensmp.fr (8.15.2/8.15.1/JMMC-22/Oct/2013) with ESMTPSA id u0NEJGtj002768 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 23 Jan 2016 15:19:17 +0100 Date: Sat, 23 Jan 2016 15:18:57 +0100 (CET) From: Fabien COELHO X-X-Sender: fabien@sto To: Alvaro Herrera cc: "pgsql-hackers@postgresql.org" Subject: Re: pgbench stats per script & other stuff In-Reply-To: <20160112223220.GA882681@alvherre.pgsql> Message-ID: References: <20160112223220.GA882681@alvherre.pgsql> User-Agent: Alpine 2.10 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323329-242826868-1453558738=:21060" X-Miltered: at jiboia.ensmp.fr with ID 56A38BE4.002 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Auth: USER-ID fabien.coelho X-j-chkmail-Enveloppe: 56A38BE4.002 from 152.200.219.88.rev.sfr.net/152.200.219.88.rev.sfr.net/88.219.200.152/cri.ensmp.fr/ X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323329-242826868-1453558738=:21060 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Hello Alvaro, > I'm looking at this part of your patch and I think it's far too big to > be a simple refactoring. Would you split it up please? You know how delighted I am to split patches... Here is a 5 part ordered patch serie: a) add -b option for cumulating builtins and rework internal script management so that builtin and external scripts are managed the same way. b) refactor statistics collections (per thread, per command, per whatever) so as to use the same structure everywhere, reducing the CLOC by 115. this enables the next small patch which can reuse the new functions. c) add per-script statistics... because Josh asked:-) d) add optional weight to control the relative frequency of scripts. e) minor code cleanup : use bool instead of int where appropriate put together struct fields when they belong together move 2 options at their right position in the list This patch serie conflicts slightly with the "add functions to pgbench" patch which is marked as ready in the CF. The first to make it will mean some conflict resolution for the other. Maybe I would prefer this one serie to go first, if I had any say... -- Fabien. --8323329-242826868-1453558738=:21060 Content-Type: TEXT/x-diff; name=pgbench-script-stats-13-a.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-13-a.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IDU0MWQxN2Iu LmZkZDMzMzEgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC0yNjEsNiArMjYxLDIzIEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVw bGFjZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ ZGJuYW1lPC8+DQogICAgIGJlbmNobWFya2luZyBhcmd1bWVudHM6DQogDQog ICAgIDx2YXJpYWJsZWxpc3Q+DQorICAgICA8dmFybGlzdGVudHJ5Pg0KKyAg ICAgIDx0ZXJtPjxvcHRpb24+LWI8Lz4gPHJlcGxhY2VhYmxlPnNjcmlwdG5h bWU8Lz48L3Rlcm0+DQorICAgICAgPHRlcm0+PG9wdGlvbj4tLWJ1aWx0aW48 Lz4gPHJlcGxhY2VhYmxlPnNjcmlwdG5hbWU8Lz48L3Rlcm0+DQorICAgICAg PGxpc3RpdGVtPg0KKyAgICAgICA8cGFyYT4NCisgICAgICAgIEFkZCB0aGUg c3BlY2lmaWVkIGJ1aWx0aW4gc2NyaXB0IHRvIHRoZSBsaXN0IG9mIGV4ZWN1 dGVkIHNjcmlwdHMuDQorICAgICAgICBBdmFpbGFibGUgYnVpbHRpbiBzY3Jp cHRzIGFyZTogPGxpdGVyYWw+dHBjYi1saWtlPC8+LA0KKyAgICAgICAgPGxp dGVyYWw+c2ltcGxlLXVwZGF0ZTwvPiBhbmQgPGxpdGVyYWw+c2VsZWN0LW9u bHk8Lz4uDQorICAgICAgICBUaGUgcHJvdmlkZWQgPHJlcGxhY2VhYmxlPnNj cmlwdG5hbWU8Lz4gbmVlZHMgb25seSB0byBiZSBhIHByZWZpeA0KKyAgICAg ICAgb2YgdGhlIGJ1aWx0aW4gbmFtZSwgaGVuY2UgPGxpdGVyYWw+c2ltcDwv PiB3b3VsZCBiZSBlbm91Z2ggdG8gc2VsZWN0DQorICAgICAgICA8bGl0ZXJh bD5zaW1wbGUtdXBkYXRlPC8+Lg0KKyAgICAgICAgV2l0aCBzcGVjaWFsIG5h bWUgPGxpdGVyYWw+bGlzdDwvPiwgc2hvdyB0aGUgbGlzdCBvZiBidWlsdGlu IHNjcmlwdHMNCisgICAgICAgIGFuZCBleGl0IGltbWVkaWF0ZWx5Lg0KKyAg ICAgICA8L3BhcmE+DQorICAgICAgPC9saXN0aXRlbT4NCisgICAgIDwvdmFy bGlzdGVudHJ5Pg0KKw0KIA0KICAgICAgPHZhcmxpc3RlbnRyeT4NCiAgICAg ICA8dGVybT48b3B0aW9uPi1jPC9vcHRpb24+IDxyZXBsYWNlYWJsZT5jbGll bnRzPC8+PC90ZXJtPg0KQEAgLTMwNywxNCArMzI0LDEzIEBAIHBnYmVuY2gg PG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFs PiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQogICAgICA8L3Zhcmxpc3RlbnRy eT4NCiANCiAgICAgIDx2YXJsaXN0ZW50cnk+DQotICAgICAgPHRlcm0+PG9w dGlvbj4tZjwvb3B0aW9uPiA8cmVwbGFjZWFibGU+ZmlsZW5hbWU8Lz48L3Rl cm0+DQotICAgICAgPHRlcm0+PG9wdGlvbj4tLWZpbGU9PC9vcHRpb24+PHJl cGxhY2VhYmxlPmZpbGVuYW1lPC8+PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxv cHRpb24+LWY8Lz4gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC8+PC90ZXJtPg0K KyAgICAgIDx0ZXJtPjxvcHRpb24+LS1maWxlPTwvPjxyZXBsYWNlYWJsZT5m aWxlbmFtZTwvPjwvdGVybT4NCiAgICAgICA8bGlzdGl0ZW0+DQogICAgICAg IDxwYXJhPg0KLSAgICAgICAgUmVhZCB0cmFuc2FjdGlvbiBzY3JpcHQgZnJv bSA8cmVwbGFjZWFibGU+ZmlsZW5hbWU8Lz4uDQorICAgICAgICBBZGQgYSB0 cmFuc2FjdGlvbiBzY3JpcHQgcmVhZCBmcm9tIDxyZXBsYWNlYWJsZT5maWxl bmFtZTwvPiB0bw0KKyAgICAgICAgdGhlIGxpc3Qgb2YgZXhlY3V0ZWQgc2Ny aXB0cy4NCiAgICAgICAgIFNlZSBiZWxvdyBmb3IgZGV0YWlscy4NCi0gICAg ICAgIDxvcHRpb24+LU48L29wdGlvbj4sIDxvcHRpb24+LVM8L29wdGlvbj4s IGFuZCA8b3B0aW9uPi1mPC9vcHRpb24+DQotICAgICAgICBhcmUgbXV0dWFs bHkgZXhjbHVzaXZlLg0KICAgICAgICA8L3BhcmE+DQogICAgICAgPC9saXN0 aXRlbT4NCiAgICAgIDwvdmFybGlzdGVudHJ5Pg0KQEAgLTQwNCwxMCArNDIw LDggQEAgcGdiZW5jaCA8b3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5vcHRpb25z PC8+IDwvb3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5kYm5hbWU8Lz4NCiAgICAg ICA8dGVybT48b3B0aW9uPi0tc2tpcC1zb21lLXVwZGF0ZXM8L29wdGlvbj48 L3Rlcm0+DQogICAgICAgPGxpc3RpdGVtPg0KICAgICAgICA8cGFyYT4NCi0g ICAgICAgIERvIG5vdCB1cGRhdGUgPHN0cnVjdG5hbWU+cGdiZW5jaF90ZWxs ZXJzPC8+IGFuZA0KLSAgICAgICAgPHN0cnVjdG5hbWU+cGdiZW5jaF9icmFu Y2hlczwvPi4NCi0gICAgICAgIFRoaXMgd2lsbCBhdm9pZCB1cGRhdGUgY29u dGVudGlvbiBvbiB0aGVzZSB0YWJsZXMsIGJ1dA0KLSAgICAgICAgaXQgbWFr ZXMgdGhlIHRlc3QgY2FzZSBldmVuIGxlc3MgbGlrZSBUUEMtQi4NCisgICAg ICAgIFJ1biBidWlsdGluIHNpbXBsZS11cGRhdGUgc2NyaXB0Lg0KKyAgICAg ICAgU2hvcnRoYW5kIGZvciA8b3B0aW9uPi1iIHNpbXBsZS11cGRhdGU8Lz4u DQogICAgICAgIDwvcGFyYT4NCiAgICAgICA8L2xpc3RpdGVtPg0KICAgICAg PC92YXJsaXN0ZW50cnk+DQpAQCAtNTEyLDkgKzUyNiw5IEBAIHBnYmVuY2gg PG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFs PiA8cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQogICAgICAgICBSZXBvcnQgdGhl IHNwZWNpZmllZCBzY2FsZSBmYWN0b3IgaW4gPGFwcGxpY2F0aW9uPnBnYmVu Y2g8Lz4ncw0KICAgICAgICAgb3V0cHV0LiAgV2l0aCB0aGUgYnVpbHQtaW4g dGVzdHMsIHRoaXMgaXMgbm90IG5lY2Vzc2FyeTsgdGhlDQogICAgICAgICBj b3JyZWN0IHNjYWxlIGZhY3RvciB3aWxsIGJlIGRldGVjdGVkIGJ5IGNvdW50 aW5nIHRoZSBudW1iZXIgb2YNCi0gICAgICAgIHJvd3MgaW4gdGhlIDxzdHJ1 Y3RuYW1lPnBnYmVuY2hfYnJhbmNoZXM8Lz4gdGFibGUuICBIb3dldmVyLCB3 aGVuIHRlc3RpbmcNCi0gICAgICAgIGN1c3RvbSBiZW5jaG1hcmtzICg8b3B0 aW9uPi1mPC8+IG9wdGlvbiksIHRoZSBzY2FsZSBmYWN0b3INCi0gICAgICAg IHdpbGwgYmUgcmVwb3J0ZWQgYXMgMSB1bmxlc3MgdGhpcyBvcHRpb24gaXMg dXNlZC4NCisgICAgICAgIHJvd3MgaW4gdGhlIDxzdHJ1Y3RuYW1lPnBnYmVu Y2hfYnJhbmNoZXM8Lz4gdGFibGUuDQorICAgICAgICBIb3dldmVyLCB3aGVu IHRlc3Rpbmcgb25seSBjdXN0b20gYmVuY2htYXJrcyAoPG9wdGlvbj4tZjwv PiBvcHRpb24pLA0KKyAgICAgICAgdGhlIHNjYWxlIGZhY3RvciB3aWxsIGJl IHJlcG9ydGVkIGFzIDEgdW5sZXNzIHRoaXMgb3B0aW9uIGlzIHVzZWQuDQog ICAgICAgIDwvcGFyYT4NCiAgICAgICA8L2xpc3RpdGVtPg0KICAgICAgPC92 YXJsaXN0ZW50cnk+DQpAQCAtNTI0LDcgKzUzOCw4IEBAIHBnYmVuY2ggPG9w dGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFsPiA8 cmVwbGFjZWFibGU+ZGJuYW1lPC8+DQogICAgICAgPHRlcm0+PG9wdGlvbj4t LXNlbGVjdC1vbmx5PC9vcHRpb24+PC90ZXJtPg0KICAgICAgIDxsaXN0aXRl bT4NCiAgICAgICAgPHBhcmE+DQotICAgICAgICBQZXJmb3JtIHNlbGVjdC1v bmx5IHRyYW5zYWN0aW9ucyBpbnN0ZWFkIG9mIFRQQy1CLWxpa2UgdGVzdC4N CisgICAgICAgIFJ1biBidWlsdC1pbiBzZWxlY3Qtb25seSBzY3JpcHQuDQor ICAgICAgICBTaG9ydGhhbmQgZm9yIDxvcHRpb24+LWIgc2VsZWN0LW9ubHk8 Lz4uDQogICAgICAgIDwvcGFyYT4NCiAgICAgICA8L2xpc3RpdGVtPg0KICAg ICAgPC92YXJsaXN0ZW50cnk+DQpAQCAtNjc0LDcgKzY4OSwxNyBAQCBwZ2Jl bmNoIDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlPm9wdGlvbnM8Lz4gPC9vcHRp b25hbD4gPHJlcGxhY2VhYmxlPmRibmFtZTwvPg0KICAgPHRpdGxlPldoYXQg aXMgdGhlIDxxdW90ZT5UcmFuc2FjdGlvbjwvPiBBY3R1YWxseSBQZXJmb3Jt ZWQgaW4gPGFwcGxpY2F0aW9uPnBnYmVuY2g8L2FwcGxpY2F0aW9uPj88L3Rp dGxlPg0KIA0KICAgPHBhcmE+DQotICAgVGhlIGRlZmF1bHQgdHJhbnNhY3Rp b24gc2NyaXB0IGlzc3VlcyBzZXZlbiBjb21tYW5kcyBwZXIgdHJhbnNhY3Rp b246DQorICAgUGdiZW5jaCBleGVjdXRlcyB0ZXN0IHNjcmlwdHMgY2hvc2Vu IHJhbmRvbWx5IGZyb20gYSBzcGVjaWZpZWQgbGlzdC4NCisgICBUaGV5IGlu Y2x1ZGUgYnVpbHQtaW4gc2NyaXB0cyB3aXRoIDxvcHRpb24+LWI8Lz4gYW5k DQorICAgdXNlci1wcm92aWRlZCBjdXN0b20gc2NyaXB0cyB3aXRoIDxvcHRp b24+LWY8Lz4uDQorIDwvcGFyYT4NCisNCisgIDxwYXJhPg0KKyAgIFRoZSBk ZWZhdWx0IGJ1aWx0aW4gdHJhbnNhY3Rpb24gc2NyaXB0IChhbHNvIGludm9r ZWQgd2l0aCA8b3B0aW9uPi1iIHRwY2ItbGlrZTwvPikNCisgICBpc3N1ZXMg c2V2ZW4gY29tbWFuZHMgcGVyIHRyYW5zYWN0aW9uIG92ZXIgcmFuZG9tbHkg Y2hvc2VuIDxsaXRlcmFsPmFpZDwvPiwNCisgICA8bGl0ZXJhbD50aWQ8Lz4s IDxsaXRlcmFsPmJpZDwvPiBhbmQgPGxpdGVyYWw+YmFsYW5jZTwvPi4NCisg ICBUaGUgc2NlbmFyaW8gaXMgaW5zcGlyZWQgYnkgdGhlIFRQQy1CIGJlbmNo bWFyaywgYnV0IGlzIG5vdCBhY3R1YWxseSBUUEMtQiwNCisgICBoZW5jZSB0 aGUgbmFtZS4NCiAgIDwvcGFyYT4NCiANCiAgIDxvcmRlcmVkbGlzdD4NCkBA IC02ODgsOSArNzEzLDE1IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFj ZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJu YW1lPC8+DQogICA8L29yZGVyZWRsaXN0Pg0KIA0KICAgPHBhcmE+DQotICAg SWYgeW91IHNwZWNpZnkgPG9wdGlvbj4tTjwvPiwgc3RlcHMgNCBhbmQgNSBh cmVuJ3QgaW5jbHVkZWQgaW4gdGhlDQotICAgdHJhbnNhY3Rpb24uICBJZiB5 b3Ugc3BlY2lmeSA8b3B0aW9uPi1TPC8+LCBvbmx5IHRoZSA8Y29tbWFuZD5T RUxFQ1Q8Lz4gaXMNCi0gICBpc3N1ZWQuDQorICAgSWYgeW91IHNlbGVjdCB0 aGUgPGxpdGVyYWw+c2ltcGxlLXVwZGF0ZTwvPiBidWlsdGluIChhbHNvIDxv cHRpb24+LU48Lz4pLA0KKyAgIHN0ZXBzIDQgYW5kIDUgYXJlbid0IGluY2x1 ZGVkIGluIHRoZSB0cmFuc2FjdGlvbi4NCisgICBUaGlzIHdpbGwgYXZvaWQg dXBkYXRlIGNvbnRlbnRpb24gb24gdGhlc2UgdGFibGVzLCBidXQNCisgICBp dCBtYWtlcyB0aGUgdGVzdCBjYXNlIGV2ZW4gbGVzcyBsaWtlIFRQQy1CLg0K KyAgPC9wYXJhPg0KKw0KKyAgPHBhcmE+DQorICAgSWYgeW91IHNlbGVjdCB0 aGUgPGxpdGVyYWw+c2VsZWN0LW9ubHk8Lz4gYnVpbHRpbiAoYWxzbyA8b3B0 aW9uPi1TPC8+KSwNCisgICBvbmx5IHRoZSA8Y29tbWFuZD5TRUxFQ1Q8Lz4g aXMgaXNzdWVkLg0KICAgPC9wYXJhPg0KICA8L3JlZnNlY3QyPg0KIA0KQEAg LTcwMiwxMCArNzMzLDcgQEAgcGdiZW5jaCA8b3B0aW9uYWw+IDxyZXBsYWNl YWJsZT5vcHRpb25zPC8+IDwvb3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5kYm5h bWU8Lz4NCiAgICBiZW5jaG1hcmsgc2NlbmFyaW9zIGJ5IHJlcGxhY2luZyB0 aGUgZGVmYXVsdCB0cmFuc2FjdGlvbiBzY3JpcHQNCiAgICAoZGVzY3JpYmVk IGFib3ZlKSB3aXRoIGEgdHJhbnNhY3Rpb24gc2NyaXB0IHJlYWQgZnJvbSBh IGZpbGUNCiAgICAoPG9wdGlvbj4tZjwvb3B0aW9uPiBvcHRpb24pLiAgSW4g dGhpcyBjYXNlIGEgPHF1b3RlPnRyYW5zYWN0aW9uPC8+DQotICAgY291bnRz IGFzIG9uZSBleGVjdXRpb24gb2YgYSBzY3JpcHQgZmlsZS4gIFlvdSBjYW4g ZXZlbiBzcGVjaWZ5DQotICAgbXVsdGlwbGUgc2NyaXB0cyAobXVsdGlwbGUg PG9wdGlvbj4tZjwvb3B0aW9uPiBvcHRpb25zKSwgaW4gd2hpY2gNCi0gICBj YXNlIGEgcmFuZG9tIG9uZSBvZiB0aGUgc2NyaXB0cyBpcyBjaG9zZW4gZWFj aCB0aW1lIGEgY2xpZW50IHNlc3Npb24NCi0gICBzdGFydHMgYSBuZXcgdHJh bnNhY3Rpb24uDQorICAgY291bnRzIGFzIG9uZSBleGVjdXRpb24gb2YgYSBz Y3JpcHQgZmlsZS4NCiAgIDwvcGFyYT4NCiANCiAgIDxwYXJhPg0KQEAgLTEx MTIsNyArMTE0MCw4IEBAIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgcGVyIGNs aWVudDogMTAwMA0KIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkg cHJvY2Vzc2VkOiAxMDAwMC8xMDAwMA0KIHRwcyA9IDYxOC43NjQ1NTUgKGlu Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpDQogdHBzID0gNjIy Ljk3NzY5OCAoZXhjbHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykN Ci1zdGF0ZW1lbnQgbGF0ZW5jaWVzIGluIG1pbGxpc2Vjb25kczoNCitTUUwg c2NyaXB0IDE6ICZsdDtidWlsdGluOiBUUEMtQiAoc29ydCBvZikmZ3Q7DQor IC0gcGVyIGNvbW1hbmQgbGF0ZW5jaWVzIGluIG1zOg0KICAgICAgICAgMC4w MDQzODYgICAgICAgIFxzZXQgbmJyYW5jaGVzIDEgKiA6c2NhbGUNCiAgICAg ICAgIDAuMDAxMzQzICAgICAgICBcc2V0IG50ZWxsZXJzIDEwICogOnNjYWxl DQogICAgICAgICAwLjAwMTIxMiAgICAgICAgXHNldCBuYWNjb3VudHMgMTAw MDAwICogOnNjYWxlDQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMNCmluZGV4IDll NDIyYzUuLjM0MDk2NTkgMTAwNjQ0DQotLS0gYS9zcmMvYmluL3BnYmVuY2gv cGdiZW5jaC5jDQorKysgYi9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jDQpA QCAtMTg5LDcgKzE4OSw3IEBAIHR5cGVkZWYgc3RydWN0DQogCWNoYXIJICAg KnZhbHVlOwkJCS8qIGl0cyB2YWx1ZSAqLw0KIH0gVmFyaWFibGU7DQogDQot I2RlZmluZSBNQVhfRklMRVMJCTEyOAkJLyogbWF4IG51bWJlciBvZiBTUUwg c2NyaXB0IGZpbGVzIGFsbG93ZWQgKi8NCisjZGVmaW5lIE1BWF9TQ1JJUFRT CQkxMjgJCS8qIG1heCBudW1iZXIgb2YgU1FMIHNjcmlwdHMgYWxsb3dlZCAq Lw0KICNkZWZpbmUgU0hFTExfQ09NTUFORF9TSVpFCTI1NiAvKiBtYXhpbXVt IHNpemUgYWxsb3dlZCBmb3Igc2hlbGwgY29tbWFuZCAqLw0KIA0KIC8qDQpA QCAtMjExLDggKzIxMSw4IEBAIHR5cGVkZWYgc3RydWN0DQogCWluc3RyX3Rp bWUJdHhuX2JlZ2luOwkJLyogdXNlZCBmb3IgbWVhc3VyaW5nIHNjaGVkdWxl IGxhZyB0aW1lcyAqLw0KIAlpbnN0cl90aW1lCXN0bXRfYmVnaW47CQkvKiB1 c2VkIGZvciBtZWFzdXJpbmcgc3RhdGVtZW50IGxhdGVuY2llcyAqLw0KIAli b29sCQlpc190aHJvdHRsZWQ7CS8qIHdoZXRoZXIgdHJhbnNhY3Rpb24gdGhy b3R0bGluZyBpcyBkb25lICovDQotCWludAkJCXVzZV9maWxlOwkJLyogaW5k ZXggaW4gc3FsX2ZpbGVzIGZvciB0aGlzIGNsaWVudCAqLw0KLQlib29sCQlw cmVwYXJlZFtNQVhfRklMRVNdOw0KKwlpbnQJCQl1c2VfZmlsZTsJCS8qIGlu ZGV4IGluIHNxbF9zY3JpcHRzIGZvciB0aGlzIGNsaWVudCAqLw0KKwlib29s CQlwcmVwYXJlZFtNQVhfU0NSSVBUU107IC8qIHdoZXRoZXIgY2xpZW50IHBy ZXBhcmVkIHRoZSBzY3JpcHQgKi8NCiANCiAJLyogcGVyIGNsaWVudCBjb2xs ZWN0ZWQgc3RhdHMgKi8NCiAJaW50CQkJY250OwkJCS8qIHhhY3RzIGNvdW50 ICovDQpAQCAtMjc2LDYgKzI3NiwxNCBAQCB0eXBlZGVmIHN0cnVjdA0KIAlQ Z0JlbmNoRXhwciAqZXhwcjsJCQkvKiBwYXJzZWQgZXhwcmVzc2lvbiAqLw0K IH0gQ29tbWFuZDsNCiANCisvKiBTUUwgc2NyaXB0IHRvIGJlIGV4ZWN1dGVk LCBlaXRoZXIgYSBmaWxlIG9yIGFuIGludGVybmFsIHNjcmlwdA0KKyAqLw0K K3R5cGVkZWYgc3RydWN0DQorew0KKwljb25zdCBjaGFyICpuYW1lOw0KKwlD b21tYW5kICAgKipjb21tYW5kczsNCit9IFNRTFNjcmlwdDsNCisNCiB0eXBl ZGVmIHN0cnVjdA0KIHsNCiANCkBAIC0yOTYsMTMgKzMwNCwyMSBAQCB0eXBl ZGVmIHN0cnVjdA0KIAlkb3VibGUJCXN1bTJfbGFnOwkJLyogc3VtKGxhZyps YWcpICovDQogfSBBZ2dWYWxzOw0KIA0KLXN0YXRpYyBDb21tYW5kICoqc3Fs X2ZpbGVzW01BWF9GSUxFU107CS8qIFNRTCBzY3JpcHQgZmlsZXMgKi8NCi1z dGF0aWMgaW50CW51bV9maWxlczsJCQkvKiBudW1iZXIgb2Ygc2NyaXB0IGZp bGVzICovDQorc3RhdGljIFNRTFNjcmlwdCBzcWxfc2NyaXB0W01BWF9TQ1JJ UFRTXTsJLyogU1FMIHNjcmlwdCBmaWxlcyAqLw0KK3N0YXRpYyBpbnQJbnVt X3NjcmlwdHM7CQkJLyogbnVtYmVyIG9mIHNjcmlwdHMgaW4gc3FsX3Njcmlw dFtdICovDQogc3RhdGljIGludAludW1fY29tbWFuZHMgPSAwOwkvKiB0b3Rh bCBudW1iZXIgb2YgQ29tbWFuZCBzdHJ1Y3RzICovDQogc3RhdGljIGludAlk ZWJ1ZyA9IDA7CQkJLyogZGVidWcgZmxhZyAqLw0KIA0KLS8qIGRlZmF1bHQg c2NlbmFyaW8gKi8NCi1zdGF0aWMgY2hhciAqdHBjX2IgPSB7DQorLyogRGVm aW5lIGJ1aWx0aW4gdGVzdCBzY3JpcHRzICovDQorI2RlZmluZSBOX0JVSUxU SU4gMw0KK3N0YXRpYyBzdHJ1Y3Qgew0KKwljaGFyICpuYW1lOyAgIC8qIHZl cnkgc2hvcnQgbmFtZSBmb3IgLWIgLi4uKi8NCisJY2hhciAqZGVzYzsgICAv KiBzaG9ydCBkZXNjcmlwdGlvbiAqLw0KKwljaGFyICpzY3JpcHQ7IC8qIGFj dHVhbCBwZ2JlbmNoIHNjcmlwdCAqLw0KK30gYnVpbHRpbl9zY3JpcHRbXSA9 IHsNCit7DQorCSJ0cGNiLWxpa2UiLA0KKwkiPGJ1aWx0aW46IFRQQy1CIChz b3J0IG9mKT4iLA0KIAkiXFxzZXQgbmJyYW5jaGVzICIgQ3BwQXNTdHJpbmcy KG5icmFuY2hlcykgIiAqIDpzY2FsZVxuIg0KIAkiXFxzZXQgbnRlbGxlcnMg IiBDcHBBc1N0cmluZzIobnRlbGxlcnMpICIgKiA6c2NhbGVcbiINCiAJIlxc c2V0IG5hY2NvdW50cyAiIENwcEFzU3RyaW5nMihuYWNjb3VudHMpICIgKiA6 c2NhbGVcbiINCkBAIC0zMTcsMTAgKzMzMywxMCBAQCBzdGF0aWMgY2hhciAq dHBjX2IgPSB7DQogCSJVUERBVEUgcGdiZW5jaF9icmFuY2hlcyBTRVQgYmJh bGFuY2UgPSBiYmFsYW5jZSArIDpkZWx0YSBXSEVSRSBiaWQgPSA6YmlkO1xu Ig0KIAkiSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwg YWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoOnRpZCwgOmJpZCwgOmFpZCwg OmRlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iDQogCSJFTkQ7XG4iDQot fTsNCi0NCi0vKiAtTiBjYXNlICovDQotc3RhdGljIGNoYXIgKnNpbXBsZV91 cGRhdGUgPSB7DQorfSwNCit7DQorCSJzaW1wbGUtdXBkYXRlIiwNCisJIjxi dWlsdGluOiBzaW1wbGUgdXBkYXRlPiIsDQogCSJcXHNldCBuYnJhbmNoZXMg IiBDcHBBc1N0cmluZzIobmJyYW5jaGVzKSAiICogOnNjYWxlXG4iDQogCSJc XHNldCBudGVsbGVycyAiIENwcEFzU3RyaW5nMihudGVsbGVycykgIiAqIDpz Y2FsZVxuIg0KIAkiXFxzZXQgbmFjY291bnRzICIgQ3BwQXNTdHJpbmcyKG5h Y2NvdW50cykgIiAqIDpzY2FsZVxuIg0KQEAgLTMzMywxNCArMzQ5LDM1IEBA IHN0YXRpYyBjaGFyICpzaW1wbGVfdXBkYXRlID0gew0KIAkiU0VMRUNUIGFi YWxhbmNlIEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBhaWQgPSA6YWlk O1xuIg0KIAkiSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJp ZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoOnRpZCwgOmJpZCwgOmFp ZCwgOmRlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iDQogCSJFTkQ7XG4i DQotfTsNCi0NCi0vKiAtUyBjYXNlICovDQotc3RhdGljIGNoYXIgKnNlbGVj dF9vbmx5ID0gew0KK30sDQorew0KKwkic2VsZWN0LW9ubHkiLA0KKwkiPGJ1 aWx0aW46IHNlbGVjdCBvbmx5PiIsDQogCSJcXHNldCBuYWNjb3VudHMgIiBD cHBBc1N0cmluZzIobmFjY291bnRzKSAiICogOnNjYWxlXG4iDQogCSJcXHNl dHJhbmRvbSBhaWQgMSA6bmFjY291bnRzXG4iDQogCSJTRUxFQ1QgYWJhbGFu Y2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IDphaWQ7XG4i DQotfTsNCit9IH07DQorDQorc3RhdGljIGNoYXIgKg0KK2ZpbmRfYnVpbHRp bihjb25zdCBjaGFyICpuYW1lLCBjaGFyICoqZGVzYykNCit7DQorCWludAkJ bGVuID0gc3RybGVuKG5hbWUpLCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwg Tl9CVUlMVElOOyBpKyspDQorCXsNCisJCWlmIChzdHJuY21wKGJ1aWx0aW5f c2NyaXB0W2ldLm5hbWUsIG5hbWUsIGxlbikgPT0gMCkNCisJCXsNCisJCQkq ZGVzYyA9IGJ1aWx0aW5fc2NyaXB0W2ldLmRlc2M7DQorCQkJcmV0dXJuIGJ1 aWx0aW5fc2NyaXB0W2ldLnNjcmlwdDsNCisJCX0NCisJfQ0KKwlmcHJpbnRm KHN0ZGVyciwgIm5vIGJ1aWx0aW4gZm91bmQgZm9yIFwiJXNcIiAoYXZhaWxh YmxlIGNob2ljZXM6IiwgbmFtZSk7DQorCWZvciAoaSA9IDA7IGkgPCBOX0JV SUxUSU47IGkrKykNCisJCWZwcmludGYoc3RkZXJyLCAiIFwiJXNcIiIsIGJ1 aWx0aW5fc2NyaXB0W2ldLm5hbWUpOw0KKwlmcHJpbnRmKHN0ZGVyciwgIilc biIpOw0KKwlleGl0KDEpOw0KK30NCisNCiANCiAvKiBGdW5jdGlvbiBwcm90 b3R5cGVzICovDQogc3RhdGljIHZvaWQgc2V0YWxhcm0oaW50IHNlY29uZHMp Ow0KQEAgLTM2NywyMyArNDA0LDI4IEBAIHVzYWdlKHZvaWQpDQogCSAiICAt LXRhYmxlc3BhY2U9VEFCTEVTUEFDRSAgY3JlYXRlIHRhYmxlcyBpbiB0aGUg c3BlY2lmaWVkIHRhYmxlc3BhY2VcbiINCiAJCSAgICIgIC0tdW5sb2dnZWQt dGFibGVzICAgICAgICBjcmVhdGUgdGFibGVzIGFzIHVubG9nZ2VkIHRhYmxl c1xuIg0KIAkJICAgIlxuQmVuY2htYXJraW5nIG9wdGlvbnM6XG4iDQorCQkg ICAiICAtYiwgLS1idWlsdGluPU5BTUUgICAgICAgYWRkIGJ1aXRpbiBzY3Jp cHQgYW1vbmcgXCJ0cGNiLWxpa2VcIlxuIg0KKwkJICAgIiAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwic2ltcGxlLXVwZGF0ZVwiIGFuZCBcInNlbGVj dC1vbmx5XCIuXG4iDQorDQogCQkgICAiICAtYywgLS1jbGllbnQ9TlVNICAg ICAgICAgbnVtYmVyIG9mIGNvbmN1cnJlbnQgZGF0YWJhc2UgY2xpZW50cyAo ZGVmYXVsdDogMSlcbiINCiAJCSAgICIgIC1DLCAtLWNvbm5lY3QgICAgICAg ICAgICBlc3RhYmxpc2ggbmV3IGNvbm5lY3Rpb24gZm9yIGVhY2ggdHJhbnNh Y3Rpb25cbiINCiAJCSAgICIgIC1ELCAtLWRlZmluZT1WQVJOQU1FPVZBTFVF XG4iDQogCSAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSB2 YXJpYWJsZSBmb3IgdXNlIGJ5IGN1c3RvbSBzY3JpcHRcbiINCi0JCSAiICAt ZiwgLS1maWxlPUZJTEVOQU1FICAgICAgcmVhZCB0cmFuc2FjdGlvbiBzY3Jp cHQgZnJvbSBGSUxFTkFNRVxuIg0KKwkJICIgIC1mLCAtLWZpbGU9RklMRU5B TUUgICAgICBhZGQgdHJhbnNhY3Rpb24gc2NyaXB0IGZyb20gRklMRU5BTUVc biINCiAJCSAgICIgIC1qLCAtLWpvYnM9TlVNICAgICAgICAgICBudW1iZXIg b2YgdGhyZWFkcyAoZGVmYXVsdDogMSlcbiINCiAJCSAgICIgIC1sLCAtLWxv ZyAgICAgICAgICAgICAgICB3cml0ZSB0cmFuc2FjdGlvbiB0aW1lcyB0byBs b2cgZmlsZVxuIg0KIAkiICAtTCwgLS1sYXRlbmN5LWxpbWl0PU5VTSAgY291 bnQgdHJhbnNhY3Rpb25zIGxhc3RpbmcgbW9yZSB0aGFuIE5VTSBtcyBhcyBs YXRlXG4iDQogCQkgICAiICAtTSwgLS1wcm90b2NvbD1zaW1wbGV8ZXh0ZW5k ZWR8cHJlcGFyZWRcbiINCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICBwcm90b2NvbCBmb3Igc3VibWl0dGluZyBxdWVyaWVzIChkZWZhdWx0 OiBzaW1wbGUpXG4iDQogCQkgICAiICAtbiwgLS1uby12YWN1dW0gICAgICAg ICAgZG8gbm90IHJ1biBWQUNVVU0gYmVmb3JlIHRlc3RzXG4iDQotCQkgICAi ICAtTiwgLS1za2lwLXNvbWUtdXBkYXRlcyAgc2tpcCB1cGRhdGVzIG9mIHBn YmVuY2hfdGVsbGVycyBhbmQgcGdiZW5jaF9icmFuY2hlc1xuIg0KKwkJICAg IiAgLU4sIC0tc2tpcC1zb21lLXVwZGF0ZXMgIHNraXAgdXBkYXRlcyBvZiBw Z2JlbmNoX3RlbGxlcnMgYW5kIHBnYmVuY2hfYnJhbmNoZXMsXG4iDQorCQkg ICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBhcyBcIi1iIHNp bXBsZS11cGRhdGVcIlxuIg0KIAkJICAgIiAgLVAsIC0tcHJvZ3Jlc3M9TlVN ICAgICAgIHNob3cgdGhyZWFkIHByb2dyZXNzIHJlcG9ydCBldmVyeSBOVU0g c2Vjb25kc1xuIg0KIAkJICAgIiAgLXIsIC0tcmVwb3J0LWxhdGVuY2llcyAg IHJlcG9ydCBhdmVyYWdlIGxhdGVuY3kgcGVyIGNvbW1hbmRcbiINCiAJCSIg IC1SLCAtLXJhdGU9TlVNICAgICAgICAgICB0YXJnZXQgcmF0ZSBpbiB0cmFu c2FjdGlvbnMgcGVyIHNlY29uZFxuIg0KIAkJICAgIiAgLXMsIC0tc2NhbGU9 TlVNICAgICAgICAgIHJlcG9ydCB0aGlzIHNjYWxlIGZhY3RvciBpbiBvdXRw dXRcbiINCi0JCSAgICIgIC1TLCAtLXNlbGVjdC1vbmx5ICAgICAgICBwZXJm b3JtIFNFTEVDVC1vbmx5IHRyYW5zYWN0aW9uc1xuIg0KKwkJICAgIiAgLVMs IC0tc2VsZWN0LW9ubHkgICAgICAgIHBlcmZvcm0gU0VMRUNULW9ubHkgdHJh bnNhY3Rpb25zLFxuIg0KKwkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNhbWUgYXMgXCItYiBzZWxlY3Qtb25seVwiXG4iDQogCQkgICAiICAt dCwgLS10cmFuc2FjdGlvbnM9TlVNICAgbnVtYmVyIG9mIHRyYW5zYWN0aW9u cyBlYWNoIGNsaWVudCBydW5zIChkZWZhdWx0OiAxMClcbiINCiAJCSAiICAt VCwgLS10aW1lPU5VTSAgICAgICAgICAgZHVyYXRpb24gb2YgYmVuY2htYXJr IHRlc3QgaW4gc2Vjb25kc1xuIg0KIAkJICAgIiAgLXYsIC0tdmFjdXVtLWFs bCAgICAgICAgIHZhY3V1bSBhbGwgZm91ciBzdGFuZGFyZCB0YWJsZXMgYmVm b3JlIHRlc3RzXG4iDQpAQCAtMTEyNCw2ICsxMTY2LDEyIEBAIGFnZ192YWxz X2luaXQoQWdnVmFscyAqYWdncywgaW5zdHJfdGltZSBzdGFydCkNCiAJYWdn cy0+c3RhcnRfdGltZSA9IElOU1RSX1RJTUVfR0VUX0RPVUJMRShzdGFydCk7 DQogfQ0KIA0KK3N0YXRpYyBpbnQNCitjaG9vc2VTY3JpcHQoVFN0YXRlICp0 aHJlYWQpDQorew0KKwlyZXR1cm4gZ2V0cmFuZCh0aHJlYWQsIDAsIG51bV9z Y3JpcHRzIC0gMSk7DQorfQ0KKw0KIC8qIHJldHVybiBmYWxzZSBpZmYgY2xp ZW50IHNob3VsZCBiZSBkaXNjb25uZWN0ZWQgKi8NCiBzdGF0aWMgYm9vbA0K IGRvQ3VzdG9tKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUgKnN0LCBpbnN0cl90 aW1lICpjb25uX3RpbWUsIEZJTEUgKmxvZ2ZpbGUsIEFnZ1ZhbHMgKmFnZykN CkBAIC0xMTQ0LDcgKzExOTIsNyBAQCBkb0N1c3RvbShUU3RhdGUgKnRocmVh ZCwgQ1N0YXRlICpzdCwgaW5zdHJfdGltZSAqY29ubl90aW1lLCBGSUxFICps b2dmaWxlLCBBZ2dWYQ0KIHRvcDoNCiAJSU5TVFJfVElNRV9TRVRfWkVSTyhu b3cpOw0KIA0KLQljb21tYW5kcyA9IHNxbF9maWxlc1tzdC0+dXNlX2ZpbGVd Ow0KKwljb21tYW5kcyA9IHNxbF9zY3JpcHRbc3QtPnVzZV9maWxlXS5jb21t YW5kczsNCiANCiAJLyoNCiAJICogSGFuZGxlIHRocm90dGxpbmcgb25jZSBw ZXIgdHJhbnNhY3Rpb24gYnkgc2xlZXBpbmcuICBJdCBpcyBzaW1wbGVyIHRv DQpAQCAtMTMyOCw4ICsxMzc2LDggQEAgdG9wOg0KIAkJaWYgKGNvbW1hbmRz W3N0LT5zdGF0ZV0gPT0gTlVMTCkNCiAJCXsNCiAJCQlzdC0+c3RhdGUgPSAw Ow0KLQkJCXN0LT51c2VfZmlsZSA9IChpbnQpIGdldHJhbmQodGhyZWFkLCAw LCBudW1fZmlsZXMgLSAxKTsNCi0JCQljb21tYW5kcyA9IHNxbF9maWxlc1tz dC0+dXNlX2ZpbGVdOw0KKwkJCXN0LT51c2VfZmlsZSA9IG51bV9zY3JpcHRz PT0xPyAwOiBjaG9vc2VTY3JpcHQodGhyZWFkKTsNCisJCQljb21tYW5kcyA9 IHNxbF9zY3JpcHRbc3QtPnVzZV9maWxlXS5jb21tYW5kczsNCiAJCQlzdC0+ aXNfdGhyb3R0bGVkID0gZmFsc2U7DQogDQogCQkJLyoNCkBAIC0yNDg4LDcg KzI1MzYsNyBAQCByZWFkX2xpbmVfZnJvbV9maWxlKEZJTEUgKmZkKQ0KIAly ZXR1cm4gTlVMTDsNCiB9DQogDQotc3RhdGljIGludA0KK3N0YXRpYyBDb21t YW5kICoqDQogcHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lKQ0KIHsNCiAj ZGVmaW5lIENPTU1BTkRTX0FMTE9DX05VTSAxMjgNCkBAIC0yNDk2LDE1ICsy NTQ0LDkgQEAgcHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lKQ0KIAlDb21t YW5kICAgKipteV9jb21tYW5kczsNCiAJRklMRQkgICAqZmQ7DQogCWludAkJ CWxpbmVubywNCi0JCQkJaW5kZXg7DQorCQkJCWluZGV4LA0KKwkJCQlhbGxv Y19udW07DQogCWNoYXIJICAgKmJ1ZjsNCi0JaW50CQkJYWxsb2NfbnVtOw0K LQ0KLQlpZiAobnVtX2ZpbGVzID49IE1BWF9GSUxFUykNCi0Jew0KLQkJZnBy aW50ZihzdGRlcnIsICJhdCBtb3N0ICVkIFNRTCBmaWxlcyBhcmUgYWxsb3dl ZFxuIiwgTUFYX0ZJTEVTKTsNCi0JCWV4aXQoMSk7DQotCX0NCiANCiAJYWxs b2NfbnVtID0gQ09NTUFORFNfQUxMT0NfTlVNOw0KIAlteV9jb21tYW5kcyA9 IChDb21tYW5kICoqKSBwZ19tYWxsb2Moc2l6ZW9mKENvbW1hbmQgKikgKiBh bGxvY19udW0pOw0KQEAgLTI1MTYsNyArMjU1OCw3IEBAIHByb2Nlc3NfZmls ZShjaGFyICpmaWxlbmFtZSkNCiAJCWZwcmludGYoc3RkZXJyLCAiY291bGQg bm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iLA0KIAkJCQlmaWxlbmFtZSwg c3RyZXJyb3IoZXJybm8pKTsNCiAJCXBnX2ZyZWUobXlfY29tbWFuZHMpOw0K LQkJcmV0dXJuIGZhbHNlOw0KKwkJcmV0dXJuIE5VTEw7DQogCX0NCiANCiAJ bGluZW5vID0gMDsNCkBAIC0yNTQ4LDEzICsyNTkwLDExIEBAIHByb2Nlc3Nf ZmlsZShjaGFyICpmaWxlbmFtZSkNCiANCiAJbXlfY29tbWFuZHNbaW5kZXhd ID0gTlVMTDsNCiANCi0Jc3FsX2ZpbGVzW251bV9maWxlcysrXSA9IG15X2Nv bW1hbmRzOw0KLQ0KLQlyZXR1cm4gdHJ1ZTsNCisJcmV0dXJuIG15X2NvbW1h bmRzOw0KIH0NCiANCiBzdGF0aWMgQ29tbWFuZCAqKg0KLXByb2Nlc3NfYnVp bHRpbihjaGFyICp0YiwgY29uc3QgY2hhciAqc291cmNlKQ0KK3Byb2Nlc3Nf YnVpbHRpbihjb25zdCBjaGFyICp0YiwgY29uc3QgY2hhciAqc291cmNlKQ0K IHsNCiAjZGVmaW5lIENPTU1BTkRTX0FMTE9DX05VTSAxMjgNCiANCkBAIC0y NjA4LDkgKzI2NDgsMjkgQEAgcHJvY2Vzc19idWlsdGluKGNoYXIgKnRiLCBj b25zdCBjaGFyICpzb3VyY2UpDQogCXJldHVybiBteV9jb21tYW5kczsNCiB9 DQogDQorc3RhdGljIHZvaWQNCithZGRTY3JpcHQoY29uc3QgY2hhciAqbmFt ZSwgQ29tbWFuZCAqKiBjb21tYW5kcykNCit7DQorCWlmIChjb21tYW5kcyA9 PSBOVUxMKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgImVtcHR5IGNvbW1h bmRzIGZvciAlc1xuIiwgbmFtZSk7DQorCQlleGl0KDEpOw0KKwl9DQorDQor CWlmIChudW1fc2NyaXB0cyA+PSBNQVhfU0NSSVBUUykNCisJew0KKwkJZnBy aW50ZihzdGRlcnIsICJhdCBtb3N0ICVkIFNRTCBzY3JpcHRzIGFyZSBhbGxv d2VkXG4iLCBNQVhfU0NSSVBUUyk7DQorCQlleGl0KDEpOw0KKwl9DQorDQor CXNxbF9zY3JpcHRbbnVtX3NjcmlwdHNdLm5hbWUgPSBuYW1lOw0KKwlzcWxf c2NyaXB0W251bV9zY3JpcHRzXS5jb21tYW5kcyA9IGNvbW1hbmRzOw0KKwlu dW1fc2NyaXB0cysrOw0KK30NCisNCiAvKiBwcmludCBvdXQgcmVzdWx0cyAq Lw0KIHN0YXRpYyB2b2lkDQotcHJpbnRSZXN1bHRzKGludCB0dHlwZSwgaW50 NjQgbm9ybWFsX3hhY3RzLCBpbnQgbmNsaWVudHMsDQorcHJpbnRSZXN1bHRz KGludDY0IG5vcm1hbF94YWN0cywgaW50IG5jbGllbnRzLA0KIAkJCSBUU3Rh dGUgKnRocmVhZHMsIGludCBudGhyZWFkcywNCiAJCQkgaW5zdHJfdGltZSB0 b3RhbF90aW1lLCBpbnN0cl90aW1lIGNvbm5fdG90YWxfdGltZSwNCiAJCQkg aW50NjQgdG90YWxfbGF0ZW5jaWVzLCBpbnQ2NCB0b3RhbF9zcWxhdHMsDQpA QCAtMjYyMCwyMyArMjY4MCwxNCBAQCBwcmludFJlc3VsdHMoaW50IHR0eXBl LCBpbnQ2NCBub3JtYWxfeGFjdHMsIGludCBuY2xpZW50cywNCiAJZG91Ymxl CQl0aW1lX2luY2x1ZGUsDQogCQkJCXRwc19pbmNsdWRlLA0KIAkJCQl0cHNf ZXhjbHVkZTsNCi0JY2hhcgkgICAqczsNCiANCiAJdGltZV9pbmNsdWRlID0g SU5TVFJfVElNRV9HRVRfRE9VQkxFKHRvdGFsX3RpbWUpOw0KIAl0cHNfaW5j bHVkZSA9IG5vcm1hbF94YWN0cyAvIHRpbWVfaW5jbHVkZTsNCiAJdHBzX2V4 Y2x1ZGUgPSBub3JtYWxfeGFjdHMgLyAodGltZV9pbmNsdWRlIC0NCiAJCQkJ CQkoSU5TVFJfVElNRV9HRVRfRE9VQkxFKGNvbm5fdG90YWxfdGltZSkgLyBu Y2xpZW50cykpOw0KIA0KLQlpZiAodHR5cGUgPT0gMCkNCi0JCXMgPSAiVFBD LUIgKHNvcnQgb2YpIjsNCi0JZWxzZSBpZiAodHR5cGUgPT0gMikNCi0JCXMg PSAiVXBkYXRlIG9ubHkgcGdiZW5jaF9hY2NvdW50cyI7DQotCWVsc2UgaWYg KHR0eXBlID09IDEpDQotCQlzID0gIlNFTEVDVCBvbmx5IjsNCi0JZWxzZQ0K LQkJcyA9ICJDdXN0b20gcXVlcnkiOw0KLQ0KLQlwcmludGYoInRyYW5zYWN0 aW9uIHR5cGU6ICVzXG4iLCBzKTsNCisJcHJpbnRmKCJ0cmFuc2FjdGlvbiB0 eXBlOiAlc1xuIiwNCisJCSAgIG51bV9zY3JpcHRzID09IDE/IHNxbF9zY3Jp cHRbMF0ubmFtZTogIm11bHRpcGxlIHNjcmlwdHMiKTsNCiAJcHJpbnRmKCJz Y2FsaW5nIGZhY3RvcjogJWRcbiIsIHNjYWxlKTsNCiAJcHJpbnRmKCJxdWVy eSBtb2RlOiAlc1xuIiwgUVVFUllNT0RFW3F1ZXJ5bW9kZV0pOw0KIAlwcmlu dGYoIm51bWJlciBvZiBjbGllbnRzOiAlZFxuIiwgbmNsaWVudHMpOw0KQEAg LTI3MDUsMTYgKzI3NTYsMTQgQEAgcHJpbnRSZXN1bHRzKGludCB0dHlwZSwg aW50NjQgbm9ybWFsX3hhY3RzLCBpbnQgbmNsaWVudHMsDQogCXsNCiAJCWlu dAkJCWk7DQogDQotCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2ZpbGVzOyBpKysp DQorCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3NjcmlwdHM7IGkrKykNCiAJCXsN CiAJCQlDb21tYW5kICAgKipjb21tYW5kczsNCiANCi0JCQlpZiAobnVtX2Zp bGVzID4gMSkNCi0JCQkJcHJpbnRmKCJzdGF0ZW1lbnQgbGF0ZW5jaWVzIGlu IG1pbGxpc2Vjb25kcywgZmlsZSAlZDpcbiIsIGkgKyAxKTsNCi0JCQllbHNl DQotCQkJCXByaW50Zigic3RhdGVtZW50IGxhdGVuY2llcyBpbiBtaWxsaXNl Y29uZHM6XG4iKTsNCisJCQlwcmludGYoIlNRTCBzY3JpcHQgJWQ6ICVzXG4i LCBpKzEsIHNxbF9zY3JpcHRbaV0ubmFtZSk7DQorCQkJcHJpbnRmKCIgLSBw ZXIgY29tbWFuZCBsYXRlbmNpZXMgaW4gbXM6XG4iKTsNCiANCi0JCQlmb3Ig KGNvbW1hbmRzID0gc3FsX2ZpbGVzW2ldOyAqY29tbWFuZHMgIT0gTlVMTDsg Y29tbWFuZHMrKykNCisJCQlmb3IgKGNvbW1hbmRzID0gc3FsX3NjcmlwdFtp XS5jb21tYW5kczsgKmNvbW1hbmRzICE9IE5VTEw7IGNvbW1hbmRzKyspDQog CQkJew0KIAkJCQlDb21tYW5kICAgICpjb21tYW5kID0gKmNvbW1hbmRzOw0K IAkJCQlpbnQJCQljbnVtID0gY29tbWFuZC0+Y29tbWFuZF9udW07DQpAQCAt Mjc1Miw2ICsyODAxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp DQogew0KIAlzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9 IHsNCiAJCS8qIHN5c3RlbWF0aWMgbG9uZy9zaG9ydCBuYW1lZCBvcHRpb25z ICovDQorCQl7InRwYy1iIiwgbm9fYXJndW1lbnQsIE5VTEwsICdiJ30sDQog CQl7ImNsaWVudCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnYyd9LA0K IAkJeyJjb25uZWN0Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdDJ30sDQogCQl7 ImRlYnVnIiwgbm9fYXJndW1lbnQsIE5VTEwsICdkJ30sDQpAQCAtMjc5NCwx NCArMjg0NCwxMiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJ aW50CQkJaXNfaW5pdF9tb2RlID0gMDsJCS8qIGluaXRpYWxpemUgbW9kZT8g Ki8NCiAJaW50CQkJaXNfbm9fdmFjdXVtID0gMDsJCS8qIG5vIHZhY3V1bSBh dCBhbGwgYmVmb3JlIHRlc3Rpbmc/ICovDQogCWludAkJCWRvX3ZhY3V1bV9h Y2NvdW50cyA9IDA7IC8qIGRvIHZhY3V1bSBhY2NvdW50cyBiZWZvcmUgdGVz dGluZz8gKi8NCi0JaW50CQkJdHR5cGUgPSAwOwkJLyogdHJhbnNhY3Rpb24g dHlwZS4gMDogVFBDLUIsIDE6IFNFTEVDVCBvbmx5LA0KLQkJCQkJCQkJICog Mjogc2tpcCB1cGRhdGUgb2YgYnJhbmNoZXMgYW5kIHRlbGxlcnMgKi8NCiAJ aW50CQkJb3B0aW5kZXg7DQotCWNoYXIJICAgKmZpbGVuYW1lID0gTlVMTDsN CiAJYm9vbAkJc2NhbGVfZ2l2ZW4gPSBmYWxzZTsNCiANCiAJYm9vbAkJYmVu Y2htYXJraW5nX29wdGlvbl9zZXQgPSBmYWxzZTsNCiAJYm9vbAkJaW5pdGlh bGl6YXRpb25fb3B0aW9uX3NldCA9IGZhbHNlOw0KKwlib29sCQlpbnRlcm5h bF9zY3JpcHRfdXNlZCA9IGZhbHNlOw0KIA0KIAlDU3RhdGUJICAgKnN0YXRl OwkJCS8qIHN0YXR1cyBvZiBjbGllbnRzICovDQogCVRTdGF0ZQkgICAqdGhy ZWFkczsJCS8qIGFycmF5IG9mIHRocmVhZCAqLw0KQEAgLTI4MTYsNiArMjg2 NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIAlpbnQ2NAkJ dGhyb3R0bGVfbGFnX21heCA9IDA7DQogCWludDY0CQl0aHJvdHRsZV9sYXRl bmN5X3NraXBwZWQgPSAwOw0KIAlpbnQ2NAkJbGF0ZW5jeV9sYXRlID0gMDsN CisJY2hhcgkgICAqZGVzYzsNCiANCiAJaW50CQkJaTsNCiAJaW50CQkJbmNs aWVudHNfZGVhbHQ7DQpAQCAtMjg2MSw3ICsyOTEwLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpDQogCXN0YXRlID0gKENTdGF0ZSAqKSBwZ19t YWxsb2Moc2l6ZW9mKENTdGF0ZSkpOw0KIAltZW1zZXQoc3RhdGUsIDAsIHNp emVvZihDU3RhdGUpKTsNCiANCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmco YXJnYywgYXJndiwgImloOm52cDpkcVNOYzpqOkNyczp0OlQ6VTpsZjpEOkY6 TTpQOlI6TDoiLCBsb25nX29wdGlvbnMsICZvcHRpbmRleCkpICE9IC0xKQ0K Kwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiaWg6bnZw OmRxYjpTTmM6ajpDcnM6dDpUOlU6bGY6RDpGOk06UDpSOkw6IiwgbG9uZ19v cHRpb25zLCAmb3B0aW5kZXgpKSAhPSAtMSkNCiAJew0KIAkJc3dpdGNoIChj KQ0KIAkJew0KQEAgLTI4ODMsMTQgKzI5MzIsNiBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikNCiAJCQljYXNlICdkJzoNCiAJCQkJZGVidWcrKzsN CiAJCQkJYnJlYWs7DQotCQkJY2FzZSAnUyc6DQotCQkJCXR0eXBlID0gMTsN Ci0JCQkJYmVuY2htYXJraW5nX29wdGlvbl9zZXQgPSB0cnVlOw0KLQkJCQli cmVhazsNCi0JCQljYXNlICdOJzoNCi0JCQkJdHR5cGUgPSAyOw0KLQkJCQli ZW5jaG1hcmtpbmdfb3B0aW9uX3NldCA9IHRydWU7DQotCQkJCWJyZWFrOw0K IAkJCWNhc2UgJ2MnOg0KIAkJCQliZW5jaG1hcmtpbmdfb3B0aW9uX3NldCA9 IHRydWU7DQogCQkJCW5jbGllbnRzID0gYXRvaShvcHRhcmcpOw0KQEAgLTI5 OTMsMTIgKzMwMzQsMzkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp DQogCQkJCWluaXRpYWxpemF0aW9uX29wdGlvbl9zZXQgPSB0cnVlOw0KIAkJ CQl1c2VfcXVpZXQgPSB0cnVlOw0KIAkJCQlicmVhazsNCisJCQkJLyogd2hh dCB0byBydW4gKi8NCisJCQljYXNlICdiJzoNCisNCisJCQkJaWYgKHN0cmNt cChvcHRhcmcsICJsaXN0IikgPT0gMCkNCisJCQkJew0KKwkJCQkJaW50IGk7 DQorCQkJCQlmcHJpbnRmKHN0ZG91dCwgIiVkIGJ1aWx0aW4gc2NyaXB0czog IiwgTl9CVUlMVElOKTsNCisJCQkJCWZvciAoaSA9IDA7IGkgPCBOX0JVSUxU SU47IGkrKykNCisJCQkJCQlmcHJpbnRmKHN0ZG91dCwgIiVzICIsIGJ1aWx0 aW5fc2NyaXB0W2ldLm5hbWUpOw0KKwkJCQkJZnByaW50ZihzdGRvdXQsICJc biIpOw0KKwkJCQkJZXhpdCgwKTsNCisJCQkJfQ0KKw0KKwkJCQlhZGRTY3Jp cHQoZGVzYywgcHJvY2Vzc19idWlsdGluKA0KKwkJCQkJCQkgIGZpbmRfYnVp bHRpbihvcHRhcmcsICZkZXNjKSwgZGVzYykpOw0KKwkJCQliZW5jaG1hcmtp bmdfb3B0aW9uX3NldCA9IHRydWU7DQorCQkJCWludGVybmFsX3NjcmlwdF91 c2VkID0gdHJ1ZTsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSAnUyc6DQorCQkJ CWFkZFNjcmlwdChkZXNjLCBwcm9jZXNzX2J1aWx0aW4oDQorCQkJCQkJCSAg ZmluZF9idWlsdGluKCJzZWxlY3Qtb25seSIsICZkZXNjKSwgZGVzYykpOw0K KwkJCQliZW5jaG1hcmtpbmdfb3B0aW9uX3NldCA9IHRydWU7DQorCQkJCWlu dGVybmFsX3NjcmlwdF91c2VkID0gdHJ1ZTsNCisJCQkJYnJlYWs7DQorCQkJ Y2FzZSAnTic6DQorCQkJCWFkZFNjcmlwdChkZXNjLCBwcm9jZXNzX2J1aWx0 aW4oDQorCQkJCQkJCSAgZmluZF9idWlsdGluKCJzaW1wbGUtdXBkYXRlIiwg JmRlc2MpLCBkZXNjKSk7DQorCQkJCWJlbmNobWFya2luZ19vcHRpb25fc2V0 ID0gdHJ1ZTsNCisJCQkJaW50ZXJuYWxfc2NyaXB0X3VzZWQgPSB0cnVlOw0K KwkJCQlicmVhazsNCiAJCQljYXNlICdmJzoNCisJCQkJYWRkU2NyaXB0KG9w dGFyZywgcHJvY2Vzc19maWxlKG9wdGFyZykpOw0KIAkJCQliZW5jaG1hcmtp bmdfb3B0aW9uX3NldCA9IHRydWU7DQotCQkJCXR0eXBlID0gMzsNCi0JCQkJ ZmlsZW5hbWUgPSBwZ19zdHJkdXAob3B0YXJnKTsNCi0JCQkJaWYgKHByb2Nl c3NfZmlsZShmaWxlbmFtZSkgPT0gZmFsc2UgfHwgKnNxbF9maWxlc1tudW1f ZmlsZXMgLSAxXSA9PSBOVUxMKQ0KLQkJCQkJZXhpdCgxKTsNCiAJCQkJYnJl YWs7DQogCQkJY2FzZSAnRCc6DQogCQkJCXsNCkBAIC0zMDI5LDkgKzMwOTcs OSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCQkJYnJlYWs7 DQogCQkJY2FzZSAnTSc6DQogCQkJCWJlbmNobWFya2luZ19vcHRpb25fc2V0 ID0gdHJ1ZTsNCi0JCQkJaWYgKG51bV9maWxlcyA+IDApDQorCQkJCWlmIChu dW1fc2NyaXB0cyA+IDApDQogCQkJCXsNCi0JCQkJCWZwcmludGYoc3RkZXJy LCAicXVlcnkgbW9kZSAoLU0pIHNob3VsZCBiZSBzcGVjaWZpZWQgYmVmb3Jl IGFueSB0cmFuc2FjdGlvbiBzY3JpcHRzICgtZilcbiIpOw0KKwkJCQkJZnBy aW50ZihzdGRlcnIsICJxdWVyeSBtb2RlICgtTSkgc2hvdWxkIGJlIHNwZWNp ZmllZCBiZWZvcmUgYW55IHRyYW5zYWN0aW9uIHNjcmlwdHMgKC1mIG9yIC1i KVxuIik7DQogCQkJCQlleGl0KDEpOw0KIAkJCQl9DQogCQkJCWZvciAocXVl cnltb2RlID0gMDsgcXVlcnltb2RlIDwgTlVNX1FVRVJZTU9ERTsgcXVlcnlt b2RlKyspDQpAQCAtMzEzMiw2ICszMjAwLDE1IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQ0KIAkJfQ0KIAl9DQogDQorCS8qIHNldCBkZWZhdWx0 IHNjcmlwdCBpZiBub25lICovDQorCWlmIChudW1fc2NyaXB0cyA9PSAwICYm ICFpc19pbml0X21vZGUpDQorCXsNCisJCWFkZFNjcmlwdChkZXNjLCBwcm9j ZXNzX2J1aWx0aW4oDQorCQkJCQkgIGZpbmRfYnVpbHRpbigidHBjYi1saWtl IiwgJmRlc2MpLCBkZXNjKSk7DQorCQliZW5jaG1hcmtpbmdfb3B0aW9uX3Nl dCA9IHRydWU7DQorCQlpbnRlcm5hbF9zY3JpcHRfdXNlZCA9IHRydWU7DQor CX0NCisNCiAJLyoNCiAJICogRG9uJ3QgbmVlZCBtb3JlIHRocmVhZHMgdGhh biB0aGVyZSBhcmUgY2xpZW50cy4gIChUaGlzIGlzIG5vdCBtZXJlbHkgYW4N CiAJICogb3B0aW1pemF0aW9uOyB0aHJvdHRsZV9kZWxheSBpcyBjYWxjdWxh dGVkIGluY29ycmVjdGx5IGJlbG93IGlmIHNvbWUNCkBAIC0zMjYwLDcgKzMz MzcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCWV4aXQo MSk7DQogCX0NCiANCi0JaWYgKHR0eXBlICE9IDMpDQorCWlmIChpbnRlcm5h bF9zY3JpcHRfdXNlZCkNCiAJew0KIAkJLyoNCiAJCSAqIGdldCB0aGUgc2Nh bGluZyBmYWN0b3IgdGhhdCBzaG91bGQgYmUgc2FtZSBhcyBjb3VudCgqKSBm cm9tDQpAQCAtMzM0NCwzMSArMzQyMSw2IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQ0KIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3Rp bWUpOw0KIAlzcmFuZG9tKCh1bnNpZ25lZCBpbnQpIElOU1RSX1RJTUVfR0VU X01JQ1JPU0VDKHN0YXJ0X3RpbWUpKTsNCiANCi0JLyogcHJvY2VzcyBidWls dGluIFNRTCBzY3JpcHRzICovDQotCXN3aXRjaCAodHR5cGUpDQotCXsNCi0J CWNhc2UgMDoNCi0JCQlzcWxfZmlsZXNbMF0gPSBwcm9jZXNzX2J1aWx0aW4o dHBjX2IsDQotCQkJCQkJCQkJCSAgICI8YnVpbHRpbjogVFBDLUIgKHNvcnQg b2YpPiIpOw0KLQkJCW51bV9maWxlcyA9IDE7DQotCQkJYnJlYWs7DQotDQot CQljYXNlIDE6DQotCQkJc3FsX2ZpbGVzWzBdID0gcHJvY2Vzc19idWlsdGlu KHNlbGVjdF9vbmx5LA0KLQkJCQkJCQkJCQkgICAiPGJ1aWx0aW46IHNlbGVj dCBvbmx5PiIpOw0KLQkJCW51bV9maWxlcyA9IDE7DQotCQkJYnJlYWs7DQot DQotCQljYXNlIDI6DQotCQkJc3FsX2ZpbGVzWzBdID0gcHJvY2Vzc19idWls dGluKHNpbXBsZV91cGRhdGUsDQotCQkJCQkJCQkJCSAgICI8YnVpbHRpbjog c2ltcGxlIHVwZGF0ZT4iKTsNCi0JCQludW1fZmlsZXMgPSAxOw0KLQkJCWJy ZWFrOw0KLQ0KLQkJZGVmYXVsdDoNCi0JCQlicmVhazsNCi0JfQ0KLQ0KIAkv KiBzZXQgdXAgdGhyZWFkIGRhdGEgc3RydWN0dXJlcyAqLw0KIAl0aHJlYWRz ID0gKFRTdGF0ZSAqKSBwZ19tYWxsb2Moc2l6ZW9mKFRTdGF0ZSkgKiBudGhy ZWFkcyk7DQogCW5jbGllbnRzX2RlYWx0ID0gMDsNCkBAIC0zNDk5LDcgKzM1 NTEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJICovDQog CUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQodG90YWxfdGltZSk7DQogCUlOU1RS X1RJTUVfU1VCVFJBQ1QodG90YWxfdGltZSwgc3RhcnRfdGltZSk7DQotCXBy aW50UmVzdWx0cyh0dHlwZSwgdG90YWxfeGFjdHMsIG5jbGllbnRzLCB0aHJl YWRzLCBudGhyZWFkcywNCisJcHJpbnRSZXN1bHRzKHRvdGFsX3hhY3RzLCBu Y2xpZW50cywgdGhyZWFkcywgbnRocmVhZHMsDQogCQkJCSB0b3RhbF90aW1l LCBjb25uX3RvdGFsX3RpbWUsIHRvdGFsX2xhdGVuY2llcywgdG90YWxfc3Fs YXRzLA0KIAkJCQkgdGhyb3R0bGVfbGFnLCB0aHJvdHRsZV9sYWdfbWF4LCB0 aHJvdHRsZV9sYXRlbmN5X3NraXBwZWQsDQogCQkJCSBsYXRlbmN5X2xhdGUp Ow0KQEAgLTM1ODMsMTAgKzM2MzUsMTAgQEAgdGhyZWFkUnVuKHZvaWQgKmFy ZykNCiAJZm9yIChpID0gMDsgaSA8IG5zdGF0ZTsgaSsrKQ0KIAl7DQogCQlD U3RhdGUJICAgKnN0ID0gJnN0YXRlW2ldOw0KLQkJQ29tbWFuZCAgICoqY29t bWFuZHMgPSBzcWxfZmlsZXNbc3QtPnVzZV9maWxlXTsNCisJCUNvbW1hbmQg ICAqKmNvbW1hbmRzID0gc3FsX3NjcmlwdFtzdC0+dXNlX2ZpbGVdLmNvbW1h bmRzOw0KIAkJaW50CQkJcHJldl9lY250ID0gc3QtPmVjbnQ7DQogDQotCQlz dC0+dXNlX2ZpbGUgPSBnZXRyYW5kKHRocmVhZCwgMCwgbnVtX2ZpbGVzIC0g MSk7DQorCQlzdC0+dXNlX2ZpbGUgPSBudW1fc2NyaXB0cz09MT8gMDogY2hv b3NlU2NyaXB0KHRocmVhZCk7DQogCQlpZiAoIWRvQ3VzdG9tKHRocmVhZCwg c3QsICZ0aHJlYWQtPmNvbm5fdGltZSwgbG9nZmlsZSwgJmFnZ3MpKQ0KIAkJ CXJlbWFpbnMtLTsJCQkvKiBJJ3ZlIGFib3J0ZWQgKi8NCiANCkBAIC0zNjE0 LDcgKzM2NjYsNyBAQCB0aHJlYWRSdW4odm9pZCAqYXJnKQ0KIAkJZm9yIChp ID0gMDsgaSA8IG5zdGF0ZTsgaSsrKQ0KIAkJew0KIAkJCUNTdGF0ZQkgICAq c3QgPSAmc3RhdGVbaV07DQotCQkJQ29tbWFuZCAgICoqY29tbWFuZHMgPSBz cWxfZmlsZXNbc3QtPnVzZV9maWxlXTsNCisJCQlDb21tYW5kICAgKipjb21t YW5kcyA9IHNxbF9zY3JpcHRbc3QtPnVzZV9maWxlXS5jb21tYW5kczsNCiAJ CQlpbnQJCQlzb2NrOw0KIA0KIAkJCWlmIChzdC0+Y29uID09IE5VTEwpDQpA QCAtMzcyMCw3ICszNzcyLDcgQEAgdGhyZWFkUnVuKHZvaWQgKmFyZykNCiAJ CWZvciAoaSA9IDA7IGkgPCBuc3RhdGU7IGkrKykNCiAJCXsNCiAJCQlDU3Rh dGUJICAgKnN0ID0gJnN0YXRlW2ldOw0KLQkJCUNvbW1hbmQgICAqKmNvbW1h bmRzID0gc3FsX2ZpbGVzW3N0LT51c2VfZmlsZV07DQorCQkJQ29tbWFuZCAg ICoqY29tbWFuZHMgPSBzcWxfc2NyaXB0W3N0LT51c2VfZmlsZV0uY29tbWFu ZHM7DQogCQkJaW50CQkJcHJldl9lY250ID0gc3QtPmVjbnQ7DQogDQogCQkJ aWYgKHN0LT5jb24gJiYgKEZEX0lTU0VUKFBRc29ja2V0KHN0LT5jb24pLCAm aW5wdXRfbWFzaykNCg== --8323329-242826868-1453558738=:21060 Content-Type: TEXT/x-diff; name=pgbench-script-stats-13-b.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-13-b.patch ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jDQppbmRleCAzNDA5NjU5Li5mN2I4NGRh IDEwMDY0NA0KLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KQEAgLTE2NiwxMCArMTY2 LDggQEAgaW50CQkJYWdnX2ludGVydmFsOwkJLyogbG9nIGFnZ3JlZ2F0ZXMg aW5zdGVhZCBvZiBpbmRpdmlkdWFsDQogCQkJCQkJCQkgKiB0cmFuc2FjdGlv bnMgKi8NCiBpbnQJCQlwcm9ncmVzcyA9IDA7CQkvKiB0aHJlYWQgcHJvZ3Jl c3MgcmVwb3J0IGV2ZXJ5IHRoaXMgc2Vjb25kcyAqLw0KIGJvb2wJCXByb2dy ZXNzX3RpbWVzdGFtcCA9IGZhbHNlOyAvKiBwcm9ncmVzcyByZXBvcnQgd2l0 aCBVbml4IHRpbWUgKi8NCi1pbnQJCQlwcm9ncmVzc19uY2xpZW50cyA9IDA7 CQkvKiBudW1iZXIgb2YgY2xpZW50cyBmb3IgcHJvZ3Jlc3MNCi0JCQkJCQkJ CQkJICogcmVwb3J0ICovDQotaW50CQkJcHJvZ3Jlc3NfbnRocmVhZHMgPSAw OwkJLyogbnVtYmVyIG9mIHRocmVhZHMgZm9yIHByb2dyZXNzDQotCQkJCQkJ CQkJCSAqIHJlcG9ydCAqLw0KK2ludAkJCW5jbGllbnRzID0gMTsJCS8qIG51 bWJlciBvZiBjbGllbnRzICovDQoraW50CQkJbnRocmVhZHMgPSAxOwkgICAg LyogbnVtYmVyIG9mIHRocmVhZHMgKi8NCiBib29sCQlpc19jb25uZWN0OwkJ CS8qIGVzdGFibGlzaCBjb25uZWN0aW9uIGZvciBlYWNoIHRyYW5zYWN0aW9u ICovDQogYm9vbAkJaXNfbGF0ZW5jaWVzOwkJLyogcmVwb3J0IHBlci1jb21t YW5kIGxhdGVuY2llcyAqLw0KIGludAkJCW1haW5fcGlkOwkJCS8qIG1haW4g cHJvY2VzcyBpZCB1c2VkIGluIGxvZyBmaWxlbmFtZSAqLw0KQEAgLTE5Myw5 ICsxOTEsMzYgQEAgdHlwZWRlZiBzdHJ1Y3QNCiAjZGVmaW5lIFNIRUxMX0NP TU1BTkRfU0laRQkyNTYgLyogbWF4aW11bSBzaXplIGFsbG93ZWQgZm9yIHNo ZWxsIGNvbW1hbmQgKi8NCiANCiAvKg0KKyAqIHNpbXBsZSBkYXRhIHN0cnVj dHVyZSB0byBrZWVwIHN0YXRzIGFib3V0IHNvbWV0aGluZy4NCisgKiBwcm9i YWJseSB0aGUgZmlyc3QgdmFsdWUgc2hvdWxkIGJlIGtlcHQgYW5kIHVzZWQg YXMgYW4gb2Zmc2V0IGZvcg0KKyAqIGJldHRlciBudW1lcmljYWwgc3RhYmls aXR5Li4uDQorICovDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorCWludDY0IGNv dW50OyAgLyogaG93IG1hbnkgdmFsdWVzIHdoZXJlIGVuY291bnRlcmVkICov DQorCWRvdWJsZSBtaW47ICAgLyogdGhlIG1pbmltdW0gc2VlbiAqLw0KKwlk b3VibGUgbWF4OyAgIC8qIHRoZSBtYXhpbXVtIHNlZW4gKi8NCisJZG91Ymxl IHN1bTsgICAvKiBzdW0gb2YgdmFsdWVzICovDQorCWRvdWJsZSBzdW0yOyAg Lyogc3VtIG9mIHNxdWFyZWQgdmFsdWVzICovDQorfSBTaW1wbGVTdGF0czsN CisNCisvKg0KKyAqIGRhdGEgc3RydWN0dXJlIHRvIGhvbGQgdmFyaW91cyBz dGF0aXN0aWNzLg0KKyAqIGl0IGlzIHVzZWQgZm9yIGludGVydmFsIHN0YXRp c3RpY3MgYXMgd2VsbCBhcyBmaWxlIHN0YXRpc3RpY3MuDQorICovDQordHlw ZWRlZiBzdHJ1Y3QNCit7DQorCWxvbmcJCXN0YXJ0X3RpbWU7CQkvKiB3aGVu IHRoZSBpbnRlcnZhbCBzdGFydHMsIGZvciBhZ2dyZWdhdGVzICovDQorCWlu dDY0CQljbnQ7CQkJLyogbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyAqLw0KKwlp bnQ2NAkJc2tpcHBlZDsJCS8qIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgc2tp cHBlZCB1bmRlciAtLXJhdGUNCisJCQkJCQkJCSAqIGFuZCAtLWxhdGVuY3kt bGltaXQgKi8NCisJU2ltcGxlU3RhdHMJbGF0ZW5jeTsNCisJU2ltcGxlU3Rh dHMJbGFnOw0KK30gU3RhdHNEYXRhOw0KKw0KKy8qDQogICogc3RydWN0dXJl cyB1c2VkIGluIGN1c3RvbSBxdWVyeSBtb2RlDQogICovDQotDQogdHlwZWRl ZiBzdHJ1Y3QNCiB7DQogCVBHY29ubgkgICAqY29uOwkJCS8qIGNvbm5lY3Rp b24gaGFuZGxlIHRvIERCICovDQpAQCAtMjE1LDEwICsyNDAsOCBAQCB0eXBl ZGVmIHN0cnVjdA0KIAlib29sCQlwcmVwYXJlZFtNQVhfU0NSSVBUU107IC8q IHdoZXRoZXIgY2xpZW50IHByZXBhcmVkIHRoZSBzY3JpcHQgKi8NCiANCiAJ LyogcGVyIGNsaWVudCBjb2xsZWN0ZWQgc3RhdHMgKi8NCi0JaW50CQkJY250 OwkJCS8qIHhhY3RzIGNvdW50ICovDQorCWludDY0CQljbnQ7CQkJLyogdHJh bnNhY3Rpb24gY291bnQgKi8NCiAJaW50CQkJZWNudDsJCQkvKiBlcnJvciBj b3VudCAqLw0KLQlpbnQ2NAkJdHhuX2xhdGVuY2llczsJLyogY3VtdWxhdGVk IGxhdGVuY2llcyAqLw0KLQlpbnQ2NAkJdHhuX3NxbGF0czsJCS8qIGN1bXVs YXRlZCBzcXVhcmUgbGF0ZW5jaWVzICovDQogfSBDU3RhdGU7DQogDQogLyoN CkBAIC0yMzAsMTkgKzI1MywxNCBAQCB0eXBlZGVmIHN0cnVjdA0KIAlwdGhy ZWFkX3QJdGhyZWFkOwkJCS8qIHRocmVhZCBoYW5kbGUgKi8NCiAJQ1N0YXRl CSAgICpzdGF0ZTsJCQkvKiBhcnJheSBvZiBDU3RhdGUgKi8NCiAJaW50CQkJ bnN0YXRlOwkJCS8qIGxlbmd0aCBvZiBzdGF0ZVtdICovDQotCWluc3RyX3Rp bWUJc3RhcnRfdGltZTsJCS8qIHRocmVhZCBzdGFydCB0aW1lICovDQotCWlu c3RyX3RpbWUgKmV4ZWNfZWxhcHNlZDsJLyogdGltZSBzcGVudCBleGVjdXRp bmcgY21kcyAocGVyIENvbW1hbmQpICovDQotCWludAkJICAgKmV4ZWNfY291 bnQ7CQkvKiBudW1iZXIgb2YgY21kIGV4ZWN1dGlvbnMgKHBlciBDb21tYW5k KSAqLw0KLQl1bnNpZ25lZCBzaG9ydCByYW5kb21fc3RhdGVbM107CQkvKiBz ZXBhcmF0ZSByYW5kb21uZXNzIGZvciBlYWNoIHRocmVhZCAqLw0KLQlpbnQ2 NAkJdGhyb3R0bGVfdHJpZ2dlcjsJCS8qIHByZXZpb3VzL25leHQgdGhyb3R0 bGluZyAodXMpICovDQorCXVuc2lnbmVkIHNob3J0IHJhbmRvbV9zdGF0ZVsz XTsJIC8qIHNlcGFyYXRlIHJhbmRvbW5lc3MgZm9yIGVhY2ggdGhyZWFkICov DQorCWludDY0CQl0aHJvdHRsZV90cmlnZ2VyOwkgLyogcHJldmlvdXMvbmV4 dCB0aHJvdHRsaW5nICh1cykgKi8NCiANCiAJLyogcGVyIHRocmVhZCBjb2xs ZWN0ZWQgc3RhdHMgKi8NCisJaW5zdHJfdGltZQlzdGFydF90aW1lOwkJLyog dGhyZWFkIHN0YXJ0IHRpbWUgKi8NCiAJaW5zdHJfdGltZQljb25uX3RpbWU7 DQotCWludDY0CQl0aHJvdHRsZV9sYWc7CS8qIHRvdGFsIHRyYW5zYWN0aW9u IGxhZyBiZWhpbmQgdGhyb3R0bGluZyAqLw0KLQlpbnQ2NAkJdGhyb3R0bGVf bGFnX21heDsJCS8qIG1heCB0cmFuc2FjdGlvbiBsYWcgKi8NCi0JaW50NjQJ CXRocm90dGxlX2xhdGVuY3lfc2tpcHBlZDsJCS8qIGxhZ2dpbmcgdHJhbnNh Y3Rpb25zDQotCQkJCQkJCQkJCQkJICogc2tpcHBlZCAqLw0KLQlpbnQ2NAkJ bGF0ZW5jeV9sYXRlOwkvKiBsYXRlIHRyYW5zYWN0aW9ucyAqLw0KKwlTdGF0 c0RhdGEgICBzdGF0czsNCisJaW50NjQJCWxhdGVuY3lfbGF0ZTsJLyogZXhl Y3V0ZWQgYnV0IGxhdGUgdHJhbnNhY3Rpb25zICovDQogfSBUU3RhdGU7DQog DQogI2RlZmluZSBJTlZBTElEX1RIUkVBRAkJKChwdGhyZWFkX3QpIDApDQpA QCAtMjc0LDYgKzI5Miw3IEBAIHR5cGVkZWYgc3RydWN0DQogCWNoYXIJICAg KmFyZ3ZbTUFYX0FSR1NdOyAvKiBjb21tYW5kIHdvcmQgbGlzdCAqLw0KIAlp bnQJCQljb2xzW01BWF9BUkdTXTsgLyogY29ycmVzcG9uZGluZyBjb2x1bW4g c3RhcnRpbmcgZnJvbSAxICovDQogCVBnQmVuY2hFeHByICpleHByOwkJCS8q IHBhcnNlZCBleHByZXNzaW9uICovDQorCVNpbXBsZVN0YXRzCXN0YXRzOyAg ICAgICAgICAvKiB0aW1lIHNwZW50IGluIHRoaXMgY29tbWFuZCAqLw0KIH0g Q29tbWFuZDsNCiANCiAvKiBTUUwgc2NyaXB0IHRvIGJlIGV4ZWN1dGVkLCBl aXRoZXIgYSBmaWxlIG9yIGFuIGludGVybmFsIHNjcmlwdA0KQEAgLTI4MSwz NCArMzAwLDIwIEBAIHR5cGVkZWYgc3RydWN0DQogdHlwZWRlZiBzdHJ1Y3QN CiB7DQogCWNvbnN0IGNoYXIgKm5hbWU7DQotCUNvbW1hbmQgICAqKmNvbW1h bmRzOw0KKwlDb21tYW5kICoqY29tbWFuZHM7DQogfSBTUUxTY3JpcHQ7DQog DQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotDQotCWxvbmcJCXN0YXJ0X3RpbWU7 CQkvKiB3aGVuIGRvZXMgdGhlIGludGVydmFsIHN0YXJ0ICovDQotCWludAkJ CWNudDsJCQkvKiBudW1iZXIgb2YgdHJhbnNhY3Rpb25zICovDQotCWludAkJ CXNraXBwZWQ7CQkvKiBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHNraXBwZWQg dW5kZXIgLS1yYXRlDQotCQkJCQkJCQkgKiBhbmQgLS1sYXRlbmN5LWxpbWl0 ICovDQotDQotCWRvdWJsZQkJbWluX2xhdGVuY3k7CS8qIG1pbi9tYXggbGF0 ZW5jaWVzICovDQotCWRvdWJsZQkJbWF4X2xhdGVuY3k7DQotCWRvdWJsZQkJ c3VtX2xhdGVuY3k7CS8qIHN1bShsYXRlbmN5KSwgc3VtKGxhdGVuY3leMikg LSBmb3INCi0JCQkJCQkJCSAqIGVzdGltYXRlcyAqLw0KLQlkb3VibGUJCXN1 bTJfbGF0ZW5jeTsNCi0NCi0JZG91YmxlCQltaW5fbGFnOw0KLQlkb3VibGUJ CW1heF9sYWc7DQotCWRvdWJsZQkJc3VtX2xhZzsJCS8qIHN1bShsYWcpICov DQotCWRvdWJsZQkJc3VtMl9sYWc7CQkvKiBzdW0obGFnKmxhZykgKi8NCi19 IEFnZ1ZhbHM7DQotDQotc3RhdGljIFNRTFNjcmlwdCBzcWxfc2NyaXB0W01B WF9TQ1JJUFRTXTsJLyogU1FMIHNjcmlwdCBmaWxlcyAqLw0KLXN0YXRpYyBp bnQJbnVtX3NjcmlwdHM7CQkJLyogbnVtYmVyIG9mIHNjcmlwdHMgaW4gc3Fs X3NjcmlwdFtdICovDQorc3RhdGljIFNRTFNjcmlwdCBzcWxfc2NyaXB0W01B WF9TQ1JJUFRTXTsNCitzdGF0aWMgaW50CW51bV9zY3JpcHRzOwkJLyogbnVt YmVyIG9mIHNjcmlwdCBpbiBzcWxfc2NyaXB0W10gKi8NCiBzdGF0aWMgaW50 CW51bV9jb21tYW5kcyA9IDA7CS8qIHRvdGFsIG51bWJlciBvZiBDb21tYW5k IHN0cnVjdHMgKi8NCisNCiBzdGF0aWMgaW50CWRlYnVnID0gMDsJCQkvKiBk ZWJ1ZyBmbGFnICovDQogDQorLyogRnVuY3Rpb24gcHJvdG90eXBlcyAqLw0K K3N0YXRpYyB2b2lkIHNldGFsYXJtKGludCBzZWNvbmRzKTsNCitzdGF0aWMg dm9pZCAqdGhyZWFkUnVuKHZvaWQgKmFyZyk7DQorc3RhdGljIHZvaWQgZG9U eFN0YXRzKFRTdGF0ZSosIENTdGF0ZSosIGluc3RyX3RpbWUqLCBib29sLCBG SUxFKiwgU3RhdHNEYXRhKik7DQorDQogLyogRGVmaW5lIGJ1aWx0aW4gdGVz dCBzY3JpcHRzICovDQogI2RlZmluZSBOX0JVSUxUSU4gMw0KIHN0YXRpYyBz dHJ1Y3Qgew0KQEAgLTM3MSw2ICszNzYsNyBAQCBmaW5kX2J1aWx0aW4oY29u c3QgY2hhciAqbmFtZSwgY2hhciAqKmRlc2MpDQogCQkJcmV0dXJuIGJ1aWx0 aW5fc2NyaXB0W2ldLnNjcmlwdDsNCiAJCX0NCiAJfQ0KKw0KIAlmcHJpbnRm KHN0ZGVyciwgIm5vIGJ1aWx0aW4gZm91bmQgZm9yIFwiJXNcIiAoYXZhaWxh YmxlIGNob2ljZXM6IiwgbmFtZSk7DQogCWZvciAoaSA9IDA7IGkgPCBOX0JV SUxUSU47IGkrKykNCiAJCWZwcmludGYoc3RkZXJyLCAiIFwiJXNcIiIsIGJ1 aWx0aW5fc2NyaXB0W2ldLm5hbWUpOw0KQEAgLTM3OCwxNCArMzg0LDYgQEAg ZmluZF9idWlsdGluKGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKipkZXNjKQ0K IAlleGl0KDEpOw0KIH0NCiANCi0NCi0vKiBGdW5jdGlvbiBwcm90b3R5cGVz ICovDQotc3RhdGljIHZvaWQgc2V0YWxhcm0oaW50IHNlY29uZHMpOw0KLXN0 YXRpYyB2b2lkICp0aHJlYWRSdW4odm9pZCAqYXJnKTsNCi0NCi1zdGF0aWMg dm9pZCBkb0xvZyhUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwgRklMRSAq bG9nZmlsZSwgaW5zdHJfdGltZSAqbm93LA0KLQkgIEFnZ1ZhbHMgKmFnZywg Ym9vbCBza2lwcGVkKTsNCi0NCiBzdGF0aWMgdm9pZA0KIHVzYWdlKHZvaWQp DQogew0KQEAgLTQwNiw3ICs0MDQsNiBAQCB1c2FnZSh2b2lkKQ0KIAkJICAg IlxuQmVuY2htYXJraW5nIG9wdGlvbnM6XG4iDQogCQkgICAiICAtYiwgLS1i dWlsdGluPU5BTUUgICAgICAgYWRkIGJ1aXRpbiBzY3JpcHQgYW1vbmcgXCJ0 cGNiLWxpa2VcIlxuIg0KIAkJICAgIiAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwic2ltcGxlLXVwZGF0ZVwiIGFuZCBcInNlbGVjdC1vbmx5XCIuXG4i DQotDQogCQkgICAiICAtYywgLS1jbGllbnQ9TlVNICAgICAgICAgbnVtYmVy IG9mIGNvbmN1cnJlbnQgZGF0YWJhc2UgY2xpZW50cyAoZGVmYXVsdDogMSlc biINCiAJCSAgICIgIC1DLCAtLWNvbm5lY3QgICAgICAgICAgICBlc3RhYmxp c2ggbmV3IGNvbm5lY3Rpb24gZm9yIGVhY2ggdHJhbnNhY3Rpb25cbiINCiAJ CSAgICIgIC1ELCAtLWRlZmluZT1WQVJOQU1FPVZBTFVFXG4iDQpAQCAtNjIz LDYgKzYyMCw0OSBAQCBnZXRQb2lzc29uUmFuZChUU3RhdGUgKnRocmVhZCwg aW50NjQgY2VudGVyKQ0KIAlyZXR1cm4gKGludDY0KSAoLWxvZyh1bmlmb3Jt KSAqICgoZG91YmxlKSBjZW50ZXIpICsgMC41KTsNCiB9DQogDQorc3RhdGlj IHZvaWQNCitpbml0U2ltcGxlU3RhdHMoU2ltcGxlU3RhdHMgKiBzcykNCit7 DQorCW1lbXNldChzcywgMCwgc2l6ZW9mKFNpbXBsZVN0YXRzKSk7DQorfQ0K Kw0KK3N0YXRpYyB2b2lkDQorZG9TaW1wbGVTdGF0cyhTaW1wbGVTdGF0cyAq c3MsIGRvdWJsZSB2YWwpDQorew0KKwlpZiAoc3MtPmNvdW50ID09IDAgfHwg dmFsIDwgc3MtPm1pbikNCisJCXNzLT5taW4gPSB2YWw7DQorCWlmIChzcy0+ Y291bnQgPT0gMCB8fCB2YWwgPiBzcy0+bWF4KQ0KKwkJc3MtPm1heCA9IHZh bDsNCisJc3MtPmNvdW50ICsrOw0KKwlzcy0+c3VtICs9IHZhbDsNCisJc3Mt PnN1bTIgKz0gdmFsICogdmFsOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK2Fw cGVuZFNpbXBsZVN0YXRzKFNpbXBsZVN0YXRzICphY2MsIFNpbXBsZVN0YXRz ICpzcykNCit7DQorCWlmIChhY2MtPmNvdW50ID09IDAgfHwgc3MtPm1pbiA8 IGFjYy0+bWluKQ0KKwkJYWNjLT5taW4gPSBzcy0+bWluOw0KKwlpZiAoYWNj LT5jb3VudCA9PSAwIHx8IHNzLT5tYXggPiBhY2MtPm1heCkNCisJCWFjYy0+ bWF4ID0gc3MtPm1heDsNCisJYWNjLT5jb3VudCArPSBzcy0+Y291bnQ7DQor CWFjYy0+c3VtICs9IHNzLT5zdW07DQorCWFjYy0+c3VtMiArPSBzcy0+c3Vt MjsNCit9DQorDQorc3RhdGljIHZvaWQNCitpbml0U3RhdHMoU3RhdHNEYXRh ICpzZCwgZG91YmxlIHN0YXJ0X3RpbWUpDQorew0KKwlzZC0+Y250ID0gMDsN CisJc2QtPnNraXBwZWQgPSAwOw0KKwlpbml0U2ltcGxlU3RhdHMoJiBzZC0+ bGF0ZW5jeSk7DQorCWluaXRTaW1wbGVTdGF0cygmIHNkLT5sYWcpOw0KKw0K KwkvKiBub3QgbmVjZXNzYXJpbHkgb3ZlcnJpZGVuPyAqLw0KKwlpZiAoc3Rh cnRfdGltZSkNCisJCXNkLT5zdGFydF90aW1lID0gc3RhcnRfdGltZTsNCit9 DQorDQogLyogY2FsbCBQUWV4ZWMoKSBhbmQgZXhpdCgpIG9uIGZhaWx1cmUg Ki8NCiBzdGF0aWMgdm9pZA0KIGV4ZWN1dGVTdGF0ZW1lbnQoUEdjb25uICpj b24sIGNvbnN0IGNoYXIgKnNxbCkNCkBAIC0xMTQyLDMwICsxMTgyLDYgQEAg Y2xpZW50RG9uZShDU3RhdGUgKnN0LCBib29sIG9rKQ0KIAlyZXR1cm4gZmFs c2U7CQkJCS8qIGFsd2F5cyBmYWxzZSAqLw0KIH0NCiANCi1zdGF0aWMgdm9p ZA0KLWFnZ192YWxzX2luaXQoQWdnVmFscyAqYWdncywgaW5zdHJfdGltZSBz dGFydCkNCi17DQotCS8qIGJhc2ljIGNvdW50ZXJzICovDQotCWFnZ3MtPmNu dCA9IDA7CQkJCS8qIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgKGluY2x1ZGVz IHNraXBwZWQpICovDQotCWFnZ3MtPnNraXBwZWQgPSAwOwkJCS8qIHhhY3Rz IHNraXBwZWQgdW5kZXIgLS1yYXRlIC0tbGF0ZW5jeS1saW1pdCAqLw0KLQ0K LQlhZ2dzLT5zdW1fbGF0ZW5jeSA9IDA7CQkvKiBTVU0obGF0ZW5jeSkgKi8N Ci0JYWdncy0+c3VtMl9sYXRlbmN5ID0gMDsJCS8qIFNVTShsYXRlbmN5Kmxh dGVuY3kpICovDQotDQotCS8qIG1pbiBhbmQgbWF4IHRyYW5zYWN0aW9uIGR1 cmF0aW9uICovDQotCWFnZ3MtPm1pbl9sYXRlbmN5ID0gMDsNCi0JYWdncy0+ bWF4X2xhdGVuY3kgPSAwOw0KLQ0KLQkvKiBzY2hlZHVsZSBsYWcgY291bnRl cnMgKi8NCi0JYWdncy0+c3VtX2xhZyA9IDA7DQotCWFnZ3MtPnN1bTJfbGFn ID0gMDsNCi0JYWdncy0+bWluX2xhZyA9IDA7DQotCWFnZ3MtPm1heF9sYWcg PSAwOw0KLQ0KLQkvKiBzdGFydCBvZiB0aGUgY3VycmVudCBpbnRlcnZhbCAq Lw0KLQlhZ2dzLT5zdGFydF90aW1lID0gSU5TVFJfVElNRV9HRVRfRE9VQkxF KHN0YXJ0KTsNCi19DQotDQogc3RhdGljIGludA0KIGNob29zZVNjcmlwdChU U3RhdGUgKnRocmVhZCkNCiB7DQpAQCAtMTE3NCw3ICsxMTkwLDcgQEAgY2hv b3NlU2NyaXB0KFRTdGF0ZSAqdGhyZWFkKQ0KIA0KIC8qIHJldHVybiBmYWxz ZSBpZmYgY2xpZW50IHNob3VsZCBiZSBkaXNjb25uZWN0ZWQgKi8NCiBzdGF0 aWMgYm9vbA0KLWRvQ3VzdG9tKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUgKnN0 LCBpbnN0cl90aW1lICpjb25uX3RpbWUsIEZJTEUgKmxvZ2ZpbGUsIEFnZ1Zh bHMgKmFnZykNCitkb0N1c3RvbShUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpz dCwgRklMRSAqbG9nZmlsZSwgU3RhdHNEYXRhICphZ2cpDQogew0KIAlQR3Jl c3VsdCAgICpyZXM7DQogCUNvbW1hbmQgICAqKmNvbW1hbmRzOw0KQEAgLTEy MjgsMTEgKzEyNDQsOCBAQCB0b3A6DQogCQkJbm93X3VzID0gSU5TVFJfVElN RV9HRVRfTUlDUk9TRUMobm93KTsNCiAJCQl3aGlsZSAodGhyZWFkLT50aHJv dHRsZV90cmlnZ2VyIDwgbm93X3VzIC0gbGF0ZW5jeV9saW1pdCkNCiAJCQl7 DQotCQkJCXRocmVhZC0+dGhyb3R0bGVfbGF0ZW5jeV9za2lwcGVkKys7DQot DQotCQkJCWlmIChsb2dmaWxlKQ0KLQkJCQkJZG9Mb2codGhyZWFkLCBzdCwg bG9nZmlsZSwgJm5vdywgYWdnLCB0cnVlKTsNCi0NCisJCQkJZG9UeFN0YXRz KHRocmVhZCwgc3QsICAmbm93LCB0cnVlLCBsb2dmaWxlLCBhZ2cpOw0KKwkJ CQkvKiBuZXh0IHJlbmRlei12b3VzICovDQogCQkJCXdhaXQgPSBnZXRQb2lz c29uUmFuZCh0aHJlYWQsIHRocm90dGxlX2RlbGF5KTsNCiAJCQkJdGhyZWFk LT50aHJvdHRsZV90cmlnZ2VyICs9IHdhaXQ7DQogCQkJCXN0LT50eG5fc2No ZWR1bGVkID0gdGhyZWFkLT50aHJvdHRsZV90cmlnZ2VyOw0KQEAgLTEyNDks MjcgKzEyNjIsMTMgQEAgdG9wOg0KIA0KIAlpZiAoc3QtPnNsZWVwaW5nKQ0K IAl7CQkJCQkJCS8qIGFyZSB3ZSBzbGVlcGluZz8gKi8NCi0JCWludDY0CQlu b3dfdXM7DQotDQogCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKG5vdykpDQog CQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChub3cpOw0KLQkJbm93X3VzID0g SU5TVFJfVElNRV9HRVRfTUlDUk9TRUMobm93KTsNCi0JCWlmIChzdC0+dHhu X3NjaGVkdWxlZCA8PSBub3dfdXMpDQotCQl7DQotCQkJc3QtPnNsZWVwaW5n ID0gMDsJLyogRG9uZSBzbGVlcGluZywgZ28gYWhlYWQgd2l0aCBuZXh0IGNv bW1hbmQgKi8NCi0JCQlpZiAoc3QtPnRocm90dGxpbmcpDQotCQkJew0KLQkJ CQkvKiBNZWFzdXJlIGxhZyBvZiB0aHJvdHRsZWQgdHJhbnNhY3Rpb24gcmVs YXRpdmUgdG8gdGFyZ2V0ICovDQotCQkJCWludDY0CQlsYWcgPSBub3dfdXMg LSBzdC0+dHhuX3NjaGVkdWxlZDsNCi0NCi0JCQkJdGhyZWFkLT50aHJvdHRs ZV9sYWcgKz0gbGFnOw0KLQkJCQlpZiAobGFnID4gdGhyZWFkLT50aHJvdHRs ZV9sYWdfbWF4KQ0KLQkJCQkJdGhyZWFkLT50aHJvdHRsZV9sYWdfbWF4ID0g bGFnOw0KLQkJCQlzdC0+dGhyb3R0bGluZyA9IGZhbHNlOw0KLQkJCX0NCi0J CX0NCi0JCWVsc2UNCisJCWlmIChJTlNUUl9USU1FX0dFVF9NSUNST1NFQyhu b3cpIDwgc3QtPnR4bl9zY2hlZHVsZWQpDQogCQkJcmV0dXJuIHRydWU7CQkv KiBTdGlsbCBzbGVlcGluZywgbm90aGluZyB0byBkbyBoZXJlICovDQorCQkv KiBFbHNlIGRvbmUgc2xlZXBpbmcsIGdvIGFoZWFkIHdpdGggbmV4dCBjb21t YW5kICovDQorCQlzdC0+c2xlZXBpbmcgPSAwOw0KKwkJc3QtPnRocm90dGxp bmcgPSBmYWxzZTsNCiAJfQ0KIA0KIAlpZiAoc3QtPmxpc3RlbikNCkBAIC0x MjkzLDQ3ICsxMjkyLDI1IEBAIHRvcDoNCiAJCSAqLw0KIAkJaWYgKGlzX2xh dGVuY2llcykNCiAJCXsNCi0JCQlpbnQJCQljbnVtID0gY29tbWFuZHNbc3Qt PnN0YXRlXS0+Y29tbWFuZF9udW07DQotDQogCQkJaWYgKElOU1RSX1RJTUVf SVNfWkVSTyhub3cpKQ0KIAkJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKG5v dyk7DQotCQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHRocmVhZC0+ZXhlY19l bGFwc2VkW2NudW1dLA0KLQkJCQkJCQkJICBub3csIHN0LT5zdG10X2JlZ2lu KTsNCi0JCQl0aHJlYWQtPmV4ZWNfY291bnRbY251bV0rKzsNCisNCisJCQkv Kg0KKwkJCSAqIGFsdGhvdWdoIGEgbXV0ZXggd291bGQgbWFrZSBzZW5zZSwg dGhlIGxpa2VseWhvb2Qgb2YgYW4gaXNzdWUNCisJCQkgKiBpcyBzbWFsbCBh bmQgdGhlc2UgYXJlIG9ubHkgc3RhdHMgd2hpY2ggbWF5IGJlIHNsaWdodGx5 IGZhbHNlDQorCQkJICovDQorCQkJZG9TaW1wbGVTdGF0cygmIGNvbW1hbmRz W3N0LT5zdGF0ZV0tPnN0YXRzLA0KKwkJCQkJCSAgSU5TVFJfVElNRV9HRVRf RE9VQkxFKG5vdykgLQ0KKwkJCQkJCSAgSU5TVFJfVElNRV9HRVRfRE9VQkxF KHN0LT5zdG10X2JlZ2luKSk7DQogCQl9DQogDQogCQkvKiB0cmFuc2FjdGlv biBmaW5pc2hlZDogY2FsY3VsYXRlIGxhdGVuY3kgYW5kIGxvZyB0aGUgdHJh bnNhY3Rpb24gKi8NCiAJCWlmIChjb21tYW5kc1tzdC0+c3RhdGUgKyAxXSA9 PSBOVUxMKQ0KIAkJew0KLQkJCS8qIG9ubHkgY2FsY3VsYXRlIGxhdGVuY3kg aWYgYW4gb3B0aW9uIGlzIHVzZWQgdGhhdCBuZWVkcyBpdCAqLw0KLQkJCWlm IChwcm9ncmVzcyB8fCB0aHJvdHRsZV9kZWxheSB8fCBsYXRlbmN5X2xpbWl0 KQ0KLQkJCXsNCi0JCQkJaW50NjQJCWxhdGVuY3k7DQotDQotCQkJCWlmIChJ TlNUUl9USU1FX0lTX1pFUk8obm93KSkNCi0JCQkJCUlOU1RSX1RJTUVfU0VU X0NVUlJFTlQobm93KTsNCi0NCi0JCQkJbGF0ZW5jeSA9IElOU1RSX1RJTUVf R0VUX01JQ1JPU0VDKG5vdykgLSBzdC0+dHhuX3NjaGVkdWxlZDsNCi0NCi0J CQkJc3QtPnR4bl9sYXRlbmNpZXMgKz0gbGF0ZW5jeTsNCi0NCi0JCQkJLyoN Ci0JCQkJICogWFhYIEluIGEgbG9uZyBiZW5jaG1hcmsgcnVuIG9mIGhpZ2gt bGF0ZW5jeSB0cmFuc2FjdGlvbnMsDQotCQkJCSAqIHRoaXMgaW50NjQgYWRk aXRpb24gZXZlbnR1YWxseSBvdmVyZmxvd3MuICBGb3IgZXhhbXBsZSwgMTAw DQotCQkJCSAqIHRocmVhZHMgcnVubmluZyAxMHMgdHJhbnNhY3Rpb25zIHdp bGwgb3ZlcmZsb3cgaXQgaW4gMi41Ng0KLQkJCQkgKiBob3Vycy4gIFdpdGgg YSBtb3JlLXR5cGljYWwgT0xUUCB3b3JrbG9hZCBvZiAuMXMNCi0JCQkJICog dHJhbnNhY3Rpb25zLCBvdmVyZmxvdyB3b3VsZCB0YWtlIDI1NiBob3Vycy4N Ci0JCQkJICovDQotCQkJCXN0LT50eG5fc3FsYXRzICs9IGxhdGVuY3kgKiBs YXRlbmN5Ow0KLQ0KLQkJCQkvKiByZWNvcmQgb3ZlciB0aGUgbGltaXQgdHJh bnNhY3Rpb25zIGlmIG5lZWRlZC4gKi8NCi0JCQkJaWYgKGxhdGVuY3lfbGlt aXQgJiYgbGF0ZW5jeSA+IGxhdGVuY3lfbGltaXQpDQotCQkJCQl0aHJlYWQt PmxhdGVuY3lfbGF0ZSsrOw0KLQkJCX0NCi0NCi0JCQkvKiByZWNvcmQgdGhl IHRpbWUgaXQgdG9vayBpbiB0aGUgbG9nICovDQotCQkJaWYgKGxvZ2ZpbGUp DQotCQkJCWRvTG9nKHRocmVhZCwgc3QsIGxvZ2ZpbGUsICZub3csIGFnZywg ZmFsc2UpOw0KKwkJCWlmIChwcm9ncmVzcyB8fCB0aHJvdHRsZV9kZWxheSB8 fCBsYXRlbmN5X2xpbWl0IHx8IGxvZ2ZpbGUpDQorCQkJCWRvVHhTdGF0cyh0 aHJlYWQsIHN0LCAmbm93LCBmYWxzZSwgbG9nZmlsZSwgYWdnKTsNCisJCQll bHNlDQorCQkJCXRocmVhZC0+c3RhdHMuY250ICsrOw0KIAkJfQ0KIA0KIAkJ aWYgKGNvbW1hbmRzW3N0LT5zdGF0ZV0tPnR5cGUgPT0gU1FMX0NPTU1BTkQp DQpAQCAtMTM3Nyw2ICsxMzU0LDcgQEAgdG9wOg0KIAkJew0KIAkJCXN0LT5z dGF0ZSA9IDA7DQogCQkJc3QtPnVzZV9maWxlID0gbnVtX3NjcmlwdHM9PTE/ IDA6IGNob29zZVNjcmlwdCh0aHJlYWQpOw0KKw0KIAkJCWNvbW1hbmRzID0g c3FsX3NjcmlwdFtzdC0+dXNlX2ZpbGVdLmNvbW1hbmRzOw0KIAkJCXN0LT5p c190aHJvdHRsZWQgPSBmYWxzZTsNCiANCkBAIC0xNDA1LDcgKzEzODMsNyBA QCB0b3A6DQogCQkJcmV0dXJuIGNsaWVudERvbmUoc3QsIGZhbHNlKTsNCiAJ CX0NCiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kKTsNCi0JCUlOU1RS X1RJTUVfQUNDVU1fRElGRigqY29ubl90aW1lLCBlbmQsIHN0YXJ0KTsNCisJ CUlOU1RSX1RJTUVfQUNDVU1fRElGRih0aHJlYWQtPmNvbm5fdGltZSwgZW5k LCBzdGFydCk7DQogCX0NCiANCiAJLyoNCkBAIC0xNzQ4LDIyICsxNzI2LDM5 IEBAIHRvcDoNCiAJCQllbHNlCS8qIHN1Y2NlZWRlZCAqLw0KIAkJCQlzdC0+ bGlzdGVuID0gMTsNCiAJCX0NCisNCisJCS8qIGFmdGVyIGEgbWV0YSBjb21t YW5kLCBpbW1lZGlhdGVseSBwcm9jZWVkIHdpdGggbmV4dCBjb21tYW5kICov DQogCQlnb3RvIHRvcDsNCiAJfQ0KIA0KIAlyZXR1cm4gdHJ1ZTsNCiB9DQog DQorc3RhdGljIHZvaWQNCitkb1N0YXRzKFN0YXRzRGF0YSAqc3RhdHMsIGJv b2wgc2tpcHBlZCwgZG91YmxlIGxhdCwgZG91YmxlIGxhZykNCit7DQorCXN0 YXRzLT5jbnQgKys7DQorDQorCWlmIChza2lwcGVkKQ0KKwkJLyogbm8gbGF0 ZW5jeSB0byByZWNvcmQgb24gc2tpcHBlZCB0cmFuc2FjdGlvbnMgKi8NCisJ CXN0YXRzLT5za2lwcGVkICsrOw0KKwllbHNlDQorCXsNCisJCWRvU2ltcGxl U3RhdHMoJiBzdGF0cy0+bGF0ZW5jeSwgbGF0KTsNCisNCisJCS8qIGFuZCBw b3NzaWJseSB0aGUgc2FtZSBmb3Igc2NoZWR1bGUgbGFnICovDQorCQlpZiAo dGhyb3R0bGVfZGVsYXkpDQorCQkJZG9TaW1wbGVTdGF0cygmIHN0YXRzLT5s YWcsIGxhZyk7DQorCX0NCit9DQorDQogLyoNCiAgKiBwcmludCBsb2cgZW50 cnkgYWZ0ZXIgY29tcGxldGluZyBvbmUgdHJhbnNhY3Rpb24uDQogICovDQog c3RhdGljIHZvaWQNCi1kb0xvZyhUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpz dCwgRklMRSAqbG9nZmlsZSwgaW5zdHJfdGltZSAqbm93LCBBZ2dWYWxzICph Z2csDQotCSAgYm9vbCBza2lwcGVkKQ0KK2RvTG9nKFRTdGF0ZSAqdGhyZWFk LCBDU3RhdGUgKnN0LCBGSUxFICpsb2dmaWxlLCBpbnN0cl90aW1lICpub3cs DQorCSAgU3RhdHNEYXRhICphZ2csIGJvb2wgc2tpcHBlZCwgZG91YmxlIGxh dGVuY3ksIGRvdWJsZSBsYWcpDQogew0KLQlkb3VibGUJCWxhZzsNCi0JZG91 YmxlCQlsYXRlbmN5Ow0KLQ0KIAkvKg0KIAkgKiBTa2lwIHRoZSBsb2cgZW50 cnkgaWYgc2FtcGxpbmcgaXMgZW5hYmxlZCBhbmQgdGhpcyByb3cgZG9lc24n dCBiZWxvbmcNCiAJICogdG8gdGhlIHJhbmRvbSBzYW1wbGUuDQpAQCAtMTc3 MiwxNSArMTc2Nyw2IEBAIGRvTG9nKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUg KnN0LCBGSUxFICpsb2dmaWxlLCBpbnN0cl90aW1lICpub3csIEFnZ1ZhbHMg KmFnZywNCiAJCXBnX2VyYW5kNDgodGhyZWFkLT5yYW5kb21fc3RhdGUpID4g c2FtcGxlX3JhdGUpDQogCQlyZXR1cm47DQogDQotCWlmIChJTlNUUl9USU1F X0lTX1pFUk8oKm5vdykpDQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKCpu b3cpOw0KLQ0KLQlsYXRlbmN5ID0gKGRvdWJsZSkgKElOU1RSX1RJTUVfR0VU X01JQ1JPU0VDKCpub3cpIC0gc3QtPnR4bl9zY2hlZHVsZWQpOw0KLQlpZiAo c2tpcHBlZCkNCi0JCWxhZyA9IGxhdGVuY3k7DQotCWVsc2UNCi0JCWxhZyA9 IChkb3VibGUpIChJTlNUUl9USU1FX0dFVF9NSUNST1NFQyhzdC0+dHhuX2Jl Z2luKSAtIHN0LT50eG5fc2NoZWR1bGVkKTsNCi0NCiAJLyogc2hvdWxkIHdl IGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0cyBvciBub3Q/ICovDQogCWlmIChhZ2df aW50ZXJ2YWwgPiAwKQ0KIAl7DQpAQCAtMTc5MCwzOSArMTc3Niw3IEBAIGRv TG9nKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUgKnN0LCBGSUxFICpsb2dmaWxl LCBpbnN0cl90aW1lICpub3csIEFnZ1ZhbHMgKmFnZywNCiAJCSAqLw0KIAkJ aWYgKGFnZy0+c3RhcnRfdGltZSArIGFnZ19pbnRlcnZhbCA+PSBJTlNUUl9U SU1FX0dFVF9ET1VCTEUoKm5vdykpDQogCQl7DQotCQkJYWdnLT5jbnQgKz0g MTsNCi0JCQlpZiAoc2tpcHBlZCkNCi0JCQl7DQotCQkJCS8qDQotCQkJCSAq IHRoZXJlIGlzIG5vIGxhdGVuY3kgdG8gcmVjb3JkIGlmIHRoZSB0cmFuc2Fj dGlvbiB3YXMNCi0JCQkJICogc2tpcHBlZA0KLQkJCQkgKi8NCi0JCQkJYWdn LT5za2lwcGVkICs9IDE7DQotCQkJfQ0KLQkJCWVsc2UNCi0JCQl7DQotCQkJ CWFnZy0+c3VtX2xhdGVuY3kgKz0gbGF0ZW5jeTsNCi0JCQkJYWdnLT5zdW0y X2xhdGVuY3kgKz0gbGF0ZW5jeSAqIGxhdGVuY3k7DQotDQotCQkJCS8qIGZp cnN0IGluIHRoaXMgYWdncmVnYXRpb24gaW50ZXJ2YWwgKi8NCi0JCQkJaWYg KChhZ2ctPmNudCA9PSAxKSB8fCAobGF0ZW5jeSA8IGFnZy0+bWluX2xhdGVu Y3kpKQ0KLQkJCQkJYWdnLT5taW5fbGF0ZW5jeSA9IGxhdGVuY3k7DQotDQot CQkJCWlmICgoYWdnLT5jbnQgPT0gMSkgfHwgKGxhdGVuY3kgPiBhZ2ctPm1h eF9sYXRlbmN5KSkNCi0JCQkJCWFnZy0+bWF4X2xhdGVuY3kgPSBsYXRlbmN5 Ow0KLQ0KLQkJCQkvKiBhbmQgdGhlIHNhbWUgZm9yIHNjaGVkdWxlIGxhZyAq Lw0KLQkJCQlpZiAodGhyb3R0bGVfZGVsYXkpDQotCQkJCXsNCi0JCQkJCWFn Zy0+c3VtX2xhZyArPSBsYWc7DQotCQkJCQlhZ2ctPnN1bTJfbGFnICs9IGxh ZyAqIGxhZzsNCi0NCi0JCQkJCWlmICgoYWdnLT5jbnQgPT0gMSkgfHwgKGxh ZyA8IGFnZy0+bWluX2xhZykpDQotCQkJCQkJYWdnLT5taW5fbGFnID0gbGFn Ow0KLQkJCQkJaWYgKChhZ2ctPmNudCA9PSAxKSB8fCAobGFnID4gYWdnLT5t YXhfbGFnKSkNCi0JCQkJCQlhZ2ctPm1heF9sYWcgPSBsYWc7DQotCQkJCX0N Ci0JCQl9DQorCQkJZG9TdGF0cyhhZ2csIHNraXBwZWQsIGxhdGVuY3ksIGxh Zyk7DQogCQl9DQogCQllbHNlDQogCQl7DQpAQCAtMTgzNyw1MiArMTc5MSwz NCBAQCBkb0xvZyhUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwgRklMRSAq bG9nZmlsZSwgaW5zdHJfdGltZSAqbm93LCBBZ2dWYWxzICphZ2csDQogCQkJ CSAqIHVzYWdlKSwgc28gd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgdGhpcyBp biBhIHNwZWNpYWwgd2F5DQogCQkJCSAqIChzZWUgYmVsb3cpLg0KIAkJCQkg Ki8NCi0JCQkJZnByaW50Zihsb2dmaWxlLCAiJWxkICVkICUuMGYgJS4wZiAl LjBmICUuMGYiLA0KKwkJCQlmcHJpbnRmKGxvZ2ZpbGUsICIlbGQgIiBJTlQ2 NF9GT1JNQVQgIiAlLjBmICUuMGYgJS4wZiAlLjBmIiwNCiAJCQkJCQlhZ2ct PnN0YXJ0X3RpbWUsDQogCQkJCQkJYWdnLT5jbnQsDQotCQkJCQkJYWdnLT5z dW1fbGF0ZW5jeSwNCi0JCQkJCQlhZ2ctPnN1bTJfbGF0ZW5jeSwNCi0JCQkJ CQlhZ2ctPm1pbl9sYXRlbmN5LA0KLQkJCQkJCWFnZy0+bWF4X2xhdGVuY3kp Ow0KKwkJCQkJCWFnZy0+bGF0ZW5jeS5zdW0sDQorCQkJCQkJYWdnLT5sYXRl bmN5LnN1bTIsDQorCQkJCQkJYWdnLT5sYXRlbmN5Lm1pbiwNCisJCQkJCQlh Z2ctPmxhdGVuY3kubWF4KTsNCiAJCQkJaWYgKHRocm90dGxlX2RlbGF5KQ0K IAkJCQl7DQogCQkJCQlmcHJpbnRmKGxvZ2ZpbGUsICIgJS4wZiAlLjBmICUu MGYgJS4wZiIsDQotCQkJCQkJCWFnZy0+c3VtX2xhZywNCi0JCQkJCQkJYWdn LT5zdW0yX2xhZywNCi0JCQkJCQkJYWdnLT5taW5fbGFnLA0KLQkJCQkJCQlh Z2ctPm1heF9sYWcpOw0KKwkJCQkJCQlhZ2ctPmxhZy5zdW0sDQorCQkJCQkJ CWFnZy0+bGFnLnN1bTIsDQorCQkJCQkJCWFnZy0+bGFnLm1pbiwNCisJCQkJ CQkJYWdnLT5sYWcubWF4KTsNCiAJCQkJCWlmIChsYXRlbmN5X2xpbWl0KQ0K LQkJCQkJCWZwcmludGYobG9nZmlsZSwgIiAlZCIsIGFnZy0+c2tpcHBlZCk7 DQorCQkJCQkJZnByaW50Zihsb2dmaWxlLCAiICIgSU5UNjRfRk9STUFULCBh Z2ctPnNraXBwZWQpOw0KIAkJCQl9DQogCQkJCWZwdXRjKCdcbicsIGxvZ2Zp bGUpOw0KIA0KLQkJCQkvKiBtb3ZlIHRvIHRoZSBuZXh0IGludGV2YWwgKi8N Ci0JCQkJYWdnLT5zdGFydF90aW1lID0gYWdnLT5zdGFydF90aW1lICsgYWdn X2ludGVydmFsOw0KKwkJCQkvKiBtb3ZlIHRvIHRoZSBuZXh0IGludGVydmFs ICovDQorCQkJCWFnZy0+c3RhcnRfdGltZSArPSBhZ2dfaW50ZXJ2YWw7DQog DQogCQkJCS8qIHJlc2V0IGZvciAibm8gdHJhbnNhY3Rpb24iIGludGVydmFs cyAqLw0KLQkJCQlhZ2ctPmNudCA9IDA7DQotCQkJCWFnZy0+c2tpcHBlZCA9 IDA7DQotCQkJCWFnZy0+bWluX2xhdGVuY3kgPSAwOw0KLQkJCQlhZ2ctPm1h eF9sYXRlbmN5ID0gMDsNCi0JCQkJYWdnLT5zdW1fbGF0ZW5jeSA9IDA7DQot CQkJCWFnZy0+c3VtMl9sYXRlbmN5ID0gMDsNCi0JCQkJYWdnLT5taW5fbGFn ID0gMDsNCi0JCQkJYWdnLT5tYXhfbGFnID0gMDsNCi0JCQkJYWdnLT5zdW1f bGFnID0gMDsNCi0JCQkJYWdnLT5zdW0yX2xhZyA9IDA7DQorCQkJCWluaXRT dGF0cyhhZ2csIDAuMCk7DQogCQkJfQ0KIA0KIAkJCS8qIHJlc2V0IHRoZSB2 YWx1ZXMgdG8gaW5jbHVkZSBvbmx5IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9u LiAqLw0KLQkJCWFnZy0+Y250ID0gMTsNCi0JCQlhZ2ctPnNraXBwZWQgPSBz a2lwcGVkID8gMSA6IDA7DQotCQkJYWdnLT5taW5fbGF0ZW5jeSA9IGxhdGVu Y3k7DQotCQkJYWdnLT5tYXhfbGF0ZW5jeSA9IGxhdGVuY3k7DQotCQkJYWdn LT5zdW1fbGF0ZW5jeSA9IHNraXBwZWQgPyAwLjAgOiBsYXRlbmN5Ow0KLQkJ CWFnZy0+c3VtMl9sYXRlbmN5ID0gc2tpcHBlZCA/IDAuMCA6IGxhdGVuY3kg KiBsYXRlbmN5Ow0KLQkJCWFnZy0+bWluX2xhZyA9IGxhZzsNCi0JCQlhZ2ct Pm1heF9sYWcgPSBsYWc7DQotCQkJYWdnLT5zdW1fbGFnID0gbGFnOw0KLQkJ CWFnZy0+c3VtMl9sYWcgPSBsYWcgKiBsYWc7DQorCQkJZG9TdGF0cyhhZ2cs IHNraXBwZWQsIGxhdGVuY3ksIGxhZyk7DQogCQl9DQogCX0NCiAJZWxzZQ0K QEAgLTE4OTIsMjEgKzE4MjgsMjEgQEAgZG9Mb2coVFN0YXRlICp0aHJlYWQs IENTdGF0ZSAqc3QsIEZJTEUgKmxvZ2ZpbGUsIGluc3RyX3RpbWUgKm5vdywg QWdnVmFscyAqYWdnLA0KIA0KIAkJLyogVGhpcyBpcyBtb3JlIHRoYW4gd2Ug cmVhbGx5IG91Z2h0IHRvIGtub3cgYWJvdXQgaW5zdHJfdGltZSAqLw0KIAkJ aWYgKHNraXBwZWQpDQotCQkJZnByaW50Zihsb2dmaWxlLCAiJWQgJWQgc2tp cHBlZCAlZCAlbGQgJWxkIiwNCisJCQlmcHJpbnRmKGxvZ2ZpbGUsICIlZCAi IElOVDY0X0ZPUk1BVCAiIHNraXBwZWQgJWQgJWxkICVsZCIsDQogCQkJCQlz dC0+aWQsIHN0LT5jbnQsIHN0LT51c2VfZmlsZSwNCiAJCQkJCShsb25nKSBu b3ctPnR2X3NlYywgKGxvbmcpIG5vdy0+dHZfdXNlYyk7DQogCQllbHNlDQot CQkJZnByaW50Zihsb2dmaWxlLCAiJWQgJWQgJS4wZiAlZCAlbGQgJWxkIiwN CisJCQlmcHJpbnRmKGxvZ2ZpbGUsICIlZCAiIElOVDY0X0ZPUk1BVCAiICUu MGYgJWQgJWxkICVsZCIsDQogCQkJCQlzdC0+aWQsIHN0LT5jbnQsIGxhdGVu Y3ksIHN0LT51c2VfZmlsZSwNCiAJCQkJCShsb25nKSBub3ctPnR2X3NlYywg KGxvbmcpIG5vdy0+dHZfdXNlYyk7DQogI2Vsc2UNCiANCiAJCS8qIE9uIFdp bmRvd3MsIGluc3RyX3RpbWUgZG9lc24ndCBwcm92aWRlIGEgdGltZXN0YW1w IGFueXdheSAqLw0KIAkJaWYgKHNraXBwZWQpDQotCQkJZnByaW50Zihsb2dm aWxlLCAiJWQgJWQgc2tpcHBlZCAlZCAwIDAiLA0KKwkJCWZwcmludGYobG9n ZmlsZSwgIiVkICJJTlQ2NF9GT1JNQVQiIHNraXBwZWQgJWQgMCAwIiwNCiAJ CQkJCXN0LT5pZCwgc3QtPmNudCwgc3QtPnVzZV9maWxlKTsNCiAJCWVsc2UN Ci0JCQlmcHJpbnRmKGxvZ2ZpbGUsICIlZCAlZCAlLjBmICVkIDAgMCIsDQor CQkJZnByaW50Zihsb2dmaWxlLCAiJWQgIklOVDY0X0ZPUk1BVCIgJS4wZiAl ZCAwIDAiLA0KIAkJCQkJc3QtPmlkLCBzdC0+Y250LCBsYXRlbmN5LCBzdC0+ dXNlX2ZpbGUpOw0KICNlbmRpZg0KIAkJaWYgKHRocm90dGxlX2RlbGF5KQ0K QEAgLTE5MTUsNiArMTg1MSw0MSBAQCBkb0xvZyhUU3RhdGUgKnRocmVhZCwg Q1N0YXRlICpzdCwgRklMRSAqbG9nZmlsZSwgaW5zdHJfdGltZSAqbm93LCBB Z2dWYWxzICphZ2csDQogCX0NCiB9DQogDQorLyoNCisgKiBlbmQgb2YgdHJh bnNhY3Rpb24gc3RhdGlzdGljcw0KKyAqLw0KK3N0YXRpYyB2b2lkDQorZG9U eFN0YXRzKFRTdGF0ZSAqdGhyZWFkLCBDU3RhdGUgKnN0LCBpbnN0cl90aW1l ICpub3csDQorCQkgIGJvb2wgc2tpcHBlZCwgRklMRSAqbG9nZmlsZSwgU3Rh dHNEYXRhICphZ2cpDQorew0KKwlkb3VibGUgbGF0ZW5jeSA9IDAuMCwgbGFn ID0gMC4wOw0KKw0KKwlpZiAoKCFza2lwcGVkIHx8IGFnZ19pbnRlcnZhbCkg JiYgSU5TVFJfVElNRV9JU19aRVJPKCpub3cpKQ0KKwkJSU5TVFJfVElNRV9T RVRfQ1VSUkVOVCgqbm93KTsNCisNCisJaWYgKCFza2lwcGVkKQ0KKwl7DQor CQkvKiBjb21wdXRlIGxhdGVuY3kgJiBsYWcgaWYgbmVlZGVkICovDQorCQls YXRlbmN5ID0gSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoKm5vdykgLSBzdC0+ dHhuX3NjaGVkdWxlZDsNCisJCWxhZyA9IElOU1RSX1RJTUVfR0VUX01JQ1JP U0VDKHN0LT50eG5fYmVnaW4pIC0gc3QtPnR4bl9zY2hlZHVsZWQ7DQorCX0N CisNCisJaWYgKHByb2dyZXNzIHx8IHRocm90dGxlX2RlbGF5IHx8IGxhdGVu Y3lfbGltaXQpDQorCXsNCisJCWRvU3RhdHMoJiB0aHJlYWQtPnN0YXRzLCBz a2lwcGVkLCBsYXRlbmN5LCBsYWcpOw0KKw0KKwkJLyogcmVjb3JkIG92ZXIg dGhlIGxpbWl0IHRyYW5zYWN0aW9ucyBpZiBuZWVkZWQuICovDQorCQlpZiAo bGF0ZW5jeV9saW1pdCAmJiBsYXRlbmN5ID4gbGF0ZW5jeV9saW1pdCkNCisJ CQl0aHJlYWQtPmxhdGVuY3lfbGF0ZSsrOw0KKwl9DQorCWVsc2UNCisJCXRo cmVhZC0+c3RhdHMuY250ICsrOw0KKw0KKwlpZiAodXNlX2xvZykNCisJCWRv TG9nKHRocmVhZCwgc3QsIGxvZ2ZpbGUsIG5vdywgYWdnLCBza2lwcGVkLCBs YXRlbmN5LCBsYWcpOw0KK30NCisNCisNCiAvKiBkaXNjYXJkIGNvbm5lY3Rp b25zICovDQogc3RhdGljIHZvaWQNCiBkaXNjb25uZWN0X2FsbChDU3RhdGUg KnN0YXRlLCBpbnQgbGVuZ3RoKQ0KQEAgLTIzMTEsNiArMjI4Miw3IEBAIHBy b2Nlc3NfY29tbWFuZHMoY2hhciAqYnVmLCBjb25zdCBjaGFyICpzb3VyY2Us IGNvbnN0IGludCBsaW5lbm8pDQogCW15X2NvbW1hbmRzLT5jb21tYW5kX251 bSA9IG51bV9jb21tYW5kcysrOw0KIAlteV9jb21tYW5kcy0+dHlwZSA9IDA7 CQkvKiB1bnRpbCBzZXQgKi8NCiAJbXlfY29tbWFuZHMtPmFyZ2MgPSAwOw0K Kwlpbml0U2ltcGxlU3RhdHMoJiBteV9jb21tYW5kcy0+c3RhdHMpOw0KIA0K IAlpZiAoKnAgPT0gJ1xcJykNCiAJew0KQEAgLTI2NjgsMjIgKzI2NDAsMjgg QEAgYWRkU2NyaXB0KGNvbnN0IGNoYXIgKm5hbWUsIENvbW1hbmQgKiogY29t bWFuZHMpDQogCW51bV9zY3JpcHRzKys7DQogfQ0KIA0KK3N0YXRpYyB2b2lk DQorcHJpbnRTaW1wbGVTdGF0cyhjaGFyICpwcmVmaXgsIFNpbXBsZVN0YXRz ICpzcykNCit7DQorCS8qIHByaW50IE5hTiBpZiBubyB0cmFuc2FjdGlvbnMg d2hlcmUgZXhlY3V0ZWQgKi8NCisJZG91YmxlIGxhdGVuY3kgPSBzcy0+c3Vt IC8gc3MtPmNvdW50Ow0KKwlkb3VibGUgc3RkZGV2ID0gc3FydChzcy0+c3Vt MiAvIHNzLT5jb3VudCAtIGxhdGVuY3kqbGF0ZW5jeSk7DQorCXByaW50Zigi JXMgYXZlcmFnZSA9ICUuM2YgbXNcbiIsIHByZWZpeCwgMC4wMDEgKiBsYXRl bmN5KTsNCisJcHJpbnRmKCIlcyBzdGRkZXYgPSAlLjNmIG1zXG4iLCBwcmVm aXgsIDAuMDAxICogc3RkZGV2KTsNCit9DQorDQogLyogcHJpbnQgb3V0IHJl c3VsdHMgKi8NCiBzdGF0aWMgdm9pZA0KLXByaW50UmVzdWx0cyhpbnQ2NCBu b3JtYWxfeGFjdHMsIGludCBuY2xpZW50cywNCi0JCQkgVFN0YXRlICp0aHJl YWRzLCBpbnQgbnRocmVhZHMsDQotCQkJIGluc3RyX3RpbWUgdG90YWxfdGlt ZSwgaW5zdHJfdGltZSBjb25uX3RvdGFsX3RpbWUsDQotCQkJIGludDY0IHRv dGFsX2xhdGVuY2llcywgaW50NjQgdG90YWxfc3FsYXRzLA0KLQkJCSBpbnQ2 NCB0aHJvdHRsZV9sYWcsIGludDY0IHRocm90dGxlX2xhZ19tYXgsDQotCQkJ IGludDY0IHRocm90dGxlX2xhdGVuY3lfc2tpcHBlZCwgaW50NjQgbGF0ZW5j eV9sYXRlKQ0KK3ByaW50UmVzdWx0cyhUU3RhdGUgKnRocmVhZHMsIFN0YXRz RGF0YSAqdG90YWwsIGluc3RyX3RpbWUgdG90YWxfdGltZSwNCisJCQkgaW5z dHJfdGltZSBjb25uX3RvdGFsX3RpbWUsIGludCBsYXRlbmN5X2xhdGUpDQog ew0KIAlkb3VibGUJCXRpbWVfaW5jbHVkZSwNCiAJCQkJdHBzX2luY2x1ZGUs DQogCQkJCXRwc19leGNsdWRlOw0KIA0KIAl0aW1lX2luY2x1ZGUgPSBJTlNU Ul9USU1FX0dFVF9ET1VCTEUodG90YWxfdGltZSk7DQotCXRwc19pbmNsdWRl ID0gbm9ybWFsX3hhY3RzIC8gdGltZV9pbmNsdWRlOw0KLQl0cHNfZXhjbHVk ZSA9IG5vcm1hbF94YWN0cyAvICh0aW1lX2luY2x1ZGUgLQ0KKwl0cHNfaW5j bHVkZSA9IHRvdGFsLT5jbnQgLyB0aW1lX2luY2x1ZGU7DQorCXRwc19leGNs dWRlID0gdG90YWwtPmNudCAvICh0aW1lX2luY2x1ZGUgLQ0KIAkJCQkJCShJ TlNUUl9USU1FX0dFVF9ET1VCTEUoY29ubl90b3RhbF90aW1lKSAvIG5jbGll bnRzKSk7DQogDQogCXByaW50ZigidHJhbnNhY3Rpb24gdHlwZTogJXNcbiIs DQpAQCAtMjY5NSw0OSArMjY3MywzOCBAQCBwcmludFJlc3VsdHMoaW50NjQg bm9ybWFsX3hhY3RzLCBpbnQgbmNsaWVudHMsDQogCWlmIChkdXJhdGlvbiA8 PSAwKQ0KIAl7DQogCQlwcmludGYoIm51bWJlciBvZiB0cmFuc2FjdGlvbnMg cGVyIGNsaWVudDogJWRcbiIsIG54YWN0cyk7DQotCQlwcmludGYoIm51bWJl ciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAiIElOVDY0 X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICJcbiIsDQotCQkJICAgbm9ybWFs X3hhY3RzLCAoaW50NjQpIG54YWN0cyAqIG5jbGllbnRzKTsNCisJCXByaW50 ZigibnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6 ICJJTlQ2NF9GT1JNQVQiLyVkXG4iLA0KKwkJCSAgIHRvdGFsLT5jbnQsIG54 YWN0cyAqIG5jbGllbnRzKTsNCiAJfQ0KIAllbHNlDQogCXsNCiAJCXByaW50 ZigiZHVyYXRpb246ICVkIHNcbiIsIGR1cmF0aW9uKTsNCi0JCXByaW50Zigi bnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6ICIg SU5UNjRfRk9STUFUICJcbiIsDQotCQkJICAgbm9ybWFsX3hhY3RzKTsNCisJ CXByaW50ZigibnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9j ZXNzZWQ6ICJJTlQ2NF9GT1JNQVQiXG4iLA0KKwkJCSAgIHRvdGFsLT5jbnQp Ow0KIAl9DQogDQogCS8qIFJlbWFpbmluZyBzdGF0cyBhcmUgbm9uc2Vuc2lj YWwgaWYgd2UgZmFpbGVkIHRvIGV4ZWN1dGUgYW55IHhhY3RzICovDQotCWlm IChub3JtYWxfeGFjdHMgPD0gMCkNCisJaWYgKHRvdGFsLT5jbnQgPD0gMCkN CiAJCXJldHVybjsNCiANCiAJaWYgKHRocm90dGxlX2RlbGF5ICYmIGxhdGVu Y3lfbGltaXQpDQotCQlwcmludGYoIm51bWJlciBvZiB0cmFuc2FjdGlvbnMg c2tpcHBlZDogIiBJTlQ2NF9GT1JNQVQgIiAoJS4zZiAlJSlcbiIsDQotCQkJ ICAgdGhyb3R0bGVfbGF0ZW5jeV9za2lwcGVkLA0KLQkJCSAgIDEwMC4wICog dGhyb3R0bGVfbGF0ZW5jeV9za2lwcGVkIC8gKHRocm90dGxlX2xhdGVuY3lf c2tpcHBlZCArIG5vcm1hbF94YWN0cykpOw0KKwkJcHJpbnRmKCJudW1iZXIg b2YgdHJhbnNhY3Rpb25zIHNraXBwZWQ6ICJJTlQ2NF9GT1JNQVQiICglLjNm ICUlKVxuIiwNCisJCQkgICB0b3RhbC0+c2tpcHBlZCwNCisJCQkgICAxMDAu MCAqIHRvdGFsLT5za2lwcGVkIC8gKHRvdGFsLT5za2lwcGVkICsgdG90YWwt PmNudCkpOw0KIA0KIAlpZiAobGF0ZW5jeV9saW1pdCkNCi0JCXByaW50Zigi bnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhYm92ZSB0aGUgJS4xZiBtcyBsYXRl bmN5IGxpbWl0OiAiIElOVDY0X0ZPUk1BVCAiICglLjNmICUlKVxuIiwNCisJ CXByaW50ZigibnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhYm92ZSB0aGUgJS4x ZiBtcyBsYXRlbmN5IGxpbWl0OiAlZCAoJS4zZiAlJSlcbiIsDQogCQkJICAg bGF0ZW5jeV9saW1pdCAvIDEwMDAuMCwgbGF0ZW5jeV9sYXRlLA0KLQkJICAg MTAwLjAgKiBsYXRlbmN5X2xhdGUgLyAodGhyb3R0bGVfbGF0ZW5jeV9za2lw cGVkICsgbm9ybWFsX3hhY3RzKSk7DQorCQkgICAxMDAuMCAqIGxhdGVuY3lf bGF0ZSAvICh0b3RhbC0+c2tpcHBlZCArIHRvdGFsLT5jbnQpKTsNCiANCiAJ aWYgKHRocm90dGxlX2RlbGF5IHx8IHByb2dyZXNzIHx8IGxhdGVuY3lfbGlt aXQpDQotCXsNCi0JCS8qIGNvbXB1dGUgYW5kIHNob3cgbGF0ZW5jeSBhdmVy YWdlIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24gKi8NCi0JCWRvdWJsZQkJbGF0 ZW5jeSA9IDAuMDAxICogdG90YWxfbGF0ZW5jaWVzIC8gbm9ybWFsX3hhY3Rz Ow0KLQkJZG91YmxlCQlzcWxhdCA9IChkb3VibGUpIHRvdGFsX3NxbGF0cyAv IG5vcm1hbF94YWN0czsNCi0NCi0JCXByaW50ZigibGF0ZW5jeSBhdmVyYWdl OiAlLjNmIG1zXG4iDQotCQkJICAgImxhdGVuY3kgc3RkZGV2OiAlLjNmIG1z XG4iLA0KLQkJCSAgIGxhdGVuY3ksIDAuMDAxICogc3FydChzcWxhdCAtIDEw MDAwMDAuMCAqIGxhdGVuY3kgKiBsYXRlbmN5KSk7DQotCX0NCisJCXByaW50 U2ltcGxlU3RhdHMoImxhdGVuY3kiLCAmIHRvdGFsLT5sYXRlbmN5KTsNCiAJ ZWxzZQ0KLQl7DQogCQkvKiBvbmx5IGFuIGF2ZXJhZ2UgbGF0ZW5jeSBjb21w dXRlZCBmcm9tIHRoZSBkdXJhdGlvbiBpcyBhdmFpbGFibGUgKi8NCiAJCXBy aW50ZigibGF0ZW5jeSBhdmVyYWdlOiAlLjNmIG1zXG4iLA0KLQkJCSAgIDEw MDAuMCAqIGR1cmF0aW9uICogbmNsaWVudHMgLyBub3JtYWxfeGFjdHMpOw0K LQl9DQorCQkJICAgMTAwMC4wICogZHVyYXRpb24gKiBuY2xpZW50cyAvIHRv dGFsLT5jbnQpOw0KIA0KIAlpZiAodGhyb3R0bGVfZGVsYXkpDQotCXsNCiAJ CS8qDQogCQkgKiBSZXBvcnQgYXZlcmFnZSB0cmFuc2FjdGlvbiBsYWcgdW5k ZXIgcmF0ZSBsaW1pdCB0aHJvdHRsaW5nLiAgVGhpcw0KIAkJICogaXMgdGhl IGRlbGF5IGJldHdlZW4gc2NoZWR1bGVkIGFuZCBhY3R1YWwgc3RhcnQgdGlt ZXMgZm9yIHRoZQ0KQEAgLTI3NDUsOCArMjcxMiw3IEBAIHByaW50UmVzdWx0 cyhpbnQ2NCBub3JtYWxfeGFjdHMsIGludCBuY2xpZW50cywNCiAJCSAqIHRo ZSBkYXRhYmFzZSBsb2FkLCBvciB0aGUgUG9pc3NvbiB0aHJvdHRsaW5nIHBy b2Nlc3MuDQogCQkgKi8NCiAJCXByaW50ZigicmF0ZSBsaW1pdCBzY2hlZHVs ZSBsYWc6IGF2ZyAlLjNmIChtYXggJS4zZikgbXNcbiIsDQotCQkJICAgMC4w MDEgKiB0aHJvdHRsZV9sYWcgLyBub3JtYWxfeGFjdHMsIDAuMDAxICogdGhy b3R0bGVfbGFnX21heCk7DQotCX0NCisJCQkgICAwLjAwMSAqIHRvdGFsLT5s YWcuc3VtIC8gdG90YWwtPmNudCwgMC4wMDEgKiB0b3RhbC0+bGFnLm1heCk7 DQogDQogCXByaW50ZigidHBzID0gJWYgKGluY2x1ZGluZyBjb25uZWN0aW9u cyBlc3RhYmxpc2hpbmcpXG4iLCB0cHNfaW5jbHVkZSk7DQogCXByaW50Zigi dHBzID0gJWYgKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcp XG4iLCB0cHNfZXhjbHVkZSk7DQpAQCAtMjc1OCwzOSArMjcyNCwxNCBAQCBw cmludFJlc3VsdHMoaW50NjQgbm9ybWFsX3hhY3RzLCBpbnQgbmNsaWVudHMs DQogDQogCQlmb3IgKGkgPSAwOyBpIDwgbnVtX3NjcmlwdHM7IGkrKykNCiAJ CXsNCi0JCQlDb21tYW5kICAgKipjb21tYW5kczsNCisJCQlDb21tYW5kICoq IGNvbTsNCiANCiAJCQlwcmludGYoIlNRTCBzY3JpcHQgJWQ6ICVzXG4iLCBp KzEsIHNxbF9zY3JpcHRbaV0ubmFtZSk7DQogCQkJcHJpbnRmKCIgLSBwZXIg Y29tbWFuZCBsYXRlbmNpZXMgaW4gbXM6XG4iKTsNCi0NCi0JCQlmb3IgKGNv bW1hbmRzID0gc3FsX3NjcmlwdFtpXS5jb21tYW5kczsgKmNvbW1hbmRzICE9 IE5VTEw7IGNvbW1hbmRzKyspDQotCQkJew0KLQkJCQlDb21tYW5kICAgICpj b21tYW5kID0gKmNvbW1hbmRzOw0KLQkJCQlpbnQJCQljbnVtID0gY29tbWFu ZC0+Y29tbWFuZF9udW07DQotCQkJCWRvdWJsZQkJdG90YWxfdGltZTsNCi0J CQkJaW5zdHJfdGltZQl0b3RhbF9leGVjX2VsYXBzZWQ7DQotCQkJCWludAkJ CXRvdGFsX2V4ZWNfY291bnQ7DQotCQkJCWludAkJCXQ7DQotDQotCQkJCS8q IEFjY3VtdWxhdGUgcGVyLXRocmVhZCBkYXRhIGZvciBjb21tYW5kICovDQot CQkJCUlOU1RSX1RJTUVfU0VUX1pFUk8odG90YWxfZXhlY19lbGFwc2VkKTsN Ci0JCQkJdG90YWxfZXhlY19jb3VudCA9IDA7DQotCQkJCWZvciAodCA9IDA7 IHQgPCBudGhyZWFkczsgdCsrKQ0KLQkJCQl7DQotCQkJCQlUU3RhdGUJICAg KnRocmVhZCA9ICZ0aHJlYWRzW3RdOw0KLQ0KLQkJCQkJSU5TVFJfVElNRV9B REQodG90YWxfZXhlY19lbGFwc2VkLA0KLQkJCQkJCQkJICAgdGhyZWFkLT5l eGVjX2VsYXBzZWRbY251bV0pOw0KLQkJCQkJdG90YWxfZXhlY19jb3VudCAr PSB0aHJlYWQtPmV4ZWNfY291bnRbY251bV07DQotCQkJCX0NCi0NCi0JCQkJ aWYgKHRvdGFsX2V4ZWNfY291bnQgPiAwKQ0KLQkJCQkJdG90YWxfdGltZSA9 IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHRvdGFsX2V4ZWNfZWxhcHNlZCkg LyAoZG91YmxlKSB0b3RhbF9leGVjX2NvdW50Ow0KLQkJCQllbHNlDQotCQkJ CQl0b3RhbF90aW1lID0gMC4wOw0KLQ0KLQkJCQlwcmludGYoIlx0JWZcdCVz XG4iLCB0b3RhbF90aW1lLCBjb21tYW5kLT5saW5lKTsNCi0JCQl9DQorCQkJ Zm9yIChjb20gPSBzcWxfc2NyaXB0W2ldLmNvbW1hbmRzOyAqY29tICE9IE5V TEw7IGNvbSsrKQ0KKwkJCQlwcmludGYoIiAgICUxMS4zZiAgJXNcbiIsDQor CQkJCQkgICAxMDAwLjAgKiAoKmNvbSktPnN0YXRzLnN1bSAvICgqY29tKS0+ c3RhdHMuY291bnQsDQorCQkJCQkgICAoKmNvbSktPmxpbmUpOw0KIAkJfQ0K IAl9DQogfQ0KQEAgLTI4MzksOCArMjc4MCw2IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQ0KIAl9Ow0KIA0KIAlpbnQJCQljOw0KLQlpbnQJCQlu Y2xpZW50cyA9IDE7CS8qIGRlZmF1bHQgbnVtYmVyIG9mIHNpbXVsYXRlZCBj bGllbnRzICovDQotCWludAkJCW50aHJlYWRzID0gMTsJLyogZGVmYXVsdCBu dW1iZXIgb2YgdGhyZWFkcyAqLw0KIAlpbnQJCQlpc19pbml0X21vZGUgPSAw OwkJLyogaW5pdGlhbGl6ZSBtb2RlPyAqLw0KIAlpbnQJCQlpc19ub192YWN1 dW0gPSAwOwkJLyogbm8gdmFjdXVtIGF0IGFsbCBiZWZvcmUgdGVzdGluZz8g Ki8NCiAJaW50CQkJZG9fdmFjdXVtX2FjY291bnRzID0gMDsgLyogZG8gdmFj dXVtIGFjY291bnRzIGJlZm9yZSB0ZXN0aW5nPyAqLw0KQEAgLTI4NTcsMTMg KzI3OTYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJaW5z dHJfdGltZQlzdGFydF90aW1lOwkJLyogc3RhcnQgdXAgdGltZSAqLw0KIAlp bnN0cl90aW1lCXRvdGFsX3RpbWU7DQogCWluc3RyX3RpbWUJY29ubl90b3Rh bF90aW1lOw0KLQlpbnQ2NAkJdG90YWxfeGFjdHMgPSAwOw0KLQlpbnQ2NAkJ dG90YWxfbGF0ZW5jaWVzID0gMDsNCi0JaW50NjQJCXRvdGFsX3NxbGF0cyA9 IDA7DQotCWludDY0CQl0aHJvdHRsZV9sYWcgPSAwOw0KLQlpbnQ2NAkJdGhy b3R0bGVfbGFnX21heCA9IDA7DQotCWludDY0CQl0aHJvdHRsZV9sYXRlbmN5 X3NraXBwZWQgPSAwOw0KIAlpbnQ2NAkJbGF0ZW5jeV9sYXRlID0gMDsNCisJ U3RhdHNEYXRhCXN0YXRzOw0KIAljaGFyCSAgICpkZXNjOw0KIA0KIAlpbnQJ CQlpOw0KQEAgLTMyOTMsOCArMzIyNyw2IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQ0KIAkgKiBjaGFuZ2VkIGFmdGVyIGZvcmsuDQogCSAqLw0K IAltYWluX3BpZCA9IChpbnQpIGdldHBpZCgpOw0KLQlwcm9ncmVzc19uY2xp ZW50cyA9IG5jbGllbnRzOw0KLQlwcm9ncmVzc19udGhyZWFkcyA9IG50aHJl YWRzOw0KIA0KIAlpZiAobmNsaWVudHMgPiAxKQ0KIAl7DQpAQCAtMzQzNiwz MiArMzM2OCwxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJ CXRocmVhZC0+cmFuZG9tX3N0YXRlWzBdID0gcmFuZG9tKCk7DQogCQl0aHJl YWQtPnJhbmRvbV9zdGF0ZVsxXSA9IHJhbmRvbSgpOw0KIAkJdGhyZWFkLT5y YW5kb21fc3RhdGVbMl0gPSByYW5kb20oKTsNCi0JCXRocmVhZC0+dGhyb3R0 bGVfbGF0ZW5jeV9za2lwcGVkID0gMDsNCiAJCXRocmVhZC0+bGF0ZW5jeV9s YXRlID0gMDsNCisJCWluaXRTdGF0cygmIHRocmVhZC0+c3RhdHMsIDAuMCk7 DQogDQogCQluY2xpZW50c19kZWFsdCArPSB0aHJlYWQtPm5zdGF0ZTsNCi0N Ci0JCWlmIChpc19sYXRlbmNpZXMpDQotCQl7DQotCQkJLyogUmVzZXJ2ZSBt ZW1vcnkgZm9yIHRoZSB0aHJlYWQgdG8gc3RvcmUgcGVyLWNvbW1hbmQgbGF0 ZW5jaWVzICovDQotCQkJaW50CQkJdDsNCi0NCi0JCQl0aHJlYWQtPmV4ZWNf ZWxhcHNlZCA9IChpbnN0cl90aW1lICopDQotCQkJCXBnX21hbGxvYyhzaXpl b2YoaW5zdHJfdGltZSkgKiBudW1fY29tbWFuZHMpOw0KLQkJCXRocmVhZC0+ ZXhlY19jb3VudCA9IChpbnQgKikNCi0JCQkJcGdfbWFsbG9jKHNpemVvZihp bnQpICogbnVtX2NvbW1hbmRzKTsNCi0NCi0JCQlmb3IgKHQgPSAwOyB0IDwg bnVtX2NvbW1hbmRzOyB0KyspDQotCQkJew0KLQkJCQlJTlNUUl9USU1FX1NF VF9aRVJPKHRocmVhZC0+ZXhlY19lbGFwc2VkW3RdKTsNCi0JCQkJdGhyZWFk LT5leGVjX2NvdW50W3RdID0gMDsNCi0JCQl9DQotCQl9DQotCQllbHNlDQot CQl7DQotCQkJdGhyZWFkLT5leGVjX2VsYXBzZWQgPSBOVUxMOw0KLQkJCXRo cmVhZC0+ZXhlY19jb3VudCA9IE5VTEw7DQotCQl9DQogCX0NCiANCiAJLyog YWxsIGNsaWVudHMgbXVzdCBiZSBhc3NpZ25lZCB0byBhIHRocmVhZCAqLw0K QEAgLTM1MDQsMTEgKzM0MTQsMTEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpDQogI2VuZGlmICAgLyogRU5BQkxFX1RIUkVBRF9TQUZFVFkgKi8N CiANCiAJLyogd2FpdCBmb3IgdGhyZWFkcyBhbmQgYWNjdW11bGF0ZSByZXN1 bHRzICovDQorCWluaXRTdGF0cygmIHN0YXRzLCAwLjApOw0KIAlJTlNUUl9U SU1FX1NFVF9aRVJPKGNvbm5fdG90YWxfdGltZSk7DQogCWZvciAoaSA9IDA7 IGkgPCBudGhyZWFkczsgaSsrKQ0KIAl7DQogCQlUU3RhdGUJICAgKnRocmVh ZCA9ICZ0aHJlYWRzW2ldOw0KLQkJaW50CQkJajsNCiANCiAjaWZkZWYgRU5B QkxFX1RIUkVBRF9TQUZFVFkNCiAJCWlmICh0aHJlYWRzW2ldLnRocmVhZCA9 PSBJTlZBTElEX1RIUkVBRCkNCkBAIC0zNTIxLDIxICszNDMxLDEzIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIAkJKHZvaWQpIHRocmVhZFJ1 bih0aHJlYWQpOw0KICNlbmRpZiAgIC8qIEVOQUJMRV9USFJFQURfU0FGRVRZ ICovDQogDQotCQkvKiB0aHJlYWQgbGV2ZWwgc3RhdHMgKi8NCi0JCXRocm90 dGxlX2xhZyArPSB0aHJlYWQtPnRocm90dGxlX2xhZzsNCi0JCXRocm90dGxl X2xhdGVuY3lfc2tpcHBlZCArPSB0aHJlYWRzLT50aHJvdHRsZV9sYXRlbmN5 X3NraXBwZWQ7DQorCQkvKiBhZ2dyZWdhdGUgdGhyZWFkIGxldmVsIHN0YXRz ICovDQorCQlhcHBlbmRTaW1wbGVTdGF0cygmIHN0YXRzLmxhdGVuY3ksICYg dGhyZWFkLT5zdGF0cy5sYXRlbmN5KTsNCisJCWFwcGVuZFNpbXBsZVN0YXRz KCYgc3RhdHMubGFnLCAmIHRocmVhZC0+c3RhdHMubGFnKTsNCisJCXN0YXRz LmNudCArPSB0aHJlYWQtPnN0YXRzLmNudDsNCisJCXN0YXRzLnNraXBwZWQg Kz0gdGhyZWFkLT5zdGF0cy5za2lwcGVkOw0KIAkJbGF0ZW5jeV9sYXRlICs9 IHRocmVhZC0+bGF0ZW5jeV9sYXRlOw0KLQkJaWYgKHRocm90dGxlX2xhZ19t YXggPiB0aHJlYWQtPnRocm90dGxlX2xhZ19tYXgpDQotCQkJdGhyb3R0bGVf bGFnX21heCA9IHRocmVhZC0+dGhyb3R0bGVfbGFnX21heDsNCiAJCUlOU1RS X1RJTUVfQUREKGNvbm5fdG90YWxfdGltZSwgdGhyZWFkLT5jb25uX3RpbWUp Ow0KLQ0KLQkJLyogY2xpZW50LWxldmVsIHN0YXRzICovDQotCQlmb3IgKGog PSAwOyBqIDwgdGhyZWFkLT5uc3RhdGU7IGorKykNCi0JCXsNCi0JCQl0b3Rh bF94YWN0cyArPSB0aHJlYWQtPnN0YXRlW2pdLmNudDsNCi0JCQl0b3RhbF9s YXRlbmNpZXMgKz0gdGhyZWFkLT5zdGF0ZVtqXS50eG5fbGF0ZW5jaWVzOw0K LQkJCXRvdGFsX3NxbGF0cyArPSB0aHJlYWQtPnN0YXRlW2pdLnR4bl9zcWxh dHM7DQotCQl9DQogCX0NCiAJZGlzY29ubmVjdF9hbGwoc3RhdGUsIG5jbGll bnRzKTsNCiANCkBAIC0zNTUxLDEwICszNDUzLDcgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpDQogCSAqLw0KIAlJTlNUUl9USU1FX1NFVF9DVVJS RU5UKHRvdGFsX3RpbWUpOw0KIAlJTlNUUl9USU1FX1NVQlRSQUNUKHRvdGFs X3RpbWUsIHN0YXJ0X3RpbWUpOw0KLQlwcmludFJlc3VsdHModG90YWxfeGFj dHMsIG5jbGllbnRzLCB0aHJlYWRzLCBudGhyZWFkcywNCi0JCQkJIHRvdGFs X3RpbWUsIGNvbm5fdG90YWxfdGltZSwgdG90YWxfbGF0ZW5jaWVzLCB0b3Rh bF9zcWxhdHMsDQotCQkJCSB0aHJvdHRsZV9sYWcsIHRocm90dGxlX2xhZ19t YXgsIHRocm90dGxlX2xhdGVuY3lfc2tpcHBlZCwNCi0JCQkJIGxhdGVuY3lf bGF0ZSk7DQorCXByaW50UmVzdWx0cyh0aHJlYWRzLCAmc3RhdHMsIHRvdGFs X3RpbWUsIGNvbm5fdG90YWxfdGltZSwgbGF0ZW5jeV9sYXRlKTsNCiANCiAJ cmV0dXJuIDA7DQogfQ0KQEAgLTM1NzUsMTMgKzM0NzQsNyBAQCB0aHJlYWRS dW4odm9pZCAqYXJnKQ0KIAlpbnQ2NAkJdGhyZWFkX3N0YXJ0ID0gSU5TVFJf VElNRV9HRVRfTUlDUk9TRUModGhyZWFkLT5zdGFydF90aW1lKTsNCiAJaW50 NjQJCWxhc3RfcmVwb3J0ID0gdGhyZWFkX3N0YXJ0Ow0KIAlpbnQ2NAkJbmV4 dF9yZXBvcnQgPSBsYXN0X3JlcG9ydCArIChpbnQ2NCkgcHJvZ3Jlc3MgKiAx MDAwMDAwOw0KLQlpbnQ2NAkJbGFzdF9jb3VudCA9IDAsDQotCQkJCWxhc3Rf bGF0cyA9IDAsDQotCQkJCWxhc3Rfc3FsYXRzID0gMCwNCi0JCQkJbGFzdF9s YWdzID0gMCwNCi0JCQkJbGFzdF9za2lwcGVkID0gMDsNCi0NCi0JQWdnVmFs cwkJYWdnczsNCisJU3RhdHNEYXRhCWxhc3QsIGFnZ3M7DQogDQogCS8qDQog CSAqIEluaXRpYWxpemUgdGhyb3R0bGluZyByYXRlIHRhcmdldCBmb3IgYWxs IG9mIHRoZSB0aHJlYWQncyBjbGllbnRzLiAgSXQNCkBAIC0zNTkxLDggKzM0 ODQsNiBAQCB0aHJlYWRSdW4odm9pZCAqYXJnKQ0KIAkgKi8NCiAJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChzdGFydCk7DQogCXRocmVhZC0+dGhyb3R0bGVf dHJpZ2dlciA9IElOU1RSX1RJTUVfR0VUX01JQ1JPU0VDKHN0YXJ0KTsNCi0J dGhyZWFkLT50aHJvdHRsZV9sYWcgPSAwOw0KLQl0aHJlYWQtPnRocm90dGxl X2xhZ19tYXggPSAwOw0KIA0KIAlJTlNUUl9USU1FX1NFVF9aRVJPKHRocmVh ZC0+Y29ubl90aW1lKTsNCiANCkBAIC0zNjI5LDcgKzM1MjAsOCBAQCB0aHJl YWRSdW4odm9pZCAqYXJnKQ0KIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHRo cmVhZC0+Y29ubl90aW1lKTsNCiAJSU5TVFJfVElNRV9TVUJUUkFDVCh0aHJl YWQtPmNvbm5fdGltZSwgdGhyZWFkLT5zdGFydF90aW1lKTsNCiANCi0JYWdn X3ZhbHNfaW5pdCgmYWdncywgdGhyZWFkLT5zdGFydF90aW1lKTsNCisJaW5p dFN0YXRzKCZhZ2dzLCBJTlNUUl9USU1FX0dFVF9ET1VCTEUodGhyZWFkLT5z dGFydF90aW1lKSk7DQorCWxhc3QgPSBhZ2dzOw0KIA0KIAkvKiBzZW5kIHN0 YXJ0IHVwIHF1ZXJpZXMgaW4gYXN5bmMgbWFubmVyICovDQogCWZvciAoaSA9 IDA7IGkgPCBuc3RhdGU7IGkrKykNCkBAIC0zNjM5LDcgKzM1MzEsNyBAQCB0 aHJlYWRSdW4odm9pZCAqYXJnKQ0KIAkJaW50CQkJcHJldl9lY250ID0gc3Qt PmVjbnQ7DQogDQogCQlzdC0+dXNlX2ZpbGUgPSBudW1fc2NyaXB0cz09MT8g MDogY2hvb3NlU2NyaXB0KHRocmVhZCk7DQotCQlpZiAoIWRvQ3VzdG9tKHRo cmVhZCwgc3QsICZ0aHJlYWQtPmNvbm5fdGltZSwgbG9nZmlsZSwgJmFnZ3Mp KQ0KKwkJaWYgKCFkb0N1c3RvbSh0aHJlYWQsIHN0LCBsb2dmaWxlLCAmYWdn cykpDQogCQkJcmVtYWlucy0tOwkJCS8qIEkndmUgYWJvcnRlZCAqLw0KIA0K IAkJaWYgKHN0LT5lY250ID4gcHJldl9lY250ICYmIGNvbW1hbmRzW3N0LT5z dGF0ZV0tPnR5cGUgPT0gTUVUQV9DT01NQU5EKQ0KQEAgLTM3NzgsNyArMzY3 MCw3IEBAIHRocmVhZFJ1bih2b2lkICphcmcpDQogCQkJaWYgKHN0LT5jb24g JiYgKEZEX0lTU0VUKFBRc29ja2V0KHN0LT5jb24pLCAmaW5wdXRfbWFzaykN CiAJCQkJCQkJfHwgY29tbWFuZHNbc3QtPnN0YXRlXS0+dHlwZSA9PSBNRVRB X0NPTU1BTkQpKQ0KIAkJCXsNCi0JCQkJaWYgKCFkb0N1c3RvbSh0aHJlYWQs IHN0LCAmdGhyZWFkLT5jb25uX3RpbWUsIGxvZ2ZpbGUsICZhZ2dzKSkNCisJ CQkJaWYgKCFkb0N1c3RvbSh0aHJlYWQsIHN0LCBsb2dmaWxlLCAmYWdncykp DQogCQkJCQlyZW1haW5zLS07CS8qIEkndmUgYWJvcnRlZCAqLw0KIAkJCX0N CiANCkBAIC0zODAzLDExICszNjk1LDcgQEAgdGhyZWFkUnVuKHZvaWQgKmFy ZykNCiAJCQlpZiAobm93ID49IG5leHRfcmVwb3J0KQ0KIAkJCXsNCiAJCQkJ LyogZ2VuZXJhdGUgYW5kIHNob3cgcmVwb3J0ICovDQotCQkJCWludDY0CQlj b3VudCA9IDAsDQotCQkJCQkJCWxhdHMgPSAwLA0KLQkJCQkJCQlzcWxhdHMg PSAwLA0KLQkJCQkJCQlsYWdzID0gMCwNCi0JCQkJCQkJc2tpcHBlZCA9IDA7 DQorCQkJCVN0YXRzRGF0YSAgIGN1cjsNCiAJCQkJaW50NjQJCXJ1biA9IG5v dyAtIGxhc3RfcmVwb3J0Ow0KIAkJCQlkb3VibGUJCXRwcywNCiAJCQkJCQkJ dG90YWxfcnVuLA0KQEAgLTM4MjgsMjUgKzM3MTYsMjQgQEAgdGhyZWFkUnVu KHZvaWQgKmFyZykNCiAJCQkJICogKElmIGEgcmVhZCBmcm9tIGEgNjQtYml0 IGludGVnZXIgaXMgbm90IGF0b21pYywgeW91IG1pZ2h0DQogCQkJCSAqIGdl dCBhICJ0b3JuIiByZWFkIGFuZCBjb21wbGV0ZWx5IGJvZ3VzIGxhdGVuY2ll cyB0aG91Z2ghKQ0KIAkJCQkgKi8NCi0JCQkJZm9yIChpID0gMDsgaSA8IHBy b2dyZXNzX25jbGllbnRzOyBpKyspDQorCQkJCWluaXRTdGF0cygmIGN1ciwg MC4wKTsNCisJCQkJZm9yIChpID0gMDsgaSA8IG50aHJlYWRzOyBpKyspDQog CQkJCXsNCi0JCQkJCWNvdW50ICs9IHN0YXRlW2ldLmNudDsNCi0JCQkJCWxh dHMgKz0gc3RhdGVbaV0udHhuX2xhdGVuY2llczsNCi0JCQkJCXNxbGF0cyAr PSBzdGF0ZVtpXS50eG5fc3FsYXRzOw0KLQkJCQl9DQotDQotCQkJCWZvciAo aSA9IDA7IGkgPCBwcm9ncmVzc19udGhyZWFkczsgaSsrKQ0KLQkJCQl7DQot CQkJCQlza2lwcGVkICs9IHRocmVhZFtpXS50aHJvdHRsZV9sYXRlbmN5X3Nr aXBwZWQ7DQotCQkJCQlsYWdzICs9IHRocmVhZFtpXS50aHJvdHRsZV9sYWc7 DQorCQkJCQlhcHBlbmRTaW1wbGVTdGF0cygmIGN1ci5sYXRlbmN5LCAmIHRo cmVhZFtpXS5zdGF0cy5sYXRlbmN5KTsNCisJCQkJCWFwcGVuZFNpbXBsZVN0 YXRzKCYgY3VyLmxhZywgJiB0aHJlYWRbaV0uc3RhdHMubGFnKTsNCisJCQkJ CWN1ci5jbnQgKz0gdGhyZWFkW2ldLnN0YXRzLmNudDsNCisJCQkJCWN1ci5z a2lwcGVkICs9IHRocmVhZFtpXS5zdGF0cy5za2lwcGVkOw0KIAkJCQl9DQog DQogCQkJCXRvdGFsX3J1biA9IChub3cgLSB0aHJlYWRfc3RhcnQpIC8gMTAw MDAwMC4wOw0KLQkJCQl0cHMgPSAxMDAwMDAwLjAgKiAoY291bnQgLSBsYXN0 X2NvdW50KSAvIHJ1bjsNCi0JCQkJbGF0ZW5jeSA9IDAuMDAxICogKGxhdHMg LSBsYXN0X2xhdHMpIC8gKGNvdW50IC0gbGFzdF9jb3VudCk7DQotCQkJCXNx bGF0ID0gMS4wICogKHNxbGF0cyAtIGxhc3Rfc3FsYXRzKSAvIChjb3VudCAt IGxhc3RfY291bnQpOw0KKwkJCQl0cHMgPSAxMDAwMDAwLjAgKiAoY3VyLmNu dCAtIGxhc3QuY250KSAvIHJ1bjsNCisJCQkJbGF0ZW5jeSA9IDAuMDAxICog KGN1ci5sYXRlbmN5LnN1bSAtIGxhc3QubGF0ZW5jeS5zdW0pIC8NCisJCQkJ CShjdXIuY250IC0gbGFzdC5jbnQpOw0KKwkJCQlzcWxhdCA9IDEuMCAqIChj dXIubGF0ZW5jeS5zdW0yIC0gbGFzdC5sYXRlbmN5LnN1bTIpDQorCQkJCQkv IChjdXIuY250IC0gbGFzdC5jbnQpOw0KIAkJCQlzdGRldiA9IDAuMDAxICog c3FydChzcWxhdCAtIDEwMDAwMDAuMCAqIGxhdGVuY3kgKiBsYXRlbmN5KTsN Ci0JCQkJbGFnID0gMC4wMDEgKiAobGFncyAtIGxhc3RfbGFncykgLyAoY291 bnQgLSBsYXN0X2NvdW50KTsNCisJCQkJbGFnID0gMC4wMDEgKiAoY3VyLmxh Zy5zdW0gLSBsYXN0LmxhZy5zdW0pIC8NCisJCQkJCShjdXIuY250IC0gbGFz dC5jbnQpOw0KIA0KIAkJCQlpZiAocHJvZ3Jlc3NfdGltZXN0YW1wKQ0KIAkJ CQkJc3ByaW50Zih0YnVmLCAiJS4wM2YgcyIsDQpAQCAtMzg2MiwxNyArMzc0 OSwxMyBAQCB0aHJlYWRSdW4odm9pZCAqYXJnKQ0KIAkJCQl7DQogCQkJCQlm cHJpbnRmKHN0ZGVyciwgIiwgbGFnICUuM2YgbXMiLCBsYWcpOw0KIAkJCQkJ aWYgKGxhdGVuY3lfbGltaXQpDQotCQkJCQkJZnByaW50ZihzdGRlcnIsICIs ICIgSU5UNjRfRk9STUFUICIgc2tpcHBlZCIsDQotCQkJCQkJCQlza2lwcGVk IC0gbGFzdF9za2lwcGVkKTsNCisJCQkJCQlmcHJpbnRmKHN0ZGVyciwgIiwg IklOVDY0X0ZPUk1BVCIgc2tpcHBlZCIsDQorCQkJCQkJCQljdXIuc2tpcHBl ZCAtIGxhc3Quc2tpcHBlZCk7DQogCQkJCX0NCiAJCQkJZnByaW50ZihzdGRl cnIsICJcbiIpOw0KIA0KLQkJCQlsYXN0X2NvdW50ID0gY291bnQ7DQotCQkJ CWxhc3RfbGF0cyA9IGxhdHM7DQotCQkJCWxhc3Rfc3FsYXRzID0gc3FsYXRz Ow0KLQkJCQlsYXN0X2xhZ3MgPSBsYWdzOw0KKwkJCQlsYXN0ID0gY3VyOw0K IAkJCQlsYXN0X3JlcG9ydCA9IG5vdzsNCi0JCQkJbGFzdF9za2lwcGVkID0g c2tpcHBlZDsNCiANCiAJCQkJLyoNCiAJCQkJICogRW5zdXJlIHRoYXQgdGhl IG5leHQgcmVwb3J0IGlzIGluIHRoZSBmdXR1cmUsIGluIGNhc2UNCg== --8323329-242826868-1453558738=:21060 Content-Type: TEXT/x-diff; name=pgbench-script-stats-13-c.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-13-c.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IGZkZDMzMzEu LmEwZmU3NjYgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC0xMTQxLDYgKzExNDEsOSBAQCBudW1iZXIgb2YgdHJhbnNhY3Rpb25z IGFjdHVhbGx5IHByb2Nlc3NlZDogMTAwMDAvMTAwMDANCiB0cHMgPSA2MTgu NzY0NTU1IChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKQ0K IHRwcyA9IDYyMi45Nzc2OTggKGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3Rh Ymxpc2hpbmcpDQogU1FMIHNjcmlwdCAxOiAmbHQ7YnVpbHRpbjogVFBDLUIg KHNvcnQgb2YpJmd0Ow0KKyAtIDEwMDAwIHRyYW5zYWN0aW9ucyAoMTAwLjAl IG9mIHRvdGFsLCB0cHMgPSA2MTguNzY0NTU1KQ0KKyAtIGxhdGVuY3kgYXZl cmFnZSA9IDE1Ljg0NCBtcw0KKyAtIGxhdGVuY3kgc3RkZGV2ID0gMi43MTUg bXMNCiAgLSBwZXIgY29tbWFuZCBsYXRlbmNpZXMgaW4gbXM6DQogICAgICAg ICAwLjAwNDM4NiAgICAgICAgXHNldCBuYnJhbmNoZXMgMSAqIDpzY2FsZQ0K ICAgICAgICAgMC4wMDEzNDMgICAgICAgIFxzZXQgbnRlbGxlcnMgMTAgKiA6 c2NhbGUNCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5j IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KaW5kZXggZjdiODRkYS4u YjIwZDAwYyAxMDA2NDQNCi0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMNCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMNCkBAIC0xNjQs NiArMTY0LDcgQEAgYm9vbAkJdXNlX2xvZzsJCQkvKiBsb2cgdHJhbnNhY3Rp b24gbGF0ZW5jaWVzIHRvIGEgZmlsZSAqLw0KIGJvb2wJCXVzZV9xdWlldDsJ CQkvKiBxdWlldCBsb2dnaW5nIG9udG8gc3RkZXJyICovDQogaW50CQkJYWdn X2ludGVydmFsOwkJLyogbG9nIGFnZ3JlZ2F0ZXMgaW5zdGVhZCBvZiBpbmRp dmlkdWFsDQogCQkJCQkJCQkgKiB0cmFuc2FjdGlvbnMgKi8NCitib29sICAg ICAgICBwZXJfc2NyaXB0X3N0YXRzID0gZmFsc2U7IC8qIHdoZXRoZXIgdG8g Y29sbGVjdCBzdGF0cyBwZXIgc2NyaXB0ICovDQogaW50CQkJcHJvZ3Jlc3Mg PSAwOwkJLyogdGhyZWFkIHByb2dyZXNzIHJlcG9ydCBldmVyeSB0aGlzIHNl Y29uZHMgKi8NCiBib29sCQlwcm9ncmVzc190aW1lc3RhbXAgPSBmYWxzZTsg LyogcHJvZ3Jlc3MgcmVwb3J0IHdpdGggVW5peCB0aW1lICovDQogaW50CQkJ bmNsaWVudHMgPSAxOwkJLyogbnVtYmVyIG9mIGNsaWVudHMgKi8NCkBAIC0z MDEsNiArMzAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QNCiB7DQogCWNvbnN0IGNo YXIgKm5hbWU7DQogCUNvbW1hbmQgKipjb21tYW5kczsNCisJU3RhdHNEYXRh IHN0YXRzOw0KIH0gU1FMU2NyaXB0Ow0KIA0KIHN0YXRpYyBTUUxTY3JpcHQg c3FsX3NjcmlwdFtNQVhfU0NSSVBUU107DQpAQCAtMTMwNyw3ICsxMzA5LDcg QEAgdG9wOg0KIAkJLyogdHJhbnNhY3Rpb24gZmluaXNoZWQ6IGNhbGN1bGF0 ZSBsYXRlbmN5IGFuZCBsb2cgdGhlIHRyYW5zYWN0aW9uICovDQogCQlpZiAo Y29tbWFuZHNbc3QtPnN0YXRlICsgMV0gPT0gTlVMTCkNCiAJCXsNCi0JCQlp ZiAocHJvZ3Jlc3MgfHwgdGhyb3R0bGVfZGVsYXkgfHwgbGF0ZW5jeV9saW1p dCB8fCBsb2dmaWxlKQ0KKwkJCWlmIChwcm9ncmVzcyB8fCB0aHJvdHRsZV9k ZWxheSB8fCBsYXRlbmN5X2xpbWl0IHx8IHBlcl9zY3JpcHRfc3RhdHMgfHwg bG9nZmlsZSkNCiAJCQkJZG9UeFN0YXRzKHRocmVhZCwgc3QsICZub3csIGZh bHNlLCBsb2dmaWxlLCBhZ2cpOw0KIAkJCWVsc2UNCiAJCQkJdGhyZWFkLT5z dGF0cy5jbnQgKys7DQpAQCAtMTM5OCw3ICsxNDAwLDcgQEAgdG9wOg0KIAl9 DQogDQogCS8qIFJlY29yZCB0cmFuc2FjdGlvbiBzdGFydCB0aW1lIHVuZGVy IGxvZ2dpbmcsIHByb2dyZXNzIG9yIHRocm90dGxpbmcgKi8NCi0JaWYgKChs b2dmaWxlIHx8IHByb2dyZXNzIHx8IHRocm90dGxlX2RlbGF5IHx8IGxhdGVu Y3lfbGltaXQpICYmIHN0LT5zdGF0ZSA9PSAwKQ0KKwlpZiAoKGxvZ2ZpbGUg fHwgcHJvZ3Jlc3MgfHwgdGhyb3R0bGVfZGVsYXkgfHwgbGF0ZW5jeV9saW1p dCB8fCBwZXJfc2NyaXB0X3N0YXRzKSAmJiBzdC0+c3RhdGUgPT0gMCkNCiAJ ew0KIAkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdC0+dHhuX2JlZ2luKTsN CiANCkBAIC0xODgzLDYgKzE4ODUsOSBAQCBkb1R4U3RhdHMoVFN0YXRlICp0 aHJlYWQsIENTdGF0ZSAqc3QsIGluc3RyX3RpbWUgKm5vdywNCiANCiAJaWYg KHVzZV9sb2cpDQogCQlkb0xvZyh0aHJlYWQsIHN0LCBsb2dmaWxlLCBub3cs IGFnZywgc2tpcHBlZCwgbGF0ZW5jeSwgbGFnKTsNCisNCisJaWYgKHBlcl9z Y3JpcHRfc3RhdHMpIC8qIG11dGV4PyBobW1tLi4uIHRoZXNlIGFyZSBvbmx5 IHN0YXRpc3RpY3MgKi8NCisJCWRvU3RhdHMoJiBzcWxfc2NyaXB0W3N0LT51 c2VfZmlsZV0uc3RhdHMsIHNraXBwZWQsIGxhdGVuY3ksIGxhZyk7DQogfQ0K IA0KIA0KQEAgLTI2MzcsNiArMjY0Miw3IEBAIGFkZFNjcmlwdChjb25zdCBj aGFyICpuYW1lLCBDb21tYW5kICoqIGNvbW1hbmRzKQ0KIA0KIAlzcWxfc2Ny aXB0W251bV9zY3JpcHRzXS5uYW1lID0gbmFtZTsNCiAJc3FsX3NjcmlwdFtu dW1fc2NyaXB0c10uY29tbWFuZHMgPSBjb21tYW5kczsNCisJaW5pdFN0YXRz KCYgc3FsX3NjcmlwdFtudW1fc2NyaXB0c10uc3RhdHMsIDAuMCk7DQogCW51 bV9zY3JpcHRzKys7DQogfQ0KIA0KQEAgLTI3MTcsMjEgKzI3MjMsNDAgQEAg cHJpbnRSZXN1bHRzKFRTdGF0ZSAqdGhyZWFkcywgU3RhdHNEYXRhICp0b3Rh bCwgaW5zdHJfdGltZSB0b3RhbF90aW1lLA0KIAlwcmludGYoInRwcyA9ICVm IChpbmNsdWRpbmcgY29ubmVjdGlvbnMgZXN0YWJsaXNoaW5nKVxuIiwgdHBz X2luY2x1ZGUpOw0KIAlwcmludGYoInRwcyA9ICVmIChleGNsdWRpbmcgY29u bmVjdGlvbnMgZXN0YWJsaXNoaW5nKVxuIiwgdHBzX2V4Y2x1ZGUpOw0KIA0K LQkvKiBSZXBvcnQgcGVyLWNvbW1hbmQgbGF0ZW5jaWVzICovDQotCWlmIChp c19sYXRlbmNpZXMpDQorCS8qIFJlcG9ydCBwZXItc2NyaXB0IHN0YXRzICov DQorCWlmIChwZXJfc2NyaXB0X3N0YXRzKQ0KIAl7DQogCQlpbnQJCQlpOw0K IA0KIAkJZm9yIChpID0gMDsgaSA8IG51bV9zY3JpcHRzOyBpKyspDQogCQl7 DQotCQkJQ29tbWFuZCAqKiBjb207DQotDQotCQkJcHJpbnRmKCJTUUwgc2Ny aXB0ICVkOiAlc1xuIiwgaSsxLCBzcWxfc2NyaXB0W2ldLm5hbWUpOw0KLQkJ CXByaW50ZigiIC0gcGVyIGNvbW1hbmQgbGF0ZW5jaWVzIGluIG1zOlxuIik7 DQotCQkJZm9yIChjb20gPSBzcWxfc2NyaXB0W2ldLmNvbW1hbmRzOyAqY29t ICE9IE5VTEw7IGNvbSsrKQ0KLQkJCQlwcmludGYoIiAgICUxMS4zZiAgJXNc biIsDQotCQkJCQkgICAxMDAwLjAgKiAoKmNvbSktPnN0YXRzLnN1bSAvICgq Y29tKS0+c3RhdHMuY291bnQsDQotCQkJCQkgICAoKmNvbSktPmxpbmUpOw0K KwkJCXByaW50ZigiU1FMIHNjcmlwdCAlZDogJXNcbiINCisJCQkJICAgIiAt ICJJTlQ2NF9GT1JNQVQiIHRyYW5zYWN0aW9ucyAoJS4xZiUlIG9mIHRvdGFs LCB0cHMgPSAlZilcbiIsDQorCQkJCSAgIGkrMSwgc3FsX3NjcmlwdFtpXS5u YW1lLA0KKwkJCQkgICBzcWxfc2NyaXB0W2ldLnN0YXRzLmNudCwNCisJCQkJ ICAgMTAwLjAgKiBzcWxfc2NyaXB0W2ldLnN0YXRzLmNudCAvIHRvdGFsLT5j bnQsDQorCQkJCSAgIHNxbF9zY3JpcHRbaV0uc3RhdHMuY250IC8gdGltZV9p bmNsdWRlKTsNCisNCisJCQlpZiAobGF0ZW5jeV9saW1pdCkNCisJCQkJcHJp bnRmKCIgLSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIHNraXBwZWQ6ICJJTlQ2 NF9GT1JNQVQiICglLjNmJSUpXG4iLA0KKwkJCQkJICAgc3FsX3NjcmlwdFtp XS5zdGF0cy5za2lwcGVkLA0KKwkJCQkJICAgMTAwLjAgKiBzcWxfc2NyaXB0 W2ldLnN0YXRzLnNraXBwZWQgLw0KKwkJCQkJICAgKHNxbF9zY3JpcHRbaV0u c3RhdHMuc2tpcHBlZCArIHNxbF9zY3JpcHRbaV0uc3RhdHMuY250KSk7DQor DQorCQkJcHJpbnRTaW1wbGVTdGF0cygiIC0gbGF0ZW5jeSIsICYgc3FsX3Nj cmlwdFtpXS5zdGF0cy5sYXRlbmN5KTsNCisNCisJCQkvKiBSZXBvcnQgcGVy LWNvbW1hbmQgbGF0ZW5jaWVzICovDQorCQkJaWYgKGlzX2xhdGVuY2llcykN CisJCQl7DQorCQkJCUNvbW1hbmQgKiogY29tOw0KKw0KKwkJCQlwcmludGYo IiAtIHBlciBjb21tYW5kIGxhdGVuY2llcyBpbiBtczpcbiIpOw0KKw0KKwkJ CQlmb3IgKGNvbSA9IHNxbF9zY3JpcHRbaV0uY29tbWFuZHM7ICpjb20gIT0g TlVMTDsgY29tKyspDQorCQkJCQlwcmludGYoIiAgICUxMS4zZiAgJXNcbiIs DQorCQkJCQkJICAgMTAwMC4wICogKCpjb20pLT5zdGF0cy5zdW0gLyAoKmNv bSktPnN0YXRzLmNvdW50LA0KKwkJCQkJCSAgICgqY29tKS0+bGluZSk7DQor CQkJfQ0KIAkJfQ0KIAl9DQogfQ0KQEAgLTI5MTcsNiArMjk0Miw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIAkJCQlicmVhazsNCiAJCQlj YXNlICdyJzoNCiAJCQkJYmVuY2htYXJraW5nX29wdGlvbl9zZXQgPSB0cnVl Ow0KKwkJCQlwZXJfc2NyaXB0X3N0YXRzID0gdHJ1ZTsNCiAJCQkJaXNfbGF0 ZW5jaWVzID0gdHJ1ZTsNCiAJCQkJYnJlYWs7DQogCQkJY2FzZSAncyc6DQpA QCAtMzE0Myw2ICszMTY5LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQ0KIAkJaW50ZXJuYWxfc2NyaXB0X3VzZWQgPSB0cnVlOw0KIAl9DQog DQorCS8qIHNob3cgcGVyIHNjcmlwdCBzdGF0cyBpZiBzZXZlcmFsIHNjcmlw dHMgYXJlIHVzZWQgKi8NCisJaWYgKG51bV9zY3JpcHRzID4gMSkNCisJCXBl cl9zY3JpcHRfc3RhdHMgPSB0cnVlOw0KKw0KIAkvKg0KIAkgKiBEb24ndCBu ZWVkIG1vcmUgdGhyZWFkcyB0aGFuIHRoZXJlIGFyZSBjbGllbnRzLiAgKFRo aXMgaXMgbm90IG1lcmVseSBhbg0KIAkgKiBvcHRpbWl6YXRpb247IHRocm90 dGxlX2RlbGF5IGlzIGNhbGN1bGF0ZWQgaW5jb3JyZWN0bHkgYmVsb3cgaWYg c29tZQ0K --8323329-242826868-1453558738=:21060 Content-Type: TEXT/x-diff; name=pgbench-script-stats-13-d.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-13-d.patch ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwNCmluZGV4IGEwZmU3NjYu Ljg2ZDNjNTkgMTAwNjQ0DQotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVu Y2guc2dtbA0KKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwN CkBAIC0yNjIsMTEgKzI2MiwxMyBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJl cGxhY2VhYmxlPm9wdGlvbnM8Lz4gPC9vcHRpb25hbD4gPHJlcGxhY2VhYmxl PmRibmFtZTwvPg0KIA0KICAgICA8dmFyaWFibGVsaXN0Pg0KICAgICAgPHZh cmxpc3RlbnRyeT4NCi0gICAgICA8dGVybT48b3B0aW9uPi1iPC8+IDxyZXBs YWNlYWJsZT5zY3JpcHRuYW1lPC8+PC90ZXJtPg0KLSAgICAgIDx0ZXJtPjxv cHRpb24+LS1idWlsdGluPC8+IDxyZXBsYWNlYWJsZT5zY3JpcHRuYW1lPC8+ PC90ZXJtPg0KKyAgICAgIDx0ZXJtPjxvcHRpb24+LWI8Lz4gPHJlcGxhY2Vh YmxlPnNjcmlwdG5hbWVbQHdlaWdodF08Lz48L3Rlcm0+DQorICAgICAgPHRl cm0+PG9wdGlvbj4tLWJ1aWx0aW48Lz4gPHJlcGxhY2VhYmxlPnNjcmlwdG5h bWVbQHdlaWdodF08Lz48L3Rlcm0+DQogICAgICAgPGxpc3RpdGVtPg0KICAg ICAgICA8cGFyYT4NCiAgICAgICAgIEFkZCB0aGUgc3BlY2lmaWVkIGJ1aWx0 aW4gc2NyaXB0IHRvIHRoZSBsaXN0IG9mIGV4ZWN1dGVkIHNjcmlwdHMuDQor ICAgICAgICBBbiBvcHRpb25hbCBpbnRlZ2VyIHdlaWdodCBhZnRlciA8bGl0 ZXJhbD5APC8+IGFsbG93cyB0byBhZGp1c3QgdGhlDQorICAgICAgICBwcm9i YWJpbGl0eSBvZiBkcmF3aW5nIHRoZSB0ZXN0Lg0KICAgICAgICAgQXZhaWxh YmxlIGJ1aWx0aW4gc2NyaXB0cyBhcmU6IDxsaXRlcmFsPnRwY2ItbGlrZTwv PiwNCiAgICAgICAgIDxsaXRlcmFsPnNpbXBsZS11cGRhdGU8Lz4gYW5kIDxs aXRlcmFsPnNlbGVjdC1vbmx5PC8+Lg0KICAgICAgICAgVGhlIHByb3ZpZGVk IDxyZXBsYWNlYWJsZT5zY3JpcHRuYW1lPC8+IG5lZWRzIG9ubHkgdG8gYmUg YSBwcmVmaXgNCkBAIC0zMjQsMTIgKzMyNiwxNCBAQCBwZ2JlbmNoIDxvcHRp b25hbD4gPHJlcGxhY2VhYmxlPm9wdGlvbnM8Lz4gPC9vcHRpb25hbD4gPHJl cGxhY2VhYmxlPmRibmFtZTwvPg0KICAgICAgPC92YXJsaXN0ZW50cnk+DQog DQogICAgICA8dmFybGlzdGVudHJ5Pg0KLSAgICAgIDx0ZXJtPjxvcHRpb24+ LWY8Lz4gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC8+PC90ZXJtPg0KLSAgICAg IDx0ZXJtPjxvcHRpb24+LS1maWxlPTwvPjxyZXBsYWNlYWJsZT5maWxlbmFt ZTwvPjwvdGVybT4NCisgICAgICA8dGVybT48b3B0aW9uPi1mPC8+IDxyZXBs YWNlYWJsZT5maWxlbmFtZVtAd2VpZ2h0XTwvPjwvdGVybT4NCisgICAgICA8 dGVybT48b3B0aW9uPi0tZmlsZT08Lz48cmVwbGFjZWFibGU+ZmlsZW5hbWVb QHdlaWdodF08Lz48L3Rlcm0+DQogICAgICAgPGxpc3RpdGVtPg0KICAgICAg ICA8cGFyYT4NCiAgICAgICAgIEFkZCBhIHRyYW5zYWN0aW9uIHNjcmlwdCBy ZWFkIGZyb20gPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC8+IHRvDQogICAgICAg ICB0aGUgbGlzdCBvZiBleGVjdXRlZCBzY3JpcHRzLg0KKyAgICAgICAgQW4g b3B0aW9uYWwgaW50ZWdlciB3ZWlnaHQgYWZ0ZXIgPGxpdGVyYWw+QDwvPiBh bGxvd3MgdG8gYWRqdXN0IHRoZQ0KKyAgICAgICAgcHJvYmFiaWxpdHkgb2Yg ZHJhd2luZyB0aGUgdGVzdC4NCiAgICAgICAgIFNlZSBiZWxvdyBmb3IgZGV0 YWlscy4NCiAgICAgICAgPC9wYXJhPg0KICAgICAgIDwvbGlzdGl0ZW0+DQpA QCAtNjkyLDYgKzY5Niw5IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFj ZWFibGU+b3B0aW9uczwvPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZGJu YW1lPC8+DQogICAgUGdiZW5jaCBleGVjdXRlcyB0ZXN0IHNjcmlwdHMgY2hv c2VuIHJhbmRvbWx5IGZyb20gYSBzcGVjaWZpZWQgbGlzdC4NCiAgICBUaGV5 IGluY2x1ZGUgYnVpbHQtaW4gc2NyaXB0cyB3aXRoIDxvcHRpb24+LWI8Lz4g YW5kDQogICAgdXNlci1wcm92aWRlZCBjdXN0b20gc2NyaXB0cyB3aXRoIDxv cHRpb24+LWY8Lz4uDQorICAgRWFjaCBzY3JpcHQgbWF5IGJlIGdpdmVuIGEg cmVsYXRpdmUgd2VpZ2h0IHNwZWNpZmllZCBhZnRlciBhDQorICAgPGxpdGVy YWw+QDwvPiBzbyBhcyB0byBjaGFuZ2UgaXRzIGRyYXdpbmcgcHJvYmFiaWxp dHkuDQorICAgVGhlIGRlZmF1bHQgd2VpZ2h0IGlzIDxsaXRlcmFsPjE8Lz4u DQogIDwvcGFyYT4NCiANCiAgIDxwYXJhPg0KQEAgLTExNDAsNyArMTE0Nyw3 IEBAIG51bWJlciBvZiB0cmFuc2FjdGlvbnMgcGVyIGNsaWVudDogMTAwMA0K IG51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFsbHkgcHJvY2Vzc2VkOiAx MDAwMC8xMDAwMA0KIHRwcyA9IDYxOC43NjQ1NTUgKGluY2x1ZGluZyBjb25u ZWN0aW9ucyBlc3RhYmxpc2hpbmcpDQogdHBzID0gNjIyLjk3NzY5OCAoZXhj bHVkaW5nIGNvbm5lY3Rpb25zIGVzdGFibGlzaGluZykNCi1TUUwgc2NyaXB0 IDE6ICZsdDtidWlsdGluOiBUUEMtQiAoc29ydCBvZikmZ3Q7DQorU1FMIHNj cmlwdCAxLCB3ZWlnaHQgMTogJmx0O2J1aWx0aW46IFRQQy1CIChzb3J0IG9m KSZndDsNCiAgLSAxMDAwMCB0cmFuc2FjdGlvbnMgKDEwMC4wJSBvZiB0b3Rh bCwgdHBzID0gNjE4Ljc2NDU1NSkNCiAgLSBsYXRlbmN5IGF2ZXJhZ2UgPSAx NS44NDQgbXMNCiAgLSBsYXRlbmN5IHN0ZGRldiA9IDIuNzE1IG1zDQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYyBiL3NyYy9iaW4v cGdiZW5jaC9wZ2JlbmNoLmMNCmluZGV4IGIyMGQwMGMuLjIzMjU2ZmIgMTAw NjQ0DQotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jDQorKysgYi9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jDQpAQCAtMTc5LDYgKzE3OSw4IEBA IGNoYXIJICAgKmxvZ2luID0gTlVMTDsNCiBjaGFyCSAgICpkYk5hbWU7DQog Y29uc3QgY2hhciAqcHJvZ25hbWU7DQogDQorI2RlZmluZSBXU0VQICdAJyAv KiB3ZWlnaHQgc2VwYXJhdG9yICovDQorDQogdm9sYXRpbGUgYm9vbCB0aW1l cl9leGNlZWRlZCA9IGZhbHNlOwkvKiBmbGFnIGZyb20gc2lnbmFsIGhhbmRs ZXIgKi8NCiANCiAvKiB2YXJpYWJsZSBkZWZpbml0aW9ucyAqLw0KQEAgLTMw MSw2ICszMDMsNyBAQCB0eXBlZGVmIHN0cnVjdA0KIHR5cGVkZWYgc3RydWN0 DQogew0KIAljb25zdCBjaGFyICpuYW1lOw0KKwlpbnQgd2VpZ2h0Ow0KIAlD b21tYW5kICoqY29tbWFuZHM7DQogCVN0YXRzRGF0YSBzdGF0czsNCiB9IFNR TFNjcmlwdDsNCkBAIC0zMDgsNiArMzExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QN CiBzdGF0aWMgU1FMU2NyaXB0IHNxbF9zY3JpcHRbTUFYX1NDUklQVFNdOw0K IHN0YXRpYyBpbnQJbnVtX3NjcmlwdHM7CQkvKiBudW1iZXIgb2Ygc2NyaXB0 IGluIHNxbF9zY3JpcHRbXSAqLw0KIHN0YXRpYyBpbnQJbnVtX2NvbW1hbmRz ID0gMDsJLyogdG90YWwgbnVtYmVyIG9mIENvbW1hbmQgc3RydWN0cyAqLw0K K3N0YXRpYyBpbnQgIHRvdGFsX3dlaWdodCA9IDA7DQogDQogc3RhdGljIGlu dAlkZWJ1ZyA9IDA7CQkJLyogZGVidWcgZmxhZyAqLw0KIA0KQEAgLTQwNCwx MyArNDA4LDEzIEBAIHVzYWdlKHZvaWQpDQogCSAiICAtLXRhYmxlc3BhY2U9 VEFCTEVTUEFDRSAgY3JlYXRlIHRhYmxlcyBpbiB0aGUgc3BlY2lmaWVkIHRh Ymxlc3BhY2VcbiINCiAJCSAgICIgIC0tdW5sb2dnZWQtdGFibGVzICAgICAg ICBjcmVhdGUgdGFibGVzIGFzIHVubG9nZ2VkIHRhYmxlc1xuIg0KIAkJICAg IlxuQmVuY2htYXJraW5nIG9wdGlvbnM6XG4iDQotCQkgICAiICAtYiwgLS1i dWlsdGluPU5BTUUgICAgICAgYWRkIGJ1aXRpbiBzY3JpcHQgYW1vbmcgXCJ0 cGNiLWxpa2VcIlxuIg0KKwkJICAgIiAgLWIsIC0tYnVpbHRpbj1OQU1FW0BX XSAgIGFkZCB3ZWlnaHRlZCBidWl0aW4gc2NyaXB0IGFtb25nIFwidHBjYi1s aWtlXCJcbiINCiAJCSAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICBc InNpbXBsZS11cGRhdGVcIiBhbmQgXCJzZWxlY3Qtb25seVwiLlxuIg0KIAkJ ICAgIiAgLWMsIC0tY2xpZW50PU5VTSAgICAgICAgIG51bWJlciBvZiBjb25j dXJyZW50IGRhdGFiYXNlIGNsaWVudHMgKGRlZmF1bHQ6IDEpXG4iDQogCQkg ICAiICAtQywgLS1jb25uZWN0ICAgICAgICAgICAgZXN0YWJsaXNoIG5ldyBj b25uZWN0aW9uIGZvciBlYWNoIHRyYW5zYWN0aW9uXG4iDQogCQkgICAiICAt RCwgLS1kZWZpbmU9VkFSTkFNRT1WQUxVRVxuIg0KIAkgICIgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZWZpbmUgdmFyaWFibGUgZm9yIHVzZSBieSBj dXN0b20gc2NyaXB0XG4iDQotCQkgIiAgLWYsIC0tZmlsZT1GSUxFTkFNRSAg ICAgIGFkZCB0cmFuc2FjdGlvbiBzY3JpcHQgZnJvbSBGSUxFTkFNRVxuIg0K KwkJICIgIC1mLCAtLWZpbGU9RklMRU5BTUVbQFddICBhZGQgd2VpZ2h0ZWQg dHJhbnNhY3Rpb24gc2NyaXB0IGZyb20gRklMRU5BTUVcbiINCiAJCSAgICIg IC1qLCAtLWpvYnM9TlVNICAgICAgICAgICBudW1iZXIgb2YgdGhyZWFkcyAo ZGVmYXVsdDogMSlcbiINCiAJCSAgICIgIC1sLCAtLWxvZyAgICAgICAgICAg ICAgICB3cml0ZSB0cmFuc2FjdGlvbiB0aW1lcyB0byBsb2cgZmlsZVxuIg0K IAkiICAtTCwgLS1sYXRlbmN5LWxpbWl0PU5VTSAgY291bnQgdHJhbnNhY3Rp b25zIGxhc3RpbmcgbW9yZSB0aGFuIE5VTSBtcyBhcyBsYXRlXG4iDQpAQCAt MTE4Nyw3ICsxMTkxLDEzIEBAIGNsaWVudERvbmUoQ1N0YXRlICpzdCwgYm9v bCBvaykNCiBzdGF0aWMgaW50DQogY2hvb3NlU2NyaXB0KFRTdGF0ZSAqdGhy ZWFkKQ0KIHsNCi0JcmV0dXJuIGdldHJhbmQodGhyZWFkLCAwLCBudW1fc2Ny aXB0cyAtIDEpOw0KKwlpbnQgaSA9IDAsIHcgPSAwLCB3YyA9IChpbnQpIGdl dHJhbmQodGhyZWFkLCAwLCB0b3RhbF93ZWlnaHQgLSAxKTsNCisNCisJZG8g ew0KKwkJdyArPSBzcWxfc2NyaXB0W2krK10ud2VpZ2h0Ow0KKwl9IHdoaWxl ICh3IDw9IHdjKTsNCisNCisJcmV0dXJuIGkgLSAxOw0KIH0NCiANCiAvKiBy ZXR1cm4gZmFsc2UgaWZmIGNsaWVudCBzaG91bGQgYmUgZGlzY29ubmVjdGVk ICovDQpAQCAtMjYyNSw4ICsyNjM1LDQxIEBAIHByb2Nlc3NfYnVpbHRpbihj b25zdCBjaGFyICp0YiwgY29uc3QgY2hhciAqc291cmNlKQ0KIAlyZXR1cm4g bXlfY29tbWFuZHM7DQogfQ0KIA0KKy8qIFBvc3NpYnkgdHJ1bmNhdGUgb3B0 aW9uIGFuZCByZXR1cm4gd2VpZ2h0ICovDQorc3RhdGljIGludA0KK2dldFdl aWdodChjaGFyICpvcHRpb24pDQorew0KKwljaGFyICAgKnNlcDsNCisJaW50 CQl3ZWlnaHQ7DQorDQorCWlmICgoc2VwID0gc3RycmNocihvcHRpb24sIFdT RVApKSkNCisJew0KKwkJY2hhciAqczsNCisJCSpzZXArKyA9ICdcMCc7DQor DQorCQkvKiBjaGVjayB0aGF0IHRoZSB3ZWlnaHQgaXMgYSBwb3NpdGl2ZSBp bnRlZ2VyICovDQorCQlzID0gc2VwOw0KKwkJd2hpbGUgKCcwJyA8PSAqcyAm JiAqcyA8PSAnOScpDQorCQkJcysrOw0KKwkJaWYgKCpzICE9ICdcMCcgfHwg cyA9PSBzZXApDQorCQl7DQorCQkJLyogZW1wdHkgb3IgYW55IG90aGVyIGNo YXIgKi8NCisJCQlmcHJpbnRmKHN0ZGVyciwNCisJCQkJCSJ3ZWlnaHQgZm9y IHNjcmlwdCBcIiVzXCIgbXVzdCBiZSBhbiBpbnRlZ2VyLCBnb3QgXCIlc1wi XG4iLA0KKwkJCQkJb3B0aW9uLCBzZXApOw0KKwkJCWV4aXQoMSk7DQorCQl9 DQorDQorCQl3ZWlnaHQgPSBhdG9pKHNlcCk7DQorCX0NCisJZWxzZQ0KKwkJ d2VpZ2h0ID0gMTsNCisNCisJcmV0dXJuIHdlaWdodDsNCit9DQorDQogc3Rh dGljIHZvaWQNCi1hZGRTY3JpcHQoY29uc3QgY2hhciAqbmFtZSwgQ29tbWFu ZCAqKiBjb21tYW5kcykNCithZGRTY3JpcHQoY29uc3QgY2hhciAqbmFtZSwg Q29tbWFuZCAqKiBjb21tYW5kcywgaW50IHdlaWdodCkNCiB7DQogCWlmIChj b21tYW5kcyA9PSBOVUxMKQ0KIAl7DQpAQCAtMjY0MSw2ICsyNjg0LDcgQEAg YWRkU2NyaXB0KGNvbnN0IGNoYXIgKm5hbWUsIENvbW1hbmQgKiogY29tbWFu ZHMpDQogCX0NCiANCiAJc3FsX3NjcmlwdFtudW1fc2NyaXB0c10ubmFtZSA9 IG5hbWU7DQorCXNxbF9zY3JpcHRbbnVtX3NjcmlwdHNdLndlaWdodCA9IHdl aWdodDsNCiAJc3FsX3NjcmlwdFtudW1fc2NyaXB0c10uY29tbWFuZHMgPSBj b21tYW5kczsNCiAJaW5pdFN0YXRzKCYgc3FsX3NjcmlwdFtudW1fc2NyaXB0 c10uc3RhdHMsIDAuMCk7DQogCW51bV9zY3JpcHRzKys7DQpAQCAtMjcyMywx NiArMjc2NywxNiBAQCBwcmludFJlc3VsdHMoVFN0YXRlICp0aHJlYWRzLCBT dGF0c0RhdGEgKnRvdGFsLCBpbnN0cl90aW1lIHRvdGFsX3RpbWUsDQogCXBy aW50ZigidHBzID0gJWYgKGluY2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxp c2hpbmcpXG4iLCB0cHNfaW5jbHVkZSk7DQogCXByaW50ZigidHBzID0gJWYg KGV4Y2x1ZGluZyBjb25uZWN0aW9ucyBlc3RhYmxpc2hpbmcpXG4iLCB0cHNf ZXhjbHVkZSk7DQogDQotCS8qIFJlcG9ydCBwZXItc2NyaXB0IHN0YXRzICov DQorCS8qIFJlcG9ydCBwZXItZmlsZSBkYXRhICovDQogCWlmIChwZXJfc2Ny aXB0X3N0YXRzKQ0KIAl7DQogCQlpbnQJCQlpOw0KIA0KIAkJZm9yIChpID0g MDsgaSA8IG51bV9zY3JpcHRzOyBpKyspDQogCQl7DQotCQkJcHJpbnRmKCJT UUwgc2NyaXB0ICVkOiAlc1xuIg0KKwkJCXByaW50ZigiU1FMIHNjcmlwdCAl ZCwgd2VpZ2h0ICVkOiAlc1xuIg0KIAkJCQkgICAiIC0gIklOVDY0X0ZPUk1B VCIgdHJhbnNhY3Rpb25zICglLjFmJSUgb2YgdG90YWwsIHRwcyA9ICVmKVxu IiwNCi0JCQkJICAgaSsxLCBzcWxfc2NyaXB0W2ldLm5hbWUsDQorCQkJCSAg IGkrMSwgc3FsX3NjcmlwdFtpXS53ZWlnaHQsIHNxbF9zY3JpcHRbaV0ubmFt ZSwNCiAJCQkJICAgc3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQsDQogCQkJCSAg IDEwMC4wICogc3FsX3NjcmlwdFtpXS5zdGF0cy5jbnQgLyB0b3RhbC0+Y250 LA0KIAkJCQkgICBzcWxfc2NyaXB0W2ldLnN0YXRzLmNudCAvIHRpbWVfaW5j bHVkZSk7DQpAQCAtMjgyMyw2ICsyODY3LDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpDQogCWluc3RyX3RpbWUJY29ubl90b3RhbF90aW1lOw0K IAlpbnQ2NAkJbGF0ZW5jeV9sYXRlID0gMDsNCiAJU3RhdHNEYXRhCXN0YXRz Ow0KKwlpbnQJCQl3ZWlnaHQ7DQogCWNoYXIJICAgKmRlc2M7DQogDQogCWlu dAkJCWk7DQpAQCAtMzAwNywyNSArMzA1MiwyNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikNCiAJCQkJCWV4aXQoMCk7DQogCQkJCX0NCiANCisJ CQkJd2VpZ2h0ID0gZ2V0V2VpZ2h0KG9wdGFyZyk7DQogCQkJCWFkZFNjcmlw dChkZXNjLCBwcm9jZXNzX2J1aWx0aW4oDQotCQkJCQkJCSAgZmluZF9idWls dGluKG9wdGFyZywgJmRlc2MpLCBkZXNjKSk7DQorCQkJCQkJCSAgZmluZF9i dWlsdGluKG9wdGFyZywgJmRlc2MpLCBkZXNjKSwgd2VpZ2h0KTsNCiAJCQkJ YmVuY2htYXJraW5nX29wdGlvbl9zZXQgPSB0cnVlOw0KIAkJCQlpbnRlcm5h bF9zY3JpcHRfdXNlZCA9IHRydWU7DQogCQkJCWJyZWFrOw0KIAkJCWNhc2Ug J1MnOg0KIAkJCQlhZGRTY3JpcHQoZGVzYywgcHJvY2Vzc19idWlsdGluKA0K LQkJCQkJCQkgIGZpbmRfYnVpbHRpbigic2VsZWN0LW9ubHkiLCAmZGVzYyks IGRlc2MpKTsNCisJCQkJCQkJICBmaW5kX2J1aWx0aW4oInNlbGVjdC1vbmx5 IiwgJmRlc2MpLCBkZXNjKSwgMSk7DQogCQkJCWJlbmNobWFya2luZ19vcHRp b25fc2V0ID0gdHJ1ZTsNCiAJCQkJaW50ZXJuYWxfc2NyaXB0X3VzZWQgPSB0 cnVlOw0KIAkJCQlicmVhazsNCiAJCQljYXNlICdOJzoNCiAJCQkJYWRkU2Ny aXB0KGRlc2MsIHByb2Nlc3NfYnVpbHRpbigNCi0JCQkJCQkJICBmaW5kX2J1 aWx0aW4oInNpbXBsZS11cGRhdGUiLCAmZGVzYyksIGRlc2MpKTsNCisJCQkJ CQkJICBmaW5kX2J1aWx0aW4oInNpbXBsZS11cGRhdGUiLCAmZGVzYyksIGRl c2MpLCAxKTsNCiAJCQkJYmVuY2htYXJraW5nX29wdGlvbl9zZXQgPSB0cnVl Ow0KIAkJCQlpbnRlcm5hbF9zY3JpcHRfdXNlZCA9IHRydWU7DQogCQkJCWJy ZWFrOw0KIAkJCWNhc2UgJ2YnOg0KLQkJCQlhZGRTY3JpcHQob3B0YXJnLCBw cm9jZXNzX2ZpbGUob3B0YXJnKSk7DQorCQkJCXdlaWdodCA9IGdldFdlaWdo dChvcHRhcmcpOw0KKwkJCQlhZGRTY3JpcHQob3B0YXJnLCBwcm9jZXNzX2Zp bGUob3B0YXJnKSwgd2VpZ2h0KTsNCiAJCQkJYmVuY2htYXJraW5nX29wdGlv bl9zZXQgPSB0cnVlOw0KIAkJCQlicmVhazsNCiAJCQljYXNlICdEJzoNCkBA IC0zMTY0LDExICszMjExLDE1IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQ0KIAlpZiAobnVtX3NjcmlwdHMgPT0gMCAmJiAhaXNfaW5pdF9tb2Rl KQ0KIAl7DQogCQlhZGRTY3JpcHQoZGVzYywgcHJvY2Vzc19idWlsdGluKA0K LQkJCQkJICBmaW5kX2J1aWx0aW4oInRwY2ItbGlrZSIsICZkZXNjKSwgZGVz YykpOw0KKwkJCQkJICBmaW5kX2J1aWx0aW4oInRwY2ItbGlrZSIsICZkZXNj KSwgZGVzYyksIDEpOw0KIAkJYmVuY2htYXJraW5nX29wdGlvbl9zZXQgPSB0 cnVlOw0KIAkJaW50ZXJuYWxfc2NyaXB0X3VzZWQgPSB0cnVlOw0KIAl9DQog DQorCS8qIGNvbXB1dGUgdG90YWxfd2VpZ2h0ICovDQorCWZvciAoaSA9IDA7 IGkgPCBudW1fc2NyaXB0czsgaSsrKQ0KKwkJdG90YWxfd2VpZ2h0ICs9IHNx bF9zY3JpcHRbaV0ud2VpZ2h0Ow0KKw0KIAkvKiBzaG93IHBlciBzY3JpcHQg c3RhdHMgaWYgc2V2ZXJhbCBzY3JpcHRzIGFyZSB1c2VkICovDQogCWlmIChu dW1fc2NyaXB0cyA+IDEpDQogCQlwZXJfc2NyaXB0X3N0YXRzID0gdHJ1ZTsN Cg== --8323329-242826868-1453558738=:21060 Content-Type: TEXT/x-diff; name=pgbench-script-stats-13-e.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pgbench-script-stats-13-e.patch ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgYi9zcmMv YmluL3BnYmVuY2gvcGdiZW5jaC5jDQppbmRleCAyMzI1NmZiLi4wYjJhMmY5 IDEwMDY0NA0KLS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3BnYmVuY2guYw0KQEAgLTIyOSwxNiArMjI5 LDE1IEBAIHR5cGVkZWYgc3RydWN0DQogCVBHY29ubgkgICAqY29uOwkJCS8q IGNvbm5lY3Rpb24gaGFuZGxlIHRvIERCICovDQogCWludAkJCWlkOwkJCQkv KiBjbGllbnQgTm8uICovDQogCWludAkJCXN0YXRlOwkJCS8qIHN0YXRlIE5v LiAqLw0KLQlpbnQJCQlsaXN0ZW47CQkJLyogMCBpbmRpY2F0ZXMgdGhhdCBh biBhc3luYyBxdWVyeSBoYXMgYmVlbg0KLQkJCQkJCQkJICogc2VudCAqLw0K LQlpbnQJCQlzbGVlcGluZzsJCS8qIDEgaW5kaWNhdGVzIHRoYXQgdGhlIGNs aWVudCBpcyBuYXBwaW5nICovDQorCWJvb2wJCWxpc3RlbjsJCQkvKiB3aGV0 aGVyIGFuIGFzeW5jIHF1ZXJ5IGhhcyBiZWVuIHNlbnQgKi8NCisJYm9vbAkJ aXNfdGhyb3R0bGVkOwkvKiB3aGV0aGVyIHRyYW5zYWN0aW9uIHRocm90dGxp bmcgaXMgZG9uZSAqLw0KKwlib29sCQlzbGVlcGluZzsJCS8qIHdoZXRoZXIg dGhlIGNsaWVudCBpcyBuYXBwaW5nICovDQogCWJvb2wJCXRocm90dGxpbmc7 CQkvKiB3aGV0aGVyIG5hcCBpcyBmb3IgdGhyb3R0bGluZyAqLw0KIAlWYXJp YWJsZSAgICp2YXJpYWJsZXM7CQkvKiBhcnJheSBvZiB2YXJpYWJsZSBkZWZp bml0aW9ucyAqLw0KIAlpbnQJCQludmFyaWFibGVzOw0KIAlpbnQ2NAkJdHhu X3NjaGVkdWxlZDsJLyogc2NoZWR1bGVkIHN0YXJ0IHRpbWUgb2YgdHJhbnNh Y3Rpb24gKHVzZWMpICovDQogCWluc3RyX3RpbWUJdHhuX2JlZ2luOwkJLyog dXNlZCBmb3IgbWVhc3VyaW5nIHNjaGVkdWxlIGxhZyB0aW1lcyAqLw0KIAlp bnN0cl90aW1lCXN0bXRfYmVnaW47CQkvKiB1c2VkIGZvciBtZWFzdXJpbmcg c3RhdGVtZW50IGxhdGVuY2llcyAqLw0KLQlib29sCQlpc190aHJvdHRsZWQ7 CS8qIHdoZXRoZXIgdHJhbnNhY3Rpb24gdGhyb3R0bGluZyBpcyBkb25lICov DQogCWludAkJCXVzZV9maWxlOwkJLyogaW5kZXggaW4gc3FsX3NjcmlwdHMg Zm9yIHRoaXMgY2xpZW50ICovDQogCWJvb2wJCXByZXBhcmVkW01BWF9TQ1JJ UFRTXTsgLyogd2hldGhlciBjbGllbnQgcHJlcGFyZWQgdGhlIHNjcmlwdCAq Lw0KIA0KQEAgLTEyNjQsNyArMTI2Myw3IEBAIHRvcDoNCiAJCQl9DQogCQl9 DQogDQotCQlzdC0+c2xlZXBpbmcgPSAxOw0KKwkJc3QtPnNsZWVwaW5nID0g dHJ1ZTsNCiAJCXN0LT50aHJvdHRsaW5nID0gdHJ1ZTsNCiAJCXN0LT5pc190 aHJvdHRsZWQgPSB0cnVlOw0KIAkJaWYgKGRlYnVnKQ0KQEAgLTEyNzksNyAr MTI3OCw3IEBAIHRvcDoNCiAJCWlmIChJTlNUUl9USU1FX0dFVF9NSUNST1NF Qyhub3cpIDwgc3QtPnR4bl9zY2hlZHVsZWQpDQogCQkJcmV0dXJuIHRydWU7 CQkvKiBTdGlsbCBzbGVlcGluZywgbm90aGluZyB0byBkbyBoZXJlICovDQog CQkvKiBFbHNlIGRvbmUgc2xlZXBpbmcsIGdvIGFoZWFkIHdpdGggbmV4dCBj b21tYW5kICovDQotCQlzdC0+c2xlZXBpbmcgPSAwOw0KKwkJc3QtPnNsZWVw aW5nID0gZmFsc2U7DQogCQlzdC0+dGhyb3R0bGluZyA9IGZhbHNlOw0KIAl9 DQogDQpAQCAtMTM3NSw5ICsxMzc0LDkgQEAgdG9wOg0KIAkJCSAqIG5vdGhp bmcgdG8gbGlzdGVuIHRvIHJpZ2h0IG5vdy4gIFdoZW4gdGhyb3R0bGluZyBy YXRlIGxpbWl0cw0KIAkJCSAqIGFyZSBhY3RpdmUsIGEgc2xlZXAgd2lsbCBo YXBwZW4gbmV4dCwgYXMgdGhlIG5leHQgdHJhbnNhY3Rpb24NCiAJCQkgKiBz dGFydHMuICBBbmQgdGhlbiBpbiBhbnkgY2FzZSB0aGUgbmV4dCBTUUwgY29t bWFuZCB3aWxsIHNldA0KLQkJCSAqIGxpc3RlbiBiYWNrIHRvIDEuDQorCQkJ ICogbGlzdGVuIGJhY2sgdG8gdHJ1ZS4NCiAJCQkgKi8NCi0JCQlzdC0+bGlz dGVuID0gMDsNCisJCQlzdC0+bGlzdGVuID0gZmFsc2U7DQogCQkJdHJhbnNf bmVlZHNfdGhyb3R0bGUgPSAodGhyb3R0bGVfZGVsYXkgPiAwKTsNCiAJCX0N CiAJfQ0KQEAgLTE1MDAsNyArMTQ5OSw3IEBAIHRvcDoNCiAJCQlzdC0+ZWNu dCsrOw0KIAkJfQ0KIAkJZWxzZQ0KLQkJCXN0LT5saXN0ZW4gPSAxOwkJLyog ZmxhZ3MgdGhhdCBzaG91bGQgYmUgbGlzdGVuZWQgKi8NCisJCQlzdC0+bGlz dGVuID0gdHJ1ZTsJCS8qIGZsYWdzIHRoYXQgc2hvdWxkIGJlIGxpc3RlbmVk ICovDQogCX0NCiAJZWxzZSBpZiAoY29tbWFuZHNbc3QtPnN0YXRlXS0+dHlw ZSA9PSBNRVRBX0NPTU1BTkQpDQogCXsNCkBAIC0xNjUxLDcgKzE2NTAsNyBA QCB0b3A6DQogCQkJCXJldHVybiB0cnVlOw0KIAkJCX0NCiANCi0JCQlzdC0+ bGlzdGVuID0gMTsNCisJCQlzdC0+bGlzdGVuID0gdHJ1ZTsNCiAJCX0NCiAJ CWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoYXJndlswXSwgInNldCIpID09IDAp DQogCQl7DQpAQCAtMTY3Miw3ICsxNjcxLDcgQEAgdG9wOg0KIAkJCQlyZXR1 cm4gdHJ1ZTsNCiAJCQl9DQogDQotCQkJc3QtPmxpc3RlbiA9IDE7DQorCQkJ c3QtPmxpc3RlbiA9IHRydWU7DQogCQl9DQogCQllbHNlIGlmIChwZ19zdHJj YXNlY21wKGFyZ3ZbMF0sICJzbGVlcCIpID09IDApDQogCQl7DQpAQCAtMTcw Niw5ICsxNzA1LDkgQEAgdG9wOg0KIA0KIAkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQobm93KTsNCiAJCQlzdC0+dHhuX3NjaGVkdWxlZCA9IElOU1RSX1RJ TUVfR0VUX01JQ1JPU0VDKG5vdykgKyB1c2VjOw0KLQkJCXN0LT5zbGVlcGlu ZyA9IDE7DQorCQkJc3QtPnNsZWVwaW5nID0gdHJ1ZTsNCiANCi0JCQlzdC0+ bGlzdGVuID0gMTsNCisJCQlzdC0+bGlzdGVuID0gdHJ1ZTsNCiAJCX0NCiAJ CWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoYXJndlswXSwgInNldHNoZWxsIikg PT0gMCkNCiAJCXsNCkBAIC0xNzIyLDcgKzE3MjEsNyBAQCB0b3A6DQogCQkJ CXJldHVybiB0cnVlOw0KIAkJCX0NCiAJCQllbHNlCS8qIHN1Y2NlZWRlZCAq Lw0KLQkJCQlzdC0+bGlzdGVuID0gMTsNCisJCQkJc3QtPmxpc3RlbiA9IHRy dWU7DQogCQl9DQogCQllbHNlIGlmIChwZ19zdHJjYXNlY21wKGFyZ3ZbMF0s ICJzaGVsbCIpID09IDApDQogCQl7DQpAQCAtMTczNiw3ICsxNzM1LDcgQEAg dG9wOg0KIAkJCQlyZXR1cm4gdHJ1ZTsNCiAJCQl9DQogCQkJZWxzZQkvKiBz dWNjZWVkZWQgKi8NCi0JCQkJc3QtPmxpc3RlbiA9IDE7DQorCQkJCXN0LT5s aXN0ZW4gPSB0cnVlOw0KIAkJfQ0KIA0KIAkJLyogYWZ0ZXIgYSBtZXRhIGNv bW1hbmQsIGltbWVkaWF0ZWx5IHByb2NlZWQgd2l0aCBuZXh0IGNvbW1hbmQg Ki8NCkBAIC0yODIyLDEyICsyODIxLDE0IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQ0KIAkJeyJpbml0aWFsaXplIiwgbm9fYXJndW1lbnQsIE5V TEwsICdpJ30sDQogCQl7ImpvYnMiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgJ2onfSwNCiAJCXsibG9nIiwgbm9fYXJndW1lbnQsIE5VTEwsICdsJ30s DQorCQl7ImxhdGVuY3ktbGltaXQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgJ0wnfSwNCiAJCXsibm8tdmFjdXVtIiwgbm9fYXJndW1lbnQsIE5VTEws ICduJ30sDQogCQl7InBvcnQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwg J3AnfSwNCiAJCXsicHJvZ3Jlc3MiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgJ1AnfSwNCiAJCXsicHJvdG9jb2wiLCByZXF1aXJlZF9hcmd1bWVudCwg TlVMTCwgJ00nfSwNCiAJCXsicXVpZXQiLCBub19hcmd1bWVudCwgTlVMTCwg J3EnfSwNCiAJCXsicmVwb3J0LWxhdGVuY2llcyIsIG5vX2FyZ3VtZW50LCBO VUxMLCAncid9LA0KKwkJeyJyYXRlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsICdSJ30sDQogCQl7InNjYWxlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsICdzJ30sDQogCQl7InNlbGVjdC1vbmx5Iiwgbm9fYXJndW1lbnQsIE5V TEwsICdTJ30sDQogCQl7InNraXAtc29tZS11cGRhdGVzIiwgbm9fYXJndW1l bnQsIE5VTEwsICdOJ30sDQpAQCAtMjg0Miw4ICsyODQzLDYgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpDQogCQl7InVubG9nZ2VkLXRhYmxlcyIs IG5vX2FyZ3VtZW50LCAmdW5sb2dnZWRfdGFibGVzLCAxfSwNCiAJCXsic2Ft cGxpbmctcmF0ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA0fSwNCiAJ CXsiYWdncmVnYXRlLWludGVydmFsIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsIDV9LA0KLQkJeyJyYXRlIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws ICdSJ30sDQotCQl7ImxhdGVuY3ktbGltaXQiLCByZXF1aXJlZF9hcmd1bWVu dCwgTlVMTCwgJ0wnfSwNCiAJCXsicHJvZ3Jlc3MtdGltZXN0YW1wIiwgbm9f YXJndW1lbnQsIE5VTEwsIDZ9LA0KIAkJe05VTEwsIDAsIE5VTEwsIDB9DQog CX07DQpAQCAtMzY1Miw3ICszNjUxLDcgQEAgdGhyZWFkUnVuKHZvaWQgKmFy ZykNCiAJCQkJew0KIAkJCQkJLyogaW50ZXJydXB0IGNsaWVudCB3aGljaCBo YXMgbm90IHN0YXJ0ZWQgYSB0cmFuc2FjdGlvbiAqLw0KIAkJCQkJcmVtYWlu cy0tOw0KLQkJCQkJc3QtPnNsZWVwaW5nID0gMDsNCisJCQkJCXN0LT5zbGVl cGluZyA9IGZhbHNlOw0KIAkJCQkJc3QtPnRocm90dGxpbmcgPSBmYWxzZTsN CiAJCQkJCVBRZmluaXNoKHN0LT5jb24pOw0KIAkJCQkJc3QtPmNvbiA9IE5V TEw7DQo= --8323329-242826868-1453558738=:21060 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --8323329-242826868-1453558738=:21060--