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.96) (envelope-from ) id 1vgR18-00CaHR-1m for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Jan 2026 17:20:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vgR17-000lSx-0O for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Jan 2026 17:20:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vgR16-000lSf-0J for pgsql-hackers@lists.postgresql.org; Thu, 15 Jan 2026 17:20:16 +0000 Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vgR12-000bAu-1o for pgsql-hackers@lists.postgresql.org; Thu, 15 Jan 2026 17:20:15 +0000 Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-38304020185so10421231fa.2 for ; Thu, 15 Jan 2026 09:20:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768497611; x=1769102411; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=C5UhE9b/85M+MLoBfBDVAAZOruYlCqOB5MtPARZVZrE=; b=MYKqGqaDHyYoYiKCjqOc/FtglZzaY4LPjUAp73LVffodlR+4ZjtD0V9oqngwNwUnSh ZGiHK0tfkKNd/vZFR2Tec3+tL7Tu+yQZZviR9j8htVWUFwJY9JIYq9tHvpQabkWxarSZ zSviGwBYkhAA9FXGfKss/i0kL+2heAimimqljZdd/idSFcCozWrgpCb1FLpOvXQ1Qwnz HYZ3XlOsDi1IkMfpNo5l3wIzcDBryEH12hUHLNsBef2bUVHA0mMcAAG67ae6M6aiP6iF YXqsjd917bTes63GaL8NSF/swXnvWucz9E+8xlPYnSqoyi9laH3v6ElVl37OO5LV7APC EPpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768497611; x=1769102411; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=C5UhE9b/85M+MLoBfBDVAAZOruYlCqOB5MtPARZVZrE=; b=rTJArhb5pJKSC6Z5jRcfWvdwnDAr94ECOFua4aOx2zDujznHE8lmG71tNoISyQpStn bKh1Lv+AUNpkCiBcyIZT9zpzpLu6tnfvwYwvQGz6Oofvn2UB6lLiT74MP72C3OzyfWWz NdAK9g5t3DwYYFvYiyfnQUqHdRlECfLmf8OtY+QzxKS7H0vnKS/tNK4mLN6Pk/j0cYr1 7miVeojVMnCArgF3xiGIta5P3DiLPW+CV5JDPmTcJpulmSFfyu5ghDG8KzLfNLud7W+V 8iVu0pCraK9vJXXfHnIGH7Of5X9f+U0QC3tI9JNmoVCkN9sqYW763IguL1EYfm09RZLy uW2A== X-Gm-Message-State: AOJu0YxA8CCgT4+lkWOObHMsG3xDHqxkHtBykVeXo/7oWA0bno444BKw UeIIkeAxwefONEeq3wWYMmxewe80VHrSFRMQOJYeoPxz+kwTMatJTmcRTzZe6pynqmX8hrUlZpP VPvkzFhebErjeteGaCD4pwWzX/gSE1JgPn9Ll+9U= X-Gm-Gg: AY/fxX5R7BD2bN/xGtmdSbhcg92FMmsxoyc/R9yhdOc4tOpuXaI2yoWqiV7BPA4Jbw8 PxHTP9KX6ikwpfoH1SVOjMfv3wafVLG+iQxC58faqLSBxyJntZxLnp2etiejMHgi3MsseQjAMDM tN10NsVzt8RrBc+OzZ5ioqajo7CXiv9E4bU+Vd2KyvHaTMKGLEh5/QnYMQxTd6oWoRD4h3sJjwS yIPFCSOG91bzQgIWH20J2C+LKNWr0ca+L4OwBNBKKR5F9PcjGmDFw45/OEOy4ZgykXkKe2M844M krqIfDVApPH0GVWtY8UEpkmN3NPFMBuplKZ4i+nbIdPBIQQGZyqjBNLS X-Received: by 2002:a05:651c:1442:b0:37a:75c6:b44 with SMTP id 38308e7fff4ca-383841489c2mr1271341fa.3.1768497609999; Thu, 15 Jan 2026 09:20:09 -0800 (PST) MIME-Version: 1.0 From: Mihail Nikalayeu Date: Thu, 15 Jan 2026 20:19:58 +0300 X-Gm-Features: AZwV_QihQ-icIVkflFeDHTKqwBzTIQBA5rWnSxvG1iCmYV9RQ_eHuVWRghA1H0k Message-ID: Subject: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: PostgreSQL Hackers Cc: Matthias van de Meent , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="000000000000d4a3fc0648706fee" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d4a3fc0648706fee Content-Type: multipart/alternative; boundary="000000000000d4a3fa0648706fec" --000000000000d4a3fa0648706fec Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, everyone! (added to CC involved persons based on history part and previous thread activity) This thread is an extraction of part of https://commitfest.postgresql.org/patch/4971/ (STIR) into a separate commitfest entry as was agreed in [0]. HISTORY In 2021 =C3=81lvaro proposed [1] and committed [2] the feature: VACUUM igno= res snapshots involved in concurrent indexing operations. This was a great feature in PG14. But in 2022 a bug related to the tuples missing in indexes was detected, and a little bit later explained by Andres [3]. As a result, the feature was reverted [4]. This patch set brings back part of it (first phase of CIC) using snapshot resetting technique. For the second phase - another solution is available in entry mentioned above. STRUCTURE It is based on Matthias' idea [5] - to just reset snapshots every so often during a concurrent index build. It may work only during the first scan (because we'll miss some tuples during validation scan with such an approach). Logic is simple =E2=80=93 since the index built by the first scan already m= isses a lot of tuples =E2=80=93 we may not worry to miss a few more =E2=80=93 the v= alidation phase is going to fix it anyway. Of course, it is not so simple in case of unique indexes, but still possible. Commits are: - Add stress tests for concurrent index builds This is a set of stress tests to ensure concurrent index operations are worked correctly. It easily detects the bug from 2022 (and other different things I met during the development, some were in master and already fixed - [6] and [7]). - Reset snapshots periodically in non-unique non-parallel concurrent index builds Apply this technique to the simplest case =E2=80=93 non-unique and non-para= llel. Snapshot is changed "between" pages. One possible place here to worry about =E2=80=93 to ensure xmin advanced we= need to call InvalidateCatalogSnapshot during each snapshot switch. So, theoretically it may cause some issues, but the table is locked to changes during the process. At least commit [2] (which ignored xmin of CIC backend) did the same thing in essence, actually. Another more "clear" option here - we may just extract a separate catalog snapshot horizon (one more field near xmin specially only for catalog snapshot), it seems to be a pretty straightforward change. - Support snapshot resets in parallel concurrent index builds Extend that technique to parallel builds. It is mostly about ensuring workers have an initial snapshot restored from the leader before the leader goes to reset it. - Support snapshot resets in concurrent builds of unique indexes The most tricky commit in the patch set =E2=80=93 apply that to unique inde= xes. Changing of snapshots may cause issues with validation of unique constraints. Currently, validation is done during the sorting of tuples, but that doesn't work with tuples read with different snapshots (some of them are dead already). To deal with it: - in case we see two identical tuples during tuplesort =E2=80=93 ignore if = some of them are dead according to SnapshotSelf, but fail if two are alive. It is not a required part, it is just mechanics for fail-fast behavior and may be removed or limited in spent resources. - to provide the guarantee =E2=80=93 during _bt_load compare the inserted i= ndex value with previously inserted. If they are equal =E2=80=93 make sure only = a single SnapshotSelf alive tuple exists in the whole equal "group" (it may include more than two tuples in general). Theoretically it may affect performance of _bt_load because of _bt_keep_natts(_fast) call for each tuple, but I was unable to notice any significant difference here. Best regards, Mikhail. [0]: https://www.postgresql.org/message-id/flat/CAEze2Wg6d2M8hop4uwdQXeH-YkOmEHy= qp83%2BaE7vEzKdmu7w-A%40mail.gmail.com#b5dbefccc537167bc8c1efe0ad063491 [1]: https://www.postgresql.org/message-id/flat/20210115142926.GA19300%40alvherr= e.pgsql#0988173cb0cf4b8eb710a6cdaa88fcac [2]: https://github.com/postgres/postgres/commit/d9d076222f5b94a85e0e318339cfc44= b8f26022d [3]: https://www.postgresql.org/message-id/flat/20220524190133.j6ee7zh4f5edt5je%= 40alap3.anarazel.de#1781408f40034c414ad6738140c118ef [4]: https://github.com/postgres/postgres/commit/e28bb885196916b0a3d898ae4f2be0e= 38108d81b [5]: https://www.postgresql.org/message-id/flat/CAEze2WgW6pj48xJhG_YLUE1QS%2Bn9Y= v0AZQwaWeb-r%2BX%3DHAxU_g%40mail.gmail.com#b3809c158de4481bb1b29894aaa63fae [6]: https://commitfest.postgresql.org/patch/5438/ [7]: https://commitfest.postgresql.org/patch/5160/ --000000000000d4a3fa0648706fec Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello, everyone!=C2=A0

(added to CC involved persons based on history part and previous thread a= ctivity)

This thread is an extraction of part of https://commitfest.postgresql.org/patch/4971/ (STIR) into = a separate commitfest entry as was agreed in [0].

HISTORY
=
In 2021 =C3=81lvaro proposed [1] and committed [2] the feature: VACUUM = ignores snapshots involved in concurrent indexing operations. This was a gr= eat feature in PG14.

But in 2022 a bug related to the tuples missin= g in indexes was detected, and a little bit later explained by Andres [3]. = As a result, the feature was reverted [4].

This=C2= =A0patch set brings back part of it (first phase of CIC) using snapshot=C2= =A0resetting=C2=A0technique.
For the second phase - another solut= ion is available=C2=A0in entry=C2=A0mentioned above.

STRUCTURE

It is based on Matthias' idea [5] - to just reset sna= pshots every so often during a concurrent index build. It may work only dur= ing the first scan (because we'll miss some tuples during validation sc= an with such an approach).
Logic is simple =E2=80=93 since the index bui= lt by the first scan already misses a lot of tuples =E2=80=93 we may not wo= rry to miss a few more =E2=80=93 the validation phase is going to fix it an= yway. Of course, it is not so simple in case of unique indexes, but still p= ossible.

Commits are:

-=C2=A0Add stress tests for concurrent index builds

This is a set of stress tests to ensure concurrent index operations are = worked correctly.
It easily detects the bug from 2022 (and other = different things I met during the development, some were in master and alre= ady fixed - [6] and [7]).

- Reset snapshots periodically in n= on-unique non-parallel concurrent index builds

Apply this technique = to the simplest case =E2=80=93 non-unique and non-parallel. Snapshot is cha= nged "between" pages.
One possible place here to worry about = =E2=80=93 to ensure xmin advanced we need to call InvalidateCatalogSnapshot= during each snapshot switch.
So, theoretically it may cause some issues= , but the table is locked to changes during the process. At least commit [2= ] (which ignored xmin of
CIC backend) did the same thing in essence, act= ually. Another more "clear" option here - we may just extract a s= eparate catalog snapshot horizon (one more field near xmin specially only f= or catalog snapshot), it seems to be a pretty straightforward change.
- Support snapshot resets in parallel concurrent index builds

Exte= nd that technique to parallel builds. It is mostly about ensuring workers h= ave an initial snapshot restored from the leader before the leader goes to = reset it.

- Support snapshot resets in concurrent builds of unique i= ndexes

The most tricky commit in the patch set =E2=80=93 apply that = to unique indexes. Changing of snapshots may cause issues with validation o= f unique constraints. Currently, validation is done during the sorting of t= uples, but that doesn't work with tuples read with different snapshots = (some of them are dead already).

To deal with it:<= br>- in case we see two identical tuples during tuplesort =E2=80=93 ignore = if some of them are dead according to SnapshotSelf, but fail if two are ali= ve. It is not a required part, it is just mechanics for fail-fast behavior = and may be removed or limited in spent resources.
- to provide the guara= ntee =E2=80=93 during _bt_load compare the inserted index value with previo= usly inserted. If they are equal =E2=80=93 make sure only a single Snapshot= Self alive tuple exists in the whole equal "group" (it may includ= e more than two tuples in general).

Theoretically it may affect perf= ormance of _bt_load because of _bt_keep_natts(_fast) call for each tuple, b= ut I was unable to notice any significant difference here.

Best rega= rds,
Mikhail.

[0]:=C2=A0https://www.postgresql.org/message-id/flat/CAEze2Wg6d2M8hop= 4uwdQXeH-YkOmEHyqp83%2BaE7vEzKdmu7w-A%40mail.gmail.com#b5dbefccc537167bc8c1= efe0ad063491
[1]: https://www.postgresql.o= rg/message-id/flat/20210115142926.GA19300%40alvherre.pgsql#0988173cb0cf4b8e= b710a6cdaa88fcac
[2]: https://github.com/postgres/postgres/commit/d9d0762= 22f5b94a85e0e318339cfc44b8f26022d
[3]: https://www.postgresql.org/message-id/flat/20220524190133.j6ee7zh4= f5edt5je%40alap3.anarazel.de#1781408f40034c414ad6738140c118ef
[4]: <= a href=3D"https://github.com/postgres/postgres/commit/e28bb885196916b0a3d89= 8ae4f2be0e38108d81b" rel=3D"noreferrer noreferrer" target=3D"_blank">https:= //github.com/postgres/postgres/commit/e28bb885196916b0a3d898ae4f2be0e38108d= 81b
[5]: https://www.postgresql.org/message-id/flat/CAEze2WgW6pj48xJhG_YLUE1QS%2Bn= 9Yv0AZQwaWeb-r%2BX%3DHAxU_g%40mail.gmail.com#b3809c158de4481bb1b29894aaa63f= ae

--000000000000d4a3fa0648706fec-- --000000000000d4a3fc0648706fee Content-Type: application/x-patch; name="v1-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v1-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkfl6o7z0 RnJvbSBmMDA2N2Y5YjVlM2RmZjY5YWM0MGIzZjkzYmU2NjhlNWI4NTU1Mjc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjEgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwoKVGhlc2UgdGVzdHMgdmVy aWZ5IHRoZSBiZWhhdmlvciBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCi0tLQogc3JjL2Jpbi9w Z19hbWNoZWNrL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZf Y2ljLnBsIHwgMjI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDIyNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NpYy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNv bi5idWlsZCBiL3NyYy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCA1OTJjZWY3NGVj Li41MWE2MmRjY2I3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQK KysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCkBAIC0yOCw2ICsyOCw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzAwM19jaGVjay5wbCcsCiAgICAgICAndC8wMDRfdmVyaWZ5X2hl YXBhbS5wbCcsCiAgICAgICAndC8wMDVfb3BjbGFzc19kYW1hZ2UucGwnLAorICAgICAgJ3QvMDA2 X2NpYy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVj ay90LzAwNl9jaWMucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjcwYjE4NTIxMmUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsCkBAIC0wLDAgKzEsMjI1IEBACisj IENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KworIyBUZXN0IFJFSU5ERVggQ09OQ1VSUkVOVExZIHdpdGggY29uY3VycmVudCBtb2RpZmljYXRp b25zIGFuZCBIT1QgdXBkYXRlcwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAn YWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworVGVzdDo6TW9yZS0+YnVpbGRlci0+dG9k b19zdGFydCgnZmlsZXN5c3RlbSBidWcnKQorICBpZiBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6 aGFzX3dhbF9yZWFkX2J1ZzsKKworbXkgKCRub2RlLCAkcmVzdWx0KTsKKworIworIyBUZXN0IHNl dC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3Qn KTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAor CSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRp bWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAn ZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21h aW50ZW5hbmNlX3dvcmtfbWVtID0gMzJNQicpOyAjIHRvIGF2b2lkIE9PTQorJG5vZGUtPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX2J1ZmZlcnMgPSAzMk1CJyk7ICMgdG8g YXZvaWQgT09NCiskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHEoQ1JFQVRFIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtleSwKKwkJCQkJCQkJYzEgbW9uZXkg ZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJCQkJCWMzIG1vbmV5IGRlZmF1bHQg MCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlhIGludDRbXSwgcCBwb2ludCkpKTsK KyMgdW5jb21tZW50IHRvIGZvcmNlIG5vbi1IT1QgLT4gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KTspKTsKKyMgY3JlYXRlIHNlcXVlbmNlCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEo Q1JFQVRFIFVOTE9HR0VEIFNFUVVFTkNFIGluX3Jvd19yZWJ1aWxkIFNUQVJUIDEgSU5DUkVNRU5U IDE7KSk7Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUIG5leHR2YWwoJ2lu X3Jvd19yZWJ1aWxkJyk7KSk7CisKKyMgQ3JlYXRlIGhlbHBlciBmdW5jdGlvbnMgZm9yIHByZWRp Y2F0ZSB0ZXN0cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBGVU5D VElPTiBwcmVkaWNhdGVfc3RhYmxlKCkgUkVUVVJOUyBib29sIElNTVVUQUJMRQorCUxBTkdVQUdF IHBscGdzcWwgQVMgJCQKKwlCRUdJTgorCQlFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCkn OworCQlSRVRVUk4gdHJ1ZTsKKwlFTkQ7ICQkOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX2NvbnN0KGludGVnZXIpIFJF VFVSTlMgYm9vbCBJTU1VVEFCTEUKKwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJ UkVUVVJOIE1PRCgkMSwgMikgPSAwOworCUVORDsgJCQ7CispKTsKKworIyBSdW4gQ0lDL1JJQyBp biBkaWZmZXJlbnQgb3B0aW9ucyBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdi ZW5jaCgKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9MTUgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0 IC0tdHJhbnNhY3Rpb25zPTEwMDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAor CVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFknLAorCXsKKwkJJ2NvbmN1cnJlbnRfb3BzJyA9PiBxKAorCQkJU0VU IGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOyAtLSB0aGlzIGlzIGJlY2F1c2UgcHJlZGljYXRl X3N0YWJsZSBpbXBsZW1lbnRhdGlvbgorCQkJU0VMRUNUIHBnX3RyeV9hZHZpc29yeV9sb2NrKDQy KTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxvY2sKKwkJCQlTRUxFQ1Qg bmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxnc2V0CisJCQkJXHNldCB2 YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgwLCA0KQorCQkJ CVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxf d29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJXGlmIDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0KTsKKwkJCQkJ XGVsaWYgOnZhcmlhbnQgPSAxCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIHByZWRpY2F0ZV9zdGFibGUoKTsKKwkJCQkJ XGVsaWYgOnZhcmlhbnQgPSAyCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19p ZHggT04gdGJsKGksIHVwZGF0ZWRfYXQpIFdIRVJFIE1PRChpLCAyKSA9IDA7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibChpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gNAorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibChwcmVkaWNhdGVfY29uc3QoaSkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDUKKwkJCQkJ CUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgcHJlZGljYXRlX2Nv bnN0KGkpLCB1cGRhdGVkX2F0KSBXSEVSRSBwcmVkaWNhdGVfY29uc3QoaSk7CisJCQkJCVxlbmRp ZgorCQkJCQlcc2xlZXAgMTAgbXMKKwkJCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKCduZXdfaWR4 JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CisJCQkJCVJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJ CQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVl LCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3 X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJ CVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEwMDAsIDEwMDAwMCkKKwkJCQlCRUdJTjsKKwkJ CQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygp KQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKTsK KwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5v dygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3co KTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCww LG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBu b3coKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAs MCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQg PSBub3coKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0p LDAsMCwwLG5vdygpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRf YXQgPSBub3coKTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVidWlsZCcsIDEpOworCQkJ CUNPTU1JVDsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9yIHVuaXF1 ZSBpbmRleCBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9kZS0+cGdiZW5jaCgKKwknLS1u by12YWN1dW0gLS1jbGllbnQ9MTUgLS1qb2JzPTQgLS1leGl0LW9uLWFib3J0IC0tdHJhbnNhY3Rp b25zPTEwMDAnLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1dLAor CSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgZm9yIHVuaXF1ZSBCVFJFRScsCisJeworCQknY29uY3VycmVudF9vcHNfdW5pcXVlX2lk eCcgPT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMg Z290bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jv d19yZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRv bSgwLCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNF VCAocGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJQ1JFQVRFIFVOSVFVRSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSk7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJ CQlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVl LCBjaGVja3VuaXF1ZSA9PiB0cnVlKTsKKwkJCQkJUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeDsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygn bmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOwor CQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCVxlbmRpZgorCQkJCVNF TEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5k b20oMSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVF UyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxub3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkg RE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5f cm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgorCQkpCisJfSk7CisKKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMg Zm9yIEdJTiB3aXRoIHVwc2VydHMKKyRub2RlLT5wZ2JlbmNoKAorCSctLW5vLXZhY3V1bSAtLWNs aWVudD0xNSAtLWpvYnM9NCAtLWV4aXQtb24tYWJvcnQgLS10cmFuc2FjdGlvbnM9MTAwMCcsCisJ MCwKKwlbcXJ7YWN0dWFsbHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQg b3BlcmF0aW9ucyB3aXRoIFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lO L0dJU1QvQlJJTi9IQVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfZ2luX2lkeCcg PT4gcSgKKwkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290 bG9jayBcZ3NldAorCQkJXGlmIDpnb3Rsb2NrCisJCQkJU0VMRUNUIG5leHR2YWwoJ2luX3Jvd19y ZWJ1aWxkJykgQVMgbGFzdF92YWx1ZSBcZ3NldAorCQkJCVxzZXQgcGFyYWxsZWxzIHJhbmRvbSgw LCA0KQorCQkJCVxpZiA6bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAo cGFyYWxsZWxfd29ya2Vycz06cGFyYWxsZWxzKTsKKwkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBHSU4gKGlhKTsKKwkJCQkJXHNsZWVwIDEwIG1zCisJ CQkJCVNFTEVDVCBnaW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJUkVJTkRFWCBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVNFTEVDVCBn aW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeDsKKwkJCQlcZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsK KwkJCVxlbHNlCisJCQkJXHNldCBudW0gcmFuZG9tKDEsIHBvd2VyKDEwLCByYW5kb20oMSwgNSkp KQorCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAs bm93KCkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5v dygpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYK KwkJKQorCX0pOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoVFJVTkNBVEUgVEFC TEUgdGJsOykpOworCisjIFJ1biBDSUMvUklDIGZvciBHSVNUL0JSSU4vSEFTSC9TUEdJU1QgaW5k ZXggY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cworJG5vZGUtPnBnYmVuY2goCisJJy0tbm8tdmFj dXVtIC0tY2xpZW50PTE1IC0tam9icz00IC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0x MDAwJywKKwkwLAorCVtxcnthY3R1YWxseSBwcm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29u Y3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJTkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZ IGZvciBHSU4vR0lTVC9CUklOL0hBU0gvU1BHSVNUJywKKwl7CisJCSdjb25jdXJyZW50X29wc19v dGhlcl9pZHgnID0+IHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRl Z2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFs KCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVs cyByYW5kb20oMCwgNCkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxF IHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxzZXQgdmFyaWFu dCByYW5kb20oMCwgMykKKwkJCQkJXGlmIDp2YXJpYW50ID0gMAorCQkJCQkJQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBHSVNUIChwKTsKKwkJCQkJXGVsaWYg OnZhcmlhbnQgPSAxCisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04g dGJsIFVTSU5HIEJSSU4gKHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDIKKwkJ CQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgSEFTSCAo dXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMworCQkJCQkJQ1JFQVRFIElOREVY IENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibCBVU0lORyBTUEdJU1QgKHApOworCQkJCQlcZW5k aWYKKwkJCQkJXHNsZWVwIDEwIG1zCisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5l d19pZHg7CisJCQkJCVxzbGVlcCAxMCBtcworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4OworCQkJCVxlbmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soNDIpOwor CQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20oMSwgcG93ZXIoMTAsIHJhbmRvbSgxLCA1KSkp CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6bnVtKSwwLDAsMCxu b3coKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRhdGVkX2F0ID0gbm93 KCk7CisJCQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCVxlbmRpZgor CQkpCisJfSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQotLSAKMi40My4wCgo= --000000000000d4a3fc0648706fee Content-Type: application/x-patch; name="v1-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v1-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkfl6o8d3 RnJvbSA1N2NjOTQwNmQ0Y2RlYzIyMjJlYTc0NGE1MmNlZWNmNTZjOWE1N2NlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxOTowMjozNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjEgNC80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IGJ1aWxk cyBvZiB1bmlxdWUKIGluZGV4ZXMKClByZXZpb3VzbHksIGNvbmN1cnJlbnQgYnVpbGRzIG9mIHVu aXF1ZSBpbmRleCB1c2VkIGEgZml4ZWQgc25hcHNob3QgZm9yIHRoZSBlbnRpcmUgc2NhbiB0byBl bnN1cmUgcHJvcGVyIHVuaXF1ZW5lc3MgY2hlY2tzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJp b2RpY2FsbHkgZHVyaW5nIGNvbmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3Rp bGwgbWFpbnRhaW5pbmcgdW5pcXVlbmVzcyBieToKLSBpZ25vcmluZyBTbmFwc2hvdFNlbGYgZGVh ZCB0dXBsZXMgZHVyaW5nIHVuaXF1ZW5lc3MgY2hlY2tzIGluIHR1cGxlc29ydCBhcyBub3QgYSBn dWFyYW50ZWUsIGJ1dCBhIGZhaWwtZmFzdCBtZWNoYW5pY3MKLSBhZGRpbmcgYSB1bmlxdWVuZXNz IGNoZWNrIGluIF9idF9sb2FkIHRoYXQgZGV0ZWN0cyBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgd2l0 aCB0aGUgc2FtZSBrZXkgdmFsdWVzIGFzIGEgZ3VhcmFudGVlIG9mIGNvcnJlY3RuZXNzCgpUdXBs ZXMgYXJlIFNuYXBzaG90U2VsZiB0ZXN0ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBlcXVhbCBpbmRl eCBrZXkgdmFsdWVzLCBvdGhlcndpc2UgX2J0X2xvYWQgd29ya3MgbGlrZSBiZWZvcmUuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgIDYgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAxOTUgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgICAgICAg fCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICAgICB8 ICAzMCArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgICAgfCAg NzEgKysrKystLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAgICAgICAgfCAg MzEgKystCiAxNCBmaWxlcyBjaGFuZ2VkLCAyOTAgaW5zZXJ0aW9ucygrKSwgOTYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NS4uODI5ZGFk MTE5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCkBAIC0zODYsMTIgKzM4NiwxMiBA QCBoYXZlIHRoZSBIT1Qtc2FmZXR5IHByb3BlcnR5IGVuZm9yY2VkIGJlZm9yZSB3ZSBzdGFydCB0 byBidWlsZCB0aGUgbmV3CiBpbmRleC4KIAogQWZ0ZXIgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25z IHdoaWNoIGhhZCB0aGUgdGFibGUgb3Blbiwgd2UgYnVpbGQgdGhlIGluZGV4Ci1mb3IgYWxsIHJv d3MgdGhhdCBhcmUgdmFsaWQgaW4gYSBmcmVzaCBzbmFwc2hvdC4gIEFueSB0dXBsZXMgdmlzaWJs ZSBpbiB0aGUKLXNuYXBzaG90IHdpbGwgaGF2ZSBvbmx5IHZhbGlkIGZvcndhcmQtZ3Jvd2luZyBI T1QgY2hhaW5zLiAgKFRoZXkgbWlnaHQgaGF2ZQotb2xkZXIgSE9UIHVwZGF0ZXMgYmVoaW5kIHRo ZW0gd2hpY2ggYXJlIGJyb2tlbiwgYnV0IHRoaXMgaXMgT0sgZm9yIHRoZSBzYW1lCi1yZWFzb24g aXQncyBPSyBpbiBhIHJlZ3VsYXIgaW5kZXggYnVpbGQuKSAgQXMgYWJvdmUsIHdlIHBvaW50IHRo ZSBpbmRleAotZW50cnkgYXQgdGhlIHJvb3Qgb2YgdGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdl IHVzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlCi1saXZlIHR1cGxlLgorZm9yIGFsbCByb3dzIHRo YXQgYXJlIHZhbGlkIGluIGEgZnJlc2ggc25hcHNob3QsIHdoaWNoIGlzIHVwZGF0ZWQgZXZlcnkg c28KK29mdGVuLiBBbnkgdHVwbGVzIHZpc2libGUgaW4gdGhlIHNuYXBzaG90IHdpbGwgaGF2ZSBv bmx5IHZhbGlkIGZvcndhcmQtZ3Jvd2luZworSE9UIGNoYWlucy4gIChUaGV5IG1pZ2h0IGhhdmUg b2xkZXIgSE9UIHVwZGF0ZXMgYmVoaW5kIHRoZW0gd2hpY2ggYXJlIGJyb2tlbiwKK2J1dCB0aGlz IGlzIE9LIGZvciB0aGUgc2FtZSByZWFzb24gaXQncyBPSyBpbiBhIHJlZ3VsYXIgaW5kZXggYnVp bGQuKQorQXMgYWJvdmUsIHdlIHBvaW50IHRoZSBpbmRleCBlbnRyeSBhdCB0aGUgcm9vdCBvZiB0 aGUgSE9ULXVwZGF0ZSBjaGFpbiBidXQgd2UKK3VzZSB0aGUga2V5IHZhbHVlIGZyb20gdGhlIGxp dmUgdHVwbGUuCiAKIFdlIG1hcmsgdGhlIGluZGV4IG9wZW4gZm9yIGluc2VydHMgKGJ1dCBzdGls bCBub3QgcmVhZHkgZm9yIHJlYWRzKSB0aGVuCiB3ZSBhZ2FpbiB3YWl0IGZvciB0cmFuc2FjdGlv bnMgd2hpY2ggaGF2ZSB0aGUgdGFibGUgb3Blbi4gIFRoZW4gd2UgdGFrZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYzUxNTZkNTM1YS4uOTQ3Y2Q3ZmJjMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjM2LDE1ICsx MjM2LDE1IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxh dGlvbiwKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZ X0RFQUQgdHVwbGVzKS4gSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIG9yIGR1cmluZyBib290 c3RyYXAsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QKIAkgKiBhbmQgaW5kZXggd2hh dGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMgcmVz ZXQKLQkgKiBldmVyeSBzbyBvZnRlbiAoaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4KS4KKwkg KiBldmVyeSBzbyBvZnRlbi4KIAkgKi8KIAlPbGRlc3RYbWluID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiAKIAkvKgotCSAqIEZvciB1bmlxdWUgaW5kZXggd2UgbmVlZCBjb25zaXN0ZW50IHNuYXBz aG90IGZvciB0aGUgd2hvbGUgc2Nhbi4KKwkgKiBGb3IgY29uY3VycmVudCBidWlsZHMgb2Ygbm9u LXN5c3RlbSBpbmRleGVzLCB3ZSBtYXkgd2FudCB0byBwZXJpb2RpY2FsbHkKKwkgKiByZXNldCBz bmFwc2hvdHMgdG8gYWxsb3cgdmFjdXVtIHRvIGNsZWFuIHVwIHR1cGxlcy4KIAkgKi8KIAlyZXNl dF9zbmFwc2hvdHMgPSBpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgJiYKLQkJCQkJICAhaW5kZXhJ bmZvLT5paV9VbmlxdWUgJiYKIAkJCQkJICAhaXNfc3lzdGVtX2NhdGFsb2c7IC8qIGp1c3QgZm9y IHRoZSBjYXNlICovCiAKIAkvKiBva2F5IHRvIGlnbm9yZSBsYXp5IFZBQ1VVTXMgaGVyZSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRkZWR1cC5jCmluZGV4IDk1YmUwYjE3OTMuLmJmOGM5NjEy MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKQEAgLTE0OCw3ICsxNDgsNyBA QCBfYnRfZGVkdXBfcGFzcyhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEluZGV4VHVwbGUgbmV3 aXRlbSwgU2l6ZSBuZXdpdGVtc3osCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhzdGF0ZSwg aXR1cCwgb2ZmbnVtKTsKIAkJfQogCQllbHNlIGlmIChzdGF0ZS0+ZGVkdXBsaWNhdGUgJiYKLQkJ CQkgX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5rZXlhdHRz ICYmCisJCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFzZSwgaXR1cCwgTlVM TCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0YXRlLCBpdHVwKSkK IAkJewogCQkJLyoKQEAgLTM3NCw3ICszNzQsNyBAQCBfYnRfYm90dG9tdXBkZWxfcGFzcyhSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkvKiBpdHVwIHN0YXJ0 cyBmaXJzdCBwZW5kaW5nIGludGVydmFsICovCiAJCQlfYnRfZGVkdXBfc3RhcnRfcGVuZGluZyhz dGF0ZSwgaXR1cCwgb2ZmbnVtKTsKIAkJfQotCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0 KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXApID4gbmtleWF0dHMgJiYKKwkJZWxzZSBpZiAoX2J0X2tl ZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzICYm CiAJCQkJIF9idF9kZWR1cF9zYXZlX2h0aWQoc3RhdGUsIGl0dXApKQogCQl7CiAJCQkvKiBUdXBs ZSBpcyBlcXVhbDsganVzdCBhZGRlZCBpdHMgVElEcyB0byBwZW5kaW5nIGludGVydmFsICovCkBA IC03ODcsMTIgKzc4NywxMiBAQCBfYnRfZG9fc2luZ2xldmFsKFJlbGF0aW9uIHJlbCwgUGFnZSBw YWdlLCBCVERlZHVwU3RhdGUgc3RhdGUsCiAJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBt aW5vZmYpOwogCWl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKTsK IAotCWlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBua2V5YXR0 cykKKwlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0sIGl0dXAsIE5VTEwpID4g bmtleWF0dHMpCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIFBhZ2VHZXRNYXhP ZmZzZXROdW1iZXIocGFnZSkpOwogCQlpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBh Z2UsIGl0ZW1pZCk7CiAKLQkJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdpdGVtLCBp dHVwKSA+IG5rZXlhdHRzKQorCQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIG5ld2l0ZW0s IGl0dXAsIE5VTEwpID4gbmtleWF0dHMpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cmVhZHBhZ2UuYwppbmRleCAyYmExY2E2NjAyLi5jNGMyNzhlNzc3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jCkBAIC02MjMsNyArNjIz LDcgQEAgX2J0X3NldF9zdGFydGlrZXkoSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3Rh dGUgKnBzdGF0ZSkKIAlsYXN0dHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBzdGF0ZS0+ cGFnZSwgaWlkKTsKIAogCS8qIERldGVybWluZSB0aGUgZmlyc3QgYXR0cmlidXRlIHdob3NlIHZh bHVlcyBjaGFuZ2Ugb24gY2FsbGVyJ3MgcGFnZSAqLwotCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBf YnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0dXApOworCWZpcnN0Y2hhbmdp bmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0dXAsIE5V TEwpOwogCiAJZm9yICg7IHN0YXJ0aWtleSA8IHNvLT5udW1iZXJPZktleXM7IHN0YXJ0aWtleSsr KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggZDU1ZTIwNTA3MS4uZjhk YjE4OGMzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTg0LDYgKzg0LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgQlRTcG9vbAogCVJlbGF0aW9uCWluZGV4OwogCWJvb2wJCWlzdW5p cXVlOwogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29sCQl1bmlxdWVfZGVhZF9pZ25v cmVkOwogfSBCVFNwb29sOwogCiAvKgpAQCAtMTAyLDYgKzEwMyw3IEBAIHR5cGVkZWYgc3RydWN0 IEJUU2hhcmVkCiAJT2lkCQkJaW5kZXhyZWxpZDsKIAlib29sCQlpc3VuaXF1ZTsKIAlib29sCQlu dWxsc19ub3RfZGlzdGluY3Q7CisJYm9vbAkJdW5pcXVlX2RlYWRfaWdub3JlZDsKIAlib29sCQlp c2NvbmN1cnJlbnQ7CiAJaW50CQkJc2NhbnR1cGxlc29ydHN0YXRlczsKIApAQCAtMjA0LDE1ICsy MDYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRMZWFkZXIKICAqLwogdHlwZWRlZiBzdHJ1Y3QgQlRC dWlsZFN0YXRlCiB7Ci0JYm9vbAkJaXN1bmlxdWU7Ci0JYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0 OwogCWJvb2wJCWhhdmVkZWFkOwogCVJlbGF0aW9uCWhlYXA7CiAJQlRTcG9vbCAgICAqc3Bvb2w7 CiAKIAkvKgotCSAqIHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBpbmRleCBpcyBhIHVu aXF1ZSBpbmRleC4gRGVhZCB0dXBsZXMgYXJlCi0JICogcHV0IGludG8gc3Bvb2wyIGluc3RlYWQg b2Ygc3Bvb2wgaW4gb3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KKwkgKiBzcG9vbDIg aXMgbmVlZGVkIG9ubHkgd2hlbiB0aGUgaW5kZXggaXMgYSB1bmlxdWUgaW5kZXggYW5kIGJ1aWx0 IG5vbi1jb25jdXJyZW50bHkuCisJICogRGVhZCB0dXBsZXMgYXJlIHB1dCBpbnRvIHNwb29sMiBp bnN0ZWFkIG9mIHNwb29sIGluIG9yZGVyIHRvIGF2b2lkIHVuaXF1ZW5lc3MgY2hlY2suCiAJICov CiAJQlRTcG9vbCAgICAqc3Bvb2wyOwogCWRvdWJsZQkJaW5kdHVwbGVzOwpAQCAtMjU5LDcgKzI1 OSw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lkIF9idF9zcG9vbGRlc3Ryb3koQlRTcG9vbCAqYnRz cG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRzcG9vbCwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICpzZWxmLAogCQkJCQkgIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvbnN0IGJv b2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cyk7CitzdGF0aWMgdm9pZCBf YnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlz Y29uY3VycmVudCk7CiBzdGF0aWMgdm9pZCBfYnRfYnVpbGRfY2FsbGJhY2soUmVsYXRpb24gaW5k ZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0gKnZhbHVlcywKIAkJCQkJCQkgICBib29sICppc251 bGwsIGJvb2wgdHVwbGVJc0FsaXZlLCB2b2lkICpzdGF0ZSk7CiBzdGF0aWMgQnVsa1dyaXRlQnVm ZmVyIF9idF9ibG5ld3BhZ2UoQlRXcml0ZVN0YXRlICp3c3RhdGUsIHVpbnQzMiBsZXZlbCk7CkBA IC0zMDQsOCArMzA0LDYgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgkJCQkJCQkvKiBC VFJFRV9CVUlMRF9TVEFUUyAqLwogCi0JYnVpbGRzdGF0ZS5pc3VuaXF1ZSA9IGluZGV4SW5mby0+ aWlfVW5pcXVlOwotCWJ1aWxkc3RhdGUubnVsbHNfbm90X2Rpc3RpbmN0ID0gaW5kZXhJbmZvLT5p aV9OdWxsc05vdERpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWls ZHN0YXRlLmhlYXAgPSBoZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBOVUxMOwpAQCAtMzIyLDIw ICszMjAsMjAgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJ bmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsKIAog CXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0YXRl LCBpbmRleEluZm8pOwotCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4 SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK KwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKgogCSAqIEZpbmlzaCB0aGUgYnVpbGQgYnkgKDEpIGNv bXBsZXRpbmcgdGhlIHNvcnQgb2YgdGhlIHNwb29sIGZpbGUsICgyKQogCSAqIGluc2VydGluZyB0 aGUgc29ydGVkIHR1cGxlcyBpbnRvIGJ0cmVlIHBhZ2VzIGFuZCAoMykgYnVpbGRpbmcgdGhlIHVw cGVyCiAJICogbGV2ZWxzLiAgRmluYWxseSwgaXQgbWF5IGFsc28gYmUgbmVjZXNzYXJ5IHRvIGVu ZCB1c2Ugb2YgcGFyYWxsZWxpc20uCiAJICovCi0JX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNw b29sLCBidWlsZHN0YXRlLnNwb29sMiwgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmIGluZGV4SW5m by0+aWlfQ29uY3VycmVudCk7CisJX2J0X2xlYWZidWlsZChidWlsZHN0YXRlLnNwb29sLCBidWls ZHN0YXRlLnNwb29sMiwgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0 cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nw b29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIp CiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KCFpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25j dXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJlc3Vs dCA9IHBhbGxvY19vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAKQEAgLTM4Miw2ICszODAsMTEg QEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLAogCWJ0c3Bvb2wtPmluZGV4ID0gaW5kZXg7CiAJYnRzcG9v bC0+aXN1bmlxdWUgPSBpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAlidHNwb29sLT5udWxsc19ub3Rf ZGlzdGluY3QgPSBpbmRleEluZm8tPmlpX051bGxzTm90RGlzdGluY3Q7CisJLyoKKwkgKiBXZSBu ZWVkIHRvIGlnbm9yZSBkZWFkIHR1cGxlcyBmb3IgdW5pcXVlIGNoZWNrcyBpbiBjYXNlIG9mIGNv bmN1cnJlbnQgYnVpbGQuCisJICogSXQgaXMgcmVxdWlyZWQgYmVjYXVzZSBvZiBwZXJpb2RpYyBy ZXNldCBvZiBzbmFwc2hvdC4KKwkgKi8KKwlidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkID0g aW5kZXhJbmZvLT5paV9Db25jdXJyZW50ICYmIGluZGV4SW5mby0+aWlfVW5pcXVlOwogCiAJLyog U2F2ZSBhcyBwcmltYXJ5IHNwb29sICovCiAJYnVpbGRzdGF0ZS0+c3Bvb2wgPSBidHNwb29sOwpA QCAtNDMwLDggKzQzMyw5IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiB0aGUgdXNlIG9mIHBh cmFsbGVsaXNtIG9yIGFueSBvdGhlciBmYWN0b3IuCiAJICovCiAJYnVpbGRzdGF0ZS0+c3Bvb2wt PnNvcnRzdGF0ZSA9Ci0JCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShoZWFwLCBpbmRleCwg YnVpbGRzdGF0ZS0+aXN1bmlxdWUsCi0JCQkJCQkJCQlidWlsZHN0YXRlLT5udWxsc19ub3RfZGlz dGluY3QsCisJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShoZWFwLCBpbmRleCwgYnRzcG9v bC0+aXN1bmlxdWUsCisJCQkJCQkJCQlidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3QsCisJCQkJ CQkJCQlidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkLAogCQkJCQkJCQkJbWFpbnRlbmFuY2Vf d29ya19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQlUVVBMRVNPUlRfTk9ORSk7CiAKQEAgLTQz OSw4ICs0NDMsMTIgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCSAqIElmIGJ1aWxkaW5nIGEgdW5p cXVlIGluZGV4LCBwdXQgZGVhZCB0dXBsZXMgaW4gYSBzZWNvbmQgc3Bvb2wgdG8ga2VlcAogCSAq IHRoZW0gb3V0IG9mIHRoZSB1bmlxdWVuZXNzIGNoZWNrLiAgV2UgZXhwZWN0IHRoYXQgdGhlIHNl Y29uZCBzcG9vbCAoZm9yCiAJICogZGVhZCB0dXBsZXMpIHdvbid0IGdldCB2ZXJ5IGZ1bGwsIHNv IHdlIGdpdmUgaXQgb25seSB3b3JrX21lbS4KKwkgKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVu dCBidWlsZCBkZWFkIHR1cGxlcyBkbyBub3QgbmVlZCB0byBiZSBwdXQgaW50byBpbmRleAorCSAq IHNpbmNlIHdlIHdhaXQgZm9yIGFsbCBzbmFwc2hvdHMgb2xkZXIgdGhhbiByZWZlcmVuY2Ugc25h cHNob3QgZHVyaW5nIHRoZQorCSAqIHZhbGlkYXRpb24gcGhhc2UuCiAJICovCi0JaWYgKGluZGV4 SW5mby0+aWlfVW5pcXVlKQorCWlmIChpbmRleEluZm8tPmlpX1VuaXF1ZSAmJiAhaW5kZXhJbmZv LT5paV9Db25jdXJyZW50KQogCXsKIAkJQlRTcG9vbCAgICAqYnRzcG9vbDIgPSBwYWxsb2MwX29i amVjdChCVFNwb29sKTsKIAkJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTIgPSBOVUxMOwpAQCAt NDcxLDcgKzQ3OSw3IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJICogZnVsbCwgc28gd2UgZ2l2 ZSBpdCBvbmx5IHdvcmtfbWVtCiAJCSAqLwogCQlidWlsZHN0YXRlLT5zcG9vbDItPnNvcnRzdGF0 ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGZhbHNlLCBm YWxzZSwgd29ya19tZW0sCisJCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5k ZXgsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHdvcmtfbWVtLAogCQkJCQkJCQkJCWNvb3JkaW5hdGUy LCBUVVBMRVNPUlRfTk9ORSk7CiAJfQogCkBAIC00ODQsNyArNDkyLDcgQEAgX2J0X3Nwb29sc19o ZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWls ZHN0YXRlLAogCQlyZWx0dXBsZXMgPSBfYnRfcGFyYWxsZWxfaGVhcHNjYW4oYnVpbGRzdGF0ZSwK IAkJCQkJCQkJCQkgICZpbmRleEluZm8tPmlpX0Jyb2tlbkhvdENoYWluKTsKIAlJbnZhbGlkYXRl Q2F0YWxvZ1NuYXBzaG90KCk7Ci0JQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwg aW5kZXhJbmZvLT5paV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVzcyB0YXJn ZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAtNTQwLDcg KzU0OCw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBjb25zdCBJdGVtUG9pbnRlckRh dGEgKnNlbGYsIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvCiAgKiBjcmVhdGUgYW4gZW50aXJlIGJ0 cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29sLCBC VFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCitfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIGlzY29uY3VycmVudCkKIHsK IAlCVFdyaXRlU3RhdGUgd3N0YXRlOwogCkBAIC01NjIsNyArNTcwLDcgQEAgX2J0X2xlYWZidWls ZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hv dHMpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfUEVSRk9STVNPUlRfMik7CiAJCXR1 cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29ydHN0YXRlKTsKIAl9Ci0JQXNzZXJ0KCFy ZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwor CUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXdzdGF0ZS5oZWFwID0gYnRzcG9vbC0+aGVhcDsKIAl3c3RhdGUuaW5kZXggPSBi dHNwb29sLT5pbmRleDsKQEAgLTU3Niw3ICs1ODQsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wg KmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyLCBib29sIHJlc2V0X3NuYXBzaG90cykKIAogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAog CQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKLQlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJQXNz ZXJ0KCFpc2NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OwogCV9idF9sb2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTE1Mywx MyArMTE2MSwxMTggQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCVNvcnRTdXBwb3J0IHNvcnRLZXlzOwogCWludDY0 CQl0dXBsZXNfZG9uZSA9IDA7CiAJYm9vbAkJZGVkdXBsaWNhdGU7CisJYm9vbAkJZmFpbF9vbl9h bGl2ZV9kdXBsaWNhdGU7CiAKIAl3c3RhdGUtPmJ1bGtzdGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9y ZWwod3N0YXRlLT5pbmRleCwgTUFJTl9GT1JLTlVNKTsKIAogCWRlZHVwbGljYXRlID0gd3N0YXRl LT5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgJiYgIWJ0c3Bvb2wtPmlzdW5pcXVlICYmCiAJCUJUR2V0 RGVkdXBsaWNhdGVJdGVtcyh3c3RhdGUtPmluZGV4KTsKKwkvKgorCSAqIFRoZSB1bmlxdWVfZGVh ZF9pZ25vcmVkIGRvZXMgbm90IGd1YXJhbnRlZSBhYnNlbmNlIG9mIG11bHRpcGxlIGFsaXZlCisJ ICogdHVwbGVzIHdpdGggc2FtZSB2YWx1ZXMgZXhpc3RzIGluIHRoZSBzcG9vbC4gU3VjaCB0aGlu ZyBtYXkgaGFwcGVuIGlmCisJICogYWxpdmUgdHVwbGVzIGFyZSBsb2NhdGVkIGJldHdlZW4gYSBm ZXcgZGVhZCB0dXBsZXMsIGxpa2UgdGhpczogYWRkZGEuCisJICovCisJZmFpbF9vbl9hbGl2ZV9k dXBsaWNhdGUgPSBidHNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCi0JaWYgKG1lcmdlKQor CWlmIChmYWlsX29uX2FsaXZlX2R1cGxpY2F0ZSkKKwl7CisJCWJvb2wJc2Vlbl9hbGl2ZSA9IGZh bHNlLAorCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCUluZGV4VHVwbGUgcHJldiA9IE5VTEw7 CisJCVR1cGxlVGFibGVTbG90IAkJKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVs YXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCQkJICAgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSk7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKmZldGNoID0gdGFibGVfaW5k ZXhfZmV0Y2hfYmVnaW4od3N0YXRlLT5oZWFwKTsKKworCQlBc3NlcnQoYnRzcG9vbC0+aXN1bmlx dWUpOworCQlBc3NlcnQoIWJ0c3Bvb2wyKTsKKworCQl3aGlsZSAoKGl0dXAgPSB0dXBsZXNvcnRf Z2V0aW5kZXh0dXBsZShidHNwb29sLT5zb3J0c3RhdGUsIHRydWUpKSAhPSBOVUxMKQorCQl7CisJ CQlib29sCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkvKiBXaGVuIHdlIHNlZSBmaXJzdCB0 dXBsZSwgY3JlYXRlIGZpcnN0IGluZGV4IHBhZ2UgKi8KKwkJCWlmIChzdGF0ZSA9PSBOVUxMKQor CQkJCXN0YXRlID0gX2J0X3BhZ2VzdGF0ZSh3c3RhdGUsIDApOworCisJCQlpZiAocHJldiAhPSBO VUxMKSAvKiBpZiBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICovCisJCQl7CisJCQkJYm9vbAloYXNf bnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4sIC8qIGp1c3QgdG8gcGFzcyBzb21ldGhp bmcgKi8KKwkJCQkJCWlnbm9yZWQsICAvKiBqdXN0IHRvIHBhc3Mgc29tZXRoaW5nICovCisJCQkJ CQlub3dfYWxpdmU7CisJCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKKworCQkJCS8qIGlmIHRoaXMg dHVwbGVzIGVxdWFsIHRvIHByZXZpb3VzIG9uZT8gKi8KKwkJCQlpZiAod3N0YXRlLT5pbnNrZXkt PmFsbGVxdWFsaW1hZ2UpCisJCQkJCXR1cGxlc19lcXVhbCA9IF9idF9rZWVwX25hdHRzX2Zhc3Qo d3N0YXRlLT5pbmRleCwgcHJldiwgaXR1cCwgJmhhc19udWxscykgPiBrZXlzejsKKwkJCQllbHNl CisJCQkJCXR1cGxlc19lcXVhbCA9IF9idF9rZWVwX25hdHRzKHdzdGF0ZS0+aW5kZXgsIHByZXYs IGl0dXAsIHdzdGF0ZS0+aW5za2V5LCAmaGFzX251bGxzKSA+IGtleXN6OworCisJCQkJLyogaGFu ZGxlIG51bGwgdmFsdWVzIGNvcnJlY3RseSAqLworCQkJCWlmIChoYXNfbnVsbHMgJiYgIWJ0c3Bv b2wtPm51bGxzX25vdF9kaXN0aW5jdCkKKwkJCQkJdHVwbGVzX2VxdWFsID0gZmFsc2U7CisKKwkJ CQlpZiAodHVwbGVzX2VxdWFsKQorCQkJCXsKKwkJCQkJLyogY2hlY2sgcHJldmlvdXMgdHVwbGUg aWYgbm90IHlldCAqLworCQkJCQlpZiAoIXByZXZfdGVzdGVkKQorCQkJCQl7CisJCQkJCQljYWxs X2FnYWluID0gZmFsc2U7CisJCQkJCQl0aWQgPSBwcmV2LT50X3RpZDsKKwkJCQkJCXNlZW5fYWxp dmUgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShmZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBz bG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOworCQkJCQkJcHJldl90ZXN0ZWQgPSB0cnVlOwor CQkJCQl9CisKKwkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQl0aWQgPSBpdHVwLT50X3Rp ZDsKKwkJCQkJbm93X2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoZmV0Y2gsICZ0aWQs IFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25vcmVkKTsKKworCQkJCQkvKiBh cmUgbXVsdGlwbGUgYWxpdmUgdHVwbGVzIGRldGVjdGVkIGluIGVxdWFsIGdyb3VwPyAqLworCQkJ CQlpZiAoc2Vlbl9hbGl2ZSAmJiBub3dfYWxpdmUpCisJCQkJCXsKKwkJCQkJCWNoYXIgKmtleV9k ZXNjOworCQkJCQkJVHVwbGVEZXNjIHR1cERlcyA9IFJlbGF0aW9uR2V0RGVzY3Iod3N0YXRlLT5p bmRleCk7CisJCQkJCQlib29sIGlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCQkJCQlEYXR1bSB2 YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCisJCQkJCQlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg dHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7CisKKwkJCQkJCWtleV9kZXNjID0gQnVpbGRJbmRleFZh bHVlRGVzY3JpcHRpb24od3N0YXRlLT5pbmRleCwgdmFsdWVzLCBpc251bGwpOworCisJCQkJCQkv KiBrZWVwIHRoaXMgbWVzc2FnZSBpbiBzeW5jIHdpdGggdGhlIHNhbWUgaW4gY29tcGFyZXR1cF9p bmRleF9idHJlZV90aWVicmVhayAqLworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTklRVUVfVklPTEFUSU9OKSwKKwkJCQkJCQkJCQllcnJtc2coImNvdWxk IG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwiJXNcIiIsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHdzdGF0ZS0+aW5kZXgpKSwKKwkJCQkJCQkJCQlrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCQkJCQkJCQll cnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJCQkJCQkJCWVycnRhYmxlY29u c3RyYWludCh3c3RhdGUtPmhlYXAsCisJCQkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHdzdGF0ZS0+aW5kZXgpKSkpOworCQkJCQl9CisJCQkJCXNlZW5fYWxpdmUgfD0gbm93 X2FsaXZlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCF0dXBsZXNfZXF1YWwpCisJCQl7CisJCQkJ c2Vlbl9hbGl2ZSA9IGZhbHNlOworCQkJCXByZXZfdGVzdGVkID0gZmFsc2U7CisJCQl9CisKKwkJ CV9idF9idWlsZGFkZCh3c3RhdGUsIHN0YXRlLCBpdHVwLCAwKTsKKwkJCWlmIChwcmV2KSBwZnJl ZShwcmV2KTsKKwkJCXByZXYgPSBDb3B5SW5kZXhUdXBsZShpdHVwKTsKKworCQkJLyogUmVwb3J0 IHByb2dyZXNzICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NS RUFURUlEWF9UVVBMRVNfRE9ORSwKKwkJCQkJCQkJCQkgKyt0dXBsZXNfZG9uZSk7CisJCX0KKwkJ aWYgKHByZXYpIHBmcmVlKHByZXYpOworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNs b3QpOworCQl0YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gpOworCQlBc3NlcnQoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCX0KKwllbHNlIGlmIChtZXJnZSkKIAl7CiAJ CS8qCiAJCSAqIEFub3RoZXIgQlRTcG9vbCBmb3IgZGVhZCB0dXBsZXMgZXhpc3RzLiBOb3cgd2Ug aGF2ZSB0byBtZXJnZQpAQCAtMTMxOSw3ICsxNDMyLDcgQEAgX2J0X2xvYWQoQlRXcml0ZVN0YXRl ICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCQkJCQkJCQkJ CUludmFsaWRPZmZzZXROdW1iZXIpOwogCQkJfQogCQkJZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNf ZmFzdCh3c3RhdGUtPmluZGV4LCBkc3RhdGUtPmJhc2UsCi0JCQkJCQkJCQkJIGl0dXApID4ga2V5 c3ogJiYKKwkJCQkJCQkJCQkgaXR1cCwgTlVMTCkgPiBrZXlzeiAmJgogCQkJCQkgX2J0X2RlZHVw X3NhdmVfaHRpZChkc3RhdGUsIGl0dXApKQogCQkJewogCQkJCS8qCkBAIC0xNDE2LDcgKzE1Mjks NiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJv b2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CiAJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90ID0gdHJ1ZTsKLQlib29sCQlyZXNldF9zbmFwc2hvdDsKIAlpbnQJCQlxdWVyeWxlbjsK IAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzQsMjEgKzE1NDYs MTIgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBp c2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCiAJc2NhbnR1cGxlc29ydHN0YXRlcyA9IGxlYWRl cnBhcnRpY2lwYXRlcyA/IHJlcXVlc3QgKyAxIDogcmVxdWVzdDsKIAotICAgIC8qCi0JICogRm9y IGNvbmN1cnJlbnQgbm9uLXVuaXF1ZSBpbmRleCBidWlsZHMsIHdlIGNhbiBwZXJpb2RpY2FsbHkg cmVzZXQgc25hcHNob3RzCi0JICogdG8gYWxsb3cgdGhlIHhtaW4gaG9yaXpvbiB0byBhZHZhbmNl LiBUaGlzIGlzIHNhZmUgc2luY2UgdGhlc2UgYnVpbGRzIGRvbid0Ci0JICogcmVxdWlyZSBhIGNv bnNpc3RlbnQgdmlldyBhY3Jvc3MgdGhlIGVudGlyZSBzY2FuLiBVbmlxdWUgaW5kZXhlcyBzdGls bCBuZWVkCi0JICogYSBzdGFibGUgc25hcHNob3QgdG8gcHJvcGVybHkgZW5mb3JjZSB1bmlxdWVu ZXNzIGNvbnN0cmFpbnRzLgotICAgICAqLwotCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50 ICYmICFidHNwb29sLT5pc3VuaXF1ZTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0 aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBT bmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3Vy IG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNF TlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBh IHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNj b3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlvZGlj YWxseSBpbgotCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KKwkgKiBsaXZlIGFjY29yZGlu ZyB0byB0aGF0LCB3aGlsZSB0aGF0IHNuYXBzaG90IG1heSBiZSByZXNldCBwZXJpb2RpY2FsbHku CiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewpAQCAtMTQ1NiwxNiArMTU1OSwxNiBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCX0KLQllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkK KwllbHNlCiAJeworCQkvKgorCQkgKiBGb3IgY29uY3VycmVudCBpbmRleCBidWlsZHMsIHdlIGNh biBwZXJpb2RpY2FsbHkgcmVzZXQgc25hcHNob3RzIHRvIGFsbG93CisJCSAqIHRoZSB4bWluIGhv cml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1aWxkcyBkb24ndAor CQkgKiByZXF1aXJlIGEgY29uc2lzdGVudCB2aWV3IGFjcm9zcyB0aGUgZW50aXJlIHNjYW4uCisJ CSAqLwogCQlzbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsKIAkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJfQotCWVsc2UKLQl7Ci0JCXNuYXBzaG90ID0g UmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCQlQdXNoQWN0aXZl U25hcHNob3Qoc25hcHNob3QpOwotCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3Vy IG93biBQQVJBTExFTF9LRVlfQlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNTM1LDYg KzE2MzgsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBi b29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRzaGFyZWQtPmluZGV4cmVsaWQgPSBS ZWxhdGlvbkdldFJlbGlkKGJ0c3Bvb2wtPmluZGV4KTsKIAlidHNoYXJlZC0+aXN1bmlxdWUgPSBi dHNwb29sLT5pc3VuaXF1ZTsKIAlidHNoYXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRzcG9v bC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkID0g YnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAlidHNoYXJlZC0+aXNjb25jdXJyZW50ID0g aXNjb25jdXJyZW50OwogCWJ0c2hhcmVkLT5zY2FudHVwbGVzb3J0c3RhdGVzID0gc2NhbnR1cGxl c29ydHN0YXRlczsKIAlidHNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQo KTsKQEAgLTE1NDksNyArMTY1Myw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUg KmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZShidHNwb29sLT5oZWFwLAogCQkJCQkJCQkgIFBhcmFsbGVsVGFi bGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKSwKIAkJCQkJCQkJICBzbmFwc2hvdCwKLQkJCQkJ CQkJICByZXNldF9zbmFwc2hvdCk7CisJCQkJCQkJCSAgaXNjb25jdXJyZW50KTsKIAogCS8qCiAJ ICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBmb3Igd2hpY2ggd2UgcmVz ZXJ2ZWQgc3BhY2UuCkBAIC0xNjI5LDcgKzE3MzMsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRC dWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJ ICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1aWxkIHNuYXBzaG90cyBhcmUgZ29pbmcgdG8gYmUg cmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqIFdhaXQgdW50aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQg aW5pdGlhbCBzbmFwc2hvdC4KIAkgKi8KLQlpZiAocmVzZXRfc25hcHNob3QpCisJaWYgKGlzY29u Y3VycmVudCkKIAkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOwog CiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCkBAIC0xNjQwLDEzICsxNzQ0LDEzIEBA IF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25j dXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxh dW5jaGVkIHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBm YWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCWlmICgh cmVzZXRfc25hcHNob3QpCisJaWYgKCFpc2NvbmN1cnJlbnQpCiAJCVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hv dCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKLQlBc3NlcnQoIXJlc2V0X3NuYXBzaG90fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOworCUFzc2VydCghaXNjb25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKIH0KIAogLyoKQEAgLTE3NDYsNiArMTg1MCw3IEBAIF9idF9sZWFk ZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFk ZXJ3b3JrZXItPmluZGV4ID0gYnVpbGRzdGF0ZS0+c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtl ci0+aXN1bmlxdWUgPSBidWlsZHN0YXRlLT5zcG9vbC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2Vy LT5udWxsc19ub3RfZGlzdGluY3QgPSBidWlsZHN0YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3Rp bmN0OworCWxlYWRlcndvcmtlci0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNw b29sLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2ws IGlmIHJlcXVpcmVkICovCiAJaWYgKCFidGxlYWRlci0+YnRzaGFyZWQtPmlzdW5pcXVlKQpAQCAt MTg0OSwxMSArMTk1NCwxMiBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAq c2VnLCBzaG1fdG9jICp0b2MpCiAJYnRzcG9vbC0+aW5kZXggPSBpbmRleFJlbDsKIAlidHNwb29s LT5pc3VuaXF1ZSA9IGJ0c2hhcmVkLT5pc3VuaXF1ZTsKIAlidHNwb29sLT5udWxsc19ub3RfZGlz dGluY3QgPSBidHNoYXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWJ0c3Bvb2wtPnVuaXF1ZV9k ZWFkX2lnbm9yZWQgPSBidHNoYXJlZC0+dW5pcXVlX2RlYWRfaWdub3JlZDsKIAogCS8qIExvb2sg dXAgc2hhcmVkIHN0YXRlIHByaXZhdGUgdG8gdHVwbGVzb3J0LmMgKi8KIAlzaGFyZWRzb3J0ID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfVFVQTEVTT1JULCBmYWxzZSk7CiAJdHVw bGVzb3J0X2F0dGFjaF9zaGFyZWQoc2hhcmVkc29ydCwgc2VnKTsKLQlpZiAoIWJ0c2hhcmVkLT5p c3VuaXF1ZSkKKwlpZiAoIWJ0c2hhcmVkLT5pc3VuaXF1ZSB8fCBidHNoYXJlZC0+aXNjb25jdXJy ZW50KQogCXsKIAkJYnRzcG9vbDIgPSBOVUxMOwogCQlzaGFyZWRzb3J0MiA9IE5VTEw7CkBAIC0x OTMzLDYgKzIwMzksNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aW5kZXgsCiAJ CQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPmlzdW5pcXVlLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5u dWxsc19ub3RfZGlzdGluY3QsCisJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2ln bm9yZWQsCiAJCQkJCQkJCQkJCQkJIHNvcnRtZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkJ IFRVUExFU09SVF9OT05FKTsKIApAQCAtMTk1NSwxNCArMjA2MiwxMiBAQCBfYnRfcGFyYWxsZWxf c2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJY29v cmRpbmF0ZTItPm5QYXJ0aWNpcGFudHMgPSAtMTsKIAkJY29vcmRpbmF0ZTItPnNoYXJlZHNvcnQg PSBzaGFyZWRzb3J0MjsKIAkJYnRzcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVn aW5faW5kZXhfYnRyZWUoYnRzcG9vbC0+aGVhcCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxz ZSwKKwkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29s LT5pbmRleCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkJCQlNaW4oc29ydG1lbSwgd29y a19tZW0pLCBjb29yZGluYXRlMiwKIAkJCQkJCQkJCQlmYWxzZSk7CiAJfQogCiAJLyogRmlsbCBp biBidWlsZHN0YXRlIGZvciBfYnRfYnVpbGRfY2FsbGJhY2soKSAqLwotCWJ1aWxkc3RhdGUuaXN1 bmlxdWUgPSBidHNoYXJlZC0+aXN1bmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGlu Y3QgPSBidHNoYXJlZC0+bnVsbHNfbm90X2Rpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQg PSBmYWxzZTsKIAlidWlsZHN0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCWJ1aWxkc3RhdGUu c3Bvb2wgPSBidHNwb29sOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzcGxpdGxvYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmlu ZGV4IGRlOWVjYTNjOGIuLmIxNzRmYjhkM2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0c3BsaXRsb2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNwbGl0bG9jLmMKQEAgLTY4OCw3ICs2ODgsNyBAQCBfYnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRT cGxpdERhdGEgKnN0YXRlLCBPZmZzZXROdW1iZXIgbWF4b2ZmLAogCXsKIAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChzdGF0ZS0+b3JpZ3BhZ2UsIG1heG9mZik7CiAJCXR1cCA9IChJbmRleFR1cGxl KSBQYWdlR2V0SXRlbShzdGF0ZS0+b3JpZ3BhZ2UsIGl0ZW1pZCk7Ci0JCWtlZXBuYXR0cyA9IF9i dF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3aXRlbSk7CisJCWtl ZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+bmV3 aXRlbSwgTlVMTCk7CiAKIAkJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5hdHRzIDw9IG5rZXlh dHRzKQogCQl7CkBAIC03MTksNyArNzE5LDcgQEAgX2J0X2FmdGVybmV3aXRlbW9mZihGaW5kU3Bs aXREYXRhICpzdGF0ZSwgT2Zmc2V0TnVtYmVyIG1heG9mZiwKIAkJIV9idF9hZGphY2VudGh0aWQo JnR1cC0+dF90aWQsICZzdGF0ZS0+bmV3aXRlbS0+dF90aWQpKQogCQlyZXR1cm4gZmFsc2U7CiAJ LyogQ2hlY2sgc2FtZSBjb25kaXRpb25zIGFzIHJpZ2h0bW9zdCBpdGVtIGNhc2UsIHRvbyAqLwot CWtlZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgdHVwLCBzdGF0ZS0+ bmV3aXRlbSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0 dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAogCWlmIChrZWVwbmF0dHMgPiAxICYmIGtlZXBu YXR0cyA8PSBua2V5YXR0cykKIAl7CkBAIC05NjgsNyArOTY4LDcgQEAgX2J0X3N0cmF0ZWd5KEZp bmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwKIAkgKiBhdm9pZCBhcHBl bmRpbmcgYSBoZWFwIFRJRCBpbiBuZXcgaGlnaCBrZXksIHdlJ3JlIGRvbmUuICBGaW5pc2ggc3Bs aXQKIAkgKiB3aXRoIGRlZmF1bHQgc3RyYXRlZ3kgYW5kIGluaXRpYWwgc3BsaXQgaW50ZXJ2YWwu CiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWws IGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNf ZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0LCBOVUxMKTsKIAlpZiAocGVyZmVj dHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCXJldHVybiBwZXJmZWN0cGVuYWx0eTsKIApAQCAt OTg5LDcgKzk4OSw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJICogSWYgcGFnZSBpcyBlbnRpcmVseSBmdWxsIG9mIGR1cGxpY2F0 ZXMsIGEgc2luZ2xlIHZhbHVlIHN0cmF0ZWd5IHNwbGl0CiAJICogd2lsbCBiZSBwZXJmb3JtZWQu CiAJICovCi0JcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWws IGxlZnRtb3N0LCByaWdodG1vc3QpOworCXBlcmZlY3RwZW5hbHR5ID0gX2J0X2tlZXBfbmF0dHNf ZmFzdChzdGF0ZS0+cmVsLCBsZWZ0bW9zdCwgcmlnaHRtb3N0LCBOVUxMKTsKIAlpZiAocGVyZmVj dHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJewogCQkqc3RyYXRlZ3kgPSBTUExJVF9NQU5ZX0RV UExJQ0FURVM7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0 YSAqc3RhdGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlk KHN0YXRlLT5vcmlncGFnZSwgUF9ISUtFWSk7CiAJCWhpa2V5ID0gKEluZGV4VHVwbGUpIFBhZ2VH ZXRJdGVtKHN0YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKIAkJcGVyZmVjdHBlbmFsdHkgPSBfYnRf a2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIGhpa2V5LAotCQkJCQkJCQkJCQkgc3RhdGUtPm5l d2l0ZW0pOworCQkJCQkJCQkJCQkgc3RhdGUtPm5ld2l0ZW0sIE5VTEwpOwogCQlpZiAocGVyZmVj dHBlbmFsdHkgPD0gaW5kbmtleWF0dHMpCiAJCQkqc3RyYXRlZ3kgPSBTUExJVF9TSU5HTEVfVkFM VUU7CiAJCWVsc2UKQEAgLTExNTAsNyArMTE1MCw3IEBAIF9idF9zcGxpdF9wZW5hbHR5KEZpbmRT cGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpzcGxpdCkKIAlsYXN0bGVmdCA9IF9idF9zcGxp dF9sYXN0bGVmdChzdGF0ZSwgc3BsaXQpOwogCWZpcnN0cmlnaHQgPSBfYnRfc3BsaXRfZmlyc3Ry aWdodChzdGF0ZSwgc3BsaXQpOwogCi0JcmV0dXJuIF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUt PnJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQpOworCXJldHVybiBfYnRfa2VlcF9uYXR0c19mYXN0 KHN0YXRlLT5yZWwsIGxhc3RsZWZ0LCBmaXJzdHJpZ2h0LCBOVUxMKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwppbmRleCA1YzUwZjBkZDFiLi4xMzI2ZDBmZGJiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0zMCw5ICszMCw2IEBACiAKIAog c3RhdGljIGludAlfYnRfY29tcGFyZV9pbnQoY29uc3Qgdm9pZCAqdmEsIGNvbnN0IHZvaWQgKnZi KTsKLXN0YXRpYyBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxh c3RsZWZ0LAotCQkJCQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNjYW5JbnNlcnQgaXR1 cF9rZXkpOwotCiAKIC8qCiAgKiBfYnRfbWtzY2Fua2V5CkBAIC03MTMsNyArNzEwLDcgQEAgX2J0 X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBm aXJzdHJpZ2h0LAogCUFzc2VydCghQlRyZWVUdXBsZUlzUGl2b3QobGFzdGxlZnQpICYmICFCVHJl ZVR1cGxlSXNQaXZvdChmaXJzdHJpZ2h0KSk7CiAKIAkvKiBEZXRlcm1pbmUgaG93IG1hbnkgYXR0 cmlidXRlcyBtdXN0IGJlIGtlcHQgaW4gdHJ1bmNhdGVkIHR1cGxlICovCi0Ja2VlcG5hdHRzID0g X2J0X2tlZXBfbmF0dHMocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXkpOworCWtl ZXBuYXR0cyA9IF9idF9rZWVwX25hdHRzKHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIGl0dXBf a2V5LCBOVUxMKTsKIAogI2lmZGVmIERFQlVHX05PX1RSVU5DQVRFCiAJLyogRm9yY2UgdHJ1bmNh dGlvbiB0byBiZSBpbmVmZmVjdGl2ZSBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLwpAQCAtODMxLDE3 ICs4MjgsMjQgQEAgX2J0X3RydW5jYXRlKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVm dCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogLyoKICAqIF9idF9rZWVwX25hdHRzIC0gaG93IG1h bnkga2V5IGF0dHJpYnV0ZXMgdG8ga2VlcCB3aGVuIHRydW5jYXRpbmcuCiAgKgorICogVGhpcyBp cyBleHBvcnRlZCB0byBiZSB1c2VkIGFzIGNvbXBhcmlzb24gZnVuY3Rpb24gZHVyaW5nIGNvbmN1 cnJlbnQKKyAqIHVuaXF1ZSBpbmRleCBidWlsZCBpbiBjYXNlIF9idF9rZWVwX25hdHRzX2Zhc3Qg aXMgbm90IHN1aXRhYmxlIGJlY2F1c2UKKyAqIGNvbGxhdGlvbiBpcyBub3QgImFsbGVxdWFsaW1h Z2UiL2RlZHVwbGljYXRpb24tc2FmZS4KKyAqCiAgKiBDYWxsZXIgcHJvdmlkZXMgdHdvIHR1cGxl cyB0aGF0IGVuY2xvc2UgYSBzcGxpdCBwb2ludC4gIENhbGxlcidzIGluc2VydGlvbgogICogc2Nh bmtleSBpcyB1c2VkIHRvIGNvbXBhcmUgdGhlIHR1cGxlczsgdGhlIHNjYW5rZXkncyBhcmd1bWVu dCB2YWx1ZXMgYXJlCiAgKiBub3QgY29uc2lkZXJlZCBoZXJlLgogICoKKyAqIGhhc251bGxzIHZh bHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2YgYW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4K KyAqCiAgKiBUaGlzIGNhbiByZXR1cm4gYSBudW1iZXIgb2YgYXR0cmlidXRlcyB0aGF0IGlzIG9u ZSBncmVhdGVyIHRoYW4gdGhlCiAgKiBudW1iZXIgb2Yga2V5IGF0dHJpYnV0ZXMgZm9yIHRoZSBp bmRleCByZWxhdGlvbi4gIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlCiAgKiBjYWxsZXIgbXVzdCB1 c2UgYSBoZWFwIFRJRCBhcyBhIHVuaXF1ZS1pZmllciBpbiBuZXcgcGl2b3QgdHVwbGUuCiAgKi8K LXN0YXRpYyBpbnQKK2ludAogX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxl IGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCi0JCQkgICBCVFNjYW5JbnNlcnQgaXR1 cF9rZXkpCisJCQkgICBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCisJCQkgICBib29sICpoYXNudWxs cykKIHsKIAlpbnQJCQlua2V5YXR0cyA9IEluZGV4UmVsYXRpb25HZXROdW1iZXJPZktleUF0dHJp YnV0ZXMocmVsKTsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7 CkBAIC04NjcsNiArODcxLDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1 cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAKIAkJZGF0dW0xID0gaW5kZXhf Z2V0YXR0cihsYXN0bGVmdCwgYXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIg PSBpbmRleF9nZXRhdHRyKGZpcnN0cmlnaHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsK KwkJaWYgKGhhc251bGxzKQorCQkJKmhhc251bGxzIHw9IGlzTnVsbDEgfCBpc051bGwyOwogCiAJ CWlmIChpc051bGwxICE9IGlzTnVsbDIpCiAJCQlicmVhazsKQEAgLTg4Niw3ICs4OTIsNyBAQCBf YnRfa2VlcF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVw bGUgZmlyc3RyaWdodCwKIAkgKiBleHBlY3RlZCBpbiBhbiBhbGxlcXVhbGltYWdlIGluZGV4Lgog CSAqLwogCUFzc2VydCghaXR1cF9rZXktPmFsbGVxdWFsaW1hZ2UgfHwKLQkJICAga2VlcG5hdHRz ID09IF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBsYXN0bGVmdCwgZmlyc3RyaWdodCkpOworCQkg ICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIGxhc3RsZWZ0LCBmaXJzdHJp Z2h0LCBOVUxMKSk7CiAKIAlyZXR1cm4ga2VlcG5hdHRzOwogfQpAQCAtODk3LDcgKzkwMyw4IEBA IF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhU dXBsZSBmaXJzdHJpZ2h0LAogICogVGhpcyBpcyBleHBvcnRlZCBzbyB0aGF0IGEgY2FuZGlkYXRl IHNwbGl0IHBvaW50IGNhbiBoYXZlIGl0cyBlZmZlY3Qgb24KICAqIHN1ZmZpeCB0cnVuY2F0aW9u IGluZXhwZW5zaXZlbHkgZXZhbHVhdGVkIGFoZWFkIG9mIHRpbWUgd2hlbiBmaW5kaW5nIGEKICAq IHNwbGl0IGxvY2F0aW9uLiAgQSBuYWl2ZSBiaXR3aXNlIGFwcHJvYWNoIHRvIGRhdHVtIGNvbXBh cmlzb25zIGlzIHVzZWQgdG8KLSAqIHNhdmUgY3ljbGVzLgorICogc2F2ZSBjeWNsZXMuIEFsc28s IGl0IG1heSBiZSB1c2VkIGFzIGNvbXBhcmlzb24gZnVuY3Rpb24gZHVyaW5nIGNvbmN1cnJlbnQK KyAqIGJ1aWxkIG9mIHVuaXF1ZSBpbmRleC4KICAqCiAgKiBUaGUgYXBwcm9hY2ggdGFrZW4gaGVy ZSB1c3VhbGx5IHByb3ZpZGVzIHRoZSBzYW1lIGFuc3dlciBhcyBfYnRfa2VlcF9uYXR0cwogICog d2lsbCAoZm9yIHRoZSBzYW1lIHBhaXIgb2YgdHVwbGVzIGZyb20gYSBoZWFwa2V5c3BhY2UgaW5k ZXgpLCBzaW5jZSB0aGUKQEAgLTkwNiw2ICs5MTMsOCBAQCBfYnRfa2VlcF9uYXR0cyhSZWxhdGlv biByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKICAqICJl cXVhbCBpbWFnZSIgY29sdW1ucywgcm91dGluZSBpcyBndWFyYW50ZWVkIHRvIGdpdmUgdGhlIHNh bWUgcmVzdWx0IGFzCiAgKiBfYnRfa2VlcF9uYXR0cyB3b3VsZC4KICAqCisgKiBoYXNudWxscyB2 YWx1ZSBzZXQgdG8gdHJ1ZSBpbiBjYXNlIG9mIGFueSBudWxsIGNvbHVtbiBpbiBhbnkgdHVwbGUu CisgKgogICogQ2FsbGVycyBjYW4gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGF0dHJpYnV0ZXMgY29u c2lkZXJlZCBlcXVhbCBoZXJlIGFyZQogICogZGVmaW5pdGVseSBhbHNvIGVxdWFsIGFjY29yZGlu ZyB0byBfYnRfa2VlcF9uYXR0cywgZXZlbiB3aGVuIHRoZSBpbmRleCB1c2VzCiAgKiBhbiBvcGNs YXNzIG9yIGNvbGxhdGlvbiB0aGF0IGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlv bi1zYWZlLgpAQCAtOTE0LDcgKzkyMyw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogbW9yZSBiYWxh bmNlZCBzcGxpdCBwb2ludC4KICAqLwogaW50Ci1fYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9u IHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KQorX2J0X2tl ZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVw bGUgZmlyc3RyaWdodCwKKwkJCQkJYm9vbCAqaGFzbnVsbHMpCiB7CiAJVHVwbGVEZXNjCWl0dXBk ZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwogCWludAkJCWtleXN6ID0gSW5kZXhSZWxhdGlv bkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwpAQCAtOTMxLDYgKzk0MSw4IEBAIF9idF9r ZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1 cGxlIGZpcnN0cmlnaHQpCiAKIAkJZGF0dW0xID0gaW5kZXhfZ2V0YXR0cihsYXN0bGVmdCwgYXR0 bnVtLCBpdHVwZGVzYywgJmlzTnVsbDEpOwogCQlkYXR1bTIgPSBpbmRleF9nZXRhdHRyKGZpcnN0 cmlnaHQsIGF0dG51bSwgaXR1cGRlc2MsICZpc051bGwyKTsKKwkJaWYgKGhhc251bGxzKQorCQkJ Kmhhc251bGxzIHw9IGlzTnVsbDEgfCBpc051bGwyOwogCQlhdHQgPSBUdXBsZURlc2NDb21wYWN0 QXR0cihpdHVwZGVzYywgYXR0bnVtIC0gMSk7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYwppbmRleCBiNTQ5MjFhZDU0Li44ZGRlZjA4NThmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRl eC5jCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhl YXBSZWxhdGlvbklkLAogCWluZGV4X2J1aWxkKGhlYXBSZWwsIGluZGV4UmVsYXRpb24sIGluZGV4 SW5mbywgZmFsc2UsIHRydWUpOwogCiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFz c2VydChpbmRleEluZm8tPmlpX1VuaXF1ZSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsK IAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5kZXggZnVuY3Rp b25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CkBAIC0zMzIyLDkg KzMzMjIsOSBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAq IGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdp dGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRv IHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhlcm1vcmUs IGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9y IHRoZQotICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0 aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdh dGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNldCBTT19S RVNFVF9TTkFQU0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNuYXBzaG90 IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gIGZvciB0aGF0 IGlzIHRvCisgKiBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgogICoKICAqIE5l eHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5vdCAiaW5kaXN2 YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5kIHN0YXJ0IGEg dGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5k ZXggNjdlMjA3MjIwZC4uMmM1YjE5YjM5MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAg LTE3MDEsOCArMTcwMSw4IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBj aGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBs ZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICog V2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2lu ZyBzaW5nbGUgb3IKLQkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJl IHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KKwkgKiBXZSBidWlsZCB0aGUgaW5kZXggdXNp bmcgYWxsIHR1cGxlcyB0aGF0IGFyZSB2aXNpYmxlIHVzaW5nIG11bHRpcGxlCisJICogcmVmcmVz aGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCiAJ ICogdGhlc2UgdHVwbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmRleCwgc2luY2Ug YW55IHVwZGF0ZXMgbWFkZQogCSAqIGJ5IHRyYW5zYWN0aW9ucyB0aGF0IGRpZG4ndCBrbm93IGFi b3V0IHRoZSBpbmRleCBhcmUgbm93IGNvbW1pdHRlZCBvcgogCSAqIHJvbGxlZCBiYWNrLiAgVGh1 cywgZWFjaCB2aXNpYmxlIHR1cGxlIGlzIGVpdGhlciB0aGUgZW5kIG9mIGl0cwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IGUzZTExNDIxMjYuLmFiN2Nh YjBlODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFu dHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAg LTI0LDYgKzI0LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFjY2Vz cy9odHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVkZSAi YWNjZXNzL3JlbHNjYW4uaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCkBAIC0zMyw2ICszNSw3IEBACiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIAogLyogc29ydC10 eXBlIGNvZGVzIGZvciBzb3J0X19zdGFydCBwcm9iZXMgKi8KQEAgLTEzNCw2ICsxMzcsNyBAQCB0 eXBlZGVmIHN0cnVjdAogCiAJYm9vbAkJZW5mb3JjZVVuaXF1ZTsJLyogY29tcGxhaW4gaWYgd2Ug ZmluZCBkdXBsaWNhdGUgdHVwbGVzICovCiAJYm9vbAkJdW5pcXVlTnVsbHNOb3REaXN0aW5jdDsg LyogdW5pcXVlIGNvbnN0cmFpbnQgbnVsbCB0cmVhdG1lbnQgKi8KKwlib29sCQl1bmlxdWVEZWFk SWdub3JlZDsgLyogaWdub3JlIGRlYWQgdHVwbGVzIGluIHVuaXF1ZSBjaGVjayAqLwogfSBUdXBs ZXNvcnRJbmRleEJUcmVlQXJnOwogCiAvKgpAQCAtMzU5LDYgKzM2Myw3IEBAIHR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCVJlbGF0aW9uIGluZGV4 UmVsLAogCQkJCQkJCWJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJCQlib29sIHVuaXF1ZU51bGxz Tm90RGlzdGluY3QsCisJCQkJCQkJYm9vbCB1bmlxdWVEZWFkSWdub3JlZCwKIAkJCQkJCQlpbnQg d29ya01lbSwKIAkJCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAogCQkJCQkJCWludCBz b3J0b3B0KQpAQCAtNDAxLDYgKzQwNiw3IEBAIHR1cGxlc29ydF9iZWdpbl9pbmRleF9idHJlZShS ZWxhdGlvbiBoZWFwUmVsLAogCWFyZy0+aW5kZXguaW5kZXhSZWwgPSBpbmRleFJlbDsKIAlhcmct PmVuZm9yY2VVbmlxdWUgPSBlbmZvcmNlVW5pcXVlOwogCWFyZy0+dW5pcXVlTnVsbHNOb3REaXN0 aW5jdCA9IHVuaXF1ZU51bGxzTm90RGlzdGluY3Q7CisJYXJnLT51bmlxdWVEZWFkSWdub3JlZCA9 IHVuaXF1ZURlYWRJZ25vcmVkOwogCiAJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRl eFJlbCwgTlVMTCk7CiAKQEAgLTE2NTMsNiArMTY1OSw3IEBAIGNvbXBhcmV0dXBfaW5kZXhfYnRy ZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUgKmIsCiAJCURh dHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwogCQlib29sCQlpc251bGxbSU5ERVhfTUFYX0tF WVNdOwogCQljaGFyCSAgICprZXlfZGVzYzsKKwkJYm9vbAkJdW5pcXVlQ2hlY2tGYWlsID0gdHJ1 ZTsKIAogCQkvKgogCQkgKiBTb21lIHJhdGhlciBicmFpbi1kZWFkIGltcGxlbWVudGF0aW9ucyBv ZiBxc29ydCAoc3VjaCBhcyB0aGUgb25lIGluCkBAIC0xNjYyLDE4ICsxNjY5LDU4IEBAIGNvbXBh cmV0dXBfaW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0 VHVwbGUgKmIsCiAJCSAqLwogCQlBc3NlcnQodHVwbGUxICE9IHR1cGxlMik7CiAKLQkJaW5kZXhf ZGVmb3JtX3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJa2V5X2Rl c2MgPSBCdWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1 ZXMsIGlzbnVsbCk7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1VO SVFVRV9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGlu ZGV4IFwiJXNcIiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4Lmlu ZGV4UmVsKSksCi0JCQkJIGtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRl ZC4iLCBrZXlfZGVzYykgOgotCQkJCSBlcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIp LAotCQkJCSBlcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAotCQkJCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCS8qIFRo aXMgaXMgZmFpbC1mYXN0IGNoZWNrLCBzZWUgX2J0X2xvYWQgZm9yIGRldGFpbHMuICovCisJCWlm IChhcmctPnVuaXF1ZURlYWRJZ25vcmVkKQorCQl7CisJCQlib29sCWFueV90dXBsZV9kZWFkLAor CQkJCQljYWxsX2FnYWluID0gZmFsc2UsCisJCQkJCWlnbm9yZWQ7CisKKwkJCVR1cGxlVGFibGVT bG90CSpzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IoYXJn LT5pbmRleC5oZWFwUmVsKSwKKwkJCQkJCQkJCQkJCQkJCSAmVFRTT3BzQnVmZmVySGVhcFR1cGxl KTsKKwkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQgPSB0dXBsZTEtPnRfdGlkOworCisJCQlJbmRleEZl dGNoVGFibGVEYXRhICpmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGFyZy0+aW5kZXgu aGVhcFJlbCk7CisJCQlhbnlfdHVwbGVfZGVhZCA9ICF0YWJsZV9pbmRleF9mZXRjaF90dXBsZShm ZXRjaCwgJnRpZCwgU25hcHNob3RTZWxmLCBzbG90LCAmY2FsbF9hZ2FpbiwgJmlnbm9yZWQpOwor CisJCQlpZiAoIWFueV90dXBsZV9kZWFkKQorCQkJeworCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsK KwkJCQl0aWQgPSB0dXBsZTItPnRfdGlkOworCQkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2lu ZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdHVwbGUyLT50X3RpZCwgU25hcHNob3RTZWxmLCBzbG90 LCAmY2FsbF9hZ2FpbiwKKwkJCQkJCQkJCQkJCQkJICAmaWdub3JlZCk7CisJCQl9CisKKwkJCWlm IChhbnlfdHVwbGVfZGVhZCkKKwkJCXsKKwkJCQllbG9nKERFQlVHNSwgInNraXBwaW5nIGR1cGxp Y2F0ZSB2YWx1ZXMgYmVjYXVzZSBzb21lIG9mIHRoZW0gYXJlIGRlYWQ6ICgldSwldSkgdnMgKCV1 LCV1KSIsCisJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwK KwkJCQkJIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0dXBsZTEtPnRfdGlkKSwKKwkJCQkJ IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJnR1cGxlMi0+dF90aWQpLAorCQkJCQkgSXRlbVBv aW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMi0+dF90aWQpKTsKKworCQkJCXVuaXF1ZUNoZWNr RmFpbCA9IGZhbHNlOworCQkJfQorCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90 KTsKKwkJCXRhYmxlX2luZGV4X2ZldGNoX2VuZChmZXRjaCk7CisJCQlBc3NlcnQoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCQl9CisJCWlmICh1bmlxdWVDaGVja0ZhaWwp CisJCXsKKwkJCWluZGV4X2RlZm9ybV90dXBsZSh0dXBsZTEsIHR1cERlcywgdmFsdWVzLCBpc251 bGwpOworCisJCQlrZXlfZGVzYyA9IEJ1aWxkSW5kZXhWYWx1ZURlc2NyaXB0aW9uKGFyZy0+aW5k ZXguaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsKKworCQkJLyoga2VlcCB0aGlzIGVycm9yIG1l c3NhZ2UgaW4gc3luYyB3aXRoIHRoZSBzYW1lIGluIF9idF9sb2FkICovCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04pLAorCQkJCQkJCWVy cm1zZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJCQkJCQkJICAg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpLAorCQkJCQkJCWtl eV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBrZXlfZGVzYykgOgor CQkJCQkJCWVycmRldGFpbCgiRHVwbGljYXRlIGtleXMgZXhpc3QuIiksCisJCQkJCQkJZXJydGFi bGVjb25zdHJhaW50KGFyZy0+aW5kZXguaGVhcFJlbCwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCX0KIAl9CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL25idHJlZS5oCmluZGV4IDc3MjI0ODU5NjguLjc2ZTI3N2MyZTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVl LmgKQEAgLTEzMTAsOCArMTMxMCwxMCBAQCBleHRlcm4gYm9vbCBidHByb3BlcnR5KE9pZCBpbmRl eF9vaWQsIGludCBhdHRubywKIGV4dGVybiBjaGFyICpidGJ1aWxkcGhhc2VuYW1lKGludDY0IHBo YXNlbnVtKTsKIGV4dGVybiBJbmRleFR1cGxlIF9idF90cnVuY2F0ZShSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgbGFzdGxlZnQsCiAJCQkJCQkJICAgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LCBCVFNj YW5JbnNlcnQgaXR1cF9rZXkpOworZXh0ZXJuIGludAlfYnRfa2VlcF9uYXR0cyhSZWxhdGlvbiBy ZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCwKKwkJCQkJCSAg IEJUU2Nhbkluc2VydCBpdHVwX2tleSwgYm9vbCAqaGFzbnVsbHMpOwogZXh0ZXJuIGludAlfYnRf a2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKLQkJCQkJ CQkJSW5kZXhUdXBsZSBmaXJzdHJpZ2h0KTsKKwkJCQkJCQkJSW5kZXhUdXBsZSBmaXJzdHJpZ2h0 LCBib29sICpoYXNudWxscyk7CiBleHRlcm4gYm9vbCBfYnRfY2hlY2tfbmF0dHMoUmVsYXRpb24g cmVsLCBib29sIGhlYXBrZXlzcGFjZSwgUGFnZSBwYWdlLAogCQkJCQkJCU9mZnNldE51bWJlciBv ZmZudW0pOwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrX3RoaXJkX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggYmRhZGQ1MTFmZS4uY2EwYTE0OGUz NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xNzczLDcgKzE3NzMsNyBAQCB0YWJsZV9zY2FuX2Fu YWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sIFRyYW5zYWN0aW9uSWQgT2xkZXN0 WG1pbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1p Z2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCiAgKgot ICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCisgKiBJbiBj YXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCiAgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBh cHBsaWVkIGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMKICAq IG9uIHRoZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggYi9zcmMvaW5jbHVkZS91dGlscy90 dXBsZXNvcnQuaAppbmRleCA1ZmUyMjllMjExLi40NjVhNWYwMGVmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNv cnQuaApAQCAtMzk1LDYgKzM5NSw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkgICBSZWxh dGlvbiBpbmRleFJlbCwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwKIAkJCQkJ CQkJCQkJCSAgIGJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJCSAgIGJv b2wJdW5pcXVlRGVhZElnbm9yZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwgU29ydENv b3JkaW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKIGV4dGVy biBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRpb24gaGVh cFJlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBl Y3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCBiNGFkOTBlYjMz Li5iYjg0ZDYxZjQwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0x Nyw2ICsxNywxMiBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2lu c2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJwogIAogKDEgcm93KQogCitTRUxF Q1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl JywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBDUkVBVEUgU0NIRU1BIGNpY19yZXNldF9zbmFwOwog Q1JFQVRFIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibChpIGludCBwcmltYXJ5IGtleSwgaiBpbnQp OwogSU5TRVJUIElOVE8gY2ljX3Jlc2V0X3NuYXAudGJsIFNFTEVDVCBpLCBpICogSSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAyMDApIHMoaSk7CkBAIC0zNSw3ICs0MSwxMSBAQCBFTkQ7ICQkOwog LS0tLS0tLS0tLS0tLS0tLQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0wKTsKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBP TiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nh bl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2lu dCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2Ug dHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2Vm ZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOwogTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nh bl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKQEAgLTcyLDMwICs4Miw0NyBAQCBOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owog LS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAu dGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3Rh YmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRl cgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlJyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dl cmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJF SU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5p dGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JF QVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CiBOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cwotTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKIFJFSU5ERVgg SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIE5PVElDRTogIG5vdGljZSB0 cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRf c25hcHNob3RzCi1OT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9z dGFibGVfbm9fcGFyYW0oKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlv biBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworTk9U SUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKIENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3Ig aW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBSRUlOREVYIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJp Z2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUK IERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIEJFR0lOIFRSQU5T QUNUSU9OOwogQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGkpOwotLSAKMi40My4wCgo= --000000000000d4a3fc0648706fee Content-Type: application/x-patch; name="v1-0002-Reset-snapshots-periodically-in-non-unique.patch" Content-Disposition: attachment; filename="v1-0002-Reset-snapshots-periodically-in-non-unique.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkfl6o851 RnJvbSA2MmNkZjcwZDAwZDc5MWMwNDNjYTQ4MWFiNTZjMTgyYmJkMTg3ZjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxNTo1OTo0NyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjEgMi80XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUg CiBub24tcGFyYWxsZWwgY29uY3VycmVudCBpbmRleCBidWlsZHMKCkxvbmctbGl2aW5nIHNuYXBz aG90cyB1c2VkIGJ5IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgYW5kIFJFSU5ERVggQ09OQ1VS UkVOVExZIGNhbiBob2xkIGJhY2sgdGhlIGdsb2JhbCB4bWluIGhvcml6b24uIENvbW1pdCBkOWQw NzYyMjJmNWIgYXR0ZW1wdGVkIHRvIGFsbG93IFZBQ1VVTSB0byBpZ25vcmUgc3VjaCBzbmFwc2hv dHMgdG8gbWl0aWdhdGUgdGhpcyBwcm9ibGVtLiBIb3dldmVyLCB0aGlzIHdhcyByZXZlcnRlZCBp biBjb21taXQgZTI4YmI4ODUxOTY5IGJlY2F1c2UgaXQgY291bGQgY2F1c2UgaW5kZXhlcyB0byBt aXNzIGhlYXAgdHVwbGVzIHRoYXQgd2VyZSBIT1QtdXBkYXRlZCBhbmQgSE9ULXBydW5lZCBkdXJp bmcgdGhlIGluZGV4IGNyZWF0aW9uLCBsZWFkaW5nIHRvIGluZGV4IGNvcnJ1cHRpb24uCgpUaGlz IHBhdGNoIGludHJvZHVjZXMgYW4gYWx0ZXJuYXRpdmUgYnkgcGVyaW9kaWNhbGx5IHJlc2V0dGlu ZyB0aGUgc25hcHNob3QgdXNlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlLiBCeSByZXNldHRpbmcg dGhlIHNuYXBzaG90IGV2ZXJ5IE4gcGFnZXMgZHVyaW5nIHRoZSBoZWFwIHNjYW4sIGl0IGFsbG93 cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuCgpDdXJyZW50bHksIHRoaXMgdGVjaG5pcXVl IGlzIGFwcGxpZWQgdG86CgotIG9ubHkgZHVyaW5nIHRoZSBmaXJzdCBzY2FuIG9mIHRoZSBoZWFw OiBUaGUgc2Vjb25kIHNjYW4gZHVyaW5nIGluZGV4IHZhbGlkYXRpb24gc3RpbGwgdXNlcyBhIHNp bmdsZSBzbmFwc2hvdCB0byBlbnN1cmUgaW5kZXggY29ycmVjdG5lc3MKLSBub24tcGFyYWxsZWwg aW5kZXggYnVpbGRzOiBQYXJhbGxlbCBpbmRleCBidWlsZHMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVk IGFuZCB3aWxsIGJlIGFkZHJlc3NlZCBpbiBmb2xsb3dpbmcgY29tbWl0cwotIG5vbi11bmlxdWUg aW5kZXhlczogVW5pcXVlIGluZGV4IGJ1aWxkcyBzdGlsbCByZXF1aXJlIGEgY29uc2lzdGVudCBz bmFwc2hvdCB0byBlbmZvcmNlIHVuaXF1ZW5lc3MgY29uc3RyYWludHMsIHdpbGwgYmUgYWRkcmVz c2VkIGluIGZvbGxvd2luZyBjb21taXRzCgpBIG5ldyBzY2FuIG9wdGlvbiBTT19SRVNFVF9TTkFQ U0hPVCBpcyBpbnRyb2R1Y2VkLiBXaGVuIHNldCwgaXQgY2F1c2VzIHRoZSBzbmFwc2hvdCB0byBi ZSByZXNldCAiYmV0d2VlbiIgZXZlcnkgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgcGFn ZXMgZHVyaW5nIHRoZSBzY2FuLiBUaGUgaGVhcCBzY2FuIGNvZGUgaXMgYWRqdXN0ZWQgdG8gc3Vw cG9ydCB0aGlzIG9wdGlvbiwgYW5kIHRoZSBpbmRleCBidWlsZCBjb2RlIGlzIG1vZGlmaWVkIHRv IHVzZSBpdCBmb3IgYXBwbGljYWJsZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyB0aGF0IGFyZSBu b3Qgb24gc3lzdGVtIGNhdGFsb2dzIGFuZCBub3QgdXNpbmcgcGFyYWxsZWwgd29ya2Vycy4KLS0t CiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgICAgfCAgIDMgKy0K IGNvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYyAgICAgICAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDE5ICsrLQog c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgIDIyICsrKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICAgICAgICB8ICAgNCArCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDQ3ICsrKysrKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8ICA1NyArKysr KysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgIDMw ICsrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jICAgICAgICAgfCAg IDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgIDEx ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMzEg KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAx NyArLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAx MCArKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICAgIHwgICAz ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dCAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBsICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMjggKysrKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4u Li9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDExNSArKysrKysr KysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWls ZCB8ICAgMSArCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAg fCAgOTUgKysrKysrKysrKysrKysrCiAyNSBmaWxlcyBjaGFuZ2VkLCA0NzMgaW5zZXJ0aW9ucygr KSwgMzcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVz ZXRfc25hcHNob3RzLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0 cmVlLmMgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDc3MzNhYjIwMmUu LmVhOGI4NDAxNTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMK KysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtNTU1LDcgKzU1NSw4IEBA IGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9v bCBoZWFwa2V5c3BhY2UsCiAJCQkJCQkJCQkgMCwgLyogbnVtYmVyIG9mIGtleXMgKi8KIAkJCQkJ CQkJCSBOVUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nl c3Mgc3RyYXRlZ3kgT0sgKi8KLQkJCQkJCQkJCSB0cnVlKTsgLyogc3luY3NjYW4gT0s/ICovCisJ CQkJCQkJCQkgdHJ1ZSwgLyogc3luY3NjYW4gT0s/ICovCisJCQkJCQkJCQkgZmFsc2UpOwogCiAJ CS8qCiAJCSAqIFNjYW4gd2lsbCBiZWhhdmUgYXMgdGhlIGZpcnN0IHNjYW4gb2YgYSBDUkVBVEUg SU5ERVggQ09OQ1VSUkVOVExZCmRpZmYgLS1naXQgYS9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3Rh dHR1cGxlLmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKaW5kZXggNmE3Zjhj YjRhNy4uYTBlN2VkMmUxMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXR0 dXBsZS5jCisrKyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwpAQCAtMzM1LDcg KzMzNSw3IEBAIHBnc3RhdF9oZWFwKFJlbGF0aW9uIHJlbCwgRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8pCiAJCQkJIGVycm1zZygib25seSBoZWFwIEFNIGlzIHN1cHBvcnRlZCIpKSk7CiAKIAkvKiBE aXNhYmxlIHN5bmNzY2FuIGJlY2F1c2Ugd2UgYXNzdW1lIHdlIHNjYW4gZnJvbSBibG9jayB6ZXJv IHVwd2FyZHMgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KHJlbCwgU25hcHNob3RB bnksIDAsIE5VTEwsIHRydWUsIGZhbHNlKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0 KHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIHRydWUsIGZhbHNlLCBmYWxzZSk7CiAJaHNjYW4g PSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJSW5pdERpcnR5U25hcHNob3QoU25hcHNob3REaXJ0 eSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggNjg4N2U0MjE0NC4uNDI4NDRiMmViZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9icmluL2JyaW4uYwpAQCAtMTIxNywxMSArMTIxNywxMiBAQCBicmluYnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlzdGF0 ZS0+YnNfc29ydHN0YXRlID0KIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9icmluKG1haW50ZW5h bmNlX3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICAgVFVQTEVTT1JUX05PTkUpOwot CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24g YW5kIG1lcmdlIHBlci13b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfYnJpbl9wYXJh bGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFk ZXIsIHN0YXRlKTsKKwkJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAllbHNlCQkJCQkJLyogbm8gcGFy YWxsZWwgaW5kZXggYnVpbGQgKi8KIAl7CkBAIC0xMjM0LDYgKzEyMzUsNyBAQCBicmluYnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQly ZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8s IGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJCSAgIGJyaW5idWlsZENhbGxiYWNrLCBzdGF0ZSwgTlVM TCk7CiAKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCQkvKgogCQkgKiBwcm9jZXNz IHRoZSBmaW5hbCBiYXRjaAogCQkgKgpAQCAtMTI1Myw2ICsxMjU1LDcgQEAgYnJpbmJ1aWxkKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJYnJp bl9maWxsX2VtcHR5X3JhbmdlcyhzdGF0ZSwKIAkJCQkJCQkgICBzdGF0ZS0+YnNfY3VyclJhbmdl U3RhcnQsCiAJCQkJCQkJICAgc3RhdGUtPmJzX21heFJhbmdlU3RhcnQpOworCQlBc3NlcnQoIWlu ZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CiAJfQogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8KQEAgLTIzODksNiArMjM5Miw3 IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZm ZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsK Kwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVu OwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtMjQxNCw5ICsyNDE4 LDE2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0 LgogCSAqLwogCWlmICghaXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90 U2V0KCkpOwogCQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25h cHNob3QgPSBmYWxzZTsKKwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Ig b3VyIG93biBQQVJBTExFTF9LRVlfQlJJTl9TSEFSRUQgd29ya3NwYWNlLgpAQCAtMjQ1OSw2ICsy NDcwLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdh cyBhdmFpbGFibGUsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNl ZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJl Z2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQp OwpAQCAtMjUzOCw2ICsyNTUxLDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3Rh dGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIElmIG5v IHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVsbHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwg YnVpbGQpICovCiAJaWYgKHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAo bmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2Jy aW5fZW5kX3BhcmFsbGVsKGJyaW5sZWFkZXIsIE5VTEwpOwogCQlyZXR1cm47CiAJfQpAQCAtMjU1 NCw2ICsyNTY5LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUg ZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0 Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lu L2dpbmluc2VydC5jCmluZGV4IDBkNjNmYjRiYTIuLjY1M2NhNTBiOTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90Lmgi CiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpA QCAtNjc4LDYgKzY3OSw5IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmFjY3VtLmdpbnN0YXRlID0gJmJ1 aWxkc3RhdGUuZ2luc3RhdGU7CiAJZ2luSW5pdEJBKCZidWlsZHN0YXRlLmFjY3VtKTsKIAorCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCBpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAkvKiBSZXBvcnQgdGFibGUgc2NhbiBwaGFzZSBzdGFy dGVkICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf U1VCUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19HSU5fUEhBU0VfSU5ERVhCVUlMRF9UQUJMRVND QU4pOwpAQCAtNzQwLDExICs3NDQsMTMgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4 X2dpbihoZWFwLCBpbmRleCwKIAkJCQkJCQkJCSAgbWFpbnRlbmFuY2Vfd29ya19tZW0sIGNvb3Jk aW5hdGUsCiAJCQkJCQkJCQkgIFRVUExFU09SVF9OT05FKTsKKwkJSW52YWxpZGF0ZUNhdGFsb2dT bmFwc2hvdCgpOwogCiAJCS8qIHNjYW4gdGhlIHJlbGF0aW9uIGluIHBhcmFsbGVsIGFuZCBtZXJn ZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJcmVsdHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJn ZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUp OworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElz VmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRl eCBidWlsZCAqLwogCXsKQEAgLTc1NCw2ICs3NjAsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCSAqLwogCQlyZWx0dXBs ZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIGZhbHNl LCB0cnVlLAogCQkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2ssICZidWlsZHN0YXRlLCBOVUxM KTsKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJCS8qIGR1bXAgcmVtYWluaW5n IGVudHJpZXMgdG8gdGhlIGluZGV4ICovCiAJCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhidWlsZHN0YXRlLnRtcEN0eCk7CkBAIC03NjcsNiArNzc0LDcgQEAgZ2luYnVpbGQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJCQkJICAg bGlzdCwgbmxpc3QsICZidWlsZHN0YXRlLmJ1aWxkU3RhdHMpOwogCQl9CiAJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRDdHgpOworCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJTWVtb3J5Q29u dGV4dERlbGV0ZShidWlsZHN0YXRlLmZ1bmNDdHgpOwpAQCAtOTM5LDYgKzk0Nyw3IEBAIF9naW5f YmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwg UmVsYXRpb24gaW5kZXgsCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1 ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVm IERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTk2Myw5ICs5NzIsMTYgQEAgX2dpbl9i ZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICgh aXNjb25jdXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFw c2hvdCA9IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsK Kwl9CiAJZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExF TF9LRVlfR0lOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0xMDA4LDYgKzEwMjQsOCBAQCBfZ2luX2Jl Z2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sg b3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJ aWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJ CWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTA4Miw2ICsxMTAw LDggQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxh dGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vz c2Z1bGx5IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0 LT5ud29ya2Vyc19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFw c2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9naW5fZW5kX3BhcmFsbGVsKGdpbmxl YWRlciwgTlVMTCk7CiAJCXJldHVybjsKIAl9CkBAIC0xMDk4LDYgKzExMTgsOCBAQCBfZ2luX2Jl Z2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdp bGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRh Y2gocGN4dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2Y1 N2M3ODdmNC4uNjIwN2U5ZjVkOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3Qv Z2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAg LTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0yNTksNiArMjYwLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0 aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAlidWlsZHN0 YXRlLmluZHR1cGxlcyA9IDA7CiAJYnVpbGRzdGF0ZS5pbmR0dXBsZXNTaXplID0gMDsKIAorCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIAlpZiAoYnVpbGRzdGF0ZS5idWlsZE1vZGUgPT0gR0lTVF9TT1JURURf QlVJTEQpCiAJewogCQkvKgpAQCAtMzUwLDYgKzM1Miw4IEBAIGdpc3RidWlsZChSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhl YXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gKGRvdWJsZSkg YnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChN eVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMK aW5kZXggZTg4ZGRiMzJhMC4uZjc1ZWIwMTAwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwpAQCAt MTk4LDYgKzE5OCw4IEBAIGhhc2hidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVz OwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1 bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFkOWQ2MzM4ZWMuLmM4YWNlMTFm ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVk ZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAK IAogc3RhdGljIEhlYXBUdXBsZSBoZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwLApAQCAtNjUxLDYgKzY1MiwzNiBAQCBoZWFwX3ByZXBhcmVfcGFnZXNj YW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tf VU5MT0NLKTsKIH0KIAorLyoKKyAqIFJlc2V0IHRoZSBhY3RpdmUgc25hcHNob3QgZHVyaW5nIGEg c2Nhbi4KKyAqIFRoaXMgZW5zdXJlcyB0aGUgeG1pbiBob3Jpem9uIGNhbiBhZHZhbmNlIHdoaWxl IG1haW50YWluaW5nIHNhZmUgdHVwbGUgdmlzaWJpbGl0eS4KKyAqIE5vdGU6IE5vIG90aGVyIHNu YXBzaG90IHNob3VsZCBiZSBhY3RpdmUgZHVyaW5nIHRoaXMgb3BlcmF0aW9uLgorICovCitzdGF0 aWMgaW5saW5lIHZvaWQKK2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdChUYWJsZVNjYW5EZXNjIHNz Y2FuKQoreworCS8qIE1ha2Ugc3VyZSBubyBvdGhlciBzbmFwc2hvdCB3YXMgc2V0IGFzIGFjdGl2 ZS4gKi8KKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBzc2Nhbi0+cnNfc25hcHNob3Qp OworCS8qIEFuZCBtYWtlIHN1cmUgYWN0aXZlIHNuYXBzaG90IGlzIG5vdCByZWdpc3RlcmVkLiAq LworCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisKKwlzc2Nhbi0+cnNfc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7 IC8qIGp1c3QgdG8gYmUgdGlkeSAqLworCUFzc2VydCghSGF2ZVJlZ2lzdGVyZWRPckFjdGl2ZVNu YXBzaG90KCkpOworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKworCS8qIFRoZSBnb2Fs IG9mIHNuYXBzaG90IHJlc2V0IGlzIHRvIGFsbG93IGhvcml6b24gdG8gYWR2YW5jZS4gKi8KKwlB c3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworI2lmIFVTRV9JTkpF Q1RJT05fUE9JTlRTCisJLyogSW4gc29tZSBjYXNlcyBpdCBpcyBzdGlsbCBub3QgcG9zc2libGUg ZHVlIHhpZCBhc3NpZ24uICovCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhp ZCkpCisJCUlOSkVDVElPTl9QT0lOVCgiaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2 ZSIsIE5VTEwpOworI2VuZGlmCisKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNo b3QoKSk7CisJc3NjYW4tPnJzX3NuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKK30KKwog LyoKICAqIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIgLSByZWFkIGFuZCBwaW4gdGhlIG5leHQgYmxv Y2sgZnJvbSBNQUlOX0ZPUktOVU0uCiAgKgpAQCAtNjkyLDcgKzcyMywxMiBAQCBoZWFwX2ZldGNo X25leHRfYnVmZmVyKEhlYXBTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIAogCXNj YW4tPnJzX2NidWYgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzY2FuLT5yc19yZWFkX3N0cmVh bSwgTlVMTCk7CiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCisJewogCQlzY2Fu LT5yc19jYmxvY2sgPSBCdWZmZXJHZXRCbG9ja051bWJlcihzY2FuLT5yc19jYnVmKTsKKwkJaWYg KHNjYW4tPnJzX2Jhc2UucnNfZmxhZ3MgJiBTT19SRVNFVF9TTkFQU0hPVCAmJgorCQkJc2Nhbi0+ cnNfY2Jsb2NrICUgU09fUkVTRVRfU05BUFNIT1RfRUFDSF9OX1BBR0UgPT0gMCkKKwkJCWhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQogfQogCiAvKgpA QCAtMTM1Myw3ICsxMzg5LDE2IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQog CiAJaWYgKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2Fu LT5yc19wYXJhbGxlbHdvcmtlcmRhdGEpOwotCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor CWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05BUFNIT1QpCisJeworCQlB c3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkpOworCQkv KiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJCUFz c2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7CisJCS8qIEFu ZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICovCisJCUFzc2VydChHZXRB Y3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKyNlbmRpZgogCWlmIChzY2Fu LT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdpc3RlclNuYXBz aG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwppbmRleCAwOWE0NTZlOTk2Li44NzI0NDEzZTUxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTExOTQsNiArMTE5NCw4IEBAIGhl YXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlFeHBy Q29udGV4dCAqZWNvbnRleHQ7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJl Z2lzdGVyX3NuYXBzaG90ID0gZmFsc2U7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gZmFsc2U7CisJYm9vbAkJcmVzZXRfc25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluOwogCUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2Nr TnVtYmVyOwogCUJsb2NrTnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBA IC0xMjI4LDkgKzEyMzAsNiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRv IGJlIHRoZSB0dXBsZSB1bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0g c2xvdDsKIAotCS8qIFNldCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55 LiAqLwotCXByZWRpY2F0ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0 ZSwgZXN0YXRlKTsKLQogCS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxh dGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBi ZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBA IC0xMjQwLDYgKzEyMzksMTUgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAorCS8qCisJICogRm9yIHVuaXF1ZSBpbmRleCB3ZSBuZWVkIGNvbnNpc3RlbnQgc25hcHNo b3QgZm9yIHRoZSB3aG9sZSBzY2FuLgorCSAqIEluIGNhc2Ugb2YgcGFyYWxsZWwgc2NhbiBzb21l IGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgcmVxdWlyZWQKKwkgKiB0byBwZXJmb3JtIHNjYW4g d2l0aCBTT19SRVNFVF9TTkFQU0hPVCB3aGljaCBpcyBub3QgeWV0IHJlYWR5LgorCSAqLworCXJl c2V0X3NuYXBzaG90cyA9IGluZGV4SW5mby0+aWlfQ29uY3VycmVudCAmJgorCQkJCQkgICFpbmRl eEluZm8tPmlpX1VuaXF1ZSAmJgorCQkJCQkgICFpc19zeXN0ZW1fY2F0YWxvZzsgLyoganVzdCBm b3IgdGhlIGNhc2UgKi8KKwogCS8qIG9rYXkgdG8gaWdub3JlIGxhenkgVkFDVVVNcyBoZXJlICov CiAJaWYgKCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkgJiYgIWluZGV4SW5mby0+aWlfQ29u Y3VycmVudCkKIAkJT2xkZXN0WG1pbiA9IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoaGVhcFJlbGF0aW9uKTsKQEAgLTEyNDgsMjQgKzEyNTYsNDEgQEAgaGVhcGFtX2luZGV4X2J1 aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXsKIAkJLyoKIAkJICogU2Vy aWFsIGluZGV4IGJ1aWxkLgotCQkgKgotCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2Fu IGluIHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KLQkJICogcmVnaXN0ZXIgYSBzbmFw c2hvdCB3aG9zZSBsaWZldGltZSBpcyB1bmRlciBvdXIgZGlyZWN0IGNvbnRyb2wuCiAJCSAqLwog CQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKQogCQl7Ci0JCQlzbmFwc2hv dCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJCW5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCA9IHRydWU7CisJCQlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9u U25hcHNob3QoKTsKKwkJCS8qCisJCQkgKiBNdXN0IGJlZ2luIG91ciBvd24gaGVhcCBzY2FuIGlu IHRoaXMgY2FzZS4gIFdlIG1heSBhbHNvIG5lZWQgdG8KKwkJCSAqIHJlZ2lzdGVyIGEgc25hcHNo b3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVjdCBjb250cm9sLgorCQkJICogSW4g Y2FzZSBvZiByZXNldHRpbmcgb2Ygc25hcHNob3QgZHVyaW5nIHRoZSBzY2FuIHJlZ2lzdHJhdGlv biBpcworCQkJICogbm90IGFsbG93ZWQgYmVjYXVzZSBzbmFwc2hvdCBpcyBnb2luZyB0byBiZSBj aGFuZ2VkIGV2ZXJ5IHNvCisJCQkgKiBvZnRlbi4KKwkJCSAqLworCQkJaWYgKCFyZXNldF9zbmFw c2hvdHMpCisJCQl7CisJCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsK KwkJCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJfQorCQkJQXNzZXJ0KCFB Y3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CisJ CQkvKiBzdG9yZSBsaW5rIHRvIHNuYXBzaG90IGJlY2F1c2UgaXQgbWF5IGJlIGNvcGllZCAqLwor CQkJc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworCQkJbmVlZF9wb3BfYWN0aXZlX3Nu YXBzaG90ID0gdHJ1ZTsKIAkJfQogCQllbHNlCisJCXsKKwkJCUFzc2VydCghaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50KTsKIAkJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCX0KIAogCQlzY2Fu ID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlvbiwJLyogcmVsYXRpb24gKi8KIAkJ CQkJCQkJCSBzbmFwc2hvdCwJLyogc25hcHNob3QgKi8KIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIg b2Yga2V5cyAqLwogCQkJCQkJCQkJIE5VTEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1 ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwotCQkJCQkJCQkJIGFsbG93X3N5bmMp OwkvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBhbGxvd19zeW5jLAkvKiBzeW5jc2NhbiBP Sz8gKi8KKwkJCQkJCQkJCSByZXNldF9zbmFwc2hvdHMgLyogcmVzZXQgc25hcHNob3RzPyAqLyk7 CiAJfQogCWVsc2UKIAl7CkBAIC0xMjc5LDYgKzEzMDQsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRf cmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFzc2VydCghSXNCb290c3RyYXBQ cm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMpOwogCQlzbmFwc2hvdCA9IHNj YW4tPnJzX3NuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOworCQluZWVk X3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCX0KIAogCWhzY2FuID0gKEhlYXBTY2FuRGVz Yykgc2NhbjsKQEAgLTEyOTMsNiArMTMyMCwxMyBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vf c2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90 QW55ID8gVHJhbnNhY3Rpb25JZElzVmFsaWQoT2xkZXN0WG1pbikgOgogCQkgICAhVHJhbnNhY3Rp b25JZElzVmFsaWQoT2xkZXN0WG1pbikpOwogCUFzc2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFu eSB8fCAhYW55dmlzaWJsZSk7CisJQXNzZXJ0KHNuYXBzaG90ID09IFNuYXBzaG90QW55IHx8IEFj dGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2V0IHVwIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgcHJl ZGljYXRlLCBpZiBhbnkuICovCisJcHJlZGljYXRlID0gRXhlY1ByZXBhcmVRdWFsKGluZGV4SW5m by0+aWlfUHJlZGljYXRlLCBlc3RhdGUpOworCS8qIENsZWFyIHJlZmVyZW5jZSB0byBzbmFwc2hv dCBzaW5jZSBpdCBtYXkgYmUgY2hhbmdlZCBieSB0aGUgc2NhbiBpdHNlbGYuICovCisJaWYgKHJl c2V0X3NuYXBzaG90cykKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAKIAkvKiBQdWJs aXNoIG51bWJlciBvZiBibG9ja3MgdG8gc2NhbiAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE3Mjgs NiArMTc2Miw4IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAogCXRhYmxlX2VuZHNjYW4oc2Nhbik7CiAKKwlpZiAobmVlZF9wb3BfYWN0aXZl X3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCS8qIHdlIGNhbiBub3cgZm9yZ2V0 IG91ciBzbmFwc2hvdCwgaWYgc2V0IGFuZCByZWdpc3RlcmVkIGJ5IHVzICovCiAJaWYgKG5lZWRf dW5yZWdpc3Rlcl9zbmFwc2hvdCkKIAkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKQEAg LTE4MDAsNyArMTgzNiw4IEBAIGhlYXBhbV9pbmRleF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBO VUxMLAkvKiBzY2FuIGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkgZmFsc2UpOwkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJ CQkJIGZhbHNlLAkvKiBzeW5jc2NhbiBub3QgT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAloc2Nh biA9IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX1NDQU5fQkxPQ0tTX1RPVEFMLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2luZGV4L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRl eCBhMjliZTZmNDY3Li5jOTJhOGU3ODQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAt NDY0LDcgKzQ2NCw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJCSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxh dGlvbiwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAgbmtleXMsIGtleSwKLQkJCQkJCQkJCQkJICB0 cnVlLCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAkJc3lzc2Nh bi0+aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRl eCA5MGFiNGU5MWI1Li5hMWE1YTFkYjliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQu YwpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBkb3VibGUgX2J0X3Nwb29sc19oZWFwc2NhbihS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyB2b2lkIF9idF9zcG9vbGRlc3Ry b3koQlRTcG9vbCAqYnRzcG9vbCk7CiBzdGF0aWMgdm9pZCBfYnRfc3Bvb2woQlRTcG9vbCAqYnRz cG9vbCwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpzZWxmLAogCQkJCQkgIGNvbnN0IERhdHVtICp2 YWx1ZXMsIGNvbnN0IGJvb2wgKmlzbnVsbCk7Ci1zdGF0aWMgdm9pZCBfYnRfbGVhZmJ1aWxkKEJU U3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKTsKK3N0YXRpYyB2b2lkIF9idF9sZWFm YnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25h cHNob3RzKTsKIHN0YXRpYyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwg SXRlbVBvaW50ZXIgdGlkLCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwg Ym9vbCB0dXBsZUlzQWxpdmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBCdWxrV3JpdGVCdWZmZXIg X2J0X2JsbmV3cGFnZShCVFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMyIGxldmVsKTsKQEAgLTMy MiwxOCArMzIyLDIyIEBAIGJ0YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIElu ZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4KSk7 CiAKIAlyZWx0dXBsZXMgPSBfYnRfc3Bvb2xzX2hlYXBzY2FuKGhlYXAsIGluZGV4LCAmYnVpbGRz dGF0ZSwgaW5kZXhJbmZvKTsKKwlBc3NlcnQoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMg fHwgaW5kZXhJbmZvLT5paV9VbmlxdWUgfHwKKwkJICAhaW5kZXhJbmZvLT5paV9Db25jdXJyZW50 IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogRmlu aXNoIHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bvb2wgZmls ZSwgKDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUgcGFnZXMg YW5kICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBpdCBtYXkg YWxzbyBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8KLQlfYnRf bGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyKTsKKwlfYnRfbGVh ZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJbmZvLT5p aV9QYXJhbGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bv b2xkZXN0cm95KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJ X2J0X3Nwb29sZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRs ZWFkZXIpCiAJCV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7CisJQXNzZXJ0 KGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8 CisJCSAgIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1 bHQpOwogCkBAIC00ODEsNiArNDg1LDkgQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCWVsc2UKIAkJ cmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJ ICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFw c2hvdCgpOworCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFsbGVsV29ya2VycyB8fCBpbmRleElu Zm8tPmlpX1VuaXF1ZSB8fAorCQkgICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyoKIAkgKiBTZXQgdGhlIHByb2dy ZXNzIHRhcmdldCBmb3IgdGhlIG5leHQgcGhhc2UuICBSZXNldCB0aGUgYmxvY2sgbnVtYmVyCkBA IC01MzYsNyArNTQzLDcgQEAgX2J0X3Nwb29sKEJUU3Bvb2wgKmJ0c3Bvb2wsIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqc2VsZiwgY29uc3QgRGF0dW0gKnZhbHVlcywgY28KICAqIGNyZWF0ZSBhbiBl bnRpcmUgYnRyZWUuCiAgKi8KIHN0YXRpYyB2b2lkCi1fYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0 c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQorX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNwb29s LCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFwc2hvdHMpCiB7CiAJQlRXcml0ZVN0 YXRlIHdzdGF0ZTsKIApAQCAtNTU4LDE4ICs1NjUsMjEgQEAgX2J0X2xlYWZidWlsZChCVFNwb29s ICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMikKIAkJCQkJCQkJCSBQUk9HUkVTU19CVFJFRV9Q SEFTRV9QRVJGT1JNU09SVF8yKTsKIAkJdHVwbGVzb3J0X3BlcmZvcm1zb3J0KGJ0c3Bvb2wyLT5z b3J0c3RhdGUpOwogCX0KKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25J ZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAl3c3RhdGUuaGVhcCA9IGJ0c3Bvb2wtPmhlYXA7 CiAJd3N0YXRlLmluZGV4ID0gYnRzcG9vbC0+aW5kZXg7CiAJd3N0YXRlLmluc2tleSA9IF9idF9t a3NjYW5rZXkod3N0YXRlLmluZGV4LCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qg c2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFs bGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOworCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAogCS8qIHJlc2VydmUgdGhlIG1ldGFwYWdlICov CiAJd3N0YXRlLmJ0d3NfcGFnZXNfYWxsb2NlZCA9IEJUUkVFX01FVEFQQUdFICsgMTsKIAogCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAog CQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhBU0VfTEVBRl9MT0FEKTsKKwlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90cyB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJX2J0 X2xvYWQoJndzdGF0ZSwgYnRzcG9vbCwgYnRzcG9vbDIpOwogfQogCkBAIC0xNDA4LDYgKzE0MTgs NyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVy VXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJ Ym9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsK IAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTE0MzMsOSArMTQ0NCwx NiBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkg Ki8KIAlpZiAoIWlzY29uY3VycmVudCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgp KTsKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3Qp OworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlf QlRSRUVfU0hBUkVEIHdvcmtzcGFjZSwgYW5kCkBAIC0xNDg5LDYgKzE1MDcsOCBAQCBfYnRfYmVn aW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwg aW50IHJlcXVlc3QpCiAJLyogSWYgbm8gRFNNIHNlZ21lbnQgd2FzIGF2YWlsYWJsZSwgYmFjayBv dXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+c2VnID09IE5VTEwpCiAJeworCQlp ZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJ aWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFw c2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxlbENvbnRleHQocGN4dCk7CkBAIC0xNTgzLDYgKzE2MDMs OCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3Nm dWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+ bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKIAl7CisJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNo b3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlfYnRfZW5kX3BhcmFsbGVsKGJ0bGVhZGVy KTsKIAkJcmV0dXJuOwogCX0KQEAgLTE1OTksNiArMTYyMSw4IEBAIF9idF9iZWdpbl9wYXJhbGxl bChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVz dCkKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5n IGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOwor CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA3ODBlZjY0NmE1 Li40OTgzMmEzNjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2lu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTI0 LDYgKzI0LDcgQEAKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVsa193cml0ZS5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVsLmgiCiAKQEAgLTE0Myw2ICsxNDQsOCBAQCBzcGdidWlsZChSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJcmVzdWx0ID0gcGFsbG9j MF9vYmplY3QoSW5kZXhCdWlsZFJlc3VsdCk7CiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUlu dmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3Vy cmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4g cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IGM4NTdlMjM1NTIuLjk4 YjYwOThkYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTM3MDcsNiArMzcwNywx NyBAQCBQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGJvb2wgaXNUb3BMZXZlbCwgY29uc3QgY2hh ciAqc3RtdFR5cGUpCiAJTXlYYWN0RmxhZ3MgfD0gWEFDVF9GTEFHU19ORUVESU1NRURJQVRFQ09N TUlUOwogfQogCit2b2lkCitQcmV2ZW50SXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdChjb25zdCBj aGFyICpzdG10VHlwZSkKK3sKKwlpZiAoSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5BUFBST1BSSUFURV9JU09MQVRJ T05fTEVWRUxfRk9SX0NPTU1BTkQpLAorCQkvKiB0cmFuc2xhdG9yOiAlcyByZXByZXNlbnRzIGFu IFNRTCBzdGF0ZW1lbnQgbmFtZSAqLworCQkJCSBlcnJtc2coIiVzIGRvZXMgbm90IHN1cHBvcnQg dHJhbnNhY3Rpb24gaXNvbGF0aW9uIGhpZ2hlciB0aGFuIFJFQUQgQ09NTUlUVEVEIiwKKwkJCQkJ CXN0bXRUeXBlKSkpOworfQorCiAvKgogICoJV2Fybk5vVHJhbnNhY3Rpb25CbG9jawogICoJUmVx dWlyZVRyYW5zYWN0aW9uQmxvY2sKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA0M2RlNDJjZTM5Li4yYWNl NjBjMWYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC04MCw2ICs4MCw3IEBACiAjaW5jbHVkZSAidXRp bHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvdHVwbGVzb3J0LmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKIC8qIFBvdGVudGlh bGx5IHNldCBieSBwZ191cGdyYWRlX3N1cHBvcnQgZnVuY3Rpb25zICovCiBPaWQJCQliaW5hcnlf dXBncmFkZV9uZXh0X2luZGV4X3BnX2NsYXNzX29pZCA9IEludmFsaWRPaWQ7CkBAIC0xNDkwLDgg KzE0OTEsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlvbklkLAog CVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCi0JLyog VGhpcyBoYWQgYmV0dGVyIG1ha2Ugc3VyZSB0aGF0IGEgc25hcHNob3QgaXMgYWN0aXZlICovCi0J QXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhpZCkpOwogCiAJLyogT3BlbiBhbmQgbG9jayB0aGUgcGFyZW50IGhlYXAgcmVsYXRpb24gKi8K IAloZWFwUmVsID0gdGFibGVfb3BlbihoZWFwUmVsYXRpb25JZCwgU2hhcmVVcGRhdGVFeGNsdXNp dmVMb2NrKTsKQEAgLTE1MDksMTkgKzE1MTAsMjkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxk KE9pZCBoZWFwUmVsYXRpb25JZCwKIAogCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKGluZGV4 UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKKwkvKiBCdWlsZEluZGV4SW5mbyBtYXkg cmVxdWlyZSBhcyBzbmFwc2hvdCBmb3IgZXhwcmVzc2lvbnMgYW5kIHByZWRpY2F0ZXMgKi8KKwlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAkvKgogCSAqIFdl IGhhdmUgdG8gcmUtYnVpbGQgdGhlIEluZGV4SW5mbyBzdHJ1Y3QsIHNpbmNlIGl0IHdhcyBsb3N0 IGluIHRoZQogCSAqIGNvbW1pdCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hlcmUgdGhpcyBjb25jdXJy ZW50IGluZGV4IHdhcyBjcmVhdGVkIGF0CiAJICogdGhlIGNhdGFsb2cgbGV2ZWwuCiAJICovCiAJ aW5kZXhJbmZvID0gQnVpbGRJbmRleEluZm8oaW5kZXhSZWxhdGlvbik7CisJLyogRG9uZSB3aXRo IHNuYXBzaG90ICovCisJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlBc3NlcnQoIWluZGV4SW5mby0+ aWlfUmVhZHlGb3JJbnNlcnRzKTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSB0cnVlOwog CWluZGV4SW5mby0+aWlfQnJva2VuSG90Q2hhaW4gPSBmYWxzZTsKIAorCUludmFsaWRhdGVDYXRh bG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCiAJLyogTm93IGJ1aWxkIHRoZSBpbmRleCAqLwogCWluZGV4X2J1aWxkKGhlYXBSZWws IGluZGV4UmVsYXRpb24sIGluZGV4SW5mbywgZmFsc2UsIHRydWUpOwogCisJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCgoaW5kZXhJbmZvLT5paV9QYXJhbGxlbFdvcmtlcnMg fHwgaW5kZXhJbmZvLT5paV9VbmlxdWUpIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2Mt PnhtaW4pKTsKKwogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkgaW5k ZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7CiAK QEAgLTE1MzIsMTIgKzE1NDMsMTkgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKE9pZCBoZWFw UmVsYXRpb25JZCwKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBOb0xvY2spOwogCWluZGV4X2Nsb3Nl KGluZGV4UmVsYXRpb24sIE5vTG9jayk7CiAKKwkvKgorCSAqIFVwZGF0aW5nIHBnX2luZGV4IG1p Z2h0IGludm9sdmUgVE9BU1QgdGFibGUgYWNjZXNzLCBzbyBlbnN1cmUgd2UKKwkgKiBoYXZlIGEg dmFsaWQgc25hcHNob3QuCisJICovCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CiAJLyoKIAkgKiBVcGRhdGUgdGhlIHBnX2luZGV4IHJvdyB0byBtYXJrIHRo ZSBpbmRleCBhcyByZWFkeSBmb3IgaW5zZXJ0cy4gT25jZSB3ZQogCSAqIGNvbW1pdCB0aGlzIHRy YW5zYWN0aW9uLCBhbnkgbmV3IHRyYW5zYWN0aW9ucyB0aGF0IG9wZW4gdGhlIHRhYmxlIG11c3QK IAkgKiBpbnNlcnQgbmV3IGVudHJpZXMgaW50byB0aGUgaW5kZXggZm9yIGluc2VydGlvbnMgYW5k IG5vbi1IT1QgdXBkYXRlcy4KIAkgKi8KIAlpbmRleF9zZXRfc3RhdGVfZmxhZ3MoaW5kZXhSZWxh dGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JFQURZKTsKKwkvKiB3ZSBjYW4gZG8gYXdheSB3aXRo IG91ciBzbmFwc2hvdCAqLworCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiB9CiAKIC8qCkBAIC0zMjM0 LDcgKzMyNTIsOCBAQCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAkJCQkJCQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCSBOVUxMLAkvKiBzY2Fu IGtleSAqLwogCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJhdGVneSBPSyAqLwot CQkJCQkJCQkgdHJ1ZSk7IC8qIHN5bmNzY2FuIE9LICovCisJCQkJCQkJCSB0cnVlLCAvKiBzeW5j c2NhbiBPSyAqLworCQkJCQkJCQkgZmFsc2UpOwogCiAJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4 dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCXsKQEAgLTMyOTcsMTIg KzMzMTYsMTYgQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAg KiBhcyBvZiB0aGUgc3RhcnQgb2YgdGhlIHNjYW4gKHNlZSB0YWJsZV9pbmRleF9idWlsZF9zY2Fu KSwgd2hlcmVhcyBhIG5vcm1hbAogICogYnVpbGQgdGFrZXMgY2FyZSB0byBpbmNsdWRlIHJlY2Vu dGx5LWRlYWQgdHVwbGVzLiAgVGhpcyBpcyBPSyBiZWNhdXNlCiAgKiB3ZSB3b24ndCBtYXJrIHRo ZSBpbmRleCB2YWxpZCB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIHRoYXQgbWlnaHQgYmUgYWJsZQot ICogdG8gc2VlIHRob3NlIHR1cGxlcyBhcmUgZ29uZS4gIFRoZSByZWFzb24gZm9yIGRvaW5nIHRo YXQgaXMgdG8gYXZvaWQKKyAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBPbmUgb2Yg cmVhc29ucyBmb3IgZG9pbmcgdGhhdCBpcyB0byBhdm9pZAogICogYm9ndXMgdW5pcXVlLWluZGV4 IGZhaWx1cmVzIGR1ZSB0byBjb25jdXJyZW50IFVQREFURXMgKHdlIG1pZ2h0IHNlZQogICogZGlm ZmVyZW50IHZlcnNpb25zIG9mIHRoZSBzYW1lIHJvdyBhcyBiZWluZyB2YWxpZCB3aGVuIHdlIHBh c3Mgb3ZlciB0aGVtLAogICogaWYgd2UgdXNlZCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0pLiAg VGhpcyBsZWF2ZXMgdXMgd2l0aCBhbiBpbmRleCB0aGF0CiAgKiBkb2VzIG5vdCBjb250YWluIGFu eSB0dXBsZXMgYWRkZWQgdG8gdGhlIHRhYmxlIHdoaWxlIHdlIGJ1aWx0IHRoZSBpbmRleC4KICAq CisgKiBGdXJ0aGVybW9yZSwgaW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IHdlIHNldCBTT19S RVNFVF9TTkFQU0hPVCBmb3IgdGhlCisgKiBzY2FuLCB3aGljaCBjYXVzZXMgbmV3IHNuYXBzaG90 IHRvIGJlIHNldCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24KKyAqIGZvciB0 aGF0IGlzIHRvIHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCisgKgogICogTmV4 dCwgd2UgbWFyayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3Zh bGlkIikgYW5kCiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0 aGlyZC4gIEFnYWluIHdlIHdhaXQgZm9yIGFsbAogICogdHJhbnNhY3Rpb25zIHRoYXQgY291bGQg aGF2ZSBiZWVuIG1vZGlmeWluZyB0aGUgdGFibGUgdG8gdGVybWluYXRlLiAgTm93CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IDYzNTY3OWNjMWYuLjY3ZTIwNzIyMGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCkBAIC0xNzAxLDIzICsxNzAxLDE3IEBAIERlZmluZUluZGV4KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hlcmUgdGhlIG5ldyB0 dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZlIGRpZmZlcmVudCBp bmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNob3QsIGFuZCBidWls ZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZpc2libGUgaW4gdGhp cyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICog V2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2lu ZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90cy4gV2UgY2FuIGJl IHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBsZXMgd2lsbCBiZSBj b21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBtYWRlCiAJICogYnkg dHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4IGFyZSBub3cgY29t bWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2libGUgdHVwbGUgaXMg ZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBleHRlbnNpb24gb2Yg dGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwogCi0JLyogU2V0IEFj dGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBtYXkgbmVlZCBpdCAq LwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJLyog UGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhfY29uY3VycmVudGx5 X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBjYW4gZG8gYXdheSB3 aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0KIAkvKgogCSAqIENv bW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkgdXBkYXRlIHZpc2li bGUuCiAJICovCkBAIC0yODc0LDggKzI4NjgsMTEgQEAgRXhlY1JlaW5kZXgoUGFyc2VTdGF0ZSAq cHN0YXRlLCBjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCX0KIAog CWlmIChjb25jdXJyZW50bHkpCisJewogCQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9w TGV2ZWwsCiAJCQkJCQkJCSAgIlJFSU5ERVggQ09OQ1VSUkVOVExZIik7CisJCVByZXZlbnRJc29s YXRpb25Vc2VzWGFjdFNuYXBzaG90KCJSRUlOREVYIENPTkNVUlJFTlRMWSIpOworCX0KIAogCXBh cmFtcy5vcHRpb25zID0KIAkJKHZlcmJvc2UgPyBSRUlOREVYT1BUX1ZFUkJPU0UgOiAwKSB8CkBA IC00MTMxLDkgKzQxMjgsNiBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAobmV3aWR4 LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3MoKTsKIAotCQkvKiBTZXQgQWN0aXZl U25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCi0J CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCiAJCS8qCiAJ CSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3Jy ZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4KQEAgLTQxNDgsNyArNDE0Miw2IEBAIFJl aW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJl bGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBu ZXcgaW5kZXggKi8KIAkJaW5kZXhfY29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwg bmV3aWR4LT5pbmRleElkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpp bmRleCA3YTZiOGI3NDlmLi5iMzAzMjQyMjI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKKyNpbmNs dWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBkb3VibGUJCWN1 cnNvcl90dXBsZV9mcmFjdGlvbiA9IERFRkFVTFRfQ1VSU09SX1RVUExFX0ZSQUNUSU9OOwpAQCAt Njk3Miw2ICs2OTczLDcgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQs IE9pZCBpbmRleE9pZCkKIAlSZWxhdGlvbgloZWFwOwogCVJlbGF0aW9uCWluZGV4OwogCVJlbE9w dEluZm8gKnJlbDsKKwlib29sCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAlp bnQJCQlwYXJhbGxlbF93b3JrZXJzOwogCUJsb2NrTnVtYmVyIGhlYXBfYmxvY2tzOwogCWRvdWJs ZQkJcmVsdHVwbGVzOwpAQCAtNzAyNyw2ICs3MDI5LDEyIEBAIHBsYW5fY3JlYXRlX2luZGV4X3dv cmtlcnMoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQpCiAJaGVhcCA9IHRhYmxlX29wZW4odGFi bGVPaWQsIE5vTG9jayk7CiAJaW5kZXggPSBpbmRleF9vcGVuKGluZGV4T2lkLCBOb0xvY2spOwog CisJLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBt YXkgbmVlZCBpdCAqLworCWlmICghQWN0aXZlU25hcHNob3RTZXQoKSkKKwl7CisJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQluZWVkX3BvcF9hY3RpdmVf c25hcHNob3QgPSB0cnVlOworCX0KIAkvKgogCSAqIERldGVybWluZSBpZiBpdCdzIHNhZmUgdG8g cHJvY2VlZC4KIAkgKgpAQCAtNzA4NCw2ICs3MDkyLDggQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29y a2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCkKIAkJcGFyYWxsZWxfd29ya2Vycy0tOwog CiBkb25lOgorCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJaW5kZXhfY2xvc2UoaW5kZXgsIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcCwg Tm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCAzNGRkNmUxOGRmLi5iMzBhMDFlNmYwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYwpAQCAtMTQ2MCw4ICsxNDYwLDExIEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCWJvb2wJCWlzX2FsdGVyX3RhYmxlOwogCiAJCQkJCWlmIChz dG10LT5jb25jdXJyZW50KQorCQkJCQl7CiAJCQkJCQlQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2Nr KGlzVG9wTGV2ZWwsCiAJCQkJCQkJCQkJCQkgICJDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIik7 CisJCQkJCQlQcmV2ZW50SXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgiQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSIpOworCQkJCQl9CiAKIAkJCQkJLyoKIAkJCQkJICogTG9vayB1cCB0aGUgcmVs YXRpb24gT0lEIGp1c3Qgb25jZSwgcmlnaHQgaGVyZSBhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dCBiL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4 dAppbmRleCA1YjI1NDAyZWJiLi5hODBmMDhhZjI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9lcnJjb2Rlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CkBA IC0yNTksNiArMjU5LDcgQEAgU2VjdGlvbjogQ2xhc3MgMjUgLSBJbnZhbGlkIFRyYW5zYWN0aW9u IFN0YXRlCiAyNVAwMiAgICBFICAgIEVSUkNPREVfSU5fRkFJTEVEX1NRTF9UUkFOU0FDVElPTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2ZhaWxlZF9zcWxfdHJhbnNhY3Rpb24KIDI1 UDAzICAgIEUgICAgRVJSQ09ERV9JRExFX0lOX1RSQU5TQUNUSU9OX1NFU1NJT05fVElNRU9VVCAg ICAgICAgICAgICAgICAgICAgaWRsZV9pbl90cmFuc2FjdGlvbl9zZXNzaW9uX3RpbWVvdXQKIDI1 UDA0ICAgIEUgICAgRVJSQ09ERV9UUkFOU0FDVElPTl9USU1FT1VUICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25fdGltZW91dAorMjVQMDUgICAgRSAgICBFUlJD T0RFX0lOQVBQUk9QUklBVEVfSVNPTEFUSU9OX0xFVkVMX0ZPUl9DT01NQU5EICAgICAgICAgICAg ICBpbmFwcHJvcHJpYXRlX2lzb2xhdGlvbl9sZXZlbF9mb3JfY29tbWFuZAogCiBTZWN0aW9uOiBD bGFzcyAyNiAtIEludmFsaWQgU1FMIFN0YXRlbWVudCBOYW1lCiAKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2lj LnBsCmluZGV4IDcwYjE4NTIxMmUuLjRhZTdiNzk2YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf YW1jaGVjay90LzAwNl9jaWMucGwKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NpYy5w bApAQCAtMTUyLDcgKzE1Miw3IEBAICRub2RlLT5wZ2JlbmNoKAogCTAsCiAJW3Fye2FjdHVhbGx5 IHByb2Nlc3NlZH1dLAogCVtxcnteJH1dLAotCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBS RUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJTi9HSVNUL0JSSU4vSEFTSC9T UEdJU1QnLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgZm9yIEdJTicsCiAJewogCQknY29uY3VycmVudF9vcHNfZ2luX2lkeCcg PT4gcSgKIAkJCVNFTEVDVCBwZ190cnlfYWR2aXNvcnlfbG9jayg0Mik6OmludGVnZXIgQVMgZ290 bG9jayBcZ3NldApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGNlNDhmYWM0MmIuLjgxNGUzZDZiMWYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKQEAgLTQzLDYgKzQzLDggQEAKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5F X01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVa RQkJCQkoMSA8PCAxKQogCisjZGVmaW5lIFNPX1JFU0VUX1NOQVBTSE9UX0VBQ0hfTl9QQUdFCQk0 MDk2CisKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRTdGF0 ZTsKIHR5cGVkZWYgc3RydWN0IEdsb2JhbFZpc1N0YXRlIEdsb2JhbFZpc1N0YXRlOwogdHlwZWRl ZiBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgVHVwbGVUYWJsZVNsb3Q7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApp bmRleCBlMmVjNTI4OWQ0Li41ZWY4YjQzMWQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI1LDYg KzI1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKKyNpbmNsdWRlICJ1dGlscy9p bmplY3Rpb25fcG9pbnQuaCIKIAogCiAjZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhP RAkiaGVhcCIKQEAgLTYzLDYgKzY0LDE3IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJ LyogdW5yZWdpc3RlciBzbmFwc2hvdCBhdCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NOQVBTSE9U ID0gMSA8PCA5LAorCS8qCisJICogUmVzZXQgc2NhbiBhbmQgY2F0YWxvZyBzbmFwc2hvdCBldmVy eSBzbyBvZnRlbj8gSWYgc28sIGVhY2gKKwkgKiBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFH RSBwYWdlcyBhY3RpdmUgc25hcHNob3QgaXMgcG9wcGVkLAorCSAqIGNhdGFsb2cgc25hcHNob3Qg aW52YWxpZGF0ZWQsIGxhdGVzdCBzbmFwc2hvdCBwdXNoZWQgYXMgYWN0aXZlLgorCSAqCisJICog QXQgdGhlIGVuZCBvZiB0aGUgc2NhbiBzbmFwc2hvdCBpcyBub3QgcG9wcGVkLgorCSAqIEdvYWwg b2Ygc3VjaCBtb2RlIGlzIGtlZXAgeG1pbiBwcm9wYWdhdGluZyBob3Jpem9uIGZvcndhcmQuCisJ ICoKKwkgKiBzZWUgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90IGZvciBkZXRhaWxzLgorCSAqLwor CVNPX1JFU0VUX1NOQVBTSE9UID0gMSA8PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAogLyoKQEAg LTg5OSw3ICs5MTEsOCBAQCBleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fY2F0 YWxvZyhSZWxhdGlvbiByZWxhdGlvbiwgaW50IG5rZXlzLAogc3RhdGljIGlubGluZSBUYWJsZVNj YW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFw c2hvdCwKIAkJCQkJICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksCi0JCQkJCSAgYm9vbCBh bGxvd19zdHJhdCwgYm9vbCBhbGxvd19zeW5jKQorCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQsIGJv b2wgYWxsb3dfc3luYywKKwkJCQkJICBib29sIHJlc2V0X3NuYXBzaG90KQogewogCXVpbnQzMgkJ ZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIApAQCAtOTA3LDYg KzkyMCwxNSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBz bmFwc2hvdCwKIAkJZmxhZ3MgfD0gU09fQUxMT1dfU1RSQVQ7CiAJaWYgKGFsbG93X3N5bmMpCiAJ CWZsYWdzIHw9IFNPX0FMTE9XX1NZTkM7CisJaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJSU5K RUNUSU9OX1BPSU5UKCJ0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzIiwgTlVM TCk7CisJCS8qIEFjdGl2ZSBzbmFwc2hvdCBpcyByZXF1aXJlZCBvbiBzdGFydC4gKi8KKwkJQXNz ZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCkgPT0gc25hcHNob3QpOworCQkvKiBBY3RpdmUgc25hcHNo b3Qgc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHRvIGtlZXAgeG1pbiBwcm9wYWdhdGluZy4gKi8K KwkJQXNzZXJ0KEdldEFjdGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJCWZsYWdz IHw9IChTT19SRVNFVF9TTkFQU0hPVCk7CisJfQogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+ c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7CiB9CkBA IC0xNzQ5LDYgKzE3NzEsMTAgQEAgdGFibGVfc2Nhbl9hbmFseXplX25leHRfdHVwbGUoVGFibGVT Y2FuRGVzYyBzY2FuLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAgKiB2ZXJ5IGhhcmQgdG8g ZGV0ZWN0IHdoZXRoZXIgdGhleSdyZSByZWFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGNoYWlu IHRpcC4KICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vuc2UgZm9yIGhlYXAgQU0sIGl0IG1p Z2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBvdGhlciBBTXMgbGF0ZXIuCisgKgor ICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGluZGV4IGFuZCBub24tcGFyYWxsZWwgY29uY3VycmVu dCBidWlsZCwKKyAqIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2FuLiBU aGF0IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBzaG90cworICogb24gdGhlIGZseSB0byBhbGxvdyB4 bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVf aW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MveGFjdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaAppbmRleCBmMGI0 ZDc5NTA3Li4yZTNmNjE3YTk0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmgKQEAgLTQ4OCw2ICs0ODgsNyBAQCBleHRl cm4gYm9vbCBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKHZvaWQpOwogZXh0ZXJuIGNo YXIgVHJhbnNhY3Rpb25CbG9ja1N0YXR1c0NvZGUodm9pZCk7CiBleHRlcm4gdm9pZCBBYm9ydE91 dE9mQW55VHJhbnNhY3Rpb24odm9pZCk7CiBleHRlcm4gdm9pZCBQcmV2ZW50SW5UcmFuc2FjdGlv bkJsb2NrKGJvb2wgaXNUb3BMZXZlbCwgY29uc3QgY2hhciAqc3RtdFR5cGUpOworZXh0ZXJuIHZv aWQgUHJldmVudElzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoY29uc3QgY2hhciAqc3RtdFR5cGUp OwogZXh0ZXJuIHZvaWQgUmVxdWlyZVRyYW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExldmVsLCBj b25zdCBjaGFyICpzdG10VHlwZSk7CiBleHRlcm4gdm9pZCBXYXJuTm9UcmFuc2FjdGlvbkJsb2Nr KGJvb2wgaXNUb3BMZXZlbCwgY29uc3QgY2hhciAqc3RtdFR5cGUpOwogZXh0ZXJuIGJvb2wgSXNJ blRyYW5zYWN0aW9uQmxvY2soYm9vbCBpc1RvcExldmVsKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9NYWtlZmlsZQppbmRleCBhNDFkNzgxZjhjLi5lZWFlYWFmMmNjIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCkBAIC05LDcgKzksNyBA QCBFWFRFTlNJT04gPSBpbmplY3Rpb25fcG9pbnRzCiBEQVRBID0gaW5qZWN0aW9uX3BvaW50cy0t MS4wLnNxbAogUEdGSUxFREVTQyA9ICJpbmplY3Rpb25fcG9pbnRzIC0gZmFjaWxpdHkgZm9yIGlu amVjdGlvbiBwb2ludHMiCiAKLVJFR1JFU1MgPSBpbmplY3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVp bmRleF9jb25jIHZhY3V1bQorUkVHUkVTUyA9IGluamVjdGlvbl9wb2ludHMgaGFzaGFnZyByZWlu ZGV4X2NvbmMgdmFjdXVtIGNpY19yZXNldF9zbmFwc2hvdHMKIFJFR1JFU1NfT1BUUyA9IC0tZGxw YXRoPSQodG9wX2J1aWxkZGlyKS9zcmMvdGVzdC9yZWdyZXNzCiAKIElTT0xBVElPTiA9IGJhc2lj IFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5iNGFkOTBlYjMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMu b3V0CkBAIC0wLDAgKzEsMTE1IEBACitDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7 CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKKyBpbmplY3Rpb25fcG9pbnRz X3NldF9sb2NhbCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlJywgJ25vdGljZScpOworIGluamVjdGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50 c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNl Jyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK0NSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFC TEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7CitJTlNFUlQg SU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwMCkgcyhpKTsKK0NSRUFURSBGVU5DVElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNh dGVfc3RhYmxlKGludGVnZXIpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFO R1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJy ZW50KCknOworICAgIFJFVFVSTiBNT0QoJDEsIDIpID0gMDsKK0VORDsgJCQ7CitDUkVBVEUgRlVO Q1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMg Ym9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4K KyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsK K0VORDsgJCQ7CistLS0tLS0tLS0tLS0tLS0tCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVS RSBNT0QoaSwgMikgPSAwOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5v dGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNo b3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVf YmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNf cmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJl ZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hv dHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jl c2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rp b24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAg bm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChp LCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitO T1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK0RST1AgSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBVU0lORyBCUklOKGkpOworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKKy0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxF IGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9Mik7CitDUkVBVEUgVU5J UVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3Nu YXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3Rh YmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRh YmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmln Z2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0 aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJ Q0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2Fu X3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5q ZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJS RU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25h cC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAu aWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs IFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25h cC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitCRUdJ TiBUUkFOU0FDVElPTjsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKK0VSUk9SOiAgQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBjYW5ub3Qg cnVuIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrCitST0xMQkFDSyA7CitTRVQgZGVmYXVsdF90 cmFuc2FjdGlvbl9pc29sYXRpb24gPSBzZXJpYWxpemFibGU7CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitFUlJPUjogIENSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgZG9lcyBub3Qgc3VwcG9ydCB0cmFuc2FjdGlvbiBpc29sYXRpb24gaGln aGVyIHRoYW4gUkVBRCBDT01NSVRURUQKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0VSUk9SOiAgUkVJTkRFWCBDT05DVVJSRU5UTFkgZG9lcyBub3Qgc3Vw cG9ydCB0cmFuc2FjdGlvbiBpc29sYXRpb24gaGlnaGVyIHRoYW4gUkVBRCBDT01NSVRURUQKK1JF U0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uOworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0 X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMyBvdGhlciBvYmplY3Rz CitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGNpY19yZXNldF9zbmFwLnRibAorZHJv cCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGlu dGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGNpY19yZXNldF9zbmFwLnByZWRpY2F0 ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCBi L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAppbmRleCBmY2M4 NTQxNDUxLi41ZDI5OGNkMjcxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlv bl9wb2ludHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9p bnRzL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3IEBAIHRlc3RzICs9IHsKICAgICAgICdoYXNo YWdnJywKICAgICAgICdyZWluZGV4X2NvbmMnLAogICAgICAgJ3ZhY3V1bScsCisgICAgICAnY2lj X3Jlc2V0X3NuYXBzaG90cycsCiAgICAgXSwKICAgICAncmVncmVzc19hcmdzJzogWyctLWRscGF0 aCcsIG1lc29uLnByb2plY3RfYnVpbGRfcm9vdCgpIC8gJ3NyYy90ZXN0L3JlZ3Jlc3MnXSwKICAg ICAjIFRoZSBpbmplY3Rpb24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2FibGUgaW5z dGFsbGNoZWNrCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMv c3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi43ZjdkZmZhNWJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApAQCAt MCwwICsxLDk1IEBACitDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CisKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCgpOworU0VMRUNUIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOwor U0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCd0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzJywgJ25vdGljZScpOworCisKK0NSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3Nu YXA7CitDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBq IGludCk7CitJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKKworQ1JFQVRFIEZVTkNUSU9OIGNpY19y ZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaW50ZWdlcikgUkVUVVJOUyBib29sIElNTVVUQUJM RQorCQkJCQkJCQkJICBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIEVYRUNVVEUg J1NFTEVDVCB0eGlkX2N1cnJlbnQoKSc7CisgICAgUkVUVVJOIE1PRCgkMSwgMikgPSAwOworRU5E OyAkJDsKKworQ1JFQVRFIEZVTkNUSU9OIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVf bm9fcGFyYW0oKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBs cGdzcWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsK KyAgICBSRVRVUk4gZmFsc2U7CitFTkQ7ICQkOworCistLS0tLS0tLS0tLS0tLS0tCitBTFRFUiBU QUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOworCitDUkVB VEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBj aWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNp Y19yZXNldF9zbmFwLnRibChNT0QoaSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlO REVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5w cmVkaWNhdGVfc3RhYmxlKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4Owor CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwg aikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVO VExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQor QUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsK KworQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFw LnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElO REVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAw OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09O Q1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0 X3NuYXAucHJlZGljYXRlX3N0YWJsZShpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNp Y19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAu dGJsKGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0o KTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1Ag SU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENP TkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkgREVTQyBOVUxMUyBMQVNUKTsK K1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5E RVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0JFR0lOIFRSQU5TQUNUSU9OOworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUk9MTEJB Q0sgOworCitTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24gPSBzZXJpYWxpemFibGU7 CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitSRVNFVCBk ZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3Nu YXAgQ0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0gCjIuNDMu MAoK --000000000000d4a3fc0648706fee Content-Type: application/x-patch; name="v1-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v1-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkfl6o892 RnJvbSBjY2U0ODUxZmQ2ZjQyZjYwMjNlNTIyMDI5ZDc4N2VkNDIzNzk3ODBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxODo0NTo1NiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjEgMy80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJy ZW50IGluZGV4CiBidWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0 IHRvIHBhcmFsbGVsIGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBv cGVyYXRpb25zLiBUaGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5n IHBhcmFsbGVsIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1p dGF0aW9uIG9mIGFwcGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMg YSByZXF1aXJlbWVudCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVp ciBpbml0aWFsIHNuYXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dp bmcgY2hhbmdlcyBhcHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hv dCByZXN0b3JhdGlvbiBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4g aW5pdGlhbGl6YXRpb24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0 IGZvciBwYXJhbGxlbCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMg YmVmb3JlIHByb2NlZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxs ZWwgd29ya2VyIHRvIGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTEgKysrKysrKysr LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwg MTIgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwg NjAgKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgMzcgKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9wYXJhbGxlbC5jICAgICAgICAgfCA0OSArKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3Rp bWUvc25hcG1nci5jICAgICAgICAgICAgICB8ICA4IC0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Bh cmFsbGVsLmggICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICAgICB8ICA1ICstCiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsICAgICAgICAgICAgICAgfCAgNSArLQogMTQgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlv bnMoKyksIDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwppbmRleCA0Mjg0NGIy ZWJkLi42ZTQzZGIwYmRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xNDMsNyArMTQzLDYg QEAgdHlwZWRlZiBzdHJ1Y3QgQnJpbkxlYWRlcgogCSAqLwogCUJyaW5TaGFyZWQgKmJyaW5zaGFy ZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDsKLQlTbmFwc2hvdAlzbmFwc2hvdDsKIAlXYWxV c2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiB9IEJyaW5MZWFk ZXI7CkBAIC0yMzEsNyArMjMwLDcgQEAgc3RhdGljIHZvaWQgYnJpbl9maWxsX2VtcHR5X3Jhbmdl cyhCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiBzdGF0aWMgdm9pZCBfYnJpbl9iZWdpbl9wYXJhbGxl bChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJCQkJCQkJCSBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpOwogc3RhdGljIHZv aWQgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0 YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQo UmVsYXRpb24gaGVhcCwgU25hcHNob3Qgc25hcHNob3QpOworc3RhdGljIFNpemUgX2JyaW5fcGFy YWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXApOwogc3RhdGljIGRvdWJsZSBfYnJp bl9wYXJhbGxlbF9oZWFwc2NhbihCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIGRvdWJs ZSBfYnJpbl9wYXJhbGxlbF9tZXJnZShCcmluQnVpbGRTdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZv aWQgX2JyaW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtlcihCcmluQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwKQEAgLTEyMjIsNyArMTIyMSw2IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IF9icmlu X3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfYnJpbl9lbmRfcGFyYWxsZWwoc3RhdGUtPmJz X2xlYWRlciwgc3RhdGUpOwotCQlBc3NlcnQoIWluZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAh VHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBu byBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAgLTEyNTUsNyArMTI1Myw2IEBAIGJyaW5i dWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8p CiAJCWJyaW5fZmlsbF9lbXB0eV9yYW5nZXMoc3RhdGUsCiAJCQkJCQkJICAgc3RhdGUtPmJzX2N1 cnJSYW5nZVN0YXJ0LAogCQkJCQkJCSAgIHN0YXRlLT5ic19tYXhSYW5nZVN0YXJ0KTsKLQkJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVzb3VyY2VzICovCkBAIC0xMjcxLDYg KzEyNjgsOSBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4 SW5mbyAqaW5kZXhJbmZvKQogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVz dWx0LT5pbmRleF90dXBsZXMgPSBpZHh0dXBsZXM7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBz aG90KCk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjM4 Myw3ICsyMzgzLDYgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogewogCVBhcmFsbGVsQ29udGV4 dCAqcGN4dDsKIAlpbnQJCQlzY2FudHVwbGVzb3J0c3RhdGVzOwotCVNuYXBzaG90CXNuYXBzaG90 OwogCVNpemUJCWVzdGJyaW5zaGFyZWQ7CiAJU2l6ZQkJZXN0c29ydDsKIAlCcmluU2hhcmVkICpi cmluc2hhcmVkOwpAQCAtMjQxNCwyNSArMjQxMywyNSBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChC cmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFs IGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0 cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJl Y2F1c2Ugd2UgaGF2ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCi0JICog Y29uY3VycmVudCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5k ZXggd2hhdGV2ZXIncwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogY29uY3VycmVu dCBidWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgcHVzaCBpdCBhcyBh Y3RpdmUuCisJICogTGF0ZXIgd2UgaW5kZXggd2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0 aGF0IHNuYXBzaG90IHdoaWxlIHRoYXQKKwkgKiBzbmFwc2hvdCBpcyByZXNldCBwZXJpb2RpY2Fs bHkuCiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewogCQlBc3NlcnQoQWN0aXZlU25hcHNo b3RTZXQoKSk7Ci0JCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IGZhbHNlOwogCX0KIAllbHNlCiAJewotCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJQXNzZXJ0KCFBY3RpdmVTbmFwc2hv dFNldCgpKTsKIAkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7 CiAJfQogCiAJLyoKIAkgKiBFc3RpbWF0ZSBzaXplIGZvciBvdXIgb3duIFBBUkFMTEVMX0tFWV9C UklOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJICovCi0JZXN0YnJpbnNoYXJlZCA9IF9icmluX3BhcmFs bGVsX2VzdGltYXRlX3NoYXJlZChoZWFwLCBzbmFwc2hvdCk7CisJZXN0YnJpbnNoYXJlZCA9IF9i cmluX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChoZWFwKTsKIAlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVzdGJyaW5zaGFyZWQpOwogCWVzdHNvcnQgPSB0dXBsZXNv cnRfZXN0aW1hdGVfc2hhcmVkKHNjYW50dXBsZXNvcnRzdGF0ZXMpOwogCXNobV90b2NfZXN0aW1h dGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0c29ydCk7CkBAIC0yNDcyLDggKzI0NzEsNiBA QCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBz aG90KSkKLQkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ryb3lQYXJhbGxl bENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKIAkJcmV0dXJuOwpAQCAtMjQ5 OCw3ICsyNDk1LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUoaGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkZyb21Ccmlu U2hhcmVkKGJyaW5zaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkJICBpc2Nv bmN1cnJlbnQgPyBJbnZhbGlkU25hcHNob3QgOiBTbmFwc2hvdEFueSwKKwkJCQkJCQkJICBpc2Nv bmN1cnJlbnQpOwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZhdGUgc3Rh dGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTI1NDQsNyArMjU0Miw2IEBAIF9i cmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJYnJpbmxlYWRlci0+bnBhcnRpY2lwYW50dHVwbGVzb3J0 cysrOwogCWJyaW5sZWFkZXItPmJyaW5zaGFyZWQgPSBicmluc2hhcmVkOwogCWJyaW5sZWFkZXIt PnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0OwotCWJyaW5sZWFkZXItPnNuYXBzaG90ID0gc25hcHNo b3Q7CiAJYnJpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKIAlicmlubGVhZGVyLT5idWZm ZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOwogCkBAIC0yNTYwLDYgKzI1NTcsMTMgQEAgX2JyaW5fYmVn aW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xlYXIg YnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJzX2xlYWRlciA9IGJyaW5s ZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCBzbmFwc2hvdHMg YXJlIGdvaW5nIHRvIGJlIHJlc2V0IHBlcmlvZGljYWxseS4KKwkgKiBXZSBuZWVkIHRvIHdhaXQg dW50aWwgYWxsIHdvcmtlcnMgaW1wb3J0ZWQgaW5pdGlhbCBzbmFwc2hvdC4KKwkgKi8KKwlpZiAo aXNjb25jdXJyZW50KQorCQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1 ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJzZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGlj aXBhdGVzKQogCQlfYnJpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKGJ1aWxkc3RhdGUs IGhlYXAsIGluZGV4KTsKQEAgLTI1NjgsOSArMjU3MiwxMyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxl bChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdo ZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBj YXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkgKi8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9BdHRhY2gocGN4dCk7CisJaWYgKCFpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdv cmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hv dCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwlBc3NlcnQoIWJyaW5sZWFkZXItPmJyaW5zaGFyZWQtPmlzY29uY3VycmVudCB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0yNTkxLDkgKzI1 OTksNiBAQCBfYnJpbl9lbmRfcGFyYWxsZWwoQnJpbkxlYWRlciAqYnJpbmxlYWRlciwgQnJpbkJ1 aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBicmlubGVhZGVyLT5wY3h0LT5ud29y a2Vyc19sYXVuY2hlZDsgaSsrKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnJpbmxlYWRl ci0+YnVmZmVydXNhZ2VbaV0sICZicmlubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVl IGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlm IChJc01WQ0NTbmFwc2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCkpCi0JCVVucmVnaXN0ZXJTbmFw c2hvdChicmlubGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChicmlu bGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0yNzkzLDE0ICsyNzk4 LDE0IEBAIF9icmluX3BhcmFsbGVsX21lcmdlKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAogLyoK ICAqIFJldHVybnMgc2l6ZSBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIHRvIHN0b3JlIHN0YXRl IGZvciBhIHBhcmFsbGVsCi0gKiBicmluIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hv dCBpdHMgcGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGJyaW4gaW5kZXggYnVpbGQuCiAgKi8K IHN0YXRpYyBTaXplCi1fYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVh cCwgU25hcHNob3Qgc25hcHNob3QpCitfYnJpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVs YXRpb24gaGVhcCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5IEJVRkZF UkFMSUdOIGlzIHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6ZW9mKEJy aW5TaGFyZWQpKSwKLQkJCQkJdGFibGVfcGFyYWxsZWxzY2FuX2VzdGltYXRlKGhlYXAsIHNuYXBz aG90KSk7CisJCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBJbnZhbGlkU25h cHNob3QpKTsKIH0KIAogLyoKQEAgLTI5NjIsNiArMjk2NywxMyBAQCBfYnJpbl9wYXJhbGxlbF9i dWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9icmluX3BhcmFs bGVsX3NjYW5fYW5kX2J1aWxkKGJ1aWxkc3RhdGUsIGJyaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKKwlpZiAoYnJpbnNo YXJlZC0+aXNjb25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxp ZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKKwl9CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwg ZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmlu ZGV4IDY1M2NhNTBiOTYuLjNhYTAxNWYwNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQu YwpAQCAtMTMzLDcgKzEzMyw2IEBAIHR5cGVkZWYgc3RydWN0IEdpbkxlYWRlcgogCSAqLwogCUdp bkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CiAJU2hhcmVkc29ydCAqc2hhcmVkc29ydDsKLQlTbmFw c2hvdAlzbmFwc2hvdDsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVm ZmVydXNhZ2U7CiB9IEdpbkxlYWRlcjsKQEAgLTE4Myw3ICsxODIsNyBAQCB0eXBlZGVmIHN0cnVj dAogc3RhdGljIHZvaWQgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0 YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJCQkJCQkJYm9vbCBpc2NvbmN1 cnJlbnQsIGludCByZXF1ZXN0KTsKIHN0YXRpYyB2b2lkIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxl YWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRlICpzdGF0ZSk7Ci1zdGF0aWMgU2l6ZSBfZ2lu X3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hv dCk7CitzdGF0aWMgU2l6ZSBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBo ZWFwKTsKIHN0YXRpYyBkb3VibGUgX2dpbl9wYXJhbGxlbF9oZWFwc2NhbihHaW5CdWlsZFN0YXRl ICpzdGF0ZSk7CiBzdGF0aWMgZG91YmxlIF9naW5fcGFyYWxsZWxfbWVyZ2UoR2luQnVpbGRTdGF0 ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCkBAIC03NTAsNyArNzQ5LDYgQEAgZ2luYnVpbGQo UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQly ZWx0dXBsZXMgPSBfZ2luX3BhcmFsbGVsX21lcmdlKHN0YXRlKTsKIAogCQlfZ2luX2VuZF9wYXJh bGxlbChzdGF0ZS0+YnNfbGVhZGVyLCBzdGF0ZSk7Ci0JCUFzc2VydCghaW5kZXhJbmZvLT5paV9D b25jdXJyZW50IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAl9CiAJ ZWxzZQkJCQkJCS8qIG5vIHBhcmFsbGVsIGluZGV4IGJ1aWxkICovCiAJewpAQCAtNzc0LDcgKzc3 Miw2IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJCQkJCSAgIGxpc3QsIG5saXN0LCAmYnVpbGRzdGF0ZS5idWlsZFN0YXRz KTsKIAkJfQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ3R4KTsKLQkJQXNzZXJ0KCFpbmRl eEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOwogCX0KIAogCU1lbW9yeUNvbnRleHREZWxldGUoYnVpbGRzdGF0ZS5mdW5jQ3R4KTsKQEAg LTgwNCw2ICs4MDEsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0gcmVsdHVwbGVz OwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7CisJQXNzZXJ0 KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJv Yy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTkzOCw3ICs5MzYsNiBAQCBfZ2lu X2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogewogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsKIAlpbnQJCQlzY2Fu dHVwbGVzb3J0c3RhdGVzOwotCVNuYXBzaG90CXNuYXBzaG90OwogCVNpemUJCWVzdGdpbnNoYXJl ZDsKIAlTaXplCQllc3Rzb3J0OwogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CkBAIC05Njgs MjUgKzk2NSwyNSBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3Rh dGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCSAqIFByZXBhcmUgZm9yIHNjYW4g b2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCiAJ ICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRv IG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXgg UkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQotCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRh a2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGluZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZl IGFjY29yZGluZyB0byB0aGF0LgorCSAqIGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1 bGFyIE1WQ0Mgc25hcHNob3QgYW5kIHB1c2ggaXQgYXMgYWN0aXZlLgorCSAqIExhdGVyIHdlIGlu ZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCBzbmFwc2hvdCB3aGlsZSB0aGF0 CisJICogc25hcHNob3QgaXMgcmVzZXQgcGVyaW9kaWNhbGx5LgogCSAqLwogCWlmICghaXNjb25j dXJyZW50KQogCXsKIAkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwotCQlzbmFwc2hvdCA9 IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKIAl9CiAJ ZWxzZQogCXsKLQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCUFzc2VydCghQWN0aXZlU25hcHNob3RTZXQoKSk7CiAJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwogCX0KIAogCS8qCiAJICogRXN0aW1h dGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlfR0lOX1NIQVJFRCB3b3Jrc3BhY2UuCiAJ ICovCi0JZXN0Z2luc2hhcmVkID0gX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoaGVhcCwg c25hcHNob3QpOworCWVzdGdpbnNoYXJlZCA9IF9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVk KGhlYXApOwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgZXN0Z2lu c2hhcmVkKTsKIAllc3Rzb3J0ID0gdHVwbGVzb3J0X2VzdGltYXRlX3NoYXJlZChzY2FudHVwbGVz b3J0c3RhdGVzKTsKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIGVz dHNvcnQpOwpAQCAtMTAyNiw4ICsxMDIzLDYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl7CiAJ CWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwot CQlpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQotCQkJVW5yZWdpc3RlclNuYXBzaG90KHNu YXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKIAkJRXhpdFBhcmFsbGVs TW9kZSgpOwogCQlyZXR1cm47CkBAIC0xMDUxLDcgKzEwNDYsOCBAQCBfZ2luX2JlZ2luX3BhcmFs bGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGlu ZGV4LAogCiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoaGVhcCwKIAkJCQkJCQkJICBQ YXJhbGxlbFRhYmxlU2NhbkZyb21HaW5CdWlsZFNoYXJlZChnaW5zaGFyZWQpLAotCQkJCQkJCQkg IHNuYXBzaG90KTsKKwkJCQkJCQkJICBpc2NvbmN1cnJlbnQgPyBJbnZhbGlkU25hcHNob3QgOiBT bmFwc2hvdEFueSwKKwkJCQkJCQkJICBpc2NvbmN1cnJlbnQpOwogCiAJLyoKIAkgKiBTdG9yZSBz aGFyZWQgdHVwbGVzb3J0LXByaXZhdGUgc3RhdGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFj ZS4KQEAgLTEwOTMsNyArMTA4OSw2IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0 ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCWdpbmxlYWRl ci0+bnBhcnRpY2lwYW50dHVwbGVzb3J0cysrOwogCWdpbmxlYWRlci0+Z2luc2hhcmVkID0gZ2lu c2hhcmVkOwogCWdpbmxlYWRlci0+c2hhcmVkc29ydCA9IHNoYXJlZHNvcnQ7Ci0JZ2lubGVhZGVy LT5zbmFwc2hvdCA9IHNuYXBzaG90OwogCWdpbmxlYWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsK IAlnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVmZmVydXNhZ2U7CiAKQEAgLTExMDksNiArMTEw NCwxMyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0 aGF0IGl0J3MgY2xlYXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJz X2xlYWRlciA9IGdpbmxlYWRlcjsKIAorCS8qCisJICogSW4gY2FzZSBvZiBjb25jdXJyZW50IGJ1 aWxkIHNuYXBzaG90cyBhcmUgZ29pbmcgdG8gYmUgcmVzZXQgcGVyaW9kaWNhbGx5LgorCSAqIFdl IG5lZWQgdG8gd2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90 LgorCSAqLworCWlmIChpc2NvbmN1cnJlbnQpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChwY3h0LCB0cnVlKTsKKwogCS8qIEpvaW4gaGVhcCBzY2FuIG91cnNlbHZlcyAqLwogCWlm IChsZWFkZXJwYXJ0aWNpcGF0ZXMpCiAJCV9naW5fbGVhZGVyX3BhcnRpY2lwYXRlX2FzX3dvcmtl cihidWlsZHN0YXRlLCBoZWFwLCBpbmRleCk7CkBAIC0xMTE3LDkgKzExMTksMTIgQEAgX2dpbl9i ZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwKIAkgKiBDYWxsZXIgbmVlZHMgdG8gd2FpdCBmb3IgYWxsIGxhdW5jaGVk IHdvcmtlcnMgd2hlbiB3ZSByZXR1cm4uICBNYWtlCiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJl LXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBmb3JldmVyLgogCSAqLwotCVdhaXRGb3JQYXJh bGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlpZiAoIWlzY29uY3VycmVudCkKKwkJV2FpdEZv clBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsKIAlpZiAobmVlZF9wb3BfYWN0 aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCUludmFsaWRhdGVDYXRhbG9n U25hcHNob3QoKTsKKwlBc3NlcnQoIWdpbmxlYWRlci0+Z2luc2hhcmVkLT5pc2NvbmN1cnJlbnQg fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogfQogCiAvKgpAQCAtMTE0 MCw5ICsxMTQ1LDYgQEAgX2dpbl9lbmRfcGFyYWxsZWwoR2luTGVhZGVyICpnaW5sZWFkZXIsIEdp bkJ1aWxkU3RhdGUgKnN0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBnaW5sZWFkZXItPnBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZnaW5sZWFk ZXItPmJ1ZmZlcnVzYWdlW2ldLCAmZ2lubGVhZGVyLT53YWx1c2FnZVtpXSk7CiAKLQkvKiBGcmVl IGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNob3QsIGlmIG9uZSB3YXMgdXNlZCAqLwotCWlm IChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXItPnNuYXBzaG90KSkKLQkJVW5yZWdpc3RlclNuYXBz aG90KGdpbmxlYWRlci0+c25hcHNob3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQoZ2lubGVh ZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CiB9CkBAIC0xODE3LDE0ICsxODE5LDE0 IEBAIF9naW5fcGFyYWxsZWxfbWVyZ2UoR2luQnVpbGRTdGF0ZSAqc3RhdGUpCiAKIC8qCiAgKiBS ZXR1cm5zIHNpemUgb2Ygc2hhcmVkIG1lbW9yeSByZXF1aXJlZCB0byBzdG9yZSBzdGF0ZSBmb3Ig YSBwYXJhbGxlbAotICogZ2luIGluZGV4IGJ1aWxkIGJhc2VkIG9uIHRoZSBzbmFwc2hvdCBpdHMg cGFyYWxsZWwgc2NhbiB3aWxsIHVzZS4KKyAqIGdpbiBpbmRleCBidWlsZC4KICAqLwogc3RhdGlj IFNpemUKLV9naW5fcGFyYWxsZWxfZXN0aW1hdGVfc2hhcmVkKFJlbGF0aW9uIGhlYXAsIFNuYXBz aG90IHNuYXBzaG90KQorX2dpbl9wYXJhbGxlbF9lc3RpbWF0ZV9zaGFyZWQoUmVsYXRpb24gaGVh cCkKIHsKIAkvKiBjLmYuIHNobV90b2NfYWxsb2NhdGUgYXMgdG8gd2h5IEJVRkZFUkFMSUdOIGlz IHVzZWQgKi8KIAlyZXR1cm4gYWRkX3NpemUoQlVGRkVSQUxJR04oc2l6ZW9mKEdpbkJ1aWxkU2hh cmVkKSksCi0JCQkJCXRhYmxlX3BhcmFsbGVsc2Nhbl9lc3RpbWF0ZShoZWFwLCBzbmFwc2hvdCkp OworCQkJCQl0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoaGVhcCwgSW52YWxpZFNuYXBzaG90 KSk7CiB9CiAKIC8qCkBAIC0yMjA5LDYgKzIyMTEsMTMgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9t YWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCV9naW5fcGFyYWxsZWxfc2Nh bl9hbmRfYnVpbGQoJmJ1aWxkc3RhdGUsIGdpbnNoYXJlZCwgc2hhcmVkc29ydCwKIAkJCQkJCQkJ IGhlYXBSZWwsIGluZGV4UmVsLCBzb3J0bWVtLCBmYWxzZSk7CisJaWYgKGdpbnNoYXJlZC0+aXNj b25jdXJyZW50KQorCXsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJSW52YWxpZGF0ZUNhdGFs b2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1p bikpOworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9 CiAKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9u ICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZG RVJfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CmluZGV4IDg3MjQ0MTNlNTEuLmM1MTU2ZDUzNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwpAQCAtMTIzNSwxNCArMTIzNSwxMyBAQCBoZWFwYW1faW5kZXhfYnVp bGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RBbnkgYmVj YXVzZSB3ZSBtdXN0IHJldHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAq IHF1YWwgY2hlY2tzIChiZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBs ZXMpLiBJbiBhCiAJICogY29uY3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2Ug dGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxp dmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2Nv cmRpbmcgdG8gdGhhdCB3aGlsZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZlcnkgc28g b2Z0ZW4gKGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCkuCiAJICovCiAJT2xkZXN0WG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJLyoKIAkgKiBGb3IgdW5pcXVlIGluZGV4IHdlIG5l ZWQgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCi0JICogSW4gY2FzZSBv ZiBwYXJhbGxlbCBzY2FuIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVjdHVyZSByZXF1aXJlZAot CSAqIHRvIHBlcmZvcm0gc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5 ZXQgcmVhZHkuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ICYmCiAJCQkJCSAgIWluZGV4SW5mby0+aWlfVW5pcXVlICYmCkBAIC0xMzA0LDggKzEzMDMs MTEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxv d19zeW5jKTsKIAkJc25hcHNob3QgPSBzY2FuLT5yc19zbmFwc2hvdDsKLQkJUHVzaEFjdGl2ZVNu YXBzaG90KHNuYXBzaG90KTsKLQkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKKwkJ aWYgKCFyZXNldF9zbmFwc2hvdHMpCisJCXsKKwkJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hv dCk7CisJCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOworCQl9CiAJfQogCiAJaHNj YW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpp bmRleCBhMWE1YTFkYjliLi5kNTVlMjA1MDcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwpAQCAtMzIyLDIyICszMjIsMjAgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaW5kZXgpKTsKIAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5k ZXgsICZidWlsZHN0YXRlLCBpbmRleEluZm8pOwotCUFzc2VydChpbmRleEluZm8tPmlpX1BhcmFs bGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFpbmRleEluZm8tPmlp X0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCUFz c2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8 ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogRmluaXNo IHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bvb2wgZmlsZSwg KDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUgcGFnZXMgYW5k ICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBpdCBtYXkgYWxz byBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8KLQlfYnRfbGVh ZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJbmZvLT5p aV9QYXJhbGxlbFdvcmtlcnMgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKKwlfYnRfbGVh ZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCAhaW5kZXhJbmZvLT5p aV9VbmlxdWUgJiYgaW5kZXhJbmZvLT5paV9Db25jdXJyZW50KTsKIAlfYnRfc3Bvb2xkZXN0cm95 KGJ1aWxkc3RhdGUuc3Bvb2wpOwogCWlmIChidWlsZHN0YXRlLnNwb29sMikKIAkJX2J0X3Nwb29s ZGVzdHJveShidWlsZHN0YXRlLnNwb29sMik7CiAJaWYgKGJ1aWxkc3RhdGUuYnRsZWFkZXIpCiAJ CV9idF9lbmRfcGFyYWxsZWwoYnVpbGRzdGF0ZS5idGxlYWRlcik7Ci0JQXNzZXJ0KGluZGV4SW5m by0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5mby0+aWlfVW5pcXVlIHx8Ci0JCSAgIWlu ZGV4SW5mby0+aWlfQ29uY3VycmVudCB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CisJQXNzZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgfHwgaW5kZXhJbmZvLT5p aV9VbmlxdWUgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmVz dWx0ID0gcGFsbG9jX29iamVjdChJbmRleEJ1aWxkUmVzdWx0KTsKIApAQCAtNDg2LDggKzQ4NCw3 IEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkJcmVsdHVwbGVzID0gX2J0X3BhcmFsbGVsX2hlYXBz Y2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFp bik7CiAJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwotCUFzc2VydChpbmRleEluZm8tPmlp X1BhcmFsbGVsV29ya2VycyB8fCBpbmRleEluZm8tPmlpX1VuaXF1ZSB8fAotCQkgICFpbmRleElu Zm8tPmlpX0NvbmN1cnJlbnQgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikp OworCUFzc2VydCghaW5kZXhJbmZvLT5paV9Db25jdXJyZW50IHx8IGluZGV4SW5mby0+aWlfVW5p cXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICog U2V0IHRoZSBwcm9ncmVzcyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJs b2NrIG51bWJlcgpAQCAtMTQxOSw2ICsxNDE2LDcgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVp bGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCUJ1 ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVl OwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJcmVzZXRf c25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJU SUNJUEFUSU9OCkBAIC0xNDM2LDEyICsxNDM0LDIxIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1 aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAog CXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6 IHJlcXVlc3Q7CiAKKyAgICAvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUgaW5kZXgg YnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0IHNuYXBzaG90cworCSAqIHRvIGFsbG93 IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gVGhpcyBpcyBzYWZlIHNpbmNlIHRoZXNlIGJ1 aWxkcyBkb24ndAorCSAqIHJlcXVpcmUgYSBjb25zaXN0ZW50IHZpZXcgYWNyb3NzIHRoZSBlbnRp cmUgc2Nhbi4gVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZAorCSAqIGEgc3RhYmxlIHNuYXBzaG90 IHRvIHByb3Blcmx5IGVuZm9yY2UgdW5pcXVlbmVzcyBjb25zdHJhaW50cy4KKyAgICAgKi8KKwly ZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhYnRzcG9vbC0+aXN1bmlxdWU7CisKIAkv KgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVsYXRpb24uICBJbiBhIG5vcm1h bCBpbmRleCBidWlsZCwgd2UgdXNlCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJl dHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChi ZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiAgSW4gYQogCSAq IGNvbmN1cnJlbnQgYnVpbGQsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QgYW5kIGlu ZGV4IHdoYXRldmVyJ3MKLQkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgorCSAqIGxpdmUgYWNj b3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJlIHJlc2V0IHBlcmlvZGlj YWxseSBpbgorCSAqIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleC4KIAkgKi8KIAlpZiAoIWlzY29u Y3VycmVudCkKIAl7CkBAIC0xNDQ5LDYgKzE0NTYsMTEgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJU QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQog CQlzbmFwc2hvdCA9IFNuYXBzaG90QW55OwogCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBm YWxzZTsKIAl9CisJZWxzZSBpZiAocmVzZXRfc25hcHNob3QpCisJeworCQlzbmFwc2hvdCA9IElu dmFsaWRTbmFwc2hvdDsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CisJfQogCWVsc2UKIAl7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwpAQCAtMTUwOSw3ICsxNTIxLDcgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCXsKIAkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7Ci0JCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJCWlmIChzbmFw c2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQkJ VW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJRGVzdHJveVBhcmFsbGVsQ29udGV4dChw Y3h0KTsKIAkJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTUzNiw3ICsxNTQ4LDggQEAgX2J0X2Jl Z2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQs IGludCByZXF1ZXN0KQogCWJ0c2hhcmVkLT5icm9rZW5ob3RjaGFpbiA9IGZhbHNlOwogCXRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKGJ0c3Bvb2wtPmhlYXAsCiAJCQkJCQkJCSAgUGFyYWxs ZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBzaG90KTsK KwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hvdCk7CiAKIAkvKgog CSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJl c2VydmVkIHNwYWNlLgpAQCAtMTYxMiw2ICsxNjI1LDEzIEBAIF9idF9iZWdpbl9wYXJhbGxlbChC VEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkK IAkvKiBTYXZlIGxlYWRlciBzdGF0ZSBub3cgdGhhdCBpdCdzIGNsZWFyIGJ1aWxkIHdpbGwgYmUg cGFyYWxsZWwgKi8KIAlidWlsZHN0YXRlLT5idGxlYWRlciA9IGJ0bGVhZGVyOwogCisJLyoKKwkg KiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgc25hcHNob3RzIGFyZSBnb2luZyB0byBiZSBy ZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRpbCBhbGwgd29ya2VycyBpbXBvcnRlZCBp bml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNldF9zbmFwc2hvdCkKKwkJV2FpdEZvclBh cmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4g b3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lwYXRlcykKIAkJX2J0X2xlYWRlcl9wYXJ0 aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBAIC0xNjIwLDkgKzE2NDAsMTMgQEAgX2J0 X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJl bnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNo ZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1 cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JV2FpdEZvclBh cmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghcmVzZXRfc25hcHNob3QpCisJCVdh aXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9w X2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIXJlc2V0X3NuYXBzaG90fHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogfQogCiAvKgpAQCAtMTY0NCw3ICsxNjY4LDcgQEAg X2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJCUluc3RyQWNjdW1QYXJhbGxl bFF1ZXJ5KCZidGxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZidGxlYWRlci0+d2FsdXNhZ2VbaV0p OwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2Fz IHVzZWQgKi8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNuYXBzaG90KSkKKwlpZiAo YnRsZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChi dGxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25hcHNob3QoYnRsZWFkZXItPnNuYXBz aG90KTsKIAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KGJ0bGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFy YWxsZWxNb2RlKCk7CkBAIC0xODk0LDYgKzE5MTgsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRf c29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAlTb3J0Q29vcmRpbmF0 ZSBjb29yZGluYXRlOwogCUJUQnVpbGRTdGF0ZSBidWlsZHN0YXRlOwogCVRhYmxlU2NhbkRlc2Mg c2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJZG91YmxlCQlyZWx0dXBsZXM7 CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0xOTQ4LDExICsxOTczLDE1IEBAIF9idF9w YXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wy LAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJbmZv KGJ0c3Bvb2wtPmluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBidHNoYXJlZC0+ aXNjb25jdXJyZW50OwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoYnRzcG9vbC0+ aGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKSk7 CisJcHNjYW4gPSBQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCk7CisJc2Nh biA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChidHNwb29sLT5oZWFwLCBwc2Nhbik7CiAJcmVs dHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihidHNwb29sLT5oZWFwLCBidHNwb29sLT5p bmRleCwgaW5kZXhJbmZvLAogCQkJCQkJCQkJICAgdHJ1ZSwgcHJvZ3Jlc3MsIF9idF9idWlsZF9j YWxsYmFjaywKIAkJCQkJCQkJCSAgICZidWlsZHN0YXRlLCBzY2FuKTsKKwlJbnZhbGlkYXRlQ2F0 YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QpCisJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90IHx8ICFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIEV4ZWN1dGUgdGhpcyB3 b3JrZXIncyBwYXJ0IG9mIHRoZSBzb3J0ICovCiAJaWYgKHByb2dyZXNzKQpAQCAtMTk4OCw0ICsy MDE3LDcgQEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRT cG9vbCAqYnRzcG9vbDIsCiAJdHVwbGVzb3J0X2VuZChidHNwb29sLT5zb3J0c3RhdGUpOwogCWlm IChidHNwb29sMikKIAkJdHVwbGVzb3J0X2VuZChidHNwb29sMi0+c29ydHN0YXRlKTsKKwlBc3Nl cnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15 UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFi bGUvdGFibGVhbS5jCmluZGV4IDg3NDkxNzk2NTIuLjkxZGNhYjNmZjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYwpAQCAtMTMyLDEwICsxMzIsMTAgQEAgdGFibGVfcGFyYWxsZWxzY2Fu X2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJU2l6ZQkJc3og PSAwOwogCi0JaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwlpZiAoc25hcHNob3QgIT0g SW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJc3ogPSBhZGRf c2l6ZShzeiwgRXN0aW1hdGVTbmFwc2hvdFNwYWNlKHNuYXBzaG90KSk7CiAJZWxzZQotCQlBc3Nl cnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNo b3RBbnkgfHwgc25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KTsKIAogCXN6ID0gYWRkX3NpemUo c3osIHJlbC0+cmRfdGFibGVhbS0+cGFyYWxsZWxzY2FuX2VzdGltYXRlKHJlbCkpOwogCkBAIC0x NDQsMjEgKzE0NCwzNiBAQCB0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoUmVsYXRpb24gcmVs LCBTbmFwc2hvdCBzbmFwc2hvdCkKIAogdm9pZAogdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxp emUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJICBT bmFwc2hvdCBzbmFwc2hvdCkKKwkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LCBib29sIHJlc2V0 X3NuYXBzaG90KQogewogCVNpemUJCXNuYXBzaG90X29mZiA9IHJlbC0+cmRfdGFibGVhbS0+cGFy YWxsZWxzY2FuX2luaXRpYWxpemUocmVsLCBwc2Nhbik7CiAKIAlwc2Nhbi0+cGhzX3NuYXBzaG90 X29mZiA9IHNuYXBzaG90X29mZjsKIAotCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCisJ LyoKKwkgKiBJbml0aWFsaXplIHBhcmFsbGVsIHNjYW4gZGVzY3JpcHRpb24uIEZvciBub3JtYWwg c2NhbnMgd2l0aCBhIHJlZ3VsYXIKKwkgKiBNVkNDIHNuYXBzaG90LCBzZXJpYWxpemUgdGhlIHNu YXBzaG90IGluZm8uIEZvciBzY2FucyB0aGF0IHVzZSBwZXJpb2RpYworCSAqIHNuYXBzaG90IHJl c2V0cywgbWFyayB0aGUgc2NhbiBhY2NvcmRpbmdseS4KKwkgKi8KKwlpZiAocmVzZXRfc25hcHNo b3QpCisJeworCQlBc3NlcnQoc25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KTsKKwkJcHNjYW4t PnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCA9 IHRydWU7CisJCUlOSkVDVElPTl9QT0lOVCgidGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUi LCBOVUxMKTsKKwl9CisJZWxzZSBpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCXsKIAkJ U2VyaWFsaXplU25hcHNob3Qoc25hcHNob3QsIChjaGFyICopIHBzY2FuICsgcHNjYW4tPnBoc19z bmFwc2hvdF9vZmYpOwogCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOworCQlwc2Nh bi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7CiAJCUFzc2VydChz bmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydCghcmVzZXRfc25hcHNob3QpOwogCQlw c2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IHRydWU7CisJCXBzY2FuLT5waHNfcmVzZXRfc25hcHNo b3QgPSBmYWxzZTsKIAl9CiB9CiAKQEAgLTE3MSw3ICsxODYsMTkgQEAgdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4p CiAKIAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24tPnJkX2xvY2F0b3IsIHBz Y2FuLT5waHNfbG9jYXRvcikpOwogCi0JaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSkKKwkv KgorCSAqIEZvciBzY2FucyB0aGF0CisJICogdXNlIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0cywg bWFyayB0aGUgc2NhbiBhY2NvcmRpbmdseSBhbmQgdXNlIHRoZSBhY3RpdmUKKwkgKiBzbmFwc2hv dCBhcyB0aGUgaW5pdGlhbCBzdGF0ZS4KKwkgKi8KKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFw c2hvdCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJZmxhZ3MgfD0gU09f UkVTRVRfU05BUFNIT1Q7CisJCS8qIFN0YXJ0IHdpdGggY3VycmVudCBhY3RpdmUgc25hcHNob3Qu ICovCisJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwl9CisJZWxzZSBpZiAoIXBz Y2FuLT5waHNfc25hcHNob3RfYW55KQogCXsKIAkJLyogU25hcHNob3Qgd2FzIHNlcmlhbGl6ZWQg LS0gcmVzdG9yZSBpdCAqLwogCQlzbmFwc2hvdCA9IFJlc3RvcmVTbmFwc2hvdCgoY2hhciAqKSBw c2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9w YXJhbGxlbC5jCmluZGV4IDAxYTg5MTA0ZWYuLjgyNGQxNmNlNzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtNzcsNiArNzcsNyBAQAogI2RlZmluZSBQQVJBTExFTF9L RVlfUkVMTUFQUEVSX1NUQVRFCQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMEQpCiAjZGVm aW5lIFBBUkFMTEVMX0tFWV9VTkNPTU1JVFRFREVOVU1TCQlVSU5UNjRDT05TVCgweEZGRkZGRkZG RkZGRjAwMEUpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9DTElFTlRDT05OSU5GTwkJCVVJTlQ2NENP TlNUKDB4RkZGRkZGRkZGRkZGMDAwRikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JF U1RPUkVECQlVSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRjAwMTApCiAKIC8qIEZpeGVkLXNpemUg cGFyYWxsZWwgc3RhdGUuICovCiB0eXBlZGVmIHN0cnVjdCBGaXhlZFBhcmFsbGVsU3RhdGUKQEAg LTMwNiw2ICszMDcsMTAgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAq cGN4dCkKIAkJCQkJCQkJCQlwY3h0LT5ud29ya2VycykpOwogCQlzaG1fdG9jX2VzdGltYXRlX2tl eXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CiAKKwkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4 dC0+ZXN0aW1hdG9yLCBtdWxfc2l6ZShzaXplb2YoYm9vbCksCisJCQkJCQkJICAgcGN4dC0+bndv cmtlcnMpKTsKKwkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwor CiAJCS8qIEVzdGltYXRlIGhvdyBtdWNoIHdlJ2xsIG5lZWQgZm9yIHRoZSBlbnRyeXBvaW50IGlu Zm8uICovCiAJCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwgc3RybGVu KHBjeHQtPmxpYnJhcnlfbmFtZSkgKwogCQkJCQkJCSAgIHN0cmxlbihwY3h0LT5mdW5jdGlvbl9u YW1lKSArIDIpOwpAQCAtMzc3LDYgKzM4Miw3IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJh bGxlbENvbnRleHQgKnBjeHQpCiAJCWNoYXIJICAgKmVudHJ5cG9pbnRzdGF0ZTsKIAkJY2hhcgkg ICAqdW5jb21taXR0ZWRlbnVtc3NwYWNlOwogCQljaGFyCSAgICpjbGllbnRjb25uaW5mb3NwYWNl OworCQlib29sCSAgICpzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZTsKIAkJU2l6ZQkJbG5hbWVsZW47 CiAKIAkJLyogU2VyaWFsaXplIHNoYXJlZCBsaWJyYXJpZXMgd2UgaGF2ZSBsb2FkZWQuICovCkBA IC00OTIsNiArNDk4LDE5IEBAIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxlbENvbnRleHQg KnBjeHQpCiAJCXN0cmNweShlbnRyeXBvaW50c3RhdGUsIHBjeHQtPmxpYnJhcnlfbmFtZSk7CiAJ CXN0cmNweShlbnRyeXBvaW50c3RhdGUgKyBsbmFtZWxlbiArIDEsIHBjeHQtPmZ1bmN0aW9uX25h bWUpOwogCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9FTlRSWVBPSU5U LCBlbnRyeXBvaW50c3RhdGUpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCBkeW5hbWljIHNoYXJl ZCBtZW1vcnkgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dCBpbXBvcnRpbmcKKwkJICogb2Ygc25h cHNob3QuCisJCSAqLworCQlzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSA9CisJCQkJc2htX3RvY19h bGxvY2F0ZShwY3h0LT50b2MsIG11bF9zaXplKHNpemVvZihib29sKSwgcGN4dC0+bndvcmtlcnMp KTsKKwkJZm9yIChpID0gMDsgaSA8IHBjeHQtPm53b3JrZXJzOyArK2kpCisJCXsKKwkJCXBjeHQt PndvcmtlcltpXS5zbmFwc2hvdF9yZXN0b3JlZCA9ICZzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZVtp XTsKKwkJCSpwY3h0LT53b3JrZXJbaV0uc25hcHNob3RfcmVzdG9yZWQgPSBmYWxzZTsKKwkJfQor CQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNUT1JF RCwgc25hcHNob3Rfc2V0X2ZsYWdfc3BhY2UpOwogCX0KIAogCS8qIFVwZGF0ZSBud29ya2Vyc190 b19sYXVuY2gsIGluIGNhc2Ugd2UgY2hhbmdlZCBud29ya2VycyBhYm92ZS4gKi8KQEAgLTY2OCw2 ICs2ODcsMTAgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkK ICAqIFdhaXQgZm9yIGFsbCB3b3JrZXJzIHRvIGF0dGFjaCB0byB0aGVpciBlcnJvciBxdWV1ZXMs IGFuZCB0aHJvdyBhbiBlcnJvciBpZgogICogYW55IHdvcmtlciBmYWlscyB0byBkbyB0aGlzLgog ICoKKyAqIHdhaXRfZm9yX3NuYXBzaG90OiB0cmFjayB3aGV0aGVyIGVhY2ggcGFyYWxsZWwgd29y a2VyIGhhcyBzdWNjZXNzZnVsbHkgcmVzdG9yZWQKKyAqIGl0cyBzbmFwc2hvdC4gVGhpcyBpcyBu ZWVkZWQgd2hlbiB1c2luZyBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMgdG8gZW5zdXJlIGFsbAor ICogd29ya2VycyBoYXZlIGEgdmFsaWQgaW5pdGlhbCBzbmFwc2hvdCBiZWZvcmUgcHJvY2VlZGlu ZyB3aXRoIHRoZSBzY2FuLgorICoKICAqIENhbGxlcnMgY2FuIGFzc3VtZSB0aGF0IGlmIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzZnVsbHksIHRoZW4gdGhlCiAgKiBudW1iZXIgb2Ygd29y a2VycyBnaXZlbiBieSBwY3h0LT5ud29ya2Vyc19sYXVuY2hlZCBoYXZlIGluaXRpYWxpemVkIGFu ZAogICogYXR0YWNoZWQgdG8gdGhlaXIgZXJyb3IgcXVldWVzLiAgV2hldGhlciBvciBub3QgdGhl c2Ugd29ya2VycyBhcmUgZ3VhcmFudGVlZApAQCAtNjk3LDcgKzcyMCw3IEBAIExhdW5jaFBhcmFs bGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAgKiBjYWxsIHRoaXMgZnVuY3Rpb24g YXQgYWxsLgogICovCiB2b2lkCi1XYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxs ZWxDb250ZXh0ICpwY3h0KQorV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKFBhcmFsbGVs Q29udGV4dCAqcGN4dCwgYm9vbCB3YWl0X2Zvcl9zbmFwc2hvdCkKIHsKIAlpbnQJCQlpOwogCkBA IC03NDEsOSArNzY0LDEyIEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJhbGxl bENvbnRleHQgKnBjeHQpCiAJCQkJbXEgPSBzaG1fbXFfZ2V0X3F1ZXVlKHBjeHQtPndvcmtlcltp XS5lcnJvcl9tcWgpOwogCQkJCWlmIChzaG1fbXFfZ2V0X3NlbmRlcihtcSkgIT0gTlVMTCkKIAkJ CQl7Ci0JCQkJCS8qIFllcywgc28gaXQgaXMga25vd24gdG8gYmUgYXR0YWNoZWQuICovCi0JCQkJ CXBjeHQtPmtub3duX2F0dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOwotCQkJCQkrK3BjeHQtPm5r bm93bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQlpZiAoIXdhaXRfZm9yX3NuYXBzaG90IHx8ICoo cGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkKSkKKwkJCQkJeworCQkJCQkJLyogWWVz LCBzbyBpdCBpcyBrbm93biB0byBiZSBhdHRhY2hlZC4gKi8KKwkJCQkJCXBjeHQtPmtub3duX2F0 dGFjaGVkX3dvcmtlcnNbaV0gPSB0cnVlOworCQkJCQkJKytwY3h0LT5ua25vd25fYXR0YWNoZWRf d29ya2VyczsKKwkJCQkJfQogCQkJCX0KIAkJCX0KIAkJCWVsc2UgaWYgKHN0YXR1cyA9PSBCR1dI X1NUT1BQRUQpCkBAIC03ODYsNiArODEyLDE2IEBAIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJCQlicmVhazsKIAkJfQogCX0KKworCS8qIFNl dCBzbmFwc2hvdCByZXN0b3JlZCBmbGFnIHRvIGZhbHNlLiAqLworCWlmIChwY3h0LT5ud29ya2Vy cyA+IDApCisJeworCQlib29sCSAgICpzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZTsKKwkJc25hcHNo b3RfcmVzdG9yZWRfc3BhY2UgPQorCQkJCXNobV90b2NfbG9va3VwKHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVELCBmYWxzZSk7CisJCWZvciAoaSA9IDA7IGkgPCBwY3h0 LT5ud29ya2VyczsgKytpKQorCQkJc25hcHNob3RfcmVzdG9yZWRfc3BhY2VbaV0gPSBmYWxzZTsK Kwl9CiB9CiAKIC8qCkBAIC0xMzAyLDYgKzEzMzgsNyBAQCBQYXJhbGxlbFdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiAJc2htX3RvYyAgICAqdG9jOwogCUZpeGVkUGFyYWxsZWxTdGF0ZSAqZnBz OwogCWNoYXIJICAgKmVycm9yX3F1ZXVlX3NwYWNlOworCWJvb2wJICAgKnNuYXBzaG90X3Jlc3Rv cmVkX3NwYWNlOwogCXNobV9tcQkgICAqbXE7CiAJc2htX21xX2hhbmRsZSAqbXFoOwogCWNoYXIJ ICAgKmxpYnJhcnlzcGFjZTsKQEAgLTE1MDYsNiArMTU0MywxMCBAQCBQYXJhbGxlbFdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCQkJICAgZnBzLT5wYXJhbGxlbF9sZWFkZXJfcGdwcm9j KTsKIAlQdXNoQWN0aXZlU25hcHNob3QoYXNuYXBzaG90KTsKIAorCS8qIFNuYXBzaG90IGlzIHJl c3RvcmVkLCBzZXQgZmxhZyB0byBtYWtlIGxlYWRlciBrbm93IGFib3V0IGl0LiAqLworCXNuYXBz aG90X3Jlc3RvcmVkX3NwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfU05B UFNIT1RfUkVTVE9SRUQsIGZhbHNlKTsKKwlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZVtQYXJhbGxl bFdvcmtlck51bWJlcl0gPSB0cnVlOworCiAJLyoKIAkgKiBXZSd2ZSBjaGFuZ2VkIHdoaWNoIHR1 cGxlcyB3ZSBjYW4gc2VlLCBhbmQgbXVzdCB0aGVyZWZvcmUgaW52YWxpZGF0ZQogCSAqIHN5c3Rl bSBjYWNoZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggMmFjZTYwYzFmMC4uYjU0OTIxYWQ1NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYwpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKIAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0 aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0cnVlKTsKIAogCUludmFsaWRhdGVDYXRhbG9nU25hcHNo b3QoKTsKLQlBc3NlcnQoKGluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzIHx8IGluZGV4SW5m by0+aWlfVW5pcXVlKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJ QXNzZXJ0KGluZGV4SW5mby0+aWlfVW5pcXVlIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVBy b2MtPnhtaW4pKTsKIAogCS8qIFJvbGwgYmFjayBhbnkgR1VDIGNoYW5nZXMgZXhlY3V0ZWQgYnkg aW5kZXggZnVuY3Rpb25zICovCiAJQXRFT1hhY3RfR1VDKGZhbHNlLCBzYXZlX25lc3RsZXZlbCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCBiODExOWZhY2U0Li5hY2Y3Yjc3MDMx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTM3MSw3ICszNzEsOCBAQCBFeGVj U2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCXBzY2FuID0gc2htX3Rv Y19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgIHBz Y2FuLAotCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOworCQkJCQkJCQkgIGVzdGF0ZS0+ ZXNfc25hcHNob3QsCisJCQkJCQkJCSAgZmFsc2UpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv Yywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CiAJbm9kZS0+c3Muc3Nf Y3VycmVudFNjYW5EZXNjID0KIAkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNz X2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdl c2Nhbi5jCmluZGV4IDRhYTI4OTE4ZTkuLjgwZjM5NTBlYjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTQ1NSw3ICs0NTUsOCBAQCBFeGVjVGlkUmFuZ2VTY2Fu SW5pdGlhbGl6ZURTTShUaWRSYW5nZVNjYW5TdGF0ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpw Y3h0KQogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnRyc3NfcHNj YW5sZW4pOwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJl bnRSZWxhdGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKLQkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBz aG90KTsKKwkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkgIGZhbHNlKTsK IAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9p ZCwgcHNjYW4pOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCXRhYmxlX2JlZ2lu c2Nhbl9wYXJhbGxlbF90aWRyYW5nZShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL3RpbWUvc25hcG1nci5jCmluZGV4IDJlNjE5N2Y1ZjMuLmRmOTExNjUzMmMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL3RpbWUvc25hcG1nci5jCkBAIC0zNTMsMTQgKzM1Myw2IEBAIEdldFRyYW5zYWN0aW9uU25h cHNob3Qodm9pZCkKIFNuYXBzaG90CiBHZXRMYXRlc3RTbmFwc2hvdCh2b2lkKQogewotCS8qCi0J ICogV2UgbWlnaHQgYmUgYWJsZSB0byByZWxheCB0aGlzLCBidXQgbm90aGluZyB0aGF0IGNvdWxk IG90aGVyd2lzZSB3b3JrCi0JICogbmVlZHMgaXQuCi0JICovCi0JaWYgKElzSW5QYXJhbGxlbE1v ZGUoKSkKLQkJZWxvZyhFUlJPUiwKLQkJCSAiY2Fubm90IHVwZGF0ZSBTZWNvbmRhcnlTbmFwc2hv dCBkdXJpbmcgYSBwYXJhbGxlbCBvcGVyYXRpb24iKTsKLQogCS8qCiAJICogU28gZmFyIHRoZXJl IGFyZSBubyBjYXNlcyByZXF1aXJpbmcgc3VwcG9ydCBmb3IgR2V0TGF0ZXN0U25hcHNob3QoKQog CSAqIGR1cmluZyBsb2dpY2FsIGRlY29kaW5nLCBidXQgaXQgd291bGRuJ3QgYmUgaGFyZCB0byBh ZGQgaWYgcmVxdWlyZWQuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCmluZGV4IDAxYmRmMmJlYzEuLjY2ZWE5 ODRhMDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCkBAIC0yNiw2ICsyNiw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsV29ya2VySW5mbwogewogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hh bmRsZTsKIAlzaG1fbXFfaGFuZGxlICplcnJvcl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVz dG9yZWQ7CiB9IFBhcmFsbGVsV29ya2VySW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxD b250ZXh0CkBAIC02NSw3ICs2Niw3IEBAIGV4dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERT TShQYXJhbGxlbENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxs ZWxEU00oUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBh cmFsbGVsV29ya2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVu Y2gpOwogZXh0ZXJuIHZvaWQgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAq cGN4dCk7Ci1leHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxs ZWxDb250ZXh0ICpwY3h0KTsKK2V4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0 dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0 ZXJuIHZvaWQgV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAq cGN4dCk7CiBleHRlcm4gdm9pZCBEZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4 dCAqcGN4dCk7CiBleHRlcm4gYm9vbCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3JlbHNjYW4uaAppbmRleCBjZTM0MGMwNzZmLi5hY2ZhMDZhZWQ3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2Fu LmgKQEAgLTgxLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNj RGF0YQogCVJlbEZpbGVMb2NhdG9yIHBoc19sb2NhdG9yOyAvKiBwaHlzaWNhbCByZWxhdGlvbiB0 byBzY2FuICovCiAJYm9vbAkJcGhzX3N5bmNzY2FuOwkvKiByZXBvcnQgbG9jYXRpb24gdG8gc3lu Y3NjYW4gbG9naWM/ICovCiAJYm9vbAkJcGhzX3NuYXBzaG90X2FueTsJLyogU25hcHNob3RBbnks IG5vdCBwaHNfc25hcHNob3RfZGF0YT8gKi8KKwlib29sCQlwaHNfcmVzZXRfc25hcHNob3Q7IC8q IHVzZSBTT19SRVNFVF9TTkFQU0hPVD8gKi8KIAlTaXplCQlwaHNfc25hcHNob3Rfb2ZmOwkvKiBk YXRhIGZvciBzbmFwc2hvdCAqLwogfSBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhOwogdHlwZWRl ZiBzdHJ1Y3QgUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YSAqUGFyYWxsZWxUYWJsZVNjYW5EZXNj OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggNWVmOGI0MzFkMi4uYmRhZGQ1MTFmZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oCkBAIC0xMTQwLDcgKzExNDAsOCBAQCBleHRlcm4gU2l6ZSB0YWJsZV9wYXJhbGxl bHNjYW5fZXN0aW1hdGUoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCk7CiAgKi8KIGV4 dGVybiB2b2lkIHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwKIAkJ CQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKLQkJCQkJCQkJCQkgIFNuYXBz aG90IHNuYXBzaG90KTsKKwkJCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJ CSAgYm9vbCByZXNldF9zbmFwc2hvdCk7CiAKIC8qCiAgKiBCZWdpbiBhIHBhcmFsbGVsIHNjYW4u IGBwc2NhbmAgbmVlZHMgdG8gaGF2ZSBiZWVuIGluaXRpYWxpemVkIHdpdGgKQEAgLTE3NzIsNyAr MTc3Myw3IEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2Nh biwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogICogVGhpcyBvbmx5IHJlYWxseSBtYWtlcyBz ZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXplZAogICogZm9y IG90aGVyIEFNcyBsYXRlci4KICAqCi0gKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgaW5kZXggYW5k IG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogSW4gY2FzZSBvZiBub24tdW5pcXVl IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCiAgKiBTT19SRVNFVF9TTkFQU0hPVCBpcyBhcHBsaWVk IGZvciB0aGUgc2Nhbi4gVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMKICAqIG9uIHRo ZSBmbHkgdG8gYWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3Rz LnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3Nu YXBzaG90cy5zcWwKaW5kZXggN2Y3ZGZmYTViZS4uMzc4MTliZjBmYiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNx bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9z bmFwc2hvdHMuc3FsCkBAIC0zLDcgKzMsNyBAQCBDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9w b2ludHM7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKIFNFTEVDVCBpbmpl Y3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZScs ICdub3RpY2UnKTsKIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnKTsKLQorU0VMRUNUIGluamVjdGlv bl9wb2ludHNfYXR0YWNoKCd0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZScsICdub3RpY2Un KTsKIAogQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKIENSRUFURSBUQUJMRSBjaWNfcmVz ZXRfc25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKQEAgLTUzLDYgKzUzLDkgQEAg RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogLS0gVGhlIHNhbWUg aW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsIFNFVCAocGFy YWxsZWxfd29ya2Vycz0yKTsKIAorLS0gRGV0YWNoIHRvIGtlZXAgdGVzdCBzdGFibGUsIHNpbmNl IHBhcmFsbGVsIHdvcmtlciBtYXkgY29tcGxldGUgc2NhbiBiZWZvcmUgbGVhZGVyCitTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3Rp dmUnKTsKKwogQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpKTsKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKLS0gCjIu NDMuMAoK --000000000000d4a3fc0648706fee--