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 1wAvGw-000ZZg-36 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 19:42:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAvGv-007cYw-0s for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 19:42:38 +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 1wAvGu-007cYo-2o for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 19:42:37 +0000 Received: from mail-vs1-xe2f.google.com ([2607:f8b0:4864:20::e2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAvGt-00000000DNb-2wxq for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 19:42:36 +0000 Received: by mail-vs1-xe2f.google.com with SMTP id ada2fe7eead31-605def5b807so429970137.3 for ; Thu, 09 Apr 2026 12:42:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775763755; cv=none; d=google.com; s=arc-20240605; b=FhlTLXuAjTqbyZfM7cBqPEsAmhx/nsljpi2stwcRRQKZGfHBCi6EhIYWv+1sBx0Zfm qb85fu8eDFwYuCjuF3UtxUxYODScOGoorDsGFLQ+0IaQcEfz0rcl4ZQJvnQXI/41WFlL VqgpjTyzgUIF6D85zGC0dkqYy7Ee6q82g/jAoJ37y3yD7k4edWPLJ1J2AYTYBOFP3Y6/ wH/ELrIUUMD0KNzz+DFYNI269ymdOpLZ6bOP+Nxz8uBeYSVfcFYio7Qe/wZz0fiWIOin mL/4mrNytMThrcOztWS93J2+AqnxfxCzQ/i7WAA/H+lSWxMFbHJ++uvG9rsAIDeIFNr8 AfXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=yFbSNvOh583Z50x2ksKvqekRZUKQ1AJ5GOFffznK9ho=; fh=YEBtQCrqUBLY1iJ6IH0an/47ciZxnuWpVV0fne9AzOQ=; b=Eec7psnXOspaz2vDt8fAIoZ9YGVVwgqHsIAMkBoJcZnfmEjspD4x0ogDqdoB4ciILI yUI9lCS57oCtZvHJnqvemrrfgp7vFkgZ70y7MZV+ectBDAU+yx0tj9UHzr3e7+c4+J/T fJeu9zwdg0Ixxgbqp8mwgiYXPkVFWcrGu1yQ2QuKtqjHhL6f57nCFPB+DHMdqF+mZVwH HNgEEHUDf0E1lpBwtvbG6ORggZjlqAwH0scYZobo/AmsXLW8H+YwY3KtPEJ1mA2gW5tQ cqRGvep4JW5zNRL71ZmNkgdLfdfGJQx0MxEozXFtwtNUVEVYTGJFdpXQz+TbDo2Ljc4u Dksw==; 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=1775763755; x=1776368555; 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=yFbSNvOh583Z50x2ksKvqekRZUKQ1AJ5GOFffznK9ho=; b=fJOgCk2VraSmO+eb0wcgjY8AcJhZKVHzf/O2UOSOLAIONEQvM+yA+nhyjU1Z5Ytn++ TIak40MZ99hAgaQzVAHnqWcSvwihiVj6HG7arSbxYRZhL/ZCdK725GGF2ds8lUrf9dAD K8Qte15EeCEhZWYc6pRIWvEPoukP+/82AhIl8HmYg6366JcUYqqZWAGi81RoSRERIyns 31UkaS8VlsON+jfB3V4AtWjhAvGJx2JBPsHeYbIyzZeh3zyM4GZZheeDckQcwt1Va1kV WS4enYvkAUIwF0OTfL2+F6QitOKIPwbR91pHB0dg1N7mtab2LQojW1ymJbma9Jl+fsm3 pFXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775763755; x=1776368555; 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=yFbSNvOh583Z50x2ksKvqekRZUKQ1AJ5GOFffznK9ho=; b=lFdxOgvF/QD6IAlZSFInrpShhhAy6zZ5/qoiMX4C1U6ZmTbFkCcQR721x7MA6skOeV 4gYHCBuv1WuQH5QPIr32S7Q6o3XBaEv192qs4wq/nPHKUMmcfPR945j8zdB9PQmB42CN JTcXsq41fvsxKopmPrHzcj+p5wJSpJPcL1++mhiaFMHNMxNuOHq6VqZHG1Yo1tlrXZAQ MmI9iJudpmQoZXf17h8cajPwS849zmFDHotXPjWBHVu3gNbiT20JxnYJjg0b3J9TIe7X GOFHQIzsdKPRYm8wh7Ma1lsgMeYOAEGg/nd2itPqycA20GHwOCue3XaJbkqi5P0nFmaX Eq9Q== X-Forwarded-Encrypted: i=1; AJvYcCVOmuEwcf9NCiWRp+TmusPhJcXX9w+CzqJHcAVbn5dPySj/FZQtpbmGBg4oey9QXp2DHwfg37WmTABZlhnc@lists.postgresql.org X-Gm-Message-State: AOJu0YymB9Mm02jQBLFNcmCuC5AZGzvptrVNvCFXcEe3y84OR0yRA58G dwaelm1xTeMkQWil50MNShZ46TC70JF8B7NTruHX4q3xt66acpVDOMebR4pSbuZkxS/6gIemE39 05wKEcWWMs+DlS15areknLSscQzcPyIo= X-Gm-Gg: AeBDievhdpdm0MoVEvwZ85piPSujeiVx28Pd90MZea4yofouOtybL1Mx51oVVkBtyb6 Vrl/SOYF+0iMDOqQ5qncW6uty0/bJE/48ue+4SUkOWv+4kpkVJ8YUSn/7dJh2KsbpWD2cpEjSDu pzIeSMK+fFuYzMgggsj319SvO2Z/Y3triJM/v/WgNWqOKvMEujTypBZyVz9ecFMfWFYJ8+CvI1A FglPGH4TPjw+xJ14NSLN5oRtCtIUsbvXc5hL5Nkm1cZvC8wnPpPZPITL5Rqw+RQGUcqcnGIg9qm obitmkpFyDH7rTdfmV7KDAE3rypvHolnrmIG X-Received: by 2002:a05:6102:5708:b0:601:f386:9ed2 with SMTP id ada2fe7eead31-609fe89d49cmr173942137.7.1775763755246; Thu, 09 Apr 2026 12:42:35 -0700 (PDT) MIME-Version: 1.0 References: <85ac7f0e-d95f-4377-ade0-8941fd328012@eisentraut.org> <7d63ddfa-c735-4dfe-8c7a-4f1e2a621058@eisentraut.org> <4606deaa-7d65-4f22-8a78-356c3180be9d@eisentraut.org> <53f1c094-3c29-4ef6-a9bd-dc2e7894ceb0@eisentraut.org> In-Reply-To: From: SATYANARAYANA NARLAPURAM Date: Thu, 9 Apr 2026 12:42:23 -0700 X-Gm-Features: AQROBzCpOtjlHWhaJdmOSPRKEVdyhO207ASU1KMBVrGeTmItGmIhTlmcrSSFUMI Message-ID: Subject: Re: SQL:2011 Application Time Update & Delete To: Peter Eisentraut Cc: Paul A Jungwirth , Chao Li , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000d6589e064f0c37eb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d6589e064f0c37eb Content-Type: multipart/alternative; boundary="000000000000d6589e064f0c37e9" --000000000000d6589e064f0c37e9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 9, 2026 at 12:35=E2=80=AFPM SATYANARAYANA NARLAPURAM < satyanarlapuram@gmail.com> wrote: > Hi Paul, Peter, > > I found a Server crash when using UPDATE ... FOR PORTION OF or DELETE ... > FOR PORTION OF on a view that has INSTEAD OF triggers. > > Repro: > > CREATE TABLE t (id INT, valid_at daterange, val INT); > INSERT INTO t VALUES (1, '[2026-01-01,2026-12-31)', 100); > CREATE VIEW v AS SELECT * FROM t; > > CREATE FUNCTION v_trig() RETURNS trigger LANGUAGE plpgsql AS $$ > BEGIN > UPDATE t SET val =3D NEW.val WHERE id =3D OLD.id; > RETURN NEW; > END; > $$; > CREATE TRIGGER trg INSTEAD OF UPDATE ON v > FOR EACH ROW EXECUTE FUNCTION v_trig(); > > -- This crashes the server: > UPDATE v FOR PORTION OF valid_at FROM '2026-04-01' TO '2026-08-01' > SET val =3D 999 WHERE id =3D 1; > > I am thinking we should just reject this case. Attached a draft patch to > fix the issue. > Patches attached now. --000000000000d6589e064f0c37e9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


On Thu, Apr 9, = 2026 at 12:35=E2=80=AFPM SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Hi Paul, Peter,

I found a Server cra= sh when using UPDATE ... FOR PORTION OF or DELETE ... FOR PORTION OF on a v= iew that has INSTEAD OF triggers.

Repro:

CREATE TABLE = t (id INT, valid_at daterange, val INT);
INSERT INTO t VALUES (1, '[= 2026-01-01,2026-12-31)', 100);
CREATE VIEW v AS SELECT * FROM t;
=
CREATE FUNCTION v_trig() RETURNS trigger LANGUAGE plpgsql AS $$
BEGI= N
=C2=A0 =C2=A0 UPDATE t SET val =3D NEW.val WHERE id =3D OLD.id;
=C2= =A0 =C2=A0 RETURN NEW;
END;
$$;
CREATE TRIGGER trg INSTEAD OF UPDA= TE ON v
=C2=A0 =C2=A0 FOR EACH ROW EXECUTE FUNCTION v_trig();

-- = This crashes the server:
UPDATE v FOR PORTION OF valid_at FROM '2026= -04-01' TO '2026-08-01'
=C2=A0 =C2=A0 SET val =3D 999 WHERE = id =3D 1;

I am thinking we should just reject this case. Attached a = draft patch to fix the issue.=C2=A0

=
Patches attached now.
=C2=A0
--000000000000d6589e064f0c37e9-- --000000000000d6589e064f0c37eb Content-Type: application/octet-stream; name="0008-test-fpo-crash-instead-of-trigger-views.patch" Content-Disposition: attachment; filename="0008-test-fpo-crash-instead-of-trigger-views.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnrvvefa1 ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKaW5kZXggMzFm NzcyYzcuLmI4NjJlNWQ0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zv cl9wb3J0aW9uX29mLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0 aW9uX29mLm91dApAQCAtMjA5Nyw0ICsyMDk3LDI2IEBAIFNFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAoNCByb3dzKQogCiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworLS0gVGVzdDogRk9SIFBPUlRJT04gT0Ygc2hvdWxk IGJlIHJlamVjdGVkIG9uIHZpZXdzIHdpdGggSU5TVEVBRCBPRiB0cmlnZ2VycworQ1JFQVRFIFRB QkxFIGZwb19pbnN0ZWFkX2Jhc2UgKGlkIGludCwgdmFsaWRfYXQgZGF0ZXJhbmdlLCB2YWwgaW50 KTsKK0lOU0VSVCBJTlRPIGZwb19pbnN0ZWFkX2Jhc2UgVkFMVUVTICgxLCAnWzIwMjQtMDEtMDEs MjAyNC0xMi0zMSknLCAxMDApOworQ1JFQVRFIFZJRVcgZnBvX2luc3RlYWRfdmlldyBBUyBTRUxF Q1QgKiBGUk9NIGZwb19pbnN0ZWFkX2Jhc2U7CitDUkVBVEUgRlVOQ1RJT04gZnBvX2luc3RlYWRf dHJpZ19mbigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgor ICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJDsKK0NSRUFURSBUUklHR0VSIGZwb19pbnN0ZWFkX3Ry aWcgSU5TVEVBRCBPRiBVUERBVEUgT04gZnBvX2luc3RlYWRfdmlldworICAgIEZPUiBFQUNIIFJP VyBFWEVDVVRFIEZVTkNUSU9OIGZwb19pbnN0ZWFkX3RyaWdfZm4oKTsKK0NSRUFURSBUUklHR0VS IGZwb19pbnN0ZWFkX2RlbF90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIGZwb19pbnN0ZWFkX3Zp ZXcKKyAgICBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiBmcG9faW5zdGVhZF90cmlnX2Zu KCk7CistLSBUaGVzZSBzaG91bGQgcHJvZHVjZSBjbGVhbiBlcnJvciBtZXNzYWdlcywgbm90IGNy YXNoIHRoZSBzZXJ2ZXIKK1VQREFURSBmcG9faW5zdGVhZF92aWV3IEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMjQtMDQtMDEnIFRPICcyMDI0LTA4LTAxJworICAgIFNFVCB2YWwgPSA5 OTkgV0hFUkUgaWQgPSAxOyAgLS0gZXJyb3IKK0VSUk9SOiAgRk9SIFBPUlRJT04gT0YgaXMgbm90 IHN1cHBvcnRlZCBvbiB2aWV3cyB3aXRoIElOU1RFQUQgT0YgdHJpZ2dlcnMKK0RFTEVURSBGUk9N IGZwb19pbnN0ZWFkX3ZpZXcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNC0wNC0w MScgVE8gJzIwMjQtMDgtMDEnCisgICAgV0hFUkUgaWQgPSAxOyAgLS0gZXJyb3IKK0VSUk9SOiAg Rk9SIFBPUlRJT04gT0YgaXMgbm90IHN1cHBvcnRlZCBvbiB2aWV3cyB3aXRoIElOU1RFQUQgT0Yg dHJpZ2dlcnMKK0RST1AgVklFVyBmcG9faW5zdGVhZF92aWV3OworRFJPUCBUQUJMRSBmcG9faW5z dGVhZF9iYXNlOwogUkVTRVQgZGF0ZXN0eWxlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRp b25fb2Yuc3FsCmluZGV4IGQ0MDYyYWNmLi43NzYxMGU1ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMTM2NSw0ICsxMzY1LDI1IEBAIFNFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAKIERST1AgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAKKy0tIFRlc3Q6IEZPUiBQT1JUSU9OIE9GIHNob3Vs ZCBiZSByZWplY3RlZCBvbiB2aWV3cyB3aXRoIElOU1RFQUQgT0YgdHJpZ2dlcnMKK0NSRUFURSBU QUJMRSBmcG9faW5zdGVhZF9iYXNlIChpZCBpbnQsIHZhbGlkX2F0IGRhdGVyYW5nZSwgdmFsIGlu dCk7CitJTlNFUlQgSU5UTyBmcG9faW5zdGVhZF9iYXNlIFZBTFVFUyAoMSwgJ1syMDI0LTAxLTAx LDIwMjQtMTItMzEpJywgMTAwKTsKK0NSRUFURSBWSUVXIGZwb19pbnN0ZWFkX3ZpZXcgQVMgU0VM RUNUICogRlJPTSBmcG9faW5zdGVhZF9iYXNlOworQ1JFQVRFIEZVTkNUSU9OIGZwb19pbnN0ZWFk X3RyaWdfZm4oKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4K KyAgICBSRVRVUk4gTkVXOworRU5EOworJCQ7CitDUkVBVEUgVFJJR0dFUiBmcG9faW5zdGVhZF90 cmlnIElOU1RFQUQgT0YgVVBEQVRFIE9OIGZwb19pbnN0ZWFkX3ZpZXcKKyAgICBGT1IgRUFDSCBS T1cgRVhFQ1VURSBGVU5DVElPTiBmcG9faW5zdGVhZF90cmlnX2ZuKCk7CitDUkVBVEUgVFJJR0dF UiBmcG9faW5zdGVhZF9kZWxfdHJpZyBJTlNURUFEIE9GIERFTEVURSBPTiBmcG9faW5zdGVhZF92 aWV3CisgICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gZnBvX2luc3RlYWRfdHJpZ19m bigpOworLS0gVGhlc2Ugc2hvdWxkIHByb2R1Y2UgY2xlYW4gZXJyb3IgbWVzc2FnZXMsIG5vdCBj cmFzaCB0aGUgc2VydmVyCitVUERBVEUgZnBvX2luc3RlYWRfdmlldyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDI0LTA0LTAxJyBUTyAnMjAyNC0wOC0wMScKKyAgICBTRVQgdmFsID0g OTk5IFdIRVJFIGlkID0gMTsgIC0tIGVycm9yCitERUxFVEUgRlJPTSBmcG9faW5zdGVhZF92aWV3 IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjQtMDQtMDEnIFRPICcyMDI0LTA4LTAx JworICAgIFdIRVJFIGlkID0gMTsgIC0tIGVycm9yCitEUk9QIFZJRVcgZnBvX2luc3RlYWRfdmll dzsKK0RST1AgVEFCTEUgZnBvX2luc3RlYWRfYmFzZTsKKwogUkVTRVQgZGF0ZXN0eWxlOwo= --000000000000d6589e064f0c37eb Content-Type: application/octet-stream; name="0007-fix-fpo-crash-instead-of-trigger-views.patch" Content-Disposition: attachment; filename="0007-fix-fpo-crash-instead-of-trigger-views.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnrvveez0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9i YWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRleCAwMjFjNzNmMS4uOWE5Y2M4MmMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTE3NjksNiArMTc2OSwxOCBA QCBBcHBseVJldHJpZXZlUnVsZShRdWVyeSAqcGFyc2V0cmVlLAogCQkgKiBBbHNvIG5vdGUgdGhh dCB0aGVyZSdzIGEgaGFjayBpbiBmaXJlUklScnVsZXMgdG8gYXZvaWQgY2FsbGluZyB0aGlzCiAJ CSAqIGZ1bmN0aW9uIGFnYWluIHdoZW4gaXQgYXJyaXZlcyBhdCB0aGUgY29waWVkIFJURS4KIAkJ ICovCisKKwkJLyoKKwkJICogRk9SIFBPUlRJT04gT0YgcmVxdWlyZXMgYWNjZXNzIHRvIHRoZSBw aHlzaWNhbCByb3cgdG8gY29tcHV0ZSB0ZW1wb3JhbCBsZWZ0b3ZlcnMuCisJCSAqIFZpZXdzIHdp dGggSU5TVEVBRCBPRiB0cmlnZ2VycyBoYXZlIG5vIHBoeXNpY2FsIHN0b3JhZ2UuCisJCSAqLwor CQlpZiAocGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIkZP UiBQT1JUSU9OIE9GIGlzIG5vdCBzdXBwb3J0ZWQgb24gdmlld3Mgd2l0aCBJTlNURUFEIE9GIHRy aWdnZXJzIikpKTsKKwogCQlpZiAocGFyc2V0cmVlLT5jb21tYW5kVHlwZSA9PSBDTURfSU5TRVJU KQogCQkJcmV0dXJuIHBhcnNldHJlZTsKIAkJZWxzZSBpZiAocGFyc2V0cmVlLT5jb21tYW5kVHlw ZSA9PSBDTURfVVBEQVRFIHx8Cg== --000000000000d6589e064f0c37eb--