From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 0E0701FF396 for ; Thu, 23 May 2024 12:40:31 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 965AF1DAEC; Thu, 23 May 2024 12:40:48 +0200 (CEST) Message-ID: Date: Thu, 23 May 2024 12:40:13 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta To: Proxmox VE development discussion , =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= References: <20240429112124.3819357-1-d.csapak@proxmox.com> <20240429112124.3819357-4-d.csapak@proxmox.com> <1716368203.2z0b0jtzn8.astroid@yuna.none> Content-Language: en-US From: Dominik Csapak In-Reply-To: <1716368203.2z0b0jtzn8.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.384 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, storage.pm, dmtf.org, guestimport.pm, diskmanage.pm, cephconfig.pm, ovf.pm, status.pm, plugin.pm, dirplugin.pm] Subject: Re: [pve-devel] [PATCH storage v3 03/10] plugin: dir: handle ova files for import X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" T24gNS8yMi8yNCAxMjowOCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBPbiBBcHJpbCAy OSwgMjAyNCAxOjIxIHBtLCBEb21pbmlrIENzYXBhayB3cm90ZToKPj4gc2luY2Ugd2Ugd2FudCB0 byBoYW5kbGUgb3ZhIGZpbGVzICh3aGljaCBhcmUgb25seSBvdmYraW1hZ2VzIGJ1bmRsZWQgaW4K Pj4gYSB0YXIgZmlsZSkgZm9yIGltcG9ydCwgYWRkIGNvZGUgdGhhdCBoYW5kbGVzIHRoYXQuCj4+ Cj4+IHdlIGludHJvZHVjZSBhIHZhbGlkIHZvbG5hbWUgZm9yIGZpbGVzIGNvbnRhaW5lZCBpbiBv dmFzIGxpa2UgdGhpczoKPj4KPj4gICBzdG9yYWdlOmltcG9ydC9hcmNoaXZlLm92YS9kaXNrLTEu dm1kawo+Pgo+PiBieSBiYXNpY2FsbHkgdHJlYXRpbmcgdGhlIGxhc3QgcGFydCBvZiB0aGUgcGF0 aCBhcyB0aGUgbmFtZSBmb3IgdGhlCj4+IGNvbnRhaW5lZCBkaXNrIHdlIHdhbnQuCj4+Cj4+IGlu IHRoYXQgY2FzZSB3ZSByZXR1cm4gJ2ltcG9ydCcgYXMgdHlwZSB3aXRoICd2bWRrL3Fjb3cyL3Jh dycgYXMgZm9ybWF0Cj4+ICh3ZSBjYW5ub3QgdXNlIHNvbWV0aGluZyBsaWtlICdvdmErdm1kaycg d2l0aG91dCBleHRlbmRpbmcgdGhlICdmb3JtYXQnCj4+IHBhcnNpbmcgdG8gdGhhdCBmb3IgYWxs IHN0b3JhZ2VzL2Zvcm1hdHMuIFRoaXMgaXMgYmVjYXVzZSBpdCBydW5zCj4+IHRob3VnaCBhIHZl cmlmeSBmb3JtYXQgY2hlY2sgYXQgbGVhc3Qgb25jZSkKPj4KPj4gd2UgdGhlbiBwcm92aWRlIDMg ZnVuY3Rpb25zIHRvIHVzZSBmb3IgdGhhdDoKPj4KPj4gKiBjb3B5X25lZWRzX2V4dHJhY3Rpb246 IGRldGVybWluZXMgZnJvbSB0aGUgZ2l2ZW4gdm9saWQgKGxpa2UgYWJvdmUpIGlmCj4+ICAgIHRo YXQgbmVlZHMgZXh0cmFjdGlvbiB0byBjb3B5IGl0LCBjdXJyZW50bHkgb25seSAnaW1wb3J0JyB2 dHlwZSArIGEKPj4gICAgdm9saWQgd2l0aCB0aGUgYWJvdmUgZm9ybWF0IHJldHVybnMgdHJ1ZQo+ Pgo+PiAqIGV4dHJhY3RfZGlza19mcm9tX2ltcG9ydF9maWxlOiB0aGlzIGFjdHVhbGx5IGV4dHJh Y3RzIHRoZSBmaWxlIGZyb20KPj4gICAgdGhlIGFyY2hpdmUuIEN1cnJlbnRseSBvbmx5IG92YSBp cyBzdXBwb3J0ZWQsIHNvIHRoZSBleHRyYWN0aW9uIHdpdGgKPj4gICAgJ3RhcicgaXMgaGFyZGNv ZGVkLCBidXQgYWdhaW4gd2UgY2FuIGVhc2lseSBleHRlbmQvbW9kaWZ5IHRoYXQgc2hvdWxkCj4+ ICAgIHdlIG5lZWQgdG8uCj4+Cj4+ICAgIHdlIGN1cnJlbnRseSBleHRyYWN0IGludG8gdGhlIGVp dGhlciB0aGUgaW1wb3J0IHN0b3JhZ2Ugb3IgYSBnaXZlbgo+PiAgICB0YXJnZXQgc3RvcmFnZSBp biB0aGUgaW1hZ2VzIGRpcmVjdG9yeSBzbyBpZiB0aGUgY2xlYW51cCBkb2VzIG5vdAo+PiAgICBo YXBwZW4sIHRoZSB1c2VyIGNhbiBzdGlsbCBzZWUgYW5kIGludGVyYWN0IHdpdGggdGhlIGltYWdl IHZpYQo+PiAgICBhcGkvY2xpL2d1aQo+Pgo+PiAqIGNsZWFudXBfZXh0cmFjdGVkX2ltYWdlOiBp bnRlbmRlZCB0byBjbGVhbnVwIHRoZSBleHRyYWN0ZWQgaW1hZ2VzIGZyb20KPj4gICAgYWJvdmUK Pj4KPj4gd2UgaGF2ZSB0byBtb2RpZnkgdGhlIGBwYXJzZV9vdmZgIGEgYml0IHRvIGhhbmRsZSB0 aGUgbWlzc2luZyBkaXNrCj4+IGltYWdlcywgYW5kIHdlIHBhcnNlIHRoZSBzaXplIG91dCBvZiB0 aGUgb3ZmIHBhcnQgKHNpbmNlIHRoaXMgaXMKPj4gaW5mb3JtYWwgb25seSwgaXQgc2hvdWxkIGJl IG5vIHByb2JsZW0gaWYgd2UgY2Fubm90IHBhcnNlIGl0IHNvbWV0aW1lcykKPj4KPj4gU2lnbmVk LW9mZi1ieTogRG9taW5payBDc2FwYWsgPGQuY3NhcGFrQHByb3htb3guY29tPgo+PiAtLS0KPj4g ICBzcmMvUFZFL0FQSTIvU3RvcmFnZS9TdGF0dXMucG0gfCAgIDEgKwo+PiAgIHNyYy9QVkUvR3Vl c3RJbXBvcnQucG0gICAgICAgICB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4gICBzcmMvUFZFL0d1ZXN0SW1wb3J0L09WRi5wbSAgICAgfCAgNTMgKysrKysrKysrKysr KystLS0KPj4gICBzcmMvUFZFL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAgIHNy Yy9QVkUvU3RvcmFnZS5wbSAgICAgICAgICAgICB8ICAgMiArLQo+PiAgIHNyYy9QVkUvU3RvcmFn ZS9EaXJQbHVnaW4ucG0gICB8ICAxNSArKysrLQo+PiAgIHNyYy9QVkUvU3RvcmFnZS9QbHVnaW4u cG0gICAgICB8ICAgNSArKwo+PiAgIHNyYy90ZXN0L3BhcnNlX3ZvbG5hbWVfdGVzdC5wbSB8ICAx NSArKysrKwo+PiAgIDggZmlsZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0 aW9ucygtKQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvUFZFL0d1ZXN0SW1wb3J0LnBtCj4+ Cj4+IGRpZmYgLS1naXQgYS9zcmMvUFZFL0FQSTIvU3RvcmFnZS9TdGF0dXMucG0gYi9zcmMvUFZF L0FQSTIvU3RvcmFnZS9TdGF0dXMucG0KPj4gaW5kZXggZGM2Y2M2OS4uYWNkZTczMCAxMDA2NDQK Pj4gLS0tIGEvc3JjL1BWRS9BUEkyL1N0b3JhZ2UvU3RhdHVzLnBtCj4+ICsrKyBiL3NyYy9QVkUv QVBJMi9TdG9yYWdlL1N0YXR1cy5wbQo+PiBAQCAtNzQ5LDYgKzc0OSw3IEBAIF9fUEFDS0FHRV9f LT5yZWdpc3Rlcl9tZXRob2Qoewo+PiAgIAkJCQknZWZpLXN0YXRlLWxvc3QnLAo+PiAgIAkJCQkn Z3Vlc3QtaXMtcnVubmluZycsCj4+ICAgCQkJCSdudm1lLXVuc3VwcG9ydGVkJywKPj4gKwkJCQkn b3ZhLW5lZWRzLWV4dHJhY3RpbmcnLAo+PiAgIAkJCQknb3ZtZi13aXRoLWxzaS11bnN1cHBvcnRl ZCcsCj4+ICAgCQkJCSdzZXJpYWwtcG9ydC1zb2NrZXQtb25seScsCj4+ICAgCQkJICAgIF0sCj4+ IGRpZmYgLS1naXQgYS9zcmMvUFZFL0d1ZXN0SW1wb3J0LnBtIGIvc3JjL1BWRS9HdWVzdEltcG9y dC5wbQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5kNDA1ZTMwCj4+ IC0tLSAvZGV2L251bGwKPj4gKysrIGIvc3JjL1BWRS9HdWVzdEltcG9ydC5wbQo+PiBAQCAtMCww ICsxLDEwMCBAQAo+PiArcGFja2FnZSBQVkU6Okd1ZXN0SW1wb3J0Owo+PiArCj4+ICt1c2Ugc3Ry aWN0Owo+PiArdXNlIHdhcm5pbmdzOwo+PiArCj4+ICt1c2UgRmlsZTo6UGF0aDsKPj4gKwo+PiAr dXNlIFBWRTo6U3RvcmFnZTsKPiAKPiBhbm90aGVyIGNpcmN1bGFyIG1vZHVsZSBkZXBlbmRlbmN5 Li4KPiAKCndoeSBkbyB5b3UgdGhpbmsgc28/IG5vdGhpbmcgaW4gc3RvcmFnZSBpcyB1c2luZyBQ VkU6Okd1ZXN0SW1wb3J0IG9ubHkgUFZFOjpHdWVzdEltcG9ydDo6T1ZGID8KCj4+ICt1c2UgUFZF OjpUb29scyBxdyhydW5fY29tbWFuZCk7Cj4+ICsKPj4gK3N1YiBjb3B5X25lZWRzX2V4dHJhY3Rp b24gewo+PiArICAgIG15ICgkdm9saWQpID0gQF87Cj4+ICsgICAgbXkgJGNmZyA9IFBWRTo6U3Rv cmFnZTo6Y29uZmlnKCk7Cj4+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsIHVuZGVmLCB1bmRlZiwg dW5kZWYsIHVuZGVmLCAkZm10KSA9IFBWRTo6U3RvcmFnZTo6cGFyc2Vfdm9sbmFtZSgkY2ZnLCAk dm9saWQpOwo+PiArCj4+ICsgICAgIyBvbmx5IHZvbHVtZXMgaW5zaWRlIG92YXMgbmVlZCBleHRy YWN0aW9uCj4+ICsgICAgcmV0dXJuICR2dHlwZSBlcSAnaW1wb3J0JyAmJiAkZm10ID1+IG0vXm92 YVwrKC4qKSQvOwo+PiArfQo+IAo+IHRoaXMgY291bGQganVzdCBhcyB3ZWxsIGxpdmUgaW4gcWVt dS1zZXJ2ZXIsIHRoZXJlJ3Mgb25seSB0d28gY2FsbCBzaXRlcwo+IGluIG9uZSBtb2R1bGUgdGhl cmUuLiBvbmUgb2YgdGhlbSBldmVuIGFscmVhZHkgaGFzIHRoZSBwYXJzZWQgdm9sbmFtZSA7KQoK dHJ1ZQoKPiAKPj4gKwo+PiArc3ViIGV4dHJhY3RfZGlza19mcm9tX2ltcG9ydF9maWxlIHsKPiAK PiBJIGRvbid0IHJlYWxseSBsaWtlIHRoYXQgdGhpcyBpcyB1c2luZyBsb3RzIG9mIHBsdWdpbiBz dHVmZi4uCj4gCj4+ICsgICAgbXkgKCR2b2xpZCwgJHZtaWQsICR0YXJnZXRfc3RvcmVpZCkgPSBA XzsKPj4gKwo+PiArICAgIG15ICgkc291cmNlX3N0b3JlaWQsICR2b2xuYW1lKSA9IFBWRTo6U3Rv cmFnZTo6cGFyc2Vfdm9sdW1lX2lkKCR2b2xpZCk7Cj4+ICsgICAgJHRhcmdldF9zdG9yZWlkIC8v PSAkc291cmNlX3N0b3JlaWQ7Cj4+ICsgICAgbXkgJGNmZyA9IFBWRTo6U3RvcmFnZTo6Y29uZmln KCk7Cj4+ICsgICAgbXkgJHNvdXJjZV9zY2ZnID0gUFZFOjpTdG9yYWdlOjpzdG9yYWdlX2NvbmZp ZygkY2ZnLCAkc291cmNlX3N0b3JlaWQpOwo+PiArICAgIG15ICRzb3VyY2VfcGx1Z2luID0gUFZF OjpTdG9yYWdlOjpQbHVnaW4tPmxvb2t1cCgkc291cmNlX3NjZmctPnt0eXBlfSk7Cj4+ICsKPj4g KyAgICBteSAoJHZ0eXBlLCAkbmFtZSwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsICRmbXQp ID0KPj4gKwkkc291cmNlX3BsdWdpbi0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7Cj4gCj4gY291 bGQgYmUgUFZFOjpTdG9yYWdlOjpwYXJzZV92b2xuYW1lCj4gCj4+ICsKPj4gKyAgICBkaWUgIm9u bHkgZmlsZXMgd2l0aCBjb250ZW50IHR5cGUgJ2ltcG9ydCcgY2FuIGJlIGV4dHJhY3RlZFxuIgo+ PiArCWlmICR2dHlwZSBuZSAnaW1wb3J0JyB8fCAkZm10ICF+IG0vXm92YVwrLzsKPj4gKwo+PiAr ICAgICMgZXh0cmFjdCB0aGUgaW5uZXIgZmlsZSBmcm9tIHRoZSBuYW1lCj4+ICsgICAgbXkgJGFy Y2hpdmU7Cj4+ICsgICAgbXkgJGlubmVyX2ZpbGU7Cj4+ICsgICAgaWYgKCRuYW1lID1+IG0hXigu Klwub3ZhKS8oJHtQVkU6OlN0b3JhZ2U6OlNBRkVfQ0hBUl9DTEFTU19SRX0rKSQhKSB7Cj4+ICsJ JGFyY2hpdmUgPSAiaW1wb3J0LyQxIjsKPj4gKwkkaW5uZXJfZmlsZSA9ICQyOwo+PiArCSgkZm10 KSA9ICRmbXQgPX4gL15vdmFcKyguKikkLzsKPj4gKyAgICB9IGVsc2Ugewo+PiArCWRpZSAiY2Fu bm90IGV4dHJhY3QgJHZvbGlkIC0gaW52YWxpZCB2b2xuYW1lICR2b2xuYW1lXG4iOwo+PiArICAg IH0KPj4gKwo+PiArICAgIG15ICgkb3ZhX3BhdGgpID0gJHNvdXJjZV9wbHVnaW4tPnBhdGgoJHNv dXJjZV9zY2ZnLCAkYXJjaGl2ZSwgJHNvdXJjZV9zdG9yZWlkKTsKPiAKPiBjb3VsZCBiZSBQVkU6 OlN0b3JhZ2U6OnBhdGgKPiAKPj4gKwo+PiArICAgIG15ICR0YXJnZXRfc2NmZyA9IFBWRTo6U3Rv cmFnZTo6c3RvcmFnZV9jb25maWcoJGNmZywgJHRhcmdldF9zdG9yZWlkKTsKPj4gKyAgICBteSAk dGFyZ2V0X3BsdWdpbiA9IFBWRTo6U3RvcmFnZTo6UGx1Z2luLT5sb29rdXAoJHRhcmdldF9zY2Zn LT57dHlwZX0pOwo+PiArCj4+ICsgICAgbXkgJGRlc3RkaXIgPSAkdGFyZ2V0X3BsdWdpbi0+Z2V0 X3N1YmRpcigkdGFyZ2V0X3NjZmcsICdpbWFnZXMnKTsKPiAKPiBjb3VsZCBiZSBQVkU6OlN0b3Jh Z2U6OmdldF9pbWFnZV9kaXIKPiAKPj4gKwo+PiArICAgIG15ICRwaWQgPSAkJDsKPj4gKyAgICAk ZGVzdGRpciAuPSAiL3RtcF8ke3BpZH1fJHt2bWlkfSI7Cj4+ICsgICAgbWtwYXRoICRkZXN0ZGly Owo+PiArCj4+ICsgICAgKCRvdmFfcGF0aCkgPSAkb3ZhX3BhdGggPX4gbXxeKC4qKSR8OyAjIHVu dGFpbnQKPj4gKwo+PiArICAgIG15ICRzb3VyY2VfcGF0aCA9ICIkZGVzdGRpci8kaW5uZXJfZmls ZSI7Cj4+ICsgICAgbXkgJHRhcmdldF9wYXRoOwo+PiArICAgIG15ICR0YXJnZXRfdm9sbmFtZTsK Pj4gKyAgICBldmFsIHsKPj4gKwlydW5fY29tbWFuZChbJ3RhcicsICcteCcsICctLWZvcmNlLWxv Y2FsJywgJy1DJywgJGRlc3RkaXIsICctZicsICRvdmFfcGF0aCwgJGlubmVyX2ZpbGVdKTsKPj4g Kwo+PiArCSMgY2hlY2sgZm9yIHN5bWxpbmtzIGFuZCBvdGhlciBub24gcmVndWxhciBmaWxlcwo+ PiArCWlmICgtbCAkc291cmNlX3BhdGggfHwgISAtZiAkc291cmNlX3BhdGgpIHsKPj4gKwkgICAg ZGllICJvbmx5IHJlZ3VsYXIgZmlsZXMgYXJlIGFsbG93ZWRcbiI7Cj4+ICsJfQo+PiArCj4+ICsJ bXkgJHRhcmdldF9kaXNrbmFtZQo+PiArCSAgICA9ICR0YXJnZXRfcGx1Z2luLT5maW5kX2ZyZWVf ZGlza25hbWUoJHRhcmdldF9zdG9yZWlkLCAkdGFyZ2V0X3NjZmcsICR2bWlkLCAkZm10LCAxKTsK PiAKPiB0aGVzZSBoZXJlIHJlcXVpcmVzIGhvbGRpbmcgYSBsb2NrIHVudGlsIHRoZSBkaXNrbmFt ZSBpcyBhY3R1YWxseSB1c2VkCj4gKHRoZSByZW5hbWUgYmVsb3cpLCBlbHNlIGl0J3MgcmFjZXku LgoKd2UgZG8gaGF2ZSBhIGxvY2sgb3ZlciB2bSBjcmVhdGlvbiBpbiB0aGUgb25seSBwYXRoIHRo aXMgaXMgY2FsbGVkIGFuZCBpdCBpcyB2bWlkIHNwZWNpZmljLi4uCnNvIGlzIHRoaXMgcmVhbGx5 IGEgcHJvYmxlbT8KCj4gCj4+ICsJJHRhcmdldF92b2xuYW1lID0gIiR2bWlkLyIgLiAkdGFyZ2V0 X2Rpc2tuYW1lOwo+IAo+IHRoaXMgZW5jb2RlcyBhIGZhY3QgYWJvdXQgdm9sbmFtZSBzZW1hbnRp Y3MgdGhhdCBtaWdodCBub3QgYmUgYSBnaXZlbgo+IGZvciBleHRlcm5hbCwgZGlyLWJhc2VkIHBs dWdpbnMgKG5vdCBzdXJlIGlmIHdlIHdhbnQgdG8gd29ycnkgYWJvdXQgdGhhdAo+IHRob3VnaCwg b3IgaG93IHRvIGF2b2lkIGl0IDspKS4KCmkgbWVhbiB3ZSBjb3VsZCBjYWxsICdhbGxvYycgd2l0 aCBhIHZlcnkgc21hbGwgc2l6ZSBpbnN0ZWFkCmFuZCBzaW1wbHkgIm92ZXJ3cml0ZSIgaXQ/IHRo ZW4gd2UnZCBhbHNvIGdldCBhcm91bmQgdGhpbmdzIGxpa2UKbWtwYXRoIGFuZCBpbWFnZWRpciBl dGMuCgo+IAo+PiArCSR0YXJnZXRfcGF0aCA9ICR0YXJnZXRfcGx1Z2luLT5maWxlc3lzdGVtX3Bh dGgoJHRhcmdldF9zY2ZnLCAkdGFyZ2V0X3ZvbG5hbWUpOwo+IAo+IHRoaXMgc2hvdWxkIGJlIGVx dWl2YWxlbnQgdG8gUFZFOjpTdG9yYWdlOjpwYXRoIGZvciBEaXJQbHVnaW4gYmFzZWQKPiBzdG9y YWdlcz8KPiAKPj4gKwo+PiArCXByaW50ICJyZW5hbWluZyAkc291cmNlX3BhdGggdG8gJHRhcmdl dF9wYXRoXG4iOwo+PiArCW15ICRpbWFnZWRpciA9ICR0YXJnZXRfcGx1Z2luLT5nZXRfc3ViZGly KCR0YXJnZXRfc2NmZywgJ2ltYWdlcycpOwo+IAo+IHdlIGFscmVhZHkgZGlkIHRoaXMgYWJvdmUs IGJ1dCBzZWUgY29tbWVudCB0aGVyZSA7KQoKdHJ1ZSA7KQoKPiAKPj4gKwlta3BhdGggIiRpbWFn ZWRpci8kdm1pZCI7Cj4+ICsKPj4gKwlyZW5hbWUoJHNvdXJjZV9wYXRoLCAkdGFyZ2V0X3BhdGgp IG9yIGRpZSAidW5hYmxlIHRvIG1vdmUgLSAkIVxuIjsKPj4gKyAgICB9Owo+PiArICAgIGlmICht eSAkZXJyID0gJEApIHsKPj4gKwl1bmxpbmsgJHNvdXJjZV9wYXRoOwo+PiArCXVubGluayAkdGFy Z2V0X3BhdGggaWYgZGVmaW5lZCgkdGFyZ2V0X3BhdGgpOwo+IAo+IGlzbid0IHRoaXMgcHJldHR5 IG11Y2ggaW1wb3NzaWJsZSB0byBoYXBwZW4/IHRoZSBsYXN0IHRoaW5nIHdlIGRvIGluIHRoZQo+ IGV2YWwgYmxvY2sgaXMgdGhlIHJlbmFtZSAtIGlmIHRoYXQgZmFpbGVkLCAkdGFyZ2V0X3BhdGgg Y2FuJ3QgZXhpc3QgeWV0Lgo+IGlmIGl0IGRpZG4ndCBmYWlsLCB3ZSBjYW4ndCBlbmQgdXAgaGVy ZT8KCnRoYXQgcHJvYmFibHkgZGVwZW5kcyBvbiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIG5v PyBub3QKZXZlcnkgZnMgaGFzIHBvc2l4IHJlbmFtZSBzZW1hbnRpY3MgaSBndWVzcz8KCmluIHRo YXQgY2FzZSB3ZSdkIGNsZWFudXAgdGhlIGZpbGUsIGFuZCBpZiBpdCBkb2VzIG5vdCBleGlzdHMs IGl0IGRvZXNuJ3QgaHVydApidXQKCj4gCj4+ICsJcm1kaXIgJGRlc3RkaXI7Cj4gCj4gdGhpcyBh bmQgdW5saW5rICRzb3VyY2VfcGF0aCBjb3VsZCBqdXN0IGJlIGEgcmVtb3ZlX3RyZWUgb24gJGRl c3RkaXIKPiBpbnN0ZWFkLCB3aXRoIGxlc3MgY2hhbmNlcyBvZiBsZWF2aW5nIHN0dWZmIGFyb3Vu ZD8KCnRoaXMgaXMgdHJ1ZSBvZiBjb3Vyc2UgYW5kIHJlbW92ZXMgdGhlIGlzc3VlIGFib3ZlCgo+ IAo+PiArCWRpZSAiZXJyb3IgZHVyaW5nIGV4dHJhY3Rpb246ICRlcnJcbiI7Cj4+ICsgICAgfQo+ PiArCj4+ICsgICAgcm1kaXIgJGRlc3RkaXI7Cj4gCj4gY291bGQgYWxzbyBiZSBhIHJlbW92ZV90 cmVlLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGU/Cgp5dXAKCj4gCj4+ICsKPj4gKyAgICBy ZXR1cm4gIiR0YXJnZXRfc3RvcmVpZDokdGFyZ2V0X3ZvbG5hbWUiOwo+PiArfQo+PiArCj4+ICtz dWIgY2xlYW51cF9leHRyYWN0ZWRfaW1hZ2Ugewo+PiArICAgIG15ICgkc291cmNlKSA9IEBfOwo+ PiArCj4+ICsgICAgbXkgJGNmZyA9IFBWRTo6U3RvcmFnZTo6Y29uZmlnKCk7Cj4+ICsgICAgUFZF OjpTdG9yYWdlOjp2ZGlza19mcmVlKCRjZmcsICRzb3VyY2UpOwo+PiArfQo+IAo+IHdoeSBkbyB3 ZSBuZWVkIHRoaXMgaGVscGVyLCBhbmQgbm90IGp1c3QgY2FsbCB2ZGlza19mcmVlIGRpcmVjdGx5 IGluCj4gcWVtdS1zZXJ2ZXIgKHdlIGRvIHRoYXQgaW4gdG9ucyBvZiBwbGFjZXMgdGhlcmUgYXMg cGFydCBvZiBlcnJvcgo+IGhhbmRsaW5nIGZvciBmcmVzaGx5IGFsbG9jYXRlZCB2b2x1bWVzKT8K Cm9rIG1ha2VzIHNlbnNlCgo+IAo+PiArCj4+ICsxOwo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9H dWVzdEltcG9ydC9PVkYucG0gYi9zcmMvUFZFL0d1ZXN0SW1wb3J0L09WRi5wbQo+PiBpbmRleCAw ZWI1ZTljLi42Yjc5MDc4IDEwMDY0NAo+PiAtLS0gYS9zcmMvUFZFL0d1ZXN0SW1wb3J0L09WRi5w bQo+PiArKysgYi9zcmMvUFZFL0d1ZXN0SW1wb3J0L09WRi5wbQo+PiBAQCAtODUsMTEgKzg1LDM3 IEBAIHN1YiBpZF90b19wdmUgewo+PiAgICAgICB9Cj4+ICAgfQo+PiAgIAo+PiArIyB0ZWNobmlj YWxseSBkZWZpbmVkIGluIERTUDAwMDQgKGh0dHBzOi8vd3d3LmRtdGYub3JnL2RzcC9EU1AwMDA0 KSBhcyBhbiBBQk5GCj4+ICsjIGJ1dCByZWFsaXN0aWNhbGx5IHRoaXMgYWx3YXlzIHRha2VzIHRo ZSBmb3JtIG9mICdieXRlICogYmFzZV5leHBvbmVudCcKPj4gK3N1YiB0cnlfcGFyc2VfY2FwYWNp dHlfdW5pdCB7Cj4+ICsgICAgbXkgKCR1bml0X3RleHQpID0gQF87Cj4+ICsKPj4gKyAgICBpZiAo JHVuaXRfdGV4dCA9fiBtL15ccypieXRlXHMqXCpccyooWzAtOV0rKVxzKlxeXHMqKFswLTldKylc cyokLykgewo+PiArCW15ICRiYXNlID0gJDE7Cj4+ICsJbXkgJGV4cCA9ICQyOwo+PiArCXJldHVy biAkYmFzZSAqKiAkZXhwOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiB1bmRlZjsKPj4g K30KPj4gKwo+PiAgICMgcmV0dXJucyB0d28gcmVmZXJlbmNlcywgJHFtIHdoaWNoIGhvbGRzIHFt LmNvbmYgc3R5bGUga2V5L3ZhbHVlcywgYW5kIFxAZGlza3MKPj4gICBzdWIgcGFyc2Vfb3ZmIHsK Pj4gLSAgICBteSAoJG92ZiwgJGRlYnVnKSA9IEBfOwo+PiArICAgIG15ICgkb3ZmLCAkaXNPdmEs ICRkZWJ1ZykgPSBAXzsKPj4gKwo+PiArICAgICMgd2UgaGF2ZSB0byBpZ25vcmUgbWlzc2luZyBk aXNrIGltYWdlcyBmb3Igb3ZhCj4+ICsgICAgbXkgJGRvbTsKPj4gKyAgICBpZiAoJGlzT3ZhKSB7 Cj4+ICsJbXkgJHJhdyA9ICIiOwo+PiArCVBWRTo6VG9vbHM6OnJ1bl9jb21tYW5kKFsndGFyJywg Jy14TycsICctLXdpbGRjYXJkcycsICctLW9jY3VycmVuY2U9MScsICctZicsICRvdmYsICcqLm92 ZiddLCBvdXRmdW5jID0+IHN1YiB7Cj4+ICsJICAgIG15ICRsaW5lID0gc2hpZnQ7Cj4+ICsJICAg ICRyYXcgLj0gJGxpbmU7Cj4+ICsJfSk7Cj4+ICsJJGRvbSA9IFhNTDo6TGliWE1MLT5sb2FkX3ht bChzdHJpbmcgPT4gJHJhdywgbm9fYmxhbmtzID0+IDEpOwo+PiArICAgIH0gZWxzZSB7Cj4+ICsJ JGRvbSA9IFhNTDo6TGliWE1MLT5sb2FkX3htbChsb2NhdGlvbiA9PiAkb3ZmLCBub19ibGFua3Mg PT4gMSk7Cj4+ICsgICAgfQo+PiAgIAo+PiAtICAgIG15ICRkb20gPSBYTUw6OkxpYlhNTC0+bG9h ZF94bWwobG9jYXRpb24gPT4gJG92Ziwgbm9fYmxhbmtzID0+IDEpOwo+PiAgIAo+PiAgICAgICAj IHJlZ2lzdGVyIHRoZSB4bWwgbmFtZXNwYWNlcyBpbiBhIHhwYXRoIGNvbnRleHQgb2JqZWN0Cj4+ ICAgICAgICMgJ292ZicgaXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIHNvIGl0IHdpbGwgcHJlcGVu ZGVkIHRvIGVhY2ggeG1sIGVsZW1lbnQKPj4gQEAgLTE3Nyw3ICsyMDMsMTcgQEAgc3ViIHBhcnNl X292ZiB7Cj4+ICAgCSMgQCBuZWVkcyB0byBiZSBlc2NhcGVkIHRvIHByZXZlbnQgUGVybCBkb3Vi bGUgcXVvdGUgaW50ZXJwb2xhdGlvbgo+PiAgIAlteSAkeHBhdGhfZmluZF9maWxlcmVmID0gc3By aW50ZigiL292ZjpFbnZlbG9wZS9vdmY6RGlza1NlY3Rpb24vXAo+PiAgIG92ZjpEaXNrW1xAb3Zm OmRpc2tJZD0nJXMnXS9cQG92ZjpmaWxlUmVmIiwgJGRpc2tfaWQpOwo+PiArCW15ICR4cGF0aF9m aW5kX2NhcGFjaXR5ID0gc3ByaW50ZigiL292ZjpFbnZlbG9wZS9vdmY6RGlza1NlY3Rpb24vXAo+ PiArb3ZmOkRpc2tbXEBvdmY6ZGlza0lkPSclcyddL1xAb3ZmOmNhcGFjaXR5IiwgJGRpc2tfaWQp Owo+PiArCW15ICR4cGF0aF9maW5kX2NhcGFjaXR5X3VuaXQgPSBzcHJpbnRmKCIvb3ZmOkVudmVs b3BlL292ZjpEaXNrU2VjdGlvbi9cCj4+ICtvdmY6RGlza1tcQG92ZjpkaXNrSWQ9JyVzJ10vXEBv dmY6Y2FwYWNpdHlBbGxvY2F0aW9uVW5pdHMiLCAkZGlza19pZCk7Cj4+ICAgCW15ICRmaWxlcmVm ID0gJHhwYy0+ZmluZHZhbHVlKCR4cGF0aF9maW5kX2ZpbGVyZWYpOwo+PiArCW15ICRjYXBhY2l0 eSA9ICR4cGMtPmZpbmR2YWx1ZSgkeHBhdGhfZmluZF9jYXBhY2l0eSk7Cj4+ICsJbXkgJGNhcGFj aXR5X3VuaXQgPSAkeHBjLT5maW5kdmFsdWUoJHhwYXRoX2ZpbmRfY2FwYWNpdHlfdW5pdCk7Cj4+ ICsJbXkgJHZpcnR1YWxfc2l6ZTsKPj4gKwlpZiAobXkgJGZhY3RvciA9IHRyeV9wYXJzZV9jYXBh Y2l0eV91bml0KCRjYXBhY2l0eV91bml0KSkgewo+PiArCSAgICAkdmlydHVhbF9zaXplID0gJGNh cGFjaXR5ICogJGZhY3RvcjsKPj4gKwl9Cj4+ICAgCj4+ICAgCW15ICR2YWxpZF91cmxfY2hhcnMg PSBxckAke3ZhbGlkX3VyaXBhdGhfY2hhcnN9fC9AOwo+PiAgIAlpZiAoISRmaWxlcmVmIHx8ICRm aWxlcmVmICF+IG0vXiR7dmFsaWRfdXJsX2NoYXJzfSskLykgewo+PiBAQCAtMjE3LDcgKzI1Myw3 IEBAIG92ZjpJdGVtW3Jhc2Q6SW5zdGFuY2VJRD0nJXMnXS9yYXNkOlJlc291cmNlVHlwZSIsICRj b250cm9sbGVyX2lkKTsKPj4gICAJICAgIGRpZSAiZXJyb3IgcGFyc2luZyAkZmlsZXBhdGgsIGFy ZSB5b3UgdXNpbmcgYSBzeW1saW5rID9cbiI7Cj4+ICAgCX0KPj4gICAKPj4gLQlpZiAoIS1lICRi YWNraW5nX2ZpbGVfcGF0aCkgewo+PiArCWlmICghLWUgJGJhY2tpbmdfZmlsZV9wYXRoICYmICEk aXNPdmEpIHsKPj4gICAJICAgIGRpZSAiZXJyb3IgcGFyc2luZyAkZmlsZXBhdGgsIGZpbGUgc2Vl bXMgbm90IHRvIGV4aXN0IGF0ICRiYWNraW5nX2ZpbGVfcGF0aFxuIjsKPj4gICAJfQo+PiAgIAo+ PiBAQCAtMjI1LDE2ICsyNjEsMTkgQEAgb3ZmOkl0ZW1bcmFzZDpJbnN0YW5jZUlEPSclcyddL3Jh c2Q6UmVzb3VyY2VUeXBlIiwgJGNvbnRyb2xsZXJfaWQpOwo+PiAgIAkoJGZpbGVwYXRoKSA9ICRm aWxlcGF0aCA9fiBtfF4oJHtQVkU6OlN0b3JhZ2U6OlNBRkVfQ0hBUl9DTEFTU19SRX0rKSR8OyAj IHVudGFpbnQgJiBjaGVjayBubyBzdWIvcGFyZW50IGRpcnMKPj4gICAJZGllICJpbnZhbGlkIHBh dGhcbiIgaWYgISRmaWxlcGF0aDsKPj4gICAKPj4gLQlteSAkdmlydHVhbF9zaXplID0gUFZFOjpT dG9yYWdlOjpmaWxlX3NpemVfaW5mbygkYmFja2luZ19maWxlX3BhdGgpOwo+PiAtCWRpZSAiZXJy b3IgcGFyc2luZyAkYmFja2luZ19maWxlX3BhdGgsIGNhbm5vdCBkZXRlcm1pbmUgZmlsZSBzaXpl XG4iCj4+IC0JICAgIGlmICEkdmlydHVhbF9zaXplOwo+PiArCWlmICghJGlzT3ZhKSB7Cj4+ICsJ ICAgIG15ICRzaXplID0gUFZFOjpTdG9yYWdlOjpmaWxlX3NpemVfaW5mbygkYmFja2luZ19maWxl X3BhdGgpOwo+PiArCSAgICBkaWUgImVycm9yIHBhcnNpbmcgJGJhY2tpbmdfZmlsZV9wYXRoLCBj YW5ub3QgZGV0ZXJtaW5lIGZpbGUgc2l6ZVxuIgo+PiArCQlpZiAhJHNpemU7Cj4+ICAgCj4+ICsJ ICAgICR2aXJ0dWFsX3NpemUgPSAkc2l6ZTsKPj4gKwl9Cj4+ICAgCSRwdmVfZGlzayA9IHsKPj4g ICAJICAgIGRpc2tfYWRkcmVzcyA9PiAkcHZlX2Rpc2tfYWRkcmVzcywKPj4gICAJICAgIGJhY2tp bmdfZmlsZSA9PiAkYmFja2luZ19maWxlX3BhdGgsCj4+IC0JICAgIHZpcnR1YWxfc2l6ZSA9PiAk dmlydHVhbF9zaXplCj4+ICAgCSAgICByZWxhdGl2ZV9wYXRoID0+ICRmaWxlcGF0aCwKPj4gICAJ fTsKPj4gKwkkcHZlX2Rpc2stPnt2aXJ0dWFsX3NpemV9ID0gJHZpcnR1YWxfc2l6ZSBpZiBkZWZp bmVkKCR2aXJ0dWFsX3NpemUpOwo+PiAgIAlwdXNoIEBkaXNrcywgJHB2ZV9kaXNrOwo+PiAgIAo+ PiAgICAgICB9Cj4+IGRpZmYgLS1naXQgYS9zcmMvUFZFL01ha2VmaWxlIGIvc3JjL1BWRS9NYWtl ZmlsZQo+PiBpbmRleCBlMTVhMjc1Li4wYWYzMDgxIDEwMDY0NAo+PiAtLS0gYS9zcmMvUFZFL01h a2VmaWxlCj4+ICsrKyBiL3NyYy9QVkUvTWFrZWZpbGUKPj4gQEAgLTUsNiArNSw3IEBAIGluc3Rh bGw6Cj4+ICAgCWluc3RhbGwgLUQgLW0gMDY0NCBTdG9yYWdlLnBtICR7REVTVERJUn0ke1BFUkxE SVJ9L1BWRS9TdG9yYWdlLnBtCj4+ICAgCWluc3RhbGwgLUQgLW0gMDY0NCBEaXNrbWFuYWdlLnBt ICR7REVTVERJUn0ke1BFUkxESVJ9L1BWRS9EaXNrbWFuYWdlLnBtCj4+ICAgCWluc3RhbGwgLUQg LW0gMDY0NCBDZXBoQ29uZmlnLnBtICR7REVTVERJUn0ke1BFUkxESVJ9L1BWRS9DZXBoQ29uZmln LnBtCj4+ICsJaW5zdGFsbCAtRCAtbSAwNjQ0IEd1ZXN0SW1wb3J0LnBtICR7REVTVERJUn0ke1BF UkxESVJ9L1BWRS9HdWVzdEltcG9ydC5wbQo+PiAgIAltYWtlIC1DIFN0b3JhZ2UgaW5zdGFsbAo+ PiAgIAltYWtlIC1DIEd1ZXN0SW1wb3J0IGluc3RhbGwKPj4gICAJbWFrZSAtQyBBUEkyIGluc3Rh bGwKPj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS5w bQo+PiBpbmRleCAxZWQ5MWMyLi5hZGMxYjQ1IDEwMDc1NQo+PiAtLS0gYS9zcmMvUFZFL1N0b3Jh Z2UucG0KPj4gKysrIGIvc3JjL1BWRS9TdG9yYWdlLnBtCj4+IEBAIC0xMTQsNyArMTE0LDcgQEAg b3VyICRWWlRNUExfRVhUX1JFXzEgPSBxci9cLnRhclwuKGd6fHh6fHpzdCkvaTsKPj4gICAKPj4g ICBvdXIgJEJBQ0tVUF9FWFRfUkVfMiA9IHFyL1wuKHRnenwoPzp0YXJ8dm1hKSg/OlwuKCR7XFBW RTo6U3RvcmFnZTo6UGx1Z2luOjpDT01QUkVTU09SX1JFfSkpPykvOwo+PiAgIAo+PiAtb3VyICRJ TVBPUlRfRVhUX1JFXzEgPSBxci9cLihvdmZ8cWNvdzJ8cmF3fHZtZGspLzsKPj4gK291ciAkSU1Q T1JUX0VYVF9SRV8xID0gcXIvXC4ob3ZhfG92ZnxxY293MnxyYXd8dm1kaykvOwo+PiAgIAo+PiAg IG91ciAkU0FGRV9DSEFSX0NMQVNTX1JFID0gcXIvW2EtekEtWjAtOVwtXC5cK1w9XF9dLzsKPj4g ICAKPj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9EaXJQbHVnaW4ucG0gYi9zcmMvUFZF L1N0b3JhZ2UvRGlyUGx1Z2luLnBtCj4+IGluZGV4IDNlM2IxZTcuLmVhODk0NjQgMTAwNjQ0Cj4+ IC0tLSBhL3NyYy9QVkUvU3RvcmFnZS9EaXJQbHVnaW4ucG0KPj4gKysrIGIvc3JjL1BWRS9TdG9y YWdlL0RpclBsdWdpbi5wbQo+PiBAQCAtMjU4LDE1ICsyNTgsMjYgQEAgc3ViIGdldF9pbXBvcnRf bWV0YWRhdGEgewo+PiAgICAgICAjIE5PVEU6IGFsbCB0eXBlcyBvZiB3YXJuaW5ncyBtdXN0IGJl IGFkZGVkIHRvIHRoZSByZXR1cm4gc2NoZW1hIG9mIHRoZSBpbXBvcnQtbWV0YWRhdGEgQVBJIGVu ZHBvaW50Cj4+ICAgICAgIG15ICR3YXJuaW5ncyA9IFtdOwo+PiAgIAo+PiArICAgIG15ICRpc092 YSA9IDA7Cj4+ICsgICAgaWYgKCRuYW1lID1+IG0vXC5vdmEkLykgewo+PiArCSRpc092YSA9IDE7 Cj4+ICsJcHVzaCBAJHdhcm5pbmdzLCB7IHR5cGUgPT4gJ292YS1uZWVkcy1leHRyYWN0aW5nJyB9 Owo+PiArICAgIH0KPj4gICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICR2b2xu YW1lLCAkc3RvcmVpZCwgdW5kZWYpOwo+PiAtICAgIG15ICRyZXMgPSBQVkU6Okd1ZXN0SW1wb3J0 OjpPVkY6OnBhcnNlX292ZigkcGF0aCk7Cj4+ICsgICAgbXkgJHJlcyA9IFBWRTo6R3Vlc3RJbXBv cnQ6Ok9WRjo6cGFyc2Vfb3ZmKCRwYXRoLCAkaXNPdmEpOwo+PiAgICAgICBteSAkZGlza3MgPSB7 fTsKPj4gICAgICAgZm9yIG15ICRkaXNrICgkcmVzLT57ZGlza3N9LT5AKikgewo+PiAgIAlteSAk aWQgPSAkZGlzay0+e2Rpc2tfYWRkcmVzc307Cj4+ICAgCW15ICRzaXplID0gJGRpc2stPnt2aXJ0 dWFsX3NpemV9Owo+PiAgIAlteSAkcGF0aCA9ICRkaXNrLT57cmVsYXRpdmVfcGF0aH07Cj4+ICsJ bXkgJHZvbGlkOwo+PiArCWlmICgkaXNPdmEpIHsKPj4gKwkgICAgJHZvbGlkID0gIiRzdG9yZWlk OiR2b2xuYW1lLyRwYXRoIjsKPj4gKwl9IGVsc2Ugewo+PiArCSAgICAkdm9saWQgPSAiJHN0b3Jl aWQ6aW1wb3J0LyRwYXRoIiwKPj4gKwl9Cj4+ICAgCSRkaXNrcy0+eyRpZH0gPSB7Cj4+IC0JICAg IHZvbGlkID0+ICIkc3RvcmVpZDppbXBvcnQvJHBhdGgiLAo+PiArCSAgICB2b2xpZCA9PiAkdm9s aWQsCj4+ICAgCSAgICBkZWZpbmVkKCRzaXplKSA/IChzaXplID0+ICRzaXplKSA6ICgpLAo+PiAg IAl9Owo+PiAgICAgICB9Cj4+IGRpZmYgLS1naXQgYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBt IGIvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbQo+PiBpbmRleCAzM2YwZjNhLi42NDBkMTU2IDEw MDY0NAo+PiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtCj4+ICsrKyBiL3NyYy9QVkUv U3RvcmFnZS9QbHVnaW4ucG0KPj4gQEAgLTY1NCw2ICs2NTQsMTEgQEAgc3ViIHBhcnNlX3ZvbG5h bWUgewo+PiAgIAlyZXR1cm4gKCdiYWNrdXAnLCAkZm4pOwo+PiAgICAgICB9IGVsc2lmICgkdm9s bmFtZSA9fiBtIV5zbmlwcGV0cy8oW14vXSspJCEpIHsKPj4gICAJcmV0dXJuICgnc25pcHBldHMn LCAkMSk7Cj4+ICsgICAgfSBlbHNpZiAoJHZvbG5hbWUgPX4gbSFeaW1wb3J0Lygke1BWRTo6U3Rv cmFnZTo6U0FGRV9DSEFSX0NMQVNTX1JFfStcLm92YVwvKCR7UFZFOjpTdG9yYWdlOjpTQUZFX0NI QVJfQ0xBU1NfUkV9KykpJCEpIHsKPj4gKwlteSAkYXJjaGl2ZSA9ICQxOwo+PiArCW15ICRmaWxl ID0gJDI7Cj4+ICsJbXkgKHVuZGVmLCAkZm9ybWF0LCB1bmRlZikgPSBwYXJzZV9uYW1lX2Rpcigk ZmlsZSk7Cj4+ICsJcmV0dXJuICgnaW1wb3J0JywgJGFyY2hpdmUsIHVuZGVmLCB1bmRlZiwgdW5k ZWYsIHVuZGVmLCAib3ZhKyRmb3JtYXQiKTsKPiAKPiB0aGVzZSBjb3VsZCBiZSBpbXByb3ZlZCBp ZiB0aGUgZm9ybWF0IHdhcyBhbHJlYWR5IGNoZWNrZWQgaW4gdGhlIGVsc2lmCj4gY29uZGl0aW9u IEkgdGhpbmssIHNpbmNlIHRoZSBlcnJvciBtZXNzYWdlIG9mIHBhcnNlX25hbWVfZGlyIGlzIGEg Yml0Cj4gb3BhcXVlL2xhY2tpbmcgY29udGV4dC4uIGFsc28sIHBhcnNlX25hbWVfZGlyIGFsbG93 cyBzdWJ2b2wsIHdoaWNoIHdlCj4gZG9uJ3Qgd2FudCB0byBhbGxvdyBoZXJlIEkgdGhpbms/Cgpv ayB5ZWFoIHRoYXQgbWFrZXMgc2Vuc2UKCj4gCj4+ICAgICAgIH0gZWxzaWYgKCR2b2xuYW1lID1+ IG0hXmltcG9ydC8oJHtQVkU6OlN0b3JhZ2U6OlNBRkVfQ0hBUl9DTEFTU19SRX0rJFBWRTo6U3Rv cmFnZTo6SU1QT1JUX0VYVF9SRV8xKSQhKSB7Cj4+ICAgCXJldHVybiAoJ2ltcG9ydCcsICQxLCB1 bmRlZiwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJDIpOwo+PiAgICAgICB9Cj4+IGRpZmYgLS1naXQg YS9zcmMvdGVzdC9wYXJzZV92b2xuYW1lX3Rlc3QucG0gYi9zcmMvdGVzdC9wYXJzZV92b2xuYW1l X3Rlc3QucG0KPj4gaW5kZXggYThjNzQ2Zi4uYmM3YjRlOCAxMDA2NDQKPj4gLS0tIGEvc3JjL3Rl c3QvcGFyc2Vfdm9sbmFtZV90ZXN0LnBtCj4+ICsrKyBiL3NyYy90ZXN0L3BhcnNlX3ZvbG5hbWVf dGVzdC5wbQo+PiBAQCAtOTMsNiArOTMsMjEgQEAgbXkgJHRlc3RzID0gWwo+PiAgIAl2b2xuYW1l ICAgICA9PiAnaW1wb3J0L2ltcG9ydC5vdmYnLAo+PiAgIAlleHBlY3RlZCAgICA9PiBbJ2ltcG9y dCcsICdpbXBvcnQub3ZmJywgdW5kZWYsIHVuZGVmLCB1bmRlZiAsdW5kZWYsICdvdmYnXSwKPj4g ICAgICAgfSwKPj4gKyAgICB7Cj4+ICsJZGVzY3JpcHRpb24gPT4gIkltcG9ydCwgaW5ubmVyIGZp bGUgb2Ygb3ZhIiwKPj4gKwl2b2xuYW1lICAgICA9PiAnaW1wb3J0L2ltcG9ydC5vdmEvZGlzay5x Y293MicsCj4+ICsJZXhwZWN0ZWQgICAgPT4gWydpbXBvcnQnLCAnaW1wb3J0Lm92YS9kaXNrLnFj b3cyJywgdW5kZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsICdvdmErcWNvdzInXSwKPj4gKyAgICB9 LAo+PiArICAgIHsKPj4gKwlkZXNjcmlwdGlvbiA9PiAiSW1wb3J0LCBpbm5uZXIgZmlsZSBvZiBv dmEiLAo+PiArCXZvbG5hbWUgICAgID0+ICdpbXBvcnQvaW1wb3J0Lm92YS9kaXNrLnZtZGsnLAo+ PiArCWV4cGVjdGVkICAgID0+IFsnaW1wb3J0JywgJ2ltcG9ydC5vdmEvZGlzay52bWRrJywgdW5k ZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsICdvdmErdm1kayddLAo+PiArICAgIH0sCj4+ICsgICAg ewo+PiArCWRlc2NyaXB0aW9uID0+ICJJbXBvcnQsIGlubm5lciBmaWxlIG9mIG92YSIsCj4+ICsJ dm9sbmFtZSAgICAgPT4gJ2ltcG9ydC9pbXBvcnQub3ZhL2Rpc2sucmF3JywKPj4gKwlleHBlY3Rl ZCAgICA9PiBbJ2ltcG9ydCcsICdpbXBvcnQub3ZhL2Rpc2sucmF3JywgdW5kZWYsIHVuZGVmLCB1 bmRlZiwgdW5kZWYsICdvdmErcmF3J10sCj4+ICsgICAgfSwKPj4gICAgICAgIwo+PiAgICAgICAj IGZhaWxlZCBtYXRjaGVzCj4+ICAgICAgICMKPj4gLS0gCj4+IDIuMzkuMgo+Pgo+Pgo+Pgo+PiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBwdmUtZGV2 ZWwgbWFpbGluZyBsaXN0Cj4+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+PiBodHRwczov L2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwKPj4K Pj4KPj4KPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IHB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5j b20KPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9w dmUtZGV2ZWwKPiAKPiAKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5j b20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZl LWRldmVsCg==