From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] drm/i915: Pass atomic state to backlight enable/disable/set callbacks. Date: Mon, 12 Jun 2017 15:48:04 +0300 Message-ID: <20170612124804.GA12629@intel.com> References: <20170612102115.23665-1-maarten.lankhorst@linux.intel.com> <20170612102115.23665-4-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id C85CF897CD for ; Mon, 12 Jun 2017 12:48:07 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170612102115.23665-4-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdW4gMTIsIDIwMTcgYXQgMTI6MjE6MTVQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gUGFzcyBjcnRjX3N0YXRlIHRvIHRoZSBlbmFibGUgY2FsbGJhY2ssIGFuZCBj b25uZWN0b3Jfc3RhdGUgdG8gYWxsIGNhbGxiYWNrcy4KPiBUaGlzIHdpbGwgZWxpbWluYXRlIHRo ZSBuZWVkIHRvIGd1ZXNzIGZvciB0aGUgY29ycmVjdCBwaXBlIGluIHRoZXNlCj4gY2FsbGJhY2tz Lgo+IAo+IFRoZSBjcnRjIHN0YXRlIGlzIHJlcXVpcmVkIGZvciBwY2hfZW5hYmxlX2JhY2tsaWdo dCB0byBvYnRhaW4gdGhlIGNvcnJlY3QKPiBjcHVfdHJhbnNjb2Rlci4KPiAKPiBpbnRlbF9kcF9h dXhfYmFja2xpZ2h0J3Mgc2V0dXAgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBodyByZWFkb3V0 LCBzbwo+IGNydGNfc3RhdGUgYW5kIGNvbm5lY3Rvcl9zdGF0ZS0+YmVzdF9lbmNvZGVyIGFyZSBO VUxMIGluIHRoZSBlbmFibGUoKQo+IGFuZCBzZXQoKSBjYWxsYmFja3MuCgpUaGlzIGxvb2tzIGxp a2UgYSBidWcgaW4gdGhlIGNvZGUuIE1hc3NhZ2luZyB0aGUgYmFja2xpZ2h0IGR1cmluZyBzZXR1 cApkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIEl0IHNob3VsZCByZWFk IHRoZSBjdXJyZW50CnN0YXRlIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGl0LiBTbyB0aGlzIGlzIHNv bWV0aGluZyB0aGF0IHRoZSByZWxldmFudApwZW9wbGUgc2hvdWxkIHRha2UgYSBsb29rIGF0LiBD Yzppbmcgc29tZSBwZW9wbGUuLi4KCkFueXdheXMsIHRoZSBzZXJpZXMgbG9va3MgZ29vZCB0byBt ZSwgc28KUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cgo+IAo+IFRoaXMgZml4ZXMgdGhlIGZvbGxvd2luZyBzZXJpZXMgb2Ygd2FybnMg ZnJvbSBpbnRlbF9nZXRfcGlwZV9mcm9tX2Nvbm5lY3RvcjoKPiBbICAyMTkuOTY4NDI4XSAtLS0t LS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KPiBbICAyMTkuOTY4NDgxXSBXQVJOSU5H OiBDUFU6IDMgUElEOiAyNDU3IGF0Cj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jOjEzODgxCj4gaW50ZWxfZ2V0X3BpcGVfZnJvbV9jb25uZWN0b3IrMHg2Mi8weDkwIFtpOTE1 XQo+IFsgIDIxOS45Njg0ODNdCj4gV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZkZXYt Pm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpKQo+IFsgIDIxOS45Njg0ODVdIE1vZHVsZXMg bGlua2VkIGluOiBubHNfaXNvODg1OV8xIHNuZF9oZGFfY29kZWNfaGRtaQo+IHNuZF9oZGFfY29k ZWNfcmVhbHRlayBzbmRfaGRhX2NvZGVjX2dlbmVyaWMgc25kX2hkYV9pbnRlbCBzbmRfaGRhX2Nv ZGVjCj4gc25kX2hkYV9jb3JlIHNuZF9od2RlcCBzbmRfcGNtIGludGVsX3JhcGwgeDg2X3BrZ190 ZW1wX3RoZXJtYWwgY29yZXRlbXAKPiBrdm1faW50ZWwgc25kX3NlcV9taWRpIHNuZF9zZXFfbWlk aV9ldmVudCBrdm0gc25kX3Jhd21pZGkgaXJxYnlwYXNzCj4gY3JjdDEwZGlmX3BjbG11bCBjcmMz Ml9wY2xtdWwgZ2hhc2hfY2xtdWxuaV9pbnRlbCBwY2JjIHNuZF9zZXEKPiBzbmRfc2VxX2Rldmlj ZSBzZXJpb19yYXcgc25kX3RpbWVyIGFlc25pX2ludGVsIGFlc194ODZfNjQgY3J5cHRvX3NpbWQK PiBnbHVlX2hlbHBlciBjcnlwdGQgbHBjX2ljaCBzbmQgbWVpX21lIHNocGNocCBzb3VuZGNvcmUg bWVpIHJma2lsbF9ncGlvCj4gbWFjX2hpZCBpbnRlbF9wbWNfaXBjIHBhcnBvcnRfcGMgcHBkZXYg bHAgcGFycG9ydCBpcF90YWJsZXMgeF90YWJsZXMKPiBhdXRvZnM0IGhpZF9nZW5lcmljIHVzYmhp ZCBpZ2IgYWhjaSBpOTE1IHhoY2lfcGNpIGRjYSB4aGNpX2hjZCBwdHAKPiBzZGhjaV9wY2kgc2Ro Y2kgbGliYWhjaSBwcHNfY29yZSBpMmNfaGlkIGhpZCB2aWRlbwo+IFsgIDIxOS45Njg1NzNdIENQ VTogMyBQSUQ6IDI0NTcgQ29tbToga3dvcmtlci91ODozIFRhaW50ZWQ6IEcgICAgICAgIFcKPiA0 LjEwLjAtdGlwLTIwMTcwMzAxMDE1OSsgIzIKPiBbICAyMTkuOTY4NTc1XSBIYXJkd2FyZSBuYW1l OiBJbnRlbCBDb3JwLiBCcm94dG9uIFAvTk9URUJPT0ssIEJJT1MKPiBBUExLUlZQQS5YNjQuMDE0 NC5CMTAuMTYwNjI3MDAwNiAwNi8yNy8yMDE2Cj4gWyAgMjE5Ljk2ODYyN10gV29ya3F1ZXVlOiBl dmVudHNfdW5ib3VuZCBpbnRlbF9hdG9taWNfY29tbWl0X3dvcmsgW2k5MTVdCj4gWyAgMjE5Ljk2 ODYyOV0gQ2FsbCBUcmFjZToKPiBbICAyMTkuOTY4NjQwXSAgZHVtcF9zdGFjaysweDYzLzB4ODcK PiBbICAyMTkuOTY4NjQ2XSAgX193YXJuKzB4ZDEvMHhmMAo+IFsgIDIxOS45Njg2NTFdICB3YXJu X3Nsb3dwYXRoX2ZtdCsweDRmLzB4NjAKPiBbICAyMTkuOTY4NjU3XSAgPyBkcm1fcHJpbnRrKzB4 OTcvMHhhMAo+IFsgIDIxOS45Njg3MDhdICBpbnRlbF9nZXRfcGlwZV9mcm9tX2Nvbm5lY3Rvcisw eDYyLzB4OTAgW2k5MTVdCj4gWyAgMjE5Ljk2ODc1Nl0gIGludGVsX3BhbmVsX2VuYWJsZV9iYWNr bGlnaHQrMHgxOS8weGYwIFtpOTE1XQo+IFsgIDIxOS45Njg4MDRdICBpbnRlbF9lZHBfYmFja2xp Z2h0X29uLnBhcnQuMjIrMHgzMy8weDQwIFtpOTE1XQo+IFsgIDIxOS45Njg4NTJdICBpbnRlbF9l ZHBfYmFja2xpZ2h0X29uKzB4MTgvMHgyMCBbaTkxNV0KPiBbICAyMTkuOTY4OTAwXSAgaW50ZWxf ZW5hYmxlX2RkaSsweDk0LzB4YzAgW2k5MTVdCj4gWyAgMjE5Ljk2ODk1MF0gIGludGVsX2VuY29k ZXJzX2VuYWJsZS5pc3JhLjkzKzB4NzcvMHg5MCBbaTkxNV0KPiBbICAyMTkuOTY5MDAwXSAgaGFz d2VsbF9jcnRjX2VuYWJsZSsweDMxMC8weDdmMCBbaTkxNV0KPiBbICAyMTkuOTY5MDUxXSAgaW50 ZWxfdXBkYXRlX2NydGMrMHg1OC8weDEwMCBbaTkxNV0KPiBbICAyMTkuOTY5MTAxXSAgc2tsX3Vw ZGF0ZV9jcnRjcysweDIxOC8weDI0MCBbaTkxNV0KPiBbICAyMTkuOTY5MTUzXSAgaW50ZWxfYXRv bWljX2NvbW1pdF90YWlsKzB4MzUwLzB4MTAwMCBbaTkxNV0KPiBbICAyMTkuOTY5MTU5XSAgPyB2 dGltZV9hY2NvdW50X2lkbGUrMHhlLzB4NTAKPiBbICAyMTkuOTY5MTY0XSAgPyBmaW5pc2hfdGFz a19zd2l0Y2grMHgxMDcvMHgyNTAKPiBbICAyMTkuOTY5MjE0XSAgaW50ZWxfYXRvbWljX2NvbW1p dF93b3JrKzB4MTIvMHgyMCBbaTkxNV0KPiBbICAyMTkuOTY5MjE5XSAgcHJvY2Vzc19vbmVfd29y aysweDE1My8weDNmMAo+IFsgIDIxOS45NjkyMjNdICB3b3JrZXJfdGhyZWFkKzB4MTJiLzB4NGIw Cj4gWyAgMjE5Ljk2OTIyN10gIGt0aHJlYWQrMHgxMDEvMHgxNDAKPiBbICAyMTkuOTY5MjMwXSAg PyByZXNjdWVyX3RocmVhZCsweDM0MC8weDM0MAo+IFsgIDIxOS45NjkyMzNdICA/IGt0aHJlYWRf cGFyaysweDkwLzB4OTAKPiBbICAyMTkuOTY5MjM3XSAgPyBkb19zeXNjYWxsXzY0KzB4NmUvMHgx ODAKPiBbICAyMTkuOTY5MjQzXSAgcmV0X2Zyb21fZm9yaysweDJjLzB4NDAKPiBbICAyMTkuOTY5 MjQ2XSAtLS1bIGVuZCB0cmFjZSAwYThmYTE5Mzg3YjlhZDZkIF0tLS0KPiAKPiBCdWd6aWxsYTog aHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDIyCj4gU2ln bmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2ts aWdodC5jICB8ICAyNSArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICAgICAgICAgICAgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2Rj c19iYWNrbGlnaHQuYyB8ICAyMiArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bh bmVsLmMgICAgICAgICAgICAgfCAxNTcgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICA0IGZp bGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCj4gaW5kZXggYTA5 OTVjMDBmYzg0Li42Y2M2Mjk4MGQwZGEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCj4gQEAgLTc4LDggKzc4LDEzIEBAIHN0YXRpYyB1aW50 MzJfdCBpbnRlbF9kcF9hdXhfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4gICAqIDgtYml0IG9yIDE2IGJpdCB2YWx1ZSAoTVNCIGFuZCBMU0IpCj4gICAq Lwo+ICBzdGF0aWMgdm9pZAo+IC1pbnRlbF9kcF9hdXhfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZlbCkKPiAraW50ZWxfZHBfYXV4X3NldF9i YWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHUz MiBsZXZlbCkKPiAgewo+ICsJLyoKPiArCSAqIGNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciBpcyBs aWtlbHkgTlVMTCB3aGVuIGNhbGxlZCBmcm9tCj4gKwkgKiBpbnRlbF9kcF9hdXhfc2V0dXBfYmFj a2xpZ2h0KCkKPiArCSAqLwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g dG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJh c2UpOwo+ICAJdWludDhfdCB2YWxzWzJdID0geyAweDAgfTsKPiAgCj4gQEAgLTk3LDggKzEwMiwx NCBAQCBpbnRlbF9kcF9hdXhfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IsIHUzMiBsZXZlbCkKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxf ZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJCQkgIGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVj dG9yKTsKPiArCS8qCj4gKwkgKiBjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIgKGFuZCBjcnRjX3N0 YXRlKSBhcmUgTlVMTCB3aGVuIGNhbGxlZCBmcm9tCj4gKwkgKiBpbnRlbF9kcF9hdXhfc2V0dXBf YmFja2xpZ2h0KCkKPiArCSAqLwo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190 b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKPiAgCXVpbnQ4X3QgZHBjZF9i dWYgPSAwOwo+ICAJdWludDhfdCBlZHBfYmFja2xpZ2h0X21vZGUgPSAwOwo+IEBAIC0xMzEsMTIg KzE0MiwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAl9Cj4gIAo+ICAJc2V0X2F1eF9iYWNr bGlnaHRfZW5hYmxlKGludGVsX2RwLCB0cnVlKTsKPiAtCWludGVsX2RwX2F1eF9zZXRfYmFja2xp Z2h0KGNvbm5lY3RvciwgY29ubmVjdG9yLT5wYW5lbC5iYWNrbGlnaHQubGV2ZWwpOwo+ICsJaW50 ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQoY29ubl9zdGF0ZSwgY29ubmVjdG9yLT5wYW5lbC5iYWNr bGlnaHQubGV2ZWwpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhfZGlzYWJs ZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMg dm9pZCBpbnRlbF9kcF9hdXhfZGlzYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlKQo+ICB7Cj4gLQlzZXRfYXV4X2JhY2tsaWdodF9l bmFibGUoZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJhc2UpLCBmYWxzZSk7 Cj4gKwlzZXRfYXV4X2JhY2tsaWdodF9lbmFibGUoZW5jX3RvX2ludGVsX2RwKG9sZF9jb25uX3N0 YXRlLT5iZXN0X2VuY29kZXIpLCBmYWxzZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxf ZHBfYXV4X3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gQEAgLTE0NSw3ICsxNTYsNyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2F1eF9zZXR1cF9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNl KTsKPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAg Cj4gLQlpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChjb25uZWN0b3IpOwo+ICsJaW50ZWxf ZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQoTlVMTCwgY29ubmVjdG9yLT5iYXNlLnN0YXRlKTsKPiAg Cj4gIAlpZiAoaW50ZWxfZHAtPmVkcF9kcGNkWzJdICYgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRO RVNTX0JZVEVfQ09VTlQpCj4gIAkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSAweEZGRkY7Cj4gQEAg LTE2NSw3ICsxNzYsNyBAQCBpbnRlbF9kcF9hdXhfZGlzcGxheV9jb250cm9sX2NhcGFibGUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJhc2UpOwo+ ICAKPiAtCS8qIENoZWNrIHRoZSAgZURQIERpc3BsYXkgY29udHJvbCBjYXBhYmlsaXRpZXMgcmVn aXN0ZXJzIHRvIGRldGVybWluZSBpZgo+ICsJLyogQ2hlY2sgdGhlIGVEUCBEaXNwbGF5IGNvbnRy b2wgY2FwYWJpbGl0aWVzIHJlZ2lzdGVycyB0byBkZXRlcm1pbmUgaWYKPiAgCSAqIHRoZSBwYW5l bCBjYW4gc3VwcG9ydCBiYWNrbGlnaHQgY29udHJvbCBvdmVyIHRoZSBhdXggY2hhbm5lbAo+ICAJ ICovCj4gIAlpZiAoaW50ZWxfZHAtPmVkcF9kcGNkWzFdICYgRFBfRURQX1RDT05fQkFDS0xJR0hU X0FESlVTVE1FTlRfQ0FQICYmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBkYjIw NDJhNzVkNDIuLjE4NTI4YTQ3N2NmNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g QEAgLTI4OCw5ICsyODgsMTAgQEAgc3RydWN0IGludGVsX3BhbmVsIHsKPiAgCQkvKiBDb25uZWN0 b3IgYW5kIHBsYXRmb3JtIHNwZWNpZmljIGJhY2tsaWdodCBmdW5jdGlvbnMgKi8KPiAgCQlpbnQg KCpzZXR1cCkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgcGlw ZSk7Cj4gIAkJdWludDMyX3QgKCpnZXQpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cik7Cj4gLQkJdm9pZCAoKnNldCkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1 aW50MzJfdCBsZXZlbCk7Cj4gLQkJdm9pZCAoKmRpc2FibGUpKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3Rvcik7Cj4gLQkJdm9pZCAoKmVuYWJsZSkoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKTsKPiArCQl2b2lkICgqc2V0KShjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSwgdWludDMyX3QgbGV2ZWwpOwo+ICsJCXZvaWQgKCpkaXNhYmxl KShjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7Cj4gKwkJdm9p ZCAoKmVuYWJsZSkoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g KwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7 Cj4gIAkJdWludDMyX3QgKCpoel90b19wd20pKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiAgCQkJCSAgICAgIHVpbnQzMl90IGh6KTsKPiAgCQl2b2lkICgqcG93ZXIpKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKiwgYm9vbCBlbmFibGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfZGNzX2JhY2tsaWdodC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpX2Rjc19iYWNrbGlnaHQuYwo+IGluZGV4IGFjN2M2MDIwYzQ0My4uNmUw OWNlYjcxNTAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9k Y3NfYmFja2xpZ2h0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfZGNz X2JhY2tsaWdodC5jCj4gQEAgLTYwLDEwICs2MCw5IEBAIHN0YXRpYyB1MzIgZGNzX2dldF9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJcmV0dXJuIGRhdGE7 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGRjc19zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ICtzdGF0aWMgdm9pZCBkY3Nfc2V0X2Jh Y2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwgdTMy IGxldmVsKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IGNvbm5lY3Rv ci0+ZW5jb2RlcjsKPiAtCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRl bF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0g ZW5jX3RvX2ludGVsX2RzaShjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICAJc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpX2RldmljZTsKPiAgCXU4IGRhdGEgPSBsZXZlbDsKPiAgCWVudW0g cG9ydCBwb3J0Owo+IEBAIC03NiwxNCArNzUsMTMgQEAgc3RhdGljIHZvaWQgZGNzX3NldF9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gIAl9 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGRjc19kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3N0YXRpYyB2b2lkIGRjc19kaXNhYmxlX2JhY2ts aWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4g LQlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVy LT5iYXNlKTsKPiArCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9k c2koY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKPiAgCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2Ug KmRzaV9kZXZpY2U7Cj4gIAllbnVtIHBvcnQgcG9ydDsKPiAgCj4gLQlkY3Nfc2V0X2JhY2tsaWdo dChjb25uZWN0b3IsIDApOwo+ICsJZGNzX3NldF9iYWNrbGlnaHQoY29ubl9zdGF0ZSwgMCk7Cj4g IAo+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5kY3NfY2FiY19wb3J0cykg ewo+ICAJCXU4IGNhYmMgPSBQT1dFUl9TQVZFX09GRjsKPiBAQCAtMTEwLDExICsxMDgsMTEgQEAg c3RhdGljIHZvaWQgZGNzX2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZGNzX2VuYWJsZV9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgdm9pZCBk Y3NfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVu Y29kZXI7Cj4gLQlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNp KCZlbmNvZGVyLT5iYXNlKTsKPiAtCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVj dG9yLT5wYW5lbDsKPiArCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRl bF9kc2koY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAq cGFuZWwgPSAmdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3RvciktPnBhbmVs Owo+ICAJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpX2RldmljZTsKPiAgCWVudW0gcG9ydCBw b3J0Owo+ICAKPiBAQCAtMTQyLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIGRjc19lbmFibGVfYmFj a2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCQkJCSAgICZjYWJj LCBzaXplb2YoY2FiYykpOwo+ICAJfQo+ICAKPiAtCWRjc19zZXRfYmFja2xpZ2h0KGNvbm5lY3Rv ciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gKwlkY3Nfc2V0X2JhY2tsaWdodChjb25uX3N0 YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBkY3Nf c2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCA4Y2I1NzMxNjY0MjEuLjk2YzJjYmQ4MTg2 OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC01NjEsMTUgKzU2MSwx OCBAQCBzdGF0aWMgdTMyIGludGVsX3BhbmVsX2dldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICAJcmV0dXJuIHZhbDsKPiAgfQo+ICAKPiAtc3RhdGljIHZv aWQgbHB0X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1 MzIgbGV2ZWwpCj4gK3N0YXRpYyB2b2lkIGxwdF9zZXRfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLCB1MzIgbGV2ZWwpCj4gIHsKPiArCXN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0 YXRlLT5jb25uZWN0b3IpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCj4gIAl1MzIgdmFsID0gSTkxNV9SRUFE KEJMQ19QV01fUENIX0NUTDIpICYgfkJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7Cj4gIAlJOTE1 X1dSSVRFKEJMQ19QV01fUENIX0NUTDIsIHZhbCB8IGxldmVsKTsKPiAgfQo+ICAKPiAtc3RhdGlj IHZvaWQgcGNoX3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y LCB1MzIgbGV2ZWwpCj4gK3N0YXRpYyB2b2lkIHBjaF9zZXRfYmFja2xpZ2h0KGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLCB1MzIgbGV2ZWwpCj4gIHsKPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25u X3N0YXRlLT5jb25uZWN0b3IpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAgCXUzMiB0bXA7Cj4gIAo+IEBAIC01 NzcsOCArNTgwLDkgQEAgc3RhdGljIHZvaWQgcGNoX3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gIAlJOTE1X1dSSVRFKEJMQ19QV01f Q1BVX0NUTCwgdG1wIHwgbGV2ZWwpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpOXh4X3NldF9i YWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4g K3N0YXRpYyB2b2lkIGk5eHhfc2V0X2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSwgdTMyIGxldmVsKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVj dG9yKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29u bmVjdG9yLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5l Y3Rvci0+cGFuZWw7Cj4gIAl1MzIgdG1wLCBtYXNrOwo+IEBAIC02MDQsNTAgKzYwOCw1MSBAQCBz dGF0aWMgdm9pZCBpOXh4X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLCB1MzIgbGV2ZWwpCj4gIAlJOTE1X1dSSVRFKEJMQ19QV01fQ1RMLCB0bXAgfCBsZXZl bCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHZsdl9zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ICtzdGF0aWMgdm9pZCB2bHZfc2V0 X2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwg dTMyIGxldmVsKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0 b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4g LQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dldF9waXBlX2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rv cik7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY29ubl9zdGF0ZS0+Y3J0Yykt PnBpcGU7Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCWlmIChXQVJOX09OKHBpcGUgIT0gUElQRV9BICYm IHBpcGUgIT0gUElQRV9CKSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJdG1wID0gSTkxNV9SRUFEKFZM Vl9CTENfUFdNX0NUTChwaXBlKSkgJiB+QkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSzsKPiAgCUk5 MTVfV1JJVEUoVkxWX0JMQ19QV01fQ1RMKHBpcGUpLCB0bXAgfCBsZXZlbCk7Cj4gIH0KPiAgCj4g LXN0YXRpYyB2b2lkIGJ4dF9zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwgdTMyIGxldmVsKQo+ICtzdGF0aWMgdm9pZCBieHRfc2V0X2JhY2tsaWdodChjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwgdTMyIGxldmVsKQo+ICB7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0 b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxf cGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4gIAo+ICAJSTkxNV9XUklURShCWFRf QkxDX1BXTV9EVVRZKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksIGxldmVsKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgcHdtX3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gK3N0YXRpYyB2b2lkIHB3bV9zZXRfYmFja2xpZ2h0 KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLCB1MzIgbGV2ZWwp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsK PiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmdG9faW50ZWxfY29ubmVjdG9yKGNvbm5f c3RhdGUtPmNvbm5lY3RvciktPnBhbmVsOwo+ICAJaW50IGR1dHlfbnMgPSBESVZfUk9VTkRfVVAo bGV2ZWwgKiBDUkNfUE1JQ19QV01fUEVSSU9EX05TLCAxMDApOwo+ICAKPiAgCXB3bV9jb25maWco cGFuZWwtPmJhY2tsaWdodC5wd20sIGR1dHlfbnMsIENSQ19QTUlDX1BXTV9QRVJJT0RfTlMpOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1pbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xp Z2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ICtpbnRl bF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlLCB1MzIgbGV2ZWwpCj4gIHsKPiArCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0 b3IpOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ ICAKPiAgCURSTV9ERUJVR19EUklWRVIoInNldCBiYWNrbGlnaHQgUFdNID0gJWRcbiIsIGxldmVs KTsKPiAgCj4gIAlsZXZlbCA9IGludGVsX3BhbmVsX2NvbXB1dGVfYnJpZ2h0bmVzcyhjb25uZWN0 b3IsIGxldmVsKTsKPiAtCXBhbmVsLT5iYWNrbGlnaHQuc2V0KGNvbm5lY3RvciwgbGV2ZWwpOwo+ ICsJcGFuZWwtPmJhY2tsaWdodC5zZXQoY29ubl9zdGF0ZSwgbGV2ZWwpOwo+ICB9Cj4gIAo+ICAv KiBzZXQgYmFja2xpZ2h0IGJyaWdodG5lc3MgdG8gbGV2ZWwgaW4gcmFuZ2UgWzAuLm1heF0sIHNj YWxpbmcgd3J0IGh3IG1pbiAqLwo+IC1zdGF0aWMgdm9pZCBpbnRlbF9wYW5lbF9zZXRfYmFja2xp Z2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArc3RhdGljIHZvaWQgaW50 ZWxfcGFuZWxfc2V0X2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZSwKPiAgCQkJCSAgICAgIHUzMiB1c2VyX2xldmVsLCB1MzIgdXNlcl9tYXgpCj4g IHsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5l Y3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRl bF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAgCXUzMiBod19sZXZlbDsKPiBA QCAtNjYzLDcgKzY2OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BhbmVsX3NldF9iYWNrbGlnaHQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJcGFuZWwtPmJhY2tsaWdodC5s ZXZlbCA9IGh3X2xldmVsOwo+ICAKPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQpCj4g LQkJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIGh3X2xldmVs KTsKPiArCQlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5fc3RhdGUsIGh3 X2xldmVsKTsKPiAgCj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5iYWNrbGlnaHRfbG9jayk7 Cj4gIH0KPiBAQCAtNzAyLDE3ICs3MDcsMTggQEAgdm9pZCBpbnRlbF9wYW5lbF9zZXRfYmFja2xp Z2h0X2FjcGkoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUKPiAg CQkJCQkgcGFuZWwtPmJhY2tsaWdodC5kZXZpY2UtPnByb3BzLm1heF9icmlnaHRuZXNzKTsKPiAg Cj4gIAlpZiAocGFuZWwtPmJhY2tsaWdodC5lbmFibGVkKQo+IC0JCWludGVsX3BhbmVsX2FjdHVh bGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBod19sZXZlbCk7Cj4gKwkJaW50ZWxfcGFuZWxf YWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0YXRlLCBod19sZXZlbCk7Cj4gIAo+ICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YmFja2xpZ2h0X2xvY2spOwo+ICB9Cj4gIAo+IC1zdGF0aWMg dm9pZCBscHRfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ICtzdGF0aWMgdm9pZCBscHRfZGlzYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3Iob2xkX2Nvbm5fc3RhdGUt PmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJdTMyIHRtcDsKPiAgCj4gLQlpbnRlbF9wYW5l bF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgMCk7Cj4gKwlpbnRlbF9wYW5lbF9h Y3R1YWxseV9zZXRfYmFja2xpZ2h0KG9sZF9jb25uX3N0YXRlLCAwKTsKPiAgCj4gIAkvKgo+ICAJ ICogQWx0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBvciBlbmFibGUgQ1BVIFBXTSB3aXRoIExQVC9T UFQgYmFzZWQKPiBAQCAtNzMyLDEyICs3MzgsMTMgQEAgc3RhdGljIHZvaWQgbHB0X2Rpc2FibGVf YmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCUk5MTVfV1JJ VEUoQkxDX1BXTV9QQ0hfQ1RMMSwgdG1wICYgfkJMTV9QQ0hfUFdNX0VOQUJMRSk7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIHBjaF9kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gK3N0YXRpYyB2b2lkIHBjaF9kaXNhYmxlX2JhY2tsaWdodChjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUpCj4gIHsKPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3RvcihvbGRf Y29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gIAl1MzIgdG1wOwo+ICAKPiAt CWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiArCWlu dGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQob2xkX2Nvbm5fc3RhdGUsIDApOwo+ICAK PiAgCXRtcCA9IEk5MTVfUkVBRChCTENfUFdNX0NQVV9DVEwyKTsKPiAgCUk5MTVfV1JJVEUoQkxD X1BXTV9DUFVfQ1RMMiwgdG1wICYgfkJMTV9QV01fRU5BQkxFKTsKPiBAQCAtNzQ2LDQ0ICs3NTMs NDMgQEAgc3RhdGljIHZvaWQgcGNoX2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiAgCUk5MTVfV1JJVEUoQkxDX1BXTV9QQ0hfQ1RMMSwgdG1wICYg fkJMTV9QQ0hfUFdNX0VOQUJMRSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGk5eHhfZGlzYWJs ZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMg dm9pZCBpOXh4X2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpvbGRfY29ubl9zdGF0ZSkKPiAgewo+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2Jh Y2tsaWdodChjb25uZWN0b3IsIDApOwo+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2ts aWdodChvbGRfY29ubl9zdGF0ZSwgMCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGk5NjVfZGlz YWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0 aWMgdm9pZCBpOTY1X2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpvbGRfY29ubl9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2xkX2Nvbm5fc3RhdGUtPmNvbm5lY3Rv ci0+ZGV2KTsKPiAgCXUzMiB0bXA7Cj4gIAo+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2Jh Y2tsaWdodChjb25uZWN0b3IsIDApOwo+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2ts aWdodChvbGRfY29ubl9zdGF0ZSwgMCk7Cj4gIAo+ICAJdG1wID0gSTkxNV9SRUFEKEJMQ19QV01f Q1RMMik7Cj4gIAlJOTE1X1dSSVRFKEJMQ19QV01fQ1RMMiwgdG1wICYgfkJMTV9QV01fRU5BQkxF KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdmx2X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArc3RhdGljIHZvaWQgdmx2X2Rpc2FibGVfYmFj a2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSkK PiAgewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29u bmVjdG9yKG9sZF9jb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiAtCWVudW0g cGlwZSBwaXBlID0gaW50ZWxfZ2V0X3BpcGVfZnJvbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiAr CWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhvbGRfY29ubl9zdGF0ZS0+Y3J0YyktPnBp cGU7Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCWlmIChXQVJOX09OKHBpcGUgIT0gUElQRV9BICYmIHBp cGUgIT0gUElQRV9CKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlf c2V0X2JhY2tsaWdodChjb25uZWN0b3IsIDApOwo+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0 X2JhY2tsaWdodChvbGRfY29ubl9zdGF0ZSwgMCk7Cj4gIAo+ICAJdG1wID0gSTkxNV9SRUFEKFZM Vl9CTENfUFdNX0NUTDIocGlwZSkpOwo+ICAJSTkxNV9XUklURShWTFZfQkxDX1BXTV9DVEwyKHBp cGUpLCB0bXAgJiB+QkxNX1BXTV9FTkFCTEUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBieHRf ZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtz dGF0aWMgdm9pZCBieHRfZGlzYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3Iob2xkX2Nvbm5fc3RhdGUtPmNvbm5lY3Rv cik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5l Y3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0 b3ItPnBhbmVsOwo+ICAJdTMyIHRtcCwgdmFsOwo+ICAKPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5 X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiArCWludGVsX3BhbmVsX2FjdHVhbGx5X3Nl dF9iYWNrbGlnaHQob2xkX2Nvbm5fc3RhdGUsIDApOwo+ICAKPiAgCXRtcCA9IEk5MTVfUkVBRChC WFRfQkxDX1BXTV9DVEwocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyKSk7Cj4gIAlJOTE1X1dS SVRFKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+IEBAIC03 OTYsMjEgKzgwMiwyMyBAQCBzdGF0aWMgdm9pZCBieHRfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9p ZCBjbnBfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICtzdGF0aWMgdm9pZCBjbnBfZGlzYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3Iob2xkX2Nvbm5fc3RhdGUtPmNv bm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZj b25uZWN0b3ItPnBhbmVsOwo+ICAJdTMyIHRtcDsKPiAgCj4gLQlpbnRlbF9wYW5lbF9hY3R1YWxs eV9zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgMCk7Cj4gKwlpbnRlbF9wYW5lbF9hY3R1YWxseV9z ZXRfYmFja2xpZ2h0KG9sZF9jb25uX3N0YXRlLCAwKTsKPiAgCj4gIAl0bXAgPSBJOTE1X1JFQUQo QlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlcikpOwo+ICAJSTkxNV9X UklURShCWFRfQkxDX1BXTV9DVEwocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyKSwKPiAgCQkg ICB0bXAgJiB+QlhUX0JMQ19QV01fRU5BQkxFKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgcHdt X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAr c3RhdGljIHZvaWQgcHdtX2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSkKPiAgewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKG9sZF9jb25uX3N0YXRlLT5jb25uZWN0 b3IpOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ ICAKPiAgCS8qIERpc2FibGUgdGhlIGJhY2tsaWdodCAqLwo+IEBAIC04NDQsMTMgKzg1MiwxNSBA QCB2b2lkIGludGVsX3BhbmVsX2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdAo+ICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNl KQo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlLT5wcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BP V0VSRE9XTjsKPiAgCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlZCA9IGZhbHNlOwo+IC0JcGFuZWwt PmJhY2tsaWdodC5kaXNhYmxlKGNvbm5lY3Rvcik7Cj4gKwlwYW5lbC0+YmFja2xpZ2h0LmRpc2Fi bGUob2xkX2Nvbm5fc3RhdGUpOwo+ICAKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmJhY2ts aWdodF9sb2NrKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgbHB0X2VuYWJsZV9iYWNrbGlnaHQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgdm9pZCBscHRfZW5h YmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAg ewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVj dG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVs X3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICAJdTMyIHBjaF9jdGwxLCBwY2hf Y3RsMiwgc2NoaWNrZW47Cj4gQEAgLTg5NCwyMiArOTA0LDE4IEBAIHN0YXRpYyB2b2lkIGxwdF9l bmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCUk5 MTVfV1JJVEUoQkxDX1BXTV9QQ0hfQ1RMMSwgcGNoX2N0bDEgfCBCTE1fUENIX1BXTV9FTkFCTEUp Owo+ICAKPiAgCS8qIFRoaXMgd29uJ3Qgc3RpY2sgdW50aWwgdGhlIGFib3ZlIGVuYWJsZS4gKi8K PiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBwYW5lbC0+ YmFja2xpZ2h0LmxldmVsKTsKPiArCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQo Y29ubl9zdGF0ZSwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIHBjaF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiArc3RhdGljIHZvaWQgcGNoX2VuYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJh c2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5l bDsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfZ2V0X3BpcGVfZnJvbV9jb25uZWN0b3IoY29u bmVjdG9yKTsKPiAtCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlcjsKPiArCWVudW0gdHJh bnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ICAJ dTMyIGNwdV9jdGwyLCBwY2hfY3RsMSwgcGNoX2N0bDI7Cj4gIAo+IC0JaWYgKCFXQVJOX09OX09O Q0UocGlwZSA9PSBJTlZBTElEX1BJUEUpKQo+IC0JCWNwdV90cmFuc2NvZGVyID0gaW50ZWxfcGlw ZV90b19jcHVfdHJhbnNjb2RlcihkZXZfcHJpdiwgcGlwZSk7Cj4gLQllbHNlCj4gLQkJY3B1X3Ry YW5zY29kZXIgPSBUUkFOU0NPREVSX0VEUDsKPiAtCj4gIAljcHVfY3RsMiA9IEk5MTVfUkVBRChC TENfUFdNX0NQVV9DVEwyKTsKPiAgCWlmIChjcHVfY3RsMiAmIEJMTV9QV01fRU5BQkxFKSB7Cj4g IAkJRFJNX0RFQlVHX0tNUygiY3B1IGJhY2tsaWdodCBhbHJlYWR5IGVuYWJsZWRcbiIpOwo+IEBA IC05MzMsNyArOTM5LDcgQEAgc3RhdGljIHZvaWQgcGNoX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJSTkxNV9XUklURShCTENfUFdNX0NQVV9D VEwyLCBjcHVfY3RsMiB8IEJMTV9QV01fRU5BQkxFKTsKPiAgCj4gIAkvKiBUaGlzIHdvbid0IHN0 aWNrIHVudGlsIHRoZSBhYm92ZSBlbmFibGUuICovCj4gLQlpbnRlbF9wYW5lbF9hY3R1YWxseV9z ZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gKwlpbnRl bF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5fc3RhdGUsIHBhbmVsLT5iYWNrbGln aHQubGV2ZWwpOwo+ICAKPiAgCXBjaF9jdGwyID0gcGFuZWwtPmJhY2tsaWdodC5tYXggPDwgMTY7 Cj4gIAlJOTE1X1dSSVRFKEJMQ19QV01fUENIX0NUTDIsIHBjaF9jdGwyKTsKPiBAQCAtOTQ3LDgg Kzk1MywxMCBAQCBzdGF0aWMgdm9pZCBwY2hfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlJOTE1X1dSSVRFKEJMQ19QV01fUENIX0NUTDEsIHBj aF9jdGwxIHwgQkxNX1BDSF9QV01fRU5BQkxFKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaTl4 eF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAr c3RhdGljIHZvaWQgaTl4eF9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5k ZXYpOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ ICAJdTMyIGN0bCwgZnJlcTsKPiBAQCAtOTczLDcgKzk4MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhf ZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlQ T1NUSU5HX1JFQUQoQkxDX1BXTV9DVEwpOwo+ICAKPiAgCS8qIFhYWDogY29tYmluZSB0aGlzIGlu dG8gYWJvdmUgd3JpdGU/ICovCj4gLQlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0 KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gKwlpbnRlbF9wYW5lbF9hY3R1 YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5fc3RhdGUsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ ICAKPiAgCS8qCj4gIAkgKiBOZWVkZWQgdG8gZW5hYmxlIGJhY2tsaWdodCBvbiBzb21lIDg1NWdt IG1vZGVscy4gQkxDX0hJU1RfQ1RMIGlzCj4gQEAgLTk4NCwxNiArOTkyLDE1IEBAIHN0YXRpYyB2 b2lkIGk5eHhfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gIAkJSTkxNV9XUklURShCTENfSElTVF9DVEwsIEJMTV9ISVNUT0dSQU1fRU5BQkxFKTsK PiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaTk2NV9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArc3RhdGljIHZvaWQgaTk2NV9lbmFibGVfYmFja2xp Z2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJICBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ICsJc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5f c3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpw YW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9nZXRf cGlwZV9mcm9tX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19p bnRlbF9jcnRjKGNvbm5fc3RhdGUtPmNydGMpLT5waXBlOwo+ICAJdTMyIGN0bCwgY3RsMiwgZnJl cTsKPiAgCj4gLQlpZiAoV0FSTl9PTl9PTkNFKHBpcGUgPT0gSU5WQUxJRF9QSVBFKSkKPiAtCQlw aXBlID0gUElQRV9BOwo+IC0KPiAgCWN0bDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwyKTsKPiAg CWlmIChjdGwyICYgQkxNX1BXTV9FTkFCTEUpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJiYWNrbGln aHQgYWxyZWFkeSBlbmFibGVkXG4iKTsKPiBAQCAtMTAxNywxOSArMTAyNCwxOCBAQCBzdGF0aWMg dm9pZCBpOTY1X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ICAJUE9TVElOR19SRUFEKEJMQ19QV01fQ1RMMik7Cj4gIAlJOTE1X1dSSVRFKEJMQ19Q V01fQ1RMMiwgY3RsMiB8IEJMTV9QV01fRU5BQkxFKTsKPiAgCj4gLQlpbnRlbF9wYW5lbF9hY3R1 YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4g KwlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5fc3RhdGUsIHBhbmVsLT5i YWNrbGlnaHQubGV2ZWwpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCB2bHZfZW5hYmxlX2JhY2ts aWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3N0YXRpYyB2b2lkIHZs dl9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRl KQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9j b25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3Qg aW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4gLQllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2dldF9waXBlX2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwllbnVtIHBp cGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPiAg CXUzMiBjdGwsIGN0bDI7Cj4gIAo+IC0JaWYgKFdBUk5fT04ocGlwZSAhPSBQSVBFX0EgJiYgcGlw ZSAhPSBQSVBFX0IpKQo+IC0JCXJldHVybjsKPiAtCj4gIAljdGwyID0gSTkxNV9SRUFEKFZMVl9C TENfUFdNX0NUTDIocGlwZSkpOwo+ICAJaWYgKGN0bDIgJiBCTE1fUFdNX0VOQUJMRSkgewo+ICAJ CURSTV9ERUJVR19LTVMoImJhY2tsaWdodCBhbHJlYWR5IGVuYWJsZWRcbiIpOwo+IEBAIC0xMDQx LDcgKzEwNDcsNyBAQCBzdGF0aWMgdm9pZCB2bHZfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlJOTE1X1dSSVRFKFZMVl9CTENfUFdNX0NUTChw aXBlKSwgY3RsKTsKPiAgCj4gIAkvKiBYWFg6IGNvbWJpbmUgdGhpcyBpbnRvIGFib3ZlIHdyaXRl PyAqLwo+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIHBh bmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2ts aWdodChjb25uX3N0YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiAgCj4gIAljdGwyID0g MDsKPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3dfcHdtKQo+IEBAIC0xMDUxLDE2 ICsxMDU3LDE1IEBAIHN0YXRpYyB2b2lkIHZsdl9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCUk5MTVfV1JJVEUoVkxWX0JMQ19QV01fQ1RMMihw aXBlKSwgY3RsMiB8IEJMTV9QV01fRU5BQkxFKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgYnh0 X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtz dGF0aWMgdm9pZCBieHRfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSkKPiAgewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYp Owo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+IC0J ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9nZXRfcGlwZV9mcm9tX2Nvbm5lY3Rvcihjb25uZWN0b3Ip Owo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0 YyktPnBpcGU7Cj4gIAl1MzIgcHdtX2N0bCwgdmFsOwo+ICAKPiAtCWlmIChXQVJOX09OX09OQ0Uo cGlwZSA9PSBJTlZBTElEX1BJUEUpKQo+IC0JCXBpcGUgPSBQSVBFX0E7Cj4gLQo+ICAJLyogQ29u dHJvbGxlciAxIHVzZXMgdGhlIHV0aWxpdHkgcGluLiAqLwo+ICAJaWYgKHBhbmVsLT5iYWNrbGln aHQuY29udHJvbGxlciA9PSAxKSB7Cj4gIAkJdmFsID0gSTkxNV9SRUFEKFVUSUxfUElOX0NUTCk7 Cj4gQEAgLTEwODgsNyArMTA5Myw3IEBAIHN0YXRpYyB2b2lkIGJ4dF9lbmFibGVfYmFja2xpZ2h0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCUk5MTVfV1JJVEUoQlhUX0JM Q19QV01fRlJFUShwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+ICAJCQlwYW5lbC0+YmFj a2xpZ2h0Lm1heCk7Cj4gIAo+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChj b25uZWN0b3IsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ICsJaW50ZWxfcGFuZWxfYWN0dWFs bHlfc2V0X2JhY2tsaWdodChjb25uX3N0YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiAg Cj4gIAlwd21fY3RsID0gMDsKPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3dfcHdt KQo+IEBAIC0xMTAwLDggKzExMDUsMTAgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9iYWNrbGln aHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCQlwd21fY3RsIHwgQlhU X0JMQ19QV01fRU5BQkxFKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgY25wX2VuYWJsZV9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgdm9pZCBj bnBfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKPiAgewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxf Y29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0 IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICAJdTMyIHB3bV9jdGw7 Cj4gQEAgLTExMTcsNyArMTEyNCw3IEBAIHN0YXRpYyB2b2lkIGNucF9lbmFibGVfYmFja2xpZ2h0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCUk5MTVfV1JJVEUoQlhUX0JM Q19QV01fRlJFUShwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+ICAJCSAgIHBhbmVsLT5i YWNrbGlnaHQubWF4KTsKPiAgCj4gLQlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0 KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gKwlpbnRlbF9wYW5lbF9hY3R1 YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5fc3RhdGUsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ ICAKPiAgCXB3bV9jdGwgPSAwOwo+ICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQuYWN0aXZlX2xvd19w d20pCj4gQEAgLTExMjksMTIgKzExMzYsMTQgQEAgc3RhdGljIHZvaWQgY25wX2VuYWJsZV9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJCSAgIHB3bV9jdGwg fCBCWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBwd21fZW5hYmxl X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3N0YXRpYyB2 b2lkIHB3bV9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlKQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19p bnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCXN0cnVjdCBpbnRlbF9w YW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAgCj4gIAlwd21fZW5hYmxlKHBhbmVs LT5iYWNrbGlnaHQucHdtKTsKPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQo Y29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiArCWludGVsX3BhbmVsX2FjdHVh bGx5X3NldF9iYWNrbGlnaHQoY29ubl9zdGF0ZSwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4g IH0KPiAgCj4gIHZvaWQgaW50ZWxfcGFuZWxfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMTE2Myw3ICsxMTcyLDcgQEAgdm9p ZCBpbnRlbF9wYW5lbF9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJCQkgcGFuZWwtPmJhY2tsaWdodC5kZXZpY2UtPnByb3Bz Lm1heF9icmlnaHRuZXNzKTsKPiAgCX0KPiAgCj4gLQlwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZShj b25uZWN0b3IpOwo+ICsJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUoY3J0Y19zdGF0ZSwgY29ubl9z dGF0ZSk7Cj4gIAlwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQgPSB0cnVlOwo+ICAJaWYgKHBhbmVs LT5iYWNrbGlnaHQuZGV2aWNlKQo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlLT5wcm9wcy5w b3dlciA9IEZCX0JMQU5LX1VOQkxBTks7Cj4gQEAgLTExODEsNyArMTE5MCw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlICpiZCkKPiAgCWRybV9tb2Rlc2V0X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVj dGlvbl9tdXRleCwgTlVMTCk7Cj4gIAlEUk1fREVCVUdfS01TKCJ1cGRhdGluZyBpbnRlbF9iYWNr bGlnaHQsIGJyaWdodG5lc3M9JWQvJWRcbiIsCj4gIAkJICAgICAgYmQtPnByb3BzLmJyaWdodG5l c3MsIGJkLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7Cj4gLQlpbnRlbF9wYW5lbF9zZXRfYmFja2xp Z2h0KGNvbm5lY3RvciwgYmQtPnByb3BzLmJyaWdodG5lc3MsCj4gKwlpbnRlbF9wYW5lbF9zZXRf YmFja2xpZ2h0KGNvbm5lY3Rvci0+YmFzZS5zdGF0ZSwgYmQtPnByb3BzLmJyaWdodG5lc3MsCj4g IAkJCQkgIGJkLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7Cj4gIAo+ICAJLyoKPiAtLSAKPiAyLjEx LjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=