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 1vzOBB-000xW6-2I for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 00:09:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzOBA-00CiEj-00 for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 00:09:00 +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 1vzOB9-00CiEa-13 for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 00:09:00 +0000 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzOB7-00000001CYX-2VMD for pgsql-hackers@postgresql.org; Mon, 09 Mar 2026 00:08:58 +0000 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-5a1443780c4so1261216e87.0 for ; Sun, 08 Mar 2026 17:08:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773014935; cv=none; d=google.com; s=arc-20240605; b=QEZFDzOUZCWgCpIIU+xeqv0+lRACG+lqyFWo77iDme7zBlBFC/aLzw+FH49dJSlxQs SwcXYnCJZqga44Um9ovoqeE92fVtuNIMYDO86MzHgtVKUBbUlime/1qm3K8pC6fsn5nH yfjtJ7cMgyNgKTEMCYGhdHMiYtodqExigw7+HiEzHXk3rjU1JwuN4KiMh6v9D1cHw89I SjN5GV/9XgciEF1wIwsCWPQcnq3lGz0V5yLYg5SQ+7eFh12GT7IA70CqAGIV5l9tcD1p XUzegesU6QL8Qc9wASkbr2FTBPOkawmz9YWDRtdkT2W9gYQXu0X1J2pdWKdyw0s1HwuW n7EQ== 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=0w02/ykI7ykLNQ3cD03LsQPMoN+Ywa1kvLJLNo2qEAw=; fh=/GxGZ14HfBqPp2oyDLqSVOacSqifrv5MBV68/O0MkP8=; b=ZDRhTjDTER5JEt+JPuGH0CQ7WN+QF1RiMN5p3Yua3UVaSjQjInzyu1mmjeb/40d5L2 5vhpcinJz9TUVnkhoAijgqieuVuLKcp4tiVemrM+R/Oo6sRkt4BG0TgcSIzL8waNB03F SK28JxhJoa7W47N8GI5ZyuI4lwGRrdRxZsBguR/5JAzMQCVktV579rAEHMWrZZVHKX4w ZiCB/IaLJqIE6xqvx0qLGsMiBR0ytl7y3qE3WfY6nFjXQsRLPu0pFRkIS7W5fqjzGeb9 v4+qkkSgxidl0tgz/mL+VQnCRT3ysdkp/4ra4P3AJdLhCi2kFnOKWPliWix4We3+lXPG wiXg==; darn=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=20230601; t=1773014935; x=1773619735; 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=0w02/ykI7ykLNQ3cD03LsQPMoN+Ywa1kvLJLNo2qEAw=; b=PmKB6qtqGhDGTh/pXzaDBLNF3PU0FTYvs/BRnwI+cbTQbEIvh7Qt/e6Q0OR2jLMVFN /HNIhfuuy2P8F6bHDEhgAGP2Qgsm+0IZcub9nc7p2jm/Wf/zqC8dRj3zRTnMucgA7CDi nFsBUrZ0HE9WsNcb1GP3UAoaKTnQEH6MaeRPIs52aRyNjwNM8geuFBQ5oPcm8NAlnXBg JZTwloTfGNSn8bIKbOvNJZBOUVZ2kAFWvdW+jwLGGpI2Y8FZE5ZK1TDX1K9s7qODOyRL vrgTmHSwCImwPdkoloIGzSEt1F08Tw7XnlryMCXpynvhGnfDnE1A4ZnWoLdYXslOD4Y8 QePw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773014935; x=1773619735; 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=0w02/ykI7ykLNQ3cD03LsQPMoN+Ywa1kvLJLNo2qEAw=; b=HTo/ybJfNk+VUYjGQV1/vwJ4UB9Gg9e7Rrm8eGzbp6TH2eGWP4kax2DvcKijviKCYP XtAGqGaBgLoDm8wuR9hNqGnOVvv82lzX5bxDtfv2+cyI7AwVsTj3G3A7zqAxHuEyi2G2 cpFiF072tRiq8qOc388ynyUBjqWSqXFnJ+Qp1/mELiqqaka/WPv55t3+qy2W8VWcaVse bo+UGvG5jPlprZxdOckOoAwoZBEZBy9bSey2uUeZjOSGBzFOj28xSg2mOGERD8MydBIY IFzUo3VrArgiZoKuatj7IaZmlzzMj6OkwrNFGjQzczAq9obAikg0mqnXBvbDvd0cn8OQ pboA== X-Forwarded-Encrypted: i=1; AJvYcCWqCRR3torS7O6f4A5AcTy+WC1Lc+Fd8hijCaa5Yj95ltocFKEJ310vXim2mts5Q2O95JWrO3CLzOxKV7Du@postgresql.org X-Gm-Message-State: AOJu0YwCoyzmaf7CucD+foTioTPObNJVK/WEB6gp+/+EifTv+/H62xXt OhPyQuWv0PQRe8h59PaegBGIhr4yetLXFFNMjmj21EOMLtr+4aKmkHJwjGZzPh5I8Jcjf3lnP9M ObozOP2y3L4Dcig8wED/9e0yWmgDJsV8= X-Gm-Gg: ATEYQzxMjniw/gZuljxRrl4G+QtuRXd4FzUdF4+mpwNZJgxQGAs9AIxesWvmVWBBFdm OJPDxGgXXMm3IadYzktkRZBfnUoPsDhMAg0LRdoksnGkfV7jZg3sFxvQNXt9rcJXBZFBVrgd9Hz Z8Z80eYVekY8Yr0etkjsyIem790mo88H7ZIbV+bntkSD7sNZVPYri57vt+JXAbx234co9+pcTaD ytSKYTVzkUGYkj3Kg7c1GfEJO1jt2mxlhMn9fIde9XJQXxLIRkE8a8/IW3yoXjLF4W7O/RADqrc wHQA0KRs2oSYAn9lTAd6ADU+cz/j93nnKSigOQgbAEEKDt5bonCtbrDYVj/T8Xxz0efWeuAKLoj sVfg= X-Received: by 2002:a05:6512:63da:20b0:5a1:3ce8:5ce1 with SMTP id 2adb3069b0e04-5a13ce85ea1mr2086149e87.19.1773014934363; Sun, 08 Mar 2026 17:08:54 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Mon, 9 Mar 2026 01:08:00 +0100 X-Gm-Features: AaiRm519PHYO03D_eQ_tj32RedsjNrhBeFcJrF2IsbbsI2e_k6dTwWXChIaoA1Q Message-ID: Subject: Re: [BUG?] check_exclusion_or_unique_constraint false negative To: Amit Kapila Cc: "Zhijie Hou (Fujitsu)" , Peter Geoghegan , "Hayato Kuroda (Fujitsu)" , PostgreSQL Hackers , Andres Freund Content-Type: multipart/mixed; boundary="000000000000583b17064c8c35a2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000583b17064c8c35a2 Content-Type: text/plain; charset="UTF-8" Hello! Rebased. --000000000000583b17064c8c35a2 Content-Type: application/x-patch; name="v17-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Disposition: attachment; filename="v17-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmi354o30 RnJvbSBlY2FjOTQwYjY2MjQ2MDAzNzgyMGYyOGViOTM1MDk5YjgyYTlhOWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE3IDEv Ml0gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBpbmplY3Rpb24gcG9pbnRzIGFuZCBUQVAKIHRl c3RzIHRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IGNvbmZsaWN0IGRldGVjdGlvbiBpc3N1ZXMgdGhh dCBhcmlzZSBkdXJpbmcKIFNOQVBTSE9UX0RJUlRZIGluZGV4IHNjYW5zIGluIGxvZ2ljYWwgcmVw bGljYXRpb24uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAg ICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUgICAgICAgICAg ICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5oICAgICAgICAgICAgICAgICAg fCAgMTQgKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM4X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwgfCAx MzkgKysrKysrKysrKysrKysrKysKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3Np bmdfcmFjZS5wbCB8IDE0MSArKysrKysrKysrKysrKysrKwogLi4uL3QvMDQwX3VwZGF0ZV9taXNz aW5nX3dpdGhfcmV0YWluLnBsICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogLi4uL3Qv MDQxX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgICAgICAgIHwgMTI1ICsrKysrKysrKysr KysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzhfZGVsZXRlX21p c3NpbmdfcmFjZS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzOV91cGRhdGVfbWlzc2luZ19yYWNlLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDQwX3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQxX3VwZGF0ZV9taXNzaW5nX3Np bXVsYXRpb24ucGwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCA0M2Y2NGEwZTcy MS4uZDkzNGI2MzZhNTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRl eGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTIsMTEg KzUyLDEzIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzUxLDYgKzc1 MywxMyBAQCBpbmRleF9nZXRuZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0 aW9uIGRpcmVjdGlvbiwgVHVwbGVUYWJsZVNsb3QgKgogCQkgKiB0aGUgaW5kZXguCiAJCSAqLwog CQlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKCZzY2FuLT54c19oZWFwdGlkKSk7CisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJaWYgKCFJc0NhdGFsb2dSZWxhdGlvbihzY2FuLT5oZWFw UmVsYXRpb24pICYmIElzTG9naWNhbFdvcmtlcigpKQorCQl7CisJCQlJTkpFQ1RJT05fUE9JTlQo ImluZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHkiLCBOVUxMKTsKKwkJ fQorI2VuZGlmCisKIAkJaWYgKGluZGV4X2ZldGNoX2hlYXAoc2Nhbiwgc2xvdCkpCiAJCQlyZXR1 cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JFQURN RSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvUkVBRE1FCmluZGV4IDUzZDRhNjFkYzNmLi42 MzRhM2QxMGJiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKQEAgLTEwMyw2ICsxMDMsMTUg QEAgV2UgYWxzbyByZW1lbWJlciB0aGUgbGVmdC1saW5rLCBhbmQgZm9sbG93IGl0IHdoZW4gdGhl IHNjYW4gbW92ZXMgYmFja3dhcmRzCiAodGhvdWdoIHRoaXMgcmVxdWlyZXMgZXh0cmEgaGFuZGxp bmcgdG8gYWNjb3VudCBmb3IgY29uY3VycmVudCBzcGxpdHMgb2YKIHRoZSBsZWZ0IHNpYmxpbmc7 IHNlZSBkZXRhaWxlZCBtb3ZlLWxlZnQgYWxnb3JpdGhtIGJlbG93KS4KIAorRGVzcGl0ZSB0aGUg ZGVzY3JpYmVkIG1lY2hhbmljcyBpbiBwbGFjZSwgaW5jb25zaXN0ZW50IHJlc3VsdHMgbWF5IHN0 aWxsIG9jY3VyCitkdXJpbmcgbm9uLU1WQ0Mgc2NhbnMgKFNuYXBzaG90RGlydHkgYW5kIFNuYXBz aG90U2VsZikuIFRoaXMgaXNzdWUgY2FuIG9jY3VyIGlmIGEgCitjb25jdXJyZW50IHRyYW5zYWN0 aW9uIGRlbGV0ZXMgYSB0dXBsZSBhbmQgaW5zZXJ0cyBhIG5ldyB0dXBsZSB3aXRoIGEgbmV3IFRJ RCBpbiB0aGUgCitzYW1lIHBhZ2Ugb3IgdG8gdGhlIGxlZnQvcmlnaHQgKGRlcGVuZGluZyBvbiBz Y2FuIGRpcmVjdGlvbikgb2YgY3VycmVudCBzY2FuIHBvc2l0aW9uLgorSWYgdGhlIHNjYW4gaGFz IGFscmVhZHkgdmlzaXRlZCB0aGUgcGFnZSBhbmQgY2FjaGVkIGl0cyBjb250ZW50IGluIHRoZQor YmFja2VuZC1sb2NhbCBzdG9yYWdlLCBpdCBtaWdodCBza2lwIHRoZSBvbGQgdHVwbGUgZHVlIHRv IGRlbGV0aW9uIGFuZCBtaXNzIHRoZSBuZXcgCit0dXBsZSBiZWNhdXNlIHRoZSBzY2FuIGRvZXMg bm90IHJlLXJlYWQgdGhlIHBhZ2UuIE5vdGUgaXQgYWZmZWN0cyBub3Qgb25seSBidHJlZQorc2Nh biBidXQgYWxzbyBhIGhlYXAgc2Nhbi4KKwogSW4gbW9zdCBjYXNlcyB3ZSByZWxlYXNlIG91ciBs b2NrIGFuZCBwaW4gb24gYSBwYWdlIGJlZm9yZSBhdHRlbXB0aW5nCiB0byBhY3F1aXJlIHBpbiBh bmQgbG9jayBvbiB0aGUgcGFnZSB3ZSBhcmUgbW92aW5nIHRvLiAgSW4gYSBmZXcgcGxhY2VzCiBp dCBpcyBuZWNlc3NhcnkgdG8gbG9jayB0aGUgbmV4dCBwYWdlIGJlZm9yZSByZWxlYXNpbmcgdGhl IGN1cnJlbnQgb25lLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA5ZDA3MWU0 OTVjNi4uZGMyZDc3YWQ3MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0x MTgsNiArMTE4LDcgQEAKICNpbmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0 byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVt CkBAIC03ODAsNyArNzgxLDkgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50 KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCS8qCiAJICogU2VhcmNoIHRoZSB0dXBs ZXMgdGhhdCBhcmUgaW4gdGhlIGluZGV4IGZvciBhbnkgdmlvbGF0aW9ucywgaW5jbHVkaW5nCiAJ ICogdHVwbGVzIHRoYXQgYXJlbid0IHZpc2libGUgeWV0LgotCSAqLworCSAqIFNuYXBzaG90IGRp cnR5IG1heSBtaXNzIHNvbWUgdHVwbGVzIGluIHRoZSBjYXNlIG9mIHBhcmFsbGVsIHVwZGF0ZXMs CisJICogYnV0IGl0IGlzIGFjY2VwdGFibGUgaGVyZS4KKwkqLwogCUluaXREaXJ0eVNuYXBzaG90 KERpcnR5U25hcHNob3QpOwogCiAJZm9yIChpID0gMDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCkBA IC05NDgsNiArOTUxLDggQEAgcmV0cnk6CiAJCUlOSkVDVElPTl9QT0lOVCgiY2hlY2stZXhjbHVz aW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNvbmZsaWN0IiwgTlVMTCk7CiAjZW5kaWYKIAor CWlmICghY29uZmxpY3QpCisJCUlOSkVDVElPTl9QT0lOVCgiY2hlY2tfZXhjbHVzaW9uX29yX3Vu aXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0IiwgTlVMTCk7CiAJcmV0dXJuICFjb25mbGljdDsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMDMzODU4 NzUyZDkuLmQ3NzRiMDhlN2QwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKQEAgLTI4Nyw2ICsyODcsNyBAQAogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNp bmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1 dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1 ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0y OTg5LDcgKzI5OTAsMTAgQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZV9pbnRlcm5hbChBcHBseUV4ZWN1 dGlvbkRhdGEgKmVkYXRhLAogCQkJY29uZmxpY3R0dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl94 YWN0X3N0YXRlLm9yaWdpbikKIAkJCXR5cGUgPSBDVF9VUERBVEVfREVMRVRFRDsKIAkJZWxzZQor CQl7CisJCQlJTkpFQ1RJT05fUE9JTlQoImFwcGx5X2hhbmRsZV91cGRhdGVfaW50ZXJuYWxfdXBk YXRlX21pc3NpbmciLCBOVUxMKTsKIAkJCXR5cGUgPSBDVF9VUERBVEVfTUlTU0lORzsKKwkJfQog CiAJCS8qIFN0b3JlIHRoZSBuZXcgdHVwbGUgZm9yIGNvbmZsaWN0IHJlcG9ydGluZyAqLwogCQlz bG90X3N0b3JlX2RhdGEobmV3c2xvdCwgcmVsbWFwZW50cnksIG5ld3R1cCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNo b3QuaAppbmRleCA5NzY2YWFiY2FkNC4uMmZjMDA1ODc5NmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3NuYXBzaG90LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaApA QCAtNTMsNiArNTMsMTMgQEAgdHlwZWRlZiBlbnVtIFNuYXBzaG90VHlwZQogCSAqIC0gcHJldmlv dXMgY29tbWFuZHMgb2YgdGhpcyB0cmFuc2FjdGlvbgogCSAqIC0gY2hhbmdlcyBtYWRlIGJ5IHRo ZSBjdXJyZW50IGNvbW1hbmQKIAkgKgorCSAqIE5vdGU6IHN1Y2ggYSBzbmFwc2hvdCBtYXkgbWlz cyBhbiBleGlzdGluZyBsb2dpY2FsIHR1cGxlIGluIGNhc2Ugb2YKKwkgKiBwYXJhbGxlbCB1cGRh dGUuCisJICogSWYgYSBuZXcgdmVyc2lvbiBvZiBhIHR1cGxlIGlzIGluc2VydGVkIGludG8gYW4g YWxyZWFkeSBwcm9jZXNzZWQgcGFnZQorCSAqIGJ1dCB0aGUgb2xkIG9uZSBtYXJrZWQgd2l0aCBj b21taXR0ZWQgeG1heCAtIHNuYXBzaG90IHdpbGwgc2tpcCB0aGUgb2xkCisJICogb25lIGFuZCBu ZXZlciBtZWV0IHRoZSBuZXcgb25lIGR1cmluZyB0aGF0IHNjYW4gLSByZXN1bHRpbmcgaW4gc2tp cHBpbmcKKwkgKiB0aGF0IHR1cGxlIGF0IGFsbC4KKwkgKgogCSAqIERvZXMgX25vdF8gaW5jbHVk ZToKIAkgKiAtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyAoYXMgb2YgdGhlIGN1cnJlbnQgaW5z dGFudCkKIAkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04Miw2ICs4OSwxMyBAQCB0eXBlZGVmIGVu dW0gU25hcHNob3RUeXBlCiAJICogdHJhbnNhY3Rpb24gYW5kIGNvbW1pdHRlZC9hYm9ydGVkIHhh Y3RzIGFyZSBjb25jZXJuZWQuICBIb3dldmVyLCBpdAogCSAqIGFsc28gaW5jbHVkZXMgdGhlIGVm ZmVjdHMgb2Ygb3RoZXIgeGFjdHMgc3RpbGwgaW4gcHJvZ3Jlc3MuCiAJICoKKwkgKiBOb3RlOiBz dWNoIGEgc25hcHNob3QgbWF5IG1pc3MgYW4gZXhpc3RpbmcgbG9naWNhbCB0dXBsZSBpbiBjYXNl IG9mCisJICogcGFyYWxsZWwgdXBkYXRlLgorCSAqIElmIGEgbmV3IHZlcnNpb24gb2YgYSB0dXBs ZSBpcyBpbnNlcnRlZCBpbnRvIGFuIGFscmVhZHkgcHJvY2Vzc2VkIHBhZ2UgYnV0IHRoZQorCSAq IG9sZCBvbmUgbWFya2VkIHdpdGggY29tbWl0dGVkL2luLXByb2dyZXNzIHhtYXggLSBzbmFwc2hv dCB3aWxsIHNraXAgdGhlIG9sZCBvbmUKKwkgKiBhbmQgbmV2ZXIgbWVldCB0aGUgbmV3IG9uZSBk dXJpbmcgdGhhdCBzY2FuIC0gcmVzdWx0aW5nIGluIHNraXBwaW5nIHRoYXQgdHVwbGUKKwkgKiBh dCBhbGwuCisJICoKIAkgKiBBIHNwZWNpYWwgaGFjayBpcyB0aGF0IHdoZW4gYSBzbmFwc2hvdCBv ZiB0aGlzIHR5cGUgaXMgdXNlZCB0bwogCSAqIGRldGVybWluZSB0dXBsZSB2aXNpYmlsaXR5LCB0 aGUgcGFzc2VkLWluIHNuYXBzaG90IHN0cnVjdCBpcyB1c2VkIGFzIGFuCiAJICogb3V0cHV0IGFy Z3VtZW50IHRvIHJldHVybiB0aGUgeGlkcyBvZiBjb25jdXJyZW50IHhhY3RzIHRoYXQgYWZmZWN0 ZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBmNGE5Y2Y1MDU3Zi4uYzMxNjNmNjQ3 ZGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTQ3LDYgKzQ3LDEwIEBAIHRlc3Rz ICs9IHsKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNl cy5wbCcsCiAgICAgICAndC8wMzdfZXhjZXB0LnBsJywKKwkgICd0LzAzOF9kZWxldGVfbWlzc2lu Z19yYWNlLnBsJywKKwkgICd0LzAzOV91cGRhdGVfbWlzc2luZ19yYWNlLnBsJywKKwkgICd0LzA0 MF91cGRhdGVfbWlzc2luZ193aXRoX3JldGFpbi5wbCcsCisJICAndC8wNDFfdXBkYXRlX21pc3Np bmdfc2ltdWxhdGlvbi5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOF9kZWxldGVfbWlzc2luZ19y YWNlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM4X2RlbGV0ZV9taXNzaW5nX3JhY2Uu cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxZGQzNTFkYzEwCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM4X2RlbGV0ZV9taXNz aW5nX3JhY2UucGwKQEAgLTAsMCArMSwxMzkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIGNvbmZsaWN0IGRl dGVjdGlvbiBhbmQgcmVzb2x1dGlvbiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwor aWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tp cF9hbGwgPT4gJ0luamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsK K30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFNldCBpdCB0byAwIHRvIG1ha2Ug c2V0IHN1Y2Nlc3M7IFRPRE86IGRlbGV0ZSB0aGF0IGZvciBjb21taXQKK215ICRzaW11bGF0ZV9y YWNlX2NvbmRpdGlvbiA9IDE7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBTZXR1cAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1 Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Cisk bm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5v ZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFja19j b21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKworIyBD cmVhdGUgc3Vic2NyaWJlciBub2RlIHdpdGggdHJhY2tfY29tbWl0X3RpbWVzdGFtcCBlbmFibGVk CitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdz dWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFt cCA9IG9uKSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCisjIENoZWNrIGlmIHRoZSBl eHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBw b3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUg dGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRu b2RlX3N1YnNjcmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQorewor CXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxs ZWQnOworfQorCisjIENyZWF0ZSB0YWJsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQ UklNQVJZIGtleSwgZGF0YSB0ZXh0KTsiKTsKKworIyBDcmVhdGUgc2ltaWxhciB0YWJsZSBvbiBz dWJzY3JpYmVyIHdpdGggYWRkaXRpb25hbCBpbmRleCB0byBkaXNhYmxlIEhPVCB1cGRhdGVzCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxF IGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRleHQpOworCSBDUkVBVEUgSU5ERVgg ZGF0YV9pbmRleCBPTiBjb25mX3RhYihkYXRhKTsiKTsKKworIyBTZXQgdXAgZXh0ZW5zaW9uIHRv IHNpbXVsYXRlIHJhY2UgY29uZGl0aW9uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsnKTsKKworIyBTZXR1 cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJs aXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFC TEUgY29uZl90YWIiKTsKKworIyBJbnNlcnQgcm93IHRvIGJlIHVwZGF0ZWQgbGF0ZXIKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIGNvbmZfdGFi KGEsIGRhdGEpIFZBTFVFUyAoMSwnZnJvbXB1YicpIik7CisKKyMgQ3JlYXRlIHRoZSBzdWJzY3Jp cHRpb24KK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCSBDT05O RUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwkg UFVCTElDQVRJT04gdGFwX3B1YiIpOworCisjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0 byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRu b2RlX3B1Ymxpc2hlciwgJGFwcG5hbWUpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBSYWNlIGNvbmRpdGlvbiBiZWNhdXNlIG9mIERpcnR5U25hcHNo b3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK215ICRw c3FsX3Nlc3Npb25fc3Vic2NyaWJlciA9ICRub2RlX3N1YnNjcmliZXItPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgaW5qZWN0aW9uX3Bv aW50c19hdHRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHkn LCAnd2FpdCcpIik7Cit9CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKKworIyBEZWxldGUgdHVwbGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gY29uZl90YWIgV0hFUkUgYT0xOyIp OworCitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSMgV2FpdCBhcHBseSB3b3Jr ZXIgdG8gc3RhcnQgdGhlIHNlYXJjaCBmb3IgdGhlIHR1cGxlIHVzaW5nIGluZGV4CisJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfZXZlbnQoJ2xvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29y a2VyJywKKwkJJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsK K30KKworIyBVcGRhdGVyIHR1cGxlIG9uIHN1YnNjcmliZXIKKyRwc3FsX3Nlc3Npb25fc3Vic2Ny aWJlci0+cXVlcnlfdW50aWwoCisJcXIvc3RhcnQvLCBxcVsKKwlcXGVjaG8gc3RhcnQKKwlVUERB VEUgY29uZl90YWIgU0VUIGRhdGEgPSAnZnJvbXN1Ym5ldycgV0hFUkUgKGE9MSk7CitdKTsKKwor CitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSMgV2FrZSB1cCBhcHBseSB3b3Jr ZXIKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywiCisJCVNFTEVDVCBp bmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9h cHBseV9kaXJ0eScpOworCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2luZGV4X2dl dG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJIik7Cit9CisKKyMgVHVw bGUgd2FzIHVwZGF0ZWQgLSBzbywgd2UgaGF2ZSBjb25mbGljdAorJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAorCXFyL2NvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGlj LmNvbmZfdGFiXCIvLAorCSRsb2dfb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBCdXQgdHVwbGUgc2hvdWxkIGJlIGRlbGV0ZWQgb24g c3Vic2NyaWJlciBhbnkgd2F5Citpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ1NFTEVDVCBjb3VudCgqKSBmcm9tIGNvbmZfdGFiJyksIDAsICdyZWNvcmQgZGVsZXRl ZCBvbiBzdWJzY3JpYmVyJyk7CisKK29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMo CisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZf dGFiXCI6IGNvbmZsaWN0PWRlbGV0ZV9taXNzaW5nLywKKwkJJGxvZ19vZmZzZXQpLCAnaW52YWxp ZCBjb25mbGljdCBkZXRlY3RlZCcpOworCitvaygkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFp bnMoCisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNv bmZfdGFiXCI6IGNvbmZsaWN0PWRlbGV0ZV9vcmlnaW5fZGlmZmVycy8sCisJCSRsb2dfb2Zmc2V0 KSwgJ2NvcnJlY3QgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfdXBkYXRlX21pc3NpbmdfcmFjZS5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV91cGRhdGVfbWlzc2luZ19yYWNlLnBsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZTEyMGY3NGJiZAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV91cGRhdGVfbWlzc2luZ19y YWNlLnBsCkBAIC0wLDAgKzEsMTQxIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHRoZSBjb25mbGljdCBkZXRlY3Rp b24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNhbCByZXBsaWNhdGlvbgordXNlIHN0cmljdDsKK3Vz ZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK2lmICgk RU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxs ID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBTZXQgaXQgdG8gMCB0byBtYWtlIHNldCBz dWNjZXNzOyBUT0RPOiBkZWxldGUgdGhhdCBmb3IgY29tbWl0CitteSAkc2ltdWxhdGVfcmFjZV9j b25kaXRpb24gPSAxOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1 Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0 X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisKKyMgQ3JlYXRl IHN1YnNjcmliZXIgbm9kZSB3aXRoIHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgZW5hYmxlZAorbXkg JG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2Ny aWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBv bikpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKworIyBDaGVjayBpZiB0aGUgZXh0ZW5z aW9uIGluamVjdGlvbl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2li bGUgdGhhdCB0aGlzIHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBt b2R1bGUKKyMgd291bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZV9z dWJzY3JpYmVyLT5jaGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFu IHNraXBfYWxsID0+ICdFeHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsK K30KKworIyBDcmVhdGUgdGFibGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgY29uZl90YWIoYSBpbnQgUFJJTUFS WSBrZXksIGRhdGEgdGV4dCk7Iik7CisKKyMgQ3JlYXRlIHNpbWlsYXIgdGFibGUgb24gc3Vic2Ny aWJlciB3aXRoIGFkZGl0aW9uYWwgaW5kZXggdG8gZGlzYWJsZSBIT1QgdXBkYXRlcyBhbmQgYWRk aXRpb25hbCBjb2x1bW4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LAorCSJDUkVBVEUgVEFCTEUgY29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEgdGV4dCwg aSBpbnQgREVGQVVMVCAwKTsKKwkgQ1JFQVRFIElOREVYIGlfaW5kZXggT04gY29uZl90YWIoaSk7 Iik7CisKKyMgU2V0IHVwIGV4dGVuc2lvbiB0byBzaW11bGF0ZSByYWNlIGNvbmRpdGlvbgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGlu amVjdGlvbl9wb2ludHM7Jyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1 Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9z dGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIGNvbmZfdGFiIik7CisKKyMgSW5zZXJ0IHJv dyB0byBiZSB1cGRhdGVkIGxhdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyBjb25mX3RhYihhLCBkYXRhKSBWQUxVRVMgKDEsJ2Zyb21wdWIn KSIpOworCisjIENyZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFw cGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9wdWIiKTsKKworIyBX YWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmFjZSBjb25k aXRpb24gYmVjYXVzZSBvZiBEaXJ0eVNuYXBzaG90CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCitteSAkcHNxbF9zZXNzaW9uX3N1YnNjcmliZXIgPSAkbm9k ZV9zdWJzY3JpYmVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CitpZiAoJHNpbXVsYXRl X3JhY2VfY29uZGl0aW9uKQoreworCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3Rf YmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5JywgJ3dhaXQnKSIpOworfQorCitteSAkbG9nX29mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyMgVXBkYXRlIHR1cGxlIG9uIHB1 Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiVVBEQVRF IGNvbmZfdGFiIFNFVCBkYXRhID0gJ2Zyb21wdWJuZXcnIFdIRVJFIChhPTEpOyIpOworCisKK2lm ICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJIyBXYWl0IGFwcGx5IHdvcmtlciB0byBz dGFydCB0aGUgc2VhcmNoIGZvciB0aGUgdHVwbGUgdXNpbmcgaW5kZXgKKwkkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXInLCAn aW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOworfQorCisjIFVw ZGF0ZSBhZGRpdGlvbmFsKCEpIGNvbHVtbiBvbiB0aGUgc3Vic2NyaWJlcgorJHBzcWxfc2Vzc2lv bl9zdWJzY3JpYmVyLT5xdWVyeV91bnRpbCgKKwlxci9zdGFydC8sIHFxWworCVxcZWNobyBzdGFy dAorCVVQREFURSBjb25mX3RhYiBTRVQgaSA9IDEgV0hFUkUgKGE9MSk7CitdKTsKKworCitpZiAo JHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSMgV2FrZSB1cCBhcHBseSB3b3JrZXIKKwkk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywiCisJCVNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2RldGFjaCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9k aXJ0eScpOworCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2luZGV4X2dldG5leHRf c2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJIik7Cit9CisKKyMgVHVwbGUgd2Fz IHVwZGF0ZWQgLSBzbywgd2UgaGF2ZSBjb25mbGljdAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL2NvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZf dGFiXCIvLAorCSRsb2dfb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworIyBXZSBuZWVkIG5ldyBjb2x1bW4gdmFsdWUgYmUgc3luY2VkIHdp dGggc3Vic2NyaWJlcgoraXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdTRUxFQ1QgZGF0YSBmcm9tIGNvbmZfdGFiIFdIRVJFIGEgPSAxJyksICdmcm9tcHVibmV3Jywg J3JlY29yZCB1cGRhdGVkIG9uIHN1YnNjcmliZXInKTsKKyMgQW5kIGFkZGl0aW9uYWwgY29sdW1u IG1haW50YWluIHVwZGF0ZWQgdmFsdWUKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnU0VMRUNUIGkgZnJvbSBjb25mX3RhYiBXSEVSRSBhID0gMScpLCAxLCAnY29s dW1uIHJlY29yZCB1cGRhdGVkIG9uIHN1YnNjcmliZXInKTsKKworb2soISRub2RlX3N1YnNjcmli ZXItPmxvZ19jb250YWlucygKKwkJcXIvTE9HOiAgY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRp b24gXCJwdWJsaWMuY29uZl90YWJcIjogY29uZmxpY3Q9dXBkYXRlX21pc3NpbmcvLAorCQkkbG9n X29mZnNldCksICdpbnZhbGlkIGNvbmZsaWN0IGRldGVjdGVkJyk7CisKK29rKCRub2RlX3N1YnNj cmliZXItPmxvZ19jb250YWlucygKKwkJcXIvTE9HOiAgY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVs YXRpb24gXCJwdWJsaWMuY29uZl90YWJcIjogY29uZmxpY3Q9dXBkYXRlX29yaWdpbl9kaWZmZXJz LywKKwkJJGxvZ19vZmZzZXQpLCAnY29ycmVjdCBjb25mbGljdCBkZXRlY3RlZCcpOworCitkb25l X3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MF91cGRh dGVfbWlzc2luZ193aXRoX3JldGFpbi5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MF91 cGRhdGVfbWlzc2luZ193aXRoX3JldGFpbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uN2IyMjVkNDVmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wNDBfdXBkYXRlX21pc3Npbmdfd2l0aF9yZXRhaW4ucGwKQEAgLTAsMCArMSwx NDMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorCisjIFRlc3QgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBhbmQgcmVzb2x1dGlvbiBp biBsb2dpY2FsIHJlcGxpY2F0aW9uCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlv bl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBwb2lu dHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIFNldCBpdCB0byAwIHRvIG1ha2Ugc2V0IHN1Y2Nlc3M7IFRPRE86IGRlbGV0 ZSB0aGF0IGZvciBjb21taXQKK215ICRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbiA9IDE7CisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBTZXR1cAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEluaXRp YWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsK KyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlIHdp dGggdHJhY2tfY29tbWl0X3RpbWVzdGFtcCBlbmFibGVkCitteSAkbm9kZV9zdWJzY3JpYmVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh3YWxfbGV2ZWwgPSAncmVw bGljYScpKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisKKyMgQ2hlY2sgaWYgdGhlIGV4 dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBv c3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0 aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5v ZGVfc3Vic2NyaWJlci0+Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJ cGxhbiBza2lwX2FsbCA9PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxl ZCc7Cit9CisKKyMgQ3JlYXRlIHRhYmxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBS SU1BUlkga2V5LCBkYXRhIHRleHQpOyIpOworCisjIENyZWF0ZSBzaW1pbGFyIHRhYmxlIG9uIHN1 YnNjcmliZXIgd2l0aCBhZGRpdGlvbmFsIGluZGV4IHRvIGRpc2FibGUgSE9UIHVwZGF0ZXMgYW5k IGFkZGl0aW9uYWwgY29sdW1uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhIHRl eHQsIGkgaW50IERFRkFVTFQgMCk7CisJIENSRUFURSBJTkRFWCBpX2luZGV4IE9OIGNvbmZfdGFi KGkpOyIpOworCisjIFNldCB1cCBleHRlbnNpb24gdG8gc2ltdWxhdGUgcmFjZSBjb25kaXRpb24K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lP TiBpbmplY3Rpb25fcG9pbnRzOycpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215 ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1l PXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSBjb25mX3RhYiIpOworCisjIEluc2Vy dCByb3cgdG8gYmUgdXBkYXRlZCBsYXRlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gY29uZl90YWIoYSwgZGF0YSkgVkFMVUVTICgxLCdmcm9t cHViJykiKTsKKworIyBDcmVhdGUgdGhlIHN1YnNjcmlwdGlvbgorbXkgJGFwcG5hbWUgPSAndGFw X3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCSBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEgg KHJldGFpbl9kZWFkX3R1cGxlcyA9IHRydWUpIik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJs ZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9u X3N5bmMoJG5vZGVfcHVibGlzaGVyLCAkYXBwbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFJhY2UgY29uZGl0aW9uIGJlY2F1c2Ugb2YgRGly dHlTbmFwc2hvdAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworbXkgJHBzcWxfc2Vzc2lvbl9zdWJzY3JpYmVyID0gJG5vZGVfc3Vic2NyaWJlci0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycpOworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sK Kwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBpbmplY3Rp b25fcG9pbnRzX2F0dGFjaCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9k aXJ0eScsICd3YWl0JykiKTsKK30KKworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCisjIFVwZGF0ZSB0dXBsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlVQREFURSBjb25mX3RhYiBTRVQgZGF0YSA9 ICdmcm9tcHVibmV3JyBXSEVSRSAoYT0xKTsiKTsKKworCitpZiAoJHNpbXVsYXRlX3JhY2VfY29u ZGl0aW9uKQoreworCSMgV2FpdCBhcHBseSB3b3JrZXIgdG8gc3RhcnQgdGhlIHNlYXJjaCBmb3Ig dGhlIHR1cGxlIHVzaW5nIGluZGV4CisJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfZXZlbnQo J2xvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyJywgJ2luZGV4X2dldG5leHRfc2xvdF9i ZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKK30KKworIyBVcGRhdGUgYWRkaXRpb25hbCghKSBj b2x1bW4gb24gdGhlIHN1YnNjcmliZXIKKyRwc3FsX3Nlc3Npb25fc3Vic2NyaWJlci0+cXVlcnlf dW50aWwoCisJcXIvc3RhcnQvLCBxcVsKKwlcXGVjaG8gc3RhcnQKKwlVUERBVEUgY29uZl90YWIg U0VUIGkgPSAxIFdIRVJFIChhPTEpOworXSk7CisKKworaWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRp dGlvbikKK3sKKwkjIFdha2UgdXAgYXBwbHkgd29ya2VyCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIgorCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2lu ZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJU0VMRUNUIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2Fw cGx5X2RpcnR5Jyk7CisJCSIpOworfQorCisjIFR1cGxlIHdhcyB1cGRhdGVkIC0gc28sIHdlIGhh dmUgY29uZmxpY3QKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9jb25mbGlj dCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25mX3RhYlwiLywKKwkkbG9nX29mZnNl dCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMg V2UgbmVlZCBuZXcgY29sdW1uIHZhbHVlIGJlIHN5bmNlZCB3aXRoIHN1YnNjcmliZXIKK2lzKCRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIGRhdGEgZnJvbSBj b25mX3RhYiBXSEVSRSBhID0gMScpLCAnZnJvbXB1Ym5ldycsICdyZWNvcmQgdXBkYXRlZCBvbiBz dWJzY3JpYmVyJyk7CisjIEFuZCBhZGRpdGlvbmFsIGNvbHVtbiBtYWludGFpbiB1cGRhdGVkIHZh bHVlCitpcygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBp IGZyb20gY29uZl90YWIgV0hFUkUgYSA9IDEnKSwgMSwgJ2NvbHVtbiByZWNvcmQgdXBkYXRlZCBv biBzdWJzY3JpYmVyJyk7CisKK29rKCEkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMoCisJ CXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZfdGFi XCI6IGNvbmZsaWN0PXVwZGF0ZV9kZWxldGVkLywKKwkJJGxvZ19vZmZzZXQpLCAnaW52YWxpZCBj b25mbGljdCBkZXRlY3RlZCcpOworCitvaygkbm9kZV9zdWJzY3JpYmVyLT5sb2dfY29udGFpbnMo CisJCXFyL0xPRzogIGNvbmZsaWN0IGRldGVjdGVkIG9uIHJlbGF0aW9uIFwicHVibGljLmNvbmZf dGFiXCI6IGNvbmZsaWN0PXVwZGF0ZV9vcmlnaW5fZGlmZmVycy8sCisJCSRsb2dfb2Zmc2V0KSwg J2NvcnJlY3QgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDFfdXBkYXRlX21pc3Npbmdfc2ltdWxhdGlv bi5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MV91cGRhdGVfbWlzc2luZ19zaW11bGF0 aW9uLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMWZjZDFjZWI1 MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MV91cGRhdGVf bWlzc2luZ19zaW11bGF0aW9uLnBsCkBAIC0wLDAgKzEsMTI1IEBACisjIENvcHlyaWdodCAoYykg MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHRoZSBj b25mbGljdCBkZXRlY3Rpb24gYW5kIHJlc29sdXRpb24gaW4gbG9naWNhbCByZXBsaWNhdGlvbgor IyBOb3QgaW50ZW5kZWQgdG8gYmUgY29tbWl0dGVkIGJlY2F1c2UgcXVpdGUgaGVhdnkKKyMgSGVy ZSB0byBkZW1vbnN0cmF0ZSByZXByb2R1Y2liaWxpdHkgd2l0aCBwZ2JlbmNoCit1c2Ugc3RyaWN0 OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgSVBDOjpSdW4gcXcoc3Rh cnQgZmluaXNoKTsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9u X3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50 cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFNldHVwCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAg PSBvbikpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBu b2RlIHdpdGggdHJhY2tfY29tbWl0X3RpbWVzdGFtcCBlbmFibGVkCitteSAkbm9kZV9zdWJzY3Jp YmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9z dWJzY3JpYmVyLT5zdGFydDsKKworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlvbl9w b2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlzIHNj cmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291bGQg bm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZV9zdWJzY3JpYmVyLT5jaGVj a19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdF eHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVhdGUg dGFibGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLAorCSJDUkVBVEUgVEFCTEUgdGJsKGEgaW50IFBSSU1BUlkga2V5LCBkYXRhX3B1YiBpbnQp OyIpOworCisjIENyZWF0ZSBzaW1pbGFyIHRhYmxlIG9uIHN1YnNjcmliZXIgd2l0aCBhZGRpdGlv bmFsIGluZGV4IHRvIGRpc2FibGUgSE9UIHVwZGF0ZXMKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGJsKGEgaW50IFBSSU1BUlkga2V5 LCBkYXRhX3B1YiBpbnQsIGRhdGFfc3ViIGludCBkZWZhdWx0IDApOworCSBDUkVBVEUgSU5ERVgg ZGF0YV9pbmRleCBPTiB0YmwoZGF0YV9wdWIpOyIpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGlj YXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAu ICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0YmwiKTsKKworIyBD cmVhdGUgdGhlIHN1YnNjcmlwdGlvbgorbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElP TiB0YXBfc3ViCisJIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9u YW1lPSRhcHBuYW1lJworCSBQVUJMSUNBVElPTiB0YXBfcHViIik7CisKK215ICRudW1fcm93cyA9 IDEwOworbXkgJG51bV91cGRhdGVzID0gMTAwMDA7CitteSAkbnVtX2NsaWVudHMgPSAxMDsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0YmwgU0VM RUNUIGksIGkgKiBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsJG51bV9yb3dzKSBpIik7CisKKyMg V2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAkYXBwbmFtZSk7CisK KyMgUHJlcGFyZSBzbWFsbCBwZ2JlbmNoIHNjcmlwdHMgYXMgZmlsZXMKK215ICRzdWJfc3FsID0g JG5vZGVfc3Vic2NyaWJlci0+YmFzZWRpciAuICcvc3ViX3VwZGF0ZS5zcWwnOworbXkgJHB1Yl9z cWwgPSAkbm9kZV9wdWJsaXNoZXItPmJhc2VkaXIgLiAnL3B1Yl9kZWxldGUuc3FsJzsKKworb3Bl biBteSAkZmgxLCAnPicsICRzdWJfc3FsIG9yIGRpZSAkITsKK3ByaW50ICRmaDEgIlxcc2V0IG51 bSByYW5kb20oMSwkbnVtX3Jvd3MpXG5VUERBVEUgdGJsIFNFVCBkYXRhX3N1YiA9IGRhdGFfc3Vi ICsgMSBXSEVSRSBhID0gOm51bTtcbiI7CitjbG9zZSAkZmgxOworCitvcGVuIG15ICRmaDIsICc+ JywgJHB1Yl9zcWwgb3IgZGllICQhOworcHJpbnQgJGZoMiAiXFxzZXQgbnVtIHJhbmRvbSgxLCRu dW1fcm93cylcblVQREFURSB0YmwgU0VUIGRhdGFfcHViID0gZGF0YV9wdWIgKyAxIFdIRVJFIGEg PSA6bnVtO1xuIjsKK2Nsb3NlICRmaDI7CisKK215IEBzdWJfY21kID0gKAorCSdwZ2JlbmNoJywK KwknLS1uby12YWN1dW0nLCAiLS1jbGllbnQ9JG51bV9jbGllbnRzIiwgJy0tam9icz00JywgJy0t ZXhpdC1vbi1hYm9ydCcsICItLXRyYW5zYWN0aW9ucz0kbnVtX3VwZGF0ZXMiLAorCSctcCcsICRu b2RlX3N1YnNjcmliZXItPnBvcnQsICctaCcsICRub2RlX3N1YnNjcmliZXItPmhvc3QsICctZics ICRzdWJfc3FsLCAncG9zdGdyZXMnCispOworCitteSBAcHViX2NtZCA9ICgKKwkncGdiZW5jaCcs CisJJy0tbm8tdmFjdXVtJywgIi0tY2xpZW50PSRudW1fY2xpZW50cyIsICctLWpvYnM9NCcsICct LWV4aXQtb24tYWJvcnQnLCAiLS10cmFuc2FjdGlvbnM9JG51bV91cGRhdGVzIiwKKwknLXAnLCAk bm9kZV9wdWJsaXNoZXItPnBvcnQsICctaCcsICRub2RlX3B1Ymxpc2hlci0+aG9zdCwgJy1mJywg JHB1Yl9zcWwsICdwb3N0Z3JlcycKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycpOworIyBUaGlz IHNob3VsZCBuZXZlciBoYXBwZW4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdhcHBseV9oYW5kbGVfdXBk YXRlX2ludGVybmFsX3VwZGF0ZV9taXNzaW5nJywgJ2Vycm9yJykiKTsKK215ICRsb2dfb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworIyBTdGFydCBib3RoIGNvbmN1cnJl bnRseQorbXkgKCRzdWJfb3V0LCAkc3ViX2VyciwgJHB1Yl9vdXQsICRwdWJfZXJyKSA9ICgnJywg JycsICcnLCAnJyk7CitteSAkc3ViX2ggPSBzdGFydCBcQHN1Yl9jbWQsICc+JywgXCRzdWJfb3V0 LCAnMj4nLCBcJHN1Yl9lcnI7CitteSAkcHViX2ggPSBzdGFydCBcQHB1Yl9jbWQsICc+JywgXCRw dWJfb3V0LCAnMj4nLCBcJHB1Yl9lcnI7CisKKyMgV2FpdCBmb3IgY29tcGxldGlvbgorZmluaXNo ICRzdWJfaDsKK2ZpbmlzaCAkcHViX2g7CisKK2xpa2UoJHN1Yl9vdXQsIHFyL2FjdHVhbGx5IHBy b2Nlc3NlZC8sICdzdWJzY3JpYmVyIHBnYmVuY2ggY29tcGxldGVkJyk7CitsaWtlKCRwdWJfb3V0 LCBxci9hY3R1YWxseSBwcm9jZXNzZWQvLCAncHVibGlzaGVyIHBnYmVuY2ggY29tcGxldGVkJyk7 CisKKyMgTGV0IHN1YnNjcmlwdGlvbiBjYXRjaCB1cCwgdGhlbiBjaGVjayBleHBlY3RhdGlvbnMK KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxp c2hlciwgJ3RhcF9zdWInKTsKKworb2soISRub2RlX3N1YnNjcmliZXItPmxvZ19jb250YWlucygK KwkJcXIvRVJST1I6ICBlcnJvciB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBhcHBseV9o YW5kbGVfdXBkYXRlX2ludGVybmFsX3VwZGF0ZV9taXNzaW5nLywKKwkJJGxvZ19vZmZzZXQpLCAn aW52YWxpZCBjb25mbGljdCBkZXRlY3RlZCcpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMu MAoK --000000000000583b17064c8c35a2 Content-Type: application/x-patch; name="v17-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Disposition: attachment; filename="v17-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmi354oh1 RnJvbSA1ZjJkZGM1MDJjY2IxYTlmMGZmNGU1YjgxYzc5Nzc1YWMyN2E5YzUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogV2VkLCAzIFNl cCAyMDI1IDE5OjA4OjU1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MTcgMi8yXSBGaXggbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdCBkZXRlY3Rpb24gZHVyaW5nCiB0dXBsZSBsb29rdXAKClNO QVBTSE9UX0RJUlRZIHNjYW5zIGNvdWxkIG1pc3MgY29uZmxpY3QgZGV0ZWN0aW9uIHdpdGggY29u Y3VycmVudCB0cmFuc2FjdGlvbnMgZHVyaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uClJlcGxhY2Ug U05BUFNIT1RfRElSVFkgc2NhbiB3aXRoIHRoZSBHZXRMYXRlc3RTbmFwc2hvdCBpbiBSZWxhdGlv bkZpbmRSZXBsVHVwbGVCeUluZGV4IGFuZCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEuCi0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCA2MyArKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlv bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXggMjQ5N2Vl N2VkYzUuLjFjY2RlMmFiMzU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24u YwpAQCAtMTg3LDggKzE4Nyw2IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRp b24gcmVsLCBPaWQgaWR4b2lkLAogCVNjYW5LZXlEYXRhIHNrZXlbSU5ERVhfTUFYX0tFWVNdOwog CWludAkJCXNrZXlfYXR0b2ZmOwogCUluZGV4U2NhbkRlc2Mgc2NhbjsKLQlTbmFwc2hvdERhdGEg c25hcDsKLQlUcmFuc2FjdGlvbklkIHh3YWl0OwogCVJlbGF0aW9uCWlkeHJlbDsKIAlib29sCQlm b3VuZDsKIAlUeXBlQ2FjaGVFbnRyeSAqKmVxID0gTlVMTDsKQEAgLTE5OSwxNyArMTk3LDE3IEBA IFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAog CiAJaXNJZHhTYWZlVG9Ta2lwRHVwbGljYXRlcyA9IChHZXRSZWxhdGlvbklkZW50aXR5T3JQSyhy ZWwpID09IGlkeG9pZCk7CiAKLQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQogCS8qIEJ1aWxk IHNjYW4ga2V5LiAqLwogCXNrZXlfYXR0b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNr ZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90KTsKIAotCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4u ICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNr ZXlfYXR0b2ZmLCAwKTsKKwkvKiBTdGFydCBhbiBpbmRleCBzY2FuLiBTbmFwc2hvdEFueSB3aWxs IGJlIHJlcGxhY2VkIGJlbG93LiAqLworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhy ZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CiAKIHJldHJ5OgogCWZvdW5k ID0gZmFsc2U7Ci0KKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJ LyogVXBkYXRlIHRoZSBhY3R1YWwgc2NhbiBzbmFwc2hvdCBlYWNoIHJldHJ5ICovCisJc2Nhbi0+ eHNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwogCWluZGV4X3Jlc2NhbihzY2FuLCBz a2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKIAkvKiBUcnkgdG8gZmluZCB0aGUgdHVwbGUg Ki8KQEAgLTIzMCwxOSArMjI4LDYgQEAgcmV0cnk6CiAKIAkJRXhlY01hdGVyaWFsaXplU2xvdChv dXRzbG90KTsKIAotCQl4d2FpdCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNuYXAueG1pbikgPwot CQkJc25hcC54bWluIDogc25hcC54bWF4OwotCi0JCS8qCi0JCSAqIElmIHRoZSB0dXBsZSBpcyBs b2NrZWQsIHdhaXQgZm9yIGxvY2tpbmcgdHJhbnNhY3Rpb24gdG8gZmluaXNoIGFuZAotCQkgKiBy ZXRyeS4KLQkJICovCi0JCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh4d2FpdCkpCi0JCXsKLQkJ CVhhY3RMb2NrVGFibGVXYWl0KHh3YWl0LCBOVUxMLCBOVUxMLCBYTFRXX05vbmUpOwotCQkJZ290 byByZXRyeTsKLQkJfQotCiAJCS8qIEZvdW5kIG91ciB0dXBsZSBhbmQgaXQncyBub3QgbG9ja2Vk ICovCiAJCWZvdW5kID0gdHJ1ZTsKIAkJYnJlYWs7CkBAIC0yNTQsOCArMjM5LDYgQEAgcmV0cnk6 CiAJCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJCVRNX1Jlc3VsdAlyZXM7CiAKLQkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCiAJCXJlcyA9IHRhYmxlX3R1cGxlX2xv Y2socmVsLCAmKG91dHNsb3QtPnR0c190aWQpLCBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJ CSAgIG91dHNsb3QsCiAJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZChmYWxzZSksCkBAIC0y NjQsMTMgKzI0NywxNSBAQCByZXRyeToKIAkJCQkJCQkgICAwIC8qIGRvbid0IGZvbGxvdyB1cGRh dGVzICovICwKIAkJCQkJCQkgICAmdG1mZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQog CQlpZiAoc2hvdWxkX3JlZmV0Y2hfdHVwbGUocmVzLCAmdG1mZCkpCisJCXsKKwkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiAJCQlnb3RvIHJldHJ5OworCQl9CiAJfQogCiAJaW5kZXhfZW5kc2Nhbihz Y2FuKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyogRG9uJ3QgcmVsZWFzZSBsb2NrIHVu dGlsIGNvbW1pdC4gKi8KIAlpbmRleF9jbG9zZShpZHhyZWwsIE5vTG9jayk7CkBAIC0zNzEsOSAr MzU2LDcgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxl TW9kZSBsb2NrbW9kZSwKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2NhbnNsb3Q7CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwotCVNuYXBzaG90RGF0YSBzbmFwOwogCVR5cGVDYWNoZUVudHJ5ICoqZXE7Ci0J VHJhbnNhY3Rpb25JZCB4d2FpdDsKIAlib29sCQlmb3VuZDsKIAlUdXBsZURlc2MJZGVzYyBQR19V U0VEX0ZPUl9BU1NFUlRTX09OTFkgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CiAKQEAgLTM4MSwx MyArMzY0LDE1IEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCiAKIAllcSA9IHBhbGxvYzBfYXJyYXkoVHlwZUNhY2hlRW50cnkg Kiwgb3V0c2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvci0+bmF0dHMpOwogCi0JLyogU3RhcnQgYSBo ZWFwIHNjYW4uICovCi0JSW5pdERpcnR5U25hcHNob3Qoc25hcCk7Ci0Jc2NhbiA9IHRhYmxlX2Jl Z2luc2NhbihyZWwsICZzbmFwLCAwLCBOVUxMKTsKKwkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gU25h cHNob3RBbnkgd2lsbCBiZSByZXBsYWNlZCBiZWxvdy4gKi8KKwlzY2FuID0gdGFibGVfYmVnaW5z Y2FuKHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwpOwogCXNjYW5zbG90ID0gdGFibGVfc2xvdF9j cmVhdGUocmVsLCBOVUxMKTsKIAogcmV0cnk6CiAJZm91bmQgPSBmYWxzZTsKKwlQdXNoQWN0aXZl U25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJLyogVXBkYXRlIHRoZSBhY3R1YWwgc2Nh biBzbmFwc2hvdCBlYWNoIHJldHJ5ICovCisJc2Nhbi0+cnNfc25hcHNob3QgPSBHZXRBY3RpdmVT bmFwc2hvdCgpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwpOwogCkBAIC00MDAsMTkgKzM4 NSw2IEBAIHJldHJ5OgogCQlmb3VuZCA9IHRydWU7CiAJCUV4ZWNDb3B5U2xvdChvdXRzbG90LCBz Y2Fuc2xvdCk7CiAKLQkJeHdhaXQgPSBUcmFuc2FjdGlvbklkSXNWYWxpZChzbmFwLnhtaW4pID8K LQkJCXNuYXAueG1pbiA6IHNuYXAueG1heDsKLQotCQkvKgotCQkgKiBJZiB0aGUgdHVwbGUgaXMg bG9ja2VkLCB3YWl0IGZvciBsb2NraW5nIHRyYW5zYWN0aW9uIHRvIGZpbmlzaCBhbmQKLQkJICog cmV0cnkuCi0JCSAqLwotCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoeHdhaXQpKQotCQl7Ci0J CQlYYWN0TG9ja1RhYmxlV2FpdCh4d2FpdCwgTlVMTCwgTlVMTCwgWExUV19Ob25lKTsKLQkJCWdv dG8gcmV0cnk7Ci0JCX0KLQogCQkvKiBGb3VuZCBvdXIgdHVwbGUgYW5kIGl0J3Mgbm90IGxvY2tl ZCAqLwogCQlicmVhazsKIAl9CkBAIC00MjMsOCArMzk1LDYgQEAgcmV0cnk6CiAJCVRNX0ZhaWx1 cmVEYXRhIHRtZmQ7CiAJCVRNX1Jlc3VsdAlyZXM7CiAKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dExhdGVzdFNuYXBzaG90KCkpOwotCiAJCXJlcyA9IHRhYmxlX3R1cGxlX2xvY2socmVsLCAmKG91 dHNsb3QtPnR0c190aWQpLCBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSAgIG91dHNsb3Qs CiAJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZChmYWxzZSksCkBAIC00MzMsMTMgKzQwMywx NiBAQCByZXRyeToKIAkJCQkJCQkgICAwIC8qIGRvbid0IGZvbGxvdyB1cGRhdGVzICovICwKIAkJ CQkJCQkgICAmdG1mZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAogCQlpZiAoc2hvdWxk X3JlZmV0Y2hfdHVwbGUocmVzLCAmdG1mZCkpCisJCXsKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAJCQlnb3RvIHJldHJ5OworCQl9CiAJfQogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsKKwlQb3BB Y3RpdmVTbmFwc2hvdCgpOwogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2NhbnNsb3Qp OwogCiAJcmV0dXJuIGZvdW5kOwotLSAKMi40My4wCgo= --000000000000583b17064c8c35a2--