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 1rVphc-001aZa-Jq for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Feb 2024 09:19:17 +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 1rVphb-00Bndh-98 for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Feb 2024 09:19:15 +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.94.2) (envelope-from ) id 1rVpha-00BndY-Sw for pgsql-hackers@lists.postgresql.org; Fri, 02 Feb 2024 09:19:14 +0000 Received: from mail-yw1-x112c.google.com ([2607:f8b0:4864:20::112c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rVphY-0053Kg-Ub for pgsql-hackers@postgresql.org; Fri, 02 Feb 2024 09:19:14 +0000 Received: by mail-yw1-x112c.google.com with SMTP id 00721157ae682-6041779e75eso20005747b3.3 for ; Fri, 02 Feb 2024 01:19:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706865551; x=1707470351; 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=bav5/ICx1ceAq1aJ7uH0hZSWFLzsEO2bK68MbTqkxVU=; b=bxci1BOp3iEcsP4B89Rw9ZUe9QYBEQ8ANYac5Wo5SCuFk3zvIrCVawSLc3Ko3uXVVw CGmtLDh382X+F6onUlGxhyYb8xFtzIiymr7p0JdlPZxSM+L6QVAN5VBcCvFE9xgytm20 UYimFiQ81uuuBf1w/liFuZSY1Sz8qTFsddzQ3h9Tpv/jqhFaXjI7S/0l5yGi6RKCLsE9 RGdIHPvPQeZCojBQ2GD35E8a7XCdrKgQDixEkC8/Ld1tCVbQ8LOSr8F7y+HoEmNaHeow TiveBOxTUMhUzPGS3yLwC+mQVTA4hGNipLlqgsYYlczG/Iq9z88czM1YVxDPHJiCJtHW eIrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706865551; x=1707470351; 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=bav5/ICx1ceAq1aJ7uH0hZSWFLzsEO2bK68MbTqkxVU=; b=KmROI7pQaTVww/Ctaqp5wM2akyvbASKrDTnXP5u8J/QeOuCDtKRQvt5Qw3+PIffJ68 Z3m0zXtSOuvVfD0q++Z7IwMqv4JL/1WGieCxlmM6cwgRKtCRVdCB9mCm71+5F8tXtE7h bjHh7VwXc3KE4Ji0g1f0uAGpjDBqitu3iq15kYsA80nWOUrSk5swx2nWOWhu1TO+kl41 EcqVYBRP3uqdODxKfl2+4czAkWZjDHA/nlBu/Tci7dYNMPTKrJ/qB1EQPBdJO6xh5bjZ zx5sN4QlHZc5zBjwobV/Jl9bbZ0/EaKaBT+qtN0y59xyGPVEQX4UE38LZy2sX/mHa/wL 6RpQ== X-Gm-Message-State: AOJu0Yx3gmr4+xvS8PW7S1zjlnfxvsDojE92KvI0sDYYs8ScnJRhUPUt yIm0J/Sy28+SKQqhQu0bw3DeyJYoKoHXh3OI3wh82xoNWd5B0/lPNqWT/dM6Iaa85rZ5L/pYOvX aNR1OKXVw5cEFGHijQv+YuH5C1XQ= X-Google-Smtp-Source: AGHT+IHW/NLt4rtmzjwUuII0wTnCiABPgaRuXLYJU3+pVP77kLWQjlxHoiJeNcg04enMSLZ1M8HzW7n8rRGK00KiNMU= X-Received: by 2002:a81:441c:0:b0:5e8:92f9:46e8 with SMTP id r28-20020a81441c000000b005e892f946e8mr1697611ywa.30.1706865550808; Fri, 02 Feb 2024 01:19:10 -0800 (PST) MIME-Version: 1.0 References: <1724688.1688837323@sss.pgh.pa.us> In-Reply-To: From: Richard Guo Date: Fri, 2 Feb 2024 17:18:59 +0800 Message-ID: Subject: Re: Check lateral references within PHVs for memoize cache keys To: Tom Lane Cc: PostgreSQL-development , David Rowley Content-Type: multipart/mixed; boundary="000000000000d61ed10610629a55" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d61ed10610629a55 Content-Type: multipart/alternative; boundary="000000000000d61ecf0610629a53" --000000000000d61ecf0610629a53 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 25, 2023 at 3:01=E2=80=AFPM Richard Guo wrote: > On Thu, Jul 13, 2023 at 3:12=E2=80=AFPM Richard Guo > wrote: > >> So I'm wondering if it'd be better that we move all this logic of >> computing additional lateral references within PHVs to get_memoize_path, >> where we can examine only PHVs that are evaluated at innerrel. And >> considering that these lateral refs are only used by Memoize, it seems >> more sensible to compute them there. But I'm a little worried that >> doing this would make get_memoize_path too expensive. >> >> Please see v4 patch for this change. >> > > I'd like to add that not checking PHVs for lateral references can lead > to performance regressions with Memoize node. > The v4 patch does not apply any more. I've rebased it on master. Nothing else has changed. Thanks Richard --000000000000d61ecf0610629a53 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Mon, Dec 25, 2023 at 3:01=E2=80=AFPM R= ichard Guo <guofenglinux@gmail= .com> wrote:
=
On Thu, Jul 13, 2023 at 3:12=E2=80=AFPM Richard Guo <guofenglinux@gmail.com&= gt; wrote:
So I'm wondering if it'd b= e better that we move all this logic of
computing additional lateral ref= erences within PHVs to get_memoize_path,
where we can examine only PHVs = that are evaluated at innerrel.=C2=A0 And
considering that these lateral= refs are only used by Memoize, it seems
more sensible to compute them t= here.=C2=A0 But I'm a little worried that
doing this would make get_= memoize_path too expensive.

Please see v4 patch for this change.

I'd like to add that not= checking PHVs for lateral references can lead
to performance regression= s with Memoize node.=C2=A0

The v4 patch does not apply any more.=C2=A0 I've rebased it on master= .
Nothing else has changed.

Thanks
Richard
--000000000000d61ecf0610629a53-- --000000000000d61ed10610629a55 Content-Type: application/octet-stream; name="v5-0001-Check-lateral-refs-within-PHVs-for-memoize-cache-keys.patch" Content-Disposition: attachment; filename="v5-0001-Check-lateral-refs-within-PHVs-for-memoize-cache-keys.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls4fnz600 RnJvbSBkYTViZTI0NjM5MDJjMWI5N2U1ZDYyOTlmNjFmYzcxZDBiOTAxMjZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAzMCBEZWMgMjAyMiAxMDozNTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjVd IENoZWNrIGxhdGVyYWwgcmVmcyB3aXRoaW4gUEhWcyBmb3IgbWVtb2l6ZSBjYWNoZSBrZXlzCgot LS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8IDEyICsr LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnBhdGguYyAgICAgICAgIHwgODUgKysr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tZW1vaXplLm91dCAg ICAgICAgIHwgNjggKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9tZW1vaXpl LnNxbCAgICAgICAgICAgICAgfCAyNCArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2Vy dGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVj dGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggYjVhMzhhZWIyMS4uYzI1ZmQ5ZDA3NiAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0zNjk2 LDE1ICszNjk2LDE5IEBAIE9SREVSIEJZIHJlZl8wLiJDIDEiOwogICAgICAgICAgLT4gIEluZGV4 IFNjYW4gdXNpbmcgdDFfcGtleSBvbiAiUyAxIi4iVCAxIiByZWZfMAogICAgICAgICAgICAgICAg T3V0cHV0OiByZWZfMC4iQyAxIiwgcmVmXzAuYzIsIHJlZl8wLmMzLCByZWZfMC5jNCwgcmVmXzAu YzUsIHJlZl8wLmM2LCByZWZfMC5jNywgcmVmXzAuYzgKICAgICAgICAgICAgICAgIEluZGV4IENv bmQ6IChyZWZfMC4iQyAxIiA8IDEwKQotICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJs aWMuZnQxIHJlZl8xCi0gICAgICAgICAgICAgICBPdXRwdXQ6IHJlZl8xLmMzLCByZWZfMC5jMgot ICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGMzIEZST00gIlMgMSIuIlQgMSIgV0hF UkUgKChjMyA9ICcwMDAwMScpKQorICAgICAgICAgLT4gIE1lbW9pemUKKyAgICAgICAgICAgICAg IE91dHB1dDogcmVmXzEuYzMsIChyZWZfMC5jMikKKyAgICAgICAgICAgICAgIENhY2hlIEtleTog cmVmXzAuYzIKKyAgICAgICAgICAgICAgIENhY2hlIE1vZGU6IGJpbmFyeQorICAgICAgICAgICAg ICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnQxIHJlZl8xCisgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHJlZl8xLmMzLCByZWZfMC5jMgorICAgICAgICAgICAgICAgICAgICAgUmVt b3RlIFNRTDogU0VMRUNUIGMzIEZST00gIlMgMSIuIlQgMSIgV0hFUkUgKChjMyA9ICcwMDAwMScp KQogICAgLT4gIE1hdGVyaWFsaXplCiAgICAgICAgICBPdXRwdXQ6IHJlZl8zLmMzCiAgICAgICAg ICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDIgcmVmXzMKICAgICAgICAgICAgICAgIE91 dHB1dDogcmVmXzMuYzMKICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBjMyBGUk9N ICJTIDEiLiJUIDEiIFdIRVJFICgoYzMgPSAnMDAwMDEnKSkKLSgxNSByb3dzKQorKDE5IHJvd3Mp CiAKIFNFTEVDVCByZWZfMC5jMiwgc3VicV8xLioKIEZST00KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9qb2lucGF0aC5jCmluZGV4IDZhY2E2NmYxOTYuLmU0ZGFlOGU1MzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvam9pbnBhdGguYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIm9wdGlt aXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKICNpbmNs dWRlICJvcHRpbWl6ZXIvcGF0aHMuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhY2Vob2xkZXIu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm1haW4uaCIKICNpbmNsdWRlICJ1dGlscy90eXBj YWNoZS5oIgogCkBAIC00MzcsMTAgKzQzOCwxMSBAQCBoYXZlX3Vuc2FmZV9vdXRlcl9qb2luX3Jl ZihQbGFubmVySW5mbyAqcm9vdCwKIHN0YXRpYyBib29sCiBwYXJhbWluZm9fZ2V0X2VxdWFsX2hh c2hvcHMoUGxhbm5lckluZm8gKnJvb3QsIFBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm8sCiAJCQkJ CQkJUmVsT3B0SW5mbyAqb3V0ZXJyZWwsIFJlbE9wdEluZm8gKmlubmVycmVsLAotCQkJCQkJCUxp c3QgKipwYXJhbV9leHBycywgTGlzdCAqKm9wZXJhdG9ycywKLQkJCQkJCQlib29sICpiaW5hcnlf bW9kZSkKKwkJCQkJCQlMaXN0ICpwaF9sYXRlcmFsX3ZhcnMsIExpc3QgKipwYXJhbV9leHBycywK KwkJCQkJCQlMaXN0ICoqb3BlcmF0b3JzLCBib29sICpiaW5hcnlfbW9kZSkKIAogeworCUxpc3QJ ICAgKmxhdGVyYWxfdmFyczsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCSpwYXJhbV9leHBycyA9IE5J TDsKQEAgLTUyMCw3ICs1MjIsOCBAQCBwYXJhbWluZm9fZ2V0X2VxdWFsX2hhc2hvcHMoUGxhbm5l ckluZm8gKnJvb3QsIFBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm8sCiAJfQogCiAJLyogTm93IGFk ZCBhbnkgbGF0ZXJhbCB2YXJzIHRvIHRoZSBjYWNoZSBrZXkgdG9vICovCi0JZm9yZWFjaChsYywg aW5uZXJyZWwtPmxhdGVyYWxfdmFycykKKwlsYXRlcmFsX3ZhcnMgPSBsaXN0X2NvbmNhdChwaF9s YXRlcmFsX3ZhcnMsIGlubmVycmVsLT5sYXRlcmFsX3ZhcnMpOworCWZvcmVhY2gobGMsIGxhdGVy YWxfdmFycykKIAl7CiAJCU5vZGUJICAgKmV4cHIgPSAoTm9kZSAqKSBsZmlyc3QobGMpOwogCQlU eXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CkBAIC01NzEsNiArNTc0LDcxIEBAIHBhcmFtaW5mb19n ZXRfZXF1YWxfaGFzaG9wcyhQbGFubmVySW5mbyAqcm9vdCwgUGFyYW1QYXRoSW5mbyAqcGFyYW1f aW5mbywKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIGV4dHJhY3RfbGF0ZXJhbF92YXJzX2Zy b21fUEhWcworICoJICBFeHRyYWN0IGxhdGVyYWwgcmVmZXJlbmNlcyB3aXRoaW4gUGxhY2VIb2xk ZXJWYXJzIHRoYXQgYXJlIGR1ZSB0byBiZQorICoJICBldmFsdWF0ZWQgYXQgJ2lubmVycmVsaWRz Jy4KKyAqLworc3RhdGljIExpc3QgKgorZXh0cmFjdF9sYXRlcmFsX3ZhcnNfZnJvbV9QSFZzKFBs YW5uZXJJbmZvICpyb290LCBSZWxpZHMgaW5uZXJyZWxpZHMpCit7CisJTGlzdAkgICAqcGhfbGF0 ZXJhbF92YXJzID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCisJLyogTm90aGluZyB3b3VsZCBi ZSBmb3VuZCBpZiB0aGUgcXVlcnkgY29udGFpbnMgbm8gTEFURVJBTCBSVEVzICovCisJaWYgKCFy b290LT5oYXNMYXRlcmFsUlRFcykKKwkJcmV0dXJuIE5JTDsKKworCWZvcmVhY2gobGMsIHJvb3Qt PnBsYWNlaG9sZGVyX2xpc3QpCisJeworCQlQbGFjZUhvbGRlckluZm8gKnBoaW5mbyA9IChQbGFj ZUhvbGRlckluZm8gKikgbGZpcnN0KGxjKTsKKwkJTGlzdAkgICAqdmFyczsKKwkJTGlzdENlbGwg ICAqY2VsbDsKKworCQkvKiBQSFYgaXMgdW5pbnRlcmVzdGluZyBpZiBubyBsYXRlcmFsIHJlZnMg Ki8KKwkJaWYgKHBoaW5mby0+cGhfbGF0ZXJhbCA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJ LyogUEhWIGlzIHVuaW50ZXJlc3RpbmcgaWYgbm90IGR1ZSB0byBiZSBldmFsdWF0ZWQgYXQgaW5u ZXJyZWxpZHMgKi8KKwkJaWYgKCFibXNfZXF1YWwocGhpbmZvLT5waF9ldmFsX2F0LCBpbm5lcnJl bGlkcykpCisJCQljb250aW51ZTsKKworCQkvKiBGZXRjaCBWYXJzIGFuZCBQSFZzIG9mIGxhdGVy YWwgcmVmZXJlbmNlcyB3aXRoaW4gUGxhY2VIb2xkZXJWYXJzICovCisJCXZhcnMgPSBwdWxsX3Zh cnNfb2ZfbGV2ZWwoKE5vZGUgKikgcGhpbmZvLT5waF92YXItPnBoZXhwciwgMCk7CisJCWZvcmVh Y2goY2VsbCwgdmFycykKKwkJeworCQkJTm9kZQkgICAqbm9kZSA9IChOb2RlICopIGxmaXJzdChj ZWxsKTsKKworCQkJbm9kZSA9IGNvcHlPYmplY3Qobm9kZSk7CisJCQlpZiAoSXNBKG5vZGUsIFZh cikpCisJCQl7CisJCQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOworCisJCQkJQXNzZXJ0 KHZhci0+dmFybGV2ZWxzdXAgPT0gMCk7CisKKwkJCQlpZiAoYm1zX2lzX21lbWJlcih2YXItPnZh cm5vLCBwaGluZm8tPnBoX2xhdGVyYWwpKQorCQkJCQlwaF9sYXRlcmFsX3ZhcnMgPSBsYXBwZW5k KHBoX2xhdGVyYWxfdmFycywgbm9kZSk7CisJCQl9CisJCQllbHNlIGlmIChJc0Eobm9kZSwgUGxh Y2VIb2xkZXJWYXIpKQorCQkJeworCQkJCVBsYWNlSG9sZGVyVmFyICpwaHYgPSAoUGxhY2VIb2xk ZXJWYXIgKikgbm9kZTsKKworCQkJCUFzc2VydChwaHYtPnBobGV2ZWxzdXAgPT0gMCk7CisKKwkJ CQlpZiAoYm1zX2lzX3N1YnNldChmaW5kX3BsYWNlaG9sZGVyX2luZm8ocm9vdCwgcGh2KS0+cGhf ZXZhbF9hdCwKKwkJCQkJCQkJICBwaGluZm8tPnBoX2xhdGVyYWwpKQorCQkJCQlwaF9sYXRlcmFs X3ZhcnMgPSBsYXBwZW5kKHBoX2xhdGVyYWxfdmFycywgbm9kZSk7CisJCQl9CisJCQllbHNlCisJ CQkJQXNzZXJ0KGZhbHNlKTsKKwkJfQorCisJCWxpc3RfZnJlZSh2YXJzKTsKKwl9CisKKwlyZXR1 cm4gcGhfbGF0ZXJhbF92YXJzOworfQorCiAvKgogICogZ2V0X21lbW9pemVfcGF0aAogICoJCUlm IHBvc3NpYmxlLCBtYWtlIGFuZCByZXR1cm4gYSBNZW1vaXplIHBhdGggYXRvcCBvZiAnaW5uZXJf cGF0aCcuCkBAIC01ODYsNiArNjU0LDcgQEAgZ2V0X21lbW9pemVfcGF0aChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqaW5uZXJyZWwsCiAJTGlzdAkgICAqaGFzaF9vcGVyYXRvcnM7CiAJ TGlzdENlbGwgICAqbGM7CiAJYm9vbAkJYmluYXJ5X21vZGU7CisJTGlzdAkgICAqcGhfbGF0ZXJh bF92YXJzOwogCiAJLyogT2J2aW91c2x5IG5vdCBpZiBpdCdzIGRpc2FibGVkICovCiAJaWYgKCFl bmFibGVfbWVtb2l6ZSkKQEAgLTYwMCw2ICs2NjksMTIgQEAgZ2V0X21lbW9pemVfcGF0aChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5uZXJyZWwsCiAJaWYgKG91dGVyX3BhdGgtPnBh cmVudC0+cm93cyA8IDIpCiAJCXJldHVybiBOVUxMOwogCisJLyoKKwkgKiBFeHRyYWN0IGxhdGVy YWwgVmFycyB3aXRoaW4gUGxhY2VIb2xkZXJWYXJzIHRoYXQgYXJlIGR1ZSB0byBiZSBldmFsdWF0 ZWQKKwkgKiBhdCBpbm5lcnJlbC4gIFRoZXNlIGxhdGVyYWwgVmFycyBjb3VsZCBiZSB1c2VkIGFz IG1lbW9pemUgY2FjaGUga2V5cy4KKwkgKi8KKwlwaF9sYXRlcmFsX3ZhcnMgPSBleHRyYWN0X2xh dGVyYWxfdmFyc19mcm9tX1BIVnMocm9vdCwgaW5uZXJyZWwtPnJlbGlkcyk7CisKIAkvKgogCSAq IFdlIGNhbiBvbmx5IGhhdmUgYSBtZW1vaXplIG5vZGUgd2hlbiB0aGVyZSdzIHNvbWUga2luZCBv ZiBjYWNoZSBrZXksCiAJICogZWl0aGVyIHBhcmFtZXRlcml6ZWQgcGF0aCBjbGF1c2VzIG9yIGxh dGVyYWwgVmFycy4gIE5vIGNhY2hlIGtleSBzb3VuZHMKQEAgLTYwNyw3ICs2ODIsOCBAQCBnZXRf bWVtb2l6ZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbm5lcnJlbCwKIAkg Ki8KIAlpZiAoKGlubmVyX3BhdGgtPnBhcmFtX2luZm8gPT0gTlVMTCB8fAogCQkgaW5uZXJfcGF0 aC0+cGFyYW1faW5mby0+cHBpX2NsYXVzZXMgPT0gTklMKSAmJgotCQlpbm5lcnJlbC0+bGF0ZXJh bF92YXJzID09IE5JTCkKKwkJaW5uZXJyZWwtPmxhdGVyYWxfdmFycyA9PSBOSUwgJiYKKwkJcGhf bGF0ZXJhbF92YXJzID09IE5JTCkKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgpAQCAtNjk0LDYgKzc3 MCw3IEBAIGdldF9tZW1vaXplX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlu bmVycmVsLAogCQkJCQkJCQkJb3V0ZXJyZWwtPnRvcF9wYXJlbnQgPwogCQkJCQkJCQkJb3V0ZXJy ZWwtPnRvcF9wYXJlbnQgOiBvdXRlcnJlbCwKIAkJCQkJCQkJCWlubmVycmVsLAorCQkJCQkJCQkJ cGhfbGF0ZXJhbF92YXJzLAogCQkJCQkJCQkJJnBhcmFtX2V4cHJzLAogCQkJCQkJCQkJJmhhc2hf b3BlcmF0b3JzLAogCQkJCQkJCQkJJmJpbmFyeV9tb2RlKSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvbWVtb2l6ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L21lbW9pemUub3V0CmluZGV4IGNmNjg4NmEyODguLjkzM2Q3Y2Y0NDggMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWVtb2l6ZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9tZW1vaXplLm91dApAQCAtMTI5LDYgKzEyOSw3NCBAQCBXSEVSRSB0MS51bmlx dWUxIDwgMTA7CiAgICAgMjAgfCAwLjUwMDAwMDAwMDAwMDAwMDAwMDAwCiAoMSByb3cpCiAKKy0t IFRyeSB3aXRoIExBVEVSQUwgcmVmZXJlbmNlcyB3aXRoaW4gUGxhY2VIb2xkZXJWYXJzIGF0IGEg YmFzZXJlbAorU0VMRUNUIGV4cGxhaW5fbWVtb2l6ZSgnCitTRUxFQ1QgQ09VTlQoKiksQVZHKHQx LnR3ZW50eSkgRlJPTSB0ZW5rMSB0MSBMRUZUIEpPSU4KK0xBVEVSQUwgKFNFTEVDVCB0MS50d2Vu dHkgYXMgYzEsIHQyLnVuaXF1ZTEgYXMgYzIgRlJPTSB0ZW5rMSB0MikgcyBvbiB0cnVlCitXSEVS RSBzLmMxID0gcy5jMiBhbmQgdDEudW5pcXVlMSA8IDEwMDA7JywgZmFsc2UpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsYWluX21lbW9pemUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEFnZ3JlZ2F0ZSAoYWN0dWFsIHJvd3M9MSBsb29wcz1OKQorICAgLT4gIE5lc3RlZCBM b29wIChhY3R1YWwgcm93cz0xMDAwIGxvb3BzPU4pCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g dGVuazEgdDEgKGFjdHVhbCByb3dzPTEwMDAgbG9vcHM9TikKKyAgICAgICAgICAgICAgIEZpbHRl cjogKHVuaXF1ZTEgPCAxMDAwKQorICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZpbHRl cjogOTAwMAorICAgICAgICAgLT4gIE1lbW9pemUgKGFjdHVhbCByb3dzPTEgbG9vcHM9TikKKyAg ICAgICAgICAgICAgIENhY2hlIEtleTogdDEudHdlbnR5CisgICAgICAgICAgICAgICBDYWNoZSBN b2RlOiBiaW5hcnkKKyAgICAgICAgICAgICAgIEhpdHM6IDk4MCAgTWlzc2VzOiAyMCAgRXZpY3Rp b25zOiBaZXJvICBPdmVyZmxvd3M6IDAgIE1lbW9yeSBVc2FnZTogTmtCCisgICAgICAgICAgICAg ICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTEgb24gdGVuazEgdDIgKGFj dHVhbCByb3dzPTEgbG9vcHM9TikKKyAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKHQxLnR3 ZW50eSA9IHVuaXF1ZTEpCisgICAgICAgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmls dGVyOiA5OTk5CisgICAgICAgICAgICAgICAgICAgICBIZWFwIEZldGNoZXM6IE4KKygxMyByb3dz KQorCistLSBBbmQgY2hlY2sgd2UgZ2V0IHRoZSBleHBlY3RlZCByZXN1bHRzLgorU0VMRUNUIENP VU5UKCopLCBBVkcodDEudHdlbnR5KSBGUk9NIHRlbmsxIHQxIExFRlQgSk9JTgorTEFURVJBTCAo U0VMRUNUIHQxLnR3ZW50eSBhcyBjMSwgdDIudW5pcXVlMSBhcyBjMiBGUk9NIHRlbmsxIHQyKSBz IG9uIHRydWUKK1dIRVJFIHMuYzEgPSBzLmMyIGFuZCB0MS51bmlxdWUxIDwgMTAwMDsKKyBjb3Vu dCB8ICAgICAgICBhdmcgICAgICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg MTAwMCB8IDkuNTAwMDAwMDAwMDAwMDAwMAorKDEgcm93KQorCistLSBUcnkgd2l0aCBMQVRFUkFM IHJlZmVyZW5jZXMgd2l0aGluIFBsYWNlSG9sZGVyVmFycyBhdCBhIGpvaW5yZWwKK1NFTEVDVCBl eHBsYWluX21lbW9pemUoJworU0VMRUNUIENPVU5UKCopLEFWRyh0MS50d2VudHkpIEZST00gdGVu azEgdDEgTEVGVCBKT0lOCitMQVRFUkFMIChTRUxFQ1QgdDEudHdlbnR5IGFzIGMxLCB0Mi51bmlx dWUxIGFzIGMyIEZST00gdGVuazEgdDIsIHRlbmsxIHQzCisgICAgICAgICBXSEVSRSB0My51bmlx dWUxID0gMSkgcyBvbiB0cnVlCitXSEVSRSBzLmMxID0gcy5jMiBhbmQgdDEudW5pcXVlMSA8IDEw MDA7JywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV4cGxhaW5fbWVtb2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVn YXRlIChhY3R1YWwgcm93cz0xIGxvb3BzPU4pCisgICAtPiAgTmVzdGVkIExvb3AgKGFjdHVhbCBy b3dzPTEwMDAgbG9vcHM9TikKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiB0ZW5rMSB0MSAoYWN0 dWFsIHJvd3M9MTAwMCBsb29wcz1OKQorICAgICAgICAgICAgICAgRmlsdGVyOiAodW5pcXVlMSA8 IDEwMDApCisgICAgICAgICAgICAgICBSb3dzIFJlbW92ZWQgYnkgRmlsdGVyOiA5MDAwCisgICAg ICAgICAtPiAgTWVtb2l6ZSAoYWN0dWFsIHJvd3M9MSBsb29wcz1OKQorICAgICAgICAgICAgICAg Q2FjaGUgS2V5OiB0MS50d2VudHkKKyAgICAgICAgICAgICAgIENhY2hlIE1vZGU6IGJpbmFyeQor ICAgICAgICAgICAgICAgSGl0czogOTgwICBNaXNzZXM6IDIwICBFdmljdGlvbnM6IFplcm8gIE92 ZXJmbG93czogMCAgTWVtb3J5IFVzYWdlOiBOa0IKKyAgICAgICAgICAgICAgIC0+ICBOZXN0ZWQg TG9vcCAoYWN0dWFsIHJvd3M9MSBsb29wcz1OKQorICAgICAgICAgICAgICAgICAgICAgSm9pbiBG aWx0ZXI6ICh0MS50d2VudHkgPSB0Mi51bmlxdWUxKQorICAgICAgICAgICAgICAgICAgICAgUm93 cyBSZW1vdmVkIGJ5IEpvaW4gRmlsdGVyOiA5OTk5CisgICAgICAgICAgICAgICAgICAgICAtPiAg SW5kZXggT25seSBTY2FuIHVzaW5nIHRlbmsxX3VuaXF1ZTEgb24gdGVuazEgdDMgKGFjdHVhbCBy b3dzPTEgbG9vcHM9TikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1 bmlxdWUxID0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYXAgRmV0Y2hlczogTgor ICAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyB0ZW5rMV91bmlx dWUxIG9uIHRlbmsxIHQyIChhY3R1YWwgcm93cz0xMDAwMCBsb29wcz1OKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgSGVhcCBGZXRjaGVzOiBOCisoMTcgcm93cykKKworLS0gQW5kIGNoZWNr IHdlIGdldCB0aGUgZXhwZWN0ZWQgcmVzdWx0cy4KK1NFTEVDVCBDT1VOVCgqKSxBVkcodDEudHdl bnR5KSBGUk9NIHRlbmsxIHQxIExFRlQgSk9JTgorTEFURVJBTCAoU0VMRUNUIHQxLnR3ZW50eSBh cyBjMSwgdDIudW5pcXVlMSBhcyBjMiBGUk9NIHRlbmsxIHQyLCB0ZW5rMSB0MworICAgICAgICAg V0hFUkUgdDMudW5pcXVlMSA9IDEpIHMgb24gdHJ1ZQorV0hFUkUgcy5jMSA9IHMuYzIgYW5kIHQx LnVuaXF1ZTEgPCAxMDAwOworIGNvdW50IHwgICAgICAgIGF2ZyAgICAgICAgIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLQorICAxMDAwIHwgOS41MDAwMDAwMDAwMDAwMDAwCisoMSByb3cp CisKIC0tIFJlZHVjZSB3b3JrX21lbSBhbmQgaGFzaF9tZW1fbXVsdGlwbGllciBzbyB0aGF0IHdl IHNlZSBzb21lIGNhY2hlIGV2aWN0aW9ucwogU0VUIHdvcmtfbWVtIFRPICc2NGtCJzsKIFNFVCBo YXNoX21lbV9tdWx0aXBsaWVyIFRPIDEuMDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL21lbW9pemUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6ZS5zcWwKaW5kZXgg MWY0YWIwYmEzYi4uMWVjOTZhNTIwYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv bWVtb2l6ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWVtb2l6ZS5zcWwKQEAgLTc0 LDYgKzc0LDMwIEBAIExBVEVSQUwgKAogT04gdDEudHdvID0gdDIudHdvCiBXSEVSRSB0MS51bmlx dWUxIDwgMTA7CiAKKy0tIFRyeSB3aXRoIExBVEVSQUwgcmVmZXJlbmNlcyB3aXRoaW4gUGxhY2VI b2xkZXJWYXJzIGF0IGEgYmFzZXJlbAorU0VMRUNUIGV4cGxhaW5fbWVtb2l6ZSgnCitTRUxFQ1Qg Q09VTlQoKiksQVZHKHQxLnR3ZW50eSkgRlJPTSB0ZW5rMSB0MSBMRUZUIEpPSU4KK0xBVEVSQUwg KFNFTEVDVCB0MS50d2VudHkgYXMgYzEsIHQyLnVuaXF1ZTEgYXMgYzIgRlJPTSB0ZW5rMSB0Mikg cyBvbiB0cnVlCitXSEVSRSBzLmMxID0gcy5jMiBhbmQgdDEudW5pcXVlMSA8IDEwMDA7JywgZmFs c2UpOworCistLSBBbmQgY2hlY2sgd2UgZ2V0IHRoZSBleHBlY3RlZCByZXN1bHRzLgorU0VMRUNU IENPVU5UKCopLCBBVkcodDEudHdlbnR5KSBGUk9NIHRlbmsxIHQxIExFRlQgSk9JTgorTEFURVJB TCAoU0VMRUNUIHQxLnR3ZW50eSBhcyBjMSwgdDIudW5pcXVlMSBhcyBjMiBGUk9NIHRlbmsxIHQy KSBzIG9uIHRydWUKK1dIRVJFIHMuYzEgPSBzLmMyIGFuZCB0MS51bmlxdWUxIDwgMTAwMDsKKwor LS0gVHJ5IHdpdGggTEFURVJBTCByZWZlcmVuY2VzIHdpdGhpbiBQbGFjZUhvbGRlclZhcnMgYXQg YSBqb2lucmVsCitTRUxFQ1QgZXhwbGFpbl9tZW1vaXplKCcKK1NFTEVDVCBDT1VOVCgqKSxBVkco dDEudHdlbnR5KSBGUk9NIHRlbmsxIHQxIExFRlQgSk9JTgorTEFURVJBTCAoU0VMRUNUIHQxLnR3 ZW50eSBhcyBjMSwgdDIudW5pcXVlMSBhcyBjMiBGUk9NIHRlbmsxIHQyLCB0ZW5rMSB0MworICAg ICAgICAgV0hFUkUgdDMudW5pcXVlMSA9IDEpIHMgb24gdHJ1ZQorV0hFUkUgcy5jMSA9IHMuYzIg YW5kIHQxLnVuaXF1ZTEgPCAxMDAwOycsIGZhbHNlKTsKKworLS0gQW5kIGNoZWNrIHdlIGdldCB0 aGUgZXhwZWN0ZWQgcmVzdWx0cy4KK1NFTEVDVCBDT1VOVCgqKSxBVkcodDEudHdlbnR5KSBGUk9N IHRlbmsxIHQxIExFRlQgSk9JTgorTEFURVJBTCAoU0VMRUNUIHQxLnR3ZW50eSBhcyBjMSwgdDIu dW5pcXVlMSBhcyBjMiBGUk9NIHRlbmsxIHQyLCB0ZW5rMSB0MworICAgICAgICAgV0hFUkUgdDMu dW5pcXVlMSA9IDEpIHMgb24gdHJ1ZQorV0hFUkUgcy5jMSA9IHMuYzIgYW5kIHQxLnVuaXF1ZTEg PCAxMDAwOworCiAtLSBSZWR1Y2Ugd29ya19tZW0gYW5kIGhhc2hfbWVtX211bHRpcGxpZXIgc28g dGhhdCB3ZSBzZWUgc29tZSBjYWNoZSBldmljdGlvbnMKIFNFVCB3b3JrX21lbSBUTyAnNjRrQic7 CiBTRVQgaGFzaF9tZW1fbXVsdGlwbGllciBUTyAxLjA7Ci0tIAoyLjMxLjAKCg== --000000000000d61ed10610629a55--