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 1pMWtA-0003ZG-Qr for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jan 2023 16:20:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pMWt9-0006No-J3 for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Jan 2023 16:20:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pMWt8-0006Ne-UD for pgsql-hackers@lists.postgresql.org; Mon, 30 Jan 2023 16:20:11 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pMWsx-0002V1-R9 for pgsql-hackers@postgresql.org; Mon, 30 Jan 2023 16:20:10 +0000 Received: by mail-wr1-x42f.google.com with SMTP id y1so11623352wru.2 for ; Mon, 30 Jan 2023 08:19:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=LYKm0e7vhzZv6rjMWS5cORbt6Ls/w+Q+Lhca2fwmhtY=; b=G+x8YIkogT0zkqKeJX7F7OWcWKZ1n/FvOgJA2KG1n9sMjVLiU2vzNUG1FLqGJH8DAN DrOBagpeGqR6nMFwSRAFYp2ekA5nxre7cyzVVFE5SJlYYBYQx4tpnuXWoo5wsPgImosT XZmGGj7p5TVr4QYlfrNQ4kOxRf41Gm5yPbV3rB9ICyqZONQ69LSptbtH4Afsz4gYVzw4 piHBnWtNvFA9uZxa0k62YeK5qzfcj0FBRJ5Z8mZ4iCDa+pphyakUSbJ86QsN2zitCaTO ZAGf4dXxUt65/LW/eoRBZhq6AdFwuo5n69htA9hoktXqaLzhrZog45OU1x0l9151gXOZ q8Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:to:from:content-language:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=LYKm0e7vhzZv6rjMWS5cORbt6Ls/w+Q+Lhca2fwmhtY=; b=Kz+MHTuXcqd91DIVuvNkODeKP3Z4lqEhWgENsD5cYte5v2ZotrZvW2A2aAQDw9MMNU NcghVJBap3oTnCI7pHCC/+c8K3p9sBfQK+1+7hbdwM+WrXe6+/k+q6a6MbVoPhozT1KJ u5UG9mmJupi8lTwJEq5376uDiUw93lZe+8+hzkRNwfejX5GLUzcaU4KexoBsMIqXJR9X cjW/+nZshapTo+5OKum8XRnwXV1eBqyLS+7CTW05pc5IaLaFqIQqRpq/9BVMuyZa8FvU xeOoS9a2ditOCM7EiMiqxjZixvZYGtuZ26mXR3WWnrBhODO3q4Ngcg/1fR8vxguPPN55 IuVA== X-Gm-Message-State: AO0yUKUVh+cQslM1LcbOYnQbAXEiaG2WDreCrsXcP8BXewGxuRgzUHbs sKPuhcjT8IzLTimNCNGPfJA= X-Google-Smtp-Source: AK7set8UkQsBMMm7D1WYIOKcUreRUnaMAL4E2Yrqxd8i14QUrYpmnCtgIplLo0cu8mgFghjKh2G5Kg== X-Received: by 2002:adf:f410:0:b0:2bf:e778:6500 with SMTP id g16-20020adff410000000b002bfe7786500mr5941086wro.64.1675095597254; Mon, 30 Jan 2023 08:19:57 -0800 (PST) Received: from [192.168.22.223] ([54.239.6.189]) by smtp.gmail.com with ESMTPSA id b11-20020adfe30b000000b002bfcc940014sm11077172wrj.82.2023.01.30.08.19.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 30 Jan 2023 08:19:56 -0800 (PST) Content-Type: multipart/mixed; boundary="------------xcV5bng7yz5XMd7kxCkCzz4E" Message-ID: Date: Mon, 30 Jan 2023 17:18:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Minimal logical decoding on standbys Content-Language: en-US From: "Drouvot, Bertrand" To: Andres Freund , Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers , Melanie Plageman References: <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> <490206c5-bcde-e558-628a-dc67dae4d439@gmail.com> <20230119024617.jzsgpcrgjdc6ysge@awork3.anarazel.de> <9e978c6c-0a6e-9271-1203-800c17d91d10@gmail.com> <20230123232121.5zs7dd45f442ozwu@liskov> <655d1dde-4d45-69a4-af7d-c4752ab34c11@gmail.com> In-Reply-To: <655d1dde-4d45-69a4-af7d-c4752ab34c11@gmail.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, Just realized that Melanie was missing in the up-thread reply to her feedback (not sure what happened, sorry about that).... So, adding her here. Please find attached V45 addressing Melanie's feedback. On 1/24/23 3:59 PM, Drouvot, Bertrand wrote: > Hi, > > On 1/24/23 12:21 AM, Melanie Plageman wrote: >> I'm new to this thread and subject, but I had a few basic thoughts about >> the first patch in the set. >> > > Thanks for looking at it! > >> On Mon, Jan 23, 2023 at 12:03:35PM +0100, Drouvot, Bertrand wrote: >>> 1. We want to enable logical decoding on standbys, but replay of WAL >>> from the primary might remove data that is needed by logical decoding, >>> causing replication conflicts much as hot standby does. >> >> It is a little confusing to mention replication conflicts in point 1. It >> makes it sound like it already logs a recovery conflict. Without the >> recovery conflict handling in this patchset, logical decoding of >> statements using data that has been removed will fail with some error >> like : >>     ERROR:  could not map filenumber "xxx" to relation OID >> Part of what this patchset does is introduce the concept of a new kind >> of recovery conflict and a resolution process. Changed the wording in V45's commit message. >>> 3. To do this we need the latestRemovedXid for each change, just as we >>> do for physical replication conflicts, but we also need to know >>> whether any particular change was to data that logical replication >>> might access. > >> It isn't clear from the above sentence why you would need both. I think >> it has something to do with what is below (hot_standby_feedback being >> off), but I'm not sure, so the order is confusing. > Trying to be more clear in the new commit message. > >>> Implementation: >>> >>> When a WAL replay on standby indicates that a catalog table tuple is >>> to be deleted by an xid that is greater than a logical slot's >>> catalog_xmin, then that means the slot's catalog_xmin conflicts with >>> the xid, and we need to handle the conflict. While subsequent commits >>> will do the actual conflict handling, this commit adds a new field >>> isCatalogRel in such WAL records (and a new bit set in the >>> xl_heap_visible flags field), that is true for catalog tables, so as to >>> arrange for conflict handling. >> >> You do mention it a bit here, but I think it could be more clear and >> specific. > Added the WAL record types impacted by the change in the new commit message. >> >> It is not very important, but I noticed you made "heaprel" the last >> parameter to all of the btree-related functions but the first parameter >> to the gist functions. I thought it might be nice to make the order >> consistent. > > Agree, will do. Done. > >> I also was wondering why you made it the last argument to >> all the btree functions to begin with (i.e. instead of directly after >> the first rel argument). >> > > No real reasons, will put all of them after the first rel argument (that seems a better place). Done. > >>> diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h >>> index 8af33d7b40..9bdac12baf 100644 >>> --- a/src/include/access/gist_private.h >>> +++ b/src/include/access/gist_private.h >>> @@ -440,7 +440,7 @@ extern XLogRecPtr gistXLogPageDelete(Buffer buffer, >>>                                        FullTransactionId xid, Buffer parentBuffer, >>>                                        OffsetNumber downlinkOffset); >>> -extern void gistXLogPageReuse(Relation rel, BlockNumber blkno, >>> +extern void gistXLogPageReuse(Relation heaprel, Relation rel, BlockNumber blkno, >>>                                 FullTransactionId deleteXid); >>>   extern XLogRecPtr gistXLogUpdate(Buffer buffer, >>> @@ -485,7 +485,7 @@ extern bool gistproperty(Oid index_oid, int attno, >>>   extern bool gistfitpage(IndexTuple *itvec, int len); >>>   extern bool gistnospace(Page page, IndexTuple *itvec, int len, OffsetNumber todelete, Size freespace); >>>   extern void gistcheckpage(Relation rel, Buffer buf); >>> -extern Buffer gistNewBuffer(Relation r); >>> +extern Buffer gistNewBuffer(Relation heaprel, Relation r); >>>   extern bool gistPageRecyclable(Page page); >>>   extern void gistfillbuffer(Page page, IndexTuple *itup, int len, >>>                              OffsetNumber off); >>> diff --git a/src/include/access/gistxlog.h b/src/include/access/gistxlog.h >>> index 09f9b0f8c6..191f0e5808 100644 >>> --- a/src/include/access/gistxlog.h >>> +++ b/src/include/access/gistxlog.h >>> @@ -51,13 +51,13 @@ typedef struct gistxlogDelete >>>   { >>>       TransactionId snapshotConflictHorizon; >>>       uint16        ntodelete;        /* number of deleted offsets */ >>> +    bool        isCatalogRel; >> >> In some of these struct definitions, I think it would help comprehension >> to have a comment explaining the purpose of this member. >> > > Yeah, agree but it could be done in another patch (outside of this feature), agree? Please forget about my previous reply (I misunderstood and thought you were mentioning the offset's Array). Added comments about isCatalogRel in V45 attached. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; name="v45-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v45-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNDVkMDJlZGVlZWQyNGU2MDRjMWU0OGNmMzljMDkyMjRlYWMxNjQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAzMCBKYW4gMjAyMyAxNTo0NDowMCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ1IDYvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRlOTEyYjRiZDQuLjJlOGJlZTAzM2YgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAg IFJlcGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90 aGluZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; name="v45-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v45-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA2MTQ3MWNhNjg3YWE5NWViMzM0ZmQyMzQ0ODgzNmJjODEwMGVkOTJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAzMCBKYW4gMjAyMyAxNTo0MzoyMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ1IDUvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzkgKysKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICB8ICAgMSArCiAuLi4vdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAg ICAgfCA2NTggKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY5OCBpbnNl cnRpb25zKCspCiAgIDUuMCUgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvCiAgOTQu OCUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi5mZDgxZGRjZjM5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0 NSBAQCAkU0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAk bm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIHByaW1hcnksIHNs b3RfbmFtZSwgZGJuYW1lKQorCitDcmVhdGUgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IG9u IGdpdmVuIHN0YW5kYnkKKworPWN1dAorCitzdWIgY3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9z dGFuZGJ5Cit7CisJbXkgKCRzZWxmLCAkcHJpbWFyeSwgJHNsb3RfbmFtZSwgJGRibmFtZSkg PSBAXzsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhh bmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYt PmNvbm5zdHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3Rf bmFtZSwgJy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIp OworCisJIyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkg bG9va3MgZm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVz dGFydF9sc24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMg cmVzdGFydF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwo CisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFt ZSA9ICckc2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxv Z2ljYWwgc2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFy cmFuZ2UgZm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVj dmxvZ2ljYWwKKwkjIGlzIHdhaXRpbmcuCisJIyBOb3RlOiBXcml0ZSBhIEMgaGVscGVyIGZ1 bmN0aW9uIHRvIGNhbGwgTG9nU3RhbmRieVNuYXBzaG90KCkgaW5zdGVhZAorCSMgb2YgYXNr aW5nIGZvciBhIGNoZWNrcG9pbnQuCisJJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+ c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1l IC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUg c2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKaW5kZXggZWRhYWExYTNjZS4uNTJiMjgxNmM3YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsJywKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9y ZXVzZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCisgICAgICAn dC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsJywKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQzNzBk NTk1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTAsMCArMSw2NTggQEAKKyMgbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5IDogdGVzdCBsb2dpY2FsIGRlY29kaW5nLAorIyByZWNvdmVy eSBjb25mbGljdCBhbmQgc3RhbmRieSBwcm9tb3Rpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNjI7CisKK215 ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsKKwor bXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJp bWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3RhbmRieScpOworbXkgJGRlZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OworbXkgJHJlczsKKworIyBOYW1lIGZvciB0 aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmltYXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdw cmltYXJ5X3BoeXNpY2FsJzsKKworIyBmaW5kICRwYXQgaW4gbG9nZmlsZSBvZiAkbm9kZSBh ZnRlciAkb2ZmLXRoIGJ5dGUKK3N1YiBmaW5kX2luX2xvZworeworCW15ICgkbm9kZSwgJHBh dCwgJG9mZikgPSBAXzsKKworCSRvZmYgPSAwIHVubGVzcyBkZWZpbmVkICRvZmY7CisJbXkg JGxvZyA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRub2RlLT5sb2dm aWxlKTsKKwlyZXR1cm4gMCBpZiAobGVuZ3RoKCRsb2cpIDw9ICRvZmYpOworCisJJGxvZyA9 IHN1YnN0cigkbG9nLCAkb2ZmKTsKKworCXJldHVybiAkbG9nID1+IG0vJHBhdC87Cit9CisK KyMgRmV0Y2ggeG1pbiBjb2x1bW5zIGZyb20gc2xvdCdzIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz IHJvdywgYWZ0ZXIgd2FpdGluZyBmb3IKKyMgZ2l2ZW4gYm9vbGVhbiBjb25kaXRpb24gdG8g YmUgdHJ1ZSB0byBlbnN1cmUgd2UndmUgcmVhY2hlZCBhIHF1aWVzY2VudCBzdGF0ZS4KK3N1 YiB3YWl0X2Zvcl94bWlucworeworCW15ICgkbm9kZSwgJHNsb3RuYW1lLCAkY2hlY2tfZXhw cikgPSBAXzsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCBx cVsKKwkJU0VMRUNUICRjaGVja19leHByCisJCUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNh dGlvbl9zbG90cworCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3RuYW1lJzsKKwldKSBvciBk aWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHhtaW5zIHRvIGFkdmFuY2UiOworfQor CisjIENyZWF0ZSB0aGUgcmVxdWlyZWQgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5Lgorc3Vi IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzCit7CisJJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2lj YWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdpbmFjdGl2ZXNsb3QnLCAndGVz dGRiJyk7CisJJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5 KCRub2RlX3ByaW1hcnksICdhY3RpdmVzbG90JywgJ3Rlc3RkYicpOworfQorCisjIERyb3Ag dGhlIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBkcm9wX2xvZ2ljYWxfc2xvdHMK K3sKKwkkbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKwkkbm9kZV9zdGFuZGJ5LT5w c3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0 aXZlc2xvdCcpXSk7Cit9CisKKyMgQWNxdWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNh bCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ug d2FpdCBpcyB0cnVlIHdlIGFyZSB3YWl0aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAn YWN0aXZlc2xvdCcgc2xvdC4KKyMgSWYgd2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBh cmUgdGVzdGluZyBhIGtub3duIGZhaWx1cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2Fj dGl2ZQoreworCW15ICR3YWl0ID0gc2hpZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisK Kwkkc2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2Fs JywgJy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVzdGRiJyksICctUycsICdhY3Rp dmVzbG90JywgJy1vJywgJ2luY2x1ZGUteGlkcz0wJywgJy1vJywgJ3NraXAtZW1wdHkteGFj dHM9MScsICctLW5vLWxvb3AnLCAnLS1zdGFydCcsICctZicsICctJ10sICc+JywgXCRzdGRv dXQsICcyPicsIFwkc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwl7CisJCSMgbWFrZSBzdXJl IGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJCSRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50 aWwoJ3Rlc3RkYicsCisJCQkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19yZXBs aWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xvdCcgQU5EIGFjdGl2 ZV9waWQgSVMgTk9UIE5VTEwpIgorCQkpIG9yIGRpZSAic2xvdCBuZXZlciBiZWNhbWUgYWN0 aXZlIjsKKwl9CisJcmV0dXJuICRzbG90X3VzZXJfaGFuZGxlOworfQorCisjIENoZWNrIHBn X3JlY3Zsb2dpY2FsIHN0ZGVycgorc3ViIGNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycgor eworCW15ICgkc2xvdF91c2VyX2hhbmRsZSwgJGNoZWNrX3N0ZGVycikgPSBAXzsKKwlteSAk cmV0dXJuOworCisJIyBvdXIgY2xpZW50IHNob3VsZCd2ZSB0ZXJtaW5hdGVkIGluIHJlc3Bv bnNlIHRvIHRoZSB3YWxzZW5kZXIgZXJyb3IKKwkkc2xvdF91c2VyX2hhbmRsZS0+ZmluaXNo OworCSRyZXR1cm4gPSAkPzsKKwljbXBfb2soJHJldHVybiwgIiE9IiwgMCwgInBnX3JlY3Zs b2dpY2FsIGV4aXRlZCBub24temVybyIpOworCWlmICgkcmV0dXJuKSB7CisJCWxpa2UoJHN0 ZGVyciwgcXIvJGNoZWNrX3N0ZGVyci8sICdzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkJyk7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKKyMgQ2hlY2sgaWYgYWxsIHRoZSBzbG90cyBvbiBz dGFuZGJ5IGFyZSBkcm9wcGVkLiBUaGVzZSBpbmNsdWRlIHRoZSAnYWN0aXZlc2xvdCcKKyMg dGhhdCB3YXMgYWNxdWlyZWQgYnkgbWFrZV9zbG90X2FjdGl2ZSgpLCBhbmQgdGhlIG5vbi1h Y3RpdmUgJ2luYWN0aXZlc2xvdCcuCitzdWIgY2hlY2tfc2xvdHNfZHJvcHBlZAoreworCW15 ICgkc2xvdF91c2VyX2hhbmRsZSkgPSBAXzsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3Qo J2luYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2luYWN0aXZlc2xvdCBvbiBz dGFuZGJ5IGRyb3BwZWQnKTsKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90 JyktPnsnc2xvdF90eXBlJ30sICcnLCAnYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQn KTsKKworCWNoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkc2xvdF91c2VyX2hhbmRsZSwg ImNvbmZsaWN0IHdpdGggcmVjb3ZlcnkiKTsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNs b3RzIG9uIHN0YW5kYnkgYXJlIGRyb3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVz bG90JworIyB0aGF0IHdhcyBhY3F1aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0 aGUgbm9uLWFjdGl2ZSAnaW5hY3RpdmVzbG90Jy4KK3N1YiBjaGFuZ2VfaG90X3N0YW5kYnlf ZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zCit7CisJbXkgKCRoc2YsICRpbnZhbGlkYXRl ZCkgPSBAXzsKKworCSRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFxWworCWhvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gJGhzZgorCV0pOworCisJJG5vZGVf c3RhbmRieS0+cmVsb2FkOworCisJaWYgKCRoc2YgJiYgJGludmFsaWRhdGVkKQorCXsKKwkJ IyBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZhbmNlLAor CQkjIGJ1dCBjYXRhbG9nX3htaW4gc2hvdWxkIHN0aWxsIHJlbWFpbiBOVUxMIHNpbmNlIHRo ZXJlIGlzIG5vIGxvZ2ljYWwgc2xvdC4KKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFy eSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0 YWxvZ194bWluIElTIE5VTEwiKTsKKwl9CisJZWxzaWYgKCRoc2YpCisJeworCQkjIFdpdGgg aG90X3N0YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gYW5kIGNhdGFsb2dfeG1pbiBzaG91bGQg YWR2YW5jZS4KKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xv dG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5P VCBOVUxMIik7CisJfQorCWVsc2UKKwl7CisJCSMgQm90aCBzaG91bGQgYmUgTlVMTCBzaW5j ZSBoc19mZWVkYmFjayBpcyBvZmYKKwkJd2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwg JHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBjYXRhbG9nX3ht aW4gSVMgTlVMTCIpOworCisJfQorfQorCisjIENoZWNrIGNvbmZsaWN0aW5nIHN0YXR1cyBp biBwZ19yZXBsaWNhdGlvbl9zbG90cy4KK3N1YiBjaGVja19zbG90c19jb25mbGljdGluZ19z dGF0dXMKK3sKKwlteSAoJGNvbmZsaWN0aW5nKSA9IEBfOworCisJaWYgKCRjb25mbGljdGlu ZykKKwl7CisJCSRyZXMgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJCQkJJ3Bvc3Rn cmVzJywgcXEoCisJCQkJIHNlbGVjdCBib29sX2FuZChjb25mbGljdGluZykgZnJvbSBwZ19y ZXBsaWNhdGlvbl9zbG90czspKTsKKworCQlpcygkcmVzLCAndCcsCisJCQkiTG9naWNhbCBz bG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3RpbmciKTsKKwl9CisJZWxzZQorCXsKKwkJ JHJlcyA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkJCQkncG9zdGdyZXMnLCBxcSgK KwkJCQlzZWxlY3QgYm9vbF9vcihjb25mbGljdGluZykgZnJvbSBwZ19yZXBsaWNhdGlvbl9z bG90czspKTsKKworCQlpcygkcmVzLCAnZicsCisJCQkiTG9naWNhbCBzbG90cyBhcmUgcmVw b3J0ZWQgYXMgbm9uIGNvbmZsaWN0aW5nIik7CisJfQorfQorCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCiskbm9kZV9wcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSwg aGFzX2FyY2hpdmluZyA9PiAxKTsKKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCBxeword2FsX2xldmVsID0gJ2xvZ2ljYWwnCittYXhfcmVwbGljYXRp b25fc2xvdHMgPSA0CittYXhfd2FsX3NlbmRlcnMgPSA0Citsb2dfbWluX21lc3NhZ2VzID0g J2RlYnVnMicKK2xvZ19lcnJvcl92ZXJib3NpdHkgPSB2ZXJib3NlCit9KTsKKyRub2RlX3By aW1hcnktPmR1bXBfaW5mbzsKKyRub2RlX3ByaW1hcnktPnN0YXJ0OworCiskbm9kZV9wcmlt YXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRlc3RkYl0pOworCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1NFTEVDVCAqIEZST00gcGdf Y3JlYXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJyRwcmltYXJ5X3Nsb3RuYW1lJyk7 XSk7CisKKyMgQ2hlY2sgY29uZmxpY3RpbmcgaXMgTlVMTCBmb3IgcGh5c2ljYWwgc2xvdAor JHJlcyA9ICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJ CSBTRUxFQ1QgY29uZmxpY3RpbmcgaXMgbnVsbCBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz IHdoZXJlIHNsb3RfbmFtZSA9ICckcHJpbWFyeV9zbG90bmFtZSc7XSk7CisKK2lzKCRyZXMs ICd0JywKKwkiUGh5c2ljYWwgc2xvdCByZXBvcnRzIGNvbmZsaWN0aW5nIGFzIE5VTEwiKTsK KworbXkgJGJhY2t1cF9uYW1lID0gJ2IxJzsKKyRub2RlX3ByaW1hcnktPmJhY2t1cCgkYmFj a3VwX25hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHN0 YW5kYnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+ aW5pdF9mcm9tX2JhY2t1cCgKKwkkbm9kZV9wcmltYXJ5LCAkYmFja3VwX25hbWUsCisJaGFz X3N0cmVhbWluZyA9PiAxLAorCWhhc19yZXN0b3JpbmcgPT4gMSk7Ciskbm9kZV9zdGFuZGJ5 LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcVtwcmltYXJ5X3Nsb3RfbmFt ZSA9ICckcHJpbWFyeV9zbG90bmFtZSddKTsKKyRub2RlX3N0YW5kYnktPnN0YXJ0OworJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHRoYXQgbG9naWNhbCBk ZWNvZGluZyBvbiB0aGUgc3RhbmRieQorIyBiZWhhdmVzIGNvcnJlY3RseS4KKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgY3JlYXRl IHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190 ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywgcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBz Ojp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMg ZGVjb2Rpbmcgd29ya3MKK2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJl c3VsdCksCisJMTQsICdEZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzICgyIEJFR0lOL0NPTU1J VCBhbmQgMTAgcm93cyknKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGFuZCB2ZXJpZnkgdGhh dCB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0cyBmcm9tIHBnX3JlY3Zsb2dpY2FsCisjIGFuZCB0 aGUgU1FMIGludGVyZmFjZS4KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywK KwlxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBzO10KKyk7CisKK215ICRleHBlY3RlZCA9IHF7 QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06 MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtp bnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5T RVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190 ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRdOic0JworQ09NTUlUfTsKKworJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworbXkgJHN0ZG91dF9zcWwgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBw Z19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCwg J2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpO10KKyk7CisK K2lzKCRzdGRvdXRfc3FsLCAkZXhwZWN0ZWQsICdnb3QgZXhwZWN0ZWQgb3V0cHV0IGZyb20g U1FMIGRlY29kaW5nIHNlc3Npb24nKTsKKworbXkgJGVuZHBvcyA9ICRub2RlX3N0YW5kYnkt PnNhZmVfcHNxbCgndGVzdGRiJywKKwkiU0VMRUNUIGxzbiBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9wZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMKSBPUkRFUiBCWSBsc24g REVTQyBMSU1JVCAxOyIKKyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRlciAkZW5kcG9z LCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6 dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5k YnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90Jywg JGVuZHBvcywgJGRlZmF1bHRfdGltZW91dCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4g JzAnLAorICAgICdza2lwLWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9y ZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJGV4cGVjdGVkLAorICAgICdnb3Qgc2FtZSBleHBl Y3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2bG9naWNhbCBkZWNvZGluZyBzZXNzaW9uJyk7CisK KyRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBF WElTVFMgKFNFTEVDVCAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9u YW1lID0gJ2FjdGl2ZXNsb3QnIEFORCBhY3RpdmVfcGlkIElTIE5VTEwpIgorKSBvciBkaWUg InNsb3QgbmV2ZXIgYmVjYW1lIGluYWN0aXZlIjsKKworJHN0ZG91dF9yZWN2ID0gJG5vZGVf c3RhbmRieS0+cGdfcmVjdmxvZ2ljYWxfdXB0bygKKyAgICAndGVzdGRiJywgJ2FjdGl2ZXNs b3QnLCAkZW5kcG9zLCAkZGVmYXVsdF90aW1lb3V0LAorICAgICdpbmNsdWRlLXhpZHMnICAg ICA9PiAnMCcsCisgICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rk b3V0X3JlY3YpOworaXMoJHN0ZG91dF9yZWN2LCAnJywgJ3BnX3JlY3Zsb2dpY2FsIGFja25v d2xlZGdlZCBjaGFuZ2VzJyk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAnQ1JFQVRFIERBVEFCQVNFIG90aGVyZGInKTsKKworaXMoICRub2RlX3ByaW1hcnkt PnBzcWwoCisgICAgICAgICdvdGhlcmRiJywKKyAgICAgICAgIlNFTEVDVCBsc24gRlJPTSBw Z19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkg T1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCisgICAgKSwKKyAgICAzLAorICAgICdyZXBs YXlpbmcgbG9naWNhbCBzbG90IGZyb20gYW5vdGhlciBkYXRhYmFzZSBmYWlscycpOworCisj IGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNv dmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5n IGluLXVzZSBzbG90cworIyBTY2VuYXJpbyAxOiBob3Rfc3RhbmRieV9mZWVkYmFjayBvZmYg YW5kIHZhY3V1bSBGVUxMCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxp Y3QgaXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQKKyMgbGF1bmNoIGEgdmFjdXVt IGZ1bGwgb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2Zm IG9uCisjIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93 YWl0X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsK KworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFyeS0+ c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4IGlu dGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics IHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBmdWxsIHBnX2NsYXNzOycpOworCiskbm9kZV9wcmlt YXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9w cmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRo IHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNh dXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMIG9uIHBnX2NsYXNzJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5w b2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZl X2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVy ZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNs b3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xv Z2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0 ZWQgYXMgY29uZmxpY3RpbmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3Rz X2NvbmZsaWN0aW5nX3N0YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUo MCk7CisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFz IGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxl LCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVz bG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5n ZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwxKTsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVj b3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGlu ZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1v dmFsIHdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9u IHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9 IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90 cworZHJvcF9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3Rz CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCisjIE9uZSB3YXkgdG8gcHJvZHVjZSByZWNv dmVyeSBjb25mbGljdCBpcyB0byBjcmVhdGUvZHJvcCBhIHJlbGF0aW9uIGFuZAorIyBsYXVu Y2ggYSB2YWN1dW0gb24gcGdfY2xhc3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJu ZWQgb2ZmIG9uIHRoZSBzdGFuZGJ5LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2Fu ZF93YWl0X2Zvcl94bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgx KTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4 IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTSBwZ19jbGFzczsnKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29r KCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xv dCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxv Z2dlZCB3aXRoIHZhY3V1bSBvbiBwZ19jbGFzcycpOworCitvayggZmluZF9pbl9sb2coCisg ICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIg YmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdh Y3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBw Z19jbGFzcycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz LmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBl eHBlY3QgMiBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jv c3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bv c3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAyKSBmcm9t IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIs ICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJU aW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRl ZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBw Z19yZXBsaWNhdGlvbl9zbG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEp OworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKworIyBXZSBhcmUgbm90IGFi bGUgdG8gcmVhZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitj aGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20g bG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5 IGNvbmZsaWN0OiBTYW1lIGFzIFNjZW5hcmlvIDIgYnV0IG9uIGEgbm9uIGNhdGFsb2cgdGFi bGUKKyMgU2NlbmFyaW8gMzogTm8gY29uZmxpY3QgZXhwZWN0ZWQuCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9z aXRpb24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0 ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNs b3RzCitkcm9wX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xv dHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgcHV0IGhvdCBzdGFuZGJ5IGZlZWRi YWNrIHRvIG9mZgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94 bWlucygwLDEpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBUaGlz IHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBjb25mbGljdF90ZXN0KHggaW50ZWdlciwg eSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5T RVJUIElOVE8gY29uZmxpY3RfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsNCkgcztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVz dGRiJywgcXFbVVBEQVRFIGNvbmZsaWN0X3Rlc3Qgc2V0IHg9MSwgeT0xO10pOworJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCAnVkFDVVVNIGNvbmZsaWN0X3Rlc3Q7Jyk7 CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3Jl cGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgbWVzc2FnZSBzaG91 bGQgbm90IGJlIGlzc3VlZAorb2soICFmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnks CisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIG5vdCBsb2dnZWQgd2l0aCB2YWN1dW0gb24gY29uZmxpY3Rf dGVzdCcpOworCitvayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImlu dmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdp dGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRh dGlvbiBpcyBub3QgbG9nZ2VkIHdpdGggdmFjdXVtIG9uIGNvbmZsaWN0X3Rlc3QnKTsKKwor IyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVf bG9naWNhbHNsb3QgaGFzIG5vdCBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IHN0aWxsIGV4cGVj dCAyIGNvbmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyBy ZWxvYWRzCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdy ZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdf c3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3Qn KSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IG5vdCB1cGRhdGVkJykgb3IgZGllICJU aW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRl ZCI7CisKKyMgVmVyaWZ5IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBub24gY29uZmxpY3Rpbmcg aW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0YXR1 cygwKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9o b3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMCk7CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292 ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcg aW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDQ6IGNvbmZsaWN0IGR1ZSB0byBvbi1hY2Nlc3Mg cHJ1bmluZy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3Rh bmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwor CisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisj IGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKwor IyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8gdHJpZ2dlciBh biBvbi1hY2Nlc3MgcHJ1bmluZworIyBvbiBhIHJlbGF0aW9uIG1hcmtlZCBhcyB1c2VyX2Nh dGFsb2dfdGFibGUuCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9y X3htaW5zKDAsMCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRo aXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBwcnVuKGlkIGludGVnZXIsIHMgY2hhcigy MDAwKSkgV0lUSCAoZmlsbGZhY3RvciA9IDc1LCB1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVl KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElO VE8gcHJ1biBWQUxVRVMgKDEsICdBJyk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0InO10pOworJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdDJztdKTsK KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4gU0VU IHMgPSAnRCc7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQ REFURSBwcnVuIFNFVCBzID0gJ0UnO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2Zs dXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9n KAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVz bG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCks CisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggb24t YWNjZXNzIHBydW5pbmcnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRi eSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90 IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1bmluZycpOworCisj IFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGlj dHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcworb2so ICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2Vs ZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAzKSBmcm9tIHBnX3N0YXRfZGF0YWJh c2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZs X2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGlu ZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyMgVmVyaWZ5 IHNsb3RzIGFyZSByZXBvcnRlZCBhcyBjb25mbGljdGluZyBpbiBwZ19yZXBsaWNhdGlvbl9z bG90cworY2hlY2tfc2xvdHNfY29uZmxpY3Rpbmdfc3RhdHVzKDEpOworCiskaGFuZGxlID0g bWFrZV9zbG90X2FjdGl2ZSgwKTsKKworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBmcm9t IHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19yZWN2bG9n aWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNh dGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRieV9mZWVk YmFjayBiYWNrIG9uCitjaGFuZ2VfaG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9y X3htaW5zKDEsIDEpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0ZSBjb25mbGlj dGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJpbyA1OiBpbmNv cnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRpb24gdG8gc2Vh cmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0gLXMgJG5vZGVf c3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCitkcm9wX2xv Z2ljYWxfc2xvdHMoKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9s b2dpY2FsX3Nsb3RzKCk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisj IE1ha2UgcHJpbWFyeSB3YWxfbGV2ZWwgcmVwbGljYS4gVGhpcyB3aWxsIHRyaWdnZXIgc2xv dCBjb25mbGljdC4KKyRub2RlX3ByaW1hcnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLHFbCit3YWxfbGV2ZWwgPSAncmVwbGljYScKK10pOworJG5vZGVfcHJpbWFyeS0+cmVz dGFydDsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5 LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdl IHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnks CisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gd2FsX2xldmVsJyk7CisKK29rKCBm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBc ImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiwgJGxv Z3N0YXJ0KSwKKyAgJ2FjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1 ZSB0byB3YWxfbGV2ZWwnKTsKKworIyBWZXJpZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2Nv bmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3 ZSBub3cgZXhwZWN0IDMgY29uZmxpY3RzIHJlcG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNp c3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGls KAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0g NCkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rl c3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9y IGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJl IHVwZGF0ZWQiOworCisjIFZlcmlmeSBzbG90cyBhcmUgcmVwb3J0ZWQgYXMgY29uZmxpY3Rp bmcgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMKK2NoZWNrX3Nsb3RzX2NvbmZsaWN0aW5nX3N0 YXR1cygxKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7CisjIFdlIGFyZSBu b3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgcmVxdWlyZXMgd2FsX2xldmVs IGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyCitjaGVja19wZ19yZWN2 bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBy ZXF1aXJlcyB3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFy eSBzZXJ2ZXIiKTsKKworIyBSZXN0b3JlIHByaW1hcnkgd2FsX2xldmVsCiskbm9kZV9wcmlt YXJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJyxxWword2FsX2xldmVsID0gJ2xv Z2ljYWwnCitdKTsKKyRub2RlX3ByaW1hcnktPnJlc3RhcnQ7Ciskbm9kZV9wcmltYXJ5LT53 YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5 LT5sc24oJ2ZsdXNoJykpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKyMg YXMgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQgd2Ugc2hvdWxkIG5vdCBiZSBhYmxl IHRvIHJlYWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90 IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgRFJPUCBEQVRBQkFTRSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVkaW5nIGFj dGl2ZSBzbG90cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Ns b3RzKCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9z bG90cygpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKyMgQ3JlYXRlIGEg c2xvdCBvbiBhIGRhdGFiYXNlIHRoYXQgd291bGQgbm90IGJlIGRyb3BwZWQuIFRoaXMgc2xv dCBzaG91bGQgbm90CisjIGdldCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+Y3JlYXRlX2xv Z2ljYWxfc2xvdF9vbl9zdGFuZGJ5KCRub2RlX3ByaW1hcnksICdvdGhlcnNsb3QnLCAncG9z dGdyZXMnKTsKKworIyBkcm9wZGIgb24gdGhlIHByaW1hcnkgdG8gdmVyaWZ5IHNsb3RzIGFy ZSBkcm9wcGVkIG9uIHN0YW5kYnkKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxW0RST1AgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRf Zm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxz bignZmx1c2gnKSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXFbU0VMRUNUIEVYSVNUUyhTRUxFQ1QgMSBGUk9NIHBnX2RhdGFiYXNlIFdIRVJFIGRh dG5hbWUgPSAndGVzdGRiJyldKSwgJ2YnLAorCSdkYXRhYmFzZSBkcm9wcGVkIG9uIHN0YW5k YnknKTsKKworY2hlY2tfc2xvdHNfZHJvcHBlZCgkaGFuZGxlKTsKKworaXMoJG5vZGVfc3Rh bmRieS0+c2xvdCgnb3RoZXJzbG90JyktPnsnc2xvdF90eXBlJ30sICdsb2dpY2FsJywKKwkn b3RoZXJzbG90IG9uIHN0YW5kYnkgbm90IGRyb3BwZWQnKTsKKworIyBDbGVhbnVwIDogbWFu dWFsbHkgZHJvcCB0aGUgc2xvdCB0aGF0IHdhcyBub3QgZHJvcHBlZC4KKyRub2RlX3N0YW5k YnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90 KCdvdGhlcnNsb3QnKV0pOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHN0YW5kYnkgcHJvbW90aW9uIGFuZCBsb2dpY2Fs IGRlY29kaW5nIGJlaGF2aW9yCisjIGFmdGVyIHRoZSBzdGFuZGJ5IGdldHMgcHJvbW90ZWQu CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor Ciskbm9kZV9wcmltYXJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbQ1JFQVRFIERBVEFCQVNFIHRl c3RkYl0pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUg VEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7CisKKyMgY3JlYXRl IHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBiZWZvcmUgdGhl IHByb21vdGlvbgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lO U0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdm bHVzaCcpKTsKKworIyBwcm9tb3RlCiskbm9kZV9zdGFuZGJ5LT5wcm9tb3RlOworCisjIGlu c2VydCBzb21lIHJvd3Mgb24gcHJvbW90ZWQgc3RhbmRieQorJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBT RUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDcpIHM7XQorKTsKKwor JGV4cGVjdGVkID0gcXtCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VS VDogeFtpbnRlZ2VyXToxIHlbdGV4dF06JzEnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVz dDogSU5TRVJUOiB4W2ludGVnZXJdOjIgeVt0ZXh0XTonMicKK3RhYmxlIHB1YmxpYy5kZWNv ZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MyB5W3RleHRdOiczJwordGFibGUgcHVi bGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo0IHlbdGV4dF06JzQnCitD T01NSVQKK0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2lu dGVnZXJdOjUgeVt0ZXh0XTonNScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNF UlQ6IHhbaW50ZWdlcl06NiB5W3RleHRdOic2JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rl c3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo3IHlbdGV4dF06JzcnCitDT01NSVR9OworCisjIGNo ZWNrIHRoYXQgd2UgYXJlIGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0 ZWQgcm93cworJHN0ZG91dF9zcWwgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsCisJcXFbU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2Vz KCdpbmFjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tp cC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWwsICRleHBlY3Rl ZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vzc2lvbiBvbiBw cm9tb3RlZCBzdGFuZGJ5Jyk7CisKKyMgY2hlY2sgdGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJl IGFuZCBwb3N0IHByb21vdGlvbiBpbnNlcnRlZCByb3dzCisjIHdpdGggcGdfcmVjdmxvZ2lj YWwgdGhhdCBoYXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByb21vdGlvbgorbXkgJHB1bXBfdGlt ZW91dCA9IElQQzo6UnVuOjp0aW1lcigkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVv dXRfZGVmYXVsdCk7CisKK29rKCBwdW1wX3VudGlsKAorICAgICAgICAkaGFuZGxlLCAkcHVt cF90aW1lb3V0LCBcJHN0ZG91dCwgcXIvXi4qQ09NTUlULipDT01NSVQkL3MpLAorICAgICdn b3QgMiBDT01NSVQgZnJvbSBwZ19yZWN2bG9naWNhbCBvdXRwdXQnKTsKKworY2hvbXAoJHN0 ZG91dCk7Citpcygkc3Rkb3V0LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVk IG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKLS0gCjIu MzQuMQoK --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; name="v45-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v45-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzMWY2NzFiNTVmYzllYjllYmEyNzk5MTgyYWU1MGMyMGJhNmVkNmM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAzMCBKYW4gMjAyMyAxNTo0MjoyNiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ1IDQvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24KIHN0YW5kYnkuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IFdhbFNuZFdhaXRG b3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0bwppbmNyZWFzZSwgYnV0IGdl dHMgd29rZW4gdXAgYnkgd2FscmVjZWl2ZXIgd2hlbiBuZXcgV0FMIGhhcyBiZWVuCmZsdXNo ZWQuIFdoaWNoIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdhbHNlbmRlcnMgd2lsbCBnZXQgd29r ZW4gdXAgYXQgdGhlCnNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mgd2lsbCBi ZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlCnRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVy IGNoZWNrcyBHZXRYTG9nUmVwbGF5UmVjUHRyKCkgaXQncyB1bmxpa2VseQp0aGF0IHRoZSBz dGFydHVwIHByb2Nlc3MgYWxyZWFkeSByZXBsYXllZCB0aGUgcmVjb3JkIGFuZCB1cGRhdGVk ClhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KCkludHJvZHVjaW5nIGEgbmV3IGNv bmRpdGlvbiB2YXJpYWJsZSB0byBmaXggdGhpcyBjb3JuZXIgY2FzZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICB8IDMx ICsrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVy eS5oICAgICAgICAgfCAgMyArKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAg ICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiAgNDEuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDguNSUg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDMuNiUgc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvCiAgIDMuNCUgc3JjL2luY2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggMmE1MzUyZjg3OS4uYmIwZGU1Mjdh YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAg LTM1OCw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJ UmVjb3ZlcnlQYXVzZVN0YXRlIHJlY292ZXJ5UGF1c2VTdGF0ZTsKIAlDb25kaXRpb25WYXJp YWJsZSByZWNvdmVyeU5vdFBhdXNlZENWOwogCisJLyogUmVwbGF5IHN0YXRlIChzZWUgZ2V0 UmVwbGF5ZWRDVigpIGZvciBtb3JlIGV4cGxhbmF0aW9uKSAqLworCUNvbmRpdGlvblZhcmlh YmxlIHJlcGxheWVkQ1Y7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNoYXJl ZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ1JlY292ZXJ5Q3RsRGF0YTsKIApA QCAtNDY3LDYgKzQ3MCw3IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCVNwaW5M b2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7CiAJSW5pdFNoYXJlZExhdGNo KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNlZENWKTsKKwlD b25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVik7CiB9 CiAKIC8qCkBAIC0xOTE2LDYgKzE5MjAsMTEgQEAgQXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRl clN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpyZWNvcmQsIFRpbWVMaW5lSUQgKnJl cGwKIAlYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZFRMSSA9ICpyZXBsYXlUTEk7CiAJ U3BpbkxvY2tSZWxlYXNlKCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAorCS8qCisJ ICogd2FrZSB1cCB3YWxzZW5kZXIocykgdXNlZCBieSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0 YW5kYnkuCisJICovCisJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJlhMb2dSZWNvdmVy eUN0bC0+cmVwbGF5ZWRDVik7CisKIAkvKgogCSAqIElmIHJtX3JlZG8gY2FsbGVkIFhMb2dS ZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSwgdGhlbiB3ZSB3YWtlIHVwIHRoZQogCSAqIHJlY2Vp dmVyIHNvIHRoYXQgaXQgbm90aWNlcyB0aGUgdXBkYXRlZCBsYXN0UmVwbGF5ZWRFbmRSZWNQ dHIgYW5kIHNlbmRzCkBAIC00OTIzLDMgKzQ5MzIsMjIgQEAgYXNzaWduX3JlY292ZXJ5X3Rh cmdldF94aWQoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSkKIAllbHNlCiAJCXJl Y292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX1VOU0VUOwogfQorCisvKgorICogUmV0 dXJuIHRoZSBDb25kaXRpb25WYXJpYWJsZSBpbmRpY2F0aW5nIHRoYXQgYSByZXBsYXkgaGFz IGJlZW4gZG9uZS4KKyAqCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgbG9naWNhbCBkZWNvZGlu ZyBvbiBzdGFuZGJ5LiBJbmRlZWQgdGhlICJwcm9ibGVtIiBpcyB0aGF0CisgKiBXYWxTbmRX YWl0Rm9yV2FsKCkgd2FpdHMgZm9yIHRoZSAqcmVwbGF5KiBMU04gdG8gaW5jcmVhc2UsIGJ1 dCBnZXRzIHdva2VuIHVwCisgKiBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJl ZW4gZmx1c2hlZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkKKyAqIHdhbHNlbmRlcnMg d2lsbCBnZXQgd29rZW4gdXAgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHBy b2Nlc3MKKyAqIHdpbGwgYmUgLSB3aGljaCBtZWFucyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBs b2dpY2FsIHdhbHNlbmRlciBjaGVja3MKKyAqIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdz IHVubGlrZWx5IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkCisg KiB0aGUgcmVjb3JkIGFuZCB1cGRhdGVkIFhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0 ci4KKyAqCisgKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUgWExvZ1JlY292ZXJ5Q3RsLT5yZXBs YXllZENWIHNvbHZlcyB0aGlzIGNvcm5lciBjYXNlLgorICovCitDb25kaXRpb25WYXJpYWJs ZSAqCitnZXRSZXBsYXllZENWKHZvaWQpCit7CisJcmV0dXJuICZYTG9nUmVjb3ZlcnlDdGwt PnJlcGxheWVkQ1Y7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4 IDFlOTFjYmM1NjQuLmIzZmU1ZGJlYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCkBAIC0xNTUyLDYgKzE1NTIsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQ dHIgbG9jKQogewogCWludAkJCXdha2VFdmVudHM7CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVj ZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlDb25kaXRpb25WYXJpYWJsZSAq cmVwbGF5ZWRDViA9IGdldFJlcGxheWVkQ1YoKTsKIAogCS8qCiAJICogRmFzdCBwYXRoIHRv IGF2b2lkIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtub3cg d2UKQEAgLTE1NzAsNyArMTU3MSw2IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiAKIAlmb3IgKDs7KQogCXsKLQkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFy IGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwogCQlSZXNldExhdGNoKE15TGF0Y2gp OwpAQCAtMTY1NCwyMCArMTY1NCwzNSBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIg bG9jKQogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCiAJCS8qCi0JCSAqIFNs ZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0LiAgQWxzbyB3YWl0 IGZvciB0aGUKLQkJICogc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVyZSdzIHN0 aWxsIHBlbmRpbmcgb3V0cHV0LgorCQkgKiBXaGVuIG5vdCBpbiByZWNvdmVyeSwgc2xlZXAg dW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuCisJCSAqIEFsc28gd2Fp dCBmb3IgdGhlIHNvY2tldCBiZWNvbWluZyB3cml0YWJsZSwgaWYgdGhlcmUncyBzdGlsbCBw ZW5kaW5nIG91dHB1dC4KIAkJICogT3RoZXJ3aXNlIHdlIG1pZ2h0IHNpdCBvbiBzZW5kYWJs ZSBvdXRwdXQgZGF0YSB3aGlsZSB3YWl0aW5nIGZvcgogCQkgKiBuZXcgV0FMIHRvIGJlIGdl bmVyYXRlZC4gIChCdXQgaWYgd2UgaGF2ZSBub3RoaW5nIHRvIHNlbmQsIHdlIGRvbid0CiAJ CSAqIHdhbnQgdG8gd2FrZSBvbiBzb2NrZXQtd3JpdGFibGUuKQogCQkgKi8KLQkJc2xlZXB0 aW1lID0gV2FsU25kQ29tcHV0ZVNsZWVwdGltZShHZXRDdXJyZW50VGltZXN0YW1wKCkpOwor CQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQl7CisJCQlsb25nCQlzbGVlcHRpbWU7 CisJCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7CiAKLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJCXdh a2VFdmVudHMgPSBXTF9TT0NLRVRfUkVBREFCTEU7CiAKLQkJaWYgKHBxX2lzX3NlbmRfcGVu ZGluZygpKQotCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJaWYg KHBxX2lzX3NlbmRfcGVuZGluZygpKQorCQkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VUX1dS SVRFQUJMRTsKIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9F VkVOVF9XQUxfU0VOREVSX1dBSVRfV0FMKTsKKwkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywg c2xlZXB0aW1lICogMTAsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0K KwkJZWxzZQorCQkvKgorCQkgKiBXZSBhcmUgaW4gdGhlIGxvZ2ljYWwgZGVjb2Rpbmcgb24g c3RhbmRieSBjYXNlLgorCQkgKiBXZSBhcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0dXAgcHJv Y2VzcyB0byByZXBsYXkgd2FsIHJlY29yZChzKSB1c2luZworCQkgKiBhIHRpbWVvdXQgaW4g Y2FzZSB3ZSBhcmUgcmVxdWVzdGVkIHRvIHN0b3AuCisJCSAqLworCQl7CisJCQlDb25kaXRp b25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKHJlcGxheWVkQ1YpOworCQkJQ29uZGl0aW9uVmFy aWFibGVUaW1lZFNsZWVwKHJlcGxheWVkQ1YsIDEwMDAsCisJCQkJCQkJCQkJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUg bGF0Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDZlNDU5OTI3OGMuLjM4Yzc0N2I3 ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2 Myw2ICs0NjMsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQlj YXNlIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1l ID0gIldhbFJlY2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2 ZXJXYWl0UmVwbGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9V UF9VUERBVEU6CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li5iNjVj MmNmMWYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0 IHR5cGUuCkBAIC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJl c0ludFBhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAog CiBleHRlcm4gdm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpnZXRSZXBsYXll ZENWKHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs dWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBk byB3aXRoIGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Y2FjZDZlZGFmLi4wNGEzN2ZlZWU0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9F WElULAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERB VEUKIH0gV2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; name="v45-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v45-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBkMTg0YTk4ZjljOWFlZWZkY2ZiZWVlYmFiM2FiYTRiZjBjZWU5ODE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAzMCBKYW4gMjAyMyAxNTo0MTozOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ1IDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA1NyArKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAg ICAgfCA0MSArKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAg ICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQogICA0LjclIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft LwogIDM4LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvCiAgNTUuNiUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmlu ZGV4IDg2NzY3NWQ1YTEuLjFhYmU3NDdjYjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTQ0NjUsNiArNDQ2NSwxNyBAQCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShi b29sIHJlc2V0KQogCVJlYWRDb250cm9sRmlsZSgpOwogfQogCisvKgorICogR2V0IHRoZSB3 YWxfbGV2ZWwgZnJvbSB0aGUgY29udHJvbCBmaWxlLiBGb3IgYSBzdGFuZGJ5LCB0aGlzIHZh bHVlIHNob3VsZCBiZQorICogY29uc2lkZXJlZCBhcyBpdHMgYWN0aXZlIHdhbF9sZXZlbCwg YmVjYXVzZSBpdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gd2hhdAorICogd2FzIG9yaWdpbmFs bHkgY29uZmlndXJlZCBvbiBzdGFuZGJ5LgorICovCitXYWxMZXZlbAorR2V0QWN0aXZlV2Fs TGV2ZWxPblN0YW5kYnkodm9pZCkKK3sKKwlyZXR1cm4gQ29udHJvbEZpbGUtPndhbF9sZXZl bDsKK30KKwogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhM T0cKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5k ZXggYTUzZTIzYzY3OS4uNmI2NmE5NzFiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xNTIsMTEgKzE1MiwzMSBAQCB4bG9nX2RlY29kZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ CSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNl IFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1ldGVyX2NoYW5nZSAq eGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dSZWNHZXREYXRhKGJ1 Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlz IHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJCSAqIHdhbnQgdG8g cHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcgdXNlZC4KKwkJCSAq IEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgaW52YWxpZGF0ZWQgd2hl biB0aGlzIFdBTAorCQkJICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVydGhlciwgc2xv dCBjcmVhdGlvbiBmYWlscyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlzIG5vdCBzdWZm aWNpZW50OyBidXQgYWxsIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJICogc3luY2hy b25pemVkLCBzbyBhIGxvZ2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUgdGhlIHdhbF9s ZXZlbAorCQkJICogaXMgYmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRyYSBjaGVjay4K KwkJCSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsICIKKwkJCQkJCQkJInRvIGJlIGF0 IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsKKwkJCWJyZWFrOwor CQl9CiAJCWNhc2UgWExPR19OT09QOgogCQljYXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBY TE9HX1NXSVRDSDoKIAkJY2FzZSBYTE9HX0JBQ0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJB TUVURVJfQ0hBTkdFOgogCQljYXNlIFhMT0dfUkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9H X0ZQV19DSEFOR0U6CiAJCWNhc2UgWExPR19GUElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDFhNThkZDc2NDkuLjkxYWNj MGMxNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5j CkBAIC0xMTksMjMgKzExOSwyMiBAQCBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50 cyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBk YXRhYmFzZSBjb25uZWN0aW9uIikpKTsKIAotCS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3Qg dG8gY2hhbmdlIHRoYXQgc29tZWRheSBzb29uLi4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2lj YWxseSB0aHJlZSB0aGluZ3MgbWlzc2luZyB0byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5l ZWQgdG8gYmUgYWJsZSB0byBjb3JyZWN0bHkgYW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRp bWVsaW5lIGEKLQkgKgkgIExTTiBiZWxvbmdzIHRvCi0JICogMikgV2UgbmVlZCB0byBmb3Jj ZSBob3Rfc3RhbmRieV9mZWVkYmFjayB0byBiZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwot CSAqCSAgdGhlIHByaW1hcnkgY2Fubm90IHJlbW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykg c3VwcG9ydCBkcm9wcGluZyByZXBsaWNhdGlvbiBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRh YmFzZSwgaW4KLQkgKgkgIGRiYXNlX3JlZG8uIFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUg b25lcyBkdWUgdG8gSFMgcmVjb3ZlcnkKLQkgKgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91 bGQgYmUgcmVsYXRpdmVseSBlYXN5LgotCSAqIC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJ blByb2dyZXNzKCkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcg Y2Fubm90IGJlIHVzZWQgd2hpbGUgaW4gcmVjb3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICog VGhpcyBjaGVjayBtYXkgaGF2ZSByYWNlIGNvbmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkg KiBYTE9HX1BBUkFNRVRFUl9DSEFOR0UgaW5kaWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBj aGFuZ2VkLCB3ZQorCQkgKiB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9n aWNhbCByZXBsaWNhdGlvbiBzbG90cy4gQW5kIHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3Vu ZCBjcmVhdGluZyBhIG5ldyBzbG90LAorCQkgKiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVp cmVtZW50cygpIGlzIGNhbGxlZCBvbmNlIGJlZm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xv dCwgYW5kIG9uY2Ugd2hlbiBsb2dpY2FsIGRlY29kaW5nIGlzIGluaXRpYWxseSBzdGFydGlu ZyB1cC4KKwkJICovCisJCWlmIChHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FM X0xFVkVMX0xPR0lDQUwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi bG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCAiCisJCQkJ CQkJInRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpKTsK Kwl9CiB9CiAKIC8qCkBAIC0zMzEsNiArMzMwLDEyIEBAIENyZWF0ZUluaXREZWNvZGluZ0Nv bnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoKKwkgKiBPbiBzdGFuZGJ5 LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNsb3Qu IENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rpb24uCisJICovCisJQ2hl Y2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8qIHNob3J0ZXIgbGluZXMu Li4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Ns b3QuYwppbmRleCAzOGM2ZjE4ODg2Li4yOTBkNGI0NWY0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKIAogLyoKICAqIFJlcGxp Y2F0aW9uIHNsb3Qgb24tZGlzayBkYXRhIHN0cnVjdHVyZS4KQEAgLTExNzcsMzcgKzExNzgs MjggQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3Ig bG9naWNhbCBzbG90cyBsb2cgYSBzdGFuZGJ5IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2Fs IGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0bHkgdGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3Mg dGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9yZQotCQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5 LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNhbm5vdCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVz ZSB0aGUKKwkJICogcmVwbGF5IHBvaW50ZXI7IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRv IGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBvbgorCQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQg dG8gd2FpdCBmb3IgYW4geGxfcnVubmluZ194YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dn ZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUgcHJpbWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNh biBiZSBidWlsdAorCQkgKiB1c2luZyB0aGUgcmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mg bm90IG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0 aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxheSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2lu dCBhbnl3YXkuIEluc3RlYWQgcmV0dXJuCi0JCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFz dCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNo YW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBo YXMgdG8KLQkJICogc3RhcnQgcmVwbGF5IGF0LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVl ZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRo ZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdh eS4gSW5zdGVhZAorCQkgKiByZXR1cm4gdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8g TFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5CisJCSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRo YXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhh cyB0byBzdGFydCByZXBsYXkgYXQuCiAJCSAqLwotCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVz cygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCi0JCXsKLQkJCVhMb2dSZWNQdHIJZmx1c2hw dHI7Ci0KLQkJCS8qIHN0YXJ0IGF0IGN1cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCisJCWlm IChTbG90SXNQaHlzaWNhbChzbG90KSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0 cigpOworCQllbHNlIGlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKKwkJCXJlc3RhcnRfbHNu ID0gR2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKTsKKwkJZWxzZQogCQkJcmVzdGFydF9sc24g PSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11 dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNw aW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCi0JCQkvKiBtYWtlIHN1cmUgd2UgaGF2 ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KLQkJCWZsdXNocHRyID0gTG9nU3Rh bmRieVNuYXBzaG90KCk7CiAKLQkJCS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRv IGRpc2sgKi8KLQkJCVhMb2dGbHVzaChmbHVzaHB0cik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0J CQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9SZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgm c2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNu OwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0JCX0KKwkJU3BpbkxvY2tB Y3F1aXJlKCZzbG90LT5tdXRleCk7CisJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbjsKKwkJU3BpbkxvY2tSZWxlYXNlKCZzbG90LT5tdXRleCk7CiAKIAkJLyogcHJl dmVudCBXQUwgcmVtb3ZhbCBhcyBmYXN0IGFzIHBvc3NpYmxlICovCiAJCVJlcGxpY2F0aW9u U2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKQEAgLTEyMjMsNiArMTIxNSwxNyBAQCBSZXBs aWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJCWlmIChYTG9nR2V0TGFzdFJlbW92ZWRT ZWdubygpIDwgc2Vnbm8pCiAJCQlicmVhazsKIAl9CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9n cmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCisJeworCQlYTG9nUmVjUHRyCWZsdXNo cHRyOworCisJCS8qIG1ha2Ugc3VyZSB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBz dGFydCAqLworCQlmbHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCisJCS8qIGFu ZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKGZsdXNo cHRyKTsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmlu ZGV4IDg4ODVjZGVlYmMuLjFlOTFjYmM1NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCkBAIC05MDYsMjMgKzkwNiwzMSBAQCBsb2dpY2FsX3JlYWRfeGxvZ19wYWdl KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50 IHJlcQogCWludAkJCWNvdW50OwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwogCVhMb2dTZWdO bwlzZWdubzsKLQlUaW1lTGluZUlECWN1cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGlu ZSgpOworCVRpbWVMaW5lSUQJY3VyclRMSTsKIAogCS8qCi0JICogU2luY2UgbG9naWNhbCBk ZWNvZGluZyBpcyBvbmx5IHBlcm1pdHRlZCBvbiBhIHByaW1hcnkgc2VydmVyLCB3ZSBrbm93 Ci0JICogdGhhdCB0aGUgY3VycmVudCB0aW1lbGluZSBJRCBjYW4ndCBiZSBjaGFuZ2luZyBh bnkgbW9yZS4gSWYgd2UgZGlkIHRoaXMKLQkgKiBvbiBhIHN0YW5kYnksIHdlJ2QgaGF2ZSB0 byB3b3JyeSBhYm91dCB0aGUgdmFsdWVzIHdlIGNvbXB1dGUgaGVyZQotCSAqIGJlY29taW5n IGludmFsaWQgZHVlIHRvIGEgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5nZS4KKwkgKiBT aW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIGFsc28gcGVybWl0dGVkIG9uIGEgc3RhbmRieSBz ZXJ2ZXIsIHdlIG5lZWQKKwkgKiB0byBjaGVjayBpZiB0aGUgc2VydmVyIGlzIGluIHJlY292 ZXJ5IHRvIGRlY2lkZSBob3cgdG8gZ2V0IHRoZSBjdXJyZW50CisJICogdGltZWxpbmUgSUQg KHNvIHRoYXQgaXQgYWxzbyBjb3ZlciB0aGUgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5n ZSBjYXNlcykuCiAJICovCisKKwkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2 YWlsYWJsZSAqLworCWZsdXNocHRyID0gV2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRy ICsgcmVxTGVuKTsKKworCS8qIHRoZSBzdGFuZGJ5IGNvdWxkIGhhdmUgYmVlbiBwcm9tb3Rl ZCwgc28gY2hlY2sgaWYgc3RpbGwgaW4gcmVjb3ZlcnkgKi8KKwlhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyID0gUmVjb3ZlcnlJblByb2dyZXNzKCk7CisKKwlpZiAoYW1fY2FzY2FkaW5nX3dh bHNlbmRlcikKKwkJR2V0WExvZ1JlcGxheVJlY1B0cigmY3VyclRMSSk7CisJZWxzZQorCQlj dXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKTsKKwogCVhMb2dSZWFkRGV0ZXJt aW5lVGltZWxpbmUoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbiwgY3VyclRMSSk7CiAJ c2VuZFRpbWVMaW5lSXNIaXN0b3JpYyA9IChzdGF0ZS0+Y3VyclRMSSAhPSBjdXJyVExJKTsK IAlzZW5kVGltZUxpbmUgPSBzdGF0ZS0+Y3VyclRMSTsKIAlzZW5kVGltZUxpbmVWYWxpZFVw dG8gPSBzdGF0ZS0+Y3VyclRMSVZhbGlkVW50aWw7CiAJc2VuZFRpbWVMaW5lTmV4dFRMSSA9 IHN0YXRlLT5uZXh0VExJOwogCi0JLyogbWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIFdBTCBh dmFpbGFibGUgKi8KLQlmbHVzaHB0ciA9IFdhbFNuZFdhaXRGb3JXYWwodGFyZ2V0UGFnZVB0 ciArIHJlcUxlbik7Ci0KIAkvKiBmYWlsIGlmIG5vdCAoaW1wbGllcyB3ZSBhcmUgZ29pbmcg dG8gc2h1dCBkb3duKSAqLwogCWlmIChmbHVzaHB0ciA8IHRhcmdldFBhZ2VQdHIgKyByZXFM ZW4pCiAJCXJldHVybiAtMTsKQEAgLTkzNyw3ICs5NDUsNyBAQCBsb2dpY2FsX3JlYWRfeGxv Z19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0 ciwgaW50IHJlcQogCQkJCSBjdXJfcGFnZSwKIAkJCQkgdGFyZ2V0UGFnZVB0ciwKIAkJCQkg WExPR19CTENLU1osCi0JCQkJIHN0YXRlLT5zZWcud3NfdGxpLCAvKiBQYXNzIHRoZSBjdXJy ZW50IFRMSSBiZWNhdXNlIG9ubHkKKwkJCQkgY3VyclRMSSwgCQkJLyogUGFzcyB0aGUgY3Vy cmVudCBUTEkgYmVjYXVzZSBvbmx5CiAJCQkJCQkJCQkgKiBXYWxTbmRTZWdtZW50T3BlbiBj b250cm9scyB3aGV0aGVyIG5ldwogCQkJCQkJCQkJICogVExJIGlzIG5lZWRlZC4gKi8KIAkJ CQkgJmVycmluZm8pKQpAQCAtMzA3NCwxMCArMzA4MiwxNCBAQCBYTG9nU2VuZExvZ2ljYWwo dm9pZCkKIAkgKiBJZiBmaXJzdCB0aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0 aWFsaXplIGZsdXNoUHRyLiAgT3RoZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRh dGUgZmx1c2hQdHIgaWYgRW5kUmVjUHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNo UHRyID09IEludmFsaWRYTG9nUmVjUHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRy KE5VTEwpOwotCWVsc2UgaWYgKGxvZ2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJl Y1B0ciA+PSBmbHVzaFB0cikKLQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsK KwlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9naWNhbF9kZWNv ZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQorCXsKKwkJaWYgKGFt X2Nhc2NhZGluZ193YWxzZW5kZXIpCisJCQlmbHVzaFB0ciA9IEdldFN0YW5kYnlGbHVzaFJl Y1B0cihOVUxMKTsKKwkJZWxzZQorCQkJZmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxM KTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBvdXIgZmx1c2hQdHIs IGl0IG1lYW5zIHdlIGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9kZWNvZGluZ19jdHgt PnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMzE2OCw3ICszMTgwLDggQEAg R2V0U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSkKIAlyZWNlaXZlUHRyID0g R2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwogCXJlcGxheVB0ciA9 IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAKLQkqdGxpID0gcmVwbGF5VExJ OworCWlmICh0bGkpCisJCSp0bGkgPSByZXBsYXlUTEk7CiAKIAlyZXN1bHQgPSByZXBsYXlQ dHI7CiAJaWYgKHJlY2VpdmVUTEkgPT0gcmVwbGF5VExJICYmIHJlY2VpdmVQdHIgPiByZXBs YXlQdHIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCBjZmU1NDA5NzM4Li40OGNhODUyMzgxIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nLmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBleHRlcm4gdm9pZCBYTE9HU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2 b2lkIEluaXRpYWxpemVXYWxDb25zaXN0ZW5jeUNoZWNraW5nKHZvaWQpOwogZXh0ZXJuIHZv aWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2 ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFy dHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0 dW0gYXJnKTsKIGV4dGVybiB2b2lkIENyZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKTsKLS0g CjIuMzQuMQoK --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; name="v45-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v45-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA3MDBjMjZlZjhlZTFjNWNhYTQwYzZlMGNlMTQ3OTZmNzY2MmM2Zjk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAzMCBKYW4gMjAyMyAxNTo0MDo1NiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ1IDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIHRoZSBwcmltYXJ5IHNlcnZlcgppcyByZWR1Y2VkIHRvIGJl bG93IGxvZ2ljYWwgYW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0 YW5kYnkuIEludHJvZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90 CmNvbmZsaWN0IHJlY292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNl X2NvbmZsaWN0cyBmaWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQWRkIGEgbmV3 IGZpZWxkICJjb25mbGljdGluZyIgaW4gcGdfcmVwbGljYXRpb25fc2xvdHMuCgpBdXRob3I6 IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwg QmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVz IEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvLApCaGFyYXRo IFJ1cGlyZWRkeQotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAg ICAgICAgICB8ICAxMSArCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAg ICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAg ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5j ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR4bG9n LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BneGxv Zy5jICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMgICAgICAgICAgICAgfCAgMjQgKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwgICAgICAgICAgfCAgIDYgKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jICAgICAgICAgICAgICAgIHwgMTk4ICsrKysrKysrKysrKystLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgICAgICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAgIDggKwogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgIHwgICAzICsKIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgICAgICB8ICAxMyArLQog c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDI0ICsr Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMgIHwgICA0 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAg MyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg MTEgKy0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCAgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAg ICAgIHwgICA4ICstCiAyNCBmaWxlcyBjaGFuZ2VkLCAzMDQgaW5zZXJ0aW9ucygrKSwgNjMg ZGVsZXRpb25zKC0pCiAgIDUuNCUgZG9jL3NyYy9zZ21sLwogICA3LjIlIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtLwogICA0LjclIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvCiAgNTYuOCUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDQuNSUgc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvCiAgIDYuNSUgc3JjL2JhY2tlbmQvdGNvcC8KICAgNS40JSBzcmMv YmFja2VuZC8KICAgMy45JSBzcmMvaW5jbHVkZS9jYXRhbG9nLwogICAzLjAlIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDE3NTZmMWE0YjYu LmUyNWY3MWE3NzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDM2NSw2ICs0MzY1LDE3 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xv dDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBzbG90cyBpbiB0 aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0ZWQgYmVjYXVz ZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFjdGl2ZSBvbmVz CisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNyZW1lbnQgdGhp cyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bAppbmRleCA3YzhmYzNmNjU0Li4yMzlmNzEzMjk1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5z Z21sCkBAIC0yNTE2LDYgKzI1MTYsMTYgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBM RUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgICAgICAgZmFsc2UgZm9yIHBoeXNp Y2FsIHNsb3RzLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25mbGlj dGluZzwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHRoaXMgbG9naWNhbCBzbG90IGNvbmZsaWN0 ZWQgd2l0aCByZWNvdmVyeSAoYW5kIHNvIGlzIG5vdworICAgICAgIGludmFsaWRhdGVkKS4g QWx3YXlzIE5VTEwgZm9yIHBoeXNpY2FsIHNsb3RzLgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGI3Njc4ZjNjMTQuLjlhODZm YjNmZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5 Nyw3IEBAIGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwp OwogCiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVs LAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lz dFJlZG9QYWdlUmV1c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKElu SG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxs WGlkKHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhs cmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDhjZWI5MTI4OC4u Yjg1NjMwNDc0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEw MDMsNiArMTAwMyw3IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2Nh dG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxkYXRhLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRh LT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZDQ3ODcyNGI5ZC4uZDY0ZmI0Y2M4NCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTg4OTEsNiArODg5MSw3IEBAIGhlYXBfeGxv Z19wcnVuZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFu ZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25h cHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWws CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBAIC05MDYwLDYgKzkwNjEsNyBAQCBo ZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAo SW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4 bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFn cyAmIFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9y KTsKIAogCS8qCkBAIC05MTc3LDYgKzkxNzksNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2Uo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29y ZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJ CQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDQxNGNhNGY2ZGUuLmM4 N2U0NmVkNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02Njks NiArNjY5LDcgQEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVM TCk7CiAKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVs LAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQCBi dHJlZV94bG9nX3JldXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAlpZiAo SW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1 bGxYaWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAg eGxyZWMtPmlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiMDcxYjU5Yzhh Li40NTlhYzkyOWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3Nw Z3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAt ODc5LDYgKzg3OSw3IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAogCQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwg TlVMTCwgTlVMTCk7CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhs ZGF0YS0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXND YXRhbG9nUmVsLAogCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYwppbmRleCBmYjRjODYwYmRlLi44Njc2NzVkNWExIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02NDQ3LDYgKzY0NDcsNyBAQCBDcmVhdGVDaGVj a1BvaW50KGludCBmbGFncykKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CiAJaW50 CQkJbnZ4aWRzOwogCWludAkJCW9sZFhMb2dBbGxvd2VkID0gMDsKKwlib29sCQlpbnZhbGlk YXRlZCA9IGZhbHNlOwogCiAJLyoKIAkgKiBBbiBlbmQtb2YtcmVjb3ZlcnkgY2hlY2twb2lu dCBpcyByZWFsbHkgYSBzaHV0ZG93biBjaGVja3BvaW50LCBqdXN0CkBAIC02ODA3LDcgKzY4 MDgsOCBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1Nl ZyhSZWRvUmVjUHRyLCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dT ZWcocmVjcHRyLCAmX2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyhfbG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9u U2xvdHMoX2xvZ1NlZ05vLCAmaW52YWxpZGF0ZWQsIEludmFsaWRPaWQsIE5VTEwpOworCWlm IChpbnZhbGlkYXRlZCkKIAl7CiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGlu dmFsaWRhdGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKQEAgLTcwODYsNiArNzA4 OCw3IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJWExvZ1JlY1B0cgllbmRw dHI7CiAJWExvZ1NlZ05vCV9sb2dTZWdObzsKIAlUaW1lc3RhbXBUeiB4dGltZTsKKwlib29s CQlpbnZhbGlkYXRlZCA9IGZhbHNlOwogCiAJLyogQ29uY3VycmVudCBjaGVja3BvaW50L3Jl c3RhcnRwb2ludCBjYW5ub3QgaGFwcGVuICovCiAJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rl ciB8fCBNeUJhY2tlbmRUeXBlID09IEJfQ0hFQ0tQT0lOVEVSKTsKQEAgLTcyNTEsNyArNzI1 NCw4IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJcmVwbGF5UHRyID0gR2V0 WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAllbmRwdHIgPSAocmVjZWl2ZVB0ciA8 IHJlcGxheVB0cikgPyByZXBsYXlQdHIgOiByZWNlaXZlUHRyOwogCUtlZXBMb2dTZWcoZW5k cHRyLCAmX2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25T bG90cyhfbG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMo X2xvZ1NlZ05vLCAmaW52YWxpZGF0ZWQsIEludmFsaWRPaWQsIE5VTEwpOworCWlmIChpbnZh bGlkYXRlZCkKIAl7CiAJCS8qCiAJCSAqIFNvbWUgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRh dGVkOyByZWNhbGN1bGF0ZSB0aGUgb2xkLXNlZ21lbnQKQEAgLTc5NjYsNiArNzk3MCwyMiBA QCB4bG9nX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFVwZGF0ZSBvdXIg Y29weSBvZiB0aGUgcGFyYW1ldGVycyBpbiBwZ19jb250cm9sICovCiAJCW1lbWNweSgmeGxy ZWMsIFhMb2dSZWNHZXREYXRhKHJlY29yZCksIHNpemVvZih4bF9wYXJhbWV0ZXJfY2hhbmdl KSk7CiAKKwkJLyoKKwkJICogSW52YWxpZGF0ZSBsb2dpY2FsIHNsb3RzIGlmIHdlIGFyZSBp biBob3Qgc3RhbmRieSBhbmQgdGhlIHByaW1hcnkgZG9lcyBub3QKKwkJICogaGF2ZSBhIFdB TCBsZXZlbCBzdWZmaWNpZW50IGZvciBsb2dpY2FsIGRlY29kaW5nLiBObyBuZWVkIHRvIHNl YXJjaAorCQkgKiBmb3IgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbG9naWNhbGx5IHNsb3Rz IGlmIHN0YW5kYnkgaXMgcnVubmluZworCQkgKiB3aXRoIHdhbF9sZXZlbCBsb3dlciB0aGFu IGxvZ2ljYWwsIGJlY2F1c2UgaW4gdGhhdCBjYXNlLCB3ZSB3b3VsZAorCQkgKiBoYXZlIGVp dGhlciBkaXNhbGxvd2VkIGNyZWF0aW9uIG9mIGxvZ2ljYWwgc2xvdHMgb3IgaW52YWxpZGF0 ZWQgZXhpc3RpbmcKKwkJICogb25lcy4KKwkJICovCisJCWlmIChJblJlY292ZXJ5ICYmIElu SG90U3RhbmRieSAmJgorCQkJeGxyZWMud2FsX2xldmVsIDwgV0FMX0xFVkVMX0xPR0lDQUwg JiYKKwkJCXdhbF9sZXZlbCA+PSBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJeworCQkJVHJhbnNh Y3Rpb25JZCBDb25mbGljdEhvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCUlu dmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZFhMb2dSZWNQdHIsIE5V TEwsIEludmFsaWRPaWQsICZDb25mbGljdEhvcml6b24pOworCQl9CisKIAkJTFdMb2NrQWNx dWlyZShDb250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5N YXhDb25uZWN0aW9ucyA9IHhscmVjLk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+ bWF4X3dvcmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA4NjA4ZTNmYTViLi5hMjcy YmQ0YTg4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC05OTcs NyArOTk3LDggQEAgQ1JFQVRFIFZJRVcgcGdfcmVwbGljYXRpb25fc2xvdHMgQVMKICAgICAg ICAgICAgIEwuY29uZmlybWVkX2ZsdXNoX2xzbiwKICAgICAgICAgICAgIEwud2FsX3N0YXR1 cywKICAgICAgICAgICAgIEwuc2FmZV93YWxfc2l6ZSwKLSAgICAgICAgICAgIEwudHdvX3Bo YXNlCisgICAgICAgICAgICBMLnR3b19waGFzZSwKKyAgICAgICAgICAgIEwuY29uZmxpY3Rp bmcKICAgICBGUk9NIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cygpIEFTIEwKICAgICAgICAg ICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBEIE9OIChMLmRhdG9pZCA9IEQub2lkKTsKIApA QCAtMTA2NSw3ICsxMDY2LDggQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9kYXRhYmFzZV9jb25m bGljdHMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvY2soRC5v aWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9zbmFwc2hvdChELm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgICAgICAgICBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4oRC5vaWQpIEFTIGNvbmZsX2J1ZmZlcnBp biwKLSAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxv Y2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrCisgICAgICAgICAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywK KyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90KEQub2lk KSBBUyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QKICAgICBGUk9NIHBnX2RhdGFiYXNlIEQ7 CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfdXNlcl9mdW5jdGlvbnMgQVMKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4IGZhMWI2 NDFhMmIuLjA3MGZkMzc4ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjE2LDkgKzIxNiw5IEBAIHBnX2xvZ2ljYWxf c2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNv bmZpcm0sIGJvb2wgYmluCiAKIAkJLyoKIAkJICogQWZ0ZXIgdGhlIHNhbml0eSBjaGVja3Mg aW4gQ3JlYXRlRGVjb2RpbmdDb250ZXh0LCBtYWtlIHN1cmUgdGhlCi0JCSAqIHJlc3RhcnRf bHNuIGlzIHZhbGlkLiAgQXZvaWQgImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0 aGlzCi0JCSAqIGVycm1zZyBiZWNhdXNlIHRoYXQnZCBiZSBjb25mdXNpbmdseSBhbWJpZ3Vv dXMgYWJvdXQgbm8gY2hhbmdlcwotCQkgKiBiZWluZyBhdmFpbGFibGUuCisJCSAqIHJlc3Rh cnRfbHNuIGlzIHZhbGlkIG9yIGJvdGggeG1pbiBhbmQgY2F0YWxvZ194bWluIGFyZSB2YWxp ZC4gQXZvaWQKKwkJICogImNhbm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzIGVy cm1zZyBiZWNhdXNlIHRoYXQnZCBiZQorCQkgKiBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJv dXQgbm8gY2hhbmdlcyBiZWluZyBhdmFpbGFibGUuCiAJCSAqLwogCQlpZiAoWExvZ1JlY1B0 cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCQll cmVwb3J0KEVSUk9SLApAQCAtMjI3LDYgKzIyNywxMyBAQCBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXNfZ3V0cyhGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBjb25maXJtLCBi b29sIGJpbgogCQkJCQkJCU5hbWVTdHIoKm5hbWUpKSwKIAkJCQkJIGVycmRldGFpbCgiVGhp cyBzbG90IGhhcyBuZXZlciBwcmV2aW91c2x5IHJlc2VydmVkIFdBTCwgb3IgaXQgaGFzIGJl ZW4gaW52YWxpZGF0ZWQuIikpKTsKIAorCQlpZiAoTG9naWNhbFJlcGxpY2F0aW9uU2xvdElz SW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIiwKKwkJCQkJCQlOYW1lU3RyKCpuYW1lKSksCisJCQkJCSBlcnJkZXRhaWwoIlRo aXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGlu ZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggZjI4NjkxOGY2 OS4uMzhjNmYxODg4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtODU1LDggKzg1 NSwxMCBAQCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihib29sIGFscmVh ZHlfbG9ja2VkKQogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAkJZWZmZWN0aXZl X3htaW4gPSBzLT5lZmZlY3RpdmVfeG1pbjsKIAkJZWZmZWN0aXZlX2NhdGFsb2dfeG1pbiA9 IHMtPmVmZmVjdGl2ZV9jYXRhbG9nX3htaW47Ci0JCWludmFsaWRhdGVkID0gKCFYTG9nUmVj UHRySXNJbnZhbGlkKHMtPmRhdGEuaW52YWxpZGF0ZWRfYXQpICYmCi0JCQkJCSAgIFhMb2dS ZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5yZXN0YXJ0X2xzbikpOworCQlpbnZhbGlkYXRlZCA9 ICgoIVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYKKwkJ CQkJCVhMb2dSZWNQdHJJc0ludmFsaWQocy0+ZGF0YS5yZXN0YXJ0X2xzbikpCisJCQkJCSAg IHx8ICghVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWluKSAmJgorCQkJCQkJICAg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHMtPmRhdGEuY2F0YWxvZ194bWluKSkpOwogCQlTcGlu TG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKIAogCQkvKiBpbnZhbGlkYXRlZCBzbG90cyBuZWVk IG5vdCBhcHBseSAqLwpAQCAtMTIyNCwyMCArMTIyNiwyMSBAQCBSZXBsaWNhdGlvblNsb3RS ZXNlcnZlV2FsKHZvaWQpCiB9CiAKIC8qCi0gKiBIZWxwZXIgZm9yIEludmFsaWRhdGVPYnNv bGV0ZVJlcGxpY2F0aW9uU2xvdHMgLS0gYWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QKLSAqIGFu ZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBhbmQgcG9zc2libGUuCisgKiBIZWxw ZXIgZm9yIEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMKKyAqCisgKiBBY3F1 aXJlcyB0aGUgZ2l2ZW4gc2xvdCBhbmQgbWFyayBpdCBpbnZhbGlkLCBpZiBuZWNlc3Nhcnkg YW5kIHBvc3NpYmxlLgogICoKICAqIFJldHVybnMgd2hldGhlciBSZXBsaWNhdGlvblNsb3RD b250cm9sTG9jayB3YXMgcmVsZWFzZWQgaW4gdGhlIGludGVyaW0gKGFuZAogICogaW4gdGhh dCBjYXNlIHdlJ3JlIG5vdCBob2xkaW5nIHRoZSBsb2NrIGF0IHJldHVybiwgb3RoZXJ3aXNl IHdlIGFyZSkuCiAgKgotICogU2V0cyAqaW52YWxpZGF0ZWQgdHJ1ZSBpZiB0aGUgc2xvdCB3 YXMgaW52YWxpZGF0ZWQuIChVbnRvdWNoZWQgb3RoZXJ3aXNlLikKKyAqIFNldHMgKmludmFs aWRhdGVkIHRydWUgaWYgYW4gb2Jzb2xldGUgc2xvdCB3YXMgaW52YWxpZGF0ZWQuIChVbnRv dWNoZWQgb3RoZXJ3aXNlLikKICAqCiAgKiBUaGlzIGlzIGluaGVyZW50bHkgcmFjeSwgYmVj YXVzZSB3ZSByZWxlYXNlIHRoZSBMV0xvY2sKICAqIGZvciBzeXNjYWxscywgc28gY2FsbGVy IG11c3QgcmVzdGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KICAqLwogc3RhdGljIGJvb2wKLUlu dmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dS ZWNQdHIgb2xkZXN0TFNOLAotCQkJCQkJCSAgIGJvb2wgKmludmFsaWRhdGVkKQorSW52YWxp ZGF0ZVBvc3NpYmx5T2Jzb2xldGVPckNvbmZsaWN0aW5nTG9naWNhbFNsb3QoUmVwbGljYXRp b25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKKwkJCQkJCQkJCQkJCSAgIGJvb2wg KmludmFsaWRhdGVkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7CiAJaW50CQkJbGFzdF9zaWdu YWxlZF9waWQgPSAwOwogCWJvb2wJCXJlbGVhc2VkX2xvY2sgPSBmYWxzZTsKQEAgLTEyNDUs NiArMTI0OCw5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlv blNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCWZvciAoOzspCiAJewogCQlYTG9n UmVjUHRyCXJlc3RhcnRfbHNuOworCQlUcmFuc2FjdGlvbklkIHNsb3RfeG1pbjsKKwkJVHJh bnNhY3Rpb25JZCBzbG90X2NhdGFsb2dfeG1pbjsKKwogCQlOYW1lRGF0YQlzbG90bmFtZTsK IAkJaW50CQkJYWN0aXZlX3BpZCA9IDA7CiAKQEAgLTEyNjEsMTggKzEyNjcsMzMgQEAgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCiAJCSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGlu dmFsaWRhdGVkLiBJZiBpdCBuZWVkcyB0byBiZQogCQkgKiBpbnZhbGlkYXRlZCwgYW5kIGlz IG5vdCBjdXJyZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKIAkJICog YXMgaGF2aW5nIGJlZW4gaW52YWxpZGF0ZWQuICBXZSBkbyB0aGlzIHdpdGggdGhlIHNwaW5s b2NrIGhlbGQgdG8KLQkJICogYXZvaWQgcmFjZSBjb25kaXRpb25zIC0tIGZvciBleGFtcGxl IHRoZSByZXN0YXJ0X2xzbiBjb3VsZCBtb3ZlCi0JCSAqIGZvcndhcmQsIG9yIHRoZSBzbG90 IGNvdWxkIGJlIGRyb3BwZWQuCisJCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3Ig ZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gKG9yIHRoZQorCQkgKiB4bWluKHMpIGNvdWxkKSBt b3ZlIGZvcndhcmQgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4KIAkJICovCiAJCVNw aW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCiAJCXJlc3RhcnRfbHNuID0gcy0+ZGF0YS5y ZXN0YXJ0X2xzbjsKKwkJc2xvdF94bWluID0gcy0+ZGF0YS54bWluOworCQlzbG90X2NhdGFs b2dfeG1pbiA9IHMtPmRhdGEuY2F0YWxvZ194bWluOworCisJCS8qIHNsb3QgaGFzIGJlZW4g aW52YWxpZGF0ZWQgKGxvZ2ljYWwgZGVjb2RpbmcgY29uZmxpY3QgY2FzZSkgKi8KKwkJaWYg KCh4aWQgJiYKKwkJCSAoKExvZ2ljYWxSZXBsaWNhdGlvblNsb3RJc0ludmFsaWQocykpCisJ CQkgIHx8CiAKIAkJLyoKLQkJICogSWYgdGhlIHNsb3QgaXMgYWxyZWFkeSBpbnZhbGlkIG9y IGlzIGZyZXNoIGVub3VnaCwgd2UgZG9uJ3QgbmVlZCB0bwotCQkgKiBkbyBhbnl0aGluZy4K KwkJICogV2UgYXJlIG5vdCBmb3JjaW5nIGZvciBpbnZhbGlkYXRpb24gYmVjYXVzZSB0aGUg eGlkIGlzIHZhbGlkIGFuZAorCQkgKiB0aGlzIGlzIGEgbm9uIGNvbmZsaWN0aW5nIHNsb3Qu CiAJCSAqLwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0X2xzbikgfHwgcmVz dGFydF9sc24gPj0gb2xkZXN0TFNOKQorCQkJICAoVHJhbnNhY3Rpb25JZElzVmFsaWQoKnhp ZCkgJiYgISgKKwkJCQkJCQkJCQkJICAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfeG1p bikgJiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF94bWluLCAqeGlkKSkK KwkJCQkJCQkJCQkJICAgfHwKKwkJCQkJCQkJCQkJICAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNsb3RfY2F0YWxvZ194bWluKSAmJiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhz bG90X2NhdGFsb2dfeG1pbiwgKnhpZCkpCisJCQkJCQkJCQkJCSAgICkpCisJCQkgICkpCisJ CQl8fAorCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIChvYnNvbGV0ZSBMU04gY2Fz ZSkgKi8KKwkJCSgheGlkICYmIChYTG9nUmVjUHRySXNJbnZhbGlkKHJlc3RhcnRfbHNuKSB8 fCByZXN0YXJ0X2xzbiA+PSBvbGRlc3RMU04pKSkKIAkJewogCQkJU3BpbkxvY2tSZWxlYXNl KCZzLT5tdXRleCk7CiAJCQlpZiAocmVsZWFzZWRfbG9jaykKQEAgLTEyOTIsOSArMTMxMywx NiBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpz LCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAkJewogCQkJTXlSZXBsaWNhdGlvblNsb3QgPSBz OwogCQkJcy0+YWN0aXZlX3BpZCA9IE15UHJvY1BpZDsKLQkJCXMtPmRhdGEuaW52YWxpZGF0 ZWRfYXQgPSByZXN0YXJ0X2xzbjsKLQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKLQorCQkJaWYgKHhpZCkKKwkJCXsKKwkJCQlzLT5kYXRhLnhtaW4gPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCQlzLT5kYXRhLmNhdGFsb2dfeG1pbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXMtPmRhdGEuaW52 YWxpZGF0ZWRfYXQgPSByZXN0YXJ0X2xzbjsKKwkJCQlzLT5kYXRhLnJlc3RhcnRfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7CisJCQl9CiAJCQkvKiBMZXQgY2FsbGVyIGtub3cgKi8KIAkJ CSppbnZhbGlkYXRlZCA9IHRydWU7CiAJCX0KQEAgLTEzMjcsMTUgKzEzNTUsMzkgQEAgSW52 YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1Jl Y1B0ciBvbGRlc3RMU04sCiAJCQkgKi8KIAkJCWlmIChsYXN0X3NpZ25hbGVkX3BpZCAhPSBh Y3RpdmVfcGlkKQogCQkJewotCQkJCWVyZXBvcnQoTE9HLAotCQkJCQkJZXJybXNnKCJ0ZXJt aW5hdGluZyBwcm9jZXNzICVkIHRvIHJlbGVhc2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIi LAotCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKLQkJCQkJCWVy cmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNlZWRzIHRoZSBsaW1p dCBieSAlbGx1IGJ5dGVzLiIsCi0JCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHJlc3RhcnRf bHNuKSwKLQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0TFNOIC0gcmVz dGFydF9sc24pKSwKLQkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNl IG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJCWlmICh4aWQpCisJCQkJeworCQkJ CQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoKnhpZCkpCisJCQkJCXsKKwkJCQkJCWVyZXBv cnQoTE9HLAorCQkJCQkJCQllcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVjYXVz ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsCisJ CQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJCWVy cmRldGFpbCgiVGhlIHNsb3QgY29uZmxpY3RlZCB3aXRoIHhpZCBob3Jpem9uICV1LiIsCisJ CQkJCQkJCQkJICAqeGlkKSk7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQll cmVwb3J0KExPRywKKwkJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVkIGJl Y2F1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LAorCQkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJ CQllcnJkZXRhaWwoIkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxf bGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIiKSk7 CisJCQkJCX0KKworCQkJCQkodm9pZCkgU2VuZFByb2NTaWduYWwoYWN0aXZlX3BpZCwgUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwgSW52YWxpZEJhY2tlbmRJZCk7 CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJCWVy cm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9uIHNs b3QgXCIlc1wiIiwKKwkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkp LAorCQkJCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBleGNl ZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCisJCQkJCQkJCQkgIExTTl9GT1JNQVRf QVJHUyhyZXN0YXJ0X2xzbiksCisJCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChv bGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAorCQkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBu ZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCisJCQkJCSh2 b2lkKSBraWxsKGFjdGl2ZV9waWQsIFNJR1RFUk0pOworCQkJCX0KIAotCQkJCSh2b2lkKSBr aWxsKGFjdGl2ZV9waWQsIFNJR1RFUk0pOwogCQkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gYWN0 aXZlX3BpZDsKIAkJCX0KIApAQCAtMTM2OSwxMyArMTQyMSwzMyBAQCBJbnZhbGlkYXRlUG9z c2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVz dExTTiwKIAkJCVJlcGxpY2F0aW9uU2xvdFNhdmUoKTsKIAkJCVJlcGxpY2F0aW9uU2xvdFJl bGVhc2UoKTsKIAotCQkJZXJlcG9ydChMT0csCi0JCQkJCWVycm1zZygiaW52YWxpZGF0aW5n IG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKLQkJCQkJCSAgIE5hbWVTdHIo c2xvdG5hbWUpKSwKLQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVY LyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKLQkJCQkJCQkgIExTTl9G T1JNQVRfQVJHUyhyZXN0YXJ0X2xzbiksCi0JCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25n KSAob2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKLQkJCQkJZXJyaGludCgiWW91IG1pZ2h0 IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQlpZiAo eGlkKQorCQkJeworCQkJCXBnc3RhdF9kcm9wX3JlcGxzbG90KHMpOworCisJCQkJaWYgKFRy YW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCXsKKwkJCQkJZXJlcG9ydChMT0csCisJ CQkJCQkJZXJybXNnKCJpbnZhbGlkYXRpbmcgc2xvdCBcIiVzXCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJCQkJCQllcnJk ZXRhaWwoIlRoZSBzbG90IGNvbmZsaWN0ZWQgd2l0aCB4aWQgaG9yaXpvbiAldS4iLCAqeGlk KSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJ CWVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJyZGV0YWls KCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJl IGF0IGxlYXN0IGxvZ2ljYWwgb24gdGhlIHByaW1hcnkgc2VydmVyIikpOworCQkJCX0KKwkJ CX0KKwkJCWVsc2UKKwkJCXsKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCWVycm1zZygiaW52 YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCQkg ICBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVz dGFydF9sc24gJVgvJVggZXhjZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJ CQkJCQkgIExTTl9GT1JNQVRfQVJHUyhyZXN0YXJ0X2xzbiksCisJCQkJCQkJCSAgKHVuc2ln bmVkIGxvbmcgbG9uZykgKG9sZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCisJCQkJCQllcnJo aW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXpl LiIpKTsKKwkJCX0KIAogCQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCiAJ CQlicmVhazsKQEAgLTEzODgsMjAgKzE0NjAsNDAgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jz b2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiB9 CiAKIC8qCi0gKiBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExTTiBvbGRlciB0 aGFuIHRoZSBnaXZlbiBzZWdtZW50Ci0gKiBhcyBpbnZhbGlkOyBpdCByZXF1aXJlcyBXQUwg dGhhdCdzIGFib3V0IHRvIGJlIHJlbW92ZWQuCisgKiBJbnZhbGlkYXRlIE9ic29sZXRlIHNs b3RzIG9yIHJlc29sdmUgcmVjb3ZlcnkgY29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4K ICAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRl ZC4KKyAqIE9ic29sZXRlIGNhc2UgKGFrYSB4aWQgaXMgTlVMTCk6CiAgKgotICogTkIgLSB0 aGlzIHJ1bnMgYXMgcGFydCBvZiBjaGVja3BvaW50LCBzbyBhdm9pZCByYWlzaW5nIGVycm9y cyBpZiBwb3NzaWJsZS4KKyAqCSBNYXJrIGFueSBzbG90IHRoYXQgcG9pbnRzIHRvIGFuIExT TiBvbGRlciB0aGFuIHRoZSBnaXZlbiBzZWdtZW50CisgKgkgYXMgaW52YWxpZDsgaXQgcmVx dWlyZXMgV0FMIHRoYXQncyBhYm91dCB0byBiZSByZW1vdmVkLgorICoJIGludmFsaWRhdGVk IGlzIHNldCB0byB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCisg KgorICogIExvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBjYXNlOgorICoKKyAqCSBXaGVuIHhp ZCBpcyB2YWxpZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIHJvd3Mg b2xkZXIgdGhhbiB4aWQuCisgKgkgVGhlcmVmb3JlIHdlIG5lZWQgdG8gaW52YWxpZGF0ZSBz bG90cyB0aGF0IGRlcGVuZCBvbiBzZWVpbmcgdGhvc2Ugcm93cy4KKyAqCSBXaGVuIHhpZCBp cyBpbnZhbGlkLCBpbnZhbGlkYXRlIGFsbCBsb2dpY2FsIHNsb3RzLiBUaGlzIGlzIHJlcXVp cmVkIHdoZW4gdGhlCisgKgkgbWFzdGVyIHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBs aWNhLCBzbyBleGlzdGluZyBsb2dpY2FsIHNsb3RzIG5lZWQgdG8KKyAqCSBiZSBpbnZhbGlk YXRlZC4KICAqLwotYm9vbAotSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhY TG9nU2VnTm8gb2xkZXN0U2Vnbm8pCit2b2lkCitJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqaW52YWxpZGF0ZWQsIE9p ZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCAqeGlkKQogewotCVhMb2dSZWNQdHIJb2xkZXN0TFNO OwotCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKLQlYTG9nU2VnTm9PZmZzZXRUb1Jl Y1B0cihvbGRlc3RTZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsKKwlY TG9nUmVjUHRyCW9sZGVzdExTTiA9IEludmFsaWRYTG9nUmVjUHRyOworCWJvb2wgbG9naWNh bF9zbG90X2ludmFsaWRhdGVkID0gZmFsc2U7CisKKwlBc3NlcnQobWF4X3JlcGxpY2F0aW9u X3Nsb3RzID49IDApOworCisJaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQorCQly ZXR1cm47CisKKwlpZiAoIXhpZCkKKwl7CisJCUFzc2VydChpbnZhbGlkYXRlZCk7CisJCSpp bnZhbGlkYXRlZCA9IGZhbHNlOworCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihvbGRlc3RT ZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsKKwl9CiAKIHJlc3RhcnQ6 CiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVE KTsKQEAgLTE0MTIsMjQgKzE1MDQsMzYgQEAgcmVzdGFydDoKIAkJaWYgKCFzLT5pbl91c2Up CiAJCQljb250aW51ZTsKIAotCQlpZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90 KHMsIG9sZGVzdExTTiwgJmludmFsaWRhdGVkKSkKKwkJaWYgKHhpZCkKIAkJewotCQkJLyog aWYgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLCBzdGFydCBmcm9tIHNjcmF0Y2ggKi8KLQkJCWdv dG8gcmVzdGFydDsKKwkJCS8qIHdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9naWNhbCog c2xvdCBjb25mbGljdHMgKi8KKwkJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJCQljb250 aW51ZTsKKworCQkJLyoKKwkJCSAqIG5vdCB0aGUgZGF0YWJhc2Ugb2YgaW50ZXJlc3QgYW5k IHdlIGRvbid0IHdhbnQgYWxsIHRoZQorCQkJICogZGF0YWJhc2UsIHNraXAKKwkJCSAqLwor CQkJaWYgKHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQgJiYgVHJhbnNhY3Rpb25JZElzVmFs aWQoKnhpZCkpCisJCQkJY29udGludWU7CiAJCX0KKworCQlpZiAoSW52YWxpZGF0ZVBvc3Np Ymx5T2Jzb2xldGVPckNvbmZsaWN0aW5nTG9naWNhbFNsb3Qocywgb2xkZXN0TFNOLCBpbnZh bGlkYXRlZCA/IGludmFsaWRhdGVkIDogJmxvZ2ljYWxfc2xvdF9pbnZhbGlkYXRlZCwgeGlk KSkKKwkJCQlnb3RvIHJlc3RhcnQ7CiAJfQorCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlv blNsb3RDb250cm9sTG9jayk7CiAKIAkvKgotCSAqIElmIGFueSBzbG90cyBoYXZlIGJlZW4g aW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZSBsaW1pdHMuCisJICogSWYg YW55IHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlcXVp cmVkIHhtaW4KKwkgKiBhbmQgdGhlIHJlcXVpcmVkIGxzbiAoaWYgYXBwcm9wcmlhdGUpLgog CSAqLwotCWlmIChpbnZhbGlkYXRlZCkKKwlpZiAoKCF4aWQgJiYgKmludmFsaWRhdGVkKSB8 fCAoeGlkICYmIGxvZ2ljYWxfc2xvdF9pbnZhbGlkYXRlZCkpCiAJewogCQlSZXBsaWNhdGlv blNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7Ci0JCVJlcGxpY2F0aW9uU2xvdHND b21wdXRlUmVxdWlyZWRMU04oKTsKKwkJaWYgKCF4aWQgJiYgKmludmFsaWRhdGVkKQorCQkJ UmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCX0KLQotCXJldHVybiBp bnZhbGlkYXRlZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMK aW5kZXggMmYzYzk2NDgyNC4uNDQxOTJiYzMyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdGZ1bmNzLmMKQEAgLTIzMiw3ICsyMzIsNyBAQCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMo UEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RT X0NPTFMgMTQKKyNkZWZpbmUgUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RTX0NPTFMgMTUKIAlS ZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3Vs dGluZm87CiAJWExvZ1JlY1B0cgljdXJybHNuOwogCWludAkJCXNsb3RubzsKQEAgLTQwNCw2 ICs0MDQsMTcgQEAgcGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAkJdmFsdWVzW2krK10gPSBCb29sR2V0RGF0dW0oc2xvdF9jb250ZW50cy5kYXRhLnR3 b19waGFzZSk7CiAKKwkJaWYgKHNsb3RfY29udGVudHMuZGF0YS5kYXRhYmFzZSA9PSBJbnZh bGlkT2lkKQorCQkJbnVsbHNbaSsrXSA9IHRydWU7CisJCWVsc2UKKwkJeworCQkJaWYgKHNs b3RfY29udGVudHMuZGF0YS54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkICYmCisJCQkJ c2xvdF9jb250ZW50cy5kYXRhLmNhdGFsb2dfeG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCkKKwkJCQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKwkJCWVsc2UKKwkJ CQl2YWx1ZXNbaSsrXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCX0KKwogCQlBc3NlcnQo aSA9PSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyk7CiAKIAkJdHVwbGVzdG9yZV9w dXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNGVkMzc0N2UzZi4uODg4NWNkZWViYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1Mywx NCBAQCBTdGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQp CiAKIAlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJ aWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWlu KQorCQkgJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRh LmNhdGFsb2dfeG1pbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fu bm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJ CWNtZC0+c2xvdG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBp bnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIp KSk7CisKIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0 YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHBy b2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NT aWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5 Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7 CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1QpKQorCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9D U0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFE TE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRleCA5NGNjODYwZjVm Li5lYzgxNzM4MWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2 ICszNSw3IEBACiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL3Nsb3QuaCIKIAogLyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVy cyAqLwogaW50CQkJdmFjdXVtX2RlZmVyX2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3 IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFu c2FjdGlvbklkICp3YWl0bGlzdCwKICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxp Y3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK KwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3Ig bG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC01MDAs NiArNTAyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRf UkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlp ZiAod2FsX2xldmVsID49IFdBTF9MRVZFTF9MT0dJQ0FMICYmIGlzQ2F0YWxvZ1JlbCkKKwkJ SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhJbnZhbGlkWExvZ1JlY1B0ciwg TlVMTCwgbG9jYXRvci5kYk9pZCwgJnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKIH0KIAog LyoKQEAgLTUwOCw2ICs1MTMsNyBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFw c2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogICovCiB2b2lk CiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5z YWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJICAgYm9vbCBp c0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsK IAkvKgpAQCAtNTI2LDcgKzUzMiw5IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNu YXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yCiAJ CVRyYW5zYWN0aW9uSWQgdHJ1bmNhdGVkOwogCiAJCXRydW5jYXRlZCA9IFhpZEZyb21GdWxs VHJhbnNhY3Rpb25JZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7Ci0JCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwgbG9jYXRvcik7CisJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwKKwkJCQkJCQkJCQkJ aXNDYXRhbG9nUmVsLAorCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiB9CiAKQEAgLTE0ODcs NiArMTQ5NSw5IEBAIGdldF9yZWNvdmVyeV9jb25mbGljdF9kZXNjKFByb2NTaWduYWxSZWFz b24gcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1Q6 CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gc25hcHNob3QiKTsK IAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1Q6CisJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qgb24gcmVwbGljYXRp b24gc2xvdCIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9TVEFSVFVQX0RFQURMT0NLOgogCQkJcmVhc29uRGVzYyA9IF8oInJlY292ZXJ5IGNvbmZs aWN0IG9uIGJ1ZmZlciBkZWFkbG9jayIpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggNDcwYjczNGU5ZS4uMDA0MTg5NjYyMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAt MjQ4MSw2ICsyNDgxLDkgQEAgZXJyZGV0YWlsX3JlY292ZXJ5X2NvbmZsaWN0KHZvaWQpCiAJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJCWVycmRldGFp bCgiVXNlciBxdWVyeSBtaWdodCBoYXZlIG5lZWRlZCB0byBzZWUgcm93IHZlcnNpb25zIHRo YXQgbXVzdCBiZSByZW1vdmVkLiIpOwogCQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWVycmRldGFpbCgiVXNlciB3YXMgdXNp bmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0IG11c3QgYmUgZHJvcHBlZC4iKTsKKwkJCWJyZWFr OwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSzoK IAkJCWVycmRldGFpbCgiVXNlciB0cmFuc2FjdGlvbiBjYXVzZWQgYnVmZmVyIGRlYWRsb2Nr IHdpdGggcmVjb3ZlcnkuIik7CiAJCQlicmVhazsKQEAgLTMwNTAsNiArMzA1MywyNyBAQCBS ZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6CiAJCQljYXNlIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRToKIAkJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TTkFQU0hPVDoKKwkJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0dJQ0FMU0xPVDoKKworCQkJCS8qCisJCQkJICogRm9yIGNvbmZsaWN0cyB0aGF0IHJl cXVpcmUgYSBsb2dpY2FsIHNsb3QgdG8gYmUKKwkJCQkgKiBpbnZhbGlkYXRlZCwgdGhlIHJl cXVpcmVtZW50IGlzIGZvciB0aGUgc2lnbmFsIHJlY2VpdmVyIHRvCisJCQkJICogcmVsZWFz ZSB0aGUgc2xvdCwgc28gdGhhdCBpdCBjb3VsZCBiZSBpbnZhbGlkYXRlZCBieSB0aGUKKwkJ CQkgKiBzaWduYWwgc2VuZGVyLiBTbyBmb3Igbm9ybWFsIGJhY2tlbmRzLCB0aGUgdHJhbnNh Y3Rpb24KKwkJCQkgKiBzaG91bGQgYmUgYWJvcnRlZCwganVzdCBsaWtlIGZvciBvdGhlciBy ZWNvdmVyeSBjb25mbGljdHMuCisJCQkJICogQnV0IGlmIGl0J3Mgd2Fsc2VuZGVyIG9uIHN0 YW5kYnksIHdlIGRvbid0IHdhbnQgdG8gZ28KKwkJCQkgKiB0aHJvdWdoIHRoZSBmb2xsb3dp bmcgSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9jaygpCisJCQkJICogY2hlY2ssIHNv IGJyZWFrIGhlcmUuCisJCQkJICovCisJCQkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIg JiYKKwkJCQkJcmVhc29uID09IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1QgJiYKKwkJCQkJTXlSZXBsaWNhdGlvblNsb3QgJiYgU2xvdElzTG9naWNhbChNeVJlcGxp Y2F0aW9uU2xvdCkpCisJCQkJeworCQkJCQlSZWNvdmVyeUNvbmZsaWN0UGVuZGluZyA9IHRy dWU7CisJCQkJCVF1ZXJ5Q2FuY2VsUGVuZGluZyA9IHRydWU7CisJCQkJCUludGVycnVwdFBl bmRpbmcgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIElm IHdlIGFyZW4ndCBpbiBhIHRyYW5zYWN0aW9uIGFueSBsb25nZXIgdGhlbiBpZ25vcmUuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2Uu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCmluZGV4 IDZlNjUwY2VhYWQuLjcxNDlmMjJmNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBAIC0xMDksNiArMTA5LDkgQEAgcGdzdGF0X3Jl cG9ydF9yZWNvdmVyeV9jb25mbGljdChpbnQgcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOOgogCQkJZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVy cGluKys7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xP R0lDQUxTTE9UOgorCQkJZGJlbnRyeS0+Y29uZmxpY3RfbG9naWNhbHNsb3QrKzsKKwkJCWJy ZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9D SzoKIAkJCWRiZW50cnktPmNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2srKzsKIAkJCWJyZWFr OwpAQCAtMzg3LDYgKzM5MCw3IEBAIHBnc3RhdF9kYXRhYmFzZV9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3RfdGFibGVzcGFjZSk7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxp Y3RfbG9jayk7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3Rfc25hcHNob3QpOwor CVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0X2xvZ2ljYWxzbG90KTsKIAlQR1NUQVRf QUNDVU1fREJDT1VOVChjb25mbGljdF9idWZmZXJwaW4pOwogCVBHU1RBVF9BQ0NVTV9EQkNP VU5UKGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9w Z3N0YXRmdW5jcy5jCmluZGV4IDY3Mzc0OTM0MDIuLmFmZDYyZDNjYzAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0xMDY2LDYgKzEwNjYsOCBAQCBQR19TVEFU X0dFVF9EQkVOVFJZX0lOVDY0KHhhY3RfY29tbWl0KQogLyogcGdfc3RhdF9nZXRfZGJfeGFj dF9yb2xsYmFjayAqLwogUEdfU1RBVF9HRVRfREJFTlRSWV9JTlQ2NCh4YWN0X3JvbGxiYWNr KQogCisvKiBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCAqLworUEdfU1RB VF9HRVRfREJFTlRSWV9JTlQ2NChjb25mbGljdF9sb2dpY2Fsc2xvdCkKIAogRGF0dW0KIHBn X3N0YXRfZ2V0X2RiX3N0YXRfcmVzZXRfdGltZShQR19GVU5DVElPTl9BUkdTKQpAQCAtMTA5 OSw2ICsxMTAxLDcgQEAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYWxsKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCXJlc3VsdCA9IChpbnQ2NCkgKGRiZW50cnktPmNvbmZsaWN0X3RhYmxlc3Bh Y2UgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9sb2NrICsKIAkJCQkJCSAgZGJlbnRy eS0+Y29uZmxpY3Rfc25hcHNob3QgKworCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9sb2dp Y2Fsc2xvdCArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2J1ZmZlcnBpbiArCiAJCQkJ CQkgIGRiZW50cnktPmNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2spOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCBjMGYyYThhNzdjLi5jOGUxMWFiNzEwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU1NzcsNiArNTU3NywxMSBAQAogICBwcm9uYW1lID0+ ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcsIHByb3ZvbGF0aWxlID0+ICdz JywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJn dHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf c25hcHNob3QnIH0sCit7IG9pZCA9PiAnOTkwMScsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNz OiByZWNvdmVyeSBjb25mbGljdHMgaW4gZGF0YWJhc2UgY2F1c2VkIGJ5IGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0 X2xvZ2ljYWxzbG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAn cicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJv c3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdCcgfSwKIHsgb2lk ID0+ICczMDY4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0 cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgc2hhcmVkIGJ1ZmZlciBwaW4nLAogICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9idWZmZXJwaW4nLCBwcm92b2xhdGlsZSA9 PiAncycsCkBAIC0xMDk0Niw5ICsxMDk1MSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX2dldF9y ZXBsaWNhdGlvbl9zbG90cycsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2Yn LAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUg PT4gJ3JlY29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBlcyA9 PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixw Z19sc24sdGV4dCxpbnQ4LGJvb2x9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4s Y2F0YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1 cyxzYWZlX3dhbF9zaXplLHR3b19waGFzZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne25h bWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24s dGV4dCxpbnQ4LGJvb2wsYm9vbH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7c2xvdF9uYW1lLHBs dWdpbixzbG90X3R5cGUsZGF0b2lkLHRlbXBvcmFyeSxhY3RpdmUsYWN0aXZlX3BpZCx4bWlu LGNhdGFsb2dfeG1pbixyZXN0YXJ0X2xzbixjb25maXJtZWRfZmx1c2hfbHNuLHdhbF9zdGF0 dXMsc2FmZV93YWxfc2l6ZSx0d29fcGhhc2UsY29uZmxpY3Rpbmd9JywKICAgcHJvc3JjID0+ ICdwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMnIH0sCiB7IG9pZCA9PiAnMzc4NicsIGRlc2Ny ID0+ICdzZXQgdXAgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QnLAogICBwcm9uYW1lID0+ ICdwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90JywgcHJvdm9sYXRpbGUgPT4g J3YnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9w Z3N0YXQuaAppbmRleCA1ZTMzMjZhM2I5Li44NzJlYjM1NzU3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtMjkxLDYg KzI5MSw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVBnU3RhdF9D b3VudGVyIGNvbmZsaWN0X3RhYmxlc3BhY2U7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rf bG9jazsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9zbmFwc2hvdDsKKwlQZ1N0YXRfQ291 bnRlciBjb25mbGljdF9sb2dpY2Fsc2xvdDsKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF9i dWZmZXJwaW47CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jazsK IAlQZ1N0YXRfQ291bnRlciB0ZW1wX2ZpbGVzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmlu ZGV4IDg4NzJjODBjZGYuLjIzNmViY2RiZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgK QEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogCisjZGVmaW5lIExvZ2ljYWxSZXBsaWNh dGlvblNsb3RJc0ludmFsaWQocykgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLnht aW4pICYmIFwKKwkJCQkJCQkJCQkJICFUcmFuc2FjdGlvbklkSXNWYWxpZChzLT5kYXRhLmNh dGFsb2dfeG1pbikpCiAvKgogICogQmVoYXZpb3VyIG9mIHJlcGxpY2F0aW9uIHNsb3RzLCB1 cG9uIHJlbGVhc2Ugb3IgY3Jhc2guCiAgKgpAQCAtMjE1LDcgKzIxNyw3IEBAIGV4dGVybiB2 b2lkIFJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04odm9pZCk7CiBleHRlcm4g WExvZ1JlY1B0ciBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZUxvZ2ljYWxSZXN0YXJ0TFNOKHZv aWQpOwogZXh0ZXJuIGJvb2wgUmVwbGljYXRpb25TbG90c0NvdW50REJTbG90cyhPaWQgZGJv aWQsIGludCAqbnNsb3RzLCBpbnQgKm5hY3RpdmUpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRp b25TbG90c0Ryb3BEQlNsb3RzKE9pZCBkYm9pZCk7Ci1leHRlcm4gYm9vbCBJbnZhbGlkYXRl T2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubyk7CitleHRl cm4gdm9pZCBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdObyBv bGRlc3RTZWdubywgYm9vbCAqaW52YWxpZGF0ZWQsIE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25J ZCAqeGlkKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3QgKlNlYXJjaE5hbWVkUmVwbGljYXRp b25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVlZF9sb2NrKTsKIGV4dGVybiBpbnQJ UmVwbGljYXRpb25TbG90SW5kZXgoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIGV4dGVybiBi b29sIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4LCBOYW1lIG5hbWUpOwpAQCAtMjI3 LDUgKzIyOSw2IEBAIGV4dGVybiB2b2lkIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKHZv aWQpOwogCiBleHRlcm4gdm9pZCBDaGVja1Nsb3RSZXF1aXJlbWVudHModm9pZCk7CiBleHRl cm4gdm9pZCBDaGVja1Nsb3RQZXJtaXNzaW9ucyh2b2lkKTsKK2V4dGVybiB2b2lkIFJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90cyhPaWQgZGJvaWQsIFRyYW5zYWN0 aW9uSWQgeGlkLCBjaGFyICpyZWFzb24pOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDkwNWFmMjIzMWIuLjJmNTIxMDBi MDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5 cGVkZWYgZW51bQogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRSwKIAlQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0ssCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05G TElDVF9TTkFQU0hPVCwKKwlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9U LAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVGRkVSUElOLAogCVBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSywKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnku aAppbmRleCAyZWZmZGVhMTI2Li40MWY0ZGMzNzJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N0YW5kYnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnku aApAQCAtMzAsOCArMzAsMTAgQEAgZXh0ZXJuIHZvaWQgSW5pdFJlY292ZXJ5VHJhbnNhY3Rp b25FbnZpcm9ubWVudCh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duUmVjb3ZlcnlUcmFu c2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwogCiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLAorCQkJCQkJCQkJCQkJYm9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQlS ZWxGaWxlTG9jYXRvciBsb2NhdG9yKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCQkgICBib29sIGlzQ2F0YWxvZ1JlbCwKIAkJ CQkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKTsKIGV4dGVybiB2b2lkIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFRhYmxlc3BhY2UoT2lkIHRzaWQpOwogZXh0ZXJu IHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoRGF0YWJhc2UoT2lkIGRiaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBlN2EyZjU4NTZhLi4xMWVh MjA2MzM3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTQ3Miw4 ICsxNDcyLDkgQEAgcGdfcmVwbGljYXRpb25fc2xvdHN8IFNFTEVDVCBsLnNsb3RfbmFtZSwK ICAgICBsLmNvbmZpcm1lZF9mbHVzaF9sc24sCiAgICAgbC53YWxfc3RhdHVzLAogICAgIGwu c2FmZV93YWxfc2l6ZSwKLSAgICBsLnR3b19waGFzZQotICAgRlJPTSAocGdfZ2V0X3JlcGxp Y2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdpbiwgc2xvdF90eXBlLCBkYXRvaWQs IHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4bWluLCBjYXRhbG9nX3htaW4sIHJl c3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3YWxfc3RhdHVzLCBzYWZlX3dhbF9z aXplLCB0d29fcGhhc2UpCisgICAgbC50d29fcGhhc2UsCisgICAgbC5jb25mbGljdGluZwor ICAgRlJPTSAocGdfZ2V0X3JlcGxpY2F0aW9uX3Nsb3RzKCkgbChzbG90X25hbWUsIHBsdWdp biwgc2xvdF90eXBlLCBkYXRvaWQsIHRlbXBvcmFyeSwgYWN0aXZlLCBhY3RpdmVfcGlkLCB4 bWluLCBjYXRhbG9nX3htaW4sIHJlc3RhcnRfbHNuLCBjb25maXJtZWRfZmx1c2hfbHNuLCB3 YWxfc3RhdHVzLCBzYWZlX3dhbF9zaXplLCB0d29fcGhhc2UsIGNvbmZsaWN0aW5nKQogICAg ICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKGwuZGF0b2lkID0gZC5vaWQpKSk7CiBw Z19yb2xlc3wgU0VMRUNUIHBnX2F1dGhpZC5yb2xuYW1lLAogICAgIHBnX2F1dGhpZC5yb2xz dXBlciwKQEAgLTE4NjgsNyArMTg2OSw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz fCBTRUxFQ1Qgb2lkIEFTIGRhdGlkLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Y2sob2lkKSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3Nu YXBzaG90KG9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfYnVmZmVycGluKG9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgIHBnX3N0YXRf Z2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBBUyBjb25mbF9kZWFkbG9j aworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBB UyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9sb2dpY2Fs c2xvdChvaWQpIEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgRlJPTSBwZ19kYXRh YmFzZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBwaWQsCiAgICAgZ3NzX2F1dGggQVMg Z3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEKCg== --------------xcV5bng7yz5XMd7kxCkCzz4E Content-Type: text/plain; charset=UTF-8; name="v45-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v45-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3YWIwYTZlYzA0NmYwYzE4MWM4ZjNiOTZjYjE4YWU5MzhmNTczYmE5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAzMCBKYW4gMjAyMyAxNTozMDoxNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQ1IDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0CgpPdmVyYWxsIGRlc2lnbjoKCjEuIFdlIHdhbnQgdG8gZW5hYmxl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieXMsIGJ1dCByZXBsYXkgb2YgV0FMCmZyb20g dGhlIHByaW1hcnkgbWlnaHQgcmVtb3ZlIGRhdGEgdGhhdCBpcyBuZWVkZWQgYnkgbG9naWNh bCBkZWNvZGluZywKY2F1c2luZyBlcnJvcihzKSBvbiB0aGUgc3RhbmRieS4gVG8gcHJldmVu dCB0aG9zZSBlcnJvcnMsIGEgbmV3IHJlcGxpY2F0aW9uCmNvbmZsaWN0IHNjZW5hcmlvIG5l ZWRzIHRvIGJlIGFkZHJlc3NlZCAoYXMgbXVjaCBhcyBob3Qgc3RhbmRieSBkb2VzKS4KCjIu IE91ciBjaG9zZW4gc3RyYXRlZ3kgZm9yIGRlYWxpbmcgd2l0aCB0aGlzIHR5cGUgb2YgcmVw bGljYXRpb24gc2xvdAppcyB0byBpbnZhbGlkYXRlIGxvZ2ljYWwgc2xvdHMgZm9yIHdoaWNo IG5lZWRlZCBkYXRhIGhhcyBiZWVuIHJlbW92ZWQuCgozLiBUbyBkbyB0aGlzIHdlIG5lZWQg dGhlIGxhdGVzdFJlbW92ZWRYaWQgZm9yIGVhY2ggY2hhbmdlLCBqdXN0IGFzIHdlCmRvIGZv ciBwaHlzaWNhbCByZXBsaWNhdGlvbiBjb25mbGljdHMsIGJ1dCB3ZSBhbHNvIG5lZWQgdG8g a25vdwp3aGV0aGVyIGFueSBwYXJ0aWN1bGFyIGNoYW5nZSB3YXMgdG8gZGF0YSB0aGF0IGxv Z2ljYWwgcmVwbGljYXRpb24KbWlnaHQgYWNjZXNzLiBUaGF0IHdheSwgZHVyaW5nIFdBTCBy ZXBsYXksIHdlIGtub3cgd2hlbiB0aGVyZSBpcyBhIHJpc2sgb2YKY29uZmxpY3QgYW5kLCBp ZiBzbywgaWYgdGhlcmUgaXMgYSBjb25mbGljdC4KCjQuIFdlIGNhbid0IHJlbHkgb24gdGhl IHN0YW5kYnkncyByZWxjYWNoZSBlbnRyaWVzIGZvciB0aGlzIHB1cnBvc2UgaW4KYW55IHdh eSwgYmVjYXVzZSB0aGUgc3RhcnR1cCBwcm9jZXNzIGNhbid0IGFjY2VzcyBjYXRhbG9nIGNv bnRlbnRzLgoKNS4gVGhlcmVmb3JlIGV2ZXJ5IFdBTCByZWNvcmQgdGhhdCBwb3RlbnRpYWxs eSByZW1vdmVzIGRhdGEgZnJvbSB0aGUKaW5kZXggb3IgaGVhcCBtdXN0IGNhcnJ5IGEgZmxh ZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IGl0IGlzIG9uZQp0aGF0IG1pZ2h0IGJlIGFj Y2Vzc2VkIGR1cmluZyBsb2dpY2FsIGRlY29kaW5nLgoKV2h5IGRvIHdlIG5lZWQgdGhpcyBm b3IgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5PwoKRmlyc3QsIGxldCdzIGZvcmdldCBh Ym91dCBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgYW5kIHJlY2FsbCB0aGF0Cm9uIGEg cHJpbWFyeSBkYXRhYmFzZSwgYW55IGNhdGFsb2cgcm93cyB0aGF0IG1heSBiZSBuZWVkZWQg YnkgYSBsb2dpY2FsCmRlY29kaW5nIHJlcGxpY2F0aW9uIHNsb3QgYXJlIG5vdCByZW1vdmVk LgoKVGhpcyBpcyBkb25lIHRoYW5rcyB0byB0aGUgY2F0YWxvZ194bWluIGFzc29jaWF0ZWQg d2l0aCB0aGUgbG9naWNhbApyZXBsaWNhdGlvbiBzbG90LgoKQnV0LCB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24gc3RhbmRieSwgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKCi0gaG90X3N0 YW5kYnlfZmVlZGJhY2sgaXMgb2ZmCi0gaG90X3N0YW5kYnlfZmVlZGJhY2sgaXMgb24gYnV0 IHRoZXJlIGlzIG5vIGEgcGh5c2ljYWwgc2xvdCBiZXR3ZWVuCiAgdGhlIHByaW1hcnkgYW5k IHRoZSBzdGFuZGJ5LiBUaGVuLCBob3Rfc3RhbmRieV9mZWVkYmFjayB3aWxsIHdvcmssCiAg YnV0IG9ubHkgd2hpbGUgdGhlIGNvbm5lY3Rpb24gaXMgYWxpdmUgKGZvciBleGFtcGxlIGEg bm9kZSByZXN0YXJ0CiAgd291bGQgYnJlYWsgaXQpCgpUaGVuLCB0aGUgcHJpbWFyeSBtYXkg ZGVsZXRlIHN5c3RlbSBjYXRhbG9nIHJvd3MgdGhhdCBjb3VsZCBiZSBuZWVkZWQKYnkgdGhl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkgKGFzIGl0IGRvZXMgbm90IGtub3cg YWJvdXQgdGhlCmNhdGFsb2dfeG1pbiBvbiB0aGUgc3RhbmRieSkuCgpTbywgaXTigJlzIG1h bmRhdG9yeSB0byBpZGVudGlmeSB0aG9zZSByb3dzIGFuZCBpbnZhbGlkYXRlIHRoZSBzbG90 cwp0aGF0IG1heSBuZWVkIHRoZW0gaWYgYW55LiBJZGVudGlmeWluZyB0aG9zZSByb3dzIGlz IHRoZSBwdXJwb3NlIG9mCnRoaXMgY29tbWl0LgoKSW1wbGVtZW50YXRpb246CgpXaGVuIGEg V0FMIHJlcGxheSBvbiBzdGFuZGJ5IGluZGljYXRlcyB0aGF0IGEgY2F0YWxvZyB0YWJsZSB0 dXBsZSBpcwp0byBiZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBh IGxvZ2ljYWwgc2xvdCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0aGF0IG1lYW5zIHRoZSBzbG90 J3MgY2F0YWxvZ194bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4aWQsIGFuZCB3ZSBuZWVkIHRv IGhhbmRsZSB0aGUgY29uZmxpY3QuIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRv IHRoZSBhY3R1YWwgY29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcg ZmllbGQKaXNDYXRhbG9nUmVsIGluIHN1Y2ggV0FMIHJlY29yZHMgKGFuZCBhIG5ldyBiaXQg c2V0IGluIHRoZQp4bF9oZWFwX3Zpc2libGUgZmxhZ3MgZmllbGQpLCB0aGF0IGlzIHRydWUg Zm9yIGNhdGFsb2cgdGFibGVzLCBzbyBhcyB0bwphcnJhbmdlIGZvciBjb25mbGljdCBoYW5k bGluZy4KClRoZSBhZmZlY3RlZCBXQUwgcmVjb3JkcyBhcmUgdGhlIG9uZXMgdGhhdCBhbHJl YWR5IGNvbnRhaW4gdGhlCnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZpZWxkLCBuYW1lbHk6 CgotIGdpc3R4bG9nRGVsZXRlCi0gZ2lzdHhsb2dQYWdlUmV1c2UKLSB4bF9oYXNoX3ZhY3V1 bV9vbmVfcGFnZQotIHhsX2hlYXBfcHJ1bmUKLSB4bF9oZWFwX2ZyZWV6ZV9wYWdlCi0geGxf aGVhcF92aXNpYmxlCi0geGxfYnRyZWVfcmV1c2VfcGFnZQotIHhsX2J0cmVlX2RlbGV0ZQot IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAoKRHVlIHRvIHRoaXMgbmV3IGZpZWxkIGJlaW5nIGFk ZGVkLCB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSBhbmQKZ2lzdHhsb2dEZWxldGUgZG8gbm93 IGNvbnRhaW4gdGhlIG9mZnNldHMgdG8gYmUgZGVsZXRlZCBhcyBhCkZMRVhJQkxFX0FSUkFZ X01FTUJFUi4gVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIGNvcnJlY3QgYWxpZ25lbWVudC4K SXQncyBub3QgbmVlZGVkIG9uIHRoZSBvdGhlcnMgc3RydWN0IHdoZXJlIGlzQ2F0YWxvZ1Jl bCBoYXMKYmVlbiBhZGRlZC4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAoaW4gYW4gb2xkZXIg dmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZApEcm91dm90ClJldmlld2VkLUJ5 OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6 aW8gZGUKUm95ZXMgTWVsbG8sIE1lbGFuaWUgUGxhZ2VtYW4KLS0tCiBjb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jICAgICAgICAgICAgfCAgMTUgKy0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0LmMgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3RidWlsZC5jICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgfCAgMTcgKystLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgIHwgIDEyICstLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaGluc2VydC5jICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYyAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYyAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRpbnNlcnQuYyAgICAgIHwgIDkxICsrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICAgICAgfCAxMTEgKysrKysrKysrKystLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAgICAgICAgfCAg IDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMgICAgICB8ICA1 MCArKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAg ICB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyAgICAg IHwgICA5ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgICAgICB8ICAg NiArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMgfCAgIDUg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAgICAgICAgfCAgIDcgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oICAgICAgICAgICAgICB8ICAxMyArKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaCAgICAgICAgICAgICB8ICAgOCArLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICAgIHwgIDEwICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAgfCAgMzcgKysrKy0t LQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCAgICAgICAgICAgICAgIHwgICA4ICst CiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICAgIHwgIDEwICstCiBz cmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgIHwgICA0ICstCiAzNSBm aWxlcyBjaGFuZ2VkLCAyNjMgaW5zZXJ0aW9ucygrKSwgMjAzIGRlbGV0aW9ucygtKQogICAz LjMlIGNvbnRyaWIvYW1jaGVjay8KICAgNC43JSBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC8K ICAgNC4xJSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8KICA1OS4wJSBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlLwogICAzLjclIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAyMi4wJSBzcmMv aW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9u YnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKaW5kZXggMjU3Y2Zm NjcxYi4uZWIyODBkNDg5MyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9u YnRyZWUuYworKysgYi9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC0xODMs NiArMTgzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGludmFyaWFudF9sX25vbnRhcmdldF9v ZmZzZXQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwKIAkJCQkJCQkJCQkJCU9mZnNldE51bWJl ciB1cHBlcmJvdW5kKTsKIHN0YXRpYyBQYWdlIHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hl Y2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrbnVtKTsKIHN0YXRpYyBpbmxpbmUg QlRTY2FuSW5zZXJ0IGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWwsCisJ CQkJCQkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJCQlJbmRleFR1cGxl IGl0dXApOwogc3RhdGljIEl0ZW1JZCBQYWdlR2V0SXRlbUlkQ2FyZWZ1bChCdHJlZUNoZWNr U3RhdGUgKnN0YXRlLCBCbG9ja051bWJlciBibG9jaywKIAkJCQkJCQkJICAgUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgb2Zmc2V0KTsKQEAgLTMzMSw3ICszMzIsNyBAQCBidF9pbmRleF9j aGVja19pbnRlcm5hbChPaWQgaW5kcmVsaWQsIGJvb2wgcGFyZW50Y2hlY2ssIGJvb2wgaGVh cGFsbGluZGV4ZWQsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSkp KTsKIAogCQkvKiBFeHRyYWN0IG1ldGFkYXRhIGZyb20gbWV0YXBhZ2UsIGFuZCBzYW5pdGl6 ZSBpdCBpbiBwYXNzaW5nICovCi0JCV9idF9tZXRhdmVyc2lvbihpbmRyZWwsICZoZWFwa2V5 c3BhY2UsICZhbGxlcXVhbGltYWdlKTsKKwkJX2J0X21ldGF2ZXJzaW9uKGluZHJlbCwgaGVh cHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1hZ2UpOwogCQlpZiAoYWxsZXF1YWxp bWFnZSAmJiAhaGVhcGtleXNwYWNlKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLApAQCAtMTI1OCw3ICsxMjU5LDcgQEAgYnRf dGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKIAkJfQogCiAJCS8q IEJ1aWxkIGluc2VydGlvbiBzY2Fua2V5IGZvciBjdXJyZW50IHBhZ2Ugb2Zmc2V0ICovCi0J CXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgaXR1cCk7CisJ CXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2b3RzZWFyY2goc3RhdGUtPnJlbCwgc3RhdGUtPmhl YXByZWwsIGl0dXApOwogCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0dXBsZSBzaXplIGRvZXMg bm90IGV4Y2VlZCB0aGUgcmVsZXZhbnQgQlRSRUVfVkVSU0lPTgpAQCAtMTc2OCw3ICsxNzY5 LDcgQEAgYnRfcmlnaHRfcGFnZV9jaGVja19zY2Fua2V5KEJ0cmVlQ2hlY2tTdGF0ZSAqc3Rh dGUpCiAJICogbWVtb3J5IHJlbWFpbmluZyBhbGxvY2F0ZWQuCiAJICovCiAJZmlyc3RpdHVw ID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHJpZ2h0cGFnZSwgcmlnaHRpdGVtKTsKLQly ZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90c2VhcmNoKHN0YXRlLT5yZWwsIGZpcnN0aXR1cCk7 CisJcmV0dXJuIGJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBzdGF0ZS0+ aGVhcHJlbCwgZmlyc3RpdHVwKTsKIH0KIAogLyoKQEAgLTI2ODEsNyArMjY4Miw3IEBAIGJ0 X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkK IAlCdWZmZXIJCWxidWY7CiAJYm9vbAkJZXhpc3RzOwogCi0Ja2V5ID0gX2J0X21rc2Nhbmtl eShzdGF0ZS0+cmVsLCBpdHVwKTsKKwlrZXkgPSBfYnRfbWtzY2Fua2V5KHN0YXRlLT5yZWws IHN0YXRlLT5oZWFwcmVsLCBpdHVwKTsKIAlBc3NlcnQoa2V5LT5oZWFwa2V5c3BhY2UgJiYg a2V5LT5zY2FudGlkICE9IE5VTEwpOwogCiAJLyoKQEAgLTI2OTQsNyArMjY5NSw3IEBAIGJ0 X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkK IAkgKi8KIAlBc3NlcnQoc3RhdGUtPnJlYWRvbmx5ICYmIHN0YXRlLT5yb290ZGVzY2VuZCk7 CiAJZXhpc3RzID0gZmFsc2U7Ci0Jc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5yZWwsIGtl eSwgJmxidWYsIEJUX1JFQUQsIE5VTEwpOworCXN0YWNrID0gX2J0X3NlYXJjaChzdGF0ZS0+ cmVsLCBzdGF0ZS0+aGVhcHJlbCwga2V5LCAmbGJ1ZiwgQlRfUkVBRCwgTlVMTCk7CiAKIAlp ZiAoQnVmZmVySXNWYWxpZChsYnVmKSkKIAl7CkBAIC0zMTMzLDExICszMTM0LDExIEBAIHBh bGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJs b2NrbnVtKQogICogdGhlIHNjYW5rZXkgaXMgZ3JlYXRlci4KICAqLwogc3RhdGljIGlubGlu ZSBCVFNjYW5JbnNlcnQKLWJ0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgaXR1cCkKK2J0X21rc2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEluZGV4VHVwbGUgaXR1cCkKIHsKIAlCVFNjYW5JbnNl cnQgc2tleTsKIAotCXNrZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJc2tleSA9 IF9idF9ta3NjYW5rZXkocmVsLCBoZWFwcmVsLCBpdHVwKTsKIAlza2V5LT5waXZvdHNlYXJj aCA9IHRydWU7CiAKIAlyZXR1cm4gc2tleTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRl eCBiYTM5NGYwOGY2Li4zYWM2OGVjM2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBA IC0zNDgsNyArMzQ4LDcgQEAgZ2lzdHBsYWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBm cmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lzdHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBw dHItPm5leHQpCiAJCXsKIAkJCS8qIEFsbG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1 ZmZlciA9IGdpc3ROZXdCdWZmZXIocmVsKTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1 ZmZlcihyZWwsIGhlYXBSZWwpOwogCQkJR0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChp c19sZWFmKSA/IEZfTEVBRiA6IDApOwogCQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShw dHItPmJ1ZmZlcik7CiAJCQlwdHItPmJsb2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1i ZXIocHRyLT5idWZmZXIpOwpAQCAtMTY5NCw3ICsxNjk0LDggQEAgZ2lzdHBydW5lcGFnZShS ZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwgQnVmZmVyIGJ1ZmZlciwgUmVsYXRpb24gaGVhcFJl bCkKIAogCQkJcmVjcHRyID0gZ2lzdFhMb2dEZWxldGUoYnVmZmVyLAogCQkJCQkJCQkJZGVs ZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJCQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24p OworCQkJCQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQloZWFwUmVs KTsKIAogCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIpOwogCQl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jCmluZGV4IGQyMWEzMDhkNDEuLjQ0NjIwMjI5MDQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTgsNyArMjk4LDcgQEAgZ2lz dGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4 SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXplIHRoZSByb290IHBhZ2Ug Ki8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJCWJ1ZmZlciA9IGdpc3RO ZXdCdWZmZXIoaW5kZXgsIGhlYXApOwogCQlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIo YnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShi dWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRp bC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRleCA1NjQ1MWZl ZGUxLi5hYWQxNGE0MDFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKQEAg LTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBwYWdl IGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVyCi1naXN0TmV3QnVmZmVy KFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExvY2s7CkBAIC04NjUsNyAr ODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJCSAqIHBhZ2UncyBkZWxl dGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgpICYmIFJl bGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIsIGJsa25vLCBH aXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIs IGhlYXByZWwsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CiAKIAkJCQly ZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dp c3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5k ZXggZjY1ODY0MjU0YS4uYjc2NzhmM2MxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 eGxvZy5jCkBAIC0xNzcsNiArMTc3LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJZ2lzdHhsb2dEZWxldGUgKnhsZGF0YSA9IChnaXN0eGxv Z0RlbGV0ZSAqKSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOwogCUJ1ZmZlcgkJYnVmZmVyOwog CVBhZ2UJCXBhZ2U7CisJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZSA9IHhsZGF0YS0+b2Zmc2V0 czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2luZyB0byBk bywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0yMDMsMTQgKzIwNCw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJcGFnZSA9 IChQYWdlKSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNHZXREYXRh TGVuKHJlY29yZCkgPiBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSkKLQkJewotCQkJT2Zmc2V0TnVt YmVyICp0b2RlbGV0ZTsKLQotCQkJdG9kZWxldGUgPSAoT2Zmc2V0TnVtYmVyICopICgoY2hh ciAqKSB4bGRhdGEgKyBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSk7Ci0KLQkJCVBhZ2VJbmRleE11 bHRpRGVsZXRlKHBhZ2UsIHRvZGVsZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7Ci0JCX0KKwkJ UGFnZUluZGV4TXVsdGlEZWxldGUocGFnZSwgdG9EZWxldGUsIHhsZGF0YS0+bnRvZGVsZXRl KTsKIAogCQlHaXN0Q2xlYXJQYWdlSGFzR2FyYmFnZShwYWdlKTsKIAkJR2lzdE1hcmtUdXBs ZXNEZWxldGVkKHBhZ2UpOwpAQCAtNTk3LDcgKzU5MSw4IEBAIGdpc3RYTG9nQXNzaWduTFNO KHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRlbGV0ZWQg cGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQorZ2lzdFhMb2dQ YWdlUmV1c2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCSAgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIHsKIAlnaXN0eGxv Z1BhZ2VSZXVzZSB4bHJlY19yZXVzZTsKIApAQCAtNjA4LDYgKzYwMyw3IEBAIGdpc3RYTG9n UGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2Fj dGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19y ZXVzZS5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nKGhlYXByZWwpOwogCXhscmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7 CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENv bmZsaWN0SG9yaXpvbiA9IGRlbGV0ZVhpZDsKQEAgLTY3MiwxMSArNjY4LDEyIEBAIGdpc3RY TG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAgKi8KIFhMb2dSZWNQdHIKIGdpc3RYTG9nRGVs ZXRlKEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqdG9kZWxldGUsIGludCBudG9kZWxl dGUsCi0JCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKQorCQkJ ICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgUmVsYXRpb24gaGVh cHJlbCkKIHsKIAlnaXN0eGxvZ0RlbGV0ZSB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsK IAorCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBz bmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4bHJlYy5udG9kZWxldGUgPSBudG9kZWxldGU7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggZjM4YjQyZWZiOS4u MDhjZWI5MTI4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTk4 MCw4ICs5ODAsMTAgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAlQYWdlCQlwYWdlOwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKIAlI YXNoUGFnZU9wYXF1ZSBwYWdlb3BhcXVlOworCU9mZnNldE51bWJlciAqdG9EZWxldGU7CiAK IAl4bGRhdGEgPSAoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgKikgWExvZ1JlY0dldERhdGEo cmVjb3JkKTsKKwl0b0RlbGV0ZSA9IHhsZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYg d2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4g YmVmb3JlIHdlCkBAIC0xMDEwLDE1ICsxMDEyLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVf cGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVm ZmVyR2V0UGFnZShidWZmZXIpOwogCi0JCWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQp ID4gU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2UpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdW51 c2VkOwotCi0JCQl1bnVzZWQgPSAoT2Zmc2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEg KyBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRl KHBhZ2UsIHVudXNlZCwgeGxkYXRhLT5udHVwbGVzKTsKLQkJfQotCisJCVBhZ2VJbmRleE11 bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRlLCB4bGRhdGEtPm50dXBsZXMpOwogCQkvKgogCQkg KiBNYXJrIHRoZSBwYWdlIGFzIG5vdCBjb250YWluaW5nIGFueSBMUF9ERUFEIGl0ZW1zLiBT ZWUgY29tbWVudHMgaW4KIAkJICogX2hhc2hfdmFjdXVtX29uZV9wYWdlKCkgZm9yIGRldGFp bHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKaW5kZXggYTYwNGUzMTg5 MS4uMjI2NTZiMjRlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpA QCAtNDMyLDYgKzQzMiw3IEBAIF9oYXNoX3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhyZWwsIEJ1ZmZlciBtZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFz aF92YWN1dW1fb25lX3BhZ2UgeGxyZWM7CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJ eGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhocmVsKTsKIAkJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNo b3RDb25mbGljdEhvcml6b247CiAJCQl4bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBlNjAyNGE5ODBiLi5kNDc4NzI0Yjlk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNjg3Miw2ICs2ODcyLDcgQEAg aGVhcF9mcmVlemVfZXhlY3V0ZV9wcmVwYXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZm ZXIsCiAJCW5wbGFucyA9IGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywg cGxhbnMsIG9mZnNldHMpOwogCiAJCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0g c25hcHNob3RDb25mbGljdEhvcml6b247CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0 aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5z ID0gbnBsYW5zOwogCiAJCVhMb2dCZWdpbkluc2VydCgpOwpAQCAtODQ0Miw3ICs4NDQzLDcg QEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRl KQogICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxv Z19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1 ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwKK2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0 aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxf aGVhcF92aXNpYmxlIHhscmVjOwpAQCAtODQ1NCw2ICs4NDU1LDggQEAgbG9nX2hlYXBfdmlz aWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZm ZXIgdm1fYnVmZmVyLAogCiAJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7CisJaWYgKFJl bGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKSkKKwkJeGxyZWMuZmxh Z3MgfD0gVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTDsKIAlYTG9nQmVnaW5JbnNlcnQo KTsKIAlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFZpc2li bGUpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRl eCBjNGIxOTE2ZDM2Li4zOTJjNmU2NTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKQEAgLTcyMCw5ICs3MjAsMTQgQEAgaGVhcGFtX3JlbGF0aW9u X2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwK IAkJCQkJCQkJICptdWx0aV9jdXRvZmYpOwogCiAKLQkvKiBTZXQgdXAgc29ydGluZyBpZiB3 YW50ZWQgKi8KKwkvKgorCSAqIFNldCB1cCBzb3J0aW5nIGlmIHdhbnRlZC4gTmV3SGVhcCBp cyBiZWluZyBwYXNzZWQgdG8KKwkgKiB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcigpLCBpdCBj b3VsZCBoYXZlIGJlZW4gT2xkSGVhcCB0b28uIEl0IGRvZXMgbm90CisJICogcmVhbGx5IG1h dHRlciwgYXMgdGhlIGdvYWwgaXMgdG8gaGF2ZSBhIGhlYXAgcmVsYXRpb24gYmVpbmcgcGFz c2VkIHRvCisJICogX2J0X2xvZ19yZXVzZV9wYWdlKCkgKHdoaWNoIHNob3VsZCBub3QgYmUg Y2FsbGVkIGZyb20gdGhpcyBjb2RlIHBhdGgpLgorCSAqLwogCWlmICh1c2Vfc29ydCkKLQkJ dHVwbGVzb3J0ID0gdHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIob2xkVHVwRGVzYywgT2xkSW5k ZXgsCisJCXR1cGxlc29ydCA9IHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKG9sZFR1cERlc2Ms IE9sZEluZGV4LCBOZXdIZWFwLAogCQkJCQkJCQkJCQltYWludGVuYW5jZV93b3JrX21lbSwK IAkJCQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOwogCWVsc2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNGU2NWNiY2FkZi4uM2YwMzQyMzUxZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQxOCw2ICs0MTgsNyBAQCBo ZWFwX3BhZ2VfcHJ1bmUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQl4 bF9oZWFwX3BydW5lIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVj LmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmco cmVsYXRpb24pOwogCQkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBwcnN0YXRl LnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnJlZGlyZWN0ZWQgPSBwcnN0 YXRlLm5yZWRpcmVjdGVkOwogCQkJeGxyZWMubmRlYWQgPSBwcnN0YXRlLm5kZWFkOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDhmMTRjZjg1ZjMuLmFlNjI4 ZDc0N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTI3MTAs NiArMjcxMCw3IEBAIGxhenlfdmFjdXVtX29uZV9pbmRleChSZWxhdGlvbiBpbmRyZWwsIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBE RUJVRzI7CiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8u c3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJlbCA9IHZhY3Jl bC0+cmVsOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0aW9u LgpAQCAtMjc1OSw2ICsyNzYwLDcgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxhdGlv biBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAKIAlpdmluZm8ubnVt X2hlYXBfdHVwbGVzID0gcmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHZhY3JlbC0+ YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gdmFjcmVsLT5yZWw7CiAKIAkvKgogCSAq IFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNzRmZjAxYmIxNy4uZDFiYTg1OTg1MSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMjg4LDgg KzI4OCw3IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChy ZWNwdHIpKQogCQkJewogCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0g bG9nX2hlYXBfdmlzaWJsZShyZWwtPnJkX2xvY2F0b3IsIGhlYXBCdWYsIHZtQnVmLAotCQkJ CQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOworCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zp c2libGUocmVsLCBoZWFwQnVmLCB2bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJCQkJ LyoKIAkJCQkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19o aW50cz1vbiksIHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwppbmRl eCBmNGMxYTk3NGVmLi44YzZlODY3YzYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0aW5zZXJ0LmMKQEAgLTMwLDcgKzMwLDggQEAKICNkZWZpbmUgQlRSRUVfRkFTVFBBVEhf TUlOX0xFVkVMCTIKIAogCi1zdGF0aWMgQlRTdGFjayBfYnRfc2VhcmNoX2luc2VydChSZWxh dGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOworc3RhdGljIEJUU3RhY2sg X2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJ CQkJCQkgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSk7CiBzdGF0aWMgVHJhbnNhY3Rpb25J ZCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwKIAkJCQkJCQkJCSAgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJCQkJCSAgSW5kZXhV bmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCAqaXNfdW5pcXVlLApAQCAtNDEsOCArNDIs OSBAQCBzdGF0aWMgT2Zmc2V0TnVtYmVyIF9idF9maW5kaW5zZXJ0bG9jKFJlbGF0aW9uIHJl bCwKIAkJCQkJCQkJCSAgYm9vbCBpbmRleFVuY2hhbmdlZCwKIAkJCQkJCQkJCSAgQlRTdGFj ayBzdGFjaywKIAkJCQkJCQkJCSAgUmVsYXRpb24gaGVhcFJlbCk7Ci1zdGF0aWMgdm9pZCBf YnRfc3RlcHJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwg QlRTdGFjayBzdGFjayk7Ci1zdGF0aWMgdm9pZCBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiBy ZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKK3N0YXRpYyB2b2lkIF9idF9zdGVwcmlnaHQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJICBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKTsKK3N0YXRpYyB2b2lkIF9idF9pbnNlcnRv bnBnKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBf a2V5LAogCQkJCQkJICAgQnVmZmVyIGJ1ZiwKIAkJCQkJCSAgIEJ1ZmZlciBjYnVmLAogCQkJ CQkJICAgQlRTdGFjayBzdGFjaywKQEAgLTUxLDEzICs1MywxMyBAQCBzdGF0aWMgdm9pZCBf YnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKIAkJ CQkJCSAgIE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLAogCQkJCQkJICAgaW50IHBvc3Rpbmdv ZmYsCiAJCQkJCQkgICBib29sIHNwbGl0X29ubHlfcGFnZSk7Ci1zdGF0aWMgQnVmZmVyIF9i dF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCUJ1ZmZlciBjYnVmLCBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwgU2l6ZSBu ZXdpdGVtc3osCi0JCQkJCQlJbmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3JpZ25l d2l0ZW0sCitzdGF0aWMgQnVmZmVyIF9idF9zcGxpdChSZWxhdGlvbiByZWwsIFJlbGF0aW9u IGhlYXByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwKKwkJCQkJCUJ1ZmZlciBidWYsIEJ1 ZmZlciBjYnVmLCBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKKwkJCQkJCVNpemUgbmV3aXRl bXN6LCBJbmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3JpZ25ld2l0ZW0sCiAJCQkJ CQlJbmRleFR1cGxlIG5wb3N0aW5nLCB1aW50MTYgcG9zdGluZ29mZik7Ci1zdGF0aWMgdm9p ZCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIEJ1ZmZlciBy YnVmLAotCQkJCQkJCSAgQlRTdGFjayBzdGFjaywgYm9vbCBpc3Jvb3QsIGJvb2wgaXNvbmx5 KTsKLXN0YXRpYyBCdWZmZXIgX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1 ZiwgQnVmZmVyIHJidWYpOworc3RhdGljIHZvaWQgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRp b24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCSAgQnVmZmVy IHJidWYsIEJUU3RhY2sgc3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSk7CitzdGF0 aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg QnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBfYnRfcGdh ZGR0dXAoUGFnZSBwYWdlLCBTaXplIGl0ZW1zaXplLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJ CQkJCU9mZnNldE51bWJlciBpdHVwX29mZiwgYm9vbCBuZXdmaXJzdGRhdGFpdGVtKTsKIHN0 YXRpYyB2b2lkIF9idF9kZWxldGVfb3JfZGVkdXBfb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwUmVsLApAQCAtMTA4LDcgKzExMCw3IEBAIF9idF9kb2luc2VydChSZWxh dGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAlib29sCQljaGVja2luZ3VuaXF1ZSA9IChj aGVja1VuaXF1ZSAhPSBVTklRVUVfQ0hFQ0tfTk8pOwogCiAJLyogd2UgbmVlZCBhbiBpbnNl cnRpb24gc2NhbiBrZXkgdG8gZG8gb3VyIHNlYXJjaCwgc28gYnVpbGQgb25lICovCi0JaXR1 cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJaXR1cF9rZXkgPSBfYnRfbWtz Y2Fua2V5KHJlbCwgaGVhcFJlbCwgaXR1cCk7CiAKIAlpZiAoY2hlY2tpbmd1bmlxdWUpCiAJ ewpAQCAtMTYyLDcgKzE2NCw3IEBAIHNlYXJjaDoKIAkgKiBzZWFyY2hpbmcgZnJvbSB0aGUg cm9vdCBwYWdlLiAgaW5zZXJ0c3RhdGUuYnVmIHdpbGwgaG9sZCBhIGJ1ZmZlciB0aGF0CiAJ ICogaXMgbG9ja2VkIGluIGV4Y2x1c2l2ZSBtb2RlIGFmdGVyd2FyZHMuCiAJICovCi0Jc3Rh Y2sgPSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSk7CisJc3RhY2sgPSBf YnRfc2VhcmNoX2luc2VydChyZWwsIGhlYXBSZWwsICZpbnNlcnRzdGF0ZSk7CiAKIAkvKgog CSAqIGNoZWNraW5ndW5pcXVlIGluc2VydHMgYXJlIG5vdCBhbGxvd2VkIHRvIGdvIGFoZWFk IHdoZW4gdHdvIHR1cGxlcyB3aXRoCkBAIC0yNTUsOCArMjU3LDggQEAgc2VhcmNoOgogCQkg Ki8KIAkJbmV3aXRlbW9mZiA9IF9idF9maW5kaW5zZXJ0bG9jKHJlbCwgJmluc2VydHN0YXRl LCBjaGVja2luZ3VuaXF1ZSwKIAkJCQkJCQkJCSAgIGluZGV4VW5jaGFuZ2VkLCBzdGFjaywg aGVhcFJlbCk7Ci0JCV9idF9pbnNlcnRvbnBnKHJlbCwgaXR1cF9rZXksIGluc2VydHN0YXRl LmJ1ZiwgSW52YWxpZEJ1ZmZlciwgc3RhY2ssCi0JCQkJCSAgIGl0dXAsIGluc2VydHN0YXRl Lml0ZW1zeiwgbmV3aXRlbW9mZiwKKwkJX2J0X2luc2VydG9ucGcocmVsLCBoZWFwUmVsLCBp dHVwX2tleSwgaW5zZXJ0c3RhdGUuYnVmLCBJbnZhbGlkQnVmZmVyLAorCQkJCQkgICBzdGFj aywgaXR1cCwgaW5zZXJ0c3RhdGUuaXRlbXN6LCBuZXdpdGVtb2ZmLAogCQkJCQkgICBpbnNl cnRzdGF0ZS5wb3N0aW5nb2ZmLCBmYWxzZSk7CiAJfQogCWVsc2UKQEAgLTMxMiw3ICszMTQs NyBAQCBzZWFyY2g6CiAgKiBzaW5jZSBlYWNoIHBlci1iYWNrZW5kIGNhY2hlIHdvbid0IHN0 YXkgdmFsaWQgZm9yIGxvbmcuCiAgKi8KIHN0YXRpYyBCVFN0YWNrCi1fYnRfc2VhcmNoX2lu c2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpCitfYnRfc2Vh cmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUSW5zZXJ0U3Rh dGUgaW5zZXJ0c3RhdGUpCiB7CiAJQXNzZXJ0KGluc2VydHN0YXRlLT5idWYgPT0gSW52YWxp ZEJ1ZmZlcik7CiAJQXNzZXJ0KCFpbnNlcnRzdGF0ZS0+Ym91bmRzX3ZhbGlkKTsKQEAgLTM3 NSw4ICszNzcsOCBAQCBfYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0 U3RhdGUgaW5zZXJ0c3RhdGUpCiAJfQogCiAJLyogQ2Fubm90IHVzZSBvcHRpbWl6YXRpb24g LS0gZGVzY2VuZCB0cmVlLCByZXR1cm4gcHJvcGVyIGRlc2NlbnQgc3RhY2sgKi8KLQlyZXR1 cm4gX2J0X3NlYXJjaChyZWwsIGluc2VydHN0YXRlLT5pdHVwX2tleSwgJmluc2VydHN0YXRl LT5idWYsIEJUX1dSSVRFLAotCQkJCQkgIE5VTEwpOworCXJldHVybiBfYnRfc2VhcmNoKHJl bCwgaGVhcHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAmaW5zZXJ0c3RhdGUtPmJ1ZiwK KwkJCQkJICBCVF9XUklURSwgTlVMTCk7CiB9CiAKIC8qCkBAIC04ODUsNyArODg3LDcgQEAg X2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogCQkJCQlfYnRfY29tcGFyZShyZWws IGl0dXBfa2V5LCBwYWdlLCBQX0hJS0VZKSA8PSAwKQogCQkJCQlicmVhazsKIAotCQkJCV9i dF9zdGVwcmlnaHQocmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJCV9idF9zdGVwcmln aHQocmVsLCBoZWFwUmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOwogCQkJCS8qIFVwZGF0ZSBs b2NhbCBzdGF0ZSBhZnRlciBzdGVwcGluZyByaWdodCAqLwogCQkJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGluc2VydHN0YXRlLT5idWYpOwogCQkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1 ZShwYWdlKTsKQEAgLTk2OSw3ICs5NzEsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlv biByZWwsCiAJCQkJcGdfcHJuZ191aW50MzIoJnBnX2dsb2JhbF9wcm5nX3N0YXRlKSA8PSAo UEdfVUlOVDMyX01BWCAvIDEwMCkpCiAJCQkJYnJlYWs7CiAKLQkJCV9idF9zdGVwcmlnaHQo cmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJX2J0X3N0ZXByaWdodChyZWwsIGhlYXBS ZWwsIGluc2VydHN0YXRlLCBzdGFjayk7CiAJCQkvKiBVcGRhdGUgbG9jYWwgc3RhdGUgYWZ0 ZXIgc3RlcHBpbmcgcmlnaHQgKi8KIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2VydHN0 YXRlLT5idWYpOwogCQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMTAy Miw3ICsxMDI0LDcgQEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogICogaW5k ZXhlcy4KICAqLwogc3RhdGljIHZvaWQKLV9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBC VEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQorX2J0X3N0ZXByaWdo dChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIEJUU3RhY2sgc3RhY2spCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUg b3BhcXVlOwpAQCAtMTA0OCw3ICsxMDUwLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlvbiBy ZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAJCSAqLwog CQlpZiAoUF9JTkNPTVBMRVRFX1NQTElUKG9wYXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hf c3BsaXQocmVsLCByYnVmLCBzdGFjayk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgaGVh cHJlbCwgcmJ1Ziwgc3RhY2spOwogCQkJcmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJCQljb250 aW51ZTsKIAkJfQpAQCAtMTA5OSw2ICsxMTAxLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAgKi8K IHN0YXRpYyB2b2lkCiBfYnRfaW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCisJCQkgICBSZWxh dGlvbiBoZWFwcmVsLAogCQkJICAgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LAogCQkJICAgQnVm ZmVyIGJ1ZiwKIAkJCSAgIEJ1ZmZlciBjYnVmLApAQCAtMTIwOSw4ICsxMjEyLDggQEAgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQlBc3NlcnQoIXNwbGl0X29ubHlfcGFnZSk7 CiAKIAkJLyogc3BsaXQgdGhlIGJ1ZmZlciBpbnRvIGxlZnQgYW5kIHJpZ2h0IGhhbHZlcyAq LwotCQlyYnVmID0gX2J0X3NwbGl0KHJlbCwgaXR1cF9rZXksIGJ1ZiwgY2J1ZiwgbmV3aXRl bW9mZiwgaXRlbXN6LCBpdHVwLAotCQkJCQkJIG9yaWdpdHVwLCBucG9zdGluZywgcG9zdGlu Z29mZik7CisJCXJidWYgPSBfYnRfc3BsaXQocmVsLCBoZWFwcmVsLCBpdHVwX2tleSwgYnVm LCBjYnVmLCBuZXdpdGVtb2ZmLCBpdGVtc3osCisJCQkJCQkgaXR1cCwgb3JpZ2l0dXAsIG5w b3N0aW5nLCBwb3N0aW5nb2ZmKTsKIAkJUHJlZGljYXRlTG9ja1BhZ2VTcGxpdChyZWwsCiAJ CQkJCQkJICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSwKIAkJCQkJCQkgICBCdWZmZXJH ZXRCbG9ja051bWJlcihyYnVmKSk7CkBAIC0xMjMzLDcgKzEyMzYsNyBAQCBfYnRfaW5zZXJ0 b25wZyhSZWxhdGlvbiByZWwsCiAJCSAqIHBhZ2UuCiAJCSAqLS0tLS0tLS0tLQogCQkgKi8K LQkJX2J0X2luc2VydF9wYXJlbnQocmVsLCBidWYsIHJidWYsIHN0YWNrLCBpc3Jvb3QsIGlz b25seSk7CisJCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgaGVhcHJlbCwgYnVmLCByYnVmLCBz dGFjaywgaXNyb290LCBpc29ubHkpOwogCX0KIAllbHNlCiAJewpAQCAtMTI1NCw3ICsxMjU3 LDcgQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkJQXNzZXJ0KCFpc2xlYWYp OwogCQkJQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoY2J1ZikpOwogCi0JCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CisJCQltZXRhYnVmID0g X2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSk7CiAJ CQltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCQkJbWV0YWQgPSBCVFBhZ2VH ZXRNZXRhKG1ldGFwZyk7CiAKQEAgLTE0MTgsNyArMTQyMSw3IEBAIF9idF9pbnNlcnRvbnBn KFJlbGF0aW9uIHJlbCwKIAkJICogY2FsbCBfYnRfZ2V0cm9vdGhlaWdodCB3aGlsZSBob2xk aW5nIGEgYnVmZmVyIGxvY2suCiAJCSAqLwogCQlpZiAoQmxvY2tOdW1iZXJJc1ZhbGlkKGJs b2NrY2FjaGUpICYmCi0JCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwpID49IEJUUkVFX0ZBU1RQ QVRIX01JTl9MRVZFTCkKKwkJCV9idF9nZXRyb290aGVpZ2h0KHJlbCwgaGVhcHJlbCkgPj0g QlRSRUVfRkFTVFBBVEhfTUlOX0xFVkVMKQogCQkJUmVsYXRpb25TZXRUYXJnZXRCbG9jayhy ZWwsIGJsb2NrY2FjaGUpOwogCX0KIApAQCAtMTQ1OSw4ICsxNDYyLDggQEAgX2J0X2luc2Vy dG9ucGcoUmVsYXRpb24gcmVsLAogICoJCVRoZSBwaW4gYW5kIGxvY2sgb24gYnVmIGFyZSBt YWludGFpbmVkLgogICovCiBzdGF0aWMgQnVmZmVyCi1fYnRfc3BsaXQoUmVsYXRpb24gcmVs LCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAotCQkg IE9mZnNldE51bWJlciBuZXdpdGVtb2ZmLCBTaXplIG5ld2l0ZW1zeiwgSW5kZXhUdXBsZSBu ZXdpdGVtLAorX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRT Y2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLAorCQkgIEJ1ZmZlciBjYnVmLCBPZmZz ZXROdW1iZXIgbmV3aXRlbW9mZiwgU2l6ZSBuZXdpdGVtc3osIEluZGV4VHVwbGUgbmV3aXRl bSwKIAkJICBJbmRleFR1cGxlIG9yaWduZXdpdGVtLCBJbmRleFR1cGxlIG5wb3N0aW5nLCB1 aW50MTYgcG9zdGluZ29mZikKIHsKIAlCdWZmZXIJCXJidWY7CkBAIC0xNzEyLDcgKzE3MTUs NyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1 ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqIHdheSBiZWNhdXNlIGl0IGF2b2lkcyBhbiB1 bm5lY2Vzc2FyeSBQQU5JQyB3aGVuIGVpdGhlciBvcmlncGFnZSBvciBpdHMKIAkgKiBleGlz dGluZyBzaWJsaW5nIHBhZ2UgYXJlIGNvcnJ1cHQuCiAJICovCi0JcmJ1ZiA9IF9idF9nZXRi dWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVh cHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKIAlyaWdodHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJi dWYpOwogCXJpZ2h0cGFnZW51bWJlciA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHJidWYpOwog CS8qIHJpZ2h0cGFnZSB3YXMgaW5pdGlhbGl6ZWQgYnkgX2J0X2dldGJ1ZiAqLwpAQCAtMTg4 NSw3ICsxODg4LDcgQEAgX2J0X3NwbGl0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGl0 dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwKIAkgKi8KIAlpZiAoIWlzcmlnaHRt b3N0KQogCXsKLQkJc2J1ZiA9IF9idF9nZXRidWYocmVsLCBvb3BhcXVlLT5idHBvX25leHQs IEJUX1dSSVRFKTsKKwkJc2J1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBvb3BhcXVl LT5idHBvX25leHQsIEJUX1dSSVRFKTsKIAkJc3BhZ2UgPSBCdWZmZXJHZXRQYWdlKHNidWYp OwogCQlzb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHNwYWdlKTsKIAkJaWYgKHNvcGFxdWUt PmJ0cG9fcHJldiAhPSBvcmlncGFnZW51bWJlcikKQEAgLTIwOTIsNiArMjA5NSw3IEBAIF9i dF9zcGxpdChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1 ZiwgQnVmZmVyIGNidWYsCiAgKi8KIHN0YXRpYyB2b2lkCiBfYnRfaW5zZXJ0X3BhcmVudChS ZWxhdGlvbiByZWwsCisJCQkJICBSZWxhdGlvbiBoZWFwcmVsLAogCQkJCSAgQnVmZmVyIGJ1 ZiwKIAkJCQkgIEJ1ZmZlciByYnVmLAogCQkJCSAgQlRTdGFjayBzdGFjaywKQEAgLTIxMTgs NyArMjEyMiw3IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJQXNzZXJ0 KHN0YWNrID09IE5VTEwpOwogCQlBc3NlcnQoaXNvbmx5KTsKIAkJLyogY3JlYXRlIGEgbmV3 IHJvb3Qgbm9kZSBhbmQgdXBkYXRlIHRoZSBtZXRhcGFnZSAqLwotCQlyb290YnVmID0gX2J0 X25ld3Jvb3QocmVsLCBidWYsIHJidWYpOworCQlyb290YnVmID0gX2J0X25ld3Jvb3QocmVs LCBoZWFwcmVsLCBidWYsIHJidWYpOwogCQkvKiByZWxlYXNlIHRoZSBzcGxpdCBidWZmZXJz ICovCiAJCV9idF9yZWxidWYocmVsLCByb290YnVmKTsKIAkJX2J0X3JlbGJ1ZihyZWwsIHJi dWYpOwpAQCAtMjE1Nyw3ICsyMTYxLDggQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24g cmVsLAogCQkJCQkgQmxvY2tOdW1iZXJJc1ZhbGlkKFJlbGF0aW9uR2V0VGFyZ2V0QmxvY2so cmVsKSkpKTsKIAogCQkJLyogRmluZCB0aGUgbGVmdG1vc3QgcGFnZSBhdCB0aGUgbmV4dCBs ZXZlbCB1cCAqLwotCQkJcGJ1ZiA9IF9idF9nZXRfZW5kcG9pbnQocmVsLCBvcGFxdWUtPmJ0 cG9fbGV2ZWwgKyAxLCBmYWxzZSwgTlVMTCk7CisJCQlwYnVmID0gX2J0X2dldF9lbmRwb2lu dChyZWwsIGhlYXByZWwsIG9wYXF1ZS0+YnRwb19sZXZlbCArIDEsIGZhbHNlLAorCQkJCQkJ CQkJTlVMTCk7CiAJCQkvKiBTZXQgdXAgYSBwaG9ueSBzdGFjayBlbnRyeSBwb2ludGluZyB0 aGVyZSAqLwogCQkJc3RhY2sgPSAmZmFrZXN0YWNrOwogCQkJc3RhY2stPmJ0c19ibGtubyA9 IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHBidWYpOwpAQCAtMjE4Myw3ICsyMTg4LDcgQEAgX2J0 X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkgKiBuZXcgZG93bmxpbmsgd2lsbCBi ZSBpbnNlcnRlZCBhdCB0aGUgY29ycmVjdCBvZmZzZXQuIEV2ZW4gYnVmJ3MKIAkJICogcGFy ZW50IG1heSBoYXZlIGNoYW5nZWQuCiAJCSAqLwotCQlwYnVmID0gX2J0X2dldHN0YWNrYnVm KHJlbCwgc3RhY2ssIGJrbnVtKTsKKwkJcGJ1ZiA9IF9idF9nZXRzdGFja2J1ZihyZWwsIGhl YXByZWwsIHN0YWNrLCBia251bSk7CiAKIAkJLyoKIAkJICogVW5sb2NrIHRoZSByaWdodCBj aGlsZC4gIFRoZSBsZWZ0IGNoaWxkIHdpbGwgYmUgdW5sb2NrZWQgaW4KQEAgLTIyMDcsNyAr MjIxMiw3IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBia251bSwgcmJrbnVtKSkpOwogCiAJCS8q IFJlY3Vyc2l2ZWx5IGluc2VydCBpbnRvIHRoZSBwYXJlbnQgKi8KLQkJX2J0X2luc2VydG9u cGcocmVsLCBOVUxMLCBwYnVmLCBidWYsIHN0YWNrLT5idHNfcGFyZW50LAorCQlfYnRfaW5z ZXJ0b25wZyhyZWwsIGhlYXByZWwsIE5VTEwsIHBidWYsIGJ1Ziwgc3RhY2stPmJ0c19wYXJl bnQsCiAJCQkJCSAgIG5ld19pdGVtLCBNQVhBTElHTihJbmRleFR1cGxlU2l6ZShuZXdfaXRl bSkpLAogCQkJCQkgICBzdGFjay0+YnRzX29mZnNldCArIDEsIDAsIGlzb25seSk7CiAKQEAg LTIyMjcsNyArMjIzMiw3IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKICAq IGFuZCB1bnBpbm5lZC4KICAqLwogdm9pZAotX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKQorX2J0X2ZpbmlzaF9zcGxpdChSZWxh dGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNr KQogewogCVBhZ2UJCWxwYWdlID0gQnVmZmVyR2V0UGFnZShsYnVmKTsKIAlCVFBhZ2VPcGFx dWUgbHBhZ2VvcCA9IEJUUGFnZUdldE9wYXF1ZShscGFnZSk7CkBAIC0yMjQwLDcgKzIyNDUs NyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3Rh Y2sgc3RhY2spCiAJQXNzZXJ0KFBfSU5DT01QTEVURV9TUExJVChscGFnZW9wKSk7CiAKIAkv KiBMb2NrIHJpZ2h0IHNpYmxpbmcsIHRoZSBvbmUgbWlzc2luZyB0aGUgZG93bmxpbmsgKi8K LQlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxwYWdlb3AtPmJ0cG9fbmV4dCwgQlRfV1JJVEUp OworCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgbHBhZ2VvcC0+YnRwb19uZXh0 LCBCVF9XUklURSk7CiAJcnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCXJwYWdlb3Ag PSBCVFBhZ2VHZXRPcGFxdWUocnBhZ2UpOwogCkBAIC0yMjUyLDcgKzIyNTcsNyBAQCBfYnRf ZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2sp CiAJCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIAogCQkvKiBhY3F1aXJlIGxvY2sgb24gdGhl IG1ldGFwYWdlICovCi0JCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBB R0UsIEJUX1dSSVRFKTsKKwkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBC VFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOwogCQltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1l dGFidWYpOwogCQltZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIApAQCAtMjI2OSw3 ICsyMjc0LDcgQEAgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVm LCBCVFN0YWNrIHN0YWNrKQogCWVsb2coREVCVUcxLCAiZmluaXNoaW5nIGluY29tcGxldGUg c3BsaXQgb2YgJXUvJXUiLAogCQkgQnVmZmVyR2V0QmxvY2tOdW1iZXIobGJ1ZiksIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKHJidWYpKTsKIAotCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgbGJ1 ZiwgcmJ1Ziwgc3RhY2ssIHdhc3Jvb3QsIHdhc29ubHkpOworCV9idF9pbnNlcnRfcGFyZW50 KHJlbCwgaGVhcHJlbCwgbGJ1ZiwgcmJ1Ziwgc3RhY2ssIHdhc3Jvb3QsIHdhc29ubHkpOwog fQogCiAvKgpAQCAtMjMwNCw3ICsyMzA5LDcgQEAgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlv biByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKQogICoJCW9mZnNldCBudW1iZXIg YnRzX29mZnNldCArIDEuCiAgKi8KIEJ1ZmZlcgotX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9u IHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQpCitfYnRfZ2V0c3RhY2ti dWYoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9j a051bWJlciBjaGlsZCkKIHsKIAlCbG9ja051bWJlciBibGtubzsKIAlPZmZzZXROdW1iZXIg c3RhcnQ7CkBAIC0yMzE4LDEzICsyMzIzLDEzIEBAIF9idF9nZXRzdGFja2J1ZihSZWxhdGlv biByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVtYmVyIGNoaWxkKQogCQlQYWdlCQlwYWdl OwogCQlCVFBhZ2VPcGFxdWUgb3BhcXVlOwogCi0JCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBi bGtubywgQlRfV1JJVEUpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgYmxr bm8sIEJUX1dSSVRFKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJb3BhcXVl ID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwogCiAJCWlmIChQX0lOQ09NUExFVEVfU1BMSVQo b3BhcXVlKSkKIAkJewotCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1Ziwgc3RhY2stPmJ0 c19wYXJlbnQpOworCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGhlYXByZWwsIGJ1Ziwgc3Rh Y2stPmJ0c19wYXJlbnQpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMjQyOCw3ICsyNDMz LDcgQEAgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxv Y2tOdW1iZXIgY2hpbGQpCiAgKgkJbGJ1ZiwgcmJ1ZiAmIHJvb3RidWYuCiAgKi8KIHN0YXRp YyBCdWZmZXIKLV9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZl ciByYnVmKQorX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCiB7CiAJQnVmZmVyCQlyb290YnVmOwogCVBhZ2UJ CWxwYWdlLApAQCAtMjQ1NCwxMiArMjQ1OSwxMiBAQCBfYnRfbmV3cm9vdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZikKIAlsb3BhcXVlID0gQlRQYWdlR2V0T3Bh cXVlKGxwYWdlKTsKIAogCS8qIGdldCBhIG5ldyByb290IHBhZ2UgKi8KLQlyb290YnVmID0g X2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9XUklURSk7CisJcm9vdGJ1ZiA9IF9idF9nZXRi dWYocmVsLCBoZWFwcmVsLCBQX05FVywgQlRfV1JJVEUpOwogCXJvb3RwYWdlID0gQnVmZmVy R2V0UGFnZShyb290YnVmKTsKIAlyb290YmxrbnVtID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIo cm9vdGJ1Zik7CiAKIAkvKiBhY3F1aXJlIGxvY2sgb24gdGhlIG1ldGFwYWdlICovCi0JbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCW1l dGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1dS SVRFKTsKIAltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1ldGFidWYpOwogCW1ldGFkID0gQlRQ YWdlR2V0TWV0YShtZXRhcGcpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5j CmluZGV4IDNmZWVlMjhkMTkuLjE1MWFkMzdhNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0cGFnZS5jCkBAIC0zOCwyNSArMzgsMjQgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFw bWdyLmgiCiAKIHN0YXRpYyBCVE1ldGFQYWdlRGF0YSAqX2J0X2dldG1ldGEoUmVsYXRpb24g cmVsLCBCdWZmZXIgbWV0YWJ1Zik7Ci1zdGF0aWMgdm9pZCBfYnRfbG9nX3JldXNlX3BhZ2Uo UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKK3N0YXRpYyB2b2lkIF9idF9sb2df cmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVy IGJsa25vLAogCQkJCQkJCSAgIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpOwotc3RhdGlj IHZvaWQgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCitz dGF0aWMgdm9pZCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBu ZGVsZXRhYmxlLAogCQkJCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51 cGRhdGFibGUpOwogc3RhdGljIGNoYXIgKl9idF9kZWxpdGVtc191cGRhdGUoQlRWYWN1dW1Q b3N0aW5nICp1cGRhdGFibGUsIGludCBudXBkYXRhYmxlLAogCQkJCQkJCQkgT2Zmc2V0TnVt YmVyICp1cGRhdGVkb2Zmc2V0cywKIAkJCQkJCQkJIFNpemUgKnVwZGF0ZWRidWZsZW4sIGJv b2wgbmVlZHN3YWwpOwotc3RhdGljIGJvb2wgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxh dGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLAotCQkJCQkJCQkgICBCVFN0YWNrIHN0YWNrKTsK K3N0YXRpYyBib29sIF9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsLAorCQkJCQkJCQkgICBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFj ayk7CiBzdGF0aWMgYm9vbCBfYnRfdW5saW5rX2hhbGZkZWFkX3BhZ2UoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwKIAkJCQkJCQkJCSBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJ CQkJCQkJCQkgYm9vbCAqcmlnaHRzaWJfZW1wdHksCiAJCQkJCQkJCQkgQlRWYWNTdGF0ZSAq dnN0YXRlKTsKLXN0YXRpYyBib29sIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgY2hpbGQsCi0JCQkJCQkJCQlCVFN0YWNrIHN0YWNrLAotCQkJ CQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50LAotCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpw b2Zmc2V0LAorc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJCQkJQmxvY2tOdW1iZXIgY2hpbGQsIEJU U3RhY2sgc3RhY2ssCisJCQkJCQkJCQlCdWZmZXIgKnN1YnRyZWVwYXJlbnQsIE9mZnNldE51 bWJlciAqcG9mZnNldCwKIAkJCQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCiAJCQkJ CQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50cmlnaHRzaWIpOwogc3RhdGljIHZvaWQgX2J0 X3BlbmRpbmdmc21fYWRkKEJUVmFjU3RhdGUgKnZzdGF0ZSwgQmxvY2tOdW1iZXIgdGFyZ2V0 LApAQCAtMTc4LDcgKzE3Nyw3IEBAIF9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVy IG1ldGFidWYpCiAgKiBpbmRleCB0dXBsZXMgbmVlZGVkIHRvIGJlIGRlbGV0ZWQuCiAgKi8K IGJvb2wKLV9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCitfYnRfdmFj dXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewog CUJ1ZmZlcgkJbWV0YWJ1ZjsKIAlQYWdlCQltZXRhcGc7CkBAIC0xOTEsNyArMTkwLDcgQEAg X2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJlbGF0aW9uIHJlbCkKIAkgKgogCSAqIE5vdGUg dGhhdCB3ZSBkZWxpYmVyYXRlbHkgYXZvaWQgdXNpbmcgY2FjaGVkIHZlcnNpb24gb2YgbWV0 YXBhZ2UgaGVyZS4KIAkgKi8KLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01F VEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWws IEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAltZXRhcGcgPSBCdWZmZXJHZXRQYWdlKG1l dGFidWYpOwogCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCWJ0bV92ZXJzaW9u ID0gbWV0YWQtPmJ0bV92ZXJzaW9uOwpAQCAtMjMxLDcgKzIzMCw3IEBAIF9idF92YWN1dW1f bmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAgKiBmaW5hbGl6ZWQuCiAgKi8KIHZvaWQK LV9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2Rl bHBhZ2VzKQorX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBo ZWFwcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiB7CiAJQnVmZmVyCQltZXRhYnVm OwogCVBhZ2UJCW1ldGFwZzsKQEAgLTI1NSw3ICsyNTQsNyBAQCBfYnRfc2V0X2NsZWFudXBf aW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKIAkgKiBubyBs b25nZXIgdXNlZCBhcyBvZiBQb3N0Z3JlU1FMIDE0LiAgV2Ugc2V0IGl0IHRvIC0xLjAgb24g cmV3cml0ZSwganVzdAogCSAqIHRvIGJlIGNvbnNpc3RlbnQuCiAJICovCi0JbWV0YWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJ bWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAltZXRhZCA9IEJUUGFnZUdldE1l dGEobWV0YXBnKTsKIApAQCAtMzQwLDcgKzMzOSw3IEBAIF9idF9zZXRfY2xlYW51cF9pbmZv KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2VzKQogICoJCVRoZSBtZXRh ZGF0YSBwYWdlIGlzIG5vdCBsb2NrZWQgb3IgcGlubmVkIG9uIGV4aXQuCiAgKi8KIEJ1ZmZl cgotX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQorX2J0X2dldHJvb3Qo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBpbnQgYWNjZXNzKQogewogCUJ1ZmZl cgkJbWV0YWJ1ZjsKIAlCdWZmZXIJCXJvb3RidWY7CkBAIC0zNzAsNyArMzY5LDcgQEAgX2J0 X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogCQlBc3NlcnQocm9vdGJsa25v ICE9IFBfTk9ORSk7CiAJCXJvb3RsZXZlbCA9IG1ldGFkLT5idG1fZmFzdGxldmVsOwogCi0J CXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcm9vdGJsa25vLCBCVF9SRUFEKTsKKwkJcm9v dGJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCByb290Ymxrbm8sIEJUX1JFQUQpOwog CQlyb290cGFnZSA9IEJ1ZmZlckdldFBhZ2Uocm9vdGJ1Zik7CiAJCXJvb3RvcGFxdWUgPSBC VFBhZ2VHZXRPcGFxdWUocm9vdHBhZ2UpOwogCkBAIC0zOTYsNyArMzk1LDcgQEAgX2J0X2dl dHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzKQogCQlyZWwtPnJkX2FtY2FjaGUgPSBO VUxMOwogCX0KIAotCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0Us IEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgaGVhcHJlbCwgQlRSRUVf TUVUQVBBR0UsIEJUX1JFQUQpOwogCW1ldGFkID0gX2J0X2dldG1ldGEocmVsLCBtZXRhYnVm KTsKIAogCS8qIGlmIG5vIHJvb3QgcGFnZSBpbml0aWFsaXplZCB5ZXQsIGRvIGl0ICovCkBA IC00MjksNyArNDI4LDcgQEAgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNz KQogCQkJICogdG8gb3B0aW1pemUgdGhpcyBjYXNlLikKIAkJCSAqLwogCQkJX2J0X3JlbGJ1 ZihyZWwsIG1ldGFidWYpOwotCQkJcmV0dXJuIF9idF9nZXRyb290KHJlbCwgYWNjZXNzKTsK KwkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGhlYXByZWwsIGFjY2Vzcyk7CiAJCX0KIAog CQkvKgpAQCAtNDM3LDcgKzQzNiw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50 IGFjY2VzcykKIAkJICogdGhlIG5ldyByb290IHBhZ2UuICBTaW5jZSB0aGlzIGlzIHRoZSBm aXJzdCBwYWdlIGluIHRoZSB0cmVlLCBpdCdzCiAJCSAqIGEgbGVhZiBhcyB3ZWxsIGFzIHRo ZSByb290LgogCQkgKi8KLQkJcm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRf V1JJVEUpOworCQlyb290YnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIFBfTkVXLCBC VF9XUklURSk7CiAJCXJvb3RibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHJvb3RidWYp OwogCQlyb290cGFnZSA9IEJ1ZmZlckdldFBhZ2Uocm9vdGJ1Zik7CiAJCXJvb3RvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocm9vdHBhZ2UpOwpAQCAtNTc0LDcgKzU3Myw3IEBAIF9idF9n ZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKICAqIG1vdmluZyB0byB0aGUgcm9v dCAtLS0gdGhhdCdkIGRlYWRsb2NrIGFnYWluc3QgYW55IGNvbmN1cnJlbnQgcm9vdCBzcGxp dC4pCiAgKi8KIEJ1ZmZlcgotX2J0X2dldHRydWVyb290KFJlbGF0aW9uIHJlbCkKK19idF9n ZXR0cnVlcm9vdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQnVmZmVy CQltZXRhYnVmOwogCVBhZ2UJCW1ldGFwZzsKQEAgLTU5Niw3ICs1OTUsNyBAQCBfYnRfZ2V0 dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQogCQlwZnJlZShyZWwtPnJkX2FtY2FjaGUpOwogCXJl bC0+cmRfYW1jYWNoZSA9IE5VTEw7CiAKLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJU UkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhl YXByZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKIAltZXRhcGcgPSBCdWZmZXJHZXRQ YWdlKG1ldGFidWYpOwogCW1ldGFvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUobWV0YXBnKTsK IAltZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKQEAgLTY2OSw3ICs2NjgsNyBAQCBf YnRfZ2V0dHJ1ZXJvb3QoUmVsYXRpb24gcmVsKQogICoJCWFib3V0IHVwZGF0aW5nIHByZXZp b3VzbHkgY2FjaGVkIGRhdGEuCiAgKi8KIGludAotX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRp b24gcmVsKQorX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFw cmVsKQogewogCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIApAQCAtNjc3LDcgKzY3Niw3IEBA IF9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCkKIAl7CiAJCUJ1ZmZlcgkJbWV0YWJ1 ZjsKIAotCQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9S RUFEKTsKKwkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRB UEFHRSwgQlRfUkVBRCk7CiAJCW1ldGFkID0gX2J0X2dldG1ldGEocmVsLCBtZXRhYnVmKTsK IAogCQkvKgpAQCAtNzMzLDcgKzczMiw3IEBAIF9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9u IHJlbCkKICAqCQlwZ191cGdyYWRlJ2QgZnJvbSBQb3N0Z3JlcyAxMi4KICAqLwogdm9pZAot X2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29s ICphbGxlcXVhbGltYWdlKQorX2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLCBib29sICphbGxlcXVhbGltYWdlKQog ewogCUJUTWV0YVBhZ2VEYXRhICptZXRhZDsKIApAQCAtNzQxLDcgKzc0MCw3IEBAIF9idF9t ZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxs ZXF1YWxpbWFnZSkKIAl7CiAJCUJ1ZmZlcgkJbWV0YWJ1ZjsKIAotCQltZXRhYnVmID0gX2J0 X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsKKwkJbWV0YWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CiAJCW1l dGFkID0gX2J0X2dldG1ldGEocmVsLCBtZXRhYnVmKTsKIAogCQkvKgpAQCAtODI1LDcgKzgy NCw4IEBAIF9idF9jaGVja3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKQogICogTG9n IHRoZSByZXVzZSBvZiBhIHBhZ2UgZnJvbSB0aGUgRlNNLgogICovCiBzdGF0aWMgdm9pZAot X2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCitfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051bWJlciBibGtubywKKwkJCQkgICBGdWxs VHJhbnNhY3Rpb25JZCBzYWZleGlkKQogewogCXhsX2J0cmVlX3JldXNlX3BhZ2UgeGxyZWNf cmV1c2U7CiAKQEAgLTgzNiw2ICs4MzYsNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkK IAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5pc0NhdGFsb2dSZWwg PSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhs cmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxv Y2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNh ZmV4aWQ7CkBAIC04NjgsNyArODY5LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAg KgkJYXMgX2J0X2xvY2tidWYoKS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0YnVmKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MpCitfYnRfZ2V0YnVmKFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nl c3MpCiB7CiAJQnVmZmVyCQlidWY7CiAKQEAgLTk0Myw3ICs5NDQsNyBAQCBfYnRfZ2V0YnVm KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MpCiAJCQkJCSAq IHRoYW4gc2FmZXhpZCB2YWx1ZQogCQkJCQkgKi8KIAkJCQkJaWYgKFhMb2dTdGFuZGJ5SW5m b0FjdGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKLQkJCQkJCV9idF9sb2dfcmV1 c2VfcGFnZShyZWwsIGJsa25vLAorCQkJCQkJX2J0X2xvZ19yZXVzZV9wYWdlKHJlbCwgaGVh cHJlbCwgYmxrbm8sCiAJCQkJCQkJCQkJICAgQlRQYWdlR2V0RGVsZXRlWGlkKHBhZ2UpKTsK IAogCQkJCQkvKiBPa2F5IHRvIHVzZSBwYWdlLiAgUmUtaW5pdGlhbGl6ZSBhbmQgcmV0dXJu IGl0LiAqLwpAQCAtMTI5Myw3ICsxMjk0LDcgQEAgX2J0X2RlbGl0ZW1zX3ZhY3V1bShSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsCiAgKiBjbGVhciBwYWdlJ3MgVkFDVVVNIGN5Y2xlIElE LgogICovCiBzdGF0aWMgdm9pZAotX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCitfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENv bmZsaWN0SG9yaXpvbiwKIAkJCQkJT2Zmc2V0TnVtYmVyICpkZWxldGFibGUsIGludCBuZGVs ZXRhYmxlLAogCQkJCQlCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50IG51cGRhdGFi bGUpCkBAIC0xMzU4LDYgKzEzNTksNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKIAkJWExvZ1JlY1B0cglyZWNwdHI7CiAJCXhsX2J0cmVlX2Rl bGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRlLmlzQ2F0YWxvZ1JlbCA9IFJl bGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJCXhscmVj X2RlbGV0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uOwogCQl4bHJlY19kZWxldGUubmRlbGV0ZWQgPSBuZGVsZXRhYmxlOwogCQl4bHJlY19k ZWxldGUubnVwZGF0ZWQgPSBudXBkYXRhYmxlOwpAQCAtMTY4NCw4ICsxNjg2LDggQEAgX2J0 X2RlbGl0ZW1zX2RlbGV0ZV9jaGVjayhSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsIFJlbGF0 aW9uIGhlYXBSZWwsCiAJfQogCiAJLyogUGh5c2ljYWxseSBkZWxldGUgdHVwbGVzIChvciBU SURzKSB1c2luZyBkZWxldGFibGUgKG9yIHVwZGF0YWJsZSkgKi8KLQlfYnRfZGVsaXRlbXNf ZGVsZXRlKHJlbCwgYnVmLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCWRlbGV0 YWJsZSwgbmRlbGV0YWJsZSwgdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsKKwlfYnRfZGVsaXRl bXNfZGVsZXRlKHJlbCwgaGVhcFJlbCwgYnVmLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg ZGVsZXRhYmxlLAorCQkJCQkJbmRlbGV0YWJsZSwgdXBkYXRhYmxlLCBudXBkYXRhYmxlKTsK IAogCS8qIGJlIHRpZHkgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51cGRhdGFibGU7IGkr KykKQEAgLTE3MDYsNyArMTcwOCw4IEBAIF9idF9kZWxpdGVtc19kZWxldGVfY2hlY2soUmVs YXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlvbiBoZWFwUmVsLAogICogc2FtZSBsZXZl bCBtdXN0IGFsd2F5cyBiZSBsb2NrZWQgbGVmdCB0byByaWdodCB0byBhdm9pZCBkZWFkbG9j a3MuCiAgKi8KIHN0YXRpYyBib29sCi1fYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCitfYnRfbGVm dHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCbG9ja051 bWJlciBsZWZ0c2liLAorCQkJCQkgIEJsb2NrTnVtYmVyIHRhcmdldCkKIHsKIAlCdWZmZXIJ CWJ1ZjsKIAlQYWdlCQlwYWdlOwpAQCAtMTcxNyw3ICsxNzIwLDcgQEAgX2J0X2xlZnRzaWJf c3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1i ZXIgdGFyZ2V0KQogCWlmIChsZWZ0c2liID09IFBfTk9ORSkKIAkJcmV0dXJuIGZhbHNlOwog Ci0JYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1JFQUQpOworCWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBsZWZ0c2liLCBCVF9SRUFEKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWYpOwogCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApA QCAtMTc2Myw3ICsxNzY2LDcgQEAgX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQogICogdG8tYmUt ZGVsZXRlZCBzdWJ0cmVlLikKICAqLwogc3RhdGljIGJvb2wKLV9idF9yaWdodHNpYl9oYWxm ZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIpCitfYnRf cmlnaHRzaWJfaGFsZmRlYWRmbGFnKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwg QmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBh Z2U7CkBAIC0xNzcyLDcgKzE3NzUsNyBAQCBfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVhZnJpZ2h0c2liKQogCiAJQXNzZXJ0KGxlYWZy aWdodHNpYiAhPSBQX05PTkUpOwogCi0JYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlYWZyaWdo dHNpYiwgQlRfUkVBRCk7CisJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWwsIGxlYWZy aWdodHNpYiwgQlRfUkVBRCk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlvcGFx dWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKQEAgLTE5NjEsMTcgKzE5NjQsMTggQEAg X2J0X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAq dnN0YXRlKQogCQkJCSAqIG1hcmtlZCB3aXRoIElOQ09NUExFVEVfU1BMSVQgZmxhZyBiZWZv cmUgcHJvY2VlZGluZwogCQkJCSAqLwogCQkJCUFzc2VydChsZWFmYmxrbm8gPT0gc2NhbmJs a25vKTsKLQkJCQlpZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgbGVmdHNpYiwgbGVh ZmJsa25vKSkKKwkJCQlpZiAoX2J0X2xlZnRzaWJfc3BsaXRmbGFnKHJlbCwgdnN0YXRlLT5p bmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8pKQogCQkJCXsKIAkJCQkJUmVsZWFz ZUJ1ZmZlcihsZWFmYnVmKTsKIAkJCQkJcmV0dXJuOwogCQkJCX0KIAogCQkJCS8qIHdlIG5l ZWQgYW4gaW5zZXJ0aW9uIHNjYW4ga2V5IGZvciB0aGUgc2VhcmNoLCBzbyBidWlsZCBvbmUg Ki8KLQkJCQlpdHVwX2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCB0YXJnZXRrZXkpOworCQkJ CWl0dXBfa2V5ID0gX2J0X21rc2NhbmtleShyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwg dGFyZ2V0a2V5KTsKIAkJCQkvKiBmaW5kIHRoZSBsZWZ0bW9zdCBsZWFmIHBhZ2Ugd2l0aCBt YXRjaGluZyBwaXZvdC9oaWdoIGtleSAqLwogCQkJCWl0dXBfa2V5LT5waXZvdHNlYXJjaCA9 IHRydWU7Ci0JCQkJc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgaXR1cF9rZXksICZzbGVhZmJ1 ZiwgQlRfUkVBRCwgTlVMTCk7CisJCQkJc3RhY2sgPSBfYnRfc2VhcmNoKHJlbCwgdnN0YXRl LT5pbmZvLT5oZWFwcmVsLCBpdHVwX2tleSwKKwkJCQkJCQkJICAgJnNsZWFmYnVmLCBCVF9S RUFELCBOVUxMKTsKIAkJCQkvKiB3b24ndCBuZWVkIGEgc2Vjb25kIGxvY2sgb3IgcGluIG9u IGxlYWZidWYgKi8KIAkJCQlfYnRfcmVsYnVmKHJlbCwgc2xlYWZidWYpOwogCkBAIC0yMDAy LDcgKzIwMDYsNyBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCQkgKiBsZWFmYnVmIHBhZ2UgaGFsZi1kZWFkLgog CQkJICovCiAJCQlBc3NlcnQoUF9JU0xFQUYob3BhcXVlKSAmJiAhUF9JR05PUkUob3BhcXVl KSk7Ci0JCQlpZiAoIV9idF9tYXJrX3BhZ2VfaGFsZmRlYWQocmVsLCBsZWFmYnVmLCBzdGFj aykpCisJCQlpZiAoIV9idF9tYXJrX3BhZ2VfaGFsZmRlYWQocmVsLCB2c3RhdGUtPmluZm8t PmhlYXByZWwsIGxlYWZidWYsIHN0YWNrKSkKIAkJCXsKIAkJCQlfYnRfcmVsYnVmKHJlbCwg bGVhZmJ1Zik7CiAJCQkJcmV0dXJuOwpAQCAtMjA2NSw3ICsyMDY5LDcgQEAgX2J0X3BhZ2Vk ZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0YXRlKQog CQlpZiAoIXJpZ2h0c2liX2VtcHR5KQogCQkJYnJlYWs7CiAKLQkJbGVhZmJ1ZiA9IF9idF9n ZXRidWYocmVsLCByaWdodHNpYiwgQlRfV1JJVEUpOworCQlsZWFmYnVmID0gX2J0X2dldGJ1 ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKIAl9 CiB9CiAKQEAgLTIwODQsNyArMjA4OCw4IEBAIF9idF9wYWdlZGVsKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKICAqIHN1Y2Nlc3NmdWxseS4K ICAqLwogc3RhdGljIGJvb2wKLV9idF9tYXJrX3BhZ2VfaGFsZmRlYWQoUmVsYXRpb24gcmVs LCBCdWZmZXIgbGVhZmJ1ZiwgQlRTdGFjayBzdGFjaykKK19idF9tYXJrX3BhZ2VfaGFsZmRl YWQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGVhZmJ1ZiwKKwkJ CQkJICAgQlRTdGFjayBzdGFjaykKIHsKIAlCbG9ja051bWJlciBsZWFmYmxrbm87CiAJQmxv Y2tOdW1iZXIgbGVhZnJpZ2h0c2liOwpAQCAtMjExOSw3ICsyMTI0LDcgQEAgX2J0X21hcmtf cGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0 YWNrKQogCSAqIGRlbGV0ZSB0aGUgZG93bmxpbmsuICBJdCB3b3VsZCBmYWlsIHRoZSAicmln aHQgc2libGluZyBvZiB0YXJnZXQgcGFnZQogCSAqIGlzIGFsc28gdGhlIG5leHQgY2hpbGQg aW4gcGFyZW50IHBhZ2UiIGNyb3NzLWNoZWNrIGJlbG93LgogCSAqLwotCWlmIChfYnRfcmln aHRzaWJfaGFsZmRlYWRmbGFnKHJlbCwgbGVhZnJpZ2h0c2liKSkKKwlpZiAoX2J0X3JpZ2h0 c2liX2hhbGZkZWFkZmxhZyhyZWwsIGhlYXByZWwsIGxlYWZyaWdodHNpYikpCiAJewogCQll bG9nKERFQlVHMSwgImNvdWxkIG5vdCBkZWxldGUgcGFnZSAldSBiZWNhdXNlIGl0cyByaWdo dCBzaWJsaW5nICV1IGlzIGhhbGYtZGVhZCIsCiAJCQkgbGVhZmJsa25vLCBsZWFmcmlnaHRz aWIpOwpAQCAtMjE0Myw3ICsyMTQ4LDcgQEAgX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxh dGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNrKQogCSAqLwogCXRvcHBh cmVudCA9IGxlYWZibGtubzsKIAl0b3BwYXJlbnRyaWdodHNpYiA9IGxlYWZyaWdodHNpYjsK LQlpZiAoIV9idF9sb2NrX3N1YnRyZWVfcGFyZW50KHJlbCwgbGVhZmJsa25vLCBzdGFjaywK KwlpZiAoIV9idF9sb2NrX3N1YnRyZWVfcGFyZW50KHJlbCwgaGVhcHJlbCwgbGVhZmJsa25v LCBzdGFjaywKIAkJCQkJCQkJICZzdWJ0cmVlcGFyZW50LCAmcG9mZnNldCwKIAkJCQkJCQkJ ICZ0b3BwYXJlbnQsICZ0b3BwYXJlbnRyaWdodHNpYikpCiAJCXJldHVybiBmYWxzZTsKQEAg LTIzNjMsNyArMjM2OCw3IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCUFzc2VydCh0 YXJnZXQgIT0gbGVhZmJsa25vKTsKIAogCQkvKiBGZXRjaCB0aGUgYmxvY2sgbnVtYmVyIG9m IHRoZSB0YXJnZXQncyBsZWZ0IHNpYmxpbmcgKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihyZWws IHRhcmdldCwgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCB2c3RhdGUtPmlu Zm8tPmhlYXByZWwsIHRhcmdldCwgQlRfUkVBRCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1Zik7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJbGVmdHNpYiA9 IG9wYXF1ZS0+YnRwb19wcmV2OwpAQCAtMjM5MCw3ICsyMzk1LDcgQEAgX2J0X3VubGlua19o YWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVy IHNjYW5ibGtubywKIAkJX2J0X2xvY2tidWYocmVsLCBsZWFmYnVmLCBCVF9XUklURSk7CiAJ aWYgKGxlZnRzaWIgIT0gUF9OT05FKQogCXsKLQkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCBs ZWZ0c2liLCBCVF9XUklURSk7CisJCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5p bmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQ YWdlKGxidWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCXdoaWxl IChQX0lTREVMRVRFRChvcGFxdWUpIHx8IG9wYXF1ZS0+YnRwb19uZXh0ICE9IHRhcmdldCkK QEAgLTI0NDAsNyArMjQ0NSw3IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOwogCiAJCQkvKiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0J CQlsYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKKwkJCWxidWYg PSBfYnRfZ2V0YnVmKHJlbCwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsLCBsZWZ0c2liLCBCVF9X UklURSk7CiAJCQlwYWdlID0gQnVmZmVyR2V0UGFnZShsYnVmKTsKIAkJCW9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJfQpAQCAtMjUwNCw3ICsyNTA5LDcgQEAgX2J0X3Vu bGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2Nr TnVtYmVyIHNjYW5ibGtubywKIAkgKiBBbmQgbmV4dCB3cml0ZS1sb2NrIHRoZSAoY3VycmVu dCkgcmlnaHQgc2libGluZy4KIAkgKi8KIAlyaWdodHNpYiA9IG9wYXF1ZS0+YnRwb19uZXh0 OwotCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwlyYnVm ID0gX2J0X2dldGJ1ZihyZWwsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCwgcmlnaHRzaWIsIEJU X1dSSVRFKTsKIAlwYWdlID0gQnVmZmVyR2V0UGFnZShyYnVmKTsKIAlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CiAJaWYgKG9wYXF1ZS0+YnRwb19wcmV2ICE9IHRhcmdldCkK QEAgLTI1MzMsNyArMjUzOCw4IEBAIF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlv biByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCWlmIChQ X1JJR0hUTU9TVChvcGFxdWUpKQogCQl7CiAJCQkvKiByaWdodHNpYiB3aWxsIGJlIHRoZSBv bmx5IG9uZSBsZWZ0IG9uIHRoZSBsZXZlbCAqLwotCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9idF9nZXRi dWYocmVsLCB2c3RhdGUtPmluZm8tPmhlYXByZWwsIEJUUkVFX01FVEFQQUdFLAorCQkJCQkJ CQkgQlRfV1JJVEUpOwogCQkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJ CW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0yNzczLDkgKzI3NzksMTAg QEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKICAqIHBhcmVudCBibG9jayBpbiB0aGUgbGVh ZmJ1ZiBwYWdlIHVzaW5nIEJUcmVlVHVwbGVTZXRUb3BQYXJlbnQoKSkuCiAgKi8KIHN0YXRp YyBib29sCi1fYnRfbG9ja19zdWJ0cmVlX3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNrLAotCQkJCQkJQnVmZmVyICpzdWJ0cmVlcGFyZW50 LCBPZmZzZXROdW1iZXIgKnBvZmZzZXQsCi0JCQkJCQlCbG9ja051bWJlciAqdG9wcGFyZW50 LCBCbG9ja051bWJlciAqdG9wcGFyZW50cmlnaHRzaWIpCitfYnRfbG9ja19zdWJ0cmVlX3Bh cmVudChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJsb2NrTnVtYmVyIGNoaWxk LAorCQkJCQkJQlRTdGFjayBzdGFjaywgQnVmZmVyICpzdWJ0cmVlcGFyZW50LAorCQkJCQkJ T2Zmc2V0TnVtYmVyICpwb2Zmc2V0LCBCbG9ja051bWJlciAqdG9wcGFyZW50LAorCQkJCQkJ QmxvY2tOdW1iZXIgKnRvcHBhcmVudHJpZ2h0c2liKQogewogCUJsb2NrTnVtYmVyIHBhcmVu dCwKIAkJCQlsZWZ0c2licGFyZW50OwpAQCAtMjc4OSw3ICsyNzk2LDcgQEAgX2J0X2xvY2tf c3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBjaGlsZCwgQlRTdGFj ayBzdGFjaywKIAkgKiBMb2NhdGUgdGhlIHBpdm90IHR1cGxlIHdob3NlIGRvd25saW5rIHBv aW50cyB0byAiY2hpbGQiLiAgV3JpdGUgbG9jawogCSAqIHRoZSBwYXJlbnQgcGFnZSBpdHNl bGYuCiAJICovCi0JcGJ1ZiA9IF9idF9nZXRzdGFja2J1ZihyZWwsIHN0YWNrLCBjaGlsZCk7 CisJcGJ1ZiA9IF9idF9nZXRzdGFja2J1ZihyZWwsIGhlYXByZWwsIHN0YWNrLCBjaGlsZCk7 CiAJaWYgKHBidWYgPT0gSW52YWxpZEJ1ZmZlcikKIAl7CiAJCS8qCkBAIC0yODg5LDExICsy ODk2LDExIEBAIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCiAJICoKIAkgKiBOb3RlOiBXZSBkZWxpYmVy YXRlbHkgYXZvaWQgY29tcGxldGluZyBpbmNvbXBsZXRlIHNwbGl0cyBoZXJlLgogCSAqLwot CWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCBsZWZ0c2licGFyZW50LCBwYXJlbnQp KQorCWlmIChfYnRfbGVmdHNpYl9zcGxpdGZsYWcocmVsLCBoZWFwcmVsLCBsZWZ0c2licGFy ZW50LCBwYXJlbnQpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBSZWN1cnNlIHRvIGV4YW1p bmUgY2hpbGQgcGFnZSdzIGdyYW5kcGFyZW50IHBhZ2UgKi8KLQlyZXR1cm4gX2J0X2xvY2tf c3VidHJlZV9wYXJlbnQocmVsLCBwYXJlbnQsIHN0YWNrLT5idHNfcGFyZW50LAorCXJldHVy biBfYnRfbG9ja19zdWJ0cmVlX3BhcmVudChyZWwsIGhlYXByZWwsIHBhcmVudCwgc3RhY2st PmJ0c19wYXJlbnQsCiAJCQkJCQkJCSAgIHN1YnRyZWVwYXJlbnQsIHBvZmZzZXQsCiAJCQkJ CQkJCSAgIHRvcHBhcmVudCwgdG9wcGFyZW50cmlnaHRzaWIpOwogfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKaW5kZXggMWNjODhkYTAzMi4uNGU4YTg1ZmI1ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCkBAIC04MzQsNyArODM0LDcgQEAgYnR2YWN1 dW1jbGVhbnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0 ICpzdGF0cykKIAlpZiAoc3RhdHMgPT0gTlVMTCkKIAl7CiAJCS8qIENoZWNrIGlmIFZBQ1VV TSBvcGVyYXRpb24gY2FuIGVudGlyZWx5IGF2b2lkIGJ0dmFjdXVtc2NhbigpIGNhbGwgKi8K LQkJaWYgKCFfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoaW5mby0+aW5kZXgpKQorCQlpZiAo IV9idF92YWN1dW1fbmVlZHNfY2xlYW51cChpbmZvLT5pbmRleCwgaW5mby0+aGVhcHJlbCkp CiAJCQlyZXR1cm4gTlVMTDsKIAogCQkvKgpAQCAtODcwLDcgKzg3MCw3IEBAIGJ0dmFjdXVt Y2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMpCiAJICovCiAJQXNzZXJ0KHN0YXRzLT5wYWdlc19kZWxldGVkID49IHN0YXRzLT5w YWdlc19mcmVlKTsKIAludW1fZGVscGFnZXMgPSBzdGF0cy0+cGFnZXNfZGVsZXRlZCAtIHN0 YXRzLT5wYWdlc19mcmVlOwotCV9idF9zZXRfY2xlYW51cF9pbmZvKGluZm8tPmluZGV4LCBu dW1fZGVscGFnZXMpOworCV9idF9zZXRfY2xlYW51cF9pbmZvKGluZm8tPmluZGV4LCBpbmZv LT5oZWFwcmVsLCBudW1fZGVscGFnZXMpOwogCiAJLyoKIAkgKiBJdCdzIHF1aXRlIHBvc3Np YmxlIGZvciB1cyB0byBiZSBmb29sZWQgYnkgY29uY3VycmVudCBwYWdlIHNwbGl0cyBpbnRv CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYwppbmRleCBjNDNjMWEyODMw Li41YzcyOGUzNTNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25i dHNlYXJjaC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c2VhcmNoLmMK QEAgLTQyLDcgKzQyLDggQEAgc3RhdGljIGJvb2wgX2J0X3N0ZXBwYWdlKEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGJvb2wgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcik7CiBzdGF0aWMgYm9vbCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2Fu RGVzYyBzY2FuLCBCbG9ja051bWJlciBibGtubywKIAkJCQkJCQkJICBTY2FuRGlyZWN0aW9u IGRpcik7Ci1zdGF0aWMgQnVmZmVyIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCk7CitzdGF0aWMgQnVmZmVyIF9idF93YWxrX2xl ZnQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJ CVNuYXBzaG90IHNuYXBzaG90KTsKIHN0YXRpYyBib29sIF9idF9lbmRwb2ludChJbmRleFNj YW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBf YnRfaW5pdGlhbGl6ZV9tb3JlX2RhdGEoQlRTY2FuT3BhcXVlIHNvLCBTY2FuRGlyZWN0aW9u IGRpcik7CiAKQEAgLTkzLDE0ICs5NCwxNCBAQCBfYnRfZHJvcF9sb2NrX2FuZF9tYXliZV9w aW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBCVFNjYW5Qb3Mgc3ApCiAgKiBkdXJpbmcgdGhlIHNl YXJjaCB3aWxsIGJlIGZpbmlzaGVkLgogICovCiBCVFN0YWNrCi1fYnRfc2VhcmNoKFJlbGF0 aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAot CQkgICBTbmFwc2hvdCBzbmFwc2hvdCkKK19idF9zZWFyY2goUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBoZWFwcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsCisJCSAgIGlu dCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KQogewogCUJUU3RhY2sJCXN0YWNrX2luID0g TlVMTDsKIAlpbnQJCQlwYWdlX2FjY2VzcyA9IEJUX1JFQUQ7CiAKIAkvKiBHZXQgdGhlIHJv b3QgcGFnZSB0byBzdGFydCB3aXRoICovCi0JKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWwsIGFj Y2Vzcyk7CisJKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWwsIGhlYXByZWwsIGFjY2Vzcyk7CiAK IAkvKiBJZiBpbmRleCBpcyBlbXB0eSBhbmQgYWNjZXNzID0gQlRfUkVBRCwgbm8gcm9vdCBw YWdlIGlzIGNyZWF0ZWQuICovCiAJaWYgKCFCdWZmZXJJc1ZhbGlkKCpidWZQKSkKQEAgLTEy OSw4ICsxMzAsOCBAQCBfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtl eSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAogCQkgKiBhbHNvIHRha2VuIGNhcmUgb2Yg aW4gX2J0X2dldHN0YWNrYnVmKS4gIEJ1dCB0aGlzIGlzIGEgZ29vZAogCQkgKiBvcHBvcnR1 bml0eSB0byBmaW5pc2ggc3BsaXRzIG9mIGludGVybmFsIHBhZ2VzIHRvby4KIAkJICovCi0J CSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIChhY2Nlc3MgPT0gQlRf V1JJVEUpLCBzdGFja19pbiwKLQkJCQkJCQkgIHBhZ2VfYWNjZXNzLCBzbmFwc2hvdCk7CisJ CSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGhlYXByZWwsIGtleSwgKmJ1ZlAsIChhY2Nl c3MgPT0gQlRfV1JJVEUpLAorCQkJCQkJCSAgc3RhY2tfaW4sIHBhZ2VfYWNjZXNzLCBzbmFw c2hvdCk7CiAKIAkJLyogaWYgdGhpcyBpcyBhIGxlYWYgcGFnZSwgd2UncmUgZG9uZSAqLwog CQlwYWdlID0gQnVmZmVyR2V0UGFnZSgqYnVmUCk7CkBAIC0xOTAsNyArMTkxLDcgQEAgX2J0 X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwg aW50IGFjY2VzcywKIAkJICogYnV0IGJlZm9yZSB3ZSBhY3F1aXJlZCBhIHdyaXRlIGxvY2su ICBJZiBpdCBoYXMsIHdlIG1heSBuZWVkIHRvCiAJCSAqIG1vdmUgcmlnaHQgdG8gaXRzIG5l dyBzaWJsaW5nLiAgRG8gdGhhdC4KIAkJICovCi0JCSpidWZQID0gX2J0X21vdmVyaWdodChy ZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNrX2luLCBCVF9XUklURSwKKwkJKmJ1ZlAgPSBf YnRfbW92ZXJpZ2h0KHJlbCwgaGVhcHJlbCwga2V5LCAqYnVmUCwgdHJ1ZSwgc3RhY2tfaW4s IEJUX1dSSVRFLAogCQkJCQkJCSAgc25hcHNob3QpOwogCX0KIApAQCAtMjM0LDYgKzIzNSw3 IEBAIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIg KmJ1ZlAsIGludCBhY2Nlc3MsCiAgKi8KIEJ1ZmZlcgogX2J0X21vdmVyaWdodChSZWxhdGlv biByZWwsCisJCQkgIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkgIEJUU2Nhbkluc2VydCBrZXks CiAJCQkgIEJ1ZmZlciBidWYsCiAJCQkgIGJvb2wgZm9ydXBkYXRlLApAQCAtMjg4LDEyICsy OTAsMTIgQEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQl9CiAKIAkJCWlmIChQ X0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKLQkJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwg YnVmLCBzdGFjayk7CisJCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGhlYXByZWwsIGJ1Ziwg c3RhY2spOwogCQkJZWxzZQogCQkJCV9idF9yZWxidWYocmVsLCBidWYpOwogCiAJCQkvKiBy ZS1hY3F1aXJlIHRoZSBsb2NrIGluIHRoZSByaWdodCBtb2RlLCBhbmQgcmUtY2hlY2sgKi8K LQkJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzKTsKKwkJCWJ1ZiA9IF9i dF9nZXRidWYocmVsLCBoZWFwcmVsLCBibGtubywgYWNjZXNzKTsKIAkJCWNvbnRpbnVlOwog CQl9CiAKQEAgLTg2MCw2ICs4NjIsNyBAQCBib29sCiBfYnRfZmlyc3QoSW5kZXhTY2FuRGVz YyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIHsKIAlSZWxhdGlvbglyZWwgPSBzY2FuLT5p bmRleFJlbGF0aW9uOworCVJlbGF0aW9uIAloZWFwcmVsID0gc2Nhbi0+aGVhcFJlbGF0aW9u OwogCUJUU2Nhbk9wYXF1ZSBzbyA9IChCVFNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsKIAlC dWZmZXIJCWJ1ZjsKIAlCVFN0YWNrCQlzdGFjazsKQEAgLTEzNTIsNyArMTM1NSw3IEBAIF9i dF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCX0KIAog CS8qIEluaXRpYWxpemUgcmVtYWluaW5nIGluc2VydGlvbiBzY2FuIGtleSBmaWVsZHMgKi8K LQlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tleS5h bGxlcXVhbGltYWdlKTsKKwlfYnRfbWV0YXZlcnNpb24ocmVsLCBoZWFwcmVsLCAmaW5za2V5 LmhlYXBrZXlzcGFjZSwgJmluc2tleS5hbGxlcXVhbGltYWdlKTsKIAlpbnNrZXkuYW55bnVs bGtleXMgPSBmYWxzZTsgLyogdW51c2VkICovCiAJaW5za2V5Lm5leHRrZXkgPSBuZXh0a2V5 OwogCWluc2tleS5waXZvdHNlYXJjaCA9IGZhbHNlOwpAQCAtMTM2Myw3ICsxMzY2LDcgQEAg X2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJICog VXNlIHRoZSBtYW51ZmFjdHVyZWQgaW5zZXJ0aW9uIHNjYW4ga2V5IHRvIGRlc2NlbmQgdGhl IHRyZWUgYW5kCiAJICogcG9zaXRpb24gb3Vyc2VsdmVzIG9uIHRoZSB0YXJnZXQgbGVhZiBw YWdlLgogCSAqLwotCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsICZpbnNrZXksICZidWYsIEJU X1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlzdGFjayA9IF9idF9zZWFyY2gocmVsLCBo ZWFwcmVsLCAmaW5za2V5LCAmYnVmLCBCVF9SRUFELCBzY2FuLT54c19zbmFwc2hvdCk7CiAK IAkvKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlIHN0YWNrIGFyb3VuZC4uLiAqLwogCV9idF9m cmVlc3RhY2soc3RhY2spOwpAQCAtMjAwNCw3ICsyMDA3LDcgQEAgX2J0X3JlYWRuZXh0cGFn ZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0aW9u IGRpcikKIAkJCS8qIGNoZWNrIGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xk aW5nIGFueSBidWZmZXIgbG9jayAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAkJ CS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9n ZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBfYnRf Z2V0YnVmKHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCBibGtubywgQlRfUkVBRCk7CiAJCQlw YWdlID0gQnVmZmVyR2V0UGFnZShzby0+Y3VyclBvcy5idWYpOwogCQkJVGVzdEZvck9sZFNu YXBzaG90KHNjYW4tPnhzX3NuYXBzaG90LCByZWwsIHBhZ2UpOwogCQkJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjA3OCw3ICsyMDgxLDggQEAgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcikKIAkJaWYgKEJUU2NhblBvc0lzUGlubmVkKHNvLT5jdXJyUG9zKSkKIAkJCV9i dF9sb2NrYnVmKHJlbCwgc28tPmN1cnJQb3MuYnVmLCBCVF9SRUFEKTsKIAkJZWxzZQotCQkJ c28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNvLT5jdXJyUG9zLmN1cnJQYWdl LCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBzY2Fu LT5oZWFwUmVsYXRpb24sCisJCQkJCQkJCQkJIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9S RUFEKTsKIAogCQlmb3IgKDs7KQogCQl7CkBAIC0yMDkyLDggKzIwOTYsOCBAQCBfYnRfcmVh ZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNjYW5E aXJlY3Rpb24gZGlyKQogCQkJfQogCiAJCQkvKiBTdGVwIHRvIG5leHQgcGh5c2ljYWwgcGFn ZSAqLwotCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNvLT5jdXJy UG9zLmJ1ZiwKLQkJCQkJCQkJCQkJc2Nhbi0+eHNfc25hcHNob3QpOworCQkJc28tPmN1cnJQ b3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwKKwkJCQkJ CQkJCQkJc28tPmN1cnJQb3MuYnVmLCBzY2FuLT54c19zbmFwc2hvdCk7CiAKIAkJCS8qIGlm IHdlJ3JlIHBoeXNpY2FsbHkgYXQgZW5kIG9mIGluZGV4LCByZXR1cm4gZmFpbHVyZSAqLwog CQkJaWYgKHNvLT5jdXJyUG9zLmJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQpAQCAtMjE0MCw3ICsy MTQ0LDggQEAgX2J0X3JlYWRuZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVt YmVyIGJsa25vLCBTY2FuRGlyZWN0aW9uIGRpcikKIAkJCQkJQlRTY2FuUG9zSW52YWxpZGF0 ZShzby0+Y3VyclBvcyk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9Ci0JCQkJc28tPmN1 cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJCQlzby0+ Y3VyclBvcy5idWYgPSBfYnRfZ2V0YnVmKHJlbCwgc2Nhbi0+aGVhcFJlbGF0aW9uLCBibGtu bywKKwkJCQkJCQkJCQkJIEJUX1JFQUQpOwogCQkJfQogCQl9CiAJfQpAQCAtMjE4NSw3ICsy MTkwLDcgQEAgX2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxv Y2tOdW1iZXIgYmxrbm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogICogYWdhaW4gaWYgaXQncyBp bXBvcnRhbnQuCiAgKi8KIHN0YXRpYyBCdWZmZXIKLV9idF93YWxrX2xlZnQoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKK19idF93YWxrX2xlZnQoUmVs YXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFw c2hvdCkKIHsKIAlQYWdlCQlwYWdlOwogCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CkBAIC0yMjEz LDcgKzIyMTgsNyBAQCBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Ziwg U25hcHNob3Qgc25hcHNob3QpCiAJCV9idF9yZWxidWYocmVsLCBidWYpOwogCQkvKiBjaGVj ayBmb3IgaW50ZXJydXB0cyB3aGlsZSB3ZSdyZSBub3QgaG9sZGluZyBhbnkgYnVmZmVyIGxv Y2sgKi8KIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQkJYnVmID0gX2J0X2dldGJ1Zihy ZWwsIGJsa25vLCBCVF9SRUFEKTsKKwkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGhlYXByZWws IGJsa25vLCBCVF9SRUFEKTsKIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAkJVGVz dEZvck9sZFNuYXBzaG90KHNuYXBzaG90LCByZWwsIHBhZ2UpOwogCQlvcGFxdWUgPSBCVFBh Z2VHZXRPcGFxdWUocGFnZSk7CkBAIC0yMzA0LDcgKzIzMDksNyBAQCBfYnRfd2Fsa19sZWZ0 KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNob3QpCiAgKiBUaGUg cmV0dXJuZWQgYnVmZmVyIGlzIHBpbm5lZCBhbmQgcmVhZC1sb2NrZWQuCiAgKi8KIEJ1ZmZl cgotX2J0X2dldF9lbmRwb2ludChSZWxhdGlvbiByZWwsIHVpbnQzMiBsZXZlbCwgYm9vbCBy aWdodG1vc3QsCitfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVh cHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKIAkJCQkgU25hcHNob3Qgc25h cHNob3QpCiB7CiAJQnVmZmVyCQlidWY7CkBAIC0yMzIwLDkgKzIzMjUsOSBAQCBfYnRfZ2V0 X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwK IAkgKiBzbWFydGVyIGFib3V0IGludGVybWVkaWF0ZSBsZXZlbHMuKQogCSAqLwogCWlmIChs ZXZlbCA9PSAwKQotCQlidWYgPSBfYnRfZ2V0cm9vdChyZWwsIEJUX1JFQUQpOworCQlidWYg PSBfYnRfZ2V0cm9vdChyZWwsIGhlYXByZWwsIEJUX1JFQUQpOwogCWVsc2UKLQkJYnVmID0g X2J0X2dldHRydWVyb290KHJlbCk7CisJCWJ1ZiA9IF9idF9nZXR0cnVlcm9vdChyZWwsIGhl YXByZWwpOwogCiAJaWYgKCFCdWZmZXJJc1ZhbGlkKGJ1ZikpCiAJCXJldHVybiBJbnZhbGlk QnVmZmVyOwpAQCAtMjQwMyw3ICsyNDA4LDggQEAgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRl c2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJICogdmVyc2lvbiBvZiBfYnRfc2VhcmNo KCkuICBXZSBkb24ndCBtYWludGFpbiBhIHN0YWNrIHNpbmNlIHdlIGtub3cgd2UKIAkgKiB3 b24ndCBuZWVkIGl0LgogCSAqLwotCWJ1ZiA9IF9idF9nZXRfZW5kcG9pbnQocmVsLCAwLCBT Y2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIpLCBzY2FuLT54c19zbmFwc2hvdCk7CisJYnVm ID0gX2J0X2dldF9lbmRwb2ludChyZWwsIHNjYW4tPmhlYXBSZWxhdGlvbiwgMCwKKwkJCQkJ CSAgIFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90KTsK IAogCWlmICghQnVmZmVySXNWYWxpZChidWYpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMKaW5kZXggNjdiN2IxNzEwYy4uOGM1OGZkYjhkMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTU2Niw3ICs1NjYsNyBAQCBfYnRfbGVhZmJ1 aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wgKmJ0c3Bvb2wyKQogCiAJd3N0YXRlLmhl YXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4Owot CXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CisJ d3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5rZXkod3N0YXRlLmluZGV4LCBidHNwb29sLT5o ZWFwLCBOVUxMKTsKIAkvKiBfYnRfbWtzY2Fua2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1h Z2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdzdGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2Ug PSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUuaW5kZXgsIHRydWUpOwogCXdzdGF0ZS5idHdz X3VzZV93YWwgPSBSZWxhdGlvbk5lZWRzV0FMKHdzdGF0ZS5pbmRleCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5kZXggODAwMzU4M2MwYS4uNzBhMGMyNDE4YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtODcsNyArODcsNyBA QCBzdGF0aWMgaW50CV9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBs YXN0bGVmdCwKICAqCQlmaWVsZCB0aGVtc2VsdmVzLgogICovCiBCVFNjYW5JbnNlcnQKLV9i dF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXApCitfYnRfbWtzY2Fu a2V5KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgSW5kZXhUdXBsZSBpdHVwKQog ewogCUJUU2Nhbkluc2VydCBrZXk7CiAJU2NhbktleQkJc2tleTsKQEAgLTExMiw3ICsxMTIs NyBAQCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogCWtl eSA9IHBhbGxvYyhvZmZzZXRvZihCVFNjYW5JbnNlcnREYXRhLCBzY2Fua2V5cykgKwogCQkJ CSBzaXplb2YoU2NhbktleURhdGEpICogaW5kbmtleWF0dHMpOwogCWlmIChpdHVwKQotCQlf YnRfbWV0YXZlcnNpb24ocmVsLCAma2V5LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFs aW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24ocmVsLCBoZWFwcmVsLCAma2V5LT5oZWFwa2V5 c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UpOwogCWVsc2UKIAl7CiAJCS8qIFV0aWxpdHkg c3RhdGVtZW50IGNhbGxlcnMgY2FuIHNldCB0aGVzZSBmaWVsZHMgdGhlbXNlbHZlcyAqLwpA QCAtMTc2MSw3ICsxNzYxLDggQEAgX2J0X2tpbGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4p CiAKIAkJZHJvcHBlZHBpbiA9IHRydWU7CiAJCS8qIEF0dGVtcHQgdG8gcmUtcmVhZCB0aGUg YnVmZmVyLCBnZXR0aW5nIHBpbiBhbmQgbG9jay4gKi8KLQkJYnVmID0gX2J0X2dldGJ1Zihz Y2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CisJ CWJ1ZiA9IF9idF9nZXRidWYoc2Nhbi0+aW5kZXhSZWxhdGlvbiwgc2Nhbi0+aGVhcFJlbGF0 aW9uLAorCQkJCQkJIHNvLT5jdXJyUG9zLmN1cnJQYWdlLCBCVF9SRUFEKTsKIAogCQlwYWdl ID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlpZiAoQnVmZmVyR2V0TFNOQXRvbWljKGJ1Zikg PT0gc28tPmN1cnJQb3MubHNuKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVt LmMKaW5kZXggM2FkYjE4ZjJkOC4uMmY0YTRhYWQyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC00ODksNyArNDg5LDcgQEAgdmFjdXVtTGVhZlJvb3Qo c3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVy KQogICogVW5saWtlIHRoZSByb3V0aW5lcyBhYm92ZSwgdGhpcyB3b3JrcyBvbiBib3RoIGxl YWYgYW5kIGlubmVyIHBhZ2VzLgogICovCiBzdGF0aWMgdm9pZAotdmFjdXVtUmVkaXJlY3RB bmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikKK3ZhY3V1bVJl ZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWws IEJ1ZmZlciBidWZmZXIpCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVy KTsKIAlTcEdpc3RQYWdlT3BhcXVlIG9wYXF1ZSA9IFNwR2lzdFBhZ2VHZXRPcGFxdWUocGFn ZSk7CkBAIC01MDMsNiArNTAzLDcgQEAgdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihS ZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikKIAlzcGd4bG9nVmFjdXVtUmVkaXJlY3Qg eGxyZWM7CiAJR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Q7CiAKKwl4bHJlYy5pc0NhdGFsb2dS ZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwog CXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsKIAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9y aXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCkBAIC02NDMsMTMgKzY0NCwxMyBAQCBz cGd2YWN1dW1wYWdlKHNwZ0J1bGtEZWxldGVTdGF0ZSAqYmRzLCBCbG9ja051bWJlciBibGtu bykKIAkJZWxzZQogCQl7CiAJCQl2YWN1dW1MZWFmUGFnZShiZHMsIGluZGV4LCBidWZmZXIs IGZhbHNlKTsKLQkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZl cik7CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8t PmhlYXByZWwsIGJ1ZmZlcik7CiAJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyogaW5uZXIgcGFn ZSAqLwotCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBidWZmZXIpOwor CQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKGluZGV4LCBiZHMtPmluZm8tPmhlYXBy ZWwsIGJ1ZmZlcik7CiAJfQogCiAJLyoKQEAgLTcxOSw3ICs3MjAsNyBAQCBzcGdwcm9jZXNz cGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUgKmJkcykKIAkJCS8qIGRlYWwgd2l0aCBhbnkg ZGVsZXRhYmxlIHR1cGxlcyAqLwogCQkJdmFjdXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVm ZmVyLCB0cnVlKTsKIAkJCS8qIG1pZ2h0IGFzIHdlbGwgZG8gdGhpcyB3aGlsZSB3ZSBhcmUg aGVyZSAqLwotCQkJdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVy KTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJkcy0+aW5mby0+ aGVhcHJlbCwgYnVmZmVyKTsKIAogCQkJU3BHaXN0U2V0TGFzdFVzZWRQYWdlKGluZGV4LCBi dWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNDFiMTZjYjg5Yi4uNDhkMWQ2YjUw NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzM1Miw2ICszMzUyLDcgQEAgdmFsaWRhdGVf aW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2 aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90dXBsZXMg PSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9 IE5VTEw7CisJaXZpbmZvLmhlYXByZWwgPSBoZWFwUmVsYXRpb247CiAKIAkvKgogCSAqIEVu Y29kZSBUSURzIGFzIGludDggdmFsdWVzIGZvciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGly ZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6 ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCmluZGV4IGM4NmU2OTA5ODAu LjMyMWZjMGQzMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKQEAgLTcxMiw2ICs3MTIs NyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFy YW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVt X2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9yZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5z dHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJCWl2aW5mby5oZWFwcmVsID0gb25lcmVsOwog CiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9jbGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCBiY2Q0MGM4MGExLi4y Y2RiZDE4MmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAg LTE0OCw2ICsxNDgsOSBAQCBzdHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIE5VTEwg Zm9yIHdvcmtlciBwcm9jZXNzZXMgKi8KIAlQYXJhbGxlbENvbnRleHQgKnBjeHQ7CiAKKwkv KiBQYXJlbnQgSGVhcCBSZWxhdGlvbiAqLworCVJlbGF0aW9uCWhlYXByZWw7CisKIAkvKiBU YXJnZXQgaW5kZXhlcyAqLwogCVJlbGF0aW9uICAgKmluZHJlbHM7CiAJaW50CQkJbmluZGV4 ZXM7CkBAIC0yNjYsNiArMjY5LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24g cmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXB2cy0+bmluZGV4ZXMg PSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFyYWxsZWxfdmFjdXVtID0gd2lsbF9wYXJhbGxl bF92YWN1dW07CiAJcHZzLT5ic3RyYXRlZ3kgPSBic3RyYXRlZ3k7CisJcHZzLT5oZWFwcmVs ID0gcmVsOwogCiAJRW50ZXJQYXJhbGxlbE1vZGUoKTsKIAlwY3h0ID0gQ3JlYXRlUGFyYWxs ZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJwYXJhbGxlbF92YWN1dW1fbWFpbiIsCkBAIC04Mzgs NiArODQyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24gaW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRf Y291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1hdGVkX2NvdW50OwogCWl2aW5mby5udW1faGVh cF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVsdHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9 IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby5oZWFwcmVsID0gcHZzLT5oZWFwcmVsOwogCiAJ LyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFt ZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSk7CkBAIC0xMDA3 LDYgKzEwMTIsNyBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBz aG1fdG9jICp0b2MpCiAJcHZzLmRlYWRfaXRlbXMgPSBkZWFkX2l0ZW1zOwogCXB2cy5yZWxu YW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVs KSk7CiAJcHZzLnJlbG5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpOworCXB2cy5oZWFwcmVsID0gcmVsOwogCiAJLyogVGhlc2UgZmllbGRzIHdpbGwgYmUg ZmlsbGVkIGR1cmluZyBpbmRleCB2YWN1dW0gb3IgY2xlYW51cCAqLwogCXB2cy5pbmRuYW1l ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5j YXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCBkNThj NGExMDc4Li5lMzgyNGVmZTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNh dC5jCkBAIC00NjIsNyArNDYyLDcgQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8g KnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCQkJICog Rm9yIGJ0cmVlcywgZ2V0IHRyZWUgaGVpZ2h0IHdoaWxlIHdlIGhhdmUgdGhlIGluZGV4CiAJ CQkJCSAqIG9wZW4KIAkJCQkJICovCi0JCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dl dHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbik7CisJCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0g X2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbiwgcmVsYXRpb24pOwogCQkJCX0KIAkJ CQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBs ZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJp YW50cy5jCmluZGV4IGViNmNmY2ZkMDAuLjAxODgxMDY5MjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTIwNyw2ICsyMDcsNyBAQCB0 dXBsZXNvcnRfYmVnaW5faGVhcChUdXBsZURlc2MgdHVwRGVzYywKIFR1cGxlc29ydHN0YXRl ICoKIHR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAogCQkJCQkJ UmVsYXRpb24gaW5kZXhSZWwsCisJCQkJCQlSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJaW50 IHdvcmtNZW0sCiAJCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLCBpbnQgc29ydG9w dCkKIHsKQEAgLTI2MCw3ICsyNjEsNyBAQCB0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBs ZURlc2MgdHVwRGVzYywKIAogCWFyZy0+dHVwRGVzYyA9IHR1cERlc2M7CQkvKiBhc3N1bWUg d2UgbmVlZCBub3QgY29weSB0dXBEZXNjICovCiAKLQlpbmRleFNjYW5LZXkgPSBfYnRfbWtz Y2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5 KGluZGV4UmVsLCBoZWFwcmVsLCBOVUxMKTsKIAogCWlmIChhcmctPmluZGV4SW5mby0+aWlf RXhwcmVzc2lvbnMgIT0gTlVMTCkKIAl7CkBAIC0zNjEsNyArMzYyLDcgQEAgdHVwbGVzb3J0 X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJYXJnLT5lbmZvcmNlVW5p cXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3QgPSB1 bmlxdWVOdWxsc05vdERpc3RpbmN0OwogCi0JaW5kZXhTY2FuS2V5ID0gX2J0X21rc2Nhbmtl eShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRl eFJlbCwgaGVhcFJlbCwgTlVMTCk7CiAKIAkvKiBQcmVwYXJlIFNvcnRTdXBwb3J0IGRhdGEg Zm9yIGVhY2ggY29sdW1uICovCiAJYmFzZS0+c29ydEtleXMgPSAoU29ydFN1cHBvcnQpIHBh bGxvYzAoYmFzZS0+bktleXMgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dl bmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA4M2RiZWUwZmU2Li43 NzA4YjgyZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtNTAsNiArNTAsNyBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlpbnQJCQltZXNzYWdlX2xldmVsOwkvKiBlcmVw b3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAqLwogCWRvdWJsZQkJbnVtX2hlYXBf dHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhlYXAgKi8KIAlCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0ZWd5IGZvciByZWFkcyAqLworCVJl bGF0aW9uIAloZWFwcmVsOwkJLyogdGhlIGhlYXAgcmVsYXRpb24gdGhlIGluZGV4IGJlbG9u Z3MgdG8gKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Rf cHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLmVlMjc1NjUwYmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAsNyBAQCBleHRlcm4gWExvZ1JlY1B0 ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSBGdWxsVHJh bnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZmZXIsCiAJCQkJCQkJCQkgT2Zmc2V0 TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJuIHZvaWQgZ2lzdFhMb2dQYWdlUmV1 c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywKK2V4dGVybiB2b2lkIGdpc3RY TG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rpb25JZCBkZWxldGVYaWQpOwogCiBl eHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShCdWZmZXIgYnVmZmVyLApAQCAtNDQ5 LDcgKzQ0OSw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBi dWZmZXIsCiAJCQkJCQkJCSBCdWZmZXIgbGVmdGNoaWxkYnVmKTsKIAogZXh0ZXJuIFhMb2dS ZWNQdHIgZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1ZmZlciwgT2Zmc2V0TnVtYmVyICp0b2Rl bGV0ZSwKLQkJCQkJCQkJIGludCBudG9kZWxldGUsIFRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b24pOworCQkJCQkJCQkgaW50IG50b2RlbGV0ZSwgVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJIFJlbGF0aW9uIGhlYXByZWwp OwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1NwbGl0KGJvb2wgcGFnZV9pc19sZWFm LAogCQkJCQkJCQlTcGxpdGVkUGFnZUxheW91dCAqZGlzdCwKQEAgLTQ4NSw3ICs0ODYsNyBA QCBleHRlcm4gYm9vbCBnaXN0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAog ZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBsZSAqaXR2ZWMsIGludCBsZW4pOwog ZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdlLCBJbmRleFR1cGxlICppdHZlYywg aW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBTaXplIGZyZWVzcGFjZSk7CiBleHRl cm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7Ci1leHRl cm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gcik7CitleHRlcm4gQnVmZmVyIGdp c3ROZXdCdWZmZXIoUmVsYXRpb24gciwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gYm9v bCBnaXN0UGFnZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsKIGV4dGVybiB2b2lkIGdpc3RmaWxs YnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1cCwgaW50IGxlbiwKIAkJCQkJCSAg IE9mZnNldE51bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dp c3R4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAppbmRleCAwOWY5YjBm OGM2Li4yZWVhODY2ZjA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhs b2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaApAQCAtNTEsMTMgKzUx LDE0IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVsZXRlCiB7CiAJVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW50b2RlbGV0ZTsJCS8qIG51 bWJlciBvZiBkZWxldGVkIG9mZnNldHMgKi8KKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7 CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJ CQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKLQkvKgotCSAqIEluIHBheWxvYWQgb2Yg YmxrIDAgOiB0b2RlbGV0ZSBPZmZzZXROdW1iZXJzCi0JICovCisJLyogVE9ERUxFVEUgT0ZG U0VUIE5VTUJFUlMgKi8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9N RU1CRVJdOwogfSBnaXN0eGxvZ0RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0Rl bGV0ZQkob2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUsIG50b2RlbGV0ZSkgKyBzaXplb2YodWlu dDE2KSkKKyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dEZWxldGUgb2Zmc2V0b2YoZ2lzdHhsb2dE ZWxldGUsIG9mZnNldHMpCiAKIC8qCiAgKiBCYWNrdXAgQmxrIDA6IElmIHRoaXMgb3BlcmF0 aW9uIGNvbXBsZXRlcyBhIHBhZ2Ugc3BsaXQsIGJ5IGluc2VydGluZyBhCkBAIC0xMDAsOSAr MTAxLDExIEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFnZVJldXNlCiAJUmVsRmlsZUxv Y2F0b3IgbG9jYXRvcjsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25J ZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7 CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAorCQkJCQkJ CQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiB9IGdpc3R4bG9nUGFnZVJldXNlOwogCi0j ZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShvZmZzZXRvZihnaXN0eGxvZ1BhZ2VS ZXVzZSwgc25hcHNob3RDb25mbGljdEhvcml6b24pICsgc2l6ZW9mKEZ1bGxUcmFuc2FjdGlv bklkKSkKKyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4 bG9nUGFnZVJldXNlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiBleHRlcm4g dm9pZCBnaXN0X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQg Z2lzdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggYTJmMGYzOTIxMy4uN2U5ZTQ3Y2U2NyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUyLDEyICsyNTIsMTQgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKIHsKIAlUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uOwogCWludAkJCW50dXBsZXM7CisJYm9vbAkJaXNDYXRhbG9n UmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwKKwkJ CQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCi0JLyogVEFSR0VUIE9GRlNFVCBO VU1CRVJTIEZPTExPVyBBVCBUSEUgRU5EICovCisJLyogVEFSR0VUIE9GRlNFVCBOVU1CRVJT ICovCisJT2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0g eGxfaGFzaF92YWN1dW1fb25lX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9u ZVBhZ2UgXAotCShvZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgbnR1cGxlcykg KyBzaXplb2YoaW50KSkKKyNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ugb2Zmc2V0 b2YoeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UsIG9mZnNldHMpCiAKIGV4dGVybiB2b2lkIGhh c2hfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBoYXNoX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggOGNiMGQ4ZGExOS4uMjIzZGI0YjE5OSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0NSwxMCArMjQ1LDEyIEBAIHR5cGVkZWYg c3RydWN0IHhsX2hlYXBfcHJ1bmUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uOwogCXVpbnQxNgkJbnJlZGlyZWN0ZWQ7CiAJdWludDE2CQluZGVhZDsKKwlib29s ICAgICAgICBpc0NhdGFsb2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBk dXJpbmcgbG9naWNhbAorCQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAJLyog T0ZGU0VUIE5VTUJFUlMgYXJlIGluIHRoZSBibG9jayByZWZlcmVuY2UgMCAqLwogfSB4bF9o ZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVh cF9wcnVuZSwgbmRlYWQpICsgc2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhlYXBQ cnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihi b29sKSkKIAogLyoKICAqIFRoZSB2YWN1dW0gcGFnZSByZWNvcmQgaXMgc2ltaWxhciB0byB0 aGUgcHJ1bmUgcmVjb3JkLCBidXQgY2FuIG9ubHkgbWFyawpAQCAtMzQ0LDEyICszNDYsMTQg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogewogCVRyYW5zYWN0aW9u SWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQlucGxhbnM7CisJYm9vbCAg ICAgICAgaXNDYXRhbG9nUmVsOwkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwKKwkJCQkJCQkJICogZGVjb2Rpbmcgb24gc3RhbmRieSAqLwogCiAJLyog RlJFRVpFIFBMQU5TIEZPTExPVyAqLwogCS8qIE9GRlNFVCBOVU1CRVIgQVJSQVkgRk9MTE9X UyAqLwogfSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhlYXBGcmVl emVQYWdlIChvZmZzZXRvZih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBucGxhbnMpICsgc2l6ZW9m KHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdlIChvZmZzZXRvZih4bF9o ZWFwX2ZyZWV6ZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgog ICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0CkBAIC00MDgsNyArNDEyLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVz YyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNv bnN0IGNoYXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVh cF94bG9nX2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4g WExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBC dWZmZXIgaGVhcF9idWZmZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBCdWZmZXIg dm1fYnVmZmVyLAogCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uLAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApp bmRleCA4ZjQ4OTYwZjlkLi42ZGVlMzA3MDQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0x MTgyLDggKzExODIsMTAgQEAgZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3N3YXBfcG9zdGluZyhJ bmRleFR1cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3Bvc3RpbmcsCiBleHRlcm4gYm9vbCBf YnRfZG9pbnNlcnQoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJCQkgSW5k ZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCBpbmRleFVuY2hhbmdlZCwKIAkJCQkJ CSBSZWxhdGlvbiBoZWFwUmVsKTsKLWV4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVs YXRpb24gcmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjayk7Ci1leHRlcm4gQnVmZmVy IF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVt YmVyIGNoaWxkKTsKK2V4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgbGJ1ZiwKKwkJCQkJCQkgQlRTdGFjayBzdGFj ayk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIFJlbGF0 aW9uIGhlYXByZWwsIEJUU3RhY2sgc3RhY2ssCisJCQkJCQkJICBCbG9ja051bWJlciBjaGls ZCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0c3BsaXRsb2Mu YwpAQCAtMTE5NywxNiArMTE5OSwxOCBAQCBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9maW5k c3BsaXRsb2MoUmVsYXRpb24gcmVsLCBQYWdlIG9yaWdwYWdlLAogICovCiBleHRlcm4gdm9p ZCBfYnRfaW5pdG1ldGFwYWdlKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgcm9vdGJrbnVtLCB1 aW50MzIgbGV2ZWwsCiAJCQkJCQkJIGJvb2wgYWxsZXF1YWxpbWFnZSk7Ci1leHRlcm4gYm9v bCBfYnRfdmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKTsKLWV4dGVybiB2b2lk IF9idF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2Rl bHBhZ2VzKTsKK2V4dGVybiBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQgX2J0X3NldF9jbGVhbnVw X2luZm8oUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAorCQkJCQkJCQkgQmxvY2tO dW1iZXIgbnVtX2RlbHBhZ2VzKTsKIGV4dGVybiB2b2lkIF9idF91cGdyYWRlbWV0YXBhZ2Uo UGFnZSBwYWdlKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBp bnQgYWNjZXNzKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0aW9uIHJl bCk7Ci1leHRlcm4gaW50CV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCk7Ci1leHRl cm4gdm9pZCBfYnRfbWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3Bh Y2UsCitleHRlcm4gQnVmZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcHJlbCwgaW50IGFjY2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9nZXR0cnVlcm9vdChS ZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIGludAlfYnRfZ2V0cm9v dGhlaWdodChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQg X2J0X21ldGF2ZXJzaW9uKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgYm9vbCAq aGVhcGtleXNwYWNlLAogCQkJCQkJCWJvb2wgKmFsbGVxdWFsaW1hZ2UpOwogZXh0ZXJuIHZv aWQgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYpOwotZXh0ZXJuIEJ1 ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBh Y2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCisJCQkJCQkgaW50IGFjY2Vzcyk7CiBl eHRlcm4gQnVmZmVyIF9idF9yZWxhbmRnZXRidWYoUmVsYXRpb24gcmVsLCBCdWZmZXIgb2J1 ZiwKIAkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vzcyk7CiBleHRlcm4g dm9pZCBfYnRfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Zik7CkBAIC0xMjI5LDIx ICsxMjMzLDIyIEBAIGV4dGVybiB2b2lkIF9idF9wZW5kaW5nZnNtX2ZpbmFsaXplKFJlbGF0 aW9uIHJlbCwgQlRWYWNTdGF0ZSAqdnN0YXRlKTsKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBm dW5jdGlvbnMgaW4gbmJ0c2VhcmNoLmMKICAqLwotZXh0ZXJuIEJUU3RhY2sgX2J0X3NlYXJj aChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBrZXksIEJ1ZmZlciAqYnVmUCwKLQkJCQkJ CSAgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOwotZXh0ZXJuIEJ1ZmZlciBfYnRf bW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyIGJ1ZiwK LQkJCQkJCQlib29sIGZvcnVwZGF0ZSwgQlRTdGFjayBzdGFjaywgaW50IGFjY2VzcywgU25h cHNob3Qgc25hcHNob3QpOworZXh0ZXJuIEJUU3RhY2sgX2J0X3NlYXJjaChSZWxhdGlvbiBy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIEJUU2Nhbkluc2VydCBrZXksCisJCQkJCQkgIEJ1ZmZl ciAqYnVmUCwgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOworZXh0ZXJuIEJ1ZmZl ciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwgQlRTY2Fu SW5zZXJ0IGtleSwKKwkJCQkJCQlCdWZmZXIgYnVmLCBib29sIGZvcnVwZGF0ZSwgQlRTdGFj ayBzdGFjaywKKwkJCQkJCQlpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRl cm4gT2Zmc2V0TnVtYmVyIF9idF9iaW5zcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5z ZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogZXh0ZXJuIGludDMyIF9idF9jb21wYXJlKFJlbGF0 aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2Zm bnVtKTsKIGV4dGVybiBib29sIF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5E aXJlY3Rpb24gZGlyKTsKIGV4dGVybiBib29sIF9idF9uZXh0KEluZGV4U2NhbkRlc2Mgc2Nh biwgU2NhbkRpcmVjdGlvbiBkaXIpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0X2VuZHBvaW50 KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKLQkJCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCk7CitleHRlcm4gQnVmZmVyIF9idF9nZXRfZW5kcG9pbnQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCB1aW50MzIgbGV2ZWwsCisJCQkJCQkJ ICAgYm9vbCByaWdodG1vc3QsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogLyoKICAqIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnR1dGlscy5jCiAgKi8KLWV4dGVybiBCVFNjYW5J bnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCk7Citl eHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBSZWxhdGlv biBoZWFwcmVsLCBJbmRleFR1cGxlIGl0dXApOwogZXh0ZXJuIHZvaWQgX2J0X2ZyZWVzdGFj ayhCVFN0YWNrIHN0YWNrKTsKIGV4dGVybiB2b2lkIF9idF9wcmVwcm9jZXNzX2FycmF5X2tl eXMoSW5kZXhTY2FuRGVzYyBzY2FuKTsKIGV4dGVybiB2b2lkIF9idF9zdGFydF9hcnJheV9r ZXlzKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9u YnR4bG9nLmgKaW5kZXggZWRkMTMzM2Q5Yi4uMWU0NWQ1ODg0NSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0 eGxvZy5oCkBAIC0xODgsOSArMTg4LDExIEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX3Jl dXNlX3BhZ2UKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsb2Nr OwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOworCWJvb2wg ICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1 cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIH0geGxf YnRyZWVfcmV1c2VfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFnZQkoc2l6 ZW9mKHhsX2J0cmVlX3JldXNlX3BhZ2UpKQorI2RlZmluZSBTaXplT2ZCdHJlZVJldXNlUGFn ZQkob2Zmc2V0b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSwgaXNDYXRhbG9nUmVsKSArIHNpemVv Zihib29sKSkKIAogLyoKICAqIHhsX2J0cmVlX3ZhY3V1bSBhbmQgeGxfYnRyZWVfZGVsZXRl IHJlY29yZHMgZGVzY3JpYmUgZGVsZXRpb24gb2YgaW5kZXgKQEAgLTIzNSwxMyArMjM3LDE1 IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVlX2RlbGV0ZQogCVRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQluZGVsZXRlZDsKIAl1aW50MTYJCW51 cGRhdGVkOworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsJLyogdG8gaGFuZGxlIHJlY292 ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsCisJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0 YW5kYnkgKi8KIAogCS8qIERFTEVURUQgVEFSR0VUIE9GRlNFVCBOVU1CRVJTIEZPTExPVyAq LwogCS8qIFVQREFURUQgVEFSR0VUIE9GRlNFVCBOVU1CRVJTIEZPTExPVyAqLwogCS8qIFVQ REFURUQgVFVQTEVTIE1FVEFEQVRBICh4bF9idHJlZV91cGRhdGUpIEFSUkFZIEZPTExPV1Mg Ki8KIH0geGxfYnRyZWVfZGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShv ZmZzZXRvZih4bF9idHJlZV9kZWxldGUsIG51cGRhdGVkKSArIHNpemVvZih1aW50MTYpKQor I2RlZmluZSBTaXplT2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBp c0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhlIG9mZnNldHMgdGhh dCBhcHBlYXIgaW4geGxfYnRyZWVfdXBkYXRlIG1ldGFkYXRhIGFyZSBvZmZzZXRzIGludG8g dGhlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaAppbmRleCBiOWQ2NzUzNTMzLi43NTI2N2E0OTE0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAgLTI0MCw2ICsyNDAsOCBAQCB0eXBlZGVmIHN0cnVj dCBzcGd4bG9nVmFjdXVtUmVkaXJlY3QKIAl1aW50MTYJCW5Ub1BsYWNlaG9sZGVyOyAvKiBu dW1iZXIgb2YgcmVkaXJlY3RzIHRvIG1ha2UgcGxhY2Vob2xkZXJzICovCiAJT2Zmc2V0TnVt YmVyIGZpcnN0UGxhY2Vob2xkZXI7CS8qIGZpcnN0IHBsYWNlaG9sZGVyIHR1cGxlIHRvIHJl bW92ZSAqLwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CS8qIG5l d2VzdCBYSUQgb2YgcmVtb3ZlZCByZWRpcmVjdHMgKi8KKwlib29sICAgICAgICBpc0NhdGFs b2dSZWw7CS8qIHRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBkdXJpbmcgbG9naWNhbAor CQkJCQkJCQkgKiBkZWNvZGluZyBvbiBzdGFuZGJ5ICovCiAKIAkvKiBvZmZzZXRzIG9mIHJl ZGlyZWN0IHR1cGxlcyB0byBtYWtlIHBsYWNlaG9sZGVycyBmb2xsb3cgKi8KIAlPZmZzZXRO dW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaAppbmRleCA5MTY1Yjk0NTZiLi43MzA2YTFjM2VlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMTcsOSArMTcs MTEgQEAKICNkZWZpbmUgQklUU19QRVJfSEVBUEJMT0NLIDIKIAogLyogRmxhZ3MgZm9yIGJp dCBtYXAgKi8KLSNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRQkweDAxCi0jZGVm aW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCi0jZGVmaW5lIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCi0J CQkJCQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRQkJCQkJCQkJMHgwMQorI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4J CQkJCQkJCTB4MDIKKyNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCQkJCQkJCQkw eDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCisJCQkJCQkJCQkJCQkJCQkJ CQkgKiBmbGFncyBiaXRzICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfSVNfQ0FUQUxPR19S RUwJCQkJCQkJMHgwNAkvKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxv Z2ljYWwKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KIAog I2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXgg YWY5Nzg1MDM4ZC4uMGNmZTAyYWE0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2Nh dGFsb2cuaCIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmggYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCAxMjU3OGU0MmJj Li4zOTVhYmZlNTk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtMzk5LDcgKzM5OSw5 IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVE ZXNjIHR1cERlc2MsCiAJCQkJCQkJCQkJCWludCB3b3JrTWVtLCBTb3J0Q29vcmRpbmF0ZSBj b29yZGluYXRlLAogCQkJCQkJCQkJCQlpbnQgc29ydG9wdCk7CiBleHRlcm4gVHVwbGVzb3J0 c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9jbHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAotCQkJ CQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwgaW50IHdvcmtNZW0sCisJCQkJCQkJCQkJ CSAgIFJlbGF0aW9uIGluZGV4UmVsLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVs LAorCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwKIAkJCQkJCQkJCQkJICAgU29ydENvb3Jk aW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJICAgaW50IHNvcnRvcHQpOwogZXh0ZXJu IFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24g aGVhcFJlbCwKLS0gCjIuMzQuMQoK --------------xcV5bng7yz5XMd7kxCkCzz4E--