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 1w3ZUk-001M7T-2W for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 13:02: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 1w3ZUj-0061ex-0p for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Mar 2026 13:02: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 1w3ZUi-0061ep-29 for pgsql-hackers@lists.postgresql.org; Fri, 20 Mar 2026 13:02:29 +0000 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w3ZUg-00000000AVh-0gLh for pgsql-hackers@postgresql.org; Fri, 20 Mar 2026 13:02:28 +0000 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-4138136f02eso1430391fac.2 for ; Fri, 20 Mar 2026 06:02:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774011745; cv=none; d=google.com; s=arc-20240605; b=gWr6IaN/1OZoz8gxBkc0NJoI5SZWeGnFwFxQJsYoiM/xIa4Wb1xJB7qdSZQxMdxTXU TueWTs4bIhXgpc4Y9Rn4SILIFCVFqeRgUafxze7z6YDFBv/DqJobyvmyLiHEomcE0n78 3D0Cyew7XyV/AGIqQuVnptrhnNz/CQToRfT27+cWfFgyq7hwnNCo9SkCoN1wb5sZiFFF VyPdmWnvUGaPUBSmIFKqEbFD2ZEpclZECKoSHXYv5MzK8yVRrK9Q4trDkA4cUeN55a/T SYW7HkOeg9ambzKKuCNP6aj7gbzn3f7b+XZ3x9uS6Kl1zCtbFfpwlxW5Udk+zRYqnm0U OEeA== 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=yHc3sg8TZSvcBYTGEmHa7BQV5j21WNmuHnsD3Fw4FHQ=; fh=Dhf2rJcbgZBNcYgx9IOb9KBLmTir1QBgU/G53kjGFLI=; b=V3TSK3r4wk+jfPeRbPB0BMIHoNftRnSEFmu/g9BaxQMlJDitHTVwPWTFTHV+/RBGQK rwP3VdcSl+DtOZoFFcfIlrV4qt/f5Hsca2ePZBPoNJ8D6qEY/vzK5YqlijSRh7M2HkeF A9gGKfAuswuWEdk5LZAahQxuPlb3sPTiR8v68HXSChQX04uuU6atTNfkC5L4Ellr+yVc qe4+rATYTLW4PWkIAjyBIyyJcJi9IZ66cIAxfeXwo6TKRJWik+MY4C5KkPp+qFFvetNv 1faweYNGdE4GqSAuFky3ZrS9TtItWZ4PdTmmcYYANjoTC5rWxgMrWqGafrWKwWw0FzCO Rmfg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1774011745; x=1774616545; darn=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=yHc3sg8TZSvcBYTGEmHa7BQV5j21WNmuHnsD3Fw4FHQ=; b=Rs41+aR7SbpVfWMIKB+eFrcwXZfF/tHHb+dxIawmE2eVcUS11c/brCXjKpiBaG6cCY O/sCt8WP2pAFzKqXkKEQFChTjp+zCyav9Nb0diGmAkl4GPhsdwXja4exO9YwrNavRcWn Iq73x5VYh/2J4euU69ZwN3iwE0toeupFJ27bCIvBImGFMTKISPc1JOzlOPHiSmOJhIyP R6FPDo819ZcqdQoPjIav/Bpczib9Rq3xfcQevDh4GeqNELt5sg+3cDB/9INOhh6babw+ K9vmuDObYWH5FXm0bewwEF8VpCrXLMnXbClqcvrSlPwA9DzzV3F4J1L6riIAB5fE2tHu clHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774011745; x=1774616545; 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=yHc3sg8TZSvcBYTGEmHa7BQV5j21WNmuHnsD3Fw4FHQ=; b=La9JqXTND4BiVCr6CAOME7n8NyWinTPFahRhe36USk4fkJngJRjDjSBEt0O8Y7LDpU WRR/dchSfMgWFrK14HqG0bhcAEbE5wJV4shy9090X9Q88ChBUHE6gZVy8DOG9i8bfams NR7YxupKhw1JXE9R9nsjFn3HlGehojYb0lN8aI5ml5LAKzI3nXnyKInuPjBgKOzGpg33 n3lQgBALj3LIbmA0CnmbFec3LXtB1Nb0QQLI07AwyFEM9d3T7tbPG3BDRy1ReUMlf/1U M5dYILBHWEaRt0suXZ1YzeyHDbeuBohGhZGwxxcW72QZe2DhKxAdgy3ri2ia6Cj3long JtnA== X-Gm-Message-State: AOJu0YzXn9+s5fTXIvzuQ6U3D3TW3QPxgDExQuI+R9FTVQTI/nW13pqW nF1blJ7hDa5J0ANbDWiA4AMTKHfyUXqGUcWyKYqFgUF2t0ghAL0+g45+0sZv8a/vXJmTC6MipSp W2BT0nXR/yfbbzdIyo9ktosxbWIaM78eHFA7LuUkf/9a9QIZMy5RtljQ= X-Gm-Gg: ATEYQzwDHLj0mqdxW4SuN9XQH93sl6hICvuJr0W40MHbvqZoFdgM1rZWg4FUGrHcPrS zT0ZT6soRw313cPnmgpniJPmhAN33tpGVdf9ShjKt9U+8IPjKqAyy/vYprPZIliUqaPSXu4+GIA 3eMbiKLrcQVqZreTmyE8sC+hX6SWqKJDeM/g3vghVDXsyTTg71jt7aPjHg5ZrnxHUz9GNvEVopp gpf/9ix8kMf1tKOlp+I4u5xFTA8aYDm5OnbqoCSFwEAXTZZ7TmiHk3Yt6x26ij2TVVoy1udPy6W AgzIuWeuoDGZBwi8xh6VzDtU84Qr9EgoTAG09jrIaVbdbW+1cDeHxRRwh41tVT1D92q0wA== X-Received: by 2002:a05:6870:a787:b0:417:4d3:1751 with SMTP id 586e51a60fabf-41c112de838mr1703370fac.51.1774011744633; Fri, 20 Mar 2026 06:02:24 -0700 (PDT) MIME-Version: 1.0 References: <1791665551.452444.1761209220211.ref@mail.yahoo.com> <1895971769.8343.1761240853939@mail.yahoo.com> <574624399.175025.1761290201491@mail.yahoo.com> <953203149.383019.1761345585325@mail.yahoo.com> <6F76FA61-E2DC-44EF-9504-889D9BDB4EBD@yandex-team.ru> <1154454839.957923.1761604611424@mail.yahoo.com> <87ldkv8cog.fsf@wibble.ilmari.org> <87ikfz7zcu.fsf@wibble.ilmari.org> <9CB824CC-70DC-4165-AC6A-9664F47209EE@yandex-team.ru> <878qbn51kb.fsf@wibble.ilmari.org> In-Reply-To: From: Aleksander Alekseev Date: Fri, 20 Mar 2026 16:02:10 +0300 X-Gm-Features: AaiRm51yXvhlbJEm3OfuPj2l7pdpLZZI6lvIKlaFXas0TtTL0sCPI1b_RpJxrcg Message-ID: Subject: Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions To: pgsql-hackers Cc: Masahiko Sawada , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= , Andrey Borodin Content-Type: multipart/mixed; boundary="000000000000ddf5ae064d744b20" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ddf5ae064d744b20 Content-Type: text/plain; charset="UTF-8" Hi, > Also, a small nitpick is that we can use uint32 instead of uint64 for > 'bits_buffer'. I've attached the updated patch as well as the > difference from the previous version. Then I suggest using uint32 for the bits_buffer variable in base32hex_encode() too. Also we should use 1U instead of 1ULL with uint32. -- Best regards, Aleksander Alekseev --000000000000ddf5ae064d744b20 Content-Type: text/x-patch; charset="UTF-8"; name="v9-0001-Add-base32hex-support-to-encode-and-decode-functi.patch" Content-Disposition: attachment; filename="v9-0001-Add-base32hex-support-to-encode-and-decode-functi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmywqucx0 RnJvbSAwMjc1ODI5N2NhZjEwMjJjM2YwNzgzOGIzMjIxMTMyMzhjMmVhYTkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFdlZCwgMjkgT2N0IDIwMjUgMTU6NTM6MTIgKzA0MDAKU3ViamVjdDogW1BBVENIIHY5XSBB ZGQgYmFzZTMyaGV4IHN1cHBvcnQgdG8gZW5jb2RlKCkgYW5kIGRlY29kZSgpIGZ1bmN0aW9ucy4K TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgYWRkcyBzdXBwb3J0IGZvciBi YXNlMzJoZXggZW5jb2RpbmcgYW5kIGRlY29kaW5nLCBhcyBkZWZpbmVkIGluClJGQyA0NjQ4IFNl Y3Rpb24gNy4gVW5saWtlIHN0YW5kYXJkIGJhc2UzMiwgYmFzZTMyaGV4IHVzZXMgdGhlCmV4dGVu ZGVkIGhleCBhbHBoYWJldCAoMC05LCBBLVYpIHdoaWNoIHByZXNlcnZlcyB0aGUgbGV4aWNvZ3Jh cGhpY2FsCm9yZGVyIG9mIHRoZSBlbmNvZGVkIGRhdGEuCgpUaGlzIGlzIHBhcnRpY3VsYXJseSB1 c2VmdWwgZm9yIHJlcHJlc2VudGluZyBVVUlEdjcgdmFsdWVzIGluIGEKY29tcGFjdCBzdHJpbmcg Zm9ybWF0IHdoaWxlIG1haW50YWluaW5nIHRoZWlyIHRpbWUtb3JkZXJlZCBzb3J0CnByb3BlcnR5 LgoKVGhlIGVuY29kZSgpIGZ1bmN0aW9uIHByb2R1Y2VzIG91dHB1dCBwYWRkZWQgd2l0aCAnPScs IHdoaWxlIGRlY29kZSgpCmFjY2VwdHMgYm90aCBwYWRkZWQgYW5kIHVucGFkZGVkIGlucHV0LiBG b2xsb3dpbmcgdGhlIGJlaGF2aW9yIG9mCm90aGVyIGVuY29kaW5nIHR5cGVzLCBkZWNvZGluZyBp cyBjYXNlLWluc2Vuc2l0aXZlLgoKU3VnZ2VzdGVkLWJ5OiBTZXJnZXkgUHJva2hvcmVua28gPHNl cmdleXByb2tob3JlbmtvQHlhaG9vLmNvbS5hdT4KQXV0aG9yOiBBbmRyZXkgQm9yb2RpbiA8eDRt bW1AeWFuZGV4LXRlYW0ucnU+CkNvLWF1dGhvcmVkLWJ5OiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxh bGVrc2FuZGVyQHRpZ2VyZGF0YS5jb20+ClJldmlld2VkLWJ5OiBNYXNhaGlrbyBTYXdhZGEgPHNh d2FkYS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6INCY0LvRjNGPINCn0LXRgNC00LDQutC+ 0LIgPGkuY2hlcmRha292LnBnQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQUo3YzZUT3JhbXIxVVRMY3lCMTI4TFdNcWl0YTFZNyUzRGFycTNLSGFVJTNEcWlrZjV5 S09RJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWJpbmFyeXN0 cmluZy5zZ21sIHwgIDI3ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYyAgICAg ICAgICAgfCAxNTMgKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3RyaW5ncy5vdXQgICAgfCAxMTkgKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0ICAgICAgIHwgIDE2ICsrKwogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3RyaW5ncy5zcWwgICAgICAgICB8ICAzMSArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvdXVpZC5zcWwgICAgICAgICAgICB8ICAgOSArKwogNiBmaWxlcyBjaGFuZ2VkLCAzNDcgaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVu Yy9mdW5jLWJpbmFyeXN0cmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1iaW5hcnlz dHJpbmcuc2dtbAppbmRleCBiMjU2MzgxZTAxZi4uM2Y3N2Y2ZDIwYjAgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2Z1bmMvZnVuYy1iaW5hcnlzdHJpbmcuc2dtbApAQCAtNzI5LDYgKzcyOSw3IEBACiAgICAgICAg PHBhcmFtZXRlcj5mb3JtYXQ8L3BhcmFtZXRlcj4gdmFsdWVzIGFyZToKICAgICAgICA8bGluayBs aW5rZW5kPSJlbmNvZGUtZm9ybWF0LWJhc2U2NCI+PGxpdGVyYWw+YmFzZTY0PC9saXRlcmFsPjwv bGluaz4sCiAgICAgICAgPGxpbmsgbGlua2VuZD0iZW5jb2RlLWZvcm1hdC1iYXNlNjR1cmwiPjxs aXRlcmFsPmJhc2U2NHVybDwvbGl0ZXJhbD48L2xpbms+LAorICAgICAgIDxsaW5rIGxpbmtlbmQ9 ImVuY29kZS1mb3JtYXQtYmFzZTMyaGV4Ij48bGl0ZXJhbD5iYXNlMzJoZXg8L2xpdGVyYWw+PC9s aW5rPiwKICAgICAgICA8bGluayBsaW5rZW5kPSJlbmNvZGUtZm9ybWF0LWVzY2FwZSI+PGxpdGVy YWw+ZXNjYXBlPC9saXRlcmFsPjwvbGluaz4sCiAgICAgICAgPGxpbmsgbGlua2VuZD0iZW5jb2Rl LWZvcm1hdC1oZXgiPjxsaXRlcmFsPmhleDwvbGl0ZXJhbD48L2xpbms+LgogICAgICAgPC9wYXJh PgpAQCAtODA0LDYgKzgwNSwzMiBAQAogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVu dHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeSBpZD0iZW5jb2RlLWZvcm1hdC1iYXNlMzJoZXgiPgor ICAgICA8dGVybT5iYXNlMzJoZXgKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+ YmFzZTMyaGV4IGZvcm1hdDwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPjwvdGVybT4KKyAg ICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIDxsaXRlcmFsPmJhc2UzMmhl eDwvbGl0ZXJhbD4gZm9ybWF0IGlzIHRoYXQgb2YKKyAgICAgICA8dWxpbmsgdXJsPSJodHRwczov L2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzQ2NDgjc2VjdGlvbi03Ij4KKyAgICAg ICBSRkMgNDY0OCBTZWN0aW9uIDc8L3VsaW5rPi4gIEl0IHVzZXMgdGhlIGV4dGVuZGVkIGhleCBh bHBoYWJldAorICAgICAgICg8bGl0ZXJhbD4wPC9saXRlcmFsPi08bGl0ZXJhbD45PC9saXRlcmFs PiBhbmQKKyAgICAgICA8bGl0ZXJhbD5BPC9saXRlcmFsPi08bGl0ZXJhbD5WPC9saXRlcmFsPikg d2hpY2ggcHJlc2VydmVzIHRoZSBsZXhpY29ncmFwaGljYWwKKyAgICAgICBzb3J0IG9yZGVyIG9m IHRoZSBlbmNvZGVkIGRhdGEuIFRoZSA8ZnVuY3Rpb24+ZW5jb2RlPC9mdW5jdGlvbj4gZnVuY3Rp b24KKyAgICAgICBwcm9kdWNlcyBvdXRwdXQgcGFkZGVkIHdpdGggPGxpdGVyYWw+Jz0nPC9saXRl cmFsPiwgd2hpbGUgPGZ1bmN0aW9uPmRlY29kZTwvZnVuY3Rpb24+CisgICAgICAgYWNjZXB0cyBi b3RoIHBhZGRlZCBhbmQgdW5wYWRkZWQgaW5wdXQuIERlY29kaW5nIGlzIGNhc2UtaW5zZW5zaXRp dmUgYW5kIGlnbm9yZXMKKyAgICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZvcm1hdCBpcyB1c2VmdWwgZm9yIGVuY29k aW5nIFVVSURzIGluIGEgY29tcGFjdCwgc29ydGFibGUgZm9ybWF0OgorICAgICAgIDxsaXRlcmFs PnN1YnN0cmluZyhlbmNvZGUodXVpZF92YWx1ZTo6Ynl0ZWEsICdiYXNlMzJoZXgnKSBGUk9NIDEg Rk9SIDI2KTwvbGl0ZXJhbD4KKyAgICAgICBwcm9kdWNlcyBhIDI2LWNoYXJhY3RlciBzdHJpbmcg Y29tcGFyZWQgdG8gdGhlIHN0YW5kYXJkIDM2LWNoYXJhY3RlcgorICAgICAgIFVVSUQgcmVwcmVz ZW50YXRpb24uCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0 ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJlbmNvZGUtZm9ybWF0LWVzY2FwZSI+CiAg ICAgIDx0ZXJtPmVzY2FwZQogICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2VuY29kZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2VuY29kZS5jCmlu ZGV4IGY1ZjgzNWU5NDRhLi4zMzRmYTA4MGI5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2VuY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9lbmNvZGUuYwpAQCAt NjUsOCArNjUsOCBAQCBiaW5hcnlfZW5jb2RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJ CQkJIGVycm1zZygidW5yZWNvZ25pemVkIGVuY29kaW5nOiBcIiVzXCIiLCBuYW1lYnVmKSwKLQkJ CQkgZXJyaGludCgiVmFsaWQgZW5jb2RpbmdzIGFyZSBcIiVzXCIsIFwiJXNcIiwgXCIlc1wiLCBh bmQgXCIlc1wiLiIsCi0JCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgImhl eCIpKSk7CisJCQkJIGVycmhpbnQoIlZhbGlkIGVuY29kaW5ncyBhcmUgXCIlc1wiLCBcIiVzXCIs IFwiJXNcIiwgXCIlc1wiLCBhbmQgXCIlc1wiLiIsCisJCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1 cmwiLCAiYmFzZTMyaGV4IiwgImVzY2FwZSIsICJoZXgiKSkpOwogCiAJZGF0YXB0ciA9IFZBUkRB VEFfQU5ZKGRhdGEpOwogCWRhdGFsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihkYXRhKTsKQEAgLTEx NSw4ICsxMTUsOCBAQCBiaW5hcnlfZGVjb2RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJ CQkJIGVycm1zZygidW5yZWNvZ25pemVkIGVuY29kaW5nOiBcIiVzXCIiLCBuYW1lYnVmKSwKLQkJ CQkgZXJyaGludCgiVmFsaWQgZW5jb2RpbmdzIGFyZSBcIiVzXCIsIFwiJXNcIiwgXCIlc1wiLCBh bmQgXCIlc1wiLiIsCi0JCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgImhl eCIpKSk7CisJCQkJIGVycmhpbnQoIlZhbGlkIGVuY29kaW5ncyBhcmUgXCIlc1wiLCBcIiVzXCIs IFwiJXNcIiwgXCIlc1wiLCBhbmQgXCIlc1wiLiIsCisJCQkJCQkgImJhc2U2NCIsICJiYXNlNjR1 cmwiLCAiYmFzZTMyaGV4IiwgImVzY2FwZSIsICJoZXgiKSkpOwogCiAJZGF0YXB0ciA9IFZBUkRB VEFfQU5ZKGRhdGEpOwogCWRhdGFsZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihkYXRhKTsKQEAgLTgy NSw2ICs4MjUsMTQ1IEBAIGVzY19kZWNfbGVuKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xl bikKIAlyZXR1cm4gbGVuOwogfQogCisvKgorICogQkFTRTMySEVYCisgKi8KKworc3RhdGljIGNv bnN0IGNoYXIgYmFzZTMyaGV4X3RhYmxlW10gPSAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BR UlNUVVYiOworCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhfZW5jX2xlbihjb25zdCBjaGFyICpz cmMsIHNpemVfdCBzcmNsZW4pCit7CisJLyogNSBieXRlcyBlbmNvZGUgdG8gOCBjaGFyYWN0ZXJz LCByb3VuZCB1cCB0byBtdWx0aXBsZSBvZiA4IGZvciBwYWRkaW5nICovCisJcmV0dXJuICgodWlu dDY0KSBzcmNsZW4gKyA0KSAvIDUgKiA4OworfQorCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhf ZGVjX2xlbihjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzcmNsZW4pCit7CisJLyogRGVjb2RlIGxl bmd0aCBpcyAoc3JjbGVuICogNSkgLyA4LCBidXQgd2UgbWF5IGhhdmUgcGFkZGluZyAqLworCXJl dHVybiAoKHVpbnQ2NCkgc3JjbGVuICogNSkgLyA4OworfQorCitzdGF0aWMgdWludDY0CitiYXNl MzJoZXhfZW5jb2RlKGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwgY2hhciAqZHN0KQor eworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBz cmM7CisJdWludDMyCQliaXRzX2J1ZmZlciA9IDA7CisJaW50CQkJYml0c19pbl9idWZmZXIgPSAw OworCXVpbnQ2NAkJb3V0cHV0X3BvcyA9IDA7CisJc2l6ZV90CQlpOworCisJZm9yIChpID0gMDsg aSA8IHNyY2xlbjsgaSsrKQorCXsKKwkJLyogQWRkIDggYml0cyB0byB0aGUgYnVmZmVyICovCisJ CWJpdHNfYnVmZmVyID0gKGJpdHNfYnVmZmVyIDw8IDgpIHwgZGF0YVtpXTsKKwkJYml0c19pbl9i dWZmZXIgKz0gODsKKworCQkvKiBFeHRyYWN0IDUtYml0IGNodW5rcyB3aGlsZSB3ZSBoYXZlIGVu b3VnaCBiaXRzICovCisJCXdoaWxlIChiaXRzX2luX2J1ZmZlciA+PSA1KQorCQl7CisJCQliaXRz X2luX2J1ZmZlciAtPSA1OworCQkJLyogRXh0cmFjdCB0b3AgNSBiaXRzICovCisJCQlkc3Rbb3V0 cHV0X3BvcysrXSA9IGJhc2UzMmhleF90YWJsZVsoYml0c19idWZmZXIgPj4gYml0c19pbl9idWZm ZXIpICYgMHgxRl07CisJCQkvKiBDbGVhciB0aGUgZXh0cmFjdGVkIGJpdHMgYnkgbWFza2luZyAq LworCQkJYml0c19idWZmZXIgJj0gKCgxVSA8PCBiaXRzX2luX2J1ZmZlcikgLSAxKTsKKwkJfQor CX0KKworCS8qIEhhbmRsZSByZW1haW5pbmcgYml0cyAoaWYgYW55KSAqLworCWlmIChiaXRzX2lu X2J1ZmZlciA+IDApCisJCWRzdFtvdXRwdXRfcG9zKytdID0gYmFzZTMyaGV4X3RhYmxlWyhiaXRz X2J1ZmZlciA8PCAoNSAtIGJpdHNfaW5fYnVmZmVyKSkgJiAweDFGXTsKKworCS8qIEFkZCBwYWRk aW5nIHRvIG1ha2UgbGVuZ3RoIGEgbXVsdGlwbGUgb2YgOCAocGVyIFJGQyA0NjQ4KSAqLworCXdo aWxlIChvdXRwdXRfcG9zICUgOCAhPSAwKQorCQlkc3Rbb3V0cHV0X3BvcysrXSA9ICc9JzsKKwor CXJldHVybiBvdXRwdXRfcG9zOworfQorCitzdGF0aWMgdWludDY0CitiYXNlMzJoZXhfZGVjb2Rl KGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNyY2xlbiwgY2hhciAqZHN0KQoreworCWNvbnN0IGNo YXIgKnNyY2VuZCA9IHNyYyArIHNyY2xlbiwKKwkJCSAgICpzID0gc3JjOworCXVpbnQzMgkJYml0 c19idWZmZXIgPSAwOworCWludAkJCWJpdHNfaW5fYnVmZmVyID0gMDsKKwl1aW50NjQJCW91dHB1 dF9wb3MgPSAwOworCWludAkJCXBvcyA9IDA7CQkvKiBwb3NpdGlvbiB3aXRoaW4gOC1jaGFyYWN0 ZXIgZ3JvdXAgKDAtNykgKi8KKwlib29sCQllbmQgPSBmYWxzZTsJLyogaGF2ZSB3ZSBzZWVuIHBh ZGRpbmc/ICovCisKKwl3aGlsZSAocyA8IHNyY2VuZCkKKwl7CisJCWNoYXIJCWMgPSAqcysrOwor CQlpbnQJCQl2YWw7CisKKwkJLyogU2tpcCB3aGl0ZXNwYWNlICovCisJCWlmIChjID09ICcgJyB8 fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJykKKwkJCWNvbnRpbnVlOworCisJ CWlmIChjID09ICc9JykKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBwYWRkaW5nIGlzIG9u bHkgdmFsaWQgYXQgcG9zaXRpb25zIDIsIDQsIDUsIG9yIDcKKwkJCSAqIHdpdGhpbiBhbiA4LWNo YXJhY3RlciBncm91cCAoY29ycmVzcG9uZGluZyB0byAxLCAyLCAzLCBvciA0CisJCQkgKiBpbnB1 dCBieXRlcykuIFdlIG9ubHkgY2hlY2sgdGhlIHBvc2l0aW9uIGZvciB0aGUgZmlyc3QgJz0nCisJ CQkgKiBjaGFyYWN0ZXIuCisJCQkgKi8KKwkJCWlmICghZW5kKQorCQkJeworCQkJCWlmIChwb3Mg IT0gMiAmJiBwb3MgIT0gNCAmJiBwb3MgIT0gNSAmJiBwb3MgIT0gNykKKwkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwK KwkJCQkJCQkgZXJybXNnKCJ1bmV4cGVjdGVkIFwiPVwiIHdoaWxlIGRlY29kaW5nIGJhc2UzMmhl eCBzZXF1ZW5jZSIpKSk7CisJCQkJZW5kID0gdHJ1ZTsKKwkJCX0KKwkJCXBvcysrOworCQkJY29u dGludWU7CisJCX0KKworCQkvKiBObyBkYXRhIGNoYXJhY3RlcnMgYWxsb3dlZCBhZnRlciBwYWRk aW5nICovCisJCWlmIChlbmQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBzeW1i b2wgXCIlLipzXCIgZm91bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlIiwKKwkJ CQkJCQlwZ19tYmxlbl9yYW5nZShzIC0gMSwgc3JjZW5kKSwgcyAtIDEpKSk7CisKKwkJLyogRGVj b2RlIGJhc2UzMmhleCBjaGFyYWN0ZXIgKDAtOSwgQS1WLCBjYXNlLWluc2Vuc2l0aXZlKSAqLwor CQlpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisJCQl2YWwgPSBjIC0gJzAnOworCQllbHNlIGlm IChjID49ICdBJyAmJiBjIDw9ICdWJykKKwkJCXZhbCA9IGMgLSAnQScgKyAxMDsKKwkJZWxzZSBp ZiAoYyA+PSAnYScgJiYgYyA8PSAndicpCisJCQl2YWwgPSBjIC0gJ2EnICsgMTA7CisJCWVsc2UK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIHN5bWJvbCBcIiUuKnNcIiBmb3VuZCB3 aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UiLAorCQkJCQkJCXBnX21ibGVuX3Jhbmdl KHMgLSAxLCBzcmNlbmQpLCBzIC0gMSkpKTsKKworCQkvKiBBZGQgNSBiaXRzIHRvIGJ1ZmZlciAq LworCQliaXRzX2J1ZmZlciA9IChiaXRzX2J1ZmZlciA8PCA1KSB8IHZhbDsKKwkJYml0c19pbl9i dWZmZXIgKz0gNTsKKwkJcG9zKys7CisKKwkJLyogRXh0cmFjdCA4LWJpdCBieXRlcyB3aGVuIHdl IGhhdmUgZW5vdWdoIGJpdHMgKi8KKwkJd2hpbGUgKGJpdHNfaW5fYnVmZmVyID49IDgpCisJCXsK KwkJCWJpdHNfaW5fYnVmZmVyIC09IDg7CisJCQlkc3Rbb3V0cHV0X3BvcysrXSA9ICh1bnNpZ25l ZCBjaGFyKSAoYml0c19idWZmZXIgPj4gYml0c19pbl9idWZmZXIpOworCQkJLyogQ2xlYXIgdGhl IGV4dHJhY3RlZCBiaXRzICovCisJCQliaXRzX2J1ZmZlciAmPSAoKDFVIDw8IGJpdHNfaW5fYnVm ZmVyKSAtIDEpOworCQl9CisKKwkJLyogUmVzZXQgcG9zaXRpb24gYWZ0ZXIgZWFjaCBjb21wbGV0 ZSA4LWNoYXJhY3RlciBncm91cCAqLworCQlpZiAocG9zID09IDgpCisJCQlwb3MgPSAwOworCX0K KworCXJldHVybiBvdXRwdXRfcG9zOworfQorCiAvKgogICogQ29tbW9uCiAgKi8KQEAgLTg1NCw2 ICs5OTMsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCQkJcGdfYmFzZTY0dXJsX2VuY19sZW4s IHBnX2Jhc2U2NHVybF9kZWNfbGVuLCBwZ19iYXNlNjR1cmxfZW5jb2RlLCBwZ19iYXNlNjR1cmxf ZGVjb2RlCiAJCX0KIAl9LAorCXsKKwkJImJhc2UzMmhleCIsCisJCXsKKwkJCWJhc2UzMmhleF9l bmNfbGVuLCBiYXNlMzJoZXhfZGVjX2xlbiwgYmFzZTMyaGV4X2VuY29kZSwgYmFzZTMyaGV4X2Rl Y29kZQorCQl9CisJfSwKIAl7CiAJCSJlc2NhcGUiLAogCQl7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N0cmluZ3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdHJpbmdzLm91dAppbmRleCBmMzg2ODhiNWMzNy4uMDE2NmE1N2IwZDQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RyaW5ncy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdHJpbmdzLm91dApAQCAtMjYwMCwxNCArMjYwMCwxMjcgQEAgU0VMRUNU IGRlY29kZShlbmNvZGUoJ1x4MTIzNDU2Nzg5MGFiY2RlZjAwJywgJ2VzY2FwZScpLCAnZXNjYXBl Jyk7CiAtLSByZXBvcnQgYW4gZXJyb3Igd2l0aCBhIGhpbnQgbGlzdGluZyB2YWxpZCBlbmNvZGlu Z3Mgd2hlbiBhbiBpbnZhbGlkIGVuY29kaW5nIGlzIHNwZWNpZmllZAogU0VMRUNUIGVuY29kZSgn XHgwMSc6OmJ5dGVhLCAnaW52YWxpZCcpOyAgLS0gZXJyb3IKIEVSUk9SOiAgdW5yZWNvZ25pemVk IGVuY29kaW5nOiAiaW52YWxpZCIKLUhJTlQ6ICBWYWxpZCBlbmNvZGluZ3MgYXJlICJiYXNlNjQi LCAiYmFzZTY0dXJsIiwgImVzY2FwZSIsIGFuZCAiaGV4Ii4KK0hJTlQ6ICBWYWxpZCBlbmNvZGlu Z3MgYXJlICJiYXNlNjQiLCAiYmFzZTY0dXJsIiwgImJhc2UzMmhleCIsICJlc2NhcGUiLCBhbmQg ImhleCIuCiBTRUxFQ1QgZGVjb2RlKCcwMCcsICdpbnZhbGlkJyk7ICAgICAgICAgICAtLSBlcnJv cgogRVJST1I6ICB1bnJlY29nbml6ZWQgZW5jb2Rpbmc6ICJpbnZhbGlkIgotSElOVDogIFZhbGlk IGVuY29kaW5ncyBhcmUgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiZXNjYXBlIiwgYW5kICJoZXgi LgorSElOVDogIFZhbGlkIGVuY29kaW5ncyBhcmUgImJhc2U2NCIsICJiYXNlNjR1cmwiLCAiYmFz ZTMyaGV4IiwgImVzY2FwZSIsIGFuZCAiaGV4Ii4KIC0tCi0tLSBiYXNlNjR1cmwgZW5jb2Rpbmcv ZGVjb2RpbmcKKy0tIGJhc2UzMmhleCBlbmNvZGluZy9kZWNvZGluZwogLS0KIFNFVCBieXRlYV9v dXRwdXQgVE8gaGV4OworU0VMRUNUIGVuY29kZSgnJywgJ2Jhc2UzMmhleCcpOyAgLS0gJycKKyBl bmNvZGUgCistLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKCdceDExJywgJ2Jh c2UzMmhleCcpOyAgLS0gJzI0PT09PT09JworICBlbmNvZGUgIAorLS0tLS0tLS0tLQorIDI0PT09 PT09CisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMicsICdiYXNlMzJoZXgnKTsgIC0t ICcyNEgwPT09PScKKyAgZW5jb2RlICAKKy0tLS0tLS0tLS0KKyAyNEgwPT09PQorKDEgcm93KQor CitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMycsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNj09PScK KyAgZW5jb2RlICAKKy0tLS0tLS0tLS0KKyAyNEgzNj09PQorKDEgcm93KQorCitTRUxFQ1QgZW5j b2RlKCdceDExMjIzMzQ0JywgJ2Jhc2UzMmhleCcpOyAgLS0gJzI0SDM2SDA9JworICBlbmNvZGUg IAorLS0tLS0tLS0tLQorIDI0SDM2SDA9CisoMSByb3cpCisKK1NFTEVDVCBlbmNvZGUoJ1x4MTEy MjMzNDQ1NScsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTCcKKyAgZW5jb2RlICAKKy0tLS0t LS0tLS0KKyAyNEgzNkgyTAorKDEgcm93KQorCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0NTU2 NicsICdiYXNlMzJoZXgnKTsgIC0tICcyNEgzNkgyTENPPT09PT09JworICAgICAgZW5jb2RlICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAyNEgzNkgyTENPPT09PT09CisoMSByb3cpCisKK1NF TEVDVCBkZWNvZGUoJycsICdiYXNlMzJoZXgnKTsgIC0tICcnCisgZGVjb2RlIAorLS0tLS0tLS0K KyBceAorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyND09PT09PScsICdiYXNlMzJoZXgnKTsg IC0tIFx4MTEKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4MTEKKygxIHJvdykKKworU0VMRUNUIGRl Y29kZSgnMjRIMD09PT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIKKyBkZWNvZGUgCistLS0t LS0tLQorIFx4MTEyMgorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNj09PScsICdiYXNl MzJoZXgnKTsgIC0tIFx4MTEyMjMzCisgIGRlY29kZSAgCistLS0tLS0tLS0tCisgXHgxMTIyMzMK KygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjRIMzZIMD0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBc eDExMjIzMzQ0CisgICBkZWNvZGUgICAKKy0tLS0tLS0tLS0tLQorIFx4MTEyMjMzNDQKKygxIHJv dykKKworU0VMRUNUIGRlY29kZSgnMjRIMzZIMkwnLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIz MzQ0NTUKKyAgICBkZWNvZGUgICAgCistLS0tLS0tLS0tLS0tLQorIFx4MTEyMjMzNDQ1NQorKDEg cm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNEgzNkgyTENPPT09PT09JywgJ2Jhc2UzMmhleCcpOyAg LS0gXHgxMTIyMzM0NDU1NjYKKyAgICAgZGVjb2RlICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBc eDExMjIzMzQ0NTU2NgorKDEgcm93KQorCitTRUxFQ1QgZGVjb2RlKCcyNCcsICdiYXNlMzJoZXgn KTsgIC0tIE9LLCBwYWRkaW5nIGA9YCBhcmUgb3B0aW9uYWwKKyBkZWNvZGUgCistLS0tLS0tLQor IFx4MTEKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgnMjRoMzZoMmxjbycsICdiYXNlMzJoZXgn KTsgIC0tIE9LLCB0aGUgZW5jb2RpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZQorICAgICBkZWNvZGUg ICAgIAorLS0tLS0tLS0tLS0tLS0tLQorIFx4MTEyMjMzNDQ1NTY2CisoMSByb3cpCisKK1NFTEVD VCBkZWNvZGUoJz0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorRVJST1I6ICB1bmV4cGVjdGVk ICI9IiB3aGlsZSBkZWNvZGluZyBiYXNlMzJoZXggc2VxdWVuY2UKK1NFTEVDVCBkZWNvZGUoJ1cn LCAnYmFzZTMyaGV4Jyk7ICAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAiVyIgZm91 bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlCitTRUxFQ1QgZGVjb2RlKCcyNEgz NkgwPTI0JywgJ2Jhc2UzMmhleCcpOyAtLSBlcnJvcgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAi MiIgZm91bmQgd2hpbGUgZGVjb2RpbmcgYmFzZTMyaGV4IHNlcXVlbmNlCitTRUxFQ1QgZGVjb2Rl KCcxMT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBPSywgbm9uLXplcm8gcGFkZGluZyBiaXRzIGFyZSBh Y2NlcHRlZCAoY29uc2lzdGVudCB3aXRoIGJhc2U2NCkKKyBkZWNvZGUgCistLS0tLS0tLQorIFx4 MDgKKygxIHJvdykKKworU0VMRUNUIGRlY29kZSgn44GCJywgJ2Jhc2UzMmhleCcpOyAtLSBlcnJv cgorRVJST1I6ICBpbnZhbGlkIHN5bWJvbCAi44GCIiBmb3VuZCB3aGlsZSBkZWNvZGluZyBiYXNl MzJoZXggc2VxdWVuY2UKKy0tCistLSBiYXNlNjR1cmwgZW5jb2RpbmcvZGVjb2RpbmcKKy0tCiAt LSBTaW1wbGUgZW5jb2RpbmcvZGVjb2RpbmcKIFNFTEVDVCBlbmNvZGUoJ1x4NjliNzNlZmYnLCAn YmFzZTY0dXJsJyk7ICAtLSBhYmMtX3cKICBlbmNvZGUgCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlk Lm91dAppbmRleCBkMTU3ZWY3ZDBiMy4uZDJhNDVhMGYwN2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91dWlkLm91dApAQCAtMzI3LDUgKzMyNywyMSBAQCBTRUxFQ1QgdiA9IHY6OmJ5dGVhOjp1dWlk IGFzIG1hdGNoZWQgRlJPTSBnZW5fcmFuZG9tX3V1aWQoKSB2OwogIHQKICgxIHJvdykKIAorLS0g bWFrZSBzdXJlIGJhc2UzMmhleCBlbmNvZGluZyB3b3JrcyB3aXRoIFVVSURzIGFuZCBwcmVzZXJ2 ZXMgb3JkZXJpbmcKK1NFTEVDVCBvcmlnLCBlbmNvZGUob3JpZzo6Ynl0ZWEsICdiYXNlMzJoZXgn KSBBUyBlbmMKK0ZST00gdW5uZXN0KEFSUkFZWworICAgICcxMjNlNDU2Ny1lODliLTEyZDMtYTQ1 Ni00MjY2MTQxNzQwMDAnLAorICAgICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAw MDAnLAorICAgICcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnLAorICAgICdm ZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYnXTo6dXVpZFtdCispIEFTIG9yaWcg T1JERVIgQlkgZW5jOworICAgICAgICAgICAgICAgICBvcmlnICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgZW5jICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAwMDAw MDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCB8IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwPT09PT09CisgMTExMTExMTEtMTExMS0xMTExLTExMTEtMTExMTExMTExMTExIHwgMjQ4SDI0 OEgyNDhIMjQ4SDI0OEgyNDhIMjQ9PT09PT0KKyAxMjNlNDU2Ny1lODliLTEyZDMtYTQ1Ni00MjY2 MTQxNzQwMDAgfCAyOFY0QVBWOEpDOUQ3OTJNODlKMTg1UTAwMD09PT09PQorIGZmZmZmZmZmLWZm ZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZiB8IFZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZTPT09 PT09CisoNCByb3dzKQorCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBndWlkMSwgZ3VpZDIsIGd1 aWQzIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdHJpbmdzLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0cmluZ3Muc3FsCmluZGV4IGQ4YTA5NzM3NjY4Li4x M2ZjZmUyMTI0MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RyaW5ncy5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3RyaW5ncy5zcWwKQEAgLTgzNSwxMCArODM1LDM5 IEBAIFNFTEVDVCBlbmNvZGUoJ1x4MDEnOjpieXRlYSwgJ2ludmFsaWQnKTsgIC0tIGVycm9yCiBT RUxFQ1QgZGVjb2RlKCcwMCcsICdpbnZhbGlkJyk7ICAgICAgICAgICAtLSBlcnJvcgogCiAtLQot LS0gYmFzZTY0dXJsIGVuY29kaW5nL2RlY29kaW5nCistLSBiYXNlMzJoZXggZW5jb2RpbmcvZGVj b2RpbmcKIC0tCiBTRVQgYnl0ZWFfb3V0cHV0IFRPIGhleDsKIAorU0VMRUNUIGVuY29kZSgnJywg J2Jhc2UzMmhleCcpOyAgLS0gJycKK1NFTEVDVCBlbmNvZGUoJ1x4MTEnLCAnYmFzZTMyaGV4Jyk7 ICAtLSAnMjQ9PT09PT0nCitTRUxFQ1QgZW5jb2RlKCdceDExMjInLCAnYmFzZTMyaGV4Jyk7ICAt LSAnMjRIMD09PT0nCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMycsICdiYXNlMzJoZXgnKTsgIC0t ICcyNEgzNj09PScKK1NFTEVDVCBlbmNvZGUoJ1x4MTEyMjMzNDQnLCAnYmFzZTMyaGV4Jyk7ICAt LSAnMjRIMzZIMD0nCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0NTUnLCAnYmFzZTMyaGV4Jyk7 ICAtLSAnMjRIMzZIMkwnCitTRUxFQ1QgZW5jb2RlKCdceDExMjIzMzQ0NTU2NicsICdiYXNlMzJo ZXgnKTsgIC0tICcyNEgzNkgyTENPPT09PT09JworCitTRUxFQ1QgZGVjb2RlKCcnLCAnYmFzZTMy aGV4Jyk7ICAtLSAnJworU0VMRUNUIGRlY29kZSgnMjQ9PT09PT0nLCAnYmFzZTMyaGV4Jyk7ICAt LSBceDExCitTRUxFQ1QgZGVjb2RlKCcyNEgwPT09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEy MgorU0VMRUNUIGRlY29kZSgnMjRIMzY9PT0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIzMwor U0VMRUNUIGRlY29kZSgnMjRIMzZIMD0nLCAnYmFzZTMyaGV4Jyk7ICAtLSBceDExMjIzMzQ0CitT RUxFQ1QgZGVjb2RlKCcyNEgzNkgyTCcsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEyMjMzNDQ1NQor U0VMRUNUIGRlY29kZSgnMjRIMzZIMkxDTz09PT09PScsICdiYXNlMzJoZXgnKTsgIC0tIFx4MTEy MjMzNDQ1NTY2CisKK1NFTEVDVCBkZWNvZGUoJzI0JywgJ2Jhc2UzMmhleCcpOyAgLS0gT0ssIHBh ZGRpbmcgYD1gIGFyZSBvcHRpb25hbAorU0VMRUNUIGRlY29kZSgnMjRoMzZoMmxjbycsICdiYXNl MzJoZXgnKTsgIC0tIE9LLCB0aGUgZW5jb2RpbmcgaXMgY2FzZS1pbnNlbnNpdGl2ZQorU0VMRUNU IGRlY29kZSgnPScsICdiYXNlMzJoZXgnKTsgIC0tIGVycm9yCitTRUxFQ1QgZGVjb2RlKCdXJywg J2Jhc2UzMmhleCcpOyAgLS0gZXJyb3IKK1NFTEVDVCBkZWNvZGUoJzI0SDM2SDA9MjQnLCAnYmFz ZTMyaGV4Jyk7IC0tIGVycm9yCitTRUxFQ1QgZGVjb2RlKCcxMT0nLCAnYmFzZTMyaGV4Jyk7ICAt LSBPSywgbm9uLXplcm8gcGFkZGluZyBiaXRzIGFyZSBhY2NlcHRlZCAoY29uc2lzdGVudCB3aXRo IGJhc2U2NCkKK1NFTEVDVCBkZWNvZGUoJ+OBgicsICdiYXNlMzJoZXgnKTsgLS0gZXJyb3IKKwor CistLQorLS0gYmFzZTY0dXJsIGVuY29kaW5nL2RlY29kaW5nCistLQorCiAtLSBTaW1wbGUgZW5j b2RpbmcvZGVjb2RpbmcKIFNFTEVDVCBlbmNvZGUoJ1x4NjliNzNlZmYnLCAnYmFzZTY0dXJsJyk7 ICAtLSBhYmMtX3cKIFNFTEVDVCBkZWNvZGUoJ2FiYy1fdycsICdiYXNlNjR1cmwnKTsgICAgICAt LSBceDY5YjczZWZmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsCmluZGV4IGY1MTJmNGRlYTFkLi5lZTE0ODAy NjMwYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKQEAgLTE1Miw1ICsxNTIsMTQgQEAgU0VMRUNUICdc eDAxOWEyZjg1OWNlZDcyMjViOTlkOWM1NTA0NGEyNTYzJzo6Ynl0ZWE6OnV1aWQ7CiBTRUxFQ1Qg J1x4MTIzNDU2Nzg5MGFiY2RlZic6OmJ5dGVhOjp1dWlkOyAtLSBlcnJvcgogU0VMRUNUIHYgPSB2 OjpieXRlYTo6dXVpZCBhcyBtYXRjaGVkIEZST00gZ2VuX3JhbmRvbV91dWlkKCkgdjsKIAorLS0g bWFrZSBzdXJlIGJhc2UzMmhleCBlbmNvZGluZyB3b3JrcyB3aXRoIFVVSURzIGFuZCBwcmVzZXJ2 ZXMgb3JkZXJpbmcKK1NFTEVDVCBvcmlnLCBlbmNvZGUob3JpZzo6Ynl0ZWEsICdiYXNlMzJoZXgn KSBBUyBlbmMKK0ZST00gdW5uZXN0KEFSUkFZWworICAgICcxMjNlNDU2Ny1lODliLTEyZDMtYTQ1 Ni00MjY2MTQxNzQwMDAnLAorICAgICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAw MDAnLAorICAgICcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnLAorICAgICdm ZmZmZmZmZi1mZmZmLWZmZmYtZmZmZi1mZmZmZmZmZmZmZmYnXTo6dXVpZFtdCispIEFTIG9yaWcg T1JERVIgQlkgZW5jOworCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBndWlkMSwgZ3VpZDIsIGd1 aWQzIENBU0NBREU7Ci0tIAoyLjQzLjAKCg== --000000000000ddf5ae064d744b20--