From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2] drm/i915: Pass down rc in intel_encoder->compute_config() Date: Wed, 16 Jan 2019 11:19:40 +0100 Message-ID: <20190116101940.GT10517@phenom.ffwll.local> References: <20190115200800.3121-1-lyude@redhat.com> <87r2dd59iy.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <87r2dd59iy.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKYW4gMTYsIDIwMTkgYXQgMDk6NDc6MTdBTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAxNSBKYW4gMjAxOSwgTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4g d3JvdGU6Cj4gPiBTb21ldGhpbmcgdGhhdCBJIGNvbXBsZXRlbHkgbWlzc2VkIHdoZW4gaW1wbGVt ZW50aW5nIHRoZSBuZXcgTVNUIFZDUEkKPiA+IGF0b21pYyBoZWxwZXJzIGlzIHRoYXQgd2l0aCB0 aG9zZSBoZWxwZXJzLCB0aGVyZSdzIHRlY2huaWNhbGx5IGEgY2hhbmNlCj4gPiBvZiB1cyBoYXZp bmcgdG8gZ3JhYiBhZGRpdGlvbmFsIG1vZGVzZXQgbG9ja3MgaW4gLT5jb21wdXRlX2NvbmZpZygp IGFuZAo+ID4gZnVydGhlcm1vcmUsIHRoYXQgbWVhbnMgd2UgaGF2ZSB0aGUgcG90ZW50aWFsIHRv IGhpdCBhIG5vcm1hbCBtb2Rlc2V0Cj4gPiBkZWFkbG9jay4gSG93ZXZlciwgYmVjYXVzZSAtPmNv bXB1dGVfY29uZmlnKCkgb25seSByZXR1cm5zIGEgYm9vbCB0aGlzCj4gPiBtZWFucyB3ZSBjYW4n dCByZXR1cm4gLUVERUFETEsgd2hlbiB3ZSBuZWVkIHRvIGRyb3AgbG9ja3MgYW5kIHRyeSBhZ2Fp bgo+ID4gd2hpY2ggbWVhbnMgd2UgZW5kIHVwIGp1c3QgZmFpbGluZyB0aGUgYXRvbWljIGNoZWNr IHBlcm1hbmVudGx5LiBXaG9vcHMuCj4gPgo+ID4gU28sIGZpeCB0aGlzIGJ5IG1vZGlmeWluZyAt PmNvbXB1dGVfY29uZmlnKCkgdG8gcGFzcyBkb3duIGFuIGFjdHVhbAo+ID4gZXJyb3IgY29kZSBp bnN0ZWFkIG9mIGEgYm9vbCBzbyB0aGF0IHRoZSBhdG9taWMgY2hlY2sgY2FuIGJlIHJlc3RhcnRl ZAo+ID4gb24gbW9kZXNldCBkZWFkbG9ja3MuCj4gPgo+ID4gVGhhbmtzIHRvIFZpbGxlIFN5cmrD pGzDpCBmb3IgcG9pbnRpbmcgdGhpcyBvdXQhCj4gPgo+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ ICogQWRkIHNvbWUgbmV3bGluZXMKPiA+ICogUmV0dXJuIG9ubHkgLUVJTlZBTCBmcm9tIGhzd19j cnRfY29tcHV0ZV9jb25maWcoKQo+ID4gKiBQcm9wb2dhdGUgcmV0dXJuIGNvZGUgZnJvbSBpbnRl bF9kcF9jb21wdXRlX2RzY19wYXJhbXMoKQo+ID4gKiBDaGFuZ2UgYWxsIG9mIHRoZSBpbnRlbF9k cF9jb21wdXRlX2xpbmtfY29uZmlnKigpIHZhcmlhbnRzCj4gPiAqIERvbid0IG1pc3MgaWYgKGhk bWlfcG9ydF9jbG9ja192YWxpZCgpKSBicmFuY2ggaW4KPiA+ICAgaW50ZWxfaGRtaV9jb21wdXRl X2NvbmZpZygpCj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0 LmNvbT4KPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+ID4gRml4ZXM6IGVjZWFlMTQ3MjQ2NyAoImRybS9kcF9tc3Q6IFN0YXJ0IHRyYWNraW5n IHBlci1wb3J0IFZDUEkgYWxsb2NhdGlvbnMiKQo+ID4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5m cmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTMyMAo+ID4gLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaWNsX2RzaS5jICAgICAgIHwgIDggKystLQo+ID4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NydC5jICAgICB8IDM1ICsrKysrKystLS0tLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgIDYgKy0tCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTEgKysrLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jICAgICAgfCA3MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgIHwgMTIgKystLS0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAxOCArKystLS0tCj4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHZvLmMgICAgIHwgMTEgKysrLS0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgfCAxNCArKystLS0KPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMgICAgfCAxMiArKy0tLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Nkdm8uYyAgICB8IDE0ICsrKy0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3R2LmMgICAgICB8ICA4ICsrLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS92 bHZfZHNpLmMgICAgICAgfCAxNCArKystLS0KPiA+ICAxMyBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5z ZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygtKQo+IAo+IERlc3BpdGUgYmVpbmcgYW4gYWxsIGk5 MTUgcGF0Y2gsIHRoaXMgZ290IGFwcGxpZWQgdG8gZHJtLW1pc2MtbmV4dCwKPiBjYXVzaW5nIGNv bmZsaWN0cyB3aGVyZSB0aGVyZSByZWFsbHkgc2hvdWxkIGhhdmUgYmVlbiBub25lLiA6KAo+IAo+ IEkgYW0gdGVtcHRlZCB0byBzdWdnZXN0IHJldmVydGluZyBhbmQgcmUtYXBwbHlpbmcgdG8gZHJt LWludGVsLCBiZWNhdXNlCj4gaXQgd2lsbCB0YWtlIHdlZWtzIHRvIHN5bmMgYm90aCB0byBkcm0t bmV4dCBhbmQgYmFja21lcmdlLCBhbmQgYXBwbHlpbmcKPiBmdXJ0aGVyIHdvcmsgb24gdG9wIGlu IGRybS1pbnRlbCB3aWxsIGp1c3QgY2F1c2UgbW9yZSB0cm91YmxlLgo+IAo+IE90aGVyIGlkZWFz PwoKV2UgZGlzY3Vzc2VkIHRoaXMgYSBiaXQgb24gaXJjLiBJIHRoaW5rIHRoZSBiZXN0IG9wdGlv biBpcyB0byBjaGVycnktcGljawp0aGlzIHBhdGNoIG92ZXIgdG8gZHJtLWludGVsLW5leHQtcXVl dWVkIGFuZCB0cnkgdG8gZ2V0IHRoZSBiYWNrbWVyZ2VzCnNvcnRlZCBhc2FwLgoKV2l0aCBoaW5k c2lnaHQgYSB0b3BpYyBicmFuY2ggZm9yIGFsbCB0aGUgbXN0IHN0dWZmIHdvdWxkIGhhdmUgYmVl biByZWFsbHkKZ29vZCBjaG9pY2UuIEFuZCBhcyBKYW5pIG1lbnRpb25lZCBvbiBpcmMsIHBscyBn ZXQgbWFpbnRhaW5lcidzIGFjayB3aGVuCm1lcmdpbmcgc3R1ZmYgdGhyb3VnaCBkaWZmZXJlbnQg dHJlZXMuIEkgd2FudGVkIHRvIGFzayBhYm91dCB0aGF0IGJ1dApmaWd1cmVkIEkgaGF2ZSB0aW1l IHVudGlsIG5vdXZlYXUgc3R1ZmYgaXMgcmV2aWV3ZWQsIGJ1dCB0aGVuIGl0IGxhbmRlZApyaWdo dCBhd2F5LiBBbnl3YXksIGNvbmZsaWN0IGlzbid0IGJhZCBlbm91Z2ggdGhhdCBzZnIgY291bGRu J3QgaGFuZGxlIGl0LApzbyB3ZSBkaWRuJ3Qgc2NyZXcgdXAgdG9vIGJhZGx5IDotKQoKVGhhbmtz LCBEYW5pZWwKPiAKPiBCUiwKPiBKYW5pLgo+IAo+IAo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNp LmMKPiA+IGluZGV4IGYzYTVmMDM2NDZjZS4uMzU1YjQ4ZDFjOTM3IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaWNsX2RzaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pY2xfZHNpLmMKPiA+IEBAIC0xMTg4LDkgKzExODgsOSBAQCBzdGF0aWMgdm9pZCBnZW4x MV9kc2lfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJcGlw ZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0RTSSk7Cj4gPiAgfQo+ ID4gIAo+ID4gLXN0YXRpYyBib29sIGdlbjExX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+IC0JCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcsCj4gPiAtCQkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGUpCj4gPiArc3RhdGljIGludCBnZW4xMV9kc2lfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiArCQkJCSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2Rz aSA9IGNvbnRhaW5lcl9vZihlbmNvZGVyLCBzdHJ1Y3QgaW50ZWxfZHNpLAo+ID4gIAkJCQkJCSAg IGJhc2UpOwo+ID4gQEAgLTEyMTUsNyArMTIxNSw3IEBAIHN0YXRpYyBib29sIGdlbjExX2RzaV9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJcGlwZV9j b25maWctPmNsb2NrX3NldCA9IHRydWU7Cj4gPiAgCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0g aW50ZWxfZHNpX2JpdHJhdGUoaW50ZWxfZHNpKSAvIDU7Cj4gPiAgCj4gPiAtCXJldHVybiB0cnVl Owo+ID4gKwlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHU2NCBnZW4xMV9kc2lf Z2V0X3Bvd2VyX2RvbWFpbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9jcnQuYwo+ID4gaW5kZXggMzNiZDJhZGRjYmRkLi4wODFjMzMzZjMwZDIg MTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jcnQuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3J0LmMKPiA+IEBAIC0zNDUsNTEgKzM0NSw1 MiBAQCBpbnRlbF9jcnRfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gIAlyZXR1cm4gTU9ERV9PSzsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGJvb2wgaW50 ZWxfY3J0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g LQkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+IC0JCQkJ ICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICtzdGF0aWMg aW50IGludGVsX2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiA+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+ ICsJCQkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gIHsK PiA+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+ID4gIAkJJnBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gPiAgCj4gPiAgCWlmIChhZGp1c3RlZF9t b2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMU0NBTikKPiA+IC0JCXJldHVybiBmYWxzZTsK PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gIAlwaXBlX2NvbmZpZy0+b3V0cHV0X2Zv cm1hdCA9IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCOwo+ID4gLQlyZXR1cm4gdHJ1ZTsKPiA+ICsK PiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyBib29sIHBjaF9jcnRfY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAtCQkJCSAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+IC0JCQkJICAgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiArc3RhdGljIGludCBwY2hfY3J0X2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gKwkJCQkgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+ICsJCQkJICBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiA+ICAJCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlOwo+ID4gIAo+ID4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX0RCTFNDQU4pCj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQlyZXR1cm4gLUVJTlZB TDsKPiA+ICAKPiA+ICAJcGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlciA9IHRydWU7Cj4gPiAg CXBpcGVfY29uZmlnLT5vdXRwdXRfZm9ybWF0ID0gSU5URUxfT1VUUFVUX0ZPUk1BVF9SR0I7Cj4g PiAgCj4gPiAtCXJldHVybiB0cnVlOwo+ID4gKwlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAt c3RhdGljIGJvb2wgaHN3X2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiA+IC0JCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln LAo+ID4gLQkJCQkgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ ICtzdGF0aWMgaW50IGhzd19jcnRfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gPiArCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln LAo+ID4gKwkJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4g IHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0KPiA+ICAJCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gIAo+ID4g IAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCj4gPiAt CQlyZXR1cm4gZmFsc2U7Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICAJLyogSFNX L0JEVyBGREkgbGltaXRlZCB0byA0ayAqLwo+ID4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19o ZGlzcGxheSA+IDQwOTYgfHwKPiA+ICAJICAgIGFkanVzdGVkX21vZGUtPmNydGNfaGJsYW5rX3N0 YXJ0ID4gNDA5NikKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ ID4gIAo+ID4gIAlwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKPiA+ICAJcGlw ZV9jb25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQjsKPiA+IEBA IC0zOTgsNyArMzk5LDcgQEAgc3RhdGljIGJvb2wgaHN3X2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJaWYgKEhBU19QQ0hfTFBUKGRldl9wcml2 KSkgewo+ID4gIAkJaWYgKHBpcGVfY29uZmlnLT5id19jb25zdHJhaW5lZCAmJiBwaXBlX2NvbmZp Zy0+cGlwZV9icHAgPCAyNCkgewo+ID4gIAkJCURSTV9ERUJVR19LTVMoIkxQVCBvbmx5IHN1cHBv cnRzIDI0YnBwXG4iKTsKPiA+IC0JCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQkJcmV0dXJuIC1FSU5W QUw7Cj4gPiAgCQl9Cj4gPiAgCj4gPiAgCQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSAyNDsKPiA+ IEBAIC00MDcsNyArNDA4LDcgQEAgc3RhdGljIGJvb2wgaHN3X2NydF9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJLyogRkRJIG11c3QgYWx3YXlzIGJl IDIuNyBHSHogKi8KPiA+ICAJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSAxMzUwMDAgKiAyOwo+ ID4gIAo+ID4gLQlyZXR1cm4gdHJ1ZTsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4g IHN0YXRpYyBib29sIGludGVsX2lyb25sYWtlX2NydF9kZXRlY3RfaG90cGx1ZyhzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGlu ZGV4IDdmM2NkMDU1ZGU1MC4uY2U0NDc0NGE1ZjlkIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCj4gPiBAQCAtMzgzNyw5ICszODM3LDkgQEAgaW50ZWxfZGRpX2NvbXB1dGVfb3V0 cHV0X3R5cGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCX0KPiA+ICB9Cj4g PiAgCj4gPiAtc3RhdGljIGJvb2wgaW50ZWxfZGRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ID4gLQkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZywKPiA+IC0JCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZSkKPiA+ICtzdGF0aWMgaW50IGludGVsX2RkaV9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZywKPiA+ICsJCQkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiAgCWVudW0gcG9ydCBwb3J0 ID0gZW5jb2Rlci0+cG9ydDsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ IGluZGV4IDBhNWJhNDVmNWViMC4uYWYxNjRkNzEyZTllIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0xMTU1MywxMCArMTE1NTMsMTMgQEAgaW50ZWxf bW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQkJY29udGlu dWU7Cj4gPiAgCj4gPiAgCQllbmNvZGVyID0gdG9faW50ZWxfZW5jb2Rlcihjb25uZWN0b3Jfc3Rh dGUtPmJlc3RfZW5jb2Rlcik7Cj4gPiAtCj4gPiAtCQlpZiAoIShlbmNvZGVyLT5jb21wdXRlX2Nv bmZpZyhlbmNvZGVyLCBwaXBlX2NvbmZpZywgY29ubmVjdG9yX3N0YXRlKSkpIHsKPiA+IC0JCQlE Uk1fREVCVUdfS01TKCJFbmNvZGVyIGNvbmZpZyBmYWlsdXJlXG4iKTsKPiA+IC0JCQlyZXR1cm4g LUVJTlZBTDsKPiA+ICsJCXJldCA9IGVuY29kZXItPmNvbXB1dGVfY29uZmlnKGVuY29kZXIsIHBp cGVfY29uZmlnLAo+ID4gKwkJCQkJICAgICAgY29ubmVjdG9yX3N0YXRlKTsKPiA+ICsJCWlmIChy ZXQgPCAwKSB7Cj4gPiArCQkJaWYgKHJldCAhPSAtRURFQURMSykKPiA+ICsJCQkJRFJNX0RFQlVH X0tNUygiRW5jb2RlciBjb25maWcgZmFpbHVyZTogJWRcbiIsCj4gPiArCQkJCQkgICAgICByZXQp Owo+ID4gKwkJCXJldHVybiByZXQ7Cj4gPiAgCQl9Cj4gPiAgCX0KPiA+ICAKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYwo+ID4gaW5kZXggMGEzYWM5OGE3NzllLi5kZjQyOTJiYjFhNGYgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBAQCAtMTgxOSw3ICsxODE5LDcgQEAgaW50 ZWxfZHBfYWRqdXN0X2NvbXBsaWFuY2VfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gPiAgfQo+ID4gIAo+ID4gIC8qIE9wdGltaXplIGxpbmsgY29uZmlnIGluIG9yZGVyOiBtYXgg YnBwLCBtaW4gY2xvY2ssIG1pbiBsYW5lcyAqLwo+ID4gLXN0YXRpYyBib29sCj4gPiArc3RhdGlj IGludAo+ID4gIGludGVsX2RwX2NvbXB1dGVfbGlua19jb25maWdfd2lkZShzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAo+ID4gIAkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZywKPiA+ICAJCQkJICBjb25zdCBzdHJ1Y3QgbGlua19jb25maWdfbGltaXRzICpsaW1pdHMp Cj4gPiBAQCAtMTg0NSwxNyArMTg0NSwxNyBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmln X3dpZGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAJCQkJCXBpcGVfY29uZmlnLT5w aXBlX2JwcCA9IGJwcDsKPiA+ICAJCQkJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gbGlua19j bG9jazsKPiA+ICAKPiA+IC0JCQkJCXJldHVybiB0cnVlOwo+ID4gKwkJCQkJcmV0dXJuIDA7Cj4g PiAgCQkJCX0KPiA+ICAJCQl9Cj4gPiAgCQl9Cj4gPiAgCX0KPiA+ICAKPiA+IC0JcmV0dXJuIGZh bHNlOwo+ID4gKwlyZXR1cm4gLUVJTlZBTDsKPiA+ICB9Cj4gPiAgCj4gPiAgLyogT3B0aW1pemUg bGluayBjb25maWcgaW4gb3JkZXI6IG1heCBicHAsIG1pbiBsYW5lcywgbWluIGNsb2NrICovCj4g PiAtc3RhdGljIGJvb2wKPiA+ICtzdGF0aWMgaW50Cj4gPiAgaW50ZWxfZHBfY29tcHV0ZV9saW5r X2NvbmZpZ19mYXN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCQkJCSAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gIAkJCQkgIGNvbnN0IHN0cnVjdCBs aW5rX2NvbmZpZ19saW1pdHMgKmxpbWl0cykKPiA+IEBAIC0xODgxLDEzICsxODgxLDEzIEBAIGlu dGVsX2RwX2NvbXB1dGVfbGlua19jb25maWdfZmFzdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAo+ID4gIAkJCQkJcGlwZV9jb25maWctPnBpcGVfYnBwID0gYnBwOwo+ID4gIAkJCQkJcGlwZV9j b25maWctPnBvcnRfY2xvY2sgPSBsaW5rX2Nsb2NrOwo+ID4gIAo+ID4gLQkJCQkJcmV0dXJuIHRy dWU7Cj4gPiArCQkJCQlyZXR1cm4gMDsKPiA+ICAJCQkJfQo+ID4gIAkJCX0KPiA+ICAJCX0KPiA+ ICAJfQo+ID4gIAo+ID4gLQlyZXR1cm4gZmFsc2U7Cj4gPiArCXJldHVybiAtRUlOVkFMOwo+ID4g IH0KPiA+ICAKPiA+ICBzdGF0aWMgaW50IGludGVsX2RwX2RzY19jb21wdXRlX2JwcChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCB1OCBkc2NfbWF4X2JwYykKPiA+IEBAIC0xOTA1LDE5ICsxOTA1 LDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfZHNjX2NvbXB1dGVfYnBwKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsIHU4IGRzY19tYXhfYnBjKQo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAg Cj4gPiAtc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gPiAtCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcsCj4gPiAtCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwK PiA+IC0JCQkJCXN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgKmxpbWl0cykKPiA+ICtzdGF0aWMg aW50IGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAo+ID4gKwkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ ID4gKwkJCQkgICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4g PiArCQkJCSAgICAgICBzdHJ1Y3QgbGlua19jb25maWdfbGltaXRzICpsaW1pdHMpCj4gPiAgewo+ ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g PiAgCXU4IGRzY19tYXhfYnBjOwo+ID4gIAlpbnQgcGlwZV9icHA7Cj4gPiArCWludCByZXQ7Cj4g PiAgCj4gPiAgCWlmICghaW50ZWxfZHBfc3VwcG9ydHNfZHNjKGludGVsX2RwLCBwaXBlX2NvbmZp ZykpCj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ ICAJZHNjX21heF9icGMgPSBtaW5fdCh1OCwgRFBfRFNDX01BWF9TVVBQT1JURURfQlBDLAo+ID4g IAkJCSAgICBjb25uX3N0YXRlLT5tYXhfcmVxdWVzdGVkX2JwYyk7Cj4gPiBAQCAtMTkyNSw3ICsx OTI2LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCXBpcGVfYnBwID0gaW50ZWxfZHBfZHNjX2NvbXB1dGVf YnBwKGludGVsX2RwLCBkc2NfbWF4X2JwYyk7Cj4gPiAgCWlmIChwaXBlX2JwcCA8IERQX0RTQ19N SU5fU1VQUE9SVEVEX0JQQyAqIDMpIHsKPiA+ICAJCURSTV9ERUJVR19LTVMoIk5vIERTQyBzdXBw b3J0IGZvciBsZXNzIHRoYW4gOGJwY1xuIik7Cj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQly ZXR1cm4gLUVJTlZBTDsKPiA+ICAJfQo+ID4gIAo+ID4gIAkvKgo+ID4gQEAgLTE5NTksNyArMTk2 MCw3IEBAIHN0YXRpYyBib29sIGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJCQkJCSAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlz cGxheSk7Cj4gPiAgCQlpZiAoIWRzY19tYXhfb3V0cHV0X2JwcCB8fCAhZHNjX2RwX3NsaWNlX2Nv dW50KSB7Cj4gPiAgCQkJRFJNX0RFQlVHX0tNUygiQ29tcHJlc3NlZCBCUFAvU2xpY2UgQ291bnQg bm90IHN1cHBvcnRlZFxuIik7Cj4gPiAtCQkJcmV0dXJuIGZhbHNlOwo+ID4gKwkJCXJldHVybiAt RUlOVkFMOwo+ID4gIAkJfQo+ID4gIAkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Nl ZF9icHAgPSBtaW5fdCh1MTYsCj4gPiAgCQkJCQkJCSAgICAgICBkc2NfbWF4X291dHB1dF9icHAg Pj4gNCwKPiA+IEBAIC0xOTc2LDE2ICsxOTc3LDE5IEBAIHN0YXRpYyBib29sIGludGVsX2RwX2Rz Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJCXBpcGVf Y29uZmlnLT5kc2NfcGFyYW1zLmRzY19zcGxpdCA9IHRydWU7Cj4gPiAgCQl9IGVsc2Ugewo+ID4g IAkJCURSTV9ERUJVR19LTVMoIkNhbm5vdCBzcGxpdCBzdHJlYW0gdG8gdXNlIDIgVkRTQyBpbnN0 YW5jZXNcbiIpOwo+ID4gLQkJCXJldHVybiBmYWxzZTsKPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsK PiA+ICAJCX0KPiA+ICAJfQo+ID4gLQlpZiAoaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKGlu dGVsX2RwLCBwaXBlX2NvbmZpZykgPCAwKSB7Cj4gPiArCj4gPiArCXJldCA9IGludGVsX2RwX2Nv bXB1dGVfZHNjX3BhcmFtcyhpbnRlbF9kcCwgcGlwZV9jb25maWcpOwo+ID4gKwlpZiAocmV0IDwg MCkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiQ2Fubm90IGNvbXB1dGUgdmFsaWQgRFNDIHBhcmFt ZXRlcnMgZm9yIElucHV0IEJwcCA9ICVkICIKPiA+ICAJCQkgICAgICAiQ29tcHJlc3NlZCBCUFAg PSAlZFxuIiwKPiA+ICAJCQkgICAgICBwaXBlX2NvbmZpZy0+cGlwZV9icHAsCj4gPiAgCQkJICAg ICAgcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHApOwo+ID4gLQkJcmV0dXJu IGZhbHNlOwo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICAJfQo+ID4gKwo+ID4gIAlwaXBlX2NvbmZp Zy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwo+ID4gIAlEUk1fREVCVUdf S01TKCJEUCBEU0MgY29tcHV0ZWQgd2l0aCBJbnB1dCBCcHAgPSAlZCAiCj4gPiAgCQkgICAgICAi Q29tcHJlc3NlZCBCcHAgPSAlZCBTbGljZSBDb3VudCA9ICVkXG4iLAo+ID4gQEAgLTE5OTMsMTAg KzE5OTcsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCQkgICAgICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFt cy5jb21wcmVzc2VkX2JwcCwKPiA+ICAJCSAgICAgIHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNs aWNlX2NvdW50KTsKPiA+ICAKPiA+IC0JcmV0dXJuIHRydWU7Cj4gPiArCXJldHVybiAwOwo+ID4g IH0KPiA+ICAKPiA+IC1zdGF0aWMgYm9vbAo+ID4gK3N0YXRpYyBpbnQKPiA+ICBpbnRlbF9kcF9j b21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJ CSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gIAkJCSAgICAg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiBAQCAtMjAwNSw3ICsy MDA5LDcgQEAgaW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiA+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCXN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgbGlt aXRzOwo+ID4gIAlpbnQgY29tbW9uX2xlbjsKPiA+IC0JYm9vbCByZXQ7Cj4gPiArCWludCByZXQ7 Cj4gPiAgCj4gPiAgCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fbGVuX3JhdGVfbGltaXQo aW50ZWxfZHAsCj4gPiAgCQkJCQkJICAgIGludGVsX2RwLT5tYXhfbGlua19yYXRlKTsKPiA+IEBA IC0yMDYzLDEwICsyMDY3LDExIEBAIGludGVsX2RwX2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCj4gPiAgCS8qIGVuYWJsZSBjb21wcmVzc2lv biBpZiB0aGUgbW9kZSBkb2Vzbid0IGZpdCBhdmFpbGFibGUgQlcgKi8KPiA+ICAJRFJNX0RFQlVH X0tNUygiRm9yY2UgRFNDIGVuID0gJWRcbiIsIGludGVsX2RwLT5mb3JjZV9kc2NfZW4pOwo+ID4g LQlpZiAoIXJldCB8fCBpbnRlbF9kcC0+Zm9yY2VfZHNjX2VuKSB7Cj4gPiAtCQlpZiAoIWludGVs X2RwX2RzY19jb21wdXRlX2NvbmZpZyhpbnRlbF9kcCwgcGlwZV9jb25maWcsCj4gPiAtCQkJCQkJ IGNvbm5fc3RhdGUsICZsaW1pdHMpKQo+ID4gLQkJCXJldHVybiBmYWxzZTsKPiA+ICsJaWYgKHJl dCB8fCBpbnRlbF9kcC0+Zm9yY2VfZHNjX2VuKSB7Cj4gPiArCQlyZXQgPSBpbnRlbF9kcF9kc2Nf Y29tcHV0ZV9jb25maWcoaW50ZWxfZHAsIHBpcGVfY29uZmlnLAo+ID4gKwkJCQkJCSAgY29ubl9z dGF0ZSwgJmxpbWl0cyk7Cj4gPiArCQlpZiAocmV0IDwgMCkKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ ID4gIAl9Cj4gPiAgCj4gPiAgCWlmIChwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lv bl9lbmFibGUpIHsKPiA+IEBAIC0yMDkxLDEwICsyMDk2LDEwIEBAIGludGVsX2RwX2NvbXB1dGVf bGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQkJICAgICAg aW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ICAJCQkJ CQkgICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50KSk7Cj4gPiAgCX0KPiA+IC0JcmV0dXJuIHRy dWU7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+IC1ib29sCj4gPiAraW50Cj4gPiAg aW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g PiAgCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gIAkJCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gQEAgLTIxMTAsNiArMjExNSw3 IEBAIGludGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+ID4gIAkJdG9faW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7Cj4g PiAgCWJvb2wgY29uc3RhbnRfbiA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVsX2RwLT5kZXNjLAo+ ID4gIAkJCQkJICAgRFBfRFBDRF9RVUlSS19DT05TVEFOVF9OKTsKPiA+ICsJaW50IHJldDsKPiA+ ICAKPiA+ICAJaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpICYmICFIQVNfRERJKGRldl9wcml2 KSAmJiBwb3J0ICE9IFBPUlRfQSkKPiA+ICAJCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIg PSB0cnVlOwo+ID4gQEAgLTIxMzEsOCArMjEzNyw2IEBAIGludGVsX2RwX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJCQkgICAgICAgYWRqdXN0ZWRf bW9kZSk7Cj4gPiAgCj4gPiAgCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gPiAt CQkJaW50IHJldDsKPiA+IC0KPiA+ICAJCQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcl9jcnRjKHBp cGVfY29uZmlnKTsKPiA+ICAJCQlpZiAocmV0KQo+ID4gIAkJCQlyZXR1cm4gcmV0Owo+ID4gQEAg LTIxNDcsMjAgKzIxNTEsMjEgQEAgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCX0KPiA+ICAKPiA+ICAJaWYgKGFkanVzdGVkX21vZGUt PmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxTQ0FOKQo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9w cml2KSAmJgo+ID4gIAkgICAgYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRSkKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4g IAo+ID4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTENMSykK PiA+IC0JCXJldHVybiBmYWxzZTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gIAlw aXBlX2NvbmZpZy0+ZmVjX2VuYWJsZSA9ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApICYmCj4g PiAgCQkJCSAgaW50ZWxfZHBfc3VwcG9ydHNfZmVjKGludGVsX2RwLCBwaXBlX2NvbmZpZyk7Cj4g PiAgCj4gPiAtCWlmICghaW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZyhlbmNvZGVyLCBwaXBl X2NvbmZpZywgY29ubl9zdGF0ZSkpCj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiArCXJldCA9IGlu dGVsX2RwX2NvbXB1dGVfbGlua19jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcsIGNvbm5fc3Rh dGUpOwo+ID4gKwlpZiAocmV0IDwgMCkKPiA+ICsJCXJldHVybiByZXQ7Cj4gPiAgCj4gPiAgCWlm IChpbnRlbF9jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiID09IElOVEVMX0JST0FEQ0FTVF9SR0Jf QVVUTykgewo+ID4gIAkJLyoKPiA+IEBAIC0yMjA4LDcgKzIyMTMsNyBAQCBpbnRlbF9kcF9jb21w dXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAKPiA+ICAJaW50 ZWxfcHNyX2NvbXB1dGVfY29uZmlnKGludGVsX2RwLCBwaXBlX2NvbmZpZyk7Cj4gPiAgCj4gPiAt CXJldHVybiB0cnVlOwo+ID4gKwlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgdm9pZCBpbnRl bF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiBpbmRleCAzZjgzNDI5MzMzYzcuLmExOTY5OTAy M2RiMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ID4gQEAgLTI5 LDkgKzI5LDkgQEAKPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4gICNp bmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiA+ICAKPiA+IC1zdGF0aWMgYm9vbCBpbnRlbF9kcF9t c3RfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAtCQkJ CQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiAtCQkJCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICtzdGF0aWMgaW50IGludGVsX2Rw X21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJ CQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+ICsJCQkJ ICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gIHsKPiA+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kcF9tc3RfZW5jb2RlciAqaW50ZWxfbXN0ID0g ZW5jX3RvX21zdCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiBAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMg Ym9vbCBpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPiAgCQkJCQkgICBEUF9EUENEX1FVSVJLX0NPTlNUQU5UX04pOwo+ID4gIAo+ID4g IAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCj4gPiAt CQlyZXR1cm4gZmFsc2U7Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICAJcGlwZV9j b25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQjsKPiA+ICAJcGlw ZV9jb25maWctPmhhc19wY2hfZW5jb2RlciA9IGZhbHNlOwo+ID4gQEAgLTg5LDcgKzg5LDcgQEAg c3RhdGljIGJvb2wgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gIAkJaWYgKHNsb3RzIDwgMCkgewo+ID4gIAkJCURSTV9ERUJVR19L TVMoImZhaWxlZCBmaW5kaW5nIHZjcGkgc2xvdHM6JWRcbiIsCj4gPiAgCQkJCSAgICAgIHNsb3Rz KTsKPiA+IC0JCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQkJcmV0dXJuIHNsb3RzOwo+ID4gIAkJfQo+ ID4gIAl9Cj4gPiAgCj4gPiBAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIGludGVsX2Rw X21zdF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAK PiA+ICAJaW50ZWxfZGRpX2NvbXB1dGVfbWluX3ZvbHRhZ2VfbGV2ZWwoZGV2X3ByaXYsIHBpcGVf Y29uZmlnKTsKPiA+ICAKPiA+IC0JcmV0dXJuIHRydWU7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0K PiA+ICAKPiA+ICBzdGF0aWMgaW50Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5k ZXggNzk3Nzg0M2NlMjZhLi5lNWE0MzZjMzMzMDcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+IEBAIC0yMjUsOSArMjI1LDkgQEAgc3RydWN0IGludGVsX2VuY29kZXIgewo+ ID4gIAllbnVtIGludGVsX291dHB1dF90eXBlICgqY29tcHV0ZV9vdXRwdXRfdHlwZSkoc3RydWN0 IGludGVsX2VuY29kZXIgKiwKPiA+ICAJCQkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqLAo+ID4gIAkJCQkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICopOwo+ID4g LQlib29sICgqY29tcHV0ZV9jb25maWcpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICosCj4gPiAtCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICosCj4gPiAtCQkJICAgICAgIHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICopOwo+ID4gKwlpbnQgKCpjb21wdXRlX2NvbmZpZykoc3RydWN0 IGludGVsX2VuY29kZXIgKiwKPiA+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq LAo+ID4gKwkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICopOwo+ID4gIAl2b2lk ICgqcHJlX3BsbF9lbmFibGUpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICosCj4gPiAgCQkJICAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICosCj4gPiAgCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICopOwo+ID4gQEAgLTE4MTYsOSArMTgxNiw5IEBAIHZv aWQgaW50ZWxfZHBfc2lua19zZXRfZGVjb21wcmVzc2lvbl9zdGF0ZShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIpOwo+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKPiA+ICB2b2lkIGludGVsX2RwX2VuY29k ZXJfZmx1c2hfd29yayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ID4gLWJvb2wgaW50 ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAt CQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiAtCQkJICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7Cj4gPiAraW50IGludGVs X2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gKwkJ CSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiArCQkJICAgIHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKTsKPiA+ICBib29sIGludGVsX2Rw X2lzX2VkcChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ICBib29sIGludGVsX2RwX2lz X3BvcnRfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBv cnQpOwo+ID4gIGVudW0gaXJxcmV0dXJuIGludGVsX2RwX2hwZF9wdWxzZShzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+IEBAIC0xOTc4LDkgKzE5NzgsOSBAQCB2 b2lkIGludGVsX2hkbWlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGk5 MTVfcmVnX3QgaGRtaV9yZWcsCj4gPiAgdm9pZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9yKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gIAkJCSAgICAgICBz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpOwo+ID4gIHN0cnVjdCBpbnRl bF9oZG1pICplbmNfdG9faW50ZWxfaGRtaShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ ID4gLWJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiA+IC0JCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnLAo+ID4gLQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSk7Cj4gPiAraW50IGludGVsX2hkbWlfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiArCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAo+ID4gKwkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlKTsKPiA+ICBib29sIGludGVsX2hkbWlfaGFuZGxlX3Npbmtfc2NyYW1ibGluZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJCQkJICAgICAgIHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gPiAgCQkJCSAgICAgICBib29sIGhpZ2hfdG1kc19jbG9ja19yYXRp bywKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2by5jCj4gPiBpbmRleCBiYzNjM2NiNTdlYzYuLmE2 YzgyNDgyYTg0MSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2R2 by5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kdm8uYwo+ID4gQEAgLTIz NCw5ICsyMzQsOSBAQCBpbnRlbF9kdm9fbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4gIAlyZXR1cm4gaW50ZWxfZHZvLT5kZXYuZGV2X29wcy0+bW9kZV92YWxp ZCgmaW50ZWxfZHZvLT5kZXYsIG1vZGUpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgYm9vbCBp bnRlbF9kdm9fY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g PiAtCQkJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gLQkJ CQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3N0YXRp YyBpbnQgaW50ZWxfZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gKwkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ ID4gKwkJCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAg ewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZHZvICppbnRlbF9kdm8gPSBlbmNfdG9fZHZvKGVuY29kZXIp Owo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZml4ZWRfbW9kZSA9Cj4gPiBA QCAtMjUzLDEwICsyNTMsMTEgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHZvX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJaW50ZWxfZml4ZWRfcGFuZWxf bW9kZShmaXhlZF9tb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiA+ICAKPiA+ICAJaWYgKGFkanVzdGVk X21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxTQ0FOKQo+ID4gLQkJcmV0dXJuIGZhbHNl Owo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCXBpcGVfY29uZmlnLT5vdXRwdXRf Zm9ybWF0ID0gSU5URUxfT1VUUFVUX0ZPUk1BVF9SR0I7Cj4gPiAtCXJldHVybiB0cnVlOwo+ID4g Kwo+ID4gKwlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfZHZv X3ByZV9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRtaS5jCj4gPiBpbmRleCA3NGY0MDIxYjc2MGMuLjk3YTk4ZTFiZWE1NiAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiBAQCAtMTcwNCw5ICsxNzA0LDkg QEAgaW50ZWxfaGRtaV95Y2JjcjQyMF9jb25maWcoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ICAJcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4gIAo+ID4gLWJvb2wgaW50ZWxfaGRt aV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+IC0JCQkg ICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gLQkJCSAgICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICtpbnQgaW50ZWxf aGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJ CQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiArCQkJICAg ICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAgewo+ID4gIAlz dHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZlbmNvZGVy LT5iYXNlKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiBAQCAtMTcyMiw3ICsxNzIyLDcgQEAgYm9vbCBpbnRl bF9oZG1pX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g IAlib29sIGZvcmNlX2R2aSA9IGludGVsX2Nvbm5fc3RhdGUtPmZvcmNlX2F1ZGlvID09IEhETUlf QVVESU9fT0ZGX0RWSTsKPiA+ICAKPiA+ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJN X01PREVfRkxBR19EQkxTQ0FOKQo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gPiAgCj4gPiAgCXBpcGVfY29uZmlnLT5vdXRwdXRfZm9ybWF0ID0gSU5URUxfT1VU UFVUX0ZPUk1BVF9SR0I7Cj4gPiAgCXBpcGVfY29uZmlnLT5oYXNfaGRtaV9zaW5rID0gIWZvcmNl X2R2aSAmJiBpbnRlbF9oZG1pLT5oYXNfaGRtaV9zaW5rOwo+ID4gQEAgLTE3NTMsNyArMTc1Myw3 IEBAIGJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiA+ICAJCQkJCQkmY2xvY2tfMTJicGMsICZjbG9ja18xMGJwYywKPiA+ICAJCQkJ CQkmY2xvY2tfOGJwYykpIHsKPiA+ICAJCQlEUk1fRVJST1IoIkNhbid0IHN1cHBvcnQgWUNCQ1I0 MjAgb3V0cHV0XG4iKTsKPiA+IC0JCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQkJcmV0dXJuIC1FSU5W QUw7Cj4gPiAgCQl9Cj4gPiAgCX0KPiA+ICAKPiA+IEBAIC0xODAzLDcgKzE4MDMsNyBAQCBib29s IGludGVsX2hkbWlfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiAgCWlmIChoZG1pX3BvcnRfY2xvY2tfdmFsaWQoaW50ZWxfaGRtaSwgcGlwZV9jb25maWct PnBvcnRfY2xvY2ssCj4gPiAgCQkJCSAgZmFsc2UsIGZvcmNlX2R2aSkgIT0gTU9ERV9PSykgewo+ ID4gIAkJRFJNX0RFQlVHX0tNUygidW5zdXBwb3J0ZWQgSERNSSBjbG9jaywgcmVqZWN0aW5nIG1v ZGVcbiIpOwo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAg CX0KPiA+ICAKPiA+ICAJLyogU2V0IHVzZXIgc2VsZWN0ZWQgUEFSIHRvIGluY29taW5nIG1vZGUn cyBtZW1iZXIgKi8KPiA+IEBAIC0xODIyLDcgKzE4MjIsNyBAQCBib29sIGludGVsX2hkbWlfY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCQl9Cj4gPiAg CX0KPiA+ICAKPiA+IC0JcmV0dXJuIHRydWU7Cj4gPiArCXJldHVybiAwOwo+ID4gIH0KPiA+ICAK PiA+ICBzdGF0aWMgdm9pZAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYwo+ID4gaW5kZXgg YjAxYWFjYjVkNzNkLi40NmE1ZGZkNWNkZjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9sdmRzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2x2ZHMuYwo+ID4gQEAgLTM4MCw5ICszODAsOSBAQCBpbnRlbF9sdmRzX21vZGVfdmFsaWQoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAJcmV0dXJuIE1PREVfT0s7Cj4gPiAg fQo+ID4gIAo+ID4gLXN0YXRpYyBib29sIGludGVsX2x2ZHNfY29tcHV0ZV9jb25maWcoc3RydWN0 IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gPiAtCQkJCSAgICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+IC0JCQkJICAgICAgc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiArc3RhdGljIGludCBpbnRlbF9sdmRzX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gKwkJCQkg ICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+ICsJCQkJICAgICBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZW5jb2Rlci0+YmFz ZS5kZXYpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfbHZkc19lbmNvZGVyICpsdmRzX2VuY29kZXIgPQo+ ID4gQEAgLTM5Niw3ICszOTYsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9sdmRzX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gIAkvKiBTaG91bGQg bmV2ZXIgaGFwcGVuISEgKi8KPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0ICYmIGlu dGVsX2NydGMtPnBpcGUgPT0gMCkgewo+ID4gIAkJRFJNX0VSUk9SKCJDYW4ndCBzdXBwb3J0IExW RFMgb24gcGlwZSBBXG4iKTsKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+ICsJCXJldHVybiAtRUlO VkFMOwo+ID4gIAl9Cj4gPiAgCj4gPiAgCWlmIChsdmRzX2VuY29kZXItPmEzX3Bvd2VyID09IExW RFNfQTNfUE9XRVJfVVApCj4gPiBAQCAtNDIyLDcgKzQyMiw3IEBAIHN0YXRpYyBib29sIGludGVs X2x2ZHNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIs Cj4gPiAgCQkJICAgICAgIGFkanVzdGVkX21vZGUpOwo+ID4gIAo+ID4gIAlpZiAoYWRqdXN0ZWRf bW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4pCj4gPiAtCQlyZXR1cm4gZmFsc2U7 Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICAJaWYgKEhBU19QQ0hfU1BMSVQoZGV2 X3ByaXYpKSB7Cj4gPiAgCQlwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKPiA+ IEBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfbHZkc19jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ICAJICogdXNlcidzIHJl cXVlc3RlZCByZWZyZXNoIHJhdGUuCj4gPiAgCSAqLwo+ID4gIAo+ID4gLQlyZXR1cm4gdHJ1ZTsK PiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0 b3Jfc3RhdHVzCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2 by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5jCj4gPiBpbmRleCA0ZGI3YWVm YTg4ZjkuLmRmMmQ4MzBhNzQwNSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3Nkdm8uYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2R2by5j Cj4gPiBAQCAtMTEwNyw5ICsxMTA3LDkgQEAgc3RhdGljIHZvaWQgaTl4eF9hZGp1c3Rfc2R2b190 dl9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gPiAgCXBpcGVf Y29uZmlnLT5jbG9ja19zZXQgPSB0cnVlOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgYm9vbCBp bnRlbF9zZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ID4gLQkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiAt CQkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3N0 YXRpYyBpbnQgaW50ZWxfc2R2b19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiA+ICsJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcsCj4gPiArCQkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUp Cj4gPiAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2byA9IHRvX3Nkdm8oZW5j b2Rlcik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfc2R2 b19zdGF0ZSA9Cj4gPiBAQCAtMTEzNCw3ICsxMTM0LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfc2R2 b19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJICov Cj4gPiAgCWlmIChJU19UVihpbnRlbF9zZHZvX2Nvbm5lY3RvcikpIHsKPiA+ICAJCWlmICghaW50 ZWxfc2R2b19zZXRfb3V0cHV0X3RpbWluZ3NfZnJvbV9tb2RlKGludGVsX3Nkdm8sIG1vZGUpKQo+ ID4gLQkJCXJldHVybiBmYWxzZTsKPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICAJ CSh2b2lkKSBpbnRlbF9zZHZvX2dldF9wcmVmZXJyZWRfaW5wdXRfbW9kZShpbnRlbF9zZHZvLAo+ ID4gIAkJCQkJCQkgICBpbnRlbF9zZHZvX2Nvbm5lY3RvciwKPiA+IEBAIC0xMTQ0LDcgKzExNDQs NyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4gIAl9IGVsc2UgaWYgKElTX0xWRFMoaW50ZWxfc2R2b19jb25u ZWN0b3IpKSB7Cj4gPiAgCQlpZiAoIWludGVsX3Nkdm9fc2V0X291dHB1dF90aW1pbmdzX2Zyb21f bW9kZShpbnRlbF9zZHZvLAo+ID4gIAkJCQkJCQkgICAgIGludGVsX3Nkdm9fY29ubmVjdG9yLT5i YXNlLnBhbmVsLmZpeGVkX21vZGUpKQo+ID4gLQkJCXJldHVybiBmYWxzZTsKPiA+ICsJCQlyZXR1 cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICAJCSh2b2lkKSBpbnRlbF9zZHZvX2dldF9wcmVmZXJyZWRf aW5wdXRfbW9kZShpbnRlbF9zZHZvLAo+ID4gIAkJCQkJCQkgICBpbnRlbF9zZHZvX2Nvbm5lY3Rv ciwKPiA+IEBAIC0xMTUzLDcgKzExNTMsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAl9Cj4gPiAgCj4g PiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMU0NBTikKPiA+ IC0JCXJldHVybiBmYWxzZTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gIAo+ID4gIAkvKgo+ ID4gIAkgKiBNYWtlIHRoZSBDUlRDIGNvZGUgZmFjdG9yIGluIHRoZSBTRFZPIHBpeGVsIG11bHRp cGxpZXIuICBUaGUKPiA+IEBAIC0xMTkzLDcgKzExOTMsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9z ZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlp ZiAoaW50ZWxfc2R2b19jb25uZWN0b3ItPmlzX2hkbWkpCj4gPiAgCQlhZGp1c3RlZF9tb2RlLT5w aWN0dXJlX2FzcGVjdF9yYXRpbyA9IGNvbm5fc3RhdGUtPnBpY3R1cmVfYXNwZWN0X3JhdGlvOwo+ ID4gIAo+ID4gLQlyZXR1cm4gdHJ1ZTsKPiA+ICsJcmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4g ICNkZWZpbmUgVVBEQVRFX1BST1BFUlRZKGlucHV0LCBOQU1FKSBcCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3R2LmMKPiA+IGluZGV4IGQ3YTQxNGNlMjc3NC4uYmQ1NTM2ZjBlYzkyIDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdHYuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfdHYuYwo+ID4gQEAgLTg2OSw3ICs4NjksNyBAQCBpbnRlbF90dl9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9j azsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGJvb2wKPiA+ICtzdGF0aWMgaW50Cj4gPiAgaW50 ZWxfdHZfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAg CQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ID4gIAkJCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gQEAgLTg3OSwxMCArODc5LDEwIEBA IGludGVsX3R2X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ID4gIAkJJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gPiAgCj4gPiAgCWlmICgh dHZfbW9kZSkKPiA+IC0JCXJldHVybiBmYWxzZTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4g IAo+ID4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTFNDQU4p Cj4gPiAtCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAKPiA+ICAJ cGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQjsKPiA+ ICAJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9IHR2X21vZGUtPmNsb2NrOwo+ID4gQEAgLTg5 Nyw3ICs4OTcsNyBAQCBpbnRlbF90dl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiA+ICAJICogb3Igd2hldGhlciB1c2Vyc3BhY2UgaXMgZG9pbmcgc29tZXRo aW5nIHN0dXBpZC4KPiA+ICAJICovCj4gPiAgCj4gPiAtCXJldHVybiB0cnVlOwo+ID4gKwlyZXR1 cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS92bHZfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS92bHZfZHNp LmMKPiA+IGluZGV4IGQxMTZmZWFkODUxNC4uYzI0N2NlNzRiNzFhIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvdmx2X2RzaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS92bHZfZHNpLmMKPiA+IEBAIC0yNTYsOSArMjU2LDkgQEAgc3RhdGljIHZvaWQgYmFuZF9n YXBfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAltdXRleF91 bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIGJvb2wg aW50ZWxfZHNpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ID4gLQkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiA+IC0J CQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+ICtzdGF0 aWMgaW50IGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiA+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywK PiA+ICsJCQkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4g IHsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGNvbnRh aW5lcl9vZihlbmNvZGVyLCBzdHJ1Y3QgaW50ZWxfZHNpLAo+ID4gQEAgLTI4NCw3ICsyODQsNyBA QCBzdGF0aWMgYm9vbCBpbnRlbF9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiAgCX0KPiA+ICAKPiA+ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdz ICYgRFJNX01PREVfRkxBR19EQkxTQ0FOKQo+ID4gLQkJcmV0dXJuIGZhbHNlOwo+ID4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiAgCj4gPiAgCS8qIERTSSB1c2VzIHNob3J0IHBhY2tldHMgZm9yIHN5 bmMgZXZlbnRzLCBzbyBjbGVhciBtb2RlIGZsYWdzIGZvciBEU0kgKi8KPiA+ICAJYWRqdXN0ZWRf bW9kZS0+ZmxhZ3MgPSAwOwo+ID4gQEAgLTMwMiwxNiArMzAyLDE2IEBAIHN0YXRpYyBib29sIGlu dGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ ICAKPiA+ICAJCXJldCA9IGJ4dF9kc2lfcGxsX2NvbXB1dGUoZW5jb2RlciwgcGlwZV9jb25maWcp Owo+ID4gIAkJaWYgKHJldCkKPiA+IC0JCQlyZXR1cm4gZmFsc2U7Cj4gPiArCQkJcmV0dXJuIC1F SU5WQUw7Cj4gPiAgCX0gZWxzZSB7Cj4gPiAgCQlyZXQgPSB2bHZfZHNpX3BsbF9jb21wdXRlKGVu Y29kZXIsIHBpcGVfY29uZmlnKTsKPiA+ICAJCWlmIChyZXQpCj4gPiAtCQkJcmV0dXJuIGZhbHNl Owo+ID4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4gIAl9Cj4gPiAgCj4gPiAgCXBpcGVfY29uZmln LT5jbG9ja19zZXQgPSB0cnVlOwo+ID4gIAo+ID4gLQlyZXR1cm4gdHJ1ZTsKPiA+ICsJcmV0dXJu IDA7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBib29sIGdsa19kc2lfZW5hYmxlX2lvKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IAo+IC0tIAo+IEphbmkgTmlrdWxhLCBJbnRlbCBP cGVuIFNvdXJjZSBHcmFwaGljcyBDZW50ZXIKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK