From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: Re: [PATCH 03/14 v4] xen/arm: vpl011: Add pl011 uart emulation in Xen Date: Mon, 19 Jun 2017 11:14:26 +0100 Message-ID: <4a27b021-a201-4d6e-6830-b509d6b28323@arm.com> References: <1496769929-23355-1-git-send-email-bhupinder.thakur@linaro.org> <1496769929-23355-4-git-send-email-bhupinder.thakur@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dMthX-0004fY-EP for xen-devel@lists.xenproject.org; Mon, 19 Jun 2017 10:14:31 +0000 In-Reply-To: <1496769929-23355-4-git-send-email-bhupinder.thakur@linaro.org> Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Bhupinder Thakur , xen-devel@lists.xenproject.org Cc: Ian Jackson , Julien Grall , Stefano Stabellini , Wei Liu List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAwNi8wNi8xNyAxODoyNSwgQmh1cGluZGVyIFRoYWt1ciB3cm90ZToKPiBBZGQgZW11 bGF0aW9uIGNvZGUgdG8gZW11bGF0ZSByZWFkL3dyaXRlIGFjY2VzcyB0byBwbDAxMSByZWdpc3Rl cnMKPiBhbmQgcGwwMTEgaW50ZXJydXB0czoKPiAKPiAgICAgLSBFbXVsYXRlIERSIHJlYWQvd3Jp dGUgYnkgcmVhZGluZyBhbmQgd3JpdGluZyBmcm9tL3RvIHRoZSBJTgo+ICAgICAgIGFuZCBPVVQg cmluZyBidWZmZXJzIGFuZCByYWlzaW5nIGFuIGV2ZW50IHRvIHRoZSBiYWNrZW5kIHdoZW4KPiAg ICAgICB0aGVyZSBpcyBkYXRhIGluIHRoZSBPVVQgcmluZyBidWZmZXIgYW5kIGluamVjdGluZyBh biBpbnRlcnJ1cHQKPiAgICAgICB0byB0aGUgZ3Vlc3Qgd2hlbiB0aGVyZSBpcyBkYXRhIGluIHRo ZSBJTiByaW5nIGJ1ZmZlcgo+IAo+ICAgICAtIE90aGVyIHJlZ2lzdGVycyBhcmUgcmVsYXRlZCB0 byBpbnRlcnJ1cHQgbWFuYWdlbWVudCBhbmQKPiAgICAgICBlc3NlbnRpYWxseSBjb250cm9sIHdo ZW4gaW50ZXJydXB0cyBhcmUgZGVsaXZlcmVkIHRvIHRoZSBndWVzdAo+IAo+IFRoZSBTQlNBIGNv bXBsaWFudCBwbDAxMSB1YXJ0IGlzIGNvdmVyZWQgaW4gQXBwZW5kaXggQiBvZgo+IGh0dHBzOi8v c3RhdGljLmRvY3MuYXJtLmNvbS9kZW4wMDI5L2EvU2VydmVyX0Jhc2VfU3lzdGVtX0FyY2hpdGVj dHVyZV92M18xX0FSTV9ERU5fMDAyOUEucGRmCj4gCj4gU2lnbmVkLW9mZi1ieTogQmh1cGluZGVy IFRoYWt1ciA8Ymh1cGluZGVyLnRoYWt1ckBsaW5hcm8ub3JnPgo+IC0tLQo+IENDOiBpago+IEND OiB3bAo+IENDOiBzcwo+IENDOiBqZwo+IENDOiBrdwo+IAo+IENoYW5nZXMgc2luY2UgdjM6Cj4g LSBNb3ZlZCB0aGUgY2FsbCB0byBERUZJTkVfWEVOX0ZMRVhfUklORyBmcm9tIHZwbDAxMS5oIHRv IHB1YmxpYy9jb25zb2xlLmguIFRoaXMgbWFjcm8gZGVmaW5lcwo+ICAgc3RhbmRhcmQgZnVuY3Rp b25zIHRvIG9wZXJhdGUgb24gdGhlIHJpbmcgYnVmZmVyLgo+IC0gTG9jayB0YWtlbiB3aGlsZSB1 cGRhdGluZyB0aGUgaW50ZXJydXB0IG1hc2sgYW5kIGNsZWFyIHJlZ2lzdGVycyBpbiBtbWlvX3dy aXRlLgo+IC0gVXNlIGdmbl90IGluc3RlYWQgb2YgeGVuX3Bmbl90Lgo+IC0gdmdpY19mcmVlX3Zp cnEgY2FsbGVkIGlmIHRoZXJlIGlzIGFueSBlcnJvciBpbiB2cGwwMTEgaW5pdGlhbGl6YXRpb24u Cj4gLSBtbWlvIGhhbmRsZXJzIGZyZWVkIGlmIHRoZXJlIGlzIGFueSBlcnJvciBpbiB2cGwwMTEg aW5pdGlhbGl6YXRpb24uCj4gLSBSZW1vdmVkIHZwbDAxMS0+aW5pdGlhbGl6ZWQgZmxhZyB1c2Fn ZSBhcyB0aGUgc2FtZSBjaGVjayBjb3VsZCBiZSBkb25lIAo+ICAgdXNpbmcgdnBsMDExLT5yaW5n LXJlZi4KPiAtIFVzZWQgcmV0dXJuIGluc3RlYWQgb2YgYnJlYWsgaW4gdGhlIHN3aXRjaCBoYW5k bGluZyBvZiBlbXVsYXRpb24gb2YgZGlmZmVyZW50IHBsMDExIHJlZ2lzdGVycy4KPiAtIFJlbmFt ZWQgdnBsMDExX3VwZGF0ZV9zcGkoKSB0byB2cGwwMTFfdXBkYXRlKCkuCj4gCj4gQ2hhbmdlcyBz aW5jZSB2MjoKPiAtIFVzZSBnZW5lcmljIHZyZWdfcmVnKiBmb3IgcmVhZC93cml0ZSBvZiByZWdp c3RlcnMgZW11bGF0aW5nIHBsMDExLgo+IC0gVXNlIGdlbmVyaWMgcmluZyBidWZmZXIgZnVuY3Rp b25zIGRlZmluZWQgdXNpbmcgREVGSU5FX1hFTl9GTEVYX1JJTkcuCj4gLSBSZW5hbWVkIHRoZSBT UEkgaW5qZWN0aW9uIGZ1bmN0aW9uIHRvIHZwbDAxMV91cGRhdGVfc3BpKCkgdG8gcmVmbGVjdCBs ZXZlbCAKPiAgIHRyaWdnZXJlZCBuYXR1cmUgb2YgcGwwMTEgaW50ZXJydXB0cy4KPiAtIFRoZSBw bDAxMSByZWdpc3RlciBhY2Nlc3MgYWRkcmVzcyBzaG91bGQgYWx3YXlzIGJlIHRoZSBiYXNlIGFk ZHJlc3Mgb2YgdGhlCj4gICBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIGFzIHBlciBzZWN0aW9uIEIg b2YgdGhlIFNCU0EgZG9jdW1lbnQuIEZvciB0aGlzIHJlYXNvbiwKPiAgIHRoZSByZWdpc3RlciBy YW5nZSBhZGRyZXNzIGFjY2VzcyBpcyBub3QgYWxsb3dlZC4KPiAKPiBDaGFuZ2VzIHNpbmNlIHYx Ogo+IC0gUmVtb3ZlZCB0aGUgb3B0aW1penRpb24gcmVsYXRlZCB0byBzZW5kaWluZyBldmVudHMg dG8geGVuY29uc29sZSAKPiAtIFVzZSBsb2NhbCB2YXJpYWJsZXMgYXMgcmluZyBidWZmZXIgaW5k aWNlcyB3aGlsZSB1c2luZyB0aGUgcmluZyBidWZmZXIKPiAKPiAgdG9vbHMvY29uc29sZS9kYWVt b24vaW8uYyAgICAgICAgfCAgIDIgKy0KPiAgeGVuL2FyY2gvYXJtL0tjb25maWcgICAgICAgICAg ICAgfCAgIDUgKwo+ICB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArCj4g IHhlbi9hcmNoL2FybS92cGwwMTEuYyAgICAgICAgICAgIHwgNDE4ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICB4ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oICAg ICB8ICAgNiArCj4gIHhlbi9pbmNsdWRlL2FzbS1hcm0vcGwwMTEtdWFydC5oIHwgICAyICsKPiAg eGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaCAgICAgfCAgNzQgKysrKysrKwo+ICB4ZW4vaW5j bHVkZS9wdWJsaWMvYXJjaC1hcm0uaCAgICB8ICAgNiArCj4gIHhlbi9pbmNsdWRlL3B1YmxpYy9p by9jb25zb2xlLmggIHwgICA0ICsKPiAgOSBmaWxlcyBjaGFuZ2VkLCA1MTcgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL3ZwbDAx MS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCj4g Cj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbnNvbGUvZGFlbW9uL2lvLmMgYi90b29scy9jb25zb2xl L2RhZW1vbi9pby5jCj4gaW5kZXggN2U2YTg4Ni4uOTQ3ZjEzYSAxMDA2NDQKPiAtLS0gYS90b29s cy9jb25zb2xlL2RhZW1vbi9pby5jCj4gKysrIGIvdG9vbHMvY29uc29sZS9kYWVtb24vaW8uYwo+ IEBAIC0yMSw2ICsyMSw3IEBACj4gIAo+ICAjaW5jbHVkZSAidXRpbHMuaCIKPiAgI2luY2x1ZGUg ImlvLmgiCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4KPiAgI2luY2x1ZGUgPHhlbmV2dGNobi5oPgo+ ICAjaW5jbHVkZSA8eGVuZ250dGFiLmg+Cj4gICNpbmNsdWRlIDx4ZW5zdG9yZS5oPgo+IEBAIC0y OSw3ICszMCw2IEBACj4gIAo+ICAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gICNpbmNsdWRlIDxlcnJu by5oPgo+IC0jaW5jbHVkZSA8c3RyaW5nLmg+Cj4gICNpbmNsdWRlIDxwb2xsLmg+Cj4gICNpbmNs dWRlIDxmY250bC5oPgo+ICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS9LY29uZmlnIGIveGVuL2FyY2gvYXJtL0tjb25maWcKPiBpbmRleCBkNDZiOThjLi5j MWEwZTdmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9LY29uZmlnCj4gKysrIGIveGVuL2Fy Y2gvYXJtL0tjb25maWcKPiBAQCAtNTAsNiArNTAsMTEgQEAgY29uZmlnIEhBU19JVFMKPiAgICAg ICAgICBwcm9tcHQgIkdJQ3YzIElUUyBNU0kgY29udHJvbGxlciBzdXBwb3J0IiBpZiBFWFBFUlQg PSAieSIKPiAgICAgICAgICBkZXBlbmRzIG9uIEhBU19HSUNWMwo+ICAKPiArY29uZmlnIFZQTDAx MV9DT05TT0xFCj4gKwlib29sICJFbXVsYXRlZCBwbDAxMSBjb25zb2xlIHN1cHBvcnQiCj4gKwlk ZWZhdWx0IHkKPiArCS0tLWhlbHAtLS0KPiArCSAgQWxsb3dzIGEgZ3Vlc3QgdG8gdXNlIHBsMDEx IFVBUlQgYXMgYSBjb25zb2xlCgpJIGFkbWl0IHRoYXQgSSBhbSByYXRoZXIgbGF0ZSB3aXRoIHRo aXMgY29tbWVudCwgYnV0IEkgYW0gbm90IHN1cmUgd2UKc2hvdWxkIGFkdmVydGlzZSBQTDAxMSBl bXVsYXRpb24gaGVyZS4KVGVjaG5pY2FsbHkgd2hhdCB5b3UgZW11bGF0ZSBpcyBhICJTQlNBIEdl bmVyaWMgVUFSVCIsIHdoaWNoIGlzIGluZGVlZCBhCnN1YnNldCBvZiB0aGUgUEwwMTEsIGJ1dCBy ZWFsbHkgb25seSBhIHN1YnNldC4gWW91IGNvbmZpcm0gdGhpcyBhbHJlYWR5CmluIHBhdGNoIDEz LzE0LCB3aGVyZSB5b3UgdXNlIHRoZSByZXNwZWN0aXZlIGNvbXBhdGlibGUgbmFtZSBpbnN0ZWFk IG9mCnRoZSBnZW5lcmljIGFybSxwbDAxMSBvbmUuCgpTbyB3aGlsZSBJIGRvbid0IGRhcmUgdG8g YXNrIGZvciByZW5hbWluZyBldmVyeSBpZGVudGlmaWVyLCBJIHdvbmRlciBpZgp3ZSBzaG91bGQg YXQgbGVhc3Qga2VlcCB0aGUgcHVibGljbHkgdmlzaWJsZSBwYXJ0IGNvbmZpbmVkIHRvICJTQlNB ClVBUlQiLiBZb3UgY291bGQgbWVudGlvbiB0aGUgc3Vic2V0IG5hdHVyZSBpbiB0aGUgaGVscCBt ZXNzYWdlIGhlcmUsIGZvcgppbnN0YW5jZS4KVGhlIHNhbWUgcmVhc29uaW5nIGFwcGxpZXMgdG8g b3RoZXIgcGFydHMgb2YgdGhpcyBzZXJpZXMgd2hpY2ggaW50cm9kdWNlCnVzZXItdmlzaWJsZSBz dHJpbmdzIChsaWtlIGluIGxpYnhsKS4KCj4gIGVuZG1lbnUKPiAgCj4gIG1lbnUgIkFSTSBlcnJh dGEgd29ya2Fyb3VuZCB2aWEgdGhlIGFsdGVybmF0aXZlIGZyYW1ld29yayIKPiBkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCj4gaW5kZXgg NDllMWZiMi4uMTVlZmMxMyAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPiAr KysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKPiBAQCAtNTIsNiArNTIsNyBAQCBvYmoteSArPSB2 bV9ldmVudC5vCj4gIG9iai15ICs9IHZ0aW1lci5vCj4gIG9iai15ICs9IHZwc2NpLm8KPiAgb2Jq LXkgKz0gdnVhcnQubwo+ICtvYmotJChDT05GSUdfVlBMMDExX0NPTlNPTEUpICs9IHZwbDAxMS5v Cj4gIAo+ICAjb2JqLWJpbi15ICs9IC4uLi5vCj4gIAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vdnBsMDExLmMgYi94ZW4vYXJjaC9hcm0vdnBsMDExLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAuLjliMWYyN2UKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2Fy Y2gvYXJtL3ZwbDAxMS5jCj4gQEAgLTAsMCArMSw0MTggQEAKPiArLyoKPiArICogYXJjaC9hcm0v dnBsMDExLmMKPiArICoKPiArICogVmlydHVhbCBQTDAxMSBVQVJUCj4gKyAqCj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCj4gKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQK PiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg TUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKPiArICogbW9yZSBkZXRh aWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCj4gKyAqIHRoaXMgcHJvZ3JhbTsg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKi8KPiArCj4g KyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KPiArI2luY2x1ZGUgPHhlbi9ldmVudC5oPgo+ICsjaW5j bHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgo+ICsjaW5jbHVkZSA8eGVuL2luaXQuaD4KPiArI2lu Y2x1ZGUgPHhlbi9saWIuaD4KPiArI2luY2x1ZGUgPHhlbi9tbS5oPgo+ICsjaW5jbHVkZSA8eGVu L3NjaGVkLmg+Cj4gKyNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+Cj4gKyNpbmNsdWRlIDxwdWJs aWMvaW8vY29uc29sZS5oPgo+ICsjaW5jbHVkZSA8YXNtLWFybS9wbDAxMS11YXJ0Lmg+Cj4gKyNp bmNsdWRlIDxhc20tYXJtL3ZnaWMtZW11bC5oPgo+ICsjaW5jbHVkZSA8YXNtLWFybS92cGwwMTEu aD4KCkkgdGhpbmsgSnVsaWVuIG1lbnRpb25lZCB0aGlzIGFscmVhZHksIGJ1dCBJIHRoaW5rIHlv dSBzaG91bGQganVzdCB1c2UKIiNpbmNsdWRlIDxhc20vLi4gLmg+IiBoZXJlLgoKPiArCj4gK3N0 YXRpYyBib29sIHZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3Moc3RydWN0IGhzcl9kYWJ0IGRhYnQp Cj4gK3sKPiArICAgIHJldHVybiAoZGFidC5zaXplICE9IERBQlRfRE9VQkxFX1dPUkQpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCB2cGwwMTFfdXBkYXRlKHN0cnVjdCBkb21haW4gKmQpCgpDYW4g eW91IHBsZWFzZSByZW5hbWUgdGhpcyBmdW5jdGlvbiB0byBpbmRpY2F0ZSB0aGF0IGl0IHVwZGF0 ZXMgdGhlCippbnRlcnJ1cHQgc3RhdHVzKj8gVGhhdCBuYW1lIGFzIGl0IGlzIHJhdGhlciBnZW5l cmljIGF0IHRoZSBtb21lbnQuCgo+ICt7Cj4gKyAgICBzdHJ1Y3QgdnBsMDExICp2cGwwMTEgPSAm ZC0+YXJjaC52cGwwMTE7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFRPRE86IFBMMDExIGludGVy cnVwdHMgYXJlIGxldmVsIHRyaWdnZXJlZCB3aGljaCBtZWFucwo+ICsgICAgICogdGhhdCBpbnRl cnJ1cHQgbmVlZHMgdG8gYmUgc2V0L2NsZWFyIGluc3RlYWQgb2YgYmVpbmcKPiArICAgICAqIGlu amVjdGVkLiBIb3dldmVyLCBjdXJyZW50bHkgdkdJQyBkb2VzIG5vdCBoYW5kbGUgbGV2ZWwgCj4g KyAgICAgKiB0cmlnZ2VyZWQgaW50ZXJydXB0cyBwcm9wZXJseS4gVGhpcyBmdW5jdGlvbiBuZWVk cyB0byBiZSAKPiArICAgICAqIHJldmlzaXRlZCBvbmNlIHZHSUMgc3RhcnRzIGhhbmRsaW5nIGxl dmVsIHRyaWdnZXJlZCAKPiArICAgICAqIGludGVycnVwdHMuCj4gKyAgICAgKi8KPiArICAgIGlm ICggdnBsMDExLT51YXJ0cmlzICYgdnBsMDExLT51YXJ0aW1zYyApCj4gKyAgICAgICAgdmdpY192 Y3B1X2luamVjdF9zcGkoZCwgR1VFU1RfVlBMMDExX1NQSSk7CgpTbyBteSB1bmRlcnN0YW5kaW5n IGlzIHRoYXQgdGhpcyBpcyB1c2luZyBhbiBlZGdlIHRyaWdnZXJlZCBzZW1hbnRpYyBhdAp0aGUg bW9tZW50LiBXaGlsZSB0aGlzIGlzIG5vdCB3aGF0IGFuIFBMMDExIGFjdHVhbGx5IGltcGxlbWVu dHMgYW5kIG5vdAp3aGF0IHRoZSBkcml2ZXIgcmVhbGx5IGV4cGVjdHMsIHRoaXMgaXMgZmluZSBv biBpdHNlbGYgZm9yIG5vdy4KQlVUIEkgdGhpbmsgd2UgbWF5IHdhbnQgdG8gYXZvaWQgaW5qZWN0 aW5nIHNwdXJpb3VzIGludGVycnVwdHMgbm93OgpJZiBmb3IgaW5zdGFuY2UgdGhlIHJlY2VpdmUg aW50ZXJydXB0IGNvbmRpdGlvbiBpcyBzZXQgYW5kIHdlIGNsZWFyIHRoZQp0cmFuc21pdCBpbnRl cnJ1cHQgYml0LCB0aGVuIGNhbGwgdGhpcyBmdW5jdGlvbiwgaXQgd291bGQgaW5qZWN0IGEgbmV3 CmludGVycnVwdCwgYWx0aG91Z2ggaW4gYSBlZGdlLXRyaWdnZXJlZCB3b3JsZCB3ZSByZWFsbHkg d291bGRuJ3QgbmVlZCB0bwpkbyBhbnl0aGluZy4KU28gSSBiZWxpZXZlIHdlIHdvdWxkIG5lZWQg dG8gaGF2ZSBzb21lIGtpbmQgb2Ygc2hhZG93ZWQgaW50ZXJydXB0CnN0YXRlLCB3aGljaCBzdG9y ZXMgdGhlIGludGVycnVwdCBjb25kaXRpb24gdGhlIGd1ZXN0IGFscmVhZHkga25vd3MKYWJvdXQu IEFzIHNvb24gYXMgd2UgKmFkZCogYSBiaXQgdG8gdGhpcyBzdGF0ZSwgd2UgaW5qZWN0IHRoZSBT UEkuClRoaXMgd291bGQgYWN0IGFzIGEga2luZCBvZiB0ZW1wb3JhcnkgYnJpZGdlIGJldHdlZW4g dGhlIGxldmVsIHRyaWdnZXJlZApTQlNBL1BMMDExIFVBUlQgYW5kIHRoZSBlZGdlLW9ubHkgVkdJ QyBpbXBsZW1lbnRhdGlvbiBmb3Igbm93LgpMYXRlciB3aGVuIHRoZSBWR0lDIHByb3Blcmx5IGhh bmRsZXMgbGV2ZWwgdHJpZ2dlcmVkIGludGVycnVwdHMsIHRoaXMKaW1wbGVtZW50YXRpb24gY2Fu IGJlIGFkanVzdGVkLiBCdXQgdGhpcyBjaGFuZ2Ugc2hvdWxkIHRoZW4gYmUgY29uZmluZWQKdG8g dGhpcyB2ZXJ5IGZ1bmN0aW9uLgoKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ4X3QgdnBsMDExX3Jl YWRfZGF0YShzdHJ1Y3QgZG9tYWluICpkKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdz Owo+ICsgICAgdWludDhfdCBkYXRhID0gMDsKPiArICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9 ICZkLT5hcmNoLnZwbDAxMTsKPiArICAgIHN0cnVjdCB4ZW5jb25zX2ludGVyZmFjZSAqaW50ZiA9 IHZwbDAxMS0+cmluZ19idWY7Cj4gKyAgICBYRU5DT05TX1JJTkdfSURYIGluX2NvbnMgPSBpbnRm LT5pbl9jb25zOwo+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9wcm9kID0gaW50Zi0+aW5fcHJv ZDsKPiArCj4gKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7Cj4gKwo+ICsgICAgLyoKPiArICAg ICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlcmUgd2lsbCBiZSBkYXRhIGluIHRoZSByaW5nIGJ1 ZmZlciB3aGVuIHRoaXMKPiArICAgICAqIGZ1bmN0aW9uIGlzIGNhbGxlZCBzaW5jZSB0aGUgZ3Vl c3QgaXMgZXhwZWN0ZWQgdG8gcmVhZCB0aGUgZGF0YSByZWdpc3Rlcgo+ICsgICAgICogb25seSBp ZiB0aGUgVFhGRSBmbGFnIGlzIG5vdCBzZXQuCj4gKyAgICAgKiBJZiB0aGUgZ3Vlc3Qgc3RpbGwg ZG9lcyByZWFkIHdoZW4gVFhGRSBiaXQgaXMgc2V0IHRoZW4gMCB3aWxsIGJlIHJldHVybmVkLgo+ ICsgICAgICovCj4gKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKGluX3Byb2QsIGluX2NvbnMsIHNp emVvZihpbnRmLT5pbikpID4gMCApCj4gKyAgICB7Cj4gKyAgICAgICAgZGF0YSA9IGludGYtPmlu W3hlbmNvbnNfbWFzayhpbl9jb25zLCBzaXplb2YoaW50Zi0+aW4pKV07Cj4gKyAgICAgICAgaW5f Y29ucyArPSAxOwo+ICsgICAgICAgIGludGYtPmluX2NvbnMgPSBpbl9jb25zOwo+ICsgICAgICAg IHNtcF9tYigpOwo+ICsgICAgfQo+ICsgICAgZWxzZQo+ICsgICAgewo+ICsgICAgICAgIGdwcmlu dGsoWEVOTE9HX0VSUiwgInZwbDAxMTogVW5leHBlY3RlZCBJTiByaW5nIGJ1ZmZlciBlbXB0eVxu Iik7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLCBpbl9j b25zLCBzaXplb2YoaW50Zi0+aW4pKSA9PSAwICkKPiArICAgIHsKPiArICAgICAgICB2cGwwMTEt PnVhcnRmciB8PSBSWEZFOwo+ICsgICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+UlhJOwoKSW4g YSBsZXZlbCB0cmlnZ2VyZWQgd29ybGQgeW91IHdvdWxkIG5lZWQgdG8gcG9zc2libHkgY2hhbmdl IHRoZSBzdGF0dXMKb2YgdGhlIGludGVycnVwdCBsaW5lIGhlcmUsIHNvIGEgY2FsbCB0byAoYSBy ZW5hbWVkIGFuZCBmaXhlZCkKdnBsMDExX3VwZGF0ZSgpIGZ1bmN0aW9uIHdvdWxkIGJlIGR1ZSBo ZXJlLiBUbyBtYWtlIHRoZSB0cmFuc2l0aW9uIGxhdGVyCmFzIGVhc3kgYXMgcG9zc2libGUsIEkn ZCByZWNvbW1lbmQgdG8gaW1wbGVtZW50IHRoaXMgc2hhZG93IGludGVycnVwdApzdGF0ZSBhcyBk ZXNjcmliZWQgYWJvdmUgYW5kIHRoZW4gY2FsbCB0aGUgaW50ZXJydXB0IHVwZGF0ZSBmdW5jdGlv bgpoZXJlIGFscmVhZHkuCgo+ICsgICAgfQo+ICsgICAgdnBsMDExLT51YXJ0ZnIgJj0gflJYRkY7 Cj4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICByZXR1cm4gZGF0YTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnBsMDExX3dyaXRlX2RhdGEoc3RydWN0IGRvbWFpbiAq ZCwgdWludDhfdCBkYXRhKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsgICAg c3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+ICsgICAgc3RydWN0IHhl bmNvbnNfaW50ZXJmYWNlICppbnRmID0gdnBsMDExLT5yaW5nX2J1ZjsKPiArICAgIFhFTkNPTlNf UklOR19JRFggb3V0X2NvbnMgPSBpbnRmLT5vdXRfY29uczsKPiArICAgIFhFTkNPTlNfUklOR19J RFggb3V0X3Byb2QgPSBpbnRmLT5vdXRfcHJvZDsKPiArCj4gKyAgICBWUEwwMTFfTE9DSyhkLCBm bGFncyk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHJp bmcgaXMgbm90IGZ1bGwgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAo+ICsgICAgICogYXMg dGhlIGd1ZXN0IGlzIGV4cGVjdGVkIHRvIHdyaXRlIHRvIHRoZSBkYXRhIHJlZ2lzdGVyIG9ubHkg d2hlbiB0aGUKPiArICAgICAqIFRYRkYgZmxhZyBpcyBub3Qgc2V0Lgo+ICsgICAgICogSW4gY2Fz ZSB0aGUgZ3Vlc3QgZG9lcyB3cml0ZSBldmVuIHdoZW4gdGhlIFRYRkYgZmxhZyBpcyBzZXQgdGhl biB0aGUKPiArICAgICAqIGRhdGEgd2lsbCBiZSBzaWxlbnRseSBkcm9wcGVkLgo+ICsgICAgICov Cj4gKyAgICBpZiAoIHhlbmNvbnNfcXVldWVkKG91dF9wcm9kLCBvdXRfY29ucywgc2l6ZW9mKGlu dGYtPm91dCkpICE9Cj4gKyAgICAgICAgIHNpemVvZiAoaW50Zi0+b3V0KSApCj4gKyAgICB7Cj4g KyAgICAgICAgaW50Zi0+b3V0W3hlbmNvbnNfbWFzayhvdXRfcHJvZCwgc2l6ZW9mKGludGYtPm91 dCkpXSA9IGRhdGE7Cj4gKyAgICAgICAgc21wX3dtYigpOwo+ICsgICAgICAgIG91dF9wcm9kICs9 IDE7Cj4gKyAgICAgICAgaW50Zi0+b3V0X3Byb2QgPSBvdXRfcHJvZDsKPiArICAgIH0KPiArICAg IGVsc2UKPiArICAgIHsKPiArICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVu ZXhwZWN0ZWQgT1VUIHJpbmcgYnVmZmVyIGZ1bGxcbiIpOwo+ICsgICAgfQo+ICsKPiArICAgIGlm ICggeGVuY29uc19xdWV1ZWQob3V0X3Byb2QsIG91dF9jb25zLCBzaXplb2YoaW50Zi0+b3V0KSkg PT0KPiArICAgICAgICAgc2l6ZW9mIChpbnRmLT5vdXQpICkKPiArICAgIHsKPiArICAgICAgICB2 cGwwMTEtPnVhcnRmciB8PSBUWEZGOwo+ICsgICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+VFhJ OwoKU2FtZSBhcyBhYm92ZS4gQmFzaWNhbGx5IHdoZW5ldmVyIHlvdSBjaGFuZ2Ugb25lIG9mIHRo ZSBiaXRzIHRoYXQgbWF5CmFmZmVjdCB0aGUgc3RhdHVzIG9mIHRoZSBpbnRlcnJ1cHQgbGluZSwg SSdkIGNhbGwgdGhlIHVwZGF0ZSBmdW5jdGlvbi4KCj4gKyAgICB9Cj4gKwo+ICsgICAgdnBsMDEx LT51YXJ0ZnIgfD0gQlVTWTsKPiArCj4gKyAgICB2cGwwMTEtPnVhcnRmciAmPSB+VFhGRTsKPiAr Cj4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICAvKgo+ICsgICAgICog U2VuZCBhbiBldmVudCB0byBjb25zb2xlIGJhY2tlbmQgdG8gaW5kaWNhdGUgdGhhdCB0aGVyZSBp cyAKPiArICAgICAqIGRhdGEgaW4gdGhlIE9VVCByaW5nIGJ1ZmZlci4KPiArICAgICAqLwo+ICsg ICAgbm90aWZ5X3ZpYV94ZW5fZXZlbnRfY2hhbm5lbChkLCB2cGwwMTEtPmV2dGNobik7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgdnBsMDExX21taW9fcmVhZChzdHJ1Y3QgdmNwdSAqdiwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1taW9faW5mb190ICppbmZvLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfdCAqciwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZvaWQgKnByaXYpCj4gK3sKPiArICAgIHN0cnVjdCBoc3JfZGFidCBkYWJ0ID0gaW5m by0+ZGFidDsKPiArICAgIHVpbnQzMl90IHZwbDAxMV9yZWcgPSAodWludDMyX3QpKGluZm8tPmdw YSAtIEdVRVNUX1BMMDExX0JBU0UpOwo+ICsgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJnYt PmRvbWFpbi0+YXJjaC52cGwwMTE7Cj4gKwo+ICsgICAgc3dpdGNoICggdnBsMDExX3JlZyApCj4g KyAgICB7Cj4gKyAgICBjYXNlIERSOgo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogU2luY2Ug cGwwMTEgcmVnaXN0ZXJzIGFyZSAzMi1iaXQgcmVnaXN0ZXJzLCBhbGwgcmVnaXN0ZXJzCj4gKyAg ICAgICAgICogYXJlIGhhbmRsZWQgc2ltaWxhcmx5IGFsbG93aW5nIDgtYml0LCAxNi1iaXQgYW5k IDMyLWJpdAo+ICsgICAgICAgICAqIGFjY2Vzc2VzLgo+ICsgICAgICAgICAqLwo+ICsgICAgICAg IGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93aWR0aDsK PiArCj4gKyAgICAgICAgKnIgPSB2cmVnX3JlZzMyX2V4dHJhY3QodnBsMDExX3JlYWRfZGF0YSh2 LT5kb21haW4pLCBpbmZvKTsKPiArICAgICAgICByZXR1cm4gMTsKPiArCj4gKyAgICBjYXNlIFJT UjoKPiArICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290 byBiYWRfd2lkdGg7Cj4gKwo+ICsgICAgICAgIC8qIEl0IGFsd2F5cyByZXR1cm5zIDAgYXMgdGhl cmUgYXJlIG5vIHBoeXNpY2FsIGVycm9ycy4gKi8KPiArICAgICAgICAqciA9IDA7Cj4gKyAgICAg ICAgcmV0dXJuIDE7Cj4gKwo+ICsgICAgY2FzZSBGUjoKPiArICAgICAgICBpZiAoICF2cGwwMTFf cmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7Cj4gKwo+ICsgICAgICAg ICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydGZyLCBpbmZvKTsKPiArICAgICAg ICByZXR1cm4gMTsKPiArCj4gKyAgICBjYXNlIFJJUzoKPiArICAgICAgICBpZiAoICF2cGwwMTFf cmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBiYWRfd2lkdGg7Cj4gKwo+ICsgICAgICAg ICpyID0gdnJlZ19yZWczMl9leHRyYWN0KHZwbDAxMS0+dWFydHJpcywgaW5mbyk7Cj4gKyAgICAg ICAgcmV0dXJuIDE7Cj4gKwo+ICsgICAgY2FzZSBNSVM6Cj4gKyAgICAgICAgaWYgKCAhdnBsMDEx X3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICsKPiArICAgICAg ICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVhcnRyaXMgJiAKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2cGwwMTEtPnVhcnRpbXNjLCBpbmZvKTsKClRoYXQgc21l bGxzIGxpa2UgeW91IG5lZWQgYSBsb2NrIGhlcmUsIHNpbmNlIGFub3RoZXIgYWNjZXNzIGNvdWxk IGNoYW5nZQplaXRoZXIgUklTIGFuZC9vciBJTVNDIGNvbmN1cnJlbnRseS4KQnV0IGFzIEp1bGll biBhbHJlYWR5IG1lbnRpb25lZCwgdGhlc2UgYWNjZXNzZXMgYXJlIHByb25lIHRvIHJhY2VzCmFu eXdheSwgc2luY2UgdnJlZ19yZWczMl9leHRyYWN0KCkgaXMgbm90IGF0b21pYy4KU28gaXMgaXQg d29ydGggdG8gdGFrZSB0aGUgbG9jayBoZXJlIGp1c3QgYmVmb3JlIHRoZSB3aG9sZSBzd2l0Y2gg c3RhdGVtZW50PwoKPiArICAgICAgICByZXR1cm4gMTsKPiArCj4gKyAgICBjYXNlIElNU0M6Cj4g KyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFk X3dpZHRoOwo+ICsKPiArICAgICAgICAqciA9IHZyZWdfcmVnMzJfZXh0cmFjdCh2cGwwMTEtPnVh cnRpbXNjLCBpbmZvKTsKPiArICAgICAgICByZXR1cm4gMTsKPiArCj4gKyAgICBjYXNlIElDUjoK PiArICAgICAgICBpZiAoICF2cGwwMTFfcmVnMzJfY2hlY2tfYWNjZXNzKGRhYnQpICkgZ290byBi YWRfd2lkdGg7Cj4gKwo+ICsgICAgICAgIC8qIE9ubHkgd3JpdGUgaXMgdmFsaWQuICovCj4gKyAg ICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAgICBncHJpbnRrKFhF TkxPR19FUlIsICJ2cGwwMTE6IHVuaGFuZGxlZCByZWFkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCj4g KyAgICAgICAgICAgICAgICBkYWJ0LnJlZywgdnBsMDExX3JlZyk7Cj4gKyAgICAgICAgcmV0dXJu IDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDE7Cj4gKwo+ICtiYWRfd2lkdGg6Cj4gKyAg ICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IGJhZCByZWFkIHdpZHRoICVkIHIlZCBvZmZz ZXQgJSMwOHhcbiIsCj4gKyAgICAgICAgICAgIGRhYnQuc2l6ZSwgZGFidC5yZWcsIHZwbDAxMV9y ZWcpOwo+ICsgICAgZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKCk7Cj4gKyAgICByZXR1cm4gMDsK PiArCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdnBsMDExX21taW9fd3JpdGUoc3RydWN0IHZjcHUg KnYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW1pb19pbmZvX3QgKmluZm8sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfdCByLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKnByaXYpCj4gK3sKPiArICAgIHN0cnVjdCBoc3JfZGFi dCBkYWJ0ID0gaW5mby0+ZGFidDsKPiArICAgIHVpbnQzMl90IHZwbDAxMV9yZWcgPSAodWludDMy X3QpKGluZm8tPmdwYSAtIEdVRVNUX1BMMDExX0JBU0UpOwo+ICsgICAgc3RydWN0IHZwbDAxMSAq dnBsMDExID0gJnYtPmRvbWFpbi0+YXJjaC52cGwwMTE7Cj4gKyAgICBzdHJ1Y3QgZG9tYWluICpk ID0gdi0+ZG9tYWluOwo+ICsgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKyAgICBzd2l0 Y2ggKCB2cGwwMTFfcmVnICkKPiArICAgIHsKPiArICAgIGNhc2UgRFI6Cj4gKyAgICB7Cj4gKyAg ICAgICAgdWludDMyX3QgZGF0YSA9IDA7Cj4gKwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICog U2luY2UgcGwwMTEgcmVnaXN0ZXJzIGFyZSAzMi1iaXQgcmVnaXN0ZXJzLCBhbGwgcmVnaXN0ZXJz Cj4gKyAgICAgICAgICogYXJlIGhhbmRsZWQgc2ltaWxhcmx5IGFsbG93aW5nIDgtYml0LCAxNi1i aXQgYW5kIDMyLWJpdAo+ICsgICAgICAgICAqIGFjY2Vzc2VzLgo+ICsgICAgICAgICAqLwo+ICsg ICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3MoZGFidCkgKSBnb3RvIGJhZF93 aWR0aDsKPiArCj4gKyAgICAgICAgdnJlZ19yZWczMl91cGRhdGUoJmRhdGEsIHIsIGluZm8pOwo+ ICsgICAgICAgIGRhdGEgJj0gMHhGRjsKClRoaXMgaXMgbm90IG5lZWRlZCBhcyB2cGwwMTFfd3Jp dGVfZGF0YSgpJ3Mgc2Vjb25kIGFyZ3VtZW50IGlzIHVpbnQ4X3QsCnNvIHRoZSBjb21waWxlciBk b2VzIHRoaXMgbWFza2luZyBhbnl3YXkuCkFuZCBldmVuIGlmIGl0IHdvdWxkbid0LCB5b3UgY291 bGQgbW92ZSB0aGlzIHN0YXRlbWVudCBpbnRvIHRoZSBjYWxsLgoKPiArICAgICAgICB2cGwwMTFf d3JpdGVfZGF0YSh2LT5kb21haW4sIGRhdGEpOwo+ICsgICAgICAgIHJldHVybiAxOwo+ICsgICAg fQo+ICsgICAgY2FzZSBSU1I6IC8qIE5vdGhpbmcgdG8gY2xlYXIuICovCj4gKyAgICAgICAgaWYg KCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSApIGdvdG8gYmFkX3dpZHRoOwo+ICsK PiArICAgICAgICByZXR1cm4gMTsgCj4gKwo+ICsgICAgY2FzZSBGUjoKPiArICAgIGNhc2UgUklT Ogo+ICsgICAgY2FzZSBNSVM6Cj4gKyAgICAgICAgZ290byB3cml0ZV9pZ25vcmU7Cj4gKwo+ICsg ICAgY2FzZSBJTVNDOgo+ICsgICAgICAgIGlmICggIXZwbDAxMV9yZWczMl9jaGVja19hY2Nlc3Mo ZGFidCkgKSBnb3RvIGJhZF93aWR0aDsKPiArCj4gKyAgICAgICAgVlBMMDExX0xPQ0soZCwgZmxh Z3MpOwo+ICsgICAgICAgIHZyZWdfcmVnMzJfdXBkYXRlKCZ2cGwwMTEtPnVhcnRpbXNjLCByLCBp bmZvKTsKPiArICAgICAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiArICAgICAgICB2cGww MTFfdXBkYXRlKHYtPmRvbWFpbik7Cj4gKyAgICAgICAgcmV0dXJuIDE7Cj4gKwo+ICsgICAgY2Fz ZSBJQ1I6Cj4gKyAgICAgICAgaWYgKCAhdnBsMDExX3JlZzMyX2NoZWNrX2FjY2VzcyhkYWJ0KSAp IGdvdG8gYmFkX3dpZHRoOwo+ICsKPiArICAgICAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7Cj4g KyAgICAgICAgdnJlZ19yZWczMl9jbGVhcmJpdHMoJnZwbDAxMS0+dWFydHJpcywgciwgaW5mbyk7 CgpQbGVhc2UgY2FsbCB0aGUgaW50ZXJydXB0IHN0YXR1cyB1cGRhdGUgZnVuY3Rpb24gaGVyZS4K Cj4gKyAgICAgICAgVlBMMDExX1VOTE9DSyhkLCBmbGFncyk7Cj4gKyAgICAgICAgdnBsMDExX3Vw ZGF0ZShkKTsKPiArICAgICAgICByZXR1cm4gMTsKPiArCj4gKyAgICBkZWZhdWx0Ogo+ICsgICAg ICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZwbDAxMTogdW5oYW5kbGVkIHdyaXRlIHIlZCBvZmZz ZXQgJSMwOHhcbiIsCj4gKyAgICAgICAgICAgICAgICBkYWJ0LnJlZywgdnBsMDExX3JlZyk7Cj4g KyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICt3cml0ZV9pZ25vcmU6Cj4gKyAgICBy ZXR1cm4gMTsKPiArCj4gK2JhZF93aWR0aDoKPiArICAgIGdwcmludGsoWEVOTE9HX0VSUiwgInZw bDAxMTogYmFkIHdyaXRlIHdpZHRoICVkIHIlZCBvZmZzZXQgJSMwOHhcbiIsCj4gKyAgICAgICAg ICAgIGRhYnQuc2l6ZSwgZGFidC5yZWcsIHZwbDAxMV9yZWcpOwo+ICsgICAgZG9tYWluX2NyYXNo X3N5bmNocm9ub3VzKCk7Cj4gKyAgICByZXR1cm4gMDsKPiArCj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgbW1pb19oYW5kbGVyX29wcyB2cGwwMTFfbW1pb19oYW5kbGVyID0gewo+ICsg ICAgLnJlYWQgPSB2cGwwMTFfbW1pb19yZWFkLAo+ICsgICAgLndyaXRlID0gdnBsMDExX21taW9f d3JpdGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCB2cGwwMTFfZGF0YV9hdmFpbChzdHJ1Y3Qg ZG9tYWluICpkKQo+ICt7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICsgICAgc3RydWN0 IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+ICsgICAgc3RydWN0IHhlbmNvbnNf aW50ZXJmYWNlICppbnRmID0gdnBsMDExLT5yaW5nX2J1ZjsKPiArICAgIFhFTkNPTlNfUklOR19J RFggaW5fY29ucyA9IGludGYtPmluX2NvbnM7Cj4gKyAgICBYRU5DT05TX1JJTkdfSURYIGluX3By b2QgPSBpbnRmLT5pbl9wcm9kOwo+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBvdXRfY29ucyA9IGlu dGYtPm91dF9jb25zOwo+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBvdXRfcHJvZCA9IGludGYtPm91 dF9wcm9kOwo+ICsgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9yaW5nX3FzaXplLCBvdXRfcmluZ19x c2l6ZTsKPiArCj4gKyAgICBWUEwwMTFfTE9DSyhkLCBmbGFncyk7Cj4gKwo+ICsgICAgaW5fcmlu Z19xc2l6ZSA9IHhlbmNvbnNfcXVldWVkKGluX3Byb2QsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5fY29ucywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YoaW50Zi0+aW4pKTsKPiArCj4gKyAgICBvdXRfcmluZ19xc2l6ZSA9IHhlbmNv bnNfcXVldWVkKG91dF9wcm9kLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvdXRfY29ucywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGludGYtPm91dCkpOwo+ICsKPiArICAgIC8qIFVwZGF0ZSB0aGUgdWFydCByeCBzdGF0ZSBpZiB0 aGUgYnVmZmVyIGlzIG5vdCBlbXB0eS4gKi8KPiArICAgIGlmICggaW5fcmluZ19xc2l6ZSAhPSAw ICkKPiArICAgIHsKPiArICAgICAgICB2cGwwMTEtPnVhcnRmciAmPSB+UlhGRTsKPiArICAgICAg ICBpZiAoIGluX3JpbmdfcXNpemUgPT0gc2l6ZW9mKGludGYtPmluKSApCj4gKyAgICAgICAgICAg IHZwbDAxMS0+dWFydGZyIHw9IFJYRkY7Cj4gKyAgICAgICAgdnBsMDExLT51YXJ0cmlzIHw9IFJY STsKCi4uLiBhbmQgaGVyZSAuLi4KCj4gKyAgICB9Cj4gKwo+ICsgICAgLyogVXBkYXRlIHRoZSB1 YXJ0IHR4IHN0YXRlIGlmIHRoZSBidWZmZXIgaXMgbm90IGZ1bGwuICovCj4gKyAgICBpZiAoIG91 dF9yaW5nX3FzaXplICE9IHNpemVvZihpbnRmLT5vdXQpICkKPiArICAgIHsKPiArICAgICAgICB2 cGwwMTEtPnVhcnRmciAmPSB+VFhGRjsKPiArICAgICAgICB2cGwwMTEtPnVhcnRyaXMgfD0gVFhJ OwoKLi4uIGFuZCBoZXJlLgoKSSBkaWRuJ3QgbG9vayBhdCB0aGUgbG9ja2luZyBpc3N1ZSBvbiB0 aGUgWGVuIGNvbnNvbGUgZm9yIG5vdywgYnV0IG1pZ2h0CmpvaW4gdGhpcyBkaXNjdXNzaW9uIGxh dGVyLgoKQ2hlZXJzLApBbmRyZS4KCj4gKyAgICAgICAgaWYgKCBvdXRfcmluZ19xc2l6ZSA9PSAw ICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyICY9IH5CVVNZOwo+ ICsgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBUWEZFOwo+ICsgICAgICAgIH0KPiArICAg IH0KPiArCj4gKyAgICBWUEwwMTFfVU5MT0NLKGQsIGZsYWdzKTsKPiArCj4gKyAgICB2cGwwMTFf dXBkYXRlKGQpOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIHZvaWQgdnBsMDExX25vdGlmaWNhdGlv bihzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHBvcnQpCj4gK3sKPiArICAgIHZwbDAxMV9k YXRhX2F2YWlsKHYtPmRvbWFpbik7Cj4gK30KPiArCj4gK2ludCBkb21haW5fdnBsMDExX2luaXQo c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pCj4gK3sKPiAr ICAgIGludCByYzsKPiArICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5hcmNoLnZwbDAx MTsKPiArCj4gKyAgICBpZiAoIHZwbDAxMS0+cmluZ19idWYgKQo+ICsgICAgICAgIHJldHVybiAw Owo+ICsKPiArICAgIC8qIE1hcCB0aGUgZ3Vlc3QgUEZOIHRvIFhlbiBhZGRyZXNzIHNwYWNlLiAq Lwo+ICsgICAgcmMgPSAgcHJlcGFyZV9yaW5nX2Zvcl9oZWxwZXIoZCwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGluZm8tPmdmbiksCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nX3BhZ2UsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmdnBsMDExLT5yaW5nX2J1Zik7Cj4gKyAgICBpZiAoIHJjIDwg MCApCj4gKyAgICAgICAgZ290byBvdXQ7Cj4gKwo+ICsgICAgcmMgPSB2Z2ljX3Jlc2VydmVfdmly cShkLCBHVUVTVF9WUEwwMTFfU1BJKTsKPiArICAgIGlmICggIXJjICkKPiArICAgIHsKPiArICAg ICAgICByYyA9IC1FSU5WQUw7Cj4gKyAgICAgICAgZ290byBvdXQxOwo+ICsgICAgfQo+ICsKPiAr ICAgIHJlZ2lzdGVyX21taW9faGFuZGxlcihkLCAmdnBsMDExX21taW9faGFuZGxlciwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBHVUVTVF9QTDAxMV9CQVNFLCBHVUVTVF9QTDAxMV9TSVpF LCBOVUxMKTsKPiArCj4gKyAgICBzcGluX2xvY2tfaW5pdCgmdnBsMDExLT5sb2NrKTsKPiArCj4g KyAgICByYyA9IGFsbG9jX3VuYm91bmRfeGVuX2V2ZW50X2NoYW5uZWwoZCwgMCwgaW5mby0+Y29u c29sZV9kb21pZCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 cGwwMTFfbm90aWZpY2F0aW9uKTsKPiArICAgIGlmICggcmMgPCAwICkKPiArICAgICAgICBnb3Rv IG91dDI7Cj4gKwo+ICsgICAgdnBsMDExLT5ldnRjaG4gPSBpbmZvLT5ldnRjaG4gPSByYzsKPiAr Cj4gKyAgICByZXR1cm4gMDsKPiArCj4gK291dDI6Cj4gKyAgICB4ZnJlZShkLT5hcmNoLnZtbWlv LmhhbmRsZXJzKTsKPiArICAgIHZnaWNfZnJlZV92aXJxKGQsIEdVRVNUX1ZQTDAxMV9TUEkpOwo+ ICsKPiArb3V0MToKPiArICAgIGRlc3Ryb3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPnJpbmdf YnVmLCB2cGwwMTEtPnJpbmdfcGFnZSk7Cj4gKwo+ICtvdXQ6Cj4gKyAgICByZXR1cm4gcmM7Cj4g K30KPiArCj4gK3ZvaWQgZG9tYWluX3ZwbDAxMV9kZWluaXQoc3RydWN0IGRvbWFpbiAqZCkKPiAr ewo+ICsgICAgc3RydWN0IHZwbDAxMSAqdnBsMDExID0gJmQtPmFyY2gudnBsMDExOwo+ICsKPiAr ICAgIGlmICggIXZwbDAxMS0+cmluZ19idWYgKQo+ICsgICAgICAgIHJldHVybjsKPiArCj4gKyAg ICBmcmVlX3hlbl9ldmVudF9jaGFubmVsKGQsIHZwbDAxMS0+ZXZ0Y2huKTsKPiArICAgIGRlc3Ry b3lfcmluZ19mb3JfaGVscGVyKCZ2cGwwMTEtPnJpbmdfYnVmLCB2cGwwMTEtPnJpbmdfcGFnZSk7 Cj4gKyAgICB4ZnJlZShkLT5hcmNoLnZtbWlvLmhhbmRsZXJzKTsKPiArfQo+ICsKPiArLyoKPiAr ICogTG9jYWwgdmFyaWFibGVzOgo+ICsgKiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJT RCIKPiArICogYy1iYXNpYy1vZmZzZXQ6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4g KyAqIEVuZDoKPiArICovCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZG9tYWlu LmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4gaW5kZXggNmRlODA4Mi4uOTFkMTA2 MSAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2RvbWFpbi5oCj4gKysrIGIveGVu L2luY2x1ZGUvYXNtLWFybS9kb21haW4uaAo+IEBAIC0xMSw2ICsxMSw3IEBACj4gICNpbmNsdWRl IDxwdWJsaWMvaHZtL3BhcmFtcy5oPgo+ICAjaW5jbHVkZSA8eGVuL3NlcmlhbC5oPgo+ICAjaW5j bHVkZSA8eGVuL3JidHJlZS5oPgo+ICsjaW5jbHVkZSA8YXNtLWFybS92cGwwMTEuaD4KPiAgCj4g IHN0cnVjdCBodm1fZG9tYWluCj4gIHsKPiBAQCAtMTMzLDYgKzEzNCwxMSBAQCBzdHJ1Y3QgYXJj aF9kb21haW4KPiAgICAgIHN0cnVjdCB7Cj4gICAgICAgICAgdWludDhfdCBwcml2aWxlZ2VkX2Nh bGxfZW5hYmxlZCA6IDE7Cj4gICAgICB9IG1vbml0b3I7Cj4gKwo+ICsjaWZkZWYgQ09ORklHX1ZQ TDAxMV9DT05TT0xFCj4gKyAgICBzdHJ1Y3QgdnBsMDExIHZwbDAxMTsKPiArI2VuZGlmCj4gKwo+ ICB9ICBfX2NhY2hlbGluZV9hbGlnbmVkOwo+ICAKPiAgc3RydWN0IGFyY2hfdmNwdQo+IGRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVhcnQuaCBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vcGwwMTEtdWFydC5oCj4gaW5kZXggMTIzZjQ3Ny4uNTdlOWVjNyAxMDA2NDQKPiAtLS0g YS94ZW4vaW5jbHVkZS9hc20tYXJtL3BsMDExLXVhcnQuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2Fz bS1hcm0vcGwwMTEtdWFydC5oCj4gQEAgLTQ5LDYgKzQ5LDggQEAKPiAgLyogRlIgYml0cyAqLwo+ ICAjZGVmaW5lIFRYRkUgICAoMTw8NykgLyogVFggRklGTyBlbXB0eSAqLwo+ICAjZGVmaW5lIFJY RkUgICAoMTw8NCkgLyogUlggRklGTyBlbXB0eSAqLwo+ICsjZGVmaW5lIFRYRkYgICAoMTw8NSkg LyogVFggRklGTyBmdWxsICovCj4gKyNkZWZpbmUgUlhGRiAgICgxPDw2KSAvKiBSWCBGSUZPIGZ1 bGwgKi8KPiAgI2RlZmluZSBCVVNZICAgKDE8PDMpIC8qIFRyYW5zbWl0IGlzIG5vdCBjb21wbGV0 ZSAqLwo+ICAKPiAgLyogTENSX0ggYml0cyAqLwo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaAo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYjNlMzMyZAo+IC0tLSAvZGV2L251bGwKPiAr KysgYi94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5oCj4gQEAgLTAsMCArMSw3NCBAQAo+ICsv Kgo+ICsgKiBpbmNsdWRlL3hlbi92cGwwMTEuaAo+ICsgKgo+ICsgKiBWaXJ0dWFsIFBMMDExIFVB UlQKPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICogdmVyc2lv biAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoK PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUg dXNlZnVsLCBidXQgV0lUSE9VVAo+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvcgo+ICsgKiBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgK PiArICogdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfVlBMMDExX0hfCj4gKwo+ICsjZGVmaW5lIF9W UEwwMTFfSF8KPiArCj4gKyNpbmNsdWRlIDxwdWJsaWMvZG9tY3RsLmg+Cj4gKyNpbmNsdWRlIDxw dWJsaWMvaW8vcmluZy5oPgo+ICsjaW5jbHVkZSA8YXNtLWFybS92cmVnLmg+Cj4gKyNpbmNsdWRl IDx4ZW4vbW0uaD4KPiArCj4gKy8qIGhlbHBlciBtYWNyb3MgKi8KPiArI2RlZmluZSBWUEwwMTFf TE9DSyhkLGZsYWdzKSBzcGluX2xvY2tfaXJxc2F2ZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBm bGFncykKPiArI2RlZmluZSBWUEwwMTFfVU5MT0NLKGQsZmxhZ3MpIHNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJihkKS0+YXJjaC52cGwwMTEubG9jaywgZmxhZ3MpCj4gKwo+ICtzdHJ1Y3QgdnBsMDEx IHsKPiArICAgIHZvaWQgKnJpbmdfYnVmOwo+ICsgICAgc3RydWN0IHBhZ2VfaW5mbyAqcmluZ19w YWdlOwo+ICsgICAgdWludDMyX3QgICAgdWFydGZyOyAgICAgLyogRmxhZyByZWdpc3RlciAqLwo+ ICsgICAgdWludDMyX3QgICAgdWFydGNyOyAgICAgLyogQ29udHJvbCByZWdpc3RlciAqLwo+ICsg ICAgdWludDMyX3QgICAgdWFydGltc2M7ICAgLyogSW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIqLwo+ ICsgICAgdWludDMyX3QgICAgdWFydGljcjsgICAgLyogSW50ZXJydXB0IGNsZWFyIHJlZ2lzdGVy ICovCj4gKyAgICB1aW50MzJfdCAgICB1YXJ0cmlzOyAgICAvKiBSYXcgaW50ZXJydXB0IHN0YXR1 cyByZWdpc3RlciAqLwo+ICsgICAgdWludDMyX3QgICAgdWFydG1pczsgICAgLyogTWFza2VkIGlu dGVycnVwdCByZWdpc3RlciAqLwo+ICsgICAgc3BpbmxvY2tfdCAgbG9jazsKPiArICAgIGV2dGNo bl9wb3J0X3QgZXZ0Y2huOwo+ICt9Owo+ICsKPiArc3RydWN0IHZwbDAxMV9pbml0X2luZm8gewo+ ICsgICAgdWludDMyX3QgY29uc29sZV9kb21pZDsKPiArICAgIGdmbl90IGdmbjsKPiArICAgIGV2 dGNobl9wb3J0X3QgZXZ0Y2huOwo+ICt9Owo+ICsKPiArI2lmZGVmIENPTkZJR19WUEwwMTFfQ09O U09MRQo+ICtpbnQgZG9tYWluX3ZwbDAxMV9pbml0KHN0cnVjdCBkb21haW4gKmQsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHZwbDAxMV9pbml0X2luZm8gKmluZm8pOwo+ICt2b2lk IGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpOwo+ICsjZWxzZQo+ICtzdGF0 aWMgaW5saW5lIGludCBkb21haW5fdnBsMDExX2luaXQoc3RydWN0IGRvbWFpbiAqZCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2cGwwMTFfaW5pdF9pbmZv ICppbmZvKQo+ICt7Cj4gKyAgICByZXR1cm4gLUVOT1NZUzsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB2b2lkIGRvbWFpbl92cGwwMTFfZGVpbml0KHN0cnVjdCBkb21haW4gKmQpIHsgfQo+ICsj ZW5kaWYKPiArCj4gKyNlbmRpZgo+ICsKPiArLyoKPiArICogTG9jYWwgdmFyaWFibGVzOgo+ICsg KiBtb2RlOiBDCj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKPiArICogYy1iYXNpYy1vZmZzZXQ6 IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAqIEVuZDoKPiArICovCj4gZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oIGIveGVuL2luY2x1ZGUvcHVibGlj L2FyY2gtYXJtLmgKPiBpbmRleCBiZDk3NGZiLi44NWFiNjY1IDEwMDY0NAo+IC0tLSBhL3hlbi9p bmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oCj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyY2gt YXJtLmgKPiBAQCAtNDEwLDYgKzQxMCwxMCBAQCB0eXBlZGVmIHVpbnQ2NF90IHhlbl9jYWxsYmFj a190Owo+ICAjZGVmaW5lIEdVRVNUX0FDUElfQkFTRSAweDIwMDAwMDAwVUxMCj4gICNkZWZpbmUg R1VFU1RfQUNQSV9TSVpFIDB4MDIwMDAwMDBVTEwKPiAgCj4gKy8qIFBMMDExIG1hcHBpbmdzICov Cj4gKyNkZWZpbmUgR1VFU1RfUEwwMTFfQkFTRSAgICAweDIyMDAwMDAwVUxMCj4gKyNkZWZpbmUg R1VFU1RfUEwwMTFfU0laRSAgICAweDAwMDAxMDAwVUxMCj4gKwo+ICAvKgo+ICAgKiAxNk1CID09 IDQwOTYgcGFnZXMgcmVzZXJ2ZWQgZm9yIGd1ZXN0IHRvIHVzZSBhcyBhIHJlZ2lvbiB0byBtYXAg aXRzCj4gICAqIGdyYW50IHRhYmxlIGluLgo+IEBAIC00NDQsNiArNDQ4LDggQEAgdHlwZWRlZiB1 aW50NjRfdCB4ZW5fY2FsbGJhY2tfdDsKPiAgI2RlZmluZSBHVUVTVF9USU1FUl9QSFlTX05TX1BQ SSAzMAo+ICAjZGVmaW5lIEdVRVNUX0VWVENITl9QUEkgICAgICAgIDMxCj4gIAo+ICsjZGVmaW5l IEdVRVNUX1ZQTDAxMV9TUEkgICAgICAgIDMyCj4gKwo+ICAvKiBQU0NJIGZ1bmN0aW9ucyAqLwo+ ICAjZGVmaW5lIFBTQ0lfY3B1X3N1c3BlbmQgMAo+ICAjZGVmaW5lIFBTQ0lfY3B1X29mZiAgICAg MQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vY29uc29sZS5oIGIveGVuL2lu Y2x1ZGUvcHVibGljL2lvL2NvbnNvbGUuaAo+IGluZGV4IGUyY2Q5N2YuLjVlNDVlMWMgMTAwNjQ0 Cj4gLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL2lvL2NvbnNvbGUuaAo+ICsrKyBiL3hlbi9pbmNs dWRlL3B1YmxpYy9pby9jb25zb2xlLmgKPiBAQCAtMjcsNiArMjcsOCBAQAo+ICAjaWZuZGVmIF9f WEVOX1BVQkxJQ19JT19DT05TT0xFX0hfXwo+ICAjZGVmaW5lIF9fWEVOX1BVQkxJQ19JT19DT05T T0xFX0hfXwo+ICAKPiArI2luY2x1ZGUgInJpbmcuaCIKPiArCj4gIHR5cGVkZWYgdWludDMyX3Qg WEVOQ09OU19SSU5HX0lEWDsKPiAgCj4gICNkZWZpbmUgTUFTS19YRU5DT05TX0lEWChpZHgsIHJp bmcpICgoaWR4KSAmIChzaXplb2YocmluZyktMSkpCj4gQEAgLTM4LDYgKzQwLDggQEAgc3RydWN0 IHhlbmNvbnNfaW50ZXJmYWNlIHsKPiAgICAgIFhFTkNPTlNfUklOR19JRFggb3V0X2NvbnMsIG91 dF9wcm9kOwo+ICB9Owo+ICAKPiArREVGSU5FX1hFTl9GTEVYX1JJTkcoeGVuY29ucyk7Cj4gKwo+ ICAjZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX0NPTlNPTEVfSF9fICovCj4gIAo+ICAvKgo+IAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==