From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lars Persson Subject: Re: [PATCH 1/2] synopsys: remove dwc_eth_qos driver Date: Tue, 10 Jan 2017 12:12:42 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: David Miller , Niklas Cassel , "peppe.cavallaro@st.com" , "netdev@vger.kernel.org" To: Joao Pinto Return-path: Received: from bastet.se.axis.com ([195.60.68.11]:49680 "EHLO bastet.se.axis.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031537AbdAJMMy (ORCPT ); Tue, 10 Jan 2017 07:12:54 -0500 In-Reply-To: Content-Language: en-US Content-ID: Sender: netdev-owner@vger.kernel.org List-ID: DQo+IE9uIDEwIEphbiAyMDE3LCBhdCAxMjo0MiAsIEpvYW8gUGludG8gPEpvYW8uUGludG9Ac3lu b3BzeXMuY29tPiB3cm90ZToNCj4gDQo+IFRoaXMgZHJpdmVyIGlzIG5vIGxvbmdlciBuZWNlc3Nh cnkgc2luY2UgaXQgd2FzIG1lcmdlZCBpbnRvIHN0bW1hYy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6 IEpvYW8gUGludG8gPGpwaW50b0BzeW5vcHN5cy5jb20+DQo+IC0tLQ0KPiBkcml2ZXJzL25ldC9l dGhlcm5ldC9LY29uZmlnICAgICAgICAgICAgICAgIHwgICAgMSAtDQo+IGRyaXZlcnMvbmV0L2V0 aGVybmV0L01ha2VmaWxlICAgICAgICAgICAgICAgfCAgICAxIC0NCj4gZHJpdmVycy9uZXQvZXRo ZXJuZXQvc3lub3BzeXMvS2NvbmZpZyAgICAgICB8ICAgMjcgLQ0KPiBkcml2ZXJzL25ldC9ldGhl cm5ldC9zeW5vcHN5cy9NYWtlZmlsZSAgICAgIHwgICAgNSAtDQo+IGRyaXZlcnMvbmV0L2V0aGVy bmV0L3N5bm9wc3lzL2R3Y19ldGhfcW9zLmMgfCAyOTk2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiA1IGZpbGVzIGNoYW5nZWQsIDMwMzAgZGVsZXRpb25zKC0pDQo+IGRlbGV0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9zeW5vcHN5cy9LY29uZmlnDQo+IGRlbGV0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9zeW5vcHN5cy9NYWtlZmlsZQ0KPiBkZWxl dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMvZHdjX2V0aF9xb3Mu Yw0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnDQo+IGluZGV4IGU0YzI4ZmUuLmFmYzA3ZDQgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvS2NvbmZpZw0KPiBAQCAtMTcwLDcgKzE3MCw2IEBAIHNvdXJjZSAiZHJpdmVy cy9uZXQvZXRoZXJuZXQvc2dpL0tjb25maWciDQo+IHNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJu ZXQvc21zYy9LY29uZmlnIg0KPiBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8v S2NvbmZpZyINCj4gc291cmNlICJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW4vS2NvbmZpZyINCj4g LXNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMvS2NvbmZpZyINCj4gc291cmNl ICJkcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZyINCj4gc291cmNlICJkcml2ZXJz L25ldC9ldGhlcm5ldC90aS9LY29uZmlnIg0KPiBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0 L3RpbGUvS2NvbmZpZyINCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L01ha2Vm aWxlIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUNCj4gaW5kZXggMjQzMzBmNC4uZTc4 NjFhOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUNCj4gKysr IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUNCj4gQEAgLTgxLDcgKzgxLDYgQEAgb2Jq LSQoQ09ORklHX05FVF9WRU5ET1JfU0dJKSArPSBzZ2kvDQo+IG9iai0kKENPTkZJR19ORVRfVkVO RE9SX1NNU0MpICs9IHNtc2MvDQo+IG9iai0kKENPTkZJR19ORVRfVkVORE9SX1NUTUlDUk8pICs9 IHN0bWljcm8vDQo+IG9iai0kKENPTkZJR19ORVRfVkVORE9SX1NVTikgKz0gc3VuLw0KPiAtb2Jq LSQoQ09ORklHX05FVF9WRU5ET1JfU1lOT1BTWVMpICs9IHN5bm9wc3lzLw0KPiBvYmotJChDT05G SUdfTkVUX1ZFTkRPUl9URUhVVEkpICs9IHRlaHV0aS8NCj4gb2JqLSQoQ09ORklHX05FVF9WRU5E T1JfVEkpICs9IHRpLw0KPiBvYmotJChDT05GSUdfVElMRV9ORVQpICs9IHRpbGUvDQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zeW5vcHN5cy9LY29uZmlnIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvc3lub3BzeXMvS2NvbmZpZw0KPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggODI3NmVlNS4uMDAwMDAwMA0KPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9z eW5vcHN5cy9LY29uZmlnDQo+ICsrKyAvZGV2L251bGwNCj4gQEAgLTEsMjcgKzAsMCBAQA0KPiAt Iw0KPiAtIyBTeW5vcHN5cyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uDQo+IC0jDQo+IC0N Cj4gLWNvbmZpZyBORVRfVkVORE9SX1NZTk9QU1lTDQo+IC0JYm9vbCAiU3lub3BzeXMgZGV2aWNl cyINCj4gLQlkZWZhdWx0IHkNCj4gLQktLS1oZWxwLS0tDQo+IC0JICBJZiB5b3UgaGF2ZSBhIG5l dHdvcmsgKEV0aGVybmV0KSBkZXZpY2UgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZLg0K PiAtDQo+IC0JICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3Qg ZGlyZWN0bHkgYWZmZWN0IHRoZQ0KPiAtCSAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1 c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbA0KPiAtCSAgdGhlIHF1ZXN0aW9ucyBhYm91 dCBTeW5vcHN5cyBkZXZpY2VzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsIGJlIGFza2VkDQo+IC0J ICBmb3IgeW91ciBzcGVjaWZpYyBkZXZpY2UgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuDQo+ IC0NCj4gLWlmIE5FVF9WRU5ET1JfU1lOT1BTWVMNCj4gLQ0KPiAtY29uZmlnIFNZTk9QU1lTX0RX Q19FVEhfUU9TDQo+IC0JdHJpc3RhdGUgIlN5cG5vcHN5cyBEV0MgRXRoZXJuZXQgUU9TIHY0LjEw YSBzdXBwb3J0Ig0KPiAtCXNlbGVjdCBQSFlMSUINCj4gLQlzZWxlY3QgQ1JDMzINCj4gLQlzZWxl Y3QgTUlJDQo+IC0JZGVwZW5kcyBvbiBPRiAmJiBIQVNfRE1BDQo+IC0JLS0taGVscC0tLQ0KPiAt CSAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIERXQyBFdGhlcm5ldCBRb1MgZnJvbSBTeW5vcHN5 cw0KPiAtDQo+IC1lbmRpZiAjIE5FVF9WRU5ET1JfU1lOT1BTWVMNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L3N5bm9wc3lzL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvc3lub3BzeXMvTWFrZWZpbGUNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDdhMzc1NzIuLjAwMDAwMDANCj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMv TWFrZWZpbGUNCj4gKysrIC9kZXYvbnVsbA0KPiBAQCAtMSw1ICswLDAgQEANCj4gLSMNCj4gLSMg TWFrZWZpbGUgZm9yIHRoZSBTeW5vcHN5cyBuZXR3b3JrIGRldmljZSBkcml2ZXJzLg0KPiAtIw0K PiAtDQo+IC1vYmotJChDT05GSUdfU1lOT1BTWVNfRFdDX0VUSF9RT1MpICs9IGR3Y19ldGhfcW9z Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N5bm9wc3lzL2R3Y19ldGhf cW9zLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zeW5vcHN5cy9kd2NfZXRoX3Fvcy5jDQo+IGRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCA0NjdkY2M1Li4wMDAwMDAwDQo+IC0tLSBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L3N5bm9wc3lzL2R3Y19ldGhfcW9zLmMNCj4gKysrIC9kZXYv bnVsbA0KPiBAQCAtMSwyOTk2ICswLDAgQEANCj4gLS8qICBTeW5vcHN5cyBEV0MgRXRoZXJuZXQg UXVhbGl0eS1vZi1TZXJ2aWNlIHY0LjEwYSBsaW51eCBkcml2ZXINCj4gLSAqDQo+IC0gKiAgVGhp cyBpcyBhIGRyaXZlciBmb3IgdGhlIFN5bm9wc3lzIERXQyBFdGhlcm5ldCBRb1MgSVAgdmVyc2lv biA0LjEwYSAoR01BQykuDQo+IC0gKiAgVGhpcyB2ZXJzaW9uIGludHJvZHVjZWQgYSBsb3Qgb2Yg Y2hhbmdlcyB3aGljaCBicmVha3MgYmFja3dhcmRzDQo+IC0gKiAgY29tcGF0aWJpbGl0eSB0aGUg bm9uLVFvUyBJUCBmcm9tIFN5bm9wc3lzICh1c2VkIGluIHRoZSBTVCBNaWNybyBkcml2ZXJzKS4N Cj4gLSAqICBTb21lIGZpZWxkcyBkaWZmZXIgYmV0d2VlbiB2ZXJzaW9uIDQuMDBhIGFuZCA0LjEw YSwgbWFpbmx5IHRoZSBpbnRlcnJ1cHQNCj4gLSAqICBiaXQgZmllbGRzLiBUaGUgZHJpdmVyIGNv dWxkIGJlIG1hZGUgY29tcGF0aWJsZSB3aXRoIDQuMDAsIGlmIGFsbCByZWxldmFudA0KPiAtICog IEhXIGVycmF0YXMgYXJlIGhhbmRsZWQuDQo+IC0gKg0KPiAtICogIFRoZSBHTUFDIGlzIGhpZ2hs eSBjb25maWd1cmFibGUgYXQgc3ludGhlc2lzIHRpbWUuIFRoaXMgZHJpdmVyIGhhcyBiZWVuDQo+ IC0gKiAgZGV2ZWxvcGVkIGZvciBhIHN1YnNldCBvZiB0aGUgdG90YWwgYXZhaWxhYmxlIGZlYXR1 cmUgc2V0LiBDdXJyZW50bHkNCj4gLSAqICBpdCBzdXBwb3J0czoNCj4gLSAqICAtIFRTTw0KPiAt ICogIC0gQ2hlY2tzdW0gb2ZmbG9hZCBmb3IgUlggYW5kIFRYLg0KPiAtICogIC0gRW5lcmd5IGVm ZmljaWVudCBldGhlcm5ldC4NCj4gLSAqICAtIEdNSUkgcGh5IGludGVyZmFjZS4NCj4gLSAqICAt IFRoZSBzdGF0aXN0aWNzIG1vZHVsZS4NCj4gLSAqICAtIFNpbmdsZSBSWCBhbmQgVFggcXVldWUu DQo+IC0gKg0KPiAtICogIENvcHlyaWdodCAoQykgMjAxNSBBeGlzIENvbW11bmljYXRpb25zIEFC Lg0KPiAtICoNCj4gLSAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KPiAtICogIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQo+IC0gKiAg dmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4N Cj4gLSAqLw0KPiAtDQo+IC0jaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+IC0jaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQo+IC0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQo+IC0jaW5jbHVkZSA8 bGludXgvaW5pdC5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+IC0jaW5jbHVkZSA8bGlu dXgvZXRodG9vbC5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4NCj4gLSNpbmNsdWRlIDxs aW51eC90eXBlcy5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiAtI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+DQo+IC0jaW5jbHVkZSA8bGludXgvbW0uaD4NCj4gLSNpbmNsdWRl IDxsaW51eC9uZXRkZXZpY2UuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPg0K PiAtI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8 bGludXgvcGh5Lmg+DQo+IC0jaW5jbHVkZSA8bGludXgvbWlpLmg+DQo+IC0jaW5jbHVkZSA8bGlu dXgvZG1hLW1hcHBpbmcuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+DQo+IC0NCj4g LSNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9iaXRyZXYuaD4N Cj4gLSNpbmNsdWRlIDxsaW51eC9jcmMzMi5oPg0KPiAtDQo+IC0jaW5jbHVkZSA8bGludXgvb2Yu aD4NCj4gLSNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9j bG9ja3NvdXJjZS5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L25ldF90c3RhbXAuaD4NCj4gLSNpbmNs dWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+IC0jaW5jbHVkZSA8bGludXgvb2ZfbmV0Lmg+DQo+ IC0jaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L29mX21k aW8uaD4NCj4gLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L3Rj cC5oPg0KPiAtDQo+IC0jZGVmaW5lIERSSVZFUl9OQU1FCQkJImR3Y2Vxb3MiDQo+IC0jZGVmaW5l IERSSVZFUl9ERVNDUklQVElPTgkJIlN5bm9wc3lzIERXQyBFdGhlcm5ldCBRb1MgZHJpdmVyIg0K PiAtI2RlZmluZSBEUklWRVJfVkVSU0lPTgkJCSIwLjkiDQo+IC0NCj4gLSNkZWZpbmUgRFdDRVFP U19NU0dfREVGQVVMVAkoTkVUSUZfTVNHX0RSViB8IE5FVElGX01TR19QUk9CRSB8IFwNCj4gLQlO RVRJRl9NU0dfTElOSyB8IE5FVElGX01TR19JRkRPV04gfCBORVRJRl9NU0dfSUZVUCkNCj4gLQ0K PiAtI2RlZmluZSBEV0NFUU9TX1RYX1RJTUVPVVQgNSAvKiBTZWNvbmRzICovDQo+IC0NCj4gLSNk ZWZpbmUgRFdDRVFPU19MUElfVElNRVJfTUlOICAgICAgOA0KPiAtI2RlZmluZSBEV0NFUU9TX0xQ SV9USU1FUl9NQVggICAgICAoKDEgPDwgMjApIC0gMSkNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9T X1JYX0JVRl9TSVpFIDIwNDgNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX1JYX0RDTlQgMjU2DQo+ IC0jZGVmaW5lIERXQ0VRT1NfVFhfRENOVCAyNTYNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX0hB U0hfVEFCTEVfU0laRSA2NA0KPiAtDQo+IC0vKiBUaGUgc2l6ZSBmaWVsZCBpbiB0aGUgRE1BIGRl c2NyaXB0b3IgaXMgMTQgYml0cyAqLw0KPiAtI2RlZmluZSBCWVRFU19QRVJfRE1BX0RFU0MgMTYz NzYNCj4gLQ0KPiAtLyogSGFyZHdhcmUgcmVnaXN0ZXJzICovDQo+IC0jZGVmaW5lIFNUQVJUX01B Q19SRUdfT0ZGU0VUICAgIDB4MDAwMA0KPiAtI2RlZmluZSBNQVhfTUFDX1JFR19PRkZTRVQgICAg ICAweDBiZDANCj4gLSNkZWZpbmUgU1RBUlRfTVRMX1JFR19PRkZTRVQgICAgMHgwYzAwDQo+IC0j ZGVmaW5lIE1BWF9NVExfUkVHX09GRlNFVCAgICAgIDB4MGQ3Yw0KPiAtI2RlZmluZSBTVEFSVF9E TUFfUkVHX09GRlNFVCAgICAweDEwMDANCj4gLSNkZWZpbmUgTUFYX0RNQV9SRUdfT0ZGU0VUICAg ICAgMHgxMTdDDQo+IC0NCj4gLSNkZWZpbmUgUkVHX1NQQUNFX1NJWkUgICAgICAgICAgMHgxODAw DQo+IC0NCj4gLS8qIERNQSAqLw0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19ETUFfTU9ERSAgICAg ICAgICAgICAweDEwMDANCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfRE1BX1NZU0JVU19NT0RFICAg ICAgMHgxMDA0DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX0RNQV9JUyAgICAgICAgICAgICAgIDB4 MTAwOA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19ETUFfREVCVUdfU1QwICAgICAgICAweDEwMGMN Cj4gLQ0KPiAtLyogRE1BIGNoYW5uZWwgcmVnaXN0ZXJzICovDQo+IC0jZGVmaW5lIFJFR19EV0NF UU9TX0RNQV9DSDBfQ1RSTCAgICAgICAgIDB4MTEwMA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19E TUFfQ0gwX1RYX0NUUkwgICAgICAweDExMDQNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfRE1BX0NI MF9SWF9DVFJMICAgICAgMHgxMTA4DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX0RNQV9DSDBfVFhE RVNDX0xJU1QgIDB4MTExNA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19ETUFfQ0gwX1JYREVTQ19M SVNUICAweDExMWMNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfRE1BX0NIMF9UWERFU0NfVEFJTCAg MHgxMTIwDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX0RNQV9DSDBfUlhERVNDX1RBSUwgIDB4MTEy OA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19ETUFfQ0gwX1RYREVTQ19MRU4gICAweDExMmMNCj4g LSNkZWZpbmUgUkVHX0RXQ0VRT1NfRE1BX0NIMF9SWERFU0NfTEVOICAgMHgxMTMwDQo+IC0jZGVm aW5lIFJFR19EV0NFUU9TX0RNQV9DSDBfSUUgICAgICAgICAgIDB4MTEzNA0KPiAtI2RlZmluZSBS RUdfRFdDRVFPU19ETUFfQ0gwX0NVUl9UWERFU0MgICAweDExNDQNCj4gLSNkZWZpbmUgUkVHX0RX Q0VRT1NfRE1BX0NIMF9DVVJfUlhERVNDICAgMHgxMTRjDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9T X0RNQV9DSDBfQ1VSX1RYQlVGICAgIDB4MTE1NA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19ETUFf Q0gwX0NVUl9SWEJVRyAgICAweDExNWMNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfRE1BX0NIMF9T VEEgICAgICAgICAgMHgxMTYwDQo+IC0NCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfTU9ERV9UWFBS ICAgICAgICAgICAgQklUKDExKQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9NT0RFX0RBICAgICAg ICAgICAgICBCSVQoMSkNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9TWVNCVVNfTU9ERV9F Tl9MUEkgICBCSVQoMzEpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1NZU0JVU19NT0RFX0ZCICAg ICAgIEJJVCgwKQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9TWVNCVVNfTU9ERV9BQUwgICAgICBC SVQoMTIpDQo+IC0NCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfU1lTQlVTX01PREVfUkRfT1NSX0xJ TUlUKHgpIFwNCj4gLQkoKCh4KSA8PCAxNikgJiAweDAwMEYwMDAwKQ0KPiAtI2RlZmluZSBEV0NF UU9TX0RNQV9TWVNCVVNfTU9ERV9SRF9PU1JfTElNSVRfREVGQVVMVCAgICAzDQo+IC0jZGVmaW5l IERXQ0VRT1NfRE1BX1NZU0JVU19NT0RFX1JEX09TUl9MSU1JVF9NQVNLICAgICAgIEdFTk1BU0so MTksIDE2KQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1NZU0JVU19NT0RFX1dSX09TUl9M SU1JVCh4KSBcDQo+IC0JKCgoeCkgPDwgMjQpICYgMHgwRjAwMDAwMCkNCj4gLSNkZWZpbmUgRFdD RVFPU19ETUFfU1lTQlVTX01PREVfV1JfT1NSX0xJTUlUX0RFRkFVTFQgICAgMw0KPiAtI2RlZmlu ZSBEV0NFUU9TX0RNQV9TWVNCVVNfTU9ERV9XUl9PU1JfTElNSVRfTUFTSyAgICAgICBHRU5NQVNL KDI3LCAyNCkNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9TWVNCVVNfTU9ERV9CVVJTVF9N QVNLIEdFTk1BU0soNywgMSkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfU1lTQlVTX01PREVfQlVS U1QoeCkgXA0KPiAtCSgoKHgpIDw8IDEpICYgRFdDRVFPU19ETUFfU1lTQlVTX01PREVfQlVSU1Rf TUFTSykNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfU1lTQlVTX01PREVfQlVSU1RfREVGQVVMVCAg IEdFTk1BU0soMywgMSkNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9DSF9DVFJMX1BCTFg4 ICAgICAgIEJJVCgxNikNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0hfQ1RSTF9EU0woeCkgICAg ICAoKHgpIDw8IDE4KQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIX0NUUkxfUEJMKHgp ICAgICAgICgoeCkgPDwgMTYpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIX0NUUkxfU1RBUlQg ICAgICAgICBCSVQoMCkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0hfUlhfQ1RSTF9CVUZTSVpF KHgpICAgKCh4KSA8PCAxKQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9DSF9UWF9PU1AgICAgICAg ICAgICBCSVQoNCkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0hfVFhfVFNFICAgICAgICAgICAg QklUKDEyKQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIMF9JRV9OSUUgICAgICAgICAg IEJJVCgxNSkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0gwX0lFX0FJRSAgICAgICAgICAgQklU KDE0KQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9DSDBfSUVfUklFICAgICAgICAgICBCSVQoNikN Cj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0gwX0lFX1RJRSAgICAgICAgICAgQklUKDApDQo+IC0j ZGVmaW5lIERXQ0VRT1NfRE1BX0NIMF9JRV9GQkVFICAgICAgICAgIEJJVCgxMikNCj4gLSNkZWZp bmUgRFdDRVFPU19ETUFfQ0gwX0lFX1JCVUUgICAgICAgICAgQklUKDcpDQo+IC0NCj4gLSNkZWZp bmUgRFdDRVFPU19ETUFfSVNfREMwSVMgICAgICAgICAgICAgQklUKDApDQo+IC0jZGVmaW5lIERX Q0VRT1NfRE1BX0lTX01UTElTICAgICAgICAgICAgIEJJVCgxNikNCj4gLSNkZWZpbmUgRFdDRVFP U19ETUFfSVNfTUFDSVMgICAgICAgICAgICAgQklUKDE3KQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VR T1NfRE1BX0NIMF9JU19USSAgICAgICAgICAgIEJJVCgwKQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RN QV9DSDBfSVNfUkkgICAgICAgICAgICBCSVQoNikNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0gw X0lTX1JCVSAgICAgICAgICAgQklUKDcpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIMF9JU19G QkUgICAgICAgICAgIEJJVCgxMikNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0gwX0lTX0NERSAg ICAgICAgICAgQklUKDEzKQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9DSDBfSVNfQUlTICAgICAg ICAgICBCSVQoMTQpDQo+IC0NCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0gwX0lTX1RFQiAgICAg ICAgICAgR0VOTUFTSygxOCwgMTYpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIMF9JU19UWF9F UlJfUkVBRCAgIEJJVCgxNikNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfQ0gwX0lTX1RYX0VSUl9E RVNDUiAgQklUKDE3KQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIMF9JU19SRUIgICAg ICAgICAgIEdFTk1BU0soMjEsIDE5KQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9DSDBfSVNfUlhf RVJSX1JFQUQgICBCSVQoMTkpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0NIMF9JU19SWF9FUlJf REVTQ1IgIEJJVCgyMCkNCj4gLQ0KPiAtLyogRE1BIGRlc2NyaXB0b3IgYml0cyBmb3IgUlggbm9y bWFsIGRlc2NyaXB0b3IgKHJlYWQgZm9ybWF0KSAqLw0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9S REVTM19PV04gICAgIEJJVCgzMSkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfUkRFUzNfSU5URSAg ICBCSVQoMzApDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1JERVMzX0JVRjJWICAgQklUKDI1KQ0K PiAtI2RlZmluZSBEV0NFUU9TX0RNQV9SREVTM19CVUYxViAgIEJJVCgyNCkNCj4gLQ0KPiAtLyog RE1BIGRlc2NyaXB0b3IgYml0cyBmb3IgUlggbm9ybWFsIGRlc2NyaXB0b3IgKHdyaXRlIGJhY2sg Zm9ybWF0KSAqLw0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9SREVTMV9JUENFICAgIEJJVCg3KQ0K PiAtI2RlZmluZSBEV0NFUU9TX0RNQV9SREVTM19FUyAgICAgIEJJVCgxNSkNCj4gLSNkZWZpbmUg RFdDRVFPU19ETUFfUkRFUzNfRV9KVCAgICBCSVQoMTQpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1B X1JERVMzX1BMKHgpICAgKCh4KSAmIDB4N2ZmZikNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfUkRF UzFfUFQgICAgICAweDAwMDAwMDA3DQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1JERVMxX1BUX1VE UCAgQklUKDApDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1JERVMxX1BUX1RDUCAgQklUKDEpDQo+ IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1JERVMxX1BUX0lDTVAgMHgwMDAwMDAwMw0KPiAtDQo+IC0v KiBETUEgZGVzY3JpcHRvciBiaXRzIGZvciBUWCBub3JtYWwgZGVzY3JpcHRvciAocmVhZCBmb3Jt YXQpICovDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1RERVMyX0lPQyAgICAgQklUKDMxKQ0KPiAt I2RlZmluZSBEV0NFUU9TX0RNQV9UREVTM19PV04gICAgIEJJVCgzMSkNCj4gLSNkZWZpbmUgRFdD RVFPU19ETUFfVERFUzNfQ1RYVCAgICBCSVQoMzApDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1RE RVMzX0ZEICAgICAgQklUKDI5KQ0KPiAtI2RlZmluZSBEV0NFUU9TX0RNQV9UREVTM19MRCAgICAg IEJJVCgyOCkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfVERFUzNfQ0lQSCAgICBCSVQoMTYpDQo+ IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1RERVMzX0NJUFAgICAgQklUKDE3KQ0KPiAtI2RlZmluZSBE V0NFUU9TX0RNQV9UREVTM19DQSAgICAgIDB4MDAwMzAwMDANCj4gLSNkZWZpbmUgRFdDRVFPU19E TUFfVERFUzNfVFNFICAgICBCSVQoMTgpDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX0RFUzNfVEhM KHgpICAgKCh4KSA8PCAxOSkNCj4gLSNkZWZpbmUgRFdDRVFPU19ETUFfREVTMl9CMkwoeCkgICAo KHgpIDw8IDE2KQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfRE1BX1RERVMzX1RDTVNTViAgICBC SVQoMjYpDQo+IC0NCj4gLS8qIERNQSBjaGFubmVsIHN0YXRlcyAqLw0KPiAtI2RlZmluZSBETUFf VFhfQ0hfU1RPUFBFRCAgIDANCj4gLSNkZWZpbmUgRE1BX1RYX0NIX1NVU1BFTkRFRCA2DQo+IC0N Cj4gLSNkZWZpbmUgRE1BX0dFVF9UWF9TVEFURV9DSDAoc3RhdHVzMCkgKChzdGF0dXMwICYgMHhG MDAwKSA+PiAxMikNCj4gLQ0KPiAtLyogTVRMICovDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01U TF9PUEVSICAgICAgICAgICAgIDB4MGMwMA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NVExfREVC VUdfU1QgICAgICAgICAweDBjMGMNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTVRMX1RYUTBfREVC VUdfU1QgICAgMHgwZDA4DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01UTF9SWFEwX0RFQlVHX1NU ICAgIDB4MGQzOA0KPiAtDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01UTF9JUyAgICAgICAgICAg ICAgIDB4MGMyMA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NVExfVFhRMF9PUEVSICAgICAgICAw eDBkMDANCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTVRMX1JYUTBfT1BFUiAgICAgICAgMHgwZDMw DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01UTF9SWFEwX01JU19DTlQgICAgIDB4MGQzNA0KPiAt I2RlZmluZSBSRUdfRFdDRVFPU19NVExfUlhRMF9DVFJMICAgICAgICAgMHgwZDNjDQo+IC0NCj4g LSNkZWZpbmUgUkVHX0RXQ0VRT1NfTVRMX1EwX0lTQ1RSTCAgICAgICAgIDB4MGQyYw0KPiAtDQo+ IC0jZGVmaW5lIERXQ0VRT1NfTVRMX1NDSEFMR19TVFJJQ1QgICAgICAgIDB4MDAwMDAwNjANCj4g LQ0KPiAtI2RlZmluZSBEV0NFUU9TX01UTF9UWFFfVFhRRU4gICAgICAgICAgICBCSVQoMykNCj4g LSNkZWZpbmUgRFdDRVFPU19NVExfVFhRX1RTRiAgICAgICAgICAgICAgQklUKDEpDQo+IC0jZGVm aW5lIERXQ0VRT1NfTVRMX1RYUV9GVFEgICAgICAgICAgICAgIEJJVCgwKQ0KPiAtI2RlZmluZSBE V0NFUU9TX01UTF9UWFFfVFRDNTEyICAgICAgICAgICAweDAwMDAwMDcwDQo+IC0NCj4gLSNkZWZp bmUgRFdDRVFPU19NVExfVFhRX1NJWkUoeCkgICAgICAgICAgKCgoKHgpIC0gMjU2KSAmIDB4ZmYw MCkgPDwgOCkNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX01UTF9SWFFfU0laRSh4KSAgICAgICAg ICAoKCgoeCkgLSAyNTYpICYgMHhmZjAwKSA8PCAxMikNCj4gLSNkZWZpbmUgRFdDRVFPU19NVExf UlhRX0VIRkMgICAgICAgICAgICAgQklUKDcpDQo+IC0jZGVmaW5lIERXQ0VRT1NfTVRMX1JYUV9E SVNfVENQX0VGICAgICAgIEJJVCg2KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01UTF9SWFFfRkVQICAg ICAgICAgICAgICBCSVQoNCkNCj4gLSNkZWZpbmUgRFdDRVFPU19NVExfUlhRX0ZVUCAgICAgICAg ICAgICAgQklUKDMpDQo+IC0jZGVmaW5lIERXQ0VRT1NfTVRMX1JYUV9SU0YgICAgICAgICAgICAg IEJJVCg1KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01UTF9SWFFfUlRDMzIgICAgICAgICAgICBCSVQo MCkNCj4gLQ0KPiAtLyogTUFDICovDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01BQ19DRkcgICAg ICAgICAgICAgIDB4MDAwMA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NQUNfRVhUX0NGRyAgICAg ICAgICAweDAwMDQNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTUFDX1BLVF9GSUxUICAgICAgICAg MHgwMDA4DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01BQ19XRF9UTyAgICAgICAgICAgIDB4MDAw Yw0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19IQVNUQUJMRV9MTyAgICAgICAgICAweDAwMTANCj4g LSNkZWZpbmUgUkVHX0RXQ0VRT1NfSEFTVEFCTEVfSEkgICAgICAgICAgMHgwMDE0DQo+IC0jZGVm aW5lIFJFR19EV0NFUU9TX01BQ19JUyAgICAgICAgICAgICAgIDB4MDBiMA0KPiAtI2RlZmluZSBS RUdfRFdDRVFPU19NQUNfSUUgICAgICAgICAgICAgICAweDAwYjQNCj4gLSNkZWZpbmUgUkVHX0RX Q0VRT1NfTUFDX1NUQVQgICAgICAgICAgICAgMHgwMGI4DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9T X01BQ19NRElPX0FERFIgICAgICAgIDB4MDIwMA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NQUNf TURJT19EQVRBICAgICAgICAweDAyMDQNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTUFDX01BQ19B RERSMF9ISSAgICAgMHgwMzAwDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01BQ19NQUNfQUREUjBf TE8gICAgIDB4MDMwNA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NQUNfUlhRMF9DVFJMMCAgICAg ICAweDAwYTANCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTUFDX0hXX0ZFQVRVUkUwICAgICAgMHgw MTFjDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01BQ19IV19GRUFUVVJFMSAgICAgIDB4MDEyMA0K PiAtI2RlZmluZSBSRUdfRFdDRVFPU19NQUNfSFdfRkVBVFVSRTIgICAgICAweDAxMjQNCj4gLSNk ZWZpbmUgUkVHX0RXQ0VRT1NfTUFDX0hBU0hUQUJMRV9MTyAgICAgMHgwMDEwDQo+IC0jZGVmaW5l IFJFR19EV0NFUU9TX01BQ19IQVNIVEFCTEVfSEkgICAgIDB4MDAxNA0KPiAtI2RlZmluZSBSRUdf RFdDRVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTICAweDAwZDANCj4gLSNkZWZpbmUgUkVHX0RXQ0VR T1NfTUFDX0xQSV9USU1FUlNfQ1RSTCAgMHgwMGQ0DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01B Q19MUElfRU5UUllfVElNRVIgIDB4MDBkOA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NQUNfMVVT X1RJQ19DT1VOVEVSICAweDAwZGMNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTUFDX1JYX0ZMT1df Q1RSTCAgICAgMHgwMDkwDQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01BQ19RMF9UWF9GTE9XCSAw eDAwNzANCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19DRkdfQUNTICAgICAgICAgICAgICBC SVQoMjApDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX0NGR19KRCAgICAgICAgICAgICAgIEJJVCgx NykNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfQ0ZHX0pFICAgICAgICAgICAgICAgQklUKDE2KQ0K PiAtI2RlZmluZSBEV0NFUU9TX01BQ19DRkdfUFMgICAgICAgICAgICAgICBCSVQoMTUpDQo+IC0j ZGVmaW5lIERXQ0VRT1NfTUFDX0NGR19GRVMgICAgICAgICAgICAgIEJJVCgxNCkNCj4gLSNkZWZp bmUgRFdDRVFPU19NQUNfQ0ZHX0RNICAgICAgICAgICAgICAgQklUKDEzKQ0KPiAtI2RlZmluZSBE V0NFUU9TX01BQ19DRkdfRE8gICAgICAgICAgICAgICBCSVQoMTApDQo+IC0jZGVmaW5lIERXQ0VR T1NfTUFDX0NGR19URSAgICAgICAgICAgICAgIEJJVCgxKQ0KPiAtI2RlZmluZSBEV0NFUU9TX01B Q19DRkdfSVBDICAgICAgICAgICAgICBCSVQoMjcpDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX0NG R19SRSAgICAgICAgICAgICAgIEJJVCgwKQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfQUREUl9I SUdIKHJlZykgICAgICAgICAgICgweDAwMDAwMzAwICsgKHJlZyAqIDgpKQ0KPiAtI2RlZmluZSBE V0NFUU9TX0FERFJfTE9XKHJlZykgICAgICAgICAgICAoMHgwMDAwMDMwNCArIChyZWcgKiA4KSkN Cj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19JU19MUElfSU5UICAgICAgICAgICBCSVQoNSkN Cj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfSVNfTU1DX0lOVCAgICAgICAgICAgQklUKDgpDQo+IC0N Cj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfUlhRX0VOICAgICAgICAgICAgICAgQklUKDEpDQo+IC0j ZGVmaW5lIERXQ0VRT1NfTUFDX01BQ19BRERSX0hJX0VOICAgICAgIEJJVCgzMSkNCj4gLSNkZWZp bmUgRFdDRVFPU19NQUNfUEtUX0ZJTFRfUkEgICAgICAgICAgQklUKDMxKQ0KPiAtI2RlZmluZSBE V0NFUU9TX01BQ19QS1RfRklMVF9IUEYgICAgICAgICBCSVQoMTApDQo+IC0jZGVmaW5lIERXQ0VR T1NfTUFDX1BLVF9GSUxUX1NBRiAgICAgICAgIEJJVCg5KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01B Q19QS1RfRklMVF9TQUlGICAgICAgICBCSVQoOCkNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfUEtU X0ZJTFRfREJGICAgICAgICAgQklUKDUpDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX1BLVF9GSUxU X1BNICAgICAgICAgIEJJVCg0KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19QS1RfRklMVF9EQUlG ICAgICAgICBCSVQoMykNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfUEtUX0ZJTFRfSE1DICAgICAg ICAgQklUKDIpDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX1BLVF9GSUxUX0hVQyAgICAgICAgIEJJ VCgxKQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19QS1RfRklMVF9QUiAgICAgICAgICBCSVQoMCkN Cj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19NRElPX0FERFJfQ1IoeCkgICAgICAoKCh4ICYg MTUpKSA8PCA4KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19NRElPX0FERFJfQ1JfMjAgICAgICAy DQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX01ESU9fQUREUl9DUl8zNSAgICAgIDMNCj4gLSNkZWZp bmUgRFdDRVFPU19NQUNfTURJT19BRERSX0NSXzYwICAgICAgMA0KPiAtI2RlZmluZSBEV0NFUU9T X01BQ19NRElPX0FERFJfQ1JfMTAwICAgICAxDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX01ESU9f QUREUl9DUl8xNTAgICAgIDQNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfTURJT19BRERSX0NSXzI1 MCAgICAgNQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19NRElPX0FERFJfR09DX1JFQUQgICAweDAw MDAwMDBjDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX01ESU9fQUREUl9HT0NfV1JJVEUgIEJJVCgy KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19NRElPX0FERFJfR0IgICAgICAgICBCSVQoMCkNCj4g LQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVNfVExQSUVOICBCSVQoMCkN Cj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTX1RMUElFWCAgQklUKDEpDQo+ IC0jZGVmaW5lIERXQ0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVU19STFBJRU4gIEJJVCgyKQ0KPiAt I2RlZmluZSBEV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVNfUkxQSUVYICBCSVQoMykNCj4gLSNk ZWZpbmUgRFdDRVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTX1RMUElTVCAgQklUKDgpDQo+IC0jZGVm aW5lIERXQ0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVU19STFBJU1QgIEJJVCg5KQ0KPiAtI2RlZmlu ZSBEV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVNfTFBJRU4gICBCSVQoMTYpDQo+IC0jZGVmaW5l IERXQ0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVU19QTFMgICAgIEJJVCgxNykNCj4gLSNkZWZpbmUg RFdDRVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTX1BMU0VOICAgQklUKDE4KQ0KPiAtI2RlZmluZSBE V0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVNfTElQVFhBICBCSVQoMTkpDQo+IC0jZGVmaW5lIERX Q0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVU19MUElURSAgIEJJVCgyMCkNCj4gLSNkZWZpbmUgRFdD RVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTX0xQSVRDU0UgQklUKDIxKQ0KPiAtDQo+IC0jZGVmaW5l IERXQ0VRT1NfTUFDXzFVU19USUNfQ09VTlRFUl9WQUwoeCkgICgoeCkgJiBHRU5NQVNLKDExLCAw KSkNCj4gLQ0KPiAtI2RlZmluZSBEV0NFUU9TX0xQSV9DVFJMX0VOQUJMRV9FRUUgICAgICAoRFdD RVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTX0xQSVRFIHwgXA0KPiAtCQkJCQkgIERXQ0VRT1NfTUFD X0xQSV9DVFJMX1NUQVRVU19MSVBUWEEgfCBcDQo+IC0JCQkJCSAgRFdDRVFPU19NQUNfTFBJX0NU UkxfU1RBVFVTX0xQSUVOKQ0KPiAtDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX1JYX0ZMT1dfQ1RS TF9SRkUgQklUKDApDQo+IC0NCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfUTBfVFhfRkxPV19URkUg ICBCSVQoMSkNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfUTBfVFhfRkxPV19QVCh0aW1lKQkoKHRp bWUpIDw8IDE2KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19RMF9UWF9GTE9XX1BMVF80X1NMT1RT ICgwIDw8IDQpDQo+IC0NCj4gLS8qIEZlYXR1cmVzICovDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFD X0hXX0ZFQVRVUkUwX1JYQ09FU0VMIEJJVCgxNikNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfSFdf RkVBVFVSRTBfVFhDT0VTRUwgQklUKDE0KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19IV19GRUFU VVJFMF9IRFNFTCAgICBCSVQoMikNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfSFdfRkVBVFVSRTBf RUVFU0VMICAgQklUKDEzKQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19IV19GRUFUVVJFMF9HTUlJ U0VMICBCSVQoMSkNCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfSFdfRkVBVFVSRTBfTUlJU0VMICAg QklUKDApDQo+IC0NCj4gLSNkZWZpbmUgRFdDRVFPU19NQUNfSFdfRkVBVFVSRTFfVFNPRU4gICAg QklUKDE4KQ0KPiAtI2RlZmluZSBEV0NFUU9TX01BQ19IV19GRUFUVVJFMV9UWEZJRk9TSVpFKHgp ICgoMTI4IDw8ICgoeCkgJiAweDdjMCkpID4+IDYpDQo+IC0jZGVmaW5lIERXQ0VRT1NfTUFDX0hX X0ZFQVRVUkUxX1JYRklGT1NJWkUoeCkgICgxMjggPDwgKCh4KSAmIDB4MWYpKQ0KPiAtDQo+IC0j ZGVmaW5lIERXQ0VRT1NfTUFYX1BFUkZFQ1RfQUREUkVTU0VTKGZlYXR1cmUxKSBcDQo+IC0JKDEg KyAoKChmZWF0dXJlMSkgJiAweDFmYzAwMDApID4+IDE4KSkNCj4gLQ0KPiAtI2RlZmluZSBEV0NF UU9TX01ESU9fUEhZQUREUih4KSAgICAgKCgoeCkgJiAweDFmKSA8PCAyMSkNCj4gLSNkZWZpbmUg RFdDRVFPU19NRElPX1BIWVJFRyh4KSAgICAgICgoKHgpICYgMHgxZikgPDwgMTYpDQo+IC0NCj4g LSNkZWZpbmUgRFdDRVFPU19ETUFfTU9ERV9TV1IgICAgICAgICAgICBCSVQoMCkNCj4gLQ0KPiAt I2RlZmluZSBEV0NFUU9TX0RXQ0VRT1NfUlhfQlVGX1NJWkUgMjA0OA0KPiAtDQo+IC0vKiBNYWMg TWFuYWdlbWVudCBDb3VudGVycyAqLw0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NTUNfQ1RSTCAg ICAgICAgICAgICAweDA3MDANCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTU1DX1JYSVJRICAgICAg ICAgICAgMHgwNzA0DQo+IC0jZGVmaW5lIFJFR19EV0NFUU9TX01NQ19UWElSUSAgICAgICAgICAg IDB4MDcwOA0KPiAtI2RlZmluZSBSRUdfRFdDRVFPU19NTUNfUlhJUlFNQVNLICAgICAgICAweDA3 MGMNCj4gLSNkZWZpbmUgUkVHX0RXQ0VRT1NfTU1DX1RYSVJRTUFTSyAgICAgICAgMHgwNzEwDQo+ IC0NCj4gLSNkZWZpbmUgRFdDRVFPU19NTUNfQ1RSTF9DTlRSU1QgICAgICAgICAgQklUKDApDQo+ IC0jZGVmaW5lIERXQ0VRT1NfTU1DX0NUUkxfUlNUT05SRCAgICAgICAgIEJJVCgyKQ0KPiAtDQo+ IC0jZGVmaW5lIERXQ19NTUNfVFhMUElUUkFOU0NOVFIgICAgICAgICAgIDB4MDdGMA0KPiAtI2Rl ZmluZSBEV0NfTU1DX1RYTFBJVVNDTlRSICAgICAgICAgICAgICAweDA3RUMNCj4gLSNkZWZpbmUg RFdDX01NQ19UWE9WRVJTSVpFX0cgICAgICAgICAgICAgMHgwNzc4DQo+IC0jZGVmaW5lIERXQ19N TUNfVFhWTEFOUEFDS0VUU19HICAgICAgICAgIDB4MDc3NA0KPiAtI2RlZmluZSBEV0NfTU1DX1RY UEFVU0VQQUNLRVRTICAgICAgICAgICAweDA3NzANCj4gLSNkZWZpbmUgRFdDX01NQ19UWEVYQ0VT U0RFRiAgICAgICAgICAgICAgMHgwNzZDDQo+IC0jZGVmaW5lIERXQ19NTUNfVFhQQUNLRVRDT1VO VF9HICAgICAgICAgIDB4MDc2OA0KPiAtI2RlZmluZSBEV0NfTU1DX1RYT0NURVRDT1VOVF9HICAg ICAgICAgICAweDA3NjQNCj4gLSNkZWZpbmUgRFdDX01NQ19UWENBUlJJRVJFUlJPUiAgICAgICAg ICAgMHgwNzYwDQo+IC0jZGVmaW5lIERXQ19NTUNfVFhFWENFU1NDT0wgICAgICAgICAgICAgIDB4 MDc1Qw0KPiAtI2RlZmluZSBEV0NfTU1DX1RYTEFURUNPTCAgICAgICAgICAgICAgICAweDA3NTgN Cj4gLSNkZWZpbmUgRFdDX01NQ19UWERFRkVSUkVEICAgICAgICAgICAgICAgMHgwNzU0DQo+IC0j ZGVmaW5lIERXQ19NTUNfVFhNVUxUSUNPTF9HICAgICAgICAgICAgIDB4MDc1MA0KPiAtI2RlZmlu ZSBEV0NfTU1DX1RYU0lOR0xFQ09MX0cgICAgICAgICAgICAweDA3NEMNCj4gLSNkZWZpbmUgRFdD X01NQ19UWFVOREVSRkxPV0VSUk9SICAgICAgICAgMHgwNzQ4DQo+IC0jZGVmaW5lIERXQ19NTUNf VFhCUk9BRENBU1RQQUNLRVRTX0dCICAgIDB4MDc0NA0KPiAtI2RlZmluZSBEV0NfTU1DX1RYTVVM VElDQVNUUEFDS0VUU19HQiAgICAweDA3NDANCj4gLSNkZWZpbmUgRFdDX01NQ19UWFVOSUNBU1RQ QUNLRVRTX0dCICAgICAgMHgwNzNDDQo+IC0jZGVmaW5lIERXQ19NTUNfVFgxMDI0VE9NQVhPQ1RF VFNfR0IgICAgIDB4MDczOA0KPiAtI2RlZmluZSBEV0NfTU1DX1RYNTEyVE8xMDIzT0NURVRTX0dC ICAgICAweDA3MzQNCj4gLSNkZWZpbmUgRFdDX01NQ19UWDI1NlRPNTExT0NURVRTX0dCICAgICAg MHgwNzMwDQo+IC0jZGVmaW5lIERXQ19NTUNfVFgxMjhUTzI1NU9DVEVUU19HQiAgICAgIDB4MDcy Qw0KPiAtI2RlZmluZSBEV0NfTU1DX1RYNjVUTzEyN09DVEVUU19HQiAgICAgICAweDA3MjgNCj4g LSNkZWZpbmUgRFdDX01NQ19UWDY0T0NURVRTX0dCICAgICAgICAgICAgMHgwNzI0DQo+IC0jZGVm aW5lIERXQ19NTUNfVFhNVUxUSUNBU1RQQUNLRVRTX0cgICAgIDB4MDcyMA0KPiAtI2RlZmluZSBE V0NfTU1DX1RYQlJPQURDQVNUUEFDS0VUU19HICAgICAweDA3MUMNCj4gLSNkZWZpbmUgRFdDX01N Q19UWFBBQ0tFVENPVU5UX0dCICAgICAgICAgMHgwNzE4DQo+IC0jZGVmaW5lIERXQ19NTUNfVFhP Q1RFVENPVU5UX0dCICAgICAgICAgIDB4MDcxNA0KPiAtDQo+IC0jZGVmaW5lIERXQ19NTUNfUlhM UElUUkFOU0NOVFIgICAgICAgICAgIDB4MDdGOA0KPiAtI2RlZmluZSBEV0NfTU1DX1JYTFBJVVND TlRSICAgICAgICAgICAgICAweDA3RjQNCj4gLSNkZWZpbmUgRFdDX01NQ19SWENUUkxQQUNLRVRT X0cgICAgICAgICAgMHgwN0U0DQo+IC0jZGVmaW5lIERXQ19NTUNfUlhSQ1ZFUlJPUiAgICAgICAg ICAgICAgIDB4MDdFMA0KPiAtI2RlZmluZSBEV0NfTU1DX1JYV0FUQ0hET0cgICAgICAgICAgICAg ICAweDA3REMNCj4gLSNkZWZpbmUgRFdDX01NQ19SWFZMQU5QQUNLRVRTX0dCICAgICAgICAgMHgw N0Q4DQo+IC0jZGVmaW5lIERXQ19NTUNfUlhGSUZPT1ZFUkZMT1cgICAgICAgICAgIDB4MDdENA0K PiAtI2RlZmluZSBEV0NfTU1DX1JYUEFVU0VQQUNLRVRTICAgICAgICAgICAweDA3RDANCj4gLSNk ZWZpbmUgRFdDX01NQ19SWE9VVE9GUkFOR0VUWVBFICAgICAgICAgMHgwN0NDDQo+IC0jZGVmaW5l IERXQ19NTUNfUlhMRU5HVEhFUlJPUiAgICAgICAgICAgIDB4MDdDOA0KPiAtI2RlZmluZSBEV0Nf TU1DX1JYVU5JQ0FTVFBBQ0tFVFNfRyAgICAgICAweDA3QzQNCj4gLSNkZWZpbmUgRFdDX01NQ19S WDEwMjRUT01BWE9DVEVUU19HQiAgICAgMHgwN0MwDQo+IC0jZGVmaW5lIERXQ19NTUNfUlg1MTJU TzEwMjNPQ1RFVFNfR0IgICAgIDB4MDdCQw0KPiAtI2RlZmluZSBEV0NfTU1DX1JYMjU2VE81MTFP Q1RFVFNfR0IgICAgICAweDA3QjgNCj4gLSNkZWZpbmUgRFdDX01NQ19SWDEyOFRPMjU1T0NURVRT X0dCICAgICAgMHgwN0I0DQo+IC0jZGVmaW5lIERXQ19NTUNfUlg2NVRPMTI3T0NURVRTX0dCICAg ICAgIDB4MDdCMA0KPiAtI2RlZmluZSBEV0NfTU1DX1JYNjRPQ1RFVFNfR0IgICAgICAgICAgICAw eDA3QUMNCj4gLSNkZWZpbmUgRFdDX01NQ19SWE9WRVJTSVpFX0cgICAgICAgICAgICAgMHgwN0E4 DQo+IC0jZGVmaW5lIERXQ19NTUNfUlhVTkRFUlNJWkVfRyAgICAgICAgICAgIDB4MDdBNA0KPiAt I2RlZmluZSBEV0NfTU1DX1JYSkFCQkVSRVJST1IgICAgICAgICAgICAweDA3QTANCj4gLSNkZWZp bmUgRFdDX01NQ19SWFJVTlRFUlJPUiAgICAgICAgICAgICAgMHgwNzlDDQo+IC0jZGVmaW5lIERX Q19NTUNfUlhBTElHTk1FTlRFUlJPUiAgICAgICAgIDB4MDc5OA0KPiAtI2RlZmluZSBEV0NfTU1D X1JYQ1JDRVJST1IgICAgICAgICAgICAgICAweDA3OTQNCj4gLSNkZWZpbmUgRFdDX01NQ19SWE1V TFRJQ0FTVFBBQ0tFVFNfRyAgICAgMHgwNzkwDQo+IC0jZGVmaW5lIERXQ19NTUNfUlhCUk9BRENB U1RQQUNLRVRTX0cgICAgIDB4MDc4Qw0KPiAtI2RlZmluZSBEV0NfTU1DX1JYT0NURVRDT1VOVF9H ICAgICAgICAgICAweDA3ODgNCj4gLSNkZWZpbmUgRFdDX01NQ19SWE9DVEVUQ09VTlRfR0IgICAg ICAgICAgMHgwNzg0DQo+IC0jZGVmaW5lIERXQ19NTUNfUlhQQUNLRVRDT1VOVF9HQiAgICAgICAg IDB4MDc4MA0KPiAtDQo+IC1zdGF0aWMgaW50IGRlYnVnID0gLTE7DQo+IC1tb2R1bGVfcGFyYW0o ZGVidWcsIGludCwgMCk7DQo+IC1NT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiRFdDX2V0aF9xb3Mg ZGVidWcgbGV2ZWwgKDA9bm9uZSwuLi4sMTY9YWxsKSIpOw0KPiAtDQo+IC0vKiBETUEgcmluZyBk ZXNjcmlwdG9yLiBUaGVzZSBhcmUgdXNlZCBhcyBzdXBwb3J0IGRlc2NyaXB0b3JzIGZvciB0aGUg SFcgRE1BICovDQo+IC1zdHJ1Y3QgcmluZ19kZXNjIHsNCj4gLQlzdHJ1Y3Qgc2tfYnVmZiAqc2ti Ow0KPiAtCWRtYV9hZGRyX3QgbWFwcGluZzsNCj4gLQlzaXplX3QgbGVuOw0KPiAtfTsNCj4gLQ0K PiAtLyogRE1BIGhhcmR3YXJlIGRlc2NyaXB0b3IgKi8NCj4gLXN0cnVjdCBkd2NlcW9zX2RtYV9k ZXNjIHsNCj4gLQl1MzIJZGVzMDsNCj4gLQl1MzIJZGVzMTsNCj4gLQl1MzIJZGVzMjsNCj4gLQl1 MzIJZGVzMzsNCj4gLX0gX19fX2NhY2hlbGluZV9hbGlnbmVkOw0KPiAtDQo+IC1zdHJ1Y3QgZHdj ZXFvc19tbWNfY291bnRlcnMgew0KPiAtCV9fdTY0IHR4bHBpdHJhbnNjbnRyOw0KPiAtCV9fdTY0 IHR4cGl1c2NudHI7DQo+IC0JX191NjQgdHhvdmVyc2l6ZV9nOw0KPiAtCV9fdTY0IHR4dmxhbnBh Y2tldHNfZzsNCj4gLQlfX3U2NCB0eHBhdXNlcGFja2V0czsNCj4gLQlfX3U2NCB0eGV4Y2Vzc2Rl ZjsNCj4gLQlfX3U2NCB0eHBhY2tldGNvdW50X2c7DQo+IC0JX191NjQgdHhvY3RldGNvdW50X2c7 DQo+IC0JX191NjQgdHhjYXJyaWVyZXJyb3I7DQo+IC0JX191NjQgdHhleGNlc3Njb2w7DQo+IC0J X191NjQgdHhsYXRlY29sOw0KPiAtCV9fdTY0IHR4ZGVmZXJyZWQ7DQo+IC0JX191NjQgdHhtdWx0 aWNvbF9nOw0KPiAtCV9fdTY0IHR4c2luZ2xlY29sX2c7DQo+IC0JX191NjQgdHh1bmRlcmZsb3dl cnJvcjsNCj4gLQlfX3U2NCB0eGJyb2FkY2FzdHBhY2tldHNfZ2I7DQo+IC0JX191NjQgdHhtdWx0 aWNhc3RwYWNrZXRzX2diOw0KPiAtCV9fdTY0IHR4dW5pY2FzdHBhY2tldHNfZ2I7DQo+IC0JX191 NjQgdHgxMDI0dG9tYXhvY3RldHNfZ2I7DQo+IC0JX191NjQgdHg1MTJ0bzEwMjNvY3RldHNfZ2I7 DQo+IC0JX191NjQgdHgyNTZ0bzUxMW9jdGV0c19nYjsNCj4gLQlfX3U2NCB0eDEyOHRvMjU1b2N0 ZXRzX2diOw0KPiAtCV9fdTY0IHR4NjV0bzEyN29jdGV0c19nYjsNCj4gLQlfX3U2NCB0eDY0b2N0 ZXRzX2diOw0KPiAtCV9fdTY0IHR4bXVsdGljYXN0cGFja2V0c19nOw0KPiAtCV9fdTY0IHR4YnJv YWRjYXN0cGFja2V0c19nOw0KPiAtCV9fdTY0IHR4cGFja2V0Y291bnRfZ2I7DQo+IC0JX191NjQg dHhvY3RldGNvdW50X2diOw0KPiAtDQo+IC0JX191NjQgcnhscGl0cmFuc2NudHI7DQo+IC0JX191 NjQgcnhscGl1c2NudHI7DQo+IC0JX191NjQgcnhjdHJscGFja2V0c19nOw0KPiAtCV9fdTY0IHJ4 cmN2ZXJyb3I7DQo+IC0JX191NjQgcnh3YXRjaGRvZzsNCj4gLQlfX3U2NCByeHZsYW5wYWNrZXRz X2diOw0KPiAtCV9fdTY0IHJ4Zmlmb292ZXJmbG93Ow0KPiAtCV9fdTY0IHJ4cGF1c2VwYWNrZXRz Ow0KPiAtCV9fdTY0IHJ4b3V0b2ZyYW5nZXR5cGU7DQo+IC0JX191NjQgcnhsZW5ndGhlcnJvcjsN Cj4gLQlfX3U2NCByeHVuaWNhc3RwYWNrZXRzX2c7DQo+IC0JX191NjQgcngxMDI0dG9tYXhvY3Rl dHNfZ2I7DQo+IC0JX191NjQgcng1MTJ0bzEwMjNvY3RldHNfZ2I7DQo+IC0JX191NjQgcngyNTZ0 bzUxMW9jdGV0c19nYjsNCj4gLQlfX3U2NCByeDEyOHRvMjU1b2N0ZXRzX2diOw0KPiAtCV9fdTY0 IHJ4NjV0bzEyN29jdGV0c19nYjsNCj4gLQlfX3U2NCByeDY0b2N0ZXRzX2diOw0KPiAtCV9fdTY0 IHJ4b3ZlcnNpemVfZzsNCj4gLQlfX3U2NCByeHVuZGVyc2l6ZV9nOw0KPiAtCV9fdTY0IHJ4amFi YmVyZXJyb3I7DQo+IC0JX191NjQgcnhydW50ZXJyb3I7DQo+IC0JX191NjQgcnhhbGlnbm1lbnRl cnJvcjsNCj4gLQlfX3U2NCByeGNyY2Vycm9yOw0KPiAtCV9fdTY0IHJ4bXVsdGljYXN0cGFja2V0 c19nOw0KPiAtCV9fdTY0IHJ4YnJvYWRjYXN0cGFja2V0c19nOw0KPiAtCV9fdTY0IHJ4b2N0ZXRj b3VudF9nOw0KPiAtCV9fdTY0IHJ4b2N0ZXRjb3VudF9nYjsNCj4gLQlfX3U2NCByeHBhY2tldGNv dW50X2diOw0KPiAtfTsNCj4gLQ0KPiAtLyogRXRodG9vbCBzdGF0aXN0aWNzICovDQo+IC0NCj4g LXN0cnVjdCBkd2NlcW9zX3N0YXQgew0KPiAtCWNvbnN0IGNoYXIgc3RhdF9uYW1lW0VUSF9HU1RS SU5HX0xFTl07DQo+IC0JaW50ICAgb2Zmc2V0Ow0KPiAtfTsNCj4gLQ0KPiAtI2RlZmluZSBTVEFU X0lURU0obmFtZSwgdmFyKSBcDQo+IC0Je1wNCj4gLQkJbmFtZSxcDQo+IC0JCW9mZnNldG9mKHN0 cnVjdCBkd2NlcW9zX21tY19jb3VudGVycywgdmFyKSxcDQo+IC0JfQ0KPiAtDQo+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IGR3Y2Vxb3Nfc3RhdCBkd2NlcW9zX2V0aHRvb2xfc3RhdHNbXSA9IHsNCj4g LQlTVEFUX0lURU0oInR4X2J5dGVzIiwgdHhvY3RldGNvdW50X2diKSwNCj4gLQlTVEFUX0lURU0o InR4X3BhY2tldHMiLCB0eHBhY2tldGNvdW50X2diKSwNCj4gLQlTVEFUX0lURU0oInR4X3VuaWNz dF9wYWNrZXRzIiwgdHh1bmljYXN0cGFja2V0c19nYiksDQo+IC0JU1RBVF9JVEVNKCJ0eF9icm9h ZGNhc3RfcGFja2V0cyIsIHR4YnJvYWRjYXN0cGFja2V0c19nYiksDQo+IC0JU1RBVF9JVEVNKCJ0 eF9tdWx0aWNhc3RfcGFja2V0cyIsICB0eG11bHRpY2FzdHBhY2tldHNfZ2IpLA0KPiAtCVNUQVRf SVRFTSgidHhfcGF1c2VfcGFja2V0cyIsIHR4cGF1c2VwYWNrZXRzKSwNCj4gLQlTVEFUX0lURU0o InR4X3VwX3RvXzY0X2J5dGVfcGFja2V0cyIsIHR4NjRvY3RldHNfZ2IpLA0KPiAtCVNUQVRfSVRF TSgidHhfNjVfdG9fMTI3X2J5dGVfcGFja2V0cyIsICB0eDY1dG8xMjdvY3RldHNfZ2IpLA0KPiAt CVNUQVRfSVRFTSgidHhfMTI4X3RvXzI1NV9ieXRlX3BhY2tldHMiLCB0eDEyOHRvMjU1b2N0ZXRz X2diKSwNCj4gLQlTVEFUX0lURU0oInR4XzI1Nl90b181MTFfYnl0ZV9wYWNrZXRzIiwgdHgyNTZ0 bzUxMW9jdGV0c19nYiksDQo+IC0JU1RBVF9JVEVNKCJ0eF81MTJfdG9fMTAyM19ieXRlX3BhY2tl dHMiLCB0eDUxMnRvMTAyM29jdGV0c19nYiksDQo+IC0JU1RBVF9JVEVNKCJ0eF8xMDI0X3RvX21h eHNpemVfcGFja2V0cyIsIHR4MTAyNHRvbWF4b2N0ZXRzX2diKSwNCj4gLQlTVEFUX0lURU0oInR4 X3VuZGVyZmxvd19lcnJvcnMiLCB0eHVuZGVyZmxvd2Vycm9yKSwNCj4gLQlTVEFUX0lURU0oInR4 X2xwaV9jb3VudCIsIHR4bHBpdHJhbnNjbnRyKSwNCj4gLQ0KPiAtCVNUQVRfSVRFTSgicnhfYnl0 ZXMiLCByeG9jdGV0Y291bnRfZ2IpLA0KPiAtCVNUQVRfSVRFTSgicnhfcGFja2V0cyIsIHJ4cGFj a2V0Y291bnRfZ2IpLA0KPiAtCVNUQVRfSVRFTSgicnhfdW5pY2FzdF9wYWNrZXRzIiwgcnh1bmlj YXN0cGFja2V0c19nKSwNCj4gLQlTVEFUX0lURU0oInJ4X2Jyb2FkY2FzdF9wYWNrZXRzIiwgcnhi cm9hZGNhc3RwYWNrZXRzX2cpLA0KPiAtCVNUQVRfSVRFTSgicnhfbXVsdGljYXN0X3BhY2tldHMi LCByeG11bHRpY2FzdHBhY2tldHNfZyksDQo+IC0JU1RBVF9JVEVNKCJyeF92bGFuX3BhY2tldHMi LCByeHZsYW5wYWNrZXRzX2diKSwNCj4gLQlTVEFUX0lURU0oInJ4X3BhdXNlX3BhY2tldHMiLCBy eHBhdXNlcGFja2V0cyksDQo+IC0JU1RBVF9JVEVNKCJyeF91cF90b182NF9ieXRlX3BhY2tldHMi LCByeDY0b2N0ZXRzX2diKSwNCj4gLQlTVEFUX0lURU0oInJ4XzY1X3RvXzEyN19ieXRlX3BhY2tl dHMiLCAgcng2NXRvMTI3b2N0ZXRzX2diKSwNCj4gLQlTVEFUX0lURU0oInJ4XzEyOF90b18yNTVf Ynl0ZV9wYWNrZXRzIiwgcngxMjh0bzI1NW9jdGV0c19nYiksDQo+IC0JU1RBVF9JVEVNKCJyeF8y NTZfdG9fNTExX2J5dGVfcGFja2V0cyIsIHJ4MjU2dG81MTFvY3RldHNfZ2IpLA0KPiAtCVNUQVRf SVRFTSgicnhfNTEyX3RvXzEwMjNfYnl0ZV9wYWNrZXRzIiwgcng1MTJ0bzEwMjNvY3RldHNfZ2Ip LA0KPiAtCVNUQVRfSVRFTSgicnhfMTAyNF90b19tYXhzaXplX3BhY2tldHMiLCByeDEwMjR0b21h eG9jdGV0c19nYiksDQo+IC0JU1RBVF9JVEVNKCJyeF9maWZvX292ZXJmbG93X2Vycm9ycyIsIHJ4 Zmlmb292ZXJmbG93KSwNCj4gLQlTVEFUX0lURU0oInJ4X292ZXJzaXplX3BhY2tldHMiLCByeG92 ZXJzaXplX2cpLA0KPiAtCVNUQVRfSVRFTSgicnhfdW5kZXJzaXplX3BhY2tldHMiLCByeHVuZGVy c2l6ZV9nKSwNCj4gLQlTVEFUX0lURU0oInJ4X2phYmJlcnMiLCByeGphYmJlcmVycm9yKSwNCj4g LQlTVEFUX0lURU0oInJ4X2FsaWduX2Vycm9ycyIsIHJ4YWxpZ25tZW50ZXJyb3IpLA0KPiAtCVNU QVRfSVRFTSgicnhfY3JjX2Vycm9ycyIsIHJ4Y3JjZXJyb3IpLA0KPiAtCVNUQVRfSVRFTSgicnhf bHBpX2NvdW50IiwgcnhscGl0cmFuc2NudHIpLA0KPiAtfTsNCj4gLQ0KPiAtLyogQ29uZmlndXJh dGlvbiBvZiBBWEkgYnVzIHBhcmFtZXRlcnMuDQo+IC0gKiBUaGVzZSB2YWx1ZXMgZGVwZW5kIG9u IHRoZSBwYXJhbWV0ZXJzIHNldCBvbiB0aGUgTUFDIGNvcmUgYXMgd2VsbA0KPiAtICogYXMgdGhl IEFYSSBpbnRlcmNvbm5lY3QuDQo+IC0gKi8NCj4gLXN0cnVjdCBkd2NlcW9zX2J1c19jZmcgew0K PiAtCS8qIEVuYWJsZSBBWEkgbG93LXBvd2VyIGludGVyZmFjZS4gKi8NCj4gLQlib29sIGVuX2xw aTsNCj4gLQkvKiBMaW1pdCBvbiBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgQVhJIHdyaXRlIHJlcXVl c3RzLiAqLw0KPiAtCXUzMiB3cml0ZV9yZXF1ZXN0czsNCj4gLQkvKiBMaW1pdCBvbiBudW1iZXIg b2Ygb3V0c3RhbmRpbmcgQVhJIHJlYWQgcmVxdWVzdHMuICovDQo+IC0JdTMyIHJlYWRfcmVxdWVz dHM7DQo+IC0JLyogQml0bWFwIG9mIGFsbG93ZWQgQVhJIGJ1cnN0IGxlbmd0aHMsIDQtMjU2IGJl YXRzLiAqLw0KPiAtCXUzMiBidXJzdF9tYXA7DQo+IC0JLyogRE1BIFByb2dyYW1tYWJsZSBidXJz dCBsZW5ndGgqLw0KPiAtCXUzMiB0eF9wYmw7DQo+IC0JdTMyIHJ4X3BibDsNCj4gLX07DQo+IC0N Cj4gLXN0cnVjdCBkd2NlcW9zX2Zsb3djb250cm9sIHsNCj4gLQlpbnQgYXV0b25lZzsNCj4gLQlp bnQgcng7DQo+IC0JaW50IHJ4X2N1cnJlbnQ7DQo+IC0JaW50IHR4Ow0KPiAtCWludCB0eF9jdXJy ZW50Ow0KPiAtfTsNCj4gLQ0KPiAtc3RydWN0IG5ldF9sb2NhbCB7DQo+IC0Jdm9pZCBfX2lvbWVt ICpiYXNlYWRkcjsNCj4gLQlzdHJ1Y3QgY2xrICpwaHlfcmVmX2NsazsNCj4gLQlzdHJ1Y3QgY2xr ICphcGJfcGNsazsNCj4gLQ0KPiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25vZGU7DQo+IC0J c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7DQo+IC0Jc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl djsNCj4gLQ0KPiAtCXUzMiBtc2dfZW5hYmxlOw0KPiAtDQo+IC0Jc3RydWN0IHRhc2tsZXRfc3Ry dWN0IHR4X2JkcmVjbGFpbV90YXNrbGV0Ow0KPiAtCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp0 eHRpbWVvdXRfaGFuZGxlcl93cTsNCj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgdHh0aW1lb3V0X3Jl aW5pdDsNCj4gLQ0KPiAtCXBoeV9pbnRlcmZhY2VfdCBwaHlfaW50ZXJmYWNlOw0KPiAtCXN0cnVj dCBtaWlfYnVzICptaWlfYnVzOw0KPiAtDQo+IC0JdW5zaWduZWQgaW50IGxpbms7DQo+IC0JdW5z aWduZWQgaW50IHNwZWVkOw0KPiAtCXVuc2lnbmVkIGludCBkdXBsZXg7DQo+IC0NCj4gLQlzdHJ1 Y3QgbmFwaV9zdHJ1Y3QgbmFwaTsNCj4gLQ0KPiAtCS8qIERNQSBEZXNjcmlwdG9yIEFyZWFzICov DQo+IC0Jc3RydWN0IHJpbmdfZGVzYyAqcnhfc2tiOw0KPiAtCXN0cnVjdCByaW5nX2Rlc2MgKnR4 X3NrYjsNCj4gLQ0KPiAtCXN0cnVjdCBkd2NlcW9zX2RtYV9kZXNjICp0eF9kZXNjczsNCj4gLQlz dHJ1Y3QgZHdjZXFvc19kbWFfZGVzYyAqcnhfZGVzY3M7DQo+IC0NCj4gLQkvKiBETUEgTWFwcGVk IERlc2NyaXB0b3IgYXJlYXMqLw0KPiAtCWRtYV9hZGRyX3QgdHhfZGVzY3NfYWRkcjsNCj4gLQlk bWFfYWRkcl90IHJ4X2Rlc2NzX2FkZHI7DQo+IC0JZG1hX2FkZHJfdCB0eF9kZXNjc190YWlsX2Fk ZHI7DQo+IC0JZG1hX2FkZHJfdCByeF9kZXNjc190YWlsX2FkZHI7DQo+IC0NCj4gLQlzaXplX3Qg dHhfZnJlZTsNCj4gLQlzaXplX3QgdHhfbmV4dDsNCj4gLQlzaXplX3QgcnhfY3VyOw0KPiAtCXNp emVfdCB0eF9jdXI7DQo+IC0NCj4gLQkvKiBTcGlubG9ja3MgZm9yIGFjY2Vzc2luZyBETUEgRGVz Y3JpcHRvcnMgKi8NCj4gLQlzcGlubG9ja190IHR4X2xvY2s7DQo+IC0NCj4gLQkvKiBTcGlubG9j ayBmb3IgcmVnaXN0ZXIgcmVhZC1tb2RpZnktd3JpdGVzLiAqLw0KPiAtCXNwaW5sb2NrX3QgaHdf bG9jazsNCj4gLQ0KPiAtCXUzMiBmZWF0dXJlMDsNCj4gLQl1MzIgZmVhdHVyZTE7DQo+IC0JdTMy IGZlYXR1cmUyOw0KPiAtDQo+IC0Jc3RydWN0IGR3Y2Vxb3NfYnVzX2NmZyBidXNfY2ZnOw0KPiAt CWJvb2wgZW5fdHhfbHBpX2Nsb2NrZ2F0aW5nOw0KPiAtDQo+IC0JaW50IGVlZV9lbmFibGVkOw0K PiAtCWludCBlZWVfYWN0aXZlOw0KPiAtCWludCBjc3JfdmFsOw0KPiAtCXUzMiBnc29fc2l6ZTsN Cj4gLQ0KPiAtCXN0cnVjdCBkd2NlcW9zX21tY19jb3VudGVycyBtbWNfY291bnRlcnM7DQo+IC0J LyogUHJvdGVjdCB0aGUgbW1jX2NvdW50ZXIgdXBkYXRlcy4gKi8NCj4gLQlzcGlubG9ja190IHN0 YXRzX2xvY2s7DQo+IC0JdTMyIG1tY19yeF9jb3VudGVyc19tYXNrOw0KPiAtCXUzMiBtbWNfdHhf Y291bnRlcnNfbWFzazsNCj4gLQ0KPiAtCXN0cnVjdCBkd2NlcW9zX2Zsb3djb250cm9sIGZsb3dj b250cm9sOw0KPiAtDQo+IC0JLyogVHJhY2tzIHRoZSBpbnRlcm1lZGlhdGUgc3RhdGUgb2YgcGh5 IHN0YXJ0ZWQgYnV0IGhhcmR3YXJlDQo+IC0JICogaW5pdCBub3QgZmluaXNoZWQgeWV0Lg0KPiAt CSAqLw0KPiAtCWJvb2wgcGh5X2RlZmVyOw0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdj ZXFvc19yZWFkX21tY19jb3VudGVycyhzdHJ1Y3QgbmV0X2xvY2FsICpscCwgdTMyIHJ4X21hc2ss DQo+IC0JCQkJICAgICAgdTMyIHR4X21hc2spOw0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9z X3NldF91bWFjX2FkZHIoc3RydWN0IG5ldF9sb2NhbCAqbHAsIHVuc2lnbmVkIGNoYXIgKmFkZHIs DQo+IC0JCQkJICB1bnNpZ25lZCBpbnQgcmVnX24pOw0KPiAtc3RhdGljIGludCBkd2NlcW9zX3N0 b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpOw0KPiAtc3RhdGljIGludCBkd2NlcW9zX29wZW4o c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpOw0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc190eF9wb2xs X2RlbWFuZChzdHJ1Y3QgbmV0X2xvY2FsICpscCk7DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vx b3Nfc2V0X3J4X2Zsb3djb250cm9sKHN0cnVjdCBuZXRfbG9jYWwgKmxwLCBib29sIGVuYWJsZSk7 DQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX3NldF90eF9mbG93Y29udHJvbChzdHJ1Y3QgbmV0X2xv Y2FsICpscCwgYm9vbCBlbmFibGUpOw0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX3Jlc2V0 X3N0YXRlKHN0cnVjdCBuZXRfbG9jYWwgKmxwKTsNCj4gLQ0KPiAtI2RlZmluZSBkd2NlcW9zX3Jl YWQobHAsIHJlZykJCQkJCQlcDQo+IC0JcmVhZGxfcmVsYXhlZCgoKHZvaWQgX19pb21lbSAqKSgo bHApLT5iYXNlYWRkcikpICsgKHJlZykpDQo+IC0jZGVmaW5lIGR3Y2Vxb3Nfd3JpdGUobHAsIHJl ZywgdmFsKQkJCQkJXA0KPiAtCXdyaXRlbF9yZWxheGVkKCh2YWwpLCAoKHZvaWQgX19pb21lbSAq KSgobHApLT5iYXNlYWRkcikpICsgKHJlZykpDQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3Nf cmVzZXRfc3RhdGUoc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0JbHAtPmxpbmsgICAg PSAwOw0KPiAtCWxwLT5zcGVlZCAgID0gMDsNCj4gLQlscC0+ZHVwbGV4ICA9IERVUExFWF9VTktO T1dOOw0KPiAtCWxwLT5mbG93Y29udHJvbC5yeF9jdXJyZW50ID0gMDsNCj4gLQlscC0+Zmxvd2Nv bnRyb2wudHhfY3VycmVudCA9IDA7DQo+IC0JbHAtPmVlZV9hY3RpdmUgPSAwOw0KPiAtCWxwLT5l ZWVfZW5hYmxlZCA9IDA7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIHByaW50X2Rlc2NyaXB0 b3Ioc3RydWN0IG5ldF9sb2NhbCAqbHAsIGludCBpbmRleCwgaW50IHR4KQ0KPiAtew0KPiAtCXN0 cnVjdCBkd2NlcW9zX2RtYV9kZXNjICpkZDsNCj4gLQ0KPiAtCWlmICh0eCkNCj4gLQkJZGQgPSAo c3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MgKikmbHAtPnR4X2Rlc2NzW2luZGV4XTsNCj4gLQllbHNl DQo+IC0JCWRkID0gKHN0cnVjdCBkd2NlcW9zX2RtYV9kZXNjICopJmxwLT5yeF9kZXNjc1tpbmRl eF07DQo+IC0NCj4gLQlwcl9pbmZvKCIlcyBETUEgRGVzY3JpcHRvciAjJWRAJXAgQ29udGVudHM6 XG4iLCB0eCA/ICJUWCIgOiAiUlgiLA0KPiAtCQlpbmRleCwgZGQpOw0KPiAtCXByX2luZm8oIjB4 JTA4eCAweCUwOHggMHglMDh4IDB4JTA4eFxuIiwgZGQtPmRlczAsIGRkLT5kZXMxLCBkZC0+ZGVz MiwNCj4gLQkJZGQtPmRlczMpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBwcmludF9zdGF0 dXMoc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0Jc2l6ZV90IGRlc2NpLCBpOw0KPiAt DQo+IC0JcHJfaW5mbygidHhfZnJlZSAlenUsIHR4X2N1ciAlenUsIHR4X25leHQgJXp1XG4iLCBs cC0+dHhfZnJlZSwNCj4gLQkJbHAtPnR4X2N1ciwgbHAtPnR4X25leHQpOw0KPiAtDQo+IC0JcHJp bnRfZGVzY3JpcHRvcihscCwgbHAtPnJ4X2N1ciwgMCk7DQo+IC0NCj4gLQlmb3IgKGRlc2NpID0g KGxwLT50eF9jdXIgLSAxMCkgJSBEV0NFUU9TX1RYX0RDTlQsIGkgPSAwOw0KPiAtCQkgaSA8IERX Q0VRT1NfVFhfRENOVDsNCj4gLQkJICsraSkgew0KPiAtCQlwcmludF9kZXNjcmlwdG9yKGxwLCBk ZXNjaSwgMSk7DQo+IC0JCWRlc2NpID0gKGRlc2NpICsgMSkgJSBEV0NFUU9TX1RYX0RDTlQ7DQo+ IC0JfQ0KPiAtDQo+IC0JcHJfaW5mbygiRE1BX0RlYnVnX1N0YXR1czA6ICAgICAgICAgIDB4JTA4 eFxuIiwNCj4gLQkJZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19ETUFfREVCVUdfU1QwKSk7 DQo+IC0JcHJfaW5mbygiRE1BX0NIMF9TdGF0dXM6ICAgICAgICAgICAgIDB4JTA4eFxuIiwNCj4g LQkJZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19ETUFfSVMpKTsNCj4gLQlwcl9pbmZvKCJE TUFfQ0gwX0N1cnJlbnRfQXBwX1R4RGVzYzogMHglMDh4XG4iLA0KPiAtCQlkd2NlcW9zX3JlYWQo bHAsIDB4MTE0NCkpOw0KPiAtCXByX2luZm8oIkRNQV9DSDBfQ3VycmVudF9BcHBfVHhCdWZmOiAw eCUwOHhcbiIsDQo+IC0JCWR3Y2Vxb3NfcmVhZChscCwgMHgxMTU0KSk7DQo+IC0JcHJfaW5mbygi TVRMX0RlYnVnX1N0YXR1czogICAgICAweCUwOHhcbiIsDQo+IC0JCWR3Y2Vxb3NfcmVhZChscCwg UkVHX0RXQ0VRT1NfTVRMX0RFQlVHX1NUKSk7DQo+IC0JcHJfaW5mbygiTVRMX1RYUTBfRGVidWdf U3RhdHVzOiAweCUwOHhcbiIsDQo+IC0JCWR3Y2Vxb3NfcmVhZChscCwgUkVHX0RXQ0VRT1NfTVRM X1RYUTBfREVCVUdfU1QpKTsNCj4gLQlwcl9pbmZvKCJNVExfUlhRMF9EZWJ1Z19TdGF0dXM6IDB4 JTA4eFxuIiwNCj4gLQkJZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19NVExfUlhRMF9ERUJV R19TVCkpOw0KPiAtCXByX2luZm8oIkN1cnJlbnQgVFggRE1BOiAweCUwOHgsIFJYIERNQTogMHgl MDh4XG4iLA0KPiAtCQlkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfQ1VSX1RY REVTQyksDQo+IC0JCWR3Y2Vxb3NfcmVhZChscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9DVVJfUlhE RVNDKSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfbWRpb19zZXRfY3NyKHN0 cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCWludCByYXRlID0gY2xrX2dldF9yYXRlKGxw LT5hcGJfcGNsayk7DQo+IC0NCj4gLQlpZiAocmF0ZSA8PSAyMDAwMDAwMCkNCj4gLQkJbHAtPmNz cl92YWwgPSBEV0NFUU9TX01BQ19NRElPX0FERFJfQ1JfMjA7DQo+IC0JZWxzZSBpZiAocmF0ZSA8 PSAzNTAwMDAwMCkNCj4gLQkJbHAtPmNzcl92YWwgPSBEV0NFUU9TX01BQ19NRElPX0FERFJfQ1Jf MzU7DQo+IC0JZWxzZSBpZiAocmF0ZSA8PSA2MDAwMDAwMCkNCj4gLQkJbHAtPmNzcl92YWwgPSBE V0NFUU9TX01BQ19NRElPX0FERFJfQ1JfNjA7DQo+IC0JZWxzZSBpZiAocmF0ZSA8PSAxMDAwMDAw MDApDQo+IC0JCWxwLT5jc3JfdmFsID0gRFdDRVFPU19NQUNfTURJT19BRERSX0NSXzEwMDsNCj4g LQllbHNlIGlmIChyYXRlIDw9IDE1MDAwMDAwMCkNCj4gLQkJbHAtPmNzcl92YWwgPSBEV0NFUU9T X01BQ19NRElPX0FERFJfQ1JfMTUwOw0KPiAtCWVsc2UgaWYgKHJhdGUgPD0gMjUwMDAwMDAwKQ0K PiAtCQlscC0+Y3NyX3ZhbCA9IERXQ0VRT1NfTUFDX01ESU9fQUREUl9DUl8yNTA7DQo+IC19DQo+ IC0NCj4gLS8qIFNpbXBsZSBNRElPIGZ1bmN0aW9ucyBpbXBsZW1lbnRpbmcgbWlpX2J1cyAqLw0K PiAtc3RhdGljIGludCBkd2NlcW9zX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQg bWlpX2lkLCBpbnQgcGh5cmVnKQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRfbG9jYWwgKmxwID0gYnVz LT5wcml2Ow0KPiAtCXUzMiByZWd2YWw7DQo+IC0JaW50IGk7DQo+IC0JaW50IGRhdGE7DQo+IC0N Cj4gLQlyZWd2YWwgPSBEV0NFUU9TX01ESU9fUEhZQUREUihtaWlfaWQpIHwNCj4gLQkJRFdDRVFP U19NRElPX1BIWVJFRyhwaHlyZWcpIHwNCj4gLQkJRFdDRVFPU19NQUNfTURJT19BRERSX0NSKGxw LT5jc3JfdmFsKSB8DQo+IC0JCURXQ0VRT1NfTUFDX01ESU9fQUREUl9HQiB8DQo+IC0JCURXQ0VR T1NfTUFDX01ESU9fQUREUl9HT0NfUkVBRDsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdD RVFPU19NQUNfTURJT19BRERSLCByZWd2YWwpOw0KPiAtDQo+IC0JZm9yIChpID0gMDsgaSA8IDU7 ICsraSkgew0KPiAtCQl1c2xlZXBfcmFuZ2UoNjQsIDEyOCk7DQo+IC0JCWlmICghKGR3Y2Vxb3Nf cmVhZChscCwgUkVHX0RXQ0VRT1NfTUFDX01ESU9fQUREUikgJg0KPiAtCQkgICAgICBEV0NFUU9T X01BQ19NRElPX0FERFJfR0IpKQ0KPiAtCQkJYnJlYWs7DQo+IC0JfQ0KPiAtDQo+IC0JZGF0YSA9 IGR3Y2Vxb3NfcmVhZChscCwgUkVHX0RXQ0VRT1NfTUFDX01ESU9fREFUQSk7DQo+IC0JaWYgKGkg PT0gNSkgew0KPiAtCQluZXRkZXZfd2FybihscC0+bmRldiwgIk1ESU8gcmVhZCB0aW1lZCBvdXRc biIpOw0KPiAtCQlkYXRhID0gMHhmZmZmOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiBkYXRhICYg MHhmZmZmOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3NfbWRpb193cml0ZShzdHJ1 Y3QgbWlpX2J1cyAqYnVzLCBpbnQgbWlpX2lkLCBpbnQgcGh5cmVnLA0KPiAtCQkJICAgICAgdTE2 IHZhbHVlKQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRfbG9jYWwgKmxwID0gYnVzLT5wcml2Ow0KPiAt CXUzMiByZWd2YWw7DQo+IC0JaW50IGk7DQo+IC0NCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdf RFdDRVFPU19NQUNfTURJT19EQVRBLCB2YWx1ZSk7DQo+IC0NCj4gLQlyZWd2YWwgPSBEV0NFUU9T X01ESU9fUEhZQUREUihtaWlfaWQpIHwNCj4gLQkJRFdDRVFPU19NRElPX1BIWVJFRyhwaHlyZWcp IHwNCj4gLQkJRFdDRVFPU19NQUNfTURJT19BRERSX0NSKGxwLT5jc3JfdmFsKSB8DQo+IC0JCURX Q0VRT1NfTUFDX01ESU9fQUREUl9HQiB8DQo+IC0JCURXQ0VRT1NfTUFDX01ESU9fQUREUl9HT0Nf V1JJVEU7DQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfTUFDX01ESU9fQUREUiwg cmVndmFsKTsNCj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCA1OyArK2kpIHsNCj4gLQkJdXNsZWVw X3JhbmdlKDY0LCAxMjgpOw0KPiAtCQlpZiAoIShkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9T X01BQ19NRElPX0FERFIpICYNCj4gLQkJICAgICAgRFdDRVFPU19NQUNfTURJT19BRERSX0dCKSkN Cj4gLQkJCWJyZWFrOw0KPiAtCX0NCj4gLQlpZiAoaSA9PSA1KQ0KPiAtCQluZXRkZXZfd2Fybihs cC0+bmRldiwgIk1ESU8gd3JpdGUgdGltZWQgb3V0XG4iKTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0N Cj4gLQ0KPiAtc3RhdGljIGludCBkd2NlcW9zX2lvY3RsKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2 LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRfbG9jYWwg KmxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0Jc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9 IG5kZXYtPnBoeWRldjsNCj4gLQ0KPiAtCWlmICghbmV0aWZfcnVubmluZyhuZGV2KSkNCj4gLQkJ cmV0dXJuIC1FSU5WQUw7DQo+IC0NCj4gLQlpZiAoIXBoeWRldikNCj4gLQkJcmV0dXJuIC1FTk9E RVY7DQo+IC0NCj4gLQlzd2l0Y2ggKGNtZCkgew0KPiAtCWNhc2UgU0lPQ0dNSUlQSFk6DQo+IC0J Y2FzZSBTSU9DR01JSVJFRzoNCj4gLQljYXNlIFNJT0NTTUlJUkVHOg0KPiAtCQlyZXR1cm4gcGh5 X21paV9pb2N0bChwaHlkZXYsIHJxLCBjbWQpOw0KPiAtCWRlZmF1bHQ6DQo+IC0JCWRldl9pbmZv KCZscC0+cGRldi0+ZGV2LCAiaW9jdGwgJVggbm90IGltcGxlbWVudGVkLlxuIiwgY21kKTsNCj4g LQkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQg ZHdjZXFvc19saW5rX2Rvd24oc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0JdTMyIHJl Z3ZhbDsNCj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiAtDQo+IC0JLyogSW5kaWNhdGUgbGlu ayBkb3duIHRvIHRoZSBMUEkgc3RhdGUgbWFjaGluZSAqLw0KPiAtCXNwaW5fbG9ja19pcnFzYXZl KCZscC0+aHdfbG9jaywgZmxhZ3MpOw0KPiAtCXJlZ3ZhbCA9IGR3Y2Vxb3NfcmVhZChscCwgUkVH X0RXQ0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVUyk7DQo+IC0JcmVndmFsICY9IH5EV0NFUU9TX01B Q19MUElfQ1RSTF9TVEFUVVNfUExTOw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9T X01BQ19MUElfQ1RSTF9TVEFUVVMsIHJlZ3ZhbCk7DQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFv c19saW5rX3VwKHN0cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRfZGV2 aWNlICpuZGV2ID0gbHAtPm5kZXY7DQo+IC0JdTMyIHJlZ3ZhbDsNCj4gLQl1bnNpZ25lZCBsb25n IGZsYWdzOw0KPiAtDQo+IC0JLyogSW5kaWNhdGUgbGluayB1cCB0byB0aGUgTFBJIHN0YXRlIG1h Y2hpbmUgKi8NCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4g LQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFU VVMpOw0KPiAtCXJlZ3ZhbCB8PSBEV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVNfUExTOw0KPiAt CWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVMsIHJlZ3Zh bCk7DQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4g LQ0KPiAtCWxwLT5lZWVfYWN0aXZlID0gIXBoeV9pbml0X2VlZShuZGV2LT5waHlkZXYsIDApOw0K PiAtDQo+IC0JLyogQ2hlY2sgZm9yIGNoYW5nZWQgRUVFIGNhcGFiaWxpdHkgKi8NCj4gLQlpZiAo IWxwLT5lZWVfYWN0aXZlICYmIGxwLT5lZWVfZW5hYmxlZCkgew0KPiAtCQlscC0+ZWVlX2VuYWJs ZWQgPSAwOw0KPiAtDQo+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZscC0+aHdfbG9jaywgZmxhZ3Mp Ow0KPiAtCQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01BQ19MUElfQ1RS TF9TVEFUVVMpOw0KPiAtCQlyZWd2YWwgJj0gfkRXQ0VRT1NfTFBJX0NUUkxfRU5BQkxFX0VFRTsN Cj4gLQkJZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVUywg cmVndmFsKTsNCj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbHAtPmh3X2xvY2ssIGZsYWdz KTsNCj4gLQl9DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3Nfc2V0X3NwZWVkKHN0 cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0g bHAtPm5kZXY7DQo+IC0Jc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IG5kZXYtPnBoeWRldjsN Cj4gLQl1MzIgcmVndmFsOw0KPiAtDQo+IC0JcmVndmFsID0gZHdjZXFvc19yZWFkKGxwLCBSRUdf RFdDRVFPU19NQUNfQ0ZHKTsNCj4gLQlyZWd2YWwgJj0gfihEV0NFUU9TX01BQ19DRkdfUFMgfCBE V0NFUU9TX01BQ19DRkdfRkVTIHwNCj4gLQkJICAgIERXQ0VRT1NfTUFDX0NGR19ETSk7DQo+IC0N Cj4gLQlpZiAocGh5ZGV2LT5kdXBsZXgpDQo+IC0JCXJlZ3ZhbCB8PSBEV0NFUU9TX01BQ19DRkdf RE07DQo+IC0JaWYgKHBoeWRldi0+c3BlZWQgPT0gU1BFRURfMTApIHsNCj4gLQkJcmVndmFsIHw9 IERXQ0VRT1NfTUFDX0NGR19QUzsNCj4gLQl9IGVsc2UgaWYgKHBoeWRldi0+c3BlZWQgPT0gU1BF RURfMTAwKSB7DQo+IC0JCXJlZ3ZhbCB8PSBEV0NFUU9TX01BQ19DRkdfUFMgfA0KPiAtCQkJRFdD RVFPU19NQUNfQ0ZHX0ZFUzsNCj4gLQl9IGVsc2UgaWYgKHBoeWRldi0+c3BlZWQgIT0gU1BFRURf MTAwMCkgew0KPiAtCQluZXRkZXZfZXJyKGxwLT5uZGV2LA0KPiAtCQkJICAgInVua25vd24gUEhZ IHNwZWVkICVkXG4iLA0KPiAtCQkJICAgcGh5ZGV2LT5zcGVlZCk7DQo+IC0JCXJldHVybjsNCj4g LQl9DQo+IC0NCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19NQUNfQ0ZHLCByZWd2 YWwpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX2FkanVzdF9saW5rKHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2KQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRfbG9jYWwgKmxwID0gbmV0 ZGV2X3ByaXYobmRldik7DQo+IC0Jc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IG5kZXYtPnBo eWRldjsNCj4gLQlpbnQgc3RhdHVzX2NoYW5nZSA9IDA7DQo+IC0NCj4gLQlpZiAobHAtPnBoeV9k ZWZlcikNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JaWYgKHBoeWRldi0+bGluaykgew0KPiAtCQlp ZiAoKGxwLT5zcGVlZCAhPSBwaHlkZXYtPnNwZWVkKSB8fA0KPiAtCQkgICAgKGxwLT5kdXBsZXgg IT0gcGh5ZGV2LT5kdXBsZXgpKSB7DQo+IC0JCQlkd2NlcW9zX3NldF9zcGVlZChscCk7DQo+IC0N Cj4gLQkJCWxwLT5zcGVlZCA9IHBoeWRldi0+c3BlZWQ7DQo+IC0JCQlscC0+ZHVwbGV4ID0gcGh5 ZGV2LT5kdXBsZXg7DQo+IC0JCQlzdGF0dXNfY2hhbmdlID0gMTsNCj4gLQkJfQ0KPiAtDQo+IC0J CWlmIChscC0+Zmxvd2NvbnRyb2wuYXV0b25lZykgew0KPiAtCQkJbHAtPmZsb3djb250cm9sLnJ4 ID0gcGh5ZGV2LT5wYXVzZSB8fA0KPiAtCQkJCQkgICAgIHBoeWRldi0+YXN5bV9wYXVzZTsNCj4g LQkJCWxwLT5mbG93Y29udHJvbC50eCA9IHBoeWRldi0+cGF1c2UgfHwNCj4gLQkJCQkJICAgICBw aHlkZXYtPmFzeW1fcGF1c2U7DQo+IC0JCX0NCj4gLQ0KPiAtCQlpZiAobHAtPmZsb3djb250cm9s LnJ4ICE9IGxwLT5mbG93Y29udHJvbC5yeF9jdXJyZW50KSB7DQo+IC0JCQlpZiAobmV0aWZfbXNn X2xpbmsobHApKQ0KPiAtCQkJCW5ldGRldl9kYmcobmRldiwgInNldCByeCBmbG93IHRvICVkXG4i LA0KPiAtCQkJCQkgICBscC0+Zmxvd2NvbnRyb2wucngpOw0KPiAtCQkJZHdjZXFvc19zZXRfcnhf Zmxvd2NvbnRyb2wobHAsIGxwLT5mbG93Y29udHJvbC5yeCk7DQo+IC0JCQlscC0+Zmxvd2NvbnRy b2wucnhfY3VycmVudCA9IGxwLT5mbG93Y29udHJvbC5yeDsNCj4gLQkJfQ0KPiAtCQlpZiAobHAt PmZsb3djb250cm9sLnR4ICE9IGxwLT5mbG93Y29udHJvbC50eF9jdXJyZW50KSB7DQo+IC0JCQlp ZiAobmV0aWZfbXNnX2xpbmsobHApKQ0KPiAtCQkJCW5ldGRldl9kYmcobmRldiwgInNldCB0eCBm bG93IHRvICVkXG4iLA0KPiAtCQkJCQkgICBscC0+Zmxvd2NvbnRyb2wudHgpOw0KPiAtCQkJZHdj ZXFvc19zZXRfdHhfZmxvd2NvbnRyb2wobHAsIGxwLT5mbG93Y29udHJvbC50eCk7DQo+IC0JCQls cC0+Zmxvd2NvbnRyb2wudHhfY3VycmVudCA9IGxwLT5mbG93Y29udHJvbC50eDsNCj4gLQkJfQ0K PiAtCX0NCj4gLQ0KPiAtCWlmIChwaHlkZXYtPmxpbmsgIT0gbHAtPmxpbmspIHsNCj4gLQkJbHAt PmxpbmsgPSBwaHlkZXYtPmxpbms7DQo+IC0JCXN0YXR1c19jaGFuZ2UgPSAxOw0KPiAtCX0NCj4g LQ0KPiAtCWlmIChzdGF0dXNfY2hhbmdlKSB7DQo+IC0JCWlmIChwaHlkZXYtPmxpbmspIHsNCj4g LQkJCW5ldGlmX3RyYW5zX3VwZGF0ZShscC0+bmRldik7DQo+IC0JCQlkd2NlcW9zX2xpbmtfdXAo bHApOw0KPiAtCQl9IGVsc2Ugew0KPiAtCQkJZHdjZXFvc19saW5rX2Rvd24obHApOw0KPiAtCQl9 DQo+IC0JCXBoeV9wcmludF9zdGF0dXMocGh5ZGV2KTsNCj4gLQl9DQo+IC19DQo+IC0NCj4gLXN0 YXRpYyBpbnQgZHdjZXFvc19taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+IC17 DQo+IC0Jc3RydWN0IG5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gLQlzdHJ1 Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gTlVMTDsNCj4gLQ0KPiAtCWlmIChscC0+cGh5X25vZGUp IHsNCj4gLQkJcGh5ZGV2ID0gb2ZfcGh5X2Nvbm5lY3QobHAtPm5kZXYsDQo+IC0JCQkJCWxwLT5w aHlfbm9kZSwNCj4gLQkJCQkJJmR3Y2Vxb3NfYWRqdXN0X2xpbmssDQo+IC0JCQkJCTAsDQo+IC0J CQkJCWxwLT5waHlfaW50ZXJmYWNlKTsNCj4gLQ0KPiAtCQlpZiAoIXBoeWRldikgew0KPiAtCQkJ bmV0ZGV2X2VycihuZGV2LCAibm8gUEhZIGZvdW5kXG4iKTsNCj4gLQkJCXJldHVybiAtMTsNCj4g LQkJfQ0KPiAtCX0gZWxzZSB7DQo+IC0JCW5ldGRldl9lcnIobmRldiwgIm5vIFBIWSBjb25maWd1 cmVkXG4iKTsNCj4gLQkJcmV0dXJuIC1FTk9ERVY7DQo+IC0JfQ0KPiAtDQo+IC0JaWYgKG5ldGlm X21zZ19wcm9iZShscCkpDQo+IC0JCXBoeV9hdHRhY2hlZF9pbmZvKHBoeWRldik7DQo+IC0NCj4g LQlwaHlkZXYtPnN1cHBvcnRlZCAmPSBQSFlfR0JJVF9GRUFUVVJFUyB8IFNVUFBPUlRFRF9QYXVz ZSB8DQo+IC0JCQkgICAgIFNVUFBPUlRFRF9Bc3ltX1BhdXNlOw0KPiAtDQo+IC0JbHAtPmxpbmsg ICAgPSAwOw0KPiAtCWxwLT5zcGVlZCAgID0gMDsNCj4gLQlscC0+ZHVwbGV4ICA9IERVUExFWF9V TktOT1dOOw0KPiAtCWxwLT5mbG93Y29udHJvbC5hdXRvbmVnID0gQVVUT05FR19FTkFCTEU7DQo+ IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19hbGxv Y19yeHJpbmdfZGVzYyhzdHJ1Y3QgbmV0X2xvY2FsICpscCwgaW50IGluZGV4KQ0KPiAtew0KPiAt CXN0cnVjdCBza19idWZmICpuZXdfc2tiOw0KPiAtCWRtYV9hZGRyX3QgbmV3X3NrYl9iYWRkciA9 IDA7DQo+IC0NCj4gLQluZXdfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYihscC0+bmRldiwgRFdDRVFP U19SWF9CVUZfU0laRSk7DQo+IC0JaWYgKCFuZXdfc2tiKSB7DQo+IC0JCW5ldGRldl9lcnIobHAt Pm5kZXYsICJhbGxvY19za2IgZXJyb3IgZm9yIGRlc2MgJWRcbiIsIGluZGV4KTsNCj4gLQkJZ290 byBlcnJfb3V0Ow0KPiAtCX0NCj4gLQ0KPiAtCW5ld19za2JfYmFkZHIgPSBkbWFfbWFwX3Npbmds ZShscC0+bmRldi0+ZGV2LnBhcmVudCwNCj4gLQkJCQkgICAgICAgbmV3X3NrYi0+ZGF0YSwgRFdD RVFPU19SWF9CVUZfU0laRSwNCj4gLQkJCQkgICAgICAgRE1BX0ZST01fREVWSUNFKTsNCj4gLQlp ZiAoZG1hX21hcHBpbmdfZXJyb3IobHAtPm5kZXYtPmRldi5wYXJlbnQsIG5ld19za2JfYmFkZHIp KSB7DQo+IC0JCW5ldGRldl9lcnIobHAtPm5kZXYsICJETUEgbWFwIGVycm9yXG4iKTsNCj4gLQkJ ZGV2X2tmcmVlX3NrYihuZXdfc2tiKTsNCj4gLQkJbmV3X3NrYiA9IE5VTEw7DQo+IC0JCWdvdG8g ZXJyX291dDsNCj4gLQl9DQo+IC0NCj4gLQlscC0+cnhfZGVzY3NbaW5kZXhdLmRlczAgPSBuZXdf c2tiX2JhZGRyOw0KPiAtCWxwLT5yeF9kZXNjc1tpbmRleF0uZGVzMSA9IDA7DQo+IC0JbHAtPnJ4 X2Rlc2NzW2luZGV4XS5kZXMyID0gMDsNCj4gLQlscC0+cnhfZGVzY3NbaW5kZXhdLmRlczMgPSBE V0NFUU9TX0RNQV9SREVTM19JTlRFIHwNCj4gLQkJCQkgICBEV0NFUU9TX0RNQV9SREVTM19CVUYx ViB8DQo+IC0JCQkJICAgRFdDRVFPU19ETUFfUkRFUzNfT1dOOw0KPiAtDQo+IC0JbHAtPnJ4X3Nr YltpbmRleF0ubWFwcGluZyA9IG5ld19za2JfYmFkZHI7DQo+IC0JbHAtPnJ4X3NrYltpbmRleF0u bGVuID0gRFdDRVFPU19SWF9CVUZfU0laRTsNCj4gLQ0KPiAtZXJyX291dDoNCj4gLQlscC0+cnhf c2tiW2luZGV4XS5za2IgPSBuZXdfc2tiOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2Nl cW9zX2NsZWFuX3JpbmdzKHN0cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCWludCBpOw0K PiAtDQo+IC0JaWYgKGxwLT5yeF9za2IpIHsNCj4gLQkJZm9yIChpID0gMDsgaSA8IERXQ0VRT1Nf UlhfRENOVDsgaSsrKSB7DQo+IC0JCQlpZiAobHAtPnJ4X3NrYltpXS5za2IpIHsNCj4gLQkJCQlk bWFfdW5tYXBfc2luZ2xlKGxwLT5uZGV2LT5kZXYucGFyZW50LA0KPiAtCQkJCQkJIGxwLT5yeF9z a2JbaV0ubWFwcGluZywNCj4gLQkJCQkJCSBscC0+cnhfc2tiW2ldLmxlbiwNCj4gLQkJCQkJCSBE TUFfRlJPTV9ERVZJQ0UpOw0KPiAtDQo+IC0JCQkJZGV2X2tmcmVlX3NrYihscC0+cnhfc2tiW2ld LnNrYik7DQo+IC0JCQkJbHAtPnJ4X3NrYltpXS5za2IgPSBOVUxMOw0KPiAtCQkJCWxwLT5yeF9z a2JbaV0ubWFwcGluZyA9IDA7DQo+IC0JCQl9DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4gLQlpZiAo bHAtPnR4X3NrYikgew0KPiAtCQlmb3IgKGkgPSAwOyBpIDwgRFdDRVFPU19UWF9EQ05UOyBpKysp IHsNCj4gLQkJCWlmIChscC0+dHhfc2tiW2ldLnNrYikgew0KPiAtCQkJCWRldl9rZnJlZV9za2Io bHAtPnR4X3NrYltpXS5za2IpOw0KPiAtCQkJCWxwLT50eF9za2JbaV0uc2tiID0gTlVMTDsNCj4g LQkJCX0NCj4gLQkJCWlmIChscC0+dHhfc2tiW2ldLm1hcHBpbmcpIHsNCj4gLQkJCQlkbWFfdW5t YXBfc2luZ2xlKGxwLT5uZGV2LT5kZXYucGFyZW50LA0KPiAtCQkJCQkJIGxwLT50eF9za2JbaV0u bWFwcGluZywNCj4gLQkJCQkJCSBscC0+dHhfc2tiW2ldLmxlbiwNCj4gLQkJCQkJCSBETUFfVE9f REVWSUNFKTsNCj4gLQkJCQlscC0+dHhfc2tiW2ldLm1hcHBpbmcgPSAwOw0KPiAtCQkJfQ0KPiAt CQl9DQo+IC0JfQ0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX2Rlc2NyaXB0b3Jf ZnJlZShzdHJ1Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsNCj4gLQlpbnQgc2l6ZTsNCj4gLQ0KPiAt CWR3Y2Vxb3NfY2xlYW5fcmluZ3MobHApOw0KPiAtDQo+IC0Ja2ZyZWUobHAtPnR4X3NrYik7DQo+ IC0JbHAtPnR4X3NrYiA9IE5VTEw7DQo+IC0Ja2ZyZWUobHAtPnJ4X3NrYik7DQo+IC0JbHAtPnJ4 X3NrYiA9IE5VTEw7DQo+IC0NCj4gLQlzaXplID0gRFdDRVFPU19SWF9EQ05UICogc2l6ZW9mKHN0 cnVjdCBkd2NlcW9zX2RtYV9kZXNjKTsNCj4gLQlpZiAobHAtPnJ4X2Rlc2NzKSB7DQo+IC0JCWRt YV9mcmVlX2NvaGVyZW50KGxwLT5uZGV2LT5kZXYucGFyZW50LCBzaXplLA0KPiAtCQkJCSAgKHZv aWQgKikobHAtPnJ4X2Rlc2NzKSwgbHAtPnJ4X2Rlc2NzX2FkZHIpOw0KPiAtCQlscC0+cnhfZGVz Y3MgPSBOVUxMOw0KPiAtCX0NCj4gLQ0KPiAtCXNpemUgPSBEV0NFUU9TX1RYX0RDTlQgKiBzaXpl b2Yoc3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MpOw0KPiAtCWlmIChscC0+dHhfZGVzY3MpIHsNCj4g LQkJZG1hX2ZyZWVfY29oZXJlbnQobHAtPm5kZXYtPmRldi5wYXJlbnQsIHNpemUsDQo+IC0JCQkJ ICAodm9pZCAqKShscC0+dHhfZGVzY3MpLCBscC0+dHhfZGVzY3NfYWRkcik7DQo+IC0JCWxwLT50 eF9kZXNjcyA9IE5VTEw7DQo+IC0JfQ0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3Nf ZGVzY3JpcHRvcl9pbml0KHN0cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCWludCBzaXpl Ow0KPiAtCXUzMiBpOw0KPiAtDQo+IC0JbHAtPmdzb19zaXplID0gMDsNCj4gLQ0KPiAtCWxwLT50 eF9za2IgPSBOVUxMOw0KPiAtCWxwLT5yeF9za2IgPSBOVUxMOw0KPiAtCWxwLT5yeF9kZXNjcyA9 IE5VTEw7DQo+IC0JbHAtPnR4X2Rlc2NzID0gTlVMTDsNCj4gLQ0KPiAtCS8qIFJlc2V0IHRoZSBE TUEgaW5kZXhlcyAqLw0KPiAtCWxwLT5yeF9jdXIgPSAwOw0KPiAtCWxwLT50eF9jdXIgPSAwOw0K PiAtCWxwLT50eF9uZXh0ID0gMDsNCj4gLQlscC0+dHhfZnJlZSA9IERXQ0VRT1NfVFhfRENOVDsN Cj4gLQ0KPiAtCS8qIEFsbG9jYXRlIFJpbmcgZGVzY3JpcHRvcnMgKi8NCj4gLQlzaXplID0gRFdD RVFPU19SWF9EQ05UICogc2l6ZW9mKHN0cnVjdCByaW5nX2Rlc2MpOw0KPiAtCWxwLT5yeF9za2Ig PSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOw0KPiAtCWlmICghbHAtPnJ4X3NrYikNCj4gLQkJ Z290byBlcnJfb3V0Ow0KPiAtDQo+IC0Jc2l6ZSA9IERXQ0VRT1NfVFhfRENOVCAqIHNpemVvZihz dHJ1Y3QgcmluZ19kZXNjKTsNCj4gLQlscC0+dHhfc2tiID0ga3phbGxvYyhzaXplLCBHRlBfS0VS TkVMKTsNCj4gLQlpZiAoIWxwLT50eF9za2IpDQo+IC0JCWdvdG8gZXJyX291dDsNCj4gLQ0KPiAt CS8qIEFsbG9jYXRlIERNQSBkZXNjcmlwdG9ycyAqLw0KPiAtCXNpemUgPSBEV0NFUU9TX1JYX0RD TlQgKiBzaXplb2Yoc3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MpOw0KPiAtCWxwLT5yeF9kZXNjcyA9 IGRtYV9hbGxvY19jb2hlcmVudChscC0+bmRldi0+ZGV2LnBhcmVudCwgc2l6ZSwNCj4gLQkJCSZs cC0+cnhfZGVzY3NfYWRkciwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFscC0+cnhfZGVzY3MpDQo+ IC0JCWdvdG8gZXJyX291dDsNCj4gLQlscC0+cnhfZGVzY3NfdGFpbF9hZGRyID0gbHAtPnJ4X2Rl c2NzX2FkZHIgKw0KPiAtCQlzaXplb2Yoc3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MpICogRFdDRVFP U19SWF9EQ05UOw0KPiAtDQo+IC0Jc2l6ZSA9IERXQ0VRT1NfVFhfRENOVCAqIHNpemVvZihzdHJ1 Y3QgZHdjZXFvc19kbWFfZGVzYyk7DQo+IC0JbHAtPnR4X2Rlc2NzID0gZG1hX2FsbG9jX2NvaGVy ZW50KGxwLT5uZGV2LT5kZXYucGFyZW50LCBzaXplLA0KPiAtCQkJJmxwLT50eF9kZXNjc19hZGRy LCBHRlBfS0VSTkVMKTsNCj4gLQlpZiAoIWxwLT50eF9kZXNjcykNCj4gLQkJZ290byBlcnJfb3V0 Ow0KPiAtCWxwLT50eF9kZXNjc190YWlsX2FkZHIgPSBscC0+dHhfZGVzY3NfYWRkciArDQo+IC0J CXNpemVvZihzdHJ1Y3QgZHdjZXFvc19kbWFfZGVzYykgKiBEV0NFUU9TX1RYX0RDTlQ7DQo+IC0N Cj4gLQkvKiBJbml0aWFsaXplIFJYIFJpbmcgRGVzY3JpcHRvcnMgYW5kIGJ1ZmZlcnMgKi8NCj4g LQlmb3IgKGkgPSAwOyBpIDwgRFdDRVFPU19SWF9EQ05UOyArK2kpIHsNCj4gLQkJZHdjZXFvc19h bGxvY19yeHJpbmdfZGVzYyhscCwgaSk7DQo+IC0JCWlmICghKGxwLT5yeF9za2JbbHAtPnJ4X2N1 cl0uc2tiKSkNCj4gLQkJCWdvdG8gZXJyX291dDsNCj4gLQl9DQo+IC0NCj4gLQkvKiBJbml0aWFs aXplIFRYIERlc2NyaXB0b3JzICovDQo+IC0JZm9yIChpID0gMDsgaSA8IERXQ0VRT1NfVFhfRENO VDsgKytpKSB7DQo+IC0JCWxwLT50eF9kZXNjc1tpXS5kZXMwID0gMDsNCj4gLQkJbHAtPnR4X2Rl c2NzW2ldLmRlczEgPSAwOw0KPiAtCQlscC0+dHhfZGVzY3NbaV0uZGVzMiA9IDA7DQo+IC0JCWxw LT50eF9kZXNjc1tpXS5kZXMzID0gMDsNCj4gLQl9DQo+IC0NCj4gLQkvKiBNYWtlIGRlc2NyaXB0 b3Igd3JpdGVzIHZpc2libGUgdG8gdGhlIERNQS4gKi8NCj4gLQl3bWIoKTsNCj4gLQ0KPiAtCXJl dHVybiAwOw0KPiAtDQo+IC1lcnJfb3V0Og0KPiAtCWR3Y2Vxb3NfZGVzY3JpcHRvcl9mcmVlKGxw KTsNCj4gLQlyZXR1cm4gLUVOT01FTTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCBkd2NlcW9z X3BhY2tldF9hdmFpbChzdHJ1Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsNCj4gLQlyZXR1cm4gIShs cC0+cnhfZGVzY3NbbHAtPnJ4X2N1cl0uZGVzMyAmIERXQ0VRT1NfRE1BX1JERVMzX09XTik7DQo+ IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfZ2V0X2h3ZmVhdHVyZXMoc3RydWN0IG5l dF9sb2NhbCAqbHApDQo+IC17DQo+IC0JbHAtPmZlYXR1cmUwID0gZHdjZXFvc19yZWFkKGxwLCBS RUdfRFdDRVFPU19NQUNfSFdfRkVBVFVSRTApOw0KPiAtCWxwLT5mZWF0dXJlMSA9IGR3Y2Vxb3Nf cmVhZChscCwgUkVHX0RXQ0VRT1NfTUFDX0hXX0ZFQVRVUkUxKTsNCj4gLQlscC0+ZmVhdHVyZTIg PSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01BQ19IV19GRUFUVVJFMik7DQo+IC19DQo+ IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfZG1hX2VuYWJsZV90eGlycShzdHJ1Y3QgbmV0X2xv Y2FsICpscCkNCj4gLXsNCj4gLQl1MzIgcmVndmFsOw0KPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 DQo+IC0NCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLQly ZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfSUUpOw0KPiAtCXJl Z3ZhbCB8PSBEV0NFUU9TX0RNQV9DSDBfSUVfVElFOw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJF R19EV0NFUU9TX0RNQV9DSDBfSUUsIHJlZ3ZhbCk7DQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFv c19kbWFfZGlzYWJsZV90eGlycShzdHJ1Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsNCj4gLQl1MzIg cmVndmFsOw0KPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+IC0NCj4gLQlzcGluX2xvY2tfaXJx c2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAs IFJFR19EV0NFUU9TX0RNQV9DSDBfSUUpOw0KPiAtCXJlZ3ZhbCAmPSB+RFdDRVFPU19ETUFfQ0gw X0lFX1RJRTsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19ETUFfQ0gwX0lFLCBy ZWd2YWwpOw0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxwLT5od19sb2NrLCBmbGFncyk7 DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfZG1hX2VuYWJsZV9yeGlycShzdHJ1 Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsNCj4gLQl1MzIgcmVndmFsOw0KPiAtCXVuc2lnbmVkIGxv bmcgZmxhZ3M7DQo+IC0NCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdz KTsNCj4gLQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfSUUp Ow0KPiAtCXJlZ3ZhbCB8PSBEV0NFUU9TX0RNQV9DSDBfSUVfUklFOw0KPiAtCWR3Y2Vxb3Nfd3Jp dGUobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfSUUsIHJlZ3ZhbCk7DQo+IC0Jc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZv aWQgZHdjZXFvc19kbWFfZGlzYWJsZV9yeGlycShzdHJ1Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsN Cj4gLQl1MzIgcmVndmFsOw0KPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+IC0NCj4gLQlzcGlu X2xvY2tfaXJxc2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLQlyZWd2YWwgPSBkd2NlcW9z X3JlYWQobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfSUUpOw0KPiAtCXJlZ3ZhbCAmPSB+RFdDRVFP U19ETUFfQ0gwX0lFX1JJRTsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19ETUFf Q0gwX0lFLCByZWd2YWwpOw0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxwLT5od19sb2Nr LCBmbGFncyk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfZW5hYmxlX21tY19p bnRlcnJ1cHQoc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0JZHdjZXFvc193cml0ZShs cCwgUkVHX0RXQ0VRT1NfTU1DX1JYSVJRTUFTSywgMCk7DQo+IC0JZHdjZXFvc193cml0ZShscCwg UkVHX0RXQ0VRT1NfTU1DX1RYSVJRTUFTSywgMCk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbnQg ZHdjZXFvc19taWlfaW5pdChzdHJ1Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsNCj4gLQlpbnQgcmV0 ID0gLUVOWElPOw0KPiAtCXN0cnVjdCByZXNvdXJjZSByZXM7DQo+IC0Jc3RydWN0IGRldmljZV9u b2RlICptZGlvbm9kZTsNCj4gLQ0KPiAtCW1kaW9ub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUo bHAtPnBkZXYtPmRldi5vZl9ub2RlLCAibWRpbyIpOw0KPiAtDQo+IC0JaWYgKCFtZGlvbm9kZSkN Cj4gLQkJcmV0dXJuIDA7DQo+IC0NCj4gLQlscC0+bWlpX2J1cyA9IG1kaW9idXNfYWxsb2MoKTsN Cj4gLQlpZiAoIWxwLT5taWlfYnVzKSB7DQo+IC0JCXJldCA9IC1FTk9NRU07DQo+IC0JCWdvdG8g ZXJyX291dDsNCj4gLQl9DQo+IC0NCj4gLQlscC0+bWlpX2J1cy0+bmFtZSAgPSAiRFdDRVFPUyBN SUkgYnVzIjsNCj4gLQlscC0+bWlpX2J1cy0+cmVhZCAgPSAmZHdjZXFvc19tZGlvX3JlYWQ7DQo+ IC0JbHAtPm1paV9idXMtPndyaXRlID0gJmR3Y2Vxb3NfbWRpb193cml0ZTsNCj4gLQlscC0+bWlp X2J1cy0+cHJpdiA9IGxwOw0KPiAtCWxwLT5taWlfYnVzLT5wYXJlbnQgPSAmbHAtPnBkZXYtPmRl djsNCj4gLQ0KPiAtCW9mX2FkZHJlc3NfdG9fcmVzb3VyY2UobHAtPnBkZXYtPmRldi5vZl9ub2Rl LCAwLCAmcmVzKTsNCj4gLQlzbnByaW50ZihscC0+bWlpX2J1cy0+aWQsIE1JSV9CVVNfSURfU0la RSwgIiUuOGxseCIsDQo+IC0JCSAodW5zaWduZWQgbG9uZyBsb25nKXJlcy5zdGFydCk7DQo+IC0J aWYgKG9mX21kaW9idXNfcmVnaXN0ZXIobHAtPm1paV9idXMsIG1kaW9ub2RlKSkNCj4gLQkJZ290 byBlcnJfb3V0X2ZyZWVfbWRpb2J1czsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtDQo+IC1lcnJf b3V0X2ZyZWVfbWRpb2J1czoNCj4gLQltZGlvYnVzX2ZyZWUobHAtPm1paV9idXMpOw0KPiAtZXJy X291dDoNCj4gLQlvZl9ub2RlX3B1dChtZGlvbm9kZSk7DQo+IC0JcmV0dXJuIHJldDsNCj4gLX0N Cj4gLQ0KPiAtLyogRE1BIHJlc2V0LiBXaGVuIGlzc3VlZCBhbHNvIHJlc2V0cyBhbGwgTVRMIGFu ZCBNQUMgcmVnaXN0ZXJzIGFzIHdlbGwgKi8NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfcmVzZXRf aHcoc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0JLyogV2FpdCAoYXQgbW9zdCkgMC41 IHNlY29uZHMgZm9yIERNQSByZXNldCovDQo+IC0JaW50IGkgPSA1MDAwOw0KPiAtCXUzMiByZWc7 DQo+IC0NCj4gLQkvKiBGb3JjZSBnaWdhYml0IHRvIGd1YXJhbnRlZSBhIFRYIGNsb2NrIGZvciBH TUlJLiAqLw0KPiAtCXJlZyA9IGR3Y2Vxb3NfcmVhZChscCwgUkVHX0RXQ0VRT1NfTUFDX0NGRyk7 DQo+IC0JcmVnICY9IH4oRFdDRVFPU19NQUNfQ0ZHX1BTIHwgRFdDRVFPU19NQUNfQ0ZHX0ZFUyk7 DQo+IC0JcmVnIHw9IERXQ0VRT1NfTUFDX0NGR19ETTsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBS RUdfRFdDRVFPU19NQUNfQ0ZHLCByZWcpOw0KPiAtDQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVH X0RXQ0VRT1NfRE1BX01PREUsIERXQ0VRT1NfRE1BX01PREVfU1dSKTsNCj4gLQ0KPiAtCWRvIHsN Cj4gLQkJdWRlbGF5KDEwMCk7DQo+IC0JCWktLTsNCj4gLQkJcmVnID0gZHdjZXFvc19yZWFkKGxw LCBSRUdfRFdDRVFPU19ETUFfTU9ERSk7DQo+IC0JfSB3aGlsZSAoKHJlZyAmIERXQ0VRT1NfRE1B X01PREVfU1dSKSAmJiBpKTsNCj4gLQkvKiBXZSBtaWdodCBleHBlcmllbmNlIGEgdGltZW91dCBp ZiB0aGUgY2hpcCBjbG9jayBtdXggaXMgYnJva2VuICovDQo+IC0JaWYgKCFpKQ0KPiAtCQluZXRk ZXZfZXJyKGxwLT5uZGV2LCAiRE1BIHJlc2V0IHRpbWVkIG91dCFcbiIpOw0KPiAtfQ0KPiAtDQo+ IC1zdGF0aWMgdm9pZCBkd2NlcW9zX2ZhdGFsX2J1c19lcnJvcihzdHJ1Y3QgbmV0X2xvY2FsICps cCwgdTMyIGRtYV9zdGF0dXMpDQo+IC17DQo+IC0JaWYgKGRtYV9zdGF0dXMgJiBEV0NFUU9TX0RN QV9DSDBfSVNfVEVCKSB7DQo+IC0JCW5ldGRldl9lcnIobHAtPm5kZXYsICJ0eGRtYSBidXMgZXJy b3IgJXMgJXMgKHN0YXR1cz0lMDh4KVxuIiwNCj4gLQkJCSAgIGRtYV9zdGF0dXMgJiBEV0NFUU9T X0RNQV9DSDBfSVNfVFhfRVJSX1JFQUQgPw0KPiAtCQkJCSJyZWFkIiA6ICJ3cml0ZSIsDQo+IC0J CQkgICBkbWFfc3RhdHVzICYgRFdDRVFPU19ETUFfQ0gwX0lTX1RYX0VSUl9ERVNDUiA/DQo+IC0J CQkJImRlc2NyIiA6ICJkYXRhIiwNCj4gLQkJCSAgIGRtYV9zdGF0dXMpOw0KPiAtDQo+IC0JCXBy aW50X3N0YXR1cyhscCk7DQo+IC0JfQ0KPiAtCWlmIChkbWFfc3RhdHVzICYgRFdDRVFPU19ETUFf Q0gwX0lTX1JFQikgew0KPiAtCQluZXRkZXZfZXJyKGxwLT5uZGV2LCAicnhkbWEgYnVzIGVycm9y ICVzICVzIChzdGF0dXM9JTA4eClcbiIsDQo+IC0JCQkgICBkbWFfc3RhdHVzICYgRFdDRVFPU19E TUFfQ0gwX0lTX1JYX0VSUl9SRUFEID8NCj4gLQkJCQkicmVhZCIgOiAid3JpdGUiLA0KPiAtCQkJ ICAgZG1hX3N0YXR1cyAmIERXQ0VRT1NfRE1BX0NIMF9JU19SWF9FUlJfREVTQ1IgPw0KPiAtCQkJ CSJkZXNjciIgOiAiZGF0YSIsDQo+IC0JCQkgICBkbWFfc3RhdHVzKTsNCj4gLQ0KPiAtCQlwcmlu dF9zdGF0dXMobHApOw0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19t bWNfaW50ZXJydXB0KHN0cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCXVuc2lnbmVkIGxv bmcgZmxhZ3M7DQo+IC0NCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPnN0YXRzX2xvY2ssIGZs YWdzKTsNCj4gLQ0KPiAtCS8qIEEgbGF0Y2hlZCBtbWMgaW50ZXJydXB0IGNhbiBub3QgYmUgbWFz a2VkLCB3ZSBtdXN0IHJlYWQNCj4gLQkgKiAgYWxsIHRoZSBjb3VudGVycyB3aXRoIGFuIGludGVy cnVwdCBwZW5kaW5nLg0KPiAtCSAqLw0KPiAtCWR3Y2Vxb3NfcmVhZF9tbWNfY291bnRlcnMobHAs DQo+IC0JCQkJICBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01NQ19SWElSUSksDQo+IC0J CQkJICBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01NQ19UWElSUSkpOw0KPiAtDQo+IC0J c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbHAtPnN0YXRzX2xvY2ssIGZsYWdzKTsNCj4gLX0NCj4g LQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19tYWNfaW50ZXJydXB0KHN0cnVjdCBuZXRfbG9jYWwg KmxwKQ0KPiAtew0KPiAtCXUzMiBjYXVzZTsNCj4gLQ0KPiAtCWNhdXNlID0gZHdjZXFvc19yZWFk KGxwLCBSRUdfRFdDRVFPU19NQUNfSVMpOw0KPiAtDQo+IC0JaWYgKGNhdXNlICYgRFdDRVFPU19N QUNfSVNfTU1DX0lOVCkNCj4gLQkJZHdjZXFvc19tbWNfaW50ZXJydXB0KGxwKTsNCj4gLX0NCj4g LQ0KPiAtc3RhdGljIGlycXJldHVybl90IGR3Y2Vxb3NfaW50ZXJydXB0KGludCBpcnEsIHZvaWQg KmRldl9pZCkNCj4gLXsNCj4gLQlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiA9IGRldl9pZDsNCj4g LQlzdHJ1Y3QgbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtDQo+IC0JdTMy IGNhdXNlOw0KPiAtCXUzMiBkbWFfc3RhdHVzOw0KPiAtCWlycXJldHVybl90IHJldCA9IElSUV9O T05FOw0KPiAtDQo+IC0JY2F1c2UgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX0RNQV9J Uyk7DQo+IC0JLyogRE1BIENoYW5uZWwgMCBJbnRlcnJ1cHQgKi8NCj4gLQlpZiAoY2F1c2UgJiBE V0NFUU9TX0RNQV9JU19EQzBJUykgew0KPiAtCQlkbWFfc3RhdHVzID0gZHdjZXFvc19yZWFkKGxw LCBSRUdfRFdDRVFPU19ETUFfQ0gwX1NUQSk7DQo+IC0NCj4gLQkJLyogVHJhbnNtaXQgSW50ZXJy dXB0ICovDQo+IC0JCWlmIChkbWFfc3RhdHVzICYgRFdDRVFPU19ETUFfQ0gwX0lTX1RJKSB7DQo+ IC0JCQl0YXNrbGV0X3NjaGVkdWxlKCZscC0+dHhfYmRyZWNsYWltX3Rhc2tsZXQpOw0KPiAtCQkJ ZHdjZXFvc19kbWFfZGlzYWJsZV90eGlycShscCk7DQo+IC0JCX0NCj4gLQ0KPiAtCQkvKiBSZWNl aXZlIEludGVycnVwdCAqLw0KPiAtCQlpZiAoZG1hX3N0YXR1cyAmIERXQ0VRT1NfRE1BX0NIMF9J U19SSSkgew0KPiAtCQkJLyogRGlzYWJsZSBSWCBJUlFzICovDQo+IC0JCQlkd2NlcW9zX2RtYV9k aXNhYmxlX3J4aXJxKGxwKTsNCj4gLQkJCW5hcGlfc2NoZWR1bGUoJmxwLT5uYXBpKTsNCj4gLQkJ fQ0KPiAtDQo+IC0JCS8qIEZhdGFsIEJ1cyBFcnJvciBpbnRlcnJ1cHQgKi8NCj4gLQkJaWYgKHVu bGlrZWx5KGRtYV9zdGF0dXMgJiBEV0NFUU9TX0RNQV9DSDBfSVNfRkJFKSkgew0KPiAtCQkJZHdj ZXFvc19mYXRhbF9idXNfZXJyb3IobHAsIGRtYV9zdGF0dXMpOw0KPiAtDQo+IC0JCQkvKiBlcnJh dGEgOTAwMDgzMTcwNyAqLw0KPiAtCQkJZG1hX3N0YXR1cyB8PSBEV0NFUU9TX0RNQV9DSDBfSVNf VEVCIHwNCj4gLQkJCQkgICAgICBEV0NFUU9TX0RNQV9DSDBfSVNfUkVCOw0KPiAtCQl9DQo+IC0N Cj4gLQkJLyogQWNrIGFsbCBETUEgQ2hhbm5lbCAwIElSUXMgKi8NCj4gLQkJZHdjZXFvc193cml0 ZShscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9TVEEsIGRtYV9zdGF0dXMpOw0KPiAtCQlyZXQgPSBJ UlFfSEFORExFRDsNCj4gLQl9DQo+IC0NCj4gLQlpZiAoY2F1c2UgJiBEV0NFUU9TX0RNQV9JU19N VExJUykgew0KPiAtCQl1MzIgdmFsID0gZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19NVExf UTBfSVNDVFJMKTsNCj4gLQ0KPiAtCQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19NVExf UTBfSVNDVFJMLCB2YWwpOw0KPiAtCQlyZXQgPSBJUlFfSEFORExFRDsNCj4gLQl9DQo+IC0NCj4g LQlpZiAoY2F1c2UgJiBEV0NFUU9TX0RNQV9JU19NQUNJUykgew0KPiAtCQlkd2NlcW9zX21hY19p bnRlcnJ1cHQobHApOw0KPiAtCQlyZXQgPSBJUlFfSEFORExFRDsNCj4gLQl9DQo+IC0JcmV0dXJu IHJldDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19zZXRfcnhfZmxvd2NvbnRy b2woc3RydWN0IG5ldF9sb2NhbCAqbHAsIGJvb2wgZW5hYmxlKQ0KPiAtew0KPiAtCXUzMiByZWd2 YWw7DQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gLQ0KPiAtCXNwaW5fbG9ja19pcnFzYXZl KCZscC0+aHdfbG9jaywgZmxhZ3MpOw0KPiAtDQo+IC0JcmVndmFsID0gZHdjZXFvc19yZWFkKGxw LCBSRUdfRFdDRVFPU19NQUNfUlhfRkxPV19DVFJMKTsNCj4gLQlpZiAoZW5hYmxlKQ0KPiAtCQly ZWd2YWwgfD0gRFdDRVFPU19NQUNfUlhfRkxPV19DVFJMX1JGRTsNCj4gLQllbHNlDQo+IC0JCXJl Z3ZhbCAmPSB+RFdDRVFPU19NQUNfUlhfRkxPV19DVFJMX1JGRTsNCj4gLQlkd2NlcW9zX3dyaXRl KGxwLCBSRUdfRFdDRVFPU19NQUNfUlhfRkxPV19DVFJMLCByZWd2YWwpOw0KPiAtDQo+IC0Jc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLX0NCj4gLQ0KPiAt c3RhdGljIHZvaWQgZHdjZXFvc19zZXRfdHhfZmxvd2NvbnRyb2woc3RydWN0IG5ldF9sb2NhbCAq bHAsIGJvb2wgZW5hYmxlKQ0KPiAtew0KPiAtCXUzMiByZWd2YWw7DQo+IC0JdW5zaWduZWQgbG9u ZyBmbGFnczsNCj4gLQ0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZscC0+aHdfbG9jaywgZmxhZ3Mp Ow0KPiAtDQo+IC0JLyogTVRMIGZsb3cgY29udHJvbCAqLw0KPiAtCXJlZ3ZhbCA9IGR3Y2Vxb3Nf cmVhZChscCwgUkVHX0RXQ0VRT1NfTVRMX1JYUTBfT1BFUik7DQo+IC0JaWYgKGVuYWJsZSkNCj4g LQkJcmVndmFsIHw9IERXQ0VRT1NfTVRMX1JYUV9FSEZDOw0KPiAtCWVsc2UNCj4gLQkJcmVndmFs ICY9IH5EV0NFUU9TX01UTF9SWFFfRUhGQzsNCj4gLQ0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJF R19EV0NFUU9TX01UTF9SWFEwX09QRVIsIHJlZ3ZhbCk7DQo+IC0NCj4gLQkvKiBNQUMgZmxvdyBj b250cm9sICovDQo+IC0JcmVndmFsID0gZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19NQUNf UTBfVFhfRkxPVyk7DQo+IC0JaWYgKGVuYWJsZSkNCj4gLQkJcmVndmFsIHw9IERXQ0VRT1NfTUFD X1EwX1RYX0ZMT1dfVEZFOw0KPiAtCWVsc2UNCj4gLQkJcmVndmFsICY9IH5EV0NFUU9TX01BQ19R MF9UWF9GTE9XX1RGRTsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19NQUNfUTBf VFhfRkxPVywgcmVndmFsKTsNCj4gLQ0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxwLT5o d19sb2NrLCBmbGFncyk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfY29uZmln dXJlX2Zsb3dfY29udHJvbChzdHJ1Y3QgbmV0X2xvY2FsICpscCkNCj4gLXsNCj4gLQl1MzIgcmVn dmFsOw0KPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+IC0JaW50IFJRUywgUkZELCBSRkE7DQo+ IC0NCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLQ0KPiAt CXJlZ3ZhbCA9IGR3Y2Vxb3NfcmVhZChscCwgUkVHX0RXQ0VRT1NfTVRMX1JYUTBfT1BFUik7DQo+ IC0NCj4gLQkvKiBUaGUgcXVldWUgc2l6ZSBpcyBpbiB1bml0cyBvZiAyNTYgYnl0ZXMuIFdlIHdh bnQgNTEyIGJ5dGVzIHVuaXRzIGZvcg0KPiAtCSAqIHRoZSB0aHJlc2hvbGQgZmllbGRzLg0KPiAt CSAqLw0KPiAtCVJRUyA9ICgocmVndmFsID4+IDIwKSAmIDB4M0ZGKSArIDE7DQo+IC0JUlFTIC89 IDI7DQo+IC0NCj4gLQkvKiBUaGUgdGhyZXNob2xkcyBhcmUgcmVsYXRpdmUgdG8gYSBmdWxsIHF1 ZXVlLCB3aXRoIGEgYmlhcw0KPiAtCSAqIG9mIDEgS2lCeXRlIGJlbG93IGZ1bGwuDQo+IC0JICov DQo+IC0JUkZEID0gUlFTIC8gMiAtIDI7DQo+IC0JUkZBID0gUlFTIC8gOCAtIDI7DQo+IC0NCj4g LQlyZWd2YWwgPSAocmVndmFsICYgMHhGRkYwMDBGRikgfCAoUkZEIDw8IDE0KSB8IChSRkEgPDwg OCk7DQo+IC0NCj4gLQlpZiAoUkZEID49IDAgJiYgUkZBID49IDApIHsNCj4gLQkJZHdjZXFvc193 cml0ZShscCwgUkVHX0RXQ0VRT1NfTVRMX1JYUTBfT1BFUiwgcmVndmFsKTsNCj4gLQl9IGVsc2Ug ew0KPiAtCQluZXRkZXZfd2FybihscC0+bmRldiwNCj4gLQkJCSAgICAiRklGTyB0b28gc21hbGwg Zm9yIGZsb3cgY29udHJvbC4iKTsNCj4gLQl9DQo+IC0NCj4gLQlyZWd2YWwgPSBEV0NFUU9TX01B Q19RMF9UWF9GTE9XX1BUKDI1NikgfA0KPiAtCQkgRFdDRVFPU19NQUNfUTBfVFhfRkxPV19QTFRf NF9TTE9UUzsNCj4gLQ0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01BQ19RMF9U WF9GTE9XLCByZWd2YWwpOw0KPiAtDQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbHAtPmh3 X2xvY2ssIGZsYWdzKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19jb25maWd1 cmVfY2xvY2soc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0JdW5zaWduZWQgbG9uZyBy YXRlX21oeiA9IGNsa19nZXRfcmF0ZShscC0+YXBiX3BjbGspIC8gMTAwMDAwMDsNCj4gLQ0KPiAt CUJVR19PTighcmF0ZV9taHopOw0KPiAtDQo+IC0JZHdjZXFvc193cml0ZShscCwNCj4gLQkJICAg ICAgUkVHX0RXQ0VRT1NfTUFDXzFVU19USUNfQ09VTlRFUiwNCj4gLQkJICAgICAgRFdDRVFPU19N QUNfMVVTX1RJQ19DT1VOVEVSX1ZBTChyYXRlX21oeiAtIDEpKTsNCj4gLX0NCj4gLQ0KPiAtc3Rh dGljIHZvaWQgZHdjZXFvc19jb25maWd1cmVfYnVzKHN0cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAt ew0KPiAtCXUzMiBzeXNidXNfcmVnOw0KPiAtDQo+IC0JLyogTi5CLiBXZSBkbyBub3Qgc3VwcG9y dCB0aGUgRml4ZWQgQnVyc3QgbW9kZSBiZWNhdXNlIGl0DQo+IC0JICogb3BlbnMgYSByYWNlIHdp bmRvdyBieSBtYWtpbmcgSFcgYWNjZXNzIHRvIERNQSBkZXNjcmlwdG9ycw0KPiAtCSAqIG5vbi1h dG9taWMuDQo+IC0JICovDQo+IC0NCj4gLQlzeXNidXNfcmVnID0gRFdDRVFPU19ETUFfU1lTQlVT X01PREVfQUFMOw0KPiAtDQo+IC0JaWYgKGxwLT5idXNfY2ZnLmVuX2xwaSkNCj4gLQkJc3lzYnVz X3JlZyB8PSBEV0NFUU9TX0RNQV9TWVNCVVNfTU9ERV9FTl9MUEk7DQo+IC0NCj4gLQlpZiAobHAt PmJ1c19jZmcuYnVyc3RfbWFwKQ0KPiAtCQlzeXNidXNfcmVnIHw9IERXQ0VRT1NfRE1BX1NZU0JV U19NT0RFX0JVUlNUKA0KPiAtCQkJbHAtPmJ1c19jZmcuYnVyc3RfbWFwKTsNCj4gLQllbHNlDQo+ IC0JCXN5c2J1c19yZWcgfD0gRFdDRVFPU19ETUFfU1lTQlVTX01PREVfQlVSU1QoDQo+IC0JCQlE V0NFUU9TX0RNQV9TWVNCVVNfTU9ERV9CVVJTVF9ERUZBVUxUKTsNCj4gLQ0KPiAtCWlmIChscC0+ YnVzX2NmZy5yZWFkX3JlcXVlc3RzKQ0KPiAtCQlzeXNidXNfcmVnIHw9IERXQ0VRT1NfRE1BX1NZ U0JVU19NT0RFX1JEX09TUl9MSU1JVCgNCj4gLQkJCWxwLT5idXNfY2ZnLnJlYWRfcmVxdWVzdHMg LSAxKTsNCj4gLQllbHNlDQo+IC0JCXN5c2J1c19yZWcgfD0gRFdDRVFPU19ETUFfU1lTQlVTX01P REVfUkRfT1NSX0xJTUlUKA0KPiAtCQkJRFdDRVFPU19ETUFfU1lTQlVTX01PREVfUkRfT1NSX0xJ TUlUX0RFRkFVTFQpOw0KPiAtDQo+IC0JaWYgKGxwLT5idXNfY2ZnLndyaXRlX3JlcXVlc3RzKQ0K PiAtCQlzeXNidXNfcmVnIHw9IERXQ0VRT1NfRE1BX1NZU0JVU19NT0RFX1dSX09TUl9MSU1JVCgN Cj4gLQkJCWxwLT5idXNfY2ZnLndyaXRlX3JlcXVlc3RzIC0gMSk7DQo+IC0JZWxzZQ0KPiAtCQlz eXNidXNfcmVnIHw9IERXQ0VRT1NfRE1BX1NZU0JVU19NT0RFX1dSX09TUl9MSU1JVCgNCj4gLQkJ CURXQ0VRT1NfRE1BX1NZU0JVU19NT0RFX1dSX09TUl9MSU1JVF9ERUZBVUxUKTsNCj4gLQ0KPiAt CWlmIChuZXRpZl9tc2dfaHcobHApKQ0KPiAtCQluZXRkZXZfZGJnKGxwLT5uZGV2LCAiU3lzYnVz TW9kZSAlI1hcbiIsIHN5c2J1c19yZWcpOw0KPiAtDQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVH X0RXQ0VRT1NfRE1BX1NZU0JVU19NT0RFLCBzeXNidXNfcmVnKTsNCj4gLX0NCj4gLQ0KPiAtc3Rh dGljIHZvaWQgZHdjZXFvc19pbml0X2h3KHN0cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAt CXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gbHAtPm5kZXY7DQo+IC0JdTMyIHJlZ3ZhbDsNCj4g LQl1MzIgYnVzd2lkdGg7DQo+IC0JdTMyIGRtYV9za2lwOw0KPiAtDQo+IC0JLyogU29mdHdhcmUg cmVzZXQgKi8NCj4gLQlkd2NlcW9zX3Jlc2V0X2h3KGxwKTsNCj4gLQ0KPiAtCWR3Y2Vxb3NfY29u ZmlndXJlX2J1cyhscCk7DQo+IC0NCj4gLQkvKiBQcm9iZSBkYXRhIGJ1cyB3aWR0aCwgMzIvNjQv MTI4IGJpdHMuICovDQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9U WERFU0NfVEFJTCwgMHhGKTsNCj4gLQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NF UU9TX0RNQV9DSDBfVFhERVNDX1RBSUwpOw0KPiAtCWJ1c3dpZHRoID0gKHJlZ3ZhbCBeIDB4Rikg KyAxOw0KPiAtDQo+IC0JLyogQ2FjaGUtYWxpZ24gZG1hIGRlc2NyaXB0b3JzLiAqLw0KPiAtCWRt YV9za2lwID0gKHNpemVvZihzdHJ1Y3QgZHdjZXFvc19kbWFfZGVzYykgLSAxNikgLyBidXN3aWR0 aDsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19ETUFfQ0gwX0NUUkwsDQo+IC0J CSAgICAgIERXQ0VRT1NfRE1BX0NIX0NUUkxfRFNMKGRtYV9za2lwKSB8DQo+IC0JCSAgICAgIERX Q0VRT1NfRE1BX0NIX0NUUkxfUEJMWDgpOw0KPiAtDQo+IC0JLyogSW5pdGlhbGl6ZSBETUEgQ2hh bm5lbCAwICovDQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9UWERF U0NfTEVOLCBEV0NFUU9TX1RYX0RDTlQgLSAxKTsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdf RFdDRVFPU19ETUFfQ0gwX1JYREVTQ19MRU4sIERXQ0VRT1NfUlhfRENOVCAtIDEpOw0KPiAtCWR3 Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfVFhERVNDX0xJU1QsDQo+IC0JCSAg ICAgICh1MzIpbHAtPnR4X2Rlc2NzX2FkZHIpOw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19E V0NFUU9TX0RNQV9DSDBfUlhERVNDX0xJU1QsDQo+IC0JCSAgICAgICh1MzIpbHAtPnJ4X2Rlc2Nz X2FkZHIpOw0KPiAtDQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9U WERFU0NfVEFJTCwNCj4gLQkJICAgICAgbHAtPnR4X2Rlc2NzX3RhaWxfYWRkcik7DQo+IC0JZHdj ZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9SWERFU0NfVEFJTCwNCj4gLQkJICAg ICAgbHAtPnJ4X2Rlc2NzX3RhaWxfYWRkcik7DQo+IC0NCj4gLQlpZiAobHAtPmJ1c19jZmcudHhf cGJsKQ0KPiAtCQlyZWd2YWwgPSBEV0NFUU9TX0RNQV9DSF9DVFJMX1BCTChscC0+YnVzX2NmZy50 eF9wYmwpOw0KPiAtCWVsc2UNCj4gLQkJcmVndmFsID0gRFdDRVFPU19ETUFfQ0hfQ1RSTF9QQkwo Mik7DQo+IC0NCj4gLQkvKiBFbmFibGUgVFNPIGlmIHRoZSBIVyBzdXBwb3J0IGl0ICovDQo+IC0J aWYgKGxwLT5mZWF0dXJlMSAmIERXQ0VRT1NfTUFDX0hXX0ZFQVRVUkUxX1RTT0VOKQ0KPiAtCQly ZWd2YWwgfD0gRFdDRVFPU19ETUFfQ0hfVFhfVFNFOw0KPiAtDQo+IC0JZHdjZXFvc193cml0ZShs cCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9UWF9DVFJMLCByZWd2YWwpOw0KPiAtDQo+IC0JaWYgKGxw LT5idXNfY2ZnLnJ4X3BibCkNCj4gLQkJcmVndmFsID0gRFdDRVFPU19ETUFfQ0hfQ1RSTF9QQkwo bHAtPmJ1c19jZmcucnhfcGJsKTsNCj4gLQllbHNlDQo+IC0JCXJlZ3ZhbCA9IERXQ0VRT1NfRE1B X0NIX0NUUkxfUEJMKDIpOw0KPiAtDQo+IC0JcmVndmFsIHw9IERXQ0VRT1NfRE1BX0NIX1JYX0NU UkxfQlVGU0laRShEV0NFUU9TX0RXQ0VRT1NfUlhfQlVGX1NJWkUpOw0KPiAtCWR3Y2Vxb3Nfd3Jp dGUobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfUlhfQ1RSTCwgcmVndmFsKTsNCj4gLQ0KPiAtCXJl Z3ZhbCB8PSBEV0NFUU9TX0RNQV9DSF9DVFJMX1NUQVJUOw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAs IFJFR19EV0NFUU9TX0RNQV9DSDBfUlhfQ1RSTCwgcmVndmFsKTsNCj4gLQ0KPiAtCS8qIEluaXRp YWxpemUgTVRMIFF1ZXVlcyAqLw0KPiAtCXJlZ3ZhbCA9IERXQ0VRT1NfTVRMX1NDSEFMR19TVFJJ Q1Q7DQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfTVRMX09QRVIsIHJlZ3ZhbCk7 DQo+IC0NCj4gLQlyZWd2YWwgPSBEV0NFUU9TX01UTF9UWFFfU0laRSgNCj4gLQkJCURXQ0VRT1Nf TUFDX0hXX0ZFQVRVUkUxX1RYRklGT1NJWkUobHAtPmZlYXR1cmUxKSkgfA0KPiAtCQlEV0NFUU9T X01UTF9UWFFfVFhRRU4gfCBEV0NFUU9TX01UTF9UWFFfVFNGIHwNCj4gLQkJRFdDRVFPU19NVExf VFhRX1RUQzUxMjsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19NVExfVFhRMF9P UEVSLCByZWd2YWwpOw0KPiAtDQo+IC0JcmVndmFsID0gRFdDRVFPU19NVExfUlhRX1NJWkUoDQo+ IC0JCQlEV0NFUU9TX01BQ19IV19GRUFUVVJFMV9SWEZJRk9TSVpFKGxwLT5mZWF0dXJlMSkpIHwN Cj4gLQkJRFdDRVFPU19NVExfUlhRX0ZVUCB8IERXQ0VRT1NfTVRMX1JYUV9GRVAgfCBEV0NFUU9T X01UTF9SWFFfUlNGOw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01UTF9SWFEw X09QRVIsIHJlZ3ZhbCk7DQo+IC0NCj4gLQlkd2NlcW9zX2NvbmZpZ3VyZV9mbG93X2NvbnRyb2wo bHApOw0KPiAtDQo+IC0JLyogSW5pdGlhbGl6ZSBNQUMgKi8NCj4gLQlkd2NlcW9zX3NldF91bWFj X2FkZHIobHAsIGxwLT5uZGV2LT5kZXZfYWRkciwgMCk7DQo+IC0NCj4gLQlscC0+ZWVlX2VuYWJs ZWQgPSAwOw0KPiAtDQo+IC0JZHdjZXFvc19jb25maWd1cmVfY2xvY2sobHApOw0KPiAtDQo+IC0J LyogTU1DIGNvdW50ZXJzICovDQo+IC0NCj4gLQkvKiBwcm9iZSBpbXBsZW1lbnRlZCBjb3VudGVy cyAqLw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01NQ19SWElSUU1BU0ssIH4w dSk7DQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfTU1DX1RYSVJRTUFTSywgfjB1 KTsNCj4gLQlscC0+bW1jX3J4X2NvdW50ZXJzX21hc2sgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19E V0NFUU9TX01NQ19SWElSUU1BU0spOw0KPiAtCWxwLT5tbWNfdHhfY291bnRlcnNfbWFzayA9IGR3 Y2Vxb3NfcmVhZChscCwgUkVHX0RXQ0VRT1NfTU1DX1RYSVJRTUFTSyk7DQo+IC0NCj4gLQlkd2Nl cW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19NTUNfQ1RSTCwgRFdDRVFPU19NTUNfQ1RSTF9DTlRS U1QgfA0KPiAtCQlEV0NFUU9TX01NQ19DVFJMX1JTVE9OUkQpOw0KPiAtCWR3Y2Vxb3NfZW5hYmxl X21tY19pbnRlcnJ1cHQobHApOw0KPiAtDQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VR T1NfRE1BX0NIMF9JRSwgMCk7DQo+IC0JZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfTUFD X0lFLCAwKTsNCj4gLQ0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01BQ19DRkcs IERXQ0VRT1NfTUFDX0NGR19JUEMgfA0KPiAtCQlEV0NFUU9TX01BQ19DRkdfRE0gfCBEV0NFUU9T X01BQ19DRkdfVEUgfCBEV0NFUU9TX01BQ19DRkdfUkUpOw0KPiAtDQo+IC0JLyogU3RhcnQgVFgg RE1BICovDQo+IC0JcmVndmFsID0gZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19ETUFfQ0gw X1RYX0NUUkwpOw0KPiAtCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfVFhf Q1RSTCwNCj4gLQkJICAgICAgcmVndmFsIHwgRFdDRVFPU19ETUFfQ0hfQ1RSTF9TVEFSVCk7DQo+ IC0NCj4gLQkvKiBFbmFibGUgTUFDIFRYL1JYICovDQo+IC0JcmVndmFsID0gZHdjZXFvc19yZWFk KGxwLCBSRUdfRFdDRVFPU19NQUNfQ0ZHKTsNCj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdD RVFPU19NQUNfQ0ZHLA0KPiAtCQkgICAgICByZWd2YWwgfCBEV0NFUU9TX01BQ19DRkdfVEUgfCBE V0NFUU9TX01BQ19DRkdfUkUpOw0KPiAtDQo+IC0JbHAtPnBoeV9kZWZlciA9IGZhbHNlOw0KPiAt CW11dGV4X2xvY2soJm5kZXYtPnBoeWRldi0+bG9jayk7DQo+IC0JcGh5X3JlYWRfc3RhdHVzKG5k ZXYtPnBoeWRldik7DQo+IC0JZHdjZXFvc19hZGp1c3RfbGluayhscC0+bmRldik7DQo+IC0JbXV0 ZXhfdW5sb2NrKCZuZGV2LT5waHlkZXYtPmxvY2spOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9p ZCBkd2NlcW9zX3R4X3JlY2xhaW0odW5zaWduZWQgbG9uZyBkYXRhKQ0KPiAtew0KPiAtCXN0cnVj dCBuZXRfZGV2aWNlICpuZGV2ID0gKHN0cnVjdCBuZXRfZGV2aWNlICopZGF0YTsNCj4gLQlzdHJ1 Y3QgbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtCXVuc2lnbmVkIGludCB0 eF9ieXRlcyA9IDA7DQo+IC0JdW5zaWduZWQgaW50IHR4X3BhY2tldHMgPSAwOw0KPiAtDQo+IC0J c3Bpbl9sb2NrKCZscC0+dHhfbG9jayk7DQo+IC0NCj4gLQl3aGlsZSAobHAtPnR4X2ZyZWUgPCBE V0NFUU9TX1RYX0RDTlQpIHsNCj4gLQkJc3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MgKmRkID0gJmxw LT50eF9kZXNjc1tscC0+dHhfY3VyXTsNCj4gLQkJc3RydWN0IHJpbmdfZGVzYyAqcmQgPSAmbHAt PnR4X3NrYltscC0+dHhfY3VyXTsNCj4gLQ0KPiAtCQkvKiBEZXNjcmlwdG9yIHN0aWxsIGJlaW5n IGhlbGQgYnkgRE1BID8gKi8NCj4gLQkJaWYgKGRkLT5kZXMzICYgRFdDRVFPU19ETUFfVERFUzNf T1dOKQ0KPiAtCQkJYnJlYWs7DQo+IC0NCj4gLQkJaWYgKHJkLT5tYXBwaW5nKQ0KPiAtCQkJZG1h X3VubWFwX3NpbmdsZShuZGV2LT5kZXYucGFyZW50LCByZC0+bWFwcGluZywgcmQtPmxlbiwNCj4g LQkJCQkJIERNQV9UT19ERVZJQ0UpOw0KPiAtDQo+IC0JCWlmICh1bmxpa2VseShyZC0+c2tiKSkg ew0KPiAtCQkJKyt0eF9wYWNrZXRzOw0KPiAtCQkJdHhfYnl0ZXMgKz0gcmQtPnNrYi0+bGVuOw0K PiAtCQkJZGV2X2NvbnN1bWVfc2tiX2FueShyZC0+c2tiKTsNCj4gLQkJfQ0KPiAtDQo+IC0JCXJk LT5za2IgPSBOVUxMOw0KPiAtCQlyZC0+bWFwcGluZyA9IDA7DQo+IC0JCWxwLT50eF9mcmVlKys7 DQo+IC0JCWxwLT50eF9jdXIgPSAobHAtPnR4X2N1ciArIDEpICUgRFdDRVFPU19UWF9EQ05UOw0K PiAtDQo+IC0JCWlmICgoZGQtPmRlczMgJiBEV0NFUU9TX0RNQV9UREVTM19MRCkgJiYNCj4gLQkJ ICAgIChkZC0+ZGVzMyAmIERXQ0VRT1NfRE1BX1JERVMzX0VTKSkgew0KPiAtCQkJaWYgKG5ldGlm X21zZ190eF9lcnIobHApKQ0KPiAtCQkJCW5ldGRldl9lcnIobmRldiwgIlRYIEVycm9yLCBUREVT MyA9IDB4JXhcbiIsDQo+IC0JCQkJCSAgIGRkLT5kZXMzKTsNCj4gLQkJCWlmIChuZXRpZl9tc2df aHcobHApKQ0KPiAtCQkJCXByaW50X3N0YXR1cyhscCk7DQo+IC0JCX0NCj4gLQl9DQo+IC0Jc3Bp bl91bmxvY2soJmxwLT50eF9sb2NrKTsNCj4gLQ0KPiAtCW5ldGRldl9jb21wbGV0ZWRfcXVldWUo bmRldiwgdHhfcGFja2V0cywgdHhfYnl0ZXMpOw0KPiAtDQo+IC0JZHdjZXFvc19kbWFfZW5hYmxl X3R4aXJxKGxwKTsNCj4gLQluZXRpZl93YWtlX3F1ZXVlKG5kZXYpOw0KPiAtfQ0KPiAtDQo+IC1z dGF0aWMgaW50IGR3Y2Vxb3Nfcngoc3RydWN0IG5ldF9sb2NhbCAqbHAsIGludCBidWRnZXQpDQo+ IC17DQo+IC0Jc3RydWN0IHNrX2J1ZmYgKnNrYjsNCj4gLQl1MzIgdG90X3NpemUgPSAwOw0KPiAt CXVuc2lnbmVkIGludCBuX3BhY2tldHMgPSAwOw0KPiAtCXVuc2lnbmVkIGludCBuX2Rlc2NzID0g MDsNCj4gLQl1MzIgbGVuOw0KPiAtDQo+IC0Jc3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MgKmRkOw0K PiAtCXN0cnVjdCBza19idWZmICpuZXdfc2tiOw0KPiAtCWRtYV9hZGRyX3QgbmV3X3NrYl9iYWRk ciA9IDA7DQo+IC0NCj4gLQl3aGlsZSAobl9kZXNjcyA8IGJ1ZGdldCkgew0KPiAtCQlpZiAoIWR3 Y2Vxb3NfcGFja2V0X2F2YWlsKGxwKSkNCj4gLQkJCWJyZWFrOw0KPiAtDQo+IC0JCW5ld19za2Ig PSBuZXRkZXZfYWxsb2Nfc2tiKGxwLT5uZGV2LCBEV0NFUU9TX1JYX0JVRl9TSVpFKTsNCj4gLQkJ aWYgKCFuZXdfc2tiKSB7DQo+IC0JCQluZXRkZXZfZXJyKGxwLT5uZGV2LCAibm8gbWVtb3J5IGZv ciBuZXcgc2tfYnVmZlxuIik7DQo+IC0JCQlicmVhazsNCj4gLQkJfQ0KPiAtDQo+IC0JCS8qIEdl dCBkbWEgaGFuZGxlIG9mIHNrYi0+ZGF0YSAqLw0KPiAtCQluZXdfc2tiX2JhZGRyID0gKHUzMilk bWFfbWFwX3NpbmdsZShscC0+bmRldi0+ZGV2LnBhcmVudCwNCj4gLQkJCQkJbmV3X3NrYi0+ZGF0 YSwNCj4gLQkJCQkJRFdDRVFPU19SWF9CVUZfU0laRSwNCj4gLQkJCQkJRE1BX0ZST01fREVWSUNF KTsNCj4gLQkJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKGxwLT5uZGV2LT5kZXYucGFyZW50LCBuZXdf c2tiX2JhZGRyKSkgew0KPiAtCQkJbmV0ZGV2X2VycihscC0+bmRldiwgIkRNQSBtYXAgZXJyb3Jc biIpOw0KPiAtCQkJZGV2X2tmcmVlX3NrYihuZXdfc2tiKTsNCj4gLQkJCWJyZWFrOw0KPiAtCQl9 DQo+IC0NCj4gLQkJLyogUmVhZCBkZXNjcmlwdG9yIGRhdGEgYWZ0ZXIgcmVhZGluZyBvd25lciBi aXQuICovDQo+IC0JCWRtYV9ybWIoKTsNCj4gLQ0KPiAtCQlkZCA9ICZscC0+cnhfZGVzY3NbbHAt PnJ4X2N1cl07DQo+IC0JCWxlbiA9IERXQ0VRT1NfRE1BX1JERVMzX1BMKGRkLT5kZXMzKTsNCj4g LQkJc2tiID0gbHAtPnJ4X3NrYltscC0+cnhfY3VyXS5za2I7DQo+IC0NCj4gLQkJLyogVW5tYXAg b2xkIGJ1ZmZlciAqLw0KPiAtCQlkbWFfdW5tYXBfc2luZ2xlKGxwLT5uZGV2LT5kZXYucGFyZW50 LA0KPiAtCQkJCSBscC0+cnhfc2tiW2xwLT5yeF9jdXJdLm1hcHBpbmcsDQo+IC0JCQkJIGxwLT5y eF9za2JbbHAtPnJ4X2N1cl0ubGVuLCBETUFfRlJPTV9ERVZJQ0UpOw0KPiAtDQo+IC0JCS8qIERp c2NhcmQgcGFja2V0IG9uIHJlY2VwdGlvbiBlcnJvciBvciBiYWQgY2hlY2tzdW0gKi8NCj4gLQkJ aWYgKChkZC0+ZGVzMyAmIERXQ0VRT1NfRE1BX1JERVMzX0VTKSB8fA0KPiAtCQkgICAgKGRkLT5k ZXMxICYgRFdDRVFPU19ETUFfUkRFUzFfSVBDRSkpIHsNCj4gLQkJCWRldl9rZnJlZV9za2Ioc2ti KTsNCj4gLQkJCXNrYiA9IE5VTEw7DQo+IC0JCX0gZWxzZSB7DQo+IC0JCQlza2JfcHV0KHNrYiwg bGVuKTsNCj4gLQkJCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGxwLT5uZGV2 KTsNCj4gLQkJCXN3aXRjaCAoZGQtPmRlczEgJiBEV0NFUU9TX0RNQV9SREVTMV9QVCkgew0KPiAt CQkJY2FzZSBEV0NFUU9TX0RNQV9SREVTMV9QVF9VRFA6DQo+IC0JCQljYXNlIERXQ0VRT1NfRE1B X1JERVMxX1BUX1RDUDoNCj4gLQkJCWNhc2UgRFdDRVFPU19ETUFfUkRFUzFfUFRfSUNNUDoNCj4g LQkJCQlza2ItPmlwX3N1bW1lZCA9IENIRUNLU1VNX1VOTkVDRVNTQVJZOw0KPiAtCQkJCWJyZWFr Ow0KPiAtCQkJZGVmYXVsdDoNCj4gLQkJCQlza2ItPmlwX3N1bW1lZCA9IENIRUNLU1VNX05PTkU7 DQo+IC0JCQkJYnJlYWs7DQo+IC0JCQl9DQo+IC0JCX0NCj4gLQ0KPiAtCQlpZiAodW5saWtlbHko IXNrYikpIHsNCj4gLQkJCWlmIChuZXRpZl9tc2dfcnhfZXJyKGxwKSkNCj4gLQkJCQluZXRkZXZf ZGJnKGxwLT5uZGV2LCAicnggZXJyb3I6IGRlczM9JVhcbiIsDQo+IC0JCQkJCSAgIGxwLT5yeF9k ZXNjc1tscC0+cnhfY3VyXS5kZXMzKTsNCj4gLQkJfSBlbHNlIHsNCj4gLQkJCXRvdF9zaXplICs9 IHNrYi0+bGVuOw0KPiAtCQkJbl9wYWNrZXRzKys7DQo+IC0NCj4gLQkJCW5ldGlmX3JlY2VpdmVf c2tiKHNrYik7DQo+IC0JCX0NCj4gLQ0KPiAtCQlscC0+cnhfZGVzY3NbbHAtPnJ4X2N1cl0uZGVz MCA9IG5ld19za2JfYmFkZHI7DQo+IC0JCWxwLT5yeF9kZXNjc1tscC0+cnhfY3VyXS5kZXMxID0g MDsNCj4gLQkJbHAtPnJ4X2Rlc2NzW2xwLT5yeF9jdXJdLmRlczIgPSAwOw0KPiAtCQkvKiBUaGUg RE1BIG11c3Qgb2JzZXJ2ZSBkZXMwLzEvMiB3cml0dGVuIGJlZm9yZSBkZXMzLiAqLw0KPiAtCQl3 bWIoKTsNCj4gLQkJbHAtPnJ4X2Rlc2NzW2xwLT5yeF9jdXJdLmRlczMgPSBEV0NFUU9TX0RNQV9S REVTM19JTlRFIHwNCj4gLQkJCQkJCURXQ0VRT1NfRE1BX1JERVMzX09XTiAgfA0KPiAtCQkJCQkJ RFdDRVFPU19ETUFfUkRFUzNfQlVGMVY7DQo+IC0NCj4gLQkJbHAtPnJ4X3NrYltscC0+cnhfY3Vy XS5tYXBwaW5nID0gbmV3X3NrYl9iYWRkcjsNCj4gLQkJbHAtPnJ4X3NrYltscC0+cnhfY3VyXS5s ZW4gPSBEV0NFUU9TX1JYX0JVRl9TSVpFOw0KPiAtCQlscC0+cnhfc2tiW2xwLT5yeF9jdXJdLnNr YiA9IG5ld19za2I7DQo+IC0NCj4gLQkJbl9kZXNjcysrOw0KPiAtCQlscC0+cnhfY3VyID0gKGxw LT5yeF9jdXIgKyAxKSAlIERXQ0VRT1NfUlhfRENOVDsNCj4gLQl9DQo+IC0NCj4gLQkvKiBNYWtl IHN1cmUgYW55IG93bmVyc2hpcCB1cGRhdGUgaXMgd3JpdHRlbiB0byB0aGUgZGVzY3JpcHRvcnMg YmVmb3JlDQo+IC0JICogRE1BIHdha2V1cC4NCj4gLQkgKi8NCj4gLQl3bWIoKTsNCj4gLQ0KPiAt CWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX0RNQV9DSDBfU1RBLCBEV0NFUU9TX0RNQV9D SDBfSVNfUkkpOw0KPiAtCS8qIFdha2UgdXAgUlggYnkgd3JpdGluZyB0YWlsIHBvaW50ZXIgKi8N Cj4gLQlkd2NlcW9zX3dyaXRlKGxwLCBSRUdfRFdDRVFPU19ETUFfQ0gwX1JYREVTQ19UQUlMLA0K PiAtCQkgICAgICBscC0+cnhfZGVzY3NfdGFpbF9hZGRyKTsNCj4gLQ0KPiAtCXJldHVybiBuX2Rl c2NzOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3NfcnhfcG9sbChzdHJ1Y3QgbmFw aV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpDQo+IC17DQo+IC0Jc3RydWN0IG5ldF9sb2NhbCAq bHAgPSBjb250YWluZXJfb2YobmFwaSwgc3RydWN0IG5ldF9sb2NhbCwgbmFwaSk7DQo+IC0JaW50 IHdvcmtfZG9uZSA9IDA7DQo+IC0NCj4gLQl3b3JrX2RvbmUgPSBkd2NlcW9zX3J4KGxwLCBidWRn ZXQgLSB3b3JrX2RvbmUpOw0KPiAtDQo+IC0JaWYgKCFkd2NlcW9zX3BhY2tldF9hdmFpbChscCkg JiYgd29ya19kb25lIDwgYnVkZ2V0KSB7DQo+IC0JCW5hcGlfY29tcGxldGUobmFwaSk7DQo+IC0J CWR3Y2Vxb3NfZG1hX2VuYWJsZV9yeGlycShscCk7DQo+IC0JfSBlbHNlIHsNCj4gLQkJd29ya19k b25lID0gYnVkZ2V0Ow0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiB3b3JrX2RvbmU7DQo+IC19DQo+ IC0NCj4gLS8qIFJlaW5pdGlhbGl6ZSBmdW5jdGlvbiBpZiBhIFRYIHRpbWVkIG91dCAqLw0KPiAt c3RhdGljIHZvaWQgZHdjZXFvc19yZWluaXRfZm9yX3R4dGltZW91dChzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKmRhdGEpDQo+IC17DQo+IC0Jc3RydWN0IG5ldF9sb2NhbCAqbHAgPSBjb250YWluZXJfb2Yo ZGF0YSwgc3RydWN0IG5ldF9sb2NhbCwNCj4gLQkJdHh0aW1lb3V0X3JlaW5pdCk7DQo+IC0NCj4g LQluZXRkZXZfZXJyKGxwLT5uZGV2LCAidHJhbnNtaXQgdGltZW91dCAlZCBzLCByZXNldHRpbmcu Li5cbiIsDQo+IC0JCSAgIERXQ0VRT1NfVFhfVElNRU9VVCk7DQo+IC0NCj4gLQlpZiAobmV0aWZf bXNnX2h3KGxwKSkNCj4gLQkJcHJpbnRfc3RhdHVzKGxwKTsNCj4gLQ0KPiAtCXJ0bmxfbG9jaygp Ow0KPiAtCWR3Y2Vxb3Nfc3RvcChscC0+bmRldik7DQo+IC0JZHdjZXFvc19vcGVuKGxwLT5uZGV2 KTsNCj4gLQlydG5sX3VubG9jaygpOw0KPiAtfQ0KPiAtDQo+IC0vKiBEVCBQcm9iaW5nIGZ1bmN0 aW9uIGNhbGxlZCBieSBtYWluIHByb2JlICovDQo+IC1zdGF0aWMgaW5saW5lIGludCBkd2NlcW9z X3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAtew0KPiAt CXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2Ow0KPiAtCXN0cnVjdCBuZXRfbG9jYWwgKmxwOw0KPiAt CWNvbnN0IHZvaWQgKm1hY19hZGRyZXNzOw0KPiAtCXN0cnVjdCBkd2NlcW9zX2J1c19jZmcgKmJ1 c19jZmc7DQo+IC0Jc3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOw0K PiAtDQo+IC0JbmRldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiAtCWxwID0gbmV0 ZGV2X3ByaXYobmRldik7DQo+IC0JYnVzX2NmZyA9ICZscC0+YnVzX2NmZzsNCj4gLQ0KPiAtCS8q IFNldCB0aGUgTUFDIGFkZHJlc3MuICovDQo+IC0JbWFjX2FkZHJlc3MgPSBvZl9nZXRfbWFjX2Fk ZHJlc3MocGRldi0+ZGV2Lm9mX25vZGUpOw0KPiAtCWlmIChtYWNfYWRkcmVzcykNCj4gLQkJZXRo ZXJfYWRkcl9jb3B5KG5kZXYtPmRldl9hZGRyLCBtYWNfYWRkcmVzcyk7DQo+IC0NCj4gLQkvKiBU aGVzZSBhcmUgYWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgKi8NCj4gLQlscC0+ZW5fdHhfbHBpX2Ns b2NrZ2F0aW5nID0gIG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwNCj4gLQkJInNucHMsZW4tdHgt bHBpLWNsb2NrZ2F0aW5nIik7DQo+IC0JYnVzX2NmZy0+ZW5fbHBpID0gb2ZfcHJvcGVydHlfcmVh ZF9ib29sKG5wLCAic25wcyxlbi1scGkiKTsNCj4gLQlvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwg InNucHMsd3JpdGUtcmVxdWVzdHMiLA0KPiAtCQkJICAgICAmYnVzX2NmZy0+d3JpdGVfcmVxdWVz dHMpOw0KPiAtCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAic25wcyxyZWFkLXJlcXVlc3RzIiwg JmJ1c19jZmctPnJlYWRfcmVxdWVzdHMpOw0KPiAtCW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAi c25wcyxidXJzdC1tYXAiLCAmYnVzX2NmZy0+YnVyc3RfbWFwKTsNCj4gLQlvZl9wcm9wZXJ0eV9y ZWFkX3UzMihucCwgInNucHMsdHhwYmwiLCAmYnVzX2NmZy0+dHhfcGJsKTsNCj4gLQlvZl9wcm9w ZXJ0eV9yZWFkX3UzMihucCwgInNucHMscnhwYmwiLCAmYnVzX2NmZy0+cnhfcGJsKTsNCj4gLQ0K PiAtCW5ldGRldl9kYmcobmRldiwgIkJ1c0NmZzogbHBpOiV1IHdyOiV1IHJyOiV1IGJtOiVYIHJ4 cGJsOiV1IHR4cGJsOiVkXG4iLA0KPiAtCQkgICBidXNfY2ZnLT5lbl9scGksDQo+IC0JCSAgIGJ1 c19jZmctPndyaXRlX3JlcXVlc3RzLA0KPiAtCQkgICBidXNfY2ZnLT5yZWFkX3JlcXVlc3RzLA0K PiAtCQkgICBidXNfY2ZnLT5idXJzdF9tYXAsDQo+IC0JCSAgIGJ1c19jZmctPnJ4X3BibCwNCj4g LQkJICAgYnVzX2NmZy0+dHhfcGJsKTsNCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+ IC1zdGF0aWMgaW50IGR3Y2Vxb3Nfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikNCj4gLXsN Cj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtCWludCBy ZXM7DQo+IC0NCj4gLQlkd2NlcW9zX3Jlc2V0X3N0YXRlKGxwKTsNCj4gLQlyZXMgPSBkd2NlcW9z X2Rlc2NyaXB0b3JfaW5pdChscCk7DQo+IC0JaWYgKHJlcykgew0KPiAtCQluZXRkZXZfZXJyKG5k ZXYsICJVbmFibGUgdG8gYWxsb2NhdGUgRE1BIG1lbW9yeSwgcmMgJWRcbiIsIHJlcyk7DQo+IC0J CXJldHVybiByZXM7DQo+IC0JfQ0KPiAtCW5ldGRldl9yZXNldF9xdWV1ZShuZGV2KTsNCj4gLQ0K PiAtCS8qIFRoZSBkd2NlcW9zIHJlc2V0IHN0YXRlIG1hY2hpbmUgcmVxdWlyZXMgYWxsIHBoeSBj bG9ja3MgdG8gY29tcGxldGUsDQo+IC0JICogaGVuY2UgdGhlIHVudXN1YWwgaW5pdCBvcmRlciB3 aXRoIHBoeV9zdGFydCBmaXJzdC4NCj4gLQkgKi8NCj4gLQlscC0+cGh5X2RlZmVyID0gdHJ1ZTsN Cj4gLQlwaHlfc3RhcnQobmRldi0+cGh5ZGV2KTsNCj4gLQlkd2NlcW9zX2luaXRfaHcobHApOw0K PiAtCW5hcGlfZW5hYmxlKCZscC0+bmFwaSk7DQo+IC0NCj4gLQluZXRpZl9zdGFydF9xdWV1ZShu ZGV2KTsNCj4gLQl0YXNrbGV0X2VuYWJsZSgmbHAtPnR4X2JkcmVjbGFpbV90YXNrbGV0KTsNCj4g LQ0KPiAtCS8qIEVuYWJsZSBJbnRlcnJ1cHRzIC0tIGRvIHRoaXMgb25seSBhZnRlciB3ZSBlbmFi bGUgTkFQSSBhbmQgdGhlDQo+IC0JICogdGFza2xldC4NCj4gLQkgKi8NCj4gLQlkd2NlcW9zX3dy aXRlKGxwLCBSRUdfRFdDRVFPU19ETUFfQ0gwX0lFLA0KPiAtCQkgICAgICBEV0NFUU9TX0RNQV9D SDBfSUVfTklFIHwNCj4gLQkJICAgICAgRFdDRVFPU19ETUFfQ0gwX0lFX1JJRSB8IERXQ0VRT1Nf RE1BX0NIMF9JRV9USUUgfA0KPiAtCQkgICAgICBEV0NFUU9TX0RNQV9DSDBfSUVfQUlFIHwNCj4g LQkJICAgICAgRFdDRVFPU19ETUFfQ0gwX0lFX0ZCRUUpOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+ IC19DQo+IC0NCj4gLXN0YXRpYyBib29sIGR3ZXFvc19pc190eF9kbWFfc3VzcGVuZGVkKHN0cnVj dCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCXUzMiByZWc7DQo+IC0NCj4gLQlyZWcgPSBkd2Nl cW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX0RNQV9ERUJVR19TVDApOw0KPiAtCXJlZyA9IERNQV9H RVRfVFhfU1RBVEVfQ0gwKHJlZyk7DQo+IC0NCj4gLQlyZXR1cm4gcmVnID09IERNQV9UWF9DSF9T VVNQRU5ERUQ7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfZHJhaW5fZG1hKHN0 cnVjdCBuZXRfbG9jYWwgKmxwKQ0KPiAtew0KPiAtCS8qIFdhaXQgZm9yIGFsbCBwZW5kaW5nIFRY IGJ1ZmZlcnMgdG8gYmUgc2VudC4gVXBwZXIgbGltaXQgYmFzZWQNCj4gLQkgKiBvbiBtYXggZnJh bWUgc2l6ZSBvbiBhIDEwIE1iaXQgbGluay4NCj4gLQkgKi8NCj4gLQlzaXplX3QgbGltaXQgPSAo RFdDRVFPU19UWF9EQ05UICogMTI1MCkgLyAxMDA7DQo+IC0NCj4gLQl3aGlsZSAoIWR3ZXFvc19p c190eF9kbWFfc3VzcGVuZGVkKGxwKSAmJiBsaW1pdC0tKQ0KPiAtCQl1c2xlZXBfcmFuZ2UoMTAw LCAyMDApOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3Nfc3RvcChzdHJ1Y3QgbmV0 X2RldmljZSAqbmRldikNCj4gLXsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICpscCA9IG5ldGRldl9w cml2KG5kZXYpOw0KPiAtDQo+IC0JdGFza2xldF9kaXNhYmxlKCZscC0+dHhfYmRyZWNsYWltX3Rh c2tsZXQpOw0KPiAtCW5hcGlfZGlzYWJsZSgmbHAtPm5hcGkpOw0KPiAtDQo+IC0JLyogU3RvcCBh bGwgdHggYmVmb3JlIHdlIGRyYWluIHRoZSB0eCBkbWEuICovDQo+IC0JbmV0aWZfdHhfbG9ja19i aChscC0+bmRldik7DQo+IC0JbmV0aWZfc3RvcF9xdWV1ZShuZGV2KTsNCj4gLQluZXRpZl90eF91 bmxvY2tfYmgobHAtPm5kZXYpOw0KPiAtDQo+IC0JZHdjZXFvc19kcmFpbl9kbWEobHApOw0KPiAt CWR3Y2Vxb3NfcmVzZXRfaHcobHApOw0KPiAtCXBoeV9zdG9wKG5kZXYtPnBoeWRldik7DQo+IC0N Cj4gLQlkd2NlcW9zX2Rlc2NyaXB0b3JfZnJlZShscCk7DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4g LX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19kbWFkZXNjX3NldF9jdHgoc3RydWN0IG5l dF9sb2NhbCAqbHAsDQo+IC0JCQkJICAgIHVuc2lnbmVkIHNob3J0IGdzb19zaXplKQ0KPiAtew0K PiAtCXN0cnVjdCBkd2NlcW9zX2RtYV9kZXNjICpkZCA9ICZscC0+dHhfZGVzY3NbbHAtPnR4X25l eHRdOw0KPiAtDQo+IC0JZGQtPmRlczAgPSAwOw0KPiAtCWRkLT5kZXMxID0gMDsNCj4gLQlkZC0+ ZGVzMiA9IGdzb19zaXplOw0KPiAtCWRkLT5kZXMzID0gRFdDRVFPU19ETUFfVERFUzNfQ1RYVCB8 IERXQ0VRT1NfRE1BX1RERVMzX1RDTVNTVjsNCj4gLQ0KPiAtCWxwLT50eF9uZXh0ID0gKGxwLT50 eF9uZXh0ICsgMSkgJSBEV0NFUU9TX1RYX0RDTlQ7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lk IGR3Y2Vxb3NfdHhfcG9sbF9kZW1hbmQoc3RydWN0IG5ldF9sb2NhbCAqbHApDQo+IC17DQo+IC0J ZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfRE1BX0NIMF9UWERFU0NfVEFJTCwNCj4gLQkJ ICAgICAgbHAtPnR4X2Rlc2NzX3RhaWxfYWRkcik7DQo+IC19DQo+IC0NCj4gLXN0cnVjdCBkd2Nl cW9zX3R4IHsNCj4gLQlzaXplX3QgbnJfZGVzY3JpcHRvcnM7DQo+IC0Jc2l6ZV90IGluaXRpYWxf ZGVzY3JpcHRvcjsNCj4gLQlzaXplX3QgbGFzdF9kZXNjcmlwdG9yOw0KPiAtCXNpemVfdCBwcmV2 X2dzb19zaXplOw0KPiAtCXNpemVfdCBuZXR3b3JrX2hlYWRlcl9sZW47DQo+IC19Ow0KPiAtDQo+ IC1zdGF0aWMgdm9pZCBkd2NlcW9zX3R4X3ByZXBhcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3Ry dWN0IG5ldF9sb2NhbCAqbHAsDQo+IC0JCQkgICAgICAgc3RydWN0IGR3Y2Vxb3NfdHggKnR4KQ0K PiAtew0KPiAtCXNpemVfdCBuID0gMTsNCj4gLQlzaXplX3QgaTsNCj4gLQ0KPiAtCWlmIChza2Jf aXNfZ3NvKHNrYikgJiYgc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSAhPSBscC0+Z3NvX3NpemUp DQo+IC0JCSsrbjsNCj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCBza2Jfc2hpbmZvKHNrYiktPm5y X2ZyYWdzOyArK2kpIHsNCj4gLQkJc2tiX2ZyYWdfdCAqZnJhZyA9ICZza2Jfc2hpbmZvKHNrYikt PmZyYWdzW2ldOw0KPiAtDQo+IC0JCW4gKz0gIChza2JfZnJhZ19zaXplKGZyYWcpICsgQllURVNf UEVSX0RNQV9ERVNDIC0gMSkgLw0KPiAtCQkgICAgICAgQllURVNfUEVSX0RNQV9ERVNDOw0KPiAt CX0NCj4gLQ0KPiAtCXR4LT5ucl9kZXNjcmlwdG9ycyA9IG47DQo+IC0JdHgtPmluaXRpYWxfZGVz Y3JpcHRvciA9IGxwLT50eF9uZXh0Ow0KPiAtCXR4LT5sYXN0X2Rlc2NyaXB0b3IgPSBscC0+dHhf bmV4dDsNCj4gLQl0eC0+cHJldl9nc29fc2l6ZSA9IGxwLT5nc29fc2l6ZTsNCj4gLQ0KPiAtCXR4 LT5uZXR3b3JrX2hlYWRlcl9sZW4gPSBza2JfdHJhbnNwb3J0X29mZnNldChza2IpOw0KPiAtCWlm IChza2JfaXNfZ3NvKHNrYikpDQo+IC0JCXR4LT5uZXR3b3JrX2hlYWRlcl9sZW4gKz0gdGNwX2hk cmxlbihza2IpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3NfdHhfbGluZWFyKHN0 cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfbG9jYWwgKmxwLA0KPiAtCQkJICAgICBzdHJ1 Y3QgZHdjZXFvc190eCAqdHgpDQo+IC17DQo+IC0Jc3RydWN0IHJpbmdfZGVzYyAqcmQ7DQo+IC0J c3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MgKmRkOw0KPiAtCXNpemVfdCBwYXlsb2FkX2xlbjsNCj4g LQlkbWFfYWRkcl90IGRtYV9oYW5kbGU7DQo+IC0NCj4gLQlpZiAoc2tiX2lzX2dzbyhza2IpICYm IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUgIT0gbHAtPmdzb19zaXplKSB7DQo+IC0JCWR3Y2Vx b3NfZG1hZGVzY19zZXRfY3R4KGxwLCBza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplKTsNCj4gLQkJ bHAtPmdzb19zaXplID0gc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZTsNCj4gLQl9DQo+IC0NCj4g LQlkbWFfaGFuZGxlID0gZG1hX21hcF9zaW5nbGUobHAtPm5kZXYtPmRldi5wYXJlbnQsIHNrYi0+ ZGF0YSwNCj4gLQkJCQkgICAgc2tiX2hlYWRsZW4oc2tiKSwgRE1BX1RPX0RFVklDRSk7DQo+IC0N Cj4gLQlpZiAoZG1hX21hcHBpbmdfZXJyb3IobHAtPm5kZXYtPmRldi5wYXJlbnQsIGRtYV9oYW5k bGUpKSB7DQo+IC0JCW5ldGRldl9lcnIobHAtPm5kZXYsICJUWCBETUEgTWFwcGluZyBlcnJvclxu Iik7DQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiAtCX0NCj4gLQ0KPiAtCXJkID0gJmxwLT50eF9z a2JbbHAtPnR4X25leHRdOw0KPiAtCWRkID0gJmxwLT50eF9kZXNjc1tscC0+dHhfbmV4dF07DQo+ IC0NCj4gLQlyZC0+c2tiID0gTlVMTDsNCj4gLQlyZC0+bGVuID0gc2tiX2hlYWRsZW4oc2tiKTsN Cj4gLQlyZC0+bWFwcGluZyA9IGRtYV9oYW5kbGU7DQo+IC0NCj4gLQkvKiBTZXQgdXAgRE1BIERl c2NyaXB0b3IgKi8NCj4gLQlkZC0+ZGVzMCA9IGRtYV9oYW5kbGU7DQo+IC0NCj4gLQlpZiAoc2ti X2lzX2dzbyhza2IpKSB7DQo+IC0JCXBheWxvYWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKSAtIHR4 LT5uZXR3b3JrX2hlYWRlcl9sZW47DQo+IC0NCj4gLQkJaWYgKHBheWxvYWRfbGVuKQ0KPiAtCQkJ ZGQtPmRlczEgPSBkbWFfaGFuZGxlICsgdHgtPm5ldHdvcmtfaGVhZGVyX2xlbjsNCj4gLQkJZGQt PmRlczIgPSB0eC0+bmV0d29ya19oZWFkZXJfbGVuIHwNCj4gLQkJCURXQ0VRT1NfRE1BX0RFUzJf QjJMKHBheWxvYWRfbGVuKTsNCj4gLQkJZGQtPmRlczMgPSBEV0NFUU9TX0RNQV9UREVTM19UU0Ug fA0KPiAtCQkJRFdDRVFPU19ETUFfREVTM19USEwoKHRjcF9oZHJsZW4oc2tiKSAvIDQpKSB8DQo+ IC0JCQkoc2tiLT5sZW4gLSB0eC0+bmV0d29ya19oZWFkZXJfbGVuKTsNCj4gLQl9IGVsc2Ugew0K PiAtCQlkZC0+ZGVzMSA9IDA7DQo+IC0JCWRkLT5kZXMyID0gc2tiX2hlYWRsZW4oc2tiKTsNCj4g LQkJZGQtPmRlczMgPSBza2ItPmxlbjsNCj4gLQ0KPiAtCQlzd2l0Y2ggKHNrYi0+aXBfc3VtbWVk KSB7DQo+IC0JCWNhc2UgQ0hFQ0tTVU1fUEFSVElBTDoNCj4gLQkJCWRkLT5kZXMzIHw9IERXQ0VR T1NfRE1BX1RERVMzX0NBOw0KPiAtCQljYXNlIENIRUNLU1VNX05PTkU6DQo+IC0JCWNhc2UgQ0hF Q0tTVU1fVU5ORUNFU1NBUlk6DQo+IC0JCWNhc2UgQ0hFQ0tTVU1fQ09NUExFVEU6DQo+IC0JCWRl ZmF1bHQ6DQo+IC0JCQlicmVhazsNCj4gLQkJfQ0KPiAtCX0NCj4gLQ0KPiAtCWRkLT5kZXMzIHw9 IERXQ0VRT1NfRE1BX1RERVMzX0ZEOw0KPiAtCWlmIChscC0+dHhfbmV4dCAgIT0gdHgtPmluaXRp YWxfZGVzY3JpcHRvcikNCj4gLQkJZGQtPmRlczMgfD0gRFdDRVFPU19ETUFfVERFUzNfT1dOOw0K PiAtDQo+IC0JdHgtPmxhc3RfZGVzY3JpcHRvciA9IGxwLT50eF9uZXh0Ow0KPiAtCWxwLT50eF9u ZXh0ID0gKGxwLT50eF9uZXh0ICsgMSkgJSBEV0NFUU9TX1RYX0RDTlQ7DQo+IC0NCj4gLQlyZXR1 cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGludCBkd2NlcW9zX3R4X2ZyYWdzKHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBuZXRfbG9jYWwgKmxwLA0KPiAtCQkJICAgIHN0cnVjdCBkd2Nl cW9zX3R4ICp0eCkNCj4gLXsNCj4gLQlzdHJ1Y3QgcmluZ19kZXNjICpyZCA9IE5VTEw7DQo+IC0J c3RydWN0IGR3Y2Vxb3NfZG1hX2Rlc2MgKmRkOw0KPiAtCWRtYV9hZGRyX3QgZG1hX2hhbmRsZTsN Cj4gLQlzaXplX3QgaTsNCj4gLQ0KPiAtCS8qIFNldHVwIG1vcmUgcmluZyBhbmQgRE1BIGRlc2Ny aXB0b3IgaWYgdGhlIHBhY2tldCBpcyBmcmFnbWVudGVkICovDQo+IC0JZm9yIChpID0gMDsgaSA8 IHNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3M7ICsraSkgew0KPiAtCQlza2JfZnJhZ190ICpmcmFn ID0gJnNrYl9zaGluZm8oc2tiKS0+ZnJhZ3NbaV07DQo+IC0JCXNpemVfdCBmcmFnX3NpemU7DQo+ IC0JCXNpemVfdCBjb25zdW1lZF9zaXplOw0KPiAtDQo+IC0JCS8qIE1hcCBETUEgQXJlYSAqLw0K PiAtCQlkbWFfaGFuZGxlID0gc2tiX2ZyYWdfZG1hX21hcChscC0+bmRldi0+ZGV2LnBhcmVudCwg ZnJhZywgMCwNCj4gLQkJCQkJICAgICAgc2tiX2ZyYWdfc2l6ZShmcmFnKSwNCj4gLQkJCQkJICAg ICAgRE1BX1RPX0RFVklDRSk7DQo+IC0JCWlmIChkbWFfbWFwcGluZ19lcnJvcihscC0+bmRldi0+ ZGV2LnBhcmVudCwgZG1hX2hhbmRsZSkpIHsNCj4gLQkJCW5ldGRldl9lcnIobHAtPm5kZXYsICJE TUEgTWFwcGluZyBlcnJvclxuIik7DQo+IC0JCQlyZXR1cm4gLUVOT01FTTsNCj4gLQkJfQ0KPiAt DQo+IC0JCS8qIG9yZGVyLTMgZnJhZ21lbnRzIHNwYW4gbW9yZSB0aGFuIG9uZSBkZXNjcmlwdG9y LiAqLw0KPiAtCQlmcmFnX3NpemUgPSBza2JfZnJhZ19zaXplKGZyYWcpOw0KPiAtCQljb25zdW1l ZF9zaXplID0gMDsNCj4gLQkJd2hpbGUgKGNvbnN1bWVkX3NpemUgPCBmcmFnX3NpemUpIHsNCj4g LQkJCXNpemVfdCBkbWFfc2l6ZSA9IG1pbl90KHNpemVfdCwgMTYzNzYsDQo+IC0JCQkJCQlmcmFn X3NpemUgLSBjb25zdW1lZF9zaXplKTsNCj4gLQ0KPiAtCQkJcmQgPSAmbHAtPnR4X3NrYltscC0+ dHhfbmV4dF07DQo+IC0JCQltZW1zZXQocmQsIDAsIHNpemVvZigqcmQpKTsNCj4gLQ0KPiAtCQkJ ZGQgPSAmbHAtPnR4X2Rlc2NzW2xwLT50eF9uZXh0XTsNCj4gLQ0KPiAtCQkJLyogU2V0IERNQSBE ZXNjcmlwdG9yIGZpZWxkcyAqLw0KPiAtCQkJZGQtPmRlczAgPSBkbWFfaGFuZGxlICsgY29uc3Vt ZWRfc2l6ZTsNCj4gLQkJCWRkLT5kZXMxID0gMDsNCj4gLQkJCWRkLT5kZXMyID0gZG1hX3NpemU7 DQo+IC0NCj4gLQkJCWlmIChza2JfaXNfZ3NvKHNrYikpDQo+IC0JCQkJZGQtPmRlczMgPSAoc2ti LT5sZW4gLSB0eC0+bmV0d29ya19oZWFkZXJfbGVuKTsNCj4gLQkJCWVsc2UNCj4gLQkJCQlkZC0+ ZGVzMyA9IHNrYi0+bGVuOw0KPiAtDQo+IC0JCQlkZC0+ZGVzMyB8PSBEV0NFUU9TX0RNQV9UREVT M19PV047DQo+IC0NCj4gLQkJCXR4LT5sYXN0X2Rlc2NyaXB0b3IgPSBscC0+dHhfbmV4dDsNCj4g LQkJCWxwLT50eF9uZXh0ID0gKGxwLT50eF9uZXh0ICsgMSkgJSBEV0NFUU9TX1RYX0RDTlQ7DQo+ IC0JCQljb25zdW1lZF9zaXplICs9IGRtYV9zaXplOw0KPiAtCQl9DQo+IC0NCj4gLQkJcmQtPmxl biA9IHNrYl9mcmFnX3NpemUoZnJhZyk7DQo+IC0JCXJkLT5tYXBwaW5nID0gZG1hX2hhbmRsZTsN Cj4gLQl9DQo+IC0NCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdj ZXFvc190eF9maW5hbGl6ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2xvY2FsICps cCwNCj4gLQkJCQlzdHJ1Y3QgZHdjZXFvc190eCAqdHgpDQo+IC17DQo+IC0JbHAtPnR4X2Rlc2Nz W3R4LT5sYXN0X2Rlc2NyaXB0b3JdLmRlczMgfD0gRFdDRVFPU19ETUFfVERFUzNfTEQ7DQo+IC0J bHAtPnR4X2Rlc2NzW3R4LT5sYXN0X2Rlc2NyaXB0b3JdLmRlczIgfD0gRFdDRVFPU19ETUFfVERF UzJfSU9DOw0KPiAtDQo+IC0JbHAtPnR4X3NrYlt0eC0+bGFzdF9kZXNjcmlwdG9yXS5za2IgPSBz a2I7DQo+IC0NCj4gLQkvKiBNYWtlIGFsbCBkZXNjcmlwdG9yIHVwZGF0ZXMgdmlzaWJsZSB0byB0 aGUgRE1BIGJlZm9yZSBzZXR0aW5nIHRoZQ0KPiAtCSAqIG93bmVyIGJpdC4NCj4gLQkgKi8NCj4g LQl3bWIoKTsNCj4gLQ0KPiAtCWxwLT50eF9kZXNjc1t0eC0+aW5pdGlhbF9kZXNjcmlwdG9yXS5k ZXMzIHw9IERXQ0VRT1NfRE1BX1RERVMzX09XTjsNCj4gLQ0KPiAtCS8qIE1ha2UgdGhlIG93bmVy IGJpdCB2aXNpYmxlIGJlZm9yZSBUWCB3YWtldXAuICovDQo+IC0Jd21iKCk7DQo+IC0NCj4gLQlk d2NlcW9zX3R4X3BvbGxfZGVtYW5kKGxwKTsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdj ZXFvc190eF9yb2xsYmFjayhzdHJ1Y3QgbmV0X2xvY2FsICpscCwgc3RydWN0IGR3Y2Vxb3NfdHgg KnR4KQ0KPiAtew0KPiAtCXNpemVfdCBpID0gdHgtPmluaXRpYWxfZGVzY3JpcHRvcjsNCj4gLQ0K PiAtCXdoaWxlIChpICE9IGxwLT50eF9uZXh0KSB7DQo+IC0JCWlmIChscC0+dHhfc2tiW2ldLm1h cHBpbmcpDQo+IC0JCQlkbWFfdW5tYXBfc2luZ2xlKGxwLT5uZGV2LT5kZXYucGFyZW50LA0KPiAt CQkJCQkgbHAtPnR4X3NrYltpXS5tYXBwaW5nLA0KPiAtCQkJCQkgbHAtPnR4X3NrYltpXS5sZW4s DQo+IC0JCQkJCSBETUFfVE9fREVWSUNFKTsNCj4gLQ0KPiAtCQlscC0+dHhfc2tiW2ldLm1hcHBp bmcgPSAwOw0KPiAtCQlscC0+dHhfc2tiW2ldLnNrYiA9IE5VTEw7DQo+IC0NCj4gLQkJbWVtc2V0 KCZscC0+dHhfZGVzY3NbaV0sIDAsIHNpemVvZihscC0+dHhfZGVzY3NbaV0pKTsNCj4gLQ0KPiAt CQlpID0gKGkgKyAxKSAlIERXQ0VRT1NfVFhfRENOVDsNCj4gLQl9DQo+IC0NCj4gLQlscC0+dHhf bmV4dCA9IHR4LT5pbml0aWFsX2Rlc2NyaXB0b3I7DQo+IC0JbHAtPmdzb19zaXplID0gdHgtPnBy ZXZfZ3NvX3NpemU7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbnQgZHdjZXFvc19zdGFydF94bWl0 KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQ0KPiAtew0KPiAt CXN0cnVjdCBuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0Jc3RydWN0IGR3 Y2Vxb3NfdHggdHJhbnM7DQo+IC0JaW50IGVycjsNCj4gLQ0KPiAtCWR3Y2Vxb3NfdHhfcHJlcGFy ZShza2IsIGxwLCAmdHJhbnMpOw0KPiAtCWlmIChscC0+dHhfZnJlZSA8IHRyYW5zLm5yX2Rlc2Ny aXB0b3JzKSB7DQo+IC0JCW5ldGlmX3N0b3BfcXVldWUobmRldik7DQo+IC0JCXJldHVybiBORVRE RVZfVFhfQlVTWTsNCj4gLQl9DQo+IC0NCj4gLQllcnIgPSBkd2NlcW9zX3R4X2xpbmVhcihza2Is IGxwLCAmdHJhbnMpOw0KPiAtCWlmIChlcnIpDQo+IC0JCWdvdG8gdHhfZXJyb3I7DQo+IC0NCj4g LQllcnIgPSBkd2NlcW9zX3R4X2ZyYWdzKHNrYiwgbHAsICZ0cmFucyk7DQo+IC0JaWYgKGVycikN Cj4gLQkJZ290byB0eF9lcnJvcjsNCj4gLQ0KPiAtCVdBUk5fT04obHAtPnR4X25leHQgIT0NCj4g LQkJKCh0cmFucy5pbml0aWFsX2Rlc2NyaXB0b3IgKyB0cmFucy5ucl9kZXNjcmlwdG9ycykgJQ0K PiAtCQkgRFdDRVFPU19UWF9EQ05UKSk7DQo+IC0NCj4gLQlzcGluX2xvY2tfYmgoJmxwLT50eF9s b2NrKTsNCj4gLQlscC0+dHhfZnJlZSAtPSB0cmFucy5ucl9kZXNjcmlwdG9yczsNCj4gLQlkd2Nl cW9zX3R4X2ZpbmFsaXplKHNrYiwgbHAsICZ0cmFucyk7DQo+IC0JbmV0ZGV2X3NlbnRfcXVldWUo bmRldiwgc2tiLT5sZW4pOw0KPiAtCXNwaW5fdW5sb2NrX2JoKCZscC0+dHhfbG9jayk7DQo+IC0N Cj4gLQluZXRpZl90cmFuc191cGRhdGUobmRldik7DQo+IC0JcmV0dXJuIDA7DQo+IC0NCj4gLXR4 X2Vycm9yOg0KPiAtCWR3Y2Vxb3NfdHhfcm9sbGJhY2sobHAsICZ0cmFucyk7DQo+IC0JZGV2X2tm cmVlX3NrYl9hbnkoc2tiKTsNCj4gLQlyZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAtLyogU2V0IE1B QyBhZGRyZXNzIGFuZCB0aGVuIHVwZGF0ZSBIVyBhY2NvcmRpbmdseSAqLw0KPiAtc3RhdGljIGlu dCBkd2NlcW9zX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAq YWRkcikNCj4gLXsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYp Ow0KPiAtCXN0cnVjdCBzb2NrYWRkciAqaHdhZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHI7 DQo+IC0NCj4gLQlpZiAobmV0aWZfcnVubmluZyhuZGV2KSkNCj4gLQkJcmV0dXJuIC1FQlVTWTsN Cj4gLQ0KPiAtCWlmICghaXNfdmFsaWRfZXRoZXJfYWRkcihod2FkZHItPnNhX2RhdGEpKQ0KPiAt CQlyZXR1cm4gLUVBRERSTk9UQVZBSUw7DQo+IC0NCj4gLQltZW1jcHkobmRldi0+ZGV2X2FkZHIs IGh3YWRkci0+c2FfZGF0YSwgbmRldi0+YWRkcl9sZW4pOw0KPiAtDQo+IC0JZHdjZXFvc19zZXRf dW1hY19hZGRyKGxwLCBscC0+bmRldi0+ZGV2X2FkZHIsIDApOw0KPiAtCXJldHVybiAwOw0KPiAt fQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX3R4X3RpbWVvdXQoc3RydWN0IG5ldF9kZXZp Y2UgKm5kZXYpDQo+IC17DQo+IC0Jc3RydWN0IG5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihu ZGV2KTsNCj4gLQ0KPiAtCXF1ZXVlX3dvcmsobHAtPnR4dGltZW91dF9oYW5kbGVyX3dxLCAmbHAt PnR4dGltZW91dF9yZWluaXQpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX3Nl dF91bWFjX2FkZHIoc3RydWN0IG5ldF9sb2NhbCAqbHAsIHVuc2lnbmVkIGNoYXIgKmFkZHIsDQo+ IC0JCQkJICB1bnNpZ25lZCBpbnQgcmVnX24pDQo+IC17DQo+IC0JdW5zaWduZWQgbG9uZyBkYXRh Ow0KPiAtDQo+IC0JZGF0YSA9IChhZGRyWzVdIDw8IDgpIHwgYWRkcls0XTsNCj4gLQlkd2NlcW9z X3dyaXRlKGxwLCBEV0NFUU9TX0FERFJfSElHSChyZWdfbiksDQo+IC0JCSAgICAgIGRhdGEgfCBE V0NFUU9TX01BQ19NQUNfQUREUl9ISV9FTik7DQo+IC0JZGF0YSA9IChhZGRyWzNdIDw8IDI0KSB8 IChhZGRyWzJdIDw8IDE2KSB8IChhZGRyWzFdIDw8IDgpIHwgYWRkclswXTsNCj4gLQlkd2NlcW9z X3dyaXRlKGxwLCBEV0NFUU9TX0FERFJfTE9XKHJlZ19uKSwgZGF0YSk7DQo+IC19DQo+IC0NCj4g LXN0YXRpYyB2b2lkIGR3Y2Vxb3NfZGlzYWJsZV91bWFjX2FkZHIoc3RydWN0IG5ldF9sb2NhbCAq bHAsIHVuc2lnbmVkIGludCByZWdfbikNCj4gLXsNCj4gLQkvKiBEbyBub3QgZGlzYWJsZSBNQUMg YWRkcmVzcyAwICovDQo+IC0JaWYgKHJlZ19uICE9IDApDQo+IC0JCWR3Y2Vxb3Nfd3JpdGUobHAs IERXQ0VRT1NfQUREUl9ISUdIKHJlZ19uKSwgMCk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lk IGR3Y2Vxb3Nfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+IC17DQo+IC0J c3RydWN0IG5ldF9sb2NhbCAqbHAgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gLQl1MzIgcmVndmFs ID0gMDsNCj4gLQl1MzIgbWNfZmlsdGVyWzJdOw0KPiAtCWludCByZWcgPSAxOw0KPiAtCXN0cnVj dCBuZXRkZXZfaHdfYWRkciAqaGE7DQo+IC0JdW5zaWduZWQgaW50IG1heF9tYWNfYWRkcjsNCj4g LQ0KPiAtCW1heF9tYWNfYWRkciA9IERXQ0VRT1NfTUFYX1BFUkZFQ1RfQUREUkVTU0VTKGxwLT5m ZWF0dXJlMSk7DQo+IC0NCj4gLQlpZiAobmRldi0+ZmxhZ3MgJiBJRkZfUFJPTUlTQykgew0KPiAt CQlyZWd2YWwgPSBEV0NFUU9TX01BQ19QS1RfRklMVF9QUjsNCj4gLQl9IGVsc2UgaWYgKCgobmV0 ZGV2X21jX2NvdW50KG5kZXYpID4gRFdDRVFPU19IQVNIX1RBQkxFX1NJWkUpIHx8DQo+IC0JCQkJ KG5kZXYtPmZsYWdzICYgSUZGX0FMTE1VTFRJKSkpIHsNCj4gLQkJcmVndmFsID0gRFdDRVFPU19N QUNfUEtUX0ZJTFRfUE07DQo+IC0JCWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX0hBU1RB QkxFX0xPLCAweGZmZmZmZmZmKTsNCj4gLQkJZHdjZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1Nf SEFTVEFCTEVfSEksIDB4ZmZmZmZmZmYpOw0KPiAtCX0gZWxzZSBpZiAoIW5ldGRldl9tY19lbXB0 eShuZGV2KSkgew0KPiAtCQlyZWd2YWwgPSBEV0NFUU9TX01BQ19QS1RfRklMVF9ITUM7DQo+IC0J CW1lbXNldChtY19maWx0ZXIsIDAsIHNpemVvZihtY19maWx0ZXIpKTsNCj4gLQkJbmV0ZGV2X2Zv cl9lYWNoX21jX2FkZHIoaGEsIG5kZXYpIHsNCj4gLQkJCS8qIFRoZSB1cHBlciA2IGJpdHMgb2Yg dGhlIGNhbGN1bGF0ZWQgQ1JDIGFyZSB1c2VkIHRvDQo+IC0JCQkgKiBpbmRleCB0aGUgY29udGVu cyBvZiB0aGUgaGFzaCB0YWJsZQ0KPiAtCQkJICovDQo+IC0JCQlpbnQgYml0X25yID0gYml0cmV2 MzIofmNyYzMyX2xlKH4wLCBoYS0+YWRkciwgNikpID4+IDI2Ow0KPiAtCQkJLyogVGhlIG1vc3Qg c2lnbmlmaWNhbnQgYml0IGRldGVybWluZXMgdGhlIHJlZ2lzdGVyDQo+IC0JCQkgKiB0byB1c2Ug KEgvTCkgd2hpbGUgdGhlIG90aGVyIDUgYml0cyBkZXRlcm1pbmUNCj4gLQkJCSAqIHRoZSBiaXQg d2l0aGluIHRoZSByZWdpc3Rlci4NCj4gLQkJCSAqLw0KPiAtCQkJbWNfZmlsdGVyW2JpdF9uciA+ PiA1XSB8PSAxIDw8IChiaXRfbnIgJiAzMSk7DQo+IC0JCX0NCj4gLQkJZHdjZXFvc193cml0ZShs cCwgUkVHX0RXQ0VRT1NfSEFTVEFCTEVfTE8sIG1jX2ZpbHRlclswXSk7DQo+IC0JCWR3Y2Vxb3Nf d3JpdGUobHAsIFJFR19EV0NFUU9TX0hBU1RBQkxFX0hJLCBtY19maWx0ZXJbMV0pOw0KPiAtCX0N Cj4gLQlpZiAobmV0ZGV2X3VjX2NvdW50KG5kZXYpID4gbWF4X21hY19hZGRyKSB7DQo+IC0JCXJl Z3ZhbCB8PSBEV0NFUU9TX01BQ19QS1RfRklMVF9QUjsNCj4gLQl9IGVsc2Ugew0KPiAtCQluZXRk ZXZfZm9yX2VhY2hfdWNfYWRkcihoYSwgbmRldikgew0KPiAtCQkJZHdjZXFvc19zZXRfdW1hY19h ZGRyKGxwLCBoYS0+YWRkciwgcmVnKTsNCj4gLQkJCXJlZysrOw0KPiAtCQl9DQo+IC0JCWZvciAo OyByZWcgPCBEV0NFUU9TX01BWF9QRVJGRUNUX0FERFJFU1NFUyhscC0+ZmVhdHVyZTEpOyByZWcr KykNCj4gLQkJCWR3Y2Vxb3NfZGlzYWJsZV91bWFjX2FkZHIobHAsIHJlZyk7DQo+IC0JfQ0KPiAt CWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01BQ19QS1RfRklMVCwgcmVndmFsKTsNCj4g LX0NCj4gLQ0KPiAtI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSDQo+IC1zdGF0aWMg dm9pZCBkd2NlcW9zX3BvbGxfY29udHJvbGxlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikNCj4g LXsNCj4gLQlkaXNhYmxlX2lycShuZGV2LT5pcnEpOw0KPiAtCWR3Y2Vxb3NfaW50ZXJydXB0KG5k ZXYtPmlycSwgbmRldik7DQo+IC0JZW5hYmxlX2lycShuZGV2LT5pcnEpOw0KPiAtfQ0KPiAtI2Vu ZGlmDQo+IC0NCj4gLXN0YXRpYyB2b2lkIGR3Y2Vxb3NfcmVhZF9tbWNfY291bnRlcnMoc3RydWN0 IG5ldF9sb2NhbCAqbHAsIHUzMiByeF9tYXNrLA0KPiAtCQkJCSAgICAgIHUzMiB0eF9tYXNrKQ0K PiAtew0KPiAtCWlmICh0eF9tYXNrICYgQklUKDI3KSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy50 eGxwaXRyYW5zY250ciArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1RYTFBJVFJB TlNDTlRSKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgyNikpDQo+IC0JCWxwLT5tbWNfY291bnRl cnMudHhwaXVzY250ciArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1RYTFBJVVND TlRSKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgyNSkpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMu dHhvdmVyc2l6ZV9nICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfVFhPVkVSU0la RV9HKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgyNCkpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMu dHh2bGFucGFja2V0c19nICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfVFhWTEFO UEFDS0VUU19HKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgyMykpDQo+IC0JCWxwLT5tbWNfY291 bnRlcnMudHhwYXVzZXBhY2tldHMgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01NQ19U WFBBVVNFUEFDS0VUUyk7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQoMjIpKQ0KPiAtCQlscC0+bW1j X2NvdW50ZXJzLnR4ZXhjZXNzZGVmICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNf VFhFWENFU1NERUYpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDIxKSkNCj4gLQkJbHAtPm1tY19j b3VudGVycy50eHBhY2tldGNvdW50X2cgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01N Q19UWFBBQ0tFVENPVU5UX0cpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDIwKSkNCj4gLQkJbHAt Pm1tY19jb3VudGVycy50eG9jdGV0Y291bnRfZyArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBE V0NfTU1DX1RYT0NURVRDT1VOVF9HKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgxOSkpDQo+IC0J CWxwLT5tbWNfY291bnRlcnMudHhjYXJyaWVyZXJyb3IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChs cCwgRFdDX01NQ19UWENBUlJJRVJFUlJPUik7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQoMTgpKQ0K PiAtCQlscC0+bW1jX2NvdW50ZXJzLnR4ZXhjZXNzY29sICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQo bHAsIERXQ19NTUNfVFhFWENFU1NDT0wpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDE3KSkNCj4g LQkJbHAtPm1tY19jb3VudGVycy50eGxhdGVjb2wgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwg RFdDX01NQ19UWExBVEVDT0wpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDE2KSkNCj4gLQkJbHAt Pm1tY19jb3VudGVycy50eGRlZmVycmVkICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19N TUNfVFhERUZFUlJFRCk7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQoMTUpKQ0KPiAtCQlscC0+bW1j X2NvdW50ZXJzLnR4bXVsdGljb2xfZyArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1D X1RYTVVMVElDT0xfRyk7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQoMTQpKQ0KPiAtCQlscC0+bW1j X2NvdW50ZXJzLnR4c2luZ2xlY29sX2cgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01N Q19UWFNJTkdMRUNPTF9HKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgxMykpDQo+IC0JCWxwLT5t bWNfY291bnRlcnMudHh1bmRlcmZsb3dlcnJvciArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBE V0NfTU1DX1RYVU5ERVJGTE9XRVJST1IpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDEyKSkNCj4g LQkJbHAtPm1tY19jb3VudGVycy50eGJyb2FkY2FzdHBhY2tldHNfZ2IgKz0NCj4gLQkJCWR3Y2Vx b3NfcmVhZChscCwgRFdDX01NQ19UWEJST0FEQ0FTVFBBQ0tFVFNfR0IpOw0KPiAtCWlmICh0eF9t YXNrICYgQklUKDExKSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy50eG11bHRpY2FzdHBhY2tldHNf Z2IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01NQ19UWE1VTFRJQ0FTVFBBQ0tFVFNf R0IpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDEwKSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy50 eHVuaWNhc3RwYWNrZXRzX2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfVFhV TklDQVNUUEFDS0VUU19HQik7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQoOSkpDQo+IC0JCWxwLT5t bWNfY291bnRlcnMudHgxMDI0dG9tYXhvY3RldHNfZ2IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChs cCwgRFdDX01NQ19UWDEwMjRUT01BWE9DVEVUU19HQik7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQo OCkpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMudHg1MTJ0bzEwMjNvY3RldHNfZ2IgKz0NCj4gLQkJ CWR3Y2Vxb3NfcmVhZChscCwgRFdDX01NQ19UWDUxMlRPMTAyM09DVEVUU19HQik7DQo+IC0JaWYg KHR4X21hc2sgJiBCSVQoNykpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMudHgyNTZ0bzUxMW9jdGV0 c19nYiArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1RYMjU2VE81MTFPQ1RFVFNf R0IpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDYpKQ0KPiAtCQlscC0+bW1jX2NvdW50ZXJzLnR4 MTI4dG8yNTVvY3RldHNfZ2IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01NQ19UWDEy OFRPMjU1T0NURVRTX0dCKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCg1KSkNCj4gLQkJbHAtPm1t Y19jb3VudGVycy50eDY1dG8xMjdvY3RldHNfZ2IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwg RFdDX01NQ19UWDY1VE8xMjdPQ1RFVFNfR0IpOw0KPiAtCWlmICh0eF9tYXNrICYgQklUKDQpKQ0K PiAtCQlscC0+bW1jX2NvdW50ZXJzLnR4NjRvY3RldHNfZ2IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVh ZChscCwgRFdDX01NQ19UWDY0T0NURVRTX0dCKTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgzKSkN Cj4gLQkJbHAtPm1tY19jb3VudGVycy50eG11bHRpY2FzdHBhY2tldHNfZyArPQ0KPiAtCQkJZHdj ZXFvc19yZWFkKGxwLCBEV0NfTU1DX1RYTVVMVElDQVNUUEFDS0VUU19HKTsNCj4gLQlpZiAodHhf bWFzayAmIEJJVCgyKSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy50eGJyb2FkY2FzdHBhY2tldHNf ZyArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1RYQlJPQURDQVNUUEFDS0VUU19H KTsNCj4gLQlpZiAodHhfbWFzayAmIEJJVCgxKSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy50eHBh Y2tldGNvdW50X2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfVFhQQUNLRVRD T1VOVF9HQik7DQo+IC0JaWYgKHR4X21hc2sgJiBCSVQoMCkpDQo+IC0JCWxwLT5tbWNfY291bnRl cnMudHhvY3RldGNvdW50X2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfVFhP Q1RFVENPVU5UX0dCKTsNCj4gLQ0KPiAtCWlmIChyeF9tYXNrICYgQklUKDI3KSkNCj4gLQkJbHAt Pm1tY19jb3VudGVycy5yeGxwaXRyYW5zY250ciArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBE V0NfTU1DX1JYTFBJVFJBTlNDTlRSKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJVCgyNikpDQo+IC0J CWxwLT5tbWNfY291bnRlcnMucnhscGl1c2NudHIgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwg RFdDX01NQ19SWExQSVVTQ05UUik7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoMjUpKQ0KPiAtCQls cC0+bW1jX2NvdW50ZXJzLnJ4Y3RybHBhY2tldHNfZyArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxw LCBEV0NfTU1DX1JYQ1RSTFBBQ0tFVFNfRyk7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoMjQpKQ0K PiAtCQlscC0+bW1jX2NvdW50ZXJzLnJ4cmN2ZXJyb3IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChs cCwgRFdDX01NQ19SWFJDVkVSUk9SKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJVCgyMykpDQo+IC0J CWxwLT5tbWNfY291bnRlcnMucnh3YXRjaGRvZyArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBE V0NfTU1DX1JYV0FUQ0hET0cpOw0KPiAtCWlmIChyeF9tYXNrICYgQklUKDIyKSkNCj4gLQkJbHAt Pm1tY19jb3VudGVycy5yeHZsYW5wYWNrZXRzX2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAs IERXQ19NTUNfUlhWTEFOUEFDS0VUU19HQik7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoMjEpKQ0K PiAtCQlscC0+bW1jX2NvdW50ZXJzLnJ4Zmlmb292ZXJmbG93ICs9DQo+IC0JCQlkd2NlcW9zX3Jl YWQobHAsIERXQ19NTUNfUlhGSUZPT1ZFUkZMT1cpOw0KPiAtCWlmIChyeF9tYXNrICYgQklUKDIw KSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy5yeHBhdXNlcGFja2V0cyArPQ0KPiAtCQkJZHdjZXFv c19yZWFkKGxwLCBEV0NfTU1DX1JYUEFVU0VQQUNLRVRTKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJ VCgxOSkpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMucnhvdXRvZnJhbmdldHlwZSArPQ0KPiAtCQkJ ZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1JYT1VUT0ZSQU5HRVRZUEUpOw0KPiAtCWlmIChyeF9t YXNrICYgQklUKDE4KSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy5yeGxlbmd0aGVycm9yICs9DQo+ IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfUlhMRU5HVEhFUlJPUik7DQo+IC0JaWYgKHJ4 X21hc2sgJiBCSVQoMTcpKQ0KPiAtCQlscC0+bW1jX2NvdW50ZXJzLnJ4dW5pY2FzdHBhY2tldHNf ZyArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1JYVU5JQ0FTVFBBQ0tFVFNfRyk7 DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoMTYpKQ0KPiAtCQlscC0+bW1jX2NvdW50ZXJzLnJ4MTAy NHRvbWF4b2N0ZXRzX2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfUlgxMDI0 VE9NQVhPQ1RFVFNfR0IpOw0KPiAtCWlmIChyeF9tYXNrICYgQklUKDE1KSkNCj4gLQkJbHAtPm1t Y19jb3VudGVycy5yeDUxMnRvMTAyM29jdGV0c19nYiArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxw LCBEV0NfTU1DX1JYNTEyVE8xMDIzT0NURVRTX0dCKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJVCgx NCkpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMucngyNTZ0bzUxMW9jdGV0c19nYiArPQ0KPiAtCQkJ ZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1JYMjU2VE81MTFPQ1RFVFNfR0IpOw0KPiAtCWlmIChy eF9tYXNrICYgQklUKDEzKSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy5yeDEyOHRvMjU1b2N0ZXRz X2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfUlgxMjhUTzI1NU9DVEVUU19H Qik7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoMTIpKQ0KPiAtCQlscC0+bW1jX2NvdW50ZXJzLnJ4 NjV0bzEyN29jdGV0c19nYiArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0NfTU1DX1JYNjVU TzEyN09DVEVUU19HQik7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoMTEpKQ0KPiAtCQlscC0+bW1j X2NvdW50ZXJzLnJ4NjRvY3RldHNfZ2IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01N Q19SWDY0T0NURVRTX0dCKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJVCgxMCkpDQo+IC0JCWxwLT5t bWNfY291bnRlcnMucnhvdmVyc2l6ZV9nICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19N TUNfUlhPVkVSU0laRV9HKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJVCg5KSkNCj4gLQkJbHAtPm1t Y19jb3VudGVycy5yeHVuZGVyc2l6ZV9nICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19N TUNfUlhVTkRFUlNJWkVfRyk7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoOCkpDQo+IC0JCWxwLT5t bWNfY291bnRlcnMucnhqYWJiZXJlcnJvciArPQ0KPiAtCQkJZHdjZXFvc19yZWFkKGxwLCBEV0Nf TU1DX1JYSkFCQkVSRVJST1IpOw0KPiAtCWlmIChyeF9tYXNrICYgQklUKDcpKQ0KPiAtCQlscC0+ bW1jX2NvdW50ZXJzLnJ4cnVudGVycm9yICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19N TUNfUlhSVU5URVJST1IpOw0KPiAtCWlmIChyeF9tYXNrICYgQklUKDYpKQ0KPiAtCQlscC0+bW1j X2NvdW50ZXJzLnJ4YWxpZ25tZW50ZXJyb3IgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdD X01NQ19SWEFMSUdOTUVOVEVSUk9SKTsNCj4gLQlpZiAocnhfbWFzayAmIEJJVCg1KSkNCj4gLQkJ bHAtPm1tY19jb3VudGVycy5yeGNyY2Vycm9yICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERX Q19NTUNfUlhDUkNFUlJPUik7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQoNCkpDQo+IC0JCWxwLT5t bWNfY291bnRlcnMucnhtdWx0aWNhc3RwYWNrZXRzX2cgKz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChs cCwgRFdDX01NQ19SWE1VTFRJQ0FTVFBBQ0tFVFNfRyk7DQo+IC0JaWYgKHJ4X21hc2sgJiBCSVQo MykpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMucnhicm9hZGNhc3RwYWNrZXRzX2cgKz0NCj4gLQkJ CWR3Y2Vxb3NfcmVhZChscCwgRFdDX01NQ19SWEJST0FEQ0FTVFBBQ0tFVFNfRyk7DQo+IC0JaWYg KHJ4X21hc2sgJiBCSVQoMikpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMucnhvY3RldGNvdW50X2cg Kz0NCj4gLQkJCWR3Y2Vxb3NfcmVhZChscCwgRFdDX01NQ19SWE9DVEVUQ09VTlRfRyk7DQo+IC0J aWYgKHJ4X21hc2sgJiBCSVQoMSkpDQo+IC0JCWxwLT5tbWNfY291bnRlcnMucnhvY3RldGNvdW50 X2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfUlhPQ1RFVENPVU5UX0dCKTsN Cj4gLQlpZiAocnhfbWFzayAmIEJJVCgwKSkNCj4gLQkJbHAtPm1tY19jb3VudGVycy5yeHBhY2tl dGNvdW50X2diICs9DQo+IC0JCQlkd2NlcW9zX3JlYWQobHAsIERXQ19NTUNfUlhQQUNLRVRDT1VO VF9HQik7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkDQo+IC1kd2NlcW9zX2dldF9zdGF0czY0 KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgcnRubF9saW5rX3N0YXRzNjQgKnMpDQo+ IC17DQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICpscCA9 IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtCXN0cnVjdCBkd2NlcW9zX21tY19jb3VudGVycyAqaHdz dGF0cyA9ICZscC0+bW1jX2NvdW50ZXJzOw0KPiAtDQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmxw LT5zdGF0c19sb2NrLCBmbGFncyk7DQo+IC0JZHdjZXFvc19yZWFkX21tY19jb3VudGVycyhscCwg bHAtPm1tY19yeF9jb3VudGVyc19tYXNrLA0KPiAtCQkJCSAgbHAtPm1tY190eF9jb3VudGVyc19t YXNrKTsNCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZscC0+c3RhdHNfbG9jaywgZmxhZ3Mp Ow0KPiAtDQo+IC0Jcy0+cnhfcGFja2V0cyA9IGh3c3RhdHMtPnJ4cGFja2V0Y291bnRfZ2I7DQo+ IC0Jcy0+cnhfYnl0ZXMgPSBod3N0YXRzLT5yeG9jdGV0Y291bnRfZ2I7DQo+IC0Jcy0+cnhfZXJy b3JzID0gaHdzdGF0cy0+cnhwYWNrZXRjb3VudF9nYiAtDQo+IC0JCWh3c3RhdHMtPnJ4YnJvYWRj YXN0cGFja2V0c19nIC0NCj4gLQkJaHdzdGF0cy0+cnhtdWx0aWNhc3RwYWNrZXRzX2cgLQ0KPiAt CQlod3N0YXRzLT5yeHVuaWNhc3RwYWNrZXRzX2c7DQo+IC0Jcy0+bXVsdGljYXN0ID0gaHdzdGF0 cy0+cnhtdWx0aWNhc3RwYWNrZXRzX2c7DQo+IC0Jcy0+cnhfbGVuZ3RoX2Vycm9ycyA9IGh3c3Rh dHMtPnJ4bGVuZ3RoZXJyb3I7DQo+IC0Jcy0+cnhfY3JjX2Vycm9ycyA9IGh3c3RhdHMtPnJ4Y3Jj ZXJyb3I7DQo+IC0Jcy0+cnhfZmlmb19lcnJvcnMgPSBod3N0YXRzLT5yeGZpZm9vdmVyZmxvdzsN Cj4gLQ0KPiAtCXMtPnR4X3BhY2tldHMgPSBod3N0YXRzLT50eHBhY2tldGNvdW50X2diOw0KPiAt CXMtPnR4X2J5dGVzID0gaHdzdGF0cy0+dHhvY3RldGNvdW50X2diOw0KPiAtDQo+IC0JaWYgKGxw LT5tbWNfdHhfY291bnRlcnNfbWFzayAmIEJJVCgyMSkpDQo+IC0JCXMtPnR4X2Vycm9ycyA9IGh3 c3RhdHMtPnR4cGFja2V0Y291bnRfZ2IgLQ0KPiAtCQkJaHdzdGF0cy0+dHhwYWNrZXRjb3VudF9n Ow0KPiAtCWVsc2UNCj4gLQkJcy0+dHhfZXJyb3JzID0gaHdzdGF0cy0+dHh1bmRlcmZsb3dlcnJv ciArDQo+IC0JCQlod3N0YXRzLT50eGNhcnJpZXJlcnJvcjsNCj4gLX0NCj4gLQ0KPiAtc3RhdGlj IHZvaWQNCj4gLWR3Y2Vxb3NfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0 cnVjdCBldGh0b29sX2RydmluZm8gKmVkKQ0KPiAtew0KPiAtCWNvbnN0IHN0cnVjdCBuZXRfbG9j YWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0NCj4gLQlzdHJjcHkoZWQtPmRyaXZlciwg bHAtPnBkZXYtPmRldi5kcml2ZXItPm5hbWUpOw0KPiAtCXN0cmNweShlZC0+dmVyc2lvbiwgRFJJ VkVSX1ZFUlNJT04pOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkd2NlcW9zX2dldF9wYXVz ZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LA0KPiAtCQkJCSAgIHN0cnVjdCBldGh0b29s X3BhdXNlcGFyYW0gKnBwKQ0KPiAtew0KPiAtCWNvbnN0IHN0cnVjdCBuZXRfbG9jYWwgKmxwID0g bmV0ZGV2X3ByaXYobmRldik7DQo+IC0NCj4gLQlwcC0+YXV0b25lZyA9IGxwLT5mbG93Y29udHJv bC5hdXRvbmVnOw0KPiAtCXBwLT50eF9wYXVzZSA9IGxwLT5mbG93Y29udHJvbC50eDsNCj4gLQlw cC0+cnhfcGF1c2UgPSBscC0+Zmxvd2NvbnRyb2wucng7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBp bnQgZHdjZXFvc19zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwNCj4gLQkJ CQkgIHN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW0gKnBwKQ0KPiAtew0KPiAtCXN0cnVjdCBuZXRf bG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0JaW50IHJldCA9IDA7DQo+IC0NCj4g LQlscC0+Zmxvd2NvbnRyb2wuYXV0b25lZyA9IHBwLT5hdXRvbmVnOw0KPiAtCWlmIChwcC0+YXV0 b25lZykgew0KPiAtCQluZGV2LT5waHlkZXYtPmFkdmVydGlzaW5nIHw9IEFEVkVSVElTRURfUGF1 c2U7DQo+IC0JCW5kZXYtPnBoeWRldi0+YWR2ZXJ0aXNpbmcgfD0gQURWRVJUSVNFRF9Bc3ltX1Bh dXNlOw0KPiAtCX0gZWxzZSB7DQo+IC0JCW5kZXYtPnBoeWRldi0+YWR2ZXJ0aXNpbmcgJj0gfkFE VkVSVElTRURfUGF1c2U7DQo+IC0JCW5kZXYtPnBoeWRldi0+YWR2ZXJ0aXNpbmcgJj0gfkFEVkVS VElTRURfQXN5bV9QYXVzZTsNCj4gLQkJbHAtPmZsb3djb250cm9sLnJ4ID0gcHAtPnJ4X3BhdXNl Ow0KPiAtCQlscC0+Zmxvd2NvbnRyb2wudHggPSBwcC0+dHhfcGF1c2U7DQo+IC0JfQ0KPiAtDQo+ IC0JaWYgKG5ldGlmX3J1bm5pbmcobmRldikpDQo+IC0JCXJldCA9IHBoeV9zdGFydF9hbmVnKG5k ZXYtPnBoeWRldik7DQo+IC0NCj4gLQlyZXR1cm4gcmV0Ow0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMg dm9pZCBkd2NlcW9zX2dldF9zdHJpbmdzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB1MzIgc3Ry aW5nc2V0LA0KPiAtCQkJCXU4ICpkYXRhKQ0KPiAtew0KPiAtCXNpemVfdCBpOw0KPiAtDQo+IC0J aWYgKHN0cmluZ3NldCAhPSBFVEhfU1NfU1RBVFMpDQo+IC0JCXJldHVybjsNCj4gLQ0KPiAtCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGR3Y2Vxb3NfZXRodG9vbF9zdGF0cyk7ICsraSkgew0K PiAtCQltZW1jcHkoZGF0YSwgZHdjZXFvc19ldGh0b29sX3N0YXRzW2ldLnN0YXRfbmFtZSwNCj4g LQkJICAgICAgIEVUSF9HU1RSSU5HX0xFTik7DQo+IC0JCWRhdGEgKz0gRVRIX0dTVFJJTkdfTEVO Ow0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19nZXRfZXRodG9vbF9z dGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwNCj4gLQkJCQkgICAgICBzdHJ1Y3QgZXRodG9v bF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSkNCj4gLXsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICps cCA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+IC0Jc2l6 ZV90IGk7DQo+IC0JdTggKm1tY3N0YXQgPSAodTggKikmbHAtPm1tY19jb3VudGVyczsNCj4gLQ0K PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZscC0+c3RhdHNfbG9jaywgZmxhZ3MpOw0KPiAtCWR3Y2Vx b3NfcmVhZF9tbWNfY291bnRlcnMobHAsIGxwLT5tbWNfcnhfY291bnRlcnNfbWFzaywNCj4gLQkJ CQkgIGxwLT5tbWNfdHhfY291bnRlcnNfbWFzayk7DQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmbHAtPnN0YXRzX2xvY2ssIGZsYWdzKTsNCj4gLQ0KPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGR3Y2Vxb3NfZXRodG9vbF9zdGF0cyk7ICsraSkgew0KPiAtCQltZW1jcHkoZGF0YSwN Cj4gLQkJICAgICAgIG1tY3N0YXQgKyBkd2NlcW9zX2V0aHRvb2xfc3RhdHNbaV0ub2Zmc2V0LA0K PiAtCQkgICAgICAgc2l6ZW9mKHU2NCkpOw0KPiAtCQlkYXRhKys7DQo+IC0JfQ0KPiAtfQ0KPiAt DQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3NfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZpY2Ug Km5kZXYsIGludCBzc2V0KQ0KPiAtew0KPiAtCWlmIChzc2V0ID09IEVUSF9TU19TVEFUUykNCj4g LQkJcmV0dXJuIEFSUkFZX1NJWkUoZHdjZXFvc19ldGh0b29sX3N0YXRzKTsNCj4gLQ0KPiAtCXJl dHVybiAtRU9QTk9UU1VQUDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19nZXRf cmVncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9yZWdzICpyZWdzLA0K PiAtCQkJICAgICB2b2lkICpzcGFjZSkNCj4gLXsNCj4gLQljb25zdCBzdHJ1Y3QgbmV0X2xvY2Fs ICpscCA9IG5ldGRldl9wcml2KGRldik7DQo+IC0JdTMyICpyZWdfc3BhY2UgPSAodTMyICopc3Bh Y2U7DQo+IC0JaW50IHJlZ19vZmZzZXQ7DQo+IC0JaW50IHJlZ19peCA9IDA7DQo+IC0NCj4gLQkv KiBNQUMgcmVnaXN0ZXJzICovDQo+IC0JZm9yIChyZWdfb2Zmc2V0ID0gU1RBUlRfTUFDX1JFR19P RkZTRVQ7DQo+IC0JCXJlZ19vZmZzZXQgPD0gTUFYX0RNQV9SRUdfT0ZGU0VUOyByZWdfb2Zmc2V0 ICs9IDQpIHsNCj4gLQkJcmVnX3NwYWNlW3JlZ19peF0gPSBkd2NlcW9zX3JlYWQobHAsIHJlZ19v ZmZzZXQpOw0KPiAtCQlyZWdfaXgrKzsNCj4gLQl9DQo+IC0JLyogTVRMIHJlZ2lzdGVycyAqLw0K PiAtCWZvciAocmVnX29mZnNldCA9IFNUQVJUX01UTF9SRUdfT0ZGU0VUOw0KPiAtCQlyZWdfb2Zm c2V0IDw9IE1BWF9NVExfUkVHX09GRlNFVDsgcmVnX29mZnNldCArPSA0KSB7DQo+IC0JCXJlZ19z cGFjZVtyZWdfaXhdID0gZHdjZXFvc19yZWFkKGxwLCByZWdfb2Zmc2V0KTsNCj4gLQkJcmVnX2l4 Kys7DQo+IC0JfQ0KPiAtDQo+IC0JLyogRE1BIHJlZ2lzdGVycyAqLw0KPiAtCWZvciAocmVnX29m ZnNldCA9IFNUQVJUX0RNQV9SRUdfT0ZGU0VUOw0KPiAtCQlyZWdfb2Zmc2V0IDw9IE1BWF9ETUFf UkVHX09GRlNFVDsgcmVnX29mZnNldCArPSA0KSB7DQo+IC0JCXJlZ19zcGFjZVtyZWdfaXhdID0g ZHdjZXFvc19yZWFkKGxwLCByZWdfb2Zmc2V0KTsNCj4gLQkJcmVnX2l4Kys7DQo+IC0JfQ0KPiAt DQo+IC0JQlVHX09OKDQgKiByZWdfaXggPiBSRUdfU1BBQ0VfU0laRSk7DQo+IC19DQo+IC0NCj4g LXN0YXRpYyBpbnQgZHdjZXFvc19nZXRfcmVnc19sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikN Cj4gLXsNCj4gLQlyZXR1cm4gUkVHX1NQQUNFX1NJWkU7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBp bmxpbmUgY29uc3QgY2hhciAqZHdjZXFvc19nZXRfcnhfbHBpX3N0YXRlKHUzMiBscGlfY3RybCkN Cj4gLXsNCj4gLQlyZXR1cm4gKGxwaV9jdHJsICYgRFdDRVFPU19NQUNfTFBJX0NUUkxfU1RBVFVT X1JMUElTVCkgPyAib24iIDogIm9mZiI7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbmxpbmUgY29u c3QgY2hhciAqZHdjZXFvc19nZXRfdHhfbHBpX3N0YXRlKHUzMiBscGlfY3RybCkNCj4gLXsNCj4g LQlyZXR1cm4gKGxwaV9jdHJsICYgRFdDRVFPU19NQUNfTFBJX0NUUkxfU1RBVFVTX1RMUElTVCkg PyAib24iIDogIm9mZiI7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyBpbnQgZHdjZXFvc19nZXRfZWVl KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgZXRodG9vbF9lZWUgKmVkYXRhKQ0KPiAt ew0KPiAtCXN0cnVjdCBuZXRfbG9jYWwgKmxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0JdTMy IGxwaV9zdGF0dXM7DQo+IC0JdTMyIGxwaV9lbmFibGVkOw0KPiAtDQo+IC0JaWYgKCEobHAtPmZl YXR1cmUwICYgRFdDRVFPU19NQUNfSFdfRkVBVFVSRTBfRUVFU0VMKSkNCj4gLQkJcmV0dXJuIC1F T1BOT1RTVVBQOw0KPiAtDQo+IC0JZWRhdGEtPmVlZV9hY3RpdmUgID0gbHAtPmVlZV9hY3RpdmU7 DQo+IC0JZWRhdGEtPmVlZV9lbmFibGVkID0gbHAtPmVlZV9lbmFibGVkOw0KPiAtCWVkYXRhLT50 eF9scGlfdGltZXIgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01BQ19MUElfRU5UUllf VElNRVIpOw0KPiAtCWxwaV9zdGF0dXMgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NFUU9TX01B Q19MUElfQ1RSTF9TVEFUVVMpOw0KPiAtCWxwaV9lbmFibGVkID0gISEobHBpX3N0YXR1cyAmIERX Q0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVU19MSVBUWEEpOw0KPiAtCWVkYXRhLT50eF9scGlfZW5h YmxlZCA9IGxwaV9lbmFibGVkOw0KPiAtDQo+IC0JaWYgKG5ldGlmX21zZ19odyhscCkpIHsNCj4g LQkJdTMyIHJlZ3ZhbDsNCj4gLQ0KPiAtCQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19E V0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVMpOw0KPiAtDQo+IC0JCW5ldGRldl9pbmZvKGxwLT5u ZGV2LCAiTUFDIExQSSBTdGF0ZTogUlg6JXMgVFg6JXNcbiIsDQo+IC0JCQkgICAgZHdjZXFvc19n ZXRfcnhfbHBpX3N0YXRlKHJlZ3ZhbCksDQo+IC0JCQkgICAgZHdjZXFvc19nZXRfdHhfbHBpX3N0 YXRlKHJlZ3ZhbCkpOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiBwaHlfZXRodG9vbF9nZXRfZWVl KG5kZXYtPnBoeWRldiwgZWRhdGEpOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3Nf c2V0X2VlZShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGV0aHRvb2xfZWVlICplZGF0 YSkNCj4gLXsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICpscCA9IG5ldGRldl9wcml2KG5kZXYpOw0K PiAtCXUzMiByZWd2YWw7DQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gLQ0KPiAtCWlmICgh KGxwLT5mZWF0dXJlMCAmIERXQ0VRT1NfTUFDX0hXX0ZFQVRVUkUwX0VFRVNFTCkpDQo+IC0JCXJl dHVybiAtRU9QTk9UU1VQUDsNCj4gLQ0KPiAtCWlmIChlZGF0YS0+ZWVlX2VuYWJsZWQgJiYgIWxw LT5lZWVfYWN0aXZlKQ0KPiAtCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQo+IC0NCj4gLQlpZiAoZWRh dGEtPnR4X2xwaV9lbmFibGVkKSB7DQo+IC0JCWlmIChlZGF0YS0+dHhfbHBpX3RpbWVyIDwgRFdD RVFPU19MUElfVElNRVJfTUlOIHx8DQo+IC0JCSAgICBlZGF0YS0+dHhfbHBpX3RpbWVyID4gRFdD RVFPU19MUElfVElNRVJfTUFYKQ0KPiAtCQkJcmV0dXJuIC1FSU5WQUw7DQo+IC0JfQ0KPiAtDQo+ IC0JbHAtPmVlZV9lbmFibGVkID0gZWRhdGEtPmVlZV9lbmFibGVkOw0KPiAtDQo+IC0JaWYgKGVk YXRhLT5lZWVfZW5hYmxlZCAmJiBlZGF0YS0+dHhfbHBpX2VuYWJsZWQpIHsNCj4gLQkJZHdjZXFv c193cml0ZShscCwgUkVHX0RXQ0VRT1NfTUFDX0xQSV9FTlRSWV9USU1FUiwNCj4gLQkJCSAgICAg IGVkYXRhLT50eF9scGlfdGltZXIpOw0KPiAtDQo+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZscC0+ aHdfbG9jaywgZmxhZ3MpOw0KPiAtCQlyZWd2YWwgPSBkd2NlcW9zX3JlYWQobHAsIFJFR19EV0NF UU9TX01BQ19MUElfQ1RSTF9TVEFUVVMpOw0KPiAtCQlyZWd2YWwgfD0gRFdDRVFPU19MUElfQ1RS TF9FTkFCTEVfRUVFOw0KPiAtCQlpZiAobHAtPmVuX3R4X2xwaV9jbG9ja2dhdGluZykNCj4gLQkJ CXJlZ3ZhbCB8PSBEV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVNfTFBJVENTRTsNCj4gLQkJZHdj ZXFvc193cml0ZShscCwgUkVHX0RXQ0VRT1NfTUFDX0xQSV9DVFJMX1NUQVRVUywgcmVndmFsKTsN Cj4gLQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4gLQl9 IGVsc2Ugew0KPiAtCQlzcGluX2xvY2tfaXJxc2F2ZSgmbHAtPmh3X2xvY2ssIGZsYWdzKTsNCj4g LQkJcmVndmFsID0gZHdjZXFvc19yZWFkKGxwLCBSRUdfRFdDRVFPU19NQUNfTFBJX0NUUkxfU1RB VFVTKTsNCj4gLQkJcmVndmFsICY9IH5EV0NFUU9TX0xQSV9DVFJMX0VOQUJMRV9FRUU7DQo+IC0J CWR3Y2Vxb3Nfd3JpdGUobHAsIFJFR19EV0NFUU9TX01BQ19MUElfQ1RSTF9TVEFUVVMsIHJlZ3Zh bCk7DQo+IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxwLT5od19sb2NrLCBmbGFncyk7DQo+ IC0JfQ0KPiAtDQo+IC0JcmV0dXJuIHBoeV9ldGh0b29sX3NldF9lZWUobmRldi0+cGh5ZGV2LCBl ZGF0YSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB1MzIgZHdjZXFvc19nZXRfbXNnbGV2ZWwoc3Ry dWN0IG5ldF9kZXZpY2UgKm5kZXYpDQo+IC17DQo+IC0JY29uc3Qgc3RydWN0IG5ldF9sb2NhbCAq bHAgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gLQ0KPiAtCXJldHVybiBscC0+bXNnX2VuYWJsZTsN Cj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHdjZXFvc19zZXRfbXNnbGV2ZWwoc3RydWN0IG5l dF9kZXZpY2UgKm5kZXYsIHUzMiBtc2dsZXZlbCkNCj4gLXsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2Fs ICpscCA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiAtDQo+IC0JbHAtPm1zZ19lbmFibGUgPSBtc2ds ZXZlbDsNCj4gLX0NCj4gLQ0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBkd2Nl cW9zX2V0aHRvb2xfb3BzID0gew0KPiAtCS5nZXRfZHJ2aW5mbyAgICA9IGR3Y2Vxb3NfZ2V0X2Ry dmluZm8sDQo+IC0JLmdldF9saW5rICAgICAgID0gZXRodG9vbF9vcF9nZXRfbGluaywNCj4gLQku Z2V0X3BhdXNlcGFyYW0gPSBkd2NlcW9zX2dldF9wYXVzZXBhcmFtLA0KPiAtCS5zZXRfcGF1c2Vw YXJhbSA9IGR3Y2Vxb3Nfc2V0X3BhdXNlcGFyYW0sDQo+IC0JLmdldF9zdHJpbmdzICAgID0gZHdj ZXFvc19nZXRfc3RyaW5ncywNCj4gLQkuZ2V0X2V0aHRvb2xfc3RhdHMgPSBkd2NlcW9zX2dldF9l dGh0b29sX3N0YXRzLA0KPiAtCS5nZXRfc3NldF9jb3VudCA9IGR3Y2Vxb3NfZ2V0X3NzZXRfY291 bnQsDQo+IC0JLmdldF9yZWdzICAgICAgID0gZHdjZXFvc19nZXRfcmVncywNCj4gLQkuZ2V0X3Jl Z3NfbGVuICAgPSBkd2NlcW9zX2dldF9yZWdzX2xlbiwNCj4gLQkuZ2V0X2VlZSAgICAgICAgPSBk d2NlcW9zX2dldF9lZWUsDQo+IC0JLnNldF9lZWUgICAgICAgID0gZHdjZXFvc19zZXRfZWVlLA0K PiAtCS5nZXRfbXNnbGV2ZWwgICA9IGR3Y2Vxb3NfZ2V0X21zZ2xldmVsLA0KPiAtCS5zZXRfbXNn bGV2ZWwgICA9IGR3Y2Vxb3Nfc2V0X21zZ2xldmVsLA0KPiAtCS5nZXRfbGlua19rc2V0dGluZ3Mg PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsDQo+IC0JLnNldF9saW5rX2tzZXR0aW5n cyA9IHBoeV9ldGh0b29sX3NldF9saW5rX2tzZXR0aW5ncywNCj4gLX07DQo+IC0NCj4gLXN0YXRp YyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbmV0ZGV2X29wcyA9IHsNCj4gLQkubmRvX29w ZW4JCT0gZHdjZXFvc19vcGVuLA0KPiAtCS5uZG9fc3RvcAkJPSBkd2NlcW9zX3N0b3AsDQo+IC0J Lm5kb19zdGFydF94bWl0CQk9IGR3Y2Vxb3Nfc3RhcnRfeG1pdCwNCj4gLQkubmRvX3NldF9yeF9t b2RlCT0gZHdjZXFvc19zZXRfcnhfbW9kZSwNCj4gLQkubmRvX3NldF9tYWNfYWRkcmVzcwk9IGR3 Y2Vxb3Nfc2V0X21hY19hZGRyZXNzLA0KPiAtI2lmZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9M TEVSDQo+IC0JLm5kb19wb2xsX2NvbnRyb2xsZXIJPSBkd2NlcW9zX3BvbGxfY29udHJvbGxlciwN Cj4gLSNlbmRpZg0KPiAtCS5uZG9fZG9faW9jdGwJCT0gZHdjZXFvc19pb2N0bCwNCj4gLQkubmRv X3R4X3RpbWVvdXQJCT0gZHdjZXFvc190eF90aW1lb3V0LA0KPiAtCS5uZG9fZ2V0X3N0YXRzNjQJ PSBkd2NlcW9zX2dldF9zdGF0czY0LA0KPiAtfTsNCj4gLQ0KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgZHdjZXFfb2ZfbWF0Y2hbXSA9IHsNCj4gLQl7IC5jb21wYXRpYmxlID0g InNucHMsZHdjLXFvcy1ldGhlcm5ldC00LjEwIiwgfSwNCj4gLQl7fQ0KPiAtfTsNCj4gLU1PRFVM RV9ERVZJQ0VfVEFCTEUob2YsIGR3Y2VxX29mX21hdGNoKTsNCj4gLQ0KPiAtc3RhdGljIGludCBk d2NlcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+IC17DQo+IC0Jc3Ry dWN0IHJlc291cmNlICpyX21lbSA9IE5VTEw7DQo+IC0Jc3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7 DQo+IC0Jc3RydWN0IG5ldF9sb2NhbCAqbHA7DQo+IC0JaW50IHJldCA9IC1FTlhJTzsNCj4gLQ0K PiAtCXJfbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAw KTsNCj4gLQlpZiAoIXJfbWVtKSB7DQo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgIm5vIElPIHJl c291cmNlIGRlZmluZWQuXG4iKTsNCj4gLQkJcmV0dXJuIC1FTlhJTzsNCj4gLQl9DQo+IC0NCj4g LQluZGV2ID0gYWxsb2NfZXRoZXJkZXYoc2l6ZW9mKCpscCkpOw0KPiAtCWlmICghbmRldikgew0K PiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJldGhlcmRldiBhbGxvY2F0aW9uIGZhaWxlZC5cbiIp Ow0KPiAtCQlyZXR1cm4gLUVOT01FTTsNCj4gLQl9DQo+IC0NCj4gLQlTRVRfTkVUREVWX0RFVihu ZGV2LCAmcGRldi0+ZGV2KTsNCj4gLQ0KPiAtCWxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0J bHAtPm5kZXYgPSBuZGV2Ow0KPiAtCWxwLT5wZGV2ID0gcGRldjsNCj4gLQlscC0+bXNnX2VuYWJs ZSA9IG5ldGlmX21zZ19pbml0KGRlYnVnLCBEV0NFUU9TX01TR19ERUZBVUxUKTsNCj4gLQ0KPiAt CXNwaW5fbG9ja19pbml0KCZscC0+dHhfbG9jayk7DQo+IC0Jc3Bpbl9sb2NrX2luaXQoJmxwLT5o d19sb2NrKTsNCj4gLQlzcGluX2xvY2tfaW5pdCgmbHAtPnN0YXRzX2xvY2spOw0KPiAtDQo+IC0J bHAtPmFwYl9wY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJhcGJfcGNsayIpOw0KPiAt CWlmIChJU19FUlIobHAtPmFwYl9wY2xrKSkgew0KPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJh cGJfcGNsayBjbG9jayBub3QgZm91bmQuXG4iKTsNCj4gLQkJcmV0ID0gUFRSX0VSUihscC0+YXBi X3BjbGspOw0KPiAtCQlnb3RvIGVycl9vdXRfZnJlZV9uZXRkZXY7DQo+IC0JfQ0KPiAtDQo+IC0J cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGxwLT5hcGJfcGNsayk7DQo+IC0JaWYgKHJldCkgew0K PiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJVbmFibGUgdG8gZW5hYmxlIEFQRVIgY2xvY2suXG4i KTsNCj4gLQkJZ290byBlcnJfb3V0X2ZyZWVfbmV0ZGV2Ow0KPiAtCX0NCj4gLQ0KPiAtCWxwLT5i YXNlYWRkciA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByX21lbSk7DQo+IC0J aWYgKElTX0VSUihscC0+YmFzZWFkZHIpKSB7DQo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgImZh aWxlZCB0byBtYXAgYmFzZWFkZHJlc3MuXG4iKTsNCj4gLQkJcmV0ID0gUFRSX0VSUihscC0+YmFz ZWFkZHIpOw0KPiAtCQlnb3RvIGVycl9vdXRfY2xrX2Rpc19hcGVyOw0KPiAtCX0NCj4gLQ0KPiAt CW5kZXYtPmlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQo+IC0JbmRldi0+d2F0Y2hk b2dfdGltZW8gPSBEV0NFUU9TX1RYX1RJTUVPVVQgKiBIWjsNCj4gLQluZGV2LT5uZXRkZXZfb3Bz ID0gJm5ldGRldl9vcHM7DQo+IC0JbmRldi0+ZXRodG9vbF9vcHMgPSAmZHdjZXFvc19ldGh0b29s X29wczsNCj4gLQluZGV2LT5iYXNlX2FkZHIgPSByX21lbS0+c3RhcnQ7DQo+IC0NCj4gLQlkd2Nl cW9zX2dldF9od2ZlYXR1cmVzKGxwKTsNCj4gLQlkd2NlcW9zX21kaW9fc2V0X2NzcihscCk7DQo+ IC0NCj4gLQluZGV2LT5od19mZWF0dXJlcyA9IE5FVElGX0ZfU0c7DQo+IC0NCj4gLQlpZiAobHAt PmZlYXR1cmUxICYgRFdDRVFPU19NQUNfSFdfRkVBVFVSRTFfVFNPRU4pDQo+IC0JCW5kZXYtPmh3 X2ZlYXR1cmVzIHw9IE5FVElGX0ZfVFNPIHwgTkVUSUZfRl9UU082Ow0KPiAtDQo+IC0JaWYgKGxw LT5mZWF0dXJlMCAmIERXQ0VRT1NfTUFDX0hXX0ZFQVRVUkUwX1RYQ09FU0VMKQ0KPiAtCQluZGV2 LT5od19mZWF0dXJlcyB8PSBORVRJRl9GX0lQX0NTVU0gfCBORVRJRl9GX0lQVjZfQ1NVTTsNCj4g LQ0KPiAtCWlmIChscC0+ZmVhdHVyZTAgJiBEV0NFUU9TX01BQ19IV19GRUFUVVJFMF9SWENPRVNF TCkNCj4gLQkJbmRldi0+aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9SWENTVU07DQo+IC0NCj4gLQlu ZGV2LT5mZWF0dXJlcyA9IG5kZXYtPmh3X2ZlYXR1cmVzOw0KPiAtDQo+IC0JbHAtPnBoeV9yZWZf Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJwaHlfcmVmX2NsayIpOw0KPiAtCWlmIChJ U19FUlIobHAtPnBoeV9yZWZfY2xrKSkgew0KPiAtCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJwaHlf cmVmX2NsayBjbG9jayBub3QgZm91bmQuXG4iKTsNCj4gLQkJcmV0ID0gUFRSX0VSUihscC0+cGh5 X3JlZl9jbGspOw0KPiAtCQlnb3RvIGVycl9vdXRfY2xrX2Rpc19hcGVyOw0KPiAtCX0NCj4gLQ0K PiAtCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShscC0+cGh5X3JlZl9jbGspOw0KPiAtCWlmIChy ZXQpIHsNCj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiVW5hYmxlIHRvIGVuYWJsZSBkZXZpY2Ug Y2xvY2suXG4iKTsNCj4gLQkJZ290byBlcnJfb3V0X2Nsa19kaXNfYXBlcjsNCj4gLQl9DQo+IC0N Cj4gLQlscC0+cGh5X25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKGxwLT5wZGV2LT5kZXYub2Zfbm9k ZSwNCj4gLQkJCQkJCSJwaHktaGFuZGxlIiwgMCk7DQo+IC0JaWYgKCFscC0+cGh5X25vZGUgJiYg b2ZfcGh5X2lzX2ZpeGVkX2xpbmsobHAtPnBkZXYtPmRldi5vZl9ub2RlKSkgew0KPiAtCQlyZXQg PSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhscC0+cGRldi0+ZGV2Lm9mX25vZGUpOw0KPiAt CQlpZiAocmV0IDwgMCkgew0KPiAtCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiaW52YWxpZCBmaXhl ZC1saW5rIik7DQo+IC0JCQlnb3RvIGVycl9vdXRfY2xrX2Rpc19waHk7DQo+IC0JCX0NCj4gLQ0K PiAtCQlscC0+cGh5X25vZGUgPSBvZl9ub2RlX2dldChscC0+cGRldi0+ZGV2Lm9mX25vZGUpOw0K PiAtCX0NCj4gLQ0KPiAtCXJldCA9IG9mX2dldF9waHlfbW9kZShscC0+cGRldi0+ZGV2Lm9mX25v ZGUpOw0KPiAtCWlmIChyZXQgPCAwKSB7DQo+IC0JCWRldl9lcnIoJmxwLT5wZGV2LT5kZXYsICJl cnJvciBpbiBnZXR0aW5nIHBoeSBpL2ZcbiIpOw0KPiAtCQlnb3RvIGVycl9vdXRfZGVyZWdpc3Rl cl9maXhlZF9saW5rOw0KPiAtCX0NCj4gLQ0KPiAtCWxwLT5waHlfaW50ZXJmYWNlID0gcmV0Ow0K PiAtDQo+IC0JcmV0ID0gZHdjZXFvc19taWlfaW5pdChscCk7DQo+IC0JaWYgKHJldCkgew0KPiAt CQlkZXZfZXJyKCZscC0+cGRldi0+ZGV2LCAiZXJyb3IgaW4gZHdjZXFvc19taWlfaW5pdFxuIik7 DQo+IC0JCWdvdG8gZXJyX291dF9kZXJlZ2lzdGVyX2ZpeGVkX2xpbms7DQo+IC0JfQ0KPiAtDQo+ IC0JcmV0ID0gZHdjZXFvc19taWlfcHJvYmUobmRldik7DQo+IC0JaWYgKHJldCAhPSAwKSB7DQo+ IC0JCW5ldGRldl9lcnIobmRldiwgIm1paV9wcm9iZSBmYWlsLlxuIik7DQo+IC0JCXJldCA9IC1F TlhJTzsNCj4gLQkJZ290byBlcnJfb3V0X2RlcmVnaXN0ZXJfZml4ZWRfbGluazsNCj4gLQl9DQo+ IC0NCj4gLQlkd2NlcW9zX3NldF91bWFjX2FkZHIobHAsIGxwLT5uZGV2LT5kZXZfYWRkciwgMCk7 DQo+IC0NCj4gLQl0YXNrbGV0X2luaXQoJmxwLT50eF9iZHJlY2xhaW1fdGFza2xldCwgZHdjZXFv c190eF9yZWNsYWltLA0KPiAtCQkgICAgICh1bnNpZ25lZCBsb25nKW5kZXYpOw0KPiAtCXRhc2ts ZXRfZGlzYWJsZSgmbHAtPnR4X2JkcmVjbGFpbV90YXNrbGV0KTsNCj4gLQ0KPiAtCWxwLT50eHRp bWVvdXRfaGFuZGxlcl93cSA9IGFsbG9jX3dvcmtxdWV1ZShEUklWRVJfTkFNRSwNCj4gLQkJCQkJ CSAgIFdRX01FTV9SRUNMQUlNLCAwKTsNCj4gLQlJTklUX1dPUksoJmxwLT50eHRpbWVvdXRfcmVp bml0LCBkd2NlcW9zX3JlaW5pdF9mb3JfdHh0aW1lb3V0KTsNCj4gLQ0KPiAtCXBsYXRmb3JtX3Nl dF9kcnZkYXRhKHBkZXYsIG5kZXYpOw0KPiAtCXJldCA9IGR3Y2Vxb3NfcHJvYmVfY29uZmlnX2R0 KHBkZXYpOw0KPiAtCWlmIChyZXQpIHsNCj4gLQkJZGV2X2VycigmbHAtPnBkZXYtPmRldiwgIlVu YWJsZSB0byByZXRyaWV2ZSBEVCwgZXJyb3IgJWRcbiIsDQo+IC0JCQlyZXQpOw0KPiAtCQlnb3Rv IGVycl9vdXRfZGVyZWdpc3Rlcl9maXhlZF9saW5rOw0KPiAtCX0NCj4gLQlkZXZfaW5mbygmbHAt PnBkZXYtPmRldiwgInBkZXYtPmlkICVkLCBiYXNlYWRkciAweCUwOGx4LCBpcnEgJWRcbiIsDQo+ IC0JCSBwZGV2LT5pZCwgbmRldi0+YmFzZV9hZGRyLCBuZGV2LT5pcnEpOw0KPiAtDQo+IC0JcmV0 ID0gZGV2bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBuZGV2LT5pcnEsICZkd2NlcW9zX2ludGVy cnVwdCwgMCwNCj4gLQkJCSAgICAgICBuZGV2LT5uYW1lLCBuZGV2KTsNCj4gLQlpZiAocmV0KSB7 DQo+IC0JCWRldl9lcnIoJmxwLT5wZGV2LT5kZXYsICJVbmFibGUgdG8gcmVxdWVzdCBJUlEgJWQs IGVycm9yICVkXG4iLA0KPiAtCQkJbmRldi0+aXJxLCByZXQpOw0KPiAtCQlnb3RvIGVycl9vdXRf ZGVyZWdpc3Rlcl9maXhlZF9saW5rOw0KPiAtCX0NCj4gLQ0KPiAtCWlmIChuZXRpZl9tc2dfcHJv YmUobHApKQ0KPiAtCQluZXRkZXZfZGJnKG5kZXYsICJuZXRfbG9jYWxAJXBcbiIsIGxwKTsNCj4g LQ0KPiAtCW5ldGlmX25hcGlfYWRkKG5kZXYsICZscC0+bmFwaSwgZHdjZXFvc19yeF9wb2xsLCBO QVBJX1BPTExfV0VJR0hUKTsNCj4gLQ0KPiAtCXJldCA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTsN Cj4gLQlpZiAocmV0KSB7DQo+IC0JCWRldl9lcnIoJnBkZXYtPmRldiwgIkNhbm5vdCByZWdpc3Rl ciBuZXQgZGV2aWNlLCBhYm9ydGluZy5cbiIpOw0KPiAtCQlnb3RvIGVycl9vdXRfZGVyZWdpc3Rl cl9maXhlZF9saW5rOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtDQo+IC1lcnJfb3V0 X2RlcmVnaXN0ZXJfZml4ZWRfbGluazoNCj4gLQlpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsocGRl di0+ZGV2Lm9mX25vZGUpKQ0KPiAtCQlvZl9waHlfZGVyZWdpc3Rlcl9maXhlZF9saW5rKHBkZXYt PmRldi5vZl9ub2RlKTsNCj4gLWVycl9vdXRfY2xrX2Rpc19waHk6DQo+IC0JY2xrX2Rpc2FibGVf dW5wcmVwYXJlKGxwLT5waHlfcmVmX2Nsayk7DQo+IC1lcnJfb3V0X2Nsa19kaXNfYXBlcjoNCj4g LQljbGtfZGlzYWJsZV91bnByZXBhcmUobHAtPmFwYl9wY2xrKTsNCj4gLWVycl9vdXRfZnJlZV9u ZXRkZXY6DQo+IC0Jb2Zfbm9kZV9wdXQobHAtPnBoeV9ub2RlKTsNCj4gLQlmcmVlX25ldGRldihu ZGV2KTsNCj4gLQlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsNCj4gLQlyZXR1cm4g cmV0Ow0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGR3Y2Vxb3NfcmVtb3ZlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+IC17DQo+IC0Jc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSBw bGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gLQlzdHJ1Y3QgbmV0X2xvY2FsICpscDsNCj4g LQ0KPiAtCWlmIChuZGV2KSB7DQo+IC0JCWxwID0gbmV0ZGV2X3ByaXYobmRldik7DQo+IC0NCj4g LQkJaWYgKG5kZXYtPnBoeWRldikgew0KPiAtCQkJcGh5X2Rpc2Nvbm5lY3QobmRldi0+cGh5ZGV2 KTsNCj4gLQkJCWlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwZGV2LT5kZXYub2Zfbm9kZSkpDQo+ IC0JCQkJb2ZfcGh5X2RlcmVnaXN0ZXJfZml4ZWRfbGluayhwZGV2LT5kZXYub2Zfbm9kZSk7DQo+ IC0JCX0NCj4gLQkJbWRpb2J1c191bnJlZ2lzdGVyKGxwLT5taWlfYnVzKTsNCj4gLQkJbWRpb2J1 c19mcmVlKGxwLT5taWlfYnVzKTsNCj4gLQ0KPiAtCQl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsN Cj4gLQ0KPiAtCQljbGtfZGlzYWJsZV91bnByZXBhcmUobHAtPnBoeV9yZWZfY2xrKTsNCj4gLQkJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGxwLT5hcGJfcGNsayk7DQo+IC0NCj4gLQkJZnJlZV9uZXRk ZXYobmRldik7DQo+IC0JfQ0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+IC19DQo+IC0NCj4gLXN0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y2Vxb3NfZHJpdmVyID0gew0KPiAtCS5wcm9iZSAg ID0gZHdjZXFvc19wcm9iZSwNCj4gLQkucmVtb3ZlICA9IGR3Y2Vxb3NfcmVtb3ZlLA0KPiAtCS5k cml2ZXIgID0gew0KPiAtCQkubmFtZSAgPSBEUklWRVJfTkFNRSwNCj4gLQkJLm9mX21hdGNoX3Rh YmxlID0gZHdjZXFfb2ZfbWF0Y2gsDQo+IC0JfSwNCj4gLX07DQo+IC0NCj4gLW1vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIoZHdjZXFvc19kcml2ZXIpOw0KPiAtDQo+IC1NT0RVTEVfREVTQ1JJUFRJT04o IkRXQyBFdGhlcm5ldCBRb1MgdjQuMTBhIGRyaXZlciIpOw0KPiAtTU9EVUxFX0xJQ0VOU0UoIkdQ TCB2MiIpOw0KPiAtTU9EVUxFX0FVVEhPUigiQW5kcmVhcyBJcmVzdGFhbCA8YW5kcmVhcy5pcmVz dGFsQGF4aXMuY29tPiIpOw0KPiAtTU9EVUxFX0FVVEhPUigiTGFycyBQZXJzc29uIDxsYXJzLnBl cnNzb25AYXhpcy5jb20+Iik7DQo+IC0tIA0KPiAyLjkuMw0KPiANCg0KSGkgSm9hbywNCg0KSW4g dGhlIE1BSU5UQUlORVJTIGZpbGUgcmVtb3ZlIHRoZSBlbnRyeSBmb3IgU1lOT1BTWVMgREVTSUdO V0FSRSBFVEhFUk5FVCBRT1MgNC4xMGEgZHJpdmVyLg0KDQpQbGVhc2UgYWxzbyByZXBsYWNlIHRo aXMgS2NvbmZpZyByZWZlcmVuY2Ugd2l0aCBDT05GSUdfRFdNQUNfRFdDX1FPU19FVEg6DQphcmNo L2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzpDT05GSUdfU1lOT1BTWVNfRFdDX0VUSF9R T1M9eQ0KDQpJdCBtaWdodCBuZWVkIGEgc2VwYXJhdGUgcGF0Y2ggdGhyb3VnaCB0aGUgQVJNIG1h aW50YWluZXJz4oCZIHRyZWUuDQoNCkJyLCANCiBMYXJzDQoNCg0KDQoNCg0K