From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC PATCH v3 1/7] drm/i915: setup bridge for HDMI LPE audio driver Date: Fri, 25 Nov 2016 12:18:52 +0200 Message-ID: <20161125101852.GV31595@intel.com> References: <20161124235548.16440-1-jerome.anand@intel.com> <20161124235548.16440-2-jerome.anand@intel.com> <20161124133154.GQ31595@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id A85E36E0AD for ; Fri, 25 Nov 2016 10:18:58 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Anand, Jerome" Cc: "alsa-devel@alsa-project.org" , "tiwai@suse.de" , "intel-gfx@lists.freedesktop.org" , "broonie@kernel.org" , "Ughreja, Rakesh A" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMjUsIDIwMTYgYXQgMDU6NDI6MzhBTSArMDAwMCwgQW5hbmQsIEplcm9tZSB3 cm90ZToKPiAKPiAKPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiBGcm9tOiBWaWxs ZSBTeXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+IFNl bnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAyNCwgMjAxNiA3OjAyIFBNCj4gPiBUbzogQW5hbmQsIEpl cm9tZSA8amVyb21lLmFuYW5kQGludGVsLmNvbT4KPiA+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnOyBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmc7Cj4gPiBicm9vbmllQGtl cm5lbC5vcmc7IHRpd2FpQHN1c2UuZGU7IHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVs LmNvbTsKPiA+IFVnaHJlamEsIFJha2VzaCBBIDxyYWtlc2guYS51Z2hyZWphQGludGVsLmNvbT4K PiA+IFN1YmplY3Q6IFJlOiBbUkZDIFBBVENIIHYzIDEvN10gZHJtL2k5MTU6IHNldHVwIGJyaWRn ZSBmb3IgSERNSSBMUEUgYXVkaW8KPiA+IGRyaXZlcgo+ID4gCj4gPiBPbiBGcmksIE5vdiAyNSwg MjAxNiBhdCAwNToyNTo0MkFNICswNTMwLCBKZXJvbWUgQW5hbmQgd3JvdGU6Cj4gPiA+IEVuYWJs ZSBzdXBwb3J0IGZvciBIRE1JIExQRSBhdWRpbyBtb2RlIG9uIEJheXRyYWlsIGFuZCBDaGVycnl0 cmFpbAo+ID4gPiB3aGVuIEhEYXVkaW8gY29udHJvbGxlciBpcyBub3QgZGV0ZWN0ZWQKPiA+ID4K PiA+ID4gU2V0dXAgbWluaW11bSByZXF1aXJlZCByZXNvdXJjZXMgZHVyaW5nIGk5MTVfZHJpdmVy X2xvYWQ6Cj4gPiA+IDEuIENyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB0byBzaGFyZSBNTUlPL0lS USByZXNvdXJjZXMgMi4gTWFrZSB0aGUKPiA+ID4gcGxhdGZvcm0gZGV2aWNlIGNoaWxkIG9mIGk5 MTUgZGV2aWNlIGZvciBydW50aW1lIFBNLgo+ID4gPiAzLiBDcmVhdGUgSVJRIGNoaXAgdG8gZm9y d2FyZCBIRE1JIExQRSBhdWRpbyBpcnFzLgo+ID4gPgo+ID4gPiBIRE1JIExQRSBhdWRpbyBkcml2 ZXIgKGEgc3RhbmRhbG9uZSBzb3VuZCBkcml2ZXIpIHByb2JlcyB0aGUgTFBFIGF1ZGlvCj4gPiA+ IGRldmljZSBhbmQgY3JlYXRlcyBhIG5ldyBzb3VuZCBjYXJkLgo+ID4gPgo+ID4gPiBTaWduZWQt b2ZmLWJ5OiBQaWVycmUtTG91aXMgQm9zc2FydAo+ID4gPiA8cGllcnJlLWxvdWlzLmJvc3NhcnRA bGludXguaW50ZWwuY29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBKZXJvbWUgQW5hbmQgPGplcm9t ZS5hbmFuZEBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgRG9jdW1lbnRhdGlvbi9ncHUvaTkx NS5yc3QgICAgICAgICAgICAgfCAgIDkgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgICAgICAgICAgfCAgIDMgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyAgICAgICAgfCAgIDggKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgIHwgIDE1ICsrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j ICAgICAgICB8ICAyOSArKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg ICAgICAgIHwgICAzICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRp by5jIHwgMzY5Cj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGlu Y2x1ZGUvZHJtL2ludGVsX2xwZV9hdWRpby5oICAgICAgICAgIHwgIDQ1ICsrKysKPiA+ID4gIDgg ZmlsZXMgY2hhbmdlZCwgNDc5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pICBjcmVhdGUg bW9kZQo+ID4gPiAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMK PiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9pbnRlbF9scGVfYXVkaW8uaAo+ ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvaTkxNS5yc3QgYi9Eb2N1 bWVudGF0aW9uL2dwdS9pOTE1LnJzdAo+ID4gPiBpbmRleCAxMTdkMmFiLi5hNjcxZWVlIDEwMDY0 NAo+ID4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdAo+ID4gPiArKysgYi9Eb2N1 bWVudGF0aW9uL2dwdS9pOTE1LnJzdAo+ID4gPiBAQCAtMjEzLDYgKzIxMywxNSBAQCBWaWRlbyBC SU9TIFRhYmxlIChWQlQpICAuLiBrZXJuZWwtZG9jOjoKPiA+ID4gZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdmJ0X2RlZnMuaAo+ID4gPiAgICAgOmludGVybmFsOgo+ID4gPgo+ID4gPiAraW50 ZWwgaGRtaSBscGUgYXVkaW8gc3VwcG9ydAo+ID4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ID4gPiArCj4gPiA+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHBlX2F1ZGlvLmMKPiA+ID4gKyAgIDpkb2M6ICBMUEUgQXVkaW8gaW50ZWdyYXRpb24g Zm9yIEhETUkgb3IgRFAgcGxheWJhY2sKPiA+ID4gKwo+ID4gPiArLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRpby5jCj4gPiA+ICsgICA6aW50ZXJuYWw6 Cj4gPiA+ICsKPiA+ID4gIE1lbW9yeSBNYW5hZ2VtZW50IGFuZCBDb21tYW5kIFN1Ym1pc3Npb24K PiA+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ID4gPgo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBpbmRleCA1ODA2MDJkLi4zYTIzNjljIDEwMDY0NAo+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4gPiBAQCAtMTI2LDYgKzEyNiw5IEBAIGk5MTUt eSArPSBpbnRlbF9ndnQubyAgaW5jbHVkZSAkKHNyYykvZ3Z0L01ha2VmaWxlCj4gPiA+IGVuZGlm Cj4gPiA+Cj4gPiA+ICsjIExQRSBBdWRpbyBmb3IgVkxWIGFuZCBDSFQKPiA+ID4gK2k5MTUteSAr PSBpbnRlbF9scGVfYXVkaW8ubwo+ID4gPiArCj4gPiA+ICBvYmotJChDT05GSUdfRFJNX0k5MTUp ICs9IGk5MTUubwo+ID4gPgo+ID4gPiAgQ0ZMQUdTX2k5MTVfdHJhY2VfcG9pbnRzLm8gOj0gLUkk KHNyYykgZGlmZiAtLWdpdAo+ID4gPiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+IGluZGV4IGI4OTNlNjcuLjkz ODExZWQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiBAQCAtMTE0 NCw3ICsxMTQ0LDggQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0Cj4g PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gIAlpZiAoSVNfR0VONShkZXZfcHJp dikpCj4gPiA+ICAJCWludGVsX2dwdV9pcHNfaW5pdChkZXZfcHJpdik7Cj4gPiA+Cj4gPiA+IC0J aTkxNV9hdWRpb19jb21wb25lbnRfaW5pdChkZXZfcHJpdik7Cj4gPiA+ICsJaWYgKGludGVsX2xw ZV9hdWRpb19pbml0KGRldl9wcml2KSA8IDApCj4gPiA+ICsJCWk5MTVfYXVkaW9fY29tcG9uZW50 X2luaXQoZGV2X3ByaXYpOwo+ID4gPgo+ID4gPiAgCS8qCj4gPiA+ICAJICogU29tZSBwb3J0cyBy ZXF1aXJlIGNvcnJlY3RseSBzZXQtdXAgaHBkIHJlZ2lzdGVycyBmb3IgZGV0ZWN0aW9uCj4gPiA+ IHRvIEBAIC0xMTYyLDcgKzExNjMsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0 ZXIoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gICAqLwo+ID4g PiAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPiA+IHsKPiA+ID4gLQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9jbGVh bnVwKGRldl9wcml2KTsKPiA+ID4gKwlpZiAoSEFTX0xQRV9BVURJTyhkZXZfcHJpdikpCj4gPiA+ ICsJCWludGVsX2xwZV9hdWRpb190ZWFyZG93bihkZXZfcHJpdik7Cj4gPiA+ICsJZWxzZQo+ID4g PiArCQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9jbGVhbnVwKGRldl9wcml2KTsKPiA+ID4KPiA+ID4g IAlpbnRlbF9ncHVfaXBzX3RlYXJkb3duKCk7Cj4gPiA+ICAJYWNwaV92aWRlb191bnJlZ2lzdGVy KCk7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBpbmRleCA5NzBlNTBiLi4yYTc5 MDQ4IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gQEAgLTIyODQs NiArMjI4NCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gPiA+ICAJLyogVXNlZCB0 byBzYXZlIHRoZSBwaXBlLXRvLWVuY29kZXIgbWFwcGluZyBmb3IgYXVkaW8gKi8KPiA+ID4gIAlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqYXZfZW5jX21hcFtJOTE1X01BWF9QSVBFU107Cj4gPiA+Cj4g PiA+ICsJLyogbmVjZXNzYXJ5IHJlc291cmNlIHNoYXJpbmcgd2l0aCBIRE1JIExQRSBhdWRpbyBk cml2ZXIuICovCj4gPiA+ICsJc3RydWN0IHsKPiA+ID4gKwkJc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGxhdGRldjsKPiA+ID4gKwkJaW50CWlycTsKPiA+ID4gKwl9IGxwZV9hdWRpbzsKPiA+ID4g Kwo+ID4gPiAgCS8qCj4gPiA+ICAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2Vv biwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXIKPiA+IHBhdGNoCj4gPiA+ICAJICogd2lsbCBi ZSByZWplY3RlZC4gSW5zdGVhZCBsb29rIGZvciBhIGJldHRlciBwbGFjZS4KPiA+ID4gQEAgLTI3 NzMsNiArMjc3OSw4IEBAIGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUK PiA+ID4gKmRldl9wcml2KQo+ID4gPgo+ID4gPiAgI2RlZmluZSBIQVNfUE9PTEVEX0VVKGRldl9w cml2KQkoKGRldl9wcml2KS0+aW5mby5oYXNfcG9vbGVkX2V1KQo+ID4gPgo+ID4gPiArI2RlZmlu ZSBIQVNfTFBFX0FVRElPKGRldl9wcml2KSAoKGRldl9wcml2KS0+bHBlX2F1ZGlvLnBsYXRkZXYg IT0KPiA+ID4gK05VTEwpCj4gPiA+ICsKPiA+ID4gICNkZWZpbmUgSU5URUxfUENIX0RFVklDRV9J RF9NQVNLCQkweGZmMDAKPiA+ID4gICNkZWZpbmUgSU5URUxfUENIX0lCWF9ERVZJQ0VfSURfVFlQ RQkJMHgzYjAwCj4gPiA+ICAjZGVmaW5lIElOVEVMX1BDSF9DUFRfREVWSUNFX0lEX1RZUEUJCTB4 MWMwMAo+ID4gPiBAQCAtMzU0Nyw2ICszNTU1LDEzIEBAIGV4dGVybiBpbnQgaTkxNV9yZXN0b3Jl X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlCj4gPiA+ICpkZXYpOyAgdm9pZCBpOTE1X3NldHVwX3N5 c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiA+IHZvaWQgaTkxNV90 ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPgo+ ID4gPiArLyogaTkxNV9scGVfYXVkaW8uYyAqLwo+ID4gPiAraW50ICBpbnRlbF9scGVfYXVkaW9f aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyBpbnQKPiA+ID4gK2ludGVs X2xwZV9hdWRpb19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyB2b2lk Cj4gPiA+ICtpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsgdm9pZAo+ID4gPiAraW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7IGJvb2wKPiA+ID4gK2ludGVsX2xwZV9hdWRp b19kZXRlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ID4gKwo+ID4g PiAgLyogaW50ZWxfaTJjLmMgKi8KPiA+ID4gIGV4dGVybiBpbnQgaW50ZWxfc2V0dXBfZ21idXMo c3RydWN0IGRybV9kZXZpY2UgKmRldik7ICBleHRlcm4gdm9pZAo+ID4gPiBpbnRlbF90ZWFyZG93 bl9nbWJ1cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsgZGlmZiAtLWdpdAo+ID4gPiBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCj4gPiA+IGluZGV4IDA3Y2E3MWMuLjZjOThiMjggMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwo+ID4gPiBAQCAtMTg5NCw2ICsxODk0LDE1IEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCB2YWxsZXl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsCj4gPiB2b2lkICphcmcpCj4gPiA+ ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRz KTsKPiA+ID4KPiA+ID4gIAkJLyoKPiA+ID4gKwkJICogTFBFIGF1ZGlvIGludGVycnVwdHMgYXJl IG9ubHkgZW5hYmxlZCBvbiBCYXl0cmFpbCBhbmQKPiA+ID4gKwkJICogQ2hlcnJ5VmlldyBwbGF0 Zm9ybXMgd2l0aG91dCBIRGF1ZGlvCj4gPiA+ICsJCSAqLwo+ID4gPiArCQlpZiAoaWlyICYgKEk5 MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+ID4gPiArCQkJICAgSTkxNV9MUEVfUElQRV9CX0lO VEVSUlVQVCB8Cj4gPiA+ICsJCQkgICBJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBUKSkKPiA+IAo+ ID4gTm8gcGlwZSBDIG9uIHZsdi4KPiA+IAo+IAo+IE9LCj4gCj4gPiA+ICsJCQlpbnRlbF9scGVf YXVkaW9faXJxX2hhbmRsZXIoZGV2X3ByaXYpOwo+ID4gPiArCj4gPiA+ICsJCS8qCj4gPiA+ICAJ CSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVsCj4g PiA+ICAJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQsIGhlbmNlIGNsZWFyIGl0 IGxhc3QuCj4gPiA+ICAJCSAqLwo+ID4gPiBAQCAtMTk3NCw2ICsxOTgzLDE1IEBAIHN0YXRpYyBp cnFyZXR1cm5fdCBjaGVycnl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsCj4gPiB2b2lkICphcmcp Cj4gPiA+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBl X3N0YXRzKTsKPiA+ID4KPiA+ID4gIAkJLyoKPiA+ID4gKwkJICogTFBFIGF1ZGlvIGludGVycnVw dHMgYXJlIG9ubHkgZW5hYmxlZCBvbiBCYXl0cmFpbCBhbmQKPiA+ID4gKwkJICogQ2hlcnJ5Vmll dyBwbGF0Zm9ybXMgd2l0aG91dCBIRGF1ZGlvCj4gPiA+ICsJCSAqLwo+ID4gPiArCQlpZiAoaWly ICYgKEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+ID4gPiArCQkJICAgSTkxNV9MUEVfUElQ RV9CX0lOVEVSUlVQVCB8Cj4gPiA+ICsJCQkgICBJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBUKSkK PiA+ID4gKwkJCWludGVsX2xwZV9hdWRpb19pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gPiA+ICsK PiA+ID4gKwkJLyoKPiA+ID4gIAkJICogVkxWX0lJUiBpcyBzaW5nbGUgYnVmZmVyZWQsIGFuZCBy ZWZsZWN0cyB0aGUgbGV2ZWwKPiA+ID4gIAkJICogZnJvbSBQSVBFU1RBVC9QT1JUX0hPVFBMVUdf U1RBVCwgaGVuY2UgY2xlYXIgaXQgbGFzdC4KPiA+ID4gIAkJICovCj4gPiA+IEBAIC0yOTMwLDYg KzI5NDgsMTcgQEAgc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVj dAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4KPiA+ID4gIAlXQVJOX09O KGRldl9wcml2LT5pcnFfbWFzayAhPSB+MCk7Cj4gPiA+Cj4gPiA+ICsJaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gPiAKPiA+IFRoaXMg aXMgdmx2L2NodiBzcGVjaWZpYyBjb2RlLCBzbyBubyBuZWVkIHRvIGNoZWNrIGZvciBpdC4KPiA+ IAo+IAo+IE9LCj4gCj4gPiA+ICsJCS8qIGFkZCBpbnRlcnJ1cHQgbWFza3MgdW5jb25kaXRpYWxs eSBoZXJlLCB0aGUgYWN0dWFsIHVubWFzawo+ID4gPiArCQkgKiB3aWxsIHRha2UgcGxhY2Ugb25s eSBpZiB0aGUgTFBFX0FVRElPIG1vZGUgaXMgZGV0ZWN0ZWQKPiA+ID4gKwkJICovCj4gPiA+ICsJ CXUzMiB2YWwgPSAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gPiA+ICsJCQlJOTE1X0xQ RV9QSVBFX0JfSU5URVJSVVBUIHwKPiA+ID4gKwkJCUk5MTVfTFBFX1BJUEVfQ19JTlRFUlJVUFQp Owo+ID4gPiArCj4gPiA+ICsJCWVuYWJsZV9tYXNrIHw9IHZhbDsKPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gIAlkZXZfcHJpdi0+aXJxX21hc2sgPSB+ZW5hYmxlX21hc2s7Cj4gPiA+Cj4gPiA+ICAJ R0VONV9JUlFfSU5JVChWTFZfLCBkZXZfcHJpdi0+aXJxX21hc2ssIGVuYWJsZV9tYXNrKTsgZGlm ZiAtLWdpdAo+ID4gPiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+IGluZGV4IGZjYWQ4ZmEuLjZiMTZlZDAgMTAw NjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiBAQCAtMjM5NSw2ICsyMzk1 LDkgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gPiA+ICAjZGVmaW5lIEk5MTVfQVNM RV9JTlRFUlJVUFQJCQkJKDE8PDApCj4gPiA+ICAjZGVmaW5lIEk5MTVfQlNEX1VTRVJfSU5URVJS VVBUCj4gPiAJKDE8PDI1KQo+ID4gPgo+ID4gPiArI2RlZmluZSBJOTE1X0hETUlfTFBFX0FVRElP X0JBU0UJKFZMVl9ESVNQTEFZX0JBU0UgKwo+ID4gMHg2NTAwMCkKPiA+ID4gKyNkZWZpbmUgSTkx NV9IRE1JX0xQRV9BVURJT19TSVpFCTB4MTAwMAo+ID4gPiArCj4gPiA+ICAjZGVmaW5lIEdFTjZf QlNEX1JOQ0lECQkJX01NSU8oMHgxMjE5OCkKPiA+ID4KPiA+ID4gICNkZWZpbmUgR0VON19GRl9U SFJFQURfTU9ERQkJX01NSU8oMHgyMGEwKQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scGVfYXVkaW8uYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAw MDAwMDAwLi41MzM1ZmM2Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMKPiA+ID4gQEAgLTAsMCArMSwzNjkgQEAKPiA+ ID4gKy8qCj4gPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4g PiArICoKPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uCj4gPiA+ICtvYnRhaW5pbmcgYQo+ID4gPiArICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ID4g PiArIlNvZnR3YXJlIiksCj4gPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+ID4gPiArbGltaXRhdGlvbgo+ID4gPiAr ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsCj4gPiA+ICtzdWJsaWNlbnNlLAo+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPiA+ID4gK3RoZQo+ ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4gPiA+ICt0 aGUgbmV4dAo+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCj4gPiA+ICtvZiB0aGUKPiA+ID4gKyAqIFNvZnR3 YXJlLgo+ID4gPiArICoKPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQo+ID4gS0lORCwKPiA+ID4gK0VYUFJFU1MgT1IKPiA+ ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YKPiA+ID4gK01FUkNIQU5UQUJJTElUWSwKPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTgo+ID4gTk8gRVZFTlQKPiA+ ID4gK1NIQUxMCj4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwKPiA+IERBTUFHRVMKPiA+ID4gK09SIE9USEVSCj4gPiA+ICsg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCj4g PiBPVEhFUldJU0UsCj4gPiA+ICtBUklTSU5HCj4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFCj4gPiBPUgo+ID4gPiArT1RI RVIgREVBTElOR1MKPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gKyAqCj4gPiA+ICsg KiBBdXRob3JzOgo+ID4gPiArICogICAgUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vp cy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KPiA+ID4gKyAqICAgIEplcm9tZSBBbmFuZCA8amVy b21lLmFuYW5kQGludGVsLmNvbT4KPiA+ID4gKyAqICAgIGJhc2VkIG9uIFZFRCBwYXRjaGVzCj4g PiA+ICsgKgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogRE9DOiBMUEUg QXVkaW8gaW50ZWdyYXRpb24gZm9yIEhETUkgb3IgRFAgcGxheWJhY2sKPiA+ID4gKyAqCj4gPiA+ ICsgKiBNb3RpdmF0aW9uOgo+ID4gPiArICogQXRvbSBwbGF0Zm9ybXMgKGUuZy4gdmFsbGV5dmll dyBhbmQgY2hlcnJ5VHJhaWwpIGludGVncmF0ZXMgYQo+ID4gPiArRE1BLWJhc2VkCj4gPiA+ICsg KiBpbnRlcmZhY2UgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHRyYWRpdGlvbmFsIEhEYXVkaW8g cGF0aC4gV2hpbGUKPiA+ID4gK3RoaXMKPiA+ID4gKyAqIG1vZGUgaXMgdW5yZWxhdGVkIHRvIHRo ZSBMUEUgYWthIFNTVCBhdWRpbyBlbmdpbmUsIHRoZQo+ID4gPiArZG9jdW1lbnRhdGlvbiByZWZl cnMKPiA+ID4gKyAqIHRvIHRoaXMgbW9kZSBhcyBMUEUgc28gd2Uga2VlcCB0aGlzIG5vdGF0aW9u IGZvciB0aGUgc2FrZSBvZgo+ID4gY29uc2lzdGVuY3kuCj4gPiA+ICsgKgo+ID4gPiArICogVGhl IGludGVyZmFjZSBpcyBoYW5kbGVkIGJ5IGEgc2VwYXJhdGUgc3RhbmRhbG9uZSBkcml2ZXIKPiA+ ID4gK21haW50YWluZWQgaW4gdGhlCj4gPiA+ICsgKiBBTFNBIHN1YnN5c3RlbSBmb3Igc2ltcGxp Y2l0eS4gVG8gbWluaW1pemUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4KPiA+ID4gK3RoZSB0d28K PiA+ID4gKyAqIHN1YnN5c3RlbXMsIGEgYnJpZGdlIGlzIHNldHVwIGJldHdlZW4gdGhlIGhkbWkt bHBlLWF1ZGlvIGFuZCBpOTE1Ogo+ID4gPiArICogMS4gQ3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNl IHRvIHNoYXJlIE1NSU8vSVJRIHJlc291cmNlcwo+ID4gPiArICogMi4gTWFrZSB0aGUgcGxhdGZv cm0gZGV2aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50aW1lIFBNLgo+ID4gPiArICog My4gQ3JlYXRlIElSUSBjaGlwIHRvIGZvcndhcmQgdGhlIExQRSBhdWRpbyBpcnFzLgo+ID4gPiAr ICogdGhlIGhkbWktbHBlLWF1ZGlvIGRyaXZlciBwcm9iZXMgdGhlIGxwZSBhdWRpbyBkZXZpY2Ug YW5kIGNyZWF0ZXMKPiA+ID4gK2EgbmV3Cj4gPiA+ICsgKiBzb3VuZCBjYXJkCj4gPiA+ICsgKgo+ ID4gPiArICogVGhyZWF0czoKPiA+ID4gKyAqIER1ZSB0byB0aGUgcmVzdHJpY3Rpb24gaW4gTGlu dXggcGxhdGZvcm0gZGV2aWNlIG1vZGVsLCB1c2VyIG5lZWQKPiA+ID4gK21hbnVhbGx5Cj4gPiA+ ICsgKiB1bmluc3RhbGwgdGhlIGhkbWktbHBlLWF1ZGlvIGRyaXZlciBiZWZvcmUgdW5pbnN0YWxs aW5nIGk5MTUKPiA+ID4gK21vZHVsZSwKPiA+ID4gKyAqIG90aGVyd2lzZSB3ZSBtaWdodCBydW4g aW50byB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgYWZ0ZXIgaTkxNQo+ID4gPiArcmVtb3ZlcyB0aGUK PiA+ID4gKyAqIHBsYXRmb3JtIGRldmljZTogZXZlbiB0aG91Z2ggaGRtaS1scGUtYXVkaW8gZHJp dmVyIGlzIHJlbGVhc2VkLAo+ID4gPiArdGhlIG1vZHVsZXMKPiA+ID4gKyAqIGlzIHN0aWxsIGlu ICJpbnN0YWxsZWQiIHN0YXR1cy4KPiA+ID4gKyAqCj4gPiA+ICsgKiBJbXBsZW1lbnRhdGlvbjoK PiA+ID4gKyAqIFRoZSBNTUlPL1JFRyBwbGF0Zm9ybSByZXNvdXJjZXMgYXJlIGNyZWF0ZWQgYWNj b3JkaW5nIHRvIHRoZQo+ID4gPiArcmVnaXN0ZXJzCj4gPiA+ICsgKiBzcGVjaWZpY2F0aW9uLgo+ ID4gPiArICogV2hlbiBmb3J3YXJkaW5nIExQRSBhdWRpbyBpcnFzLCB0aGUgZmxvdyBjb250cm9s IGhhbmRsZXIgc2VsZWN0aW9uCj4gPiA+ICtkZXBlbmRzCj4gPiA+ICsgKiBvbiB0aGUgcGxhdGZv cm0sIGZvciBleGFtcGxlIG9uIHZhbGxleXZpZXcgaGFuZGxlX3NpbXBsZV9pcnEgaXMKPiA+IGVu b3VnaC4KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGxpbnV4 L2FjcGkuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiA+ID4gKyNpbmNsdWRl IDxsaW51eC9wY2kuaD4KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gPiA+ ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiA+ID4gKyNpbmNsdWRlIDxkcm0vaW50ZWxfbHBl X2F1ZGlvLmg+Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKgo+ ID4gPiArbHBlX2F1ZGlvX3BsYXRkZXZfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikgewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRy bTsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiArCXN0cnVjdCByZXNvdXJjZSByc2NbMl0gPSB7fTsK PiA+ID4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0ZGV2Owo+ID4gPiArCXU2NCAqZG1h X21hc2s7Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3BkYXRhICpwZGF0YTsK PiA+ID4gKwo+ID4gPiArCWlmIChkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSA8IDApCj4gPiA+ICsJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4gPiArCj4gPiA+ICsJcGxhdGRldiA9IHBsYXRm b3JtX2RldmljZV9hbGxvYygiaGRtaS1scGUtYXVkaW8iLCAtMSk7Cj4gPiA+ICsJaWYgKCFwbGF0 ZGV2KSB7Cj4gPiA+ICsJCXJldCA9IC1FTk9NRU07Cj4gPiA+ICsJCURSTV9FUlJPUigiRmFpbGVk IHRvIGFsbG9jYXRlIExQRSBhdWRpbyBwbGF0Zm9ybQo+ID4gZGV2aWNlXG4iKTsKPiA+ID4gKwkJ Z290byBlcnI7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJLyogdG8gd29yay1hcm91bmQgY2hl Y2tfYWRkciBpbiBub21tdV9tYXBfc2coKSAqLwo+ID4gPiArCWRtYV9tYXNrID0ga21hbGxvYyhz aXplb2YoKnBsYXRkZXYtPmRldi5kbWFfbWFzayksCj4gPiBHRlBfS0VSTkVMKTsKPiA+ID4gKwlp ZiAoIWRtYV9tYXNrKSB7Cj4gPiA+ICsJCXJldCA9IC1FTk9NRU07Cj4gPiA+ICsJCURSTV9FUlJP UigiRmFpbGVkIHRvIGFsbG9jYXRlIGRtYV9tYXNrXG4iKTsKPiA+ID4gKwkJZ290byBlcnJfcHV0 X2RldjsKPiA+ID4gKwl9Cj4gPiA+ICsJKmRtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKTsKPiA+ ID4gKwlwbGF0ZGV2LT5kZXYuZG1hX21hc2sgPSBkbWFfbWFzazsKPiA+ID4gKwlwbGF0ZGV2LT5k ZXYuY29oZXJlbnRfZG1hX21hc2sgPSAqZG1hX21hc2s7Cj4gPiA+ICsKPiA+ID4gKwlyc2NbMF0u c3RhcnQgICAgPSByc2NbMF0uZW5kID0gZGV2X3ByaXYtPmxwZV9hdWRpby5pcnE7Cj4gPiA+ICsJ cnNjWzBdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9JUlE7Cj4gPiA+ICsJcnNjWzBdLm5hbWUgICAg ID0gImhkbWktbHBlLWF1ZGlvLWlycSI7Cj4gPiA+ICsKPiA+ID4gKwlyc2NbMV0uc3RhcnQgICAg PSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2LCAwKSArCj4gPiA+ICsJCUk5MTVfSERNSV9M UEVfQVVESU9fQkFTRTsKPiA+ID4gKwlyc2NbMV0uZW5kICAgICAgPSBwY2lfcmVzb3VyY2Vfc3Rh cnQoZGV2LT5wZGV2LCAwKSArCj4gPiA+ICsJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRSArCj4g PiBJOTE1X0hETUlfTFBFX0FVRElPX1NJWkUgLSAxOwo+ID4gPiArCXJzY1sxXS5mbGFncyAgICA9 IElPUkVTT1VSQ0VfTUVNOwo+ID4gPiArCXJzY1sxXS5uYW1lICAgICA9ICJoZG1pLWxwZS1hdWRp by1tbWlvIjsKPiA+ID4gKwo+ID4gPiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3Vy Y2VzKHBsYXRkZXYsIHJzYywgMik7Cj4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiArCQlEUk1fRVJS T1IoIkZhaWxlZCB0byBhZGQgcmVzb3VyY2UgZm9yIHBsYXRmb3JtIGRldmljZToKPiA+ICVkXG4i LAo+ID4gPiArCQkJcmV0KTsKPiA+ID4gKwkJZ290byBlcnJfcHV0X2RldjsKPiA+ID4gKwl9Cj4g PiA+ICsKPiA+ID4gKwlwZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKCpwZGF0YSksIEdGUF9LRVJORUwp Owo+ID4gPiArCj4gPiA+ICsJaWYgKHBkYXRhID09IE5VTEwpIHsKPiA+ID4gKwkJcmV0ID0gLUVO T01FTTsKPiA+ID4gKwkJZ290byBlcnJfcHV0X2RldjsKPiA+ID4gKwl9Cj4gPiA+ICsJcGxhdGRl di0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBwZGF0YTsKPiA+ID4gKwlzcGluX2xvY2tfaW5pdCgmcGRh dGEtPmxwZV9hdWRpb19zbG9jayk7Cj4gPiA+ICsKPiA+ID4gKwkvKiBmb3IgTFBFIGF1ZGlvIGRy aXZlcidzIHJ1bnRpbWUtUE0gKi8KPiA+ID4gKwlwbGF0ZGV2LT5kZXYucGFyZW50ID0gZGV2LT5k ZXY7Cj4gPiA+ICsJcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZChwbGF0ZGV2KTsKPiA+ID4gKwlp ZiAocmV0KSB7Cj4gPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCBMUEUgYXVkaW8gcGxh dGZvcm0gZGV2aWNlOgo+ID4gJWRcbiIsCj4gPiA+ICsJCQlyZXQpOwo+ID4gPiArCQlnb3RvIGVy cl9wdXRfZGV2Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldHVybiBwbGF0ZGV2Owo+ID4g PiArZXJyX3B1dF9kZXY6Cj4gPiA+ICsJcGxhdGZvcm1fZGV2aWNlX3B1dChwbGF0ZGV2KTsKPiA+ ID4gKwlrZnJlZShkbWFfbWFzayk7Cj4gPiA+ICtlcnI6Cj4gPiA+ICsJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgbHBlX2F1ZGlvX3BsYXRk ZXZfZGVzdHJveShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiArKmRldl9wcml2KSB7Cj4g PiA+ICsJaWYgKCFIQVNfTFBFX0FVRElPKGRldl9wcml2KSkKPiA+ID4gKwkJcmV0dXJuOwo+ID4g PiArCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRl dik7Cj4gPiA+ICsJa2ZyZWUoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2LT5kZXYuZG1hX21h c2spOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBscGVfYXVkaW9faXJxX3Vu bWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZC0+Y2hpcF9kYXRhOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiA+ID4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gPiAr CXUzMiB2YWwgPSAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gPiA+ICsJCUk5MTVfTFBF X1BJUEVfQl9JTlRFUlJVUFQgfAo+ID4gPiArCQlJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBUKTsK PiA+IAo+ID4gTm8gcGlwZSBDIG9uIHZsdi4KPiA+IAo+IAo+IE9LCj4gCj4gPiA+ICsKPiA+ID4g KwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiA+ ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIFZMVl9JRVIgaXMgYWxyZWFkeSBzZXQgaW4gdGhlIHZs dl9kaXNwbGF5X3Bvc3RpbnN0YWxsKCksCj4gPiA+ICsJICogd2Ugb25seSBjaGFuZ2UgVkxWX0lJ UiBhbmQgVkxWX0lNUgo+ID4gPiArCSAqLwo+ID4gPiArCWRldl9wcml2LT5pcnFfbWFzayAmPSB+ dmFsOwo+ID4gPiArCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsKPiA+ID4gKwlJOTE1X1dSSVRF KFZMVl9JSVIsIHZhbCk7Cj4gPiA+ICsJSTkxNV9XUklURShWTFZfSU1SLCBkZXZfcHJpdi0+aXJx X21hc2spOwo+ID4gPiArCVBPU1RJTkdfUkVBRChWTFZfSU1SKTsKPiA+ID4gKwo+ID4gPiArCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOyB9Cj4g PiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGxwZV9hdWRpb19pcnFfbWFzayhzdHJ1Y3QgaXJxX2Rh dGEgKmQpIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZC0+Y2hpcF9kYXRhOwo+ ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiA+ID4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ID4gPiArCXUzMiB2YWwgPSAoSTkxNV9M UEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gPiA+ICsJCUk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQg fAo+ID4gPiArCQlJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBUKTsKPiA+IAo+ID4gZGl0dG8KPiA+ IAo+IAo+IE9LCj4gCj4gPiA+ICsKPiA+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIFZMVl9J RVIgaXMgYWxyZWFkeSBzZXQgaW4gdGhlIHZsdl9kaXNwbGF5X3Bvc3RpbnN0YWxsKCksCj4gPiA+ ICsJICogd2Ugb25seSBjaGFuZ2UgVkxWX0lJUiBhbmQgVkxWX0lNUgo+ID4gPiArCSAqLwo+ID4g PiArCWRldl9wcml2LT5pcnFfbWFzayB8PSB2YWw7Cj4gPiA+ICsJSTkxNV9XUklURShWTFZfSU1S LCBkZXZfcHJpdi0+aXJxX21hc2spOwo+ID4gPiArCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsK PiA+ID4gKwlJOTE1X1dSSVRFKFZMVl9JSVIsIHZhbCk7Cj4gPiA+ICsJUE9TVElOR19SRUFEKFZM Vl9JSVIpOwo+ID4gPiArCj4gPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBpcnFmbGFncyk7IH0KPiA+ID4gKwo+ID4gPiArc3RhdGljIHN0cnVjdCBpcnFf Y2hpcCBscGVfYXVkaW9faXJxY2hpcCA9IHsKPiA+ID4gKwkubmFtZSA9ICJoZG1pX2xwZV9hdWRp b19pcnFjaGlwIiwKPiA+ID4gKwkuaXJxX21hc2sgPSBscGVfYXVkaW9faXJxX21hc2ssCj4gPiA+ ICsJLmlycV91bm1hc2sgPSBscGVfYXVkaW9faXJxX3VubWFzaywKPiA+ID4gK307Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyBpbnQgbHBlX2F1ZGlvX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikgewo+ID4gPiArCWludCBpcnEgPSBkZXZfcHJpdi0+bHBlX2F1ZGlvLmly cTsKPiA+ID4gKwo+ID4gPiArCVdBUk5fT04oIWludGVsX2lycXNfZW5hYmxlZChkZXZfcHJpdikp Owo+ID4gPiArCWlycV9zZXRfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSwKPiA+ID4gKwkJCQkm bHBlX2F1ZGlvX2lycWNoaXAsCj4gPiA+ICsJCQkJaGFuZGxlX3NpbXBsZV9pcnEsCj4gPiA+ICsJ CQkJImhkbWlfbHBlX2F1ZGlvX2lycV9oYW5kbGVyIik7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4g aXJxX3NldF9jaGlwX2RhdGEoaXJxLCAmZGV2X3ByaXYtPmRybSk7Cj4gPiAKPiA+IEp1c3QgcGFz cyBkZXZfcHJpdiBhcyB0aGUgY2hpcCBkYXRhLgo+ID4gCj4gCj4gT0sKPiAKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9scGVfYXVkaW9faXJxX2hhbmRsZXIoKSAt IGZvcndhcmRzIHRoZSBMUEUgYXVkaW8gaXJxCj4gPiA+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1 IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4gPiA+ICsgKgo+ID4gPiArICogdGhlIExQRSBBdWRp byBpcnEgaXMgZm9yd2FyZGVkIHRvIHRoZSBpcnEgaGFuZGxlciByZWdpc3RlcmVkIGJ5Cj4gPiA+ ICtMUEUgYXVkaW8KPiA+ID4gKyAqIGRyaXZlci4KPiA+ID4gKyAqLwo+ID4gPiArdm9pZCBpbnRl bF9scGVfYXVkaW9faXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KSB7Cj4gPiA+ICsJaW50IHJldDsKPiA+ID4gKwo+ID4gPiArCXJldCA9IGdlbmVyaWNfaGFuZGxl X2lycShkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSk7Cj4gPiA+ICsJaWYgKHJldCkKPiA+ID4gKwkJ RFJNX0VSUk9SX1JBVEVMSU1JVEVEKCJlcnJvciBoYW5kbGluZyBMUEUgYXVkaW8gaXJxOgo+ID4g JWRcbiIsCj4gPiA+ICsJCQkJcmV0KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ ICsgKiBpbnRlbF9scGVfYXVkaW9fZGV0ZWN0KCkgLSBjaGVjayAmIHNldHVwIGxwZSBhdWRpbyBp ZiBwcmVzZW50Cj4gPiA+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0 ZSBkYXRhCj4gPiA+ICsgKgo+ID4gPiArICogRGV0ZWN0IGlmIGxwZSBhdWRpbyBpcyBwcmVzZW50 Cj4gPiA+ICsgKgo+ID4gPiArICogUmV0dXJuOiB0cnVlIGlmIGxwZSBhdWRpbyBwcmVzZW50IGVs c2UgUmV0dXJuID0gZmFsc2UgICovIGJvb2wKPiA+ID4gK2ludGVsX2xwZV9hdWRpb19kZXRlY3Qo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KSB7Cj4gPiA+ICsJaW50IGxwZV9wcmVz ZW50ID0gZmFsc2U7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiA+IAo+ID4gQ291bGQgYXZvaWQgaW5kZW50 aW5nIHRoZSB3aG9sZSB0aGlnIGJ5IHJldmVyc2luZyB0aGlzIHRlc3QgYW5kIGRvaW5nIGFuIGVh cmx5Cj4gPiByZXR1cm4uCj4gPiAKPiAKPiBXaWxsIHByZWZlciB0aGUgZXhpc3RpbmcgbWV0aG9k Cj4gCj4gPiA+ICsJCXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdG9tX2hkYXVk aW9faWRzW10gPSB7Cj4gPiA+ICsJCQkvKiBCYXl0cmFpbCAqLwo+ID4gPiArCQkJe1BDSV9ERVZJ Q0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgwZjA0KX0sCj4gPiA+ICsJCQkvKiBCcmFzd2VsbCAq Lwo+ID4gPiArCQkJe1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgyMjg0KX0sCj4g PiA+ICsJCQl7fQo+ID4gPiArCQl9Owo+ID4gCj4gPiBJSVJDIEkgYXNrZWQgaWYgd2UgY291bGQg dXNlIGEgSERBIGNsYXNzIG1hdGNoIGluc3RlYWQuIEJ1dCBJIGZvcmdldCB3aGF0IHRoZQo+ID4g YW5zd2VyIHdhcy4gTm8gcHJlc3VtYWJseT8KPiA+IAo+IAo+IFRoZSBwcmV2aW91cyByZXBseSB3 YXMgIiB3ZSBhcmUgbm90IGF3YXJlIG9mIGFueSBzdWNoIGNsYXNzIHRoYXQgZXhpc3RzIGF0IHBy ZXNlbnQiCgpIbW0uIDB4MDQwMyB3b3VsZCBiZSBhdWRpbyBkZXZpY2UuIEkgZ3Vlc3Mgd2UgY2Fu J3QgcmVhbGx5IHVzZSB0aGF0CnVubGVzcyB3ZSBjb21iaW5lIGl0IHdpdGggdGhlIGRldmZuIChh c3N1bWluZyB0aGUgaGRhIGNvbnRyb2xsZXIgaXMKYWx3YXV5cyBkZXZpY2UgMy4gU28geWVhaCwg c3BlY2lmaWMgZGV2aWNlIElEcyBzZWVtIGJldHRlci4KCj4gCj4gPiA+ICsKPiA+ID4gKwkJaWYg KCFwY2lfZGV2X3ByZXNlbnQoYXRvbV9oZGF1ZGlvX2lkcykpIHsKPiA+ID4gKwkJCURSTV9JTkZP KCIlcyVzXG4iLCAiSERhdWRpbyBjb250cm9sbGVyIG5vdAo+ID4gZGV0ZWN0ZWQsIiwKPiA+ID4g KwkJCQkidXNpbmcgTFBFIGF1ZGlvIGluc3RlYWRcbiIpOwo+ID4gPiArCQkJbHBlX3ByZXNlbnQg PSB0cnVlOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCXJldHVybiBscGVfcHJlc2VudDsK PiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9scGVfYXVkaW9fc2V0 dXAoKSAtIHNldHVwIHRoZSBicmlkZ2UgYmV0d2VlbiBIRE1JIExQRSBBdWRpbwo+ID4gPiArICog ZHJpdmVyIGFuZCBpOTE1Cj4gPiA+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2Ug cHJpdmF0ZSBkYXRhCj4gPiA+ICsgKgo+ID4gPiArICogc2V0IHVwIHRoZSBtaW5pbXVtIHJlcXVp cmVkIHJlc291cmNlcyBmb3IgdGhlIGJyaWRnZTogaXJxIGNoaXAsCj4gPiA+ICsgKiBwbGF0Zm9y bSByZXNvdXJjZSBhbmQgcGxhdGZvcm0gZGV2aWNlLiBpOTE1IGRldmljZSBpcyBzZXQgYXMKPiA+ ID4gK3BhcmVudAo+ID4gPiArICogb2YgdGhlIG5ldyBwbGF0Zm9ybSBkZXZpY2UuCj4gPiA+ICsg Kgo+ID4gPiArICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwuIG5vbi16ZXJvIGlmIGFsbG9jYXRp b24vaW5pdGlhbGl6YXRpb24KPiA+ID4gK2ZhaWxzICAqLyBpbnQgaW50ZWxfbHBlX2F1ZGlvX3Nl dHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICsqZGV2X3ByaXYpIHsKPiA+ID4gKwlp bnQgcmV0Owo+ID4gPiArCj4gPiA+ICsJZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPSBpcnFfYWxs b2NfZGVzYygwKTsKPiA+ID4gKwlpZiAoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPCAwKSB7Cj4g PiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIElSUSBkZXNjOiAlZFxuIiwKPiA+ ID4gKwkJCWRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiA+ID4gKwkJcmV0ID0gZGV2X3ByaXYt PmxwZV9hdWRpby5pcnE7Cj4gPiA+ICsJCWdvdG8gZXJyOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4g PiArCURSTV9ERUJVRygiaXJxID0gJWRcbiIsIGRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiA+ ID4gKwo+ID4gPiArCXJldCA9IGxwZV9hdWRpb19pcnFfaW5pdChkZXZfcHJpdik7Cj4gPiA+ICsK PiA+ID4gKwlpZiAocmV0KSB7Cj4gPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxp emUgaXJxY2hpcCBmb3IgbHBlIGF1ZGlvOiAlZFxuIiwKPiA+ID4gKwkJCXJldCk7Cj4gPiA+ICsJ CWdvdG8gZXJyX2ZyZWVfaXJxOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWRldl9wcml2LT5s cGVfYXVkaW8ucGxhdGRldiA9IGxwZV9hdWRpb19wbGF0ZGV2X2NyZWF0ZShkZXZfcHJpdik7Cj4g PiA+ICsKPiA+ID4gKwlpZiAoSVNfRVJSKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldikpIHsK PiA+ID4gKwkJcmV0ID0gUFRSX0VSUihkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpOwo+ID4g PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbHBlIGF1ZGlvIHBsYXRmb3JtIGRldmlj ZToKPiA+ICVkXG4iLAo+ID4gPiArCQkJcmV0KTsKPiA+ID4gKwkJZ290byBlcnJfZnJlZV9pcnE7 Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICtlcnJfZnJlZV9pcnE6 Cj4gPiA+ICsJaXJxX2ZyZWVfZGVzYyhkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSk7Cj4gPiA+ICtl cnI6Cj4gPiA+ICsJZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPSAtMTsKPiA+ID4gKwlkZXZfcHJp di0+bHBlX2F1ZGlvLnBsYXRkZXYgPSBOVUxMOwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9 Cj4gPiA+ICsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9scGVfYXVkaW9faW5p dCgpIC0gZGV0ZWN0IGFuZCBzZXR1cCB0aGUgYnJpZGdlIGJldHdlZW4gSERNSQo+ID4gPiArTFBF IEF1ZGlvCj4gPiA+ICsgKiBkcml2ZXIgYW5kIGk5MTUKPiA+ID4gKyAqIEBkZXZfcHJpdjogdGhl IGk5MTUgZHJtIGRldmljZSBwcml2YXRlIGRhdGEKPiA+ID4gKyAqCj4gPiA+ICsgKiBSZXR1cm46 IDAgaWYgc3VjY2Vzc2Z1bC4gbm9uLXplcm8gaWYgZGV0ZWN0aW9uIG9yCj4gPiA+ICsgKiBsbG9j YXRpb24vaW5pdGlhbGl6YXRpb24gZmFpbHMKPiA+ID4gKyAqLwo+ID4gPiAraW50IGludGVsX2xw ZV9hdWRpb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikgewo+ID4gPiAr CWludCByZXQgPSAtRU5PREVWOwo+ID4gPiArCj4gPiA+ICsJaWYgKGludGVsX2xwZV9hdWRpb19k ZXRlY3QoZGV2X3ByaXYpKSB7Cj4gPiA+ICsJCXJldCA9IGludGVsX2xwZV9hdWRpb19zZXR1cChk ZXZfcHJpdik7Cj4gPiA+ICsJCWlmIChyZXQgPCAwKQo+ID4gPiArCQkJRFJNX0VSUk9SKCJmYWls ZWQgdG8gc2V0dXAgTFBFIEF1ZGlvIGJyaWRnZVxuIik7Cj4gPiA+ICsJfQo+ID4gPiArCXJldHVy biByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogaW50ZWxfbHBlX2F1 ZGlvX3RlYXJkb3duKCkgLSBkZXN0cm95IHRoZSBicmlkZ2UgYmV0d2VlbiBIRE1JIExQRQo+ID4g PiArICogYXVkaW8gZHJpdmVyIGFuZCBpOTE1Cj4gPiA+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1 IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4gPiA+ICsgKgo+ID4gPiArICogcmVsZWFzZSBhbGwg dGhlIHJlc291cmNlcyBmb3IgTFBFIGF1ZGlvIDwtPiBpOTE1IGJyaWRnZS4KPiA+ID4gKyAqLwo+ ID4gPiArdm9pZCBpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KSB7Cj4gPiA+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+ID4gKwlz dHJ1Y3QgaXJxX2Rlc2MgKmRlc2M7Cj4gPiA+ICsKPiA+ID4gKwlkZXNjID0gKGRldl9wcml2LT5s cGVfYXVkaW8uaXJxID49IDApID8KPiA+ID4gKwkJaXJxX3RvX2Rlc2MoZGV2X3ByaXYtPmxwZV9h dWRpby5pcnEpIDogTlVMTDsKPiA+IAo+ID4gV2h5IG5vdCBqdXN0ICJpZiAobHBlIG5vdCBpbml0 aWFsaXplZCkgcmV0dXJuOyIgPwo+ID4gCj4gCj4gTmVlZCB0byBwZXJmb3JtIGNsZWFuaW5nIGlu IHNwaXRlIG9mIGl0CgpXaHk/IFBhcnRpYWwgaW5pdGlhbGl6YXRpb24gZG9lc24ndCBzb3VuZHMg Z29vZC4KCj4gCj4gPiA+ICsKPiA+ID4gKwkvKioKPiA+ID4gKwkgKiBtYXNrIExQRSBhdWRpbyBp cnEgYmVmb3JlIGRlc3Ryb3lpbmcKPiA+ID4gKwkgKi8KPiA+ID4gKwlpZiAoZGVzYykKPiA+ID4g KwkJbHBlX2F1ZGlvX2lycV9tYXNrKCZkZXNjLT5pcnFfZGF0YSk7Cj4gPiAKPiA+IFRoaXMgc2Vl bXMgcmFjeS4gU2hvdWxkIHVucmVnaXN0ZXIgdGhlIHBsYXRkZXYgZmlyc3QgSSB0aGluaywKPiA+ IAo+IAo+IE9LCj4gCj4gPiA+ICsKPiA+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYt PmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gPiA+ICsKPiA+ID4gKwlscGVfYXVkaW9fcGxhdGRldl9k ZXN0cm95KGRldl9wcml2KTsKPiA+ID4gKwo+ID4gPiArCWlmIChkZXNjKQo+ID4gPiArCQlpcnFf ZnJlZV9kZXNjKGRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiA+ID4gKwo+ID4gPiArCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3MpOyB9Cj4gPiA+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pbnRlbF9scGVfYXVkaW8uaAo+ID4gPiBiL2luY2x1 ZGUvZHJtL2ludGVsX2xwZV9hdWRpby5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4Cj4gPiA+ IDAwMDAwMDAuLmE2NGM0NDkKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9pbmNsdWRl L2RybS9pbnRlbF9scGVfYXVkaW8uaAo+ID4gPiBAQCAtMCwwICsxLDQ1IEBACj4gPiA+ICsvKgo+ ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gKyAqCj4g PiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbgo+ID4gPiArb2J0YWluaW5nIGEKPiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPiA+ID4gKyJTb2Z0 d2FyZSIpLAo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPiA+ID4gK2xpbWl0YXRpb24KPiA+ID4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+ ID4gPiArc3VibGljZW5zZSwKPiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tCj4gPiA+ICt0aGUKPiA+ID4gKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6Cj4gPiA+ICsgKgo+ID4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+ID4gPiArdGhlIG5leHQK PiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucwo+ID4gPiArb2YgdGhlCj4gPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ ID4gKyAqCj4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkKPiA+IEtJTkQsCj4gPiA+ICtFWFBSRVNTIE9SCj4gPiA+ICsgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4g PiA+ICtNRVJDSEFOVEFCSUxJVFksCj4gPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4KPiA+IE5PIEVWRU5UCj4gPiA+ICtTSEFM TAo+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sCj4gPiBEQU1BR0VTCj4gPiA+ICtPUiBPVEhFUgo+ID4gPiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgo+ID4gT1RIRVJX SVNFLAo+ID4gPiArQVJJU0lORwo+ID4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRQo+ID4gT1IKPiA+ID4gK09USEVSIERFQUxJ TkdTCj4gPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiAr I2lmbmRlZiBfSU5URUxfTFBFX0FVRElPX0hfCj4gPiA+ICsjZGVmaW5lIF9JTlRFTF9MUEVfQVVE SU9fSF8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gPiA+ICsKPiA+ ID4gKyNkZWZpbmUgSERNSV9NQVhfRUxEX0JZVEVTCTEyOAo+ID4gPiArCj4gPiA+ICtzdHJ1Y3Qg aW50ZWxfaGRtaV9scGVfYXVkaW9fZWxkIHsKPiA+ID4gKwlpbnQgcG9ydF9pZDsKPiA+ID4gKwl1 bnNpZ25lZCBjaGFyIGVsZF9kYXRhW0hETUlfTUFYX0VMRF9CWVRFU107IH07Cj4gPiA+ICsKPiA+ ID4gK3N0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19wZGF0YSB7Cj4gPiA+ICsJYm9vbCBub3Rp ZnlfcGVuZGluZzsKPiA+ID4gKwlpbnQgdG1kc19jbG9ja19zcGVlZDsKPiA+ID4gKwlib29sIGhk bWlfY29ubmVjdGVkOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19lbGQgZWxk Owo+ID4gPiArCXZvaWQgKCpub3RpZnlfYXVkaW9fbHBlKSh2b2lkICphdWRpb19wdHIpOwo+ID4g PiArCXNwaW5sb2NrX3QgbHBlX2F1ZGlvX3Nsb2NrOwo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiAr I2VuZGlmIC8qIF9JOTE1X0xQRV9BVURJT19IXyAqLwo+ID4gPiAtLQo+ID4gPiAyLjkuMwo+ID4g Cj4gPiAtLQo+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiBJbnRlbCBPVEMKCi0tIApWaWxsZSBTeXJq w6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=