From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 04/10] drm/i915: Constify power well descriptors Date: Thu, 02 Aug 2018 16:04:35 -0700 Message-ID: <1533251075.2533.47.camel@intel.com> References: <20180720141504.22832-1-imre.deak@intel.com> <20180720141504.22832-5-imre.deak@intel.com> <1533159571.2571.11.camel@intel.com> <20180802120313.GB26929@ideak-desk.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7EF426E03E for ; Thu, 2 Aug 2018 23:11:39 +0000 (UTC) In-Reply-To: <20180802120313.GB26929@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: imre.deak@intel.com Cc: Jani Nikula , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE4LTA4LTAyIMOgcyAxNTowMyArMDMwMCwgSW1yZSBEZWFrIGVzY3JldmV1Ogo+ IE9uIFdlZCwgQXVnIDAxLCAyMDE4IGF0IDAyOjM5OjMxUE0gLTA3MDAsIFBhdWxvIFphbm9uaSB3 cm90ZToKPiA+IEVtIFNleCwgMjAxOC0wNy0yMCDDoHMgMTc6MTQgKzAzMDAsIEltcmUgRGVhayBl c2NyZXZldToKPiA+ID4gSXQgbWFrZXMgc2Vuc2UgdG8ga2VlcCB1bmNoYW5naW5nIGRhdGEgY29u c3QuIEV4dHJhY3Qgc3VjaCBmaWVsZHMKPiA+ID4gZnJvbQo+ID4gPiB0aGUgaTkxNV9wb3dlcl93 ZWxsIHN0cnVjdCBpbnRvIGEgbmV3IGk5MTVfcG93ZXJfd2VsbF9kZXNjIHN0cnVjdAo+ID4gPiB0 aGF0Cj4gPiA+IHdlIGluaXRpYWxpemUgZHVyaW5nIGNvbXBpbGUgdGltZS4gRm9yIHRoZSByZXN0 IG9mIHRoZSBkeW5hbWljCj4gPiA+IGZpZWxkcyBhbGxvY2F0ZSBhbiBhcnJheSBvZiBpOTE1X3Bv d2VyX3dlbGwgb2JqZWN0cyBpbiBpOTE1Cj4gPiA+IGRldl9wcml2LAo+ID4gPiBhbmQgbGluayB0 byBlYWNoIG9mIHRoZXNlIG9iamVjdHMgdGhlaXIgY29ycmVzcG9uZGluZwo+ID4gPiBpOTE1X3Bv d2VyX3dlbGxfZGVzYyBvYmplY3QuCj4gPiA+IAo+ID4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxv LnIuemFub25pQGludGVsLmNvbT4KPiA+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBp bnRlbC5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVs LmNvbT4KPiA+IAo+ID4gUXVpdGUgYSBmZXcgaXNzdWVzIHBvaW50ZWQgYnkgY2hlY2twYXRjaCBm b3IgdGhpcyBwYXRjaCwgcGxlYXNlCj4gPiB0YWtlIGEKPiA+IGxvb2sgYXQgdGhlbS4KPiA+IAo+ ID4gTW9yZSBiZWxvdzoKPiA+IAo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jICAgICB8ICAgNCArLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyAgICAgICAgIHwgICA4ICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgfCAgMTQgKystCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmggICAgfCAgIDQgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICAgICB8ICAgMSArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZGNwLmMgICAgICAgfCAgIDYgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYyB8IDIwNAo+ID4gPiArKysrKysrKysrKysrKysrKysrLS0tCj4gPiA+IC0t LS0tLS0tLS0KPiA+ID4gIDcgZmlsZXMgY2hhbmdlZCwgMTQ0IGluc2VydGlvbnMoKyksIDk3IGRl bGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiA+ID4gaW5kZXggYjNhZWZkNjIzNTU3Li5lYjI4NGNhYzhmZGEgMTAwNjQ0Cj4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiA+IEBAIC0yODMzLDEwICsyODMzLDEw IEBAIHN0YXRpYyBpbnQgaTkxNV9wb3dlcl9kb21haW5faW5mbyhzdHJ1Y3QKPiA+ID4gc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKPiA+ID4gIAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2Rv bWFpbiBwb3dlcl9kb21haW47Cj4gPiA+ICAKPiA+ID4gIAkJcG93ZXJfd2VsbCA9ICZwb3dlcl9k b21haW5zLT5wb3dlcl93ZWxsc1tpXTsKPiA+ID4gLQkJc2VxX3ByaW50ZihtLCAiJS0yNXMgJWRc biIsIHBvd2VyX3dlbGwtPm5hbWUsCj4gPiA+ICsJCXNlcV9wcmludGYobSwgIiUtMjVzICVkXG4i LCBwb3dlcl93ZWxsLT5kZXNjLQo+ID4gPiA+bmFtZSwKPiA+ID4gIAkJCSAgIHBvd2VyX3dlbGwt PmNvdW50KTsKPiA+ID4gIAo+ID4gPiAtCQlmb3JfZWFjaF9wb3dlcl9kb21haW4ocG93ZXJfZG9t YWluLCBwb3dlcl93ZWxsLQo+ID4gPiA+IGRvbWFpbnMpCj4gPiA+IAo+ID4gPiArCQlmb3JfZWFj aF9wb3dlcl9kb21haW4ocG93ZXJfZG9tYWluLCBwb3dlcl93ZWxsLQo+ID4gPiA+IGRlc2MtPmRv bWFpbnMpCj4gPiA+IAo+ID4gPiAgCQkJc2VxX3ByaW50ZihtLCAiICAlLTIzcyAlZFxuIiwKPiA+ ID4gIAkJCQkgaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKAo+ID4gPiBwb3dlCj4gPiA+ IHJfZG9tYWluKSwKPiA+ID4gIAkJCQkgcG93ZXJfZG9tYWlucy0KPiA+ID4gPiBkb21haW5fdXNl X2NvdW50W3Bvd2VyX2RvbWFpbl0pOwo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4gPiA+IGluZGV4IDNjOTg0NTMwZmVmOS4uNTc0M2RiNDUwMGZiIDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4gQEAgLTkyMiw3ICs5MjIsOSBAQCBzdGF0 aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gPiAgCWludGVsX3VjX2luaXRfZWFybHkoZGV2X3ByaXYpOwo+ID4g PiAgCWludGVsX3BtX3NldHVwKGRldl9wcml2KTsKPiA+ID4gIAlpbnRlbF9pbml0X2RwaW8oZGV2 X3ByaXYpOwo+ID4gPiAtCWludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChkZXZfcHJpdik7Cj4gPiA+ ICsJcmV0ID0gaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KGRldl9wcml2KTsKPiA+ID4gKwlpZiAo cmV0IDwgMCkKPiA+ID4gKwkJZ290byBlcnJfdWM7Cj4gPiA+ICAJaW50ZWxfaXJxX2luaXQoZGV2 X3ByaXYpOwo+ID4gPiAgCWludGVsX2hhbmdjaGVja19pbml0KGRldl9wcml2KTsKPiA+ID4gIAlp bnRlbF9pbml0X2Rpc3BsYXlfaG9va3MoZGV2X3ByaXYpOwo+ID4gPiBAQCAtOTM0LDYgKzkzNiw5 IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QKPiA+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAKPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gIAo+ ID4gPiArZXJyX3VjOgo+ID4gPiArCWludGVsX3VjX2NsZWFudXBfZWFybHkoZGV2X3ByaXYpOwo+ ID4gCj4gPiBQbGVhc2UgbGVhdmUgdGhlIGd1YyBmaXhlcyBmb3IgYSBkaWZmZXJlbnQgcGF0Y2gs IHJlZ2FyZGxlc3Mgb2YgaG93Cj4gPiBpbm5vY2VudCB0aGV5IGxvb2suCj4gCj4gV2VsbCwgYXQg bGVhc3QgSSBkaWRuJ3QgaW50ZW5kIHRvIGZpeCBndWMuIGludGVsX3VjX2NsZWFudXBfZWFybHko KQo+IGlzCj4gYWxyZWFkeSBjYWxsZWQgcHJvcGVybHkgZnJvbSBpOTE1X2RyaXZlcl9jbGVhbnVw X2Vhcmx5KCksIG5vdCBhZGRpbmcKPiB0aGUKPiBjYWxsIGhlcmUgd291bGQgaW50cm9kdWNlIGEg bmV3IHByb2JsZW0gaWYgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KCkKPiBmYWlsZWQuCgpPb29w cywgSSBmYWlsZWQgdG8gcmVhbGl6ZSB3ZSBkaWRuJ3QgaGF2ZSB0aGUgZ3VjIGNsZWFudXAgY2Fs bApvcmlnaW5hbGx5IHNpbmNlIHRoZXJlIHdhcyBubyB3YXkgdG8gcmV0dXJuIG5vbi16ZXJvIGFm dGVyIGl0LiBZb3UncmUKcmlnaHQuCgpTbyB3aXRoIHRoZSBjaGVja3BhdGNoIGlzc3VlcyBmaXhl ZDoKClJldmlld2VkLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4K Cj4gCj4gPiAKPiA+IEV2ZXJ5dGhpbmcgZWxzZSBsb29rcyBnb29kIQo+ID4gCj4gPiBUaGFua3Ms Cj4gPiBQYXVsbwo+ID4gCj4gPiA+ICsJaTkxNV9nZW1fY2xlYW51cF9lYXJseShkZXZfcHJpdik7 Cj4gPiA+ICBlcnJfd29ya3F1ZXVlczoKPiA+ID4gIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChk ZXZfcHJpdik7Cj4gPiA+ICBlcnJfZW5naW5lczoKPiA+ID4gQEAgLTk0OCw2ICs5NTMsNyBAQCBz dGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gPiAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfY2xlYW51cF9l YXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ICB7Cj4g PiA+ICAJaW50ZWxfaXJxX2ZpbmkoZGV2X3ByaXYpOwo+ID4gPiArCWludGVsX3Bvd2VyX2RvbWFp bnNfY2xlYW51cChkZXZfcHJpdik7Cj4gPiA+ICAJaW50ZWxfdWNfY2xlYW51cF9lYXJseShkZXZf cHJpdik7Cj4gPiA+ICAJaTkxNV9nZW1fY2xlYW51cF9lYXJseShkZXZfcHJpdik7Cj4gPiA+ICAJ aTkxNV93b3JrcXVldWVzX2NsZWFudXAoZGV2X3ByaXYpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiA+ID4gaW5kZXggNGZiOTM3Mzk5NDQwLi4zYWUyMDBhOWU4ZjEgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBAQCAtODYyLDEzICs4NjIsOSBA QCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyB7Cj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICAv KiBQb3dlciB3ZWxsIHN0cnVjdHVyZSBmb3IgaGFzd2VsbCAqLwo+ID4gPiAtc3RydWN0IGk5MTVf cG93ZXJfd2VsbCB7Cj4gPiA+ICtzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX2Rlc2Mgewo+ID4gPiAg CWNvbnN0IGNoYXIgKm5hbWU7Cj4gPiA+ICAJYm9vbCBhbHdheXNfb247Cj4gPiA+IC0JLyogcG93 ZXIgd2VsbCBlbmFibGUvZGlzYWJsZSB1c2FnZSBjb3VudCAqLwo+ID4gPiAtCWludCBjb3VudDsK PiA+ID4gLQkvKiBjYWNoZWQgaHcgZW5hYmxlZCBzdGF0ZSAqLwo+ID4gPiAtCWJvb2wgaHdfZW5h YmxlZDsKPiA+ID4gIAl1NjQgZG9tYWluczsKPiA+ID4gIAkvKiB1bmlxdWUgaWRlbnRpZmllciBm b3IgdGhpcyBwb3dlciB3ZWxsICovCj4gPiA+ICAJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQ7 Cj4gPiA+IEBAIC04OTEsNiArODg3LDE0IEBAIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgewo+ID4g PiAgCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzICpvcHM7Cj4gPiA+ICB9Owo+ID4g PiAgCj4gPiA+ICtzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHsKPiA+ID4gKwljb25zdCBzdHJ1Y3Qg aTkxNV9wb3dlcl93ZWxsX2Rlc2MgKmRlc2M7Cj4gPiA+ICsJLyogcG93ZXIgd2VsbCBlbmFibGUv ZGlzYWJsZSB1c2FnZSBjb3VudCAqLwo+ID4gPiArCWludCBjb3VudDsKPiA+ID4gKwkvKiBjYWNo ZWQgaHcgZW5hYmxlZCBzdGF0ZSAqLwo+ID4gPiArCWJvb2wgaHdfZW5hYmxlZDsKPiA+ID4gK307 Cj4gPiA+ICsKPiA+ID4gIHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgewo+ID4gPiAgCS8qCj4g PiA+ICAJICogUG93ZXIgd2VsbHMgbmVlZGVkIGZvciBpbml0aWFsaXphdGlvbiBhdCBkcml2ZXIg aW5pdAo+ID4gPiBhbmQKPiA+ID4gc3VzcGVuZAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5oCj4gPiA+IGluZGV4IDkyOTIwMDFjZGQxNC4uYTYyNjI4MmQ1OTBiIDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gPiA+IEBAIC0z MjIsMTEgKzMyMiwxMSBAQCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gewo+ID4gPiAgCj4gPiA+ICAj ZGVmaW5lIGZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsKF9fZGV2X3ByaXYsIF9fcG93ZXJfd2Vs bCwKPiA+ID4gX19kb21haW5fbWFzaykJXAo+ID4gPiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGwoX19k ZXZfcHJpdiwgX19wb3dlcl93ZWxsKQkJCj4gPiA+IAkJXAo+ID4gPiAtCQlmb3JfZWFjaF9pZigo X19wb3dlcl93ZWxsKS0+ZG9tYWlucyAmCj4gPiA+IChfX2RvbWFpbl9tYXNrKSkKPiA+ID4gKwkJ Zm9yX2VhY2hfaWYoKF9fcG93ZXJfd2VsbCktPmRlc2MtPmRvbWFpbnMgJgo+ID4gPiAoX19kb21h aW5fbWFzaykpCj4gPiA+ICAKPiA+ID4gICNkZWZpbmUgZm9yX2VhY2hfcG93ZXJfZG9tYWluX3dl bGxfcmV2KF9fZGV2X3ByaXYsIF9fcG93ZXJfd2VsbCwKPiA+ID4gX19kb21haW5fbWFzaykgXAo+ ID4gPiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGxfcmV2KF9fZGV2X3ByaXYsIF9fcG93ZXJfd2VsbCkJ Cj4gPiA+IAkKPiA+ID4gICAgICAgICBcCj4gPiA+IC0JCWZvcl9lYWNoX2lmKChfX3Bvd2VyX3dl bGwpLT5kb21haW5zICYKPiA+ID4gKF9fZG9tYWluX21hc2spKQo+ID4gPiArCQlmb3JfZWFjaF9p ZigoX19wb3dlcl93ZWxsKS0+ZGVzYy0+ZG9tYWlucyAmCj4gPiA+IChfX2RvbWFpbl9tYXNrKSkK PiA+ID4gIAo+ID4gPiAgI2RlZmluZSBmb3JfZWFjaF9uZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUo X19zdGF0ZSwgcGxhbmUsCj4gPiA+IG5ld19wbGFuZV9zdGF0ZSwgX19pKSBcCj4gPiA+ICAJZm9y ICgoX19pKSA9IDA7IFwKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g aW5kZXggMzJiZTMwNWMwZTg5Li4yNWY5YjAzNWNmZTggMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC0xOTQzLDYgKzE5NDMsNyBAQCBpbnQgaW50ZWxfcHNy X3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0Cj4gPiA+IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlKTsKPiA+ID4gIAo+ID4gPiAgLyogaW50ZWxfcnVudGltZV9wbS5jICovCj4gPiA+ ICBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICop Owo+ID4gPiArdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKik7Cj4gPiA+ICB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdF9odyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+IGJvb2wgcmVzdW1lKTsK PiA+ID4gIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19maW5pX2h3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICopOwo+ID4gPiAgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N1c3BlbmQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2KTsKPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYwo+ID4gPiBpbmRleCAwY2M2YTg2MWJjZjguLjI2ZTQ4ZmM5NTU0MyAx MDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gPiBAQCAtNTcsOSAr NTcsOSBAQCBzdGF0aWMgYm9vbCBoZGNwX2tleV9sb2FkYWJsZShzdHJ1Y3QKPiA+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAKPiA+ID4gIAkvKiBQRzEgKHBvd2VyIHdlbGwg IzEpIG5lZWRzIHRvIGJlIGVuYWJsZWQgKi8KPiA+ID4gIAlmb3JfZWFjaF9wb3dlcl93ZWxsKGRl dl9wcml2LCBwb3dlcl93ZWxsKSB7Cj4gPiA+IC0JCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBpZCkg ewo+ID4gPiAtCQkJZW5hYmxlZCA9IHBvd2VyX3dlbGwtPm9wcy0KPiA+ID4gPiBpc19lbmFibGVk KGRldl9wcml2LAo+ID4gPiAKPiA+ID4gLQkJCQkJCQkgICAgICBwbwo+ID4gPiB3ZXJfCj4gPiA+ IHdlbGwpOwo+ID4gPiArCQlpZiAocG93ZXJfd2VsbC0+ZGVzYy0+aWQgPT0gaWQpIHsKPiA+ID4g KwkJCWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5vcHMtCj4gPiA+ID4gaXNfZW5hYmxlZChk ZXZfcHJpdiwKPiA+ID4gCj4gPiA+ICsJCQkJCQkJCQo+ID4gPiAgICAgCj4gPiA+IHBvd2VyX3dl bGwpOwo+ID4gPiAgCQkJYnJlYWs7Cj4gPiA+ICAJCX0KPiA+ID4gIAl9Cj4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiA+ID4gaW5kZXggZjExOWNiZTRm NjFkLi44YjNjMjQxYmVlNTUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMKPiA+ID4gQEAgLTE1OSwxNyArMTU5LDE3IEBAIGludGVsX2Rpc3BsYXlf cG93ZXJfZG9tYWluX3N0cihlbnVtCj4gPiA+IGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRv bWFpbikKPiA+ID4gIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkgICAgc3RydWN0IGk5 MTVfcG93ZXJfd2VsbAo+ID4gPiAqcG93ZXJfd2VsbCkKPiA+ID4gIHsKPiA+ID4gLQlEUk1fREVC VUdfS01TKCJlbmFibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4gPiA+IC0JcG93ZXJf d2VsbC0+b3BzLT5lbmFibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ID4gPiArCURSTV9ERUJV R19LTVMoImVuYWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lKTsKPiA+ID4gKwlw b3dlcl93ZWxsLT5kZXNjLT5vcHMtPmVuYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gPiA+ ICAJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9IHRydWU7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4g IHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+ICAJCQkJICAgICBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiAgewo+ID4gPiAtCURSTV9ERUJVR19LTVMoImRp c2FibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4gPiA+ICsJRFJNX0RFQlVHX0tNUygi ZGlzYWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5kZXNjLT5uYW1lKTsKPiA+ID4gIAlwb3dlcl93 ZWxsLT5od19lbmFibGVkID0gZmFsc2U7Cj4gPiA+IC0JcG93ZXJfd2VsbC0+b3BzLT5kaXNhYmxl KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiA+ID4gKwlwb3dlcl93ZWxsLT5kZXNjLT5vcHMtPmRp c2FibGUoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0 aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4g PiAqZGV2X3ByaXYsCj4gPiA+IEBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf cG93ZXJfd2VsbF9wdXQoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gPiAgCQkJCSBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4g PiAgewo+ID4gPiAgCVdBUk4oIXBvd2VyX3dlbGwtPmNvdW50LCAiVXNlIGNvdW50IG9uIHBvd2Vy IHdlbGwgJXMgaXMKPiA+ID4gYWxyZWFkeSB6ZXJvIiwKPiA+ID4gLQkgICAgIHBvd2VyX3dlbGwt Pm5hbWUpOwo+ID4gPiArCSAgICAgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSk7Cj4gPiA+ICAKPiA+ ID4gIAlpZiAoIS0tcG93ZXJfd2VsbC0+Y291bnQpCj4gPiA+ICAJCWludGVsX3Bvd2VyX3dlbGxf ZGlzYWJsZShkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gPiA+IEBAIC0yMTMsNyArMjEzLDcgQEAg Ym9vbCBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfaXNfZW5hYmxlZChzdHJ1Y3QKPiA+ID4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAJaXNfZW5hYmxlZCA9IHRydWU7Cj4gPiA+ICAK PiA+ID4gIAlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXYoZGV2X3ByaXYsIHBvd2VyX3dl bGwsCj4gPiA+IEJJVF9VTEwoZG9tYWluKSkgewo+ID4gPiAtCQlpZiAocG93ZXJfd2VsbC0+YWx3 YXlzX29uKQo+ID4gPiArCQlpZiAocG93ZXJfd2VsbC0+ZGVzYy0+YWx3YXlzX29uKQo+ID4gPiAg CQkJY29udGludWU7Cj4gPiA+ICAKPiA+ID4gIAkJaWYgKCFwb3dlcl93ZWxsLT5od19lbmFibGVk KSB7Cj4gPiA+IEBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxf cHJlX2Rpc2FibGUoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4g PiAgc3RhdGljIHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdAo+ID4g PiBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkJICAgc3RydWN0 Cj4gPiA+IGk5MTVfcG93ZXJfd2VsbAo+ID4gPiAqcG93ZXJfd2VsbCkKPiA+ID4gIHsKPiA+ID4g LQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmlkOwo+ID4gPiArCWVu dW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gPiA+ICAK PiA+ID4gIAkvKiBUaW1lb3V0IGZvciBQVzE6MTAgdXMsIEFVWDpub3Qgc3BlY2lmaWVkLCBvdGhl cgo+ID4gPiBQV3M6MjAKPiA+ID4gdXMuICovCj4gPiA+ICAJV0FSTl9PTihpbnRlbF93YWl0X2Zv cl9yZWdpc3RlcihkZXZfcHJpdiwKPiA+ID4gQEAgLTM1MCw3ICszNTAsNyBAQCBzdGF0aWMgdTMy IGhzd19wb3dlcl93ZWxsX3JlcXVlc3RlcnMoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gPiAgc3RhdGljIHZvaWQgaHN3X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZGlz YWJsZShzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+ ICAJCQkJCSAgICBzdHJ1Y3QKPiA+ID4gaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxs KQo+ID4gPiAgewo+ID4gPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2Vs bC0+aWQ7Cj4gPiA+ICsJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5k ZXNjLT5pZDsKPiA+ID4gIAlib29sIGRpc2FibGVkOwo+ID4gPiAgCXUzMiByZXFzOwo+ID4gPiAg Cj4gPiA+IEBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGljIHZvaWQKPiA+ID4gaHN3X3dhaXRfZm9y X3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3By aXYsCj4gPiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ID4gPiAgCURSTV9ERUJVR19LTVMoIiVzIGZv cmNlZCBvbiAoYmlvczolZCBkcml2ZXI6JWQga3ZtcjolZAo+ID4gPiBkZWJ1ZzolZClcbiIsCj4g PiA+IC0JCSAgICAgIHBvd2VyX3dlbGwtPm5hbWUsCj4gPiA+ICsJCSAgICAgIHBvd2VyX3dlbGwt PmRlc2MtPm5hbWUsCj4gPiA+ICAJCSAgICAgICEhKHJlcXMgJiAxKSwgISEocmVxcyAmIDIpLCAh IShyZXFzICYgNCksCj4gPiA+ICEhKHJlcXMgJiA4KSk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4g QEAgLTM4Niw4ICszODYsOCBAQCBzdGF0aWMgdm9pZAo+ID4gPiBnZW45X3dhaXRfZm9yX3Bvd2Vy X3dlbGxfZnVzZXMoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4g PiAgc3RhdGljIHZvaWQgaHN3X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwK PiA+ID4gKnBvd2VyX3dlbGwpCj4gPiA+ICB7Cj4gPiA+IC0JZW51bSBpOTE1X3Bvd2VyX3dlbGxf aWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiA+ID4gLQlib29sIHdhaXRfZnVzZXMgPSBwb3dlcl93 ZWxsLT5oc3cuaGFzX2Z1c2VzOwo+ID4gPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0g cG93ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gPiA+ICsJYm9vbCB3YWl0X2Z1c2VzID0gcG93ZXJfd2Vs bC0+ZGVzYy0+aHN3Lmhhc19mdXNlczsKPiA+ID4gIAllbnVtIHNrbF9wb3dlcl9nYXRlIHVuaW5p dGlhbGl6ZWRfdmFyKHBnKTsKPiA+ID4gIAl1MzIgdmFsOwo+ID4gPiAgCj4gPiA+IEBAIC00MjEs MTcgKzQyMSwxOSBAQCBzdGF0aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0Cj4g PiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCWlmICh3YWl0X2Z1c2VzKQo+ ID4gPiAgCQlnZW45X3dhaXRfZm9yX3Bvd2VyX3dlbGxfZnVzZXMoZGV2X3ByaXYsIHBnKTsKPiA+ ID4gIAo+ID4gPiAtCWhzd19wb3dlcl93ZWxsX3Bvc3RfZW5hYmxlKGRldl9wcml2LCBwb3dlcl93 ZWxsLQo+ID4gPiA+IGhzdy5pcnFfcGlwZV9tYXNrLAo+ID4gPiAKPiA+ID4gLQkJCQkgICBwb3dl cl93ZWxsLT5oc3cuaGFzX3ZnYSk7Cj4gPiA+ICsJaHN3X3Bvd2VyX3dlbGxfcG9zdF9lbmFibGUo ZGV2X3ByaXYsCj4gPiA+ICsJCQkJICAgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+ID4gPiBoc3cuaXJx X3BpcGVfbWFzaywKPiA+ID4gCj4gPiA+ICsJCQkJICAgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+ID4g Pmhzdy5oYXNfdmdhKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIHZvaWQgaHN3X3Bv d2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYs Cj4gPiA+ICAJCQkJICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ID4gPiAqcG93ZXJfd2VsbCkK PiA+ID4gIHsKPiA+ID4gLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwt PmlkOwo+ID4gPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+ZGVz Yy0+aWQ7Cj4gPiA+ICAJdTMyIHZhbDsKPiA+ID4gIAo+ID4gPiAtCWhzd19wb3dlcl93ZWxsX3By ZV9kaXNhYmxlKGRldl9wcml2LCBwb3dlcl93ZWxsLQo+ID4gPiA+IGhzdy5pcnFfcGlwZV9tYXNr KTsKPiA+ID4gCj4gPiA+ICsJaHN3X3Bvd2VyX3dlbGxfcHJlX2Rpc2FibGUoZGV2X3ByaXYsCj4g PiA+ICsJCQkJICAgcG93ZXJfd2VsbC0+ZGVzYy0KPiA+ID4gPiBoc3cuaXJxX3BpcGVfbWFzayk7 Cj4gPiA+IAo+ID4gPiAgCj4gPiA+ICAJdmFsID0gSTkxNV9SRUFEKEhTV19QV1JfV0VMTF9DVExf RFJJVkVSKGlkKSk7Cj4gPiA+ICAJSTkxNV9XUklURShIU1dfUFdSX1dFTExfQ1RMX0RSSVZFUihp ZCksCj4gPiA+IEBAIC00NDUsNyArNDQ3LDcgQEAgc3RhdGljIHZvaWQKPiA+ID4gIGljbF9jb21i b19waHlfYXV4X3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ID4gPiAq cG93ZXJfd2VsbCkKPiA+ID4gIHsKPiA+ID4gLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9 IHBvd2VyX3dlbGwtPmlkOwo+ID4gPiArCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93 ZXJfd2VsbC0+ZGVzYy0+aWQ7Cj4gPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBJQ0xfQVVYX1BXX1RP X1BPUlQoaWQpOwo+ID4gPiAgCXUzMiB2YWw7Cj4gPiA+ICAKPiA+ID4gQEAgLTQ2Miw3ICs0NjQs NyBAQCBzdGF0aWMgdm9pZAo+ID4gPiAgaWNsX2NvbWJvX3BoeV9hdXhfcG93ZXJfd2VsbF9kaXNh YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkg ICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiA+ID4gKnBvd2VyX3dlbGwpCj4gPiA+ICB7Cj4g PiA+IC0JZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiA+ID4g KwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwo+ID4g PiAgCWVudW0gcG9ydCBwb3J0ID0gSUNMX0FVWF9QV19UT19QT1JUKGlkKTsKPiA+ID4gIAl1MzIg dmFsOwo+ID4gPiAgCj4gPiA+IEBAIC00ODQsNyArNDg2LDcgQEAgaWNsX2NvbWJvX3BoeV9hdXhf cG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+ID4gIHN0YXRpYyBib29sIGhzd19wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LAo+ID4gPiAgCQkJCSAgIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwKPiA+ID4gKnBvd2VyX3dlbGwpCj4gPiA+ICB7Cj4gPiA+IC0JZW51bSBpOTE1X3Bv d2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiA+ID4gKwllbnVtIGk5MTVfcG93ZXJf d2VsbF9pZCBpZCA9IHBvd2VyX3dlbGwtPmRlc2MtPmlkOwo+ID4gPiAgCXUzMiBtYXNrID0gSFNX X1BXUl9XRUxMX0NUTF9SRVEoaWQpIHwKPiA+ID4gSFNXX1BXUl9XRUxMX0NUTF9TVEFURShpZCk7 Cj4gPiA+ICAKPiA+ID4gIAlyZXR1cm4gKEk5MTVfUkVBRChIU1dfUFdSX1dFTExfQ1RMX0RSSVZF UihpZCkpICYgbWFzaykKPiA+ID4gPT0KPiA+ID4gbWFzazsKPiA+ID4gQEAgLTcyMyw3ICs3MjUs NyBAQCBzdGF0aWMgdm9pZCBza2xfZW5hYmxlX2RjNihzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICBzdGF0aWMgdm9pZCBoc3dfcG93ZXJfd2VsbF9zeW5jX2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkgICBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiAgewo+ID4gPiAt CWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfd2VsbC0+aWQ7Cj4gPiA+ICsJZW51 bSBpOTE1X3Bvd2VyX3dlbGxfaWQgaWQgPSBwb3dlcl93ZWxsLT5kZXNjLT5pZDsKPiA+ID4gIAl1 MzIgbWFzayA9IEhTV19QV1JfV0VMTF9DVExfUkVRKGlkKTsKPiA+ID4gIAl1MzIgYmlvc19yZXEg PSBJOTE1X1JFQUQoSFNXX1BXUl9XRUxMX0NUTF9CSU9TKGlkKSk7Cj4gPiA+ICAKPiA+ID4gQEAg LTc0MCwxOSArNzQyLDE5IEBAIHN0YXRpYyB2b2lkIGhzd19wb3dlcl93ZWxsX3N5bmNfaHcoc3Ry dWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgc3RhdGljIHZvaWQg Ynh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2 YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCQkJICAgc3RydWN0Cj4gPiA+IGk5MTVfcG93 ZXJfd2VsbAo+ID4gPiAqcG93ZXJfd2VsbCkKPiA+ID4gIHsKPiA+ID4gLQlieHRfZGRpX3BoeV9p bml0KGRldl9wcml2LCBwb3dlcl93ZWxsLT5ieHQucGh5KTsKPiA+ID4gKwlieHRfZGRpX3BoeV9p bml0KGRldl9wcml2LCBwb3dlcl93ZWxsLT5kZXNjLT5ieHQucGh5KTsKPiA+ID4gIH0KPiA+ID4g IAo+ID4gPiAgc3RhdGljIHZvaWQgYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1 Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYsCj4gPiA+ICAJCQkJCSAg ICBzdHJ1Y3QKPiA+ID4gaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiAg ewo+ID4gPiAtCWJ4dF9kZGlfcGh5X3VuaW5pdChkZXZfcHJpdiwgcG93ZXJfd2VsbC0+Ynh0LnBo eSk7Cj4gPiA+ICsJYnh0X2RkaV9waHlfdW5pbml0KGRldl9wcml2LCBwb3dlcl93ZWxsLT5kZXNj LT5ieHQucGh5KTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIGJvb2wgYnh0X2RwaW9f Y21uX3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4g PiAqZGV2X3ByaXYsCj4gPiA+ICAJCQkJCSAgICBzdHJ1Y3QKPiA+ID4gaTkxNV9wb3dlcl93ZWxs Cj4gPiA+ICpwb3dlcl93ZWxsKQo+ID4gPiAgewo+ID4gPiAtCXJldHVybiBieHRfZGRpX3BoeV9p c19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsLQo+ID4gPiA+IGJ4dC5waHkpOwo+ID4gPiAK PiA+ID4gKwlyZXR1cm4gYnh0X2RkaV9waHlfaXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2Vs bC0KPiA+ID4gPmRlc2MtCj4gPiA+ID4gYnh0LnBoeSk7Cj4gPiA+IAo+ID4gPiAgfQo+ID4gPiAg Cj4gPiA+ICBzdGF0aWMgdm9pZCBieHRfdmVyaWZ5X2RkaV9waHlfcG93ZXJfd2VsbHMoc3RydWN0 Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2KQo+ID4gPiBAQCAtNzYxLDE2 ICs3NjMsMTcgQEAgc3RhdGljIHZvaWQKPiA+ID4gYnh0X3ZlcmlmeV9kZGlfcGh5X3Bvd2VyX3dl bGxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gIAo+ID4gPiAgCXBv d2VyX3dlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJpdiwKPiA+ID4gQlhUX0RQSU9fQ01O X0EpOwo+ID4gPiAgCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+IDApCj4gPiA+IC0JCWJ4dF9kZGlf cGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0KPiA+ID4gPiBieHQucGh5KTsK PiA+ID4gCj4gPiA+ICsJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJf d2VsbC0KPiA+ID4gPmRlc2MtCj4gPiA+ID4gYnh0LnBoeSk7Cj4gPiA+IAo+ID4gPiAgCj4gPiA+ ICAJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRldl9wcml2LAo+ID4gPiBCWFRfRFBJ T19DTU5fQkMpOwo+ID4gPiAgCWlmIChwb3dlcl93ZWxsLT5jb3VudCA+IDApCj4gPiA+IC0JCWJ4 dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwgcG93ZXJfd2VsbC0KPiA+ID4gPiBieHQu cGh5KTsKPiA+ID4gCj4gPiA+ICsJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwg cG93ZXJfd2VsbC0KPiA+ID4gPmRlc2MtCj4gPiA+ID4gYnh0LnBoeSk7Cj4gPiA+IAo+ID4gPiAg Cj4gPiA+ICAJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPiA+ICAJCXBvd2VyX3dl bGwgPSBsb29rdXBfcG93ZXJfd2VsbChkZXZfcHJpdiwKPiA+ID4gR0xLX0RQSU9fQ01OX0MpOwo+ ID4gPiAgCQlpZiAocG93ZXJfd2VsbC0+Y291bnQgPiAwKQo+ID4gPiAtCQkJYnh0X2RkaV9waHlf dmVyaWZ5X3N0YXRlKGRldl9wcml2LAo+ID4gPiBwb3dlcl93ZWxsLT5ieHQucGh5KTsKPiA+ID4g KwkJCWJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShkZXZfcHJpdiwKPiA+ID4gKwkJCQkJCSBwb3dl cl93ZWxsLQo+ID4gPiA+ZGVzYy0KPiA+ID4gPiBieHQucGh5KTsKPiA+ID4gCj4gPiA+ICAJfQo+ ID4gPiAgfQo+ID4gPiAgCj4gPiA+IEBAIC04NjksNyArODcyLDcgQEAgc3RhdGljIHZvaWQKPiA+ ID4gaTgzMF9waXBlc19wb3dlcl93ZWxsX3N5bmNfaHcoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ID4gPiAgc3RhdGljIHZvaWQgdmx2X3NldF9wb3dlcl93ZWxsKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJCSAgICAgICBz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dlcl93ZWxsLAo+ID4gPiBib29sIGVuYWJs ZSkKPiA+ID4gIHsKPiA+ID4gLQllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBwb3dlcl93ZWxsX2lk ID0gcG93ZXJfd2VsbC0+aWQ7Cj4gPiA+ICsJZW51bSBpOTE1X3Bvd2VyX3dlbGxfaWQgcG93ZXJf d2VsbF9pZCA9IHBvd2VyX3dlbGwtCj4gPiA+ID5kZXNjLQo+ID4gPiA+IGlkOwo+ID4gPiAKPiA+ ID4gIAl1MzIgbWFzazsKPiA+ID4gIAl1MzIgc3RhdGU7Cj4gPiA+ICAJdTMyIGN0cmw7Cj4gPiA+ IEBAIC05MTcsNyArOTIwLDcgQEAgc3RhdGljIHZvaWQgdmx2X3Bvd2VyX3dlbGxfZGlzYWJsZShz dHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICBzdGF0aWMgYm9v bCB2bHZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpk ZXZfcHJpdiwKPiA+ID4gIAkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsCj4gPiA+ICpwb3dl cl93ZWxsKQo+ID4gPiAgewo+ID4gPiAtCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIHBvd2VyX3dl bGxfaWQgPSBwb3dlcl93ZWxsLT5pZDsKPiA+ID4gKwllbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBw b3dlcl93ZWxsX2lkID0gcG93ZXJfd2VsbC0KPiA+ID4gPmRlc2MtCj4gPiA+ID4gaWQ7Cj4gPiA+ IAo+ID4gPiAgCWJvb2wgZW5hYmxlZCA9IGZhbHNlOwo+ID4gPiAgCXUzMiBtYXNrOwo+ID4gPiAg CXUzMiBzdGF0ZTsKPiA+ID4gQEAgLTExMDcsNyArMTExMCw3IEBAIGxvb2t1cF9wb3dlcl93ZWxs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAkJc3RydWN0 IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKPiA+ID4gIAo+ID4gPiAgCQlwb3dlcl93ZWxs ID0gJnBvd2VyX2RvbWFpbnMtPnBvd2VyX3dlbGxzW2ldOwo+ID4gPiAtCQlpZiAocG93ZXJfd2Vs bC0+aWQgPT0gcG93ZXJfd2VsbF9pZCkKPiA+ID4gKwkJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlk ID09IHBvd2VyX3dlbGxfaWQpCj4gPiA+ICAJCQlyZXR1cm4gcG93ZXJfd2VsbDsKPiA+ID4gIAl9 Cj4gPiA+ICAKPiA+ID4gQEAgLTExNDYsNyArMTE0OSw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9j aHZfcGh5X3N0YXR1cyhzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g PiA+ICAJCQkJICAgICBQSFlfU1RBVFVTX1NQTElORV9MRE8oRFBJT18KPiA+ID4gUEhZMQo+ID4g PiAsIERQSU9fQ0gwLCAwKSB8Cj4gPiA+ICAJCQkJICAgICBQSFlfU1RBVFVTX1NQTElORV9MRE8o RFBJT18KPiA+ID4gUEhZMQo+ID4gPiAsIERQSU9fQ0gwLCAxKSk7Cj4gPiA+ICAKPiA+ID4gLQlp ZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKPiA+ID4gKwlp ZiAoY21uX2JjLT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKPiA+ ID4gIAkJcGh5X3N0YXR1cyB8PSBQSFlfUE9XRVJHT09EKERQSU9fUEhZMCk7Cj4gPiA+ICAKPiA+ ID4gIAkJLyogdGhpcyBhc3N1bWVzIG92ZXJyaWRlIGlzIG9ubHkgdXNlZCB0byBlbmFibGUKPiA+ ID4gbGFuZXMgKi8KPiA+ID4gQEAgLTExODcsNyArMTE5MCw3IEBAIHN0YXRpYyB2b2lkIGFzc2Vy dF9jaHZfcGh5X3N0YXR1cyhzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiA+ICAJCQlwaHlfc3RhdHVzIHw9Cj4gPiA+IFBIWV9TVEFUVVNfU1BMSU5FX0xETyhEUElP X1BIWTAsIERQSU9fQ0gxLCAxKTsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gLQlpZiAoY21uX2Qt Pm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2QpKSB7Cj4gPiA+ICsJaWYgKGNtbl9kLT5k ZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ID4gPiAgCQlwaHlfc3Rh dHVzIHw9IFBIWV9QT1dFUkdPT0QoRFBJT19QSFkxKTsKPiA+ID4gIAo+ID4gPiAgCQkvKiB0aGlz IGFzc3VtZXMgb3ZlcnJpZGUgaXMgb25seSB1c2VkIHRvIGVuYWJsZQo+ID4gPiBsYW5lcyAqLwo+ ID4gPiBAQCAtMTIzMSwxMCArMTIzNCwxMCBAQCBzdGF0aWMgdm9pZAo+ID4gPiBjaHZfZHBpb19j bW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ID4gPiAgCWVudW0gcGlwZSBwaXBlOwo+ID4gPiAgCXVpbnQzMl90IHRtcDsKPiA+ID4gIAo+ID4g PiAtCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5pZCAhPQo+ID4gPiBQVU5JVF9QT1dFUl9XRUxM X0RQSU9fQ01OX0JDCj4gPiA+ICYmCj4gPiA+IC0JCSAgICAgcG93ZXJfd2VsbC0+aWQgIT0KPiA+ ID4gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKPiA+ID4gKwlXQVJOX09OX09OQ0UocG93 ZXJfd2VsbC0+ZGVzYy0+aWQgIT0KPiA+ID4gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQyAm Jgo+ID4gPiArCQkgICAgIHBvd2VyX3dlbGwtPmRlc2MtPmlkICE9Cj4gPiA+IFBVTklUX1BPV0VS X1dFTExfRFBJT19DTU5fRCk7Cj4gPiA+ICAKPiA+ID4gLQlpZiAocG93ZXJfd2VsbC0+aWQgPT0g UFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9CQykgewo+ID4gPiArCWlmIChwb3dlcl93ZWxsLT5k ZXNjLT5pZCA9PQo+ID4gPiBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7Cj4gPiA+ICAJ CXBpcGUgPSBQSVBFX0E7Cj4gPiA+ICAJCXBoeSA9IERQSU9fUEhZMDsKPiA+ID4gIAl9IGVsc2Ug ewo+ID4gPiBAQCAtMTI2Miw3ICsxMjY1LDcgQEAgc3RhdGljIHZvaWQKPiA+ID4gY2h2X2RwaW9f Y21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+ID4gIAkJRFBJT19TVVNfQ0xLX0NPTkZJR19HQVRFX0NMS1JFUTsKPiA+ID4gIAl2bHZfZHBp b193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzI4LCB0bXApOwo+ID4gPiAgCj4gPiA+ IC0JaWYgKHBvd2VyX3dlbGwtPmlkID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMpIHsK PiA+ID4gKwlpZiAocG93ZXJfd2VsbC0+ZGVzYy0+aWQgPT0KPiA+ID4gUFVOSVRfUE9XRVJfV0VM TF9EUElPX0NNTl9CQykgewo+ID4gPiAgCQl0bXAgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBw aXBlLAo+ID4gPiBfQ0hWX0NNTl9EVzZfQ0gxKTsKPiA+ID4gIAkJdG1wIHw9IERQSU9fRFlOUFdS RE9XTkVOX0NIMTsKPiA+ID4gIAkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIF9DSFZf Q01OX0RXNl9DSDEsCj4gPiA+IHRtcCk7Cj4gPiA+IEBAIC0xMjkzLDEwICsxMjk2LDEwIEBAIHN0 YXRpYyB2b2lkCj4gPiA+IGNodl9kcGlvX2Ntbl9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LAo+ID4gPiAgewo+ID4gPiAgCWVudW0gZHBp b19waHkgcGh5Owo+ID4gPiAgCj4gPiA+IC0JV0FSTl9PTl9PTkNFKHBvd2VyX3dlbGwtPmlkICE9 Cj4gPiA+IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMKPiA+ID4gJiYKPiA+ID4gLQkJICAg ICBwb3dlcl93ZWxsLT5pZCAhPQo+ID4gPiBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0QpOwo+ ID4gPiArCVdBUk5fT05fT05DRShwb3dlcl93ZWxsLT5kZXNjLT5pZCAhPQo+ID4gPiBQVU5JVF9Q T1dFUl9XRUxMX0RQSU9fQ01OX0JDICYmCj4gPiA+ICsJCSAgICAgcG93ZXJfd2VsbC0+ZGVzYy0+ aWQgIT0KPiA+ID4gUFVOSVRfUE9XRVJfV0VMTF9EUElPX0NNTl9EKTsKPiA+ID4gIAo+ID4gPiAt CWlmIChwb3dlcl93ZWxsLT5pZCA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7Cj4g PiA+ICsJaWYgKHBvd2VyX3dlbGwtPmRlc2MtPmlkID09Cj4gPiA+IFBVTklUX1BPV0VSX1dFTExf RFBJT19DTU5fQkMpIHsKPiA+ID4gIAkJcGh5ID0gRFBJT19QSFkwOwo+ID4gPiAgCQlhc3NlcnRf cGxsX2Rpc2FibGVkKGRldl9wcml2LCBQSVBFX0EpOwo+ID4gPiAgCQlhc3NlcnRfcGxsX2Rpc2Fi bGVkKGRldl9wcml2LCBQSVBFX0IpOwo+ID4gPiBAQCAtMjA1MSw3ICsyMDU0LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzCj4gPiA+IGNodl9kcGlvX2Ntbl9wb3dl cl93ZWxsX29wcyA9IHsKPiA+ID4gIAkuaXNfZW5hYmxlZCA9IHZsdl9wb3dlcl93ZWxsX2VuYWJs ZWQsCj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+IC1zdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bCBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsW10gPSB7Cj4gPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjCj4gPiA+IGk5eHhfYWx3YXlzX29uX3Bvd2VyX3dlbGxb XQo+ID4gPiA9IHsKPiA+ID4gIAl7Cj4gPiA+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4gPiA+ ICAJCS5hbHdheXNfb24gPSAxLAo+ID4gPiBAQCAtMjA2OCw3ICsyMDcxLDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfb3BzCj4gPiA+IGk4MzBfcGlwZXNfcG93ZXJfd2Vs bF9vcHMgPSB7Cj4gPiA+ICAJLmlzX2VuYWJsZWQgPSBpODMwX3BpcGVzX3Bvd2VyX3dlbGxfZW5h YmxlZCwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93 ZWxsIGk4MzBfcG93ZXJfd2VsbHNbXSA9IHsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9wb3dlcl93ZWxsX2Rlc2MgaTgzMF9wb3dlcl93ZWxsc1tdID0gewo+ID4gPiAgCXsKPiA+ID4g IAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiA+ID4gIAkJLmFsd2F5c19vbiA9IDEsCj4gPiA+IEBA IC0yMTA1LDcgKzIxMDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9v cHMKPiA+ID4gYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfb3BzID0gewo+ID4gPiAgCS5pc19lbmFi bGVkID0gYnh0X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiA+ID4gIH07Cj4gPiA+ICAK PiA+ID4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGhzd19wb3dlcl93ZWxsc1tdID0g ewo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBoc3dfcG93 ZXJfd2VsbHNbXSA9IHsKPiA+ID4gIAl7Cj4gPiA+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4g PiA+ICAJCS5hbHdheXNfb24gPSAxLAo+ID4gPiBAQCAtMjEyNCw3ICsyMTI3LDcgQEAgc3RhdGlj IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwKPiA+ID4gaHN3X3Bvd2VyX3dlbGxzW10KPiA+ID4gPSB7 Cj4gPiA+ICAJfSwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsIGJkd19wb3dlcl93ZWxsc1tdID0gewo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyBiZHdfcG93ZXJfd2VsbHNbXSA9IHsKPiA+ID4gIAl7Cj4g PiA+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4gPiA+ICAJCS5hbHdheXNfb24gPSAxLAo+ID4g PiBAQCAtMjE2NSw3ICsyMTY4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dl bGxfb3BzCj4gPiA+IHZsdl9kcGlvX3Bvd2VyX3dlbGxfb3BzID0gewo+ID4gPiAgCS5pc19lbmFi bGVkID0gdmx2X3Bvd2VyX3dlbGxfZW5hYmxlZCwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gLXN0 YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIHZsdl9wb3dlcl93ZWxsc1tdID0gewo+ID4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYyB2bHZfcG93ZXJfd2VsbHNb XSA9IHsKPiA+ID4gIAl7Cj4gPiA+ICAJCS5uYW1lID0gImFsd2F5cy1vbiIsCj4gPiA+ICAJCS5h bHdheXNfb24gPSAxLAo+ID4gPiBAQCAtMjIyMyw3ICsyMjI2LDcgQEAgc3RhdGljIHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGwKPiA+ID4gdmx2X3Bvd2VyX3dlbGxzW10KPiA+ID4gPSB7Cj4gPiA+ICAJ fSwKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs IGNodl9wb3dlcl93ZWxsc1tdID0gewo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGxfZGVzYyBjaHZfcG93ZXJfd2VsbHNbXSA9IHsKPiA+ID4gIAl7Cj4gPiA+ICAJCS5u YW1lID0gImFsd2F5cy1vbiIsCj4gPiA+ICAJCS5hbHdheXNfb24gPSAxLAo+ID4gPiBAQCAtMjI2 MywxMiArMjI2NiwxMiBAQCBib29sCj4gPiA+IGludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbF9pc19l bmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gIAli b29sIHJldDsKPiA+ID4gIAo+ID4gPiAgCXBvd2VyX3dlbGwgPSBsb29rdXBfcG93ZXJfd2VsbChk ZXZfcHJpdiwgcG93ZXJfd2VsbF9pZCk7Cj4gPiA+IC0JcmV0ID0gcG93ZXJfd2VsbC0+b3BzLT5p c19lbmFibGVkKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiA+ID4gKwlyZXQgPSBwb3dlcl93ZWxs LT5kZXNjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsCj4gPiA+IHBvd2VyX3dlbGwpOwo+ID4g PiAgCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtc3RhdGljIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIHNrbF9wb3dlcl93ZWxsc1tdID0gewo+ ID4gPiAgCXsKPiA+ID4gIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiA+ID4gIAkJLmFsd2F5c19v biA9IDEsCj4gPiA+IEBAIC0yMzM2LDcgKzIzMzksNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93 ZXJfd2VsbAo+ID4gPiBza2xfcG93ZXJfd2VsbHNbXQo+ID4gPiA9IHsKPiA+ID4gIAl9LAo+ID4g PiAgfTsKPiA+ID4gIAo+ID4gPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgYnh0X3Bv d2VyX3dlbGxzW10gPSB7Cj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bF9kZXNjIGJ4dF9wb3dlcl93ZWxsc1tdID0gewo+ID4gPiAgCXsKPiA+ID4gIAkJLm5hbWUgPSAi YWx3YXlzLW9uIiwKPiA+ID4gIAkJLmFsd2F5c19vbiA9IDEsCj4gPiA+IEBAIC0yMzkwLDcgKzIz OTMsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbAo+ID4gPiBieHRfcG93ZXJfd2Vs bHNbXQo+ID4gPiA9IHsKPiA+ID4gIAl9LAo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAtc3RhdGlj IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgZ2xrX3Bvd2VyX3dlbGxzW10gPSB7Cj4gPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGdsa19wb3dlcl93ZWxsc1tdID0g ewo+ID4gPiAgCXsKPiA+ID4gIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiA+ID4gIAkJLmFsd2F5 c19vbiA9IDEsCj4gPiA+IEBAIC0yNDkwLDcgKzI0OTMsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVf cG93ZXJfd2VsbAo+ID4gPiBnbGtfcG93ZXJfd2VsbHNbXQo+ID4gPiA9IHsKPiA+ID4gIAl9LAo+ ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgY25s X3Bvd2VyX3dlbGxzW10gPSB7Cj4gPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJf d2VsbF9kZXNjIGNubF9wb3dlcl93ZWxsc1tdID0gewo+ID4gPiAgCXsKPiA+ID4gIAkJLm5hbWUg PSAiYWx3YXlzLW9uIiwKPiA+ID4gIAkJLmFsd2F5c19vbiA9IDEsCj4gPiA+IEBAIC0yNTk0LDcg KzI1OTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9vcHMKPiA+ID4g aWNsX2NvbWJvX3BoeV9hdXhfcG93ZXJfd2VsbF9vcHMgPSB7Cj4gPiA+ICAJLmlzX2VuYWJsZWQg PSBoc3dfcG93ZXJfd2VsbF9lbmFibGVkLAo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAtc3RhdGlj IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgaWNsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfcG93ZXJfd2VsbF9kZXNjIGljbF9wb3dlcl93ZWxsc1tdID0g ewo+ID4gPiAgCXsKPiA+ID4gIAkJLm5hbWUgPSAiYWx3YXlzLW9uIiwKPiA+ID4gIAkJLmFsd2F5 c19vbiA9IDEsCj4gPiA+IEBAIC0yODEzLDcgKzI4MTYsNyBAQCBzdGF0aWMgdm9pZAo+ID4gPiBh c3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiA+ID4gIAo+ID4gPiAgCXBvd2VyX3dlbGxfaWRzID0gMDsKPiA+ID4gIAlm b3IgKGkgPSAwOyBpIDwgcG93ZXJfZG9tYWlucy0+cG93ZXJfd2VsbF9jb3VudDsgaSsrKSB7Cj4g PiA+IC0JCWVudW0gaTkxNV9wb3dlcl93ZWxsX2lkIGlkID0gcG93ZXJfZG9tYWlucy0KPiA+ID4g PiBwb3dlcl93ZWxsc1tpXS5pZDsKPiA+ID4gCj4gPiA+ICsJCWVudW0gaTkxNV9wb3dlcl93ZWxs X2lkIGlkID0gcG93ZXJfZG9tYWlucy0KPiA+ID4gPiBwb3dlcl93ZWxsc1tpXS5kZXNjLT5pZDsK PiA+ID4gCj4gPiA+ICAKPiA+ID4gIAkJV0FSTl9PTihpZCA+PSBzaXplb2YocG93ZXJfd2VsbF9p ZHMpICogOCk7Cj4gPiA+ICAJCVdBUk5fT04ocG93ZXJfd2VsbF9pZHMgJiBCSVRfVUxMKGlkKSk7 Cj4gPiA+IEBAIC0yODIxLDEwICsyODI0LDI4IEBAIHN0YXRpYyB2b2lkCj4gPiA+IGFzc2VydF9w b3dlcl93ZWxsX2lkc191bmlxdWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ID4gPiAgCX0KPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAtI2RlZmluZSBzZXRfcG93ZXJfd2VsbHMo cG93ZXJfZG9tYWlucywgX19wb3dlcl93ZWxscykgKHsJCQo+ID4gPiBcCj4gPiA+IC0JKHBvd2Vy X2RvbWFpbnMpLT5wb3dlcl93ZWxscyA9IChfX3Bvd2VyX3dlbGxzKTsJCQo+ID4gPiAJXAo+ID4g PiAtCShwb3dlcl9kb21haW5zKS0+cG93ZXJfd2VsbF9jb3VudCA9Cj4gPiA+IEFSUkFZX1NJWkUo X19wb3dlcl93ZWxscyk7CVwKPiA+ID4gLX0pCj4gPiA+ICtzdGF0aWMgaW50IF9fc2V0X3Bvd2Vy X3dlbGxzKHN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMKPiA+ID4gKnBvd2VyX2RvbWFpbnMsCj4g PiA+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGxfZGVzYwo+ID4gPiAqcG93 ZXJfd2VsbF9kZXNjcywKPiA+ID4gKwkJCSAgICAgaW50IHBvd2VyX3dlbGxfY291bnQpCj4gPiA+ ICt7Cj4gPiA+ICsJaW50IGk7Cj4gPiA+ICsKPiA+ID4gKwlwb3dlcl9kb21haW5zLT5wb3dlcl93 ZWxsX2NvdW50ID0gcG93ZXJfd2VsbF9jb3VudDsKPiA+ID4gKwlwb3dlcl9kb21haW5zLT5wb3dl cl93ZWxscyA9IGtjYWxsb2MocG93ZXJfd2VsbF9jb3VudCwKPiA+ID4gKwkJCQkJICAgICBzaXpl b2YoKnBvd2VyX2RvbWFpCj4gPiA+IG5zLQo+ID4gPiA+IHBvd2VyX3dlbGxzKSwKPiA+ID4gCj4g PiA+ICsJCQkJCSAgICAgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJaWYgKCFwb3dlcl9kb21haW5zLT5w b3dlcl93ZWxscykKPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsKPiA+ID4gKwlmb3Ig KGkgPSAwOyBpIDwgcG93ZXJfd2VsbF9jb3VudDsgaSsrKQo+ID4gPiArCQlwb3dlcl9kb21haW5z LT5wb3dlcl93ZWxsc1tpXS5kZXNjID0KPiA+ID4gJnBvd2VyX3dlbGxfZGVzY3NbaV07Cj4gPiA+ ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArI2RlZmluZSBzZXRf cG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgX19wb3dlcl93ZWxsX2Rlc2NzKSBcCj4gPiA+ICsJ X19zZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgX19wb3dlcl93ZWxsX2Rlc2NzLCBcCj4g PiA+ICsJCQkgIEFSUkFZX1NJWkUoX19wb3dlcl93ZWxsX2Rlc2NzKSkKPiA+ID4gIAo+ID4gPiAg LyoqCj4gPiA+ICAgKiBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQgLSBpbml0aWFsaXplcyB0aGUg cG93ZXIgZG9tYWluCj4gPiA+IHN0cnVjdHVyZXMKPiA+ID4gQEAgLTI4MzYsNiArMjg1Nyw3IEBA IHN0YXRpYyB2b2lkCj4gPiA+IGFzc2VydF9wb3dlcl93ZWxsX2lkc191bmlxdWUoc3RydWN0Cj4g PiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgaW50IGludGVsX3Bvd2VyX2Rv bWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICB7Cj4g PiA+ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJp di0KPiA+ID4gPiBwb3dlcl9kb21haW5zOwo+ID4gPiAKPiA+ID4gKwlpbnQgZXJyOwo+ID4gPiAg Cj4gPiA+ICAJaTkxNV9tb2RwYXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsID0KPiA+ID4gIAkJc2Fu aXRpemVfZGlzYWJsZV9wb3dlcl93ZWxsX29wdGlvbihkZXZfcHJpdiwKPiA+ID4gQEAgLTI4NTIs MTUgKzI4NzQsMTUgQEAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QKPiA+ID4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAJICogdGhlIGRpc2FibGluZyBvcmRl ciBpcyByZXZlcnNlZC4KPiA+ID4gIAkgKi8KPiA+ID4gIAlpZiAoSVNfSUNFTEFLRShkZXZfcHJp dikpIHsKPiA+ID4gLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGljbF9wb3dlcl93 ZWxscyk7Cj4gPiA+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+ID4g PiBpY2xfcG93ZXJfd2VsbHMpOwo+ID4gPiAgCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJp dikpIHsKPiA+ID4gLQkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGhzd19wb3dlcl93 ZWxscyk7Cj4gPiA+ICsJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+ID4g PiBoc3dfcG93ZXJfd2VsbHMpOwo+ID4gPiAgCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9w cml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgYmR3X3Bvd2Vy X3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4g PiA+IGJkd19wb3dlcl93ZWxscyk7Cj4gPiA+ICAJfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9w cml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgc2tsX3Bvd2Vy X3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4g PiA+IHNrbF9wb3dlcl93ZWxscyk7Cj4gPiA+ICAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRl dl9wcml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgY25sX3Bv d2VyX3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMs Cj4gPiA+IGNubF9wb3dlcl93ZWxscyk7Cj4gPiA+ICAKPiA+ID4gIAkJLyoKPiA+ID4gIAkJICog RERJIGFuZCBBdXggSU8gYXJlIGdldHRpbmcgZW5hYmxlZCBmb3IgYWxsCj4gPiA+IHBvcnRzCj4g PiA+IEBAIC0yODcyLDIyICsyODk0LDM0IEBAIGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQo c3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgCQkJcG93ZXJf ZG9tYWlucy0+cG93ZXJfd2VsbF9jb3VudCAtPSAyOwo+ID4gPiAgCj4gPiA+ICAJfSBlbHNlIGlm IChJU19CUk9YVE9OKGRldl9wcml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJf ZG9tYWlucywgYnh0X3Bvd2VyX3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bvd2VyX3dlbGxz KHBvd2VyX2RvbWFpbnMsCj4gPiA+IGJ4dF9wb3dlcl93ZWxscyk7Cj4gPiA+ICAJfSBlbHNlIGlm IChJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93 ZXJfZG9tYWlucywgZ2xrX3Bvd2VyX3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bvd2VyX3dl bGxzKHBvd2VyX2RvbWFpbnMsCj4gPiA+IGdsa19wb3dlcl93ZWxscyk7Cj4gPiA+ICAJfSBlbHNl IGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMo cG93ZXJfZG9tYWlucywgY2h2X3Bvd2VyX3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bvd2Vy X3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gPiA+IGNodl9wb3dlcl93ZWxscyk7Cj4gPiA+ICAJfSBl bHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2Vs bHMocG93ZXJfZG9tYWlucywgdmx2X3Bvd2VyX3dlbGxzKTsKPiA+ID4gKwkJZXJyID0gc2V0X3Bv d2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsCj4gPiA+IHZsdl9wb3dlcl93ZWxscyk7Cj4gPiA+ICAJ fSBlbHNlIGlmIChJU19JODMwKGRldl9wcml2KSkgewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMo cG93ZXJfZG9tYWlucywKPiA+ID4gaTgzMF9wb3dlcl93ZWxscyk7Cj4gPiA+ICsJCWVyciA9IHNl dF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLAo+ID4gPiBpODMwX3Bvd2VyX3dlbGxzKTsKPiA+ ID4gIAl9IGVsc2Ugewo+ID4gPiAtCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywKPiA+ ID4gaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbCk7Cj4gPiA+ICsJCWVyciA9IHNldF9wb3dlcl93 ZWxscyhwb3dlcl9kb21haW5zLAo+ID4gPiBpOXh4X2Fsd2F5c19vbl9wb3dlcl93ZWxsKTsKPiA+ ID4gIAl9Cj4gPiA+ICAKPiA+ID4gLQlhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKGRldl9w cml2KTsKPiA+ID4gKwlpZiAoIWVycikKPiA+ID4gKwkJYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3Vu aXF1ZShkZXZfcHJpdik7Cj4gPiA+ICAKPiA+ID4gLQlyZXR1cm4gMDsKPiA+ID4gKwlyZXR1cm4g ZXJyOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIGludGVsX3Bvd2VyX2Rv bWFpbnNfY2xlYW51cCAtIGNsZWFuIHVwIHBvd2VyIGRvbWFpbnMKPiA+ID4gcmVzb3VyY2VzCj4g PiA+ICsgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4gPiA+ICsgKgo+ID4gPiAr ICogUmVsZWFzZSBhbnkgcmVzb3VyY2VzIGFjcXVpcmVkIGJ5IGludGVsX3Bvd2VyX2RvbWFpbnNf aW5pdCgpCj4gPiA+ICsgKi8KPiA+ID4gK3ZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc19jbGVhbnVw KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdikKPiA+ID4gK3sKPiA+ID4g KwlrZnJlZShkZXZfcHJpdi0+cG93ZXJfZG9tYWlucy5wb3dlcl93ZWxscyk7Cj4gPiA+ICB9Cj4g PiA+ICAKPiA+ID4gIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3luY19odyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYpCj4gPiA+IEBAIC0yODk3LDkgKzI5 MzEsOSBAQCBzdGF0aWMgdm9pZAo+ID4gPiBpbnRlbF9wb3dlcl9kb21haW5zX3N5bmNfaHcoc3Ry dWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgCj4gPiA+ICAJbXV0 ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gPiA+ICAJZm9yX2VhY2hfcG93ZXJfd2Vs bChkZXZfcHJpdiwgcG93ZXJfd2VsbCkgewo+ID4gPiAtCQlwb3dlcl93ZWxsLT5vcHMtPnN5bmNf aHcoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ID4gPiAtCQlwb3dlcl93ZWxsLT5od19lbmFibGVk ID0gcG93ZXJfd2VsbC0+b3BzLQo+ID4gPiA+IGlzX2VuYWJsZWQoZGV2X3ByaXYsCj4gPiA+IAo+ ID4gPiAtCQkJCQkJCQkKPiA+ID4gICAgIAo+ID4gPiAgcG93ZXJfd2VsbCk7Cj4gPiA+ICsJCXBv d2VyX3dlbGwtPmRlc2MtPm9wcy0+c3luY19odyhkZXZfcHJpdiwKPiA+ID4gcG93ZXJfd2VsbCk7 Cj4gPiA+ICsJCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPQo+ID4gPiArCQkJcG93ZXJfd2VsbC0+ ZGVzYy0+b3BzLQo+ID4gPiA+aXNfZW5hYmxlZChkZXZfcHJpdiwKPiA+ID4gcG93ZXJfd2VsbCk7 Cj4gPiA+ICAJfQo+ID4gPiAgCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4g PiA+ICB9Cj4gPiA+IEBAIC0zNDAyLDcgKzM0MzYsNyBAQCBzdGF0aWMgdm9pZCBjaHZfcGh5X2Nv bnRyb2xfaW5pdChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ ICAJICogb3ZlcnJpZGUgYW5kIHNldCB0aGUgbGFuZSBwb3dlcmRvd24gYml0cyBhY2NkaW5nIHRv Cj4gPiA+IHRoZQo+ID4gPiAgCSAqIGN1cnJlbnQgbGFuZSBzdGF0dXMuCj4gPiA+ICAJICovCj4g PiA+IC0JaWYgKGNtbl9iYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMpKSB7Cj4g PiA+ICsJaWYgKGNtbl9iYy0+ZGVzYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMp KSB7Cj4gPiA+ICAJCXVpbnQzMl90IHN0YXR1cyA9IEk5MTVfUkVBRChEUExMKFBJUEVfQSkpOwo+ ID4gPiAgCQl1bnNpZ25lZCBpbnQgbWFzazsKPiA+ID4gIAo+ID4gPiBAQCAtMzQzMyw3ICszNDY3 LDcgQEAgc3RhdGljIHZvaWQgY2h2X3BoeV9jb250cm9sX2luaXQoc3RydWN0Cj4gPiA+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgCQlkZXZfcHJpdi0+Y2h2X3BoeV9hc3NlcnRb RFBJT19QSFkwXSA9IHRydWU7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IC0JaWYgKGNtbl9kLT5v cHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9kKSkgewo+ID4gPiArCWlmIChjbW5fZC0+ZGVz Yy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fZCkpIHsKPiA+ID4gIAkJdWludDMyX3Qg c3RhdHVzID0gSTkxNV9SRUFEKERQSU9fUEhZX1NUQVRVUyk7Cj4gPiA+ICAJCXVuc2lnbmVkIGlu dCBtYXNrOwo+ID4gPiAgCj4gPiA+IEBAIC0zNDY5LDE1ICszNTAzLDE1IEBAIHN0YXRpYyB2b2lk IHZsdl9jbW5sYW5lX3dhKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+ID4gIAkJbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsCj4gPiA+IFBVTklUX1BPV0VSX1dF TExfRElTUDJEKTsKPiA+ID4gIAo+ID4gPiAgCS8qIElmIHRoZSBkaXNwbGF5IG1pZ2h0IGJlIGFs cmVhZHkgYWN0aXZlIHNraXAgdGhpcyAqLwo+ID4gPiAtCWlmIChjbW4tPm9wcy0+aXNfZW5hYmxl ZChkZXZfcHJpdiwgY21uKSAmJgo+ID4gPiAtCSAgICBkaXNwMmQtPm9wcy0+aXNfZW5hYmxlZChk ZXZfcHJpdiwgZGlzcDJkKSAmJgo+ID4gPiArCWlmIChjbW4tPmRlc2MtPm9wcy0+aXNfZW5hYmxl ZChkZXZfcHJpdiwgY21uKSAmJgo+ID4gPiArCSAgICBkaXNwMmQtPmRlc2MtPm9wcy0+aXNfZW5h YmxlZChkZXZfcHJpdiwgZGlzcDJkKSAmJgo+ID4gPiAgCSAgICBJOTE1X1JFQUQoRFBJT19DVEwp ICYgRFBJT19DTU5SU1QpCj4gPiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ID4gPiAgCURSTV9ERUJV R19LTVMoInRvZ2dsaW5nIGRpc3BsYXkgUEhZIHNpZGUgcmVzZXRcbiIpOwo+ID4gPiAgCj4gPiA+ ICAJLyogY21ubGFuZSBuZWVkcyBEUExMIHJlZ2lzdGVycyAqLwo+ID4gPiAtCWRpc3AyZC0+b3Bz LT5lbmFibGUoZGV2X3ByaXYsIGRpc3AyZCk7Cj4gPiA+ICsJZGlzcDJkLT5kZXNjLT5vcHMtPmVu YWJsZShkZXZfcHJpdiwgZGlzcDJkKTsKPiA+ID4gIAo+ID4gPiAgCS8qCj4gPiA+ICAJICogRnJv bQo+ID4gPiBWTFYyQTBfRFBfZURQX0hETUlfRFBJT19kcml2ZXJfdmJpb3Nfbm90ZXNfMTEuZG9j eDoKPiA+ID4gQEAgLTM0ODYsNyArMzUyMCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9jbW5sYW5lX3dh KHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gIAkgKiBTaW1w bHkgdW5nYXRpbmcgaXNuJ3QgZW5vdWdoIHRvIHJlc2V0IHRoZSBQSFkgZW5vdWdoCj4gPiA+IHRv Cj4gPiA+IGdldAo+ID4gPiAgCSAqIHBvcnRzIGFuZCBsYW5lcyBydW5uaW5nLgo+ID4gPiAgCSAq Lwo+ID4gPiAtCWNtbi0+b3BzLT5kaXNhYmxlKGRldl9wcml2LCBjbW4pOwo+ID4gPiArCWNtbi0+ ZGVzYy0+b3BzLT5kaXNhYmxlKGRldl9wcml2LCBjbW4pOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ ICAvKioKPiA+ID4gQEAgLTM2MDIsOSArMzYzNiw5IEBAIHN0YXRpYyB2b2lkCj4gPiA+IGludGVs X3Bvd2VyX2RvbWFpbnNfZHVtcF9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gIAkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW47Cj4gPiA+ ICAKPiA+ID4gIAkJRFJNX0RFQlVHX0RSSVZFUigiJS0yNXMgJWRcbiIsCj4gPiA+IC0JCQkJIHBv d2VyX3dlbGwtPm5hbWUsIHBvd2VyX3dlbGwtCj4gPiA+ID4gY291bnQpOwo+ID4gPiAKPiA+ID4g KwkJCQkgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSwKPiA+ID4gcG93ZXJfd2VsbC0KPiA+ID4gPiBj b3VudCk7Cj4gPiA+IAo+ID4gPiAgCj4gPiA+IC0JCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21h aW4sIHBvd2VyX3dlbGwtCj4gPiA+ID5kb21haW5zKQo+ID4gPiArCQlmb3JfZWFjaF9wb3dlcl9k b21haW4oZG9tYWluLCBwb3dlcl93ZWxsLT5kZXNjLQo+ID4gPiA+IGRvbWFpbnMpCj4gPiA+IAo+ ID4gPiAgCQkJRFJNX0RFQlVHX0RSSVZFUigiICAlLTIzcyAlZFxuIiwKPiA+ID4gIAkJCQkJIGlu dGVsX2Rpc3BsYXlfcG93ZXJfZG9tCj4gPiA+IGFpbl8KPiA+ID4gc3RyKGRvbWFpbiksCj4gPiA+ ICAJCQkJCSBwb3dlcl9kb21haW5zLQo+ID4gPiA+IGRvbWFpbl91c2VfY291bnRbZG9tYWluXSk7 Cj4gPiA+IAo+ID4gPiBAQCAtMzY0MCwyMiArMzY3NCwyNCBAQCB2b2lkCj4gPiA+IGludGVsX3Bv d2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiA+ID4gIAkJICogYW5kIFBXMSBwb3dlciB3ZWxscykgYXJlIHVuZGVyIEZXIGNv bnRyb2wsIHNvCj4gPiA+IGlnbm9yZSB0aGVtLAo+ID4gPiAgCQkgKiBzaW5jZSB0aGVpciBzdGF0 ZSBjYW4gY2hhbmdlIGFzeW5jaHJvbm91c2x5Lgo+ID4gPiAgCQkgKi8KPiA+ID4gLQkJaWYgKCFw b3dlcl93ZWxsLT5kb21haW5zKQo+ID4gPiArCQlpZiAoIXBvd2VyX3dlbGwtPmRlc2MtPmRvbWFp bnMpCj4gPiA+ICAJCQljb250aW51ZTsKPiA+ID4gIAo+ID4gPiAtCQllbmFibGVkID0gcG93ZXJf d2VsbC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LAo+ID4gPiBwb3dlcl93ZWxsKTsKPiA+ID4g LQkJaWYgKChwb3dlcl93ZWxsLT5jb3VudCB8fCBwb3dlcl93ZWxsLT5hbHdheXNfb24pIAo+ID4g PiAhPQo+ID4gPiBlbmFibGVkKQo+ID4gPiArCQllbmFibGVkID0gcG93ZXJfd2VsbC0+ZGVzYy0+ b3BzLQo+ID4gPiA+IGlzX2VuYWJsZWQoZGV2X3ByaXYsCj4gPiA+IAo+ID4gPiArCQkJCQkJCSAg ICBwb3dlCj4gPiA+IHJfd2UKPiA+ID4gbGwpOwo+ID4gPiArCQlpZiAoKHBvd2VyX3dlbGwtPmNv dW50IHx8IHBvd2VyX3dlbGwtPmRlc2MtCj4gPiA+ID4gYWx3YXlzX29uKSAhPSBlbmFibGVkKQo+ ID4gPiAKPiA+ID4gIAkJCURSTV9FUlJPUigicG93ZXIgd2VsbCAlcyBzdGF0ZSBtaXNtYXRjaAo+ ID4gPiAocmVmY291bnQgJWQvZW5hYmxlZCAlZCkiLAo+ID4gPiAtCQkJCSAgcG93ZXJfd2VsbC0+ bmFtZSwgcG93ZXJfd2VsbC0KPiA+ID4gPiBjb3VudCwgZW5hYmxlZCk7Cj4gPiA+IAo+ID4gPiAr CQkJCSAgcG93ZXJfd2VsbC0+ZGVzYy0+bmFtZSwKPiA+ID4gKwkJCQkgIHBvd2VyX3dlbGwtPmNv dW50LCBlbmFibGVkKTsKPiA+ID4gIAo+ID4gPiAgCQlkb21haW5zX2NvdW50ID0gMDsKPiA+ID4g LQkJZm9yX2VhY2hfcG93ZXJfZG9tYWluKGRvbWFpbiwgcG93ZXJfd2VsbC0KPiA+ID4gPmRvbWFp bnMpCj4gPiA+ICsJCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIHBvd2VyX3dlbGwtPmRl c2MtCj4gPiA+ID4gZG9tYWlucykKPiA+ID4gCj4gPiA+ICAJCQlkb21haW5zX2NvdW50ICs9IHBv d2VyX2RvbWFpbnMtCj4gPiA+ID4gZG9tYWluX3VzZV9jb3VudFtkb21haW5dOwo+ID4gPiAKPiA+ ID4gIAo+ID4gPiAgCQlpZiAocG93ZXJfd2VsbC0+Y291bnQgIT0gZG9tYWluc19jb3VudCkgewo+ ID4gPiAgCQkJRFJNX0VSUk9SKCJwb3dlciB3ZWxsICVzIHJlZmNvdW50L2RvbWFpbgo+ID4gPiBy ZWZjb3VudCBtaXNtYXRjaCAiCj4gPiA+ICAJCQkJICAiKHJlZmNvdW50ICVkL2RvbWFpbnMgcmVm Y291bnQKPiA+ID4gJWQpXG4iLAo+ID4gPiAtCQkJCSAgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJf d2VsbC0KPiA+ID4gPiBjb3VudCwKPiA+ID4gCj4gPiA+ICsJCQkJICBwb3dlcl93ZWxsLT5kZXNj LT5uYW1lLAo+ID4gPiBwb3dlcl93ZWxsLT5jb3VudCwKPiA+ID4gIAkJCQkgIGRvbWFpbnNfY291 bnQpOwo+ID4gPiAgCQkJZHVtcF9kb21haW5faW5mbyA9IHRydWU7Cj4gPiA+ICAJCX0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==