From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-we0-x235.google.com ([2a00:1450:400c:c03::235]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1XEvPK-00056j-8i for barebox@lists.infradead.org; Wed, 06 Aug 2014 07:13:12 +0000 Received: by mail-we0-f181.google.com with SMTP id k48so2125031wev.40 for ; Wed, 06 Aug 2014 00:12:47 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <1406899464-29144-1-git-send-email-poggi.raph@gmail.com> <1406899464-29144-2-git-send-email-poggi.raph@gmail.com> <2F914EFB-7A29-4025-8D54-080D28CF9FA8@jcrosoft.com> <39BF03AA-21A6-4950-8208-DF26590A4304@jcrosoft.com> From: =?UTF-8?Q?Rapha=C3=ABl_Poggi?= Date: Wed, 6 Aug 2014 09:12:07 +0200 Message-ID: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH 1/2] pinctrl: at91: add pinctrl driver To: Jean-Christophe PLAGNIOL-VILLARD , barebox@lists.infradead.org T2ssIGxldCdzIGRvIGl0IGxpa2UgdGhhdAoKQmVzdCByZWdhcmRzLApSYXBoYcOrbCBQb2dnaQoK MjAxNC0wOC0wNiA1OjQ4IEdNVCswMjowMCBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFS RAo8cGxhZ25pb2pAamNyb3NvZnQuY29tPjoKPgo+IE9uIEF1ZyA2LCAyMDE0LCBhdCAxMTo0NiBB TSwgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNv bT4gd3JvdGU6Cj4KPj4KPj4gT24gQXVnIDUsIDIwMTQsIGF0IDc6MzggUE0sIFJhcGhhw6tsIFBv Z2dpIDxyYXBoaW85OEBnbWFpbC5jb20+IHdyb3RlOgo+Pgo+Pj4KPj4+IE9rLCBzbyBJIGRyb3Ag bXkgcGF0Y2ggPyBPciB5b3VyIHZlcnNpb24gaXMgdmVyeSBzaW1pbGFyIG9mIG15IHBhdGNoCj4+ PiBhbmQgeW91IGNhbiByZXZpZXcgbWluZSB0byBpbXByb3ZlL2NsZWFuIGl0ID8KPj4KPj4gSeKA mXZlIGEgcGF0Y2ggc2VyaWVzIHRvIGhhdmUgZHQgb24gYXQ5MSwgbXkgcGF0Y2ggZm9yIHRoZSBw aW5jdHJsIGlzIG5vdCBmaW5pc2gKPj4KPgo+IHNvcnJ5IEkgbWVhbiBteSBwYXRjaCBzZXJpZXMg aXMgbm90IHlldCBmdWxseSBjbGVhbgo+Cj4+IGdpdmUgbWUgZmV3IGRheXMgdG8gc2VuZCBpdCBh bmQgd2Ugc2VlIGFmdGVyCj4+Cj4+IEJlc3QgUmVnYXJkcywKPj4gSi4KPj4+Cj4+PiBCZXN0IHJl Z2FyZHMsCj4+PiBSYXBoYcOrbCBQb2dnaQo+Pj4KPj4+IDIwMTQtMDgtMDUgMTI6MjYgR01UKzAy OjAwIEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJECj4+PiA8cGxhZ25pb2pAamNyb3Nv ZnQuY29tPjoKPj4+Pgo+Pj4+IE9uIEF1ZyA1LCAyMDE0LCBhdCAyOjM3IEFNLCBSYXBoYcOrbCBQ b2dnaSA8cmFwaGlvOThAZ21haWwuY29tPiB3cm90ZToKPj4+Pgo+Pj4+Pgo+Pj4+PiBJIGhhdmUg cGxhbm5lZCB0byBhZGQgZGV2aWNlIHRyZWUgc3VwcG9ydCBmb3IgdGhlIEFUOTEgcG9ydC4KPj4+ Pj4KPj4+Pj4gU28gSSBwb3J0IHRoZSBwaW5jdHJsIGRyaXZlciBmcm9tIGxpbnV4IHRvIGJhcmVi b3ggdG8gYmUgYWJsZSB0byB1c2UKPj4+Pj4gdGhlIHBpbmN0cmwgaW4gZGV2aWNlIHRyZWUsIGJ1 dCBtYXliZSBJIG1hZGUgYSBtaXN0YWtlIGFuZCB0aGVyZSBpcwo+Pj4+PiBhbm90aGVyIHNvbHV0 aW9uLgo+Pj4+Pgo+Pj4+Cj4+Pj4gSeKAmXZlIGEgdmVyc2lvbiBhbHJlYWR5IHRoYXQgSSBuZWVk IHRvIHVwZGF0ZSBhbmQgc2VuZAo+Pj4+Cj4+Pj4gQmVzdCBSZWdhcmRzLAo+Pj4+IEouCj4+Pj4+ IEJlc3QgUmVnYXJkcywKPj4+Pj4gUmFwaGHDq2wKPj4+Pj4KPj4+Pj4gMjAxNC0wOC0wNCAyMDoy NiBHTVQrMDI6MDAgSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQKPj4+Pj4gPHBsYWdu aW9qQGpjcm9zb2Z0LmNvbT46Cj4+Pj4+PiB3aHkgZG8gd2UgbmVlZCBpdCBvbiBiYXJlYm94Pwo+ Pj4+Pj4KPj4+Pj4+IHRoaXMgZHJpdmVyIHdhcyBkZXNpZ24gZm9yIGR0LW9ubHkgaW4gbGludXgK Pj4+Pj4+Cj4+Pj4+PiBCZXN0IFJlZ2FyZHMsCj4+Pj4+PiBKLgo+Pj4+Pj4gT24gQXVnIDEsIDIw MTQsIGF0IDk6MjQgUE0sIFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4gd3Jv dGU6Cj4+Pj4+Pgo+Pj4+Pj4+IFRoaXMgZHJpdmVyIGlzIGJhc2VkIG9uIG1hY2gtYXQ5MS9ncGlv LmMgYW5kIGxpbnV4IHBpbmN0cmwgZHJpdmVyLgo+Pj4+Pj4+IFRoZSBkcml2ZXIgY29udGFpbnMg dGhlIGdwaW8gYW5kIHBpbmN0cmwgcGFydHMgKGxpa2UgaW4gbGludXgpIGJlY2F1c2UgdGhlIHR3 byBwYXJ0cwo+Pj4+Pj4+IHNoYXJlIHNvbWUgc3RydWN0dXJlcyBhbmQgbG9naWNzLgo+Pj4+Pj4+ Cj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogUmFwaGHDq2wgUG9nZ2kgPHBvZ2dpLnJhcGhAZ21haWwu Y29tPgo+Pj4+Pj4+IC0tLQo+Pj4+Pj4+IGRyaXZlcnMvcGluY3RybC9LY29uZmlnICAgICAgICB8 ICAgIDYgKwo+Pj4+Pj4+IGRyaXZlcnMvcGluY3RybC9NYWtlZmlsZSAgICAgICB8ICAgIDEgKwo+ Pj4+Pj4+IGRyaXZlcnMvcGluY3RybC9waW5jdHJsLWF0OTEuYyB8ICA1MjkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+Pj4+IGRyaXZlcnMvcGluY3RybC9waW5j dHJsLWF0OTEuaCB8ICAxNDggKysrKysrKysrKysKPj4+Pj4+PiA0IGZpbGVzIGNoYW5nZWQsIDY4 NCBpbnNlcnRpb25zKCspCj4+Pj4+Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGluY3Ry bC9waW5jdHJsLWF0OTEuYwo+Pj4+Pj4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3BpbmN0 cmwvcGluY3RybC1hdDkxLmgKPj4+Pj4+Pgo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bp bmN0cmwvS2NvbmZpZyBiL2RyaXZlcnMvcGluY3RybC9LY29uZmlnCj4+Pj4+Pj4gaW5kZXggZGZm YWE0ZS4uY2U1NWM3YiAxMDA2NDQKPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL3BpbmN0cmwvS2NvbmZp Zwo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvcGluY3RybC9LY29uZmlnCj4+Pj4+Pj4gQEAgLTcsNiAr NywxMiBAQCBjb25maWcgUElOQ1RSTAo+Pj4+Pj4+ICAgICAgZnJvbSB0aGUgZGV2aWNldHJlZS4g TGVnYWN5IGRyaXZlcnMgaGVyZSBtYXkgbm90IG5lZWQgdGhpcyBjb3JlCj4+Pj4+Pj4gICAgICBz dXBwb3J0IGJ1dCBpbnN0ZWFkIHByb3ZpZGUgdGhlaXIgb3duIFNvQyBzcGVjaWZpYyBBUElzCj4+ Pj4+Pj4KPj4+Pj4+PiArY29uZmlnIFBJTkNUUkxfQVQ5MQo+Pj4+Pj4+ICsgICAgIHNlbGVjdCBQ SU5DVFJMCj4+Pj4+Pj4gKyAgICAgYm9vbAo+Pj4+Pj4+ICsgICAgIGhlbHAKPj4+Pj4+PiArICAg ICAgICAgVGhlIHBpbm11eCBjb250cm9sbGVyIGZvdW5kIG9uIEFUOTEgU29Dcy4KPj4+Pj4+PiAr Cj4+Pj4+Pj4gY29uZmlnIFBJTkNUUkxfSU1YX0lPTVVYX1YxCj4+Pj4+Pj4gICAgc2VsZWN0IFBJ TkNUUkwgaWYgT0ZERVZJQ0UKPj4+Pj4+PiAgICBib29sCj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGluY3RybC9NYWtlZmlsZSBiL2RyaXZlcnMvcGluY3RybC9NYWtlZmlsZQo+Pj4+Pj4+ IGluZGV4IDU2NmJhMTEuLjNlYTg2NDkgMTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9waW5j dHJsL01ha2VmaWxlCj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9waW5jdHJsL01ha2VmaWxlCj4+Pj4+ Pj4gQEAgLTEsNCArMSw1IEBACj4+Pj4+Pj4gb2JqLSQoQ09ORklHX1BJTkNUUkwpICs9IHBpbmN0 cmwubwo+Pj4+Pj4+ICtvYmotJChDT05GSUdfUElOQ1RSTF9BVDkxKSArPSBwaW5jdHJsLWF0OTEu bwo+Pj4+Pj4+IG9iai0kKENPTkZJR19QSU5DVFJMX0lNWF9JT01VWF9WMSkgKz0gaW14LWlvbXV4 LXYxLm8KPj4+Pj4+PiBvYmotJChDT05GSUdfUElOQ1RSTF9JTVhfSU9NVVhfVjIpICs9IGlteC1p b211eC12Mi5vCj4+Pj4+Pj4gb2JqLSQoQ09ORklHX1BJTkNUUkxfSU1YX0lPTVVYX1YzKSArPSBp bXgtaW9tdXgtdjMubwo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvcGluY3Ry bC1hdDkxLmMgYi9kcml2ZXJzL3BpbmN0cmwvcGluY3RybC1hdDkxLmMKPj4+Pj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+Pj4+Pj4+IGluZGV4IDAwMDAwMDAuLmE5MmE4OTgKPj4+Pj4+PiAtLS0g L2Rldi9udWxsCj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtYXQ5MS5jCj4+ Pj4+Pj4gQEAgLTAsMCArMSw1MjkgQEAKPj4+Pj4+PiArLyoKPj4+Pj4+PiArICogQ29weXJpZ2h0 IChDKSAyMDA1IEhQIExhYnMKPj4+Pj4+PiArICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgSmVh bi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KPj4+ Pj4+PiArICogQ29weXJpZ2h0IChDKSAyMDE0IFJhcGhhw6tsIFBvZ2dpCj4+Pj4+Pj4gKyAqCj4+ Pj4+Pj4gKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmli dXRlZCB0byB0aGlzCj4+Pj4+Pj4gKyAqIHByb2plY3QuCj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKPj4+Pj4+PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMKPj4+Pj4+PiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKPj4+Pj4+PiArICogdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4+Pj4+Pj4g KyAqCj4+Pj4+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+Pj4+Pj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+Pj4+Pj4+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Cj4+Pj4+Pj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Cj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+ICsKPj4+Pj4+PiArI2luY2x1ZGUgPGNv bW1vbi5oPgo+Pj4+Pj4+ICsjaW5jbHVkZSA8Y29tbWFuZC5oPgo+Pj4+Pj4+ICsjaW5jbHVkZSA8 Y29tcGxldGUuaD4KPj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+Pj4+Pj4+ICsjaW5j bHVkZSA8bGludXgvZXJyLmg+Cj4+Pj4+Pj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+Pj4+Pj4+ICsj aW5jbHVkZSA8aW8uaD4KPj4+Pj4+PiArI2luY2x1ZGUgPGdwaW8uaD4KPj4+Pj4+PiArI2luY2x1 ZGUgPGluaXQuaD4KPj4+Pj4+PiArI2luY2x1ZGUgPGRyaXZlci5oPgo+Pj4+Pj4+ICsjaW5jbHVk ZSA8Z2V0b3B0Lmg+Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsjaW5jbHVkZSA8bWFjaC9hdDkxX3Bpby5o Pgo+Pj4+Pj4+ICsKPj4+Pj4+PiArI2luY2x1ZGUgPHBpbmN0cmwuaD4KPj4+Pj4+PiArCj4+Pj4+ Pj4gKyNpbmNsdWRlICJwaW5jdHJsLWF0OTEuaCIKPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0cnVjdCBh dDkxX3BpbmN0cmwgewo+Pj4+Pj4+ICsgICAgc3RydWN0IHBpbmN0cmxfZGV2aWNlIHBjdGw7Cj4+ Pj4+Pj4gKyAgICBzdHJ1Y3QgYXQ5MV9waW5jdHJsX211eF9vcHMgICAgICAqb3BzOwo+Pj4+Pj4+ ICt9Owo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RydWN0IGF0OTFfZ3Bpb19jaGlwIHsKPj4+Pj4+PiAr ICAgICBzdHJ1Y3QgZ3Bpb19jaGlwICAgICAgICBjaGlwOwo+Pj4+Pj4+ICsgICAgIHZvaWQgX19p b21lbSAgICAgICAgICAgICpyZWdiYXNlOyAgICAgICAvKiBQSU8gYmFuayB2aXJ0dWFsIGFkZHJl c3MgKi8KPj4+Pj4+PiArICAgICBzdHJ1Y3QgYXQ5MV9waW5jdHJsX211eF9vcHMgKm9wczsgICAg ICAgLyogb3BzICovCj4+Pj4+Pj4gK307Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtlbnVtIGF0OTFfbXV4 IHsKPj4+Pj4+PiArICAgICBBVDkxX01VWF9HUElPID0gMCwKPj4+Pj4+PiArICAgICBBVDkxX01V WF9QRVJJUEhfQSA9IDEsCj4+Pj4+Pj4gKyAgICAgQVQ5MV9NVVhfUEVSSVBIX0IgPSAyLAo+Pj4+ Pj4+ICsgICAgIEFUOTFfTVVYX1BFUklQSF9DID0gMywKPj4+Pj4+PiArICAgICBBVDkxX01VWF9Q RVJJUEhfRCA9IDQsCj4+Pj4+Pj4gK307Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsjZGVmaW5lIE1BWF9H UElPX0JBTktTICAgICAgICAgICAgICAgNQo+Pj4+Pj4+ICsjZGVmaW5lIHRvX2F0OTFfcGluY3Ry bChjKSBjb250YWluZXJfb2YoYywgc3RydWN0IGF0OTFfcGluY3RybCwgcGN0bCk7Cj4+Pj4+Pj4g KyNkZWZpbmUgdG9fYXQ5MV9ncGlvX2NoaXAoYykgY29udGFpbmVyX29mKGMsIHN0cnVjdCBhdDkx X2dwaW9fY2hpcCwgY2hpcCkKPj4+Pj4+PiArCj4+Pj4+Pj4gKyNkZWZpbmUgUFVMTF9VUCAgICAg ICAgICgxIDw8IDApCj4+Pj4+Pj4gKyNkZWZpbmUgTVVMVElfRFJJVkUgICAgICgxIDw8IDEpCj4+ Pj4+Pj4gKyNkZWZpbmUgREVHTElUQ0ggICAgICAgICgxIDw8IDIpCj4+Pj4+Pj4gKyNkZWZpbmUg UFVMTF9ET1dOICAgICAgICgxIDw8IDMpCj4+Pj4+Pj4gKyNkZWZpbmUgRElTX1NDSE1JVCAgICAg ICgxIDw8IDQpCj4+Pj4+Pj4gKyNkZWZpbmUgREVCT1VOQ0UgICAgICAgICgxIDw8IDE2KQo+Pj4+ Pj4+ICsjZGVmaW5lIERFQk9VTkNFX1ZBTF9TSElGVCAgICAgIDE3Cj4+Pj4+Pj4gKyNkZWZpbmUg REVCT1VOQ0VfVkFMICAgICgweDNmZmYgPDwgREVCT1VOQ0VfVkFMX1NISUZUKQo+Pj4+Pj4+ICsK Pj4+Pj4+PiArc3RhdGljIGludCBncGlvX2JhbmtzID0gMDsKPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0 YXRpYyBzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAgZ3Bpb19jaGlwW01BWF9HUElPX0JBTktTXTsKPj4+ Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICpwaW5fdG9fY29udHJv bGxlcihzdHJ1Y3QgYXQ5MV9waW5jdHJsICppbmZvLCB1bnNpZ25lZCBwaW4pCj4+Pj4+Pj4gK3sK Pj4+Pj4+PiArICAgICBwaW4gLz0gTUFYX05CX0dQSU9fUEVSX0JBTks7Cj4+Pj4+Pj4gKyAgICAg aWYgKGxpa2VseShwaW4gPCBncGlvX2JhbmtzKSkKPj4+Pj4+PiArICAgICAgICAgICAgIHJldHVy biBncGlvX2NoaXBbcGluXS5yZWdiYXNlOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICByZXR1cm4g TlVMTDsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArLyoqCj4+Pj4+Pj4gKyAqIHN0cnVj dCBhdDkxX3BpbmN0cmxfbXV4X29wcyAtIGRlc2NyaWJlcyBhbiBBdDkxIG11eCBvcHMgZ3JvdXAK Pj4+Pj4+PiArICogb24gbmV3IElQIHdpdGggc3VwcG9ydCBmb3IgcGVyaXBoIEMgYW5kIEQgdGhl IHdheSB0byBtdXggaW4KPj4+Pj4+PiArICogcGVyaXBoIEEgYW5kIEIgaGFzIGNoYW5nZWQKPj4+ Pj4+PiArICogU28gcHJvdmlkZSB0aGUgcmlnaHQgY2FsbCBiYWNrCj4+Pj4+Pj4gKyAqIGlmIG5v dCBwcmVzZW50IG1lYW5zIHRoZSBJUCBkb2VzIG5vdCBzdXBwb3J0IGl0Cj4+Pj4+Pj4gKyAqIEBn ZXRfcGVyaXBoOiByZXR1cm4gdGhlIHBlcmlwaCBtb2RlIGNvbmZpZ3VyZWQKPj4+Pj4+PiArICog QG11eF9BX3BlcmlwaDogbXV4IGFzIHBlcmlwaCBBCj4+Pj4+Pj4gKyAqIEBtdXhfQl9wZXJpcGg6 IG11eCBhcyBwZXJpcGggQgo+Pj4+Pj4+ICsgKiBAbXV4X0NfcGVyaXBoOiBtdXggYXMgcGVyaXBo IEMKPj4+Pj4+PiArICogQG11eF9EX3BlcmlwaDogbXV4IGFzIHBlcmlwaCBECj4+Pj4+Pj4gKyAq IEBzZXRfZGVnbGl0Y2g6IGVuYWJsZS9kaXNhYmxlIGRlZ2xpdGNoCj4+Pj4+Pj4gKyAqIEBzZXRf ZGVib3VuY2U6IGVuYWJsZS9kaXNhYmxlIGRlYm91bmNlCj4+Pj4+Pj4gKyAqIEBzZXRfcHVsbGRv d246IGVuYWJsZS9kaXNhYmxlIHB1bGxkb3duCj4+Pj4+Pj4gKyAqIEBkaXNhYmxlX3NjaG1pdHRf dHJpZzogZGlzYWJsZSBzY2htaXR0IHRyaWdnZXIKPj4+Pj4+PiArICovCj4+Pj4+Pj4gK3N0cnVj dCBhdDkxX3BpbmN0cmxfbXV4X29wcyB7Cj4+Pj4+Pj4gKyAgICAgZW51bSBhdDkxX211eCAoKmdl dF9wZXJpcGgpKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrKTsKPj4+Pj4+PiArICAg ICB2b2lkICgqbXV4X0FfcGVyaXBoKSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzayk7 Cj4+Pj4+Pj4gKyAgICAgdm9pZCAoKm11eF9CX3BlcmlwaCkodm9pZCBfX2lvbWVtICpwaW8sIHVu c2lnbmVkIG1hc2spOwo+Pj4+Pj4+ICsgICAgIHZvaWQgKCptdXhfQ19wZXJpcGgpKHZvaWQgX19p b21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrKTsKPj4+Pj4+PiArICAgICB2b2lkICgqbXV4X0RfcGVy aXBoKSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzayk7Cj4+Pj4+Pj4gKyAgICAgYm9v bCAoKmdldF9kZWdsaXRjaCkodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIHBpbik7Cj4+Pj4+ Pj4gKyAgICAgdm9pZCAoKnNldF9kZWdsaXRjaCkodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVk IG1hc2ssIGJvb2wgaW5fb24pOwo+Pj4+Pj4+ICsgICAgIGJvb2wgKCpnZXRfZGVib3VuY2UpKHZv aWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBwaW4sIHUzMiAqZGl2KTsKPj4+Pj4+PiArICAgICB2 b2lkICgqc2V0X2RlYm91bmNlKSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaywgYm9v bCBpbl9vbiwgdTMyIGRpdik7Cj4+Pj4+Pj4gKyAgICAgYm9vbCAoKmdldF9wdWxsZG93bikodm9p ZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIHBpbik7Cj4+Pj4+Pj4gKyAgICAgdm9pZCAoKnNldF9w dWxsZG93bikodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2ssIGJvb2wgaW5fb24pOwo+ Pj4+Pj4+ICsgICAgIGJvb2wgKCpnZXRfc2NobWl0dF90cmlnKSh2b2lkIF9faW9tZW0gKnBpbywg dW5zaWduZWQgcGluKTsKPj4+Pj4+PiArICAgICB2b2lkICgqZGlzYWJsZV9zY2htaXR0X3RyaWcp KHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrKTsKPj4+Pj4+PiArfTsKPj4+Pj4+PiAr Cj4+Pj4+Pj4gK3N0YXRpYyBlbnVtIGF0OTFfbXV4IGF0OTFfbXV4X3BpbzNfZ2V0X3BlcmlwaCh2 b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAg IHVuc2lnbmVkIHNlbGVjdDsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgaWYgKF9fcmF3X3JlYWRs KHBpbyArIFBJT19QU1IpICYgbWFzaykKPj4+Pj4+PiArICAgICAgICAgICAgIHJldHVybiBBVDkx X01VWF9HUElPOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBzZWxlY3QgPSAhIShfX3Jhd19yZWFk bChwaW8gKyBQSU9fQUJDRFNSMSkgJiBtYXNrKTsKPj4+Pj4+PiArICAgICBzZWxlY3QgfD0gKCEh KF9fcmF3X3JlYWRsKHBpbyArIFBJT19BQkNEU1IyKSAmIG1hc2spIDw8IDEpOwo+Pj4+Pj4+ICsK Pj4+Pj4+PiArICAgICByZXR1cm4gc2VsZWN0ICsgMTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+ Pj4+PiArc3RhdGljIGVudW0gYXQ5MV9tdXggYXQ5MV9tdXhfZ2V0X3BlcmlwaCh2b2lkIF9faW9t ZW0gKnBpbywgdW5zaWduZWQgbWFzaykKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIHVuc2lnbmVk IHNlbGVjdDsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgaWYgKF9fcmF3X3JlYWRsKHBpbyArIFBJ T19QU1IpICYgbWFzaykKPj4+Pj4+PiArICAgICAgICAgICAgIHJldHVybiBBVDkxX01VWF9HUElP Owo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBzZWxlY3QgPSBfX3Jhd19yZWFkbChwaW8gKyBQSU9f QUJTUikgJiBtYXNrOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICByZXR1cm4gc2VsZWN0ICsgMTsK Pj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIGJvb2wgYXQ5MV9tdXhfZ2V0X2Rl Z2xpdGNoKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBwaW4pCj4+Pj4+Pj4gK3sKPj4+Pj4+ PiArICAgICByZXR1cm4gKF9fcmF3X3JlYWRsKHBpbyArIFBJT19JRlNSKSA+PiBwaW4pICYgMHgx Owo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgYm9vbCBhdDkxX211eF9waW8z X2dldF9kZWJvdW5jZSh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgcGluLCB1MzIgKmRpdikK Pj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgICpkaXYgPSBfX3Jhd19yZWFkbChwaW8gKyBQSU9fU0NE Uik7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIHJldHVybiAoX19yYXdfcmVhZGwocGlvICsgUElP X0lGU0NTUikgPj4gcGluKSAmIDB4MTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3Rh dGljIGJvb2wgYXQ5MV9tdXhfcGlvM19nZXRfcHVsbGRvd24odm9pZCBfX2lvbWVtICpwaW8sIHVu c2lnbmVkIHBpbikKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIHJldHVybiAoX19yYXdfcmVhZGwo cGlvICsgUElPX1BQRFNSKSA+PiBwaW4pICYgMHgxOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICtzdGF0aWMgYm9vbCBhdDkxX211eF9waW8zX2dldF9zY2htaXR0X3RyaWcodm9pZCBfX2lv bWVtICpwaW8sIHVuc2lnbmVkIHBpbikKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIHJldHVybiAo X19yYXdfcmVhZGwocGlvICsgUElPX1NDSE1JVFQpID4+IHBpbikgJiAweDE7Cj4+Pj4+Pj4gK30K Pj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgYXQ5MV9waW5jdHJsX211eF9vcHMgYXQ5 MXJtOTIwMF9vcHMgPSB7Cj4+Pj4+Pj4gKyAgICAgLmdldF9wZXJpcGggICAgID0gYXQ5MV9tdXhf Z2V0X3BlcmlwaCwKPj4+Pj4+PiArICAgICAubXV4X0FfcGVyaXBoICAgPSBhdDkxX211eF9zZXRf QV9wZXJpcGgsCj4+Pj4+Pj4gKyAgICAgLm11eF9CX3BlcmlwaCAgID0gYXQ5MV9tdXhfc2V0X0Jf cGVyaXBoLAo+Pj4+Pj4+ICsgICAgIC5nZXRfZGVnbGl0Y2ggICA9IGF0OTFfbXV4X2dldF9kZWds aXRjaCwKPj4+Pj4+PiArICAgICAuc2V0X2RlZ2xpdGNoICAgPSBhdDkxX211eF9zZXRfZGVnbGl0 Y2gsCj4+Pj4+Pj4gK307Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgc3RydWN0IGF0OTFfcGlu Y3RybF9tdXhfb3BzIGF0OTFzYW05eDVfb3BzID0gewo+Pj4+Pj4+ICsgICAgIC5nZXRfcGVyaXBo ICAgICA9IGF0OTFfbXV4X3BpbzNfZ2V0X3BlcmlwaCwKPj4+Pj4+PiArICAgICAubXV4X0FfcGVy aXBoICAgPSBhdDkxX211eF9waW8zX3NldF9BX3BlcmlwaCwKPj4+Pj4+PiArICAgICAubXV4X0Jf cGVyaXBoICAgPSBhdDkxX211eF9waW8zX3NldF9CX3BlcmlwaCwKPj4+Pj4+PiArICAgICAubXV4 X0NfcGVyaXBoICAgPSBhdDkxX211eF9waW8zX3NldF9DX3BlcmlwaCwKPj4+Pj4+PiArICAgICAu bXV4X0RfcGVyaXBoICAgPSBhdDkxX211eF9waW8zX3NldF9EX3BlcmlwaCwKPj4+Pj4+PiArICAg ICAuZ2V0X2RlZ2xpdGNoICAgPSBhdDkxX211eF9nZXRfZGVnbGl0Y2gsCj4+Pj4+Pj4gKyAgICAg LnNldF9kZWdsaXRjaCAgID0gYXQ5MV9tdXhfcGlvM19zZXRfZGVnbGl0Y2gsCj4+Pj4+Pj4gKyAg ICAgLmdldF9kZWJvdW5jZSAgID0gYXQ5MV9tdXhfcGlvM19nZXRfZGVib3VuY2UsCj4+Pj4+Pj4g KyAgICAgLnNldF9kZWJvdW5jZSAgID0gYXQ5MV9tdXhfcGlvM19zZXRfZGVib3VuY2UsCj4+Pj4+ Pj4gKyAgICAgLmdldF9wdWxsZG93biAgID0gYXQ5MV9tdXhfcGlvM19nZXRfcHVsbGRvd24sCj4+ Pj4+Pj4gKyAgICAgLnNldF9wdWxsZG93biAgID0gYXQ5MV9tdXhfcGlvM19zZXRfcHVsbGRvd24s Cj4+Pj4+Pj4gKyAgICAgLmdldF9zY2htaXR0X3RyaWcgPSBhdDkxX211eF9waW8zX2dldF9zY2ht aXR0X3RyaWcsCj4+Pj4+Pj4gKyAgICAgLmRpc2FibGVfc2NobWl0dF90cmlnID0gYXQ5MV9tdXhf cGlvM19kaXNhYmxlX3NjaG1pdHRfdHJpZywKPj4+Pj4+PiArfTsKPj4+Pj4+PiArCj4+Pj4+Pj4g K3N0YXRpYyBpbnQgYXQ5MV9tdXhfcGluKHN0cnVjdCBhdDkxX3BpbmN0cmwgKmluZm8sIHVuc2ln bmVkIHBpbiwgZW51bSBhdDkxX211eCBtdXgsIGludCB1c2VfcHVsbHVwKQo+Pj4+Pj4+ICt7Cj4+ Pj4+Pj4gKyAgICAgdm9pZCBfX2lvbWVtICAgICpwaW8gPSBwaW5fdG9fY29udHJvbGxlcihpbmZv LCBwaW4pOwo+Pj4+Pj4+ICsgICAgIHVuc2lnbmVkIG1hc2sgPSBwaW5fdG9fbWFzayhwaW4pOwo+ Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBpZiAoIWluZm8pCj4+Pj4+Pj4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgaWYgKCFwaW8pCj4+Pj4+Pj4g KyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgYXQ5 MV9tdXhfZGlzYWJsZV9pbnRlcnJ1cHQocGlvLCBtYXNrKTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAg ICAgc3dpdGNoKG11eCkgewo+Pj4+Pj4+ICsgICAgIGNhc2UgQVQ5MV9NVVhfR1BJTzoKPj4+Pj4+ PiArICAgICAgICAgICAgIGF0OTFfbXV4X2dwaW9fZW5hYmxlKHBpbywgbWFzayk7Cj4+Pj4+Pj4g KyAgICAgICAgICAgICBicmVhazsKPj4+Pj4+PiArICAgICBjYXNlIEFUOTFfTVVYX1BFUklQSF9B Ogo+Pj4+Pj4+ICsgICAgICAgICAgICAgaW5mby0+b3BzLT5tdXhfQV9wZXJpcGgocGlvLCBtYXNr KTsKPj4+Pj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+Pj4+Pj4+ICsgICAgIGNhc2UgQVQ5MV9N VVhfUEVSSVBIX0I6Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBpbmZvLT5vcHMtPm11eF9CX3Blcmlw aChwaW8sIG1hc2spOwo+Pj4+Pj4+ICsgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4+Pj4gKyAgICAg Y2FzZSBBVDkxX01VWF9QRVJJUEhfQzoKPj4+Pj4+PiArICAgICAgICAgICAgIGlmICghaW5mby0+ b3BzLT5tdXhfQ19wZXJpcGgpCj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOwo+Pj4+Pj4+ICsgICAgICAgICAgICAgaW5mby0+b3BzLT5tdXhfQ19wZXJpcGgocGlv LCBtYXNrKTsKPj4+Pj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+Pj4+Pj4+ICsgICAgIGNhc2Ug QVQ5MV9NVVhfUEVSSVBIX0Q6Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBpZiAoIWluZm8tPm9wcy0+ bXV4X0RfcGVyaXBoKQo+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPj4+Pj4+PiArICAgICAgICAgICAgIGluZm8tPm9wcy0+bXV4X0RfcGVyaXBoKHBpbywgbWFz ayk7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBicmVhazsKPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4g KyAgICAgaWYgKG11eCkKPj4+Pj4+PiArICAgICAgICAgICAgIGF0OTFfbXV4X2dwaW9fZGlzYWJs ZShwaW8sIG1hc2spOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBpZiAodXNlX3B1bGx1cCA+PSAw KQo+Pj4+Pj4+ICsgICAgICAgICAgICAgYXQ5MV9tdXhfc2V0X3B1bGx1cChwaW8sIG1hc2ssIHVz ZV9wdWxsdXApOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICByZXR1cm4gMDsKPj4+Pj4+PiArfQo+ Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgYXQ5MV9waW5jdHJs X2R0X2lkc1tdID0gewo+Pj4+Pj4+ICsgICAgIHsKPj4+Pj4+PiArICAgICAgICAgICAgIC5jb21w YXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtcGluY3RybCIsCj4+Pj4+Pj4gKyAgICAgICAgICAg ICAuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSZhdDkxcm05MjAwX29wcywKPj4+Pj4+PiArICAgICB9 LCB7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOXg1 LXBpbmN0cmwiLAo+Pj4+Pj4+ICsgICAgICAgICAgICAgLmRhdGEgPSAodW5zaWduZWQgbG9uZykm YXQ5MXNhbTl4NV9vcHMsCj4+Pj4+Pj4gKyAgICAgfSwgewo+Pj4+Pj4+ICsgICAgICAgICAgICAg Lyogc2VudGluZWwgKi8KPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4gK307Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICtzdGF0aWMgc3RydWN0IGF0OTFfcGluY3RybF9tdXhfb3BzICphdDkxX3BpbmN0cmxfZ2V0 X2RyaXZlcl9kYXRhKHN0cnVjdCBkZXZpY2VfZCAqZGV2KQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAg ICBzdHJ1Y3QgYXQ5MV9waW5jdHJsX211eF9vcHMgKm9wc19kYXRhID0gTlVMTDsKPj4+Pj4+PiAr ICAgIGludCByYzsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICBpZiAoZGV2LT5kZXZpY2Vfbm9kZSkg ewo+Pj4+Pj4+ICsgICAgICAgICBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKPj4+ Pj4+PiArICAgICAgICAgbWF0Y2ggPSBvZl9tYXRjaF9ub2RlKGF0OTFfcGluY3RybF9kdF9pZHMs IGRldi0+ZGV2aWNlX25vZGUpOwo+Pj4+Pj4+ICsgICAgICAgICBpZiAoIW1hdGNoKQo+Pj4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICBvcHNfZGF0YSA9IE5VTEw7Cj4+Pj4+Pj4gKyAgICAgICAg IGVsc2UKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgb3BzX2RhdGEgPSAoc3RydWN0IGF0 OTFfcGluY3RybF9tdXhfb3BzICopbWF0Y2gtPmRhdGE7Cj4+Pj4+Pj4gKyAgICB9Cj4+Pj4+Pj4g KyAgICBlbHNlIHsKPj4+Pj4+PiArICAgICAgICAgcmMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2LCAo dW5zaWduZWQgbG9uZyAqKSZvcHNfZGF0YSk7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBpZiAocmMp Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBvcHNfZGF0YSA9IE5VTEw7Cj4+Pj4+Pj4gKyAgICB9Cj4+ Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgcmV0dXJuIG9wc19kYXRhOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4g Kwo+Pj4+Pj4+ICtzdGF0aWMgaW50IGF0OTFfcGluY3RybF9zZXRfY29uZihzdHJ1Y3QgYXQ5MV9w aW5jdHJsICppbmZvLCB1bnNpZ25lZCBpbnQgcGluX251bSwgdW5zaWduZWQgaW50IG11eCwgdW5z aWduZWQgaW50IGNvbmYpCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICB1bnNpZ25lZCBpbnQgbWFz azsKPj4+Pj4+PiArICAgICB2b2lkIF9faW9tZW0gKnBpbzsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAg ICAgcGlvID0gcGluX3RvX2NvbnRyb2xsZXIoaW5mbywgcGluX251bSk7Cj4+Pj4+Pj4gKyAgICAg bWFzayA9IHBpbl90b19tYXNrKHBpbl9udW0pOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBpZiAo Y29uZiAmIFBVTExfVVAgJiYgY29uZiAmIFBVTExfRE9XTikKPj4+Pj4+PiArICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBhdDkxX211eF9zZXRfcHVs bHVwKHBpbywgbWFzaywgY29uZiAmIFBVTExfVVApOwo+Pj4+Pj4+ICsgICAgIGF0OTFfbXV4X3Nl dF9tdWx0aWRyaXZlKHBpbywgbWFzaywgY29uZiAmIE1VTFRJX0RSSVZFKTsKPj4+Pj4+PiArICAg ICBpZiAoaW5mby0+b3BzLT5zZXRfZGVnbGl0Y2gpCj4+Pj4+Pj4gKyAgICAgICAgICAgICBpbmZv LT5vcHMtPnNldF9kZWdsaXRjaChwaW8sIG1hc2ssIGNvbmYgJiBERUdMSVRDSCk7Cj4+Pj4+Pj4g KyAgICAgaWYgKGluZm8tPm9wcy0+c2V0X2RlYm91bmNlKQo+Pj4+Pj4+ICsgICAgICAgICAgICAg aW5mby0+b3BzLT5zZXRfZGVib3VuY2UocGlvLCBtYXNrLCBjb25mICYgREVCT1VOQ0UsCj4+Pj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIChjb25mICYgREVCT1VOQ0VfVkFMKSA+PiBERUJPVU5D RV9WQUxfU0hJRlQpOwo+Pj4+Pj4+ICsgICAgIGlmIChpbmZvLT5vcHMtPnNldF9wdWxsZG93bikK Pj4+Pj4+PiArICAgICAgICAgICAgIGluZm8tPm9wcy0+c2V0X3B1bGxkb3duKHBpbywgbWFzaywg Y29uZiAmIFBVTExfRE9XTik7Cj4+Pj4+Pj4gKyAgICAgaWYgKGluZm8tPm9wcy0+ZGlzYWJsZV9z Y2htaXR0X3RyaWcgJiYgY29uZiAmIERJU19TQ0hNSVQpCj4+Pj4+Pj4gKyAgICAgICAgICAgICBp bmZvLT5vcHMtPmRpc2FibGVfc2NobWl0dF90cmlnKHBpbywgbWFzayk7Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICsgICAgIHJldHVybiAwOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMg aW50IGF0OTFfcGluY3RybF9zZXRfc3RhdGUoc3RydWN0IHBpbmN0cmxfZGV2aWNlICpwZGV2LCBz dHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgc3RydWN0IGF0 OTFfcGluY3RybCAqaW5mbzsKPj4+Pj4+PiArICAgICBjb25zdCBfX2JlMzIgKmxpc3Q7Cj4+Pj4+ Pj4gKyAgICAgaW50IGksIHNpemU7Cj4+Pj4+Pj4gKyAgICAgaW50IHJldCA9IDA7Cj4+Pj4+Pj4g KyAgICAgaW50IGJhbmtfbnVtLCBwaW5fbnVtLCBtdXgsIGNvbmY7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ ICsgICAgIGluZm8gPSB0b19hdDkxX3BpbmN0cmwocGRldik7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsg ICAgIGxpc3QgPSBvZl9nZXRfcHJvcGVydHkobnAsICJhdG1lbCxwaW5zIiwgJnNpemUpOwo+Pj4+ Pj4+ICsgICAgIHNpemUgLz0gc2l6ZW9mKCpsaXN0KTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAg aWYgKCFzaXplIHx8IHNpemUgJSA0KSB7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKHBk ZXYtPmRldiwgIndyb25nIHBpbnMgbnVtYmVyIG9yIHBpbnMgYW5kIGNvbmZpZ3Mgc2hvdWxkIGJl IGJ5IDRcbiIpOwo+Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4+Pj4g KyAgICAgfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSAr PSA0KSB7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBiYW5rX251bSA9IGJlMzJfdG9fY3B1KCpsaXN0 KyspOwo+Pj4+Pj4+ICsgICAgICAgICAgICAgcGluX251bSA9IGJlMzJfdG9fY3B1KCpsaXN0Kysp Owo+Pj4+Pj4+ICsgICAgICAgICAgICAgbXV4ID0gYmUzMl90b19jcHUoKmxpc3QrKyk7Cj4+Pj4+ Pj4gKyAgICAgICAgICAgICBjb25mID0gYmUzMl90b19jcHUoKmxpc3QrKyk7Cj4+Pj4+Pj4gKwo+ Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0ID0gYXQ5MV9tdXhfcGluKGluZm8sIHBpbl9udW0sIG11 eCwgY29uZiAmIFBVTExfVVApOwo+Pj4+Pj4+ICsgICAgICAgICAgICAgaWYgKHJldCkgewo+Pj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKHBkZXYtPmRldiwgImZhaWxlZCB0byBt dXggcGluICVkXG4iLCBwaW5fbnVtKTsKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPj4+Pj4+PiArICAgICAgICAgICAgIH0KPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAg ICAgICAgICByZXQgPSBhdDkxX3BpbmN0cmxfc2V0X2NvbmYoaW5mbywgcGluX251bSwgbXV4LCBj b25mKTsKPj4+Pj4+PiArICAgICAgICAgICAgIGlmIChyZXQpIHsKPj4+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgZGV2X2VycihwZGV2LT5kZXYsICJmYWlsZWQgdG8gc2V0IGNvbmYgb24gcGlu ICVkXG4iLCBwaW5fbnVtKTsKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPj4+Pj4+PiArICAgICAgICAgICAgIH0KPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICsgICAgIHJldHVybiByZXQ7Cj4+Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRp YyBzdHJ1Y3QgcGluY3RybF9vcHMgYXQ5MV9waW5jdHJsX29wcyA9IHsKPj4+Pj4+PiArICAgICAu c2V0X3N0YXRlID0gYXQ5MV9waW5jdHJsX3NldF9zdGF0ZSwKPj4+Pj4+PiArfTsKPj4+Pj4+PiAr Cj4+Pj4+Pj4gK3N0YXRpYyBpbnQgYXQ5MV9waW5jdHJsX3Byb2JlKHN0cnVjdCBkZXZpY2VfZCAq ZGV2KQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgc3RydWN0IGF0OTFfcGluY3RybCAqaW5mbzsK Pj4+Pj4+PiArICAgICBpbnQgcmV0Owo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBpbmZvID0geHph bGxvYyhzaXplb2Yoc3RydWN0IGF0OTFfcGluY3RybCkpOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAg ICBpbmZvLT5vcHMgPSBhdDkxX3BpbmN0cmxfZ2V0X2RyaXZlcl9kYXRhKGRldik7Cj4+Pj4+Pj4g KyAgICAgaWYgKCFpbmZvLT5vcHMpIHsKPj4+Pj4+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2 LCAiZmFpbGVkIHRvIHJldHJpZXZlIGRyaXZlciBkYXRhXG4iKTsKPj4+Pj4+PiArICAgICAgICAg ICAgIHJldHVybiAtRU5PREVWOwo+Pj4+Pj4+ICsgICAgIH0KPj4+Pj4+PiArCj4+Pj4+Pj4gKyAg ICAgaW5mby0+cGN0bC5kZXYgPSBkZXY7Cj4+Pj4+Pj4gKyAgICAgaW5mby0+cGN0bC5vcHMgPSAm YXQ5MV9waW5jdHJsX29wczsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgcmV0ID0gcGluY3RybF9y ZWdpc3RlcigmaW5mby0+cGN0bCk7Cj4+Pj4+Pj4gKyAgICAgaWYgKHJldCkKPj4+Pj4+PiArICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIGRldl9pbmZvKGRl diwgIkFUOTEgcGluY3RybCByZWdpc3RyZWRcbiIpOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBy ZXR1cm4gMDsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2VfaWQgYXQ5MV9waW5jdHJsX2lkc1tdID0gewo+Pj4+Pj4+ICsgICAgIHsKPj4+ Pj4+PiArICAgICAgICAgICAgIC5uYW1lID0gImF0OTFybTkyMDAtcGluY3RybCIsCj4+Pj4+Pj4g KyAgICAgICAgICAgICAuZHJpdmVyX2RhdGEgPSAodW5zaWduZWQgbG9uZykmYXQ5MXJtOTIwMF9v cHMsCj4+Pj4+Pj4gKyAgICAgfSwgewo+Pj4+Pj4+ICsgICAgICAgICAgICAgLm5hbWUgPSAiYXQ5 MXNhbTl4NS1waW5jdHJsIiwKPj4+Pj4+PiArICAgICAgICAgICAgIC5kcml2ZXJfZGF0YSA9ICh1 bnNpZ25lZCBsb25nKSZhdDkxc2FtOXg1X29wcywKPj4+Pj4+PiArICAgICB9LCB7Cj4+Pj4+Pj4g KyAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwo+Pj4+Pj4+ICsgICAgIH0sCj4+Pj4+Pj4gK307 Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgc3RydWN0IGRyaXZlcl9kIGF0OTFfcGluY3RybF9k cml2ZXIgPSB7Cj4+Pj4+Pj4gKyAgICAgLm5hbWUgPSAicGluY3RybC1hdDkxIiwKPj4+Pj4+PiAr ICAgICAucHJvYmUgPSBhdDkxX3BpbmN0cmxfcHJvYmUsCj4+Pj4+Pj4gKyAgICAgLmlkX3RhYmxl ID0gYXQ5MV9waW5jdHJsX2lkcywKPj4+Pj4+PiArICAgICAub2ZfY29tcGF0aWJsZSA9IERSVl9P Rl9DT01QQVQoYXQ5MV9waW5jdHJsX2R0X2lkcyksCj4+Pj4+Pj4gK307Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICtzdGF0aWMgaW50IGF0OTFfcGluY3RybF9pbml0KHZvaWQpCj4+Pj4+Pj4gK3sKPj4+Pj4+ PiArICAgICByZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZhdDkxX3BpbmN0cmxfZHJp dmVyKTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICtjb3JlZGV2aWNlX2luaXRjYWxsKGF0OTFfcGluY3Ry bF9pbml0KTsKPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbnQgYXQ5MV9ncGlvX2dldChzdHJ1 Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBvZmZzZXQpCj4+Pj4+Pj4gK3sKPj4+Pj4+PiAr ICAgICBzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAgKmF0OTFfZ3BpbyA9IHRvX2F0OTFfZ3Bpb19jaGlw KGNoaXApOwo+Pj4+Pj4+ICsgICAgIHZvaWQgX19pb21lbSAqcGlvID0gYXQ5MV9ncGlvLT5yZWdi YXNlOwo+Pj4+Pj4+ICsgICAgIHVuc2lnbmVkIG1hc2sgPSAxIDw8IG9mZnNldDsKPj4+Pj4+PiAr Cj4+Pj4+Pj4gKyAgICAgcmV0dXJuIGF0OTFfbXV4X2dwaW9fZ2V0KHBpbywgbWFzayk7Cj4+Pj4+ Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyB2b2lkIGF0OTFfZ3Bpb19zZXQoc3RydWN0 IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgb2Zmc2V0LCBpbnQgdmFsdWUpCj4+Pj4+Pj4gK3sK Pj4+Pj4+PiArICAgICBzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAgKmF0OTFfZ3BpbyA9IHRvX2F0OTFf Z3Bpb19jaGlwKGNoaXApOwo+Pj4+Pj4+ICsgICAgIHZvaWQgX19pb21lbSAqcGlvID0gYXQ5MV9n cGlvLT5yZWdiYXNlOwo+Pj4+Pj4+ICsgICAgIHVuc2lnbmVkIG1hc2sgPSAxIDw8IG9mZnNldDsK Pj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgYXQ5MV9tdXhfZ3Bpb19zZXQocGlvLCBtYXNrLCB2YWx1 ZSk7Cj4+Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbnQgYXQ5MV9ncGlvX2Rp cmVjdGlvbl9vdXRwdXQoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgb2Zmc2V0LAo+ Pj4+Pj4+ICsgICAgICAgICAgICAgaW50IHZhbHVlKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAg c3RydWN0IGF0OTFfZ3Bpb19jaGlwICphdDkxX2dwaW8gPSB0b19hdDkxX2dwaW9fY2hpcChjaGlw KTsKPj4+Pj4+PiArICAgICB2b2lkIF9faW9tZW0gKnBpbyA9IGF0OTFfZ3Bpby0+cmVnYmFzZTsK Pj4+Pj4+PiArICAgICB1bnNpZ25lZCBtYXNrID0gMSA8PCBvZmZzZXQ7Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICsgICAgIGF0OTFfbXV4X2dwaW9fc2V0KHBpbywgbWFzaywgdmFsdWUpOwo+Pj4+Pj4+ICsg ICAgIF9fcmF3X3dyaXRlbChtYXNrLCBwaW8gKyBQSU9fT0VSKTsKPj4+Pj4+PiArCj4+Pj4+Pj4g KyAgICAgcmV0dXJuIDA7Cj4+Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbnQg YXQ5MV9ncGlvX2RpcmVjdGlvbl9pbnB1dChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25l ZCBvZmZzZXQpCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAg KmF0OTFfZ3BpbyA9IHRvX2F0OTFfZ3Bpb19jaGlwKGNoaXApOwo+Pj4+Pj4+ICsgICAgIHZvaWQg X19pb21lbSAqcGlvID0gYXQ5MV9ncGlvLT5yZWdiYXNlOwo+Pj4+Pj4+ICsgICAgIHVuc2lnbmVk IG1hc2sgPSAxIDw8IG9mZnNldDsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgX19yYXdfd3JpdGVs KG1hc2ssIHBpbyArIFBJT19PRFIpOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICByZXR1cm4gMDsK Pj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIGludCBhdDkxX2dwaW9fcmVxdWVz dChzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBvZmZzZXQpCj4+Pj4+Pj4gK3sKPj4+ Pj4+PiArICAgICBzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAgKmF0OTFfZ3BpbyA9IHRvX2F0OTFfZ3Bp b19jaGlwKGNoaXApOwo+Pj4+Pj4+ICsgICAgIHZvaWQgX19pb21lbSAqcGlvID0gYXQ5MV9ncGlv LT5yZWdiYXNlOwo+Pj4+Pj4+ICsgICAgIHVuc2lnbmVkIG1hc2sgPSAxIDw8IG9mZnNldDsKPj4+ Pj4+PiArCj4+Pj4+Pj4gKyAgICAgZGV2X2RiZyhjaGlwLT5kZXYsICIlczolZCBwaW8lYyVkKCVk KVxuIiwgX19mdW5jX18sIF9fTElORV9fLAo+Pj4+Pj4+ICsgICAgICAgICAgICAgICdBJyArIHBp bl90b19iYW5rKGNoaXAtPmJhc2UpLCBvZmZzZXQsIGNoaXAtPmJhc2UgKyBvZmZzZXQpOwo+Pj4+ Pj4+ICsgICAgIGF0OTFfbXV4X2dwaW9fZW5hYmxlKHBpbywgbWFzayk7Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICsgICAgIHJldHVybiAwOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMg dm9pZCBhdDkxX2dwaW9fZnJlZShzdHJ1Y3QgZ3Bpb19jaGlwICpjaGlwLCB1bnNpZ25lZCBvZmZz ZXQpCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBkZXZfZGJnKGNoaXAtPmRldiwgIiVzOiVkIHBp byVjJWQoJWQpXG4iLCBfX2Z1bmNfXywgX19MSU5FX18sCj4+Pj4+Pj4gKyAgICAgICAgICAgICAg J0EnICsgcGluX3RvX2JhbmsoY2hpcC0+YmFzZSksIG9mZnNldCwgY2hpcC0+YmFzZSArIG9mZnNl dCk7Cj4+Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgZ3Bpb19vcHMg YXQ5MV9ncGlvX29wcyA9IHsKPj4+Pj4+PiArICAgICAucmVxdWVzdCA9IGF0OTFfZ3Bpb19yZXF1 ZXN0LAo+Pj4+Pj4+ICsgICAgIC5mcmVlID0gYXQ5MV9ncGlvX2ZyZWUsCj4+Pj4+Pj4gKyAgICAg LmRpcmVjdGlvbl9pbnB1dCA9IGF0OTFfZ3Bpb19kaXJlY3Rpb25faW5wdXQsCj4+Pj4+Pj4gKyAg ICAgLmRpcmVjdGlvbl9vdXRwdXQgPSBhdDkxX2dwaW9fZGlyZWN0aW9uX291dHB1dCwKPj4+Pj4+ PiArICAgICAuZ2V0ID0gYXQ5MV9ncGlvX2dldCwKPj4+Pj4+PiArICAgICAuc2V0ID0gYXQ5MV9n cGlvX3NldCwKPj4+Pj4+PiArfTsKPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGF0OTFfZ3Bpb19kdF9pZHNbXSA9IHsKPj4+Pj4+PiArICAgICB7Cj4+Pj4+Pj4g KyAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLWdwaW8iLAo+Pj4+ Pj4+ICsgICAgIH0sIHsKPj4+Pj4+PiArICAgICAgICAgICAgIC5jb21wYXRpYmxlID0gImF0bWVs LGF0OTFzYW05eDUtZ3BpbyIsCj4+Pj4+Pj4gKyAgICAgfSwgewo+Pj4+Pj4+ICsgICAgICAgICAg ICAgLyogc2VudGluZWwgKi8KPj4+Pj4+PiArICAgICB9LAo+Pj4+Pj4+ICt9Owo+Pj4+Pj4+ICsK Pj4+Pj4+PiArc3RhdGljIGludCBhdDkxX2dwaW9fcHJvYmUoc3RydWN0IGRldmljZV9kICpkZXYp Cj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBzdHJ1Y3QgYXQ5MV9ncGlvX2NoaXAgKmF0OTFfZ3Bp bzsKPj4+Pj4+PiArICAgICBzdHJ1Y3QgY2xrICpjbGs7Cj4+Pj4+Pj4gKyAgICAgaW50IHJldDsK Pj4+Pj4+PiArICAgICBpbnQgYWxpYXNfaWR4ID0gb2ZfYWxpYXNfZ2V0X2lkKGRldi0+ZGV2aWNl X25vZGUsICJncGlvIik7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIEJVR19PTihkZXYtPmlkID4g TUFYX0dQSU9fQkFOS1MpOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBhdDkxX2dwaW8gPSAmZ3Bp b19jaGlwW2FsaWFzX2lkeF07Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIGNsayA9IGNsa19nZXQo ZGV2LCBOVUxMKTsKPj4+Pj4+PiArICAgICBpZiAoSVNfRVJSKGNsaykpIHsKPj4+Pj4+PiArICAg ICAgICAgICAgIHJldCA9IFBUUl9FUlIoY2xrKTsKPj4+Pj4+PiArICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiY2xvY2sgbm90IGZvdW5kOiAlZFxuIiwgcmV0KTsKPj4+Pj4+PiArICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4+Pj4+Pj4gKyAgICAgfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBy ZXQgPSBjbGtfZW5hYmxlKGNsayk7Cj4+Pj4+Pj4gKyAgICAgaWYgKHJldCA8IDApIHsKPj4+Pj4+ PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiY2xvY2sgZmFpbGVkIHRvIGVuYWJsZTogJWRc biIsIHJldCk7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBjbGtfcHV0KGNsayk7Cj4+Pj4+Pj4gKyAg ICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4+Pj4+ICsgICAgIH0KPj4+Pj4+PiArCj4+Pj4+Pj4g KyAgICAgZ3Bpb19iYW5rcyA9IG1heChncGlvX2JhbmtzLCBhbGlhc19pZHggKyAxKTsKPj4+Pj4+ PiArICAgICBhdDkxX2dwaW8tPnJlZ2Jhc2UgPSBkZXZfcmVxdWVzdF9tZW1fcmVnaW9uKGRldiwg MCk7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIGF0OTFfZ3Bpby0+Y2hpcC5vcHMgPSAmYXQ5MV9n cGlvX29wczsKPj4+Pj4+PiArICAgICBhdDkxX2dwaW8tPmNoaXAubmdwaW8gPSBNQVhfTkJfR1BJ T19QRVJfQkFOSzsKPj4+Pj4+PiArICAgICBhdDkxX2dwaW8tPmNoaXAuZGV2ID0gZGV2Owo+Pj4+ Pj4+ICsgICAgIGF0OTFfZ3Bpby0+Y2hpcC5iYXNlID0gZGV2LT5pZCAqIE1BWF9OQl9HUElPX1BF Ul9CQU5LOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICByZXQgPSBncGlvY2hpcF9hZGQoJmF0OTFf Z3Bpby0+Y2hpcCk7Cj4+Pj4+Pj4gKyAgICAgaWYgKHJldCkgewo+Pj4+Pj4+ICsgICAgICAgICAg ICAgZGV2X2VycihkZXYsICJjb3VsZG4ndCBhZGQgZ3Bpb2NoaXAsIHJldCA9ICVkXG4iLCByZXQp Owo+Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4+Pj4+PiArICAgICB9Cj4+Pj4+ Pj4gKwo+Pj4+Pj4+ICsgICAgIGRldl9pbmZvKGRldiwgIkFUOTEgZ3BpbyBkcml2ZXIgcmVnaXN0 cmVkXG4iKTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgcmV0dXJuIDA7Cj4+Pj4+Pj4gK30KPj4+ Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2lkIGF0OTFfZ3Bp b19pZHNbXSA9IHsKPj4+Pj4+PiArICAgICB7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICAubmFtZSA9 ICJhdDkxcm05MjAwLWdwaW8iLAo+Pj4+Pj4+ICsgICAgIH0sIHsKPj4+Pj4+PiArICAgICAgICAg ICAgIC5uYW1lID0gImF0OTFzYW05eDUtZ3BpbyIsCj4+Pj4+Pj4gKyAgICAgfSwgewo+Pj4+Pj4+ ICsgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KPj4+Pj4+PiArICAgICB9LAo+Pj4+Pj4+ICt9 Owo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIHN0cnVjdCBkcml2ZXJfZCBhdDkxX2dwaW9fZHJp dmVyID0gewo+Pj4+Pj4+ICsgICAgIC5uYW1lID0gImdwaW8tYXQ5MSIsCj4+Pj4+Pj4gKyAgICAg LnByb2JlID0gYXQ5MV9ncGlvX3Byb2JlLAo+Pj4+Pj4+ICsgICAgIC5pZF90YWJsZSA9IGF0OTFf Z3Bpb19pZHMsCj4+Pj4+Pj4gKyAgICAgLm9mX2NvbXBhdGlibGUgID0gRFJWX09GX0NPTVBBVChh dDkxX2dwaW9fZHRfaWRzKSwKPj4+Pj4+PiArfTsKPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBp bnQgYXQ5MV9ncGlvX2luaXQodm9pZCkKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIHJldHVybiBw bGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmF0OTFfZ3Bpb19kcml2ZXIpOwo+Pj4+Pj4+ICt9Cj4+ Pj4+Pj4gK2NvcmVkZXZpY2VfaW5pdGNhbGwoYXQ5MV9ncGlvX2luaXQpOwo+Pj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3BpbmN0cmwvcGluY3RybC1hdDkxLmggYi9kcml2ZXJzL3BpbmN0cmwv cGluY3RybC1hdDkxLmgKPj4+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+Pj4+IGluZGV4 IDAwMDAwMDAuLmU3MTlmYjgKPj4+Pj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4+Pj4gKysrIGIvZHJp dmVycy9waW5jdHJsL3BpbmN0cmwtYXQ5MS5oCj4+Pj4+Pj4gQEAgLTAsMCArMSwxNDggQEAKPj4+ Pj4+PiArLyoKPj4+Pj4+PiArICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgSmVhbi1DaHJpc3Rv cGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KPj4+Pj4+PiArICoK Pj4+Pj4+PiArICogVW5kZXIgR1BMdjIgb25seQo+Pj4+Pj4+ICsgKi8KPj4+Pj4+PiArCj4+Pj4+ Pj4gKyNpZm5kZWYgX19BVDkxX0dQSU9fSF9fCj4+Pj4+Pj4gKyNkZWZpbmUgX19BVDkxX0dQSU9f SF9fCj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsjaWZuZGVmIF9fZ3Bpb19pbml0Cj4+Pj4+Pj4gKyNkZWZp bmUgX19ncGlvX2luaXQKPj4+Pj4+PiArI2VuZGlmCj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsjZGVmaW5l IE1BWF9OQl9HUElPX1BFUl9CQU5LIDMyCj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5l IHVuc2lnbmVkIHBpbl90b19iYW5rKHVuc2lnbmVkIHBpbikKPj4+Pj4+PiArewo+Pj4+Pj4+ICsg ICAgIHJldHVybiBwaW4gLyBNQVhfTkJfR1BJT19QRVJfQkFOSzsKPj4+Pj4+PiArfQo+Pj4+Pj4+ ICsKPj4+Pj4+PiArc3RhdGljIGlubGluZSB1bnNpZ25lZCBwaW5fdG9fYmFua19vZmZzZXQodW5z aWduZWQgcGluKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgcmV0dXJuIHBpbiAlIE1BWF9OQl9H UElPX1BFUl9CQU5LOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5l IHVuc2lnbmVkIHBpbl90b19tYXNrKHVuc2lnbmVkIHBpbikKPj4+Pj4+PiArewo+Pj4+Pj4+ICsg ICAgIHJldHVybiAxIDw8IHBpbl90b19iYW5rX29mZnNldChwaW4pOwo+Pj4+Pj4+ICt9Cj4+Pj4+ Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfZGlzYWJsZV9pbnRlcnJ1 cHQodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+Pj4gK3sKPj4+Pj4+PiAr ICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgUElPX0lEUik7Cj4+Pj4+Pj4gK30KPj4+Pj4+ PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9zZXRfcHVsbHVwKHZvaWQg X19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrLCBib29sIG9uKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4g KyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIChvbiA/IFBJT19QVUVSIDogUElPX1BVRFIp KTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIGlubGluZSB2b2lkIGF0OTFf bXV4X3NldF9tdWx0aWRyaXZlKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrLCBib29s IG9uKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIChv biA/IFBJT19NREVSIDogUElPX01ERFIpKTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiAr c3RhdGljIGlubGluZSB2b2lkIGF0OTFfbXV4X3NldF9BX3BlcmlwaCh2b2lkIF9faW9tZW0gKnBp bywgdW5zaWduZWQgbWFzaykKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRlbCht YXNrLCBwaW8gKyBQSU9fQVNSKTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGlj IGlubGluZSB2b2lkIGF0OTFfbXV4X3NldF9CX3BlcmlwaCh2b2lkIF9faW9tZW0gKnBpbywgdW5z aWduZWQgbWFzaykKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRlbChtYXNrLCBw aW8gKyBQSU9fQlNSKTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIGlubGlu ZSB2b2lkIGF0OTFfbXV4X3BpbzNfc2V0X0FfcGVyaXBoKHZvaWQgX19pb21lbSAqcGlvLCB1bnNp Z25lZCBtYXNrKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRl bChfX3Jhd19yZWFkbChwaW8gKyBQSU9fQUJDRFNSMSkgJiB+bWFzaywKPj4+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlvICsgUElPX0FCQ0RTUjEp Owo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRlbChfX3Jhd19yZWFkbChwaW8gKyBQSU9fQUJDRFNS MikgJiB+bWFzaywKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGlvICsgUElPX0FCQ0RTUjIpOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfcGlvM19zZXRfQl9wZXJpcGgodm9pZCBfX2lv bWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBfX3Jhd193 cml0ZWwoX19yYXdfcmVhZGwocGlvICsgUElPX0FCQ0RTUjEpIHwgbWFzaywKPj4+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlvICsgUElPX0FCQ0RT UjEpOwo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRlbChfX3Jhd19yZWFkbChwaW8gKyBQSU9fQUJD RFNSMikgJiB+bWFzaywKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGlvICsgUElPX0FCQ0RTUjIpOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+ Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfcGlvM19zZXRfQ19wZXJpcGgodm9pZCBf X2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBfX3Jh d193cml0ZWwoX19yYXdfcmVhZGwocGlvICsgUElPX0FCQ0RTUjEpICYgfm1hc2ssIHBpbyArIFBJ T19BQkNEU1IxKTsKPj4+Pj4+PiArICAgICBfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwocGlvICsg UElPX0FCQ0RTUjIpIHwgbWFzaywgcGlvICsgUElPX0FCQ0RTUjIpOwo+Pj4+Pj4+ICt9Cj4+Pj4+ Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5MV9tdXhfcGlvM19zZXRfRF9wZXJp cGgodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+Pj4gK3sKPj4+Pj4+PiAr ICAgICBfX3Jhd193cml0ZWwoX19yYXdfcmVhZGwocGlvICsgUElPX0FCQ0RTUjEpIHwgbWFzaywg cGlvICsgUElPX0FCQ0RTUjEpOwo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRlbChfX3Jhd19yZWFk bChwaW8gKyBQSU9fQUJDRFNSMikgfCBtYXNrLCBwaW8gKyBQSU9fQUJDRFNSMik7Cj4+Pj4+Pj4g K30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9zZXRfZGVn bGl0Y2godm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2ssIGJvb2wgaXNfb24pCj4+Pj4+ Pj4gK3sKPj4+Pj4+PiArICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgKGlzX29uID8gUElP X0lGRVIgOiBQSU9fSUZEUikpOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMg aW5saW5lIHZvaWQgYXQ5MV9tdXhfcGlvM19zZXRfZGVnbGl0Y2godm9pZCBfX2lvbWVtICpwaW8s IHVuc2lnbmVkIG1hc2ssIGJvb2wgaXNfb24pCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBpZiAo aXNfb24pCj4+Pj4+Pj4gKyAgICAgICAgICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgUElP X0lGU0NEUik7Cj4+Pj4+Pj4gKyAgICAgYXQ5MV9tdXhfc2V0X2RlZ2xpdGNoKHBpbywgbWFzaywg aXNfb24pOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQg YXQ5MV9tdXhfcGlvM19zZXRfZGVib3VuY2Uodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1h c2ssCj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19vbiwgdTMy IGRpdikKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIGlmIChpc19vbikgewo+Pj4+Pj4+ICsgICAg ICAgICAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19JRlNDRVIpOwo+Pj4+Pj4+ICsg ICAgICAgICAgICAgX19yYXdfd3JpdGVsKGRpdiAmIFBJT19TQ0RSX0RJViwgcGlvICsgUElPX1ND RFIpOwo+Pj4+Pj4+ICsgICAgICAgICAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19J RkVSKTsKPj4+Pj4+PiArICAgICB9IGVsc2Ugewo+Pj4+Pj4+ICsgICAgICAgICAgICAgX19yYXdf d3JpdGVsKG1hc2ssIHBpbyArIFBJT19JRkRSKTsKPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4gK30K Pj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9waW8zX3NldF9w dWxsZG93bih2b2lkIF9faW9tZW0gKnBpbywgdW5zaWduZWQgbWFzaywgYm9vbCBpc19vbikKPj4+ Pj4+PiArewo+Pj4+Pj4+ICsgICAgIF9fcmF3X3dyaXRlbChtYXNrLCBwaW8gKyAoaXNfb24gPyBQ SU9fUFBERVIgOiBQSU9fUFBERFIpKTsKPj4+Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3Rh dGljIGlubGluZSB2b2lkIGF0OTFfbXV4X3BpbzNfZGlzYWJsZV9zY2htaXR0X3RyaWcodm9pZCBf X2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+Pj4gK3sKPj4+Pj4+PiArICAgICBfX3Jh d193cml0ZWwoX19yYXdfcmVhZGwocGlvICsgUElPX1NDSE1JVFQpIHwgbWFzaywgcGlvICsgUElP X1NDSE1JVFQpOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZv aWQgYXQ5MV9tdXhfZ3Bpb19kaXNhYmxlKHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNr KQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIFBJT19Q RFIpOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgYXQ5 MV9tdXhfZ3Bpb19lbmFibGUodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+ Pj4gK3sKPj4+Pj4+PiArICAgICBfX3Jhd193cml0ZWwobWFzaywgcGlvICsgUElPX1BFUik7Cj4+ Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBhdDkxX211eF9n cGlvX2lucHV0KHZvaWQgX19pb21lbSAqcGlvLCB1bnNpZ25lZCBtYXNrLCBib29sIGlucHV0KQo+ Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgX19yYXdfd3JpdGVsKG1hc2ssIHBpbyArIChpbnB1dCA/ IFBJT19PRFIgOiBQSU9fT0VSKSk7Cj4+Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBhdDkxX211eF9ncGlvX3NldCh2b2lkIF9faW9tZW0gKnBpbywgdW5zaWdu ZWQgbWFzaywKPj4+Pj4+PiAraW50IHZhbHVlKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgX19y YXdfd3JpdGVsKG1hc2ssIHBpbyArICh2YWx1ZSA/IFBJT19TT0RSIDogUElPX0NPRFIpKTsKPj4+ Pj4+PiArfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIGlubGluZSBpbnQgYXQ5MV9tdXhfZ3Bp b19nZXQodm9pZCBfX2lvbWVtICpwaW8sIHVuc2lnbmVkIG1hc2spCj4+Pj4+Pj4gK3sKPj4+Pj4+ PiArICAgICAgIHUzMiBwZHNyOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICAgIHBkc3IgPSBfX3Jh d19yZWFkbChwaW8gKyBQSU9fUERTUik7Cj4+Pj4+Pj4gKyAgICAgICByZXR1cm4gKHBkc3IgJiBt YXNrKSAhPSAwOwo+Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsjZW5kaWYgLyogX19BVDkx X0dQSU9fSF9fICovCj4+Pj4+Pj4gLS0KPj4+Pj4+PiAxLjcuOS41Cj4+Pj4+Pj4KPj4+Pj4+Pgo+ Pj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ Pj4+Pj4gYmFyZWJveCBtYWlsaW5nIGxpc3QKPj4+Pj4+PiBiYXJlYm94QGxpc3RzLmluZnJhZGVh ZC5vcmcKPj4+Pj4+PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2JhcmVib3gKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPj4+Pj4+IGJhcmVib3ggbWFpbGluZyBsaXN0Cj4+Pj4+PiBi YXJlYm94QGxpc3RzLmluZnJhZGVhZC5vcmcKPj4+Pj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vYmFyZWJveAo+Pj4+Cj4+Cj4KCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJhcmVi b3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2JhcmVib3gK