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 1pL6UC-00046S-Ck for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Jan 2023 17:56:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pL6UA-0006I5-Jo for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Jan 2023 17:56:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pL6U9-0006Gd-IG for pgsql-hackers@lists.postgresql.org; Thu, 26 Jan 2023 17:56:30 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pL6Tv-0004Sl-Mb for pgsql-hackers@postgresql.org; Thu, 26 Jan 2023 17:56:28 +0000 Received: by mail-wr1-x431.google.com with SMTP id b7so2605098wrt.3 for ; Thu, 26 Jan 2023 09:56:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=HsGNA4yVvTgirit6ameAQ8FSa/HNSthLkF/auPGpV0o=; b=kttbvKR9NR/2S386F5n0BHPwdII8RxqMV4q622AMq/bSu5u2LUL+nbA30PvaCYsy+b lpJuHSFnAkl2WXKCHYpsrmmX0bSs3i7RMb/5sRxdb0G6U/56PDPsoi+Ck+4+fbrPxyzA u/DyjsRJnZ6BHirPsgSx19nf7B9gMzjO+m8VMCZiIFH83V6/FJsRNbc0JBvlKXpGa4qv /zRaxLZoUM58Qh2BHDnP95Z+w0cGy7uOvpySIcjavEnG1ASeJuw7pKXg3rCiCA8/u9ts 34ev3XSt6bXeY/K456amvypkf0stBtEdyNu9I0EZp1VPBsxqxAt5Y7PPdUGGOOnRoKua Ps2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc: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=HsGNA4yVvTgirit6ameAQ8FSa/HNSthLkF/auPGpV0o=; b=76M6EDtRzPYHnXqZYP7Wmrrod9mFRPMub3uXTd2OmfE0J3o+UjmCI+f2mduS31v2/G 59fPPXyh4tyPZa7meWwhnzlEgfmgyuETOBcMa1ptMXORrohINhrBcdgtG/7efDu7rQE4 2uzeUJfB+c/NfhcTkA/iNVrHSSsja/4ALWeghOK2SS+3EeAmWyQ7cdDn2OMxScroxJjr XUmMTrSIVKgbxI5WcCmJTddttSjY2GH0WK+pqx0JZUkyZavX+jm5iaxujPFDQwYH/Dc3 mts8Q7KguTSubatPXCToN2YdwDGZDXNU6HBnVIFQpTyvlljGZig460X64O1fRkZHlBNl u96w== X-Gm-Message-State: AFqh2kq6NNlJWXSbNDlt70N5TQWkiyBhSSvqCstfYNCP+rld76Jjmgwh UBJYMVzg8WV1cNa4um8cq7Y= X-Google-Smtp-Source: AMrXdXvZngCKAXfbUj55skgmMIPU1v6EmU5hE6kQjbzQ86pKCoovzggD+Iwt4VYsKCwVn3RklcxpDA== X-Received: by 2002:a5d:6582:0:b0:2be:5c14:eb74 with SMTP id q2-20020a5d6582000000b002be5c14eb74mr20538689wru.62.1674755772972; Thu, 26 Jan 2023 09:56:12 -0800 (PST) Received: from [192.168.15.226] ([54.239.6.190]) by smtp.gmail.com with ESMTPSA id t10-20020a05600c328a00b003d9a86a13bfsm1880710wmp.28.2023.01.26.09.56.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 26 Jan 2023 09:56:12 -0800 (PST) Content-Type: multipart/mixed; boundary="------------PsoLkpC3kutW3r5ZDSG03NPT" Message-ID: Date: Thu, 26 Jan 2023 18:56:10 +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 Cc: Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers 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> <20230124004612.xmryok6tcyk6i4pc@awork3.anarazel.de> <9dfd49e6-6675-526e-0636-0ba09396744e@gmail.com> In-Reply-To: <9dfd49e6-6675-526e-0636-0ba09396744e@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. --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, On 1/24/23 3:31 PM, Drouvot, Bertrand wrote: > Hi, > > On 1/24/23 6:20 AM, Drouvot, Bertrand wrote: >> Hi, >> >> On 1/24/23 1:46 AM, Andres Freund wrote: >>> Hi, >>> >>> On 2023-01-19 10:43:27 +0100, Drouvot, Bertrand wrote: >>>> Sure, so with: >>>> >>>> 1) hot_standby_feedback set to off on the standby >>>> 2) create 2 logical replication slots on the standby and activate one >>>> 3) Invalidate the logical slots on the standby with VACUUM FULL on the primary >>>> 4) change hot_standby_feedback to on on the standby >>>> >>>> If: >>>> >>>> 5) pg_reload_conf() on the standby, then on the primary we get a catalog_xmin >>>> for the physical slot that the standby is attached to: >>>> >>>> postgres=# select slot_type,xmin,catalog_xmin  from pg_replication_slots ; >>>>   slot_type | xmin | catalog_xmin >>>> -----------+------+-------------- >>>>   physical  |  822 |          748 >>>> (1 row) >>> >>> How long did you wait for this to change? >> >> Almost instantaneous after pg_reload_conf() on the standby. >> >>> I don't think there's anything right >>> now that'd force a new hot-standby-feedback message to be sent to the primary, >>> after slots got invalidated. >>> >>> I suspect that if you terminated the walsender connection on the primary, >>> you'd not see it anymore either? >>> >> >> Still there after the standby is shutdown but disappears when the standby is re-started. >> >>> If that isn't it, something is broken in InvalidateObsolete... >>> > > Yeah, you are right: ReplicationSlotsComputeRequiredXmin() is missing for the > logical slot invalidation case (and ReplicationSlotsComputeRequiredXmin() also > needs to take care of it). > > I'll provide a fix in the next revision along with the TAP tests comments addressed. > Please find attached V43 addressing the comments related to the TAP tests (in 0004 at that time) that have been done in [1] . Remarks: - The C helper function to call LogStandbySnapshot() is not done yet. - While working on it, I discovered that the new isCatalogRel field was not populated in gistXLogDelete(): fixed in V43. - The issue described above is also fixed so that a standby restart or a reload would produce the same behavior on the primary physical slot (aka catalog_xmin is empty if logical slots are invalidated). - A test with pg_recvlogical started before the standby promotion has been added. - A test for conflict due to row removal via on-access pruning has been added. - I'm struggling to create a test for btree killtuples as there is a need for rows removal on the table (that could produce a conflict too): Do you've a scenario in mind for this one? (and btw in what kind of WAL record should the conflict be detected in such a case? xl_btree_delete?) Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com [1]: https://www.postgresql.org/message-id/20230106034036.2m4qnn7ep7b5ipet%40awork3.anarazel.de --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; name="v43-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v43-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmZGFjNmMyMDIyMWFlMTE0NGRkZTc5MjdhOGRjYmU0ZmM5OWRiYTAzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAyNiBKYW4gMjAyMyAxNzoxMzoxNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQzIDYvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj 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 --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; name="v43-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v43-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAwZjIzNmVmN2I1ZThlY2Q2YTFiMjg4MGQ4NzMxMzlkNDRlNmExYzUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVGh1LCAyNiBKYW4gMjAyMyAxNzoxMjoxMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQzIDUvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzkgKysKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICB8ICAgMSArCiAuLi4vdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAg ICAgfCA2MDggKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY0OCBpbnNl cnRpb25zKCspCiAgIDUuMiUgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvCiAgOTQu NSUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi40NTNmMzczODJiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0 NSBAQCAkU0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAk bm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwgc2xv dF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgb24g Z2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0 YW5kYnkKK3sKKwlteSAoJHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUpID0g QF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRoYW5k bGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxmLT5j b25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90X25h bWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsK KworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5IGxv b2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJlc3Rh cnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkjIHJl c3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGlsKAor CQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxMCisJ CUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg PSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBsb2dp Y2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBhcnJh bmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3JlY3Zs b2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSMgTm90ZTogV3JpdGUgYSBDIGhlbHBlciBmdW5j dGlvbiB0byBjYWxsIExvZ1N0YW5kYnlTbmFwc2hvdCgpIGluc3RlYWQKKwkjIG9mIGFza2lu ZyBmb3IgYSBjaGVja3BvaW50LgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn Q0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+c2xv dCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1lIC4g JyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUgc2xv dCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv bWVzb24uYnVpbGQKaW5kZXggZWRhYWExYTNjZS4uNTJiMjgxNmM3YSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3Zlcnkv bWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDMx X3JlY292ZXJ5X2NvbmZsaWN0LnBsJywKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9yZXVz ZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCisgICAgICAndC8w MzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsJywKICAgICBdLAogICB9LAogfQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29k aW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29k aW5nLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQxNzA0OWI3 ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5 X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTAsMCArMSw2MDggQEAKKyMgbG9naWNhbCBkZWNv ZGluZyBvbiBzdGFuZGJ5IDogdGVzdCBsb2dpY2FsIGRlY29kaW5nLAorIyByZWNvdmVyeSBj b25mbGljdCBhbmQgc3RhbmRieSBwcm9tb3Rpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNTY7CisKK215ICgk c3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRyZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkg JG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFy eScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3RhbmRieScpOworbXkgJGRlZmF1bHRfdGltZW91dCA9ICRQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OworCisjIE5hbWUgZm9yIHRoZSBwaHlzaWNhbCBz bG90IG9uIHByaW1hcnkKK215ICRwcmltYXJ5X3Nsb3RuYW1lID0gJ3ByaW1hcnlfcGh5c2lj YWwnOworCisjIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2RlIGFmdGVyICRvZmYtdGgg Ynl0ZQorc3ViIGZpbmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAkcGF0LCAkb2ZmKSA9IEBf OworCisJJG9mZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlteSAkbG9nID0gUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxvZ2ZpbGUpOworCXJldHVy biAwIGlmIChsZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9nID0gc3Vic3RyKCRsb2cs ICRvZmYpOworCisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30KKworIyBGZXRjaCB4bWlu IGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xvdHMgcm93LCBhZnRlciB3 YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0byBiZSB0cnVlIHRvIGVu c3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgorc3ViIHdhaXRfZm9yX3ht aW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19leHByKSA9IEBfOworCisJ JG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1Qg JGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJ CVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9yIGRpZSAiVGltZWQgb3V0 IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9CisKKyMgQ3JlYXRlIHRo ZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitzdWIgY3JlYXRlX2xvZ2lj YWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0 YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2luYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKKwkkbm9k ZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFy eSwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgRHJvcCB0aGUgbG9naWNhbCBz bG90cyBvbiBzdGFuZGJ5Lgorc3ViIGRyb3BfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0 YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9z bG90KCdpbmFjdGl2ZXNsb3QnKV0pOworCSRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVz JywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsK K30KKworIyBBY3F1aXJlIG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0 ZWQgYnkgY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUg d2UgYXJlIHdhaXRpbmcgZm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBz bG90LgorIyBJZiB3YWl0IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEg a25vd24gZmFpbHVyZSBzY2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkg JHdhaXQgPSBzaGlmdDsKKwlteSAkc2xvdF91c2VyX2hhbmRsZTsKKworCSRzbG90X3VzZXJf aGFuZGxlID0gSVBDOjpSdW46OnN0YXJ0KFsncGdfcmVjdmxvZ2ljYWwnLCAnLWQnLCAkbm9k ZV9zdGFuZGJ5LT5jb25uc3RyKCd0ZXN0ZGInKSwgJy1TJywgJ2FjdGl2ZXNsb3QnLCAnLW8n LCAnaW5jbHVkZS14aWRzPTAnLCAnLW8nLCAnc2tpcC1lbXB0eS14YWN0cz0xJywgJy0tbm8t bG9vcCcsICctLXN0YXJ0JywgJy1mJywgJy0nXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRz dGRlcnIpOworCisJaWYgKCR3YWl0KQorCXsKKwkJIyBtYWtlIHN1cmUgYWN0aXZlc2xvdCBp cyBpbiB1c2UKKwkJJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywK KwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3Rz IFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1Qg TlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKwly ZXR1cm4gJHNsb3RfdXNlcl9oYW5kbGU7Cit9CisKKyMgQ2hlY2sgcGdfcmVjdmxvZ2ljYWwg c3RkZXJyCitzdWIgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyCit7CisJbXkgKCRzbG90 X3VzZXJfaGFuZGxlLCAkY2hlY2tfc3RkZXJyKSA9IEBfOworCW15ICRyZXR1cm47CisKKwkj IG91ciBjbGllbnQgc2hvdWxkJ3ZlIHRlcm1pbmF0ZWQgaW4gcmVzcG9uc2UgdG8gdGhlIHdh bHNlbmRlciBlcnJvcgorCSRzbG90X3VzZXJfaGFuZGxlLT5maW5pc2g7CisJJHJldHVybiA9 ICQ/OworCWNtcF9vaygkcmV0dXJuLCAiIT0iLCAwLCAicGdfcmVjdmxvZ2ljYWwgZXhpdGVk IG5vbi16ZXJvIik7CisJaWYgKCRyZXR1cm4pIHsKKwkJbGlrZSgkc3RkZXJyLCBxci8kY2hl Y2tfc3RkZXJyLywgJ3Nsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQnKTsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworIyBDaGVjayBpZiBhbGwgdGhlIHNsb3RzIG9uIHN0YW5kYnkgYXJlIGRy b3BwZWQuIFRoZXNlIGluY2x1ZGUgdGhlICdhY3RpdmVzbG90JworIyB0aGF0IHdhcyBhY3F1 aXJlZCBieSBtYWtlX3Nsb3RfYWN0aXZlKCksIGFuZCB0aGUgbm9uLWFjdGl2ZSAnaW5hY3Rp dmVzbG90Jy4KK3N1YiBjaGVja19zbG90c19kcm9wcGVkCit7CisJbXkgKCRzbG90X3VzZXJf aGFuZGxlKSA9IEBfOworCisJaXMoJG5vZGVfc3RhbmRieS0+c2xvdCgnaW5hY3RpdmVzbG90 JyktPnsnc2xvdF90eXBlJ30sICcnLCAnaW5hY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBl ZCcpOworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2FjdGl2ZXNsb3QnKS0+eydzbG90X3R5 cGUnfSwgJycsICdhY3RpdmVzbG90IG9uIHN0YW5kYnkgZHJvcHBlZCcpOworCisJY2hlY2tf cGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRzbG90X3VzZXJfaGFuZGxlLCAiY29uZmxpY3Qgd2l0 aCByZWNvdmVyeSIpOworfQorCisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMgb24gc3RhbmRi eSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3QnCisjIHRoYXQg d2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBub24tYWN0aXZl ICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRf d2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJGhzZiwgJGludmFsaWRhdGVkKSA9IEBfOworCisJ JG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscXFbCisJaG90 X3N0YW5kYnlfZmVlZGJhY2sgPSAkaHNmCisJXSk7CisKKwkkbm9kZV9zdGFuZGJ5LT5yZWxv YWQ7CisKKwlpZiAoJGhzZiAmJiAkaW52YWxpZGF0ZWQpCisJeworCQkjIFdpdGggaG90X3N0 YW5kYnlfZmVlZGJhY2sgb24sIHhtaW4gc2hvdWxkIGFkdmFuY2UsCisJCSMgYnV0IGNhdGFs b2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9n aWNhbCBzbG90LgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9z bG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMg TlVMTCIpOworCX0KKwllbHNpZiAoJGhzZikKKwl7CisJCSMgV2l0aCBob3Rfc3RhbmRieV9m ZWVkYmFjayBvbiwgeG1pbiBhbmQgY2F0YWxvZ194bWluIHNob3VsZCBhZHZhbmNlLgorCQl3 YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAg ICJ4bWluIElTIE5PVCBOVUxMIEFORCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEwiKTsKKwl9 CisJZWxzZQorCXsKKwkJIyBCb3RoIHNob3VsZCBiZSBOVUxMIHNpbmNlIGhzX2ZlZWRiYWNr IGlzIG9mZgorCQl3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90 bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7 CisKKwl9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHBy aW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1hcnkt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5v ZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2 ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2Vu ZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJv c2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOworJG5vZGVf cHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywgcVtD UkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgn dGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRp b25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdi MSc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5v ZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNf cmVzdG9yaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJcXFbcHJpbWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUn XSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB0aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkK KyMgYmVoYXZlcyBjb3JyZWN0bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0 ZGInLCBxcVtDUkVBVEUgVEFCTEUgZGVjb2RpbmdfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7 XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0lOU0VSVCBJTlRP IGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBzO10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRu b2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOwor CitteSAkcmVzdWx0ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFx W1NFTEVDVCBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxM LCBOVUxMKTtdKTsKKworIyB0ZXN0IGlmIGJhc2ljIGRlY29kaW5nIHdvcmtzCitpcyhzY2Fs YXIobXkgQGZvb2JhciA9IHNwbGl0IC9eL20sICRyZXN1bHQpLAorCTE0LCAnRGVjb2Rpbmcg cHJvZHVjZWQgMTQgcm93cyAoMiBCRUdJTi9DT01NSVQgYW5kIDEwIHJvd3MpJyk7CisKKyMg SW5zZXJ0IHNvbWUgcm93cyBhbmQgdmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3Vs dHMgZnJvbSBwZ19yZWN2bG9naWNhbAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCiskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2Rp bmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs NCkgcztdCispOworCitteSAkZXhwZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVj b2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1 YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwor dGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4 dF06JzMnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJd OjQgeVt0ZXh0XTonNCcKK0NPTU1JVH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7CisKK215ICRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdz a2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVj dGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uJyk7 CisKK215ICRlbmRwb3MgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJ IlNFTEVDVCBsc24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVz bG90JywgTlVMTCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOworCisj IEluc2VydCBzb21lIHJvd3MgYWZ0ZXIgJGVuZHBvcywgd2hpY2ggd2Ugd29uJ3QgcmVhZC4K KyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBk ZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNSw1MCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRu b2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOwor CitteSAkc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2bG9naWNhbF91cHRv KAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsICRkZWZhdWx0X3RpbWVv dXQsCisgICAgJ2luY2x1ZGUteGlkcycgICAgID0+ICcwJywKKyAgICAnc2tpcC1lbXB0eS14 YWN0cycgPT4gJzEnKTsKK2Nob21wKCRzdGRvdXRfcmVjdik7Citpcygkc3Rkb3V0X3JlY3Ys ICRleHBlY3RlZCwKKyAgICAnZ290IHNhbWUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gcGdfcmVj dmxvZ2ljYWwgZGVjb2Rpbmcgc2Vzc2lvbicpOworCiskbm9kZV9zdGFuZGJ5LT5wb2xsX3F1 ZXJ5X3VudGlsKCd0ZXN0ZGInLAorCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBn X3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVzbG90JyBBTkQg YWN0aXZlX3BpZCBJUyBOVUxMKSIKKykgb3IgZGllICJzbG90IG5ldmVyIGJlY2FtZSBpbmFj dGl2ZSI7CisKKyRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5kYnktPnBnX3JlY3Zsb2dpY2Fs X3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90JywgJGVuZHBvcywgJGRlZmF1bHRf dGltZW91dCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVt cHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRf cmVjdiwgJycsICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQgY2hhbmdlcycpOworCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFTRSBv dGhlcmRiJyk7CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAorICAgICAgICAnb3RoZXJk YicsCisgICAgICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlU IDE7IgorICAgICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxvZ2ljYWwgc2xvdCBmcm9t IGFub3RoZXIgZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3Rz Citkcm9wX2xvZ2ljYWxfc2xvdHMoKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRh dGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMTogaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBjcmVh dGUgdGhlIGxvZ2ljYWwgc2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25l IHdheSB0byBwcm9kdWNlIHJlY292ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEg cmVsYXRpb24gYW5kCisjIGxhdW5jaCBhIHZhY3V1bSBmdWxsIG9uIHBnX2NsYXNzIHdpdGgg aG90X3N0YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbgorIyB0aGUgc3RhbmRieS4KK2No YW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMCwxKTsKKwor JGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dl ciB0aGUgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFb Q1JFQVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5v ZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZsaWN0 X3Rlc3Q7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0g ZnVsbCBwZ19jbGFzczsnKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgk bm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsK KworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJl Y2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiKSwKKyAgJ2luYWN0aXZlc2xvdCBz bG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgd2l0aCB2YWN1dW0gRlVMTCBvbiBwZ19jbGFz cycpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxp ZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQg d2l0aCB2YWN1dW0gRlVMTCBvbiBwZ19jbGFzcycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0 YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVl biB1cGRhdGVkCitvayggJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9z dGdyZXMnLAorCSJzZWxlY3QgKGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDEpIGZyb20g cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwg J3QnKSwKKwknY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVk IjsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7CisjIFdlIGFyZSBub3QgYWJs ZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2No ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBs b2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyBUdXJuIGhv dF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFj a19hbmRfd2FpdF9mb3JfeG1pbnMoMSwxKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFs aWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2Nl bmFyaW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1vdmFsIHdpdGggaG90X3N0YW5kYnlf ZmVlZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRo ZSBzdGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnktPmxv Z2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworZHJvcF9sb2dpY2FsX3Nsb3Rz KCk7CisKKyMgY3JlYXRlIHRoZSBsb2dpY2FsIHNsb3RzCitjcmVhdGVfbG9naWNhbF9zbG90 cygpOworCisjIE9uZSB3YXkgdG8gcHJvZHVjZSByZWNvdmVyeSBjb25mbGljdCBpcyB0byBj cmVhdGUvZHJvcCBhIHJlbGF0aW9uIGFuZAorIyBsYXVuY2ggYSB2YWN1dW0gb24gcGdfY2xh c3Mgd2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBzdGFuZGJ5 LgorY2hhbmdlX2hvdF9zdGFuZGJ5X2ZlZWRiYWNrX2FuZF93YWl0X2Zvcl94bWlucygwLDEp OworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgxKTsKKworIyBUaGlzIHNob3VsZCB0 cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGIn LCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4IGludGVnZXIsIHkgdGV4dCk7XSk7 Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0RST1AgVEFCTEUgY29u ZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgJ1ZB Q1VVTSBwZ19jbGFzczsnKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgk bm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsK KworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29rKCBmaW5kX2luX2xvZygKKyAgICRu b2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImluYWN0aXZlc2xvdFwiIGJl Y2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnaW5h Y3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBw Z19jbGFzcycpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAi aW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMg d2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxp ZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBwZ19jbGFzcycpOworCisjIFZlcmlm eSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fs c2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMiBjb25mbGljdHMgcmVw b3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcworb2soICRub2Rl X3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChj b25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAyKSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2 ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25m bF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRoYW5kbGUgPSBtYWtl X3Nsb3RfYWN0aXZlKDApOworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhl IHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2Fs X3N0ZGVycigkaGFuZGxlLCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9u IHNsb3QgXCJhY3RpdmVzbG90XCIiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IFNhbWUgYXMg U2NlbmFyaW8gMiBidXQgb24gYSBub24gY2F0YWxvZyB0YWJsZQorIyBTY2VuYXJpbyAzOiBO byBjb25mbGljdCBleHBlY3RlZC4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJv bSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5 LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9z bG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxf c2xvdHMoKTsKKworIyBwdXQgaG90IHN0YW5kYnkgZmVlZGJhY2sgdG8gb2ZmCitjaGFuZ2Vf aG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAsMSk7CisKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2Vy IGEgY29uZmxpY3QKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JF QVRFIFRBQkxFIGNvbmZsaWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVf cHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtJTlNFUlQgSU5UTyBjb25mbGljdF90 ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBz O10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtVUERBVEUgY29u ZmxpY3RfdGVzdCBzZXQgeD0xLCB5PTE7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsICdWQUNVVU0gY29uZmxpY3RfdGVzdDsnKTsKKworJG5vZGVfcHJpbWFyeS0+ d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFy eS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBub3QgYmUgaXNzdWVkCitv ayggIWZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMg bm90IGxvZ2dlZCB3aXRoIHZhY3V1bSBvbiBjb25mbGljdF90ZXN0Jyk7CisKK29rKCAhZmlu ZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJh Y3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dz dGFydCksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIG5vdCBsb2dnZWQg d2l0aCB2YWN1dW0gb24gY29uZmxpY3RfdGVzdCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0 YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgbm90 IGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgc3RpbGwgZXhwZWN0IDIgY29uZmxpY3RzIHJlcG9y dGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlbG9hZHMKK29rKCAkbm9kZV9z dGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29u ZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMikgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZs aWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVf bG9naWNhbHNsb3Qgbm90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKKworIyBUdXJuIGhvdF9z dGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5nZV9ob3Rfc3RhbmRieV9mZWVkYmFja19h bmRfd2FpdF9mb3JfeG1pbnMoMSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJlY292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlk YXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRpbmcgaW4tdXNlIHNsb3RzCisjIFNjZW5h cmlvIDQ6IGNvbmZsaWN0IGR1ZSB0byBvbi1hY2Nlc3MgcHJ1bmluZy4KKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZ2V0IHRoZSBw b3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3RhbmRieSBsb2dmaWxlCiskbG9nc3Rh cnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOworCisjIGRyb3AgdGhlIGxvZ2ljYWwg c2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBz bG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2Ug cmVjb3ZlcnkgY29uZmxpY3QgaXMgdG8gdHJpZ2dlciBhbiBvbi1hY2Nlc3MgcHJ1bmluZwor IyBvbiBhIHJlbGF0aW9uIG1hcmtlZCBhcyB1c2VyX2NhdGFsb2dfdGFibGUuCitjaGFuZ2Vf aG90X3N0YW5kYnlfZmVlZGJhY2tfYW5kX3dhaXRfZm9yX3htaW5zKDAsMCk7CisKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhl IGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFU RSBUQUJMRSBwcnVuKGlkIGludGVnZXIsIHMgY2hhcigyMDAwKSkgV0lUSCAoZmlsbGZhY3Rv ciA9IDc1LCB1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKTtdKTsKKyRub2RlX3ByaW1hcnkt PnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gcHJ1biBWQUxVRVMgKDEsICdB Jyk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBw cnVuIFNFVCBzID0gJ0InO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGIn LCBxcVtVUERBVEUgcHJ1biBTRVQgcyA9ICdDJztdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgcXFbVVBEQVRFIHBydW4gU0VUIHMgPSAnRCc7XSk7Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW1VQREFURSBwcnVuIFNFVCBzID0gJ0Un O10pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnks ICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ug c2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwK KyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xv dCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIHdpdGggb24tYWNjZXNzIHBydW5pbmcnKTsKKwor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dn ZWQgd2l0aCBvbi1hY2Nlc3MgcHJ1bmluZycpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRf ZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1 cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNv dW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcworb2soICRub2RlX3N0YW5kYnktPnBvbGxf cXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgPSAzKSBmcm9tIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRh dG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1 cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNh bHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDAp OworCisjIFdlIGFyZSBub3QgYWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFz IGJlZW4gaW52YWxpZGF0ZWQKK2NoZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxl LCAiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVz bG90XCIiKTsKKworIyBUdXJuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGJhY2sgb24KK2NoYW5n ZV9ob3Rfc3RhbmRieV9mZWVkYmFja19hbmRfd2FpdF9mb3JfeG1pbnMoMSwgMSk7CisKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJl Y292ZXJ5IGNvbmZsaWN0OiBJbnZhbGlkYXRlIGNvbmZsaWN0aW5nIHNsb3RzLCBpbmNsdWRp bmcgaW4tdXNlIHNsb3RzCisjIFNjZW5hcmlvIDU6IGluY29ycmVjdCB3YWxfbGV2ZWwgb24g cHJpbWFyeS4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisKKyMgZ2V0IHRoZSBwb3NpdGlvbiB0byBzZWFyY2ggZnJvbSBpbiB0aGUgc3Rh bmRieSBsb2dmaWxlCiskbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwor CisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ryb3BfbG9naWNhbF9zbG90cygpOworCisj IGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKwor JGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgTWFrZSBwcmltYXJ5IHdhbF9s ZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0LgorJG5vZGVf cHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9 ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9kZV9wcmlt YXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9w cmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAor b2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBz bG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVy eSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMg bG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZl c2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZlbCcpOwor CisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2 ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25m bGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVsb2Fkcwor b2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywKKwki c2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSA0KSBmcm9tIHBnX3N0YXRfZGF0 YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJJ2Nv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQgd2Fp dGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRoYW5k bGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVhZCBm cm9tIHRoZSBzbG90IGFzIGl0IHJlcXVpcmVzIHdhbF9sZXZlbCBhdCBsZWFzdCBsb2dpY2Fs IG9uIG1hc3RlcgorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJsb2dp Y2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxl YXN0IGxvZ2ljYWwgb24gbWFzdGVyIik7CisKKyMgUmVzdG9yZSBwcmltYXJ5IHdhbF9sZXZl bAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dh bF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworJG5v ZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5Jywg JG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9h Y3RpdmUoMCk7CisjIGFzIHRoZSBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIHdlIHNob3Vs ZCBub3QgYmUgYWJsZSB0byByZWFkCitjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhh bmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0 aXZlc2xvdFwiIik7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIERST1AgREFUQUJBU0Ugc2hvdWxkIGRyb3BzIGl0J3Mgc2xvdHMs IGluY2x1ZGluZyBhY3RpdmUgc2xvdHMuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGRyb3AgdGhlIGxvZ2ljYWwgc2xvdHMKK2Ry b3BfbG9naWNhbF9zbG90cygpOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3Jl YXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7 CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFzZSB0aGF0IHdvdWxkIG5vdCBiZSBkcm9w cGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBnZXQgZHJvcHBlZC4KKyRub2RlX3N0YW5k YnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5LCAnb3Ro ZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRiIG9uIHRoZSBwcmltYXJ5IHRvIHZl cmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5Ciskbm9kZV9wcmltYXJ5LT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFCQVNFIHRlc3RkYl0pOworCiskbm9kZV9w cmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9k ZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitpcygkbm9kZV9zdGFuZGJ5LT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19kYXRh YmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicpXSksICdmJywKKwknZGF0YWJhc2UgZHJv cHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Nsb3RzX2Ryb3BwZWQoJGhhbmRsZSk7CisK K2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVyc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAn bG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFuZGJ5IG5vdCBkcm9wcGVkJyk7CisKKyMg Q2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNsb3QgdGhhdCB3YXMgbm90IGRyb3BwZWQu Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVw bGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCBzdGFuZGJ5IHByb21vdGlv biBhbmQgbG9naWNhbCBkZWNvZGluZyBiZWhhdmlvcgorIyBhZnRlciB0aGUgc3RhbmRieSBn ZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLCBxW0NSRUFU RSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRi JywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10p OworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cworY3JlYXRlX2xvZ2ljYWxfc2xvdHMo KTsKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIEluc2VydCBzb21lIHJv d3MgYmVmb3JlIHRoZSBwcm9tb3Rpb24KKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVz dGRiJywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGluZ190ZXN0KHgseSkgU0VMRUNUIHMsIHM6 OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSw0KSBzO10KKyk7CisKKyRub2RlX3ByaW1h cnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3By aW1hcnktPmxzbignZmx1c2gnKSk7CisKKyMgcHJvbW90ZQorJG5vZGVfc3RhbmRieS0+cHJv bW90ZTsKKworIyBpbnNlcnQgc29tZSByb3dzIG9uIHByb21vdGVkIHN0YW5kYnkKKyRub2Rl X3N0YW5kYnktPnNhZmVfcHNxbCgndGVzdGRiJywKKwlxcVtJTlNFUlQgSU5UTyBkZWNvZGlu Z190ZXN0KHgseSkgU0VMRUNUIHMsIHM6OnRleHQgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSw3 KSBzO10KKyk7CisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGlu Z190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGlj LmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJs ZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTon MycKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5 W3RleHRdOic0JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6 IElOU0VSVDogeFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2Rp bmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1Ymxp Yy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09N TUlUfTsKKworIyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJv bW90aW9uIGluc2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X3BlZWtfY2hhbmdlcygnaW5hY3RpdmVzbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlk cycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScpO10KKyk7CisKK2lzKCRzdGRvdXRf c3FsLCAkZXhwZWN0ZWQsICdnb3QgZXhwZWN0ZWQgb3V0cHV0IGZyb20gU1FMIGRlY29kaW5n IHNlc3Npb24gb24gcHJvbW90ZWQgc3RhbmRieScpOworCisjIGNoZWNrIHRoYXQgd2UgYXJl IGRlY29kaW5nIHByZSBhbmQgcG9zdCBwcm9tb3Rpb24gaW5zZXJ0ZWQgcm93cworIyB3aXRo IHBnX3JlY3Zsb2dpY2FsIHRoYXQgaGFzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcm9tb3Rpb24K K215ICRwdW1wX3RpbWVvdXQgPSBJUEM6OlJ1bjo6dGltZXIoJFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCitvayggcHVtcF91bnRpbCgKKyAgICAgICAg JGhhbmRsZSwgJHB1bXBfdGltZW91dCwgXCRzdGRvdXQsIHFyL14uKkNPTU1JVC4qQ09NTUlU JC9zKSwKKyAgICAnZ290IDIgQ09NTUlUIGZyb20gcGdfcmVjdmxvZ2ljYWwgb3V0cHV0Jyk7 CisKK2Nob21wKCRzdGRvdXQpOworaXMoJHN0ZG91dCwgJGV4cGVjdGVkLAorICAgICdnb3Qg c2FtZSBleHBlY3RlZCBvdXRwdXQgZnJvbSBwZ19yZWN2bG9naWNhbCBkZWNvZGluZyBzZXNz aW9uJyk7Ci0tIAoyLjM0LjEKCg== --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; name="v43-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v43-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlMGZiYzNhZGZjODlmN2M0MzA2NmI5Y2IxM2E5OWJlYzI0MDIwNmY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCAyNSBKYW4gMjAyMyAxNzoyMTo0MyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQzIDQvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg 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== --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; name="v43-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v43-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA2ZTg0YzM2NjA2ZWQ4ZmNlOGQ1ZTM5ZTA2NmQ0ODY3MjgyMTJmNmI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCAyNSBKYW4gMjAyMyAxNzoyMDo0NyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQzIDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgMjIgKysrKysrKystCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA1NyArKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAg ICAgfCA0MSArKysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAg ICAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTExIGluc2VydGlvbnMo KyksIDU4IGRlbGV0aW9ucygtKQogICA0LjglIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft LwogIDM4LjQlIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvCiAgNTUuOCUgc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmlu ZGV4IGEwNzFmYzY4NzEuLmYxNGUxNzU1YjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9nLmMKQEAgLTQ0NjUsNiArNDQ2NSwxNyBAQCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShi b29sIHJlc2V0KQogCVJlYWRDb250cm9sRmlsZSgpOwogfQogCisvKgorICogR2V0IHRoZSB3 YWxfbGV2ZWwgZnJvbSB0aGUgY29udHJvbCBmaWxlLiBGb3IgYSBzdGFuZGJ5LCB0aGlzIHZh bHVlIHNob3VsZCBiZQorICogY29uc2lkZXJlZCBhcyBpdHMgYWN0aXZlIHdhbF9sZXZlbCwg YmVjYXVzZSBpdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gd2hhdAorICogd2FzIG9yaWdpbmFs bHkgY29uZmlndXJlZCBvbiBzdGFuZGJ5LgorICovCitXYWxMZXZlbAorR2V0QWN0aXZlV2Fs TGV2ZWxPblN0YW5kYnkodm9pZCkKK3sKKwlyZXR1cm4gQ29udHJvbEZpbGUtPndhbF9sZXZl bDsKK30KKwogLyoKICAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhM T0cKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5k ZXggYTUzZTIzYzY3OS4uYzFlNDNkZDJiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCkBAIC0xNTIsMTEgKzE1MiwzMSBAQCB4bG9nX2RlY29kZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ CSAqIGNhbiByZXN0YXJ0IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNl IFhMT0dfUEFSQU1FVEVSX0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1ldGVyX2NoYW5nZSAq eGxyZWMgPQorCQkJCSh4bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dSZWNHZXREYXRhKGJ1 Zi0+cmVjb3JkKTsKKworCQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlz IHJlZHVjZWQgdG8gbGVzcyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJCSAqIHdhbnQgdG8g cHJldmVudCBleGlzdGluZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcgdXNlZC4KKwkJCSAq IEV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieSBnZXQgaW52YWxpZGF0ZWQgd2hl biB0aGlzIFdBTAorCQkJICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVydGhlciwgc2xv dCBjcmVhdGlvbiBmYWlscyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlzIG5vdCBzdWZm aWNpZW50OyBidXQgYWxsIHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJICogc3luY2hy b25pemVkLCBzbyBhIGxvZ2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUgdGhlIHdhbF9s ZXZlbAorCQkJICogaXMgYmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRyYSBjaGVjay4K KwkJCSAqLworCQkJaWYgKHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgIgorCQkJCQkJCQkid2FsX2xldmVsIHRvIGJlIGF0 IGxlYXN0IGxvZ2ljYWwgb24gbWFzdGVyIikpKTsKKwkJCWJyZWFrOworCQl9CiAJCWNhc2Ug WExPR19OT09QOgogCQljYXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBYTE9HX1NXSVRDSDoK IAkJY2FzZSBYTE9HX0JBQ0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdF OgogCQljYXNlIFhMT0dfUkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9HX0ZQV19DSEFOR0U6 CiAJCWNhc2UgWExPR19GUElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDFhNThkZDc2NDkuLjkzYTRmY2YxNWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0xMTksMjMg KzExOSwyMiBAQCBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cyh2b2lkKQogCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAog CQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBkYXRhYmFzZSBjb25u ZWN0aW9uIikpKTsKIAotCS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3QgdG8gY2hhbmdlIHRo YXQgc29tZWRheSBzb29uLi4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2ljYWxseSB0aHJlZSB0 aGluZ3MgbWlzc2luZyB0byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5lZWQgdG8gYmUgYWJs ZSB0byBjb3JyZWN0bHkgYW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRpbWVsaW5lIGEKLQkg KgkgIExTTiBiZWxvbmdzIHRvCi0JICogMikgV2UgbmVlZCB0byBmb3JjZSBob3Rfc3RhbmRi eV9mZWVkYmFjayB0byBiZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwotCSAqCSAgdGhlIHBy aW1hcnkgY2Fubm90IHJlbW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykgc3VwcG9ydCBkcm9w cGluZyByZXBsaWNhdGlvbiBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRhYmFzZSwgaW4KLQkg KgkgIGRiYXNlX3JlZG8uIFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUgb25lcyBkdWUgdG8g SFMgcmVjb3ZlcnkKLQkgKgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91bGQgYmUgcmVsYXRp dmVseSBlYXN5LgotCSAqIC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkp Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAotCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgY2Fubm90IGJlIHVz ZWQgd2hpbGUgaW4gcmVjb3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICogVGhpcyBjaGVjayBt YXkgaGF2ZSByYWNlIGNvbmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkgKiBYTE9HX1BBUkFN RVRFUl9DSEFOR0UgaW5kaWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBjaGFuZ2VkLCB3ZQor CQkgKiB2ZXJpZnkgdGhhdCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9naWNhbCByZXBsaWNh dGlvbiBzbG90cy4gQW5kIHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3VuZCBjcmVhdGluZyBh IG5ldyBzbG90LAorCQkgKiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpIGlz IGNhbGxlZCBvbmNlIGJlZm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xvdCwgYW5kIG9uY2Ug d2hlbiBsb2dpY2FsIGRlY29kaW5nIGlzIGluaXRpYWxseSBzdGFydGluZyB1cC4KKwkJICov CisJCWlmIChHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FMX0xFVkVMX0xPR0lD QUwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCBkZWNv ZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzICIKKwkJCQkJCQkid2FsX2xldmVsIHRvIGJlIGF0 IGxlYXN0IGxvZ2ljYWwgb24gbWFzdGVyIikpKTsKKwl9CiB9CiAKIC8qCkBAIC0zMzEsNiAr MzMwLDEyIEBAIENyZWF0ZUluaXREZWNvZGluZ0NvbnRleHQoY29uc3QgY2hhciAqcGx1Z2lu LAogCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9j b250ZXh0OwogCisJLyoKKwkgKiBPbiBzdGFuZGJ5LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVx dWlyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHNsb3QuIENoZWNrCisJICogdGhlIGNvbW1lbnRz IGluIHRoaXMgZnVuY3Rpb24uCisJICovCisJQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJl bWVudHMoKTsKKwogCS8qIHNob3J0ZXIgbGluZXMuLi4gKi8KIAlzbG90ID0gTXlSZXBsaWNh dGlvblNsb3Q7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCA3YWM2YmZlMDU5Li4w OTVhN2E3YmU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC01MSw2ICs1MSw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJy YXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgImFjY2Vzcy94 bG9ncmVjb3ZlcnkuaCIKIAogLyoKICAqIFJlcGxpY2F0aW9uIHNsb3Qgb24tZGlzayBkYXRh IHN0cnVjdHVyZS4KQEAgLTExNzcsMzcgKzExNzgsMjggQEAgUmVwbGljYXRpb25TbG90UmVz ZXJ2ZVdhbCh2b2lkKQogCQkvKgogCQkgKiBGb3IgbG9naWNhbCBzbG90cyBsb2cgYSBzdGFu ZGJ5IHNuYXBzaG90IGFuZCBzdGFydCBsb2dpY2FsIGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0 bHkgdGhhdCBwb3NpdGlvbi4gVGhhdCBhbGxvd3MgdGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9y ZQotCQkgKiBxdWlja2x5LgorCQkgKiBxdWlja2x5LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNh bm5vdCBkbyBXQUwgd3JpdGVzLCBzbyBqdXN0IHVzZSB0aGUKKwkJICogcmVwbGF5IHBvaW50 ZXI7IGVmZmVjdGl2ZWx5LCBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBv bgorCQkgKiBzdGFuZGJ5IHdpbGwgY2F1c2UgaXQgdG8gd2FpdCBmb3IgYW4geGxfcnVubmlu Z194YWN0IHJlY29yZCB0byBiZQorCQkgKiBsb2dnZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUg cHJpbWFyeSwgc28gdGhhdCBhIHNuYXBzaG90IGNhbiBiZSBidWlsdAorCQkgKiB1c2luZyB0 aGUgcmVjb3JkLgogCQkgKgotCQkgKiBUaGF0J3Mgbm90IG5lZWRlZCAob3IgaW5kZWVkIGhl bHBmdWwpIGZvciBwaHlzaWNhbCBzbG90cyBhcyB0aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxh eSBhdCB0aGUgbGFzdCBsb2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQgcmV0dXJu Ci0JCSAqIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBz bGlnaHRseSBpbmNyZWFzZXMKLQkJICogdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0 cnksIGl0J3Mgd2hlcmUgYSBiYXNlIGJhY2t1cCBoYXMgdG8KLQkJICogc3RhcnQgcmVwbGF5 IGF0LgorCQkgKiBOb25lIG9mIHRoaXMgaXMgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkg Zm9yIHBoeXNpY2FsIHNsb3RzIGFzCisJCSAqIHRoZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRo ZSBsYXN0IGxvZ2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZAorCQkgKiByZXR1cm4g dGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5 CisJCSAqIGluY3JlYXNlcyB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQn cyB3aGVyZSBhIGJhc2UgYmFja3VwCisJCSAqIGhhcyB0byBzdGFydCByZXBsYXkgYXQuCiAJ CSAqLwotCQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xv dCkpCi0JCXsKLQkJCVhMb2dSZWNQdHIJZmx1c2hwdHI7Ci0KLQkJCS8qIHN0YXJ0IGF0IGN1 cnJlbnQgaW5zZXJ0IHBvc2l0aW9uICovCisJCWlmIChTbG90SXNQaHlzaWNhbChzbG90KSkK KwkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOworCQllbHNlIGlmIChSZWNvdmVy eUluUHJvZ3Jlc3MoKSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ1JlcGxheVJlY1B0cihO VUxMKTsKKwkJZWxzZQogCQkJcmVzdGFydF9sc24gPSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7 Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVz dGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0 ZXgpOwotCi0JCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8g c3RhcnQgKi8KLQkJCWZsdXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7CiAKLQkJCS8q IGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2VkIHRvIGRpc2sgKi8KLQkJCVhMb2dGbHVzaChm bHVzaHB0cik7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQlyZXN0YXJ0X2xzbiA9IEdldFJlZG9S ZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwotCQkJc2xvdC0+ ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3BpbkxvY2tSZWxlYXNlKCZz bG90LT5tdXRleCk7Ci0JCX0KKwkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7CisJ CXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKKwkJU3BpbkxvY2tSZWxl YXNlKCZzbG90LT5tdXRleCk7CiAKIAkJLyogcHJldmVudCBXQUwgcmVtb3ZhbCBhcyBmYXN0 IGFzIHBvc3NpYmxlICovCiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04o KTsKQEAgLTEyMjMsNiArMTIxNSwxNyBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZv aWQpCiAJCWlmIChYTG9nR2V0TGFzdFJlbW92ZWRTZWdubygpIDwgc2Vnbm8pCiAJCQlicmVh azsKIAl9CisKKwlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpICYmIFNsb3RJc0xvZ2ljYWwo c2xvdCkpCisJeworCQlYTG9nUmVjUHRyCWZsdXNocHRyOworCisJCS8qIG1ha2Ugc3VyZSB3 ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzdGFydCAqLworCQlmbHVzaHB0ciA9IExv Z1N0YW5kYnlTbmFwc2hvdCgpOworCisJCS8qIGFuZCBtYWtlIHN1cmUgaXQncyBmc3luY2Vk IHRvIGRpc2sgKi8KKwkJWExvZ0ZsdXNoKGZsdXNocHRyKTsKKwl9CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4IDg4ODVjZGVlYmMuLjFlOTFjYmM1 NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC05MDYsMjMgKzkw NiwzMSBAQCBsb2dpY2FsX3JlYWRfeGxvZ19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUs IFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcQogCWludAkJCWNvdW50OwogCVdB TFJlYWRFcnJvciBlcnJpbmZvOwogCVhMb2dTZWdObwlzZWdubzsKLQlUaW1lTGluZUlECWN1 cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1lTGluZSgpOworCVRpbWVMaW5lSUQJY3VyclRM STsKIAogCS8qCi0JICogU2luY2UgbG9naWNhbCBkZWNvZGluZyBpcyBvbmx5IHBlcm1pdHRl ZCBvbiBhIHByaW1hcnkgc2VydmVyLCB3ZSBrbm93Ci0JICogdGhhdCB0aGUgY3VycmVudCB0 aW1lbGluZSBJRCBjYW4ndCBiZSBjaGFuZ2luZyBhbnkgbW9yZS4gSWYgd2UgZGlkIHRoaXMK LQkgKiBvbiBhIHN0YW5kYnksIHdlJ2QgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGUgdmFsdWVz IHdlIGNvbXB1dGUgaGVyZQotCSAqIGJlY29taW5nIGludmFsaWQgZHVlIHRvIGEgcHJvbW90 aW9uIG9yIHRpbWVsaW5lIGNoYW5nZS4KKwkgKiBTaW5jZSBsb2dpY2FsIGRlY29kaW5nIGlz IGFsc28gcGVybWl0dGVkIG9uIGEgc3RhbmRieSBzZXJ2ZXIsIHdlIG5lZWQKKwkgKiB0byBj aGVjayBpZiB0aGUgc2VydmVyIGlzIGluIHJlY292ZXJ5IHRvIGRlY2lkZSBob3cgdG8gZ2V0 IHRoZSBjdXJyZW50CisJICogdGltZWxpbmUgSUQgKHNvIHRoYXQgaXQgYWxzbyBjb3ZlciB0 aGUgcHJvbW90aW9uIG9yIHRpbWVsaW5lIGNoYW5nZSBjYXNlcykuCiAJICovCisKKwkvKiBt YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggV0FMIGF2YWlsYWJsZSAqLworCWZsdXNocHRyID0g V2FsU25kV2FpdEZvcldhbCh0YXJnZXRQYWdlUHRyICsgcmVxTGVuKTsKKworCS8qIHRoZSBz dGFuZGJ5IGNvdWxkIGhhdmUgYmVlbiBwcm9tb3RlZCwgc28gY2hlY2sgaWYgc3RpbGwgaW4g cmVjb3ZlcnkgKi8KKwlhbV9jYXNjYWRpbmdfd2Fsc2VuZGVyID0gUmVjb3ZlcnlJblByb2dy ZXNzKCk7CisKKwlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlcikKKwkJR2V0WExvZ1JlcGxh eVJlY1B0cigmY3VyclRMSSk7CisJZWxzZQorCQljdXJyVExJID0gR2V0V0FMSW5zZXJ0aW9u VGltZUxpbmUoKTsKKwogCVhMb2dSZWFkRGV0ZXJtaW5lVGltZWxpbmUoc3RhdGUsIHRhcmdl dFBhZ2VQdHIsIHJlcUxlbiwgY3VyclRMSSk7CiAJc2VuZFRpbWVMaW5lSXNIaXN0b3JpYyA9 IChzdGF0ZS0+Y3VyclRMSSAhPSBjdXJyVExJKTsKIAlzZW5kVGltZUxpbmUgPSBzdGF0ZS0+ Y3VyclRMSTsKIAlzZW5kVGltZUxpbmVWYWxpZFVwdG8gPSBzdGF0ZS0+Y3VyclRMSVZhbGlk VW50aWw7CiAJc2VuZFRpbWVMaW5lTmV4dFRMSSA9IHN0YXRlLT5uZXh0VExJOwogCi0JLyog bWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIFdBTCBhdmFpbGFibGUgKi8KLQlmbHVzaHB0ciA9 IFdhbFNuZFdhaXRGb3JXYWwodGFyZ2V0UGFnZVB0ciArIHJlcUxlbik7Ci0KIAkvKiBmYWls IGlmIG5vdCAoaW1wbGllcyB3ZSBhcmUgZ29pbmcgdG8gc2h1dCBkb3duKSAqLwogCWlmIChm bHVzaHB0ciA8IHRhcmdldFBhZ2VQdHIgKyByZXFMZW4pCiAJCXJldHVybiAtMTsKQEAgLTkz Nyw3ICs5NDUsNyBAQCBsb2dpY2FsX3JlYWRfeGxvZ19wYWdlKFhMb2dSZWFkZXJTdGF0ZSAq c3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcQogCQkJCSBjdXJfcGFn ZSwKIAkJCQkgdGFyZ2V0UGFnZVB0ciwKIAkJCQkgWExPR19CTENLU1osCi0JCQkJIHN0YXRl LT5zZWcud3NfdGxpLCAvKiBQYXNzIHRoZSBjdXJyZW50IFRMSSBiZWNhdXNlIG9ubHkKKwkJ CQkgY3VyclRMSSwgCQkJLyogUGFzcyB0aGUgY3VycmVudCBUTEkgYmVjYXVzZSBvbmx5CiAJ CQkJCQkJCQkgKiBXYWxTbmRTZWdtZW50T3BlbiBjb250cm9scyB3aGV0aGVyIG5ldwogCQkJ CQkJCQkJICogVExJIGlzIG5lZWRlZC4gKi8KIAkJCQkgJmVycmluZm8pKQpAQCAtMzA3NCwx MCArMzA4MiwxNCBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJzdCB0aW1l IHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAgT3RoZXJ3 aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5kUmVjUHRy IGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVjUHRy KQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwotCWVsc2UgaWYgKGxvZ2lj YWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKLQkJZmx1 c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsKKwlpZiAoZmx1c2hQdHIgPT0gSW52YWxp ZFhMb2dSZWNQdHIgfHwKKwkJbG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVj UHRyID49IGZsdXNoUHRyKQorCXsKKwkJaWYgKGFtX2Nhc2NhZGluZ193YWxzZW5kZXIpCisJ CQlmbHVzaFB0ciA9IEdldFN0YW5kYnlGbHVzaFJlY1B0cihOVUxMKTsKKwkJZWxzZQorCQkJ Zmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQ dHIgaXMgc3RpbGwgcGFzdCBvdXIgZmx1c2hQdHIsIGl0IG1lYW5zIHdlIGNhdWdodCB1cC4g Ki8KIAlpZiAobG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZs dXNoUHRyKQpAQCAtMzE2OCw3ICszMTgwLDggQEAgR2V0U3RhbmRieUZsdXNoUmVjUHRyKFRp bWVMaW5lSUQgKnRsaSkKIAlyZWNlaXZlUHRyID0gR2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVM TCwgJnJlY2VpdmVUTEkpOwogCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJl cGxheVRMSSk7CiAKLQkqdGxpID0gcmVwbGF5VExJOworCWlmICh0bGkpCisJCSp0bGkgPSBy ZXBsYXlUTEk7CiAKIAlyZXN1bHQgPSByZXBsYXlQdHI7CiAJaWYgKHJlY2VpdmVUTEkgPT0g cmVwbGF5VExJICYmIHJlY2VpdmVQdHIgPiByZXBsYXlQdHIpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRl eCBjZmU1NDA5NzM4Li40OGNhODUyMzgxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MveGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTIzMCw2ICsy MzAsNyBAQCBleHRlcm4gdm9pZCBYTE9HU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQg Qm9vdFN0cmFwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVXYWxDb25zaXN0 ZW5jeUNoZWNraW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQgTG9jYWxQcm9jZXNzQ29udHJvbEZp bGUoYm9vbCByZXNldCk7CitleHRlcm4gV2FsTGV2ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0 YW5kYnkodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwWExPRyh2b2lkKTsKIGV4dGVybiB2 b2lkIFNodXRkb3duWExPRyhpbnQgY29kZSwgRGF0dW0gYXJnKTsKIGV4dGVybiB2b2lkIENy ZWF0ZUNoZWNrUG9pbnQoaW50IGZsYWdzKTsKLS0gCjIuMzQuMQoK --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; name="v43-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v43-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA0M2YyMjgyY2NmNjhjNTExMmIzNDYyYmViNjRkZGM2NDZjMzg4NmUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCAyNSBKYW4gMjAyMyAxNzoxNzo0NCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQzIDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBm aWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHhsb2cuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgMyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAxOTggKysrKysr KysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAg ICAgICAgICAgIHwgIDI0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2RhdGFiYXNlLmMgIHwgICA0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRi eS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCAgICAgICAgICAgfCAgIDMgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDI3NCBp bnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKICAgMy4zJSBkb2Mvc3JjL3NnbWwvCiAg IDguMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMSUgc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC8KICA1OC41JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8K ICAgNS4wJSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4wJSBzcmMvYmFja2VuZC90 Y29wLwogICA1LjMlIHNyYy9iYWNrZW5kLwogICAzLjQlIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uLwogICAzLjMlIHNyYy9pbmNsdWRlLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDE3 NTZmMWE0YjYuLmUyNWY3MWE3NzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDM2NSw2 ICs0MzY1LDE3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxv Y2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBz bG90cyBpbiB0aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0 ZWQgYmVjYXVzZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFj dGl2ZSBvbmVzCisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNy ZW1lbnQgdGhpcyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IDc0M2VlMzYzYzUuLjA0YTliNDAyNzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCiAJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lzdFJlZG9QYWdlUmV1 c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkK IAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKHhscmVjLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhscmVjLT5pc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDhjZWI5MTI4OC4uYjg1NjMwNDc0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDMsNiArMTAwMyw3 IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBO VUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dS ZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggZDQ3ODcyNGI5ZC4uZDY0ZmI0Y2M4NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKQEAgLTg4OTEsNiArODg5MSw3IEBAIGhlYXBfeGxvZ19wcnVuZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJ CXJsb2NhdG9yKTsKIAogCS8qCkBAIC05MDYwLDYgKzkwNjEsNyBAQCBoZWFwX3hsb2dfdmlz aWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJ VFlNQVBfSVNfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBA IC05MTc3LDYgKzkxNzksNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2UoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2Nh dG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+ aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDQxNGNhNGY2ZGUuLmM4N2U0NmVkNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNiArNjY5LDcgQEAg YnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVhMb2dSZWNH ZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAKIAkJUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQCBidHJlZV94bG9nX3Jl dXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoeGxyZWMt PnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxyZWMtPmlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiMDcxYjU5YzhhLi40NTlhYzkyOWJh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAtODc5LDYgKzg3OSw3 IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwgTlVMTCwgTlVMTCk7 CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAog CQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwppbmRleCBmYjRjODYwYmRlLi5hMDcxZmM2ODcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCkBAIC02NDQ3LDYgKzY0NDcsNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBm bGFncykKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CiAJaW50CQkJbnZ4aWRzOwog CWludAkJCW9sZFhMb2dBbGxvd2VkID0gMDsKKwlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNl OwogCiAJLyoKIAkgKiBBbiBlbmQtb2YtcmVjb3ZlcnkgY2hlY2twb2ludCBpcyByZWFsbHkg YSBzaHV0ZG93biBjaGVja3BvaW50LCBqdXN0CkBAIC02ODA3LDcgKzY4MDgsOCBAQCBDcmVh dGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1NlZyhSZWRvUmVjUHRy LCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dTZWcocmVjcHRyLCAm X2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsUmVw bGljYXRpb25TbG90cyhfbG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVM TCk7CisJaWYgKGludmFsaWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZl IGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4 Niw2ICs3MDg4LDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlYTG9nUmVj UHRyCWVuZHB0cjsKIAlYTG9nU2VnTm8JX2xvZ1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1l OworCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNr cG9pbnQvcmVzdGFydHBvaW50IGNhbm5vdCBoYXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI1 MSw3ICs3MjU0LDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQ dHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNl aXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExv Z1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBs aWNhdGlvblNsb3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGlj dGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObywgJmludmFsaWRhdGVkLCBJ bnZhbGlkT2lkLCBOVUxMKTsKKwlpZiAoaW52YWxpZGF0ZWQpCiAJewogCQkvKgogCQkgKiBT b21lIHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZDsgcmVjYWxjdWxhdGUgdGhlIG9sZC1z ZWdtZW50CkBAIC03OTY2LDYgKzc5NzAsMjIgQEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFtZXRlcnMgaW4g cGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0YShyZWNvcmQp LCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAqIEludmFsaWRh dGUgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBwcmlt YXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3IgbG9n aWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlhbGx5 IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcKKwkJ ICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRoYXQg Y2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlvbiBv ZiBsb2dpY2FsIHNsb3RzIG9yIGludmFsaWRhdGVkIGV4aXN0aW5nCisJCSAqIG9uZXMuCisJ CSAqLworCQlpZiAoSW5SZWNvdmVyeSAmJiBJbkhvdFN0YW5kYnkgJiYKKwkJCXhscmVjLndh bF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMICYmCisJCQl3YWxfbGV2ZWwgPj0gV0FMX0xF VkVMX0xPR0lDQUwpCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgQ29uZmxpY3RIb3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQlJbnZhbGlkYXRlT2Jzb2xldGVPckNvbmZsaWN0 aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZFhMb2dSZWNQdHIsIE5VTEwsIElu dmFsaWRPaWQsICZDb25mbGljdEhvcml6b24pOworCQl9CisKIAkJTFdMb2NrQWNxdWlyZShD b250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25u ZWN0aW9ucyA9IHhscmVjLk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dv cmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA4NjA4ZTNmYTViLi40YmQxYWE0MDFh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMDY1LDcgKzEw NjUsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAg ICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxf bG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQu b2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAg ICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMg Y29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0 YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2Fj dGl2ZV9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJ RVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0MWEyYi4uMDcwZmQz NzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWxmdW5jcy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBi aW4KIAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBpbiBDcmVhdGVEZWNv ZGluZ0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9sc24gaXMgdmFsaWQu ICBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKLQkJICogZXJy bXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBj aGFuZ2VzCi0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFydF9sc24gaXMgdmFs aWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlkLiBBdm9pZAorCQkg KiAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJybXNnIGJlY2F1c2Ug dGhhdCdkIGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2Vz IGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15 UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVyZXBvcnQoRVJST1Is CkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRz KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJCQkJ CQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIG5l dmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKE15UmVw bGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJj YW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJ CQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBi ZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3Zl cnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5Li43YWM2YmZlMDU5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC04NTUsOCArODU1LDEwIEBAIFJlcGxp Y2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGJvb2wgYWxyZWFkeV9sb2NrZWQpCiAJ CVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwogCQllZmZlY3RpdmVfeG1pbiA9IHMtPmVm ZmVjdGl2ZV94bWluOwogCQllZmZlY3RpdmVfY2F0YWxvZ194bWluID0gcy0+ZWZmZWN0aXZl X2NhdGFsb2dfeG1pbjsKLQkJaW52YWxpZGF0ZWQgPSAoIVhMb2dSZWNQdHJJc0ludmFsaWQo cy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCkgJiYKLQkJCQkJICAgWExvZ1JlY1B0cklzSW52YWxp ZChzLT5kYXRhLnJlc3RhcnRfbHNuKSk7CisJCWludmFsaWRhdGVkID0gKCghWExvZ1JlY1B0 cklzSW52YWxpZChzLT5kYXRhLmludmFsaWRhdGVkX2F0KSAmJgorCQkJCQkJWExvZ1JlY1B0 cklzSW52YWxpZChzLT5kYXRhLnJlc3RhcnRfbHNuKSkKKwkJCQkJICAgfHwgKCFUcmFuc2Fj dGlvbklkSXNWYWxpZChzLT5kYXRhLnhtaW4pICYmCisJCQkJCQkgICAhVHJhbnNhY3Rpb25J ZElzVmFsaWQocy0+ZGF0YS5jYXRhbG9nX3htaW4pKSk7CiAJCVNwaW5Mb2NrUmVsZWFzZSgm cy0+bXV0ZXgpOwogCiAJCS8qIGludmFsaWRhdGVkIHNsb3RzIG5lZWQgbm90IGFwcGx5ICov CkBAIC0xMjI0LDIwICsxMjI2LDIxIEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9p ZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRp b25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2ZW4gc2xvdAotICogYW5kIG1hcmsgaXQgaW52 YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KKyAqIEhlbHBlciBmb3IgSW52YWxp ZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzCisgKgor ICogQWNxdWlyZXMgdGhlIGdpdmVuIHNsb3QgYW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVj ZXNzYXJ5IGFuZCBwb3NzaWJsZS4KICAqCiAgKiBSZXR1cm5zIHdoZXRoZXIgUmVwbGljYXRp b25TbG90Q29udHJvbExvY2sgd2FzIHJlbGVhc2VkIGluIHRoZSBpbnRlcmltIChhbmQKICAq IGluIHRoYXQgY2FzZSB3ZSdyZSBub3QgaG9sZGluZyB0aGUgbG9jayBhdCByZXR1cm4sIG90 aGVyd2lzZSB3ZSBhcmUpLgogICoKLSAqIFNldHMgKmludmFsaWRhdGVkIHRydWUgaWYgdGhl IHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50b3VjaGVkIG90aGVyd2lzZS4pCisgKiBTZXRz ICppbnZhbGlkYXRlZCB0cnVlIGlmIGFuIG9ic29sZXRlIHNsb3Qgd2FzIGludmFsaWRhdGVk LiAoVW50b3VjaGVkIG90aGVyd2lzZS4pCiAgKgogICogVGhpcyBpcyBpbmhlcmVudGx5IHJh Y3ksIGJlY2F1c2Ugd2UgcmVsZWFzZSB0aGUgTFdMb2NrCiAgKiBmb3Igc3lzY2FsbHMsIHNv IGNhbGxlciBtdXN0IHJlc3RhcnQgaWYgd2UgcmV0dXJuIHRydWUuCiAgKi8KIHN0YXRpYyBi b29sCi1JbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpz LCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKLQkJCQkJCQkgICBib29sICppbnZhbGlkYXRlZCkK K0ludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KFJl cGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCisJCQkJCQkJCQkJCQkg ICBib29sICppbnZhbGlkYXRlZCwgVHJhbnNhY3Rpb25JZCAqeGlkKQogewogCWludAkJCWxh c3Rfc2lnbmFsZWRfcGlkID0gMDsKIAlib29sCQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CkBA IC0xMjQ1LDYgKzEyNDgsOSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVw bGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKIAlmb3IgKDs7KQogCXsK IAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsKKwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47 CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRhbG9nX3htaW47CisKIAkJTmFtZURhdGEJc2xv dG5hbWU7CiAJCWludAkJCWFjdGl2ZV9waWQgPSAwOwogCkBAIC0xMjYxLDE4ICsxMjY3LDMz IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMs IFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkgKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0 byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVlZHMgdG8gYmUKIAkJICogaW52YWxpZGF0ZWQs IGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVpcmVkLCBhY3F1aXJlIGl0IGFuZCBtYXJrIGl0 CiAJCSAqIGFzIGhhdmluZyBiZWVuIGludmFsaWRhdGVkLiAgV2UgZG8gdGhpcyB3aXRoIHRo ZSBzcGlubG9jayBoZWxkIHRvCi0JCSAqIGF2b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3Ig ZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gY291bGQgbW92ZQotCQkgKiBmb3J3YXJkLCBvciB0 aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgorCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMg LS0gZm9yIGV4YW1wbGUgdGhlIHJlc3RhcnRfbHNuIChvciB0aGUKKwkJICogeG1pbihzKSBj b3VsZCkgbW92ZSBmb3J3YXJkIG9yIHRoZSBzbG90IGNvdWxkIGJlIGRyb3BwZWQuCiAJCSAq LwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKIAogCQlyZXN0YXJ0X2xzbiA9IHMt PmRhdGEucmVzdGFydF9sc247CisJCXNsb3RfeG1pbiA9IHMtPmRhdGEueG1pbjsKKwkJc2xv dF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1pbjsKKworCQkvKiBzbG90IGhh cyBiZWVuIGludmFsaWRhdGVkIChsb2dpY2FsIGRlY29kaW5nIGNvbmZsaWN0IGNhc2UpICov CisJCWlmICgoeGlkICYmCisJCQkgKChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlk KHMpKQorCQkJICB8fAogCiAJCS8qCi0JCSAqIElmIHRoZSBzbG90IGlzIGFscmVhZHkgaW52 YWxpZCBvciBpcyBmcmVzaCBlbm91Z2gsIHdlIGRvbid0IG5lZWQgdG8KLQkJICogZG8gYW55 dGhpbmcuCisJCSAqIFdlIGFyZSBub3QgZm9yY2luZyBmb3IgaW52YWxpZGF0aW9uIGJlY2F1 c2UgdGhlIHhpZCBpcyB2YWxpZCBhbmQKKwkJICogdGhpcyBpcyBhIG5vbiBjb25mbGljdGlu ZyBzbG90LgogCQkgKi8KLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24p IHx8IHJlc3RhcnRfbHNuID49IG9sZGVzdExTTikKKwkJCSAgKFRyYW5zYWN0aW9uSWRJc1Zh bGlkKCp4aWQpICYmICEoCisJCQkJCQkJCQkJCSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChz bG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfeG1pbiwg KnhpZCkpCisJCQkJCQkJCQkJCSAgIHx8CisJCQkJCQkJCQkJCSAgIChUcmFuc2FjdGlvbklk SXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikgJiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JF cXVhbHMoc2xvdF9jYXRhbG9nX3htaW4sICp4aWQpKQorCQkJCQkJCQkJCQkgICApKQorCQkJ ICApKQorCQkJfHwKKwkJLyogc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCAob2Jzb2xldGUg TFNOIGNhc2UpICovCisJCQkoIXhpZCAmJiAoWExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0 X2xzbikgfHwgcmVzdGFydF9sc24gPj0gb2xkZXN0TFNOKSkpCiAJCXsKIAkJCVNwaW5Mb2Nr UmVsZWFzZSgmcy0+bXV0ZXgpOwogCQkJaWYgKHJlbGVhc2VkX2xvY2spCkBAIC0xMjkyLDkg KzEzMTMsMTYgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9u U2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04sCiAJCXsKIAkJCU15UmVwbGljYXRpb25T bG90ID0gczsKIAkJCXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7Ci0JCQlzLT5kYXRhLmlu dmFsaWRhdGVkX2F0ID0gcmVzdGFydF9sc247Ci0JCQlzLT5kYXRhLnJlc3RhcnRfbHNuID0g SW52YWxpZFhMb2dSZWNQdHI7Ci0KKwkJCWlmICh4aWQpCisJCQl7CisJCQkJcy0+ZGF0YS54 bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQkJcy0+ZGF0YS5jYXRhbG9nX3htaW4g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlzLT5k YXRhLmludmFsaWRhdGVkX2F0ID0gcmVzdGFydF9sc247CisJCQkJcy0+ZGF0YS5yZXN0YXJ0 X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQkJfQogCQkJLyogTGV0IGNhbGxlciBrbm93 ICovCiAJCQkqaW52YWxpZGF0ZWQgPSB0cnVlOwogCQl9CkBAIC0xMzI3LDE1ICsxMzU1LDM5 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMs IFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJICovCiAJCQlpZiAobGFzdF9zaWduYWxlZF9w aWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsKLQkJCQllcmVwb3J0KExPRywKLQkJCQkJCWVycm1z ZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9uIHNsb3Qg XCIlc1wiIiwKLQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1lKSksCi0J CQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhjZWVkcyB0 aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhy ZXN0YXJ0X2xzbiksCi0JCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9sZGVzdExT TiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBp bmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCQlpZiAoeGlkKQorCQkJ CXsKKwkJCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCQl7CisJCQkJ CQllcmVwb3J0KExPRywKKwkJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9jZXNzICVk IGJlY2F1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGggcmVjb3Zl cnkiLAorCQkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJ CQkJCQllcnJkZXRhaWwoIlRoZSBzbG90IGNvbmZsaWN0ZWQgd2l0aCB4aWQgaG9yaXpvbiAl dS4iLAorCQkJCQkJCQkJCSAgKnhpZCkpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJewor CQkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcgcHJvY2Vz cyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIHJl Y292ZXJ5IiwKKwkJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwK KwkJCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWly ZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gbWFzdGVyIikpOworCQkJ CQl9CisKKwkJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKGFjdGl2ZV9waWQsIFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsIEludmFsaWRCYWNrZW5kSWQpOworCQkJ CX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQllcnJtc2co InRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBzbG90IFwi JXNcIiIsCisJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSwKKwkJ CQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhjZWVkcyB0 aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJCQkJCQkJICBMU05fRk9STUFUX0FSR1Mo cmVzdGFydF9sc24pLAorCQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAob2xkZXN0 TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0 byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKworCQkJCQkodm9pZCkg a2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKKwkJCQl9CiAKLQkJCQkodm9pZCkga2lsbChh Y3RpdmVfcGlkLCBTSUdURVJNKTsKIAkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFjdGl2ZV9w aWQ7CiAJCQl9CiAKQEAgLTEzNjksMTMgKzE0MjEsMzMgQEAgSW52YWxpZGF0ZVBvc3NpYmx5 T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRlc3RMU04s CiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNsb3RSZWxlYXNl KCk7CiAKLQkJCWVyZXBvcnQoTE9HLAotCQkJCQllcnJtc2coImludmFsaWRhdGluZyBvYnNv bGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCi0JCQkJCQkgICBOYW1lU3RyKHNsb3Ru YW1lKSksCi0JCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAlWC8lWCBl eGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCi0JCQkJCQkJICBMU05fRk9STUFU X0FSR1MocmVzdGFydF9sc24pLAotCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVk IHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJaWYgKHhpZCkK KwkJCXsKKwkJCQlwZ3N0YXRfZHJvcF9yZXBsc2xvdChzKTsKKworCQkJCWlmIChUcmFuc2Fj dGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJ CWVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJyZGV0YWls KCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwgKnhpZCkpOwor CQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQllcnJt c2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRo IHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRldGFpbCgiTG9n aWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBs ZWFzdCBsb2dpY2FsIG9uIG1hc3RlciIpKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQl7 CisJCQkJZXJlcG9ydChMT0csCisJCQkJCQllcnJtc2coImludmFsaWRhdGluZyBvYnNvbGV0 ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJICAgTmFtZVN0cihzbG90bmFt ZSkpLAorCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVYLyVYIGV4 Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJICBMU05fRk9STUFU X0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxvbmcpIChv bGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAorCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5l ZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQl9CiAKIAkJ CS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBAIC0xMzg4 LDIwICsxNDYwLDQwIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNh dGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogfQogCiAvKgotICogTWFyayBh bnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUgZ2l2ZW4gc2Vn bWVudAotICogYXMgaW52YWxpZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91dCB0byBi ZSByZW1vdmVkLgorICogSW52YWxpZGF0ZSBPYnNvbGV0ZSBzbG90cyBvciByZXNvbHZlIHJl Y292ZXJ5IGNvbmZsaWN0cyB3aXRoIGxvZ2ljYWwgc2xvdHMuCiAgKgotICogUmV0dXJucyB0 cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCisgKiBPYnNvbGV0ZSBj YXNlIChha2EgeGlkIGlzIE5VTEwpOgogICoKLSAqIE5CIC0gdGhpcyBydW5zIGFzIHBhcnQg b2YgY2hlY2twb2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2libGUuCisg KgkgTWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUg Z2l2ZW4gc2VnbWVudAorICoJIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0aGF0J3Mg YWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqCSBpbnZhbGlkYXRlZCBpcyBzZXQgdG8gdHJ1ZSB3 aGVuIGFueSBzbG90IGhhdmUgZ290IGludmFsaWRhdGVkLgorICoKKyAqICBMb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FzZToKKyAqCisgKgkgV2hlbiB4aWQgaXMgdmFsaWQsIGl0IG1l YW5zIHRoYXQgd2UgYXJlIGFib3V0IHRvIHJlbW92ZSByb3dzIG9sZGVyIHRoYW4geGlkLgor ICoJIFRoZXJlZm9yZSB3ZSBuZWVkIHRvIGludmFsaWRhdGUgc2xvdHMgdGhhdCBkZXBlbmQg b24gc2VlaW5nIHRob3NlIHJvd3MuCisgKgkgV2hlbiB4aWQgaXMgaW52YWxpZCwgaW52YWxp ZGF0ZSBhbGwgbG9naWNhbCBzbG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVuIHRoZQorICoJ IG1hc3RlciB3YWxfbGV2ZWwgaXMgc2V0IGJhY2sgdG8gcmVwbGljYSwgc28gZXhpc3Rpbmcg bG9naWNhbCBzbG90cyBuZWVkIHRvCisgKgkgYmUgaW52YWxpZGF0ZWQuCiAgKi8KLWJvb2wK LUludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoWExvZ1NlZ05vIG9sZGVzdFNl Z25vKQordm9pZAorSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxSZXBs aWNhdGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqaW52YWxpZGF0ZWQs IE9pZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCAqeGlkKQogewotCVhMb2dSZWNQdHIJb2xkZXN0 TFNOOwotCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKLQlYTG9nU2VnTm9PZmZzZXRU b1JlY1B0cihvbGRlc3RTZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsK KwlYTG9nUmVjUHRyCW9sZGVzdExTTiA9IEludmFsaWRYTG9nUmVjUHRyOworCWJvb2wgbG9n aWNhbF9zbG90X2ludmFsaWRhdGVkID0gZmFsc2U7CisKKwlBc3NlcnQobWF4X3JlcGxpY2F0 aW9uX3Nsb3RzID49IDApOworCisJaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQor CQlyZXR1cm47CisKKwlpZiAoIXhpZCkKKwl7CisJCUFzc2VydChpbnZhbGlkYXRlZCk7CisJ CSppbnZhbGlkYXRlZCA9IGZhbHNlOworCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihvbGRl c3RTZWdubywgMCwgd2FsX3NlZ21lbnRfc2l6ZSwgb2xkZXN0TFNOKTsKKwl9CiAKIHJlc3Rh cnQ6CiAJTFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hB UkVEKTsKQEAgLTE0MTIsMjQgKzE1MDQsMzYgQEAgcmVzdGFydDoKIAkJaWYgKCFzLT5pbl91 c2UpCiAJCQljb250aW51ZTsKIAotCQlpZiAoSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVT bG90KHMsIG9sZGVzdExTTiwgJmludmFsaWRhdGVkKSkKKwkJaWYgKHhpZCkKIAkJewotCQkJ LyogaWYgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLCBzdGFydCBmcm9tIHNjcmF0Y2ggKi8KLQkJ CWdvdG8gcmVzdGFydDsKKwkJCS8qIHdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9naWNh bCogc2xvdCBjb25mbGljdHMgKi8KKwkJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJCQlj b250aW51ZTsKKworCQkJLyoKKwkJCSAqIG5vdCB0aGUgZGF0YWJhc2Ugb2YgaW50ZXJlc3Qg YW5kIHdlIGRvbid0IHdhbnQgYWxsIHRoZQorCQkJICogZGF0YWJhc2UsIHNraXAKKwkJCSAq LworCQkJaWYgKHMtPmRhdGEuZGF0YWJhc2UgIT0gZGJvaWQgJiYgVHJhbnNhY3Rpb25JZElz VmFsaWQoKnhpZCkpCisJCQkJY29udGludWU7CiAJCX0KKworCQlpZiAoSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVPckNvbmZsaWN0aW5nTG9naWNhbFNsb3Qocywgb2xkZXN0TFNOLCBp bnZhbGlkYXRlZCA/IGludmFsaWRhdGVkIDogJmxvZ2ljYWxfc2xvdF9pbnZhbGlkYXRlZCwg eGlkKSkKKwkJCQlnb3RvIHJlc3RhcnQ7CiAJfQorCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNh dGlvblNsb3RDb250cm9sTG9jayk7CiAKIAkvKgotCSAqIElmIGFueSBzbG90cyBoYXZlIGJl ZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZSBsaW1pdHMuCisJICog SWYgYW55IHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJl cXVpcmVkIHhtaW4KKwkgKiBhbmQgdGhlIHJlcXVpcmVkIGxzbiAoaWYgYXBwcm9wcmlhdGUp LgogCSAqLwotCWlmIChpbnZhbGlkYXRlZCkKKwlpZiAoKCF4aWQgJiYgKmludmFsaWRhdGVk KSB8fCAoeGlkICYmIGxvZ2ljYWxfc2xvdF9pbnZhbGlkYXRlZCkpCiAJewogCQlSZXBsaWNh dGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkWG1pbihmYWxzZSk7Ci0JCVJlcGxpY2F0aW9uU2xv dHNDb21wdXRlUmVxdWlyZWRMU04oKTsKKwkJaWYgKCF4aWQgJiYgKmludmFsaWRhdGVkKQor CQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCX0KLQotCXJldHVy biBpbnZhbGlkYXRlZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKaW5kZXggNGVkMzc0N2UzZi4uODg4NWNkZWViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1MywxNCBAQCBTdGFydExvZ2ljYWxSZXBs aWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFUcmFuc2FjdGlvbklkSXNW YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkgJiYgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1pbikpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2Fs IHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJ CSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0 IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0 cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5k ZXggMzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5k bGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2ln bmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVy eUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNM T1QpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NT SUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYwppbmRleCA5NGNjODYwZjVmLi5kYWJhNzY2OTQ3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi dXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1 ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIK IAogLyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVycyAqLwogaW50CQkJdmFjdXVtX2Rl ZmVyX2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwK ICAqLwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWJvb2wgaXNDYXRh bG9nUmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFs VHJhbnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC01MDAsNiArNTAyLDkgQEAgUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NO QVBTSE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05B UFNIT1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlpZiAod2FsX2xldmVsID49IFdBTF9M RVZFTF9MT0dJQ0FMICYmIGlzQ2F0YWxvZ1JlbCkKKwkJSW52YWxpZGF0ZU9ic29sZXRlT3JD b25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBO VUxMLCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAv KgpAQCAtNTA4LDYgKzUxMyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBz aG90KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQK IFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNh Y3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlz Q2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewog CS8qCkBAIC01MjYsNyArNTMyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25h cHNob3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJ VHJhbnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxU cmFuc2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlp c0NhdGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2 ICsxNDk1LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNv biByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoK IAkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwog CQkJYnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VDoKKwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlv biBzbG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X1NUQVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxp Y3Qgb24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCA0NzBiNzM0ZTllLi4wMDQxODk2NjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0y NDgxLDYgKzI0ODEsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJ Y2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWls KCJVc2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhh dCBtdXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09W RVJZX0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2lu ZyB0aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sg d2l0aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1MCw2ICszMDUzLDI3IEBAIFJl Y292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0xPR0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVx dWlyZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVx dWlyZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNl IHRoZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJ CSAqIHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2Fj dGlvbgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJl Y292ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3Rh bmRieSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2lu ZyBJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28g YnJlYWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAm JgorCQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xP VCAmJgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGlj YXRpb25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1 ZTsKKwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVu ZGluZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYg d2UgYXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXgg NmU2NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVw b3J0X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJw aW4rKzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9H SUNBTFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJl YWs7CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NL OgogCQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7 CkBAIC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9F bnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VO VChjb25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGlj dF9sb2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJ UEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9B Q0NVTV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09V TlQoY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKaW5kZXggNjczNzQ5MzQwMi4uYWZkNjJkM2NjMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRf R0VUX0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0 X3JvbGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2sp CiAKKy8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFU X0dFVF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdf c3RhdF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5 LDYgKzExMDEsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05f QVJHUykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFj ZSArCiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5 LT5jb25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2lj YWxzbG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJ CSAgZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CmluZGV4IGMwZjJhOGE3N2MuLjY1OWU1YmRjM2EgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU3Nyw2ICs1NTc3LDExIEBACiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0 eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9z bmFwc2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IHJlY292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBs aWNhdGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rf bG9naWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdy JywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9z cmMgPT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQg PT4gJzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3Rz IGluIGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ ICdzJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUv cGdzdGF0LmgKaW5kZXggNWUzMzI2YTNiOS4uODcyZWIzNTc1NyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTI5MSw2 ICsyOTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRf Q291bnRlciBjb25mbGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0 X2xvY2s7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0Nv dW50ZXIgY29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rf YnVmZmVycGluOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7 CiAJUGdTdGF0X0NvdW50ZXIgdGVtcF9maWxlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApp bmRleCA4ODcyYzgwY2RmLi44NTcwNzZhYmY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5o CkBAIC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKIAorI2RlZmluZSBMb2dpY2FsUmVwbGlj YXRpb25TbG90SXNJbnZhbGlkKHMpICghVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54 bWluKSAmJiBcCisJCQkJCQkJCQkJCSAhVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5j YXRhbG9nX3htaW4pKQogLyoKICAqIEJlaGF2aW91ciBvZiByZXBsaWNhdGlvbiBzbG90cywg dXBvbiByZWxlYXNlIG9yIGNyYXNoLgogICoKQEAgLTIxNSw3ICsyMTcsNyBAQCBleHRlcm4g dm9pZCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKHZvaWQpOwogZXh0ZXJu IFhMb2dSZWNQdHIgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2 b2lkKTsKIGV4dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRi b2lkLCBpbnQgKm5zbG90cywgaW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0 aW9uU2xvdHNEcm9wREJTbG90cyhPaWQgZGJvaWQpOwotZXh0ZXJuIGJvb2wgSW52YWxpZGF0 ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0 ZXJuIHZvaWQgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNh dGlvblNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqaW52YWxpZGF0ZWQsIE9p ZCBkYm9pZCwgVHJhbnNhY3Rpb25JZCAqeGlkKTsKIGV4dGVybiBSZXBsaWNhdGlvblNsb3Qg KlNlYXJjaE5hbWVkUmVwbGljYXRpb25TbG90KGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbmVl ZF9sb2NrKTsKIGV4dGVybiBpbnQJUmVwbGljYXRpb25TbG90SW5kZXgoUmVwbGljYXRpb25T bG90ICpzbG90KTsKIGV4dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdE5hbWUoaW50IGluZGV4 LCBOYW1lIG5hbWUpOwpAQCAtMjI3LDUgKzIyOSw2IEBAIGV4dGVybiB2b2lkIENoZWNrUG9p bnRSZXBsaWNhdGlvblNsb3RzKHZvaWQpOwogCiBleHRlcm4gdm9pZCBDaGVja1Nsb3RSZXF1 aXJlbWVudHModm9pZCk7CiBleHRlcm4gdm9pZCBDaGVja1Nsb3RQZXJtaXNzaW9ucyh2b2lk KTsKK2V4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvZ2ljYWxTbG90 cyhPaWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpyZWFzb24pOwogCiAjZW5k aWYJCQkJCQkJLyogU0xPVF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdl L3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4 IDkwNWFmMjIzMWIuLjJmNTIxMDBiMDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5o CkBAIC00Miw2ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfVEFCTEVTUEFDRSwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0ssCiAJ UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCwKKwlQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0xPR0lDQUxTTE9ULAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfQlVG RkVSUElOLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSywK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaAppbmRleCAyZWZmZGVhMTI2Li40MWY0ZGMzNzJlIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3N0YW5kYnkuaApAQCAtMzAsOCArMzAsMTAgQEAgZXh0ZXJuIHZvaWQg SW5pdFJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIGV4dGVybiB2b2lk IFNodXRkb3duUmVjb3ZlcnlUcmFuc2FjdGlvbkVudmlyb25tZW50KHZvaWQpOwogCiBleHRl cm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJYm9vbCBpc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCQlSZWxGaWxlTG9jYXRvciBsb2NhdG9yKTsKIGV4dGVybiB2 b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCQkgICBi b29sIGlzQ2F0YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2Nh dG9yKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFRhYmxlc3Bh Y2UoT2lkIHRzaWQpOwogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRo RGF0YWJhc2UoT2lkIGRiaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApp bmRleCBlN2EyZjU4NTZhLi43ZDQ4MzFkZmZlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dApAQCAtMTg2OCw3ICsxODY4LDggQEAgcGdfc3RhdF9kYXRhYmFzZV9jb25m bGljdHN8IFNFTEVDVCBvaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxp Y3RfbG9jayhvaWQpIEFTIGNvbmZsX2xvY2ssCiAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxp Y3Rfc25hcHNob3Qob2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9idWZmZXJwaW4ob2lkKSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhvaWQpIEFTIGNvbmZsX2Rl YWRsb2NrCisgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhv aWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xv Z2ljYWxzbG90KG9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90CiAgICBGUk9NIHBn X2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHBpZCwKICAgICBnc3NfYXV0 aCBBUyBnc3NfYXV0aGVudGljYXRlZCwKLS0gCjIuMzQuMQoK --------------PsoLkpC3kutW3r5ZDSG03NPT Content-Type: text/plain; charset=UTF-8; name="v43-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v43-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjMWEzN2RhNjA2ZjliMjM1NmMzZmUzOWVlYjJiNDg1OTU1NmYxNGI4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCAyNSBKYW4gMjAyMyAxNzoxMTo1OCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQzIDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0CgpPdmVyYWxsIGRlc2lnbjoKCjEuIFdlIHdhbnQgdG8gZW5hYmxl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieXMsIGJ1dCByZXBsYXkgb2YgV0FMCmZyb20g dGhlIHByaW1hcnkgbWlnaHQgcmVtb3ZlIGRhdGEgdGhhdCBpcyBuZWVkZWQgYnkgbG9naWNh bCBkZWNvZGluZywKY2F1c2luZyByZXBsaWNhdGlvbiBjb25mbGljdHMgbXVjaCBhcyBob3Qg c3RhbmRieSBkb2VzLgoKMi4gT3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRo IHRoaXMgdHlwZSBvZiByZXBsaWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNh bCBzbG90cyBmb3Igd2hpY2ggbmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRv IGRvIHRoaXMgd2UgbmVlZCB0aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2Us IGp1c3QgYXMgd2UKZG8gZm9yIHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0 IHdlIGFsc28gbmVlZCB0byBrbm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdh cyB0byBkYXRhIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuCgo0LiBX ZSBjYW4ndCByZWx5IG9uIHRoZSBzdGFuZGJ5J3MgcmVsY2FjaGUgZW50cmllcyBmb3IgdGhp cyBwdXJwb3NlIGluCmFueSB3YXksIGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBjYW4n dCBhY2Nlc3MgY2F0YWxvZyBjb250ZW50cy4KCjUuIFRoZXJlZm9yZSBldmVyeSBXQUwgcmVj b3JkIHRoYXQgcG90ZW50aWFsbHkgcmVtb3ZlcyBkYXRhIGZyb20gdGhlCmluZGV4IG9yIGhl YXAgbXVzdCBjYXJyeSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBv bmUKdGhhdCBtaWdodCBiZSBhY2Nlc3NlZCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZy4KCldo eSBkbyB3ZSBuZWVkIHRoaXMgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieT8KCkZp cnN0LCBsZXQncyBmb3JnZXQgYWJvdXQgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGFu ZCByZWNhbGwgdGhhdApvbiBhIHByaW1hcnkgZGF0YWJhc2UsIGFueSBjYXRhbG9nIHJvd3Mg dGhhdCBtYXkgYmUgbmVlZGVkIGJ5IGEgbG9naWNhbApkZWNvZGluZyByZXBsaWNhdGlvbiBz bG90IGFyZSBub3QgcmVtb3ZlZC4KClRoaXMgaXMgZG9uZSB0aGFua3MgdG8gdGhlIGNhdGFs b2dfeG1pbiBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZ2ljYWwKcmVwbGljYXRpb24gc2xvdC4K CkJ1dCwgd2l0aCBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnksIGluIHRoZSBmb2xsb3dp bmcgY2FzZXM6CgotIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGlzIG9mZgotIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIGlzIG9uIGJ1dCB0aGVyZSBpcyBubyBhIHBoeXNpY2FsIHNsb3QgYmV0d2Vl bgogIHRoZSBwcmltYXJ5IGFuZCB0aGUgc3RhbmRieS4gVGhlbiwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLAogIGJ1dCBvbmx5IHdoaWxlIHRoZSBjb25uZWN0aW9uIGlzIGFs aXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydAogIHdvdWxkIGJyZWFrIGl0KQoKVGhl biwgdGhlIHByaW1hcnkgbWF5IGRlbGV0ZSBzeXN0ZW0gY2F0YWxvZyByb3dzIHRoYXQgY291 bGQgYmUgbmVlZGVkCmJ5IHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5IChh cyBpdCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQpjYXRhbG9nX3htaW4gb24gdGhlIHN0YW5k YnkpLgoKU28sIGl04oCZcyBtYW5kYXRvcnkgdG8gaWRlbnRpZnkgdGhvc2Ugcm93cyBhbmQg aW52YWxpZGF0ZSB0aGUgc2xvdHMKdGhhdCBtYXkgbmVlZCB0aGVtIGlmIGFueS4gSWRlbnRp ZnlpbmcgdGhvc2Ugcm93cyBpcyB0aGUgcHVycG9zZSBvZgp0aGlzIGNvbW1pdC4KCkltcGxl bWVudGF0aW9uOgoKV2hlbiBhIFdBTCByZXBsYXkgb24gc3RhbmRieSBpbmRpY2F0ZXMgdGhh dCBhIGNhdGFsb2cgdGFibGUgdHVwbGUgaXMKdG8gYmUgZGVsZXRlZCBieSBhbiB4aWQgdGhh dCBpcyBncmVhdGVyIHRoYW4gYSBsb2dpY2FsIHNsb3QncwpjYXRhbG9nX3htaW4sIHRoZW4g dGhhdCBtZWFucyB0aGUgc2xvdCdzIGNhdGFsb2dfeG1pbiBjb25mbGljdHMgd2l0aAp0aGUg eGlkLCBhbmQgd2UgbmVlZCB0byBoYW5kbGUgdGhlIGNvbmZsaWN0LiBXaGlsZSBzdWJzZXF1 ZW50IGNvbW1pdHMKd2lsbCBkbyB0aGUgYWN0dWFsIGNvbmZsaWN0IGhhbmRsaW5nLCB0aGlz IGNvbW1pdCBhZGRzIGEgbmV3IGZpZWxkCmlzQ2F0YWxvZ1JlbCBpbiBzdWNoIFdBTCByZWNv cmRzIChhbmQgYSBuZXcgYml0IHNldCBpbiB0aGUKeGxfaGVhcF92aXNpYmxlIGZsYWdzIGZp ZWxkKSwgdGhhdCBpcyB0cnVlIGZvciBjYXRhbG9nIHRhYmxlcywgc28gYXMgdG8KYXJyYW5n ZSBmb3IgY29uZmxpY3QgaGFuZGxpbmcuCgpEdWUgdG8gdGhpcyBuZXcgZmllbGQgYmVpbmcg YWRkZWQsIHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIGFuZApnaXN0eGxvZ0RlbGV0ZSBkbyBu b3cgY29udGFpbiB0aGUgb2Zmc2V0cyB0byBiZSBkZWxldGVkIGFzIGEKRkxFWElCTEVfQVJS QVlfTUVNQkVSLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29ycmVjdCBhbGlnbmVtZW50 LgpJdCdzIG5vdCBuZWVkZWQgb24gdGhlIG90aGVycyBzdHJ1Y3Qgd2hlcmUgaXNDYXRhbG9n UmVsIGhhcwpiZWVuIGFkZGVkLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRl ciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQt Qnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJy aXppbyBkZQpSb3llcyBNZWxsbwotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVl LmMgICAgICAgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Qu YyAgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMg ICAgICAgICB8IDE3ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5j ICAgICAgICB8IDEyICstLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5j ICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAg ICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg ICB8ICA5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAg fCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgfCAg MiArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgICAgfCAgMyAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyAgICAgIHwgODIgKysr KysrKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAg ICAgICAgfCA5OSArKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jICAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzZWFyY2guYyAgICAgIHwgNDUgKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICB8ICA3ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jICAgICAgfCAgOSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jICAgICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5h bHl6ZS5jICAgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYyAgICAgIHwgIDYgKysKIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29y dHZhcmlhbnRzLmMgfCAgNyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAg ICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oICAg ICAgICAgIHwgIDcgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oICAgICAgICAg ICAgICB8IDExICstLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oICAgICAgICAg ICAgIHwgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oICAgICAgICAg ICB8ICA4ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAgICAg fCAzMSArKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oICAgICAgICAgICAg ICAgfCAgNiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaCAgICAgICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggICAgIHwg IDkgKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICB8ICAx ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oICAgICAgICAgICAgICB8ICAzICst CiAzNSBmaWxlcyBjaGFuZ2VkLCAyNDAgaW5zZXJ0aW9ucygrKSwgMTg5IGRlbGV0aW9ucygt KQogICA0LjclIGNvbnRyaWIvYW1jaGVjay8KICAgNi4zJSBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC8KICAgNS4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC8KICA1NC42JSBzcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlLwogICA0LjklIHNyYy9iYWNrZW5kL2FjY2Vzcy8KICAgMy4y JSBzcmMvYmFja2VuZC8KICAyMC4xJSBzcmMvaW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0 IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyBiL2NvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMKaW5kZXggMjU3Y2ZmNjcxYi4uOGQzYWJiZGNlYiAxMDA2NDQKLS0t IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hl Y2svdmVyaWZ5X25idHJlZS5jCkBAIC0xODMsNyArMTgzLDggQEAgc3RhdGljIGlubGluZSBi b29sIGludmFyaWFudF9sX25vbnRhcmdldF9vZmZzZXQoQnRyZWVDaGVja1N0YXRlICpzdGF0 ZSwKIAkJCQkJCQkJCQkJCU9mZnNldE51bWJlciB1cHBlcmJvdW5kKTsKIHN0YXRpYyBQYWdl IHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVy IGJsb2NrbnVtKTsKIHN0YXRpYyBpbmxpbmUgQlRTY2FuSW5zZXJ0IGJ0X21rc2NhbmtleV9w aXZvdHNlYXJjaChSZWxhdGlvbiByZWwsCi0JCQkJCQkJCQkJCQkJSW5kZXhUdXBsZSBpdHVw KTsKKwkJCQkJCQkJCQkJCQlJbmRleFR1cGxlIGl0dXAsCisJCQkJCQkJCQkJCQkJUmVsYXRp b24gaGVhcHJlbCk7CiBzdGF0aWMgSXRlbUlkIFBhZ2VHZXRJdGVtSWRDYXJlZnVsKEJ0cmVl Q2hlY2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrLAogCQkJCQkJCQkgICBQYWdl IHBhZ2UsIE9mZnNldE51bWJlciBvZmZzZXQpOwogc3RhdGljIGlubGluZSBJdGVtUG9pbnRl ciBCVHJlZVR1cGxlR2V0SGVhcFRJRENhcmVmdWwoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwK QEAgLTMzMSw3ICszMzIsNyBAQCBidF9pbmRleF9jaGVja19pbnRlcm5hbChPaWQgaW5kcmVs aWQsIGJvb2wgcGFyZW50Y2hlY2ssIGJvb2wgaGVhcGFsbGluZGV4ZWQsCiAJCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kcmVsKSkpKTsKIAogCQkvKiBFeHRyYWN0IG1ldGFk YXRhIGZyb20gbWV0YXBhZ2UsIGFuZCBzYW5pdGl6ZSBpdCBpbiBwYXNzaW5nICovCi0JCV9i dF9tZXRhdmVyc2lvbihpbmRyZWwsICZoZWFwa2V5c3BhY2UsICZhbGxlcXVhbGltYWdlKTsK KwkJX2J0X21ldGF2ZXJzaW9uKGluZHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1h Z2UsIGhlYXByZWwpOwogCQlpZiAoYWxsZXF1YWxpbWFnZSAmJiAhaGVhcGtleXNwYWNlKQog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBU RUQpLApAQCAtMTI1OCw3ICsxMjU5LDcgQEAgYnRfdGFyZ2V0X3BhZ2VfY2hlY2soQnRyZWVD aGVja1N0YXRlICpzdGF0ZSkKIAkJfQogCiAJCS8qIEJ1aWxkIGluc2VydGlvbiBzY2Fua2V5 IGZvciBjdXJyZW50IHBhZ2Ugb2Zmc2V0ICovCi0JCXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2 b3RzZWFyY2goc3RhdGUtPnJlbCwgaXR1cCk7CisJCXNrZXkgPSBidF9ta3NjYW5rZXlfcGl2 b3RzZWFyY2goc3RhdGUtPnJlbCwgaXR1cCwgc3RhdGUtPmhlYXByZWwpOwogCiAJCS8qCiAJ CSAqIE1ha2Ugc3VyZSB0dXBsZSBzaXplIGRvZXMgbm90IGV4Y2VlZCB0aGUgcmVsZXZhbnQg QlRSRUVfVkVSU0lPTgpAQCAtMTc2OCw3ICsxNzY5LDcgQEAgYnRfcmlnaHRfcGFnZV9jaGVj a19zY2Fua2V5KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJICogbWVtb3J5IHJlbWFpbmlu ZyBhbGxvY2F0ZWQuCiAJICovCiAJZmlyc3RpdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJ dGVtKHJpZ2h0cGFnZSwgcmlnaHRpdGVtKTsKLQlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bpdm90 c2VhcmNoKHN0YXRlLT5yZWwsIGZpcnN0aXR1cCk7CisJcmV0dXJuIGJ0X21rc2NhbmtleV9w aXZvdHNlYXJjaChzdGF0ZS0+cmVsLCBmaXJzdGl0dXAsIHN0YXRlLT5oZWFwcmVsKTsKIH0K IAogLyoKQEAgLTI2ODEsNyArMjY4Miw3IEBAIGJ0X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkKIAlCdWZmZXIJCWxidWY7CiAJYm9vbAkJ ZXhpc3RzOwogCi0Ja2V5ID0gX2J0X21rc2NhbmtleShzdGF0ZS0+cmVsLCBpdHVwKTsKKwlr ZXkgPSBfYnRfbWtzY2Fua2V5KHN0YXRlLT5yZWwsIGl0dXAsIHN0YXRlLT5oZWFwcmVsKTsK IAlBc3NlcnQoa2V5LT5oZWFwa2V5c3BhY2UgJiYga2V5LT5zY2FudGlkICE9IE5VTEwpOwog CiAJLyoKQEAgLTI2OTQsNyArMjY5NSw3IEBAIGJ0X3Jvb3RkZXNjZW5kKEJ0cmVlQ2hlY2tT dGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCkKIAkgKi8KIAlBc3NlcnQoc3RhdGUtPnJl YWRvbmx5ICYmIHN0YXRlLT5yb290ZGVzY2VuZCk7CiAJZXhpc3RzID0gZmFsc2U7Ci0Jc3Rh Y2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5yZWwsIGtleSwgJmxidWYsIEJUX1JFQUQsIE5VTEwp OworCXN0YWNrID0gX2J0X3NlYXJjaChzdGF0ZS0+cmVsLCBrZXksICZsYnVmLCBCVF9SRUFE LCBOVUxMLCBzdGF0ZS0+aGVhcHJlbCk7CiAKIAlpZiAoQnVmZmVySXNWYWxpZChsYnVmKSkK IAl7CkBAIC0zMTMzLDExICszMTM0LDExIEBAIHBhbGxvY19idHJlZV9wYWdlKEJ0cmVlQ2hl Y2tTdGF0ZSAqc3RhdGUsIEJsb2NrTnVtYmVyIGJsb2NrbnVtKQogICogdGhlIHNjYW5rZXkg aXMgZ3JlYXRlci4KICAqLwogc3RhdGljIGlubGluZSBCVFNjYW5JbnNlcnQKLWJ0X21rc2Nh bmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCkKK2J0X21r c2NhbmtleV9waXZvdHNlYXJjaChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwgUmVs YXRpb24gaGVhcHJlbCkKIHsKIAlCVFNjYW5JbnNlcnQgc2tleTsKIAotCXNrZXkgPSBfYnRf bWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJc2tleSA9IF9idF9ta3NjYW5rZXkocmVsLCBpdHVw LCBoZWFwcmVsKTsKIAlza2V5LT5waXZvdHNlYXJjaCA9IHRydWU7CiAKIAlyZXR1cm4gc2tl eTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYwppbmRleCBiYTM5NGYwOGY2Li5mOGJjNDg4ZDRm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCkBAIC0zNDgsNyArMzQ4LDcgQEAgZ2lzdHBs YWNldG9wYWdlKFJlbGF0aW9uIHJlbCwgU2l6ZSBmcmVlc3BhY2UsIEdJU1RTVEFURSAqZ2lz dHN0YXRlLAogCQlmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQpCiAJCXsKIAkJCS8qIEFs bG9jYXRlIG5ldyBwYWdlICovCi0JCQlwdHItPmJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIocmVs KTsKKwkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihoZWFwUmVsLCByZWwpOwogCQkJ R0lTVEluaXRCdWZmZXIocHRyLT5idWZmZXIsIChpc19sZWFmKSA/IEZfTEVBRiA6IDApOwog CQkJcHRyLT5wYWdlID0gQnVmZmVyR2V0UGFnZShwdHItPmJ1ZmZlcik7CiAJCQlwdHItPmJs b2NrLmJsa25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocHRyLT5idWZmZXIpOwpAQCAtMTY5 NCw3ICsxNjk0LDggQEAgZ2lzdHBydW5lcGFnZShSZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwg QnVmZmVyIGJ1ZmZlciwgUmVsYXRpb24gaGVhcFJlbCkKIAogCQkJcmVjcHRyID0gZ2lzdFhM b2dEZWxldGUoYnVmZmVyLAogCQkJCQkJCQkJZGVsZXRhYmxlLCBuZGVsZXRhYmxlLAotCQkJ CQkJCQkJc25hcHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkJc25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJCQloZWFwUmVsKTsKIAogCQkJUGFnZVNldExTTihwYWdl LCByZWNwdHIpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4 IGQyMWEzMDhkNDEuLmE4Nzg5MGI5NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3Ri dWlsZC5jCkBAIC0yOTgsNyArMjk4LDcgQEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAog CQkvKiBpbml0aWFsaXplIHRoZSByb290IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1 ZmZlcihpbmRleCk7CisJCWJ1ZmZlciA9IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwog CQlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxL Tk8pOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHV0aWwuYwppbmRleCA1NjQ1MWZlZGUxLi4xMTllMzRjZTBmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hl Y2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25z aWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZm ZXIKICAqLwogQnVmZmVyCi1naXN0TmV3QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVm ZmVyKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7 CiAJYm9vbAkJbmVlZExvY2s7CkBAIC04NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihS ZWxhdGlvbiByKQogCQkJCSAqIHBhZ2UncyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYg KFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgpICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJ CWdpc3RYTG9nUGFnZVJldXNlKHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdl KSk7CisJCQkJCWdpc3RYTG9nUGFnZVJldXNlKGhlYXByZWwsIHIsIGJsa25vLCBHaXN0UGFn ZUdldERlbGV0ZVhpZChwYWdlKSk7CiAKIAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKaW5kZXggZjY1ODY0MjU0YS4uNzQzZWUzNjNj NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCkBAIC0xNzcsNiArMTc3LDcg QEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJZ2lz dHhsb2dEZWxldGUgKnhsZGF0YSA9IChnaXN0eGxvZ0RlbGV0ZSAqKSBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpOwogCUJ1ZmZlcgkJYnVmZmVyOwogCVBhZ2UJCXBhZ2U7CisJT2Zmc2V0TnVt YmVyICp0b0RlbGV0ZSA9IHhsZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2 ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3Jl IHdlCkBAIC0yMDMsMTQgKzIwNCw3IEBAIGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJcGFnZSA9IChQYWdlKSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNHZXREYXRhTGVuKHJlY29yZCkgPiBTaXplT2ZHaXN0 eGxvZ0RlbGV0ZSkKLQkJewotCQkJT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZTsKLQotCQkJdG9k ZWxldGUgPSAoT2Zmc2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZHaXN0 eGxvZ0RlbGV0ZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvZGVsZXRl LCB4bGRhdGEtPm50b2RlbGV0ZSk7Ci0JCX0KKwkJUGFnZUluZGV4TXVsdGlEZWxldGUocGFn ZSwgdG9EZWxldGUsIHhsZGF0YS0+bnRvZGVsZXRlKTsKIAogCQlHaXN0Q2xlYXJQYWdlSGFz R2FyYmFnZShwYWdlKTsKIAkJR2lzdE1hcmtUdXBsZXNEZWxldGVkKHBhZ2UpOwpAQCAtNTk3 LDcgKzU5MSw4IEBAIGdpc3RYTG9nQXNzaWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJl Y29yZCBhYm91dCByZXVzZSBvZiBhIGRlbGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhM b2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5z YWN0aW9uSWQgZGVsZXRlWGlkKQorZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcHJl bCwgUmVsYXRpb24gcmVsLAorCQkJCSAgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2Fj dGlvbklkIGRlbGV0ZVhpZCkKIHsKIAlnaXN0eGxvZ1BhZ2VSZXVzZSB4bHJlY19yZXVzZTsK IApAQCAtNjA4LDYgKzYwMyw3IEBAIGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8K IAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4bHJlY19yZXVzZS5pc0NhdGFsb2dSZWwgPSBSZWxh dGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjX3Jl dXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBi bGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IGRlbGV0ZVhp ZDsKQEAgLTY3MiwxMSArNjY4LDEyIEBAIGdpc3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIs CiAgKi8KIFhMb2dSZWNQdHIKIGdpc3RYTG9nRGVsZXRlKEJ1ZmZlciBidWZmZXIsIE9mZnNl dE51bWJlciAqdG9kZWxldGUsIGludCBudG9kZWxldGUsCi0JCQkgICBUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKQorCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlnaXN0eGxvZ0RlbGV0 ZSB4bHJlYzsKIAlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCXhscmVjLmlzQ2F0YWxvZ1JlbCA9 IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxy ZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAl4bHJlYy5udG9kZWxldGUgPSBudG9kZWxldGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gv aGFzaF94bG9nLmMKaW5kZXggZjM4YjQyZWZiOS4uMDhjZWI5MTI4OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTk4MCw4ICs5ODAsMTAgQEAgaGFzaF94bG9n X3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlQYWdlCQlwYWdl OwogCVhMb2dSZWRvQWN0aW9uIGFjdGlvbjsKIAlIYXNoUGFnZU9wYXF1ZSBwYWdlb3BhcXVl OworCU9mZnNldE51bWJlciAqdG9EZWxldGU7CiAKIAl4bGRhdGEgPSAoeGxfaGFzaF92YWN1 dW1fb25lX3BhZ2UgKikgWExvZ1JlY0dldERhdGEocmVjb3JkKTsKKwl0b0RlbGV0ZSA9IHhs ZGF0YS0+b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJv Y2Vzc2luZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0xMDEwLDE1ICsx MDEyLDcgQEAgaGFzaF94bG9nX3ZhY3V1bV9vbmVfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAl7CiAJCXBhZ2UgPSAoUGFnZSkgQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCi0J CWlmIChYTG9nUmVjR2V0RGF0YUxlbihyZWNvcmQpID4gU2l6ZU9mSGFzaFZhY3V1bU9uZVBh Z2UpCi0JCXsKLQkJCU9mZnNldE51bWJlciAqdW51c2VkOwotCi0JCQl1bnVzZWQgPSAoT2Zm c2V0TnVtYmVyICopICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZIYXNoVmFjdXVtT25lUGFn ZSk7Ci0KLQkJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHVudXNlZCwgeGxkYXRhLT5u dHVwbGVzKTsKLQkJfQotCisJCVBhZ2VJbmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvRGVsZXRl LCB4bGRhdGEtPm50dXBsZXMpOwogCQkvKgogCQkgKiBNYXJrIHRoZSBwYWdlIGFzIG5vdCBj b250YWluaW5nIGFueSBMUF9ERUFEIGl0ZW1zLiBTZWUgY29tbWVudHMgaW4KIAkJICogX2hh c2hfdmFjdXVtX29uZV9wYWdlKCkgZm9yIGRldGFpbHMuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFz aC9oYXNoaW5zZXJ0LmMKaW5kZXggYTYwNGUzMTg5MS4uMjI2NTZiMjRlMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYwpAQCAtNDMyLDYgKzQzMiw3IEBAIF9oYXNo X3ZhY3V1bV9vbmVfcGFnZShSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhyZWwsIEJ1ZmZlciBt ZXRhYnVmLCBCdWZmZXIgYnVmKQogCQkJeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgeGxyZWM7 CiAJCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAorCQkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVs YXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhocmVsKTsKIAkJCXhscmVjLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCQl4 bHJlYy5udHVwbGVzID0gbmRlbGV0YWJsZTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBlNjAyNGE5ODBiLi5kNDc4NzI0YjlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNjg3Miw2ICs2ODcyLDcgQEAgaGVhcF9mcmVlemVfZXhlY3V0ZV9wcmVw YXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZmZXIsCiAJCW5wbGFucyA9IGhlYXBfbG9n X2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywgcGxhbnMsIG9mZnNldHMpOwogCiAJCXhs cmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247 CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5zID0gbnBsYW5zOwogCiAJCVhMb2dCZWdp bkluc2VydCgpOwpAQCAtODQ0Miw3ICs4NDQzLDcgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hy aW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICogdXBkYXRlIHRoZSBoZWFwIHBh Z2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK K2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxfaGVhcF92aXNpYmxlIHhscmVjOwpAQCAt ODQ1NCw2ICs4NDU1LDggQEAgbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9j YXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCiAJeGxyZWMu c25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl4 bHJlYy5mbGFncyA9IHZtZmxhZ3M7CisJaWYgKFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcocmVsKSkKKwkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9JU19D QVRBTE9HX1JFTDsKIAlYTG9nQmVnaW5JbnNlcnQoKTsKIAlYTG9nUmVnaXN0ZXJEYXRhKChj aGFyICopICZ4bHJlYywgU2l6ZU9mSGVhcFZpc2libGUpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjNGIxOTE2ZDM2Li4zMDczMGMyNGJm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTcy MCwxMSArNzIwLDE2IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0 aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCQkJCQkJCSAqbXVsdGlfY3V0b2Zm KTsKIAogCi0JLyogU2V0IHVwIHNvcnRpbmcgaWYgd2FudGVkICovCisJLyoKKwkgKiBTZXQg dXAgc29ydGluZyBpZiB3YW50ZWQuIE5ld0hlYXAgaXMgYmVpbmcgcGFzc2VkIHRvCisJICog dHVwbGVzb3J0X2JlZ2luX2NsdXN0ZXIoKSwgaXQgY291bGQgaGF2ZSBiZWVuIE9sZEhlYXAg dG9vLiBJdCBkb2VzIG5vdAorCSAqIHJlYWxseSBtYXR0ZXIsIGFzIHRoZSBnb2FsIGlzIHRv IGhhdmUgYSBoZWFwIHJlbGF0aW9uIGJlaW5nIHBhc3NlZCB0bworCSAqIF9idF9sb2dfcmV1 c2VfcGFnZSgpICh3aGljaCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIHRoaXMgY29kZSBw YXRoKS4KKwkgKi8KIAlpZiAodXNlX3NvcnQpCiAJCXR1cGxlc29ydCA9IHR1cGxlc29ydF9i ZWdpbl9jbHVzdGVyKG9sZFR1cERlc2MsIE9sZEluZGV4LAogCQkJCQkJCQkJCQltYWludGVu YW5jZV93b3JrX21lbSwKLQkJCQkJCQkJCQkJTlVMTCwgVFVQTEVTT1JUX05PTkUpOworCQkJ CQkJCQkJCQlOVUxMLCBUVVBMRVNPUlRfTk9ORSwgTmV3SGVhcCk7CiAJZWxzZQogCQl0dXBs ZXNvcnQgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4 IDRlNjVjYmNhZGYuLjNmMDM0MjM1MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCkBAIC00MTgsNiArNDE4LDcgQEAgaGVhcF9wYWdlX3BydW5lKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJeGxfaGVhcF9wcnVuZSB4bHJlYzsKIAkJCVhM b2dSZWNQdHIJcmVjcHRyOwogCisJCQl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklz QWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbGF0aW9uKTsKIAkJCXhscmVjLnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uID0gcHJzdGF0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAkJCXhscmVjLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5ucmVkaXJlY3RlZDsKIAkJCXhscmVj Lm5kZWFkID0gcHJzdGF0ZS5uZGVhZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCA4ZjE0Y2Y4NWYzLi5hZTYyOGQ3NDdkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yNzEwLDYgKzI3MTAsNyBAQCBsYXp5X3ZhY3V1bV9v bmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0 LAogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcyOwogCWl2aW5mby5udW1faGVhcF90 dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFjcmVsLT5ic3RyYXRl Z3k7CisJaXZpbmZvLmhlYXByZWwgPSB2YWNyZWwtPnJlbDsKIAogCS8qCiAJICogVXBkYXRl IGVycm9yIHRyYWNlYmFjayBpbmZvcm1hdGlvbi4KQEAgLTI3NTksNiArMjc2MCw3IEBAIGxh enlfY2xlYW51cF9vbmVfaW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVS ZXN1bHQgKmlzdGF0LAogCiAJaXZpbmZvLm51bV9oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsK IAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJhdGVneTsKKwlpdmluZm8uaGVhcHJl bCA9IHZhY3JlbC0+cmVsOwogCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGlu Zm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJp bGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmlu ZGV4IDc0ZmYwMWJiMTcuLmQxYmE4NTk4NTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92aXNpYmlsaXR5bWFwLmMKQEAgLTI4OCw4ICsyODgsNyBAQCB2aXNpYmlsaXR5bWFwX3Nl dChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAog CQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQo IUluUmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9s b2NhdG9yLCBoZWFwQnVmLCB2bUJ1ZiwKLQkJCQkJCQkJCQkgIGN1dG9mZl94aWQsIGZsYWdz KTsKKwkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYs IGN1dG9mZl94aWQsIGZsYWdzKTsKIAogCQkJCS8qCiAJCQkJICogSWYgZGF0YSBjaGVja3N1 bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggZjRjMWE5NzRlZi4uYzQ4YjI3MjQzMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jCkBAIC0zMCw3ICszMCw4 IEBACiAjZGVmaW5lIEJUUkVFX0ZBU1RQQVRIX01JTl9MRVZFTAkyCiAKIAotc3RhdGljIEJU U3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGlu c2VydHN0YXRlKTsKK3N0YXRpYyBCVFN0YWNrIF9idF9zZWFyY2hfaW5zZXJ0KFJlbGF0aW9u IHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwKKwkJCQkJCQkJIFJlbGF0aW9uIGhl YXByZWwpOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsCiAJCQkJCQkJCQkgIFJlbGF0aW9u IGhlYXBSZWwsCiAJCQkJCQkJCQkgIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUsIGJv b2wgKmlzX3VuaXF1ZSwKQEAgLTQxLDcgKzQyLDcgQEAgc3RhdGljIE9mZnNldE51bWJlciBf YnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGJvb2wgaW5kZXhV bmNoYW5nZWQsCiAJCQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssCiAJCQkJCQkJCQkgIFJlbGF0 aW9uIGhlYXBSZWwpOwotc3RhdGljIHZvaWQgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWws IEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spOworc3RhdGljIHZv aWQgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3Rh dGUsIEJUU3RhY2sgc3RhY2ssIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIHZvaWQgX2J0 X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksCiAJCQkJ CQkgICBCdWZmZXIgYnVmLAogCQkJCQkJICAgQnVmZmVyIGNidWYsCkBAIC01MCwxNCArNTEs MTUgQEAgc3RhdGljIHZvaWQgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLCBCVFNjYW5J bnNlcnQgaXR1cF9rZXksCiAJCQkJCQkgICBTaXplIGl0ZW1zeiwKIAkJCQkJCSAgIE9mZnNl dE51bWJlciBuZXdpdGVtb2ZmLAogCQkJCQkJICAgaW50IHBvc3RpbmdvZmYsCi0JCQkJCQkg ICBib29sIHNwbGl0X29ubHlfcGFnZSk7CisJCQkJCQkgICBib29sIHNwbGl0X29ubHlfcGFn ZSwKKwkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIEJ1ZmZlciBfYnRfc3Bs aXQoUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsCiAJ CQkJCQlCdWZmZXIgY2J1ZiwgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRl bXN6LAogCQkJCQkJSW5kZXhUdXBsZSBuZXdpdGVtLCBJbmRleFR1cGxlIG9yaWduZXdpdGVt LAotCQkJCQkJSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpOworCQkJ CQkJSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYsIFJlbGF0aW9uIGhl YXByZWwpOwogc3RhdGljIHZvaWQgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLCBCdWZmZXIgcmJ1ZiwKLQkJCQkJCQkgIEJUU3RhY2sgc3RhY2ssIGJvb2wg aXNyb290LCBib29sIGlzb25seSk7Ci1zdGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKTsKKwkJCQkJCQkgIEJUU3RhY2sg c3RhY2ssIGJvb2wgaXNyb290LCBib29sIGlzb25seSwgUmVsYXRpb24gaGVhcHJlbCk7Citz dGF0aWMgQnVmZmVyIF9idF9uZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1 ZmZlciByYnVmLCBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyBpbmxpbmUgYm9vbCBfYnRf cGdhZGR0dXAoUGFnZSBwYWdlLCBTaXplIGl0ZW1zaXplLCBJbmRleFR1cGxlIGl0dXAsCiAJ CQkJCQkJCU9mZnNldE51bWJlciBpdHVwX29mZiwgYm9vbCBuZXdmaXJzdGRhdGFpdGVtKTsK IHN0YXRpYyB2b2lkIF9idF9kZWxldGVfb3JfZGVkdXBfb25lX3BhZ2UoUmVsYXRpb24gcmVs LCBSZWxhdGlvbiBoZWFwUmVsLApAQCAtMTA4LDcgKzExMCw3IEBAIF9idF9kb2luc2VydChS ZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAlib29sCQljaGVja2luZ3VuaXF1ZSA9 IChjaGVja1VuaXF1ZSAhPSBVTklRVUVfQ0hFQ0tfTk8pOwogCiAJLyogd2UgbmVlZCBhbiBp bnNlcnRpb24gc2NhbiBrZXkgdG8gZG8gb3VyIHNlYXJjaCwgc28gYnVpbGQgb25lICovCi0J aXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwgaXR1cCk7CisJaXR1cF9rZXkgPSBfYnRf bWtzY2Fua2V5KHJlbCwgaXR1cCwgaGVhcFJlbCk7CiAKIAlpZiAoY2hlY2tpbmd1bmlxdWUp CiAJewpAQCAtMTYyLDcgKzE2NCw3IEBAIHNlYXJjaDoKIAkgKiBzZWFyY2hpbmcgZnJvbSB0 aGUgcm9vdCBwYWdlLiAgaW5zZXJ0c3RhdGUuYnVmIHdpbGwgaG9sZCBhIGJ1ZmZlciB0aGF0 CiAJICogaXMgbG9ja2VkIGluIGV4Y2x1c2l2ZSBtb2RlIGFmdGVyd2FyZHMuCiAJICovCi0J c3RhY2sgPSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSk7CisJc3RhY2sg PSBfYnRfc2VhcmNoX2luc2VydChyZWwsICZpbnNlcnRzdGF0ZSwgaGVhcFJlbCk7CiAKIAkv KgogCSAqIGNoZWNraW5ndW5pcXVlIGluc2VydHMgYXJlIG5vdCBhbGxvd2VkIHRvIGdvIGFo ZWFkIHdoZW4gdHdvIHR1cGxlcyB3aXRoCkBAIC0yNTcsNyArMjU5LDcgQEAgc2VhcmNoOgog CQkJCQkJCQkJICAgaW5kZXhVbmNoYW5nZWQsIHN0YWNrLCBoZWFwUmVsKTsKIAkJX2J0X2lu c2VydG9ucGcocmVsLCBpdHVwX2tleSwgaW5zZXJ0c3RhdGUuYnVmLCBJbnZhbGlkQnVmZmVy LCBzdGFjaywKIAkJCQkJICAgaXR1cCwgaW5zZXJ0c3RhdGUuaXRlbXN6LCBuZXdpdGVtb2Zm LAotCQkJCQkgICBpbnNlcnRzdGF0ZS5wb3N0aW5nb2ZmLCBmYWxzZSk7CisJCQkJCSAgIGlu c2VydHN0YXRlLnBvc3RpbmdvZmYsIGZhbHNlLCBoZWFwUmVsKTsKIAl9CiAJZWxzZQogCXsK QEAgLTMxMiw3ICszMTQsNyBAQCBzZWFyY2g6CiAgKiBzaW5jZSBlYWNoIHBlci1iYWNrZW5k IGNhY2hlIHdvbid0IHN0YXkgdmFsaWQgZm9yIGxvbmcuCiAgKi8KIHN0YXRpYyBCVFN0YWNr Ci1fYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUpCitfYnRfc2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUg aW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQXNzZXJ0KGluc2VydHN0YXRl LT5idWYgPT0gSW52YWxpZEJ1ZmZlcik7CiAJQXNzZXJ0KCFpbnNlcnRzdGF0ZS0+Ym91bmRz X3ZhbGlkKTsKQEAgLTM3Niw3ICszNzgsNyBAQCBfYnRfc2VhcmNoX2luc2VydChSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpCiAKIAkvKiBDYW5ub3QgdXNlIG9w dGltaXphdGlvbiAtLSBkZXNjZW5kIHRyZWUsIHJldHVybiBwcm9wZXIgZGVzY2VudCBzdGFj ayAqLwogCXJldHVybiBfYnRfc2VhcmNoKHJlbCwgaW5zZXJ0c3RhdGUtPml0dXBfa2V5LCAm aW5zZXJ0c3RhdGUtPmJ1ZiwgQlRfV1JJVEUsCi0JCQkJCSAgTlVMTCk7CisJCQkJCSAgTlVM TCwgaGVhcHJlbCk7CiB9CiAKIC8qCkBAIC04ODUsNyArODg3LDcgQEAgX2J0X2ZpbmRpbnNl cnRsb2MoUmVsYXRpb24gcmVsLAogCQkJCQlfYnRfY29tcGFyZShyZWwsIGl0dXBfa2V5LCBw YWdlLCBQX0hJS0VZKSA8PSAwKQogCQkJCQlicmVhazsKIAotCQkJCV9idF9zdGVwcmlnaHQo cmVsLCBpbnNlcnRzdGF0ZSwgc3RhY2spOworCQkJCV9idF9zdGVwcmlnaHQocmVsLCBpbnNl cnRzdGF0ZSwgc3RhY2ssIGhlYXBSZWwpOwogCQkJCS8qIFVwZGF0ZSBsb2NhbCBzdGF0ZSBh ZnRlciBzdGVwcGluZyByaWdodCAqLwogCQkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2Vy dHN0YXRlLT5idWYpOwogCQkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKQEAg LTk2OSw3ICs5NzEsNyBAQCBfYnRfZmluZGluc2VydGxvYyhSZWxhdGlvbiByZWwsCiAJCQkJ cGdfcHJuZ191aW50MzIoJnBnX2dsb2JhbF9wcm5nX3N0YXRlKSA8PSAoUEdfVUlOVDMyX01B WCAvIDEwMCkpCiAJCQkJYnJlYWs7CiAKLQkJCV9idF9zdGVwcmlnaHQocmVsLCBpbnNlcnRz dGF0ZSwgc3RhY2spOworCQkJX2J0X3N0ZXByaWdodChyZWwsIGluc2VydHN0YXRlLCBzdGFj aywgaGVhcFJlbCk7CiAJCQkvKiBVcGRhdGUgbG9jYWwgc3RhdGUgYWZ0ZXIgc3RlcHBpbmcg cmlnaHQgKi8KIAkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGluc2VydHN0YXRlLT5idWYpOwog CQkJb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMTAyMiw3ICsxMDI0LDcg QEAgX2J0X2ZpbmRpbnNlcnRsb2MoUmVsYXRpb24gcmVsLAogICogaW5kZXhlcy4KICAqLwog c3RhdGljIHZvaWQKLV9idF9zdGVwcmlnaHQoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRl IGluc2VydHN0YXRlLCBCVFN0YWNrIHN0YWNrKQorX2J0X3N0ZXByaWdodChSZWxhdGlvbiBy ZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2ssIFJlbGF0aW9u IGhlYXByZWwpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAt MTA0OCw3ICsxMDUwLDcgQEAgX2J0X3N0ZXByaWdodChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0 U3RhdGUgaW5zZXJ0c3RhdGUsIEJUU3RhY2sgc3RhY2spCiAJCSAqLwogCQlpZiAoUF9JTkNP TVBMRVRFX1NQTElUKG9wYXF1ZSkpCiAJCXsKLQkJCV9idF9maW5pc2hfc3BsaXQocmVsLCBy YnVmLCBzdGFjayk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwgcmJ1Ziwgc3RhY2ssIGhl YXByZWwpOwogCQkJcmJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJCQljb250aW51ZTsKIAkJfQpA QCAtMTEwNyw3ICsxMTA5LDggQEAgX2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkJ ICAgU2l6ZSBpdGVtc3osCiAJCQkgICBPZmZzZXROdW1iZXIgbmV3aXRlbW9mZiwKIAkJCSAg IGludCBwb3N0aW5nb2ZmLAotCQkJICAgYm9vbCBzcGxpdF9vbmx5X3BhZ2UpCisJCQkgICBi b29sIHNwbGl0X29ubHlfcGFnZSwKKwkJCSAgIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFn ZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMTIxMCw3ICsxMjEzLDcgQEAg X2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCiAJCS8qIHNwbGl0IHRoZSBidWZmZXIg aW50byBsZWZ0IGFuZCByaWdodCBoYWx2ZXMgKi8KIAkJcmJ1ZiA9IF9idF9zcGxpdChyZWws IGl0dXBfa2V5LCBidWYsIGNidWYsIG5ld2l0ZW1vZmYsIGl0ZW1zeiwgaXR1cCwKLQkJCQkJ CSBvcmlnaXR1cCwgbnBvc3RpbmcsIHBvc3RpbmdvZmYpOworCQkJCQkJIG9yaWdpdHVwLCBu cG9zdGluZywgcG9zdGluZ29mZiwgaGVhcHJlbCk7CiAJCVByZWRpY2F0ZUxvY2tQYWdlU3Bs aXQocmVsLAogCQkJCQkJCSAgIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZiksCiAJCQkJCQkJ ICAgQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1ZikpOwpAQCAtMTIzMyw3ICsxMjM2LDcgQEAg X2J0X2luc2VydG9ucGcoUmVsYXRpb24gcmVsLAogCQkgKiBwYWdlLgogCQkgKi0tLS0tLS0t LS0KIAkJICovCi0JCV9idF9pbnNlcnRfcGFyZW50KHJlbCwgYnVmLCByYnVmLCBzdGFjaywg aXNyb290LCBpc29ubHkpOworCQlfYnRfaW5zZXJ0X3BhcmVudChyZWwsIGJ1ZiwgcmJ1Ziwg c3RhY2ssIGlzcm9vdCwgaXNvbmx5LCBoZWFwcmVsKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEy NTQsNyArMTI1Nyw3IEBAIF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIAkJCUFzc2Vy dCghaXNsZWFmKTsKIAkJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGNidWYpKTsKIAotCQkJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQkJ bWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUsIGhl YXByZWwpOwogCQkJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFk ID0gQlRQYWdlR2V0TWV0YShtZXRhcGcpOwogCkBAIC0xNDE4LDcgKzE0MjEsNyBAQCBfYnRf aW5zZXJ0b25wZyhSZWxhdGlvbiByZWwsCiAJCSAqIGNhbGwgX2J0X2dldHJvb3RoZWlnaHQg d2hpbGUgaG9sZGluZyBhIGJ1ZmZlciBsb2NrLgogCQkgKi8KIAkJaWYgKEJsb2NrTnVtYmVy SXNWYWxpZChibG9ja2NhY2hlKSAmJgotCQkJX2J0X2dldHJvb3RoZWlnaHQocmVsKSA+PSBC VFJFRV9GQVNUUEFUSF9NSU5fTEVWRUwpCisJCQlfYnRfZ2V0cm9vdGhlaWdodChyZWwsIGhl YXByZWwpID49IEJUUkVFX0ZBU1RQQVRIX01JTl9MRVZFTCkKIAkJCVJlbGF0aW9uU2V0VGFy Z2V0QmxvY2socmVsLCBibG9ja2NhY2hlKTsKIAl9CiAKQEAgLTE0NjEsNyArMTQ2NCw4IEBA IF9idF9pbnNlcnRvbnBnKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBCdWZmZXIKIF9idF9zcGxp dChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBpdHVwX2tleSwgQnVmZmVyIGJ1ZiwgQnVm ZmVyIGNidWYsCiAJCSAgT2Zmc2V0TnVtYmVyIG5ld2l0ZW1vZmYsIFNpemUgbmV3aXRlbXN6 LCBJbmRleFR1cGxlIG5ld2l0ZW0sCi0JCSAgSW5kZXhUdXBsZSBvcmlnbmV3aXRlbSwgSW5k ZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYpCisJCSAgSW5kZXhUdXBsZSBv cmlnbmV3aXRlbSwgSW5kZXhUdXBsZSBucG9zdGluZywgdWludDE2IHBvc3RpbmdvZmYsCisJ CSAgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCXJidWY7CiAJUGFnZQkJb3JpZ3Bh Z2U7CkBAIC0xNzEyLDcgKzE3MTYsNyBAQCBfYnRfc3BsaXQoUmVsYXRpb24gcmVsLCBCVFNj YW5JbnNlcnQgaXR1cF9rZXksIEJ1ZmZlciBidWYsIEJ1ZmZlciBjYnVmLAogCSAqIHdheSBi ZWNhdXNlIGl0IGF2b2lkcyBhbiB1bm5lY2Vzc2FyeSBQQU5JQyB3aGVuIGVpdGhlciBvcmln cGFnZSBvciBpdHMKIAkgKiBleGlzdGluZyBzaWJsaW5nIHBhZ2UgYXJlIGNvcnJ1cHQuCiAJ ICovCi0JcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUpOworCXJidWYg PSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAlyaWdodHBh Z2UgPSBCdWZmZXJHZXRQYWdlKHJidWYpOwogCXJpZ2h0cGFnZW51bWJlciA9IEJ1ZmZlckdl dEJsb2NrTnVtYmVyKHJidWYpOwogCS8qIHJpZ2h0cGFnZSB3YXMgaW5pdGlhbGl6ZWQgYnkg X2J0X2dldGJ1ZiAqLwpAQCAtMTg4NSw3ICsxODg5LDcgQEAgX2J0X3NwbGl0KFJlbGF0aW9u IHJlbCwgQlRTY2FuSW5zZXJ0IGl0dXBfa2V5LCBCdWZmZXIgYnVmLCBCdWZmZXIgY2J1ZiwK IAkgKi8KIAlpZiAoIWlzcmlnaHRtb3N0KQogCXsKLQkJc2J1ZiA9IF9idF9nZXRidWYocmVs LCBvb3BhcXVlLT5idHBvX25leHQsIEJUX1dSSVRFKTsKKwkJc2J1ZiA9IF9idF9nZXRidWYo cmVsLCBvb3BhcXVlLT5idHBvX25leHQsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAkJc3BhZ2Ug PSBCdWZmZXJHZXRQYWdlKHNidWYpOwogCQlzb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKHNw YWdlKTsKIAkJaWYgKHNvcGFxdWUtPmJ0cG9fcHJldiAhPSBvcmlncGFnZW51bWJlcikKQEAg LTIwOTYsNyArMjEwMCw4IEBAIF9idF9pbnNlcnRfcGFyZW50KFJlbGF0aW9uIHJlbCwKIAkJ CQkgIEJ1ZmZlciByYnVmLAogCQkJCSAgQlRTdGFjayBzdGFjaywKIAkJCQkgIGJvb2wgaXNy b290LAotCQkJCSAgYm9vbCBpc29ubHkpCisJCQkJICBib29sIGlzb25seSwKKwkJCQkgIFJl bGF0aW9uIGhlYXByZWwpCiB7CiAJLyoKIAkgKiBIZXJlIHdlIGhhdmUgdG8gZG8gc29tZXRo aW5nIExlaG1hbiBhbmQgWWFvIGRvbid0IHRhbGsgYWJvdXQ6IGRlYWwgd2l0aApAQCAtMjEx OCw3ICsyMTIzLDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQlBc3Nl cnQoc3RhY2sgPT0gTlVMTCk7CiAJCUFzc2VydChpc29ubHkpOwogCQkvKiBjcmVhdGUgYSBu ZXcgcm9vdCBub2RlIGFuZCB1cGRhdGUgdGhlIG1ldGFwYWdlICovCi0JCXJvb3RidWYgPSBf YnRfbmV3cm9vdChyZWwsIGJ1ZiwgcmJ1Zik7CisJCXJvb3RidWYgPSBfYnRfbmV3cm9vdChy ZWwsIGJ1ZiwgcmJ1ZiwgaGVhcHJlbCk7CiAJCS8qIHJlbGVhc2UgdGhlIHNwbGl0IGJ1ZmZl cnMgKi8KIAkJX2J0X3JlbGJ1ZihyZWwsIHJvb3RidWYpOwogCQlfYnRfcmVsYnVmKHJlbCwg cmJ1Zik7CkBAIC0yMTU3LDcgKzIxNjIsOCBAQCBfYnRfaW5zZXJ0X3BhcmVudChSZWxhdGlv biByZWwsCiAJCQkJCSBCbG9ja051bWJlcklzVmFsaWQoUmVsYXRpb25HZXRUYXJnZXRCbG9j ayhyZWwpKSkpOwogCiAJCQkvKiBGaW5kIHRoZSBsZWZ0bW9zdCBwYWdlIGF0IHRoZSBuZXh0 IGxldmVsIHVwICovCi0JCQlwYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIG9wYXF1ZS0+ YnRwb19sZXZlbCArIDEsIGZhbHNlLCBOVUxMKTsKKwkJCXBidWYgPSBfYnRfZ2V0X2VuZHBv aW50KHJlbCwgb3BhcXVlLT5idHBvX2xldmVsICsgMSwgZmFsc2UsIE5VTEwsCisJCQkJCQkJ CQloZWFwcmVsKTsKIAkJCS8qIFNldCB1cCBhIHBob255IHN0YWNrIGVudHJ5IHBvaW50aW5n IHRoZXJlICovCiAJCQlzdGFjayA9ICZmYWtlc3RhY2s7CiAJCQlzdGFjay0+YnRzX2Jsa25v ID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIocGJ1Zik7CkBAIC0yMTgzLDcgKzIxODksNyBAQCBf YnRfaW5zZXJ0X3BhcmVudChSZWxhdGlvbiByZWwsCiAJCSAqIG5ldyBkb3dubGluayB3aWxs IGJlIGluc2VydGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldC4gRXZlbiBidWYncwogCQkgKiBw YXJlbnQgbWF5IGhhdmUgY2hhbmdlZC4KIAkJICovCi0JCXBidWYgPSBfYnRfZ2V0c3RhY2ti dWYocmVsLCBzdGFjaywgYmtudW0pOworCQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwg c3RhY2ssIGJrbnVtLCBoZWFwcmVsKTsKIAogCQkvKgogCQkgKiBVbmxvY2sgdGhlIHJpZ2h0 IGNoaWxkLiAgVGhlIGxlZnQgY2hpbGQgd2lsbCBiZSB1bmxvY2tlZCBpbgpAQCAtMjIwOSw3 ICsyMjE1LDcgQEAgX2J0X2luc2VydF9wYXJlbnQoUmVsYXRpb24gcmVsLAogCQkvKiBSZWN1 cnNpdmVseSBpbnNlcnQgaW50byB0aGUgcGFyZW50ICovCiAJCV9idF9pbnNlcnRvbnBnKHJl bCwgTlVMTCwgcGJ1ZiwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCwKIAkJCQkJICAgbmV3X2l0 ZW0sIE1BWEFMSUdOKEluZGV4VHVwbGVTaXplKG5ld19pdGVtKSksCi0JCQkJCSAgIHN0YWNr LT5idHNfb2Zmc2V0ICsgMSwgMCwgaXNvbmx5KTsKKwkJCQkJICAgc3RhY2stPmJ0c19vZmZz ZXQgKyAxLCAwLCBpc29ubHksIGhlYXByZWwpOwogCiAJCS8qIGJlIHRpZHkgKi8KIAkJcGZy ZWUobmV3X2l0ZW0pOwpAQCAtMjIyNyw3ICsyMjMzLDcgQEAgX2J0X2luc2VydF9wYXJlbnQo UmVsYXRpb24gcmVsLAogICogYW5kIHVucGlubmVkLgogICovCiB2b2lkCi1fYnRfZmluaXNo X3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCitfYnRf ZmluaXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2ss IFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFnZQkJbHBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxi dWYpOwogCUJUUGFnZU9wYXF1ZSBscGFnZW9wID0gQlRQYWdlR2V0T3BhcXVlKGxwYWdlKTsK QEAgLTIyNDAsNyArMjI0Niw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaykKIAlBc3NlcnQoUF9JTkNPTVBMRVRFX1NQTElU KGxwYWdlb3ApKTsKIAogCS8qIExvY2sgcmlnaHQgc2libGluZywgdGhlIG9uZSBtaXNzaW5n IHRoZSBkb3dubGluayAqLwotCXJidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbHBhZ2VvcC0+YnRw b19uZXh0LCBCVF9XUklURSk7CisJcmJ1ZiA9IF9idF9nZXRidWYocmVsLCBscGFnZW9wLT5i dHBvX25leHQsIEJUX1dSSVRFLCBoZWFwcmVsKTsKIAlycGFnZSA9IEJ1ZmZlckdldFBhZ2Uo cmJ1Zik7CiAJcnBhZ2VvcCA9IEJUUGFnZUdldE9wYXF1ZShycGFnZSk7CiAKQEAgLTIyNTIs NyArMjI1OCw3IEBAIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGJ1 ZiwgQlRTdGFjayBzdGFjaykKIAkJQlRNZXRhUGFnZURhdGEgKm1ldGFkOwogCiAJCS8qIGFj cXVpcmUgbG9jayBvbiB0aGUgbWV0YXBhZ2UgKi8KLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfV1JJVEUpOworCQltZXRhYnVmID0gX2J0X2dldGJ1 ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9XUklURSwgaGVhcHJlbCk7CiAJCW1ldGFwZyA9 IEJ1ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJCW1ldGFkID0gQlRQYWdlR2V0TWV0YShtZXRh cGcpOwogCkBAIC0yMjY5LDcgKzIyNzUsNyBAQCBfYnRfZmluaXNoX3NwbGl0KFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAJZWxvZyhERUJVRzEsICJmaW5p c2hpbmcgaW5jb21wbGV0ZSBzcGxpdCBvZiAldS8ldSIsCiAJCSBCdWZmZXJHZXRCbG9ja051 bWJlcihsYnVmKSwgQnVmZmVyR2V0QmxvY2tOdW1iZXIocmJ1ZikpOwogCi0JX2J0X2luc2Vy dF9wYXJlbnQocmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fzb25seSk7CisJ X2J0X2luc2VydF9wYXJlbnQocmVsLCBsYnVmLCByYnVmLCBzdGFjaywgd2Fzcm9vdCwgd2Fz b25seSwgaGVhcHJlbCk7CiB9CiAKIC8qCkBAIC0yMzA0LDcgKzIzMTAsNyBAQCBfYnRfZmlu aXNoX3NwbGl0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJUU3RhY2sgc3RhY2spCiAg KgkJb2Zmc2V0IG51bWJlciBidHNfb2Zmc2V0ICsgMS4KICAqLwogQnVmZmVyCi1fYnRfZ2V0 c3RhY2tidWYoUmVsYXRpb24gcmVsLCBCVFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGls ZCkKK19idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2Nr TnVtYmVyIGNoaWxkLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJsb2NrTnVtYmVyIGJsa25v OwogCU9mZnNldE51bWJlciBzdGFydDsKQEAgLTIzMTgsMTMgKzIzMjQsMTMgQEAgX2J0X2dl dHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hp bGQpCiAJCVBhZ2UJCXBhZ2U7CiAJCUJUUGFnZU9wYXF1ZSBvcGFxdWU7CiAKLQkJYnVmID0g X2J0X2dldGJ1ZihyZWwsIGJsa25vLCBCVF9XUklURSk7CisJCWJ1ZiA9IF9idF9nZXRidWYo cmVsLCBibGtubywgQlRfV1JJVEUsIGhlYXByZWwpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWYpOwogCQlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAKIAkJaWYgKFBf SU5DT01QTEVURV9TUExJVChvcGFxdWUpKQogCQl7Ci0JCQlfYnRfZmluaXNoX3NwbGl0KHJl bCwgYnVmLCBzdGFjay0+YnRzX3BhcmVudCk7CisJCQlfYnRfZmluaXNoX3NwbGl0KHJlbCwg YnVmLCBzdGFjay0+YnRzX3BhcmVudCwgaGVhcHJlbCk7CiAJCQljb250aW51ZTsKIAkJfQog CkBAIC0yNDI4LDcgKzI0MzQsNyBAQCBfYnRfZ2V0c3RhY2tidWYoUmVsYXRpb24gcmVsLCBC VFN0YWNrIHN0YWNrLCBCbG9ja051bWJlciBjaGlsZCkKICAqCQlsYnVmLCByYnVmICYgcm9v dGJ1Zi4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X25ld3Jvb3QoUmVsYXRpb24gcmVsLCBC dWZmZXIgbGJ1ZiwgQnVmZmVyIHJidWYpCitfYnRfbmV3cm9vdChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBsYnVmLCBCdWZmZXIgcmJ1ZiwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJ CXJvb3RidWY7CiAJUGFnZQkJbHBhZ2UsCkBAIC0yNDU0LDEyICsyNDYwLDEyIEBAIF9idF9u ZXdyb290KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxidWYsIEJ1ZmZlciByYnVmKQogCWxvcGFx dWUgPSBCVFBhZ2VHZXRPcGFxdWUobHBhZ2UpOwogCiAJLyogZ2V0IGEgbmV3IHJvb3QgcGFn ZSAqLwotCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwly b290YnVmID0gX2J0X2dldGJ1ZihyZWwsIFBfTkVXLCBCVF9XUklURSwgaGVhcHJlbCk7CiAJ cm9vdHBhZ2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCXJvb3RibGtudW0gPSBCdWZm ZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsKIAogCS8qIGFjcXVpcmUgbG9jayBvbiB0aGUg bWV0YXBhZ2UgKi8KLQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdF LCBCVF9XUklURSk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUsIGhlYXByZWwpOwogCW1ldGFwZyA9IEJ1ZmZlckdldFBhZ2UobWV0YWJ1 Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRwYWdlLmMKaW5kZXggM2ZlZWUyOGQxOS4uZWRjYTdhZWJiMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMKQEAgLTM5LDE2ICszOSwxOSBAQAogCiBz dGF0aWMgQlRNZXRhUGFnZURhdGEgKl9idF9nZXRtZXRhKFJlbGF0aW9uIHJlbCwgQnVmZmVy IG1ldGFidWYpOwogc3RhdGljIHZvaWQgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgYmxrbm8sCi0JCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2Fm ZXhpZCk7CisJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCwKKwkJCQkJCQkg ICBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyB2b2lkIF9idF9kZWxpdGVtc19kZWxldGUo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQlUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQlPZmZzZXROdW1iZXIgKmRlbGV0YWJsZSwg aW50IG5kZWxldGFibGUsCi0JCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBp bnQgbnVwZGF0YWJsZSk7CisJCQkJCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRhYmxlLCBp bnQgbnVwZGF0YWJsZSwKKwkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCk7CiBzdGF0aWMgY2hh ciAqX2J0X2RlbGl0ZW1zX3VwZGF0ZShCVFZhY3V1bVBvc3RpbmcgKnVwZGF0YWJsZSwgaW50 IG51cGRhdGFibGUsCiAJCQkJCQkJCSBPZmZzZXROdW1iZXIgKnVwZGF0ZWRvZmZzZXRzLAog CQkJCQkJCQkgU2l6ZSAqdXBkYXRlZGJ1ZmxlbiwgYm9vbCBuZWVkc3dhbCk7CiBzdGF0aWMg Ym9vbCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsCi0JCQkJCQkJCSAgIEJUU3RhY2sgc3RhY2spOworCQkJCQkJCQkgICBCVFN0YWNrIHN0 YWNrLAorCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVsKTsKIHN0YXRpYyBib29sIF9idF91 bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLAogCQkJ CQkJCQkJIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJCQkJCQkJCSBib29sICpyaWdodHNp Yl9lbXB0eSwKQEAgLTU4LDcgKzYxLDggQEAgc3RhdGljIGJvb2wgX2J0X2xvY2tfc3VidHJl ZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBjaGlsZCwKIAkJCQkJCQkJCUJ1 ZmZlciAqc3VidHJlZXBhcmVudCwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqcG9mZnNldCwK IAkJCQkJCQkJCUJsb2NrTnVtYmVyICp0b3BwYXJlbnQsCi0JCQkJCQkJCQlCbG9ja051bWJl ciAqdG9wcGFyZW50cmlnaHRzaWIpOworCQkJCQkJCQkJQmxvY2tOdW1iZXIgKnRvcHBhcmVu dHJpZ2h0c2liLAorCQkJCQkJCQkJUmVsYXRpb24gaGVhcHJlbCk7CiBzdGF0aWMgdm9pZCBf YnRfcGVuZGluZ2ZzbV9hZGQoQlRWYWNTdGF0ZSAqdnN0YXRlLCBCbG9ja051bWJlciB0YXJn ZXQsCiAJCQkJCQkJICAgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCk7CiAKQEAgLTE3OCw3 ICsxODIsNyBAQCBfYnRfZ2V0bWV0YShSZWxhdGlvbiByZWwsIEJ1ZmZlciBtZXRhYnVmKQog ICogaW5kZXggdHVwbGVzIG5lZWRlZCB0byBiZSBkZWxldGVkLgogICovCiBib29sCi1fYnRf dmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKQorX2J0X3ZhY3V1bV9uZWVkc19j bGVhbnVwKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCW1l dGFidWY7CiAJUGFnZQkJbWV0YXBnOwpAQCAtMTkxLDcgKzE5NSw3IEBAIF9idF92YWN1dW1f bmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpCiAJICoKIAkgKiBOb3RlIHRoYXQgd2UgZGVs aWJlcmF0ZWx5IGF2b2lkIHVzaW5nIGNhY2hlZCB2ZXJzaW9uIG9mIG1ldGFwYWdlIGhlcmUu CiAJICovCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf UkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRf UkVBRCwgaGVhcHJlbCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAlt ZXRhZCA9IEJUUGFnZUdldE1ldGEobWV0YXBnKTsKIAlidG1fdmVyc2lvbiA9IG1ldGFkLT5i dG1fdmVyc2lvbjsKQEAgLTIzMSw3ICsyMzUsNyBAQCBfYnRfdmFjdXVtX25lZWRzX2NsZWFu dXAoUmVsYXRpb24gcmVsKQogICogZmluYWxpemVkLgogICovCiB2b2lkCi1fYnRfc2V0X2Ns ZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKK19i dF9zZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBh Z2VzLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsKIAlQYWdlCQlt ZXRhcGc7CkBAIC0yNTUsNyArMjU5LDcgQEAgX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMpCiAJICogbm8gbG9uZ2VyIHVzZWQg YXMgb2YgUG9zdGdyZVNRTCAxNC4gIFdlIHNldCBpdCB0byAtMS4wIG9uIHJld3JpdGUsIGp1 c3QKIAkgKiB0byBiZSBjb25zaXN0ZW50LgogCSAqLwotCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQpOworCW1ldGFidWYgPSBfYnRfZ2V0YnVm KHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXByZWwpOwogCW1ldGFwZyA9IEJ1 ZmZlckdldFBhZ2UobWV0YWJ1Zik7CiAJbWV0YWQgPSBCVFBhZ2VHZXRNZXRhKG1ldGFwZyk7 CiAKQEAgLTM0MCw3ICszNDQsNyBAQCBfYnRfc2V0X2NsZWFudXBfaW5mbyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcykKICAqCQlUaGUgbWV0YWRhdGEgcGFnZSBp cyBub3QgbG9ja2VkIG9yIHBpbm5lZCBvbiBleGl0LgogICovCiBCdWZmZXIKLV9idF9nZXRy b290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKK19idF9nZXRyb290KFJlbGF0aW9uIHJl bCwgaW50IGFjY2VzcywgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCW1ldGFidWY7 CiAJQnVmZmVyCQlyb290YnVmOwpAQCAtMzcwLDcgKzM3NCw3IEBAIF9idF9nZXRyb290KFJl bGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJQXNzZXJ0KHJvb3RibGtubyAhPSBQX05PTkUp OwogCQlyb290bGV2ZWwgPSBtZXRhZC0+YnRtX2Zhc3RsZXZlbDsKIAotCQlyb290YnVmID0g X2J0X2dldGJ1ZihyZWwsIHJvb3RibGtubywgQlRfUkVBRCk7CisJCXJvb3RidWYgPSBfYnRf Z2V0YnVmKHJlbCwgcm9vdGJsa25vLCBCVF9SRUFELCBoZWFwcmVsKTsKIAkJcm9vdHBhZ2Ug PSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQYWdlR2V0T3Bh cXVlKHJvb3RwYWdlKTsKIApAQCAtMzk2LDcgKzQwMCw3IEBAIF9idF9nZXRyb290KFJlbGF0 aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJcmVsLT5yZF9hbWNhY2hlID0gTlVMTDsKIAl9CiAK LQltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFEKTsK KwltZXRhYnVmID0gX2J0X2dldGJ1ZihyZWwsIEJUUkVFX01FVEFQQUdFLCBCVF9SRUFELCBo ZWFwcmVsKTsKIAltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkvKiBp ZiBubyByb290IHBhZ2UgaW5pdGlhbGl6ZWQgeWV0LCBkbyBpdCAqLwpAQCAtNDI5LDcgKzQz Myw3IEBAIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcykKIAkJCSAqIHRv IG9wdGltaXplIHRoaXMgY2FzZS4pCiAJCQkgKi8KIAkJCV9idF9yZWxidWYocmVsLCBtZXRh YnVmKTsKLQkJCXJldHVybiBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJCQlyZXR1cm4g X2J0X2dldHJvb3QocmVsLCBhY2Nlc3MsIGhlYXByZWwpOwogCQl9CiAKIAkJLyoKQEAgLTQz Nyw3ICs0NDEsNyBAQCBfYnRfZ2V0cm9vdChSZWxhdGlvbiByZWwsIGludCBhY2Nlc3MpCiAJ CSAqIHRoZSBuZXcgcm9vdCBwYWdlLiAgU2luY2UgdGhpcyBpcyB0aGUgZmlyc3QgcGFnZSBp biB0aGUgdHJlZSwgaXQncwogCQkgKiBhIGxlYWYgYXMgd2VsbCBhcyB0aGUgcm9vdC4KIAkJ ICovCi0JCXJvb3RidWYgPSBfYnRfZ2V0YnVmKHJlbCwgUF9ORVcsIEJUX1dSSVRFKTsKKwkJ cm9vdGJ1ZiA9IF9idF9nZXRidWYocmVsLCBQX05FVywgQlRfV1JJVEUsIGhlYXByZWwpOwog CQlyb290Ymxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihyb290YnVmKTsKIAkJcm9vdHBh Z2UgPSBCdWZmZXJHZXRQYWdlKHJvb3RidWYpOwogCQlyb290b3BhcXVlID0gQlRQYWdlR2V0 T3BhcXVlKHJvb3RwYWdlKTsKQEAgLTU3NCw3ICs1NzgsNyBAQCBfYnRfZ2V0cm9vdChSZWxh dGlvbiByZWwsIGludCBhY2Nlc3MpCiAgKiBtb3ZpbmcgdG8gdGhlIHJvb3QgLS0tIHRoYXQn ZCBkZWFkbG9jayBhZ2FpbnN0IGFueSBjb25jdXJyZW50IHJvb3Qgc3BsaXQuKQogICovCiBC dWZmZXIKLV9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwpCitfYnRfZ2V0dHJ1ZXJvb3Qo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJbWV0YWJ1ZjsK IAlQYWdlCQltZXRhcGc7CkBAIC01OTYsNyArNjAwLDcgQEAgX2J0X2dldHRydWVyb290KFJl bGF0aW9uIHJlbCkKIAkJcGZyZWUocmVsLT5yZF9hbWNhY2hlKTsKIAlyZWwtPnJkX2FtY2Fj aGUgPSBOVUxMOwogCi0JbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfUkVBRCk7CisJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfUkVBRCwgaGVhcHJlbCk7CiAJbWV0YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVm KTsKIAltZXRhb3BhcXVlID0gQlRQYWdlR2V0T3BhcXVlKG1ldGFwZyk7CiAJbWV0YWQgPSBC VFBhZ2VHZXRNZXRhKG1ldGFwZyk7CkBAIC02NjksNyArNjczLDcgQEAgX2J0X2dldHRydWVy b290KFJlbGF0aW9uIHJlbCkKICAqCQlhYm91dCB1cGRhdGluZyBwcmV2aW91c2x5IGNhY2hl ZCBkYXRhLgogICovCiBpbnQKLV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCkKK19i dF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlC VE1ldGFQYWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTY3Nyw3ICs2ODEsNyBAQCBfYnRfZ2V0cm9v dGhlaWdodChSZWxhdGlvbiByZWwpCiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0 YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1l dGFidWYgPSBfYnRfZ2V0YnVmKHJlbCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXBy ZWwpOwogCQltZXRhZCA9IF9idF9nZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAg LTczMyw3ICs3MzcsNyBAQCBfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlvbiByZWwpCiAgKgkJ cGdfdXBncmFkZSdkIGZyb20gUG9zdGdyZXMgMTIuCiAgKi8KIHZvaWQKLV9idF9tZXRhdmVy c2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFjZSwgYm9vbCAqYWxsZXF1YWxp bWFnZSkKK19idF9tZXRhdmVyc2lvbihSZWxhdGlvbiByZWwsIGJvb2wgKmhlYXBrZXlzcGFj ZSwgYm9vbCAqYWxsZXF1YWxpbWFnZSwgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCVE1ldGFQ YWdlRGF0YSAqbWV0YWQ7CiAKQEAgLTc0MSw3ICs3NDUsNyBAQCBfYnRfbWV0YXZlcnNpb24o UmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsIGJvb2wgKmFsbGVxdWFsaW1hZ2Up CiAJewogCQlCdWZmZXIJCW1ldGFidWY7CiAKLQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVs LCBCVFJFRV9NRVRBUEFHRSwgQlRfUkVBRCk7CisJCW1ldGFidWYgPSBfYnRfZ2V0YnVmKHJl bCwgQlRSRUVfTUVUQVBBR0UsIEJUX1JFQUQsIGhlYXByZWwpOwogCQltZXRhZCA9IF9idF9n ZXRtZXRhKHJlbCwgbWV0YWJ1Zik7CiAKIAkJLyoKQEAgLTgyNSw3ICs4MjksNyBAQCBfYnRf Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZikKICAqIExvZyB0aGUgcmV1c2Ug b2YgYSBwYWdlIGZyb20gdGhlIEZTTS4KICAqLwogc3RhdGljIHZvaWQKLV9idF9sb2dfcmV1 c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rp b25JZCBzYWZleGlkKQorX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQsIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJeGxfYnRyZWVfcmV1c2VfcGFnZSB4bHJlY19yZXVzZTsKIApAQCAtODM2LDYg Kzg0MCw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZleGlkKQogCSAqLwogCiAJLyogWExPRyBz dHVmZiAqLworCXhscmVjX3JldXNlLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcoaGVhcHJlbCk7CiAJeGxyZWNfcmV1c2UubG9jYXRvciA9 IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25vOwogCXhscmVj X3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc2FmZXhpZDsKQEAgLTg2OCw3ICs4 NzMsNyBAQCBfYnRfbG9nX3JldXNlX3BhZ2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywgRnVsbFRyYW5zYWN0aW9uSWQgc2FmZXhpZCkKICAqCQlhcyBfYnRfbG9ja2J1Zigp LgogICovCiBCdWZmZXIKLV9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBi bGtubywgaW50IGFjY2VzcykKK19idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBibGtubywgaW50IGFjY2VzcywgUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlCdWZmZXIJCWJ1 ZjsKIApAQCAtOTQ0LDcgKzk0OSw3IEBAIF9idF9nZXRidWYoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBibGtubywgaW50IGFjY2VzcykKIAkJCQkJICovCiAJCQkJCWlmIChYTG9nU3Rh bmRieUluZm9BY3RpdmUoKSAmJiBSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCiAJCQkJCQlfYnRf bG9nX3JldXNlX3BhZ2UocmVsLCBibGtubywKLQkJCQkJCQkJCQkgICBCVFBhZ2VHZXREZWxl dGVYaWQocGFnZSkpOworCQkJCQkJCQkJCSAgIEJUUGFnZUdldERlbGV0ZVhpZChwYWdlKSwg aGVhcHJlbCk7CiAKIAkJCQkJLyogT2theSB0byB1c2UgcGFnZS4gIFJlLWluaXRpYWxpemUg YW5kIHJldHVybiBpdC4gKi8KIAkJCQkJX2J0X3BhZ2Vpbml0KHBhZ2UsIEJ1ZmZlckdldFBh Z2VTaXplKGJ1ZikpOwpAQCAtMTI5Niw3ICsxMzAxLDcgQEAgc3RhdGljIHZvaWQKIF9idF9k ZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQlUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQlPZmZzZXROdW1iZXIgKmRl bGV0YWJsZSwgaW50IG5kZWxldGFibGUsCi0JCQkJCUJUVmFjdXVtUG9zdGluZyAqdXBkYXRh YmxlLCBpbnQgbnVwZGF0YWJsZSkKKwkJCQkJQlRWYWN1dW1Qb3N0aW5nICp1cGRhdGFibGUs IGludCBudXBkYXRhYmxlLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1Zik7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTEzNTgsNiAr MTM2Myw3IEBAIF9idF9kZWxpdGVtc19kZWxldGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAogCQlYTG9nUmVjUHRyCXJlY3B0cjsKIAkJeGxfYnRyZWVfZGVsZXRlIHhscmVjX2RlbGV0 ZTsKIAorCQl4bHJlY19kZWxldGUuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2li bGVJbkxvZ2ljYWxEZWNvZGluZyhoZWFwcmVsKTsKIAkJeGxyZWNfZGVsZXRlLnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCXhscmVjX2Rl bGV0ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9 IG51cGRhdGFibGU7CkBAIC0xNjg1LDcgKzE2OTEsNyBAQCBfYnRfZGVsaXRlbXNfZGVsZXRl X2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgUmVsYXRpb24gaGVhcFJlbCwKIAog CS8qIFBoeXNpY2FsbHkgZGVsZXRlIHR1cGxlcyAob3IgVElEcykgdXNpbmcgZGVsZXRhYmxl IChvciB1cGRhdGFibGUpICovCiAJX2J0X2RlbGl0ZW1zX2RlbGV0ZShyZWwsIGJ1Ziwgc25h cHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQlkZWxldGFibGUsIG5kZWxldGFibGUsIHVw ZGF0YWJsZSwgbnVwZGF0YWJsZSk7CisJCQkJCQlkZWxldGFibGUsIG5kZWxldGFibGUsIHVw ZGF0YWJsZSwgbnVwZGF0YWJsZSwgaGVhcFJlbCk7CiAKIAkvKiBiZSB0aWR5ICovCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBudXBkYXRhYmxlOyBpKyspCkBAIC0xNzA2LDcgKzE3MTIsNyBA QCBfYnRfZGVsaXRlbXNfZGVsZXRlX2NoZWNrKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1Ziwg UmVsYXRpb24gaGVhcFJlbCwKICAqIHNhbWUgbGV2ZWwgbXVzdCBhbHdheXMgYmUgbG9ja2Vk IGxlZnQgdG8gcmlnaHQgdG8gYXZvaWQgZGVhZGxvY2tzLgogICovCiBzdGF0aWMgYm9vbAot X2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNp YiwgQmxvY2tOdW1iZXIgdGFyZ2V0KQorX2J0X2xlZnRzaWJfc3BsaXRmbGFnKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgbGVmdHNpYiwgQmxvY2tOdW1iZXIgdGFyZ2V0LCBSZWxhdGlv biBoZWFwcmVsKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBAIC0xNzE3LDcg KzE3MjMsNyBAQCBfYnRfbGVmdHNpYl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051 bWJlciBsZWZ0c2liLCBCbG9ja051bWJlciB0YXJnZXQpCiAJaWYgKGxlZnRzaWIgPT0gUF9O T05FKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNp YiwgQlRfUkVBRCk7CisJYnVmID0gX2J0X2dldGJ1ZihyZWwsIGxlZnRzaWIsIEJUX1JFQUQs IGhlYXByZWwpOwogCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJb3BhcXVlID0gQlRQ YWdlR2V0T3BhcXVlKHBhZ2UpOwogCkBAIC0xNzYzLDcgKzE3NjksNyBAQCBfYnRfbGVmdHNp Yl9zcGxpdGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWZ0c2liLCBCbG9ja051 bWJlciB0YXJnZXQpCiAgKiB0by1iZS1kZWxldGVkIHN1YnRyZWUuKQogICovCiBzdGF0aWMg Ym9vbAotX2J0X3JpZ2h0c2liX2hhbGZkZWFkZmxhZyhSZWxhdGlvbiByZWwsIEJsb2NrTnVt YmVyIGxlYWZyaWdodHNpYikKK19idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBsZWFmcmlnaHRzaWIsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJ QnVmZmVyCQlidWY7CiAJUGFnZQkJcGFnZTsKQEAgLTE3NzIsNyArMTc3OCw3IEBAIF9idF9y aWdodHNpYl9oYWxmZGVhZGZsYWcoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBsZWFmcmln aHRzaWIpCiAKIAlBc3NlcnQobGVhZnJpZ2h0c2liICE9IFBfTk9ORSk7CiAKLQlidWYgPSBf YnRfZ2V0YnVmKHJlbCwgbGVhZnJpZ2h0c2liLCBCVF9SRUFEKTsKKwlidWYgPSBfYnRfZ2V0 YnVmKHJlbCwgbGVhZnJpZ2h0c2liLCBCVF9SRUFELCBoZWFwcmVsKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWYpOwogCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsKIApA QCAtMTk2MSwxNyArMTk2NywxOCBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZl ciBsZWFmYnVmLCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCQkJICogbWFya2VkIHdpdGggSU5D T01QTEVURV9TUExJVCBmbGFnIGJlZm9yZSBwcm9jZWVkaW5nCiAJCQkJICovCiAJCQkJQXNz ZXJ0KGxlYWZibGtubyA9PSBzY2FuYmxrbm8pOwotCQkJCWlmIChfYnRfbGVmdHNpYl9zcGxp dGZsYWcocmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8pKQorCQkJCWlmIChfYnRfbGVmdHNpYl9z cGxpdGZsYWcocmVsLCBsZWZ0c2liLCBsZWFmYmxrbm8sIHZzdGF0ZS0+aW5mby0+aGVhcHJl bCkpCiAJCQkJewogCQkJCQlSZWxlYXNlQnVmZmVyKGxlYWZidWYpOwogCQkJCQlyZXR1cm47 CiAJCQkJfQogCiAJCQkJLyogd2UgbmVlZCBhbiBpbnNlcnRpb24gc2NhbiBrZXkgZm9yIHRo ZSBzZWFyY2gsIHNvIGJ1aWxkIG9uZSAqLwotCQkJCWl0dXBfa2V5ID0gX2J0X21rc2Nhbmtl eShyZWwsIHRhcmdldGtleSk7CisJCQkJaXR1cF9rZXkgPSBfYnRfbWtzY2Fua2V5KHJlbCwg dGFyZ2V0a2V5LCB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJCS8qIGZpbmQgdGhlIGxl ZnRtb3N0IGxlYWYgcGFnZSB3aXRoIG1hdGNoaW5nIHBpdm90L2hpZ2gga2V5ICovCiAJCQkJ aXR1cF9rZXktPnBpdm90c2VhcmNoID0gdHJ1ZTsKLQkJCQlzdGFjayA9IF9idF9zZWFyY2go cmVsLCBpdHVwX2tleSwgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMKTsKKwkJCQlzdGFjayA9 IF9idF9zZWFyY2gocmVsLCBpdHVwX2tleSwgJnNsZWFmYnVmLCBCVF9SRUFELCBOVUxMLAor CQkJCQkJCQkgICB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJCS8qIHdvbid0IG5lZWQg YSBzZWNvbmQgbG9jayBvciBwaW4gb24gbGVhZmJ1ZiAqLwogCQkJCV9idF9yZWxidWYocmVs LCBzbGVhZmJ1Zik7CiAKQEAgLTIwMDIsNyArMjAwOSw3IEBAIF9idF9wYWdlZGVsKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUVmFjU3RhdGUgKnZzdGF0ZSkKIAkJCSAqIGxl YWZidWYgcGFnZSBoYWxmLWRlYWQuCiAJCQkgKi8KIAkJCUFzc2VydChQX0lTTEVBRihvcGFx dWUpICYmICFQX0lHTk9SRShvcGFxdWUpKTsKLQkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxm ZGVhZChyZWwsIGxlYWZidWYsIHN0YWNrKSkKKwkJCWlmICghX2J0X21hcmtfcGFnZV9oYWxm ZGVhZChyZWwsIGxlYWZidWYsIHN0YWNrLCB2c3RhdGUtPmluZm8tPmhlYXByZWwpKQogCQkJ ewogCQkJCV9idF9yZWxidWYocmVsLCBsZWFmYnVmKTsKIAkJCQlyZXR1cm47CkBAIC0yMDY1 LDcgKzIwNzIsNyBAQCBfYnRfcGFnZWRlbChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFZhY1N0YXRlICp2c3RhdGUpCiAJCWlmICghcmlnaHRzaWJfZW1wdHkpCiAJCQlicmVh azsKIAotCQlsZWFmYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJpZ2h0c2liLCBCVF9XUklURSk7 CisJCWxlYWZidWYgPSBfYnRfZ2V0YnVmKHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFLCB2c3Rh dGUtPmluZm8tPmhlYXByZWwpOwogCX0KIH0KIApAQCAtMjA4NCw3ICsyMDkxLDcgQEAgX2J0 X3BhZ2VkZWwoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQlRWYWNTdGF0ZSAqdnN0 YXRlKQogICogc3VjY2Vzc2Z1bGx5LgogICovCiBzdGF0aWMgYm9vbAotX2J0X21hcmtfcGFn ZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBCVFN0YWNrIHN0YWNr KQorX2J0X21hcmtfcGFnZV9oYWxmZGVhZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCVFN0YWNrIHN0YWNrLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJsb2NrTnVtYmVyIGxl YWZibGtubzsKIAlCbG9ja051bWJlciBsZWFmcmlnaHRzaWI7CkBAIC0yMTE5LDcgKzIxMjYs NyBAQCBfYnRfbWFya19wYWdlX2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZi dWYsIEJUU3RhY2sgc3RhY2spCiAJICogZGVsZXRlIHRoZSBkb3dubGluay4gIEl0IHdvdWxk IGZhaWwgdGhlICJyaWdodCBzaWJsaW5nIG9mIHRhcmdldCBwYWdlCiAJICogaXMgYWxzbyB0 aGUgbmV4dCBjaGlsZCBpbiBwYXJlbnQgcGFnZSIgY3Jvc3MtY2hlY2sgYmVsb3cuCiAJICov Ci0JaWYgKF9idF9yaWdodHNpYl9oYWxmZGVhZGZsYWcocmVsLCBsZWFmcmlnaHRzaWIpKQor CWlmIChfYnRfcmlnaHRzaWJfaGFsZmRlYWRmbGFnKHJlbCwgbGVhZnJpZ2h0c2liLCBoZWFw cmVsKSkKIAl7CiAJCWVsb2coREVCVUcxLCAiY291bGQgbm90IGRlbGV0ZSBwYWdlICV1IGJl Y2F1c2UgaXRzIHJpZ2h0IHNpYmxpbmcgJXUgaXMgaGFsZi1kZWFkIiwKIAkJCSBsZWFmYmxr bm8sIGxlYWZyaWdodHNpYik7CkBAIC0yMTQ1LDcgKzIxNTIsNyBAQCBfYnRfbWFya19wYWdl X2hhbGZkZWFkKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJUU3RhY2sgc3RhY2sp CiAJdG9wcGFyZW50cmlnaHRzaWIgPSBsZWFmcmlnaHRzaWI7CiAJaWYgKCFfYnRfbG9ja19z dWJ0cmVlX3BhcmVudChyZWwsIGxlYWZibGtubywgc3RhY2ssCiAJCQkJCQkJCSAmc3VidHJl ZXBhcmVudCwgJnBvZmZzZXQsCi0JCQkJCQkJCSAmdG9wcGFyZW50LCAmdG9wcGFyZW50cmln aHRzaWIpKQorCQkJCQkJCQkgJnRvcHBhcmVudCwgJnRvcHBhcmVudHJpZ2h0c2liLCBoZWFw cmVsKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoKQEAgLTIzNjMsNyArMjM3MCw3IEBAIF9i dF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVmLCBC bG9ja051bWJlciBzY2FuYmxrbm8sCiAJCUFzc2VydCh0YXJnZXQgIT0gbGVhZmJsa25vKTsK IAogCQkvKiBGZXRjaCB0aGUgYmxvY2sgbnVtYmVyIG9mIHRoZSB0YXJnZXQncyBsZWZ0IHNp YmxpbmcgKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihyZWwsIHRhcmdldCwgQlRfUkVBRCk7CisJ CWJ1ZiA9IF9idF9nZXRidWYocmVsLCB0YXJnZXQsIEJUX1JFQUQsIHZzdGF0ZS0+aW5mby0+ aGVhcHJlbCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJCW9wYXF1ZSA9IEJU UGFnZUdldE9wYXF1ZShwYWdlKTsKIAkJbGVmdHNpYiA9IG9wYXF1ZS0+YnRwb19wcmV2OwpA QCAtMjM5MCw3ICsyMzk3LDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkJX2J0X2xv Y2tidWYocmVsLCBsZWFmYnVmLCBCVF9XUklURSk7CiAJaWYgKGxlZnRzaWIgIT0gUF9OT05F KQogCXsKLQkJbGJ1ZiA9IF9idF9nZXRidWYocmVsLCBsZWZ0c2liLCBCVF9XUklURSk7CisJ CWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVmdHNpYiwgQlRfV1JJVEUsIHZzdGF0ZS0+aW5m by0+aGVhcHJlbCk7CiAJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGxidWYpOwogCQlvcGFxdWUg PSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJCXdoaWxlIChQX0lTREVMRVRFRChvcGFxdWUp IHx8IG9wYXF1ZS0+YnRwb19uZXh0ICE9IHRhcmdldCkKQEAgLTI0NDAsNyArMjQ0Nyw3IEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwog CiAJCQkvKiBzdGVwIHJpZ2h0IG9uZSBwYWdlICovCi0JCQlsYnVmID0gX2J0X2dldGJ1Zihy ZWwsIGxlZnRzaWIsIEJUX1dSSVRFKTsKKwkJCWxidWYgPSBfYnRfZ2V0YnVmKHJlbCwgbGVm dHNpYiwgQlRfV1JJVEUsIHZzdGF0ZS0+aW5mby0+aGVhcHJlbCk7CiAJCQlwYWdlID0gQnVm ZmVyR2V0UGFnZShsYnVmKTsKIAkJCW9wYXF1ZSA9IEJUUGFnZUdldE9wYXF1ZShwYWdlKTsK IAkJfQpAQCAtMjUwNCw3ICsyNTExLDcgQEAgX2J0X3VubGlua19oYWxmZGVhZF9wYWdlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGxlYWZidWYsIEJsb2NrTnVtYmVyIHNjYW5ibGtubywKIAkg KiBBbmQgbmV4dCB3cml0ZS1sb2NrIHRoZSAoY3VycmVudCkgcmlnaHQgc2libGluZy4KIAkg Ki8KIAlyaWdodHNpYiA9IG9wYXF1ZS0+YnRwb19uZXh0OwotCXJidWYgPSBfYnRfZ2V0YnVm KHJlbCwgcmlnaHRzaWIsIEJUX1dSSVRFKTsKKwlyYnVmID0gX2J0X2dldGJ1ZihyZWwsIHJp Z2h0c2liLCBCVF9XUklURSwgdnN0YXRlLT5pbmZvLT5oZWFwcmVsKTsKIAlwYWdlID0gQnVm ZmVyR2V0UGFnZShyYnVmKTsKIAlvcGFxdWUgPSBCVFBhZ2VHZXRPcGFxdWUocGFnZSk7CiAJ aWYgKG9wYXF1ZS0+YnRwb19wcmV2ICE9IHRhcmdldCkKQEAgLTI1MzMsNyArMjU0MCw4IEBA IF9idF91bmxpbmtfaGFsZmRlYWRfcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBsZWFmYnVm LCBCbG9ja051bWJlciBzY2FuYmxrbm8sCiAJCWlmIChQX1JJR0hUTU9TVChvcGFxdWUpKQog CQl7CiAJCQkvKiByaWdodHNpYiB3aWxsIGJlIHRoZSBvbmx5IG9uZSBsZWZ0IG9uIHRoZSBs ZXZlbCAqLwotCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFHRSwg QlRfV1JJVEUpOworCQkJbWV0YWJ1ZiA9IF9idF9nZXRidWYocmVsLCBCVFJFRV9NRVRBUEFH RSwgQlRfV1JJVEUsCisJCQkJCQkJCSB2c3RhdGUtPmluZm8tPmhlYXByZWwpOwogCQkJbWV0 YXBnID0gQnVmZmVyR2V0UGFnZShtZXRhYnVmKTsKIAkJCW1ldGFkID0gQlRQYWdlR2V0TWV0 YShtZXRhcGcpOwogCkBAIC0yNzc1LDcgKzI3ODMsOCBAQCBfYnRfdW5saW5rX2hhbGZkZWFk X3BhZ2UoUmVsYXRpb24gcmVsLCBCdWZmZXIgbGVhZmJ1ZiwgQmxvY2tOdW1iZXIgc2NhbmJs a25vLAogc3RhdGljIGJvb2wKIF9idF9sb2NrX3N1YnRyZWVfcGFyZW50KFJlbGF0aW9uIHJl bCwgQmxvY2tOdW1iZXIgY2hpbGQsIEJUU3RhY2sgc3RhY2ssCiAJCQkJCQlCdWZmZXIgKnN1 YnRyZWVwYXJlbnQsIE9mZnNldE51bWJlciAqcG9mZnNldCwKLQkJCQkJCUJsb2NrTnVtYmVy ICp0b3BwYXJlbnQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYikKKwkJCQkJCUJs b2NrTnVtYmVyICp0b3BwYXJlbnQsIEJsb2NrTnVtYmVyICp0b3BwYXJlbnRyaWdodHNpYiwK KwkJCQkJCVJlbGF0aW9uIGhlYXByZWwpCiB7CiAJQmxvY2tOdW1iZXIgcGFyZW50LAogCQkJ CWxlZnRzaWJwYXJlbnQ7CkBAIC0yNzg5LDcgKzI3OTgsNyBAQCBfYnRfbG9ja19zdWJ0cmVl X3BhcmVudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGNoaWxkLCBCVFN0YWNrIHN0YWNr LAogCSAqIExvY2F0ZSB0aGUgcGl2b3QgdHVwbGUgd2hvc2UgZG93bmxpbmsgcG9pbnRzIHRv ICJjaGlsZCIuICBXcml0ZSBsb2NrCiAJICogdGhlIHBhcmVudCBwYWdlIGl0c2VsZi4KIAkg Ki8KLQlwYnVmID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkKTsKKwlwYnVm ID0gX2J0X2dldHN0YWNrYnVmKHJlbCwgc3RhY2ssIGNoaWxkLCBoZWFwcmVsKTsKIAlpZiAo cGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQogCXsKIAkJLyoKQEAgLTI4ODksMTMgKzI4OTgsMTMg QEAgX2J0X2xvY2tfc3VidHJlZV9wYXJlbnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBj aGlsZCwgQlRTdGFjayBzdGFjaywKIAkgKgogCSAqIE5vdGU6IFdlIGRlbGliZXJhdGVseSBh dm9pZCBjb21wbGV0aW5nIGluY29tcGxldGUgc3BsaXRzIGhlcmUuCiAJICovCi0JaWYgKF9i dF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCkpCisJaWYg KF9idF9sZWZ0c2liX3NwbGl0ZmxhZyhyZWwsIGxlZnRzaWJwYXJlbnQsIHBhcmVudCwgaGVh cHJlbCkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIFJlY3Vyc2UgdG8gZXhhbWluZSBjaGls ZCBwYWdlJ3MgZ3JhbmRwYXJlbnQgcGFnZSAqLwogCXJldHVybiBfYnRfbG9ja19zdWJ0cmVl X3BhcmVudChyZWwsIHBhcmVudCwgc3RhY2stPmJ0c19wYXJlbnQsCiAJCQkJCQkJCSAgIHN1 YnRyZWVwYXJlbnQsIHBvZmZzZXQsCi0JCQkJCQkJCSAgIHRvcHBhcmVudCwgdG9wcGFyZW50 cmlnaHRzaWIpOworCQkJCQkJCQkgICB0b3BwYXJlbnQsIHRvcHBhcmVudHJpZ2h0c2liLCBo ZWFwcmVsKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCmluZGV4 IDFjYzg4ZGEwMzIuLjcwNTcxNmUzMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cmVlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRy ZWUuYwpAQCAtODM0LDcgKzgzNCw3IEBAIGJ0dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUlu Zm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJaWYgKHN0YXRzID09 IE5VTEwpCiAJewogCQkvKiBDaGVjayBpZiBWQUNVVU0gb3BlcmF0aW9uIGNhbiBlbnRpcmVs eSBhdm9pZCBidHZhY3V1bXNjYW4oKSBjYWxsICovCi0JCWlmICghX2J0X3ZhY3V1bV9uZWVk c19jbGVhbnVwKGluZm8tPmluZGV4KSkKKwkJaWYgKCFfYnRfdmFjdXVtX25lZWRzX2NsZWFu dXAoaW5mby0+aW5kZXgsIGluZm8tPmhlYXByZWwpKQogCQkJcmV0dXJuIE5VTEw7CiAKIAkJ LyoKQEAgLTg3MCw3ICs4NzAsNyBAQCBidHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCSAqLwogCUFzc2VydChz dGF0cy0+cGFnZXNfZGVsZXRlZCA+PSBzdGF0cy0+cGFnZXNfZnJlZSk7CiAJbnVtX2RlbHBh Z2VzID0gc3RhdHMtPnBhZ2VzX2RlbGV0ZWQgLSBzdGF0cy0+cGFnZXNfZnJlZTsKLQlfYnRf c2V0X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVtX2RlbHBhZ2VzKTsKKwlfYnRfc2V0 X2NsZWFudXBfaW5mbyhpbmZvLT5pbmRleCwgbnVtX2RlbHBhZ2VzLCBpbmZvLT5oZWFwcmVs KTsKIAogCS8qCiAJICogSXQncyBxdWl0ZSBwb3NzaWJsZSBmb3IgdXMgdG8gYmUgZm9vbGVk IGJ5IGNvbmN1cnJlbnQgcGFnZSBzcGxpdHMgaW50bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c2VhcmNoLmMKaW5kZXggYzQzYzFhMjgzMC4uNjQ2NmZlMmY1OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzZWFyY2guYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNlYXJjaC5jCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRp YyBib29sIF9idF9zdGVwcGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKIHN0YXRpYyBib29sIF9idF9yZWFkbmV4dHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2Fu LCBCbG9ja051bWJlciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpOwogc3RhdGljIGJvb2wg X2J0X3BhcmFsbGVsX3JlYWRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJCQkJCQkJCSAgU2NhbkRpcmVjdGlvbiBkaXIpOwotc3RhdGljIEJ1ZmZlciBf YnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwgU25hcHNob3Qgc25hcHNo b3QpOworc3RhdGljIEJ1ZmZlciBfYnRfd2Fsa19sZWZ0KFJlbGF0aW9uIHJlbCwgQnVmZmVy IGJ1ZiwgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhlYXByZWwpOwogc3RhdGljIGJv b2wgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp Owogc3RhdGljIGlubGluZSB2b2lkIF9idF9pbml0aWFsaXplX21vcmVfZGF0YShCVFNjYW5P cGFxdWUgc28sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIApAQCAtOTQsMTMgKzk0LDEzIEBAIF9i dF9kcm9wX2xvY2tfYW5kX21heWJlX3BpbihJbmRleFNjYW5EZXNjIHNjYW4sIEJUU2NhblBv cyBzcCkKICAqLwogQlRTdGFjawogX2J0X3NlYXJjaChSZWxhdGlvbiByZWwsIEJUU2Nhbklu c2VydCBrZXksIEJ1ZmZlciAqYnVmUCwgaW50IGFjY2VzcywKLQkJICAgU25hcHNob3Qgc25h cHNob3QpCisJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKQogewog CUJUU3RhY2sJCXN0YWNrX2luID0gTlVMTDsKIAlpbnQJCQlwYWdlX2FjY2VzcyA9IEJUX1JF QUQ7CiAKIAkvKiBHZXQgdGhlIHJvb3QgcGFnZSB0byBzdGFydCB3aXRoICovCi0JKmJ1ZlAg PSBfYnRfZ2V0cm9vdChyZWwsIGFjY2Vzcyk7CisJKmJ1ZlAgPSBfYnRfZ2V0cm9vdChyZWws IGFjY2VzcywgaGVhcHJlbCk7CiAKIAkvKiBJZiBpbmRleCBpcyBlbXB0eSBhbmQgYWNjZXNz ID0gQlRfUkVBRCwgbm8gcm9vdCBwYWdlIGlzIGNyZWF0ZWQuICovCiAJaWYgKCFCdWZmZXJJ c1ZhbGlkKCpidWZQKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBfYnRfc2VhcmNoKFJlbGF0aW9u IHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpidWZQLCBpbnQgYWNjZXNzLAogCQkg KiBvcHBvcnR1bml0eSB0byBmaW5pc2ggc3BsaXRzIG9mIGludGVybmFsIHBhZ2VzIHRvby4K IAkJICovCiAJCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIChhY2Nl c3MgPT0gQlRfV1JJVEUpLCBzdGFja19pbiwKLQkJCQkJCQkgIHBhZ2VfYWNjZXNzLCBzbmFw c2hvdCk7CisJCQkJCQkJICBwYWdlX2FjY2Vzcywgc25hcHNob3QsIGhlYXByZWwpOwogCiAJ CS8qIGlmIHRoaXMgaXMgYSBsZWFmIHBhZ2UsIHdlJ3JlIGRvbmUgKi8KIAkJcGFnZSA9IEJ1 ZmZlckdldFBhZ2UoKmJ1ZlApOwpAQCAtMTkxLDcgKzE5MSw3IEBAIF9idF9zZWFyY2goUmVs YXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5LCBCdWZmZXIgKmJ1ZlAsIGludCBhY2Nlc3Ms CiAJCSAqIG1vdmUgcmlnaHQgdG8gaXRzIG5ldyBzaWJsaW5nLiAgRG8gdGhhdC4KIAkJICov CiAJCSpidWZQID0gX2J0X21vdmVyaWdodChyZWwsIGtleSwgKmJ1ZlAsIHRydWUsIHN0YWNr X2luLCBCVF9XUklURSwKLQkJCQkJCQkgIHNuYXBzaG90KTsKKwkJCQkJCQkgIHNuYXBzaG90 LCBoZWFwcmVsKTsKIAl9CiAKIAlyZXR1cm4gc3RhY2tfaW47CkBAIC0yMzksNyArMjM5LDgg QEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQkgIGJvb2wgZm9ydXBkYXRlLAog CQkJICBCVFN0YWNrIHN0YWNrLAogCQkJICBpbnQgYWNjZXNzLAotCQkJICBTbmFwc2hvdCBz bmFwc2hvdCkKKwkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkgIFJlbGF0aW9uIGhlYXBy ZWwpCiB7CiAJUGFnZQkJcGFnZTsKIAlCVFBhZ2VPcGFxdWUgb3BhcXVlOwpAQCAtMjg4LDEy ICsyODksMTIgQEAgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsCiAJCQl9CiAKIAkJCWlm IChQX0lOQ09NUExFVEVfU1BMSVQob3BhcXVlKSkKLQkJCQlfYnRfZmluaXNoX3NwbGl0KHJl bCwgYnVmLCBzdGFjayk7CisJCQkJX2J0X2ZpbmlzaF9zcGxpdChyZWwsIGJ1Ziwgc3RhY2ss IGhlYXByZWwpOwogCQkJZWxzZQogCQkJCV9idF9yZWxidWYocmVsLCBidWYpOwogCiAJCQkv KiByZS1hY3F1aXJlIHRoZSBsb2NrIGluIHRoZSByaWdodCBtb2RlLCBhbmQgcmUtY2hlY2sg Ki8KLQkJCWJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzKTsKKwkJCWJ1ZiA9 IF9idF9nZXRidWYocmVsLCBibGtubywgYWNjZXNzLCBoZWFwcmVsKTsKIAkJCWNvbnRpbnVl OwogCQl9CiAKQEAgLTg2MCw2ICs4NjEsNyBAQCBib29sCiBfYnRfZmlyc3QoSW5kZXhTY2Fu RGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikKIHsKIAlSZWxhdGlvbglyZWwgPSBzY2Fu LT5pbmRleFJlbGF0aW9uOworCVJlbGF0aW9uIAloZWFwcmVsID0gc2Nhbi0+aGVhcFJlbGF0 aW9uOwogCUJUU2Nhbk9wYXF1ZSBzbyA9IChCVFNjYW5PcGFxdWUpIHNjYW4tPm9wYXF1ZTsK IAlCdWZmZXIJCWJ1ZjsKIAlCVFN0YWNrCQlzdGFjazsKQEAgLTEzNTIsNyArMTM1NCw3IEBA IF9idF9maXJzdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCX0K IAogCS8qIEluaXRpYWxpemUgcmVtYWluaW5nIGluc2VydGlvbiBzY2FuIGtleSBmaWVsZHMg Ki8KLQlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBrZXlzcGFjZSwgJmluc2tl eS5hbGxlcXVhbGltYWdlKTsKKwlfYnRfbWV0YXZlcnNpb24ocmVsLCAmaW5za2V5LmhlYXBr ZXlzcGFjZSwgJmluc2tleS5hbGxlcXVhbGltYWdlLCBoZWFwcmVsKTsKIAlpbnNrZXkuYW55 bnVsbGtleXMgPSBmYWxzZTsgLyogdW51c2VkICovCiAJaW5za2V5Lm5leHRrZXkgPSBuZXh0 a2V5OwogCWluc2tleS5waXZvdHNlYXJjaCA9IGZhbHNlOwpAQCAtMTM2Myw3ICsxMzY1LDcg QEAgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJ ICogVXNlIHRoZSBtYW51ZmFjdHVyZWQgaW5zZXJ0aW9uIHNjYW4ga2V5IHRvIGRlc2NlbmQg dGhlIHRyZWUgYW5kCiAJICogcG9zaXRpb24gb3Vyc2VsdmVzIG9uIHRoZSB0YXJnZXQgbGVh ZiBwYWdlLgogCSAqLwotCXN0YWNrID0gX2J0X3NlYXJjaChyZWwsICZpbnNrZXksICZidWYs IEJUX1JFQUQsIHNjYW4tPnhzX3NuYXBzaG90KTsKKwlzdGFjayA9IF9idF9zZWFyY2gocmVs LCAmaW5za2V5LCAmYnVmLCBCVF9SRUFELCBzY2FuLT54c19zbmFwc2hvdCwgaGVhcHJlbCk7 CiAKIAkvKiBkb24ndCBuZWVkIHRvIGtlZXAgdGhlIHN0YWNrIGFyb3VuZC4uLiAqLwogCV9i dF9mcmVlc3RhY2soc3RhY2spOwpAQCAtMjAwNCw3ICsyMDA2LDcgQEAgX2J0X3JlYWRuZXh0 cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGlyZWN0 aW9uIGRpcikKIAkJCS8qIGNoZWNrIGZvciBpbnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBo b2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwogCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK IAkJCS8qIHN0ZXAgcmlnaHQgb25lIHBhZ2UgKi8KLQkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9i dF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCk7CisJCQlzby0+Y3VyclBvcy5idWYgPSBf YnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQsIHNjYW4tPmhlYXBSZWxhdGlvbik7CiAJ CQlwYWdlID0gQnVmZmVyR2V0UGFnZShzby0+Y3VyclBvcy5idWYpOwogCQkJVGVzdEZvck9s ZFNuYXBzaG90KHNjYW4tPnhzX3NuYXBzaG90LCByZWwsIHBhZ2UpOwogCQkJb3BhcXVlID0g QlRQYWdlR2V0T3BhcXVlKHBhZ2UpOwpAQCAtMjA3OCw3ICsyMDgwLDggQEAgX2J0X3JlYWRu ZXh0cGFnZShJbmRleFNjYW5EZXNjIHNjYW4sIEJsb2NrTnVtYmVyIGJsa25vLCBTY2FuRGly ZWN0aW9uIGRpcikKIAkJaWYgKEJUU2NhblBvc0lzUGlubmVkKHNvLT5jdXJyUG9zKSkKIAkJ CV9idF9sb2NrYnVmKHJlbCwgc28tPmN1cnJQb3MuYnVmLCBCVF9SRUFEKTsKIAkJZWxzZQot CQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X2dldGJ1ZihyZWwsIHNvLT5jdXJyUG9zLmN1cnJQ YWdlLCBCVF9SRUFEKTsKKwkJCXNvLT5jdXJyUG9zLmJ1ZiA9IF9idF9nZXRidWYocmVsLCBz by0+Y3VyclBvcy5jdXJyUGFnZSwgQlRfUkVBRCwKKwkJCQkJCQkJCQkgc2Nhbi0+aGVhcFJl bGF0aW9uKTsKIAogCQlmb3IgKDs7KQogCQl7CkBAIC0yMDkzLDcgKzIwOTYsNyBAQCBfYnRf cmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxrbm8sIFNj YW5EaXJlY3Rpb24gZGlyKQogCiAJCQkvKiBTdGVwIHRvIG5leHQgcGh5c2ljYWwgcGFnZSAq LwogCQkJc28tPmN1cnJQb3MuYnVmID0gX2J0X3dhbGtfbGVmdChyZWwsIHNvLT5jdXJyUG9z LmJ1ZiwKLQkJCQkJCQkJCQkJc2Nhbi0+eHNfc25hcHNob3QpOworCQkJCQkJCQkJCQlzY2Fu LT54c19zbmFwc2hvdCwgc2Nhbi0+aGVhcFJlbGF0aW9uKTsKIAogCQkJLyogaWYgd2UncmUg cGh5c2ljYWxseSBhdCBlbmQgb2YgaW5kZXgsIHJldHVybiBmYWlsdXJlICovCiAJCQlpZiAo c28tPmN1cnJQb3MuYnVmID09IEludmFsaWRCdWZmZXIpCkBAIC0yMTQwLDcgKzIxNDMsOCBA QCBfYnRfcmVhZG5leHRwYWdlKEluZGV4U2NhbkRlc2Mgc2NhbiwgQmxvY2tOdW1iZXIgYmxr bm8sIFNjYW5EaXJlY3Rpb24gZGlyKQogCQkJCQlCVFNjYW5Qb3NJbnZhbGlkYXRlKHNvLT5j dXJyUG9zKTsKIAkJCQkJcmV0dXJuIGZhbHNlOwogCQkJCX0KLQkJCQlzby0+Y3VyclBvcy5i dWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQpOworCQkJCXNvLT5jdXJyUG9z LmJ1ZiA9IF9idF9nZXRidWYocmVsLCBibGtubywgQlRfUkVBRCwKKwkJCQkJCQkJCQkJIHNj YW4tPmhlYXBSZWxhdGlvbik7CiAJCQl9CiAJCX0KIAl9CkBAIC0yMTg1LDcgKzIxODksNyBA QCBfYnRfcGFyYWxsZWxfcmVhZHBhZ2UoSW5kZXhTY2FuRGVzYyBzY2FuLCBCbG9ja051bWJl ciBibGtubywgU2NhbkRpcmVjdGlvbiBkaXIpCiAgKiBhZ2FpbiBpZiBpdCdzIGltcG9ydGFu dC4KICAqLwogc3RhdGljIEJ1ZmZlcgotX2J0X3dhbGtfbGVmdChSZWxhdGlvbiByZWwsIEJ1 ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90KQorX2J0X3dhbGtfbGVmdChSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKQog ewogCVBhZ2UJCXBhZ2U7CiAJQlRQYWdlT3BhcXVlIG9wYXF1ZTsKQEAgLTIyMTMsNyArMjIx Nyw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hv dCBzbmFwc2hvdCkKIAkJX2J0X3JlbGJ1ZihyZWwsIGJ1Zik7CiAJCS8qIGNoZWNrIGZvciBp bnRlcnJ1cHRzIHdoaWxlIHdlJ3JlIG5vdCBob2xkaW5nIGFueSBidWZmZXIgbG9jayAqLwog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxr bm8sIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0YnVmKHJlbCwgYmxrbm8sIEJUX1JFQUQs IGhlYXByZWwpOwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlUZXN0Rm9yT2xk U25hcHNob3Qoc25hcHNob3QsIHJlbCwgcGFnZSk7CiAJCW9wYXF1ZSA9IEJUUGFnZUdldE9w YXF1ZShwYWdlKTsKQEAgLTIzMDUsNyArMjMwOSw3IEBAIF9idF93YWxrX2xlZnQoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLCBTbmFwc2hvdCBzbmFwc2hvdCkKICAqLwogQnVmZmVyCiBf YnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVsLCBib29sIHJpZ2h0 bW9zdCwKLQkJCQkgU25hcHNob3Qgc25hcHNob3QpCisJCQkJIFNuYXBzaG90IHNuYXBzaG90 LCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJ1ZmZlcgkJYnVmOwogCVBhZ2UJCXBhZ2U7CkBA IC0yMzIwLDkgKzIzMjQsOSBAQCBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWlu dDMyIGxldmVsLCBib29sIHJpZ2h0bW9zdCwKIAkgKiBzbWFydGVyIGFib3V0IGludGVybWVk aWF0ZSBsZXZlbHMuKQogCSAqLwogCWlmIChsZXZlbCA9PSAwKQotCQlidWYgPSBfYnRfZ2V0 cm9vdChyZWwsIEJUX1JFQUQpOworCQlidWYgPSBfYnRfZ2V0cm9vdChyZWwsIEJUX1JFQUQs IGhlYXByZWwpOwogCWVsc2UKLQkJYnVmID0gX2J0X2dldHRydWVyb290KHJlbCk7CisJCWJ1 ZiA9IF9idF9nZXR0cnVlcm9vdChyZWwsIGhlYXByZWwpOwogCiAJaWYgKCFCdWZmZXJJc1Zh bGlkKGJ1ZikpCiAJCXJldHVybiBJbnZhbGlkQnVmZmVyOwpAQCAtMjQwMyw3ICsyNDA3LDgg QEAgX2J0X2VuZHBvaW50KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp CiAJICogdmVyc2lvbiBvZiBfYnRfc2VhcmNoKCkuICBXZSBkb24ndCBtYWludGFpbiBhIHN0 YWNrIHNpbmNlIHdlIGtub3cgd2UKIAkgKiB3b24ndCBuZWVkIGl0LgogCSAqLwotCWJ1ZiA9 IF9idF9nZXRfZW5kcG9pbnQocmVsLCAwLCBTY2FuRGlyZWN0aW9uSXNCYWNrd2FyZChkaXIp LCBzY2FuLT54c19zbmFwc2hvdCk7CisJYnVmID0gX2J0X2dldF9lbmRwb2ludChyZWwsIDAs IFNjYW5EaXJlY3Rpb25Jc0JhY2t3YXJkKGRpciksIHNjYW4tPnhzX3NuYXBzaG90LAorCQkJ CQkJICAgc2Nhbi0+aGVhcFJlbGF0aW9uKTsKIAogCWlmICghQnVmZmVySXNWYWxpZChidWYp KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5kZXggNjdiN2IxNzEw Yy4uNTQyMDI5ZWVjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAg LTU2Niw3ICs1NjYsNyBAQCBfYnRfbGVhZmJ1aWxkKEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bv b2wgKmJ0c3Bvb2wyKQogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCXdzdGF0 ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwotCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtzY2Fu a2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CisJd3N0YXRlLmluc2tleSA9IF9idF9ta3NjYW5r ZXkod3N0YXRlLmluZGV4LCBOVUxMLCBidHNwb29sLT5oZWFwKTsKIAkvKiBfYnRfbWtzY2Fu a2V5KCkgd29uJ3Qgc2V0IGFsbGVxdWFsaW1hZ2Ugd2l0aG91dCBtZXRhcGFnZSAqLwogCXdz dGF0ZS5pbnNrZXktPmFsbGVxdWFsaW1hZ2UgPSBfYnRfYWxsZXF1YWxpbWFnZSh3c3RhdGUu aW5kZXgsIHRydWUpOwogCXdzdGF0ZS5idHdzX3VzZV93YWwgPSBSZWxhdGlvbk5lZWRzV0FM KHdzdGF0ZS5pbmRleCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKaW5k ZXggODAwMzU4M2MwYS4uOWVkZDg1NjM3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0dXRpbHMuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW50CV9idF9rZWVwX25hdHRz KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwKICAqCQlmaWVsZCB0aGVtc2Vs dmVzLgogICovCiBCVFNjYW5JbnNlcnQKLV9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJ bmRleFR1cGxlIGl0dXApCitfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBpdHVwLCBSZWxhdGlvbiBoZWFwcmVsKQogewogCUJUU2Nhbkluc2VydCBrZXk7CiAJU2Nh bktleQkJc2tleTsKQEAgLTExMiw3ICsxMTIsNyBAQCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9u IHJlbCwgSW5kZXhUdXBsZSBpdHVwKQogCWtleSA9IHBhbGxvYyhvZmZzZXRvZihCVFNjYW5J bnNlcnREYXRhLCBzY2Fua2V5cykgKwogCQkJCSBzaXplb2YoU2NhbktleURhdGEpICogaW5k bmtleWF0dHMpOwogCWlmIChpdHVwKQotCQlfYnRfbWV0YXZlcnNpb24ocmVsLCAma2V5LT5o ZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UpOworCQlfYnRfbWV0YXZlcnNpb24o cmVsLCAma2V5LT5oZWFwa2V5c3BhY2UsICZrZXktPmFsbGVxdWFsaW1hZ2UsIGhlYXByZWwp OwogCWVsc2UKIAl7CiAJCS8qIFV0aWxpdHkgc3RhdGVtZW50IGNhbGxlcnMgY2FuIHNldCB0 aGVzZSBmaWVsZHMgdGhlbXNlbHZlcyAqLwpAQCAtMTc2MSw3ICsxNzYxLDggQEAgX2J0X2tp bGxpdGVtcyhJbmRleFNjYW5EZXNjIHNjYW4pCiAKIAkJZHJvcHBlZHBpbiA9IHRydWU7CiAJ CS8qIEF0dGVtcHQgdG8gcmUtcmVhZCB0aGUgYnVmZmVyLCBnZXR0aW5nIHBpbiBhbmQgbG9j ay4gKi8KLQkJYnVmID0gX2J0X2dldGJ1ZihzY2FuLT5pbmRleFJlbGF0aW9uLCBzby0+Y3Vy clBvcy5jdXJyUGFnZSwgQlRfUkVBRCk7CisJCWJ1ZiA9IF9idF9nZXRidWYoc2Nhbi0+aW5k ZXhSZWxhdGlvbiwgc28tPmN1cnJQb3MuY3VyclBhZ2UsIEJUX1JFQUQsCisJCQkJCQkgc2Nh bi0+aGVhcFJlbGF0aW9uKTsKIAogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwogCQlp ZiAoQnVmZmVyR2V0TFNOQXRvbWljKGJ1ZikgPT0gc28tPmN1cnJQb3MubHNuKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggM2FkYjE4ZjJkOC4uYThmYzIy MTE1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC00ODks NyArNDg5LDcgQEAgdmFjdXVtTGVhZlJvb3Qoc3BnQnVsa0RlbGV0ZVN0YXRlICpiZHMsIFJl bGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogICogVW5saWtlIHRoZSByb3V0aW5lcyBh Ym92ZSwgdGhpcyB3b3JrcyBvbiBib3RoIGxlYWYgYW5kIGlubmVyIHBhZ2VzLgogICovCiBz dGF0aWMgdm9pZAotdmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRl eCwgQnVmZmVyIGJ1ZmZlcikKK3ZhY3V1bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRp b24gaW5kZXgsIEJ1ZmZlciBidWZmZXIsIFJlbGF0aW9uIGhlYXByZWwpCiB7CiAJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlTcEdpc3RQYWdlT3BhcXVlIG9wYXF1 ZSA9IFNwR2lzdFBhZ2VHZXRPcGFxdWUocGFnZSk7CkBAIC01MDMsNiArNTAzLDcgQEAgdmFj dXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZl cikKIAlzcGd4bG9nVmFjdXVtUmVkaXJlY3QgeGxyZWM7CiAJR2xvYmFsVmlzU3RhdGUgKnZp c3Rlc3Q7CiAKKwl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsK IAl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCkBAIC02NDMsMTMgKzY0NCwxMyBAQCBzcGd2YWN1dW1wYWdlKHNwZ0J1bGtEZWxldGVT dGF0ZSAqYmRzLCBCbG9ja051bWJlciBibGtubykKIAkJZWxzZQogCQl7CiAJCQl2YWN1dW1M ZWFmUGFnZShiZHMsIGluZGV4LCBidWZmZXIsIGZhbHNlKTsKLQkJCXZhY3V1bVJlZGlyZWN0 QW5kUGxhY2Vob2xkZXIoaW5kZXgsIGJ1ZmZlcik7CisJCQl2YWN1dW1SZWRpcmVjdEFuZFBs YWNlaG9sZGVyKGluZGV4LCBidWZmZXIsIGJkcy0+aW5mby0+aGVhcHJlbCk7CiAJCX0KIAl9 CiAJZWxzZQogCXsKIAkJLyogaW5uZXIgcGFnZSAqLwotCQl2YWN1dW1SZWRpcmVjdEFuZFBs YWNlaG9sZGVyKGluZGV4LCBidWZmZXIpOworCQl2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9s ZGVyKGluZGV4LCBidWZmZXIsIGJkcy0+aW5mby0+aGVhcHJlbCk7CiAJfQogCiAJLyoKQEAg LTcxOSw3ICs3MjAsNyBAQCBzcGdwcm9jZXNzcGVuZGluZyhzcGdCdWxrRGVsZXRlU3RhdGUg KmJkcykKIAkJCS8qIGRlYWwgd2l0aCBhbnkgZGVsZXRhYmxlIHR1cGxlcyAqLwogCQkJdmFj dXVtTGVhZlBhZ2UoYmRzLCBpbmRleCwgYnVmZmVyLCB0cnVlKTsKIAkJCS8qIG1pZ2h0IGFz IHdlbGwgZG8gdGhpcyB3aGlsZSB3ZSBhcmUgaGVyZSAqLwotCQkJdmFjdXVtUmVkaXJlY3RB bmRQbGFjZWhvbGRlcihpbmRleCwgYnVmZmVyKTsKKwkJCXZhY3V1bVJlZGlyZWN0QW5kUGxh Y2Vob2xkZXIoaW5kZXgsIGJ1ZmZlciwgYmRzLT5pbmZvLT5oZWFwcmVsKTsKIAogCQkJU3BH aXN0U2V0TGFzdFVzZWRQYWdlKGluZGV4LCBidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMK aW5kZXggNDFiMTZjYjg5Yi4uNDhkMWQ2YjUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt MzM1Miw2ICszMzUyLDcgQEAgdmFsaWRhdGVfaW5kZXgoT2lkIGhlYXBJZCwgT2lkIGluZGV4 SWQsIFNuYXBzaG90IHNuYXBzaG90KQogCWl2aW5mby5tZXNzYWdlX2xldmVsID0gREVCVUcy OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBoZWFwUmVsYXRpb24tPnJkX3JlbC0+cmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IE5VTEw7CisJaXZpbmZvLmhlYXByZWwgPSBo ZWFwUmVsYXRpb247CiAKIAkvKgogCSAqIEVuY29kZSBUSURzIGFzIGludDggdmFsdWVzIGZv ciB0aGUgc29ydCwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgc29ydGluZwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jCmluZGV4IGM4NmU2OTA5ODAuLjMyMWZjMGQzMWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbmFseXplLmMKQEAgLTcxMiw2ICs3MTIsNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlv biBvbmVyZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaXZpbmZvLm1lc3NhZ2VfbGV2 ZWwgPSBlbGV2ZWw7CiAJCQlpdmluZm8ubnVtX2hlYXBfdHVwbGVzID0gb25lcmVsLT5yZF9y ZWwtPnJlbHR1cGxlczsKIAkJCWl2aW5mby5zdHJhdGVneSA9IHZhY19zdHJhdGVneTsKKwkJ CWl2aW5mby5oZWFwcmVsID0gb25lcmVsOwogCiAJCQlzdGF0cyA9IGluZGV4X3ZhY3V1bV9j bGVhbnVwKCZpdmluZm8sIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYwppbmRleCBiY2Q0MGM4MGExLi4yY2RiZDE4MmI2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTE0OCw2ICsxNDgsOSBAQCBzdHJ1Y3QgUGFy YWxsZWxWYWN1dW1TdGF0ZQogCS8qIE5VTEwgZm9yIHdvcmtlciBwcm9jZXNzZXMgKi8KIAlQ YXJhbGxlbENvbnRleHQgKnBjeHQ7CiAKKwkvKiBQYXJlbnQgSGVhcCBSZWxhdGlvbiAqLwor CVJlbGF0aW9uCWhlYXByZWw7CisKIAkvKiBUYXJnZXQgaW5kZXhlcyAqLwogCVJlbGF0aW9u ICAgKmluZHJlbHM7CiAJaW50CQkJbmluZGV4ZXM7CkBAIC0yNjYsNiArMjY5LDcgQEAgcGFy YWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50 IG5pbmRleGVzLAogCXB2cy0+bmluZGV4ZXMgPSBuaW5kZXhlczsKIAlwdnMtPndpbGxfcGFy YWxsZWxfdmFjdXVtID0gd2lsbF9wYXJhbGxlbF92YWN1dW07CiAJcHZzLT5ic3RyYXRlZ3kg PSBic3RyYXRlZ3k7CisJcHZzLT5oZWFwcmVsID0gcmVsOwogCiAJRW50ZXJQYXJhbGxlbE1v ZGUoKTsKIAlwY3h0ID0gQ3JlYXRlUGFyYWxsZWxDb250ZXh0KCJwb3N0Z3JlcyIsICJwYXJh bGxlbF92YWN1dW1fbWFpbiIsCkBAIC04MzgsNiArODQyLDcgQEAgcGFyYWxsZWxfdmFjdXVt X3Byb2Nlc3Nfb25lX2luZGV4KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgUmVsYXRpb24g aW5kcmVsLAogCWl2aW5mby5lc3RpbWF0ZWRfY291bnQgPSBwdnMtPnNoYXJlZC0+ZXN0aW1h dGVkX2NvdW50OwogCWl2aW5mby5udW1faGVhcF90dXBsZXMgPSBwdnMtPnNoYXJlZC0+cmVs dHVwbGVzOwogCWl2aW5mby5zdHJhdGVneSA9IHB2cy0+YnN0cmF0ZWd5OworCWl2aW5mby5o ZWFwcmVsID0gcHZzLT5oZWFwcmVsOwogCiAJLyogVXBkYXRlIGVycm9yIHRyYWNlYmFjayBp bmZvcm1hdGlvbiAqLwogCXB2cy0+aW5kbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoaW5kcmVsKSk7CkBAIC0xMDA3LDYgKzEwMTIsNyBAQCBwYXJhbGxlbF92YWN1 dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJcHZzLmRlYWRfaXRl bXMgPSBkZWFkX2l0ZW1zOwogCXB2cy5yZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25h bWUoUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSk7CiAJcHZzLnJlbG5hbWUgPSBwc3RyZHVw KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCXB2cy5oZWFwcmVsID0gcmVsOwog CiAJLyogVGhlc2UgZmllbGRzIHdpbGwgYmUgZmlsbGVkIGR1cmluZyBpbmRleCB2YWN1dW0g b3IgY2xlYW51cCAqLwogCXB2cy5pbmRuYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL3BsYW5jYXQuYwppbmRleCBkNThjNGExMDc4Li5lMzgyNGVmZTliIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC00NjIsNyArNDYyLDcgQEAgZ2V0 X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElk LCBib29sIGluaHBhcmVudCwKIAkJCQkJICogRm9yIGJ0cmVlcywgZ2V0IHRyZWUgaGVpZ2h0 IHdoaWxlIHdlIGhhdmUgdGhlIGluZGV4CiAJCQkJCSAqIG9wZW4KIAkJCQkJICovCi0JCQkJ CWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxhdGlvbik7 CisJCQkJCWluZm8tPnRyZWVfaGVpZ2h0ID0gX2J0X2dldHJvb3RoZWlnaHQoaW5kZXhSZWxh dGlvbiwgcmVsYXRpb24pOwogCQkJCX0KIAkJCQllbHNlCiAJCQkJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jCmluZGV4IGViNmNmY2ZkMDAuLjdk OWMxYzdlY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlh bnRzLmMKQEAgLTIwOCw3ICsyMDgsOCBAQCBUdXBsZXNvcnRzdGF0ZSAqCiB0dXBsZXNvcnRf YmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAkJCQkJCVJlbGF0aW9uIGluZGV4 UmVsLAogCQkJCQkJaW50IHdvcmtNZW0sCi0JCQkJCQlTb3J0Q29vcmRpbmF0ZSBjb29yZGlu YXRlLCBpbnQgc29ydG9wdCkKKwkJCQkJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUsIGlu dCBzb3J0b3B0LAorCQkJCQkJUmVsYXRpb24gaGVhcHJlbCkKIHsKIAlUdXBsZXNvcnRzdGF0 ZSAqc3RhdGUgPSB0dXBsZXNvcnRfYmVnaW5fY29tbW9uKHdvcmtNZW0sIGNvb3JkaW5hdGUs CiAJCQkJCQkJCQkJCQkgICBzb3J0b3B0KTsKQEAgLTI2MCw3ICsyNjEsNyBAQCB0dXBsZXNv cnRfYmVnaW5fY2x1c3RlcihUdXBsZURlc2MgdHVwRGVzYywKIAogCWFyZy0+dHVwRGVzYyA9 IHR1cERlc2M7CQkvKiBhc3N1bWUgd2UgbmVlZCBub3QgY29weSB0dXBEZXNjICovCiAKLQlp bmRleFNjYW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKKwlpbmRleFNj YW5LZXkgPSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMLCBoZWFwcmVsKTsKIAogCWlm IChhcmctPmluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnMgIT0gTlVMTCkKIAl7CkBAIC0zNjEs NyArMzYyLDcgQEAgdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBS ZWwsCiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlhcmctPnVuaXF1 ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OwogCi0JaW5kZXhT Y2FuS2V5ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCk7CisJaW5kZXhTY2FuS2V5 ID0gX2J0X21rc2NhbmtleShpbmRleFJlbCwgTlVMTCwgaGVhcFJlbCk7CiAKIAkvKiBQcmVw YXJlIFNvcnRTdXBwb3J0IGRhdGEgZm9yIGVhY2ggY29sdW1uICovCiAJYmFzZS0+c29ydEtl eXMgPSAoU29ydFN1cHBvcnQpIHBhbGxvYzAoYmFzZS0+bktleXMgKgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aAppbmRleCA4M2RiZWUwZmU2Li43NzA4YjgyZDdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAt NTAsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFZhY3V1bUluZm8KIAlpbnQJCQlt ZXNzYWdlX2xldmVsOwkvKiBlcmVwb3J0IGxldmVsIGZvciBwcm9ncmVzcyBtZXNzYWdlcyAq LwogCWRvdWJsZQkJbnVtX2hlYXBfdHVwbGVzOwkvKiB0dXBsZXMgcmVtYWluaW5nIGluIGhl YXAgKi8KIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBzdHJhdGVneTsJLyogYWNjZXNzIHN0cmF0 ZWd5IGZvciByZWFkcyAqLworCVJlbGF0aW9uIAloZWFwcmVsOwkJLyogdGhlIGhlYXAgcmVs YXRpb24gdGhlIGluZGV4IGJlbG9uZ3MgdG8gKi8KIH0gSW5kZXhWYWN1dW1JbmZvOwogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLmI3NmVk NGM2ZjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAs NyBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZl ciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZm ZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJu IHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtu bywKK2V4dGVybiB2b2lkIGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rp b25JZCBkZWxldGVYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShC dWZmZXIgYnVmZmVyLApAQCAtNDQ5LDcgKzQ0OSw4IEBAIGV4dGVybiBYTG9nUmVjUHRyIGdp c3RYTG9nVXBkYXRlKEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSBCdWZmZXIgbGVmdGNoaWxk YnVmKTsKIAogZXh0ZXJuIFhMb2dSZWNQdHIgZ2lzdFhMb2dEZWxldGUoQnVmZmVyIGJ1ZmZl ciwgT2Zmc2V0TnVtYmVyICp0b2RlbGV0ZSwKLQkJCQkJCQkJIGludCBudG9kZWxldGUsIFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24pOworCQkJCQkJCQkgaW50IG50 b2RlbGV0ZSwgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJ CQkJIFJlbGF0aW9uIGhlYXByZWwpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1Nw bGl0KGJvb2wgcGFnZV9pc19sZWFmLAogCQkJCQkJCQlTcGxpdGVkUGFnZUxheW91dCAqZGlz dCwKQEAgLTQ4NSw3ICs0ODYsNyBAQCBleHRlcm4gYm9vbCBnaXN0cHJvcGVydHkoT2lkIGlu ZGV4X29pZCwgaW50IGF0dG5vLAogZXh0ZXJuIGJvb2wgZ2lzdGZpdHBhZ2UoSW5kZXhUdXBs ZSAqaXR2ZWMsIGludCBsZW4pOwogZXh0ZXJuIGJvb2wgZ2lzdG5vc3BhY2UoUGFnZSBwYWdl LCBJbmRleFR1cGxlICppdHZlYywgaW50IGxlbiwgT2Zmc2V0TnVtYmVyIHRvZGVsZXRlLCBT aXplIGZyZWVzcGFjZSk7CiBleHRlcm4gdm9pZCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24g cik7CitleHRlcm4gQnVmZmVyIGdpc3ROZXdCdWZmZXIoUmVsYXRpb24gaGVhcHJlbCwgUmVs YXRpb24gcik7CiBleHRlcm4gYm9vbCBnaXN0UGFnZVJlY3ljbGFibGUoUGFnZSBwYWdlKTsK IGV4dGVybiB2b2lkIGdpc3RmaWxsYnVmZmVyKFBhZ2UgcGFnZSwgSW5kZXhUdXBsZSAqaXR1 cCwgaW50IGxlbiwKIAkJCQkJCSAgIE9mZnNldE51bWJlciBvZmYpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaAppbmRleCAwOWY5YjBmOGM2Li4xOTFmMGU1ODA4IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lz dHhsb2cuaApAQCAtNTEsMTMgKzUxLDEzIEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVs ZXRlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50 MTYJCW50b2RlbGV0ZTsJCS8qIG51bWJlciBvZiBkZWxldGVkIG9mZnNldHMgKi8KKwlib29s ICAgICAgICBpc0NhdGFsb2dSZWw7CiAKLQkvKgotCSAqIEluIHBheWxvYWQgb2YgYmxrIDAg OiB0b2RlbGV0ZSBPZmZzZXROdW1iZXJzCi0JICovCisJLyogVE9ERUxFVEUgT0ZGU0VUIE5V TUJFUlMgKi8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJd OwogfSBnaXN0eGxvZ0RlbGV0ZTsKIAotI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZQko b2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUsIG50b2RlbGV0ZSkgKyBzaXplb2YodWludDE2KSkK KyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dEZWxldGUgb2Zmc2V0b2YoZ2lzdHhsb2dEZWxldGUs IG9mZnNldHMpCiAKIC8qCiAgKiBCYWNrdXAgQmxrIDA6IElmIHRoaXMgb3BlcmF0aW9uIGNv bXBsZXRlcyBhIHBhZ2Ugc3BsaXQsIGJ5IGluc2VydGluZyBhCkBAIC0xMDAsOSArMTAwLDEw IEBAIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFnZVJldXNlCiAJUmVsRmlsZUxvY2F0b3Ig bG9jYXRvcjsKIAlCbG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CiB9IGdp c3R4bG9nUGFnZVJldXNlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShv ZmZzZXRvZihnaXN0eGxvZ1BhZ2VSZXVzZSwgc25hcHNob3RDb25mbGljdEhvcml6b24pICsg c2l6ZW9mKEZ1bGxUcmFuc2FjdGlvbklkKSkKKyNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQYWdl UmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJldXNlLCBpc0NhdGFsb2dSZWwpICsgc2l6 ZW9mKGJvb2wpKQogCiBleHRlcm4gdm9pZCBnaXN0X3JlZG8oWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpOwogZXh0ZXJuIHZvaWQgZ2lzdF9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFz aF94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKaW5kZXggYTJmMGYz OTIxMy4uOGYxZGZlZGFhZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hf eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApAQCAtMjUyLDEy ICsyNTIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UKIHsK IAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCWludAkJCW50dXBs ZXM7Ci0KLQkvKiBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XIEFUIFRIRSBFTkQgKi8K Kwlib29sCQlpc0NhdGFsb2dSZWw7CisJLyogVEFSR0VUIE9GRlNFVCBOVU1CRVJTICovCisJ T2Zmc2V0TnVtYmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0geGxfaGFz aF92YWN1dW1fb25lX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ug XAotCShvZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgbnR1cGxlcykgKyBzaXpl b2YoaW50KSkKKyNkZWZpbmUgU2l6ZU9mSGFzaFZhY3V1bU9uZVBhZ2Ugb2Zmc2V0b2YoeGxf aGFzaF92YWN1dW1fb25lX3BhZ2UsIG9mZnNldHMpCiAKIGV4dGVybiB2b2lkIGhhc2hfcmVk byhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBoYXNoX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKaW5kZXggOGNiMGQ4ZGExOS4uMWQ0MzE4MWE0MCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0NSwxMCArMjQ1LDExIEBAIHR5cGVkZWYgc3RydWN0 IHhsX2hlYXBfcHJ1bmUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u OwogCXVpbnQxNgkJbnJlZGlyZWN0ZWQ7CiAJdWludDE2CQluZGVhZDsKKwlib29sICAgICAg ICBpc0NhdGFsb2dSZWw7CiAJLyogT0ZGU0VUIE5VTUJFUlMgYXJlIGluIHRoZSBibG9jayBy ZWZlcmVuY2UgMCAqLwogfSB4bF9oZWFwX3BydW5lOwogCi0jZGVmaW5lIFNpemVPZkhlYXBQ cnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgbmRlYWQpICsgc2l6ZW9mKHVpbnQxNikp CisjZGVmaW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgaXND YXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogLyoKICAqIFRoZSB2YWN1dW0gcGFnZSBy ZWNvcmQgaXMgc2ltaWxhciB0byB0aGUgcHJ1bmUgcmVjb3JkLCBidXQgY2FuIG9ubHkgbWFy awpAQCAtMzQ0LDEyICszNDUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVf cGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWlu dDE2CQlucGxhbnM7CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogCiAJLyogRlJFRVpF IFBMQU5TIEZPTExPVyAqLwogCS8qIE9GRlNFVCBOVU1CRVIgQVJSQVkgRk9MTE9XUyAqLwog fSB4bF9oZWFwX2ZyZWV6ZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdl IChvZmZzZXRvZih4bF9oZWFwX2ZyZWV6ZV9wYWdlLCBucGxhbnMpICsgc2l6ZW9mKHVpbnQx NikpCisjZGVmaW5lIFNpemVPZkhlYXBGcmVlemVQYWdlIChvZmZzZXRvZih4bF9oZWFwX2Zy ZWV6ZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhp cyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJpbGl0eSBt YXAgYml0CkBAIC00MDgsNyArNDEwLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJp bmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNo YXIgKmhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9n X2xvZ2ljYWxfcmV3cml0ZShYTG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1Jl Y1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIg aGVhcF9idWZmZXIsCitleHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJCQkJCQkgICBCdWZmZXIgdm1fYnVm ZmVyLAogCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LAogCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaAppbmRleCA4 ZjQ4OTYwZjlkLi5jZGNmZGQ2MDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv bmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMTgyLDgg KzExODIsMTAgQEAgZXh0ZXJuIEluZGV4VHVwbGUgX2J0X3N3YXBfcG9zdGluZyhJbmRleFR1 cGxlIG5ld2l0ZW0sIEluZGV4VHVwbGUgb3Bvc3RpbmcsCiBleHRlcm4gYm9vbCBfYnRfZG9p bnNlcnQoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGl0dXAsCiAJCQkJCQkgSW5kZXhVbmlx dWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCBpbmRleFVuY2hhbmdlZCwKIAkJCQkJCSBSZWxh dGlvbiBoZWFwUmVsKTsKLWV4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24g cmVsLCBCdWZmZXIgbGJ1ZiwgQlRTdGFjayBzdGFjayk7Ci1leHRlcm4gQnVmZmVyIF9idF9n ZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3RhY2ssIEJsb2NrTnVtYmVyIGNo aWxkKTsKK2V4dGVybiB2b2lkIF9idF9maW5pc2hfc3BsaXQoUmVsYXRpb24gcmVsLCBCdWZm ZXIgbGJ1ZiwgQlRTdGFjayBzdGFjaywKKwkJCQkJCQkgUmVsYXRpb24gaGVhcHJlbCk7Citl eHRlcm4gQnVmZmVyIF9idF9nZXRzdGFja2J1ZihSZWxhdGlvbiByZWwsIEJUU3RhY2sgc3Rh Y2ssIEJsb2NrTnVtYmVyIGNoaWxkLAorCQkJCQkJCSAgUmVsYXRpb24gaGVhcHJlbCk7CiAK IC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0c3BsaXRsb2MuYwpAQCAt MTE5NywxNiArMTE5OSwxOCBAQCBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9maW5kc3BsaXRs b2MoUmVsYXRpb24gcmVsLCBQYWdlIG9yaWdwYWdlLAogICovCiBleHRlcm4gdm9pZCBfYnRf aW5pdG1ldGFwYWdlKFBhZ2UgcGFnZSwgQmxvY2tOdW1iZXIgcm9vdGJrbnVtLCB1aW50MzIg bGV2ZWwsCiAJCQkJCQkJIGJvb2wgYWxsZXF1YWxpbWFnZSk7Ci1leHRlcm4gYm9vbCBfYnRf dmFjdXVtX25lZWRzX2NsZWFudXAoUmVsYXRpb24gcmVsKTsKLWV4dGVybiB2b2lkIF9idF9z ZXRfY2xlYW51cF9pbmZvKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgbnVtX2RlbHBhZ2Vz KTsKK2V4dGVybiBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWws IFJlbGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIHZvaWQgX2J0X3NldF9jbGVhbnVwX2luZm8o UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBudW1fZGVscGFnZXMsCisJCQkJCQkJCSBSZWxh dGlvbiBoZWFwcmVsKTsKIGV4dGVybiB2b2lkIF9idF91cGdyYWRlbWV0YXBhZ2UoUGFnZSBw YWdlKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNj ZXNzKTsKLWV4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0aW9uIHJlbCk7Ci1l eHRlcm4gaW50CV9idF9nZXRyb290aGVpZ2h0KFJlbGF0aW9uIHJlbCk7CitleHRlcm4gQnVm ZmVyIF9idF9nZXRyb290KFJlbGF0aW9uIHJlbCwgaW50IGFjY2VzcywgUmVsYXRpb24gaGVh cHJlbCk7CitleHRlcm4gQnVmZmVyIF9idF9nZXR0cnVlcm9vdChSZWxhdGlvbiByZWwsIFJl bGF0aW9uIGhlYXByZWwpOworZXh0ZXJuIGludAlfYnRfZ2V0cm9vdGhlaWdodChSZWxhdGlv biByZWwsIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIHZvaWQgX2J0X21ldGF2ZXJzaW9u KFJlbGF0aW9uIHJlbCwgYm9vbCAqaGVhcGtleXNwYWNlLAotCQkJCQkJCWJvb2wgKmFsbGVx dWFsaW1hZ2UpOworCQkJCQkJCWJvb2wgKmFsbGVxdWFsaW1hZ2UsIFJlbGF0aW9uIGhlYXBy ZWwpOwogZXh0ZXJuIHZvaWQgX2J0X2NoZWNrcGFnZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBi dWYpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIGludCBhY2Nlc3MpOworZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0YnVmKFJlbGF0 aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIGludCBhY2Nlc3MsCisJCQkJCQkgUmVsYXRp b24gaGVhcHJlbCk7CiBleHRlcm4gQnVmZmVyIF9idF9yZWxhbmRnZXRidWYoUmVsYXRpb24g cmVsLCBCdWZmZXIgb2J1ZiwKIAkJCQkJCQkgICBCbG9ja051bWJlciBibGtubywgaW50IGFj Y2Vzcyk7CiBleHRlcm4gdm9pZCBfYnRfcmVsYnVmKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 Zik7CkBAIC0xMjMwLDIwICsxMjM0LDIxIEBAIGV4dGVybiB2b2lkIF9idF9wZW5kaW5nZnNt X2ZpbmFsaXplKFJlbGF0aW9uIHJlbCwgQlRWYWNTdGF0ZSAqdnN0YXRlKTsKICAqIHByb3Rv dHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnRzZWFyY2guYwogICovCiBleHRlcm4gQlRTdGFj ayBfYnRfc2VhcmNoKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwgQnVmZmVyICpi dWZQLAotCQkJCQkJICBpbnQgYWNjZXNzLCBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJCQkg IGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4 dGVybiBCdWZmZXIgX2J0X21vdmVyaWdodChSZWxhdGlvbiByZWwsIEJUU2Nhbkluc2VydCBr ZXksIEJ1ZmZlciBidWYsCi0JCQkJCQkJYm9vbCBmb3J1cGRhdGUsIEJUU3RhY2sgc3RhY2ss IGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90KTsKKwkJCQkJCQlib29sIGZvcnVwZGF0 ZSwgQlRTdGFjayBzdGFjaywgaW50IGFjY2VzcywKKwkJCQkJCQlTbmFwc2hvdCBzbmFwc2hv dCwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gT2Zmc2V0TnVtYmVyIF9idF9iaW5zcmNo X2luc2VydChSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUpOwogZXh0 ZXJuIGludDMyIF9idF9jb21wYXJlKFJlbGF0aW9uIHJlbCwgQlRTY2FuSW5zZXJ0IGtleSwg UGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIGV4dGVybiBib29sIF9idF9maXJz dChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKTsKIGV4dGVybiBib29s IF9idF9uZXh0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwogZXh0 ZXJuIEJ1ZmZlciBfYnRfZ2V0X2VuZHBvaW50KFJlbGF0aW9uIHJlbCwgdWludDMyIGxldmVs LCBib29sIHJpZ2h0bW9zdCwKLQkJCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCk7CisJCQkJ CQkJICAgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhlYXByZWwpOwogCiAvKgogICog cHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHV0aWxzLmMKICAqLwotZXh0ZXJuIEJU U2Nhbkluc2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVw KTsKK2V4dGVybiBCVFNjYW5JbnNlcnQgX2J0X21rc2NhbmtleShSZWxhdGlvbiByZWwsIElu ZGV4VHVwbGUgaXR1cCwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gdm9pZCBfYnRfZnJl ZXN0YWNrKEJUU3RhY2sgc3RhY2spOwogZXh0ZXJuIHZvaWQgX2J0X3ByZXByb2Nlc3NfYXJy YXlfa2V5cyhJbmRleFNjYW5EZXNjIHNjYW4pOwogZXh0ZXJuIHZvaWQgX2J0X3N0YXJ0X2Fy cmF5X2tleXMoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcik7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL25idHhsb2cuaAppbmRleCBlZGQxMzMzZDliLi45OWQ4N2Q3MTg5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9uYnR4bG9nLmgKQEAgLTE4OCw5ICsxODgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRy ZWVfcmV1c2VfcGFnZQogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIg YmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CisJ Ym9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogfSB4bF9idHJlZV9yZXVzZV9wYWdlOwogCi0j ZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShzaXplb2YoeGxfYnRyZWVfcmV1c2VfcGFn ZSkpCisjZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShvZmZzZXRvZih4bF9idHJlZV9y ZXVzZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogeGxf YnRyZWVfdmFjdXVtIGFuZCB4bF9idHJlZV9kZWxldGUgcmVjb3JkcyBkZXNjcmliZSBkZWxl dGlvbiBvZiBpbmRleApAQCAtMjM1LDEzICsyMzYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxf YnRyZWVfZGVsZXRlCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsK IAl1aW50MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVwZGF0ZWQ7CisJYm9vbCAgICAgICAg aXNDYXRhbG9nUmVsOwogCiAJLyogREVMRVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9M TE9XICovCiAJLyogVVBEQVRFRCBUQVJHRVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICovCiAJ LyogVVBEQVRFRCBUVVBMRVMgTUVUQURBVEEgKHhsX2J0cmVlX3VwZGF0ZSkgQVJSQVkgRk9M TE9XUyAqLwogfSB4bF9idHJlZV9kZWxldGU7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxl dGUJKG9mZnNldG9mKHhsX2J0cmVlX2RlbGV0ZSwgbnVwZGF0ZWQpICsgc2l6ZW9mKHVpbnQx NikpCisjZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShvZmZzZXRvZih4bF9idHJlZV9kZWxl dGUsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIC8qCiAgKiBUaGUgb2Zmc2V0 cyB0aGF0IGFwcGVhciBpbiB4bF9idHJlZV91cGRhdGUgbWV0YWRhdGEgYXJlIG9mZnNldHMg aW50byB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmluZGV4IGI5ZDY3NTM1MzMuLjI5YTZhYTU3 YTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHR5cGVkZWYg c3RydWN0IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogCXVpbnQxNgkJblRvUGxhY2Vob2xkZXI7 IC8qIG51bWJlciBvZiByZWRpcmVjdHMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgKi8KIAlPZmZz ZXROdW1iZXIgZmlyc3RQbGFjZWhvbGRlcjsJLyogZmlyc3QgcGxhY2Vob2xkZXIgdHVwbGUg dG8gcmVtb3ZlICovCiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsJ LyogbmV3ZXN0IFhJRCBvZiByZW1vdmVkIHJlZGlyZWN0cyAqLworCWJvb2wgICAgICAgIGlz Q2F0YWxvZ1JlbDsKIAogCS8qIG9mZnNldHMgb2YgcmVkaXJlY3QgdHVwbGVzIHRvIG1ha2Ug cGxhY2Vob2xkZXJzIGZvbGxvdyAqLwogCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxF X0FSUkFZX01FTUJFUl07CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o CmluZGV4IDkxNjViOTQ1NmIuLmIyN2ZkYzBhZWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92 aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0xNyw5ICsxNywxMCBAQAogI2RlZmluZSBCSVRTX1BF Ul9IRUFQQkxPQ0sgMgogCiAvKiBGbGFncyBmb3IgYml0IG1hcCAqLwotI2RlZmluZSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFCTB4MDEKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOCTB4MDIKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyog T1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKLQkJCQkJCQkJCQkJICogZmxhZ3MgYml0 cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFCQkJCQkJCQkweDAxCisj ZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkJCQkJCQkJMHgwMgorI2RlZmluZSBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJCQkJCQkJCTB4MDMJLyogT1Igb2YgYWxsIHZhbGlk IHZpc2liaWxpdHltYXAKKwkJCQkJCQkJCQkJCQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KKyNk ZWZpbmUgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JFTAkweDA0CiAKICNlbmRpZgkJCQkJ CQkvKiBWSVNJQklMSVRZTUFQREVGU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGFmOTc4NTAzOGQu LjBjZmUwMmFhNGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNpbmNsdWRl ICJ1dGlscy9yZWx0cmlnZ2VyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAK IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKaW5kZXggMTI1NzhlNDJiYy4uMDZhZWJlNjMz MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgKQEAgLTQwMSw3ICs0MDEsOCBAQCBleHRlcm4g VHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9oZWFwKFR1cGxlRGVzYyB0dXBEZXNj LAogZXh0ZXJuIFR1cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5fY2x1c3RlcihUdXBs ZURlc2MgdHVwRGVzYywKIAkJCQkJCQkJCQkJICAgUmVsYXRpb24gaW5kZXhSZWwsIGludCB3 b3JrTWVtLAogCQkJCQkJCQkJCQkgICBTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlLAotCQkJ CQkJCQkJCQkgICBpbnQgc29ydG9wdCk7CisJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0LAor CQkJCQkJCQkJCQkgICBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBUdXBsZXNvcnRzdGF0 ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJ CQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgZW5m b3JjZVVuaXF1ZSwKLS0gCjIuMzQuMQoK --------------PsoLkpC3kutW3r5ZDSG03NPT--