From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 0BAD91FF136 for ; Mon, 26 Jan 2026 10:06:14 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4DA0675D5; Mon, 26 Jan 2026 10:06:34 +0100 (CET) Date: Mon, 26 Jan 2026 10:06:22 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Proxmox VE development discussion Cc: pve-devel References: <20260123075619.2731724-3-k.chai@proxmox.com> <1769170653.ul6jn3m5d0.astroid@yuna.none> In-Reply-To: MIME-Version: 1.0 User-Agent: astroid/0.17.0 (https://github.com/astroidmail/astroid) Message-Id: <1769418342.xjabsrxuw3.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1769418322699 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.080 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 KAM_LOTSOFHASH 0.25 Emails with lots of hash-like gibberish KAM_SHORT 0.001 Use of a URL Shortener for very short URL 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 ceph 1/4 v5] cherry-pick changes to use system packages for bundled deps 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" T24gSmFudWFyeSAyNCwgMjAyNiA1OjEzIGFtLCBLZWZ1IENoYWkgd3JvdGU6Cj4gT24gRnJpIEph biAyMywgMjAyNiBhdCA5OjAzIFBNIENTVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4g b25lIHNtYWxsIHF1ZXN0aW9uIGlubGluZSwgb3RoZXJ3aXNlIHRoaXMgb25lIExHVE0KPj4KPj4g T24gSmFudWFyeSAyMywgMjAyNiA4OjU2IGFtLCBLZWZ1IENoYWkgd3JvdGU6Cj4+PiBQcmV2aW91 c2x5LCBjZXBoYWRtJ3MgYnVpbGQgcHJvY2VzcyBwdWxsZWQgZGVwZW5kZW5jaWVzIGZyb20gUHlQ SSwKPj4+IHdoaWNoIGZhaWxlZCBpbiBlbnZpcm9ubWVudHMgd2l0aCByZXN0cmljdGVkIG5ldHdv cmsgYWNjZXNzLiBUaGlzCj4+PiBjaGFuZ2UgYmFja3BvcnRzIHVwc3RyZWFtIGltcHJvdmVtZW50 cyB0aGF0IGVuYWJsZSBidWlsZGluZyBjZXBoYWRtCj4+PiB1c2luZyBzeXN0ZW0gcGFja2FnZXMg aW5zdGVhZCwgbWlycm9yaW5nIHRoZSBleGlzdGluZyBSUE0gcGFja2FnaW5nCj4+PiB3b3JrZmxv dy4KPj4+IAo+Pj4gQW5kIHRoZSB2ZW5kb3JlZCBBcnJvdyBwdWxsZWQgeHNpbWQgZnJvbSBHaXRI dWIsIHRoaXMgYWxzbyBmYWlsZWQgaW4KPj4+IGJ1aWxkaW5nIGVudmlyb25tZW50IHdpdGhvdXQg bmV0d29yayBhY2Nlc3MuIFRoaXMgY2hhbmdlIGJhY2twb3J0cwo+Pj4gdXBzdHJlYW0gaW1wcm92 ZW1lbnRzIGVuYWJsaW5nIHRoZSBidWlsZCB0byB1c2UgbGlieHNpbWQtZGV2IHBhY2thZ2UKPj4+ IHdoZW4gYnVpbGRpbmcgZGViaWFuIHBhY2thZ2VzLgo+Pj4gCj4+PiBCYWNrcG9ydGVkIGNoYW5n ZXM6Cj4+PiAtIGh0dHBzOi8vZ2l0aHViLmNvbS9jZXBoL2NlcGgvcHVsbC82NjI1NiAtIFVzZSBz eXN0ZW0gcGFja2FnZXMgZm9yCj4+PiAgIGNlcGhhZG0gYnVuZGxlZCBkZXBlbmRlbmNpZXMKPj4+ IC0gaHR0cHM6Ly9naXRodWIuY29tL2NlcGgvY2VwaC9wdWxsLzY2MjQ4IC0gQWRkIGxpYnhzaW1k LWRldiBidWlsZAo+Pj4gICBkZXBlbmRlbmN5IGZvciB2ZW5kb3JlZCBBcnJvdwo+Pj4gLSBodHRw czovL2dpdGh1Yi5jb20vY2VwaC9jZXBoL3B1bGwvNjUyOTIgLSBjZXBoYWRtOiBmaXggYnVpbGRp bmcKPj4+ICAgcnBtLXNvdXJjZWQgY2VwaGFkbSB6aXBwYXBwIG9uIGVsMTAKPj4+IAo+Pj4gTm90 ZTogVGVzdCBjb21taXRzIGZyb20gdGhlc2UgUFJzIGFyZSBleGNsdWRlZCBmcm9tIHRoaXMgYmFj a3BvcnQuCj4+PiAKPj4+IFNpZ25lZC1vZmYtYnk6IEtlZnUgQ2hhaSA8ay5jaGFpQHByb3htb3gu Y29tPgo+Pj4gLS0tCj4+PiAgLi4uLWlzc3Vlcy1ydW5uaW5nLWV4aXN0aW5nLWNlcGhhZG0tYnVp LnBhdGNoIHwgIDY2ICsrKysrCj4+PiAgLi4ucm9vdF9lbnRyaWVzLXBvcHVsYXRpb24taW4tdmVy c2lvbi1jLnBhdGNoIHwgIDYyICsrKysrCj4+PiAgLi4uY2VwaGFkbS1ycG0tYmFzZWQtYnVpbGRz LXdpdGhvdXQtdG9wLnBhdGNoIHwgIDg5ICsrKysrKwo+Pj4gIC4uLmQtRGViaWFuLXBhY2thZ2Ut c3VwcG9ydC1mb3ItYnVuZGxlZC5wYXRjaCB8IDI2MSArKysrKysrKysrKysrKysrKysKPj4+ICAu Li5tLXBhY2thZ2VzLWZvci1jZXBoYWRtLWJ1bmRsZWQtZGVwZW4ucGF0Y2ggfCAgNTQgKysrKwo+ Pj4gIC4uLi1Vc2UtQVVUTy1tb2RlLWZvci14c2ltZC1kZXBlbmRlbmN5LS5wYXRjaCB8ICA1NSAr KysrCj4+PiAgLi4uZGQtbGlieHNpbWQtZGV2LWJ1aWxkLWRlcGVuZGVuY3ktZm9yLnBhdGNoIHwg IDQxICsrKwo+Pj4gIHBhdGNoZXMvc2VyaWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgOCArCj4+PiAgOCBmaWxlcyBjaGFuZ2VkLCA2MzYgaW5zZXJ0aW9ucygrKQo+Pj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwNDItY2VwaGFkbS1maXgtc29tZS1pc3N1ZXMtcnVu bmluZy1leGlzdGluZy1jZXBoYWRtLWJ1aS5wYXRjaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBw YXRjaGVzLzAwNDMtY2VwaGFkbS1maXgtemlwX3Jvb3RfZW50cmllcy1wb3B1bGF0aW9uLWluLXZl cnNpb24tYy5wYXRjaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwNDQtY2VwaGFk bS1zdXBwb3J0LWNlcGhhZG0tcnBtLWJhc2VkLWJ1aWxkcy13aXRob3V0LXRvcC5wYXRjaAo+Pj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwNDUtY2VwaGFkbS1idWlsZC1BZGQtRGViaWFu LXBhY2thZ2Utc3VwcG9ydC1mb3ItYnVuZGxlZC5wYXRjaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBwYXRjaGVzLzAwNDYtZGViaWFuLVVzZS1zeXN0ZW0tcGFja2FnZXMtZm9yLWNlcGhhZG0tYnVu ZGxlZC1kZXBlbi5wYXRjaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwNDctY21h a2UtQnVpbGRBcnJvdy1Vc2UtQVVUTy1tb2RlLWZvci14c2ltZC1kZXBlbmRlbmN5LS5wYXRjaAo+ Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzLzAwNDgtZGViaWFuLWNvbnRyb2wtQWRkLWxp YnhzaW1kLWRldi1idWlsZC1kZXBlbmRlbmN5LWZvci5wYXRjaAo+Pj4gCj4+PiBkaWZmIC0tZ2l0 IGEvcGF0Y2hlcy8wMDQyLWNlcGhhZG0tZml4LXNvbWUtaXNzdWVzLXJ1bm5pbmctZXhpc3Rpbmct Y2VwaGFkbS1idWkucGF0Y2ggYi9wYXRjaGVzLzAwNDItY2VwaGFkbS1maXgtc29tZS1pc3N1ZXMt cnVubmluZy1leGlzdGluZy1jZXBoYWRtLWJ1aS5wYXRjaAo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPj4+IGluZGV4IDAwMDAwMDAwMDAwLi5jNjIwOGIwZGIyYQo+Pj4gLS0tIC9kZXYvbnVsbAo+ Pj4gKysrIGIvcGF0Y2hlcy8wMDQyLWNlcGhhZG0tZml4LXNvbWUtaXNzdWVzLXJ1bm5pbmctZXhp c3RpbmctY2VwaGFkbS1idWkucGF0Y2gKPj4+IEBAIC0wLDAgKzEsNjYgQEAKPj4+ICtGcm9tIDI2 ODVmNmMzNTI0NWQwMzNlNzNlMTZlY2UzZTM1NmZjZWFkNDRjZWEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCj4+PiArRnJvbTogSm9obiBNdWxsaWdhbiA8am11bGxpZ2FuQHJlZGhhdC5jb20+Cj4+ PiArRGF0ZTogVGh1LCAyMSBBdWcgMjAyNSAxMjozMDo1NSAtMDQwMAo+Pj4gK1N1YmplY3Q6IFtQ QVRDSCA0Mi80Nl0gY2VwaGFkbTogZml4IHNvbWUgaXNzdWVzIHJ1bm5pbmcgZXhpc3RpbmcgY2Vw aGFkbSBidWlsZAo+Pj4gKyB0ZXN0cwo+Pj4gKwo+Pj4gK0FzIHRpbWUgaGFzIG1hcmNoZWQgb24g YW5kIHBlb3BsZSBjaGFuZ2VkIHRoaW5ncyBvdXIgdGVzdHMgbm8gbG9uZ2VyCj4+PiArbWF0Y2gg dGhlIGV4cGVjdGVkIGlucHV0cy4KPj4+ICsKPj4+ICtTaWduZWQtb2ZmLWJ5OiBKb2huIE11bGxp Z2FuIDxqbXVsbGlnYW5AcmVkaGF0LmNvbT4KPj4+ICsoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1p dCAzMWM4MDEwZmFhNDE3Y2E1MzYxNGJkMzAzNzlhOWI5YzBjOTE5OWRlKQo+Pj4gKy0tLQo+Pj4g KyBzcmMvY2VwaGFkbS90ZXN0cy9idWlsZC90ZXN0X2NlcGhhZG1fYnVpbGQucHkgfCAxOCArKysr KysrKysrKystLS0tLS0KPj4+ICsgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCj4+PiArCj4+PiArZGlmZiAtLWdpdCBhL3NyYy9jZXBoYWRtL3Rlc3RzL2J1 aWxkL3Rlc3RfY2VwaGFkbV9idWlsZC5weSBiL3NyYy9jZXBoYWRtL3Rlc3RzL2J1aWxkL3Rlc3Rf Y2VwaGFkbV9idWlsZC5weQo+Pj4gK2luZGV4IGMyOTk1YTc2ZDRiLi45YmVlZjY3ZmZlMCAxMDA2 NDQKPj4+ICstLS0gYS9zcmMvY2VwaGFkbS90ZXN0cy9idWlsZC90ZXN0X2NlcGhhZG1fYnVpbGQu cHkKPj4+ICsrKysgYi9zcmMvY2VwaGFkbS90ZXN0cy9idWlsZC90ZXN0X2NlcGhhZG1fYnVpbGQu cHkKPj4+ICtAQCAtMzQsMTIgKzM0LDEyIEBAIENPTlRBSU5FUlMgPSB7Cj4+PiArICAgICB9LAo+ Pj4gKyAgICAgJ3VidW50dS0yMC4wNCc6IHsKPj4+ICsgICAgICAgICAnbmFtZSc6ICdjZXBoYWRt LWJ1aWxkLXRlc3Q6dWJ1bnR1LTIwLTA0LXB5MycsCj4+PiArLSAgICAgICAgJ2Jhc2VfaW1hZ2Un OiAncXVheS5pby9saWJyYXJ5L3VidW50dToyMC4wNCcsCj4+PiArKyAgICAgICAgJ2Jhc2VfaW1h Z2UnOiAnZG9ja2VyLmlvL2xpYnJhcnkvdWJ1bnR1OjIwLjA0JywKPj4+ICsgICAgICAgICAnc2Ny aXB0JzogJ2FwdCB1cGRhdGUgJiYgYXB0IGluc3RhbGwgLXkgcHl0aG9uMy12ZW52JywKPj4+ICsg ICAgIH0sCj4+PiArICAgICAndWJ1bnR1LTIyLjA0Jzogewo+Pj4gKyAgICAgICAgICduYW1lJzog J2NlcGhhZG0tYnVpbGQtdGVzdDp1YnVudHUtMjItMDQtcHkzJywKPj4+ICstICAgICAgICAnYmFz ZV9pbWFnZSc6ICdxdWF5LmlvL2xpYnJhcnkvdWJ1bnR1OjIyLjA0JywKPj4+ICsrICAgICAgICAn YmFzZV9pbWFnZSc6ICdkb2NrZXIuaW8vbGlicmFyeS91YnVudHU6MjIuMDQnLAo+Pj4gKyAgICAg ICAgICdzY3JpcHQnOiAnYXB0IHVwZGF0ZSAmJiBhcHQgaW5zdGFsbCAteSBweXRob24zLXZlbnYn LAo+Pj4gKyAgICAgfSwKPj4+ICsgfQo+Pj4gK0BAIC0xMjgsOCArMTI4LDggQEAgZGVmIHRlc3Rf Y2VwaGFkbV9idWlsZChlbnYsIHNvdXJjZV9kaXIsIHRtcF9wYXRoKToKPj4+ICsgICAgIGFzc2Vy dCBhbGwoJ3JlcXVpcmVtZW50c19lbnRyeScgaW4gdiBmb3IgdiBpbiBkYXRhWydidW5kbGVkX3Bh Y2thZ2VzJ10pCj4+PiArICAgICBhc3NlcnQgJ3ppcF9yb290X2VudHJpZXMnIGluIGRhdGEKPj4+ ICsgICAgIHpyZSA9IGRhdGFbJ3ppcF9yb290X2VudHJpZXMnXQo+Pj4gKy0gICAgYXNzZXJ0IGFu eShlLnN0YXJ0c3dpdGgoJ0ppbmphMicpIGZvciBlIGluIHpyZSkKPj4+ICstICAgIGFzc2VydCBh bnkoZS5zdGFydHN3aXRoKCdNYXJrdXBTYWZlJykgZm9yIGUgaW4genJlKQo+Pj4gKysgICAgYXNz ZXJ0IGFueShfZGlzdF9pbmZvKGUsICdKaW5qYTInKSBmb3IgZSBpbiB6cmUpCj4+PiArKyAgICBh c3NlcnQgYW55KF9kaXN0X2luZm8oZSwgJ01hcmt1cFNhZmUnKSBmb3IgZSBpbiB6cmUpCj4+PiAr ICAgICBhc3NlcnQgYW55KGUuc3RhcnRzd2l0aCgnamluamEyJykgZm9yIGUgaW4genJlKQo+Pj4g KyAgICAgYXNzZXJ0IGFueShlLnN0YXJ0c3dpdGgoJ21hcmt1cHNhZmUnKSBmb3IgZSBpbiB6cmUp Cj4+PiArICAgICBhc3NlcnQgYW55KGUuc3RhcnRzd2l0aCgnY2VwaGFkbWxpYicpIGZvciBlIGlu IHpyZSkKPj4+ICtAQCAtMTg0LDkgKzE4NCwxNSBAQCBkZWYgdGVzdF9jZXBoYWRtX2J1aWxkX2Zy b21fcnBtcyhlbnYsIHNvdXJjZV9kaXIsIHRtcF9wYXRoKToKPj4+ICsgICAgIGFzc2VydCBhbGwo J3JlcXVpcmVtZW50c19lbnRyeScgaW4gdiBmb3IgdiBpbiBkYXRhWydidW5kbGVkX3BhY2thZ2Vz J10pCj4+PiArICAgICBhc3NlcnQgJ3ppcF9yb290X2VudHJpZXMnIGluIGRhdGEKPj4+ICsgICAg IHpyZSA9IGRhdGFbJ3ppcF9yb290X2VudHJpZXMnXQo+Pj4gKy0gICAgYXNzZXJ0IGFueShlLnN0 YXJ0c3dpdGgoJ0ppbmphMicpIGZvciBlIGluIHpyZSkKPj4+ICstICAgIGFzc2VydCBhbnkoZS5z dGFydHN3aXRoKCdNYXJrdXBTYWZlJykgZm9yIGUgaW4genJlKQo+Pj4gKysgICAgYXNzZXJ0IGFu eShfZGlzdF9pbmZvKGUsICdKaW5qYTInKSBmb3IgZSBpbiB6cmUpCj4+PiArKyAgICBhc3NlcnQg YW55KF9kaXN0X2luZm8oZSwgJ01hcmt1cFNhZmUnKSBmb3IgZSBpbiB6cmUpCj4+PiArICAgICBh c3NlcnQgYW55KGUuc3RhcnRzd2l0aCgnamluamEyJykgZm9yIGUgaW4genJlKQo+Pj4gKyAgICAg YXNzZXJ0IGFueShlLnN0YXJ0c3dpdGgoJ21hcmt1cHNhZmUnKSBmb3IgZSBpbiB6cmUpCj4+PiAr ICAgICBhc3NlcnQgYW55KGUuc3RhcnRzd2l0aCgnY2VwaGFkbWxpYicpIGZvciBlIGluIHpyZSkK Pj4+ICsgICAgIGFzc2VydCBhbnkoZS5zdGFydHN3aXRoKCdfY2VwaGFkbW1ldGEnKSBmb3IgZSBp biB6cmUpCj4+PiArKwo+Pj4gKysKPj4+ICsrZGVmIF9kaXN0X2luZm8oZW50cnksIG5hbWUpOgo+ Pj4gKysgICAgcmV0dXJuICgKPj4+ICsrICAgICAgICBlbnRyeS5zdGFydHN3aXRoKGVudHJ5KSBv ciBlbnRyeS5zdGFydHN3aXRoKGVudHJ5Lmxvd2VyKCkpCj4+PiArKyAgICApIGFuZCAoZW50cnku ZW5kc3dpdGgoJy5kaXN0LWluZm8nKSBvciBlbnRyeS5lbmRzd2l0aCgnLmVnZy1pbmZvJykpCj4+ PiArLS0gCj4+PiArMi40Ny4zCj4+PiArCj4+PiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDQzLWNl cGhhZG0tZml4LXppcF9yb290X2VudHJpZXMtcG9wdWxhdGlvbi1pbi12ZXJzaW9uLWMucGF0Y2gg Yi9wYXRjaGVzLzAwNDMtY2VwaGFkbS1maXgtemlwX3Jvb3RfZW50cmllcy1wb3B1bGF0aW9uLWlu LXZlcnNpb24tYy5wYXRjaAo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+IGluZGV4IDAwMDAw MDAwMDAwLi43YTBiMWExOGQ2OAo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvcGF0Y2hlcy8w MDQzLWNlcGhhZG0tZml4LXppcF9yb290X2VudHJpZXMtcG9wdWxhdGlvbi1pbi12ZXJzaW9uLWMu cGF0Y2gKPj4+IEBAIC0wLDAgKzEsNjIgQEAKPj4+ICtGcm9tIDJjMjBhZTk1ZjMyYTJiZGY3ODU3 NjI1MmYxYzkxNzFmMDBhMjc5MGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4+PiArRnJvbTog S2VmdSBDaGFpIDxrLmNoYWlAcHJveG1veC5jb20+Cj4+PiArRGF0ZTogTW9uLCAxMCBOb3YgMjAy NSAxMjoxMTowOCArMDgwMAo+Pj4gK1N1YmplY3Q6IFtQQVRDSCA0My80Nl0gY2VwaGFkbTogZml4 IHppcF9yb290X2VudHJpZXMgcG9wdWxhdGlvbiBpbiB2ZXJzaW9uCj4+PiArIGNvbW1hbmQKPj4+ ICsKPj4+ICtUaGUgJ2NlcGhhZG0gdmVyc2lvbiAtLXZlcmJvc2UnIGNvbW1hbmQgd2FzIHJldHVy bmluZyBhbiBlbXB0eQo+Pj4gK3ppcF9yb290X2VudHJpZXMgbGlzdCBiZWNhdXNlIGl0IHJlbGll ZCBvbiB0aGUgcHJpdmF0ZSAnX2ZpbGVzJwo+Pj4gK2F0dHJpYnV0ZSBvZiB6aXBpbXBvcnQuemlw aW1wb3J0ZXIsIHdoaWNoIGlzIG5vdCByZWxpYWJseSBwb3B1bGF0ZWQKPj4+ICthY3Jvc3MgUHl0 aG9uIHZlcnNpb25zLgo+Pj4gKwo+Pj4gK1RoaXMgY29tbWl0IGZpeGVzIHRoZSBpc3N1ZSBieSB1 c2luZyB0aGUgemlwZmlsZSBtb2R1bGUgdG8gcHJvcGVybHkKPj4+ICtyZWFkIHRoZSBhcmNoaXZl IGNvbnRlbnRzIHZpYSB0aGUgbG9hZGVyLmFyY2hpdmUgcGF0aC4gVGhpcyBlbnN1cmVzCj4+PiAr dGhhdCB6aXBfcm9vdF9lbnRyaWVzIGlzIGNvcnJlY3RseSBwb3B1bGF0ZWQgd2l0aCB0aGUgcm9v dC1sZXZlbAo+Pj4gK2RpcmVjdG9yaWVzIGluIHRoZSB6aXBhcHAuCj4+PiArCj4+PiArVGhpcyBm aXggaXMgbmVjZXNzYXJ5IGZvciB0aGUgY2VwaGFkbSBidWlsZCB0ZXN0cyB0byBwcm9wZXJseSB2 YWxpZGF0ZQo+Pj4gK3RoYXQgYWxsIGV4cGVjdGVkIHBhY2thZ2VzIGFuZCBtb2R1bGVzIGFyZSBp bmNsdWRlZCBpbiB0aGUgYnVpbHQgemlwYXBwLgo+Pj4gKwo+Pj4gK1NpZ25lZC1vZmYtYnk6IEtl ZnUgQ2hhaSA8ay5jaGFpQHByb3htb3guY29tPgo+Pj4gKyhjaGVycnkgcGlja2VkIGZyb20gY29t bWl0IDJjNjhjMTQ5NmRiYjdjZDAxYmY3ODNlMzE1MTA5NDA0NDUwNDBhMzQpCj4+PiArLS0tCj4+ PiArIHNyYy9jZXBoYWRtL2NlcGhhZG0ucHkgfCAxNiArKysrKysrKysrKystLS0tCj4+PiArIDEg ZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQo+Pj4gKwo+Pj4g K2RpZmYgLS1naXQgYS9zcmMvY2VwaGFkbS9jZXBoYWRtLnB5IGIvc3JjL2NlcGhhZG0vY2VwaGFk bS5weQo+Pj4gK2luZGV4IGY3NWFhYTg2ZGFjLi44ZDA4YzcwMDg2OCAxMDA3NTUKPj4+ICstLS0g YS9zcmMvY2VwaGFkbS9jZXBoYWRtLnB5Cj4+PiArKysrIGIvc3JjL2NlcGhhZG0vY2VwaGFkbS5w eQo+Pj4gK0BAIC0xNjg4LDYgKzE2ODgsNyBAQCBkZWYgY29tbWFuZF92ZXJzaW9uKGN0eCk6Cj4+ PiArICAgICAjIHR5cGU6IChDZXBoYWRtQ29udGV4dCkgLT4gaW50Cj4+PiArICAgICBpbXBvcnQg aW1wb3J0bGliCj4+PiArICAgICBpbXBvcnQgemlwaW1wb3J0Cj4+PiArKyAgICBpbXBvcnQgemlw ZmlsZQo+Pj4gKyAgICAgaW1wb3J0IHR5cGVzCj4+PiArIAo+Pj4gKyAgICAgdm1vZDogT3B0aW9u YWxbdHlwZXMuTW9kdWxlVHlwZV0KPj4+ICtAQCAtMTc0NCwxMCArMTc0NSwxNyBAQCBkZWYgY29t bWFuZF92ZXJzaW9uKGN0eCk6Cj4+PiArICAgICAgICAgICAgIG91dFsnYnVuZGxlZF9wYWNrYWdl cyddID0gZGVwc19pbmZvCj4+PiArICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Cj4+PiArICAgICAg ICAgICAgIHBhc3MKPj4+ICstICAgICAgICBmaWxlcyA9IGdldGF0dHIobG9hZGVyLCAnX2ZpbGVz Jywge30pCj4+PiArLSAgICAgICAgb3V0Wyd6aXBfcm9vdF9lbnRyaWVzJ10gPSBzb3J0ZWQoCj4+ PiArLSAgICAgICAgICAgIHtwLnNwbGl0KCcvJylbMF0gZm9yIHAgaW4gZmlsZXMua2V5cygpfQo+ Pj4gKy0gICAgICAgICkKPj4+ICsrICAgICAgICAjIFVzZSB6aXBmaWxlIG1vZHVsZSB0byBwcm9w ZXJseSByZWFkIHRoZSBhcmNoaXZlIGNvbnRlbnRzCj4+PiArKyAgICAgICAgIyBsb2FkZXIuYXJj aGl2ZSBjb250YWlucyB0aGUgcGF0aCB0byB0aGUgemlwIGZpbGUKPj4+ICsrICAgICAgICB0cnk6 Cj4+PiArKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGxvYWRlci5hcmNoaXZlLCAn cicpIGFzIHpmOgo+Pj4gKysgICAgICAgICAgICAgICAgZmlsZXMgPSB6Zi5uYW1lbGlzdCgpCj4+ PiArKyAgICAgICAgICAgICAgICBvdXRbJ3ppcF9yb290X2VudHJpZXMnXSA9IHNvcnRlZCgKPj4+ ICsrICAgICAgICAgICAgICAgICAgICB7cC5zcGxpdCgnLycpWzBdIGZvciBwIGluIGZpbGVzIGlm IHB9Cj4+PiArKyAgICAgICAgICAgICAgICApCj4+PiArKyAgICAgICAgZXhjZXB0IChPU0Vycm9y LCB6aXBmaWxlLkJhZFppcEZpbGUpOgo+Pj4gKysgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIGVt cHR5IGxpc3QgaWYgd2UgY2FuJ3QgcmVhZCB0aGUgemlwCj4+PiArKyAgICAgICAgICAgIG91dFsn emlwX3Jvb3RfZW50cmllcyddID0gW10KPj4+ICsgCj4+PiArICAgICBqc29uLmR1bXAob3V0LCBz eXMuc3Rkb3V0LCBpbmRlbnQ9MikKPj4+ICsgICAgIHByaW50KCkKPj4+ICstLSAKPj4+ICsyLjQ3 LjMKPj4+ICsKPj4+IGRpZmYgLS1naXQgYS9wYXRjaGVzLzAwNDQtY2VwaGFkbS1zdXBwb3J0LWNl cGhhZG0tcnBtLWJhc2VkLWJ1aWxkcy13aXRob3V0LXRvcC5wYXRjaCBiL3BhdGNoZXMvMDA0NC1j ZXBoYWRtLXN1cHBvcnQtY2VwaGFkbS1ycG0tYmFzZWQtYnVpbGRzLXdpdGhvdXQtdG9wLnBhdGNo Cj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMDAwMDAuLjZlMWI0ZGQy ZTBlCj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9wYXRjaGVzLzAwNDQtY2VwaGFkbS1zdXBw b3J0LWNlcGhhZG0tcnBtLWJhc2VkLWJ1aWxkcy13aXRob3V0LXRvcC5wYXRjaAo+Pj4gQEAgLTAs MCArMSw4OSBAQAo+Pj4gK0Zyb20gNWNlNzIxNzhhNzgyZGZlMmU4MDY0ODA2M2IwMjViYTIzZDk2 ZDVkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPj4+ICtGcm9tOiBKb2huIE11bGxpZ2FuIDxq bXVsbGlnYW5AcmVkaGF0LmNvbT4KPj4+ICtEYXRlOiBUaHUsIDIxIEF1ZyAyMDI1IDEyOjQ0OjE3 IC0wNDAwCj4+PiArU3ViamVjdDogW1BBVENIIDQ0LzQ2XSBjZXBoYWRtOiBzdXBwb3J0IGNlcGhh ZG0gcnBtIGJhc2VkIGJ1aWxkcyB3aXRob3V0Cj4+PiArIHRvcF9sZXZlbC50eHQKPj4+ICsKPj4+ ICtTaWduZWQtb2ZmLWJ5OiBKb2huIE11bGxpZ2FuIDxqbXVsbGlnYW5AcmVkaGF0LmNvbT4KPj4+ ICsoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAyNmE0OTlhOGRhMzM5ZDg3MGFmMTkzZWE5NjQz NjhhZmJjODRjNjk0KQo+Pj4gKy0tLQo+Pj4gKyBzcmMvY2VwaGFkbS9idWlsZC5weSB8IDU2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4+PiArIDEgZmlsZSBj aGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPj4+ICsKPj4+ICtkaWZm IC0tZ2l0IGEvc3JjL2NlcGhhZG0vYnVpbGQucHkgYi9zcmMvY2VwaGFkbS9idWlsZC5weQo+Pj4g K2luZGV4IDQzYmM1OGE0MDAzLi4wMWM5MWZjMTY4MCAxMDA3NTUKPj4+ICstLS0gYS9zcmMvY2Vw aGFkbS9idWlsZC5weQo+Pj4gKysrKyBiL3NyYy9jZXBoYWRtL2J1aWxkLnB5Cj4+PiArQEAgLTQz NCw2ICs0MzQsNDcgQEAgZGVmIF9pbnN0YWxsX3JwbV9kZXBzKHRlbXBkaXIsIGNvbmZpZyk6Cj4+ PiArICAgICByZXR1cm4gZGluZm8KPj4+ICsgCj4+PiArIAo+Pj4gKytkZWYgX2dhdGhlcl9ycG1f cGFja2FnZV9kaXJzKHBhdGhzKToKPj4+ICsrICAgICMgPSBUaGUgZWFzeSB3YXkgPQo+Pj4gKysg ICAgIyB0aGUgdG9wX2xldmVsLnR4dCBmaWxlIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB3aGVy ZSB0aGUgcHl0aG9uIHBhY2thZ2VzCj4+PiArKyAgICAjIGFjdHVhbGx5IGFyZS4gV2UgbmVlZCBh bGwgb2YgdGhvc2UgYW5kIHRoZSBtZXRhLWRhdGEgZGlyIChwYXJlbnQgb2YKPj4+ICsrICAgICMg dG9wX2xldmVsLnR4dCkgdG8gYmUgaW5jbHVkZWQgaW4gb3VyIHppcGFwcAo+Pj4gKysgICAgdG9w X2xldmVsID0gTm9uZQo+Pj4gKysgICAgZm9yIHBhdGggaW4gcGF0aHM6Cj4+PiArKyAgICAgICAg aWYgcGF0aC5lbmRzd2l0aCgndG9wX2xldmVsLnR4dCcpOgo+Pj4gKysgICAgICAgICAgICB0b3Bf bGV2ZWwgPSBwYXRobGliLlBhdGgocGF0aCkKPj4+ICsrICAgIGlmIHRvcF9sZXZlbDoKPj4+ICsr ICAgICAgICBtZXRhX2RpciA9IHRvcF9sZXZlbC5wYXJlbnQKPj4+ICsrICAgICAgICBwa2dfZGly cyA9IFsKPj4+ICsrICAgICAgICAgICAgdG9wX2xldmVsLnBhcmVudC5wYXJlbnQgLyBwCj4+PiAr KyAgICAgICAgICAgIGZvciBwIGluIHRvcF9sZXZlbC5yZWFkX3RleHQoKS5zcGxpdGxpbmVzKCkK Pj4+ICsrICAgICAgICBdCj4+PiArKyAgICAgICAgcmV0dXJuIG1ldGFfZGlyLCBwa2dfZGlycwo+ Pj4gKysgICAgIyA9IFRoZSBoYXJkIHdheSA9Cj4+PiArKyAgICAjIGxvb3AgdGhyb3VnaCB0aGUg ZGlyZWN0b3JpZXMgdG8gZmluZCB0aGUgLmRpc3QtaW5mbyBkaXIgKGNvbnRhaW5pbmcgdGhlCj4+ PiArKyAgICAjIG1hbmRhdG9yeSBNRVRBREFUQSBmaWxlLCBhY2NvcmRpbmcgdG8gdGhlIHNwZWMp IGFuZCBvbmNlIHdlIGtub3cgdGhlCj4+PiArKyAgICAjIGxvY2F0aW9uIG9mIGRpc3QgaW5mbyB3 ZSBmaW5kIHRoZSBzaWJsaW5nIHBhdGhzIGZyb20gdGhlIHJwbSBsaXN0aW5nCj4+PiArKyAgICBk aXN0X2luZm8gPSBOb25lCj4+PiArKyAgICBwcGF0aHMgPSBbXQo+Pj4gKysgICAgZm9yIHBhdGgg aW4gcGF0aHM6Cj4+PiArKyAgICAgICAgcHBhdGggPSBwYXRobGliLlBhdGgocGF0aCkKPj4+ICsr ICAgICAgICBwcGF0aHMuYXBwZW5kKHBwYXRoKQo+Pj4gKysgICAgICAgIGlmIHBwYXRoLm5hbWUg PT0gJ01FVEFEQVRBJyBhbmQgcHBhdGgucGFyZW50Lm5hbWUuZW5kc3dpdGgoJy5kaXN0LWluZm8n KToKPj4+ICsrICAgICAgICAgICAgZGlzdF9pbmZvID0gcHBhdGgucGFyZW50Cj4+PiArKyAgICAg ICAgICAgIGJyZWFrCj4+PiArKyAgICBpZiBub3QgZGlzdF9pbmZvOgo+Pj4gKysgICAgICAgIHJh aXNlIFZhbHVlRXJyb3IoJ25vIC5kaXN0LWluZm8gTUVUQURBVEEgZm91bmQnKQo+Pj4gKysgICAg aWYgbm90IGRpc3RfaW5mby5wYXJlbnQubmFtZSA9PSAnc2l0ZS1wYWNrYWdlcyc6Cj4+PiArKyAg ICAgICAgcmFpc2UgVmFsdWVFcnJvcigKPj4+ICsrICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcGFy ZW50IGRpcmVjdG9yeSAobm90IHNpdGUtcGFja2FnZXMpOicKPj4+ICsrICAgICAgICAgICAgZicg e2Rpc3RfaW5mby5wYXJlbnQubmFtZX0nCj4+PiArKyAgICAgICAgKQo+Pj4gKysgICAgc2libGlu Z3MgPSBbCj4+PiArKyAgICAgICAgcCBmb3IgcCBpbiBwcGF0aHMgaWYgcC5wYXJlbnQgPT0gZGlz dF9pbmZvLnBhcmVudCBhbmQgcCAhPSBkaXN0X2luZm8KPj4+ICsrICAgIF0KPj4+ICsrICAgIHJl dHVybiBkaXN0X2luZm8sIHNpYmxpbmdzCj4+PiArKwo+Pj4gKysKPj4+ICsgZGVmIF9kZXBzX2Zy b21fcnBtKHRlbXBkaXIsIGNvbmZpZywgZGluZm8sIHBrZyk6Cj4+PiArICAgICAjIGZpcnN0LCBm aWd1cmUgb3V0IHdoYXQgcnBtIHByb3ZpZGVzIGEgcGFydGljdWxhciBweXRob24gbGliCj4+PiAr ICAgICBkaXN0ID0gZidweXRob24zLntzeXMudmVyc2lvbl9pbmZvLm1pbm9yfWRpc3Qoe3BrZ30p Jy5sb3dlcigpCj4+PiArQEAgLTQ2OSwyMCArNTEwLDcgQEAgZGVmIF9kZXBzX2Zyb21fcnBtKHRl bXBkaXIsIGNvbmZpZywgZGluZm8sIHBrZyk6Cj4+PiArICAgICAgICAgWydycG0nLCAnLXFsJywg cnBtbmFtZV0sIGNoZWNrPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUKPj4+ICsgICAgICkK Pj4+ICsgICAgIHBhdGhzID0gW2wuZGVjb2RlKCd1dGY4JykgZm9yIGwgaW4gcmVzLnN0ZG91dC5z cGxpdGxpbmVzKCldCj4+PiArLSAgICAjIHRoZSB0b3BfbGV2ZWwudHh0IGZpbGUgY2FuIGJlIHVz ZWQgdG8gZGV0ZXJtaW5lIHdoZXJlIHRoZSBweXRob24gcGFja2FnZXMKPj4+ICstICAgICMgYWN0 dWFsbHkgYXJlLiBXZSBuZWVkIGFsbCBvZiB0aG9zZSBhbmQgdGhlIG1ldGEtZGF0YSBkaXIgKHBh cmVudCBvZgo+Pj4gKy0gICAgIyB0b3BfbGV2ZWwudHh0KSB0byBiZSBpbmNsdWRlZCBpbiBvdXIg emlwYXBwCj4+PiArLSAgICB0b3BfbGV2ZWwgPSBOb25lCj4+PiArLSAgICBmb3IgcGF0aCBpbiBw YXRoczoKPj4+ICstICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKCd0b3BfbGV2ZWwudHh0Jyk6Cj4+ PiArLSAgICAgICAgICAgIHRvcF9sZXZlbCA9IHBhdGhsaWIuUGF0aChwYXRoKQo+Pj4gKy0gICAg aWYgbm90IHRvcF9sZXZlbDoKPj4+ICstICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0b3BfbGV2 ZWwgbm90IGZvdW5kJykKPj4+ICstICAgIG1ldGFfZGlyID0gdG9wX2xldmVsLnBhcmVudAo+Pj4g Ky0gICAgcGtnX2RpcnMgPSBbCj4+PiArLSAgICAgICAgdG9wX2xldmVsLnBhcmVudC5wYXJlbnQg LyBwCj4+PiArLSAgICAgICAgZm9yIHAgaW4gdG9wX2xldmVsLnJlYWRfdGV4dCgpLnNwbGl0bGlu ZXMoKQo+Pj4gKy0gICAgXQo+Pj4gKysgICAgbWV0YV9kaXIsIHBrZ19kaXJzID0gX2dhdGhlcl9y cG1fcGFja2FnZV9kaXJzKHBhdGhzKQo+Pj4gKyAgICAgbWV0YV9kZXN0ID0gdGVtcGRpciAvIG1l dGFfZGlyLm5hbWUKPj4+ICsgICAgIGxvZy5pbmZvKGYiQ29weWluZyB7bWV0YV9kaXJ9IHRvIHtt ZXRhX2Rlc3R9IikKPj4+ICsgICAgICMgY29weSB0aGUgbWV0YSBkYXRhIGRpcmVjdG9yeQo+Pj4g Ky0tIAo+Pj4gKzIuNDcuMwo+Pj4gKwo+Pj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvMDA0NS1jZXBo YWRtLWJ1aWxkLUFkZC1EZWJpYW4tcGFja2FnZS1zdXBwb3J0LWZvci1idW5kbGVkLnBhdGNoIGIv cGF0Y2hlcy8wMDQ1LWNlcGhhZG0tYnVpbGQtQWRkLURlYmlhbi1wYWNrYWdlLXN1cHBvcnQtZm9y LWJ1bmRsZWQucGF0Y2gKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAw MDAwMC4uOTQyNDE0OTBiNjQKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL3BhdGNoZXMvMDA0 NS1jZXBoYWRtLWJ1aWxkLUFkZC1EZWJpYW4tcGFja2FnZS1zdXBwb3J0LWZvci1idW5kbGVkLnBh dGNoCj4+PiBAQCAtMCwwICsxLDI2MSBAQAo+Pj4gK0Zyb20gYTQ3NDRmZWIxNDU3YWE3ZmIzZjQ3 YjQyZjI5MTM4NjgyY2M3ZDQxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPj4+ICtGcm9tOiBL ZWZ1IENoYWkgPGsuY2hhaUBwcm94bW94LmNvbT4KPj4+ICtEYXRlOiBUdWUsIDE0IE9jdCAyMDI1 IDIxOjA0OjQyICswODAwCj4+PiArU3ViamVjdDogW1BBVENIIDQ1LzQ2XSBjZXBoYWRtL2J1aWxk OiBBZGQgRGViaWFuIHBhY2thZ2Ugc3VwcG9ydCBmb3IgYnVuZGxlZAo+Pj4gKyBkZXBlbmRlbmNp ZXMKPj4+ICsKPj4+ICtFeHRlbmRzIHRoZSBjZXBoYWRtIGJ1aWxkIHNjcmlwdCB0byBzdXBwb3J0 IGJ1bmRsaW5nIGRlcGVuZGVuY2llcyBmcm9tCj4+PiArRGViaWFuIHBhY2thZ2VzIGluIGFkZGl0 aW9uIHRvIHBpcCBhbmQgUlBNIHBhY2thZ2VzLiBUaGlzIGFsbG93cyBidWlsZGluZwo+Pj4gK2Nl cGhhZG0gb24gRGViaWFuLWJhc2VkIGRpc3RyaWJ1dGlvbnMgdXNpbmcgc3lzdGVtIHBhY2thZ2Vz Lgo+Pj4gKwo+Pj4gK0tleSBjaGFuZ2VzOgo+Pj4gKy0gQWRkICdkZWInIHRvIERlcGVuZGVuY3lN b2RlIGVudW0gdG8gZW5hYmxlIERlYmlhbiBwYWNrYWdlIG1vZGUKPj4+ICstIEltcGxlbWVudCBf c2V0dXBfZGViKCkgdG8gY29uZmlndXJlIERlYmlhbiBkZXBlbmRlbmN5IHJlcXVpcmVtZW50cwo+ Pj4gKy0gQWRkIF9pbnN0YWxsX2RlYl9kZXBzKCkgdG8gb3JjaGVzdHJhdGUgRGViaWFuIHBhY2th Z2UgaW5zdGFsbGF0aW9uCj4+PiArLSBBZGQgX2dhdGhlcl9kZWJfcGFja2FnZV9kaXJzKCkgdG8g cGFyc2UgRGViaWFuIHBhY2thZ2UgZmlsZSBsaXN0aW5ncwo+Pj4gKyAgYW5kIGxvY2F0ZSBQeXRo b24gcGFja2FnZSBkaXJlY3RvcmllcyAoaGFuZGxlcyBib3RoIHNpdGUtcGFja2FnZXMgYW5kCj4+ PiArICBkaXN0LXBhY2thZ2VzIGRpcmVjdG9yaWVzIHVzZWQgYnkgRGViaWFuKQo+Pj4gKy0gQWRk IF9kZXBzX2Zyb21fZGViKCkgdG8gZXh0cmFjdCBQeXRob24gZGVwZW5kZW5jaWVzIGZyb20gaW5z dGFsbGVkCj4+PiArICBEZWJpYW4gcGFja2FnZXMgdXNpbmcgZHBrZy9hcHQtY2FjaGUgdG9vbHMK Pj4+ICstIEZpeCB2YXJpYWJsZSByZWZlcmVuY2UgYnVnIGluIF9pbnN0YWxsX2RlcHMoKSAoZGVw cy5tb2RlIC0+IGNvbmZpZy5kZXBzX21vZGUpCj4+PiArCj4+PiArVGhlIERlYmlhbiBpbXBsZW1l bnRhdGlvbiBmb2xsb3dzIGEgc2ltaWxhciBwYXR0ZXJuIHRvIHRoZSBleGlzdGluZyBSUE0KPj4+ ICtzdXBwb3J0LCB1c2luZyBkcGtnLXF1ZXJ5IGFuZCBkcGtnIC1MIHRvIGxvY2F0ZSBpbnN0YWxs ZWQgcGFja2FnZXMgYW5kCj4+PiArdGhlaXIgZmlsZXMsIHdpdGggc3BlY2lhbCBoYW5kbGluZyBm b3IgRGViaWFuIG5hbWluZyBjb252ZW50aW9ucwo+Pj4gKyhlLmcuLCBQeVlBTUwgLT4gcHl0aG9u My15YW1sKS4KPj4+ICsKPj4+ICtTaWduZWQtb2ZmLWJ5OiBLZWZ1IENoYWkgPGsuY2hhaUBwcm94 bW94LmNvbT4KPj4+ICsoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAzZmY5YjBjMjRlMzNkZWJl OTVhMGEwYzZiNDJkYTMwYmU3ODg4NzFjKQo+Pj4gKy0tLQo+Pj4gKyBzcmMvY2VwaGFkbS9idWls ZC5weSB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4+ PiArIDEgZmlsZSBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCj4+ PiArCj4+PiArZGlmZiAtLWdpdCBhL3NyYy9jZXBoYWRtL2J1aWxkLnB5IGIvc3JjL2NlcGhhZG0v YnVpbGQucHkKPj4+ICtpbmRleCAwMWM5MWZjMTY4MC4uNTNkMzk4M2RlODkgMTAwNzU1Cj4+PiAr LS0tIGEvc3JjL2NlcGhhZG0vYnVpbGQucHkKPj4+ICsrKysgYi9zcmMvY2VwaGFkbS9idWlsZC5w eQo+Pj4gK0BAIC0xNTQsNiArMTU0LDcgQEAgY2xhc3MgUGlwRW52KGVudW0uRW51bSk6Cj4+PiAr IGNsYXNzIERlcGVuZGVuY3lNb2RlKGVudW0uRW51bSk6Cj4+PiArICAgICBwaXAgPSBlbnVtLmF1 dG8oKQo+Pj4gKyAgICAgcnBtID0gZW51bS5hdXRvKCkKPj4+ICsrICAgIGRlYiA9IGVudW0uYXV0 bygpCj4+PiArICAgICBub25lID0gZW51bS5hdXRvKCkKPj4+ICsgCj4+PiArIAo+Pj4gK0BAIC0x NjksNiArMTcwLDggQEAgY2xhc3MgQ29uZmlnOgo+Pj4gKyAgICAgICAgICAgICBzZWxmLl9zZXR1 cF9waXAoKQo+Pj4gKyAgICAgICAgIGVsaWYgc2VsZi5kZXBzX21vZGUgPT0gRGVwZW5kZW5jeU1v ZGUucnBtOgo+Pj4gKyAgICAgICAgICAgICBzZWxmLl9zZXR1cF9ycG0oKQo+Pj4gKysgICAgICAg IGVsaWYgc2VsZi5kZXBzX21vZGUgPT0gRGVwZW5kZW5jeU1vZGUuZGViOgo+Pj4gKysgICAgICAg ICAgICBzZWxmLl9zZXR1cF9kZWIoKQo+Pj4gKyAKPj4+ICsgICAgIGRlZiBfc2V0dXBfcGlwKHNl bGYpOgo+Pj4gKyAgICAgICAgIGlmIHNlbGYuX21hal9taW4gPT0gKDMsIDYpOgo+Pj4gK0BAIC0x ODAsNiArMTgzLDkgQEAgY2xhc3MgQ29uZmlnOgo+Pj4gKyAgICAgZGVmIF9zZXR1cF9ycG0oc2Vs Zik6Cj4+PiArICAgICAgICAgc2VsZi5yZXF1aXJlbWVudHMgPSBbSW5zdGFsbFNwZWMoKip2KSBm b3IgdiBpbiBQWV9SRVFVSVJFTUVOVFNdCj4+PiArIAo+Pj4gKysgICAgZGVmIF9zZXR1cF9kZWIo c2VsZik6Cj4+PiArKyAgICAgICAgc2VsZi5yZXF1aXJlbWVudHMgPSBbSW5zdGFsbFNwZWMoKip2 KSBmb3IgdiBpbiBQWV9SRVFVSVJFTUVOVFNdCj4+PiArKwo+Pj4gKyAKPj4+ICsgY2xhc3MgRGVw ZW5kZW5jeUluZm86Cj4+PiArICAgICAiIiJUeXBlIGZvciB0cmFja2luZyBidW5kbGVkIGRlcGVu ZGVuY2llcy4iIiIKPj4+ICtAQCAtMzMzLDcgKzMzOSw5IEBAIGRlZiBfaW5zdGFsbF9kZXBzKHRl bXBkaXIsIGNvbmZpZyk6Cj4+PiArICAgICAgICAgcmV0dXJuIF9pbnN0YWxsX3BpcF9kZXBzKHRl bXBkaXIsIGNvbmZpZykKPj4+ICsgICAgIGlmIGNvbmZpZy5kZXBzX21vZGUgPT0gRGVwZW5kZW5j eU1vZGUucnBtOgo+Pj4gKyAgICAgICAgIHJldHVybiBfaW5zdGFsbF9ycG1fZGVwcyh0ZW1wZGly LCBjb25maWcpCj4+PiArLSAgICByYWlzZSBWYWx1ZUVycm9yKGYndW5leHBlY3RlZCBkZXBzIG1v ZGU6IHtkZXBzLm1vZGV9JykKPj4+ICsrICAgIGlmIGNvbmZpZy5kZXBzX21vZGUgPT0gRGVwZW5k ZW5jeU1vZGUuZGViOgo+Pj4gKysgICAgICAgIHJldHVybiBfaW5zdGFsbF9kZWJfZGVwcyh0ZW1w ZGlyLCBjb25maWcpCj4+PiArKyAgICByYWlzZSBWYWx1ZUVycm9yKGYndW5leHBlY3RlZCBkZXBz IG1vZGU6IHtjb25maWcuZGVwc19tb2RlfScpCj4+PiArIAo+Pj4gKyAKPj4+ICsgZGVmIF9pbnN0 YWxsX3BpcF9kZXBzKHRlbXBkaXIsIGNvbmZpZyk6Cj4+PiArQEAgLTQzNCw3ICs0NDIsMjYgQEAg ZGVmIF9pbnN0YWxsX3JwbV9kZXBzKHRlbXBkaXIsIGNvbmZpZyk6Cj4+PiArICAgICByZXR1cm4g ZGluZm8KPj4+ICsgCj4+PiArIAo+Pj4gKy1kZWYgX2dhdGhlcl9ycG1fcGFja2FnZV9kaXJzKHBh dGhzKToKPj4+ICsrZGVmIF9pbnN0YWxsX2RlYl9kZXBzKHRlbXBkaXIsIGNvbmZpZyk6Cj4+PiAr KyAgICBsb2cuaW5mbygiSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMgdXNpbmcgRGViaWFuIHBhY2th Z2VzIikKPj4+ICsrICAgIGRpbmZvID0gRGVwZW5kZW5jeUluZm8oY29uZmlnKQo+Pj4gKysgICAg Zm9yIHBrZyBpbiBjb25maWcucmVxdWlyZW1lbnRzOgo+Pj4gKysgICAgICAgIGxvZy5pbmZvKGYi TG9va2luZyBmb3IgZGViaWFuIHBhY2thZ2UgZm9yOiB7cGtnLm5hbWUhcn0iKQo+Pj4gKysgICAg ICAgIF9kZXBzX2Zyb21fZGViKHRlbXBkaXIsIGNvbmZpZywgZGluZm8sIHBrZy5uYW1lKQo+Pj4g KysgICAgcmV0dXJuIGRpbmZvCj4+PiArKwo+Pj4gKysKPj4+ICsrZGVmIF9nYXRoZXJfcGFja2Fn ZV9kaXJzKHBhdGhzLCBleHBlY3RlZF9wYXJlbnRfZGlyKToKPj4+ICsrICAgICIiIlBhcnNlIHBh Y2thZ2UgZmlsZSBsaXN0aW5nIHRvIGZpbmQgUHl0aG9uIHBhY2thZ2UgZGlyZWN0b3JpZXMuCj4+ PiArKwo+Pj4gKysgICAgQXJnczoKPj4+ICsrICAgICAgICBwYXRoczogTGlzdCBvZiBmaWxlIHBh dGhzIGZyb20gcGFja2FnZSBsaXN0aW5nCj4+PiArKyAgICAgICAgZXhwZWN0ZWRfcGFyZW50X2Rp cjogRXhwZWN0ZWQgcGFyZW50IGRpcmVjdG9yeSBuYW1lIChlLmcuLCAnc2l0ZS1wYWNrYWdlcycg Zm9yIFJQTSwKPj4+ICsrICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3QtcGFja2FnZXMn IGZvciBEZWJpYW4pCj4+PiArKwo+Pj4gKysgICAgUmV0dXJuczoKPj4+ICsrICAgICAgICBUdXBs ZSBvZiAobWV0YWRhdGFfZGlyLCBwYWNrYWdlX2RpcnMpCj4+PiArKyAgICAiIiIKPj4+ICsgICAg ICMgPSBUaGUgZWFzeSB3YXkgPQo+Pj4gKyAgICAgIyB0aGUgdG9wX2xldmVsLnR4dCBmaWxlIGNh biBiZSB1c2VkIHRvIGRldGVybWluZSB3aGVyZSB0aGUgcHl0aG9uIHBhY2thZ2VzCj4+PiArICAg ICAjIGFjdHVhbGx5IGFyZS4gV2UgbmVlZCBhbGwgb2YgdGhvc2UgYW5kIHRoZSBtZXRhLWRhdGEg ZGlyIChwYXJlbnQgb2YKPj4+ICtAQCAtNDUzLDcgKzQ4MCw3IEBAIGRlZiBfZ2F0aGVyX3JwbV9w YWNrYWdlX2RpcnMocGF0aHMpOgo+Pj4gKyAgICAgIyA9IFRoZSBoYXJkIHdheSA9Cj4+PiArICAg ICAjIGxvb3AgdGhyb3VnaCB0aGUgZGlyZWN0b3JpZXMgdG8gZmluZCB0aGUgLmRpc3QtaW5mbyBk aXIgKGNvbnRhaW5pbmcgdGhlCj4+PiArICAgICAjIG1hbmRhdG9yeSBNRVRBREFUQSBmaWxlLCBh Y2NvcmRpbmcgdG8gdGhlIHNwZWMpIGFuZCBvbmNlIHdlIGtub3cgdGhlCj4+PiArLSAgICAjIGxv Y2F0aW9uIG9mIGRpc3QgaW5mbyB3ZSBmaW5kIHRoZSBzaWJsaW5nIHBhdGhzIGZyb20gdGhlIHJw bSBsaXN0aW5nCj4+PiArKyAgICAjIGxvY2F0aW9uIG9mIGRpc3QgaW5mbyB3ZSBmaW5kIHRoZSBz aWJsaW5nIHBhdGhzIGZyb20gdGhlIHBhY2thZ2UgbGlzdGluZwo+Pj4gKyAgICAgZGlzdF9pbmZv ID0gTm9uZQo+Pj4gKyAgICAgcHBhdGhzID0gW10KPj4+ICsgICAgIGZvciBwYXRoIGluIHBhdGhz Ogo+Pj4gK0BAIC00NjQsOSArNDkxLDkgQEAgZGVmIF9nYXRoZXJfcnBtX3BhY2thZ2VfZGlycyhw YXRocyk6Cj4+PiArICAgICAgICAgICAgIGJyZWFrCj4+PiArICAgICBpZiBub3QgZGlzdF9pbmZv Ogo+Pj4gKyAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25vIC5kaXN0LWluZm8gTUVUQURBVEEg Zm91bmQnKQo+Pj4gKy0gICAgaWYgbm90IGRpc3RfaW5mby5wYXJlbnQubmFtZSA9PSAnc2l0ZS1w YWNrYWdlcyc6Cj4+PiArKyAgICBpZiBkaXN0X2luZm8ucGFyZW50Lm5hbWUgIT0gZXhwZWN0ZWRf cGFyZW50X2RpcjoKPj4+ICsgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAo+Pj4gKy0gICAgICAg ICAgICAndW5leHBlY3RlZCBwYXJlbnQgZGlyZWN0b3J5IChub3Qgc2l0ZS1wYWNrYWdlcyk6Jwo+ Pj4gKysgICAgICAgICAgICBmJ3VuZXhwZWN0ZWQgcGFyZW50IGRpcmVjdG9yeSAobm90IHtleHBl Y3RlZF9wYXJlbnRfZGlyfSk6Jwo+Pj4gKyAgICAgICAgICAgICBmJyB7ZGlzdF9pbmZvLnBhcmVu dC5uYW1lfScKPj4+ICsgICAgICAgICApCj4+PiArICAgICBzaWJsaW5ncyA9IFsKPj4+ICtAQCAt NDc1LDYgKzUwMiwzMSBAQCBkZWYgX2dhdGhlcl9ycG1fcGFja2FnZV9kaXJzKHBhdGhzKToKPj4+ ICsgICAgIHJldHVybiBkaXN0X2luZm8sIHNpYmxpbmdzCj4+PiArIAo+Pj4gKyAKPj4+ICsrZGVm IF9jb3B5X3BhY2thZ2VfZmlsZXModGVtcGRpciwgcGF0aHMsIGV4cGVjdGVkX3BhcmVudF9kaXIp Ogo+Pj4gKysgICAgIiIiQ29weSBwYWNrYWdlIGZpbGVzIHRvIHRoZSBidWlsZCBkaXJlY3Rvcnku Cj4+PiArKwo+Pj4gKysgICAgQXJnczoKPj4+ICsrICAgICAgICB0ZW1wZGlyOiBUZW1wb3Jhcnkg ZGlyZWN0b3J5IHRvIGNvcHkgZmlsZXMgdG8KPj4+ICsrICAgICAgICBwYXRoczogTGlzdCBvZiBm aWxlIHBhdGhzIGZyb20gcGFja2FnZSBsaXN0aW5nCj4+PiArKyAgICAgICAgZXhwZWN0ZWRfcGFy ZW50X2RpcjogRXhwZWN0ZWQgcGFyZW50IGRpcmVjdG9yeSBuYW1lIHBlciBwYWNrYWdpbmcgY29u dmVudGlvbjoKPj4+ICsrICAgICAgICAgICAgLSAnc2l0ZS1wYWNrYWdlcycgZm9yIFJQTS1iYXNl ZCBkaXN0cmlidXRpb25zCj4+PiArKyAgICAgICAgICAgIC0gJ2Rpc3QtcGFja2FnZXMnIGZvciBE ZWJpYW4tYmFzZWQgZGlzdHJpYnV0aW9ucwo+Pj4gKysKPj4+ICsrICAgIFJldHVybnM6Cj4+PiAr KyAgICAgICAgTm9uZQo+Pj4gKysgICAgIiIiCj4+PiArKyAgICBtZXRhX2RpciwgcGtnX2RpcnMg PSBfZ2F0aGVyX3BhY2thZ2VfZGlycyhwYXRocywgZXhwZWN0ZWRfcGFyZW50X2RpcikKPj4+ICsr ICAgIG1ldGFfZGVzdCA9IHRlbXBkaXIgLyBtZXRhX2Rpci5uYW1lCj4+PiArKyAgICBsb2cuaW5m byhmIkNvcHlpbmcge21ldGFfZGlyfSB0byB7bWV0YV9kZXN0fSIpCj4+PiArKyAgICAjIGNvcHkg dGhlIG1ldGEgZGF0YSBkaXJlY3RvcnkKPj4+ICsrICAgIHNodXRpbC5jb3B5dHJlZShtZXRhX2Rp ciwgbWV0YV9kZXN0LCBpZ25vcmU9X2lnbm9yZV9jZXBoYWRtbGliKQo+Pj4gKysgICAgIyBjb3B5 IGFsbCB0aGUgcGFja2FnZSBkaXJlY3Rvcmllcwo+Pj4gKysgICAgZm9yIHBrZ19kaXIgaW4gcGtn X2RpcnM6Cj4+PiArKyAgICAgICAgcGtnX2Rlc3QgPSB0ZW1wZGlyIC8gcGtnX2Rpci5uYW1lCj4+ PiArKyAgICAgICAgbG9nLmluZm8oZiJDb3B5aW5nIHtwa2dfZGlyfSB0byB7cGtnX2Rlc3R9IikK Pj4+ICsrICAgICAgICBzaHV0aWwuY29weXRyZWUocGtnX2RpciwgcGtnX2Rlc3QsIGlnbm9yZT1f aWdub3JlX2NlcGhhZG1saWIpCj4+PiArKwo+Pj4gKysKPj4+ICsgZGVmIF9kZXBzX2Zyb21fcnBt KHRlbXBkaXIsIGNvbmZpZywgZGluZm8sIHBrZyk6Cj4+PiArICAgICAjIGZpcnN0LCBmaWd1cmUg b3V0IHdoYXQgcnBtIHByb3ZpZGVzIGEgcGFydGljdWxhciBweXRob24gbGliCj4+PiArICAgICBk aXN0ID0gZidweXRob24zLntzeXMudmVyc2lvbl9pbmZvLm1pbm9yfWRpc3Qoe3BrZ30pJy5sb3dl cigpCj4+PiArQEAgLTUxMCwxNiArNTYyLDkyIEBAIGRlZiBfZGVwc19mcm9tX3JwbSh0ZW1wZGly LCBjb25maWcsIGRpbmZvLCBwa2cpOgo+Pj4gKyAgICAgICAgIFsncnBtJywgJy1xbCcsIHJwbW5h bWVdLCBjaGVjaz1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFCj4+PiArICAgICApCj4+PiAr ICAgICBwYXRocyA9IFtsLmRlY29kZSgndXRmOCcpIGZvciBsIGluIHJlcy5zdGRvdXQuc3BsaXRs aW5lcygpXQo+Pj4gKy0gICAgbWV0YV9kaXIsIHBrZ19kaXJzID0gX2dhdGhlcl9ycG1fcGFja2Fn ZV9kaXJzKHBhdGhzKQo+Pj4gKy0gICAgbWV0YV9kZXN0ID0gdGVtcGRpciAvIG1ldGFfZGlyLm5h bWUKPj4+ICstICAgIGxvZy5pbmZvKGYiQ29weWluZyB7bWV0YV9kaXJ9IHRvIHttZXRhX2Rlc3R9 IikKPj4+ICstICAgICMgY29weSB0aGUgbWV0YSBkYXRhIGRpcmVjdG9yeQo+Pj4gKy0gICAgc2h1 dGlsLmNvcHl0cmVlKG1ldGFfZGlyLCBtZXRhX2Rlc3QsIGlnbm9yZT1faWdub3JlX2NlcGhhZG1s aWIpCj4+PiArLSAgICAjIGNvcHkgYWxsIHRoZSBwYWNrYWdlIGRpcmVjdG9yaWVzCj4+PiArLSAg ICBmb3IgcGtnX2RpciBpbiBwa2dfZGlyczoKPj4+ICstICAgICAgICBwa2dfZGVzdCA9IHRlbXBk aXIgLyBwa2dfZGlyLm5hbWUKPj4+ICstICAgICAgICBsb2cuaW5mbyhmIkNvcHlpbmcge3BrZ19k aXJ9IHRvIHtwa2dfZGVzdH0iKQo+Pj4gKy0gICAgICAgIHNodXRpbC5jb3B5dHJlZShwa2dfZGly LCBwa2dfZGVzdCwgaWdub3JlPV9pZ25vcmVfY2VwaGFkbWxpYikKPj4+ICsrICAgICMgUlBNLWJh c2VkIGRpc3RyaWJ1dGlvbnMgdXNlICdzaXRlLXBhY2thZ2VzJyBmb3IgUHl0aG9uIHBhY2thZ2Vz Cj4+PiArKyAgICBfY29weV9wYWNrYWdlX2ZpbGVzKHRlbXBkaXIsIHBhdGhzLCAnc2l0ZS1wYWNr YWdlcycpCj4+PiArKwo+Pj4gKysKPj4+ICsrZGVmIF9kZXBzX2Zyb21fZGViKHRlbXBkaXIsIGNv bmZpZywgZGluZm8sIHBrZyk6Cj4+PiArKyAgICAiIiJFeHRyYWN0IFB5dGhvbiBkZXBlbmRlbmNp ZXMgZnJvbSBEZWJpYW4gcGFja2FnZXMuCj4+PiArKwo+Pj4gKysgICAgQXJnczoKPj4+ICsrICAg ICAgICB0ZW1wZGlyOiBUZW1wb3JhcnkgZGlyZWN0b3J5IHRvIGNvcHkgcGFja2FnZSBmaWxlcyB0 bwo+Pj4gKysgICAgICAgIGNvbmZpZzogQnVpbGQgY29uZmlndXJhdGlvbgo+Pj4gKysgICAgICAg IGRpbmZvOiBEZXBlbmRlbmN5SW5mbyBpbnN0YW5jZSB0byB0cmFjayBkZXBlbmRlbmNpZXMKPj4+ ICsrICAgICAgICBwa2c6IFB5dGhvbiBwYWNrYWdlIG5hbWUgKGUuZy4sICdNYXJrdXBTYWZlJywg J0ppbmphMicsICdQeVlBTUwnKQo+Pj4gKysgICAgIiIiCj4+PiArKyAgICAjIENvbnZlcnQgUHl0 aG9uIHBhY2thZ2UgbmFtZSB0byBEZWJpYW4gcGFja2FnZSBuYW1lCj4+PiArKyAgICAjIFB5dGhv biBwYWNrYWdlcyBhcmUgdHlwaWNhbGx5IG5hbWVkIHB5dGhvbjMtPGxvd2VyY2FzZS1uYW1lPgo+ Pj4gKysgICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlczogUHlZQU1MIC0+IHB5dGhvbjMteWFtbCwg TWFya3VwU2FmZSAtPiBweXRob24zLW1hcmt1cHNhZmUKPj4+ICsrICAgIHBrZ19sb3dlciA9IHBr Zy5sb3dlcigpCj4+PiArKyAgICBpZiBwa2dfbG93ZXIgPT0gJ3B5eWFtbCc6Cj4+PiArKyAgICAg ICAgZGViX3BrZ19uYW1lID0gJ3B5dGhvbjMteWFtbCcKPj4+ICsrICAgIGVsc2U6Cj4+PiArKyAg ICAgICAgZGViX3BrZ19uYW1lID0gZidweXRob24zLXtwa2dfbG93ZXJ9Jwo+Pj4gKysKPj4+ICsr ICAgICMgRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBwYWNrYWdlIHVzaW5nIGFwdC1jYWNoZQo+Pj4g KysgICAgIyBUaGlzIGhlbHBzIHZlcmlmeSB0aGUgcGFja2FnZSBleGlzdHMgYmVmb3JlIHRyeWlu ZyB0byBsaXN0IGl0cyBmaWxlcwo+Pj4gKysgICAgdHJ5Ogo+Pj4gKysgICAgICAgIHJlcyA9IHN1 YnByb2Nlc3MucnVuKAo+Pj4gKysgICAgICAgICAgICBbJ2FwdC1jYWNoZScsICdzaG93JywgZGVi X3BrZ19uYW1lXSwKPj4+ICsrICAgICAgICAgICAgY2hlY2s9VHJ1ZSwKPj4+ICsrICAgICAgICAg ICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKPj4+ICsrICAgICAgICAgICAgc3RkZXJyPXN1YnBy b2Nlc3MuUElQRSwKPj4+ICsrICAgICAgICApCj4+PiArKyAgICBleGNlcHQgc3VicHJvY2Vzcy5D YWxsZWRQcm9jZXNzRXJyb3I6Cj4+PiArKyAgICAgICAgIyBQYWNrYWdlIG5vdCBmb3VuZCwgdHJ5 IGFsdGVybmF0aXZlIG5hbWluZwo+Pj4gKysgICAgICAgIGxvZy53YXJuaW5nKGYiUGFja2FnZSB7 ZGViX3BrZ19uYW1lfSBub3QgZm91bmQgdmlhIGFwdC1jYWNoZSwgdHJ5aW5nIGRwa2cgLVMiKQo+ Pj4gKysgICAgICAgICMgVHJ5IHRvIHNlYXJjaCBmb3IgZmlsZXMgdGhhdCBtaWdodCBiZWxvbmcg dG8gdGhpcyBwYWNrYWdlCj4+PiArKyAgICAgICAgIyBTZWFyY2ggZm9yIHRoZSBQeXRob24gbW9k dWxlIGluIHNpdGUtcGFja2FnZXMKPj4+ICsrICAgICAgICBzZWFyY2hfcGF0dGVybiA9IGYnL3Vz ci9saWIvcHl0aG9uMyovZGlzdC1wYWNrYWdlcy97cGtnLmxvd2VyKCl9KicKPj4+ICsrICAgICAg ICB0cnk6Cj4+PiArKyAgICAgICAgICAgIHJlcyA9IHN1YnByb2Nlc3MucnVuKAo+Pj4gKysgICAg ICAgICAgICAgICAgWydkcGtnJywgJy1TJywgc2VhcmNoX3BhdHRlcm5dLAo+Pj4gKysgICAgICAg ICAgICAgICAgY2hlY2s9VHJ1ZSwKPj4+ICsrICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9j ZXNzLlBJUEUsCj4+PiArKyAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAo+ Pj4gKysgICAgICAgICAgICApCj4+PiArKyAgICAgICAgICAgICMgZHBrZyAtUyBvdXRwdXQgZm9y bWF0OiAicGFja2FnZTogL3BhdGgvdG8vZmlsZSIKPj4+ICsrICAgICAgICAgICAgZGViX3BrZ19u YW1lID0gcmVzLnN0ZG91dC5kZWNvZGUoJ3V0ZjgnKS5zcGxpdCgnOicpWzBdLnN0cmlwKCkKPj4+ ICsrICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgo+ Pj4gKysgICAgICAgICAgICBsb2cuZXJyb3IoZiJDb3VsZCBub3QgZmluZCBEZWJpYW4gcGFja2Fn ZSBmb3Ige3BrZ30iKQo+Pj4gKysgICAgICAgICAgICBsb2cuZXJyb3IoZiJUcmllZDoge2RlYl9w a2dfbmFtZX0gYW5kIHBhdHRlcm4gc2VhcmNoIikKPj4+ICsrICAgICAgICAgICAgc3lzLmV4aXQo MSkKPj4+ICsrCj4+PiArKyAgICAjIEdldCB2ZXJzaW9uIGluZm9ybWF0aW9uIHVzaW5nIGRwa2ct cXVlcnkKPj4+ICsrICAgIHRyeToKPj4+ICsrICAgICAgICByZXMgPSBzdWJwcm9jZXNzLnJ1bigK Pj4+ICsrICAgICAgICAgICAgWydkcGtnLXF1ZXJ5JywgJy1XJywgJy1mPSR7VmVyc2lvbn1cXG4n LCBkZWJfcGtnX25hbWVdLAo+Pj4gKysgICAgICAgICAgICBjaGVjaz1UcnVlLAo+Pj4gKysgICAg ICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAo+Pj4gKysgICAgICAgICkKPj4+ICsrICAg ICAgICB2ZXJzaW9uID0gcmVzLnN0ZG91dC5kZWNvZGUoJ3V0ZjgnKS5zdHJpcCgpCj4+PiArKyAg ICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXJyOgo+Pj4gKysgICAg ICAgIGxvZy5lcnJvcihmIkNvdWxkIG5vdCBxdWVyeSB2ZXJzaW9uIGZvciBwYWNrYWdlIHtkZWJf cGtnX25hbWV9OiB7ZXJyfSIpCj4+PiArKyAgICAgICAgc3lzLmV4aXQoMSkKPj4+ICsrCj4+PiAr KyAgICBsb2cuaW5mbyhmIkRlYmlhbiBQYWNrYWdlOiB7ZGViX3BrZ19uYW1lfSAodmVyc2lvbjog e3ZlcnNpb259KSIpCj4+PiArKyAgICBkaW5mby5hZGQoCj4+PiArKyAgICAgICAgcGtnLAo+Pj4g KysgICAgICAgIGRlYl9uYW1lPWRlYl9wa2dfbmFtZSwKPj4+ICsrICAgICAgICB2ZXJzaW9uPXZl cnNpb24sCj4+PiArKyAgICAgICAgcGFja2FnZV9zb3VyY2U9J2RlYicsCj4+PiArKyAgICApCj4+ PiArKwo+Pj4gKysgICAgIyBHZXQgdGhlIGxpc3Qgb2YgZmlsZXMgcHJvdmlkZWQgYnkgdGhlIERl YmlhbiBwYWNrYWdlCj4+PiArKyAgICB0cnk6Cj4+PiArKyAgICAgICAgcmVzID0gc3VicHJvY2Vz cy5ydW4oCj4+PiArKyAgICAgICAgICAgIFsnZHBrZycsICctTCcsIGRlYl9wa2dfbmFtZV0sCj4+ PiArKyAgICAgICAgICAgIGNoZWNrPVRydWUsCj4+PiArKyAgICAgICAgICAgIHN0ZG91dD1zdWJw cm9jZXNzLlBJUEUsCj4+PiArKyAgICAgICAgKQo+Pj4gKysgICAgZXhjZXB0IHN1YnByb2Nlc3Mu Q2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGVycjoKPj4+ICsrICAgICAgICBsb2cuZXJyb3IoZiJDb3Vs ZCBub3QgbGlzdCBmaWxlcyBmb3IgcGFja2FnZSB7ZGViX3BrZ19uYW1lfToge2Vycn0iKQo+Pj4g KysgICAgICAgIHN5cy5leGl0KDEpCj4+PiArKwo+Pj4gKysgICAgcGF0aHMgPSBbbC5kZWNvZGUo J3V0ZjgnKSBmb3IgbCBpbiByZXMuc3Rkb3V0LnNwbGl0bGluZXMoKV0KPj4+ICsrICAgICMgRGVi aWFuLWJhc2VkIGRpc3RyaWJ1dGlvbnMgdXNlICdkaXN0LXBhY2thZ2VzJyBmb3Igc3lzdGVtLW1h bmFnZWQgUHl0aG9uIHBhY2thZ2VzCj4+PiArKyAgICAjIHBlciBEZWJpYW4gUHl0aG9uIFBvbGlj eTogaHR0cHM6Ly93d3cuZGViaWFuLm9yZy9kb2MvcGFja2FnaW5nLW1hbnVhbHMvcHl0aG9uLXBv bGljeS8KPj4+ICsrICAgIF9jb3B5X3BhY2thZ2VfZmlsZXModGVtcGRpciwgcGF0aHMsICdkaXN0 LXBhY2thZ2VzJykKPj4+ICsgCj4+PiArIAo+Pj4gKyBkZWYgZ2VuZXJhdGVfdmVyc2lvbl9maWxl KHZlcnNpb25pbmdfdmFycywgZGVzdCk6Cj4+PiArLS0gCj4+PiArMi40Ny4zCj4+PiArCj4+PiBk aWZmIC0tZ2l0IGEvcGF0Y2hlcy8wMDQ2LWRlYmlhbi1Vc2Utc3lzdGVtLXBhY2thZ2VzLWZvci1j ZXBoYWRtLWJ1bmRsZWQtZGVwZW4ucGF0Y2ggYi9wYXRjaGVzLzAwNDYtZGViaWFuLVVzZS1zeXN0 ZW0tcGFja2FnZXMtZm9yLWNlcGhhZG0tYnVuZGxlZC1kZXBlbi5wYXRjaAo+Pj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4+IGluZGV4IDAwMDAwMDAwMDAwLi4wYjRkYWE2M2Y3OQo+Pj4gLS0tIC9k ZXYvbnVsbAo+Pj4gKysrIGIvcGF0Y2hlcy8wMDQ2LWRlYmlhbi1Vc2Utc3lzdGVtLXBhY2thZ2Vz LWZvci1jZXBoYWRtLWJ1bmRsZWQtZGVwZW4ucGF0Y2gKPj4+IEBAIC0wLDAgKzEsNTQgQEAKPj4+ ICtGcm9tIDc3OWM5MjUxNjY5YjY1YjdlZDc3YTg0MWYyODFlMmQ5NTcxNzRkYjIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCj4+PiArRnJvbTogS2VmdSBDaGFpIDxrLmNoYWlAcHJveG1veC5jb20+ Cj4+PiArRGF0ZTogVHVlLCAyMSBPY3QgMjAyNSAxMToyNTowMCArMDgwMAo+Pj4gK1N1YmplY3Q6 IFtQQVRDSCA0Ni80Nl0gZGViaWFuOiBVc2Ugc3lzdGVtIHBhY2thZ2VzIGZvciBjZXBoYWRtIGJ1 bmRsZWQKPj4+ICsgZGVwZW5kZW5jaWVzCj4+PiArCj4+PiArQ29uZmlndXJlIHRoZSBEZWJpYW4g YnVpbGQgdG8gdXNlIENFUEhBRE1fQlVORExFRF9ERVBFTkRFTkNJRVM9ZGViLAo+Pj4gK3doaWNo IGluc3RydWN0cyB0aGUgY2VwaGFkbSBidWlsZCBzY3JpcHQgdG8gYnVuZGxlIGRlcGVuZGVuY2ll cyBmcm9tCj4+PiArc3lzdGVtLWluc3RhbGxlZCBEZWJpYW4gcGFja2FnZXMgaW5zdGVhZCBvZiBk b3dubG9hZGluZyBmcm9tIFB5UEkuCj4+PiArCj4+PiArVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIGJ1 aWxkIGZhaWx1cmVzIGluIHJlc3RyaWN0ZWQgbmV0d29yayBlbnZpcm9ubWVudHMKPj4+ICt3aGVy ZSBEZWJpYW4gYnVpbGQgdG9vbHMgZG8gbm90IHBlcm1pdCBpbnRlcm5ldCBhY2Nlc3MuIEJ5IGxl dmVyYWdpbmcKPj4+ICt0aGUgRGViaWFuIHBhY2thZ2Ugc3VwcG9ydCBhZGRlZCBpbiBjb21taXQg OTM3OGEyOTg4ZTEsIHRoZSBidWlsZCBub3cKPj4+ICt1c2VzIHB5dGhvbjMtbWFya3Vwc2FmZSwg cHl0aG9uMy1qaW5qYTIsIGFuZCBweXRob24zLXlhbWwgcGFja2FnZXMKPj4+ICt0aGF0IGFyZSBh bHJlYWR5IGluc3RhbGxlZCBhcyBidWlsZCBkZXBlbmRlbmNpZXMuCj4+PiArCj4+PiArVGhpcyBh cHByb2FjaCBtaXJyb3JzIHRoZSBleGlzdGluZyBSUE0gcGFja2FnaW5nIHdvcmtmbG93LCBlbnN1 cmluZwo+Pj4gK2NvbnNpc3RlbnQgYmVoYXZpb3IgYWNyb3NzIGRpZmZlcmVudCBkaXN0cmlidXRp b24gcGFja2FnZSBmb3JtYXRzLgo+Pj4gKwo+Pj4gK1NpZ25lZC1vZmYtYnk6IEtlZnUgQ2hhaSA8 ay5jaGFpQHByb3htb3guY29tPgo+Pj4gKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDI1Njgw MDIxZWUyNDIyZjhiOGI0MDc1YjNhYjc3YWYzOTEyNmVlY2MpCj4+Cj4+IGxvbmcgdGVybSwgaXQg bWlnaHQgYmUgZXZlbiBiZXR0ZXIgdG8gbm90IGJ1bmRsZSBhdCBhbGwsIGJ1dCBhZGQgdGhvc2UK Pj4gcHl0aG9uIGRlcHMgYXMgcnVudGltZSBkZXBlbmRlbmNpZXM/Cj4gCj4gSSBjb25jdXIgd2l0 aCB5b3VyIGNvbmNlcm5zLCBhcyBidW5kbGluZyB2aW9sYXRlcyBEZWJpYW4ncyBwaHlsb3NvcGh5 IG9mIAo+IGF2b2lkaW5nICJ2ZW5kb3JlZCIgZGVwZW5kZW5jaWVzLiBUaGUgZGlzdHJvIGludGVu ZHMgdG8gY29udHJvbCBhbmQKPiB0cmFjayBhbGwgcGFja2FnZXMuIEFuZCBidW5sZGluZyBhbHNv IGltcGxpZXMgbW9yZSBkaXNrIHNwYWNlIHVzYWdlIGFuZCAKPiBkdXBsaWNhdGlvbnMuCj4gCj4g QnV0IGl0J3MgYWxzbyBhbiB1cHN0cmVhbSBkZXNpZ24gY2hvaWNlOiBjZXBoYWRtIHdhcyBleHBs aWNpdGx5IGRlc2lnbmVkCj4gdG8gYmUgc3RhbmRhbG9uZS4gUGFydCBvZiBjZXBoYWRtJ3N2YWx1 ZSBpcyB0aGF0IHlvdSBjYW4ganVzdCBjdXJsIHwKPiBweXRob24zIGl0IG9udG8gYSBmcmVzaCBz eXN0ZW0uIElmIGl0IHJlcXVpcmVzIGluc3RhbGxpbmcgMTArIFB5dGhvbgo+IHBhY2thZ2VzIGZp cnN0LCB5b3UndmUgbG9zdCB0aGF0IHNpbXBsaWNpdHkuCj4gCj4gV2hhdCBkbyB5b3UgdGhpbms/ CgpJIHVuZGVyc3RhbmQgdGhhdCByZWFzb25pbmcsIGFuZCBjZXBoYWRtIGlzbid0IHNvbWV0aGlu ZyB3ZSBhcmUgdXNpbmcKYW55d2F5IChhdG0pLi4KCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBs aXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h bi9saXN0aW5mby9wdmUtZGV2ZWwK