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 89D4F1FF164 for <inbox@lore.proxmox.com>; Fri, 28 Mar 2025 18:17:27 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9EAE1926D; Fri, 28 Mar 2025 18:14:23 +0100 (CET) From: Gabriel Goller <g.goller@proxmox.com> To: pve-devel@lists.proxmox.com Date: Fri, 28 Mar 2025 18:12:52 +0100 Message-Id: <20250328171340.885413-5-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250328171340.885413-1-g.goller@proxmox.com> References: <20250328171340.885413-1-g.goller@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.025 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH proxmox-ve-rs 03/17] network-types: add openfabric NET type 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> VGhlIE5ldHdvcmsgRW50aXR5IFRpdGxlIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgaW4gb3BlbmZh YnJpYywgYnV0IGl0J3MKYSBnZW5lcmljIGNvbnN0cnVjdCwgd2hpY2ggaW4gdGhlIGZ1dHVyZSwg d2lsbCBhbHNvIGJlIHVzZWQgaW4gSVMtSVMKKHdoZW4gaXQncyBwb3J0ZWQgaW4gcnVzdCkuCkFs c28gaW5jbHVkZSBoZWxwZXJzIHRoYXQgY29udmVydCBmcm9tIElQdjQgYW5kIElQdjYgdG8gTkVU IGJ5IHVzaW5nIHRoZQpCaW5hcnkgQ29kZWQgRGVjaW1hbHMgKEJDRCkuIFRoZSBJUHY0IGNvbnZl cnNpb24gaXMgcXVpdGUKc3RyYWlnaHRmb3J3YXJkLCB5b3UganVzdCBwYWQgdXAgdGhlIG51bWJl cnMgYW5kIHRoZW4gc3BsaXQgdGhlIGFkZHJlc3MKaW4gMyBxdWFydGV0cyB3aGljaCBpcyB5b3Vy IFN5c3RlbUlkLiBPbiBJUHY2IHlvdSB0YWtlIHRoZSBsYXN0IDMKc2VnbWVudHMsIHdoaWNoIGNh biBiZSBkaXJlY3RseSBjb252ZXJ0ZWQgaW50byB0aGUgTkVUIGFkZHJlc3MuCgpUaGUgTkVUIGlz IGRlZmluZWQgaW4gYSBJU08gc3RhbmRhcmQgYW5kIGFsc28gYnJpZWZseSBleHBsYWluZWQgaGVy ZToKaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMxMTQyI3NlY3Rpb24t Ny4xLjEKClNpZ25lZC1vZmYtYnk6IEdhYnJpZWwgR29sbGVyIDxnLmdvbGxlckBwcm94bW94LmNv bT4KLS0tCiBwcm94bW94LW5ldHdvcmstdHlwZXMvc3JjL2xpYi5ycyB8ICAgMSArCiBwcm94bW94 LW5ldHdvcmstdHlwZXMvc3JjL25ldC5ycyB8IDM4MiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM4MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgcHJveG1veC1uZXR3b3JrLXR5cGVzL3NyYy9uZXQucnMKCmRpZmYgLS1naXQgYS9wcm94 bW94LW5ldHdvcmstdHlwZXMvc3JjL2xpYi5ycyBiL3Byb3htb3gtbmV0d29yay10eXBlcy9zcmMv bGliLnJzCmluZGV4IGFmY2VhYjAxODMxMi4uNzk3MDg0ZmVjNDIzIDEwMDY0NAotLS0gYS9wcm94 bW94LW5ldHdvcmstdHlwZXMvc3JjL2xpYi5ycworKysgYi9wcm94bW94LW5ldHdvcmstdHlwZXMv c3JjL2xpYi5ycwpAQCAtMSwyICsxLDMgQEAKIHB1YiBtb2QgaG9zdG5hbWU7CitwdWIgbW9kIG5l dDsKIHB1YiBtb2Qgb3BlbmZhYnJpYzsKZGlmZiAtLWdpdCBhL3Byb3htb3gtbmV0d29yay10eXBl cy9zcmMvbmV0LnJzIGIvcHJveG1veC1uZXR3b3JrLXR5cGVzL3NyYy9uZXQucnMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45N2UwMTkzODNiY2MKLS0tIC9kZXYvbnVs bAorKysgYi9wcm94bW94LW5ldHdvcmstdHlwZXMvc3JjL25ldC5ycwpAQCAtMCwwICsxLDM4MiBA QAordXNlIHN0ZDo6eworICAgIGZtdDo6RGlzcGxheSwKKyAgICBuZXQ6OntJcEFkZHIsIElwdjRB ZGRyLCBJcHY2QWRkcn0sCisgICAgc3RyOjpGcm9tU3RyLAorfTsKKwordXNlIHNlcmRlOjpTZXJp YWxpemU7Cit1c2Ugc2VyZGVfd2l0aDo6e0Rlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplRGlz cGxheX07Cit1c2UgdGhpc2Vycm9yOjpFcnJvcjsKKworI1tkZXJpdmUoRXJyb3IsIERlYnVnKV0K K3B1YiBlbnVtIE5ldEVycm9yIHsKKyAgICAjW2Vycm9yKCJTb21lIG9jdGV0cyBhcmUgbWlzc2lu ZyIpXQorICAgIFdyb25nTGVuZ3RoLAorICAgICNbZXJyb3IoIlRoZSBORVQgc2VsZWN0b3IgbXVz dCBiZSB0d28gY2hhcmFjdGVycyB3aWRlIGFuZCBiZSAwMCIpXQorICAgIEludmFsaWROZXRTZWxl Y3RvciwKKyAgICAjW2Vycm9yKCJJbnZhbGlkIEFGSSAod3Jvbmcgc2l6ZSBvciBwb3NpdGlvbiki KV0KKyAgICBJbnZhbGlkQUZJLAorICAgICNbZXJyb3IoIkludmFsaWQgQXJlYSAod3Jvbmcgc2l6 ZSBvciBwb3NpdGlvbikiKV0KKyAgICBJbnZhbGlkQXJlYSwKKyAgICAjW2Vycm9yKCJJbnZhbGlk IFN5c3RlbUlkICh3cm9uZyBzaXplIG9yIHBvc2l0aW9uKSIpXQorICAgIEludmFsaWRTeXN0ZW1J ZCwKK30KKworLy8vIEFkZHJlc3MgRmFtaWx5IGF1dGhvcml0eSBJZGVudGlmaWVyIC0gNDkgVGhl IEFGSSB2YWx1ZSA0OSBpcyB3aGF0IElTLUlTIChhbmQgb3BlbmZhYnJpYykgdXNlcworLy8vIGZv ciBwcml2YXRlIGFkZHJlc3NpbmcuCisjW2Rlcml2ZSgKKyAgICBEZWJ1ZywgRGVzZXJpYWxpemVG cm9tU3RyLCBTZXJpYWxpemVEaXNwbGF5LCBDbG9uZSwgSGFzaCwgUGFydGlhbEVxLCBFcSwgUGFy dGlhbE9yZCwgT3JkLAorKV0KK3N0cnVjdCBOZXRBRkkoU3RyaW5nKTsKKworaW1wbCBEZWZhdWx0 IGZvciBOZXRBRkkgeworICAgIGZuIGRlZmF1bHQoKSAtPiBTZWxmIHsKKyAgICAgICAgU2VsZigi NDkiLnRvX293bmVkKCkpCisgICAgfQorfQorCitpbXBsIERpc3BsYXkgZm9yIE5ldEFGSSB7Cisg ICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6 OmZtdDo6UmVzdWx0IHsKKyAgICAgICAgd3JpdGUhKGYsICJ7fSIsIHNlbGYuMCkKKyAgICB9Cit9 CisKK2ltcGwgRnJvbVN0ciBmb3IgTmV0QUZJIHsKKyAgICB0eXBlIEVyciA9IE5ldEVycm9yOwor CisgICAgZm4gZnJvbV9zdHIoczogJnN0cikgLT4gUmVzdWx0PFNlbGYsIFNlbGY6OkVycj4gewor ICAgICAgICBpZiBzLmxlbigpICE9IDIgeworICAgICAgICAgICAgRXJyKE5ldEVycm9yOjpJbnZh bGlkQUZJKQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgT2soU2VsZihzLnRvX293bmVk KCkpKQorICAgICAgICB9CisgICAgfQorfQorCisvLy8gQXJlYSBpZGVudGlmaWVyOiAwMDAxIElT LUlTIGFyZWEgbnVtYmVyIChudW1lcmljYWwgYXJlYSAxKQorLy8vIFRoZSBzZWNvbmQgcGFydCAo c3lzdGVtKSBvZiB0aGUgYG5ldGAgaWRlbnRpZmllci4gRXZlcnkgbm9kZSBoYXMgdG8gaGF2ZSBh IGRpZmZlcmVudCBzeXN0ZW0KKy8vLyBudW1iZXIuCisjW2Rlcml2ZShEZWJ1ZywgRGVzZXJpYWxp emVGcm9tU3RyLCBTZXJpYWxpemUsIENsb25lLCBIYXNoLCBQYXJ0aWFsRXEsIEVxLCBQYXJ0aWFs T3JkLCBPcmQpXQorc3RydWN0IE5ldEFyZWEoU3RyaW5nKTsKKworaW1wbCBEZWZhdWx0IGZvciBO ZXRBcmVhIHsKKyAgICBmbiBkZWZhdWx0KCkgLT4gU2VsZiB7CisgICAgICAgIFNlbGYoIjAwMDEi LnRvX293bmVkKCkpCisgICAgfQorfQorCitpbXBsIERpc3BsYXkgZm9yIE5ldEFyZWEgeworICAg IGZuIGZtdCgmc2VsZiwgZjogJm11dCBzdGQ6OmZtdDo6Rm9ybWF0dGVyPCdfPikgLT4gc3RkOjpm bXQ6OlJlc3VsdCB7CisgICAgICAgIHdyaXRlIShmLCAie30iLCBzZWxmLjApCisgICAgfQorfQor CitpbXBsIEZyb21TdHIgZm9yIE5ldEFyZWEgeworICAgIHR5cGUgRXJyID0gTmV0RXJyb3I7CisK KyAgICBmbiBmcm9tX3N0cihzOiAmc3RyKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7Cisg ICAgICAgIGlmIHMubGVuKCkgIT0gNCB7CisgICAgICAgICAgICBFcnIoTmV0RXJyb3I6OkludmFs aWRBcmVhKQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgT2soU2VsZihzLnRvX293bmVk KCkpKQorICAgICAgICB9CisgICAgfQorfQorCisvLy8gU3lzdGVtIGlkZW50aWZpZXI6IDE5MjEu NjgwMC4xMDAyIC0gZm9yIHN5c3RlbSBpZGVudGlmaWVycyB3ZSByZWNvbW1lbmQgdG8gdXNlIElQ IGFkZHJlc3Mgb3IKKy8vLyBNQUMgYWRkcmVzcyBvZiB0aGUgcm91dGVyIGl0c2VsZi4gVGhlIHdh eSB0byBjb25zdHJ1Y3QgdGhpcyBpcyB0byBrZWVwIGFsbCBvZiB0aGUgemVyb2VzIG9mIHRoZQor Ly8vIHJvdXRlciBJUCBhZGRyZXNzLCBhbmQgdGhlbiBjaGFuZ2UgdGhlIHBlcmlvZHMgZnJvbSBi ZWluZyBldmVyeSB0aHJlZSBudW1iZXJzIHRvIGV2ZXJ5IGZvdXIKKy8vLyBudW1iZXJzLiBUaGUg YWRkcmVzcyB0aGF0IGlzIGxpc3RlZCBoZXJlIGlzIDE5Mi4xNjguMS4yLCB3aGljaCBpZiBleHBh bmRlZCB3aWxsIHR1cm4gaW50bworLy8vIDE5Mi4xNjguMDAxLjAwMi4gVGhlbiBhbGwgb25lIGhh cyB0byBkbyBpcyBtb3ZlIHRoZSBkb3RzIHRvIGhhdmUgZm91ciBudW1iZXJzIGluc3RlYWQgb2Yg dGhyZWUuCisvLy8gVGhpcyBnaXZlcyB1cyAxOTIxLjY4MDAuMTAwMi4KKyNbZGVyaXZlKERlYnVn LCBEZXNlcmlhbGl6ZUZyb21TdHIsIFNlcmlhbGl6ZSwgQ2xvbmUsIEhhc2gsIFBhcnRpYWxFcSwg RXEsIFBhcnRpYWxPcmQsIE9yZCldCitzdHJ1Y3QgTmV0U3lzdGVtSWQoU3RyaW5nKTsKKworaW1w bCBEaXNwbGF5IGZvciBOZXRTeXN0ZW1JZCB7CisgICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0 ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKKyAgICAgICAgd3Jp dGUhKGYsICJ7fSIsIHNlbGYuMCkKKyAgICB9Cit9CisKK2ltcGwgRnJvbVN0ciBmb3IgTmV0U3lz dGVtSWQgeworICAgIHR5cGUgRXJyID0gTmV0RXJyb3I7CisKKyAgICBmbiBmcm9tX3N0cihzOiAm c3RyKSAtPiBSZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7CisgICAgICAgIGlmIHMuc3BsaXQoIi4i KS5jb3VudCgpICE9IDMKKyAgICAgICAgICAgIHx8IHMuc3BsaXQoIi4iKS5hbnkofHNlZ21lbnR8 IHsKKyAgICAgICAgICAgICAgICBzZWdtZW50LmxlbigpICE9IDQgfHwgIXNlZ21lbnQuY2hhcnMo KS5hbGwofGN8IGMuaXNfYXNjaWlfaGV4ZGlnaXQoKSkKKyAgICAgICAgICAgIH0pCisgICAgICAg IHsKKyAgICAgICAgICAgIEVycihOZXRFcnJvcjo6SW52YWxpZFN5c3RlbUlkKQorICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgT2soU2VsZihzLnRvX293bmVkKCkpKQorICAgICAgICB9Cisg ICAgfQorfQorCisvLy8gQ29udmVydCBJUC1BZGRyZXNzIHRvIGEgTkVUIGFkZHJlc3Mgd2l0aCB0 aGUgZGVmYXVsdCBhZmksIGFyZWEgYW5kIHNlbGVjdG9yIHZhbHVlcy4gTm90ZSB0aGF0IGEKKy8v LyB2YWxpZCBJcHY0QWRkciBpcyBhbHdheXMgYSB2YWxpZCBTeXN0ZW1JZCBhcyB3ZWxsLgoraW1w bCBGcm9tPElwdjRBZGRyPiBmb3IgTmV0U3lzdGVtSWQgeworICAgIGZuIGZyb20odmFsdWU6IElw djRBZGRyKSAtPiBTZWxmIHsKKyAgICAgICAgbGV0IG9jdGV0cyA9IHZhbHVlLm9jdGV0cygpOwor CisgICAgICAgIGxldCBzeXN0ZW1faWRfc3RyID0gZm9ybWF0ISgKKyAgICAgICAgICAgICJ7OjAz fXs6MDF9Lns6MDJ9ezowMn0uezowMX17OjAzfSIsCisgICAgICAgICAgICBvY3RldHNbMF0sCisg ICAgICAgICAgICBvY3RldHNbMV0gLyAxMDAsCisgICAgICAgICAgICBvY3RldHNbMV0gJSAxMDAs CisgICAgICAgICAgICBvY3RldHNbMl0gLyAxMCwKKyAgICAgICAgICAgIG9jdGV0c1syXSAlIDEw LAorICAgICAgICAgICAgb2N0ZXRzWzNdCisgICAgICAgICk7CisKKyAgICAgICAgU2VsZihzeXN0 ZW1faWRfc3RyKQorICAgIH0KK30KKworLy8vIENvbnZlcnQgSVB2Ni1BZGRyZXNzIHRvIGEgTkVU IGFkZHJlc3Mgd2l0aCB0aGUgZGVmYXVsdCBhZmksIGFyZWEgYW5kIHNlbGVjdG9yIHZhbHVlcy4g Tm90ZSB0aGF0IGEKKy8vLyB2YWxpZCBJcHY2QWRkciBpcyBhbHdheXMgYSB2YWxpZCBTeXN0ZW1J ZCBhcyB3ZWxsLgoraW1wbCBGcm9tPElwdjZBZGRyPiBmb3IgTmV0U3lzdGVtSWQgeworICAgIGZu IGZyb20odmFsdWU6IElwdjZBZGRyKSAtPiBTZWxmIHsKKyAgICAgICAgbGV0IHNlZ21lbnRzID0g dmFsdWUuc2VnbWVudHMoKTsKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVXNlIHRoZSBsYXN0IDMg c2VnbWVudHMgKG91dCBvZiA4KSBvZiB0aGUgSVB2NiBhZGRyZXNzCisgICAgICAgIGxldCBzeXN0 ZW1faWRfc3RyID0gZm9ybWF0ISgKKyAgICAgICAgICAgICJ7OjA0eH0uezowNHh9Lns6MDR4fSIs CisgICAgICAgICAgICBzZWdtZW50c1s1XSwgc2VnbWVudHNbNl0sIHNlZ21lbnRzWzddCisgICAg ICAgICk7CisKKyAgICAgICAgU2VsZihzeXN0ZW1faWRfc3RyKQorICAgIH0KK30KKworLy8vIE5F VCBzZWxlY3RvcjogMDAgTXVzdCBhbHdheXMgYmUgMDAuIFRoaXMgc2V0dGluZyBpbmRpY2F0ZXMg 4oCcdGhpcyBzeXN0ZW3igJ0gb3Ig4oCcbG9jYWwgc3lzdGVtLuKAnQorI1tkZXJpdmUoRGVidWcs IERlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplLCBDbG9uZSwgSGFzaCwgUGFydGlhbEVxLCBF cSwgUGFydGlhbE9yZCwgT3JkKV0KK3N0cnVjdCBOZXRTZWxlY3RvcihTdHJpbmcpOworCitpbXBs IERlZmF1bHQgZm9yIE5ldFNlbGVjdG9yIHsKKyAgICBmbiBkZWZhdWx0KCkgLT4gU2VsZiB7Cisg ICAgICAgIFNlbGYoIjAwIi50b19vd25lZCgpKQorICAgIH0KK30KKworaW1wbCBEaXNwbGF5IGZv ciBOZXRTZWxlY3RvciB7CisgICAgZm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3Jt YXR0ZXI8J18+KSAtPiBzdGQ6OmZtdDo6UmVzdWx0IHsKKyAgICAgICAgd3JpdGUhKGYsICJ7fSIs IHNlbGYuMCkKKyAgICB9Cit9CisKK2ltcGwgRnJvbVN0ciBmb3IgTmV0U2VsZWN0b3IgeworICAg IHR5cGUgRXJyID0gTmV0RXJyb3I7CisKKyAgICBmbiBmcm9tX3N0cihzOiAmc3RyKSAtPiBSZXN1 bHQ8U2VsZiwgU2VsZjo6RXJyPiB7CisgICAgICAgIGlmIHMubGVuKCkgIT0gMiB7CisgICAgICAg ICAgICBFcnIoTmV0RXJyb3I6OkludmFsaWROZXRTZWxlY3RvcikKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIE9rKFNlbGYocy50b19vd25lZCgpKSkKKyAgICAgICAgfQorICAgIH0KK30K KworLy8vIFRoZSBPcGVuRmFicmljIE5ldC4KKy8vLworLy8vIEV2ZXJ5IE9wZW5GYWJyaWMgbm9k ZSBhbmQgZmFicmljIGlzIGlkZW50aWZpZWQgdGhyb3VnaCB0aGUgTkVULiBJdCBoYXMgYSBuZXR3 b3JrIGFuZCBhIGhvc3QKKy8vLyBwYXJ0LgorLy8vIFRoZSBmaXJzdCBwYXJ0IGlzIHRoZSBuZXR3 b3JrIHBhcnQgKGFsc28gY2FsbGVkIGFyZWEpLiBUaGUgZW50aXJlIE9wZW5GYWJyaWMgZmFicmlj IGhhcyB0byBoYXZlCisvLy8gdGhlIHNhbWUgbmV0d29yayBwYXJ0IChhcmVhKS4gVGhlIGZpcnN0 IG51bWJlciBpcyB0aGUgW2BOZXRBRklgXSBhbmQgdGhlIHNlY29uZCBpcyB0aGUgW2BOZXRBcmVh YF0uCisvLy8gZS5nLjogIjQ5LjAwMDEiCisvLy8gVGhlIHNlY29uZCBwYXJ0IGlzIHRoZSBob3N0 IHBhcnQsIHdoaWNoIGhhcyB0byBkaWZmZXIgb24gZXZlcnkgbm9kZSBpbiB0aGUgZmFicmljLiBJ dCBjb250YWlucworLy8vIHRoZSBbYE5ldFN5c3RlbUlkYF0gYW5kIHRoZSBbYE5ldFNlbGVjdG9y YF0uCisvLy8gZS5nLjogIjE5MjEuNjgwMC4xMDAyLjAwIgorI1tkZXJpdmUoCisgICAgRGVidWcs IERlc2VyaWFsaXplRnJvbVN0ciwgU2VyaWFsaXplRGlzcGxheSwgQ2xvbmUsIEhhc2gsIFBhcnRp YWxFcSwgRXEsIFBhcnRpYWxPcmQsIE9yZCwKKyldCitwdWIgc3RydWN0IE5ldCB7CisgICAgYWZp OiBOZXRBRkksCisgICAgYXJlYTogTmV0QXJlYSwKKyAgICBzeXN0ZW06IE5ldFN5c3RlbUlkLAor ICAgIHNlbGVjdG9yOiBOZXRTZWxlY3RvciwKK30KKworaW1wbCBGcm9tU3RyIGZvciBOZXQgewor ICAgIHR5cGUgRXJyID0gTmV0RXJyb3I7CisKKyAgICBmbiBmcm9tX3N0cihzOiAmc3RyKSAtPiBS ZXN1bHQ8U2VsZiwgU2VsZjo6RXJyPiB7CisgICAgICAgIGlmIHMuc3BsaXQoIi4iKS5jb3VudCgp ICE9IDYgeworICAgICAgICAgICAgcmV0dXJuIEVycihOZXRFcnJvcjo6V3JvbmdMZW5ndGgpOwor ICAgICAgICB9CisgICAgICAgIGxldCBtdXQgaXRlciA9IHMuc3BsaXQoIi4iKTsKKyAgICAgICAg bGV0IGFmaSA9IGl0ZXIubmV4dCgpLm9rX29yKE5ldEVycm9yOjpXcm9uZ0xlbmd0aCk/OworICAg ICAgICBsZXQgYXJlYSA9IGl0ZXIubmV4dCgpLm9rX29yKE5ldEVycm9yOjpXcm9uZ0xlbmd0aCk/ OworICAgICAgICBsZXQgc3lzdGVtID0gZm9ybWF0ISgKKyAgICAgICAgICAgICJ7fS57fS57fSIs CisgICAgICAgICAgICBpdGVyLm5leHQoKS5va19vcihOZXRFcnJvcjo6V3JvbmdMZW5ndGgpPywK KyAgICAgICAgICAgIGl0ZXIubmV4dCgpLm9rX29yKE5ldEVycm9yOjpXcm9uZ0xlbmd0aCk/LAor ICAgICAgICAgICAgaXRlci5uZXh0KCkub2tfb3IoTmV0RXJyb3I6Oldyb25nTGVuZ3RoKT8KKyAg ICAgICAgKTsKKyAgICAgICAgbGV0IHNlbGVjdG9yID0gaXRlci5uZXh0KCkub2tfb3IoTmV0RXJy b3I6Oldyb25nTGVuZ3RoKT87CisgICAgICAgIE9rKFNlbGYgeworICAgICAgICAgICAgYWZpOiBh ZmkucGFyc2UoKT8sCisgICAgICAgICAgICBhcmVhOiBhcmVhLnBhcnNlKCk/LAorICAgICAgICAg ICAgc3lzdGVtOiBzeXN0ZW0ucGFyc2UoKT8sCisgICAgICAgICAgICBzZWxlY3Rvcjogc2VsZWN0 b3IucGFyc2UoKT8sCisgICAgICAgIH0pCisgICAgfQorfQorCisvLy8gRGVmYXVsdCBORVQgYWRk cmVzcyBmb3IgYSBnaXZlbiBJcHY0QWRkci4gVGhpcyBhZGRzIHRoZSBkZWZhdWx0IGFmaSwgYXJl YSBhbmQgc2VsZWN0b3IgdG8gdGhlCisvLy8gYWRkcmVzcy4KK2ltcGwgRnJvbTxJcHY0QWRkcj4g Zm9yIE5ldCB7CisgICAgZm4gZnJvbSh2YWx1ZTogSXB2NEFkZHIpIC0+IFNlbGYgeworICAgICAg ICBTZWxmIHsKKyAgICAgICAgICAgIGFmaTogTmV0QUZJOjpkZWZhdWx0KCksCisgICAgICAgICAg ICBhcmVhOiBOZXRBcmVhOjpkZWZhdWx0KCksCisgICAgICAgICAgICBzeXN0ZW06IHZhbHVlLmlu dG8oKSwKKyAgICAgICAgICAgIHNlbGVjdG9yOiBOZXRTZWxlY3Rvcjo6ZGVmYXVsdCgpLAorICAg ICAgICB9CisgICAgfQorfQorCisvLy8gRGVmYXVsdCBORVQgYWRkcmVzcyBmb3IgYSBnaXZlbiBJ cHY2QWRkci4gVGhpcyBhZGRzIHRoZSBkZWZhdWx0IGFmaSwgYXJlYSBhbmQgc2VsZWN0b3IgdG8g dGhlCisvLy8gYWRkcmVzcy4KK2ltcGwgRnJvbTxJcHY2QWRkcj4gZm9yIE5ldCB7CisgICAgZm4g ZnJvbSh2YWx1ZTogSXB2NkFkZHIpIC0+IFNlbGYgeworICAgICAgICBTZWxmIHsKKyAgICAgICAg ICAgIGFmaTogTmV0QUZJOjpkZWZhdWx0KCksCisgICAgICAgICAgICBhcmVhOiBOZXRBcmVhOjpk ZWZhdWx0KCksCisgICAgICAgICAgICBzeXN0ZW06IHZhbHVlLmludG8oKSwKKyAgICAgICAgICAg IHNlbGVjdG9yOiBOZXRTZWxlY3Rvcjo6ZGVmYXVsdCgpLAorICAgICAgICB9CisgICAgfQorfQor CisvLy8gRGVmYXVsdCBORVQgYWRkcmVzcyBmb3IgYSBnaXZlbiBJcEFkZHIgKGNhbiBiZSBlaXRo ZXIgSXB2NCBvciBJcHY2KS4gVGhpcyBhZGRzIHRoZSBkZWZhdWx0IGFmaSwKKy8vLyBhcmVhIGFu ZCBzZWxlY3RvciB0byB0aGUgYWRkcmVzcy4KK2ltcGwgRnJvbTxJcEFkZHI+IGZvciBOZXQgewor ICAgIGZuIGZyb20odmFsdWU6IElwQWRkcikgLT4gU2VsZiB7CisgICAgICAgIFNlbGYgeworICAg ICAgICAgICAgYWZpOiBOZXRBRkk6OmRlZmF1bHQoKSwKKyAgICAgICAgICAgIGFyZWE6IE5ldEFy ZWE6OmRlZmF1bHQoKSwKKyAgICAgICAgICAgIHN5c3RlbTogbWF0Y2ggdmFsdWUgeworICAgICAg ICAgICAgICAgIElwQWRkcjo6VjQoaXB2NF9hZGRyKSA9PiBpcHY0X2FkZHIuaW50bygpLAorICAg ICAgICAgICAgICAgIElwQWRkcjo6VjYoaXB2Nl9hZGRyKSA9PiBpcHY2X2FkZHIuaW50bygpLAor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHNlbGVjdG9yOiBOZXRTZWxlY3Rvcjo6ZGVmYXVs dCgpLAorICAgICAgICB9CisgICAgfQorfQorCitpbXBsIERpc3BsYXkgZm9yIE5ldCB7CisgICAg Zm4gZm10KCZzZWxmLCBmOiAmbXV0IHN0ZDo6Zm10OjpGb3JtYXR0ZXI8J18+KSAtPiBzdGQ6OmZt dDo6UmVzdWx0IHsKKyAgICAgICAgd3JpdGUhKAorICAgICAgICAgICAgZiwKKyAgICAgICAgICAg ICJ7fS57fS57fS57fSIsCisgICAgICAgICAgICBzZWxmLmFmaSwgc2VsZi5hcmVhLCBzZWxmLnN5 c3RlbSwgc2VsZi5zZWxlY3RvcgorICAgICAgICApCisgICAgfQorfQorCisjW2NmZyh0ZXN0KV0K K21vZCB0ZXN0cyB7CisgICAgdXNlIHN1cGVyOjoqOworCisgICAgI1t0ZXN0XQorICAgIGZuIHRl c3RfbmV0X2Zyb21fc3RyKCkgeworICAgICAgICBsZXQgaW5wdXQgPSAiNDkuMDAwMS4xOTIxLjY4 MDAuMTAwMi4wMCI7CisgICAgICAgIGxldCBuZXQgPSBpbnB1dC5wYXJzZTo6PE5ldD4oKS5leHBl Y3QoInRoaXMgbmV0IHNob3VsZCBwYXJzZSIpOworICAgICAgICBhc3NlcnRfZXEhKG5ldC5hZmks IE5ldEFGSSgiNDkiLnRvX293bmVkKCkpKTsKKyAgICAgICAgYXNzZXJ0X2VxIShuZXQuYXJlYSwg TmV0QXJlYSgiMDAwMSIudG9fb3duZWQoKSkpOworICAgICAgICBhc3NlcnRfZXEhKG5ldC5zeXN0 ZW0sIE5ldFN5c3RlbUlkKCIxOTIxLjY4MDAuMTAwMiIudG9fb3duZWQoKSkpOworICAgICAgICBh c3NlcnRfZXEhKG5ldC5zZWxlY3RvciwgTmV0U2VsZWN0b3IoIjAwIi50b19vd25lZCgpKSk7CisK KyAgICAgICAgbGV0IGlucHV0ID0gIjQ1LjAyMDAuMDEwMC4xMDAxLmJhMWYuMDEiOworICAgICAg ICBsZXQgbmV0ID0gaW5wdXQucGFyc2U6OjxOZXQ+KCkuZXhwZWN0KCJ0aGlzIG5ldCBzaG91bGQg cGFyc2UiKTsKKyAgICAgICAgYXNzZXJ0X2VxIShuZXQuYWZpLCBOZXRBRkkoIjQ1Ii50b19vd25l ZCgpKSk7CisgICAgICAgIGFzc2VydF9lcSEobmV0LmFyZWEsIE5ldEFyZWEoIjAyMDAiLnRvX293 bmVkKCkpKTsKKyAgICAgICAgYXNzZXJ0X2VxIShuZXQuc3lzdGVtLCBOZXRTeXN0ZW1JZCgiMDEw MC4xMDAxLmJhMWYiLnRvX293bmVkKCkpKTsKKyAgICAgICAgYXNzZXJ0X2VxIShuZXQuc2VsZWN0 b3IsIE5ldFNlbGVjdG9yKCIwMSIudG9fb3duZWQoKSkpOworICAgIH0KKworICAgICNbdGVzdF0K KyAgICBmbiB0ZXN0X25ldF9mcm9tX3N0cl9mYWlsZWQoKSB7CisgICAgICAgIGxldCBpbnB1dCA9 ICI0OS4wMDAxLjE5MjEuNjgwMC4xMDAyLjAwMCI7CisgICAgICAgIGFzc2VydCEobWF0Y2hlcyEo CisgICAgICAgICAgICBpbnB1dC5wYXJzZTo6PE5ldD4oKSwKKyAgICAgICAgICAgIEVycihOZXRF cnJvcjo6SW52YWxpZE5ldFNlbGVjdG9yKQorICAgICAgICApKTsKKworICAgICAgICBsZXQgaW5w dXQgPSAiNDkuMDAwMS4xOTIxLjY4MDAuMTAwMi4wMC4wMCI7CisgICAgICAgIGFzc2VydCEobWF0 Y2hlcyEoaW5wdXQucGFyc2U6OjxOZXQ+KCksIEVycihOZXRFcnJvcjo6V3JvbmdMZW5ndGgpKSk7 CisKKyAgICAgICAgbGV0IGlucHV0ID0gIjQ5LjAwMDEuMTkyMS42ODAwLjEwMDAyLjAwIjsKKyAg ICAgICAgYXNzZXJ0IShtYXRjaGVzISgKKyAgICAgICAgICAgIGlucHV0LnBhcnNlOjo8TmV0Pigp LAorICAgICAgICAgICAgRXJyKE5ldEVycm9yOjpJbnZhbGlkU3lzdGVtSWQpCisgICAgICAgICkp OworCisgICAgICAgIGxldCBpbnB1dCA9ICI0OS4wMDAxLjE5MjEuNjgwMC4xejAyLjAwIjsKKyAg ICAgICAgYXNzZXJ0IShtYXRjaGVzISgKKyAgICAgICAgICAgIGlucHV0LnBhcnNlOjo8TmV0Pigp LAorICAgICAgICAgICAgRXJyKE5ldEVycm9yOjpJbnZhbGlkU3lzdGVtSWQpCisgICAgICAgICkp OworCisgICAgICAgIGxldCBpbnB1dCA9ICI0MDkuMDAwMS4xOTIxLjY4MDAuMTAwMi4wMCI7Cisg ICAgICAgIGFzc2VydCEobWF0Y2hlcyEoaW5wdXQucGFyc2U6OjxOZXQ+KCksIEVycihOZXRFcnJv cjo6SW52YWxpZEFGSSkpKTsKKworICAgICAgICBsZXQgaW5wdXQgPSAiNDkuMDAwMDEuMTkyMS42 ODAwLjEwMDIuMDAiOworICAgICAgICBhc3NlcnQhKG1hdGNoZXMhKGlucHV0LnBhcnNlOjo8TmV0 PigpLCBFcnIoTmV0RXJyb3I6OkludmFsaWRBcmVhKSkpOworICAgIH0KKworICAgICNbdGVzdF0K KyAgICBmbiB0ZXN0X25ldF9kaXNwbGF5KCkgeworICAgICAgICBsZXQgbmV0ID0gTmV0IHsKKyAg ICAgICAgICAgIGFmaTogTmV0QUZJKCI0OSIudG9fb3duZWQoKSksCisgICAgICAgICAgICBhcmVh OiBOZXRBcmVhKCIwMDAxIi50b19vd25lZCgpKSwKKyAgICAgICAgICAgIHN5c3RlbTogTmV0U3lz dGVtSWQoIjE5MjEuNjgwMC4xMDAyIi50b19vd25lZCgpKSwKKyAgICAgICAgICAgIHNlbGVjdG9y OiBOZXRTZWxlY3RvcigiMDAiLnRvX293bmVkKCkpLAorICAgICAgICB9OworICAgICAgICBhc3Nl cnRfZXEhKGZvcm1hdCEoIntuZXR9IiksICI0OS4wMDAxLjE5MjEuNjgwMC4xMDAyLjAwIik7Cisg ICAgfQorCisgICAgI1t0ZXN0XQorICAgIGZuIHRlc3RfbmV0X2Zyb21faXB2NCgpIHsKKyAgICAg ICAgbGV0IGlwOiBJcHY0QWRkciA9ICIxOTIuMTY4LjEuMTAwIi5wYXJzZSgpLnVud3JhcCgpOwor ICAgICAgICBsZXQgbmV0OiBOZXQgPSBpcC5pbnRvKCk7CisgICAgICAgIGFzc2VydF9lcSEoZm9y bWF0ISgie25ldH0iKSwgIjQ5LjAwMDEuMTkyMS42ODAwLjExMDAuMDAiKTsKKworICAgICAgICBs ZXQgaXAxOiBJcHY0QWRkciA9ICIxMC4xMC4yLjI0NSIucGFyc2UoKS51bndyYXAoKTsKKyAgICAg ICAgbGV0IG5ldDE6IE5ldCA9IGlwMS5pbnRvKCk7CisgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0 ISgie25ldDF9IiksICI0OS4wMDAxLjAxMDAuMTAwMC4yMjQ1LjAwIik7CisKKyAgICAgICAgbGV0 IGlwMjogSXB2NEFkZHIgPSAiMS4xLjEuMSIucGFyc2UoKS51bndyYXAoKTsKKyAgICAgICAgbGV0 IG5ldDI6IE5ldCA9IGlwMi5pbnRvKCk7CisgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0ISgie25l dDJ9IiksICI0OS4wMDAxLjAwMTAuMDEwMC4xMDAxLjAwIik7CisgICAgfQorCisgICAgI1t0ZXN0 XQorICAgIGZuIHRlc3RfbmV0X2Zyb21faXB2NigpIHsKKyAgICAgICAgLy8gMjAwMTpkYjg6OjEg LT4gWzIwMDEsIDBkYjgsIDAsIDAsIDAsIDAsIDAsIDFdCisgICAgICAgIC8vIGxhc3QgMyBzZWdt ZW50czogWzAsIDAsIDFdCisgICAgICAgIGxldCBpcDogSXB2NkFkZHIgPSAiMjAwMTpkYjg6OjEi LnBhcnNlKCkudW53cmFwKCk7CisgICAgICAgIGxldCBuZXQ6IE5ldCA9IGlwLmludG8oKTsKKyAg ICAgICAgYXNzZXJ0X2VxIShmb3JtYXQhKCJ7bmV0fSIpLCAiNDkuMDAwMS4wMDAwLjAwMDAuMDAw MS4wMCIpOworCisgICAgICAgIC8vIGZlODA6OjEyMzQ6NTY3ODphYmNkIC0+IFtmZTgwLCAwLCAw LCAwLCAwLCAxMjM0LCA1Njc4LCBhYmNkXQorICAgICAgICAvLyBsYXN0IDMgc2VnbWVudHM6IFsx MjM0LCA1Njc4LCBhYmNkXQorICAgICAgICBsZXQgaXAxOiBJcHY2QWRkciA9ICJmZTgwOjoxMjM0 OjU2Nzg6YWJjZCIucGFyc2UoKS51bndyYXAoKTsKKyAgICAgICAgbGV0IG5ldDE6IE5ldCA9IGlw MS5pbnRvKCk7CisgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0ISgie25ldDF9IiksICI0OS4wMDAx LjEyMzQuNTY3OC5hYmNkLjAwIik7CisKKyAgICAgICAgLy8gMjAwMTowZGI4Ojg1YTM6OjhhMmU6 MzcwOjczMzQgLT4gWzIwMDEsIDBkYjgsIDg1YTMsIDAsIDAsIDhhMmUsIDAzNzAsIDczMzRdCisg ICAgICAgIC8vIGxhc3QgMyBzZWdtZW50czogWzhhMmUsIDAzNzAsIDczMzRdCisgICAgICAgIGxl dCBpcDI6IElwdjZBZGRyID0gIjIwMDE6MGRiODo4NWEzOjo4YTJlOjM3MDo3MzM0Ii5wYXJzZSgp LnVud3JhcCgpOworICAgICAgICBsZXQgbmV0MjogTmV0ID0gaXAyLmludG8oKTsKKyAgICAgICAg YXNzZXJ0X2VxIShmb3JtYXQhKCJ7bmV0Mn0iKSwgIjQ5LjAwMDEuOGEyZS4wMzcwLjczMzQuMDAi KTsKKworICAgICAgICAvLyA6OjEgLT4gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDFdCisgICAgICAg IC8vIGxhc3QgMyBzZWdtZW50czogWzAsIDAsIDFdCisgICAgICAgIGxldCBpcDM6IElwdjZBZGRy ID0gIjo6MSIucGFyc2UoKS51bndyYXAoKTsKKyAgICAgICAgbGV0IG5ldDM6IE5ldCA9IGlwMy5p bnRvKCk7CisgICAgICAgIGFzc2VydF9lcSEoZm9ybWF0ISgie25ldDN9IiksICI0OS4wMDAxLjAw MDAuMDAwMC4wMDAxLjAwIik7CisgICAgfQorfQotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QK cHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dp LWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=