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 1wGgXv-006TId-0D for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Apr 2026 17:11:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wGgXt-009K6H-36 for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Apr 2026 17:11:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wGgXt-009K68-1a for pgsql-hackers@lists.postgresql.org; Sat, 25 Apr 2026 17:11:57 +0000 Received: from mail-vk1-xa2f.google.com ([2607:f8b0:4864:20::a2f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wGgXr-000000031CZ-0ajB for pgsql-hackers@lists.postgresql.org; Sat, 25 Apr 2026 17:11:56 +0000 Received: by mail-vk1-xa2f.google.com with SMTP id 71dfb90a1353d-56a9076813bso3581905e0c.3 for ; Sat, 25 Apr 2026 10:11:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777137112; cv=none; d=google.com; s=arc-20240605; b=CTpRbZIOPtST/rmsibEHvYdb8EsisV/W6kx0sqMkwU6iIElWbjooAuWveOfW4uBW7L rU+DMkEhH6Dr66sgsmkU0VizrWkLqrNFLbZ0RdLEZMga0x3dq9gS1fY3VzEomJKC23YZ z6B5gWCMCj7OoQWpag60f+CyNSLqBrk3Ijdj2ewXP4HFsslmLyKXBVwwVkIsJmFntoQj 69J4X/bh95BmhK9XT0f6qpKt8cliEAg1nH9EHStOFyqmbWIfBt9Y734Fle87zdnoQl/C JPqfledaIDID/R36wyhLXiWwFrFBG11NdkCallq+JOEtz+vtyY7eF8Zv0DIxA1gETR8Z C1xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=LwUNtzP1XwvTe2hnrgJDbPnYWjx0xFjtH7vEGv9rvkE=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=Yv1PxLshFd+GP+STJRfrFyGwwq6Ake+8Yvpwx32hyf11Mah4q9tSWFphgGlB8wbbIz FqqPq+rIo0ctBlG3e+UQ95acU2VlwwoH58jGky3TPpdHHtJ0X3iEKpAwokYnrIC0D5QY 3wXM07qg80XMwhcZ3o5v6z0q4rKW/Y0PiRg72jfnIXRP7Iq+G85DPvOn0EiYVayQkI0E rlIHnazr+18pTXvrftRmqZc+WACIhtWAW/aHX1m5Qv+khkEP70V2fYDp0w7whaGgJNLO SUr/64HToW+jAO5R5wTYFaLAuQmH8m/lsalr0X310x4sXDdTj31C9ZXW4c0qtmpEehy2 aKjg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777137112; x=1777741912; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=LwUNtzP1XwvTe2hnrgJDbPnYWjx0xFjtH7vEGv9rvkE=; b=gVC9vFsC9st3xbLGJbU/rXRnYdrV9tYzW5pBjzFidJ38KS6UsiWQp36+r/QrL4bE+N NLodoZGznp37iYrNo8Q0GQf70rbLpj7uGR9tEhnkU9Xn3klYNggQV1ngupq3E94Z8rT7 LlyDfU65MyOPDsx8BUq6bYHK/v6jXKgkp6foCFhKFh/19UXGAJv3d4b5TbtcN+aB0LwO s4Vx//LAdUruu4Zx915qtuDbDPbTA4kuut7NWjWMWndGwqf2WV3rNwaVzmyskIHUNgLK h6qsY2S7rcMor7mK7Svz8RMJE1nxYuFutuOHaLaC/JoEEPHp4QgHYdmfYPg2AflbDSR8 D3Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777137112; x=1777741912; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=LwUNtzP1XwvTe2hnrgJDbPnYWjx0xFjtH7vEGv9rvkE=; b=dnMrBUuVL5kQc/YfiL342bokJQPuK4RE2n8upwT1ocwJklHCDFQRwk2r7QYN81vwUE zSCDMLrgKOw0RWGbX+s6Rt6itQ8IsrkgqXXPP/AI5G2MEvk3WJ9JBdr/DP6ZC1EfwMDM dfnBA0anhqGiV/VS6xNKKFmwabgtlhB92bbt+Ib6HrExIptxCMYRZy3SGtTeJpJYmYjH cBnwBczgNRga5P7n76F/vRvJsrTuHFVC0dyBGJwxxM2lmFayzFIxpmCbS6SulS5jD3JN 11yGCrnHiY+ZtSxeFB+TxKRcME3Id3WupaGfSdlW71jXRCjzUHBCRkIvqHUZHp3l3p1k ZRjA== X-Gm-Message-State: AOJu0Yxp9kU7BK/eS+6OnZMKwDFBKTNMyEPdXwHSX0/GdBZb3Db0rgJ9 UKs++zTQHWNr4APcDA7x35gF0Yu/anQSVQU4DWNQANvEv9Ez6ASHV3n3EZyp0BbXXICyWVAZc3x Kwmc21CQLMMrSj8ybjU+BWEWNfS+EQvNmbMgm X-Gm-Gg: AeBDievWRYDpyB4KMmTX76hHIYvb64VzXhb2X3r8hz8sDe3CD0AzrAp5w3JN8DcGNqx +ekibVAmPV6pwglh7Mysp7rWhhHCKj+ObcBgbp31HuW0AaG+wfAirRQxokbbtzUu1go5MiHMn2p LEABRSToXfXV6QtiLXRKhpgNepVvZCcZyCCD2ZfGJ9iT72VbQhsMoMHSlCoDejHfnHBF0PctLZ3 NSAfyNqKQyCnm+sxT/FCSa1qvwscDr8Rs7ZebyJJMsgFV0oO/SkxMYkrmwAIrl1Tpr4RHDH4hcZ ZPkZFIPaqtr2EMbWEQ== X-Received: by 2002:a05:6123:2c2:b0:56d:b50d:3ee7 with SMTP id 71dfb90a1353d-56fa57a76c1mr18964806e0c.2.1777137112229; Sat, 25 Apr 2026 10:11:52 -0700 (PDT) MIME-Version: 1.0 From: SATYANARAYANA NARLAPURAM Date: Sat, 25 Apr 2026 10:11:40 -0700 X-Gm-Features: AVHnY4JopC2iD-BoNcDNyOYrtpp4IT5BeVIhy4j5xFsQ_ntlmp4WzBSOrJCzwZo Message-ID: Subject: [PATCH] Improve error message for graph variable references in subqueries within GRAPH_TABLE To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004ad20406504bfa54" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004ad20406504bfa54 Content-Type: multipart/alternative; boundary="0000000000004ad20206504bfa52" --0000000000004ad20206504bfa52 Content-Type: text/plain; charset="UTF-8" Hi Hackers, When a subquery inside GRAPH_TABLE COLUMNS or MATCH WHERE references a graph pattern variable, the error was a confusing "missing FROM-clause entry for table". Fix by walking the parentParseState chain in transformGraphTablePropertyRef() to detect the graph variable and report a clear "cannot be used in a subquery" error instead. Based on the below comment and code in transformRangeGraphTable I am assuming we don't support subqueries for now. /* * If we support subqueries within GRAPH_TABLE, those need to be * propagated to the queries resulting from rewriting graph table RTE. We * don't do that right now, hence prohibit it for now. */ if (pstate->p_hasSubLinks) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("subqueries within GRAPH_TABLE reference are not supported"))); pstate->p_hasSubLinks = saved_hasSublinks; Attached a patch to address this which also includes a test. Thanks, Satya --0000000000004ad20206504bfa52 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

When a subquery inside GRAP= H_TABLE COLUMNS or MATCH WHERE references a
graph pattern variable, the = error was a confusing "missing FROM-clause
entry for table".= =C2=A0 Fix by walking the parentParseState chain in
transformGraphTableP= ropertyRef() to detect the graph variable and report
a clear "canno= t be used in a subquery" error instead.

<= br>
Based on the below comment and code in=C2=A0 transformRangeGraphTable I am assuming we don't support
subqu= eries for now.

=C2=A0=C2=A0/*
* If we suppo= rt subqueries within GRAPH_TABLE, those need to be
* propagated to the= queries resulting from rewriting graph table RTE. We
* don't do t= hat right now, hence prohibit it for now.
*/
if (pstate->p_hasS= ubLinks)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED)= ,
errmsg("subqueries within GRAPH_TABLE reference are not supp= orted")));
pstate->p_hasSubLinks =3D saved_hasSublinks;

= Attached a patch to address this which also includes a test.

Thanks,=
Satya


--0000000000004ad20206504bfa52-- --0000000000004ad20406504bfa54 Content-Type: application/octet-stream; name="0001-Improve-error-for-graph-variable-references-in-subqu.patch" Content-Disposition: attachment; filename="0001-Improve-error-for-graph-variable-references-in-subqu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moeljaxm0 RnJvbSBjZTQ0OGExYjU1OWI1YTNiNjhhNzhlMjI2Mjc3NDUxZWY3NmNiMDk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYXR5YSBOYXJsYXB1cmFtIDxzYXR5YW5hcmxhcHVyYW1AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI1IEFwciAyMDI2IDE2OjQzOjMzICswMDAwClN1YmplY3Q6IFtQ QVRDSF0gSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBncmFwaCB2YXJpYWJsZSByZWZlcmVuY2Vz IGluIHN1YnF1ZXJpZXMKIHdpdGhpbiBHUkFQSF9UQUJMRQoKV2hlbiBhIHN1YnF1ZXJ5IGluc2lk ZSBHUkFQSF9UQUJMRSBDT0xVTU5TIG9yIE1BVENIIFdIRVJFIHJlZmVyZW5jZXMgYQpncmFwaCBw YXR0ZXJuIHZhcmlhYmxlLCB0aGUgZXJyb3Igd2FzIGEgY29uZnVzaW5nICJtaXNzaW5nIEZST00t Y2xhdXNlCmVudHJ5IGZvciB0YWJsZSIuICBGaXggYnkgd2Fsa2luZyB0aGUgcGFyZW50UGFyc2VT dGF0ZSBjaGFpbiBpbgp0cmFuc2Zvcm1HcmFwaFRhYmxlUHJvcGVydHlSZWYoKSB0byBkZXRlY3Qg dGhlIGdyYXBoIHZhcmlhYmxlIGFuZCByZXBvcnQKYSBjbGVhciAiY2Fubm90IGJlIHVzZWQgaW4g YSBzdWJxdWVyeSIgZXJyb3IgaW5zdGVhZC4KLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Z3JhcGh0YWJsZS5jICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91dCB8IDE1ICsrKysrKysrKysrKwogc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsICAgICAgfCAxMSArKysrKysrKysKIDMgZmls ZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9ncmFwaHRhYmxlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZ3JhcGh0 YWJsZS5jCmluZGV4IDczZmJmYjU0Li41ZTVkYTViYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2dyYXBodGFibGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Z3JhcGh0YWJsZS5jCkBAIC04MSw3ICs4MSwzNSBAQCB0cmFuc2Zvcm1HcmFwaFRhYmxlUHJvcGVy dHlSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJR3JhcGhUYWJsZVBh cnNlU3RhdGUgKmdwc3RhdGUgPSBwc3RhdGUtPnBfZ3JhcGhfdGFibGVfcHN0YXRlOwogCiAJaWYg KCFncHN0YXRlKQorCXsKKwkJLyoKKwkJICogTm8gR1JBUEhfVEFCTEUgY29udGV4dCBpbiB0aGlz IFBhcnNlU3RhdGU7IG1heSBiZSBpbnNpZGUgYQorCQkgKiBzdWJxdWVyeSB3aG9zZSBzdWItUGFy c2VTdGF0ZSBkb2Vzbid0IGluaGVyaXQgcF9ncmFwaF90YWJsZV9wc3RhdGUuCisJCSAqIFdhbGsg dXAgdGhlIHBhcmVudCBjaGFpbiB0byBkZXRlY3QgZ3JhcGggdmFyaWFibGUgcmVmZXJlbmNlcyBh bmQKKwkJICogcmVwb3J0IGEgY2xlYXIgZXJyb3IgaW5zdGVhZCBvZiAibWlzc2luZyBGUk9NLWNs YXVzZSBlbnRyeSIuCisJCSAqLworCQlpZiAobGlzdF9sZW5ndGgoY3JlZi0+ZmllbGRzKSA9PSAy KQorCQl7CisJCQlOb2RlCSAgICpmaWVsZDEgPSBsaW5pdGlhbChjcmVmLT5maWVsZHMpOworCisJ CQlpZiAoIUlzQShmaWVsZDEsIEFfU3RhcikpCisJCQl7CisJCQkJZm9yIChQYXJzZVN0YXRlICpw cyA9IHBzdGF0ZS0+cGFyZW50UGFyc2VTdGF0ZTsKKwkJCQkJIHBzICE9IE5VTEw7CisJCQkJCSBw cyA9IHBzLT5wYXJlbnRQYXJzZVN0YXRlKQorCQkJCXsKKwkJCQkJaWYgKHBzLT5wX2dyYXBoX3Rh YmxlX3BzdGF0ZSAmJgorCQkJCQkJbGlzdF9tZW1iZXIocHMtPnBfZ3JhcGhfdGFibGVfcHN0YXRl LT52YXJpYWJsZXMsIGZpZWxkMSkpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJCSBlcnJtc2coImdy YXBoIHBhdHRlcm4gdmFyaWFibGUgcmVmZXJlbmNlIFwiJXNcIiBjYW5ub3QgYmUgdXNlZCBpbiBh IHN1YnF1ZXJ5IiwKKwkJCQkJCQkJCQlzdHJWYWwoZmllbGQxKSksCisJCQkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBjcmVmLT5sb2NhdGlvbikpKTsKKwkJCQl9CisJCQl9CisJCX0K IAkJcmV0dXJuIE5VTEw7CisJfQogCiAJaWYgKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgPT0g MikKIAl7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxl Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0CmluZGV4IGEy ZDdjZGYzLi5kM2MyMDYxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9n cmFwaF90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ncmFwaF90YWJs ZS5vdXQKQEAgLTEwMzIsNiArMTAzMiwyMSBAQCBTRUxFQ1Qgc25hbWUsIGRuYW1lIEZST00gR1JB UEhfVEFCTEUgKGcxIE1BVENIIChzcmMpLT4oZGVzdCkgV0hFUkUgc3JjLnZwcm9wMSA+CiBFUlJP UjogIHN1YnF1ZXJpZXMgd2l0aGluIEdSQVBIX1RBQkxFIHJlZmVyZW5jZSBhcmUgbm90IHN1cHBv cnRlZAogU0VMRUNUIHNuYW1lLCBkbmFtZSBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoc3Jj KS0+KGRlc3QpIFdIRVJFIG91dF9kZWdyZWUoc3JjLnZuYW1lKSA+IChTRUxFQ1QgbWF4KG91dF9k ZWdyZWUobm5hbWUpKSBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAobm9kZSkgQ09MVU1OUyAo bm9kZS52bmFtZSBBUyBubmFtZSkpKSBDT0xVTU5TKHNyYy52bmFtZSBBUyBzbmFtZSwgZGVzdC52 bmFtZSBBUyBkbmFtZSkpOwogRVJST1I6ICBzdWJxdWVyaWVzIHdpdGhpbiBHUkFQSF9UQUJMRSBy ZWZlcmVuY2UgYXJlIG5vdCBzdXBwb3J0ZWQKKy0tIHN1YnF1ZXJ5IHJlZmVyZW5jaW5nIGdyYXBo IHZhcmlhYmxlIGluIENPTFVNTlMgKHNob3VsZCByZXBvcnQgY2xlYXIgZXJyb3IpCitTRUxFQ1Qg KiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoc3JjIElTIHZsMSkKKyAgQ09MVU1OUyAoc3Jj LnZuYW1lIEFTIHNuYW1lLAorICAgICAgICAgICAoU0VMRUNUIGNvdW50KCopIEZST00gdjEgV0hF UkUgdnByb3AxID0gc3JjLnZwcm9wMSkgQVMgY250KSkgZ3Q7CitFUlJPUjogIGdyYXBoIHBhdHRl cm4gdmFyaWFibGUgcmVmZXJlbmNlICJzcmMiIGNhbm5vdCBiZSB1c2VkIGluIGEgc3VicXVlcnkK K0xJTkUgMzogLi4uICAgICAgICAgIChTRUxFQ1QgY291bnQoKikgRlJPTSB2MSBXSEVSRSB2cHJv cDEgPSBzcmMudnByb3AxLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVhJU1RTIHN1YnF1ZXJ5IHJlZmVyZW5jaW5n IGdyYXBoIHZhcmlhYmxlIGluIE1BVENIIFdIRVJFCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxF IChnMQorICBNQVRDSCAoc3JjIElTIHZsMSBXSEVSRSBFWElTVFMgKAorICAgIFNFTEVDVCAxIEZS T00gdjEgV0hFUkUgdnByb3AxID0gc3JjLnZwcm9wMSkpCisgIENPTFVNTlMgKHNyYy52bmFtZSBB UyBzbmFtZSkpIGd0OworRVJST1I6ICBncmFwaCBwYXR0ZXJuIHZhcmlhYmxlIHJlZmVyZW5jZSAi c3JjIiBjYW5ub3QgYmUgdXNlZCBpbiBhIHN1YnF1ZXJ5CitMSU5FIDM6ICAgICBTRUxFQ1QgMSBG Uk9NIHYxIFdIRVJFIHZwcm9wMSA9IHNyYy52cHJvcDEpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBHUkFQSF9UQUJMRSBzdWJxdWVyeSBpbiBIQVZJ TkcgY2xhdXNlCiBTRUxFQ1Qgc3JjLnZuYW1lLCBjb3VudCgqKQogICBGUk9NIHYxIEFTIHNyYwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsCmluZGV4IGIwNTRkYmRmLi4yNTIxYzRjYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxlLnNxbApAQCAtNTkwLDYgKzU5MCwxNyBAQCBT RUxFQ1QgKiBGUk9NIGN1c3RvbWVycyBjbyBXSEVSRSBjby5jdXN0b21lcl9pZCA9IChTRUxFQ1Qg Y3VzdG9tZXJfaWQgRlJPTSBHUkFQSAogU0VMRUNUIHNuYW1lLCBkbmFtZSBGUk9NIEdSQVBIX1RB QkxFIChnMSBNQVRDSCAoc3JjKS0+KGRlc3QpIFdIRVJFIHNyYy52cHJvcDEgPiAoU0VMRUNUIG1h eCh2MS52cHJvcDEpIEZST00gdjEpIENPTFVNTlMoc3JjLnZuYW1lIEFTIHNuYW1lLCBkZXN0LnZu YW1lIEFTIGRuYW1lKSk7CiBTRUxFQ1Qgc25hbWUsIGRuYW1lIEZST00gR1JBUEhfVEFCTEUgKGcx IE1BVENIIChzcmMpLT4oZGVzdCkgV0hFUkUgb3V0X2RlZ3JlZShzcmMudm5hbWUpID4gKFNFTEVD VCBtYXgob3V0X2RlZ3JlZShubmFtZSkpIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChub2Rl KSBDT0xVTU5TIChub2RlLnZuYW1lIEFTIG5uYW1lKSkpIENPTFVNTlMoc3JjLnZuYW1lIEFTIHNu YW1lLCBkZXN0LnZuYW1lIEFTIGRuYW1lKSk7CiAKKy0tIHN1YnF1ZXJ5IHJlZmVyZW5jaW5nIGdy YXBoIHZhcmlhYmxlIGluIENPTFVNTlMgKHNob3VsZCByZXBvcnQgY2xlYXIgZXJyb3IpCitTRUxF Q1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoc3JjIElTIHZsMSkKKyAgQ09MVU1OUyAo c3JjLnZuYW1lIEFTIHNuYW1lLAorICAgICAgICAgICAoU0VMRUNUIGNvdW50KCopIEZST00gdjEg V0hFUkUgdnByb3AxID0gc3JjLnZwcm9wMSkgQVMgY250KSkgZ3Q7CisKKy0tIEVYSVNUUyBzdWJx dWVyeSByZWZlcmVuY2luZyBncmFwaCB2YXJpYWJsZSBpbiBNQVRDSCBXSEVSRQorU0VMRUNUICog RlJPTSBHUkFQSF9UQUJMRSAoZzEKKyAgTUFUQ0ggKHNyYyBJUyB2bDEgV0hFUkUgRVhJU1RTICgK KyAgICBTRUxFQ1QgMSBGUk9NIHYxIFdIRVJFIHZwcm9wMSA9IHNyYy52cHJvcDEpKQorICBDT0xV TU5TIChzcmMudm5hbWUgQVMgc25hbWUpKSBndDsKKwogLS0gR1JBUEhfVEFCTEUgc3VicXVlcnkg aW4gSEFWSU5HIGNsYXVzZQogU0VMRUNUIHNyYy52bmFtZSwgY291bnQoKikKICAgRlJPTSB2MSBB UyBzcmMKLS0gCjIuNDMuMAoK --0000000000004ad20406504bfa54--