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 ED55F1FF16F for <inbox@lore.proxmox.com>; Tue, 29 Apr 2025 16:10:22 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3BC8E9CFB; Tue, 29 Apr 2025 16:10:19 +0200 (CEST) From: =?UTF-8?q?Michael=20K=C3=B6ppl?= <m.koeppl@proxmox.com> To: pve-devel@lists.proxmox.com Date: Tue, 29 Apr 2025 16:09:36 +0200 Message-Id: <20250429140940.161711-3-m.koeppl@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250429140940.161711-1-m.koeppl@proxmox.com> References: <20250429140940.161711-1-m.koeppl@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.000 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 pve-installer v2 2/6] move RAID setup checks to RAID level enum implementations 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> SW5zdGVhZCBvZiBoYXZpbmcgcGFydHMgb2YgdGhlIFJBSUQgc2V0dXAgY2hlY2tzIHNjYXR0ZXJl ZCBpbiBtdWx0aXBsZQpwbGFjZXMsIG1vdmUgdGhlIGNvcmUgb2YgdGhlIGNoZWNrcyB0byBpbXBs ZW1lbnRhdGlvbnMgb2YgdGhlClpmc1JhaWRMZXZlbCBhbmQgQnRyZnNSYWlkTGV2ZWwgZW51bXMu CgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEvDtnBwbCA8bS5rb2VwcGxAcHJveG1veC5jb20+Ci0t LQogcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9kaXNrX2NoZWNrcy5ycyB8IDE1NiArKysr LS0tLS0tLS0tLS0tLS0tLQogcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9vcHRpb25zLnJz ICAgICB8ICA1OSArKysrKysrKwogcHJveG1veC10dWktaW5zdGFsbGVyL3NyYy92aWV3cy9ib290 ZGlzay5ycyB8ICAxMyArLQogMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAxMzIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9k aXNrX2NoZWNrcy5ycyBiL3Byb3htb3gtaW5zdGFsbGVyLWNvbW1vbi9zcmMvZGlza19jaGVja3Mu cnMKaW5kZXggZWNjNDNiZC4uZDUzNTgzNyAxMDA2NDQKLS0tIGEvcHJveG1veC1pbnN0YWxsZXIt Y29tbW9uL3NyYy9kaXNrX2NoZWNrcy5ycworKysgYi9wcm94bW94LWluc3RhbGxlci1jb21tb24v c3JjL2Rpc2tfY2hlY2tzLnJzCkBAIC0xLDYgKzEsNiBAQAogdXNlIHN0ZDo6Y29sbGVjdGlvbnM6 Okhhc2hTZXQ7CiAKLXVzZSBjcmF0ZTo6b3B0aW9uczo6e0J0cmZzUmFpZExldmVsLCBEaXNrLCBa ZnNSYWlkTGV2ZWx9OwordXNlIGNyYXRlOjpvcHRpb25zOjpEaXNrOwogdXNlIGNyYXRlOjpzZXR1 cDo6Qm9vdFR5cGU7CiAKIC8vLyBDaGVja3MgYSBsaXN0IG9mIGRpc2tzIGZvciBkdXBsaWNhdGUg ZW50cmllcywgdXNpbmcgdGhlaXIgaW5kZXggYXMga2V5LgpAQCAtNDksOTQgKzQ5LDEwIEBAIHB1 YiBmbiBjaGVja19kaXNrc180a25fbGVnYWN5X2Jvb3QoYm9vdF90eXBlOiBCb290VHlwZSwgZGlz a3M6ICZbRGlza10pIC0+IFJlc3VsCiAgICAgT2soKCkpCiB9CiAKLS8vLyBDaGVja3Mgd2hldGhl ciBhIHVzZXItc3VwcGxpZWQgWkZTIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFz IGRpc2sgc2l6ZXMgYW5kbWluaW11bQotLy8vIG51bWJlciBvZiBkaXNrcy4KLS8vLwotLy8vICMg QXJndW1lbnRzCi0vLy8KLS8vLyAqIGBsZXZlbGAgLSBUaGUgdGFyZ2V0ZWQgWkZTIFJBSUQgbGV2 ZWwgYnkgdGhlIHVzZXIuCi0vLy8gKiBgZGlza3NgIC0gTGlzdCBvZiBkaXNrcyBkZXNpZ25hdGVk IGFzIFJBSUQgdGFyZ2V0cy4KLXB1YiBmbiBjaGVja196ZnNfcmFpZF9jb25maWcobGV2ZWw6IFpm c1JhaWRMZXZlbCwgZGlza3M6ICZbRGlza10pIC0+IFJlc3VsdDwoKSwgU3RyaW5nPiB7Ci0gICAg Ly8gU2VlIGFsc28gUHJveG1veC9JbnN0YWxsLnBtOmdldF96ZnNfcmFpZF9zZXR1cCgpCi0KLSAg ICBsZXQgY2hlY2tfbWlycm9yX3NpemUgPSB8ZGlzazE6ICZEaXNrLCBkaXNrMjogJkRpc2t8IHsK LSAgICAgICAgaWYgKGRpc2sxLnNpemUgLSBkaXNrMi5zaXplKS5hYnMoKSA+IGRpc2sxLnNpemUg LyAxMC4gewotICAgICAgICAgICAgRXJyKGZvcm1hdCEoCi0gICAgICAgICAgICAgICAgIk1pcnJv cmVkIGRpc2tzIG11c3QgaGF2ZSBzYW1lIHNpemU6XG5cbiAgKiB7ZGlzazF9XG4gICoge2Rpc2sy fSIKLSAgICAgICAgICAgICkpCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBPaygoKSkK LSAgICAgICAgfQotICAgIH07Ci0KLSAgICBtYXRjaCBsZXZlbCB7Ci0gICAgICAgIFpmc1JhaWRM ZXZlbDo6UmFpZDAgPT4gY2hlY2tfcmFpZF9taW5fZGlza3MoZGlza3MsIDEpPywKLSAgICAgICAg WmZzUmFpZExldmVsOjpSYWlkMSA9PiB7Ci0gICAgICAgICAgICBjaGVja19yYWlkX21pbl9kaXNr cyhkaXNrcywgMik/OwotICAgICAgICAgICAgZm9yIGRpc2sgaW4gZGlza3MgewotICAgICAgICAg ICAgICAgIGNoZWNrX21pcnJvcl9zaXplKCZkaXNrc1swXSwgZGlzayk/OwotICAgICAgICAgICAg fQotICAgICAgICB9Ci0gICAgICAgIFpmc1JhaWRMZXZlbDo6UmFpZDEwID0+IHsKLSAgICAgICAg ICAgIGNoZWNrX3JhaWRfbWluX2Rpc2tzKGRpc2tzLCA0KT87Ci0KLSAgICAgICAgICAgIGlmIGRp c2tzLmxlbigpICUgMiAhPSAwIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRXJyKGZvcm1hdCEo Ci0gICAgICAgICAgICAgICAgICAgICJOZWVkcyBhbiBldmVuIG51bWJlciBvZiBkaXNrcywgY3Vy cmVudGx5IHNlbGVjdGVkOiB7fSIsCi0gICAgICAgICAgICAgICAgICAgIGRpc2tzLmxlbigpLAot ICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBQYWly cyBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgc2l6ZQotICAgICAgICAgICAgZm9yIGkgaW4gKDAuLmRp c2tzLmxlbigpKS5zdGVwX2J5KDIpIHsKLSAgICAgICAgICAgICAgICBjaGVja19taXJyb3Jfc2l6 ZSgmZGlza3NbaV0sICZkaXNrc1tpICsgMV0pPzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot ICAgICAgICAvLyBGb3IgUkFJRC1aOiBtaW5pbXVtIGRpc2tzIG51bWJlciBpcyBsZXZlbCArIDIK LSAgICAgICAgWmZzUmFpZExldmVsOjpSYWlkWiA9PiB7Ci0gICAgICAgICAgICBjaGVja19yYWlk X21pbl9kaXNrcyhkaXNrcywgMyk/OwotICAgICAgICAgICAgZm9yIGRpc2sgaW4gZGlza3Mgewot ICAgICAgICAgICAgICAgIGNoZWNrX21pcnJvcl9zaXplKCZkaXNrc1swXSwgZGlzayk/OwotICAg ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFpmc1JhaWRMZXZlbDo6UmFpZFoyID0+IHsK LSAgICAgICAgICAgIGNoZWNrX3JhaWRfbWluX2Rpc2tzKGRpc2tzLCA0KT87Ci0gICAgICAgICAg ICBmb3IgZGlzayBpbiBkaXNrcyB7Ci0gICAgICAgICAgICAgICAgY2hlY2tfbWlycm9yX3NpemUo JmRpc2tzWzBdLCBkaXNrKT87Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgWmZz UmFpZExldmVsOjpSYWlkWjMgPT4gewotICAgICAgICAgICAgY2hlY2tfcmFpZF9taW5fZGlza3Mo ZGlza3MsIDUpPzsKLSAgICAgICAgICAgIGZvciBkaXNrIGluIGRpc2tzIHsKLSAgICAgICAgICAg ICAgICBjaGVja19taXJyb3Jfc2l6ZSgmZGlza3NbMF0sIGRpc2spPzsKLSAgICAgICAgICAgIH0K LSAgICAgICAgfQotICAgIH0KLQotICAgIE9rKCgpKQotfQotCi0vLy8gQ2hlY2tzIHdoZXRoZXIg YSB1c2VyLXN1cHBsaWVkIEJ0cmZzIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFz IG1pbmltdW0KLS8vLyBudW1iZXIgb2YgZGlza3MuCi0vLy8KLS8vLyAjIEFyZ3VtZW50cwotLy8v Ci0vLy8gKiBgbGV2ZWxgIC0gVGhlIHRhcmdldGVkIEJ0cmZzIFJBSUQgbGV2ZWwgYnkgdGhlIHVz ZXIuCi0vLy8gKiBgZGlza3NgIC0gTGlzdCBvZiBkaXNrcyBkZXNpZ25hdGVkIGFzIFJBSUQgdGFy Z2V0cy4KLXB1YiBmbiBjaGVja19idHJmc19yYWlkX2NvbmZpZyhsZXZlbDogQnRyZnNSYWlkTGV2 ZWwsIGRpc2tzOiAmW0Rpc2tdKSAtPiBSZXN1bHQ8KCksIFN0cmluZz4gewotICAgIC8vIFNlZSBh bHNvIFByb3htb3gvSW5zdGFsbC5wbTpnZXRfYnRyZnNfcmFpZF9zZXR1cCgpCi0KLSAgICBtYXRj aCBsZXZlbCB7Ci0gICAgICAgIEJ0cmZzUmFpZExldmVsOjpSYWlkMCA9PiBjaGVja19yYWlkX21p bl9kaXNrcyhkaXNrcywgMSk/LAotICAgICAgICBCdHJmc1JhaWRMZXZlbDo6UmFpZDEgPT4gY2hl Y2tfcmFpZF9taW5fZGlza3MoZGlza3MsIDIpPywKLSAgICAgICAgQnRyZnNSYWlkTGV2ZWw6OlJh aWQxMCA9PiBjaGVja19yYWlkX21pbl9kaXNrcyhkaXNrcywgNCk/LAotICAgIH0KLQotICAgIE9r KCgpKQotfQotCiAjW2NmZyh0ZXN0KV0KIG1vZCB0ZXN0cyB7CisgICAgdXNlIGNyYXRlOjpvcHRp b25zOjp7QnRyZnNSYWlkTGV2ZWwsIFpmc1JhaWRMZXZlbH07CisKICAgICB1c2Ugc3VwZXI6Oio7 CiAKICAgICBmbiBkdW1teV9kaXNrKGluZGV4OiB1c2l6ZSkgLT4gRGlzayB7CkBAIC0xOTQsNTAg KzExMCwzOCBAQCBtb2QgdGVzdHMgewogICAgIGZuIGJ0cmZzX3JhaWQoKSB7CiAgICAgICAgIGxl dCBkaXNrcyA9IGR1bW15X2Rpc2tzKDEwKTsKIAotICAgICAgICBhc3NlcnQhKGNoZWNrX2J0cmZz X3JhaWRfY29uZmlnKEJ0cmZzUmFpZExldmVsOjpSYWlkMCwgJltdKS5pc19lcnIoKSk7Ci0gICAg ICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQw LCAmZGlza3NbLi4xXSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFp ZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQwLCAmZGlza3MpLmlzX29rKCkpOwotCi0gICAg ICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQx LCAmW10pLmlzX2VycigpKTsKLSAgICAgICAgYXNzZXJ0IShjaGVja19idHJmc19yYWlkX2NvbmZp ZyhCdHJmc1JhaWRMZXZlbDo6UmFpZDEsICZkaXNrc1suLjFdKS5pc19lcnIoKSk7Ci0gICAgICAg IGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxLCAm ZGlza3NbLi4yXSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9j b25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxLCAmZGlza3MpLmlzX29rKCkpOwotCi0gICAgICAg IGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxMCwg JltdKS5pc19lcnIoKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9jb25maWco QnRyZnNSYWlkTGV2ZWw6OlJhaWQxMCwgJmRpc2tzWy4uM10pLmlzX2VycigpKTsKLSAgICAgICAg YXNzZXJ0IShjaGVja19idHJmc19yYWlkX2NvbmZpZyhCdHJmc1JhaWRMZXZlbDo6UmFpZDEwLCAm ZGlza3NbLi40XSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfYnRyZnNfcmFpZF9j b25maWcoQnRyZnNSYWlkTGV2ZWw6OlJhaWQxMCwgJmRpc2tzKS5pc19vaygpKTsKKyAgICAgICAg bGV0IGJ0cmZzX3JhaWRfdmFyaWFudHMgPSBbCisgICAgICAgICAgICBCdHJmc1JhaWRMZXZlbDo6 UmFpZDAsCisgICAgICAgICAgICBCdHJmc1JhaWRMZXZlbDo6UmFpZDEsCisgICAgICAgICAgICBC dHJmc1JhaWRMZXZlbDo6UmFpZDEwLAorICAgICAgICBdOworCisgICAgICAgIGZvciB2IGluIGJ0 cmZzX3JhaWRfdmFyaWFudHMgeworICAgICAgICAgICAgYXNzZXJ0ISh2LmNoZWNrX2Rpc2tzKCZb XSkuaXNfZXJyKCkpOworICAgICAgICAgICAgYXNzZXJ0ISh2LmNoZWNrX2Rpc2tzKCZkaXNrc1su LnYuZ2V0X21pbl9kaXNrcygpIC0gMV0pLmlzX2VycigpKTsKKyAgICAgICAgICAgIGFzc2VydCEo di5jaGVja19kaXNrcygmZGlza3NbLi52LmdldF9taW5fZGlza3MoKV0pLmlzX29rKCkpOworICAg ICAgICAgICAgYXNzZXJ0ISh2LmNoZWNrX2Rpc2tzKCZkaXNrcykuaXNfb2soKSk7CisgICAgICAg IH0KICAgICB9CiAKICAgICAjW3Rlc3RdCiAgICAgZm4gemZzX3JhaWQoKSB7CiAgICAgICAgIGxl dCBkaXNrcyA9IGR1bW15X2Rpc2tzKDEwKTsKIAotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19y YWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWQwLCAmW10pLmlzX2VycigpKTsKLSAgICAgICAg YXNzZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkMCwgJmRpc2tz Wy4uMV0pLmlzX29rKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyha ZnNSYWlkTGV2ZWw6OlJhaWQwLCAmZGlza3MpLmlzX29rKCkpOwotCi0gICAgICAgIGFzc2VydCEo Y2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZDEsICZbXSkuaXNfZXJyKCkp OwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJh aWQxLCAmZGlza3NbLi4yXSkuaXNfb2soKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3Jh aWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZDEsICZkaXNrcykuaXNfb2soKSk7Ci0KLSAgICAg ICAgYXNzZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkMTAsICZb XSkuaXNfZXJyKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNS YWlkTGV2ZWw6OlJhaWQxMCwgJmR1bW15X2Rpc2tzKDQpKS5pc19vaygpKTsKLSAgICAgICAgYXNz ZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkMTAsICZkaXNrcyku aXNfb2soKSk7Ci0KLSAgICAgICAgYXNzZXJ0IShjaGVja196ZnNfcmFpZF9jb25maWcoWmZzUmFp ZExldmVsOjpSYWlkWiwgJltdKS5pc19lcnIoKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZz X3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZFosICZkaXNrc1suLjJdKS5pc19lcnIoKSk7 Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFp ZFosICZkaXNrc1suLjNdKS5pc19vaygpKTsKLSAgICAgICAgYXNzZXJ0IShjaGVja196ZnNfcmFp ZF9jb25maWcoWmZzUmFpZExldmVsOjpSYWlkWiwgJmRpc2tzKS5pc19vaygpKTsKLQotICAgICAg ICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMiwgJltd KS5pc19lcnIoKSk7Ci0gICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1Jh aWRMZXZlbDo6UmFpZFoyLCAmZGlza3NbLi4zXSkuaXNfZXJyKCkpOwotICAgICAgICBhc3NlcnQh KGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMiwgJmRpc2tzWy4uNF0p LmlzX29rKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlk TGV2ZWw6OlJhaWRaMiwgJmRpc2tzKS5pc19vaygpKTsKLQotICAgICAgICBhc3NlcnQhKGNoZWNr X3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMywgJltdKS5pc19lcnIoKSk7Ci0g ICAgICAgIGFzc2VydCEoY2hlY2tfemZzX3JhaWRfY29uZmlnKFpmc1JhaWRMZXZlbDo6UmFpZFoz LCAmZGlza3NbLi40XSkuaXNfZXJyKCkpOwotICAgICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlk X2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMywgJmRpc2tzWy4uNV0pLmlzX29rKCkpOwotICAg ICAgICBhc3NlcnQhKGNoZWNrX3pmc19yYWlkX2NvbmZpZyhaZnNSYWlkTGV2ZWw6OlJhaWRaMywg JmRpc2tzKS5pc19vaygpKTsKKyAgICAgICAgbGV0IHpmc19yYWlkX3ZhcmlhbnRzID0gWworICAg ICAgICAgICAgWmZzUmFpZExldmVsOjpSYWlkMCwKKyAgICAgICAgICAgIFpmc1JhaWRMZXZlbDo6 UmFpZDEsCisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQxMCwKKyAgICAgICAgICAgIFpm c1JhaWRMZXZlbDo6UmFpZFosCisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWRaMiwKKyAg ICAgICAgICAgIFpmc1JhaWRMZXZlbDo6UmFpZFozLAorICAgICAgICBdOworCisgICAgICAgIGZv ciB2IGluIHpmc19yYWlkX3ZhcmlhbnRzIHsKKyAgICAgICAgICAgIGFzc2VydCEodi5jaGVja19k aXNrcygmW10pLmlzX2VycigpKTsKKyAgICAgICAgICAgIGFzc2VydCEodi5jaGVja19kaXNrcygm ZGlza3NbLi52LmdldF9taW5fZGlza3MoKSAtIDFdKS5pc19lcnIoKSk7CisgICAgICAgICAgICBh c3NlcnQhKHYuY2hlY2tfZGlza3MoJmRpc2tzWy4udi5nZXRfbWluX2Rpc2tzKCldKS5pc19vaygp KTsKKyAgICAgICAgICAgIGFzc2VydCEodi5jaGVja19kaXNrcygmZGlza3MpLmlzX29rKCkpOwor ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvcHJveG1veC1pbnN0YWxsZXItY29tbW9u L3NyYy9vcHRpb25zLnJzIGIvcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3NyYy9vcHRpb25zLnJz CmluZGV4IDkyNzFiOGIuLjA1NTI5NTQgMTAwNjQ0Ci0tLSBhL3Byb3htb3gtaW5zdGFsbGVyLWNv bW1vbi9zcmMvb3B0aW9ucy5ycworKysgYi9wcm94bW94LWluc3RhbGxlci1jb21tb24vc3JjL29w dGlvbnMucnMKQEAgLTYsNiArNiw3IEBAIHVzZSBzdGQ6OnN0cjo6RnJvbVN0cjsKIHVzZSBzdGQ6 OnN5bmM6Ok9uY2VMb2NrOwogdXNlIHN0ZDo6e2NtcCwgZm10fTsKIAordXNlIGNyYXRlOjpkaXNr X2NoZWNrczo6Y2hlY2tfcmFpZF9taW5fZGlza3M7CiB1c2UgY3JhdGU6OnNldHVwOjp7TG9jYWxl SW5mbywgTmV0d29ya0luZm8sIFJ1bnRpbWVJbmZvLCBTZXR1cEluZm99OwogdXNlIGNyYXRlOjp1 dGlsczo6e0NpZHJBZGRyZXNzLCBGcWRufTsKIApAQCAtMjgsNiArMjksMTcgQEAgaW1wbCBCdHJm c1JhaWRMZXZlbCB7CiAgICAgICAgICAgICBCdHJmc1JhaWRMZXZlbDo6UmFpZDEwID0+IDQsCiAg ICAgICAgIH0KICAgICB9CisKKyAgICAvLy8gQ2hlY2tzIHdoZXRoZXIgYSB1c2VyLXN1cHBsaWVk IEJ0cmZzIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFzIG1pbmltdW0KKyAgICAv Ly8gbnVtYmVyIG9mIGRpc2tzLgorICAgIC8vLworICAgIC8vLyAjIEFyZ3VtZW50cworICAgIC8v LworICAgIC8vLyAqIGBkaXNrc2AgLSBMaXN0IG9mIGRpc2tzIGRlc2lnbmF0ZWQgYXMgUkFJRCB0 YXJnZXRzLgorICAgIHB1YiBmbiBjaGVja19kaXNrcygmc2VsZiwgZGlza3M6ICZbRGlza10pIC0+ IFJlc3VsdDwoKSwgU3RyaW5nPiB7CisgICAgICAgIGNoZWNrX3JhaWRfbWluX2Rpc2tzKGRpc2tz LCBzZWxmLmdldF9taW5fZGlza3MoKSk/OworICAgICAgICBPaygoKSkKKyAgICB9CiB9CiAKIHNl cmRlX3BsYWluOjpkZXJpdmVfZGlzcGxheV9mcm9tX3NlcmlhbGl6ZSEoQnRyZnNSYWlkTGV2ZWwp OwpAQCAtNjksNiArODEsNTMgQEAgaW1wbCBaZnNSYWlkTGV2ZWwgewogICAgICAgICAgICAgWmZz UmFpZExldmVsOjpSYWlkWjMgPT4gNSwKICAgICAgICAgfQogICAgIH0KKworICAgIGZuIGNoZWNr X21pcnJvcl9zaXplKCZzZWxmLCBkaXNrMTogJkRpc2ssIGRpc2syOiAmRGlzaykgLT4gUmVzdWx0 PCgpLCBTdHJpbmc+IHsKKyAgICAgICAgaWYgKGRpc2sxLnNpemUgLSBkaXNrMi5zaXplKS5hYnMo KSA+IGRpc2sxLnNpemUgLyAxMC4geworICAgICAgICAgICAgRXJyKGZvcm1hdCEoCisgICAgICAg ICAgICAgICAgIk1pcnJvcmVkIGRpc2tzIG11c3QgaGF2ZSBzYW1lIHNpemU6XG5cbiAgKiB7ZGlz azF9XG4gICoge2Rpc2syfSIKKyAgICAgICAgICAgICkpCisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICBPaygoKSkKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLyBDaGVja3Mgd2hldGhl ciBhIHVzZXItc3VwcGxpZWQgWkZTIFJBSUQgc2V0dXAgaXMgdmFsaWQgb3Igbm90LCBzdWNoIGFz IGRpc2sgc2l6ZXMgYW5kbWluaW11bQorICAgIC8vLyBudW1iZXIgb2YgZGlza3MuCisgICAgLy8v CisgICAgLy8vICMgQXJndW1lbnRzCisgICAgLy8vCisgICAgLy8vICogYGRpc2tzYCAtIExpc3Qg b2YgZGlza3MgZGVzaWduYXRlZCBhcyBSQUlEIHRhcmdldHMuCisgICAgcHViIGZuIGNoZWNrX2Rp c2tzKCZzZWxmLCBkaXNrczogJltEaXNrXSkgLT4gUmVzdWx0PCgpLCBTdHJpbmc+IHsKKyAgICAg ICAgY2hlY2tfcmFpZF9taW5fZGlza3MoZGlza3MsIHNlbGYuZ2V0X21pbl9kaXNrcygpKT87CisK KyAgICAgICAgbWF0Y2ggc2VsZiB7CisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQwID0+ IHt9CisgICAgICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQxMCA9PiB7CisgICAgICAgICAgICAg ICAgaWYgZGlza3MubGVuKCkgJSAyICE9IDAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4g RXJyKGZvcm1hdCEoCisgICAgICAgICAgICAgICAgICAgICAgICAiTmVlZHMgYW4gZXZlbiBudW1i ZXIgb2YgZGlza3MsIGN1cnJlbnRseSBzZWxlY3RlZDoge30iLAorICAgICAgICAgICAgICAgICAg ICAgICAgZGlza3MubGVuKCksCisgICAgICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFBhaXJzIG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSBz aXplCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gKDAuLmRpc2tzLmxlbigpKS5zdGVwX2J5KDIp IHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19taXJyb3Jfc2l6ZSgmZGlza3NbaV0s ICZkaXNrc1tpICsgMV0pPzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBaZnNSYWlkTGV2ZWw6OlJhaWQxCisgICAgICAgICAgICB8IFpmc1JhaWRMZXZlbDo6 UmFpZFoKKyAgICAgICAgICAgIHwgWmZzUmFpZExldmVsOjpSYWlkWjIKKyAgICAgICAgICAgIHwg WmZzUmFpZExldmVsOjpSYWlkWjMgPT4geworICAgICAgICAgICAgICAgIGZvciBkaXNrIGluIGRp c2tzIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19taXJyb3Jfc2l6ZSgmZGlza3Nb MF0sIGRpc2spPzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K KworICAgICAgICBPaygoKSkKKyAgICB9CiB9CiAKIHNlcmRlX3BsYWluOjpkZXJpdmVfZGlzcGxh eV9mcm9tX3NlcmlhbGl6ZSEoWmZzUmFpZExldmVsKTsKZGlmZiAtLWdpdCBhL3Byb3htb3gtdHVp LWluc3RhbGxlci9zcmMvdmlld3MvYm9vdGRpc2sucnMgYi9wcm94bW94LXR1aS1pbnN0YWxsZXIv c3JjL3ZpZXdzL2Jvb3RkaXNrLnJzCmluZGV4IDMxM2EzYzkuLmU4N2IwNDAgMTAwNjQ0Ci0tLSBh L3Byb3htb3gtdHVpLWluc3RhbGxlci9zcmMvdmlld3MvYm9vdGRpc2sucnMKKysrIGIvcHJveG1v eC10dWktaW5zdGFsbGVyL3NyYy92aWV3cy9ib290ZGlzay5ycwpAQCAtMTcsMTAgKzE3LDcgQEAg dXNlIGNyYXRlOjpJbnN0YWxsZXJTdGF0ZTsKIHVzZSBjcmF0ZTo6b3B0aW9uczo6RlNfVFlQRVM7 CiAKIHVzZSBwcm94bW94X2luc3RhbGxlcl9jb21tb246OnsKLSAgICBkaXNrX2NoZWNrczo6ewot ICAgICAgICBjaGVja19idHJmc19yYWlkX2NvbmZpZywgY2hlY2tfZGlza3NfNGtuX2xlZ2FjeV9i b290LCBjaGVja19mb3JfZHVwbGljYXRlX2Rpc2tzLAotICAgICAgICBjaGVja196ZnNfcmFpZF9j b25maWcsCi0gICAgfSwKKyAgICBkaXNrX2NoZWNrczo6e2NoZWNrX2Rpc2tzXzRrbl9sZWdhY3lf Ym9vdCwgY2hlY2tfZm9yX2R1cGxpY2F0ZV9kaXNrc30sCiAgICAgb3B0aW9uczo6ewogICAgICAg ICBBZHZhbmNlZEJvb3RkaXNrT3B0aW9ucywgQlRSRlNfQ09NUFJFU1NfT1BUSU9OUywgQm9vdGRp c2tPcHRpb25zLCBCdHJmc0Jvb3RkaXNrT3B0aW9ucywKICAgICAgICAgRGlzaywgRnNUeXBlLCBM dm1Cb290ZGlza09wdGlvbnMsIFpGU19DSEVDS1NVTV9PUFRJT05TLCBaRlNfQ09NUFJFU1NfT1BU SU9OUywKQEAgLTI3NSw3ICsyNzIsOSBAQCBpbXBsIEFkdmFuY2VkQm9vdGRpc2tPcHRpb25zVmll dyB7CiAgICAgICAgICAgICAgICAgLm9rX29yKCJGYWlsZWQgdG8gcmV0cmlldmUgYWR2YW5jZWQg Ym9vdGRpc2sgb3B0aW9ucyIpPzsKIAogICAgICAgICAgICAgaWYgbGV0IEZzVHlwZTo6WmZzKGxl dmVsKSA9IGZzdHlwZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tfemZzX3JhaWRfY29uZmlnKGxl dmVsLCAmZGlza3MpLm1hcF9lcnIofGVycnwgZm9ybWF0ISgie2ZzdHlwZX06IHtlcnJ9IikpPzsK KyAgICAgICAgICAgICAgICBsZXZlbAorICAgICAgICAgICAgICAgICAgICAuY2hlY2tfZGlza3Mo JmRpc2tzKQorICAgICAgICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCBmb3JtYXQhKCJ7ZnN0 eXBlfToge2Vycn0iKSk/OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBPayhCb290ZGlz a09wdGlvbnMgewpAQCAtMjg5LDcgKzI4OCw5IEBAIGltcGwgQWR2YW5jZWRCb290ZGlza09wdGlv bnNWaWV3IHsKICAgICAgICAgICAgICAgICAub2tfb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBhZHZh bmNlZCBib290ZGlzayBvcHRpb25zIik/OwogCiAgICAgICAgICAgICBpZiBsZXQgRnNUeXBlOjpC dHJmcyhsZXZlbCkgPSBmc3R5cGUgewotICAgICAgICAgICAgICAgIGNoZWNrX2J0cmZzX3JhaWRf Y29uZmlnKGxldmVsLCAmZGlza3MpLm1hcF9lcnIofGVycnwgZm9ybWF0ISgie2ZzdHlwZX06IHtl cnJ9IikpPzsKKyAgICAgICAgICAgICAgICBsZXZlbAorICAgICAgICAgICAgICAgICAgICAuY2hl Y2tfZGlza3MoJmRpc2tzKQorICAgICAgICAgICAgICAgICAgICAubWFwX2Vycih8ZXJyfCBmb3Jt YXQhKCJ7ZnN0eXBlfToge2Vycn0iKSk/OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBP ayhCb290ZGlza09wdGlvbnMgewotLSAKMi4zOS41CgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRldmVs QGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWls bWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=