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 1lsfM2-00080C-KD for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Jun 2021 05:41:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lsfM1-0000kr-1M for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Jun 2021 05:41:45 +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 1lsfM0-0000jf-6U for pgsql-hackers@lists.postgresql.org; Mon, 14 Jun 2021 05:41:44 +0000 Received: from smtp-fw-9102.amazon.com ([207.171.184.29]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lsfLp-0005SS-TA for pgsql-hackers@postgresql.org; Mon, 14 Jun 2021 05:41:43 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1623649294; x=1655185294; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=Wg9GD39S5bRjd7+UjtpD0aYszN8QEdZI//Kg2IzcFN4=; b=jvzcEpdvhr0/S3ZAMRbPcvjUlo/eCbLEFeqB8qLwpHawiMlBVkYqc3D/ 09FPUP1YcBLctUPjqC0AQXpu1OOIExA5oKDbdTR9PfToiSKcbD/7DDKDg g0Lx4ivL2GIQjgUgzS5bq++aotCJh4OAUl3QFcIL0DABu9G7DnqGFwOir o=; X-Amazon-filename: v18-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch, v18-0002-Handle-logical-slot-conflicts-on-standby.patch, v18-0003-Allow-logical-decoding-on-standby.patch, v18-0004-New-TAP-test-for-logical-decoding-on-standby.patch, v18-0005-Doc-changes-describing-details-about-logical-dec.patch X-IronPort-AV: E=Sophos;i="5.83,272,1616457600"; d="scan'208,223";a="139942608" Subject: Re: Minimal logical decoding on standbys Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO email-inbound-relay-1d-2c665b5d.us-east-1.amazon.com) ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with ESMTP; 14 Jun 2021 05:41:25 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1d-2c665b5d.us-east-1.amazon.com (Postfix) with ESMTPS id F1C1EA06B8; Mon, 14 Jun 2021 05:41:20 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.160.137) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 14 Jun 2021 05:41:16 +0000 To: Andres Freund CC: , Alvaro Herrera , tushar , "[pgdg] Robert Haas" , Amit Khandekar , Rahila Syed , pgsql-hackers References: <96644a03-0b4d-e0a6-2124-0bc37e5b54fb@amazon.com> <842d60ce-99e6-f35e-8c92-0cd49381326e@amazon.com> <6b9168e5-6a29-7fda-8903-cd50563fa84c@amazon.com> <20210406180231.qsnkyrgrm7gtxb73@alap3.anarazel.de> <20210407170954.xbovgh3xdrnogg7w@alap3.anarazel.de> <20210407203218.pestfxu7watrnog4@alap3.anarazel.de> <20210408034713.auf7oaxyymu2kc7n@alap3.anarazel.de> From: "Drouvot, Bertrand" Message-ID: <26c6f320-98f0-253c-f8b5-df1e7c1f6315@amazon.com> Date: Mon, 14 Jun 2021 07:41:12 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210408034713.auf7oaxyymu2kc7n@alap3.anarazel.de> Content-Type: multipart/mixed; boundary="------------75EF1C85D54B8D5C1916957E" Content-Language: en-US X-Originating-IP: [10.43.160.137] X-ClientProxiedBy: EX13D02UWC003.ant.amazon.com (10.43.162.199) 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 --------------75EF1C85D54B8D5C1916957E Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi Andres, On 4/8/21 5:47 AM, Andres Freund wrote: > Hi, > > On 2021-04-07 13:32:18 -0700, Andres Freund wrote: >> While working on this I found a, somewhat substantial, issue: >> >> When the primary is idle, on the standby logical decoding via walsender >> will typically not process the records until further WAL writes come in >> from the primary, or until a 10s lapsed. >> >> The problem is that WalSndWaitForWal() waits for the *replay* LSN to >> increase, but gets woken up by walreceiver when new WAL has been >> flushed. Which means that typically walsenders will get woken up at the >> same time that the startup process will be - which means that by the >> time the logical walsender checks GetXLogReplayRecPtr() it's unlikely >> that the startup process already replayed the record and updated >> XLogCtl->lastReplayedEndRecPtr. >> >> I think fixing this would require too invasive changes at this point. I >> think we might be able to live with 10s delay issue for one release, but >> it sure is ugly :(. > This is indeed pretty painful. It's a lot more regularly occuring if you > either have a slot disk, or you switch around the order of > WakeupRecovery() and WalSndWakeup() XLogWalRcvFlush(). > > - There's about which timeline to use. If you use pg_recvlogical and you > restart the server, you'll see errors like: > > pg_recvlogical: error: unexpected termination of replication stream: ERROR: requested WAL segment 000000000000000000000003 has already been removed > > the real filename is 000000010000000000000003 - i.e. the timeline is > 0. > > This isn't too hard to fix, but definitely needs fixing. Thanks, nice catch! From what I have seen, we are not going through InitXLOGAccess() on a Standby and in some cases (like the one you mentioned) StartLogicalReplication() is called without IdentifySystem() being called previously: this lead to ThisTimeLineID still set to 0. I am proposing a fix in the attached v18 by adding a check in StartLogicalReplication() and ensuring that ThisTimeLineID is retrieved. > > - ResolveRecoveryConflictWithLogicalSlots() is racy - potentially > leading us to drop a slot that has been created since we signalled a > recovery conflict. See > https://www.postgresql.org/message-id/20210408020913.zzprrlvqyvlt5cyy%40alap3.anarazel.de > for some very similar issues. I have rewritten this part by following the same logic as the one used in 96540f80f8 (the commit linked to the thread you mentioned). > > - Given the precedent of max_slot_wal_keep_size, I think it's wrong to > just drop the logical slots. Instead we should just mark them as > invalid, like InvalidateObsoleteReplicationSlots(). Makes fully sense and done that way in the attached patch. I am setting the slot's data.xmin and data.catalog_xmin as InvalidTransactionId to mark the slot(s) as invalid in case of conflict. > - There's no tests covering timeline switches, what happens if there's a > promotion if logical decoding is currently ongoing. I'll now work on the tests. > > - The way ResolveRecoveryConflictWithLogicalSlots() builds the error > message is not good (and I've complained about it before...). I changed it and made it more simple. I also removed the details around mentioning xmin or catalog xmin (as I am not sure of the added value and they are currently also not mentioned during standby recovery snapshot conflict). > > Unfortunately I think the things I have found are too many for me to > address within the given time. I'll send a version with a somewhat > polished set of the changes I made in the next few days... Thanks for the review and feedback. Please find enclosed v18 with the changes I worked on. I still need to have a look on the tests. There is also the 10s delay to work on, do you already have an idea on how we should handle it? Thanks Bertrand --------------75EF1C85D54B8D5C1916957E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v18-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v18-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" RnJvbSAwYjk4MTk3N2U1M2ZkODIwODhiZmU0MWZmNjk0YmEyMTEwYWQ1MjNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdCA8YmRyb3V2b3RAZ21haWwuY29tPgpE YXRlOiBTdW4sIDEzIEp1biAyMDIxIDE2OjU2OjIyICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 MTggMS81XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3IgbG9n aWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9uIHN0 YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJlIGRl bGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90J3MK Y2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3htaW4g Y29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjb25m bGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwgY29u ZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRhbG9n VGFibGUgaW4gc3VjaCBXQUwgcmVjb3JkcywgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9nIHRh YmxlcywKc28gYXMgdG8gYXJyYW5nZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpBdXRob3I6 IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwg QmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVz IEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dXRpbC5jICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoaW5zZXJ0LmMgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYyAgICAgICAgfCAgNCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgICAg IHwgMTIgKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jICAgfCAgOCArKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9w cml2YXRlLmggICAgICAgfCAgNiArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxv Zy5oICAgICAgICAgICB8ICAzICsrLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o ICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAg ICAgIHwgIDUgKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAgICAg ICB8ICAyICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAgfCAg MSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgfCAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgfCAgOSArKysrKysrKysK IDE5IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQog IDE3LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0LwogIDEzLjElIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwLwogIDE0LjUlIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvCiAgIDguOSUg c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC8KICAgNy4yJSBzcmMvYmFja2VuZC91dGlscy9j YWNoZS8KICAxOS42JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCiAgMTYuNiUgc3JjL2luY2x1ZGUv dXRpbHMvCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4IDA2ODNmNDJjMjUuLmI2ZTYz NDBjM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAgLTM0OCw3ICszNDgsNyBAQCBn aXN0cGxhY2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZyZWVzcGFjZSwgR0lTVFNUQVRF ICpnaXN0c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJewogCQkJ LyogQWxsb2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZl cihyZWwpOworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXBSZWwsIHJlbCk7 CiAJCQlHSVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlzX2xlYWYpID8gRl9MRUFGIDog MCk7CiAJCQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0ci0+YnVmZmVyKTsKIAkJCXB0 ci0+YmxvY2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihwdHItPmJ1ZmZlcik7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IGY0NmE0MjE5N2MuLjgwOTQ5 YmQ0ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTAsNyAr MjkwLDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRl eEluZm8gKmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXplIHRo ZSByb290IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJCWJ1 ZmZlciA9IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwogCQlBc3NlcnQoQnVmZmVyR2V0 QmxvY2tOdW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpp bmRleCA4ZGNkNTNjNDU3Li44YmE2MTc4YTVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R1dGlsLmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6 aW5nIHRoZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVyCi1n aXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIGhlYXBS ZWwsIFJlbGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExvY2s7 CkBAIC04NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJCSAq IHBhZ2UncyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5mb0Fj dGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJldXNl KHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RYTG9n UGFnZVJldXNlKGhlYXBSZWwsIHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdl KSk7CiAKIAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dp c3R4bG9nLmMKaW5kZXggNjQ2NGNiOTI4MS4uNDZhZWU2ZjJhOSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCkBAIC01OTYsNyArNTk2LDggQEAgZ2lzdFhMb2dBc3NpZ25M U04odm9pZCkKICAqIFdyaXRlIFhMT0cgcmVjb3JkIGFib3V0IHJldXNlIG9mIGEgZGVsZXRl ZCBwYWdlLgogICovCiB2b2lkCi1naXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkKQor Z2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcFJlbCwgUmVsYXRpb24gcmVsLAorCQkJ CSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRY aWQpCiB7CiAJZ2lzdHhsb2dQYWdlUmV1c2UgeGxyZWNfcmV1c2U7CiAKQEAgLTYwNyw2ICs2 MDgsNyBAQCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJs a25vLCBGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdgogCSAqLwogCiAJLyogWExPRyBz dHVmZiAqLworCXhscmVjX3JldXNlLm9uQ2F0YWxvZ1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwUmVsKTsKIAl4bHJlY19yZXVzZS5ub2RlID0g cmVsLT5yZF9ub2RlOwogCXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87CiAJeGxyZWNfcmV1 c2UubGF0ZXN0UmVtb3ZlZEZ1bGxYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IGQyNTRhMDBiNmEuLmNlMjIzYjJjMTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTM5OCw2ICszOTgs NyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBocmVs LCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hfdmFjdXVtX29uZV9w YWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVjLm9uQ2F0YWxv Z1RhYmxlID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVsKTsK IAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBsYXRlc3RSZW1vdmVkWGlkOwogCQkJeGxy ZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK aW5kZXggMjQzMzk5OGYzOS4uNDAxOWEyMTIyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKQEAgLTc5NDEsNiArNzk0MSw3IEBAIGxvZ19oZWFwX2ZyZWV6ZShSZWxhdGlvbiBy ZWxuLCBCdWZmZXIgYnVmZmVyLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCiAJLyogbm9y IHdoZW4gdGhlcmUgYXJlIG5vIHR1cGxlcyB0byBmcmVlemUgKi8KIAlBc3NlcnQobnR1cGxl cyA+IDApOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUgPSBSZWxhdGlvbklzQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nKHJlbG4pOwogCXhscmVjLmN1dG9mZl94aWQgPSBjdXRvZmZf eGlkOwogCXhscmVjLm50dXBsZXMgPSBudHVwbGVzOwogCkBAIC03OTcxLDcgKzc5NzIsNyBA QCBsb2dfaGVhcF9mcmVlemUoUmVsYXRpb24gcmVsbiwgQnVmZmVyIGJ1ZmZlciwgVHJhbnNh Y3Rpb25JZCBjdXRvZmZfeGlkLAogICogaGVhcF9idWZmZXIsIGlmIG5lY2Vzc2FyeS4KICAq LwogWExvZ1JlY1B0cgotbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTm9kZSBybm9kZSwgQnVm ZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAorbG9nX2hlYXBfdmlzaWJsZShS ZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKIAkJ CQkgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLCB1aW50OCB2bWZsYWdzKQogewogCXhsX2hl YXBfdmlzaWJsZSB4bHJlYzsKQEAgLTc5ODEsNiArNzk4Miw3IEBAIGxvZ19oZWFwX3Zpc2li bGUoUmVsRmlsZU5vZGUgcm5vZGUsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1 ZmZlciwKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwogCUFzc2VydChC dWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwogCisJeGxyZWMub25DYXRhbG9nVGFibGUgPSBS ZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJeGxyZWMuY3V0 b2ZmX3hpZCA9IGN1dG9mZl94aWQ7CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwogCVhMb2dC ZWdpbkluc2VydCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAx NWNhMWIzMDRhLi4wNTkwYjcwNTNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMzIzLDYgKzMyMyw3IEBAIGhlYXBfcGFnZV9wcnVuZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCXhscmVjLmxhdGVzdFJlbW92ZWRYaWQgPSBwcnN0 YXRlLmxhdGVzdFJlbW92ZWRYaWQ7CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3RhdGUu bnJlZGlyZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CisJCQl4bHJl Yy5vbkNhdGFsb2dUYWJsZSA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rp bmcocmVsYXRpb24pOwogCiAJCQlYTG9nQmVnaW5JbnNlcnQoKTsKIAkJCVhMb2dSZWdpc3Rl ckRhdGEoKGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IGUxOThkZjY1ZDguLjZlODlhMDhj NTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTI4 Miw3ICsyODIsNyBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0 ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9ub2RlLCBoZWFwQnVmLCB2bUJ1ZiwKKwkJ CQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsCiAJCQkJ CQkJCQkJICBjdXRvZmZfeGlkLCBmbGFncyk7CiAKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHBhZ2UuYwppbmRleCBlYmVjOGZhNWI4Li4yZDI3YTNmOTc0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1 ZGUgInV0aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CiAKIHN0YXRpYyBCVE1ldGFQYWdlRGF0YSAqX2J0X2dldG1ldGEoUmVsYXRpb24gcmVsLCBC dWZmZXIgbWV0YWJ1Zik7CiBzdGF0aWMgdm9pZCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBibGtubywKQEAgLTQzLDcgKzQ0LDggQEAgc3RhdGljIHZv aWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8s CiBzdGF0aWMgdm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwKIAkJCQkJCQkJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAogCQkJCQkJ CQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCQkJCUJU VmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSk7CisJCQkJCQkJCUJU VmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBpbnQgbnVwZGF0YWJsZSwKKwkJCQkJCQkJUmVs YXRpb24gaGVhcFJlbCk7CiBzdGF0aWMgY2hhciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZh Y3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZz ZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAogCQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1Zmxl biwgYm9vbCBuZWVkc3dhbCk7CkBAIC04MzYsNiArODM4LDcgQEAgX2J0X2xvZ19yZXVzZV9w YWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklk IHNhZmV4aWQpCiAJICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uub25D YXRhbG9nVGFibGUgPSBnZXRfcmVsX2xvZ2ljYWxfY2F0YWxvZyhyZWwtPnJkX2luZGV4LT5p bmRyZWxpZCk7CiAJeGxyZWNfcmV1c2Uubm9kZSA9IHJlbC0+cmRfbm9kZTsKIAl4bHJlY19y ZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVjX3JldXNlLmxhdGVzdFJlbW92ZWRGdWxsWGlk ID0gc2FmZXhpZDsKQEAgLTEyOTYsNyArMTI5OSw4IEBAIF9idF9kZWxpdGVtc192YWN1dW0o UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogc3RhdGljIHZvaWQKIF9idF9kZWxpdGVtc19k ZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBUcmFuc2FjdGlvbklkIGxhdGVzdFJl bW92ZWRYaWQsCiAJCQkJCU9mZnNldE51bWJlciAqZGVsZXRhYmxlLCBpbnQgbmRlbGV0YWJs ZSwKLQkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlKQor CQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFibGUsCisJCQkJ CVJlbGF0aW9uIGhlYXBSZWwpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm KTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMTM1OCw2ICsxMzYyLDggQEAgX2J0X2Rl bGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFRyYW5zYWN0aW9uSWQg bGF0ZXN0UmVtb3ZlZFhpZCwKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAJCXhsX2J0cmVlX2Rl bGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRlLm9uQ2F0YWxvZ1RhYmxlID0K KwkJCVJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcFJlbCk7CiAJ CXhscmVjX2RlbGV0ZS5sYXRlc3RSZW1vdmVkWGlkID0gbGF0ZXN0UmVtb3ZlZFhpZDsKIAkJ eGxyZWNfZGVsZXRlLm5kZWxldGVkID0gbmRlbGV0YWJsZTsKIAkJeGxyZWNfZGVsZXRlLm51 cGRhdGVkID0gbnVwZGF0YWJsZTsKQEAgLTE2ODUsNyArMTY5MSw3IEBAIF9idF9kZWxpdGVt c19kZWxldGVfY2hlY2soUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBoZWFw UmVsLAogCiAJLyogUGh5c2ljYWxseSBkZWxldGUgdHVwbGVzIChvciBUSURzKSB1c2luZyBk ZWxldGFibGUgKG9yIHVwZGF0YWJsZSkgKi8KIAlfYnRfZGVsaXRlbXNfZGVsZXRlKHJlbCwg YnVmLCBsYXRlc3RSZW1vdmVkWGlkLCBkZWxldGFibGUsIG5kZWxldGFibGUsCi0JCQkJCQl1 cGRhdGFibGUsIG51cGRhdGFibGUpOworCQkJCQkJdXBkYXRhYmxlLCBudXBkYXRhYmxlLCBo ZWFwUmVsKTsKIAogCS8qIGJlIHRpZHkgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51cGRh dGFibGU7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4 IDc2ZmIwMzc0YzQuLjMxODY4ODVkMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9z cGd2YWN1dW0uYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhm c20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyogRW50cnkgaW4g cGVuZGluZy1saXN0IG9mIFRJRHMgd2UgbmVlZCB0byByZXZpc2l0ICovCkBAIC01MDMsNiAr NTA0LDEzIEBAIHZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgs IEJ1ZmZlciBidWZmZXIpCiAJc3BneGxvZ1ZhY3V1bVJlZGlyZWN0IHhscmVjOwogCUdsb2Jh bFZpc1N0YXRlICp2aXN0ZXN0OwogCisJLyoKKwkgKiBUaGVyZSBpcyBubyBjaGFuY2Ugb2Yg ZW5kbGVzcyByZWN1cnNpb24gZXZlbiB3aGVuIHdlIGFyZSBkb2luZyBjYXRhbG9nCisJICog YWNjZXNlcyBoZXJlOyBiZWNhdXNlLCBzcGdpc3QgaXMgbmV2ZXIgdXNlZCBmb3IgY2F0YWxv Z3MuIENoZWNrCisJICogY29tbWVudHMgaW4gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2lj YWxEZWNvZGluZygpLgorCSAqLworCXhscmVjLm9uQ2F0YWxvZ1RhYmxlID0gZ2V0X3JlbF9s b2dpY2FsX2NhdGFsb2coaW5kZXgtPnJkX2luZGV4LT5pbmRyZWxpZCk7CisKIAl4bHJlYy5u VG9QbGFjZWhvbGRlciA9IDA7CiAJeGxyZWMubmV3ZXN0UmVkaXJlY3RYaWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRl eCA2YmJhNWY4ZWM0Li4yOGIxZjk2MWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oYXNoLmgiCiAj aW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9uYnRy ZWUuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJib290c3RyYXAv Ym9vdHN0cmFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2FtLmgiCkBAIC0yMDYyLDYgKzIwNjMsMjAgQEAgZ2V0X3JlbF9wZXJz aXN0ZW5jZShPaWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbAorZ2V0X3Jl bF9sb2dpY2FsX2NhdGFsb2coT2lkIHJlbGlkKQoreworCWJvb2wJcmVzOworCVJlbGF0aW9u IHJlbDsKKworCS8qIGFzc3VtZSBwcmV2aW91c2x5IGxvY2tlZCAqLworCXJlbCA9IHRhYmxl X29wZW4ocmVsaWQsIE5vTG9jayk7CisJcmVzID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxv Z2ljYWxEZWNvZGluZyhyZWwpOworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCXJl dHVybiByZXM7Cit9CisKIAogLyoJCQkJLS0tLS0tLS0tLSBUUkFOU0ZPUk0gQ0FDSEUgLS0t LS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dF9wcml2YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKaW5kZXgg NTUzZDM2NGUyZC4uYTBmNDAxNTU1NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3RfcHJpdmF0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUu aApAQCAtNDQwLDggKzQ0MCw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nUGFnZURl bGV0ZShCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJIEZ1bGxUcmFuc2FjdGlvbklkIHhpZCwg QnVmZmVyIHBhcmVudEJ1ZmZlciwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgZG93bmxpbmtP ZmZzZXQpOwogCi1leHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGJsa25vLAotCQkJCQkJCSAgRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0 UmVtb3ZlZFhpZCk7CitleHRlcm4gdm9pZCBnaXN0WExvZ1BhZ2VSZXVzZShSZWxhdGlvbiBo ZWFwUmVsLCBSZWxhdGlvbiByZWwsCisJCQkJICBCbG9ja051bWJlciBibGtubywgRnVsbFRy YW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIGV4dGVybiBYTG9nUmVjUHRyIGdp c3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIgKnRv ZGVsZXRlLCBpbnQgbnRvZGVsZXRlLApAQCAtNDg1LDcgKzQ4NSw3IEBAIGV4dGVybiBib29s IGdpc3Rwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gYm9vbCBn aXN0Zml0cGFnZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBleHRlcm4gYm9vbCBn aXN0bm9zcGFjZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuLCBPZmZz ZXROdW1iZXIgdG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVybiB2b2lkIGdpc3Rj aGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVybiBCdWZmZXIgZ2lz dE5ld0J1ZmZlcihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZlcihS ZWxhdGlvbiBoZWFwUmVsLCBSZWxhdGlvbiByKTsKIGV4dGVybiBib29sIGdpc3RQYWdlUmVj eWNsYWJsZShQYWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxidWZmZXIoUGFnZSBw YWdlLCBJbmRleFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAgT2Zmc2V0TnVtYmVy IG9mZik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IGZkNTE0NGYyNTguLjczOTk5ZGRj NzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCkBAIC00OSw5ICs0OSw5IEBAIHR5cGVkZWYg c3RydWN0IGdpc3R4bG9nUGFnZVVwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCBnaXN0eGxv Z0RlbGV0ZQogeworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgbGF0 ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW50b2RlbGV0ZTsJCS8qIG51bWJlciBvZiBkZWxl dGVkIG9mZnNldHMgKi8KLQogCS8qCiAJICogSW4gcGF5bG9hZCBvZiBibGsgMCA6IHRvZGVs ZXRlIE9mZnNldE51bWJlcnMKIAkgKi8KQEAgLTk3LDYgKzk3LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgZ2lzdHhsb2dQYWdlRGVsZXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFn ZVJldXNlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFibGU7CiAJUmVsRmlsZU5vZGUgbm9kZTsK IAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk RnVsbFhpZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaAppbmRleCA0MzUzYTMyZGJiLi45NGMz MjkyYzFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCkBAIC0yNTAsNiArMjUwLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF9pbml0X2JpdG1hcF9wYWdlCiAgKi8KIHR5cGVkZWYg c3RydWN0IHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlCiB7CisJYm9vbAkJb25DYXRhbG9nVGFi bGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCWludAkJCW50dXBsZXM7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMjdkYjQ4MTg0ZS4uZWJhNDhi MGFlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0Miw2ICsyNDIsNyBA QCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0eXBlZGVmIHN0cnVjdCB4 bF9oZWFwX3BydW5lCiB7CisJYm9vbCAgICAgIG9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0 aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAl1aW50MTYJCW5yZWRpcmVjdGVkOwogCXVpbnQx NgkJbmRlYWQ7CkBAIC0zMzgsNiArMzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9m cmVlemVfdHVwbGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQog eworCWJvb2wJCW9uQ2F0YWxvZ1RhYmxlOwogCVRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZDsK IAl1aW50MTYJCW50dXBsZXM7CiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CkBAIC0zNTIsNiAr MzU0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKIHsKKwlib29sCQlvbkNhdGFsb2dUYWJsZTsK IAlUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQ7CiAJdWludDgJCWZsYWdzOwogfSB4bF9oZWFw X3Zpc2libGU7CkBAIC00MTMsNyArNDE2LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF9wcmVwYXJl X2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVIZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgIGJvb2wg KnRvdGFsbHlfZnJvemVuKTsKIGV4dGVybiB2b2lkIGhlYXBfZXhlY3V0ZV9mcmVlemVfdHVw bGUoSGVhcFR1cGxlSGVhZGVyIHR1cGxlLAogCQkJCQkJCQkJICB4bF9oZWFwX2ZyZWV6ZV90 dXBsZSAqeGxyZWNfdHApOwotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShS ZWxGaWxlTm9kZSBybm9kZSwgQnVmZmVyIGhlYXBfYnVmZmVyLAorZXh0ZXJuIFhMb2dSZWNQ dHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwK IAkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlk LCB1aW50OCBmbGFncyk7CiAKICNlbmRpZgkJCQkJCQkvKiBIRUFQQU1fWExPR19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL25idHhsb2cuaAppbmRleCAwZjc3MzE4NTZiLi5iMTVhYTQ3ZjFiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnR4bG9nLmgKQEAgLTE4NSw2ICsxODUsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9i dHJlZV9kZWR1cAogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdlCiB7 CisJYm9vbCAgICAgICAgb25DYXRhbG9nVGFibGU7CiAJUmVsRmlsZU5vZGUgbm9kZTsKIAlC bG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkRnVs bFhpZDsKQEAgLTIzMiw2ICsyMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV92YWN1 dW0KIAogdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiB7CisJYm9vbAkJb25DYXRh bG9nVGFibGU7CiAJVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkOwogCXVpbnQxNgkJ bmRlbGV0ZWQ7CiAJdWludDE2CQludXBkYXRlZDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9zcGd4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmluZGV4 IDY5NDA1YjU3NTAuLjA2YjkxZjRkMDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAtMjM3 LDYgKzIzNyw3IEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1Sb290CiAKIHR5cGVk ZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogeworCWJvb2wJCW9uQ2F0YWxvZ1Rh YmxlOwogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51bWJlciBvZiByZWRpcmVjdHMg dG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1iZXIgZmlyc3RQbGFjZWhvbGRl cjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVtb3ZlICovCiAJVHJhbnNhY3Rp b25JZCBuZXdlc3RSZWRpcmVjdFhpZDsJLyogbmV3ZXN0IFhJRCBvZiByZW1vdmVkIHJlZGly ZWN0cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA3Nzg3MWFhZWZjLi5lMmE1ZWZl ZDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4dGVy biBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3Jl bF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxl c3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lk IHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxfbG9naWNhbF9jYXRhbG9nKE9pZCByZWxp ZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBs YW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90b3Nx bChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBib29s IGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggNzc0YWM1YjJi MS4uN2MwMTYwMDNhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL3JlbGZpbGVub2RlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRh bG9nLmgiCiAKIAogLyoKQEAgLTM1Nyw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBTdGRS ZE9wdGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRhbG9nVGFibGUKICAqCQlSZXR1cm5z IHdoZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgY2F0YWxvZyB0 YWJsZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2FsIGRlY29kaW5nLiAgTm90ZSBtdWx0 aXBsZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMgZGVmaW5pdGlvbiBzaG91bGQgbm90 IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFsb2cKKyAqCQlhY2Nlc3M7IG90 aGVyd2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLiBDaGVjayB0aGUgY29t bWVudHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKCkg Zm9yIGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJs ZShyZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9vcHRpb25zICYmIFwKQEAgLTYzNCw2 ICs2MzgsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVmlld09wdGlvbnMKICAqIFJlbGF0aW9uSXNB Y2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcKICAqCQlUcnVlIGlmIHdlIG5lZWQgdG8gbG9n IGVub3VnaCBpbmZvcm1hdGlvbiB0byBoYXZlIGFjY2VzcyB2aWEKICAqCQlkZWNvZGluZyBz bmFwc2hvdC4KKyAqCQlUaGlzIGRlZmluaXRpb24gc2hvdWxkIG5vdCBpbnZva2UgYW55dGhp bmcgdGhhdCBwZXJmb3JtcyBjYXRhbG9nCisgKgkJYWNjZXNzLiBPdGhlcndpc2UsIGUuZy4g bG9nZ2luZyBhIFdBTCBlbnRyeSBmb3IgY2F0YWxvZyByZWxhdGlvbiBtYXkKKyAqCQlpbnZv a2UgdGhpcyBmdW5jdGlvbiwgd2hpY2ggd2lsbCBpbiB0dXJuIGRvIGNhdGFsb2cgYWNjZXNz LCB3aGljaCBtYXkKKyAqCQlpbiB0dXJuIGNhdXNlIGFub3RoZXIgc2ltaWxhciBXQUwgZW50 cnkgdG8gYmUgbG9nZ2VkLCBsZWFkaW5nIHRvCisgKgkJaW5maW5pdGUgcmVjdXJzaW9uLgog ICovCiAjZGVmaW5lIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVs YXRpb24pIFwKIAkoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkgJiYgXAotLSAKMi4xOC40Cgo= --------------75EF1C85D54B8D5C1916957E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v18-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v18-0002-Handle-logical-slot-conflicts-on-standby.patch" RnJvbSA4ODhjNWY5NzA3YzJhMjYwOTY5NjNkYjc4NTZlNWYwOGVkZGFjNTk1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdCA8YmRyb3V2b3RAZ21haWwuY29tPgpE YXRlOiBTdW4sIDEzIEp1biAyMDIxIDE3OjA5OjMxICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 MTggMi81XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoKRHVy aW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlkZW50 aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGluZyBp ZiB3YWxfbGV2ZWwgb24gbWFzdGVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBhbmQg dGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9kdWNl IGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVjb3Zl cnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZ2V0X2FjdGl2aXR5IGZpZWxkOgpjb25m bF9sb2dpY2Fsc2xvdC4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIgdmVy c2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBC ZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8g ZGUgUm95ZXMgTWVsbG8KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAg ICAgfCAgMTAgKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgICB8ICAg NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMgIHwgICAzICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgfCAgMTAgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jICB8ICAgNCArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL3NwZ2lzdC9zcGd4bG9nLmMgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYyAgICB8ICAxMyArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsIHwgICAzICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jICAgICAg fCAgMjAgKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgfCAyMDkg KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyAgfCAgIDggKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5 LmMgIHwgICA0ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyB8ICAg MyArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgfCAgMTEgKy0KIHNy Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICB8ICAyMiArKysKIHNyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICB8ICAxNiArKwogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAg ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg ICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oICAgICAgICB8ICAgNCArLQog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgIHwgICAzICstCiAyMiBmaWxl cyBjaGFuZ2VkLCAzNDYgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiAgIDQuMiUg c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvCiAgIDQuOCUgc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vCiAgIDUuMyUgc3JjL2JhY2tlbmQvYWNjZXNzLwogICA0LjQlIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvCiAgNTQuMiUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDUuOCUg c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvCiAgIDcuMyUgc3JjL2JhY2tlbmQvdGNvcC8KICAg My43JSBzcmMvYmFja2VuZC8KICAgNi41JSBzcmMvaW5jbHVkZS8KCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbAppbmRleCBkY2JiMTBmYjZmLi5lOWUxZWZhMWI4IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKQEAgLTQwMjksNiArNDAyOSwxNiBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUs IHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQog ICAgICAgIGRlYWRsb2NrcwogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5j b25mbF9sb2dpY2Fsc2xvdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBxdWVyaWVzIGlu IHRoaXMgZGF0YWJhc2UgdGhhdCBoYXZlIGJlZW4gY2FuY2VsZWQgZHVlIHRvCisgICAgICAg bG9naWNhbCBzbG90cworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAg IDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jCmluZGV4IDQ2YWVlNmYyYTkuLjU5NjNlNjM5ZDggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk1LDcgKzE5NSw4IEBAIGdpc3RSZWRvRGVs ZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCVhMb2dSZWNHZXRCbG9j a1RhZyhyZWNvcmQsIDAsICZybm9kZSwgTlVMTCwgTlVMTCk7CiAKLQkJUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5sYXRlc3RSZW1vdmVkWGlkLCBybm9k ZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bGF0 ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxkYXRhLT5vbkNhdGFsb2dUYWJsZSwgcm5v ZGUpOwogCX0KIAogCWlmIChYTG9nUmVhZEJ1ZmZlckZvclJlZG8ocmVjb3JkLCAwLCAmYnVm ZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKQEAgLTM5NSw2ICszOTYsNyBAQCBnaXN0UmVkb1Bh Z2VSZXVzZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFu ZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoeGxy ZWMtPmxhdGVzdFJlbW92ZWRGdWxsWGlkLAorCQkJCQkJCQkJCQkJICAgeGxyZWMtPm9uQ2F0 YWxvZ1RhYmxlLAogCQkJCQkJCQkJCQkJICAgeGxyZWMtPm5vZGUpOwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCmluZGV4IGFmMzVhOTkxZmMuLmY5MWQ0YzM2ZTIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC0xMDAyLDcgKzEwMDIs OCBAQCBoYXNoX3hsb2dfdmFjdXVtX29uZV9wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCQlSZWxGaWxlTm9kZSBybm9kZTsKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3Jk LCAwLCAmcm5vZGUsIE5VTEwsIE5VTEwpOwotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdCh4bGRhdGEtPmxhdGVzdFJlbW92ZWRYaWQsIHJub2RlKTsKKwkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5sYXRlc3RSZW1vdmVkWGlk LAorCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1RhYmxlLCBybm9kZSk7CiAJfQogCiAJ YWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAwLCBSQk1f Tk9STUFMLCB0cnVlLCAmYnVmZmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5k ZXggNDAxOWEyMTIyZS4uNzVjYTVmNzlmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKQEAgLTg0MTksNyArODQxOSw4IEBAIGhlYXBfeGxvZ19wcnVuZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkgKiBubyBxdWVyaWVzIHJ1bm5pbmcgZm9yIHdoaWNoIHRoZSByZW1v dmVkIHR1cGxlcyBhcmUgc3RpbGwgdmlzaWJsZS4KIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5 KQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0 UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0 YWxvZ1RhYmxlLCBybm9kZSk7CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYSBmdWxsLXBhZ2Ug aW1hZ2UsIHJlc3RvcmUgaXQgKHVzaW5nIGEgY2xlYW51cCBsb2NrKSBhbmQKQEAgLTg1ODcs NyArODU4OCw5IEBAIGhlYXBfeGxvZ192aXNpYmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCSAqIHJhdGhlciB0aGFuIGtpbGxpbmcgdGhlIHRyYW5zYWN0aW9uIG91dHJpZ2h0Lgog CSAqLwogCWlmIChJbkhvdFN0YW5kYnkpCi0JCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLCBybm9kZSk7CisJCVJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KHhscmVjLT5jdXRvZmZfeGlkLAorCQkJCQkJCQkJCQl4 bHJlYy0+b25DYXRhbG9nVGFibGUsCisJCQkJCQkJCQkJCXJub2RlKTsKIAogCS8qCiAJICog UmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBoZWFwIGZp bGUgaGFzIGRyb3BwZWQgb3IKQEAgLTg3MjQsNyArODcyNyw4IEBAIGhlYXBfeGxvZ19mcmVl emVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJVHJhbnNhY3Rpb25JZFJldHJl YXQobGF0ZXN0UmVtb3ZlZFhpZCk7CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwg MCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo U25hcHNob3QobGF0ZXN0UmVtb3ZlZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdChsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJCQl4bHJl Yy0+b25DYXRhbG9nVGFibGUsIHJub2RlKTsKIAl9CiAKIAlpZiAoWExvZ1JlYWRCdWZmZXJG b3JSZWRvKHJlY29yZCwgMCwgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IGMyZTkyMGYxNTkuLjAwNGU4YjdkZDgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNyArNjY5LDgg QEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExv Z1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJub2RlLCBOVUxMLCBOVUxMKTsKIAotCQlS ZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+bGF0ZXN0UmVtb3Zl ZFhpZCwgcm5vZGUpOworCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4 bHJlYy0+bGF0ZXN0UmVtb3ZlZFhpZCwKKwkJCQkJCQkJCQkJeGxyZWMtPm9uQ2F0YWxvZ1Rh YmxlLCBybm9kZSk7CiAJfQogCiAJLyoKQEAgLTEwMDcsNiArMTAwOCw3IEBAIGJ0cmVlX3hs b2dfcmV1c2VfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCWlmIChJbkhvdFN0 YW5kYnkpCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZCh4 bHJlYy0+bGF0ZXN0UmVtb3ZlZEZ1bGxYaWQsCisJCQkJCQkJCQkJCQkgICB4bHJlYy0+b25D YXRhbG9nVGFibGUsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bm9kZSk7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxvZy5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKaW5kZXggM2RmZDJhYTMxNy4uYWRkNGRhNGU3 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMKQEAgLTg4MSw2ICs4ODEs NyBAQCBzcGdSZWRvVmFjdXVtUmVkaXJlY3QoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAK IAkJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZub2RlLCBOVUxMLCBOVUxMKTsK IAkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+bmV3ZXN0 UmVkaXJlY3RYaWQsCisJCQkJCQkJCQkJCQl4bGRhdGEtPm9uQ2F0YWxvZ1RhYmxlLAogCQkJ CQkJCQkJCQkJbm9kZSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK aW5kZXggMTdlZWZmMDcyMC4uNDY5ZTI2ZDkzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwpAQCAtMTAzNjAsNiArMTAzNjAsMTkgQEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFtZXRlcnMg aW4gcGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0YShyZWNv cmQpLCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAqIEludmFs aWRhdGUgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBw cmltYXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3Ig bG9naWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlh bGx5IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcK KwkJICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRo YXQgY2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlv biBvZiBsb2dpY2FsIHNsb3RzIG9yIGludmFsaWRhdGVkIGV4aXN0aW5nCisJCSAqIG9uZXMu CisJCSAqLworCQlpZiAoSW5SZWNvdmVyeSAmJiBJbkhvdFN0YW5kYnkgJiYKKwkJCXhscmVj LndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMICYmCisJCQl3YWxfbGV2ZWwgPj0gV0FM X0xFVkVMX0xPR0lDQUwpCisJCQlJbnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGlj YXRpb25TbG90cyhJbnZhbGlkT2lkLEludmFsaWRUcmFuc2FjdGlvbklkKTsKKwogCQlMV0xv Y2tBY3F1aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhDTFVTSVZFKTsKIAkJQ29udHJvbEZp bGUtPk1heENvbm5lY3Rpb25zID0geGxyZWMuTWF4Q29ubmVjdGlvbnM7CiAJCUNvbnRyb2xG aWxlLT5tYXhfd29ya2VyX3Byb2Nlc3NlcyA9IHhscmVjLm1heF93b3JrZXJfcHJvY2Vzc2Vz OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDk5OWQ5ODQwNjgu LmU0Yjc4MzBhMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3Zp ZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAg LTEwMjAsNyArMTAyMCw4IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxp Y3RzIEFTCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2NrKEQub2lk KSBBUyBjb25mbF9sb2NrLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf c25hcHNob3QoRC5vaWQpIEFTIGNvbmZsX3NuYXBzaG90LAogICAgICAgICAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKEQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4s Ci0gICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2Nr KEQub2lkKSBBUyBjb25mbF9kZWFkbG9jaworICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMgY29uZmxfZGVhZGxvY2ssCisg ICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdChELm9pZCkg QVMgY29uZmxfbG9naWNhbHNsb3QKICAgICBGUk9NIHBnX2RhdGFiYXNlIEQ7CiAKIENSRUFU RSBWSUVXIHBnX3N0YXRfdXNlcl9mdW5jdGlvbnMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3Rh dC5jCmluZGV4IGIwZDA3YzBlMGIuLjM4ZmE1ZjQ4MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w Z3N0YXQuYwpAQCAtMTg2Myw2ICsxODYzLDIyIEBAIHBnc3RhdF9yZXBvcnRfcmVwbHNsb3Rf ZHJvcChjb25zdCBjaGFyICpzbG90bmFtZSkKIAlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2Yo UGdTdGF0X01zZ1JlcGxTbG90KSk7CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9y ZXBvcnRfcmVwbHNsb3RfY29uZmxpY3QoKQorICogVGVsbCB0aGUgY29sbGVjdG9yIGFib3V0 IGEgbG9naWNhbCBzbG90IGJlaW5nIGNvbmZsaWN0aW5nCisgKiB3aXRoIHJlY292ZXJ5Lgor ICogLS0tLS0tLS0tLQorICovCit2b2lkCitwZ3N0YXRfcmVwb3J0X3JlcGxzbG90X2NvbmZs aWN0KE9pZCBkYm9pZCkKK3sKKwlQZ1N0YXRfTXNnUmVjb3ZlcnlDb25mbGljdCBtc2c7CisJ cGdzdGF0X3NldGhlYWRlcigmbXNnLm1faGRyLCBQR1NUQVRfTVRZUEVfUkVDT1ZFUllDT05G TElDVCk7CisJbXNnLm1fZGF0YWJhc2VpZCA9IGRib2lkOworCW1zZy5tX3JlYXNvbiA9IFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q7CisJcGdzdGF0X3NlbmQoJm1z Zywgc2l6ZW9mKG1zZykpOworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBwZ3N0YXRfcGluZygp IC0KICAqCkBAIC0zNDg5LDYgKzM1MDUsNyBAQCByZXNldF9kYmVudHJ5X2NvdW50ZXJzKFBn U3RhdF9TdGF0REJFbnRyeSAqZGJlbnRyeSkKIAlkYmVudHJ5LT5uX2NvbmZsaWN0X3RhYmxl c3BhY2UgPSAwOwogCWRiZW50cnktPm5fY29uZmxpY3RfbG9jayA9IDA7CiAJZGJlbnRyeS0+ bl9jb25mbGljdF9zbmFwc2hvdCA9IDA7CisJZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fs c2xvdCA9IDA7CiAJZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4gPSAwOwogCWRiZW50 cnktPm5fY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayA9IDA7CiAJZGJlbnRyeS0+bl90ZW1w X2ZpbGVzID0gMDsKQEAgLTU0MjUsNiArNTQ0Miw5IEBAIHBnc3RhdF9yZWN2X3JlY292ZXJ5 Y29uZmxpY3QoUGdTdGF0X01zZ1JlY292ZXJ5Q29uZmxpY3QgKm1zZywgaW50IGxlbikKIAkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZGJlbnRyeS0+ bl9jb25mbGljdF9zbmFwc2hvdCsrOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWRiZW50cnktPm5fY29uZmxpY3RfbG9n aWNhbHNsb3QrKzsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfQlVGRkVSUElOOgogCQkJZGJlbnRyeS0+bl9jb25mbGljdF9idWZmZXJwaW4rKzsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IGE5YTA2YjlhMzguLmFmYTY1 YTIxZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTEzMTUsNiArMTMxNSwyMTUg QEAgcmVzdGFydDoKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2Nr KTsKIH0KIAorLyoKKyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZUNvbmZsaWN0aW5nTG9naWNh bFJlcGxpY2F0aW9uU2xvdCAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAorICogYW5kIG1h cmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqCisgKiBSZXR1 cm5zIHdoZXRoZXIgUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgd2FzIHJlbGVhc2VkIGlu IHRoZSBpbnRlcmltIChhbmQKKyAqIGluIHRoYXQgY2FzZSB3ZSdyZSBub3QgaG9sZGluZyB0 aGUgbG9jayBhdCByZXR1cm4sIG90aGVyd2lzZSB3ZSBhcmUpLgorICoKKyAqIFRoaXMgaXMg aW5oZXJlbnRseSByYWN5LCBiZWNhdXNlIHdlIHJlbGVhc2UgdGhlIExXTG9jaworICogZm9y IHN5c2NhbGxzLCBzbyBjYWxsZXIgbXVzdCByZXN0YXJ0IGlmIHdlIHJldHVybiB0cnVlLgor ICovCitzdGF0aWMgYm9vbAorSW52YWxpZGF0ZVBvc3NpYmx5Q29uZmxpY3RpbmdMb2dpY2Fs UmVwbGljYXRpb25TbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgVHJhbnNhY3Rpb25JZCB4aWQp Cit7CisJaW50CQlsYXN0X3NpZ25hbGVkX3BpZCA9IDA7CisJYm9vbAlyZWxlYXNlZF9sb2Nr ID0gZmFsc2U7CisKKwlmb3IgKDs7KQorCXsKKwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47 CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisJCU5hbWVEYXRhCXNsb3Ru YW1lOworCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKKworCQlBc3NlcnQoTFdMb2NrSGVsZEJ5 TWVJbk1vZGUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOworCisJ CWlmICghcy0+aW5fdXNlKQorCQl7CisJCQlpZiAocmVsZWFzZWRfbG9jaykKKwkJCQlMV0xv Y2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCWJyZWFrOworCQl9 CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0 ZWQuIElmIGl0IG5lZWRzIHRvIGJlCisJCSAqIGludmFsaWRhdGVkLCBhbmQgaXMgbm90IGN1 cnJlbnRseSBhY3F1aXJlZCwgYWNxdWlyZSBpdCBhbmQgbWFyayBpdAorCQkgKiBhcyBoYXZp bmcgYmVlbiBpbnZhbGlkYXRlZC4gV2UgZG8gdGhpcyB3aXRoIHRoZSBzcGlubG9jayBoZWxk IHRvCisJCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhhbXBsZSB0aGUgeG1p bihzKSBjb3VsZCBtb3ZlIGZvcndhcmQKKwkJICogLCBvciB0aGUgc2xvdCBjb3VsZCBiZSBk cm9wcGVkLgorCQkgKi8KKwkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CisKKwkJc2xv dF94bWluID0gcy0+ZGF0YS54bWluOworCQlzbG90X2NhdGFsb2dfeG1pbiA9IHMtPmRhdGEu Y2F0YWxvZ194bWluOworCisJCS8qCisJCSAqIElmIHRoZSBzbG90IGlzIGFscmVhZHkgaW52 YWxpZCBvciBpcyBub3QgY29uZmxpY3RpbmcsIHdlIGRvbid0IG5lZWQgdG8KKwkJICogZG8g YW55dGhpbmcuCisJCSAqLworCisJCS8qIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgKi8K KwkJaWYgKCghVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWluKSAmJiAhVHJhbnNhY3Rp b25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3htaW4pKQorCQkJfHwKKwkJLyoKKwkJICogd2Ug YXJlIG5vdCBmb3JjaW5nIGZvciBpbnZhbGlkYXRpb24gYmVjYXVzZSB0aGUgeGlkIGlzIHZh bGlkCisJCSAqIGFuZCB0aGlzIGlzIGEgbm9uIGNvbmZsaWN0aW5nIHNsb3QKKwkJICovCisJ CQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiAhKAorCQkJCShUcmFuc2FjdGlvbklk SXNWYWxpZChzbG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNs b3RfeG1pbiwgeGlkKSkKKwkJCQl8fAorCQkJCShUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90 X2NhdGFsb2dfeG1pbikgJiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF9j YXRhbG9nX3htaW4sIHhpZCkpCisJCQkJKSkKKwkJCSkKKwkJeworCQkJU3BpbkxvY2tSZWxl YXNlKCZzLT5tdXRleCk7CisJCQlpZiAocmVsZWFzZWRfbG9jaykKKwkJCQlMV0xvY2tSZWxl YXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCWJyZWFrOworCQl9CisKKwkJ c2xvdG5hbWUgPSBzLT5kYXRhLm5hbWU7CisJCWFjdGl2ZV9waWQgPSBzLT5hY3RpdmVfcGlk OworCisJCS8qCisJCSAqIElmIHRoZSBzbG90IGNhbiBiZSBhY3F1aXJlZCwgZG8gc28gYW5k IG1hcmsgaXQgaW52YWxpZGF0ZWQKKwkJICogaW1tZWRpYXRlbHkuICBPdGhlcndpc2Ugd2Un bGwgc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcywgYmVsb3csIGFuZAorCQkgKiByZXRyeS4K KwkJICovCisJCWlmIChhY3RpdmVfcGlkID09IDApCisJCXsKKwkJCU15UmVwbGljYXRpb25T bG90ID0gczsKKwkJCXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CisJCQlzLT5kYXRhLnht aW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCX0KKworCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11 dGV4KTsKKworCQlpZiAoYWN0aXZlX3BpZCAhPSAwKQorCQl7CisJCQkvKgorCQkJICogUHJl cGFyZSB0aGUgc2xlZXAgb24gdGhlIHNsb3QncyBjb25kaXRpb24gdmFyaWFibGUgYmVmb3Jl CisJCQkgKiByZWxlYXNpbmcgdGhlIGxvY2ssIHRvIGNsb3NlIGEgcG9zc2libGUgcmFjZSBj b25kaXRpb24gaWYgdGhlCisJCQkgKiBzbG90IGlzIHJlbGVhc2VkIGJlZm9yZSB0aGUgc2xl ZXAgYmVsb3cuCisJCQkgKi8KKworCQkJQ29uZGl0aW9uVmFyaWFibGVQcmVwYXJlVG9TbGVl cCgmcy0+YWN0aXZlX2N2KTsKKworCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RD b250cm9sTG9jayk7CisJCQlyZWxlYXNlZF9sb2NrID0gdHJ1ZTsKKworCQkJLyoKKwkJCSAq IFNpZ25hbCB0byB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MgdGhhdCBvd25zIHRoZSBzbG90LCBp ZiB3ZQorCQkJICogaGF2ZW4ndCBhbHJlYWR5IHNpZ25hbGxlZCBpdC4gIChBdm9pZGFuY2Ug b2YgcmVwZWF0ZWQKKwkJCSAqIHNpZ25hbGxpbmcgaXMgdGhlIG9ubHkgcmVhc29uIGZvciB0 aGVyZSB0byBiZSBhIGxvb3AgaW4gdGhpcworCQkJICogcm91dGluZTsgb3RoZXJ3aXNlIHdl IGNvdWxkIHJlbHkgb24gY2FsbGVyJ3MgcmVzdGFydCBsb29wLikKKwkJCSAqCisJCQkgKiBU aGVyZSBpcyB0aGUgcmFjZSBjb25kaXRpb24gdGhhdCBvdGhlciBwcm9jZXNzIG1heSBvd24g dGhlIHNsb3QKKwkJCSAqIGFmdGVyIGl0cyBjdXJyZW50IG93bmVyIHByb2Nlc3MgaXMgdGVy bWluYXRlZCBhbmQgYmVmb3JlIHRoaXMKKwkJCSAqIHByb2Nlc3Mgb3ducyBpdC4gVG8gaGFu ZGxlIHRoYXQsIHdlIHNpZ25hbCBvbmx5IGlmIHRoZSBQSUQgb2YKKwkJCSAqIHRoZSBvd25p bmcgcHJvY2VzcyBoYXMgY2hhbmdlZCBmcm9tIHRoZSBwcmV2aW91cyB0aW1lLiAoVGhpcwor CQkJICogbG9naWMgYXNzdW1lcyB0aGF0IHRoZSBzYW1lIFBJRCBpcyBub3QgcmV1c2VkIHZl cnkgcXVpY2tseS4pCisJCQkgKi8KKwkJCWlmIChsYXN0X3NpZ25hbGVkX3BpZCAhPSBhY3Rp dmVfcGlkKQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJKGVycm1zZygidGVybWlu YXRpbmcgcHJvY2VzcyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZs aWN0cyB3aXRoIHJlY292ZXJ5IiwKKwkJCQkJCQkJYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90 bmFtZSkpKSk7CisKKwkJCQkodm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKKwkJ CQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFjdGl2ZV9waWQ7CisJCQl9CisKKwkJCS8qIFdhaXQg dW50aWwgdGhlIHNsb3QgaXMgcmVsZWFzZWQuICovCisJCQlDb25kaXRpb25WYXJpYWJsZVNs ZWVwKCZzLT5hY3RpdmVfY3YsCisJCQkJCQkJCQlXQUlUX0VWRU5UX1JFUExJQ0FUSU9OX1NM T1RfRFJPUCk7CisKKwkJCS8qCisJCQkgKiBSZS1hY3F1aXJlIGxvY2sgYW5kIHN0YXJ0IG92 ZXI7IHdlIGV4cGVjdCB0byBpbnZhbGlkYXRlIHRoZQorCQkJICogc2xvdCBuZXh0IHRpbWUg KHVubGVzcyBhbm90aGVyIHByb2Nlc3MgYWNxdWlyZXMgdGhlIHNsb3QgaW4gdGhlCisJCQkg KiBtZWFudGltZSkuCisJCQkgKi8KKwkJCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90 Q29udHJvbExvY2ssIExXX1NIQVJFRCk7CisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBXZSBob2xkIHRoZSBzbG90IG5vdyBhbmQgaGF2ZSBhbHJlYWR5 IGludmFsaWRhdGVkIGl0OyBmbHVzaCBpdAorCQkJICogdG8gZW5zdXJlIHRoYXQgc3RhdGUg cGVyc2lzdHMuCisJCQkgKgorCQkJICogRG9uJ3Qgd2FudCB0byBob2xkIFJlcGxpY2F0aW9u U2xvdENvbnRyb2xMb2NrIGFjcm9zcyBmaWxlCisJCQkgKiBzeXN0ZW0gb3BlcmF0aW9ucywg c28gcmVsZWFzZSBpdCBub3cgYnV0IGJlIHN1cmUgdG8gdGVsbCBjYWxsZXIKKwkJCSAqIHRv IHJlc3RhcnQgZnJvbSBzY3JhdGNoLgorCQkJICovCisJCQlMV0xvY2tSZWxlYXNlKFJlcGxp Y2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwkJCXJlbGVhc2VkX2xvY2sgPSB0cnVlOworCisJ CQkvKiBNYWtlIHN1cmUgdGhlIGludmFsaWRhdGVkIHN0YXRlIHBlcnNpc3RzIGFjcm9zcyBz ZXJ2ZXIgcmVzdGFydCAqLworCQkJUmVwbGljYXRpb25TbG90TWFya0RpcnR5KCk7CisJCQlS ZXBsaWNhdGlvblNsb3RTYXZlKCk7CisJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNlKCk7CisJ CQlwZ3N0YXRfcmVwb3J0X3JlcGxzbG90X2NvbmZsaWN0KHMtPmRhdGEuZGF0YWJhc2UpOwor CisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIl c1wiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3Ru YW1lKSkpKTsKKworCQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCisJCQli cmVhazsKKwkJfQorCX0KKworCUFzc2VydCghcmVsZWFzZWRfbG9jayA9PSBMV0xvY2tIZWxk QnlNZUluTW9kZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKSk7CisK KwlyZXR1cm4gcmVsZWFzZWRfbG9jazsKK30KKworLyoKKyAqIFJlc29sdmUgcmVjb3Zlcnkg Y29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBXaGVuIHhpZCBpcyB2YWxp ZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIHJvd3Mgb2xkZXIgdGhh biB4aWQuCisgKiBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRoYXQg ZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICogV2hlbiB4aWQgaXMgaW52YWxpZCwg aW52YWxpZGF0ZSBhbGwgbG9naWNhbCBzbG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHRo ZQorICogbWFzdGVyIHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBsaWNhLCBzbyBleGlz dGluZyBsb2dpY2FsIHNsb3RzIG5lZWQgdG8KKyAqIGJlIGludmFsaWRhdGVkLgorICovCit2 b2lkCitJbnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhPaWQg ZGJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCisJQXNzZXJ0KG1heF9yZXBsaWNhdGlv bl9zbG90cyA+PSAwKTsKKworCWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMgPT0gMCkKKwkJ cmV0dXJuOworcmVzdGFydDoKKwlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRy b2xMb2NrLCBMV19TSEFSRUQpOworCWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0 aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNhdGlvblNsb3QgKnMgPSAmUmVwbGljYXRp b25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90c1tpXTsKKworCQlpZiAoIXMtPmluX3VzZSkK KwkJCWNvbnRpbnVlOworCisJCS8qIFdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9naWNh bCogc2xvdCBjb25mbGljdHMuICovCisJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJCWNv bnRpbnVlOworCisJCS8qIG5vdCBvdXIgZGF0YWJhc2UgYW5kIHdlIGRvbid0IHdhbnQgYWxs IHRoZSBkYXRhYmFzZSwgc2tpcCAqLworCQlpZiAoKHMtPmRhdGEuZGF0YWJhc2UgIT0gSW52 YWxpZE9pZCAmJiBzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkKSAmJiBUcmFuc2FjdGlvbklk SXNWYWxpZCh4aWQpKQorCQkJY29udGludWU7CisKKwkJaWYgKEludmFsaWRhdGVQb3NzaWJs eUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdChzLCB4aWQpKQorCQl7CisJCQkv KiBpZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHdlIG5lZWQgdG8gcmVzdGFydCBmcm9tIHNj cmF0Y2ggKi8KKwkJCWdvdG8gcmVzdGFydDsKKwkJfQorCX0KKwlMV0xvY2tSZWxlYXNlKFJl cGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKK30KKwogLyoKICAqIEZsdXNoIGFsbCByZXBs aWNhdGlvbiBzbG90cyB0byBkaXNrLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmMKaW5kZXggMzIyNDUzNjM1Ni4uNTNlNDQwYzJhZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKQEAgLTExMzksNiArMTEzOSwxNCBAQCBTdGFydExvZ2ljYWxS ZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNhdGlvblNs b3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFUcmFuc2FjdGlvbklk SXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkgJiYgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1pbikpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dp Y2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5hbWUpLAor CQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNl IGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAoWExvZ1Jl Y1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmlu ZGV4IDA4NWJkMWU0MDcuLjg4YjFmNWIzZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NhcnJheS5jCkBAIC0zNDAwLDYgKzM0MDAsMTAgQEAgU2lnbmFsVmlydHVhbFRyYW5zYWN0 aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFByb2NTaWduYWxSZWFzb24gc2lnbW9k ZSwKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9jdnhpZCwgKnByb2MpOwogCisJCS8q CisJCSAqIE5vdGU6IHZ4aWQubG9jYWxUcmFuc2FjdGlvbklkIGNhbiBiZSBpbnZhbGlkLCB3 aGljaCBtZWFucyB0aGUKKwkJICogcmVxdWVzdCBpcyB0byBzaWduYWwgdGhlIHBpZCB0aGF0 IGlzIG5vdCBydW5uaW5nIGEgdHJhbnNhY3Rpb24uCisJCSAqLwogCQlpZiAocHJvY3Z4aWQu YmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYmCiAJCQlwcm9jdnhpZC5sb2NhbFRyYW5z YWN0aW9uSWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQpCiAJCXsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBkZWZiNzVhYTI2Li4zMTVkNWExZTMzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC02NzMsNiArNjczLDkg QEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNr UHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKSkKIAkJUmVj b3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9UKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0dJQ0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSykpCiAJCVJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQ X0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3Rh bmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDU1M2I2 ZTU0NjAuLmI2N2U3OWM1NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKQEAg LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgpAQCAtNDQwLDcg KzQ0MSw4IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1 YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKIH0KIAogdm9pZAotUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLCBS ZWxGaWxlTm9kZSBub2RlKQorUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3Qo VHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkWGlkLAorCQkJCQkJCQkJYm9vbCBvbkNhdGFs b2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSkKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAq YmFja2VuZHM7CiAKQEAgLTQ2NSw2ICs0NjcsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIGxhdGVzdFJlbW92ZWRYaWQsIFJlbEZpbGVO b2RlCiAJCQkJCQkJCQkJICAgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwK IAkJCQkJCQkJCQkgICBXQUlUX0VWRU5UX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAog CQkJCQkJCQkJCSAgIHRydWUpOworCisJaWYgKG9uQ2F0YWxvZ1RhYmxlKQorCQlJbnZhbGlk YXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhub2RlLmRiTm9kZSwgbGF0 ZXN0UmVtb3ZlZFhpZCk7CiB9CiAKIC8qCkBAIC00NzMsNyArNDc4LDcgQEAgUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVk WGlkLCBSZWxGaWxlTm9kZQogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZEZ1bGxY aWQsCi0JCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9kZSkKKwkJCQkJCQkJCQkgICBib29s IG9uQ2F0YWxvZ1RhYmxlLCBSZWxGaWxlTm9kZSBub2RlKQogewogCS8qCiAJICogUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3Qgb3BlcmF0ZXMgb24gMzItYml0IFRyYW5z YWN0aW9uSWRzLApAQCAtNDkxLDcgKzQ5Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBsYXRlc3RSZW1vdmVkRnVs bFhpCiAJCVRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZDsKIAogCQlsYXRlc3RSZW1v dmVkWGlkID0gWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKGxhdGVzdFJlbW92ZWRGdWxsWGlk KTsKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QobGF0ZXN0UmVtb3Zl ZFhpZCwgbm9kZSk7CisJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KGxh dGVzdFJlbW92ZWRYaWQsIG9uQ2F0YWxvZ1RhYmxlLCBub2RlKTsKIAl9CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYwppbmRleCA4Y2VhMTBjOTAxLi40NzdjOTZkZjlkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jCkBAIC0yNDY3LDYgKzI0NjcsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxp Y3Qodm9pZCkKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgog CQkJZXJyZGV0YWlsKCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cg dmVyc2lvbnMgdGhhdCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJV c2VyIHdhcyB1c2luZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIp OworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQ X0RFQURMT0NLOgogCQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZm ZXIgZGVhZGxvY2sgd2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzAzNyw2ICsz MDQwLDI1IEBAIFJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24pCiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNh c2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJCS8qCisJCQkJICogRm9yIGNvbmZsaWN0 cyB0aGF0IHJlcXVpcmUgYSBsb2dpY2FsIHNsb3QgdG8gYmUgaW52YWxpZGF0ZWQsIHRoZQor CQkJCSAqIHJlcXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2VpdmVyIHRvIHJlbGVh c2UgdGhlIHNsb3QsCisJCQkJICogc28gdGhhdCBpdCBjb3VsZCBiZSBpbnZhbGlkYXRlZCBi eSB0aGUgc2lnbmFsIHNlbmRlci4gU28gZm9yCisJCQkJICogbm9ybWFsIGJhY2tlbmRzLCB0 aGUgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIGFib3J0ZWQsIGp1c3QKKwkJCQkgKiBsaWtlIGZv ciBvdGhlciByZWNvdmVyeSBjb25mbGljdHMuIEJ1dCBpZiBpdCdzIHdhbHNlbmRlciBvbgor CQkJCSAqIHN0YW5kYnksIHRoZW4gaXQgaGFzIHRvIGJlIGtpbGxlZCBzbyBhcyB0byByZWxl YXNlIGFuCisJCQkJICogYWNxdWlyZWQgbG9naWNhbCBzbG90LgorCQkJCSAqLworCQkJCWlm IChhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyICYmCisJCQkJCXJlYXNvbiA9PSBQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UICYmCisJCQkJCU15UmVwbGljYXRpb25TbG90 ICYmIFNsb3RJc0xvZ2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKQorCQkJCXsKKwkJCQkJUmVj b3ZlcnlDb25mbGljdFBlbmRpbmcgPSB0cnVlOworCQkJCQlRdWVyeUNhbmNlbFBlbmRpbmcg PSB0cnVlOworCQkJCQlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJ CQkJfQogCiAJCQkJLyoKIAkJCQkgKiBJZiB3ZSBhcmVuJ3QgaW4gYSB0cmFuc2FjdGlvbiBh bnkgbG9uZ2VyIHRoZW4gaWdub3JlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3Mu YwppbmRleCAxNDA1NmY1MzQ3Li5lNjRkMjY2NmQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdzdGF0ZnVuY3MuYwpAQCAtMTUwMCw2ICsxNTAwLDIxIEBAIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X3NuYXBzaG90KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0lOVDY0KHJl c3VsdCk7CiB9CiAKK0RhdHVtCitwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xv dChQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCWRiaWQgPSBQR19HRVRBUkdfT0lEKDAp OworCWludDY0CQlyZXN1bHQ7CisJUGdTdGF0X1N0YXREQkVudHJ5ICpkYmVudHJ5OworCisJ aWYgKChkYmVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfZGJlbnRyeShkYmlkKSkgPT0gTlVM TCkKKwkJcmVzdWx0ID0gMDsKKwllbHNlCisJCXJlc3VsdCA9IChpbnQ2NCkgKGRiZW50cnkt Pm5fY29uZmxpY3RfbG9naWNhbHNsb3QpOworCisJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7 Cit9CisKIERhdHVtCiBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oUEdfRlVO Q1RJT05fQVJHUykKIHsKQEAgLTE1NDMsNiArMTU1OCw3IEBAIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2FsbChQR19GVU5DVElPTl9BUkdTKQogCQlyZXN1bHQgPSAoaW50NjQpIChkYmVu dHJ5LT5uX2NvbmZsaWN0X3RhYmxlc3BhY2UgKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZs aWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5uX2NvbmZsaWN0X3NuYXBzaG90ICsKKwkJ CQkJCSAgZGJlbnRyeS0+bl9jb25mbGljdF9sb2dpY2Fsc2xvdCArCiAJCQkJCQkgIGRiZW50 cnktPm5fY29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRyeS0+bl9jb25mbGlj dF9zdGFydHVwX2RlYWRsb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXgg YWNiY2FlNDYwNy4uZmRkMTMwZWJiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBA IC01NDM0LDYgKzU0MzQsMTEgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29u ZmxpY3Rfc25hcHNob3QnLCBwcm92b2xhdGlsZSA9PiAncycsCiAgIHByb3BhcmFsbGVsID0+ ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAogICBw cm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JyB9LAoreyBvaWQg PT4gJzQ1NDQnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3Rz IGluIGRhdGFiYXNlIGNhdXNlZCBieSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnLAorICBw cm9uYW1lID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcsIHByb3Zv bGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRf ZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnIH0sCiB7IG9pZCA9PiAnMzA2OCcsCiAgIGRlc2Ny ID0+ICdzdGF0aXN0aWNzOiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2Vk IGJ5IHNoYXJlZCBidWZmZXIgcGluJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJf Y29uZmxpY3RfYnVmZmVycGluJywgcHJvdm9sYXRpbGUgPT4gJ3MnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCA5NjEy YzBhNmMyLi41MjYyM2I0YmU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAor KysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtNzQzLDYgKzc0Myw3IEBAIHR5cGVkZWYg c3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3Rf dGFibGVzcGFjZTsKIAlQZ1N0YXRfQ291bnRlciBuX2NvbmZsaWN0X2xvY2s7CiAJUGdTdGF0 X0NvdW50ZXIgbl9jb25mbGljdF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291bnRlciBuX2NvbmZs aWN0X2xvZ2ljYWxzbG90OwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3RfYnVmZmVycGlu OwogCVBnU3RhdF9Db3VudGVyIG5fY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsKIAlQZ1N0 YXRfQ291bnRlciBuX3RlbXBfZmlsZXM7CkBAIC0xMDExLDYgKzEwMTIsNyBAQCBleHRlcm4g dm9pZCBwZ3N0YXRfcmVwb3J0X2NoZWNrc3VtX2ZhaWx1cmUodm9pZCk7CiBleHRlcm4gdm9p ZCBwZ3N0YXRfcmVwb3J0X3JlcGxzbG90KGNvbnN0IFBnU3RhdF9TdGF0UmVwbFNsb3RFbnRy eSAqcmVwU2xvdFN0YXQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9yZXBsc2xvdF9j cmVhdGUoY29uc3QgY2hhciAqc2xvdG5hbWUpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9y dF9yZXBsc2xvdF9kcm9wKGNvbnN0IGNoYXIgKnNsb3RuYW1lKTsKK2V4dGVybiB2b2lkIHBn c3RhdF9yZXBvcnRfcmVwbHNsb3RfY29uZmxpY3QoT2lkIGRiT2lkKTsKIAogZXh0ZXJuIHZv aWQgcGdzdGF0X2luaXRpYWxpemUodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApp bmRleCAyZWI3ZTNhNTMwLi5iZDI5MmU1ZTE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o CkBAIC0yMTUsNiArMjE1LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgUmVwbGljYXRpb25TbG90 c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lkKTsKIGV4dGVybiBib29sIFJlcGxpY2F0 aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lkLCBpbnQgKm5zbG90cywgaW50ICpuYWN0 aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdHNEcm9wREJTbG90cyhPaWQgZGJv aWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhY TG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZUNvbmZsaWN0 aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhp ZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90ICpTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xv dChjb25zdCBjaGFyICpuYW1lLCBib29sIG5lZWRfbG9jayk7CiBleHRlcm4gdm9pZCBSZXBs aWNhdGlvblNsb3ROYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwgY2hh ciAqc3luY3Nsb3RuYW1lLCBpbnQgc3pzbG90KTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9u U2xvdERyb3BBdFB1Yk5vZGUoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIGNoYXIgKnNsb3Ru YW1lLCBib29sIG1pc3Npbmdfb2spOwpAQCAtMjI0LDQgKzIyNSw2IEBAIGV4dGVybiB2b2lk IENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBDaGVj a1Nsb3RSZXF1aXJlbWVudHModm9pZCk7CiAKK2V4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90cyhPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCBjaGFyICpyZWFzb24pOworCiAjZW5kaWYJCQkJCQkJLyogU0xPVF9IICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGVlYzE4NmJlMmUuLmY4NmIwNzBkYmMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgZW51 bQogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSwKIAlQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX0xPQ0ssCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQ U0hPVCwKKwlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9ULAogCVBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCVBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfU1RBUlRVUF9ERUFETE9DSywKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zdGFuZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaAppbmRleCAz OGZkODVhNDMxLi4zYmExODgyMjE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdl L3N0YW5kYnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaApAQCAtMzAs OSArMzAsOSBAQCBleHRlcm4gdm9pZCBJbml0UmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25t ZW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25SZWNvdmVyeVRyYW5zYWN0aW9uRW52 aXJvbm1lbnQodm9pZCk7CiAKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aFNuYXBzaG90KFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3ZlZFhpZCwKLQkJCQkJCQkJ CQkJCVJlbEZpbGVOb2RlIG5vZGUpOworCQkJCQkJCQkJCQkJYm9vbCBvbkNhdGFsb2dUYWJs ZSwgUmVsRmlsZU5vZGUgbm9kZSk7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25m bGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgbGF0ZXN0UmVtb3Zl ZEZ1bGxYaWQsCi0JCQkJCQkJCQkJCQkJICAgUmVsRmlsZU5vZGUgbm9kZSk7CisJCQkJCQkJ CQkJCQkJICAgYm9vbCBvbkNhdGFsb2dUYWJsZSwgUmVsRmlsZU5vZGUgbm9kZSk7CiBleHRl cm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNwYWNlKE9pZCB0c2lk KTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aERhdGFiYXNlKE9p ZCBkYmlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBlNWFi MTEyNzVkLi42NmYyOGI2NDlkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dApAQCAtMTg3MSw3ICsxODcxLDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHN8IFNF TEVDVCBkLm9pZCBBUyBkYXRpZCwKICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2Nr KGQub2lkKSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3Nu YXBzaG90KGQub2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9kYl9j b25mbGljdF9idWZmZXJwaW4oZC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBpbiwKLSAgICBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9k ZWFkbG9jaworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2so ZC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2xvZ2ljYWxzbG90KGQub2lkKSBBUyBjb25mbF9sb2dpY2Fsc2xvdAogICAgRlJPTSBwZ19k YXRhYmFzZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBzLnBpZCwKICAgICBzLmdzc19h dXRoIEFTIGdzc19hdXRoZW50aWNhdGVkLAotLSAKMi4xOC40Cgo= --------------75EF1C85D54B8D5C1916957E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v18-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v18-0003-Allow-logical-decoding-on-standby.patch" RnJvbSBhZDRiM2I1YmYwMzFkMmM0N2IzYTFiZWI3YzQ1Y2RmNWNlZjRmODFlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdCA8YmRyb3V2b3RAZ21haWwuY29tPgpE YXRlOiBTdW4sIDEzIEp1biAyMDIxIDE3OjEzOjI4ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 MTggMy81XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBhIGxv Z2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1c2Fn ZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0aGFu IGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlzIHNl dCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwgc2xv dCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3QgcmVj b3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuIENvbmZsaWN0aW5nIHNsb3RzCndvdWxkIGJl IGhhbmRsZWQgaW4gbmV4dCBjb21taXRzLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBh biBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2 aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFz LCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYyAgICAgICAgICAgICB8IDMzICsrKysrKysrKystCiBzcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAyMiArKysrKysrLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgMzcgKysrKysr LS0tLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAg IHwgNTYgKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dGZ1bmNzLmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlcmZ1bmNzLmMgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMgICAgICAgICAgIHwgMjYgKysrKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogMTMgZmlsZXMgY2hhbmdl ZCwgMTMyIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQogIDE2LjclIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtLwogIDMyLjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvCiAgNDUuMiUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDUuMyUgc3JjLwoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCA0NjllMjZkOTNhLi4zN2QwNzAz Y2E5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC01MDgwLDYgKzUwODAs MTcgQEAgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCkKIAlSZWFkQ29udHJv bEZpbGUoKTsKIH0KIAorLyoKKyAqIEdldCB0aGUgd2FsX2xldmVsIGZyb20gdGhlIGNvbnRy b2wgZmlsZS4gRm9yIGEgc3RhbmRieSwgdGhpcyB2YWx1ZSBzaG91bGQgYmUKKyAqIGNvbnNp ZGVyZWQgYXMgaXRzIGFjdGl2ZSB3YWxfbGV2ZWwsIGJlY2F1c2UgaXQgbWF5IGJlIGRpZmZl cmVudCBmcm9tIHdoYXQKKyAqIHdhcyBvcmlnaW5hbGx5IGNvbmZpZ3VyZWQgb24gc3RhbmRi eS4KKyAqLworV2FsTGV2ZWwKK0dldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpCit7 CisJcmV0dXJuIENvbnRyb2xGaWxlLT53YWxfbGV2ZWw7Cit9CisKIC8qCiAgKiBJbml0aWFs aXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBYTE9HCiAgKi8KQEAgLTk2MDEsNyArOTYx Miw3IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJICogd2hpY2hldmVyIGlz IGxhdGVyLgogCSAqLwogCXJlY2VpdmVQdHIgPSBHZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxM LCBOVUxMKTsKLQlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkp OworCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSwgZmFsc2Up OwogCWVuZHB0ciA9IChyZWNlaXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJl Y2VpdmVQdHI7CiAJS2VlcExvZ1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwogCUludmFsaWRh dGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoX2xvZ1NlZ05vKTsKQEAgLTExNzEzLDcgKzEx NzI0LDcgQEAgcmVnaXN0ZXJfcGVyc2lzdGVudF9hYm9ydF9iYWNrdXBfaGFuZGxlcih2b2lk KQogICogRXhwb3J0ZWQgdG8gYWxsb3cgV0FMUmVjZWl2ZXIgdG8gcmVhZCB0aGUgcG9pbnRl ciBkaXJlY3RseS4KICAqLwogWExvZ1JlY1B0cgotR2V0WExvZ1JlcGxheVJlY1B0cihUaW1l TGluZUlEICpyZXBsYXlUTEkpCitHZXRYTG9nUmVwbGF5UmVjUHRyKFRpbWVMaW5lSUQgKnJl cGxheVRMSSwgYm9vbCBhdm9pZF9oZWFkZXIpCiB7CiAJWExvZ1JlY1B0cglyZWNwdHI7CiAJ VGltZUxpbmVJRAl0bGk7CkBAIC0xMTcyNSw2ICsxMTczNiwyNCBAQCBHZXRYTG9nUmVwbGF5 UmVjUHRyKFRpbWVMaW5lSUQgKnJlcGxheVRMSSkKIAogCWlmIChyZXBsYXlUTEkpCiAJCSpy ZXBsYXlUTEkgPSB0bGk7CisKKwkvKgorCSAqIFJlcGxheSBwb2ludGVyIG1heSBwb2ludCBv bmUgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNvcmQuIElmIHRoYXQKKwkgKiBpcyBhIFhMT0cg cGFnZSBib3VuZGFyeSwgaXQgd2lsbCBub3QgYmUgYSB2YWxpZCBMU04gZm9yIHRoZQorCSAq IHN0YXJ0IG9mIGEgcmVjb3JkLCBzbyBidW1wIGl0IHVwIHBhc3QgdGhlIHBhZ2UgaGVhZGVy LgorCSAqLworCWlmIChhdm9pZF9oZWFkZXIgJiYgIVhSZWNPZmZJc1ZhbGlkKHJlY3B0cikp CisJeworCQlpZiAocmVjcHRyICUgWExPR19CTENLU1ogIT0gMCkKKwkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHJlcGxheSBwb2ludGVyIik7CisKKwkJLyogRm9yIHRoZSBmaXJzdCBwYWdl IG9mIGEgc2VnbWVudCBmaWxlLCBpdCdzIGEgbG9uZyBoZWFkZXIgKi8KKwkJaWYgKFhMb2dT ZWdtZW50T2Zmc2V0KHJlY3B0ciwgd2FsX3NlZ21lbnRfc2l6ZSkgPT0gMCkKKwkJCXJlY3B0 ciArPSBTaXplT2ZYTG9nTG9uZ1BIRDsKKwkJZWxzZQorCQkJcmVjcHRyICs9IFNpemVPZlhM b2dTaG9ydFBIRDsKKwl9CisKIAlyZXR1cm4gcmVjcHRyOwogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nZnVuY3MuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCmluZGV4IGI5OGRlYjcyZWMuLmExNzNmOGQ2ZmMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dmdW5jcy5jCkBAIC00MTcsNyAr NDE3LDcgQEAgcGdfbGFzdF93YWxfcmVwbGF5X2xzbihQR19GVU5DVElPTl9BUkdTKQogewog CVhMb2dSZWNQdHIJcmVjcHRyOwogCi0JcmVjcHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihO VUxMKTsKKwlyZWNwdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwsIGZhbHNlKTsKIAog CWlmIChyZWNwdHIgPT0gMCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKaW5kZXggZDE3ZDY2MGY0Ni4uODEwODhiYWFlMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3V0aWxzLmMKQEAgLTg1MCw3ICs4 NTAsNyBAQCByZWFkX2xvY2FsX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBY TG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsCiAJCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkp CiAJCQlyZWFkX3VwdG8gPSBHZXRGbHVzaFJlY1B0cigpOwogCQllbHNlCi0JCQlyZWFkX3Vw dG8gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCk7CisJCQlyZWFkX3Vw dG8gPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpOwogCQl0 bGkgPSBUaGlzVGltZUxpbmVJRDsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hl Y2twb2ludGVyLmMKaW5kZXggNzVhOTVmM2RlNy4uMTFkOGYxMzcwYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC00MzcsNyArNDM3LDcgQEAgQ2hlY2tw b2ludGVyTWFpbih2b2lkKQogCQkJICovCiAJCQlja3B0X2FjdGl2ZSA9IHRydWU7CiAJCQlp ZiAoZG9fcmVzdGFydHBvaW50KQotCQkJCWNrcHRfc3RhcnRfcmVjcHRyID0gR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMKTsKKwkJCQlja3B0X3N0YXJ0X3JlY3B0ciA9IEdldFhMb2dSZXBs YXlSZWNQdHIoTlVMTCwgZmFsc2UpOwogCQkJZWxzZQogCQkJCWNrcHRfc3RhcnRfcmVjcHRy ID0gR2V0SW5zZXJ0UmVjUHRyKCk7CiAJCQlja3B0X3N0YXJ0X3RpbWUgPSBub3c7CkBAIC04 MDEsNyArODAxLDcgQEAgSXNDaGVja3BvaW50T25TY2hlZHVsZShkb3VibGUgcHJvZ3Jlc3Mp CiAJICogdmFsdWUgdGhhdCB3YXMgaW4gZWZmZWN0IHdoZW4gdGhlIFdBTCB3YXMgZ2VuZXJh dGVkKS4KIAkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCi0JCXJlY3B0ciA9IEdl dFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCXJlY3B0ciA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoTlVMTCwgZmFsc2UpOwogCWVsc2UKIAkJcmVjcHRyID0gR2V0SW5zZXJ0UmVjUHRyKCk7 CiAJZWxhcHNlZF94bG9ncyA9ICgoKGRvdWJsZSkgKHJlY3B0ciAtIGNrcHRfc3RhcnRfcmVj cHRyKSkgLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5k ZXggNzA2NzAxNjlhYy4uNGExOTc2YzU5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC0yMTUsMTEgKzIxNSwzMSBAQCBEZWNvZGVYTG9nT3Ao TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJ CQkgKiBjYW4gcmVzdGFydCBmcm9tIHRoZXJlLgogCQkJICovCiAJCQlicmVhazsKKwkJY2Fz ZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CisJCXsKKwkJCXhsX3BhcmFtZXRlcl9jaGFuZ2Ug KnhscmVjID0KKwkJCQkoeGxfcGFyYW1ldGVyX2NoYW5nZSAqKSBYTG9nUmVjR2V0RGF0YShi dWYtPnJlY29yZCk7CisKKwkJCS8qCisJCQkgKiBJZiB3YWxfbGV2ZWwgb24gcHJpbWFyeSBp cyByZWR1Y2VkIHRvIGxlc3MgdGhhbiBsb2dpY2FsLCB0aGVuIHdlCisJCQkgKiB3YW50IHRv IHByZXZlbnQgZXhpc3RpbmcgbG9naWNhbCBzbG90cyBmcm9tIGJlaW5nIHVzZWQuCisJCQkg KiBFeGlzdGluZyBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgZ2V0IGludmFsaWRhdGVkIHdo ZW4gdGhpcyBXQUwKKwkJCSAqIHJlY29yZCBpcyByZXBsYXllZDsgYW5kIGZ1cnRoZXIsIHNs b3QgY3JlYXRpb24gZmFpbHMgd2hlbiB0aGUKKwkJCSAqIHdhbCBsZXZlbCBpcyBub3Qgc3Vm ZmljaWVudDsgYnV0IGFsbCB0aGVzZSBvcGVyYXRpb25zIGFyZSBub3QKKwkJCSAqIHN5bmNo cm9uaXplZCwgc28gYSBsb2dpY2FsIHNsb3QgbWF5IGNyZWVwIGluIHdoaWxlIHRoZSB3YWxf bGV2ZWwKKwkJCSAqIGlzIGJlaW5nIHJlZHVjZWQuIEhlbmNlIHRoaXMgZXh0cmEgY2hlY2su CisJCQkgKi8KKwkJCWlmICh4bHJlYy0+d2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJIGVycm1zZygibG9naWNhbCBkZWNv ZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzICIKKwkJCQkJCQkJIndhbF9sZXZlbCA+PSBsb2dp Y2FsIG9uIG1hc3RlciIpKSk7CisJCQlicmVhazsKKwkJfQogCQljYXNlIFhMT0dfTk9PUDoK IAkJY2FzZSBYTE9HX05FWFRPSUQ6CiAJCWNhc2UgWExPR19TV0lUQ0g6CiAJCWNhc2UgWExP R19CQUNLVVBfRU5EOgotCQljYXNlIFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKIAkJY2FzZSBY TE9HX1JFU1RPUkVfUE9JTlQ6CiAJCWNhc2UgWExPR19GUFdfQ0hBTkdFOgogCQljYXNlIFhM T0dfRlBJX0ZPUl9ISU5UOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWwuYwppbmRleCBmZmM2MTYwZTlmLi4zYzQ2OTM4OTcyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMTE5LDIzICsxMTksMjIgQEAg Q2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHModm9pZCkKIAkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNn KCJsb2dpY2FsIGRlY29kaW5nIHJlcXVpcmVzIGEgZGF0YWJhc2UgY29ubmVjdGlvbiIpKSk7 CiAKLQkvKiAtLS0tCi0JICogVE9ETzogV2UgZ290IHRvIGNoYW5nZSB0aGF0IHNvbWVkYXkg c29vbi4uLgotCSAqCi0JICogVGhlcmUncyBiYXNpY2FsbHkgdGhyZWUgdGhpbmdzIG1pc3Np bmcgdG8gYWxsb3cgdGhpczoKLQkgKiAxKSBXZSBuZWVkIHRvIGJlIGFibGUgdG8gY29ycmVj dGx5IGFuZCBxdWlja2x5IGlkZW50aWZ5IHRoZSB0aW1lbGluZSBhCi0JICoJICBMU04gYmVs b25ncyB0bwotCSAqIDIpIFdlIG5lZWQgdG8gZm9yY2UgaG90X3N0YW5kYnlfZmVlZGJhY2sg dG8gYmUgZW5hYmxlZCBhdCBhbGwgdGltZXMgc28KLQkgKgkgIHRoZSBwcmltYXJ5IGNhbm5v dCByZW1vdmUgcm93cyB3ZSBuZWVkLgotCSAqIDMpIHN1cHBvcnQgZHJvcHBpbmcgcmVwbGlj YXRpb24gc2xvdHMgcmVmZXJyaW5nIHRvIGEgZGF0YWJhc2UsIGluCi0JICoJICBkYmFzZV9y ZWRvLiBUaGVyZSBjYW4ndCBiZSBhbnkgYWN0aXZlIG9uZXMgZHVlIHRvIEhTIHJlY292ZXJ5 Ci0JICoJICBjb25mbGljdHMsIHNvIHRoYXQgc2hvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeS4K LQkgKiAtLS0tCi0JICovCiAJaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQotCQllcmVwb3J0 KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK LQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIGNhbm5vdCBiZSB1c2VkIHdoaWxlIGlu IHJlY292ZXJ5IikpKTsKKwl7CisJCS8qCisJCSAqIFRoaXMgY2hlY2sgbWF5IGhhdmUgcmFj ZSBjb25kaXRpb25zLCBidXQgd2hlbmV2ZXIKKwkJICogWExPR19QQVJBTUVURVJfQ0hBTkdF IGluZGljYXRlcyB0aGF0IHdhbF9sZXZlbCBoYXMgY2hhbmdlZCwgd2UKKwkJICogdmVyaWZ5 IHRoYXQgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdHMu IEFuZCB0bworCQkgKiBhdm9pZCByYWNlcyBhcm91bmQgY3JlYXRpbmcgYSBuZXcgc2xvdCwK KwkJICogQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKSBpcyBjYWxsZWQgb25j ZSBiZWZvcmUgY3JlYXRpbmcKKwkJICogdGhlIHNsb3QsIGFuZCBvbmNlIHdoZW4gbG9naWNh bCBkZWNvZGluZyBpcyBpbml0aWFsbHkgc3RhcnRpbmcgdXAuCisJCSAqLworCQlpZiAoR2V0 QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkoKSA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3Rh bmRieSByZXF1aXJlcyAiCisJCQkJCQkJIndhbF9sZXZlbCA+PSBsb2dpY2FsIG9uIG1hc3Rl ciIpKSk7CisJfQogfQogCiAvKgpAQCAtMzMwLDYgKzMyOSwxMiBAQCBDcmVhdGVJbml0RGVj b2RpbmdDb250ZXh0KGNvbnN0IGNoYXIgKnBsdWdpbiwKIAlMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHg7CiAJTWVtb3J5Q29udGV4dCBvbGRfY29udGV4dDsKIAorCS8qCisJICogT24g c3RhbmRieSwgdGhpcyBjaGVjayBpcyBhbHNvIHJlcXVpcmVkIHdoaWxlIGNyZWF0aW5nIHRo ZSBzbG90LiBDaGVjaworCSAqIHRoZSBjb21tZW50cyBpbiB0aGlzIGZ1bmN0aW9uLgorCSAq LworCUNoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCk7CisKIAkvKiBzaG9ydGVy IGxpbmVzLi4uICovCiAJc2xvdCA9IE15UmVwbGljYXRpb25TbG90OwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwppbmRleCAxZjM4 YzViMzNlLi5hYmRjODY5ZjNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTIyMyw3ICsyMjMsNyBAQCBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBj b25maXJtLCBib29sIGJpbgogCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJCWVuZF9v Zl93YWwgPSBHZXRGbHVzaFJlY1B0cigpOwogCWVsc2UKLQkJZW5kX29mX3dhbCA9IEdldFhM b2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlEKTsKKwkJZW5kX29mX3dhbCA9IEdldFhM b2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlELCBmYWxzZSk7CiAKIAlSZXBsaWNhdGlv blNsb3RBY3F1aXJlKE5hbWVTdHIoKm5hbWUpLCB0cnVlKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IGFmYTY1YTIxZTIuLmEyZjk2YzNlZGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9zbG90LmMKQEAgLTEwODUsMzcgKzEwODUsMjggQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2 ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3IgbG9naWNhbCBzbG90cyBsb2cgYSBzdGFuZGJ5 IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2FsIGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0bHkg dGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3MgdGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9yZQot CQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNhbm5v dCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVzZSB0aGUKKwkJICogcmVwbGF5IHBvaW50ZXI7 IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBvbgor CQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQgdG8gd2FpdCBmb3IgYW4geGxfcnVubmluZ194 YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dnZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUgcHJp bWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNhbiBiZSBidWlsdAorCQkgKiB1c2luZyB0aGUg cmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mgbm90IG5lZWRlZCAob3IgaW5kZWVkIGhlbHBm dWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxheSBh dCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQgcmV0dXJuCi0J CSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGln aHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnks IGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBoYXMgdG8KLQkJICogc3RhcnQgcmVwbGF5IGF0 LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9y IHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRoZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRoZSBs YXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZAorCQkgKiByZXR1cm4gdGhl IGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5CisJ CSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3 aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhhcyB0byBzdGFydCByZXBsYXkgYXQuCiAJCSAq LwotCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkp Ci0JCXsKLQkJCVhMb2dSZWNQdHIJZmx1c2hwdHI7Ci0KLQkJCS8qIHN0YXJ0IGF0IGN1cnJl bnQgaW5zZXJ0IHBvc2l0aW9uICovCisJCWlmIChTbG90SXNQaHlzaWNhbChzbG90KSkKKwkJ CXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOworCQllbHNlIGlmIChSZWNvdmVyeUlu UHJvZ3Jlc3MoKSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxM LCB0cnVlKTsKKwkJZWxzZQogCQkJcmVzdGFydF9sc24gPSBHZXRYTG9nSW5zZXJ0UmVjUHRy KCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEu cmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+ bXV0ZXgpOwotCi0JCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24g dG8gc3RhcnQgKi8KLQkJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CiAKLQkJ CS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRvIGRpc2sgKi8KLQkJCVhMb2dGbHVz aChmbHVzaHB0cik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlyZXN0YXJ0X2xzbiA9IEdldFJl ZG9SZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xv dC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNl KCZzbG90LT5tdXRleCk7Ci0JCX0KKwkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7 CisJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKKwkJU3BpbkxvY2tS ZWxlYXNlKCZzbG90LT5tdXRleCk7CiAKIAkJLyogcHJldmVudCBXQUwgcmVtb3ZhbCBhcyBm YXN0IGFzIHBvc3NpYmxlICovCiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRM U04oKTsKQEAgLTExMzEsNiArMTEyMiwxNyBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2Fs KHZvaWQpCiAJCWlmIChYTG9nR2V0TGFzdFJlbW92ZWRTZWdubygpIDwgc2Vnbm8pCiAJCQli cmVhazsKIAl9CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIFNsb3RJc0xvZ2lj YWwoc2xvdCkpCisJeworCQlYTG9nUmVjUHRyCWZsdXNocHRyOworCisJCS8qIG1ha2Ugc3Vy ZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLworCQlmbHVzaHB0ciA9 IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJCS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3lu Y2VkIHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKKwl9CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmluZGV4IDMxZTc0ZDM4MzIuLjQ4ZDI0 NDQyZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCkBAIC02MzYsNyAr NjM2LDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJbW92ZXRvID0gTWluKG1vdmV0bywg R2V0Rmx1c2hSZWNQdHIoKSk7CiAJZWxzZQotCQltb3ZldG8gPSBNaW4obW92ZXRvLCBHZXRY TG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCkpOworCQltb3ZldG8gPSBNaW4obW92 ZXRvLCBHZXRYTG9nUmVwbGF5UmVjUHRyKCZUaGlzVGltZUxpbmVJRCwgZmFsc2UpKTsKIAog CS8qIEFjcXVpcmUgdGhlIHNsb3Qgc28gd2UgIm93biIgaXQgKi8KIAlSZXBsaWNhdGlvblNs b3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCBiOTQ5MTBiZmU5Li5kM2U1Nzg2NjY4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTQwMiw3ICs0MDIsNyBA QCBXYWxSZWNlaXZlck1haW4odm9pZCkKIAkJCWZpcnN0X3N0cmVhbSA9IGZhbHNlOwogCiAJ CQkvKiBJbml0aWFsaXplIExvZ3N0cmVhbVJlc3VsdCBhbmQgYnVmZmVycyBmb3IgcHJvY2Vz c2luZyBtZXNzYWdlcyAqLwotCQkJTG9nc3RyZWFtUmVzdWx0LldyaXRlID0gTG9nc3RyZWFt UmVzdWx0LkZsdXNoID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJCUxvZ3N0cmVh bVJlc3VsdC5Xcml0ZSA9IExvZ3N0cmVhbVJlc3VsdC5GbHVzaCA9IEdldFhMb2dSZXBsYXlS ZWNQdHIoTlVMTCwgZmFsc2UpOwogCQkJaW5pdFN0cmluZ0luZm8oJnJlcGx5X21lc3NhZ2Up OwogCQkJaW5pdFN0cmluZ0luZm8oJmluY29taW5nX21lc3NhZ2UpOwogCkBAIC0xMDY4LDcg KzEwNjgsNyBAQCBYTG9nV2FsUmN2U2VuZFJlcGx5KGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVz dFJlcGx5KQogCS8qIENvbnN0cnVjdCBhIG5ldyBtZXNzYWdlICovCiAJd3JpdGVQdHIgPSBM b2dzdHJlYW1SZXN1bHQuV3JpdGU7CiAJZmx1c2hQdHIgPSBMb2dzdHJlYW1SZXN1bHQuRmx1 c2g7Ci0JYXBwbHlQdHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCWFwcGx5UHRy ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAKIAlyZXNldFN0cmluZ0lu Zm8oJnJlcGx5X21lc3NhZ2UpOwogCXBxX3NlbmRieXRlKCZyZXBseV9tZXNzYWdlLCAncicp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5j cy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCmluZGV4 IDZmMGFjYmZkZWYuLmYyNjRiNzFmNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxyZWNlaXZlcmZ1bmNzLmMKQEAgLTM3Miw3ICszNzIsNyBAQCBHZXRSZXBsaWNhdGlv bkFwcGx5RGVsYXkodm9pZCkKIAlyZWNlaXZlUHRyID0gd2FscmN2LT5mbHVzaGVkVXB0bzsK IAlTcGluTG9ja1JlbGVhc2UoJndhbHJjdi0+bXV0ZXgpOwogCi0JcmVwbGF5UHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwlyZXBsYXlQdHIgPSBHZXRYTG9nUmVwbGF5UmVj UHRyKE5VTEwsIGZhbHNlKTsKIAogCWlmIChyZWNlaXZlUHRyID09IHJlcGxheVB0cikKIAkJ cmV0dXJuIDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDUzZTQ0 MGMyYWUuLmJjMzE2Y2QyOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5j CkBAIC0xMTY2LDYgKzExNjYsMTYgQEAgU3RhcnRMb2dpY2FsUmVwbGljYXRpb24oU3RhcnRS ZXBsaWNhdGlvbkNtZCAqY21kKQogCQlnb3RfU1RPUFBJTkcgPSB0cnVlOwogCX0KIAorCS8q CisJICogSW4gY2FzZSBvZiBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgaXQgbWF5IGJl IHRoYXQgVGhpc1RpbWVMaW5lSUQKKwkgKiBpcyBub3Qgc2V0IHlldC4KKwkgKiBJbmRlZWQg d2UgYXJlIG5vdCBnb2luZyB0aHJvdWdoIEluaXRYTE9HQWNjZXNzIG9uIGEgU3RhbmRieSBh bmQKKwkgKiBpdCBtYXkgYWxzbyBiZSB0aGF0IElkZW50aWZ5U3lzdGVtIGhhcyBub3QgYmVl biBjYWxsZWQgeWV0LgorCSAqIFNvIGxldCdzIGdldCBpdCB0aHJvdWdoIEdldFhMb2dSZXBs YXlSZWNQdHIoKS4KKwkgKi8KKwlpZiAoVGhpc1RpbWVMaW5lSUQgPT0gMCkKKwkJKHZvaWQp IEdldFhMb2dSZXBsYXlSZWNQdHIoJlRoaXNUaW1lTGluZUlELCBmYWxzZSk7CisKIAkvKgog CSAqIENyZWF0ZSBvdXIgZGVjb2RpbmcgY29udGV4dCwgbWFraW5nIGl0IHN0YXJ0IGF0IHRo ZSBwcmV2aW91c2x5IGFjaydlZAogCSAqIHBvc2l0aW9uLgpAQCAtMTM5MCw3ICsxNDAwLDcg QEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxvYykKIAlpZiAoIVJlY292ZXJ5SW5Q cm9ncmVzcygpKQogCQlSZWNlbnRGbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKCk7CiAJZWxz ZQotCQlSZWNlbnRGbHVzaFB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCVJl Y2VudEZsdXNoUHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAKIAlm b3IgKDs7KQogCXsKQEAgLTE0MjQsNyArMTQzNCw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExv Z1JlY1B0ciBsb2MpCiAJCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCiAJCQlSZWNlbnRG bHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKCk7CiAJCWVsc2UKLQkJCVJlY2VudEZsdXNoUHRy ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJCVJlY2VudEZsdXNoUHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cihOVUxMLCBmYWxzZSk7CiAKIAkJLyoKIAkJICogSWYgcG9zdG1h c3RlciBhc2tlZCB1cyB0byBzdG9wLCBkb24ndCB3YWl0IGFueW1vcmUuCkBAIC0yODkwLDEw ICsyOTAwLDEyIEBAIFhMb2dTZW5kTG9naWNhbCh2b2lkKQogCSAqIElmIGZpcnN0IHRpbWUg dGhyb3VnaCBpbiB0aGlzIHNlc3Npb24sIGluaXRpYWxpemUgZmx1c2hQdHIuICBPdGhlcndp c2UsCiAJICogd2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBmbHVzaFB0ciBpZiBFbmRSZWNQdHIg aXMgcGFzdCBpdC4KIAkgKi8KLQlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIp Ci0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoKTsKLQllbHNlIGlmIChsb2dpY2FsX2Rl Y29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCi0JCWZsdXNoUHRy ID0gR2V0Rmx1c2hSZWNQdHIoKTsKKwlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQ dHIgfHwKKwkJbG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZs dXNoUHRyKQorCXsKKwkJZmx1c2hQdHIgPSAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciA/CisJ CQkJCUdldFN0YW5kYnlGbHVzaFJlY1B0cigpIDogR2V0Rmx1c2hSZWNQdHIoKSk7CisJfQog CiAJLyogSWYgRW5kUmVjUHRyIGlzIHN0aWxsIHBhc3Qgb3VyIGZsdXNoUHRyLCBpdCBtZWFu cyB3ZSBjYXVnaHQgdXAuICovCiAJaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXIt PkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKQEAgLTI5ODIsNyArMjk5NCw3IEBAIEdldFN0YW5k YnlGbHVzaFJlY1B0cih2b2lkKQogCSAqLwogCiAJcmVjZWl2ZVB0ciA9IEdldFdhbFJjdkZs dXNoUmVjUHRyKE5VTEwsICZyZWNlaXZlVExJKTsKLQlyZXBsYXlQdHIgPSBHZXRYTG9nUmVw bGF5UmVjUHRyKCZyZXBsYXlUTEkpOworCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQ dHIoJnJlcGxheVRMSSwgZmFsc2UpOwogCiAJVGhpc1RpbWVMaW5lSUQgPSByZXBsYXlUTEk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oCmluZGV4IDc3MTg3YzEyYmUuLmM3ZmI1MjI0MGUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaApAQCAtMzE2LDcgKzMxNiw3IEBAIGV4dGVybiBib29sIEhvdFN0YW5kYnlBY3Rp dmUodm9pZCk7CiBleHRlcm4gYm9vbCBIb3RTdGFuZGJ5QWN0aXZlSW5SZXBsYXkodm9pZCk7 CiBleHRlcm4gYm9vbCBYTG9nSW5zZXJ0QWxsb3dlZCh2b2lkKTsKIGV4dGVybiB2b2lkIEdl dFhMb2dSZWNlaXB0VGltZShUaW1lc3RhbXBUeiAqcnRpbWUsIGJvb2wgKmZyb21TdHJlYW0p OwotZXh0ZXJuIFhMb2dSZWNQdHIgR2V0WExvZ1JlcGxheVJlY1B0cihUaW1lTGluZUlEICpy ZXBsYXlUTEkpOworZXh0ZXJuIFhMb2dSZWNQdHIgR2V0WExvZ1JlcGxheVJlY1B0cihUaW1l TGluZUlEICpyZXBsYXlUTEksIGJvb2wgYXZvaWRfaGVhZGVyKTsKIGV4dGVybiBYTG9nUmVj UHRyIEdldFhMb2dJbnNlcnRSZWNQdHIodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciBHZXRY TG9nV3JpdGVSZWNQdHIodm9pZCk7CiBleHRlcm4gUmVjb3ZlcnlQYXVzZVN0YXRlIEdldFJl Y292ZXJ5UGF1c2VTdGF0ZSh2b2lkKTsKQEAgLTMzMyw2ICszMzMsNyBAQCBleHRlcm4gU2l6 ZSBYTE9HU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgWExPR1NobWVtSW5pdCh2b2lk KTsKIGV4dGVybiB2b2lkIEJvb3RTdHJhcFhMT0codm9pZCk7CiBleHRlcm4gdm9pZCBMb2Nh bFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4dGVybiBXYWxMZXZlbCBHZXRB Y3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBYTE9H KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25YTE9HKGludCBjb2RlLCBEYXR1bSBhcmcp OwogZXh0ZXJuIHZvaWQgSW5pdFhMT0dBY2Nlc3Modm9pZCk7Ci0tIAoyLjE4LjQKCg== --------------75EF1C85D54B8D5C1916957E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v18-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v18-0004-New-TAP-test-for-logical-decoding-on-standby.patch" RnJvbSBmMTIzYWNmZTdiZjE1Y2ZkY2M5ODgwNjJmNjJkMGQ1YjcwYjQ3NjJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdCA8YmRyb3V2b3RAZ21haWwuY29tPgpE YXRlOiBTdW4sIDEzIEp1biAyMDIxIDE3OjE0OjU4ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 MTggNC81XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieS4K CkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFu ZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3Qs IEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwot LS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZXNOb2RlLnBtICAgICAgICAgICAgICAgICB8ICAz NyArKysKIC4uLi90LzAyNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmdfeG1pbnMucGwgICB8 IDI3MiArKysrKysrKysrKysrKysrKysKIC4uLi8wMjVfc3RhbmRieV9sb2dpY2FsX2RlY29k aW5nX2NvbmZsaWN0cy5wbCB8IDIyOCArKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgNTM3IGluc2VydGlvbnMoKykKICAgNS44JSBzcmMvdGVzdC9wZXJsLwogIDk0LjElIHNy Yy90ZXN0L3JlY292ZXJ5L3QvCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3Jl c05vZGUucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQppbmRleCAyMDI3Y2Jm NDNkLi40OTg0YjJmNmY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9k ZS5wbQorKysgYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVzTm9kZS5wbQpAQCAtMjYxMiw2ICsy NjEyLDQzIEBAIHN1YiBwZ19yZWN2bG9naWNhbF91cHRvCiAKID1wb2QKIAorPWl0ZW0gJG5v ZGUtPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieShzZWxmLCBtYXN0ZXIsIHNsb3Rf bmFtZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9uIGdp dmVuIHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFu ZGJ5Cit7CisJbXkgKCRzZWxmLCAkbWFzdGVyLCAkc2xvdF9uYW1lLCAkZGJuYW1lKSA9IEBf OworCW15ICgkc3Rkb3V0LCAkc3RkZXJyKTsKKworCW15ICRoYW5kbGU7CisKKwkkaGFuZGxl ID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkc2VsZi0+Y29u bnN0cigkZGJuYW1lKSwgJy1QJywgJ3Rlc3RfZGVjb2RpbmcnLCAnLVMnLCAkc2xvdF9uYW1l LCAnLS1jcmVhdGUtc2xvdCddLCAnPicsIFwkc3Rkb3V0LCAnMj4nLCBcJHN0ZGVycik7CisK KwkjIE9uY2Ugc2xvdCByZXN0YXJ0X2xzbiBpcyBjcmVhdGVkLCB0aGUgc3RhbmRieSBsb29r cyBmb3IgeGxfcnVubmluZ194YWN0cworCSMgV0FMIHJlY29yZCBmcm9tIHRoZSByZXN0YXJ0 X2xzbiBvbndhcmRzLiBTbyBmaXJzdGx5LCB3YWl0IHVudGlsIHRoZSBzbG90CisJIyByZXN0 YXJ0X2xzbiBpcyBldmFsdWF0ZWQuCisKKwkkc2VsZi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJ J3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCByZXN0YXJ0X2xzbiBJUyBOT1QgTlVMTAorCQlG Uk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0g JyRzbG90X25hbWUnCisJXSkgb3IgZGllICJ0aW1lZCBvdXQgd2FpdGluZyBmb3IgbG9naWNh bCBzbG90IHRvIGNhbGN1bGF0ZSBpdHMgcmVzdGFydF9sc24iOworCisJIyBOb3cgYXJyYW5n ZSBmb3IgdGhlIHhsX3J1bm5pbmdfeGFjdHMgcmVjb3JkIGZvciB3aGljaCBwZ19yZWN2bG9n aWNhbAorCSMgaXMgd2FpdGluZy4KKwkkbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J0NIRUNLUE9JTlQnKTsKKworCSRoYW5kbGUtPmZpbmlzaCgpOworCisJaXMoJHNlbGYtPnNs b3QoJHNsb3RfbmFtZSktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywgJHNsb3RfbmFtZSAu ICcgb24gc3RhbmRieSBjcmVhdGVkJykKKwkJb3IgZGllICJjb3VsZCBub3QgY3JlYXRlIHNs b3QiIC4gJHNsb3RfbmFtZTsKK30KKworPXBvZAorCiA9YmFjawogCiA9Y3V0CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAyNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2Rpbmdf eG1pbnMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAyNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmdfeG1pbnMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u ZDY1NGQ3OTUyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI0 X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ194bWlucy5wbApAQCAtMCwwICsxLDI3MiBAQAor IyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSA6IGVuc3VyZSB4bWlucyBhcmUgYXBw cm9wcmlhdGVseSB1cGRhdGVkCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3Vz ZSBQb3N0Z3Jlc05vZGU7Cit1c2UgVGVzdExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+ IDIzOwordXNlIFJlY3Vyc2l2ZUNvcHk7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBUaW1lOjpI aVJlcyBxdyh1c2xlZXApOworCitteSAoJHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkcmV0 LCAkaGFuZGxlLCAkc2xvdCk7CisKK215ICRub2RlX21hc3RlciA9IGdldF9uZXdfbm9kZSgn bWFzdGVyJyk7CitteSAkbm9kZV9zdGFuZGJ5ID0gZ2V0X25ld19ub2RlKCdzdGFuZGJ5Jyk7 CisKKyMgTmFtZSBmb3IgdGhlIHBoeXNpY2FsIHNsb3Qgb24gbWFzdGVyCitteSAkbWFzdGVy X3Nsb3RuYW1lID0gJ21hc3Rlcl9waHlzaWNhbCc7CisjIE5hbWUgZm9yIHRoZSBsb2dpY2Fs IHNsb3Qgb24gc3RhbmRieQorbXkgJHN0YW5kYnlfc2xvdG5hbWUgPSAnc3RhbmRieV9sb2dp Y2FsJzsKKworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRp b25fc2xvdHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRp dGlvbiB0byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0 YXRlCitzdWIgd2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFtZSwgJGNo ZWNrX2V4cHIpID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3Rn cmVzJywgcXFbCisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFsb2cucGdf cmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFtZSc7CisJ XSkgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBhZHZhbmNl IjsKK30KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBtYXN0 ZXIgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX21hc3Rlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+IDEsIGhhc19hcmNoaXZpbmcgPT4gMSk7Ciskbm9kZV9t YXN0ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0g J2xvZ2ljYWwnCittYXhfcmVwbGljYXRpb25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMg PSA0Citsb2dfbWluX21lc3NhZ2VzID0gJ2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkg PSB2ZXJib3NlCisjIHZlcnkgcHJvbXB0bHkgdGVybWluYXRlIGNvbmZsaWN0aW5nIGJhY2tl bmRzCittYXhfc3RhbmRieV9zdHJlYW1pbmdfZGVsYXkgPSAnMnMnCit9KTsKKyRub2RlX21h c3Rlci0+ZHVtcF9pbmZvOworJG5vZGVfbWFzdGVyLT5zdGFydDsKKworJG5vZGVfbWFzdGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVhdGVfcGh5 c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJG1hc3Rlcl9zbG90bmFtZScpO10pOworbXkgJGJh Y2t1cF9uYW1lID0gJ2IxJzsKKyRub2RlX21hc3Rlci0+YmFja3VwKCRiYWNrdXBfbmFtZSk7 CisKKyMgQWZ0ZXIgc2xvdCBjcmVhdGlvbiwgeG1pbnMgbXVzdCBiZSBudWxsCiskc2xvdCA9 ICRub2RlX21hc3Rlci0+c2xvdCgkbWFzdGVyX3Nsb3RuYW1lKTsKK2lzKCRzbG90LT57J3ht aW4nfSwgJycsICJ4bWluIG51bGwiKTsKK2lzKCRzbG90LT57J2NhdGFsb2dfeG1pbid9LCAn JywgImNhdGFsb2dfeG1pbiBudWxsIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IEluaXRpYWxpemUgc2xhdmUgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5v ZGVfc3RhbmRieS0+aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9tYXN0ZXIsICRiYWNrdXBf bmFtZSwKKwloYXNfc3RyZWFtaW5nID0+IDEsCisJaGFzX3Jlc3RvcmluZyA9PiAxKTsKKyRu b2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxW3ByaW1h cnlfc2xvdF9uYW1lID0gJyRtYXN0ZXJfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5LT5z dGFydDsKKyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAn cmVwbGF5JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIHhtaW4vY2F0YWxvZ194bWluIHZlcmlmaWNhdGlv biBiZWZvcmUgYW5kIGFmdGVyIHN0YW5kYnktbG9naWNhbC1zbG90IGNyZWF0aW9uLgorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBXaXRoIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIG9mZiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIG11c3Qgc3RpbGwgYmUgbnVsbAor JHNsb3QgPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7Citpcygkc2xv dC0+eyd4bWluJ30sICcnLCAieG1pbiBudWxsIGFmdGVyIHN0YW5kYnkgam9pbiIpOworaXMo JHNsb3QtPnsnY2F0YWxvZ194bWluJ30sICcnLCAiY2F0YWxvZ194bWluIG51bGwgYWZ0ZXIg c3RhbmRieSBqb2luIik7CisKKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCisjIHNlbmQgc3RhdHVz IHJhcGlkbHkgc28gd2UgcHJvbXB0bHkgYWR2YW5jZSB4bWluIG9uIG1hc3Rlcgord2FsX3Jl Y2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKK10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFy dDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZv ciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gbWFzdGVyLiBXaXRoIGhv dF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZhbmNlLAorIyBidXQgY2F0 YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5jZSB0aGVyZSBpcyBubyBs b2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9kZV9tYXN0ZXIsICRtYXN0ZXJfc2xv dG5hbWUsICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTlVMTCIpOwor CisjIENyZWF0ZSBuZXcgc2xvdHMgb24gdGhlIHN0YW5kYnksIGlnbm9yaW5nIHRoZSBvbmVz IG9uIHRoZSBtYXN0ZXIgY29tcGxldGVseS4KKyMKKyMgVGhpcyBtdXN0IHN1Y2NlZWQgc2lu Y2Ugd2Uga25vdyB3ZSBoYXZlIGEgY2F0YWxvZ194bWluIHJlc2VydmF0aW9uLiBXZQorIyBt aWdodCd2ZSBhbHJlYWR5IHNlbnQgaG90IHN0YW5kYnkgZmVlZGJhY2sgdG8gYWR2YW5jZSBv dXIgcGh5c2ljYWwgc2xvdCdzCisjIGNhdGFsb2dfeG1pbiBidXQgbm90IHJlY2VpdmVkIHRo ZSBjb3JyZXNwb25kaW5nIHhsb2cgZm9yIHRoZSBjYXRhbG9nIHhtaW4KKyMgYWR2YW5jZSwg aW4gd2hpY2ggY2FzZSB3ZSdsbCBjcmVhdGUgYSBzbG90IHRoYXQgaXNuJ3QgdXNhYmxlLiBU aGUgY2FsbGluZworIyBhcHBsaWNhdGlvbiBjYW4gcHJldmVudCB0aGlzIGJ5IGNyZWF0aW5n IGEgdGVtcG9yYXJ5IHNsb3Qgb24gdGhlIG1hc3RlciB0bworIyBsb2NrIGluIGl0cyBjYXRh bG9nX3htaW4uIEZvciBhIHRydWx5IHJhY2UtZnJlZSBzb2x1dGlvbiB3ZSdkIG5lZWQKKyMg bWFzdGVyLXRvLXN0YW5kYnkgaG90X3N0YW5kYnlfZmVlZGJhY2sgcmVwbGllcy4KKyMKKyMg SW4gdGhpcyBjYXNlIGl0IHdvbid0IHJhY2UgYmVjYXVzZSB0aGVyZSdzIG5vIGNvbmN1cnJl bnQgYWN0aXZpdHkgb24gdGhlCisjIG1hc3Rlci4KKyMKKyRub2RlX3N0YW5kYnktPmNyZWF0 ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9tYXN0ZXIsICRzdGFuZGJ5X3Nsb3Ru YW1lLCAncG9zdGdyZXMnKTsKKworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRu b2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisK KyMgTm93IHRoYXQgc2xvdCBpcyBjcmVhdGVkIG9uIHN0YW5kYnksIHhtaW4gYW5kIGNhdGFs b2dfeG1pbiBzaG91bGQgYmUgbm9uIE5VTEwKKyMgb24gYm90aCBtYXN0ZXIgYW5kIHN0YW5k YnkuIEJ1dCBvbiBtYXN0ZXIsIHRoZSB4bWlucyB3aWxsIGJlIHVwZGF0ZWQgb25seQorIyBh ZnRlciBob3Qgc3RhbmRieSBmZWVkYmFjayBpcyByZWNlaXZlZC4KK3dhaXRfZm9yX3htaW5z KCRub2RlX21hc3RlciwgJG1hc3Rlcl9zbG90bmFtZSwgInhtaW4gSVMgTk9UIE5VTEwgQU5E IGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTCIpOworCiskc2xvdCA9ICRub2RlX3N0YW5kYnkt PnNsb3QoJHN0YW5kYnlfc2xvdG5hbWUpOworaXMoJHNsb3QtPnsneG1pbid9LCAnJywgImxv Z2ljYWwgeG1pbiBudWxsIik7Citpc250KCRzbG90LT57J2NhdGFsb2dfeG1pbid9LCAnJywg ImxvZ2ljYWwgY2F0YWxvZ194bWluIG5vdCBudWxsIik7CisKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMgU3RhbmRieSBsb2dpY2FsIHNsb3Qgc2hvdWxkIGJlIGFi bGUgdG8gZmV0Y2ggdGhlIHRhYmxlIGNoYW5nZXMgZXZlbiB3aGVuIHRoZQorIyB0YWJsZSBp cyBkcm9wcGVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVf bWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxl KGlkIHNlcmlhbCBwcmltYXJ5IGtleSwgYmxhaCB0ZXh0KScpOworJG5vZGVfbWFzdGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlKGJsYWgpIHZh bHVlcyAoJ2l0d29ya3MnKV0pOworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgJ0RST1AgVEFCTEUgdGVzdF90YWJsZScpOworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ1ZBQ1VVTScpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNo dXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcp KTsKKworIyBTaG91bGQgc2hvdyB0aGUgaW5zZXJ0cyBldmVuIHdoZW4gdGhlIHRhYmxlIGlz IGRyb3BwZWQgb24gbWFzdGVyCisoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNh bF9zbG90X2dldF9jaGFuZ2VzKCckc3RhbmRieV9zbG90bmFtZScsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS10 aW1lc3RhbXAnLCAnMCcpXSk7Citpcygkc3RkZXJyLCAnJywgJ3N0ZGVyciBpcyBlbXB0eScp OworaXMoJHJldCwgMCwgJ3JlcGxheSBmcm9tIHNsb3Qgc3VjY2VlZGVkJykKKwlvciBkaWUg J2Nhbm5vdCBjb250aW51ZSBpZiBzbG90IHJlcGxheSBmYWlscyc7Citpcygkc3Rkb3V0LCBx e0JFR0lOCit0YWJsZSBwdWJsaWMudGVzdF90YWJsZTogSU5TRVJUOiBpZFtpbnRlZ2VyXTox IGJsYWhbdGV4dF06J2l0d29ya3MnCitDT01NSVR9LCAncmVwbGF5IHJlc3VsdHMgbWF0Y2gn KTsKKworJG5vZGVfbWFzdGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdy ZXBsYXknLCAkbm9kZV9tYXN0ZXItPmxzbignZmx1c2gnKSk7CisKKyRzbG90ID0gJG5vZGVf bWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpOworaXNudCgkc2xvdC0+eyd4bWluJ30s ICcnLCAicGh5c2ljYWwgeG1pbiBub3QgbnVsbCIpOworbXkgJHNhdmVkX3BoeXNpY2FsX2Nh dGFsb2dfeG1pbiA9ICRzbG90LT57J2NhdGFsb2dfeG1pbid9OworaXNudCgkc2F2ZWRfcGh5 c2ljYWxfY2F0YWxvZ194bWluLCAnJywgInBoeXNpY2FsIGNhdGFsb2dfeG1pbiBub3QgbnVs bCIpOworCiskc2xvdCA9ICRub2RlX3N0YW5kYnktPnNsb3QoJHN0YW5kYnlfc2xvdG5hbWUp OworaXMoJHNsb3QtPnsneG1pbid9LCAnJywgImxvZ2ljYWwgeG1pbiBudWxsIik7CitteSAk c2F2ZWRfbG9naWNhbF9jYXRhbG9nX3htaW4gPSAkc2xvdC0+eydjYXRhbG9nX3htaW4nfTsK K2lzbnQoJHNhdmVkX2xvZ2ljYWxfY2F0YWxvZ194bWluLCAnJywgImxvZ2ljYWwgY2F0YWxv Z194bWluIG5vdCBudWxsIik7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgQ2F0YWxvZyB4bWlucyBzaG91bGQgYWR2YW5jZSBhZnRlciBzdGFuZGJ5IGxvZ2lj YWwgc2xvdCBmZXRjaGVzIHRoZSBjaGFuZ2VzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBJZGVhbGx5IHdlJ2QganVzdCBob2xkIGNhdGFsb2dfeG1pbiwgYnV0 IHNpbmNlIGhzX2ZlZWRiYWNrIGN1cnJlbnRseSB1c2VzIHRoZSBzbG90LAorIyB3ZSBob2xk IGRvd24geG1pbi4KKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxW0NS RUFURSBUQUJMRSBjYXRhbG9nX2luY3JlYXNlXzEoKTtdKTsKKyRub2RlX21hc3Rlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgVEFCTEUgdGVzdF90YWJsZShpZCBzZXJpYWwg cHJpbWFyeSBrZXksIGJsYWggdGV4dCknKTsKK2ZvciBteSAkaSAoMCAuLiAyMDAwKQorewor ICAgICRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxW0lOU0VSVCBJTlRP IHRlc3RfdGFibGUoYmxhaCkgVkFMVUVTICgnZW50cnkgJGknKV0pOworfQorJG5vZGVfbWFz dGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXFbQ1JFQVRFIFRBQkxFIGNhdGFsb2dfaW5j cmVhc2VfMigpO10pOworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZB Q1VVTScpOworCiskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworY21wX29rKCRu b2RlX3N0YW5kYnktPnNsb3QoJHN0YW5kYnlfc2xvdG5hbWUpLT57J2NhdGFsb2dfeG1pbid9 LCAiPT0iLAorCSAgICRzYXZlZF9sb2dpY2FsX2NhdGFsb2dfeG1pbiwKKwkgICAibG9naWNh bCBzbG90IGNhdGFsb2dfeG1pbiBoYXNuJ3QgYWR2YW5jZWQgYmVmb3JlIGdldF9jaGFuZ2Vz Iik7CisKKygkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N0YW5kYnktPnBzcWwo J3Bvc3RncmVzJywKKwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRf Y2hhbmdlcygnJHN0YW5kYnlfc2xvdG5hbWUnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRz JywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtdGltZXN0YW1wJywg JzAnKV0pOworaXMoJHJldCwgMCwgJ3JlcGxheSBvZiBiaWcgc2VyaWVzIHN1Y2NlZWRlZCcp OworaXNudCgkc3Rkb3V0LCAnJywgJ3JlcGxheWVkIHNvbWUgcm93cycpOworCiskbm9kZV9t YXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2Rl X21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworIyBsb2dpY2FsIHNsb3QgY2F0YWxvZ194bWlu IG9uIHNsYXZlIHNob3VsZCBhZHZhbmNlIGFmdGVyIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcword2FpdF9mb3JfeG1pbnMoJG5vZGVfc3RhbmRieSwgJHN0YW5kYnlfc2xvdG5hbWUs CisJCQkgICAiY2F0YWxvZ194bWluOjp2YXJjaGFyOjppbnQgPiAke3NhdmVkX2xvZ2ljYWxf Y2F0YWxvZ194bWlufSIpOworJHNsb3QgPSAkbm9kZV9zdGFuZGJ5LT5zbG90KCRzdGFuZGJ5 X3Nsb3RuYW1lKTsKK215ICRuZXdfbG9naWNhbF9jYXRhbG9nX3htaW4gPSAkc2xvdC0+eydj YXRhbG9nX3htaW4nfTsKK2lzKCRzbG90LT57J3htaW4nfSwgJycsICJsb2dpY2FsIHhtaW4g bnVsbCIpOworCisjIGhvdCBzdGFuZGJ5IGZlZWRiYWNrIHNob3VsZCBhZHZhbmNlIG1hc3Rl cidzIHBoeXMgY2F0YWxvZ194bWluIG5vdyB0aGF0IHRoZQorIyBzdGFuZGJ5J3Mgc2xvdCBk b2Vzbid0IGhvbGQgaXQgZG93biBhcyBmYXIuCisjIEJ1dCBtYXN0ZXIncyBwaHlzIGNhdGFs b2dfeG1pbiBzaG91bGQgbm90IGdvIHBhc3QgdGhlIHNsYXZlJ3MgbG9naWNhbCBzbG90J3MK KyMgY2F0YWxvZ194bWluLCBldmVuIHdoaWxlIG1hc3RlcidzIHBoeXMgeG1pbiBhZHZhbmNl cy4KKyMKKyMgRmlyc3QsIG1ha2Ugc3VyZSBtYXN0ZXIncyB4bWluIGlzIGFkdmFuY2VkLiBU aGlzIGhhcHBlbnMgb24gaG90IHN0YW5kYnkKKyMgZmVlZGJhY2suIFNvIHRoaXMgY2hlY2sg Zm9yIG1hc3RlcidzIHhtaW4gYWR2YW5jZSBhbHNvIG1ha2VzIHN1cmUgaG90IHN0YW5kYnkK KyMgZmVlZGJhY2sgaGFzIHJlYWNoZWQgdGhlIG1hc3Rlciwgd2hpY2ggaXMgcmVxdWlyZWQg Zm9yIHRoZSBzdWJzZXF1ZW50CisjIGNhdGFsb2dfeG1pbiB0ZXN0LgorbXkgJHRlbXBfcGh5 c194bWluID0gJG5vZGVfbWFzdGVyLT5zbG90KCRtYXN0ZXJfc2xvdG5hbWUpLT57J3htaW4n fTsKKyRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgdHhpZF9j dXJyZW50KCknKTsKK3dhaXRfZm9yX3htaW5zKCRub2RlX21hc3RlciwgJG1hc3Rlcl9zbG90 bmFtZSwKKwkJCSAgICJ4bWluOjp2YXJjaGFyOjppbnQgPiAke3RlbXBfcGh5c194bWlufSIp OworJHNsb3QgPSAkbm9kZV9tYXN0ZXItPnNsb3QoJG1hc3Rlcl9zbG90bmFtZSk7CisjIE5v dyBjaGVjayB0aGF0IHRoZSBtYXN0ZXIncyBwaHlzIGNhdGFsb2dfeG1pbiBoYXMgYWR2YW5j ZWQgYnV0IG5vdCBiZXlvbmQKKyMgc3RhbmRieSdzIGxvZ2ljYWwgY2F0YWxvZ194bWluCitj bXBfb2soJHNsb3QtPnsnY2F0YWxvZ194bWluJ30sICI+IiwgJHNhdmVkX3BoeXNpY2FsX2Nh dGFsb2dfeG1pbiwKKwkndXBzdHJlYW0gcGh5c2ljYWwgc2xvdCBjYXRhbG9nX3htaW4gaGFz IGFkdmFuY2VkIHdpdGggaHNfZmVlZGJhY2sgb24nKTsKK2NtcF9vaygkc2xvdC0+eydjYXRh bG9nX3htaW4nfSwgIj09IiwgJG5ld19sb2dpY2FsX2NhdGFsb2dfeG1pbiwKKwkndXBzdHJl YW0gcGh5c2ljYWwgc2xvdCBjYXRhbG9nX3htaW4gbm90IHBhc3QgZG93bnN0cmVhbSBjYXRh bG9nX3htaW4gd2l0aCBoc19mZWVkYmFjayBvbicpOworCisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVXBzdHJlYW0gb2xkZXN0WGlkIHNob3VsZCBub3QgZ28gcGFzdCBkb3duc3Ry ZWFtIGNhdGFsb2dfeG1pbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEZpcnN0IGJ1 cm4gc29tZSB4aWRzIG9uIHRoZSBtYXN0ZXIgaW4gYW5vdGhlciBEQiwgc28gd2UgcHVzaCB0 aGUgbWFzdGVyJ3MKKyMgbmV4dFhpZCBhaGVhZC4KK2ZvcmVhY2ggbXkgJGkgKDEgLi4gMTAw KQoreworCSRub2RlX21hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgdHhp ZF9jdXJyZW50KCknKTsKK30KKworIyBGb3JjZSB2YWN1dW0gZnJlZXplIG9uIHRoZSBtYXN0 ZXIgYW5kIGVuc3VyZSBpdHMgb2xkZXN0WG1pbiBkb2Vzbid0IGFkdmFuY2UKKyMgcGFzdCBv dXIgbmVlZGVkIHhtaW4uIFRoZSBvbmx5IHdheSB3ZSBoYXZlIHZpc2liaWxpdHkgaW50byB0 aGF0IGlzIHRvIGZvcmNlCisjIGEgY2hlY2twb2ludC4KKyRub2RlX21hc3Rlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJVUERBVEUgcGdfZGF0YWJhc2UgU0VUIGRhdGFsbG93Y29ubiA9 IHRydWUgV0hFUkUgZGF0bmFtZSA9ICd0ZW1wbGF0ZTAnIik7Citmb3JlYWNoIG15ICRkYm5h bWUgKCd0ZW1wbGF0ZTEnLCAncG9zdGdyZXMnLCAncG9zdGdyZXMnLCAndGVtcGxhdGUwJykK K3sKKwkkbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgkZGJuYW1lLCAnVkFDVVVNIEZSRUVaRScp OworfQorJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NIRUNLUE9JTlQn KTsKK0lQQzo6UnVuOjpydW4oWydwZ19jb250cm9sZGF0YScsICRub2RlX21hc3Rlci0+ZGF0 YV9kaXIoKV0sICc+JywgXCRzdGRvdXQpCisJb3IgZGllICJwZ19jb250cm9sZGF0YSBmYWls ZWQgd2l0aCAkPyI7CitteSBAY2hlY2twb2ludCA9IHNwbGl0KCdcbicsICRzdGRvdXQpOwor bXkgJG9sZGVzdFhpZCA9ICcnOworZm9yZWFjaCBteSAkbGluZSAoQGNoZWNrcG9pbnQpCit7 CisJaWYgKCRsaW5lID1+IHFyL15MYXRlc3QgY2hlY2twb2ludCdzIG9sZGVzdFhJRDpccyso XGQrKS8pCisJeworCQkkb2xkZXN0WGlkID0gJDE7CisJfQorfQorZGllICdubyBvbGRlc3RY SUQgZm91bmQgaW4gY2hlY2twb2ludCcgdW5sZXNzICRvbGRlc3RYaWQ7CisKK2NtcF9vaygk b2xkZXN0WGlkLCAiPD0iLCAkbm9kZV9zdGFuZGJ5LT5zbG90KCRzdGFuZGJ5X3Nsb3RuYW1l KS0+eydjYXRhbG9nX3htaW4nfSwKKwkgICAndXBzdHJlYW0gb2xkZXN0WGlkIG5vdCBwYXN0 IGRvd25zdHJlYW0gY2F0YWxvZ194bWluIHdpdGggaHNfZmVlZGJhY2sgb24nKTsKKworJG5v ZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiVVBEQVRFIHBnX2RhdGFiYXNl IFNFVCBkYXRhbGxvd2Nvbm4gPSBmYWxzZSBXSEVSRSBkYXRuYW1lID0gJ3RlbXBsYXRlMCci KTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBEcm9wIHNsb3QKKyMgTWFrZSBzdXJlIHN0YW5kYnkgc2xvdHMgYXJlIGRyb3Bw YWJsZSwgYW5kIHByb3Blcmx5IGNsZWFyIHRoZSB1cHN0cmVhbSdzIHhtaW4KKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2lzKCRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0hPVyBob3Rfc3RhbmRieV9mZWVk YmFjaycpLCAnb24nLCAnaHNfZmVlZGJhY2sgaXMgb24nKTsKKworJG5vZGVfc3RhbmRieS0+ cHNxbCgncG9zdGdyZXMnLCBxcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCck c3RhbmRieV9zbG90bmFtZScpXSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJHN0YW5k Ynlfc2xvdG5hbWUpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ3Nsb3Qgb24gc3RhbmRieSBkcm9w cGVkIG1hbnVhbGx5Jyk7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIHNlbnQg Ynkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIG1h c3Rlci4gY2F0YWxvZ194bWluIHNob3VsZCBiZWNvbWUgTlVMTCBiZWNhdXNlIHdlIGRyb3Bw ZWQKKyMgdGhlIGxvZ2ljYWwgc2xvdC4KK3dhaXRfZm9yX3htaW5zKCRub2RlX21hc3Rlciwg JG1hc3Rlcl9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9n X3htaW4gSVMgTlVMTCIpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMjVf c3RhbmRieV9sb2dpY2FsX2RlY29kaW5nX2NvbmZsaWN0cy5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDI1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZ19jb25mbGljdHMucGwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDI2YTQxMmIxZgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDI1X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZ19jb25mbGljdHMucGwKQEAgLTAsMCArMSwyMjggQEAKKyMgbG9naWNhbCBkZWNvZGlu ZyBvbiBhIHN0YW5kYnkgOiB0ZXN0IGNvbmZsaWN0IHJlY292ZXJ5OyBhbmQgb3RoZXIgdGVz dHMgdGhhdAorIyB2ZXJpZnkgc2xvdHMgZ2V0IGRyb3BwZWQgYXMgZXhwZWN0ZWQuCisKK3Vz ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBQb3N0Z3Jlc05vZGU7Cit1c2UgVGVz dExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDI2OwordXNlIFJlY3Vyc2l2ZUNvcHk7 Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOworCitteSAo JHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisKK215 ICRub2RlX21hc3RlciA9IGdldF9uZXdfbm9kZSgnbWFzdGVyJyk7CitteSAkbm9kZV9zdGFu ZGJ5ID0gZ2V0X25ld19ub2RlKCdzdGFuZGJ5Jyk7CisKKyMgTmFtZSBmb3IgdGhlIHBoeXNp Y2FsIHNsb3Qgb24gbWFzdGVyCitteSAkbWFzdGVyX3Nsb3RuYW1lID0gJ21hc3Rlcl9waHlz aWNhbCc7CisKKyMgRmV0Y2ggeG1pbiBjb2x1bW5zIGZyb20gc2xvdCdzIHBnX3JlcGxpY2F0 aW9uX3Nsb3RzIHJvdywgYWZ0ZXIgd2FpdGluZyBmb3IKKyMgZ2l2ZW4gYm9vbGVhbiBjb25k aXRpb24gdG8gYmUgdHJ1ZSB0byBlbnN1cmUgd2UndmUgcmVhY2hlZCBhIHF1aWVzY2VudCBz dGF0ZQorc3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRj aGVja19leHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0 Z3JlcycsIHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBn X3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOwor CV0pIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5j ZSI7Cit9CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29u ZmxfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorc3ViIGNoZWNrX2NvbmZsX2xvZ2lj YWxzbG90Cit7CisJb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJCSdw b3N0Z3JlcycsCisJCSJzZWxlY3QgKGNvbmZsX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19z dGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcp LAorCQknY29uZmxfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdh aXRpbmcgY29uZmxfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7Cit9CisKKyMgQ3JlYXRl IHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xv Z2ljYWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkoJG5vZGVfbWFzdGVyLCAnZHJvcHNsb3QnLCAndGVzdGRiJyk7CisJJG5vZGVf c3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX21hc3Rlciwg J2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhlIHN0 YW5kYnkgbG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzKCkK K3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisKKwkj IG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCXByaW50ICJzdGFydGluZyBwZ19y ZWN2bG9naWNhbFxuIjsKKwkkc2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFydChb J3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVzdGRi JyksICctUycsICdhY3RpdmVzbG90JywgJy1mJywgJy0nLCAnLS1uby1sb29wJywgJy0tc3Rh cnQnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJd2hpbGUgKCEkbm9k ZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90JyktPnsnYWN0aXZlX3BpZCd9KQorCXsKKwkJ dXNsZWVwKDEwMF8wMDApOworCQlwcmludCAid2FpdGluZyBmb3Igc2xvdCB0byBiZWNvbWUg YWN0aXZlXG4iOworCX0KKwlyZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMgQ2hl Y2sgaWYgYWxsIHRoZSBzbG90cyBvbiBzdGFuZGJ5IGFyZSBkcm9wcGVkLiBUaGVzZSBpbmNs dWRlIHRoZSAnYWN0aXZlc2xvdCcKKyMgdGhhdCB3YXMgYWNxdWlyZWQgYnkgbWFrZV9zbG90 X2FjdGl2ZSgpLCBhbmQgdGhlIG5vbi1hY3RpdmUgJ2Ryb3BzbG90Jy4KK3N1YiBjaGVja19z bG90c19kcm9wcGVkCit7CisJbXkgKCRzbG90X3VzZXJfaGFuZGxlKSA9IEBfOworCW15ICRy ZXR1cm47CisKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdkcm9wc2xvdCcpLT57J3Nsb3Rf dHlwZSd9LCAnJywgJ2Ryb3BzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCWlzKCRub2Rl X3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdhY3Rp dmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCisJIyBvdXIgY2xpZW50IHNob3VsZCd2 ZSB0ZXJtaW5hdGVkIGluIHJlc3BvbnNlIHRvIHRoZSB3YWxzZW5kZXIgZXJyb3IKKwlldmFs IHsKKwkJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsKKwl9OworCSRyZXR1cm4gPSAkPzsK KwljbXBfb2soJHJldHVybiwgIiE9IiwgMCwgInBnX3JlY3Zsb2dpY2FsIGV4aXRlZCBub24t emVyb1xuIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJyLCBxci9jb25mbGlj dCB3aXRoIHJlY292ZXJ5LywgJ3JlY3Zsb2dpY2FsIHJlY292ZXJ5IGNvbmZsaWN0Jyk7CisJ CWxpa2UoJHN0ZGVyciwgcXIvbXVzdCBiZSBkcm9wcGVkLywgJ3JlY3Zsb2dpY2FsIGVycm9y IGRldGFpbCcpOworCX0KKworCXJldHVybiAwOworfQorCisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBJbml0aWFsaXplIG1hc3RlciBub2RlCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworJG5vZGVfbWFzdGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwgaGFz X2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9z bG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVi dWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKKyMgc2VuZCBzdGF0dXMgcmFw aWRseSBzbyB3ZSBwcm9tcHRseSBhZHZhbmNlIHhtaW4gb24gbWFzdGVyCit3YWxfcmVjZWl2 ZXJfc3RhdHVzX2ludGVydmFsID0gMQorIyB2ZXJ5IHByb21wdGx5IHRlcm1pbmF0ZSBjb25m bGljdGluZyBiYWNrZW5kcworbWF4X3N0YW5kYnlfc3RyZWFtaW5nX2RlbGF5ID0gJzJzJwor fSk7Ciskbm9kZV9tYXN0ZXItPmR1bXBfaW5mbzsKKyRub2RlX21hc3Rlci0+c3RhcnQ7CisK KyRub2RlX21hc3Rlci0+cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0 ZGJdKTsKKworJG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAq IEZST00gcGdfY3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRtYXN0ZXJfc2xv dG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9tYXN0ZXItPmJh Y2t1cCgkYmFja3VwX25hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0 aWFsaXplIHNsYXZlIG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3N0 YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfbWFzdGVyLCAkYmFja3VwX25hbWUs CisJaGFzX3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9z dGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcVtwcmltYXJ5X3Ns b3RfbmFtZSA9ICckbWFzdGVyX3Nsb3RuYW1lJ10pOworJG5vZGVfc3RhbmRieS0+c3RhcnQ7 Ciskbm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxh eScsICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGlj dDogRHJvcCBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBT Y2VuYXJpbyAxIDogaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNhbF9z bG90cygpOworCisjIE9uZSB3YXkgdG8gcmVwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlz IHRvIHJ1biBWQUNVVU0gRlVMTCB3aXRoCisjIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5l ZCBvZmYgb24gc2xhdmUuCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvZmYKK10pOworJG5vZGVfc3Rh bmRieS0+cmVzdGFydDsKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIG9mZiBieSB3 YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gbWFzdGVy LiBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhzX2ZlZWRiYWNrIGlzIG9mZgord2FpdF9m b3JfeG1pbnMoJG5vZGVfbWFzdGVyLCAkbWFzdGVyX3Nsb3RuYW1lLAorCQkJICAgInhtaW4g SVMgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoKTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAor JG5vZGVfbWFzdGVyLT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gRlVMTCcpOworCisk bm9kZV9tYXN0ZXItPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScs ICRub2RlX21hc3Rlci0+bHNuKCdmbHVzaCcpKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgk aGFuZGxlKTsKKworY2hlY2tfY29uZmxfbG9naWNhbHNsb3QoKTsKKworIyBUdXJuIGhvdF9z dGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KKyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitdKTsKKyRu b2RlX3N0YW5kYnktPnJlc3RhcnQ7CisKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNr IHNlbnQgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWlu IG9uIG1hc3Rlci4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91bGQg YWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwg c2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVf bWFzdGVyLCAkbWFzdGVyX3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMgTk9UIE5VTEwgQU5E IGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBEcm9wIGNv bmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDIg OiBpbmNvcnJlY3Qgd2FsX2xldmVsIGF0IG1hc3RlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMo KTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoKTsKKworIyBNYWtlIG1hc3RlciB3 YWxfbGV2ZWwgcmVwbGljYS4gVGhpcyB3aWxsIHRyaWdnZXIgc2xvdCBjb25mbGljdC4KKyRu b2RlX21hc3Rlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZl bCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9tYXN0ZXItPnJlc3RhcnQ7CisKKyRub2RlX21h c3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVf bWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCitjaGVja19zbG90c19kcm9wcGVkKCRoYW5kbGUp OworCitjaGVja19jb25mbF9sb2dpY2Fsc2xvdCgpOworCisjIFJlc3RvcmUgbWFzdGVyIHdh bF9sZXZlbAorJG5vZGVfbWFzdGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxx Wword2FsX2xldmVsID0gJ2xvZ2ljYWwnCitdKTsKKyRub2RlX21hc3Rlci0+cmVzdGFydDsK KyRub2RlX21hc3Rlci0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5 JywgJG5vZGVfbWFzdGVyLT5sc24oJ2ZsdXNoJykpOworCisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERST1AgREFUQUJBU0Ugc2hv dWxkIGRyb3BzIGl0J3Mgc2xvdHMsIGluY2x1ZGluZyBhY3RpdmUgc2xvdHMuCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVf bG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoKTsKKyMgQ3Jl YXRlIGEgc2xvdCBvbiBhIGRhdGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQuIFRo aXMgc2xvdCBzaG91bGQgbm90CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+Y3Jl YXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX21hc3RlciwgJ290aGVyc2xvdCcs ICdwb3N0Z3JlcycpOworCisjIGRyb3BkYiBvbiB0aGUgbWFzdGVyIHRvIHZlcmlmeSBzbG90 cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5Ciskbm9kZV9tYXN0ZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxW0RST1AgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX21hc3Rlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfbWFzdGVyLT5s c24oJ2ZsdXNoJykpOworCitpcygkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxW1NFTEVDVCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBk YXRuYW1lID0gJ3Rlc3RkYicpXSksICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFu ZGJ5Jyk7CisKK2NoZWNrX3Nsb3RzX2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0 YW5kYnktPnNsb3QoJ290aGVyc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJ J290aGVyc2xvdCBvbiBzdGFuZGJ5IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1h bnVhbGx5IGRyb3AgdGhlIHNsb3QgdGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dCgnb3RoZXJzbG90JyldKTsKLS0gCjIuMTguNAoK --------------75EF1C85D54B8D5C1916957E Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v18-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v18-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" RnJvbSAyNzQ2YzFmNDczODgyOTBiYzUyM2MyZGNkZjlhYjEyZGNkMTg2ZTQxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdCA8YmRyb3V2b3RAZ21haWwuY29tPgpE YXRlOiBTdW4sIDEzIEp1biAyMDIxIDE3OjE3OjM4ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2 MTggNS81XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNhbAog ZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24p LCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJh bmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJv eWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwgMjEg KysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygr KQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwK aW5kZXggZDJjNmUxNTU2Ni4uZjhkMjk0NjE0OSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rp bmcuc2dtbApAQCAtMjk3LDYgKzI5NywyNyBAQCBwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZyb20g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBO VQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFueSBnaXZlbiB0 aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2ljYWwgcmVwbGlj YXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5kYnkuIFRvIHBy ZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJlbW92aW5nIHJl cXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8dmFybmFtZT5o b3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBvbiB0aGUKKyAg ICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVkIHJvd3MgZ2V0 IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgaW52YWxpZGF0ZWQuIEl0J3MgaGlnaGx5 IHJlY29tbWVuZGVkIHRvIHVzZSBhIHBoeXNpY2FsIHNsb3QgYmV0d2VlbiB0aGUgcHJpbWFy eQorICAgICBhbmQgdGhlIHN0YW5kYnkuIE90aGVyd2lzZSwgaG90X3N0YW5kYnlfZmVlZGJh Y2sgd2lsbCB3b3JrLCBidXQgb25seSB3aGlsZSB0aGUgCisgICAgIGNvbm5lY3Rpb24gaXMg YWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4gRXhp c3RpbmcgCisgICAgIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBhbHNvIGdldCBpbnZhbGlk YXRlZCBpZiB3YWxfbGV2ZWwgb24gcHJpbWFyeSBpcyByZWR1Y2VkIHRvCisgICAgIGxlc3Mg dGhhbiAnbG9naWNhbCcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIEZvciBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkLCBpdCBidWlsZHMgYSBoaXN0b3JpYyBzbmFw c2hvdCwgZm9yIHdoaWNoCisgICAgIGluZm9ybWF0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5 IHJ1bm5pbmcgdHJhbnNhY3Rpb25zIGlzIGVzc2VudGlhbC4gT24KKyAgICAgcHJpbWFyeSwg dGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUsIGJ1dCBvbiBzdGFuZGJ5LCB0aGlzIGlu Zm9ybWF0aW9uCisgICAgIGhhcyB0byBiZSBvYnRhaW5lZCBmcm9tIHByaW1hcnkuIFNvLCBz bG90IGNyZWF0aW9uIG1heSB3YWl0IGZvciBzb21lCisgICAgIGFjdGl2aXR5IHRvIGhhcHBl biBvbiB0aGUgcHJpbWFyeS4gSWYgdGhlIHByaW1hcnkgaXMgaWRsZSwgY3JlYXRpbmcgYQor ICAgICBsb2dpY2FsIHNsb3Qgb24gc3RhbmRieSBtYXkgdGFrZSBhIG5vdGljZWFibGUgdGlt ZS4KKyAgICA8L3BhcmE+CisKICAgICA8Y2F1dGlvbj4KICAgICAgPHBhcmE+CiAgICAgICBS ZXBsaWNhdGlvbiBzbG90cyBwZXJzaXN0IGFjcm9zcyBjcmFzaGVzIGFuZCBrbm93IG5vdGhp bmcgYWJvdXQgdGhlIHN0YXRlCi0tIAoyLjE4LjQKCg== --------------75EF1C85D54B8D5C1916957E--