Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1riCB5-00FeZr-AT for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 11:44:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1riCB3-004zEQ-BW for pgsql-hackers@arkaria.postgresql.org; Thu, 07 Mar 2024 11:44:45 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1riCB2-004zEI-NZ for pgsql-hackers@lists.postgresql.org; Thu, 07 Mar 2024 11:44:45 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1riCAs-003Fvk-5u for pgsql-hackers@lists.postgresql.org; Thu, 07 Mar 2024 11:44:43 +0000 Received: from mail.postgrespro.ru (webmail.mstn.postgrespro.ru [192.168.2.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: i.kartyshov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id BE33EE20E97; Thu, 7 Mar 2024 14:44:32 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1709811872; bh=D4NKQASoOZ20vl0XgRNX2TFi+Dgi+QoWp+gy9Cr1KDo=; h=Date:From:To:Cc:Subject:In-Reply-To:References:User-Agent: Message-ID:From; b=u6Z3zp7LWyrI7Hy6VLz9tSYTkn5PFOrpC0MCWPJkiB9tv68oejwhlIpymFD2RN30B JArAGhLtG6D46BfGLoq5qdcyxIWglIo+OKDz/QGZet1sGMg7F9UekVSq1WwixH0GB+ MKE/EPWfmqPfL1ZrZdAsDRnuWKE844Gmagb8Jy6DCDionqRfjtqMSjLTjM3KLTiviD HxgRgdmicRAPZaRPN0Pw7eHU4aPYb7ZgkOXcCy4siWWjZDBpkEK6bZWliCGbH56Eat afrrHy0fvJJ5+58wNEqINnFTxKob1dpjvvobLqFBJYkH/CIRqXt4tAM+Bzlb672HtD 4TluqYyj8q2Bw== MIME-Version: 1.0 Date: Thu, 07 Mar 2024 14:44:32 +0300 From: Kartyshov Ivan To: dilipbalaut@gmail.com, smithpb2250@gmail.com Cc: pgsql-hackers@lists.postgresql.org Subject: Re: [HACKERS] make async slave to wait for lsn to be replayed In-Reply-To: <4953563546cb8c8851f84c7debf723ef@postgrespro.ru> References: <22f122-655b3e80-3-688b3700@97587957> <4953563546cb8c8851f84c7debf723ef@postgrespro.ru> User-Agent: Roundcube Webmail/1.6.5 Message-ID: <31547e4e8c263392a768ea89a3f57833@postgrespro.ru> X-Sender: i.kartyshov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_a3bf8cf416a17974078e822b81a2ddb9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_a3bf8cf416a17974078e822b81a2ddb9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Intro ========== The main purpose of the feature is to achieve read-your-writes-consistency, while using async replica for reads and primary for writes. In that case lsn of last modification is stored inside application. We cannot store this lsn inside database, since reads are distributed across all replicas and primary. Two implementations of one feature ========== We left two different solutions. Help me please to choose the best. 1) Classic (wait_classic_v7.patch) https://www.postgresql.org/message-id/3cc883048264c2e9af022033925ff8db%40postgrespro.ru Synopsis ========== advantages: multiple wait events, separate WAIT FOR statement disadvantages: new words in grammar WAIT FOR [ANY | ALL] event [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ WAIT FOR [ANY | ALL] event [, ...]] event: LSN value TIMEOUT number_of_milliseconds timestamp 2) After style: Kyotaro and Freund (wait_after_within_v6.patch) https://www.postgresql.org/message-id/d3ff2e363af60b345f82396992595a03%40postgrespro.ru Synopsis ========== advantages: no new words in grammar disadvantages: a little harder to understand, fewer events to wait AFTER lsn_event [ WITHIN delay_milliseconds ] [, ...] BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] START [ WORK | TRANSACTION ] [ transaction_mode [, ...] ] [ AFTER lsn_event [ WITHIN delay_milliseconds ]] Examples ========== primary standby ------- -------- postgresql.conf recovery_min_apply_delay = 10s CREATE TABLE tbl AS SELECT generate_series(1,10) AS a; INSERT INTO tbl VALUES (generate_series(11, 20)); SELECT pg_current_wal_lsn(); BEGIN WAIT FOR LSN '0/3002AE8'; SELECT * FROM tbl; // read fresh insertions COMMIT; Rebased and ready for review. -- Ivan Kartyshov Postgres Professional: www.postgrespro.com --=_a3bf8cf416a17974078e822b81a2ddb9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_classic_v7.patch Content-Disposition: attachment; filename=wait_classic_v7.patch; size=48868 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvYWxsZmlsZXMuc2dtbAppbmRleCA0YTQyOTk5YjE4Li42NTdhMjE3ZTI3IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9hbGxmaWxlcy5zZ21sCkBAIC0xODgsNiArMTg4LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2Fi bGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSB1cGRhdGUg ICAgICAgICAgICAgU1lTVEVNICJ1cGRhdGUuc2dtbCI+CiA8IUVOVElUWSB2YWN1dW0gICAgICAg ICAgICAgU1lTVEVNICJ2YWN1dW0uc2dtbCI+CiA8IUVOVElUWSB2YWx1ZXMgICAgICAgICAgICAg U1lTVEVNICJ2YWx1ZXMuc2dtbCI+Cis8IUVOVElUWSB3YWl0ICAgICAgICAgICAgICAgU1lTVEVN ICJ3YWl0LnNnbWwiPgogCiA8IS0tIGFwcGxpY2F0aW9ucyBhbmQgdXRpbGl0aWVzIC0tPgogPCFF TlRJVFkgY2x1c3RlcmRiICAgICAgICAgIFNZU1RFTSAiY2x1c3RlcmRiLnNnbWwiPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdp bi5zZ21sCmluZGV4IDAxNmIwMjE0ODcuLmIzYWYxNmMwOWYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2luLnNnbWwKQEAg LTIxLDEzICsyMSwyMSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KLUJFR0lOIFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gXQorQkVHSU4gWyBXT1JLIHwgVFJBTlNBQ1RJT04gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9ldmVudDwvcmVwbGFjZWFibGU+ CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0 aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJ T04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRF RCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBb IE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKyAgICBX QUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZlbnQ8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KKyAgICBM U04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGlt ZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv c3RhcnRfdHJhbnNhY3Rpb24uc2dtbAppbmRleCA3NGNjZDdlMzQ1Li4xYjU0ZWQyMDg0IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCkBAIC0yMSwxMyArMjEsMjEgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3BzaXM+ Ci1TVEFSVCBUUkFOU0FDVElPTiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFu c2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCitTVEFSVCBUUkFOU0FDVElPTiBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNl YWJsZT4gWywgLi4uXSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X2Zvcl9l dmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJh c2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJWkFCTEUgfCBSRVBFQVRBQkxFIFJF QUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRURUQgfQogICAgIFJFQUQgV1JJVEUg fCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUKKworPHBocmFzZT53aGVyZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9mb3JfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBXQUlUIEZPUiBbQU5ZIHwgQUxMXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXZlbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCisKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IGlzIG9uZSBv Zjo8L3BocmFzZT4KKyAgICBMU04gbHNuX3ZhbHVlCisgICAgVElNRU9VVCBudW1iZXJfb2ZfbWls bGlzZWNvbmRzCisgICAgdGltZXN0YW1wCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi93YWl0LnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjZj YWUzYWQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvd2FpdC5zZ21sCkBA IC0wLDAgKzEsMTQ2IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL3dhaXQuc2dtbAorUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKworPHJlZmVudHJ5IGlkPSJzcWwtd2FpdCI+CisgPGlu ZGV4dGVybSB6b25lPSJzcWwtd2FpdCI+CisgIDxwcmltYXJ5PldBSVQgRk9SPC9wcmltYXJ5Pgor IDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPldBSVQgRk9SPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5XQUlUIEZPUjwvcmVmbmFtZT4KKyAgPHJlZnB1cnBv c2U+d2FpdCBmb3IgdGhlIHRhcmdldCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJlcGxh eWVkIG9yIGZvciBzcGVjaWZpZWQgdGltZSB0byBwYXNzPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFt ZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK1dBSVQgRk9SIFtBTlkgfCBB TExdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ldmVudDwvcmVwbGFjZWFibGU+IFss IC4uLl0KKworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXZl bnQ8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisgICAgTFNOIHZhbHVlCisgICAg VElNRU9VVCBudW1iZXJfb2ZfbWlsbGlzZWNvbmRzCisgICAgdGltZXN0YW1wCisKK1dBSVQgRk9S IExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2Vh YmxlPicKK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicgVElNRU9VVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+d2FpdF90aW1lb3V0PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicsIFRJTUVTVEFNUCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1lPC9yZXBsYWNlYWJsZT4KK1dB SVQgRk9SIFRJTUVTVEFNUCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF90aW1l PC9yZXBsYWNlYWJsZT4KK1dBSVQgRk9SIEFMTCBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5sc25fbnVtYmVyPC9yZXBsYWNlYWJsZT4nIFRJTUVPVVQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+LCBUSU1FU1RBTVAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+CitXQUlU IEZPUiBBTlkgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuX251bWJlcjwv cmVwbGFjZWFibGU+JywgVElNRVNUQU1QIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53 YWl0X3RpbWU8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2Pgor CisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgIDxwYXJhPgor ICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IHByb3ZpZGVzIGEgc2ltcGxlIGludGVycHJv Y2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBmb3IgdGltZXN0YW1wLCB0 aW1lb3V0IG9yIHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlcgorICAgKDxhY3JvbnltPkxT TjwvYWNyb255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJl cGxpY2F0aW9uLiBXaGVuIHJ1biB3aXRoIHRoZQorICAgPHJlcGxhY2VhYmxlPkxTTjwvcmVwbGFj ZWFibGU+IG9wdGlvbiwgdGhlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPgorICAgY29tbWFu ZCB3YWl0cyBmb3IgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IHRvIGJlIHJl cGxheWVkLgorICAgSWYgbm8gdGltZXN0YW1wIG9yIHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2Fp dCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRpbmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5n IDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9yCisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8 bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2VydmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNl Y3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZh cmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRoZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJl ciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2 YWwgdG8gd2FpdCBmb3IgdGhlIExTTiB0byBiZSByZXBsYXllZC4KKyAgICAgIFRoZSBzcGVjaWZp ZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVwbGFjZWFibGU+IG11c3QgYmUgYW4gaW50 ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1pbGxpc2Vjb25kcy4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT5VTlRJTCBUSU1FU1RBTVAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndhaXRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBMaW1pdCB0aGUgdGltZSB0byB3YWl0IGZvciB0aGUgTFNOIHRvIGJlIHJl cGxheWVkLgorICAgICAgVGhlIHNwZWNpZmllZCA8cmVwbGFjZWFibGU+d2FpdF90aW1lPC9yZXBs YWNlYWJsZT4gbXVzdCBiZSB0aW1lc3RhbXAuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisgPC9yZWZzZWN0MT4K KworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFJ1biA8bGl0ZXJhbD5XQUlUIEZPUjwvbGl0ZXJhbD4gZnJvbSA8YXBwbGljYXRpb24+cHNxbDwv YXBwbGljYXRpb24+LAorICAgbGltaXRpbmcgd2FpdCB0aW1lIHRvIDEwMDAwIG1pbGxpc2Vjb25k czoKKworPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3QTZCMScgVElNRU9VVCAxMDAwMDsK K05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4K K0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQgdW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5M U048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgorPHNjcmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjA3 QTYxMSc7CitMU04gcmVhY2hlZAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKzwvc2NyZWVu PgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBMaW1pdCA8YWNyb255bT5MU048L2Fjcm9ueW0+ IHdhaXQgdGltZSB0byA1MDAwMDAgbWlsbGlzZWNvbmRzLAorICAgYW5kIHRoZW4gY2FuY2VsIHRo ZSBjb21tYW5kIGlmIDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FzIG5vdCByZWFjaGVkOgorPHNj cmVlbj4KK1dBSVQgRk9SIExTTiAnMC8zRjBGRjc5MScgVElNRU9VVCA1MDAwMDA7CiteQ0NhbmNl bCByZXF1ZXN0IHNlbnQKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hlZC4gVHJ5IHRvIGluY3Jl YXNlIHdhaXQgdGltZS4KK0VSUk9SOiAgY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciBy ZXF1ZXN0CisgTFNOIHJlYWNoZWQKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCis8L3NjcmVl bj4KKzwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Q29tcGF0 aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGVyZSBpcyBubyA8Y29tbWFuZD5XQUlU IEZPUjwvY29tbWFuZD4gc3RhdGVtZW50IGluIHRoZSBTUUwKKyAgIHN0YW5kYXJkLgorICA8L3Bh cmE+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmZXJlbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKaW5kZXggYWE5NGY2 YWRmNi4uMDRlMTc2MjBkZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbApAQCAtMjE2LDYgKzIxNiw3IEBACiAg ICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2FpdDsKIAogIDwvcmVm ZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVj b3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4 IDg1M2I1NDA5NDUuLjAyOTA2YzU4NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFja3VwL2Jhc2ViYWNr dXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJjb21tYW5k cy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgImNv bW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0xODI1LDYgKzE4MjYsMTMgQEAgUGVyZm9ybVdhbFJlY292ZXJ5KHZvaWQpCiAJ CQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBJZiB3ZSByZXBsYXllZCBhbiBMU04gdGhh dCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwKKwkJCSAqIHNldCBsYXRjaGVzIGluIHNoYXJlZCBt ZW1vcnkgYXJyYXkgdG8gbm90aWZ5IHRoZSB3YWl0ZXIuCisJCQkgKi8KKwkJCWlmIChYTG9nUmVj b3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkpCisJCQkJV2Fp dFNldExhdGNoKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyKTsKKwogCQkJ LyogRWxzZSwgdHJ5IHRvIGZldGNoIHRoZSBuZXh0IFdBTCByZWNvcmQgKi8KIAkJCXJlY29yZCA9 IFJlYWRSZWNvcmQoeGxvZ3ByZWZldGNoZXIsIExPRywgZmFsc2UsIHJlcGxheVRMSSk7CiAJCX0g d2hpbGUgKHJlY29yZCAhPSBOVUxMKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5 MS4uZDhmNjk2NWQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTYxLDYgKzYxLDcgQEAgT0JK UyA9IFwKIAl2YWN1dW0ubyBcCiAJdmFjdXVtcGFyYWxsZWwubyBcCiAJdmFyaWFibGUubyBcCi0J dmlldy5vCisJdmlldy5vIFwKKwl3YWl0Lm8KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL3NyYy9i YWNrZW5kL2NvbW1vbi5tawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRleCA2ZGQwMGE0YWJk Li4zZjA2ZGM1MzQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWls ZAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZApAQCAtNTAsNCArNTAsNSBA QCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICd2YWN1dW1wYXJhbGxlbC5jJywKICAgJ3Zh cmlhYmxlLmMnLAogICAndmlldy5jJywKKyAgJ3dhaXQuYycsCiApCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy93YWl0LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODI1NjI0MGZhOQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYwpAQCAtMCwwICsxLDQwMyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogd2FpdC5jCisgKgkgIEltcGxlbWVudHMgV0FJVCBG T1IsIHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcworICoJICB0aW1lIHBh c3Npbmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjQsIFJlZ2VudHMgb2YgUG9z dGdyZXNQcm8KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5k cy93YWl0LmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8ZmxvYXQu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNsdWRlICJw Z3N0YXQuaCIKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK KyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCisjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQu aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9wbXNpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKKyNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJleGVjdXRvci9zcGkuaCIKKyNpbmNs dWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisKKy8qIEFkZCB0byAvIGRlbGV0ZSBmcm9tIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2b2lkIEFkZEV2ZW50KFhMb2dSZWNQdHIgbHNuX3Rv X3dhaXQpOworc3RhdGljIHZvaWQgRGVsZXRlRXZlbnQodm9pZCk7CisKKy8qIFNoYXJlZCBtZW1v cnkgc3RydWN0dXJlICovCit0eXBlZGVmIHN0cnVjdAoreworCWludAkJCWJhY2tlbmRfbWF4aWQ7 CisJcGdfYXRvbWljX3VpbnQ2NAltaW5fbHNuOworCXNsb2NrX3QJCW11dGV4OworCVhMb2dSZWNQ dHIJd2FpdGVkX2xzbltGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOworfSBXYWl0U3RhdGU7CisKK3N0 YXRpYyB2b2xhdGlsZSBXYWl0U3RhdGUgKnN0YXRlOworCisvKiBBZGQgdGhlIGV2ZW50IG9mIHRo ZSBjdXJyZW50IGJhY2tlbmQgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KK3N0YXRpYyB2 b2lkCitBZGRFdmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KQoreworCVNwaW5Mb2NrQWNxdWly ZSgmc3RhdGUtPm11dGV4KTsKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPCBNeVByb2NOdW1i ZXIpCisJCXN0YXRlLT5iYWNrZW5kX21heGlkID0gTXlQcm9jTnVtYmVyOworCisJc3RhdGUtPndh aXRlZF9sc25bTXlQcm9jTnVtYmVyXSA9IGxzbl90b193YWl0OworCisJaWYgKGxzbl90b193YWl0 IDwgcGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikpCisJCXBnX2F0b21pY193cml0 ZV91NjQoJnN0YXRlLT5taW5fbHNuLGxzbl90b193YWl0KTsKKwlTcGluTG9ja1JlbGVhc2UoJnN0 YXRlLT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWxldGUgZXZlbnQgb2YgdGhlIGN1cnJlbnQgYmFj a2VuZCBmcm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFycmF5LgorICoKKyAqIFRPRE86IENvbnNpZGVy IHN0YXRlIGNsZWFudXAgb24gYmFja2VuZCBmYWlsdXJlLgorICogQ2hlY2s6CisgKiAxKSBub21h bHxzbWFydHxmYXN0fGltbWVkaWF0ZSBzdG9wCisgKiAyKSBTSUdLSUxMIGFuZCBTSUdURVJNCisg Ki8KK3N0YXRpYyB2b2lkCitEZWxldGVFdmVudCh2b2lkKQoreworCWludAkJCWk7CisJWExvZ1Jl Y1B0cglsc25fdG9fZGVsZXRlID0gc3RhdGUtPndhaXRlZF9sc25bTXlQcm9jTnVtYmVyXTsKKwor CXN0YXRlLT53YWl0ZWRfbHNuW015UHJvY051bWJlcl0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwor CVNwaW5Mb2NrQWNxdWlyZSgmc3RhdGUtPm11dGV4KTsKKworCS8qIElmIHdlIG5lZWQgdG8gY2hv b3NlIHRoZSBuZXh0IG1pbl9sc24sIHVwZGF0ZSBzdGF0ZS0+bWluX2xzbiAqLworCWlmIChwZ19h dG9taWNfcmVhZF91NjQoJnN0YXRlLT5taW5fbHNuKSA9PSBsc25fdG9fZGVsZXRlKQorCXsKKwkJ cGdfYXRvbWljX3dyaXRlX3U2NCgmc3RhdGUtPm1pbl9sc24sUEdfVUlOVDY0X01BWCk7CisJCWZv ciAoaSA9IDE7IGkgPD0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7IGkrKykKKwkJCWlmIChzdGF0ZS0+ d2FpdGVkX2xzbltpXSAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQkJCXN0YXRlLT53YWl0ZWRf bHNuW2ldIDwgcGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikpCisJCQkJcGdfYXRv bWljX3dyaXRlX3U2NCgmc3RhdGUtPm1pbl9sc24sc3RhdGUtPndhaXRlZF9sc25baV0pOworCX0K KworCWlmIChzdGF0ZS0+YmFja2VuZF9tYXhpZCA9PSBNeVByb2NOdW1iZXIpCisJCWZvciAoaSA9 IChNeVByb2NOdW1iZXIpOyBpID49IDE7IGktLSkKKwkJCWlmIChzdGF0ZS0+d2FpdGVkX2xzbltp XSAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJCXsKKwkJCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9 IGk7CisJCQkJYnJlYWs7CisJCQl9CisKKwlTcGluTG9ja1JlbGVhc2UoJnN0YXRlLT5tdXRleCk7 Cit9CisKKy8qCisgKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVk IGZvciBXYWl0U3RhdGUKKyAqLworU2l6ZQorV2FpdFNobWVtU2l6ZSh2b2lkKQoreworCVNpemUJ CXNpemU7CisKKwlzaXplID0gb2Zmc2V0b2YoV2FpdFN0YXRlLCB3YWl0ZWRfbHNuKTsKKwlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTWF4QmFja2VuZHMsIHNpemVvZihYTG9nUmVjUHRy KSkpOworCXJldHVybiBzaXplOworfQorCisvKiBJbml0IGFycmF5IG9mIGV2ZW50cyBpbiBzaGFy ZWQgbWVtb3J5ICovCit2b2lkCitXYWl0U2htZW1Jbml0KHZvaWQpCit7CisJYm9vbAkJZm91bmQ7 CisJdWludDMyCQlpOworCisJc3RhdGUgPSAoV2FpdFN0YXRlICopIFNobWVtSW5pdFN0cnVjdCgi cGdfd2FpdF9sc24iLAorCQkJCQkJCQkJCSAgV2FpdFNobWVtU2l6ZSgpLAorCQkJCQkJCQkJCSAg JmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCXsKKwkJU3BpbkxvY2tJbml0KCZzdGF0ZS0+bXV0ZXgp OworCisJCWZvciAoaSA9IDA7IGkgPCBNYXhCYWNrZW5kczsgaSsrKQorCQkJc3RhdGUtPndhaXRl ZF9sc25baV0gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9 IDA7CisJCXBnX2F0b21pY19pbml0X3U2NCgmc3RhdGUtPm1pbl9sc24sUEdfVUlOVDY0X01BWCk7 CisJfQorfQorCisvKiBTZXQgYWxsIGxhdGNoZXMgaW4gc2hhcmVkIG1lbW9yeSB0byBzaWduYWwg dGhhdCBuZXcgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCit2b2lkCitXYWl0U2V0TGF0Y2goWExv Z1JlY1B0ciBjdXJfbHNuKQoreworCXVpbnQzMgkJaTsKKwlpbnQgCQliYWNrZW5kX21heGlkOwor CVBHUFJPQwkgICAqYmFja2VuZDsKKworCVNwaW5Mb2NrQWNxdWlyZSgmc3RhdGUtPm11dGV4KTsK KwliYWNrZW5kX21heGlkID0gc3RhdGUtPmJhY2tlbmRfbWF4aWQ7CisJU3BpbkxvY2tSZWxlYXNl KCZzdGF0ZS0+bXV0ZXgpOworCisJZm9yIChpID0gMTsgaSA8PSBiYWNrZW5kX21heGlkOyBpKysp CisJeworCQliYWNrZW5kID0gUHJvY051bWJlckdldFByb2MoaSk7CisJCWlmIChzdGF0ZS0+d2Fp dGVkX2xzbltpXSAhPSAwKQorCQl7CisJCQlpZiAoYmFja2VuZCAmJiBzdGF0ZS0+d2FpdGVkX2xz bltpXSA8PSBjdXJfbHNuKQorCQkJCVNldExhdGNoKCZiYWNrZW5kLT5wcm9jTGF0Y2gpOworCQl9 CisJfQorfQorCisvKiBHZXQgbWluaW1hbCBMU04gdGhhdCB3aWxsIGJlIG5leHQgKi8KK1hMb2dS ZWNQdHIKK0dldE1pbldhaXQodm9pZCkKK3sKKwlyZXR1cm4gc3RhdGUgPyBwZ19hdG9taWNfcmVh ZF91NjQoJnN0YXRlLT5taW5fbHNuKSA6IFBHX1VJTlQ2NF9NQVg7Cit9CisKKy8qCisgKiBPbiBX QUlUIHVzZSBNeUxhdGNoIHRvIHdhaXQgdGlsbCBMU04gaXMgcmVwbGF5ZWQsCisgKiBwb3N0bWFz dGVyIGRpZXMgb3IgdGltZW91dCBoYXBwZW5zLgorICovCitpbnQKK1dhaXRVdGlsaXR5KFhMb2dS ZWNQdHIgbHNuLCBjb25zdCBmbG9hdDggc2VjcykKK3sKKwlYTG9nUmVjUHRyCWN1cl9sc24gPSBH ZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWludAkJCWxhdGNoX2V2ZW50czsKKwlmbG9hdDgJ CWVuZHRpbWU7CisJdWludDMyCQlyZXMgPSAwOworCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3Mo KSkKKwl7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJZXJybXNnKCJXb3JrIG9ubHkgaW4gc3RhbmRi eSBtb2RlIikpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworI2RlZmluZSBHZXROb3dGbG9hdCgp CSgoZmxvYXQ4KSBHZXRDdXJyZW50VGltZXN0YW1wKCkgLyAxMDAwMDAwLjApCisJZW5kdGltZSA9 IEdldE5vd0Zsb2F0KCkgKyBzZWNzOworCisJbGF0Y2hfZXZlbnRzID0gV0xfVElNRU9VVCB8IFdM X0VYSVRfT05fUE1fREVBVEg7CisKKwlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyKQorCXsK KwkJLyogSnVzdCBjaGVjayBpZiB3ZSByZWFjaGVkICovCisJCWlmIChsc24gPCBjdXJfbHNuIHx8 IHNlY3MgPCAwKQorCQkJcmV0dXJuIChsc24gPCBjdXJfbHNuKTsKKworCQlsYXRjaF9ldmVudHMg fD0gV0xfTEFUQ0hfU0VUOworCQlBZGRFdmVudChsc24pOworCX0KKwllbHNlIGlmICghc2VjcykK KwkJcmV0dXJuIDE7CisKKwlmb3IgKDs7KQorCXsKKwkJaW50CQkJcmM7CisJCWZsb2F0OAkJZGVs YXkgPSAwOworCQlsb25nCQlkZWxheV9tczsKKworCQkvKiBJZiBMU04gaGFzIGJlZW4gcmVwbGF5 ZWQgKi8KKwkJaWYgKGxzbiAmJiBsc24gPD0gY3VyX2xzbikKKwkJCWJyZWFrOworCisJCWlmIChz ZWNzID4gMCkKKwkJCWRlbGF5ID0gZW5kdGltZSAtIEdldE5vd0Zsb2F0KCk7CisJCWVsc2UgaWYg KHNlY3MgPT0gMCkKKwkJCS8qCisJCQkqIElmIHdlIHdhaXQgZm9yZXZlciwgdGhlbiAxIG1pbnV0 ZSB0aW1lb3V0IHRvIGNoZWNrCisJCQkqIGZvciBJbnRlcnVwdHMuCisJCQkqLworCQkJZGVsYXkg PSA2MDsKKworCQlpZiAoZGVsYXkgPiAwLjApCisJCQlkZWxheV9tcyA9IChsb25nKSBjZWlsKGRl bGF5ICogMTAwMC4wKTsKKwkJZWxzZQorCQkJYnJlYWs7CisKKwkJLyoKKwkJICogSWYgcmVjZWl2 ZWQgYW4gaW50ZXJydXB0aW9uIGZyb20gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMsCisJCSAqIHRoZW4g ZGVsZXRlIHRoZSBjdXJyZW50IGV2ZW50IGZyb20gYXJyYXkuCisJCSAqLworCQlpZiAoSW50ZXJy dXB0UGVuZGluZykKKwkJeworCQkJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJCQlE ZWxldGVFdmVudCgpOworCQkJUHJvY2Vzc0ludGVycnVwdHMoKTsKKwkJfQorCisJCS8qIElmIHBv c3RtYXN0ZXIgZGllcywgZmluaXNoIGltbWVkaWF0ZWx5ICovCisJCWlmICghUG9zdG1hc3Rlcklz QWxpdmUoKSkKKwkJCWJyZWFrOworCisJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIGxhdGNoX2V2 ZW50cywgZGVsYXlfbXMsCisJCQkJCSAgIFdBSVRfRVZFTlRfQ0xJRU5UX1JFQUQpOworCisJCWlm IChyYyAmIFdMX0xBVENIX1NFVCkKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJaWYgKGxz biAmJiByYyAmIFdMX0xBVENIX1NFVCkKKwkJCWN1cl9sc24gPSBHZXRYTG9nUmVwbGF5UmVjUHRy KE5VTEwpOworCX0KKworCWlmIChsc24gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJCURlbGV0ZUV2 ZW50KCk7CisKKwlpZiAobHNuICE9IEludmFsaWRYTG9nUmVjUHRyICYmIGxzbiA+IGN1cl9sc24p CisJCWVsb2coTk9USUNFLCJMU04gaXMgbm90IHJlYWNoZWQuIFRyeSB0byBpbmNyZWFzZSB3YWl0 IHRpbWUuIik7CisJZWxzZQorCQlyZXMgPSAxOworCisJcmV0dXJuIHJlczsKK30KKworLyoKKyAq IEdldCB0aGUgYW1vdW50IG9mIHNlY29uZHMgbGVmdCB0aWxsIHRoZSBzcGVjaWZpZWQgdGltZS4K KyAqLworZmxvYXQ4CitXYWl0VGltZVJlc29sdmUoQ29uc3QgKnRpbWUpCit7CisJaW50CQkJcmV0 OworCWZsb2F0OAkJdmFsOworCU9pZAkJCXR5cGVzW10gPSB7IHRpbWUtPmNvbnN0dHlwZSB9Owor CURhdHVtCQl2YWx1ZXNbXSA9IHsgdGltZS0+Y29uc3R2YWx1ZSB9OworCWNoYXIJCW51bGxzW10g PSB7ICIgIiB9OworCURhdHVtCQlyZXN1bHQ7CisJYm9vbAkJaXNudWxsOworCisJU1BJX2Nvbm5l Y3QoKTsKKworCWlmICh0aW1lLT5jb25zdHR5cGUgPT0gMTA4MykKKwkJcmV0ID0gU1BJX2V4ZWN1 dGVfd2l0aF9hcmdzKCJzZWxlY3QgZXh0cmFjdCAoZXBvY2ggZnJvbSAoJDEgLSBub3coKTo6dGlt ZSkpIiwKKwkJCQkJCQkJCTEsIHR5cGVzLCB2YWx1ZXMsIG51bGxzLCB0cnVlLCAwKTsKKwllbHNl IGlmICh0aW1lLT5jb25zdHR5cGUgPT0gMTI2NikKKwkJcmV0ID0gU1BJX2V4ZWN1dGVfd2l0aF9h cmdzKCJzZWxlY3QgZXh0cmFjdCAoZXBvY2ggZnJvbSAodGltZXpvbmUoJ1VUQycsJDEpOjp0aW1l IC0gdGltZXpvbmUoJ1VUQycsIG5vdygpOjp0aW1ldHopOjp0aW1lKSkiLAorCQkJCQkJCQkJMSwg dHlwZXMsIHZhbHVlcywgbnVsbHMsIHRydWUsIDApOworCWVsc2UKKwkJcmV0ID0gU1BJX2V4ZWN1 dGVfd2l0aF9hcmdzKCJzZWxlY3QgZXh0cmFjdCAoZXBvY2ggZnJvbSAoJDEgLSBub3coKSkpIiwK KwkJCQkJCQkJCTEsIHR5cGVzLCB2YWx1ZXMsIG51bGxzLCB0cnVlLCAwKTsKKworCUFzc2VydChy ZXQgPj0gMCk7CisJcmVzdWx0ID0gU1BJX2dldGJpbnZhbChTUElfdHVwdGFibGUtPnZhbHNbMF0s CisJCQkJCQkgICBTUElfdHVwdGFibGUtPnR1cGRlc2MsCisJCQkJCQkgICAxLCAmaXNudWxsKTsK KworCUFzc2VydCghaXNudWxsKTsKKwl2YWwgPSBEYXR1bUdldEZsb2F0OChyZXN1bHQpOworCisJ ZWxvZyhJTkZPLCAidGltZTogJWYiLCB2YWwpOworCisJU1BJX2ZpbmlzaCgpOworCXJldHVybiB2 YWw7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIFdBSVQgRk9SICovCitpbnQKK1dhaXRNYWlu KFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCit7CisJTGlzdENlbGwgICAqZXZl bnRzOworCVR1cGxlRGVzYwl0dXBkZXNjOworCVR1cE91dHB1dFN0YXRlICp0c3RhdGU7CisJZmxv YXQ4CQlkZWxheSA9IDA7CisJZmxvYXQ4CQlmaW5hbF9kZWxheSA9IDA7CisJWExvZ1JlY1B0cgls c24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlYTG9nUmVjUHRyCWZpbmFsX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOworCWJvb2wJCWhhc19sc24gPSBmYWxzZTsKKwlib29sCQl3YWl0X2ZvcmV2ZXIg PSB0cnVlOworCWludAkJCXJlcyA9IDA7CisKKwlpZiAoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJVF9G T1JfQU5ZKQorCXsKKwkJLyogUHJlcGFyZSB0byBmaW5kIG1pbmltdW0gTFNOIGFuZCBkZWxheSAq LworCQlmaW5hbF9kZWxheSA9IERCTF9NQVg7CisJCWZpbmFsX2xzbiA9IFBHX1VJTlQ2NF9NQVg7 CisJfQorCisJLyogRXh0cmFjdCBvcHRpb25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUg Ki8KKwlmb3JlYWNoKGV2ZW50cywgc3RtdC0+ZXZlbnRzKQorCXsKKwkJV2FpdFN0bXQgICAqZXZl bnQgPSAoV2FpdFN0bXQgKikgbGZpcnN0KGV2ZW50cyk7CisKKwkJLyogTFNOIHRvIHdhaXQgZm9y ICovCisJCWlmIChldmVudC0+bHNuKQorCQl7CisJCQloYXNfbHNuID0gdHJ1ZTsKKwkJCWxzbiA9 IERhdHVtR2V0TFNOKAorCQkJCQkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19sc25faW4sCisJCQkJ CQkJQ1N0cmluZ0dldERhdHVtKGV2ZW50LT5sc24pKSk7CisKKwkJCS8qCisJCQkgKiBXaGVuIHdh aXRpbmcgZm9yIEFMTCwgc2VsZWN0IG1heCBMU04gdG8gd2FpdCBmb3IuCisJCQkgKiBXaGVuIHdh aXRpbmcgZm9yIEFOWSwgc2VsZWN0IG1pbiBMU04gdG8gd2FpdCBmb3IuCisJCQkgKi8KKwkJCWlm ICgoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJVF9GT1JfQUxMICYmIGZpbmFsX2xzbiA8PSBsc24pIHx8 CisJCQkJKHN0bXQtPnN0cmF0ZWd5ID09IFdBSVRfRk9SX0FOWSAmJiBmaW5hbF9sc24gPiBsc24p KQorCQkJeworCQkJCWZpbmFsX2xzbiA9IGxzbjsKKwkJCX0KKwkJfQorCisJCS8qIFRpbWUgZGVs YXkgdG8gd2FpdCBmb3IgKi8KKwkJaWYgKGV2ZW50LT50aW1lIHx8IGV2ZW50LT5kZWxheSkKKwkJ eworCQkJd2FpdF9mb3JldmVyID0gZmFsc2U7CisKKwkJCWlmIChldmVudC0+ZGVsYXkpCisJCQkJ ZGVsYXkgPSBldmVudC0+ZGVsYXkgLyAxMDAwLjA7CisKKwkJCWlmIChldmVudC0+dGltZSkKKwkJ CXsKKwkJCQlDb25zdCAqdGltZSA9IChDb25zdCAqKSBldmVudC0+dGltZTsKKwkJCQlkZWxheSA9 IFdhaXRUaW1lUmVzb2x2ZSh0aW1lKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFdoZW4gd2FpdGlu ZyBmb3IgQUxMLCBzZWxlY3QgbWF4IGRlbGF5IHRvIHdhaXQgZm9yLgorCQkJICogV2hlbiB3YWl0 aW5nIGZvciBBTlksIHNlbGVjdCBtaW4gZGVsYXkgdG8gd2FpdCBmb3IuCisJCQkgKi8KKwkJCWlm ICgoc3RtdC0+c3RyYXRlZ3kgPT0gV0FJVF9GT1JfQUxMICYmIGZpbmFsX2RlbGF5IDw9IGRlbGF5 KSB8fAorCQkJCShzdG10LT5zdHJhdGVneSA9PSBXQUlUX0ZPUl9BTlkgJiYgZmluYWxfZGVsYXkg PiBkZWxheSkpCisJCQl7CisJCQkJZmluYWxfZGVsYXkgPSBkZWxheTsKKwkJCX0KKwkJfQorCX0K KwlpZiAod2FpdF9mb3JldmVyKQorCQlmaW5hbF9kZWxheSA9IDA7CisJaWYgKCFoYXNfbHNuKQor CQlmaW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCXJlcyA9IFdhaXRVdGlsaXR5KGZp bmFsX2xzbiwgZmluYWxfZGVsYXkpOworCisJLyogTmVlZCBhIHR1cGxlIGRlc2NyaXB0b3IgcmVw cmVzZW50aW5nIGEgc2luZ2xlIFRFWFQgY29sdW1uICovCisJdHVwZGVzYyA9IENyZWF0ZVRlbXBs YXRlVHVwbGVEZXNjKDEpOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJl cikgMSwgIkxTTiByZWFjaGVkIiwgVEVYVE9JRCwgLTEsIDApOworCS8qIFByZXBhcmUgZm9yIHBy b2plY3Rpb24gb2YgdHVwbGVzICovCisJdHN0YXRlID0gYmVnaW5fdHVwX291dHB1dF90dXBkZXNj KGRlc3QsIHR1cGRlc2MsICZUVFNPcHNNaW5pbWFsVHVwbGUpOworCisJLyogU2VuZCBpdCAqLwor CWRvX3RleHRfb3V0cHV0X29uZWxpbmUodHN0YXRlLCByZXM/InQiOiJmIik7CisJZW5kX3R1cF9v dXRwdXQodHN0YXRlKTsKKwlyZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMjI1 NTMxNGM1MS4uMThiZTkyZGRiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC04Myw2ICs4Myw3IEBA IHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtQ3JlYXRlVGFibGVBc1N0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCSBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkg KnRyYW5zZm9ybUNhbGxTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJQ2FsbFN0bXQg KnN0bXQpOworc3RhdGljIHZvaWQgdHJhbnNmb3JtV2FpdEZvclN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBXYWl0U3RtdCAqc3RtdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Mb2NraW5nQ2xhdXNl KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnFyeSwKIAkJCQkJCQkJICAgTG9ja2luZ0NsYXVz ZSAqbGMsIGJvb2wgcHVzaGVkRG93bik7CiAjaWZkZWYgUkFXX0VYUFJFU1NJT05fQ09WRVJBR0Vf VEVTVApAQCAtNDAzLDcgKzQwNCwyMSBAQCB0cmFuc2Zvcm1TdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqcGFyc2VUcmVlKQogCQkJcmVzdWx0ID0gdHJhbnNmb3JtQ2FsbFN0bXQocHN0YXRl LAogCQkJCQkJCQkJICAgKENhbGxTdG10ICopIHBhcnNlVHJlZSk7CiAJCQlicmVhazsKLQorCQlj YXNlIFRfV2FpdFN0bXQ6CisJCQl0cmFuc2Zvcm1XYWl0Rm9yU3RtdChwc3RhdGUsIChXYWl0U3Rt dCAqKSBwYXJzZVRyZWUpOworCQkJcmVzdWx0ID0gbWFrZU5vZGUoUXVlcnkpOworCQkJcmVzdWx0 LT5jb21tYW5kVHlwZSA9IENNRF9VVElMSVRZOworCQkJcmVzdWx0LT51dGlsaXR5U3RtdCA9IChO b2RlICopIHBhcnNlVHJlZTsKKwkJCWJyZWFrOworCQljYXNlIFRfVHJhbnNhY3Rpb25TdG10Ogor CQkJeworCQkJCVRyYW5zYWN0aW9uU3RtdCAqc3RtdCA9IChUcmFuc2FjdGlvblN0bXQgKikgcGFy c2VUcmVlOworCQkJCWlmICgoc3RtdC0+a2luZCA9PSBUUkFOU19TVE1UX0JFR0lOIHx8CisJCQkJ CQlzdG10LT5raW5kID09IFRSQU5TX1NUTVRfU1RBUlQpICYmIHN0bXQtPndhaXQpCisJCQkJCXRy YW5zZm9ybVdhaXRGb3JTdG10KHBzdGF0ZSwgKFdhaXRTdG10ICopIHN0bXQtPndhaXQpOworCQkJ fQorCQkJLyogbm8gYnJlYWsgaGVyZSAtIHdlIHdhbnQgdG8gZmFsbCB0aHJvdWdoIHRvIHRoZSBk ZWZhdWx0ICovCisJCQkvKiBGQUxMVEhST1VHSCAqLwogCQlkZWZhdWx0OgogCiAJCQkvKgpAQCAt MzU2MCw2ICszNTc1LDIzIEBAIGFwcGx5TG9ja2luZ0NsYXVzZShRdWVyeSAqcXJ5LCBJbmRleCBy dGluZGV4LAogCXFyeS0+cm93TWFya3MgPSBsYXBwZW5kKHFyeS0+cm93TWFya3MsIHJjKTsKIH0K IAorLyoKKyAqIHRyYW5zZm9ybVdhaXRGb3JTdG10IC0KKyAqCXRyYW5zZm9ybSB0aGUgV0FJVCBG T1IgY2xhdXNlIG9mIHRoZSBCRUdJTiBzdGF0ZW1lbnQKKyAqCXRyYW5zZm9ybSB0aGUgV0FJVCBG T1Igc3RhdGVtZW50IChUT0RPOiByZW1vdmUgdGhpcyBsaW5lIGlmIHdlIGRvbid0IGtlZXAgaXQp CisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1XYWl0Rm9yU3RtdChQYXJzZVN0YXRlICpwc3Rh dGUsIFdhaXRTdG10ICpzdG10KQoreworCUxpc3RDZWxsICAgKmV2ZW50czsKKworCWZvcmVhY2go ZXZlbnRzLCBzdG10LT5ldmVudHMpCisJeworCQlXYWl0U3RtdCAgICpldmVudCA9IChXYWl0U3Rt dCAqKSBsZmlyc3QoZXZlbnRzKTsKKwkJZXZlbnQtPnRpbWUgPSB0cmFuc2Zvcm1FeHByKHBzdGF0 ZSwgZXZlbnQtPnRpbWUsIEVYUFJfS0lORF9PVEhFUik7CisJfQorfQorCiAvKgogICogQ292ZXJh Z2UgdGVzdGluZyBmb3IgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXIoKS4KICAqCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQppbmRleCAxMzBmN2ZjN2MzLi5kZmRmNmQyZDc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTMxMiw3ICsz MTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlTZWNMYWJlbFN0bXQgU2VsZWN0U3Rt dCBUcmFuc2FjdGlvblN0bXQgVHJhbnNhY3Rpb25TdG10TGVnYWN5IFRydW5jYXRlU3RtdAogCQlV bmxpc3RlblN0bXQgVXBkYXRlU3RtdCBWYWN1dW1TdG10CiAJCVZhcmlhYmxlUmVzZXRTdG10IFZh cmlhYmxlU2V0U3RtdCBWYXJpYWJsZVNob3dTdG10Ci0JCVZpZXdTdG10IENoZWNrUG9pbnRTdG10 IENyZWF0ZUNvbnZlcnNpb25TdG10CisJCVZpZXdTdG10IFdhaXRTdG10IENoZWNrUG9pbnRTdG10 IENyZWF0ZUNvbnZlcnNpb25TdG10CiAJCURlYWxsb2NhdGVTdG10IFByZXBhcmVTdG10IEV4ZWN1 dGVTdG10CiAJCURyb3BPd25lZFN0bXQgUmVhc3NpZ25Pd25lZFN0bXQKIAkJQWx0ZXJUU0NvbmZp Z3VyYXRpb25TdG10IEFsdGVyVFNEaWN0aW9uYXJ5U3RtdApAQCAtNTM3LDcgKzUzNyw3IEBAIHN0 YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICph bGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JY2FzZV9leHByIGNhc2VfYXJnIHdo ZW5fY2xhdXNlIGNhc2VfZGVmYXVsdAogJXR5cGUgPGxpc3Q+CXdoZW5fY2xhdXNlX2xpc3QKICV0 eXBlIDxub2RlPglvcHRfc2VhcmNoX2NsYXVzZSBvcHRfY3ljbGVfY2xhdXNlCi0ldHlwZSA8aXZh bD4Jc3ViX3R5cGUgb3B0X21hdGVyaWFsaXplZAorJXR5cGUgPGl2YWw+CXN1Yl90eXBlIHdhaXRf c3RyYXRlZ3kgb3B0X21hdGVyaWFsaXplZAogJXR5cGUgPG5vZGU+CU51bWVyaWNPbmx5CiAldHlw ZSA8bGlzdD4JTnVtZXJpY09ubHlfbGlzdAogJXR5cGUgPGFsaWFzPglhbGlhc19jbGF1c2Ugb3B0 X2FsaWFzX2NsYXVzZSBvcHRfYWxpYXNfY2xhdXNlX2Zvcl9qb2luX3VzaW5nCkBAIC02NDUsNiAr NjQ1LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxwYXJ0Ym91bmRzcGVjPiBQ YXJ0aXRpb25Cb3VuZFNwZWMKICV0eXBlIDxsaXN0PgkJaGFzaF9wYXJ0Ym91bmQKICV0eXBlIDxk ZWZlbHQ+CQloYXNoX3BhcnRib3VuZF9lbGVtCisldHlwZSA8bGlzdD4JCXdhaXRfbGlzdAorJXR5 cGUgPG5vZGU+CQlXYWl0RXZlbnQgd2FpdF9mb3IKIAogJXR5cGUgPG5vZGU+CWpzb25fZm9ybWF0 X2NsYXVzZQogCQkJCWpzb25fZm9ybWF0X2NsYXVzZV9vcHQKQEAgLTczMCw3ICs3MzIsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJTEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1Ag TEFURVJBTF9QCiAJTEVBRElORyBMRUFLUFJPT0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlU IExJU1RFTiBMT0FEIExPQ0FMCi0JTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExP Q0tfUCBMT0NLRUQgTE9HR0VECisJTE9DQUxUSU1FIExPQ0FMVElNRVNUQU1QIExPQ0FUSU9OIExP Q0tfUCBMT0NLRUQgTE9HR0VEIExTTgogCiAJTUFQUElORyBNQVRDSCBNQVRDSEVEIE1BVEVSSUFM SVpFRCBNQVhWQUxVRSBNRVJHRSBNRVRIT0QKIAlNSU5VVEVfUCBNSU5WQUxVRSBNT0RFIE1PTlRI X1AgTU9WRQpAQCAtNzY0LDcgKzc2Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmll d1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJU1VC U0NSSVBUSU9OIFNVQlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNU RU1fVVNFUgogCiAJVEFCTEUgVEFCTEVTIFRBQkxFU0FNUExFIFRBQkxFU1BBQ0UgVEVNUCBURU1Q TEFURSBURU1QT1JBUlkgVEVYVF9QIFRIRU4KLQlUSUVTIFRJTUUgVElNRVNUQU1QIFRPIFRSQUlM SU5HIFRSQU5TQUNUSU9OIFRSQU5TRk9STQorCVRJRVMgVElNRSBUSU1FT1VUIFRJTUVTVEFNUCBU TyBUUkFJTElORyBUUkFOU0FDVElPTiBUUkFOU0ZPUk0KIAlUUkVBVCBUUklHR0VSIFRSSU0gVFJV RV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAogCkBAIC03NzQsNyArNzc2LDgg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlWQUNVVU0gVkFMSUQgVkFMSURBVEUgVkFMSURB VE9SIFZBTFVFX1AgVkFMVUVTIFZBUkNIQVIgVkFSSUFESUMgVkFSWUlORwogCVZFUkJPU0UgVkVS U0lPTl9QIFZJRVcgVklFV1MgVk9MQVRJTEUKIAotCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJ TkRPVyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBXUklURQorCVdBSVQgV0hFTiBX SEVSRSBXSElURVNQQUNFX1AgV0lORE9XCisJV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQ RVIgV1JJVEUKIAogCVhNTF9QIFhNTEFUVFJJQlVURVMgWE1MQ09OQ0FUIFhNTEVMRU1FTlQgWE1M RVhJU1RTIFhNTEZPUkVTVCBYTUxOQU1FU1BBQ0VTCiAJWE1MUEFSU0UgWE1MUEkgWE1MUk9PVCBY TUxTRVJJQUxJWkUgWE1MVEFCTEUKQEAgLTExMDMsNiArMTEwNiw3IEBAIHN0bXQ6CiAJCQl8IFZh cmlhYmxlU2V0U3RtdAogCQkJfCBWYXJpYWJsZVNob3dTdG10CiAJCQl8IFZpZXdTdG10CisJCQl8 IFdhaXRTdG10CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsgJCQgPSBOVUxMOyB9CiAJCTsKQEAgLTEw OTM0LDEyICsxMDkzOCwxMyBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJCQkJCW4tPmxvY2F0aW9uID0g LTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IFNUQVJUIFRSQU5TQUNUSU9O IHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eQorCQkJfCBTVEFSVCBUUkFOU0FDVElPTiB0 cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2FpdF9mb3IKIAkJCQl7CiAJCQkJCVRyYW5z YWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CiAKIAkJCQkJbi0+a2lu ZCA9IFRSQU5TX1NUTVRfU1RBUlQ7CiAJCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+d2Fp dCA9ICQ0OwogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQpAQCAtMTEwMzgsMTIgKzExMDQzLDEzIEBAIFRyYW5zYWN0aW9uU3RtdDoKIAkJOwogCiBU cmFuc2FjdGlvblN0bXRMZWdhY3k6Ci0JCQlCRUdJTl9QIG9wdF90cmFuc2FjdGlvbiB0cmFuc2Fj dGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKKwkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0aW9uIHRyYW5z YWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJVHJhbnNhY3Rp b25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKIAogCQkJCQluLT5raW5kID0g VFJBTlNfU1RNVF9CRUdJTjsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT53YWl0ID0g JDQ7CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 CkBAIC0xNTg3NSw2ICsxNTg4MSw3NCBAQCB4bWxfcGFzc2luZ19tZWNoOgogCQkJfCBCWSBWQUxV RV9QCiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZOgorICoJCQkJ V0FJVCBGT1IgPGV2ZW50PiBbLCA8ZXZlbnQ+IC4uLl0KKyAqCQkJCWV2ZW50IGlzIG9uZSBvZjoK KyAqCQkJCQlMU04gdmFsdWUKKyAqCQkJCQlUSU1FT1VUIGRlbGF5CisgKgkJCQkJdGltZXN0YW1w CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworV2FpdFN0bXQ6CisJCQlXQUlUIEZPUiB3YWl0 X3N0cmF0ZWd5IHdhaXRfbGlzdAorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShX YWl0U3RtdCk7CisJCQkJCW4tPnN0cmF0ZWd5ID0gJDM7CisJCQkJCW4tPmV2ZW50cyA9ICQ0Owor CQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQk7Cit3YWl0X2ZvcjoKKwkJCVdBSVQgRk9S IHdhaXRfc3RyYXRlZ3kgd2FpdF9saXN0CisJCQkJeworCQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VO b2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+c3RyYXRlZ3kgPSAkMzsKKwkJCQkJbi0+ZXZlbnRzID0g JDQ7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgLyogRU1QVFkgKi8JCXsgJCQg PSBOVUxMOyB9OworCit3YWl0X3N0cmF0ZWd5OgorCQkJQUxMCQkJCQl7ICQkID0gV0FJVF9GT1Jf QUxMOyB9CisJCQl8IEFOWQkJCQl7ICQkID0gV0FJVF9GT1JfQU5ZOyB9CisJCQl8IC8qIEVNUFRZ ICovCQl7ICQkID0gV0FJVF9GT1JfQUxMOyB9CisJCTsKKword2FpdF9saXN0OgorCQkJV2FpdEV2 ZW50CQkJCQl7ICQkID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgd2FpdF9saXN0ICcsJyBXYWl0 RXZlbnQJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQkJfCB3YWl0X2xpc3QgV2FpdEV2ZW50 CQl7ICQkID0gbGFwcGVuZCgkMSwgJDIpOyB9CisJCTsKKworV2FpdEV2ZW50OgorCQkJTFNOIFNj b25zdAorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJ CW4tPmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9IDA7CisJCQkJCW4tPnRpbWUgPSBOVUxMOwor CQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IFRJTUVPVVQgSWNvbnN0CisJCQkJewor CQkJCQlXYWl0U3RtdCAqbiA9IG1ha2VOb2RlKFdhaXRTdG10KTsKKwkJCQkJbi0+bHNuID0gTlVM TDsKKwkJCQkJbi0+ZGVsYXkgPSAkMjsKKwkJCQkJbi0+dGltZSA9IE5VTEw7CisJCQkJCSQkID0g KE5vZGUgKiluOworCQkJCX0KKwkJCXwgQ29uc3REYXRldGltZSBTY29uc3QKKwkJCQl7CisJCQkJ CVdhaXRTdG10ICpuID0gbWFrZU5vZGUoV2FpdFN0bXQpOworCQkJCQluLT5sc24gPSBOVUxMOwor CQkJCQluLT5kZWxheSA9IDA7CisJCQkJCW4tPnRpbWUgPSBtYWtlU3RyaW5nQ29uc3RDYXN0KCQy LCBAMiwgJDEpOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQk7CisKIAogLyoKICAq IEFnZ3JlZ2F0ZSBkZWNvcmF0aW9uIGNsYXVzZXMKQEAgLTE3Mjc5LDYgKzE3MzUzLDcgQEAgdW5y ZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBMT0NLX1AKIAkJCXwgTE9DS0VECiAJCQl8IExPR0dFRAor CQkJfCBMU04KIAkJCXwgTUFQUElORwogCQkJfCBNQVRDSAogCQkJfCBNQVRDSEVECkBAIC0xNzQx MSw2ICsxNzQ4Niw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVEVNUE9SQVJZCiAJCQl8 IFRFWFRfUAogCQkJfCBUSUVTCisJCQl8IFRJTUVPVVQKIAkJCXwgVFJBTlNBQ1RJT04KIAkJCXwg VFJBTlNGT1JNCiAJCQl8IFRSSUdHRVIKQEAgLTE3NDM3LDYgKzE3NTEzLDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBWSUVXCiAJCQl8IFZJRVdTCiAJCQl8IFZPTEFUSUxFCisJCQl8IFdB SVQKIAkJCXwgV0hJVEVTUEFDRV9QCiAJCQl8IFdJVEhJTgogCQkJfCBXSVRIT1VUCkBAIC0xNzg2 OSw2ICsxNzk0Niw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgTE9DS19QCiAJCQl8IExP Q0tFRAogCQkJfCBMT0dHRUQKKwkJCXwgTFNOCiAJCQl8IE1BUFBJTkcKIAkJCXwgTUFUQ0gKIAkJ CXwgTUFUQ0hFRApAQCAtMTgwMzEsNiArMTgxMDksNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFRIRU4KIAkJCXwgVElFUwogCQkJfCBUSU1FCisJCQl8IFRJTUVPVVQKIAkJCXwgVElNRVNU QU1QCiAJCQl8IFRSQUlMSU5HCiAJCQl8IFRSQU5TQUNUSU9OCkBAIC0xODA2OCw2ICsxODE0Nyw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgVklFVwogCQkJfCBWSUVXUwogCQkJfCBWT0xB VElMRQorCQkJfCBXQUlUCiAJCQl8IFdIRU4KIAkJCXwgV0hJVEVTUEFDRV9QCiAJCQl8IFdPUksK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCmluZGV4IGZjZmFjMzM1YTUuLjQ4NWI2 YjM0YjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwpAQCAtMjEsNiArMjEs NyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY251bWJlci5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYwppbmRleCA1MjFlZDU0MThjLi5lMWNiYzdlNDljIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBj aS5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2Fz eW5jLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5o IgpAQCAtMTUyLDYgKzE1Myw3IEBAIENhbGN1bGF0ZVNobWVtU2l6ZShpbnQgKm51bV9zZW1hcGhv cmVzKQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRFeHRlbnNpb25TaG1lbVNpemUo KSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVjdGlvblBvaW50U2htZW1TaXplKCkpOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBTbG90U3luY1NobWVtU2l6ZSgpKTsKKwlzaXplID0gYWRk X3NpemUoc2l6ZSwgV2FpdFNobWVtU2l6ZSgpKTsKICNpZmRlZiBFWEVDX0JBQ0tFTkQKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgU2htZW1CYWNrZW5kQXJyYXlTaXplKCkpOwogI2VuZGlmCkBAIC0z NTcsNiArMzU5LDExIEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJU3RhdHNT aG1lbUluaXQoKTsKIAlXYWl0RXZlbnRFeHRlbnNpb25TaG1lbUluaXQoKTsKIAlJbmplY3Rpb25Q b2ludFNobWVtSW5pdCgpOworCisJLyoKKwkgKiBJbml0IGFycmF5IG9mIExhdGNoZXMgaW4gc2hh cmVkIG1lbW9yeSBmb3IgV0FJVAorCSAqLworCVdhaXRTaG1lbUluaXQoKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKaW5kZXggODNmODZhNDJmNy4uNTFlODZkODQyNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAg LTE1LDYgKzE1LDcgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKKyNpbmNsdWRlIDxmbG9hdC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMu aCIKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKQEAgLTU2LDYgKzU3LDcgQEAKICNpbmNs dWRlICJjb21tYW5kcy91c2VyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvdmlldy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKQEAgLTI2NSw2ICsyNjcsNyBAQCBDbGFzc2lm eVV0aWxpdHlDb21tYW5kQXNSZWFkT25seShOb2RlICpwYXJzZXRyZWUpCiAJCWNhc2UgVF9Mb2Fk U3RtdDoKIAkJY2FzZSBUX1ByZXBhcmVTdG10OgogCQljYXNlIFRfVW5saXN0ZW5TdG10OgorCQlj YXNlIFRfV2FpdFN0bXQ6CiAJCWNhc2UgVF9WYXJpYWJsZVNldFN0bXQ6CiAJCQl7CiAJCQkJLyoK QEAgLTYwNSw2ICs2MDgsMTEgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQg KnBzdG10LAogCQkJCQljYXNlIFRSQU5TX1NUTVRfU1RBUlQ6CiAJCQkJCQl7CiAJCQkJCQkJTGlz dENlbGwgICAqbGM7CisJCQkJCQkJV2FpdFN0bXQgICAqd2FpdHN0bXQgPSAoV2FpdFN0bXQgKikg c3RtdC0+d2FpdDsKKworCQkJCQkJCS8qIElmIG5lZWRlZCB0byBXQUlUIEZPUiBzb21ldGhpbmcg YnV0IGZhaWxlZCAqLworCQkJCQkJCWlmIChzdG10LT53YWl0ICYmIFdhaXRNYWluKHdhaXRzdG10 LCBkZXN0KSA9PSAwKQorCQkJCQkJCQlicmVhazsKIAogCQkJCQkJCUJlZ2luVHJhbnNhY3Rpb25C bG9jaygpOwogCQkJCQkJCWZvcmVhY2gobGMsIHN0bXQtPm9wdGlvbnMpCkBAIC0xMDYyLDYgKzEw NzAsMTMgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJ CWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCXsKKwkJCQlXYWl0U3RtdCAg ICpzdG10ID0gKFdhaXRTdG10ICopIHBhcnNldHJlZTsKKwkJCQlXYWl0TWFpbihzdG10LCBkZXN0 KTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQlkZWZhdWx0OgogCQkJLyogQWxsIG90aGVyIHN0YXRl bWVudCB0eXBlcyBoYXZlIGV2ZW50IHRyaWdnZXIgc3VwcG9ydCAqLwogCQkJUHJvY2Vzc1V0aWxp dHlTbG93KHBzdGF0ZSwgcHN0bXQsIHF1ZXJ5U3RyaW5nLApAQCAtMjg0MCw2ICsyODU1LDEwIEBA IENyZWF0ZUNvbW1hbmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJdGFnID0gQ01EVEFHX05PVElG WTsKIAkJCWJyZWFrOwogCisJCWNhc2UgVF9XYWl0U3RtdDoKKwkJCXRhZyA9IENNRFRBR19XQUlU OworCQkJYnJlYWs7CisKIAkJY2FzZSBUX0xpc3RlblN0bXQ6CiAJCQl0YWcgPSBDTURUQUdfTElT VEVOOwogCQkJYnJlYWs7CkBAIC0zNDg4LDYgKzM1MDcsMTAgQEAgR2V0Q29tbWFuZExvZ0xldmVs KE5vZGUgKnBhcnNldHJlZSkKIAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CiAKKwkJ Y2FzZSBUX1dhaXRTdG10OgorCQkJbGV2ID0gTE9HU1RNVF9BTEw7CisJCQlicmVhazsKKwogCQlj YXNlIFRfTGlzdGVuU3RtdDoKIAkJCWxldiA9IExPR1NUTVRfQUxMOwogCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy93YWl0LmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy93YWl0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYmEwMjJhNWU4 NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApAQCAtMCww ICsxLDI2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB3YWl0LmgKKyAqCSAgcHJvdG90 eXBlcyBmb3IgY29tbWFuZHMvd2FpdC5jCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDIwMjQsIFJlZ2VudHMgb2YgUG9zdGdyZXNQUk8KKyAqCisgKiBzcmMv aW5jbHVkZS9jb21tYW5kcy93YWl0LmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lm bmRlZiBXQUlUX0gKKyNkZWZpbmUgV0FJVF9ICisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNpbmNs dWRlICJ0Y29wL2Rlc3QuaCIKKworZXh0ZXJuIGludCBXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxz biwgY29uc3QgZmxvYXQ4IGRlbGF5KTsKK2V4dGVybiBTaXplIFdhaXRTaG1lbVNpemUodm9pZCk7 CitleHRlcm4gdm9pZCBXYWl0U2htZW1Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgV2FpdFNldExh dGNoKFhMb2dSZWNQdHIgY3VyX2xzbik7CitleHRlcm4gWExvZ1JlY1B0ciBHZXRNaW5XYWl0KHZv aWQpOworZXh0ZXJuIGZsb2F0OCBXYWl0VGltZVJlc29sdmUoQ29uc3QgKnRpbWUpOworZXh0ZXJu IGludCBXYWl0TWFpbihXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KTsKKworI2Vu ZGlmICAgLyogV0FJVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjRmNWMwNmJiNi4u YmE1MTI4YzExNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzUyMyw2ICszNTIzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgVHJhbnNhY3Rpb25TdG10CiAJLyogZm9yIHR3by1waGFzZS1jb21taXQg cmVsYXRlZCBjb21tYW5kcyAqLwogCWNoYXIJICAgKmdpZCBwZ19ub2RlX2F0dHIocXVlcnlfanVt YmxlX2lnbm9yZSk7CiAJYm9vbAkJY2hhaW47CQkJLyogQU5EIENIQUlOIG9wdGlvbiAqLworCU5v ZGUJICAgKndhaXQ7CQkJLyogV0FJVCBjbGF1c2U6IGxpc3Qgb2YgZXZlbnRzIHRvIHdhaXQgZm9y ICovCiAJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIAlpbnQJCQlsb2Nh dGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2xvY2F0aW9uKTsKIH0gVHJhbnNhY3Rpb25T dG10OwpAQCAtNDA3NCw0ICs0MDc1LDI2IEBAIHR5cGVkZWYgc3RydWN0IERyb3BTdWJzY3JpcHRp b25TdG10CiAJRHJvcEJlaGF2aW9yIGJlaGF2aW9yOwkJLyogUkVTVFJJQ1Qgb3IgQ0FTQ0FERSBi ZWhhdmlvciAqLwogfSBEcm9wU3Vic2NyaXB0aW9uU3RtdDsKIAorLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoJCVdBSVQgRk9SIFN0YXRlbWVudCArIFdBSVQgRk9SIGNsYXVzZSBvZiBCRUdJ TiBzdGF0ZW1lbnQKKyAqCQlUT0RPOiBpZiB3ZSBvbmx5IHBpY2sgb25lLCByZW1vdmUgdGhlIG90 aGVyCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKwordHlwZWRlZiBlbnVtIFdhaXRG b3JTdHJhdGVneQoreworCVdBSVRfRk9SX0FOWSA9IDAsCisJV0FJVF9GT1JfQUxMCit9IFdhaXRG b3JTdHJhdGVneTsKKwordHlwZWRlZiBzdHJ1Y3QgV2FpdFN0bXQKK3sKKwlOb2RlVGFnCQl0eXBl OworCVdhaXRGb3JTdHJhdGVneSBzdHJhdGVneTsKKwlMaXN0CSAgICpldmVudHM7CQkvKiB1c2Vk IGFzIGEgcG9pbnRlciB0byB0aGUgbmV4dCBXQUlUIGV2ZW50ICovCisJY2hhcgkgICAqbHNuOwkJ LyogV0FJVCBGT1IgTFNOICovCisJaW50CQkJZGVsYXk7CQkvKiBXQUlUIEZPUiBUSU1FT1VUICov CisJTm9kZQkgICAqdGltZTsJCS8qIFdBSVQgRk9SIFRJTUVTVEFNUCBvciBUSU1FICovCit9IFdh aXRTdG10OworCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VOT0RFU19IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggMjMzMWFjYWMwOS4uYWU3YjY1NTI2YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjYwLDYg KzI2MCw3IEBAIFBHX0tFWVdPUkQoImxvY2F0aW9uIiwgTE9DQVRJT04sIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImxvY2siLCBMT0NLX1AsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImxvY2tlZCIsIExPQ0tFRCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibG9nZ2VkIiwgTE9HR0VELCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJsc24iLCBMU04sIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm1hcHBpbmciLCBNQVBQ SU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXRjaCIs IE1BVENILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJtYXRj aGVkIiwgTUFUQ0hFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtNDMzLDYg KzQzNCw3IEBAIFBHX0tFWVdPUkQoInRleHQiLCBURVhUX1AsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRoZW4iLCBUSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgidGllcyIsIFRJRVMsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRpbWUiLCBUSU1FLCBDT0xfTkFNRV9LRVlXT1JELCBC QVJFX0xBQkVMKQorUEdfS0VZV09SRCgidGltZW91dCIsIFRJTUVPVVQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRpbWVzdGFtcCIsIFRJTUVTVEFNUCwgQ09M X05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRvIiwgVE8sIFJFU0VSVkVE X0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgidHJhaWxpbmciLCBUUkFJTElORywgUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ3Myw2ICs0NzUsNyBAQCBQR19LRVlXT1JE KCJ2ZXJzaW9uIiwgVkVSU0lPTl9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJ2aWV3IiwgVklFVywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgidmlld3MiLCBWSUVXUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgidm9sYXRpbGUiLCBWT0xBVElMRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQorUEdfS0VZV09SRCgid2FpdCIsIFdBSVQsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIndoZW4iLCBXSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgid2hlcmUiLCBXSEVSRSwgUkVTRVJWRURfS0VZV09SRCwg QVNfTEFCRUwpCiBQR19LRVlXT1JEKCJ3aGl0ZXNwYWNlIiwgV0hJVEVTUEFDRV9QLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2Nt ZHRhZ2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IDdmZGNlYzZk ZDkuLjI5NWNkNmZmM2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5o CisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCkBAIC0yMTcsMyArMjE3LDQgQEAg UEdfQ01EVEFHKENNRFRBR19UUlVOQ0FURV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKIFBHX0NNRFRBRyhDTURUQUdfVkFDVVVNLCAiVkFDVVVNIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfV0FJVCwgIldBSVQgRk9SIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1 aWxkIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYzY3MjQ5NTAwZS4uYmFk OGIzOGM4NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAgLTUwLDYgKzUwLDggQEAgdGVzdHMgKz0g ewogICAgICAgJ3QvMDM5X2VuZF9vZl93YWwucGwnLAogICAgICAgJ3QvMDQwX3N0YW5kYnlfZmFp bG92ZXJfc2xvdHNfc3luYy5wbCcsCiAgICAgICAndC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3Rl LnBsJywKKyAgICAgICd0LzA0Ml9iZWdpbl93YWl0LnBsJywKKyAgICAgICd0LzA0M193YWl0LnBs JywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDJf YmVnaW5fd2FpdC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2JlZ2luX3dhaXQucGwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDU2YWM4Mzk5YQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2JlZ2luX3dhaXQucGwKQEAgLTAsMCAr MSwxNDcgQEAKKyMgQ2hlY2tzIFdBSVQgRk9SCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwor Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHJpbWFyeSBub2RlCitteSAk bm9kZV9wcmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7 Ciskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9wcmlt YXJ5LT5zdGFydDsKKworIyBBbmQgc29tZSBjb250ZW50IGFuZCB0YWtlIGEgYmFja3VwCiskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHdhaXRfdGVz dCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKK215ICRiYWNrdXBfbmFt ZSA9ICdteV9iYWNrdXAnOworJG5vZGVfcHJpbWFyeS0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisK KyMgQ3JlYXRlIGEgc3RyZWFtaW5nIHN0YW5kYnkgd2l0aCBhIDEgc2Vjb25kIGRlbGF5IGZyb20g dGhlIGJhY2t1cAorbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3RhbmRieScpOworbXkgJGRlbGF5ICAgICAgICA9IDE7Ciskbm9kZV9zdGFuZGJ5LT5p bml0X2Zyb21fYmFja3VwKCRub2RlX3ByaW1hcnksICRiYWNrdXBfbmFtZSwKKwloYXNfc3RyZWFt aW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics IHFxWworCXJlY292ZXJ5X21pbl9hcHBseV9kZWxheSA9ICcke2RlbGF5fXMnCitdKTsKKyRub2Rl X3N0YW5kYnktPnN0YXJ0OworCisKKworIyBNYWtlIHN1cmUgdGhhdCBXQUlUIEZPUiBMU04gd29y a3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6ZQorIyBwcmltYXJ5J3Mg bmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0YW5kYnkuIFByb3ZlIHRo YXQgV0FJVCBpcworIyBhYmxlIHRvIHNldHVwIGFuIGluZmluaXRlIHdhaXRpbmcgbG9vcCBhbmQg ZXhpdCBpdCBpZiBnaXZlbiBubyB3YWl0IHRpbWVvdXQuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVf c2VyaWVzKDExLCAyMCkpIik7CitteSAkbHNuMSA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9zdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkJFR0lOIFdBSVQgRk9SIExTTiAnJGxzbjEnIik7Cisk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCIpOworCisjIEdldCB0 aGUgY3VycmVudCBMU04gb24gc3RhbmRieSBhbmQgbWFrZSBzdXJlIGl0J3MgdGhlIHNhbWUgYXMg cHJpbWFyeSdzIExTTgorbXkgJGxzbl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKK215ICRj b21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBnX2xzbl9nZSgnJGxzbl9zdGFuZGJ5Jzo6cGdfbHNuLCAnJGxzbjEnOjpwZ19sc24pIik7 CitvaygkY29tcGFyZV9sc25zIGVxICJ0IiwgInN0YW5kYnkgcmVhY2hlZCB0aGUgc2FtZSBMU04g YXMgcHJpbWFyeSBhZnRlciBXQUlUIik7CisKKworCisjIENoZWNrIHRoYXQgdGltZW91dHMgd29y ayBvbiB0aGVpciBvd24gYW5kIGxldCB1cyB3YWl0IGZvciBzcGVjaWZpZWQgdGltZSAoMXMpCitt eSAkY3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1Qgbm93KCkiKTsKK215ICRvbmVfc2Vjb25kID0gMTAwMDsgIyBpbiBtaWxsaXNlY29uZHMK K215ICRzdGFydF90aW1lID0gdGltZSgpOworIyBXaGlsZSB3ZSdyZSBhdCBpdCwgYWxzbyBtYWtl IHN1cmUgdGhhdCB0aGUgc3ludGF4IHdpdGggY29tbWFzIHdvcmtzIGZpbmUgYW5kCisjIHRoYXQg YnkgZGVmYXVsdCB3ZSB1c2UgV0FJVCBGT1IgQUxMIHN0cmF0ZWd5LCB3aGljaCBtZWFucyB3YWl0 aW5nIGZvciBtYXggdGltZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IldBSVQgRk9SIFRJTUVPVVQgJG9uZV9zZWNvbmQsIFRJTUVTVEFNUCAnJGN1cnJlbnRfdGltZSci KTsKK215ICR0aW1lX3dhaXRlZCA9ICh0aW1lKCkgLSAkc3RhcnRfdGltZSkgKiAxMDAwOyAjIGNv bnZlcnQgdG8gbWlsbGlzZWNvbmRzCitvaygkdGltZV93YWl0ZWQgPj0gJG9uZV9zZWNvbmQsICJX QUlUIEZPUiBUSU1FT1VUIHdhaXRzIGZvciBlbm91Z2ggdGltZSIpOworCisjIE5vdywgY2hlY2sg dGhhdCB0aW1lb3V0cyB3b3JrIGFzIGV4cGVjdGVkIHdoZW4gd2FpdGluZyBmb3IgTFNOCiskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0 IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDIxLCAzMCkpIik7CitteSAkbHNuMiA9ICRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigp Iik7CitteSAkcmVhY2hlZF9sc24gPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQkVHSU4gV0FJVCBGT1IgTFNOICckbHNuMicgVElNRU9VVCAxIik7CitvaygkcmVhY2hl ZF9sc24gZXEgImYiLCAiV0FJVCBkb2Vzbid0IHJlYWNoIExTTiBpZiBnaXZlbiB0b28gbGl0dGxl IHdhaXQgdGltZSIpOworCisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRPRE86IHJlbW92 ZSB0aGlzIHRlc3QgaWYgd2UgcmVtb3ZlIHRoZSBzdGFuZGFsb25lICJXQUlUIEZPUiIgY29tbWFu ZAorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgV2UgbmVlZCB0byBjaGVjayB0aGF0IFdBSVQg d29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3IgdGhhdCwgbGV0J3MKKyMgZ2V0IHR3 byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBkaWZmZXJlbnQgbWF4IHZhbHVlcyBp biBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5T RVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMxLCA0MCkpIik7Citt eSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBn X2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDQxLCA1 MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQmVmb3JlIHN0YXJ0aW5nIHRyYW5z YWN0aW9uLCB3YWl0IGZvciBMU04gd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA0MC4KKyMg SW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgd2FpdCBmb3IgTFNOIHRoYXQgZW5zdXJlcyBhIG1heCB2 YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxFIFJFQUQsIHdl IHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5kYnlfcmVzdWx0cyA9 ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlCRUdJTiBUUkFO U0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEIFdBSVQgRk9SIExTTiAnJGxz bjMnOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rlc3Q7CisJQkVHSU4gV0FJVCBGT1IgTFNO ICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlTRUxFQ1QgbWF4 KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3VyZSB0aGF0IHdl IGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFuc2FjdGlvbi4K KyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuIHJl dHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRieV9yZXN1bHRz ID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIldBSVQgRk9SIExTTiB3b3JrcyBp bnNpZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24n dCBicmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBXQUlULgorIyBGb3Ig dGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0d2lj ZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAv NDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRvZXNu J3QgZ2V0IGJyb2tlbiBkdWUgdG8gV0FJVCIpOworCisKKworIyBHZXQgbXVsdGlwbGUgTFNOcyBm b3IgdGVzdGluZyBXQUlUIEZPUiBBTlkgLyBXQUlUIEZPUiBBTEwKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5l cmF0ZV9zZXJpZXMoNTEsIDYwKSkiKTsKK215ICRsc241ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3By aW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFM VUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDcwMDAwKSkiKTsKK215ICRsc242ID0gJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCki KTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3 YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDgwMDAwMCkpIik7CitteSAkbHNu NyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2xzbigpIik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTlkgd29ya3MgZmluZQor JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkJFR0lOIFdBSVQgRk9SIEFO WSBMU04gJyRsc241JyBMU04gJyRsc242JyBMU04gJyRsc243JyIpOworJGxzbl9zdGFuZGJ5ID0g JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sYXN0X3dh bF9yZXBsYXlfbHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xz biwgJyRsc241Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBnZSAwLAorCSJXQUlUIEZP UiBBTlkgbWFrZXMgdXMgcmVhY2ggYXQgbGVhc3QgdGhlIG1pbmltdW0gTFNOIGZyb20gdGhlIGxp c3QiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xzbiwgJyRsc243Jzo6 cGdfbHNuKSIpOworIyBUT0RPOiBDb3VsZCB0aGlzIHNvbWVob3cgZmFpbCBkdWUgdG8gdGhlIG1h Y2hpbmUgYmVpbmcgdmVyeSBmYXN0IGF0IGFwcGx5aW5nIExTTj8KK29rKCRjb21wYXJlX2xzbnMg bHQgMCwKKwkiV0FJVCBGT1IgQU5ZIGRpZG4ndCBtYWtlIHVzIHJlYWNoIHRoZSBtYXhpbXVtIExT TiBmcm9tIHRoZSBsaXN0Iik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBBTEwgd29ya3MgZmlu ZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkJFR0lOIFdBSVQgRk9S IEFMTCBMU04gJyRsc241JywgTFNOICckbHNuNicsIExTTiAnJGxzbjcnIik7CiskbHNuX3N0YW5k YnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xh c3Rfd2FsX3JlcGxheV9sc24oKSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2dlKCckbHNuX3N0YW5kYnknOjpw Z19sc24sICckbHNuNyc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgInQiLAorCSJX QUlUIEZPUiBBTEwgbWFrZXMgdXMgcmVhY2ggdGhlIG1heGltdW0gTFNOIGZyb20gdGhlIGxpc3Qi KTsKKworCisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5LT5zdG9wOworZG9u ZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0M193YWl0LnBs IGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDNfd2FpdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi44MGYzNDE5YmUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNDNfd2FpdC5wbApAQCAtMCwwICsxLDE0NSBAQAorIyBDaGVja3MgV0FJVCBG T1IKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisK KyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnknKTsKKyRub2RlX3ByaW1hcnktPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCisjIEFuZCBzb21l IGNvbnRlbnQgYW5kIHRha2UgYSBiYWNrdXAKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgd2FpdF90ZXN0IEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJp ZXMoMSwxMCkgQVMgYSIpOworbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7Ciskbm9kZV9w cmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVhdGUgYSBzdHJlYW1pbmcgc3Rh bmRieSB3aXRoIGEgMSBzZWNvbmQgZGVsYXkgZnJvbSB0aGUgYmFja3VwCitteSAkbm9kZV9zdGFu ZGJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5Jyk7CitteSAkZGVs YXkgICAgICAgID0gMTsKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoJG5vZGVfcHJp bWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5 LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFbCisJcmVjb3ZlcnlfbWluX2FwcGx5 X2RlbGF5ID0gJyR7ZGVsYXl9cycKK10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7CisKKworCisj IE1ha2Ugc3VyZSB0aGF0IFdBSVQgRk9SIExTTiB3b3JrczogYWRkIG5ldyBjb250ZW50IHRvIHBy aW1hcnkgYW5kIG1lbW9yaXplCisjIHByaW1hcnkncyBuZXcgTFNOLCB0aGVuIHdhaXQgZm9yIHBy aW1hcnkncyBMU04gb24gc3RhbmRieS4gUHJvdmUgdGhhdCBXQUlUIGlzCisjIGFibGUgdG8gc2V0 dXAgYW4gaW5maW5pdGUgd2FpdGluZyBsb29wIGFuZCBleGl0IGl0IGlmIGdpdmVuIG5vIHdhaXQg dGltZW91dC4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoMTEsIDIwKSkiKTsKK215ICRs c24xID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3Vy cmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi V0FJVCBGT1IgTFNOICckbHNuMSciKTsKKworIyBHZXQgdGhlIGN1cnJlbnQgTFNOIG9uIHN0YW5k YnkgYW5kIG1ha2Ugc3VyZSBpdCdzIHRoZSBzYW1lIGFzIHByaW1hcnkncyBMU04KK215ICRsc25f c3RhbmRieSA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGdfbGFzdF93YWxfcmVwbGF5X2xzbigpIik7CitteSAkY29tcGFyZV9sc25zID0gJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fZ2UoJyRsc25fc3Rh bmRieSc6OnBnX2xzbiwgJyRsc24xJzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBlcSAi dCIsICJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1hcnkgYWZ0ZXIgV0FJVCIp OworCisKKworIyBDaGVjayB0aGF0IHRpbWVvdXRzIHdvcmsgb24gdGhlaXIgb3duIGFuZCBsZXQg dXMgd2FpdCBmb3Igc3BlY2lmaWVkIHRpbWUgKDFzKQorbXkgJGN1cnJlbnRfdGltZSA9ICRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5vdygpIik7CitteSAkb25l X3NlY29uZCA9IDEwMDA7ICMgaW4gbWlsbGlzZWNvbmRzCitteSAkc3RhcnRfdGltZSA9IHRpbWUo KTsKKyMgV2hpbGUgd2UncmUgYXQgaXQsIGFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIHN5bnRheCB3 aXRoIGNvbW1hcyB3b3JrcyBmaW5lIGFuZAorIyB0aGF0IGJ5IGRlZmF1bHQgd2UgdXNlIFdBSVQg Rk9SIEFMTCBzdHJhdGVneSwgd2hpY2ggbWVhbnMgd2FpdGluZyBmb3IgbWF4IHRpbWUKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJXQUlUIEZPUiBUSU1FT1VUICRvbmVf c2Vjb25kLCBUSU1FU1RBTVAgJyRjdXJyZW50X3RpbWUnIik7CitteSAkdGltZV93YWl0ZWQgPSAo dGltZSgpIC0gJHN0YXJ0X3RpbWUpICogMTAwMDsgIyBjb252ZXJ0IHRvIG1pbGxpc2Vjb25kcwor b2soJHRpbWVfd2FpdGVkID49ICRvbmVfc2Vjb25kLCAiV0FJVCBGT1IgVElNRU9VVCB3YWl0cyBm b3IgZW5vdWdoIHRpbWUiKTsKKworIyBOb3csIGNoZWNrIHRoYXQgdGltZW91dHMgd29yayBhcyBl eHBlY3RlZCB3aGVuIHdhaXRpbmcgZm9yIExTTgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nlcmll cygyMSwgMzApKSIpOworbXkgJGxzbjIgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworbXkgJHJlYWNoZWRfbHNuID0g JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldBSVQgRk9SIExTTiAnJGxz bjInIFRJTUVPVVQgMSIpOworb2soJHJlYWNoZWRfbHNuIGVxICJmIiwgIldBSVQgZG9lc24ndCBy ZWFjaCBMU04gaWYgZ2l2ZW4gdG9vIGxpdHRsZSB3YWl0IHRpbWUiKTsKKworCisKKyMgV2UgbmVl ZCB0byBjaGVjayB0aGF0IFdBSVQgd29ya3MgZmluZSBpbnNpZGUgdHJhbnNhY3Rpb25zLiBGb3Ig dGhhdCwgbGV0J3MKKyMgZ2V0IHR3byBMU05zIHRoYXQgd2lsbCBjb3JyZXNwb25kIHRvIHR3byBk aWZmZXJlbnQgbWF4IHZhbHVlcyBpbiBvdXIgdGFibGUuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVf c2VyaWVzKDMxLCA0MCkpIik7CitteSAkbHNuMyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7Ciskbm9kZV9wcmltYXJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAo Z2VuZXJhdGVfc2VyaWVzKDQxLCA1MCkpIik7CitteSAkbHNuNCA9ICRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMg QmVmb3JlIHN0YXJ0aW5nIHRyYW5zYWN0aW9uLCB3YWl0IGZvciBMU04gd2hpY2ggZW5zdXJlcyBh IG1heCB2YWx1ZSBvZiA0MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgd2FpdCBmb3IgTFNO IHRoYXQgZW5zdXJlcyBhIG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZF TCBSRVBFQVRBQkxFIFJFQUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgor bXkgJHN0YW5kYnlfcmVzdWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcVsKKwlXQUlUIEZPUiBMU04gJyRsc24zJzsKKwlCRUdJTiBUUkFOU0FDVElPTiBJU09M QVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOworCVNFTEVDVCBtYXgoYSkgRlJPTSB3YWl0X3Rl c3Q7CisJV0FJVCBGT1IgTFNOICckbHNuNCc7CisJU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9s c24oKTsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUNPTU1JVDsKK10pOworCisj IE1ha2Ugc3VyZSB0aGF0IHdlIGluZGVlZCByZWFjaCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRl IHRoZSB0cmFuc2FjdGlvbi4KKyMgRm9yIHRoYXQsIGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0 X3dhbF9yZXBsYXlfbHNuIHJldHVybmVkIHRoYXQgTFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQg PSAkc3RhbmRieV9yZXN1bHRzID1+IC8kbHNuNC87CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIldB SVQgRk9SIExTTiB3b3JrcyBpbnNpZGUgYSB0cmFuc2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQg dHJhbnNhY3Rpb24gZG9lc24ndCBicmVhayBhbmQgc2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBh ZnRlciBXQUlULgorIyBGb3IgdGhhdCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9sZGVyIG1heCB2YWx1 ZSBpcyByZXBlYXRlZCB0d2ljZSBpbiB0aGUgcmVzdWx0cy4KK215ICRjb3VudCA9ICgpID0gJHN0 YW5kYnlfcmVzdWx0cyA9fiAvNDAvZzsKK29rKCRjb3VudCBlcSAyLCAidHJhbnNhY3Rpb24gaXNv bGF0aW9uIGxldmVsIGRvZXNuJ3QgZ2V0IGJyb2tlbiBkdWUgdG8gV0FJVCIpOworCisKKworIyBH ZXQgbXVsdGlwbGUgTFNOcyBmb3IgdGVzdGluZyBXQUlUIEZPUiBBTlkgLyBXQUlUIEZPUiBBTEwK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0 X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNTEsIDYwKSkiKTsKK215ICRsc241ID0gJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxf bHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDcwMDAwKSkiKTsKK215 ICRsc242ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf Y3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0ZV9zZXJpZXMoNjEsIDgw MDAwMCkpIik7CitteSAkbHNuNyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZP UiBBTlkgd29ya3MgZmluZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IldBSVQgRk9SIEFOWSBMU04gJyRsc241JyBMU04gJyRsc242JyBMU04gJyRsc243JyIpOworJGxz bl9zdGFuZGJ5ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCkiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFu ZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3Rh bmRieSc6OnBnX2xzbiwgJyRsc241Jzo6cGdfbHNuKSIpOworb2soJGNvbXBhcmVfbHNucyBnZSAw LAorCSJXQUlUIEZPUiBBTlkgbWFrZXMgdXMgcmVhY2ggYXQgbGVhc3QgdGhlIG1pbmltdW0gTFNO IGZyb20gdGhlIGxpc3QiKTsKKyRjb21wYXJlX2xzbnMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xzbl9jbXAoJyRsc25fc3RhbmRieSc6OnBnX2xz biwgJyRsc243Jzo6cGdfbHNuKSIpOworIyBUT0RPOiBDb3VsZCB0aGlzIHNvbWVob3cgZmFpbCBk dWUgdG8gdGhlIG1hY2hpbmUgYmVpbmcgdmVyeSBmYXN0IGF0IGFwcGx5aW5nIExTTj8KK29rKCRj b21wYXJlX2xzbnMgbHQgMCwKKwkiV0FJVCBGT1IgQU5ZIGRpZG4ndCBtYWtlIHVzIHJlYWNoIHRo ZSBtYXhpbXVtIExTTiBmcm9tIHRoZSBsaXN0Iik7CisKKyMgQ2hlY2sgdGhhdCBXQUlUIEZPUiBB TEwgd29ya3MgZmluZQorJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIldB SVQgRk9SIEFMTCBMU04gJyRsc241JywgTFNOICckbHNuNicsIExTTiAnJGxzbjcnIik7CiskbHNu X3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5k YnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2dlKCckbHNuX3N0YW5k YnknOjpwZ19sc24sICckbHNuNyc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgInQi LAorCSJXQUlUIEZPUiBBTEwgbWFrZXMgdXMgcmVhY2ggdGhlIG1heGltdW0gTFNOIGZyb20gdGhl IGxpc3QiKTsKKworCisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5LT5zdG9w OworZG9uZV90ZXN0aW5nKCk7Cg== --=_a3bf8cf416a17974078e822b81a2ddb9 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=wait_after_within_v6.patch Content-Disposition: attachment; filename=wait_after_within_v6.patch; size=31938 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWZ0ZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvYWZ0ZXIuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kZWYw ZWM2YmUzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hZnRlci5zZ21sCkBA IC0wLDAgKzEsMTE4IEBACis8IS0tCitkb2Mvc3JjL3NnbWwvcmVmL2FmdGVyLnNnbWwKK1Bvc3Rn cmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLXdhaXQiPgorIDxp bmRleHRlcm0gem9uZT0ic3FsLXdhaXQiPgorICA8cHJpbWFyeT5BRlRFUjwvcHJpbWFyeT4KKyA8 L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BRlRFUjwvcmVmZW50 cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwg LSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVm bmFtZWRpdj4KKyAgPHJlZm5hbWU+QUZURVI8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPkFGVEVS IHRoZSB0YXJnZXQgPGFjcm9ueW0+TFNOPC9hY3JvbnltPiB0byBiZSByZXBsYXllZCBhbmQgZm9y IHNwZWNpZmllZCB0aW1lIHRvIHRpbWVvdXQ8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2Pgor CisgPHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQUZURVIgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFibGU+IFtXSVRISU4gdGltZW91dF9pbl9taWxsaXNl Y29uZHNdCisKK0FGVEVSIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxzbl9u dW1iZXI8L3JlcGxhY2VhYmxlPicKK0FGVEVSIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmxzbl9udW1iZXI8L3JlcGxhY2VhYmxlPicgV0lUSElOIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj53YWl0X3RpbWVvdXQ8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyA8 L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3JpcHRpb248L3Rp dGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+QUZURVI8L2NvbW1hbmQ+IHByb3ZpZGVzIGEg c2ltcGxlIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uCisgICBtZWNoYW5pc20gdG8gd2FpdCBm b3IgdGhlIHRhcmdldCBsb2cgc2VxdWVuY2UgbnVtYmVyIAorICAgKDxhY3JvbnltPkxTTjwvYWNy b255bT4pIG9uIHN0YW5kYnkgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PgorICAgZGF0YWJhc2VzIHdpdGggbWFzdGVyLXN0YW5kYnkgYXN5bmNocm9ub3VzIHJlcGxpY2F0 aW9uLiA8Y29tbWFuZD5BRlRFUjwvY29tbWFuZD4KKyAgIGNvbW1hbmQgd2FpdHMgZm9yIHRoZSBz cGVjaWZpZWQgPGFjcm9ueW0+TFNOPC9hY3JvbnltPiB0byBiZSByZXBsYXllZC4KKyAgIElmIG5v IHRpbWVvdXQgd2FzIHNwZWNpZmllZCwgd2FpdCB0aW1lIGlzIHVubGltaXRlZC4KKyAgIFdhaXRp bmcgY2FuIGJlIGludGVycnVwdGVkIHVzaW5nIDxsaXRlcmFsPkN0cmwrQzwvbGl0ZXJhbD4sIG9y CisgICBieSBzaHV0dGluZyBkb3duIHRoZSA8bGl0ZXJhbD5wb3N0Z3JlczwvbGl0ZXJhbD4gc2Vy dmVyLgorICA8L3BhcmE+CisKKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+ UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+ CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPkxTTjwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBTcGVjaWZ5IHRo ZSB0YXJnZXQgbG9nIHNlcXVlbmNlIG51bWJlciB0byB3YWl0IGZvci4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT5USU1FT1VUIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53YWl0X3Rp bWVvdXQ8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgTGltaXQgdGhlIHRpbWUgaW50ZXJ2YWwgdG8gQUZURVIgdGhlIExTTiB0byBiZSByZXBs YXllZC4KKyAgICAgIFRoZSBzcGVjaWZpZWQgPHJlcGxhY2VhYmxlPndhaXRfdGltZW91dDwvcmVw bGFjZWFibGU+IG11c3QgYmUgYW4gaW50ZWdlcgorICAgICAgYW5kIGlzIG1lYXN1cmVkIGluIG1p bGxpc2Vjb25kcy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKworICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgor ICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUnVuIDxsaXRlcmFsPkFG VEVSPC9saXRlcmFsPiBmcm9tIDxhcHBsaWNhdGlvbj5wc3FsPC9hcHBsaWNhdGlvbj4sCisgICBs aW1pdGluZyB3YWl0IHRpbWUgdG8gMTAwMDAgbWlsbGlzZWNvbmRzOgorCis8c2NyZWVuPgorQUZU RVIgJzAvM0YwN0E2QjEnIFdJVEhJTiAxMDAwMDsKK05PVElDRTogIExTTiBpcyBub3QgcmVhY2hl ZC4gVHJ5IHRvIGluY3JlYXNlIHdhaXQgdGltZS4KK0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0t CisgZgorKDEgcm93KQorPC9zY3JlZW4+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdhaXQg dW50aWwgdGhlIHNwZWNpZmllZCA8YWNyb255bT5MU048L2Fjcm9ueW0+IGlzIHJlcGxheWVkOgor PHNjcmVlbj4KK0FGVEVSICcwLzNGMDdBNjExJzsKK0xTTiByZWFjaGVkCistLS0tLS0tLS0tLS0t CisgdAorKDEgcm93KQorPC9zY3JlZW4+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIExpbWl0 IDxhY3JvbnltPkxTTjwvYWNyb255bT4gd2FpdCB0aW1lIHRvIDUwMDAwMCBtaWxsaXNlY29uZHMs CisgICBhbmQgdGhlbiBjYW5jZWwgdGhlIGNvbW1hbmQgaWYgPGFjcm9ueW0+TFNOPC9hY3Jvbnlt PiB3YXMgbm90IHJlYWNoZWQ6Cis8c2NyZWVuPgorQUZURVIgTFNOICcwLzNGMEZGNzkxJyBXSVRI SU4gNTAwMDAwOworXkNDYW5jZWwgcmVxdWVzdCBzZW50CitOT1RJQ0U6ICBMU04gaXMgbm90IHJl YWNoZWQuIFRyeSB0byBpbmNyZWFzZSB3YWl0IHRpbWUuCitFUlJPUjogIGNhbmNlbGluZyBzdGF0 ZW1lbnQgZHVlIHRvIHVzZXIgcmVxdWVzdAorIExTTiByZWFjaGVkCistLS0tLS0tLS0tLS0tCisg ZgorKDEgcm93KQorPC9zY3JlZW4+Cis8L3BhcmE+Cis8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4IDRhNDI5OTliMTguLmZmMmU2ZTBmM2YgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsbGZpbGVzLnNnbWwKQEAgLTYsNiArNiw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxl IHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogCiA8IS0tIFNRTCBjb21tYW5k cyAtLT4KIDwhRU5USVRZIGFib3J0ICAgICAgICAgICAgICBTWVNURU0gImFib3J0LnNnbWwiPgor PCFFTlRJVFkgYWJvcnQgICAgICAgICAgICAgIFNZU1RFTSAiYWZ0ZXIuc2dtbCI+CiA8IUVOVElU WSBhbHRlckFnZ3JlZ2F0ZSAgICAgU1lTVEVNICJhbHRlcl9hZ2dyZWdhdGUuc2dtbCI+CiA8IUVO VElUWSBhbHRlckNvbGxhdGlvbiAgICAgU1lTVEVNICJhbHRlcl9jb2xsYXRpb24uc2dtbCI+CiA8 IUVOVElUWSBhbHRlckNvbnZlcnNpb24gICAgU1lTVEVNICJhbHRlcl9jb252ZXJzaW9uLnNnbWwi PgpAQCAtMTg4LDYgKzE4OSw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNl IGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgdXBkYXRlICAgICAgICAgICAgIFNZ U1RFTSAidXBkYXRlLnNnbWwiPgogPCFFTlRJVFkgdmFjdXVtICAgICAgICAgICAgIFNZU1RFTSAi dmFjdXVtLnNnbWwiPgogPCFFTlRJVFkgdmFsdWVzICAgICAgICAgICAgIFNZU1RFTSAidmFsdWVz LnNnbWwiPgorPCFFTlRJVFkgd2FpdCAgICAgICAgICAgICAgIFNZU1RFTSAid2FpdC5zZ21sIj4K IAogPCEtLSBhcHBsaWNhdGlvbnMgYW5kIHV0aWxpdGllcyAtLT4KIDwhRU5USVRZIGNsdXN0ZXJk YiAgICAgICAgICBTWVNURU0gImNsdXN0ZXJkYi5zZ21sIj4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvYmVnaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYmVnaW4uc2dtbAppbmRleCAw MTZiMDIxNDg3Li5hMjc5NDc2M2IxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2JlZ2lu LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9iZWdpbi5zZ21sCkBAIC0yMSwxMyArMjEsMTYg QEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAKICA8cmVmc3lub3BzaXNkaXY+CiA8c3lub3Bz aXM+Ci1CRUdJTiBbIFdPUksgfCBUUkFOU0FDVElPTiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KK0JFR0lO IFsgV09SSyB8IFRSQU5TQUNUSU9OIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dHJhbnNhY3Rpb25fbW9kZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+d2FpdF9ldmVudDwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2Vh YmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBJU09MQVRJT04gTEVWRUwgeyBTRVJJQUxJ WkFCTEUgfCBSRVBFQVRBQkxFIFJFQUQgfCBSRUFEIENPTU1JVFRFRCB8IFJFQUQgVU5DT01NSVRU RUQgfQogICAgIFJFQUQgV1JJVEUgfCBSRUFEIE9OTFkKICAgICBbIE5PVCBdIERFRkVSUkFCTEUK KworPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2FpdF9ldmVu dDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorICAgIEFGVEVSIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5sc25fdmFsdWU8L3JlcGxhY2VhYmxlPiBbIFdJVEhJTiBudW1iZXJfb2Zf bWlsbGlzZWNvbmRzIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9zdGFydF90cmFuc2FjdGlvbi5zZ21sCmluZGV4IDc0Y2NkN2UzNDUuLjQ2YTNiY2Yx YTggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvc3RhcnRfdHJhbnNhY3Rpb24uc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvcmVmL3N0YXJ0X3RyYW5zYWN0aW9uLnNnbWwKQEAgLTIxLDEzICsy MSwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxz eW5vcHNpcz4KLVNUQVJUIFRSQU5TQUNUSU9OIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyYW5zYWN0aW9uX21vZGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KK1NUQVJUIFRSQU5T QUNUSU9OIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRyYW5zYWN0aW9uX21vZGU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndh aXRfZXZlbnQ8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50cmFuc2FjdGlvbl9tb2RlPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwv cGhyYXNlPgogCiAgICAgSVNPTEFUSU9OIExFVkVMIHsgU0VSSUFMSVpBQkxFIHwgUkVQRUFUQUJM RSBSRUFEIHwgUkVBRCBDT01NSVRURUQgfCBSRUFEIFVOQ09NTUlUVEVEIH0KICAgICBSRUFEIFdS SVRFIHwgUkVBRCBPTkxZCiAgICAgWyBOT1QgXSBERUZFUlJBQkxFCisKKzxwaHJhc2U+d2hlcmUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndhaXRfZXZlbnQ8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKyAgICBBRlRFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNu X3ZhbHVlPC9yZXBsYWNlYWJsZT4gWyBXSVRISU4gbnVtYmVyX29mX21pbGxpc2Vjb25kcyBdCiA8 L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAppbmRleCBhYTk0 ZjZhZGY2Li43Yzk0Y2Y5ZGUxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCkBAIC0zNCw2ICszNCw3IEBACiAg IDwvcGFydGludHJvPgogCiAgICAmYWJvcnQ7CisgICAmYWZ0ZXI7CiAgICAmYWx0ZXJBZ2dyZWdh dGU7CiAgICAmYWx0ZXJDb2xsYXRpb247CiAgICAmYWx0ZXJDb252ZXJzaW9uOwpAQCAtMjE2LDYg KzIxNyw3IEBACiAgICAmdXBkYXRlOwogICAgJnZhY3V1bTsKICAgICZ2YWx1ZXM7CisgICAmd2Fp dDsKIAogIDwvcmVmZXJlbmNlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jCmluZGV4IDg1M2I1NDA5NDUuLjczNjEyNDIwOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiYmFj a3VwL2Jhc2ViYWNrdXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNs dWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgog I2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAicGdzdGF0LmgiCkBAIC0xODI1LDYgKzE4MjYsMTUgQEAgUGVyZm9ybVdhbFJlY292 ZXJ5KHZvaWQpCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkqIElmIHdlIHJlcGxheWVk IGFuIExTTiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yLAorCQkJKiBzZXQgbGF0Y2hlcyBp biBzaGFyZWQgbWVtb3J5IGFycmF5IHRvIG5vdGlmeSB0aGUgd2FpdGVyLgorCQkJKi8KKwkJCWlm IChYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ciA+PSBHZXRNaW5XYWl0KCkp CisJCQl7CisJCQkJIFdhaXRTZXRMYXRjaChYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVu ZFJlY1B0cik7CisJCQl9CisKIAkJCS8qIEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwg cmVjb3JkICovCiAJCQlyZWNvcmQgPSBSZWFkUmVjb3JkKHhsb2dwcmVmZXRjaGVyLCBMT0csIGZh bHNlLCByZXBsYXlUTEkpOwogCQl9IHdoaWxlIChyZWNvcmQgIT0gTlVMTCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01h a2VmaWxlCmluZGV4IDQ4ZjczNDhmOTEuLmQ4ZjY5NjVkOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxl CkBAIC02MSw2ICs2MSw3IEBAIE9CSlMgPSBcCiAJdmFjdXVtLm8gXAogCXZhY3V1bXBhcmFsbGVs Lm8gXAogCXZhcmlhYmxlLm8gXAotCXZpZXcubworCXZpZXcubyBcCisJd2FpdC5vCiAKIGluY2x1 ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQKaW5kZXggNmRkMDBhNGFiZC4uM2YwNmRjNTM0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24u YnVpbGQKQEAgLTUwLDQgKzUwLDUgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAndmFj dXVtcGFyYWxsZWwuYycsCiAgICd2YXJpYWJsZS5jJywKICAgJ3ZpZXcuYycsCisgICd3YWl0LmMn LAogKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvd2FpdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjZmNjc0OTExOGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0 LmMKQEAgLTAsMCArMSwyOTggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHdhaXQuYwor ICoJICBJbXBsZW1lbnRzIFdBSVQgRk9SLCB3aGljaCBhbGxvd3Mgd2FpdGluZyBmb3IgZXZlbnRz IHN1Y2ggYXMKKyAqCSAgdGltZSBwYXNzaW5nIG9yIExTTiBoYXZpbmcgYmVlbiByZXBsYXllZCBv biByZXBsaWNhLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAyMDI0LCBSZWdlbnRzIG9mIFBvc3RncmVzUHJvCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKworI2luY2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgInBv c3RncmVzLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1 ZGUgImFjY2Vzcy90cmFuc2FtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorI2luY2x1ZGUg ImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNp bmNsdWRlICJjb21tYW5kcy93YWl0LmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9sYXRjaC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKKyNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NpbnZhbGFkdC5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAi dXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3Ivc3BpLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorCisvKiBBZGQg dG8gLyBkZWxldGUgZnJvbSBzaGFyZWQgbWVtb3J5IGFycmF5ICovCitzdGF0aWMgdm9pZCBBZGRF dmVudChYTG9nUmVjUHRyIGxzbl90b193YWl0KTsKK3N0YXRpYyB2b2lkIERlbGV0ZUV2ZW50KHZv aWQpOworCisvKiBTaGFyZWQgbWVtb3J5IHN0cnVjdHVyZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sK KwlpbnQJCQliYWNrZW5kX21heGlkOworCXBnX2F0b21pY191aW50NjQJbWluX2xzbjsKKwlzbG9j a190CQltdXRleDsKKwlYTG9nUmVjUHRyCXdhaXRlZF9sc25bRkxFWElCTEVfQVJSQVlfTUVNQkVS XTsKK30gV2FpdFN0YXRlOworCitzdGF0aWMgdm9sYXRpbGUgV2FpdFN0YXRlICpzdGF0ZTsKKwor LyogQWRkIHRoZSBldmVudCBvZiB0aGUgY3VycmVudCBiYWNrZW5kIHRvIHRoZSBzaGFyZWQgbWVt b3J5IGFycmF5ICovCitzdGF0aWMgdm9pZAorQWRkRXZlbnQoWExvZ1JlY1B0ciBsc25fdG9fd2Fp dCkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisJaWYgKHN0YXRlLT5iYWNr ZW5kX21heGlkIDwgTXlQcm9jTnVtYmVyKQorCQlzdGF0ZS0+YmFja2VuZF9tYXhpZCA9IE15UHJv Y051bWJlcjsKKworCXN0YXRlLT53YWl0ZWRfbHNuW015UHJvY051bWJlcl0gPSBsc25fdG9fd2Fp dDsKKworCWlmIChsc25fdG9fd2FpdCA8IHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUtPm1pbl9s c24pKQorCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZzdGF0ZS0+bWluX2xzbixsc25fdG9fd2FpdCk7 CisJU3BpbkxvY2tSZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogRGVsZXRlIGV2 ZW50IG9mIHRoZSBjdXJyZW50IGJhY2tlbmQgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcnJheS4K KyAqCisgKiBUT0RPOiBDb25zaWRlciBzdGF0ZSBjbGVhbnVwIG9uIGJhY2tlbmQgZmFpbHVyZS4K KyAqIENoZWNrOgorICogMSkgbm9tYWx8c21hcnR8ZmFzdHxpbW1lZGlhdGUgc3RvcAorICogMikg U0lHS0lMTCBhbmQgU0lHVEVSTQorICovCitzdGF0aWMgdm9pZAorRGVsZXRlRXZlbnQodm9pZCkK K3sKKwlpbnQJCQlpOworCVhMb2dSZWNQdHIJbHNuX3RvX2RlbGV0ZSA9IHN0YXRlLT53YWl0ZWRf bHNuW015UHJvY051bWJlcl07CisKKwlzdGF0ZS0+d2FpdGVkX2xzbltNeVByb2NOdW1iZXJdID0g SW52YWxpZFhMb2dSZWNQdHI7CisKKwlTcGluTG9ja0FjcXVpcmUoJnN0YXRlLT5tdXRleCk7CisK KwkvKiBJZiB3ZSBuZWVkIHRvIGNob29zZSB0aGUgbmV4dCBtaW5fbHNuLCB1cGRhdGUgc3RhdGUt Pm1pbl9sc24gKi8KKwlpZiAocGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikgPT0g bHNuX3RvX2RlbGV0ZSkKKwl7CisJCXBnX2F0b21pY193cml0ZV91NjQoJnN0YXRlLT5taW5fbHNu LFBHX1VJTlQ2NF9NQVgpOworCQlmb3IgKGkgPSAxOyBpIDw9IHN0YXRlLT5iYWNrZW5kX21heGlk OyBpKyspCisJCQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIg JiYKKwkJCQlzdGF0ZS0+d2FpdGVkX2xzbltpXSA8IHBnX2F0b21pY19yZWFkX3U2NCgmc3RhdGUt Pm1pbl9sc24pKQorCQkJCXBnX2F0b21pY193cml0ZV91NjQoJnN0YXRlLT5taW5fbHNuLHN0YXRl LT53YWl0ZWRfbHNuW2ldKTsKKwl9CisKKwlpZiAoc3RhdGUtPmJhY2tlbmRfbWF4aWQgPT0gTXlQ cm9jTnVtYmVyKQorCQlmb3IgKGkgPSAoTXlQcm9jTnVtYmVyKTsgaSA+PSAxOyBpLS0pCisJCQlp ZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gSW52YWxpZFhMb2dSZWNQdHIpCisJCQl7CisJCQkJ c3RhdGUtPmJhY2tlbmRfbWF4aWQgPSBpOworCQkJCWJyZWFrOworCQkJfQorCisJU3BpbkxvY2tS ZWxlYXNlKCZzdGF0ZS0+bXV0ZXgpOworfQorCisvKgorICogUmVwb3J0IGFtb3VudCBvZiBzaGFy ZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgV2FpdFN0YXRlCisgKi8KK1NpemUKK1dhaXRTaG1l bVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCisJc2l6ZSA9IG9mZnNldG9mKFdhaXRTdGF0 ZSwgd2FpdGVkX2xzbik7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE1heEJhY2tl bmRzLCBzaXplb2YoWExvZ1JlY1B0cikpKTsKKwlyZXR1cm4gc2l6ZTsKK30KKworLyogSW5pdCBh cnJheSBvZiBldmVudHMgaW4gc2hhcmVkIG1lbW9yeSAqLwordm9pZAorV2FpdFNobWVtSW5pdCh2 b2lkKQoreworCWJvb2wJCWZvdW5kOworCXVpbnQzMgkJaTsKKworCXN0YXRlID0gKFdhaXRTdGF0 ZSAqKSBTaG1lbUluaXRTdHJ1Y3QoInBnX3dhaXRfbHNuIiwKKwkJCQkJCQkJCQkgIFdhaXRTaG1l bVNpemUoKSwKKwkJCQkJCQkJCQkgICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwl7CisJCVNwaW5M b2NrSW5pdCgmc3RhdGUtPm11dGV4KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgTWF4QmFja2VuZHM7 IGkrKykKKwkJCXN0YXRlLT53YWl0ZWRfbHNuW2ldID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwkJ c3RhdGUtPmJhY2tlbmRfbWF4aWQgPSAwOworCQlwZ19hdG9taWNfaW5pdF91NjQoJnN0YXRlLT5t aW5fbHNuLFBHX1VJTlQ2NF9NQVgpOworCX0KK30KKworLyogU2V0IGFsbCBsYXRjaGVzIGluIHNo YXJlZCBtZW1vcnkgdG8gc2lnbmFsIHRoYXQgbmV3IExTTiBoYXMgYmVlbiByZXBsYXllZCAqLwor dm9pZAorV2FpdFNldExhdGNoKFhMb2dSZWNQdHIgY3VyX2xzbikKK3sKKwl1aW50MzIJCWk7CisJ aW50IAkJYmFja2VuZF9tYXhpZDsKKwlQR1BST0MJICAgKmJhY2tlbmQ7CisKKwlTcGluTG9ja0Fj cXVpcmUoJnN0YXRlLT5tdXRleCk7CisJYmFja2VuZF9tYXhpZCA9IHN0YXRlLT5iYWNrZW5kX21h eGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmc3RhdGUtPm11dGV4KTsKKworCWZvciAoaSA9IDE7IGkg PD0gYmFja2VuZF9tYXhpZDsgaSsrKQorCXsKKwkJYmFja2VuZCA9IFByb2NOdW1iZXJHZXRQcm9j KGkpOworCQlpZiAoc3RhdGUtPndhaXRlZF9sc25baV0gIT0gMCkKKwkJeworCQkJaWYgKGJhY2tl bmQgJiYgc3RhdGUtPndhaXRlZF9sc25baV0gPD0gY3VyX2xzbikKKwkJCQlTZXRMYXRjaCgmYmFj a2VuZC0+cHJvY0xhdGNoKTsKKwkJfQorCX0KK30KKworLyogR2V0IG1pbmltYWwgTFNOIHRoYXQg d2lsbCBiZSBuZXh0ICovCitYTG9nUmVjUHRyCitHZXRNaW5XYWl0KHZvaWQpCit7CisJcmV0dXJu IHN0YXRlID8gcGdfYXRvbWljX3JlYWRfdTY0KCZzdGF0ZS0+bWluX2xzbikgOiBQR19VSU5UNjRf TUFYOworfQorCisvKgorICogT24gV0FJVCB1c2UgTXlMYXRjaCB0byB3YWl0IHRpbGwgTFNOIGlz IHJlcGxheWVkLAorICogcG9zdG1hc3RlciBkaWVzIG9yIHRpbWVvdXQgaGFwcGVucy4KKyAqLwor aW50CitXYWl0VXRpbGl0eShYTG9nUmVjUHRyIGxzbiwgY29uc3QgZmxvYXQ4IHNlY3MpCit7CisJ WExvZ1JlY1B0cgljdXJfbHNuID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwlpbnQJCQls YXRjaF9ldmVudHM7CisJZmxvYXQ4CQllbmR0aW1lOworCXVpbnQzMgkJcmVzID0gMDsKKworCWlm ICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJeworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCWVycm1z ZygiV29yayBvbmx5IGluIHN0YW5kYnkgbW9kZSIpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisK KyNkZWZpbmUgR2V0Tm93RmxvYXQoKQkoKGZsb2F0OCkgR2V0Q3VycmVudFRpbWVzdGFtcCgpIC8g MTAwMDAwMC4wKQorCWVuZHRpbWUgPSBHZXROb3dGbG9hdCgpICsgc2VjczsKKworCWxhdGNoX2V2 ZW50cyA9IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRIOworCisJaWYgKGxzbiAhPSBJ bnZhbGlkWExvZ1JlY1B0cikKKwl7CisJCS8qIEp1c3QgY2hlY2sgaWYgd2UgcmVhY2hlZCAqLwor CQlpZiAobHNuIDwgY3VyX2xzbiB8fCBzZWNzIDwgMCkKKwkJCXJldHVybiAobHNuIDwgY3VyX2xz bik7CisKKwkJbGF0Y2hfZXZlbnRzIHw9IFdMX0xBVENIX1NFVDsKKwkJQWRkRXZlbnQobHNuKTsK Kwl9CisJZWxzZSBpZiAoIXNlY3MpCisJCXJldHVybiAxOworCisJZm9yICg7OykKKwl7CisJCWlu dAkJCXJjOworCQlmbG9hdDgJCWRlbGF5ID0gMDsKKwkJbG9uZwkJZGVsYXlfbXM7CisKKwkJLyog SWYgTFNOIGhhcyBiZWVuIHJlcGxheWVkICovCisJCWlmIChsc24gJiYgbHNuIDw9IGN1cl9sc24p CisJCQlicmVhazsKKworCQlpZiAoc2VjcyA+IDApCisJCQlkZWxheSA9IGVuZHRpbWUgLSBHZXRO b3dGbG9hdCgpOworCQllbHNlIGlmIChzZWNzID09IDApCisJCQkvKgorCQkJKiBJZiB3ZSB3YWl0 IGZvcmV2ZXIsIHRoZW4gMSBtaW51dGUgdGltZW91dCB0byBjaGVjaworCQkJKiBmb3IgSW50ZXJ1 cHRzLgorCQkJKi8KKwkJCWRlbGF5ID0gNjA7CisKKwkJaWYgKGRlbGF5ID4gMC4wKQorCQkJZGVs YXlfbXMgPSAobG9uZykgY2VpbChkZWxheSAqIDEwMDAuMCk7CisJCWVsc2UKKwkJCWJyZWFrOwor CisJCS8qCisJCSAqIElmIHJlY2VpdmVkIGFuIGludGVycnVwdGlvbiBmcm9tIENIRUNLX0ZPUl9J TlRFUlJVUFRTLAorCQkgKiB0aGVuIGRlbGV0ZSB0aGUgY3VycmVudCBldmVudCBmcm9tIGFycmF5 LgorCQkgKi8KKwkJaWYgKEludGVycnVwdFBlbmRpbmcpCisJCXsKKwkJCWlmIChsc24gIT0gSW52 YWxpZFhMb2dSZWNQdHIpCisJCQkJRGVsZXRlRXZlbnQoKTsKKwkJCVByb2Nlc3NJbnRlcnJ1cHRz KCk7CisJCX0KKworCQkvKiBJZiBwb3N0bWFzdGVyIGRpZXMsIGZpbmlzaCBpbW1lZGlhdGVseSAq LworCQlpZiAoIVBvc3RtYXN0ZXJJc0FsaXZlKCkpCisJCQlicmVhazsKKworCQlyYyA9IFdhaXRM YXRjaChNeUxhdGNoLCBsYXRjaF9ldmVudHMsIGRlbGF5X21zLAorCQkJCQkgICBXQUlUX0VWRU5U X0NMSUVOVF9SRUFEKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQlSZXNldExhdGNo KE15TGF0Y2gpOworCisJCWlmIChsc24gJiYgcmMgJiBXTF9MQVRDSF9TRVQpCisJCQljdXJfbHNu ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwl9CisKKwlpZiAobHNuICE9IEludmFsaWRY TG9nUmVjUHRyKQorCQlEZWxldGVFdmVudCgpOworCisJaWYgKGxzbiAhPSBJbnZhbGlkWExvZ1Jl Y1B0ciAmJiBsc24gPiBjdXJfbHNuKQorCQllbG9nKE5PVElDRSwiTFNOIGlzIG5vdCByZWFjaGVk LiBUcnkgdG8gaW5jcmVhc2Ugd2FpdCB0aW1lLiIpOworCWVsc2UKKwkJcmVzID0gMTsKKworCXJl dHVybiByZXM7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIFdBSVQgRk9SICovCitpbnQKK1dh aXRNYWluKFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCit7CisJVHVwbGVEZXNj CXR1cGRlc2M7CisJVHVwT3V0cHV0U3RhdGUgKnRzdGF0ZTsKKwlYTG9nUmVjUHRyCWxzbiA9IElu dmFsaWRYTG9nUmVjUHRyOworCWludAkJcmVzID0gMDsKKworCWxzbiA9IERhdHVtR2V0TFNOKERp cmVjdEZ1bmN0aW9uQ2FsbDEocGdfbHNuX2luLAorCQkJCQkJCQkJCQkJIENTdHJpbmdHZXREYXR1 bShzdG10LT5sc24pKSk7CisJcmVzID0gV2FpdFV0aWxpdHkobHNuLCBzdG10LT5kZWxheSk7CisK KwkvKiBOZWVkIGEgdHVwbGUgZGVzY3JpcHRvciByZXByZXNlbnRpbmcgYSBzaW5nbGUgVEVYVCBj b2x1bW4gKi8KKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoMSk7CisJVHVwbGVE ZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAiTFNOIHJlYWNoZWQiLCBURVhU T0lELCAtMSwgMCk7CisJLyogUHJlcGFyZSBmb3IgcHJvamVjdGlvbiBvZiB0dXBsZXMgKi8KKwl0 c3RhdGUgPSBiZWdpbl90dXBfb3V0cHV0X3R1cGRlc2MoZGVzdCwgdHVwZGVzYywgJlRUU09wc01p bmltYWxUdXBsZSk7CisKKwkvKiBTZW5kIGl0ICovCisJZG9fdGV4dF9vdXRwdXRfb25lbGluZSh0 c3RhdGUsIHJlcz8idCI6ImYiKTsKKwllbmRfdHVwX291dHB1dCh0c3RhdGUpOworCXJldHVybiBy ZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQppbmRleCAxMzBmN2ZjN2MzLi4zN2M0MjVkYmU0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlTZWNMYWJl bFN0bXQgU2VsZWN0U3RtdCBUcmFuc2FjdGlvblN0bXQgVHJhbnNhY3Rpb25TdG10TGVnYWN5IFRy dW5jYXRlU3RtdAogCQlVbmxpc3RlblN0bXQgVXBkYXRlU3RtdCBWYWN1dW1TdG10CiAJCVZhcmlh YmxlUmVzZXRTdG10IFZhcmlhYmxlU2V0U3RtdCBWYXJpYWJsZVNob3dTdG10Ci0JCVZpZXdTdG10 IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10CisJCVZpZXdTdG10IFdhaXRTdG10 IENoZWNrUG9pbnRTdG10IENyZWF0ZUNvbnZlcnNpb25TdG10CiAJCURlYWxsb2NhdGVTdG10IFBy ZXBhcmVTdG10IEV4ZWN1dGVTdG10CiAJCURyb3BPd25lZFN0bXQgUmVhc3NpZ25Pd25lZFN0bXQK IAkJQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10IEFsdGVyVFNEaWN0aW9uYXJ5U3RtdApAQCAtNjQ1 LDYgKzY0NSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cGFydGJvdW5kc3Bl Yz4gUGFydGl0aW9uQm91bmRTcGVjCiAldHlwZSA8bGlzdD4JCWhhc2hfcGFydGJvdW5kCiAldHlw ZSA8ZGVmZWx0PgkJaGFzaF9wYXJ0Ym91bmRfZWxlbQorJXR5cGUgPGl2YWw+CQl3YWl0X3RpbWUK KyV0eXBlIDxub2RlPgkJd2FpdF9mb3IKIAogJXR5cGUgPG5vZGU+CWpzb25fZm9ybWF0X2NsYXVz ZQogCQkJCWpzb25fZm9ybWF0X2NsYXVzZV9vcHQKQEAgLTExMDMsNiArMTEwNSw3IEBAIHN0bXQ6 CiAJCQl8IFZhcmlhYmxlU2V0U3RtdAogCQkJfCBWYXJpYWJsZVNob3dTdG10CiAJCQl8IFZpZXdT dG10CisJCQl8IFdhaXRTdG10CiAJCQl8IC8qRU1QVFkqLwogCQkJCXsgJCQgPSBOVUxMOyB9CiAJ CTsKQEAgLTEwOTM0LDEyICsxMDkzNywxMyBAQCBUcmFuc2FjdGlvblN0bXQ6CiAJCQkJCW4tPmxv Y2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IFNUQVJUIFRS QU5TQUNUSU9OIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eQorCQkJfCBTVEFSVCBUUkFO U0FDVElPTiB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkgd2FpdF9mb3IKIAkJCQl7CiAJ CQkJCVRyYW5zYWN0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKFRyYW5zYWN0aW9uU3RtdCk7CiAKIAkJ CQkJbi0+a2luZCA9IFRSQU5TX1NUTVRfU1RBUlQ7CiAJCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJ CQkJbi0+d2FpdCA9ICQ0OwogCQkJCQluLT5sb2NhdGlvbiA9IC0xOwogCQkJCQkkJCA9IChOb2Rl ICopIG47CiAJCQkJfQpAQCAtMTEwMzgsMTIgKzExMDQyLDEzIEBAIFRyYW5zYWN0aW9uU3RtdDoK IAkJOwogCiBUcmFuc2FjdGlvblN0bXRMZWdhY3k6Ci0JCQlCRUdJTl9QIG9wdF90cmFuc2FjdGlv biB0cmFuc2FjdGlvbl9tb2RlX2xpc3Rfb3JfZW1wdHkKKwkJCUJFR0lOX1Agb3B0X3RyYW5zYWN0 aW9uIHRyYW5zYWN0aW9uX21vZGVfbGlzdF9vcl9lbXB0eSB3YWl0X2ZvcgogCQkJCXsKIAkJCQkJ VHJhbnNhY3Rpb25TdG10ICpuID0gbWFrZU5vZGUoVHJhbnNhY3Rpb25TdG10KTsKIAogCQkJCQlu LT5raW5kID0gVFJBTlNfU1RNVF9CRUdJTjsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQlu LT53YWl0ID0gJDQ7CiAJCQkJCW4tPmxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gKE5vZGUgKikg bjsKIAkJCQl9CkBAIC0xNTg3NSw2ICsxNTg4MCwzNyBAQCB4bWxfcGFzc2luZ19tZWNoOgogCQkJ fCBCWSBWQUxVRV9QCiAJCTsKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCVFVRVJZ OgorICoJCQkJQUZURVIgTFNOX3ZhbHVlIFtXSVRISU4gZGVsYXkgdGltZXN0YW1wXQorICoKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KK1dhaXRTdG10OgorCQkJQUZURVIgU2NvbnN0IHdhaXRfdGlt ZQorCQkJCXsKKwkJCQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4t PmxzbiA9ICQyOworCQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CisJCTsKK3dhaXRfZm9yOgorCQkJQUZURVIgU2NvbnN0IHdhaXRfdGltZQorCQkJCXsKKwkJ CQkJV2FpdFN0bXQgKm4gPSBtYWtlTm9kZShXYWl0U3RtdCk7CisJCQkJCW4tPmxzbiA9ICQyOwor CQkJCQluLT5kZWxheSA9ICQzOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQl8IC8q IEVNUFRZICovCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK3dhaXRfdGltZToKKwkJCVdJVEhJTiBJ Y29uc3QJCXsgJCQgPSAkMjsgfQorCQkJfCAvKiBFTVBUWSAqLyAgICAgICAgICAgeyAkJCA9IDA7 IH0KKwkJOworCiAKIC8qCiAgKiBBZ2dyZWdhdGUgZGVjb3JhdGlvbiBjbGF1c2VzCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKaW5kZXggNTIxZWQ1NDE4Yy4uOWJlOTc3MzdiNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncHJlZmV0Y2hl ci5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKICNpbmNsdWRlICJjb21tYW5k cy9hc3luYy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3dhaXQuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2F1dG92YWN1 dW0uaCIKQEAgLTE1Miw2ICsxNTMsNyBAQCBDYWxjdWxhdGVTaG1lbVNpemUoaW50ICpudW1fc2Vt YXBob3JlcykKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdEV2ZW50RXh0ZW5zaW9uU2htZW1T aXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBJbmplY3Rpb25Qb2ludFNobWVtU2l6ZSgp KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2xvdFN5bmNTaG1lbVNpemUoKSk7CisJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFdhaXRTaG1lbVNpemUoKSk7CiAjaWZkZWYgRVhFQ19CQUNLRU5ECiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtQmFja2VuZEFycmF5U2l6ZSgpKTsKICNlbmRpZgpA QCAtMjQ0LDYgKzI0NiwxMSBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQp CiAJLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1zICovCiAJQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVj dHMoKTsKIAorCS8qCisJICogSW5pdCBhcnJheSBvZiBMYXRjaGVzIGluIHNoYXJlZCBtZW1vcnkg Zm9yIHdhaXQgbHNuCisJICovCisJV2FpdFNobWVtSW5pdCgpOworCiAjaWZkZWYgRVhFQ19CQUNL RU5ECiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA4M2Y4NmE0MmY3Li5jN2YwMWMwYTE3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYwpAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3VzZXIuaCIK ICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy92aWV3Lmgi CisjaW5jbHVkZSAiY29tbWFuZHMvd2FpdC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV91dGlsY21kLmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dy aXRlci5oIgpAQCAtMjY1LDYgKzI2Niw3IEBAIENsYXNzaWZ5VXRpbGl0eUNvbW1hbmRBc1JlYWRP bmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0xvYWRTdG10OgogCQljYXNlIFRfUHJlcGFy ZVN0bXQ6CiAJCWNhc2UgVF9Vbmxpc3RlblN0bXQ6CisJCWNhc2UgVF9XYWl0U3RtdDoKIAkJY2Fz ZSBUX1ZhcmlhYmxlU2V0U3RtdDoKIAkJCXsKIAkJCQkvKgpAQCAtNjA1LDYgKzYwNywxMSBAQCBz dGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJCWNhc2UgVFJB TlNfU1RNVF9TVEFSVDoKIAkJCQkJCXsKIAkJCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJCQlX YWl0U3RtdCAgICp3YWl0c3RtdCA9IChXYWl0U3RtdCAqKSBzdG10LT53YWl0OworCisJCQkJCQkJ LyogSWYgbmVlZGVkIHRvIFdBSVQgRk9SIHNvbWV0aGluZyBidXQgZmFpbGVkICovCisJCQkJCQkJ aWYgKHN0bXQtPndhaXQgJiYgV2FpdE1haW4od2FpdHN0bXQsIGRlc3QpID09IDApCisJCQkJCQkJ CWJyZWFrOwogCiAJCQkJCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CiAJCQkJCQkJZm9yZWFj aChsYywgc3RtdC0+b3B0aW9ucykKQEAgLTEwNjIsNiArMTA2OSwxMyBAQCBzdGFuZGFyZF9Qcm9j ZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2Fz ZSBUX1dhaXRTdG10OgorCQkJeworCQkJCVdhaXRTdG10ICAgKnN0bXQgPSAoV2FpdFN0bXQgKikg cGFyc2V0cmVlOworCQkJCVdhaXRNYWluKHN0bXQsIGRlc3QpOworCQkJCWJyZWFrOworCQkJfQor CiAJCWRlZmF1bHQ6CiAJCQkvKiBBbGwgb3RoZXIgc3RhdGVtZW50IHR5cGVzIGhhdmUgZXZlbnQg dHJpZ2dlciBzdXBwb3J0ICovCiAJCQlQcm9jZXNzVXRpbGl0eVNsb3cocHN0YXRlLCBwc3RtdCwg cXVlcnlTdHJpbmcsCkBAIC0yODQwLDYgKzI4NTQsMTAgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2Rl ICpwYXJzZXRyZWUpCiAJCQl0YWcgPSBDTURUQUdfTk9USUZZOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBUX1dhaXRTdG10OgorCQkJdGFnID0gQ01EVEFHX1dBSVQ7CisJCQlicmVhazsKKwogCQljYXNl IFRfTGlzdGVuU3RtdDoKIAkJCXRhZyA9IENNRFRBR19MSVNURU47CiAJCQlicmVhazsKQEAgLTM0 ODgsNiArMzUwNiwxMCBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0cmVlKQogCQkJ bGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKIAorCQljYXNlIFRfV2FpdFN0bXQ6CisJCQls ZXYgPSBMT0dTVE1UX0FMTDsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9MaXN0ZW5TdG10OgogCQkJ bGV2ID0gTE9HU1RNVF9BTEw7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3dhaXQuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iYTAyMmE1ZTg0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvd2FpdC5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHdhaXQuaAorICoJICBwcm90b3R5cGVzIGZvciBjb21tYW5kcy93YWl0 LmMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyNCwg UmVnZW50cyBvZiBQb3N0Z3Jlc1BSTworICoKKyAqIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3dhaXQu aAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFdBSVRfSAorI2RlZmluZSBX QUlUX0gKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1ZGUgInRjb3AvZGVzdC5oIgorCitl eHRlcm4gaW50IFdhaXRVdGlsaXR5KFhMb2dSZWNQdHIgbHNuLCBjb25zdCBmbG9hdDggZGVsYXkp OworZXh0ZXJuIFNpemUgV2FpdFNobWVtU2l6ZSh2b2lkKTsKK2V4dGVybiB2b2lkIFdhaXRTaG1l bUluaXQodm9pZCk7CitleHRlcm4gdm9pZCBXYWl0U2V0TGF0Y2goWExvZ1JlY1B0ciBjdXJfbHNu KTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldE1pbldhaXQodm9pZCk7CitleHRlcm4gZmxvYXQ4IFdh aXRUaW1lUmVzb2x2ZShDb25zdCAqdGltZSk7CitleHRlcm4gaW50IFdhaXRNYWluKFdhaXRTdG10 ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpOworCisjZW5kaWYgICAvKiBXQUlUX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCAyNGY1YzA2YmI2Li5lZDZhYzk2NjYwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0zNTIzLDYgKzM1MjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBUcmFuc2Fj dGlvblN0bXQKIAkvKiBmb3IgdHdvLXBoYXNlLWNvbW1pdCByZWxhdGVkIGNvbW1hbmRzICovCiAJ Y2hhcgkgICAqZ2lkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAlib29sCQlj aGFpbjsJCQkvKiBBTkQgQ0hBSU4gb3B0aW9uICovCisJTm9kZQkJKndhaXQ7CQkJLyogd2FpdCBs c24gY2xhdXNlICovCiAJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIAlp bnQJCQlsb2NhdGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2xvY2F0aW9uKTsKIH0gVHJh bnNhY3Rpb25TdG10OwpAQCAtNDA3NCw0ICs0MDc1LDE2IEBAIHR5cGVkZWYgc3RydWN0IERyb3BT dWJzY3JpcHRpb25TdG10CiAJRHJvcEJlaGF2aW9yIGJlaGF2aW9yOwkJLyogUkVTVFJJQ1Qgb3Ig Q0FTQ0FERSBiZWhhdmlvciAqLwogfSBEcm9wU3Vic2NyaXB0aW9uU3RtdDsKIAorLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoJCUFGVEVSIFN0YXRlbWVudCArIEFGVEVSIGNsYXVzZSBvZiBC RUdJTiBzdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVm IHN0cnVjdCBXYWl0U3RtdAoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqbHNuOwkJLyog TFNOICovCisJaW50CQkJZGVsYXk7CQkvKiBUSU1FT1VUICovCit9IFdhaXRTdG10OworCiAjZW5k aWYJCQkJCQkJLyogUEFSU0VOT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29w L2NtZHRhZ2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IDdmZGNl YzZkZDkuLjU2NzEzOTk2M2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCkBAIC0yMTcsMyArMjE3LDQg QEAgUEdfQ01EVEFHKENNRFRBR19UUlVOQ0FURV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKIFBHX0NNRFRBRyhDTURUQUdfVkFDVVVNLCAiVkFDVVVNIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfV0FJVCwgIkFGVEVSIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1 aWxkIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKaW5kZXggYzY3MjQ5NTAwZS4uOGRk OGRjM2Y4MCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIv c3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAgLTUwLDYgKzUwLDggQEAgdGVzdHMgKz0g ewogICAgICAgJ3QvMDM5X2VuZF9vZl93YWwucGwnLAogICAgICAgJ3QvMDQwX3N0YW5kYnlfZmFp bG92ZXJfc2xvdHNfc3luYy5wbCcsCiAgICAgICAndC8wNDFfY2hlY2twb2ludF9hdF9wcm9tb3Rl LnBsJywKKyAgICAgICd0LzA0Ml9iZWdpbl9hZnRlci5wbCcsCisgICAgICAndC8wNDNfYWZ0ZXIu cGwnLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0 Ml9iZWdpbl9hZnRlci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQyX2JlZ2luX2FmdGVyLnBs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJmODFjZjE0YmMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0Ml9iZWdpbl9hZnRlci5wbApAQCAt MCwwICsxLDg3IEBACisjIENoZWNrcyB3YWl0aW5nIGZvciBsc24gb24gc3RhbmRieSBBRlRFUgor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJ bml0aWFsaXplIHByaW1hcnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNvbWUgY29u dGVudCBhbmQgdGFrZSBhIGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygx LDEwKSBBUyBhIik7CitteSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2RlX3ByaW1h cnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWluZyBzdGFuZGJ5 IHdpdGggYSAxIHNlY29uZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2RlX3N0YW5kYnkg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRkZWxheSAg ICAgICAgPSAxOworJG5vZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5 LCAkYmFja3VwX25hbWUsCisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlfZGVs YXkgPSAnJHtkZWxheX1zJworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisKKyMgTWFr ZSBzdXJlIHRoYXQgQUZURVIgd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBt ZW1vcml6ZQorIyBwcmltYXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNO IG9uIHN0YW5kYnkuIFByb3ZlIHRoYXQgQUZURVIgaXMKKyMgYWJsZSB0byBzZXR1cCBhbiBpbmZp bml0ZSB3YWl0aW5nIGxvb3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2FpdCB0aW1lb3V0Lgor JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRf dGVzdCBWQUxVRVMgKGdlbmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkgJGxzbjEgPSAkbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9s c24oKSIpOworJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJCRUdJTiBBRlRF UiAnJGxzbjEnIik7Ciskbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlJPTExC QUNLIik7CisKKyMgR2V0IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUg aXQncyB0aGUgc2FtZSBhcyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxh eV9sc24oKSIpOworbXkgJGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2dlKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICck bHNuMSc6OnBnX2xzbikiKTsKK29rKCRjb21wYXJlX2xzbnMgZXEgInQiLCAic3RhbmRieSByZWFj aGVkIHRoZSBzYW1lIExTTiBhcyBwcmltYXJ5IEFGVEVSIik7CisKKworCisjPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorIyBUT0RPOiByZW1vdmUgdGhpcyB0ZXN0IGlmIHdlIHJlbW92ZSB0aGUgc3Rh bmRhbG9uZSAiQUZURVIiIGNvbW1hbmQKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFdlIG5l ZWQgdG8gY2hlY2sgdGhhdCBBRlRFUiB3b3JrcyBmaW5lIGluc2lkZSB0cmFuc2FjdGlvbnMuIEZv ciB0aGF0LCBsZXQncworIyBnZXQgdHdvIExTTnMgdGhhdCB3aWxsIGNvcnJlc3BvbmQgdG8gdHdv IGRpZmZlcmVudCBtYXggdmFsdWVzIGluIG91ciB0YWJsZS4KKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVTIChnZW5lcmF0 ZV9zZXJpZXMoMzEsIDQwKSkiKTsKK215ICRsc24zID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB3YWl0X3Rlc3QgVkFMVUVT IChnZW5lcmF0ZV9zZXJpZXMoNDEsIDUwKSkiKTsKK215ICRsc240ID0gJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCkiKTsKKwor IyBCZWZvcmUgc3RhcnRpbmcgdHJhbnNhY3Rpb24sIEFGVEVSIHdoaWNoIGVuc3VyZXMgYSBtYXgg dmFsdWUgb2YgNDAuCisjIEluc2lkZSB0aGUgdHJhbnNhY3Rpb24sIEFGVEVSIHRoYXQgZW5zdXJl cyBhIG1heCB2YWx1ZSBvZiA1MC4KKyMgRHVlIHRvIElTT0xBVElPTiBMRVZFTCBSRVBFQVRBQkxF IFJFQUQsIHdlIHNob3VsZCBOT1Qgc2VlIHRoZSBuZXcgbWF4IHZhbHVlLgorbXkgJHN0YW5kYnlf cmVzdWx0cyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlC RUdJTiBUUkFOU0FDVElPTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEIEFGVEVSICck bHNuMyc7CisJU0VMRUNUIG1heChhKSBGUk9NIHdhaXRfdGVzdDsKKwlCRUdJTiBBRlRFUiAnJGxz bjQnOworCVNFTEVDVCBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuKCk7CisJU0VMRUNUIG1heChhKSBG Uk9NIHdhaXRfdGVzdDsKKwlDT01NSVQ7CitdKTsKKworIyBNYWtlIHN1cmUgdGhhdCB3ZSBpbmRl ZWQgcmVhY2ggcHJpbWFyeSdzIGxhc3QgTFNOIGluc2lkZSB0aGUgdHJhbnNhY3Rpb24uCisjIEZv ciB0aGF0LCBjaGVjayB0aGF0IGNhbGxpbmcgcGdfbGFzdF93YWxfcmVwbGF5X2xzbiByZXR1cm5l ZCB0aGF0IExTTi4KK215ICRsYXN0X2xzbl9yZWFjaGVkID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAv JGxzbjQvOworb2soJGxhc3RfbHNuX3JlYWNoZWQsICJBRlRFUiB3b3JrcyBpbnNpZGUgYSB0cmFu c2FjdGlvbiIpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gZG9lc24ndCBicmVhayBhbmQg c2hvdyB1cyB0aGUgbmV3IG1heCB2YWx1ZSBhZnRlciBBRlRFUi4KKyMgRm9yIHRoYXQsIG1ha2Ug c3VyZSB0aGF0IHRoZSBvbGRlciBtYXggdmFsdWUgaXMgcmVwZWF0ZWQgdHdpY2UgaW4gdGhlIHJl c3VsdHMuCitteSAkY291bnQgPSAoKSA9ICRzdGFuZGJ5X3Jlc3VsdHMgPX4gLzQwL2c7Citvaygk Y291bnQgZXEgMiwgInRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCBkb2Vzbid0IGdldCBicm9r ZW4gZHVlIHRvIEFGVEVSIik7CisKKyRub2RlX3N0YW5kYnktPnN0b3A7Ciskbm9kZV9wcmltYXJ5 LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzA0M19hZnRlci5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDQzX2FmdGVyLnBsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFmZTI2ZDIxMjIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0M19hZnRlci5wbApAQCAtMCwwICsxLDk5IEBACisj IENoZWNrcyB3YWl0aW5nIGZvciBsc24gb24gc3RhbmRieSBBRlRFUgordXNlIHN0cmljdDsKK3Vz ZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBJbml0aWFsaXplIHByaW1h cnkgbm9kZQorbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncHJpbWFyeScpOworJG5vZGVfcHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEp OworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyMgQW5kIHNvbWUgY29udGVudCBhbmQgdGFrZSBh IGJhY2t1cAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB3YWl0X3Rlc3QgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7Citt eSAkYmFja3VwX25hbWUgPSAnbXlfYmFja3VwJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFj a3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0cmVhbWluZyBzdGFuZGJ5IHdpdGggYSAxIHNlY29u ZCBkZWxheSBmcm9tIHRoZSBiYWNrdXAKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKK215ICRkZWxheSAgICAgICAgPSAyOworJG5v ZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUs CisJaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCBxcVsKKwlyZWNvdmVyeV9taW5fYXBwbHlfZGVsYXkgPSAnJHtkZWxheX1z JworXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKworCisKKyMgTWFrZSBzdXJlIHRoYXQgQUZU RVIgd29ya3M6IGFkZCBuZXcgY29udGVudCB0byBwcmltYXJ5IGFuZCBtZW1vcml6ZQorIyBwcmlt YXJ5J3MgbmV3IExTTiwgdGhlbiB3YWl0IGZvciBwcmltYXJ5J3MgTFNOIG9uIHN0YW5kYnkuIFBy b3ZlIHRoYXQgQUZURVIgaXMKKyMgYWJsZSB0byBzZXR1cCBhbiBpbmZpbml0ZSB3YWl0aW5nIGxv b3AgYW5kIGV4aXQgaXQgaWYgZ2l2ZW4gbm8gd2FpdCB0aW1lb3V0LgorJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdl bmVyYXRlX3NlcmllcygxMSwgMjApKSIpOworbXkgJGxzbjEgPSAkbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVf c3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBRlRFUiAnJGxzbjEnIik7CisKKyMgR2V0 IHRoZSBjdXJyZW50IExTTiBvbiBzdGFuZGJ5IGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgc2FtZSBh cyBwcmltYXJ5J3MgTFNOCitteSAkbHNuX3N0YW5kYnkgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKSIpOworbXkg JGNvbXBhcmVfbHNucyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgcGdfbHNuX2dlKCckbHNuX3N0YW5kYnknOjpwZ19sc24sICckbHNuMSc6OnBnX2xzbiki KTsKK29rKCRjb21wYXJlX2xzbnMgZXEgInQiLCAic3RhbmRieSByZWFjaGVkIHRoZSBzYW1lIExT TiBhcyBwcmltYXJ5IEFGVEVSIik7CisKKworCisjIENoZWNrIHRoYXQgdGltZW91dHMgd29yayBv biB0aGVpciBvd24gYW5kIGxldCB1cyB3YWl0IGZvciBzcGVjaWZpZWQgdGltZSAoMXMpCitteSAk Y3VycmVudF90aW1lID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1Qgbm93KCkiKTsKK215ICRvbmVfc2Vjb25kID0gMTAwMDsgIyBpbiBtaWxsaXNlY29uZHMKK215 ICRzdGFydF90aW1lID0gdGltZSgpOworCisjIE5vdywgY2hlY2sgdGhhdCB0aW1lb3V0cyB3b3Jr IGFzIGV4cGVjdGVkIHdoZW4gd2FpdGluZyBmb3IgTFNOCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVf c2VyaWVzKDIxLCAzMCkpIik7CitteSAkbHNuMiA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpIik7CitteSAkcmVhY2hlZF9s c24gPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUZURVIgJyRsc24y JyBXSVRISU4gMSIpOworb2soJHJlYWNoZWRfbHNuIGVxICJmIiwgIkFGVEVSIGRvZXNuJ3QgcmVh Y2ggTFNOIGlmIGdpdmVuIHRvbyBsaXR0bGUgd2FpdCB0aW1lIik7CisKKworCisjIFdlIG5lZWQg dG8gY2hlY2sgdGhhdCBXQUlUIHdvcmtzIGZpbmUgaW5zaWRlIHRyYW5zYWN0aW9ucy4gRm9yIHRo YXQsIGxldCdzCisjIGdldCB0d28gTFNOcyB0aGF0IHdpbGwgY29ycmVzcG9uZCB0byB0d28gZGlm ZmVyZW50IG1heCB2YWx1ZXMgaW4gb3VyIHRhYmxlLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRlX3Nl cmllcygzMSwgNDApKSIpOworbXkgJGxzbjMgPSAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdl bmVyYXRlX3Nlcmllcyg0MSwgNTApKSIpOworbXkgJGxzbjQgPSAkbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKSIpOworCisjIEJl Zm9yZSBzdGFydGluZyB0cmFuc2FjdGlvbiwgQUZURVIgd2hpY2ggZW5zdXJlcyBhIG1heCB2YWx1 ZSBvZiA0MC4KKyMgSW5zaWRlIHRoZSB0cmFuc2FjdGlvbiwgQUZURVIgdGhhdCBlbnN1cmVzIGEg bWF4IHZhbHVlIG9mIDUwLgorIyBEdWUgdG8gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUgUkVB RCwgd2Ugc2hvdWxkIE5PVCBzZWUgdGhlIG5ldyBtYXggdmFsdWUuCitteSAkc3RhbmRieV9yZXN1 bHRzID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUFGVEVS ICckbHNuMyc7CisJQkVHSU4gVFJBTlNBQ1RJT04gSVNPTEFUSU9OIExFVkVMIFJFUEVBVEFCTEUg UkVBRDsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2FpdF90ZXN0OworCUFGVEVSICckbHNuNCc7CisJ U0VMRUNUIHBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTsKKwlTRUxFQ1QgbWF4KGEpIEZST00gd2Fp dF90ZXN0OworCUNPTU1JVDsKK10pOworCisjIE1ha2Ugc3VyZSB0aGF0IHdlIGluZGVlZCByZWFj aCBwcmltYXJ5J3MgbGFzdCBMU04gaW5zaWRlIHRoZSB0cmFuc2FjdGlvbi4KKyMgRm9yIHRoYXQs IGNoZWNrIHRoYXQgY2FsbGluZyBwZ19sYXN0X3dhbF9yZXBsYXlfbHNuIHJldHVybmVkIHRoYXQg TFNOLgorbXkgJGxhc3RfbHNuX3JlYWNoZWQgPSAkc3RhbmRieV9yZXN1bHRzID1+IC8kbHNuNC87 CitvaygkbGFzdF9sc25fcmVhY2hlZCwgIkFGVEVSIHdvcmtzIGluc2lkZSBhIHRyYW5zYWN0aW9u Iik7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBkb2Vzbid0IGJyZWFrIGFuZCBzaG93IHVz IHRoZSBuZXcgbWF4IHZhbHVlIGFmdGVyIEFGVEVSLgorIyBGb3IgdGhhdCwgbWFrZSBzdXJlIHRo YXQgdGhlIG9sZGVyIG1heCB2YWx1ZSBpcyByZXBlYXRlZCB0d2ljZSBpbiB0aGUgcmVzdWx0cy4K K215ICRjb3VudCA9ICgpID0gJHN0YW5kYnlfcmVzdWx0cyA9fiAvNDAvZzsKK29rKCRjb3VudCBl cSAyLCAidHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsIGRvZXNuJ3QgZ2V0IGJyb2tlbiBkdWUg dG8gQUZURVIiKTsKKworJG5vZGVfc3RhbmRieS0+c3RvcDsKKyRub2RlX3ByaW1hcnktPnN0b3A7 Citkb25lX3Rlc3RpbmcoKTsK --=_a3bf8cf416a17974078e822b81a2ddb9--