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 35E7E1FF164
	for <inbox@lore.proxmox.com>; Fri, 23 May 2025 18:00:44 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 5C5291E532;
	Fri, 23 May 2025 18:00:35 +0200 (CEST)
From: Aaron Lauterer <a.lauterer@proxmox.com>
To: pve-devel@lists.proxmox.com
Date: Fri, 23 May 2025 18:00:14 +0200
Message-Id: <20250523160029.404400-5-a.lauterer@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250523160029.404400-1-a.lauterer@proxmox.com>
References: <20250523160029.404400-1-a.lauterer@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.431 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible
 spam tricks
 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 cluster 1/1] status: introduce new pve9- rrd and
 metric format
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>

V2UgYWRkIHNldmVyYWwgbmV3IGNvbHVtbnMgdG8gbm9kZXMgYW5kIFZNcyAoZ3Vlc3QpIFJSRHMu
IFNlZSBmdXRoZXIKZG93biBmb3IgZGV0YWlscy4gQWRkaXRpb25hbGx5IHdlIGNoYW5nZSB0aGUg
UlJBIGRlZmluaXRpb25zIG9uIGhvdyB3ZQphZ2dyZWdhdGUgdGhlIGRhdGEgdG8gbWF0Y2ggaG93
IHdlIGRvIGl0IGZvciB0aGUgUHJveG1veCBCYWNrdXAgU2VydmVyClswXS4KClRoZSBtaWdyYXRp
b24gb2YgYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uIGlzIGhhbmRsZWQgYnkgYSBkZWRpY2F0ZWQK
dG9vbC4gT25seSBvbmNlIHRoYXQgaGFzIGhhcHBlbmVkLCB3aWxsIHdlIHN0b3JlIG5ldyBkYXRh
IGluIHRoZSBuZXcKZm9ybWF0LgpUaGlzIGxlYXZlcyB1cyB3aXRoIGEgZmV3IGNhc2VzIHRvIGhh
bmRsZToKCiAgZGF0YSByZWN2IOKGkiAgICAgICAgICBvbGQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXcKICDihpMgcnJkIGZpbGVzCiAtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
bm9uZSAgICAgICAgfCBjaGVjayBpZiBkaXJlY3RvcmllcyBleGlzdHM6CiAgICAgICAgICAgICAg
fCAgICAgbmVpdGhlciBvbGQgb3IgbmV3IC0+IG5ldwoJICAgICAgfCAgICAgbmV3ICAgICAgICAg
ICAgICAgIC0+IG5ldwoJICAgICAgfCAgICAgb2xkIG9ubHkgICAgICAgICAgIC0+IG9sZAotLS0t
LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogIG9ubHkgb2xkICAgIHwgdXNlIG9sZCBmaWxlIGFzIGlzICAg
ICAgICB8IGN1dCBuZXcgY29sdW1ucyBhbmQgdXNlIG9sZCBmaWxlCi0tLS0tLS0tLS0tLS0tfC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAgbmV3IHByZXNlbnQgfCBwYWQgZGF0YSB0byBtYXRjaCBuZXcgZm10IHwgdXNlIG5l
dyBmaWxlIGFzIGlzIGFuZCBwYXNzIGRhdGEKClRvIGhhbmRsZSB0aGUgcGFkZGluZyBhbmQgY3V0
dGluZyBvZiB0aGUgZGF0YSwgd2UgdXNlIGEgYnVmZmVyLgoKV2UgYWRkIHRoZSBmb2xsb3dpbmcg
bmV3IGNvbHVtbnM6CgpOb2RlczoKKiBtZW1mcmVlCiogbWVtYnVmZmVycwoqIG1lbWNhY2hlZAoq
IGFyY3NpemUKKiBwcmVzc3VyZXM6CiAgKiBjcHUgc29tZQogICogaW8gc29tZQogICogaW8gZnVs
bAogICogbWVtIHNvbWUKICAqIG1lbSBmdWxsCgpWTXM6CiogbWVtaG9zdCAobWVtb3J5IGNvbnN1
bXB0aW9uIG9mIGFsbCBwcm9jZXNzZXMgaW4gdGhlIGd1ZXN0cyBjZ3JvdXAsIGhvc3QgdmlldykK
KiBwcmVzc3VyZXM6CiAgKiBjcHUgc29tZQogICogY3B1IGZ1bGwKICAqIGlvIHNvbWUKICAqIGlv
IGZ1bGwKICAqIG1lbSBzb21lCiAgKiBtZW0gZnVsbAoKWzBdIGh0dHBzOi8vZ2l0LnByb3htb3gu
Y29tLz9wPXByb3htb3gtYmFja3VwLmdpdDthPWJsb2I7Zj1zcmMvc2VydmVyL21ldHJpY19jb2xs
ZWN0aW9uL3JyZC5ycztoPWVkMzljYzk0ZWUwNTY5MjRiN2FkYmMyMWI4NGMwMjA5NDc4YmNmNDI7
aGI9ZGMzMjQ3MTZhNjg4YTY3ZDcwMGZhMTMzNzI1NzQwYWM1ZDM3OTVjZSNsNzYKClNpZ25lZC1v
ZmYtYnk6IEFhcm9uIExhdXRlcmVyIDxhLmxhdXRlcmVyQHByb3htb3guY29tPgotLS0KIHNyYy9w
bXhjZnMvc3RhdHVzLmMgfCAyNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3BteGNmcy9zdGF0dXMuYyBiL3NyYy9wbXhjZnMvc3RhdHVz
LmMKaW5kZXggM2ZkYjE3OS4uNGYyNThmNiAxMDA2NDQKLS0tIGEvc3JjL3BteGNmcy9zdGF0dXMu
YworKysgYi9zcmMvcG14Y2ZzL3N0YXR1cy5jCkBAIC0xMTI5LDYgKzExMjksMjEgQEAga3ZlbnRy
eV9oYXNoX3NldCgKIAlyZXR1cm4gVFJVRTsKIH0KIAorLy8gUlJBcyBhcmUgZGVmaW5lZCBpbiB0
aGUgZm9sbG93aW5nIHdheToKKy8vCisvLyBSUkE6Q0Y6eGZmOnN0ZXA6cm93cworLy8gQ0Y6IEFW
RVJBR0Ugb3IgTUFYCisvLyB4ZmY6IDAuNQorLy8gc3RlcHM6IHN0ZXBzaXplIGlzIGRlZmluZWQg
b24gcnJkIGZpbGUgY3JlYXRpb24hIGV4YW1wbGU6IHdpdGggNjAgc2Vjb25kcyBzdGVwIHNpemU6
CisvLwllLmcuIDEgPT4gNjAgc2VjLCAzMCA9PiAxODAwIHNlY29uZHMgb3IgMzAgbWluCisvLyBy
b3dzOiBob3cgbWFueSBhZ2dyZWdhdGVkIHJvd3MgYXJlIGtlcHQsIGFzIGluIGhvdyBmYXIgYmFj
ayBpbiB0aW1lIHdlIHN0b3JlIGRhdGEKKy8vCisvLyBob3cgbWFueSBzZWNvbmRzIGFyZSBhZ2dy
ZWdhdGVkIHBlciBSUkE6IHN0ZXBzICogc3RlcHNpemUgKiByb3dzCisvLyBob3cgbWFueSBob3Vy
cyBhcmUgYWdncmVnYXRlZCBwZXIgUlJBOiBzdGVwcyAqIHN0ZXBzaXplICogcm93cyAvIDM2MDAK
Ky8vIGhvdyBtYW55IGRheXMgYXJlIGFnZ3JlZ2F0ZWQgcGVyIFJSQTogc3RlcHMgKiBzdGVwc2l6
ZSAqIHJvd3MgLyAzNjAwIC8gMjQKKy8vIGh0dHBzOi8vb3NzLm9ldGlrZXIuY2gvcnJkdG9vbC90
dXQvcnJkLWJlZ2lubmVycy5lbi5odG1sI1VuZGVyc3RhbmRpbmdfYnlfYW5fZXhhbXBsZQorCisv
LyBUaW1lIHN0ZXAgc2l6ZSA2MCBzZWNvbmRzCiBzdGF0aWMgY29uc3QgY2hhciAqcnJkX2RlZl9u
b2RlW10gPSB7CiAJIkRTOmxvYWRhdmc6R0FVR0U6MTIwOjA6VSIsCiAJIkRTOm1heGNwdTpHQVVH
RToxMjA6MDpVIiwKQEAgLTExNTcsNiArMTE3Miw0MyBAQCBzdGF0aWMgY29uc3QgY2hhciAqcnJk
X2RlZl9ub2RlW10gPSB7CiAJTlVMTCwKIH07CiAKKy8vIFRpbWUgc3RlcCBzaXplIDEwIHNlY29u
ZHMKK3N0YXRpYyBjb25zdCBjaGFyICpycmRfZGVmX25vZGVfcHZlOVtdID0geworCSJEUzpsb2Fk
YXZnOkdBVUdFOjEyMDowOlUiLAorCSJEUzptYXhjcHU6R0FVR0U6MTIwOjA6VSIsCisJIkRTOmNw
dTpHQVVHRToxMjA6MDpVIiwKKwkiRFM6aW93YWl0OkdBVUdFOjEyMDowOlUiLAorCSJEUzptZW10
b3RhbDpHQVVHRToxMjA6MDpVIiwKKwkiRFM6bWVtdXNlZDpHQVVHRToxMjA6MDpVIiwKKwkiRFM6
c3dhcHRvdGFsOkdBVUdFOjEyMDowOlUiLAorCSJEUzpzd2FwdXNlZDpHQVVHRToxMjA6MDpVIiwK
KwkiRFM6cm9vdHRvdGFsOkdBVUdFOjEyMDowOlUiLAorCSJEUzpyb290dXNlZDpHQVVHRToxMjA6
MDpVIiwKKwkiRFM6bmV0aW46REVSSVZFOjEyMDowOlUiLAorCSJEUzpuZXRvdXQ6REVSSVZFOjEy
MDowOlUiLAorCSJEUzptZW1mcmVlOkdBVUdFOjEyMDowOlUiLAorCSJEUzptZW1idWZmZXJzOkdB
VUdFOjEyMDowOlUiLAorCSJEUzptZW1jYWNoZWQ6R0FVR0U6MTIwOjA6VSIsCisJIkRTOmFyY3Np
emU6R0FVR0U6MTIwOjA6VSIsCisJIkRTOnByZXNzdXJlY3B1c29tZTpHQVVHRToxMjA6MDpVIiwK
KwkiRFM6cHJlc3N1cmVpb3NvbWU6R0FVR0U6MTIwOjA6VSIsCisJIkRTOnByZXNzdXJlaW9mdWxs
OkdBVUdFOjEyMDowOlUiLAorCSJEUzpwcmVzc3VyZW1lbW9yeXNvbWU6R0FVR0U6MTIwOjA6VSIs
CisJIkRTOnByZXNzdXJlbWVtb3J5ZnVsbDpHQVVHRToxMjA6MDpVIiwKKworCSJSUkE6QVZFUkFH
RTowLjU6MToxNDQwIiwgLy8gMSBtaW4gKiAxNDQwID0+IDEgZGF5CisJIlJSQTpBVkVSQUdFOjAu
NTozMDoxNDQwIiwgLy8gMzAgbWluICogMTQ0MCA9PiAzMCBkYXkKKwkiUlJBOkFWRVJBR0U6MC41
OjM2MDoxNDQwIiwgLy8gNiBob3VycyAqIDE0NDAgPT4gMzYwIGRheSB+MSB5ZWFyCisJIlJSQTpB
VkVSQUdFOjAuNToxMDA4MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJzCisKKwki
UlJBOk1BWDowLjU6MToxNDQwIiwgLy8gMSBtaW4gKiAxNDQwID0+IDEgZGF5CisJIlJSQTpNQVg6
MC41OjMwOjE0NDAiLCAvLyAzMCBtaW4gKiAxNDQwID0+IDMwIGRheQorCSJSUkE6TUFYOjAuNToz
NjA6MTQ0MCIsIC8vIDYgaG91cnMgKiAxNDQwID0+IDM2MCBkYXkgfjEgeWVhcgorCSJSUkE6TUFY
OjAuNToxMDA4MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJzCisJTlVMTCwKK307
CisKKy8vIFRpbWUgc3RlcCBzaXplIDYwIHNlY29uZHMKIHN0YXRpYyBjb25zdCBjaGFyICpycmRf
ZGVmX3ZtW10gPSB7CiAJIkRTOm1heGNwdTpHQVVHRToxMjA6MDpVIiwKIAkiRFM6Y3B1OkdBVUdF
OjEyMDowOlUiLApAQCAtMTE4Myw2ICsxMjM1LDM5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpycmRf
ZGVmX3ZtW10gPSB7CiAJTlVMTCwKIH07CiAKKy8vIFRpbWUgc3RlcCBzaXplIDYwIHNlY29uZHMK
K3N0YXRpYyBjb25zdCBjaGFyICpycmRfZGVmX3ZtX3B2ZTlbXSA9IHsKKwkiRFM6bWF4Y3B1OkdB
VUdFOjEyMDowOlUiLAorCSJEUzpjcHU6R0FVR0U6MTIwOjA6VSIsCisJIkRTOm1heG1lbTpHQVVH
RToxMjA6MDpVIiwKKwkiRFM6bWVtOkdBVUdFOjEyMDowOlUiLAorCSJEUzptYXhkaXNrOkdBVUdF
OjEyMDowOlUiLAorCSJEUzpkaXNrOkdBVUdFOjEyMDowOlUiLAorCSJEUzpuZXRpbjpERVJJVkU6
MTIwOjA6VSIsCisJIkRTOm5ldG91dDpERVJJVkU6MTIwOjA6VSIsCisJIkRTOmRpc2tyZWFkOkRF
UklWRToxMjA6MDpVIiwKKwkiRFM6ZGlza3dyaXRlOkRFUklWRToxMjA6MDpVIiwKKwkiRFM6bWVt
aG9zdDpHQVVHRToxMjA6MDpVIiwKKwkiRFM6cHJlc3N1cmVjcHVzb21lOkdBVUdFOjEyMDowOlUi
LAorCSJEUzpwcmVzc3VyZWNwdWZ1bGw6R0FVR0U6MTIwOjA6VSIsCisJIkRTOnByZXNzdXJlaW9z
b21lOkdBVUdFOjEyMDowOlUiLAorCSJEUzpwcmVzc3VyZWlvZnVsbDpHQVVHRToxMjA6MDpVIiwK
KwkiRFM6cHJlc3N1cmVtZW1vcnlzb21lOkdBVUdFOjEyMDowOlUiLAorCSJEUzpwcmVzc3VyZW1l
bW9yeWZ1bGw6R0FVR0U6MTIwOjA6VSIsCisKKwkiUlJBOkFWRVJBR0U6MC41OjE6MTQ0MCIsIC8v
IDEgbWluICogMTQ0MCA9PiAxIGRheQorCSJSUkE6QVZFUkFHRTowLjU6MzA6MTQ0MCIsIC8vIDMw
IG1pbiAqIDE0NDAgPT4gMzAgZGF5CisJIlJSQTpBVkVSQUdFOjAuNTozNjA6MTQ0MCIsIC8vIDYg
aG91cnMgKiAxNDQwID0+IDM2MCBkYXkgfjEgeWVhcgorCSJSUkE6QVZFUkFHRTowLjU6MTAwODA6
NTcwIiwgLy8gMSB3ZWVrICogNTcwID0+IH4xMCB5ZWFycworCisJIlJSQTpNQVg6MC41OjE6MTQ0
MCIsIC8vIDEgbWluICogMTQ0MCA9PiAxIGRheQorCSJSUkE6TUFYOjAuNTozMDoxNDQwIiwgLy8g
MzAgbWluICogMTQ0MCA9PiAzMCBkYXkKKwkiUlJBOk1BWDowLjU6MzYwOjE0NDAiLCAvLyA2IGhv
dXJzICogMTQ0MCA9PiAzNjAgZGF5IH4xIHllYXIKKwkiUlJBOk1BWDowLjU6MTAwODA6NTcwIiwg
Ly8gMSB3ZWVrICogNTcwID0+IH4xMCB5ZWFycworCU5VTEwsCit9OworCisvLyBUaW1lIHN0ZXAg
c2l6ZSA2MCBzZWNvbmRzCiBzdGF0aWMgY29uc3QgY2hhciAqcnJkX2RlZl9zdG9yYWdlW10gPSB7
CiAJIkRTOnRvdGFsOkdBVUdFOjEyMDowOlUiLAogCSJEUzp1c2VkOkdBVUdFOjEyMDowOlUiLApA
QCAtMTIwMCw2ICsxMjg1LDIzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpycmRfZGVmX3N0b3JhZ2Vb
XSA9IHsKIAkiUlJBOk1BWDowLjU6MTAwODA6NzAiLCAvLyA3IGRheSBtYXggLSBvbnkgeWVhcgog
CU5VTEwsCiB9OworLy8KKy8vIFRpbWUgc3RlcCBzaXplIDYwIHNlY29uZHMKK3N0YXRpYyBjb25z
dCBjaGFyICpycmRfZGVmX3N0b3JhZ2VfcHZlOVtdID0geworCSJEUzp0b3RhbDpHQVVHRToxMjA6
MDpVIiwKKwkiRFM6dXNlZDpHQVVHRToxMjA6MDpVIiwKKworCSJSUkE6QVZFUkFHRTowLjU6MTox
NDQwIiwgLy8gMSBtaW4gKiAxNDQwID0+IDEgZGF5CisJIlJSQTpBVkVSQUdFOjAuNTozMDoxNDQw
IiwgLy8gMzAgbWluICogMTQ0MCA9PiAzMCBkYXkKKwkiUlJBOkFWRVJBR0U6MC41OjM2MDoxNDQw
IiwgLy8gNiBob3VycyAqIDE0NDAgPT4gMzYwIGRheSB+MSB5ZWFyCisJIlJSQTpBVkVSQUdFOjAu
NToxMDA4MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJzCisKKwkiUlJBOk1BWDow
LjU6MToxNDQwIiwgLy8gMSBtaW4gKiAxNDQwID0+IDEgZGF5CisJIlJSQTpNQVg6MC41OjMwOjE0
NDAiLCAvLyAzMCBtaW4gKiAxNDQwID0+IDMwIGRheQorCSJSUkE6TUFYOjAuNTozNjA6MTQ0MCIs
IC8vIDYgaG91cnMgKiAxNDQwID0+IDM2MCBkYXkgfjEgeWVhcgorCSJSUkE6TUFYOjAuNToxMDA4
MDo1NzAiLCAvLyAxIHdlZWsgKiA1NzAgPT4gfjEwIHllYXJzCisJTlVMTCwKK307CiAKICNkZWZp
bmUgUlJERElSICIvdmFyL2xpYi9ycmRjYWNoZWQvZGIiCiAKQEAgLTEyNjAsMzUgKzEzNjIsNzAg
QEAgdXBkYXRlX3JyZF9kYXRhKAogCWlmICghcnJkX2Zvcm1hdF91cGRhdGVfYnVmZmVyKSB7CiAJ
ICAgIHJyZF9mb3JtYXRfdXBkYXRlX2J1ZmZlciA9IChjaGFyKiltYWxsb2MoUlJEX0ZPUk1BVF9C
VUZGRVJfU0laRSk7CiAJfQorCXN0YXRpYyBjb25zdCBjaGFyKiBwdmU5X25vZGVfcGFkZGluZyA9
ICJVOlU6VTpVOlU6VTpVOlU6VSI7CisJc3RhdGljIGNvbnN0IGNoYXIqIHB2ZTlfdm1fcGFkZGlu
ZyA9ICJVOlU6VTpVOlU6VTpVIjsKKworCWNvbnN0IGNoYXIgKnBhZGRpbmcgPSBOVUxMOwogCiAJ
aW50IHNraXAgPSAwOwogCWludCBkYXRhX2N1dG9mZiA9IDA7IC8vIGhvdyBtYW55IGNvbHVtbnMg
YWZ0ZXIgaW5pdGlhbCBza2lwIHNob3VsZCBiZSBhIGN1dC1vZmYKIAorCS8vIFRPRE8gZHJvcCBw
dmUyLSBkYXRhIGhhbmRsaW5nIHdoZW4gbm90IG5lZWRlZCBhbnltb3JlCiAJaWYgKHN0cm5jbXAo
a2V5LCAicHZlMi1ub2RlLyIsIDEwKSA9PSAwIHx8CiAJCXN0cm5jbXAoa2V5LCAicHZlOS1ub2Rl
LyIsIDEwKSA9PSAwKSB7CiAJCWNvbnN0IGNoYXIgKm5vZGUgPSBrZXkgKyAxMDsKIAotCQlza2lw
ID0gMjsKLQogCQlpZiAoc3RyY2hyKG5vZGUsICcvJykgIT0gTlVMTCkKIAkJCWdvdG8ga2V5ZXJy
b3I7CiAKIAkJaWYgKHN0cmxlbihub2RlKSA8IDEpCiAJCQlnb3RvIGtleWVycm9yOwogCi0JCWlm
IChzdHJuY21wKGtleSwgInB2ZTktbm9kZS8iLCAxMCkgPT0gMCkgewotCQkgICAgZGF0YV9jdXRv
ZmYgPSAxMzsKLQkJfQorCQlmaWxlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZihSUkRESVIgIi9wdmU5
LW5vZGUvJXMiLCBub2RlKTsKKwkJY2hhciAqZmlsZW5hbWVfcHZlMiA9IGdfc3RyZHVwX3ByaW50
ZihSUkRESVIgIi9wdmUyLW5vZGUvJXMiLCBub2RlKTsKIAotCQlmaWxlbmFtZSA9IGdfc3RyZHVw
X3ByaW50ZihSUkRESVIgIi9wdmUyLW5vZGUvJXMiLCBub2RlKTsKKwkJaW50IHVzZV9wdmUyX2Zp
bGUgPSAwOwogCi0JCWlmICghZ19maWxlX3Rlc3QoZmlsZW5hbWUsIEdfRklMRV9URVNUX0VYSVNU
UykpIHsKLQotCQkJbWtkaXIoUlJERElSICIvcHZlMi1ub2RlIiwgMDc1NSk7CisJCS8vIGNoZWNr
IGV4aXN0aW5nIHJyZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMKKwkJaWYgKGdfZmlsZV90ZXN0KGZp
bGVuYW1lLCBHX0ZJTEVfVEVTVF9FWElTVFMpKSB7CisJCSAgICAvLyBuZXcgZmlsZSBleGlzdHMs
IHdlIHVzZSB0aGF0CisJCSAgICAvLyBUT0RPOiBnZXQgY29uZGl0aW9ucyBzbyB0aGF0IHdlIGRv
IG5vdCBoYXZlIHRoaXMgZW1wdHkgb25lCisJCX0gZWxzZSBpZiAoZ19maWxlX3Rlc3QoZmlsZW5h
bWVfcHZlMiwgR19GSUxFX1RFU1RfRVhJU1RTKSkgeworCQkgICAgLy8gb2xkIGZpbGUgZXhpc3Rz
LCB1c2UgdGhhdAorCQkgICAgdXNlX3B2ZTJfZmlsZSA9IDE7CisJCSAgICBmaWxlbmFtZSA9IGdf
c3RyZHVwX3ByaW50ZigiJXMiLCBmaWxlbmFtZV9wdmUyKTsKKwkJfSBlbHNlIHsKKwkJICAgIC8v
IG5laXRoZXIgZmlsZSBleGlzdHMsIGNoZWNrIGZvciBkaXJlY3RvcmllcyB0byBkZWNpZGUgYW5k
IGNyZWF0ZSBmaWxlCisJCSAgICBjaGFyICpkaXJfcHZlMiA9IGdfc3RyZHVwX3ByaW50ZihSUkRE
SVIgIi9wdmUyLW5vZGUiKTsKKwkJICAgIGNoYXIgKmRpcl9wdmU5ID0gZ19zdHJkdXBfcHJpbnRm
KFJSRERJUiAiL3B2ZTktbm9kZSIpOworCisJCSAgICBpZiAoZ19maWxlX3Rlc3QoZGlyX3B2ZTks
R19GSUxFX1RFU1RfSVNfRElSKSkgeworCQkJaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9kZWZf
bm9kZV9wdmU5KS9zaXplb2Yodm9pZCopIC0gMTsKKwkJCWNyZWF0ZV9ycmRfZmlsZShmaWxlbmFt
ZSwgYXJnY291bnQsIHJyZF9kZWZfbm9kZV9wdmU5KTsKKwkJICAgIH0gZWxzZSBpZiAoZ19maWxl
X3Rlc3QoZGlyX3B2ZTIsIEdfRklMRV9URVNUX0lTX0RJUikpIHsKKwkJCXVzZV9wdmUyX2ZpbGUg
PSAxOworCQkJZmlsZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoIiVzIiwgZmlsZW5hbWVfcHZlMik7
CiAJCQlpbnQgYXJnY291bnQgPSBzaXplb2YocnJkX2RlZl9ub2RlKS9zaXplb2Yodm9pZCopIC0g
MTsKIAkJCWNyZWF0ZV9ycmRfZmlsZShmaWxlbmFtZSwgYXJnY291bnQsIHJyZF9kZWZfbm9kZSk7
CisJCSAgICB9IGVsc2UgeworCQkJLy8gbm8gZGlyIGV4aXN0cyB5ZXQsIHVzZSBuZXcgcHZlOQor
CQkJbWtkaXIoUlJERElSICIvcHZlOS1ub2RlIiwgMDc1NSk7CisJCQlpbnQgYXJnY291bnQgPSBz
aXplb2YocnJkX2RlZl9ub2RlX3B2ZTkpL3NpemVvZih2b2lkKikgLSAxOworCQkJY3JlYXRlX3Jy
ZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl9ub2RlX3B2ZTkpOworCQkgICAgfQor
CQkgICAgZ19mcmVlKGRpcl9wdmUyKTsKKwkJICAgIGdfZnJlZShkaXJfcHZlOSk7CisJCX0KKwor
CQlza2lwID0gMjsKKworCQlpZiAoc3RybmNtcChrZXksICJwdmUyLW5vZGUvIiwgMTApID09IDAg
JiYgIXVzZV9wdmUyX2ZpbGUpIHsKKwkJICAgIHBhZGRpbmcgPSBwdmU5X25vZGVfcGFkZGluZzsK
KwkJfSBlbHNlIGlmIChzdHJuY21wKGtleSwgInB2ZTktbm9kZS8iLCAxMCkgPT0gMCAmJiB1c2Vf
cHZlMl9maWxlKSB7CisJCSAgICBkYXRhX2N1dG9mZiA9IDEzOwogCQl9CiAKKwkJZ19mcmVlKGZp
bGVuYW1lX3B2ZTIpOwogCX0gZWxzZSBpZiAoc3RybmNtcChrZXksICJwdmUyLjMtdm0vIiwgMTAp
ID09IDAgfHwKIAkJc3RybmNtcChrZXksICJwdmU5LXZtLyIsIDgpID09IDApIHsKIApAQCAtMTI5
OSwyNyArMTQzNiw1NyBAQCB1cGRhdGVfcnJkX2RhdGEoCiAJCSAgICB2bWlkID0ga2V5ICsgODsK
IAkJfQogCi0JCXNraXAgPSA0OwotCiAJCWlmIChzdHJjaHIodm1pZCwgJy8nKSAhPSBOVUxMKQog
CQkJZ290byBrZXllcnJvcjsKIAogCQlpZiAoc3RybGVuKHZtaWQpIDwgMSkKIAkJCWdvdG8ga2V5
ZXJyb3I7CiAKLQkJaWYgKHN0cm5jbXAoa2V5LCAicHZlOS12bS8iLCA4KSA9PSAwKSB7Ci0JCSAg
ICBkYXRhX2N1dG9mZiA9IDExOwotCQl9CisJCWZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKFJS
RERJUiAiL3B2ZTktdm0vJXMiLCB2bWlkKTsKKwkJY2hhciAqZmlsZW5hbWVfcHZlMiA9IGdfc3Ry
ZHVwX3ByaW50ZihSUkRESVIgIi9wdmUyLXZtLyVzIiwgdm1pZCk7CiAKLQkJZmlsZW5hbWUgPSBn
X3N0cmR1cF9wcmludGYoUlJERElSICIvJXMvJXMiLCAicHZlMi12bSIsIHZtaWQpOworCQlpbnQg
dXNlX3B2ZTJfZmlsZSA9IDA7CiAKLQkJaWYgKCFnX2ZpbGVfdGVzdChmaWxlbmFtZSwgR19GSUxF
X1RFU1RfRVhJU1RTKSkgewotCi0JCQlta2RpcihSUkRESVIgIi9wdmUyLXZtIiwgMDc1NSk7CisJ
CS8vIGNoZWNrIGV4aXN0aW5nIHJyZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMKKwkJaWYgKGdfZmls
ZV90ZXN0KGZpbGVuYW1lLCBHX0ZJTEVfVEVTVF9FWElTVFMpKSB7CisJCSAgICAvLyBuZXcgZmls
ZSBleGlzdHMsIHdlIHVzZSB0aGF0CisJCSAgICAvLyBUT0RPOiBnZXQgY29uZGl0aW9ucyBzbyB0
aGF0IHdlIGRvIG5vdCBoYXZlIHRoaXMgZW1wdHkgb25lCisJCX0gZWxzZSBpZiAoZ19maWxlX3Rl
c3QoZmlsZW5hbWVfcHZlMiwgR19GSUxFX1RFU1RfRVhJU1RTKSkgeworCQkgICAgLy8gb2xkIGZp
bGUgZXhpc3RzLCB1c2UgdGhhdAorCQkgICAgdXNlX3B2ZTJfZmlsZSA9IDE7CisJCSAgICBmaWxl
bmFtZSA9IGdfc3RyZHVwX3ByaW50ZigiJXMiLCBmaWxlbmFtZV9wdmUyKTsKKwkJfSBlbHNlIHsK
KwkJICAgIC8vIG5laXRoZXIgZmlsZSBleGlzdHMsIGNoZWNrIGZvciBkaXJlY3RvcmllcyB0byBk
ZWNpZGUgYW5kIGNyZWF0ZSBmaWxlCisJCSAgICBjaGFyICpkaXJfcHZlMiA9IGdfc3RyZHVwX3By
aW50ZihSUkRESVIgIi9wdmUyLXZtIik7CisJCSAgICBjaGFyICpkaXJfcHZlOSA9IGdfc3RyZHVw
X3ByaW50ZihSUkRESVIgIi9wdmU5LXZtIik7CisKKwkJICAgIGlmIChnX2ZpbGVfdGVzdChkaXJf
cHZlOSxHX0ZJTEVfVEVTVF9JU19ESVIpKSB7CisJCQlpbnQgYXJnY291bnQgPSBzaXplb2YocnJk
X2RlZl92bV9wdmU5KS9zaXplb2Yodm9pZCopIC0gMTsKKwkJCWNyZWF0ZV9ycmRfZmlsZShmaWxl
bmFtZSwgYXJnY291bnQsIHJyZF9kZWZfdm1fcHZlOSk7CisJCSAgICB9IGVsc2UgaWYgKGdfZmls
ZV90ZXN0KGRpcl9wdmUyLCBHX0ZJTEVfVEVTVF9JU19ESVIpKSB7CisJCQl1c2VfcHZlMl9maWxl
ID0gMTsKKwkJCWZpbGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmKCIlcyIsIGZpbGVuYW1lX3B2ZTIp
OwogCQkJaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9kZWZfdm0pL3NpemVvZih2b2lkKikgLSAx
OwogCQkJY3JlYXRlX3JyZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl92bSk7CisJ
CSAgICB9IGVsc2UgeworCQkJLy8gbm8gZGlyIGV4aXN0cyB5ZXQsIHVzZSBuZXcgcHZlOQorCQkJ
bWtkaXIoUlJERElSICIvcHZlOS12bSIsIDA3NTUpOworCQkJaW50IGFyZ2NvdW50ID0gc2l6ZW9m
KHJyZF9kZWZfdm1fcHZlOSkvc2l6ZW9mKHZvaWQqKSAtIDE7CisJCQljcmVhdGVfcnJkX2ZpbGUo
ZmlsZW5hbWUsIGFyZ2NvdW50LCBycmRfZGVmX3ZtX3B2ZTkpOworCQkgICAgfQorCQkgICAgZ19m
cmVlKGRpcl9wdmUyKTsKKwkJICAgIGdfZnJlZShkaXJfcHZlOSk7CiAJCX0KIAorCQlza2lwID0g
NDsKKworCQlpZiAoc3RybmNtcChrZXksICJwdmUyLjMtdm0vIiwgMTApID09IDAgJiYgIXVzZV9w
dmUyX2ZpbGUpIHsKKwkJICAgIHBhZGRpbmcgPSBwdmU5X3ZtX3BhZGRpbmc7CisJCX0gZWxzZSBp
ZiAoc3RybmNtcChrZXksICJwdmU5LXZtLyIsIDgpID09IDAgJiYgdXNlX3B2ZTJfZmlsZSkgewor
CQkgICAgZGF0YV9jdXRvZmYgPSAxMTsKKwkJfQorCisJCWdfZnJlZShmaWxlbmFtZV9wdmUyKTsK
IAl9IGVsc2UgaWYgKHN0cm5jbXAoa2V5LCAicHZlMi1zdG9yYWdlLyIsIDEzKSA9PSAwIHx8CiAJ
CXN0cm5jbXAoa2V5LCAicHZlOS1zdG9yYWdlLyIsIDEzKSA9PSAwKSB7CiAJCWNvbnN0IGNoYXIg
Km5vZGUgPSBrZXkgKyAxMzsKQEAgLTEzMzksMjAgKzE1MDYsNDMgQEAgdXBkYXRlX3JyZF9kYXRh
KAogCQlpZiAoc3RybGVuKHN0b3JhZ2UpIDwgMSkKIAkJCWdvdG8ga2V5ZXJyb3I7CiAKLQkJZmls
ZW5hbWUgPSBnX3N0cmR1cF9wcmludGYoUlJERElSICIvcHZlMi1zdG9yYWdlLyVzIiwgbm9kZSk7
Ci0KLQkJaWYgKCFnX2ZpbGVfdGVzdChmaWxlbmFtZSwgR19GSUxFX1RFU1RfRVhJU1RTKSkgewor
CQlmaWxlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZihSUkRESVIgIi9wdmU5LXN0b3JhZ2UvJXMiLCBu
b2RlKTsKKwkJY2hhciAqZmlsZW5hbWVfcHZlMiA9IGdfc3RyZHVwX3ByaW50ZihSUkRESVIgIi9w
dmUyLXN0b3JhZ2UvJXMiLCBub2RlKTsKIAotCQkJbWtkaXIoUlJERElSICIvcHZlMi1zdG9yYWdl
IiwgMDc1NSk7CisJCS8vIGNoZWNrIGV4aXN0aW5nIHJyZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMK
KwkJaWYgKGdfZmlsZV90ZXN0KGZpbGVuYW1lLCBHX0ZJTEVfVEVTVF9FWElTVFMpKSB7CisJCSAg
ICAvLyBuZXcgZmlsZSBleGlzdHMsIHdlIHVzZSB0aGF0CisJCSAgICAvLyBUT0RPOiBnZXQgY29u
ZGl0aW9ucyBzbyB0aGF0IHdlIGRvIG5vdCBoYXZlIHRoaXMgZW1wdHkgb25lCisJCX0gZWxzZSBp
ZiAoZ19maWxlX3Rlc3QoZmlsZW5hbWVfcHZlMiwgR19GSUxFX1RFU1RfRVhJU1RTKSkgeworCQkg
ICAgLy8gb2xkIGZpbGUgZXhpc3RzLCB1c2UgdGhhdAorCQkgICAgZmlsZW5hbWUgPSBnX3N0cmR1
cF9wcmludGYoIiVzIiwgZmlsZW5hbWVfcHZlMik7CisJCX0gZWxzZSB7CisJCSAgICAvLyBuZWl0
aGVyIGZpbGUgZXhpc3RzLCBjaGVjayBmb3IgZGlyZWN0b3JpZXMgdG8gZGVjaWRlIGFuZCBjcmVh
dGUgZmlsZQorCQkgICAgY2hhciAqZGlyX3B2ZTIgPSBnX3N0cmR1cF9wcmludGYoUlJERElSICIv
cHZlMi1zdG9yYWdlIik7CisJCSAgICBjaGFyICpkaXJfcHZlOSA9IGdfc3RyZHVwX3ByaW50ZihS
UkRESVIgIi9wdmU5LXN0b3JhZ2UiKTsKKworCQkgICAgaWYgKGdfZmlsZV90ZXN0KGRpcl9wdmU5
LEdfRklMRV9URVNUX0lTX0RJUikpIHsKKwkJCWludCBhcmdjb3VudCA9IHNpemVvZihycmRfZGVm
X3N0b3JhZ2VfcHZlOSkvc2l6ZW9mKHZvaWQqKSAtIDE7CisJCQljcmVhdGVfcnJkX2ZpbGUoZmls
ZW5hbWUsIGFyZ2NvdW50LCBycmRfZGVmX3N0b3JhZ2VfcHZlOSk7CisJCSAgICB9IGVsc2UgaWYg
KGdfZmlsZV90ZXN0KGRpcl9wdmUyLCBHX0ZJTEVfVEVTVF9JU19ESVIpKSB7CisJCQlmaWxlbmFt
ZSA9IGdfc3RyZHVwX3ByaW50ZigiJXMiLCBmaWxlbmFtZV9wdmUyKTsKKwkJCWludCBhcmdjb3Vu
dCA9IHNpemVvZihycmRfZGVmX3N0b3JhZ2UpL3NpemVvZih2b2lkKikgLSAxOworCQkJY3JlYXRl
X3JyZF9maWxlKGZpbGVuYW1lLCBhcmdjb3VudCwgcnJkX2RlZl9zdG9yYWdlKTsKKwkJICAgIH0g
ZWxzZSB7CisJCQkvLyBubyBkaXIgZXhpc3RzIHlldCwgdXNlIG5ldyBwdmU5CisJCQlta2RpcihS
UkRESVIgIi9wdmU5LXN0b3JhZ2UiLCAwNzU1KTsKIAogCQkJY2hhciAqZGlyID0gZ19wYXRoX2dl
dF9kaXJuYW1lKGZpbGVuYW1lKTsKIAkJCW1rZGlyKGRpciwgMDc1NSk7CiAJCQlnX2ZyZWUoZGly
KTsKIAotCQkJaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9kZWZfc3RvcmFnZSkvc2l6ZW9mKHZv
aWQqKSAtIDE7Ci0JCQljcmVhdGVfcnJkX2ZpbGUoZmlsZW5hbWUsIGFyZ2NvdW50LCBycmRfZGVm
X3N0b3JhZ2UpOworCQkJaW50IGFyZ2NvdW50ID0gc2l6ZW9mKHJyZF9kZWZfc3RvcmFnZV9wdmU5
KS9zaXplb2Yodm9pZCopIC0gMTsKKwkJCWNyZWF0ZV9ycmRfZmlsZShmaWxlbmFtZSwgYXJnY291
bnQsIHJyZF9kZWZfc3RvcmFnZV9wdmU5KTsKKwkJICAgIH0KKwkJICAgIGdfZnJlZShkaXJfcHZl
Mik7CisJCSAgICBnX2ZyZWUoZGlyX3B2ZTkpOwogCQl9Ci0KKwkJZ19mcmVlKGZpbGVuYW1lX3B2
ZTIpOwogCX0gZWxzZSB7CiAJCWdvdG8ga2V5ZXJyb3I7CiAJfQpAQCAtMTM2Myw2ICsxNTUzLDgg
QEAgdXBkYXRlX3JyZF9kYXRhKAogCSAgICBjb25zdCBjaGFyICpjdXQgPSBycmRfc2tpcF9kYXRh
KGRwLCBkYXRhX2N1dG9mZik7CiAJICAgIGNvbnN0IGludCBkYXRhX2xlbiA9IGN1dCAtIGRwIC0g
MTsgLy8gLTEgdG8gcmVtb3ZlIGxhc3QgY29sb24KIAkgICAgc25wcmludGYocnJkX2Zvcm1hdF91
cGRhdGVfYnVmZmVyLCBSUkRfRk9STUFUX0JVRkZFUl9TSVpFLCAiJS4qcyIsIGRhdGFfbGVuLCBk
cCk7CisJfSBlbHNlIGlmIChwYWRkaW5nKSB7CisJICAgIHNucHJpbnRmKHJyZF9mb3JtYXRfdXBk
YXRlX2J1ZmZlciwgUlJEX0ZPUk1BVF9CVUZGRVJfU0laRSwgIiVzOiVzIiwgZHAsIHBhZGRpbmcp
OwogCX0gZWxzZSB7CiAJICAgIHNucHJpbnRmKHJyZF9mb3JtYXRfdXBkYXRlX2J1ZmZlciwgUlJE
X0ZPUk1BVF9CVUZGRVJfU0laRSwgIiVzIiwgZHApOwogCX0KLS0gCjIuMzkuNQoKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGlu
ZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3gu
Y29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK