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 1vMLOG-007C0f-0s for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Nov 2025 07:17:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vMLOE-0066Gu-1O for pgsql-hackers@arkaria.postgresql.org; Fri, 21 Nov 2025 07:17:06 +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 1vMLOD-0066Gl-2l for pgsql-hackers@lists.postgresql.org; Fri, 21 Nov 2025 07:17:06 +0000 Received: from mail-ua1-x934.google.com ([2607:f8b0:4864:20::934]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vMLOB-000eno-15 for pgsql-hackers@lists.postgresql.org; Fri, 21 Nov 2025 07:17:04 +0000 Received: by mail-ua1-x934.google.com with SMTP id a1e0cc1a2514c-93a9f6efe7cso1027360241.0 for ; Thu, 20 Nov 2025 23:17:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763709423; x=1764314223; darn=lists.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=5fnvu3cVrlNPPgGTRGBhDZq+TI45XG1bEUwkOVOVdP0=; b=e8WIrX/nrO5kN5vnVhg1bR2jO8a0xlsVuW8kgr+lxaX3JLMSa9ea3XItGFQx6etX9S RGo2Zs/vJvI9q5nzq7OXNkLPn66Wtu1ziWElQBwjkI2bJUcr5BWd6QjmEKNl1+uyTAHo pFOjtNaccf5mFfUJtOfToKP53/qUMML4OQ7TgeCiJxm08KEpq9cz8g1WttRhbqE9o2fb mfDP/NtykBaOHb29IvZQkEZ5U/IJKA2/UpUxj9Eg/ebwF8iugNYkdYw9hPbleXRn+eds x/yWZFpeWzqw+IrraAWnjAcJV8lYk6q5pj4Be9Tw+MrYN9rnwhAW+qtIt16l+yIRR+Cn 9oHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763709423; x=1764314223; 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=5fnvu3cVrlNPPgGTRGBhDZq+TI45XG1bEUwkOVOVdP0=; b=MjC/W43JvFFTrTe/+vcUKZTQwUkPr5H94VPi+CwaWTVB4uafVkCXA62RX+DERg7+fV r6DIMePQiGR/VcGifApVmW9meA1VUJTBCUOhw2LsmqmRG+FkXMLNxp6xipkyRI9ow49I vQfgDZuzT0Buacgot1IIBl4lKZurd+9x4Gt6aG0R78IqTmyB7mUGFryEXPEBXpQIj0AO BDUwEaS+CyS8OZ3KfRHtW0IjbILPdPMc4NO3+JYYlpRBJsVjLQkEBMVt8E+sto5jus4V SilmAyxKZMIE6w9MZDrmfe27nQyXL+3shgVU0sjgEt6zprJx420iglNUSZsi9JQJ96po bUmw== X-Forwarded-Encrypted: i=1; AJvYcCW9V/AX6rt87wqamOMom5YatnfIM+2Dz/iQhc689BSB/LTZjsIWlpsOYJJ6FBH6FtGIxqFI9umx9HasJLYg@lists.postgresql.org X-Gm-Message-State: AOJu0YytIJg9C1STxWN2M7iFhXrcQx+PXztWOxpxdTOdcw1+mrCMeqQ9 kmlpMm5wfWHBI2L2n6Iu95X7RdFtrTnrytJvAYwzmRt8NsKoEU6WaLdaErTZk/q9PAVs4gN44VJ esrQdyZtymZAKbJyaOe6M8m7jcsg/LkI= X-Gm-Gg: ASbGnctpcgvpjkDva6T3FJx53GJETjGClZCQa8Ns3xxSXgmFc8S2GfqfAelfjX+C19t UcbZjGNF3X4miILfquVeZbqjG38o3H3hbwGmndAyZpfV6wBWN55Fq8/+0Xiplt8CEKs2ceBPnBI lCu8XhCgxkHk9ZL5mrCE0swChvgSsvb0aHgk7rnpHufIWvPOld9Fb6K7Mwhp2PUeGEiRdfes07j uu26u63DjYPpbuohfuZUze/A8HVOjBwj951EpMgba0BR4cIQzFxJFlT+uXXPvLZnuNw/tHAg7xG ilrSOtyqXU+1lokM+hbudlP+YZvJKU7j4ReHAYEg2yXVjRSR661IxVqfYIkcY6tQnNcjFAGIB1B 8h4jDMINUoeSp7cqsXIMIt2ptgrySjoEoB8XUZGiHLG5AgcV34kaE1Eft6Nd4SLkQvt/AbVnHv2 RPh/WTiF9G X-Google-Smtp-Source: AGHT+IG+lqlgLoQayr3r+eud31vdMZcBvtUa+IYk49xq0V3QN7qVp3Wp++YXChRUZKC/phnvp36qzW9yi2/uqV8X+VI= X-Received: by 2002:a05:6102:e10:b0:5df:aff3:c433 with SMTP id ada2fe7eead31-5e1de2990c3mr340505137.16.1763709422988; Thu, 20 Nov 2025 23:17:02 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Fri, 21 Nov 2025 15:16:26 +0800 X-Gm-Features: AWmQ_bkKp3xafEH6IjU5Nf4_nkLFSwlKT4QvdJD3iEbD9v7IPKVC1-RTysNLxf8 Message-ID: Subject: Re: Extended Statistics set/restore/clear functions. To: Corey Huinker Cc: Michael Paquier , Tomas Vondra , pgsql-hackers@lists.postgresql.org, tgl@sss.pgh.pa.us Content-Type: multipart/mixed; boundary="000000000000a5123906441599ac" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a5123906441599ac Content-Type: text/plain; charset="UTF-8" hi. makeJsonLexContextCstringLen in v16-0001 and v16-0002 should use GetDatabaseEncoding()? wondering, should we check the value of "degree" is between 0 to 1? + if ((natts < 1) || (natts > (STATS_MAX_DIMENSIONS - 1))) + { + errsave(parse->escontext, + errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), + errmsg("malformed pg_dependencies: \"%s\"", parse->str), + errdetail("The \"%s\" key must contain an array of at least %d " + " and no than %d elements.", + PG_DEPENDENCIES_KEY_ATTRIBUTES, 1, STATS_MAX_DIMENSIONS - 1)); DETAIL: The "attributes" key must contain an array of at least 1 and no than 7 elements. if you check the error message carefully, there is one more extra white space after "at least 1". typedef struct MVDependency { double degree; /* degree of validity (0-1) */ AttrNumber nattributes; /* number of attributes */ AttrNumber attributes[FLEXIBLE_ARRAY_MEMBER]; /* attribute numbers */ } MVDependency; SELECT '[{"attributes" : [2], "dependency" : 4, "degree": "NaN"}]'::pg_dependencies; SELECT '[{"attributes" : [2], "dependency" : 4, "degree": "-inf"}]'::pg_dependencies; SELECT '[{"attributes" : [2], "dependency" : 4, "degree": "inf"}]'::pg_dependencies; either error out or not, pg_dependencies.sql needs tests like the above to test these special values. json does not support special value like, "inf", "NaN", so we can SELECT '[{"attributes" : [2], "dependency" : 4, "degree": "-inf"}]'::pg_dependencies; but can not SELECT '[{"attributes" : [2], "dependency" : 4, "degree": "-inf"}]'::pg_dependencies::text::pg_dependencies; I found that numeric values behave the same with or without double quotes. SELECT '[{"ndistinct" : "1", "attributes" : ["2","3"]}]'::pg_ndistinct; SELECT '[{"ndistinct" : 1, "attributes" : [2,3]}]'::pg_ndistinct; SELECT '[{"attributes" : [1, 2], "dependency" : 4, "degree": "1"}]'::pg_dependencies; SELECT '[{"attributes" : [1, "2"], "dependency" : "4", "degree": "1"}]'::pg_dependencies; i guess the reason is in makeJsonLexContextCstringLen, we set need_escapes to true. I added more regress tests to improve coverage for src/test/regress/sql/pg_dependencies.sql SELECT '[{"attributes" : [-11,1], "dependency" : -1116, "degree": "1.2"}]'::pg_dependencies; DETAIL: Invalid "attributes" element: -11. we already check the key "attributes", we can also check "dependency", IF the value of ""dependency" does not meet ``(if (parse->dependency == 0 || parse->dependency < (0-STATS_MAX_DIMENSIONS))`` then error out. see the attached patch. -- jian https://www.enterprisedb.com/ --000000000000a5123906441599ac Content-Type: application/octet-stream; name="v16-0001-misc-fix-for-v16.no-cfbot" Content-Disposition: attachment; filename="v16-0001-misc-fix-for-v16.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi8iqfun0 RnJvbSA4MTYzOGY5MzAzOWY5Y2IxNzNiNzY5MTczZDk0NDdlYzAzYWIwMDQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjEgTm92IDIwMjUgMTU6MDY6MDAgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx NiAxLzFdIG1pc2MgZml4IGZvciB2MTYKCm1haW5seSByZWdyZXNzIHRlc3RzIGZvciBjb3ZlcmFn ZSBpbXByb3ZlbWVudHMKCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEa0xNPWVS b3AwdD09aGcwVFUzS3VESDZEZ25VeFE2dlp4Vjl0aD02dlcxSkczNk1RQG1haWwuZ21haWwuY29t Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX2RlcGVuZGVuY2llcy5jICAgICAgIHwgMjUg KysrKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BnX2RlcGVuZGVuY2llcy5vdXQgfCA3 OSArKysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZ19kZXBlbmRlbmNp ZXMuc3FsICAgICAgfCAxNyArKysrCiAzIGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCsp LCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19k ZXBlbmRlbmNpZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ19kZXBlbmRlbmNpZXMuYwpp bmRleCBiYzg3OTU0NDhiMi4uMWJjYzVjN2FmNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ19kZXBlbmRlbmNpZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdf ZGVwZW5kZW5jaWVzLmMKQEAgLTE5Myw3ICsxOTMsNyBAQCBkZXBlbmRlbmNpZXNfb2JqZWN0X2Vu ZCh2b2lkICpzdGF0ZSkKIAkJZXJyc2F2ZShwYXJzZS0+ZXNjb250ZXh0LAogCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJT04pLAogCQkJCWVycm1zZygibWFsZm9y bWVkIHBnX2RlcGVuZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCi0JCQkJZXJyZGV0YWls KCJUaGUgXCIlc1wiIGtleSBtdXN0IGNvbnRhaW4gYW4gYXJyYXkgb2YgYXQgbGVhc3QgJWQgIgor CQkJCWVycmRldGFpbCgiVGhlIFwiJXNcIiBrZXkgbXVzdCBjb250YWluIGFuIGFycmF5IG9mIGF0 IGxlYXN0ICVkIgogCQkJCQkJICAiIGFuZCBubyB0aGFuICVkIGVsZW1lbnRzLiIsCiAJCQkJCQkg IFBHX0RFUEVOREVOQ0lFU19LRVlfQVRUUklCVVRFUywgMSwgU1RBVFNfTUFYX0RJTUVOU0lPTlMg LSAxKSk7CiAJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOwpAQCAtMzM4LDcgKzMzOCw3 IEBAIGRlcGVuZGVuY2llc19vYmplY3RfZmllbGRfc3RhcnQodm9pZCAqc3RhdGUsIGNoYXIgKmZu YW1lLCBib29sIGlzbnVsbCkKIAkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBS RVNFTlRBVElPTiksCiAJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogXCIl c1wiIiwgcGFyc2UtPnN0ciksCiAJCQkJCWVycmRldGFpbCgiTXVsdGlwbGUgXCIlc1wiIGtleXMg YXJlIG5vdCBhbGxvd2VkLiIsCi0JCQkJCQkJUEdfREVQRU5ERU5DSUVTX0tFWV9BVFRSSUJVVEVT KSk7CisJCQkJCQkJICBQR19ERVBFTkRFTkNJRVNfS0VZX0FUVFJJQlVURVMpKTsKIAkJCXJldHVy biBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOwogCQl9CiAKQEAgLTM1NSw3ICszNTUsNyBAQCBkZXBl bmRlbmNpZXNfb2JqZWN0X2ZpZWxkX3N0YXJ0KHZvaWQgKnN0YXRlLCBjaGFyICpmbmFtZSwgYm9v bCBpc251bGwpCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RFWFRfUkVQUkVTRU5UQVRJ T04pLAogCQkJCQllcnJtc2coIm1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6IFwiJXNcIiIsIHBh cnNlLT5zdHIpLAogCQkJCQllcnJkZXRhaWwoIk11bHRpcGxlIFwiJXNcIiBrZXlzIGFyZSBub3Qg YWxsb3dlZC4iLAotCQkJCQkJCVBHX0RFUEVOREVOQ0lFU19LRVlfREVQRU5ERU5DWSkpOworCQkJ CQkJCSAgUEdfREVQRU5ERU5DSUVTX0tFWV9ERVBFTkRFTkNZKSk7CiAJCQlyZXR1cm4gSlNPTl9T RU1fQUNUSU9OX0ZBSUxFRDsKIAkJfQogCkBAIC0zNzIsNyArMzcyLDcgQEAgZGVwZW5kZW5jaWVz X29iamVjdF9maWVsZF9zdGFydCh2b2lkICpzdGF0ZSwgY2hhciAqZm5hbWUsIGJvb2wgaXNudWxs KQogCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKIAkJ CQkJZXJybXNnKCJtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3Ry KSwKIAkJCQkJZXJyZGV0YWlsKCJNdWx0aXBsZSBcIiVzXCIga2V5cyBhcmUgbm90IGFsbG93ZWQu IiwKLQkJCQkJCQlQR19ERVBFTkRFTkNJRVNfS0VZX0RFR1JFRSkpOworCQkJCQkJCSAgUEdfREVQ RU5ERU5DSUVTX0tFWV9ERUdSRUUpKTsKIAkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVE OwogCQl9CiAKQEAgLTUxMCw3ICs1MTAsNyBAQCBkZXBlbmRlbmNpZXNfc2NhbGFyKHZvaWQgKnN0 YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0b2tlbnR5cGUpCiAJCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfVEVYVF9SRVBSRVNFTlRBVElPTiksCiAJCQkJCQkJZXJybXNnKCJt YWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiBcIiVzXCIiLCBwYXJzZS0+c3RyKSwKIAkJCQkJCQll cnJkZXRhaWwoIkludmFsaWQgXCIlc1wiIGVsZW1lbnQ6ICVkIGNhbm5vdCBmb2xsb3cgJWQuIiwK LQkJCQkJCQkJCVBHX0RFUEVOREVOQ0lFU19LRVlfQVRUUklCVVRFUywgYXR0bnVtLCBwcmV2KSk7 CisJCQkJCQkJCQkgIFBHX0RFUEVOREVOQ0lFU19LRVlfQVRUUklCVVRFUywgYXR0bnVtLCBwcmV2 KSk7CiAJCQkJCXJldHVybiBKU09OX1NFTV9BQ1RJT05fRkFJTEVEOwogCQkJCX0KIAkJCX0KQEAg LTUzMiw2ICs1MzIsMjEgQEAgZGVwZW5kZW5jaWVzX3NjYWxhcih2b2lkICpzdGF0ZSwgY2hhciAq dG9rZW4sIEpzb25Ub2tlblR5cGUgdG9rZW50eXBlKQogCQkJCXJldHVybiBKU09OX1NFTV9BQ1RJ T05fRkFJTEVEOwogCQkJfQogCisJCQkvKgorCQkJICogVGhlIGF0dG51bSBjYW5ub3QgYmUgemVy byBhIG5lZ2F0aXZlIG51bWJlciBiZXlvbmQgdGhlIG51bWJlciBvZiB0aGUKKwkJCSAqIHBvc3Np YmxlIGV4cHJlc3Npb25zLgorCQkJICovCisJCQlpZiAocGFyc2UtPmRlcGVuZGVuY3kgPT0gMCB8 fCBwYXJzZS0+ZGVwZW5kZW5jeSA8ICgwLVNUQVRTX01BWF9ESU1FTlNJT05TKSkKKwkJCXsKKwkJ CQllcnJzYXZlKHBhcnNlLT5lc2NvbnRleHQsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9URVhUX1JFUFJFU0VOVEFUSU9OKSwKKwkJCQkJCWVycm1zZygibWFsZm9ybWVkIHBnX2RlcGVu ZGVuY2llczogXCIlc1wiIiwgcGFyc2UtPnN0ciksCisJCQkJCQllcnJkZXRhaWwoIkludmFsaWQg XCIlc1wiIGVsZW1lbnQ6ICVkLiIsCisJCQkJCQkJCSAgUEdfREVQRU5ERU5DSUVTX0tFWV9ERVBF TkRFTkNZLCBwYXJzZS0+ZGVwZW5kZW5jeSkpOworCisJCQkJcmV0dXJuIEpTT05fU0VNX0FDVElP Tl9GQUlMRUQ7CisJCQl9CisKIAkJCXBhcnNlLT5zdGF0ZSA9IERFUFNfRVhQRUNUX0tFWTsKIAkJ CXJldHVybiBKU09OX1NVQ0NFU1M7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGdfZGVwZW5kZW5jaWVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGdfZGVwZW5kZW5jaWVzLm91dAppbmRleCBjMjYzYzEzM2YwOC4uYjlmNWVhNDUwODUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGdfZGVwZW5kZW5jaWVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BnX2RlcGVuZGVuY2llcy5vdXQKQEAg LTExNywxMSArMTE3LDExIEBAIFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMSwyLDMsNCw1LDYs Nyw4XSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nCiBFUlJPUjogIG1hbGZv cm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJhdHRyaWJ1dGVzIiA6IFsxLDIsMyw0LDUsNiw3LDhd LCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSIKIExJTkUgMTogU0VMRUNUICdb eyJhdHRyaWJ1dGVzIiA6IFsxLDIsMyw0LDUsNiw3LDhdLCAiZGVwZW5kZW5jeSIgOiA0Li4uCiAg ICAgICAgICAgICAgICBeCi1ERVRBSUw6ICBUaGUgImF0dHJpYnV0ZXMiIGtleSBtdXN0IGNvbnRh aW4gYW4gYXJyYXkgb2YgYXQgbGVhc3QgMSAgYW5kIG5vIHRoYW4gNyBlbGVtZW50cy4KK0RFVEFJ TDogIFRoZSAiYXR0cmlidXRlcyIga2V5IG11c3QgY29udGFpbiBhbiBhcnJheSBvZiBhdCBsZWFz dCAxIGFuZCBubyB0aGFuIDcgZWxlbWVudHMuCiBTRUxFQ1QgKiBGUk9NIHBnX2lucHV0X2Vycm9y X2luZm8oJ1t7ImF0dHJpYnV0ZXMiIDogWzEsMiwzLDQsNSw2LDcsOF0sICJkZXBlbmRlbmN5IiA6 IDQsICJkZWdyZWUiOiAxLjAwMH1dJywgJ3BnX2RlcGVuZGVuY2llcycpOwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGV0YWlsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBoaW50IHwgc3FsX2Vycm9yX2NvZGUgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0KLSBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIg OiBbMSwyLDMsNCw1LDYsNyw4XSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0i IHwgVGhlICJhdHRyaWJ1dGVzIiBrZXkgbXVzdCBjb250YWluIGFuIGFycmF5IG9mIGF0IGxlYXN0 IDEgIGFuZCBubyB0aGFuIDcgZWxlbWVudHMuIHwgICAgICB8IDIyUDAyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXRhaWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgaGludCB8IHNxbF9lcnJvcl9jb2RlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0KKyBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIgOiBb MSwyLDMsNCw1LDYsNyw4XSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0iIHwg VGhlICJhdHRyaWJ1dGVzIiBrZXkgbXVzdCBjb250YWluIGFuIGFycmF5IG9mIGF0IGxlYXN0IDEg YW5kIG5vIHRoYW4gNyBlbGVtZW50cy4gfCAgICAgIHwgMjJQMDIKICgxIHJvdykKIAogLS0gVmFs aWQga2V5cywgaW52YWxpZCB2YWx1ZXMKQEAgLTI0Niw2ICsyNDYsNzcgQEAgU0VMRUNUICogRlJP TSBwZ19pbnB1dF9lcnJvcl9pbmZvKCdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiZGVwZW5kZW5j eSIgOiA0LCAiZGUKICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIg OiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IE5hTn1dIiB8IE11c3QgYmUgdmFs aWQgSlNPTi4gfCAgICAgIHwgMjJQMDIKICgxIHJvdykKIAorU0VMRUNUICdbeyJhdHRyaWJ1dGVz IjogW10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDF9XScgOjpwZ19kZXBlbmRlbmNpZXM7 CitFUlJPUjogIG1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJhdHRyaWJ1dGVzIjogW10s ICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDF9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRy aWJ1dGVzIjogW10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDF9XScgLi4uCisgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBUaGUgImF0dHJpYnV0ZXMiIGtleSBtdXN0IGJlIGFuIG5vbi1l bXB0eSBhcnJheS4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiB7ImEiOiAxfSwgImRlcGVuZGVu Y3kiIDogNCwgImRlZ3JlZSI6ICIxLjIifV0nOjpwZ19kZXBlbmRlbmNpZXM7CitFUlJPUjogIG1h bGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJhdHRyaWJ1dGVzIiA6IHsiYSI6IDF9LCAiZGVw ZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogIjEuMiJ9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRy aWJ1dGVzIiA6IHsiYSI6IDF9LCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlLi4uCisgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBWYWx1ZSBvZiAiYXR0cmlidXRlcyIgbXVzdCBiZSBhbiBhcnJh eSBvZiBhdHRyaWJ1dGUgbnVtYmVycy4KK1NFTEVDVCAnW3siZGVwZW5kZW5jeSIgOiA0LCAiZGVn cmVlIjogIjEuMiJ9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVkIHBnX2Rl cGVuZGVuY2llczogIlt7ImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6ICIxLjIifV0iCitMSU5F IDE6IFNFTEVDVCAnW3siZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogIjEuMiJ9XSc6OnBnX2Rl cGVuZGVuYy4uLgorICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSXRlbSBtdXN0IGNvbnRhaW4g ImF0dHJpYnV0ZXMiIGtleQorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsxLDIsMyw0LDUsNiw3 XSwgImRlcGVuZGVuY3kiIDogMCwgImRlZ3JlZSI6ICIxLjIifV0nOjpwZ19kZXBlbmRlbmNpZXM7 CitFUlJPUjogIG1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJhdHRyaWJ1dGVzIiA6IFsx LDIsMyw0LDUsNiw3XSwgImRlcGVuZGVuY3kiIDogMCwgImRlZ3JlZSI6ICIxLjIifV0iCitMSU5F IDE6IFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMSwyLDMsNCw1LDYsN10sICJkZXBlbmRlbmN5 IiA6IDAsIC4uLgorICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSW52YWxpZCAiZGVwZW5kZW5j eSIgZWxlbWVudDogMC4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMSwyLDMsNCw1LDYsN10s ICJkZXBlbmRlbmN5IiA6IC05LCAiZGVncmVlIjogIjEuMiJ9XSc6OnBnX2RlcGVuZGVuY2llczsK K0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogWzEs MiwzLDQsNSw2LDddLCAiZGVwZW5kZW5jeSIgOiAtOSwgImRlZ3JlZSI6ICIxLjIifV0iCitMSU5F IDE6IFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMSwyLDMsNCw1LDYsN10sICJkZXBlbmRlbmN5 IiA6IC05LC4uLgorICAgICAgICAgICAgICAgXgorREVUQUlMOiAgSW52YWxpZCAiZGVwZW5kZW5j eSIgZWxlbWVudDogLTkuCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiOiBbMSwyXSwgImRlcGVuZGVu Y3kiOiAyLCAiZGVncmVlIjogMX1dJyA6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9y bWVkIHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiOiBbMSwyXSwgImRlcGVuZGVuY3ki OiAyLCAiZGVncmVlIjogMX1dIgorTElORSAxOiBTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiOiBbMSwy XSwgImRlcGVuZGVuY3kiOiAyLCAiZGVncmVlIjogMX0uLi4KKyAgICAgICAgICAgICAgIF4KK0RF VEFJTDogIEl0ZW0gImRlcGVuZGVuY3kiIHZhbHVlIDIgZm91bmQgaW4gdGhlICJhdHRyaWJ1dGVz IiBsaXN0LgorU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsxLCB7fV0sICJkZXBlbmRlbmN5IiA6 IDEsICJkZWdyZWUiOiAiMS4yIn1dJzo6cGdfZGVwZW5kZW5jaWVzOworRVJST1I6ICBtYWxmb3Jt ZWQgcGdfZGVwZW5kZW5jaWVzOiAiW3siYXR0cmlidXRlcyIgOiBbMSwge31dLCAiZGVwZW5kZW5j eSIgOiAxLCAiZGVncmVlIjogIjEuMiJ9XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVz IiA6IFsxLCB7fV0sICJkZXBlbmRlbmN5IiA6IDEsICJkZWdyZWUiLi4uCisgICAgICAgICAgICAg ICBeCitERVRBSUw6ICBBdHRyaWJ1dGUgbGlzdHMgY2FuIG9ubHkgY29udGFpbiBhdHRyaWJ1dGUg bnVtYmVycy4KK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMSwyXSwgImRlcGVuZGVuY3kiIDog e30sICJkZWdyZWUiOiAxLjB9XSc6OnBnX2RlcGVuZGVuY2llczsKK0VSUk9SOiAgbWFsZm9ybWVk IHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogWzEsMl0sICJkZXBlbmRlbmN5IiA6 IHt9LCAiZGVncmVlIjogMS4wfV0iCitMSU5FIDE6IFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBb MSwyXSwgImRlcGVuZGVuY3kiIDoge30sICJkZWdyZWUiOi4uLgorICAgICAgICAgICAgICAgXgor REVUQUlMOiAgVmFsdWUgb2YgImRlcGVuZGVuY3kiIG11c3QgYmUgYW4gaW50ZWdlci4KK1NFTEVD VCAnW3siYXR0cmlidXRlcyIgOiBbMSwyXSwgImRlcGVuZGVuY3kiIDogMywgImRlZ3JlZSI6IHt9 fV0nOjpwZ19kZXBlbmRlbmNpZXM7CitFUlJPUjogIG1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6 ICJbeyJhdHRyaWJ1dGVzIiA6IFsxLDJdLCAiZGVwZW5kZW5jeSIgOiAzLCAiZGVncmVlIjoge319 XSIKK0xJTkUgMTogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsxLDJdLCAiZGVwZW5kZW5jeSIg OiAzLCAiZGVncmVlIjogLi4uCisgICAgICAgICAgICAgICBeCitERVRBSUw6ICBWYWx1ZSBvZiAi ZGVncmVlIiBtdXN0IGJlIGFuIGludGVnZXIuCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzEs Ml0sICJkZXBlbmRlbmN5IiA6IDEsICJkZWdyZWUiOiAiYSJ9XSc6OnBnX2RlcGVuZGVuY2llczsK K0VSUk9SOiAgbWFsZm9ybWVkIHBnX2RlcGVuZGVuY2llczogIlt7ImF0dHJpYnV0ZXMiIDogWzEs Ml0sICJkZXBlbmRlbmN5IiA6IDEsICJkZWdyZWUiOiAiYSJ9XSIKK0xJTkUgMTogU0VMRUNUICdb eyJhdHRyaWJ1dGVzIiA6IFsxLDJdLCAiZGVwZW5kZW5jeSIgOiAxLCAiZGVncmVlIjogLi4uCisg ICAgICAgICAgICAgICBeCitERVRBSUw6ICBJbnZhbGlkICJkZWdyZWUiIHZhbHVlLgorU0VMRUNU ICdbeyJhdHRyaWJ1dGVzIiA6IFsyXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6ICJOYU4i fV0nOjpwZ19kZXBlbmRlbmNpZXM7CisgICAgICAgICAgICAgICAgICAgIHBnX2RlcGVuZGVuY2ll cyAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgW3siYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3ki OiA0LCAiZGVncmVlIjogTmFOfV0KKygxIHJvdykKKworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6 IFsyXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6ICItaW5mIn1dJzo6cGdfZGVwZW5kZW5j aWVzOworICAgICAgICAgICAgICAgICAgICAgICBwZ19kZXBlbmRlbmNpZXMgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFt7ImF0dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogNCwg ImRlZ3JlZSI6IC1JbmZpbml0eX1dCisoMSByb3cpCisKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIg OiBbMl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAiaW5mIn1dJzo6cGdfZGVwZW5kZW5j aWVzOworICAgICAgICAgICAgICAgICAgICAgIHBnX2RlcGVuZGVuY2llcyAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBbeyJhdHRyaWJ1dGVzIjogWzJdLCAiZGVwZW5kZW5jeSI6IDQsICJk ZWdyZWUiOiBJbmZpbml0eX1dCisoMSByb3cpCisKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBb Ml0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAiLWluZiJ9XSc6OnBnX2RlcGVuZGVuY2ll czo6dGV4dDo6cGdfZGVwZW5kZW5jaWVzOworRVJST1I6ICBtYWxmb3JtZWQgcGdfZGVwZW5kZW5j aWVzOiAiW3siYXR0cmlidXRlcyI6IFsyXSwgImRlcGVuZGVuY3kiOiA0LCAiZGVncmVlIjogLUlu ZmluaXR5fV0iCitERVRBSUw6ICBNdXN0IGJlIHZhbGlkIEpTT04uCiAtLSBEdXBsaWNhdGVkIGtl eXMKIFNFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImF0dHJpYnV0ZXMiOiBbMSwyXSwg ImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nOjpwZ19kZXBlbmRlbmNpZXM7CiBF UlJPUjogIG1hbGZvcm1lZCBwZ19kZXBlbmRlbmNpZXM6ICJbeyJhdHRyaWJ1dGVzIiA6IFsyLDNd LCAiYXR0cmlidXRlcyI6IFsxLDJdLCAiZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9 XSIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BnX2RlcGVuZGVuY2llcy5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZ19kZXBlbmRlbmNpZXMuc3FsCmluZGV4IDBkZGE5Zjc2 YjFjLi5hZDkxZGY5OTExMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGdfZGVw ZW5kZW5jaWVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZ19kZXBlbmRlbmNpZXMu c3FsCkBAIC01NCw2ICs1NCwyMyBAQCBTRUxFQ1QgKiBGUk9NIHBnX2lucHV0X2Vycm9yX2luZm8o J1t7ImF0dHJpYnV0ZXMiIDogMSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZQogU0VMRUNUICog RlJPTSBwZ19pbnB1dF9lcnJvcl9pbmZvKCdbeyJhdHRyaWJ1dGVzIiA6ICJhIiwgImRlcGVuZGVu Y3kiIDogNCwgImRlZ3JlZSI6IDEuMDAwfV0nLCAncGdfZGVwZW5kZW5jaWVzJyk7CiBTRUxFQ1Qg KiBGUk9NIHBnX2lucHV0X2Vycm9yX2luZm8oJ1t7ImF0dHJpYnV0ZXMiIDogWzIsM10sICJkZXBl bmRlbmN5IiA6IDQsICJkZWdyZWUiOiBOYU59XScsICdwZ19kZXBlbmRlbmNpZXMnKTsKIAorU0VM RUNUICdbeyJhdHRyaWJ1dGVzIjogW10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDF9XScg OjpwZ19kZXBlbmRlbmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogeyJhIjogMX0sICJk ZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAiMS4yIn1dJzo6cGdfZGVwZW5kZW5jaWVzOworCitT RUxFQ1QgJ1t7ImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6ICIxLjIifV0nOjpwZ19kZXBlbmRl bmNpZXM7CitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzEsMiwzLDQsNSw2LDddLCAiZGVwZW5k ZW5jeSIgOiAwLCAiZGVncmVlIjogIjEuMiJ9XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAn W3siYXR0cmlidXRlcyIgOiBbMSwyLDMsNCw1LDYsN10sICJkZXBlbmRlbmN5IiA6IC05LCAiZGVn cmVlIjogIjEuMiJ9XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAnW3siYXR0cmlidXRlcyI6 IFsxLDJdLCAiZGVwZW5kZW5jeSI6IDIsICJkZWdyZWUiOiAxfV0nIDo6cGdfZGVwZW5kZW5jaWVz OworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsxLCB7fV0sICJkZXBlbmRlbmN5IiA6IDEsICJk ZWdyZWUiOiAiMS4yIn1dJzo6cGdfZGVwZW5kZW5jaWVzOworU0VMRUNUICdbeyJhdHRyaWJ1dGVz IiA6IFsxLDJdLCAiZGVwZW5kZW5jeSIgOiB7fSwgImRlZ3JlZSI6IDEuMH1dJzo6cGdfZGVwZW5k ZW5jaWVzOworU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsxLDJdLCAiZGVwZW5kZW5jeSIgOiAz LCAiZGVncmVlIjoge319XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAnW3siYXR0cmlidXRl cyIgOiBbMSwyXSwgImRlcGVuZGVuY3kiIDogMSwgImRlZ3JlZSI6ICJhIn1dJzo6cGdfZGVwZW5k ZW5jaWVzOworCitTRUxFQ1QgJ1t7ImF0dHJpYnV0ZXMiIDogWzJdLCAiZGVwZW5kZW5jeSIgOiA0 LCAiZGVncmVlIjogIk5hTiJ9XSc6OnBnX2RlcGVuZGVuY2llczsKK1NFTEVDVCAnW3siYXR0cmli dXRlcyIgOiBbMl0sICJkZXBlbmRlbmN5IiA6IDQsICJkZWdyZWUiOiAiLWluZiJ9XSc6OnBnX2Rl cGVuZGVuY2llczsKK1NFTEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMl0sICJkZXBlbmRlbmN5IiA6 IDQsICJkZWdyZWUiOiAiaW5mIn1dJzo6cGdfZGVwZW5kZW5jaWVzOworU0VMRUNUICdbeyJhdHRy aWJ1dGVzIiA6IFsyXSwgImRlcGVuZGVuY3kiIDogNCwgImRlZ3JlZSI6ICItaW5mIn1dJzo6cGdf ZGVwZW5kZW5jaWVzOjp0ZXh0OjpwZ19kZXBlbmRlbmNpZXM7CisKIC0tIER1cGxpY2F0ZWQga2V5 cwogU0VMRUNUICdbeyJhdHRyaWJ1dGVzIiA6IFsyLDNdLCAiYXR0cmlidXRlcyI6IFsxLDJdLCAi ZGVwZW5kZW5jeSIgOiA0LCAiZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKIFNF TEVDVCAnW3siYXR0cmlidXRlcyIgOiBbMiwzXSwgImRlcGVuZGVuY3kiIDogNCwgImRlcGVuZGVu Y3kiOiA0LCAiZGVncmVlIjogMS4wMDB9XSc6OnBnX2RlcGVuZGVuY2llczsKLS0gCjIuMzQuMQoK --000000000000a5123906441599ac--