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 1ux016-009aLR-4I for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Sep 2025 09:24:28 +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 1uwzzz-000Cht-Uf for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Sep 2025 09:23:20 +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 1uwzzz-000Chj-Iv for pgsql-hackers@lists.postgresql.org; Fri, 12 Sep 2025 09:23:20 +0000 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uwzzw-000LtR-1F for pgsql-hackers@postgresql.org; Fri, 12 Sep 2025 09:23:20 +0000 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-54a1bef404fso175732e0c.0 for ; Fri, 12 Sep 2025 02:23:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757668996; x=1758273796; 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=k2yjbb6Jk2lz9iXeQuY5mNGL+YvNe7OphKRXNDTAsnQ=; b=X3doF62be3EVu80jP9+iGfGFBhq88PDFXPGQ8rRTA+qGfxr+oIxid2R4UfcHIg9/ao HGol8nmG7oS5/vR2LjRLvhCAAO56my+tzOF4OLikhL+uCw7GpXlGlpDJvEicMQVfeHUP PpJiiuOl8qXNbVJREHd48eTP/88EsNcQ1qSrYQMz9dZ3lMwkbfIWWPFc8bj4d4dvx06I dIIEaofeP3+cYX8Ql8QxdgCuIZpUENW/1ytK0v7DvPMMa0qSi/xKJPuGM+EFqhFE+taH cj1xW8qG7dLyzHa3SwBin06B2qMxgzKTro2fox1ct0UP2y81wLTjgwuFOsVIjqHhYmIs 0T9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757668996; x=1758273796; 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=k2yjbb6Jk2lz9iXeQuY5mNGL+YvNe7OphKRXNDTAsnQ=; b=nuxIfO29BIhiD0JGcVLiYu73+q9nBQpxWF65lu58FcExZBSmb9SsABRRwQ6yPyLSII +e3vTGEOUXa2Qfjl5ZRbiZQx+lxiac/lIwe48c6zfmDlf1GrsubVESw3veg5GEJe6HId ZTk6tjk4z5cFhuvAYAsUqHVKcf4X+JdA1ZSS4LLzYgRVB3Mtt6sNx30BnqkbDp1GE8iq hzTztEovdUQxB4jwYXP57lydw91E4a9vvdvHXIK+beZUoBDsnMQT1v9SH8Ys0im8/8tx DwvPvEsSD4QhpfRmh6IfZQ0RywA2oT3ftBL3jd+rCelh3s6iBiHRbqKJq+eWxXm9i3iF eJvA== X-Gm-Message-State: AOJu0YzqEJa4FJn+kvwytUrndfZvlKTr/wuCo5BFWzAarh2VBBcSE8jR kDoMvDOQblBbKz1oI/RDzwSazmtY+eaSAu8xMmfBMoYxCXIDg/LLRLIaJz8USAZSGDAdoSQOlUQ 8stCfdBzu7ZhXLcMf8VSe23Iw8Ew66XM= X-Gm-Gg: ASbGncu0R8DC4f2JguOHw18/yKhA8UYXKGfcl6JQIO/hOvPWkdO1BVqigR0worSeqXz MNQHpsLi8pZCIKYRMNZHhgqxN5fc0B9E48dzJwjKzuYGX1Rw3xJOUw+Tic5Yksktu0qPKLWI86c SQQ9m2fsVZ5dJtQ+6dkWQ4h/MCd/bK1Jj0pdbv3G2rJodfHx2n0oGBwsFBFAb7V7bE/yJIwJwXZ 3oU/sgJuJP5iZ1x/55dbVwcKF4l5OxLSAb+JS6QD3N59O6x/g== X-Google-Smtp-Source: AGHT+IEYY9dXf38x8c/PFcy2/OAFp2aU9Oq8FPNCBT2s91nUJEv38GsF00AHsaKby4tgDszhmQJhboTXCsGNeOFnH50= X-Received: by 2002:a05:6122:1d8c:b0:53b:174d:98f2 with SMTP id 71dfb90a1353d-54a16b20009mr699801e0c.3.1757668995622; Fri, 12 Sep 2025 02:23:15 -0700 (PDT) MIME-Version: 1.0 References: <2B70C6CA-606B-438C-8EF2-84DCBA1C0813@gmail.com> In-Reply-To: <2B70C6CA-606B-438C-8EF2-84DCBA1C0813@gmail.com> From: jian he Date: Fri, 12 Sep 2025 17:22:37 +0800 X-Gm-Features: AS18NWCDqMZDCsHBtW4PAzCmqrS_iJ6dg0cidEth4F1L473Wjvrs8I2QJ3B3g0s Message-ID: Subject: Re: let ALTER TABLE DROP COLUMN drop whole-row referenced object To: Chao Li Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000001e0ff8063e9734eb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001e0ff8063e9734eb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Sep 11, 2025 at 9:27=E2=80=AFAM Chao Li wr= ote: > > But v2 needs a rebase, I cannot apply it to master. > hi. please check attached v3-0001, v3-0002. v3-0001: ALTER TABLE DROP COLUMN cascade to drop any whole-row referenced constraints and indexes. v3-0002: ALTER COLUMN SET DATA TYPE error out when whole-row referenced constraint exists with the v3-0002 patch, CREATE TABLE ts (a int, c int, b int constraint cc check((ts =3D ROW(1,1,1= )))); ALTER TABLE ts ALTER COLUMN b SET DATA TYPE INT8; ERROR: cannot alter table column "ts"."b" to type bigint because constraint "cc" uses table "ts" row type HINT: You might need to drop constraint "cc" first to change column "ts"."b" data type Of course, even if we do not error out, regular insert will fail too. insert into ts values(1,1,1); ERROR: cannot compare dissimilar column types bigint and integer at record column 3 src7=3D# \errverbose ERROR: 42804: cannot compare dissimilar column types bigint and integer at record column 3 LOCATION: record_eq, rowtypes.c:1193 then you need debug to find out the root error cause is constraint cc is not being satisfied; and you still need to handle the corrupted constraint cc afterward. With the v3-0002 patch, ALTER TABLE SET DATA TYPE provides an explicit erro= r message that helps quickly identify the problem. So I guess it should be helpful. -------------------------------- index expression/predicate and check constraint expression can not contain subquery, that's why using pull_varattnos to test whole-row containment wor= ks fine. but pull_varattnos can not cope with subquery, see pull_varattnos comments. row security policy can have subquery, for example: CREATE POLICY p1 ON document AS PERMISSIVE USING (dlevel <=3D (SELECT seclv FROM uaccount WHERE pguser =3D current_use= r)); so I am still working on whole-row referenced policies interacting with ALT= ER TABLE SET DATA TYPE/ALTER TABLE DROP COLUMN. --0000000000001e0ff8063e9734eb Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0002-disallow-ALTER-COLUMN-SET-DATA-TYPE-when-wholerow-referenced-cons.patch" Content-Disposition: attachment; filename="v3-0002-disallow-ALTER-COLUMN-SET-DATA-TYPE-when-wholerow-referenced-cons.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfgmpkji1 RnJvbSAwOTBhMDg3ZGE5YjdmYjA3MmFjZDdlOTY4M2ZhZjliYTJiNWM3NmFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTIgU2VwIDIwMjUgMTc6MTA6MTkgKzA4MDAKU3ViamVjdDogW1BBVENIIHYz IDIvMl0gZGlzYWxsb3cgQUxURVIgQ09MVU1OIFNFVCBEQVRBIFRZUEUgd2hlbiB3aG9sZXJvdwog cmVmZXJlbmNlZCBjb25zdHJhaW50IGV4aXN0cwoKQ1JFQVRFIFRBQkxFIHRzIChhIGludCwgYyBp bnQsIGIgaW50ICBjb25zdHJhaW50IGNjIGNoZWNrKCh0cyA9IFJPVygxLDEsMSkpKSk7CklOU0VS VCBJTlRPIHRzIHZhbHVlcyAoMSwxLDEpOwoKQUxURVIgVEFCTEUgdHMgQUxURVIgQ09MVU1OIGIg U0VUIERBVEEgVFlQRSBJTlQ4OwpFUlJPUjogIGNhbm5vdCBhbHRlciB0YWJsZSBjb2x1bW4gInRz Ii4iYiIgdG8gdHlwZSBiaWdpbnQgYmVjYXVzZSBjb25zdHJhaW50ICJjYyIgdXNlcyB0YWJsZSAi dHMiIHJvdyB0eXBlCkhJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9wIGNvbnN0cmFpbnQgImNj IiBmaXJzdCB0byBjaGFuZ2UgY29sdW1uICJ0cyIuImIiIGRhdGEgdHlwZQoKTm8gbmVlZCB0byB3 b3JyeSBhYm91dCB0aGUgaW5kZXg7IGluZGV4IHJlYnVpbGQgd2lsbCBmYWlsIGF1dG9tYXRpY2Fs bHkuCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FDSnVmeEdBNktWUXk3RGJIR0xW dzlzOUtLbXBHeVp0NU1FNkM3a0VmakRwcjJ3WkN3QG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCA0MCArKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgfCAxMSAr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwgICAgICB8IDEwICsr KysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwppbmRleCA0MDliYzY1ZTUzZi4uNjJjODQ3MjZjNGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh YmxlY21kcy5jCkBAIC0xNDY2NCw2ICsxNDY2NCw0NiBAQCBBVFByZXBBbHRlckNvbHVtblR5cGUo TGlzdCAqKndxdWV1ZSwKIAkJZmluZF9jb21wb3NpdGVfdHlwZV9kZXBlbmRlbmNpZXMocmVsLT5y ZF9yZWwtPnJlbHR5cGUsIHJlbCwgTlVMTCk7CiAJfQogCisJLyoKKwkgKiBJZiB0aGUgdGFibGUg aGFzIGEgd2hvbGUtcm93IHJlZmVyZW5jZWQgQ0hFQ0sgY29uc3RyYWludCwgdGhlbiBjaGFuZ2lu ZworCSAqIGFueSBjb2x1bW4gZGF0YSB0eXBlIGlzIG5vdCBhbGxvd2VkLgorCSovCisJaWYgKHRh cmdldHR5cGUgIT0gYXR0VHVwLT5hdHR0eXBpZCB8fCB0YXJnZXR0eXBtb2QgIT0gYXR0VHVwLT5h dHR0eXBtb2QpCisJeworCQlUdXBsZUNvbnN0ciAqY29uc3RyID0gUmVsYXRpb25HZXREZXNjcihy ZWwpLT5jb25zdHI7CisKKwkJaWYgKGNvbnN0ciAmJiBjb25zdHItPm51bV9jaGVjayA+IDApCisJ CXsKKwkJCUNvbnN0ckNoZWNrICpjaGVjayA9IGNvbnN0ci0+Y2hlY2s7CisJCQlOb2RlCSpjaGVj a19leHByOworCisJCQlmb3IgKGludCBpID0gMDsgaSA8IGNvbnN0ci0+bnVtX2NoZWNrOyBpKysp CisJCQl7CisJCQkJQml0bWFwc2V0ICAqZXhwcl9hdHRycyA9IE5VTEw7CisKKwkJCQljaGFyCSAg ICpjb25zdHJfbmFtZSA9IGNoZWNrW2ldLmNjbmFtZTsKKwkJCQljaGVja19leHByID0gc3RyaW5n VG9Ob2RlKGNoZWNrW2ldLmNjYmluKTsKKworCQkJCS8qIEZpbmQgYWxsIGF0dHJpYnV0ZXMgcmVm ZXJlbmNlZCAqLworCQkJCXB1bGxfdmFyYXR0bm9zKGNoZWNrX2V4cHIsIDEsICZleHByX2F0dHJz KTsKKworCQkJCWlmIChibXNfaXNfbWVtYmVyKDAgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmli dXRlTnVtYmVyLCBleHByX2F0dHJzKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJj b2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCWVycm1zZygiY2Fubm90IGFs dGVyIHRhYmxlIGNvbHVtbiBcIiVzXCIuXCIlc1wiIHRvIHR5cGUgJXMgYmVjYXVzZSBjb25zdHJh aW50IFwiJXNcIiB1c2VzIHRhYmxlIFwiJXNcIiByb3cgdHlwZSIsCisJCQkJCQkJCSAgIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCSAgIGNvbE5hbWUsCisJCQkJCQkJCSAg IGZvcm1hdF90eXBlX3dpdGhfdHlwZW1vZCh0YXJnZXR0eXBlLCB0YXJnZXR0eXBtb2QpLAorCQkJ CQkJCQkgICBjb25zdHJfbmFtZSwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBjb25zdHJhaW50 IFwiJXNcIiBmaXJzdCB0byBjaGFuZ2UgY29sdW1uIFwiJXNcIi5cIiVzXCIgZGF0YSB0eXBlIiwK KwkJCQkJCQkJCWNvbnN0cl9uYW1lLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSwKKwkJCQkJCQkJCWNvbE5hbWUpKTsKKwkJCX0KKwkJfQorCX0KKwogCVJlbGVhc2VTeXND YWNoZSh0dXBsZSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9jb25zdHJhaW50cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRz Lm91dAppbmRleCBjZTJmYjAyOTcxZi4uNmRlMGNjNGVjMzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CkBAIC0yNzEsNiArMjcxLDE3IEBAIEFMVEVSIFRBQkxF IERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5OwogCiBEUk9QIFRBQkxFIERST1Bf Q09MX0NIRUNLX1RCTDsKIC0tCistLSBDaGFuZ2UgY29sdW1uIGRhdGEgdHlwZSBzaG91bGQgZXJy b3Igb3V0IGJlY2F1c2UgdGhlIHdob2xlLXJvdyByZWZlcmVuY2VkCistLSBjaGVjayBjb25zdHJh aW50IGlzIHN0aWxsIG5lZWQgaXQuCistLQorQ1JFQVRFIFRBQkxFIEFMVEVSX0NPTF9DSEVDS19U QkwgKAorICAgIGNpdHkgdGV4dCwgc3RhdGUgdGV4dCwgaXNfY2FwaXRhbCBib29sLCBhbHRpdHVk ZSBpbnQsCisgICAgQ09OU1RSQUlOVCBjYzEgQ0hFQ0sgKEFMVEVSX0NPTF9DSEVDS19UQkwgaXMg bm90IG51bGwpKTsKK0FMVEVSIFRBQkxFIEFMVEVSX0NPTF9DSEVDS19UQkwgQUxURVIgQ09MVU1O IGNpdHkgU0VUIERBVEEgVFlQRSBuYW1lOworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdGFibGUgY29s dW1uICJhbHRlcl9jb2xfY2hlY2tfdGJsIi4iY2l0eSIgdG8gdHlwZSBuYW1lIGJlY2F1c2UgY29u c3RyYWludCAiY2MxIiB1c2VzIHRhYmxlICJhbHRlcl9jb2xfY2hlY2tfdGJsIiByb3cgdHlwZQor SElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGRyb3AgY29uc3RyYWludCAiY2MxIiBmaXJzdCB0byBj aGFuZ2UgY29sdW1uICJhbHRlcl9jb2xfY2hlY2tfdGJsIi4iY2l0eSIgZGF0YSB0eXBlCitEUk9Q IFRBQkxFIEFMVEVSX0NPTF9DSEVDS19UQkw7CistLQogLS0gQ2hlY2sgaW5oZXJpdGFuY2Ugb2Yg ZGVmYXVsdHMgYW5kIGNvbnN0cmFpbnRzCiAtLQogQ1JFQVRFIFRBQkxFIElOU0VSVF9DSElMRCAo Y3ggSU5UIGRlZmF1bHQgNDIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25z dHJhaW50cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKaW5kZXgg NTQ1ZjhmYTE3YTMuLjNkMzNkM2UyZDlhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb25zdHJhaW50cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMu c3FsCkBAIC0xNzYsNiArMTc2LDE2IEBAIEFMVEVSIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCBE Uk9QIENPTFVNTiBjaXR5OwogXGQgRFJPUF9DT0xfQ0hFQ0tfVEJMCiBEUk9QIFRBQkxFIERST1Bf Q09MX0NIRUNLX1RCTDsKIAorLS0KKy0tIENoYW5nZSBjb2x1bW4gZGF0YSB0eXBlIHNob3VsZCBl cnJvciBvdXQgYmVjYXVzZSB0aGUgd2hvbGUtcm93IHJlZmVyZW5jZWQKKy0tIGNoZWNrIGNvbnN0 cmFpbnQgaXMgc3RpbGwgbmVlZCBpdC4KKy0tCitDUkVBVEUgVEFCTEUgQUxURVJfQ09MX0NIRUNL X1RCTCAoCisgICAgY2l0eSB0ZXh0LCBzdGF0ZSB0ZXh0LCBpc19jYXBpdGFsIGJvb2wsIGFsdGl0 dWRlIGludCwKKyAgICBDT05TVFJBSU5UIGNjMSBDSEVDSyAoQUxURVJfQ09MX0NIRUNLX1RCTCBp cyBub3QgbnVsbCkpOworQUxURVIgVEFCTEUgQUxURVJfQ09MX0NIRUNLX1RCTCBBTFRFUiBDT0xV TU4gY2l0eSBTRVQgREFUQSBUWVBFIG5hbWU7CitEUk9QIFRBQkxFIEFMVEVSX0NPTF9DSEVDS19U Qkw7CisKIC0tCiAtLSBDaGVjayBpbmhlcml0YW5jZSBvZiBkZWZhdWx0cyBhbmQgY29uc3RyYWlu dHMKIC0tCi0tIAoyLjM0LjEKCg== --0000000000001e0ff8063e9734eb Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-ALTER-TABLE-DROP-COLUMN-drop-wholerow-referenced-object.patch" Content-Disposition: attachment; filename="v3-0001-ALTER-TABLE-DROP-COLUMN-drop-wholerow-referenced-object.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfgmpkje0 RnJvbSA1ZDBlYjVmODA5MWM2NjZmZTIwZWVmYTdiMWZiZDc2NjZjOTY2YjU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTIgU2VwIDIwMjUgMTY6MzA6MTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYz IDEvMl0gQUxURVIgVEFCTEUgRFJPUCBDT0xVTU4gZHJvcCB3aG9sZXJvdyByZWZlcmVuY2VkCiBv YmplY3QKCkNSRUFURSBUQUJMRSB0cyAoYSBpbnQsIGMgaW50LCBiIGludAogICAgY29uc3RyYWlu dCBjYyBjaGVjaygodHMgPSBST1coMSwxLDEpKSksCiAgICBjb25zdHJhaW50IGNjMSBjaGVjaygo dHMuYSA9IDEpKSk7CkNSRUFURSBJTkRFWCB0c2kgb24gdHMgKGEpIHdoZXJlIGEgPSAxOwpDUkVB VEUgSU5ERVggdHNpMiBvbiB0cyAoKGEgaXMgbnVsbCkpOwpDUkVBVEUgSU5ERVggdHNpMyBvbiB0 cyAoKHRzIGlzIG51bGwpKTsKQ1JFQVRFIElOREVYIHRzaTQgb24gdHMgKGIpIHdoZXJlIHRzIGlz IG5vdCBudWxsOwoKQUxURVIgVEFCTEUgdHMgRFJPUCBDT0xVTU4gYSBDQVNDQURFOwp3aWxsIGRy b3AgYWJvdmUgYWxsIGluZGV4ZXMsIGNvbnN0cmFpbnRzIG9uIHRoZSB0YWJsZSB0cy4KCm5vdwpc ZCB0cwogICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudHMiCiBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0Ci0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQogYyAgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwKIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhHQTZLVlF5N0RiSEdMVnc5 czlLS21wR3ladDVNRTZDN2tFZmpEcHIyd1pDd0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgMTQxICsrKysrKysrKysrKysrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0IHwgIDE3ICsr Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQgICAgfCAgMTMgKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbCAgICAgIHwgIDExICsrCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwgICAgICAgICB8ICAgOCArKwogNSBmaWxlcyBjaGFu Z2VkLCAxOTAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggM2Jl MmUwNTFkMzIuLjQwOWJjNjVlNTNmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtOTI2 MCw3ICs5MjYwLDExIEBAIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCUF0dHJOdW1iZXIJYXR0bnVtOwogCUxpc3QJICAg KmNoaWxkcmVuOwogCU9iamVjdEFkZHJlc3Mgb2JqZWN0OworCU9iamVjdEFkZHJlc3MgdG1wb2Jq ZWN0OwogCWJvb2wJCWlzX2V4cHI7CisJTm9kZQkgICAqZXhwcjsKKwlMaXN0CSAgICppbmRleGxp c3QgPSBOSUw7CisJVHVwbGVDb25zdHIgKmNvbnN0ciA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKS0+ Y29uc3RyOwogCiAJLyogQXQgdG9wIGxldmVsLCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGlu IEFUUHJlcENtZCwgZWxzZSBkbyBpdCAqLwogCWlmIChyZWN1cnNpbmcpCkBAIC05MzMzLDYgKzkz MzcsMTQzIEBAIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpjb2xOYW1lLAogCiAJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKIAorCXRtcG9i amVjdC5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCXRtcG9iamVjdC5vYmplY3RJZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwl0bXBvYmplY3Qub2JqZWN0U3ViSWQgPSBhdHRudW07 CisKKwkvKgorCSAqIEFMVEVSIFRBQkxFIERST1AgQ09MVU1OIGFsc28gbmVlZCBkcm9wIGluZGV4 ZXMgb3IgY29uc3RyYWludHMgdGhhdAorCSAqIGluY2x1ZGUgd2hvbGUtcm93IHJlZmVyZW5jZSBl eHByZXNzaW9ucy4gSG93ZXZlciwgdGhlcmUgaXMgbm8gZGlyZWN0CisJICogZGVwZW5kZW5jeSBi ZXR3ZWVuIHdob2xlLXJvdyBWYXIgcmVmZXJlbmNlcyBhbmQgaW5kaXZpZHVhbCB0YWJsZSBjb2x1 bW5zLAorCSAqIGFuZCBhZGRpbmcgc3VjaCBkZXBlbmRlbmNpZXMgd291bGQgbGVhZCB0byBjYXRh bG9nIGJsb2F0IChzZWUKKwkgKiBmaW5kX2V4cHJfcmVmZXJlbmNlc193YWxrZXIpLgorCSAqIFRo ZXJlZm9yZSwgaGVyZSwgd2UgZXhwbGljaXRseSB1c2UgcmVjb3JkRGVwZW5kZW5jeU9uIHRvIGNy ZWF0ZSBhCisJICogZGVwZW5kZW5jeSBiZXR3ZWVuIHRoZSB0YWJsZSBjb2x1bW4gYW5kIGFueSBj b25zdHJhaW50IG9yIGluZGV4IHRoYXQKKwkgKiBjb250YWlucyB3aG9sZS1yb3cgVmFyIHJlZmVy ZW5jZXMuCisJICogTGF0ZXIgcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zIHdpbGwgZG8gdGhlIGpv Yi4KKwkqLworCWlmIChjb25zdHIgJiYgY29uc3RyLT5udW1fY2hlY2sgPiAwKQorCXsKKwkJQ29u c3RyQ2hlY2sgKmNoZWNrID0gY29uc3RyLT5jaGVjazsKKworCQlmb3IgKGludCBpID0gMDsgaSA8 IGNvbnN0ci0+bnVtX2NoZWNrOyBpKyspCisJCXsKKwkJCUJpdG1hcHNldCAgKmV4cHJfYXR0cnMg PSBOVUxMOworCQkJY2hhcgkgICAqY29uc3RyX25hbWUgPSBjaGVja1tpXS5jY25hbWU7CisKKwkJ CWV4cHIgPSBzdHJpbmdUb05vZGUoY2hlY2tbaV0uY2NiaW4pOworCisJCQkvKiBGaW5kIGFsbCBh dHRyaWJ1dGVzIHJlZmVyZW5jZWQgKi8KKwkJCXB1bGxfdmFyYXR0bm9zKGV4cHIsIDEsICZleHBy X2F0dHJzKTsKKworCQkJaWYgKGJtc19pc19tZW1iZXIoMCAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIsIGV4cHJfYXR0cnMpKQorCQkJeworCQkJCVJlbGF0aW9uCWNvbkRlc2M7 CisJCQkJU3lzU2NhbkRlc2MgY29uc2NhbjsKKwkJCQlTY2FuS2V5RGF0YSBza2V5WzNdOworCQkJ CUhlYXBUdXBsZQljb250dXBsZTsKKworCQkJCS8qIFNlYXJjaCBmb3IgYSBwZ19jb25zdHJhaW50 IGVudHJ5IHdpdGggc2FtZSBuYW1lIGFuZCByZWxhdGlvbiAqLworCQkJCWNvbkRlc2MgPSB0YWJs ZV9vcGVuKENvbnN0cmFpbnRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQkJU2Nh bktleUluaXQoJnNrZXlbMF0sCisJCQkJCQkJQW51bV9wZ19jb25zdHJhaW50X2NvbnJlbGlkLAor CQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQkJCQlPYmplY3RJZEdl dERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCQkJCVNjYW5LZXlJbml0KCZza2V5WzFd LAorCQkJCQkJCUFudW1fcGdfY29uc3RyYWludF9jb250eXBpZCwKKwkJCQkJCQlCVEVxdWFsU3Ry YXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lk KSk7CisJCQkJU2NhbktleUluaXQoJnNrZXlbMl0sCisJCQkJCQkJQW51bV9wZ19jb25zdHJhaW50 X2Nvbm5hbWUsCisJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQkJ CQlDU3RyaW5nR2V0RGF0dW0oY29uc3RyX25hbWUpKTsKKworCQkJCWNvbnNjYW4gPSBzeXN0YWJs ZV9iZWdpbnNjYW4oY29uRGVzYywgQ29uc3RyYWludFJlbGlkVHlwaWROYW1lSW5kZXhJZCwgdHJ1 ZSwKKwkJCQkJCQkJCQkJIE5VTEwsIDMsIHNrZXkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxp ZChjb250dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoY29uc2NhbikpKQorCQkJCQllbG9nKEVSUk9S LCAiY29uc3RyYWludCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwK KwkJCQkJCSBjb25zdHJfbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CisKKwkJ CQlvYmplY3QuY2xhc3NJZCA9IENvbnN0cmFpbnRSZWxhdGlvbklkOworCQkJCW9iamVjdC5vYmpl Y3RJZCA9ICgoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29udHVwbGUpKS0+b2lkOwor CQkJCW9iamVjdC5vYmplY3RTdWJJZCA9IDA7CisKKwkJCQkvKiByZWNvcmQgZGVwZW5kZW5jeSBm b3IgY29uc3RyYWludHMgdGhhdCByZWZlcmVuY2VzIHdob2xlLXJvdyAqLworCQkJCXJlY29yZERl cGVuZGVuY3lPbigmb2JqZWN0LCAmdG1wb2JqZWN0LCBERVBFTkRFTkNZX0FVVE8pOworCisJCQkJ c3lzdGFibGVfZW5kc2Nhbihjb25zY2FuKTsKKwkJCQl0YWJsZV9jbG9zZShjb25EZXNjLCBBY2Nl c3NTaGFyZUxvY2spOworCQkJfQorCQl9CisJfQorCisJaW5kZXhsaXN0ID0gUmVsYXRpb25HZXRJ bmRleExpc3QocmVsKTsKKwlmb3JlYWNoX29pZChpbmRleG9pZCwgaW5kZXhsaXN0KQorCXsKKwkJ SGVhcFR1cGxlCWluZGV4VHVwbGU7CisJCUZvcm1fcGdfaW5kZXggaW5kZXhTdHJ1Y3Q7CisJCU5v ZGUJICAgKm5vZGU7CisJCWJvb2wJCWZvdW5kX3dob2xlX3JvdyA9IGZhbHNlOworCisJCWluZGV4 VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShpbmRl eG9pZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCisJCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleG9pZCk7CisJCWlu ZGV4U3RydWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKKworCQlp ZiAoIWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVM TCkpCisJCXsKKwkJCURhdHVtCQlwcmVkRGF0dW07CisJCQljaGFyCSAgICpwcmVkU3RyaW5nOwor CQkJQml0bWFwc2V0ICAqZXhwcl9hdHRycyA9IE5VTEw7CisKKwkJCS8qIENvbnZlcnQgdGV4dCBz dHJpbmcgdG8gbm9kZSB0cmVlICovCisJCQlwcmVkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3RO dWxsKElOREVYUkVMSUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhf aW5kcHJlZCk7CisJCQlwcmVkU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVkRGF0dW0p OworCQkJbm9kZSA9IChOb2RlICopIHN0cmluZ1RvTm9kZShwcmVkU3RyaW5nKTsKKwkJCXBmcmVl KHByZWRTdHJpbmcpOworCisJCQlwdWxsX3ZhcmF0dG5vcyhub2RlLCAxLCAmZXhwcl9hdHRycyk7 CisJCQlpZiAoYm1zX2lzX21lbWJlcigwIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciwgZXhwcl9hdHRycykpCisJCQl7CisJCQkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJl bGF0aW9uSWQ7CisJCQkJb2JqZWN0Lm9iamVjdElkID0gaW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQ7 CisJCQkJb2JqZWN0Lm9iamVjdFN1YklkID0gMDsKKwkJCQkvKiByZWNvcmQgZGVwZW5kZW5jeSBm b3IgaW5kZXhlcyB0aGF0IHJlZmVyZW5jZXMgd2hvbGUtcm93ICovCisJCQkJcmVjb3JkRGVwZW5k ZW5jeU9uKCZvYmplY3QsICZ0bXBvYmplY3QsIERFUEVOREVOQ1lfQVVUTyk7CisJCQkJZm91bmRf d2hvbGVfcm93ID0gdHJ1ZTsKKwkJCX0KKwkJfQorCisJCWlmICghZm91bmRfd2hvbGVfcm93ICYm ICFoZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxM KSkKKwkJeworCQkJRGF0dW0JCWV4cHJEYXR1bTsKKwkJCWNoYXIJICAgKmV4cHJTdHJpbmc7CisJ CQlCaXRtYXBzZXQgICpleHByX2F0dHJzID0gTlVMTDsKKworCQkJLyogQ29udmVydCB0ZXh0IHN0 cmluZyB0byBub2RlIHRyZWUgKi8KKwkJCWV4cHJEYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51 bGwoSU5ERVhSRUxJRCwgaW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9p bmRleHBycyk7CisJCQlleHByU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByRGF0dW0p OworCQkJbm9kZSA9IChOb2RlICopIHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsKKwkJCXBmcmVl KGV4cHJTdHJpbmcpOworCisJCQlwdWxsX3ZhcmF0dG5vcyhub2RlLCAxLCAmZXhwcl9hdHRycyk7 CisKKwkJCWlmIChibXNfaXNfbWVtYmVyKDAgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLCBleHByX2F0dHJzKSkKKwkJCXsKKwkJCQlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9u UmVsYXRpb25JZDsKKwkJCQlvYmplY3Qub2JqZWN0SWQgPSBpbmRleFN0cnVjdC0+aW5kZXhyZWxp ZDsKKwkJCQlvYmplY3Qub2JqZWN0U3ViSWQgPSAwOworCQkJCS8qIHJlY29yZCBkZXBlbmRlbmN5 IGZvciBpbmRleGVzIHRoYXQgcmVmZXJlbmNlcyB3aG9sZS1yb3cgKi8KKwkJCQlyZWNvcmREZXBl bmRlbmN5T24oJm9iamVjdCwgJnRtcG9iamVjdCwgREVQRU5ERU5DWV9BVVRPKTsKKwkJCX0KKwkJ fQorCQlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CisJfQorCUNvbW1hbmRDb3VudGVySW5j cmVtZW50KCk7CisKIAkvKgogCSAqIFByb3BhZ2F0ZSB0byBjaGlsZHJlbiBhcyBhcHByb3ByaWF0 ZS4gIFVubGlrZSBtb3N0IG90aGVyIEFMVEVSCiAJICogcm91dGluZXMsIHdlIGhhdmUgdG8gZG8g dGhpcyBvbmUgbGV2ZWwgb2YgcmVjdXJzaW9uIGF0IGEgdGltZTsgd2UgY2FuJ3QKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQKaW5kZXggMzU5MGQzMjc0ZjAuLmNlMmZi MDI5NzFmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dApAQCAt MjU0LDYgKzI1NCwyMyBAQCBFUlJPUjogIHN5c3RlbSBjb2x1bW4gImN0aWQiIHJlZmVyZW5jZSBp biBjaGVjayBjb25zdHJhaW50IGlzIGludmFsaWQKIExJTkUgMzogICAgICAgQ0hFQ0sgKE5PVCAo aXNfY2FwaXRhbCBBTkQgY3RpZDo6dGV4dCA9ICdzeXNfY29sX2NoZWNrLi4uCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIC0tCistLSBEcm9wIGNvbHVtbiBhbHNv IGRyb3AgdGhlIGFzc29jaWF0ZWQgQ2hlY2sgY29uc3RyYWludHMgYW5kIHdob2xlLXJvdyByZWZl cmVuY2VkIGNoZWNrIGNvbnN0cmFpbnQKKy0tCitDUkVBVEUgVEFCTEUgRFJPUF9DT0xfQ0hFQ0tf VEJMICgKKyAgICBjaXR5IHRleHQsIHN0YXRlIHRleHQsIGlzX2NhcGl0YWwgYm9vbCwgYWx0aXR1 ZGUgaW50LAorICAgIENPTlNUUkFJTlQgY2MgQ0hFQ0sgKGNpdHkgaXMgbm90IG51bGwpLAorICAg IENPTlNUUkFJTlQgY2MxIENIRUNLIChEUk9QX0NPTF9DSEVDS19UQkwgaXMgbm90IG51bGwpKTsK K0FMVEVSIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5OworXGQgRFJP UF9DT0xfQ0hFQ0tfVEJMCisgICAgICAgICAgIFRhYmxlICJwdWJsaWMuZHJvcF9jb2xfY2hlY2tf dGJsIgorICAgQ29sdW1uICAgfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIHN0YXRlICAgICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBp c19jYXBpdGFsIHwgYm9vbGVhbiB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYWx0aXR1ZGUg ICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitEUk9QIFRBQkxFIERST1Bf Q09MX0NIRUNLX1RCTDsKKy0tCiAtLSBDaGVjayBpbmhlcml0YW5jZSBvZiBkZWZhdWx0cyBhbmQg Y29uc3RyYWludHMKIC0tCiBDUkVBVEUgVEFCTEUgSU5TRVJUX0NISUxEIChjeCBJTlQgZGVmYXVs dCA0MiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5vdXQKaW5kZXggNGQyOWZiODUy OTMuLmNhYzFjY2EzYTFmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu ZGV4aW5nLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5nLm91dApA QCAtNjU0LDYgKzY1NCwxOSBAQCBhbHRlciB0YWJsZSBpZHhwYXJ0MiBkcm9wIGNvbHVtbiBjOwog IGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAogCiBkcm9wIHRhYmxl IGlkeHBhcnQsIGlkeHBhcnQyOworY3JlYXRlIHRhYmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCwg YyBpbnQpOworY3JlYXRlIGluZGV4IG9uIGlkeHBhcnQoYyk7CitjcmVhdGUgaW5kZXggb24gaWR4 cGFydCgoaWR4cGFydCBpcyBub3QgbnVsbCkpOworY3JlYXRlIGluZGV4IG9uIGlkeHBhcnQoYSkg d2hlcmUgaWR4cGFydCBpcyBub3QgbnVsbDsKK2FsdGVyIHRhYmxlIGlkeHBhcnQgZHJvcCBjb2x1 bW4gYzsKK1xkIGlkeHBhcnQKKyAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5pZHhwYXJ0Igor IENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKKworZHJvcCB0YWJsZSBpZHhwYXJ0OwogLS0gVmVyaWZ5 IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGluaGVyaXQgY29ycmVjdGx5CiBjcmVhdGUgdGFibGUg aWR4cGFydCAoYSBpbnQsIGIgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwogY3JlYXRlIHRh YmxlIGlkeHBhcnQxIChsaWtlIGlkeHBhcnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29uc3RyYWludHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMu c3FsCmluZGV4IDFmNmRjOGZkNjlmLi41NDVmOGZhMTdhMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv bnN0cmFpbnRzLnNxbApAQCAtMTY1LDYgKzE2NSwxNyBAQCBDUkVBVEUgVEFCTEUgU1lTX0NPTF9D SEVDS19UQkwgKGNpdHkgdGV4dCwgc3RhdGUgdGV4dCwgaXNfY2FwaXRhbCBib29sLAogICAgICAg ICAgICAgICAgICAgYWx0aXR1ZGUgaW50LAogCQkJCSAgQ0hFQ0sgKE5PVCAoaXNfY2FwaXRhbCBB TkQgY3RpZDo6dGV4dCA9ICdzeXNfY29sX2NoZWNrX3RibCcpKSk7CiAKKy0tCistLSBEcm9wIGNv bHVtbiBhbHNvIGRyb3AgdGhlIGFzc29jaWF0ZWQgQ2hlY2sgY29uc3RyYWludHMgYW5kIHdob2xl LXJvdyByZWZlcmVuY2VkIGNoZWNrIGNvbnN0cmFpbnQKKy0tCitDUkVBVEUgVEFCTEUgRFJPUF9D T0xfQ0hFQ0tfVEJMICgKKyAgICBjaXR5IHRleHQsIHN0YXRlIHRleHQsIGlzX2NhcGl0YWwgYm9v bCwgYWx0aXR1ZGUgaW50LAorICAgIENPTlNUUkFJTlQgY2MgQ0hFQ0sgKGNpdHkgaXMgbm90IG51 bGwpLAorICAgIENPTlNUUkFJTlQgY2MxIENIRUNLIChEUk9QX0NPTF9DSEVDS19UQkwgaXMgbm90 IG51bGwpKTsKK0FMVEVSIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBjaXR5 OworXGQgRFJPUF9DT0xfQ0hFQ0tfVEJMCitEUk9QIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTDsK KwogLS0KIC0tIENoZWNrIGluaGVyaXRhbmNlIG9mIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cwog LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAppbmRleCBiNWNiMDFjMmQ3MC4uMmJhZDk1NTUx MTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKQEAgLTI5NSw2ICsyOTUsMTQgQEAgYWx0 ZXIgdGFibGUgaWR4cGFydDIgZHJvcCBjb2x1bW4gYzsKIFxkIGlkeHBhcnQyCiBkcm9wIHRhYmxl IGlkeHBhcnQsIGlkeHBhcnQyOwogCitjcmVhdGUgdGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50 LCBjIGludCk7CitjcmVhdGUgaW5kZXggb24gaWR4cGFydChjKTsKK2NyZWF0ZSBpbmRleCBvbiBp ZHhwYXJ0KChpZHhwYXJ0IGlzIG5vdCBudWxsKSk7CitjcmVhdGUgaW5kZXggb24gaWR4cGFydChh KSB3aGVyZSBpZHhwYXJ0IGlzIG5vdCBudWxsOworYWx0ZXIgdGFibGUgaWR4cGFydCBkcm9wIGNv bHVtbiBjOworXGQgaWR4cGFydAorZHJvcCB0YWJsZSBpZHhwYXJ0OworCiAtLSBWZXJpZnkgdGhh dCBleHByZXNzaW9uIGluZGV4ZXMgaW5oZXJpdCBjb3JyZWN0bHkKIGNyZWF0ZSB0YWJsZSBpZHhw YXJ0IChhIGludCwgYiBpbnQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSk7CiBjcmVhdGUgdGFibGUg aWR4cGFydDEgKGxpa2UgaWR4cGFydCk7Ci0tIAoyLjM0LjEKCg== --0000000000001e0ff8063e9734eb--