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 1w9onl-001mmg-0b for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 18:35:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9omk-00BFun-1J for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 18:34:54 +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 1w9omk-00BFuf-04 for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 18:34:54 +0000 Received: from mail-lf1-x132.google.com ([2a00:1450:4864:20::132]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9omi-00000000wdg-0AYY for pgsql-hackers@postgresql.org; Mon, 06 Apr 2026 18:34:54 +0000 Received: by mail-lf1-x132.google.com with SMTP id 2adb3069b0e04-59de8155501so4860883e87.3 for ; Mon, 06 Apr 2026 11:34:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775500492; cv=none; d=google.com; s=arc-20240605; b=YyWej5av3R7+fdvJRmYlSVWDC98lLToy8M6idp/BTQR32gIsy8Z44TpCoq8/+vDH/b FnmxexBj+cXEGS8ORCpF6Djt1+xZ0dPxRliQ702qE06/0wLgJLuMlBaluY/kAJRXhTmx w+TZEdrBe3RgTSS4Z7Inds9bei1ALfUgag3NMuiaY+X6p+d4rNLsvL15ppcYrLV7vQFR Dk5x9g0Z2Dtb1gKkH4PjnID1l3kv7TozDNhuK8acoAEcn83O0Nq34xH+i0rY0nFuHue2 p5hh1TZiKijQ+OHjaweE95H/3Lra8GLjgAfbzTHzxbTLXNrvNBQwsvOLwztd9Q39gPqt 8BDA== 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=JmS/Zr4M3ZhR1LC/qIKdgMO/yKjmG0BJW7fhkmE4AQM=; fh=PT2ml01S/ASPk4d2uMfHTiLhBsVKEXrg8tULqAgEio8=; b=O3ge8g6n/wS9rYDkBiLU4tx2xa1qDfoNjiZJKKaSQVQRFHA3yR65avJWra3lJesSKs UGIY/C7ndWYFgAHjtyTqZccYTn8LSNZIzzsqy6xXCCb/XV1tR/BsL0RnglQm1P8w/xK5 o2q4UgC+OkGSs9HOhzHCBMxZSGzpOZ5dLH/z5y5Og+KouaJlsvwqlJijw7nDd9f/QR+j YC10B4BVxQs1ZegVAvkSQhs4NXMnU5NKj9OH7Frff4O9t7s7DdUnCgqUVnfy4hX7wdbT 0kXflVYpgsnGrEB5b8SpQjk8ZfXZ3RVhQA4HTxWVJJChDw91OrkKBThKnxMTujnBQRRy R9oQ==; 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=20251104; t=1775500492; x=1776105292; 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=JmS/Zr4M3ZhR1LC/qIKdgMO/yKjmG0BJW7fhkmE4AQM=; b=X9tbwLGg0mzF9QdnPy/XKYFp+guJBjlsYvxySweYYMIFoWtGdggK/ak4QcBZazsPj1 XMZx9yjeHrpJC4iEzCu0F8RVbO4U5Mewf23Nny3LqaojjIw+lOnA69DwYoR6DuVL1J5C mWS7NjvefydZRZLW0WH6BVmJvN2lfwhQPdN+UhqD5spDu/MIbxve4ImdNDwUrj0GEsBn w9/4h62p1aZ+7TubxKEfUZbCQIB1NO9wXSMjpCu+8HgunfkpOYD1GruMKA2cr6MwXjQS SdCtiw2Eb4YO2/4zU0Yd+XtJuSmshn/RkqT6R+qemVLCbWV98U4Q9+giIbveS2xFPW1k xGDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775500492; x=1776105292; 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=JmS/Zr4M3ZhR1LC/qIKdgMO/yKjmG0BJW7fhkmE4AQM=; b=O1x2PS/Pcf53iVzl+Tyr4bI/Y8u22GzisHiGWrLRv4bVL+TffBwj3IjKLHsX3oQzB1 9PUg4V3g1qRK8oFuBf0kon9/nAkubhan0RVYaXhz/ZR97Om/oD7+D5m2vdnCkobz0QKp uncLcXnvHNlEhafRweMi2w5gvS+UqwsfKJ5C+WBImWDfGdj5sr/xqLlgM0dWoyO6pbh2 cimdSaCtJVs5Vd0IsrYCPrRI+JQMCwOab1bRuRVV6u5VpJVooV+NViaMC1zefXXHSSAG 0rrTn12aWxivmi/6QRprzcOBGB/9h2XEstXOZoIbxTakvnXY0CGPFFQR+wdb+qxd4Q05 n6jQ== X-Forwarded-Encrypted: i=1; AJvYcCUXg2l9xXHk7DM00BWVfP7QbYkzD1iRYndcqhOH88OdGCStDo09zsenryAmoNE9LbLo/10lC77g87LgWB6Z@postgresql.org X-Gm-Message-State: AOJu0YyKS0RiKmBknqZCXrCyk1hJM+VBgf6Y5C7v3j8ByL9+fBEvpbND OmGXNOyB+Pyp11nPwQZBFnJVAAv6ivJpI1MzeJkPsvF8HS3c0la1Gk1SZ72Y3nFV8gvbxOESeTL m6kIfyasQAYsCesCqLLTnOWiQdvQwLbQ= X-Gm-Gg: AeBDievMhf6zL/Uvmn1R+/G9BERkARVE2+TlHyc+jTqB0/WNLNmQSlrx4ORM6qX5VO5 scMX8UpMY2VjGA5PkOSpYThj9YSzuwyH+SNeB55nfGUDlDviWdcJz60wrsE9mVb2DWdDiLTcKVX I8RF+PAjTlOLaKk30R1jIQ7SVJEbdSlYXqgp39g2R0DX5x/28Epp1gvzoQPSwffnTOXGSHNVBYB m+JH23mqhPC+eyNvyF/QinA88ebLsz2mv4Y1p5C6VdX1rbLhttlGvVOJ149V2XENktnsSM5ajcH /w7nGa+JdjMDC69wlvOkPZainlcl1za8WtwtIooFUiP8XmhVKgFN7PX/tnkPb+CID3nP X-Received: by 2002:a05:6512:3184:b0:5a2:bc5d:c675 with SMTP id 2adb3069b0e04-5a3375804edmr4598946e87.28.1775500491543; Mon, 06 Apr 2026 11:34:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Mihail Nikalayeu Date: Mon, 6 Apr 2026 20:33:00 +0200 X-Gm-Features: AQROBzC6xESvPoNuw8v27DQdYnIdDeG9F1u7lD_Ko8E7Y2aoCCxv3REsLuZjw48 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="000000000000191014064eceec45" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000191014064eceec45 Content-Type: text/plain; charset="UTF-8" Rebased. --000000000000191014064eceec45 Content-Type: application/octet-stream; name="v18-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Disposition: attachment; filename="v18-0001-This-patch-introduces-new-injection-points-and-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnngy6i60 RnJvbSBiNTVmMmQ3NDM2NThlMDhlMjUyMzVjNzU4YzBlMjk4N2ZmODg4Y2Y4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyMyBOb3YgMjAyNCAxMzoyNToxMSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggdjE4IDEv Ml0gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBpbmplY3Rpb24gcG9pbnRzIGFuZCBUQVAKIHRl c3RzIHRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IGNvbmZsaWN0IGRldGVjdGlvbiBpc3N1ZXMgdGhh dCBhcmlzZSBkdXJpbmcKIFNOQVBTSE9UX0RJUlRZIGluZGV4IHNjYW5zIGluIGxvZ2ljYWwgcmVw bGljYXRpb24uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAg ICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUgICAgICAgICAg ICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyAgICAgICAg ICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICB8ICAgNCArCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5oICAgICAgICAgICAgICAgICAg fCAgMTQgKysKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM5X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwgfCAx MzkgKysrKysrKysrKysrKysrKysKIC4uLi9zdWJzY3JpcHRpb24vdC8wNDBfdXBkYXRlX21pc3Np bmdfcmFjZS5wbCB8IDE0MSArKysrKysrKysrKysrKysrKwogLi4uL3QvMDQxX3VwZGF0ZV9taXNz aW5nX3dpdGhfcmV0YWluLnBsICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogLi4uL3Qv MDQyX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwgICAgICAgIHwgMTI1ICsrKysrKysrKysr KysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTk0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfZGVsZXRlX21p c3NpbmdfcmFjZS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzA0MF91cGRhdGVfbWlzc2luZ19yYWNlLnBsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDQxX3VwZGF0ZV9taXNzaW5nX3dpdGhfcmV0YWluLnBsCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQyX3VwZGF0ZV9taXNzaW5nX3Np bXVsYXRpb24ucGwKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAyMzI4OGE0Zjk5 NC4uY2YwZmVjZGFmYmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRl eGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtNTIsMTIg KzUyLDE0IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAi dXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAK IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpAQCAtNzU4LDYgKzc2MCwxMyBAQCBpbmRleF9nZXRuZXh0X3Nsb3QoSW5k ZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgVHVwbGVUYWJsZVNsb3Qg KgogCQkgKiB0aGUgaW5kZXguCiAJCSAqLwogCQlBc3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKCZz Y2FuLT54c19oZWFwdGlkKSk7CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkJaWYgKCFJ c0NhdGFsb2dSZWxhdGlvbihzY2FuLT5oZWFwUmVsYXRpb24pICYmIElzTG9naWNhbFdvcmtlcigp KQorCQl7CisJCQlJTkpFQ1RJT05fUE9JTlQoImluZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0 Y2hfYXBwbHlfZGlydHkiLCBOVUxMKTsKKwkJfQorI2VuZGlmCisKIAkJaWYgKGluZGV4X2ZldGNo X2hlYXAoc2Nhbiwgc2xvdCkpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL1JFQURNRSBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv UkVBRE1FCmluZGV4IGNiOTIxY2EyZWY2Li5jOTViNjllZjI2ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9SRUFETUUKQEAgLTEwMyw2ICsxMDMsMTUgQEAgV2UgYWxzbyByZW1lbWJlciB0aGUgbGVmdC1s aW5rLCBhbmQgZm9sbG93IGl0IHdoZW4gdGhlIHNjYW4gbW92ZXMgYmFja3dhcmRzCiAodGhvdWdo IHRoaXMgcmVxdWlyZXMgZXh0cmEgaGFuZGxpbmcgdG8gYWNjb3VudCBmb3IgY29uY3VycmVudCBz cGxpdHMgb2YKIHRoZSBsZWZ0IHNpYmxpbmc7IHNlZSBkZXRhaWxlZCBtb3ZlLWxlZnQgYWxnb3Jp dGhtIGJlbG93KS4KIAorRGVzcGl0ZSB0aGUgZGVzY3JpYmVkIG1lY2hhbmljcyBpbiBwbGFjZSwg aW5jb25zaXN0ZW50IHJlc3VsdHMgbWF5IHN0aWxsIG9jY3VyCitkdXJpbmcgbm9uLU1WQ0Mgc2Nh bnMgKFNuYXBzaG90RGlydHkgYW5kIFNuYXBzaG90U2VsZikuIFRoaXMgaXNzdWUgY2FuIG9jY3Vy IGlmIGEgCitjb25jdXJyZW50IHRyYW5zYWN0aW9uIGRlbGV0ZXMgYSB0dXBsZSBhbmQgaW5zZXJ0 cyBhIG5ldyB0dXBsZSB3aXRoIGEgbmV3IFRJRCBpbiB0aGUgCitzYW1lIHBhZ2Ugb3IgdG8gdGhl IGxlZnQvcmlnaHQgKGRlcGVuZGluZyBvbiBzY2FuIGRpcmVjdGlvbikgb2YgY3VycmVudCBzY2Fu IHBvc2l0aW9uLgorSWYgdGhlIHNjYW4gaGFzIGFscmVhZHkgdmlzaXRlZCB0aGUgcGFnZSBhbmQg Y2FjaGVkIGl0cyBjb250ZW50IGluIHRoZQorYmFja2VuZC1sb2NhbCBzdG9yYWdlLCBpdCBtaWdo dCBza2lwIHRoZSBvbGQgdHVwbGUgZHVlIHRvIGRlbGV0aW9uIGFuZCBtaXNzIHRoZSBuZXcgCit0 dXBsZSBiZWNhdXNlIHRoZSBzY2FuIGRvZXMgbm90IHJlLXJlYWQgdGhlIHBhZ2UuIE5vdGUgaXQg YWZmZWN0cyBub3Qgb25seSBidHJlZQorc2NhbiBidXQgYWxzbyBhIGhlYXAgc2Nhbi4KKwogSW4g bW9zdCBjYXNlcyB3ZSByZWxlYXNlIG91ciBsb2NrIGFuZCBwaW4gb24gYSBwYWdlIGJlZm9yZSBh dHRlbXB0aW5nCiB0byBhY3F1aXJlIHBpbiBhbmQgbG9jayBvbiB0aGUgcGFnZSB3ZSBhcmUgbW92 aW5nIHRvLiAgSW4gYSBmZXcgcGxhY2VzCiBpdCBpcyBuZWNlc3NhcnkgdG8gbG9jayB0aGUgbmV4 dCBwYWdlIGJlZm9yZSByZWxlYXNpbmcgdGhlIGN1cnJlbnQgb25lLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYwppbmRleCA0MzYzZTE1NGMwZi4uZmFiNWEyNzU5YTYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xMTgsNiArMTE4LDcgQEAKICNpbmNsdWRlICJ1dGls cy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5j bHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5o IgogCiAvKiB3YWl0TW9kZSBhcmd1bWVudCB0byBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2Nv bnN0cmFpbnQoKSAqLwogdHlwZWRlZiBlbnVtCkBAIC03ODAsNyArNzgxLDkgQEAgY2hlY2tfZXhj bHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCS8qCiAJICogU2VhcmNoIHRoZSB0dXBsZXMgdGhhdCBhcmUgaW4gdGhlIGluZGV4IGZvciBh bnkgdmlvbGF0aW9ucywgaW5jbHVkaW5nCiAJICogdHVwbGVzIHRoYXQgYXJlbid0IHZpc2libGUg eWV0LgotCSAqLworCSAqIFNuYXBzaG90IGRpcnR5IG1heSBtaXNzIHNvbWUgdHVwbGVzIGluIHRo ZSBjYXNlIG9mIHBhcmFsbGVsIHVwZGF0ZXMsCisJICogYnV0IGl0IGlzIGFjY2VwdGFibGUgaGVy ZS4KKwkqLwogCUluaXREaXJ0eVNuYXBzaG90KERpcnR5U25hcHNob3QpOwogCiAJZm9yIChpID0g MDsgaSA8IGluZG5rZXlhdHRzOyBpKyspCkBAIC05NTAsNiArOTUzLDggQEAgcmV0cnk6CiAJCUlO SkVDVElPTl9QT0lOVCgiY2hlY2stZXhjbHVzaW9uLW9yLXVuaXF1ZS1jb25zdHJhaW50LW5vLWNv bmZsaWN0IiwgTlVMTCk7CiAjZW5kaWYKIAorCWlmICghY29uZmxpY3QpCisJCUlOSkVDVElPTl9Q T0lOVCgiY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50X25vX2NvbmZsaWN0Iiwg TlVMTCk7CiAJcmV0dXJuICFjb25mbGljdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggYjM4MTcwZjBmYmUuLjUzN2EzZTg0MDM5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTI5MCw2ICsyOTAsNyBAQAogI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0yOTkyLDcgKzI5OTMsMTAgQEAgYXBwbHlfaGFuZGxl X3VwZGF0ZV9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJY29uZmxpY3R0 dXBsZS5vcmlnaW4gIT0gcmVwbG9yaWdpbl94YWN0X3N0YXRlLm9yaWdpbikKIAkJCXR5cGUgPSBD VF9VUERBVEVfREVMRVRFRDsKIAkJZWxzZQorCQl7CisJCQlJTkpFQ1RJT05fUE9JTlQoImFwcGx5 X2hhbmRsZV91cGRhdGVfaW50ZXJuYWxfdXBkYXRlX21pc3NpbmciLCBOVUxMKTsKIAkJCXR5cGUg PSBDVF9VUERBVEVfTUlTU0lORzsKKwkJfQogCiAJCS8qIFN0b3JlIHRoZSBuZXcgdHVwbGUgZm9y IGNvbmZsaWN0IHJlcG9ydGluZyAqLwogCQlzbG90X3N0b3JlX2RhdGEobmV3c2xvdCwgcmVsbWFw ZW50cnksIG5ld3R1cCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zbmFwc2hvdC5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaAppbmRleCA5NzY2YWFiY2FkNC4uMmZjMDA1 ODc5NmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBzaG90LmgKKysrIGIvc3Jj L2luY2x1ZGUvdXRpbHMvc25hcHNob3QuaApAQCAtNTMsNiArNTMsMTMgQEAgdHlwZWRlZiBlbnVt IFNuYXBzaG90VHlwZQogCSAqIC0gcHJldmlvdXMgY29tbWFuZHMgb2YgdGhpcyB0cmFuc2FjdGlv bgogCSAqIC0gY2hhbmdlcyBtYWRlIGJ5IHRoZSBjdXJyZW50IGNvbW1hbmQKIAkgKgorCSAqIE5v dGU6IHN1Y2ggYSBzbmFwc2hvdCBtYXkgbWlzcyBhbiBleGlzdGluZyBsb2dpY2FsIHR1cGxlIGlu IGNhc2Ugb2YKKwkgKiBwYXJhbGxlbCB1cGRhdGUuCisJICogSWYgYSBuZXcgdmVyc2lvbiBvZiBh IHR1cGxlIGlzIGluc2VydGVkIGludG8gYW4gYWxyZWFkeSBwcm9jZXNzZWQgcGFnZQorCSAqIGJ1 dCB0aGUgb2xkIG9uZSBtYXJrZWQgd2l0aCBjb21taXR0ZWQgeG1heCAtIHNuYXBzaG90IHdpbGwg c2tpcCB0aGUgb2xkCisJICogb25lIGFuZCBuZXZlciBtZWV0IHRoZSBuZXcgb25lIGR1cmluZyB0 aGF0IHNjYW4gLSByZXN1bHRpbmcgaW4gc2tpcHBpbmcKKwkgKiB0aGF0IHR1cGxlIGF0IGFsbC4K KwkgKgogCSAqIERvZXMgX25vdF8gaW5jbHVkZToKIAkgKiAtIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucyAoYXMgb2YgdGhlIGN1cnJlbnQgaW5zdGFudCkKIAkgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA IC04Miw2ICs4OSwxMyBAQCB0eXBlZGVmIGVudW0gU25hcHNob3RUeXBlCiAJICogdHJhbnNhY3Rp b24gYW5kIGNvbW1pdHRlZC9hYm9ydGVkIHhhY3RzIGFyZSBjb25jZXJuZWQuICBIb3dldmVyLCBp dAogCSAqIGFsc28gaW5jbHVkZXMgdGhlIGVmZmVjdHMgb2Ygb3RoZXIgeGFjdHMgc3RpbGwgaW4g cHJvZ3Jlc3MuCiAJICoKKwkgKiBOb3RlOiBzdWNoIGEgc25hcHNob3QgbWF5IG1pc3MgYW4gZXhp c3RpbmcgbG9naWNhbCB0dXBsZSBpbiBjYXNlIG9mCisJICogcGFyYWxsZWwgdXBkYXRlLgorCSAq IElmIGEgbmV3IHZlcnNpb24gb2YgYSB0dXBsZSBpcyBpbnNlcnRlZCBpbnRvIGFuIGFscmVhZHkg cHJvY2Vzc2VkIHBhZ2UgYnV0IHRoZQorCSAqIG9sZCBvbmUgbWFya2VkIHdpdGggY29tbWl0dGVk L2luLXByb2dyZXNzIHhtYXggLSBzbmFwc2hvdCB3aWxsIHNraXAgdGhlIG9sZCBvbmUKKwkgKiBh bmQgbmV2ZXIgbWVldCB0aGUgbmV3IG9uZSBkdXJpbmcgdGhhdCBzY2FuIC0gcmVzdWx0aW5nIGlu IHNraXBwaW5nIHRoYXQgdHVwbGUKKwkgKiBhdCBhbGwuCisJICoKIAkgKiBBIHNwZWNpYWwgaGFj ayBpcyB0aGF0IHdoZW4gYSBzbmFwc2hvdCBvZiB0aGlzIHR5cGUgaXMgdXNlZCB0bwogCSAqIGRl dGVybWluZSB0dXBsZSB2aXNpYmlsaXR5LCB0aGUgcGFzc2VkLWluIHNuYXBzaG90IHN0cnVjdCBp cyB1c2VkIGFzIGFuCiAJICogb3V0cHV0IGFyZ3VtZW50IHRvIHJldHVybiB0aGUgeGlkcyBvZiBj b25jdXJyZW50IHhhY3RzIHRoYXQgYWZmZWN0ZWQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApp bmRleCBlNzFlOTVjNjI5Ny4uYWUwYjE5YjA4YzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVp bGQKQEAgLTQ4LDYgKzQ4LDEwIEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAzNl9zZXF1ZW5jZXMu cGwnLAogICAgICAgJ3QvMDM3X2V4Y2VwdC5wbCcsCiAgICAgICAndC8wMzhfd2Fsc25kX3NodXRk b3duX3RpbWVvdXQucGwnLAorCSAgJ3QvMDM5X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwnLAorCSAg J3QvMDQwX3VwZGF0ZV9taXNzaW5nX3JhY2UucGwnLAorCSAgJ3QvMDQxX3VwZGF0ZV9taXNzaW5n X3dpdGhfcmV0YWluLnBsJywKKwkgICd0LzA0Ml91cGRhdGVfbWlzc2luZ19zaW11bGF0aW9uLnBs JywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X2RlbGV0ZV9taXNzaW5nX3JhY2UucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzlfZGVsZXRlX21pc3NpbmdfcmFjZS5wbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTFkZDM1MWRjMTAKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfZGVsZXRlX21pc3NpbmdfcmFjZS5wbApAQCAt MCwwICsxLDEzOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNv bHV0aW9uIGluIGxvZ2ljYWwgcmVwbGljYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVf aW5qZWN0aW9uX3BvaW50c30gbmUgJ3llcycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0 aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQnOworfQorCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMgU2V0IGl0IHRvIDAgdG8gbWFrZSBzZXQgc3VjY2VzczsgVE9E TzogZGVsZXRlIHRoYXQgZm9yIGNvbW1pdAorbXkgJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uID0g MTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFNldHVwCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdy ZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAg PSBvbikpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworCisjIENyZWF0ZSBzdWJzY3JpYmVy IG5vZGUgd2l0aCB0cmFja19jb21taXRfdGltZXN0YW1wIGVuYWJsZWQKK215ICRub2RlX3N1YnNj cmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRu b2RlX3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2Rl X3N1YnNjcmliZXItPnN0YXJ0OworCisKKyMgQ2hlY2sgaWYgdGhlIGV4dGVuc2lvbiBpbmplY3Rp b25fcG9pbnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisjIHBvc3NpYmxlIHRoYXQgdGhp cyBzY3JpcHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVyZSB0aGUgbW9kdWxlCisjIHdv dWxkIG5vdCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICghJG5vZGVfc3Vic2NyaWJlci0+ Y2hlY2tfZXh0ZW5zaW9uKCdpbmplY3Rpb25fcG9pbnRzJykpCit7CisJcGxhbiBza2lwX2FsbCA9 PiAnRXh0ZW5zaW9uIGluamVjdGlvbl9wb2ludHMgbm90IGluc3RhbGxlZCc7Cit9CisKKyMgQ3Jl YXRlIHRhYmxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIGNvbmZfdGFiKGEgaW50IFBSSU1BUlkga2V5LCBkYXRh IHRleHQpOyIpOworCisjIENyZWF0ZSBzaW1pbGFyIHRhYmxlIG9uIHN1YnNjcmliZXIgd2l0aCBh ZGRpdGlvbmFsIGluZGV4IHRvIGRpc2FibGUgSE9UIHVwZGF0ZXMKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgY29uZl90YWIoYSBpbnQg UFJJTUFSWSBrZXksIGRhdGEgdGV4dCk7CisJIENSRUFURSBJTkRFWCBkYXRhX2luZGV4IE9OIGNv bmZfdGFiKGRhdGEpOyIpOworCisjIFNldCB1cCBleHRlbnNpb24gdG8gc2ltdWxhdGUgcmFjZSBj b25kaXRpb24KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnQ1JFQVRF IEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOycpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGlj YXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAu ICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSBjb25mX3RhYiIpOwor CisjIEluc2VydCByb3cgdG8gYmUgdXBkYXRlZCBsYXRlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gY29uZl90YWIoYSwgZGF0YSkgVkFMVUVT ICgxLCdmcm9tcHViJykiKTsKKworIyBDcmVhdGUgdGhlIHN1YnNjcmlwdGlvbgorbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCSBQVUJMSUNBVElPTiB0YXBf cHViIik7CisKKyMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAk YXBwbmFtZSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFJhY2UgY29uZGl0aW9uIGJlY2F1c2Ugb2YgRGlydHlTbmFwc2hvdAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgJHBzcWxfc2Vzc2lvbl9zdWJz Y3JpYmVyID0gJG5vZGVfc3Vic2NyaWJlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOwor aWYgKCRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbikKK3sKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaW5k ZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScsICd3YWl0JykiKTsKK30K KworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisjIERl bGV0ZSB0dXBsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJERUxFVEUgRlJPTSBjb25mX3RhYiBXSEVSRSBhPTE7Iik7CisKK2lmICgkc2ltdWxh dGVfcmFjZV9jb25kaXRpb24pCit7CisJIyBXYWl0IGFwcGx5IHdvcmtlciB0byBzdGFydCB0aGUg c2VhcmNoIGZvciB0aGUgdHVwbGUgdXNpbmcgaW5kZXgKKwkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXInLAorCQknaW5kZXhf Z2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOworfQorCisjIFVwZGF0ZXIg dHVwbGUgb24gc3Vic2NyaWJlcgorJHBzcWxfc2Vzc2lvbl9zdWJzY3JpYmVyLT5xdWVyeV91bnRp bCgKKwlxci9zdGFydC8sIHFxWworCVxcZWNobyBzdGFydAorCVVQREFURSBjb25mX3RhYiBTRVQg ZGF0YSA9ICdmcm9tc3VibmV3JyBXSEVSRSAoYT0xKTsKK10pOworCisKK2lmICgkc2ltdWxhdGVf cmFjZV9jb25kaXRpb24pCit7CisJIyBXYWtlIHVwIGFwcGx5IHdvcmtlcgorCSRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCIKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf ZGV0YWNoKCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJ CVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9y ZV9mZXRjaF9hcHBseV9kaXJ0eScpOworCQkiKTsKK30KKworIyBUdXBsZSB3YXMgdXBkYXRlZCAt IHNvLCB3ZSBoYXZlIGNvbmZsaWN0Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvY29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIi8sCisJ JGxvZ19vZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIEJ1dCB0dXBsZSBzaG91bGQgYmUgZGVsZXRlZCBvbiBzdWJzY3JpYmVyIGFueSB3 YXkKK2lzKCRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIGNv dW50KCopIGZyb20gY29uZl90YWInKSwgMCwgJ3JlY29yZCBkZWxldGVkIG9uIHN1YnNjcmliZXIn KTsKKworb2soISRub2RlX3N1YnNjcmliZXItPmxvZ19jb250YWlucygKKwkJcXIvTE9HOiAgY29u ZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIjogY29uZmxpY3Q9 ZGVsZXRlX21pc3NpbmcvLAorCQkkbG9nX29mZnNldCksICdpbnZhbGlkIGNvbmZsaWN0IGRldGVj dGVkJyk7CisKK29rKCRub2RlX3N1YnNjcmliZXItPmxvZ19jb250YWlucygKKwkJcXIvTE9HOiAg Y29uZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIjogY29uZmxp Y3Q9ZGVsZXRlX29yaWdpbl9kaWZmZXJzLywKKwkJJGxvZ19vZmZzZXQpLCAnY29ycmVjdCBjb25m bGljdCBkZXRlY3RlZCcpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzA0MF91cGRhdGVfbWlzc2luZ19yYWNlLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDQwX3VwZGF0ZV9taXNzaW5nX3JhY2UucGwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFlMTIwZjc0YmJkCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX3VwZGF0ZV9taXNzaW5nX3JhY2UucGwKQEAgLTAsMCAr MSwxNDEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCisjIFRlc3QgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBhbmQgcmVzb2x1dGlv biBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFM ID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworaWYgKCRFTlZ7ZW5hYmxlX2luamVj dGlvbl9wb2ludHN9IG5lICd5ZXMnKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0luamVjdGlvbiBw b2ludHMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKK30KKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIFNldCBpdCB0byAwIHRvIG1ha2Ugc2V0IHN1Y2Nlc3M7IFRPRE86IGRl bGV0ZSB0aGF0IGZvciBjb21taXQKK215ICRzaW11bGF0ZV9yYWNlX2NvbmRpdGlvbiA9IDE7Cisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBTZXR1cAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIElu aXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24p KTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2Rl IHdpdGggdHJhY2tfY29tbWl0X3RpbWVzdGFtcCBlbmFibGVkCitteSAkbm9kZV9zdWJzY3JpYmVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9z dWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zdGFydDsKKworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3Bv aW50cyBpcyBhdmFpbGFibGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2Ny aXB0IGlzIHJ1biB3aXRoIGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBu b3QgYmUgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNoZWNr X2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4 dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCisjIENyZWF0ZSB0 YWJsZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0 KTsiKTsKKworIyBDcmVhdGUgc2ltaWxhciB0YWJsZSBvbiBzdWJzY3JpYmVyIHdpdGggYWRkaXRp b25hbCBpbmRleCB0byBkaXNhYmxlIEhPVCB1cGRhdGVzIGFuZCBhZGRpdGlvbmFsIGNvbHVtbgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJM RSBjb25mX3RhYihhIGludCBQUklNQVJZIGtleSwgZGF0YSB0ZXh0LCBpIGludCBERUZBVUxUIDAp OworCSBDUkVBVEUgSU5ERVggaV9pbmRleCBPTiBjb25mX3RhYihpKTsiKTsKKworIyBTZXQgdXAg ZXh0ZW5zaW9uIHRvIHNpbXVsYXRlIHJhY2UgY29uZGl0aW9uCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsn KTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIg PSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1YiBGT1IgVEFCTEUgY29uZl90YWIiKTsKKworIyBJbnNlcnQgcm93IHRvIGJlIHVwZGF0ZWQg bGF0ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIGNvbmZfdGFiKGEsIGRhdGEpIFZBTFVFUyAoMSwnZnJvbXB1YicpIik7CisKKyMgQ3JlYXRl IHRoZSBzdWJzY3JpcHRpb24KK215ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YgorCSBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0k YXBwbmFtZScKKwkgUFVCTElDQVRJT04gdGFwX3B1YiIpOworCisjIFdhaXQgZm9yIGluaXRpYWwg dGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJGFwcG5hbWUpOworCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSYWNlIGNvbmRpdGlvbiBiZWNhdXNlIG9m IERpcnR5U25hcHNob3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKK215ICRwc3FsX3Nlc3Npb25fc3Vic2NyaWJlciA9ICRub2RlX3N1YnNjcmliZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24p Cit7CisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgaW5q ZWN0aW9uX3BvaW50c19hdHRhY2goJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBw bHlfZGlydHknLCAnd2FpdCcpIik7Cit9CisKK215ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworIyBVcGRhdGUgdHVwbGUgb24gcHVibGlzaGVyCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERBVEUgY29uZl90YWIgU0VUIGRh dGEgPSAnZnJvbXB1Ym5ldycgV0hFUkUgKGE9MSk7Iik7CisKKworaWYgKCRzaW11bGF0ZV9yYWNl X2NvbmRpdGlvbikKK3sKKwkjIFdhaXQgYXBwbHkgd29ya2VyIHRvIHN0YXJ0IHRoZSBzZWFyY2gg Zm9yIHRoZSB0dXBsZSB1c2luZyBpbmRleAorCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2V2 ZW50KCdsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlcicsICdpbmRleF9nZXRuZXh0X3Ns b3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7Cit9CisKKyMgVXBkYXRlIGFkZGl0aW9uYWwo ISkgY29sdW1uIG9uIHRoZSBzdWJzY3JpYmVyCiskcHNxbF9zZXNzaW9uX3N1YnNjcmliZXItPnF1 ZXJ5X3VudGlsKAorCXFyL3N0YXJ0LywgcXFbCisJXFxlY2hvIHN0YXJ0CisJVVBEQVRFIGNvbmZf dGFiIFNFVCBpID0gMSBXSEVSRSAoYT0xKTsKK10pOworCisKK2lmICgkc2ltdWxhdGVfcmFjZV9j b25kaXRpb24pCit7CisJIyBXYWtlIHVwIGFwcGx5IHdvcmtlcgorCSRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCIKKwkJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNo KCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5Jyk7CisJCVNFTEVD VCBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRj aF9hcHBseV9kaXJ0eScpOworCQkiKTsKK30KKworIyBUdXBsZSB3YXMgdXBkYXRlZCAtIHNvLCB3 ZSBoYXZlIGNvbmZsaWN0Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvY29u ZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIi8sCisJJGxvZ19v ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisjIFdlIG5lZWQgbmV3IGNvbHVtbiB2YWx1ZSBiZSBzeW5jZWQgd2l0aCBzdWJzY3JpYmVyCitp cygkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1NFTEVDVCBkYXRhIGZy b20gY29uZl90YWIgV0hFUkUgYSA9IDEnKSwgJ2Zyb21wdWJuZXcnLCAncmVjb3JkIHVwZGF0ZWQg b24gc3Vic2NyaWJlcicpOworIyBBbmQgYWRkaXRpb25hbCBjb2x1bW4gbWFpbnRhaW4gdXBkYXRl ZCB2YWx1ZQoraXMoJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxF Q1QgaSBmcm9tIGNvbmZfdGFiIFdIRVJFIGEgPSAxJyksIDEsICdjb2x1bW4gcmVjb3JkIHVwZGF0 ZWQgb24gc3Vic2NyaWJlcicpOworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5z KAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5jb25m X3RhYlwiOiBjb25mbGljdD11cGRhdGVfbWlzc2luZy8sCisJCSRsb2dfb2Zmc2V0KSwgJ2ludmFs aWQgY29uZmxpY3QgZGV0ZWN0ZWQnKTsKKworb2soJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRh aW5zKAorCQlxci9MT0c6ICBjb25mbGljdCBkZXRlY3RlZCBvbiByZWxhdGlvbiBcInB1YmxpYy5j b25mX3RhYlwiOiBjb25mbGljdD11cGRhdGVfb3JpZ2luX2RpZmZlcnMvLAorCQkkbG9nX29mZnNl dCksICdjb3JyZWN0IGNvbmZsaWN0IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQxX3VwZGF0ZV9taXNzaW5nX3dpdGhf cmV0YWluLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQxX3VwZGF0ZV9taXNzaW5nX3dp dGhfcmV0YWluLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YjIy NWQ0NWY3ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzA0MV91 cGRhdGVfbWlzc2luZ193aXRoX3JldGFpbi5wbApAQCAtMCwwICsxLDE0MyBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGFuZCByZXNvbHV0aW9uIGluIGxvZ2ljYWwgcmVwbGlj YXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBUZXN0OjpNb3JlOworCitpZiAoJEVOVntlbmFibGVfaW5qZWN0aW9uX3BvaW50c30gbmUgJ3ll cycpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnSW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVk IGJ5IHRoaXMgYnVpbGQnOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgU2V0 IGl0IHRvIDAgdG8gbWFrZSBzZXQgc3VjY2VzczsgVE9ETzogZGVsZXRlIHRoYXQgZm9yIGNvbW1p dAorbXkgJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uID0gMTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNldHVwCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIg bm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCXFxKHRyYWNrX2NvbW1pdF90aW1lc3RhbXAgPSBvbikpOworJG5vZGVfcHVibGlzaGVy LT5zdGFydDsKKworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUgd2l0aCB0cmFja19jb21taXRf dGltZXN0YW1wIGVuYWJsZWQKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQ7Cisk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlxcSh0cmFj a19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCXFxKHdhbF9sZXZlbCA9ICdyZXBsaWNhJykpOworJG5vZGVf c3Vic2NyaWJlci0+c3RhcnQ7CisKKworIyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGluamVjdGlv bl9wb2ludHMgaXMgYXZhaWxhYmxlLCBhcyBpdCBtYXkgYmUKKyMgcG9zc2libGUgdGhhdCB0aGlz IHNjcmlwdCBpcyBydW4gd2l0aCBpbnN0YWxsY2hlY2ssIHdoZXJlIHRoZSBtb2R1bGUKKyMgd291 bGQgbm90IGJlIGluc3RhbGxlZCBieSBkZWZhdWx0LgoraWYgKCEkbm9kZV9zdWJzY3JpYmVyLT5j aGVja19leHRlbnNpb24oJ2luamVjdGlvbl9wb2ludHMnKSkKK3sKKwlwbGFuIHNraXBfYWxsID0+ ICdFeHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBub3QgaW5zdGFsbGVkJzsKK30KKworIyBDcmVh dGUgdGFibGUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgY29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEg dGV4dCk7Iik7CisKKyMgQ3JlYXRlIHNpbWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3aXRoIGFk ZGl0aW9uYWwgaW5kZXggdG8gZGlzYWJsZSBIT1QgdXBkYXRlcyBhbmQgYWRkaXRpb25hbCBjb2x1 bW4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgY29uZl90YWIoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGEgdGV4dCwgaSBpbnQgREVGQVVM VCAwKTsKKwkgQ1JFQVRFIElOREVYIGlfaW5kZXggT04gY29uZl90YWIoaSk7Iik7CisKKyMgU2V0 IHVwIGV4dGVuc2lvbiB0byBzaW11bGF0ZSByYWNlIGNvbmRpdGlvbgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2lu dHM7Jyk7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9jb25u c3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIGNvbmZfdGFiIik7CisKKyMgSW5zZXJ0IHJvdyB0byBiZSB1cGRh dGVkIGxhdGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyBjb25mX3RhYihhLCBkYXRhKSBWQUxVRVMgKDEsJ2Zyb21wdWInKSIpOworCisjIENy ZWF0ZSB0aGUgc3Vic2NyaXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIKKwkgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25h bWU9JGFwcG5hbWUnCisJIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAocmV0YWluX2RlYWRfdHVw bGVzID0gdHJ1ZSkiKTsKKworIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmluaXNo Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkbm9kZV9wdWJs aXNoZXIsICRhcHBuYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgUmFjZSBjb25kaXRpb24gYmVjYXVzZSBvZiBEaXJ0eVNuYXBzaG90CisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitteSAkcHNxbF9zZXNz aW9uX3N1YnNjcmliZXIgPSAkbm9kZV9zdWJzY3JpYmVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJyk7CitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdpbmRleF9nZXRuZXh0X3Nsb3RfYmVmb3JlX2ZldGNoX2FwcGx5X2RpcnR5JywgJ3dhaXQnKSIp OworfQorCitteSAkbG9nX29mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KyMgVXBkYXRlIHR1cGxlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiVVBEQVRFIGNvbmZfdGFiIFNFVCBkYXRhID0gJ2Zyb21wdWJuZXcnIFdI RVJFIChhPTEpOyIpOworCisKK2lmICgkc2ltdWxhdGVfcmFjZV9jb25kaXRpb24pCit7CisJIyBX YWl0IGFwcGx5IHdvcmtlciB0byBzdGFydCB0aGUgc2VhcmNoIGZvciB0aGUgdHVwbGUgdXNpbmcg aW5kZXgKKwkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9ldmVudCgnbG9naWNhbCByZXBsaWNh dGlvbiBhcHBseSB3b3JrZXInLCAnaW5kZXhfZ2V0bmV4dF9zbG90X2JlZm9yZV9mZXRjaF9hcHBs eV9kaXJ0eScpOworfQorCisjIFVwZGF0ZSBhZGRpdGlvbmFsKCEpIGNvbHVtbiBvbiB0aGUgc3Vi c2NyaWJlcgorJHBzcWxfc2Vzc2lvbl9zdWJzY3JpYmVyLT5xdWVyeV91bnRpbCgKKwlxci9zdGFy dC8sIHFxWworCVxcZWNobyBzdGFydAorCVVQREFURSBjb25mX3RhYiBTRVQgaSA9IDEgV0hFUkUg KGE9MSk7CitdKTsKKworCitpZiAoJHNpbXVsYXRlX3JhY2VfY29uZGl0aW9uKQoreworCSMgV2Fr ZSB1cCBhcHBseSB3b3JrZXIKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywiCisJCVNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaW5kZXhfZ2V0bmV4dF9zbG90 X2JlZm9yZV9mZXRjaF9hcHBseV9kaXJ0eScpOworCQlTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193 YWtldXAoJ2luZGV4X2dldG5leHRfc2xvdF9iZWZvcmVfZmV0Y2hfYXBwbHlfZGlydHknKTsKKwkJ Iik7Cit9CisKKyMgVHVwbGUgd2FzIHVwZGF0ZWQgLSBzbywgd2UgaGF2ZSBjb25mbGljdAorJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL2NvbmZsaWN0IGRldGVjdGVkIG9uIHJl bGF0aW9uIFwicHVibGljLmNvbmZfdGFiXCIvLAorCSRsb2dfb2Zmc2V0KTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBXZSBuZWVkIG5ldyBjb2x1 bW4gdmFsdWUgYmUgc3luY2VkIHdpdGggc3Vic2NyaWJlcgoraXMoJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTRUxFQ1QgZGF0YSBmcm9tIGNvbmZfdGFiIFdIRVJFIGEg PSAxJyksICdmcm9tcHVibmV3JywgJ3JlY29yZCB1cGRhdGVkIG9uIHN1YnNjcmliZXInKTsKKyMg QW5kIGFkZGl0aW9uYWwgY29sdW1uIG1haW50YWluIHVwZGF0ZWQgdmFsdWUKK2lzKCRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIGkgZnJvbSBjb25mX3RhYiBX SEVSRSBhID0gMScpLCAxLCAnY29sdW1uIHJlY29yZCB1cGRhdGVkIG9uIHN1YnNjcmliZXInKTsK Kworb2soISRub2RlX3N1YnNjcmliZXItPmxvZ19jb250YWlucygKKwkJcXIvTE9HOiAgY29uZmxp Y3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIjogY29uZmxpY3Q9dXBk YXRlX2RlbGV0ZWQvLAorCQkkbG9nX29mZnNldCksICdpbnZhbGlkIGNvbmZsaWN0IGRldGVjdGVk Jyk7CisKK29rKCRub2RlX3N1YnNjcmliZXItPmxvZ19jb250YWlucygKKwkJcXIvTE9HOiAgY29u ZmxpY3QgZGV0ZWN0ZWQgb24gcmVsYXRpb24gXCJwdWJsaWMuY29uZl90YWJcIjogY29uZmxpY3Q9 dXBkYXRlX29yaWdpbl9kaWZmZXJzLywKKwkJJGxvZ19vZmZzZXQpLCAnY29ycmVjdCBjb25mbGlj dCBkZXRlY3RlZCcpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzA0Ml91cGRhdGVfbWlzc2luZ19zaW11bGF0aW9uLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDQyX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRpb24ucGwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIxZmNkMWNlYjUzCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQyX3VwZGF0ZV9taXNzaW5nX3NpbXVsYXRp b24ucGwKQEAgLTAsMCArMSwxMjUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIGNvbmZsaWN0IGRldGVjdGlv biBhbmQgcmVzb2x1dGlvbiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCisjIE5vdCBpbnRlbmRlZCB0 byBiZSBjb21taXR0ZWQgYmVjYXVzZSBxdWl0ZSBoZWF2eQorIyBIZXJlIHRvIGRlbW9uc3RyYXRl IHJlcHJvZHVjaWJpbGl0eSB3aXRoIHBnYmVuY2gKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3Mg RkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBJUEM6OlJ1biBxdyhzdGFydCBmaW5pc2gpOwordXNl IFRlc3Q6Ok1vcmU7CisKK2lmICgkRU5We2VuYWJsZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVz JykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQg YnkgdGhpcyBidWlsZCc7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg U2V0dXAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbml0aWFsaXplIHB1 Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCisJcXEodHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9uKSk7Ciskbm9kZV9w dWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUgd2l0aCB0cmFja19j b21taXRfdGltZXN0YW1wIGVuYWJsZWQKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmlu aXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwlx cSh0cmFja19jb21taXRfdGltZXN0YW1wID0gb24pKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCisjIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaW5qZWN0aW9uX3BvaW50cyBpcyBhdmFpbGFi bGUsIGFzIGl0IG1heSBiZQorIyBwb3NzaWJsZSB0aGF0IHRoaXMgc2NyaXB0IGlzIHJ1biB3aXRo IGluc3RhbGxjaGVjaywgd2hlcmUgdGhlIG1vZHVsZQorIyB3b3VsZCBub3QgYmUgaW5zdGFsbGVk IGJ5IGRlZmF1bHQuCitpZiAoISRub2RlX3N1YnNjcmliZXItPmNoZWNrX2V4dGVuc2lvbignaW5q ZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tpcF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rp b25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQorCisjIENyZWF0ZSB0YWJsZSBvbiBwdWJsaXNo ZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0YmwoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGFfcHViIGludCk7Iik7CisKKyMgQ3JlYXRl IHNpbWlsYXIgdGFibGUgb24gc3Vic2NyaWJlciB3aXRoIGFkZGl0aW9uYWwgaW5kZXggdG8gZGlz YWJsZSBIT1QgdXBkYXRlcworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0YmwoYSBpbnQgUFJJTUFSWSBrZXksIGRhdGFfcHViIGludCwg ZGF0YV9zdWIgaW50IGRlZmF1bHQgMCk7CisJIENSRUFURSBJTkRFWCBkYXRhX2luZGV4IE9OIHRi bChkYXRhX3B1Yik7Iik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxp c2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdy ZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRibCIpOworCisjIENyZWF0ZSB0aGUgc3Vic2Ny aXB0aW9uCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwkgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJ IFBVQkxJQ0FUSU9OIHRhcF9wdWIiKTsKKworbXkgJG51bV9yb3dzID0gMTA7CitteSAkbnVtX3Vw ZGF0ZXMgPSAxMDAwMDsKK215ICRudW1fY2xpZW50cyA9IDEwOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRibCBTRUxFQ1QgaSwgaSAqIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwkbnVtX3Jvd3MpIGkiKTsKKworIyBXYWl0IGZvciBpbml0aWFs IHRhYmxlIHN5bmMgdG8gZmluaXNoCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3Jp cHRpb25fc3luYygkbm9kZV9wdWJsaXNoZXIsICRhcHBuYW1lKTsKKworIyBQcmVwYXJlIHNtYWxs IHBnYmVuY2ggc2NyaXB0cyBhcyBmaWxlcworbXkgJHN1Yl9zcWwgPSAkbm9kZV9zdWJzY3JpYmVy LT5iYXNlZGlyIC4gJy9zdWJfdXBkYXRlLnNxbCc7CitteSAkcHViX3NxbCA9ICRub2RlX3B1Ymxp c2hlci0+YmFzZWRpciAuICcvcHViX2RlbGV0ZS5zcWwnOworCitvcGVuIG15ICRmaDEsICc+Jywg JHN1Yl9zcWwgb3IgZGllICQhOworcHJpbnQgJGZoMSAiXFxzZXQgbnVtIHJhbmRvbSgxLCRudW1f cm93cylcblVQREFURSB0YmwgU0VUIGRhdGFfc3ViID0gZGF0YV9zdWIgKyAxIFdIRVJFIGEgPSA6 bnVtO1xuIjsKK2Nsb3NlICRmaDE7CisKK29wZW4gbXkgJGZoMiwgJz4nLCAkcHViX3NxbCBvciBk aWUgJCE7CitwcmludCAkZmgyICJcXHNldCBudW0gcmFuZG9tKDEsJG51bV9yb3dzKVxuVVBEQVRF IHRibCBTRVQgZGF0YV9wdWIgPSBkYXRhX3B1YiArIDEgV0hFUkUgYSA9IDpudW07XG4iOworY2xv c2UgJGZoMjsKKworbXkgQHN1Yl9jbWQgPSAoCisJJ3BnYmVuY2gnLAorCSctLW5vLXZhY3V1bScs ICItLWNsaWVudD0kbnVtX2NsaWVudHMiLCAnLS1qb2JzPTQnLCAnLS1leGl0LW9uLWFib3J0Jywg Ii0tdHJhbnNhY3Rpb25zPSRudW1fdXBkYXRlcyIsCisJJy1wJywgJG5vZGVfc3Vic2NyaWJlci0+ cG9ydCwgJy1oJywgJG5vZGVfc3Vic2NyaWJlci0+aG9zdCwgJy1mJywgJHN1Yl9zcWwsICdwb3N0 Z3JlcycKKyk7CisKK215IEBwdWJfY21kID0gKAorCSdwZ2JlbmNoJywKKwknLS1uby12YWN1dW0n LCAiLS1jbGllbnQ9JG51bV9jbGllbnRzIiwgJy0tam9icz00JywgJy0tZXhpdC1vbi1hYm9ydCcs ICItLXRyYW5zYWN0aW9ucz0kbnVtX3VwZGF0ZXMiLAorCSctcCcsICRub2RlX3B1Ymxpc2hlci0+ cG9ydCwgJy1oJywgJG5vZGVfcHVibGlzaGVyLT5ob3N0LCAnLWYnLCAkcHViX3NxbCwgJ3Bvc3Rn cmVzJworKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVB VEUgRVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7Jyk7CisjIFRoaXMgc2hvdWxkIG5ldmVyIGhh cHBlbgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg aW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2FwcGx5X2hhbmRsZV91cGRhdGVfaW50ZXJuYWxfdXBk YXRlX21pc3NpbmcnLCAnZXJyb3InKSIpOworbXkgJGxvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCisjIFN0YXJ0IGJvdGggY29uY3VycmVudGx5CitteSAoJHN1Yl9v dXQsICRzdWJfZXJyLCAkcHViX291dCwgJHB1Yl9lcnIpID0gKCcnLCAnJywgJycsICcnKTsKK215 ICRzdWJfaCA9IHN0YXJ0IFxAc3ViX2NtZCwgJz4nLCBcJHN1Yl9vdXQsICcyPicsIFwkc3ViX2Vy cjsKK215ICRwdWJfaCA9IHN0YXJ0IFxAcHViX2NtZCwgJz4nLCBcJHB1Yl9vdXQsICcyPicsIFwk cHViX2VycjsKKworIyBXYWl0IGZvciBjb21wbGV0aW9uCitmaW5pc2ggJHN1Yl9oOworZmluaXNo ICRwdWJfaDsKKworbGlrZSgkc3ViX291dCwgcXIvYWN0dWFsbHkgcHJvY2Vzc2VkLywgJ3N1YnNj cmliZXIgcGdiZW5jaCBjb21wbGV0ZWQnKTsKK2xpa2UoJHB1Yl9vdXQsIHFyL2FjdHVhbGx5IHBy b2Nlc3NlZC8sICdwdWJsaXNoZXIgcGdiZW5jaCBjb21wbGV0ZWQnKTsKKworIyBMZXQgc3Vic2Ny aXB0aW9uIGNhdGNoIHVwLCB0aGVuIGNoZWNrIGV4cGVjdGF0aW9ucworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLCAndGFwX3N1Yicp OworCitvayghJG5vZGVfc3Vic2NyaWJlci0+bG9nX2NvbnRhaW5zKAorCQlxci9FUlJPUjogIGVy cm9yIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGFwcGx5X2hhbmRsZV91cGRhdGVfaW50 ZXJuYWxfdXBkYXRlX21pc3NpbmcvLAorCQkkbG9nX29mZnNldCksICdpbnZhbGlkIGNvbmZsaWN0 IGRldGVjdGVkJyk7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --000000000000191014064eceec45 Content-Type: application/octet-stream; name="v18-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Disposition: attachment; filename="v18-0002-Fix-logical-replication-conflict-detection-durin.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnngy6id1 RnJvbSAyMWQzYjFhZTgyMmU4MmQ4Nzk4OGQ2MGIxZDdjOGEyZTAwMzU2NWMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxua2V5QHRvbG9rYS5haT4KRGF0ZTogV2VkLCAzIFNl cCAyMDI1IDE5OjA4OjU1ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MTggMi8yXSBGaXggbG9naWNh bCByZXBsaWNhdGlvbiBjb25mbGljdCBkZXRlY3Rpb24gZHVyaW5nCiB0dXBsZSBsb29rdXAKClNO QVBTSE9UX0RJUlRZIHNjYW5zIGNvdWxkIG1pc3MgY29uZmxpY3QgZGV0ZWN0aW9uIHdpdGggY29u Y3VycmVudCB0cmFuc2FjdGlvbnMgZHVyaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uClJlcGxhY2Ug U05BUFNIT1RfRElSVFkgc2NhbiB3aXRoIHRoZSBHZXRMYXRlc3RTbmFwc2hvdCBpbiBSZWxhdGlv bkZpbmRSZXBsVHVwbGVCeUluZGV4IGFuZCBSZWxhdGlvbkZpbmRSZXBsVHVwbGVTZXEuCi0tLQog c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgfCA2NCArKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggOTQwN2MzNTdmMjcuLjA1ZDIxYTNjY2ZlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfc3dhcChPaWQg bmV3SW5kZXhJZCwgT2lkIG9sZEluZGV4SWQsIGNvbnN0IGNoYXIgKm9sZE5hbWUpCiAKIAkJCXRn Rm9ybS0+dGdjb25zdHJpbmRpZCA9IG5ld0luZGV4SWQ7CiAKLQkJCUNhdGFsb2dUdXBsZVVwZGF0 ZShwZ190cmlnZ2VyLCAmdHJpZ2dlclR1cGxlLT50X3NlbGYsIHRyaWdnZXJUdXBsZSk7CisJCQlD YXRhbG9nVHVwbGVVcGRhdGUocGdfdHJpZ2dlciwgJnRyaWdnZXJUdXBsZS0+dF9zZWxmLCAgdHJp Z2dlclR1cGxlKTsKIAogCQkJaGVhcF9mcmVldHVwbGUodHJpZ2dlclR1cGxlKTsKIAkJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCBiMmNhNWNiZjExNy4uODI2Mjlh YTMzZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC0xODcsOCAr MTg3LDYgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBp ZHhvaWQsCiAJU2NhbktleURhdGEgc2tleVtJTkRFWF9NQVhfS0VZU107CiAJaW50CQkJc2tleV9h dHRvZmY7CiAJSW5kZXhTY2FuRGVzYyBzY2FuOwotCVNuYXBzaG90RGF0YSBzbmFwOwotCVRyYW5z YWN0aW9uSWQgeHdhaXQ7CiAJUmVsYXRpb24JaWR4cmVsOwogCWJvb2wJCWZvdW5kOwogCVR5cGVD YWNoZUVudHJ5ICoqZXEgPSBOVUxMOwpAQCAtMTk5LDE4ICsxOTcsMTggQEAgUmVsYXRpb25GaW5k UmVwbFR1cGxlQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAKIAlpc0lkeFNhZmVU b1NraXBEdXBsaWNhdGVzID0gKEdldFJlbGF0aW9uSWRlbnRpdHlPclBLKHJlbCkgPT0gaWR4b2lk KTsKIAotCUluaXREaXJ0eVNuYXBzaG90KHNuYXApOwotCiAJLyogQnVpbGQgc2NhbiBrZXkuICov CiAJc2tleV9hdHRvZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9rZXkoc2tleSwgcmVsLCBpZHhy ZWwsIHNlYXJjaHNsb3QpOwogCi0JLyogU3RhcnQgYW4gaW5kZXggc2Nhbi4gKi8KKwkvKiBTdGFy dCBhbiBpbmRleCBzY2FuLiBTbmFwc2hvdEFueSB3aWxsIGJlIHJlcGxhY2VkIGJlbG93LiAqLwog CXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWwsCi0JCQkJCQkgICAmc25hcCwgTlVM TCwgc2tleV9hdHRvZmYsIDAsIFNPX05PTkUpOworCQkJCQkJICAgU25hcHNob3RBbnksIE5VTEws IHNrZXlfYXR0b2ZmLCAwLCBTT19OT05FKTsKIAogcmV0cnk6CiAJZm91bmQgPSBmYWxzZTsKLQor CVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwkvKiBVcGRhdGUgdGhl IGFjdHVhbCBzY2FuIHNuYXBzaG90IGVhY2ggcmV0cnkgKi8KKwlzY2FuLT54c19zbmFwc2hvdCA9 IEdldEFjdGl2ZVNuYXBzaG90KCk7CiAJaW5kZXhfcmVzY2FuKHNjYW4sIHNrZXksIHNrZXlfYXR0 b2ZmLCBOVUxMLCAwKTsKIAogCS8qIFRyeSB0byBmaW5kIHRoZSB0dXBsZSAqLwpAQCAtMjMxLDE5 ICsyMjksNiBAQCByZXRyeToKIAogCQlFeGVjTWF0ZXJpYWxpemVTbG90KG91dHNsb3QpOwogCi0J CXh3YWl0ID0gVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcC54bWluKSA/Ci0JCQlzbmFwLnhtaW4g OiBzbmFwLnhtYXg7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHR1cGxlIGlzIGxvY2tlZCwgd2FpdCBm b3IgbG9ja2luZyB0cmFuc2FjdGlvbiB0byBmaW5pc2ggYW5kCi0JCSAqIHJldHJ5LgotCQkgKi8K LQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHh3YWl0KSkKLQkJewotCQkJWGFjdExvY2tUYWJs ZVdhaXQoeHdhaXQsIE5VTEwsIE5VTEwsIFhMVFdfTm9uZSk7Ci0JCQlnb3RvIHJldHJ5OwotCQl9 Ci0KIAkJLyogRm91bmQgb3VyIHR1cGxlIGFuZCBpdCdzIG5vdCBsb2NrZWQgKi8KIAkJZm91bmQg PSB0cnVlOwogCQlicmVhazsKQEAgLTI1NSw4ICsyNDAsNiBAQCByZXRyeToKIAkJVE1fRmFpbHVy ZURhdGEgdG1mZDsKIAkJVE1fUmVzdWx0CXJlczsKIAotCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0 TGF0ZXN0U25hcHNob3QoKSk7Ci0KIAkJcmVzID0gdGFibGVfdHVwbGVfbG9jayhyZWwsICYob3V0 c2xvdC0+dHRzX3RpZCksIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJICAgb3V0c2xvdCwK IAkJCQkJCQkgICBHZXRDdXJyZW50Q29tbWFuZElkKGZhbHNlKSwKQEAgLTI2NSwxMyArMjQ4LDE1 IEBAIHJldHJ5OgogCQkJCQkJCSAgIDAgLyogZG9uJ3QgZm9sbG93IHVwZGF0ZXMgKi8gLAogCQkJ CQkJCSAgICZ0bWZkKTsKIAotCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCiAJCWlmIChzaG91bGRf cmVmZXRjaF90dXBsZShyZXMsICZ0bWZkKSkKKwkJeworCQkJUG9wQWN0aXZlU25hcHNob3QoKTsK IAkJCWdvdG8gcmV0cnk7CisJCX0KIAl9CiAKIAlpbmRleF9lbmRzY2FuKHNjYW4pOworCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAKIAkvKiBEb24ndCByZWxlYXNlIGxvY2sgdW50aWwgY29tbWl0LiAq LwogCWluZGV4X2Nsb3NlKGlkeHJlbCwgTm9Mb2NrKTsKQEAgLTM3Miw5ICszNTcsNyBAQCBSZWxh dGlvbkZpbmRSZXBsVHVwbGVTZXEoUmVsYXRpb24gcmVsLCBMb2NrVHVwbGVNb2RlIGxvY2ttb2Rl LAogewogCVR1cGxlVGFibGVTbG90ICpzY2Fuc2xvdDsKIAlUYWJsZVNjYW5EZXNjIHNjYW47Ci0J U25hcHNob3REYXRhIHNuYXA7CiAJVHlwZUNhY2hlRW50cnkgKiplcTsKLQlUcmFuc2FjdGlvbklk IHh3YWl0OwogCWJvb2wJCWZvdW5kOwogCVR1cGxlRGVzYwlkZXNjIFBHX1VTRURfRk9SX0FTU0VS VFNfT05MWSA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIApAQCAtMzgyLDE0ICszNjUsMTUgQEAg UmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxlTW9kZSBsb2Nr bW9kZSwKIAogCWVxID0gcGFsbG9jMF9hcnJheShUeXBlQ2FjaGVFbnRyeSAqLCBvdXRzbG90LT50 dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0cyk7CiAKLQkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8K LQlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwg JnNuYXAsIDAsIE5VTEwsCi0JCQkJCQkgICBTT19OT05FKTsKKwkvKiBTdGFydCBhIGhlYXAgc2Nh bi4gU25hcHNob3RBbnkgd2lsbCBiZSByZXBsYWNlZCBiZWxvdy4gKi8KKwlzY2FuID0gdGFibGVf YmVnaW5zY2FuKHJlbCwgU25hcHNob3RBbnksIDAsIE5VTEwsIFNPX05PTkUpOwogCXNjYW5zbG90 ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKIAogcmV0cnk6CiAJZm91bmQgPSBmYWxz ZTsKKwlQdXNoQWN0aXZlU25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJLyogVXBkYXRl IHRoZSBhY3R1YWwgc2NhbiBzbmFwc2hvdCBlYWNoIHJldHJ5ICovCisJc2Nhbi0+cnNfc25hcHNo b3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwpOwog CkBAIC00MDIsMTkgKzM4Niw2IEBAIHJldHJ5OgogCQlmb3VuZCA9IHRydWU7CiAJCUV4ZWNDb3B5 U2xvdChvdXRzbG90LCBzY2Fuc2xvdCk7CiAKLQkJeHdhaXQgPSBUcmFuc2FjdGlvbklkSXNWYWxp ZChzbmFwLnhtaW4pID8KLQkJCXNuYXAueG1pbiA6IHNuYXAueG1heDsKLQotCQkvKgotCQkgKiBJ ZiB0aGUgdHVwbGUgaXMgbG9ja2VkLCB3YWl0IGZvciBsb2NraW5nIHRyYW5zYWN0aW9uIHRvIGZp bmlzaCBhbmQKLQkJICogcmV0cnkuCi0JCSAqLwotCQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQo eHdhaXQpKQotCQl7Ci0JCQlYYWN0TG9ja1RhYmxlV2FpdCh4d2FpdCwgTlVMTCwgTlVMTCwgWExU V19Ob25lKTsKLQkJCWdvdG8gcmV0cnk7Ci0JCX0KLQogCQkvKiBGb3VuZCBvdXIgdHVwbGUgYW5k IGl0J3Mgbm90IGxvY2tlZCAqLwogCQlicmVhazsKIAl9CkBAIC00MjUsOCArMzk2LDYgQEAgcmV0 cnk6CiAJCVRNX0ZhaWx1cmVEYXRhIHRtZmQ7CiAJCVRNX1Jlc3VsdAlyZXM7CiAKLQkJUHVzaEFj dGl2ZVNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCiAJCXJlcyA9IHRhYmxlX3R1cGxl X2xvY2socmVsLCAmKG91dHNsb3QtPnR0c190aWQpLCBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJ CQkJCSAgIG91dHNsb3QsCiAJCQkJCQkJICAgR2V0Q3VycmVudENvbW1hbmRJZChmYWxzZSksCkBA IC00MzUsMTMgKzQwNCwxNiBAQCByZXRyeToKIAkJCQkJCQkgICAwIC8qIGRvbid0IGZvbGxvdyB1 cGRhdGVzICovICwKIAkJCQkJCQkgICAmdG1mZCk7CiAKLQkJUG9wQWN0aXZlU25hcHNob3QoKTsK IAogCQlpZiAoc2hvdWxkX3JlZmV0Y2hfdHVwbGUocmVzLCAmdG1mZCkpCisJCXsKKwkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCQlnb3RvIHJldHJ5OworCQl9CiAJfQogCiAJdGFibGVfZW5kc2Nh bihzY2FuKTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJs ZVNsb3Qoc2NhbnNsb3QpOwogCiAJcmV0dXJuIGZvdW5kOwotLSAKMi40My4wCgo= --000000000000191014064eceec45--