From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH RFC v6 16/21] drm: panel: Add support for Himax HX8369A MIPI DSI panel Date: Mon, 29 Dec 2014 11:50:35 +0100 Message-ID: <54A131FB.8040809@samsung.com> References: <1419835168-9034-1-git-send-email-Ying.Liu@freescale.com> <1419835168-9034-17-git-send-email-Ying.Liu@freescale.com> <54A11A65.1040509@samsung.com> <54A127D2.7080904@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <54A127D2.7080904@freescale.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liu Ying , dri-devel@lists.freedesktop.org Cc: stefan.wahren@i2se.com, devicetree@vger.kernel.org, linux@arm.linux.org.uk, kernel@pengutronix.de, linux-kernel@vger.kernel.org, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org, andyshrk@gmail.com List-Id: devicetree@vger.kernel.org T24gMTIvMjkvMjAxNCAxMTowNyBBTSwgTGl1IFlpbmcgd3JvdGU6Cj4gT24gMTIvMjkvMjAxNCAw NTowOSBQTSwgQW5kcnplaiBIYWpkYSB3cm90ZToKPj4gT24gMTIvMjkvMjAxNCAwNzozOSBBTSwg TGl1IFlpbmcgd3JvdGU6Cj4+PiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgSGltYXggSFg4 MzY5QSBNSVBJIERTSSBwYW5lbC4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBMaXUgWWluZyA8WWlu Zy5MaXVAZnJlZXNjYWxlLmNvbT4KPj4+IC0tLQo+Pj4gdjUtPnY2Ogo+Pj4gICAqIE1ha2UgdGhl IGNoZWNrcGF0Y2gucGwgc2NyaXB0IGJlIGhhcHBpZXIuCj4+PiAgICogRG8gbm90IHNldCB0aGUg ZHNpIGNoYW5uZWwgbnVtYmVyIHRvIGJlIHplcm8gaW4gcHJvYmUoKSwgYmVjYXVzZSB0aGUgTUlQ SSBEU0kKPj4+ICAgICBidXMgZHJpdmVyIHdvdWxkIHNldCBpdC4KPj4+Cj4+PiB2NC0+djU6Cj4+ PiAgICogQWRkcmVzcyBBbmRyemVqIEhhamRhJ3MgY29tbWVudHMuCj4+PiAgICogR2V0IHRoZSBi cy1ncGlvcyBwcm9wZXJ0eSBpbnN0ZWFkIG9mIHRoZSBic1szOjBdLWdwaW9zIHByb3BlcnRpZXMu Cj4+PiAgICogSW1wbGVtZW50IGVycm9yIHByb3BhZ2F0aW9uIGZvciBwYW5lbCByZWdpc3RlciBj b25maWd1cmF0aW9ucy4KPj4+ICAgKiBPdGhlciBtaW5vciBjaGFuZ2VzIHRvIGltcHJvdmUgdGhl IGNvZGUgcXVhbGl0eS4KPj4+Cj4+PiB2My0+djQ6Cj4+PiAgICogTW92ZSB0aGUgcmVsZXZhbnQg ZHQtYmluZGluZ3MgdG8gYSBzZXBhcmF0ZSBwYXRjaCB0byBhZGRyZXNzIFN0ZWZhbgo+Pj4gICAg IFdhaHJlbidzIGNvbW1lbnQuCj4+Pgo+Pj4gdjItPnYzOgo+Pj4gICAqIFNvcnQgdGhlIGluY2x1 ZGVkIGhlYWRlciBmaWxlcyBhbHBoYWJldGljYWxseS4KPj4+Cj4+PiB2MS0+djI6Cj4+PiAgICog QWRkcmVzcyBhbG1vc3QgYWxsIGNvbW1lbnRzIGZyb20gVGhpZXJyeSBSZWRpbmcuCj4+PiAgICog UmVtb3ZlIHNldmVyYWwgRFQgcHJvcGVydGllcyBhcyB0aGV5IGNhbiBiZSBpbXBsaWVkIGJ5IHRo ZSBjb21wYXRpYmxlIHN0cmluZy4KPj4+ICAgKiBBZGQgdGhlIEhJTUFYL2hpbWF4IHByZWZpeGVz IHRvIHRoZSBkcml2ZXIncyBLY29uZmlnIG5hbWUgYW5kIGRyaXZlciBuYW1lLgo+Pj4gICAqIE1v dmUgdGhlIGRyaXZlcidzIE1ha2VmaWxlIGVudHJ5IHBsYWNlIHRvIHNvcnQgdGhlIGVudHJpZXMg YWxwaGFiZXRpY2FsbHkuCj4+PiAgICogUmV1c2Ugc2V2ZXJhbCBzdGFuZGFyZCBEQ1MgZnVuY3Rp b25zIGluc3RlYWQgb2YgaW52ZW50aW5nIHdoZWVscy4KPj4+ICAgKiBNb3ZlIHRoZSBwYW5lbCBy ZXNldHRpbmcgYW5kIHBvd2VyIGxvZ2ljcyB0byB0aGUgZHJpdmVyIHByb2JlL3JlbW92ZSBzdGFn ZXMuCj4+PiAgICAgVGhpcyBtYXkgc2ltcGxpZnkgcGFuZWwgcHJlcGFyZS91bnByZXBhcmUgaG9v a3MuIFRoZSBwb3dlciBjb25zdW1wdGlvbiBzaG91bGQKPj4+ICAgICBub3QgY2hhbmdlIGEgbG90 IGF0IERQTVMgc2luY2UgdGhlIHBhbmVsIGVudGVycyBzbGVlcCBtb2RlIGF0IHRoYXQgdGltZS4K Pj4+ICAgKiBBZGQgdGhlIG1vZHVsZSBhdXRob3IuCj4+PiAgICogT3RoZXIgbWlub3IgY2hhbmdl cywgc3VjaCBhcyBjb2Rpbmcgc3R5bGUgaXNzdWVzLgo+Pj4KPj4+ICAgZHJpdmVycy9ncHUvZHJt L3BhbmVsL0tjb25maWcgICAgICAgICAgICAgICB8ICAgNSArCj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9wYW5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwo+Pj4gICBkcml2ZXJzL2dwdS9k cm0vcGFuZWwvcGFuZWwtaGltYXgtaHg4MzY5YS5jIHwgNjE0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysKPj4+ICAgMyBmaWxlcyBjaGFuZ2VkLCA2MjAgaW5zZXJ0aW9ucygrKQo+Pj4gICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWhpbWF4LWh4ODM2 OWEuYwo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+PiBpbmRleCAwMjRlOThlLi44MWIwYmYw IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL0tjb25maWcKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCj4+PiBAQCAtMTYsNiArMTYsMTEgQEAgY29u ZmlnIERSTV9QQU5FTF9TSU1QTEUKPj4+ICAgCSAgdGhhdCBpdCBjYW4gYmUgYXV0b21hdGljYWxs eSB0dXJuZWQgb2ZmIHdoZW4gdGhlIHBhbmVsIGdvZXMgaW50byBhCj4+PiAgIAkgIGxvdyBwb3dl ciBzdGF0ZS4KPj4+Cj4+PiArY29uZmlnIERSTV9QQU5FTF9ISU1BWF9IWDgzNjlBCj4+PiArCXRy aXN0YXRlICJIaW1heCBIWDgzNjlBIHBhbmVsIgo+Pj4gKwlkZXBlbmRzIG9uIE9GCj4+PiArCXNl bGVjdCBEUk1fTUlQSV9EU0kKPj4+ICsKPj4+ICAgY29uZmlnIERSTV9QQU5FTF9MRDkwNDAKPj4+ ICAgCXRyaXN0YXRlICJMRDkwNDAgUkdCL1NQSSBwYW5lbCIKPj4+ICAgCWRlcGVuZHMgb24gT0Yg JiYgU1BJCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlIGIv ZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4+PiBpbmRleCA0YjJhMDQzLi5kNWRiZTA2 IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlCj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUKPj4+IEBAIC0xLDQgKzEsNSBAQAo+Pj4g ICBvYmotJChDT05GSUdfRFJNX1BBTkVMX1NJTVBMRSkgKz0gcGFuZWwtc2ltcGxlLm8KPj4+ICtv YmotJChDT05GSUdfRFJNX1BBTkVMX0hJTUFYX0hYODM2OUEpICs9IHBhbmVsLWhpbWF4LWh4ODM2 OWEubwo+Pj4gICBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xEOTA0MCkgKz0gcGFuZWwtbGQ5MDQw Lm8KPj4+ICAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TNkU4QUEwKSArPSBwYW5lbC1zNmU4YWEw Lm8KPj4+ICAgb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUTEwMVIxU1gwMSkgKz0gcGFu ZWwtc2hhcnAtbHExMDFyMXN4MDEubwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9w YW5lbC9wYW5lbC1oaW1heC1oeDgzNjlhLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt aGltYXgtaHg4MzY5YS5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAw MC4uZWVlMzZhNwo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Bh bmVsL3BhbmVsLWhpbWF4LWh4ODM2OWEuYwo+Pj4gQEAgLTAsMCArMSw2MTQgQEAKPj4+ICsvKgo+ Pj4gKyAqIEhpbWF4IEhYODM2OUEgcGFuZWwgZHJpdmVyLgo+Pj4gKyAqCj4+PiArICogQ29weXJp Z2h0IChDKSAyMDExLTIwMTQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KPj4+ICsgKgo+ Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKPj4+ICsgKiBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMgZHJpdmVy IGlzIGJhc2VkIG9uIFNhbXN1bmcgczZlOGFhMCBwYW5lbCBkcml2ZXIuCj4+PiArICovCj4+PiAr Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fbWlwaV9k c2kuaD4KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgo+Pj4gKwo+Pj4gKyNpbmNsdWRl IDxsaW51eC9ncGlvL2NvbnN1bWVyLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5o Pgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KPj4+ICsKPj4+ICsj aW5jbHVkZSA8dmlkZW8vbWlwaV9kaXNwbGF5Lmg+Cj4+PiArI2luY2x1ZGUgPHZpZGVvL29mX3Zp ZGVvbW9kZS5oPgo+Pj4gKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KPj4+ICsKPj4+ICsj ZGVmaW5lIFdSRElTQlYJCTB4NTEKPj4+ICsjZGVmaW5lIFdSQ1RSTEQJCTB4NTMKPj4+ICsjZGVm aW5lIFdSQ0FCQwkJMHg1NQo+Pj4gKyNkZWZpbmUgU0VUUE9XRVIJMHhiMQo+Pj4gKyNkZWZpbmUg U0VURElTUAkJMHhiMgo+Pj4gKyNkZWZpbmUgU0VUQ1lDCQkweGI0Cj4+PiArI2RlZmluZSBTRVRW Q09NCQkweGI2Cj4+PiArI2RlZmluZSBTRVRFWFRDCQkweGI5Cj4+PiArI2RlZmluZSBTRVRNSVBJ CQkweGJhCj4+PiArI2RlZmluZSBTRVRQQU5FTAkweGNjCj4+PiArI2RlZmluZSBTRVRHSVAJCTB4 ZDUKPj4+ICsjZGVmaW5lIFNFVEdBTU1BCTB4ZTAKPj4+ICsKPj4+ICsjZGVmaW5lIEhYODM2OUFf TUlOX0JSSUdIVE5FU1MJMHgwMAo+Pj4gKyNkZWZpbmUgSFg4MzY5QV9NQVhfQlJJR0hUTkVTUwkw eGZmCj4+PiArCj4+PiArZW51bSBoeDgzNjlhX21wdV9pbnRlcmZhY2Ugewo+Pj4gKwlIWDgzNjlB X0RCSV9UWVBFX0FfOEJJVCwKPj4+ICsJSFg4MzY5QV9EQklfVFlQRV9BXzlCSVQsCj4+PiArCUhY ODM2OUFfREJJX1RZUEVfQV8xNkJJVCwKPj4+ICsJSFg4MzY5QV9EQklfVFlQRV9BXzE4QklULAo+ Pj4gKwlIWDgzNjlBX0RCSV9UWVBFX0JfOEJJVCwKPj4+ICsJSFg4MzY5QV9EQklfVFlQRV9CXzlC SVQsCj4+PiArCUhYODM2OUFfREJJX1RZUEVfQl8xNkJJVCwKPj4+ICsJSFg4MzY5QV9EQklfVFlQ RV9CXzE4QklULAo+Pj4gKwlIWDgzNjlBX0RTSV9DTURfTU9ERSwKPj4+ICsJSFg4MzY5QV9EQklf VFlQRV9CXzI0QklULAo+Pj4gKwlIWDgzNjlBX0RTSV9WSURFT19NT0RFLAo+Pj4gKwlIWDgzNjlB X01EREksCj4+PiArCUhYODM2OUFfRFBJX0RCSV9UWVBFX0NfT1BUMSwKPj4+ICsJSFg4MzY5QV9E UElfREJJX1RZUEVfQ19PUFQyLAo+Pj4gKwlIWDgzNjlBX0RQSV9EQklfVFlQRV9DX09QVDMKPj4+ ICt9Owo+Pj4gKwo+Pj4gK2VudW0gaHg4MzY5YV9yZXNvbHV0aW9uIHsKPj4+ICsJSFg4MzY5QV9S RVNfNDgwXzg2NCwKPj4+ICsJSFg4MzY5QV9SRVNfNDgwXzg1NCwKPj4+ICsJSFg4MzY5QV9SRVNf NDgwXzgwMCwKPj4+ICsJSFg4MzY5QV9SRVNfNDgwXzY0MCwKPj4+ICsJSFg4MzY5QV9SRVNfMzYw XzY0MCwKPj4+ICsJSFg4MzY5QV9SRVNfNDgwXzcyMCwKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0cnVj dCBoeDgzNjlhX3BhbmVsX2Rlc2Mgewo+Pj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZTsKPj4+ICsKPj4+ICsJLyogbXMgKi8KPj4+ICsJdW5zaWduZWQgaW50IHBvd2VyX29u X2RlbGF5Owo+Pj4gKwl1bnNpZ25lZCBpbnQgcmVzZXRfZGVsYXk7Cj4+PiArCj4+PiArCXVuc2ln bmVkIGludCBkc2lfbGFuZXM7Cj4+PiArfTsKPj4+ICsKPj4+ICtzdHJ1Y3QgaHg4MzY5YSB7Cj4+ PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPj4+ICsJc3RydWN0IGRybV9wYW5lbCBwYW5lbDsKPj4+ ICsKPj4+ICsJY29uc3Qgc3RydWN0IGh4ODM2OWFfcGFuZWxfZGVzYyAqcGQ7Cj4+PiArCj4+PiAr CXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzWzVdOwo+Pj4gKwlzdHJ1Y3QgZ3Bp b19kZXNjICpyZXNldF9ncGlvOwo+Pj4gKwlzdHJ1Y3QgZ3Bpb19kZXNjICpic19ncGlvWzRdOwo+ Pj4gKwl1OCByZXNfc2VsOwo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3Qg aHg4MzY5YSAqcGFuZWxfdG9faHg4MzY5YShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4+ICt7 Cj4+PiArCXJldHVybiBjb250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBoeDgzNjlhLCBwYW5lbCk7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kY3Nfd3JpdGUoc3RydWN0IGh4 ODM2OWEgKmN0eCwgY29uc3QgY2hhciAqZnVuYywKPj4+ICsJCQkgICAgIGNvbnN0IHZvaWQgKmRh dGEsIHNpemVfdCBsZW4pCj4+PiArewo+Pj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kg PSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+Pj4gKwlzc2l6ZV90IHJldDsKPj4+ICsK Pj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2ksIGRhdGEsIGxlbik7Cj4+ PiArCWlmIChyZXQgPCAwKSB7Cj4+PiArCQlkZXZfZXJyKGN0eC0+ZGV2LCAiJXMgZmFpbGVkOiAl ZFxuIiwgZnVuYywgcmV0KTsKPj4+ICsJCXJldHVybiByZXQ7Cj4+PiArCX0KPj4+ICsJcmV0dXJu IDA7Cj4+IE5pdHBpY2suIFlvdSBjYW4gcmVwbGFjZSA0IGxpbmVzIGFib3ZlIHdpdGg6Cj4+ICAg ICAgaWYgKHJldCA8IDApCj4+ICAgICAgICAgIGRldl9lcnIoY3R4LT5kZXYsICIlcyBmYWlsZWQ6 ICVkXG4iLCBmdW5jLCByZXQpOwo+PiAgICAgIHJldHVybiByZXQ7Cj4gSSdsbCBkbyB0aGF0Lgo+ Cj4+PiArfQo+Pj4gKwo+Pj4gKyNkZWZpbmUgaHg4MzY5YV9kY3Nfd3JpdGVfc2VxKGN0eCwgc2Vx Li4uKSBcCj4+PiArKHsgXAo+Pj4gKwljb25zdCB1OCBkW10gPSB7IHNlcSB9OyBcCj4+PiArCUJV SUxEX0JVR19PTl9NU0coQVJSQVlfU0laRShkKSA+IDY0LCBcCj4+PiArCQkJICJEQ1Mgc2VxdWVu Y2UgdG9vIGJpZyBmb3Igc3RhY2siKTsgXAo+Pj4gKwloeDgzNjlhX2Rjc193cml0ZShjdHgsIF9f ZnVuY19fLCBkLCBBUlJBWV9TSVpFKGQpKTsgXAo+Pj4gK30pCj4+PiArCj4+PiArI2RlZmluZSBo eDgzNjlhX2Rjc193cml0ZV9zZXFfc3RhdGljKGN0eCwgc2VxLi4uKSBcCj4+PiArKHsgXAo+Pj4g KwlzdGF0aWMgY29uc3QgdTggZFtdID0geyBzZXEgfTsgXAo+Pj4gKwloeDgzNjlhX2Rjc193cml0 ZShjdHgsIF9fZnVuY19fLCBkLCBBUlJBWV9TSVpFKGQpKTsgXAo+Pj4gK30pCj4+PiArCj4+PiAr c3RhdGljIGludCBoeDgzNjlhX2RzaV9zZXRfZGlzcGxheV9yZWxhdGVkX3JlZ2lzdGVyKHN0cnVj dCBoeDgzNjlhICpjdHgpCj4+PiArewo+Pj4gKwl1OCBzZWNfcCA9IChjdHgtPnJlc19zZWwgPDwg NCkgfCAweDAzOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gaHg4MzY5YV9kY3Nfd3JpdGVfc2VxKGN0eCwg U0VURElTUCwgMHgwMCwgc2VjX3AsIDB4MDMsCj4+PiArCQkJICAgMHgwMywgMHg3MCwgMHgwMCwg MHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwKPj4+ICsJCQkgICAweDAwLCAweDAzLCAweDAzLCAweDAw LCAweDAxKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9zZXRfZGlz cGxheV93YXZlZm9ybV9jeWNsZShzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sKPj4+ICsJcmV0 dXJuIGh4ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRDWUMsIDB4MDAsIDB4MWQs Cj4+PiArCQkJCQkweDVmLCAweDBlLCAweDA2KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlu dCBoeDgzNjlhX2RzaV9zZXRfZ2lwKHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+PiArewo+Pj4gKwly ZXR1cm4gaHg4MzY5YV9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIFNFVEdJUCwgMHgwMCwgMHgw NCwKPj4+ICsJCQkJIDB4MDMsIDB4MDAsIDB4MDEsIDB4MDUsIDB4MWMsIDB4NzAsCj4+PiArCQkJ CSAweDAxLCAweDAzLCAweDAwLCAweDAwLCAweDQwLCAweDA2LAo+Pj4gKwkJCQkgMHg1MSwgMHgw NywgMHgwMCwgMHgwMCwgMHg0MSwgMHgwNiwKPj4+ICsJCQkJIDB4NTAsIDB4MDcsIDB4MDcsIDB4 MGYsIDB4MDQpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4ODM2OWFfZHNpX3NldF9w b3dlcihzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sKPj4+ICsJcmV0dXJuIGh4ODM2OWFfZGNz X3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRQT1dFUiwgMHgwMSwgMHgwMCwKPj4+ICsJCQkJICAg MHgzNCwgMHgwNiwgMHgwMCwgMHgwZiwgMHgwZiwgMHgyYSwKPj4+ICsJCQkJICAgMHgzMiwgMHgz ZiwgMHgzZiwgMHgwNywgMHgzYSwgMHgwMSwKPj4+ICsJCQkJICAgMHhlNiwgMHhlNiwgMHhlNiwg MHhlNiwgMHhlNik7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfc2V0 X3Zjb21fdm9sdGFnZShzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sKPj4+ICsJcmV0dXJuIGh4 ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRWQ09NLCAweDU2LCAweDU2KTsKPj4+ ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9zZXRfcGFuZWwoc3RydWN0IGh4 ODM2OWEgKmN0eCkKPj4+ICt7Cj4+PiArCXJldHVybiBoeDgzNjlhX2Rjc193cml0ZV9zZXFfc3Rh dGljKGN0eCwgU0VUUEFORUwsIDB4MDIpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4 ODM2OWFfZHNpX3NldF9nYW1tYV9jdXJ2ZShzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sKPj4+ ICsJcmV0dXJuIGh4ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBTRVRHQU1NQSwgMHgw MCwgMHgxZCwKPj4+ICsJCQkJICAgMHgyMiwgMHgzOCwgMHgzZCwgMHgzZiwgMHgyZSwgMHg0YSwK Pj4+ICsJCQkJICAgMHgwNiwgMHgwZCwgMHgwZiwgMHgxMywgMHgxNSwgMHgxMywKPj4+ICsJCQkJ ICAgMHgxNiwgMHgxMCwgMHgxOSwgMHgwMCwgMHgxZCwgMHgyMiwKPj4+ICsJCQkJICAgMHgzOCwg MHgzZCwgMHgzZiwgMHgyZSwgMHg0YSwgMHgwNiwKPj4+ICsJCQkJICAgMHgwZCwgMHgwZiwgMHgx MywgMHgxNSwgMHgxMywgMHgxNiwKPj4+ICsJCQkJICAgMHgxMCwgMHgxOSk7Cj4+PiArfQo+Pj4g Kwo+Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfc2V0X21pcGkoc3RydWN0IGh4ODM2OWEgKmN0 eCkKPj4+ICt7Cj4+PiArCXU4IGVsZXZlbnRoX3AgPSBjdHgtPnBkLT5kc2lfbGFuZXMgPT0gMiA/ IDB4MTEgOiAweDEwOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gaHg4MzY5YV9kY3Nfd3JpdGVfc2VxKGN0 eCwgU0VUTUlQSSwgMHgwMCwgMHhhMCwgMHhjNiwKPj4+ICsJCQkJIDB4MDAsIDB4MGEsIDB4MDAs IDB4MTAsIDB4MzAsIDB4NmYsCj4+PiArCQkJCSAweDAyLCBlbGV2ZW50aF9wLCAweDE4LCAweDQw KTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBoeDgzNjlhX2RzaV9zZXRfaW50ZXJmYWNl X3BpeGVsX2ZvbWF0KHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgbWlw aV9kc2lfZGV2aWNlICpkc2kgPSB0b19taXBpX2RzaV9kZXZpY2UoY3R4LT5kZXYpOwo+Pj4gKwl1 OCBmb3JtYXQ7Cj4+PiArCWludCByZXQ7Cj4+PiArCj4+PiArCXN3aXRjaCAoZHNpLT5mb3JtYXQp IHsKPj4+ICsJY2FzZSBNSVBJX0RTSV9GTVRfUkdCODg4Ogo+Pj4gKwljYXNlIE1JUElfRFNJX0ZN VF9SR0I2NjY6Cj4+PiArCQlmb3JtYXQgPSAweDc3Owo+Pj4gKwkJYnJlYWs7Cj4+PiArCWNhc2Ug TUlQSV9EU0lfRk1UX1JHQjU2NToKPj4+ICsJCWZvcm1hdCA9IDB4NTU7Cj4+PiArCQlicmVhazsK Pj4+ICsJY2FzZSBNSVBJX0RTSV9GTVRfUkdCNjY2X1BBQ0tFRDoKPj4+ICsJCWZvcm1hdCA9IDB4 NjY7Cj4+PiArCQlicmVhazsKPj4+ICsJZGVmYXVsdDoKPj4+ICsJCWRldl9lcnIoY3R4LT5kZXYs ICJ1bnN1cHBvcnRlZCBEU0kgcGl4ZWwgZm9ybWF0XG4iKTsKPj4+ICsJCXJldHVybiAtRUlOVkFM Owo+Pj4gKwl9Cj4+PiArCj4+PiArCXJldCA9IG1pcGlfZHNpX2Rjc19zZXRfcGl4ZWxfZm9ybWF0 KGRzaSwgZm9ybWF0KTsKPj4+ICsJaWYgKHJldCA8IDApCj4+PiArCQlkZXZfZXJyKGN0eC0+ZGV2 LCAiJXMgZmFpbGVkOiAlZFxuIiwgX19mdW5jX18sIHJldCk7Cj4+PiArCXJldHVybiByZXQ7Cj4+ PiArfQo+PiBUaGlzIGZ1bmN0aW9ucyBjb3VsZCBiZSBhbHNvIERTSSBoZWxwZXIsIGl0IGlzIG5v dCBzcGVjaWZpYyB0byB0aGlzIHBhbmVsLAo+PiBidXQgaXQgaXMganVzdCBhIHN1Z2dlc3Rpb24u Cj4gQW55IGRvY3VtZW50YXRpb24gY2FuIHJlZmxlY3QgdGhpcyBjb3VsZCBiZSBhIGNvbW1vbiBE U0kgaGVscGVyLAo+IG1heWJlIHRoZSBNSVBJIERTSSBzcGVjPwo+IEkgd3JvdGUgdGhpcyBmdW5j dGlvbiBieSB0YWtpbmcgdGhlIEhYODM2OUEgcGFuZWwgZGF0YSBzaGVldCBhcyBhCj4gcmVmZXJl bmNlLgoKTUlQSSBEU0kgc3BlY2lmaWNhdGlvbiBkZXNjcmliZXMgTUlQSV9EU0lfRk1UXyogdmFs dWVzIGFuZApNSVBJIERDUyBzcGVjaWZpY2F0aW9uIGRlc2NyaWJlcyAnZm9ybWF0JyB2YWx1ZXMg KGllLiAweDc3LCAweDU1LCAweDY2KS4KRm9yIHJlZmVyZW5jZSBwbGVhc2UgbG9vayBmb3IgcGhy YXNlICJUYWJsZSA2IEludGVyZmFjZSBQaXhlbCBGb3JtYXRzIiBpbgpNSVBJIERDUyBzcGVjaWZp Y2F0aW9uIChvciBpbiBnb29nbGUgOikgKS4KCj4KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4ODM2 OWFfZHNpX3NldF9jb2x1bW5fYWRkcmVzcyhzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sKPj4+ ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ ZGV2KTsKPj4+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBjdHgtPnBk LT5tb2RlOwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0 X2NvbHVtbl9hZGRyZXNzKGRzaSwgMCwgbW9kZS0+aGRpc3BsYXkgLSAxKTsKPj4+ICsJaWYgKHJl dCA8IDApCj4+PiArCQlkZXZfZXJyKGN0eC0+ZGV2LCAiJXMgZmFpbGVkOiAlZFxuIiwgX19mdW5j X18sIHJldCk7Cj4+PiArCXJldHVybiByZXQ7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQg aHg4MzY5YV9kc2lfc2V0X3BhZ2VfYWRkcmVzcyhzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sK Pj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0 eC0+ZGV2KTsKPj4+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBjdHgt PnBkLT5tb2RlOwo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nf c2V0X3BhZ2VfYWRkcmVzcyhkc2ksIDAsIG1vZGUtPnZkaXNwbGF5IC0gMSk7Cj4+PiArCWlmIChy ZXQgPCAwKQo+Pj4gKwkJZGV2X2VycihjdHgtPmRldiwgIiVzIGZhaWxlZDogJWRcbiIsIF9fZnVu Y19fLCByZXQpOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50 IGh4ODM2OWFfZHNpX3dyaXRlX2Rpc3BsYXlfYnJpZ2h0bmVzcyhzdHJ1Y3QgaHg4MzY5YSAqY3R4 LAo+Pj4gKwkJCQkJCXU4IGJyaWdodG5lc3MpCj4+PiArewo+Pj4gKwlyZXR1cm4gaHg4MzY5YV9k Y3Nfd3JpdGVfc2VxKGN0eCwgV1JESVNCViwgYnJpZ2h0bmVzcyk7Cj4+PiArfQo+Pj4gKwo+Pj4g K3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfd3JpdGVfY2FiYyhzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+ Pj4gK3sKPj4+ICsJcmV0dXJuIGh4ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBXUkNB QkMsIDB4MDEpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4ODM2OWFfZHNpX3dyaXRl X2NvbnRyb2xfZGlzcGxheShzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sKPj4+ICsJcmV0dXJu IGh4ODM2OWFfZGNzX3dyaXRlX3NlcV9zdGF0aWMoY3R4LCBXUkNUUkxELCAweDI0KTsKPj4+ICt9 Cj4+PiArCj4+PiArI2RlZmluZSBoeDgzNjlhX2RzaV9pbml0X2hlbHBlcihjdHgsIHJldCwgbmFt ZSkgXAo+Pj4gKyh7IFwKPj4+ICsJcmV0ID0gaHg4MzY5YV9kc2lfIyNuYW1lKGN0eCk7IFwKPj4+ ICsJaWYgKHJldCA8IDApIFwKPj4+ICsJCXJldHVybiByZXQ7IFwKPj4+ICt9KQo+PiBZZWFoLCBh bm90aGVyIGhhY2sgdG8gZ2V0IHJpZCBvZiByZWR1bmRhbnQgY29kZSA6KQo+PiBUd28gdWdseSB0 aGluZ3MgaGVyZTogIyMgYW5kIHJldHVybiBmcm9tIG1hY3JvLgo+Pgo+Pj4gKwo+Pj4gK3N0YXRp YyBpbnQgaHg4MzY5YV9kc2lfcGFuZWxfaW5pdChzdHJ1Y3QgaHg4MzY5YSAqY3R4KQo+Pj4gK3sK Pj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJaHg4MzY5YV9kc2lfaW5pdF9oZWxwZXIoY3R4LCBy ZXQsIHNldF9kaXNwbGF5X3JlbGF0ZWRfcmVnaXN0ZXIpOwo+Pj4gKwloeDgzNjlhX2RzaV9pbml0 X2hlbHBlcihjdHgsIHJldCwgc2V0X2Rpc3BsYXlfd2F2ZWZvcm1fY3ljbGUpOwo+Pj4gKwloeDgz NjlhX2RzaV9pbml0X2hlbHBlcihjdHgsIHJldCwgc2V0X2dpcCk7Cj4+PiArCWh4ODM2OWFfZHNp X2luaXRfaGVscGVyKGN0eCwgcmV0LCBzZXRfcG93ZXIpOwo+Pj4gKwloeDgzNjlhX2RzaV9pbml0 X2hlbHBlcihjdHgsIHJldCwgc2V0X3Zjb21fdm9sdGFnZSk7Cj4+PiArCWh4ODM2OWFfZHNpX2lu aXRfaGVscGVyKGN0eCwgcmV0LCBzZXRfcGFuZWwpOwo+Pj4gKwloeDgzNjlhX2RzaV9pbml0X2hl bHBlcihjdHgsIHJldCwgc2V0X2dhbW1hX2N1cnZlKTsKPj4+ICsJaHg4MzY5YV9kc2lfaW5pdF9o ZWxwZXIoY3R4LCByZXQsIHNldF9taXBpKTsKPj4+ICsJaHg4MzY5YV9kc2lfaW5pdF9oZWxwZXIo Y3R4LCByZXQsIHNldF9pbnRlcmZhY2VfcGl4ZWxfZm9tYXQpOwo+Pj4gKwloeDgzNjlhX2RzaV9p bml0X2hlbHBlcihjdHgsIHJldCwgc2V0X2NvbHVtbl9hZGRyZXNzKTsKPj4+ICsJaHg4MzY5YV9k c2lfaW5pdF9oZWxwZXIoY3R4LCByZXQsIHNldF9wYWdlX2FkZHJlc3MpOwo+Pj4gKwloeDgzNjlh X2RzaV9pbml0X2hlbHBlcihjdHgsIHJldCwgd3JpdGVfY2FiYyk7Cj4+PiArCWh4ODM2OWFfZHNp X2luaXRfaGVscGVyKGN0eCwgcmV0LCB3cml0ZV9jb250cm9sX2Rpc3BsYXkpOwo+PiBNYXliZSBp dCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVwbGFjZSB0aGUgaGFjayBhYm92ZSB3aXRoIHNvbWV0aGlu ZyBsaWtlOgo+PiB7Cj4+ICAgICAgaW50ICgqKShzdHJ1Y3QgaHg4MzY5YSAqY3R4KSBmdW5jc1td ID0gewo+PiAgICAgICAgICBoeDgzNjlhX2RzaV9zZXRfZGlzcGxheV9yZWxhdGVkX3JlZ2lzdGVy LAo+PiAgICAgICAgICBoeDgzNjlhX2RzaV9zZXRfZGlzcGxheV93YXZlZm9ybV9jeWNsZSwKPj4g ICAgICAgICAgLi4uCj4+ICAgICAgIH07Cj4+ICAgICAgaW50IHJldCwgaTsKPj4KPj4gICAgICBm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmdW5jcyk7ICsraSkgewo+PiAgICAgICAgICByZXQg PSBmdW5jc1tpXShjdHgpOwo+PiAgICAgICAgICBpZiAocmV0KQo+PiAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPj4gICAgICB9Cj4gSSdsbCBjaGFuZ2UgdG8gdXNlIHRoaXMuICBUaGFua3MuCj4K Pj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaHg4MzY5 YV9kc2lfc2V0X2V4dGVuc2lvbl9jb21tYW5kKHN0cnVjdCBoeDgzNjlhICpjdHgpCj4+PiArewo+ Pj4gKwlyZXR1cm4gaHg4MzY5YV9kY3Nfd3JpdGVfc2VxX3N0YXRpYyhjdHgsIFNFVEVYVEMsIDB4 ZmYsIDB4ODMsIDB4NjkpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4ODM2OWFfZHNp X3NldF9tYXhpbXVtX3JldHVybl9wYWNrZXRfc2l6ZShzdHJ1Y3QgaHg4MzY5YSAqY3R4LAo+Pj4g KwkJCQkJCSAgICAgIHUxNiBzaXplKQo+Pj4gK3sKPj4+ICsJc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ZGV2KTsKPj4+ICsJaW50IHJldDsKPj4+ ICsKPj4+ICsJcmV0ID0gbWlwaV9kc2lfc2V0X21heGltdW1fcmV0dXJuX3BhY2tldF9zaXplKGRz aSwgc2l6ZSk7Cj4+PiArCWlmIChyZXQgPCAwKQo+Pj4gKwkJZGV2X2VycihjdHgtPmRldiwKPj4+ ICsJCQkiZXJyb3IgJWQgc2V0dGluZyBtYXhpbXVtIHJldHVybiBwYWNrZXQgc2l6ZSB0byAlZFxu IiwKPj4+ICsJCQlyZXQsIHNpemUpOwo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ ICtzdGF0aWMgaW50IGh4ODM2OWFfZHNpX3NldF9zZXF1ZW5jZShzdHJ1Y3QgaHg4MzY5YSAqY3R4 KQo+Pj4gK3sKPj4+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lf ZGV2aWNlKGN0eC0+ZGV2KTsKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJcmV0ID0gaHg4MzY5 YV9kc2lfc2V0X2V4dGVuc2lvbl9jb21tYW5kKGN0eCk7Cj4+PiArCWlmIChyZXQgPCAwKQo+Pj4g KwkJZ290byBvdXQ7Cj4+PiArCj4+PiArCXJldCA9IGh4ODM2OWFfZHNpX3NldF9tYXhpbXVtX3Jl dHVybl9wYWNrZXRfc2l6ZShjdHgsIDQpOwo+Pj4gKwlpZiAocmV0IDwgMCkKPj4+ICsJCWdvdG8g b3V0Owo+Pj4gKwo+Pj4gKwlyZXQgPSBoeDgzNjlhX2RzaV9wYW5lbF9pbml0KGN0eCk7Cj4+PiAr CWlmIChyZXQgPCAwKQo+Pj4gKwkJZ290byBvdXQ7Cj4+PiArCj4+PiArCXJldCA9IG1pcGlfZHNp X2Rjc19leGl0X3NsZWVwX21vZGUoZHNpKTsKPj4+ICsJaWYgKHJldCA8IDApIHsKPj4+ICsJCWRl dl9lcnIoY3R4LT5kZXYsICJmYWlsZWQgdG8gZXhpdCBzbGVlcCBtb2RlOiAlZFxuIiwgcmV0KTsK Pj4+ICsJCWdvdG8gb3V0Owo+Pj4gKwl9Cj4+PiArCj4+PiArCXJldCA9IG1pcGlfZHNpX2Rjc19z ZXRfZGlzcGxheV9vbihkc2kpOwo+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4gKwkJZGV2X2Vycihj dHgtPmRldiwgImZhaWxlZCB0byBzZXQgZGlzcGxheSBvbjogJWRcbiIsIHJldCk7Cj4+PiArCQln b3RvIG91dDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBJdCdzIG5lY2Vzc2FyeSB0 byB3YWl0IDEyMG1zZWMgYWZ0ZXIgc2VuZGluZyB0aGUgU2xlZXAgT3V0Cj4+PiArCSAqIGNvbW1h bmQgYmVmb3JlIFNsZWVwIEluIGNvbW1hbmQgY2FuIGJlIHNlbnQsIGFjY29yZGluZyB0bwo+Pj4g KwkgKiB0aGUgSFg4MzY5QSBkYXRhIHNoZWV0Lgo+Pj4gKwkgKi8KPj4+ICsJbXNsZWVwKDEyMCk7 Cj4+PiArb3V0Ogo+Pj4gKwlyZXR1cm4gcmV0Owo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50 IGh4ODM2OWFfZHNpX2Rpc2FibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCj4+PiArewo+Pj4g KwlzdHJ1Y3QgaHg4MzY5YSAqY3R4ID0gcGFuZWxfdG9faHg4MzY5YShwYW5lbCk7Cj4+PiArCj4+ PiArCXJldHVybiBoeDgzNjlhX2RzaV93cml0ZV9kaXNwbGF5X2JyaWdodG5lc3MoY3R4LAo+Pj4g KwkJCQkJCUhYODM2OUFfTUlOX0JSSUdIVE5FU1MpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg aW50IGh4ODM2OWFfZHNpX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPj4+ICt7 Cj4+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBwYW5lbF90b19oeDgzNjlhKHBhbmVsKTsKPj4+ ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpID0gdG9fbWlwaV9kc2lfZGV2aWNlKGN0eC0+ ZGV2KTsKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJcmV0ID0gbWlwaV9kc2lfZGNzX2VudGVy X3NsZWVwX21vZGUoZHNpKTsKPj4+ICsJaWYgKHJldCA8IDApIHsKPj4+ICsJCWRldl9lcnIoY3R4 LT5kZXYsICJmYWlsZWQgdG8gZW50ZXIgc2xlZXAgbW9kZTogJWRcbiIsIHJldCk7Cj4+PiArCQln b3RvIG91dDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXQgPSBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3Bs YXlfb2ZmKGRzaSk7Cj4+PiArCWlmIChyZXQgPCAwKSB7Cj4+PiArCQlkZXZfZXJyKGN0eC0+ZGV2 LCAiZmFpbGVkIHRvIHNldCBkaXNwbGF5IG9mZjogJWRcbiIsIHJldCk7Cj4+PiArCQlnb3RvIG91 dDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwkvKgo+Pj4gKwkgKiBUaGlzIGlzIHRvIGFsbG93IHRpbWUg Zm9yIHRoZSBzdXBwbHkgdm9sdGFnZXMgYW5kIGNsb2NrCj4+PiArCSAqIGNpcmN1aXRzIHRvIHN0 YWJsaXplLCBhY2NvcmRpbmcgdG8gdGhlIEhYODM2OUEgZGF0YSBzaGVldC4KPj4+ICsJICovCj4+ PiArCW1zbGVlcCg1KTsKPj4+ICtvdXQ6Cj4+PiArCXJldHVybiByZXQ7Cj4+PiArfQo+Pj4gKwo+ Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfcHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBwYW5lbF90b19oeDgzNjlhKHBh bmVsKTsKPj4+ICsKPj4+ICsJcmV0dXJuIGh4ODM2OWFfZHNpX3NldF9zZXF1ZW5jZShjdHgpOwo+ Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4ODM2OWFfZHNpX2VuYWJsZShzdHJ1Y3QgZHJt X3BhbmVsICpwYW5lbCkKPj4+ICt7Cj4+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBwYW5lbF90 b19oeDgzNjlhKHBhbmVsKTsKPj4+ICsKPj4+ICsJcmV0dXJuIGh4ODM2OWFfZHNpX3dyaXRlX2Rp c3BsYXlfYnJpZ2h0bmVzcyhjdHgsCj4+PiArCQkJCQkJSFg4MzY5QV9NQVhfQlJJR0hUTkVTUyk7 Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9nZXRfbW9kZXMoc3RydWN0IGRy bV9wYW5lbCAqcGFuZWwpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yID0gcGFuZWwtPmNvbm5lY3RvcjsKPj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IHBh bmVsLT5kcm07Cj4+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBwYW5lbF90b19oeDgzNjlhKHBh bmVsKTsKPj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4+PiArCWNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptID0gY3R4LT5wZC0+bW9kZTsKPj4+ICsKPj4+ICsJbW9k ZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShkcm0sIG0pOwo+Pj4gKwlpZiAoIW1vZGUpIHsKPj4+ICsJ CWRldl9lcnIoZHJtLT5kZXYsICJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXVAJXVcbiIsCj4+PiAr CQkJbS0+aGRpc3BsYXksIG0tPnZkaXNwbGF5LCBtLT52cmVmcmVzaCk7Cj4+PiArCQlyZXR1cm4g MDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlkcm1fbW9kZV9zZXRfbmFtZShtb2RlKTsKPj4+ICsJbW9k ZS0+dHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQ7 Cj4+PiArCj4+PiArCWNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmJwYyA9IDg7Cj4+PiArCWNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvLndpZHRoX21tID0gbW9kZS0+d2lkdGhfbW07Cj4+PiArCWNvbm5l Y3Rvci0+ZGlzcGxheV9pbmZvLmhlaWdodF9tbSA9IG1vZGUtPmhlaWdodF9tbTsKPj4+ICsKPj4+ ICsJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOwo+Pj4gKwo+Pj4gKwlyZXR1 cm4gMTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVu Y3MgaHg4MzY5YV9kc2lfZHJtX2Z1bmNzID0gewo+Pj4gKwkuZGlzYWJsZSA9IGh4ODM2OWFfZHNp X2Rpc2FibGUsCj4+PiArCS51bnByZXBhcmUgPSBoeDgzNjlhX2RzaV91bnByZXBhcmUsCj4+PiAr CS5wcmVwYXJlID0gaHg4MzY5YV9kc2lfcHJlcGFyZSwKPj4+ICsJLmVuYWJsZSA9IGh4ODM2OWFf ZHNpX2VuYWJsZSwKPj4+ICsJLmdldF9tb2RlcyA9IGh4ODM2OWFfZ2V0X21vZGVzLAo+Pj4gK307 Cj4+PiArCj4+PiArc3RhdGljIGludCBoeDgzNjlhX3Bvd2VyX29uKHN0cnVjdCBoeDgzNjlhICpj dHgpCj4+PiArewo+Pj4gKwlpbnQgcmV0Owo+Pj4gKwo+Pj4gKwlyZXQgPSByZWd1bGF0b3JfYnVs a19lbmFibGUoQVJSQVlfU0laRShjdHgtPnN1cHBsaWVzKSwgY3R4LT5zdXBwbGllcyk7Cj4+PiAr CWlmIChyZXQgPCAwKQo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ICsKPj4+ICsJbXNsZWVwKGN0eC0+ cGQtPnBvd2VyX29uX2RlbGF5KTsKPj4+ICsKPj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVz ZXRfZ3BpbywgMSk7Cj4+PiArCXVzbGVlcF9yYW5nZSg1MCwgNjApOwo+Pj4gKwlncGlvZF9zZXRf dmFsdWUoY3R4LT5yZXNldF9ncGlvLCAwKTsKPj4+ICsKPj4+ICsJbXNsZWVwKGN0eC0+cGQtPnJl c2V0X2RlbGF5KTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRp YyBpbnQgaHg4MzY5YV9wb3dlcl9vZmYoc3RydWN0IGh4ODM2OWEgKmN0eCkKPj4+ICt7Cj4+PiAr CXJldHVybiByZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUoY3R4LT5zdXBwbGllcyks Cj4+PiArCQkJCSAgICAgIGN0eC0+c3VwcGxpZXMpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMg dm9pZCBoeDgzNjlhX3ZtX3RvX3Jlc19zZWwoc3RydWN0IGh4ODM2OWEgKmN0eCkKPj4+ICt7Cj4+ PiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gY3R4LT5wZC0+bW9kZTsK Pj4+ICsKPj4+ICsJc3dpdGNoIChtb2RlLT5oZGlzcGxheSkgewo+Pj4gKwljYXNlIDQ4MDoKPj4+ ICsJCXN3aXRjaCAobW9kZS0+dmRpc3BsYXkpIHsKPj4+ICsJCWNhc2UgODY0Ogo+Pj4gKwkJCWN0 eC0+cmVzX3NlbCA9IEhYODM2OUFfUkVTXzQ4MF84NjQ7Cj4+PiArCQkJYnJlYWs7Cj4+PiArCQlj YXNlIDg1NDoKPj4+ICsJCQljdHgtPnJlc19zZWwgPSBIWDgzNjlBX1JFU180ODBfODU0Owo+Pj4g KwkJCWJyZWFrOwo+Pj4gKwkJY2FzZSA4MDA6Cj4+PiArCQkJY3R4LT5yZXNfc2VsID0gSFg4MzY5 QV9SRVNfNDgwXzgwMDsKPj4+ICsJCQlicmVhazsKPj4+ICsJCWNhc2UgNjQwOgo+Pj4gKwkJCWN0 eC0+cmVzX3NlbCA9IEhYODM2OUFfUkVTXzQ4MF82NDA7Cj4+PiArCQkJYnJlYWs7Cj4+PiArCQlj YXNlIDcyMDoKPj4+ICsJCQljdHgtPnJlc19zZWwgPSBIWDgzNjlBX1JFU180ODBfNzIwOwo+Pj4g KwkJCWJyZWFrOwo+Pj4gKwkJZGVmYXVsdDoKPj4+ICsJCQlicmVhazsKPj4+ICsJCX0KPj4+ICsJ CWJyZWFrOwo+Pj4gKwljYXNlIDM2MDoKPj4+ICsJCWlmIChtb2RlLT52ZGlzcGxheSA9PSA2NDAp Cj4+PiArCQkJY3R4LT5yZXNfc2VsID0gSFg4MzY5QV9SRVNfMzYwXzY0MDsKPj4+ICsJCWJyZWFr Owo+Pj4gKwlkZWZhdWx0Ogo+Pj4gKwkJYnJlYWs7Cj4+PiArCX0KPj4+ICt9Cj4+PiArCj4+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIHRydWx5X3RmdDQ4MDgwMF8xNl9l X21vZGUgPSB7Cj4+PiArCS5jbG9jayA9IDI2NDAwLAo+Pj4gKwkuaGRpc3BsYXkgPSA0ODAsCj4+ PiArCS5oc3luY19zdGFydCA9IDQ4MCArIDgsCj4+PiArCS5oc3luY19lbmQgPSA0ODAgKyA4ICsg OCwKPj4+ICsJLmh0b3RhbCA9IDQ4MCArIDggKyA4ICsgOCwKPj4+ICsJLnZkaXNwbGF5ID0gODAw LAo+Pj4gKwkudnN5bmNfc3RhcnQgPSA4MDAgKyA2LAo+Pj4gKwkudnN5bmNfZW5kID0gODAwICsg NiArIDYsCj4+PiArCS52dG90YWwgPSA4MDAgKyA2ICsgNiArIDYsCj4+PiArCS52cmVmcmVzaCA9 IDYwLAo+Pj4gKwkud2lkdGhfbW0gPSA0NSwKPj4+ICsJLmhlaWdodF9tbSA9IDc2LAo+Pj4gK307 Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBoeDgzNjlhX3BhbmVsX2Rlc2MgdHJ1bHlf dGZ0NDgwODAwXzE2X2VfZHNpID0gewo+Pj4gKwkubW9kZSA9ICZ0cnVseV90ZnQ0ODA4MDBfMTZf ZV9tb2RlLAo+Pj4gKwkucG93ZXJfb25fZGVsYXkgPSAxMCwKPj4+ICsJLnJlc2V0X2RlbGF5ID0g MTAsCj4+PiArCS5kc2lfbGFuZXMgPSAyLAo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBvZl9kZXZpY2VfaWQgaHg4MzY5YV9kc2lfb2ZfbWF0Y2hbXSA9IHsKPj4+ICsJewo+ Pj4gKwkJLmNvbXBhdGlibGUgPSAidHJ1bHksdGZ0NDgwODAwLTE2LWUtZHNpIiwKPj4+ICsJCS5k YXRhID0gJnRydWx5X3RmdDQ4MDgwMF8xNl9lX2RzaSwKPj4+ICsJfSwgewo+Pj4gKwkJLyogc2Vu dGluZWwgKi8KPj4+ICsJfSwKPj4+ICt9Owo+Pj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGh4 ODM2OWFfZHNpX29mX21hdGNoKTsKPj4+ICsKPj4+ICtzdGF0aWMgaW50IGh4ODM2OWFfZHNpX3By b2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBkZXZp Y2UgKmRldiA9ICZkc2ktPmRldjsKPj4+ICsJY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqb2Zf aWQgPQo+Pj4gKwkJCW9mX21hdGNoX2RldmljZShoeDgzNjlhX2RzaV9vZl9tYXRjaCwgZGV2KTsK Pj4+ICsJc3RydWN0IGh4ODM2OWEgKmN0eDsKPj4+ICsJaW50IHJldCwgaTsKPj4+ICsKPj4+ICsJ Y3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKPj4+ICsJ aWYgKCFjdHgpCj4+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4+ICsKPj4+ICsJY3R4LT5kZXYgPSBk ZXY7Cj4+PiArCj4+PiArCWlmIChvZl9pZCkgewo+Pj4gKwkJY3R4LT5wZCA9IG9mX2lkLT5kYXRh Owo+Pj4gKwl9IGVsc2Ugewo+Pj4gKwkJZGV2X2VycihkZXYsICJjYW5ub3QgZmluZCBjb21wYXRp YmxlIGRldmljZVxuIik7Cj4+PiArCQlyZXR1cm4gLUVOT0RFVjsKPj4+ICsJfQo+Pj4gKwo+Pj4g KwloeDgzNjlhX3ZtX3RvX3Jlc19zZWwoY3R4KTsKPj4+ICsKPj4+ICsJY3R4LT5zdXBwbGllc1sw XS5zdXBwbHkgPSAidmRkMSI7Cj4+PiArCWN0eC0+c3VwcGxpZXNbMV0uc3VwcGx5ID0gInZkZDIi Owo+Pj4gKwljdHgtPnN1cHBsaWVzWzJdLnN1cHBseSA9ICJ2ZGQzIjsKPj4+ICsJY3R4LT5zdXBw bGllc1szXS5zdXBwbHkgPSAiZHNpLXZjYyI7Cj4+PiArCWN0eC0+c3VwcGxpZXNbNF0uc3VwcGx5 ID0gInZwcCI7Cj4+PiArCXJldCA9IGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KGRldiwgQVJSQVlf U0laRShjdHgtPnN1cHBsaWVzKSwKPj4+ICsJCQkJICAgICAgY3R4LT5zdXBwbGllcyk7Cj4+PiAr CWlmIChyZXQgPCAwKSB7Cj4+PiArCQlkZXZfaW5mbyhkZXYsICJmYWlsZWQgdG8gZ2V0IHJlZ3Vs YXRvcnM6ICVkXG4iLCByZXQpOwo+Pj4gKwkJcmV0dXJuIHJldDsKPj4+ICsJfQo+Pj4gKwo+Pj4g KwljdHgtPnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldChkZXYsICJyZXNldCIsIEdQSU9EX09V VF9MT1cpOwo+Pj4gKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXRfZ3BpbykpIHsKPj4+ICsJCWRldl9p bmZvKGRldiwgImNhbm5vdCBnZXQgcmVzZXQtZ3Bpb3MgJWxkXG4iLAo+Pj4gKwkJCSBQVFJfRVJS KGN0eC0+cmVzZXRfZ3BpbykpOwo+Pj4gKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldF9ncGlv KTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4+PiArCQlj dHgtPmJzX2dwaW9baV0gPSBkZXZtX2dwaW9kX2dldF9pbmRleChkZXYsICJicyIsIGksCj4+PiAr CQkJCQkJCUdQSU9EX09VVF9ISUdIKTsKPj4+ICsJCWlmICghSVNfRVJSX09SX05VTEwoY3R4LT5i c19ncGlvW2ldKSkKPj4+ICsJCQlkZXZfZGJnKGRldiwgImJzJWQtZ3BpbyBpcyBjb25maWd1cmVk XG4iLCBpKTsKPj4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIHByb2JlIG9uIGVy cm9yIGR1cmluZyBnZXR0aW5nIGdwaW9zPwo+IFRoZXJlIGNvdWxkIGJlIGhvbGVzIGluIHRoZSBn cGlvIGxpc3QgYXMgbWVudGlvbmVkIGluIFsxXS4KPiBGb3IgdGhpcyBwYW5lbCwgdGhlIHBvdGVu dGlhbCBob2xlcyBtZWFuIHRoYXQgdGhlIHJlbGV2YW50Cj4gZ3Bpb3MgYXJlIG5vdCBjb250cm9s bGVkIGJ5IHRoZSBkcml2ZXIgYnV0IG9ubHkgYnkgdGhlCj4gaGFyZHdhcmUuCj4KPiBQZXJoYXBz LCBJIG5lZWQgdG8gaGFuZGxlIHRoZSBlcnJvciBjYXNlLgo+IEkgdHJpZWQgdG8gaW1wbGVtZW50 IGl0IGluIHRoZSBmb2xsb3dpbmcgd2F5Lgo+Cj4gY3R4LT5ic19ncGlvW2ldID0gZGV2bV9ncGlv ZF9nZXRfaW5kZXgoZGV2LCAiYnMiLCBpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHUElPRF9PVVRfSElHSCk7Cj4gaWYgKCFJU19FUlJfT1JfTlVMTChjdHgtPmJz X2dwaW9baV0pKSB7Cj4gICAgICBkZXZfZGJnKGRldiwgImJzJWQtZ3BpbyBpcyBjb25maWd1cmVk XG4iLCBpKTsKPiB9IGVsc2UgaWYgKElTX0VSUihjdHgtPmJzX2dwaW9baV0pKSB7Cj4gICAgICBk ZXZfaW5mbyhkZXYsICJmYWlsZWQgdG8gZ2V0IGJzJWQtZ3Bpb1xuIiwgaSk7Cj4gICAgICByZXR1 cm4gUFRSX0VSUihjdHgtPmJzX2dwaW9baV0pOwo+IH0KPgo+IEJ1dCwgSSBnZXQgdGhpcyBpbiBk bWVzZy4gIEFueSBpZGVhPwo+IFsgICAgMS42MjU2MzRdIHBhbmVsLWh4ODM2OWEtZHNpIDIxZTAw MDAubWlwaS4wOiBmYWlsZWQgdG8gZ2V0IGJzMC1ncGlvCj4gWyAgICAxLjYzMzA2MF0gcGFuZWwt aHg4MzY5YS1kc2k6IHByb2JlIG9mIDIxZTAwMDAubWlwaS4wIGZhaWxlZCB3aXRoIAo+IGVycm9y IC0yCgpJIGd1ZXNzIHlvdSBzaG91bGQgdXNlIGRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFs IC4KClJlZ2FyZHMKQW5kcnplagoKPgo+IFsxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu ZGluZ3MvZ3Bpby9ncGlvLnR4dC4KPgo+IFJlZ2FyZHMsCj4KPiBMaXUgWWluZwo+Cj4+IEFmdGVy IGFkZHJlc3NpbmcgYWJvdmUgY29tbWVudHMgeW91IGNhbiBhZGQ6Cj4+Cj4+IFJldmlld2VkLWJ5 OiBBbmRyemVqIEhhamRhIDxhLmhhamRhQHNhbXN1bmcuY29tPgo+Pgo+Pgo+Pgo+PiBSZWdhcmRz Cj4+IEFuZHJ6ZWoKPj4KPj4KPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXQgPSBoeDgzNjlhX3Bvd2Vy X29uKGN0eCk7Cj4+PiArCWlmIChyZXQgPCAwKSB7Cj4+PiArCQlkZXZfZXJyKGRldiwgImNhbm5v dCBwb3dlciBvblxuIik7Cj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4gKwl9Cj4+PiArCj4+PiArCWRy bV9wYW5lbF9pbml0KCZjdHgtPnBhbmVsKTsKPj4+ICsJY3R4LT5wYW5lbC5kZXYgPSBkZXY7Cj4+ PiArCWN0eC0+cGFuZWwuZnVuY3MgPSAmaHg4MzY5YV9kc2lfZHJtX2Z1bmNzOwo+Pj4gKwo+Pj4g KwlyZXQgPSBkcm1fcGFuZWxfYWRkKCZjdHgtPnBhbmVsKTsKPj4+ICsJaWYgKHJldCA8IDApCj4+ PiArCQlyZXR1cm4gcmV0Owo+Pj4gKwo+Pj4gKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0 eCk7Cj4+PiArCj4+PiArCWRzaS0+bGFuZXMgPSBjdHgtPnBkLT5kc2lfbGFuZXM7Cj4+PiArCWRz aS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1UX1JHQjg4ODsKPj4+ICsJZHNpLT5tb2RlX2ZsYWdzID0g TUlQSV9EU0lfTU9ERV9WSURFTyB8Cj4+PiArCQkJICBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNU IHwKPj4+ICsJCQkgIE1JUElfRFNJX01PREVfVklERU9fU1lOQ19QVUxTRTsKPj4+ICsJcmV0ID0g bWlwaV9kc2lfYXR0YWNoKGRzaSk7Cj4+PiArCWlmIChyZXQgPCAwKQo+Pj4gKwkJZHJtX3BhbmVs X3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4+PiArCj4+PiArCXJldHVybiByZXQ7Cj4+PiArfQo+Pj4g Kwo+Pj4gK3N0YXRpYyBpbnQgaHg4MzY5YV9kc2lfcmVtb3ZlKHN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UgKmRzaSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBoeDgzNjlhICpjdHggPSBtaXBpX2RzaV9nZXRf ZHJ2ZGF0YShkc2kpOwo+Pj4gKwo+Pj4gKwltaXBpX2RzaV9kZXRhY2goZHNpKTsKPj4+ICsJZHJt X3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7Cj4+PiArCXJldHVybiBoeDgzNjlhX3Bvd2VyX29m ZihjdHgpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBo eDgzNjlhX2RzaV9kcml2ZXIgPSB7Cj4+PiArCS5wcm9iZSA9IGh4ODM2OWFfZHNpX3Byb2JlLAo+ Pj4gKwkucmVtb3ZlID0gaHg4MzY5YV9kc2lfcmVtb3ZlLAo+Pj4gKwkuZHJpdmVyID0gewo+Pj4g KwkJLm5hbWUgPSAicGFuZWwtaHg4MzY5YS1kc2kiLAo+Pj4gKwkJLm9mX21hdGNoX3RhYmxlID0g aHg4MzY5YV9kc2lfb2ZfbWF0Y2gsCj4+PiArCX0sCj4+PiArfTsKPj4+ICttb2R1bGVfbWlwaV9k c2lfZHJpdmVyKGh4ODM2OWFfZHNpX2RyaXZlcik7Cj4+PiArCj4+PiArTU9EVUxFX0RFU0NSSVBU SU9OKCJIaW1heCBIWDgzNjlBIHBhbmVsIGRyaXZlciIpOwo+Pj4gK01PRFVMRV9BVVRIT1IoIkxp dSBZaW5nIDxZaW5nLkxpdUBmcmVlc2NhbGUuY29tPiIpOwo+Pj4gK01PRFVMRV9MSUNFTlNFKCJH UEwgdjIiKTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==