From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 02FE71FF189 for <inbox@lore.proxmox.com>; Fri, 21 Mar 2025 14:34:09 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5BF841E919; Fri, 21 Mar 2025 14:34:07 +0100 (CET) From: Alexander Zeidler <a.zeidler@proxmox.com> To: pve-devel@lists.proxmox.com Date: Fri, 21 Mar 2025 14:33:41 +0100 Message-Id: <20250321133341.151340-1-a.zeidler@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.085 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [test.rs, proxmox.com, pve.rs, pbs.rs, mod.rs] Subject: [pve-devel] [PATCH proxmox] fix #6143: notify: allow overriding notification templates X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> UHJldmlvdXNseSwgbm90aWZpY2F0aW9uIHRlbXBsYXRlcyBjb3VsZCBiZSBtb2RpZmllZCBieSB0 aGUgdXNlciwgYnV0CnRoZXNlIHdlcmUgb3ZlcndyaXR0ZW4gYWdhaW4gd2l0aCBpbnN0YWxsaW5n IG5ld2VyIHBhY2thZ2UgdmVyc2lvbnMgb2YKcHZlLW1hbmFnZXIgYW5kIHByb3htb3gtYmFja3Vw LgoKTm93IG92ZXJyaWRlIHRlbXBsYXRlcyBjYW4gYmUgY3JlYXRlZCBjbHVzdGVyLXdpZGUgaW4g dGhlIHBhdGgK4oCcL2V0Yy97cHZlLHByb3htb3gtYmFja3VwfS9ub3RpZmljYXRpb24tdGVtcGxh dGVzL3tuYW1lc3BhY2V94oCdLCB3aGljaAphcmUgdXNlZCB3aXRoIHByaW9yaXR5LiBUaGUgZm9s ZGVyIHN0cnVjdHVyZSBoYXMgdG8gYmUgY3JlYXRlZCBhbmQKcG9wdWxhdGVkIG1hbnVhbGx5IChl LmcuIC9ldGMvcHZlL25vdGlmaWNhdGlvbi10ZW1wbGF0ZXMvZGVmYXVsdCkuCgpJZiBvdmVycmlk ZSB0ZW1wbGF0ZXMgYXJlIG5vdCBleGlzdGluZyBvciB0aGVpciByZW5kZXJpbmcgZmFpbHMsIHRo ZQp2ZW5kb3IgdGVtcGxhdGVzIGluCiIvdXNyL3NoYXJlL3twdmUtbWFuYWdlcixwcm94bW94LWJh Y2t1cH0vdGVtcGxhdGVzL2RlZmF1bHQvIiBhcmUgdXNlZC4KClNlcXVlbmNlOiBbb3ZlcnJpZGUg aHRtbCAtPiB2ZW5kb3IgaHRtbCAtPl0gb3ZlcnJpZGUgdHh0IC0+IHZlbmRvciB0eHQKCkFuIGVy cm9yIGlzIG9ubHkgcmV0dXJuZWQgaWYgbm9uZSBvZiB0aGUgdGVtcGxhdGUgY2FuZGlkYXRlcyBj b3VsZCBiZQp1c2VkLiBVc2luZyBhbiBvdmVycmlkZSB0ZW1wbGF0ZSBnZXRzIG5vdCBsb2dnZWQu CgpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgWmVpZGxlciA8YS56ZWlkbGVyQHByb3htb3guY29t PgotLS0KVGhpcyBwYXRjaCB3YXMgcHJldmlvdXNseSBzZW50IGFzIFJGQyBhbmQgaGFzIG5vdyBh bGwgc3VnZ2VzdGlvbnMgZnJvbQpMdWthcyBXYWduZXIgaW1wbGVtZW50ZWQ6Cmh0dHBzOi8vbG9y ZS5wcm94bW94LmNvbS9wdmUtZGV2ZWwvMjAyNTAzMTMxNTE3MzQuMjU4MzM3LTEtYS56ZWlkbGVy QHByb3htb3guY29tLwoKVGhpcyBwYXRjaCBzaG91bGQgbm90IGJlIG1lcmdlZCB1bnRpbCB0aGUg ZXhpc3RpbmcgUFZFIGFuZCBQQlMKdGVtcGxhdGVzIGhhdmUgYmVlbiBhdWRpdGVkLiBGb3IgUFZF IHRoaXMgaXMgY3VycmVudGx5IGJlaW5nIGRvbmUsIGZvcgpQQlMgYSBwYXRjaCBpcyBhbHJlYWR5 IHNlbnQ6Cmh0dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wYnMtZGV2ZWwvMjAyNTAzMjExMjI1MjEu MTk4NzI1LTEtbC53YWduZXJAcHJveG1veC5jb20vCgpUaGUgZG9jdW1lbnRhdGlvbiBjaGFuZ2Vz IGZvciBQVkUgYW5kIFBCUyAoc3RlcHMgZm9yIG92ZXJyaWRlIHRlbXBsYXRlCmNyZWF0aW9uLCBs aXN0IG9mIHZhcmlhYmxlcyBhbmQgaGVscGVycykgd2lsbCBiZSBzZW50IGluIHNlcGFyYXRlCnBh dGNoZXMgYWZ0ZXIgdGhlIGFib3ZlIG1lbnRpb25lZCBhdWRpdCBpcyBjb21wbGV0ZWQuCgoKIHBy b3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L21vZC5ycyAgfCAgIDQgKy0KIHByb3htb3gtbm90aWZ5 L3NyYy9jb250ZXh0L3Bicy5ycyAgfCAgIDkgKy0KIHByb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0 L3B2ZS5ycyAgfCAgMTAgKy0KIHByb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L3Rlc3QucnMgfCAg IDIgKwogcHJveG1veC1ub3RpZnkvc3JjL3JlbmRlcmVyL21vZC5ycyB8IDE1NCArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwg NTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcHJveG1veC1ub3RpZnkvc3JjL2NvbnRleHQv bW9kLnJzIGIvcHJveG1veC1ub3RpZnkvc3JjL2NvbnRleHQvbW9kLnJzCmluZGV4IGMwYTVhMTNi Li44YjZlMmM0MyAxMDA2NDQKLS0tIGEvcHJveG1veC1ub3RpZnkvc3JjL2NvbnRleHQvbW9kLnJz CisrKyBiL3Byb3htb3gtbm90aWZ5L3NyYy9jb250ZXh0L21vZC5ycwpAQCAtMSw2ICsxLDcgQEAK IHVzZSBzdGQ6OmZtdDo6RGVidWc7CiB1c2Ugc3RkOjpzeW5jOjpNdXRleDsKIAordXNlIGNyYXRl OjpyZW5kZXJlcjo6VGVtcGxhdGVTb3VyY2U7CiB1c2UgY3JhdGU6OkVycm9yOwogCiAjW2NmZyhh bnkoZmVhdHVyZSA9ICJwdmUtY29udGV4dCIsIGZlYXR1cmUgPSAicGJzLWNvbnRleHQiKSldCkBA IC0yNCwxMSArMjUsMTIgQEAgcHViIHRyYWl0IENvbnRleHQ6IFNlbmQgKyBTeW5jICsgRGVidWcg ewogICAgIGZuIGh0dHBfcHJveHlfY29uZmlnKCZzZWxmKSAtPiBPcHRpb248U3RyaW5nPjsKICAg ICAvLy8gUmV0dXJuIGRlZmF1bHQgY29uZmlnIGZvciBidWlsdC1pbiB0YXJnZXRzL21hdGNoZXJz LgogICAgIGZuIGRlZmF1bHRfY29uZmlnKCZzZWxmKSAtPiAmJ3N0YXRpYyBzdHI7Ci0gICAgLy8v IExvb2t1cCBhIHRlbXBsYXRlIGluIGEgY2VydGFpbiAob3B0aW9uYWwpIG5hbWVzcGFjZQorICAg IC8vLyBSZXR1cm4gdGhlIHBhdGggb2YgYGZpbGVuYW1lYCBmcm9tIGBzb3VyY2VgIGFuZCBhIGNl cnRhaW4gKG9wdGlvbmFsKSBgbmFtZXNwYWNlYAogICAgIGZuIGxvb2t1cF90ZW1wbGF0ZSgKICAg ICAgICAgJnNlbGYsCiAgICAgICAgIGZpbGVuYW1lOiAmc3RyLAogICAgICAgICBuYW1lc3BhY2U6 IE9wdGlvbjwmc3RyPiwKKyAgICAgICAgc291cmNlOiBUZW1wbGF0ZVNvdXJjZSwKICAgICApIC0+ IFJlc3VsdDxPcHRpb248U3RyaW5nPiwgRXJyb3I+OwogfQogCmRpZmYgLS1naXQgYS9wcm94bW94 LW5vdGlmeS9zcmMvY29udGV4dC9wYnMucnMgYi9wcm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9w YnMucnMKaW5kZXggZTgxMDZjNTcuLjNlNWRhNTljIDEwMDY0NAotLS0gYS9wcm94bW94LW5vdGlm eS9zcmMvY29udGV4dC9wYnMucnMKKysrIGIvcHJveG1veC1ub3RpZnkvc3JjL2NvbnRleHQvcGJz LnJzCkBAIC03LDYgKzcsNyBAQCB1c2UgcHJveG1veF9zY2hlbWE6OntPYmplY3RTY2hlbWEsIFNj aGVtYSwgU3RyaW5nU2NoZW1hfTsKIHVzZSBwcm94bW94X3NlY3Rpb25fY29uZmlnOjp7U2VjdGlv bkNvbmZpZywgU2VjdGlvbkNvbmZpZ1BsdWdpbn07CiAKIHVzZSBjcmF0ZTo6Y29udGV4dDo6e2Nv bW1vbiwgQ29udGV4dH07Cit1c2UgY3JhdGU6OnJlbmRlcmVyOjpUZW1wbGF0ZVNvdXJjZTsKIHVz ZSBjcmF0ZTo6RXJyb3I7CiAKIGNvbnN0IFBCU19VU0VSX0NGR19GSUxFTkFNRTogJnN0ciA9ICIv ZXRjL3Byb3htb3gtYmFja3VwL3VzZXIuY2ZnIjsKQEAgLTEwOSw4ICsxMTAsMTQgQEAgaW1wbCBD b250ZXh0IGZvciBQQlNDb250ZXh0IHsKICAgICAgICAgJnNlbGYsCiAgICAgICAgIGZpbGVuYW1l OiAmc3RyLAogICAgICAgICBuYW1lc3BhY2U6IE9wdGlvbjwmc3RyPiwKKyAgICAgICAgc291cmNl OiBUZW1wbGF0ZVNvdXJjZSwKICAgICApIC0+IFJlc3VsdDxPcHRpb248U3RyaW5nPiwgRXJyb3I+ IHsKLSAgICAgICAgbGV0IHBhdGggPSBQYXRoOjpuZXcoIi91c3Ivc2hhcmUvcHJveG1veC1iYWNr dXAvdGVtcGxhdGVzIikKKyAgICAgICAgbGV0IHBhdGggPSBtYXRjaCBzb3VyY2UgeworICAgICAg ICAgICAgVGVtcGxhdGVTb3VyY2U6OlZlbmRvciA9PiAiL3Vzci9zaGFyZS9wcm94bW94LWJhY2t1 cC90ZW1wbGF0ZXMiLAorICAgICAgICAgICAgVGVtcGxhdGVTb3VyY2U6Ok92ZXJyaWRlID0+ICIv ZXRjL3Byb3htb3gtYmFja3VwL25vdGlmaWNhdGlvbi10ZW1wbGF0ZXMiLAorICAgICAgICB9Owor CisgICAgICAgIGxldCBwYXRoID0gUGF0aDo6bmV3KCZwYXRoKQogICAgICAgICAgICAgLmpvaW4o bmFtZXNwYWNlLnVud3JhcF9vcigiZGVmYXVsdCIpKQogICAgICAgICAgICAgLmpvaW4oZmlsZW5h bWUpOwogCmRpZmYgLS1naXQgYS9wcm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9wdmUucnMgYi9w cm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9wdmUucnMKaW5kZXggZDQ5YWIyN2MuLmE5N2NjZTI2 IDEwMDY0NAotLS0gYS9wcm94bW94LW5vdGlmeS9zcmMvY29udGV4dC9wdmUucnMKKysrIGIvcHJv eG1veC1ub3RpZnkvc3JjL2NvbnRleHQvcHZlLnJzCkBAIC0xLDQgKzEsNSBAQAogdXNlIGNyYXRl Ojpjb250ZXh0Ojp7Y29tbW9uLCBDb250ZXh0fTsKK3VzZSBjcmF0ZTo6cmVuZGVyZXI6OlRlbXBs YXRlU291cmNlOwogdXNlIGNyYXRlOjpFcnJvcjsKIHVzZSBzdGQ6OnBhdGg6OlBhdGg7CiAKQEAg LTU4LDEwICs1OSwxNyBAQCBpbXBsIENvbnRleHQgZm9yIFBWRUNvbnRleHQgewogICAgICAgICAm c2VsZiwKICAgICAgICAgZmlsZW5hbWU6ICZzdHIsCiAgICAgICAgIG5hbWVzcGFjZTogT3B0aW9u PCZzdHI+LAorICAgICAgICBzb3VyY2U6IFRlbXBsYXRlU291cmNlLAogICAgICkgLT4gUmVzdWx0 PE9wdGlvbjxTdHJpbmc+LCBFcnJvcj4gewotICAgICAgICBsZXQgcGF0aCA9IFBhdGg6Om5ldygi L3Vzci9zaGFyZS9wdmUtbWFuYWdlci90ZW1wbGF0ZXMiKQorICAgICAgICBsZXQgcGF0aCA9IG1h dGNoIHNvdXJjZSB7CisgICAgICAgICAgICBUZW1wbGF0ZVNvdXJjZTo6VmVuZG9yID0+ICIvdXNy L3NoYXJlL3B2ZS1tYW5hZ2VyL3RlbXBsYXRlcyIsCisgICAgICAgICAgICBUZW1wbGF0ZVNvdXJj ZTo6T3ZlcnJpZGUgPT4gIi9ldGMvcHZlL25vdGlmaWNhdGlvbi10ZW1wbGF0ZXMiLAorICAgICAg ICB9OworCisgICAgICAgIGxldCBwYXRoID0gUGF0aDo6bmV3KCZwYXRoKQogICAgICAgICAgICAg LmpvaW4obmFtZXNwYWNlLnVud3JhcF9vcigiZGVmYXVsdCIpKQogICAgICAgICAgICAgLmpvaW4o ZmlsZW5hbWUpOworCiAgICAgICAgIGxldCB0ZW1wbGF0ZV9zdHJpbmcgPSBwcm94bW94X3N5czo6 ZnM6OmZpbGVfcmVhZF9vcHRpb25hbF9zdHJpbmcocGF0aCkKICAgICAgICAgICAgIC5tYXBfZXJy KHxlcnJ8IEVycm9yOjpHZW5lcmljKGZvcm1hdCEoImNvdWxkIG5vdCBsb2FkIHRlbXBsYXRlOiB7 ZXJyfSIpKSk/OwogICAgICAgICBPayh0ZW1wbGF0ZV9zdHJpbmcpCmRpZmYgLS1naXQgYS9wcm94 bW94LW5vdGlmeS9zcmMvY29udGV4dC90ZXN0LnJzIGIvcHJveG1veC1ub3RpZnkvc3JjL2NvbnRl eHQvdGVzdC5ycwppbmRleCA1ZGYyNWQwNS4uMTNlZjZlYWUgMTAwNjQ0Ci0tLSBhL3Byb3htb3gt bm90aWZ5L3NyYy9jb250ZXh0L3Rlc3QucnMKKysrIGIvcHJveG1veC1ub3RpZnkvc3JjL2NvbnRl eHQvdGVzdC5ycwpAQCAtMSw0ICsxLDUgQEAKIHVzZSBjcmF0ZTo6Y29udGV4dDo6Q29udGV4dDsK K3VzZSBjcmF0ZTo6cmVuZGVyZXI6OlRlbXBsYXRlU291cmNlOwogdXNlIGNyYXRlOjpFcnJvcjsK IAogI1tkZXJpdmUoRGVidWcpXQpAQCAtMjksNiArMzAsNyBAQCBpbXBsIENvbnRleHQgZm9yIFRl c3RDb250ZXh0IHsKICAgICAgICAgJnNlbGYsCiAgICAgICAgIF9maWxlbmFtZTogJnN0ciwKICAg ICAgICAgX25hbWVzcGFjZTogT3B0aW9uPCZzdHI+LAorICAgICAgICBfc291cmNlOiBUZW1wbGF0 ZVNvdXJjZSwKICAgICApIC0+IFJlc3VsdDxPcHRpb248U3RyaW5nPiwgRXJyb3I+IHsKICAgICAg ICAgT2soU29tZShTdHJpbmc6Om5ldygpKSkKICAgICB9CmRpZmYgLS1naXQgYS9wcm94bW94LW5v dGlmeS9zcmMvcmVuZGVyZXIvbW9kLnJzIGIvcHJveG1veC1ub3RpZnkvc3JjL3JlbmRlcmVyL21v ZC5ycwppbmRleCBlMDU4ZWEyMi4uYjM3Y2Y0MzggMTAwNjQ0Ci0tLSBhL3Byb3htb3gtbm90aWZ5 L3NyYy9yZW5kZXJlci9tb2QucnMKKysrIGIvcHJveG1veC1ub3RpZnkvc3JjL3JlbmRlcmVyL21v ZC5ycwpAQCAtMSw2ICsxLDYgQEAKIC8vISBNb2R1bGUgZm9yIHJlbmRlcmluZyBub3RpZmljYXRp b24gdGVtcGxhdGVzLgogCi11c2Ugc3RkOjp0aW1lOjpEdXJhdGlvbjsKK3VzZSBzdGQ6OntmbXQ6 OkRpc3BsYXksIHRpbWU6OkR1cmF0aW9ufTsKIAogdXNlIGhhbmRsZWJhcnM6OnsKICAgICBDb250 ZXh0LCBIYW5kbGViYXJzLCBIZWxwZXIsIEhlbHBlckRlZiwgSGVscGVyUmVzdWx0LCBPdXRwdXQs IFJlbmRlckNvbnRleHQsCkBAIC0xOTAsMTEgKzE5MCwyOSBAQCBpbXBsIFZhbHVlUmVuZGVyRnVu Y3Rpb24gewogICAgIH0KIH0KIAotLy8vIEF2YWlsYWJsZSB0ZW1wbGF0ZSB0eXBlcworLy8vIENo b29zZSBiZXR3ZWVuIHRoZSBwcm92aWRlZCBgdmVuZG9yYCB0ZW1wbGF0ZSBvciBpdHMgYnkgdGhl IHVzZXIgb3B0aW9uYWxseSBjcmVhdGVkIGBvdmVycmlkZWAKICNbZGVyaXZlKENvcHksIENsb25l KV0KK3B1YiBlbnVtIFRlbXBsYXRlU291cmNlIHsKKyAgICBWZW5kb3IsCisgICAgT3ZlcnJpZGUs Cit9CisKK2ltcGwgRGlzcGxheSBmb3IgVGVtcGxhdGVTb3VyY2UgeworICAgIGZuIGZtdCgmc2Vs ZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpmbXQ6OlJlc3VsdCB7 CisgICAgICAgIG1hdGNoIHNlbGYgeworICAgICAgICAgICAgVGVtcGxhdGVTb3VyY2U6OlZlbmRv ciA9PiBmLndyaXRlX3N0cigidmVuZG9yIiksCisgICAgICAgICAgICBUZW1wbGF0ZVNvdXJjZTo6 T3ZlcnJpZGUgPT4gZi53cml0ZV9zdHIoIm92ZXJyaWRlIiksCisgICAgICAgIH0KKyAgICB9Cit9 CisKKy8vLyBBdmFpbGFibGUgdGVtcGxhdGUgdHlwZXMKKyNbZGVyaXZlKENvcHksIENsb25lLCBQ YXJ0aWFsRXEpXQogcHViIGVudW0gVGVtcGxhdGVUeXBlIHsKICAgICAvLy8gSFRNTCBib2R5IHRl bXBsYXRlCiAgICAgSHRtbEJvZHksCisgICAgLy8vIEZhbGxiYWNrIEhUTUwgYm9keSwgYmFzZWQg b24gdGhlIGBQbGFpbnRleHRCb2R5YCB0ZW1wbGF0ZQorICAgIEh0bWxCb2R5RnJvbVBsYWludGV4 dCwKICAgICAvLy8gUGxhaW50ZXh0IGJvZHkgdGVtcGxhdGUKICAgICBQbGFpbnRleHRCb2R5LAog ICAgIC8vLyBTdWJqZWN0IHRlbXBsYXRlCkBAIC0yMDUsMTQgKzIyMywyNCBAQCBpbXBsIFRlbXBs YXRlVHlwZSB7CiAgICAgZm4gZmlsZV9zdWZmaXgoJnNlbGYpIC0+ICYnc3RhdGljIHN0ciB7CiAg ICAgICAgIG1hdGNoIHNlbGYgewogICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpIdG1sQm9keSA9 PiAiYm9keS5odG1sLmhicyIsCisgICAgICAgICAgICBUZW1wbGF0ZVR5cGU6Okh0bWxCb2R5RnJv bVBsYWludGV4dCA9PiAiYm9keS50eHQuaGJzIiwKICAgICAgICAgICAgIFRlbXBsYXRlVHlwZTo6 UGxhaW50ZXh0Qm9keSA9PiAiYm9keS50eHQuaGJzIiwKICAgICAgICAgICAgIFRlbXBsYXRlVHlw ZTo6U3ViamVjdCA9PiAic3ViamVjdC50eHQuaGJzIiwKICAgICAgICAgfQogICAgIH0KIAogICAg IGZuIHBvc3Rwcm9jZXNzKCZzZWxmLCBtdXQgcmVuZGVyZWQ6IFN0cmluZykgLT4gU3RyaW5nIHsK LSAgICAgICAgaWYgbGV0IFNlbGY6OlN1YmplY3QgPSBzZWxmIHsKLSAgICAgICAgICAgIHJlbmRl cmVkID0gcmVuZGVyZWQucmVwbGFjZSgnXG4nLCAiICIpOworICAgICAgICBtYXRjaCBzZWxmIHsK KyAgICAgICAgICAgIFRlbXBsYXRlVHlwZTo6SHRtbEJvZHlGcm9tUGxhaW50ZXh0ID0+IHsKKyAg ICAgICAgICAgICAgICByZW5kZXJlZCA9IGZvcm1hdCEoCisgICAgICAgICAgICAgICAgICAgICI8 aHRtbD48Ym9keT48cHJlPnt9PC9wcmU+PC9ib2R5PjwvaHRtbD4iLAorICAgICAgICAgICAgICAg ICAgICBoYW5kbGViYXJzOjpodG1sX2VzY2FwZSgmcmVuZGVyZWQpCisgICAgICAgICAgICAgICAg KQorICAgICAgICAgICAgfQorICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpTdWJqZWN0ID0+IHsK KyAgICAgICAgICAgICAgICByZW5kZXJlZCA9IHJlbmRlcmVkLnJlcGxhY2UoJ1xuJywgIiAiKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF8gPT4ge30KICAgICAgICAgfQogCiAgICAgICAg IHJlbmRlcmVkCkBAIC0yMjEsNiArMjQ5LDcgQEAgaW1wbCBUZW1wbGF0ZVR5cGUgewogICAgIGZu IGJsb2NrX3JlbmRlcl9mbnMoJnNlbGYpIC0+IEJsb2NrUmVuZGVyRnVuY3Rpb25zIHsKICAgICAg ICAgbWF0Y2ggc2VsZiB7CiAgICAgICAgICAgICBUZW1wbGF0ZVR5cGU6Okh0bWxCb2R5ID0+IGh0 bWw6OmJsb2NrX3JlbmRlcl9mdW5jdGlvbnMoKSwKKyAgICAgICAgICAgIFRlbXBsYXRlVHlwZTo6 SHRtbEJvZHlGcm9tUGxhaW50ZXh0ID0+IHBsYWludGV4dDo6YmxvY2tfcmVuZGVyX2Z1bmN0aW9u cygpLAogICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpTdWJqZWN0ID0+IHBsYWludGV4dDo6Ymxv Y2tfcmVuZGVyX2Z1bmN0aW9ucygpLAogICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpQbGFpbnRl eHRCb2R5ID0+IHBsYWludGV4dDo6YmxvY2tfcmVuZGVyX2Z1bmN0aW9ucygpLAogICAgICAgICB9 CkBAIC0yMzEsNiArMjYwLDcgQEAgaW1wbCBUZW1wbGF0ZVR5cGUgewogICAgICAgICAgICAgVGVt cGxhdGVUeXBlOjpQbGFpbnRleHRCb2R5ID0+IGhhbmRsZWJhcnM6Om5vX2VzY2FwZSwKICAgICAg ICAgICAgIFRlbXBsYXRlVHlwZTo6U3ViamVjdCA9PiBoYW5kbGViYXJzOjpub19lc2NhcGUsCiAg ICAgICAgICAgICBUZW1wbGF0ZVR5cGU6Okh0bWxCb2R5ID0+IGhhbmRsZWJhcnM6Omh0bWxfZXNj YXBlLAorICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpIdG1sQm9keUZyb21QbGFpbnRleHQgPT4g aGFuZGxlYmFyczo6bm9fZXNjYXBlLAogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjUwLDcwICsy ODAsMTAwIEBAIGltcGwgQmxvY2tSZW5kZXJGdW5jdGlvbnMgewogfQogCiBmbiByZW5kZXJfdGVt cGxhdGVfaW1wbCgKLSAgICB0ZW1wbGF0ZTogJnN0ciwKICAgICBkYXRhOiAmVmFsdWUsCiAgICAg cmVuZGVyZXI6IFRlbXBsYXRlVHlwZSwKLSkgLT4gUmVzdWx0PFN0cmluZywgRXJyb3I+IHsKLSAg ICBsZXQgbXV0IGhhbmRsZWJhcnMgPSBIYW5kbGViYXJzOjpuZXcoKTsKLSAgICBoYW5kbGViYXJz LnJlZ2lzdGVyX2VzY2FwZV9mbihyZW5kZXJlci5lc2NhcGVfZm4oKSk7CisgICAgZmlsZW5hbWU6 ICZzdHIsCisgICAgc291cmNlOiBUZW1wbGF0ZVNvdXJjZSwKKykgLT4gUmVzdWx0PE9wdGlvbjxT dHJpbmc+LCBFcnJvcj4geworICAgIGxldCB0ZW1wbGF0ZV9zdHJpbmcgPSBjb250ZXh0Ojpjb250 ZXh0KCkubG9va3VwX3RlbXBsYXRlKCZmaWxlbmFtZSwgTm9uZSwgc291cmNlKT87CiAKLSAgICBs ZXQgYmxvY2tfcmVuZGVyX2ZucyA9IHJlbmRlcmVyLmJsb2NrX3JlbmRlcl9mbnMoKTsKLSAgICBi bG9ja19yZW5kZXJfZm5zLnJlZ2lzdGVyX2hlbHBlcnMoJm11dCBoYW5kbGViYXJzKTsKKyAgICBp ZiBsZXQgU29tZSh0ZW1wbGF0ZV9zdHJpbmcpID0gdGVtcGxhdGVfc3RyaW5nIHsKKyAgICAgICAg bGV0IG11dCBoYW5kbGViYXJzID0gSGFuZGxlYmFyczo6bmV3KCk7CisgICAgICAgIGhhbmRsZWJh cnMucmVnaXN0ZXJfZXNjYXBlX2ZuKHJlbmRlcmVyLmVzY2FwZV9mbigpKTsKIAotICAgIFZhbHVl UmVuZGVyRnVuY3Rpb246OnJlZ2lzdGVyX2hlbHBlcnMoJm11dCBoYW5kbGViYXJzKTsKKyAgICAg ICAgbGV0IGJsb2NrX3JlbmRlcl9mbnMgPSByZW5kZXJlci5ibG9ja19yZW5kZXJfZm5zKCk7Cisg ICAgICAgIGJsb2NrX3JlbmRlcl9mbnMucmVnaXN0ZXJfaGVscGVycygmbXV0IGhhbmRsZWJhcnMp OwogCi0gICAgaGFuZGxlYmFycy5yZWdpc3Rlcl9oZWxwZXIoCi0gICAgICAgICJyZWxhdGl2ZS1w ZXJjZW50YWdlIiwKLSAgICAgICAgQm94OjpuZXcoaGFuZGxlYmFyc19yZWxhdGl2ZV9wZXJjZW50 YWdlX2hlbHBlciksCi0gICAgKTsKKyAgICAgICAgVmFsdWVSZW5kZXJGdW5jdGlvbjo6cmVnaXN0 ZXJfaGVscGVycygmbXV0IGhhbmRsZWJhcnMpOwogCi0gICAgbGV0IHJlbmRlcmVkX3RlbXBsYXRl ID0gaGFuZGxlYmFycwotICAgICAgICAucmVuZGVyX3RlbXBsYXRlKHRlbXBsYXRlLCBkYXRhKQot ICAgICAgICAubWFwX2Vycih8ZXJyfCBFcnJvcjo6UmVuZGVyRXJyb3IoZXJyLmludG8oKSkpPzsK KyAgICAgICAgaGFuZGxlYmFycy5yZWdpc3Rlcl9oZWxwZXIoCisgICAgICAgICAgICAicmVsYXRp dmUtcGVyY2VudGFnZSIsCisgICAgICAgICAgICBCb3g6Om5ldyhoYW5kbGViYXJzX3JlbGF0aXZl X3BlcmNlbnRhZ2VfaGVscGVyKSwKKyAgICAgICAgKTsKKworICAgICAgICBsZXQgcmVuZGVyZWRf dGVtcGxhdGUgPSBoYW5kbGViYXJzCisgICAgICAgICAgICAucmVuZGVyX3RlbXBsYXRlKCZ0ZW1w bGF0ZV9zdHJpbmcsIGRhdGEpCisgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCBFcnJvcjo6UmVu ZGVyRXJyb3IoZXJyLmludG8oKSkpPzsKKworICAgICAgICBsZXQgcmVuZGVyZWRfdGVtcGxhdGUg PSByZW5kZXJlci5wb3N0cHJvY2VzcyhyZW5kZXJlZF90ZW1wbGF0ZSk7CiAKLSAgICBPayhyZW5k ZXJlZF90ZW1wbGF0ZSkKKyAgICAgICAgT2soU29tZShyZW5kZXJlZF90ZW1wbGF0ZSkpCisgICAg fSBlbHNlIHsKKyAgICAgICAgT2soTm9uZSkKKyAgICB9CiB9CiAKIC8vLyBSZW5kZXIgYSB0ZW1w bGF0ZSBzdHJpbmcuCiAvLy8KLS8vLyBUaGUgb3V0cHV0IGZvcm1hdCBjYW4gYmUgY2hvc2VuIHZp YSB0aGUgYHJlbmRlcmVyYCBwYXJhbWV0ZXIgKHNlZSBbVGVtcGxhdGVUeXBlXQotLy8vIGZvciBh dmFpbGFibGUgb3B0aW9ucykuCisvLy8gVGhlIG91dHB1dCBmb3JtYXQgaXMgY2hvc2VuIHZpYSB0 aGUgYHR5YCBwYXJhbWV0ZXIgKHNlZSBbVGVtcGxhdGVUeXBlXSBmb3IKKy8vLyBhdmFpbGFibGUg b3B0aW9ucykuIElmIGFuIG92ZXJyaWRlIHRlbXBsYXRlIGlzIGZvdW5kIGFuZCByZW5kZXJhYmxl LCBpdCBpcworLy8vIHVzZWQgaW5zdGVhZCBvZiB0aGUgdmVuZG9yIG9uZS4gSWYgdGhlIFtUZW1w bGF0ZVR5cGVdIGlzIGBIdG1sQm9keWAgYnV0IG5vCisvLy8gSFRNTCB0ZW1wbGF0ZSBpcyBmb3Vu ZCBvciByZW5kZXJhYmxlLCBpdCBmYWxscyBiYWNrIHRvIHVzZSBhIHBsYWludGV4dAorLy8vIHRl bXBsYXRlIGVuY2Fwc3VsYXRlZCBpbiBhIHByZS1mb3JtYXR0ZWQgSFRNTCBibG9jayAoPHByZT4p LgogcHViIGZuIHJlbmRlcl90ZW1wbGF0ZSgKICAgICBtdXQgdHk6IFRlbXBsYXRlVHlwZSwKICAg ICB0ZW1wbGF0ZTogJnN0ciwKICAgICBkYXRhOiAmVmFsdWUsCiApIC0+IFJlc3VsdDxTdHJpbmcs IEVycm9yPiB7Ci0gICAgbGV0IGZpbGVuYW1lID0gZm9ybWF0ISgie3RlbXBsYXRlfS17c3VmZml4 fSIsIHN1ZmZpeCA9IHR5LmZpbGVfc3VmZml4KCkpOwotCi0gICAgbGV0IHRlbXBsYXRlX3N0cmlu ZyA9IGNvbnRleHQ6OmNvbnRleHQoKS5sb29rdXBfdGVtcGxhdGUoJmZpbGVuYW1lLCBOb25lKT87 CisgICAgbGV0IG11dCBzb3VyY2UgPSBUZW1wbGF0ZVNvdXJjZTo6T3ZlcnJpZGU7CisKKyAgICBs b29wIHsKKyAgICAgICAgbGV0IGZpbGVuYW1lID0gZm9ybWF0ISgie3RlbXBsYXRlfS17c3VmZml4 fSIsIHN1ZmZpeCA9IHR5LmZpbGVfc3VmZml4KCkpOworICAgICAgICBsZXQgcmVzdWx0ID0gcmVu ZGVyX3RlbXBsYXRlX2ltcGwoZGF0YSwgdHksICZmaWxlbmFtZSwgc291cmNlKTsKKworICAgICAg ICBtYXRjaCByZXN1bHQgeworICAgICAgICAgICAgT2soU29tZShzKSkgPT4geworICAgICAgICAg ICAgICAgIHJldHVybiBPayhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9rKE5vbmUp ID0+IHt9CisgICAgICAgICAgICBFcnIoZXJyKSA9PiB7CisgICAgICAgICAgICAgICAgdHJhY2lu Zzo6ZXJyb3IhKCJmYWlsZWQgdG8gcmVuZGVyIHtzb3VyY2V9IHRlbXBsYXRlICd7ZmlsZW5hbWV9 Jzoge2Vycn0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgbGV0ICh0ZW1wbGF0 ZV9zdHJpbmcsIGZhbGxiYWNrKSA9IG1hdGNoICh0ZW1wbGF0ZV9zdHJpbmcsIHR5KSB7Ci0gICAg ICAgIChOb25lLCBUZW1wbGF0ZVR5cGU6Okh0bWxCb2R5KSA9PiB7Ci0gICAgICAgICAgICB0eSA9 IFRlbXBsYXRlVHlwZTo6UGxhaW50ZXh0Qm9keTsKLSAgICAgICAgICAgIGxldCBwbGFpbnRleHRf ZmlsZW5hbWUgPSBmb3JtYXQhKCJ7dGVtcGxhdGV9LXtzdWZmaXh9Iiwgc3VmZml4ID0gdHkuZmls ZV9zdWZmaXgoKSk7CisgICAgICAgIG1hdGNoICh0eSwgc291cmNlKSB7CisgICAgICAgICAgICAo CisgICAgICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpIdG1sQm9keQorICAgICAgICAgICAgICAg IHwgVGVtcGxhdGVUeXBlOjpIdG1sQm9keUZyb21QbGFpbnRleHQKKyAgICAgICAgICAgICAgICB8 IFRlbXBsYXRlVHlwZTo6UGxhaW50ZXh0Qm9keQorICAgICAgICAgICAgICAgIHwgVGVtcGxhdGVU eXBlOjpTdWJqZWN0LAorICAgICAgICAgICAgICAgIFRlbXBsYXRlU291cmNlOjpPdmVycmlkZSwK KyAgICAgICAgICAgICkgPT4geworICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRlIHRlbXBsYXRl IG5vdCBmb3VuZCBvciByZW5kZXJhYmxlLCB0cnkgdGhlIHZlbmRvciBvbmUgaW5zdGVhZAorICAg ICAgICAgICAgICAgIHNvdXJjZSA9IFRlbXBsYXRlU291cmNlOjpWZW5kb3I7CisgICAgICAgICAg ICB9CisgICAgICAgICAgICAoVGVtcGxhdGVUeXBlOjpIdG1sQm9keSwgVGVtcGxhdGVTb3VyY2U6 OlZlbmRvcikgPT4geworICAgICAgICAgICAgICAgIC8vIE92ZXJyaWRlIGFuZCB2ZW5kb3IgSFRN TCB0ZW1wbGF0ZXMgbm90IGZvdW5kIG9yIHJlbmRlcmFibGUsCisgICAgICAgICAgICAgICAgLy8g dHJ5IG5leHQgdGhlIG92ZXJyaWRlIHBsYWludGV4dCBhcyBmYWxsYmFjaworICAgICAgICAgICAg ICAgIHR5ID0gVGVtcGxhdGVUeXBlOjpIdG1sQm9keUZyb21QbGFpbnRleHQ7CisgICAgICAgICAg ICAgICAgc291cmNlID0gVGVtcGxhdGVTb3VyY2U6Ok92ZXJyaWRlOworICAgICAgICAgICAgfQog ICAgICAgICAgICAgKAotICAgICAgICAgICAgICAgIGNvbnRleHQ6OmNvbnRleHQoKS5sb29rdXBf dGVtcGxhdGUoJnBsYWludGV4dF9maWxlbmFtZSwgTm9uZSk/LAotICAgICAgICAgICAgICAgIHRy dWUsCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgVGVtcGxhdGVUeXBlOjpIdG1sQm9k eUZyb21QbGFpbnRleHQKKyAgICAgICAgICAgICAgICB8IFRlbXBsYXRlVHlwZTo6UGxhaW50ZXh0 Qm9keQorICAgICAgICAgICAgICAgIHwgVGVtcGxhdGVUeXBlOjpTdWJqZWN0LAorICAgICAgICAg ICAgICAgIFRlbXBsYXRlU291cmNlOjpWZW5kb3IsCisgICAgICAgICAgICApID0+IHsKKyAgICAg ICAgICAgICAgICAvLyBSZXR1cm4gZXJyb3IsIG5vIHN1aXRhYmxlIHRlbXBsYXRlcyBmb3VuZCBv ciByZW5kZXJhYmxlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg ICAgIH0KLSAgICAgICAgKHRlbXBsYXRlX3N0cmluZywgXykgPT4gKHRlbXBsYXRlX3N0cmluZywg ZmFsc2UpLAotICAgIH07Ci0KLSAgICBsZXQgdGVtcGxhdGVfc3RyaW5nID0gdGVtcGxhdGVfc3Ry aW5nLm9rX29yKEVycm9yOjpHZW5lcmljKGZvcm1hdCEoCi0gICAgICAgICJjb3VsZCBub3QgbG9h ZCB0ZW1wbGF0ZSAne3RlbXBsYXRlfSciCi0gICAgKSkpPzsKLQotICAgIGxldCBtdXQgcmVuZGVy ZWQgPSByZW5kZXJfdGVtcGxhdGVfaW1wbCgmdGVtcGxhdGVfc3RyaW5nLCBkYXRhLCB0eSk/Owot ICAgIHJlbmRlcmVkID0gdHkucG9zdHByb2Nlc3MocmVuZGVyZWQpOwotCi0gICAgaWYgZmFsbGJh Y2sgewotICAgICAgICByZW5kZXJlZCA9IGZvcm1hdCEoCi0gICAgICAgICAgICAiPGh0bWw+PGJv ZHk+PHByZT57fTwvcHJlPjwvYm9keT48L2h0bWw+IiwKLSAgICAgICAgICAgIGhhbmRsZWJhcnM6 Omh0bWxfZXNjYXBlKCZyZW5kZXJlZCkKLSAgICAgICAgKTsKICAgICB9CiAKLSAgICBPayhyZW5k ZXJlZCkKKyAgICBFcnIoRXJyb3I6OkdlbmVyaWMoCisgICAgICAgICJmYWlsZWQgdG8gcmVuZGVy IG5vdGlmaWNhdGlvbiB0ZW1wbGF0ZSwgYWxsIHRlbXBsYXRlIGNhbmRpZGF0ZXMgYXJlIGVycm9u ZW91cyBvciBtaXNzaW5nIgorICAgICAgICAgICAgLmludG8oKSwKKyAgICApKQogfQogCiAjW2Nm Zyh0ZXN0KV0KLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9wdmUtZGV2ZWwK