From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Promote .format_mod_supported() to the lead role Date: Fri, 27 Apr 2018 19:33:12 +0300 Message-ID: <20180427163312.GB23723@intel.com> References: <20180319165017.31908-1-ville.syrjala@linux.intel.com> <87sh8hfknw.fsf@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <87sh8hfknw.fsf@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Eric Anholt Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMzAsIDIwMTggYXQgMTI6MDY6MTFQTSAtMDcwMCwgRXJpYyBBbmhvbHQgd3Jv dGU6Cj4gVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyaXRl czoKPiAKPiA+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+Cj4gPgo+ID4gVXAgdG8gbm93IHdlJ3ZlIHVzZWQgdGhlIHBsYW5lJ3MgbW9kaWZpZXIg bGlzdCBhcyB0aGUgcHJpbWFyeQo+ID4gc291cmNlIG9mIGluZm9ybWF0aW9uIGZvciB3aGljaCBt b2RpZmllcnMgYXJlIHN1cHBvcnRlZCBieSBhCj4gPiBnaXZlbiBwbGFuZS4gSW4gb3JkZXIgdG8g YWxsb3cgYXV4aWxpYXJ5IG1ldGFkYXRhIHRvIGJlIGVtYmVkZGVkCj4gPiB3aXRoaW4gdGhlIGJp dHMgb2YgdGhlIG1vZGlmaWVyIHdlIG5lZWQgdG8gc3RvcCBkb2luZyB0aGF0Lgo+ID4KPiA+IFRo dXMgd2UgaGF2ZSB0byBtYWtlIC5mb3JtYXRfbW9kX3N1cHBvcnRlZCgpIGF3YXJlIG9mIHRoZSBw bGFuZSdzCj4gPiBjYXBhYmlsaXRpZXMgYW5kIGdyYWNlZnVsbHkgZGVhbCB3aXRoIGFueSBtb2Rp ZmllciBiZWluZyBwYXNzZWQKPiA+IGluIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlLgo+IAo+IEkg dG9vayBhIGxvb2ssIGFuZCBJIHRoaW5rIHlvdSBoYXZlIHRoZSBjaGFuY2UgdG8gZGVsZXRlIGEg d2hvbGUgdG9uIG9mCj4gY29kZSBpZiB5b3Uga2VlcCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBj b3JlIHdpbGwgY2hlY2sgdGhhdCB0aGUgZm9ybWF0Cj4gaXMgb25lIG9mIHBsYW5lLT5mb3JtYXRf dHlwZXMuCgpJJ20gbm90IHBhcnRpY3VsYXJseSBoYXBweSBhYm91dCBzcGxpdHRpbmcgdGhlIHJv bGVzIHRoYXQgd2F5LiBNYWtlcyBpdApoYXJkZXIgdG8gZmlndXJlIG91dCB3aGF0IGV4YWN0bHkg aXMgc3VwcG9ydGVkIHdoZW4geW91IGhhdmUgdG8gZ28gbG9vawphdCB0d28gZGlmZmVyZW50IHNv dXJjZXMgb2YgaW5mb3JtYXRpb24uCgpCdXQgSSBkbyBhZ3JlZSB0aGF0IHRoZSBkdXBsaWNhdGlv biBpc24ndCBhbGwgdGhhdCBuaWNlIGVpdGhlci4gSSB3YXMKYWN0dWFsbHkgd29uZGVyaW5nIHdo ZXRoZXIgSSBjb3VsZCBqdXN0IHJlbW92ZSB0aGUgZm9ybWF0L21vZGlmaWVyCmFycmF5cyBlbnRp cmVseSBhbmQgcmVseSBwdXJlbHkgb24gLmZvcm1hdF9tb2Rfc3VwcG9ydGVkKCkuIEJ1dCBJIGd1 ZXNzCkknZCBoYXZlIHRvIGF0IGxlYXN0IGtlZXAgb25lIHNldCBvZiBhcnJheXMgdG8gZ2l2ZSB0 aGUgY29yZSBzb21ldGhpbmcKd2hpY2ggaXQgY291bGQgdXNlIHdoZW4gY2FsbGluZyAuZm9ybWF0 X21vZF9zdXBwb3J0ZWQoKS4gU28gSSdkIGhhdmUgdG8KYXQgbGVhc3Qga2VlcCBvbmUgb2YgZWFj aCBhcnJheSwgYW5kIGp1c3QgbWFrZSB0aGVtIHRoZSBzdXBlcnNldCBvZiBhbGwKc3VwcG9ydGVk IGZvcm1hdC9tb2RpZmllcnMgYmV0d2VlbiBhbGwgdGhlIHBsYXRmb3JtIHdlIGhhdmUgaW4gaTkx NS4KCj4gCj4gPgo+ID4gQ2M6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Cj4gPiBSZWZl cmVuY2VzOiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwv MjAxOC1NYXJjaC8xNjk3ODIuaHRtbAo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE0NyArKysrKysrKysrKysrKystLS0tLS0tLS0t LQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAgMSArCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTk0ICsrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMTAgaW5zZXJ0aW9u cygrKSwgMTMyIGRlbGV0aW9ucygtKQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiA+IGluZGV4IDNlN2FiNzVlMWI0MS4uZDcxNzAwNGJlMGI4IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC04OCwxNSArODgsNyBAQCBzdGF0 aWMgY29uc3QgdWludDMyX3Qgc2tsX3ByaW1hcnlfZm9ybWF0c1tdID0gewo+ID4gIAlEUk1fRk9S TUFUX1ZZVVksCj4gPiAgfTsKPiA+ICAKPiA+IC1zdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX2Zv cm1hdF9tb2RpZmllcnNfbm9jY3NbXSA9IHsKPiA+IC0JSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE LAo+ID4gLQlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCwKPiA+IC0JSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQsCj4gPiAtCURSTV9GT1JNQVRfTU9EX0xJTkVBUiwKPiA+IC0JRFJNX0ZPUk1BVF9NT0Rf SU5WQUxJRAo+ID4gLX07Cj4gPiAtCj4gPiAtc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNrbF9mb3Jt YXRfbW9kaWZpZXJzX2Njc1tdID0gewo+ID4gK3N0YXRpYyBjb25zdCB1aW50NjRfdCBza2xfZm9y bWF0X21vZGlmaWVyc1tdID0gewo+ID4gIAlJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTLAo+ ID4gIAlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MsCj4gPiAgCUk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRCwKPiA+IEBAIC0xMjk5Nyw4ICsxMjk4OSwxNyBAQCB2b2lkIGludGVsX3BsYW5lX2Rl c3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCj4gPiAgCWtmcmVlKHRvX2ludGVsX3BsYW5l KHBsYW5lKSk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyBib29sIGk4eHhfbW9kX3N1cHBvcnRl ZCh1aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQo+ID4gK3N0YXRpYyBib29sIGk4 eHhfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ ID4gKwkJCQkJICAgIHUzMiBmb3JtYXQsIHU2NCBtb2RpZmllcikKPiA+ICB7Cj4gPiArCXN3aXRj aCAobW9kaWZpZXIpIHsKPiA+ICsJY2FzZSBEUk1fRk9STUFUX01PRF9MSU5FQVI6Cj4gPiArCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6Cj4gPiArCQlicmVhazsKPiA+ICsJZGVmYXVsdDoK PiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsJfQo+ID4gKwo+IAo+IEkgdGhpbmsgeW91IGNvdWxk IGp1c3QgcmVtb3ZlIHRoZSBmb3JtYXQtZGVwZW5kZW50IHN3aXRjaCBiZWxvdyBpbiBmYXZvcgo+ IG9mIHMvYnJlYWsvcmV0dXJuIHRydWUvLiAgSXQncyBqdXN0IGEgbGlzdCBvZiBhbGwgdGhlIGZv cm1hdHMgaW4KPiBpOHh4X3ByaW1hcnlfZm9ybWF0c1tdLgo+IAo+ID4gIAlzd2l0Y2ggKGZvcm1h dCkgewo+ID4gIAljYXNlIERSTV9GT1JNQVRfQzg6Cj4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9SR0I1 NjU6Cj4gPiBAQCAtMTMwMTEsOCArMTMwMTIsMTcgQEAgc3RhdGljIGJvb2wgaTh4eF9tb2Rfc3Vw cG9ydGVkKHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIpCj4gPiAgCX0KPiA+ICB9 Cj4gPiAgCj4gPiAtc3RhdGljIGJvb2wgaTk2NV9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1h dCwgdWludDY0X3QgbW9kaWZpZXIpCj4gPiArc3RhdGljIGJvb2wgaTk2NV9wbGFuZV9mb3JtYXRf bW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gPiArCQkJCQkgICAgdTMy IGZvcm1hdCwgdTY0IG1vZGlmaWVyKQo+ID4gIHsKPiA+ICsJc3dpdGNoIChtb2RpZmllcikgewo+ ID4gKwljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWF9USUxFRDoKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJcmV0dXJuIGZh bHNlOwo+ID4gKwl9Cj4gCj4gQWdhaW4sIHRoZXJlJ3Mgbm8gZm9ybWF0IGRlcGVuZGVuY2UsIHNv IGRyb3AgdGhlIHN3aXRjaCBzdGF0ZW1lbnQsIGFuZAo+IHByb2JhYmx5IGp1c3QgcmV1c2UgdGhl IG1vZF9zdXBwb3J0ZWQgZnVuYyBmcm9tIDh4eC4KPiAKPiA+ICsKPiA+ICAJc3dpdGNoIChmb3Jt YXQpIHsKPiA+ICAJY2FzZSBEUk1fRk9STUFUX0M4Ogo+ID4gIAljYXNlIERSTV9GT1JNQVRfUkdC NTY1Ogo+ID4gQEAgLTEzMDI3LDE3ICsxMzAzNywzNyBAQCBzdGF0aWMgYm9vbCBpOTY1X21vZF9z dXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikKPiA+ICAJfQo+ID4g IH0KPiA+ICAKPiA+IC1zdGF0aWMgYm9vbCBza2xfbW9kX3N1cHBvcnRlZCh1aW50MzJfdCBmb3Jt YXQsIHVpbnQ2NF90IG1vZGlmaWVyKQo+ID4gK3N0YXRpYyBib29sIHNrbF9wbGFuZV9mb3JtYXRf bW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gPiArCQkJCQkgICB1MzIg Zm9ybWF0LCB1NjQgbW9kaWZpZXIpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUoX3BsYW5lKTsKPiA+ICsKPiA+ICsJc3dpdGNoIChtb2RpZmll cikgewo+ID4gKwljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiA+ICsJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRDoKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiA+ ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gPiArCQlicmVhazsKPiA+ICsJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4gPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEX0NDUzoKPiA+ICsJCWlmICghcGxhbmUtPmhhc19jY3MpCj4gPiArCQkJcmV0dXJu IGZhbHNlOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQlyZXR1cm4gZmFsc2U7 Cj4gPiArCX0KPiA+ICsKPiA+ICAJc3dpdGNoIChmb3JtYXQpIHsKPiA+ICAJY2FzZSBEUk1fRk9S TUFUX1hSR0I4ODg4Ogo+ID4gIAljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6Cj4gPiAgCWNhc2Ug RFJNX0ZPUk1BVF9BUkdCODg4ODoKPiA+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ID4g LQkJaWYgKG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1MgfHwKPiA+IC0J CSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MpCj4gPiAtCQkJcmV0 dXJuIHRydWU7Cj4gPiAtCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAKPiBJIHRoaW5rIHRoZXNlIFNL TCBjaGFuZ2VzIGNvdWxkIGhhdmUganVzdCBiZWVuIGRvbmUgd2l0aCBhICImJgo+IHBsYW5lLT5o YXNfY2NzIiBpbiB0aGlzICctJyBhcmVhLiAgSSBkbyB0aGluayB0aGUgbmV3IHZlcnNpb24gaXMg bW9yZQo+IHJlYWRhYmxlLCB0aG91Z2guCgpZZWFoLCBJIHdhbnRlZCB0byBtYWtlIGl0IG1vcmUg c3RyYWlnaHRmb3J3YXJkIHRvIHVuZGVyc3RhbmQuCgo+IAo+ID4gKwkJcmV0dXJuIG1vZGlmaWVy ID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9YX1RJTEVEIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lf VElMRUQgfHwKPiA+ICsJCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgfHwK PiA+ICsJCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MgfHwKPiA+ICsJ CQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOwo+ID4gIAljYXNlIERS TV9GT1JNQVRfUkdCNTY1Ogo+ID4gIAljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6Cj4gPiAg CWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKPiA+IEBAIC0xMzA0NSw1MiArMTMwNzUsNDkg QEAgc3RhdGljIGJvb2wgc2tsX21vZF9zdXBwb3J0ZWQodWludDMyX3QgZm9ybWF0LCB1aW50NjRf dCBtb2RpZmllcikKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1lWWVU6Cj4gPiAgCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgo+ID4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiA+IC0JCWlmIChtb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCj4gPiAtCQkJcmV0dXJuIHRydWU7Cj4gPiAt CQkvKiBmYWxsIHRocm91Z2ggKi8KPiA+ICsJCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFU X01PRF9MSU5FQVIgfHwKPiA+ICsJCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxF RCB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gPiAr CQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOwo+ID4gIAljYXNlIERSTV9G T1JNQVRfQzg6Cj4gPiAtCQlpZiAobW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8 Cj4gPiAtCQkgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQgfHwKPiA+IC0J CSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCkKPiA+IC0JCQlyZXR1cm4g dHJ1ZTsKPiA+IC0JCS8qIGZhbGwgdGhyb3VnaCAqLwo+ID4gKwkJcmV0dXJuIG1vZGlmaWVyID09 IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9YX1RJTEVEIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQ7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiAgCX0KPiA+ICB9Cj4g PiAgCj4gPiAtc3RhdGljIGJvb2wgaW50ZWxfcHJpbWFyeV9wbGFuZV9mb3JtYXRfbW9kX3N1cHBv cnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+IC0JCQkJCQkgICAgIHVpbnQzMl90IGZv cm1hdCwKPiA+IC0JCQkJCQkgICAgIHVpbnQ2NF90IG1vZGlmaWVyKQo+ID4gK3N0YXRpYyBib29s IGludGVsX2N1cnNvcl9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxh bmUsCj4gPiArCQkJCQkgICAgICB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpCj4gPiAgewo+ID4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5kZXYp Owo+ID4gLQo+ID4gLQlpZiAoV0FSTl9PTihtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9JTlZB TElEKSkKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+IC0KPiA+IC0JaWYgKChtb2RpZmllciA+PiA1 NikgIT0gRFJNX0ZPUk1BVF9NT0RfVkVORE9SX0lOVEVMICYmCj4gPiAtCSAgICBtb2RpZmllciAh PSBEUk1fRk9STUFUX01PRF9MSU5FQVIpCj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiAtCj4gPiAt CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiAtCQlyZXR1cm4gc2tsX21vZF9zdXBw b3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4gPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNCkKPiA+IC0JCXJldHVybiBpOTY1X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmll cik7Cj4gPiAtCWVsc2UKPiA+IC0JCXJldHVybiBpOHh4X21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBt b2RpZmllcik7Cj4gPiArCXJldHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIg JiYKPiA+ICsJCWZvcm1hdCA9PSBEUk1fRk9STUFUX0FSR0I4ODg4Owo+ID4gIH0KPiA+ICAKPiA+ IC1zdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3JfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAtCQkJCQkJICAgIHVpbnQzMl90IGZvcm1hdCwKPiA+ IC0JCQkJCQkgICAgdWludDY0X3QgbW9kaWZpZXIpCj4gPiAtewo+ID4gLQlpZiAoV0FSTl9PTiht b2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9JTlZBTElEKSkKPiA+IC0JCXJldHVybiBmYWxzZTsK PiA+ICtzdGF0aWMgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBza2xfcGxhbmVfZnVuY3MgPSB7Cj4g PiArCS51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4gPiAr CS5kaXNhYmxlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFuZSwKPiA+ICsJ LmRlc3Ryb3kgPSBpbnRlbF9wbGFuZV9kZXN0cm95LAo+ID4gKwkuYXRvbWljX2dldF9wcm9wZXJ0 eSA9IGludGVsX3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHksCj4gPiArCS5hdG9taWNfc2V0X3By b3BlcnR5ID0gaW50ZWxfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eSwKPiA+ICsJLmF0b21pY19k dXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUsCj4gPiArCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4gPiArCS5mb3Jt YXRfbW9kX3N1cHBvcnRlZCA9IHNrbF9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZCwKPiA+ICt9 Owo+ID4gIAo+ID4gLQlyZXR1cm4gbW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSICYm IGZvcm1hdCA9PSBEUk1fRk9STUFUX0FSR0I4ODg4Owo+ID4gLX0KPiA+ICtzdGF0aWMgc3RydWN0 IGRybV9wbGFuZV9mdW5jcyBpOTY1X3BsYW5lX2Z1bmNzID0gewo+ID4gKwkudXBkYXRlX3BsYW5l ID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAo+ID4gKwkuZGlzYWJsZV9wbGFuZSA9 IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gPiArCS5kZXN0cm95ID0gaW50ZWxf cGxhbmVfZGVzdHJveSwKPiA+ICsJLmF0b21pY19nZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9h dG9taWNfZ2V0X3Byb3BlcnR5LAo+ID4gKwkuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGludGVsX3Bs YW5lX2F0b21pY19zZXRfcHJvcGVydHksCj4gPiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0g aW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAo+ID4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUg PSBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ID4gKwkuZm9ybWF0X21vZF9zdXBwb3J0ZWQg PSBpOTY1X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAo+ID4gK307Cj4gPiAgCj4gPiAtc3Rh dGljIHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaW50ZWxfcGxhbmVfZnVuY3MgPSB7Cj4gPiArc3Rh dGljIHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgaTh4eF9wbGFuZV9mdW5jcyA9IHsKPiA+ICAJLnVw ZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKPiA+ICAJLmRpc2Fi bGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAo+ID4gIAkuZGVzdHJv eSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gPiBAQCAtMTMwOTgsNyArMTMxMjUsNyBAQCBzdGF0 aWMgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbF9wbGFuZV9mdW5jcyA9IHsKPiA+ICAJLmF0 b21pY19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+ID4g IAkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwK PiA+ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwK PiA+IC0JLmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaW50ZWxfcHJpbWFyeV9wbGFuZV9mb3JtYXRf bW9kX3N1cHBvcnRlZCwKPiA+ICsJLmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gaTh4eF9wbGFuZV9m b3JtYXRfbW9kX3N1cHBvcnRlZCwKPiA+ICB9Owo+ID4gIAo+ID4gIHN0YXRpYyBpbnQKPiA+IEBA IC0xMzIyMyw3ICsxMzI1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNz IGludGVsX2N1cnNvcl9wbGFuZV9mdW5jcyA9IHsKPiA+ICAJLmF0b21pY19zZXRfcHJvcGVydHkg PSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+ID4gIAkuYXRvbWljX2R1cGxpY2F0 ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKPiA+ICAJLmF0b21pY19kZXN0 cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKPiA+IC0JLmZvcm1hdF9tb2Rf c3VwcG9ydGVkID0gaW50ZWxfY3Vyc29yX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAo+ID4g KwkuZm9ybWF0X21vZF9zdXBwb3J0ZWQgPSBpbnRlbF9jdXJzb3JfZm9ybWF0X21vZF9zdXBwb3J0 ZWQsCj4gPiAgfTsKPiA+ICAKPiA+ICBzdGF0aWMgYm9vbCBpOXh4X3BsYW5lX2hhc19mYmMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gQEAgLTEzMzE0LDExICsxMzM0MSwx MCBAQCBpbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlKQo+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KSB7Cj4gPiAgCQlpbnRlbF9wcmltYXJ5X2Zvcm1hdHMgPSBza2xfcHJpbWFyeV9mb3JtYXRz Owo+ID4gIAkJbnVtX2Zvcm1hdHMgPSBBUlJBWV9TSVpFKHNrbF9wcmltYXJ5X2Zvcm1hdHMpOwo+ ID4gKwkJbW9kaWZpZXJzID0gc2tsX2Zvcm1hdF9tb2RpZmllcnM7Cj4gPiAgCj4gPiAtCQlpZiAo c2tsX3BsYW5lX2hhc19jY3MoZGV2X3ByaXYsIHBpcGUsIFBMQU5FX1BSSU1BUlkpKQo+ID4gLQkJ CW1vZGlmaWVycyA9IHNrbF9mb3JtYXRfbW9kaWZpZXJzX2NjczsKPiA+IC0JCWVsc2UKPiA+IC0J CQltb2RpZmllcnMgPSBza2xfZm9ybWF0X21vZGlmaWVyc19ub2NjczsKPiA+ICsJCXByaW1hcnkt Pmhhc19jY3MgPSBza2xfcGxhbmVfaGFzX2NjcyhkZXZfcHJpdiwgcGlwZSwKPiA+ICsJCQkJCQkg ICAgIFBMQU5FX1BSSU1BUlkpOwo+ID4gIAo+ID4gIAkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0g c2tsX3VwZGF0ZV9wbGFuZTsKPiA+ICAJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBza2xfZGlz YWJsZV9wbGFuZTsKPiA+IEBAIC0xMzM0MywyMSArMTMzNjksMjIgQEAgaW50ZWxfcHJpbWFyeV9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUg cGlwZSkKPiA+ICAKPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKPiA+ICAJCXJl dCA9IGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgmZGV2X3ByaXYtPmRybSwgJnByaW1hcnktPmJh c2UsCj4gPiAtCQkJCQkgICAgICAgMCwgJmludGVsX3BsYW5lX2Z1bmNzLAo+ID4gKwkJCQkJICAg ICAgIDAsICZza2xfcGxhbmVfZnVuY3MsCj4gPiAgCQkJCQkgICAgICAgaW50ZWxfcHJpbWFyeV9m b3JtYXRzLCBudW1fZm9ybWF0cywKPiA+ICAJCQkJCSAgICAgICBtb2RpZmllcnMsCj4gPiAgCQkJ CQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSwKPiA+ICAJCQkJCSAgICAgICAicGxhbmUg MSVjIiwgcGlwZV9uYW1lKHBpcGUpKTsKPiA+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpCj4gPiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3Bs YW5lX2luaXQoJmRldl9wcml2LT5kcm0sICZwcmltYXJ5LT5iYXNlLAo+ID4gLQkJCQkJICAgICAg IDAsICZpbnRlbF9wbGFuZV9mdW5jcywKPiA+ICsJCQkJCSAgICAgICAwLCAmaTk2NV9wbGFuZV9m dW5jcywKPiA+ICAJCQkJCSAgICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRz LAo+ID4gIAkJCQkJICAgICAgIG1vZGlmaWVycywKPiA+ICAJCQkJCSAgICAgICBEUk1fUExBTkVf VFlQRV9QUklNQVJZLAo+ID4gIAkJCQkJICAgICAgICJwcmltYXJ5ICVjIiwgcGlwZV9uYW1lKHBp cGUpKTsKPiA+ICAJZWxzZQo+ID4gIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZk ZXZfcHJpdi0+ZHJtLCAmcHJpbWFyeS0+YmFzZSwKPiA+IC0JCQkJCSAgICAgICAwLCAmaW50ZWxf cGxhbmVfZnVuY3MsCj4gPiArCQkJCQkgICAgICAgMCwgSVNfR0VONChkZXZfcHJpdikgPwo+ID4g KwkJCQkJICAgICAgICZpOTY1X3BsYW5lX2Z1bmNzIDogJmk4eHhfcGxhbmVfZnVuY3MsCj4gPiAg CQkJCQkgICAgICAgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPiA+ICAJCQkJ CSAgICAgICBtb2RpZmllcnMsCj4gPiAgCQkJCQkgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFS WSwKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBhMjE1YWE3OGIwYmUuLmUw YjcwYzU2M2U5ZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTkz Nyw2ICs5MzcsNyBAQCBzdHJ1Y3QgaW50ZWxfcGxhbmUgewo+ID4gIAllbnVtIHBpcGUgcGlwZTsK PiA+ICAJYm9vbCBjYW5fc2NhbGU7Cj4gPiAgCWJvb2wgaGFzX2ZiYzsKPiA+ICsJYm9vbCBoYXNf Y2NzOwo+ID4gIAlpbnQgbWF4X2Rvd25zY2FsZTsKPiA+ICAJdWludDMyX3QgZnJvbnRidWZmZXJf Yml0Owo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+IGluZGV4IGRi ZGNmODUwMzJkZi4uZjRkYmRkNmQxZGRjIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCj4gPiBAQCAtMTI0OCwxNSArMTI0OCw3IEBAIHN0YXRpYyB1aW50MzJfdCBza2xf cGxhbmVfZm9ybWF0c1tdID0gewo+ID4gIAlEUk1fRk9STUFUX1ZZVVksCj4gPiAgfTsKPiA+ICAK PiA+IC1zdGF0aWMgY29uc3QgdWludDY0X3Qgc2tsX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfbm9j Y3NbXSA9IHsKPiA+IC0JSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVELAo+ID4gLQlJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRCwKPiA+IC0JSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsCj4gPiAtCURSTV9G T1JNQVRfTU9EX0xJTkVBUiwKPiA+IC0JRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAo+ID4gLX07Cj4g PiAtCj4gPiAtc3RhdGljIGNvbnN0IHVpbnQ2NF90IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJz X2Njc1tdID0gewo+ID4gK3N0YXRpYyBjb25zdCB1aW50NjRfdCBza2xfcGxhbmVfZm9ybWF0X21v ZGlmaWVyc1tdID0gewo+ID4gIAlJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTLAo+ID4gIAlJ OTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MsCj4gPiAgCUk5MTVfRk9STUFUX01PRF9ZZl9USUxF RCwKPiA+IEBAIC0xMjY2LDI1ICsxMjU4LDQxIEBAIHN0YXRpYyBjb25zdCB1aW50NjRfdCBza2xf cGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKPiA+ICAJRFJNX0ZPUk1BVF9NT0RfSU5W QUxJRAo+ID4gIH07Cj4gPiAgCj4gPiAtc3RhdGljIGJvb2wgZzR4X21vZF9zdXBwb3J0ZWQodWlu dDMyX3QgZm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikKPiA+ICtzdGF0aWMgYm9vbCBnNHhfc3By aXRlX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKPiA+ICsJ CQkJCSAgICB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpCj4gPiAgewo+ID4gKwlzd2l0Y2ggKG1v ZGlmaWVyKSB7Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOgo+ID4gKwljYXNlIEk5 MTVfRk9STUFUX01PRF9YX1RJTEVEOgo+ID4gKwkJYnJlYWs7Cj4gPiArCWRlZmF1bHQ6Cj4gPiAr CQlyZXR1cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiAKPiBSZXVzZSB0aGUgc2FtZSBMSU5FQVIv TU9EX1hfVElMRUQgZnVuYyBmcm9tIGludGVsX2Rpc3BsYXkuYz8KPiAKPiA+ICAJc3dpdGNoIChm b3JtYXQpIHsKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ID4gIAljYXNlIERSTV9G T1JNQVRfWVVZVjoKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1lWWVU6Cj4gPiAgCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgo+ID4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiA+IC0JCWlmIChtb2RpZmll ciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiA+IC0JCSAgICBtb2RpZmllciA9PSBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiA+IC0JCQlyZXR1cm4gdHJ1ZTsKPiA+IC0JCS8qIGZhbGwg dGhyb3VnaCAqLwo+ID4gKwkJcmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVB UiB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwo+ID4gIAlk ZWZhdWx0Ogo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gLXN0 YXRpYyBib29sIHNuYl9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9k aWZpZXIpCj4gPiArc3RhdGljIGJvb2wgc25iX3Nwcml0ZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChz dHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gPiArCQkJCQkgICAgdTMyIGZvcm1hdCwgdTY0IG1v ZGlmaWVyKQo+ID4gIHsKPiA+ICsJc3dpdGNoIChtb2RpZmllcikgewo+ID4gKwljYXNlIERSTV9G T1JNQVRfTU9EX0xJTkVBUjoKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiA+ ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4g Cj4gUmV1c2UgdGhlIHNhbWUgTElORUFSL01PRF9YX1RJTEVEIGZ1bmMgZnJvbSBpbnRlbF9kaXNw bGF5LmM/Cj4gCj4gPiArCj4gPiAgCXN3aXRjaCAoZm9ybWF0KSB7Cj4gPiAgCWNhc2UgRFJNX0ZP Uk1BVF9YUkdCODg4ODoKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ID4gQEAgLTEy OTIsMTcgKzEzMDAsMjQgQEAgc3RhdGljIGJvb2wgc25iX21vZF9zdXBwb3J0ZWQodWludDMyX3Qg Zm9ybWF0LCB1aW50NjRfdCBtb2RpZmllcikKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1lWWVU6Cj4g PiAgCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ID4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiA+ IC0JCWlmIChtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiA+IC0JCSAgICBt b2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiA+IC0JCQlyZXR1cm4gdHJ1ZTsK PiA+IC0JCS8qIGZhbGwgdGhyb3VnaCAqLwo+ID4gKwkJcmV0dXJuIG1vZGlmaWVyID09IERSTV9G T1JNQVRfTU9EX0xJTkVBUiB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9Y X1RJTEVEOwo+ID4gIAlkZWZhdWx0Ogo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gPiAg fQo+ID4gIAo+ID4gLXN0YXRpYyBib29sIHZsdl9tb2Rfc3VwcG9ydGVkKHVpbnQzMl90IGZvcm1h dCwgdWludDY0X3QgbW9kaWZpZXIpCj4gPiArc3RhdGljIGJvb2wgdmx2X3Nwcml0ZV9mb3JtYXRf bW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gPiArCQkJCQkgICAgdTMy IGZvcm1hdCwgdTY0IG1vZGlmaWVyKQo+ID4gIHsKPiA+ICsJc3dpdGNoIChtb2RpZmllcikgewo+ ID4gKwljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWF9USUxFRDoKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJcmV0dXJuIGZh bHNlOwo+ID4gKwl9Cj4gCj4gUmV1c2UgdGhlIHNhbWUgTElORUFSL01PRF9YX1RJTEVEIGZ1bmMg ZnJvbSBpbnRlbF9kaXNwbGF5LmM/Cj4gCj4gPiArCj4gPiAgCXN3aXRjaCAoZm9ybWF0KSB7Cj4g PiAgCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Cj4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4 ODoKPiA+IEBAIC0xMzE1LDI2ICsxMzMwLDQ0IEBAIHN0YXRpYyBib29sIHZsdl9tb2Rfc3VwcG9y dGVkKHVpbnQzMl90IGZvcm1hdCwgdWludDY0X3QgbW9kaWZpZXIpCj4gPiAgCWNhc2UgRFJNX0ZP Uk1BVF9ZVllVOgo+ID4gIAljYXNlIERSTV9GT1JNQVRfVVlWWToKPiA+ICAJY2FzZSBEUk1fRk9S TUFUX1ZZVVk6Cj4gPiAtCQlpZiAobW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8 Cj4gPiAtCQkgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQpCj4gPiAtCQkJ cmV0dXJuIHRydWU7Cj4gPiAtCQkvKiBmYWxsIHRocm91Z2ggKi8KPiA+ICsJCXJldHVybiBtb2Rp ZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiA+ICsJCQltb2RpZmllciA9PSBJOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRDsKPiA+ICAJZGVmYXVsdDoKPiA+ICAJCXJldHVybiBmYWxzZTsK PiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgYm9vbCBza2xfbW9kX3N1cHBvcnRlZCh1 aW50MzJfdCBmb3JtYXQsIHVpbnQ2NF90IG1vZGlmaWVyKQo+ID4gK3N0YXRpYyBib29sIHNrbF9w bGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gPiAr CQkJCQkgICB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoX3BsYW5lKTsKPiA+ICsKPiA+ICsJc3dp dGNoIChtb2RpZmllcikgewo+ID4gKwljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKPiA+ICsJ Y2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRDoKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6Cj4gPiArCQlicmVh azsKPiA+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4gPiArCWNhc2UgSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiA+ICsJCWlmICghcGxhbmUtPmhhc19jY3MpCj4g PiArCQkJcmV0dXJuIGZhbHNlOwo+ID4gKwkJYnJlYWs7Cj4gPiArCWRlZmF1bHQ6Cj4gPiArCQly ZXR1cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiA+ICAJc3dpdGNoIChmb3JtYXQpIHsKPiA+ICAJ Y2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4Ogo+ID4gIAljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6 Cj4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiA+ICAJY2FzZSBEUk1fRk9STUFUX0FC R1I4ODg4Ogo+ID4gLQkJaWYgKG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9D Q1MgfHwKPiA+IC0JCSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1Mp Cj4gPiAtCQkJcmV0dXJuIHRydWU7Cj4gPiAtCQkvKiBmYWxsIHRocm91Z2ggKi8KPiA+ICsJCXJl dHVybiBtb2RpZmllciA9PSBEUk1fRk9STUFUX01PRF9MSU5FQVIgfHwKPiA+ICsJCQltb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURf Q0NTIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzsK PiA+ICAJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiA+ICAJY2FzZSBEUk1fRk9STUFUX1hSR0Iy MTAxMDEwOgo+ID4gIAljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6Cj4gPiBAQCAtMTM0Miw1 MiArMTM3NSw2MSBAQCBzdGF0aWMgYm9vbCBza2xfbW9kX3N1cHBvcnRlZCh1aW50MzJfdCBmb3Jt YXQsIHVpbnQ2NF90IG1vZGlmaWVyKQo+ID4gIAljYXNlIERSTV9GT1JNQVRfWVZZVToKPiA+ICAJ Y2FzZSBEUk1fRk9STUFUX1VZVlk6Cj4gPiAgCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgo+ID4gLQkJ aWYgKG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkKPiA+IC0JCQlyZXR1cm4g dHJ1ZTsKPiA+IC0JCS8qIGZhbGwgdGhyb3VnaCAqLwo+ID4gKwkJcmV0dXJuIG1vZGlmaWVyID09 IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8fAo+ID4gKwkJCW1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9YX1RJTEVEIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElM RUQgfHwKPiA+ICsJCQltb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ7Cj4gPiAg CWNhc2UgRFJNX0ZPUk1BVF9DODoKPiA+IC0JCWlmIChtb2RpZmllciA9PSBEUk1fRk9STUFUX01P RF9MSU5FQVIgfHwKPiA+IC0JCSAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxF RCB8fAo+ID4gLQkJICAgIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEKQo+ID4g LQkJCXJldHVybiB0cnVlOwo+ID4gLQkJLyogZmFsbCB0aHJvdWdoICovCj4gPiArCQlyZXR1cm4g bW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8Cj4gPiArCQkJbW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1hfVElMRUQgfHwKPiA+ICsJCQltb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRDsKPiA+ICAJZGVmYXVsdDoKPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ICAJ fQo+IAo+IFRoaXMgbG9va3MgbGlrZSB0aGUgc2FtZSBza2wgZnVuYyBmcm9tIGludGVsX2Rpc3Bs YXkuYy4gIENhbiB3ZSByZXVzZSBpdD8KCkkgaGF2ZSBwb3N0ZWQgcGF0Y2hlcyB0byBlbGltaW5h dGUgdGhlIHVnbHkgY29kZS9kYXRhIGR1cGxpY2F0aW9uIGZvcgpTS0wgcGxhbmVzLgoKPiAKPiA+ ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGJvb2wgaW50ZWxfc3ByaXRlX3BsYW5lX2Zvcm1hdF9tb2Rf c3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmb3JtYXQsCj4gPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90IG1vZGlmaWVyKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+ZGV2KTsKPiA+IC0KPiA+IC0JaWYgKFdBUk5fT04obW9kaWZp ZXIgPT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkpCj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgZzR4X3Nwcml0ZV9mdW5jcyA9IHsK PiA+ICsJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKPiA+ ICsJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAo+ID4g KwkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gPiArCS5hdG9taWNfZ2V0X3Byb3Bl cnR5ID0gaW50ZWxfcGxhbmVfYXRvbWljX2dldF9wcm9wZXJ0eSwKPiA+ICsJLmF0b21pY19zZXRf cHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+ID4gKwkuYXRvbWlj X2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwKPiA+ICsJLmF0 b21pY19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSwKPiA+ICsJLmZv cm1hdF9tb2Rfc3VwcG9ydGVkID0gZzR4X3Nwcml0ZV9mb3JtYXRfbW9kX3N1cHBvcnRlZCwKPiA+ ICt9Owo+ID4gIAo+ID4gLQlpZiAoKG1vZGlmaWVyID4+IDU2KSAhPSBEUk1fRk9STUFUX01PRF9W RU5ET1JfSU5URUwgJiYKPiA+IC0JICAgIG1vZGlmaWVyICE9IERSTV9GT1JNQVRfTU9EX0xJTkVB UikKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9mdW5jcyBzbmJfc3ByaXRlX2Z1bmNzID0gewo+ID4gKwkudXBkYXRlX3BsYW5lID0gZHJtX2F0 b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAo+ID4gKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9hdG9t aWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gPiArCS5kZXN0cm95ID0gaW50ZWxfcGxhbmVfZGVz dHJveSwKPiA+ICsJLmF0b21pY19nZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfZ2V0 X3Byb3BlcnR5LAo+ID4gKwkuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX2F0b21p Y19zZXRfcHJvcGVydHksCj4gPiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gaW50ZWxfcGxh bmVfZHVwbGljYXRlX3N0YXRlLAo+ID4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9w bGFuZV9kZXN0cm95X3N0YXRlLAo+ID4gKwkuZm9ybWF0X21vZF9zdXBwb3J0ZWQgPSBzbmJfc3By aXRlX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkLAo+ID4gK307Cj4gPiAgCj4gPiAtCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpCj4gPiAtCQlyZXR1cm4gc2tsX21vZF9zdXBwb3J0ZWQoZm9ybWF0 LCBtb2RpZmllcik7Cj4gPiAtCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ID4gLQkJcmV0dXJuIHZsdl9tb2Rfc3VwcG9ydGVkKGZv cm1hdCwgbW9kaWZpZXIpOwo+ID4gLQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYp Cj4gPiAtCQlyZXR1cm4gc25iX21vZF9zdXBwb3J0ZWQoZm9ybWF0LCBtb2RpZmllcik7Cj4gPiAt CWVsc2UKPiA+IC0JCXJldHVybiBnNHhfbW9kX3N1cHBvcnRlZChmb3JtYXQsIG1vZGlmaWVyKTsK PiA+IC19Cj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mgdmx2X3Nwcml0 ZV9mdW5jcyA9IHsKPiA+ICsJLnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0 ZV9wbGFuZSwKPiA+ICsJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxl X3BsYW5lLAo+ID4gKwkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gPiArCS5hdG9t aWNfZ2V0X3Byb3BlcnR5ID0gaW50ZWxfcGxhbmVfYXRvbWljX2dldF9wcm9wZXJ0eSwKPiA+ICsJ LmF0b21pY19zZXRfcHJvcGVydHkgPSBpbnRlbF9wbGFuZV9hdG9taWNfc2V0X3Byb3BlcnR5LAo+ ID4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxpY2F0ZV9zdGF0 ZSwKPiA+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0 ZSwKPiA+ICsJLmZvcm1hdF9tb2Rfc3VwcG9ydGVkID0gdmx2X3Nwcml0ZV9mb3JtYXRfbW9kX3N1 cHBvcnRlZCwKPiA+ICt9Owo+ID4gIAo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X2Z1bmNzIGludGVsX3Nwcml0ZV9wbGFuZV9mdW5jcyA9IHsKPiA+IC0gICAgICAgIC51cGRhdGVf cGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4gPiAtICAgICAgICAuZGlz YWJsZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gPiAtICAgICAg ICAuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCj4gPiAtICAgICAgICAuYXRvbWljX2dl dF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHksCj4gPiAtICAgICAg ICAuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGludGVsX3BsYW5lX2F0b21pY19zZXRfcHJvcGVydHks Cj4gPiAtICAgICAgICAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX3BsYW5lX2R1cGxp Y2F0ZV9zdGF0ZSwKPiA+IC0gICAgICAgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX3Bs YW5lX2Rlc3Ryb3lfc3RhdGUsCj4gPiAtICAgICAgICAuZm9ybWF0X21vZF9zdXBwb3J0ZWQgPSBp bnRlbF9zcHJpdGVfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQsCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3Mgc2tsX3BsYW5lX2Z1bmNzID0gewo+ID4gKwkudXBkYXRl X3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLAo+ID4gKwkuZGlzYWJsZV9w bGFuZSA9IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gPiArCS5kZXN0cm95ID0g aW50ZWxfcGxhbmVfZGVzdHJveSwKPiA+ICsJLmF0b21pY19nZXRfcHJvcGVydHkgPSBpbnRlbF9w bGFuZV9hdG9taWNfZ2V0X3Byb3BlcnR5LAo+ID4gKwkuYXRvbWljX3NldF9wcm9wZXJ0eSA9IGlu dGVsX3BsYW5lX2F0b21pY19zZXRfcHJvcGVydHksCj4gPiArCS5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlLAo+ID4gKwkuYXRvbWljX2Rlc3Ryb3lf c3RhdGUgPSBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ID4gKwkuZm9ybWF0X21vZF9zdXBw b3J0ZWQgPSBza2xfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQsCj4gPiAgfTsKPiA+ICAKPiA+ ICBib29sIHNrbF9wbGFuZV9oYXNfY2NzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+IEBAIC0xNDEzLDYgKzE0NTUsNyBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICB7Cj4gPiAgCXN0cnVjdCBpbnRl bF9wbGFuZSAqaW50ZWxfcGxhbmUgPSBOVUxMOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnN0YXRlID0gTlVMTDsKPiA+ICsJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyAqcGxh bmVfZnVuY3M7Cj4gPiAgCXVuc2lnbmVkIGxvbmcgcG9zc2libGVfY3J0Y3M7Cj4gPiAgCWNvbnN0 IHVpbnQzMl90ICpwbGFuZV9mb3JtYXRzOwo+ID4gIAljb25zdCB1aW50NjRfdCAqbW9kaWZpZXJz Owo+ID4gQEAgLTE0MzYsNiArMTQ3OSw4IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA5KSB7Cj4gPiAgCQlpbnRlbF9wbGFuZS0+Y2FuX3NjYWxlID0gdHJ1ZTsKPiA+ICAJ CXN0YXRlLT5zY2FsZXJfaWQgPSAtMTsKPiA+ICsJCWludGVsX3BsYW5lLT5oYXNfY2NzID0gc2ts X3BsYW5lX2hhc19jY3MoZGV2X3ByaXYsIHBpcGUsCj4gPiArCQkJCQkJCSBQTEFORV9TUFJJVEUw ICsgcGxhbmUpOwo+ID4gIAo+ID4gIAkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZSA9IHNrbF91 cGRhdGVfcGxhbmU7Cj4gPiAgCQlpbnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZSA9IHNrbF9kaXNh YmxlX3BsYW5lOwo+ID4gQEAgLTE0NDMsMTEgKzE0ODgsOSBAQCBpbnRlbF9zcHJpdGVfcGxhbmVf Y3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAKPiA+ICAJCXBs YW5lX2Zvcm1hdHMgPSBza2xfcGxhbmVfZm9ybWF0czsKPiA+ICAJCW51bV9wbGFuZV9mb3JtYXRz ID0gQVJSQVlfU0laRShza2xfcGxhbmVfZm9ybWF0cyk7Cj4gPiArCQltb2RpZmllcnMgPSBza2xf cGxhbmVfZm9ybWF0X21vZGlmaWVyczsKPiA+ICAKPiA+IC0JCWlmIChza2xfcGxhbmVfaGFzX2Nj cyhkZXZfcHJpdiwgcGlwZSwgUExBTkVfU1BSSVRFMCArIHBsYW5lKSkKPiA+IC0JCQltb2RpZmll cnMgPSBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3M7Cj4gPiAtCQllbHNlCj4gPiAtCQkJ bW9kaWZpZXJzID0gc2tsX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfbm9jY3M7Cj4gPiArCQlwbGFu ZV9mdW5jcyA9ICZza2xfcGxhbmVfZnVuY3M7Cj4gPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklF VyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiA+ICAJCWludGVsX3Bs YW5lLT5jYW5fc2NhbGUgPSBmYWxzZTsKPiA+ICAJCWludGVsX3BsYW5lLT5tYXhfZG93bnNjYWxl ID0gMTsKPiA+IEBAIC0xNDU5LDYgKzE1MDIsOCBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3JlYXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCXBsYW5lX2Zvcm1hdHMg PSB2bHZfcGxhbmVfZm9ybWF0czsKPiA+ICAJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlfU0la RSh2bHZfcGxhbmVfZm9ybWF0cyk7Cj4gPiAgCQltb2RpZmllcnMgPSBpOXh4X3BsYW5lX2Zvcm1h dF9tb2RpZmllcnM7Cj4gPiArCj4gPiArCQlwbGFuZV9mdW5jcyA9ICZ2bHZfc3ByaXRlX2Z1bmNz Owo+ID4gIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewo+ID4gIAkJaWYg KElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsKPiA+ICAJCQlpbnRlbF9wbGFuZS0+Y2FuX3NjYWxl ID0gdHJ1ZTsKPiA+IEBAIC0xNDc1LDYgKzE1MjAsOCBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3Jl YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ICAJCXBsYW5lX2Zvcm1h dHMgPSBzbmJfcGxhbmVfZm9ybWF0czsKPiA+ICAJCW51bV9wbGFuZV9mb3JtYXRzID0gQVJSQVlf U0laRShzbmJfcGxhbmVfZm9ybWF0cyk7Cj4gPiAgCQltb2RpZmllcnMgPSBpOXh4X3BsYW5lX2Zv cm1hdF9tb2RpZmllcnM7Cj4gPiArCj4gPiArCQlwbGFuZV9mdW5jcyA9ICZzbmJfc3ByaXRlX2Z1 bmNzOwo+ID4gIAl9IGVsc2Ugewo+ID4gIAkJaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSA9IHRydWU7 Cj4gPiAgCQlpbnRlbF9wbGFuZS0+bWF4X2Rvd25zY2FsZSA9IDE2Owo+ID4gQEAgLTE0OTEsNiAr MTUzOCw5IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gIAkJCXBsYW5lX2Zvcm1hdHMgPSBnNHhfcGxhbmVfZm9ybWF0czsK PiA+ICAJCQludW1fcGxhbmVfZm9ybWF0cyA9IEFSUkFZX1NJWkUoZzR4X3BsYW5lX2Zvcm1hdHMp Owo+ID4gIAkJfQo+ID4gKwo+ID4gKwkJcGxhbmVfZnVuY3MgPSBJU19HRU42KGRldl9wcml2KSA/ Cj4gPiArCQkJJnNuYl9zcHJpdGVfZnVuY3MgOiAmZzR4X3Nwcml0ZV9mdW5jczsKPiAKPiBNb3Zl IGh0aXMgYXNzaWdubWVudCBpbnRvIHRoZSBJU19HRU42KCkgYWJvdmU/CgpIbW0uIE5vdCBzdXJl IGhvdyBJIG1pc3NlZCB0aGF0IG9uZS4gTWFrZXMgc2Vuc2UuCgo+IAo+ID4gIAl9Cj4gPiAgCj4g PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiA+IEBAIC0xNTE2LDE0ICsxNTY2 LDE0IEBAIGludGVsX3Nwcml0ZV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gIAo+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ID4g IAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KCZkZXZfcHJpdi0+ZHJtLCAmaW50ZWxf cGxhbmUtPmJhc2UsCj4gPiAtCQkJCQkgICAgICAgcG9zc2libGVfY3J0Y3MsICZpbnRlbF9zcHJp dGVfcGxhbmVfZnVuY3MsCj4gPiArCQkJCQkgICAgICAgcG9zc2libGVfY3J0Y3MsIHBsYW5lX2Z1 bmNzLAo+ID4gIAkJCQkJICAgICAgIHBsYW5lX2Zvcm1hdHMsIG51bV9wbGFuZV9mb3JtYXRzLAo+ ID4gIAkJCQkJICAgICAgIG1vZGlmaWVycywKPiA+ICAJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQ RV9PVkVSTEFZLAo+ID4gIAkJCQkJICAgICAgICJwbGFuZSAlZCVjIiwgcGxhbmUgKyAyLCBwaXBl X25hbWUocGlwZSkpOwo+ID4gIAllbHNlCj4gPiAgCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5l X2luaXQoJmRldl9wcml2LT5kcm0sICZpbnRlbF9wbGFuZS0+YmFzZSwKPiA+IC0JCQkJCSAgICAg ICBwb3NzaWJsZV9jcnRjcywgJmludGVsX3Nwcml0ZV9wbGFuZV9mdW5jcywKPiA+ICsJCQkJCSAg ICAgICBwb3NzaWJsZV9jcnRjcywgcGxhbmVfZnVuY3MsCj4gPiAgCQkJCQkgICAgICAgcGxhbmVf Zm9ybWF0cywgbnVtX3BsYW5lX2Zvcm1hdHMsCj4gPiAgCQkJCQkgICAgICAgbW9kaWZpZXJzLAo+ ID4gIAkJCQkJICAgICAgIERSTV9QTEFORV9UWVBFX09WRVJMQVksCj4gPiAtLSAKPiA+IDIuMTYu MQoKCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=