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 1pJudN-0004gb-VP for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Jan 2023 11:05:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pJudM-0006jU-Cs for pgsql-hackers@arkaria.postgresql.org; Mon, 23 Jan 2023 11:05:04 +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 1pJudL-0006jL-AG for pgsql-hackers@lists.postgresql.org; Mon, 23 Jan 2023 11:05:03 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pJudD-0000rO-48 for pgsql-hackers@postgresql.org; Mon, 23 Jan 2023 11:05:02 +0000 Received: by mail-wm1-x331.google.com with SMTP id l8so8669898wms.3 for ; Mon, 23 Jan 2023 03:04:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=SFWTrflkA5CeA6IjFG+utlNC1rZ9zcHJ57gxC3rPhvE=; b=IKWP0lmSaGXuwumateI8cHxnnyBTa5q30bN1/gQFu6K3y42C5U2JLarKkuavWYnF6/ UbFTWfiluoXBqcWgAecraC9Kw5CvlLGqWGobU18qWrZe5TH+WI0t4+fsa7JbacFmxK3Y eHJsK67m8IGTVTJGWc2k2YODgbEV307fzynBZ2hGrxmjWT0++RZjnmKIVSwExR5lzzIW zNcC6VNcFZWsX8/tdVBWjAI7cvdSaGCvTGoDYWOURpgqRjuxN9C2YO5oURIGySfVTFrr TYA6dUqAg4EvmsWyR2KfTECVAOzHmb934lunGNUFynKbTEHagGwsC8rLZb8Zm/kapxIa Xa3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SFWTrflkA5CeA6IjFG+utlNC1rZ9zcHJ57gxC3rPhvE=; b=TZnQ3/e04l0Tb7/PU0iT/EsW+ZrFhbmpqkpvxXvKYTM214k3p9noLfRuuvZlgmjvxY adK0DvlAKVfsa/L8rNOT/aPokrgjCeLR5SRBrnfdT5bI4eGmk9PdxWNIt7Ys3kNfkrGA 8o/20Gmsj5cUXQ/dpvkGwcyPA37ppBxCib1430kiiDJhFlS08sIHv5EJAau73zqksnVj EfWla82u7m2VbCiESrBIEDFiFO6AaEB86yXIJaZ7ff3dw2awKvVf0kmnFmfbIhaeME2z arrgzb0Tz94ZE0afdyIZP+NkE5saC/cHFJpzOJ0VdDHLDjCi2B7O68rVbIRLEncNgsw6 HiWA== X-Gm-Message-State: AFqh2kpOHNIMPMRpTBZPJvk7V5C89lqhyrkBdyVmUdWXEp+lEvTxFbjA 9CMZUf21aAm2TU+VhEyMBlo= X-Google-Smtp-Source: AMrXdXuG+RsWHdAl+M/30Edhr+ROf1dSPnujDwUwJ2jEodkTk8ai1i3OsXBL1IzlY9q0hk1j7Sxqrg== X-Received: by 2002:a05:600c:1d89:b0:3d9:f37e:2acb with SMTP id p9-20020a05600c1d8900b003d9f37e2acbmr20351584wms.20.1674471893031; Mon, 23 Jan 2023 03:04:53 -0800 (PST) Received: from [192.168.7.137] ([54.239.6.189]) by smtp.gmail.com with ESMTPSA id t15-20020a05600c198f00b003db32ccf4bfsm10408551wmq.41.2023.01.23.03.04.51 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 23 Jan 2023 03:04:52 -0800 (PST) Content-Type: multipart/mixed; boundary="------------uGIcIikXYGfEG1JfU0PHpWeu" Message-ID: <9e978c6c-0a6e-9271-1203-800c17d91d10@gmail.com> Date: Mon, 23 Jan 2023 12:03:35 +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 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> Content-Language: en-US In-Reply-To: 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. --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/19/23 10:43 AM, Drouvot, Bertrand wrote: > Hi, > > On 1/19/23 3:46 AM, Andres Freund wrote: >> Hi, >> >> I mean a logical walsender that starts on a standby and continues across >> promotion of the standby. >> > > Got it, thanks, will do. > While working on it, I noticed that with V41 a: pg_recvlogical -S active_slot -P test_decoding -d postgres -f - --start on the standby is getting: pg_recvlogical: error: unexpected termination of replication stream: ERROR: could not find record while sending logically-decoded data: invalid record length at 0/311C438: wanted 24, got 0 pg_recvlogical: disconnected; waiting 5 seconds to try again when the standby gets promoted (the logical decoding is able to resume correctly after the error though). This is fixed in V42 attached (no error anymore and logical decoding through the walsender works correctly after the promotion). The fix is in 0003 where in logical_read_xlog_page() (as compare to V41): - We now check if RecoveryInProgress() (instead of relying on am_cascading_walsender) to check if the standby got promoted - Based on this, the currTLI is being retrieved with GetXLogReplayRecPtr() or GetWALInsertionTimeLine() (so, with GetWALInsertionTimeLine() after promotion) - This currTLI is being used as an argument in WALRead() (instead of state->seg.ws_tli, which anyhow sounds weird as being compared with itself that way "tli != state->seg.ws_tli" in WALRead()). That way WALRead() discovers that the timeline changed and then opens the right WAL file. Please find V42 attached. I'll resume working on the TAP tests comments. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; name="v42-0006-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v42-0006-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NDQ1M2I4OTYxNzRlOWUyOGE1ZTI3ZDRmNzQ5ODQ1ZTkyNjBhZmIwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMDoxNDowNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQyIDYvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj 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 --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; name="v42-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v42-0005-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBiY2Y3MWY0NmEwMWU0Yjg0MTkxNjI3YTZiOTRmMDA2NmMzOGY4MzAxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMDoxMzoyMyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQyIDUvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzcgKysKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICB8ICAgMSArCiAuLi4vdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAg ICAgfCA0NzkgKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUxNyBpbnNl cnRpb25zKCspCiAgIDYuMCUgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvCiAgOTMu NyUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi42ZjNjOWE2OTEwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0 MyBAQCAkU0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAk bm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwgc2xv dF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgb24g Z2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0 YW5kYnkKK3sKKwlteSAoJHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUpID0g QF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRoYW5k bGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxmLT5j b25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90X25h bWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsK KworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5IGxv b2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJlc3Rh cnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkjIHJl c3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGlsKAor CQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxMCisJ CUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg PSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBsb2dp Y2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBhcnJh bmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3JlY3Zs b2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+ c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1l IC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUg c2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKaW5kZXggZWRhYWExYTNjZS4uNTJiMjgxNmM3YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsJywKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9y ZXVzZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCisgICAgICAn dC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsJywKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyNTg4 NDRjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTAsMCArMSw0NzkgQEAKKyMgbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5IDogdGVzdCBsb2dpY2FsIGRlY29kaW5nLAorIyByZWNvdmVy eSBjb25mbGljdCBhbmQgc3RhbmRieSBwcm9tb3Rpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFRlc3Q6 Ok1vcmUgdGVzdHMgPT4gNDI7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRy ZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworCisjIE5hbWUgZm9y IHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmltYXJ5X3Nsb3RuYW1lID0g J3ByaW1hcnlfcGh5c2ljYWwnOworCisjIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2Rl IGFmdGVyICRvZmYtdGggYnl0ZQorc3ViIGZpbmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAk cGF0LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlt eSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxv Z2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9n ID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30K KworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xv dHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0 byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgor c3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19l eHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3Jlcycs IHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxp Y2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9y IGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9 CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitz dWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9n aWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2luYWN0aXZlc2xvdCcsICd0 ZXN0ZGInKTsKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5k YnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgQWNx dWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0 ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ugd2FpdCBpcyB0cnVlIHdlIGFyZSB3YWl0 aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAnYWN0aXZlc2xvdCcgc2xvdC4KKyMgSWYg d2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBhcmUgdGVzdGluZyBhIGtub3duIGZhaWx1 cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2FjdGl2ZQoreworCW15ICR3YWl0ID0gc2hp ZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisKKwlwcmludCAic3RhcnRpbmcgcGdfcmVj dmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNlcl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydw Z19yZWN2bG9naWNhbCcsICctZCcsICRub2RlX3N0YW5kYnktPmNvbm5zdHIoJ3Rlc3RkYicp LCAnLVMnLCAnYWN0aXZlc2xvdCcsICctZicsICctJywgJy0tbm8tbG9vcCcsICctLXN0YXJ0 J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwkj IG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCXsKKwkJJG5vZGVfc3RhbmRieS0+ cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1Qg MSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVz bG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5l dmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKworCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsK K30KKworIyBDaGVjayBwZ19yZWN2bG9naWNhbCBzdGRlcnIKK3N1YiBjaGVja19wZ19yZWN2 bG9naWNhbF9zdGRlcnIKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUsICRjaGVja19zdGRl cnIpID0gQF87CisJbXkgJHJldHVybjsKKworCSMgb3VyIGNsaWVudCBzaG91bGQndmUgdGVy bWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fsc2VuZGVyIGVycm9yCisJJHNsb3RfdXNl cl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0gJD87CisJY21wX29rKCRyZXR1cm4sICIh PSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQgbm9uLXplcm8iKTsKKwlpZiAoJHJldHVy bikgeworCQlsaWtlKCRzdGRlcnIsIHFyLyRjaGVja19zdGRlcnIvLCAnc2xvdCBoYXMgYmVl biBpbnZhbGlkYXRlZCcpOworCX0KKworCXJldHVybiAwOworfQorCisjIENoZWNrIGlmIGFs bCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUg J2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUo KSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoZWNrX3Nsb3Rz X2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisKKwlpcygkbm9k ZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdp bmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVfc3RhbmRieS0+ c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2ZXNsb3Qgb24g c3RhbmRieSBkcm9wcGVkJyk7CisKKwljaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJHNs b3RfdXNlcl9oYW5kbGUsICJjb25mbGljdCB3aXRoIHJlY292ZXJ5Iik7Cit9CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21h eF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5f bWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30p OworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisK KyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVz dGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNU ICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlf c2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9wcmltYXJ5 LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg SW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRu b2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfcHJpbWFyeSwgJGJhY2t1 cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOwor JG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJp bWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5 LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0 aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkKKyMgYmVoYXZlcyBjb3JyZWN0 bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwg eSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5T RVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnYWN0aXZlc2xv dCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MK K2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJlc3VsdCksCisJMTQsICdE ZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzJyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQg dmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBwZ19yZWN2bG9naWNh bAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBz LCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCitteSAkZXhw ZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4 W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1J VH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwg J3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRf c3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5V TEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEn KTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91 dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uJyk7CisKK215ICRlbmRwb3MgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBsc24gRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkgT1JE RVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOworcHJpbnQgIndhaXRpbmcgdG8gcmVwbGF5 ICRlbmRwb3NcbiI7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRlciAkZW5kcG9zLCB3aGlj aCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5kYnktPnBn X3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90JywgJGVuZHBv cywgMTgwLAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAtZW1w dHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91dF9y ZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBn X3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVfc3RhbmRieS0+cG9s bF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJP TSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xvdCcg QU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBuZXZlciBiZWNhbWUg aW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2bG9n aWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsIDE4MCwK KyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhhY3Rz JyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJycs ICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQgY2hhbmdlcycpOworCiskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFTRSBvdGhlcmRiJyk7 CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAorICAgICAgICAnb3RoZXJkYicsCisgICAg ICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0 aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorICAg ICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxvZ2ljYWwgc2xvdCBmcm9tIGFub3RoZXIg ZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVz JywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGlu Y2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMTogaG90X3N0YW5kYnlfZmVlZGJh Y2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBP bmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBjb25mbGljdCBpcyB0byBydW4gVkFDVVVN IEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBz dGFuZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics cVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2ZmCitdKTsKKyRub2RlX3N0YW5kYnktPnJl c3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBvZmYgYnkgd2FpdGluZyBm b3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIHByaW1hcnkuIEJvdGgg c2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3YWl0X2Zvcl94bWlu cygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5V TEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3Rf YWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gRlVMTCcpOworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlz c3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dl ZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0 YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0 IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxp ZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKKyMgVmVyaWZ5IHRoYXQg cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhh cyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAor CSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkg ZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3Rk YiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVw ZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5v dCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIFR1 cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24K K10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIg ZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRh bG9nX3htaW4gb24gcHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1p biBzaG91bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVt YWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1p bnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBO T1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxp Y3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xv dHMKKyMgU2NlbmFyaW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1vdmFsIHdpdGggaG90 X3N0YW5kYnlfZmVlZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBm cm9tIGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9IC1zICRub2RlX3N0 YW5kYnktPmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVfc3Rh bmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7CisK K2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292 ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kIGxhdW5jaCBh IHZhY3V1bQorIyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBvZmYgb24gdGhl IHN0YW5kYnkuCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvZmYKK10pOworJG5vZGVfc3RhbmRieS0+ cmVzdGFydDsKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIG9mZiBieSB3YWl0aW5n IGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4gQm90 aCBzaG91bGQgYmUgTlVMTCBzaW5jZSBoc19mZWVkYmFjayBpcyBvZmYKK3dhaXRfZm9yX3ht aW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMg TlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xv dF9hY3RpdmUoMSk7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZs aWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7XSk7Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0nKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29r KCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xv dCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxv Z2dlZCBkdWUgdG8gcm93IHJlbW92YWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZl c2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHJvdyByZW1vdmFsJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4cGVjdCAyIGNv bmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyByZXN0YXJ0 cworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywK Kwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAyKSBmcm9tIHBnX3N0YXRf ZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJ J2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQg d2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRo YW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVh ZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19y ZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRi eV9mZWVkYmFjayBiYWNrIG9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorXSk7Ciskbm9kZV9z dGFuZGJ5LT5yZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBzZW50 IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBw cmltYXJ5LiBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZh bmNlLAorIyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5j ZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9kZV9wcmlt YXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBj YXRhbG9nX3htaW4gSVMgTlVMTCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0 ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJp byAzOiBpbmNvcnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRp b24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0g LXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3Rz Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVw bGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwo J3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVz bG90JyldKTsKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoMSk7CisKKyMgTWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBU aGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7 Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2Zs dXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9n KAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVz bG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCks CisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3 YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFs aWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0 IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBo YXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQg YXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVzdGFydHMKK29rKCAkbm9kZV9zdGFu ZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90ID0gMykgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90 X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBh cyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwgYXQgbGVhc3QgbG9naWNhbCBvbiBtYXN0ZXIKK2No ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBv biBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9u IG1hc3RlciIpOworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1h cnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9n aWNhbCcKK10pOworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBh cyB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUg dG8gcmVhZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3Qg cmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0 aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBw Z19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dCgnYWN0aXZlc2xvdCcpXSk7CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFzZSB0 aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBnZXQg ZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRi eSgkbm9kZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRi IG9uIHRoZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5 Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFCQVNF IHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0 YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitpcygk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElTVFMo U0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicpXSks ICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Nsb3Rz X2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVyc2xv dCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFuZGJ5 IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNsb3Qg dGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCBzdGFuZGJ5IHByb21vdGlvbiBhbmQgbG9naWNhbCBkZWNvZGluZyBiZWhhdmlvcgor IyBhZnRlciB0aGUgc3RhbmRieSBnZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+cHNx bCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3Qo eCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0 aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFb SU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisKKyMg aW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkp IFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCispOwor CisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3RhYmxl IHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRdOic0 JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDog eFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDog SU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1YmxpYy5kZWNvZGlu Z190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09NTUlUfTsKKwor IyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9uIGlu c2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdz a2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVj dGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uIG9u IHByb21vdGVkIHN0YW5kYnknKTsKLS0gCjIuMzQuMQoK --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; name="v42-0004-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v42-0004-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NmY2YmFmMmQ0ZWQyMjhjYWEwYTE0N2I3ZmQxM2NhNmNkY2FkY2Y0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMDoxMjoxNSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQyIDQvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24KIHN0YW5kYnkuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IFdhbFNuZFdhaXRG b3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0bwppbmNyZWFzZSwgYnV0IGdl dHMgd29rZW4gdXAgYnkgd2FscmVjZWl2ZXIgd2hlbiBuZXcgV0FMIGhhcyBiZWVuCmZsdXNo ZWQuIFdoaWNoIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdhbHNlbmRlcnMgd2lsbCBnZXQgd29r ZW4gdXAgYXQgdGhlCnNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mgd2lsbCBi ZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlCnRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVy IGNoZWNrcyBHZXRYTG9nUmVwbGF5UmVjUHRyKCkgaXQncyB1bmxpa2VseQp0aGF0IHRoZSBz dGFydHVwIHByb2Nlc3MgYWxyZWFkeSByZXBsYXllZCB0aGUgcmVjb3JkIGFuZCB1cGRhdGVk ClhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KCkludHJvZHVjaW5nIGEgbmV3IGNv bmRpdGlvbiB2YXJpYWJsZSB0byBmaXggdGhpcyBjb3JuZXIgY2FzZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICB8IDMx ICsrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVy eS5oICAgICAgICAgfCAgMyArKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAg ICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiAgNDEuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDguNSUg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDMuNiUgc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvCiAgIDMuNCUgc3JjL2luY2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggYzE0ZDFmM2VmNi4uNDVkMTcwZTAw OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAg LTM1OCw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJ UmVjb3ZlcnlQYXVzZVN0YXRlIHJlY292ZXJ5UGF1c2VTdGF0ZTsKIAlDb25kaXRpb25WYXJp YWJsZSByZWNvdmVyeU5vdFBhdXNlZENWOwogCisJLyogUmVwbGF5IHN0YXRlIChzZWUgZ2V0 UmVwbGF5ZWRDVigpIGZvciBtb3JlIGV4cGxhbmF0aW9uKSAqLworCUNvbmRpdGlvblZhcmlh YmxlIHJlcGxheWVkQ1Y7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNoYXJl ZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ1JlY292ZXJ5Q3RsRGF0YTsKIApA QCAtNDY3LDYgKzQ3MCw3IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCVNwaW5M b2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7CiAJSW5pdFNoYXJlZExhdGNo KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNlZENWKTsKKwlD b25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVik7CiB9 CiAKIC8qCkBAIC0xOTE2LDYgKzE5MjAsMTEgQEAgQXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRl clN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpyZWNvcmQsIFRpbWVMaW5lSUQgKnJl cGwKIAlYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZFRMSSA9ICpyZXBsYXlUTEk7CiAJ U3BpbkxvY2tSZWxlYXNlKCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAorCS8qCisJ ICogd2FrZSB1cCB3YWxzZW5kZXIocykgdXNlZCBieSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0 YW5kYnkuCisJICovCisJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJlhMb2dSZWNvdmVy eUN0bC0+cmVwbGF5ZWRDVik7CisKIAkvKgogCSAqIElmIHJtX3JlZG8gY2FsbGVkIFhMb2dS ZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSwgdGhlbiB3ZSB3YWtlIHVwIHRoZQogCSAqIHJlY2Vp dmVyIHNvIHRoYXQgaXQgbm90aWNlcyB0aGUgdXBkYXRlZCBsYXN0UmVwbGF5ZWRFbmRSZWNQ dHIgYW5kIHNlbmRzCkBAIC00OTIxLDMgKzQ5MzAsMjIgQEAgYXNzaWduX3JlY292ZXJ5X3Rh 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== --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; name="v42-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v42-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBkOWQ0ZDQ3ODJhOTgyNzQ2NmU5NzI0NzM2YzkxOTc3YTM0YmE1YjFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMDoxMToyOSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQyIDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg 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 YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjI1NzJiZTMwLi4x ZjdhNjg2Y2IxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC01MSw2ICs1MSw3IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJy YXkuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgImFjY2Vzcy94 bG9ncmVjb3ZlcnkuaCIKIAogLyoKICAqIFJlcGxpY2F0aW9uIHNsb3Qgb24tZGlzayBkYXRh IHN0cnVjdHVyZS4KQEAgLTExNzUsMzcgKzExNzYsMjggQEAgUmVwbGljYXRpb25TbG90UmVz 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 KTsKQEAgLTEyMjEsNiArMTIxMywxNyBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZv 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 --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; name="v42-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v42-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBlOWQyMzIxNDVjNTdlMDNlN2QwMWVhZjg5MzEwMTRkNmQxMzc3YmEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMDoxMDoyNCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQyIDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBm aWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHhsb2cuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgMyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAxOTEgKysrKysr KysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAg ICAgICAgICAgIHwgIDI0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2RhdGFiYXNlLmMgIHwgICA0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRi eS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCAgICAgICAgICAgfCAgIDMgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDI2OCBp bnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKICAgMy40JSBkb2Mvc3JjL3NnbWwvCiAg IDguNSUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMyUgc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC8KICA1Ni43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8K ICAgNS4yJSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4zJSBzcmMvYmFja2VuZC90 Y29wLwogICA1LjUlIHNyYy9iYWNrZW5kLwogICAzLjUlIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uLwogICAzLjQlIHNyYy9pbmNsdWRlLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDE3 NTZmMWE0YjYuLmUyNWY3MWE3NzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDM2NSw2 ICs0MzY1LDE3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxv Y2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBz bG90cyBpbiB0aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0 ZWQgYmVjYXVzZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFj dGl2ZSBvbmVzCisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNy ZW1lbnQgdGhpcyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGQwY2YxYjJjODEuLjViMTU2MmZlMGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCiAJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lzdFJlZG9QYWdlUmV1 c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkK IAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKHhscmVjLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhscmVjLT5pc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDhjZWI5MTI4OC4uYjg1NjMwNDc0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDMsNiArMTAwMyw3 IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBO VUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dS ZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggMGUzN2JhZDIxMy4uYjIwNGRmZTEzMCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKQEAgLTg4OTAsNiArODg5MCw3IEBAIGhlYXBfeGxvZ19wcnVuZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJ CXJsb2NhdG9yKTsKIAogCS8qCkBAIC05MDU5LDYgKzkwNjAsNyBAQCBoZWFwX3hsb2dfdmlz aWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJ VFlNQVBfSVNfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBA IC05MTc2LDYgKzkxNzgsNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2UoWExvZ1JlYWRlclN0 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 YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5Li5mMjI1NzJiZTMw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMjI0LDIwICsxMjI0LDIxIEBAIFJl cGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3Ig SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2 ZW4gc2xvdAotICogYW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3Nz aWJsZS4KKyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xv Z2ljYWxSZXBsaWNhdGlvblNsb3RzCisgKgorICogQWNxdWlyZXMgdGhlIGdpdmVuIHNsb3Qg YW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KICAqCiAg KiBSZXR1cm5zIHdoZXRoZXIgUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgd2FzIHJlbGVh c2VkIGluIHRoZSBpbnRlcmltIChhbmQKICAqIGluIHRoYXQgY2FzZSB3ZSdyZSBub3QgaG9s ZGluZyB0aGUgbG9jayBhdCByZXR1cm4sIG90aGVyd2lzZSB3ZSBhcmUpLgogICoKLSAqIFNl dHMgKmludmFsaWRhdGVkIHRydWUgaWYgdGhlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50 b3VjaGVkIG90aGVyd2lzZS4pCisgKiBTZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIGFuIG9i c29sZXRlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50b3VjaGVkIG90aGVyd2lzZS4pCiAg KgogICogVGhpcyBpcyBpbmhlcmVudGx5IHJhY3ksIGJlY2F1c2Ugd2UgcmVsZWFzZSB0aGUg TFdMb2NrCiAgKiBmb3Igc3lzY2FsbHMsIHNvIGNhbGxlciBtdXN0IHJlc3RhcnQgaWYgd2Ug cmV0dXJuIHRydWUuCiAgKi8KIHN0YXRpYyBib29sCi1JbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKLQkJ CQkJCQkgICBib29sICppbnZhbGlkYXRlZCkKK0ludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl T3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0 ciBvbGRlc3RMU04sCisJCQkJCQkJCQkJCQkgICBib29sICppbnZhbGlkYXRlZCwgVHJhbnNh Y3Rpb25JZCAqeGlkKQogewogCWludAkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gMDsKIAlib29s CQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CkBAIC0xMjQ1LDYgKzEyNDYsOSBAQCBJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRy IG9sZGVzdExTTiwKIAlmb3IgKDs7KQogCXsKIAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsK KwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRh bG9nX3htaW47CisKIAkJTmFtZURhdGEJc2xvdG5hbWU7CiAJCWludAkJCWFjdGl2ZV9waWQg PSAwOwogCkBAIC0xMjYxLDE4ICsxMjY1LDMzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkg KiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVl ZHMgdG8gYmUKIAkJICogaW52YWxpZGF0ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVp cmVkLCBhY3F1aXJlIGl0IGFuZCBtYXJrIGl0CiAJCSAqIGFzIGhhdmluZyBiZWVuIGludmFs aWRhdGVkLiAgV2UgZG8gdGhpcyB3aXRoIHRoZSBzcGlubG9jayBoZWxkIHRvCi0JCSAqIGF2 b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gY291 bGQgbW92ZQotCQkgKiBmb3J3YXJkLCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgor CQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIHJlc3RhcnRf bHNuIChvciB0aGUKKwkJICogeG1pbihzKSBjb3VsZCkgbW92ZSBmb3J3YXJkIG9yIHRoZSBz bG90IGNvdWxkIGJlIGRyb3BwZWQuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11 dGV4KTsKIAogCQlyZXN0YXJ0X2xzbiA9IHMtPmRhdGEucmVzdGFydF9sc247CisJCXNsb3Rf eG1pbiA9IHMtPmRhdGEueG1pbjsKKwkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNh dGFsb2dfeG1pbjsKKworCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIChsb2dpY2Fs IGRlY29kaW5nIGNvbmZsaWN0IGNhc2UpICovCisJCWlmICgoeGlkICYmCisJCQkgKChMb2dp Y2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKHMpKQorCQkJICB8fAogCiAJCS8qCi0JCSAq IElmIHRoZSBzbG90IGlzIGFscmVhZHkgaW52YWxpZCBvciBpcyBmcmVzaCBlbm91Z2gsIHdl IGRvbid0IG5lZWQgdG8KLQkJICogZG8gYW55dGhpbmcuCisJCSAqIFdlIGFyZSBub3QgZm9y Y2luZyBmb3IgaW52YWxpZGF0aW9uIGJlY2F1c2UgdGhlIHhpZCBpcyB2YWxpZCBhbmQKKwkJ ICogdGhpcyBpcyBhIG5vbiBjb25mbGljdGluZyBzbG90LgogCQkgKi8KLQkJaWYgKFhMb2dS ZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8IHJlc3RhcnRfbHNuID49IG9sZGVzdExT TikKKwkJCSAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpICYmICEoCisJCQkJCQkJCQkJ CSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQ cmVjZWRlc09yRXF1YWxzKHNsb3RfeG1pbiwgKnhpZCkpCisJCQkJCQkJCQkJCSAgIHx8CisJ CQkJCQkJCQkJCSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikg JiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF9jYXRhbG9nX3htaW4sICp4 aWQpKQorCQkJCQkJCQkJCQkgICApKQorCQkJICApKQorCQkJfHwKKwkJLyogc2xvdCBoYXMg YmVlbiBpbnZhbGlkYXRlZCAob2Jzb2xldGUgTFNOIGNhc2UpICovCisJCQkoIXhpZCAmJiAo WExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0X2xzbikgfHwgcmVzdGFydF9sc24gPj0gb2xk ZXN0TFNOKSkpCiAJCXsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCQkJaWYg KHJlbGVhc2VkX2xvY2spCkBAIC0xMjkyLDExICsxMzExLDE4IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlk ID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNu OwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotCi0JCQkv KiBMZXQgY2FsbGVyIGtub3cgKi8KLQkJCSppbnZhbGlkYXRlZCA9IHRydWU7CisJCQlpZiAo eGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRf bHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJ CQkvKiBMZXQgY2FsbGVyIGtub3cgKi8KKwkJCQkqaW52YWxpZGF0ZWQgPSB0cnVlOworCQkJ fQogCQl9CiAKIAkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CkBAIC0xMzI3LDE1ICsx MzUzLDM5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNs b3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJICovCiAJCQlpZiAobGFzdF9zaWdu YWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsKLQkJCQllcmVwb3J0KExPRywKLQkJCQkJ CWVycm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIiwKLQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1l KSksCi0JCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCQkgIExTTl9GT1JNQVRf QVJHUyhyZXN0YXJ0X2xzbiksCi0JCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVl ZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCQlpZiAoeGlk KQorCQkJCXsKKwkJCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCQl7 CisJCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9j ZXNzICVkIGJlY2F1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGgg cmVjb3ZlcnkiLAorCQkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkp LAorCQkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90IGNvbmZsaWN0ZWQgd2l0aCB4aWQgaG9y aXpvbiAldS4iLAorCQkJCQkJCQkJCSAgKnhpZCkpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJ CQkJeworCQkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcg cHJvY2VzcyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3 aXRoIHJlY292ZXJ5IiwKKwkJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5h bWUpKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg cmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gbWFzdGVyIikp OworCQkJCQl9CisKKwkJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKGFjdGl2ZV9waWQsIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsIEludmFsaWRCYWNrZW5kSWQp OworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQll cnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiIsCisJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUp KSwKKwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJCQkJCQkJICBMU05fRk9STUFU X0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAo b2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKworCQkJCQko dm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKKwkJCQl9CiAKLQkJCQkodm9pZCkg a2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKIAkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFj dGl2ZV9waWQ7CiAJCQl9CiAKQEAgLTEzNjksMTMgKzE0MTksMzMgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRl c3RMU04sCiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNsb3RS ZWxlYXNlKCk7CiAKLQkJCWVyZXBvcnQoTE9HLAotCQkJCQllcnJtc2coImludmFsaWRhdGlu ZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCi0JCQkJCQkgICBOYW1lU3Ry KHNsb3RuYW1lKSksCi0JCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAl WC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCi0JCQkJCQkJICBMU05f Rk9STUFUX0FSR1MocmVzdGFydF9sc24pLAotCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9u ZykgKG9sZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCWVycmhpbnQoIllvdSBtaWdo dCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJaWYg KHhpZCkKKwkJCXsKKwkJCQlwZ3N0YXRfZHJvcF9yZXBsc2xvdChzKTsKKworCQkJCWlmIChU cmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAor CQkJCQkJCWVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwgKnhp ZCkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJ CQllcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZsaWN0 cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRldGFp bCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBi ZSBhdCBsZWFzdCBsb2dpY2FsIG9uIG1hc3RlciIpKTsKKwkJCQl9CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJCQkJCQllcnJtc2coImludmFsaWRhdGluZyBv YnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJICAgTmFtZVN0cihz bG90bmFtZSkpLAorCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVY LyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxv bmcpIChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAorCQkJCQkJZXJyaGludCgiWW91IG1p Z2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQl9 CiAKIAkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBA IC0xMzg4LDIwICsxNDU4LDM4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChS ZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogfQogCiAvKgotICog TWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUgZ2l2 ZW4gc2VnbWVudAotICogYXMgaW52YWxpZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91 dCB0byBiZSByZW1vdmVkLgorICogSW52YWxpZGF0ZSBPYnNvbGV0ZSBzbG90cyBvciByZXNv bHZlIHJlY292ZXJ5IGNvbmZsaWN0cyB3aXRoIGxvZ2ljYWwgc2xvdHMuCiAgKgotICogUmV0 dXJucyB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCisgKiBPYnNv bGV0ZSBjYXNlIChha2EgeGlkIGlzIE5VTEwpOgogICoKLSAqIE5CIC0gdGhpcyBydW5zIGFz IHBhcnQgb2YgY2hlY2twb2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2li bGUuCisgKgkgTWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhh biB0aGUgZ2l2ZW4gc2VnbWVudAorICoJIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0 aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqCSBiZWVuaW52YWxpZGF0ZWQgaXMgc2V0 IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAqCisgKiAg TG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlkIGlzIHZh bGlkLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBvbGRlciB0 aGFuIHhpZC4KKyAqCSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRo YXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlzIGludmFs aWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hl biB0aGUKKyAqCSBtYXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxpY2EsIHNv IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRhdGVkLgog ICovCi1ib29sCi1JbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdO byBvbGRlc3RTZWdubykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZU9yQ29uZmxpY3RpbmdM b2dpY2FsUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8sIGJvb2wgKmJl ZW5pbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExv Z1JlY1B0cglvbGRlc3RMU047Ci0JYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAotCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXpl LCBvbGRlc3RMU04pOworCVhMb2dSZWNQdHIJb2xkZXN0TFNOID0gSW52YWxpZFhMb2dSZWNQ dHI7CisKKwlBc3NlcnQobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49IDApOworCisJaWYgKG1h eF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQorCQlyZXR1cm47CisKKwlpZiAoIXhpZCkKKwl7 CisJCSpiZWVuaW52YWxpZGF0ZWQgPSBmYWxzZTsKKwkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIob2xkZXN0U2Vnbm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIG9sZGVzdExTTik7CisJfQog CiByZXN0YXJ0OgogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ss IExXX1NIQVJFRCk7CkBAIC0xNDEyLDI0ICsxNTAwLDM1IEBAIHJlc3RhcnQ6CiAJCWlmICgh cy0+aW5fdXNlKQogCQkJY29udGludWU7CiAKLQkJaWYgKEludmFsaWRhdGVQb3NzaWJseU9i c29sZXRlU2xvdChzLCBvbGRlc3RMU04sICZpbnZhbGlkYXRlZCkpCisJCWlmICh4aWQpCiAJ CXsKLQkJCS8qIGlmIHRoZSBsb2NrIHdhcyByZWxlYXNlZCwgc3RhcnQgZnJvbSBzY3JhdGNo ICovCi0JCQlnb3RvIHJlc3RhcnQ7CisJCQkvKiB3ZSBhcmUgb25seSBkZWFsaW5nIHdpdGgg KmxvZ2ljYWwqIHNsb3QgY29uZmxpY3RzICovCisJCQlpZiAoIVNsb3RJc0xvZ2ljYWwocykp CisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBub3QgdGhlIGRhdGFiYXNlIG9mIGlu dGVyZXN0IGFuZCB3ZSBkb24ndCB3YW50IGFsbCB0aGUKKwkJCSAqIGRhdGFiYXNlLCBza2lw CisJCQkgKi8KKwkJCWlmIChzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkICYmIFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCWNvbnRpbnVlOwogCQl9CisKKwkJaWYgKEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KHMsIG9sZGVz dExTTiwgYmVlbmludmFsaWRhdGVkLCB4aWQpKQorCQkJZ290byByZXN0YXJ0OwogCX0KKwog CUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCiAJLyoKLQkg KiBJZiBhbnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUg cmVzb3VyY2UgbGltaXRzLgorCSAqIElmIGFueSBvYnNvbGV0ZSBzbG90cyBoYXZlIGJlZW4g aW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZQorCSAqIGxpbWl0cy4KIAkg Ki8KLQlpZiAoaW52YWxpZGF0ZWQpCisJaWYgKCF4aWQgJiYgKmJlZW5pbnZhbGlkYXRlZCkK IAl7CiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKIAkJ UmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCX0KLQotCXJldHVybiBp bnZhbGlkYXRlZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK aW5kZXggNGVkMzc0N2UzZi4uODg4NWNkZWViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1MywxNCBAQCBTdGFydExvZ2ljYWxSZXBsaWNh dGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNhdGlvblNsb3RBY3F1 aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkgJiYgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1pbikpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdh cyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0cklz SW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXgg Mzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy KFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qp OworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwppbmRleCA5NGNjODYwZjVmLi5kYWJhNzY2OTQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAidXRp bHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUg InV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKIAog LyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVycyAqLwogaW50CQkJdmFjdXVtX2RlZmVy X2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKICAq Lwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9n UmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC01MDAsNiArNTAyLDkgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlpZiAod2FsX2xldmVsID49IFdBTF9MRVZF TF9MT0dJQ0FMICYmIGlzQ2F0YWxvZ1JlbCkKKwkJSW52YWxpZGF0ZU9ic29sZXRlT3JDb25m bGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBOVUxM LCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAvKgpA QCAtNTA4LDYgKzUxMyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQKIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewogCS8q CkBAIC01MjYsNyArNTMyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJVHJh bnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlpc0Nh dGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2ICsx NDk1LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJ CXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwogCQkJ YnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoK KwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlvbiBz bG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qg b24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCA0NzBiNzM0ZTllLi4wMDQxODk2NjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yNDgx LDYgKzI0ODEsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJY2Fz ZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWlsKCJV c2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhhdCBt dXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2luZyB0 aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7CiAJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJ ZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0 aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1MCw2ICszMDUzLDI3IEBAIFJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xP R0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVxdWly ZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVxdWly ZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNlIHRo ZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJCSAq IHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlv bgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJlY292 ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3RhbmRi eSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2luZyBJ c1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28gYnJl YWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAmJgor CQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCAm JgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGljYXRp b25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsK KwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYgd2Ug YXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggNmU2 NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVwb3J0 X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJwaW4r KzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CkBA IC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRy eVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChj b25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9s b2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJUEdT VEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9BQ0NV TV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQo Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMKaW5kZXggNjczNzQ5MzQwMi4uYWZkNjJkM2NjMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNjYsNiArMTA2Niw4IEBAIFBHX1NUQVRfR0VU X0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0X3Jv bGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2spCiAK Ky8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFUX0dF VF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdfc3Rh dF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDk5LDYg KzExMDEsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05fQVJH UykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSAr CiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5j b25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2ljYWxz bG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAg ZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IGMwZjJhOGE3N2MuLjY1OWU1YmRjM2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtNTU3Nyw2ICs1NTc3LDExIEBACiAgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAog ICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBl cyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFw c2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJl Y292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNh dGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9n aWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywg cHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4g JzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGlu IGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdz JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdz dGF0LmgKaW5kZXggNWUzMzI2YTNiOS4uODcyZWIzNTc1NyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTI5MSw2ICsy OTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRfQ291 bnRlciBjb25mbGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2xv Y2s7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0NvdW50 ZXIgY29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfYnVm ZmVycGluOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7CiAJ UGdTdGF0X0NvdW50ZXIgdGVtcF9maWxlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRl eCA4ODcyYzgwY2RmLi5kMzkyYjVlZWM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBA IC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKIAorI2RlZmluZSBMb2dpY2FsUmVwbGljYXRp b25TbG90SXNJbnZhbGlkKHMpICghVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWlu KSAmJiBcCisJCQkJCQkJCQkJCSAhVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRh bG9nX3htaW4pKQogLyoKICAqIEJlaGF2aW91ciBvZiByZXBsaWNhdGlvbiBzbG90cywgdXBv biByZWxlYXNlIG9yIGNyYXNoLgogICoKQEAgLTIxNSw3ICsyMTcsNyBAQCBleHRlcm4gdm9p ZCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKHZvaWQpOwogZXh0ZXJuIFhM b2dSZWNQdHIgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lk KTsKIGV4dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lk LCBpbnQgKm5zbG90cywgaW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9u U2xvdHNEcm9wREJTbG90cyhPaWQgZGJvaWQpOwotZXh0ZXJuIGJvb2wgSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJu IHZvaWQgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlv blNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqYmVlbmludmFsaWRhdGVkLCBP aWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgKnhpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90 ICpTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5l ZWRfbG9jayk7CiBleHRlcm4gaW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJlcGxpY2F0aW9u U2xvdCAqc2xvdCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRl eCwgTmFtZSBuYW1lKTsKQEAgLTIyNyw1ICsyMjksNiBAQCBleHRlcm4gdm9pZCBDaGVja1Bv aW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVx dWlyZW1lbnRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UGVybWlzc2lvbnModm9p ZCk7CitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xv dHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCA5MDVhZjIyMzFiLi4yZjUyMTAwYjAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAog CVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JV RkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0ss CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMmVmZmRlYTEyNi4uNDFmNGRjMzcyZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDggKzMwLDEwIEBAIGV4dGVybiB2b2lk IEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiBleHRlcm4gdm9p ZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIAogZXh0 ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCWJvb2wgaXNDYXRh bG9nUmVsLAogCQkJCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkJICAg Ym9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9j YXRvcik7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNw YWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aERhdGFiYXNlKE9pZCBkYmlkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK aW5kZXggZTdhMmY1ODU2YS4uN2Q0ODMxZGZmZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTE4NjgsNyArMTg2OCw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzfCBTRUxFQ1Qgb2lkIEFTIGRhdGlkLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X2xvY2sob2lkKSBBUyBjb25mbF9sb2NrLAogICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZs aWN0X3NuYXBzaG90KG9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3RfYnVmZmVycGluKG9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgIHBn X3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2sob2lkKSBBUyBjb25mbF9k ZWFkbG9jaworICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2so b2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9s b2dpY2Fsc2xvdChvaWQpIEFTIGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdAogICAgRlJPTSBw Z19kYXRhYmFzZSBkOwogcGdfc3RhdF9nc3NhcGl8IFNFTEVDVCBwaWQsCiAgICAgZ3NzX2F1 dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEKCg== --------------uGIcIikXYGfEG1JfU0PHpWeu Content-Type: text/plain; charset=UTF-8; name="v42-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v42-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzYzIwNmJkNzc4MzFkNTA3ZjRmOTVlMTk0MmViMjY4NTU1MjQ1NzFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogTW9uLCAyMyBKYW4gMjAyMyAxMDowNzo1MSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjQyIDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y 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 YyAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVp bGQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwu YyAgICAgICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMg ICAgICAgICB8IDE0ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMg ICAgICAgIHwgMTIgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgfCAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAg IHwgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICB8 ICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICB8ICAy ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyAgICB8ICAzICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAgICAgfCA4MiArKysr KysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jICAg ICAgICB8IDk5ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0cmVlLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHNlYXJjaC5jICAgICAgfCA0NSArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnR1dGlscy5jICAgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9z cGdpc3Qvc3BndmFjdXVtLmMgICAgICB8ICA5ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFs eXplLmMgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1w YXJhbGxlbC5jICAgICAgfCAgNiArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxh bmNhdC5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0 dmFyaWFudHMuYyB8ICA3ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCAgICAgICAg ICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAg ICAgICAgfCAgNCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmggICAgICAgICAg ICAgIHwgMTEgKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAg ICAgfCAgOCArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICAg IHwgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCAgICAgICAgICAgICAgICB8 IDMxICsrKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggICAgICAgICAgICAg ICB8ICA2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oICAgICAgICAgICAgICAg fCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgICAgfCAg OSArLQogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgIHwgIDEg Kwogc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmggICAgICAgICAgICAgIHwgIDMgKy0K IDM1IGZpbGVzIGNoYW5nZWQsIDIzNCBpbnNlcnRpb25zKCspLCAxODYgZGVsZXRpb25zKC0p CiAgIDQuOCUgY29udHJpYi9hbWNoZWNrLwogICA1LjAlIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0LwogICA1LjMlIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogIDU1LjglIHNyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvCiAgIDUuMCUgc3JjL2JhY2tlbmQvYWNjZXNzLwogICAzLjMl IHNyYy9iYWNrZW5kLwogIDE5LjclIHNyYy9pbmNsdWRlL2FjY2Vzcy8KCmRpZmYgLS1naXQg YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3Zl cmlmeV9uYnRyZWUuYwppbmRleCAyNTdjZmY2NzFiLi44ZDNhYmJkY2ViIDEwMDY0NAotLS0g YS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCisrKyBiL2NvbnRyaWIvYW1jaGVj ay92ZXJpZnlfbmJ0cmVlLmMKQEAgLTE4Myw3ICsxODMsOCBAQCBzdGF0aWMgaW5saW5lIGJv b2wgaW52YXJpYW50X2xfbm9udGFyZ2V0X29mZnNldChCdHJlZUNoZWNrU3RhdGUgKnN0YXRl LAogCQkJCQkJCQkJCQkJT2Zmc2V0TnVtYmVyIHVwcGVyYm91bmQpOwogc3RhdGljIFBhZ2Ug cGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIg YmxvY2tudW0pOwogc3RhdGljIGlubGluZSBCVFNjYW5JbnNlcnQgYnRfbWtzY2Fua2V5X3Bp dm90c2VhcmNoKFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkJCQkJCQlJbmRleFR1cGxlIGl0dXAp OworCQkJCQkJCQkJCQkJCUluZGV4VHVwbGUgaXR1cCwKKwkJCQkJCQkJCQkJCQlSZWxhdGlv biBoZWFwcmVsKTsKIHN0YXRpYyBJdGVtSWQgUGFnZUdldEl0ZW1JZENhcmVmdWwoQnRyZWVD aGVja1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2ssCiAJCQkJCQkJCSAgIFBhZ2Ug cGFnZSwgT2Zmc2V0TnVtYmVyIG9mZnNldCk7CiBzdGF0aWMgaW5saW5lIEl0ZW1Qb2ludGVy IEJUcmVlVHVwbGVHZXRIZWFwVElEQ2FyZWZ1bChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLApA QCAtMzMxLDcgKzMzMiw3IEBAIGJ0X2luZGV4X2NoZWNrX2ludGVybmFsKE9pZCBpbmRyZWxp ZCwgYm9vbCBwYXJlbnRjaGVjaywgYm9vbCBoZWFwYWxsaW5kZXhlZCwKIAkJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShpbmRyZWwpKSkpOwogCiAJCS8qIEV4dHJhY3QgbWV0YWRh dGEgZnJvbSBtZXRhcGFnZSwgYW5kIHNhbml0aXplIGl0IGluIHBhc3NpbmcgKi8KLQkJX2J0 X21ldGF2ZXJzaW9uKGluZHJlbCwgJmhlYXBrZXlzcGFjZSwgJmFsbGVxdWFsaW1hZ2UpOwor CQlfYnRfbWV0YXZlcnNpb24oaW5kcmVsLCAmaGVhcGtleXNwYWNlLCAmYWxsZXF1YWxpbWFn ZSwgaGVhcHJlbCk7CiAJCWlmIChhbGxlcXVhbGltYWdlICYmICFoZWFwa2V5c3BhY2UpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRF RCksCkBAIC0xMjU4LDcgKzEyNTksNyBAQCBidF90YXJnZXRfcGFnZV9jaGVjayhCdHJlZUNo ZWNrU3RhdGUgKnN0YXRlKQogCQl9CiAKIAkJLyogQnVpbGQgaW5zZXJ0aW9uIHNjYW5rZXkg Zm9yIGN1cnJlbnQgcGFnZSBvZmZzZXQgKi8KLQkJc2tleSA9IGJ0X21rc2NhbmtleV9waXZv dHNlYXJjaChzdGF0ZS0+cmVsLCBpdHVwKTsKKwkJc2tleSA9IGJ0X21rc2NhbmtleV9waXZv dHNlYXJjaChzdGF0ZS0+cmVsLCBpdHVwLCBzdGF0ZS0+aGVhcHJlbCk7CiAKIAkJLyoKIAkJ ICogTWFrZSBzdXJlIHR1cGxlIHNpemUgZG9lcyBub3QgZXhjZWVkIHRoZSByZWxldmFudCBC VFJFRV9WRVJTSU9OCkBAIC0xNzY4LDcgKzE3NjksNyBAQCBidF9yaWdodF9wYWdlX2NoZWNr X3NjYW5rZXkoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSkKIAkgKiBtZW1vcnkgcmVtYWluaW5n IGFsbG9jYXRlZC4KIAkgKi8KIAlmaXJzdGl0dXAgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0 ZW0ocmlnaHRwYWdlLCByaWdodGl0ZW0pOwotCXJldHVybiBidF9ta3NjYW5rZXlfcGl2b3Rz ZWFyY2goc3RhdGUtPnJlbCwgZmlyc3RpdHVwKTsKKwlyZXR1cm4gYnRfbWtzY2Fua2V5X3Bp dm90c2VhcmNoKHN0YXRlLT5yZWwsIGZpcnN0aXR1cCwgc3RhdGUtPmhlYXByZWwpOwogfQog CiAvKgpAQCAtMjY4MSw3ICsyNjgyLDcgQEAgYnRfcm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQogCUJ1ZmZlcgkJbGJ1ZjsKIAlib29sCQll eGlzdHM7CiAKLQlrZXkgPSBfYnRfbWtzY2Fua2V5KHN0YXRlLT5yZWwsIGl0dXApOworCWtl eSA9IF9idF9ta3NjYW5rZXkoc3RhdGUtPnJlbCwgaXR1cCwgc3RhdGUtPmhlYXByZWwpOwog CUFzc2VydChrZXktPmhlYXBrZXlzcGFjZSAmJiBrZXktPnNjYW50aWQgIT0gTlVMTCk7CiAK IAkvKgpAQCAtMjY5NCw3ICsyNjk1LDcgQEAgYnRfcm9vdGRlc2NlbmQoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwKQogCSAqLwogCUFzc2VydChzdGF0ZS0+cmVh ZG9ubHkgJiYgc3RhdGUtPnJvb3RkZXNjZW5kKTsKIAlleGlzdHMgPSBmYWxzZTsKLQlzdGFj ayA9IF9idF9zZWFyY2goc3RhdGUtPnJlbCwga2V5LCAmbGJ1ZiwgQlRfUkVBRCwgTlVMTCk7 CisJc3RhY2sgPSBfYnRfc2VhcmNoKHN0YXRlLT5yZWwsIGtleSwgJmxidWYsIEJUX1JFQUQs IE5VTEwsIHN0YXRlLT5oZWFwcmVsKTsKIAogCWlmIChCdWZmZXJJc1ZhbGlkKGxidWYpKQog CXsKQEAgLTMxMzMsMTEgKzMxMzQsMTEgQEAgcGFsbG9jX2J0cmVlX3BhZ2UoQnRyZWVDaGVj a1N0YXRlICpzdGF0ZSwgQmxvY2tOdW1iZXIgYmxvY2tudW0pCiAgKiB0aGUgc2NhbmtleSBp cyBncmVhdGVyLgogICovCiBzdGF0aWMgaW5saW5lIEJUU2Nhbkluc2VydAotYnRfbWtzY2Fu a2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwKQorYnRfbWtz Y2Fua2V5X3Bpdm90c2VhcmNoKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLCBSZWxh dGlvbiBoZWFwcmVsKQogewogCUJUU2Nhbkluc2VydCBza2V5OwogCi0Jc2tleSA9IF9idF9t a3NjYW5rZXkocmVsLCBpdHVwKTsKKwlza2V5ID0gX2J0X21rc2NhbmtleShyZWwsIGl0dXAs IGhlYXByZWwpOwogCXNrZXktPnBpdm90c2VhcmNoID0gdHJ1ZTsKIAogCXJldHVybiBza2V5 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5jCmluZGV4IGJhMzk0ZjA4ZjYuLjIzNWYxYTE4NDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKQEAgLTM0OCw3ICszNDgsNyBAQCBnaXN0cGxh Y2V0b3BhZ2UoUmVsYXRpb24gcmVsLCBTaXplIGZyZWVzcGFjZSwgR0lTVFNUQVRFICpnaXN0 c3RhdGUsCiAJCWZvciAoOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkKIAkJewogCQkJLyogQWxs b2NhdGUgbmV3IHBhZ2UgKi8KLQkJCXB0ci0+YnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihyZWwp OworCQkJcHRyLT5idWZmZXIgPSBnaXN0TmV3QnVmZmVyKGhlYXBSZWwsIHJlbCk7CiAJCQlH SVNUSW5pdEJ1ZmZlcihwdHItPmJ1ZmZlciwgKGlzX2xlYWYpID8gRl9MRUFGIDogMCk7CiAJ CQlwdHItPnBhZ2UgPSBCdWZmZXJHZXRQYWdlKHB0ci0+YnVmZmVyKTsKIAkJCXB0ci0+Ymxv Y2suYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihwdHItPmJ1ZmZlcik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCmluZGV4IGQyMWEzMDhkNDEuLmE4Nzg5MGI5NjUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWlsZC5jCkBAIC0yOTgsNyArMjk4LDcg QEAgZ2lzdGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8g KmluZGV4SW5mbykKIAkJUGFnZQkJcGFnZTsKIAogCQkvKiBpbml0aWFsaXplIHRoZSByb290 IHBhZ2UgKi8KLQkJYnVmZmVyID0gZ2lzdE5ld0J1ZmZlcihpbmRleCk7CisJCWJ1ZmZlciA9 IGdpc3ROZXdCdWZmZXIoaGVhcCwgaW5kZXgpOwogCQlBc3NlcnQoQnVmZmVyR2V0QmxvY2tO dW1iZXIoYnVmZmVyKSA9PSBHSVNUX1JPT1RfQkxLTk8pOwogCQlwYWdlID0gQnVmZmVyR2V0 UGFnZShidWZmZXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0dXRpbC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwppbmRleCA1 NjQ1MWZlZGUxLi4xMTllMzRjZTBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKQEAgLTgyMSw3ICs4MjEsNyBAQCBnaXN0Y2hlY2twYWdlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZikKICAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRo ZSBwYWdlIGJ5IGNhbGxpbmcgR0lTVEluaXRCdWZmZXIKICAqLwogQnVmZmVyCi1naXN0TmV3 QnVmZmVyKFJlbGF0aW9uIHIpCitnaXN0TmV3QnVmZmVyKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIHIpCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAJYm9vbAkJbmVlZExvY2s7CkBAIC04 NjUsNyArODY1LDcgQEAgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiByKQogCQkJCSAqIHBhZ2Un cyBkZWxldGVYaWQuCiAJCQkJICovCiAJCQkJaWYgKFhMb2dTdGFuZGJ5SW5mb0FjdGl2ZSgp ICYmIFJlbGF0aW9uTmVlZHNXQUwocikpCi0JCQkJCWdpc3RYTG9nUGFnZVJldXNlKHIsIGJs a25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CisJCQkJCWdpc3RYTG9nUGFnZVJl dXNlKGhlYXByZWwsIHIsIGJsa25vLCBHaXN0UGFnZUdldERlbGV0ZVhpZChwYWdlKSk7CiAK IAkJCQlyZXR1cm4gYnVmZmVyOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHhsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9n LmMKaW5kZXggZjY1ODY0MjU0YS4uZDBjZjFiMmM4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0eGxvZy5jCkBAIC0xNzcsNiArMTc3LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJZ2lzdHhsb2dEZWxldGUgKnhsZGF0YSA9IChn aXN0eGxvZ0RlbGV0ZSAqKSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOwogCUJ1ZmZlcgkJYnVm ZmVyOwogCVBhZ2UJCXBhZ2U7CisJT2Zmc2V0TnVtYmVyICp0b0RlbGV0ZSA9IHhsZGF0YS0+ b2Zmc2V0czsKIAogCS8qCiAJICogSWYgd2UgaGF2ZSBhbnkgY29uZmxpY3QgcHJvY2Vzc2lu ZyB0byBkbywgaXQgbXVzdCBoYXBwZW4gYmVmb3JlIHdlCkBAIC0yMDMsMTQgKzIwNCw3IEBA IGdpc3RSZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCXsKIAkJ cGFnZSA9IChQYWdlKSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAKLQkJaWYgKFhMb2dSZWNH ZXREYXRhTGVuKHJlY29yZCkgPiBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSkKLQkJewotCQkJT2Zm c2V0TnVtYmVyICp0b2RlbGV0ZTsKLQotCQkJdG9kZWxldGUgPSAoT2Zmc2V0TnVtYmVyICop ICgoY2hhciAqKSB4bGRhdGEgKyBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSk7Ci0KLQkJCVBhZ2VJ bmRleE11bHRpRGVsZXRlKHBhZ2UsIHRvZGVsZXRlLCB4bGRhdGEtPm50b2RlbGV0ZSk7Ci0J CX0KKwkJUGFnZUluZGV4TXVsdGlEZWxldGUocGFnZSwgdG9EZWxldGUsIHhsZGF0YS0+bnRv ZGVsZXRlKTsKIAogCQlHaXN0Q2xlYXJQYWdlSGFzR2FyYmFnZShwYWdlKTsKIAkJR2lzdE1h cmtUdXBsZXNEZWxldGVkKHBhZ2UpOwpAQCAtNTk3LDcgKzU5MSw4IEBAIGdpc3RYTG9nQXNz aWduTFNOKHZvaWQpCiAgKiBXcml0ZSBYTE9HIHJlY29yZCBhYm91dCByZXVzZSBvZiBhIGRl bGV0ZWQgcGFnZS4KICAqLwogdm9pZAotZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgRnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQorZ2lz dFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gaGVhcHJlbCwgUmVsYXRpb24gcmVsLAorCQkJCSAg QmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIHsKIAln aXN0eGxvZ1BhZ2VSZXVzZSB4bHJlY19yZXVzZTsKIApAQCAtNjA4LDYgKzYwMyw3IEBAIGdp c3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxU cmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8KKwl4 bHJlY19yZXVzZS5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNh bERlY29kaW5nKGhlYXByZWwpOwogCXhscmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xv Y2F0b3I7CiAJeGxyZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFw c2hvdENvbmZsaWN0SG9yaXpvbiA9IGRlbGV0ZVhpZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr 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 YwppbmRleCAzODhkZjk0YTQ0Li4wZTM3YmFkMjEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtNjg3MSw2ICs2ODcxLDcgQEAgaGVhcF9mcmVlemVfZXhlY3V0ZV9wcmVw YXJlZChSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWZmZXIsCiAJCW5wbGFucyA9IGhlYXBfbG9n X2ZyZWV6ZV9wbGFuKHR1cGxlcywgbnR1cGxlcywgcGxhbnMsIG9mZnNldHMpOwogCiAJCXhs cmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247 CisJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2Fs RGVjb2RpbmcocmVsKTsKIAkJeGxyZWMubnBsYW5zID0gbnBsYW5zOwogCiAJCVhMb2dCZWdp bkluc2VydCgpOwpAQCAtODQ0MSw3ICs4NDQyLDcgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hy aW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogICogdXBkYXRlIHRoZSBoZWFwIHBh Z2UncyBMU04uCiAgKi8KIFhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1ZmZlciwK K2xvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCiAJCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhv cml6b24sIHVpbnQ4IHZtZmxhZ3MpCiB7CiAJeGxfaGVhcF92aXNpYmxlIHhscmVjOwpAQCAt ODQ1Myw2ICs4NDU0LDggQEAgbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9j 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 L2luY2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oCmluZGV4IDhhZjMzZDdiNDAuLjliZGFj MTJiYWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmgKQEAgLTQ0MCw3ICs0NDAs NyBAQCBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1BhZ2VEZWxldGUoQnVmZmVyIGJ1ZmZl ciwKIAkJCQkJCQkJCSBGdWxsVHJhbnNhY3Rpb25JZCB4aWQsIEJ1ZmZlciBwYXJlbnRCdWZm ZXIsCiAJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyIGRvd25saW5rT2Zmc2V0KTsKIAotZXh0ZXJu IHZvaWQgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtu bywKK2V4dGVybiB2b2lkIGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIGhlYXByZWwsIFJl bGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJCQkJICBGdWxsVHJhbnNhY3Rp b25JZCBkZWxldGVYaWQpOwogCiBleHRlcm4gWExvZ1JlY1B0ciBnaXN0WExvZ1VwZGF0ZShC dWZmZXIgYnVmZmVyLApAQCAtNDg1LDcgKzQ4NSw3IEBAIGV4dGVybiBib29sIGdpc3Rwcm9w ZXJ0eShPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8sCiBleHRlcm4gYm9vbCBnaXN0Zml0cGFn ZShJbmRleFR1cGxlICppdHZlYywgaW50IGxlbik7CiBleHRlcm4gYm9vbCBnaXN0bm9zcGFj ZShQYWdlIHBhZ2UsIEluZGV4VHVwbGUgKml0dmVjLCBpbnQgbGVuLCBPZmZzZXROdW1iZXIg dG9kZWxldGUsIFNpemUgZnJlZXNwYWNlKTsKIGV4dGVybiB2b2lkIGdpc3RjaGVja3BhZ2Uo UmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmKTsKLWV4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZl cihSZWxhdGlvbiByKTsKK2V4dGVybiBCdWZmZXIgZ2lzdE5ld0J1ZmZlcihSZWxhdGlvbiBo ZWFwcmVsLCBSZWxhdGlvbiByKTsKIGV4dGVybiBib29sIGdpc3RQYWdlUmVjeWNsYWJsZShQ YWdlIHBhZ2UpOwogZXh0ZXJuIHZvaWQgZ2lzdGZpbGxidWZmZXIoUGFnZSBwYWdlLCBJbmRl eFR1cGxlICppdHVwLCBpbnQgbGVuLAogCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZik7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9naXN0eGxvZy5oCmluZGV4IDA5ZjliMGY4YzYuLjE5MWYwZTU4MDggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0eGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9naXN0eGxvZy5oCkBAIC01MSwxMyArNTEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg Z2lzdHhsb2dEZWxldGUKIHsKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uOwogCXVpbnQxNgkJbnRvZGVsZXRlOwkJLyogbnVtYmVyIG9mIGRlbGV0ZWQgb2Zmc2V0 cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsKIAotCS8qCi0JICogSW4gcGF5bG9h ZCBvZiBibGsgMCA6IHRvZGVsZXRlIE9mZnNldE51bWJlcnMKLQkgKi8KKwkvKiBUT0RFTEVU RSBPRkZTRVQgTlVNQkVSUyAqLworCU9mZnNldE51bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FS UkFZX01FTUJFUl07CiB9IGdpc3R4bG9nRGVsZXRlOwogCi0jZGVmaW5lIFNpemVPZkdpc3R4 bG9nRGVsZXRlCShvZmZzZXRvZihnaXN0eGxvZ0RlbGV0ZSwgbnRvZGVsZXRlKSArIHNpemVv Zih1aW50MTYpKQorI2RlZmluZSBTaXplT2ZHaXN0eGxvZ0RlbGV0ZSBvZmZzZXRvZihnaXN0 eGxvZ0RlbGV0ZSwgb2Zmc2V0cykKIAogLyoKICAqIEJhY2t1cCBCbGsgMDogSWYgdGhpcyBv cGVyYXRpb24gY29tcGxldGVzIGEgcGFnZSBzcGxpdCwgYnkgaW5zZXJ0aW5nIGEKQEAgLTEw MCw5ICsxMDAsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlUmV1c2UKIAlSZWxG aWxlTG9jYXRvciBsb2NhdG9yOwogCUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOworCWJvb2wgICAgICAgIGlzQ2F0YWxv Z1JlbDsKIH0gZ2lzdHhsb2dQYWdlUmV1c2U7CiAKLSNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dQ YWdlUmV1c2UJKG9mZnNldG9mKGdpc3R4bG9nUGFnZVJldXNlLCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbikgKyBzaXplb2YoRnVsbFRyYW5zYWN0aW9uSWQpKQorI2RlZmluZSBTaXplT2ZH aXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdlUmV1c2UsIGlzQ2F0YWxv Z1JlbCkgKyBzaXplb2YoYm9vbCkpCiAKIGV4dGVybiB2b2lkIGdpc3RfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBnaXN0X2Rlc2MoU3RyaW5nSW5mbyBi dWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oYXNoX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaApp bmRleCBhMmYwZjM5MjEzLi44ZjFkZmVkYWFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGFzaF94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5o CkBAIC0yNTIsMTIgKzI1MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZQogewogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJ aW50CQkJbnR1cGxlczsKLQotCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyBGT0xMT1cgQVQg VEhFIEVORCAqLworCWJvb2wJCWlzQ2F0YWxvZ1JlbDsKKwkvKiBUQVJHRVQgT0ZGU0VUIE5V TUJFUlMgKi8KKwlPZmZzZXROdW1iZXIgb2Zmc2V0c1tGTEVYSUJMRV9BUlJBWV9NRU1CRVJd OwogfSB4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZIYXNoVmFj dXVtT25lUGFnZSBcCi0JKG9mZnNldG9mKHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlLCBudHVw bGVzKSArIHNpemVvZihpbnQpKQorI2RlZmluZSBTaXplT2ZIYXNoVmFjdXVtT25lUGFnZSBv ZmZzZXRvZih4bF9oYXNoX3ZhY3V1bV9vbmVfcGFnZSwgb2Zmc2V0cykKIAogZXh0ZXJuIHZv aWQgaGFzaF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIGhh c2hfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCA4Y2IwZDhkYTE5Li4xZDQzMTgxYTQwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ1LDEwICsyNDUsMTEgQEAgdHlw ZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b247CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1aW50MTYJCW5kZWFkOwor CWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsKIAkvKiBPRkZTRVQgTlVNQkVSUyBhcmUgaW4g dGhlIGJsb2NrIHJlZmVyZW5jZSAwICovCiB9IHhsX2hlYXBfcHJ1bmU7CiAKLSNkZWZpbmUg U2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBuZGVhZCkgKyBzaXpl b2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFw X3BydW5lLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9mKGJvb2wpKQogCiAvKgogICogVGhlIHZh Y3V1bSBwYWdlIHJlY29yZCBpcyBzaW1pbGFyIHRvIHRoZSBwcnVuZSByZWNvcmQsIGJ1dCBj YW4gb25seSBtYXJrCkBAIC0zNDQsMTIgKzM0NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9o ZWFwX2ZyZWV6ZV9wYWdlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9y aXpvbjsKIAl1aW50MTYJCW5wbGFuczsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CiAK IAkvKiBGUkVFWkUgUExBTlMgRk9MTE9XICovCiAJLyogT0ZGU0VUIE5VTUJFUiBBUlJBWSBG T0xMT1dTICovCiB9IHhsX2hlYXBfZnJlZXplX3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mSGVh cEZyZWV6ZVBhZ2UgKG9mZnNldG9mKHhsX2hlYXBfZnJlZXplX3BhZ2UsIG5wbGFucykgKyBz aXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcEZyZWV6ZVBhZ2UgKG9mZnNldG9m KHhsX2hlYXBfZnJlZXplX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAK IC8qCiAgKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2 aXNpYmlsaXR5IG1hcCBiaXQKQEAgLTQwOCw3ICs0MTAsNyBAQCBleHRlcm4gdm9pZCBoZWFw Ml9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRl cm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9p ZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4 dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1 ZmZlciB2bV9idWZmZXIsCiAJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b24sCiAJCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJl ZS5oCmluZGV4IDhmNDg5NjBmOWQuLmNkY2ZkZDYwMzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgK QEAgLTExODIsOCArMTE4MiwxMCBAQCBleHRlcm4gSW5kZXhUdXBsZSBfYnRfc3dhcF9wb3N0 aW5nKEluZGV4VHVwbGUgbmV3aXRlbSwgSW5kZXhUdXBsZSBvcG9zdGluZywKIGV4dGVybiBi b29sIF9idF9kb2luc2VydChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQkJ CSBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLCBib29sIGluZGV4VW5jaGFuZ2VkLAog CQkJCQkJIFJlbGF0aW9uIGhlYXBSZWwpOwotZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxp dChSZWxhdGlvbiByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrKTsKLWV4dGVybiBC dWZmZXIgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwgQlRTdGFjayBzdGFjaywgQmxv Y2tOdW1iZXIgY2hpbGQpOworZXh0ZXJuIHZvaWQgX2J0X2ZpbmlzaF9zcGxpdChSZWxhdGlv biByZWwsIEJ1ZmZlciBsYnVmLCBCVFN0YWNrIHN0YWNrLAorCQkJCQkJCSBSZWxhdGlvbiBo ZWFwcmVsKTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHN0YWNrYnVmKFJlbGF0aW9uIHJlbCwg QlRTdGFjayBzdGFjaywgQmxvY2tOdW1iZXIgY2hpbGQsCisJCQkJCQkJICBSZWxhdGlvbiBo ZWFwcmVsKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnRzcGxp dGxvYy5jCkBAIC0xMTk3LDE2ICsxMTk5LDE4IEBAIGV4dGVybiBPZmZzZXROdW1iZXIgX2J0 X2ZpbmRzcGxpdGxvYyhSZWxhdGlvbiByZWwsIFBhZ2Ugb3JpZ3BhZ2UsCiAgKi8KIGV4dGVy biB2b2lkIF9idF9pbml0bWV0YXBhZ2UoUGFnZSBwYWdlLCBCbG9ja051bWJlciByb290Ymtu dW0sIHVpbnQzMiBsZXZlbCwKIAkJCQkJCQkgYm9vbCBhbGxlcXVhbGltYWdlKTsKLWV4dGVy biBib29sIF9idF92YWN1dW1fbmVlZHNfY2xlYW51cChSZWxhdGlvbiByZWwpOwotZXh0ZXJu IHZvaWQgX2J0X3NldF9jbGVhbnVwX2luZm8oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBu dW1fZGVscGFnZXMpOworZXh0ZXJuIGJvb2wgX2J0X3ZhY3V1bV9uZWVkc19jbGVhbnVwKFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gdm9pZCBfYnRfc2V0X2Ns ZWFudXBfaW5mbyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIG51bV9kZWxwYWdlcywKKwkJ CQkJCQkJIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIHZvaWQgX2J0X3VwZ3JhZGVtZXRh cGFnZShQYWdlIHBhZ2UpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0cm9vdChSZWxhdGlvbiBy ZWwsIGludCBhY2Nlc3MpOwotZXh0ZXJuIEJ1ZmZlciBfYnRfZ2V0dHJ1ZXJvb3QoUmVsYXRp b24gcmVsKTsKLWV4dGVybiBpbnQJX2J0X2dldHJvb3RoZWlnaHQoUmVsYXRpb24gcmVsKTsK K2V4dGVybiBCdWZmZXIgX2J0X2dldHJvb3QoUmVsYXRpb24gcmVsLCBpbnQgYWNjZXNzLCBS ZWxhdGlvbiBoZWFwcmVsKTsKK2V4dGVybiBCdWZmZXIgX2J0X2dldHRydWVyb290KFJlbGF0 aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CitleHRlcm4gaW50CV9idF9nZXRyb290aGVp Z2h0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCk7CiBleHRlcm4gdm9pZCBfYnRf bWV0YXZlcnNpb24oUmVsYXRpb24gcmVsLCBib29sICpoZWFwa2V5c3BhY2UsCi0JCQkJCQkJ Ym9vbCAqYWxsZXF1YWxpbWFnZSk7CisJCQkJCQkJYm9vbCAqYWxsZXF1YWxpbWFnZSwgUmVs YXRpb24gaGVhcHJlbCk7CiBleHRlcm4gdm9pZCBfYnRfY2hlY2twYWdlKFJlbGF0aW9uIHJl bCwgQnVmZmVyIGJ1Zik7Ci1leHRlcm4gQnVmZmVyIF9idF9nZXRidWYoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2Vzcyk7CitleHRlcm4gQnVmZmVyIF9idF9n ZXRidWYoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywgaW50IGFjY2VzcywKKwkJ CQkJCSBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBCdWZmZXIgX2J0X3JlbGFuZGdldGJ1 ZihSZWxhdGlvbiByZWwsIEJ1ZmZlciBvYnVmLAogCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJs a25vLCBpbnQgYWNjZXNzKTsKIGV4dGVybiB2b2lkIF9idF9yZWxidWYoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmKTsKQEAgLTEyMzAsMjAgKzEyMzQsMjEgQEAgZXh0ZXJuIHZvaWQgX2J0 X3BlbmRpbmdmc21fZmluYWxpemUoUmVsYXRpb24gcmVsLCBCVFZhY1N0YXRlICp2c3RhdGUp OwogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIG5idHNlYXJjaC5jCiAgKi8KIGV4 dGVybiBCVFN0YWNrIF9idF9zZWFyY2goUmVsYXRpb24gcmVsLCBCVFNjYW5JbnNlcnQga2V5 LCBCdWZmZXIgKmJ1ZlAsCi0JCQkJCQkgIGludCBhY2Nlc3MsIFNuYXBzaG90IHNuYXBzaG90 KTsKKwkJCQkJCSAgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QsIFJlbGF0aW9uIGhl YXByZWwpOwogZXh0ZXJuIEJ1ZmZlciBfYnRfbW92ZXJpZ2h0KFJlbGF0aW9uIHJlbCwgQlRT Y2FuSW5zZXJ0IGtleSwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQlib29sIGZvcnVwZGF0ZSwgQlRT dGFjayBzdGFjaywgaW50IGFjY2VzcywgU25hcHNob3Qgc25hcHNob3QpOworCQkJCQkJCWJv b2wgZm9ydXBkYXRlLCBCVFN0YWNrIHN0YWNrLCBpbnQgYWNjZXNzLAorCQkJCQkJCVNuYXBz aG90IHNuYXBzaG90LCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiBPZmZzZXROdW1iZXIg X2J0X2JpbnNyY2hfaW5zZXJ0KFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSk7CiBleHRlcm4gaW50MzIgX2J0X2NvbXBhcmUoUmVsYXRpb24gcmVsLCBCVFNjYW5J bnNlcnQga2V5LCBQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwogZXh0ZXJuIGJv b2wgX2J0X2ZpcnN0KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpOwog ZXh0ZXJuIGJvb2wgX2J0X25leHQoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9u IGRpcik7CiBleHRlcm4gQnVmZmVyIF9idF9nZXRfZW5kcG9pbnQoUmVsYXRpb24gcmVsLCB1 aW50MzIgbGV2ZWwsIGJvb2wgcmlnaHRtb3N0LAotCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBz aG90KTsKKwkJCQkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgUmVsYXRpb24gaGVhcHJlbCk7 CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gbmJ0dXRpbHMuYwogICov Ci1leHRlcm4gQlRTY2FuSW5zZXJ0IF9idF9ta3NjYW5rZXkoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGl0dXApOworZXh0ZXJuIEJUU2Nhbkluc2VydCBfYnRfbWtzY2Fua2V5KFJlbGF0 aW9uIHJlbCwgSW5kZXhUdXBsZSBpdHVwLCBSZWxhdGlvbiBoZWFwcmVsKTsKIGV4dGVybiB2 b2lkIF9idF9mcmVlc3RhY2soQlRTdGFjayBzdGFjayk7CiBleHRlcm4gdm9pZCBfYnRfcHJl cHJvY2Vzc19hcnJheV9rZXlzKEluZGV4U2NhbkRlc2Mgc2Nhbik7CiBleHRlcm4gdm9pZCBf YnRfc3RhcnRfYXJyYXlfa2V5cyhJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCmluZGV4IGVkZDEzMzNkOWIuLjk5ZDg3ZDcxODkg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL25idHhsb2cuaApAQCAtMTg4LDkgKzE4OCwxMCBAQCB0eXBlZGVmIHN0 cnVjdCB4bF9idHJlZV9yZXVzZV9wYWdlCiAJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcjsKIAlC bG9ja051bWJlciBibG9jazsKIAlGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbjsKKwlib29sICAgICAgICBpc0NhdGFsb2dSZWw7CiB9IHhsX2J0cmVlX3JldXNl X3BhZ2U7CiAKLSNkZWZpbmUgU2l6ZU9mQnRyZWVSZXVzZVBhZ2UJKHNpemVvZih4bF9idHJl ZV9yZXVzZV9wYWdlKSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVSZXVzZVBhZ2UJKG9mZnNldG9m KHhsX2J0cmVlX3JldXNlX3BhZ2UsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkpCiAK IC8qCiAgKiB4bF9idHJlZV92YWN1dW0gYW5kIHhsX2J0cmVlX2RlbGV0ZSByZWNvcmRzIGRl c2NyaWJlIGRlbGV0aW9uIG9mIGluZGV4CkBAIC0yMzUsMTMgKzIzNiwxNCBAQCB0eXBlZGVm IHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwogCXVpbnQxNgkJbmRlbGV0ZWQ7CiAJdWludDE2CQludXBkYXRlZDsKKwli b29sICAgICAgICBpc0NhdGFsb2dSZWw7CiAKIAkvKiBERUxFVEVEIFRBUkdFVCBPRkZTRVQg TlVNQkVSUyBGT0xMT1cgKi8KIAkvKiBVUERBVEVEIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyBG T0xMT1cgKi8KIAkvKiBVUERBVEVEIFRVUExFUyBNRVRBREFUQSAoeGxfYnRyZWVfdXBkYXRl KSBBUlJBWSBGT0xMT1dTICovCiB9IHhsX2J0cmVlX2RlbGV0ZTsKIAotI2RlZmluZSBTaXpl T2ZCdHJlZURlbGV0ZQkob2Zmc2V0b2YoeGxfYnRyZWVfZGVsZXRlLCBudXBkYXRlZCkgKyBz aXplb2YodWludDE2KSkKKyNkZWZpbmUgU2l6ZU9mQnRyZWVEZWxldGUJKG9mZnNldG9mKHhs X2J0cmVlX2RlbGV0ZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogLyoKICAq IFRoZSBvZmZzZXRzIHRoYXQgYXBwZWFyIGluIHhsX2J0cmVlX3VwZGF0ZSBtZXRhZGF0YSBh cmUgb2Zmc2V0cyBpbnRvIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Nw Z3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKaW5kZXggYjlkNjc1MzUz My4uMjlhNmFhNTdhOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCkBAIC0yNDAsNiArMjQwLDcg QEAgdHlwZWRlZiBzdHJ1Y3Qgc3BneGxvZ1ZhY3V1bVJlZGlyZWN0CiAJdWludDE2CQluVG9Q bGFjZWhvbGRlcjsgLyogbnVtYmVyIG9mIHJlZGlyZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVy cyAqLwogCU9mZnNldE51bWJlciBmaXJzdFBsYWNlaG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhv bGRlciB0dXBsZSB0byByZW1vdmUgKi8KIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwkvKiBuZXdlc3QgWElEIG9mIHJlbW92ZWQgcmVkaXJlY3RzICovCisJYm9v bCAgICAgICAgaXNDYXRhbG9nUmVsOwogCiAJLyogb2Zmc2V0cyBvZiByZWRpcmVjdCB0dXBs ZXMgdG8gbWFrZSBwbGFjZWhvbGRlcnMgZm9sbG93ICovCiAJT2Zmc2V0TnVtYmVyIG9mZnNl dHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgKaW5kZXggOTE2NWI5NDU2Yi4uYjI3ZmRjMGFlZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTE3LDkgKzE3LDEwIEBACiAjZGVm aW5lIEJJVFNfUEVSX0hFQVBCTE9DSyAyCiAKIC8qIEZsYWdzIGZvciBiaXQgbWFwICovCi0j ZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUJMHgwMQotI2RlZmluZSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4JMHgwMgotI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAotCQkJCQkJCQkJCQkg KiBmbGFncyBiaXRzICovCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUJCQkJ CQkJCTB4MDEKKyNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCQkJCQkJCQkweDAy CisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUwkJCQkJCQkJMHgwMwkvKiBPUiBv ZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAorCQkJCQkJCQkJCQkJCQkJCQkJICogZmxhZ3Mg Yml0cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0lTX0NBVEFMT0dfUkVMCTB4MDQKIAog I2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXgg YWY5Nzg1MDM4ZC4uMGNmZTAyYWE0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2Nh dGFsb2cuaCIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVz b3J0LmggYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaAppbmRleCAxMjU3OGU0MmJj Li4wNmFlYmU2MzMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAtNDAxLDcgKzQwMSw4 IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2hlYXAoVHVwbGVE ZXNjIHR1cERlc2MsCiBleHRlcm4gVHVwbGVzb3J0c3RhdGUgKnR1cGxlc29ydF9iZWdpbl9j bHVzdGVyKFR1cGxlRGVzYyB0dXBEZXNjLAogCQkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRl eFJlbCwgaW50IHdvcmtNZW0sCiAJCQkJCQkJCQkJCSAgIFNvcnRDb29yZGluYXRlIGNvb3Jk aW5hdGUsCi0JCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsKKwkJCQkJCQkJCQkJICAgaW50 IHNvcnRvcHQsCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGhlYXByZWwpOwogZXh0ZXJuIFR1 cGxlc29ydHN0YXRlICp0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVh cFJlbCwKIAkJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsLAogCQkJCQkJCQkJCQkJ ICAgYm9vbCBlbmZvcmNlVW5pcXVlLAotLSAKMi4zNC4xCgo= --------------uGIcIikXYGfEG1JfU0PHpWeu--