Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wA1MU-001zOi-2r for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 08:00:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wA1MS-00FVzT-0k for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 08:00:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wA1MR-00FVzD-2c for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 08:00:36 +0000 Received: from mail-oa1-x36.google.com ([2001:4860:4864:20::36]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wA1MO-000000013b4-33sn for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 08:00:35 +0000 Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-4152698e745so1986739fac.1 for ; Tue, 07 Apr 2026 01:00:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775548831; cv=none; d=google.com; s=arc-20240605; b=F2xxu5ZezadOhhYb/2oTj/ug1kBIALIstoj66H69/qejrWS15oZ6Do7jvrggKCdXbW nJhv9wYBDWOnOuHaOCEH9st7rDM9DeWQizBVw+TbRGnJ+rUoY5Pg6CaT36D600rbeRIA XEXh5w6elNTsY/HyH02RYa66FVgLOPm//j9Luc76n0w4J7UQz3moEVpkJzh2nZdFyecY cuHLSmpacdIU7DtH825gZW3/3DYVoBCa53evfkailLDKPsoLJ15G2rmM6nYVJdI54lvx vuwUKrTWCqe3q9wYZbOT4NVur2307h5/enHqF/Aj+hccsImhC2XcmKn3MygLuxskahRg H9ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=F3hB/U4A3jSvABUihKl8vUTuWpTG59F0m6Qvw2NzbAI=; fh=NArqXMIu3UrJQ9mwWYL9tuyfHSgfKAMNb26DHwlCt8Y=; b=BRWhbwU8WVVhJ04jTR6Ca3ev7HxvH5EEvQ6m6RI4RH0dggDnPbpT1vpCVv6pjYUuFT lplU6eWpUt3UhM0E0BR937oOgjSI4JYtLESvDQUv/bVAf9MaawKHIXo3JEeTPjF5hjH8 Uu8gHhK36hVH7VkoopSouIhNy8uu4TGABijBLQesEaFHNwyMMdiYkMjF/UVvGjsSN8xT T5+6Ivn8efFql7ojKoO9j1/qTQNr5Bi5bMepxTcdpIFoab55FuaZQm58yCohha4yAAmz ACdKL22yOnf6NCL18W9pzsxZsiex7T7Ezq9/6CwhOyrpm6gMxH9//iCvC5/ryc9jR5PX HCCA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775548831; x=1776153631; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=F3hB/U4A3jSvABUihKl8vUTuWpTG59F0m6Qvw2NzbAI=; b=MNFjTmXdL2N9YZA6mD/ElC0g6+fZz6aCfdOZN8VCXrSo0MsK/nYnLLyfp/RLBwU8fB C+iPFrVEKv/e8gmvG4pKMhCSczYqSiXjQ/pO0GHRRHXKCgEFcxdr5zdPPjqqyGcLuPb9 O/9fD1ttDun73vqH4AKx5r4EV+fXYM15J0G9T/lAVSU4jTxOru+UawZUcID6OcOOQbSw ZwlAkdfu6g0eMmZJPrW3kZvNfxIggLMvtDud+jXHx8F0guV0JdIFCrstyUpNPJQF65tD nY/c8jccMqDy4QOYZAb4m/d6xIxrHqKUUhkapeFPNJc1LdxsFhTbmz3GDlA97ZDsyLDr BChQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775548831; x=1776153631; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=F3hB/U4A3jSvABUihKl8vUTuWpTG59F0m6Qvw2NzbAI=; b=FKi0ZE3OWP5UPCXdyomrJ40YCKYMSlDIYyDH2qnmIqR6izE36OICHz4R5zgjdmeWCM J8mX/szqM4uj4hV73M4wZM9fTI7z+dBkQNEtkyHULBWpKY5dAX5Pds+GsEpRADGSO500 bqIBfIg9JbpNLW9gs7dsdcTCErV/V0LRgcvu0iXsm2iLj9F3itCXVkemp9b9xYsqGztW Vj/JWFTZwBAvkm5UG0BktkDz56kuLhNyso6d4Ij7eYAbAyBEqpKkWi1P2lXp/itbR18N H3qpcLWA9bAZpJRom6dV18zskEgbHmEY3VoCYzUOH1jYGMDF6VWhhnApf4WDvXc44PYQ cyvg== X-Forwarded-Encrypted: i=1; AJvYcCVfPLvMjmGJ0mcmp3YBhcWiz+3Qert/+UNSSe+DgsTyvpQfUpj/ZwZzZ4520vI5DraJVSs8ScCpy4rQqsPE@lists.postgresql.org X-Gm-Message-State: AOJu0YxkjR4tUqQ3zYWfsCCPuNUB3LPTxM0l6FV5bQfCgoAo5uQr4pze d70xTl6Ms+yCfGqpjwq6HA8xEWKLZZjfC/MPqphf2KZmx1tqNNFSbG4SmJk64hXfNlKYa9ZwvaD i6/6O25egjnOV1bkh8olDKD2ZuYTPpbw= X-Gm-Gg: AeBDieth05QNDlRbzyFL/411Jgrdz5vg2EAENYEnQXdQ99gYQaR67P1XIQJdGgTMTp2 CgCuk034gQKxFl9TUV/rWAumRGxdBLruZQcY9fYZpJFzoZG3fx4pFbhUat0qZs0cEM05DAkTRIj uOm6J2ekyY08wUzPHh161kObBKdDpj8p9ogvBms9BY83Zfld9oNza7V68ZalpNw3hxJ77idmd/n frt8BsOjL975p2IqbAVH57+KGLSe/cCyJJaned9e+64bCugWC+On/lM2idvxcqJ/PkCFZOSJ3a9 IpJJatOIYnYRQl4OT1aV X-Received: by 2002:a05:6871:4608:b0:409:77a9:f951 with SMTP id 586e51a60fabf-4230fc8779cmr8146418fac.11.1775548830890; Tue, 07 Apr 2026 01:00:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Richard Guo Date: Tue, 7 Apr 2026 17:00:17 +0900 X-Gm-Features: AQROBzCT46xPRiNPhya-CBKmeYszm8v2pD0xwfdnfmjFWRadKFI1RLMQcDNU7Ro Message-ID: Subject: Re: Potential partition pruning regression on PostgreSQL 18 To: David Rowley Cc: =?UTF-8?Q?C=C3=A1ndido_Antonio_Mart=C3=ADnez_Descalzo?= , Pg Hackers Content-Type: multipart/mixed; boundary="000000000000590fd2064eda2dc0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000590fd2064eda2dc0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 2, 2026 at 4:34=E2=80=AFPM Richard Guo = wrote: > Attached is a draft patch for the fix. > > Regarding backpatching, I'm inclined to only back-patch this down to > v18. This issue actually predates v18, for example, when the > partition key is a non-Var expression. A non-Var target item will be > wrapped in a PHV, causing us to fail the partition key match. > However, the changes in v18 seem to have made the issue common enough > to notice. This is very similar to the index matching case. Here are the more formal patches for HEAD and for v18. In the HEAD patch, I renamed strip_phvs_in_index_operand() to strip_noop_phvs() and moved it from indxpath.c to placeholder.c, since it is now a general-purpose utility used by both index matching and partition pruning code. However, since strip_phvs_in_index_operand() is an extern function declared in a public header, I'm worried that third-party extensions may have started calling it after it was introduced in ad66f705f. So for the v18 back-patch, I retained strip_phvs_in_index_operand() in indxpath.c as a thin wrapper around the new strip_noop_phvs(), to avoid breaking such extensions in a minor release. Does this seem like reasonable caution, or is it overkill given how recently the function was introduced? - Richard --000000000000590fd2064eda2dc0 Content-Type: application/octet-stream; name="v2-HEAD-0001-Strip-PlaceHolderVars-from-partition-pruning-oper.patch" Content-Disposition: attachment; filename="v2-HEAD-0001-Strip-PlaceHolderVars-from-partition-pruning-oper.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnobwqg20 RnJvbSAyZDI4ZDA4YjBiMGUwODI3NDk3ZTI4NTdjNjdhYmFjNWIxNjEzYTIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVGh1LCAyIEFwciAyMDI2IDE0OjU0OjQ0ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2Ml0g U3RyaXAgUGxhY2VIb2xkZXJWYXJzIGZyb20gcGFydGl0aW9uIHBydW5pbmcgb3BlcmFuZHMKTUlN RS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCldoZW4gcHVsbGluZyB1cCBhIHN1YnF1ZXJ5 LCBpdHMgdGFyZ2V0bGlzdCBpdGVtcyBtYXkgYmUgd3JhcHBlZCBpbgpQbGFjZUhvbGRlclZhcnMg dG8gZW5mb3JjZSBzZXBhcmF0ZSBpZGVudGl0eSBvciBhcyBhIHJlc3VsdCBvZiBvdXRlcgpqb2lu cy4gIFRoaXMgY2F1c2VzIGFueSB1cHBlci1sZXZlbCBXSEVSRSBjbGF1c2VzIHJlZmVyZW5jaW5n IHRoZXNlCm91dHB1dHMgdG8gY29udGFpbiBQbGFjZUhvbGRlclZhcnMsIHdoaWNoIHByZXZlbnRz IHBhcnRwcnVuZS5jIGZyb20KcmVjb2duaXppbmcgdGhhdCB0aGV5IG1hdGNoIHBhcnRpdGlvbiBr ZXkgY29sdW1ucywgZGVmZWF0aW5nIHBhcnRpdGlvbgpwcnVuaW5nLgoKVG8gZml4LCBzdHJpcCBQ bGFjZUhvbGRlclZhcnMgZnJvbSBvcGVyYW5kcyBiZWZvcmUgY29tcGFyaW5nIHRoZW0gdG8KcGFy dGl0aW9uIGtleXMuICBBIFBsYWNlSG9sZGVyVmFyIHdpdGggZW1wdHkgcGhudWxsaW5ncmVscyBh cHBlYXJpbmcKaW4gYSByZWxhdGlvbi1zY2FuLWxldmVsIGV4cHJlc3Npb24gaXMgZWZmZWN0aXZl bHkgYSBuby1vcCwgc28Kc3RyaXBwaW5nIGl0IGlzIHNhZmUuICBUaGlzIHBhcmFsbGVscyB0aGUg ZXhpc3RpbmcgdHJlYXRtZW50IGluCmluZHhwYXRoLmMgZm9yIGluZGV4IG1hdGNoaW5nLgoKSW4g cGFzc2luZywgcmVuYW1lIHN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZCgpIHRvIHN0cmlwX25v b3BfcGh2cygpCmFuZCBtb3ZlIGl0IGZyb20gaW5keHBhdGguYyB0byBwbGFjZWhvbGRlci5jLCBz aW5jZSBpdCBpcyBub3cgYQpnZW5lcmFsLXB1cnBvc2UgdXRpbGl0eSB1c2VkIGJ5IGJvdGggaW5k ZXggbWF0Y2hpbmcgYW5kIHBhcnRpdGlvbgpwcnVuaW5nIGNvZGUuCgpCYWNrLXBhdGNoIHRvIHYx OC4gIEFsdGhvdWdoIHRoaXMgaXNzdWUgZXhpc3RzIGJlZm9yZSB0aGF0LCBjaGFuZ2VzIGluCnRo YXQgdmVyc2lvbiBtYWRlIGl0IGNvbW1vbiBlbm91Z2ggdG8gbm90aWNlLiAgR2l2ZW4gdGhlIGxh Y2sgb2YgZmllbGQKcmVwb3J0cyBmb3Igb2xkZXIgdmVyc2lvbnMsIEkgYW0gbm90IGJhY2stcGF0 Y2hpbmcgZnVydGhlci4gIEluIHRoZQp2MTggYmFjay1wYXRjaCwgc3RyaXBfcGh2c19pbl9pbmRl eF9vcGVyYW5kKCkgaXMgcmV0YWluZWQgYXMgYSB0aGluCndyYXBwZXIgYXJvdW5kIHRoZSBuZXcg c3RyaXBfbm9vcF9waHZzKCkgdG8gYXZvaWQgYnJlYWtpbmcgdGhpcmQtcGFydHkKZXh0ZW5zaW9u cyB0aGF0IG1heSByZWZlcmVuY2UgaXQuCgpSZXBvcnRlZC1ieTogQ8OhbmRpZG8gQW50b25pbyBN YXJ0w61uZXogRGVzY2Fsem8gPGNhbmRpZG9AbmluZWhxLmNvbT4KRGlhZ25vc2VkLWJ5OiBEYXZp ZCBSb3dsZXkgPGRncm93bGV5bWxAZ21haWwuY29tPgpBdXRob3I6IFJpY2hhcmQgR3VvIDxndW9m ZW5nbGludXhAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSDVZ YVV3VlVXRVRUeVZFQ1RuaHM3Qz1DVndpK3VNU1FIPWNPa3dBVXFNZHZYZHdXQUBtYWlsLmdtYWls LmNvbQpCYWNrcGF0Y2gtdGhyb3VnaDogMTgKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9pbmR4cGF0aC5jICAgICAgICAgfCAgOTEgKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYWNlaG9sZGVyLmMgICAgICB8ICA5MSArKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICAgICAgICB8ICAyOCArKystCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCAgICAgICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BsYWNlaG9sZGVyLmggICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDEzMiArKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgICAgICB8ICA3MSAr KysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwppbmRleCA2N2Q5ZGMzNWY0 NC4uNDMwZTA2ZGNhYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2lu ZHhwYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAt MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcHJl cC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKQEAgLTE5NSw4ICsxOTYsNiBAQCBzdGF0aWMgRXhwciAqbWF0Y2hfY2xh dXNlX3RvX29yZGVyaW5nX29wKEluZGV4T3B0SW5mbyAqaW5kZXgsCiBzdGF0aWMgYm9vbCBlY19t ZW1iZXJfbWF0Y2hlc19pbmRleGNvbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCQkJCQkJCQkJICAgRXF1aXZhbGVuY2VDbGFzcyAqZWMsIEVxdWl2YWxlbmNlTWVtYmVyICpl bSwKIAkJCQkJCQkJCSAgIHZvaWQgKmFyZyk7Ci1zdGF0aWMgYm9vbCBjb250YWluX3N0cmlwcGFi bGVfcGh2X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKLXN0YXRpYyBOb2RlICpz dHJpcF9waHZzX2luX2luZGV4X29wZXJhbmRfbXV0YXRvcihOb2RlICpub2RlLCB2b2lkICpjb250 ZXh0KTsKIAogCiAvKgpAQCAtNDM2Myw3ICs0MzYyLDcgQEAgbWF0Y2hfaW5kZXhfdG9fb3BlcmFu ZChOb2RlICpvcGVyYW5kLAogCSAqIGEgc3VidHJlZSkgaGFzIGJlZW4gd3JhcHBlZCBpbiBQbGFj ZUhvbGRlclZhcnMgdG8gZW5mb3JjZSBzZXBhcmF0ZQogCSAqIGlkZW50aXR5IG9yIGFzIGEgcmVz dWx0IG9mIG91dGVyIGpvaW5zLgogCSAqLwotCW9wZXJhbmQgPSBzdHJpcF9waHZzX2luX2luZGV4 X29wZXJhbmQob3BlcmFuZCk7CisJb3BlcmFuZCA9IHN0cmlwX25vb3BfcGh2cyhvcGVyYW5kKTsK IAogCS8qCiAJICogSWdub3JlIGFueSBSZWxhYmVsVHlwZSBub2RlIGFib3ZlIHRoZSBvcGVyYW5k LiAgVGhpcyBpcyBuZWVkZWQgdG8gYmUKQEAgLTQ0MjcsOTIgKzQ0MjYsNiBAQCBtYXRjaF9pbmRl eF90b19vcGVyYW5kKE5vZGUgKm9wZXJhbmQsCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKgotICog c3RyaXBfcGh2c19pbl9pbmRleF9vcGVyYW5kCi0gKgkgIFN0cmlwIFBsYWNlSG9sZGVyVmFyIG5v ZGVzIGZyb20gdGhlIGdpdmVuIG9wZXJhbmQgZXhwcmVzc2lvbiB0bwotICoJICBmYWNpbGl0YXRl IG1hdGNoaW5nIGFnYWluc3QgYW4gaW5kZXgncyBrZXkuCi0gKgotICogQSBQbGFjZUhvbGRlclZh ciBhcHBlYXJpbmcgaW4gYSByZWxhdGlvbi1zY2FuLWxldmVsIGV4cHJlc3Npb24gaXMKLSAqIGVm ZmVjdGl2ZWx5IGEgbm8tb3AuICBOZXZlcnRoZWxlc3MsIHRvIHBsYXkgaXQgc2FmZSwgd2Ugc3Ry aXAgb25seQotICogUGxhY2VIb2xkZXJWYXJzIHRoYXQgYXJlIG5vdCBtYXJrZWQgbnVsbGFibGUu Ci0gKgotICogVGhlIHJlbW92YWwgaXMgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5IGJlY2F1c2UgUGxh Y2VIb2xkZXJWYXJzIGNhbiBiZSBuZXN0ZWQKLSAqIG9yIGludGVybGVhdmVkIHdpdGggb3RoZXIg bm9kZSB0eXBlcy4gIFdlIG11c3QgcGVlbCBiYWNrIGFsbCBsYXllcnMgdG8KLSAqIGV4cG9zZSB0 aGUgYmFzZSBvcGVyYW5kLgotICoKLSAqIEFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB3 ZSBmaXJzdCB1c2UgYSBsaWdodHdlaWdodCB3YWxrZXIgdG8gY2hlY2sKLSAqIGZvciB0aGUgcHJl c2VuY2Ugb2Ygc3RyaXBwYWJsZSBQbGFjZUhvbGRlclZhcnMuICBUaGUgZXhwZW5zaXZlIG11dGF0 b3IgaXMKLSAqIGludm9rZWQgb25seSBpZiBhIGNhbmRpZGF0ZSBpcyBmb3VuZCwgYXZvaWRpbmcg dW5uZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb24KLSAqIGFuZCB0cmVlIGNvcHlpbmcgaW4gdGhl IGNvbW1vbiBjYXNlIHdoZXJlIG5vIFBsYWNlSG9sZGVyVmFycyBhcmUgcHJlc2VudC4KLSAqLwot Tm9kZSAqCi1zdHJpcF9waHZzX2luX2luZGV4X29wZXJhbmQoTm9kZSAqb3BlcmFuZCkKLXsKLQkv KiBEb24ndCBtdXRhdGUvY29weSBpZiBubyB0YXJnZXQgUEhWcyBleGlzdCAqLwotCWlmICghY29u dGFpbl9zdHJpcHBhYmxlX3Bodl93YWxrZXIob3BlcmFuZCwgTlVMTCkpCi0JCXJldHVybiBvcGVy YW5kOwotCi0JcmV0dXJuIHN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZF9tdXRhdG9yKG9wZXJh bmQsIE5VTEwpOwotfQotCi0vKgotICogY29udGFpbl9zdHJpcHBhYmxlX3Bodl93YWxrZXIKLSAq CSAgRGV0ZWN0IGlmIHRoZXJlIGFyZSBhbnkgUGxhY2VIb2xkZXJWYXJzIGluIHRoZSB0cmVlIHRo YXQgYXJlIGNhbmRpZGF0ZXMKLSAqCSAgZm9yIHN0cmlwcGluZy4KLSAqCi0gKiBXZSBpZGVudGlm eSBhIFBsYWNlSG9sZGVyVmFyIGFzIHN0cmlwcGFibGUgb25seSBpZiBpdHMgcGhudWxsaW5ncmVs cyBpcwotICogZW1wdHkuCi0gKi8KLXN0YXRpYyBib29sCi1jb250YWluX3N0cmlwcGFibGVfcGh2 X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQotewotCWlmIChub2RlID09IE5VTEwp Ci0JCXJldHVybiBmYWxzZTsKLQotCWlmIChJc0Eobm9kZSwgUGxhY2VIb2xkZXJWYXIpKQotCXsK LQkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZhciAqKSBub2RlOwotCi0JCWlm IChibXNfaXNfZW1wdHkocGh2LT5waG51bGxpbmdyZWxzKSkKLQkJCXJldHVybiB0cnVlOwotCX0K LQotCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNvbnRhaW5fc3RyaXBwYWJs ZV9waHZfd2Fsa2VyLAotCQkJCQkJCQkgIGNvbnRleHQpOwotfQotCi0vKgotICogc3RyaXBfcGh2 c19pbl9pbmRleF9vcGVyYW5kX211dGF0b3IKLSAqCSAgUmVjdXJzaXZlbHkgcmVtb3ZlIFBsYWNl SG9sZGVyVmFycyBpbiB0aGUgdHJlZSB0aGF0IG1hdGNoIHRoZSBjcml0ZXJpYS4KLSAqCi0gKiBX ZSBzdHJpcCBhIFBsYWNlSG9sZGVyVmFyIG9ubHkgaWYgaXRzIHBobnVsbGluZ3JlbHMgaXMgZW1w dHksIHJlcGxhY2luZyBpdAotICogd2l0aCBpdHMgY29udGFpbmVkIGV4cHJlc3Npb24uCi0gKi8K LXN0YXRpYyBOb2RlICoKLXN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZF9tdXRhdG9yKE5vZGUg Km5vZGUsIHZvaWQgKmNvbnRleHQpCi17Ci0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIE5V TEw7Ci0KLQlpZiAoSXNBKG5vZGUsIFBsYWNlSG9sZGVyVmFyKSkKLQl7Ci0JCVBsYWNlSG9sZGVy VmFyICpwaHYgPSAoUGxhY2VIb2xkZXJWYXIgKikgbm9kZTsKLQotCQkvKiBJZiBtYXRjaGVzIHRo ZSBjcml0ZXJpYSwgc3RyaXAgaXQgKi8KLQkJaWYgKGJtc19pc19lbXB0eShwaHYtPnBobnVsbGlu Z3JlbHMpKQotCQl7Ci0JCQkvKiBSZWN1cnNlIG9uIGl0cyBjb250YWluZWQgZXhwcmVzc2lvbiAq LwotCQkJcmV0dXJuIHN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZF9tdXRhdG9yKChOb2RlICop IHBodi0+cGhleHByLAotCQkJCQkJCQkJCQkJCSAgIGNvbnRleHQpOwotCQl9Ci0KLQkJLyogT3Ro ZXJ3aXNlLCBrZWVwIHRoaXMgUEhWIGJ1dCBjaGVjayBpdHMgY29udGFpbmVkIGV4cHJlc3Npb24g Ki8KLQl9Ci0KLQlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX211dGF0b3Iobm9kZSwgc3RyaXBfcGh2 c19pbl9pbmRleF9vcGVyYW5kX211dGF0b3IsCi0JCQkJCQkJCSAgIGNvbnRleHQpOwotfQotCiAv KgogICogaXNfcHNldWRvX2NvbnN0YW50X2Zvcl9pbmRleCgpCiAgKgkgIFRlc3Qgd2hldGhlciB0 aGUgZ2l2ZW4gZXhwcmVzc2lvbiBjYW4gYmUgdXNlZCBhcyBhbiBpbmRleHNjYW4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCBjN2JjNDFjMzBkNy4uZGU2YTE4M2Rh NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTUxMTcsNyAr NTExNyw3IEBAIGZpeF9pbmRleHF1YWxfb3BlcmFuZChOb2RlICpub2RlLCBJbmRleE9wdEluZm8g KmluZGV4LCBpbnQgaW5kZXhjb2wpCiAJLyoKIAkgKiBSZW1vdmUgYW55IFBsYWNlSG9sZGVyVmFy IHdyYXBwaW5nIG9mIHRoZSBpbmRleGtleQogCSAqLwotCW5vZGUgPSBzdHJpcF9waHZzX2luX2lu ZGV4X29wZXJhbmQobm9kZSk7CisJbm9kZSA9IHN0cmlwX25vb3BfcGh2cyhub2RlKTsKIAogCS8q CiAJICogUmVtb3ZlIGFueSBiaW5hcnktY29tcGF0aWJsZSByZWxhYmVsaW5nIG9mIHRoZSBpbmRl eGtleQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhY2Vob2xkZXIu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYWNlaG9sZGVyLmMKaW5kZXggZTE3MDYz NjNjODguLmRkOWIxMTg4NWFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wbGFjZWhvbGRlci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYWNlaG9s ZGVyLmMKQEAgLTM1LDYgKzM1LDggQEAgc3RhdGljIHZvaWQgZmluZF9wbGFjZWhvbGRlcnNfcmVj dXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlKTsKIHN0YXRpYyB2b2lkIGZpbmRf cGxhY2Vob2xkZXJzX2luX2V4cHIoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKmV4cHIpOwogc3Rh dGljIGJvb2wgY29udGFpbl9wbGFjZWhvbGRlcl9yZWZlcmVuY2VzX3dhbGtlcihOb2RlICpub2Rl LAogCQkJCQkJCQkJCQkJICBjb250YWluX3BsYWNlaG9sZGVyX3JlZmVyZW5jZXNfY29udGV4dCAq Y29udGV4dCk7CitzdGF0aWMgYm9vbCBjb250YWluX25vb3BfcGh2X3dhbGtlcihOb2RlICpub2Rl LCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBOb2RlICpzdHJpcF9ub29wX3BodnNfbXV0YXRvcihO b2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIAogCiAvKgpAQCAtNTg1LDMgKzU4Nyw5MiBAQCBn ZXRfcGxhY2Vob2xkZXJfbnVsbGluZ19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFBsYWNlSG9s ZGVySW5mbyAqcGhpbmZvKQogCXJlc3VsdCA9IGJtc19kZWxfbWVtYmVycyhyZXN1bHQsIHBoaW5m by0+cGhfZXZhbF9hdCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KKworLyoKKyAqIHN0cmlwX25vb3Bf cGh2cworICoJICBTdHJpcCBuby1vcCBQbGFjZUhvbGRlclZhciBub2RlcyBmcm9tIHRoZSBnaXZl biBleHByZXNzaW9uIHRyZWUuCisgKgorICogQSBQbGFjZUhvbGRlclZhciB0aGF0IGlzIG5vdCBt YXJrZWQgYXMgbnVsbGFibGUgKGkuZS4sIGl0cyBwaG51bGxpbmdyZWxzCisgKiBpcyBlbXB0eSkg aXMgZWZmZWN0aXZlbHkgYSBuby1vcCB3aGVuIGl0IGFwcGVhcnMgaW4gYSByZWxhdGlvbi1zY2Fu LWxldmVsCisgKiBleHByZXNzaW9uLiAgVGhpcyBmdW5jdGlvbiBzdHJpcHMgc3VjaCBQbGFjZUhv bGRlclZhcnMsIHdoaWNoIGlzIHVzZWZ1bAorICogZm9yIG1hdGNoaW5nIGV4cHJlc3Npb25zIHRv IGluZGV4IGtleXMgb3IgcGFydGl0aW9uIGtleXMgaW4gY2FzZXMgd2hlcmUKKyAqIHRoZSBleHBy ZXNzaW9uIGhhcyBiZWVuIHdyYXBwZWQgaW4gUGxhY2VIb2xkZXJWYXJzIGR1cmluZyBzdWJxdWVy eSBwdWxsdXAuCisgKgorICogSU1QT1JUQU5UOiB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQg dGhlIGV4cHJlc3Npb24gaXMgYSBzY2FuLWxldmVsCisgKiBleHByZXNzaW9uLCBzbyB0aGF0IG5v bi1udWxsYWJsZSBQbGFjZUhvbGRlclZhcnMgaW4gaXQgYXJlIGluZGVlZCBuby1vcHMuCisgKgor ICogVGhlIHJlbW92YWwgaXMgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5IGJlY2F1c2UgUGxhY2VIb2xk ZXJWYXJzIGNhbiBiZSBuZXN0ZWQKKyAqIG9yIGludGVybGVhdmVkIHdpdGggb3RoZXIgbm9kZSB0 eXBlcy4gIFdlIG11c3QgcGVlbCBiYWNrIGFsbCBsYXllcnMgdG8KKyAqIGV4cG9zZSB0aGUgYmFz ZSBleHByZXNzaW9uLgorICoKKyAqIEFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB3ZSBm aXJzdCB1c2UgYSBsaWdodHdlaWdodCB3YWxrZXIgdG8gY2hlY2sKKyAqIGZvciB0aGUgcHJlc2Vu Y2Ugb2Ygc3RyaXBwYWJsZSBQbGFjZUhvbGRlclZhcnMuICBUaGUgZXhwZW5zaXZlIG11dGF0b3Ig aXMKKyAqIGludm9rZWQgb25seSBpZiBhIGNhbmRpZGF0ZSBpcyBmb3VuZCwgYXZvaWRpbmcgdW5u ZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb24KKyAqIGFuZCB0cmVlIGNvcHlpbmcgaW4gdGhlIGNv bW1vbiBjYXNlIHdoZXJlIG5vIFBsYWNlSG9sZGVyVmFycyBhcmUgcHJlc2VudC4KKyAqLworTm9k ZSAqCitzdHJpcF9ub29wX3BodnMoTm9kZSAqbm9kZSkKK3sKKwkvKiBEb24ndCBtdXRhdGUvY29w eSBpZiBubyB0YXJnZXQgUEhWcyBleGlzdCAqLworCWlmICghY29udGFpbl9ub29wX3Bodl93YWxr ZXIobm9kZSwgTlVMTCkpCisJCXJldHVybiBub2RlOworCisJcmV0dXJuIHN0cmlwX25vb3BfcGh2 c19tdXRhdG9yKG5vZGUsIE5VTEwpOworfQorCisvKgorICogY29udGFpbl9ub29wX3Bodl93YWxr ZXIKKyAqCSAgRGV0ZWN0IGlmIHRoZXJlIGFyZSBhbnkgUGxhY2VIb2xkZXJWYXJzIGluIHRoZSB0 cmVlIHRoYXQgYXJlIGNhbmRpZGF0ZXMKKyAqCSAgZm9yIHN0cmlwcGluZy4KKyAqCisgKiBXZSBp ZGVudGlmeSBhIFBsYWNlSG9sZGVyVmFyIGFzIHN0cmlwcGFibGUgb25seSBpZiBpdHMgcGhudWxs aW5ncmVscyBpcworICogZW1wdHkuCisgKi8KK3N0YXRpYyBib29sCitjb250YWluX25vb3BfcGh2 X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgUGxhY2VIb2xkZXJWYXIpKQorCXsK KwkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZhciAqKSBub2RlOworCisJCWlm IChibXNfaXNfZW1wdHkocGh2LT5waG51bGxpbmdyZWxzKSkKKwkJCXJldHVybiB0cnVlOworCX0K KworCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNvbnRhaW5fbm9vcF9waHZf d2Fsa2VyLAorCQkJCQkJCQkgIGNvbnRleHQpOworfQorCisvKgorICogc3RyaXBfbm9vcF9waHZz X211dGF0b3IKKyAqCSAgUmVjdXJzaXZlbHkgcmVtb3ZlIFBsYWNlSG9sZGVyVmFycyB0aGF0IGFy ZSBub3QgbWFya2VkIG51bGxhYmxlLgorICoKKyAqIFdlIHN0cmlwIGEgUGxhY2VIb2xkZXJWYXIg b25seSBpZiBpdHMgcGhudWxsaW5ncmVscyBpcyBlbXB0eSwgcmVwbGFjaW5nIGl0CisgKiB3aXRo IGl0cyBjb250YWluZWQgZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIE5vZGUgKgorc3RyaXBfbm9v cF9waHZzX211dGF0b3IoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlpZiAobm9kZSA9 PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChJc0Eobm9kZSwgUGxhY2VIb2xkZXJWYXIp KQorCXsKKwkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZhciAqKSBub2RlOwor CisJCWlmIChibXNfaXNfZW1wdHkocGh2LT5waG51bGxpbmdyZWxzKSkKKwkJeworCQkJLyogUmVj dXJzZSBvbiBpdHMgY29udGFpbmVkIGV4cHJlc3Npb24gKi8KKwkJCXJldHVybiBzdHJpcF9ub29w X3BodnNfbXV0YXRvcigoTm9kZSAqKSBwaHYtPnBoZXhwciwKKwkJCQkJCQkJCQkgICBjb250ZXh0 KTsKKwkJfQorCisJCS8qIE90aGVyd2lzZSwga2VlcCB0aGlzIFBIViBidXQgY2hlY2sgaXRzIGNv bnRhaW5lZCBleHByZXNzaW9uICovCisJfQorCisJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV9tdXRh dG9yKG5vZGUsIHN0cmlwX25vb3BfcGh2c19tdXRhdG9yLAorCQkJCQkJCQkgICBjb250ZXh0KTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCAyOTAxY2QzNDhhOS4uZTdj MzE4YmJjYWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu YworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAgLTQ5LDYgKzQ5 LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvY29zdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9v cHRpbWl6ZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKKyNpbmNsdWRlICJv cHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAj aW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25p bmcvcGFydHBydW5lLmgiCkBAIC0xODEzLDYgKzE4MTQsMTUgQEAgZ2VuX3BydW5lX3N0ZXBzX2Zy b21fb3BleHBzKEdlbmVyYXRlUHJ1bmluZ1N0ZXBzQ29udGV4dCAqY29udGV4dCwKICAqICAgYW5k IGNvdWxkbid0IHBvc3NpYmx5IG1hdGNoIGFueSBvdGhlciBvbmUgZWl0aGVyLCBkdWUgdG8gaXRz IGZvcm0gb3IKICAqICAgcHJvcGVydGllcyAoc3VjaCBhcyBjb250YWluaW5nIGEgdm9sYXRpbGUg ZnVuY3Rpb24pLgogICogICBPdXRwdXQgYXJndW1lbnRzOiBub25lIHNldC4KKyAqCisgKiBOb3Rl IHRoYXQgd2hlbiBwdWxsaW5nIHVwIGEgc3VicXVlcnksIHRoZSBjbGF1c2Ugb3BlcmFuZHMgbWF5 IGdldCB3cmFwcGVkCisgKiBpbiBQbGFjZUhvbGRlclZhcnMgdG8gZW5mb3JjZSBzZXBhcmF0ZSBp ZGVudGl0eSBvciBhcyBhIHJlc3VsdCBvZiBvdXRlcgorICogam9pbnMuICBXZSBtdXN0IHN0cmlw IHN1Y2ggbm8tb3AgUGxhY2VIb2xkZXJWYXJzIGJlZm9yZSBjb21wYXJpbmcgb3BlcmFuZHMKKyAq IHRvIHRoZSBwYXJ0aXRpb24ga2V5LCBvdGhlcndpc2UgdGhlIGVxdWFsKCkgY2hlY2tzIHdpbGwg ZmFpbCB0byByZWNvZ25pemUKKyAqIHZhbGlkIG1hdGNoZXMuICBUaGlzIGlzIHNhZmUgYmVjYXVz ZSB0aGUgY2xhdXNlcyBoZXJlIGFyZSBhbHdheXMKKyAqIHJlbGF0aW9uLXNjYW4tbGV2ZWwgZXhw cmVzc2lvbnMsIHdoZXJlIGEgUGxhY2VIb2xkZXJWYXIgd2l0aCBlbXB0eQorICogcGhudWxsaW5n cmVscyBpcyBlZmZlY3RpdmVseSBhIG5vLW9wLiAgU3RyaXBwaW5nIG1heSBhbHNvIGJyaW5nIHNl cGFyYXRlCisgKiBSZWxhYmVsVHlwZSBub2RlcyBpbnRvIGFkamFjZW5jeSwgc28gd2UgbXVzdCBs b29wIHdoZW4gcGVlbGluZyB0aG9zZS4KICAqLwogc3RhdGljIFBhcnRDbGF1c2VNYXRjaFN0YXR1 cwogbWF0Y2hfY2xhdXNlX3RvX3BhcnRpdGlvbl9rZXkoR2VuZXJhdGVQcnVuaW5nU3RlcHNDb250 ZXh0ICpjb250ZXh0LApAQCAtMTkyOCwxMCArMTkzOCwxMiBAQCBtYXRjaF9jbGF1c2VfdG9fcGFy dGl0aW9uX2tleShHZW5lcmF0ZVBydW5pbmdTdGVwc0NvbnRleHQgKmNvbnRleHQsCiAJCVBhcnRD bGF1c2VJbmZvICpwYXJ0Y2xhdXNlOwogCiAJCWxlZnRvcCA9IChFeHByICopIGdldF9sZWZ0b3Ao Y2xhdXNlKTsKLQkJaWYgKElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkKKwkJbGVmdG9wID0gKEV4 cHIgKikgc3RyaXBfbm9vcF9waHZzKChOb2RlICopIGxlZnRvcCk7CisJCXdoaWxlIChJc0EobGVm dG9wLCBSZWxhYmVsVHlwZSkpCiAJCQlsZWZ0b3AgPSAoKFJlbGFiZWxUeXBlICopIGxlZnRvcCkt PmFyZzsKIAkJcmlnaHRvcCA9IChFeHByICopIGdldF9yaWdodG9wKGNsYXVzZSk7Ci0JCWlmIChJ c0EocmlnaHRvcCwgUmVsYWJlbFR5cGUpKQorCQlyaWdodG9wID0gKEV4cHIgKikgc3RyaXBfbm9v cF9waHZzKChOb2RlICopIHJpZ2h0b3ApOworCQl3aGlsZSAoSXNBKHJpZ2h0b3AsIFJlbGFiZWxU eXBlKSkKIAkJCXJpZ2h0b3AgPSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0b3ApLT5hcmc7CiAJCW9w bm8gPSBvcGNsYXVzZS0+b3BubzsKIApAQCAtMjE3OSw3ICsyMTkxLDggQEAgbWF0Y2hfY2xhdXNl X3RvX3BhcnRpdGlvbl9rZXkoR2VuZXJhdGVQcnVuaW5nU3RlcHNDb250ZXh0ICpjb250ZXh0LAog CQkJCSAgICplbGVtX2NsYXVzZXM7CiAJCUxpc3RDZWxsICAgKmxjMTsKIAotCQlpZiAoSXNBKGxl ZnRvcCwgUmVsYWJlbFR5cGUpKQorCQlsZWZ0b3AgPSAoRXhwciAqKSBzdHJpcF9ub29wX3BodnMo KE5vZGUgKikgbGVmdG9wKTsKKwkJd2hpbGUgKElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkKIAkJ CWxlZnRvcCA9ICgoUmVsYWJlbFR5cGUgKikgbGVmdG9wKS0+YXJnOwogCiAJCS8qIGNoZWNrIGlm IHRoZSBMSFMgbWF0Y2hlcyB0aGlzIHBhcnRpdGlvbiBrZXkgKi8KQEAgLTI0MDUsNyArMjQxOCw4 IEBAIG1hdGNoX2NsYXVzZV90b19wYXJ0aXRpb25fa2V5KEdlbmVyYXRlUHJ1bmluZ1N0ZXBzQ29u dGV4dCAqY29udGV4dCwKIAkJTnVsbFRlc3QgICAqbnVsbHRlc3QgPSAoTnVsbFRlc3QgKikgY2xh dXNlOwogCQlFeHByCSAgICphcmcgPSBudWxsdGVzdC0+YXJnOwogCi0JCWlmIChJc0EoYXJnLCBS ZWxhYmVsVHlwZSkpCisJCWFyZyA9IChFeHByICopIHN0cmlwX25vb3BfcGh2cygoTm9kZSAqKSBh cmcpOworCQl3aGlsZSAoSXNBKGFyZywgUmVsYWJlbFR5cGUpKQogCQkJYXJnID0gKChSZWxhYmVs VHlwZSAqKSBhcmcpLT5hcmc7CiAKIAkJLyogRG9lcyBhcmcgbWF0Y2ggd2l0aCB0aGlzIHBhcnRp dGlvbiBrZXkgY29sdW1uPyAqLwpAQCAtMzcxNyw3ICszNzMxLDggQEAgbWF0Y2hfYm9vbGVhbl9w YXJ0aXRpb25fY2xhdXNlKE9pZCBwYXJ0b3BmYW1pbHksIEV4cHIgKmNsYXVzZSwgY29uc3QgRXhw ciAqcGFydGsKIAkJQm9vbGVhblRlc3QgKmJ0ZXN0ID0gKEJvb2xlYW5UZXN0ICopIGNsYXVzZTsK IAogCQlsZWZ0b3AgPSBidGVzdC0+YXJnOwotCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUp KQorCQlsZWZ0b3AgPSAoRXhwciAqKSBzdHJpcF9ub29wX3BodnMoKE5vZGUgKikgbGVmdG9wKTsK KwkJd2hpbGUgKElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkKIAkJCWxlZnRvcCA9ICgoUmVsYWJl bFR5cGUgKikgbGVmdG9wKS0+YXJnOwogCiAJCWlmIChlcXVhbChsZWZ0b3AsIHBhcnRrZXkpKQpA QCAtMzc1NCw3ICszNzY5LDggQEAgbWF0Y2hfYm9vbGVhbl9wYXJ0aXRpb25fY2xhdXNlKE9pZCBw YXJ0b3BmYW1pbHksIEV4cHIgKmNsYXVzZSwgY29uc3QgRXhwciAqcGFydGsKIAogCQlsZWZ0b3Ag PSBpc19ub3RfY2xhdXNlID8gZ2V0X25vdGNsYXVzZWFyZyhjbGF1c2UpIDogY2xhdXNlOwogCi0J CWlmIChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCisJCWxlZnRvcCA9IChFeHByICopIHN0cmlw X25vb3BfcGh2cygoTm9kZSAqKSBsZWZ0b3ApOworCQl3aGlsZSAoSXNBKGxlZnRvcCwgUmVsYWJl bFR5cGUpKQogCQkJbGVmdG9wID0gKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CiAKIAkJ LyogQ29tcGFyZSB0byB0aGUgcGFydGl0aW9uIGtleSwgYW5kIG1ha2UgdXAgYSBjbGF1c2UgLi4u ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBiL3NyYy9pbmNs dWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDg3NTFhZDczODFjLi4xN2YyMDk5ZWMzYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKKysrIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhzLmgKQEAgLTg4LDcgKzg4LDYgQEAgZXh0ZXJuIGJvb2wgaW5kZXhjb2xf aXNfYm9vbF9jb25zdGFudF9mb3JfcXVlcnkoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJ CQlpbnQgaW5kZXhjb2wpOwogZXh0ZXJuIGJvb2wgbWF0Y2hfaW5kZXhfdG9fb3BlcmFuZChOb2Rl ICpvcGVyYW5kLCBpbnQgaW5kZXhjb2wsCiAJCQkJCQkJCSAgIEluZGV4T3B0SW5mbyAqaW5kZXgp OwotZXh0ZXJuIE5vZGUgKnN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZChOb2RlICpvcGVyYW5k KTsKIGV4dGVybiB2b2lkIGNoZWNrX2luZGV4X3ByZWRpY2F0ZXMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCk7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGxhY2Vob2xkZXIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFjZWhvbGRlci5oCmlu ZGV4IDI4ZTRkYTY0NWZiLi42MDc5ODI4MTA5MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BsYWNlaG9sZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYWNlaG9s ZGVyLmgKQEAgLTMyLDUgKzMyLDYgQEAgZXh0ZXJuIGJvb2wgY29udGFpbl9wbGFjZWhvbGRlcl9y ZWZlcmVuY2VzX3RvKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpjbGF1c2UsCiAJCQkJCQkJCQkJ CSAgaW50IHJlbGlkKTsKIGV4dGVybiBSZWxpZHMgZ2V0X3BsYWNlaG9sZGVyX251bGxpbmdfcmVs aWRzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkgUGxhY2VIb2xkZXJJbmZvICpwaGlu Zm8pOworZXh0ZXJuIE5vZGUgKnN0cmlwX25vb3BfcGh2cyhOb2RlICpub2RlKTsKIAogI2VuZGlm CQkJCQkJCS8qIFBMQUNFSE9MREVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGFydGl0aW9uX3BydW5lLm91dAppbmRleCBkZWFjZGQ3NTgwNy4uODQ5MDQ5ZjljNTEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTQ4MjQs MyArNDgyNCwxMzUgQEAgc2VsZWN0IG1pbihhKSBvdmVyIChwYXJ0aXRpb24gYnkgYSBvcmRlciBi eSBhKSBmcm9tIHBhcnRfYWJjIHdoZXJlIGEgPj0gc3RhYmxlX28KIAogZHJvcCB2aWV3IHBhcnRf YWJjX3ZpZXc7CiBkcm9wIHRhYmxlIHBhcnRfYWJjOworLS0KKy0tIENoZWNrIHRoYXQgb3BlcmFu ZHMgd3JhcHBlZCBpbiBQbGFjZUhvbGRlclZhcnMgYXJlIG1hdGNoZWQgdG8gcGFydGl0aW9uCist LSBrZXlzLCBhbGxvd2luZyBwYXJ0aXRpb24gcHJ1bmluZyB0byBvY2N1ci4gIFBsYWNlSG9sZGVy VmFycyBjYW4gYmUKKy0tIGludHJvZHVjZWQgd2hlbiBhIHN1YnF1ZXJ5J3Mgb3V0cHV0IGlzIHVz ZWQgd2l0aCBncm91cGluZyBzZXRzLgorLS0KK2NyZWF0ZSB0YWJsZSBwaHZfcGFydCAoYSBpbnQs IGIgdGV4dCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBodl9wYXJ0XzEg cGFydGl0aW9uIG9mIHBodl9wYXJ0IGZvciB2YWx1ZXMgaW4gKDEpOworY3JlYXRlIHRhYmxlIHBo dl9wYXJ0XzIgcGFydGl0aW9uIG9mIHBodl9wYXJ0IGZvciB2YWx1ZXMgaW4gKDIpOworY3JlYXRl IHRhYmxlIHBodl9wYXJ0X251bGwgcGFydGl0aW9uIG9mIHBodl9wYXJ0IGZvciB2YWx1ZXMgaW4g KG51bGwpOworaW5zZXJ0IGludG8gcGh2X3BhcnQgdmFsdWVzICgxLCAnb25lJyksICgyLCAndHdv JyksIChudWxsLCAnbnVsbCcpOworLS0gT3BFeHByOiBQSFYtd3JhcHBlZCBvcGVyYW5kIG1hdGNo ZWQgdmlhIGVxdWFsKCkKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNlbGVj dCBhLCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgYSA9IDEKKyAgZ3JvdXAgYnkgZ3JvdXBp bmcgc2V0cyAoYSwgYik7CisgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1peGVkQWdncmVnYXRl CisgICBIYXNoIEtleTogcGh2X3BhcnQuYgorICAgR3JvdXAgS2V5OiBwaHZfcGFydC5hCisgICAt PiAgU2VxIFNjYW4gb24gcGh2X3BhcnRfMSBwaHZfcGFydAorICAgICAgICAgRmlsdGVyOiAoYSA9 IDEpCisoNSByb3dzKQorCitzZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwgYiBmcm9tIHBodl9wYXJ0 KSB0CisgIHdoZXJlIGEgPSAxCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworIGEg fCAgYiAgCistLS0rLS0tLS0KKyAxIHwgCisgICB8IG9uZQorKDIgcm93cykKKworLS0gT3BFeHBy IHdpdGggUmVsYWJlbFR5cGU6IFBIViB3cmFwcGVkIGFyb3VuZCBhIGNhc3RlZCBjb2x1bW4KK2V4 cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhOjpvaWQgYXMgeCwgYiBm cm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIHg6OmludCA9IDEKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcg c2V0cyAoeCwgYik7CisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3Jl Z2F0ZQorICAgSGFzaCBLZXk6IChwaHZfcGFydC5hKTo6b2lkCisgICBIYXNoIEtleTogcGh2X3Bh cnQuYgorICAgLT4gIFNlcSBTY2FuIG9uIHBodl9wYXJ0XzEgcGh2X3BhcnQKKyAgICAgICAgIEZp bHRlcjogKCgoYSk6Om9pZCk6OmludGVnZXIgPSAxKQorKDUgcm93cykKKworc2VsZWN0ICogZnJv bSAoc2VsZWN0IGE6Om9pZCBhcyB4LCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgeDo6aW50 ID0gMQorICBncm91cCBieSBncm91cGluZyBzZXRzICh4LCBiKTsKKyB4IHwgIGIgIAorLS0tKy0t LS0tCisgMSB8IAorICAgfCBvbmUKKygyIHJvd3MpCisKKy0tIFNjYWxhckFycmF5T3BFeHByOiBJ TiBjbGF1c2Ugd2l0aCBQSFYtd3JhcHBlZCBvcGVyYW5kCitleHBsYWluIChjb3N0cyBvZmYpCitz ZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwgYiBmcm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIGEgaW4g KDEsIG51bGwpCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBI YXNoIEtleTogcGh2X3BhcnQuYQorICAgSGFzaCBLZXk6IHBodl9wYXJ0LmIKKyAgIC0+ICBTZXEg U2NhbiBvbiBwaHZfcGFydF8xIHBodl9wYXJ0CisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgn ezEsTlVMTH0nOjppbnRlZ2VyW10pKQorKDUgcm93cykKKworc2VsZWN0ICogZnJvbSAoc2VsZWN0 IGEsIGIgZnJvbSBwaHZfcGFydCkgdAorICB3aGVyZSBhIGluICgxLCBudWxsKQorICBncm91cCBi eSBncm91cGluZyBzZXRzIChhLCBiKTsKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IAorICAg fCBvbmUKKygyIHJvd3MpCisKKy0tIE51bGxUZXN0OiBJUyBOVUxMIHdpdGggUEhWLXdyYXBwZWQg b3BlcmFuZAorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSAoc2VsZWN0IGEsIGIg ZnJvbSBwaHZfcGFydCkgdAorICB3aGVyZSBhIGlzIG51bGwKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcg c2V0cyAoYSwgYik7CisgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdh dGUKKyAgIEhhc2ggS2V5OiBwaHZfcGFydC5hCisgICBIYXNoIEtleTogcGh2X3BhcnQuYgorICAg LT4gIFNlcSBTY2FuIG9uIHBodl9wYXJ0X251bGwgcGh2X3BhcnQKKyAgICAgICAgIEZpbHRlcjog KGEgSVMgTlVMTCkKKyg1IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZyb20g cGh2X3BhcnQpIHQKKyAgd2hlcmUgYSBpcyBudWxsCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMg KGEsIGIpOworIGEgfCAgYiAgIAorLS0tKy0tLS0tLQorICAgfCAKKyAgIHwgbnVsbAorKDIgcm93 cykKKworZHJvcCB0YWJsZSBwaHZfcGFydDsKKy0tIEJvb2xlYW5UZXN0OiBJUyBUUlVFIHdpdGgg UEhWLXdyYXBwZWQgYm9vbGVhbiBwYXJ0aXRpb24ga2V5CitjcmVhdGUgdGFibGUgcGh2X2Jvb2xw YXJ0IChhIGJvb2wsIGIgdGV4dCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxl IHBodl9ib29scGFydF90IHBhcnRpdGlvbiBvZiBwaHZfYm9vbHBhcnQgZm9yIHZhbHVlcyBpbiAo dHJ1ZSk7CitjcmVhdGUgdGFibGUgcGh2X2Jvb2xwYXJ0X2YgcGFydGl0aW9uIG9mIHBodl9ib29s cGFydCBmb3IgdmFsdWVzIGluIChmYWxzZSk7CitjcmVhdGUgdGFibGUgcGh2X2Jvb2xwYXJ0X251 bGwgcGFydGl0aW9uIG9mIHBodl9ib29scGFydCBkZWZhdWx0OworaW5zZXJ0IGludG8gcGh2X2Jv b2xwYXJ0IHZhbHVlcyAodHJ1ZSwgJ3llcycpLCAoZmFsc2UsICdubycpLCAobnVsbCwgJ3Vua25v d24nKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZy b20gcGh2X2Jvb2xwYXJ0KSB0CisgIHdoZXJlIGEgaXMgdHJ1ZQorICBncm91cCBieSBncm91cGlu ZyBzZXRzIChhLCBiKTsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IEhhc2hBZ2dyZWdhdGUKKyAgIEhhc2ggS2V5OiBwaHZfYm9vbHBhcnQuYQorICAgSGFzaCBLZXk6 IHBodl9ib29scGFydC5iCisgICAtPiAgU2VxIFNjYW4gb24gcGh2X2Jvb2xwYXJ0X3QgcGh2X2Jv b2xwYXJ0CisgICAgICAgICBGaWx0ZXI6IChhIElTIFRSVUUpCisoNSByb3dzKQorCitzZWxlY3Qg KiBmcm9tIChzZWxlY3QgYSwgYiBmcm9tIHBodl9ib29scGFydCkgdAorICB3aGVyZSBhIGlzIHRy dWUKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7CisgYSB8ICBiICAKKy0tLSstLS0t LQorIHQgfCAKKyAgIHwgeWVzCisoMiByb3dzKQorCitkcm9wIHRhYmxlIHBodl9ib29scGFydDsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCmluZGV4IGQ5M2MwYzAzYmFi Li4zNTlhOTIwODA1NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X3BydW5lLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3Fs CkBAIC0xNDQ3LDMgKzE0NDcsNzQgQEAgc2VsZWN0IG1pbihhKSBvdmVyIChwYXJ0aXRpb24gYnkg YSBvcmRlciBieSBhKSBmcm9tIHBhcnRfYWJjIHdoZXJlIGEgPj0gc3RhYmxlX28KIAogZHJvcCB2 aWV3IHBhcnRfYWJjX3ZpZXc7CiBkcm9wIHRhYmxlIHBhcnRfYWJjOworCistLQorLS0gQ2hlY2sg dGhhdCBvcGVyYW5kcyB3cmFwcGVkIGluIFBsYWNlSG9sZGVyVmFycyBhcmUgbWF0Y2hlZCB0byBw YXJ0aXRpb24KKy0tIGtleXMsIGFsbG93aW5nIHBhcnRpdGlvbiBwcnVuaW5nIHRvIG9jY3VyLiAg UGxhY2VIb2xkZXJWYXJzIGNhbiBiZQorLS0gaW50cm9kdWNlZCB3aGVuIGEgc3VicXVlcnkncyBv dXRwdXQgaXMgdXNlZCB3aXRoIGdyb3VwaW5nIHNldHMuCistLQorY3JlYXRlIHRhYmxlIHBodl9w YXJ0IChhIGludCwgYiB0ZXh0KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUg cGh2X3BhcnRfMSBwYXJ0aXRpb24gb2YgcGh2X3BhcnQgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVh dGUgdGFibGUgcGh2X3BhcnRfMiBwYXJ0aXRpb24gb2YgcGh2X3BhcnQgZm9yIHZhbHVlcyBpbiAo Mik7CitjcmVhdGUgdGFibGUgcGh2X3BhcnRfbnVsbCBwYXJ0aXRpb24gb2YgcGh2X3BhcnQgZm9y IHZhbHVlcyBpbiAobnVsbCk7CitpbnNlcnQgaW50byBwaHZfcGFydCB2YWx1ZXMgKDEsICdvbmUn KSwgKDIsICd0d28nKSwgKG51bGwsICdudWxsJyk7CisKKy0tIE9wRXhwcjogUEhWLXdyYXBwZWQg b3BlcmFuZCBtYXRjaGVkIHZpYSBlcXVhbCgpCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3Qg KiBmcm9tIChzZWxlY3QgYSwgYiBmcm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIGEgPSAxCisgIGdy b3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworCitzZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwg YiBmcm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIGEgPSAxCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNl dHMgKGEsIGIpOworCistLSBPcEV4cHIgd2l0aCBSZWxhYmVsVHlwZTogUEhWIHdyYXBwZWQgYXJv dW5kIGEgY2FzdGVkIGNvbHVtbgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSAo c2VsZWN0IGE6Om9pZCBhcyB4LCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgeDo6aW50ID0g MQorICBncm91cCBieSBncm91cGluZyBzZXRzICh4LCBiKTsKKworc2VsZWN0ICogZnJvbSAoc2Vs ZWN0IGE6Om9pZCBhcyB4LCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgeDo6aW50ID0gMQor ICBncm91cCBieSBncm91cGluZyBzZXRzICh4LCBiKTsKKworLS0gU2NhbGFyQXJyYXlPcEV4cHI6 IElOIGNsYXVzZSB3aXRoIFBIVi13cmFwcGVkIG9wZXJhbmQKK2V4cGxhaW4gKGNvc3RzIG9mZikK K3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgYSBp biAoMSwgbnVsbCkKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7CisKK3NlbGVjdCAq IGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgYSBpbiAoMSwgbnVs bCkKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7CisKKy0tIE51bGxUZXN0OiBJUyBO VUxMIHdpdGggUEhWLXdyYXBwZWQgb3BlcmFuZAorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0 ICogZnJvbSAoc2VsZWN0IGEsIGIgZnJvbSBwaHZfcGFydCkgdAorICB3aGVyZSBhIGlzIG51bGwK KyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7CisKK3NlbGVjdCAqIGZyb20gKHNlbGVj dCBhLCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgYSBpcyBudWxsCisgIGdyb3VwIGJ5IGdy b3VwaW5nIHNldHMgKGEsIGIpOworCitkcm9wIHRhYmxlIHBodl9wYXJ0OworCistLSBCb29sZWFu VGVzdDogSVMgVFJVRSB3aXRoIFBIVi13cmFwcGVkIGJvb2xlYW4gcGFydGl0aW9uIGtleQorY3Jl YXRlIHRhYmxlIHBodl9ib29scGFydCAoYSBib29sLCBiIHRleHQpIHBhcnRpdGlvbiBieSBsaXN0 IChhKTsKK2NyZWF0ZSB0YWJsZSBwaHZfYm9vbHBhcnRfdCBwYXJ0aXRpb24gb2YgcGh2X2Jvb2xw YXJ0IGZvciB2YWx1ZXMgaW4gKHRydWUpOworY3JlYXRlIHRhYmxlIHBodl9ib29scGFydF9mIHBh cnRpdGlvbiBvZiBwaHZfYm9vbHBhcnQgZm9yIHZhbHVlcyBpbiAoZmFsc2UpOworY3JlYXRlIHRh YmxlIHBodl9ib29scGFydF9udWxsIHBhcnRpdGlvbiBvZiBwaHZfYm9vbHBhcnQgZGVmYXVsdDsK K2luc2VydCBpbnRvIHBodl9ib29scGFydCB2YWx1ZXMgKHRydWUsICd5ZXMnKSwgKGZhbHNlLCAn bm8nKSwgKG51bGwsICd1bmtub3duJyk7CisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAq IGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X2Jvb2xwYXJ0KSB0CisgIHdoZXJlIGEgaXMgdHJ1 ZQorICBncm91cCBieSBncm91cGluZyBzZXRzIChhLCBiKTsKKworc2VsZWN0ICogZnJvbSAoc2Vs ZWN0IGEsIGIgZnJvbSBwaHZfYm9vbHBhcnQpIHQKKyAgd2hlcmUgYSBpcyB0cnVlCisgIGdyb3Vw IGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworCitkcm9wIHRhYmxlIHBodl9ib29scGFydDsKLS0g CjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --000000000000590fd2064eda2dc0 Content-Type: application/octet-stream; name="v2-V18-0001-Strip-PlaceHolderVars-from-partition-pruning-oper.patch" Content-Disposition: attachment; filename="v2-V18-0001-Strip-PlaceHolderVars-from-partition-pruning-oper.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnobx11o1 RnJvbSAxMTVhOTg4MzJkZGNiNzFiNmI4ZTdkMDJlNTY5YjNhYmEzYWZjYjlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVGh1LCAyIEFwciAyMDI2IDE0OjU0OjQ0ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2Ml0g U3RyaXAgUGxhY2VIb2xkZXJWYXJzIGZyb20gcGFydGl0aW9uIHBydW5pbmcgb3BlcmFuZHMKTUlN RS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNv bnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCldoZW4gcHVsbGluZyB1cCBhIHN1YnF1ZXJ5 LCBpdHMgdGFyZ2V0bGlzdCBpdGVtcyBtYXkgYmUgd3JhcHBlZCBpbgpQbGFjZUhvbGRlclZhcnMg dG8gZW5mb3JjZSBzZXBhcmF0ZSBpZGVudGl0eSBvciBhcyBhIHJlc3VsdCBvZiBvdXRlcgpqb2lu cy4gIFRoaXMgY2F1c2VzIGFueSB1cHBlci1sZXZlbCBXSEVSRSBjbGF1c2VzIHJlZmVyZW5jaW5n IHRoZXNlCm91dHB1dHMgdG8gY29udGFpbiBQbGFjZUhvbGRlclZhcnMsIHdoaWNoIHByZXZlbnRz IHBhcnRwcnVuZS5jIGZyb20KcmVjb2duaXppbmcgdGhhdCB0aGV5IG1hdGNoIHBhcnRpdGlvbiBr ZXkgY29sdW1ucywgZGVmZWF0aW5nIHBhcnRpdGlvbgpwcnVuaW5nLgoKVG8gZml4LCBzdHJpcCBQ bGFjZUhvbGRlclZhcnMgZnJvbSBvcGVyYW5kcyBiZWZvcmUgY29tcGFyaW5nIHRoZW0gdG8KcGFy dGl0aW9uIGtleXMuICBBIFBsYWNlSG9sZGVyVmFyIHdpdGggZW1wdHkgcGhudWxsaW5ncmVscyBh cHBlYXJpbmcKaW4gYSByZWxhdGlvbi1zY2FuLWxldmVsIGV4cHJlc3Npb24gaXMgZWZmZWN0aXZl bHkgYSBuby1vcCwgc28Kc3RyaXBwaW5nIGl0IGlzIHNhZmUuICBUaGlzIHBhcmFsbGVscyB0aGUg ZXhpc3RpbmcgdHJlYXRtZW50IGluCmluZHhwYXRoLmMgZm9yIGluZGV4IG1hdGNoaW5nLgoKSW4g cGFzc2luZywgcmVuYW1lIHN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZCgpIHRvIHN0cmlwX25v b3BfcGh2cygpCmFuZCBtb3ZlIGl0IGZyb20gaW5keHBhdGguYyB0byBwbGFjZWhvbGRlci5jLCBz aW5jZSBpdCBpcyBub3cgYQpnZW5lcmFsLXB1cnBvc2UgdXRpbGl0eSB1c2VkIGJ5IGJvdGggaW5k ZXggbWF0Y2hpbmcgYW5kIHBhcnRpdGlvbgpwcnVuaW5nIGNvZGUuCgpCYWNrLXBhdGNoIHRvIHYx OC4gIEFsdGhvdWdoIHRoaXMgaXNzdWUgZXhpc3RzIGJlZm9yZSB0aGF0LCBjaGFuZ2VzIGluCnRo YXQgdmVyc2lvbiBtYWRlIGl0IGNvbW1vbiBlbm91Z2ggdG8gbm90aWNlLiAgR2l2ZW4gdGhlIGxh Y2sgb2YgZmllbGQKcmVwb3J0cyBmb3Igb2xkZXIgdmVyc2lvbnMsIEkgYW0gbm90IGJhY2stcGF0 Y2hpbmcgZnVydGhlci4gIEluIHRoZQp2MTggYmFjay1wYXRjaCwgc3RyaXBfcGh2c19pbl9pbmRl eF9vcGVyYW5kKCkgaXMgcmV0YWluZWQgYXMgYSB0aGluCndyYXBwZXIgYXJvdW5kIHRoZSBuZXcg c3RyaXBfbm9vcF9waHZzKCkgdG8gYXZvaWQgYnJlYWtpbmcgdGhpcmQtcGFydHkKZXh0ZW5zaW9u cyB0aGF0IG1heSByZWZlcmVuY2UgaXQuCgpSZXBvcnRlZC1ieTogQ8OhbmRpZG8gQW50b25pbyBN YXJ0w61uZXogRGVzY2Fsem8gPGNhbmRpZG9AbmluZWhxLmNvbT4KRGlhZ25vc2VkLWJ5OiBEYXZp ZCBSb3dsZXkgPGRncm93bGV5bWxAZ21haWwuY29tPgpBdXRob3I6IFJpY2hhcmQgR3VvIDxndW9m ZW5nbGludXhAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSDVZ YVV3VlVXRVRUeVZFQ1RuaHM3Qz1DVndpK3VNU1FIPWNPa3dBVXFNZHZYZHdXQUBtYWlsLmdtYWls LmNvbQpCYWNrcGF0Y2gtdGhyb3VnaDogMTgKLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9pbmR4cGF0aC5jICAgICAgICAgfCAgODYgKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL29wdGlt aXplci91dGlsL3BsYWNlaG9sZGVyLmMgICAgICB8ICA5MSArKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICAgICAgICB8ICAyOCArKystCiBzcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IHwgMTMyICsrKysrKysrKysrKysr KysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwgIDcx ICsrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyksIDg3IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRo LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDRmZThlNTE2 NGM3Li45OWNhYWRiNzJiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv aW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBA IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9wYXRobm9kZS5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgor I2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9w cmVwLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgpAQCAtMTk2LDggKzE5Nyw2IEBAIHN0YXRpYyBFeHByICptYXRjaF9j bGF1c2VfdG9fb3JkZXJpbmdfb3AoSW5kZXhPcHRJbmZvICppbmRleCwKIHN0YXRpYyBib29sIGVj X21lbWJlcl9tYXRjaGVzX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwsCiAJCQkJCQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYywgRXF1aXZhbGVuY2VNZW1iZXIg KmVtLAogCQkJCQkJCQkJICAgdm9pZCAqYXJnKTsKLXN0YXRpYyBib29sIGNvbnRhaW5fc3RyaXBw YWJsZV9waHZfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwotc3RhdGljIE5vZGUg KnN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZF9tdXRhdG9yKE5vZGUgKm5vZGUsIHZvaWQgKmNv bnRleHQpOwogCiAKIC8qCkBAIC00NDIyLDcgKzQ0MjEsNyBAQCBtYXRjaF9pbmRleF90b19vcGVy YW5kKE5vZGUgKm9wZXJhbmQsCiAJICogYSBzdWJ0cmVlKSBoYXMgYmVlbiB3cmFwcGVkIGluIFBs YWNlSG9sZGVyVmFycyB0byBlbmZvcmNlIHNlcGFyYXRlCiAJICogaWRlbnRpdHkgb3IgYXMgYSBy ZXN1bHQgb2Ygb3V0ZXIgam9pbnMuCiAJICovCi0Jb3BlcmFuZCA9IHN0cmlwX3BodnNfaW5faW5k ZXhfb3BlcmFuZChvcGVyYW5kKTsKKwlvcGVyYW5kID0gc3RyaXBfbm9vcF9waHZzKG9wZXJhbmQp OwogCiAJLyoKIAkgKiBJZ25vcmUgYW55IFJlbGFiZWxUeXBlIG5vZGUgYWJvdmUgdGhlIG9wZXJh bmQuICBUaGlzIGlzIG5lZWRlZCB0byBiZQpAQCAtNDQ4OCw4OCArNDQ4NywxNSBAQCBtYXRjaF9p bmRleF90b19vcGVyYW5kKE5vZGUgKm9wZXJhbmQsCiAKIC8qCiAgKiBzdHJpcF9waHZzX2luX2lu ZGV4X29wZXJhbmQKLSAqCSAgU3RyaXAgUGxhY2VIb2xkZXJWYXIgbm9kZXMgZnJvbSB0aGUgZ2l2 ZW4gb3BlcmFuZCBleHByZXNzaW9uIHRvCi0gKgkgIGZhY2lsaXRhdGUgbWF0Y2hpbmcgYWdhaW5z dCBhbiBpbmRleCdzIGtleS4KICAqCi0gKiBBIFBsYWNlSG9sZGVyVmFyIGFwcGVhcmluZyBpbiBh IHJlbGF0aW9uLXNjYW4tbGV2ZWwgZXhwcmVzc2lvbiBpcwotICogZWZmZWN0aXZlbHkgYSBuby1v cC4gIE5ldmVydGhlbGVzcywgdG8gcGxheSBpdCBzYWZlLCB3ZSBzdHJpcCBvbmx5Ci0gKiBQbGFj ZUhvbGRlclZhcnMgdGhhdCBhcmUgbm90IG1hcmtlZCBudWxsYWJsZS4KLSAqCi0gKiBUaGUgcmVt b3ZhbCBpcyBwZXJmb3JtZWQgcmVjdXJzaXZlbHkgYmVjYXVzZSBQbGFjZUhvbGRlclZhcnMgY2Fu IGJlIG5lc3RlZAotICogb3IgaW50ZXJsZWF2ZWQgd2l0aCBvdGhlciBub2RlIHR5cGVzLiAgV2Ug bXVzdCBwZWVsIGJhY2sgYWxsIGxheWVycyB0bwotICogZXhwb3NlIHRoZSBiYXNlIG9wZXJhbmQu Ci0gKgotICogQXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHdlIGZpcnN0IHVzZSBhIGxp Z2h0d2VpZ2h0IHdhbGtlciB0byBjaGVjawotICogZm9yIHRoZSBwcmVzZW5jZSBvZiBzdHJpcHBh YmxlIFBsYWNlSG9sZGVyVmFycy4gIFRoZSBleHBlbnNpdmUgbXV0YXRvciBpcwotICogaW52b2tl ZCBvbmx5IGlmIGEgY2FuZGlkYXRlIGlzIGZvdW5kLCBhdm9pZGluZyB1bm5lY2Vzc2FyeSBtZW1v cnkgYWxsb2NhdGlvbgotICogYW5kIHRyZWUgY29weWluZyBpbiB0aGUgY29tbW9uIGNhc2Ugd2hl cmUgbm8gUGxhY2VIb2xkZXJWYXJzIGFyZSBwcmVzZW50LgorICogUmV0YWluZWQgYXMgYSBiYWNr d2FyZC1jb21wYXRpYmlsaXR5IHdyYXBwZXIgYXJvdW5kIHN0cmlwX25vb3BfcGh2cygpIHRvCisg KiBhdm9pZCBicmVha2luZyB0aGlyZC1wYXJ0eSBleHRlbnNpb25zIHRoYXQgbWF5IHJlZmVyZW5j ZSB0aGlzIGZ1bmN0aW9uLiAgTmV3CisgKiBjb2RlIHNob3VsZCBjYWxsIHN0cmlwX25vb3BfcGh2 cygpIGRpcmVjdGx5LgogICovCiBOb2RlICoKIHN0cmlwX3BodnNfaW5faW5kZXhfb3BlcmFuZChO b2RlICpvcGVyYW5kKQogewotCS8qIERvbid0IG11dGF0ZS9jb3B5IGlmIG5vIHRhcmdldCBQSFZz IGV4aXN0ICovCi0JaWYgKCFjb250YWluX3N0cmlwcGFibGVfcGh2X3dhbGtlcihvcGVyYW5kLCBO VUxMKSkKLQkJcmV0dXJuIG9wZXJhbmQ7Ci0KLQlyZXR1cm4gc3RyaXBfcGh2c19pbl9pbmRleF9v cGVyYW5kX211dGF0b3Iob3BlcmFuZCwgTlVMTCk7Ci19Ci0KLS8qCi0gKiBjb250YWluX3N0cmlw cGFibGVfcGh2X3dhbGtlcgotICoJICBEZXRlY3QgaWYgdGhlcmUgYXJlIGFueSBQbGFjZUhvbGRl clZhcnMgaW4gdGhlIHRyZWUgdGhhdCBhcmUgY2FuZGlkYXRlcwotICoJICBmb3Igc3RyaXBwaW5n LgotICoKLSAqIFdlIGlkZW50aWZ5IGEgUGxhY2VIb2xkZXJWYXIgYXMgc3RyaXBwYWJsZSBvbmx5 IGlmIGl0cyBwaG51bGxpbmdyZWxzIGlzCi0gKiBlbXB0eS4KLSAqLwotc3RhdGljIGJvb2wKLWNv bnRhaW5fc3RyaXBwYWJsZV9waHZfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCi17 Ci0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKElzQShub2RlLCBQ bGFjZUhvbGRlclZhcikpCi0JewotCQlQbGFjZUhvbGRlclZhciAqcGh2ID0gKFBsYWNlSG9sZGVy VmFyICopIG5vZGU7Ci0KLQkJaWYgKGJtc19pc19lbXB0eShwaHYtPnBobnVsbGluZ3JlbHMpKQot CQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9k ZSwgY29udGFpbl9zdHJpcHBhYmxlX3Bodl93YWxrZXIsCi0JCQkJCQkJCSAgY29udGV4dCk7Ci19 Ci0KLS8qCi0gKiBzdHJpcF9waHZzX2luX2luZGV4X29wZXJhbmRfbXV0YXRvcgotICoJICBSZWN1 cnNpdmVseSByZW1vdmUgUGxhY2VIb2xkZXJWYXJzIGluIHRoZSB0cmVlIHRoYXQgbWF0Y2ggdGhl IGNyaXRlcmlhLgotICoKLSAqIFdlIHN0cmlwIGEgUGxhY2VIb2xkZXJWYXIgb25seSBpZiBpdHMg cGhudWxsaW5ncmVscyBpcyBlbXB0eSwgcmVwbGFjaW5nIGl0Ci0gKiB3aXRoIGl0cyBjb250YWlu ZWQgZXhwcmVzc2lvbi4KLSAqLwotc3RhdGljIE5vZGUgKgotc3RyaXBfcGh2c19pbl9pbmRleF9v cGVyYW5kX211dGF0b3IoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKLXsKLQlpZiAobm9kZSA9 PSBOVUxMKQotCQlyZXR1cm4gTlVMTDsKLQotCWlmIChJc0Eobm9kZSwgUGxhY2VIb2xkZXJWYXIp KQotCXsKLQkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZhciAqKSBub2RlOwot Ci0JCS8qIElmIG1hdGNoZXMgdGhlIGNyaXRlcmlhLCBzdHJpcCBpdCAqLwotCQlpZiAoYm1zX2lz X2VtcHR5KHBodi0+cGhudWxsaW5ncmVscykpCi0JCXsKLQkJCS8qIFJlY3Vyc2Ugb24gaXRzIGNv bnRhaW5lZCBleHByZXNzaW9uICovCi0JCQlyZXR1cm4gc3RyaXBfcGh2c19pbl9pbmRleF9vcGVy YW5kX211dGF0b3IoKE5vZGUgKikgcGh2LT5waGV4cHIsCi0JCQkJCQkJCQkJCQkJICAgY29udGV4 dCk7Ci0JCX0KLQotCQkvKiBPdGhlcndpc2UsIGtlZXAgdGhpcyBQSFYgYnV0IGNoZWNrIGl0cyBj b250YWluZWQgZXhwcmVzc2lvbiAqLwotCX0KLQotCXJldHVybiBleHByZXNzaW9uX3RyZWVfbXV0 YXRvcihub2RlLCBzdHJpcF9waHZzX2luX2luZGV4X29wZXJhbmRfbXV0YXRvciwKLQkJCQkJCQkJ ICAgY29udGV4dCk7CisJcmV0dXJuIHN0cmlwX25vb3BfcGh2cyhvcGVyYW5kKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwppbmRleCAwNjEyOGE5ZjI0My4u MTBiNzM1OGMyOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0 ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAg LTUyNzEsNyArNTI3MSw3IEBAIGZpeF9pbmRleHF1YWxfb3BlcmFuZChOb2RlICpub2RlLCBJbmRl eE9wdEluZm8gKmluZGV4LCBpbnQgaW5kZXhjb2wpCiAJLyoKIAkgKiBSZW1vdmUgYW55IFBsYWNl SG9sZGVyVmFyIHdyYXBwaW5nIG9mIHRoZSBpbmRleGtleQogCSAqLwotCW5vZGUgPSBzdHJpcF9w aHZzX2luX2luZGV4X29wZXJhbmQobm9kZSk7CisJbm9kZSA9IHN0cmlwX25vb3BfcGh2cyhub2Rl KTsKIAogCS8qCiAJICogUmVtb3ZlIGFueSBiaW5hcnktY29tcGF0aWJsZSByZWxhYmVsaW5nIG9m IHRoZSBpbmRleGtleQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxh Y2Vob2xkZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYWNlaG9sZGVyLmMKaW5k ZXggZTFjZDAwYTcyZmIuLjg2ZTNjMWU3NTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9wbGFjZWhvbGRlci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3BsYWNlaG9sZGVyLmMKQEAgLTM1LDYgKzM1LDggQEAgc3RhdGljIHZvaWQgZmluZF9wbGFjZWhv bGRlcnNfcmVjdXJzZShQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRub2RlKTsKIHN0YXRpYyB2 b2lkIGZpbmRfcGxhY2Vob2xkZXJzX2luX2V4cHIoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKmV4 cHIpOwogc3RhdGljIGJvb2wgY29udGFpbl9wbGFjZWhvbGRlcl9yZWZlcmVuY2VzX3dhbGtlcihO b2RlICpub2RlLAogCQkJCQkJCQkJCQkJICBjb250YWluX3BsYWNlaG9sZGVyX3JlZmVyZW5jZXNf Y29udGV4dCAqY29udGV4dCk7CitzdGF0aWMgYm9vbCBjb250YWluX25vb3BfcGh2X3dhbGtlcihO b2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBOb2RlICpzdHJpcF9ub29wX3BodnNf bXV0YXRvcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIAogCiAvKgpAQCAtNTg1LDMgKzU4 Nyw5MiBAQCBnZXRfcGxhY2Vob2xkZXJfbnVsbGluZ19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3Qs IFBsYWNlSG9sZGVySW5mbyAqcGhpbmZvKQogCXJlc3VsdCA9IGJtc19kZWxfbWVtYmVycyhyZXN1 bHQsIHBoaW5mby0+cGhfZXZhbF9hdCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KKworLyoKKyAqIHN0 cmlwX25vb3BfcGh2cworICoJICBTdHJpcCBuby1vcCBQbGFjZUhvbGRlclZhciBub2RlcyBmcm9t IHRoZSBnaXZlbiBleHByZXNzaW9uIHRyZWUuCisgKgorICogQSBQbGFjZUhvbGRlclZhciB0aGF0 IGlzIG5vdCBtYXJrZWQgYXMgbnVsbGFibGUgKGkuZS4sIGl0cyBwaG51bGxpbmdyZWxzCisgKiBp cyBlbXB0eSkgaXMgZWZmZWN0aXZlbHkgYSBuby1vcCB3aGVuIGl0IGFwcGVhcnMgaW4gYSByZWxh dGlvbi1zY2FuLWxldmVsCisgKiBleHByZXNzaW9uLiAgVGhpcyBmdW5jdGlvbiBzdHJpcHMgc3Vj aCBQbGFjZUhvbGRlclZhcnMsIHdoaWNoIGlzIHVzZWZ1bAorICogZm9yIG1hdGNoaW5nIGV4cHJl c3Npb25zIHRvIGluZGV4IGtleXMgb3IgcGFydGl0aW9uIGtleXMgaW4gY2FzZXMgd2hlcmUKKyAq IHRoZSBleHByZXNzaW9uIGhhcyBiZWVuIHdyYXBwZWQgaW4gUGxhY2VIb2xkZXJWYXJzIGR1cmlu ZyBzdWJxdWVyeSBwdWxsdXAuCisgKgorICogSU1QT1JUQU5UOiB0aGUgY2FsbGVyIG11c3QgZW5z dXJlIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgYSBzY2FuLWxldmVsCisgKiBleHByZXNzaW9uLCBz byB0aGF0IG5vbi1udWxsYWJsZSBQbGFjZUhvbGRlclZhcnMgaW4gaXQgYXJlIGluZGVlZCBuby1v cHMuCisgKgorICogVGhlIHJlbW92YWwgaXMgcGVyZm9ybWVkIHJlY3Vyc2l2ZWx5IGJlY2F1c2Ug UGxhY2VIb2xkZXJWYXJzIGNhbiBiZSBuZXN0ZWQKKyAqIG9yIGludGVybGVhdmVkIHdpdGggb3Ro ZXIgbm9kZSB0eXBlcy4gIFdlIG11c3QgcGVlbCBiYWNrIGFsbCBsYXllcnMgdG8KKyAqIGV4cG9z ZSB0aGUgYmFzZSBleHByZXNzaW9uLgorICoKKyAqIEFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0 aW9uLCB3ZSBmaXJzdCB1c2UgYSBsaWdodHdlaWdodCB3YWxrZXIgdG8gY2hlY2sKKyAqIGZvciB0 aGUgcHJlc2VuY2Ugb2Ygc3RyaXBwYWJsZSBQbGFjZUhvbGRlclZhcnMuICBUaGUgZXhwZW5zaXZl IG11dGF0b3IgaXMKKyAqIGludm9rZWQgb25seSBpZiBhIGNhbmRpZGF0ZSBpcyBmb3VuZCwgYXZv aWRpbmcgdW5uZWNlc3NhcnkgbWVtb3J5IGFsbG9jYXRpb24KKyAqIGFuZCB0cmVlIGNvcHlpbmcg aW4gdGhlIGNvbW1vbiBjYXNlIHdoZXJlIG5vIFBsYWNlSG9sZGVyVmFycyBhcmUgcHJlc2VudC4K KyAqLworTm9kZSAqCitzdHJpcF9ub29wX3BodnMoTm9kZSAqbm9kZSkKK3sKKwkvKiBEb24ndCBt dXRhdGUvY29weSBpZiBubyB0YXJnZXQgUEhWcyBleGlzdCAqLworCWlmICghY29udGFpbl9ub29w X3Bodl93YWxrZXIobm9kZSwgTlVMTCkpCisJCXJldHVybiBub2RlOworCisJcmV0dXJuIHN0cmlw X25vb3BfcGh2c19tdXRhdG9yKG5vZGUsIE5VTEwpOworfQorCisvKgorICogY29udGFpbl9ub29w X3Bodl93YWxrZXIKKyAqCSAgRGV0ZWN0IGlmIHRoZXJlIGFyZSBhbnkgUGxhY2VIb2xkZXJWYXJz IGluIHRoZSB0cmVlIHRoYXQgYXJlIGNhbmRpZGF0ZXMKKyAqCSAgZm9yIHN0cmlwcGluZy4KKyAq CisgKiBXZSBpZGVudGlmeSBhIFBsYWNlSG9sZGVyVmFyIGFzIHN0cmlwcGFibGUgb25seSBpZiBp dHMgcGhudWxsaW5ncmVscyBpcworICogZW1wdHkuCisgKi8KK3N0YXRpYyBib29sCitjb250YWlu X25vb3BfcGh2X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCWlmIChub2Rl ID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgUGxhY2VIb2xkZXJW YXIpKQorCXsKKwkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZhciAqKSBub2Rl OworCisJCWlmIChibXNfaXNfZW1wdHkocGh2LT5waG51bGxpbmdyZWxzKSkKKwkJCXJldHVybiB0 cnVlOworCX0KKworCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGNvbnRhaW5f bm9vcF9waHZfd2Fsa2VyLAorCQkJCQkJCQkgIGNvbnRleHQpOworfQorCisvKgorICogc3RyaXBf bm9vcF9waHZzX211dGF0b3IKKyAqCSAgUmVjdXJzaXZlbHkgcmVtb3ZlIFBsYWNlSG9sZGVyVmFy cyB0aGF0IGFyZSBub3QgbWFya2VkIG51bGxhYmxlLgorICoKKyAqIFdlIHN0cmlwIGEgUGxhY2VI b2xkZXJWYXIgb25seSBpZiBpdHMgcGhudWxsaW5ncmVscyBpcyBlbXB0eSwgcmVwbGFjaW5nIGl0 CisgKiB3aXRoIGl0cyBjb250YWluZWQgZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIE5vZGUgKgor c3RyaXBfbm9vcF9waHZzX211dGF0b3IoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlp ZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChJc0Eobm9kZSwgUGxhY2VI b2xkZXJWYXIpKQorCXsKKwkJUGxhY2VIb2xkZXJWYXIgKnBodiA9IChQbGFjZUhvbGRlclZhciAq KSBub2RlOworCisJCWlmIChibXNfaXNfZW1wdHkocGh2LT5waG51bGxpbmdyZWxzKSkKKwkJewor CQkJLyogUmVjdXJzZSBvbiBpdHMgY29udGFpbmVkIGV4cHJlc3Npb24gKi8KKwkJCXJldHVybiBz dHJpcF9ub29wX3BodnNfbXV0YXRvcigoTm9kZSAqKSBwaHYtPnBoZXhwciwKKwkJCQkJCQkJCQkg ICBjb250ZXh0KTsKKwkJfQorCisJCS8qIE90aGVyd2lzZSwga2VlcCB0aGlzIFBIViBidXQgY2hl Y2sgaXRzIGNvbnRhaW5lZCBleHByZXNzaW9uICovCisJfQorCisJcmV0dXJuIGV4cHJlc3Npb25f dHJlZV9tdXRhdG9yKG5vZGUsIHN0cmlwX25vb3BfcGh2c19tdXRhdG9yLAorCQkJCQkJCQkgICBj b250ZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA0OGEzNWY3 NjNlOS4uMmVmOThkNmFkNmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKQEAg LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvY29zdC5oIgogI2luY2x1ZGUgIm9w dGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0 cmVlLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRib3VuZHMuaCIKICNpbmNsdWRlICJw YXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCkBAIC0xODE0LDYgKzE4MTUsMTUgQEAgZ2VuX3BydW5l X3N0ZXBzX2Zyb21fb3BleHBzKEdlbmVyYXRlUHJ1bmluZ1N0ZXBzQ29udGV4dCAqY29udGV4dCwK ICAqICAgYW5kIGNvdWxkbid0IHBvc3NpYmx5IG1hdGNoIGFueSBvdGhlciBvbmUgZWl0aGVyLCBk dWUgdG8gaXRzIGZvcm0gb3IKICAqICAgcHJvcGVydGllcyAoc3VjaCBhcyBjb250YWluaW5nIGEg dm9sYXRpbGUgZnVuY3Rpb24pLgogICogICBPdXRwdXQgYXJndW1lbnRzOiBub25lIHNldC4KKyAq CisgKiBOb3RlIHRoYXQgd2hlbiBwdWxsaW5nIHVwIGEgc3VicXVlcnksIHRoZSBjbGF1c2Ugb3Bl cmFuZHMgbWF5IGdldCB3cmFwcGVkCisgKiBpbiBQbGFjZUhvbGRlclZhcnMgdG8gZW5mb3JjZSBz ZXBhcmF0ZSBpZGVudGl0eSBvciBhcyBhIHJlc3VsdCBvZiBvdXRlcgorICogam9pbnMuICBXZSBt dXN0IHN0cmlwIHN1Y2ggbm8tb3AgUGxhY2VIb2xkZXJWYXJzIGJlZm9yZSBjb21wYXJpbmcgb3Bl cmFuZHMKKyAqIHRvIHRoZSBwYXJ0aXRpb24ga2V5LCBvdGhlcndpc2UgdGhlIGVxdWFsKCkgY2hl Y2tzIHdpbGwgZmFpbCB0byByZWNvZ25pemUKKyAqIHZhbGlkIG1hdGNoZXMuICBUaGlzIGlzIHNh ZmUgYmVjYXVzZSB0aGUgY2xhdXNlcyBoZXJlIGFyZSBhbHdheXMKKyAqIHJlbGF0aW9uLXNjYW4t bGV2ZWwgZXhwcmVzc2lvbnMsIHdoZXJlIGEgUGxhY2VIb2xkZXJWYXIgd2l0aCBlbXB0eQorICog cGhudWxsaW5ncmVscyBpcyBlZmZlY3RpdmVseSBhIG5vLW9wLiAgU3RyaXBwaW5nIG1heSBhbHNv IGJyaW5nIHNlcGFyYXRlCisgKiBSZWxhYmVsVHlwZSBub2RlcyBpbnRvIGFkamFjZW5jeSwgc28g d2UgbXVzdCBsb29wIHdoZW4gcGVlbGluZyB0aG9zZS4KICAqLwogc3RhdGljIFBhcnRDbGF1c2VN YXRjaFN0YXR1cwogbWF0Y2hfY2xhdXNlX3RvX3BhcnRpdGlvbl9rZXkoR2VuZXJhdGVQcnVuaW5n U3RlcHNDb250ZXh0ICpjb250ZXh0LApAQCAtMTkyOSwxMCArMTkzOSwxMiBAQCBtYXRjaF9jbGF1 c2VfdG9fcGFydGl0aW9uX2tleShHZW5lcmF0ZVBydW5pbmdTdGVwc0NvbnRleHQgKmNvbnRleHQs CiAJCVBhcnRDbGF1c2VJbmZvICpwYXJ0Y2xhdXNlOwogCiAJCWxlZnRvcCA9IChFeHByICopIGdl dF9sZWZ0b3AoY2xhdXNlKTsKLQkJaWYgKElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkKKwkJbGVm dG9wID0gKEV4cHIgKikgc3RyaXBfbm9vcF9waHZzKChOb2RlICopIGxlZnRvcCk7CisJCXdoaWxl IChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCiAJCQlsZWZ0b3AgPSAoKFJlbGFiZWxUeXBlICop IGxlZnRvcCktPmFyZzsKIAkJcmlnaHRvcCA9IChFeHByICopIGdldF9yaWdodG9wKGNsYXVzZSk7 Ci0JCWlmIChJc0EocmlnaHRvcCwgUmVsYWJlbFR5cGUpKQorCQlyaWdodG9wID0gKEV4cHIgKikg c3RyaXBfbm9vcF9waHZzKChOb2RlICopIHJpZ2h0b3ApOworCQl3aGlsZSAoSXNBKHJpZ2h0b3As IFJlbGFiZWxUeXBlKSkKIAkJCXJpZ2h0b3AgPSAoKFJlbGFiZWxUeXBlICopIHJpZ2h0b3ApLT5h cmc7CiAJCW9wbm8gPSBvcGNsYXVzZS0+b3BubzsKIApAQCAtMjE4MCw3ICsyMTkyLDggQEAgbWF0 Y2hfY2xhdXNlX3RvX3BhcnRpdGlvbl9rZXkoR2VuZXJhdGVQcnVuaW5nU3RlcHNDb250ZXh0ICpj b250ZXh0LAogCQkJCSAgICplbGVtX2NsYXVzZXM7CiAJCUxpc3RDZWxsICAgKmxjMTsKIAotCQlp ZiAoSXNBKGxlZnRvcCwgUmVsYWJlbFR5cGUpKQorCQlsZWZ0b3AgPSAoRXhwciAqKSBzdHJpcF9u b29wX3BodnMoKE5vZGUgKikgbGVmdG9wKTsKKwkJd2hpbGUgKElzQShsZWZ0b3AsIFJlbGFiZWxU eXBlKSkKIAkJCWxlZnRvcCA9ICgoUmVsYWJlbFR5cGUgKikgbGVmdG9wKS0+YXJnOwogCiAJCS8q IGNoZWNrIGlmIHRoZSBMSFMgbWF0Y2hlcyB0aGlzIHBhcnRpdGlvbiBrZXkgKi8KQEAgLTI0MDYs NyArMjQxOSw4IEBAIG1hdGNoX2NsYXVzZV90b19wYXJ0aXRpb25fa2V5KEdlbmVyYXRlUHJ1bmlu Z1N0ZXBzQ29udGV4dCAqY29udGV4dCwKIAkJTnVsbFRlc3QgICAqbnVsbHRlc3QgPSAoTnVsbFRl c3QgKikgY2xhdXNlOwogCQlFeHByCSAgICphcmcgPSBudWxsdGVzdC0+YXJnOwogCi0JCWlmIChJ c0EoYXJnLCBSZWxhYmVsVHlwZSkpCisJCWFyZyA9IChFeHByICopIHN0cmlwX25vb3BfcGh2cygo Tm9kZSAqKSBhcmcpOworCQl3aGlsZSAoSXNBKGFyZywgUmVsYWJlbFR5cGUpKQogCQkJYXJnID0g KChSZWxhYmVsVHlwZSAqKSBhcmcpLT5hcmc7CiAKIAkJLyogRG9lcyBhcmcgbWF0Y2ggd2l0aCB0 aGlzIHBhcnRpdGlvbiBrZXkgY29sdW1uPyAqLwpAQCAtMzcxOCw3ICszNzMyLDggQEAgbWF0Y2hf Ym9vbGVhbl9wYXJ0aXRpb25fY2xhdXNlKE9pZCBwYXJ0b3BmYW1pbHksIEV4cHIgKmNsYXVzZSwg RXhwciAqcGFydGtleSwKIAkJQm9vbGVhblRlc3QgKmJ0ZXN0ID0gKEJvb2xlYW5UZXN0ICopIGNs YXVzZTsKIAogCQlsZWZ0b3AgPSBidGVzdC0+YXJnOwotCQlpZiAoSXNBKGxlZnRvcCwgUmVsYWJl bFR5cGUpKQorCQlsZWZ0b3AgPSAoRXhwciAqKSBzdHJpcF9ub29wX3BodnMoKE5vZGUgKikgbGVm dG9wKTsKKwkJd2hpbGUgKElzQShsZWZ0b3AsIFJlbGFiZWxUeXBlKSkKIAkJCWxlZnRvcCA9ICgo UmVsYWJlbFR5cGUgKikgbGVmdG9wKS0+YXJnOwogCiAJCWlmIChlcXVhbChsZWZ0b3AsIHBhcnRr ZXkpKQpAQCAtMzc1NSw3ICszNzcwLDggQEAgbWF0Y2hfYm9vbGVhbl9wYXJ0aXRpb25fY2xhdXNl KE9pZCBwYXJ0b3BmYW1pbHksIEV4cHIgKmNsYXVzZSwgRXhwciAqcGFydGtleSwKIAogCQlsZWZ0 b3AgPSBpc19ub3RfY2xhdXNlID8gZ2V0X25vdGNsYXVzZWFyZyhjbGF1c2UpIDogY2xhdXNlOwog Ci0JCWlmIChJc0EobGVmdG9wLCBSZWxhYmVsVHlwZSkpCisJCWxlZnRvcCA9IChFeHByICopIHN0 cmlwX25vb3BfcGh2cygoTm9kZSAqKSBsZWZ0b3ApOworCQl3aGlsZSAoSXNBKGxlZnRvcCwgUmVs YWJlbFR5cGUpKQogCQkJbGVmdG9wID0gKChSZWxhYmVsVHlwZSAqKSBsZWZ0b3ApLT5hcmc7CiAK IAkJLyogQ29tcGFyZSB0byB0aGUgcGFydGl0aW9uIGtleSwgYW5kIG1ha2UgdXAgYSBjbGF1c2Ug Li4uICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhY2Vob2xkZXIuaCBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFjZWhvbGRlci5oCmluZGV4IGRiOTJkODg2MWJhLi4w MTg2ZjE4YmIwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYWNlaG9sZGVy LmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYWNlaG9sZGVyLmgKQEAgLTMyLDUgKzMy LDYgQEAgZXh0ZXJuIGJvb2wgY29udGFpbl9wbGFjZWhvbGRlcl9yZWZlcmVuY2VzX3RvKFBsYW5u ZXJJbmZvICpyb290LCBOb2RlICpjbGF1c2UsCiAJCQkJCQkJCQkJCSAgaW50IHJlbGlkKTsKIGV4 dGVybiBSZWxpZHMgZ2V0X3BsYWNlaG9sZGVyX251bGxpbmdfcmVsaWRzKFBsYW5uZXJJbmZvICpy b290LAogCQkJCQkJCQkJCQkgUGxhY2VIb2xkZXJJbmZvICpwaGluZm8pOworZXh0ZXJuIE5vZGUg KnN0cmlwX25vb3BfcGh2cyhOb2RlICpub2RlKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBMQUNFSE9M REVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3BydW5lLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dAppbmRleCBkMTk2NmNkN2Q4Mi4uN2FhM2U1Y2JhZjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTQ4MDEsMyArNDgwMSwxMzUgQEAgc2Vs ZWN0IG1pbihhKSBvdmVyIChwYXJ0aXRpb24gYnkgYSBvcmRlciBieSBhKSBmcm9tIHBhcnRfYWJj IHdoZXJlIGEgPj0gc3RhYmxlX28KIAogZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7CiBkcm9wIHRh YmxlIHBhcnRfYWJjOworLS0KKy0tIENoZWNrIHRoYXQgb3BlcmFuZHMgd3JhcHBlZCBpbiBQbGFj ZUhvbGRlclZhcnMgYXJlIG1hdGNoZWQgdG8gcGFydGl0aW9uCistLSBrZXlzLCBhbGxvd2luZyBw YXJ0aXRpb24gcHJ1bmluZyB0byBvY2N1ci4gIFBsYWNlSG9sZGVyVmFycyBjYW4gYmUKKy0tIGlu dHJvZHVjZWQgd2hlbiBhIHN1YnF1ZXJ5J3Mgb3V0cHV0IGlzIHVzZWQgd2l0aCBncm91cGluZyBz ZXRzLgorLS0KK2NyZWF0ZSB0YWJsZSBwaHZfcGFydCAoYSBpbnQsIGIgdGV4dCkgcGFydGl0aW9u IGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBodl9wYXJ0XzEgcGFydGl0aW9uIG9mIHBodl9w YXJ0IGZvciB2YWx1ZXMgaW4gKDEpOworY3JlYXRlIHRhYmxlIHBodl9wYXJ0XzIgcGFydGl0aW9u IG9mIHBodl9wYXJ0IGZvciB2YWx1ZXMgaW4gKDIpOworY3JlYXRlIHRhYmxlIHBodl9wYXJ0X251 bGwgcGFydGl0aW9uIG9mIHBodl9wYXJ0IGZvciB2YWx1ZXMgaW4gKG51bGwpOworaW5zZXJ0IGlu dG8gcGh2X3BhcnQgdmFsdWVzICgxLCAnb25lJyksICgyLCAndHdvJyksIChudWxsLCAnbnVsbCcp OworLS0gT3BFeHByOiBQSFYtd3JhcHBlZCBvcGVyYW5kIG1hdGNoZWQgdmlhIGVxdWFsKCkKK2V4 cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X3Bh cnQpIHQKKyAgd2hlcmUgYSA9IDEKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7Cisg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1peGVkQWdncmVnYXRlCisgICBIYXNoIEtleTogcGh2 X3BhcnQuYgorICAgR3JvdXAgS2V5OiBwaHZfcGFydC5hCisgICAtPiAgU2VxIFNjYW4gb24gcGh2 X3BhcnRfMSBwaHZfcGFydAorICAgICAgICAgRmlsdGVyOiAoYSA9IDEpCisoNSByb3dzKQorCitz ZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwgYiBmcm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIGEgPSAx CisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworIGEgfCAgYiAgCistLS0rLS0tLS0K KyAxIHwgCisgICB8IG9uZQorKDIgcm93cykKKworLS0gT3BFeHByIHdpdGggUmVsYWJlbFR5cGU6 IFBIViB3cmFwcGVkIGFyb3VuZCBhIGNhc3RlZCBjb2x1bW4KK2V4cGxhaW4gKGNvc3RzIG9mZikK K3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhOjpvaWQgYXMgeCwgYiBmcm9tIHBodl9wYXJ0KSB0Cisg IHdoZXJlIHg6OmludCA9IDEKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoeCwgYik7CisgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3JlZ2F0ZQorICAgSGFzaCBLZXk6 IChwaHZfcGFydC5hKTo6b2lkCisgICBIYXNoIEtleTogcGh2X3BhcnQuYgorICAgLT4gIFNlcSBT Y2FuIG9uIHBodl9wYXJ0XzEgcGh2X3BhcnQKKyAgICAgICAgIEZpbHRlcjogKCgoYSk6Om9pZCk6 OmludGVnZXIgPSAxKQorKDUgcm93cykKKworc2VsZWN0ICogZnJvbSAoc2VsZWN0IGE6Om9pZCBh cyB4LCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgeDo6aW50ID0gMQorICBncm91cCBieSBn cm91cGluZyBzZXRzICh4LCBiKTsKKyB4IHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IAorICAgfCBv bmUKKygyIHJvd3MpCisKKy0tIFNjYWxhckFycmF5T3BFeHByOiBJTiBjbGF1c2Ugd2l0aCBQSFYt d3JhcHBlZCBvcGVyYW5kCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIChzZWxl Y3QgYSwgYiBmcm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIGEgaW4gKDEsIG51bGwpCisgIGdyb3Vw IGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBIYXNoIEtleTogcGh2X3BhcnQu YQorICAgSGFzaCBLZXk6IHBodl9wYXJ0LmIKKyAgIC0+ICBTZXEgU2NhbiBvbiBwaHZfcGFydF8x IHBodl9wYXJ0CisgICAgICAgICBGaWx0ZXI6IChhID0gQU5ZICgnezEsTlVMTH0nOjppbnRlZ2Vy W10pKQorKDUgcm93cykKKworc2VsZWN0ICogZnJvbSAoc2VsZWN0IGEsIGIgZnJvbSBwaHZfcGFy dCkgdAorICB3aGVyZSBhIGluICgxLCBudWxsKQorICBncm91cCBieSBncm91cGluZyBzZXRzIChh LCBiKTsKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IAorICAgfCBvbmUKKygyIHJvd3MpCisK Ky0tIE51bGxUZXN0OiBJUyBOVUxMIHdpdGggUEhWLXdyYXBwZWQgb3BlcmFuZAorZXhwbGFpbiAo Y29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSAoc2VsZWN0IGEsIGIgZnJvbSBwaHZfcGFydCkgdAor ICB3aGVyZSBhIGlzIG51bGwKKyAgZ3JvdXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7CisgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUKKyAgIEhhc2ggS2V5OiBw aHZfcGFydC5hCisgICBIYXNoIEtleTogcGh2X3BhcnQuYgorICAgLT4gIFNlcSBTY2FuIG9uIHBo dl9wYXJ0X251bGwgcGh2X3BhcnQKKyAgICAgICAgIEZpbHRlcjogKGEgSVMgTlVMTCkKKyg1IHJv d3MpCisKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hl cmUgYSBpcyBudWxsCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworIGEgfCAgYiAg IAorLS0tKy0tLS0tLQorICAgfCAKKyAgIHwgbnVsbAorKDIgcm93cykKKworZHJvcCB0YWJsZSBw aHZfcGFydDsKKy0tIEJvb2xlYW5UZXN0OiBJUyBUUlVFIHdpdGggUEhWLXdyYXBwZWQgYm9vbGVh biBwYXJ0aXRpb24ga2V5CitjcmVhdGUgdGFibGUgcGh2X2Jvb2xwYXJ0IChhIGJvb2wsIGIgdGV4 dCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBodl9ib29scGFydF90IHBh cnRpdGlvbiBvZiBwaHZfYm9vbHBhcnQgZm9yIHZhbHVlcyBpbiAodHJ1ZSk7CitjcmVhdGUgdGFi bGUgcGh2X2Jvb2xwYXJ0X2YgcGFydGl0aW9uIG9mIHBodl9ib29scGFydCBmb3IgdmFsdWVzIGlu IChmYWxzZSk7CitjcmVhdGUgdGFibGUgcGh2X2Jvb2xwYXJ0X251bGwgcGFydGl0aW9uIG9mIHBo dl9ib29scGFydCBkZWZhdWx0OworaW5zZXJ0IGludG8gcGh2X2Jvb2xwYXJ0IHZhbHVlcyAodHJ1 ZSwgJ3llcycpLCAoZmFsc2UsICdubycpLCAobnVsbCwgJ3Vua25vd24nKTsKK2V4cGxhaW4gKGNv c3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X2Jvb2xwYXJ0KSB0 CisgIHdoZXJlIGEgaXMgdHJ1ZQorICBncm91cCBieSBncm91cGluZyBzZXRzIChhLCBiKTsKKyAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUKKyAg IEhhc2ggS2V5OiBwaHZfYm9vbHBhcnQuYQorICAgSGFzaCBLZXk6IHBodl9ib29scGFydC5iCisg ICAtPiAgU2VxIFNjYW4gb24gcGh2X2Jvb2xwYXJ0X3QgcGh2X2Jvb2xwYXJ0CisgICAgICAgICBG aWx0ZXI6IChhIElTIFRSVUUpCisoNSByb3dzKQorCitzZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwg YiBmcm9tIHBodl9ib29scGFydCkgdAorICB3aGVyZSBhIGlzIHRydWUKKyAgZ3JvdXAgYnkgZ3Jv dXBpbmcgc2V0cyAoYSwgYik7CisgYSB8ICBiICAKKy0tLSstLS0tLQorIHQgfCAKKyAgIHwgeWVz CisoMiByb3dzKQorCitkcm9wIHRhYmxlIHBodl9ib29scGFydDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fcHJ1bmUuc3FsCmluZGV4IGQ5M2MwYzAzYmFiLi4zNTlhOTIwODA1NiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCkBAIC0xNDQ3LDMgKzE0NDcs NzQgQEAgc2VsZWN0IG1pbihhKSBvdmVyIChwYXJ0aXRpb24gYnkgYSBvcmRlciBieSBhKSBmcm9t IHBhcnRfYWJjIHdoZXJlIGEgPj0gc3RhYmxlX28KIAogZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7 CiBkcm9wIHRhYmxlIHBhcnRfYWJjOworCistLQorLS0gQ2hlY2sgdGhhdCBvcGVyYW5kcyB3cmFw cGVkIGluIFBsYWNlSG9sZGVyVmFycyBhcmUgbWF0Y2hlZCB0byBwYXJ0aXRpb24KKy0tIGtleXMs IGFsbG93aW5nIHBhcnRpdGlvbiBwcnVuaW5nIHRvIG9jY3VyLiAgUGxhY2VIb2xkZXJWYXJzIGNh biBiZQorLS0gaW50cm9kdWNlZCB3aGVuIGEgc3VicXVlcnkncyBvdXRwdXQgaXMgdXNlZCB3aXRo IGdyb3VwaW5nIHNldHMuCistLQorY3JlYXRlIHRhYmxlIHBodl9wYXJ0IChhIGludCwgYiB0ZXh0 KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUgcGh2X3BhcnRfMSBwYXJ0aXRp b24gb2YgcGh2X3BhcnQgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgcGh2X3BhcnRf MiBwYXJ0aXRpb24gb2YgcGh2X3BhcnQgZm9yIHZhbHVlcyBpbiAoMik7CitjcmVhdGUgdGFibGUg cGh2X3BhcnRfbnVsbCBwYXJ0aXRpb24gb2YgcGh2X3BhcnQgZm9yIHZhbHVlcyBpbiAobnVsbCk7 CitpbnNlcnQgaW50byBwaHZfcGFydCB2YWx1ZXMgKDEsICdvbmUnKSwgKDIsICd0d28nKSwgKG51 bGwsICdudWxsJyk7CisKKy0tIE9wRXhwcjogUEhWLXdyYXBwZWQgb3BlcmFuZCBtYXRjaGVkIHZp YSBlcXVhbCgpCitleHBsYWluIChjb3N0cyBvZmYpCitzZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwg YiBmcm9tIHBodl9wYXJ0KSB0CisgIHdoZXJlIGEgPSAxCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNl dHMgKGEsIGIpOworCitzZWxlY3QgKiBmcm9tIChzZWxlY3QgYSwgYiBmcm9tIHBodl9wYXJ0KSB0 CisgIHdoZXJlIGEgPSAxCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIpOworCistLSBP cEV4cHIgd2l0aCBSZWxhYmVsVHlwZTogUEhWIHdyYXBwZWQgYXJvdW5kIGEgY2FzdGVkIGNvbHVt bgorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSAoc2VsZWN0IGE6Om9pZCBhcyB4 LCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgeDo6aW50ID0gMQorICBncm91cCBieSBncm91 cGluZyBzZXRzICh4LCBiKTsKKworc2VsZWN0ICogZnJvbSAoc2VsZWN0IGE6Om9pZCBhcyB4LCBi IGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgeDo6aW50ID0gMQorICBncm91cCBieSBncm91cGlu ZyBzZXRzICh4LCBiKTsKKworLS0gU2NhbGFyQXJyYXlPcEV4cHI6IElOIGNsYXVzZSB3aXRoIFBI Vi13cmFwcGVkIG9wZXJhbmQKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNl bGVjdCBhLCBiIGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgYSBpbiAoMSwgbnVsbCkKKyAgZ3Jv dXAgYnkgZ3JvdXBpbmcgc2V0cyAoYSwgYik7CisKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBi IGZyb20gcGh2X3BhcnQpIHQKKyAgd2hlcmUgYSBpbiAoMSwgbnVsbCkKKyAgZ3JvdXAgYnkgZ3Jv dXBpbmcgc2V0cyAoYSwgYik7CisKKy0tIE51bGxUZXN0OiBJUyBOVUxMIHdpdGggUEhWLXdyYXBw ZWQgb3BlcmFuZAorZXhwbGFpbiAoY29zdHMgb2ZmKQorc2VsZWN0ICogZnJvbSAoc2VsZWN0IGEs IGIgZnJvbSBwaHZfcGFydCkgdAorICB3aGVyZSBhIGlzIG51bGwKKyAgZ3JvdXAgYnkgZ3JvdXBp bmcgc2V0cyAoYSwgYik7CisKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBiIGZyb20gcGh2X3Bh cnQpIHQKKyAgd2hlcmUgYSBpcyBudWxsCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMgKGEsIGIp OworCitkcm9wIHRhYmxlIHBodl9wYXJ0OworCistLSBCb29sZWFuVGVzdDogSVMgVFJVRSB3aXRo IFBIVi13cmFwcGVkIGJvb2xlYW4gcGFydGl0aW9uIGtleQorY3JlYXRlIHRhYmxlIHBodl9ib29s cGFydCAoYSBib29sLCBiIHRleHQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJs ZSBwaHZfYm9vbHBhcnRfdCBwYXJ0aXRpb24gb2YgcGh2X2Jvb2xwYXJ0IGZvciB2YWx1ZXMgaW4g KHRydWUpOworY3JlYXRlIHRhYmxlIHBodl9ib29scGFydF9mIHBhcnRpdGlvbiBvZiBwaHZfYm9v bHBhcnQgZm9yIHZhbHVlcyBpbiAoZmFsc2UpOworY3JlYXRlIHRhYmxlIHBodl9ib29scGFydF9u dWxsIHBhcnRpdGlvbiBvZiBwaHZfYm9vbHBhcnQgZGVmYXVsdDsKK2luc2VydCBpbnRvIHBodl9i b29scGFydCB2YWx1ZXMgKHRydWUsICd5ZXMnKSwgKGZhbHNlLCAnbm8nKSwgKG51bGwsICd1bmtu b3duJyk7CisKK2V4cGxhaW4gKGNvc3RzIG9mZikKK3NlbGVjdCAqIGZyb20gKHNlbGVjdCBhLCBi IGZyb20gcGh2X2Jvb2xwYXJ0KSB0CisgIHdoZXJlIGEgaXMgdHJ1ZQorICBncm91cCBieSBncm91 cGluZyBzZXRzIChhLCBiKTsKKworc2VsZWN0ICogZnJvbSAoc2VsZWN0IGEsIGIgZnJvbSBwaHZf Ym9vbHBhcnQpIHQKKyAgd2hlcmUgYSBpcyB0cnVlCisgIGdyb3VwIGJ5IGdyb3VwaW5nIHNldHMg KGEsIGIpOworCitkcm9wIHRhYmxlIHBodl9ib29scGFydDsKLS0gCjIuMzkuNSAoQXBwbGUgR2l0 LTE1NCkKCg== --000000000000590fd2064eda2dc0--