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 [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id B1EE31FF185 for <inbox@lore.proxmox.com>; Mon, 23 Jun 2025 11:25:00 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EC4E0C714; Mon, 23 Jun 2025 11:25:31 +0200 (CEST) Message-ID: <e424c6b8-0ed6-48d9-bc45-d4788aa72adb@proxmox.com> Date: Mon, 23 Jun 2025 11:25:27 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: =?UTF-8?Q?Michael_K=C3=B6ppl?= <m.koeppl@proxmox.com>, Proxmox VE development discussion <pve-devel@lists.proxmox.com> References: <20250429113646.25738-1-f.weber@proxmox.com> <20250429113646.25738-7-f.weber@proxmox.com> <bdfa472c-32e1-4ca0-8380-60154b30f646@proxmox.com> Content-Language: en-US From: Friedrich Weber <f.weber@proxmox.com> In-Reply-To: <bdfa472c-32e1-4ca0-8380-60154b30f646@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.008 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 Subject: Re: [pve-devel] [PATCH pve-manager stable-8 v3 3/3] pve8to9: detect and (if requested) disable LVM autoactivation 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> T24gMTAvMDYvMjAyNSAxNjoyNSwgTWljaGFlbCBLw7ZwcGwgd3JvdGU6Cj4gTGVmdCAyIGNvbW1l bnRzIGlubGluZS4gVGhlIGNoYW5nZXMgb3ZlcmFsbCBsb29rIGdvb2QgdG8gbWUgYW5kIHdvcmtl ZAo+IGR1cmluZyBteSB0ZXN0cy4KPiAKPiBPbiA0LzI5LzI1IDEzOjM2LCBGcmllZHJpY2ggV2Vi ZXIgd3JvdGU6Cj4+IFN0YXJ0aW5nIHdpdGggUFZFIDksIHRoZSBMVk0gYW5kIExWTS10aGluIHBs dWdpbnMgY3JlYXRlIG5ldyBMVnMgd2l0aAo+PiB0aGUgYC0tc2V0YXV0b2FjdGl2YXRpb24gbmAg ZmxhZyB0byBmaXggIzQ5OTcgWzFdLiBIb3dldmVyLCB0aGlzIGRvZXMKPj4gbm90IGFmZmVjdCBh bHJlYWR5IGV4aXN0aW5nIExWcyBvZiBzZXR1cHMgdXBncmFkaW5nIGZyb20gUFZFIDguCj4+Cj4+ IEhlbmNlLCBhZGQgYSBuZXcgYHVwZGF0ZWx2bWAgc3ViY29tbWFuZCB0byBgcHZlOHRvOWAgdGhh dCBmaW5kcyBndWVzdAo+PiB2b2x1bWUgTFZzIHdpdGggYXV0b2FjdGl2YXRpb24gZW5hYmxlZCBv biBMVk0gYW5kIExWTS10aGluIHN0b3JhZ2VzLAo+PiBhbmQgZGlzYWJsZXMgYXV0b2FjdGl2YXRp b24gb24gZWFjaCBvZiB0aGVtLiBUaGlzIGlzIGRvbmUgd2hpbGUKPj4gaG9sZGluZyBhIGxvY2sg b24gdGhlIHN0b3JhZ2UsIHRvIGF2b2lkIG1ldGFkYXRhIHVwZGF0ZSBjb25mbGljdHMgZm9yCj4+ IHNoYXJlZCBMVk0gc3RvcmFnZXMuCj4+Cj4+IEFsc28sIGNoZWNrIGZvciBndWVzdCB2b2x1bWUg TFZzIHdpdGggYXV0b2FjdGl2YXRpb24gZW5hYmxlZCBkdXJpbmcKPj4gdGhlIGBjaGVja2xpc3Rg IGNvbW1hbmQsIGFuZCBzdWdnZXN0IHRvIHJ1biBgdXBkYXRlbHZtYCBpZiBuZWNlc3NhcnkuCj4+ IFRoZSBjaGVjayBpcyBkb25lIHdpdGhvdXQgYSBsb2NrLCBhcyB0YWtpbmcgYSBsb2NrIGRvZXNu J3QgaGF2ZQo+PiBhZHZhbnRhZ2VzIGhlcmUuCj4+Cj4+IFdoaWxlIHNvbWUgdXNlcnMgbWF5IGhh dmUgZGlzYWJsZWQgYXV0b2FjdGl2YXRpb24gb24gdGhlIFZHIGxldmVsIHRvCj4+IHdvcmsgYXJv dW5kICM0OTk3LCBjb25zY2lvdXNseSBkbyBub3QgdGFrZSB0aGlzIGludG8gYWNjb3VudDoKPj4g RGlzYWJsaW5nIGF1dG9hY3RpdmF0aW9uIG9uIExWcyB0b28gZG9lcyBub3QgaHVydCwgYW5kIGF2 b2lkcyBpc3N1ZXMKPj4gaW4gY2FzZSB0aGUgdXNlciBkZWNpZGVzIHRvIHJlLWVuYWJsZSBhdXRv YWN0aXZhdGlvbiBvbiB0aGUgVkcgbGV2ZWwKPj4gaW4gdGhlIGZ1dHVyZS4KPj4KPj4gWzFdIGh0 dHBzOi8vYnVnemlsbGEucHJveG1veC5jb20vc2hvd19idWcuY2dpP2lkPTQ5OTcKPj4KPj4gU2ln bmVkLW9mZi1ieTogRnJpZWRyaWNoIFdlYmVyIDxmLndlYmVyQHByb3htb3guY29tPgo+PiAtLS0K Pj4KPj4gTm90ZXM6Cj4+ICAgICBvcGVuIHF1ZXN0aW9uczoKPj4gICAgIAo+PiAgICAgLSBpZiB1 c2VycyBjcmVhdGUgbmV3IExWcyBvbiBQVkUgOCBub2RlcyBhZnRlciBydW5uaW5nIGBwdmU4dG85 Cj4+ICAgICAgIHVwZGF0ZWx2bWAgYnV0IGJlZm9yZSBhY3R1YWxseSB1cGdyYWRpbmcgdG8gUFZF IDksIHRoZXNlIHdpbGwgc3RpbGwKPj4gICAgICAgYmUgY3JlYXRlZCB3aXRoIGF1dG9hY3RpdmF0 aW9uIGVuYWJsZWQuIElzIHRoaXMgYSBjYXNlIHdlIHdhbnQgdG8KPj4gICAgICAgY29uc2lkZXI/ IElmIHllcywgd2UgY291bGQgc3VnZ2VzdCBydW5uaW5nIGBwdmU4dG8gdXBkYXRlbHZtYCAob25s eSkKPj4gICAgICAgcG9zdC11cGdyYWRlIG9uIGFsbCBub2RlcywgYnV0IHVzZXJzIG1heSBmb3Jn ZXQgdGhpcy4uLgo+IAo+IFBvbmRlcmVkIGEgYml0IG9uIHRoaXMsIGJ1dCBJJ20gbm90IHN1cmUg aWYgaXQgcmVhbGx5IG1ha2VzIHNlbnNlIHRvCj4gY29uc2lkZXIgdGhpcyBjYXNlLiBJdCBzaG91 bGQgYmUgY2xlYXIgdGhhdCBpZiBJIGNyZWF0ZSBMVnMgYWZ0ZXIKPiBydW5uaW5nIGB1cGRhdGVs dm1gLCB0aGUgbmV3IExWcyB3aWxsIHN0aWxsIGJlaGF2ZSBsaWtlIHRoZXkgYWx3YXlzIGhhdmUK PiBvbiBQVkUgOC4gSSB0aGluayBzb21lb25lIGZvcmdldHRpbmcgdG8gcnVuIGB1cGRhdGVsdm1g IHBvc3QtdXBncmFkZSBpcwo+IGZhciBtb3JlIGxpa2VseSB0aGFuIHNvbWVvbmUgcnVubmluZyB0 aGUgY2hlY2tsaXN0IGZvciBQVkUgOSwgY29udGludWluZwo+IHRvIGNyZWF0ZSBuZXcgTFZzLCBh bmQgb25seSB0aGVuIHVwZ3JhZGUgdG8gUFZFIDkuCgpBZ3JlZS4gSWYgd2Ugc3VnZ2VzdCB0byBy dW4gYHVwZGF0ZWx2bWAgKm9ubHkqIHBvc3QtdXBncmFkZSwgdXNlcnMgbWF5CmZvcmdldCB0byBy dW4gaXQgYXQgYWxsLCBzbyBzdWdnZXN0aW5nIHRvIHJ1biBpdCBwcmUtdXBncmFkZSBzZWVtcwpz YWZlci4gSWYgdXNlcnMgZG8gY3JlYXRlIGFuIExWIHBvc3QtYHVwZGF0ZWx2bWAgYnV0IHByZS11 cGdyYWRlIHRvIDksCnRoZSBmYWxsb3V0ICh0cmlnZ2VyaW5nICM0OTk3KSBpcyBsaW1pdGVkIHRv IHRoaXMgcGFydGljdWxhciBMViwgYW5kIGNhbgpiZSBmaXhlZCByZWxhdGl2ZWx5IGVhc2lseSB3 aGVuIHRoZXkgc2VlICM0OTk3IG9jY3VyIGFnYWluLgoKPj4gICAgIC0gYHVwZGF0ZWx2bWAgd2ls bCBkaXNhYmxlIGF1dG9hY3RpdmF0aW9uIG9uIGFsbCBndWVzdCB2b2x1bWVzLAo+PiAgICAgICBy ZWdhcmRsZXNzIG9mIHRoZSBndWVzdCBvd25lci4gSW4gb3RoZXIgd29yZHMsIGl0IHdpbGwgZGlz YWJsZQo+PiAgICAgICBhdXRvYWN0aXZhdGlvbiBvbiBMVnMgb3duZWQgYnkgYSBkaWZmZXJlbnQg bm9kZS4gSXMgdGhpcyBhIHByb2JsZW0/Cj4+ICAgICAgIE15IHRlc3RzIHN1Z2dlc3RzIGl0J3Mg dW5wcm9ibGVtYXRpYywgYnV0IG1heSBiZSB3b3J0aCBhIHNlY29uZAo+PiAgICAgICBsb29rLiBX ZSBjYW4gY2hhbmdlIGB1cGRhdGVsdm1gIHRvIG9ubHkgdXBkYXRlIExWcyBvd25lZCBieSB0aGUK Pj4gICAgICAgbG9jYWwgbm9kZSwgYnV0IHRoZW4gbWlnaHQgbWlzcyBMVnMgdGhhdCBhcmUgbWln cmF0ZWQgYmV0d2Vlbgo+PiAgICAgICBgdXBkYXRlbHZtYCBydW5zIG9uIGRpZmZlcmVudCBub2Rl cy4KPj4gICAgIAo+PiAgICAgbmV3IGluIHYzCj4+Cj4+ICBQVkUvQ0xJL3B2ZTh0bzkucG0gfCAx NTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICAxIGZp bGUgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4KPj4gZGlmZiAt LWdpdCBhL1BWRS9DTEkvcHZlOHRvOS5wbSBiL1BWRS9DTEkvcHZlOHRvOS5wbQo+PiBpbmRleCBm YmI5NjQ5MS4uOTcyYzkxZWEgMTAwNjQ0Cj4+IC0tLSBhL1BWRS9DTEkvcHZlOHRvOS5wbQo+PiAr KysgYi9QVkUvQ0xJL3B2ZTh0bzkucG0KPj4gQEAgLTIyLDcgKzIyLDcgQEAgdXNlIFBWRTo6Tm9k ZUNvbmZpZzsKPj4gIHVzZSBQVkU6OlJQQ0Vudmlyb25tZW50Owo+PiAgdXNlIFBWRTo6U3RvcmFn ZTsKPj4gIHVzZSBQVkU6OlN0b3JhZ2U6OlBsdWdpbjsKPj4gLXVzZSBQVkU6OlRvb2xzIHF3KHJ1 bl9jb21tYW5kIHNwbGl0X2xpc3QgZmlsZV9nZXRfY29udGVudHMpOwo+PiArdXNlIFBWRTo6VG9v bHMgcXcocnVuX2NvbW1hbmQgc3BsaXRfbGlzdCBmaWxlX2dldF9jb250ZW50cyB0cmltKTsKPj4g IHVzZSBQVkU6OlFlbXVDb25maWc7Cj4+ICB1c2UgUFZFOjpRZW11U2VydmVyOwo+PiAgdXNlIFBW RTo6VlpEdW1wOjpDb21tb247Cj4+IEBAIC0xMzcyLDYgKzEzNzIsOTUgQEAgc3ViIGNoZWNrX2Rr bXNfbW9kdWxlcyB7Cj4+ICAgICAgfQo+PiAgfQo+PiAgCj4+ICtteSAkcXVlcnlfbHZtX2x2X2F1 dG9hY3RpdmF0aW9uID0gc3ViIHsKPj4gKyAgICBteSAoJHZnX25hbWUpID0gQF87Cj4+ICsKPj4g KyAgICBteSAkY21kID0gWwo+PiArCScvc2Jpbi9sdnMnLAo+PiArCSctLXNlcGFyYXRvcicsICc6 JywKPj4gKwknLS1ub2hlYWRpbmdzJywKPj4gKwknLS11bmJ1ZmZlcmVkJywKPj4gKwknLS1vcHRp b25zJywgImx2X25hbWUsYXV0b2FjdGl2YXRpb24iLAo+PiArCSR2Z19uYW1lLAo+PiArICAgIF07 Cj4+ICsKPj4gKyAgICBteSAkcmVzdWx0Owo+PiArICAgIGV2YWwgewo+PiArCXJ1bl9jb21tYW5k KCRjbWQsIG91dGZ1bmMgPT4gc3ViIHsKPj4gKwkgICAgbXkgJGxpbmUgPSBzaGlmdDsKPj4gKwkg ICAgJGxpbmUgPSB0cmltKCRsaW5lKTsKPj4gKwo+PiArCSAgICBteSAoJG5hbWUsICRhdXRvYWN0 aXZhdGlvbl9mbGFnKSA9IHNwbGl0KCc6JywgJGxpbmUpOwo+PiArCSAgICByZXR1cm4gaWYgISRu YW1lOwo+PiArCj4+ICsJICAgICRyZXN1bHQtPnskbmFtZX0gPSAkYXV0b2FjdGl2YXRpb25fZmxh ZyBlcSAnZW5hYmxlZCc7Cj4+ICsJfSk7Cj4+ICsgICAgfTsKPj4gKyAgICBkaWUgImNvdWxkIG5v dCBsaXN0IExWTSBsb2dpY2FsIHZvbHVtZXM6ICRAXG4iIGlmICRAOwo+PiArICAgIHJldHVybiAk cmVzdWx0Owo+PiArfTsKPj4gKwo+PiArbXkgJGZvcmVhY2hfbHZtX3ZnX3dpdGhfYXV0b2FjdGl2 YXRlZF9ndWVzdF92b2x1bWVzID0gc3ViIHsKPj4gKyAgICBteSAoJHdpdGhfbG9jaywgJGNvZGUp ID0gQF87Cj4+ICsKPj4gKyAgICBteSAkY2ZnID0gUFZFOjpTdG9yYWdlOjpjb25maWcoKTsKPj4g KyAgICBteSAkc3RvcmFnZV9pbmZvID0gUFZFOjpTdG9yYWdlOjpzdG9yYWdlX2luZm8oJGNmZyk7 Cj4+ICsKPj4gKyAgICBmb3IgbXkgJHN0b3JlaWQgKHNvcnQga2V5cyAlJHN0b3JhZ2VfaW5mbykg ewo+PiArCW15ICRzY2ZnID0gUFZFOjpTdG9yYWdlOjpzdG9yYWdlX2NvbmZpZygkY2ZnLCAkc3Rv cmVpZCk7Cj4+ICsJbXkgJHZnbmFtZSA9ICRzY2ZnLT57dmduYW1lfTsKPj4gKwlteSAkdHlwZSA9 ICRzY2ZnLT57dHlwZX07Cj4+ICsJbmV4dCBpZiAkdHlwZSBuZSAnbHZtJyAmJiAkdHlwZSBuZSAn bHZtdGhpbic7Cj4+ICsKPj4gKwlteSAkaW5mbyA9ICRzdG9yYWdlX2luZm8tPnskc3RvcmVpZH07 Cj4+ICsJaWYgKCEkaW5mby0+e2VuYWJsZWR9IHx8ICEkaW5mby0+e2FjdGl2ZX0pIHsKPj4gKwkg ICAgbG9nX3NraXAoInN0b3JhZ2UgJyRzdG9yZWlkJyAoJHR5cGUpIGlzIGRpc2FibGVkIG9yIGlu YWN0aXZlIik7Cj4+ICsJICAgIG5leHQ7Cj4+ICsJfQo+PiArCj4+ICsJbXkgJGZpbmRfYXV0b2Fj dGl2YXRlZF9sdnMgPSBzdWIgewo+PiArCSAgICBteSAkbHZzX2F1dG9hY3RpdmF0aW9uID0gJHF1 ZXJ5X2x2bV9sdl9hdXRvYWN0aXZhdGlvbi0+KCR2Z25hbWUpOwo+PiArCSAgICBteSAkdm9sbGlz dCA9IFBWRTo6U3RvcmFnZTo6dm9sdW1lX2xpc3QoJGNmZywgJHN0b3JlaWQpOwo+PiArCj4+ICsJ ICAgIG15ICRhdXRvYWN0aXZhdGVkX2d1ZXN0X2x2cyA9IFtdOwo+PiArCSAgICBmb3IgbXkgJHZv bGluZm8gKEAkdm9sbGlzdCkgewo+PiArCQlteSAkdm9sbmFtZSA9IChQVkU6OlN0b3JhZ2U6OnBh cnNlX3ZvbHVtZV9pZCgkdm9saW5mby0+e3ZvbGlkfSkpWzFdOwo+PiArCQlwdXNoIEAkYXV0b2Fj dGl2YXRlZF9ndWVzdF9sdnMsICR2b2xuYW1lIGlmICRsdnNfYXV0b2FjdGl2YXRpb24tPnskdm9s bmFtZX07Cj4+ICsJICAgIH0KPj4gKwo+PiArCSAgICAkY29kZS0+KCRzdG9yZWlkLCAkdmduYW1l LCAkYXV0b2FjdGl2YXRlZF9ndWVzdF9sdnMpOwo+PiArCX07Cj4+ICsKPj4gKwlpZiAoJHdpdGhf bG9jaykgewo+PiArCSAgICBteSAkcGx1Z2luID0gUFZFOjpTdG9yYWdlOjpQbHVnaW4tPmxvb2t1 cCgkc2NmZy0+e3R5cGV9KTsKPj4gKwkgICAgJHBsdWdpbi0+Y2x1c3Rlcl9sb2NrX3N0b3JhZ2Uo JHN0b3JlaWQsICRzY2ZnLT57c2hhcmVkfSwgdW5kZWYsCj4+ICsJCSRmaW5kX2F1dG9hY3RpdmF0 ZWRfbHZzKTsKPj4gKwl9IGVsc2Ugewo+PiArCSAgICAkZmluZF9hdXRvYWN0aXZhdGVkX2x2cy0+ KCk7Cj4+ICsJfQo+PiArICAgIH07Cj4+ICt9Owo+PiArCj4+ICtzdWIgY2hlY2tfbHZtX2F1dG9h Y3RpdmF0aW9uIHsKPj4gKyAgICBsb2dfaW5mbygiQ2hlY2sgZm9yIExWTSBhdXRvYWN0aXZhdGlv biBzZXR0aW5ncyBvbiAnbHZtJyBhbmQgJ2x2bXRoaW4nIHN0b3JhZ2VzLi4uIik7Cj4+ICsKPj4g KyAgICBteSAkbmVlZHNfZml4ID0gMDsKPj4gKyAgICAkZm9yZWFjaF9sdm1fdmdfd2l0aF9hdXRv YWN0aXZhdGVkX2d1ZXN0X3ZvbHVtZXMtPigwLCBzdWIgewo+PiArCW15ICgkc3RvcmVpZCwgJHZn bmFtZSwgJGF1dG9hY3RpdmF0ZWRfbHZzKSA9IEBfOwo+PiArCj4+ICsJaWYgKHNjYWxhcihAJGF1 dG9hY3RpdmF0ZWRfbHZzKSA+IDApIHsKPj4gKwkgICAgbG9nX3dhcm4oInN0b3JhZ2UgJyRzdG9y ZWlkJyBoYXMgZ3Vlc3Qgdm9sdW1lcyB3aXRoIGF1dG9hY3RpdmF0aW9uIGVuYWJsZWQiKTsKPj4g KwkgICAgJG5lZWRzX2ZpeCA9IDE7Cj4+ICsJfSBlbHNlIHsKPj4gKwkgICAgbG9nX3Bhc3MoImFs bCBndWVzdCB2b2x1bWVzIG9uIHN0b3JhZ2UgJyRzdG9yZWlkJyBoYXZlIGF1dG9hY3RpdmF0aW9u IGRpc2FibGVkIik7Cj4+ICsJfQo+PiArICAgIH0pOwo+PiArICAgIGxvZ193YXJuKCJwbGVhc2Ug cnVuICdwdmU4dG85IHVwZGF0ZWx2bScgdG8gZGlzYWJsZSBhdXRvYWN0aXZhdGlvbiBvbiBMVk0g Z3Vlc3Qgdm9sdW1lcyIpCj4gCj4gSSB0aGluayBmb3IgdXNlcnMgaXQgd291bGQgaGVscCBpZiBz b21lIGFkZGl0aW9uYWwgaW5mbyB3YXMgYWRkZWQgdG8KPiB0aGlzIG1lc3NhZ2UuIERpc2FibGlu ZyBhdXRvYWN0aXZhdGlvbiBzb3VuZHMgbGlrZSBpdCBtaWdodCBhZmZlY3QgaG93Cj4gTFZzIHdv cmsgKGRvIEkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgdGhleSdyZSBub3QgYXV0b2FjdGl2YXRl ZD8sIGV0Yy4pCj4gaWYgeW91J3JlIG5vdCBmYW1pbGlhciB3aXRoIHRoZSBpbm5lciB3b3JraW5n cy4gTWF5YmUgdGhpcyBjb3VsZCBhbHNvCj4gbWVudGlvbiB0aGF0IHRoZSBzdG9yYWdlIHN0YWNr IHdpbGwgdGFrZSBjYXJlIG9mIGFjdGl2YXRpbmcvZGVhY3RpdmF0aW5nCj4gd2hlbiBuZWVkZWQ/ IEp1c3QgYSBzdWdnZXN0aW9uIHNpbmNlIEkgbm90aWNlZCBpdCBkdXJpbmcgbXkgdGVzdGluZy4K Ck1ha2VzIHNlbnNlIC0tIGl0J3Mgbm90IHJlYWxseSBvYnZpb3VzIHRvIHVzZXJzIHRoYXQgZGlz YWJsZWQKYXV0b2FjdGl2YXRpb24gaXMgdGhlIGRlc2lyZWQgc3RhdGUuCgpJIGd1ZXNzIHRoZSBg cHZlOHRvOWAgb3V0cHV0IHNob3VsZG4ndCBiZSBjbHV0dGVyZWQgd2l0aCB0b28gbXVjaApkZXRh aWwsIGJ1dCBtYXliZSBzb21ldGhpbmcgbGlrZSB0aGlzIGNvdWxkIHdvcms6Cgo+IFBWRSA5IHdp bGwgZGlzYWJsZSBhdXRvYWN0aXZhdGlvbiBmb3IgYWxsIG5ld2x5IGNyZWF0ZWQgTFZNIGd1ZXN0 Cj4gdm9sdW1lcy4gUGxlYXNlIHJ1biAncHZlOHRvOSB1cGRhdGVsdm0nIHRvIGRpc2FibGUgYXV0 b2FjdGl2YXRpb24gZm9yCj4gZXhpc3RpbmcgTFZNIGd1ZXN0IHZvbHVtZXMKCkluIGFkZGl0aW9u IHdlIGNhbiBwcm92aWRlIG1vcmUgZGV0YWlscyBpbiB0aGUgdXBncmFkZSBndWlkZS4KCj4gCj4+ ICsJaWYgJG5lZWRzX2ZpeDsKPj4gKwo+PiArICAgIHJldHVybiB1bmRlZjsKPj4gK30KPj4gKwo+ PiAgc3ViIGNoZWNrX21pc2Mgewo+PiAgICAgIHByaW50X2hlYWRlcigiTUlTQ0VMTEFORU9VUyBD SEVDS1MiKTsKPj4gICAgICBteSAkc3NoX2NvbmZpZyA9IGV2YWwgeyBQVkU6OlRvb2xzOjpmaWxl X2dldF9jb250ZW50cygnL3Jvb3QvLnNzaC9jb25maWcnKSB9Owo+PiBAQCAtMTQ3NCw2ICsxNTYz LDcgQEAgc3ViIGNoZWNrX21pc2Mgewo+PiAgICAgIGNoZWNrX252aWRpYV92Z3B1X3NlcnZpY2Uo KTsKPj4gICAgICBjaGVja19ib290bG9hZGVyKCk7Cj4+ICAgICAgY2hlY2tfZGttc19tb2R1bGVz KCk7Cj4+ICsgICAgY2hlY2tfbHZtX2F1dG9hY3RpdmF0aW9uKCk7Cj4+ICB9Cj4+ICAKPj4gIG15 IHN1YiBjb2xvcmVkX2lmIHsKPj4gQEAgLTE1MzgsOCArMTYyOCw2OCBAQCBfX1BBQ0tBR0VfXy0+ cmVnaXN0ZXJfbWV0aG9kICh7Cj4+ICAJcmV0dXJuIHVuZGVmOwo+PiAgICAgIH19KTsKPj4gIAo+ PiArX19QQUNLQUdFX18tPnJlZ2lzdGVyX21ldGhvZCAoewo+PiArICAgIG5hbWUgPT4gJ3VwZGF0 ZWx2bScsCj4+ICsgICAgcGF0aCA9PiAndXBkYXRlbHZtJywKPj4gKyAgICBtZXRob2QgPT4gJ1BP U1QnLAo+PiArICAgIGRlc2NyaXB0aW9uID0+ICdkaXNhYmxlIGF1dG9hY3RpdmF0aW9uIGZvciBh bGwgTFZNIGd1ZXN0IHZvbHVtZXMnLAo+PiArICAgIHBhcmFtZXRlcnMgPT4gewo+PiArCWFkZGl0 aW9uYWxQcm9wZXJ0aWVzID0+IDAsCj4+ICsgICAgfSwKPj4gKyAgICByZXR1cm5zID0+IHsgdHlw ZSA9PiAnbnVsbCcgfSwKPj4gKyAgICBjb2RlID0+IHN1YiB7Cj4+ICsJbXkgKCRwYXJhbSkgPSBA XzsKPj4gKwo+PiArCW15ICRkaWRfd29yayA9IDA7Cj4+ICsJZXZhbCB7Cj4+ICsJICAgICRmb3Jl YWNoX2x2bV92Z193aXRoX2F1dG9hY3RpdmF0ZWRfZ3Vlc3Rfdm9sdW1lcy0+KDEsIHN1YiB7Cj4+ ICsJCW15ICgkc3RvcmVpZCwgJHZnbmFtZSwgJGF1dG9hY3RpdmF0ZWRfbHZzKSA9IEBfOwo+PiAr Cj4+ICsJCWlmIChzY2FsYXIoQCRhdXRvYWN0aXZhdGVkX2x2cykgPT0gMCkgewo+PiArCQkgICAg bG9nX3Bhc3MoImFsbCBndWVzdCB2b2x1bWVzIG9uIHN0b3JhZ2UgJyRzdG9yZWlkJyBoYXZlIGF1 dG9hY3RpdmF0aW9uIGRpc2FibGVkIik7Cj4+ICsJCSAgICByZXR1cm47Cj4+ICsJCX0KPj4gKwo+ PiArCQlsb2dfaW5mbygiZGlzYWJsaW5nIGF1dG9hY3RpdmF0aW9uIG9uIHN0b3JhZ2UgJyRzdG9y ZWlkJy4uLiIpOwo+PiArCQlkaWUgInVuZXhwZWN0ZWQgZW1wdHkgVkcgbmFtZSAoc3RvcmFnZSAn JHN0b3JlaWQnKVxuIiBpZiAhJHZnbmFtZTsKPj4gKwo+PiArCQlmb3IgbXkgJGx2bmFtZSAoQCRh dXRvYWN0aXZhdGVkX2x2cykgewo+PiArCQkgICAgbG9nX2luZm8oImRpc2FibGluZyBhdXRvYWN0 aXZhdGlvbiBmb3IgJHZnbmFtZS8kbHZuYW1lIgo+PiArCQkJLiIgb24gc3RvcmFnZSAnJHN0b3Jl aWQnLi4uIik7Cj4+ICsJCSAgICBteSAkY21kID0gWwo+PiArCQkJJy9zYmluL2x2Y2hhbmdlJywK Pj4gKwkJCSctLXNldGF1dG9hY3RpdmF0aW9uJywgJ24nLAo+PiArCQkJIiR2Z25hbWUvJGx2bmFt ZSIsCj4+ICsJCSAgICBdOwo+PiArCj4+ICsJCSAgICBldmFsIHsgcnVuX2NvbW1hbmQoJGNtZCk7 IH07Cj4+ICsJCSAgICBteSAkZXJyID0gJEA7Cj4+ICsJCSAgICBkaWUgImNvdWxkIG5vdCBkaXNh YmxlIGF1dG9hY3RpdmF0aW9uIG9uICR2Z25hbWUvJGx2bmFtZTogJGVyclxuIiBpZiAkZXJyOwo+ PiArCj4+ICsJCSAgICAkZGlkX3dvcmsgPSAxOwo+PiArCQl9Cj4+ICsJICAgIH0pOwo+PiArCX07 Cj4+ICsJbXkgJGVyciA9ICRAOwo+PiArCWlmICgkZXJyKSB7Cj4+ICsJICAgIGxvZ19mYWlsKCJj b3VsZCBub3QgZGlzYWJsZSBhdXRvYWN0aXZhdGlvbiBvbiBlbmFibGVkIGFuZCBhY3RpdmUgTFZN IHN0b3JhZ2VzIik7Cj4+ICsJICAgIGRpZSAkZXJyOwo+PiArCX0KPj4gKwo+PiArCWlmKCRkaWRf d29yaykgewo+PiArCSAgICBsb2dfcGFzcygic3VjY2Vzc2Z1bGx5IGRpc2FibGVkIGF1dG9hY3Rp dmF0aW9uIG9uIGd1ZXN0IHZvbHVtZXMgb24gYWxsIgo+PiArCQkuIiBlbmFibGVkIGFuZCBhY3Rp dmUgTFZNIHN0b3JhZ2VzIik7Cj4+ICsJfSBlbHNlIHsKPj4gKwkgICAgbG9nX3Bhc3MoImFsbCBn dWVzdCB2b2x1bWVzIG9uIGVuYWJsZWQgYW5kIGFjdGl2ZSBMVk0gc3RvcmFnZXMiCj4+ICsJCS4i IGhhdmUgYXV0b2FjdGl2YXRpb24gZGlzYWJsZWQiKTsKPj4gKwl9Owo+PiArCj4+ICsJcmV0dXJu IHVuZGVmOwo+PiArICAgIH19KTsKPj4gKwo+PiAgb3VyICRjbWRkZWYgPSB7Cj4+ICAgICAgY2hl Y2tsaXN0ID0+IFsgX19QQUNLQUdFX18sICdjaGVja2xpc3QnLCBbXV0sCj4+ICsgICAgdXBkYXRl bHZtID0+IFsgX19QQUNLQUdFX18sICd1cGRhdGVsdm0nLCBbXV0sCj4+ICB9Owo+PiAgCj4+ICAx Owo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpw dmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczov L2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK