From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id B19E41FF184 for ; Thu, 20 Nov 2025 12:06:45 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 71C153F9A; Thu, 20 Nov 2025 12:06:47 +0100 (CET) From: Stefan Hanreich To: pdm-devel@lists.proxmox.com Date: Thu, 20 Nov 2025 12:06:36 +0100 Message-ID: <20251120110641.120124-7-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251120110641.120124-1-s.hanreich@proxmox.com> References: <20251120110641.120124-1-s.hanreich@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.173 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 KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pdm-devel] [PATCH proxmox-datacenter-manager v3 3/5] ui: sdn: evpn: add zone status panel X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" VGhpcyBwYW5lbCBzaG93cyB0aGUgc3RhdHVzIG9mIHRoZSBJUC1WUkYgb2YgYW4gRVZQTiB6b25l LiBJdCBsaXN0cwp0aGUgcm91dGluZyB0YWJsZSBvZiBhIGdpdmVuIG5vZGUsIHdoaWNoIGNhbiBi ZSBzZWxlY3RlZCB2aWEgdGhlCmRyb3Bkb3duIGluIHRoZSBwYW5lbC4gSXQgd2lsbCBiZSB1c2Vk IGluIHRoZSByZW1vdGUgdHJlZSBvZiB0aGUgRVZQTgp2aWV3IHRvIGRpc3BsYXkgZGV0YWlsZWQg aW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlbGVjdGVkIEVWUE4gem9uZS4KClNpZ25lZC1vZmYtYnk6 IFN0ZWZhbiBIYW5yZWljaCA8cy5oYW5yZWljaEBwcm94bW94LmNvbT4KVGVzdGVkLWJ5OiBIYW5u ZXMgRMO8cnIgPGguZHVlcnJAcHJveG1veC5jb20+ClJldmlld2VkLWJ5OiBMdWthcyBXYWduZXIg PGwud2FnbmVyQHByb3htb3guY29tPgotLS0KIHVpL3NyYy9zZG4vZXZwbi9tb2QucnMgICAgICAg ICB8ICAzMyArKysrKwogdWkvc3JjL3Nkbi9ldnBuL3pvbmVfc3RhdHVzLnJzIHwgMjYxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyOTQgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL3NyYy9zZG4vZXZwbi96b25lX3N0YXR1cy5y cwoKZGlmZiAtLWdpdCBhL3VpL3NyYy9zZG4vZXZwbi9tb2QucnMgYi91aS9zcmMvc2RuL2V2cG4v bW9kLnJzCmluZGV4IDE5NDhlY2YuLjZjOTE5YmEgMTAwNjQ0Ci0tLSBhL3VpL3NyYy9zZG4vZXZw bi9tb2QucnMKKysrIGIvdWkvc3JjL3Nkbi9ldnBuL21vZC5ycwpAQCAtMTMsNiArMTMsOSBAQCBw dWIgdXNlIGFkZF92bmV0OjpBZGRWbmV0V2luZG93OwogbW9kIGFkZF96b25lOwogcHViIHVzZSBh ZGRfem9uZTo6QWRkWm9uZVdpbmRvdzsKIAorbW9kIHpvbmVfc3RhdHVzOworcHViIHVzZSB6b25l X3N0YXR1czo6Wm9uZVN0YXR1c1RhYmxlOworCiAjW2Rlcml2ZShDbG9uZSwgQ29weSwgRGVidWcs IFBhcnRpYWxFcSwgRXEsIE9yZCwgUGFydGlhbE9yZCwgSGFzaCldCiBwdWIgc3RydWN0IEV2cG5S b3V0ZVRhcmdldCB7CiAgICAgYXNuOiB1MzIsCkBAIC0zOSwzICs0MiwzMyBAQCBpbXBsIHN0ZDo6 Zm10OjpEaXNwbGF5IGZvciBFdnBuUm91dGVUYXJnZXQgewogICAgICAgICB3cml0ZSEoZiwgInt9 Ont9Iiwgc2VsZi5hc24sIHNlbGYudm5pKQogICAgIH0KIH0KKworI1tkZXJpdmUoRGVidWcsIENs b25lLCBQYXJ0aWFsRXEsIERlZmF1bHQpXQorI1tyZXByKHRyYW5zcGFyZW50KV0KK3B1YiBzdHJ1 Y3QgTm9kZUxpc3QoVmVjPFN0cmluZz4pOworCitpbXBsIHN0ZDo6b3BzOjpEZXJlZiBmb3IgTm9k ZUxpc3QgeworICAgIHR5cGUgVGFyZ2V0ID0gVmVjPFN0cmluZz47CisKKyAgICBmbiBkZXJlZigm c2VsZikgLT4gJlNlbGY6OlRhcmdldCB7CisgICAgICAgICZzZWxmLjAKKyAgICB9Cit9CisKK2lt cGwgc3RkOjpzdHI6OkZyb21TdHIgZm9yIE5vZGVMaXN0IHsKKyAgICB0eXBlIEVyciA9IGFueWhv dzo6RXJyb3I7CisKKyAgICBmbiBmcm9tX3N0cih2YWx1ZTogJnN0cikgLT4gUmVzdWx0PFNlbGYs IFNlbGY6OkVycj4geworICAgICAgICBpZiB2YWx1ZS5pc19lbXB0eSgpIHsKKyAgICAgICAgICAg IGFueWhvdzo6YmFpbCEoIm5vZGUgbGlzdCBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nIik7Cisg ICAgICAgIH0KKworICAgICAgICBPayhTZWxmKHZhbHVlLnNwbGl0KCIsIikubWFwKFN0cmluZzo6 ZnJvbSkuY29sbGVjdCgpKSkKKyAgICB9Cit9CisKK2ltcGwgRnJvbUl0ZXJhdG9yPFN0cmluZz4g Zm9yIE5vZGVMaXN0IHsKKyAgICBmbiBmcm9tX2l0ZXI8STogSW50b0l0ZXJhdG9yPEl0ZW0gPSBT dHJpbmc+PihpdGVyOiBJKSAtPiBTZWxmIHsKKyAgICAgICAgU2VsZihpdGVyLmludG9faXRlcigp LmNvbGxlY3QoKSkKKyAgICB9Cit9CmRpZmYgLS1naXQgYS91aS9zcmMvc2RuL2V2cG4vem9uZV9z dGF0dXMucnMgYi91aS9zcmMvc2RuL2V2cG4vem9uZV9zdGF0dXMucnMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2YjY4ZAotLS0gL2Rldi9udWxsCisrKyBiL3VpL3NyYy9z ZG4vZXZwbi96b25lX3N0YXR1cy5ycwpAQCAtMCwwICsxLDI2MSBAQAordXNlIHN0ZDo6Y21wOjpP cmRlcmluZzsKK3VzZSBzdGQ6OmZ1dHVyZTo6RnV0dXJlOwordXNlIHN0ZDo6cGluOjpQaW47Cit1 c2Ugc3RkOjpyYzo6UmM7CisKK3VzZSBhbnlob3c6OntDb250ZXh0LCBFcnJvcn07Cit1c2UgeWV3 Ojp2aXJ0dWFsX2RvbTo6e0tleSwgVkNvbXAsIFZOb2RlfTsKK3VzZSB5ZXc6OntodG1sLCBBdHRy VmFsdWUsIFByb3BlcnRpZXN9OworCit1c2UgcGRtX2NsaWVudDo6dHlwZXM6OlNkblpvbmVJcFZy ZjsKK3VzZSBwcm94bW94X3lld19jb21wOjp7TG9hZGFibGVDb21wb25lbnQsIExvYWRhYmxlQ29t cG9uZW50Q29udGV4dCwgTG9hZGFibGVDb21wb25lbnRNYXN0ZXJ9OwordXNlIHB3dDo6cHJvcHM6 OntDb250YWluZXJCdWlsZGVyLCBGaWVsZEJ1aWxkZXIsIFdpZGdldEJ1aWxkZXIsIFdpZGdldFN0 eWxlQnVpbGRlcn07Cit1c2UgcHd0Ojpwcm9wczo6e0V2ZW50U3Vic2NyaWJlciwgRXh0cmFjdFBy aW1hcnlLZXl9OwordXNlIHB3dDo6c3RhdGU6OlN0b3JlOwordXNlIHB3dDo6dHI7Cit1c2UgcHd0 Ojp3aWRnZXQ6OmRhdGFfdGFibGU6OntEYXRhVGFibGUsIERhdGFUYWJsZUNvbHVtbiwgRGF0YVRh YmxlSGVhZGVyfTsKK3VzZSBwd3Q6OndpZGdldDo6Zm9ybTo6Q29tYm9ib3g7Cit1c2UgcHd0Ojp3 aWRnZXQ6OntlcnJvcl9tZXNzYWdlLCBCdXR0b24sIENvbHVtbiwgSW5wdXRQYW5lbCwgVG9vbGJh cn07CisKK3VzZSBjcmF0ZTo6cGRtX2NsaWVudDsKK3VzZSBjcmF0ZTo6c2RuOjpldnBuOjpOb2Rl TGlzdDsKKworI1tkZXJpdmUoQ2xvbmUsIFBhcnRpYWxFcSwgUHJvcGVydGllcywgRGVmYXVsdCld CitwdWIgc3RydWN0IFpvbmVTdGF0dXNUYWJsZSB7CisgICAgcmVtb3RlOiBTdHJpbmcsCisgICAg em9uZTogU3RyaW5nLAorICAgIG5vZGVzOiBPcHRpb248Tm9kZUxpc3Q+LAorfQorCitpbXBsIFpv bmVTdGF0dXNUYWJsZSB7CisgICAgcHViIGZuIG5ldyhyZW1vdGU6IFN0cmluZywgem9uZTogU3Ry aW5nLCBub2RlczogT3B0aW9uPE5vZGVMaXN0PikgLT4gU2VsZiB7CisgICAgICAgIHlldzo6cHJv cHMhKFNlbGYgeworICAgICAgICAgICAgem9uZSwKKyAgICAgICAgICAgIHJlbW90ZSwKKyAgICAg ICAgICAgIG5vZGVzCisgICAgICAgIH0pCisgICAgfQorfQorCitpbXBsIEZyb208Wm9uZVN0YXR1 c1RhYmxlPiBmb3IgVk5vZGUgeworICAgIGZuIGZyb20odmFsdWU6IFpvbmVTdGF0dXNUYWJsZSkg LT4gU2VsZiB7CisgICAgICAgIGxldCBjb21wID0gVkNvbXA6Om5ldzo6PExvYWRhYmxlQ29tcG9u ZW50TWFzdGVyPFpvbmVTdGF0dXNDb21wb25lbnQ+PihSYzo6bmV3KHZhbHVlKSwgTm9uZSk7Cisg ICAgICAgIFZOb2RlOjpmcm9tKGNvbXApCisgICAgfQorfQorCisjW2Rlcml2ZShDbG9uZSwgUGFy dGlhbEVxKV0KKyNbcmVwcih0cmFuc3BhcmVudCldCitwdWIgc3RydWN0IElwVnJmRW50cnkocHVi IFNkblpvbmVJcFZyZik7CisKK2ltcGwgRnJvbTxTZG5ab25lSXBWcmY+IGZvciBJcFZyZkVudHJ5 IHsKKyAgICBmbiBmcm9tKHZhbHVlOiBTZG5ab25lSXBWcmYpIC0+IFNlbGYgeworICAgICAgICBT ZWxmKHZhbHVlKQorICAgIH0KK30KKworaW1wbCBFeHRyYWN0UHJpbWFyeUtleSBmb3IgSXBWcmZF bnRyeSB7CisgICAgZm4gZXh0cmFjdF9rZXkoJnNlbGYpIC0+IEtleSB7CisgICAgICAgIEtleTo6 ZnJvbShzZWxmLjAuaXAuYXNfc3RyKCkpCisgICAgfQorfQorCitmbiBkZWZhdWx0X3NvcnRlcihh OiAmSXBWcmZFbnRyeSwgYjogJklwVnJmRW50cnkpIC0+IE9yZGVyaW5nIHsKKyAgICAoJmEuMC5p cCwgJmEuMC5tZXRyaWMpLmNtcCgmKCZiLjAuaXAsICZiLjAubWV0cmljKSkKK30KKworc3RydWN0 IFpvbmVTdGF0dXNDb21wb25lbnQgeworICAgIHN0b3JlOiBTdG9yZTxJcFZyZkVudHJ5PiwKKyAg ICBjb2x1bW5zOiBSYzxWZWM8RGF0YVRhYmxlSGVhZGVyPElwVnJmRW50cnk+Pj4sCisgICAgbm9k ZXM6IE9wdGlvbjxSYzxWZWM8QXR0clZhbHVlPj4+LAorICAgIHNlbGVjdGVkX25vZGU6IE9wdGlv bjxBdHRyVmFsdWU+LAorICAgIGVycm9yX21zZzogT3B0aW9uPFN0cmluZz4sCisgICAgdnJmX2xv YWRpbmc6IGJvb2wsCit9CisKK2ltcGwgWm9uZVN0YXR1c0NvbXBvbmVudCB7CisgICAgZm4gY29s dW1ucygpIC0+IFJjPFZlYzxEYXRhVGFibGVIZWFkZXI8SXBWcmZFbnRyeT4+PiB7CisgICAgICAg IFJjOjpuZXcodmVjIVsKKyAgICAgICAgICAgIERhdGFUYWJsZUNvbHVtbjo6bmV3KHRyISgiRGVz dGluYXRpb24iKSkKKyAgICAgICAgICAgICAgICAuZ2V0X3Byb3BlcnR5KHxlbnRyeTogJklwVnJm RW50cnl8ICZlbnRyeS4wLmlwKQorICAgICAgICAgICAgICAgIC5pbnRvKCksCisgICAgICAgICAg ICBEYXRhVGFibGVDb2x1bW46Om5ldyh0ciEoIk5leHRob3BzIikpCisgICAgICAgICAgICAgICAg LnJlbmRlcih8ZW50cnk6ICZJcFZyZkVudHJ5fCB7CisgICAgICAgICAgICAgICAgICAgIGxldCBt dXQgY29sdW1uID0gQ29sdW1uOjpuZXcoKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgbmV4 dGhvcCBpbiAmZW50cnkuMC5uZXh0aG9wcyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW4uYWRkX2NoaWxkKGh0bWwhIHsgPGRpdj57IG5leHRob3AgfTwvZGl2PiB9KTsKKyAgICAgICAg ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5pbnRvKCkKKyAgICAg ICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC5pbnRvKCksCisgICAgICAgICAgICBEYXRh VGFibGVDb2x1bW46Om5ldyh0ciEoIlByb3RvY29sIikpCisgICAgICAgICAgICAgICAgLmdldF9w cm9wZXJ0eSh8ZW50cnk6ICZJcFZyZkVudHJ5fCAmZW50cnkuMC5wcm90b2NvbCkKKyAgICAgICAg ICAgICAgICAuaW50bygpLAorICAgICAgICAgICAgRGF0YVRhYmxlQ29sdW1uOjpuZXcodHIhKCJN ZXRyaWMiKSkKKyAgICAgICAgICAgICAgICAuZ2V0X3Byb3BlcnR5KHxlbnRyeTogJklwVnJmRW50 cnl8ICZlbnRyeS4wLm1ldHJpYykKKyAgICAgICAgICAgICAgICAuaW50bygpLAorICAgICAgICBd KQorICAgIH0KK30KKworI1tkZXJpdmUoRGVidWcpXQorZW51bSBab25lU3RhdHVzQ29tcG9uZW50 TXNnIHsKKyAgICBOb2RlU2VsZWN0ZWQoT3B0aW9uPFN0cmluZz4pLAorICAgIE5vZGVMaXN0TG9h ZGVkKFJjPFZlYzxBdHRyVmFsdWU+PiksCisgICAgWm9uZVN0YXR1c0xvYWRlZChSZXN1bHQ8VmVj PFNkblpvbmVJcFZyZj4sIEVycm9yPiksCit9CisKK2ltcGwgTG9hZGFibGVDb21wb25lbnQgZm9y IFpvbmVTdGF0dXNDb21wb25lbnQgeworICAgIHR5cGUgTWVzc2FnZSA9IFpvbmVTdGF0dXNDb21w b25lbnRNc2c7CisgICAgdHlwZSBQcm9wZXJ0aWVzID0gWm9uZVN0YXR1c1RhYmxlOworICAgIHR5 cGUgVmlld1N0YXRlID0gKCk7CisKKyAgICBmbiBjcmVhdGUoX2N0eDogJkxvYWRhYmxlQ29tcG9u ZW50Q29udGV4dDxTZWxmPikgLT4gU2VsZiB7CisgICAgICAgIFNlbGYgeworICAgICAgICAgICAg c3RvcmU6IFN0b3JlOjpuZXcoKSwKKyAgICAgICAgICAgIGNvbHVtbnM6IFNlbGY6OmNvbHVtbnMo KSwKKyAgICAgICAgICAgIHNlbGVjdGVkX25vZGU6IE5vbmUsCisgICAgICAgICAgICBub2Rlczog RGVmYXVsdDo6ZGVmYXVsdCgpLAorICAgICAgICAgICAgZXJyb3JfbXNnOiBOb25lLAorICAgICAg ICAgICAgdnJmX2xvYWRpbmc6IGZhbHNlLAorICAgICAgICB9CisgICAgfQorCisgICAgZm4gbG9h ZCgKKyAgICAgICAgJnNlbGYsCisgICAgICAgIGN0eDogJnByb3htb3hfeWV3X2NvbXA6OkxvYWRh YmxlQ29tcG9uZW50Q29udGV4dDxTZWxmPiwKKyAgICApIC0+IFBpbjxCb3g8ZHluIEZ1dHVyZTxP dXRwdXQgPSBSZXN1bHQ8KCksIGFueWhvdzo6RXJyb3I+Pj4+IHsKKyAgICAgICAgbGV0IGxpbmsg PSBjdHgubGluaygpLmNsb25lKCk7CisgICAgICAgIGxldCBwcm9wcyA9IGN0eC5wcm9wcygpLmNs b25lKCk7CisKKyAgICAgICAgQm94OjpwaW4oYXN5bmMgbW92ZSB7CisgICAgICAgICAgICBsZXQg bm9kZV9saXN0ID0gaWYgbGV0IFNvbWUobm9kZXMpID0gcHJvcHMubm9kZXMgeworICAgICAgICAg ICAgICAgIG5vZGVzLml0ZXIoKS5jbG9uZWQoKS5tYXAoQXR0clZhbHVlOjpmcm9tKS5jb2xsZWN0 KCkKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGRtX2NsaWVudCgpCisg ICAgICAgICAgICAgICAgICAgIC5wdmVfbGlzdF9ub2RlcygmcHJvcHMucmVtb3RlKQorICAgICAg ICAgICAgICAgICAgICAuYXdhaXQ/CisgICAgICAgICAgICAgICAgICAgIC5pbnRvX2l0ZXIoKQor ICAgICAgICAgICAgICAgICAgICAubWFwKHxub2RlX2luZGV4fCBBdHRyVmFsdWU6OmZyb20obm9k ZV9pbmRleC5ub2RlKSkKKyAgICAgICAgICAgICAgICAgICAgLmNvbGxlY3QoKQorICAgICAgICAg ICAgfTsKKworICAgICAgICAgICAgbGluay5zZW5kX21lc3NhZ2UoU2VsZjo6TWVzc2FnZTo6Tm9k ZUxpc3RMb2FkZWQoUmM6Om5ldyhub2RlX2xpc3QpKSk7CisKKyAgICAgICAgICAgIE9rKCgpKQor ICAgICAgICB9KQorICAgIH0KKworICAgIGZuIHVwZGF0ZSgmbXV0IHNlbGYsIGN0eDogJkxvYWRh YmxlQ29tcG9uZW50Q29udGV4dDxTZWxmPiwgbXNnOiBTZWxmOjpNZXNzYWdlKSAtPiBib29sIHsK KyAgICAgICAgbWF0Y2ggbXNnIHsKKyAgICAgICAgICAgIFNlbGY6Ok1lc3NhZ2U6Ok5vZGVMaXN0 TG9hZGVkKG5vZGVfbGlzdCkgPT4geworICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZF9ub2Rl ID0gbm9kZV9saXN0Lml0ZXIoKS5uZXh0KCkuY2xvbmVkKCk7CisKKyAgICAgICAgICAgICAgICBz ZWxmLm5vZGVzID0gU29tZShub2RlX2xpc3QpOworCisgICAgICAgICAgICAgICAgaWYgbGV0IFNv bWUobm9kZSkgPSBzZWxlY3RlZF9ub2RlIHsKKyAgICAgICAgICAgICAgICAgICAgY3R4Lmxpbmso KQorICAgICAgICAgICAgICAgICAgICAgICAgLnNlbmRfbWVzc2FnZShTZWxmOjpNZXNzYWdlOjpO b2RlU2VsZWN0ZWQoU29tZShub2RlLnRvX3N0cmluZygpKSkpOworICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNlbGY6Ok1lc3NhZ2U6Ok5vZGVTZWxlY3RlZChu b2RlX25hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiBsZXQgU29tZShub2RlX25hbWUpID0g bm9kZV9uYW1lIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52cmZfbG9hZGluZyA9IHRydWU7 CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfbm9kZSA9IFNvbWUobm9kZV9uYW1l LmNsb25lKCkuaW50bygpKTsKKworICAgICAgICAgICAgICAgICAgICBsZXQgbGluayA9IGN0eC5s aW5rKCkuY2xvbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BzID0gY3R4LnByb3Bz KCkuY2xvbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBjdHgubGluaygpLnNwYXduKGFzeW5j IG1vdmUgeworICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXR1c19yZXN1bHQgPSBwZG1f Y2xpZW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHZlX3Nkbl96b25lX2dldF9p cF92cmYoJnByb3BzLnJlbW90ZSwgJm5vZGVfbmFtZSwgJnByb3BzLnpvbmUpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLmF3YWl0OworCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5r LnNlbmRfbWVzc2FnZShTZWxmOjpNZXNzYWdlOjpab25lU3RhdHVzTG9hZGVkKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1c19yZXN1bHQud2l0aF9jb250ZXh0KHx8ICJjb3VsZCBu b3QgbG9hZCB6b25lIHN0YXR1cyIudG9fc3RyaW5nKCkpLAorICAgICAgICAgICAgICAgICAgICAg ICAgKSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIFNlbGY6Ok1lc3NhZ2U6OlpvbmVTdGF0dXNMb2FkZWQoem9u ZV9zdGF0dXNfcmVzdWx0KSA9PiB7CisgICAgICAgICAgICAgICAgc2VsZi52cmZfbG9hZGluZyA9 IGZhbHNlOworCisgICAgICAgICAgICAgICAgbWF0Y2ggem9uZV9zdGF0dXNfcmVzdWx0IHsKKyAg ICAgICAgICAgICAgICAgICAgT2soem9uZV9zdGF0dXMpID0+IHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAud3JpdGUoKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRfZGF0YSh6b25lX3N0YXR1cy5pbnRvX2l0 ZXIoKS5tYXAoSXBWcmZFbnRyeTo6ZnJvbSkuY29sbGVjdCgpKTsKKworICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdG9yZS5zZXRfc29ydGVyKGRlZmF1bHRfc29ydGVyKTsKKworICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcl9tc2cgPSBOb25lOworICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgIEVycihlcnJvcikgPT4geworICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdG9yZS53cml0ZSgpLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLmVycm9yX21zZyA9IFNvbWUoZm9ybWF0ISgie2Vycm9yOj99IikpOworICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg ICAgICB9CisKKyAgICAgICAgdHJ1ZQorICAgIH0KKworICAgIGZuIG1haW5fdmlldygmc2VsZiwg Y3R4OiAmcHJveG1veF95ZXdfY29tcDo6TG9hZGFibGVDb21wb25lbnRDb250ZXh0PFNlbGY+KSAt PiB5ZXc6Okh0bWwgeworICAgICAgICBsZXQgc2VsZWN0ZWRfbm9kZSA9IHNlbGYuc2VsZWN0ZWRf bm9kZS5jbG9uZSgpOworCisgICAgICAgIGxldCB0b29sYmFyID0gVG9vbGJhcjo6bmV3KCkKKyAg ICAgICAgICAgIC5jbGFzcygicHd0LXctMTAwIikKKyAgICAgICAgICAgIC5jbGFzcygicHd0LW92 ZXJmbG93LWhpZGRlbiIpCisgICAgICAgICAgICAuY2xhc3MoInB3dC1ib3JkZXItYm90dG9tIikK KyAgICAgICAgICAgIC53aXRoX2NoaWxkKAorICAgICAgICAgICAgICAgIElucHV0UGFuZWw6Om5l dygpLndpdGhfZmllbGQoCisgICAgICAgICAgICAgICAgICAgIHRyISgiTm9kZSIpLAorICAgICAg ICAgICAgICAgICAgICBDb21ib2JveDo6bmV3KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5t aW5fd2lkdGgoMTAwKQorICAgICAgICAgICAgICAgICAgICAgICAgLnJlcXVpcmVkKHRydWUpCisg ICAgICAgICAgICAgICAgICAgICAgICAudmFsdWUoc2VsZi5zZWxlY3RlZF9ub2RlLmNsb25lKCkp CisgICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXMoc2VsZi5ub2Rlcy5jbG9uZSgpLnVud3Jh cF9vcl9kZWZhdWx0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAub25fY2hhbmdlKAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5saW5rKCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLmNhbGxiYWNrKHxub2RlfCBTZWxmOjpNZXNzYWdlOjpOb2RlU2VsZWN0ZWQo U29tZShub2RlKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAg ICApLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgLndpdGhfZmxleF9zcGFjZXIoKQorICAg ICAgICAgICAgLndpdGhfY2hpbGQoQnV0dG9uOjpyZWZyZXNoKGN0eC5sb2FkaW5nKCkgfHwgc2Vs Zi52cmZfbG9hZGluZykub25jbGljaygKKyAgICAgICAgICAgICAgICBjdHgubGluaygpLmNhbGxi YWNrKG1vdmUgfF98IHsKKyAgICAgICAgICAgICAgICAgICAgU2VsZjo6TWVzc2FnZTo6Tm9kZVNl bGVjdGVkKHNlbGVjdGVkX25vZGUuYXNfcmVmKCkubWFwKFRvU3RyaW5nOjp0b19zdHJpbmcpKQor ICAgICAgICAgICAgICAgIH0pLAorICAgICAgICAgICAgKSk7CisKKyAgICAgICAgbGV0IHRhYmxl ID0KKyAgICAgICAgICAgIERhdGFUYWJsZTo6bmV3KHNlbGYuY29sdW1ucy5jbG9uZSgpLCBzZWxm LnN0b3JlLmNsb25lKCkpLmNsYXNzKHB3dDo6Y3NzOjpGbGV4Rml0KTsKKworICAgICAgICBsZXQg bXV0IGNvbHVtbiA9IENvbHVtbjo6bmV3KCkKKyAgICAgICAgICAgIC5jbGFzcyhwd3Q6OmNzczo6 RmxleEZpdCkKKyAgICAgICAgICAgIC53aXRoX2NoaWxkKHRvb2xiYXIpCisgICAgICAgICAgICAu d2l0aF9jaGlsZCh0YWJsZSk7CisKKyAgICAgICAgaWYgbGV0IFNvbWUobXNnKSA9ICZzZWxmLmVy cm9yX21zZyB7CisgICAgICAgICAgICBjb2x1bW4uYWRkX2NoaWxkKGVycm9yX21lc3NhZ2UobXNn KSk7CisgICAgICAgIH0KKworICAgICAgICBjb2x1bW4uaW50bygpCisgICAgfQorCisgICAgZm4g Y2hhbmdlZCgKKyAgICAgICAgJm11dCBzZWxmLAorICAgICAgICBjdHg6ICZMb2FkYWJsZUNvbXBv bmVudENvbnRleHQ8U2VsZj4sCisgICAgICAgIF9vbGRfcHJvcHM6ICZTZWxmOjpQcm9wZXJ0aWVz LAorICAgICkgLT4gYm9vbCB7CisgICAgICAgIHNlbGYuc2VsZWN0ZWRfbm9kZSA9IE5vbmU7Cisg ICAgICAgIHNlbGYubm9kZXMgPSBOb25lOworCisgICAgICAgIGN0eC5saW5rKCkuc2VuZF9yZWxv YWQoKTsKKworICAgICAgICB0cnVlCisgICAgfQorfQotLSAKMi40Ny4zCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGRtLWRldmVsIG1haWxpbmcgbGlz dApwZG0tZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9j Z2ktYmluL21haWxtYW4vbGlzdGluZm8vcGRtLWRldmVsCg==