From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v6 03/36] ARM: GICv3: allocate LPI pending and property table Date: Fri, 7 Apr 2017 19:04:03 +0100 Message-ID: <34d69d34-4872-2146-3896-474a222d7de4@arm.com> References: <20170407173307.9788-1-andre.przywara@arm.com> <20170407173307.9788-4-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cwYEy-0006tu-1o for xen-devel@lists.xenproject.org; Fri, 07 Apr 2017 18:04:08 +0000 In-Reply-To: <20170407173307.9788-4-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Vijay Kilari , Shanker Donthineni List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAwNy8wNC8xNyAxODozMiwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gVGhl IEFSTSBHSUN2MyBwcm92aWRlcyBhIG5ldyBraW5kIG9mIGludGVycnVwdCBjYWxsZWQgTFBJcy4K PiBUaGUgcGVuZGluZyBiaXRzIGFuZCB0aGUgY29uZmlndXJhdGlvbiBkYXRhIChwcmlvcml0eSwg ZW5hYmxlIGJpdHMpIGZvcgo+IHRob3NlIExQSXMgYXJlIHN0b3JlZCBpbiB0YWJsZXMgaW4gbm9y bWFsIG1lbW9yeSwgd2hpY2ggc29mdHdhcmUgaGFzIHRvCj4gcHJvdmlkZSB0byB0aGUgaGFyZHdh cmUuCj4gQWxsb2NhdGUgdGhlIHJlcXVpcmVkIG1lbW9yeSwgaW5pdGlhbGl6ZSBpdCBhbmQgaGFu ZCBpdCBvdmVyIHRvIGVhY2gKPiByZWRpc3RyaWJ1dG9yLiBUaGUgbWF4aW11bSBudW1iZXIgb2Yg TFBJcyB0byBiZSB1c2VkIGNhbiBiZSBhZGp1c3RlZCB3aXRoCj4gdGhlIGNvbW1hbmQgbGluZSBv cHRpb24gIm1heF9scGlfYml0cyIsIHdoaWNoIGRlZmF1bHRzIHRvIDIwIGJpdHMsCj4gY292ZXJp bmcgYWJvdXQgb25lIG1pbGxpb24gTFBJcy4KPgo+IFNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3 YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgo+IFJldmlld2VkLWJ5OiBTdGVmYW5vIFN0YWJl bGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CgpSZXZpZXdlZC1ieTogSnVsaWVuIEdyYWxs IDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCkNoZWVycywKCj4gLS0tCj4gIGRvY3MvbWlzYy94ZW4t Y29tbWFuZC1saW5lLm1hcmtkb3duIHwgICA5ICsrCj4gIHhlbi9hcmNoL2FybS9NYWtlZmlsZSAg ICAgICAgICAgICAgIHwgICAxICsKPiAgeGVuL2FyY2gvYXJtL2dpYy12My1scGkuYyAgICAgICAg ICAgfCAyMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHhlbi9hcmNo L2FybS9naWMtdjMuYyAgICAgICAgICAgICAgIHwgIDE3ICsrKwo+ICB4ZW4vaW5jbHVkZS9hc20t YXJtL2dpY192M19kZWZzLmggICB8ICA1MiArKysrKysrKysKPiAgeGVuL2luY2x1ZGUvYXNtLWFy bS9naWNfdjNfaXRzLmggICAgfCAgMTUgKystCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vaXJxLmgg ICAgICAgICAgIHwgICA4ICsrCj4gIDcgZmlsZXMgY2hhbmdlZCwgMzI4IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9naWMtdjMt bHBpLmMKPgo+IGRpZmYgLS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93 biBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gaW5kZXggNGM4ZmUyZi4u NDUwYjIyMiAxMDA2NDQKPiAtLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93 bgo+ICsrKyBiL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCj4gQEAgLTExNzIs NiArMTE3MiwxNSBAQCBiYXNlZCBpbnRlcnJ1cHRzLiBBbnkgaGlnaGVyIElSUXMgd2lsbCBiZSBh dmFpbGFibGUgZm9yIHVzZSB2aWEgUENJIE1TSS4KPiAgIyMjIG1heGNwdXMKPiAgPiBgPSA8aW50 ZWdlcj5gCj4KPiArIyMjIG1heFxfbHBpXF9iaXRzCj4gKz4gYD0gPGludGVnZXI+YAo+ICsKPiAr U3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgQVJNIEdJQ3YzIExQSSBpbnRlcnJ1cHRzIHRvIGFsbG9j YXRlIG9uIHRoZSBob3N0LAo+ICtwcmVzZW50ZWQgYXMgdGhlIG51bWJlciBvZiBiaXRzIG5lZWRl ZCB0byBlbmNvZGUgaXQuIFRoaXMgbXVzdCBiZSBhdCBsZWFzdAo+ICsxNCBhbmQgbm90IGV4Y2Vl ZCAzMiwgYW5kIGVhY2ggTFBJIHJlcXVpcmVzIG9uZSBieXRlIChjb25maWd1cmF0aW9uKSBhbmQK PiArb25lIHBlbmRpbmcgYml0IHRvIGJlIGFsbG9jYXRlZC4KPiArRGVmYXVsdHMgdG8gMjAgYml0 cyAodG8gY292ZXIgYXQgbW9zdCAxMDQ4NTc2IGludGVycnVwdHMpLgo+ICsKPiAgIyMjIG1jZQo+ ICA+IGA9IDxpbnRlZ2VyPmAKPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUg Yi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPiBpbmRleCAzOWMwYTAzLi42YmU4NWFiIDEwMDY0NAo+ IC0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQo+ICsrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmls ZQo+IEBAIC0xOSw2ICsxOSw3IEBAIG9iai15ICs9IGdpYy5vCj4gIG9iai15ICs9IGdpYy12Mi5v Cj4gIG9iai0kKENPTkZJR19IQVNfR0lDVjMpICs9IGdpYy12My5vCj4gIG9iai0kKENPTkZJR19I QVNfSVRTKSArPSBnaWMtdjMtaXRzLm8KPiArb2JqLSQoQ09ORklHX0hBU19JVFMpICs9IGdpYy12 My1scGkubwo+ICBvYmoteSArPSBndWVzdGNvcHkubwo+ICBvYmoteSArPSBodm0ubwo+ICBvYmot eSArPSBpby5vCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9naWMtdjMtbHBpLmMgYi94ZW4v YXJjaC9hcm0vZ2ljLXYzLWxwaS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAw MDAwLi4yN2U5YmY1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMtdjMt bHBpLmMKPiBAQCAtMCwwICsxLDIyNyBAQAo+ICsvKgo+ICsgKiB4ZW4vYXJjaC9hcm0vZ2ljLXYz LWxwaS5jCj4gKyAqCj4gKyAqIEFSTSBHSUN2MyBMb2NhbGl0eS1zcGVjaWZpYyBQZXJpcGhlcmFs IEludGVycnVwdHMgKExQSSkgc3VwcG9ydAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYs MjAxNyAtIEFSTSBMdGQKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK PiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdW5kZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQo+ICsgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDx4ZW4v bGliLmg+Cj4gKyNpbmNsdWRlIDx4ZW4vbW0uaD4KPiArI2luY2x1ZGUgPHhlbi9zaXplcy5oPgo+ ICsjaW5jbHVkZSA8eGVuL3dhcm5pbmcuaD4KPiArI2luY2x1ZGUgPGFzbS9naWMuaD4KPiArI2lu Y2x1ZGUgPGFzbS9naWNfdjNfZGVmcy5oPgo+ICsjaW5jbHVkZSA8YXNtL2dpY192M19pdHMuaD4K PiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ICsjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KPiArCj4gKyNk ZWZpbmUgTFBJX1BST1BUQUJMRV9ORUVEU19GTFVTSElORyAgICAoMVUgPDwgMCkKPiArCj4gKy8q IEdsb2JhbCBzdGF0ZSAqLwo+ICtzdGF0aWMgc3RydWN0IHsKPiArICAgIC8qIFRoZSBnbG9iYWwg TFBJIHByb3BlcnR5IHRhYmxlLCBzaGFyZWQgYnkgYWxsIHJlZGlzdHJpYnV0b3JzLiAqLwo+ICsg ICAgdWludDhfdCAqbHBpX3Byb3BlcnR5Owo+ICsgICAgLyoKPiArICAgICAqIE51bWJlciBvZiBw aHlzaWNhbCBMUElzIHRoZSBob3N0IHN1cHBvcnRzLiBUaGlzIGlzIGEgcHJvcGVydHkgb2YKPiAr ICAgICAqIHRoZSBHSUMgaGFyZHdhcmUuIFdlIGRlcGFydCBmcm9tIHRoZSBoYWJpdCBvZiBuYW1p bmcgdGhlc2UgdGhpbmdzCj4gKyAgICAgKiAicGh5c2ljYWwiIGluIFhlbiwgYXMgdGhlIEdJQ3Yz LzQgc3BlYyB1c2VzIHRoZSB0ZXJtICJwaHlzaWNhbCBMUEkiCj4gKyAgICAgKiBpbiBhIGRpZmZl cmVudCBjb250ZXh0IHRvIGRpZmZlcmVudGlhdGUgdGhlbSBmcm9tICJ2aXJ0dWFsIExQSXMiLgo+ ICsgICAgICovCj4gKyAgICB1bnNpZ25lZCBsb25nIGludCBtYXhfaG9zdF9scGlfaWRzOwo+ICsg ICAgdW5zaWduZWQgaW50IGZsYWdzOwo+ICt9IGxwaV9kYXRhOwo+ICsKPiArc3RydWN0IGxwaV9y ZWRpc3RfZGF0YSB7Cj4gKyAgICB2b2lkICAgICAgICAgICAgICAgICpwZW5kaW5nX3RhYmxlOwo+ ICt9Owo+ICsKPiArc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBscGlfcmVkaXN0X2RhdGEs IGxwaV9yZWRpc3QpOwo+ICsKPiArI2RlZmluZSBNQVhfTlJfSE9TVF9MUElTICAgKGxwaV9kYXRh Lm1heF9ob3N0X2xwaV9pZHMgLSBMUElfT0ZGU0VUKQo+ICsKPiArc3RhdGljIGludCBnaWN2M19s cGlfYWxsb2NhdGVfcGVuZHRhYmxlKHVpbnQ2NF90ICpyZWcpCj4gK3sKPiArICAgIHVpbnQ2NF90 IHZhbDsKPiArICAgIHZvaWQgKnBlbmR0YWJsZTsKPiArCj4gKyAgICBpZiAoIHRoaXNfY3B1KGxw aV9yZWRpc3QpLnBlbmRpbmdfdGFibGUgKQo+ICsgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gKwo+ ICsgICAgdmFsICA9IEdJQ19CQVNFUl9DQUNIRV9SYVdhV2IgPDwgR0lDUl9QRU5EQkFTRVJfSU5O RVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+ICsgICAgdmFsIHw9IEdJQ19CQVNFUl9DQUNIRV9TYW1l QXNJbm5lciA8PCBHSUNSX1BFTkRCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfU0hJRlQ7Cj4gKyAg ICB2YWwgfD0gR0lDX0JBU0VSX0lubmVyU2hhcmVhYmxlIDw8IEdJQ1JfUEVOREJBU0VSX1NIQVJF QUJJTElUWV9TSElGVDsKPiArCj4gKyAgICAvKgo+ICsgICAgICogVGhlIHBlbmRpbmcgdGFibGUg aG9sZHMgb25lIGJpdCBwZXIgTFBJIGFuZCBldmVuIGNvdmVycyBiaXRzIGZvcgo+ICsgICAgICog aW50ZXJydXB0IElEcyBiZWxvdyA4MTkyLCBzbyB3ZSBhbGxvY2F0ZSB0aGUgZnVsbCByYW5nZS4K PiArICAgICAqIFRoZSBHSUN2MyBpbXBvc2VzIGEgNjRLQiBhbGlnbm1lbnQgcmVxdWlyZW1lbnQs IGFsc28gcmVxdWlyZXMKPiArICAgICAqIHBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnkuCj4g KyAgICAgKi8KPiArICAgIHBlbmR0YWJsZSA9IF94emFsbG9jKGxwaV9kYXRhLm1heF9ob3N0X2xw aV9pZHMgLyA4LCBTWl82NEspOwo+ICsgICAgaWYgKCAhcGVuZHRhYmxlICkKPiArICAgICAgICBy ZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAvKiBNYWtlIHN1cmUgdGhlIHBoeXNpY2FsIGFkZHJl c3MgY2FuIGJlIGVuY29kZWQgaW4gdGhlIHJlZ2lzdGVyLiAqLwo+ICsgICAgaWYgKCB2aXJ0X3Rv X21hZGRyKHBlbmR0YWJsZSkgJiB+R0VOTUFTSyg1MSwgMTYpICkKPiArICAgIHsKPiArICAgICAg ICB4ZnJlZShwZW5kdGFibGUpOwo+ICsgICAgICAgIHJldHVybiAtRVJBTkdFOwo+ICsgICAgfQo+ ICsgICAgY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3ZhX3JhbmdlKHBlbmR0YWJsZSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBscGlfZGF0YS5tYXhfaG9z dF9scGlfaWRzIC8gOCk7Cj4gKwo+ICsgICAgdGhpc19jcHUobHBpX3JlZGlzdCkucGVuZGluZ190 YWJsZSA9IHBlbmR0YWJsZTsKPiArCj4gKyAgICB2YWwgfD0gR0lDUl9QRU5EQkFTRVJfUFRaOwo+ ICsKPiArICAgIHZhbCB8PSB2aXJ0X3RvX21hZGRyKHBlbmR0YWJsZSk7Cj4gKwo+ICsgICAgKnJl ZyA9IHZhbDsKPiArCj4gKyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogVGVsbCBh IHJlZGlzdHJpYnV0b3IgYWJvdXQgdGhlIChzaGFyZWQpIHByb3BlcnR5IHRhYmxlLCBhbGxvY2F0 aW5nIG9uZQo+ICsgKiBpZiBub3QgYWxyZWFkeSBkb25lLgo+ICsgKi8KPiArc3RhdGljIGludCBn aWN2M19scGlfc2V0X3Byb3B0YWJsZSh2b2lkIF9faW9tZW0gKiByZGlzdF9iYXNlKQo+ICt7Cj4g KyAgICB1aW50NjRfdCByZWc7Cj4gKwo+ICsgICAgcmVnICA9IEdJQ19CQVNFUl9DQUNIRV9SYVdh V2IgPDwgR0lDUl9QUk9QQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+ICsgICAgcmVn IHw9IEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lciA8PCBHSUNSX1BST1BCQVNFUl9PVVRFUl9D QUNIRUFCSUxJVFlfU0hJRlQ7Cj4gKyAgICByZWcgfD0gR0lDX0JBU0VSX0lubmVyU2hhcmVhYmxl IDw8IEdJQ1JfUFJPUEJBU0VSX1NIQVJFQUJJTElUWV9TSElGVDsKPiArCj4gKyAgICAvKgo+ICsg ICAgICogVGhlIHByb3BlcnR5IHRhYmxlIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIHJlZGlzdHJpYnV0 b3JzLCBzbyBhbGxvY2F0ZQo+ICsgICAgICogdGhpcyBvbmx5IG9uY2UsIGJ1dCByZXR1cm4gdGhl IHNhbWUgdmFsdWUgb24gc3Vic2VxdWVudCBjYWxscy4KPiArICAgICAqLwo+ICsgICAgaWYgKCAh bHBpX2RhdGEubHBpX3Byb3BlcnR5ICkKPiArICAgIHsKPiArICAgICAgICAvKiBUaGUgcHJvcGVy dHkgdGFibGUgaG9sZHMgb25lIGJ5dGUgcGVyIExQSS4gKi8KPiArICAgICAgICB2b2lkICp0YWJs ZSA9IF94bWFsbG9jKGxwaV9kYXRhLm1heF9ob3N0X2xwaV9pZHMsIFNaXzRLKTsKPiArCj4gKyAg ICAgICAgaWYgKCAhdGFibGUgKQo+ICsgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4g KyAgICAgICAgLyogTWFrZSBzdXJlIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGNhbiBiZSBlbmNvZGVk IGluIHRoZSByZWdpc3Rlci4gKi8KPiArICAgICAgICBpZiAoICh2aXJ0X3RvX21hZGRyKHRhYmxl KSAmIH5HRU5NQVNLKDUxLCAxMikpICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHhmcmVl KHRhYmxlKTsKPiArICAgICAgICAgICAgcmV0dXJuIC1FUkFOR0U7Cj4gKyAgICAgICAgfQo+ICsg ICAgICAgIG1lbXNldCh0YWJsZSwgR0lDX1BSSV9JUlEgfCBMUElfUFJPUF9SRVMxLCBNQVhfTlJf SE9TVF9MUElTKTsKPiArICAgICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFu Z2UodGFibGUsIE1BWF9OUl9IT1NUX0xQSVMpOwo+ICsgICAgICAgIGxwaV9kYXRhLmxwaV9wcm9w ZXJ0eSA9IHRhYmxlOwo+ICsgICAgfQo+ICsKPiArICAgIC8qIEVuY29kZSB0aGUgbnVtYmVyIG9m IGJpdHMgbmVlZGVkLCBtaW51cyBvbmUgKi8KPiArICAgIHJlZyB8PSBmbHMobHBpX2RhdGEubWF4 X2hvc3RfbHBpX2lkcyAtIDEpIC0gMTsKPiArCj4gKyAgICByZWcgfD0gdmlydF90b19tYWRkcihs cGlfZGF0YS5scGlfcHJvcGVydHkpOwo+ICsKPiArICAgIHdyaXRlcV9yZWxheGVkKHJlZywgcmRp c3RfYmFzZSArIEdJQ1JfUFJPUEJBU0VSKTsKPiArICAgIHJlZyA9IHJlYWRxX3JlbGF4ZWQocmRp c3RfYmFzZSArIEdJQ1JfUFJPUEJBU0VSKTsKPiArCj4gKyAgICAvKiBJZiB3ZSBjYW4ndCBkbyBz aGFyZWFibGUsIHdlIGhhdmUgdG8gZHJvcCBjYWNoZWFiaWxpdHkgYXMgd2VsbC4gKi8KPiArICAg IGlmICggIShyZWcgJiBHSUNSX1BST1BCQVNFUl9TSEFSRUFCSUxJVFlfTUFTSykgKQo+ICsgICAg ewo+ICsgICAgICAgIHJlZyAmPSB+R0lDUl9QUk9QQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX01B U0s7Cj4gKyAgICAgICAgcmVnIHw9IEdJQ19CQVNFUl9DQUNIRV9uQyA8PCBHSUNSX1BST1BCQVNF Ul9JTk5FUl9DQUNIRUFCSUxJVFlfU0hJRlQ7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogUmVtZW1i ZXIgdGhhdCB3ZSBoYXZlIHRvIGZsdXNoIHRoZSBwcm9wZXJ0eSB0YWJsZSBpZiBub24tY2FjaGVh YmxlLiAqLwo+ICsgICAgaWYgKCAocmVnICYgR0lDUl9QUk9QQkFTRVJfSU5ORVJfQ0FDSEVBQklM SVRZX01BU0spIDw9IEdJQ19CQVNFUl9DQUNIRV9uQyApCj4gKyAgICB7Cj4gKyAgICAgICAgbHBp X2RhdGEuZmxhZ3MgfD0gTFBJX1BST1BUQUJMRV9ORUVEU19GTFVTSElORzsKPiArICAgICAgICAv KiBVcGRhdGUgdGhlIHJlZGlzdHJpYnV0b3JzIGtub3dsZWRnZSBhYm91dCB0aGUgYXR0cmlidXRl cy4gKi8KPiArICAgICAgICB3cml0ZXFfcmVsYXhlZChyZWcsIHJkaXN0X2Jhc2UgKyBHSUNSX1BS T1BCQVNFUik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBn aWN2M19scGlfaW5pdF9yZGlzdCh2b2lkIF9faW9tZW0gKiByZGlzdF9iYXNlKQo+ICt7Cj4gKyAg ICB1aW50MzJfdCByZWc7Cj4gKyAgICB1aW50NjRfdCB0YWJsZV9yZWc7Cj4gKyAgICBpbnQgcmV0 Owo+ICsKPiArICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgTFBJcyB3aXRob3V0IGFuIElUUy4gKi8K PiArICAgIGlmICggIWdpY3YzX2l0c19ob3N0X2hhc19pdHMoKSApCj4gKyAgICAgICAgcmV0dXJu IC1FTk9ERVY7Cj4gKwo+ICsgICAgLyogTWFrZSBzdXJlIExQSXMgYXJlIGRpc2FibGVkIGJlZm9y ZSBzZXR0aW5nIHVwIHRoZSB0YWJsZXMuICovCj4gKyAgICByZWcgPSByZWFkbF9yZWxheGVkKHJk aXN0X2Jhc2UgKyBHSUNSX0NUTFIpOwo+ICsgICAgaWYgKCByZWcgJiBHSUNSX0NUTFJfRU5BQkxF X0xQSVMgKQo+ICsgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gKwo+ICsgICAgcmV0ID0gZ2ljdjNf bHBpX2FsbG9jYXRlX3BlbmR0YWJsZSgmdGFibGVfcmVnKTsKPiArICAgIGlmICggcmV0ICkKPiAr ICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgd3JpdGVxX3JlbGF4ZWQodGFibGVfcmVnLCByZGlz dF9iYXNlICsgR0lDUl9QRU5EQkFTRVIpOwo+ICsgICAgdGFibGVfcmVnID0gcmVhZHFfcmVsYXhl ZChyZGlzdF9iYXNlICsgR0lDUl9QRU5EQkFTRVIpOwo+ICsKPiArICAgIC8qIElmIHRoZSBoYXJk d2FyZSByZXBvcnRzIG5vbi1zaGFyZWFibGUsIGRyb3AgY2FjaGVhYmlsaXR5IGFzIHdlbGwuICov Cj4gKyAgICBpZiAoICEodGFibGVfcmVnICYgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZX01B U0spICkKPiArICAgIHsKPiArICAgICAgICB0YWJsZV9yZWcgJj0gR0lDUl9QRU5EQkFTRVJfU0hB UkVBQklMSVRZX01BU0s7Cj4gKyAgICAgICAgdGFibGVfcmVnICY9IEdJQ1JfUEVOREJBU0VSX0lO TkVSX0NBQ0hFQUJJTElUWV9NQVNLOwo+ICsgICAgICAgIHRhYmxlX3JlZyB8PSBHSUNfQkFTRVJf Q0FDSEVfbkMgPDwgR0lDUl9QRU5EQkFTRVJfSU5ORVJfQ0FDSEVBQklMSVRZX1NISUZUOwo+ICsK PiArICAgICAgICB3cml0ZXFfcmVsYXhlZCh0YWJsZV9yZWcsIHJkaXN0X2Jhc2UgKyBHSUNSX1BF TkRCQVNFUik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIGdpY3YzX2xwaV9zZXRfcHJvcHRh YmxlKHJkaXN0X2Jhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IG1heF9scGlf Yml0cyA9IDIwOwo+ICtpbnRlZ2VyX3BhcmFtKCJtYXhfbHBpX2JpdHMiLCBtYXhfbHBpX2JpdHMp Owo+ICsKPiAraW50IGdpY3YzX2xwaV9pbml0X2hvc3RfbHBpcyh1bnNpZ25lZCBpbnQgaG9zdF9s cGlfYml0cykKPiArewo+ICsgICAgLyoKPiArICAgICAqIEFuIGltcGxlbWVudGF0aW9uIG5lZWRz IHRvIHN1cHBvcnQgYXQgbGVhc3QgMTQgYml0cyBvZiBMUEkgSURzLgo+ICsgICAgICogVGVsbCB0 aGUgdXNlciBhYm91dCBpdCwgdGhlIGFjdHVhbCBudW1iZXIgaXMgcmVwb3J0ZWQgYmVsb3cuCj4g KyAgICAgKi8KPiArICAgIGlmICggbWF4X2xwaV9iaXRzIDwgMTQgfHwgbWF4X2xwaV9iaXRzID4g MzIgKQo+ICsgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAiV0FSTklORzogbWF4X2xwaV9i aXRzIG11c3QgYmUgYmV0d2VlbiAxNCBhbmQgMzIsIGFkanVzdGluZy5cbiIpOwo+ICsKPiArICAg IG1heF9scGlfYml0cyA9IG1heChtYXhfbHBpX2JpdHMsIDE0VSk7Cj4gKyAgICBscGlfZGF0YS5t YXhfaG9zdF9scGlfaWRzID0gQklUKG1pbihob3N0X2xwaV9iaXRzLCBtYXhfbHBpX2JpdHMpKTsK PiArCj4gKyAgICAvKgo+ICsgICAgICogV2FybiBpZiB0aGUgbnVtYmVyIG9mIExQSXMgYXJlIHF1 aXRlIGhpZ2gsIGFzIHRoZSB1c2VyIG1pZ2h0IG5vdCB3YW50Cj4gKyAgICAgKiB0byB3YXN0ZSBt ZWdhYnl0ZXMgb2YgbWVtb3J5IGZvciBhIG1vc3RseSBlbXB0eSB0YWJsZS4KPiArICAgICAqIEl0 J3MgdmVyeSB1bmxpa2VseSB0aGF0IHdlIG5lZWQgbW9yZSB0aGFuIDI0IGJpdHMgd29ydGggb2Yg TFBJcy4KPiArICAgICAqLwo+ICsgICAgaWYgKCBscGlfZGF0YS5tYXhfaG9zdF9scGlfaWRzID4g QklUKDI0KSApCj4gKyAgICAgICAgd2FybmluZ19hZGQoIlVzaW5nIGhpZ2ggbnVtYmVyIG9mIExQ SXMsIGxpbWl0IG1lbW9yeSB1c2FnZSB3aXRoIG1heF9scGlfYml0c1xuIik7Cj4gKwo+ICsgICAg cHJpbnRrKCJHSUN2MzogdXNpbmcgYXQgbW9zdCAlbHUgTFBJcyBvbiB0aGUgaG9zdC5cbiIsIE1B WF9OUl9IT1NUX0xQSVMpOwo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKgo+ICsg KiBMb2NhbCB2YXJpYWJsZXM6Cj4gKyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNE Igo+ICsgKiBjLWJhc2ljLW9mZnNldDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKPiAr ICogRW5kOgo+ICsgKi8KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2dpYy12My5jIGIveGVu L2FyY2gvYXJtL2dpYy12My5jCj4gaW5kZXggZDNkNTc4NC4uNTRkMjIzNSAxMDA2NDQKPiAtLS0g YS94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vZ2ljLXYzLmMKPiBA QCAtNTQ3LDYgKzU0Nyw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBnaWN2M19kaXN0X2luaXQodm9p ZCkKPiAgICAgIHR5cGUgPSByZWFkbF9yZWxheGVkKEdJQ0QgKyBHSUNEX1RZUEVSKTsKPiAgICAg IG5yX2xpbmVzID0gMzIgKiAoKHR5cGUgJiBHSUNEX1RZUEVfTElORVMpICsgMSk7Cj4KPiArICAg IGlmICggdHlwZSAmIEdJQ0RfVFlQRV9MUElTICkKPiArICAgICAgICBnaWN2M19scGlfaW5pdF9o b3N0X2xwaXMoR0lDRF9UWVBFX0lEX0JJVFModHlwZSkpOwo+ICsKPiAgICAgIHByaW50aygiR0lD djM6ICVkIGxpbmVzLCAoSUlEICU4Ljh4KS5cbiIsCj4gICAgICAgICAgICAgbnJfbGluZXMsIHJl YWRsX3JlbGF4ZWQoR0lDRCArIEdJQ0RfSUlEUikpOwo+Cj4gQEAgLTY1OSw2ICs2NjIsMjAgQEAg c3RhdGljIGludCBfX2luaXQgZ2ljdjNfcG9wdWxhdGVfcmRpc3Qodm9pZCkKPiAgICAgICAgICAg ICAgaWYgKCAodHlwZXIgPj4gMzIpID09IGFmZiApCj4gICAgICAgICAgICAgIHsKPiAgICAgICAg ICAgICAgICAgIHRoaXNfY3B1KHJiYXNlKSA9IHB0cjsKPiArCj4gKyAgICAgICAgICAgICAgICBp ZiAoIHR5cGVyICYgR0lDUl9UWVBFUl9QTFBJUyApCj4gKyAgICAgICAgICAgICAgICB7Cj4gKyAg ICAgICAgICAgICAgICAgICAgaW50IHJldDsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgcmV0 ID0gZ2ljdjNfbHBpX2luaXRfcmRpc3QocHRyKTsKPiArICAgICAgICAgICAgICAgICAgICBpZiAo IHJldCAmJiByZXQgIT0gLUVOT0RFViApCj4gKyAgICAgICAgICAgICAgICAgICAgewo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBwcmludGsoIkdJQ3YzOiBDUFUlZDogQ2Fubm90IGluaXRpYWxp emUgTFBJczogJXVcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXBfcHJv Y2Vzc29yX2lkKCksIHJldCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg ICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIH0KPiArCj4gICAgICAgICAg ICAgICAgICBwcmludGsoIkdJQ3YzOiBDUFUlZDogRm91bmQgcmVkaXN0cmlidXRvciBpbiByZWdp b24gJWQgQCVwXG4iLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lk KCksIGksIHB0cik7Cj4gICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9n aWNfdjNfZGVmcy5oCj4gaW5kZXggNmJkMjVhNS4uMjc5MmZmZCAxMDA2NDQKPiAtLS0gYS94ZW4v aW5jbHVkZS9hc20tYXJtL2dpY192M19kZWZzLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJt L2dpY192M19kZWZzLmgKPiBAQCAtNDUsNiArNDUsOSBAQAo+Cj4gIC8qIEFkZGl0aW9uYWwgYml0 cyBpbiBHSUNEX1RZUEVSIGRlZmluZWQgYnkgR0lDdjMgKi8KPiAgI2RlZmluZSBHSUNEX1RZUEVf SURfQklUU19TSElGVCAxOQo+ICsjZGVmaW5lIEdJQ0RfVFlQRV9JRF9CSVRTKHIpICAgICgoKChy KSA+PiBHSUNEX1RZUEVfSURfQklUU19TSElGVCkgJiAweDFmKSArIDEpCj4gKwo+ICsjZGVmaW5l IEdJQ0RfVFlQRV9MUElTICAgICAgICAgICAgICAgKDFVIDw8IDE3KQo+Cj4gICNkZWZpbmUgR0lD RF9DVExSX1JXUCAgICAgICAgICAgICAgICAoMVVMIDw8IDMxKQo+ICAjZGVmaW5lIEdJQ0RfQ1RM Ul9BUkVfTlMgICAgICAgICAgICAgKDFVIDw8IDQpCj4gQEAgLTk1LDEyICs5OCw2MSBAQAo+ICAj ZGVmaW5lIEdJQ1JfSUdSUE1PRFIwICAgICAgICAgICAgICAgKDB4MEQwMCkKPiAgI2RlZmluZSBH SUNSX05TQUNSICAgICAgICAgICAgICAgICAgICgweDBFMDApCj4KPiArI2RlZmluZSBHSUNSX0NU TFJfRU5BQkxFX0xQSVMgICAgICAgICgxVSA8PCAwKQo+ICsKPiAgI2RlZmluZSBHSUNSX1RZUEVS X1BMUElTICAgICAgICAgICAgICgxVSA8PCAwKQo+ICAjZGVmaW5lIEdJQ1JfVFlQRVJfVkxQSVMg ICAgICAgICAgICAgKDFVIDw8IDEpCj4gICNkZWZpbmUgR0lDUl9UWVBFUl9MQVNUICAgICAgICAg ICAgICAoMVUgPDwgNCkKPgo+ICsvKiBGb3Igc3BlY2lmeWluZyB0aGUgaW5uZXIgY2FjaGVhYmls aXR5IHR5cGUgb25seSAqLwo+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9uQ25CICAgICAgICAg MFVMTAo+ICsvKiBGb3Igc3BlY2lmeWluZyB0aGUgb3V0ZXIgY2FjaGVhYmlsaXR5IHR5cGUgb25s eSAqLwo+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9TYW1lQXNJbm5lciAgMFVMTAo+ICsjZGVm aW5lIEdJQ19CQVNFUl9DQUNIRV9uQyAgICAgICAgICAgMVVMTAo+ICsjZGVmaW5lIEdJQ19CQVNF Ul9DQUNIRV9SYVd0ICAgICAgICAgMlVMTAo+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9SYVdi ICAgICAgICAgM1VMTAo+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9XYVd0ICAgICAgICAgNFVM TAo+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9XYVdiICAgICAgICAgNVVMTAo+ICsjZGVmaW5l IEdJQ19CQVNFUl9DQUNIRV9SYVdhV3QgICAgICAgNlVMTAo+ICsjZGVmaW5lIEdJQ19CQVNFUl9D QUNIRV9SYVdhV2IgICAgICAgN1VMTAo+ICsjZGVmaW5lIEdJQ19CQVNFUl9DQUNIRV9NQVNLICAg ICAgICAgN1VMTAo+ICsKPiArI2RlZmluZSBHSUNfQkFTRVJfTm9uU2hhcmVhYmxlICAgICAgIDBV TEwKPiArI2RlZmluZSBHSUNfQkFTRVJfSW5uZXJTaGFyZWFibGUgICAgIDFVTEwKPiArI2RlZmlu ZSBHSUNfQkFTRVJfT3V0ZXJTaGFyZWFibGUgICAgIDJVTEwKPiArCj4gKyNkZWZpbmUgR0lDUl9Q Uk9QQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUICAgICAgICAgNTYKPiArI2RlZmluZSBH SUNSX1BST1BCQVNFUl9PVVRFUl9DQUNIRUFCSUxJVFlfTUFTSyAgICAgICAgICAgICAgIFwKPiAr ICAgICAgICAoN1VMIDw8IEdJQ1JfUFJPUEJBU0VSX09VVEVSX0NBQ0hFQUJJTElUWV9TSElGVCkK PiArI2RlZmluZSBHSUNSX1BST1BCQVNFUl9TSEFSRUFCSUxJVFlfU0hJRlQgICAgICAgICAgICAg ICAxMAo+ICsjZGVmaW5lIEdJQ1JfUFJPUEJBU0VSX1NIQVJFQUJJTElUWV9NQVNLICAgICAgICAg ICAgICAgICAgICAgXAo+ICsgICAgICAgICgzVUwgPDwgR0lDUl9QUk9QQkFTRVJfU0hBUkVBQklM SVRZX1NISUZUKQo+ICsjZGVmaW5lIEdJQ1JfUFJPUEJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9T SElGVCAgICAgICAgIDcKPiArI2RlZmluZSBHSUNSX1BST1BCQVNFUl9JTk5FUl9DQUNIRUFCSUxJ VFlfTUFTSyAgICAgICAgICAgICAgIFwKPiArICAgICAgICAoN1VMIDw8IEdJQ1JfUFJPUEJBU0VS X0lOTkVSX0NBQ0hFQUJJTElUWV9TSElGVCkKPiArI2RlZmluZSBHSUNSX1BST1BCQVNFUl9SRVMw X01BU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICAgICAoR0VOTUFTSyg2 MywgNTkpIHwgR0VOTUFTSyg1NSwgNTIpIHwgR0VOTUFTSyg2LCA1KSkKPiArCj4gKyNkZWZpbmUg R0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZX1NISUZUICAgICAgICAgICAgICAgMTAKPiArI2Rl ZmluZSBHSUNSX1BFTkRCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlfU0hJRlQgICAgICAgICA3Cj4g KyNkZWZpbmUgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX1NISUZUICAgICAgICAg NTYKPiArI2RlZmluZSBHSUNSX1BFTkRCQVNFUl9TSEFSRUFCSUxJVFlfTUFTSyAgICAgICAgICAg ICAgICAgICAgIFwKPiArCSgzVUwgPDwgR0lDUl9QRU5EQkFTRVJfU0hBUkVBQklMSVRZX1NISUZU KQo+ICsjZGVmaW5lIEdJQ1JfUEVOREJBU0VSX0lOTkVSX0NBQ0hFQUJJTElUWV9NQVNLICAgICAg ICAgICAgICAgXAo+ICsJKDdVTCA8PCBHSUNSX1BFTkRCQVNFUl9JTk5FUl9DQUNIRUFCSUxJVFlf U0hJRlQpCj4gKyNkZWZpbmUgR0lDUl9QRU5EQkFTRVJfT1VURVJfQ0FDSEVBQklMSVRZX01BU0sg ICAgICAgICAgICAgICBcCj4gKyAgICAgICAgKDdVTCA8PCBHSUNSX1BFTkRCQVNFUl9PVVRFUl9D QUNIRUFCSUxJVFlfU0hJRlQpCj4gKyNkZWZpbmUgR0lDUl9QRU5EQkFTRVJfUFRaICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQklUKDYyKQo+ICsjZGVmaW5lIEdJQ1JfUEVOREJBU0VSX1JF UzBfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgIChCSVQoNjMp IHwgR0VOTUFTSyg2MSwgNTkpIHwgR0VOTUFTSyg1NSwgNTIpIHwgICAgICAgXAo+ICsgICAgICAg ICBHRU5NQVNLKDE1LCAxMikgfCBHRU5NQVNLKDYsIDApKQo+ICsKPiAgI2RlZmluZSBERUZBVUxU X1BNUl9WQUxVRSAgICAgICAgICAgIDB4ZmYKPgo+ICsjZGVmaW5lIExQSV9QUk9QX1BSSU9fTUFT SyAgICAgICAgICAgMHhmYwo+ICsjZGVmaW5lIExQSV9QUk9QX1JFUzEgICAgICAgICAgICAgICAg KDEgPDwgMSkKPiArI2RlZmluZSBMUElfUFJPUF9FTkFCTEVEICAgICAgICAgICAgICgxIDw8IDAp Cj4gKwo+ICAjZGVmaW5lIEdJQ0hfVk1DUl9FT0kgICAgICAgICAgICAgICAgKDEgPDwgOSkKPiAg I2RlZmluZSBHSUNIX1ZNQ1JfVkVORzEgICAgICAgICAgICAgICgxIDw8IDEpCj4KPiBkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmggYi94ZW4vaW5jbHVkZS9hc20t YXJtL2dpY192M19pdHMuaAo+IGluZGV4IDg4MDkwNGQuLmQxMzgyYzEgMTAwNjQ0Cj4gLS0tIGEv eGVuL2luY2x1ZGUvYXNtLWFybS9naWNfdjNfaXRzLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20t YXJtL2dpY192M19pdHMuaAo+IEBAIC03Niw3ICs3NiwxMCBAQCB2b2lkIGdpY3YzX2l0c19kdF9p bml0KGNvbnN0IHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqbm9kZSk7Cj4KPiAgYm9vbCBnaWN2M19p dHNfaG9zdF9oYXNfaXRzKHZvaWQpOwo+Cj4gLS8qIEluaXRpYWxpemUgdGhlIGhvc3Qgc3RydWN0 dXJlcyBmb3IgdGhlIGhvc3QgSVRTZXMuICovCj4gK2ludCBnaWN2M19scGlfaW5pdF9yZGlzdCh2 b2lkIF9faW9tZW0gKiByZGlzdF9iYXNlKTsKPiArCj4gKy8qIEluaXRpYWxpemUgdGhlIGhvc3Qg c3RydWN0dXJlcyBmb3IgTFBJcyBhbmQgdGhlIGhvc3QgSVRTZXMuICovCj4gK2ludCBnaWN2M19s cGlfaW5pdF9ob3N0X2xwaXModW5zaWduZWQgaW50IGhvc3RfbHBpX2JpdHMpOwo+ICBpbnQgZ2lj djNfaXRzX2luaXQodm9pZCk7Cj4KPiAgI2Vsc2UKPiBAQCAtOTAsNiArOTMsMTYgQEAgc3RhdGlj IGlubGluZSBib29sIGdpY3YzX2l0c19ob3N0X2hhc19pdHModm9pZCkKPiAgICAgIHJldHVybiBm YWxzZTsKPiAgfQo+Cj4gK3N0YXRpYyBpbmxpbmUgaW50IGdpY3YzX2xwaV9pbml0X3JkaXN0KHZv aWQgX19pb21lbSAqIHJkaXN0X2Jhc2UpCj4gK3sKPiArICAgIHJldHVybiAtRU5PREVWOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGludCBnaWN2M19scGlfaW5pdF9ob3N0X2xwaXModW5zaWdu ZWQgaW50IGhvc3RfbHBpX2JpdHMpCj4gK3sKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICBz dGF0aWMgaW5saW5lIGludCBnaWN2M19pdHNfaW5pdCh2b2lkKQo+ICB7Cj4gICAgICByZXR1cm4g MDsKPiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9pcnEuaCBiL3hlbi9pbmNsdWRl L2FzbS1hcm0vaXJxLmgKPiBpbmRleCA0ODQ5ZjE2Li5mOTQwMDkyIDEwMDY0NAo+IC0tLSBhL3hl bi9pbmNsdWRlL2FzbS1hcm0vaXJxLmgKPiArKysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL2lycS5o Cj4gQEAgLTE4LDggKzE4LDE2IEBAIHN0cnVjdCBhcmNoX2lycV9kZXNjIHsKPiAgfTsKPgo+ICAj ZGVmaW5lIE5SX0xPQ0FMX0lSUVMJMzIKPiArCj4gKy8qCj4gKyAqIFRoaXMgb25seSBjb3ZlcnMg dGhlIGludGVycnVwdHMgdGhhdCBYZW4gY2FyZXMgYWJvdXQsIHNvIFNHSXMsIFBQSXMgYW5kCj4g KyAqIFNQSXMuIExQSXMgYXJlIHRvbyBudW1lcm91cywgYWxzbyBvbmx5IHByb3BhZ2F0ZWQgdG8g Z3Vlc3RzLCBzbyB0aGV5IGFyZQo+ICsgKiBub3QgaW5jbHVkZWQgaW4gdGhpcyBudW1iZXIuCj4g KyAqLwo+ICAjZGVmaW5lIE5SX0lSUVMJCTEwMjQKPgo+ICsjZGVmaW5lIExQSV9PRkZTRVQgICAg ICA4MTkyCj4gKwo+ICAjZGVmaW5lIG5yX2lycXMgTlJfSVJRUwo+ICAjZGVmaW5lIG5yX3N0YXRp Y19pcnFzIE5SX0lSUVMKPiAgI2RlZmluZSBhcmNoX2h3ZG9tX2lycXMoZG9taWQpIE5SX0lSUVMK PgoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==