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.94.2) (envelope-from ) id 1ut4bX-000DRg-2v for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 13:29:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ut4aX-0001DM-UP for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Sep 2025 13:28:50 +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.94.2) (envelope-from ) id 1ut4aX-0001DE-4R for pgsql-hackers@lists.postgresql.org; Mon, 01 Sep 2025 13:28:49 +0000 Received: from mail-ua1-x933.google.com ([2607:f8b0:4864:20::933]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ut4aU-0000LX-2v for pgsql-hackers@postgresql.org; Mon, 01 Sep 2025 13:28:48 +0000 Received: by mail-ua1-x933.google.com with SMTP id a1e0cc1a2514c-89019079fbeso1033925241.2 for ; Mon, 01 Sep 2025 06:28:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xzilla-net.20230601.gappssmtp.com; s=20230601; t=1756733326; x=1757338126; 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=6zolw5zJkPpIbwiJpfC1WOnz+ZFrJ7CkV1XeLA/RJqk=; b=Eafcohs87cDPZs/ZTO4E4mERs/wTvkfmrzlDeuWInp90ZiDpynQP4rXMfgfmmonPF5 1rUqckcz452Z+2pDxdpnfzS0en5rymVniiT3pdjs0t/wUK8H/00/J5ceCYr9ZUAvTRI5 mETcNzugzgh99XgmFUIwTvIeZ7VgHyHtDuVNV4KY10/4aFj1kwmk5+sUEPl9TiH3lII2 +Yb5+BdgPS80nvvJ0Q/wjQ9zycIklxYQyg+no804/R7l6RUaMN7rKW8jFDE/SvDtZ84d tMpcBEF/vLFbfZboqUnLtR3fxkuyCw7NVm/aPkEHKpgfmF6QBTYZWZOkY2uSlAbSAVdr +Tpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756733326; x=1757338126; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=6zolw5zJkPpIbwiJpfC1WOnz+ZFrJ7CkV1XeLA/RJqk=; b=VhJ1qzV5/KNcklI8uzKNJ4q4/svaEiU7Ywsh8t6gD6sm4fyvuegdue2KnilKFX/Wne Tl9RwH+HZpMQdMrDeMsy206mONFGjaLsdt2tuflWPHa42hB65lGGy3lWDWvG8vVgT+gy snlFAqpW71ymdY4NBdNukuBAYzn+oE3Glw5fJuMpIsuDzrl1RBwj3zyx1FMLdUwUZyU9 6GVMDy79hOaJAtEPSyTFakgTTRr114KCyH8XpYcFPBLFuGQorZkZqKYqMdAiIkrRZqLS 6T33f65YU+VTgrC5Zgq5D5fdFNmBPK44+fZqBdM/WoXVEezwmH7onvMtZ476LP3Ou2ne XOjw== X-Forwarded-Encrypted: i=1; AJvYcCVoTcMq0UOtzsrconlvKckNjodDF0/0FJuSwnOd0T/RsJP53tlh1I/wGZZ/13KQAANEU2he5jnUVmRa6P62@postgresql.org X-Gm-Message-State: AOJu0Yyqq+pmn3Ev5UK6Qk+kH9ur75BGxbEtPZ8yXvb5FrhC/bPdb33h TazHj/0j0tPPAQotf7BtfddGrbj4q/3OyNpK4fvIFBVzZ/IPVB2DRQoSgZgO0tsC3Bd9BQ+rdpy sOiAl/JsaQj98eybmgfxNYJzzmFKEkS0nYCoanPBXMA== X-Gm-Gg: ASbGncvDgTLLyzn98yWBYYJr795iTkHVFg+nczuLjgXaqYyIYw/Dyr9QKiXj8JCdNNQ hdk/jClDN3Ib9E/0H41DedSj5yObqgI7HBcnOfgOcD04sbFDe9YecitFV1wH5IzYsV2vGxAB5mk AL/XU0NQ5k9OYZh++JWnwo8oJb/39M6hk16V3q2D3ALj7F3ZjRK4CuCO0X0oDexCXb0o5+bnlLc gPCd1dzi3nbbloMMA== X-Google-Smtp-Source: AGHT+IG4fpepbyGsS7ZanVp/55xIuwMb7Kn+jxE8l+XPt6GCZC31cCaYvlpH9/4a5dwOg6CmBQfx5OxO7CdOlmlcofo= X-Received: by 2002:a05:6102:3350:b0:522:255d:4d19 with SMTP id ada2fe7eead31-52b1be31896mr1794359137.23.1756733325868; Mon, 01 Sep 2025 06:28:45 -0700 (PDT) MIME-Version: 1.0 References: <20230814150737.GA1395427@nathanxps13> <20230815153423.GB2296544@nathanxps13> In-Reply-To: From: Robert Treat Date: Mon, 1 Sep 2025 09:28:33 -0400 X-Gm-Features: Ac12FXxPq_wCijwbk4sN31pQ9tP08xHSTRzP2soDhguhLsZrzmq5MSmfyOhFNrg Message-ID: Subject: Re: pgbench - adding pl/pgsql versions of tests To: Hannu Krosing Cc: Robert Haas , Nathan Bossart , Fabien COELHO , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000dab3d3063dbd5938" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dab3d3063dbd5938 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jul 23, 2025 at 12:18=E2=80=AFPM Hannu Krosing = wrote: > On Sun, Jul 6, 2025 at 11:52=E2=80=AFPM Hannu Krosing = wrote: > > On Sat, Feb 3, 2024 at 8:54=E2=80=AFAM Hannu Krosing wrote: > > > > > > My justification for adding pl/pgsql tests as part of the immediately= available tests > > > is that pl/pgsql itself is always enabled, so having a no-effort way = to test its > > > performance benefits would be really helpful. > > > We also should have "tps-b-like as SQL function" to round up the "tes= t what's available in server" set. > > > > Finally got around to adding the tests for all out-of-the box > > supported languages - pl/pgsql, and old and new SQL. > > > > Also added the documentation. Hey Hannu, I took the above for a spin and generally it all worked well and I do think it is a nice addition. Attached v4 patch basically combines v3 01 and 02 patches into one (you need both or the build fails on the docs, so...), along with the following changes: - whitespace and typo fixes in pgbench.c - wordsmithing the caution notification, clean up --no-functions doc - document the new Yy options alongside other -I options. On that last item, I did notice that there is a potential backwards compatibility issue, which is that existing scripts that are reliant on functions existing will need to be updated to include "y", but that feels pretty niche, so I am not personally worried about it. Robert Treat https://xzilla.net --000000000000dab3d3063dbd5938 Content-Type: application/octet-stream; name="v4-0001-added-new-and-old-style-SQL-functions-and-documen.patch" Content-Disposition: attachment; filename="v4-0001-added-new-and-old-style-SQL-functions-and-documen.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf15mlcy0 RnJvbSBiOTg1MGFjMmY5OWRiYjI1M2FiNTM2NWY4ZWQyNmY1MzM2ODdiODYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgVHJlYXQgPHJvYkB4emlsbGEubmV0PgpEYXRlOiBN b24sIDEgU2VwIDIwMjUgMDg6NDA6MDEgLTA0MDAKU3ViamVjdDogW1BBVENIIHY0XSBhZGRlZC1u ZXctYW5kLW9sZC1zdHlsZS1TUUwtZnVuY3Rpb25zLWFuZC1kb2N1bWVudGF0aW9uCkNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYv cGdiZW5jaC5zZ21sIHwgIDc0ICsrKysrKysrKysrKy0tCiBzcmMvYmluL3BnYmVuY2gvcGdiZW5j aC5jICAgICB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAyIGZpbGVz IGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5j aC5zZ21sCmluZGV4IGFiMjUyZDlmYzc0Li45NTkxNzJkZTliOSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ2JlbmNoLnNn bWwKQEAgLTEwMiwxMiArMTAyLDEyIEBAIHBnYmVuY2ggLWkgPG9wdGlvbmFsPiA8cmVwbGFjZWFi bGU+b3RoZXItb3B0aW9uczwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+IDxyZXBsCiAKICAgPGNh dXRpb24+CiAgICA8cGFyYT4KLSAgICA8bGl0ZXJhbD5wZ2JlbmNoIC1pPC9saXRlcmFsPiBjcmVh dGVzIGZvdXIgdGFibGVzIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfYWNjb3VudHM8L3N0cnVjdG5hbWU+ LAotICAgIDxzdHJ1Y3RuYW1lPnBnYmVuY2hfYnJhbmNoZXM8L3N0cnVjdG5hbWU+LCA8c3RydWN0 bmFtZT5wZ2JlbmNoX2hpc3Rvcnk8L3N0cnVjdG5hbWU+LCBhbmQKLSAgICA8c3RydWN0bmFtZT5w Z2JlbmNoX3RlbGxlcnM8L3N0cnVjdG5hbWU+LAotICAgIGRlc3Ryb3lpbmcgYW55IGV4aXN0aW5n IHRhYmxlcyBvZiB0aGVzZSBuYW1lcy4KLSAgICBCZSB2ZXJ5IGNhcmVmdWwgdG8gdXNlIGFub3Ro ZXIgZGF0YWJhc2UgaWYgeW91IGhhdmUgdGFibGVzIGhhdmluZyB0aGVzZQotICAgIG5hbWVzIQor ICAgIDxsaXRlcmFsPnBnYmVuY2ggLWk8L2xpdGVyYWw+IGNyZWF0ZXMgZm91ciB0YWJsZXMgKDxz dHJ1Y3RuYW1lPnBnYmVuY2hfYWNjb3VudHM8L3N0cnVjdG5hbWU+LAorICAgIDxzdHJ1Y3RuYW1l PnBnYmVuY2hfYnJhbmNoZXM8L3N0cnVjdG5hbWU+LCA8c3RydWN0bmFtZT5wZ2JlbmNoX2hpc3Rv cnk8L3N0cnVjdG5hbWU+LAorICAgIGFuZCA8c3RydWN0bmFtZT5wZ2JlbmNoX3RlbGxlcnM8L3N0 cnVjdG5hbWU+KSBhbmQgc2l4IGZ1bmN0aW9ucyB3aXRoIG5hbWVzCisgICAgYmVnaW5pbmcgd2l0 aCA8c3RydWN0bmFtZT5wZ2JlbmNoXzwvc3RydWN0bmFtZT4uIFRoaXMgb3BlcmF0aW9uIHdpbGwg ZHJvcAorICAgIGFueSBleGlzdGluZyB0YWJsZXMgb3IgZnVuY3Rpb25zIHdpdGggdGhlc2UgbmFt ZXMsIGluY2x1ZGluZyBhbGwgZGVwZW5kZW50CisgICAgb2JqZWN0cy4KICAgIDwvcGFyYT4KICAg PC9jYXV0aW9uPgogCkBAIC0xOTMsMTggKzE5MywyNiBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJl cGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ ZAogICAgICAgICA8cmVwbGFjZWFibGU+aW5pdF9zdGVwczwvcmVwbGFjZWFibGU+IHNwZWNpZmll cyB0aGUKICAgICAgICAgaW5pdGlhbGl6YXRpb24gc3RlcHMgdG8gYmUgcGVyZm9ybWVkLCB1c2lu ZyBvbmUgY2hhcmFjdGVyIHBlciBzdGVwLgogICAgICAgICBFYWNoIHN0ZXAgaXMgaW52b2tlZCBp biB0aGUgc3BlY2lmaWVkIG9yZGVyLgotICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5k dGd2cDwvbGl0ZXJhbD4uCisgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPmRZdGd2cHk8 L2xpdGVyYWw+LgogICAgICAgICBUaGUgYXZhaWxhYmxlIHN0ZXBzIGFyZToKIAogICAgICAgICA8 dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRpb24t aW5pdC1zdGVwcy1kIj4KLSAgICAgICAgICA8dGVybT48bGl0ZXJhbD5kPC9saXRlcmFsPiAoRHJv cCk8L3Rlcm0+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+ZDwvbGl0ZXJhbD4gKERyb3AgVGFi bGVzKTwvdGVybT4KICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAg ICAgICAgICAgRHJvcCBhbnkgZXhpc3RpbmcgPGFwcGxpY2F0aW9uPnBnYmVuY2g8L2FwcGxpY2F0 aW9uPiB0YWJsZXMuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICA8L2xpc3RpdGVtPgog ICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICA8dmFybGlzdGVudHJ5IGlkPSJwZ2Jl bmNoLW9wdGlvbi1pbml0LXN0ZXBzLVkiPgorICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPlk8L2xp dGVyYWw+IChEcm9wIEZ1bmN0aW9ucyk8L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAg ICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIERyb3AgYW55IGV4aXN0aW5nIDxhcHBsaWNhdGlv bj5wZ2JlbmNoPC9hcHBsaWNhdGlvbj4gZnVuY3Rpb25zLgorICAgICAgICAgICA8L3BhcmE+Cisg ICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAg PHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRpb24taW5pdC1zdGVwcy10Ij4KICAgICAgICAg ICA8dGVybT48bGl0ZXJhbD50PC9saXRlcmFsPiAoY3JlYXRlIFRhYmxlcyk8L3Rlcm0+CiAgICAg ICAgICAgPGxpc3RpdGVtPgpAQCAtMjY5LDcgKzI3NywxNSBAQCBwZ2JlbmNoIDxvcHRpb25hbD4g PHJlcGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFi bGU+ZAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAg IDwvdmFybGlzdGVudHJ5PgotICAgICAgICAgPHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRp b24taW5pdC1zdGVwcy1mIj4KKyAgICAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9InBnYmVuY2gtb3B0 aW9uLWluaXQtc3RlcHMteSI+CisgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+eTwvbGl0ZXJhbD4g KGNyZWF0ZSBGdW5jdGlvbnMpPC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgICBDcmVhdGUgYW55IG5lY2Nlc3NhcnkgPGFwcGxpY2F0aW9u PnBnYmVuY2g8L2FwcGxpY2F0aW9uPiBmdW5jdGlvbnMuCisgICAgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAg PHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRpb24taW5pdC1zdGVwcy1mIj4KICAgICAgICAg IDx0ZXJtPjxsaXRlcmFsPmY8L2xpdGVyYWw+IChjcmVhdGUgRm9yZWlnbiBrZXlzKTwvdGVybT4K ICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgpAQCAtMzYxLDYgKzM3Nywx NyBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlPm9wdGlvbnM8L3JlcGxhY2VhYmxl PiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZAogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92 YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0icGdiZW5jaC1vcHRpb24tbm8t ZnVuY3Rpb25zIj4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1uby1mdW5jdGlvbnM8L29wdGlvbj48 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIERvIG5vdCBj cmVhdGUgcGwvcGdzcWwgb3IgU1FMIGZ1bmN0aW9ucyBmb3IgaW50ZXJuYWwgc2NyaXB0cy4KKyAg ICAgICAgKFRoaXMgb3B0aW9uIHN1cHByZXNzZXMgdGhlIDxsaXRlcmFsPnk8L2xpdGVyYWw+IGlu aXRpYWxpemF0aW9uIHN0ZXAsCisgICAgICAgIGV2ZW4gaWYgaXQgd2FzIHNwZWNpZmllZCBpbiA8 b3B0aW9uPi1JPC9vcHRpb24+LikKKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgor ICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJwZ2JlbmNoLW9w dGlvbi1wYXJ0aXRpb24tbWV0aG9kIj4KICAgICAgIDx0ZXJtPjxvcHRpb24+LS1wYXJ0aXRpb24t bWV0aG9kPTxyZXBsYWNlYWJsZT5OQU1FPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAg ICAgICA8bGlzdGl0ZW0+CkBAIC00MjcsOCArNDU0LDM1IEBAIHBnYmVuY2ggPG9wdGlvbmFsPiA8 cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+IDxyZXBsYWNlYWJs ZT5kCiAgICAgICAgIEF2YWlsYWJsZSBidWlsdC1pbiBzY3JpcHRzIGFyZTogPGxpdGVyYWw+dHBj Yi1saWtlPC9saXRlcmFsPiwKICAgICAgICAgPGxpdGVyYWw+c2ltcGxlLXVwZGF0ZTwvbGl0ZXJh bD4gYW5kIDxsaXRlcmFsPnNlbGVjdC1vbmx5PC9saXRlcmFsPi4KICAgICAgICAgVW5hbWJpZ3Vv dXMgcHJlZml4ZXMgb2YgYnVpbHQtaW4gbmFtZXMgYXJlIGFjY2VwdGVkLgorICAgICAgIDwvcGFy YT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVW5sZXNzIGRpc2FibGVkIHdpdGggdGhlIDxsaXRl cmFsPi0tbm8tZnVuY3Rpb25zPC9saXRlcmFsPiBvcHRpb24gYXQgZGF0YWJhc2UKKyAgICAgICAg aW5pdCwgdGhlIDxsaXRlcmFsPnRwY2ItbGlrZTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnNpbXBs ZS11cGRhdGU8L2xpdGVyYWw+CisgICAgICAgIHNjcmlwdHMgYXJlIGFsc28gaW1wbGVtZW50ZWQg YXMgVXNlci1EZWZpbmVkIGZ1bmN0aW9ucyBpbiB0aGUgZGF0YWJhc2Ugd2hpY2gKKyAgICAgICAg Y2FuIGJlIHRlc3RlZCB1c2luZyBzY3JpcHRzIG5hbWVkIDxsaXRlcmFsPnBscGdzcWwtdHBjYi1s aWtlPC9saXRlcmFsPiwKKyAgICAgICAgPGxpdGVyYWw+c3FsZnVuYy10cGNiLWxpa2U8L2xpdGVy YWw+LCA8bGl0ZXJhbD5vbGRzcWxmLXRwY2ItbGlrZTwvbGl0ZXJhbD4sCisgICAgICAgIDxsaXRl cmFsPnBscGdzcWwtc2ltcGxlLXVwZGF0ZTwvbGl0ZXJhbD4sIDxsaXRlcmFsPnNxbGZ1bmMtc2lt cGxlLXVwZGF0ZTwvbGl0ZXJhbD4KKyAgICAgICAgYW5kIDxsaXRlcmFsPm9sZHNxbGYtc2ltcGxl LXVwZGF0ZTwvbGl0ZXJhbD4uCisgICAgICAgIFRoZSA8bGl0ZXJhbD5zcWxmdW5jLSo8L2xpdGVy YWw+IHZlcnNpb25zIHVzZSB0aGUgbmV3IFNRTC1zdGFuZGFyZCBTUUwgZnVuY3Rpb25zIGFuZAor ICAgICAgICB0aGUgPGxpdGVyYWw+b2xkc3FsZi0qPC9saXRlcmFsPiB1c2UgdGhlIFNRTCBmdW5j dGlvbnMgZGVmaW5lZCB1c2luZyA8bGl0ZXJhbD5MQU5HVUFHRSBTUUw8L2xpdGVyYWw+LgorICAg ICAgICBVc2UgPGxpdGVyYWw+LS1zaG93LXNjcmlwdD1zY3JpcHRuYW1lPC9saXRlcmFsPiB0byBz ZWUgd2hhdCBpcyBhY3R1YWxseSBydW4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgog ICAgICAgICBXaXRoIHRoZSBzcGVjaWFsIG5hbWUgPGxpdGVyYWw+bGlzdDwvbGl0ZXJhbD4sIHNo b3cgdGhlIGxpc3Qgb2YgYnVpbHQtaW4gc2NyaXB0cwotICAgICAgICBhbmQgZXhpdCBpbW1lZGlh dGVseS4KKyAgICAgICAgYW5kIGV4aXQgaW1tZWRpYXRlbHkgOgorPHByb2dyYW1saXN0aW5nPgor JCBwZ2JlbmNoIC1iIGxpc3QKK0F2YWlsYWJsZSBidWlsdGluIHNjcmlwdHM6CisgICAgICAgICAg ICAgIHRwY2ItbGlrZTogJmx0O2J1aWx0aW46IFRQQy1CIChzb3J0IG9mKSZndDsKKyAgICAgIHBs cGdzcWwtdHBjYi1saWtlOiAmbHQ7YnVpbHRpbjogVFBDLUIgKHNvcnQgb2YpIC0gcGwvcGdzcWwg VURGJmd0OworICAgICAgc3FsZnVuYy10cGNiLWxpa2U6ICZsdDtidWlsdGluOiBUUEMtQiAoc29y dCBvZikgLSAnQkVHSU4gQVRPTUlDJyBTUUwgVURGJmd0OworICAgICAgb2xkc3FsZi10cGNiLWxp a2U6ICZsdDtidWlsdGluOiBUUEMtQiAoc29ydCBvZikgLSBMQU5HVUFHRSBTUUwgVURGJmd0Owor ICAgICAgICAgIHNpbXBsZS11cGRhdGU6ICZsdDtidWlsdGluOiBzaW1wbGUgdXBkYXRlJmd0Owor ICBwbHBnc3FsLXNpbXBsZS11cGRhdGU6ICZsdDtidWlsdGluOiBzaW1wbGUgdXBkYXRlIC0gcGwv cGdzcWwgVURGJmd0OworICBzcWxmdW5jLXNpbXBsZS11cGRhdGU6ICZsdDtidWlsdGluOiBzaW1w bGUgdXBkYXRlIC0gJ0JFR0lOIEFUT01JQycgU1FMIFVERiZndDsKKyAgb2xkc3FsZi1zaW1wbGUt dXBkYXRlOiAmbHQ7YnVpbHRpbjogc2ltcGxlIHVwZGF0ZSAtIExBTkdVQUdFIFNRTCBVREYmZ3Q7 CisgICAgICAgICAgICBzZWxlY3Qtb25seTogJmx0O2J1aWx0aW46IHNlbGVjdCBvbmx5Jmd0Owor PC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAg IE9wdGlvbmFsbHksIHdyaXRlIGFuIGludGVnZXIgd2VpZ2h0IGFmdGVyIDxsaXRlcmFsPkA8L2xp dGVyYWw+IHRvCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAxMjVmM2M3YmJiZS4uYTNkOTUxYmNlODcgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMKKysrIGIvc3JjL2Jpbi9wZ2JlbmNoL3Bn YmVuY2guYwpAQCAtMTYwLDggKzE2MCw4IEBAIHR5cGVkZWYgc3RydWN0IHNvY2tldF9zZXQKIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogICogc29tZSBjb25maWd1cmFibGUgcGFyYW1ldGVycyAqLwogCi0jZGVmaW5l IERFRkFVTFRfSU5JVF9TVEVQUyAiZHRndnAiCS8qIGRlZmF1bHQgLUkgc2V0dGluZyAqLwotI2Rl ZmluZSBBTExfSU5JVF9TVEVQUyAiZHRnR3ZwZiIJLyogYWxsIHBvc3NpYmxlIHN0ZXBzICovCisj ZGVmaW5lIERFRkFVTFRfSU5JVF9TVEVQUyAiZFl0Z3ZweSIJLyogZGVmYXVsdCAtSSBzZXR0aW5n ICovCisjZGVmaW5lIEFMTF9JTklUX1NURVBTICJkWXRnR3ZwZnkiCS8qIGFsbCBwb3NzaWJsZSBz dGVwcyAqLwogCiAjZGVmaW5lIExPR19TVEVQX1NFQ09ORFMJNQkvKiBzZWNvbmRzIGJldHdlZW4g bG9nIG1lc3NhZ2VzICovCiAjZGVmaW5lIERFRkFVTFRfTlhBQ1RTCTEwCQkvKiBkZWZhdWx0IG54 YWN0cyAqLwpAQCAtNzk2LDYgKzc5NiwzMyBAQCBzdGF0aWMgY29uc3QgQnVpbHRpblNjcmlwdCBi dWlsdGluX3NjcmlwdFtdID0KIAkJIklOU0VSVCBJTlRPIHBnYmVuY2hfaGlzdG9yeSAodGlkLCBi aWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKDp0aWQsIDpiaWQsIDphaWQsIDpkZWx0YSwg Q1VSUkVOVF9USU1FU1RBTVApO1xuIgogCQkiRU5EO1xuIgogCX0sCisJeworCQkicGxwZ3NxbC10 cGNiLWxpa2UiLAorCQkiPGJ1aWx0aW46IFRQQy1CIChzb3J0IG9mKSAtIHBsL3Bnc3FsIFVERj4i LAorCQkiXFxzZXQgYWlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihuYWNjb3VudHMpICIgKiA6 c2NhbGUpXG4iCisJCSJcXHNldCBiaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5icmFuY2hl cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IHRpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIo bnRlbGxlcnMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBkZWx0YSByYW5kb20oLTUwMDAsIDUw MDApXG4iCisJCSJTRUxFQ1QgMSBGUk9NIHBnYmVuY2hfdHBjYl9saWtlKDphaWQsIDpiaWQsIDp0 aWQsIDpkZWx0YSk7XG4iCisJfSwKKwl7CisJCSJzcWxmdW5jLXRwY2ItbGlrZSIsCisJCSI8YnVp bHRpbjogVFBDLUIgKHNvcnQgb2YpIC0gJ0JFR0lOIEFUT01JQycgU1FMIFVERj4iLAorCQkiXFxz ZXQgYWlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihuYWNjb3VudHMpICIgKiA6c2NhbGUpXG4i CisJCSJcXHNldCBiaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5icmFuY2hlcykgIiAqIDpz Y2FsZSlcbiIKKwkJIlxcc2V0IHRpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIobnRlbGxlcnMp ICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCBkZWx0YSByYW5kb20oLTUwMDAsIDUwMDApXG4iCisJ CSJTRUxFQ1QgMSBGUk9NIHBnYmVuY2hfdHBjYl9saWtlX3NxbGZ1bmMoOmFpZCwgOmJpZCwgOnRp ZCwgOmRlbHRhKTtcbiIKKwl9LAorCXsKKwkJIm9sZHNxbGYtdHBjYi1saWtlIiwKKwkJIjxidWls dGluOiBUUEMtQiAoc29ydCBvZikgLSBMQU5HVUFHRSBTUUwgVURGPiIsCisJCSJcXHNldCBhaWQg cmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5hY2NvdW50cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxc c2V0IGJpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIobmJyYW5jaGVzKSAiICogOnNjYWxlKVxu IgorCQkiXFxzZXQgdGlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihudGVsbGVycykgIiAqIDpz Y2FsZSlcbiIKKwkJIlxcc2V0IGRlbHRhIHJhbmRvbSgtNTAwMCwgNTAwMClcbiIKKwkJIlNFTEVD VCAxIEZST00gcGdiZW5jaF90cGNiX2xpa2Vfb2xkc3FsZnVuYyg6YWlkLCA6YmlkLCA6dGlkLCA6 ZGVsdGEpO1xuIgorCX0sCiAJewogCQkic2ltcGxlLXVwZGF0ZSIsCiAJCSI8YnVpbHRpbjogc2lt cGxlIHVwZGF0ZT4iLApAQCAtODA5LDYgKzgzNiwzMyBAQCBzdGF0aWMgY29uc3QgQnVpbHRpblNj cmlwdCBidWlsdGluX3NjcmlwdFtdID0KIAkJIklOU0VSVCBJTlRPIHBnYmVuY2hfaGlzdG9yeSAo dGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKDp0aWQsIDpiaWQsIDphaWQsIDpk ZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgogCQkiRU5EO1xuIgogCX0sCisJeworCQkicGxw Z3NxbC1zaW1wbGUtdXBkYXRlIiwKKwkJIjxidWlsdGluOiBzaW1wbGUgdXBkYXRlIC0gcGwvcGdz cWwgVURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5hY2NvdW50 cykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIo bmJyYW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgdGlkIHJhbmRvbSgxLCAiIENwcEFz U3RyaW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGRlbHRhIHJhbmRvbSgt NTAwMCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdiZW5jaF9zaW1wbGVfdXBkYXRlKDph aWQsIDpiaWQsIDp0aWQsIDpkZWx0YSk7XG4iCisJfSwKKwl7CisJCSJzcWxmdW5jLXNpbXBsZS11 cGRhdGUiLAorCQkiPGJ1aWx0aW46IHNpbXBsZSB1cGRhdGUgLSAnQkVHSU4gQVRPTUlDJyBTUUwg VURGPiIsCisJCSJcXHNldCBhaWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJpbmcyKG5hY2NvdW50cykg IiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGJpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIobmJy YW5jaGVzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgdGlkIHJhbmRvbSgxLCAiIENwcEFzU3Ry aW5nMihudGVsbGVycykgIiAqIDpzY2FsZSlcbiIKKwkJIlxcc2V0IGRlbHRhIHJhbmRvbSgtNTAw MCwgNTAwMClcbiIKKwkJIlNFTEVDVCAxIEZST00gcGdiZW5jaF9zaW1wbGVfdXBkYXRlX3NxbGZ1 bmMoOmFpZCwgOmJpZCwgOnRpZCwgOmRlbHRhKTtcbiIKKwl9LAorCXsKKwkJIm9sZHNxbGYtc2lt cGxlLXVwZGF0ZSIsCisJCSI8YnVpbHRpbjogc2ltcGxlIHVwZGF0ZSAtIExBTkdVQUdFIFNRTCBV REY+IiwKKwkJIlxcc2V0IGFpZCByYW5kb20oMSwgIiBDcHBBc1N0cmluZzIobmFjY291bnRzKSAi ICogOnNjYWxlKVxuIgorCQkiXFxzZXQgYmlkIHJhbmRvbSgxLCAiIENwcEFzU3RyaW5nMihuYnJh bmNoZXMpICIgKiA6c2NhbGUpXG4iCisJCSJcXHNldCB0aWQgcmFuZG9tKDEsICIgQ3BwQXNTdHJp bmcyKG50ZWxsZXJzKSAiICogOnNjYWxlKVxuIgorCQkiXFxzZXQgZGVsdGEgcmFuZG9tKC01MDAw LCA1MDAwKVxuIgorCQkiU0VMRUNUIDEgRlJPTSBwZ2JlbmNoX3NpbXBsZV91cGRhdGVfb2xkc3Fs ZnVuYyg6YWlkLCA6YmlkLCA6dGlkLCA6ZGVsdGEpO1xuIgorCX0sCiAJewogCQkic2VsZWN0LW9u bHkiLAogCQkiPGJ1aWx0aW46IHNlbGVjdCBvbmx5PiIsCkBAIC05MTcsNiArOTcxLDcgQEAgdXNh Z2Uodm9pZCkKIAkJICAgIiAgLS1mb3JlaWduLWtleXMgICAgICAgICAgIGNyZWF0ZSBmb3JlaWdu IGtleSBjb25zdHJhaW50cyBiZXR3ZWVuIHRhYmxlc1xuIgogCQkgICAiICAtLWluZGV4LXRhYmxl c3BhY2U9VEFCTEVTUEFDRVxuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl YXRlIGluZGV4ZXMgaW4gdGhlIHNwZWNpZmllZCB0YWJsZXNwYWNlXG4iCisJCSAgICIgIC0tbm8t ZnVuY3Rpb25zICAgICAgICAgICBkbyBub3QgY3JlYXRlIHBsL3Bnc3FsIG9yIFNRTCBmdW5jdGlv bnMgZm9yIGludGVybmFsIHNjcmlwdHNcbiIKIAkJICAgIiAgLS1wYXJ0aXRpb24tbWV0aG9kPShy YW5nZXxoYXNoKVxuIgogCQkgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9u IHBnYmVuY2hfYWNjb3VudHMgd2l0aCB0aGlzIG1ldGhvZCAoZGVmYXVsdDogcmFuZ2UpXG4iCiAJ CSAgICIgIC0tcGFydGl0aW9ucz1OVU0gICAgICAgICBwYXJ0aXRpb24gcGdiZW5jaF9hY2NvdW50 cyBpbnRvIE5VTSBwYXJ0cyAoZGVmYXVsdDogMClcbiIKQEAgLTQ3NjMsNyArNDgxOCw3IEBAIGlu aXREcm9wVGFibGVzKFBHY29ubiAqY29uKQogCQkJCQkgInBnYmVuY2hfYWNjb3VudHMsICIKIAkJ CQkJICJwZ2JlbmNoX2JyYW5jaGVzLCAiCiAJCQkJCSAicGdiZW5jaF9oaXN0b3J5LCAiCi0JCQkJ CSAicGdiZW5jaF90ZWxsZXJzIik7CisJCQkJCSAicGdiZW5jaF90ZWxsZXJzIGNhc2NhZGUiKTsK IH0KIAogLyoKQEAgLTQ4MzgsNiArNDg5MywxMDcgQEAgY3JlYXRlUGFydGl0aW9ucyhQR2Nvbm4g KmNvbikKIAl0ZXJtUFFFeHBCdWZmZXIoJnF1ZXJ5KTsKIH0KIAorLyoKKyAqIENyZWF0ZSB0aGUg ZnVuY3Rpb25zIG5lZWRlZCBmb3IgcGxwZ3NxbC0qIGJ1aWx0aW4gc2NyaXB0cworICovCitzdGF0 aWMgdm9pZAoraW5pdENyZWF0ZUZ1bmN0aW9ucyhQR2Nvbm4gKmNvbikKK3sKKwlmcHJpbnRmKHN0 ZGVyciwgImNyZWF0aW5nIGZ1bmN0aW9ucy4uLlxuIik7CisKKwlleGVjdXRlU3RhdGVtZW50KGNv biwKKwkJIkNSRUFURSBGVU5DVElPTiBwZ2JlbmNoX3RwY2JfbGlrZShfYWlkIGludCwgX2JpZCBp bnQsIF90aWQgaW50LCBfZGVsdGEgaW50KVxuIgorCQkiUkVUVVJOUyB2b2lkXG4iCisJCSJMQU5H VUFHRSBwbHBnc3FsXG4iCisJCSJBUyAkcGxwZ3NxbCRcbiIKKwkJIkJFR0lOXG4iCisJCSIgICAg VVBEQVRFIHBnYmVuY2hfYWNjb3VudHMgU0VUIGFiYWxhbmNlID0gYWJhbGFuY2UgKyBfZGVsdGEg V0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJIiAgICBQRVJGT1JNIGFiYWxhbmNlIEZST00gcGdiZW5j aF9hY2NvdW50cyBXSEVSRSBhaWQgPSBfYWlkO1xuIgorCQkiICAgIFVQREFURSBwZ2JlbmNoX3Rl bGxlcnMgU0VUIHRiYWxhbmNlID0gdGJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgdGlkID0gX3RpZDtc biIKKwkJIiAgICBVUERBVEUgcGdiZW5jaF9icmFuY2hlcyBTRVQgYmJhbGFuY2UgPSBiYmFsYW5j ZSArIF9kZWx0YSBXSEVSRSBiaWQgPSBfYmlkO1xuIgorCQkiICAgIElOU0VSVCBJTlRPIHBnYmVu Y2hfaGlzdG9yeSAodGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKF90aWQsIF9i aWQsIF9haWQsIF9kZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgorCQkiRU5EO1xuIgorCQki JHBscGdzcWwkO1xuIik7CisJZXhlY3V0ZVN0YXRlbWVudChjb24sCisJCSJDUkVBVEUgRlVOQ1RJ T04gcGdiZW5jaF9zaW1wbGVfdXBkYXRlKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9k ZWx0YSBpbnQpXG4iCisJCSJSRVRVUk5TIHZvaWRcbiIKKwkJIkxBTkdVQUdFIHBscGdzcWxcbiIK KwkJIkFTICRwbHBnc3FsJFxuIgorCQkiQkVHSU5cbiIKKwkJIiAgICBVUERBVEUgcGdiZW5jaF9h Y2NvdW50cyBTRVQgYWJhbGFuY2UgPSBhYmFsYW5jZSArIF9kZWx0YSBXSEVSRSBhaWQgPSBfYWlk O1xuIgorCQkiICAgIFBFUkZPUk0gYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJF IGFpZCA9IF9haWQ7XG4iCisJCSIgICAgSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQs IGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2RlbHRh LCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJCSJFTkQ7XG4iCisJCSIkcGxwZ3NxbCQ7XG4iKTsK KwlpZiAoKFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCkpCisJeworCQlleGVjdXRlU3Rh dGVtZW50KGNvbiwKKwkJCSJDUkVBVEUgRlVOQ1RJT04gcGdiZW5jaF90cGNiX2xpa2Vfc3FsZnVu YyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KVxuIgorCQkJIlJFVFVS TlMgdm9pZFxuIgorCQkJIkJFR0lOIEFUT01JQ1xuIgorCQkJIiAgICBVUERBVEUgcGdiZW5jaF9h Y2NvdW50cyBTRVQgYWJhbGFuY2UgPSBhYmFsYW5jZSArIF9kZWx0YSBXSEVSRSBhaWQgPSBfYWlk O1xuIgorCQkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJF IGFpZCA9IF9haWQ7XG4iCisJCQkiICAgIFVQREFURSBwZ2JlbmNoX3RlbGxlcnMgU0VUIHRiYWxh bmNlID0gdGJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgdGlkID0gX3RpZDtcbiIKKwkJCSIgICAgVVBE QVRFIHBnYmVuY2hfYnJhbmNoZXMgU0VUIGJiYWxhbmNlID0gYmJhbGFuY2UgKyBfZGVsdGEgV0hF UkUgYmlkID0gX2JpZDtcbiIKKwkJCSIgICAgSU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0 aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2Rl bHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJCQkiRU5EO1xuIik7CisJCWV4ZWN1dGVTdGF0 ZW1lbnQoY29uLAorCQkJIkNSRUFURSBGVU5DVElPTiBwZ2JlbmNoX3NpbXBsZV91cGRhdGVfc3Fs ZnVuYyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KVxuIgorCQkJIlJF VFVSTlMgdm9pZFxuIgorCQkJIkJFR0lOIEFUT01JQ1xuIgorCQkJIiAgICBVUERBVEUgcGdiZW5j aF9hY2NvdW50cyBTRVQgYWJhbGFuY2UgPSBhYmFsYW5jZSArIF9kZWx0YSBXSEVSRSBhaWQgPSBf YWlkO1xuIgorCQkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdI RVJFIGFpZCA9IF9haWQ7XG4iCisJCQkiICAgIElOU0VSVCBJTlRPIHBnYmVuY2hfaGlzdG9yeSAo dGlkLCBiaWQsIGFpZCwgZGVsdGEsIG10aW1lKSBWQUxVRVMgKF90aWQsIF9iaWQsIF9haWQsIF9k ZWx0YSwgQ1VSUkVOVF9USU1FU1RBTVApO1xuIgorCQkJIkVORDtcbiIpOworCX0KKwlleGVjdXRl U3RhdGVtZW50KGNvbiwKKwkJIkNSRUFURSBGVU5DVElPTiBwZ2JlbmNoX3RwY2JfbGlrZV9vbGRz cWxmdW5jKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpXG4iCisJCSJS RVRVUk5TIHZvaWRcbiIKKwkJIkxBTkdVQUdFIHNxbFxuIgorCQkiQVMgJHNxbCRcbiIKKwkJIi0t IEJFR0lOXG4iCisJCSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3VudHMgU0VUIGFiYWxhbmNlID0g YWJhbGFuY2UgKyBfZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJIiAgICBTRUxFQ1QgYWJh bGFuY2UgRlJPTSBwZ2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCSIgICAg VVBEQVRFIHBnYmVuY2hfdGVsbGVycyBTRVQgdGJhbGFuY2UgPSB0YmFsYW5jZSArIF9kZWx0YSBX SEVSRSB0aWQgPSBfdGlkO1xuIgorCQkiICAgIFVQREFURSBwZ2JlbmNoX2JyYW5jaGVzIFNFVCBi YmFsYW5jZSA9IGJiYWxhbmNlICsgX2RlbHRhIFdIRVJFIGJpZCA9IF9iaWQ7XG4iCisJCSIgICAg SU5TRVJUIElOVE8gcGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUp IFZBTFVFUyAoX3RpZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4i CisJCSItLSBFTkQ7XG4iCisJCSIkc3FsJDtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAor CQkiQ1JFQVRFIEZVTkNUSU9OIHBnYmVuY2hfc2ltcGxlX3VwZGF0ZV9vbGRzcWxmdW5jKF9haWQg aW50LCBfYmlkIGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpXG4iCisJCSJSRVRVUk5TIHZvaWRc biIKKwkJIkxBTkdVQUdFIHNxbFxuIgorCQkiQVMgJHNxbCRcbiIKKwkJIi0tIEJFR0lOXG4iCisJ CSIgICAgVVBEQVRFIHBnYmVuY2hfYWNjb3VudHMgU0VUIGFiYWxhbmNlID0gYWJhbGFuY2UgKyBf ZGVsdGEgV0hFUkUgYWlkID0gX2FpZDtcbiIKKwkJIiAgICBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBw Z2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9IF9haWQ7XG4iCisJCSIgICAgSU5TRVJUIElOVE8g cGdiZW5jaF9oaXN0b3J5ICh0aWQsIGJpZCwgYWlkLCBkZWx0YSwgbXRpbWUpIFZBTFVFUyAoX3Rp ZCwgX2JpZCwgX2FpZCwgX2RlbHRhLCBDVVJSRU5UX1RJTUVTVEFNUCk7XG4iCisJCSItLSBFTkQ7 XG4iCisJCSIkc3FsJDtcbiIpOworfQorCisvKgorICogUmVtb3ZlIG9sZCBwZ2JlbmNoIGZ1bmN0 aW9ucywgaWYgYW55IGV4aXN0CisgKi8KK3N0YXRpYyB2b2lkCitpbml0RHJvcEZ1bmN0aW9ucyhQ R2Nvbm4gKmNvbikKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImRyb3BwaW5nIG9sZCBmdW5jdGlvbnMu Li5cbiIpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sCisJCSJEUk9QIEZVTkNUSU9OIElGIEVY SVNUUyBwZ2JlbmNoX3RwY2JfbGlrZShfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVs dGEgaW50KTtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAorCQkiRFJPUCBGVU5DVElPTiBJ RiBFWElTVFMgcGdiZW5jaF9zaW1wbGVfdXBkYXRlKF9haWQgaW50LCBfYmlkIGludCwgX3RpZCBp bnQsIF9kZWx0YSBpbnQpO1xuIik7CisJZXhlY3V0ZVN0YXRlbWVudChjb24sCisJCSJEUk9QIEZV TkNUSU9OIElGIEVYSVNUUyBwZ2JlbmNoX3RwY2JfbGlrZV9zcWxmdW5jKF9haWQgaW50LCBfYmlk IGludCwgX3RpZCBpbnQsIF9kZWx0YSBpbnQpO1xuIik7CisJZXhlY3V0ZVN0YXRlbWVudChjb24s CisJCSJEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwZ2JlbmNoX3NpbXBsZV91cGRhdGVfc3FsZnVu YyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50KTtcbiIpOworCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLAorCQkiRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcGdiZW5jaF90cGNi X2xpa2Vfb2xkc3FsZnVuYyhfYWlkIGludCwgX2JpZCBpbnQsIF90aWQgaW50LCBfZGVsdGEgaW50 KTtcbiIpOworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLAorCQkiRFJPUCBGVU5DVElPTiBJRiBFWElT VFMgcGdiZW5jaF9zaW1wbGVfdXBkYXRlX29sZHNxbGZ1bmMoX2FpZCBpbnQsIF9iaWQgaW50LCBf dGlkIGludCwgX2RlbHRhIGludCk7XG4iKTsKK30KKwogLyoKICAqIENyZWF0ZSBwZ2JlbmNoJ3Mg c3RhbmRhcmQgdGFibGVzCiAgKi8KQEAgLTUzMjQsNiArNTQ4MCwxNCBAQCBydW5Jbml0U3RlcHMo Y29uc3QgY2hhciAqaW5pdGlhbGl6ZV9zdGVwcykKIAkJCQlvcCA9ICJmb3JlaWduIGtleXMiOwog CQkJCWluaXRDcmVhdGVGS2V5cyhjb24pOwogCQkJCWJyZWFrOworCQkJY2FzZSAnWSc6CisJCQkJ b3AgPSAiZHJvcCBmdW5jdGlvbnMiOworCQkJCWluaXREcm9wRnVuY3Rpb25zKGNvbik7CisJCQkJ YnJlYWs7CisJCQljYXNlICd5JzoKKwkJCQlvcCA9ICJjcmVhdGUgZnVuY3Rpb25zIjsKKwkJCQlp bml0Q3JlYXRlRnVuY3Rpb25zKGNvbik7CisJCQkJYnJlYWs7CiAJCQljYXNlICcgJzoKIAkJCQli cmVhazsJCQkvKiBpZ25vcmUgKi8KIAkJCWRlZmF1bHQ6CkBAIC02MTU5LDcgKzYzMjMsNyBAQCBs aXN0QXZhaWxhYmxlU2NyaXB0cyh2b2lkKQogCiAJZnByaW50ZihzdGRlcnIsICJBdmFpbGFibGUg YnVpbHRpbiBzY3JpcHRzOlxuIik7CiAJZm9yIChpID0gMDsgaSA8IGxlbmd0aG9mKGJ1aWx0aW5f c2NyaXB0KTsgaSsrKQotCQlmcHJpbnRmKHN0ZGVyciwgIiAgJTEzczogJXNcbiIsIGJ1aWx0aW5f c2NyaXB0W2ldLm5hbWUsIGJ1aWx0aW5fc2NyaXB0W2ldLmRlc2MpOworCQlmcHJpbnRmKHN0ZGVy ciwgIiAgJTIxczogJXNcbiIsIGJ1aWx0aW5fc2NyaXB0W2ldLm5hbWUsIGJ1aWx0aW5fc2NyaXB0 W2ldLmRlc2MpOwogCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKIH0KIApAQCAtNjcxOCw2ICs2ODgy LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsidmVyYm9zZS1lcnJvcnMiLCBu b19hcmd1bWVudCwgTlVMTCwgMTV9LAogCQl7ImV4aXQtb24tYWJvcnQiLCBub19hcmd1bWVudCwg TlVMTCwgMTZ9LAogCQl7ImRlYnVnIiwgbm9fYXJndW1lbnQsIE5VTEwsIDE3fSwKKwkJeyJuby1m dW5jdGlvbnMiLCBub19hcmd1bWVudCwgTlVMTCwgMTh9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0K IAl9OwogCkBAIC02NzI1LDYgKzY4OTAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAlib29sCQlpc19pbml0X21vZGUgPSBmYWxzZTsJLyogaW5pdGlhbGl6ZSBtb2RlPyAqLwogCWNo YXIJICAgKmluaXRpYWxpemVfc3RlcHMgPSBOVUxMOwogCWJvb2wJCWZvcmVpZ25fa2V5cyA9IGZh bHNlOworCWJvb2wJCW5vX2Z1bmN0aW9ucyA9IGZhbHNlOwogCWJvb2wJCWlzX25vX3ZhY3V1bSA9 IGZhbHNlOwogCWJvb2wJCWRvX3ZhY3V1bV9hY2NvdW50cyA9IGZhbHNlOyAvKiB2YWN1dW0gYWNj b3VudHMgdGFibGU/ICovCiAJaW50CQkJb3B0aW5kZXg7CkBAIC03MDcxLDYgKzcyMzcsMTAgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlIDE3OgkJCS8qIGRlYnVnICovCiAJ CQkJcGdfbG9nZ2luZ19pbmNyZWFzZV92ZXJib3NpdHkoKTsKIAkJCQlicmVhazsKKwkJCWNhc2Ug MTg6CQkJCS8qIG5vLWZ1bmN0aW9ucyAqLworCQkJCWluaXRpYWxpemF0aW9uX29wdGlvbl9zZXQg PSB0cnVlOworCQkJCW5vX2Z1bmN0aW9ucyA9IHRydWU7CisJCQkJYnJlYWs7CiAJCQlkZWZhdWx0 OgogCQkJCS8qIGdldG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwogCQkJ CXBnX2xvZ19lcnJvcl9oaW50KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlv bi4iLCBwcm9nbmFtZSk7CkBAIC03MTY4LDYgKzczMzgsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCQkJKnAgPSAnICc7CiAJCX0KIAorCQlpZiAobm9fZnVuY3Rpb25zKQorCQl7 CisJCQkvKiBSZW1vdmUgY3JlYXRlIGZ1bmN0aW9uIHN0ZXAgaW4gaW5pdGlhbGl6ZV9zdGVwcyAq LworCQkJY2hhcgkgICAqcDsKKworCQkJd2hpbGUgKChwID0gc3RyY2hyKGluaXRpYWxpemVfc3Rl cHMsICd5JykpICE9IE5VTEwpCisJCQkJKnAgPSAnICc7CisJCX0KKwogCQlpZiAoZm9yZWlnbl9r ZXlzKQogCQl7CiAJCQkvKiBBZGQgJ2YnIHRvIGVuZCBvZiBpbml0aWFsaXplX3N0ZXBzLCBpZiBu b3QgYWxyZWFkeSB0aGVyZSAqLwotLSAKMi4yNC4zIChBcHBsZSBHaXQtMTI4KQoK --000000000000dab3d3063dbd5938--