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 1wz6Gk-003oOJ-0f for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Aug 2026 05:33:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wz6Gj-00BJQA-0Y for pgsql-hackers@arkaria.postgresql.org; Wed, 26 Aug 2026 05:33:49 +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 1wz6Gh-00BJPn-2t for pgsql-hackers@lists.postgresql.org; Wed, 26 Aug 2026 05:33:48 +0000 Received: from fhigh-b7-smtp.messagingengine.com ([202.12.124.158]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wz6Gf-00000002SNC-15DR for pgsql-hackers@lists.postgresql.org; Wed, 26 Aug 2026 05:33:47 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.stl.internal (Postfix) with ESMTP id 26F407A009F; Wed, 26 Aug 2026 01:33:44 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Wed, 26 Aug 2026 01:33:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1787722424; x=1787808824; bh=3Qo+t1GLhN FWi5LWza3R+/PtUXxXGMIl7siNKvZWJoE=; b=Z6Ksm+d879W0JB8fY3HV24qmlt CKsboMgPlJjqw79lD0cOITnVvVhIXP60UV4xzXSEvVBrijLe9FARGgLRKFEaW/1w LnyiVNNBO0aDaYyD94FHqRCVP/EN65mlTjnCbhQ3+6c3qTYsdhZ86/HLXJ0G7RaA CA0vcN/lwKSdonC+fR6D84yWy8UCEs+uvksIKdFGmJyM0xATGzL7nbxamA/jNgvF 2i/vtWv481Pc8tkctXXZWenCooExNcsO4oEdDMO3eiIJxzOdkjCQ97sIGTgHF5cS skl6Rj3U2SN3XvKYZs1vxdFFaiuNVbueBOc4KRj3ZKXE5zatu/DckUMfDUYQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1787722424; x=1787808824; bh=3Qo+t1GLhNFWi5LWza3R+/PtUXxXGMIl7si NKvZWJoE=; b=LuNbIA3UnCPF7CMwh0HiTN1iQ3sPayNmikzpPAQeD5BrsPGx/4S 3bDTxeP/3fw1Jn7r95sua2YlxBzG1N8C6GuARhMB127DHp8zLpR+a7AHs4MbInX6 EcmzidQZxdo/2ByZyLoyVj5N8y9Fo+1aRvC6lfSHT8WAxnvL61KhaqEo44hw7le4 CNXbbKEbOehltbBodmS1eLBpIUmut/nY2RIPlI4aGge2sw1r73uAzp14MDilz4pJ JizMZf4ewN1vZkb+U0uAbphzzdKUnheBDFo4XzmrQ8Th8rs0gtv5wEj2W3+2GFV0 YYeihb4R+fOSQKRlDFDwa+FKhSBLZOZqw9A== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTGWJpt0pn5AQ7j3q3FYlWJbN4oTc3CieIWEN55dRATzRFbpOAJkLCvhDs6ZwmVC40 tIgxZjQgDXRdQtg9rZcZDAnBdu0pg3wmfrAPis4Jgn/t08qc0LJtogRejYiofyJe1eXSSq N4Z7brMg+imJUO+dGxjeLh1shrIeTV5LOWpz1x9BxLKTE2Uoj4KA3vmfeOS7jGeUzMzdmV bxFKUfzFEaoSh7Y0b/08H4tkaeUyrnqZ2K3JhYOSKbxDWTk49JCTAl4ekPnSSurv3Den/a KrYyS2297EnzcpiOw4YZUrSVC1escCIeogviGxDu9gTw8Gpiunjx0TNcSnG5UadWddwyNk mFUFZuARg9ny+TtK+pDd3Y0QlMKx6Pi7xFpBVIqeWs+xbB3XjH3jbKnJdrkkcrkjIYSRMw HOCyGDbBLNLOSkmLeYKDN/GsBFQNVFyRhdLHr4UT+N+gV5tX4Wkg4TR8K8WHzOh5MiQvgs YTKtiu8J8SFo9apjzAeWkEC4keGGYdRyhu2q3n16AZTAJtPxBOCOclyYyKE/cXZGjIEeXI cZZGyEyos3b/5XiF1TRgRmakBCmlGV5WHxkFFxOS61HFLAcXhyD8NBx+es16wQAziPzwVT rypZCs/iqhkH0sU+joo+uv162ZadFo4RSn5zrExqok1WtgMBHmIHiTCeDnPw X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id A5ED1700065; Wed, 26 Aug 2026 01:33:43 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AV2wn8fFq74R Date: Wed, 26 Aug 2026 01:33:18 -0400 From: "Greg Burd" To: "Tom Lane" , "Andrew Dunstan" Cc: "PostgreSQL Hackers" Message-Id: In-Reply-To: <618056.1787663948@sss.pgh.pa.us> References: <58ed7628-7527-450d-8acc-b14a322e9375@dunslane.net> <618056.1787663948@sss.pgh.pa.us> Subject: Re: Add a Nix flake Content-Type: multipart/mixed; boundary=155dd8dd773c642b338c3797ac189ca0370ab52b List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --155dd8dd773c642b338c3797ac189ca0370ab52b Content-Type: text/plain Content-Transfer-Encoding: 7bit On Tue Aug 25, 2026 at 6:37 AM CDT, Andrew Dunstan wrote: > Well, "growing" could cover a multitude of possibilities. It could mean > there was one and now there are two. [...] But if you want to say that > there is a significant number of people actually contributing here who > use it that would be all the better for some evidence. Fair, and I shouldn't have leaned on an unquantified "growing." Let me separate what I can back up from what I can't. What I can point to concretely: - There is already an active pgsql-hackers thread, "Building with meson on NixOS/nixpkgs," [1] where the Meson build was adjusted specifically because of problems Nix/NixOS packagers hit. So Nix is already shaping build-related decisions here whether or not we carry a flake. - Wolfgang Walther maintains the PostgreSQL packaging in nixpkgs and has posted here on exactly these issues. - Supabase's fork use Nix extensively. [2] - I keep a flake setup that I re-apply/use to enable predictable efficient development cross-platform. - Tristan (upthread) keeps a private flake and a NixOS-based buildfarm client. What I can't do is hand you a survey. I don't have a count of contributors who develop on Nix, and I'd rather admit that than dress up a guess. If the bar for this is demonstrated contributor demand, that's a reasonable bar and I'm happy to let the thread be the evidence, if it's just me and Tristan, so be it; this can wait. > Historically we've been fairly resistant to carrying things related to > how people build or develop postgres. Understood, and I don't want to relitigate that policy. The narrower claim I'd make is that a flake is closer to the .editorconfig / .dir-locals.el end of the spectrum (declare-the-environment) than to endorsing a build system, it doesn't touch configure, Meson, or the Makefiles. But I take the point that the door being narrow is deliberate. On Tue Aug 25, 2026 at 8:19 AM CDT, Tom Lane wrote: > I might hold my nose if the effects extended only to one more root-level > file (although that's not great). But if we're talking about rather > expansive .gitexclude patterns, I'm going to push back on the grounds of > possible unforeseen side-effects on other peoples' work. That's a fair objection and easy to remove: v3 (attached) is exactly one new root-level file, flake.nix, and nothing else. I've dropped the .gitignore changes entirely. For what it's worth on side-effects: the patterns I'd proposed were root-anchored (/flake.lock, /result, /result-*), the same shape as the existing /tmp_install/ and /portlock/ lines, so they couldn't have matched a result/ elsewhere in the tree. But that's beside the point now, they're gone. The build artifacts belong in each developer's own $GIT_DIR/info/exclude, which is precisely what the .gitignore header already recommends for "files from local workflows"; `nix build -o` can also just name the symlink. No committed-ignore changes needed. So the question really does reduce to your "one more root-level file, though that's not great." I won't pretend that's nothing. If the consensus is that even one file is more build/dev tooling than the tree wants to carry, I'll accept that outcome, but if it's going to live somewhere, one self-contained file at the root is the smallest footprint I can offer. best. -greg [1] https://pg.ddx.io/m/pgsql-hackers/5d6b6485-9eff-44a0-99ac-661fdeb72a21@technowledgy.de/T/ [2] https://github.com/supabase/postgres/blob/develop/flake.nix --155dd8dd773c642b338c3797ac189ca0370ab52b Content-Disposition: attachment; filename*0="v3-0001-Add-a-Nix-flake-for-reproducible-builds-and-dev-s.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v3-0001-Add-a-Nix-flake-for-reproducible-builds-and-dev-s.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA4MzI3M2YzODRiYmY3ZDk4NDE4NTc4Njk3YzM0MDZlMWMwNjk5ZjczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAyNSBBdWcgMjAyNiAxNTozNDowNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjNdIEFk ZCBhIE5peCBmbGFrZSBmb3IgcmVwcm9kdWNpYmxlIGJ1aWxkcyBhbmQgZGV2IHNoZWxscwoK UHJvdmlkZSBhIGZsYWtlLm5peCBhdCB0aGUgcmVwb3NpdG9yeSByb290IHNvIGNvbnRyaWJ1 dG9ycyBvbiBOaXgtYmFzZWQKc3lzdGVtcyAoTGludXgsIG1hY09TLCBhbmQgaW5jcmVhc2lu Z2x5IEJTRCBhbmQgaWxsdW1vcykgZ2V0IGEgc2luZ2xlLAppbi10cmVlIHN0YXJ0aW5nIHBv aW50IGluc3RlYWQgb2YgbWFpbnRhaW5pbmcgcHJpdmF0ZSwgZHJpZnRpbmcgY29waWVzLgoK SXQgZG9lc24ndCBhZGQgYSBidWlsZCBzeXN0ZW06IGBuaXggZGV2ZWxvcGAgZHJvcHMgeW91 IGludG8gYSBzaGVsbCB3aXRoCmJpc29uLCBmbGV4LCBwZXJsLCB0aGUgb3B0aW9uYWwgbGli cmFyaWVzLCBhbmQgdGhlIGRvY3MgdG9vbGNoYWluIG9uIFBBVEgsCndoZXJlIGBtZXNvbiBz ZXR1cGAgKHRoZSBkZWZhdWx0KSBvciBgLi9jb25maWd1cmVgIGp1c3Qgd29ya3M7IGBuaXgg YnVpbGRgCnByb2R1Y2VzIGEgc2VydmVyLgoKRXZlcnkgb3B0aW9uYWwgY29uZmlndXJlL01l c29uIGZlYXR1cmUgaXMgYSBib29sZWFuIHRvZ2dsZSB3aXRoCnBsYXRmb3JtLWFwcHJvcHJp YXRlIGRlZmF1bHRzIChpb191cmluZywgbGlibnVtYSwgc3lzdGVtZCwgUEFNIG9uIExpbnV4 OwpCb25qb3VyIG9uIG1hY09TKSwgc28gaXQgaXMgYSBzdGFydGluZyBwb2ludCwgbm90IGEg cG9saWN5LiBQcmVzZXRzIGNvdmVyCmRlYnVnLCBtaW5pbWFsLCBhbmQgYXV0b2NvbmYgYnVp bGRzLgoKTm8gZmxha2UubG9jayBpcyBjb21taXR0ZWQgb24gcHVycG9zZTogcGlubmluZyBu aXhwa2dzIHdvdWxkIGZyZWV6ZQpjb250cmlidXRvcnMgdG8gb25lIGRlcGVuZGVuY3kgc25h cHNob3QuIFRoZSBmbGFrZSBpbnN0ZWFkIHRyYWNrcyB3aGF0ZXZlcgpuaXhwa2dzIHRoZSBk ZXZlbG9wZXIgYWxyZWFkeSBydW5zOyBhbnlvbmUgbmVlZGluZyByZXByb2R1Y2liaWxpdHkg Y2FuCmdlbmVyYXRlIGEgbG9jayBsb2NhbGx5LgoKVGhpcyB0b3VjaGVzIG9ubHkgYSBzaW5n bGUgbmV3IHJvb3QtbGV2ZWwgZmlsZS4gQnVpbGQgYXJ0aWZhY3RzCihmbGFrZS5sb2NrLCBy ZXN1bHQgc3ltbGlua3MpIGFyZSBsZWZ0IHRvIGVhY2ggZGV2ZWxvcGVyJ3MgbG9jYWwgaWdu b3JlCigkR0lUX0RJUi9pbmZvL2V4Y2x1ZGUpLCBhcyB0aGUgLmdpdGlnbm9yZSBoZWFkZXIg YWxyZWFkeSByZWNvbW1lbmRzIGZvcgpmaWxlcyBmcm9tIGxvY2FsIHdvcmtmbG93czsgYG5p eCBidWlsZCAtb2AgY2FuIGFsc28gbmFtZSB0aGUgc3ltbGluay4KLS0tCiBmbGFrZS5uaXgg fCAyNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBmbGFrZS5uaXgKCmRpZmYgLS1naXQgYS9mbGFrZS5uaXggYi9mbGFrZS5uaXgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdjMTEzY2RlZGM4Ci0t LSAvZGV2L251bGwKKysrIGIvZmxha2Uubml4CkBAIC0wLDAgKzEsMjU3IEBACit7CisgIGRl c2NyaXB0aW9uID0gIlBvc3RncmVTUUwsIGJ1aWx0IGZyb20gdGhpcyBzb3VyY2UgdHJlZSI7 CisKKyAgaW5wdXRzLm5peHBrZ3MudXJsID0gImdpdGh1YjpOaXhPUy9uaXhwa2dzL25peG9z LXVuc3RhYmxlIjsKKworICBvdXRwdXRzID0KKyAgICB7IHNlbGYsIG5peHBrZ3MgfToKKyAg ICBsZXQKKyAgICAgIHN5c3RlbXMgPSBbCisgICAgICAgICJ4ODZfNjQtbGludXgiCisgICAg ICAgICJhYXJjaDY0LWxpbnV4IgorICAgICAgICAieDg2XzY0LWRhcndpbiIKKyAgICAgICAg ImFhcmNoNjQtZGFyd2luIgorICAgICAgXTsKKyAgICAgIGZvckFsbFN5c3RlbXMgPSBmOiBu aXhwa2dzLmxpYi5nZW5BdHRycyBzeXN0ZW1zIChzeXN0ZW06IGYgbml4cGtncy5sZWdhY3lQ YWNrYWdlcy4ke3N5c3RlbX0pOworCisgICAgICAjIEEgc2luZ2xlIGJ1aWxkZXIgY292ZXJp bmcgZXZlcnkgb3B0aW9uYWwgZmVhdHVyZSAuL2NvbmZpZ3VyZSBhbmQKKyAgICAgICMgbWVz b24gZXhwb3NlLiBFYWNoIGZlYXR1cmUgaXMgYSBib29sZWFuIHRvZ2dsZSB3aXJlZCB0byBp dHMKKyAgICAgICMgYnVpbGRJbnB1dCArIGZsYWc7IGZsaXAgYW55IG9mIHRoZW0gdmlhIC5v dmVycmlkZSB7IC4uLiB9LgorICAgICAgIyBQbGF0Zm9ybS1zcGVjaWZpYyBmZWF0dXJlcyBk ZWZhdWx0IHRvIHRoZWlyIGF2YWlsYWJpbGl0eS4KKyAgICAgIHBvc3RncmVzcWxGb3IgPQor ICAgICAgICBwa2dzOgorICAgICAgICBsZXQKKyAgICAgICAgICBpbmhlcml0IChwa2dzKSBs aWIgc3RkZW52OworICAgICAgICAgIG9uTGludXggPSBzdGRlbnYuaG9zdFBsYXRmb3JtLmlz TGludXg7CisgICAgICAgICAgb25EYXJ3aW4gPSBzdGRlbnYuaG9zdFBsYXRmb3JtLmlzRGFy d2luOworICAgICAgICBpbgorICAgICAgICBsaWIubWFrZU92ZXJyaWRhYmxlICgKKyAgICAg ICAgICB7CisgICAgICAgICAgICAjIEJ1aWxkIHN5c3RlbTogIm1lc29uIiAobmluamEpIG9y ICJhdXRvY29uZiIgKGNvbmZpZ3VyZS9tYWtlKS4KKyAgICAgICAgICAgICMgTWVzb24gaXMg dGhlIGRlZmF1bHQ7IGl0IGlzIHRoZSBwcm9qZWN0J3MgZXZlbnR1YWwgc29sZSBidWlsZCBz eXN0ZW0uCisgICAgICAgICAgICBidWlsZFN5c3RlbSA/ICJtZXNvbiIsCisKKyAgICAgICAg ICAgICMgT3B0aW9uYWwgbGlicmFyeSBmZWF0dXJlcyAoYnVpbGRJbnB1dCArIGZsYWcpLgor ICAgICAgICAgICAgaWN1U3VwcG9ydCA/IHRydWUsCisgICAgICAgICAgICByZWFkbGluZVN1 cHBvcnQgPyB0cnVlLAorICAgICAgICAgICAgemxpYlN1cHBvcnQgPyB0cnVlLAorICAgICAg ICAgICAgb3BlbnNzbFN1cHBvcnQgPyB0cnVlLAorICAgICAgICAgICAgbGlieG1sU3VwcG9y dCA/IHRydWUsCisgICAgICAgICAgICBsaWJ4c2x0U3VwcG9ydCA/IHRydWUsCisgICAgICAg ICAgICBsejRTdXBwb3J0ID8gdHJ1ZSwKKyAgICAgICAgICAgIHpzdGRTdXBwb3J0ID8gdHJ1 ZSwKKyAgICAgICAgICAgIHV1aWRTdXBwb3J0ID8gdHJ1ZSwKKyAgICAgICAgICAgIGN1cmxT dXBwb3J0ID8gdHJ1ZSwKKworICAgICAgICAgICAgIyBQcm9jZWR1cmFsIGxhbmd1YWdlcy4K KyAgICAgICAgICAgIHBlcmxTdXBwb3J0ID8gdHJ1ZSwKKyAgICAgICAgICAgIHB5dGhvblN1 cHBvcnQgPyB0cnVlLAorICAgICAgICAgICAgdGNsU3VwcG9ydCA/IHRydWUsCisKKyAgICAg ICAgICAgICMgUGxhdGZvcm0tZ2F0ZWQgZmVhdHVyZXMuCisgICAgICAgICAgICBzeXN0ZW1k U3VwcG9ydCA/IG9uTGludXgsCisgICAgICAgICAgICBzZWxpbnV4U3VwcG9ydCA/IGZhbHNl LAorICAgICAgICAgICAgbGlidXJpbmdTdXBwb3J0ID8gb25MaW51eCwKKyAgICAgICAgICAg IG51bWFTdXBwb3J0ID8gb25MaW51eCwKKyAgICAgICAgICAgIGdzc1N1cHBvcnQgPyB0cnVl LAorICAgICAgICAgICAgbGRhcFN1cHBvcnQgPyBmYWxzZSwKKyAgICAgICAgICAgIHBhbVN1 cHBvcnQgPyBvbkxpbnV4LAorICAgICAgICAgICAgYm9uam91clN1cHBvcnQgPyBvbkRhcndp biwKKyAgICAgICAgICAgIGxsdm1TdXBwb3J0ID8gZmFsc2UsCisKKyAgICAgICAgICAgICMg RGV2ZWxvcGVyIC8gYnVpbGQtc2hhcGUgdG9nZ2xlcyAobm8gZXh0cmEgZGVwcykuCisgICAg ICAgICAgICBjYXNzZXJ0ID8gZmFsc2UsCisgICAgICAgICAgICBkZWJ1Z1N5bWJvbHMgPyBm YWxzZSwKKyAgICAgICAgICAgIHRhcFRlc3RzID8gdHJ1ZSwKKyAgICAgICAgICAgIGluamVj dGlvblBvaW50cyA/IGZhbHNlLAorCisgICAgICAgICAgICAjIERvY3VtZW50YXRpb24gYnVp bGQgKFNHTUwvRG9jQm9vayB0b29sY2hhaW4pLgorICAgICAgICAgICAgZG9jcyA/IGZhbHNl LAorICAgICAgICAgIH06CisgICAgICAgICAgbGV0CisgICAgICAgICAgICB1c2VNZXNvbiA9 IGJ1aWxkU3lzdGVtID09ICJtZXNvbiI7CisKKyAgICAgICAgICAgICMgZmVhdHVyZSAtPiB7 IGZsYWcgPSBjb25maWd1cmUgYXJnOyBkZXAgPSBidWlsZElucHV0IG9yIG51bGw7IH0KKyAg ICAgICAgICAgIGZlYXR1cmVGbGFnID0gY29uZDogZmxhZzogbGliLm9wdGlvbmFsIGNvbmQg ZmxhZzsKKyAgICAgICAgICAgIGZlYXR1cmVEZXAgPSBjb25kOiBkZXA6IGxpYi5vcHRpb25h bCBjb25kIGRlcDsKKworICAgICAgICAgICAgY29uZmlndXJlRmVhdHVyZXMgPSBsaWIuZmxh dHRlbiBbCisgICAgICAgICAgICAgIChmZWF0dXJlRmxhZyBpY3VTdXBwb3J0ICItLXdpdGgt aWN1IikKKyAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnICghaWN1U3VwcG9ydCkgIi0td2l0 aG91dC1pY3UiKQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgKCFyZWFkbGluZVN1cHBv cnQpICItLXdpdGhvdXQtcmVhZGxpbmUiKQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcg KCF6bGliU3VwcG9ydCkgIi0td2l0aG91dC16bGliIikKKyAgICAgICAgICAgICAgKGZlYXR1 cmVGbGFnIG9wZW5zc2xTdXBwb3J0ICItLXdpdGgtc3NsPW9wZW5zc2wiKQorICAgICAgICAg ICAgICAoZmVhdHVyZUZsYWcgbGlieG1sU3VwcG9ydCAiLS13aXRoLWxpYnhtbCIpCisgICAg ICAgICAgICAgIChmZWF0dXJlRmxhZyBsaWJ4c2x0U3VwcG9ydCAiLS13aXRoLWxpYnhzbHQi KQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgbHo0U3VwcG9ydCAiLS13aXRoLWx6NCIp CisgICAgICAgICAgICAgIChmZWF0dXJlRmxhZyB6c3RkU3VwcG9ydCAiLS13aXRoLXpzdGQi KQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgdXVpZFN1cHBvcnQgIi0td2l0aC11dWlk PWUyZnMiKQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgY3VybFN1cHBvcnQgIi0td2l0 aC1saWJjdXJsIikKKyAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnIHBlcmxTdXBwb3J0ICIt LXdpdGgtcGVybCIpCisgICAgICAgICAgICAgIChmZWF0dXJlRmxhZyBweXRob25TdXBwb3J0 ICItLXdpdGgtcHl0aG9uIikKKyAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnIHRjbFN1cHBv cnQgIi0td2l0aC10Y2wiKQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgc3lzdGVtZFN1 cHBvcnQgIi0td2l0aC1zeXN0ZW1kIikKKyAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnIHNl bGludXhTdXBwb3J0ICItLXdpdGgtc2VsaW51eCIpCisgICAgICAgICAgICAgIChmZWF0dXJl RmxhZyBsaWJ1cmluZ1N1cHBvcnQgIi0td2l0aC1saWJ1cmluZyIpCisgICAgICAgICAgICAg IChmZWF0dXJlRmxhZyBudW1hU3VwcG9ydCAiLS13aXRoLWxpYm51bWEiKQorICAgICAgICAg ICAgICAoZmVhdHVyZUZsYWcgZ3NzU3VwcG9ydCAiLS13aXRoLWdzc2FwaSIpCisgICAgICAg ICAgICAgIChmZWF0dXJlRmxhZyBsZGFwU3VwcG9ydCAiLS13aXRoLWxkYXAiKQorICAgICAg ICAgICAgICAoZmVhdHVyZUZsYWcgcGFtU3VwcG9ydCAiLS13aXRoLXBhbSIpCisgICAgICAg ICAgICAgIChmZWF0dXJlRmxhZyBib25qb3VyU3VwcG9ydCAiLS13aXRoLWJvbmpvdXIiKQor ICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgbGx2bVN1cHBvcnQgIi0td2l0aC1sbHZtIikK KyAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnIGNhc3NlcnQgIi0tZW5hYmxlLWNhc3NlcnQi KQorICAgICAgICAgICAgICAoZmVhdHVyZUZsYWcgZGVidWdTeW1ib2xzICItLWVuYWJsZS1k ZWJ1ZyIpCisgICAgICAgICAgICAgIChmZWF0dXJlRmxhZyB0YXBUZXN0cyAiLS1lbmFibGUt dGFwLXRlc3RzIikKKyAgICAgICAgICAgICAgKGZlYXR1cmVGbGFnIGluamVjdGlvblBvaW50 cyAiLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cyIpCisgICAgICAgICAgICBdOworCisgICAg ICAgICAgICAjIG1lc29uIHVzZXMgLURmZWF0dXJlPWVuYWJsZWQvZGlzYWJsZWQgaW5zdGVh ZCBvZiAtLXdpdGgtKi4KKyAgICAgICAgICAgIG1lc29uRmVhdHVyZXMgPSBsaWIuZmxhdHRl biBbCisgICAgICAgICAgICAgIFsgIi1EaWN1PSR7aWYgaWN1U3VwcG9ydCB0aGVuICJlbmFi bGVkIiBlbHNlICJkaXNhYmxlZCJ9IiBdCisgICAgICAgICAgICAgIFsgIi1EcmVhZGxpbmU9 JHtpZiByZWFkbGluZVN1cHBvcnQgdGhlbiAiZW5hYmxlZCIgZWxzZSAiZGlzYWJsZWQifSIg XQorICAgICAgICAgICAgICBbICItRHpsaWI9JHtpZiB6bGliU3VwcG9ydCB0aGVuICJlbmFi bGVkIiBlbHNlICJkaXNhYmxlZCJ9IiBdCisgICAgICAgICAgICAgIFsgIi1Ec3NsPSR7aWYg b3BlbnNzbFN1cHBvcnQgdGhlbiAib3BlbnNzbCIgZWxzZSAibm9uZSJ9IiBdCisgICAgICAg ICAgICAgIFsgIi1EbGlieG1sPSR7aWYgbGlieG1sU3VwcG9ydCB0aGVuICJlbmFibGVkIiBl bHNlICJkaXNhYmxlZCJ9IiBdCisgICAgICAgICAgICAgIFsgIi1EbGlieHNsdD0ke2lmIGxp YnhzbHRTdXBwb3J0IHRoZW4gImVuYWJsZWQiIGVsc2UgImRpc2FibGVkIn0iIF0KKyAgICAg ICAgICAgICAgWyAiLURsejQ9JHtpZiBsejRTdXBwb3J0IHRoZW4gImVuYWJsZWQiIGVsc2Ug ImRpc2FibGVkIn0iIF0KKyAgICAgICAgICAgICAgWyAiLUR6c3RkPSR7aWYgenN0ZFN1cHBv cnQgdGhlbiAiZW5hYmxlZCIgZWxzZSAiZGlzYWJsZWQifSIgXQorICAgICAgICAgICAgICBb ICItRHV1aWQ9JHtpZiB1dWlkU3VwcG9ydCB0aGVuICJlMmZzIiBlbHNlICJub25lIn0iIF0K KyAgICAgICAgICAgICAgWyAiLURsaWJjdXJsPSR7aWYgY3VybFN1cHBvcnQgdGhlbiAiZW5h YmxlZCIgZWxzZSAiZGlzYWJsZWQifSIgXQorICAgICAgICAgICAgICBbICItRHBscGVybD0k e2lmIHBlcmxTdXBwb3J0IHRoZW4gImVuYWJsZWQiIGVsc2UgImRpc2FibGVkIn0iIF0KKyAg ICAgICAgICAgICAgWyAiLURwbHB5dGhvbj0ke2lmIHB5dGhvblN1cHBvcnQgdGhlbiAiZW5h YmxlZCIgZWxzZSAiZGlzYWJsZWQifSIgXQorICAgICAgICAgICAgICBbICItRHBsdGNsPSR7 aWYgdGNsU3VwcG9ydCB0aGVuICJlbmFibGVkIiBlbHNlICJkaXNhYmxlZCJ9IiBdCisgICAg ICAgICAgICAgIFsgIi1Ec3lzdGVtZD0ke2lmIHN5c3RlbWRTdXBwb3J0IHRoZW4gImVuYWJs ZWQiIGVsc2UgImRpc2FibGVkIn0iIF0KKyAgICAgICAgICAgICAgWyAiLURzZWxpbnV4PSR7 aWYgc2VsaW51eFN1cHBvcnQgdGhlbiAiZW5hYmxlZCIgZWxzZSAiZGlzYWJsZWQifSIgXQor ICAgICAgICAgICAgICBbICItRGxpYnVyaW5nPSR7aWYgbGlidXJpbmdTdXBwb3J0IHRoZW4g ImVuYWJsZWQiIGVsc2UgImRpc2FibGVkIn0iIF0KKyAgICAgICAgICAgICAgWyAiLURsaWJu dW1hPSR7aWYgbnVtYVN1cHBvcnQgdGhlbiAiZW5hYmxlZCIgZWxzZSAiZGlzYWJsZWQifSIg XQorICAgICAgICAgICAgICBbICItRGdzc2FwaT0ke2lmIGdzc1N1cHBvcnQgdGhlbiAiZW5h YmxlZCIgZWxzZSAiZGlzYWJsZWQifSIgXQorICAgICAgICAgICAgICBbICItRGxkYXA9JHtp ZiBsZGFwU3VwcG9ydCB0aGVuICJlbmFibGVkIiBlbHNlICJkaXNhYmxlZCJ9IiBdCisgICAg ICAgICAgICAgIFsgIi1EcGFtPSR7aWYgcGFtU3VwcG9ydCB0aGVuICJlbmFibGVkIiBlbHNl ICJkaXNhYmxlZCJ9IiBdCisgICAgICAgICAgICAgIFsgIi1EYm9uam91cj0ke2lmIGJvbmpv dXJTdXBwb3J0IHRoZW4gImVuYWJsZWQiIGVsc2UgImRpc2FibGVkIn0iIF0KKyAgICAgICAg ICAgICAgWyAiLURsbHZtPSR7aWYgbGx2bVN1cHBvcnQgdGhlbiAiZW5hYmxlZCIgZWxzZSAi ZGlzYWJsZWQifSIgXQorICAgICAgICAgICAgICBbICItRGNhc3NlcnQ9JHtsaWIuYm9vbFRv U3RyaW5nIGNhc3NlcnR9IiBdCisgICAgICAgICAgICAgIFsgIi1EdGFwX3Rlc3RzPSR7aWYg dGFwVGVzdHMgdGhlbiAiZW5hYmxlZCIgZWxzZSAiZGlzYWJsZWQifSIgXQorICAgICAgICAg ICAgICBbICItRGluamVjdGlvbl9wb2ludHM9JHtsaWIuYm9vbFRvU3RyaW5nIGluamVjdGlv blBvaW50c30iIF0KKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGJ1aWxkSW5wdXRz ID0gbGliLmZsYXR0ZW4gKHdpdGggcGtnczsgWworICAgICAgICAgICAgICAoZmVhdHVyZURl cCBpY3VTdXBwb3J0IGljdSkKKyAgICAgICAgICAgICAgKGZlYXR1cmVEZXAgcmVhZGxpbmVT dXBwb3J0IHJlYWRsaW5lKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCB6bGliU3VwcG9y dCB6bGliKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCBvcGVuc3NsU3VwcG9ydCBvcGVu c3NsKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCBsaWJ4bWxTdXBwb3J0IGxpYnhtbDIp CisgICAgICAgICAgICAgIChmZWF0dXJlRGVwIGxpYnhzbHRTdXBwb3J0IGxpYnhzbHQpCisg ICAgICAgICAgICAgIChmZWF0dXJlRGVwIGx6NFN1cHBvcnQgbHo0KQorICAgICAgICAgICAg ICAoZmVhdHVyZURlcCB6c3RkU3VwcG9ydCB6c3RkKQorICAgICAgICAgICAgICAoZmVhdHVy ZURlcCB1dWlkU3VwcG9ydCBsaWJ1dWlkKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCBj dXJsU3VwcG9ydCBjdXJsKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCBwZXJsU3VwcG9y dCBwZXJsKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCBweXRob25TdXBwb3J0IHB5dGhv bjMpCisgICAgICAgICAgICAgIChmZWF0dXJlRGVwIHRjbFN1cHBvcnQgdGNsKQorICAgICAg ICAgICAgICAoZmVhdHVyZURlcCBzeXN0ZW1kU3VwcG9ydCBzeXN0ZW1kTGlicykKKyAgICAg ICAgICAgICAgKGZlYXR1cmVEZXAgc2VsaW51eFN1cHBvcnQgbGlic2VsaW51eCkKKyAgICAg ICAgICAgICAgKGZlYXR1cmVEZXAgbGlidXJpbmdTdXBwb3J0IGxpYnVyaW5nKQorICAgICAg ICAgICAgICAoZmVhdHVyZURlcCBudW1hU3VwcG9ydCBudW1hY3RsKQorICAgICAgICAgICAg ICAoZmVhdHVyZURlcCBnc3NTdXBwb3J0IGxpYmtyYjUpCisgICAgICAgICAgICAgIChmZWF0 dXJlRGVwIGxkYXBTdXBwb3J0IG9wZW5sZGFwKQorICAgICAgICAgICAgICAoZmVhdHVyZURl cCBwYW1TdXBwb3J0IGxpbnV4LXBhbSkKKyAgICAgICAgICAgICAgKGZlYXR1cmVEZXAgbGx2 bVN1cHBvcnQgbGx2bVBhY2thZ2VzLmxsdm0pCisgICAgICAgICAgICBdKTsKKyAgICAgICAg ICBpbgorICAgICAgICAgIHN0ZGVudi5ta0Rlcml2YXRpb24geworICAgICAgICAgICAgcG5h bWUgPSAicG9zdGdyZXNxbCI7CisgICAgICAgICAgICB2ZXJzaW9uID0gIjIwZGV2ZWwiOwor ICAgICAgICAgICAgc3JjID0gc2VsZjsKKworICAgICAgICAgICAgc3RyaWN0RGVwcyA9IHRy dWU7CisKKyAgICAgICAgICAgIG5hdGl2ZUJ1aWxkSW5wdXRzID0gbGliLmZsYXR0ZW4gKHdp dGggcGtnczsgWworICAgICAgICAgICAgICBiaXNvbgorICAgICAgICAgICAgICBmbGV4Cisg ICAgICAgICAgICAgIHBlcmwKKyAgICAgICAgICAgICAgcGtnLWNvbmZpZworICAgICAgICAg ICAgICAoZmVhdHVyZURlcCB1c2VNZXNvbiBtZXNvbikKKyAgICAgICAgICAgICAgKGZlYXR1 cmVEZXAgdXNlTWVzb24gbmluamEpCisgICAgICAgICAgICAgIChmZWF0dXJlRGVwIGxsdm1T dXBwb3J0IGxsdm1QYWNrYWdlcy5sbHZtLmRldikKKyAgICAgICAgICAgICAgKGZlYXR1cmVE ZXAgZG9jcyBkb2Nib29rLXhzbC1ub25zKQorICAgICAgICAgICAgICAoZmVhdHVyZURlcCBk b2NzIGRvY2Jvb2tfeG1sX2R0ZF80NSkKKyAgICAgICAgICAgICAgKGZlYXR1cmVEZXAgZG9j cyBsaWJ4c2x0KQorICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgIGluaGVyaXQgYnVp bGRJbnB1dHM7CisKKyAgICAgICAgICAgICMgLS0tLSBhdXRvY29uZiBwYXRoIC0tLS0KKyAg ICAgICAgICAgIGNvbmZpZ3VyZUZsYWdzID0gbGliLm9wdGlvbmFscyAoIXVzZU1lc29uKSBj b25maWd1cmVGZWF0dXJlczsKKworICAgICAgICAgICAgIyAtLS0tIG1lc29uIHBhdGggLS0t LQorICAgICAgICAgICAgbWVzb25CdWlsZFR5cGUgPSAicmVsZWFzZSI7CisgICAgICAgICAg ICBtZXNvbkZsYWdzID0gbGliLm9wdGlvbmFscyB1c2VNZXNvbiBtZXNvbkZlYXR1cmVzOwor ICAgICAgICAgICAgZG9udFVzZU1lc29uQ29uZmlndXJlID0gIXVzZU1lc29uOworICAgICAg ICAgICAgbWVzb25BdXRvRmVhdHVyZXMgPSAiZGlzYWJsZWQiOworCisgICAgICAgICAgICBl bmFibGVQYXJhbGxlbEJ1aWxkaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvQ2hlY2sgPSB0 YXBUZXN0czsKKworICAgICAgICAgICAgbWV0YSA9IHdpdGggbGliOyB7CisgICAgICAgICAg ICAgIGRlc2NyaXB0aW9uID0gIk9iamVjdC1yZWxhdGlvbmFsIGRhdGFiYXNlIG1hbmFnZW1l bnQgc3lzdGVtLCBidWlsdCBmcm9tIHNvdXJjZSI7CisgICAgICAgICAgICAgIGhvbWVwYWdl ID0gImh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnLyI7CisgICAgICAgICAgICAgIGxpY2Vu c2UgPSBsaWNlbnNlcy5wb3N0Z3Jlc3FsOworICAgICAgICAgICAgICBwbGF0Zm9ybXMgPSBw bGF0Zm9ybXMudW5peDsKKyAgICAgICAgICAgICAgbWFpblByb2dyYW0gPSAicHNxbCI7Cisg ICAgICAgICAgICB9OworICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICB7IH07Cisg ICAgaW4KKyAgICB7CisgICAgICBwYWNrYWdlcyA9IGZvckFsbFN5c3RlbXMgKHBrZ3M6IHJl YyB7CisgICAgICAgIHBvc3RncmVzcWwgPSBwb3N0Z3Jlc3FsRm9yIHBrZ3M7CisgICAgICAg ICMgQ29tbW9uIHByZXNldHMgYnVpbHQgb24gdG9wIG9mIHRoZSBmdWxseS1wYXJhbWV0ZXJp emVkIGRlZmF1bHQuCisgICAgICAgIHBvc3RncmVzcWwtYXV0b2NvbmYgPSBwb3N0Z3Jlc3Fs Lm92ZXJyaWRlIHsgYnVpbGRTeXN0ZW0gPSAiYXV0b2NvbmYiOyB9OworICAgICAgICBwb3N0 Z3Jlc3FsLWRlYnVnID0gcG9zdGdyZXNxbC5vdmVycmlkZSB7CisgICAgICAgICAgY2Fzc2Vy dCA9IHRydWU7CisgICAgICAgICAgZGVidWdTeW1ib2xzID0gdHJ1ZTsKKyAgICAgICAgICBp bmplY3Rpb25Qb2ludHMgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBwb3N0Z3Jlc3Fs LW1pbmltYWwgPSBwb3N0Z3Jlc3FsLm92ZXJyaWRlIHsKKyAgICAgICAgICBpY3VTdXBwb3J0 ID0gZmFsc2U7CisgICAgICAgICAgcmVhZGxpbmVTdXBwb3J0ID0gZmFsc2U7CisgICAgICAg ICAgemxpYlN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAgICBvcGVuc3NsU3VwcG9ydCA9IGZh bHNlOworICAgICAgICAgIGxpYnhtbFN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAgICBsaWJ4 c2x0U3VwcG9ydCA9IGZhbHNlOworICAgICAgICAgIGx6NFN1cHBvcnQgPSBmYWxzZTsKKyAg ICAgICAgICB6c3RkU3VwcG9ydCA9IGZhbHNlOworICAgICAgICAgIHV1aWRTdXBwb3J0ID0g ZmFsc2U7CisgICAgICAgICAgY3VybFN1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAgICBwZXJs U3VwcG9ydCA9IGZhbHNlOworICAgICAgICAgIHB5dGhvblN1cHBvcnQgPSBmYWxzZTsKKyAg ICAgICAgICB0Y2xTdXBwb3J0ID0gZmFsc2U7CisgICAgICAgICAgc3lzdGVtZFN1cHBvcnQg PSBmYWxzZTsKKyAgICAgICAgICBsaWJ1cmluZ1N1cHBvcnQgPSBmYWxzZTsKKyAgICAgICAg ICBudW1hU3VwcG9ydCA9IGZhbHNlOworICAgICAgICAgIGdzc1N1cHBvcnQgPSBmYWxzZTsK KyAgICAgICAgICBwYW1TdXBwb3J0ID0gZmFsc2U7CisgICAgICAgIH07CisgICAgICAgIGRl ZmF1bHQgPSBwb3N0Z3Jlc3FsOworICAgICAgfSk7CisKKyAgICAgICMgYG5peCBkZXZlbG9w YDogdGhlIHBvc3RncmVzcWwgcGFja2FnZSBhbHJlYWR5IGJyaW5ncyBpbiB0aGUgZnVsbAor ICAgICAgIyBidWlsZCB0b29sY2hhaW4gKG1lc29uLCBuaW5qYSwgYmlzb24sIGZsZXgsIHBl cmwsIHB5dGhvbjMsIHRjbCwgYW5kCisgICAgICAjIHRoZSBvcHRpb25hbCBsaWJyYXJpZXMp IHZpYSBpbnB1dHNGcm9tLiBXZSBhZGQgb25seSB3aGF0IGEgZGV2IHNoZWxsCisgICAgICAj IHdhbnRzIG9uIHRvcDogY2NhY2hlLCBhbmQgdGhlIERvY0Jvb2sgdG9vbGNoYWluIGZvciBi dWlsZGluZyBkb2NzCisgICAgICAjIChkb2NzIGFyZSBvZmYgaW4gdGhlIGRlZmF1bHQgcGFj a2FnZSBidWlsZCkuCisgICAgICBkZXZTaGVsbHMgPSBmb3JBbGxTeXN0ZW1zIChwa2dzOiB7 CisgICAgICAgIGRlZmF1bHQgPSBwa2dzLm1rU2hlbGwgeworICAgICAgICAgIGlucHV0c0Zy b20gPSBbIHNlbGYucGFja2FnZXMuJHtwa2dzLnN0ZGVudi5ob3N0UGxhdGZvcm0uc3lzdGVt fS5wb3N0Z3Jlc3FsIF07CisgICAgICAgICAgcGFja2FnZXMgPSB3aXRoIHBrZ3M7IFsKKyAg ICAgICAgICAgIGNjYWNoZQorICAgICAgICAgICAgZG9jYm9va194bWxfZHRkXzQ1CisgICAg ICAgICAgICBkb2Nib29rLXhzbC1ub25zCisgICAgICAgICAgXTsKKyAgICAgICAgfTsKKyAg ICAgIH0pOworCisgICAgICBmb3JtYXR0ZXIgPSBmb3JBbGxTeXN0ZW1zIChwa2dzOiBwa2dz Lm5peGZtdCk7CisgICAgfTsKK30KLS0gCjIuNTQuMAoK --155dd8dd773c642b338c3797ac189ca0370ab52b--