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 1oWazp-0005z2-Ni for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Sep 2022 10:12:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oWazo-0005A3-GC for pgsql-hackers@arkaria.postgresql.org; Fri, 09 Sep 2022 10:12:24 +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 1oWazn-000597-9t for pgsql-hackers@lists.postgresql.org; Fri, 09 Sep 2022 10:12:24 +0000 Received: from smtp-fw-9103.amazon.com ([207.171.188.200]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oWaze-0008Eh-Va for pgsql-hackers@lists.postgresql.org; Fri, 09 Sep 2022 10:12:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1662718334; x=1694254334; h=message-id:date:mime-version:subject:from:to:cc: references:in-reply-to; bh=Y5/3j5/qhvN8HsAt1Bh1PVZfV2wMB/8c1dl7enBZ+z4=; b=NGLDfKLMyy/2Cgh4OiqT5EdGgZHNdzgqVUwT9e8Qe9p/L72H4RQCVqYG s+0mcS2M5HPErkRY6zaYltU3p4+094PTWMO5ezhrs+bPnKoxbXq5gKcrR alTe/Nzj6yhAiq85ZBi1iMhCP31ecNtk0BPttT3B/jgK49PAU7zNwiZLC I=; X-Amazon-filename: v5-0001-JumbleQuery-on-Call-and-Set.patch X-IronPort-AV: E=Sophos;i="5.93,302,1654560000"; d="scan'208,217";a="1052850566" Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO email-inbound-relay-pdx-2a-7d84505d.us-west-2.amazon.com) ([10.25.36.214]) by smtp-border-fw-9103.sea19.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Sep 2022 10:11:53 +0000 Received: from EX13D03EUC003.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-pdx-2a-7d84505d.us-west-2.amazon.com (Postfix) with ESMTPS id E3BC62E00D8; Fri, 9 Sep 2022 10:11:52 +0000 (UTC) Received: from [192.168.2.242] (10.43.165.214) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.38; Fri, 9 Sep 2022 10:11:51 +0000 Content-Type: multipart/mixed; boundary="------------gLwWbo8t6P7ShbJIe83og80L" Message-ID: Date: Fri, 9 Sep 2022 12:11:50 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Subject: Re: Query Jumbling for CALL and SET utility statements From: "Drouvot, Bertrand" To: Julien Rouhaud CC: Michael Paquier , Jeremy Schneider , PostgreSQL Hackers , Pavel Stehule , Andres Freund , "Imseih (AWS), Sami" References: <46ca04f9-1e37-c862-9a28-c5dffaee412f@amazon.com> <20220831190604.l2luuhj3xkau7dvk@awork3.anarazel.de> <09c04aba-7f12-e524-20f7-3f92c1479fdf@amazon.com> <9aee54f2-5cc1-5b64-1f73-6961932e7bd2@amazon.com> <20220908065012.l3bd2np7wj52cxco@jrouhaud> <20220908112919.2ytxpkitiw6lt2u6@jrouhaud> Content-Language: en-US In-Reply-To: X-Originating-IP: [10.43.165.214] X-ClientProxiedBy: EX13D36EUC004.ant.amazon.com (10.43.164.126) 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 --------------gLwWbo8t6P7ShbJIe83og80L Content-Type: multipart/alternative; boundary="------------zfL1pqH4pHVBnrbev5CPcztg" --------------zfL1pqH4pHVBnrbev5CPcztg Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit Hi, On 9/8/22 6:07 PM, Drouvot, Bertrand wrote: > On 9/8/22 1:29 PM, Julien Rouhaud wrote: >> >> IME if your application relies on 2PC it's very likely that you will hit the >> exact same problems described in your original email. > > Agree > >> What do you think about >> normalizing those too while working on the subject? > > That sounds reasonable, I'll have a look at those too while at it. > Attached v5 to normalize 2PC commands too, so that we get things like: create table test_tx (a int); begin; prepare transaction 'tx1'; insert into test_tx values (1); commit prepared 'tx1'; begin; prepare transaction 'tx2'; insert into test_tx values (2); commit prepared 'tx2'; begin; prepare transaction 'tx3'; insert into test_tx values (3); rollback prepared 'tx3'; begin; prepare transaction 'tx4'; insert into test_tx values (4); rollback prepared 'tx4'; SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C"; query                                     | calls | rows ------------------------------------------------------------------------------+-------+------  SELECT pg_stat_statements_reset() |     1 |    1  SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" |     0 |    0  begin |     4 |    0  commit prepared $1 |     2 |    0  create table test_tx (a int)                                                 |     1 |    0  insert into test_tx values ($1)                                              |     4 |    4  prepare transaction $1                                                       |     4 |    0  rollback prepared $1                                                         | 2 |    0 (8 rows) For those ones I also had to do some minor changes in gram.y and to the TransactionStmt struct to record the gid location. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services:https://aws.amazon.com --------------zfL1pqH4pHVBnrbev5CPcztg Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit

Hi,

On 9/8/22 6:07 PM, Drouvot, Bertrand wrote:
On 9/8/22 1:29 PM, Julien Rouhaud wrote:

IME if your application relies on 2PC it's very likely that you will hit the
exact same problems described in your original email. 

Agree

 What do you think about
normalizing those too while working on the subject?

That sounds reasonable, I'll have a look at those too while at it.

Attached v5 to normalize 2PC commands too, so that we get things like:

create table test_tx (a int);
begin;
prepare transaction 'tx1';
insert into test_tx values (1);
commit prepared 'tx1';
begin;
prepare transaction 'tx2';
insert into test_tx values (2);
commit prepared 'tx2';
begin;
prepare transaction 'tx3';
insert into test_tx values (3);
rollback prepared 'tx3';
begin;
prepare transaction 'tx4';
insert into test_tx values (4);
rollback prepared 'tx4';
SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C";
                                    query                                     | calls | rows
------------------------------------------------------------------------------+-------+------
 SELECT pg_stat_statements_reset()                                            |     1 |    1
 SELECT query, calls, rows FROM pg_stat_statements ORDER BY query COLLATE "C" |     0 |    0
 begin                                                                        |     4 |    0
 commit prepared $1                                                           |     2 |    0
 create table test_tx (a int)                                                 |     1 |    0
 insert into test_tx values ($1)                                              |     4 |    4
 prepare transaction $1                                                       |     4 |    0
 rollback prepared $1                                                         |     2 |    0
(8 rows)

For those ones I also had to do some minor changes in gram.y and to the TransactionStmt struct to record the gid location.

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
--------------zfL1pqH4pHVBnrbev5CPcztg-- --------------gLwWbo8t6P7ShbJIe83og80L Content-Type: text/plain; charset="UTF-8"; name="v5-0001-JumbleQuery-on-Call-and-Set.patch" Content-Disposition: attachment; filename="v5-0001-JumbleQuery-on-Call-and-Set.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3BnX3N0 YXRfc3RhdGVtZW50cy5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3Rl ZC9wZ19zdGF0X3N0YXRlbWVudHMub3V0CmluZGV4IGZmMDE2NmZiOWQuLmU5N2QyYzBmMDIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3BnX3N0 YXRfc3RhdGVtZW50cy5vdXQKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhw ZWN0ZWQvcGdfc3RhdF9zdGF0ZW1lbnRzLm91dApAQCAtMjcyLDcgKzI3Miw3IEBAIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogIHdhbF9y ZWNvcmRzID4gJDIgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkLCAgICAgICAgICAgICAgICt8 ICAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAKICB3YWxfcmVjb3JkcyA+PSByb3dzIGFzIHdhbF9yZWNvcmRzX2dlX3Jvd3Mg ICAgICAgICAgICAgICArfCAgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwgCiAgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JE RVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgICAgICAgIHwgICAgICAgfCAgICAgIHwgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAotIFNFVCBwZ19zdGF0 X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFICAgICAgICAgICAgICB8ICAgICAx IHwgICAgMCB8IGYgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgICAg fCB0CisgU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gJDEgICAgICAg ICAgICAgICAgIHwgICAgIDEgfCAgICAwIHwgZiAgICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICAgICB8IHQKICBVUERBVEUgcGdzc190ZXN0IFNFVCBiID0gJDEgV0hF UkUgYSA+ICQyICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDMgfCB0ICAgICAgICAg ICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgIHwgdAogKDcgcm93cykKIApAQCAt NDIzLDYgKzQyMywxNDcgQEAgU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0 YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICBTRUxFQ1QgcXVl cnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5 IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCiAoNiByb3dzKQogCistLSBQTC9wZ1NRTCBw cm9jZWR1cmUgYW5kIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9IHRvcAorQ1JFQVRFIFBS T0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElOVEVH RVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7CitF TkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgUFJPQ0VEVVJFIFNVTV9UV08oaSBJ TlRFR0VSLCBqIElOVEVHRVIpIEFTICQkCitERUNMQVJFCisgIHIgSU5URUdFUjsKK0JFR0lO CisgIFNFTEVDVCAoaiArIGopOjpJTlRFR0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAndG9wJzsKK1NFVCBw Z19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IFRSVUU7CitTRUxFQ1QgcGdfc3Rh dF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CisgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ0FMTCBNSU5VU19UV08o Myk7CitDQUxMIE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NBTEwgU1VN X1RXTyg3LCA1KTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0 YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLQorIENBTEwgTUlOVVNfVFdPKCQxKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDAKKyBD QUxMIFNVTV9UV08oJDEsICQyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAwCisgU0VMRUNUIHBnX3N0YXRf c3RhdGVtZW50c19yZXNldCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAxIHwgICAgMQorIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAg MCB8ICAgIDAKKyg0IHJvd3MpCisKKy0tIEVuc3VyZSBDQUxMIGlzIHRyYWNrZWQgZXZlbiBp ZiBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSBpcyBGQUxTRQorU0VUIHBnX3N0 YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gRkFMU0U7CitTRUxFQ1QgcGdfc3RhdF9z dGF0ZW1lbnRzX3Jlc2V0KCk7CisgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ0FMTCBNSU5VU19UV08oMyk7 CitDQUxMIE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NBTEwgU1VNX1RX Tyg3LCA1KTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0YXRl bWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLQorIENBTEwgTUlOVVNfVFdPKCQxKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDAKKyBDQUxM IFNVTV9UV08oJDEsICQyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAwCisgU0VMRUNUIHBnX3N0YXRfc3Rh dGVtZW50c19yZXNldCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAxIHwgICAgMQorIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBw Z19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAgMCB8 ICAgIDAKKyg0IHJvd3MpCisKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0 eSA9IFRSVUU7CistLSBQTC9wZ1NRTCBwcm9jZWR1cmUgYW5kIHBnX3N0YXRfc3RhdGVtZW50 cy50cmFjayA9IGFsbAorLS0gd2UgZHJvcCBhbmQgcmVjcmVhdGUgdGhlIHByb2NlZHVyZXMg dG8gYXZvaWQgYW55IGNhY2hpbmcgZnVubmllcworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50 cmFja191dGlsaXR5ID0gRkFMU0U7CitEUk9QIFBST0NFRFVSRSBNSU5VU19UV08oSU5URUdF Uik7CitEUk9QIFBST0NFRFVSRSBTVU1fVFdPKElOVEVHRVIsIElOVEVHRVIpOworQ1JFQVRF IFBST0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElO VEVHRVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7 CitFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgUFJPQ0VEVVJFIFNVTV9UV08o aSBJTlRFR0VSLCBqIElOVEVHRVIpIEFTICQkCitERUNMQVJFCisgIHIgSU5URUdFUjsKK0JF R0lOCisgIFNFTEVDVCAoaiArIGopOjpJTlRFR0VSIElOVE8gcjsKK0VORDsgJCQgTEFOR1VB R0UgcGxwZ3NxbDsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAnYWxsJzsKK1NF VCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IFRSVUU7CitTRUxFQ1QgcGdf c3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CisgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworQ0FMTCBNSU5VU19U V08oMyk7CitDQUxMIE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NBTEwg U1VNX1RXTyg3LCA1KTsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0 X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLQorIENBTEwgTUlOVVNfVFdPKCQxKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMiB8ICAgIDAK KyBDQUxMIFNVTV9UV08oJDEsICQyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAwCisgU0VMRUNUIChpIC0g JDIgLSAkMyk6OklOVEVHRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAyIHwgICAgMgorIFNFTEVDVCAoaiArIGopOjpJTlRFR0VSICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgMiB8ICAgIDIKKyBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEgfCAgICAxCisg U0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRF UiBCWSBxdWVyeSBDT0xMQVRFICJDIiB8ICAgICAwIHwgICAgMAorKDYgcm93cykKKworLS0g RW5zdXJlIENBTEwgaXMgdHJhY2tlZCBldmVuIGlmIHBnX3N0YXRfc3RhdGVtZW50cy50cmFj a191dGlsaXR5IGlzIEZBTFNFCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxp dHkgPSBGQUxTRTsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKyBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitDQUxMIE1JTlVTX1RXTygzKTsKK0NBTEwgTUlOVVNfVFdPKDcpOworQ0FM TCBTVU1fVFdPKDMsIDgpOworQ0FMTCBTVU1fVFdPKDcsIDUpOworU0VMRUNUIHF1ZXJ5LCBj YWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xM QVRFICJDIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FsbHMgfCByb3dzIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tCisgQ0FMTCBNSU5VU19UV08o JDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAyIHwgICAgMAorIENBTEwgU1VNX1RXTygkMSwgJDIpICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg MiB8ICAgIDAKKyBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIgfCAgICAyCisgU0VM RUNUIChqICsgaik6OklOVEVHRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAyIHwgICAgMgorIFNFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMSB8ICAgIDEKKyBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00g cGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAg fCAgICAwCisoNiByb3dzKQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxp dHkgPSBUUlVFOworLS0gU0VUCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7 CisgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworc2V0IGVuYWJsZV9zZXFzY2FuPWZhbHNlOworc2V0IGVuYWJs ZV9zZXFzY2FuPXRydWU7CitzZXQgc2VxX3BhZ2VfY29zdD0yLjA7CitzZXQgc2VxX3BhZ2Vf Y29zdD0xLjA7CitTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0 ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcXVlcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBjYWxscyB8IHJvd3MgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LSstLS0tLS0KKyBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEgfCAgICAxCisgU0VM RUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBC WSBxdWVyeSBDT0xMQVRFICJDIiB8ICAgICAwIHwgICAgMAorIHNldCBlbmFibGVfc2Vxc2Nh bj0kMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMiB8ICAgIDAKKyBzZXQgc2VxX3BhZ2VfY29zdD0kMSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDIg fCAgICAwCisoNCByb3dzKQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxp dHkgPSBGQUxTRTsKIC0tCiAtLSBxdWVyaWVzIHdpdGggbG9ja2luZyBjbGF1c2VzCiAtLQpA QCAtNTUzLDExICs2OTQsODAgQEAgU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBn X3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKICBTRUxFQ1Qg cXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1 ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCiAoOSByb3dzKQogCistLSAyUEMKK1NF TEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKyBwZ19zdGF0X3N0YXRlbWVudHNf cmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitjcmVh dGUgdGFibGUgdGVzdF90eCAoYSBpbnQpOworYmVnaW47CitwcmVwYXJlIHRyYW5zYWN0aW9u ICd0eDEnOworaW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKDEpOworY29tbWl0IHByZXBh cmVkICd0eDEnOworYmVnaW47CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0eDInOworaW5zZXJ0 IGludG8gdGVzdF90eCB2YWx1ZXMgKDIpOworY29tbWl0IHByZXBhcmVkICd0eDInOworYmVn aW47CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0eDMnOworaW5zZXJ0IGludG8gdGVzdF90eCB2 YWx1ZXMgKDMpOworcm9sbGJhY2sgcHJlcGFyZWQgJ3R4Myc7CitiZWdpbjsKK3ByZXBhcmUg dHJhbnNhY3Rpb24gJ3R4NCc7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVlcyAoNCk7City b2xsYmFjayBwcmVwYXJlZCAndHg0JzsKK1NFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJP TSBwZ19zdGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGNhbGxzIHwgcm93cyAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLQorIFNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVz ZXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg MSB8ICAgIDEKKyBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0 ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiIHwgICAgIDAgfCAgICAwCisgYmVn aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICA0IHwgICAgMAorIGNvbW1pdCBwcmVwYXJlZCAk MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMiB8ICAgIDAKKyBjcmVhdGUgdGFibGUgdGVzdF90eCAoYSBpbnQpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDEg fCAgICAwCisgaW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKCQxKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICA0IHwgICAgNAorIHByZXBh cmUgdHJhbnNhY3Rpb24gJDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgNCB8ICAgIDAKKyByb2xsYmFjayBwcmVwYXJlZCAk MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDIgfCAgICAwCisoOCByb3dzKQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRz LnRyYWNrX3V0aWxpdHkgPSBGQUxTRTsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVz ZXQoKTsKKyBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitiZWdpbjsKK3ByZXBhcmUgdHJhbnNhY3Rpb24gJ3R4 MSc7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVlcyAoMSk7Citjb21taXQgcHJlcGFyZWQg J3R4MSc7CitiZWdpbjsKK3ByZXBhcmUgdHJhbnNhY3Rpb24gJ3R4Mic7CitpbnNlcnQgaW50 byB0ZXN0X3R4IHZhbHVlcyAoMik7Citjb21taXQgcHJlcGFyZWQgJ3R4Mic7CitiZWdpbjsK K3ByZXBhcmUgdHJhbnNhY3Rpb24gJ3R4Myc7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVl cyAoMyk7Cityb2xsYmFjayBwcmVwYXJlZCAndHgzJzsKK2JlZ2luOworcHJlcGFyZSB0cmFu c2FjdGlvbiAndHg0JzsKK2luc2VydCBpbnRvIHRlc3RfdHggdmFsdWVzICg0KTsKK3JvbGxi YWNrIHByZXBhcmVkICd0eDQnOworU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBn X3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgY2FsbHMgfCByb3dzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tCisgU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxIHwg ICAgMQorIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MgRlJPTSBwZ19zdGF0X3N0YXRlbWVu dHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyIgfCAgICAgMCB8ICAgIDAKKyBpbnNlcnQg aW50byB0ZXN0X3R4IHZhbHVlcyAoJDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDQgfCAgICA0CisoMyByb3dzKQorCiAtLQogLS0gVHJh Y2sgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIHJldHJpZXZlZCBvciBhZmZlY3RlZCBieSB0 aGUgdXRpbGl0eQogLS0gY29tbWFuZHMgb2YgQ09QWSwgRkVUQ0gsIENSRUFURSBUQUJMRSBB UywgQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXLAogLS0gUkVGUkVTSCBNQVRFUklBTElaRUQg VklFVyBhbmQgU0VMRUNUIElOVE8KIC0tCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNr X3V0aWxpdHkgPSBUUlVFOwogU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpOwog IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jCmluZGV4IGJhODY4ZjBkZTkuLjYyZGU5YjkzMjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC0xMDYsNiArMTA2 LDExIEBAIHN0YXRpYyBjb25zdCB1aW50MzIgUEdTU19QR19NQUpPUl9WRVJTSU9OID0gUEdf VkVSU0lPTl9OVU0gLyAxMDA7CiAjZGVmaW5lIFBHU1NfSEFORExFRF9VVElMSVRZKG4pCQko IUlzQShuLCBFeGVjdXRlU3RtdCkgJiYgXAogCQkJCQkJCQkJIUlzQShuLCBQcmVwYXJlU3Rt dCkgJiYgXAogCQkJCQkJCQkJIUlzQShuLCBEZWFsbG9jYXRlU3RtdCkpCisvKgorICogRm9y Y2UgdHJhY2sgdGhvc2UgdXRpbGl0eSBzdGF0ZW1lbnRzCisgKiB3aGF0ZXZlciB0aGUgdmFs dWUgb2YgcGdzc190cmFja191dGlsaXR5IGlzLgorICovCisjZGVmaW5lIEZPUkNFX1RSQUNL X1VUSUxJVFkobikJKElzQShuLCBDYWxsU3RtdCkpCiAKIC8qCiAgKiBFeHRlbnNpb24gdmVy c2lvbiBudW1iZXIsIGZvciBzdXBwb3J0aW5nIG9sZGVyIGV4dGVuc2lvbiB2ZXJzaW9ucycg b2JqZWN0cwpAQCAtODMyLDcgKzgzNyw3IEBAIHBnc3NfcG9zdF9wYXJzZV9hbmFseXplKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnF1ZXJ5LCBKdW1ibGVTdGF0ZSAqanN0YXRlKQog CSAqIGluaGVyaXQgZnJvbSB0aGUgdW5kZXJseWluZyBzdGF0ZW1lbnQncyBvbmUgKGV4Y2Vw dCBERUFMTE9DQVRFIHdoaWNoIGlzCiAJICogZW50aXJlbHkgdW50cmFja2VkKS4KIAkgKi8K LQlpZiAocXVlcnktPnV0aWxpdHlTdG10KQorCWlmIChxdWVyeS0+dXRpbGl0eVN0bXQgJiYg IWpzdGF0ZSkKIAl7CiAJCWlmIChwZ3NzX3RyYWNrX3V0aWxpdHkgJiYgIVBHU1NfSEFORExF RF9VVElMSVRZKHF1ZXJ5LT51dGlsaXR5U3RtdCkpCiAJCQlxdWVyeS0+cXVlcnlJZCA9IFVJ TlQ2NENPTlNUKDApOwpAQCAtMTA5Nyw3ICsxMTAyLDggQEAgcGdzc19Qcm9jZXNzVXRpbGl0 eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCSAqIHRo YXQgdXNlciBjb25maWd1cmVkIGFub3RoZXIgZXh0ZW5zaW9uIHRvIGhhbmRsZSB1dGlsaXR5 IHN0YXRlbWVudHMKIAkgKiBvbmx5LgogCSAqLwotCWlmIChwZ3NzX2VuYWJsZWQoZXhlY19u ZXN0ZWRfbGV2ZWwpICYmIHBnc3NfdHJhY2tfdXRpbGl0eSkKKwlpZiAocGdzc19lbmFibGVk KGV4ZWNfbmVzdGVkX2xldmVsKSAmJgorCQkocGdzc190cmFja191dGlsaXR5IHx8IEZPUkNF X1RSQUNLX1VUSUxJVFkocGFyc2V0cmVlKSkpCiAJCXBzdG10LT5xdWVyeUlkID0gVUlOVDY0 Q09OU1QoMCk7CiAKIAkvKgpAQCAtMTExNCw3ICsxMTIwLDggQEAgcGdzc19Qcm9jZXNzVXRp bGl0eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCSAq CiAJICogTGlrZXdpc2UsIHdlIGRvbid0IHRyYWNrIGV4ZWN1dGlvbiBvZiBERUFMTE9DQVRF LgogCSAqLwotCWlmIChwZ3NzX3RyYWNrX3V0aWxpdHkgJiYgcGdzc19lbmFibGVkKGV4ZWNf bmVzdGVkX2xldmVsKSAmJgorCWlmICgocGdzc190cmFja191dGlsaXR5IHx8IEZPUkNFX1RS QUNLX1VUSUxJVFkocGFyc2V0cmVlKSkgJiYKKwkJcGdzc19lbmFibGVkKGV4ZWNfbmVzdGVk X2xldmVsKSAmJgogCQlQR1NTX0hBTkRMRURfVVRJTElUWShwYXJzZXRyZWUpKQogCXsKIAkJ aW5zdHJfdGltZQlzdGFydDsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3NxbC9wZ19zdGF0X3N0YXRlbWVudHMuc3FsIGIvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvc3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwKaW5kZXggYTAxZjE4MzcyNy4uN2I0 NGFlZjM0MCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3Bn X3N0YXRfc3RhdGVtZW50cy5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv c3FsL3BnX3N0YXRfc3RhdGVtZW50cy5zcWwKQEAgLTIwMSw2ICsyMDEsOTIgQEAgU0VMRUNU IFBMVVNfT05FKDEpOwogCiBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3Rh dF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOwogCistLSBQTC9wZ1NR TCBwcm9jZWR1cmUgYW5kIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjayA9IHRvcAorQ1JFQVRF IFBST0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAorREVDTEFSRQorICByIElO VEVHRVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6SU5URUdFUiBJTlRPIHI7 CitFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBQUk9DRURVUkUgU1VNX1RX TyhpIElOVEVHRVIsIGogSU5URUdFUikgQVMgJCQKK0RFQ0xBUkUKKyAgciBJTlRFR0VSOwor QkVHSU4KKyAgU0VMRUNUIChqICsgaik6OklOVEVHRVIgSU5UTyByOworRU5EOyAkJCBMQU5H VUFHRSBwbHBnc3FsOworCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gJ3RvcCc7 CitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBUUlVFOworU0VMRUNU IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpOworQ0FMTCBNSU5VU19UV08oMyk7CitDQUxM IE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NBTEwgU1VNX1RXTyg3LCA1 KTsKKworU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50 cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworLS0gRW5zdXJlIENBTEwgaXMgdHJh Y2tlZCBldmVuIGlmIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5IGlzIEZBTFNF CitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBGQUxTRTsKK1NFTEVD VCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKK0NBTEwgTUlOVVNfVFdPKDMpOworQ0FM TCBNSU5VU19UV08oNyk7CitDQUxMIFNVTV9UV08oMywgOCk7CitDQUxMIFNVTV9UV08oNywg NSk7CitTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRz IE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50 cmFja191dGlsaXR5ID0gVFJVRTsKKworLS0gUEwvcGdTUUwgcHJvY2VkdXJlIGFuZCBwZ19z dGF0X3N0YXRlbWVudHMudHJhY2sgPSBhbGwKKy0tIHdlIGRyb3AgYW5kIHJlY3JlYXRlIHRo ZSBwcm9jZWR1cmVzIHRvIGF2b2lkIGFueSBjYWNoaW5nIGZ1bm5pZXMKK1NFVCBwZ19zdGF0 X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFOworRFJPUCBQUk9DRURVUkUgTUlO VVNfVFdPKElOVEVHRVIpOworRFJPUCBQUk9DRURVUkUgU1VNX1RXTyhJTlRFR0VSLCBJTlRF R0VSKTsKKworQ1JFQVRFIFBST0NFRFVSRSBNSU5VU19UV08oaSBJTlRFR0VSKSBBUyAkJAor REVDTEFSRQorICByIElOVEVHRVI7CitCRUdJTgorICBTRUxFQ1QgKGkgLSAxIC0gMS4wKTo6 SU5URUdFUiBJTlRPIHI7CitFTkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBQ Uk9DRURVUkUgU1VNX1RXTyhpIElOVEVHRVIsIGogSU5URUdFUikgQVMgJCQKK0RFQ0xBUkUK KyAgciBJTlRFR0VSOworQkVHSU4KKyAgU0VMRUNUIChqICsgaik6OklOVEVHRVIgSU5UTyBy OworRU5EOyAkJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRz LnRyYWNrID0gJ2FsbCc7CitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkg PSBUUlVFOworU0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpOworQ0FMTCBNSU5V U19UV08oMyk7CitDQUxMIE1JTlVTX1RXTyg3KTsKK0NBTEwgU1VNX1RXTygzLCA4KTsKK0NB TEwgU1VNX1RXTyg3LCA1KTsKKworU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBn X3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworLS0gRW5z dXJlIENBTEwgaXMgdHJhY2tlZCBldmVuIGlmIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191 dGlsaXR5IGlzIEZBTFNFCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkg PSBGQUxTRTsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKK0NBTEwgTUlO VVNfVFdPKDMpOworQ0FMTCBNSU5VU19UV08oNyk7CitDQUxMIFNVTV9UV08oMywgOCk7CitD QUxMIFNVTV9UV08oNywgNSk7CitTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzIEZST00gcGdf c3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworU0VUIHBnX3N0 YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gVFJVRTsKKworLS0gU0VUCitTRUxFQ1Qg cGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CitzZXQgZW5hYmxlX3NlcXNjYW49ZmFsc2U7 CitzZXQgZW5hYmxlX3NlcXNjYW49dHJ1ZTsKK3NldCBzZXFfcGFnZV9jb3N0PTIuMDsKK3Nl dCBzZXFfcGFnZV9jb3N0PTEuMDsKKworU0VMRUNUIHF1ZXJ5LCBjYWxscywgcm93cyBGUk9N IHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworU0VU IHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gRkFMU0U7CisKIC0tCiAtLSBx dWVyaWVzIHdpdGggbG9ja2luZyBjbGF1c2VzCiAtLQpAQCAtMjUwLDExICszMzYsNjMgQEAg RFJPUCBGVU5DVElPTiBQTFVTX1RXTyhJTlRFR0VSKTsKIAogU0VMRUNUIHF1ZXJ5LCBjYWxs cywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRF ICJDIjsKIAorLS0gMlBDCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CisK K2NyZWF0ZSB0YWJsZSB0ZXN0X3R4IChhIGludCk7CitiZWdpbjsKK3ByZXBhcmUgdHJhbnNh Y3Rpb24gJ3R4MSc7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVlcyAoMSk7Citjb21taXQg cHJlcGFyZWQgJ3R4MSc7CisKK2JlZ2luOworcHJlcGFyZSB0cmFuc2FjdGlvbiAndHgyJzsK K2luc2VydCBpbnRvIHRlc3RfdHggdmFsdWVzICgyKTsKK2NvbW1pdCBwcmVwYXJlZCAndHgy JzsKKworYmVnaW47CitwcmVwYXJlIHRyYW5zYWN0aW9uICd0eDMnOworaW5zZXJ0IGludG8g dGVzdF90eCB2YWx1ZXMgKDMpOworcm9sbGJhY2sgcHJlcGFyZWQgJ3R4Myc7CisKK2JlZ2lu OworcHJlcGFyZSB0cmFuc2FjdGlvbiAndHg0JzsKK2luc2VydCBpbnRvIHRlc3RfdHggdmFs dWVzICg0KTsKK3JvbGxiYWNrIHByZXBhcmVkICd0eDQnOworCitTRUxFQ1QgcXVlcnksIGNh bGxzLCByb3dzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExB VEUgIkMiOworCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBGQUxT RTsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKKworYmVnaW47CitwcmVw YXJlIHRyYW5zYWN0aW9uICd0eDEnOworaW5zZXJ0IGludG8gdGVzdF90eCB2YWx1ZXMgKDEp OworY29tbWl0IHByZXBhcmVkICd0eDEnOworCitiZWdpbjsKK3ByZXBhcmUgdHJhbnNhY3Rp b24gJ3R4Mic7CitpbnNlcnQgaW50byB0ZXN0X3R4IHZhbHVlcyAoMik7Citjb21taXQgcHJl cGFyZWQgJ3R4Mic7CisKK2JlZ2luOworcHJlcGFyZSB0cmFuc2FjdGlvbiAndHgzJzsKK2lu c2VydCBpbnRvIHRlc3RfdHggdmFsdWVzICgzKTsKK3JvbGxiYWNrIHByZXBhcmVkICd0eDMn OworCitiZWdpbjsKK3ByZXBhcmUgdHJhbnNhY3Rpb24gJ3R4NCc7CitpbnNlcnQgaW50byB0 ZXN0X3R4IHZhbHVlcyAoNCk7Cityb2xsYmFjayBwcmVwYXJlZCAndHg0JzsKKworU0VMRUNU IHF1ZXJ5LCBjYWxscywgcm93cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBx dWVyeSBDT0xMQVRFICJDIjsKKwogLS0KIC0tIFRyYWNrIHRoZSB0b3RhbCBudW1iZXIgb2Yg cm93cyByZXRyaWV2ZWQgb3IgYWZmZWN0ZWQgYnkgdGhlIHV0aWxpdHkKIC0tIGNvbW1hbmRz IG9mIENPUFksIEZFVENILCBDUkVBVEUgVEFCTEUgQVMsIENSRUFURSBNQVRFUklBTElaRUQg VklFVywKIC0tIFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcgYW5kIFNFTEVDVCBJTlRPCiAt LQorU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0gVFJVRTsKIFNFTEVD VCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKIAogQ1JFQVRFIFRBQkxFIHBnc3NfY3Rh cyBBUyBTRUxFQ1QgYSwgJ2N0YXMnIGIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIGE7 CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21sIGIvZG9j L3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbAppbmRleCBlY2Y2Y2Q2YmYzLi5mZjEw NmI5NTFmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9wZ3N0YXRzdGF0ZW1lbnRzLnNnbWwKQEAgLTQ4NywxMyAr NDg3LDE2IEBACiAKICAgPHBhcmE+CiAgICBQbGFubmFibGUgcXVlcmllcyAodGhhdCBpcywg PGNvbW1hbmQ+U0VMRUNUPC9jb21tYW5kPiwgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiwK LSAgIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4sIGFuZCA8Y29tbWFuZD5ERUxFVEU8L2Nv bW1hbmQ+KSBhcmUgY29tYmluZWQgaW50byBhIHNpbmdsZQotICAgPHN0cnVjdG5hbWU+cGdf c3RhdF9zdGF0ZW1lbnRzPC9zdHJ1Y3RuYW1lPiBlbnRyeSB3aGVuZXZlciB0aGV5IGhhdmUg aWRlbnRpY2FsIHF1ZXJ5Ci0gICBzdHJ1Y3R1cmVzIGFjY29yZGluZyB0byBhbiBpbnRlcm5h bCBoYXNoIGNhbGN1bGF0aW9uLiAgVHlwaWNhbGx5LCB0d28KLSAgIHF1ZXJpZXMgd2lsbCBi ZSBjb25zaWRlcmVkIHRoZSBzYW1lIGZvciB0aGlzIHB1cnBvc2UgaWYgdGhleSBhcmUKLSAg IHNlbWFudGljYWxseSBlcXVpdmFsZW50IGV4Y2VwdCBmb3IgdGhlIHZhbHVlcyBvZiBsaXRl cmFsIGNvbnN0YW50cwotICAgYXBwZWFyaW5nIGluIHRoZSBxdWVyeS4gIFV0aWxpdHkgY29t bWFuZHMgKHRoYXQgaXMsIGFsbCBvdGhlciBjb21tYW5kcykKLSAgIGFyZSBjb21wYXJlZCBz dHJpY3RseSBvbiB0aGUgYmFzaXMgb2YgdGhlaXIgdGV4dHVhbCBxdWVyeSBzdHJpbmdzLCBo b3dldmVyLgorICAgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPiwgYW5kIDxjb21tYW5kPkRF TEVURTwvY29tbWFuZD4pIGFzIHdlbGwgYXMKKyAgIDxjb21tYW5kPkNBTEw8L2NvbW1hbmQ+ LCA8Y29tbWFuZD5TRVQ8L2NvbW1hbmQ+IGFuZCB0d28tcGhhc2UgY29tbWl0IGNvbW1hbmRz CisgICA8Y29tbWFuZD5QUkVQQVJFIFRSQU5TQUNUSU9OPC9jb21tYW5kPiwgPGNvbW1hbmQ+ Q09NTUlUIFBSRVBBUkVEPC9jb21tYW5kPgorICAgYW5kIDxjb21tYW5kPlJPTExCQUNLIFBS RVBBUkVEPC9jb21tYW5kPiBhcmUgY29tYmluZWQgaW50byBhIHNpbmdsZQorICAgPHN0cnVj dG5hbWU+cGdfc3RhdF9zdGF0ZW1lbnRzPC9zdHJ1Y3RuYW1lPiBlbnRyeSB3aGVuZXZlciB0 aGV5IGhhdmUKKyAgIGlkZW50aWNhbCBxdWVyeSBzdHJ1Y3R1cmVzIGFjY29yZGluZyB0byBh biBpbnRlcm5hbCBoYXNoIGNhbGN1bGF0aW9uLgorICAgVHlwaWNhbGx5LCB0d28gcXVlcmll cyB3aWxsIGJlIGNvbnNpZGVyZWQgdGhlIHNhbWUgZm9yIHRoaXMgcHVycG9zZSBpZiB0aGV5 IGFyZQorICAgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgZXhjZXB0IGZvciB0aGUgdmFsdWVz IG9mIGxpdGVyYWwgY29uc3RhbnRzIGFwcGVhcmluZworICAgaW4gdGhlIGNvbW1hbmQuIEFs bCBvdGhlciBjb21tYW5kcyBhcmUgY29tcGFyZWQgc3RyaWN0bHkgb24gdGhlIGJhc2lzCisg ICBvZiB0aGVpciB0ZXh0dWFsIHF1ZXJ5IHN0cmluZ3MsIGhvd2V2ZXIuCiAgIDwvcGFyYT4K IAogICA8bm90ZT4KQEAgLTc4MSw5ICs3ODQsOSBAQAogICAgIDxsaXN0aXRlbT4KICAgICAg PHBhcmE+CiAgICAgICA8dmFybmFtZT5wZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0 eTwvdmFybmFtZT4gY29udHJvbHMgd2hldGhlcgotICAgICAgdXRpbGl0eSBjb21tYW5kcyBh cmUgdHJhY2tlZCBieSB0aGUgbW9kdWxlLiAgVXRpbGl0eSBjb21tYW5kcyBhcmUKKyAgICAg IHV0aWxpdHkgY29tbWFuZHMgYXJlIHRyYWNrZWQgYnkgdGhlIG1vZHVsZS4gVHJhY2tlZCB1 dGlsaXR5IGNvbW1hbmRzIGFyZQogICAgICAgYWxsIHRob3NlIG90aGVyIHRoYW4gPGNvbW1h bmQ+U0VMRUNUPC9jb21tYW5kPiwgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiwKLSAgICAg IDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4gYW5kIDxjb21tYW5kPkRFTEVURTwvY29tbWFu ZD4uCisgICAgICA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+LCA8Y29tbWFuZD5ERUxFVEU8 L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5DQUxMPC9jb21tYW5kPi4KICAgICAgIFRoZSBkZWZh dWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9uPC9saXRlcmFsPi4KICAgICAgIE9ubHkgc3VwZXJ1 c2VycyBjYW4gY2hhbmdlIHRoaXMgc2V0dGluZy4KICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkKaW5kZXggZWEzMzc4NDMxNi4uMWZmYTk0M2E3ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0x MDg5MCw2ICsxMDg5MCw3IEBAIFRyYW5zYWN0aW9uU3RtdDoKIAogCQkJCQluLT5raW5kID0g VFJBTlNfU1RNVF9QUkVQQVJFOwogCQkJCQluLT5naWQgPSAkMzsKKwkJCQkJbi0+Z2lkX2xv Y2F0aW9uID0gQDM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCQl8IENPTU1J VCBQUkVQQVJFRCBTY29uc3QKQEAgLTEwODk4LDYgKzEwODk5LDcgQEAgVHJhbnNhY3Rpb25T dG10OgogCiAJCQkJCW4tPmtpbmQgPSBUUkFOU19TVE1UX0NPTU1JVF9QUkVQQVJFRDsKIAkJ CQkJbi0+Z2lkID0gJDM7CisJCQkJCW4tPmdpZF9sb2NhdGlvbiA9IEAzOwogCQkJCQkkJCA9 IChOb2RlICopIG47CiAJCQkJfQogCQkJfCBST0xMQkFDSyBQUkVQQVJFRCBTY29uc3QKQEAg LTEwOTA2LDYgKzEwOTA4LDcgQEAgVHJhbnNhY3Rpb25TdG10OgogCiAJCQkJCW4tPmtpbmQg PSBUUkFOU19TVE1UX1JPTExCQUNLX1BSRVBBUkVEOwogCQkJCQluLT5naWQgPSAkMzsKKwkJ CQkJbi0+Z2lkX2xvY2F0aW9uID0gQDM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 CiAJCTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcXVlcnlqdW1ibGUuYwppbmRleCBhNjc0ODdl NWZlLi42ODIwNzVhNzk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3F1 ZXJ5anVtYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9xdWVyeWp1bWJsZS5j CkBAIC0xMDQsNyArMTA0LDcgQEAgSnVtYmxlUXVlcnkoUXVlcnkgKnF1ZXJ5LCBjb25zdCBj aGFyICpxdWVyeXRleHQpCiAKIAlBc3NlcnQoSXNRdWVyeUlkRW5hYmxlZCgpKTsKIAotCWlm IChxdWVyeS0+dXRpbGl0eVN0bXQpCisJaWYgKHF1ZXJ5LT51dGlsaXR5U3RtdCAmJiAhSXNK dW1ibGVVdGlsaXR5QWxsb3dlZChxdWVyeS0+dXRpbGl0eVN0bXQpKQogCXsKIAkJcXVlcnkt PnF1ZXJ5SWQgPSBjb21wdXRlX3V0aWxpdHlfcXVlcnlfaWQocXVlcnl0ZXh0LAogCQkJCQkJ CQkJCQkJICBxdWVyeS0+c3RtdF9sb2NhdGlvbiwKQEAgLTI0MCwxMCArMjQwLDExIEBAIHN0 YXRpYyB2b2lkCiBKdW1ibGVRdWVyeUludGVybmFsKEp1bWJsZVN0YXRlICpqc3RhdGUsIFF1 ZXJ5ICpxdWVyeSkKIHsKIAlBc3NlcnQoSXNBKHF1ZXJ5LCBRdWVyeSkpOwotCUFzc2VydChx dWVyeS0+dXRpbGl0eVN0bXQgPT0gTlVMTCk7CisJQXNzZXJ0KHF1ZXJ5LT51dGlsaXR5U3Rt dCA9PSBOVUxMIHx8IElzSnVtYmxlVXRpbGl0eUFsbG93ZWQocXVlcnktPnV0aWxpdHlTdG10 KSk7CiAKIAlBUFBfSlVNQihxdWVyeS0+Y29tbWFuZFR5cGUpOwogCS8qIHJlc3VsdFJlbGF0 aW9uIGlzIHVzdWFsbHkgcHJlZGljdGFibGUgZnJvbSBjb21tYW5kVHlwZSAqLworCUp1bWJs ZUV4cHIoanN0YXRlLCAoTm9kZSAqKSBxdWVyeS0+dXRpbGl0eVN0bXQpOwogCUp1bWJsZUV4 cHIoanN0YXRlLCAoTm9kZSAqKSBxdWVyeS0+Y3RlTGlzdCk7CiAJSnVtYmxlUmFuZ2VUYWJs ZShqc3RhdGUsIHF1ZXJ5LT5ydGFibGUpOwogCUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAq KSBxdWVyeS0+am9pbnRyZWUpOwpAQCAtMzgzLDYgKzM4NCw0NiBAQCBKdW1ibGVFeHByKEp1 bWJsZVN0YXRlICpqc3RhdGUsIE5vZGUgKm5vZGUpCiAJCQkJQVBQX0pVTUIodmFyLT52YXJs ZXZlbHN1cCk7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0NhbGxTdG10OgorCQkJewor CQkJCUNhbGxTdG10ICAgKnN0bXQgPSAoQ2FsbFN0bXQgKikgbm9kZTsKKwkJCQlGdW5jRXhw ciAgICpleHByID0gc3RtdC0+ZnVuY2V4cHI7CisKKwkJCQlBUFBfSlVNQihleHByLT5mdW5j aWQpOworCQkJCUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSBleHByLT5hcmdzKTsKKwkJ CX0KKwkJCWJyZWFrOworCQljYXNlIFRfVmFyaWFibGVTZXRTdG10OgorCQkJeworCQkJCVZh cmlhYmxlU2V0U3RtdCAqc3RtdCA9IChWYXJpYWJsZVNldFN0bXQgKikgbm9kZTsKKworCQkJ CS8qIHN0bXQtPm5hbWUgaXMgTlVMTCBmb3IgUkVTRVQgQUxMICovCisJCQkJaWYgKHN0bXQt Pm5hbWUpCisJCQkJeworCQkJCQlBUFBfSlVNQl9TVFJJTkcoc3RtdC0+bmFtZSk7CisJCQkJ CUp1bWJsZUV4cHIoanN0YXRlLCAoTm9kZSAqKSBzdG10LT5hcmdzKTsKKwkJCQl9CisJCQl9 CisJCQlicmVhazsKKwkJY2FzZSBUX0FfQ29uc3Q6CisJCQl7CisJCQkJaW50CQkJbG9jID0g KChjb25zdCBBX0NvbnN0ICopIG5vZGUpLT5sb2NhdGlvbjsKKworCQkJCVJlY29yZENvbnN0 TG9jYXRpb24oanN0YXRlLCBsb2MpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9UcmFu c2FjdGlvblN0bXQ6CisJCQl7CisJCQkJVHJhbnNhY3Rpb25TdG10ICpzdG10ID0gKFRyYW5z YWN0aW9uU3RtdCAqKSBub2RlOworCisJCQkJQXNzZXJ0KHN0bXQtPmtpbmQgPT0gVFJBTlNf U1RNVF9QUkVQQVJFIHx8CisJCQkJCSAgIHN0bXQtPmtpbmQgPT0gVFJBTlNfU1RNVF9DT01N SVRfUFJFUEFSRUQgfHwKKwkJCQkJICAgc3RtdC0+a2luZCA9PSBUUkFOU19TVE1UX1JPTExC QUNLX1BSRVBBUkVEKTsKKworCQkJCUFQUF9KVU1CKHN0bXQtPmtpbmQpOworCQkJCVJlY29y ZENvbnN0TG9jYXRpb24oanN0YXRlLCBzdG10LT5naWRfbG9jYXRpb24pOworCQkJfQorCQkJ YnJlYWs7CiAJCWNhc2UgVF9Db25zdDoKIAkJCXsKIAkJCQlDb25zdAkgICAqYyA9IChDb25z dCAqKSBub2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDY5NTgzMDZhN2QuLmU5 ODIzYzUxZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTMyODEsNiArMzI4MSw3 IEBAIHR5cGVkZWYgc3RydWN0IFRyYW5zYWN0aW9uU3RtdAogCWNoYXIJICAgKnNhdmVwb2lu dF9uYW1lOyAvKiBmb3Igc2F2ZXBvaW50IGNvbW1hbmRzICovCiAJY2hhcgkgICAqZ2lkOwkJ CS8qIGZvciB0d28tcGhhc2UtY29tbWl0IHJlbGF0ZWQgY29tbWFuZHMgKi8KIAlib29sCQlj aGFpbjsJCQkvKiBBTkQgQ0hBSU4gb3B0aW9uICovCisJaW50CQkJZ2lkX2xvY2F0aW9uOwkv KiBnaWQgbG9jYXRpb24gKi8KIH0gVHJhbnNhY3Rpb25TdG10OwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9xdWVyeWp1bWJs ZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcXVlcnlqdW1ibGUuaAppbmRleCAzYzJkOWJlYWIy Li5kZmJiMDYwZjU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9xdWVyeWp1bWJs ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3F1ZXJ5anVtYmxlLmgKQEAgLTg1LDQgKzg1 LDI0IEBAIElzUXVlcnlJZEVuYWJsZWQodm9pZCkKIAlyZXR1cm4gcXVlcnlfaWRfZW5hYmxl ZDsKIH0KIAorLyoKKyAqIEp1bWJsZSB0aG9zZSB1dGlsaXR5IHN0YXRlbWVudHMKKyAqLwor c3RhdGljIGlubGluZSBib29sCitJc0p1bWJsZVV0aWxpdHlBbGxvd2VkKE5vZGUgKm4pCit7 CisJaWYgKElzQShuLCBDYWxsU3RtdCkgfHwgSXNBKG4sIFZhcmlhYmxlU2V0U3RtdCkpCisJ CXJldHVybiB0cnVlOworCWVsc2UgaWYgKElzQShuLCBUcmFuc2FjdGlvblN0bXQpKQorCXsK KwkJVHJhbnNhY3Rpb25TdG10ICpzdG10ID0gKFRyYW5zYWN0aW9uU3RtdCAqKSBuOworCisJ CXJldHVybiAoc3RtdC0+a2luZCA9PSBUUkFOU19TVE1UX1BSRVBBUkUgfHwKKwkJCQlzdG10 LT5raW5kID09IFRSQU5TX1NUTVRfQ09NTUlUX1BSRVBBUkVEIHx8CisJCQkJc3RtdC0+a2lu ZCA9PSBUUkFOU19TVE1UX1JPTExCQUNLX1BSRVBBUkVEKTsKKwl9CisJZWxzZQorCQlyZXR1 cm4gZmFsc2U7Cit9CisKICNlbmRpZgkJCQkJCQkvKiBRVUVSWUpVTUJMRV9IICovCg== --------------gLwWbo8t6P7ShbJIe83og80L--