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 1vR3Ce-004w4M-07 for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 06:52:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vR3Cd-001C2L-0D for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Dec 2025 06:52:35 +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 1vR3Cc-001C2C-27 for pgsql-hackers@lists.postgresql.org; Thu, 04 Dec 2025 06:52:35 +0000 Received: from mail-vs1-xe2d.google.com ([2607:f8b0:4864:20::e2d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vR3Ca-0033XU-2H for pgsql-hackers@postgresql.org; Thu, 04 Dec 2025 06:52:34 +0000 Received: by mail-vs1-xe2d.google.com with SMTP id ada2fe7eead31-5dd88eef2f3so201228137.3 for ; Wed, 03 Dec 2025 22:52:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764831151; x=1765435951; 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=qGbClA9l4RfR3f47wiThhNbtrT38USQc0qhOU8AQLeU=; b=SWENj15BYOyPCqXvCgae4gRT9JkSxlDlUYEI5onBeIoY2vj4DNT7pEDso00ooYtlD7 iOtOa50kyPycwhFqOAeD7fJYYqOMGF7uFafV3WYEAEvpZtPFbfMbD3kR3E3/WDGy0TOa x4b8rTRKs9gkn1HCxK0P19EV/odUPzJ5kT1NSwwg47y4zwYf57LtqWnydkZbnM92hK3K OX6bc1PcHANs/MHb+ErCD74LMi1HDtGwsAxvfnvE0GcLdQlnM3Sr1a1pXNtJ9v6CC8CZ HHyQLoyPDoye73a3MDgMyG2E0LqOPDOom7HF0BTGOZQIYlJ3qTtkw2qqGd7lN1k4+Ic3 YTzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764831151; x=1765435951; 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=qGbClA9l4RfR3f47wiThhNbtrT38USQc0qhOU8AQLeU=; b=kMC6oC4OzywG1MWFKo1iNp5dgV5khN9AMFpXJ2kXlXt8uB5ucOOS4zXuBrs+cMQX6B cZVV1QYxGUdQpYdmtpCHQs1NpycD/L036AwzgOAW0BUSsLZPRLjtZSdq0aQoJ7zYYn8i Ory33JHmhklpjRb4EhsKjJNPlbIl3v97KlIgVHoLGKR9REIoe7KJPDMQWEr/NQofRAug LRkLD2A+lDDaXaGtAd3lbzapFxoB8jxRF12vIqn+7i7LXieHXSZ5VfoeCS3VxcY0Xn3l diC5yzOU3tTh6h/o7pbCIR/6u/UjTSSDY46WVk49U36jZgr4bSK2Bvarwao9ORbLT+3I MuLQ== X-Forwarded-Encrypted: i=1; AJvYcCV7srkSeLZNvKaUSiDsx1yI4NUzI1gfWdZolPiNF4pzjPyUudptD+E9+hdTlXaPtyTNxyTE/dFja+QsrHdM@postgresql.org X-Gm-Message-State: AOJu0YwwUmhAv4M9qBcsKHrtIT/p+5q8iUhktY5ZKowDC0A6OxJyoekG sFyWJKd0+Pd9EosMS023iOnYz8M8oBqARTGkTFHqpntYiMi8ijJpDF/Ufyv+UQUENW9x7l6rfyh zRXFGiByNLh0bT6avya7a50HHi7YVqfO0aGU0SOpouA== X-Gm-Gg: ASbGncvXek62R2pAatkmrCCc7oqrSMPb1XZ3IRYrsKgKbSZ5uuqRVnpuHoQs33v5Zt5 tHLwEu8aR0+C+/sWIIUBJbjVySLgCWcZWiStY4EkwxNuDu9UnfqvWEUkHFkxVgViU/KbOh2R4vF OXtpo7KZ0iiRzZK4yJfX5/hNm/jwQ/9w7YoK86B/1coVuxtNN2v/Z/YDOc8jYLnztBE7xC239i8 7HHBpsny1dUDwB+xRWKdDAEGXn9yxGE01oDTjp9wg61J+BxkLE4quZve9eBiNbgXC6PVm8s9yT2 +ZUlvMi4JV5/hQxY5oP83AV9pwwBzRPvS50J37+W7bOdZmFv63AFEIKM3p9Nv4E/UXxpqRt76UQ jNjGCA4M8WtqdTcXGmNuiQhm2MDjM04yCkmaSMYIC75HmvioDj/zpwRrr2q9xSc+Ks9bfm+0CI9 rGRTVO0pBk X-Google-Smtp-Source: AGHT+IEjzbwykrOqm/oyXrjtG7LdafNfhtuKgRio0o3vMWY3fy+QPCS2PkahtF1wrCzSgKOieJDY23uEvKD+JVIzSEE= X-Received: by 2002:a05:6102:511e:b0:5db:cfb2:e619 with SMTP id ada2fe7eead31-5e48e34c73fmr1629450137.20.1764831150677; Wed, 03 Dec 2025 22:52:30 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Thu, 4 Dec 2025 14:51:54 +0800 X-Gm-Features: AWmQ_bn0PNJFGuhsfsdoCWBk1PrFDiRd1Qv5g58gVKdtHtU18Vu173jAhOM7WG8 Message-ID: Subject: Re: alter check constraint enforceability To: Robert Treat Cc: Kirill Reshke , PostgreSQL-development Content-Type: multipart/mixed; boundary="000000000000d33a0806451ac5e0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d33a0806451ac5e0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Nov 7, 2025 at 7:29=E2=80=AFAM Robert Treat wrote: > > > Hi! > > I looked at v3. > > > > Should we rename `ATExecAlterConstrEnforceability` to > > `ATExecAlterFKConstrEnforceability `? > > > > +1 > > Robert Treat > https://xzilla.net hi. AlterConstrEnforceabilityRecurse renamed to AlterFKConstrEnforceabilityRecurse ATExecAlterConstrEnforceability renamed to ATExecAlterFKConstrEnforceability. There seem to be no tests for cases where a partitioned table=E2=80=99s che= ck constraint is not enforced, but the partition=E2=80=99s constraint is enforced. I=E2= =80=99ve added tests for this case. ATExecAlterCheckConstrEnforceability ``rel =3D table_open(currcon->conrelid, NoLock);`` NoLock is ok, because parent is already locked, obviously, ``find_all_inheritors(RelationGetRelid(rel), lockmode, NULL); `` will lock all the children with lockmode. -- jian https://www.enterprisedb.com --000000000000d33a0806451ac5e0 Content-Type: text/x-patch; charset="US-ASCII"; name="v4-0001-alter-check-constraint-enforceability.patch" Content-Disposition: attachment; filename="v4-0001-alter-check-constraint-enforceability.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mir2viq80 RnJvbSA5N2U3YWMwNjg4NDY0YjYzN2Y1MzliN2RmNDNkODRmZjY4MTA5NTQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNCBEZWMgMjAyNSAxNDozOTo0NCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQg MS8xXSBhbHRlciBjaGVjayBjb25zdHJhaW50IGVuZm9yY2VhYmlsaXR5CgpzeW50YXg6IEFMVEVS IFRBQkxFIEFMVEVSIENPTlNUUkFJTlQgW05PVF0gRU5GT1JDRUQKCmNvbnRleHQ6IGh0dHBzOi8v Z2l0LnBvc3RncmVzcWwub3JnL2NnaXQvcG9zdGdyZXNxbC5naXQvY29tbWl0Lz9pZD1jYTg3YzQx NWUyZmNjZjgxY2VjNmZkNDU2OThkZGU5ZmFlMGFiNTcwCmRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0FDSnVmeEhDaF9GVS1Gc0V3c0N2ZzltTjYtNXR6UjZIOW50biswS1VnVENhZXJE T21nQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21s ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgIHwgMjc0ICsrKysrKysrKysrKysrKysrLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29uc3RyYWludHMub3V0IHwgIDc5ICsrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvaW5oZXJpdC5vdXQgICAgIHwgIDYyICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25z dHJhaW50cy5zcWwgICAgICB8ICA1MSArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmhlcml0 LnNxbCAgICAgICAgICB8ICA0MyArKysrCiA2IGZpbGVzIGNoYW5nZWQsIDQ1NCBpbnNlcnRpb25z KCspLCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggOWQy M2FkNWEwZmIuLmZhYTIzMWY5M2U0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC01 NjksOCArNTY5LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8bGlzdGl0ZW0+CiAg ICAgIDxwYXJhPgogICAgICAgVGhpcyBmb3JtIGFsdGVycyB0aGUgYXR0cmlidXRlcyBvZiBhIGNv bnN0cmFpbnQgdGhhdCB3YXMgcHJldmlvdXNseQotICAgICAgY3JlYXRlZC4gQ3VycmVudGx5IG9u bHkgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgbWF5IGJlIGFsdGVyZWQgaW4KLSAgICAgIHRoaXMg ZmFzaGlvbiwgYnV0IHNlZSBiZWxvdy4KKyAgICAgIGNyZWF0ZWQuIEN1cnJlbnRseSA8bGl0ZXJh bD5GT1JFSUdOIEtFWTwvbGl0ZXJhbD4gYW5kCisgICAgICA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJh bD4gY29uc3RyYWludHMgbWF5IGJlIGFsdGVyZWQgaW4gdGhpcyBmYXNoaW9uLCBidXQgc2VlIGJl bG93LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAwN2U1Yjk1NzgyZS4uNWJlMjNhYjk1YjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0zOTYsMTQgKzM5NiwxNyBAQCBzdGF0aWMgT2Jq ZWN0QWRkcmVzcyBBVEV4ZWNBbHRlckNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cmVsLAogc3RhdGljIGJvb2wgQVRFeGVjQWx0ZXJDb25zdHJhaW50SW50ZXJuYWwoTGlzdCAqKndx dWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwgUmVsYXRpb24gY29ucmVsLAogCQkJCQkJ CQkJCSAgUmVsYXRpb24gdGdyZWwsIFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIGNvbnR1cGxlLAog CQkJCQkJCQkJCSAgYm9vbCByZWN1cnNlLCBMT0NLTU9ERSBsb2NrbW9kZSk7Ci1zdGF0aWMgYm9v bCBBVEV4ZWNBbHRlckNvbnN0ckVuZm9yY2VhYmlsaXR5KExpc3QgKip3cXVldWUsIEFUQWx0ZXJD b25zdHJhaW50ICpjbWRjb24sCi0JCQkJCQkJCQkJCVJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24g dGdyZWwsCi0JCQkJCQkJCQkJCU9pZCBma3JlbGlkLCBPaWQgcGtyZWxpZCwKLQkJCQkJCQkJCQkJ SGVhcFR1cGxlIGNvbnR1cGxlLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCQkJCQkJT2lkIFJl ZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAotCQkJCQkJCQkJCQlPaWQgUmVmZXJlbmNlZFBhcmVu dFVwZFRyaWdnZXIsCi0JCQkJCQkJCQkJCU9pZCBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIs Ci0JCQkJCQkJCQkJCU9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpOworc3RhdGljIGJv b2wgQVRFeGVjQWx0ZXJGS0NvbnN0ckVuZm9yY2VhYmlsaXR5KExpc3QgKip3cXVldWUsIEFUQWx0 ZXJDb25zdHJhaW50ICpjbWRjb24sCisJCQkJCQkJCQkJCSAgUmVsYXRpb24gY29ucmVsLCBSZWxh dGlvbiB0Z3JlbCwKKwkJCQkJCQkJCQkJICBPaWQgZmtyZWxpZCwgT2lkIHBrcmVsaWQsCisJCQkJ CQkJCQkJCSAgSGVhcFR1cGxlIGNvbnR1cGxlLCBMT0NLTU9ERSBsb2NrbW9kZSwKKwkJCQkJCQkJ CQkJICBPaWQgUmVmZXJlbmNlZFBhcmVudERlbFRyaWdnZXIsCisJCQkJCQkJCQkJCSAgT2lkIFJl ZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJCQkJCQkgIE9pZCBSZWZlcmVuY2luZ1Bh cmVudEluc1RyaWdnZXIsCisJCQkJCQkJCQkJCSAgT2lkIFJlZmVyZW5jaW5nUGFyZW50VXBkVHJp Z2dlcik7CitzdGF0aWMgYm9vbCBBVEV4ZWNBbHRlckNoZWNrQ29uc3RyRW5mb3JjZWFiaWxpdHko TGlzdCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKKwkJCQkJCQkJCQkJCSBS ZWxhdGlvbiBjb25yZWwsIEhlYXBUdXBsZSBjb250dXBsZSwKKwkJCQkJCQkJCQkJCSBib29sIHJl Y3Vyc2UsIGJvb2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgYm9vbCBB VEV4ZWNBbHRlckNvbnN0ckRlZmVycmFiaWxpdHkoTGlzdCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0 cmFpbnQgKmNtZGNvbiwKIAkJCQkJCQkJCQkgICBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRn cmVsLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJICAgSGVhcFR1cGxlIGNvbnR1cGxlLCBib29s IHJlY3Vyc2UsCkBAIC00MTQsMTQgKzQxNywxNyBAQCBzdGF0aWMgYm9vbCBBVEV4ZWNBbHRlckNv bnN0ckluaGVyaXRhYmlsaXR5KExpc3QgKip3cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbQog c3RhdGljIHZvaWQgQWx0ZXJDb25zdHJUcmlnZ2VyRGVmZXJyYWJpbGl0eShPaWQgY29ub2lkLCBS ZWxhdGlvbiB0Z3JlbCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQlib29sIGRlZmVycmFibGUs IGJvb2wgaW5pdGRlZmVycmVkLAogCQkJCQkJCQkJCQlMaXN0ICoqb3RoZXJyZWxpZHMpOwotc3Rh dGljIHZvaWQgQWx0ZXJDb25zdHJFbmZvcmNlYWJpbGl0eVJlY3Vyc2UoTGlzdCAqKndxdWV1ZSwg QVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKLQkJCQkJCQkJCQkJIFJlbGF0aW9uIGNvbnJlbCwg UmVsYXRpb24gdGdyZWwsCi0JCQkJCQkJCQkJCSBPaWQgZmtyZWxpZCwgT2lkIHBrcmVsaWQsCi0J CQkJCQkJCQkJCSBIZWFwVHVwbGUgY29udHVwbGUsIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJ CQkJCQkgT2lkIFJlZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAotCQkJCQkJCQkJCQkgT2lkIFJl ZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAotCQkJCQkJCQkJCQkgT2lkIFJlZmVyZW5jaW5nUGFy ZW50SW5zVHJpZ2dlciwKLQkJCQkJCQkJCQkJIE9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdn ZXIpOworc3RhdGljIHZvaWQgQWx0ZXJGS0NvbnN0ckVuZm9yY2VhYmlsaXR5UmVjdXJzZShMaXN0 ICoqd3F1ZXVlLCBBVEFsdGVyQ29uc3RyYWludCAqY21kY29uLAorCQkJCQkJCQkJCQkgICBSZWxh dGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVsLAorCQkJCQkJCQkJCQkgICBPaWQgZmtyZWxpZCwg T2lkIHBrcmVsaWQsCisJCQkJCQkJCQkJCSAgIEhlYXBUdXBsZSBjb250dXBsZSwgTE9DS01PREUg bG9ja21vZGUsCisJCQkJCQkJCQkJCSAgIE9pZCBSZWZlcmVuY2VkUGFyZW50RGVsVHJpZ2dlciwK KwkJCQkJCQkJCQkJICAgT2lkIFJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJCQkJ CQkgICBPaWQgUmVmZXJlbmNpbmdQYXJlbnRJbnNUcmlnZ2VyLAorCQkJCQkJCQkJCQkgICBPaWQg UmVmZXJlbmNpbmdQYXJlbnRVcGRUcmlnZ2VyKTsKK3N0YXRpYyB2b2lkIEFsdGVyQ2hlY2tDb25z dHJFbmZvcmNlYWJpbGl0eVJlY3Vyc2UoTGlzdCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQg KmNtZGNvbiwKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb24gY29ucmVsLCBPaWQgY29ucmVsaWQsCisJ CQkJCQkJCQkJCQkgIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIHN0YXRpYyB2b2lkIEFsdGVyQ29uc3RyRGVmZXJyYWJpbGl0eVJlY3Vyc2UoTGlzdCAq KndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKIAkJCQkJCQkJCQkJUmVsYXRpb24g Y29ucmVsLCBSZWxhdGlvbiB0Z3JlbCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQlIZWFwVHVw bGUgY29udHVwbGUsIGJvb2wgcmVjdXJzZSwKQEAgLTEyMTgxLDcgKzEyMTg3LDcgQEAgR2V0Rm9y ZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRpb24gdHJpZ3JlbCwKICAqCiAgKiBVcGRhdGUgdGhl IGF0dHJpYnV0ZXMgb2YgYSBjb25zdHJhaW50LgogICoKLSAqIEN1cnJlbnRseSBvbmx5IHdvcmtz IGZvciBGb3JlaWduIEtleSBhbmQgbm90IG51bGwgY29uc3RyYWludHMuCisgKiBDdXJyZW50bHkg d29ya3MgZm9yIEZvcmVpZ24gS2V5LCBDSEVDSywgYW5kIG5vdCBudWxsIGNvbnN0cmFpbnRzLgog ICoKICAqIElmIHRoZSBjb25zdHJhaW50IGlzIG1vZGlmaWVkLCByZXR1cm5zIGl0cyBhZGRyZXNz OyBvdGhlcndpc2UsIHJldHVybgogICogSW52YWxpZE9iamVjdEFkZHJlc3MuCkBAIC0xMjI0Mywx MSArMTIyNDksMTMgQEAgQVRFeGVjQWx0ZXJDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0 aW9uIHJlbCwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkgZXJybXNnKCJjb25zdHJhaW50IFwiJXNcIiBvZiBy ZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCIsCiAJCQkJCQlj bWRjb24tPmNvbm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7Ci0JaWYgKGNt ZGNvbi0+YWx0ZXJFbmZvcmNlYWJpbGl0eSAmJiBjdXJyY29uLT5jb250eXBlICE9IENPTlNUUkFJ TlRfRk9SRUlHTikKKwlpZiAoY21kY29uLT5hbHRlckVuZm9yY2VhYmlsaXR5ICYmCisJCShjdXJy Y29uLT5jb250eXBlICE9IENPTlNUUkFJTlRfRk9SRUlHTiAmJiBjdXJyY29uLT5jb250eXBlICE9 IENPTlNUUkFJTlRfQ0hFQ0spKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLAotCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciBlbmZvcmNl YWJpbGl0eSBvZiBjb25zdHJhaW50IFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIiLAotCQkJCQkJ Y21kY29uLT5jb25uYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJCWVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJZXJybXNnKCJjYW5ub3QgYWx0 ZXIgZW5mb3JjZWFiaWxpdHkgb2YgY29uc3RyYWludCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wi IiwKKwkJCQkJCWNtZGNvbi0+Y29ubmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSks CisJCQkJZXJyaGludCgiT25seSBmb3JlaWduIGtleSBhbmQgY2hlY2sgY29uc3RyYWludHMgY2Fu IGNoYW5nZSBlbmZvcmNlYWJpbGl0eSIpKTsKIAlpZiAoY21kY29uLT5hbHRlckluaGVyaXRhYmls aXR5ICYmCiAJCWN1cnJjb24tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9OT1ROVUxMKQogCQllcmVw b3J0KEVSUk9SLApAQCAtMTIzNDksMTcgKzEyMzU3LDI3IEBAIEFURXhlY0FsdGVyQ29uc3RyYWlu dEludGVybmFsKExpc3QgKip3cXVldWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRjb24sCiAJICog ZW5mb3JjZWFiaWxpdHksIHdlIGRvbid0IG5lZWQgdG8gZXhwbGljaXRseSB1cGRhdGUgbXVsdGlw bGUgZW50cmllcyBpbgogCSAqIHBnX3RyaWdnZXIgcmVsYXRlZCB0byBkZWZlcnJhYmlsaXR5Lgog CSAqCi0JICogTW9kaWZ5aW5nIGVuZm9yY2VhYmlsaXR5IGludm9sdmVzIGVpdGhlciBjcmVhdGlu ZyBvciBkcm9wcGluZyB0aGUKLQkgKiB0cmlnZ2VyLCBkdXJpbmcgd2hpY2ggdGhlIGRlZmVycmFi aWxpdHkgc2V0dGluZyB3aWxsIGJlIGFkanVzdGVkCisJICogTW9kaWZ5aW5nIGZvcmVpZ24ga2V5 IGVuZm9yY2VhYmlsaXR5IGludm9sdmVzIGVpdGhlciBjcmVhdGluZyBvciBkcm9wcGluZworCSAq IHRoZSB0cmlnZ2VyLCBkdXJpbmcgd2hpY2ggdGhlIGRlZmVycmFiaWxpdHkgc2V0dGluZyB3aWxs IGJlIGFkanVzdGVkCiAJICogYXV0b21hdGljYWxseS4KIAkgKi8KLQlpZiAoY21kY29uLT5hbHRl ckVuZm9yY2VhYmlsaXR5ICYmCi0JCUFURXhlY0FsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHkod3F1 ZXVlLCBjbWRjb24sIGNvbnJlbCwgdGdyZWwsCi0JCQkJCQkJCQkJY3VycmNvbi0+Y29ucmVsaWQs IGN1cnJjb24tPmNvbmZyZWxpZCwKLQkJCQkJCQkJCQljb250dXBsZSwgbG9ja21vZGUsIEludmFs aWRPaWQsCi0JCQkJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwgSW52YWxpZE9pZCkpCi0J CWNoYW5nZWQgPSB0cnVlOwotCisJaWYgKGNtZGNvbi0+YWx0ZXJFbmZvcmNlYWJpbGl0eSkKKwl7 CisJCWlmIChjdXJyY29uLT5jb250eXBlID09IENPTlNUUkFJTlRfRk9SRUlHTikKKwkJeworCQkJ QVRFeGVjQWx0ZXJGS0NvbnN0ckVuZm9yY2VhYmlsaXR5KHdxdWV1ZSwgY21kY29uLCBjb25yZWws IHRncmVsLAorCQkJCQkJCQkJCQkgIGN1cnJjb24tPmNvbnJlbGlkLCBjdXJyY29uLT5jb25mcmVs aWQsCisJCQkJCQkJCQkJCSAgY29udHVwbGUsIGxvY2ttb2RlLCBJbnZhbGlkT2lkLAorCQkJCQkJ CQkJCQkgIEludmFsaWRPaWQsIEludmFsaWRPaWQsIEludmFsaWRPaWQpOworCQkJY2hhbmdlZCA9 IHRydWU7CisJCX0KKwkJZWxzZSBpZiAoY3VycmNvbi0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0NI RUNLKQorCQl7CisJCQlBVEV4ZWNBbHRlckNoZWNrQ29uc3RyRW5mb3JjZWFiaWxpdHkod3F1ZXVl LCBjbWRjb24sIGNvbnJlbCwgY29udHVwbGUsCisJCQkJCQkJCQkJCQkgcmVjdXJzZSwgZmFsc2Us IGxvY2ttb2RlKTsKKwkJCWNoYW5nZWQgPSB0cnVlOworCQl9CisJfQogCWVsc2UgaWYgKGNtZGNv bi0+YWx0ZXJEZWZlcnJhYmlsaXR5ICYmCiAJCQkgQVRFeGVjQWx0ZXJDb25zdHJEZWZlcnJhYmls aXR5KHdxdWV1ZSwgY21kY29uLCBjb25yZWwsIHRncmVsLCByZWwsCiAJCQkJCQkJCQkJCWNvbnR1 cGxlLCByZWN1cnNlLCAmb3RoZXJyZWxpZHMsCkBAIC0xMjM4OSw3ICsxMjQwNywxNDkgQEAgQVRF eGVjQWx0ZXJDb25zdHJhaW50SW50ZXJuYWwoTGlzdCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0cmFp bnQgKmNtZGNvbiwKIH0KIAogLyoKLSAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29uc3RyYWludCdz IGVuZm9yY2VhYmlsaXR5IGlzIGFsdGVyZWQuCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIENIRUNL IGNvbnN0cmFpbnQncyBlbmZvcmNlYWJpbGl0eSBpcyBhbHRlcmVkLgorICoKKyAqIE5vdGUgdGhh dCB3ZSBtdXN0IHJlY3Vyc2UgZXZlbiB3aGVuIHRyeWluZyB0byBjaGFuZ2UgYSBjaGVjayBjb25z dHJhaW50IHRvCisgKiBub3QgZW5mb3JjZWQgaWYgaXQgaXMgYWxyZWFkeSBub3QgZW5mb3JjZWQs IGluIGNhc2UgZGVzY2VuZGFudCBjb25zdHJhaW50cworICogbWlnaHQgYmUgZW5mb3JjZWQgYW5k IG5lZWQgdG8gYmUgY2hhbmdlZCB0byBub3QgZW5mb3JjZWQuIENvbnZlcnNlbHksIHdlCisgKiBz aG91bGQgZG8gbm90aGluZyBpZiBhIGNvbnN0cmFpbnQgaXMgYmVpbmcgc2V0IHRvIGVuZm9yY2Vk IGFuZCBpcyBhbHJlYWR5CisgKiBlbmZvcmNlZCwgYXMgZGVzY2VuZGFudCBjb25zdHJhaW50cyBj YW5ub3QgYmUgZGlmZmVyZW50IGluIHRoYXQgY2FzZS4KKyAqCisgKiBjb25yZWwgaXMgdGhlIHBn X2NvbnN0cmFpbnQgY2F0YWxvZyByZWxhdGlvbi4KKyAqLworc3RhdGljIGJvb2wKK0FURXhlY0Fs dGVyQ2hlY2tDb25zdHJFbmZvcmNlYWJpbGl0eShMaXN0ICoqd3F1ZXVlLCBBVEFsdGVyQ29uc3Ry YWludCAqY21kY29uLAorCQkJCQkJCQkJIFJlbGF0aW9uIGNvbnJlbCwgSGVhcFR1cGxlIGNvbnR1 cGxlLAorCQkJCQkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcsIExPQ0tNT0RFIGxv Y2ttb2RlKQoreworCUZvcm1fcGdfY29uc3RyYWludCBjdXJyY29uOworCVJlbGF0aW9uCXJlbDsK Kwlib29sCQljaGFuZ2VkID0gZmFsc2U7CisJTGlzdAkgICAqY2hpbGRyZW4gPSBOSUw7CisKKwkv KiBTaW5jZSB0aGlzIGZ1bmN0aW9uIHJlY3Vyc2VzLCBpdCBjb3VsZCBiZSBkcml2ZW4gdG8gc3Rh Y2sgb3ZlcmZsb3cgKi8KKwljaGVja19zdGFja19kZXB0aCgpOworCisJQXNzZXJ0KGNtZGNvbi0+ YWx0ZXJFbmZvcmNlYWJpbGl0eSk7CisKKwljdXJyY29uID0gKEZvcm1fcGdfY29uc3RyYWludCkg R0VUU1RSVUNUKGNvbnR1cGxlKTsKKworCUFzc2VydChjdXJyY29uLT5jb250eXBlID09IENPTlNU UkFJTlRfQ0hFQ0spOworCisJLyoKKwkgKiBwYXJlbnQgcmVsYXRpb24gYWxyZWFkeSBsb2NrZWQg YnkgY2FsbGVkLCBjaGlsZHJlbiB3aWxsIGJlIGxvY2tlZCBieQorCSAqIGZpbmRfYWxsX2luaGVy aXRvcnMuIFNvIE5vTG9jayBpcyBmaW5lIGhlcmUuCisJICovCisJcmVsID0gdGFibGVfb3Blbihj dXJyY29uLT5jb25yZWxpZCwgTm9Mb2NrKTsKKwlpZiAoY3VycmNvbi0+Y29uZW5mb3JjZWQgIT0g Y21kY29uLT5pc19lbmZvcmNlZCkKKwl7CisJCUFsdGVyQ29uc3RyVXBkYXRlQ29uc3RyYWludEVu dHJ5KGNtZGNvbiwgY29ucmVsLCBjb250dXBsZSk7CisJCWNoYW5nZWQgPSB0cnVlOworCX0KKwor CWlmICghY21kY29uLT5pc19lbmZvcmNlZCB8fCBjaGFuZ2VkKQorCXsKKwkJLyoKKwkJICogSWYg d2UncmUgcmVjdXJzaW5nLCB0aGUgcGFyZW50IGhhcyBhbHJlYWR5IGRvbmUgdGhpcywgc28gc2tp cCBpdC4KKwkJICogQWxzbywgaWYgdGhlIGNvbnN0cmFpbnQgaXMgYSBOTyBJTkhFUklUIGNvbnN0 cmFpbnQsIHdlIHNob3VsZG4ndCB0cnkKKwkJICogdG8gbG9vayBmb3IgaXQgaW4gdGhlIGNoaWxk cmVuLgorCQkqLworCQlpZiAoIXJlY3Vyc2luZyAmJiAhY3VycmNvbi0+Y29ubm9pbmhlcml0KQor CQkJY2hpbGRyZW4gPSBmaW5kX2FsbF9pbmhlcml0b3JzKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwK KwkJCQkJCQkJCQkgICBsb2NrbW9kZSwgTlVMTCk7CisKKwkJZm9yZWFjaF9vaWQoY2hpbGRvaWQs IGNoaWxkcmVuKQorCQl7CisJCQlpZiAoY2hpbGRvaWQgPT0gUmVsYXRpb25HZXRSZWxpZChyZWwp KQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogSWYgd2UgYXJlIHRvbGQgbm90IHRvIHJl Y3Vyc2UsIHRoZXJlIGhhZCBiZXR0ZXIgbm90IGJlIGFueSBjaGlsZAorCQkJICogdGFibGVzLCBi ZWNhdXNlIHdlIGNhbid0IGNoYW5nZSBjb25zdHJhaW50IGVuZm9yY2VhYmlsaXR5IG9uIHRoZQor CQkJICogcGFyZW50IHVubGVzcyB3ZSBoYXZlIGNoYW5nZWQgZW5mb3JjZWFiaWxpdHkgZm9yIGFs bCBjaGlsZC4KKwkJCSovCisJCQlpZiAoIXJlY3Vyc2UpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04pLAorCQkJCQkJZXJy bXNnKCJjb25zdHJhaW50IG11c3QgYmUgYWx0ZXJlZCBvbiBjaGlsZCB0YWJsZXMgdG9vIiksCisJ CQkJCQllcnJoaW50KCJEbyBub3Qgc3BlY2lmeSB0aGUgT05MWSBrZXl3b3JkLiIpKTsKKworCQkJ QWx0ZXJDaGVja0NvbnN0ckVuZm9yY2VhYmlsaXR5UmVjdXJzZSh3cXVldWUsIGNtZGNvbiwgY29u cmVsLCBjaGlsZG9pZCwgZmFsc2UsIHRydWUsIGxvY2ttb2RlKTsKKwkJfQorCX0KKworCS8qCisJ ICogVGVsbCBQaGFzZSAzIHRvIGNoZWNrIHRoYXQgdGhlIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk IGJ5IGV4aXN0aW5nIHJvd3MuCisJICogVGhpcyBpcyBuZWVkZWQgb25seSB3aGVuIGFsdGVyaW5n IHRoZSBjb25zdHJhaW50IGZyb20gTk9UIEVORk9SQ0VEIHRvCisJICogRU5GT1JDRUQuCisJICov CisJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJIWN1 cnJjb24tPmNvbmVuZm9yY2VkICYmCisJCWNtZGNvbi0+aXNfZW5mb3JjZWQpCisJeworCQlBbHRl cmVkVGFibGVJbmZvICp0YWI7CisJCU5ld0NvbnN0cmFpbnQgKm5ld2NvbjsKKwkJRGF0dW0JCXZh bDsKKwkJY2hhcgkgICAqY29uYmluOworCisJCW5ld2NvbiA9IChOZXdDb25zdHJhaW50ICopIHBh bGxvYzAoc2l6ZW9mKE5ld0NvbnN0cmFpbnQpKTsKKwkJbmV3Y29uLT5uYW1lID0gcHN0cmR1cChO YW1lU3RyKGN1cnJjb24tPmNvbm5hbWUpKTsKKwkJbmV3Y29uLT5jb250eXBlID0gQ09OU1RSX0NI RUNLOworCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgY29udHVwbGUs CisJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmJpbik7CisJCWNvbmJpbiA9IFRleHRE YXR1bUdldENTdHJpbmcodmFsKTsKKwkJbmV3Y29uLT5xdWFsID0gZXhwYW5kX2dlbmVyYXRlZF9j b2x1bW5zX2luX2V4cHIoc3RyaW5nVG9Ob2RlKGNvbmJpbiksIHJlbCwgMSk7CisKKwkJLyogRmlu ZCBvciBjcmVhdGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgdGhpcyB0YWJsZSAqLworCQl0YWIgPSBB VEdldFF1ZXVlRW50cnkod3F1ZXVlLCByZWwpOworCQl0YWItPmNvbnN0cmFpbnRzID0gbGFwcGVu ZCh0YWItPmNvbnN0cmFpbnRzLCBuZXdjb24pOworCX0KKworCXRhYmxlX2Nsb3NlKHJlbCwgTm9M b2NrKTsKKworCXJldHVybiBjaGFuZ2VkOworfQorCitzdGF0aWMgdm9pZAorQWx0ZXJDaGVja0Nv bnN0ckVuZm9yY2VhYmlsaXR5UmVjdXJzZShMaXN0ICoqd3F1ZXVlLCBBVEFsdGVyQ29uc3RyYWlu dCAqY21kY29uLAorCQkJCQkJCQkJICBSZWxhdGlvbiBjb25yZWwsIE9pZCBjb25yZWxpZCwKKwkJ CQkJCQkJCSAgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJCQkJCSAgTE9DS01P REUgbG9ja21vZGUpCit7CisJU3lzU2NhbkRlc2MgcHNjYW47CisJSGVhcFR1cGxlCWNoaWxkdHVw OworCVNjYW5LZXlEYXRhIHNrZXlbM107CisKKwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlB bnVtX3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBG X09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oY29ucmVsaWQpKTsKKwlTY2FuS2V5SW5pdCgm c2tleVsxXSwKKwkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29udHlwaWQsCisJCQkJQlRFcXVhbFN0 cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oSW52YWxpZE9pZCkp OworCVNjYW5LZXlJbml0KCZza2V5WzJdLAorCQkJCUFudW1fcGdfY29uc3RyYWludF9jb25uYW1l LAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9OQU1FRVEsCisJCQkJQ1N0cmluZ0dldERh dHVtKGNtZGNvbi0+Y29ubmFtZSkpOworCisJcHNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29u cmVsLCBDb25zdHJhaW50UmVsaWRUeXBpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgIE5V TEwsIDMsIHNrZXkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNoaWxkdHVwID0gc3lzdGFi bGVfZ2V0bmV4dChwc2NhbikpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQllcnJtc2coImNvbnN0cmFpbnQgXCIlc1wiIG9mIHJl bGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCSAgIGNtZGNvbi0+Y29ubmFtZSwg Z2V0X3JlbF9uYW1lKGNvbnJlbGlkKSkpOworCisJQVRFeGVjQWx0ZXJDaGVja0NvbnN0ckVuZm9y Y2VhYmlsaXR5KHdxdWV1ZSwgY21kY29uLCBjb25yZWwsIGNoaWxkdHVwLAorCQkJCQkJCQkJCSBy ZWN1cnNlLCByZWN1cnNpbmcsIGxvY2ttb2RlKTsKKworCXN5c3RhYmxlX2VuZHNjYW4ocHNjYW4p OworfQorCisvKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBGT1JFSUdOIEtFWSBjb25zdHJhaW50 J3MgZW5mb3JjZWFiaWxpdHkgaXMgYWx0ZXJlZC4KICAqCiAgKiBEZXBlbmRpbmcgb24gd2hldGhl ciB0aGUgY29uc3RyYWludCBpcyBiZWluZyBzZXQgdG8gRU5GT1JDRUQgb3IgTk9UCiAgKiBFTkZP UkNFRCwgaXQgY3JlYXRlcyBvciBkcm9wcyB0aGUgdHJpZ2dlciBhY2NvcmRpbmdseS4KQEAgLTEy NDAxLDE0ICsxMjU2MSwxNCBAQCBBVEV4ZWNBbHRlckNvbnN0cmFpbnRJbnRlcm5hbChMaXN0ICoq d3F1ZXVlLCBBVEFsdGVyQ29uc3RyYWludCAqY21kY29uLAogICogZW5mb3JjZWQsIGFzIGRlc2Nl bmRhbnQgY29uc3RyYWludHMgY2Fubm90IGJlIGRpZmZlcmVudCBpbiB0aGF0IGNhc2UuCiAgKi8K IHN0YXRpYyBib29sCi1BVEV4ZWNBbHRlckNvbnN0ckVuZm9yY2VhYmlsaXR5KExpc3QgKip3cXVl dWUsIEFUQWx0ZXJDb25zdHJhaW50ICpjbWRjb24sCi0JCQkJCQkJCVJlbGF0aW9uIGNvbnJlbCwg UmVsYXRpb24gdGdyZWwsCi0JCQkJCQkJCU9pZCBma3JlbGlkLCBPaWQgcGtyZWxpZCwKLQkJCQkJ CQkJSGVhcFR1cGxlIGNvbnR1cGxlLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCQkJT2lkIFJl ZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAotCQkJCQkJCQlPaWQgUmVmZXJlbmNlZFBhcmVudFVw ZFRyaWdnZXIsCi0JCQkJCQkJCU9pZCBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCi0JCQkJ CQkJCU9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpCitBVEV4ZWNBbHRlckZLQ29uc3Ry RW5mb3JjZWFiaWxpdHkoTGlzdCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwK KwkJCQkJCQkJICBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9uIHRncmVsLAorCQkJCQkJCQkgIE9p ZCBma3JlbGlkLCBPaWQgcGtyZWxpZCwKKwkJCQkJCQkJICBIZWFwVHVwbGUgY29udHVwbGUsIExP Q0tNT0RFIGxvY2ttb2RlLAorCQkJCQkJCQkgIE9pZCBSZWZlcmVuY2VkUGFyZW50RGVsVHJpZ2dl ciwKKwkJCQkJCQkJICBPaWQgUmVmZXJlbmNlZFBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCSAg T2lkIFJlZmVyZW5jaW5nUGFyZW50SW5zVHJpZ2dlciwKKwkJCQkJCQkJICBPaWQgUmVmZXJlbmNp bmdQYXJlbnRVcGRUcmlnZ2VyKQogewogCUZvcm1fcGdfY29uc3RyYWludCBjdXJyY29uOwogCU9p ZAkJCWNvbm9pZDsKQEAgLTEyNDQ0LDcgKzEyNjA0LDcgQEAgQVRFeGVjQWx0ZXJDb25zdHJFbmZv cmNlYWJpbGl0eShMaXN0ICoqd3F1ZXVlLCBBVEFsdGVyQ29uc3RyYWludCAqY21kY29uLAogCQkg Ki8KIAkJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEUgfHwKIAkJCWdldF9yZWxfcmVsa2luZChjdXJyY29uLT5jb25mcmVsaWQpID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpCi0JCQlBbHRlckNvbnN0ckVuZm9yY2VhYmlsaXR5UmVjdXJzZSh3 cXVldWUsIGNtZGNvbiwgY29ucmVsLCB0Z3JlbCwKKwkJCUFsdGVyRktDb25zdHJFbmZvcmNlYWJp bGl0eVJlY3Vyc2Uod3F1ZXVlLCBjbWRjb24sIGNvbnJlbCwgdGdyZWwsCiAJCQkJCQkJCQkJCSBm a3JlbGlkLCBwa3JlbGlkLCBjb250dXBsZSwKIAkJCQkJCQkJCQkJIGxvY2ttb2RlLCBJbnZhbGlk T2lkLCBJbnZhbGlkT2lkLAogCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCk7CkBA IC0xMjUyMyw3ICsxMjY4Myw3IEBAIEFURXhlY0FsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHkoTGlz dCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKIAkJICovCiAJCWlmIChyZWwt PnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CiAJCQlnZXRf cmVsX3JlbGtpbmQoY3VycmNvbi0+Y29uZnJlbGlkKSA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQotCQkJQWx0ZXJDb25zdHJFbmZvcmNlYWJpbGl0eVJlY3Vyc2Uod3F1ZXVlLCBjbWRjb24s IGNvbnJlbCwgdGdyZWwsCisJCQlBbHRlckZLQ29uc3RyRW5mb3JjZWFiaWxpdHlSZWN1cnNlKHdx dWV1ZSwgY21kY29uLCBjb25yZWwsIHRncmVsLAogCQkJCQkJCQkJCQkgZmtyZWxpZCwgcGtyZWxp ZCwgY29udHVwbGUsCiAJCQkJCQkJCQkJCSBsb2NrbW9kZSwgUmVmZXJlbmNlZERlbFRyaWdnZXJP aWQsCiAJCQkJCQkJCQkJCSBSZWZlcmVuY2VkVXBkVHJpZ2dlck9pZCwKQEAgLTEyNzQxLDcgKzEy OTAxLDcgQEAgQWx0ZXJDb25zdHJUcmlnZ2VyRGVmZXJyYWJpbGl0eShPaWQgY29ub2lkLCBSZWxh dGlvbiB0Z3JlbCwgUmVsYXRpb24gcmVsLAogfQogCiAvKgotICogSW52b2tlcyBBVEV4ZWNBbHRl ckNvbnN0ckVuZm9yY2VhYmlsaXR5IGZvciBlYWNoIGNvbnN0cmFpbnQgdGhhdCBpcyBhIGNoaWxk IG9mCisgKiBJbnZva2VzIEFURXhlY0FsdGVyRktDb25zdHJFbmZvcmNlYWJpbGl0eSBmb3IgZWFj aCBjb25zdHJhaW50IHRoYXQgaXMgYSBjaGlsZCBvZgogICogdGhlIHNwZWNpZmllZCBjb25zdHJh aW50LgogICoKICAqIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgaGFuZGxlIHJlY3Vyc2lvbiB0aGUg bm9ybWFsIHdheSwgdml6LiBieSBzY2FubmluZyB0aGUKQEAgLTEyNzQ5LDE3ICsxMjkwOSwxNyBA QCBBbHRlckNvbnN0clRyaWdnZXJEZWZlcnJhYmlsaXR5KE9pZCBjb25vaWQsIFJlbGF0aW9uIHRn cmVsLCBSZWxhdGlvbiByZWwsCiAgKiByZWxhdGlvbnNoaXBzLiAgVGhpcyBtYXkgbmVlZCB0byBi ZSByZWNvbnNpZGVyZWQuCiAgKgogICogVGhlIGFyZ3VtZW50cyB0byB0aGlzIGZ1bmN0aW9uIGhh dmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgYXJndW1lbnRzIHRvCi0gKiBBVEV4ZWNBbHRlckNv bnN0ckVuZm9yY2VhYmlsaXR5LgorICogQVRFeGVjQWx0ZXJGS0NvbnN0ckVuZm9yY2VhYmlsaXR5 LgogICovCiBzdGF0aWMgdm9pZAotQWx0ZXJDb25zdHJFbmZvcmNlYWJpbGl0eVJlY3Vyc2UoTGlz dCAqKndxdWV1ZSwgQVRBbHRlckNvbnN0cmFpbnQgKmNtZGNvbiwKLQkJCQkJCQkJIFJlbGF0aW9u IGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCi0JCQkJCQkJCSBPaWQgZmtyZWxpZCwgT2lkIHBrcmVs aWQsCi0JCQkJCQkJCSBIZWFwVHVwbGUgY29udHVwbGUsIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJ CQkJCQkgT2lkIFJlZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAotCQkJCQkJCQkgT2lkIFJlZmVy ZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAotCQkJCQkJCQkgT2lkIFJlZmVyZW5jaW5nUGFyZW50SW5z VHJpZ2dlciwKLQkJCQkJCQkJIE9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpCitBbHRl ckZLQ29uc3RyRW5mb3JjZWFiaWxpdHlSZWN1cnNlKExpc3QgKip3cXVldWUsIEFUQWx0ZXJDb25z dHJhaW50ICpjbWRjb24sCisJCQkJCQkJCSAgIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdy ZWwsCisJCQkJCQkJCSAgIE9pZCBma3JlbGlkLCBPaWQgcGtyZWxpZCwKKwkJCQkJCQkJICAgSGVh cFR1cGxlIGNvbnR1cGxlLCBMT0NLTU9ERSBsb2NrbW9kZSwKKwkJCQkJCQkJICAgT2lkIFJlZmVy ZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAorCQkJCQkJCQkgICBPaWQgUmVmZXJlbmNlZFBhcmVudFVw ZFRyaWdnZXIsCisJCQkJCQkJCSAgIE9pZCBSZWZlcmVuY2luZ1BhcmVudEluc1RyaWdnZXIsCisJ CQkJCQkJCSAgIE9pZCBSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpCiB7CiAJRm9ybV9wZ19j b25zdHJhaW50IGN1cnJjb247CiAJT2lkCQkJY29ub2lkOwpAQCAtMTI3NzksMTIgKzEyOTM5LDEy IEBAIEFsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHlSZWN1cnNlKExpc3QgKip3cXVldWUsIEFUQWx0 ZXJDb25zdHJhaW50ICpjbWRjb24sCiAJCQkJCQkJICAgdHJ1ZSwgTlVMTCwgMSwgJnBrZXkpOwog CiAJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQoY2hpbGR0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHBz Y2FuKSkpCi0JCUFURXhlY0FsdGVyQ29uc3RyRW5mb3JjZWFiaWxpdHkod3F1ZXVlLCBjbWRjb24s IGNvbnJlbCwgdGdyZWwsIGZrcmVsaWQsCi0JCQkJCQkJCQkJcGtyZWxpZCwgY2hpbGR0dXAsIGxv Y2ttb2RlLAotCQkJCQkJCQkJCVJlZmVyZW5jZWRQYXJlbnREZWxUcmlnZ2VyLAotCQkJCQkJCQkJ CVJlZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAotCQkJCQkJCQkJCVJlZmVyZW5jaW5nUGFyZW50 SW5zVHJpZ2dlciwKLQkJCQkJCQkJCQlSZWZlcmVuY2luZ1BhcmVudFVwZFRyaWdnZXIpOworCQlB VEV4ZWNBbHRlckZLQ29uc3RyRW5mb3JjZWFiaWxpdHkod3F1ZXVlLCBjbWRjb24sIGNvbnJlbCwg dGdyZWwsIGZrcmVsaWQsCisJCQkJCQkJCQkJICBwa3JlbGlkLCBjaGlsZHR1cCwgbG9ja21vZGUs CisJCQkJCQkJCQkJICBSZWZlcmVuY2VkUGFyZW50RGVsVHJpZ2dlciwKKwkJCQkJCQkJCQkgIFJl ZmVyZW5jZWRQYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJCQkJCSAgUmVmZXJlbmNpbmdQYXJlbnRJ bnNUcmlnZ2VyLAorCQkJCQkJCQkJCSAgUmVmZXJlbmNpbmdQYXJlbnRVcGRUcmlnZ2VyKTsKIAog CXN5c3RhYmxlX2VuZHNjYW4ocHNjYW4pOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9jb25zdHJhaW50cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv bnN0cmFpbnRzLm91dAppbmRleCAxYmJmNTljY2EwMi4uMWQyMDZiODUxMmYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29uc3RyYWludHMub3V0CkBAIC0zOTAsNiArMzkwLDgzIEBAIFNF TEVDVCAqIEZST00gQ09QWV9UQkw7CiAgNiB8IE9LICAgICAgICAgICAgfCA0CiAoMiByb3dzKQog CistLQorLS0gQ0hFQ0sgY29uc3RyYWludHMKKy0tIEFMVEVSIFRBQkxFIEFMVEVSIENPTlNUUkFJ TlQgW05PVF0gRU5GT1JDRUQKK2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY2goCisgIGEgaW50LCBiIGlu dCwKKyAgY29uc3RyYWludCBjYyBjaGVjayAoYSA+IDEwKSBub3QgZW5mb3JjZWQsCisgIGNvbnN0 cmFpbnQgY2NfMSBjaGVjayAoYiA8IDE3KSBub3QgZW5mb3JjZWQKKykgcGFydGl0aW9uIGJ5IHJh bmdlKGEpOworY3JlYXRlIHRhYmxlIHBhcnRlZF9jaF8xIHBhcnRpdGlvbiBvZiBwYXJ0ZWRfY2gg Zm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSBsaXN0KGIpOworY3JlYXRl IHRhYmxlIHBhcnRlZF9jaF8xMSBwYXJ0aXRpb24gb2YgcGFydGVkX2NoXzEgZm9yIHZhbHVlcyBp biAoMCwgMSwgMjIsNCk7CitjcmVhdGUgdGFibGUgcGFydGVkX2NoXzEyIHBhcnRpdGlvbiBvZiBw YXJ0ZWRfY2hfMSBmb3IgdmFsdWVzIGluICgyKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY2hfMihi IGludCwgYSBpbnQsCisgIGNvbnN0cmFpbnQgY2MgY2hlY2sgKGEgPiAxMCkgbm90IGVuZm9yY2Vk LAorICBjb25zdHJhaW50IGNjXzEgY2hlY2sgKGIgPCAxNykgZW5mb3JjZWQsCisgIGNvbnN0cmFp bnQgY2NfMiBjaGVjayggYSA8IDE1KSBub3QgZW5mb3JjZWQKKyk7CithbHRlciB0YWJsZSBwYXJ0 ZWRfY2ggYXR0YWNoIHBhcnRpdGlvbiBwYXJ0ZWRfY2hfMiBmb3IgdmFsdWVzIGZyb20gKDEwKSB0 byAoMjApOworaW5zZXJ0IGludG8gcGFydGVkX2NoIHZhbHVlcyAoMSwgMjIpLCAoOSwgMSksICgx NiwgMTYpOworYWx0ZXIgdGFibGUgcGFydGVkX2NoIGFsdGVyIGNvbnN0cmFpbnQgY2NfMSBlbmZv cmNlZDsgLS1lcnJvcgorRVJST1I6ICBjaGVjayBjb25zdHJhaW50ICJjY18xIiBvZiByZWxhdGlv biAicGFydGVkX2NoXzExIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdwordXBkYXRlIHBhcnRlZF9j aCBzZXQgYiA9IDQgd2hlcmUgYiA9IDIyOworYWx0ZXIgdGFibGUgcGFydGVkX2NoIGFsdGVyIGNv bnN0cmFpbnQgY2NfMSBlbmZvcmNlZDsgLS1vaworY3JlYXRlIG9yIHJlcGxhY2UgdmlldyBjaGVj a19jb25zdHJhaW50X3N0YXR1cyBhcworc2VsZWN0ICBjb25uYW1lLCBjb25yZWxpZDo6cmVnY2xh c3MsIGNvbmVuZm9yY2VkLCBjb252YWxpZGF0ZWQKK2Zyb20gICAgcGdfY29uc3RyYWludAord2hl cmUgICBjb25yZWxpZDo6cmVnY2xhc3M6OnRleHQgfiogJ15wYXJ0ZWRfY2gnIGFuZCBjb250eXBl ID0gJ2MnCitvcmRlciBieSBjb25uYW1lLCBjb25yZWxpZDo6cmVnY2xhc3M6OnRleHQgY29sbGF0 ZSAiQyI7CithbHRlciB0YWJsZSBwYXJ0ZWRfY2ggYWx0ZXIgY29uc3RyYWludCBjYyBub3QgZW5m b3JjZWQ7IC0tbm8tb3AKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaCBhbHRlciBjb25zdHJhaW50IGNj IGVuZm9yY2VkOyAtLWVycm9yCitFUlJPUjogIGNoZWNrIGNvbnN0cmFpbnQgImNjIiBvZiByZWxh dGlvbiAicGFydGVkX2NoXzExIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdworZGVsZXRlIGZyb20g cGFydGVkX2NoIHdoZXJlIGEgPSAxOworYWx0ZXIgdGFibGUgcGFydGVkX2NoIGFsdGVyIGNvbnN0 cmFpbnQgY2MgZW5mb3JjZWQ7IC0tZXJyb3IKK0VSUk9SOiAgY2hlY2sgY29uc3RyYWludCAiY2Mi IG9mIHJlbGF0aW9uICJwYXJ0ZWRfY2hfMTEiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93CitkZWxl dGUgZnJvbSBwYXJ0ZWRfY2ggd2hlcmUgYSA9IDk7CithbHRlciB0YWJsZSBwYXJ0ZWRfY2ggYWx0 ZXIgY29uc3RyYWludCBjYyBlbmZvcmNlZDsKKy0tY2hlY2sgdGhlc2UgQ0hFQ0sgY29uc3RyYWlu dCBzdGF0dXMKK3NlbGVjdCAqIGZyb20gY2hlY2tfY29uc3RyYWludF9zdGF0dXM7CisgY29ubmFt ZSB8ICAgY29ucmVsaWQgICB8IGNvbmVuZm9yY2VkIHwgY29udmFsaWRhdGVkIAorLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBjYyAgICAgIHwg cGFydGVkX2NoICAgIHwgdCAgICAgICAgICAgfCB0CisgY2MgICAgICB8IHBhcnRlZF9jaF8xICB8 IHQgICAgICAgICAgIHwgdAorIGNjICAgICAgfCBwYXJ0ZWRfY2hfMTEgfCB0ICAgICAgICAgICB8 IHQKKyBjYyAgICAgIHwgcGFydGVkX2NoXzEyIHwgdCAgICAgICAgICAgfCB0CisgY2MgICAgICB8 IHBhcnRlZF9jaF8yICB8IHQgICAgICAgICAgIHwgdAorIGNjXzEgICAgfCBwYXJ0ZWRfY2ggICAg fCB0ICAgICAgICAgICB8IHQKKyBjY18xICAgIHwgcGFydGVkX2NoXzEgIHwgdCAgICAgICAgICAg fCB0CisgY2NfMSAgICB8IHBhcnRlZF9jaF8xMSB8IHQgICAgICAgICAgIHwgdAorIGNjXzEgICAg fCBwYXJ0ZWRfY2hfMTIgfCB0ICAgICAgICAgICB8IHQKKyBjY18xICAgIHwgcGFydGVkX2NoXzIg IHwgdCAgICAgICAgICAgfCB0CisgY2NfMiAgICB8IHBhcnRlZF9jaF8yICB8IGYgICAgICAgICAg IHwgZgorKDExIHJvd3MpCisKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF8yIGFsdGVyIGNvbnN0cmFp bnQgY2NfMiBlbmZvcmNlZDsgLS1lcnJvcgorRVJST1I6ICBjaGVjayBjb25zdHJhaW50ICJjY18y IiBvZiByZWxhdGlvbiAicGFydGVkX2NoXzIiIGlzIHZpb2xhdGVkIGJ5IHNvbWUgcm93CitkZWxl dGUgZnJvbSBwYXJ0ZWRfY2ggd2hlcmUgYSA9IDE2OworYWx0ZXIgdGFibGUgcGFydGVkX2NoXzIg YWx0ZXIgY29uc3RyYWludCBjY18yIGVuZm9yY2VkOworYWx0ZXIgdGFibGUgcGFydGVkX2NoXzIg YWx0ZXIgY29uc3RyYWludCBjYyBub3QgZW5mb3JjZWQ7CithbHRlciB0YWJsZSBwYXJ0ZWRfY2hf MiBhbHRlciBjb25zdHJhaW50IGNjXzEgbm90IGVuZm9yY2VkOworYWx0ZXIgdGFibGUgcGFydGVk X2NoXzIgYWx0ZXIgY29uc3RyYWludCBjY18yIG5vdCBlbmZvcmNlZDsKKy0tY2hlY2sgdGhlc2Ug Q0hFQ0sgY29uc3RyYWludCBzdGF0dXMgYWdhaW4KK3NlbGVjdCAqIGZyb20gY2hlY2tfY29uc3Ry YWludF9zdGF0dXM7CisgY29ubmFtZSB8ICAgY29ucmVsaWQgICB8IGNvbmVuZm9yY2VkIHwgY29u dmFsaWRhdGVkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0KKyBjYyAgICAgIHwgcGFydGVkX2NoICAgIHwgdCAgICAgICAgICAgfCB0CisgY2Mg ICAgICB8IHBhcnRlZF9jaF8xICB8IHQgICAgICAgICAgIHwgdAorIGNjICAgICAgfCBwYXJ0ZWRf Y2hfMTEgfCB0ICAgICAgICAgICB8IHQKKyBjYyAgICAgIHwgcGFydGVkX2NoXzEyIHwgdCAgICAg ICAgICAgfCB0CisgY2MgICAgICB8IHBhcnRlZF9jaF8yICB8IGYgICAgICAgICAgIHwgZgorIGNj XzEgICAgfCBwYXJ0ZWRfY2ggICAgfCB0ICAgICAgICAgICB8IHQKKyBjY18xICAgIHwgcGFydGVk X2NoXzEgIHwgdCAgICAgICAgICAgfCB0CisgY2NfMSAgICB8IHBhcnRlZF9jaF8xMSB8IHQgICAg ICAgICAgIHwgdAorIGNjXzEgICAgfCBwYXJ0ZWRfY2hfMTIgfCB0ICAgICAgICAgICB8IHQKKyBj Y18xICAgIHwgcGFydGVkX2NoXzIgIHwgZiAgICAgICAgICAgfCBmCisgY2NfMiAgICB8IHBhcnRl ZF9jaF8yICB8IGYgICAgICAgICAgIHwgZgorKDExIHJvd3MpCisKK2Ryb3AgdGFibGUgcGFydGVk X2NoOwogLS0KIC0tIFByaW1hcnkga2V5cwogLS0KQEAgLTc0Niw4ICs4MjMsMTAgQEAgTElORSAx OiBDUkVBVEUgVEFCTEUgVU5JUVVFX05PVEVOX1RCTChpIGludCBVTklRVUUgTk9UIEVORk9SQ0VE KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K IEFMVEVSIFRBQkxFIHVuaXF1ZV90YmwgQUxURVIgQ09OU1RSQUlOVCB1bmlxdWVfdGJsX2lfa2V5 IEVORk9SQ0VEOwogRVJST1I6ICBjYW5ub3QgYWx0ZXIgZW5mb3JjZWFiaWxpdHkgb2YgY29uc3Ry YWludCAidW5pcXVlX3RibF9pX2tleSIgb2YgcmVsYXRpb24gInVuaXF1ZV90YmwiCitISU5UOiAg T25seSBmb3JlaWduIGtleSBhbmQgY2hlY2sgY29uc3RyYWludHMgY2FuIGNoYW5nZSBlbmZvcmNl YWJpbGl0eQogQUxURVIgVEFCTEUgdW5pcXVlX3RibCBBTFRFUiBDT05TVFJBSU5UIHVuaXF1ZV90 YmxfaV9rZXkgTk9UIEVORk9SQ0VEOwogRVJST1I6ICBjYW5ub3QgYWx0ZXIgZW5mb3JjZWFiaWxp dHkgb2YgY29uc3RyYWludCAidW5pcXVlX3RibF9pX2tleSIgb2YgcmVsYXRpb24gInVuaXF1ZV90 YmwiCitISU5UOiAgT25seSBmb3JlaWduIGtleSBhbmQgY2hlY2sgY29uc3RyYWludHMgY2FuIGNo YW5nZSBlbmZvcmNlYWJpbGl0eQogLS0gY2FuJ3QgbWFrZSBhbiBleGlzdGluZyBjb25zdHJhaW50 IE5PVCBWQUxJRAogQUxURVIgVEFCTEUgdW5pcXVlX3RibCBBTFRFUiBDT05TVFJBSU5UIHVuaXF1 ZV90YmxfaV9rZXkgTk9UIFZBTElEOwogRVJST1I6ICBjb25zdHJhaW50cyBjYW5ub3QgYmUgYWx0 ZXJlZCB0byBiZSBOT1QgVkFMSUQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvaW5oZXJpdC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luaGVyaXQub3V0Cmlu ZGV4IDA0OTBhNzQ2NTU1Li4zNmY4MWYzOTI2NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9pbmhlcml0Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu aGVyaXQub3V0CkBAIC0xNDIxLDExICsxNDIxLDU0IEBAIG9yZGVyIGJ5IDEsIDI7CiAgcDFfYzMg ICB8IGluaF9jaGVja19jb25zdHJhaW50OSAgfCBmICAgICAgICAgIHwgICAgICAgICAgIDIgfCB0 ICAgICAgICAgICB8IHQKICgzOCByb3dzKQogCistLQorLS0gQ0hFQ0sgY29uc3RyYWludHMKKy0t IEFMVEVSIFRBQkxFIEFMVEVSIENPTlNUUkFJTlQgW05PVF0gRU5GT1JDRUQKK2FsdGVyIHRhYmxl IHAxIGRyb3AgY29uc3RyYWludCBpbmhfY2hlY2tfY29uc3RyYWludDE7CithbHRlciB0YWJsZSBw MV9jMSBkcm9wIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQxOworYWx0ZXIgdGFibGUg b25seSBwMSBhbHRlciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MyBlbmZvcmNlZDsg LS1lcnJvcgorRVJST1I6ICBjb25zdHJhaW50IG11c3QgYmUgYWx0ZXJlZCBvbiBjaGlsZCB0YWJs ZXMgdG9vCitISU5UOiAgRG8gbm90IHNwZWNpZnkgdGhlIE9OTFkga2V5d29yZC4KK2FsdGVyIHRh YmxlIG9ubHkgcDEgYWx0ZXIgY29uc3RyYWludCBpbmhfY2hlY2tfY29uc3RyYWludDMgbm90IGVu Zm9yY2VkOyAtLWVycm9yCitFUlJPUjogIGNvbnN0cmFpbnQgbXVzdCBiZSBhbHRlcmVkIG9uIGNo aWxkIHRhYmxlcyB0b28KK0hJTlQ6ICBEbyBub3Qgc3BlY2lmeSB0aGUgT05MWSBrZXl3b3JkLgor aW5zZXJ0IGludG8gcDFfYzEgdmFsdWVzKC0yKTsKK2luc2VydCBpbnRvIHAxX2MzIHZhbHVlcygt Myk7CithbHRlciB0YWJsZSBwMSBhbHRlciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50 MyBlbmZvcmNlZDsgLS1lcnJvcgorRVJST1I6ICBjaGVjayBjb25zdHJhaW50ICJpbmhfY2hlY2tf Y29uc3RyYWludDMiIG9mIHJlbGF0aW9uICJwMV9jMSIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3cK K2RlbGV0ZSBmcm9tIG9ubHkgcDFfYzEgd2hlcmUgZjEgPSAtMjsKK2FsdGVyIHRhYmxlIHAxX2Mx IGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIGVuZm9yY2VkOyAtLWVycm9y CitFUlJPUjogIGNoZWNrIGNvbnN0cmFpbnQgImluaF9jaGVja19jb25zdHJhaW50MyIgb2YgcmVs YXRpb24gInAxX2MzIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdworZGVsZXRlIGZyb20gb25seSBw MV9jMyB3aGVyZSBmMSA9IC0zOworYWx0ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWludCBpbmhf Y2hlY2tfY29uc3RyYWludDMgZW5mb3JjZWQ7IC0tb2sKK2FsdGVyIHRhYmxlIHAxIGFsdGVyIGNv bnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIG5vdCBlbmZvcmNlZDsgLS1vaworc2VsZWN0 ICBjb25uYW1lLCBjb25lbmZvcmNlZCwgY29udmFsaWRhdGVkLCBjb25yZWxpZDo6cmVnY2xhc3MK K2Zyb20gICAgcGdfY29uc3RyYWludAord2hlcmUgICBjb25uYW1lID0gJ2luaF9jaGVja19jb25z dHJhaW50MycgYW5kIGNvbnR5cGUgPSAnYycKK29yZGVyIGJ5IGNvbnJlbGlkOjpyZWdjbGFzczo6 dGV4dCBjb2xsYXRlICJDIjsKKyAgICAgICAgY29ubmFtZSAgICAgICAgfCBjb25lbmZvcmNlZCB8 IGNvbnZhbGlkYXRlZCB8IGNvbnJlbGlkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgaW5oX2NoZWNrX2NvbnN0cmFpbnQz IHwgZiAgICAgICAgICAgfCBmICAgICAgICAgICAgfCBwMQorIGluaF9jaGVja19jb25zdHJhaW50 MyB8IGYgICAgICAgICAgIHwgZiAgICAgICAgICAgIHwgcDFfYzEKKyBpbmhfY2hlY2tfY29uc3Ry YWludDMgfCBmICAgICAgICAgICB8IGYgICAgICAgICAgICB8IHAxX2MyCisgaW5oX2NoZWNrX2Nv bnN0cmFpbnQzIHwgZiAgICAgICAgICAgfCBmICAgICAgICAgICAgfCBwMV9jMworKDQgcm93cykK KwogZHJvcCB0YWJsZSBwMSBjYXNjYWRlOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAzIG90 aGVyIG9iamVjdHMKIERFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgcDFfYzEKIGRyb3Ag Y2FzY2FkZXMgdG8gdGFibGUgcDFfYzIKIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgcDFfYzMKKy0t Zm9yICJubyBpbmhlcml0IiBjaGVjayBjb25zdHJhaW50LCBpdCB3aWxsIG5vdCByZWN1cnNlIHRv IGNoaWxkIHRhYmxlCitjcmVhdGUgdGFibGUgcDEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVj ayBjaGVjayAoZjEgPiAwKSBubyBpbmhlcml0IG5vdCBlbmZvcmNlZCk7CitjcmVhdGUgdGFibGUg cDFfYzEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVjayBjaGVjayAoZjEgPiAwKSBub3QgZW5m b3JjZWQpOworYWx0ZXIgdGFibGUgcDFfYzEgaW5oZXJpdCBwMTsKK2luc2VydCBpbnRvIHAxX2Mx IHZhbHVlcygtMTEpOworYWx0ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWludCBwMV9hX2NoZWNr IGVuZm9yY2VkOyAtLW9rCithbHRlciB0YWJsZSBwMV9jMSBhbHRlciBjb25zdHJhaW50IHAxX2Ff Y2hlY2sgZW5mb3JjZWQ7IC0tZXJyb3IKK0VSUk9SOiAgY2hlY2sgY29uc3RyYWludCAicDFfYV9j aGVjayIgb2YgcmVsYXRpb24gInAxX2MxIiBpcyB2aW9sYXRlZCBieSBzb21lIHJvdworZHJvcCB0 YWJsZSBwMSBjYXNjYWRlOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBwMV9jMQog LS0KIC0tIFNpbWlsYXJseSwgY2hlY2sgdGhlIG1lcmdpbmcgb2YgZXhpc3RpbmcgY29uc3RyYWlu dHM7IGEgcGFyZW50IGNvbnN0cmFpbnQKIC0tIG1hcmtlZCBhcyBOT1QgRU5GT1JDRUQgY2FuIG1l cmdlIHdpdGggYW4gRU5GT1JDRUQgY2hpbGQgY29uc3RyYWludCwgYnV0IHRoZQpAQCAtMTQzNCw2 ICsxNDc3LDI1IEBAIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgcDFfYzMKIGNyZWF0ZSB0YWJsZSBw MShmMSBpbnQgY29uc3RyYWludCBwMV9hX2NoZWNrIGNoZWNrIChmMSA+IDApIG5vdCBlbmZvcmNl ZCk7CiBjcmVhdGUgdGFibGUgcDFfYzEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVjayBjaGVj ayAoZjEgPiAwKSBlbmZvcmNlZCk7CiBhbHRlciB0YWJsZSBwMV9jMSBpbmhlcml0IHAxOworaW5z ZXJ0IGludG8gcDEgdmFsdWVzKC0xKTsgLS1vaworaW5zZXJ0IGludG8gcDFfYzEgdmFsdWVzKC0x KTsgLS1lcnJvcgorRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAicDFfYzEiIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgInAxX2FfY2hlY2siCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250 YWlucyAoLTEpLgorYWx0ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWludCBwMV9hX2NoZWNrIGVu Zm9yY2VkOyAtLWVycm9yCitFUlJPUjogIGNoZWNrIGNvbnN0cmFpbnQgInAxX2FfY2hlY2siIG9m IHJlbGF0aW9uICJwMSIgaXMgdmlvbGF0ZWQgYnkgc29tZSByb3cKK3RydW5jYXRlIHAxOworYWx0 ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWludCBwMV9hX2NoZWNrIGVuZm9yY2VkOyAtLW9rCith bHRlciB0YWJsZSBwMSBhbHRlciBjb25zdHJhaW50IHAxX2FfY2hlY2sgbm90IGVuZm9yY2VkOyAt LW9rCitzZWxlY3QgIGNvbm5hbWUsIGNvbmVuZm9yY2VkLCBjb252YWxpZGF0ZWQsIGNvbnJlbGlk OjpyZWdjbGFzcworZnJvbSAgICBwZ19jb25zdHJhaW50Cit3aGVyZSAgIGNvbm5hbWUgPSAncDFf YV9jaGVjaycgYW5kIGNvbnR5cGUgPSAnYycKK29yZGVyIGJ5IGNvbnJlbGlkOjpyZWdjbGFzczo6 dGV4dCBjb2xsYXRlICJDIjsKKyAgY29ubmFtZSAgIHwgY29uZW5mb3JjZWQgfCBjb252YWxpZGF0 ZWQgfCBjb25yZWxpZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyBwMV9hX2NoZWNrIHwgZiAgICAgICAgICAgfCBmICAgICAgICAgICAgfCBw MQorIHAxX2FfY2hlY2sgfCBmICAgICAgICAgICB8IGYgICAgICAgICAgICB8IHAxX2MxCisoMiBy b3dzKQorCiBkcm9wIHRhYmxlIHAxIGNhc2NhZGU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IHRhYmxlIHAxX2MxCiBjcmVhdGUgdGFibGUgcDEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVj ayBjaGVjayAoZjEgPiAwKSBlbmZvcmNlZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9jb25zdHJhaW50cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5z cWwKaW5kZXggNzMzYTFkYmNjZmUuLjUxNGVmNGIyYTUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29u c3RyYWludHMuc3FsCkBAIC0yNjYsNiArMjY2LDU3IEBAIENPUFkgQ09QWV9UQkwgRlJPTSA6J2Zp bGVuYW1lJzsKIAogU0VMRUNUICogRlJPTSBDT1BZX1RCTDsKIAorLS0KKy0tIENIRUNLIGNvbnN0 cmFpbnRzCistLSBBTFRFUiBUQUJMRSBBTFRFUiBDT05TVFJBSU5UIFtOT1RdIEVORk9SQ0VECitj cmVhdGUgdGFibGUgcGFydGVkX2NoKAorICBhIGludCwgYiBpbnQsCisgIGNvbnN0cmFpbnQgY2Mg Y2hlY2sgKGEgPiAxMCkgbm90IGVuZm9yY2VkLAorICBjb25zdHJhaW50IGNjXzEgY2hlY2sgKGIg PCAxNykgbm90IGVuZm9yY2VkCispIHBhcnRpdGlvbiBieSByYW5nZShhKTsKK2NyZWF0ZSB0YWJs ZSBwYXJ0ZWRfY2hfMSBwYXJ0aXRpb24gb2YgcGFydGVkX2NoIGZvciB2YWx1ZXMgZnJvbSAoMCkg dG8gKDEwKSBwYXJ0aXRpb24gYnkgbGlzdChiKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0ZWRfY2hfMTEg cGFydGl0aW9uIG9mIHBhcnRlZF9jaF8xIGZvciB2YWx1ZXMgaW4gKDAsIDEsIDIyLDQpOworY3Jl YXRlIHRhYmxlIHBhcnRlZF9jaF8xMiBwYXJ0aXRpb24gb2YgcGFydGVkX2NoXzEgZm9yIHZhbHVl cyBpbiAoMik7CitjcmVhdGUgdGFibGUgcGFydGVkX2NoXzIoYiBpbnQsIGEgaW50LAorICBjb25z dHJhaW50IGNjIGNoZWNrIChhID4gMTApIG5vdCBlbmZvcmNlZCwKKyAgY29uc3RyYWludCBjY18x IGNoZWNrIChiIDwgMTcpIGVuZm9yY2VkLAorICBjb25zdHJhaW50IGNjXzIgY2hlY2soIGEgPCAx NSkgbm90IGVuZm9yY2VkCispOworYWx0ZXIgdGFibGUgcGFydGVkX2NoIGF0dGFjaCBwYXJ0aXRp b24gcGFydGVkX2NoXzIgZm9yIHZhbHVlcyBmcm9tICgxMCkgdG8gKDIwKTsKKworaW5zZXJ0IGlu dG8gcGFydGVkX2NoIHZhbHVlcyAoMSwgMjIpLCAoOSwgMSksICgxNiwgMTYpOworCithbHRlciB0 YWJsZSBwYXJ0ZWRfY2ggYWx0ZXIgY29uc3RyYWludCBjY18xIGVuZm9yY2VkOyAtLWVycm9yCit1 cGRhdGUgcGFydGVkX2NoIHNldCBiID0gNCB3aGVyZSBiID0gMjI7CithbHRlciB0YWJsZSBwYXJ0 ZWRfY2ggYWx0ZXIgY29uc3RyYWludCBjY18xIGVuZm9yY2VkOyAtLW9rCisKK2NyZWF0ZSBvciBy ZXBsYWNlIHZpZXcgY2hlY2tfY29uc3RyYWludF9zdGF0dXMgYXMKK3NlbGVjdCAgY29ubmFtZSwg Y29ucmVsaWQ6OnJlZ2NsYXNzLCBjb25lbmZvcmNlZCwgY29udmFsaWRhdGVkCitmcm9tICAgIHBn X2NvbnN0cmFpbnQKK3doZXJlICAgY29ucmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IH4qICdecGFydGVk X2NoJyBhbmQgY29udHlwZSA9ICdjJworb3JkZXIgYnkgY29ubmFtZSwgY29ucmVsaWQ6OnJlZ2Ns YXNzOjp0ZXh0IGNvbGxhdGUgIkMiOworCithbHRlciB0YWJsZSBwYXJ0ZWRfY2ggYWx0ZXIgY29u c3RyYWludCBjYyBub3QgZW5mb3JjZWQ7IC0tbm8tb3AKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaCBh bHRlciBjb25zdHJhaW50IGNjIGVuZm9yY2VkOyAtLWVycm9yCitkZWxldGUgZnJvbSBwYXJ0ZWRf Y2ggd2hlcmUgYSA9IDE7CithbHRlciB0YWJsZSBwYXJ0ZWRfY2ggYWx0ZXIgY29uc3RyYWludCBj YyBlbmZvcmNlZDsgLS1lcnJvcgorZGVsZXRlIGZyb20gcGFydGVkX2NoIHdoZXJlIGEgPSA5Owor YWx0ZXIgdGFibGUgcGFydGVkX2NoIGFsdGVyIGNvbnN0cmFpbnQgY2MgZW5mb3JjZWQ7CisKKy0t Y2hlY2sgdGhlc2UgQ0hFQ0sgY29uc3RyYWludCBzdGF0dXMKK3NlbGVjdCAqIGZyb20gY2hlY2tf Y29uc3RyYWludF9zdGF0dXM7CisKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF8yIGFsdGVyIGNvbnN0 cmFpbnQgY2NfMiBlbmZvcmNlZDsgLS1lcnJvcgorZGVsZXRlIGZyb20gcGFydGVkX2NoIHdoZXJl IGEgPSAxNjsKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF8yIGFsdGVyIGNvbnN0cmFpbnQgY2NfMiBl bmZvcmNlZDsKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF8yIGFsdGVyIGNvbnN0cmFpbnQgY2Mgbm90 IGVuZm9yY2VkOworYWx0ZXIgdGFibGUgcGFydGVkX2NoXzIgYWx0ZXIgY29uc3RyYWludCBjY18x IG5vdCBlbmZvcmNlZDsKK2FsdGVyIHRhYmxlIHBhcnRlZF9jaF8yIGFsdGVyIGNvbnN0cmFpbnQg Y2NfMiBub3QgZW5mb3JjZWQ7CisKKy0tY2hlY2sgdGhlc2UgQ0hFQ0sgY29uc3RyYWludCBzdGF0 dXMgYWdhaW4KK3NlbGVjdCAqIGZyb20gY2hlY2tfY29uc3RyYWludF9zdGF0dXM7Citkcm9wIHRh YmxlIHBhcnRlZF9jaDsKKwogLS0KIC0tIFByaW1hcnkga2V5cwogLS0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2luaGVyaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5o ZXJpdC5zcWwKaW5kZXggNjk5ZThhYzA5YzguLjhmOTg2OTA0Mzg5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9pbmhlcml0LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bmhlcml0LnNxbApAQCAtNTEwLDYgKzUxMCwzOCBAQCBzZWxlY3QgY29ucmVsaWQ6OnJlZ2NsYXNz Ojp0ZXh0IGFzIHJlbG5hbWUsIGNvbm5hbWUsIGNvbmlzbG9jYWwsIGNvbmluaGNvdW50LCBjbwog ZnJvbSBwZ19jb25zdHJhaW50IHdoZXJlIGNvbm5hbWUgbGlrZSAnaW5oXF9jaGVja1xfY29uc3Ry YWludCUnCiBvcmRlciBieSAxLCAyOwogCistLQorLS0gQ0hFQ0sgY29uc3RyYWludHMKKy0tIEFM VEVSIFRBQkxFIEFMVEVSIENPTlNUUkFJTlQgW05PVF0gRU5GT1JDRUQKK2FsdGVyIHRhYmxlIHAx IGRyb3AgY29uc3RyYWludCBpbmhfY2hlY2tfY29uc3RyYWludDE7CithbHRlciB0YWJsZSBwMV9j MSBkcm9wIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQxOworCithbHRlciB0YWJsZSBv bmx5IHAxIGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIGVuZm9yY2VkOyAt LWVycm9yCithbHRlciB0YWJsZSBvbmx5IHAxIGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2Nv bnN0cmFpbnQzIG5vdCBlbmZvcmNlZDsgLS1lcnJvcgorCitpbnNlcnQgaW50byBwMV9jMSB2YWx1 ZXMoLTIpOworaW5zZXJ0IGludG8gcDFfYzMgdmFsdWVzKC0zKTsKKworYWx0ZXIgdGFibGUgcDEg YWx0ZXIgY29uc3RyYWludCBpbmhfY2hlY2tfY29uc3RyYWludDMgZW5mb3JjZWQ7IC0tZXJyb3IK K2RlbGV0ZSBmcm9tIG9ubHkgcDFfYzEgd2hlcmUgZjEgPSAtMjsKK2FsdGVyIHRhYmxlIHAxX2Mx IGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIGVuZm9yY2VkOyAtLWVycm9y CisKK2RlbGV0ZSBmcm9tIG9ubHkgcDFfYzMgd2hlcmUgZjEgPSAtMzsKK2FsdGVyIHRhYmxlIHAx IGFsdGVyIGNvbnN0cmFpbnQgaW5oX2NoZWNrX2NvbnN0cmFpbnQzIGVuZm9yY2VkOyAtLW9rCith bHRlciB0YWJsZSBwMSBhbHRlciBjb25zdHJhaW50IGluaF9jaGVja19jb25zdHJhaW50MyBub3Qg ZW5mb3JjZWQ7IC0tb2sKK3NlbGVjdCAgY29ubmFtZSwgY29uZW5mb3JjZWQsIGNvbnZhbGlkYXRl ZCwgY29ucmVsaWQ6OnJlZ2NsYXNzCitmcm9tICAgIHBnX2NvbnN0cmFpbnQKK3doZXJlICAgY29u bmFtZSA9ICdpbmhfY2hlY2tfY29uc3RyYWludDMnIGFuZCBjb250eXBlID0gJ2MnCitvcmRlciBi eSBjb25yZWxpZDo6cmVnY2xhc3M6OnRleHQgY29sbGF0ZSAiQyI7Citkcm9wIHRhYmxlIHAxIGNh c2NhZGU7CisKKy0tZm9yICJubyBpbmhlcml0IiBjaGVjayBjb25zdHJhaW50LCBpdCB3aWxsIG5v dCByZWN1cnNlIHRvIGNoaWxkIHRhYmxlCitjcmVhdGUgdGFibGUgcDEoZjEgaW50IGNvbnN0cmFp bnQgcDFfYV9jaGVjayBjaGVjayAoZjEgPiAwKSBubyBpbmhlcml0IG5vdCBlbmZvcmNlZCk7Citj cmVhdGUgdGFibGUgcDFfYzEoZjEgaW50IGNvbnN0cmFpbnQgcDFfYV9jaGVjayBjaGVjayAoZjEg PiAwKSBub3QgZW5mb3JjZWQpOworYWx0ZXIgdGFibGUgcDFfYzEgaW5oZXJpdCBwMTsKK2luc2Vy dCBpbnRvIHAxX2MxIHZhbHVlcygtMTEpOworYWx0ZXIgdGFibGUgcDEgYWx0ZXIgY29uc3RyYWlu dCBwMV9hX2NoZWNrIGVuZm9yY2VkOyAtLW9rCithbHRlciB0YWJsZSBwMV9jMSBhbHRlciBjb25z dHJhaW50IHAxX2FfY2hlY2sgZW5mb3JjZWQ7IC0tZXJyb3IKIGRyb3AgdGFibGUgcDEgY2FzY2Fk ZTsKIAogLS0KQEAgLTUyMCw2ICs1NTIsMTcgQEAgZHJvcCB0YWJsZSBwMSBjYXNjYWRlOwogY3Jl YXRlIHRhYmxlIHAxKGYxIGludCBjb25zdHJhaW50IHAxX2FfY2hlY2sgY2hlY2sgKGYxID4gMCkg bm90IGVuZm9yY2VkKTsKIGNyZWF0ZSB0YWJsZSBwMV9jMShmMSBpbnQgY29uc3RyYWludCBwMV9h X2NoZWNrIGNoZWNrIChmMSA+IDApIGVuZm9yY2VkKTsKIGFsdGVyIHRhYmxlIHAxX2MxIGluaGVy aXQgcDE7CitpbnNlcnQgaW50byBwMSB2YWx1ZXMoLTEpOyAtLW9rCitpbnNlcnQgaW50byBwMV9j MSB2YWx1ZXMoLTEpOyAtLWVycm9yCithbHRlciB0YWJsZSBwMSBhbHRlciBjb25zdHJhaW50IHAx X2FfY2hlY2sgZW5mb3JjZWQ7IC0tZXJyb3IKK3RydW5jYXRlIHAxOworYWx0ZXIgdGFibGUgcDEg YWx0ZXIgY29uc3RyYWludCBwMV9hX2NoZWNrIGVuZm9yY2VkOyAtLW9rCithbHRlciB0YWJsZSBw MSBhbHRlciBjb25zdHJhaW50IHAxX2FfY2hlY2sgbm90IGVuZm9yY2VkOyAtLW9rCisKK3NlbGVj dCAgY29ubmFtZSwgY29uZW5mb3JjZWQsIGNvbnZhbGlkYXRlZCwgY29ucmVsaWQ6OnJlZ2NsYXNz Citmcm9tICAgIHBnX2NvbnN0cmFpbnQKK3doZXJlICAgY29ubmFtZSA9ICdwMV9hX2NoZWNrJyBh bmQgY29udHlwZSA9ICdjJworb3JkZXIgYnkgY29ucmVsaWQ6OnJlZ2NsYXNzOjp0ZXh0IGNvbGxh dGUgIkMiOwogZHJvcCB0YWJsZSBwMSBjYXNjYWRlOwogCiBjcmVhdGUgdGFibGUgcDEoZjEgaW50 IGNvbnN0cmFpbnQgcDFfYV9jaGVjayBjaGVjayAoZjEgPiAwKSBlbmZvcmNlZCk7Ci0tIAoyLjM0 LjEKCg== --000000000000d33a0806451ac5e0--