From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D85EC433FF for ; Thu, 15 Aug 2019 09:27:22 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2D51F208C2 for ; Thu, 15 Aug 2019 09:27:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2D51F208C2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hyC27-0003b2-U5; Thu, 15 Aug 2019 09:26:59 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hyC26-0003ax-NF for xen-devel@lists.xenproject.org; Thu, 15 Aug 2019 09:26:58 +0000 X-Inumbo-ID: d38ab8c8-bf3e-11e9-96f7-bc764e2007e4 Received: from mx1.redhat.com (unknown [209.132.183.28]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id d38ab8c8-bf3e-11e9-96f7-bc764e2007e4; Thu, 15 Aug 2019 09:26:57 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 937F183F42; Thu, 15 Aug 2019 09:26:56 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-117-57.ams2.redhat.com [10.36.117.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0A31F9805; Thu, 15 Aug 2019 09:26:54 +0000 (UTC) To: devel@edk2.groups.io, anthony.perard@citrix.com References: <20190813113119.14804-1-anthony.perard@citrix.com> <20190813113119.14804-24-anthony.perard@citrix.com> From: Laszlo Ersek Message-ID: Date: Thu, 15 Aug 2019 11:26:54 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190813113119.14804-24-anthony.perard@citrix.com> Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 15 Aug 2019 09:26:56 +0000 (UTC) Subject: Re: [Xen-devel] [edk2-devel] [PATCH v5 23/35] OvmfPkg/XenPlatformPei: Rework memory detection X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Jordan Justen , Julien Grall , Ard Biesheuvel , xen-devel@lists.xenproject.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gMDgvMTMvMTkgMTM6MzEsIEFudGhvbnkgUEVSQVJEIHdyb3RlOgo+IFdoZW4gcnVubmluZyBh cyBhIFhlbiBQVkggZ3Vlc3QsIHRoZXJlIGlzIG5vIENNT1MgdG8gcmVhZCB0aGUgbWVtb3J5Cj4g c2l6ZSBmcm9tLiAgUmV3b3JrIEdldFN5c3RlbU1lbW9yeVNpemUoQmVsb3d8QWJvdmUpNGdiKCkg c28gdGhleSBjYW4KPiB3b3JrIHdpdGhvdXQgQ01PUyBieSByZWFkaW5nIHRoZSBlODIwIHRhYmxl Lgo+IAo+IFJld29yayBYZW5QdWJsaXNoUmFtUmVnaW9ucyB0byBhbHNvIGNhcmUgZm9yIHRoZSBy ZXNlcnZlZCBhbmQgQUNQSQo+IGVudHJ5IGluIHRoZSBlODIwIHRhYmxlLiBUaGUgcmVnaW9uIHRo YXQgd2FzIGFkZGVkIGJ5IEluaXRpYWxpemVYZW4oKQo+IGlzbid0IG5lZWRlZCBhcyB0aGF0IHNh bWUgZW50cnkgaXMgaW4gdGhlIGU4MjAgdGFibGUgcHJvdmlkZWQgYnkKPiBodm1sb2FkZXIuCj4g Cj4gTVRSUiBzZXR0aW5ncyBhcmVuJ3QgbW9kaWZpZWQgYW55bW9yZSwgb24gSFZNIGl0J3MgYWxy ZWFkeSBkb25lIGJ5Cj4gaHZtbG9hZGVyLCBvbiBQVkggaXQgaXMgc3VwcG9zZWQgdG8gaGF2ZSBz YW5lIGRlZmF1bHQuIE1UUlIgd2lsbCBuZWVkCj4gdG8gYmUgZG9uZSBwcm9wZXJseSBidXQga2Vl cGluZyB3aGF0J3MgYWxyZWFkeSBiZWVuIGRvbmUgYnkgcHJvZ3JhbXMKPiB0aGF0IGhhdmUgcnVu IGJlZm9yZSBPVk1GIHdpbGwgZG8gZm9yIG5vdy4KPiAKPiBSZWY6IGh0dHBzOi8vYnVnemlsbGEu dGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4OQo+IFNpZ25lZC1vZmYtYnk6IEFudGhv bnkgUEVSQVJEIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPgo+IEFja2VkLWJ5OiBMYXN6bG8g RXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgo+IC0tLQo+IAo+IE5vdGVzOgo+ICAgICB2NToKPiAg ICAgLSBmaXggY29kaW5nIHN0eWxlCj4gICAgIC0gZml4IHR5cG8gaW4gY29tbWl0IG1lc3NhZ2UK PiAgICAgLSBIYW5kbGUgYWxsIHBvc3NpYmxlIGNhc2VzIG9mIGEgRTgyMCByZXNlcnZlZCByYW5n ZSBvdmVybGFwcGluZyB3aXRoIHRoZQo+ICAgICAgIExBUElDIHJhbmdlLgo+ICAgICAKPiAgICAg djQ6Cj4gICAgIC0gc29tZSBjb2Rpbmcgc3R5bGUKPiAgICAgLSBBZGRlZCBBZGRSZXNlcnZlZE1l bW9yeVJhbmdlSG9iLCBhbmQgdXNpbmcgaXQuCj4gICAgIC0gdGhpcyBwYXRjaCBub3cgcmVwbGFj ZSAiT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaTogUmVzZXJ2ZSBodm1sb2FkZXIncyBtZW1vcnkgb25s eSB3aGVuIGl0IGhhcyBydW4iCj4gICAgICAgZnJvbSB2My4gIGh2bWxvYWRlciBoYXZlIGFkZGVk IGFuIGVudHJ5IGluIHRoZSBlODIwIHRhYmxlLCB0aGVyZSBpcyBubwo+ICAgICAgIG5lZWQgZm9y IGEgc3BlY2lhbCBjYXNlLgo+ICAgICAtIG5vdywgZXZlcnl0aGluZyB0aGF0IGlzIGluIHRoZSBl ODIwIHRhYmxlIGlzIGFkZGVkIHRvIE9WTUYncyBtZW1vcnkKPiAgICAgICBtYXAsIG5vIG1vcmUg c2tpcHBpbmcgQUNQSSBlbnRyaWVzIG9yIGh2bWxvYWRlcidzIHJlc2VydmVkIGVudHJpZXMuCj4g ICAgICAgSW5zdGVhZCwgd2UgbG9vayBmb3IgdGhlIGxvY2FsIEFQSUMgcmVnaW9uIGFuZCBhdm9p ZCBpdCBpZiBpdCBpcwo+ICAgICAgIHByZXNlbnQgaW4gdGhlIGU4MjAuCj4gICAgIC0gcmV3b3Jr IGNvbW1pdCBtZXNzYWdlCj4gCj4gIE92bWZQa2cvWGVuUGxhdGZvcm1QZWkvUGxhdGZvcm0uaCAg fCAxMyArKysrKysKPiAgT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuYyB8IDY5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBPdm1mUGtnL1hlblBsYXRmb3JtUGVpL1BsYXRm b3JtLmMgIHwgMTEgKysrKysKPiAgT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9YZW4uYyAgICAgICB8 IDc1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDE0 NyBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvT3ZtZlBr Zy9YZW5QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5oIGIvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9QbGF0 Zm9ybS5oCj4gaW5kZXggZGI5YTYyNTcyZi4uNzY2MWY0YThkZSAxMDA2NDQKPiAtLS0gYS9Pdm1m UGtnL1hlblBsYXRmb3JtUGVpL1BsYXRmb3JtLmgKPiArKysgYi9Pdm1mUGtnL1hlblBsYXRmb3Jt UGVpL1BsYXRmb3JtLmgKPiBAQCAtNDQsNiArNDQsMTMgQEAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNl U2l6ZUhvYiAoCj4gICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENhY2hlYWJsZQo+ICAg ICk7Cj4gIAo+ICtWT0lECj4gK0FkZFJlc2VydmVkTWVtb3J5UmFuZ2VIb2IgKAo+ICsgIEVGSV9Q SFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlCYXNlLAo+ICsgIEVGSV9QSFlTSUNBTF9BRERS RVNTICAgICAgICBNZW1vcnlMaW1pdCwKPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAg Q2FjaGVhYmxlCj4gKyAgKTsKPiArCj4gIFZPSUQKPiAgQWRkcmVzc1dpZHRoSW5pdGlhbGl6YXRp b24gKAo+ICAgIFZPSUQKPiBAQCAtMTE0LDYgKzEyMSwxMiBAQCBYZW5QdWJsaXNoUmFtUmVnaW9u cyAoCj4gICAgVk9JRAo+ICAgICk7Cj4gIAo+ICtFRklfU1RBVFVTCj4gK1hlbkdldEU4MjBNYXAg KAo+ICsgIEVGSV9FODIwX0VOVFJZNjQgKipFbnRyaWVzLAo+ICsgIFVJTlQzMiAqQ291bnQKPiAr ICApOwo+ICsKPiAgZXh0ZXJuIEVGSV9CT09UX01PREUgbUJvb3RNb2RlOwo+ICAKPiAgZXh0ZXJu IFVJTlQ4IG1QaHlzTWVtQWRkcmVzc1dpZHRoOwo+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1hlblBs YXRmb3JtUGVpL01lbURldGVjdC5jIGIvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9NZW1EZXRlY3Qu Ywo+IGluZGV4IGNmOTVmOWM0NzQuLjFmODFlZWU0MDcgMTAwNjQ0Cj4gLS0tIGEvT3ZtZlBrZy9Y ZW5QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuYwo+ICsrKyBiL092bWZQa2cvWGVuUGxhdGZvcm1QZWkv TWVtRGV0ZWN0LmMKPiBAQCAtOTYsNiArOTYsNDUgQEAgUTM1VHNlZ01ieXRlc0luaXRpYWxpemF0 aW9uICgKPiAgICBtUTM1VHNlZ01ieXRlcyA9IEV4dGVuZGVkVHNlZ01ieXRlczsKPiAgfQo+ICAK PiArU1RBVElDCj4gK1VJTlQ2NAo+ICtHZXRIaWdoZXN0U3lzdGVtTWVtb3J5QWRkcmVzcyAoCj4g KyAgQk9PTEVBTiAgICAgICBCZWxvdzRnYgo+ICsgICkKPiArewo+ICsgIEVGSV9FODIwX0VOVFJZ NjQgICAgKkU4MjBNYXA7Cj4gKyAgVUlOVDMyICAgICAgICAgICAgICBFODIwRW50cmllc0NvdW50 Owo+ICsgIEVGSV9FODIwX0VOVFJZNjQgICAgKkVudHJ5Owo+ICsgIEVGSV9TVEFUVVMgICAgICAg ICAgU3RhdHVzOwo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgTG9vcDsKPiArICBVSU5UNjQgICAg ICAgICAgICAgIEhpZ2hlc3RBZGRyZXNzOwo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgRW50cnlF bmQ7Cj4gKwo+ICsgIEhpZ2hlc3RBZGRyZXNzID0gMDsKPiArCj4gKyAgU3RhdHVzID0gWGVuR2V0 RTgyME1hcCAoJkU4MjBNYXAsICZFODIwRW50cmllc0NvdW50KTsKPiArICBBU1NFUlRfRUZJX0VS Uk9SIChTdGF0dXMpOwo+ICsKPiArICBmb3IgKExvb3AgPSAwOyBMb29wIDwgRTgyMEVudHJpZXND b3VudDsgTG9vcCsrKSB7Cj4gKyAgICBFbnRyeSA9IEU4MjBNYXAgKyBMb29wOwo+ICsgICAgRW50 cnlFbmQgPSBFbnRyeS0+QmFzZUFkZHIgKyBFbnRyeS0+TGVuZ3RoOwo+ICsKPiArICAgIGlmIChF bnRyeS0+VHlwZSA9PSBFZmlBY3BpQWRkcmVzc1JhbmdlTWVtb3J5ICYmCj4gKyAgICAgICAgRW50 cnlFbmQgPiBIaWdoZXN0QWRkcmVzcykgewo+ICsKPiArICAgICAgaWYgKEJlbG93NGdiICYmIChF bnRyeUVuZCA8PSBCQVNFXzRHQikpIHsKPiArICAgICAgICBIaWdoZXN0QWRkcmVzcyA9IEVudHJ5 RW5kOwo+ICsgICAgICB9IGVsc2UgaWYgKCFCZWxvdzRnYiAmJiAoRW50cnlFbmQgPj0gQkFTRV80 R0IpKSB7Cj4gKyAgICAgICAgSGlnaGVzdEFkZHJlc3MgPSBFbnRyeUVuZDsKPiArICAgICAgfQo+ ICsgICAgfQo+ICsgIH0KPiArCj4gKyAgLy8KPiArICAvLyBSb3VuZCBkb3duIHRoZSBlbmQgYWRk cmVzcy4KPiArICAvLwo+ICsgIHJldHVybiBIaWdoZXN0QWRkcmVzcyAmIH4oVUlOVDY0KUVGSV9Q QUdFX01BU0s7Cj4gK30KPiAgCj4gIFVJTlQzMgo+ICBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0 Z2IgKAo+IEBAIC0xMDUsNiArMTQ0LDE5IEBAIEdldFN5c3RlbU1lbW9yeVNpemVCZWxvdzRnYiAo Cj4gICAgVUlOVDggQ21vczB4MzQ7Cj4gICAgVUlOVDggQ21vczB4MzU7Cj4gIAo+ICsgIC8vCj4g KyAgLy8gSW4gUFZIIGNhc2UsIHRoZXJlIGlzIG5vIENNT1MsIHdlIGhhdmUgdG8gY2FsY3VsYXRl IHRoZSBtZW1vcnkgc2l6ZQo+ICsgIC8vIGZyb20gcGFyc2luZyB0aGUgRTgyMAo+ICsgIC8vCj4g KyAgaWYgKFhlblB2aERldGVjdGVkICgpKSB7Cj4gKyAgICBVSU5UNjQgIEhpZ2hlc3RBZGRyZXNz Owo+ICsKPiArICAgIEhpZ2hlc3RBZGRyZXNzID0gR2V0SGlnaGVzdFN5c3RlbU1lbW9yeUFkZHJl c3MgKFRSVUUpOwo+ICsgICAgQVNTRVJUIChIaWdoZXN0QWRkcmVzcyA+IDAgJiYgSGlnaGVzdEFk ZHJlc3MgPD0gQkFTRV80R0IpOwo+ICsKPiArICAgIHJldHVybiBIaWdoZXN0QWRkcmVzczsKPiAr ICB9Cj4gKwo+ICAgIC8vCj4gICAgLy8gQ01PUyAweDM0LzB4MzUgc3BlY2lmaWVzIHRoZSBzeXN0 ZW0gbWVtb3J5IGFib3ZlIDE2IE1CLgo+ICAgIC8vICogQ01PUygweDM1KSBpcyB0aGUgaGlnaCBi eXRlCj4gQEAgLTEyOSw2ICsxODEsMjMgQEAgR2V0U3lzdGVtTWVtb3J5U2l6ZUFib3ZlNGdiICgK PiAgICBVSU5UMzIgU2l6ZTsKPiAgICBVSU5UTiAgQ21vc0luZGV4Owo+ICAKPiArICAvLwo+ICsg IC8vIEluIFBWSCBjYXNlLCB0aGVyZSBpcyBubyBDTU9TLCB3ZSBoYXZlIHRvIGNhbGN1bGF0ZSB0 aGUgbWVtb3J5IHNpemUKPiArICAvLyBmcm9tIHBhcnNpbmcgdGhlIEU4MjAKPiArICAvLwo+ICsg IGlmIChYZW5QdmhEZXRlY3RlZCAoKSkgewo+ICsgICAgVUlOVDY0ICBIaWdoZXN0QWRkcmVzczsK PiArCj4gKyAgICBIaWdoZXN0QWRkcmVzcyA9IEdldEhpZ2hlc3RTeXN0ZW1NZW1vcnlBZGRyZXNz IChGQUxTRSk7Cj4gKyAgICBBU1NFUlQgKEhpZ2hlc3RBZGRyZXNzID09IDAgfHwgSGlnaGVzdEFk ZHJlc3MgPj0gQkFTRV80R0IpOwo+ICsKPiArICAgIGlmIChIaWdoZXN0QWRkcmVzcyA+PSBCQVNF XzRHQikgewo+ICsgICAgICBIaWdoZXN0QWRkcmVzcyAtPSBCQVNFXzRHQjsKPiArICAgIH0KPiAr Cj4gKyAgICByZXR1cm4gSGlnaGVzdEFkZHJlc3M7Cj4gKyAgfQo+ICsKPiAgICAvLwo+ICAgIC8v IENNT1MgMHg1Yi0weDVkIHNwZWNpZmllcyB0aGUgc3lzdGVtIG1lbW9yeSBhYm92ZSA0R0IgTUIu Cj4gICAgLy8gKiBDTU9TKDB4NWQpIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IHNpemUgYnl0ZQo+ IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1hlblBsYXRmb3JtUGVpL1BsYXRmb3JtLmMgYi9Pdm1mUGtn L1hlblBsYXRmb3JtUGVpL1BsYXRmb3JtLmMKPiBpbmRleCA2YWFhZmMzZWU5Li4yZjQyY2E2Y2Nk IDEwMDY0NAo+IC0tLSBhL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvUGxhdGZvcm0uYwo+ICsrKyBi L092bWZQa2cvWGVuUGxhdGZvcm1QZWkvUGxhdGZvcm0uYwo+IEBAIC0xMDIsNiArMTAyLDE3IEBA IEFkZFJlc2VydmVkTWVtb3J5QmFzZVNpemVIb2IgKAo+ICAgICAgKTsKPiAgfQo+ICAKPiArVk9J RAo+ICtBZGRSZXNlcnZlZE1lbW9yeVJhbmdlSG9iICgKPiArICBFRklfUEhZU0lDQUxfQUREUkVT UyAgICAgICAgTWVtb3J5QmFzZSwKPiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVt b3J5TGltaXQsCj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgIENhY2hlYWJsZQo+ICsg ICkKPiArewo+ICsgIEFkZFJlc2VydmVkTWVtb3J5QmFzZVNpemVIb2IgKE1lbW9yeUJhc2UsCj4g KyAgICAoVUlOVDY0KShNZW1vcnlMaW1pdCAtIE1lbW9yeUJhc2UpLCBDYWNoZWFibGUpOwo+ICt9 Cj4gKwo+ICBWT0lECj4gIEFkZElvTWVtb3J5UmFuZ2VIb2IgKAo+ICAgIEVGSV9QSFlTSUNBTF9B RERSRVNTICAgICAgICBNZW1vcnlCYXNlLAo+IGRpZmYgLS1naXQgYS9Pdm1mUGtnL1hlblBsYXRm b3JtUGVpL1hlbi5jIGIvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9YZW4uYwo+IGluZGV4IDcyZjZm MzdiNDYuLmM0NTA2ZGVmOWEgMTAwNjQ0Cj4gLS0tIGEvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9Y ZW4uYwo+ICsrKyBiL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvWGVuLmMKPiBAQCAtMjc2LDkgKzI3 NiwxNCBAQCBYZW5QdWJsaXNoUmFtUmVnaW9ucyAoCj4gICAgVk9JRAo+ICAgICkKPiAgewo+IC0g IEVGSV9FODIwX0VOVFJZNjQgICpFODIwTWFwOwo+IC0gIFVJTlQzMiAgICAgICAgICAgIEU4MjBF bnRyaWVzQ291bnQ7Cj4gLSAgRUZJX1NUQVRVUyAgICAgICAgU3RhdHVzOwo+ICsgIEVGSV9FODIw X0VOVFJZNjQgICAgICAqRTgyME1hcDsKPiArICBVSU5UMzIgICAgICAgICAgICAgICAgRTgyMEVu dHJpZXNDb3VudDsKPiArICBFRklfU1RBVFVTICAgICAgICAgICAgU3RhdHVzOwo+ICsgIEVGSV9F ODIwX0VOVFJZNjQgICAgICAqRW50cnk7Cj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgIEluZGV4 Owo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICBMYXBpY0Jhc2U7Cj4gKyAgVUlOVDY0ICAgICAg ICAgICAgICAgIExhcGljRW5kOwo+ICsKPiAgCgpUaGUgZXh0cmEgbmV3bGluZSBpcyBub3QgcmVh bGx5IGp1c3RpZmllZCwgYnV0IGl0J3MgYWxzbyBoYXJtbGVzcyBhbmQgbm90IHRvbyBhbm5veWlu Zy4KCk90aGVyd2lzZSwgdGhlIHVwZGF0ZSBsb29rcyBnb29kIHRvIG1lLCBhZGRyZXNzaW5nOgoK KiBodHRwOi8vbWlkLm1haWwtYXJjaGl2ZS5jb20vN2I4Y2I1ZWYtMjE2My05ZTIyLTM1MGYtODc3 YmU2OTUxYjM0QHJlZGhhdC5jb20KICBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVz c2FnZS80NDYxNQoKKiBodHRwOi8vbWlkLm1haWwtYXJjaGl2ZS5jb20vMjAxOTA4MDcxNTI4NTIu ZTQ3a29nc3h1YmJqa3VlNUBBaXItZGUtUm9nZXIKICBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cv ZGV2ZWwvbWVzc2FnZS80NTAxMgoKU28gbXkgQUNLIHN0YW5kcy4KClRoYW5rcwpMYXN6bG8KCj4g ICAgREVCVUcgKChERUJVR19JTkZPLCAiVXNpbmcgbWVtb3J5IG1hcCBwcm92aWRlZCBieSBYZW5c biIpKTsKPiAgCj4gQEAgLTI4NywyNiArMjkyLDYwIEBAIFhlblB1Ymxpc2hSYW1SZWdpb25zICgK PiAgICAvLwo+ICAgIEU4MjBFbnRyaWVzQ291bnQgPSAwOwo+ICAgIFN0YXR1cyA9IFhlbkdldEU4 MjBNYXAgKCZFODIwTWFwLCAmRTgyMEVudHJpZXNDb3VudCk7Cj4gLQo+ICAgIEFTU0VSVF9FRklf RVJST1IgKFN0YXR1cyk7Cj4gIAo+IC0gIGlmIChFODIwRW50cmllc0NvdW50ID4gMCkgewo+IC0g ICAgRUZJX0U4MjBfRU5UUlk2NCAqRW50cnk7Cj4gLSAgICBVSU5UMzIgTG9vcDsKPiArICBMYXBp Y0Jhc2UgPSBQY2RHZXQzMiAoUGNkQ3B1TG9jYWxBcGljQmFzZUFkZHJlc3MpOwo+ICsgIExhcGlj RW5kID0gTGFwaWNCYXNlICsgU0laRV8xTUI7Cj4gKyAgQWRkSW9NZW1vcnlSYW5nZUhvYiAoTGFw aWNCYXNlLCBMYXBpY0VuZCk7Cj4gIAo+IC0gICAgZm9yIChMb29wID0gMDsgTG9vcCA8IEU4MjBF bnRyaWVzQ291bnQ7IExvb3ArKykgewo+IC0gICAgICBFbnRyeSA9IEU4MjBNYXAgKyBMb29wOwo+ ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEU4MjBFbnRyaWVzQ291bnQ7IEluZGV4KyspIHsK PiArICAgIFVJTlQ2NCBCYXNlOwo+ICsgICAgVUlOVDY0IEVuZDsKPiArICAgIFVJTlQ2NCBSZXNl cnZlZEJhc2U7Cj4gKyAgICBVSU5UNjQgUmVzZXJ2ZWRFbmQ7Cj4gIAo+ICsgICAgRW50cnkgPSAm RTgyME1hcFtJbmRleF07Cj4gKwo+ICsgICAgLy8KPiArICAgIC8vIFJvdW5kIHVwIHRoZSBzdGFy dCBhZGRyZXNzLCBhbmQgcm91bmQgZG93biB0aGUgZW5kIGFkZHJlc3MuCj4gKyAgICAvLwo+ICsg ICAgQmFzZSA9IEFMSUdOX1ZBTFVFIChFbnRyeS0+QmFzZUFkZHIsIChVSU5UNjQpRUZJX1BBR0Vf U0laRSk7Cj4gKyAgICBFbmQgPSAoRW50cnktPkJhc2VBZGRyICsgRW50cnktPkxlbmd0aCkgJiB+ KFVJTlQ2NClFRklfUEFHRV9NQVNLOwo+ICsKPiArICAgIHN3aXRjaCAoRW50cnktPlR5cGUpIHsK PiArICAgIGNhc2UgRWZpQWNwaUFkZHJlc3NSYW5nZU1lbW9yeToKPiArICAgICAgQWRkTWVtb3J5 UmFuZ2VIb2IgKEJhc2UsIEVuZCk7Cj4gKyAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBFZmlBY3Bp QWRkcmVzc1JhbmdlQUNQSToKPiArICAgICAgQWRkUmVzZXJ2ZWRNZW1vcnlSYW5nZUhvYiAoQmFz ZSwgRW5kLCBGQUxTRSk7Cj4gKyAgICAgIGJyZWFrOwo+ICsgICAgY2FzZSBFZmlBY3BpQWRkcmVz c1JhbmdlUmVzZXJ2ZWQ6Cj4gICAgICAgIC8vCj4gLSAgICAgIC8vIE9ubHkgY2FyZSBhYm91dCBS QU0KPiArICAgICAgLy8gaHZtbG9hZGVyIG1hcmtzIGEgcmFuZ2UgdGhhdCBvdmVybGFwcyB3aXRo IHRoZSBsb2NhbCBBUElDIG1lbW9yeQo+ICsgICAgICAvLyBtYXBwZWQgcmVnaW9uIGFzIHJlc2Vy dmVkLCBidXQgQ3B1RHhlIHdhbnRzIGl0IGFzIG1hcHBlZCBJTy4gV2UKPiArICAgICAgLy8gaGF2 ZSBhbHJlYWR5IGFkZGVkIGl0IGFzIG1hcHBlZCBJTywgc28gc2tpcCBpdCBoZXJlLgo+ICAgICAg ICAvLwo+IC0gICAgICBpZiAoRW50cnktPlR5cGUgIT0gRWZpQWNwaUFkZHJlc3NSYW5nZU1lbW9y eSkgewo+IC0gICAgICAgIGNvbnRpbnVlOwo+IC0gICAgICB9Cj4gIAo+IC0gICAgICBBZGRNZW1v cnlCYXNlU2l6ZUhvYiAoRW50cnktPkJhc2VBZGRyLCBFbnRyeS0+TGVuZ3RoKTsKPiArICAgICAg Ly8KPiArICAgICAgLy8gYWRkIExBUElDIHByZWRlY2Vzc29yIHJhbmdlLCBpZiBhbnkKPiArICAg ICAgLy8KPiArICAgICAgUmVzZXJ2ZWRCYXNlID0gQmFzZTsKPiArICAgICAgUmVzZXJ2ZWRFbmQg PSBNSU4gKEVuZCwgTGFwaWNCYXNlKTsKPiArICAgICAgaWYgKFJlc2VydmVkQmFzZSA8IFJlc2Vy dmVkRW5kKSB7Cj4gKyAgICAgICAgQWRkUmVzZXJ2ZWRNZW1vcnlSYW5nZUhvYiAoUmVzZXJ2ZWRC YXNlLCBSZXNlcnZlZEVuZCwgRkFMU0UpOwo+ICsgICAgICB9Cj4gIAo+IC0gICAgICBNdHJyU2V0 TWVtb3J5QXR0cmlidXRlIChFbnRyeS0+QmFzZUFkZHIsIEVudHJ5LT5MZW5ndGgsIENhY2hlV3Jp dGVCYWNrKTsKPiArICAgICAgLy8KPiArICAgICAgLy8gYWRkIExBUElDIHN1Y2Nlc3NvciByYW5n ZSwgaWYgYW55Cj4gKyAgICAgIC8vCj4gKyAgICAgIFJlc2VydmVkQmFzZSA9IE1BWCAoQmFzZSwg TGFwaWNFbmQpOwo+ICsgICAgICBSZXNlcnZlZEVuZCA9IEVuZDsKPiArICAgICAgaWYgKFJlc2Vy dmVkQmFzZSA8IFJlc2VydmVkRW5kKSB7Cj4gKyAgICAgICAgQWRkUmVzZXJ2ZWRNZW1vcnlSYW5n ZUhvYiAoUmVzZXJ2ZWRCYXNlLCBSZXNlcnZlZEVuZCwgRkFMU0UpOwo+ICsgICAgICB9Cj4gKyAg ICAgIGJyZWFrOwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgYnJlYWs7Cj4gICAgICB9Cj4gICAg fQo+ICB9Cj4gQEAgLTMyNiwxMiArMzY1LDYgQEAgSW5pdGlhbGl6ZVhlbiAoCj4gIHsKPiAgICBS RVRVUk5fU1RBVFVTIFBjZFN0YXR1czsKPiAgCj4gLSAgLy8KPiAtICAvLyBSZXNlcnZlIGF3YXkg SFZNTE9BREVSIHJlc2VydmVkIG1lbW9yeSBbMHhGQzAwMDAwMCwweEZEMDAwMDAwKS4KPiAtICAv LyBUaGlzIG5lZWRzIHRvIG1hdGNoIEhWTUxPQURFUiBSRVNFUlZFRF9NRU1CQVNFL1JFU0VSVkVE X01FTVNJWkUuCj4gLSAgLy8KPiAtICBBZGRSZXNlcnZlZE1lbW9yeUJhc2VTaXplSG9iICgweEZD MDAwMDAwLCAweDEwMDAwMDAsIEZBTFNFKTsKPiAtCj4gICAgUGNkU3RhdHVzID0gUGNkU2V0Qm9v bFMgKFBjZFBjaURpc2FibGVCdXNFbnVtZXJhdGlvbiwgVFJVRSk7Cj4gICAgQVNTRVJUX1JFVFVS Tl9FUlJPUiAoUGNkU3RhdHVzKTsKPiAgCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==