From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Hajda Subject: Re: [PATCH v5 6/6] drm/bridge: sii902x: Implement HDMI audio support Date: Fri, 12 Apr 2019 14:30:34 +0200 Message-ID: References: <2e1298f9-f9a2-9831-69d4-6b1b20260d82@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2e1298f9-f9a2-9831-69d4-6b1b20260d82@ti.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha , alsa-devel@alsa-project.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: fabrizio.castro@bp.renesas.com, architt@codeaurora.org, Songjun.Wu@atmel.com, peter.ujfalusi@ti.com, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com, voice.shen@atmel.com List-Id: devicetree@vger.kernel.org T24gMTIuMDQuMjAxOSAxMzo1MywgSnlyaSBTYXJoYSB3cm90ZToKPiBPbiAxMi8wNC8yMDE5IDEx OjUyLCBBbmRyemVqIEhhamRhIHdyb3RlOgo+PiBPbiAyMi4wMy4yMDE5IDA5OjA2LCBKeXJpIFNh cmhhIHdyb3RlOgo+Pj4gSW1wbGVtZW50IEhETUkgYXVkaW8gc3VwcG9ydCBieSB1c2luZyBBU29D IEhETUkgY29kZWMuIFRoZSBjb21taXQKPj4+IGltcGxlbWVudHMgdGhlIG5lY2Vzc2FyeSBjYWxs YmFja3MgYW5kIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBIRE1JCj4+PiBjb2RlYyBhbmQgcmVnaXN0 ZXJzIGEgdmlydHVhbCBwbGF0Zm9ybSBkZXZpY2UgZm9yIHRoZSBjb2RlYyB0byBhdHRhY2guCj4+ Pgo+Pj4gU2lnbmVkLW9mZi1ieTogSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4KPj4+IC0tLQo+ Pj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lpOTAyeC5jIHwgNDU5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KPj4+ICAxIGZpbGUgY2hhbmdlZCwgNDUzIGluc2VydGlvbnMoKyks IDYgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2Uvc2lpOTAyeC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9zaWk5MDJ4LmMKPj4+IGluZGV4 IDM1OGNmODFjNWVhNC4uY2IxMmUyNjQxMTFkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9zaWk5MDJ4LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvc2lp OTAyeC5jCj4+PiBAQCAtMjcsMTIgKzI3LDE1IEBACj4+PiAgI2luY2x1ZGUgPGxpbnV4L2kyYy5o Pgo+Pj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4+ICAjaW5jbHVkZSA8bGludXgvcmVn bWFwLmg+Cj4+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+Pj4gIAo+Pj4gICNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+Pj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPj4+ICAj aW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+Pj4gICNpbmNsdWRlIDxkcm0vZHJtX2Vk aWQuaD4KPj4+ICAKPj4+ICsjaW5jbHVkZSA8c291bmQvaGRtaS1jb2RlYy5oPgo+Pj4gKwo+Pj4g ICNkZWZpbmUgU0lJOTAyWF9UUElfVklERU9fREFUQQkJCTB4MAo+Pj4gIAo+Pj4gICNkZWZpbmUg U0lJOTAyWF9UUElfUElYRUxfUkVQRVRJVElPTgkJMHg4Cj4+PiBAQCAtNzQsNiArNzcsNzcgQEAK Pj4+ICAjZGVmaW5lIFNJSTkwMlhfQVZJX1BPV0VSX1NUQVRFX01TSwkJR0VOTUFTSygxLCAwKQo+ Pj4gICNkZWZpbmUgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfRChsKQkJKChsKSAmIFNJSTkwMlhf QVZJX1BPV0VSX1NUQVRFX01TSykKPj4+ICAKPj4+ICsvKiBBdWRpbyAgKi8KPj4+ICsjZGVmaW5l IFNJSTkwMlhfVFBJX0kyU19FTkFCTEVfTUFQUElOR19SRUcJMHgxZgo+Pj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfSTJTX0NPTkZJR19GSUZPMAkJCSgwIDw8IDApCj4+PiArI2RlZmluZSBTSUk5MDJY X1RQSV9JMlNfQ09ORklHX0ZJRk8xCQkJKDEgPDwgMCkKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0kyU19DT05GSUdfRklGTzIJCQkoMiA8PCAwKQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJT X0NPTkZJR19GSUZPMwkJCSgzIDw8IDApCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTEVG VF9SSUdIVF9TV0FQCQkJKDEgPDwgMikKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19BVVRP X0RPV05TQU1QTEUJCQkoMSA8PCAzKQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVD VF9TRDAJCQkoMCA8PCA0KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDEJ CQkoMSA8PCA0KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDIJCQkoMiA8 PCA0KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDMJCQkoMyA8PCA0KQo+ Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0ZJRk9fRU5BQkxFCQkJKDEgPDwgNykKPj4+ICsK Pj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19JTlBVVF9DT05GSUdfUkVHCTB4MjAKPj4+ICsj ZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19GSVJTVF9CSVRfU0hJRlRfWUVTCQkoMCA8PCAwKQo+Pj4g KyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX0ZJUlNUX0JJVF9TSElGVF9OTwkJKDEgPDwgMCkKPj4+ ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TRF9ESVJFQ1RJT05fTVNCX0ZJUlNUCQkoMCA8PCAx KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NEX0RJUkVDVElPTl9MU0JfRklSU1QJCSgx IDw8IDEpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9MRUZUCQkJKDAg PDwgMikKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TRF9KVVNUSUZZX1JJR0hUCQkoMSA8 PCAyKQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1dTX1BPTEFSSVRZX0xPVwkJCSgwIDw8 IDMpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfV1NfUE9MQVJJVFlfSElHSAkJKDEgPDwg MykKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xLX01VTFRJUExJRVJfMTI4CQkoMCA8 PCA0KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01DTEtfTVVMVElQTElFUl8yNTYJCSgx IDw8IDQpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBMSUVSXzM4NAkJ KDIgPDwgNCkKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19NQ0xLX01VTFRJUExJRVJfNTEy CQkoMyA8PCA0KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX01DTEtfTVVMVElQTElFUl83 NjgJCSg0IDw8IDQpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBMSUVS XzEwMjQJCSg1IDw8IDQpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxUSVBM SUVSXzExNTIJCSg2IDw8IDQpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfTUNMS19NVUxU SVBMSUVSXzE5MgkJKDcgPDwgNCkKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0kyU19TQ0tfRURH RV9GQUxMSU5HCQkoMCA8PCA3KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfSTJTX1NDS19FREdF X1JJU0lORwkJCSgxIDw8IDcpCj4+PiArCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU1RS TV9IRFJfQkFTRQkweDIxCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9JMlNfU1RSTV9IRFJfU0la RQk1Cj4+PiArCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT05GSUdfQllURTJfUkVH CTB4MjYKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19TVFJFQU1fSEVBREVS CQkoMCA8PCAwKQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX1BDTQkJCSgx IDw8IDApCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfQUMzCQkJKDIgPDwg MCkKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19NUEVHMQkJCSgzIDw8IDAp Cj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfTVAzCQkJKDQgPDwgMCkKPj4+ ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19NUEVHMgkJCSg1IDw8IDApCj4+PiAr I2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19DT0RJTkdfQUFDCQkJKDYgPDwgMCkKPj4+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPRElOR19EVFMJCQkoNyA8PCAwKQo+Pj4gKyNkZWZpbmUg U0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX0FUUkFDCQkJKDggPDwgMCkKPj4+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX0FVRElPX01VVEVfRElTQUJMRQkJCSgwIDw8IDQpCj4+PiArI2RlZmluZSBTSUk5 MDJYX1RQSV9BVURJT19NVVRFX0VOQUJMRQkJCSgxIDw8IDQpCj4+PiArI2RlZmluZSBTSUk5MDJY X1RQSV9BVURJT19MQVlPVVRfMl9DSEFOTkVMUwkJKDAgPDwgNSkKPj4+ICsjZGVmaW5lIFNJSTkw MlhfVFBJX0FVRElPX0xBWU9VVF84X0NIQU5ORUxTCQkoMSA8PCA1KQo+Pj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfQVVESU9fSU5URVJGQUNFX0RJU0FCTEUJCSgwIDw8IDYpCj4+PiArI2RlZmluZSBT SUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfU1BESUYJCSgxIDw8IDYpCj4+PiArI2RlZmluZSBT SUk5MDJYX1RQSV9BVURJT19JTlRFUkZBQ0VfSTJTCQkJKDIgPDwgNikKPj4+ICsKPj4+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJR19CWVRFM19SRUcJMHgyNwo+Pj4gKyNkZWZpbmUg U0lJOTAyWF9UUElfQVVESU9fRlJFUV9TVFJFQU0JCQkoMCA8PCAzKQo+Pj4gKyNkZWZpbmUgU0lJ OTAyWF9UUElfQVVESU9fRlJFUV8zMktIWgkJCSgxIDw8IDMpCj4+PiArI2RlZmluZSBTSUk5MDJY X1RQSV9BVURJT19GUkVRXzQ0S0haCQkJKDIgPDwgMykKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJ X0FVRElPX0ZSRVFfNDhLSFoJCQkoMyA8PCAzKQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVE SU9fRlJFUV84OEtIWgkJCSg0IDw8IDMpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19G UkVRXzk2S0haCQkJKDUgPDwgMykKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFf MTc2S0haCQkJKDYgPDwgMykKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfMTky S0haCQkJKDcgPDwgMykKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9TSVpF X1NUUkVBTQkJKDAgPDwgNikKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX1NBTVBMRV9T SVpFXzE2CQkoMSA8PCA2KQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9UUElfQVVESU9fU0FNUExFX1NJ WkVfMjAJCSgyIDw8IDYpCj4+PiArI2RlZmluZSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0la RV8yNAkJKDMgPDwgNikKPj4+ICsKPj4+ICsjZGVmaW5lIFNJSTkwMlhfVFBJX0FVRElPX0NPTkZJ R19CWVRFNF9SRUcJMHgyOAo+Pj4gKwo+Pj4gICNkZWZpbmUgU0lJOTAyWF9JTlRfRU5BQkxFCQkJ MHgzYwo+Pj4gICNkZWZpbmUgU0lJOTAyWF9JTlRfU1RBVFVTCQkJMHgzZAo+Pj4gICNkZWZpbmUg U0lJOTAyWF9IT1RQTFVHX0VWRU5UCQkJQklUKDApCj4+PiBAQCAtODEsNiArMTU1LDE2IEBACj4+ PiAgCj4+PiAgI2RlZmluZSBTSUk5MDJYX1JFR19UUElfUlFCCQkJMHhjNwo+Pj4gIAo+Pj4gKy8q IEluZGlyZWN0IGludGVybmFsIHJlZ2lzdGVyIGFjY2VzcyAqLwo+Pj4gKyNkZWZpbmUgU0lJOTAy WF9JTkRfU0VUX1BBR0UJCQkweGJjCj4+PiArI2RlZmluZSBTSUk5MDJYX0lORF9PRkZTRVQJCQkw eGJkCj4+PiArI2RlZmluZSBTSUk5MDJYX0lORF9WQUxVRQkJCTB4YmUKPj4+ICsKPj4+ICsjZGVm aW5lIFNJSTkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX0JBU0UJCTB4YmYKPj4+ICsjZGVmaW5lIFNJ STkwMlhfVFBJX01JU0NfSU5GT0ZSQU1FX0VORAkJMHhkZQo+Pj4gKyNkZWZpbmUgU0lJOTAyWF9U UElfTUlTQ19JTkZPRlJBTUVfU0laRQlcCj4+PiArCShTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFN RV9FTkQgLSBTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9CQVNFKQo+Pj4gKwo+Pj4gICNkZWZp bmUgU0lJOTAyWF9JMkNfQlVTX0FDUVVJU0lUSU9OX1RJTUVPVVRfTVMJNTAwCj4+PiAgCj4+PiAg c3RydWN0IHNpaTkwMnggewo+Pj4gQEAgLTkwLDYgKzE3NCwxNiBAQCBzdHJ1Y3Qgc2lpOTAyeCB7 Cj4+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5lY3RvcjsKPj4+ICAJc3RydWN0IGdwaW9f ZGVzYyAqcmVzZXRfZ3BpbzsKPj4+ICAJc3RydWN0IGkyY19tdXhfY29yZSAqaTJjbXV4Owo+Pj4g KwkvKgo+Pj4gKwkgKiBNdXRleCBwcm90ZWN0cyBhdWRpbyBhbmQgdmlkZW8gZnVuY3Rpb25zIGZy b20gaW50ZXJmZXJpbmcKPj4+ICsJICogZWFjaCBvdGhlciwgYnkga2VlcGluZyB0aGVpciBpMmMg Y29tbWFuZCBzZXF1ZW5jZXMgYXRvbWljLgo+Pj4gKwkgKi8KPj4+ICsJc3RydWN0IG11dGV4IG11 dGV4Owo+Pj4gKwlzdHJ1Y3Qgc2lpOTAyeF9hdWRpbyB7Cj4+PiArCQlzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2Owo+Pj4gKwkJc3RydWN0IGNsayAqbWNsazsKPj4+ICsJCXUzMiBpMnNfZmlm b19zZXF1ZW5jZVs0XTsKPj4+ICsJfSBhdWRpbzsKPj4+ICB9Owo+Pj4gIAo+Pj4gIHN0YXRpYyBp bnQgc2lpOTAyeF9yZWFkX3VubG9ja2VkKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsIHU4IHJlZywg dTggKnZhbCkKPj4+IEBAIC0xNjEsOCArMjU1LDEyIEBAIHNpaTkwMnhfY29ubmVjdG9yX2RldGVj dChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+Pj4gIAlzdHJ1 Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGNvbm5lY3Rvcl90b19zaWk5MDJ4KGNvbm5lY3Rvcik7Cj4+ PiAgCXVuc2lnbmVkIGludCBzdGF0dXM7Cj4+PiAgCj4+PiArCW11dGV4X2xvY2soJnNpaTkwMngt Pm11dGV4KTsKPj4+ICsKPj4+ICAJcmVnbWFwX3JlYWQoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJY X0lOVF9TVEFUVVMsICZzdGF0dXMpOwo+Pj4gIAo+Pj4gKwltdXRleF91bmxvY2soJnNpaTkwMngt Pm11dGV4KTsKPj4+ICsKPj4KPj4gcmVnbWFwIHVzZXMgaXRzIG93biBsb2NrIHNvIHdlIGhhdmUg aGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHJlZHVuZGFudAo+PiBsb2Nrcy4KPj4KPj4gUHJvYmFi bHkgeW91IHNob3VsZCBkaXNhYmxlIHJlZ21hcCBsb2NraW5nIChjb25maWctPmRpc2FibGVfbG9j a2luZyA9IDEpLgo+Pgo+IE1ha2VzIHNlbnNlLiBJJ2xsIGFkZCB0aGF0Lgo+Cj4+PiAgCXJldHVy biAoc3RhdHVzICYgU0lJOTAyWF9QTFVHR0VEX1NUQVRVUykgPwo+Pj4gIAkgICAgICAgY29ubmVj dG9yX3N0YXR1c19jb25uZWN0ZWQgOiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPj4+ ICB9Cj4+PiBAQCAtMTg0LDYgKzI4Miw4IEBAIHN0YXRpYyBpbnQgc2lpOTAyeF9nZXRfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4+ICAJc3RydWN0IGVkaWQgKmVkaWQ7 Cj4+PiAgCWludCBudW0gPSAwLCByZXQ7Cj4+PiAgCj4+PiArCW11dGV4X2xvY2soJnNpaTkwMngt Pm11dGV4KTsKPj4+ICsKPj4+ICAJZWRpZCA9IGRybV9nZXRfZWRpZChjb25uZWN0b3IsIHNpaTkw MngtPmkyY211eC0+YWRhcHRlclswXSk7Cj4+PiAgCWRybV9jb25uZWN0b3JfdXBkYXRlX2VkaWRf cHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsKPj4+ICAJaWYgKGVkaWQpIHsKPj4+IEBAIC0xOTcs MTQgKzI5NywxOSBAQCBzdGF0aWMgaW50IHNpaTkwMnhfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCj4+PiAgCXJldCA9IGRybV9kaXNwbGF5X2luZm9fc2V0X2J1c19m b3JtYXRzKCZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbywKPj4+ICAJCQkJCSAgICAgICAmYnVzX2Zv cm1hdCwgMSk7Cj4+PiAgCWlmIChyZXQpCj4+PiAtCQlyZXR1cm4gcmV0Owo+Pj4gKwkJZ290byBl cnJvcl9vdXQ7Cj4+PiAgCj4+PiAgCXJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5y ZWdtYXAsIFNJSTkwMlhfU1lTX0NUUkxfREFUQSwKPj4+ICAJCQkJIFNJSTkwMlhfU1lTX0NUUkxf T1VUUFVUX01PREUsIG91dHB1dF9tb2RlKTsKPj4+ICAJaWYgKHJldCkKPj4+IC0JCXJldHVybiBy ZXQ7Cj4+PiArCQlnb3RvIGVycm9yX291dDsKPj4+ICsKPj4+ICsJcmV0ID0gbnVtOwo+Pj4gKwo+ Pj4gK2Vycm9yX291dDoKPj4+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+PiAg Cj4+PiAtCXJldHVybiBudW07Cj4+PiArCXJldHVybiByZXQ7Cj4+PiAgfQo+Pj4gIAo+Pj4gIHN0 YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBzaWk5MDJ4X21vZGVfdmFsaWQoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPj4+IEBAIC0yMjQsMjAgKzMyOSwyOCBAQCBzdGF0aWMgdm9p ZCBzaWk5MDJ4X2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiAg ewo+Pj4gIAlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGJyaWRnZV90b19zaWk5MDJ4KGJyaWRn ZSk7Cj4+PiAgCj4+PiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPj4+ICsKPj4+ICAJ cmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9TWVNfQ1RSTF9EQVRB LAo+Pj4gIAkJCSAgIFNJSTkwMlhfU1lTX0NUUkxfUFdSX0RXTiwKPj4+ICAJCQkgICBTSUk5MDJY X1NZU19DVFJMX1BXUl9EV04pOwo+Pj4gKwo+Pj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11 dGV4KTsKPj4+ICB9Cj4+PiAgCj4+PiAgc3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfZW5hYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4+PiAgewo+Pj4gIAlzdHJ1Y3Qgc2lpOTAyeCAq c2lpOTAyeCA9IGJyaWRnZV90b19zaWk5MDJ4KGJyaWRnZSk7Cj4+PiAgCj4+PiArCW11dGV4X2xv Y2soJnNpaTkwMngtPm11dGV4KTsKPj4+ICsKPj4+ICAJcmVnbWFwX3VwZGF0ZV9iaXRzKHNpaTkw MngtPnJlZ21hcCwgU0lJOTAyWF9QV1JfU1RBVEVfQ1RSTCwKPj4+ICAJCQkgICBTSUk5MDJYX0FW SV9QT1dFUl9TVEFURV9NU0ssCj4+PiAgCQkJICAgU0lJOTAyWF9BVklfUE9XRVJfU1RBVEVfRCgw KSk7Cj4+PiAgCXJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfU1lT X0NUUkxfREFUQSwKPj4+ICAJCQkgICBTSUk5MDJYX1NZU19DVFJMX1BXUl9EV04sIDApOwo+Pj4g Kwo+Pj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4KTsKPj4+ICB9Cj4+PiAgCj4+PiAg c3RhdGljIHZvaWQgc2lpOTAyeF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPj4+IEBAIC0yNjQsMjYgKzM3NywzMSBAQCBzdGF0aWMgdm9pZCBzaWk5MDJ4X2JyaWRn ZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+Pj4gIAlidWZbOV0gPSBTSUk5 MDJYX1RQSV9BVklfSU5QVVRfUkFOR0VfQVVUTyB8Cj4+PiAgCQkgU0lJOTAyWF9UUElfQVZJX0lO UFVUX0NPTE9SU1BBQ0VfUkdCOwo+Pj4gIAo+Pj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRl eCk7Cj4+PiArCj4+PiAgCXJldCA9IHJlZ21hcF9idWxrX3dyaXRlKHJlZ21hcCwgU0lJOTAyWF9U UElfVklERU9fREFUQSwgYnVmLCAxMCk7Cj4+PiAgCWlmIChyZXQpCj4+PiAtCQlyZXR1cm47Cj4+ PiArCQlnb3RvIG91dDsKPj4+ICAKPj4+ICAJcmV0ID0gZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9m cm9tX2Rpc3BsYXlfbW9kZSgmZnJhbWUsIGFkaiwgZmFsc2UpOwo+Pj4gIAlpZiAocmV0IDwgMCkg ewo+Pj4gIAkJRFJNX0VSUk9SKCJjb3VsZG4ndCBmaWxsIEFWSSBpbmZvZnJhbWVcbiIpOwo+Pj4g LQkJcmV0dXJuOwo+Pj4gKwkJZ290byBvdXQ7Cj4+PiAgCX0KPj4+ICAKPj4+ICAJcmV0ID0gaGRt aV9hdmlfaW5mb2ZyYW1lX3BhY2soJmZyYW1lLCBidWYsIHNpemVvZihidWYpKTsKPj4+ICAJaWYg KHJldCA8IDApIHsKPj4+ICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHBhY2sgQVZJIGluZm9mcmFt ZTogJWRcbiIsIHJldCk7Cj4+PiAtCQlyZXR1cm47Cj4+PiArCQlnb3RvIG91dDsKPj4+ICAJfQo+ Pj4gIAo+Pj4gIAkvKiBEbyBub3Qgc2VuZCB0aGUgaW5mb2ZyYW1lIGhlYWRlciwgYnV0IGtlZXAg dGhlIENSQyBmaWVsZC4gKi8KPj4+ICAJcmVnbWFwX2J1bGtfd3JpdGUocmVnbWFwLCBTSUk5MDJY X1RQSV9BVklfSU5GT0ZSQU1FLAo+Pj4gIAkJCSAgYnVmICsgSERNSV9JTkZPRlJBTUVfSEVBREVS X1NJWkUgLSAxLAo+Pj4gIAkJCSAgSERNSV9BVklfSU5GT0ZSQU1FX1NJWkUgKyAxKTsKPj4+ICsK Pj4+ICtvdXQ6Cj4+PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+Pj4gIH0KPj4+ ICAKPj4+ICBzdGF0aWMgaW50IHNpaTkwMnhfYnJpZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQo+Pj4gQEAgLTMyNCw2ICs0NDIsMzMwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2JyaWRnZV9mdW5jcyBzaWk5MDJ4X2JyaWRnZV9mdW5jcyA9IHsKPj4+ICAJLmVuYWJsZSA9 IHNpaTkwMnhfYnJpZGdlX2VuYWJsZSwKPj4+ICB9Owo+Pj4gIAo+Pj4gK3N0YXRpYyBpbnQgc2lp OTAyeF9tdXRlKHN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4LCBib29sIG11dGUpCj4+PiArewo+Pj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmc2lpOTAyeC0+aTJjLT5kZXY7Cj4+PiArCXVuc2lnbmVk IGludCB2YWwgPSBtdXRlID8gU0lJOTAyWF9UUElfQVVESU9fTVVURV9FTkFCTEUgOgo+Pj4gKwkJ U0lJOTAyWF9UUElfQVVESU9fTVVURV9ESVNBQkxFOwo+Pj4gKwo+Pj4gKwlkZXZfZGJnKGRldiwg IiVzOiAlc1xuIiwgX19mdW5jX18sIG11dGUgPyAiTXV0ZWQiIDogIlVubXV0ZWQiKTsKPj4+ICsK Pj4+ICsJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0cyhzaWk5MDJ4LT5yZWdtYXAsCj4+PiArCQkJ CSAgU0lJOTAyWF9UUElfQVVESU9fQ09ORklHX0JZVEUyX1JFRywKPj4+ICsJCQkJICBTSUk5MDJY X1RQSV9BVURJT19NVVRFX0VOQUJMRSwgdmFsKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNv bnN0IHVuc2lnbmVkIGludCBzaWk5MDJ4X21jbGtfZGl2X3RhYmxlW10gPSB7Cj4+PiArCTEyOCwg MjU2LCAzODQsIDUxMiwgNzY4LCAxMDI0LCAxMTUyLCAxOTIgfTsKPj4+ICsKPj4+ICtzdGF0aWMg aW50IHNpaTkwMnhfc2VsZWN0X21jbGtfZGl2KHU4ICppMnNfY29uZmlnX3JlZywgdW5zaWduZWQg aW50IHJhdGUsCj4+PiArCQkJCSAgIHVuc2lnbmVkIGludCBtY2xrKQo+Pj4gK3sKPj4+ICsJdW5z aWduZWQgaW50IGRpdiA9IG1jbGsgLyByYXRlOwo+Pj4gKwlpbnQgZGlzdGFuY2UgPSAxMDAwMDA7 Cj4+PiArCXU4IGksIG5lYXJlc3QgPSAwOwo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShzaWk5MDJ4X21jbGtfZGl2X3RhYmxlKTsgaSsrKSB7Cj4+PiArCQl1bnNpZ25lZCBp bnQgZCA9IGFicyhkaXYgLSBzaWk5MDJ4X21jbGtfZGl2X3RhYmxlW2ldKTsKPj4KPj4gVXNpbmcg dW5zaWduZWQgdHlwZXMgaW4gdGhpcyBjb250ZXh0IHNlZW1zIHRvIGJlIGFza2luZyBmb3IgdHJv dWJsZXMuCj4+Cj4gV2h5PyBJc24ndCByZXR1cm4gdmFsdWUgb2YgYWJzKCkgYnkgZGVmaW5pdGlv biB1bnNpZ25lZD8gVXNpbmcgc2lnbmVkCj4gaW50ZWdlcnMgd2hlbiBjb21wYXJpbmcgYWJzb2x1 dGUgZGlzdGFuY2VzIHdvdWxkIHNlZW0gYXdrd2FyZCB0byBtZS4KCgooZGl2IC0gc2lpOTAyeF9t Y2xrX2Rpdl90YWJsZVtpXSkgaXMgdW5zaWduZWQsIGlmIGRpdiBpcyBsb3dlciwgdGhlcmUgaXMg b3ZlcmZsb3csIGFuZCB0aGUgdmFsdWUgaXMgYmlnIGludCwgSSBzdXBwb3NlIHRoaXMgaXMgbm90 IHdoYXQgeW91IHdhbnQuCgoKPgo+Pj4gKwo+Pj4gKwkJaWYgKGQgPj0gZGlzdGFuY2UpCj4+PiAr CQkJY29udGludWU7Cj4+PiArCj4+PiArCQluZWFyZXN0ID0gaTsKPj4+ICsJCWRpc3RhbmNlID0g ZDsKPj4+ICsJCWlmIChkID09IDApCj4+PiArCQkJYnJlYWs7Cj4+PiArCX0KPj4+ICsKPj4+ICsJ Kmkyc19jb25maWdfcmVnIHw9IG5lYXJlc3QgPDwgNDsKPj4+ICsKPj4+ICsJaWYgKGRpc3RhbmNl ICE9IDApCj4+PiArCQlyZXR1cm4gc2lpOTAyeF9tY2xrX2Rpdl90YWJsZVtuZWFyZXN0XTsKPj4+ ICsKPj4+ICsJcmV0dXJuIDA7Cj4+Cj4+IHJldCB2YWx1ZSBpcyBpbmNvbnNpc3RlbnQsIDAgaW4g Y2FzZSBvZiBleGFjdCBtYXRjaCwgY2xvc2VzdCB2YWx1ZQo+PiBvdGhlcndpc2UsIGNvZGUgd2ls bCBiZSBjbGVhbmVyIGlmIHlvdSByZXR1cm4gYWx3YXlzIGNsb3Nlc3QgbWF0Y2guCj4+Cj4gVGhl biBJIGRvIG5vdCBoYXZlIHRoZSBpbmZvcm1hdGlvbiB0byBwcmludCBhIHdhcm5pbmcgaWYgYW4g ZXhhY3QgbWF0Y2gKPiB3YXMgbm90IGZvdW5kLiBUaGUgcmV0dXJuIHZhbHVlIGlzIG9ubHkgdXNl ZCBpbiB0aGF0IHdhcm5pbmcgbWVzc2FnZSwKPiB0aGUgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiB2 YWx1ZSBpcyBhbHdheXMgZGVsaXZlcmVkIHRyb3VnaAo+ICppMnNfY29uZmlnX3JlZy4gSSBkbyBu b3Qgc2VlIGFueSBpbmNvbnNpc3RlbmN5IGhlcmUuCgpZb3UgaGF2ZSBpdDoKCivCoMKgwqAgcmV0 ID0gc2lpOTAyeF9zZWxlY3RfbWNsa19kaXYoJmkyc19jb25maWdfcmVnLCBwYXJhbXMtPnNhbXBs ZV9yYXRlLAorwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoMKgwqAgbWNsa19yYXRl KTsKK8KgwqDCoCBpZiAobWNsa19yYXRlIC8gcmV0ICE9IHBhcmFtcy0+c2FtcGxlX3JhdGUpCivC oMKgwqAgwqDCoMKgIGRldl9kYmcoZGV2LCAiSW5hY2N1cmF0ZSByZWZlcmVuY2UgY2xvY2sgKCVs ZC8lZCAhPSAldSlcbiIsCivCoMKgwqAgwqDCoMKgIMKgwqDCoCBtY2xrX3JhdGUsIHJldCwgcGFy YW1zLT5zYW1wbGVfcmF0ZSk7CisKCm9yIHRvIGF2b2lkIGRpdmlzaW9uOiBpZiAobWNsa19yYXRl ICE9IHJldCAqIHBhcmFtcy0+c2FtcGxlX3JhdGUpIC4uLgoKCkJ1dCB0aGlzIGlzIG5vdCBzb21l dGhpbmcgSSB3b3VsZCBkaWUgZm9yLCBpdCBqdXN0IGh1cnRzIG15IHRlZXRoIDopCgoKPgo+Pj4g K30KPj4+ICsKPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNpaTkwMnhfc2FtcGxlX2ZyZXEgewo+ Pj4gKwl1MzIgZnJlcTsKPj4+ICsJdTggdmFsOwo+Pj4gK30gc2lpOTAyeF9zYW1wbGVfZnJlcVtd ID0gewo+Pj4gKwl7IC5mcmVxID0gMzIwMDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVR XzMyS0haIH0sCj4+PiArCXsgLmZyZXEgPSA0NDAwMCwJLnZhbCA9IFNJSTkwMlhfVFBJX0FVRElP X0ZSRVFfNDRLSFogfSwKPj4+ICsJeyAuZnJlcSA9IDQ4MDAwLAkudmFsID0gU0lJOTAyWF9UUElf QVVESU9fRlJFUV80OEtIWiB9LAo+Pj4gKwl7IC5mcmVxID0gODgwMDAsCS52YWwgPSBTSUk5MDJY X1RQSV9BVURJT19GUkVRXzg4S0haIH0sCj4+PiArCXsgLmZyZXEgPSA5NjAwMCwJLnZhbCA9IFNJ STkwMlhfVFBJX0FVRElPX0ZSRVFfOTZLSFogfSwKPj4+ICsJeyAuZnJlcSA9IDE3NjAwMCwJLnZh bCA9IFNJSTkwMlhfVFBJX0FVRElPX0ZSRVFfMTc2S0haIH0sCj4+PiArCXsgLmZyZXEgPSAxOTIw MDAsCS52YWwgPSBTSUk5MDJYX1RQSV9BVURJT19GUkVRXzE5MktIWiB9LAo+Pj4gK307Cj4+PiAr Cj4+PiArc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2h3X3BhcmFtcyhzdHJ1Y3QgZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4+PiArCQkJCSAgIHN0cnVjdCBoZG1pX2NvZGVjX2RhaWZtdCAqZGFp Zm10LAo+Pj4gKwkJCQkgICBzdHJ1Y3QgaGRtaV9jb2RlY19wYXJhbXMgKnBhcmFtcykKPj4+ICt7 Cj4+PiArCXN0cnVjdCBzaWk5MDJ4ICpzaWk5MDJ4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ PiArCXU4IGkyc19jb25maWdfcmVnID0gU0lJOTAyWF9UUElfSTJTX1NEX0RJUkVDVElPTl9NU0Jf RklSU1Q7Cj4+PiArCXU4IGNvbmZpZ19ieXRlMl9yZWcgPSAoU0lJOTAyWF9UUElfQVVESU9fSU5U RVJGQUNFX0kyUyB8Cj4+PiArCQkJICAgICAgIFNJSTkwMlhfVFBJX0FVRElPX01VVEVfRU5BQkxF IHwKPj4+ICsJCQkgICAgICAgU0lJOTAyWF9UUElfQVVESU9fQ09ESU5HX1BDTSk7Cj4+PiArCXU4 IGNvbmZpZ19ieXRlM19yZWcgPSAwOwo+Pj4gKwl1OCBpbmZvZnJhbWVfYnVmW0hETUlfSU5GT0ZS QU1FX1NJWkUoQVVESU8pXTsKPj4+ICsJdW5zaWduZWQgbG9uZyBtY2xrX3JhdGU7Cj4+PiArCWlu dCBpLCByZXQ7Cj4+PiArCj4+PiArCWlmIChkYWlmbXQtPmJpdF9jbGtfbWFzdGVyIHx8IGRhaWZt dC0+ZnJhbWVfY2xrX21hc3Rlcikgewo+Pj4gKwkJZGV2X2RiZyhkZXYsICIlczogSTJTIG1hc3Rl ciBtb2RlIG5vdCBzdXBwb3J0ZWRcbiIsIF9fZnVuY19fKTsKPj4+ICsJCXJldHVybiAtRUlOVkFM Owo+Pj4gKwl9Cj4+PiArCj4+PiArCXN3aXRjaCAoZGFpZm10LT5mbXQpIHsKPj4+ICsJY2FzZSBI RE1JX0kyUzoKPj4+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19GSVJTVF9C SVRfU0hJRlRfWUVTIHwKPj4+ICsJCQlTSUk5MDJYX1RQSV9JMlNfU0RfSlVTVElGWV9MRUZUOwo+ Pj4gKwkJYnJlYWs7Cj4+PiArCWNhc2UgSERNSV9SSUdIVF9KOgo+Pj4gKwkJaTJzX2NvbmZpZ19y ZWcgfD0gU0lJOTAyWF9UUElfSTJTX1NEX0pVU1RJRllfUklHSFQ7Cj4+PiArCQlicmVhazsKPj4+ ICsJY2FzZSBIRE1JX0xFRlRfSjoKPj4+ICsJCWkyc19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJ X0kyU19TRF9KVVNUSUZZX0xFRlQ7Cj4+PiArCQlicmVhazsKPj4+ICsJZGVmYXVsdDoKPj4+ICsJ CWRldl9kYmcoZGV2LCAiJXM6IFVuc3VwcG9ydGVkIGkycyBmb3JtYXQgJXVcbiIsIF9fZnVuY19f LAo+Pj4gKwkJCWRhaWZtdC0+Zm10KTsKPj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4gKwl9Cj4+ PiArCj4+PiArCWlmIChkYWlmbXQtPmJpdF9jbGtfaW52KQo+Pj4gKwkJaTJzX2NvbmZpZ19yZWcg fD0gU0lJOTAyWF9UUElfSTJTX1NDS19FREdFX0ZBTExJTkc7Cj4+PiArCWVsc2UKPj4+ICsJCWky c19jb25maWdfcmVnIHw9IFNJSTkwMlhfVFBJX0kyU19TQ0tfRURHRV9SSVNJTkc7Cj4+PiArCj4+ PiArCWlmIChkYWlmbXQtPmZyYW1lX2Nsa19pbnYpCj4+PiArCQlpMnNfY29uZmlnX3JlZyB8PSBT SUk5MDJYX1RQSV9JMlNfV1NfUE9MQVJJVFlfTE9XOwo+Pj4gKwllbHNlCj4+PiArCQlpMnNfY29u ZmlnX3JlZyB8PSBTSUk5MDJYX1RQSV9JMlNfV1NfUE9MQVJJVFlfSElHSDsKPj4+ICsKPj4+ICsJ aWYgKHBhcmFtcy0+Y2hhbm5lbHMgPiAyKQo+Pj4gKwkJY29uZmlnX2J5dGUyX3JlZyB8PSBTSUk5 MDJYX1RQSV9BVURJT19MQVlPVVRfOF9DSEFOTkVMUzsKPj4+ICsJZWxzZQo+Pj4gKwkJY29uZmln X2J5dGUyX3JlZyB8PSBTSUk5MDJYX1RQSV9BVURJT19MQVlPVVRfMl9DSEFOTkVMUzsKPj4+ICsK Pj4+ICsJc3dpdGNoIChwYXJhbXMtPnNhbXBsZV93aWR0aCkgewo+Pj4gKwljYXNlIDE2Ogo+Pj4g KwkJY29uZmlnX2J5dGUzX3JlZyB8PSBTSUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8xNjsK Pj4+ICsJCWJyZWFrOwo+Pj4gKwljYXNlIDIwOgo+Pj4gKwkJY29uZmlnX2J5dGUzX3JlZyB8PSBT SUk5MDJYX1RQSV9BVURJT19TQU1QTEVfU0laRV8yMDsKPj4+ICsJCWJyZWFrOwo+Pj4gKwljYXNl IDI0Ogo+Pj4gKwljYXNlIDMyOgo+Pj4gKwkJY29uZmlnX2J5dGUzX3JlZyB8PSBTSUk5MDJYX1RQ SV9BVURJT19TQU1QTEVfU0laRV8yNDsKPj4+ICsJCWJyZWFrOwo+Pj4gKwlkZWZhdWx0Ogo+Pj4g KwkJZGV2X2VycihkZXYsICIlczogVW5zdXBwb3J0ZWQgc2FtcGxlIHdpZHRoICV1XG4iLCBfX2Z1 bmNfXywKPj4+ICsJCQlwYXJhbXMtPnNhbXBsZV93aWR0aCk7Cj4+PiArCQlyZXR1cm4gLUVJTlZB TDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaWk5MDJ4 X3NhbXBsZV9mcmVxKTsgaSsrKSB7Cj4+PiArCQlpZiAocGFyYW1zLT5zYW1wbGVfcmF0ZSA9PSBz aWk5MDJ4X3NhbXBsZV9mcmVxW2ldLmZyZXEpIHsKPj4+ICsJCQljb25maWdfYnl0ZTNfcmVnIHw9 IHNpaTkwMnhfc2FtcGxlX2ZyZXFbaV0udmFsOwo+Pj4gKwkJCWJyZWFrOwo+Pj4gKwkJfQo+Pj4g Kwl9Cj4+PiArCj4+PiArCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShzaWk5MDJ4LT5hdWRpby5t Y2xrKTsKPj4+ICsJaWYgKHJldCkgewo+Pj4gKwkJZGV2X2VycihkZXYsICJFbmFibGluZyBtY2xr IGZhaWxlZDogJWRcbiIsIHJldCk7Cj4+PiArCQlyZXR1cm4gcmV0Owo+Pj4gKwl9Cj4+PiArCj4+ PiArCW1jbGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKPj4+ICsK Pj4+ICsJcmV0ID0gc2lpOTAyeF9zZWxlY3RfbWNsa19kaXYoJmkyc19jb25maWdfcmVnLCBwYXJh bXMtPnNhbXBsZV9yYXRlLAo+Pj4gKwkJCQkgICAgICBtY2xrX3JhdGUpOwo+Pj4gKwlpZiAocmV0 KQo+Pj4gKwkJZGV2X2RiZyhkZXYsICJJbmFjY3VyYXRlIHJlZmVyZW5jZSBjbG9jayAoJWxkLyVk ICE9ICV1KVxuIiwKPj4+ICsJCQltY2xrX3JhdGUsIHJldCwgcGFyYW1zLT5zYW1wbGVfcmF0ZSk7 Cj4+PiArCj4+PiArCW11dGV4X2xvY2soJnNpaTkwMngtPm11dGV4KTsKPj4+ICsKPj4+ICsJcmV0 ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwKPj4+ICsJCQkgICBTSUk5MDJYX1RQSV9B VURJT19DT05GSUdfQllURTJfUkVHLAo+Pj4gKwkJCSAgIGNvbmZpZ19ieXRlMl9yZWcpOwo+Pj4g KwlpZiAocmV0IDwgMCkKPj4+ICsJCWdvdG8gb3V0Owo+Pj4gKwo+Pj4gKwlyZXQgPSByZWdtYXBf d3JpdGUoc2lpOTAyeC0+cmVnbWFwLCBTSUk5MDJYX1RQSV9JMlNfSU5QVVRfQ09ORklHX1JFRywK Pj4+ICsJCQkgICBpMnNfY29uZmlnX3JlZyk7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlnb3RvIG91 dDsKPj4+ICsKPj4+ICsJZm9yIChpID0gMDsgc2lpOTAyeC0+YXVkaW8uaTJzX2ZpZm9fc2VxdWVu Y2VbaV0gJiYKPj4+ICsJCSAgICAgaSA8IEFSUkFZX1NJWkUoc2lpOTAyeC0+YXVkaW8uaTJzX2Zp Zm9fc2VxdWVuY2UpOyBpKyspCj4+PiArCQlyZWdtYXBfd3JpdGUoc2lpOTAyeC0+cmVnbWFwLAo+ Pj4gKwkJCSAgICAgU0lJOTAyWF9UUElfSTJTX0VOQUJMRV9NQVBQSU5HX1JFRywKPj4+ICsJCQkg ICAgIHNpaTkwMngtPmF1ZGlvLmkyc19maWZvX3NlcXVlbmNlW2ldKTsKPj4+ICsKPj4+ICsJcmV0 ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9UUElfQVVESU9fQ09ORklH X0JZVEUzX1JFRywKPj4+ICsJCQkgICBjb25maWdfYnl0ZTNfcmVnKTsKPj4+ICsJaWYgKHJldCkK Pj4+ICsJCWdvdG8gb3V0Owo+Pj4gKwo+Pj4gKwlyZXQgPSByZWdtYXBfYnVsa193cml0ZShzaWk5 MDJ4LT5yZWdtYXAsIFNJSTkwMlhfVFBJX0kyU19TVFJNX0hEUl9CQVNFLAo+Pj4gKwkJCQlwYXJh bXMtPmllYy5zdGF0dXMsCj4+PiArCQkJCW1pbigoc2l6ZV90KSBTSUk5MDJYX1RQSV9JMlNfU1RS TV9IRFJfU0laRSwKPj4+ICsJCQkJICAgIHNpemVvZihwYXJhbXMtPmllYy5zdGF0dXMpKSk7Cj4+ PiArCWlmIChyZXQpCj4+PiArCQlnb3RvIG91dDsKPj4+ICsKPj4+ICsJcmV0ID0gaGRtaV9hdWRp b19pbmZvZnJhbWVfcGFjaygmcGFyYW1zLT5jZWEsIGluZm9mcmFtZV9idWYsCj4+PiArCQkJCQlz aXplb2YoaW5mb2ZyYW1lX2J1ZikpOwo+Pj4gKwlpZiAocmV0IDwgMCkgewo+Pj4gKwkJZGV2X2Vy cihkZXYsICIlczogRmFpbGVkIHRvIHBhY2sgYXVkaW8gaW5mb2ZyYW1lOiAlZFxuIiwKPj4+ICsJ CQlfX2Z1bmNfXywgcmV0KTsKPj4+ICsJCWdvdG8gb3V0Owo+Pj4gKwl9Cj4+PiArCj4+PiArCXJl dCA9IHJlZ21hcF9idWxrX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwKPj4+ICsJCQkJU0lJOTAyWF9U UElfTUlTQ19JTkZPRlJBTUVfQkFTRSwKPj4+ICsJCQkJaW5mb2ZyYW1lX2J1ZiwKPj4+ICsJCQkJ bWluKHJldCwgU0lJOTAyWF9UUElfTUlTQ19JTkZPRlJBTUVfU0laRSkpOwo+Pj4gKwlpZiAocmV0 KQo+Pj4gKwkJZ290byBvdXQ7Cj4+PiArCj4+PiArCS8qIERlY29kZSBMZXZlbCAwIFBhY2tldHMg Ki8KPj4+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTkRf U0VUX1BBR0UsIDB4MDIpOwo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZ290byBvdXQ7Cj4+PiArCj4+ PiArCXJldCA9IHJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhfSU5EX09GRlNF VCwgMHgyNCk7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlnb3RvIG91dDsKPj4+ICsKPj4+ICsJcmV0 ID0gcmVnbWFwX3dyaXRlKHNpaTkwMngtPnJlZ21hcCwgU0lJOTAyWF9JTkRfVkFMVUUsIDB4MDIp Owo+Pj4gKwlpZiAocmV0KQo+Pj4gKwkJZ290byBvdXQ7Cj4+PiArCj4+PiArCWRldl9kYmcoZGV2 LCAiJXM6IGhkbWkgYXVkaW8gZW5hYmxlZFxuIiwgX19mdW5jX18pOwo+Pj4gK291dDoKPj4+ICsJ bXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+PiArCj4+PiArCWlmIChyZXQpIHsKPj4+ ICsJCWNsa19kaXNhYmxlX3VucHJlcGFyZShzaWk5MDJ4LT5hdWRpby5tY2xrKTsKPj4+ICsJCWRl dl9lcnIoZGV2LCAiJXM6IGhkbWkgYXVkaW8gZW5hYmxlIGZhaWxlZDogJWRcbiIsIF9fZnVuY19f LAo+Pj4gKwkJCXJldCk7Cj4+PiArCX0KPj4+ICsKPj4+ICsJcmV0dXJuIHJldDsKPj4+ICt9Cj4+ PiArCj4+PiArc3RhdGljIHZvaWQgc2lpOTAyeF9hdWRpb19zaHV0ZG93bihzdHJ1Y3QgZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEpCj4+PiArewo+Pj4gKwlzdHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+Pj4gKwo+Pj4gKwltdXRleF9sb2NrKCZzaWk5MDJ4LT5t dXRleCk7Cj4+PiArCj4+PiArCXJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJSTkwMlhf VFBJX0FVRElPX0NPTkZJR19CWVRFMl9SRUcsCj4+PiArCQkgICAgIFNJSTkwMlhfVFBJX0FVRElP X0lOVEVSRkFDRV9ESVNBQkxFKTsKPj4+ICsKPj4+ICsJbXV0ZXhfdW5sb2NrKCZzaWk5MDJ4LT5t dXRleCk7Cj4+PiArCj4+PiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShzaWk5MDJ4LT5hdWRpby5t Y2xrKTsKPj4+ICt9Cj4+PiArCj4+PiAraW50IHNpaTkwMnhfYXVkaW9fZGlnaXRhbF9tdXRlKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgYm9vbCBlbmFibGUpCj4+PiArewo+Pj4gKwlz dHJ1Y3Qgc2lpOTAyeCAqc2lpOTAyeCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+Pj4gKwo+Pj4g KwltdXRleF9sb2NrKCZzaWk5MDJ4LT5tdXRleCk7Cj4+PiArCj4+PiArCXNpaTkwMnhfbXV0ZShz aWk5MDJ4LCBlbmFibGUpOwo+Pj4gKwo+Pj4gKwltdXRleF91bmxvY2soJnNpaTkwMngtPm11dGV4 KTsKPj4+ICsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgc2lp OTAyeF9hdWRpb19nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4+ICsJ CQkJIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGxlbikKPj4+ICt7Cj4+PiArCXN0cnVjdCBzaWk5MDJ4 ICpzaWk5MDJ4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+PiArCj4+PiArCW11dGV4X2xvY2so JnNpaTkwMngtPm11dGV4KTsKPj4+ICsKPj4+ICsJbWVtY3B5KGJ1Ziwgc2lpOTAyeC0+Y29ubmVj dG9yLmVsZCwKPj4+ICsJICAgICAgIG1pbihzaXplb2Yoc2lpOTAyeC0+Y29ubmVjdG9yLmVsZCks IGxlbikpOwo+Pgo+PiBJIGFtIG5vdCBmYW1pbGlhciB3aXRoIGF1ZGlvIHN0dWZmLCBzbyBmb3Jn aXZlIG15IGlnbm9yYW5jZSA6KQo+Pgo+PiBXaGF0IGhhcHBlbnMgd2hlbiB0aGlzIG9yIG90aGVy IGF1ZGlvIGNhbGxiYWNrcyBpcyBjYWxsZWQ6Cj4+Cj4+IDEuIGJlZm9yZSBzdGggaXMgcGx1Z2dl ZCBpbiBjb25uZWN0b3IuCj4+PiAyLiBhZnRlciB1bnBsdWcuCj4+IDMuIHBsdWcvdW4tcGx1ZyBo YXBwZW5zIGJldHdlZW4gdGhlc2UgY2FsbHMuCj4+Cj4gVGhlIGF1ZGlvIHNpZGUgY2FsbHMgdGhp cyBhdCB0aGUgdGltZSBvZiBhdWRpbyBwbGF5YmFjayByZXF1ZXN0LiBJZgo+IHRoZXJlIGlzIG5v IHZhbGlkIGVsZCBhdCB0aGF0IHRpbWUsIHRoZSBwbGF5YmFjayByZXF1ZXN0IGZhaWxzLiBUaGUg ZWxkCj4gaXMgb25seSB1c2VkIGF0IHRoZSBwbGF5YmFjayBzdGFydCB0aW1lLCBuZXZlciBhZnRl ciBpdC4KPgo+IFdoZW4gYW4gYXVkaW8gcGxheWJhY2sgaXMgcnVubmluZyBpdCB3ZSBkbyBub3Qg ZG8gYW55dGhpbmcgdG8gdW50aWwgdGhlCj4gcGxheWJhY2sgaXMgc3RvcHBlZC4gRS5nLiBpZiBw bHVnL3VuLXBsdWcgaGFwcGVucyB3ZSBqdXN0IGtlZXAgcGxheWluZwo+IHdpdGggdGhlIG9yaWdp bmFsIGNvbmZpZ3VyYXRpb24gKG15IGZpcnN0IHZlcnNpb24gaGFkIGFuIGFib3J0IGNhbGwgYmFj awo+IHRvIGFib3J0IHBsYXliYWNrIGluIHVucGx1ZyBldmVudCwgYnV0IHRoYXQgd2FzIHJlZnVz ZWQgaW4gdGhlIHJldmlld3MpLgo+Cj4gSWYgdGhlIGNhYmxlIGlzIG5ldmVyIHBsdWdnZWQgYWdh aW4sIG9yIHRoZSBuZXcgZGlzcGxheSBkb2VzIG5vdCBoYXZlCj4gYXVkaW8gc3VwcG9ydCwgdGhl IGkycyBqdXN0IGtlZXBzIGJhbmdpbmcgdGhlIGJpdHMgdG8gZGV2IG51bGwgYW5kIGF1ZGlvCj4g ZGF0YSBrZWVwcyBkcmFpbmdpbmcgYXdheS4gV2hlbiBjYWJsZSBpcyBhZ2FpbiBwbHVnZ2VkIHRv IGF1ZGlvIGNhcGFibGUKPiBkaXNwbGF5LCBpdCBjb250aW51ZXMgcGxheWluZyB0aGVyZSAoYW5k IGl0IG5ldmVyIHN0b3BwZWQgaW4gYmV0d2Vlbi4KPgo+IFRoaXMgY29tZXMgY2xvc2VzdCB0byBh bHJlYWR5IGVzdGFibGlzaGVkIGJlaGF2aW91ciB3aXRoIGFscmVhZHkKPiBleGlzdGluZyBIRE1J IGF1ZGlvIGltcGxlbWVudGF0aW9ucy4gVGhpcyBpcyBhbHNvIHVzdWFsbHkgdGhlIHByZWZlcnJl ZAo+IGJlaGF2aW9yLCBiZWNhdXNlIHJlc2VibGVzIGhvdyB2aWRlbyBzdHJlYW0gcGxheWJhY2sg YmVoYXZlcy4KPgo+IEkga25vdyB2ZXJ5IHdlbGwgdGhhdCB0aGlzIGlzIG5vdCB0aGUgcGVyZmVj dCBzb2x1dGlvbi4gVGhlIHBlcmZlY3QKPiBzb2x1dGlvbiB3b3VsZCBoYXZlIHRoZSBhYm9ydCBj YWxsYmFjayB0aGVyZSwgYW5kIHNvbWUgbWVjaGFuaXNtIGFib3ZlCj4gdGhhdCB0byBkZWFsIHdp dGggdGhlIGF1ZGlvIHBsYXliYWNrIGJlaW5nIGFib3J0ZWQgYW5kIHRoZSBkZXZpY2UKPiBiZWNv bWluZyBhdmFpbGFibGUgYWdhaW4uIFRoaXMgd291bGQgcmVxdWlyZSBjby1vcGVyYXRpb24gZnJv bQo+IHVzZXJzcGFjZS4gSG93ZXZlciwgdGhlIHdvcmxkIGlzIG5vdCByZWFkeSBhbmQgdGhpcyBp cyBhIGJlc3QgZWZmb3J0Cj4gaW1wbGVtZW50YXRpb24uCgoKT0ssIHRoYW5rcyBmb3IgZXhwbGFu YXRpb24uCgoKPgo+PiBBbHNvIEkgZG8gbm90IHNlZSBob3RwbHVnL3VucGx1ZyBub3RpZmljYXRp b24gbWVjaGFuaXNtIHRvIGF1ZGlvCj4+IHN1YnN5c3RlbS4gSXQgbG9va3Mgc3VzcGljaW91cy4K Pj4KPiBZZXMsIGFzIG1lbnRpb25lZCBhYm92ZSwgSSBoYWQgaXQgaW4gbXkgZmlyc3QgdmVyc2lv biBvZiBoZG1pLWNvZGVjLCBidXQKPiBpdCB3YXMgbmV2ZXIgYWNjZXB0ZWQgdG8gbWFpbmxpbmUu IEhvd2V2ZXIsIGluIHByYWN0aWNlIHRoaXMgaGFzIG5vdAo+IGJlZW4gYSBwcm9ibGVtLiBUaGUg SERNSSBhdWRpbyBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgZW5jb2RlciBjaGlwcyBJCj4gaGF2ZSBz ZWVuIGlzIHVzdWFsbHkgcXVpdGUgaW5kZXBlbmRlbnQgZnJvbSB0aGUgdmlkZW8gc2lkZSB3b3Jr aW5ncy4KPgo+PiBSZWdhcmRzCj4+Cj4+IEFuZHJ6ZWoKPj4KPiBUaGFua3MsCj4gSnlyaQo+Cj4+ Cj4+PiArCj4+PiArCW11dGV4X3VubG9jaygmc2lpOTAyeC0+bXV0ZXgpOwo+Pj4gKwo+Pj4gKwly ZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBoZG1pX2NvZGVj X29wcyBzaWk5MDJ4X2F1ZGlvX2NvZGVjX29wcyA9IHsKPj4+ICsJLmh3X3BhcmFtcyA9IHNpaTkw MnhfYXVkaW9faHdfcGFyYW1zLAo+Pj4gKwkuYXVkaW9fc2h1dGRvd24gPSBzaWk5MDJ4X2F1ZGlv X3NodXRkb3duLAo+Pj4gKwkuZGlnaXRhbF9tdXRlID0gc2lpOTAyeF9hdWRpb19kaWdpdGFsX211 dGUsCj4+PiArCS5nZXRfZWxkID0gc2lpOTAyeF9hdWRpb19nZXRfZWxkLAo+Pj4gK307Cj4+PiAr Cj4+PiArc3RhdGljIGludCBzaWk5MDJ4X2F1ZGlvX2NvZGVjX2luaXQoc3RydWN0IHNpaTkwMngg KnNpaTkwMngsCj4+PiArCQkJCSAgICBzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+PiArewo+Pj4gKwlz dGF0aWMgY29uc3QgdTggYXVkaW9fZmlmb19pZFtdID0gewo+Pj4gKwkJU0lJOTAyWF9UUElfSTJT X0NPTkZJR19GSUZPMCwKPj4+ICsJCVNJSTkwMlhfVFBJX0kyU19DT05GSUdfRklGTzEsCj4+PiAr CQlTSUk5MDJYX1RQSV9JMlNfQ09ORklHX0ZJRk8yLAo+Pj4gKwkJU0lJOTAyWF9UUElfSTJTX0NP TkZJR19GSUZPMywKPj4+ICsJfTsKPj4+ICsJc3RhdGljIGNvbnN0IHU4IGkyc19sYW5lX2lkW10g PSB7Cj4+PiArCQlTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMCwKPj4+ICsJCVNJSTkwMlhfVFBJ X0kyU19TRUxFQ1RfU0QxLAo+Pj4gKwkJU0lJOTAyWF9UUElfSTJTX1NFTEVDVF9TRDIsCj4+PiAr CQlTSUk5MDJYX1RQSV9JMlNfU0VMRUNUX1NEMywKPj4+ICsJfTsKPj4+ICsJc3RydWN0IGhkbWlf Y29kZWNfcGRhdGEgY29kZWNfZGF0YSA9IHsKPj4+ICsJCS5vcHMgPSAmc2lpOTAyeF9hdWRpb19j b2RlY19vcHMsCj4+PiArCQkuaTJzID0gMSwgLyogT25seSBpMnMgc3VwcG9ydCBmb3Igbm93LiAq Lwo+Pj4gKwkJLnNwZGlmID0gMCwKPj4+ICsJCS5tYXhfaTJzX2NoYW5uZWxzID0gMCwKPj4+ICsJ fTsKPj4+ICsJdTggbGFuZXNbNF07Cj4+PiArCXUzMiBudW1fbGFuZXMsIGk7Cj4+PiArCj4+PiAr CW51bV9sYW5lcyA9IG9mX3Byb3BlcnR5X3JlYWRfdmFyaWFibGVfdThfYXJyYXkoZGV2LT5vZl9u b2RlLAo+Pj4gKwkJCQkJCSAgICAgICAic2lsLGkycy1kYXRhLWxhbmVzIiwKPj4+ICsJCQkJCQkg ICAgICAgbGFuZXMsIDEsCj4+PiArCQkJCQkJICAgICAgIEFSUkFZX1NJWkUobGFuZXMpKTsKPj4+ ICsJaWYgKG51bV9sYW5lcyA8IDApIHsKPj4+ICsJCWlmIChudW1fbGFuZXMgPT0gLUVJTlZBTCkK Pj4+ICsJCQlkZXZfZGJnKGRldiwKPj4+ICsJCQkJIiVzOiBObyBcInNpbCxpMnMtZGF0YS1sYW5l c1wiLCBubyBhdWRpb1xuIiwKPj4+ICsJCQkJX19mdW5jX18pOwo+Pj4gKwkJZWxzZQo+Pj4gKwkJ CWRldl9lcnIoZGV2LAo+Pj4gKwkJCQkiJXM6IEVycm9yIGdldHRpbiBcInNpbCxpMnMtZGF0YS1s YW5lc1wiOiAlZFxuIiwKPj4+ICsJCQkJX19mdW5jX18sIG51bV9sYW5lcyk7Cj4+PiArCQlyZXR1 cm4gMDsKPj4+ICsJfQo+Pj4gKwljb2RlY19kYXRhLm1heF9pMnNfY2hhbm5lbHMgPSAyICogbnVt X2xhbmVzOwo+Pj4gKwo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2xhbmVzOyBpKyspCj4+PiAr CQlzaWk5MDJ4LT5hdWRpby5pMnNfZmlmb19zZXF1ZW5jZVtpXSB8PSBhdWRpb19maWZvX2lkW2ld IHwKPj4+ICsJCQlpMnNfbGFuZV9pZFtsYW5lc1tpXV0gfAlTSUk5MDJYX1RQSV9JMlNfRklGT19F TkFCTEU7Cj4+PiArCj4+PiArCWlmIChJU19FUlIoc2lpOTAyeC0+YXVkaW8ubWNsaykpIHsKPj4+ ICsJCWRldl9lcnIoZGV2LCAiJXM6IE5vIGNsb2NrIChhdWRpbyBtY2xrKSBmb3VuZDogJWxkXG4i LAo+Pj4gKwkJCV9fZnVuY19fLCBQVFJfRVJSKHNpaTkwMngtPmF1ZGlvLm1jbGspKTsKPj4+ICsJ CXJldHVybiAwOwo+Pj4gKwl9Cj4+PiArCj4+PiArCXNpaTkwMngtPmF1ZGlvLnBkZXYgPSBwbGF0 Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgKPj4+ICsJCWRldiwgSERNSV9DT0RFQ19EUlZfTkFN RSwgUExBVEZPUk1fREVWSURfQVVUTywKPj4+ICsJCSZjb2RlY19kYXRhLCBzaXplb2YoY29kZWNf ZGF0YSkpOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHNpaTkwMngtPmF1ZGlv LnBkZXYpOwo+Pj4gK30KPj4+ICsKPj4+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5n ZSBzaWk5MDJ4X3ZvbGF0aWxlX3Jhbmdlc1tdID0gewo+Pj4gIAl7IC5yYW5nZV9taW4gPSAwLCAu cmFuZ2VfbWF4ID0gMHhmZiB9LAo+Pj4gIH07Cj4+PiBAQCAtMzM2LDYgKzc3OCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2FjY2Vzc190YWJsZSBzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxl ID0gewo+Pj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBzaWk5MDJ4X3JlZ21h cF9jb25maWcgPSB7Cj4+PiAgCS5yZWdfYml0cyA9IDgsCj4+PiAgCS52YWxfYml0cyA9IDgsCj4+ PiArCS5tYXhfcmVnaXN0ZXIgPSBTSUk5MDJYX1RQSV9NSVNDX0lORk9GUkFNRV9FTkQsCj4+PiAg CS52b2xhdGlsZV90YWJsZSA9ICZzaWk5MDJ4X3ZvbGF0aWxlX3RhYmxlLAo+Pj4gIAkuY2FjaGVf dHlwZSA9IFJFR0NBQ0hFX05PTkUsCj4+PiAgfTsKPj4+IEBAIC01MDgsNiArOTUxLDggQEAgc3Rh dGljIGludCBzaWk5MDJ4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4+PiAgCQly ZXR1cm4gUFRSX0VSUihzaWk5MDJ4LT5yZXNldF9ncGlvKTsKPj4+ICAJfQo+Pj4gIAo+Pj4gKwlt dXRleF9pbml0KCZzaWk5MDJ4LT5tdXRleCk7Cj4+PiArCj4+PiAgCXNpaTkwMnhfcmVzZXQoc2lp OTAyeCk7Cj4+PiAgCj4+PiAgCXJldCA9IHJlZ21hcF93cml0ZShzaWk5MDJ4LT5yZWdtYXAsIFNJ STkwMlhfUkVHX1RQSV9SUUIsIDB4MCk7Cj4+PiBAQCAtNTQ4LDYgKzk5Myw4IEBAIHN0YXRpYyBp bnQgc2lpOTAyeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+Pj4gIAlzaWk5MDJ4 LT5icmlkZ2UudGltaW5ncyA9ICZkZWZhdWx0X3NpaTkwMnhfdGltaW5nczsKPj4+ICAJZHJtX2Jy aWRnZV9hZGQoJnNpaTkwMngtPmJyaWRnZSk7Cj4+PiAgCj4+PiArCXNpaTkwMnhfYXVkaW9fY29k ZWNfaW5pdChzaWk5MDJ4LCBkZXYpOwo+Pj4gKwo+Pj4gIAlpMmNfc2V0X2NsaWVudGRhdGEoY2xp ZW50LCBzaWk5MDJ4KTsKPj4+ICAKPj4+ICAJc2lpOTAyeC0+aTJjbXV4ID0gaTJjX211eF9hbGxv YyhjbGllbnQtPmFkYXB0ZXIsIGRldiwKPj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVs