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 Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A8D1CC07548 for ; Wed, 15 Nov 2023 03:36:47 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 0D57E8642A; Wed, 15 Nov 2023 04:36:46 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=starfivetech.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id DE43986F93; Wed, 15 Nov 2023 04:36:44 +0100 (CET) Received: from ex01.ufhost.com (ex01.ufhost.com [61.152.239.75]) by phobos.denx.de (Postfix) with ESMTP id 0CB448641F for ; Wed, 15 Nov 2023 04:36:40 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=starfivetech.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=kuanlim.lee@starfivetech.com Received: from EXMBX166.cuchost.com (unknown [175.102.18.54]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "EXMBX166", Issuer "EXMBX166" (not verified)) by ex01.ufhost.com (Postfix) with ESMTP id 2161724E280; Wed, 15 Nov 2023 11:36:37 +0800 (CST) Received: from EXMBX064.cuchost.com (172.16.6.64) by EXMBX166.cuchost.com (172.16.6.76) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Wed, 15 Nov 2023 11:36:37 +0800 Received: from EXMBX066.cuchost.com (172.16.7.66) by EXMBX064.cuchost.com (172.16.6.64) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Wed, 15 Nov 2023 11:36:36 +0800 Received: from EXMBX066.cuchost.com ([fe80::5947:9245:907e:339f]) by EXMBX066.cuchost.com ([fe80::5947:9245:907e:339f%17]) with mapi id 15.00.1497.044; Wed, 15 Nov 2023 11:36:36 +0800 From: KuanLim.Lee To: Jaehoon Chung , "u-boot@lists.denx.de" CC: Yuklin Soo , WeiLiang Lim , Kuan Lim Lee , "cpgs@samsung.com" Subject: RE: [PATCH] mmc: sdhci-cadence: Add support for Cadence sdmmc v6 Thread-Topic: [PATCH] mmc: sdhci-cadence: Add support for Cadence sdmmc v6 Thread-Index: AQHZ9cqKI7p0yL84mEWNYHgjCJAB3LBkQI0AgApOhvCADG6kAA== Date: Wed, 15 Nov 2023 03:36:36 +0000 Message-ID: <4a9aa7b7ce6243b68623ef4ee1bca822@EXMBX066.cuchost.com> References: <20231003072320.2008-1-kuanlim.lee@starfivetech.com> <1891546521.01698969782305.JavaMail.epsvc@epcpadp4> <2e47818072d74a8cac1c55888543a947@EXMBX066.cuchost.com> In-Reply-To: <2e47818072d74a8cac1c55888543a947@EXMBX066.cuchost.com> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [202.188.176.82] x-yovoleruleagent: yovoleflag Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean SGkgSmFlaG9vbiwNCklmIHRoZXJlIGFyZSBubyBtb3JlIGZlZWRiYWNrLCBJIHdpbGwgc2VuZCBv dXQgdmVyc2lvbjIgcGF0Y2ggc29vbi4NCg0KT24gMTEvNy8yMyAxNDoyNCwgS3VhbiBMaW0gTGVl IHdyb3RlOg0KPiANCj4gSGkgSmFlaG9vbiwNCj4gDQo+IE9uIDExLzEvMjMgMDg6MjAsIEphZWhv b24gQ2h1bmcgd3JvdGU6DQo+ID4gRnJvbTogSmFlaG9vbiBDaHVuZyA8amg4MC5jaHVuZ0BzYW1z dW5nLmNvbT4gSGkNCj4gPg0KPiA+IE9uIDEwLzMvMjMgMTY6MjIsIEt1YW4gTGltIExlZSB3cm90 ZToNCj4gPiA+IEZyb206IEt1YW4gTGltIExlZSA8a3VhbmxpbS5sZWVAbGludXguc3RhcmZpdmV0 ZWNoLmNvbT4NCj4gPiA+DQo+ID4gPiBDYWRlbmNlIFNETU1DIHY2IGNvbnRyb2xsZXIgaGFzIGEg bG90IG9mIGNoYW5nZXMgb24gaW5pdGlhbGl6ZQ0KPiA+ID4gY29tcGFyZWQgdG8gdjQgY29udHJv bGxlci4gUEhZIGlzIG5lZWRlZCBieSB2NiBjb250cm9sbGVyLg0KPiA+ID4NCj4gPiA+IFNpZ25l ZC1vZmYtYnk6IEt1YW4gTGltIExlZSA8a3VhbmxpbS5sZWVAc3RhcmZpdmV0ZWNoLmNvbT4NCj4g PiA+IFJldmlld2VkLWJ5OiBBbGV4IFNvbyA8eXVrbGluLnNvb0BzdGFyZml2ZXRlY2guY29tPg0K PiA+ID4gUmV2aWV3ZWQtYnk6IFdlaSBMaWFuZyBMaW0gPHdlaWxpYW5nLmxpbUBzdGFyZml2ZXRl Y2guY29tPg0KPiA+DQo+ID4gSSBkaWRuJ3Qgc2VlIHRoZWlyIFJldmlld2VkLWJ5IHRhZyBpbiBt YWlsaW5nIGxpc3QuDQo+IFRoZXkgYXJlIG15IGNvbGxlYWd1ZXMgd2hvIGNvbGxhYm9yYXRlZCBk ZXZlbG9wIGNvZGUgd2l0aCBtZS4NCj4gSSB0aGluayBJIHNob3VsZCB0aGVtIGluIFNpZ25lZC1v ZmYtYnksIGFuZCBwdXQgeW91ciBuYW1lIGluIFJldmlld2VkLWJ5DQo+IA0KPiA+DQo+ID4gPiAt LS0NCj4gPiA+ICBkcml2ZXJzL21tYy9LY29uZmlnICAgICAgICAgICAgICB8ICAxMyArKw0KPiA+ ID4gIGRyaXZlcnMvbW1jL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsNCj4gPiA+ICBkcml2 ZXJzL21tYy9zZGhjaS1jYWRlbmNlLmMgICAgICB8ICA2MyArKy0tLS0tDQo+ID4gPiAgZHJpdmVy cy9tbWMvc2RoY2ktY2FkZW5jZS5oICAgICAgfCAgNjggKysrKysrKw0KPiA+ID4gIGRyaXZlcnMv bW1jL3NkaGNpLWNhZGVuY2U2LXBoeS5jIHwgMzAyDQo+ID4gPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQo+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAzOTYgaW5zZXJ0aW9ucygrKSwg NTEgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZQ0KPiA+ID4gMTAwNjQ0IGRyaXZlcnMvbW1jL3Nk aGNpLWNhZGVuY2UuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gPiBkcml2ZXJzL21tYy9zZGhj aS1jYWRlbmNlNi1waHkuYw0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9L Y29uZmlnIGIvZHJpdmVycy9tbWMvS2NvbmZpZyBpbmRleA0KPiA+ID4gZGUwMWI5Njg3Yi4uY2Vj ODgxZDg2MiAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvbW1jL0tjb25maWcNCj4gPiA+ICsr KyBiL2RyaXZlcnMvbW1jL0tjb25maWcNCj4gPiA+IEBAIC01NzMsNiArNTczLDE5IEBAIGNvbmZp ZyBNTUNfU0RIQ0lfQ0FERU5DRQ0KPiA+ID4NCj4gPiA+ICAJICBJZiB1bnN1cmUsIHNheSBOLg0K PiA+ID4NCj4gPiA+ICtjb25maWcgTU1DX1NESENJX0NBREVOQ0VfVjYNCj4gPiA+ICsJYm9vbCAi U0RIQ0kgc3VwcG9ydCBmb3IgdGhlIENhZGVuY2UgU0QvU0RJTy9lTU1DIGNvbnRyb2xsZXIgJg0K PiA+IGRyaXZlciB2ZXJzaW9uIDYiDQo+ID4gPiArCWRlcGVuZHMgb24gQkxLICYmIERNX01NQw0K PiA+ID4gKwlkZXBlbmRzIG9uIE1NQ19TREhDSQ0KPiA+ID4gKwlkZXBlbmRzIG9uIE9GX0NPTlRS T0wNCj4gPiA+ICsJc2VsZWN0IE1NQ19TREhDSV9DQURFTkNFDQo+ID4gPiArCWhlbHANCj4gPiA+ ICsJICBUaGlzIHNlbGVjdHMgdGhlIENhZGVuY2UgU0QvU0RJTy9lTU1DIGRyaXZlciB2ZXJzaW9u IDYuDQo+ID4gPiArDQo+ID4gPiArCSAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhp cyBpbnRlcmZhY2UsIHNheSBZIGhlcmUuDQo+ID4gPiArDQo+ID4gPiArCSAgSWYgdW5zdXJlLCBz YXkgTi4NCj4gPiA+ICsNCj4gPiA+ICBjb25maWcgTU1DX1NESENJX0FNNjU0DQo+ID4gPiAgCWJv b2wgIlNESENJIENvbnRyb2xsZXIgb24gVEkncyBBbTY1NCBkZXZpY2VzIg0KPiA+ID4gIAlkZXBl bmRzIG9uIEFSQ0hfSzMNCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9NYWtlZmlsZSBi L2RyaXZlcnMvbW1jL01ha2VmaWxlIGluZGV4DQo+ID4gPiAyYzY1YzQ3NjVhLi5jZGNjZTU1Yjhi IDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9tbWMvTWFrZWZpbGUNCj4gPiA+ICsrKyBiL2Ry aXZlcnMvbW1jL01ha2VmaWxlDQo+ID4gPiBAQCAtNjEsNiArNjEsNyBAQCBvYmotJChDT05GSUdf TU1DX1NESENJX0FUTUVMKQkJKz0NCj4gPiBhdG1lbF9zZGhjaS5vDQo+ID4gPiAgb2JqLSQoQ09O RklHX01NQ19TREhDSV9CQ00yODM1KQkJKz0gYmNtMjgzNV9zZGhjaS5vDQo+ID4gPiAgb2JqLSQo Q09ORklHX01NQ19TREhDSV9CQ01TVEIpCQkrPSBiY21zdGJfc2RoY2kubw0KPiA+ID4gIG9iai0k KENPTkZJR19NTUNfU0RIQ0lfQ0FERU5DRSkJCSs9IHNkaGNpLWNhZGVuY2Uubw0KPiA+ID4gK29i ai0kKENPTkZJR19NTUNfU0RIQ0lfQ0FERU5DRV9WNikJKz0gc2RoY2ktY2FkZW5jZTYtcGh5Lm8N Cj4gPiA+ICBvYmotJChDT05GSUdfTU1DX1NESENJX0FNNjU0KQkJKz0gYW02NTRfc2RoY2kubw0K PiA+ID4gIG9iai0kKENPTkZJR19NTUNfU0RIQ0lfSVBST0MpCQkrPSBpcHJvY19zZGhjaS5vDQo+ ID4gPiAgb2JqLSQoQ09ORklHX01NQ19TREhDSV9LT05BKQkJKz0ga29uYV9zZGhjaS5vDQo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvc2RoY2ktY2FkZW5jZS5jDQo+ID4gPiBiL2RyaXZl cnMvbW1jL3NkaGNpLWNhZGVuY2UuYyBpbmRleCAzMjdhMDVhZDExLi5kN2EyNzBlNzRjIDEwMDY0 NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9tbWMvc2RoY2ktY2FkZW5jZS5jDQo+ID4gPiArKysgYi9k cml2ZXJzL21tYy9zZGhjaS1jYWRlbmNlLmMNCj4gPiA+IEBAIC0xNyw1NiArMTcsNyBAQA0KPiA+ ID4gICNpbmNsdWRlIDxsaW51eC9saWJmZHQuaD4NCj4gPiA+ICAjaW5jbHVkZSA8bW1jLmg+DQo+ ID4gPiAgI2luY2x1ZGUgPHNkaGNpLmg+DQo+ID4gPiAtDQo+ID4gPiAtLyogSFJTIC0gSG9zdCBS ZWdpc3RlciBTZXQgKHNwZWNpZmljIHRvIENhZGVuY2UpICovDQo+ID4gPiAtI2RlZmluZSBTREhD SV9DRE5TX0hSUzA0CQkweDEwCQkvKiBQSFkgYWNjZXNzDQo+IHBvcnQgKi8NCj4gPiA+IC0jZGVm aW5lICAgU0RIQ0lfQ0ROU19IUlMwNF9BQ0sJCQlCSVQoMjYpDQo+ID4gPiAtI2RlZmluZSAgIFNE SENJX0NETlNfSFJTMDRfUkQJCQlCSVQoMjUpDQo+ID4gPiAtI2RlZmluZSAgIFNESENJX0NETlNf SFJTMDRfV1IJCQlCSVQoMjQpDQo+ID4gPiAtI2RlZmluZSAgIFNESENJX0NETlNfSFJTMDRfUkRB VEEJCUdFTk1BU0soMjMsIDE2KQ0KPiA+ID4gLSNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA0X1dE QVRBCQlHRU5NQVNLKDE1LCA4KQ0KPiA+ID4gLSNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA0X0FE RFIJCQlHRU5NQVNLKDUsDQo+IDApDQo+ID4gPiAtDQo+ID4gPiAtI2RlZmluZSBTREhDSV9DRE5T X0hSUzA2CQkweDE4CQkvKiBlTU1DDQo+IGNvbnRyb2wgKi8NCj4gPiA+IC0jZGVmaW5lICAgU0RI Q0lfQ0ROU19IUlMwNl9UVU5FX1VQCQlCSVQoMTUpDQo+ID4gPiAtI2RlZmluZSAgIFNESENJX0NE TlNfSFJTMDZfVFVORQkJCUdFTk1BU0soMTMsDQo+IDgpDQo+ID4gPiAtI2RlZmluZSAgIFNESENJ X0NETlNfSFJTMDZfTU9ERQkJCUdFTk1BU0soMiwNCj4gMCkNCj4gPiA+IC0jZGVmaW5lICAgU0RI Q0lfQ0ROU19IUlMwNl9NT0RFX1NECQkweDANCj4gPiA+IC0jZGVmaW5lICAgU0RIQ0lfQ0ROU19I UlMwNl9NT0RFX01NQ19TRFIJCTB4Mg0KPiA+ID4gLSNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA2 X01PREVfTU1DX0REUgkJMHgzDQo+ID4gPiAtI2RlZmluZSAgIFNESENJX0NETlNfSFJTMDZfTU9E RV9NTUNfSFMyMDAJMHg0DQo+ID4gPiAtI2RlZmluZSAgIFNESENJX0NETlNfSFJTMDZfTU9ERV9N TUNfSFM0MDAJMHg1DQo+ID4gPiAtI2RlZmluZSAgIFNESENJX0NETlNfSFJTMDZfTU9ERV9NTUNf SFM0MDBFUwkweDYNCj4gPiA+IC0NCj4gPiA+IC0vKiBTUlMgLSBTbG90IFJlZ2lzdGVyIFNldCAo U0RIQ0ktY29tcGF0aWJsZSkgKi8NCj4gPiA+IC0jZGVmaW5lIFNESENJX0NETlNfU1JTX0JBU0UJ CTB4MjAwDQo+ID4gPiAtDQo+ID4gPiAtLyogUEhZICovDQo+ID4gPiAtI2RlZmluZSBTREhDSV9D RE5TX1BIWV9ETFlfU0RfSFMJMHgwMA0KPiA+ID4gLSNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZ X1NEX0RFRkFVTFQJMHgwMQ0KPiA+ID4gLSNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZX1VIU19T RFIxMgkweDAyDQo+ID4gPiAtI2RlZmluZSBTREhDSV9DRE5TX1BIWV9ETFlfVUhTX1NEUjI1CTB4 MDMNCj4gPiA+IC0jZGVmaW5lIFNESENJX0NETlNfUEhZX0RMWV9VSFNfU0RSNTAJMHgwNA0KPiA+ ID4gLSNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZX1VIU19ERFI1MAkweDA1DQo+ID4gPiAtI2Rl ZmluZSBTREhDSV9DRE5TX1BIWV9ETFlfRU1NQ19MRUdBQ1kJMHgwNg0KPiA+ID4gLSNkZWZpbmUg U0RIQ0lfQ0ROU19QSFlfRExZX0VNTUNfU0RSCTB4MDcNCj4gPiA+IC0jZGVmaW5lIFNESENJX0NE TlNfUEhZX0RMWV9FTU1DX0REUgkweDA4DQo+ID4gPiAtI2RlZmluZSBTREhDSV9DRE5TX1BIWV9E TFlfU0RDTEsJMHgwYg0KPiA+ID4gLSNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZX0hTTU1DCTB4 MGMNCj4gPiA+IC0jZGVmaW5lIFNESENJX0NETlNfUEhZX0RMWV9TVFJPQkUJMHgwZA0KPiA+ID4g LQ0KPiA+ID4gLS8qDQo+ID4gPiAtICogVGhlIHR1bmVkIHZhbCByZWdpc3RlciBpcyA2IGJpdC13 aWRlLCBidXQgbm90IHRoZSB3aG9sZSBvZiB0aGUNCj4gPiA+IHJhbmdlIGlzDQo+ID4gPiAtICog YXZhaWxhYmxlLiAgVGhlIHJhbmdlIDAtNDIgc2VlbXMgdG8gYmUgYXZhaWxhYmxlICh0aGVuIDQz IHdyYXBzDQo+ID4gPiBhcm91bmQgdG8gMCkNCj4gPiA+IC0gKiBidXQgSSBhbSBub3QgcXVpdGUg c3VyZSBpZiBpdCBpcyBvZmZpY2lhbC4gIFVzZSBvbmx5IDAgdG8gMzkgZm9yIHNhZmV0eS4NCj4g PiA+IC0gKi8NCj4gPiA+IC0jZGVmaW5lIFNESENJX0NETlNfTUFYX1RVTklOR19MT09QCTQwDQo+ ID4gPiAtDQo+ID4gPiAtc3RydWN0IHNkaGNpX2NkbnNfcGxhdCB7DQo+ID4gPiAtCXN0cnVjdCBt bWNfY29uZmlnIGNmZzsNCj4gPiA+IC0Jc3RydWN0IG1tYyBtbWM7DQo+ID4gPiAtCXZvaWQgX19p b21lbSAqaHJzX2FkZHI7DQo+ID4gPiAtfTsNCj4gPiA+ICsjaW5jbHVkZSAic2RoY2ktY2FkZW5j ZS5oIg0KPiA+ID4NCj4gPiA+ICBzdHJ1Y3Qgc2RoY2lfY2Ruc19waHlfY2ZnIHsNCj4gPiA+ICAJ Y29uc3QgY2hhciAqcHJvcGVydHk7DQo+ID4gPiBAQCAtMTEyLDggKzYzLDExIEBAIHN0YXRpYyBp bnQgc2RoY2lfY2Ruc193cml0ZV9waHlfcmVnKHN0cnVjdA0KPiA+ID4gc2RoY2lfY2Ruc19wbGF0 ICpwbGF0LCAgfQ0KPiA+ID4NCj4gPiA+ICBzdGF0aWMgaW50IHNkaGNpX2NkbnNfcGh5X2luaXQo c3RydWN0IHNkaGNpX2NkbnNfcGxhdCAqcGxhdCwNCj4gPiA+IC0JCQkJY29uc3Qgdm9pZCAqZmR0 LCBpbnQgbm9kZW9mZnNldCkNCj4gPiA+ICsJCQkgICAgICAgY29uc3Qgdm9pZCAqZmR0LCBpbnQg bm9kZW9mZnNldCkNCj4gPg0KPiA+IElzIHRoZXJlIGFueSByZWFzb24gdG8gdG91Y2ggdGhpcz8N Cj4gSSB0aG91Z2h0IHRoZSBzcGFjZSBrZXkgaXMgbWlzYWxpZ25lZC4gSSB0aGluayBJIGJldHRl ciBub3QgdG8gdG91Y2ggaXQuDQo+ID4NCj4gPg0KPiA+ID4gIHsNCj4gPiA+ICsJaWYgKElTX0VO QUJMRUQoQ09ORklHX01NQ19TREhDSV9DQURFTkNFX1Y2KSkNCj4gPiA+ICsJCXJldHVybiBzZGhj aV9jZG5zNl9waHlfaW5pdChwbGF0LA0KPiA+IFNESENJX0NETlNfSFJTMDZfTU9ERV9TRCk7DQo+ ID4gPiArDQo+ID4gPiAgCWNvbnN0IGZkdDMyX3QgKnByb3A7DQo+ID4gPiAgCWludCByZXQsIGk7 DQo+ID4gPg0KPiA+ID4gQEAgLTE2Myw2ICsxMTcsOSBAQCBzdGF0aWMgdm9pZCBzZGhjaV9jZG5z X3NldF9jb250cm9sX3JlZyhzdHJ1Y3QNCj4gPiBzZGhjaV9ob3N0ICpob3N0KQ0KPiA+ID4gIAl0 bXAgJj0gflNESENJX0NETlNfSFJTMDZfTU9ERTsNCj4gPiA+ICAJdG1wIHw9IEZJRUxEX1BSRVAo U0RIQ0lfQ0ROU19IUlMwNl9NT0RFLCBtb2RlKTsNCj4gPiA+ICAJd3JpdGVsKHRtcCwgcGxhdC0+ aHJzX2FkZHIgKyBTREhDSV9DRE5TX0hSUzA2KTsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKElTX0VO QUJMRUQoQ09ORklHX01NQ19TREhDSV9DQURFTkNFX1Y2KSkNCj4gPiA+ICsJCXNkaGNpX2NkbnM2 X3BoeV9pbml0KHBsYXQsIG1vZGUpOw0KPiA+ID4gIH0NCj4gPiA+DQo+ID4gPiAgc3RhdGljIGNv bnN0IHN0cnVjdCBzZGhjaV9vcHMgc2RoY2lfY2Ruc19vcHMgPSB7IEBAIC0xNzIsNiArMTI5LDkN Cj4gPiA+IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RoY2lfb3BzIHNkaGNpX2NkbnNfb3BzID0g eyAgc3RhdGljIGludA0KPiA+ID4gc2RoY2lfY2Ruc19zZXRfdHVuZV92YWwoc3RydWN0IHNkaGNp X2NkbnNfcGxhdCAqcGxhdCwNCj4gPiA+ICAJCQkJICAgdW5zaWduZWQgaW50IHZhbCkNCj4gPiA+ ICB7DQo+ID4gPiArCWlmIChJU19FTkFCTEVEKENPTkZJR19NTUNfU0RIQ0lfQ0FERU5DRV9WNikp DQo+ID4gPiArCQlyZXR1cm4gc2RoY2lfY2RuczZfc2V0X3R1bmVfdmFsKHBsYXQsIHZhbCk7DQo+ ID4gPiArDQo+ID4gPiAgCXZvaWQgX19pb21lbSAqcmVnID0gcGxhdC0+aHJzX2FkZHIgKyBTREhD SV9DRE5TX0hSUzA2Ow0KPiA+ID4gIAl1MzIgdG1wOw0KPiA+ID4gIAlpbnQgaSwgcmV0Ow0KPiA+ ID4gQEAgLTMwMSw2ICsyNjEsNyBAQCBzdGF0aWMgaW50IHNkaGNpX2NkbnNfcHJvYmUoc3RydWN0 IHVkZXZpY2UgKmRldikNCj4gPiA+IHN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRldmljZV9pZCBzZGhj aV9jZG5zX21hdGNoW10gPSB7DQo+ID4gPiAgCXsgLmNvbXBhdGlibGUgPSAic29jaW9uZXh0LHVu aXBoaWVyLXNkNGhjIiB9LA0KPiA+ID4gIAl7IC5jb21wYXRpYmxlID0gImNkbnMsc2Q0aGMiIH0s DQo+ID4gPiArCXsgLmNvbXBhdGlibGUgPSAiY2RucyxzZDZoYyIgfSwNCj4gPiA+ICAJeyAvKiBz ZW50aW5lbCAqLyB9DQo+ID4gPiAgfTsNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tbWMvc2RoY2ktY2FkZW5jZS5oDQo+ID4gPiBiL2RyaXZlcnMvbW1jL3NkaGNpLWNhZGVuY2Uu aCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+ID4gMDAwMDAwMDAwMC4uMmM0MmNmZjJm Mw0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gKysrIGIvZHJpdmVycy9tbWMvc2RoY2ktY2Fk ZW5jZS5oDQo+ID4gPiBAQCAtMCwwICsxLDY4IEBADQo+ID4gPiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPiA+ID4gKy8qDQo+ID4gPiArICogQ29weXJpZ2h0 IChDKSAyMDIyIFN0YXJmaXZlLg0KPiA+ID4gKyAqICAgQXV0aG9yOiBLdWFuIExpbSBMZWUgPGt1 YW5saW0ubGVlQHN0YXJmaXZldGVjaC5jb20+DQo+ID4NCj4gPg0KPiA+IERvZXMgaXQgcmlnaHQg Q29weXJpZ2h0IGFuZCBhdXRob3I/IHRoZSBiZWxvdyBjb2RlcyBhcmUgdGFrZW4gZnJvbQ0KPiA+ IHNkaGNpLSBjYWRlbmNlLmMuDQo+IFNvbWUgcGFydHMgb2YgI2RlZmluZSBhcmUgdGFrZW4gZnJv bSBzZGNoaS1jYWRlbmNlLmMsIHNvbWUgcGFydHMgb2YgI2RlZmluZQ0KPiBhcmUgd3JpdHRlbiBi eSBtZS4gSSB0aGluayBJIHN0aWxsIGJldHRlciBwdXQgYmFjayB0aGUgb3JpZ2luYWwgQ29weXJp Z2h0IGFuZA0KPiBhdXRob3IuDQo+IA0KPiA+DQo+ID4gPiArICovDQo+ID4gPiArDQo+ID4gPiAr I2lmbmRlZiBTREhDSV9DQURFTkNFX0hfDQo+ID4gPiArI2RlZmluZSBTREhDSV9DQURFTkNFX0hf DQo+ID4gPiArDQo+ID4gPiArLyogSFJTIC0gSG9zdCBSZWdpc3RlciBTZXQgKHNwZWNpZmljIHRv IENhZGVuY2UpICovDQo+ID4gPiArLyogUEhZIGFjY2VzcyBwb3J0ICovDQo+ID4gPiArI2RlZmlu ZSBTREhDSV9DRE5TX0hSUzA0CQkweDEwDQo+ID4gPiArLyogQ2FkZW5jZSBWNCBIUlMwNCBEZXNj cmlwdGlvbiovDQo+ID4gPiArI2RlZmluZSAgIFNESENJX0NETlNfSFJTMDRfQUNLCQkJQklUKDI2 KQ0KPiA+ID4gKyNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA0X1JECQkJQklUKDI1KQ0KPiA+ID4g KyNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA0X1dSCQkJQklUKDI0KQ0KPiA+ID4gKyNkZWZpbmUg ICBTREhDSV9DRE5TX0hSUzA0X1JEQVRBCQlHRU5NQVNLKDIzLCAxNikNCj4gPiA+ICsjZGVmaW5l ICAgU0RIQ0lfQ0ROU19IUlMwNF9XREFUQQkJR0VOTUFTSygxNSwgOCkNCj4gPiA+ICsjZGVmaW5l ICAgU0RIQ0lfQ0ROU19IUlMwNF9BRERSCQkJR0VOTUFTSyg1LA0KPiAwKQ0KPiA+ID4gKw0KPiA+ ID4gKyNkZWZpbmUgU0RIQ0lfQ0ROU19IUlMwNQkJMHgxNA0KPiA+ID4gKw0KPiA+ID4gKy8qIGVN TUMgY29udHJvbCAqLw0KPiA+ID4gKyNkZWZpbmUgU0RIQ0lfQ0ROU19IUlMwNgkJMHgxOA0KPiA+ ID4gKyNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA2X1RVTkVfVVAJCUJJVCgxNSkNCj4gPiA+ICsj ZGVmaW5lICAgU0RIQ0lfQ0ROU19IUlMwNl9UVU5FCQkJR0VOTUFTSygxMywNCj4gOCkNCj4gPiA+ ICsjZGVmaW5lICAgU0RIQ0lfQ0ROU19IUlMwNl9NT0RFCQkJR0VOTUFTSygyLA0KPiA+IDApDQo+ ID4gPiArI2RlZmluZSAgIFNESENJX0NETlNfSFJTMDZfTU9ERV9TRAkJMHgwDQo+ID4gPiArI2Rl ZmluZSAgIFNESENJX0NETlNfSFJTMDZfTU9ERV9NTUNfU0RSCQkweDINCj4gPiA+ICsjZGVmaW5l ICAgU0RIQ0lfQ0ROU19IUlMwNl9NT0RFX01NQ19ERFIJCTB4Mw0KPiA+ID4gKyNkZWZpbmUgICBT REhDSV9DRE5TX0hSUzA2X01PREVfTU1DX0hTMjAwCTB4NA0KPiA+ID4gKyNkZWZpbmUgICBTREhD SV9DRE5TX0hSUzA2X01PREVfTU1DX0hTNDAwCTB4NQ0KPiA+ID4gKyNkZWZpbmUgICBTREhDSV9D RE5TX0hSUzA2X01PREVfTU1DX0hTNDAwRVMJMHg2DQo+ID4gPiArDQo+ID4gPiArLyogU1JTIC0g U2xvdCBSZWdpc3RlciBTZXQgKFNESENJLWNvbXBhdGlibGUpICovDQo+ID4gPiArI2RlZmluZSBT REhDSV9DRE5TX1NSU19CQVNFCQkweDIwMA0KPiA+ID4gKw0KPiA+ID4gKy8qIENhZGVuY2UgVjQg UEhZIFNldHRpbmcqLw0KPiA+ID4gKyNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZX1NEX0hTCTB4 MDANCj4gPiA+ICsjZGVmaW5lIFNESENJX0NETlNfUEhZX0RMWV9TRF9ERUZBVUxUCTB4MDENCj4g PiA+ICsjZGVmaW5lIFNESENJX0NETlNfUEhZX0RMWV9VSFNfU0RSMTIJMHgwMg0KPiA+ID4gKyNk ZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZX1VIU19TRFIyNQkweDAzDQo+ID4gPiArI2RlZmluZSBT REhDSV9DRE5TX1BIWV9ETFlfVUhTX1NEUjUwCTB4MDQNCj4gPiA+ICsjZGVmaW5lIFNESENJX0NE TlNfUEhZX0RMWV9VSFNfRERSNTAJMHgwNQ0KPiA+ID4gKyNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlf RExZX0VNTUNfTEVHQUNZCTB4MDYNCj4gPiA+ICsjZGVmaW5lIFNESENJX0NETlNfUEhZX0RMWV9F TU1DX1NEUgkweDA3DQo+ID4gPiArI2RlZmluZSBTREhDSV9DRE5TX1BIWV9ETFlfRU1NQ19ERFIJ MHgwOA0KPiA+ID4gKyNkZWZpbmUgU0RIQ0lfQ0ROU19QSFlfRExZX1NEQ0xLCTB4MGINCj4gPiA+ ICsjZGVmaW5lIFNESENJX0NETlNfUEhZX0RMWV9IU01NQwkweDBjDQo+ID4gPiArI2RlZmluZSBT REhDSV9DRE5TX1BIWV9ETFlfU1RST0JFCTB4MGQNCj4gPiA+ICsNCj4gPiA+ICsvKg0KPiA+ID4g KyAqIFRoZSB0dW5lZCB2YWwgcmVnaXN0ZXIgaXMgNiBiaXQtd2lkZSwgYnV0IG5vdCB0aGUgd2hv bGUgb2YgdGhlDQo+ID4gPiArcmFuZ2UgaXMNCj4gPiA+ICsgKiBhdmFpbGFibGUuICBUaGUgcmFu Z2UgMC00MiBzZWVtcyB0byBiZSBhdmFpbGFibGUgKHRoZW4gNDMgd3JhcHMNCj4gPiA+ICthcm91 bmQgdG8gMCkNCj4gPiA+ICsgKiBidXQgSSBhbSBub3QgcXVpdGUgc3VyZSBpZiBpdCBpcyBvZmZp Y2lhbC4gIFVzZSBvbmx5IDAgdG8gMzkgZm9yIHNhZmV0eS4NCj4gPiA+ICsgKi8NCj4gPiA+ICsj ZGVmaW5lIFNESENJX0NETlNfTUFYX1RVTklOR19MT09QCTQwDQo+ID4gPiArDQo+ID4gPiArc3Ry dWN0IHNkaGNpX2NkbnNfcGxhdCB7DQo+ID4gPiArCXN0cnVjdCBtbWNfY29uZmlnIGNmZzsNCj4g PiA+ICsJc3RydWN0IG1tYyBtbWM7DQo+ID4gPiArCXZvaWQgX19pb21lbSAqaHJzX2FkZHI7DQo+ ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtpbnQgc2RoY2lfY2RuczZfcGh5X2luaXQoc3RydWN0 IHNkaGNpX2NkbnNfcGxhdCAqcGxhdCwgdTMyIG1vZGUpOw0KPiA+ID4gK2ludCBzZGhjaV9jZG5z Nl9zZXRfdHVuZV92YWwoc3RydWN0IHNkaGNpX2NkbnNfcGxhdCAqcGxhdCwgdW5zaWduZWQNCj4g PiA+ICtpbnQgdmFsKTsNCj4gPiA+ICsNCj4gPiA+ICsjZW5kaWYNCj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21tYy9zZGhjaS1jYWRlbmNlNi1waHkuYw0KPiA+ID4gYi9kcml2ZXJzL21tYy9z ZGhjaS1jYWRlbmNlNi1waHkuYw0KPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+IGlu ZGV4IDAwMDAwMDAwMDAuLmRkM2RmMjdkYzgNCj4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ICsr KyBiL2RyaXZlcnMvbW1jL3NkaGNpLWNhZGVuY2U2LXBoeS5jDQo+ID4gPiBAQCAtMCwwICsxLDMw MiBAQA0KPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLXBsYXRm b3JtX2RyaXZlcg0KPiA+ID4gKy8qDQo+ID4gPiArICogQ29weXJpZ2h0IChDKSAyMDIyIFN0YXJm aXZlLg0KPiA+DQo+ID4gcy8yMDIyLzIwMjM/DQo+IEkgd2lsbCBwdXQgMjAyMy4NCj4gDQo+ID4N Cj4gPiA+ICsgKiAgIEF1dGhvcjogS3VhbiBMaW0gTGVlIDxrdWFubGltLmxlZUBzdGFyZml2ZXRl Y2guY29tPg0KPiA+ID4gKyAqLw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxjb21tb24uaD4N Cj4gPiA+ICsjaW5jbHVkZSA8ZG0uaD4NCj4gPiA+ICsjaW5jbHVkZSA8YXNtL2dsb2JhbF9kYXRh Lmg+DQo+ID4gPiArI2luY2x1ZGUgPGRtL2RldmljZV9jb21wYXQuaD4NCj4gPiA+ICsjaW5jbHVk ZSA8bGludXgvYml0ZmllbGQuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+DQo+ ID4gPiArI2luY2x1ZGUgPGxpbnV4L2J1Zy5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5o Pg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvc2l6ZXMuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbGliZmR0Lmg+DQo+ID4gPiArI2lu Y2x1ZGUgPG1tYy5oPg0KPiA+ID4gKyNpbmNsdWRlIDxzZGhjaS5oPg0KPiA+ID4gKyNpbmNsdWRl ICJzZGhjaS1jYWRlbmNlLmgiDQo+ID4gPiArDQo+ID4gPiArLyogSU8gRGVsYXkgSW5mb3JtYXRp b24gKi8NCj4gPiA+ICsjZGVmaW5lIFNESENJX0NETlNfSFJTMDcJCTBYMUMNCj4gPiA+ICsjZGVm aW5lICAgU0RIQ0lfQ0ROU19IUlMwN19SV19DT01QRU5TQVRFCQlHRU5NQVNLKDIwLA0KPiA+IDE2 KQ0KPiA+ID4gKyNkZWZpbmUgICBTREhDSV9DRE5TX0hSUzA3X0lERUxBWV9WQUwJCQlHRU5NQVNL KDQsDQo+ID4gMCkNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFNESENJX0NETlNfSFJTMDkJCTB4 MjQJCS8qIFBIWSBDb250cm9sDQo+IGFuZA0KPiA+IFN0YXR1cyAqLw0KPiA+ID4gKyNkZWZpbmUg ICBTREhDSV9DRE5TX0hSUzA5X1JEREFUQV9FTgkJQklUKDE2KQ0KPiA+ID4gKyNkZWZpbmUgICBT REhDSV9DRE5TX0hSUzA5X1JEQ01EX0VOCQlCSVQoMTUpDQo+ID4gPiArI2RlZmluZSAgIFNESENJ X0NETlNfSFJTMDlfRVhURU5ERURfV1JfTU9ERQlCSVQoMykNCj4gPiA+ICsjZGVmaW5lICAgU0RI Q0lfQ0ROU19IUlMwOV9FWFRFTkRFRF9SRF9NT0RFCUJJVCgyKQ0KPiA+ID4gKyNkZWZpbmUgICBT REhDSV9DRE5TX0hSUzA5X1BIWV9JTklUX0NPTVBMRVRFCUJJVCgxKQ0KPiA+ID4gKyNkZWZpbmUg ICBTREhDSV9DRE5TX0hSUzA5X1BIWV9TV19SRVNFVAkJQklUKDApDQo+ID4gPiArDQo+ID4gPiAr I2RlZmluZSBTREhDSV9DRE5TX0hSUzEwCQkweDI4CQkvKiBTRENMSw0KPiBhZGp1c3RtZW50DQo+ ID4gKi8NCj4gPiA+ICsjZGVmaW5lICAgU0RIQ0lfQ0ROU19IUlMxMF9IQ1NEQ0xLQURKCQlHRU5N QVNLKDE5LA0KPiAxNikNCj4gPiA+ICsNCj4gPiA+ICsjZGVmaW5lIFNESENJX0NETlNfSFJTMTYJ CTB4NDAJCS8qIENNRC9EQVQNCj4gb3V0cHV0DQo+ID4gZGVsYXkgKi8NCj4gPiA+ICsNCj4gPiA+ ICsvKiBQSFkgU3BlY2lhbCBGdW5jdGlvbiBSZWdpc3RlcnMgKi8NCj4gPiA+ICsvLyNkZWZpbmUg RExMX1BIWV9SRUdfQkFTRQkJMHgyMDAwDQo+ID4gPiArDQo+ID4gPiArLyogcmVnaXN0ZXIgdG8g Y29udHJvbCB0aGUgRFEgcmVsYXRlZCB0aW1pbmcgKi8NCj4gPiA+ICsjZGVmaW5lIFBIWV9EUV9U SU1JTkdfUkVHX0FERFIJCTB4MjAwMA0KPiA+ID4gKw0KPiA+ID4gKy8qIHJlZ2lzdGVyIHRvIGNv bnRyb2wgdGhlIERRUyByZWxhdGVkIHRpbWluZyAqLw0KPiA+ID4gKyNkZWZpbmUgUEhZX0RRU19U SU1JTkdfUkVHX0FERFIJCTB4MjAwNA0KPiA+ID4gKw0KPiA+ID4gKy8qIHJlZ2lzdGVyIHRvIGNv bnRyb2wgdGhlIGdhdGUgYW5kIGxvb3BiYWNrIGNvbnRyb2wgcmVsYXRlZCB0aW1pbmcgKi8NCj4g PiA+ICsjZGVmaW5lIFBIWV9HQVRFX0xQQktfQ1RSTF9SRUdfQUREUgkweDIwMDgNCj4gPiA+ICsN Cj4gPiA+ICsvKiByZWdpc3RlciB0byBjb250cm9sIHRoZSBNYXN0ZXIgRExMIGxvZ2ljICovDQo+ ID4gPiArI2RlZmluZSBQSFlfRExMX01BU1RFUl9DVFJMX1JFR19BRERSCTB4MjAwQw0KPiA+ID4g Kw0KPiA+ID4gKy8qIHJlZ2lzdGVyIHRvIGNvbnRyb2wgdGhlIFNsYXZlIERMTCBsb2dpYyAqLw0K PiA+ID4gKyNkZWZpbmUgUEhZX0RMTF9TTEFWRV9DVFJMX1JFR19BRERSCTB4MjAxMA0KPiA+ID4g KyNkZWZpbmUgUEhZX0RMTF9TTEFWRV9DVFJMX1JFR19SRUFEX0RRU19DTURfREVMQVkNCj4gPiAJ R0VOTUFTSygzMSwgMjQpDQo+ID4gPiArI2RlZmluZSBQSFlfRExMX1NMQVZFX0NUUkxfUkVHX1JF QURfRFFTX0RFTEFZDQo+ID4gCUdFTk1BU0soNywgMCkNCj4gPiA+ICsNCj4gPiA+ICsvKiByZWdp c3RlciB0byBjb250cm9sIHRoZSBnbG9iYWwgc2V0dGluZ3MgZm9yIFBIWSAqLw0KPiA+ID4gKyNk ZWZpbmUgUEhZX0NUUkxfUkVHX0FERFIJCTB4MjA4MA0KPiA+ID4gKw0KPiA+ID4gK3N0cnVjdCBw aHlfcmVnIHsNCj4gPiA+ICsJdTMyIHBoeV9kcXNfdGltaW5nOw0KPiA+ID4gKwl1MzIgcGh5X2dh dGVfbHBia19jdHJsOw0KPiA+ID4gKwkvL3UzMiBwaHlfZGxsX21hc3Rlcl9jdHJsOw0KPiA+DQo+ ID4gUmVtb3ZlIHVudXNlZCBjb2RlLg0KPiBOb3RlZC4NCj4gPg0KPiA+ID4gKwl1MzIgcGh5X2Rs bF9zbGF2ZV9jdHJsOw0KPiA+ID4gKwkvL3UzMiBwaHlfY3RybDsNCj4gPg0KPiA+IGRpdHRvDQo+ IE5vdGVkLg0KPiA+DQo+ID4gPiArCXUzMiBwaHlfZHFfdGltaW5nOw0KPiA+ID4gKwkvL2NwX3N3 X2hhbGZfY3ljbGVfc2hpZnQ7IEFTSUMNCj4gPg0KPiA+IERpdHRvDQo+IE5vdGVkLg0KPiA+DQo+ ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdHJ1Y3QgY29udHJvbGxlcl9yZWcgew0KPiA+ID4g Kwl1MzIgaHJzMDc7DQo+ID4gPiArCXUzMiBocnMwOTsNCj4gPiA+ICsJdTMyIGhyczEwOw0KPiA+ ID4gKwl1MzIgaHJzMTY7DQo+ID4gPiArfTsNCj4gPg0KPiA+DQo+ID4gQXMgc29tZSByZWcgdmFs dWVzIGNhbiBiZSByZS11c2VkLiBJIGRvbid0IGtub3cgd2hhdCBpdHMgdmFsdWUgbWVhbnMuDQo+ ID4gZS5nKSAweDAwMzgwMDA0IGlzIHN1ZWQgc2RfZHMvZW1tY19zZHIvZW1tY19kZHIvZW1tY19o czIwMC4NCj4gVGhpcyB2YWx1ZSBpcyBnZW5lcmF0ZWQgYnkgc2NyaXB0IHByb3ZpZGVkIGJ5IENh ZGVuY2UuDQo+IGUuZy4pIHBoeV9kcXNfdGltaW5nX3JlZyAoMHgyMDA0KSBpcyBhIDMyIGJpdHMg cmVnaXN0ZXIsIGluc2lkZSB0aGUgcmVnaXN0ZXIgaGFzDQo+IGZldyBjb21wb25lbnQ6IHVzZV9l eHRfbHBia19kcXMsIHVzZV9scGJrX2RxcywgdXNlX3Bob255X2RxcywNCj4gdXNlX3Bob255X2Rx c19jbWQsIHBob255X2Rxc19zZWwsIGRxc19zZWxlY3RfdHNlbF9zdGFydCBhbmQNCj4gZHFzX3Nl bGVjdF90c2VsX2VuZC4NCj4gDQo+IEVhY2ggY29tcG9uZW50cyB2YWx1ZSBpcyBnZW5lcmF0ZWQg Ynkgc2NyaXB0IGFuZCBJIGNvbWJpbmVkIHRoZSB2YWx1ZSBpbiBhIDMyDQo+IGJpdHMgdmFsdWUs IDB4MDAzODAwMDQuDQo+IA0KPiA+DQo+ID4gSSBkb24ndCB3YW50IHRvIHVzZSBhIG1hZ2ljIGNv ZGUuIElmIHlvdSBjYW4gYWRkIHNvbWUgbWFjcm9zLCBpdCdzDQo+ID4gbW9yZSByZWFkYWJsZS4N Cj4gU2hvdWxkIEkgY2hhbmdlIHRoZSBzdHJ1Y3QgaW4gd2F5IGJlbG93LCBzbyB0aGF0IGl0IGlz IG1vcmUgcmVhYmxlPw0KPiBzdGF0aWMgc3RydWN0IHNkaGNpX2NkbnNfcGh5X3JlZ19wYWlycyBz ZF9kc19tb2RlX3NldHRpbmdbXSA9IHsNCj4gCQl7MHgwMDM4MDAwMCwgUEhZX0RRU19USU1JTkdf UkVHX0FERFJ9LA0KPiAJCXsweDAxQTAwMDQwLCBQSFlfR0FURV9MUEJLX0NUUkxfUkVHX0FERFJ9 LA0KPiAJCXsweDAwMDAwMDAwLCBQSFlfRExMX1NMQVZFX0NUUkxfUkVHX0FERFJ9LA0KPiAJCXsw eDAwMDAwMTgwLCBQSFlfQ1RSTF9SRUdfQUREUn0sDQo+IAkJezB4MDAwMDAwMDEsIFBIWV9EUV9U SU1JTkdfUkVHX0FERFJ9LA0KPiB9Ow0KPiANCj4gT3IgSSBoYXZlIHRvIHB1dCBlYWNoIHZhbHVl IG9mIGNvbXBvbmVudHMgYW5kIHB1dCBhIGNvbnZlcnRpb24gZnVuY3Rpb24gaW4gdGhlDQo+IGNv ZGUgdG8gY2hhbmdlIHRoaXMgdG8gMzIgYml0cyB2YWx1ZSBhbmQgcHJvZ3JhbSBpbnRpIHJlZ2lz dGVyLA0KPiBwaHlfZHFzX3RpbWluZ19yZWcgKDB4MjAwNCk/DQo+IA0KPiA+DQo+ID4gPiArDQo+ ID4gPiArc3RhdGljIHN0cnVjdCBwaHlfcmVnIHNkX2RzX3BoeV9jZmcgPSB7DQo+ID4gPiArCTB4 MDAzODAwMDQsDQo+ID4gPiArCTB4MDFBMDAwNDAsDQo+ID4gPiArCTB4MDAwMDAwMDAsDQo+ID4g PiArCTB4MDAwMDAwMDEsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgc3RydWN0 IHBoeV9yZWcgZW1tY19zZHJfcGh5X2NmZyA9IHsNCj4gPiA+ICsJMHgwMDM4MDAwNCwNCj4gPiA+ ICsJMHgwMUEwMDA0MCwNCj4gPiA+ICsJMHgwMDAwMDAwMCwNCj4gPiA+ICsJMHgwMDAwMDAwMSwN Cj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgcGh5X3JlZyBlbW1jX2Rk cl9waHlfY2ZnID0gew0KPiA+ID4gKwkweDAwMzgwMDA0LA0KPiA+ID4gKwkweDAxQTAwMDQwLA0K PiA+ID4gKwkweDAwMDAwMDAwLA0KPiA+ID4gKwkweDEwMDAwMDAxLA0KPiA+ID4gK307DQo+ID4g PiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBwaHlfcmVnIGVtbWNfaHMyMDBfcGh5X2NmZyA9IHsN Cj4gPiA+ICsJMHgwMDM4MDAwNCwNCj4gPiA+ICsJMHgwMUEwMDA0MCwNCj4gPiA+ICsJMHgwMERB REEwMCwNCj4gPiA+ICsJMHgwMDAwMDAwMSwNCj4gPiA+ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0 YXRpYyBzdHJ1Y3QgcGh5X3JlZyBlbW1jX2hzNDAwX3BoeV9jZmcgPSB7DQo+ID4gPiArCTB4MDAy ODAwMDQsDQo+ID4gPiArCTB4MDFBMDAwNDAsDQo+ID4gPiArCTB4MDBEQUQ4MDAsDQo+ID4gPiAr CTB4MDAwMDAwMDEsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ICtzdGF0aWMgc3RydWN0IGNv bnRyb2xsZXJfcmVnIHNkX2RzX2N0cmxfY2ZnID0gew0KPiA+ID4gKwkweDAwMDgwMDAwLA0KPiA+ ID4gKwkweDAwMDE4MDBDLA0KPiA+ID4gKwkweDAwMDIwMDAwLA0KPiA+ID4gKwkweDAwMDAwMDAw LA0KPiA+ID4gK307DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHN0cnVjdCBjb250cm9sbGVyX3Jl ZyBlbW1jX3Nkcl9jdHJsX2NmZyA9IHsNCj4gPiA+ICsJMHgwMDA4MDAwMCwNCj4gPiA+ICsJMHgw MDAxODAwQywNCj4gPiA+ICsJMHgwMDAzMDAwMCwNCj4gPiA+ICsJMHgwMDAwMDAwMCwNCj4gPiA+ ICt9Ow0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgY29udHJvbGxlcl9yZWcgZW1tY19k ZHJfY3RybF9jZmcgPSB7DQo+ID4gPiArCTB4MDAwOTAwMDEsDQo+ID4gPiArCTB4MDAwMTgwMEMs DQo+ID4gPiArCTB4MDAwMjAwMDAsDQo+ID4gPiArCTB4MTEwMDAwMDEsDQo+ID4gPiArfTsNCj4g PiA+ICsNCj4gPiA+ICtzdGF0aWMgc3RydWN0IGNvbnRyb2xsZXJfcmVnIGVtbWNfaHMyMDBfY3Ry bF9jZmcgPSB7DQo+ID4gPiArCTB4MDAwOTAwMDAsDQo+ID4gPiArCTB4MDAwMTgwMDAsDQo+ID4g PiArCTB4MDAwODAwMDAsDQo+ID4gPiArCTB4MDAwMDAwMDAsDQo+ID4gPiArfTsNCj4gPiA+ICsN Cj4gPiA+ICtzdGF0aWMgc3RydWN0IGNvbnRyb2xsZXJfcmVnIGVtbWNfaHM0MDBfY3RybF9jZmcg PSB7DQo+ID4gPiArCTB4MDAwODAwMDAsDQo+ID4gPiArCTB4MDAwMTgwMDAsDQo+ID4gPiArCTB4 MDAwODAwMDAsDQo+ID4gPiArCTB4MTEwMDAwMDAsDQo+ID4gPiArfTsNCj4gPiA+ICsNCj4gPiA+ ICtzdGF0aWMgdW5zaWduZWQgaW50IHNkaGNpX2NkbnM2X3JlYWRfcGh5X3JlZyhzdHJ1Y3Qgc2Ro Y2lfY2Ruc19wbGF0ICpwbGF0LA0KPiA+ID4gKwkJCQkJICAgICB1MzIgYWRkcikNCj4gPiA+ICt7 DQo+ID4gPiArCXUzMiBkYXRhID0gMDsNCj4gPiA+ICsNCj4gPiA+ICsJd3JpdGVsKGFkZHIsIHBs YXQtPmhyc19hZGRyICsgU0RIQ0lfQ0ROU19IUlMwNCk7DQo+ID4gPiArCWRhdGEgPSByZWFkbChw bGF0LT5ocnNfYWRkciArIFNESENJX0NETlNfSFJTMDUpOw0KPiA+ID4gKwlyZXR1cm4gZGF0YTsN Cj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiArc3RhdGljIHZvaWQgc2RoY2lfY2RuczZfd3JpdGVf cGh5X3JlZyhzdHJ1Y3Qgc2RoY2lfY2Ruc19wbGF0ICpwbGF0LA0KPiA+ID4gKwkJCQkgICAgICB1 MzIgYWRkciwgdTMyIGRhdGEpDQo+ID4gPiArew0KPiA+ID4gKwl1MzIgcmVhZGRhdCA9IDA7DQo+ ID4gPiArDQo+ID4gPiArCXdyaXRlbChhZGRyLCBwbGF0LT5ocnNfYWRkciArIFNESENJX0NETlNf SFJTMDQpOw0KPiA+ID4gKwl3cml0ZWwoZGF0YSwgcGxhdC0+aHJzX2FkZHIgKyBTREhDSV9DRE5T X0hSUzA1KTsNCj4gPiA+ICsJcmVhZGRhdCA9IHJlYWRsKHBsYXQtPmhyc19hZGRyICsgU0RIQ0lf Q0ROU19IUlMwNSk7DQo+ID4gPiArDQo+ID4gPiArCWlmIChyZWFkZGF0ICE9IGRhdGEpIHsNCj4g PiA+ICsJCXByX2VycigiRXJyb3IsICVzOiBXcml0aW5nIGZhaWxlZCE6IGFkZHJlc3M6IDB4JXgs IHZhbHVlIDogMHgleCwNCj4gPiA+ICsJCSAgICAgICByZWFkdmFsOiAweCV4XG4iLCBfX2Z1bmNf XywgYWRkciwgZGF0YSwgcmVhZGRhdCk7DQo+ID4NCj4gPg0KPiA+IERvZXNuJ3QgbmVlZCB0byBy ZXR1cm4gZXJyb3IgdmFsdWU/DQo+IFllcywgSSB0aGluayBpdCB3aWxsIGJlIGNoYW5nZWQgIHRv IHJldHVybiBlcnJvciB2YWx1ZS4NCj4gPg0KPiA+DQo+ID4gPiArCX0NCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiArc3RhdGljIGludCBzZGhjaV9jZG5zNl9yZXNldF9waHlfZGxsKHN0cnVjdCBz ZGhjaV9jZG5zX3BsYXQgKnBsYXQsDQo+ID4gPiArCQkJCSAgICAgdW5zaWduZWQgaW50IHJlc2V0 KQ0KPiA+ID4gK3sNCj4gPiA+ICsJdm9pZCBfX2lvbWVtICpyZWcgPSBwbGF0LT5ocnNfYWRkciAr IFNESENJX0NETlNfSFJTMDk7DQo+ID4gPiArCXUzMiB0bXA7DQo+ID4gPiArCWludCByZXQ7DQo+ ID4gPiArDQo+ID4gPiArCXRtcCA9IHJlYWRsKHJlZyk7DQo+ID4gPiArCXRtcCAmPSB+U0RIQ0lf Q0ROU19IUlMwOV9QSFlfU1dfUkVTRVQ7DQo+ID4gPiArDQo+ID4gPiArCWlmIChyZXNldCkJLyog U3dpdGNoIE9uIERMTCBSZXNldCAqLw0KPiA+DQo+ID4NCj4gPiAJLyogU3dpdGhjIE9uIERMTCBS ZXNldCAqLw0KPiBOb3RlZCwgdGhhbmtzIGZvciB0ZWxsaW5nLg0KPiANCj4gPiAJaWYgKHJlc2V0 KQ0KPiA+IAkJLi4uDQo+ID4gCWVsc2UNCj4gPiAJCS4uLg0KPiA+DQo+ID4NCj4gPiA+ICsJCXRt cCB8PSBGSUVMRF9QUkVQKFNESENJX0NETlNfSFJTMDlfUEhZX1NXX1JFU0VULCAwKTsNCj4gPiA+ ICsJZWxzZQkJLyogU3dpdGNoIE9mZiBETEwgUmVzZXQgKi8NCj4gPiA+ICsJCXRtcCB8PSBGSUVM RF9QUkVQKFNESENJX0NETlNfSFJTMDlfUEhZX1NXX1JFU0VULCAxKTsNCj4gPiA+ICsNCj4gPiA+ ICsJd3JpdGVsKHRtcCwgcmVnKTsNCj4gPiA+ICsNCj4gPiA+ICsJaWYgKCFyZXNldCkgew0KPiA+ ID4gKwkJcmV0ID0gcmVhZGxfcG9sbF90aW1lb3V0KHJlZywgdG1wLA0KPiA+ID4gKwkJCQkJICh0 bXAgJg0KPiA+IFNESENJX0NETlNfSFJTMDlfUEhZX0lOSVRfQ09NUExFVEUpLA0KPiA+ID4gKwkJ CQkJIDMwMDApOw0KPiA+DQo+ID4gQWRkIGEgY29tbWVudCB3aHkgaXQgbmVlZHMgdG8gcG9sbCBk dXJpbmcgMzAwMC4NCj4gQWN0dWFsbHkgMzAwMCB1cyBpcyBhIHNhZmUgcmFuZ2UuIFVzZXIgbWFu dWFsIGRvZXNu4oCZdCBzcGVjaWZ5LCBJIHB1dCBteXNlbGYuDQo+IENvbW1lbnQgd2lsbCBiZSBs aWtlIGJlbG93Og0KPiAvKiBBZnRlciByZXNldCwgd2FpdCBmb3IgUEhZX0lOSVRfQ09NUExFVEUg aW4gSFJTMDkgcmVnaXN0ZXIgdW50aWwgaXQgaXMgc2V0IHRvIDENCj4gd2l0aGluIDMwMDB1cyov DQo+IA0KPiA+DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIHJldDsNCj4gPiA+ ICt9DQo+ID4gPiArDQo+ID4gPiAraW50IHNkaGNpX2NkbnM2X3BoeV9pbml0KHN0cnVjdCBzZGhj aV9jZG5zX3BsYXQgKnBsYXQsIHUzMiBtb2RlKSB7DQo+ID4gPiArCXN0cnVjdCBwaHlfcmVnICpw aHlfY2ZnczsNCj4gPiA+ICsJc3RydWN0IGNvbnRyb2xsZXJfcmVnICpjdHJsX2NmZ3M7DQo+ID4g PiArCXZvaWQgX19pb21lbSAqcmVnID0gTlVMTDsNCj4gPiA+ICsJdTMyIHRtcDsNCj4gPiA+ICsJ aW50IHJldDsNCj4gPiA+ICsNCj4gPiA+ICsJc3dpdGNoIChtb2RlKSB7DQo+ID4gPiArCWNhc2Ug U0RIQ0lfQ0ROU19IUlMwNl9NT0RFX1NEOg0KPiA+ID4gKwkJcGh5X2NmZ3MgPSAmc2RfZHNfcGh5 X2NmZzsNCj4gPiA+ICsJCWN0cmxfY2ZncyA9ICZzZF9kc19jdHJsX2NmZzsNCj4gPiA+ICsJCWJy ZWFrOw0KPiA+ID4gKw0KPiA+ID4gKwljYXNlIFNESENJX0NETlNfSFJTMDZfTU9ERV9NTUNfU0RS Og0KPiA+ID4gKwkJcGh5X2NmZ3MgPSAmZW1tY19zZHJfcGh5X2NmZzsNCj4gPiA+ICsJCWN0cmxf Y2ZncyA9ICZlbW1jX3Nkcl9jdHJsX2NmZzsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKw0KPiA+ ID4gKwljYXNlIFNESENJX0NETlNfSFJTMDZfTU9ERV9NTUNfRERSOg0KPiA+ID4gKwkJcGh5X2Nm Z3MgPSAmZW1tY19kZHJfcGh5X2NmZzsNCj4gPiA+ICsJCWN0cmxfY2ZncyA9ICZlbW1jX2Rkcl9j dHJsX2NmZzsNCj4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gKw0KPiA+ID4gKwljYXNlIFNESENJX0NE TlNfSFJTMDZfTU9ERV9NTUNfSFMyMDA6DQo+ID4gPiArCQlwaHlfY2ZncyA9ICZlbW1jX2hzMjAw X3BoeV9jZmc7DQo+ID4gPiArCQljdHJsX2NmZ3MgPSAmZW1tY19oczIwMF9jdHJsX2NmZzsNCj4g PiA+ICsJCWJyZWFrOw0KPiA+ID4gKw0KPiA+ID4gKwljYXNlIFNESENJX0NETlNfSFJTMDZfTU9E RV9NTUNfSFM0MDA6DQo+ID4gPiArCQlwaHlfY2ZncyA9ICZlbW1jX2hzNDAwX3BoeV9jZmc7DQo+ ID4gPiArCQljdHJsX2NmZ3MgPSAmZW1tY19oczQwMF9jdHJsX2NmZzsNCj4gPiA+ICsJCWJyZWFr Ow0KPiA+DQo+ID4NCj4gPiBJZiB0aGVyZSBpcyBubyBtYXRjaGVkIG1vZCwgcGh5X2NmZ3MgYW5k IGN0cmxfY2ZncyBzaG91bGQgYmUgTlVMTC4NCj4gTm90ZWQuDQo+IA0KPiA+DQo+ID4gPiArCX0N Cj4gPiA+ICsNCj4gPiA+ICsJLyogU3dpdGNoIE9uIHRoZSBETEwgUmVzZXQgKi8NCj4gPiA+ICsJ c2RoY2lfY2RuczZfcmVzZXRfcGh5X2RsbChwbGF0LCAxKTsNCj4gPiA+ICsNCj4gPiA+ICsJc2Ro Y2lfY2RuczZfd3JpdGVfcGh5X3JlZyhwbGF0LCBQSFlfRFFTX1RJTUlOR19SRUdfQUREUiwNCj4g PiA+ICsJCQkJICBwaHlfY2Zncy0+cGh5X2Rxc190aW1pbmcpOw0KPiA+ID4gKwlzZGhjaV9jZG5z Nl93cml0ZV9waHlfcmVnKHBsYXQsIFBIWV9HQVRFX0xQQktfQ1RSTF9SRUdfQUREUiwNCj4gPiA+ ICsJCQkJICBwaHlfY2Zncy0+cGh5X2dhdGVfbHBia19jdHJsKTsNCj4gPiA+ICsJc2RoY2lfY2Ru czZfd3JpdGVfcGh5X3JlZyhwbGF0LCBQSFlfRExMX1NMQVZFX0NUUkxfUkVHX0FERFIsDQo+ID4g PiArCQkJCSAgcGh5X2NmZ3MtPnBoeV9kbGxfc2xhdmVfY3RybCk7DQo+ID4gPiArDQo+ID4gPiAr CS8qIFN3aXRjaCBPZmYgdGhlIERMTCBSZXNldCAqLw0KPiA+ID4gKwlyZXQgPSBzZGhjaV9jZG5z Nl9yZXNldF9waHlfZGxsKHBsYXQsIDApOw0KPiA+ID4gKwlpZiAocmV0KSB7DQo+ID4gPiArCQlw cmludGYoInNkaGNpX2NkbnM2X3Jlc2V0X3BoeSBpcyBub3QgY29tcGxldGVkXG4iKTsNCj4gPiA+ ICsJCXJldHVybiByZXQ7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJLyogU2V0IFBIWSBE USBUSU1JTkcgY29udHJvbCByZWdpc3RlciAqLw0KPiA+ID4gKwlzZGhjaV9jZG5zNl93cml0ZV9w aHlfcmVnKHBsYXQsIFBIWV9EUV9USU1JTkdfUkVHX0FERFIsDQo+ID4gPiArCQkJCSAgcGh5X2Nm Z3MtPnBoeV9kcV90aW1pbmcpOw0KPiA+ID4gKw0KPiA+ID4gKwkvKiBTZXQgSFJTMDkgcmVnaXN0 ZXIgKi8NCj4gPiA+ICsJcmVnID0gcGxhdC0+aHJzX2FkZHIgKyBTREhDSV9DRE5TX0hSUzA5Ow0K PiA+ID4gKwl0bXAgPSByZWFkbChyZWcpOw0KPiA+DQo+ID4NCj4gPiBJJ20gbm90IHN1ZXIgd2h5 IHBsYXQtaHJzX2FkZHIgYXNzaWduZWQgdG8gcmVnLg0KPiA+IEhvdyBhYm91dCB1c2luZyB0aGUg YmVsb3c/DQo+ID4NCj4gPiBocnNfYmFzZV9hZGRyID0gcGxhdC0+aHJzX2FkZHI7DQo+ID4NCj4g PiByZWFkbChocnNfYmFzZV9hZGRyICsgU0RIQ0lfQ0ROU19IUlMxMCk7DQo+ID4NCj4gPiBUaGVu IHlvdSBjYW4gY2hhbmdlIHRoZSBiZWxvdyBjb2RlIGxpa2UNCj4gPg0KPiA+IHJlYWRsKGhyc19i YXNlX2FkZHIgKyBTREhDSV9DRE5TX0hSUzE2KTsgcmVhZGwoaHJzX2Jhc2VfYWRkciArDQo+ID4g U0RIQ0lfQ0ROU19IUlMwNyk7DQo+ID4NCj4gPiBPdGhlcndpc2UsIHJlYWRsKHBsYXQtPmhyc19h ZGRyICsgU0RIQ0lfeHh4KTsNCj4gTm90ZWQsIHRoaXMgbG9va2VkIHNpbXBsZXIuDQo+IA0KPiA+ DQo+ID4NCj4gPiA+ICsJdG1wICY9IH4oU0RIQ0lfQ0ROU19IUlMwOV9FWFRFTkRFRF9XUl9NT0RF IHwNCj4gPiA+ICsJCSBTREhDSV9DRE5TX0hSUzA5X0VYVEVOREVEX1JEX01PREUgfA0KPiA+ID4g KwkJIFNESENJX0NETlNfSFJTMDlfUkREQVRBX0VOIHwNCj4gPiA+ICsJCSBTREhDSV9DRE5TX0hS UzA5X1JEQ01EX0VOKTsNCj4gPiA+ICsJdG1wIHw9IGN0cmxfY2Zncy0+aHJzMDk7DQo+ID4gPiAr CXdyaXRlbCh0bXAsIHJlZyk7DQo+ID4gPiArDQo+ID4gPiArCS8qIFNldCBIUlMxMCByZWdpc3Rl ciAqLw0KPiA+ID4gKwlyZWcgPSBwbGF0LT5ocnNfYWRkciArIFNESENJX0NETlNfSFJTMTA7DQo+ ID4gPiArCXRtcCA9IHJlYWRsKHJlZyk7DQo+ID4gPiArCXRtcCAmPSB+U0RIQ0lfQ0ROU19IUlMx MF9IQ1NEQ0xLQURKOw0KPiA+ID4gKwl0bXAgfD0gY3RybF9jZmdzLT5ocnMxMDsNCj4gPiA+ICsJ d3JpdGVsKHRtcCwgcmVnKTsNCj4gPiA+ICsNCj4gPiA+ICsJLyogU2V0IEhSUzE2IHJlZ2lzdGVy ICovDQo+ID4gPiArCXJlZyA9IHBsYXQtPmhyc19hZGRyICsgU0RIQ0lfQ0ROU19IUlMxNjsNCj4g PiA+ICsJdG1wID0gY3RybF9jZmdzLT5ocnMxNjsNCj4gPiA+ICsJd3JpdGVsKHRtcCwgcmVnKTsN Cj4gPiA+ICsNCj4gPiA+ICsJLyogU2V0IEhSUzA3IHJlZ2lzdGVyICovDQo+ID4gPiArCXJlZyA9 IHBsYXQtPmhyc19hZGRyICsgU0RIQ0lfQ0ROU19IUlMwNzsNCj4gPiA+ICsJdG1wID0gY3RybF9j ZmdzLT5ocnMwNzsNCj4gPiA+ICsJd3JpdGVsKHRtcCwgcmVnKTsNCj4gPiA+ICsNCj4gPiA+ICsJ cmV0dXJuIDA7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4gK2ludCBzZGhjaV9jZG5zNl9zZXRf dHVuZV92YWwoc3RydWN0IHNkaGNpX2NkbnNfcGxhdCAqcGxhdCwNCj4gPiA+ICsJCQkgICAgIHVu c2lnbmVkIGludCB2YWwpDQo+ID4gPiArew0KPiA+ID4gKwl1MzIgdG1wLCB0dW5ldmFsOw0KPiA+ DQo+ID4gRGl0dG8uDQo+IEFueSBwcm9ibGVtIHdpdGggdGhpcz8gSSB0aGluayBjdXJyZW50IHdh eSBsb29rZWQgc2ltcGxlLg0KPiANCj4gPg0KPiA+IEJlc3QgUmVnYXJkcywNCj4gPiBKYWVob29u IENodW5nDQo+ID4NCj4gPiA+ICsNCj4gPiA+ICsJdHVuZXZhbCA9ICh2YWwgKiAyNTYpIC8gU0RI Q0lfQ0ROU19NQVhfVFVOSU5HX0xPT1A7DQo+ID4gPiArDQo+ID4gPiArCXRtcCA9IHNkaGNpX2Nk bnM2X3JlYWRfcGh5X3JlZyhwbGF0LA0KPiA+IFBIWV9ETExfU0xBVkVfQ1RSTF9SRUdfQUREUik7 DQo+ID4gPiArCXRtcCAmPSB+KFBIWV9ETExfU0xBVkVfQ1RSTF9SRUdfUkVBRF9EUVNfQ01EX0RF TEFZIHwNCj4gPiA+ICsJCSBQSFlfRExMX1NMQVZFX0NUUkxfUkVHX1JFQURfRFFTX0RFTEFZKTsN Cj4gPiA+ICsJdG1wIHw9DQo+ID4gRklFTERfUFJFUChQSFlfRExMX1NMQVZFX0NUUkxfUkVHX1JF QURfRFFTX0NNRF9ERUxBWSwgdHVuZXZhbCkgfA0KPiA+ID4gKwkJRklFTERfUFJFUChQSFlfRExM X1NMQVZFX0NUUkxfUkVHX1JFQURfRFFTX0RFTEFZLA0KPiA+IHR1bmV2YWwpOw0KPiA+ID4gKwlz ZGhjaV9jZG5zNl93cml0ZV9waHlfcmVnKHBsYXQsIFBIWV9ETExfU0xBVkVfQ1RSTF9SRUdfQURE UiwNCj4gPiB0bXApOw0KPiA+ID4gKw0KPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ICt9DQo+ID4N Cg0K