Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOkt6-0008FG-Nh for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Mar 2021 17:32:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lOkt5-0007le-DU for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Mar 2021 17:32:15 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOkt4-0007lX-92 for pgsql-hackers@lists.postgresql.org; Tue, 23 Mar 2021 17:32:14 +0000 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOksy-0004n5-6w for pgsql-hackers@postgresql.org; Tue, 23 Mar 2021 17:32:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1616520728; x=1648056728; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to; bh=AmRmsEhKQrWpz0UjtTMx42aQXERmofGmlpr8Wz1D1zg=; b=JLqTXHd41BLdzQFPe9XiatsCJK0oSdGdSo5iXbRZ79xVw25nEztYW/Sg TGUWD3Y+wBlbkzRkkQNqv23P2xR2nxHV27i/4V4dlqxHLk+JOl035xl8X 3jcsUSDaoYWepI0a7YussTZwAocdeca2z1w+eX99NmXtCR1hxXdFhWATM g=; X-Amazon-filename: v13-0005-Doc-changes-describing-details-about-logical-dec.patch, v13-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v13-0003-Handle-logical-slot-conflicts-on-standby.patch, v13-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch, v13-0001-Allow-logical-decoding-on-standby.patch X-IronPort-AV: E=Sophos;i="5.81,272,1610409600"; d="scan'208,217,223";a="100000585" Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-2b-4ff6265a.us-west-2.amazon.com) ([10.43.8.2]) by smtp-border-fw-out-6002.iad6.amazon.com with ESMTP; 23 Mar 2021 17:31:59 +0000 Received: from EX13D03EUC003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan3.pdx.amazon.com [10.236.137.198]) by email-inbound-relay-2b-4ff6265a.us-west-2.amazon.com (Postfix) with ESMTPS id A9F41A1803; Tue, 23 Mar 2021 17:31:57 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.160.48) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 23 Mar 2021 17:31:53 +0000 Subject: Re: Minimal logical decoding on standbys To: CC: Alvaro Herrera , Andres Freund , tushar , "[pgdg] Robert Haas" , Amit Khandekar , Rahila Syed , pgsql-hackers References: <20200318184249.GA29007@alvherre.pgsql> <20200318195038.GA7123@alvherre.pgsql> <1ab609c9-2c16-26ff-5fbe-c3195e541f9c@amazon.com> <6e1dda09-0c4f-b196-a589-fb741f11686f@amazon.com> From: "Drouvot, Bertrand" Message-ID: <96644a03-0b4d-e0a6-2124-0bc37e5b54fb@amazon.com> Date: Tue, 23 Mar 2021 18:31:48 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------F8760880D041201312AEC593" Content-Language: en-US X-Originating-IP: [10.43.160.48] X-ClientProxiedBy: EX13D15UWB003.ant.amazon.com (10.43.161.138) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------F8760880D041201312AEC593 Content-Type: multipart/alternative; boundary="------------7F29099CA3629619C8D4CE59" --------------7F29099CA3629619C8D4CE59 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 3/23/21 3:29 PM, Fabrízio de Royes Mello wrote: > > On Tue, Mar 23, 2021 at 10:18 AM Fabrízio de Royes Mello > > wrote: > > > > LGTM too... Reviewing new changes now to move it forward and make > this patch set ready for commiter review. > > > > According to the feature LGTM and all tests passed. Documentation is > also OK. Thanks for the review! > Some minor comments: > > +     > +     A logical replication slot can also be created on a hot standby. > To prevent > +     VACUUM from removing required rows from the > system > +     catalogs, hot_standby_feedback should be set > on the > +     standby. In spite of that, if any required rows get removed, the > slot gets > +     dropped.  Existing logical slots on standby also get dropped if > wal_level > +     on primary is reduced to less than 'logical'. > +     > > Remove extra space before "Existing logical slots..." done in v13 attached. > > +            pg_stat_get_db_conflict_logicalslot(D.oid) AS > confl_logicalslot, > > Move it to the end of pg_stat_database_conflicts columns done in v13 attached. > > > +            * is being reduced.  Hence this extra check. > > Remove extra space before "Hence this..." done in v13 attached. > > > +       /* Send the other backend, a conflict recovery signal */ > + > +       SetInvalidVirtualTransactionId(vxid); > > Remove extra empty line done in v13 attached. > > > +               if (restart_lsn % XLOG_BLCKSZ != 0) > +                   elog(ERROR, "invalid replay pointer"); > > Add an empty line after this "IF" for code readability done in v13 attached. > > > +void > +ResolveRecoveryConflictWithLogicalSlots(Oid dboid, TransactionId xid, > +                                       char *conflict_reason) > +{ > +   int         i; > +   bool        found_conflict = false; > + > +   if (max_replication_slots <= 0) > +       return; > > What about adding an "Assert(max_replication_slots >= 0);" before the > replication slots check? Makes sense, in v13 attached: Assert added and then also changed the following if accordingly to "== 0". > > One last thing is about the name of TAP tests, we should rename them > because there are other TAP tests starting with 022_ and 023_. It > should be renamed to: > > src/test/recovery/t/022_standby_logical_decoding_xmins.pl > -> > src/test/recovery/t/024_standby_logical_decoding_xmins.pl > > src/test/recovery/t/023_standby_logical_decoding_conflicts.pl > > -> src/test/recovery/t/025_standby_logical_decoding_conflicts.pl > done in v13 attached. Bertrand --------------7F29099CA3629619C8D4CE59 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit

Hi,

On 3/23/21 3:29 PM, Fabrízio de Royes Mello wrote:

On Tue, Mar 23, 2021 at 10:18 AM Fabrízio de Royes Mello <fabriziomello@gmail.com> wrote:
>
> LGTM too... Reviewing new changes now to move it forward and make this patch set ready for commiter review.
>

According to the feature LGTM and all tests passed. Documentation is also OK.

Thanks for the review!

Some minor comments:

+    <para>
+     A logical replication slot can also be created on a hot standby. To prevent
+     <command>VACUUM</command> from removing required rows from the system
+     catalogs, <varname>hot_standby_feedback</varname> should be set on the
+     standby. In spite of that, if any required rows get removed, the slot gets
+     dropped.  Existing logical slots on standby also get dropped if wal_level
+     on primary is reduced to less than 'logical'.
+    </para>

Remove extra space before "Existing logical slots..."

done in v13 attached.


+            pg_stat_get_db_conflict_logicalslot(D.oid) AS confl_logicalslot,

Move it to the end of pg_stat_database_conflicts columns

done in v13 attached.



+            * is being reduced.  Hence this extra check.

Remove extra space before "Hence this..."

done in v13 attached.


+       /* Send the other backend, a conflict recovery signal */
+
+       SetInvalidVirtualTransactionId(vxid);

Remove extra empty line

done in v13 attached.


+               if (restart_lsn % XLOG_BLCKSZ != 0)
+                   elog(ERROR, "invalid replay pointer");

Add an empty line after this "IF" for code readability

done in v13 attached.



+void
+ResolveRecoveryConflictWithLogicalSlots(Oid dboid, TransactionId xid,
+                                       char *conflict_reason)
+{
+   int         i;
+   bool        found_conflict = false;
+
+   if (max_replication_slots <= 0)
+       return;

What about adding an "Assert(max_replication_slots >= 0);" before the replication slots check?


Makes sense, in v13 attached: Assert added and then also changed the following if accordingly to "== 0".


One last thing is about the name of TAP tests, we should rename them because there are other TAP tests starting with 022_ and 023_. It should be renamed to:


done in v13 attached.

Bertrand

--------------7F29099CA3629619C8D4CE59-- --------------F8760880D041201312AEC593 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v13-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v13-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSAzZTMwMDgyMjc3N2Y4OTkwN2NmMGFiZDdjOTBmMDNjYWJkZDRiMjA1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxNjoxNTozNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEzIDUvNV0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKLS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwg fCAxOCArKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25z KCspCiAxMDAuMCUgZG9jL3NyYy9zZ21sLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9s b2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dt bAppbmRleCA4MGViOTZkNjA5Li4wNTBiZWZhNTVlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNv ZGluZy5zZ21sCkBAIC0yOTcsNiArMjk3LDI0IEBAIHBvc3RncmVzPSMgc2VsZWN0ICogZnJv bSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEws IE5VCiAgICAgIG1heSBjb25zdW1lIGNoYW5nZXMgZnJvbSBhIHNsb3QgYXQgYW55IGdpdmVu IHRpbWUuCiAgICAgPC9wYXJhPgogCisgICAgPHBhcmE+CisgICAgIEEgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90IGNhbiBhbHNvIGJlIGNyZWF0ZWQgb24gYSBob3Qgc3RhbmRieS4gVG8g cHJldmVudAorICAgICA8Y29tbWFuZD5WQUNVVU08L2NvbW1hbmQ+IGZyb20gcmVtb3Zpbmcg cmVxdWlyZWQgcm93cyBmcm9tIHRoZSBzeXN0ZW0KKyAgICAgY2F0YWxvZ3MsIDx2YXJuYW1l PmhvdF9zdGFuZGJ5X2ZlZWRiYWNrPC92YXJuYW1lPiBzaG91bGQgYmUgc2V0IG9uIHRoZQor ICAgICBzdGFuZGJ5LiBJbiBzcGl0ZSBvZiB0aGF0LCBpZiBhbnkgcmVxdWlyZWQgcm93cyBn ZXQgcmVtb3ZlZCwgdGhlIHNsb3QgZ2V0cworICAgICBkcm9wcGVkLiBFeGlzdGluZyBsb2dp Y2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgZHJvcHBlZCBpZiB3YWxfbGV2ZWwKKyAg ICAgb24gcHJpbWFyeSBpcyByZWR1Y2VkIHRvIGxlc3MgdGhhbiAnbG9naWNhbCcuCisgICAg PC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIEZvciBhIGxvZ2ljYWwgc2xvdCB0byBiZSBj cmVhdGVkLCBpdCBidWlsZHMgYSBoaXN0b3JpYyBzbmFwc2hvdCwgZm9yIHdoaWNoCisgICAg IGluZm9ybWF0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdHJhbnNhY3Rpb25z IGlzIGVzc2VudGlhbC4gT24KKyAgICAgcHJpbWFyeSwgdGhpcyBpbmZvcm1hdGlvbiBpcyBh dmFpbGFibGUsIGJ1dCBvbiBzdGFuZGJ5LCB0aGlzIGluZm9ybWF0aW9uCisgICAgIGhhcyB0 byBiZSBvYnRhaW5lZCBmcm9tIHByaW1hcnkuIFNvLCBzbG90IGNyZWF0aW9uIG1heSB3YWl0 IGZvciBzb21lCisgICAgIGFjdGl2aXR5IHRvIGhhcHBlbiBvbiB0aGUgcHJpbWFyeS4gSWYg dGhlIHByaW1hcnkgaXMgaWRsZSwgY3JlYXRpbmcgYQorICAgICBsb2dpY2FsIHNsb3Qgb24g c3RhbmRieSBtYXkgdGFrZSBhIG5vdGljZWFibGUgdGltZS4KKyAgICA8L3BhcmE+CisKICAg ICA8Y2F1dGlvbj4KICAgICAgPHBhcmE+CiAgICAgICBSZXBsaWNhdGlvbiBzbG90cyBwZXJz aXN0IGFjcm9zcyBjcmFzaGVzIGFuZCBrbm93IG5vdGhpbmcgYWJvdXQgdGhlIHN0YXRlCi0t IAoyLjE4LjQKCg== --------------F8760880D041201312AEC593 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v13-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v13-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSAwMTZjOTRhODI0MzE1NThmNTY0NmUxYjc2MjZkM2FjMmQxMDMyMmNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxNjoxNDo1NSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEzIDQvNV0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpUaGlzIHRlc3Qgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBDcmFpZyBSaW5nZXIs IHRoZW4KZXh0ZW5kZWQvbW9kaWZpZWQgYnkgbWUsIHRvIHRlc3QgdmFyaW91cyBzbG90IGNv bmZsaWN0IHNjZW5hcmlvcy4KCkF1dGhvcnM6IENyYWlnIFJpbmdlciwgQW1pdCBLaGFuZGVr YXIuCi0tLQogc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jlc05vZGUucG0gICAgICAgICAgICAgICAg IHwgIDM3ICsrKwogLi4uL3QvMDI0X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ194bWlucy5w bCAgIHwgMjcyICsrKysrKysrKysrKysrKysrKwogLi4uLzAyNV9zdGFuZGJ5X2xvZ2ljYWxf ZGVjb2RpbmdfY29uZmxpY3RzLnBsIHwgMjI4ICsrKysrKysrKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCA1MzcgaW5zZXJ0aW9ucygrKQogICA1LjglIHNyYy90ZXN0L3BlcmwvCiAgOTQu MSUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVzTm9kZS5wbSBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCmluZGV4IDk3 ZTA1OTkzYmUuLjhhMTA4ZTllMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUG9zdGdy ZXNOb2RlLnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtCkBAIC0yMjQ1 LDYgKzIyNDUsNDMgQEAgc3ViIHBnX3JlY3Zsb2dpY2FsX3VwdG8KIAogPXBvZAogCis9aXRl bSAkbm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwg c2xvdF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg b24gZ2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkKK3sKKwlteSAoJHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUp ID0gQF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRo YW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxm LT5jb25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90 X25hbWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJy KTsKKworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5 IGxvb2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJl c3RhcnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkj IHJlc3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGls KAorCQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxM CisJCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25h bWUgPSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBs b2dpY2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBh cnJhbmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3Jl Y3Zsb2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2Vs Zi0+c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9u YW1lIC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVh dGUgc2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI0X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZ194bWlucy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI0X3N0YW5kYnlfbG9naWNh bF9kZWNvZGluZ194bWlucy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5kNjU0ZDc5NTI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wMjRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX3htaW5zLnBsCkBAIC0wLDAgKzEsMjcy IEBACisjIGxvZ2ljYWwgZGVjb2Rpbmcgb24gYSBzdGFuZGJ5IDogZW5zdXJlIHhtaW5zIGFy ZSBhcHByb3ByaWF0ZWx5IHVwZGF0ZWQKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsK KwordXNlIFBvc3RncmVzTm9kZTsKK3VzZSBUZXN0TGliOwordXNlIFRlc3Q6Ok1vcmUgdGVz dHMgPT4gMjM7Cit1c2UgUmVjdXJzaXZlQ29weTsKK3VzZSBGaWxlOjpDb3B5OwordXNlIFRp bWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIs ICRyZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfbWFzdGVyID0gZ2V0X25ld19u b2RlKCdtYXN0ZXInKTsKK215ICRub2RlX3N0YW5kYnkgPSBnZXRfbmV3X25vZGUoJ3N0YW5k YnknKTsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBtYXN0ZXIKK215ICRt YXN0ZXJfc2xvdG5hbWUgPSAnbWFzdGVyX3BoeXNpY2FsJzsKKyMgTmFtZSBmb3IgdGhlIGxv Z2ljYWwgc2xvdCBvbiBzdGFuZGJ5CitteSAkc3RhbmRieV9zbG90bmFtZSA9ICdzdGFuZGJ5 X2xvZ2ljYWwnOworCisjIEZldGNoIHhtaW4gY29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBs aWNhdGlvbl9zbG90cyByb3csIGFmdGVyIHdhaXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4g Y29uZGl0aW9uIHRvIGJlIHRydWUgdG8gZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2Nl bnQgc3RhdGUKK3N1YiB3YWl0X2Zvcl94bWlucworeworCW15ICgkbm9kZSwgJHNsb3RuYW1l LCAkY2hlY2tfZXhwcikgPSBAXzsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkn cG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUICRjaGVja19leHByCisJCUZST00gcGdfY2F0YWxv Zy5wZ19yZXBsaWNhdGlvbl9zbG90cworCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RuYW1l JzsKKwldKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHhtaW5zIHRvIGFk dmFuY2UiOworfQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXpl IG1hc3RlciBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfbWFzdGVy LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwgaGFzX2FyY2hpdmluZyA9PiAxKTsKKyRu b2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2 ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2Vu ZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJv c2l0eSA9IHZlcmJvc2UKKyMgdmVyeSBwcm9tcHRseSB0ZXJtaW5hdGUgY29uZmxpY3Rpbmcg YmFja2VuZHMKK21heF9zdGFuZGJ5X3N0cmVhbWluZ19kZWxheSA9ICcycycKK30pOworJG5v ZGVfbWFzdGVyLT5kdW1wX2luZm87Ciskbm9kZV9tYXN0ZXItPnN0YXJ0OworCiskbm9kZV9t YXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgKiBGUk9NIHBnX2NyZWF0 ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCckbWFzdGVyX3Nsb3RuYW1lJyk7XSk7Citt eSAkYmFja3VwX25hbWUgPSAnYjEnOworJG5vZGVfbWFzdGVyLT5iYWNrdXAoJGJhY2t1cF9u YW1lKTsKKworIyBBZnRlciBzbG90IGNyZWF0aW9uLCB4bWlucyBtdXN0IGJlIG51bGwKKyRz bG90ID0gJG5vZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpOworaXMoJHNsb3Qt PnsneG1pbid9LCAnJywgInhtaW4gbnVsbCIpOworaXMoJHNsb3QtPnsnY2F0YWxvZ194bWlu J30sICcnLCAiY2F0YWxvZ194bWluIG51bGwiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgSW5pdGlhbGl6ZSBzbGF2ZSBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor Ciskbm9kZV9zdGFuZGJ5LT5pbml0X2Zyb21fYmFja3VwKAorCSRub2RlX21hc3RlciwgJGJh Y2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEp OworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFb cHJpbWFyeV9zbG90X25hbWUgPSAnJG1hc3Rlcl9zbG90bmFtZSddKTsKKyRub2RlX3N0YW5k YnktPnN0YXJ0OworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5k YnksICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgeG1pbi9jYXRhbG9nX3htaW4gdmVyaWZp Y2F0aW9uIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhbmRieS1sb2dpY2FsLXNsb3QgY3JlYXRpb24u CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFdpdGggaG90X3N0YW5k YnlfZmVlZGJhY2sgb2ZmLCB4bWluIGFuZCBjYXRhbG9nX3htaW4gbXVzdCBzdGlsbCBiZSBu dWxsCiskc2xvdCA9ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsKK2lz KCRzbG90LT57J3htaW4nfSwgJycsICJ4bWluIG51bGwgYWZ0ZXIgc3RhbmRieSBqb2luIik7 Citpcygkc2xvdC0+eydjYXRhbG9nX3htaW4nfSwgJycsICJjYXRhbG9nX3htaW4gbnVsbCBh ZnRlciBzdGFuZGJ5IGpvaW4iKTsKKworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KKyMgc2VuZCBz dGF0dXMgcmFwaWRseSBzbyB3ZSBwcm9tcHRseSBhZHZhbmNlIHhtaW4gb24gbWFzdGVyCit3 YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorXSk7Ciskbm9kZV9zdGFuZGJ5LT5y ZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBzZW50IGJ5IHdhaXRp bmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBtYXN0ZXIuIFdp dGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisjIGJ1 dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNpbmNlIHRoZXJlIGlz IG5vIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRub2RlX21hc3RlciwgJG1hc3Rl cl9zbG90bmFtZSwgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxM Iik7CisKKyMgQ3JlYXRlIG5ldyBzbG90cyBvbiB0aGUgc3RhbmRieSwgaWdub3JpbmcgdGhl IG9uZXMgb24gdGhlIG1hc3RlciBjb21wbGV0ZWx5LgorIworIyBUaGlzIG11c3Qgc3VjY2Vl ZCBzaW5jZSB3ZSBrbm93IHdlIGhhdmUgYSBjYXRhbG9nX3htaW4gcmVzZXJ2YXRpb24uIFdl CisjIG1pZ2h0J3ZlIGFscmVhZHkgc2VudCBob3Qgc3RhbmRieSBmZWVkYmFjayB0byBhZHZh bmNlIG91ciBwaHlzaWNhbCBzbG90J3MKKyMgY2F0YWxvZ194bWluIGJ1dCBub3QgcmVjZWl2 ZWQgdGhlIGNvcnJlc3BvbmRpbmcgeGxvZyBmb3IgdGhlIGNhdGFsb2cgeG1pbgorIyBhZHZh bmNlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGNyZWF0ZSBhIHNsb3QgdGhhdCBpc24ndCB1c2Fi bGUuIFRoZSBjYWxsaW5nCisjIGFwcGxpY2F0aW9uIGNhbiBwcmV2ZW50IHRoaXMgYnkgY3Jl YXRpbmcgYSB0ZW1wb3Jhcnkgc2xvdCBvbiB0aGUgbWFzdGVyIHRvCisjIGxvY2sgaW4gaXRz IGNhdGFsb2dfeG1pbi4gRm9yIGEgdHJ1bHkgcmFjZS1mcmVlIHNvbHV0aW9uIHdlJ2QgbmVl ZAorIyBtYXN0ZXItdG8tc3RhbmRieSBob3Rfc3RhbmRieV9mZWVkYmFjayByZXBsaWVzLgor IworIyBJbiB0aGlzIGNhc2UgaXQgd29uJ3QgcmFjZSBiZWNhdXNlIHRoZXJlJ3Mgbm8gY29u Y3VycmVudCBhY3Rpdml0eSBvbiB0aGUKKyMgbWFzdGVyLgorIworJG5vZGVfc3RhbmRieS0+ Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX21hc3RlciwgJHN0YW5kYnlf c2xvdG5hbWUsICdwb3N0Z3JlcycpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNo dXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcp KTsKKworIyBOb3cgdGhhdCBzbG90IGlzIGNyZWF0ZWQgb24gc3RhbmRieSwgeG1pbiBhbmQg Y2F0YWxvZ194bWluIHNob3VsZCBiZSBub24gTlVMTAorIyBvbiBib3RoIG1hc3RlciBhbmQg c3RhbmRieS4gQnV0IG9uIG1hc3RlciwgdGhlIHhtaW5zIHdpbGwgYmUgdXBkYXRlZCBvbmx5 CisjIGFmdGVyIGhvdCBzdGFuZGJ5IGZlZWRiYWNrIGlzIHJlY2VpdmVkLgord2FpdF9mb3Jf eG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVyX3Nsb3RuYW1lLCAieG1pbiBJUyBOT1QgTlVM TCBBTkQgY2F0YWxvZ194bWluIElTIE5PVCBOVUxMIik7CisKKyRzbG90ID0gJG5vZGVfc3Rh bmRieS0+c2xvdCgkc3RhbmRieV9zbG90bmFtZSk7Citpcygkc2xvdC0+eyd4bWluJ30sICcn LCAibG9naWNhbCB4bWluIG51bGwiKTsKK2lzbnQoJHNsb3QtPnsnY2F0YWxvZ194bWluJ30s ICcnLCAibG9naWNhbCBjYXRhbG9nX3htaW4gbm90IG51bGwiKTsKKworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTdGFuZGJ5IGxvZ2ljYWwgc2xvdCBzaG91bGQg YmUgYWJsZSB0byBmZXRjaCB0aGUgdGFibGUgY2hhbmdlcyBldmVuIHdoZW4gdGhlCisjIHRh YmxlIGlzIGRyb3BwZWQuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisk bm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIFRBQkxFIHRlc3Rf dGFibGUoaWQgc2VyaWFsIHByaW1hcnkga2V5LCBibGFoIHRleHQpJyk7Ciskbm9kZV9tYXN0 ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxW0lOU0VSVCBJTlRPIHRlc3RfdGFibGUoYmxh aCkgdmFsdWVzICgnaXR3b3JrcycpXSk7Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnRFJPUCBUQUJMRSB0ZXN0X3RhYmxlJyk7Ciskbm9kZV9tYXN0ZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAnVkFDVVVNJyk7CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2Zs dXNoJykpOworCisjIFNob3VsZCBzaG93IHRoZSBpbnNlcnRzIGV2ZW4gd2hlbiB0aGUgdGFi bGUgaXMgZHJvcHBlZCBvbiBtYXN0ZXIKKygkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRu b2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJyRzdGFuZGJ5X3Nsb3RuYW1lJywgTlVMTCwgTlVM TCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNs dWRlLXRpbWVzdGFtcCcsICcwJyldKTsKK2lzKCRzdGRlcnIsICcnLCAnc3RkZXJyIGlzIGVt cHR5Jyk7CitpcygkcmV0LCAwLCAncmVwbGF5IGZyb20gc2xvdCBzdWNjZWVkZWQnKQorCW9y IGRpZSAnY2Fubm90IGNvbnRpbnVlIGlmIHNsb3QgcmVwbGF5IGZhaWxzJzsKK2lzKCRzdGRv dXQsIHF7QkVHSU4KK3RhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGlkW2ludGVn ZXJdOjEgYmxhaFt0ZXh0XTonaXR3b3JrcycKK0NPTU1JVH0sICdyZXBsYXkgcmVzdWx0cyBt YXRjaCcpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworJHNsb3QgPSAk bm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7Citpc250KCRzbG90LT57J3ht aW4nfSwgJycsICJwaHlzaWNhbCB4bWluIG5vdCBudWxsIik7CitteSAkc2F2ZWRfcGh5c2lj YWxfY2F0YWxvZ194bWluID0gJHNsb3QtPnsnY2F0YWxvZ194bWluJ307Citpc250KCRzYXZl ZF9waHlzaWNhbF9jYXRhbG9nX3htaW4sICcnLCAicGh5c2ljYWwgY2F0YWxvZ194bWluIG5v dCBudWxsIik7CisKKyRzbG90ID0gJG5vZGVfc3RhbmRieS0+c2xvdCgkc3RhbmRieV9zbG90 bmFtZSk7Citpcygkc2xvdC0+eyd4bWluJ30sICcnLCAibG9naWNhbCB4bWluIG51bGwiKTsK K215ICRzYXZlZF9sb2dpY2FsX2NhdGFsb2dfeG1pbiA9ICRzbG90LT57J2NhdGFsb2dfeG1p bid9OworaXNudCgkc2F2ZWRfbG9naWNhbF9jYXRhbG9nX3htaW4sICcnLCAibG9naWNhbCBj YXRhbG9nX3htaW4gbm90IG51bGwiKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBDYXRhbG9nIHhtaW5zIHNob3VsZCBhZHZhbmNlIGFmdGVyIHN0YW5kYnkg bG9naWNhbCBzbG90IGZldGNoZXMgdGhlIGNoYW5nZXMuCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIElkZWFsbHkgd2UnZCBqdXN0IGhvbGQgY2F0YWxvZ194bWlu LCBidXQgc2luY2UgaHNfZmVlZGJhY2sgY3VycmVudGx5IHVzZXMgdGhlIHNsb3QsCisjIHdl IGhvbGQgZG93biB4bWluLgorJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXFbQ1JFQVRFIFRBQkxFIGNhdGFsb2dfaW5jcmVhc2VfMSgpO10pOworJG5vZGVfbWFzdGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlKGlkIHNl cmlhbCBwcmltYXJ5IGtleSwgYmxhaCB0ZXh0KScpOworZm9yIG15ICRpICgwIC4uIDIwMDAp Cit7CisgICAgJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbSU5TRVJU IElOVE8gdGVzdF90YWJsZShibGFoKSBWQUxVRVMgKCdlbnRyeSAkaScpXSk7Cit9Ciskbm9k ZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcVtDUkVBVEUgVEFCTEUgY2F0YWxv Z19pbmNyZWFzZV8yKCk7XSk7Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnVkFDVVVNJyk7CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCitjbXBf b2soJG5vZGVfc3RhbmRieS0+c2xvdCgkc3RhbmRieV9zbG90bmFtZSktPnsnY2F0YWxvZ194 bWluJ30sICI9PSIsCisJICAgJHNhdmVkX2xvZ2ljYWxfY2F0YWxvZ194bWluLAorCSAgICJs b2dpY2FsIHNsb3QgY2F0YWxvZ194bWluIGhhc24ndCBhZHZhbmNlZCBiZWZvcmUgZ2V0X2No YW5nZXMiKTsKKworKCRyZXQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3RhbmRieS0+ cHNxbCgncG9zdGdyZXMnLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCckc3RhbmRieV9zbG90bmFtZScsIE5VTEwsIE5VTEwsICdpbmNsdWRl LXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS10aW1lc3Rh bXAnLCAnMCcpXSk7CitpcygkcmV0LCAwLCAncmVwbGF5IG9mIGJpZyBzZXJpZXMgc3VjY2Vl ZGVkJyk7Citpc250KCRzdGRvdXQsICcnLCAncmVwbGF5ZWQgc29tZSByb3dzJyk7CisKKyRu b2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisjIGxvZ2ljYWwgc2xvdCBjYXRhbG9n X3htaW4gb24gc2xhdmUgc2hvdWxkIGFkdmFuY2UgYWZ0ZXIgcGdfbG9naWNhbF9zbG90X2dl dF9jaGFuZ2VzCit3YWl0X2Zvcl94bWlucygkbm9kZV9zdGFuZGJ5LCAkc3RhbmRieV9zbG90 bmFtZSwKKwkJCSAgICJjYXRhbG9nX3htaW46OnZhcmNoYXI6OmludCA+ICR7c2F2ZWRfbG9n aWNhbF9jYXRhbG9nX3htaW59Iik7Ciskc2xvdCA9ICRub2RlX3N0YW5kYnktPnNsb3QoJHN0 YW5kYnlfc2xvdG5hbWUpOworbXkgJG5ld19sb2dpY2FsX2NhdGFsb2dfeG1pbiA9ICRzbG90 LT57J2NhdGFsb2dfeG1pbid9OworaXMoJHNsb3QtPnsneG1pbid9LCAnJywgImxvZ2ljYWwg eG1pbiBudWxsIik7CisKKyMgaG90IHN0YW5kYnkgZmVlZGJhY2sgc2hvdWxkIGFkdmFuY2Ug bWFzdGVyJ3MgcGh5cyBjYXRhbG9nX3htaW4gbm93IHRoYXQgdGhlCisjIHN0YW5kYnkncyBz bG90IGRvZXNuJ3QgaG9sZCBpdCBkb3duIGFzIGZhci4KKyMgQnV0IG1hc3RlcidzIHBoeXMg Y2F0YWxvZ194bWluIHNob3VsZCBub3QgZ28gcGFzdCB0aGUgc2xhdmUncyBsb2dpY2FsIHNs b3QncworIyBjYXRhbG9nX3htaW4sIGV2ZW4gd2hpbGUgbWFzdGVyJ3MgcGh5cyB4bWluIGFk dmFuY2VzLgorIworIyBGaXJzdCwgbWFrZSBzdXJlIG1hc3RlcidzIHhtaW4gaXMgYWR2YW5j ZWQuIFRoaXMgaGFwcGVucyBvbiBob3Qgc3RhbmRieQorIyBmZWVkYmFjay4gU28gdGhpcyBj aGVjayBmb3IgbWFzdGVyJ3MgeG1pbiBhZHZhbmNlIGFsc28gbWFrZXMgc3VyZSBob3Qgc3Rh bmRieQorIyBmZWVkYmFjayBoYXMgcmVhY2hlZCB0aGUgbWFzdGVyLCB3aGljaCBpcyByZXF1 aXJlZCBmb3IgdGhlIHN1YnNlcXVlbnQKKyMgY2F0YWxvZ194bWluIHRlc3QuCitteSAkdGVt cF9waHlzX3htaW4gPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSktPnsn eG1pbid9OworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCB0 eGlkX2N1cnJlbnQoKScpOword2FpdF9mb3JfeG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVy X3Nsb3RuYW1lLAorCQkJICAgInhtaW46OnZhcmNoYXI6OmludCA+ICR7dGVtcF9waHlzX3ht aW59Iik7Ciskc2xvdCA9ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsK KyMgTm93IGNoZWNrIHRoYXQgdGhlIG1hc3RlcidzIHBoeXMgY2F0YWxvZ194bWluIGhhcyBh ZHZhbmNlZCBidXQgbm90IGJleW9uZAorIyBzdGFuZGJ5J3MgbG9naWNhbCBjYXRhbG9nX3ht aW4KK2NtcF9vaygkc2xvdC0+eydjYXRhbG9nX3htaW4nfSwgIj4iLCAkc2F2ZWRfcGh5c2lj YWxfY2F0YWxvZ194bWluLAorCSd1cHN0cmVhbSBwaHlzaWNhbCBzbG90IGNhdGFsb2dfeG1p biBoYXMgYWR2YW5jZWQgd2l0aCBoc19mZWVkYmFjayBvbicpOworY21wX29rKCRzbG90LT57 J2NhdGFsb2dfeG1pbid9LCAiPT0iLCAkbmV3X2xvZ2ljYWxfY2F0YWxvZ194bWluLAorCSd1 cHN0cmVhbSBwaHlzaWNhbCBzbG90IGNhdGFsb2dfeG1pbiBub3QgcGFzdCBkb3duc3RyZWFt IGNhdGFsb2dfeG1pbiB3aXRoIGhzX2ZlZWRiYWNrIG9uJyk7CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBVcHN0cmVhbSBvbGRlc3RYaWQgc2hvdWxkIG5vdCBnbyBwYXN0IGRv d25zdHJlYW0gY2F0YWxvZ194bWluCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgRmly c3QgYnVybiBzb21lIHhpZHMgb24gdGhlIG1hc3RlciBpbiBhbm90aGVyIERCLCBzbyB3ZSBw dXNoIHRoZSBtYXN0ZXIncworIyBuZXh0WGlkIGFoZWFkLgorZm9yZWFjaCBteSAkaSAoMSAu LiAxMDApCit7CisJJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVD VCB0eGlkX2N1cnJlbnQoKScpOworfQorCisjIEZvcmNlIHZhY3V1bSBmcmVlemUgb24gdGhl IG1hc3RlciBhbmQgZW5zdXJlIGl0cyBvbGRlc3RYbWluIGRvZXNuJ3QgYWR2YW5jZQorIyBw YXN0IG91ciBuZWVkZWQgeG1pbi4gVGhlIG9ubHkgd2F5IHdlIGhhdmUgdmlzaWJpbGl0eSBp bnRvIHRoYXQgaXMgdG8gZm9yY2UKKyMgYSBjaGVja3BvaW50LgorJG5vZGVfbWFzdGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlVQREFURSBwZ19kYXRhYmFzZSBTRVQgZGF0YWxsb3dj b25uID0gdHJ1ZSBXSEVSRSBkYXRuYW1lID0gJ3RlbXBsYXRlMCciKTsKK2ZvcmVhY2ggbXkg JGRibmFtZSAoJ3RlbXBsYXRlMScsICdwb3N0Z3JlcycsICdwb3N0Z3JlcycsICd0ZW1wbGF0 ZTAnKQoreworCSRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCRkYm5hbWUsICdWQUNVVU0gRlJF RVpFJyk7Cit9Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ0hFQ0tQ T0lOVCcpOworSVBDOjpSdW46OnJ1bihbJ3BnX2NvbnRyb2xkYXRhJywgJG5vZGVfbWFzdGVy LT5kYXRhX2RpcigpXSwgJz4nLCBcJHN0ZG91dCkKKwlvciBkaWUgInBnX2NvbnRyb2xkYXRh IGZhaWxlZCB3aXRoICQ/IjsKK215IEBjaGVja3BvaW50ID0gc3BsaXQoJ1xuJywgJHN0ZG91 dCk7CitteSAkb2xkZXN0WGlkID0gJyc7Citmb3JlYWNoIG15ICRsaW5lIChAY2hlY2twb2lu dCkKK3sKKwlpZiAoJGxpbmUgPX4gcXIvXkxhdGVzdCBjaGVja3BvaW50J3Mgb2xkZXN0WElE OlxzKyhcZCspLykKKwl7CisJCSRvbGRlc3RYaWQgPSAkMTsKKwl9Cit9CitkaWUgJ25vIG9s ZGVzdFhJRCBmb3VuZCBpbiBjaGVja3BvaW50JyB1bmxlc3MgJG9sZGVzdFhpZDsKKworY21w X29rKCRvbGRlc3RYaWQsICI8PSIsICRub2RlX3N0YW5kYnktPnNsb3QoJHN0YW5kYnlfc2xv dG5hbWUpLT57J2NhdGFsb2dfeG1pbid9LAorCSAgICd1cHN0cmVhbSBvbGRlc3RYaWQgbm90 IHBhc3QgZG93bnN0cmVhbSBjYXRhbG9nX3htaW4gd2l0aCBoc19mZWVkYmFjayBvbicpOwor Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUgcGdfZGF0 YWJhc2UgU0VUIGRhdGFsbG93Y29ubiA9IGZhbHNlIFdIRVJFIGRhdG5hbWUgPSAndGVtcGxh dGUwJyIpOworCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIERyb3Agc2xvdAorIyBNYWtlIHN1cmUgc3RhbmRieSBzbG90cyBhcmUg ZHJvcHBhYmxlLCBhbmQgcHJvcGVybHkgY2xlYXIgdGhlIHVwc3RyZWFtJ3MgeG1pbgorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaXMo JG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTSE9XIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrJyksICdvbicsICdoc19mZWVkYmFjayBpcyBvbicpOworCiskbm9kZV9zdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoJyRzdGFuZGJ5X3Nsb3RuYW1lJyldKTsKKworaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgk c3RhbmRieV9zbG90bmFtZSktPnsnc2xvdF90eXBlJ30sICcnLCAnc2xvdCBvbiBzdGFuZGJ5 IGRyb3BwZWQgbWFudWFsbHknKTsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sg c2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4g b24gbWFzdGVyLiBjYXRhbG9nX3htaW4gc2hvdWxkIGJlY29tZSBOVUxMIGJlY2F1c2Ugd2Ug ZHJvcHBlZAorIyB0aGUgbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVfbWFz dGVyLCAkbWFzdGVyX3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5EIGNh dGFsb2dfeG1pbiBJUyBOVUxMIik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90 LzAyNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmdfY29uZmxpY3RzLnBsIGIvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMjVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX2NvbmZsaWN0cy5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40MjZhNDEyYjFmCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjVfc3RhbmRieV9sb2dpY2Fs X2RlY29kaW5nX2NvbmZsaWN0cy5wbApAQCAtMCwwICsxLDIyOCBAQAorIyBsb2dpY2FsIGRl Y29kaW5nIG9uIGEgc3RhbmRieSA6IHRlc3QgY29uZmxpY3QgcmVjb3Zlcnk7IGFuZCBvdGhl ciB0ZXN0cyB0aGF0CisjIHZlcmlmeSBzbG90cyBnZXQgZHJvcHBlZCBhcyBleHBlY3RlZC4K KwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIFBvc3RncmVzTm9kZTsKK3Vz ZSBUZXN0TGliOwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMjY7Cit1c2UgUmVjdXJzaXZl Q29weTsKK3VzZSBGaWxlOjpDb3B5OwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisK K215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsK KworbXkgJG5vZGVfbWFzdGVyID0gZ2V0X25ld19ub2RlKCdtYXN0ZXInKTsKK215ICRub2Rl X3N0YW5kYnkgPSBnZXRfbmV3X25vZGUoJ3N0YW5kYnknKTsKKworIyBOYW1lIGZvciB0aGUg cGh5c2ljYWwgc2xvdCBvbiBtYXN0ZXIKK215ICRtYXN0ZXJfc2xvdG5hbWUgPSAnbWFzdGVy X3BoeXNpY2FsJzsKKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVw bGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFu IGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNj ZW50IHN0YXRlCitzdWIgd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFt ZSwgJGNoZWNrX2V4cHIpID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJ J3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFs b2cucGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFt ZSc7CisJXSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBh ZHZhbmNlIjsKK30KKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cy5jb25mbF9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCitzdWIgY2hlY2tfY29uZmxf bG9naWNhbHNsb3QKK3sKKwlvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgK KwkJJ3Bvc3RncmVzJywKKwkJInNlbGVjdCAoY29uZmxfbG9naWNhbHNsb3QgPSAyKSBmcm9t IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIs ICd0JyksCisJCSdjb25mbF9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBv dXQgd2FpdGluZyBjb25mbF9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKK30KKworIyBD cmVhdGUgdGhlIHJlcXVpcmVkIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBjcmVh dGVfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Ns b3Rfb25fc3RhbmRieSgkbm9kZV9tYXN0ZXIsICdkcm9wc2xvdCcsICd0ZXN0ZGInKTsKKwkk bm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfbWFz dGVyLCAnYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKK30KKworIyBBY3F1aXJlIG9uZSBvZiB0 aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xvZ2ljYWxfc2xv dHMoKQorc3ViIG1ha2Vfc2xvdF9hY3RpdmUKK3sKKwlteSAkc2xvdF91c2VyX2hhbmRsZTsK KworCSMgbWFrZSBzdXJlIGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJcHJpbnQgInN0YXJ0aW5n IHBnX3JlY3Zsb2dpY2FsXG4iOworCSRzbG90X3VzZXJfaGFuZGxlID0gSVBDOjpSdW46OnN0 YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkbm9kZV9zdGFuZGJ5LT5jb25uc3RyKCd0 ZXN0ZGInKSwgJy1TJywgJ2FjdGl2ZXNsb3QnLCAnLWYnLCAnLScsICctLW5vLWxvb3AnLCAn LS1zdGFydCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7CisKKwl3aGlsZSAo ISRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+eydhY3RpdmVfcGlkJ30pCisJ eworCQl1c2xlZXAoMTAwXzAwMCk7CisJCXByaW50ICJ3YWl0aW5nIGZvciBzbG90IHRvIGJl Y29tZSBhY3RpdmVcbiI7CisJfQorCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsKK30KKwor IyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNl IGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtl X3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2ZSAnZHJvcHNsb3QnLgorc3ViIGNo ZWNrX3Nsb3RzX2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisJ bXkgJHJldHVybjsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2Ryb3BzbG90JyktPnsn c2xvdF90eXBlJ30sICcnLCAnZHJvcHNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMo JG5vZGVfc3RhbmRieS0+c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywg J2FjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisKKwkjIG91ciBjbGllbnQgc2hv dWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdhbHNlbmRlciBlcnJvcgor CWV2YWwgeworCQkkc2xvdF91c2VyX2hhbmRsZS0+ZmluaXNoOworCX07CisJJHJldHVybiA9 ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVk IG5vbi16ZXJvXG4iKTsKKwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRlcnIsIHFyL2Nv bmZsaWN0IHdpdGggcmVjb3ZlcnkvLCAncmVjdmxvZ2ljYWwgcmVjb3ZlcnkgY29uZmxpY3Qn KTsKKwkJbGlrZSgkc3RkZXJyLCBxci9tdXN0IGJlIGRyb3BwZWQvLCAncmVjdmxvZ2ljYWwg ZXJyb3IgZGV0YWlsJyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIEluaXRpYWxpemUgbWFzdGVyIG5vZGUKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCiskbm9kZV9tYXN0ZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAx LCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgcXsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworbWF4X3JlcGxpY2F0 aW9uX3Nsb3RzID0gNAorbWF4X3dhbF9zZW5kZXJzID0gNAorbG9nX21pbl9tZXNzYWdlcyA9 ICdkZWJ1ZzInCitsb2dfZXJyb3JfdmVyYm9zaXR5ID0gdmVyYm9zZQorIyBzZW5kIHN0YXR1 cyByYXBpZGx5IHNvIHdlIHByb21wdGx5IGFkdmFuY2UgeG1pbiBvbiBtYXN0ZXIKK3dhbF9y ZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWwgPSAxCisjIHZlcnkgcHJvbXB0bHkgdGVybWluYXRl IGNvbmZsaWN0aW5nIGJhY2tlbmRzCittYXhfc3RhbmRieV9zdHJlYW1pbmdfZGVsYXkgPSAn MnMnCit9KTsKKyRub2RlX21hc3Rlci0+ZHVtcF9pbmZvOworJG5vZGVfbWFzdGVyLT5zdGFy dDsKKworJG5vZGVfbWFzdGVyLT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNF IHRlc3RkYl0pOworCiskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VM RUNUICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJG1hc3Rl cl9zbG90bmFtZScpO10pOworbXkgJGJhY2t1cF9uYW1lID0gJ2IxJzsKKyRub2RlX21hc3Rl ci0+YmFja3VwKCRiYWNrdXBfbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IEluaXRpYWxpemUgc2xhdmUgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5v ZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9tYXN0ZXIsICRiYWNrdXBf bmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRu b2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1h cnlfc2xvdF9uYW1lID0gJyRtYXN0ZXJfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5LT5z dGFydDsKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAn cmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNv bmZsaWN0OiBEcm9wIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3Rz CisjIFNjZW5hcmlvIDEgOiBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NyZWF0ZV9sb2dp Y2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byByZXByb2R1Y2UgcmVjb3ZlcnkgY29uZmxp Y3QgaXMgdG8gcnVuIFZBQ1VVTSBGVUxMIHdpdGgKKyMgaG90X3N0YW5kYnlfZmVlZGJhY2sg dHVybmVkIG9mZiBvbiBzbGF2ZS4KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9mZgorXSk7Ciskbm9k ZV9zdGFuZGJ5LT5yZXN0YXJ0OworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgb2Zm IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBt YXN0ZXIuIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3 YWl0X2Zvcl94bWlucygkbm9kZV9tYXN0ZXIsICRtYXN0ZXJfc2xvdG5hbWUsCisJCQkgICAi eG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOworCiskaGFuZGxlID0g bWFrZV9zbG90X2FjdGl2ZSgpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZs aWN0Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBGVUxMJyk7 CisKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVw bGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCitjaGVja19zbG90c19kcm9w cGVkKCRoYW5kbGUpOworCitjaGVja19jb25mbF9sb2dpY2Fsc2xvdCgpOworCisjIFR1cm4g aG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK10p OworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVl ZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9n X3htaW4gb24gbWFzdGVyLiBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNo b3VsZCBhZHZhbmNlLAorIyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4g TlVMTCBzaW5jZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygk bm9kZV9tYXN0ZXIsICRtYXN0ZXJfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVM TCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IERy b3AgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMiA6IGluY29ycmVjdCB3YWxfbGV2ZWwgYXQgbWFzdGVyCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNhbF9z bG90cygpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgpOworCisjIE1ha2UgbWFz dGVyIHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0 LgorJG5vZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxWword2Fs X2xldmVsID0gJ3JlcGxpY2EnCitdKTsKKyRub2RlX21hc3Rlci0+cmVzdGFydDsKKworJG5v ZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKK2NoZWNrX3Nsb3RzX2Ryb3BwZWQoJGhh bmRsZSk7CisKK2NoZWNrX2NvbmZsX2xvZ2ljYWxzbG90KCk7CisKKyMgUmVzdG9yZSBtYXN0 ZXIgd2FsX2xldmVsCiskbm9kZV9tYXN0ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK10pOworJG5vZGVfbWFzdGVyLT5yZXN0 YXJ0OworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdy ZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRFJPUCBEQVRBQkFT RSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVkaW5nIGFjdGl2ZSBzbG90cy4KKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Ny ZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgpOwor IyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBl ZC4gVGhpcyBzbG90IHNob3VsZCBub3QKKyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5 LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfbWFzdGVyLCAnb3RoZXJz bG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRiIG9uIHRoZSBtYXN0ZXIgdG8gdmVyaWZ5 IHNsb3RzIGFyZSBkcm9wcGVkIG9uIHN0YW5kYnkKKyRub2RlX21hc3Rlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFbRFJPUCBEQVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfbWFzdGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9tYXN0 ZXItPmxzbignZmx1c2gnKSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlIFdI RVJFIGRhdG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVkIG9u IHN0YW5kYnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMoJG5v ZGVfc3RhbmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dpY2Fs JywKKwknb3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVhbnVw IDogbWFudWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRub2Rl X3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlv bl9zbG90KCdvdGhlcnNsb3QnKV0pOwotLSAKMi4xOC40Cgo= --------------F8760880D041201312AEC593 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v13-0003-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v13-0003-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSAwMDc5MjkwYzgzNTA4NzA4NTA2ZGQ5ZjMyNjg1NzI1NDE1NGFkODkzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxNjoxMzozNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEzIDMvNV0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLApkcm9wIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhpbmcgaWYg d2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwgYW5kIHRo ZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJvZHVjZSBh IG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJlY292ZXJ5 LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2dldF9hY3Rpdml0eSBmaWVsZDoKY29uZmxf bG9naWNhbHNsb3QuCgpBbWl0IEtoYW5kZWthciwgcmV2aWV3ZWQgYnkgQW5kcmVzIEZyZXVu ZC4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgfCAgMTAgKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICB8ICAgNCArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgIHwgICAzICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0eGxvZy5jICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd4bG9nLmMgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAg ICB8ICAxNCArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIHwgICAz ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jICAgICAgfCAgMjIgKysrKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgIHwgMTgzICsrKysrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMg IHwgICA0ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyB8ICAgMyAr CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgfCAgMTEgKy0KIHNyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICB8ICAyMiArKysrCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgfCAgMTYgKysrCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0ICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggICAgICAgIHwgICA0ICstCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgfCAgIDEgKwogMjEgZmlsZXMg Y2hhbmdlZCwgMzE1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogICA2LjMlIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogICA2LjAlIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtLwogICA1LjglIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAgNC45JSBzcmMvYmFja2VuZC9w b3N0bWFzdGVyLwogIDQ4LjMlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uLwogICA2LjQlIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjLwogICA4LjAlIHNyYy9iYWNrZW5kL3Rjb3AvCiAgIDMu MSUgc3JjL2JhY2tlbmQvdXRpbHMvYWR0LwogICA2LjQlIHNyYy9pbmNsdWRlLwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9u aXRvcmluZy5zZ21sCmluZGV4IDE5NTQwMjA2ZjkuLmViNWJiNTIwOWUgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbApAQCAtMzk4MCw2ICszOTgwLDE2IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZl bnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9l dmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPmNvbmZsX2xvZ2ljYWxzbG90PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIHF1 ZXJpZXMgaW4gdGhpcyBkYXRhYmFzZSB0aGF0IGhhdmUgYmVlbiBjYW5jZWxlZCBkdWUgdG8K KyAgICAgICBsb2dpY2FsIHNsb3RzCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggOTdkODE0YjkyNy4uYjZjMGQ4YjI5MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xOTUsNyArMTk1LDggQEAgZ2lz dFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1Jl Y0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKIAotCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJlbW92ZWRY aWQsIHJub2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxk YXRhLT5sYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1Rh YmxlLCBybm9kZSk7CiAJfQogCiAJaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkbyhyZWNvcmQs IDAsICZidWZmZXIpID09IEJMS19ORUVEU19SRURPKQpAQCAtMzk1LDYgKzM5Niw3IEBAIGdp c3RSZWRvUGFnZVJldXNlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDJkOWU2Y2RmZC4uYjFm ZjU5NmViNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDIs NyArMTAwMiw4IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCVJlbEZpbGVOb2RlIHJub2RlOwogCiAJCVhMb2dSZWNHZXRCbG9ja1Rh ZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7Ci0JCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOwor CQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJl bW92ZWRYaWQsCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsK IAl9CiAKIAlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQs IDAsIFJCTV9OT1JNQUwsIHRydWUsICZidWZmZXIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwppbmRleCBhYzAwNGYxMjU4Li45MDNiMzdhNjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwpAQCAtODUxMiw3ICs4NTEyLDggQEAgaGVhcF94bG9nX2NsZWFudXBfaW5m byhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl4bF9oZWFwX2NsZWFudXBfaW5mbyAqeGxy ZWMgPSAoeGxfaGVhcF9jbGVhbnVwX2luZm8gKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsK IAogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlkLCB4bHJlYy0+bm9kZSk7CisJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5sYXRlc3RSZW1vdmVkWGlk LAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHhscmVjLT5ub2RlKTsKIAog CS8qCiAJICogQWN0dWFsIG9wZXJhdGlvbiBpcyBhIG5vLW9wLiBSZWNvcmQgdHlwZSBleGlz dHMgdG8gcHJvdmlkZSBhIG1lYW5zIGZvcgpAQCAtODU0OCw3ICs4NTQ5LDggQEAgaGVhcF94 bG9nX2NsZWFuKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqIGxhdGVzdFJlbW92ZWRY aWQgaXMgaW52YWxpZCwgc2tpcCBjb25mbGljdCBwcm9jZXNzaW5nLgogCSAqLwogCWlmIChJ bkhvdFN0YW5kYnkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoeGxyZWMtPmxhdGVzdFJlbW92 ZWRYaWQpKQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+ bGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMt Pm9uQ2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYSBmdWxs LXBhZ2UgaW1hZ2UsIHJlc3RvcmUgaXQgKHVzaW5nIGEgY2xlYW51cCBsb2NrKSBhbmQKQEAg LTg2NDQsNyArODY0Niw5IEBAIGhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJp Z2h0LgogCSAqLwogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLCBybm9kZSk7CisJCVJlc29sdmVS ZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLAorCQkJCQkJ CQkJCQl4bHJlYy0+b25DYXRhbG9nVGFibGUsCisJCQkJCQkJCQkJCXJub2RlKTsKIAogCS8q CiAJICogUmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBo ZWFwIGZpbGUgaGFzIGRyb3BwZWQgb3IKQEAgLTg3ODEsNyArODc4NSw4IEBAIGhlYXBfeGxv Z19mcmVlemVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJVHJhbnNhY3Rpb25J ZFJldHJlYXQobGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJl Y29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QobGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJ CQl4bHJlYy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAlpZiAoWExvZ1JlYWRC dWZmZXJGb3JSZWRvKHJlY29yZCwgMCwgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDE3NzliNmJhNDcuLjM2ZWUz MTM0MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNyAr NjY5LDggQEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsK IAotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0 UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0 YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJLyoKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0 cmVlX3hsb2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJ bkhvdFN0YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVs bFhpZCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJl Yy0+b25DYXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggZDQwYzdiNTg3Ny4uMWE1 Yzg5NTlhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9n LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKQEAgLTg4MSw2 ICs4ODEsNyBAQCBzcGdSZWRvVmFjdXVtUmVkaXJlY3QoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAKIAkJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZub2RlLCBOVUxMLCBO VUxMKTsKIAkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+ bmV3ZXN0UmVkaXJlY3RYaWQsCisJCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1RhYmxl LAogCQkJCQkJCQkJCQkJbm9kZSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKaW5kZXggNmEyMWNiYTM2Mi4uYzViNWQ2YjYxMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwpAQCAtMTAzNzMsNiArMTAzNzMsMjAgQEAgeGxvZ19yZWRvKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFt ZXRlcnMgaW4gcGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpLCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAq IERyb3AgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBw cmltYXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3Ig bG9naWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlh bGx5IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcK KwkJICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRo YXQgY2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlv biBvZiBsb2dpY2FsIHNsb3RzIG9yIGRyb3BwZWQgZXhpc3RpbmcKKwkJICogb25lcy4KKwkJ ICovCisJCWlmIChJblJlY292ZXJ5ICYmIEluSG90U3RhbmRieSAmJgorCQkJeGxyZWMud2Fs X2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwgJiYKKwkJCXdhbF9sZXZlbCA+PSBXQUxfTEVW RUxfTE9HSUNBTCkKKwkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90 cyhJbnZhbGlkT2lkLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQlnZXR0ZXh0X25vb3Ao IkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9n aWNhbCBvbiBtYXN0ZXIuIikpOworCiAJCUxXTG9ja0FjcXVpcmUoQ29udHJvbEZpbGVMb2Nr LCBMV19FWENMVVNJVkUpOwogCQlDb250cm9sRmlsZS0+TWF4Q29ubmVjdGlvbnMgPSB4bHJl Yy5NYXhDb25uZWN0aW9uczsKIAkJQ29udHJvbEZpbGUtPm1heF93b3JrZXJfcHJvY2Vzc2Vz ID0geGxyZWMubWF4X3dvcmtlcl9wcm9jZXNzZXM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKaW5kZXggMGRjYTY1ZGM3Yi4uMGQ2YzllNjkyNiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ2LDcgKzk0Niw4IEBAIENSRUFURSBW SUVXIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIEFTCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF9kYl9jb25mbGljdF9sb2NrKEQub2lkKSBBUyBjb25mbF9sb2NrLAogICAgICAgICAg ICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QoRC5vaWQpIEFTIGNvbmZsX3Nu YXBzaG90LAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGlu KEQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgICAgICAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBjb25mbF9kZWFkbG9jawor ICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhE Lm9pZCkgQVMgY29uZmxfZGVhZGxvY2ssCisgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9j b25mbGljdF9sb2dpY2Fsc2xvdChELm9pZCkgQVMgY29uZmxfbG9naWNhbHNsb3QKICAgICBG Uk9NIHBnX2RhdGFiYXNlIEQ7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfdXNlcl9mdW5jdGlv bnMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCmluZGV4IGI3YWY3YzI3MDcuLjU2OTAy ZTEyNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwpAQCAtNDYzOSw2ICs0NjM5LDI0 IEBAIHBnc3RhdF9zZW5kX2FyY2hpdmVyKGNvbnN0IGNoYXIgKnhsb2csIGJvb2wgZmFpbGVk KQogCXBnc3RhdF9zZW5kKCZtc2csIHNpemVvZihtc2cpKTsKIH0KIAorLyogLS0tLS0tLS0t LQorICogcGdzdGF0X3NlbmRfZHJvcGxvZ2ljYWxzbG90KCkgLQorICoKKyAqCVRlbGwgdGhl IGNvbGxlY3RvciBhYm91dCBhIGxvZ2ljYWwgc2xvdCBiZWluZyBkcm9wcGVkCisgKglkdWUg dG8gY29uZmxpY3QuCisgKiAtLS0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9zZW5kX2Ry b3Bsb2dpY2Fsc2xvdChPaWQgZGJPaWQpCit7CisJUGdTdGF0X01zZ1JlY292ZXJ5Q29uZmxp Y3QgbXNnOworCisJcGdzdGF0X3NldGhlYWRlcigmbXNnLm1faGRyLCBQR1NUQVRfTVRZUEVf UkVDT1ZFUllDT05GTElDVCk7CisJbXNnLm1fZGF0YWJhc2VpZCA9IGRiT2lkOworCW1zZy5t X3JlYXNvbiA9IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q7CisJcGdz dGF0X3NlbmQoJm1zZywgc2l6ZW9mKG1zZykpOworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBw Z3N0YXRfc2VuZF9iZ3dyaXRlcigpIC0KICAqCkBAIC01MTEzLDYgKzUxMzEsNyBAQCByZXNl dF9kYmVudHJ5X2NvdW50ZXJzKFBnU3RhdF9TdGF0REJFbnRyeSAqZGJlbnRyeSkKIAlkYmVu dHJ5LT5uX2NvbmZsaWN0X3RhYmxlc3BhY2UgPSAwOwogCWRiZW50cnktPm5fY29uZmxpY3Rf bG9jayA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9zbmFwc2hvdCA9IDA7CisJZGJlbnRy eS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9i dWZmZXJwaW4gPSAwOwogCWRiZW50cnktPm5fY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayA9 IDA7CiAJZGJlbnRyeS0+bl90ZW1wX2ZpbGVzID0gMDsKQEAgLTY5OTYsNiArNzAxNSw5IEBA IHBnc3RhdF9yZWN2X3JlY292ZXJ5Y29uZmxpY3QoUGdTdGF0X01zZ1JlY292ZXJ5Q29uZmxp Y3QgKm1zZywgaW50IGxlbikKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NO QVBTSE9UOgogCQkJZGJlbnRyeS0+bl9jb25mbGljdF9zbmFwc2hvdCsrOwogCQkJYnJlYWs7 CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWRi ZW50cnktPm5fY29uZmxpY3RfbG9naWNhbHNsb3QrKzsKKwkJCWJyZWFrOwogCQljYXNlIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJZGJlbnRyeS0+bl9jb25m bGljdF9idWZmZXJwaW4rKzsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmlu ZGV4IDJlYzcxMjc5NDcuLjQ5NDVkZDFhNGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKQEAgLTEw Myw2ICsxMDQsNyBAQCBzdGF0aWMgaW50IFJlcGxpY2F0aW9uU2xvdEFjcXVpcmVJbnRlcm5h bChSZXBsaWNhdGlvblNsb3QgKnNsb3QsCiAJCQkJCQkJCQkJICBjb25zdCBjaGFyICpuYW1l LCBTbG90QWNxdWlyZUJlaGF2aW9yIGJlaGF2aW9yKTsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0 aW9uU2xvdERyb3BBY3F1aXJlZCh2b2lkKTsKIHN0YXRpYyB2b2lkIFJlcGxpY2F0aW9uU2xv dERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KTsKK3N0YXRpYyB2b2lkIFJlcGxpY2F0 aW9uU2xvdERyb3BDb25mbGljdGluZyhSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogCiAvKiBp bnRlcm5hbCBwZXJzaXN0ZW5jeSBmdW5jdGlvbnMgKi8KIHN0YXRpYyB2b2lkIFJlc3RvcmVT bG90RnJvbURpc2soY29uc3QgY2hhciAqbmFtZSk7CkBAIC03MTksNiArNzIxLDcwIEBAIFJl cGxpY2F0aW9uU2xvdERyb3BQdHIoUmVwbGljYXRpb25TbG90ICpzbG90KQogCUxXTG9ja1Jl bGVhc2UoUmVwbGljYXRpb25TbG90QWxsb2NhdGlvbkxvY2spOwogfQogCisvKgorICogUGVy bWFuZW50bHkgZHJvcCBhIGNvbmZsaWN0aW5nIHJlcGxpY2F0aW9uIHNsb3QuIElmIGl0J3Mg YWxyZWFkeSBhY3RpdmUgYnkKKyAqIGFub3RoZXIgYmFja2VuZCwgc2VuZCBpdCBhIHJlY292 ZXJ5IGNvbmZsaWN0IHNpZ25hbCwgYW5kIHRoZW4gdHJ5IGFnYWluLgorICovCitzdGF0aWMg dm9pZAorUmVwbGljYXRpb25TbG90RHJvcENvbmZsaWN0aW5nKFJlcGxpY2F0aW9uU2xvdCAq c2xvdCkKK3sKKwlwaWRfdAkJYWN0aXZlX3BpZDsKKwlQR1BST0MJICAgKnByb2M7CisJVmly dHVhbFRyYW5zYWN0aW9uSWQJdnhpZDsKKwlib29sIGluaXRpYWxseV9ub3RfYWN0aXZlOwor CisJQ29uZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVlcCgmc2xvdC0+YWN0aXZlX2N2KTsK Kwlpbml0aWFsbHlfbm90X2FjdGl2ZSA9IHRydWU7CisJd2hpbGUgKDEpCisJeworCQlTcGlu TG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKKwkJYWN0aXZlX3BpZCA9IHNsb3QtPmFjdGl2 ZV9waWQ7CisJCWlmIChhY3RpdmVfcGlkID09IDApCisJCQlhY3RpdmVfcGlkID0gc2xvdC0+ YWN0aXZlX3BpZCA9IE15UHJvY1BpZDsKKwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRl eCk7CisKKwkJLyogRHJvcCB0aGUgYWNxdWlyZWQgc2xvdCwgdW5sZXNzIGl0IGlzIGFjcXVp cmVkIGJ5IGFub3RoZXIgYmFja2VuZCAqLworCQlpZiAoYWN0aXZlX3BpZCA9PSBNeVByb2NQ aWQpCisJCXsKKwkJCWVsb2coREVCVUcxLCAiYWNxdWlyZWQgY29uZmxpY3Rpbmcgc2xvdCwg bm93IGRyb3BwaW5nIGl0Iik7CisJCQlpZiAoaW5pdGlhbGx5X25vdF9hY3RpdmUpCisJCQkJ cGdzdGF0X3NlbmRfZHJvcGxvZ2ljYWxzbG90KHNsb3QtPmRhdGEuZGF0YWJhc2UpOworCQkJ UmVwbGljYXRpb25TbG90RHJvcFB0cihzbG90KTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyog c2xvdCB3YXMgYWN0aXZlICovCisJCWluaXRpYWxseV9ub3RfYWN0aXZlID0gZmFsc2U7CisK KwkJLyogU2VuZCB0aGUgb3RoZXIgYmFja2VuZCwgYSBjb25mbGljdCByZWNvdmVyeSBzaWdu YWwgKi8KKwkJU2V0SW52YWxpZFZpcnR1YWxUcmFuc2FjdGlvbklkKHZ4aWQpOworCQlMV0xv Y2tBY3F1aXJlKFByb2NBcnJheUxvY2ssIExXX1NIQVJFRCk7CisJCXByb2MgPSBCYWNrZW5k UGlkR2V0UHJvY1dpdGhMb2NrKGFjdGl2ZV9waWQpOworCQlpZiAocHJvYykKKwkJCUdFVF9W WElEX0ZST01fUEdQUk9DKHZ4aWQsICpwcm9jKTsKKwkJTFdMb2NrUmVsZWFzZShQcm9jQXJy YXlMb2NrKTsKKworCQkvKgorCQkgKiBJZiBjb2luY2lkZW50bHkgdGhhdCBwcm9jZXNzIGZp bmlzaGVkLCBzb21lIG90aGVyIGJhY2tlbmQgbWF5CisJCSAqIGFjcXVpcmUgdGhlIHNsb3Qg YWdhaW4uIFNvIHN0YXJ0IG92ZXIgYWdhaW4uCisJCSAqIE5vdGU6IEV2ZW4gaWYgdnhpZC5s b2NhbFRyYW5zYWN0aW9uSWQgaXMgaW52YWxpZCwgd2UgbmVlZCB0byBjYW5jZWwKKwkJICog dGhhdCBiYWNrZW5kLCBiZWNhdXNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byBtYWtlIGl0 IHJlbGVhc2UgdGhlCisJCSAqIHNsb3QuIFNvIGRvbid0IGJvdGhlciB0byB2YWxpZGF0ZSB2 eGlkLmxvY2FsVHJhbnNhY3Rpb25JZC4KKwkJICovCisJCWlmICh2eGlkLmJhY2tlbmRJZCA9 PSBJbnZhbGlkQmFja2VuZElkKQorCQkJY29udGludWU7CisKKwkJZWxvZyhERUJVRzEsICJj YW5jZWxsaW5nIHBpZCAlZCAoYmFja2VuZElkOiAlZCkgZm9yIHJlbGVhc2luZyBzbG90IiwK KwkJCQkJIGFjdGl2ZV9waWQsIHZ4aWQuYmFja2VuZElkKTsKKworCQlDYW5jZWxWaXJ0dWFs VHJhbnNhY3Rpb24odnhpZCwgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCk7CisJCUNvbmRpdGlvblZhcmlhYmxlU2xlZXAoJnNsb3QtPmFjdGl2ZV9jdiwKKwkJCQkJ CQkgICBXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NMT1RfRFJPUCk7CisJfQorCisJQ29uZGl0 aW9uVmFyaWFibGVDYW5jZWxTbGVlcCgpOworfQorCiAvKgogICogU2VyaWFsaXplIHRoZSBj dXJyZW50bHkgYWNxdWlyZWQgc2xvdCdzIHN0YXRlIGZyb20gbWVtb3J5IHRvIGRpc2ssIHRo ZXJlYnkKICAqIGd1YXJhbnRlZWluZyB0aGUgY3VycmVudCBzdGF0ZSB3aWxsIHN1cnZpdmUg YSBjcmFzaC4KQEAgLTExNzMsNiArMTIzOSwxMjMgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2 ZVdhbCh2b2lkKQogCX0KIH0KIAorLyoKKyAqIFJlc29sdmUgcmVjb3ZlcnkgY29uZmxpY3Rz IHdpdGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBXaGVuIHhpZCBpcyB2YWxpZCwgaXQgbWVh bnMgdGhhdCByb3dzIG9sZGVyIHRoYW4geGlkIG1pZ2h0IGhhdmUgYmVlbgorICogcmVtb3Zl ZC4gVGhlcmVmb3JlIHdlIG5lZWQgdG8gZHJvcCBzbG90cyB0aGF0IGRlcGVuZCBvbiBzZWVp bmcgdGhvc2Ugcm93cy4KKyAqIFdoZW4geGlkIGlzIGludmFsaWQsIGRyb3AgYWxsIGxvZ2lj YWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB0aGUKKyAqIG1hc3RlciB3YWxfbGV2 ZWwgaXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3RpbmcgbG9naWNhbCBzbG90cyBu ZWVkIHRvCisgKiBiZSBkcm9wcGVkLiBBbHNvLCB3aGVuIHhpZCBpcyBpbnZhbGlkLCBhIGNv bW1vbiAnY29uZmxpY3RfcmVhc29uJyBpcworICogcHJvdmlkZWQgZm9yIHRoZSBlcnJvciBk ZXRhaWw7IG90aGVyd2lzZSBpdCBpcyBOVUxMLCBpbiB3aGljaCBjYXNlIGl0IGlzCisgKiBj b25zdHJ1Y3RlZCBvdXQgb2YgdGhlIHhpZCB2YWx1ZS4KKyAqLwordm9pZAorUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25J ZCB4aWQsCisJCQkJCQkJCQkJY2hhciAqY29uZmxpY3RfcmVhc29uKQoreworCWludAkJCWk7 CisJYm9vbAkJZm91bmRfY29uZmxpY3QgPSBmYWxzZTsKKworCUFzc2VydChtYXhfcmVwbGlj YXRpb25fc2xvdHMgPj0gMCk7CisKKwlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDAp CisJCXJldHVybjsKKworcmVzdGFydDoKKwlpZiAoZm91bmRfY29uZmxpY3QpCisJeworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCQlmb3VuZF9jb25mbGljdCA9IGZhbHNlOworCX0K KworCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJF RCk7CisJZm9yIChpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlvbl9zbG90czsgaSsrKQorCXsK KwkJUmVwbGljYXRpb25TbG90ICpzOworCisJCXMgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5y ZXBsaWNhdGlvbl9zbG90c1tpXTsKKworCQkvKiBjYW5ub3QgY2hhbmdlIHdoaWxlIFJlcGxp Y2F0aW9uU2xvdEN0bExvY2sgaXMgaGVsZCAqLworCQlpZiAoIXMtPmluX3VzZSkKKwkJCWNv bnRpbnVlOworCisJCS8qIFdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9naWNhbCogc2xv dCBjb25mbGljdHMuICovCisJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJCWNvbnRpbnVl OworCisJCS8qIEludmFsaWQgeGlkIG1lYW5zIGNhbGxlciBpcyBhc2tpbmcgdG8gZHJvcCBh bGwgbG9naWNhbCBzbG90cyAqLworCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkp CisJCQlmb3VuZF9jb25mbGljdCA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJVHJhbnNhY3Rp b25JZCBzbG90X3htaW47CisJCQlUcmFuc2FjdGlvbklkIHNsb3RfY2F0YWxvZ194bWluOwor CQkJU3RyaW5nSW5mb0RhdGEJY29uZmxpY3Rfc3RyLCBjb25mbGljdF94bWluczsKKwkJCWNo YXIJICAgKmNvbmZsaWN0X3NlbnRlbmNlID0KKwkJCQlnZXR0ZXh0X25vb3AoIlNsb3QgY29u ZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uIHdoaWNoIHdhcyBiZWluZyBpbmNyZWFzZWQgdG8i KTsKKworCQkJLyogbm90IG91ciBkYXRhYmFzZSwgc2tpcCAqLworCQkJaWYgKHMtPmRhdGEu ZGF0YWJhc2UgIT0gSW52YWxpZE9pZCAmJiBzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkKQor CQkJCWNvbnRpbnVlOworCisJCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKKwkJCXNs b3RfeG1pbiA9IHMtPmRhdGEueG1pbjsKKwkJCXNsb3RfY2F0YWxvZ194bWluID0gcy0+ZGF0 YS5jYXRhbG9nX3htaW47CisJCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKworCQkJ LyoKKwkJCSAqIEJ1aWxkIHRoZSBjb25mbGljdF9zdHIgd2hpY2ggd2lsbCBsb29rIGxpa2Ug OgorCQkJICogIlNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uIHdoaWNoIHdhcyBi ZWluZyBpbmNyZWFzZWQKKwkJCSAqIHRvIDkwMTIgKHNsb3QgeG1pbjogMTIzNCwgc2xvdCBj YXRhbG9nX3htaW46IDU2NzgpLiIKKwkJCSAqLworCQkJaW5pdFN0cmluZ0luZm8oJmNvbmZs aWN0X3htaW5zKTsKKwkJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X3htaW4pICYm CisJCQkJVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF94bWluLCB4aWQpKQor CQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmNvbmZsaWN0X3htaW5zLCAic2xvdCB4bWlu OiAlZCIsIHNsb3RfeG1pbik7CisJCQl9CisJCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQo c2xvdF9jYXRhbG9nX3htaW4pICYmCisJCQkJVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVh bHMoc2xvdF9jYXRhbG9nX3htaW4sIHhpZCkpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmY29u ZmxpY3RfeG1pbnMsICIlc3Nsb3QgY2F0YWxvZ194bWluOiAlZCIsCisJCQkJCQkJCSBjb25m bGljdF94bWlucy5sZW4gPiAwID8gIiwgIiA6ICIiLAorCQkJCQkJCQkgc2xvdF9jYXRhbG9n X3htaW4pOworCisJCQlpZiAoY29uZmxpY3RfeG1pbnMubGVuID4gMCkKKwkJCXsKKwkJCQlp bml0U3RyaW5nSW5mbygmY29uZmxpY3Rfc3RyKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZj b25mbGljdF9zdHIsICIlcyAlZCAoJXMpLiIsCisJCQkJCQkJCSBjb25mbGljdF9zZW50ZW5j ZSwgeGlkLCBjb25mbGljdF94bWlucy5kYXRhKTsKKwkJCQlmb3VuZF9jb25mbGljdCA9IHRy dWU7CisJCQkJY29uZmxpY3RfcmVhc29uID0gY29uZmxpY3Rfc3RyLmRhdGE7CisJCQl9CisJ CX0KKworCQlpZiAoZm91bmRfY29uZmxpY3QpCisJCXsKKwkJCU5hbWVEYXRhCXNsb3RuYW1l OworCisJCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKKwkJCXNsb3RuYW1lID0gcy0+ ZGF0YS5uYW1lOworCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisKKwkJCS8qIFJl cGxpY2F0aW9uU2xvdERyb3BDb25mbGljdGluZygpIHdpbGwgYWNxdWlyZSB0aGUgbG9jayBi ZWxvdyAqLworCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7 CisKKwkJCVJlcGxpY2F0aW9uU2xvdERyb3BDb25mbGljdGluZyhzKTsKKworCQkJZXJlcG9y dChMT0csCisJCQkJCShlcnJtc2coImRyb3BwZWQgY29uZmxpY3Rpbmcgc2xvdCAlcyIsIE5h bWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiJXMiLCBjb25mbGljdF9yZWFz b24pKSk7CisKKwkJCS8qIFdlIHJlbGVhc2VkIHRoZSBsb2NrIGFib3ZlOyBzbyByZS1zY2Fu IHRoZSBzbG90cy4gKi8KKwkJCWdvdG8gcmVzdGFydDsKKwkJfQorCX0KKworCUxXTG9ja1Jl bGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOworfQorCiAvKgogICogTWFyayBh bnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUgZ2l2ZW4gc2Vn bWVudAogICogYXMgaW52YWxpZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91dCB0byBi ZSByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCA0ZmM2 ZmZiOTE3Li5jZDA0NmRmNjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXku YwpAQCAtMzM3Miw2ICszMzcyLDEwIEBAIFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0 dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQcm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsCiAKIAkJ R0VUX1ZYSURfRlJPTV9QR1BST0MocHJvY3Z4aWQsICpwcm9jKTsKIAorCQkvKgorCQkgKiBO b3RlOiB2eGlkLmxvY2FsVHJhbnNhY3Rpb25JZCBjYW4gYmUgaW52YWxpZCwgd2hpY2ggbWVh bnMgdGhlCisJCSAqIHJlcXVlc3QgaXMgdG8gc2lnbmFsIHRoZSBwaWQgdGhhdCBpcyBub3Qg cnVubmluZyBhIHRyYW5zYWN0aW9uLgorCQkgKi8KIAkJaWYgKHByb2N2eGlkLmJhY2tlbmRJ ZCA9PSB2eGlkLmJhY2tlbmRJZCAmJgogCQkJcHJvY3Z4aWQubG9jYWxUcmFuc2FjdGlvbklk ID09IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKaW5kZXggYzZhOGQ0NjExZS4uNjM2NDI3NjFjNiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjY5LDYgKzY2OSw5IEBAIHByb2Nz aWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWdu YWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29u ZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAK KwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZs aWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9D Syk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCAxN2RlNWE2ZDBlLi44 MjYwNWNlOTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0yMyw2ICsy Myw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9z bG90LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAgLTQyNSw3ICs0MjYsOCBA QCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhWaXJ0dWFsWElEcyhWaXJ0dWFsVHJhbnNh Y3Rpb25JZCAqd2FpdGxpc3QsCiB9CiAKIHZvaWQKLVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwgUmVsRmlsZU5v ZGUgbm9kZSkKK1Jlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KFRyYW5zYWN0 aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCWJvb2wgb25DYXRhbG9nVGFibGUs IFJlbEZpbGVOb2RlIG5vZGUpCiB7CiAJVmlydHVhbFRyYW5zYWN0aW9uSWQgKmJhY2tlbmRz OwogCkBAIC00NTAsNiArNDUyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLCBSZWxGaWxlTm9kZQogCQkJ CQkJCQkJCSAgIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJ CQkJICAgV0FJVF9FVkVOVF9SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJ CQkgICB0cnVlKTsKKworCWlmIChvbkNhdGFsb2dUYWJsZSkKKwkJUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKG5vZGUuZGJOb2RlLCBsYXRlc3RSZW1vdmVkWGlk LCBOVUxMKTsKIH0KIAogLyoKQEAgLTQ1OCw3ICs0NjMsNyBAQCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsIFJl bEZpbGVOb2RlCiAgKi8KIHZvaWQKIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkRnVsbFhpZCwKLQkJ CQkJCQkJCQkgICBSZWxGaWxlTm9kZSBub2RlKQorCQkJCQkJCQkJCSAgIGJvb2wgb25DYXRh bG9nVGFibGUsIFJlbEZpbGVOb2RlIG5vZGUpCiB7CiAJLyoKIAkgKiBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhTbmFwc2hvdCBvcGVyYXRlcyBvbiAzMi1iaXQgVHJhbnNhY3Rpb25J ZHMsCkBAIC00NzYsNyArNDgxLDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRGdWxsWGkKIAkJ VHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCiAJCWxhdGVzdFJlbW92ZWRYaWQg PSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQobGF0ZXN0UmVtb3ZlZEZ1bGxYaWQpOwotCQlS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLCBu b2RlKTsKKwkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QobGF0ZXN0UmVt b3ZlZFhpZCwgb25DYXRhbG9nVGFibGUsIG5vZGUpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCmluZGV4IDJiMWI2ODEwOWYuLjQ4MDQ3MDBlMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK QEAgLTI0MzgsNiArMjQzOCw5IEBAIGVycmRldGFpbF9yZWNvdmVyeV9jb25mbGljdCh2b2lk KQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CiAJCQllcnJk ZXRhaWwoIlVzZXIgcXVlcnkgbWlnaHQgaGF2ZSBuZWVkZWQgdG8gc2VlIHJvdyB2ZXJzaW9u cyB0aGF0IG11c3QgYmUgcmVtb3ZlZC4iKTsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQllcnJkZXRhaWwoIlVzZXIgd2Fz IHVzaW5nIHRoZSBsb2dpY2FsIHNsb3QgdGhhdCBtdXN0IGJlIGRyb3BwZWQuIik7CisJCQli cmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExP Q0s6CiAJCQllcnJkZXRhaWwoIlVzZXIgdHJhbnNhY3Rpb24gY2F1c2VkIGJ1ZmZlciBkZWFk bG9jayB3aXRoIHJlY292ZXJ5LiIpOwogCQkJYnJlYWs7CkBAIC0zMDAwLDYgKzMwMDMsMjUg QEAgUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQcm9jU2lnbmFsUmVhc29uIHJlYXNvbikK IAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLOgogCQkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0U6CiAJCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6CisJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQg cmVxdWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZSBkcm9wcGVkLCB0aGUKKwkJCQkgKiByZXF1 aXJlbWVudCBpcyBmb3IgdGhlIHNpZ25hbCByZWNlaXZlciB0byByZWxlYXNlIHRoZSBzbG90 LAorCQkJCSAqIHNvIHRoYXQgaXQgY291bGQgYmUgZHJvcHBlZCBieSB0aGUgc2lnbmFsIHNl bmRlci4gU28gZm9yCisJCQkJICogbm9ybWFsIGJhY2tlbmRzLCB0aGUgdHJhbnNhY3Rpb24g c2hvdWxkIGJlIGFib3J0ZWQsIGp1c3QKKwkJCQkgKiBsaWtlIGZvciBvdGhlciByZWNvdmVy eSBjb25mbGljdHMuIEJ1dCBpZiBpdCdzIHdhbHNlbmRlciBvbgorCQkJCSAqIHN0YW5kYnks IHRoZW4gaXQgaGFzIHRvIGJlIGtpbGxlZCBzbyBhcyB0byByZWxlYXNlIGFuCisJCQkJICog YWNxdWlyZWQgbG9naWNhbCBzbG90LgorCQkJCSAqLworCQkJCWlmIChhbV9jYXNjYWRpbmdf d2Fsc2VuZGVyICYmCisJCQkJCXJlYXNvbiA9PSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9UICYmCisJCQkJCU15UmVwbGljYXRpb25TbG90ICYmIFNsb3RJc0xvZ2lj YWwoTXlSZXBsaWNhdGlvblNsb3QpKQorCQkJCXsKKwkJCQkJUmVjb3ZlcnlDb25mbGljdFBl bmRpbmcgPSB0cnVlOworCQkJCQlRdWVyeUNhbmNlbFBlbmRpbmcgPSB0cnVlOworCQkJCQlJ bnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQogCiAJCQkJLyoK IAkJCQkgKiBJZiB3ZSBhcmVuJ3QgaW4gYSB0cmFuc2FjdGlvbiBhbnkgbG9uZ2VyIHRoZW4g aWdub3JlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCA1MTAyMjI3 YTYwLi4xMmUxZTE3YmZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdz dGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpA QCAtMTQ5NCw2ICsxNDk0LDIxIEBAIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90 KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7CiB9CiAKK0Rh dHVtCitwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdChQR19GVU5DVElPTl9B UkdTKQoreworCU9pZAkJCWRiaWQgPSBQR19HRVRBUkdfT0lEKDApOworCWludDY0CQlyZXN1 bHQ7CisJUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5OworCisJaWYgKChkYmVudHJ5ID0g cGdzdGF0X2ZldGNoX3N0YXRfZGJlbnRyeShkYmlkKSkgPT0gTlVMTCkKKwkJcmVzdWx0ID0g MDsKKwllbHNlCisJCXJlc3VsdCA9IChpbnQ2NCkgKGRiZW50cnktPm5fY29uZmxpY3RfbG9n aWNhbHNsb3QpOworCisJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7Cit9CisKIERhdHVtCiBw Z19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oUEdfRlVOQ1RJT05fQVJHUykKIHsK QEAgLTE1MzcsNiArMTU1Miw3IEBAIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2FsbChQR19G VU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSAoaW50NjQpIChkYmVudHJ5LT5uX2NvbmZsaWN0 X3RhYmxlc3BhY2UgKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X2xvY2sgKwogCQkJ CQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90ICsKKwkJCQkJCSAgZGJlbnRyeS0+ bl9jb25mbGljdF9sb2dpY2Fsc2xvdCArCiAJCQkJCQkgIGRiZW50cnktPm5fY29uZmxpY3Rf YnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9zdGFydHVwX2RlYWRs b2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNDY0ZmE4ZDYxNC4uYjVl OTM2YmJmOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NDA5LDYgKzU0MDks MTEgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3Qn LCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlw ZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0 YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JyB9LAoreyBvaWQgPT4gJzQ1NDMnLAorICBk ZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGluIGRhdGFiYXNlIGNh dXNlZCBieSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnLAorICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcsIHByb3ZvbGF0aWxlID0+ICdzJywK KyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlw ZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9n aWNhbHNsb3QnIH0sCiB7IG9pZCA9PiAnMzA2OCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNz OiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IHNoYXJlZCBidWZm ZXIgcGluJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVy cGluJywgcHJvdm9sYXRpbGUgPT4gJ3MnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdz dGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCAyYzgyMzEzNTUwLi42NjkxNGRi YmQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVk ZS9wZ3N0YXQuaApAQCAtNzIwLDYgKzcyMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9T dGF0REJFbnRyeQogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfdGFibGVzcGFjZTsKIAlQ Z1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2xvY2s7CiAJUGdTdGF0X0NvdW50ZXIgbl9jb25m bGljdF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2xvZ2ljYWxzbG90 OwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfYnVmZmVycGluOwogCVBnU3RhdF9Db3Vu dGVyIG5fY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsKIAlQZ1N0YXRfQ291bnRlciBuX3Rl bXBfZmlsZXM7CkBAIC0xNjAwLDYgKzE2MDEsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfdHdv cGhhc2VfcG9zdGFib3J0KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJ CQkJCSAgdm9pZCAqcmVjZGF0YSwgdWludDMyIGxlbik7CiAKIGV4dGVybiB2b2lkIHBnc3Rh dF9zZW5kX2FyY2hpdmVyKGNvbnN0IGNoYXIgKnhsb2csIGJvb2wgZmFpbGVkKTsKK2V4dGVy biB2b2lkIHBnc3RhdF9zZW5kX2Ryb3Bsb2dpY2Fsc2xvdChPaWQgZGJPaWQpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X3NlbmRfYmd3cml0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRf cmVwb3J0X3dhbCh2b2lkKTsKIGV4dGVybiBib29sIHBnc3RhdF9zZW5kX3dhbChib29sIGZv cmNlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCAxYWQ1ZTZjNTBkLi5iNmU1ZmZm Zjc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0yMzIsNCArMjMyLDYgQEAgZXh0 ZXJuIHZvaWQgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHModm9pZCk7CiAKIGV4dGVybiB2 b2lkIENoZWNrU2xvdFJlcXVpcmVtZW50cyh2b2lkKTsKIAorZXh0ZXJuIHZvaWQgUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoTG9naWNhbFNsb3RzKE9pZCBkYm9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIGNoYXIgKnJlYXNvbik7CisKICNlbmRpZgkJCQkJCQkvKiBTTE9UX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggNGFlN2RjMzNiOC4uMjcwMzViMDc1 YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTQwLDYgKzQwLDcgQEAgdHlw ZWRlZiBlbnVtCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFLAogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSywKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1NOQVBTSE9ULAorCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qs CiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4sCiAJUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLLAogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CmluZGV4IDM4ZmQ4NWE0MzEuLjNiYTE4ODIyMTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc3RhbmRieS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o CkBAIC0zMCw5ICszMCw5IEBAIGV4dGVybiB2b2lkIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9u RW52aXJvbm1lbnQodm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNh Y3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAot CQkJCQkJCQkJCQkJUmVsRmlsZU5vZGUgbm9kZSk7CisJCQkJCQkJCQkJCQlib29sIG9uQ2F0 YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRl c3RSZW1vdmVkRnVsbFhpZCwKLQkJCQkJCQkJCQkJCQkgICBSZWxGaWxlTm9kZSBub2RlKTsK KwkJCQkJCQkJCQkJCQkgICBib29sIG9uQ2F0YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2Rl KTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFRhYmxlc3BhY2Uo T2lkIHRzaWQpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoRGF0 YWJhc2UoT2lkIGRiaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IDliMTJjYzEyMmEuLmIwZTE3ZDRlMWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cnVsZXMub3V0CkBAIC0xODY5LDYgKzE4NjksNyBAQCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZs aWN0c3wgU0VMRUNUIGQub2lkIEFTIGRhdGlkLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X3RhYmxlc3BhY2UoZC5vaWQpIEFTIGNvbmZsX3RhYmxlc3BhY2UsCiAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfbG9jayhkLm9pZCkgQVMgY29uZmxfbG9jaywKICAgICBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdChkLm9pZCkgQVMgY29uZmxfc25hcHNob3Qs CisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoZC5vaWQpIEFTIGNv bmZsX2xvZ2ljYWxzbG90LAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBp bihkLm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X3N0YXJ0dXBfZGVhZGxvY2soZC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCiAgICBGUk9N IHBnX2RhdGFiYXNlIGQ7Ci0tIAoyLjE4LjQKCg== --------------F8760880D041201312AEC593 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v13-0002-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v13-0002-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSA2Y2ExY2FiNDA2NGI4NTllYzcyNWM5M2Y1MmU0Zjg2N2YyMmM2YWRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxNjoxMjo0NyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEzIDIvNV0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCgpXaGVuIGEgV0FMIHJlcGxheSBv biBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0dXBsZSBpcwp0byBi ZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGxvZ2ljYWwgc2xv dCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90J3MgY2F0YWxvZ194 bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUg Y29uZmxpY3QuICBXaGlsZSBzdWJzZXF1ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFs IGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlzIGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCm9uQ2F0 YWxvZ1RhYmxlIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRoYXQgaXMgdHJ1ZSBmb3IgY2F0YWxv ZyB0YWJsZXMsCnNvIGFzIHRvIGFycmFuZ2UgZm9yIGNvbmZsaWN0IGhhbmRsaW5nLgoKQW5k cmVzIEZyZXVuZC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgICAgICB8ICA0ICsr LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICAgICB8ICA0ICsrKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYyAgICB8ICAyICsrCiBzcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgfCAxMCArKysrKysrLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAgICB8IDEyICsrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyAgIHwgIDggKysrKysrKysKIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICB8IDE2ICsrKysrKysrKysrKysr KysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCAgICAgICB8ICA2ICsrKy0t LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAgIHwgIDMgKystCiBz cmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAgfCAgMSArCiBzcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgfCAgOCArKysrKystLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHhsb2cuaCAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRl L2FjY2Vzcy9zcGd4bG9nLmggICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxz L2xzeXNjYWNoZS5oICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5o ICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKysrKwogMTkgZmlsZXMgY2hhbmdlZCwgNzYg aW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAgMTUuMyUgc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvCiAgMjAuOSUgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvCiAgMTIuNCUgc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS8KICAgNy42JSBzcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0LwogICA2LjklIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlLwogIDIwLjAlIHNyYy9pbmNs dWRlL2FjY2Vzcy8KICAxNC4yJSBzcmMvaW5jbHVkZS91dGlscy8KCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0LmMKaW5kZXggMDY4M2Y0MmMyNS4uYjZlNjM0MGMzYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3QuYwpAQCAtMzQ4LDcgKzM0OCw3IEBAIGdpc3RwbGFjZXRvcGFnZShSZWxhdGlv biByZWwsIFNpemUgZnJlZXNwYWNlLCBHSVNUU1RBVEUgKmdpc3RzdGF0ZSwKIAkJZm9yICg7 IHB0cjsgcHRyID0gcHRyLT5uZXh0KQogCQl7CiAJCQkvKiBBbGxvY2F0ZSBuZXcgcGFnZSAq LwotCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKHJlbCk7CisJCQlwdHItPmJ1ZmZl ciA9IGdpc3ROZXdCdWZmZXIoaGVhcFJlbCwgcmVsKTsKIAkJCUdJU1RJbml0QnVmZmVyKHB0 ci0+YnVmZmVyLCAoaXNfbGVhZikgPyBGX0xFQUYgOiAwKTsKIAkJCXB0ci0+cGFnZSA9IEJ1 ZmZlckdldFBhZ2UocHRyLT5idWZmZXIpOwogCQkJcHRyLT5ibG9jay5ibGtubyA9IEJ1ZmZl ckdldEJsb2NrTnVtYmVyKHB0ci0+YnVmZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lz dGJ1aWxkLmMKaW5kZXggMTA1NGY2ZjFmMi4uOGIwNjRmMzJhYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKQEAgLTI5MCw3ICsyOTAsNyBAQCBnaXN0YnVpbGQoUmVs YXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlQ YWdlCQlwYWdlOwogCiAJCS8qIGluaXRpYWxpemUgdGhlIHJvb3QgcGFnZSAqLwotCQlidWZm ZXIgPSBnaXN0TmV3QnVmZmVyKGluZGV4KTsKKwkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlciho ZWFwLCBpbmRleCk7CiAJCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpID09 IEdJU1RfUk9PVF9CTEtOTyk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IDFmZjFiZjgxNmYuLjFjODkw MjhhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtODIzLDcgKzgy Myw3IEBAIGdpc3RjaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKQogICogQ2Fs bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIHBhZ2UgYnkgY2FsbGlu ZyBHSVNUSW5pdEJ1ZmZlcgogICovCiBCdWZmZXIKLWdpc3ROZXdCdWZmZXIoUmVsYXRpb24g cikKK2dpc3ROZXdCdWZmZXIoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcikKIHsKIAlC dWZmZXIJCWJ1ZmZlcjsKIAlib29sCQluZWVkTG9jazsKQEAgLTg2Nyw3ICs4NjcsNyBAQCBn aXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCiAJCQkJICogcGFnZSdzIGRlbGV0ZVhpZC4KIAkJ CQkgKi8KIAkJCQlpZiAoWExvZ1N0YW5kYnlJbmZvQWN0aXZlKCkgJiYgUmVsYXRpb25OZWVk c1dBTChyKSkKLQkJCQkJZ2lzdFhMb2dQYWdlUmV1c2UociwgYmxrbm8sIEdpc3RQYWdlR2V0 RGVsZXRlWGlkKHBhZ2UpKTsKKwkJCQkJZ2lzdFhMb2dQYWdlUmV1c2UoaGVhcFJlbCwgciwg Ymxrbm8sIEdpc3RQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsKIAogCQkJCXJldHVybiBidWZm ZXI7CiAJCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwppbmRleCAxYzgwZWFl MDQ0Li45N2Q4MTRiOTI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAg LTU5Niw3ICs1OTYsOCBAQCBnaXN0WExvZ0Fzc2lnbkxTTih2b2lkKQogICogV3JpdGUgWExP RyByZWNvcmQgYWJvdXQgcmV1c2Ugb2YgYSBkZWxldGVkIHBhZ2UuCiAgKi8KIHZvaWQKLWdp c3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxU cmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQpCitnaXN0WExvZ1BhZ2VSZXVzZShSZWxh dGlvbiBoZWFwUmVsLCBSZWxhdGlvbiByZWwsCisJCQkJICBCbG9ja051bWJlciBibGtubywg RnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCkKIHsKIAlnaXN0eGxvZ1BhZ2VS ZXVzZSB4bHJlY19yZXVzZTsKIApAQCAtNjA3LDYgKzYwOCw3IEBAIGdpc3RYTG9nUGFnZVJl dXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92CiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uu b25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n KGhlYXBSZWwpOwogCXhscmVjX3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxyZWNf cmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVsbFhp ZCA9IGxhdGVzdFJlbW92ZWRYaWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0 LmMKaW5kZXggZDI1NGEwMGI2YS4uNTcxMTk1MmZjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o YXNoL2hhc2hpbnNlcnQuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNz L2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaGFzaF94bG9nLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9idWZfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKQEAg LTM5OCw2ICszOTksNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBocmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hf dmFjdXVtX29uZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhs cmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhocmVsKTsKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVk WGlkOwogCQkJeGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKaW5kZXggN2NiODdmNGEzYi4uYWMwMDRmMTI1OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTc5NTQsMTIgKzc5NTQsMTMgQEAgYm90dG9tdXBfc29y dF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICogc2VlIGNvbW1l bnRzIGZvciB2YWN1dW1fbG9nX2NsZWFudXBfaW5mbygpLgogICovCiBYTG9nUmVjUHRyCi1s b2dfaGVhcF9jbGVhbnVwX2luZm8oUmVsRmlsZU5vZGUgcm5vZGUsIFRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3ZlZFhpZCkKK2xvZ19oZWFwX2NsZWFudXBfaW5mbyhSZWxhdGlvbiByZWws IFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCkKIHsKIAl4bF9oZWFwX2NsZWFudXBf aW5mbyB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAotCXhscmVjLm5vZGUgPSBybm9k ZTsKKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcocmVsKTsKKwl4bHJlYy5ub2RlID0gcmVsLT5yZF9ub2RlOwogCXhscmVj LmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwogCiAJWExvZ0JlZ2luSW5z ZXJ0KCk7CkBAIC03OTk1LDYgKzc5OTYsNyBAQCBsb2dfaGVhcF9jbGVhbihSZWxhdGlvbiBy ZWxuLCBCdWZmZXIgYnVmZmVyLAogCS8qIENhbGxlciBzaG91bGQgbm90IGNhbGwgbWUgb24g YSBub24tV0FMLWxvZ2dlZCByZWxhdGlvbiAqLwogCUFzc2VydChSZWxhdGlvbk5lZWRzV0FM KHJlbG4pKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5sYXRlc3RSZW1vdmVkWGlkID0g bGF0ZXN0UmVtb3ZlZFhpZDsKIAl4bHJlYy5ucmVkaXJlY3RlZCA9IG5yZWRpcmVjdGVkOwog CXhscmVjLm5kZWFkID0gbmRlYWQ7CkBAIC04MDQ1LDYgKzgwNDcsNyBAQCBsb2dfaGVhcF9m cmVlemUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRv ZmZfeGlkLAogCS8qIG5vciB3aGVuIHRoZXJlIGFyZSBubyB0dXBsZXMgdG8gZnJlZXplICov CiAJQXNzZXJ0KG50dXBsZXMgPiAwKTsKIAorCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxuKTsKIAl4bHJlYy5jdXRv ZmZfeGlkID0gY3V0b2ZmX3hpZDsKIAl4bHJlYy5udHVwbGVzID0gbnR1cGxlczsKIApAQCAt ODA3NSw3ICs4MDc4LDcgQEAgbG9nX2hlYXBfZnJlZXplKFJlbGF0aW9uIHJlbG4sIEJ1ZmZl ciBidWZmZXIsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKICAqIGhlYXBfYnVmZmVyLCBp ZiBuZWNlc3NhcnkuCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmls ZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xv Z19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZl ciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwgdWludDggdm1m bGFncykKIHsKIAl4bF9oZWFwX3Zpc2libGUgeGxyZWM7CkBAIC04MDg1LDYgKzgwODgsNyBA QCBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZm ZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZm ZXIpKTsKIAlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKIAorCXhscmVjLm9u Q2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhy ZWwpOwogCXhscmVjLmN1dG9mZl94aWQgPSBjdXRvZmZfeGlkOwogCXhscmVjLmZsYWdzID0g dm1mbGFnczsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwppbmRleCBlZjkxODZiYTdjLi5mNDhhNGU0NjAzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC03NzcsNyArNzc3LDcgQEAgdmFjdXVtX2xv Z19jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBMVlJlbFN0YXRzICp2YWNyZWxzdGF0cykK IAkgKiBObyBuZWVkIHRvIHdyaXRlIHRoZSByZWNvcmQgYXQgYWxsIHVubGVzcyBpdCBjb250 YWlucyBhIHZhbGlkIHZhbHVlCiAJICovCiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHZh Y3JlbHN0YXRzLT5sYXRlc3RSZW1vdmVkWGlkKSkKLQkJKHZvaWQpIGxvZ19oZWFwX2NsZWFu dXBfaW5mbyhyZWwtPnJkX25vZGUsIHZhY3JlbHN0YXRzLT5sYXRlc3RSZW1vdmVkWGlkKTsK KwkJKHZvaWQpIGxvZ19oZWFwX2NsZWFudXBfaW5mbyhyZWwsIHZhY3JlbHN0YXRzLT5sYXRl c3RSZW1vdmVkWGlkKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2li aWxpdHltYXAuYwppbmRleCBlMTk4ZGY2NWQ4Li42ZTg5YTA4YzUyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0yODIsNyArMjgyLDcgQEAgdmlz aWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZm ZXIgaGVhcEJ1ZiwKIAkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpCiAJCQl7 CiAJCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNp YmxlKHJlbC0+cmRfbm9kZSwgaGVhcEJ1Ziwgdm1CdWYsCisJCQkJcmVjcHRyID0gbG9nX2hl YXBfdmlzaWJsZShyZWwsIGhlYXBCdWYsIHZtQnVmLAogCQkJCQkJCQkJCSAgY3V0b2ZmX3hp ZCwgZmxhZ3MpOwogCiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMK aW5kZXggNTMwZDkyNGJmZi4uZTVkNzI1ZTRlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRwYWdlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tZW1kZWJ1 Zy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogCiBzdGF0aWMgQlRNZXRh UGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVyIG1ldGFidWYpOwog c3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sCkBAIC00Myw3ICs0NCw4IEBAIHN0YXRpYyB2b2lkIF9idF9sb2dfcmV1c2Vf cGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLAogc3RhdGljIHZvaWQgX2J0 X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCQkJCQkJCVRy YW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKIAkJCQkJCQkJT2Zmc2V0TnVtYmVyICpk ZWxldGFibGUsIGludCBuZGVsZXRhYmxlLAotCQkJCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVw ZGF0YWJsZSwgaW50IG51cGRhdGFibGUpOworCQkJCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVw ZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJCQkJCVJlbGF0aW9uIGhlYXBSZWwpOwog c3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUoQlRWYWN1dW1Qb3N0aW5nICp1cGRh dGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICp1cGRhdGVk b2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRidWZsZW4sIGJvb2wgbmVlZHN3YWwp OwpAQCAtODM2LDYgKzgzOCw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogCSAqLwog CiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0YWxvZ1RhYmxlID0gZ2V0 X3JlbF9sb2dpY2FsX2NhdGFsb2cocmVsLT5yZF9pbmRleC0+aW5kcmVsaWQpOwogCXhscmVj X3JldXNlLm5vZGUgPSByZWwtPnJkX25vZGU7CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBibGtu bzsKIAl4bHJlY19yZXVzZS5sYXRlc3RSZW1vdmVkRnVsbFhpZCA9IHNhZmV4aWQ7CkBAIC0x Mjk2LDcgKzEyOTksOCBAQCBfYnRfZGVsaXRlbXNfdmFjdXVtKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKIHN0YXRpYyB2b2lkCiBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZiwgVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAogCQkJCQlP ZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCUJUVmFjdXVt UG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSkKKwkJCQkJQlRWYWN1dW1Qb3N0 aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAorCQkJCQlSZWxhdGlvbiBoZWFwUmVs KQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJQlRQYWdlT3BhcXVl IG9wYXF1ZTsKQEAgLTEzNTgsNiArMTM2Miw4IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQs CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJlZV9kZWxldGUgeGxyZWNfZGVsZXRl OwogCisJCXhscmVjX2RlbGV0ZS5vbkNhdGFsb2dUYWJsZSA9CisJCQlSZWxhdGlvbklzQWNj ZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXBSZWwpOwogCQl4bHJlY19kZWxldGUubGF0 ZXN0UmVtb3ZlZFhpZCA9IGxhdGVzdFJlbW92ZWRYaWQ7CiAJCXhscmVjX2RlbGV0ZS5uZGVs ZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9IG51cGRhdGFi bGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKIAogCS8qIFBoeXNp Y2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNpbmcgZGVsZXRhYmxlIChvciB1cGRh dGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShyZWwsIGJ1ZiwgbGF0ZXN0UmVtb3Zl ZFhpZCwgZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJCQkJdXBkYXRhYmxlLCBudXBkYXRh YmxlKTsKKwkJCQkJCXVwZGF0YWJsZSwgbnVwZGF0YWJsZSwgaGVhcFJlbCk7CiAKIAkvKiBi ZSB0aWR5ICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKyspCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCBhOWZmY2E1MTgzLi5jZDY1 Njk5NTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAgLTI3 LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2luZGV4ZnNtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogCiAKIC8qIEVudHJ5IGluIHBlbmRpbmctbGlzdCBvZiBU SURzIHdlIG5lZWQgdG8gcmV2aXNpdCAqLwpAQCAtNTAzLDYgKzUwNCwxMyBAQCB2YWN1dW1S ZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQog CXNwZ3hsb2dWYWN1dW1SZWRpcmVjdCB4bHJlYzsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVz dDsKIAorCS8qCisJICogVGhlcmUgaXMgbm8gY2hhbmNlIG9mIGVuZGxlc3MgcmVjdXJzaW9u IGV2ZW4gd2hlbiB3ZSBhcmUgZG9pbmcgY2F0YWxvZworCSAqIGFjY2VzZXMgaGVyZTsgYmVj YXVzZSwgc3BnaXN0IGlzIG5ldmVyIHVzZWQgZm9yIGNhdGFsb2dzLiBDaGVjaworCSAqIGNv bW1lbnRzIGluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoKS4KKwkg Ki8KKwl4bHJlYy5vbkNhdGFsb2dUYWJsZSA9IGdldF9yZWxfbG9naWNhbF9jYXRhbG9nKGlu ZGV4LT5yZF9pbmRleC0+aW5kcmVsaWQpOworCiAJeGxyZWMublRvUGxhY2Vob2xkZXIgPSAw OwogCXhscmVjLm5ld2VzdFJlZGlyZWN0WGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggNmJiYTVmOGVjNC4uOTBm YTVkZmM3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTE4LDcg KzE4LDkgQEAKICNpbmNsdWRlICJhY2Nlc3MvaGFzaC5oIgogI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCisjaW5jbHVkZSAi YWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiYm9vdHN0cmFwL2Jvb3RzdHJhcC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf YW1vcC5oIgpAQCAtMjA2Miw2ICsyMDY0LDIwIEBAIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lk IHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKK2Jvb2wKK2dldF9yZWxfbG9naWNhbF9j YXRhbG9nKE9pZCByZWxpZCkKK3sKKwlib29sCXJlczsKKwlSZWxhdGlvbiByZWw7CisKKwkv KiBhc3N1bWUgcHJldmlvdXNseSBsb2NrZWQgKi8KKwlyZWwgPSB0YWJsZV9vcGVuKHJlbGlk LCBOb0xvY2spOworCXJlcyA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcocmVsKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlyZXR1cm4gcmVzOwor fQorCiAKIC8qCQkJCS0tLS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hFIC0tLS0tLS0tLS0JCQkJ CQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmluZGV4IDU1M2QzNjRlMmQu LmEwZjQwMTU1NTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZh dGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw4 ICs0NDAsOCBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVy IGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJl bnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAot ZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywKLQkJCQkJCQkgIEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQp OworZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcFJlbCwgUmVs YXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklk IGxhdGVzdFJlbW92ZWRYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0 ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwgaW50 IG50b2RlbGV0ZSwKQEAgLTQ4NSw3ICs0ODUsNyBAQCBleHRlcm4gYm9vbCBnaXN0cHJvcGVy dHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2Uo SW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2Uo UGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRv ZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIo UmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gaGVh cFJlbCwgUmVsYXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFnZVJlY3ljbGFibGUoUGFn ZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhU dXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51bWJlciBvZmYpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2lzdHhsb2cuaAppbmRleCBmZDUxNDRmMjU4Li43Mzk5OWRkYzcwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2lzdHhsb2cuaApAQCAtNDksOSArNDksOSBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0 eGxvZ1BhZ2VVcGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dEZWxldGUKIHsK Kwlib29sCQlvbkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRY aWQ7CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2YgZGVsZXRlZCBvZmZzZXRz ICovCi0KIAkvKgogCSAqIEluIHBheWxvYWQgb2YgYmxrIDAgOiB0b2RlbGV0ZSBPZmZzZXRO dW1iZXJzCiAJICovCkBAIC05Nyw2ICs5Nyw3IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9n UGFnZURlbGV0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ1BhZ2VSZXVzZQogewor CWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7CiAJQmxvY2tOdW1i ZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxYaWQ7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggNDM1M2EzMmRiYi4uOTRjMzI5MmMxZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3IEBAIHR5cGVkZWYgc3Ry dWN0IHhsX2hhc2hfaW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9o YXNoX3ZhY3V1bV9vbmVfcGFnZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5z YWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAlpbnQJCQludHVwbGVzOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE3OGQ0OTcxMGEuLjZjNGMyNmMyZmUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yMzksNiArMjM5LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9jbGVh bgogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVt b3ZlZFhpZDsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQxNgkJbmRlYWQ7CkBAIC0y NTQsNiArMjU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9jbGVhbgogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX2NsZWFudXBfaW5mbwogeworCWJvb2wJCW9uQ2F0YWxvZ1Rh YmxlOwogCVJlbEZpbGVOb2RlIG5vZGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk WGlkOwogfSB4bF9oZWFwX2NsZWFudXBfaW5mbzsKQEAgLTMzNCw2ICszMzYsNyBAQCB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX2ZyZWV6ZV90dXBsZQogICovCiB0eXBlZGVmIHN0cnVjdCB4 bF9oZWFwX2ZyZWV6ZV9wYWdlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFibGU7CiAJVHJhbnNh Y3Rpb25JZCBjdXRvZmZfeGlkOwogCXVpbnQxNgkJbnR1cGxlczsKIH0geGxfaGVhcF9mcmVl emVfcGFnZTsKQEAgLTM0OCw2ICszNTEsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2Zy ZWV6ZV9wYWdlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdmlzaWJsZQogeworCWJv b2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZDsKIAl1aW50 OAkJZmxhZ3M7CiB9IHhsX2hlYXBfdmlzaWJsZTsKQEAgLTM5Nyw3ICs0MDEsNyBAQCBleHRl cm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7 CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFudXBfaW5mbyhSZWxG aWxlTm9kZSBybm9kZSwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFudXBfaW5m byhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk WGlkKTsKIGV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX2NsZWFuKFJlbGF0aW9uIHJlbG4s IEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIgKnJlZGlyZWN0ZWQsIGlu dCBucmVkaXJlY3RlZCwKQEAgLTQxNiw3ICs0MjAsNyBAQCBleHRlcm4gYm9vbCBoZWFwX3By ZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJCSAg Ym9vbCAqdG90YWxseV9mcm96ZW4pOwogZXh0ZXJuIHZvaWQgaGVhcF9leGVjdXRlX2ZyZWV6 ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgIHhsX2hlYXBfZnJl ZXplX3R1cGxlICp4bHJlY190cCk7Ci1leHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNp YmxlKFJlbEZpbGVOb2RlIHJub2RlLCBCdWZmZXIgaGVhcF9idWZmZXIsCitleHRlcm4gWExv Z1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVm ZmVyLAogCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVmZmVyLCBUcmFuc2FjdGlvbklkIGN1dG9m Zl94aWQsIHVpbnQ4IGZsYWdzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEhFQVBBTV9YTE9HX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCmluZGV4IDBmNzczMTg1NmIuLmIxNWFhNDdmMWIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtMTg1LDYgKzE4NSw3IEBAIHR5cGVkZWYgc3RydWN0 IHhsX2J0cmVlX2RlZHVwCiAgKi8KIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX3JldXNlX3Bh Z2UKIHsKKwlib29sICAgICAgICBvbkNhdGFsb2dUYWJsZTsKIAlSZWxGaWxlTm9kZSBub2Rl OwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92 ZWRGdWxsWGlkOwpAQCAtMjMyLDYgKzIzMyw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVl X3ZhY3V1bQogCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIHsKKwlib29sCQlv bkNhdGFsb2dUYWJsZTsKIAlUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQ7CiAJdWlu dDE2CQluZGVsZXRlZDsKIAl1aW50MTYJCW51cGRhdGVkOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgK aW5kZXggNjk0MDViNTc1MC4uMDZiOTFmNGQwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL3NwZ3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCkBA IC0yMzcsNiArMjM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJvb3QKIAog dHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0CiB7CisJYm9vbAkJb25DYXRh bG9nVGFibGU7CiAJdWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyogbnVtYmVyIG9mIHJlZGly ZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51bWJlciBmaXJzdFBsYWNl aG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byByZW1vdmUgKi8KIAlUcmFu c2FjdGlvbklkIG5ld2VzdFJlZGlyZWN0WGlkOwkvKiBuZXdlc3QgWElEIG9mIHJlbW92ZWQg cmVkaXJlY3RzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDc3ODcxYWFlZmMuLmUy YTVlZmVkMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xMzksNiArMTM5LDcgQEAg ZXh0ZXJuIGNoYXIgZ2V0X3JlbF9yZWxraW5kKE9pZCByZWxpZCk7CiBleHRlcm4gYm9vbCBn ZXRfcmVsX3JlbGlzcGFydGl0aW9uKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF9yZWxf dGFibGVzcGFjZShPaWQgcmVsaWQpOwogZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5j ZShPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgZ2V0X3JlbF9sb2dpY2FsX2NhdGFsb2coT2lk IHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwg T2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3Jt X3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4ZWVl MWMxYTgzLi4xZGY4OWI1NTlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTYsNiArMTYsNyBAQAogCiAj aW5jbHVkZSAiYWNjZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgor I2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xh c3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oIgpAQCAtMzQ3LDYgKzM0OCw5IEBAIHR5cGVkZWYgc3RydWN0 IFN0ZFJkT3B0aW9ucwogICogUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZQogICoJCVJl dHVybnMgd2hldGhlciB0aGUgcmVsYXRpb24gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYSBjYXRh bG9nIHRhYmxlCiAgKgkJZnJvbSB0aGUgcG92IG9mIGxvZ2ljYWwgZGVjb2RpbmcuICBOb3Rl IG11bHRpcGxlIGV2YWwgb2YgYXJndW1lbnQhCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3Vs ZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vz czsgb3RoZXJ3aXNlIGl0IG1heSBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24uIENoZWNrIHRo ZSBjb21tZW50cworICoJCWluIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcoKSBmb3IgZGV0YWlscy4KICAqLwogI2RlZmluZSBSZWxhdGlvbklzVXNlZEFzQ2F0YWxv Z1RhYmxlKHJlbGF0aW9uKQlcCiAJKChyZWxhdGlvbiktPnJkX29wdGlvbnMgJiYgXApAQCAt NjQ3LDYgKzY1MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFRhYmxlUmRPcHRp b25zCiAgKiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nCiAgKgkJVHJ1 ZSBpZiB3ZSBuZWVkIHRvIGxvZyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gaGF2ZSBhY2Nlc3Mg dmlhCiAgKgkJZGVjb2Rpbmcgc25hcHNob3QuCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3Vs ZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vz cy4gT3RoZXJ3aXNlLCBlLmcuIGxvZ2dpbmcgYSBXQUwgZW50cnkgZm9yIGNhdGFsb2cgcmVs YXRpb24gbWF5CisgKgkJaW52b2tlIHRoaXMgZnVuY3Rpb24sIHdoaWNoIHdpbGwgaW4gdHVy biBkbyBjYXRhbG9nIGFjY2Vzcywgd2hpY2ggbWF5CisgKgkJaW4gdHVybiBjYXVzZSBhbm90 aGVyIHNpbWlsYXIgV0FMIGVudHJ5IHRvIGJlIGxvZ2dlZCwgbGVhZGluZyB0bworICoJCWlu ZmluaXRlIHJlY3Vyc2lvbi4KICAqLwogI2RlZmluZSBSZWxhdGlvbklzQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nKHJlbGF0aW9uKSBcCiAJKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgp ICYmIFwKLS0gCjIuMTguNAoK --------------F8760880D041201312AEC593 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v13-0001-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v13-0001-Allow-logical-decoding-on-standby.patch" RnJvbSA2NmU0NzY0ZWEwMmY2ZTkxMjlkMmQ5ZmE5MTk0NGMzYjdmY2RhMTU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxNjoxMTozOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjEzIDEvNV0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LiBDb25mbGljdGluZyBzbG90cwp3b3Vs ZCBiZSBoYW5kbGVkIGluIG5leHQgY29tbWl0cy4KCkFuZHJlcyBGcmV1bmQgYW5kIEFtaXQg S2hhbmRla2FyLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAg ICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jICAgICAgICAgICAgfCA1OCArKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAxMCArKy0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hh bmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCiAgIDUuNiUgc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDUuNyUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC8KICA0Ny43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMKaW5kZXggNmY4ODEwZTE0OS4uNmEyMWNiYTM2MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNTA4MCw2ICs1MDgwLDE3IEBAIExvY2Fs UHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiAJUmVhZENvbnRyb2xGaWxlKCk7CiB9 CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9sZXZlbCBmcm9tIHRoZSBjb250cm9sIGZpbGUuIEZv ciBhIHN0YW5kYnksIHRoaXMgdmFsdWUgc2hvdWxkIGJlCisgKiBjb25zaWRlcmVkIGFzIGl0 cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNhdXNlIGl0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSB3 aGF0CisgKiB3YXMgb3JpZ2luYWxseSBjb25maWd1cmVkIG9uIHN0YW5kYnkuCisgKi8KK1dh bExldmVsCitHZXRBY3RpdmVXYWxMZXZlbCh2b2lkKQoreworCXJldHVybiBDb250cm9sRmls ZS0+d2FsX2xldmVsOworfQorCiAvKgogICogSW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1l bW9yeSBmb3IgWExPRwogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCA1ZjU5NjEzNWIxLi4yNDY0YzFlZjE3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTIxNCwxMSArMjE0LDMxIEBAIERl Y29kZVhMb2dPcChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZm ZXIgKmJ1ZikKIAkJCSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJy ZWFrOworCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1l dGVyX2NoYW5nZSAqeGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dS ZWNHZXREYXRhKGJ1Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBv biBwcmltYXJ5IGlzIHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJ CSAqIHdhbnQgdG8gcHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcg dXNlZC4KKwkJCSAqIEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgZHJv cHBlZCB3aGVuIHRoaXMgV0FMCisJCQkgKiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0 aGVyLCBzbG90IGNyZWF0aW9uIGZhaWxzIHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMg bm90IHN1ZmZpY2llbnQ7IGJ1dCBhbGwgdGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkg KiBzeW5jaHJvbml6ZWQsIHNvIGEgbG9naWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0 aGUgd2FsX2xldmVsCisJCQkgKiBpcyBiZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJh IGNoZWNrLgorCQkJICovCisJCQlpZiAoeGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9M T0dJQ0FMKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2lj YWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyAiCisJCQkJCQkJCSJ3YWxfbGV2ZWwg Pj0gbG9naWNhbCBvbiBtYXN0ZXIiKSkpOworCQkJYnJlYWs7CisJCX0KIAkJY2FzZSBYTE9H X05PT1A6CiAJCWNhc2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhMT0dfU1dJVENIOgogCQlj YXNlIFhMT0dfQkFDS1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CiAJ CWNhc2UgWExPR19SRVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0dfRlBXX0NIQU5HRToKIAkJ Y2FzZSBYTE9HX0ZQSV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sb2dpY2FsLmMKaW5kZXggMzdiNzVkZWI3Mi4uNTM0ZTI1NjZjZiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTExOSwyMyArMTE5 LDIyIEBAIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKHZvaWQpCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJ IGVycm1zZygibG9naWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRhdGFiYXNlIGNvbm5lY3Rp b24iKSkpOwogCi0JLyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0byBjaGFuZ2UgdGhhdCBz b21lZGF5IHNvb24uLi4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNhbGx5IHRocmVlIHRoaW5n cyBtaXNzaW5nIHRvIGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVlZCB0byBiZSBhYmxlIHRv IGNvcnJlY3RseSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGltZWxpbmUgYQotCSAqCSAg TFNOIGJlbG9uZ3MgdG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNlIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHRvIGJlIGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0JICoJICB0aGUgcHJpbWFy eSBjYW5ub3QgcmVtb3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBzdXBwb3J0IGRyb3BwaW5n IHJlcGxpY2F0aW9uIHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFiYXNlLCBpbgotCSAqCSAg ZGJhc2VfcmVkby4gVGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBvbmVzIGR1ZSB0byBIUyBy ZWNvdmVyeQotCSAqCSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5 IGVhc3kuCi0JICogLS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCi0JCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBjYW5ub3QgYmUgdXNlZCB3 aGlsZSBpbiByZWNvdmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBUaGlzIGNoZWNrIG1heSBo YXZlIHJhY2UgY29uZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAqIFhMT0dfUEFSQU1FVEVS X0NIQU5HRSBpbmRpY2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNoYW5nZWQsIHdlCisJCSAq IHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3RzLiBBbmQgdG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5kIGNyZWF0aW5nIGEgbmV3 IHNsb3QsCisJCSAqIENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCkgaXMgY2Fs bGVkIG9uY2UgYmVmb3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90LCBhbmQgb25jZSB3aGVu IGxvZ2ljYWwgZGVjb2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5nIHVwLgorCQkgKi8KKwkJ aWYgKEdldEFjdGl2ZVdhbExldmVsKCkgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFV SVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkgcmVxdWlyZXMgIgorCQkJCQkJCSJ3YWxfbGV2ZWwgPj0gbG9naWNhbCBvbiBtYXN0ZXIi KSkpOworCX0KIH0KIAogLyoKQEAgLTMzMCw2ICszMjksMTIgQEAgQ3JlYXRlSW5pdERlY29k aW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgorCSAqIE9uIHN0 YW5kYnksIHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVhdGluZyB0aGUg c2xvdC4gQ2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlvbi4KKwkgKi8K KwlDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyogc2hvcnRlciBs aW5lcy4uLiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jCmluZGV4IDc1YTA4N2MyZjkuLjJlYzcxMjc5NDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90LmMKQEAgLTExMDUsMzcgKzExMDUsNTcgQEAgUmVwbGljYXRpb25TbG90UmVz ZXJ2ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3IgbG9naWNhbCBzbG90cyBsb2cgYSBzdGFu ZGJ5IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2FsIGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0 bHkgdGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3MgdGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9y ZQotCQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNh bm5vdCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVzZSB0aGUKKwkJICogcmVwbGF5IHBvaW50 ZXI7IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBv bgorCQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQgdG8gd2FpdCBmb3IgYW4geGxfcnVubmlu Z194YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dnZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUg cHJpbWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNhbiBiZSBidWlsdAorCQkgKiB1c2luZyB0 aGUgcmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mgbm90IG5lZWRlZCAob3IgaW5kZWVkIGhl bHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxh eSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQgcmV0dXJu Ci0JCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBz bGlnaHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0 cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBoYXMgdG8KLQkJICogc3RhcnQgcmVwbGF5 IGF0LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkg Zm9yIHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRoZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRo ZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZAorCQkgKiByZXR1cm4g dGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5 CisJCSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQn cyB3aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhhcyB0byBzdGFydCByZXBsYXkgYXQuCiAJ CSAqLworCQlpZiAoU2xvdElzUGh5c2ljYWwoc2xvdCkpCisJCQlyZXN0YXJ0X2xzbiA9IEdl dFJlZG9SZWNQdHIoKTsKKwkJZWxzZSBpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCXsK KwkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJCS8qCisJ CQkgKiBSZXBsYXkgcG9pbnRlciBtYXkgcG9pbnQgb25lIHBhc3QgdGhlIGVuZCBvZiB0aGUg cmVjb3JkLiBJZiB0aGF0CisJCQkgKiBpcyBhIFhMT0cgcGFnZSBib3VuZGFyeSwgaXQgd2ls bCBub3QgYmUgYSB2YWxpZCBMU04gZm9yIHRoZQorCQkJICogc3RhcnQgb2YgYSByZWNvcmQs IHNvIGJ1bXAgaXQgdXAgcGFzdCB0aGUgcGFnZSBoZWFkZXIuCisJCQkgKi8KKwkJCWlmICgh WFJlY09mZklzVmFsaWQocmVzdGFydF9sc24pKQorCQkJeworCQkJCWlmIChyZXN0YXJ0X2xz biAlIFhMT0dfQkxDS1NaICE9IDApCisJCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHJlcGxh eSBwb2ludGVyIik7CisKKwkJCQkvKiBGb3IgdGhlIGZpcnN0IHBhZ2Ugb2YgYSBzZWdtZW50 IGZpbGUsIGl0J3MgYSBsb25nIGhlYWRlciAqLworCQkJCWlmIChYTG9nU2VnbWVudE9mZnNl dChyZXN0YXJ0X2xzbiwgd2FsX3NlZ21lbnRfc2l6ZSkgPT0gMCkKKwkJCQkJcmVzdGFydF9s c24gKz0gU2l6ZU9mWExvZ0xvbmdQSEQ7CisJCQkJZWxzZQorCQkJCQlyZXN0YXJ0X2xzbiAr PSBTaXplT2ZYTG9nU2hvcnRQSEQ7CisJCQl9CisJCX0KKwkJZWxzZQorCQkJcmVzdGFydF9s c24gPSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZzbG90 LT5tdXRleCk7CisJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKKwkJ U3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CisKIAkJaWYgKCFSZWNvdmVyeUluUHJv Z3Jlc3MoKSAmJiBTbG90SXNMb2dpY2FsKHNsb3QpKQogCQl7CiAJCQlYTG9nUmVjUHRyCWZs dXNocHRyOwogCi0JCQkvKiBzdGFydCBhdCBjdXJyZW50IGluc2VydCBwb3NpdGlvbiAqLwot CQkJcmVzdGFydF9sc24gPSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCiAJCQkvKiBt YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KIAkJCWZs dXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CiAKIAkJCS8qIGFuZCBtYWtlIHN1cmUg aXQncyBmc3luY2VkIHRvIGRpc2sgKi8KIAkJCVhMb2dGbHVzaChmbHVzaHB0cik7CiAJCX0K LQkJZWxzZQotCQl7Ci0JCQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9SZWNQdHIoKTsKLQkJCVNw aW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xz biA9IHJlc3RhcnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0J CX0KIAogCQkvKiBwcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZhc3QgYXMgcG9zc2libGUgKi8K IAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCAyM2JhYTQ0OThhLi5jNGE0OTcyNjY5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtMjg2NSwxMCArMjg2NSwxMiBA QCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJzdCB0aW1lIHRocm91Z2ggaW4g dGhpcyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAgT3RoZXJ3aXNlLAogCSAqIHdl IG9ubHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5kUmVjUHRyIGlzIHBhc3QgaXQu CiAJICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRyKQotCQlmbHVzaFB0 ciA9IEdldEZsdXNoUmVjUHRyKCk7Ci0JZWxzZSBpZiAobG9naWNhbF9kZWNvZGluZ19jdHgt PnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNo UmVjUHRyKCk7CisJaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRyIHx8CisJCWxv Z2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKKwl7 CisJCWZsdXNoUHRyID0gKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIgPworCQkJCQlHZXRTdGFu ZGJ5Rmx1c2hSZWNQdHIoKSA6IEdldEZsdXNoUmVjUHRyKCkpOworCX0KIAogCS8qIElmIEVu ZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91ciBmbHVzaFB0ciwgaXQgbWVhbnMgd2UgY2F1Z2h0 IHVwLiAqLwogCWlmIChsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIg Pj0gZmx1c2hQdHIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCA3NzE4N2MxMmJlLi4wNmJjZDJmYzU2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9nLmgKQEAgLTMzMyw2ICszMzMsNyBAQCBleHRlcm4gU2l6ZSBYTE9H U2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgWExPR1NobWVtSW5pdCh2b2lkKTsKIGV4 dGVybiB2b2lkIEJvb3RTdHJhcFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBMb2NhbFByb2Nl c3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiBXYWxMZXZlbCBHZXRBY3RpdmVX YWxMZXZlbCh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBYTE9HKHZvaWQpOwogZXh0ZXJu IHZvaWQgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1bSBhcmcpOwogZXh0ZXJuIHZvaWQg SW5pdFhMT0dBY2Nlc3Modm9pZCk7Ci0tIAoyLjE4LjQKCg== --------------F8760880D041201312AEC593--