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 1vjInu-00CbhD-14 for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 15:10:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vjInt-000BvC-1C for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 15:10:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjIns-000Bv1-2B for pgsql-hackers@lists.postgresql.org; Fri, 23 Jan 2026 15:10:29 +0000 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vjInp-001vVv-10 for pgsql-hackers@postgresql.org; Fri, 23 Jan 2026 15:10:28 +0000 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-47ee4539adfso25071535e9.3 for ; Fri, 23 Jan 2026 07:10:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769181024; x=1769785824; darn=postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=NTxMLZKY5ciINiK82SVHdTowhVj9J4LSWl9xNxMAiho=; b=gW0HxbPWVL8UAky4ek2tRDThjy6sE8/yOFurj7VC03VZPT6xQekGvp3e4rrVYk6D39 3IiUs82gt9CFgOflXJTajtHJPjsUqmSWtynn8+DTw8ce1Gs8ph0yJXu3JvMC7LXCQA6u P3qTq6FbE0gllnNxqTtqDVdwEHVCJWInx8c1HX3Br/kJ6xt5wI+akPVKHPB1R+wtBlYu pQd8QGBx+UgGa2lB+XOg85CYsnJdwS8ARcx2ncSWlBB4NBy7ff4dVP+gBH9KDTwsR+Lh hbK03Lv3cENoIYkRRrFcA/e4LbizqV0oCl7eXAzHpzTZ2Y67aVaGoWU3spkaqF2+cpOO AWAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769181024; x=1769785824; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=NTxMLZKY5ciINiK82SVHdTowhVj9J4LSWl9xNxMAiho=; b=UoIhv3UUfjf9rWJVkxpZ9swOLGBOBkzpjoEY53cyMvICXFh6Q1aXvUit2Mdyl4aa/I UPihe6KUncQyyIEwX2OgqCnYQHUWwl3I2vA3i57OwEBIlWV3pA3b5Bj1k+aKxlXh7dqo cdwyE1gg2+8tOh9uBBDNN4ow0oVropYP4paBOAWgImDimP0eUPvkpq3Gj/MXIy2SOQlY n7kPujmA0dzrKYr3Jwfs7C+wO70p5Rcwr2TUDAJHKdBujUVe2nJ7VWMtbkYgRt/SEVPJ E/jPhXdks6eTzbuNnyty4oxWTc9NLtFf5ph9J957PYiScrOk6QXLOskxgHNsoMwPvlJN /RJQ== X-Gm-Message-State: AOJu0YxujWAVGaH5OhR4F3s++YYYzqvb9Z7giHIlEcVwu3HGnwNhgGmZ Gzu3ao/M3AEcMAVi3MZ8+UiTuxMiZ9JMRSsaQjxwIh00UjWgDtkWccNU X-Gm-Gg: AZuq6aIhjJP6UdSRJjrRx/FrKR/yjIDk3t5qKh2+/UrKlE3Xipk0WyLBVpedalq1t/J zYcHgJgdoRLeVHHUOM85gSXXf2I1wb/vmnP9JP5DJqWOn8b0/yn5fYZnSSZSNBX3Do+p5hIsLQ0 XsuSYQIfAxMNGR3OEb7dJm0XAe06D8GxCsU9InmrzuguvGoF/A98FfZMda3NFx9KAlctxMv+hER XMV7/QmyN84+lgdxntoOzZ3iJfQAFPs72qgu4Zp2x+jQU5Pxt1l1Sv3gQK6VxAq+kOvLi3vJS5s M3vvDvcSoEOTmZ8NhJonMujs0mMYNgTqLeqI526NjVXbhyvRrw5xk7qFaXAkRgGYDKqBD25Ppbe jxwT0fMKuXDYIBq5yggG8QuEY3/ZRJUCUHn3/vD/7S2yrr+PA/PXN/IUCSAR/l2oruAlq0yYJSA SdcFvoLeFCStsycng= X-Received: by 2002:a05:6000:40dd:b0:435:8f1b:bb28 with SMTP id ffacd0b85a97d-435b130e05amr5130553f8f.0.1769181024214; Fri, 23 Jan 2026 07:10:24 -0800 (PST) Received: from [192.168.2.32] ([147.161.234.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435b1c24a8asm7619615f8f.12.2026.01.23.07.10.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 23 Jan 2026 07:10:23 -0800 (PST) Content-Type: multipart/mixed; boundary="------------U8GM6FQngSqiLR6GYsp2t6Nf" Message-ID: <1981b5f0-7d06-4911-a231-23bbb6bf504c@gmail.com> Date: Fri, 23 Jan 2026 16:10:22 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Use correct collation in pg_trgm To: Zsolt Parragi Cc: pgsql-hackers , Heikki Linnakangas , Kirill Reshke References: Content-Language: en-US From: David Geier 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. --------------U8GM6FQngSqiLR6GYsp2t6Nf Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi! Thanks for reviewing. On 22.01.2026 07:32, Zsolt Parragi wrote: > Hello! > > The patch is simple and it does what it says it does, I verified the > difference in behavior with/without it. While reading through [1] I realized that the word boundary detection also uses the wrong collation. Patch 0002 fixes that. > I think the test case included in the email should be part of the > patch, maybe as a new file contrib/pg_trgm/sql/pg_trgm_collation.sql? > It also needs a proper commit message, and seems like the affected > indexes will need a REINDEX after this fix. - I've added tests to 0001 and 0002 based on what each commit fixes. - I've improved the commit messages. Looking at [2], it seems like we don't include release note changes in bug fix commits but rather collect them retroactively before cutting the release. [1] https://www.postgresql.org/message-id/f30299bf-ad8e-4125-bf80-e0a8663991b6%40eisentraut.org [2] https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=fb1a18810f0 -- David Geier --------------U8GM6FQngSqiLR6GYsp2t6Nf Content-Type: text/x-patch; charset=UTF-8; name="v2-0002-Use-correct-collation-for-finding-word-boundaries.patch" Content-Disposition: attachment; filename*0="v2-0002-Use-correct-collation-for-finding-word-boundaries.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0MzMxMDVlOGJlMGNlNDgzNGMzNWU3OWQ2OGI5MjZmZjg0ZGMxZDU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyMyBKYW4gMjAyNiAxNTozOTowNiArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjIgMi8yXSBVc2UgY29ycmVjdCBjb2xsYXRpb24gZm9yIGZpbmRpbmcgd29yZCBib3Vu ZGFyaWVzCgpwZ190cmdtIGZpbmRzIGFsbCB3b3JkcyBpbiB0aGUgaW5wdXQgc3RyaW5nIGFu ZCBjcmVhdGVzIHRyaWdyYW1zIGZvcgp0aGVtLiBXb3JkIGNoYXJhY3RlcnMgYXJlIGFscGhh LW51bWVyaWMgY2hhcmFjdGVycy4gV2hhdCBxdWFsaWZpZXMgYXMKYWxwaGEtbnVtZXJpYyBj aGFyYWN0ZXIgZGVwZW5kcyBvbiB0aGUgY29sbGF0aW9uLiBQcmV2aW91c2x5LCBwZ190cmdt CmFsd2F5cyB1c2VkIHRoZSBkZWZhdWx0IGNvbGxhdGlvbi4gTm93IHRoZSBzcGVjaWZpZWQg Y29sbGF0aW9uIGlzIHVzZWQKaW5zdGVhZC4KLS0tCiAuLi4vcGdfdHJnbS9leHBlY3RlZC9w Z190cmdtX2NvbGxhdGlvbi5vdXQgICAgfCAxMyArKysrKysrKysrKysKIGNvbnRyaWIvcGdf dHJnbS9zcWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsICAgICB8ICA1ICsrKysrCiBjb250cmli L3BnX3RyZ20vdHJnbS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIGNv bnRyaWIvcGdfdHJnbS90cmdtX29wLmMgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysr KysrKystLS0tLS0tLS0KIGNvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jICAgICAgICAg ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC90c2VhcmNoL3RzX2xvY2FsZS5jICAgICAg ICAgICAgICAgfCAgNCArKy0tCiBzcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xvY2FsZS5oICAg ICAgICAgICAgICAgfCAgOSArKysrKysrLQogNyBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRp b25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20v ZXhwZWN0ZWQvcGdfdHJnbV9jb2xsYXRpb24ub3V0IGIvY29udHJpYi9wZ190cmdtL2V4cGVj dGVkL3BnX3RyZ21fY29sbGF0aW9uLm91dAppbmRleCBhZDdjYjgyMmU5OS4uYzNhMzgwY2I2 MjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS9leHBlY3RlZC9wZ190cmdtX2NvbGxh dGlvbi5vdXQKKysrIGIvY29udHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ21fY29sbGF0 aW9uLm91dApAQCAtMzMsMyArMzMsMTYgQEAgU0VMRUNUIHNpbWlsYXJpdHkoJ8Sxc3RhbmJ1 bCcgQ09MTEFURSAiQyIsICdJU1RBTkJVTCcgQ09MTEFURSAiQyIpOwogICAgMC41NDU0NTUK ICgxIHJvdykKIAorLS0gVGVzdCB0aGF0IHdvcmQgYm91bmRhcnkgaWRlbnRpZmljYXRpb24g dXNlcyBzcGVjaWZpZWQgY29sbGF0aW9uCitTRUxFQ1Qgc2hvd190cmdtKCdoZWxsb8SxdGVz dEl3b3JsZMSwY29kZScgQ09MTEFURSAidHVya2lzaCIpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93X3RyZ20gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsweDhmYzBhMiwweDkzZGZiZiwweDFiZjQzYywi ICBoIiwiIGhlIiwweDIyZDQ0ZiwweDQzOThmZixjb2QsImRlICIsZGljLGVsbCxlc3QsaGVs LGljbyxsZGksbGxvLG9kZSxvcmwsMHg3MWI4ZjUscmxkLHRlcyx3b3J9CisoMSByb3cpCisK K1NFTEVDVCBzaG93X3RyZ20oJ2hlbGxvxLF0ZXN0SXdvcmxkxLBjb2RlJyBDT0xMQVRFICJD Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNob3dfdHJnbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgeyIgIGMiLCIgIGgiLCIgIHQiLCIgY28iLCIgaGUiLCIgdGUiLGNvZCwi ZGUgIixlbGwsZXN0LGhlbCxpd28sImxkICIsbGxvLCJsbyAiLG9kZSxvcmwscmxkLHN0aSx0 ZXMsdGl3LHdvcn0KKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3Nx bC9wZ190cmdtX2NvbGxhdGlvbi5zcWwgYi9jb250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ21f Y29sbGF0aW9uLnNxbAppbmRleCBiMDYzMGZkYjQ2YS4uYTFjZjliMzI3MjAgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsCisrKyBiL2Nv bnRyaWIvcGdfdHJnbS9zcWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsCkBAIC0xMiwzICsxMiw4 IEBAIFNFTEVDVCBzaG93X3RyZ20oJ0lTVEFOQlVMJyBDT0xMQVRFICJDIik7CiAKIFNFTEVD VCBzaW1pbGFyaXR5KCfEsXN0YW5idWwnIENPTExBVEUgInR1cmtpc2giLCAnSVNUQU5CVUwn IENPTExBVEUgInR1cmtpc2giKTsKIFNFTEVDVCBzaW1pbGFyaXR5KCfEsXN0YW5idWwnIENP TExBVEUgIkMiLCAnSVNUQU5CVUwnIENPTExBVEUgIkMiKTsKKworLS0gVGVzdCB0aGF0IHdv cmQgYm91bmRhcnkgaWRlbnRpZmljYXRpb24gdXNlcyBzcGVjaWZpZWQgY29sbGF0aW9uCisK K1NFTEVDVCBzaG93X3RyZ20oJ2hlbGxvxLF0ZXN0SXdvcmxkxLBjb2RlJyBDT0xMQVRFICJ0 dXJraXNoIik7CitTRUxFQ1Qgc2hvd190cmdtKCdoZWxsb8SxdGVzdEl3b3JsZMSwY29kZScg Q09MTEFURSAiQyIpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfdHJnbS90cmdtLmggYi9jb250cmliL3BnX3RyZ20vdHJnbS5oCmluZGV4 IDE0N2VlZmFhM2M2Li42ZjBlMGEyMDc4OSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdt L3RyZ20uaAorKysgYi9jb250cmliL3BnX3RyZ20vdHJnbS5oCkBAIC00Nyw5ICs0Nyw5IEBA IHR5cGVkZWYgY2hhciB0cmdtWzNdOwogfSB3aGlsZSgwKQogZXh0ZXJuIGludAkoKkNNUFRS R00pIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIAotI2RlZmluZSBJU1dPUkRD SFIoYykJKHRfaXNhbG51bShjKSkKLSNkZWZpbmUgSVNQUklOVEFCTEVDSEFSKGEpCSggaXNh c2NpaSggKih1bnNpZ25lZCBjaGFyKikoYSkgKSAmJiAoaXNhbG51bSggKih1bnNpZ25lZCBj aGFyKikoYSkgKSB8fCAqKHVuc2lnbmVkIGNoYXIqKShhKT09JyAnKSApCi0jZGVmaW5lIElT UFJJTlRBQkxFVFJHTSh0KQkoIElTUFJJTlRBQkxFQ0hBUiggKChjaGFyKikodCkpICkgJiYg SVNQUklOVEFCTEVDSEFSKCAoKGNoYXIqKSh0KSkrMSApICYmIElTUFJJTlRBQkxFQ0hBUigg KChjaGFyKikodCkpKzIgKSApCisjZGVmaW5lIElTV09SRENIUihjLCBjb2xsYXRpb24pCSh0 X2lzYWxudW1fY29sbGF0aW9uKGMsIGNvbGxhdGlvbikpCisjZGVmaW5lIElTUFJJTlRBQkxF Q0hBUihhKQkJKCBpc2FzY2lpKCAqKHVuc2lnbmVkIGNoYXIqKShhKSApICYmIChpc2FsbnVt KCAqKHVuc2lnbmVkIGNoYXIqKShhKSApIHx8ICoodW5zaWduZWQgY2hhciopKGEpPT0nICcp ICkKKyNkZWZpbmUgSVNQUklOVEFCTEVUUkdNKHQpCQkoIElTUFJJTlRBQkxFQ0hBUiggKChj aGFyKikodCkpICkgJiYgSVNQUklOVEFCTEVDSEFSKCAoKGNoYXIqKSh0KSkrMSApICYmIElT UFJJTlRBQkxFQ0hBUiggKChjaGFyKikodCkpKzIgKSApCiAKICNkZWZpbmUgSVNFU0NBUEVD SEFSKHgpICgqKHgpID09ICdcXCcpCS8qIFdpbGRjYXJkIGVzY2FwZSBjaGFyYWN0ZXIgKi8K ICNkZWZpbmUgSVNXSUxEQ0FSRENIQVIoeCkgKCooeCkgPT0gJ18nIHx8ICooeCkgPT0gJyUn KQkvKiBXaWxkY2FyZApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYyBi L2NvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMKaW5kZXggZDRjNzVjYWVmZjkuLjM5OWU2YTI2 ZjM0IDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20vdHJnbV9vcC5jCisrKyBiL2NvbnRy aWIvcGdfdHJnbS90cmdtX29wLmMKQEAgLTIyMCwxMSArMjIwLDExIEBAIGNvbXBfdHJnbShj b25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogICogZW5kd29yZCBwb2ludHMgdG8gdGhl IGNoYXJhY3RlciBhZnRlciB3b3JkCiAgKi8KIHN0YXRpYyBjaGFyICoKLWZpbmRfd29yZChj aGFyICpzdHIsIGludCBsZW5zdHIsIGNoYXIgKiplbmR3b3JkLCBpbnQgKmNoYXJsZW4pCitm aW5kX3dvcmQoY2hhciAqc3RyLCBpbnQgbGVuc3RyLCBjaGFyICoqZW5kd29yZCwgaW50ICpj aGFybGVuLCBPaWQgY29sbGF0aW9uKQogewogCWNoYXIJICAgKmJlZ2lud29yZCA9IHN0cjsK IAotCXdoaWxlIChiZWdpbndvcmQgLSBzdHIgPCBsZW5zdHIgJiYgIUlTV09SRENIUihiZWdp bndvcmQpKQorCXdoaWxlIChiZWdpbndvcmQgLSBzdHIgPCBsZW5zdHIgJiYgIUlTV09SRENI UihiZWdpbndvcmQsIGNvbGxhdGlvbikpCiAJCWJlZ2lud29yZCArPSBwZ19tYmxlbihiZWdp bndvcmQpOwogCiAJaWYgKGJlZ2lud29yZCAtIHN0ciA+PSBsZW5zdHIpCkBAIC0yMzIsNyAr MjMyLDcgQEAgZmluZF93b3JkKGNoYXIgKnN0ciwgaW50IGxlbnN0ciwgY2hhciAqKmVuZHdv cmQsIGludCAqY2hhcmxlbikKIAogCSplbmR3b3JkID0gYmVnaW53b3JkOwogCSpjaGFybGVu ID0gMDsKLQl3aGlsZSAoKmVuZHdvcmQgLSBzdHIgPCBsZW5zdHIgJiYgSVNXT1JEQ0hSKCpl bmR3b3JkKSkKKwl3aGlsZSAoKmVuZHdvcmQgLSBzdHIgPCBsZW5zdHIgJiYgSVNXT1JEQ0hS KCplbmR3b3JkLCBjb2xsYXRpb24pKQogCXsKIAkJKmVuZHdvcmQgKz0gcGdfbWJsZW4oKmVu ZHdvcmQpOwogCQkoKmNoYXJsZW4pKys7CkBAIC0zNDksNyArMzQ5LDcgQEAgZ2VuZXJhdGVf dHJnbV9vbmx5KHRyZ20gKnRyZywgY2hhciAqc3RyLCBpbnQgc2xlbiwgT2lkIGNvbGxhdGlv biwgVHJnbUJvdW5kICpib3UKIAl9CiAKIAlld29yZCA9IHN0cjsKLQl3aGlsZSAoKGJ3b3Jk ID0gZmluZF93b3JkKGV3b3JkLCBzbGVuIC0gKGV3b3JkIC0gc3RyKSwgJmV3b3JkLCAmY2hh cmxlbikpICE9IE5VTEwpCisJd2hpbGUgKChid29yZCA9IGZpbmRfd29yZChld29yZCwgc2xl biAtIChld29yZCAtIHN0ciksICZld29yZCwgJmNoYXJsZW4sIGNvbGxhdGlvbikpICE9IE5V TEwpCiAJewogI2lmZGVmIElHTk9SRUNBU0UKIAkJYndvcmQgPSBzdHJfdG9sb3dlcihid29y ZCwgZXdvcmQgLSBid29yZCwgY29sbGF0aW9uKTsKQEAgLTc3MSw3ICs3NzEsOCBAQCBjYWxj X3dvcmRfc2ltaWxhcml0eShjaGFyICpzdHIxLCBpbnQgc2xlbjEsIGNoYXIgKnN0cjIsIGlu dCBzbGVuMiwKICAqLwogc3RhdGljIGNvbnN0IGNoYXIgKgogZ2V0X3dpbGRjYXJkX3BhcnQo Y29uc3QgY2hhciAqc3RyLCBpbnQgbGVuc3RyLAotCQkJCSAgY2hhciAqYnVmLCBpbnQgKmJ5 dGVsZW4sIGludCAqY2hhcmxlbikKKwkJCQkgIGNoYXIgKmJ1ZiwgaW50ICpieXRlbGVuLCBp bnQgKmNoYXJsZW4sCisJCQkJICBPaWQgY29sbGF0aW9uKQogewogCWNvbnN0IGNoYXIgKmJl Z2lud29yZCA9IHN0cjsKIAljb25zdCBjaGFyICplbmR3b3JkOwpAQCAtNzkxLDcgKzc5Miw3 IEBAIGdldF93aWxkY2FyZF9wYXJ0KGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbnN0ciwKIAl7 CiAJCWlmIChpbl9lc2NhcGUpCiAJCXsKLQkJCWlmIChJU1dPUkRDSFIoYmVnaW53b3JkKSkK KwkJCWlmIChJU1dPUkRDSFIoYmVnaW53b3JkLCBjb2xsYXRpb24pKQogCQkJCWJyZWFrOwog CQkJaW5fZXNjYXBlID0gZmFsc2U7CiAJCQlpbl9sZWFkaW5nX3dpbGRjYXJkX21ldGEgPSBm YWxzZTsKQEAgLTgwMiw3ICs4MDMsNyBAQCBnZXRfd2lsZGNhcmRfcGFydChjb25zdCBjaGFy ICpzdHIsIGludCBsZW5zdHIsCiAJCQkJaW5fZXNjYXBlID0gdHJ1ZTsKIAkJCWVsc2UgaWYg KElTV0lMRENBUkRDSEFSKGJlZ2lud29yZCkpCiAJCQkJaW5fbGVhZGluZ193aWxkY2FyZF9t ZXRhID0gdHJ1ZTsKLQkJCWVsc2UgaWYgKElTV09SRENIUihiZWdpbndvcmQpKQorCQkJZWxz ZSBpZiAoSVNXT1JEQ0hSKGJlZ2lud29yZCwgY29sbGF0aW9uKSkKIAkJCQlicmVhazsKIAkJ CWVsc2UKIAkJCQlpbl9sZWFkaW5nX3dpbGRjYXJkX21ldGEgPSBmYWxzZTsKQEAgLTg0NSw3 ICs4NDYsNyBAQCBnZXRfd2lsZGNhcmRfcGFydChjb25zdCBjaGFyICpzdHIsIGludCBsZW5z dHIsCiAJCWNsZW4gPSBwZ19tYmxlbihlbmR3b3JkKTsKIAkJaWYgKGluX2VzY2FwZSkKIAkJ ewotCQkJaWYgKElTV09SRENIUihlbmR3b3JkKSkKKwkJCWlmIChJU1dPUkRDSFIoZW5kd29y ZCwgY29sbGF0aW9uKSkKIAkJCXsKIAkJCQltZW1jcHkocywgZW5kd29yZCwgY2xlbik7CiAJ CQkJKCpjaGFybGVuKSsrOwpAQCAtODczLDcgKzg3NCw3IEBAIGdldF93aWxkY2FyZF9wYXJ0 KGNvbnN0IGNoYXIgKnN0ciwgaW50IGxlbnN0ciwKIAkJCQlpbl90cmFpbGluZ193aWxkY2Fy ZF9tZXRhID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KLQkJCWVsc2UgaWYgKElTV09SRENI UihlbmR3b3JkKSkKKwkJCWVsc2UgaWYgKElTV09SRENIUihlbmR3b3JkLCBjb2xsYXRpb24p KQogCQkJewogCQkJCW1lbWNweShzLCBlbmR3b3JkLCBjbGVuKTsKIAkJCQkoKmNoYXJsZW4p Kys7CkBAIC05NDUsNyArOTQ2LDcgQEAgZ2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBj aGFyICpzdHIsIGludCBzbGVuLCBPaWQgY29sbGF0aW9uKQogCSAqLwogCWV3b3JkID0gc3Ry OwogCXdoaWxlICgoZXdvcmQgPSBnZXRfd2lsZGNhcmRfcGFydChld29yZCwgc2xlbiAtIChl d29yZCAtIHN0ciksCi0JCQkJCQkJCQkgIGJ1ZiwgJmJ5dGVsZW4sICZjaGFybGVuKSkgIT0g TlVMTCkKKwkJCQkJCQkJCSAgYnVmLCAmYnl0ZWxlbiwgJmNoYXJsZW4sIGNvbGxhdGlvbikp ICE9IE5VTEwpCiAJewogI2lmZGVmIElHTk9SRUNBU0UKIAkJYnVmMiA9IHN0cl90b2xvd2Vy KGJ1ZiwgYnl0ZWxlbiwgY29sbGF0aW9uKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJn bS90cmdtX3JlZ2V4cC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMKaW5kZXgg Y2RkMDRmYTAxYWQuLmE4OWRiZTE4ODBiIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3RyZ20v dHJnbV9yZWdleHAuYworKysgYi9jb250cmliL3BnX3RyZ20vdHJnbV9yZWdleHAuYwpAQCAt ODEwLDcgKzgxMCw3IEBAIGdldENvbG9ySW5mbyhyZWdleF90ICpyZWdleCwgVHJnbU5GQSAq dHJnbU5GQSwgT2lkIGNvbGxhdGlvbikKIAogCQkJaWYgKCFjb252ZXJ0UGdXY2hhcihjaGFy c1tqXSwgJmMsIGNvbGxhdGlvbikpCiAJCQkJY29udGludWU7CQkvKiBvayB0byBpZ25vcmUg aXQgYWx0b2dldGhlciAqLwotCQkJaWYgKElTV09SRENIUihjLmJ5dGVzKSkKKwkJCWlmIChJ U1dPUkRDSFIoYy5ieXRlcywgY29sbGF0aW9uKSkKIAkJCQljb2xvckluZm8tPndvcmRDaGFy c1tjb2xvckluZm8tPndvcmRDaGFyc0NvdW50KytdID0gYzsKIAkJCWVsc2UKIAkJCQljb2xv ckluZm8tPmNvbnRhaW5zTm9uV29yZCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90c2VhcmNoL3RzX2xvY2FsZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19sb2NhbGUu YwppbmRleCAxZTk4ZjMyMTk1Ny4uM2NhYWQyZTVjMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3RzZWFyY2gvdHNfbG9jYWxlLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c19s b2NhbGUuYwpAQCAtMzcsNyArMzcsNyBAQCB0X2lzYWxwaGEoY29uc3QgY2hhciAqcHRyKQog fQogCiBpbnQKLXRfaXNhbG51bShjb25zdCBjaGFyICpwdHIpCit0X2lzYWxudW1fY29sbGF0 aW9uKGNvbnN0IGNoYXIgKnB0ciwgT2lkIGNvbGxhdGlvbikKIHsKIAlwZ193Y2hhcgl3c3Ry W1dDX0JVRl9MRU5dOwogCWludAkJCXdsZW4gcGdfYXR0cmlidXRlX3VudXNlZCgpOwpAQCAt NDYsNyArNDYsNyBAQCB0X2lzYWxudW0oY29uc3QgY2hhciAqcHRyKQogCUFzc2VydCh3bGVu IDw9IDEpOwogCiAJLyogcGFzcyBzaW5nbGUgY2hhcmFjdGVyLCBvciBOVUwgaWYgZW1wdHkg Ki8KLQlyZXR1cm4gcGdfaXN3YWxudW0od3N0clswXSwgcGdfZGF0YWJhc2VfbG9jYWxlKCkp OworCXJldHVybiBwZ19pc3dhbG51bSh3c3RyWzBdLCBwZ19uZXdsb2NhbGVfZnJvbV9jb2xs YXRpb24oY29sbGF0aW9uKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdHNl YXJjaC90c19sb2NhbGUuaCBiL3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfbG9jYWxlLmgKaW5k ZXggY2VhNDE3YTkxYjUuLmIxYTJhNDVlZDlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90 c2VhcmNoL3RzX2xvY2FsZS5oCisrKyBiL3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfbG9jYWxl LmgKQEAgLTE4LDYgKzE4LDcgQEAKIAogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlv bi5oIgogI2luY2x1ZGUgInV0aWxzL3BnX2xvY2FsZS5oIgogCiAvKiB3b3JraW5nIHN0YXRl IGZvciB0c2VhcmNoX3JlYWRsaW5lIChzaG91bGQgYmUgYSBsb2NhbCB2YXIgaW4gY2FsbGVy KSAqLwpAQCAtNDAsNyArNDEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKICNkZWZpbmUgQ09QWUNI QVIoZCxzKQltZW1jcHkoZCwgcywgcGdfbWJsZW4ocykpCiAKIGV4dGVybiBpbnQJdF9pc2Fs cGhhKGNvbnN0IGNoYXIgKnB0cik7Ci1leHRlcm4gaW50CXRfaXNhbG51bShjb25zdCBjaGFy ICpwdHIpOworZXh0ZXJuIGludAl0X2lzYWxudW1fY29sbGF0aW9uKGNvbnN0IGNoYXIgKnB0 ciwgT2lkIGNvbGxhdGlvbik7CisKK3N0YXRpYyBpbmxpbmUgaW50Cit0X2lzYWxudW0oY29u c3QgY2hhciAqcHRyKQoreworCXJldHVybiB0X2lzYWxudW1fY29sbGF0aW9uKHB0ciwgREVG QVVMVF9DT0xMQVRJT05fT0lEKTsKK30KIAogZXh0ZXJuIGJvb2wgdHNlYXJjaF9yZWFkbGlu ZV9iZWdpbih0c2VhcmNoX3JlYWRsaW5lX3N0YXRlICpzdHAsCiAJCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKmZpbGVuYW1lKTsKLS0gCjIuNTEuMAoK --------------U8GM6FQngSqiLR6GYsp2t6Nf Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Use-correct-collation-for-lowercasing.patch" Content-Disposition: attachment; filename="v2-0001-Use-correct-collation-for-lowercasing.patch" Content-Transfer-Encoding: base64 RnJvbSA5OGY0NThjZTVhNGQwYjRhODZiMDBmYWFmMzlhM2U2YTI3NDAwNzlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBHZWllciA8Z2VpZGF2LnBnQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMSBKYW4gMjAyNiAxNDo1NDoyOCArMDEwMApTdWJqZWN0OiBbUEFU Q0ggdjIgMS8yXSBVc2UgY29ycmVjdCBjb2xsYXRpb24gZm9yIGxvd2VyY2FzaW5nCgpwZ190 cmdtIGNvbnZlcnRzIHRoZSBpbnB1dCB3b3JkcyB0byBsb3dlcmNhc2UgYmVmb3JlIGV4dHJh Y3RpbmcgdGhlCnRyaWdyYW1zLiBUaGUgbG93ZXJjYXNlIGNvbnZlcnNpb24gZGVwZW5kcyBv biB0aGUgY29sbGF0aW9uLiBQcmV2aW91c2x5LApwZ190cmdtIGFsd2F5cyB1c2VkIHRoZSBk ZWZhdWx0IGNvbGxhdGlvbi4gTm93LCB0aGUgc3BlY2lmaWVkIGNvbGxhdGlvbgppcyB1c2Vk IGluc3RlYWQuCi0tLQogY29udHJpYi9wZ190cmdtL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIC4uLi9wZ190cmdtL2V4cGVjdGVkL3BnX3RyZ21fY29sbGF0aW9u Lm91dCAgICB8IDM1ICsrKysrKysrKysrCiBjb250cmliL3BnX3RyZ20vbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICAgfCAgMSArCiBjb250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ21f Y29sbGF0aW9uLnNxbCAgICAgfCAxNCArKysrKwogY29udHJpYi9wZ190cmdtL3RyZ20uaCAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNvbnRyaWIvcGdfdHJnbS90cmdtX2dp bi5jICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLQogY29udHJpYi9wZ190cmdtL3RyZ21f Z2lzdC5jICAgICAgICAgICAgICAgICAgIHwgMTAgKystLQogY29udHJpYi9wZ190cmdtL3Ry Z21fb3AuYyAgICAgICAgICAgICAgICAgICAgIHwgNjAgKysrKysrKysrKy0tLS0tLS0tLQog Y29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMgICAgICAgICAgICAgICAgIHwgMjAgKysr LS0tLQogOSBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ190cmdtL2V4cGVjdGVkL3BnX3Ry Z21fY29sbGF0aW9uLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfdHJnbS9z cWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdt L01ha2VmaWxlIGIvY29udHJpYi9wZ190cmdtL01ha2VmaWxlCmluZGV4IDFmYmRjOWVjMWVm Li4xNDUwZjJhYWVhNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL01ha2VmaWxlCisr KyBiL2NvbnRyaWIvcGdfdHJnbS9NYWtlZmlsZQpAQCAtMTQsNyArMTQsNyBAQCBEQVRBID0g cGdfdHJnbS0tMS41LS0xLjYuc3FsIHBnX3RyZ20tLTEuNC0tMS41LnNxbCBwZ190cmdtLS0x LjMtLTEuNC5zcWwgXAogCXBnX3RyZ20tLTEuMC0tMS4xLnNxbAogUEdGSUxFREVTQyA9ICJw Z190cmdtIC0gdHJpZ3JhbSBtYXRjaGluZyIKIAotUkVHUkVTUyA9IHBnX3RyZ20gcGdfd29y ZF90cmdtIHBnX3N0cmljdF93b3JkX3RyZ20KK1JFR1JFU1MgPSBwZ190cmdtIHBnX3dvcmRf dHJnbSBwZ19zdHJpY3Rfd29yZF90cmdtIHBnX3RyZ21fY29sbGF0aW9uCiAKIGlmZGVmIFVT RV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf dHJnbS9leHBlY3RlZC9wZ190cmdtX2NvbGxhdGlvbi5vdXQgYi9jb250cmliL3BnX3RyZ20v ZXhwZWN0ZWQvcGdfdHJnbV9jb2xsYXRpb24ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5hZDdjYjgyMmU5OQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvcGdfdHJnbS9leHBlY3RlZC9wZ190cmdtX2NvbGxhdGlvbi5vdXQKQEAgLTAsMCArMSwz NSBAQAorQ1JFQVRFIENPTExBVElPTiB0dXJraXNoIChwcm92aWRlciA9IGxpYmMsIGxvY2Fs ZSA9ICd0cl9UUi51dGY4Jyk7CitTRVQgZXh0cmFfZmxvYXRfZGlnaXRzID0gMDsgLS0gUmVk dWNlIG5vaXNlCistLSBUZXN0IHRoYXQgbG93ZXJjYXNlIGNvbnZlcnNpb24gb2YgdHJpZ3Jh bXMgdXNlcyBzcGVjaWZpZWQgY29sbGF0aW9uCitDUkVBVEUgVEFCTEUgdGVzdChjb2wgVEVY VCBDT0xMQVRFICJ0dXJraXNoIik7CitJTlNFUlQgSU5UTyB0ZXN0IFZBTFVFUyAoJ0lTVEFO QlVMJyk7CitTRUxFQ1Qgc2hvd190cmdtKGNvbCkgRlJPTSB0ZXN0OworICAgICAgICAgICAg ICAgICAgICAgICBzaG93X3RyZ20gICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgezB4 ZjMxZTFhLDB4ZmU1ODFkLDB4M2VmZDMwLGFuYixidWwsbmJ1LHN0YSx0YW4sInVsICJ9Ciso MSByb3cpCisKK1NFTEVDVCBzaG93X3RyZ20oJ0lTVEFOQlVMJyBDT0xMQVRFICJ0dXJraXNo Iik7CisgICAgICAgICAgICAgICAgICAgICAgIHNob3dfdHJnbSAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyB7MHhmMzFlMWEsMHhmZTU4MWQsMHgzZWZkMzAsYW5iLGJ1bCxuYnUs c3RhLHRhbiwidWwgIn0KKygxIHJvdykKKworU0VMRUNUIHNob3dfdHJnbSgnSVNUQU5CVUwn IENPTExBVEUgIkMiKTsKKyAgICAgICAgICAgICAgICAgIHNob3dfdHJnbSAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgeyIgIGkiLCIgaXMiLGFuYixidWwsaXN0LG5idSxzdGEsdGFuLCJ1bCAifQorKDEgcm93 KQorCitTRUxFQ1Qgc2ltaWxhcml0eSgnxLFzdGFuYnVsJyBDT0xMQVRFICJ0dXJraXNoIiwg J0lTVEFOQlVMJyBDT0xMQVRFICJ0dXJraXNoIik7Cisgc2ltaWxhcml0eSAKKy0tLS0tLS0t LS0tLQorICAgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIHNpbWlsYXJpdHkoJ8Sxc3Rh bmJ1bCcgQ09MTEFURSAiQyIsICdJU1RBTkJVTCcgQ09MTEFURSAiQyIpOworIHNpbWlsYXJp dHkgCistLS0tLS0tLS0tLS0KKyAgIDAuNTQ1NDU1CisoMSByb3cpCisKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfdHJnbS9tZXNvbi5idWlsZCBiL2NvbnRyaWIvcGdfdHJnbS9tZXNvbi5i dWlsZAppbmRleCAzY2MyOTlkNWVhYS4uOTVkMjgwNmRkYTYgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfdHJnbS9tZXNvbi5idWlsZAorKysgYi9jb250cmliL3BnX3RyZ20vbWVzb24uYnVp bGQKQEAgLTQxLDYgKzQxLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3BnX3RyZ20nLAogICAg ICAgJ3BnX3dvcmRfdHJnbScsCiAgICAgICAncGdfc3RyaWN0X3dvcmRfdHJnbScsCisgICAg ICAncGdfdHJnbV9jb2xsYXRpb24nLAogICAgIF0sCiAgIH0sCiB9CmRpZmYgLS1naXQgYS9j b250cmliL3BnX3RyZ20vc3FsL3BnX3RyZ21fY29sbGF0aW9uLnNxbCBiL2NvbnRyaWIvcGdf dHJnbS9zcWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5iMDYzMGZkYjQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRy aWIvcGdfdHJnbS9zcWwvcGdfdHJnbV9jb2xsYXRpb24uc3FsCkBAIC0wLDAgKzEsMTQgQEAK K0NSRUFURSBDT0xMQVRJT04gdHVya2lzaCAocHJvdmlkZXIgPSBsaWJjLCBsb2NhbGUgPSAn dHJfVFIudXRmOCcpOworU0VUIGV4dHJhX2Zsb2F0X2RpZ2l0cyA9IDA7IC0tIFJlZHVjZSBu b2lzZQorCistLSBUZXN0IHRoYXQgbG93ZXJjYXNlIGNvbnZlcnNpb24gb2YgdHJpZ3JhbXMg dXNlcyBzcGVjaWZpZWQgY29sbGF0aW9uCisKK0NSRUFURSBUQUJMRSB0ZXN0KGNvbCBURVhU IENPTExBVEUgInR1cmtpc2giKTsKK0lOU0VSVCBJTlRPIHRlc3QgVkFMVUVTICgnSVNUQU5C VUwnKTsKK1NFTEVDVCBzaG93X3RyZ20oY29sKSBGUk9NIHRlc3Q7CitTRUxFQ1Qgc2hvd190 cmdtKCdJU1RBTkJVTCcgQ09MTEFURSAidHVya2lzaCIpOworCitTRUxFQ1Qgc2hvd190cmdt KCdJU1RBTkJVTCcgQ09MTEFURSAiQyIpOworCitTRUxFQ1Qgc2ltaWxhcml0eSgnxLFzdGFu YnVsJyBDT0xMQVRFICJ0dXJraXNoIiwgJ0lTVEFOQlVMJyBDT0xMQVRFICJ0dXJraXNoIik7 CitTRUxFQ1Qgc2ltaWxhcml0eSgnxLFzdGFuYnVsJyBDT0xMQVRFICJDIiwgJ0lTVEFOQlVM JyBDT0xMQVRFICJDIik7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3RyZ20vdHJnbS5oIGIv Y29udHJpYi9wZ190cmdtL3RyZ20uaAppbmRleCBjYTAxNzU4NTM2OS4uMTQ3ZWVmYWEzYzYg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfdHJnbS90cmdtLmgKKysrIGIvY29udHJpYi9wZ190 cmdtL3RyZ20uaApAQCAtMTE5LDggKzExOSw4IEBAIGV4dGVybiBkb3VibGUgc3RyaWN0X3dv cmRfc2ltaWxhcml0eV90aHJlc2hvbGQ7CiBleHRlcm4gZG91YmxlIGluZGV4X3N0cmF0ZWd5 X2dldF9saW1pdChTdHJhdGVneU51bWJlciBzdHJhdGVneSk7CiBleHRlcm4gdWludDMyIHRy Z20yaW50KHRyZ20gKnB0cik7CiBleHRlcm4gdm9pZCBjb21wYWN0X3RyaWdyYW0odHJnbSAq dHB0ciwgY2hhciAqc3RyLCBpbnQgYnl0ZWxlbik7Ci1leHRlcm4gVFJHTSAqZ2VuZXJhdGVf dHJnbShjaGFyICpzdHIsIGludCBzbGVuKTsKLWV4dGVybiBUUkdNICpnZW5lcmF0ZV93aWxk Y2FyZF90cmdtKGNvbnN0IGNoYXIgKnN0ciwgaW50IHNsZW4pOworZXh0ZXJuIFRSR00gKmdl bmVyYXRlX3RyZ20oY2hhciAqc3RyLCBpbnQgc2xlbiwgT2lkIGNvbGxhdGlvbik7CitleHRl cm4gVFJHTSAqZ2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBz bGVuLCBPaWQgY29sbGF0aW9uKTsKIGV4dGVybiBmbG9hdDQgY250X3NtbChUUkdNICp0cmcx LCBUUkdNICp0cmcyLCBib29sIGluZXhhY3QpOwogZXh0ZXJuIGJvb2wgdHJnbV9jb250YWlu ZWRfYnkoVFJHTSAqdHJnMSwgVFJHTSAqdHJnMik7CiBleHRlcm4gYm9vbCAqdHJnbV9wcmVz ZW5jZV9tYXAoVFJHTSAqcXVlcnksIFRSR00gKmtleSk7CmRpZmYgLS1naXQgYS9jb250cmli L3BnX3RyZ20vdHJnbV9naW4uYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpbi5jCmluZGV4 IDAxNGJiM2M4NDhjLi4xMjVlNzFjYTIzYSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdt L3RyZ21fZ2luLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2luLmMKQEAgLTQyLDcg KzQyLDcgQEAgZ2luX2V4dHJhY3RfdmFsdWVfdHJnbShQR19GVU5DVElPTl9BUkdTKQogCiAJ Km5lbnRyaWVzID0gMDsKIAotCXRyZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlkodmFs KSwgVkFSU0laRV9BTllfRVhIRFIodmFsKSk7CisJdHJnID0gZ2VuZXJhdGVfdHJnbShWQVJE QVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FOWV9FWEhEUih2YWwpLCBQR19HRVRfQ09MTEFUSU9O KCkpOwogCXRyZ2xlbiA9IEFSUk5FTEVNKHRyZyk7CiAKIAlpZiAodHJnbGVuID4gMCkKQEAg LTkzLDcgKzkzLDcgQEAgZ2luX2V4dHJhY3RfcXVlcnlfdHJnbShQR19GVU5DVElPTl9BUkdT KQogCQljYXNlIFdvcmRTaW1pbGFyaXR5U3RyYXRlZ3lOdW1iZXI6CiAJCWNhc2UgU3RyaWN0 V29yZFNpbWlsYXJpdHlTdHJhdGVneU51bWJlcjoKIAkJY2FzZSBFcXVhbFN0cmF0ZWd5TnVt YmVyOgotCQkJdHJnID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpF X0FOWV9FWEhEUih2YWwpKTsKKwkJCXRyZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlko dmFsKSwgVkFSU0laRV9BTllfRVhIRFIodmFsKSwgUEdfR0VUX0NPTExBVElPTigpKTsKIAkJ CWJyZWFrOwogCQljYXNlIElMaWtlU3RyYXRlZ3lOdW1iZXI6CiAjaWZuZGVmIElHTk9SRUNB U0UKQEAgLTEwNyw3ICsxMDcsOCBAQCBnaW5fZXh0cmFjdF9xdWVyeV90cmdtKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCQkgKiBwb3RlbnRpYWxseS1tYXRjaGluZyBzdHJpbmcgbXVzdCBpbmNs dWRlLgogCQkJICovCiAJCQl0cmcgPSBnZW5lcmF0ZV93aWxkY2FyZF90cmdtKFZBUkRBVEFf QU5ZKHZhbCksCi0JCQkJCQkJCQkJIFZBUlNJWkVfQU5ZX0VYSERSKHZhbCkpOworCQkJCQkJ CQkJCSBWQVJTSVpFX0FOWV9FWEhEUih2YWwpLAorCQkJCQkJCQkJCSBQR19HRVRfQ09MTEFU SU9OKCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgUmVnRXhwSUNhc2VTdHJhdGVneU51bWJlcjoK ICNpZm5kZWYgSUdOT1JFQ0FTRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ190cmdtL3RyZ21f Z2lzdC5jIGIvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5jCmluZGV4IDJmMGQ2MTk4NWE1 Li4yMmNjMmE2ZjdiMSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fZ2lzdC5j CisrKyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX2dpc3QuYwpAQCAtMTIzLDcgKzEyMyw3IEBA IGd0cmdtX2NvbXByZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVRSR00JICAgKnJlczsKIAkJ dGV4dAkgICAqdmFsID0gRGF0dW1HZXRUZXh0UFAoZW50cnktPmtleSk7CiAKLQkJcmVzID0g Z2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FOWV9FWEhEUih2YWwp KTsKKwkJcmVzID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWSh2YWwpLCBWQVJTSVpFX0FO WV9FWEhEUih2YWwpLCBQR19HRVRfQ09MTEFUSU9OKCkpOwogCQlyZXR2YWwgPSBwYWxsb2Nf b2JqZWN0KEdJU1RFTlRSWSk7CiAJCWdpc3RlbnRyeWluaXQoKnJldHZhbCwgUG9pbnRlckdl dERhdHVtKHJlcyksCiAJCQkJCSAgZW50cnktPnJlbCwgZW50cnktPnBhZ2UsCkBAIC0yNDIs NyArMjQyLDggQEAgZ3RyZ21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdTKQogCQkJY2Fz ZSBTdHJpY3RXb3JkU2ltaWxhcml0eVN0cmF0ZWd5TnVtYmVyOgogCQkJY2FzZSBFcXVhbFN0 cmF0ZWd5TnVtYmVyOgogCQkJCXF0cmcgPSBnZW5lcmF0ZV90cmdtKFZBUkRBVEEocXVlcnkp LAotCQkJCQkJCQkJIHF1ZXJ5c2l6ZSAtIFZBUkhEUlNaKTsKKwkJCQkJCQkJCSBxdWVyeXNp emUgLSBWQVJIRFJTWiwKKwkJCQkJCQkJCSBQR19HRVRfQ09MTEFUSU9OKCkpOwogCQkJCWJy ZWFrOwogCQkJY2FzZSBJTGlrZVN0cmF0ZWd5TnVtYmVyOgogI2lmbmRlZiBJR05PUkVDQVNF CkBAIC0yNTEsNyArMjUyLDggQEAgZ3RyZ21fY29uc2lzdGVudChQR19GVU5DVElPTl9BUkdT KQogCQkJCS8qIEZBTEwgVEhSVSAqLwogCQkJY2FzZSBMaWtlU3RyYXRlZ3lOdW1iZXI6CiAJ CQkJcXRyZyA9IGdlbmVyYXRlX3dpbGRjYXJkX3RyZ20oVkFSREFUQShxdWVyeSksCi0JCQkJ CQkJCQkJCSAgcXVlcnlzaXplIC0gVkFSSERSU1opOworCQkJCQkJCQkJCQkgIHF1ZXJ5c2l6 ZSAtIFZBUkhEUlNaLAorCQkJCQkJCQkJCQkgIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAJCQkJ YnJlYWs7CiAJCQljYXNlIFJlZ0V4cElDYXNlU3RyYXRlZ3lOdW1iZXI6CiAjaWZuZGVmIElH Tk9SRUNBU0UKQEAgLTQ3NSw3ICs0NzcsNyBAQCBndHJnbV9kaXN0YW5jZShQR19GVU5DVElP Tl9BUkdTKQogCXsKIAkJY2hhcgkgICAqbmV3Y2FjaGU7CiAKLQkJcXRyZyA9IGdlbmVyYXRl X3RyZ20oVkFSREFUQShxdWVyeSksIHF1ZXJ5c2l6ZSAtIFZBUkhEUlNaKTsKKwkJcXRyZyA9 IGdlbmVyYXRlX3RyZ20oVkFSREFUQShxdWVyeSksIHF1ZXJ5c2l6ZSAtIFZBUkhEUlNaLCBQ R19HRVRfQ09MTEFUSU9OKCkpOwogCiAJCW5ld2NhY2hlID0gTWVtb3J5Q29udGV4dEFsbG9j KGZjaW5mby0+ZmxpbmZvLT5mbl9tY3h0LAogCQkJCQkJCQkJICBNQVhBTElHTihxdWVyeXNp emUpICsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfdHJnbS90cmdtX29wLmMgYi9jb250cmli L3BnX3RyZ20vdHJnbV9vcC5jCmluZGV4IDgxMTgyYTE1ZTA3Li5kNGM3NWNhZWZmOSAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ190cmdtL3RyZ21fb3AuYworKysgYi9jb250cmliL3BnX3Ry Z20vdHJnbV9vcC5jCkBAIC0zMjQsNyArMzI0LDcgQEAgbWFrZV90cmlncmFtcyh0cmdtICp0 cHRyLCBjaGFyICpzdHIsIGludCBieXRlbGVuLCBpbnQgY2hhcmxlbikKICAqIFJldHVybnMg bGVuZ3RoIG9mIHRoZSBnZW5lcmF0ZWQgYXJyYXkuCiAgKi8KIHN0YXRpYyBpbnQKLWdlbmVy YXRlX3RyZ21fb25seSh0cmdtICp0cmcsIGNoYXIgKnN0ciwgaW50IHNsZW4sIFRyZ21Cb3Vu ZCAqYm91bmRzKQorZ2VuZXJhdGVfdHJnbV9vbmx5KHRyZ20gKnRyZywgY2hhciAqc3RyLCBp bnQgc2xlbiwgT2lkIGNvbGxhdGlvbiwgVHJnbUJvdW5kICpib3VuZHMpCiB7CiAJdHJnbQkg ICAqdHB0cjsKIAljaGFyCSAgICpidWY7CkBAIC0zNTIsNyArMzUyLDcgQEAgZ2VuZXJhdGVf dHJnbV9vbmx5KHRyZ20gKnRyZywgY2hhciAqc3RyLCBpbnQgc2xlbiwgVHJnbUJvdW5kICpi b3VuZHMpCiAJd2hpbGUgKChid29yZCA9IGZpbmRfd29yZChld29yZCwgc2xlbiAtIChld29y ZCAtIHN0ciksICZld29yZCwgJmNoYXJsZW4pKSAhPSBOVUxMKQogCXsKICNpZmRlZiBJR05P UkVDQVNFCi0JCWJ3b3JkID0gc3RyX3RvbG93ZXIoYndvcmQsIGV3b3JkIC0gYndvcmQsIERF RkFVTFRfQ09MTEFUSU9OX09JRCk7CisJCWJ3b3JkID0gc3RyX3RvbG93ZXIoYndvcmQsIGV3 b3JkIC0gYndvcmQsIGNvbGxhdGlvbik7CiAJCWJ5dGVsZW4gPSBzdHJsZW4oYndvcmQpOwog I2Vsc2UKIAkJYnl0ZWxlbiA9IGV3b3JkIC0gYndvcmQ7CkBAIC00MDUsNyArNDA1LDcgQEAg cHJvdGVjdF9vdXRfb2ZfbWVtKGludCBzbGVuKQogICogUmV0dXJucyB0aGUgc29ydGVkIGFy cmF5IG9mIHVuaXF1ZSB0cmlncmFtcy4KICAqLwogVFJHTSAqCi1nZW5lcmF0ZV90cmdtKGNo YXIgKnN0ciwgaW50IHNsZW4pCitnZW5lcmF0ZV90cmdtKGNoYXIgKnN0ciwgaW50IHNsZW4s IE9pZCBjb2xsYXRpb24pCiB7CiAJVFJHTQkgICAqdHJnOwogCWludAkJCWxlbjsKQEAgLTQx NSw3ICs0MTUsNyBAQCBnZW5lcmF0ZV90cmdtKGNoYXIgKnN0ciwgaW50IHNsZW4pCiAJdHJn ID0gKFRSR00gKikgcGFsbG9jKFRSR01IRFJTSVpFICsgc2l6ZW9mKHRyZ20pICogKHNsZW4g LyAyICsgMSkgKiAzKTsKIAl0cmctPmZsYWcgPSBBUlJLRVk7CiAKLQlsZW4gPSBnZW5lcmF0 ZV90cmdtX29ubHkoR0VUQVJSKHRyZyksIHN0ciwgc2xlbiwgTlVMTCk7CisJbGVuID0gZ2Vu ZXJhdGVfdHJnbV9vbmx5KEdFVEFSUih0cmcpLCBzdHIsIHNsZW4sIGNvbGxhdGlvbiwgTlVM TCk7CiAJU0VUX1ZBUlNJWkUodHJnLCBDQUxDR1RTSVpFKEFSUktFWSwgbGVuKSk7CiAKIAlp ZiAobGVuID09IDApCkBAIC02NzEsNyArNjcxLDcgQEAgaXRlcmF0ZV93b3JkX3NpbWlsYXJp dHkoaW50ICp0cmcyaW5kZXhlcywKICAqLwogc3RhdGljIGZsb2F0NAogY2FsY193b3JkX3Np bWlsYXJpdHkoY2hhciAqc3RyMSwgaW50IHNsZW4xLCBjaGFyICpzdHIyLCBpbnQgc2xlbjIs Ci0JCQkJCSB1aW50OCBmbGFncykKKwkJCQkJIHVpbnQ4IGZsYWdzLCBPaWQgY29sbGF0aW9u KQogewogCWJvb2wJICAgKmZvdW5kOwogCXBvc190cmdtICAgKnB0cmc7CkBAIC02OTcsOCAr Njk3LDggQEAgY2FsY193b3JkX3NpbWlsYXJpdHkoY2hhciAqc3RyMSwgaW50IHNsZW4xLCBj aGFyICpzdHIyLCBpbnQgc2xlbjIsCiAJZWxzZQogCQlib3VuZHMgPSBOVUxMOwogCi0JbGVu MSA9IGdlbmVyYXRlX3RyZ21fb25seSh0cmcxLCBzdHIxLCBzbGVuMSwgTlVMTCk7Ci0JbGVu MiA9IGdlbmVyYXRlX3RyZ21fb25seSh0cmcyLCBzdHIyLCBzbGVuMiwgYm91bmRzKTsKKwls ZW4xID0gZ2VuZXJhdGVfdHJnbV9vbmx5KHRyZzEsIHN0cjEsIHNsZW4xLCBjb2xsYXRpb24s IE5VTEwpOworCWxlbjIgPSBnZW5lcmF0ZV90cmdtX29ubHkodHJnMiwgc3RyMiwgc2xlbjIs IGNvbGxhdGlvbiwgYm91bmRzKTsKIAogCXB0cmcgPSBtYWtlX3Bvc2l0aW9uYWxfdHJnbSh0 cmcxLCBsZW4xLCB0cmcyLCBsZW4yKTsKIAlsZW4gPSBsZW4xICsgbGVuMjsKQEAgLTkxNSw3 ICs5MTUsNyBAQCBnZXRfd2lsZGNhcmRfcGFydChjb25zdCBjaGFyICpzdHIsIGludCBsZW5z dHIsCiAgKiAiIGEiLCAiYmNkIiB3b3VsZCBiZSBleHRyYWN0ZWQuCiAgKi8KIFRSR00gKgot Z2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBzbGVuKQorZ2Vu ZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBzbGVuLCBPaWQgY29s bGF0aW9uKQogewogCVRSR00JICAgKnRyZzsKIAljaGFyCSAgICpidWYsCkBAIC05NDgsNyAr OTQ4LDcgQEAgZ2VuZXJhdGVfd2lsZGNhcmRfdHJnbShjb25zdCBjaGFyICpzdHIsIGludCBz bGVuKQogCQkJCQkJCQkJICBidWYsICZieXRlbGVuLCAmY2hhcmxlbikpICE9IE5VTEwpCiAJ ewogI2lmZGVmIElHTk9SRUNBU0UKLQkJYnVmMiA9IHN0cl90b2xvd2VyKGJ1ZiwgYnl0ZWxl biwgREVGQVVMVF9DT0xMQVRJT05fT0lEKTsKKwkJYnVmMiA9IHN0cl90b2xvd2VyKGJ1Ziwg Ynl0ZWxlbiwgY29sbGF0aW9uKTsKIAkJYnl0ZWxlbiA9IHN0cmxlbihidWYyKTsKICNlbHNl CiAJCWJ1ZjIgPSBidWY7CkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBzaG93X3RyZ20oUEdfRlVO Q1RJT05fQVJHUykKIAl0cmdtCSAgICpwdHI7CiAJaW50CQkJaTsKIAotCXRyZyA9IGdlbmVy YXRlX3RyZ20oVkFSREFUQV9BTlkoaW4pLCBWQVJTSVpFX0FOWV9FWEhEUihpbikpOworCXRy ZyA9IGdlbmVyYXRlX3RyZ20oVkFSREFUQV9BTlkoaW4pLCBWQVJTSVpFX0FOWV9FWEhEUihp biksIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAJZCA9IHBhbGxvY19hcnJheShEYXR1bSwgMSAr IEFSUk5FTEVNKHRyZykpOwogCiAJZm9yIChpID0gMCwgcHRyID0gR0VUQVJSKHRyZyk7IGkg PCBBUlJORUxFTSh0cmcpOyBpKyssIHB0cisrKQpAQCAtMTE3NCw4ICsxMTc0LDggQEAgc2lt aWxhcml0eShQR19GVU5DVElPTl9BUkdTKQogCQkJICAgKnRyZzI7CiAJZmxvYXQ0CQlyZXM7 CiAKLQl0cmcxID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FO WV9FWEhEUihpbjEpKTsKLQl0cmcyID0gZ2VuZXJhdGVfdHJnbShWQVJEQVRBX0FOWShpbjIp LCBWQVJTSVpFX0FOWV9FWEhEUihpbjIpKTsKKwl0cmcxID0gZ2VuZXJhdGVfdHJnbShWQVJE QVRBX0FOWShpbjEpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjEpLCBQR19HRVRfQ09MTEFUSU9O KCkpOworCXRyZzIgPSBnZW5lcmF0ZV90cmdtKFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVf QU5ZX0VYSERSKGluMiksIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAKIAlyZXMgPSBjbnRfc21s KHRyZzEsIHRyZzIsIGZhbHNlKTsKIApAQCAtMTE5Niw3ICsxMTk2LDcgQEAgd29yZF9zaW1p bGFyaXR5KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0 eShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjEpLAogCQkJCQkJCSAg IFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5ZX0VYSERSKGluMiksCi0JCQkJCQkJICAg MCk7CisJCQkJCQkJICAgMCwgUEdfR0VUX0NPTExBVElPTigpKTsKIAogCVBHX0ZSRUVfSUZf Q09QWShpbjEsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpAQCAtMTIxMiw3ICsx MjEyLDcgQEAgc3RyaWN0X3dvcmRfc2ltaWxhcml0eShQR19GVU5DVElPTl9BUkdTKQogCiAJ cmVzID0gY2FsY193b3JkX3NpbWlsYXJpdHkoVkFSREFUQV9BTlkoaW4xKSwgVkFSU0laRV9B TllfRVhIRFIoaW4xKSwKIAkJCQkJCQkgICBWQVJEQVRBX0FOWShpbjIpLCBWQVJTSVpFX0FO WV9FWEhEUihpbjIpLAotCQkJCQkJCSAgIFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QpOworCQkJ CQkJCSAgIFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QsIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAK IAlQR19GUkVFX0lGX0NPUFkoaW4xLCAwKTsKIAlQR19GUkVFX0lGX0NPUFkoaW4yLCAxKTsK QEAgLTEyMjIsOSArMTIyMiwxMCBAQCBzdHJpY3Rfd29yZF9zaW1pbGFyaXR5KFBHX0ZVTkNU SU9OX0FSR1MpCiBEYXR1bQogc2ltaWxhcml0eV9kaXN0KFBHX0ZVTkNUSU9OX0FSR1MpCiB7 Ci0JZmxvYXQ0CQlyZXMgPSBEYXR1bUdldEZsb2F0NChEaXJlY3RGdW5jdGlvbkNhbGwyKHNp bWlsYXJpdHksCi0JCQkJCQkJCQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMCksCi0JCQkJCQkJ CQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMSkpKTsKKwlmbG9hdDQJCXJlcyA9IERhdHVtR2V0 RmxvYXQ0KERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHNpbWlsYXJpdHksCisJCQkJCQkJCQkJ CQkJCQkgUEdfR0VUX0NPTExBVElPTigpLAorCQkJCQkJCQkJCQkJCQkJIFBHX0dFVEFSR19E QVRVTSgwKSwKKwkJCQkJCQkJCQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMSkpKTsKIAogCVBH X1JFVFVSTl9GTE9BVDQoMS4wIC0gcmVzKTsKIH0KQEAgLTEyMzIsOSArMTIzMywxMCBAQCBz aW1pbGFyaXR5X2Rpc3QoUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBzaW1pbGFyaXR5X29w KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0JZmxvYXQ0CQlyZXMgPSBEYXR1bUdldEZsb2F0NChE aXJlY3RGdW5jdGlvbkNhbGwyKHNpbWlsYXJpdHksCi0JCQkJCQkJCQkJCQkJCSBQR19HRVRB UkdfREFUVU0oMCksCi0JCQkJCQkJCQkJCQkJCSBQR19HRVRBUkdfREFUVU0oMSkpKTsKKwlm bG9hdDQJCXJlcyA9IERhdHVtR2V0RmxvYXQ0KERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHNp bWlsYXJpdHksCisJCQkJCQkJCQkJCQkJCQkgUEdfR0VUX0NPTExBVElPTigpLAorCQkJCQkJ CQkJCQkJCQkJIFBHX0dFVEFSR19EQVRVTSgwKSwKKwkJCQkJCQkJCQkJCQkJCSBQR19HRVRB UkdfREFUVU0oMSkpKTsKIAogCVBHX1JFVFVSTl9CT09MKHJlcyA+PSBzaW1pbGFyaXR5X3Ro cmVzaG9sZCk7CiB9CkBAIC0xMjQ4LDcgKzEyNTAsNyBAQCB3b3JkX3NpbWlsYXJpdHlfb3Ao UEdfRlVOQ1RJT05fQVJHUykKIAogCXJlcyA9IGNhbGNfd29yZF9zaW1pbGFyaXR5KFZBUkRB VEFfQU5ZKGluMSksIFZBUlNJWkVfQU5ZX0VYSERSKGluMSksCiAJCQkJCQkJICAgVkFSREFU QV9BTlkoaW4yKSwgVkFSU0laRV9BTllfRVhIRFIoaW4yKSwKLQkJCQkJCQkgICBXT1JEX1NJ TUlMQVJJVFlfQ0hFQ0tfT05MWSk7CisJCQkJCQkJICAgV09SRF9TSU1JTEFSSVRZX0NIRUNL X09OTFksIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAKIAlQR19GUkVFX0lGX0NPUFkoaW4xLCAw KTsKIAlQR19GUkVFX0lGX0NPUFkoaW4yLCAxKTsKQEAgLTEyNjQsNyArMTI2Niw3IEBAIHdv cmRfc2ltaWxhcml0eV9jb21tdXRhdG9yX29wKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXMg PSBjYWxjX3dvcmRfc2ltaWxhcml0eShWQVJEQVRBX0FOWShpbjIpLCBWQVJTSVpFX0FOWV9F WEhEUihpbjIpLAogCQkJCQkJCSAgIFZBUkRBVEFfQU5ZKGluMSksIFZBUlNJWkVfQU5ZX0VY SERSKGluMSksCi0JCQkJCQkJICAgV09SRF9TSU1JTEFSSVRZX0NIRUNLX09OTFkpOworCQkJ CQkJCSAgIFdPUkRfU0lNSUxBUklUWV9DSEVDS19PTkxZLCBQR19HRVRfQ09MTEFUSU9OKCkp OwogCiAJUEdfRlJFRV9JRl9DT1BZKGluMSwgMCk7CiAJUEdfRlJFRV9JRl9DT1BZKGluMiwg MSk7CkBAIC0xMjgwLDcgKzEyODIsNyBAQCB3b3JkX3NpbWlsYXJpdHlfZGlzdF9vcChQR19G VU5DVElPTl9BUkdTKQogCiAJcmVzID0gY2FsY193b3JkX3NpbWlsYXJpdHkoVkFSREFUQV9B TlkoaW4xKSwgVkFSU0laRV9BTllfRVhIRFIoaW4xKSwKIAkJCQkJCQkgICBWQVJEQVRBX0FO WShpbjIpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjIpLAotCQkJCQkJCSAgIDApOworCQkJCQkJ CSAgIDAsIFBHX0dFVF9DT0xMQVRJT04oKSk7CiAKIAlQR19GUkVFX0lGX0NPUFkoaW4xLCAw KTsKIAlQR19GUkVFX0lGX0NPUFkoaW4yLCAxKTsKQEAgLTEyOTYsNyArMTI5OCw3IEBAIHdv cmRfc2ltaWxhcml0eV9kaXN0X2NvbW11dGF0b3Jfb3AoUEdfRlVOQ1RJT05fQVJHUykKIAog CXJlcyA9IGNhbGNfd29yZF9zaW1pbGFyaXR5KFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVf QU5ZX0VYSERSKGluMiksCiAJCQkJCQkJICAgVkFSREFUQV9BTlkoaW4xKSwgVkFSU0laRV9B TllfRVhIRFIoaW4xKSwKLQkJCQkJCQkgICAwKTsKKwkJCQkJCQkgICAwLCBQR19HRVRfQ09M TEFUSU9OKCkpOwogCiAJUEdfRlJFRV9JRl9DT1BZKGluMSwgMCk7CiAJUEdfRlJFRV9JRl9D T1BZKGluMiwgMSk7CkBAIC0xMzEyLDcgKzEzMTQsOCBAQCBzdHJpY3Rfd29yZF9zaW1pbGFy aXR5X29wKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlyZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0 eShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjEpLAogCQkJCQkJCSAg IFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5ZX0VYSERSKGluMiksCi0JCQkJCQkJICAg V09SRF9TSU1JTEFSSVRZX0NIRUNLX09OTFkgfCBXT1JEX1NJTUlMQVJJVFlfU1RSSUNUKTsK KwkJCQkJCQkgICBXT1JEX1NJTUlMQVJJVFlfQ0hFQ0tfT05MWSB8IFdPUkRfU0lNSUxBUklU WV9TVFJJQ1QsCisJCQkJCQkJICAgUEdfR0VUX0NPTExBVElPTigpKTsKIAogCVBHX0ZSRUVf SUZfQ09QWShpbjEsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpAQCAtMTMyOCw3 ICsxMzMxLDggQEAgc3RyaWN0X3dvcmRfc2ltaWxhcml0eV9jb21tdXRhdG9yX29wKFBHX0ZV TkNUSU9OX0FSR1MpCiAKIAlyZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0eShWQVJEQVRBX0FO WShpbjIpLCBWQVJTSVpFX0FOWV9FWEhEUihpbjIpLAogCQkJCQkJCSAgIFZBUkRBVEFfQU5Z KGluMSksIFZBUlNJWkVfQU5ZX0VYSERSKGluMSksCi0JCQkJCQkJICAgV09SRF9TSU1JTEFS SVRZX0NIRUNLX09OTFkgfCBXT1JEX1NJTUlMQVJJVFlfU1RSSUNUKTsKKwkJCQkJCQkgICBX T1JEX1NJTUlMQVJJVFlfQ0hFQ0tfT05MWSB8IFdPUkRfU0lNSUxBUklUWV9TVFJJQ1QsCisJ CQkJCQkJICAgUEdfR0VUX0NPTExBVElPTigpKTsKIAogCVBHX0ZSRUVfSUZfQ09QWShpbjEs IDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpAQCAtMTM0NCw3ICsxMzQ4LDcgQEAg c3RyaWN0X3dvcmRfc2ltaWxhcml0eV9kaXN0X29wKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAly ZXMgPSBjYWxjX3dvcmRfc2ltaWxhcml0eShWQVJEQVRBX0FOWShpbjEpLCBWQVJTSVpFX0FO WV9FWEhEUihpbjEpLAogCQkJCQkJCSAgIFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5Z X0VYSERSKGluMiksCi0JCQkJCQkJICAgV09SRF9TSU1JTEFSSVRZX1NUUklDVCk7CisJCQkJ CQkJICAgV09SRF9TSU1JTEFSSVRZX1NUUklDVCwgUEdfR0VUX0NPTExBVElPTigpKTsKIAog CVBHX0ZSRUVfSUZfQ09QWShpbjEsIDApOwogCVBHX0ZSRUVfSUZfQ09QWShpbjIsIDEpOwpA QCAtMTM2MCw3ICsxMzY0LDcgQEAgc3RyaWN0X3dvcmRfc2ltaWxhcml0eV9kaXN0X2NvbW11 dGF0b3Jfb3AoUEdfRlVOQ1RJT05fQVJHUykKIAogCXJlcyA9IGNhbGNfd29yZF9zaW1pbGFy aXR5KFZBUkRBVEFfQU5ZKGluMiksIFZBUlNJWkVfQU5ZX0VYSERSKGluMiksCiAJCQkJCQkJ ICAgVkFSREFUQV9BTlkoaW4xKSwgVkFSU0laRV9BTllfRVhIRFIoaW4xKSwKLQkJCQkJCQkg ICBXT1JEX1NJTUlMQVJJVFlfU1RSSUNUKTsKKwkJCQkJCQkgICBXT1JEX1NJTUlMQVJJVFlf U1RSSUNULCBQR19HRVRfQ09MTEFUSU9OKCkpOwogCiAJUEdfRlJFRV9JRl9DT1BZKGluMSwg MCk7CiAJUEdfRlJFRV9JRl9DT1BZKGluMiwgMSk7CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3RyZ20vdHJnbV9yZWdleHAuYyBiL2NvbnRyaWIvcGdfdHJnbS90cmdtX3JlZ2V4cC5jCmlu ZGV4IDFkMWI1ZmUzMDRkLi5jZGQwNGZhMDFhZCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ190 cmdtL3RyZ21fcmVnZXhwLmMKKysrIGIvY29udHJpYi9wZ190cmdtL3RyZ21fcmVnZXhwLmMK QEAgLTQ3OSwxMSArNDc5LDExIEBAIHR5cGVkZWYgc3RydWN0CiAKIC8qIHByb3RvdHlwZXMg Zm9yIHByaXZhdGUgZnVuY3Rpb25zICovCiBzdGF0aWMgVFJHTSAqY3JlYXRlVHJnbU5GQUlu dGVybmFsKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtUGFja2VkR3JhcGggKipncmFwaCwKLQkJCQkJ CQkJICAgTWVtb3J5Q29udGV4dCByY29udGV4dCk7CisJCQkJCQkJCSAgIE1lbW9yeUNvbnRl eHQgcmNvbnRleHQsIE9pZCBjb2xsYXRpb24pOwogc3RhdGljIHZvaWQgUkVfY29tcGlsZShy ZWdleF90ICpyZWdleCwgdGV4dCAqdGV4dF9yZSwKIAkJCQkJICAgaW50IGNmbGFncywgT2lk IGNvbGxhdGlvbik7Ci1zdGF0aWMgdm9pZCBnZXRDb2xvckluZm8ocmVnZXhfdCAqcmVnZXgs IFRyZ21ORkEgKnRyZ21ORkEpOwotc3RhdGljIGJvb2wgY29udmVydFBnV2NoYXIocGdfd2No YXIgYywgdHJnbV9tYl9jaGFyICpyZXN1bHQpOworc3RhdGljIHZvaWQgZ2V0Q29sb3JJbmZv KHJlZ2V4X3QgKnJlZ2V4LCBUcmdtTkZBICp0cmdtTkZBLCBPaWQgY29sbGF0aW9uKTsKK3N0 YXRpYyBib29sIGNvbnZlcnRQZ1djaGFyKHBnX3djaGFyIGMsIHRyZ21fbWJfY2hhciAqcmVz dWx0LCBPaWQgY29sbGF0aW9uKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUdyYXBoKFRyZ21O RkEgKnRyZ21ORkEpOwogc3RhdGljIHZvaWQgcHJvY2Vzc1N0YXRlKFRyZ21ORkEgKnRyZ21O RkEsIFRyZ21TdGF0ZSAqc3RhdGUpOwogc3RhdGljIHZvaWQgYWRkS2V5KFRyZ21ORkEgKnRy Z21ORkEsIFRyZ21TdGF0ZSAqc3RhdGUsIFRyZ21TdGF0ZUtleSAqa2V5KTsKQEAgLTU1MSw3 ICs1NTEsNyBAQCBjcmVhdGVUcmdtTkZBKHRleHQgKnRleHRfcmUsIE9pZCBjb2xsYXRpb24s CiAJCQkgICBSRUdfQURWQU5DRUQgfCBSRUdfTk9TVUIsIGNvbGxhdGlvbik7CiAjZW5kaWYK IAotCXRyZyA9IGNyZWF0ZVRyZ21ORkFJbnRlcm5hbCgmcmVnZXgsIGdyYXBoLCByY29udGV4 dCk7CisJdHJnID0gY3JlYXRlVHJnbU5GQUludGVybmFsKCZyZWdleCwgZ3JhcGgsIHJjb250 ZXh0LCBjb2xsYXRpb24pOwogCiAJLyogQ2xlYW4gdXAgYWxsIHRoZSBjcnVmdCB3ZSBjcmVh dGVkIChpbmNsdWRpbmcgcmVnZXgpICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOwpAQCAtNTY1LDcgKzU2NSw3IEBAIGNyZWF0ZVRyZ21ORkEodGV4dCAqdGV4dF9y ZSwgT2lkIGNvbGxhdGlvbiwKICAqLwogc3RhdGljIFRSR00gKgogY3JlYXRlVHJnbU5GQUlu dGVybmFsKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtUGFja2VkR3JhcGggKipncmFwaCwKLQkJCQkJ ICBNZW1vcnlDb250ZXh0IHJjb250ZXh0KQorCQkJCQkgIE1lbW9yeUNvbnRleHQgcmNvbnRl eHQsIE9pZCBjb2xsYXRpb24pCiB7CiAJVFJHTQkgICAqdHJnOwogCVRyZ21ORkEJCXRyZ21O RkE7CkBAIC01NzMsNyArNTczLDcgQEAgY3JlYXRlVHJnbU5GQUludGVybmFsKHJlZ2V4X3Qg KnJlZ2V4LCBUcmdtUGFja2VkR3JhcGggKipncmFwaCwKIAl0cmdtTkZBLnJlZ2V4ID0gcmVn ZXg7CiAKIAkvKiBDb2xsZWN0IGNvbG9yIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlZ2V4ICov Ci0JZ2V0Q29sb3JJbmZvKHJlZ2V4LCAmdHJnbU5GQSk7CisJZ2V0Q29sb3JJbmZvKHJlZ2V4 LCAmdHJnbU5GQSwgY29sbGF0aW9uKTsKIAogI2lmZGVmIFRSR01fUkVHRVhQX0RFQlVHCiAJ cHJpbnRTb3VyY2VORkEocmVnZXgsIHRyZ21ORkEuY29sb3JJbmZvLCB0cmdtTkZBLm5jb2xv cnMpOwpAQCAtNzYyLDcgKzc2Miw3IEBAIFJFX2NvbXBpbGUocmVnZXhfdCAqcmVnZXgsIHRl eHQgKnRleHRfcmUsIGludCBjZmxhZ3MsIE9pZCBjb2xsYXRpb24pCiAgKiBGaWxsIFRyZ21D b2xvckluZm8gc3RydWN0dXJlIGZvciBlYWNoIGNvbG9yIHVzaW5nIHJlZ2V4IGV4cG9ydCBm dW5jdGlvbnMuCiAgKi8KIHN0YXRpYyB2b2lkCi1nZXRDb2xvckluZm8ocmVnZXhfdCAqcmVn ZXgsIFRyZ21ORkEgKnRyZ21ORkEpCitnZXRDb2xvckluZm8ocmVnZXhfdCAqcmVnZXgsIFRy Z21ORkEgKnRyZ21ORkEsIE9pZCBjb2xsYXRpb24pCiB7CiAJaW50CQkJY29sb3JzQ291bnQg PSBwZ19yZWdfZ2V0bnVtY29sb3JzKHJlZ2V4KTsKIAlpbnQJCQlpOwpAQCAtODA4LDcgKzgw OCw3IEBAIGdldENvbG9ySW5mbyhyZWdleF90ICpyZWdleCwgVHJnbU5GQSAqdHJnbU5GQSkK IAkJewogCQkJdHJnbV9tYl9jaGFyIGM7CiAKLQkJCWlmICghY29udmVydFBnV2NoYXIoY2hh cnNbal0sICZjKSkKKwkJCWlmICghY29udmVydFBnV2NoYXIoY2hhcnNbal0sICZjLCBjb2xs YXRpb24pKQogCQkJCWNvbnRpbnVlOwkJLyogb2sgdG8gaWdub3JlIGl0IGFsdG9nZXRoZXIg Ki8KIAkJCWlmIChJU1dPUkRDSFIoYy5ieXRlcykpCiAJCQkJY29sb3JJbmZvLT53b3JkQ2hh cnNbY29sb3JJbmZvLT53b3JkQ2hhcnNDb3VudCsrXSA9IGM7CkBAIC04MjUsNyArODI1LDcg QEAgZ2V0Q29sb3JJbmZvKHJlZ2V4X3QgKnJlZ2V4LCBUcmdtTkZBICp0cmdtTkZBKQogICog UmV0dXJucyBmYWxzZSBpZiB0aGUgY2hhcmFjdGVyIHNob3VsZCBiZSBpZ25vcmVkIGNvbXBs ZXRlbHkuCiAgKi8KIHN0YXRpYyBib29sCi1jb252ZXJ0UGdXY2hhcihwZ193Y2hhciBjLCB0 cmdtX21iX2NoYXIgKnJlc3VsdCkKK2NvbnZlcnRQZ1djaGFyKHBnX3djaGFyIGMsIHRyZ21f bWJfY2hhciAqcmVzdWx0LCBPaWQgY29sbGF0aW9uKQogewogCS8qICJzIiBoYXMgZW5vdWdo IHNwYWNlIGZvciBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIgYW5kIGEgdHJhaWxpbmcgTlVMICov CiAJY2hhcgkJc1tNQVhfTVVMVElCWVRFX0NIQVJfTEVOICsgMV07CkBAIC04NTcsNyArODU3 LDcgQEAgY29udmVydFBnV2NoYXIocGdfd2NoYXIgYywgdHJnbV9tYl9jaGFyICpyZXN1bHQp CiAJICovCiAjaWZkZWYgSUdOT1JFQ0FTRQogCXsKLQkJY2hhcgkgICAqbG93ZXJDYXNlZCA9 IHN0cl90b2xvd2VyKHMsIHN0cmxlbihzKSwgREVGQVVMVF9DT0xMQVRJT05fT0lEKTsKKwkJ Y2hhcgkgICAqbG93ZXJDYXNlZCA9IHN0cl90b2xvd2VyKHMsIHN0cmxlbihzKSwgY29sbGF0 aW9uKTsKIAogCQlpZiAoc3RyY21wKGxvd2VyQ2FzZWQsIHMpICE9IDApCiAJCXsKLS0gCjIu NTEuMAoK --------------U8GM6FQngSqiLR6GYsp2t6Nf--