From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pbs-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 E39B81FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 15:34:56 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F2AF41B9E8; Wed, 2 Apr 2025 15:34:45 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 15:34:08 +0200 Message-Id: <D8W6WZYUNVSL.24VBRUOPALH4M@proxmox.com> From: "Max Carrara" <m.carrara@proxmox.com> To: "Proxmox Backup Server development discussion" <pbs-devel@lists.proxmox.com> X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20250326152327.332179-1-f.gruenbichler@proxmox.com> <20250326152327.332179-15-f.gruenbichler@proxmox.com> In-Reply-To: <20250326152327.332179-15-f.gruenbichler@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.075 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [lib.rs, rest.rs, formatter.rs, minimal-rest-server.rs, h2service.rs, connection.rs] Subject: Re: [pbs-devel] [PATCH proxmox 14/17] proxmox-rest-server: update to hyper 1.0 X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion <pbs-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/> List-Post: <mailto:pbs-devel@lists.proxmox.com> List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com> T24gV2VkIE1hciAyNiwgMjAyNSBhdCA0OjIzIFBNIENFVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3 cm90ZToKPiBhbmQgc3dpdGNoIHRvIHByb3htb3gtaHR0cCdzIEJvZHkgaW1wbGVtZW50YXRpb24u Cj4KPiBoeXBlciBub3cgaGFzIGEgc3BlY2lhbCAob3BhcXVlKSBCb2R5IGltcGxlbWVudGF0aW9u IGNhbGxlZCBJbmNvbWluZwo+IHdoaWNoIGlzIHVzZWQgZm9yIGluY29taW5nIHJlcXVlc3QgYm9k aWVzIG9uIHRoZSBzZXJ2ZXIgc2lkZSwgYW5kCj4gaW5jb21pbmcgcmVzcG9uc2UgYm9kaWVzIG9u IHRoZSBjbGllbnQgc2lkZSwgc28gb3VyIEFQSSBoYW5kbGVyJ3Mgbm93Cj4gY29uc3VtZSBhbiBp bnN0YW5jZSBvZiB0aGlzIHR5cGUuCj4KPiB0aGUgQWNjZXB0IHRyYWl0IHByZXZpb3VzbHkgb2Zm ZXJlZCBieSBoeXBlciBpcyBnb25lIGluIDEuMCwgYW5kIG5lZWRzCj4gdG8gYmUgcmVwbGFjZWQg d2l0aCBhbiBhY2NlcHQgbG9vcC4gb3VyIGNvcnJlc3BvbmRpbmcgQWNjZXB0b3IKPiBpbXBsZW1l bnRhdGlvbnMgaGF2ZSBiZWVuIGRyb3BwZWQgYXMgd2VsbC4KPgo+IGh5cGVyIG5vdyBoYXMgaXRz IG93biBTZXJ2aWNlIGFuZCBhc3luYyBSZWFkL1dyaXRlIHRyYWl0cywgYnV0IGhlbHBmdWxseQo+ IHByb3ZpZGVzIHdyYXBwZXJzIGZvciB0b3dlcidzIFNlcnZpY2UgYW5kIHRva2lvJ3MgQXN5bmNS ZWFkL0FzeW5jV3JpdGUKPiB2YXJpYW50cy4KPgo+IGdyYWNlZnVsIHNodXRkb3duIGhhbmRsaW5n IGlzIG5vdyBleHBvc2VkIGRpZmZlcmVudGx5IG9uIHRoZSBoeXBlciBzaWRlLAo+IGFuZCB0byBh bGxvdyB1c2FnZSB3aXRoIHVwZ3JhZGFibGUgY29ubmVjdGlvbnMgdGhlIHZhcmlhbnQgZm9ybQo+ IGh5cGVyLXV0aWwgbmVlZHMgdG8gYmUgdXNlZCwgYXMgdGhlIG9uZSBzdHJhaWdodCBmcm9tIGh5 cGVyIGRvZXNuJ3QKPiBzdXBwb3J0IGl0ICh5ZXQpLgo+Cj4gU2lnbmVkLW9mZi1ieTogRmFiaWFu IEdyw7xuYmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJveG1veC5jb20+Cj4gLS0tCj4gIHByb3ht b3gtcmVzdC1zZXJ2ZXIvQ2FyZ28udG9tbCAgICAgICAgICAgICAgICB8ICAgNyArLQo+ICAuLi4v ZXhhbXBsZXMvbWluaW1hbC1yZXN0LXNlcnZlci5ycyAgICAgICAgICAgfCAgIDUgKy0KPiAgcHJv eG1veC1yZXN0LXNlcnZlci9zcmMvYXBpX2NvbmZpZy5ycyAgICAgICAgIHwgIDQ0ICsrLS0tCj4g IHByb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2Nvbm5lY3Rpb24ucnMgICAgICAgICB8ICAxNCArLQo+ ICBwcm94bW94LXJlc3Qtc2VydmVyL3NyYy9mb3JtYXR0ZXIucnMgICAgICAgICAgfCAgIDggKy0K PiAgcHJveG1veC1yZXN0LXNlcnZlci9zcmMvaDJzZXJ2aWNlLnJzICAgICAgICAgIHwgIDE1ICst Cj4gIHByb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2xpYi5ycyAgICAgICAgICAgICAgICB8ICAgMiAr LQo+ICBwcm94bW94LXJlc3Qtc2VydmVyL3NyYy9yZXN0LnJzICAgICAgICAgICAgICAgfCAxNjQg KysrKysrKysrKystLS0tLS0tCj4gIDggZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyks IDExNyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9wcm94bW94LXJlc3Qtc2VydmVyL0Nh cmdvLnRvbWwgYi9wcm94bW94LXJlc3Qtc2VydmVyL0NhcmdvLnRvbWwKPiBpbmRleCBmZmJkOTI1 YS4uZWUyNTNiNGYgMTAwNjQ0Cj4gLS0tIGEvcHJveG1veC1yZXN0LXNlcnZlci9DYXJnby50b21s Cj4gKysrIGIvcHJveG1veC1yZXN0LXNlcnZlci9DYXJnby50b21sCj4gQEAgLTIwLDcgKzIwLDkg QEAgYW55aG93LndvcmtzcGFjZSA9IHRydWUKPiAgZnV0dXJlcy53b3Jrc3BhY2UgPSB0cnVlCj4g IGhhbmRsZWJhcnMgPSB7IHdvcmtzcGFjZSA9IHRydWUsIG9wdGlvbmFsID0gdHJ1ZSB9Cj4gIGh0 dHAud29ya3NwYWNlID0gdHJ1ZQo+ICtodHRwLWJvZHktdXRpbC53b3Jrc3BhY2UgPSB0cnVlCj4g IGh5cGVyID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJlcyA9IFsgImZ1bGwiIF0gfQo+ICto eXBlci11dGlsID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJlcyA9IFsgImNsaWVudCIsICJj bGllbnQtbGVnYWN5IiwgImh0dHAxIiwgInNlcnZlciIsICJzZXJ2ZXItYXV0byIsICJzZXJ2ZXIt Z3JhY2VmdWwiLCAic2VydmljZSIsICJ0b2tpbyIgXX0KPiAgbGliYy53b3Jrc3BhY2UgPSB0cnVl Cj4gIGxvZy53b3Jrc3BhY2UgPSB0cnVlCj4gIG5peC53b3Jrc3BhY2UgPSB0cnVlCj4gQEAgLTM5 LDcgKzQxLDcgQEAgdXJsLndvcmtzcGFjZSA9IHRydWUKPiAgcHJveG1veC1hc3luYy53b3Jrc3Bh Y2UgPSB0cnVlCj4gIHByb3htb3gtY29tcHJlc3Npb24ud29ya3NwYWNlID0gdHJ1ZQo+ICBwcm94 bW94LWRhZW1vbi53b3Jrc3BhY2UgPSB0cnVlCj4gLXByb3htb3gtaHR0cCA9IHsgd29ya3NwYWNl ID0gdHJ1ZSwgb3B0aW9uYWwgPSB0cnVlIH0KPiArcHJveG1veC1odHRwID0geyB3b3Jrc3BhY2Ug PSB0cnVlLCBmZWF0dXJlcyA9IFsiYm9keSJdIH0KPiAgcHJveG1veC1sYW5nLndvcmtzcGFjZSA9 IHRydWUKPiAgcHJveG1veC1sb2cud29ya3NwYWNlID0gdHJ1ZQo+ICBwcm94bW94LXJvdXRlci53 b3Jrc3BhY2UgPSB0cnVlCj4gQEAgLTUyLDYgKzU0LDUgQEAgcHJveG1veC13b3JrZXItdGFzay53 b3Jrc3BhY2UgPSB0cnVlCj4gIGRlZmF1bHQgPSBbXQo+ICB0ZW1wbGF0ZXMgPSBbImRlcDpoYW5k bGViYXJzIl0KPiAgcmF0ZS1saW1pdGVkLXN0cmVhbSA9IFsKPiAtICAgICJkZXA6cHJveG1veC1o dHRwIiwKPiAtICAgICJwcm94bW94LWh0dHA/L3JhdGUtbGltaXRlZC1zdHJlYW0iLAo+ICsgICAg InByb3htb3gtaHR0cC9yYXRlLWxpbWl0ZWQtc3RyZWFtIiwKPiAgXQo+IGRpZmYgLS1naXQgYS9w cm94bW94LXJlc3Qtc2VydmVyL2V4YW1wbGVzL21pbmltYWwtcmVzdC1zZXJ2ZXIucnMgYi9wcm94 bW94LXJlc3Qtc2VydmVyL2V4YW1wbGVzL21pbmltYWwtcmVzdC1zZXJ2ZXIucnMKPiBpbmRleCAy M2JlNTg2Yy4uNDU0NDMwZmIgMTAwNjQ0Cj4gLS0tIGEvcHJveG1veC1yZXN0LXNlcnZlci9leGFt cGxlcy9taW5pbWFsLXJlc3Qtc2VydmVyLnJzCj4gKysrIGIvcHJveG1veC1yZXN0LXNlcnZlci9l eGFtcGxlcy9taW5pbWFsLXJlc3Qtc2VydmVyLnJzCj4gQEAgLTYsOCArNiw5IEBAIHVzZSBzdGQ6 OnN5bmM6OntMYXp5TG9jaywgTXV0ZXh9Owo+ICB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2Vy ciwgRXJyb3J9Owo+ICB1c2UgaHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gIHVzZSBodHRwOjpIZWFk ZXJNYXA7Cj4gLXVzZSBoeXBlcjo6e0JvZHksIE1ldGhvZCwgUmVzcG9uc2V9Owo+ICt1c2UgaHlw ZXI6OntNZXRob2QsIFJlc3BvbnNlfTsKPiAgCj4gK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4g IHVzZSBwcm94bW94X3JvdXRlcjo6ewo+ICAgICAgbGlzdF9zdWJkaXJzX2FwaV9tZXRob2QsIFJv dXRlciwgUnBjRW52aXJvbm1lbnRUeXBlLCBTdWJkaXJNYXAsIFVzZXJJbmZvcm1hdGlvbiwKPiAg fTsKPiBAQCAtNTcsNyArNTgsNyBAQCBmbiBnZXRfaW5kZXgoCj4gICAgICBCb3g6OnBpbihhc3lu YyBtb3ZlIHsKPiAgICAgICAgICAvLyBidWlsZCBhbiBpbmRleCBwYWdlCj4gICAgICAgICAgaHR0 cDo6UmVzcG9uc2U6OmJ1aWxkZXIoKQo+IC0gICAgICAgICAgICAuYm9keSgiaGVsbG8gd29ybGQi LmludG8oKSkKPiArICAgICAgICAgICAgLmJvZHkoImhlbGxvIHdvcmxkIi50b19vd25lZCgpLmlu dG9fYnl0ZXMoKS5pbnRvKCkpCj4gICAgICAgICAgICAgIC51bndyYXAoKQo+ICAgICAgfSkKPiAg fQo+IGRpZmYgLS1naXQgYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9hcGlfY29uZmlnLnJzIGIv cHJveG1veC1yZXN0LXNlcnZlci9zcmMvYXBpX2NvbmZpZy5ycwo+IGluZGV4IGIyMGIyZGEwLi4w Yjg0N2EwYyAxMDA2NDQKPiAtLS0gYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9hcGlfY29uZmln LnJzCj4gKysrIGIvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvYXBpX2NvbmZpZy5ycwo+IEBAIC05 LDEwICs5LDEyIEBAIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKPiAgdXNlIGFueWhv dzo6e2Zvcm1hdF9lcnIsIEVycm9yfTsKPiAgdXNlIGh0dHA6OntIZWFkZXJNYXAsIE1ldGhvZCwg VXJpfTsKPiAgdXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKPiAtdXNlIGh5cGVyOjp7 Qm9keSwgUmVzcG9uc2V9Owo+ICt1c2UgaHlwZXI6OlJlc3BvbnNlOwo+ICt1c2UgaHlwZXJfdXRp bDo6cnQ6OlRva2lvSW87Cj4gIHVzZSB0b3dlcl9zZXJ2aWNlOjpTZXJ2aWNlOwo+ICAKPiAgdXNl IHByb3htb3hfZGFlbW9uOjpjb21tYW5kX3NvY2tldDo6Q29tbWFuZFNvY2tldDsKPiArdXNlIHBy b3htb3hfaHR0cDo6Qm9keTsKPiAgdXNlIHByb3htb3hfbG9nOjp7RmlsZUxvZ09wdGlvbnMsIEZp bGVMb2dnZXJ9Owo+ICB1c2UgcHJveG1veF9yb3V0ZXI6OntSb3V0ZXIsIFJwY0Vudmlyb25tZW50 VHlwZSwgVXNlckluZm9ybWF0aW9ufTsKPiAgdXNlIHByb3htb3hfc3lzOjpmczo6e2NyZWF0ZV9w YXRoLCBDcmVhdGVPcHRpb25zfTsKPiBAQCAtMTA3LDcgKzEwOSw3IEBAIGltcGwgQXBpQ29uZmln IHsKPiAgICAgICkgLT4gUmVzcG9uc2U8Qm9keT4gewo+ICAgICAgICAgIG1hdGNoIHNlbGYuaW5k ZXhfaGFuZGxlci5hc19yZWYoKSB7Cj4gICAgICAgICAgICAgIFNvbWUoaGFuZGxlcikgPT4gKGhh bmRsZXIuZnVuYykocmVzdF9lbnYsIHBhcnRzKS5hd2FpdCwKPiAtICAgICAgICAgICAgTm9uZSA9 PiBSZXNwb25zZTo6YnVpbGRlcigpLnN0YXR1cyg0MDQpLmJvZHkoIiIuaW50bygpKS51bndyYXAo KSwKPiArICAgICAgICAgICAgTm9uZSA9PiBSZXNwb25zZTo6YnVpbGRlcigpLnN0YXR1cyg0MDQp LmJvZHkoQm9keTo6ZW1wdHkoKSkudW53cmFwKCksCj4gICAgICAgICAgfQo+ICAgICAgfQo+ICAK PiBAQCAtNTExLDcgKzUxMyw3IEBAIGltcGwgRnJvbTxzdGQ6Om9zOjp1bml4OjpuZXQ6OlNvY2tl dEFkZHI+IGZvciBQcml2aWxlZ2VkQWRkciB7Cj4gIH0KPiAgCj4gIGltcGwgU2VydmljZTxVcmk+ IGZvciBQcml2aWxlZ2VkQWRkciB7Cj4gLSAgICB0eXBlIFJlc3BvbnNlID0gUHJpdmlsZWdlZFNv Y2tldDsKPiArICAgIHR5cGUgUmVzcG9uc2UgPSBUb2tpb0lvPFByaXZpbGVnZWRTb2NrZXQ+Owo+ ICAgICAgdHlwZSBFcnJvciA9IGlvOjpFcnJvcjsKPiAgICAgIHR5cGUgRnV0dXJlID0gUGluPEJv eDxkeW4gRnV0dXJlPE91dHB1dCA9IFJlc3VsdDxTZWxmOjpSZXNwb25zZSwgU2VsZjo6RXJyb3I+ PiArIFNlbmQ+PjsKPiAgCj4gQEAgLTUyNyw2ICs1MjksNyBAQCBpbXBsIFNlcnZpY2U8VXJpPiBm b3IgUHJpdmlsZWdlZEFkZHIgewo+ICAgICAgICAgICAgICAgICAgICAgIHRva2lvOjpuZXQ6OlRj cFN0cmVhbTo6Y29ubmVjdChhZGRyKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAuYXdhaXQK PiAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChQcml2aWxlZ2VkU29ja2V0OjpUY3ApCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoVG9raW9Jbzo6bmV3KQo+ICAgICAgICAgICAg ICAgICAgfSkKPiAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICBQcml2aWxlZ2VkQWRkcjo6 VW5peChhZGRyKSA9PiB7Cj4gQEAgLTUzNyw2ICs1NDAsNyBAQCBpbXBsIFNlcnZpY2U8VXJpPiBm b3IgUHJpdmlsZWdlZEFkZHIgewo+ICAgICAgICAgICAgICAgICAgICAgIH0pPykKPiAgICAgICAg ICAgICAgICAgICAgICAuYXdhaXQKPiAgICAgICAgICAgICAgICAgICAgICAubWFwKFByaXZpbGVn ZWRTb2NrZXQ6OlVuaXgpCj4gKyAgICAgICAgICAgICAgICAgICAgLm1hcChUb2tpb0lvOjpuZXcp Cj4gICAgICAgICAgICAgICAgICB9KQo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+IEBA IC02MDcsMzkgKzYxMSwxMSBAQCBpbXBsIHRva2lvOjppbzo6QXN5bmNXcml0ZSBmb3IgUHJpdmls ZWdlZFNvY2tldCB7Cj4gICAgICB9Cj4gIH0KPiAgCj4gLWltcGwgaHlwZXI6OmNsaWVudDo6Y29u bmVjdDo6Q29ubmVjdGlvbiBmb3IgUHJpdmlsZWdlZFNvY2tldCB7Cj4gLSAgICBmbiBjb25uZWN0 ZWQoJnNlbGYpIC0+IGh5cGVyOjpjbGllbnQ6OmNvbm5lY3Q6OkNvbm5lY3RlZCB7Cj4gK2ltcGwg aHlwZXJfdXRpbDo6Y2xpZW50OjpsZWdhY3k6OmNvbm5lY3Q6OkNvbm5lY3Rpb24gZm9yIFByaXZp bGVnZWRTb2NrZXQgewo+ICsgICAgZm4gY29ubmVjdGVkKCZzZWxmKSAtPiBoeXBlcl91dGlsOjpj bGllbnQ6OmxlZ2FjeTo6Y29ubmVjdDo6Q29ubmVjdGVkIHsKPiAgICAgICAgICBtYXRjaCBzZWxm IHsKPiAgICAgICAgICAgICAgU2VsZjo6VGNwKHMpID0+IHMuY29ubmVjdGVkKCksCj4gLSAgICAg ICAgICAgIFNlbGY6OlVuaXgoXykgPT4gaHlwZXI6OmNsaWVudDo6Y29ubmVjdDo6Q29ubmVjdGVk OjpuZXcoKSwKPiArICAgICAgICAgICAgU2VsZjo6VW5peChfKSA9PiBoeXBlcl91dGlsOjpjbGll bnQ6OmxlZ2FjeTo6Y29ubmVjdDo6Q29ubmVjdGVkOjpuZXcoKSwKPiAgICAgICAgICB9Cj4gICAg ICB9Cj4gIH0KPiAtCj4gLS8vLyBJbXBsZW1lbnRzIGh5cGVyJ3MgYEFjY2VwdGAgZm9yIGBVbml4 TGlzdGVuZXJgcy4KPiAtcHViIHN0cnVjdCBVbml4QWNjZXB0b3Igewo+IC0gICAgbGlzdGVuZXI6 IHRva2lvOjpuZXQ6OlVuaXhMaXN0ZW5lciwKPiAtfQo+IC0KPiAtaW1wbCBGcm9tPHRva2lvOjpu ZXQ6OlVuaXhMaXN0ZW5lcj4gZm9yIFVuaXhBY2NlcHRvciB7Cj4gLSAgICBmbiBmcm9tKGxpc3Rl bmVyOiB0b2tpbzo6bmV0OjpVbml4TGlzdGVuZXIpIC0+IFNlbGYgewo+IC0gICAgICAgIFNlbGYg eyBsaXN0ZW5lciB9Cj4gLSAgICB9Cj4gLX0KPiAtCj4gLWltcGwgaHlwZXI6OnNlcnZlcjo6YWNj ZXB0OjpBY2NlcHQgZm9yIFVuaXhBY2NlcHRvciB7Cj4gLSAgICB0eXBlIENvbm4gPSB0b2tpbzo6 bmV0OjpVbml4U3RyZWFtOwo+IC0gICAgdHlwZSBFcnJvciA9IGlvOjpFcnJvcjsKPiAtCj4gLSAg ICBmbiBwb2xsX2FjY2VwdCgKPiAtICAgICAgICBzZWxmOiBQaW48Jm11dCBTZWxmPiwKPiAtICAg ICAgICBjeDogJm11dCBDb250ZXh0PCdfPiwKPiAtICAgICkgLT4gUG9sbDxPcHRpb248aW86OlJl c3VsdDxTZWxmOjpDb25uPj4+IHsKPiAtICAgICAgICBQaW46Om5ldygmbXV0IHNlbGYuZ2V0X211 dCgpLmxpc3RlbmVyKQo+IC0gICAgICAgICAgICAucG9sbF9hY2NlcHQoY3gpCj4gLSAgICAgICAg ICAgIC5tYXAofHJlc3wgbWF0Y2ggcmVzIHsKPiAtICAgICAgICAgICAgICAgIE9rKChzdHJlYW0s IF9hZGRyKSkgPT4gU29tZShPayhzdHJlYW0pKSwKPiAtICAgICAgICAgICAgICAgIEVycihlcnIp ID0+IFNvbWUoRXJyKGVycikpLAo+IC0gICAgICAgICAgICB9KQo+IC0gICAgfQo+IC19Cj4gZGlm ZiAtLWdpdCBhL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2Nvbm5lY3Rpb24ucnMgYi9wcm94bW94 LXJlc3Qtc2VydmVyL3NyYy9jb25uZWN0aW9uLnJzCj4gaW5kZXggNTI2NTU1YWUuLmE2NWVmMzk4 IDEwMDY0NAo+IC0tLSBhL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2Nvbm5lY3Rpb24ucnMKPiAr KysgYi9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9jb25uZWN0aW9uLnJzCj4gQEAgLTE0LDcgKzE0 LDYgQEAgdXNlIHN0ZDo6dGltZTo6RHVyYXRpb247Cj4gIAo+ICB1c2UgYW55aG93Ojp7Zm9ybWF0 X2VyciwgQ29udGV4dCwgRXJyb3J9Owo+ICB1c2UgZnV0dXJlczo6RnV0dXJlRXh0Owo+IC11c2Ug aHlwZXI6OnNlcnZlcjo6YWNjZXB0Owo+ICB1c2Ugb3BlbnNzbDo6ZWM6OntFY0dyb3VwLCBFY0tl eX07Cj4gIHVzZSBvcGVuc3NsOjpuaWQ6Ok5pZDsKPiAgdXNlIG9wZW5zc2w6OnBrZXk6OntQS2V5 LCBQcml2YXRlfTsKPiBAQCAtMjI2LDEyICsyMjUsMTMgQEAgaW1wbCBBY2NlcHRCdWlsZGVyIHsK PiAgICAgICAgICBzZWxmLAo+ICAgICAgICAgIGxpc3RlbmVyOiBUY3BMaXN0ZW5lciwKPiAgICAg ICAgICBhY2NlcHRvcjogQXJjPE11dGV4PFNzbEFjY2VwdG9yPj4sCj4gLSAgICApIC0+IGltcGwg YWNjZXB0OjpBY2NlcHQ8Q29ubiA9IENsaWVudFN0cmVhbVJlc3VsdCwgRXJyb3IgPSBFcnJvcj4g ewo+ICsgICAgICAgIC8vIEZJWE1FOiByZXBsYWNlIHJldHVybiB2YWx1ZSB3aXRoIG93biB0cmFp dD8gc2VlIG5vdyByZW1vdmVkIFVuaXhBY2NlcHRvcgoKWWVhaCwgd2UgcHJvYmFibHkgc2hvdWxk IHByb3ZpZGUgb3VyIG93biB0cmFpdCBmb3IgdGhpcyBhbmQgaGF2ZSBpdAppbXBsZW1lbnQgYGZ1 dHVyZXNfY29yZTo6U3RyZWFtYCAob3IgYHN0ZDo6YXN5bmNfaXRlcjo6QXN5bmNJdGVyYXRvcmAK b25jZSB0aGF0J3Mgc3RhYmlsaXplZCkuIEZvciBub3cgdGhlIGJlbG93IGlzIGZpbmUgSU1PLCBh cyB3ZSBjYW4gY29vawp1cCBhIHRyYWl0IGxhdGVyIGFzIHdlbGwuIFN3aXRjaGluZyBvdmVyIHRv IGh5cGVyLzEuMCBpc24ndCB0b28gcHJldHR5LApidXQgaXQgaXMgd2hhdCBpdCBpcyA6cwoKPiAr ICAgICkgLT4gUmVjZWl2ZXJTdHJlYW08UmVzdWx0PENsaWVudFN0cmVhbVJlc3VsdCwgRXJyb3I+ PiB7Cj4gICAgICAgICAgbGV0IChzZWN1cmVfc2VuZGVyLCBzZWN1cmVfcmVjZWl2ZXIpID0gbXBz Yzo6Y2hhbm5lbChzZWxmLm1heF9wZW5kaW5nX2FjY2VwdHMpOwo+ICAKPiAgICAgICAgICB0b2tp bzo6c3Bhd24oc2VsZi5hY2NlcHRfY29ubmVjdGlvbnMobGlzdGVuZXIsIGFjY2VwdG9yLCBzZWN1 cmVfc2VuZGVyLmludG8oKSkpOwo+ICAKPiAtICAgICAgICBhY2NlcHQ6OmZyb21fc3RyZWFtKFJl Y2VpdmVyU3RyZWFtOjpuZXcoc2VjdXJlX3JlY2VpdmVyKSkKPiArICAgICAgICBSZWNlaXZlclN0 cmVhbTo6bmV3KHNlY3VyZV9yZWNlaXZlcikKPiAgICAgIH0KPiAgCj4gICAgICBwdWIgZm4gYWNj ZXB0X3Rsc19vcHRpb25hbCgKPiBAQCAtMjM5LDggKzIzOSw4IEBAIGltcGwgQWNjZXB0QnVpbGRl ciB7Cj4gICAgICAgICAgbGlzdGVuZXI6IFRjcExpc3RlbmVyLAo+ICAgICAgICAgIGFjY2VwdG9y OiBBcmM8TXV0ZXg8U3NsQWNjZXB0b3I+PiwKPiAgICAgICkgLT4gKAo+IC0gICAgICAgIGltcGwg YWNjZXB0OjpBY2NlcHQ8Q29ubiA9IENsaWVudFN0cmVhbVJlc3VsdCwgRXJyb3IgPSBFcnJvcj4s Cj4gLSAgICAgICAgaW1wbCBhY2NlcHQ6OkFjY2VwdDxDb25uID0gSW5zZWN1cmVDbGllbnRTdHJl YW1SZXN1bHQsIEVycm9yID0gRXJyb3I+LAo+ICsgICAgICAgIFJlY2VpdmVyU3RyZWFtPFJlc3Vs dDxDbGllbnRTdHJlYW1SZXN1bHQsIEVycm9yPj4sCj4gKyAgICAgICAgUmVjZWl2ZXJTdHJlYW08 UmVzdWx0PEluc2VjdXJlQ2xpZW50U3RyZWFtUmVzdWx0LCBFcnJvcj4+LAo+ICAgICAgKSB7Cj4g ICAgICAgICAgbGV0IChzZWN1cmVfc2VuZGVyLCBzZWN1cmVfcmVjZWl2ZXIpID0gbXBzYzo6Y2hh bm5lbChzZWxmLm1heF9wZW5kaW5nX2FjY2VwdHMpOwo+ICAgICAgICAgIGxldCAoaW5zZWN1cmVf c2VuZGVyLCBpbnNlY3VyZV9yZWNlaXZlcikgPSBtcHNjOjpjaGFubmVsKHNlbGYubWF4X3BlbmRp bmdfYWNjZXB0cyk7Cj4gQEAgLTI1Miw4ICsyNTIsOCBAQCBpbXBsIEFjY2VwdEJ1aWxkZXIgewo+ ICAgICAgICAgICkpOwo+ICAKPiAgICAgICAgICAoCj4gLSAgICAgICAgICAgIGFjY2VwdDo6ZnJv bV9zdHJlYW0oUmVjZWl2ZXJTdHJlYW06Om5ldyhzZWN1cmVfcmVjZWl2ZXIpKSwKPiAtICAgICAg ICAgICAgYWNjZXB0Ojpmcm9tX3N0cmVhbShSZWNlaXZlclN0cmVhbTo6bmV3KGluc2VjdXJlX3Jl Y2VpdmVyKSksCj4gKyAgICAgICAgICAgIFJlY2VpdmVyU3RyZWFtOjpuZXcoc2VjdXJlX3JlY2Vp dmVyKSwKPiArICAgICAgICAgICAgUmVjZWl2ZXJTdHJlYW06Om5ldyhpbnNlY3VyZV9yZWNlaXZl ciksCj4gICAgICAgICAgKQo+ICAgICAgfQo+ICB9Cj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtcmVz dC1zZXJ2ZXIvc3JjL2Zvcm1hdHRlci5ycyBiL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2Zvcm1h dHRlci5ycwo+IGluZGV4IDMyY2E5OTM2Li45Y2U4NzIwNSAxMDA2NDQKPiAtLS0gYS9wcm94bW94 LXJlc3Qtc2VydmVyL3NyYy9mb3JtYXR0ZXIucnMKPiArKysgYi9wcm94bW94LXJlc3Qtc2VydmVy L3NyYy9mb3JtYXR0ZXIucnMKPiBAQCAtNSwxMiArNSwxNCBAQCB1c2UgYW55aG93OjpFcnJvcjsK PiAgdXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07Cj4gIAo+ICB1c2UgaHlwZXI6OmhlYWRl cjsKPiAtdXNlIGh5cGVyOjp7Qm9keSwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9Owo+ICt1c2UgaHlw ZXI6OntSZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gIAo+ICt1c2UgcHJveG1veF9odHRwOjpCb2R5 Owo+ICB1c2UgcHJveG1veF9yb3V0ZXI6OntIdHRwRXJyb3IsIFJwY0Vudmlyb25tZW50LCBTZXJp YWxpemFibGVSZXR1cm59Owo+ICB1c2UgcHJveG1veF9zY2hlbWE6OlBhcmFtZXRlckVycm9yOwo+ ICAKPiAgLy8vIEV4dGVuc2lvbiB0byBzZXQgZXJyb3IgbWVzc2FnZSBmb3Igc2VydmVyIHNpZGUg bG9nZ2luZwo+ICsjW2Rlcml2ZShDbG9uZSldCj4gIHB1YihjcmF0ZSkgc3RydWN0IEVycm9yTWVz c2FnZUV4dGVuc2lvbihwdWIgU3RyaW5nKTsKPiAgCj4gIC8vLyBNZXRob2RzIHRvIGZvcm1hdCBk YXRhIGFuZCBlcnJvcnMKPiBAQCAtMTY4LDExICsxNzAsMTEgQEAgaW1wbCBPdXRwdXRGb3JtYXR0 ZXIgZm9yIEpzb25Gb3JtYXR0ZXIgewo+ICAKPiAgcHViKGNyYXRlKSBmbiBlcnJvcl90b19yZXNw b25zZShlcnI6IEVycm9yKSAtPiBSZXNwb25zZTxCb2R5PiB7Cj4gICAgICBsZXQgbXV0IHJlc3Bv bnNlID0gaWYgbGV0IFNvbWUoYXBpZXJyKSA9IGVyci5kb3duY2FzdF9yZWY6OjxIdHRwRXJyb3I+ KCkgewo+IC0gICAgICAgIGxldCBtdXQgcmVzcCA9IFJlc3BvbnNlOjpuZXcoQm9keTo6ZnJvbShh cGllcnIubWVzc2FnZS5jbG9uZSgpKSk7Cj4gKyAgICAgICAgbGV0IG11dCByZXNwID0gUmVzcG9u c2U6Om5ldyhhcGllcnIubWVzc2FnZS5jbG9uZSgpLmludG8oKSk7Cj4gICAgICAgICAgKnJlc3Au c3RhdHVzX211dCgpID0gYXBpZXJyLmNvZGU7Cj4gICAgICAgICAgcmVzcAo+ICAgICAgfSBlbHNl IHsKPiAtICAgICAgICBsZXQgbXV0IHJlc3AgPSBSZXNwb25zZTo6bmV3KEJvZHk6OmZyb20oZXJy LnRvX3N0cmluZygpKSk7Cj4gKyAgICAgICAgbGV0IG11dCByZXNwID0gUmVzcG9uc2U6Om5ldyhl cnIudG9fc3RyaW5nKCkuaW50bygpKTsKPiAgICAgICAgICAqcmVzcC5zdGF0dXNfbXV0KCkgPSBT dGF0dXNDb2RlOjpCQURfUkVRVUVTVDsKPiAgICAgICAgICByZXNwCj4gICAgICB9Owo+IGRpZmYg LS1naXQgYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9oMnNlcnZpY2UucnMgYi9wcm94bW94LXJl c3Qtc2VydmVyL3NyYy9oMnNlcnZpY2UucnMKPiBpbmRleCBkYjZlM2IwYS4uMTgyNThlMTQgMTAw NjQ0Cj4gLS0tIGEvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvaDJzZXJ2aWNlLnJzCj4gKysrIGIv cHJveG1veC1yZXN0LXNlcnZlci9zcmMvaDJzZXJ2aWNlLnJzCj4gQEAgLTYsOCArNiwxMCBAQCB1 c2Ugc3RkOjpzeW5jOjpBcmM7Cj4gIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKPiAg Cj4gIHVzZSBmdXR1cmVzOjoqOwo+IC11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBSZXNwb25z ZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6Ym9keTo6SW5jb21pbmc7Cj4gK3VzZSBoeXBl cjo6e1JlcXVlc3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKPiAgCj4gK3VzZSBwcm94bW94X2h0 dHA6OkJvZHk7Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6aHR0cF9lcnI7Cj4gIHVzZSBwcm94bW94 X3JvdXRlcjo6e0FwaVJlc3BvbnNlRnV0dXJlLCBIdHRwRXJyb3IsIFJvdXRlciwgUnBjRW52aXJv bm1lbnR9Owo+ICAKPiBAQCAtMTksNiArMjEsNyBAQCB1c2UgY3JhdGU6Ontub3JtYWxpemVfcGF0 aF93aXRoX2NvbXBvbmVudHMsIFdvcmtlclRhc2t9Owo+ICAvLy8gV2UgdXNlIHRoaXMga2luZCBv ZiBzZXJ2aWNlIHRvIGhhbmRsZSBiYWNrdXAgcHJvdG9jb2wKPiAgLy8vIGNvbm5lY3Rpb25zLiBT dGF0ZSBpcyBzdG9yZWQgaW5zaWRlIHRoZSBnZW5lcmljIGBgcnBjZW52YGAuIExvZ3MKPiAgLy8v IGdvZXMgaW50byB0aGUgYGBXb3JrZXJUYXNrYGAgbG9nLgo+ICsjW2Rlcml2ZShDbG9uZSldCj4g IHB1YiBzdHJ1Y3QgSDJTZXJ2aWNlPEU+IHsKPiAgICAgIHJvdXRlcjogJidzdGF0aWMgUm91dGVy LAo+ICAgICAgcnBjZW52OiBFLAo+IEBAIC00Miw3ICs0NSw3IEBAIGltcGw8RTogUnBjRW52aXJv bm1lbnQgKyBDbG9uZT4gSDJTZXJ2aWNlPEU+IHsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ IC0gICAgZm4gaGFuZGxlX3JlcXVlc3QoJnNlbGYsIHJlcTogUmVxdWVzdDxCb2R5PikgLT4gQXBp UmVzcG9uc2VGdXR1cmUgewo+ICsgICAgZm4gaGFuZGxlX3JlcXVlc3QoJnNlbGYsIHJlcTogUmVx dWVzdDxJbmNvbWluZz4pIC0+IEFwaVJlc3BvbnNlRnV0dXJlIHsKPiAgICAgICAgICBsZXQgKHBh cnRzLCBib2R5KSA9IHJlcS5pbnRvX3BhcnRzKCk7Cj4gIAo+ICAgICAgICAgIGxldCBtZXRob2Qg PSBwYXJ0cy5tZXRob2QuY2xvbmUoKTsKPiBAQCAtMTAzLDcgKzEwNiw3IEBAIGltcGw8RTogUnBj RW52aXJvbm1lbnQgKyBDbG9uZT4gSDJTZXJ2aWNlPEU+IHsKPiAgICAgIH0KPiAgfQo+ICAKPiAt aW1wbDxFOiBScGNFbnZpcm9ubWVudCArIENsb25lPiB0b3dlcl9zZXJ2aWNlOjpTZXJ2aWNlPFJl cXVlc3Q8Qm9keT4+IGZvciBIMlNlcnZpY2U8RT4gewo+ICtpbXBsPEU6IFJwY0Vudmlyb25tZW50 ICsgQ2xvbmU+IHRvd2VyX3NlcnZpY2U6OlNlcnZpY2U8UmVxdWVzdDxJbmNvbWluZz4+IGZvciBI MlNlcnZpY2U8RT4gewo+ICAgICAgdHlwZSBSZXNwb25zZSA9IFJlc3BvbnNlPEJvZHk+Owo+ICAg ICAgdHlwZSBFcnJvciA9IEVycm9yOwo+ICAgICAgI1thbGxvdyhjbGlwcHk6OnR5cGVfY29tcGxl eGl0eSldCj4gQEAgLTExMyw3ICsxMTYsNyBAQCBpbXBsPEU6IFJwY0Vudmlyb25tZW50ICsgQ2xv bmU+IHRvd2VyX3NlcnZpY2U6OlNlcnZpY2U8UmVxdWVzdDxCb2R5Pj4gZm9yIEgyU2Vydgo+ICAg ICAgICAgIFBvbGw6OlJlYWR5KE9rKCgpKSkKPiAgICAgIH0KPiAgCj4gLSAgICBmbiBjYWxsKCZt dXQgc2VsZiwgcmVxOiBSZXF1ZXN0PEJvZHk+KSAtPiBTZWxmOjpGdXR1cmUgewo+ICsgICAgZm4g Y2FsbCgmbXV0IHNlbGYsIHJlcTogUmVxdWVzdDxJbmNvbWluZz4pIC0+IFNlbGY6OkZ1dHVyZSB7 Cj4gICAgICAgICAgbGV0IHBhdGggPSByZXEudXJpKCkucGF0aCgpLnRvX293bmVkKCk7Cj4gICAg ICAgICAgbGV0IG1ldGhvZCA9IHJlcS5tZXRob2QoKS5jbG9uZSgpOwo+ICAgICAgICAgIGxldCB3 b3JrZXIgPSBzZWxmLndvcmtlci5jbG9uZSgpOwo+IEBAIC0xMjYsMTQgKzEyOSwxNCBAQCBpbXBs PEU6IFJwY0Vudmlyb25tZW50ICsgQ2xvbmU+IHRvd2VyX3NlcnZpY2U6OlNlcnZpY2U8UmVxdWVz dDxCb2R5Pj4gZm9yIEgyU2Vydgo+ICAgICAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICAg ICAgRXJyKGVycikgPT4gewo+ICAgICAgICAgICAgICAgICAgICAgIGlmIGxldCBTb21lKGFwaWVy cikgPSBlcnIuZG93bmNhc3RfcmVmOjo8SHR0cEVycm9yPigpIHsKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgbGV0IG11dCByZXNwID0gUmVzcG9uc2U6Om5ldyhCb2R5Ojpmcm9tKGFwaWVyci5t ZXNzYWdlLmNsb25lKCkpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZXNw ID0gUmVzcG9uc2U6Om5ldyhhcGllcnIubWVzc2FnZS5jbG9uZSgpLmludG8oKSk7Cj4gICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc3AuZXh0ZW5zaW9uc19tdXQoKQo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLmluc2VydChFcnJvck1lc3NhZ2VFeHRlbnNpb24oYXBpZXJyLm1lc3Nh Z2UuY2xvbmUoKSkpOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVzcC5zdGF0dXNfbXV0 KCkgPSBhcGllcnIuY29kZTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZjo6bG9nX3Jl c3BvbnNlKHdvcmtlciwgbWV0aG9kLCAmcGF0aCwgJnJlc3ApOwo+ICAgICAgICAgICAgICAgICAg ICAgICAgICBPayhyZXNwKQo+ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAg ICAgICAgICAgICAgICAgICAgIGxldCBtdXQgcmVzcCA9IFJlc3BvbnNlOjpuZXcoQm9keTo6ZnJv bShlcnIudG9fc3RyaW5nKCkpKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG11dCBy ZXNwID0gUmVzcG9uc2U6Om5ldyhlcnIudG9fc3RyaW5nKCkuaW50bygpKTsKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzcC5leHRlbnNpb25zX211dCgpCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAuaW5zZXJ0KEVycm9yTWVzc2FnZUV4dGVuc2lvbihlcnIudG9fc3RyaW5nKCkp KTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlc3Auc3RhdHVzX211dCgpID0gU3RhdHVz Q29kZTo6QkFEX1JFUVVFU1Q7Cj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3Jj L2xpYi5ycyBiL3Byb3htb3gtcmVzdC1zZXJ2ZXIvc3JjL2xpYi5ycwo+IGluZGV4IDQzZGFmYTkx Li41ZGRkMzY2NyAxMDA2NDQKPiAtLS0gYS9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9saWIucnMK PiArKysgYi9wcm94bW94LXJlc3Qtc2VydmVyL3NyYy9saWIucnMKPiBAQCAtMzQsNyArMzQsNyBA QCBtb2QgZW52aXJvbm1lbnQ7Cj4gIHB1YiB1c2UgZW52aXJvbm1lbnQ6Oio7Cj4gIAo+ICBtb2Qg YXBpX2NvbmZpZzsKPiAtcHViIHVzZSBhcGlfY29uZmlnOjp7QXBpQ29uZmlnLCBBdXRoRXJyb3Is IEF1dGhIYW5kbGVyLCBJbmRleEhhbmRsZXIsIFVuaXhBY2NlcHRvcn07Cj4gK3B1YiB1c2UgYXBp X2NvbmZpZzo6e0FwaUNvbmZpZywgQXV0aEVycm9yLCBBdXRoSGFuZGxlciwgSW5kZXhIYW5kbGVy fTsKPiAgCj4gIG1vZCByZXN0Owo+ICBwdWIgdXNlIHJlc3Q6OntSZWRpcmVjdG9yLCBSZXN0U2Vy dmVyfTsKPiBkaWZmIC0tZ2l0IGEvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvcmVzdC5ycyBiL3By b3htb3gtcmVzdC1zZXJ2ZXIvc3JjL3Jlc3QucnMKPiBpbmRleCBmNWE3MjA1Mi4uZjkwMjU5MmQg MTAwNjQ0Cj4gLS0tIGEvcHJveG1veC1yZXN0LXNlcnZlci9zcmMvcmVzdC5ycwo+ICsrKyBiL3By b3htb3gtcmVzdC1zZXJ2ZXIvc3JjL3Jlc3QucnMKPiBAQCAtMTAsMTcgKzEwLDI1IEBAIHVzZSBz dGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKPiAgdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9l cnIsIEVycm9yfTsKPiAgdXNlIGZ1dHVyZXM6OmZ1dHVyZTo6RnV0dXJlRXh0Owo+ICB1c2UgZnV0 dXJlczo6c3RyZWFtOjpUcnlTdHJlYW1FeHQ7Cj4gLXVzZSBoeXBlcjo6Ym9keTo6SHR0cEJvZHk7 Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6e0JvZHlEYXRhU3RyZWFtLCBCb2R5U3RyZWFtfTsKPiAr dXNlIGh5cGVyOjpib2R5Ojp7Qm9keSBhcyBIeXBlckJvZHksIEluY29taW5nfTsKPiAgdXNlIGh5 cGVyOjpoZWFkZXI6OntzZWxmLCBIZWFkZXJNYXB9Owo+ICB1c2UgaHlwZXI6Omh0dHA6OnJlcXVl c3Q6OlBhcnRzOwo+IC11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBSZXNwb25zZSwgU3RhdHVz Q29kZX07Cj4gK3VzZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKPiAr dXNlIGh5cGVyX3V0aWw6OnJ0Ojp7VG9raW9FeGVjdXRvciwgVG9raW9Jb307Cj4gK3VzZSBoeXBl cl91dGlsOjpzZXJ2ZXI6OmNvbm47Cj4gK3VzZSBoeXBlcl91dGlsOjpzZXJ2ZXI6OmdyYWNlZnVs OjpHcmFjZWZ1bFNodXRkb3duOwo+ICt1c2UgaHlwZXJfdXRpbDo6c2VydmljZTo6VG93ZXJUb0h5 cGVyU2VydmljZTsKPiAgdXNlIHJlZ2V4OjpSZWdleDsKPiAgdXNlIHNlcmRlX2pzb246OlZhbHVl Owo+ICB1c2UgdG9raW86OmZzOjpGaWxlOwo+ICt1c2UgdG9raW86OmlvOjp7QXN5bmNSZWFkLCBB c3luY1dyaXRlfTsKPiAgdXNlIHRva2lvOjp0aW1lOjpJbnN0YW50Owo+ICt1c2UgdG9raW9fc3Ry ZWFtOjp3cmFwcGVyczo6UmVjZWl2ZXJTdHJlYW07Cj4gIHVzZSB0b3dlcl9zZXJ2aWNlOjpTZXJ2 aWNlOwo+ICB1c2UgdXJsOjpmb3JtX3VybGVuY29kZWQ7Cj4gIAo+ICt1c2UgcHJveG1veF9odHRw OjpCb2R5Owo+ICB1c2UgcHJveG1veF9yb3V0ZXI6OnsKPiAgICAgIGNoZWNrX2FwaV9wZXJtaXNz aW9uLCBBcGlIYW5kbGVyLCBBcGlNZXRob2QsIEh0dHBFcnJvciwgUGVybWlzc2lvbiwgUnBjRW52 aXJvbm1lbnQsCj4gICAgICBScGNFbnZpcm9ubWVudFR5cGUsIFVzZXJJbmZvcm1hdGlvbiwKPiBA QCAtNDAsNiArNDgsNyBAQCB1bnNhZmUgZXh0ZXJuICJDIiB7Cj4gICAgICBmbiB0enNldCgpOwo+ ICB9Cj4gIAo+ICsjW2Rlcml2ZShDbG9uZSldCj4gIHN0cnVjdCBBdXRoU3RyaW5nRXh0ZW5zaW9u KFN0cmluZyk7Cj4gIAo+ICBwdWIoY3JhdGUpIHN0cnVjdCBFbXB0eVVzZXJJbmZvcm1hdGlvbiB7 fQo+IEBAIC03NCwyNCArODMsMTEgQEAgaW1wbCBSZXN0U2VydmVyIHsKPiAgICAgICAgICAgICAg YXBpX2NvbmZpZzogQXJjOjpuZXcoYXBpX2NvbmZpZyksCj4gICAgICAgICAgfQo+ICAgICAgfQo+ IC19Cj4gIAo+IC1pbXBsPFQ6IFBlZXJBZGRyZXNzPiBTZXJ2aWNlPCZUPiBmb3IgUmVzdFNlcnZl ciB7Cj4gLSAgICB0eXBlIFJlc3BvbnNlID0gQXBpU2VydmljZTsKPiAtICAgIHR5cGUgRXJyb3Ig PSBFcnJvcjsKPiAtICAgIHR5cGUgRnV0dXJlID0gc3RkOjpmdXR1cmU6OlJlYWR5PFJlc3VsdDxB cGlTZXJ2aWNlLCBFcnJvcj4+Owo+IC0KPiAtICAgIGZuIHBvbGxfcmVhZHkoJm11dCBzZWxmLCBf Y3g6ICZtdXQgQ29udGV4dCkgLT4gUG9sbDxSZXN1bHQ8KCksIFNlbGY6OkVycm9yPj4gewo+IC0g ICAgICAgIFBvbGw6OlJlYWR5KE9rKCgpKSkKPiAtICAgIH0KPiAtCj4gLSAgICBmbiBjYWxsKCZt dXQgc2VsZiwgY3R4OiAmVCkgLT4gU2VsZjo6RnV0dXJlIHsKPiAtICAgICAgICBzdGQ6OmZ1dHVy ZTo6cmVhZHkobWF0Y2ggY3R4LnBlZXJfYWRkcigpIHsKPiAtICAgICAgICAgICAgRXJyKGVycikg PT4gRXJyKGZvcm1hdF9lcnIhKCJ1bmFibGUgdG8gZ2V0IHBlZXIgYWRkcmVzcyAtIHt9IiwgZXJy KSksCj4gLSAgICAgICAgICAgIE9rKHBlZXIpID0+IE9rKEFwaVNlcnZpY2Ugewo+IC0gICAgICAg ICAgICAgICAgcGVlciwKPiAtICAgICAgICAgICAgICAgIGFwaV9jb25maWc6IEFyYzo6Y2xvbmUo JnNlbGYuYXBpX2NvbmZpZyksCj4gLSAgICAgICAgICAgIH0pLAo+ICsgICAgcHViIGZuIGFwaV9z ZXJ2aWNlKCZzZWxmLCBwZWVyOiAmZHluIFBlZXJBZGRyZXNzKSAtPiBSZXN1bHQ8QXBpU2Vydmlj ZSwgRXJyb3I+IHsKPiArICAgICAgICBPayhBcGlTZXJ2aWNlIHsKPiArICAgICAgICAgICAgcGVl cjogcGVlci5wZWVyX2FkZHIoKT8sCj4gKyAgICAgICAgICAgIGFwaV9jb25maWc6IEFyYzo6Y2xv bmUoJnNlbGYuYXBpX2NvbmZpZyksCj4gICAgICAgICAgfSkKPiAgICAgIH0KPiAgfQo+IEBAIC0x MDgsMjUgKzEwNCw0MCBAQCBpbXBsIFJlZGlyZWN0b3Igewo+ICAgICAgcHViIGZuIG5ldygpIC0+ IFNlbGYgewo+ICAgICAgICAgIFNlbGYge30KPiAgICAgIH0KPiAtfQo+ICAKPiAtaW1wbDxUPiBT ZXJ2aWNlPCZUPiBmb3IgUmVkaXJlY3RvciB7Cj4gLSAgICB0eXBlIFJlc3BvbnNlID0gUmVkaXJl Y3RTZXJ2aWNlOwo+IC0gICAgdHlwZSBFcnJvciA9IEVycm9yOwo+IC0gICAgdHlwZSBGdXR1cmUg PSBzdGQ6OmZ1dHVyZTo6UmVhZHk8UmVzdWx0PFNlbGY6OlJlc3BvbnNlLCBTZWxmOjpFcnJvcj4+ Owo+IC0KPiAtICAgIGZuIHBvbGxfcmVhZHkoJm11dCBzZWxmLCBfY3g6ICZtdXQgQ29udGV4dDwn Xz4pIC0+IFBvbGw8UmVzdWx0PCgpLCBTZWxmOjpFcnJvcj4+IHsKPiAtICAgICAgICBQb2xsOjpS ZWFkeShPaygoKSkpCj4gLSAgICB9Cj4gLQo+IC0gICAgZm4gY2FsbCgmbXV0IHNlbGYsIF9jdHg6 ICZUKSAtPiBTZWxmOjpGdXR1cmUgewo+IC0gICAgICAgIHN0ZDo6ZnV0dXJlOjpyZWFkeShPayhS ZWRpcmVjdFNlcnZpY2Uge30pKQo+ICsgICAgcHViIGZuIHJlZGlyZWN0X3NlcnZpY2UoJnNlbGYp IC0+IFJlZGlyZWN0U2VydmljZSB7Cj4gKyAgICAgICAgUmVkaXJlY3RTZXJ2aWNlIHt9Cj4gICAg ICB9Cj4gIH0KPiAgCj4gKyNbZGVyaXZlKENsb25lKV0KPiAgcHViIHN0cnVjdCBSZWRpcmVjdFNl cnZpY2U7Cj4gIAo+IC1pbXBsIFNlcnZpY2U8UmVxdWVzdDxCb2R5Pj4gZm9yIFJlZGlyZWN0U2Vy dmljZSB7Cj4gK2ltcGwgUmVkaXJlY3RTZXJ2aWNlIHsKPiArICAgIHB1YiBhc3luYyBmbiBzZXJ2 ZTxTPigKPiArICAgICAgICBzZWxmLAo+ICsgICAgICAgIGNvbm46IFMsCj4gKyAgICAgICAgbXV0 IGdyYWNlZnVsOiBPcHRpb248QXJjPEdyYWNlZnVsU2h1dGRvd24+PiwKPiArICAgICkgLT4gUmVz dWx0PCgpLCBFcnJvcj4KPiArICAgIHdoZXJlCj4gKyAgICAgICAgUzogQXN5bmNSZWFkICsgQXN5 bmNXcml0ZSArIFVucGluICsgU2VuZCArICdzdGF0aWMsCj4gKyAgICB7Cj4gKyAgICAgICAgbGV0 IGFwaV9zZXJ2aWNlID0gVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlbGYpOwo+ICsgICAgICAg IGxldCBpbyA9IFRva2lvSW86Om5ldyhjb25uKTsKPiArICAgICAgICBsZXQgYXBpX2Nvbm4gPSBj b25uOjphdXRvOjpCdWlsZGVyOjpuZXcoVG9raW9FeGVjdXRvcjo6bmV3KCkpOwo+ICsgICAgICAg IGxldCBhcGlfY29ubiA9IGFwaV9jb25uLnNlcnZlX2Nvbm5lY3Rpb25fd2l0aF91cGdyYWRlcyhp bywgYXBpX3NlcnZpY2UpOwo+ICsgICAgICAgIGlmIGxldCBTb21lKGdyYWNlZnVsKSA9IGdyYWNl ZnVsLnRha2UoKSB7Cj4gKyAgICAgICAgICAgIGxldCBhcGlfY29ubiA9IGdyYWNlZnVsLndhdGNo KGFwaV9jb25uKTsKPiArICAgICAgICAgICAgZHJvcChncmFjZWZ1bCk7Cj4gKyAgICAgICAgICAg IGFwaV9jb25uLmF3YWl0Cj4gKyAgICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgYXBpX2Nv bm4uYXdhaXQKPiArICAgICAgICB9Cj4gKyAgICAgICAgLm1hcF9lcnIofGVycnwgZm9ybWF0X2Vy ciEoImVycm9yIHNlcnZpbmcgcmVkaXJlY3QgY29ubmVjdGlvbjoge2Vycn0iKSkKPiArICAgIH0K PiArfQo+ICsKPiAraW1wbCBTZXJ2aWNlPFJlcXVlc3Q8SW5jb21pbmc+PiBmb3IgUmVkaXJlY3RT ZXJ2aWNlIHsKPiAgICAgIHR5cGUgUmVzcG9uc2UgPSBSZXNwb25zZTxCb2R5PjsKPiAgICAgIHR5 cGUgRXJyb3IgPSBhbnlob3c6OkVycm9yOwo+ICAgICAgdHlwZSBGdXR1cmUgPSBQaW48Qm94PGR5 biBGdXR1cmU8T3V0cHV0ID0gUmVzdWx0PFNlbGY6OlJlc3BvbnNlLCBTZWxmOjpFcnJvcj4+ICsg U2VuZD4+Owo+IEBAIC0xMzUsNyArMTQ2LDcgQEAgaW1wbCBTZXJ2aWNlPFJlcXVlc3Q8Qm9keT4+ IGZvciBSZWRpcmVjdFNlcnZpY2Ugewo+ICAgICAgICAgIFBvbGw6OlJlYWR5KE9rKCgpKSkKPiAg ICAgIH0KPiAgCj4gLSAgICBmbiBjYWxsKCZtdXQgc2VsZiwgcmVxOiBSZXF1ZXN0PEJvZHk+KSAt PiBTZWxmOjpGdXR1cmUgewo+ICsgICAgZm4gY2FsbCgmbXV0IHNlbGYsIHJlcTogUmVxdWVzdDxJ bmNvbWluZz4pIC0+IFNlbGY6OkZ1dHVyZSB7Cj4gICAgICAgICAgbGV0IGZ1dHVyZSA9IGFzeW5j IG1vdmUgewo+ICAgICAgICAgICAgICBsZXQgaGVhZGVyX2hvc3RfdmFsdWUgPSByZXEKPiAgICAg ICAgICAgICAgICAgIC5oZWFkZXJzKCkKPiBAQCAtMTk0LDEyICsyMDUsNiBAQCBpbXBsIFBlZXJB ZGRyZXNzIGZvciB0b2tpbzo6bmV0OjpUY3BTdHJlYW0gewo+ICAgICAgfQo+ICB9Cj4gIAo+IC1p bXBsIFBlZXJBZGRyZXNzIGZvciBoeXBlcjo6c2VydmVyOjpjb25uOjpBZGRyU3RyZWFtIHsKPiAt ICAgIGZuIHBlZXJfYWRkcigmc2VsZikgLT4gUmVzdWx0PHN0ZDo6bmV0OjpTb2NrZXRBZGRyLCBF cnJvcj4gewo+IC0gICAgICAgIE9rKHNlbGYucmVtb3RlX2FkZHIoKSkKPiAtICAgIH0KPiAtfQo+ IC0KPiAgaW1wbCBQZWVyQWRkcmVzcyBmb3IgdG9raW86Om5ldDo6VW5peFN0cmVhbSB7Cj4gICAg ICBmbiBwZWVyX2FkZHIoJnNlbGYpIC0+IFJlc3VsdDxzdGQ6Om5ldDo6U29ja2V0QWRkciwgRXJy b3I+IHsKPiAgICAgICAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIGFjdHVhbGx5IHJlcHJlc2Vu dCB0aGUgdnNvY2sgcGVlciBpbiB0aGUgQXBpU2VydmljZSBzdHJ1Y3QgLSBmb3Igbm93Cj4gQEAg LTIyMywxMSArMjI4LDM2IEBAIGltcGw8VDogUGVlckFkZHJlc3M+IFBlZXJBZGRyZXNzIGZvciBw cm94bW94X2h0dHA6OlJhdGVMaW1pdGVkU3RyZWFtPFQ+IHsKPiAgLy8gUnVzdCB3YW50cyB0aGlz IHR5cGUgJ3B1YicgaGVyZSAoZWxzZSB3ZSBnZXQgJ3ByaXZhdGUgdHlwZSBgQXBpU2VydmljZWAK PiAgLy8gaW4gcHVibGljIGludGVyZmFjZScpLiBUaGUgdHlwZSBpcyBzdGlsbCBwcml2YXRlIGJl Y2F1c2UgdGhlIGNyYXRlIGRvZXMKPiAgLy8gbm90IGV4cG9ydCBpdC4KPiArI1tkZXJpdmUoQ2xv bmUpXQo+ICBwdWIgc3RydWN0IEFwaVNlcnZpY2Ugewo+ICAgICAgcHViIHBlZXI6IHN0ZDo6bmV0 OjpTb2NrZXRBZGRyLAo+ICAgICAgcHViIGFwaV9jb25maWc6IEFyYzxBcGlDb25maWc+LAo+ICB9 Cj4gIAo+ICtpbXBsIEFwaVNlcnZpY2Ugewo+ICsgICAgcHViIGFzeW5jIGZuIHNlcnZlPFM+KAo+ ICsgICAgICAgIHNlbGYsCj4gKyAgICAgICAgY29ubjogUywKPiArICAgICAgICBtdXQgZ3JhY2Vm dWw6IE9wdGlvbjxBcmM8R3JhY2VmdWxTaHV0ZG93bj4+LAo+ICsgICAgKSAtPiBSZXN1bHQ8KCks IEVycm9yPgo+ICsgICAgd2hlcmUKPiArICAgICAgICBTOiBBc3luY1JlYWQgKyBBc3luY1dyaXRl ICsgVW5waW4gKyBTZW5kICsgJ3N0YXRpYywKPiArICAgIHsKPiArICAgICAgICBsZXQgYXBpX3Nl cnZpY2UgPSBUb3dlclRvSHlwZXJTZXJ2aWNlOjpuZXcoc2VsZik7Cj4gKyAgICAgICAgbGV0IGlv ID0gVG9raW9Jbzo6bmV3KGNvbm4pOwo+ICsgICAgICAgIGxldCBhcGlfY29ubiA9IGNvbm46OmF1 dG86OkJ1aWxkZXI6Om5ldyhUb2tpb0V4ZWN1dG9yOjpuZXcoKSk7Cj4gKyAgICAgICAgbGV0IGFw aV9jb25uID0gYXBpX2Nvbm4uc2VydmVfY29ubmVjdGlvbl93aXRoX3VwZ3JhZGVzKGlvLCBhcGlf c2VydmljZSk7Cj4gKyAgICAgICAgaWYgbGV0IFNvbWUoZ3JhY2VmdWwpID0gZ3JhY2VmdWwudGFr ZSgpIHsKPiArICAgICAgICAgICAgbGV0IGFwaV9jb25uID0gZ3JhY2VmdWwud2F0Y2goYXBpX2Nv bm4pOwo+ICsgICAgICAgICAgICBkcm9wKGdyYWNlZnVsKTsKPiArICAgICAgICAgICAgYXBpX2Nv bm4uYXdhaXQKPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBhcGlfY29ubi5hd2Fp dAo+ICsgICAgICAgIH0KPiArICAgICAgICAubWFwX2Vycih8ZXJyfCBmb3JtYXRfZXJyISgiZXJy b3Igc2VydmluZyBjb25uZWN0aW9uOiB7ZXJyfSIpKQo+ICsgICAgfQo+ICt9Cj4gKwo+ICBmbiBs b2dfcmVzcG9uc2UoCj4gICAgICBsb2dmaWxlOiBPcHRpb248JkFyYzxNdXRleDxGaWxlTG9nZ2Vy Pj4+LAo+ICAgICAgcGVlcjogJnN0ZDo6bmV0OjpTb2NrZXRBZGRyLAo+IEBAIC0zMDcsNyArMzM3 LDcgQEAgZm4gZ2V0X3VzZXJfYWdlbnQoaGVhZGVyczogJkhlYWRlck1hcCkgLT4gT3B0aW9uPFN0 cmluZz4gewo+ICAgICAgICAgIC5vaygpCj4gIH0KPiAgCj4gLWltcGwgU2VydmljZTxSZXF1ZXN0 PEJvZHk+PiBmb3IgQXBpU2VydmljZSB7Cj4gK2ltcGwgU2VydmljZTxSZXF1ZXN0PEluY29taW5n Pj4gZm9yIEFwaVNlcnZpY2Ugewo+ICAgICAgdHlwZSBSZXNwb25zZSA9IFJlc3BvbnNlPEJvZHk+ Owo+ICAgICAgdHlwZSBFcnJvciA9IEVycm9yOwo+ICAgICAgI1thbGxvdyhjbGlwcHk6OnR5cGVf Y29tcGxleGl0eSldCj4gQEAgLTMxNyw3ICszNDcsNyBAQCBpbXBsIFNlcnZpY2U8UmVxdWVzdDxC b2R5Pj4gZm9yIEFwaVNlcnZpY2Ugewo+ICAgICAgICAgIFBvbGw6OlJlYWR5KE9rKCgpKSkKPiAg ICAgIH0KPiAgCj4gLSAgICBmbiBjYWxsKCZtdXQgc2VsZiwgcmVxOiBSZXF1ZXN0PEJvZHk+KSAt PiBTZWxmOjpGdXR1cmUgewo+ICsgICAgZm4gY2FsbCgmbXV0IHNlbGYsIHJlcTogUmVxdWVzdDxJ bmNvbWluZz4pIC0+IFNlbGY6OkZ1dHVyZSB7Cj4gICAgICAgICAgbGV0IHBhdGggPSByZXEudXJp KCkucGF0aF9hbmRfcXVlcnkoKS51bndyYXAoKS5hc19zdHIoKS50b19vd25lZCgpOwo+ICAgICAg ICAgIGxldCBtZXRob2QgPSByZXEubWV0aG9kKCkuY2xvbmUoKTsKPiAgICAgICAgICBsZXQgdXNl cl9hZ2VudCA9IGdldF91c2VyX2FnZW50KHJlcS5oZWFkZXJzKCkpOwo+IEBAIC0zODQsNyArNDE0 LDcgQEAgZm4gcGFyc2VfcXVlcnlfcGFyYW1ldGVyczxTOiAnc3RhdGljICsgQnVpbGRIYXNoZXIg KyBTZW5kPigKPiAgYXN5bmMgZm4gZ2V0X3JlcXVlc3RfcGFyYW1ldGVyczxTOiAnc3RhdGljICsg QnVpbGRIYXNoZXIgKyBTZW5kPigKPiAgICAgIHBhcmFtX3NjaGVtYTogUGFyYW1ldGVyU2NoZW1h LAo+ICAgICAgcGFydHM6ICZQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVx X2JvZHk6IEluY29taW5nLAo+ICAgICAgdXJpX3BhcmFtOiBIYXNoTWFwPFN0cmluZywgU3RyaW5n LCBTPiwKPiAgKSAtPiBSZXN1bHQ8VmFsdWUsIEVycm9yPiB7Cj4gICAgICBsZXQgbXV0IGlzX2pz b24gPSBmYWxzZTsKPiBAQCAtNDAxLDEzICs0MzEsMTcgQEAgYXN5bmMgZm4gZ2V0X3JlcXVlc3Rf cGFyYW1ldGVyczxTOiAnc3RhdGljICsgQnVpbGRIYXNoZXIgKyBTZW5kPigKPiAgICAgICAgICB9 Cj4gICAgICB9Cj4gIAo+IC0gICAgbGV0IGJvZHkgPSBUcnlTdHJlYW1FeHQ6Om1hcF9lcnIocmVx X2JvZHksIHxlcnJ8IHsKPiArICAgIGxldCBzdHJlYW1fYm9keSA9IEJvZHlTdHJlYW06Om5ldyhy ZXFfYm9keSk7Cj4gKyAgICBsZXQgYm9keSA9IFRyeVN0cmVhbUV4dDo6bWFwX2VycihzdHJlYW1f Ym9keSwgfGVycnwgewo+ICAgICAgICAgIGh0dHBfZXJyIShCQURfUkVRVUVTVCwgIlByb2JsZW1z IHJlYWRpbmcgcmVxdWVzdCBib2R5OiB7fSIsIGVycikKPiAgICAgIH0pCj4gLSAgICAudHJ5X2Zv bGQoVmVjOjpuZXcoKSwgfG11dCBhY2MsIGNodW5rfCBhc3luYyBtb3ZlIHsKPiArICAgIC50cnlf Zm9sZChWZWM6Om5ldygpLCB8bXV0IGFjYywgZnJhbWV8IGFzeW5jIG1vdmUgewo+ICAgICAgICAg IC8vIEZJWE1FOiBtYXggcmVxdWVzdCBib2R5IHNpemU/Cj4gLSAgICAgICAgaWYgYWNjLmxlbigp ICsgY2h1bmsubGVuKCkgPCA2NCAqIDEwMjQgewo+IC0gICAgICAgICAgICBhY2MuZXh0ZW5kX2Zy b21fc2xpY2UoJmNodW5rKTsKPiArICAgICAgICBsZXQgZnJhbWUgPSBmcmFtZQo+ICsgICAgICAg ICAgICAuaW50b19kYXRhKCkKPiArICAgICAgICAgICAgLm1hcF9lcnIofGVycnwgZm9ybWF0X2Vy ciEoIkZhaWxlZCB0byByZWFkIHJlcXVlc3QgYm9keSBmcmFtZSAtIHtlcnI6P30iKSk/Owo+ICsg ICAgICAgIGlmIGFjYy5sZW4oKSArIGZyYW1lLmxlbigpIDwgNjQgKiAxMDI0IHsKPiArICAgICAg ICAgICAgYWNjLmV4dGVuZF9mcm9tX3NsaWNlKCZmcmFtZSk7Cj4gICAgICAgICAgICAgIE9rKGFj YykKPiAgICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgICBFcnIoaHR0cF9lcnIhKEJBRF9S RVFVRVNULCAiUmVxdWVzdCBib2R5IHRvbyBsYXJnZSIpKQo+IEBAIC00MzcsMTMgKzQ3MSwxNCBA QCBhc3luYyBmbiBnZXRfcmVxdWVzdF9wYXJhbWV0ZXJzPFM6ICdzdGF0aWMgKyBCdWlsZEhhc2hl ciArIFNlbmQ+KAo+ICAgICAgfQo+ICB9Cj4gIAo+ICsjW2Rlcml2ZShDbG9uZSldCj4gIHN0cnVj dCBOb0xvZ0V4dGVuc2lvbigpOwo+ICAKPiAgYXN5bmMgZm4gcHJveHlfcHJvdGVjdGVkX3JlcXVl c3QoCj4gICAgICBjb25maWc6ICZBcGlDb25maWcsCj4gICAgICBpbmZvOiAmQXBpTWV0aG9kLAo+ ICAgICAgbXV0IHBhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVx X2JvZHk6IEluY29taW5nLAo+ICAgICAgcGVlcjogJnN0ZDo6bmV0OjpTb2NrZXRBZGRyLAo+ICAp IC0+IFJlc3VsdDxSZXNwb25zZTxCb2R5PiwgRXJyb3I+IHsKPiAgICAgIGxldCBtdXQgdXJpX3Bh cnRzID0gcGFydHMudXJpLmNsb25lKCkuaW50b19wYXJ0cygpOwo+IEBAIC00NjMsOSArNDk4LDE0 IEBAIGFzeW5jIGZuIHByb3h5X3Byb3RlY3RlZF9yZXF1ZXN0KAo+ICAgICAgbGV0IHJlbG9hZF90 aW1lem9uZSA9IGluZm8ucmVsb2FkX3RpbWV6b25lOwo+ICAKPiAgICAgIGxldCBtdXQgcmVzcCA9 IG1hdGNoIGNvbmZpZy5wcml2aWxlZ2VkX2FkZHIuY2xvbmUoKSB7Cj4gLSAgICAgICAgTm9uZSA9 PiBoeXBlcjo6Y2xpZW50OjpDbGllbnQ6Om5ldygpLnJlcXVlc3QocmVxdWVzdCkuYXdhaXQ/LAo+ ICsgICAgICAgIE5vbmUgPT4gewo+ICsgICAgICAgICAgICBoeXBlcl91dGlsOjpjbGllbnQ6Omxl Z2FjeTo6Q2xpZW50OjpidWlsZGVyKFRva2lvRXhlY3V0b3I6Om5ldygpKQo+ICsgICAgICAgICAg ICAgICAgLmJ1aWxkX2h0dHAoKQo+ICsgICAgICAgICAgICAgICAgLnJlcXVlc3QocmVxdWVzdCkK PiArICAgICAgICAgICAgICAgIC5hd2FpdD8KPiArICAgICAgICB9Cj4gICAgICAgICAgU29tZShh ZGRyKSA9PiB7Cj4gLSAgICAgICAgICAgIGh5cGVyOjpjbGllbnQ6OkNsaWVudDo6YnVpbGRlcigp Cj4gKyAgICAgICAgICAgIGh5cGVyX3V0aWw6OmNsaWVudDo6bGVnYWN5OjpDbGllbnQ6OmJ1aWxk ZXIoVG9raW9FeGVjdXRvcjo6bmV3KCkpCj4gICAgICAgICAgICAgICAgICAuYnVpbGQoYWRkcikK PiAgICAgICAgICAgICAgICAgIC5yZXF1ZXN0KHJlcXVlc3QpCj4gICAgICAgICAgICAgICAgICAu YXdhaXQ/Cj4gQEAgLTQ3OSw3ICs1MTksNyBAQCBhc3luYyBmbiBwcm94eV9wcm90ZWN0ZWRfcmVx dWVzdCgKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gIAo+IC0gICAgT2socmVzcCkKPiArICAgIE9r KHJlc3AubWFwKHxifCBCb2R5Ojp3cmFwX3N0cmVhbShCb2R5RGF0YVN0cmVhbTo6bmV3KGIpKSkp Cj4gIH0KPiAgCj4gIGZuIGRlbGF5X3VuYXV0aF90aW1lKCkgLT4gc3RkOjp0aW1lOjpJbnN0YW50 IHsKPiBAQCAtNDkxLDIyICs1MzEsMjMgQEAgZm4gYWNjZXNzX2ZvcmJpZGRlbl90aW1lKCkgLT4g c3RkOjp0aW1lOjpJbnN0YW50IHsKPiAgfQo+ICAKPiAgZm4gaGFuZGxlX3N0cmVhbV9hc19qc29u X3NlcShzdHJlYW06IHByb3htb3hfcm91dGVyOjpTdHJlYW0pIC0+IFJlc3VsdDxSZXNwb25zZTxC b2R5PiwgRXJyb3I+IHsKPiAtICAgIGxldCAobXV0IHNlbmQsIGJvZHkpID0gaHlwZXI6OkJvZHk6 OmNoYW5uZWwoKTsKPiArICAgIGxldCAoc2VuZCwgYm9keSkgPSB0b2tpbzo6c3luYzo6bXBzYzo6 Y2hhbm5lbDo6PFJlc3VsdDxWZWM8dTg+LCBFcnJvcj4+KDEpOwo+ICAgICAgdG9raW86OnNwYXdu KGFzeW5jIG1vdmUgewo+ICAgICAgICAgIHVzZSBmdXR1cmVzOjpTdHJlYW1FeHQ7Cj4gIAo+ICAg ICAgICAgIGxldCBtdXQgc3RyZWFtID0gc3RyZWFtLmludG9faW5uZXIoKTsKPiAgICAgICAgICB3 aGlsZSBsZXQgU29tZShyZWNvcmQpID0gc3RyZWFtLm5leHQoKS5hd2FpdCB7Cj4gLSAgICAgICAg ICAgIGlmIHNlbmQuc2VuZF9kYXRhKHJlY29yZC50b19ieXRlcygpLmludG8oKSkuYXdhaXQuaXNf ZXJyKCkgewo+ICsgICAgICAgICAgICBpZiBzZW5kLnNlbmQoT2socmVjb3JkLnRvX2J5dGVzKCkp KS5hd2FpdC5pc19lcnIoKSB7Cj4gICAgICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICAg ICAgfQo+ICAgICAgICAgIH0KPiAgICAgIH0pOwo+ICAKPiAtICAgIE9rKFJlc3BvbnNlOjpidWls ZGVyKCkKPiArICAgIFJlc3BvbnNlOjpidWlsZGVyKCkKPiAgICAgICAgICAuc3RhdHVzKGh0dHA6 OlN0YXR1c0NvZGU6Ok9LKQo+ICAgICAgICAgIC5oZWFkZXIoaHR0cDo6aGVhZGVyOjpDT05URU5U X1RZUEUsICJhcHBsaWNhdGlvbi9qc29uLXNlcSIpCj4gLSAgICAgICAgLmJvZHkoYm9keSk/KQo+ ICsgICAgICAgIC5ib2R5KEJvZHk6OndyYXBfc3RyZWFtKFJlY2VpdmVyU3RyZWFtOjpuZXcoYm9k eSkpKQo+ICsgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQo+ICB9Cj4gIAo+ICBmbiBoYW5k bGVfc3luY19zdHJlYW1fYXNfanNvbl9zZXEoCj4gQEAgLTUyNyw3ICs1NjgsNyBAQCBwdWIoY3Jh dGUpIGFzeW5jIGZuIGhhbmRsZV9hcGlfcmVxdWVzdDxFbnY6IFJwY0Vudmlyb25tZW50LCBTOiAn c3RhdGljICsgQnVpbGRIYQo+ICAgICAgaW5mbzogJidzdGF0aWMgQXBpTWV0aG9kLAo+ICAgICAg Zm9ybWF0dGVyOiBPcHRpb248JidzdGF0aWMgZHluIE91dHB1dEZvcm1hdHRlcj4sCj4gICAgICBw YXJ0czogUGFydHMsCj4gLSAgICByZXFfYm9keTogQm9keSwKPiArICAgIHJlcV9ib2R5OiBJbmNv bWluZywKPiAgICAgIHVyaV9wYXJhbTogSGFzaE1hcDxTdHJpbmcsIFN0cmluZywgUz4sCj4gICkg LT4gUmVzdWx0PFJlc3BvbnNlPEJvZHk+LCBFcnJvcj4gewo+ICAgICAgbGV0IGZvcm1hdHRlciA9 IGZvcm1hdHRlci51bndyYXBfb3IoY3JhdGU6OmZvcm1hdHRlcjo6RElSRUNUX0pTT05fRk9STUFU VEVSKTsKPiBAQCAtNjMwLDkgKzY3MSwxMCBAQCBwdWIoY3JhdGUpIGFzeW5jIGZuIGhhbmRsZV9h cGlfcmVxdWVzdDxFbnY6IFJwY0Vudmlyb25tZW50LCBTOiAnc3RhdGljICsgQnVpbGRIYQo+ICAg ICAgICAgICAgICApOwo+ICAgICAgICAgICAgICByZXNwLm1hcCh8Ym9keXwgewo+ICAgICAgICAg ICAgICAgICAgQm9keTo6d3JhcF9zdHJlYW0oCj4gLSAgICAgICAgICAgICAgICAgICAgRGVmbGF0 ZUVuY29kZXI6OmJ1aWxkZXIoVHJ5U3RyZWFtRXh0OjptYXBfZXJyKGJvZHksIHxlcnJ8IHsKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgcHJveG1veF9sYW5nOjppb19mb3JtYXRfZXJyISgiZXJy b3IgZHVyaW5nIGNvbXByZXNzaW9uOiB7fSIsIGVycikKPiAtICAgICAgICAgICAgICAgICAgICB9 KSkKPiArICAgICAgICAgICAgICAgICAgICBEZWZsYXRlRW5jb2Rlcjo6YnVpbGRlcihUcnlTdHJl YW1FeHQ6Om1hcF9lcnIoCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEJvZHlEYXRhU3RyZWFt OjpuZXcoYm9keSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHxlcnJ8IHByb3htb3hfbGFu Zzo6aW9fZm9ybWF0X2VyciEoImVycm9yIGR1cmluZyBjb21wcmVzc2lvbjoge30iLCBlcnIpLAoK Q291bGQgaW5saW5lIHRoZSBgZXJyYCBhYm92ZSBpbnRvIHRoZSBhcmdzIG9mIGBpb19mb3JtYXRf ZXJyYCBzaW5jZQp5b3UncmUgdG91Y2hpbmcgdGhhdCBwYXJ0ICh1bmxlc3Mgb3VyIG1hY3JvIGRv ZXNuJ3Qgc3VwcG9ydCB0aGF0LCBidXQgSQphc3N1bWUgaXQgZG9lcykuCgo+ICsgICAgICAgICAg ICAgICAgICAgICkpCj4gICAgICAgICAgICAgICAgICAgICAgLnpsaWIodHJ1ZSkKPiAgICAgICAg ICAgICAgICAgICAgICAuZmx1c2hfd2luZG93KGlzX3N0cmVhbWluZy50aGVuX3NvbWUoNjQgKiAx MDI0KSkKPiAgICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKSwKPiBAQCAtNzk2LDcgKzgzOCw3 IEBAIGZuIGV4dHJhY3RfY29tcHJlc3Npb25fbWV0aG9kKGhlYWRlcnM6ICZodHRwOjpIZWFkZXJN YXApIC0+IE9wdGlvbjxDb21wcmVzc2lvbk1lCj4gIGltcGwgQXBpQ29uZmlnIHsKPiAgICAgIHB1 YiBhc3luYyBmbiBoYW5kbGVfcmVxdWVzdCgKPiAgICAgICAgICBzZWxmOiBBcmM8QXBpQ29uZmln PiwKPiAtICAgICAgICByZXE6IFJlcXVlc3Q8Qm9keT4sCj4gKyAgICAgICAgcmVxOiBSZXF1ZXN0 PEluY29taW5nPiwKPiAgICAgICAgICBwZWVyOiAmc3RkOjpuZXQ6OlNvY2tldEFkZHIsCj4gICAg ICApIC0+IFJlc3VsdDxSZXNwb25zZTxCb2R5PiwgRXJyb3I+IHsKPiAgICAgICAgICBsZXQgKHBh cnRzLCBib2R5KSA9IHJlcS5pbnRvX3BhcnRzKCk7Cj4gQEAgLTgwOCw3ICs4NTAsNyBAQCBpbXBs IEFwaUNvbmZpZyB7Cj4gICAgICAgICAgaWYgcGF0aC5sZW4oKSArIHF1ZXJ5LmxlbigpID4gTUFY X1VSSV9RVUVSWV9MRU5HVEggewo+ICAgICAgICAgICAgICByZXR1cm4gT2soUmVzcG9uc2U6OmJ1 aWxkZXIoKQo+ICAgICAgICAgICAgICAgICAgLnN0YXR1cyhTdGF0dXNDb2RlOjpVUklfVE9PX0xP TkcpCj4gLSAgICAgICAgICAgICAgICAuYm9keSgiIi5pbnRvKCkpCj4gKyAgICAgICAgICAgICAg ICAuYm9keShCb2R5OjplbXB0eSgpKQo+ICAgICAgICAgICAgICAgICAgLnVud3JhcCgpKTsKPiAg ICAgICAgICB9Cj4gIAo+IEBAIC05MDcsNyArOTQ5LDcgQEAgaW1wbCBBY3Rpb24gewo+ICAKPiAg cHViIHN0cnVjdCBBcGlSZXF1ZXN0RGF0YTwnYT4gewo+ICAgICAgcGFydHM6IFBhcnRzLAo+IC0g ICAgYm9keTogQm9keSwKPiArICAgIGJvZHk6IEluY29taW5nLAo+ICAgICAgcGVlcjogJidhIHN0 ZDo6bmV0OjpTb2NrZXRBZGRyLAo+ICAgICAgY29uZmlnOiAmJ2EgQXBpQ29uZmlnLAo+ICAgICAg ZnVsbF9wYXRoOiAmJ2Egc3RyLAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9wYnMtZGV2ZWwK