From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 102C48984F for ; Mon, 30 Dec 2019 12:59:32 +0000 (UTC) Date: Mon, 30 Dec 2019 14:58:49 +0200 From: Imre Deak Message-ID: <20191230125849.GA27309@ideak-desk.fi.intel.com> References: <20191230034040.21943-1-imre.deak@intel.com> <20191230034040.21943-4-imre.deak@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [igt-dev] [PATCH i-g-t 03/10] lib/igt_buf: Extend igt_buf to include two color surfaces List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Kahola, Mika" Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gTW9uLCBEZWMgMzAsIDIwMTkgYXQgMDI6MDY6NTFQTSArMDIwMCwgS2Fob2xhLCBNaWthIHdy b3RlOgo+IE9uIE1vbiwgMjAxOS0xMi0zMCBhdCAwNTo0MCArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+ID4gVVYgRkJzIGhhdmUgdHdvIGNvbG9yIHN1cmZhY2VzIHNvIGV4dGVuZCB0aGUgaWd0X2J1 ZiBzdHJ1Y3QKPiA+IGFjY29yZGluZ2x5Cj4gPiB0byBzdXBwb3J0IGJsaXR0aW5nIHN1Y2ggRkJz Lgo+ID4gCj4gPiBUaGUgcGF0Y2ggaXMgcHJvZHVjZWQgd2l0aCB0aGUgY29jY2luZWxsZSBwYXRj aCBiZWxvdy4KPiA+IAo+ID4gTm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgo+IAo+IFdoZW4gYXBwbHlp bmcgdGhpcyBwYXRjaCwgdGhlIGNvbXBpbGVyIHN0YXJ0ZWQgdG8gbmFnIGFib3V0CgpZZXMsIHRo YXQncyBkdWUgdG8gcGF0Y2ggYXBwbGllZCByZWNlbnRseSwgdGhpcyBjaGFuZ2UgbmVlZHMgYSBy ZWJhc2Ugb24gdGhhdApvbmUuIEknbGwgcmVzZW5kIHRoaXMgd2l0aCB0aGUgZm9sbG93aW5nIGNo YW5nZToKCitAQCB0ZXN0cy9rbXNfY3Vyc29yX2NyYy5jOiBzdGF0aWMgdm9pZCBjbGVhbnVwX2Ny dGMoZGF0YV90ICpkYXRhKQorIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpk YXRhLCBpbnQgYnVmZmVyKQorIHsKKyAgIGRhdGEtPmlndGJvW2J1ZmZlcl0uYm8gPSBkYXRhLT5k cm1pYm9bYnVmZmVyXTsKKy0gIGRhdGEtPmlndGJvW2J1ZmZlcl0uc3RyaWRlID0gZGF0YS0+cHJp bWFyeV9mYltidWZmZXJdLnN0cmlkZXNbMF07CisrICBkYXRhLT5pZ3Rib1tidWZmZXJdLnN1cmZh Y2VbMF0uc3RyaWRlID0gZGF0YS0+cHJpbWFyeV9mYltidWZmZXJdLnN0cmlkZXNbMF07CisgICBk YXRhLT5pZ3Rib1tidWZmZXJdLnRpbGluZyA9IGRhdGEtPnByaW1hcnlfZmJbYnVmZmVyXS5tb2Rp ZmllcjsKKy0gIGRhdGEtPmlndGJvW2J1ZmZlcl0uc2l6ZSA9IGRhdGEtPnByaW1hcnlfZmJbYnVm ZmVyXS5zaXplOworKyAgZGF0YS0+aWd0Ym9bYnVmZmVyXS5zdXJmYWNlWzBdLnNpemUgPSBkYXRh LT5wcmltYXJ5X2ZiW2J1ZmZlcl0uc2l6ZTsKKyAgIGRhdGEtPmlndGJvW2J1ZmZlcl0uYnBwID0g ZGF0YS0+cHJpbWFyeV9mYltidWZmZXJdLnBsYW5lX2JwcFswXTsKCj4gCj4gWzc1LzY3Ml0gQ29t cGlsaW5nIEMgb2JqZWN0ICd0ZXN0cy81OTgzMGViQEBrbXNfY3Vyc29yX2NyY0BleGUva21zX2N1 cnMKPiBvcl9jcmMuYy5vJy4KPiBGQUlMRUQ6IHRlc3RzLzU5ODMwZWJAQGttc19jdXJzb3JfY3Jj QGV4ZS9rbXNfY3Vyc29yX2NyYy5jLm8KPiBjY2FjaGUgY2MgLUl0ZXN0cy81OTgzMGViQEBrbXNf Y3Vyc29yX2NyY0BleGUgLUl0ZXN0cyAtSS4uL3Rlc3RzCj4gLUkuLi9pbmNsdWRlL2RybS11YXBp IC1JbGliIC1JLi4vbGliIC1JLi4vbGliL3N0dWJzL3N5c2NhbGxzIC1JLiAtSS4uLwo+IC1JL3Vz ci9pbmNsdWRlL2NhaXJvIC1JL3Vzci9pbmNsdWRlL2dsaWItMi4wIC1JL3Vzci9saWIveDg2XzY0 LWxpbnV4LQo+IGdudS9nbGliLTIuMC9pbmNsdWRlIC1JL3Vzci9pbmNsdWRlL3BpeG1hbi0xIC1J L3Vzci9pbmNsdWRlL2ZyZWV0eXBlMgo+IC1JL3Vzci9pbmNsdWRlL2xpYnBuZzE2IC1JL3Vzci9p bmNsdWRlL2xpYmRybSAtSS91c3IvaW5jbHVkZS94ODZfNjQtCj4gbGludXgtZ251IC1JL3Vzci9p bmNsdWRlL2Fsc2EgLUkvdXNyL2luY2x1ZGUvbGliZHJtL25vdXZlYXUKPiAtZmRpYWdub3N0aWNz LWNvbG9yPWFsd2F5cyAtcGlwZSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1XYWxsCj4gLVdpbnZh bGlkLXBjaCAtV2V4dHJhIC1zdGQ9Z251MTEgLU8yIC1nIC1EX0dOVV9TT1VSQ0UgLWluY2x1ZGUg Y29uZmlnLmgKPiAtRF9GT1JUSUZZX1NPVVJDRT0yIC1XYmFkLWZ1bmN0aW9uLWNhc3QgLVdkZWNs YXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQKPiAtV2Zvcm1hdD0yIC1XaW1wbGljaXQtZmFsbHRocm91 Z2g9MCAtV2xvZ2ljYWwtb3AgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyAKPiAtV21pc3NpbmctZm9y bWF0LWF0dHJpYnV0ZSAtV21pc3Npbmctbm9yZXR1cm4gLVdtaXNzaW5nLXByb3RvdHlwZXMKPiAt V25lc3RlZC1leHRlcm5zIC1Xb2xkLXN0eWxlLWRlZmluaXRpb24gLVdwb2ludGVyLWFyaXRoIC1X cmVkdW5kYW50LQo+IGRlY2xzIC1Xc2hhZG93IC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd1bmluaXRp YWxpemVkIC1XdW51c2VkIC1Xbm8tCj4gY2xvYmJlcmVkIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXpl ZCAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzCj4gLVduby1wb2ludGVyLWFyaXRoIC1X bm8tc2lnbi1jb21wYXJlIC1Xbm8tdHlwZS1saW1pdHMgLVduby11bnVzZWQtCj4gcGFyYW1ldGVy IC1Xbm8tdW51c2VkLXJlc3VsdCAtV2Vycm9yPWFkZHJlc3MgLVdlcnJvcj1hcnJheS1ib3VuZHMK PiAtV2Vycm9yPWltcGxpY2l0IC1XZXJyb3I9aW5pdC1zZWxmIC1XZXJyb3I9aW50LXRvLXBvaW50 ZXItY2FzdAo+IC1XZXJyb3I9bWFpbiAtV2Vycm9yPW1pc3NpbmctYnJhY2VzIC1XZXJyb3I9bm9u bnVsbCAtV2Vycm9yPXBvaW50ZXItdG8tCj4gaW50LWNhc3QgLVdlcnJvcj1yZXR1cm4tdHlwZSAt V2Vycm9yPXNlcXVlbmNlLXBvaW50IC1XZXJyb3I9dHJpZ3JhcGhzCj4gLVdlcnJvcj13cml0ZS1z dHJpbmdzIC1mbm8tYnVpbHRpbi1tYWxsb2MgLWZuby1idWlsdGluLWNhbGxvYwo+IC1wdGhyZWFk ICAtTUQgLU1RICd0ZXN0cy81OTgzMGViQEBrbXNfY3Vyc29yX2NyY0BleGUva21zX2N1cnNvcl9j cmMuYy5vCj4gJyAtTUYgJ3Rlc3RzLzU5ODMwZWJAQGttc19jdXJzb3JfY3JjQGV4ZS9rbXNfY3Vy c29yX2NyYy5jLm8uZCcgLW8KPiAndGVzdHMvNTk4MzBlYkBAa21zX2N1cnNvcl9jcmNAZXhlL2tt c19jdXJzb3JfY3JjLmMubycgLWMKPiAuLi90ZXN0cy9rbXNfY3Vyc29yX2NyYy5jCj4gLi4vdGVz dHMva21zX2N1cnNvcl9jcmMuYzogSW4gZnVuY3Rpb24g4oCYc2NyYXRjaF9idWZfaW5pdOKAmToK PiAuLi90ZXN0cy9rbXNfY3Vyc29yX2NyYy5jOjM4ODoyMTogZXJyb3I6IOKAmHN0cnVjdCBpZ3Rf YnVm4oCZIGhhcyBubyBtZW1iZXIKPiBuYW1lZCDigJhzdHJpZGXigJkKPiAgIGRhdGEtPmlndGJv W2J1ZmZlcl0uc3RyaWRlID0gZGF0YS0+cHJpbWFyeV9mYltidWZmZXJdLnN0cmlkZXNbMF07Cj4g ICAgICAgICAgICAgICAgICAgICAgXgo+IC4uL3Rlc3RzL2ttc19jdXJzb3JfY3JjLmM6MzkwOjIx OiBlcnJvcjog4oCYc3RydWN0IGlndF9idWbigJkgaGFzIG5vIG1lbWJlcgo+IG5hbWVkIOKAmHNp emXigJkKPiAgIGRhdGEtPmlndGJvW2J1ZmZlcl0uc2l6ZSA9IGRhdGEtPnByaW1hcnlfZmJbYnVm ZmVyXS5zaXplOwo+ICAgICAgICAgICAgICAgICAgICAgIF4KPiBbODQvNjcyXSBDb21waWxpbmcg QyBvYmplY3QgJ3Rlc3RzLzU5ODMwZWJAQGttc19jdXJzb3JfbGVnYWN5QGV4ZS9rbXNfYwo+IHVy c29yX2xlZ2FjeS5jLm8nLgo+IG5pbmphOiBidWlsZCBzdG9wcGVkOiBzdWJjb21tYW5kIGZhaWxl ZC4KPiAKPiA+IAo+ID4gQEAKPiA+IEBACj4gPiAKPiA+IHN0cnVjdCBpZ3RfYnVmIHsKPiA+IAku Li4KPiA+IC0JdWludDMyX3Qgc3RyaWRlOwo+ID4gCS4uLgo+ID4gLQl1aW50MzJfdCBzaXplOwo+ ID4gKwlzdHJ1Y3Qgewo+ID4gKwkJdWludDMyX3Qgc3RyaWRlOwo+ID4gKwkJdWludDMyX3Qgc2l6 ZTsKPiA+ICsJfSBzdXJmYWNlWzJdOwo+ID4gCS4uLgo+ID4gfTsKPiA+IAo+ID4gQEAKPiA+IHN0 cnVjdCBpZ3RfYnVmIGI7Cj4gPiBAQAo+ID4gCj4gPiA8Li4uCj4gPiAoCj4gPiAtIGIuc3RyaWRl Cj4gPiArIGIuc3VyZmFjZVswXS5zdHJpZGUKPiA+ID4gCj4gPiAKPiA+IC0gYi5zaXplCj4gPiAr IGIuc3VyZmFjZVswXS5zaXplCj4gPiApCj4gPiAuLi4+Cj4gPiAKPiA+IEBACj4gPiBzdHJ1Y3Qg aWd0X2J1ZiAqYjsKPiA+IEBACj4gPiAKPiA+IDwuLi4KPiA+ICgKPiA+IC0gYi0+c2l6ZQo+ID4g KyBiLT5zdXJmYWNlWzBdLnNpemUKPiA+ID4gCj4gPiAKPiA+IC0gYi0+c3RyaWRlCj4gPiArIGIt PnN1cmZhY2VbMF0uc3RyaWRlCj4gPiApCj4gPiAuLi4+Cj4gPiAKPiA+IEBACj4gPiBpZGVudGlm aWVyIEk7Cj4gPiBleHByZXNzaW9uIEUxOwo+ID4gZXhwcmVzc2lvbiBFMjsKPiA+IEBACj4gPiAK PiA+ICgKPiA+IHN0cnVjdCBpZ3RfYnVmIEkgPSB7Cj4gPiAtCS5zaXplID0gRTEsCj4gPiAtCS5z dHJpZGUgPSBFMiwKPiA+ICsJLnN1cmZhY2VbMF0gPSB7Cj4gPiArCQkuc2l6ZSA9IEUxLAo+ID4g KwkJLnN0cmlkZSA9IEUyLAo+ID4gKwl9LAo+ID4gfTsKPiA+ID4gCj4gPiAKPiA+IHN0cnVjdCBp Z3RfYnVmIEkgPSB7Cj4gPiAtCS5zaXplID0gRTEsCj4gPiArCS5zdXJmYWNlWzBdID0gewo+ID4g KwkJLnNpemUgPSBFMSwKPiA+ICsJfSwKPiA+IH07Cj4gPiA+IAo+ID4gCj4gPiBzdHJ1Y3QgaWd0 X2J1ZiBJID0gewo+ID4gLQkuc3RyaWRlID0gRTEsCj4gPiArCS5zdXJmYWNlWzBdID0gewo+ID4g KwkJLnN0cmlkZSA9IEUxLAo+ID4gKwl9LAo+ID4gfTsKPiA+ICkKPiA+IAo+ID4gQ2M6IE1pa2Eg S2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ICBsaWIvZ3B1X2NtZHMuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLQo+ID4gIGxpYi9pZ3RfZHJhdy5jICAgICAgICAgICAg ICAgICAgICAgICB8ICA4ICsrLS0KPiA+ICBsaWIvaWd0X2ZiLmMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNCArLQo+ID4gIGxpYi9pbnRlbF9hdXhfcGd0YWJsZS5jICAgICAgICAgICAgICB8 ICA1ICsrLQo+ID4gIGxpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jICAgICAgICAgICAgICB8ICA4ICsr LS0KPiA+ICBsaWIvaW50ZWxfYmF0Y2hidWZmZXIuaCAgICAgICAgICAgICAgfCAgNiArKy0KPiA+ ICBsaWIvcmVuZGVyY29weV9nZW40LmMgICAgICAgICAgICAgICAgfCAgNCArLQo+ID4gIGxpYi9y ZW5kZXJjb3B5X2dlbjYuYyAgICAgICAgICAgICAgICB8ICA0ICstCj4gPiAgbGliL3JlbmRlcmNv cHlfZ2VuNy5jICAgICAgICAgICAgICAgIHwgIDQgKy0KPiA+ICBsaWIvcmVuZGVyY29weV9nZW44 LmMgICAgICAgICAgICAgICAgfCAgNCArLQo+ID4gIGxpYi9yZW5kZXJjb3B5X2dlbjkuYyAgICAg ICAgICAgICAgICB8ICA0ICstCj4gPiAgbGliL3JlbmRlcmNvcHlfaTgzMC5jICAgICAgICAgICAg ICAgIHwgIDggKystLQo+ID4gIGxpYi9yZW5kZXJjb3B5X2k5MTUuYyAgICAgICAgICAgICAgICB8 ICA4ICsrLS0KPiA+ICBsaWIvdmVib3hjb3B5X2dlbjEyLmMgICAgICAgICAgICAgICAgfCAgNiAr Ky0KPiA+ICB0ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50X2FsbC5jICAgICAgfCAxMCArKystLQo+ ID4gIHRlc3RzL2k5MTUvZ2VtX2dwZ3B1X2ZpbGwuYyAgICAgICAgICB8ICA0ICstCj4gPiAgdGVz dHMvaTkxNS9nZW1fbWVkaWFfZmlsbC5jICAgICAgICAgIHwgIDQgKy0KPiA+ICB0ZXN0cy9pOTE1 L2dlbV9tZWRpYV92bWUuYyAgICAgICAgICAgfCAgNiArLS0KPiA+ICB0ZXN0cy9pOTE1L2dlbV9w cGd0dC5jICAgICAgICAgICAgICAgfCAgOCArKy0tCj4gPiAgdGVzdHMvaTkxNS9nZW1fcmVhZF9y ZWFkX3NwZWVkLmMgICAgIHwgMTAgKysrLS0KPiA+ICB0ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29w eS5jICAgICAgICAgfCAzNSArKysrKysrKystLS0tLS0tLQo+ID4gIHRlc3RzL2k5MTUvZ2VtX3Jl bmRlcl9jb3B5X3JlZHV4LmMgICB8ICA0ICstCj4gPiAgdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2xp bmVhcl9ibGl0cy5jIHwgMjQgKysrKystLS0tLS0KPiA+ICB0ZXN0cy9pOTE1L2dlbV9yZW5kZXJf dGlsZWRfYmxpdHMuYyAgfCAgOCArKy0tCj4gPiAgdGVzdHMvaTkxNS9nZW1fcmluZ19zeW5jX2Nv cHkuYyAgICAgIHwgIDQgKy0KPiA+ICB0ZXN0cy9pOTE1L2dlbV9zdHJlc3MuYyAgICAgICAgICAg ICAgfCA1OSArKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ID4gLS0KPiA+ICB0ZXN0cy9pOTE1 L2k5MTVfcG1fc3NldS5jICAgICAgICAgICAgfCAgNyArKy0tCj4gPiAgdGVzdHMva21zX2JpZ19m Yi5jICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0KPiA+ICB0ZXN0cy9rbXNfcHNyLmMgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLQo+ID4gIHRlc3RzL3BlcmYuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0ICstCj4gPiAgMzAgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMo KyksIDEyOSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9ncHVfY21kcy5j IGIvbGliL2dwdV9jbWRzLmMKPiA+IGluZGV4IDhkMjcwZWU4Li43OTQxMjcyNSAxMDA2NDQKPiA+ IC0tLSBhL2xpYi9ncHVfY21kcy5jCj4gPiArKysgYi9saWIvZ3B1X2NtZHMuYwo+ID4gQEAgLTEx OSw3ICsxMTksNyBAQCBnZW43X2ZpbGxfc3VyZmFjZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIKPiA+ICpiYXRjaCwKPiA+ICAJc3MtPnNzMi5oZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChi dWYpIC0gMTsKPiA+ICAJc3MtPnNzMi53aWR0aCAgPSBpZ3RfYnVmX3dpZHRoKGJ1ZikgLSAxOwo+ ID4gIAo+ID4gLQlzcy0+c3MzLnBpdGNoICA9IGJ1Zi0+c3RyaWRlIC0gMTsKPiA+ICsJc3MtPnNz My5waXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0gMTsKPiA+ICAKPiA+ICAJc3MtPnNz Ny5zaGFkZXJfY2hhbmVsX3NlbGVjdF9yID0gNDsKPiA+ICAJc3MtPnNzNy5zaGFkZXJfY2hhbmVs X3NlbGVjdF9nID0gNTsKPiA+IEBAIC00MjIsNyArNDIyLDcgQEAgZ2VuOF9maWxsX3N1cmZhY2Vf c3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyCj4gPiAqYmF0Y2gsCj4gPiAgCj4gPiAgCXNz LT5zczIuaGVpZ2h0ID0gaWd0X2J1Zl9oZWlnaHQoYnVmKSAtIDE7Cj4gPiAgCXNzLT5zczIud2lk dGggID0gaWd0X2J1Zl93aWR0aChidWYpIC0gMTsKPiA+IC0Jc3MtPnNzMy5waXRjaCAgPSBidWYt PnN0cmlkZSAtIDE7Cj4gPiArCXNzLT5zczMucGl0Y2ggID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlk ZSAtIDE7Cj4gPiAgCj4gPiAgCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfciA9IDQ7Cj4g PiAgCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfZyA9IDU7Cj4gPiBkaWZmIC0tZ2l0IGEv bGliL2lndF9kcmF3LmMgYi9saWIvaWd0X2RyYXcuYwo+ID4gaW5kZXggN2UwZWRlYzEuLjY5NTBi YzQ5IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lndF9kcmF3LmMKPiA+ICsrKyBiL2xpYi9pZ3RfZHJh dy5jCj4gPiBAQCAtNjAzLDE0ICs2MDMsMTQgQEAgc3RhdGljIHZvaWQgZHJhd19yZWN0X3JlbmRl cihpbnQgZmQsIHN0cnVjdAo+ID4gY21kX2RhdGEgKmNtZF9kYXRhLAo+ID4gIAlpZ3RfYXNzZXJ0 KGRzdCk7Cj4gPiAgCj4gPiAgCXNyY19idWYuYm8gPSBzcmM7Cj4gPiAtCXNyY19idWYuc3RyaWRl ID0gdG1wLnN0cmlkZTsKPiA+ICsJc3JjX2J1Zi5zdXJmYWNlWzBdLnN0cmlkZSA9IHRtcC5zdHJp ZGU7Cj4gPiAgCXNyY19idWYudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKPiA+IC0Jc3JjX2J1 Zi5zaXplID0gdG1wLnNpemU7Cj4gPiArCXNyY19idWYuc3VyZmFjZVswXS5zaXplID0gdG1wLnNp emU7Cj4gPiAgCXNyY19idWYuYnBwID0gdG1wLmJwcDsKPiA+ICAJZHN0X2J1Zi5ibyA9IGRzdDsK PiA+IC0JZHN0X2J1Zi5zdHJpZGUgPSBidWYtPnN0cmlkZTsKPiA+ICsJZHN0X2J1Zi5zdXJmYWNl WzBdLnN0cmlkZSA9IGJ1Zi0+c3RyaWRlOwo+ID4gIAlkc3RfYnVmLnRpbGluZyA9IHRpbGluZzsK PiA+IC0JZHN0X2J1Zi5zaXplID0gYnVmLT5zaXplOwo+ID4gKwlkc3RfYnVmLnN1cmZhY2VbMF0u c2l6ZSA9IGJ1Zi0+c2l6ZTsKPiA+ICAJZHN0X2J1Zi5icHAgPSBidWYtPmJwcDsKPiA+ICAKPiA+ ICAJYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhjbWRfZGF0YS0+YnVmbWdyLCBkZXZp ZCk7Cj4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCj4gPiBpbmRl eCAwZTFiODQ5My4uY2MwZmIzNzMgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvaWd0X2ZiLmMKPiA+ICsr KyBiL2xpYi9pZ3RfZmIuYwo+ID4gQEAgLTE5NzcsOSArMTk3Nyw5IEBAIHN0YXRpYyB2b2lkIGlu aXRfYnVmKHN0cnVjdCBmYl9ibGl0X3VwbG9hZAo+ID4gKmJsaXQsCj4gPiAgCWJ1Zi0+Ym8gPSBn ZW1faGFuZGxlX3RvX2xpYmRybV9ibyhibGl0LT5idWZtZ3IsIGJsaXQtPmZkLAo+ID4gIAkJCQkJ ICBuYW1lLCBmYi0+Z2VtX2hhbmRsZSk7Cj4gPiAgCWJ1Zi0+dGlsaW5nID0gaWd0X2ZiX21vZF90 b190aWxpbmcoZmItPm1vZGlmaWVyKTsKPiA+IC0JYnVmLT5zdHJpZGUgPSBmYi0+c3RyaWRlc1sw XTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOwo+ID4gIAli dWYtPmJwcCA9IGZiLT5wbGFuZV9icHBbMF07Cj4gPiAtCWJ1Zi0+c2l6ZSA9IGZiLT5zaXplOwo+ ID4gKwlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IGZiLT5zaXplOwo+ID4gIAo+ID4gIAlpZiAoaXNf Y2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKPiA+ICAJCWlndF9hc3NlcnRfZXEoZmItPnN0 cmlkZXNbMF0gJiAxMjcsIDApOwo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9hdXhfcGd0YWJs ZS5jIGIvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMKPiA+IGluZGV4IGRhYjgzYTlhLi41YWRkYjJl MiAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jCj4gPiArKysgYi9saWIv aW50ZWxfYXV4X3BndGFibGUuYwo+ID4gQEAgLTc3LDcgKzc3LDggQEAgcGd0X3RhYmxlX2NvdW50 KGludCBhZGRyZXNzX2JpdHMsIGNvbnN0IHN0cnVjdAo+ID4gaWd0X2J1ZiAqKmJ1ZnMsIGludCBi dWZfY291bnQpCj4gPiAgCQkvKiBBdm9pZCBkb3VibGUgY291bnRpbmcgZm9yIG92ZXJsYXBwaW5n IGFsaWduZWQgYnVmcy4KPiA+ICovCj4gPiAgCQlzdGFydCA9IG1heChzdGFydCwgZW5kKTsKPiA+ ICAKPiA+IC0JCWVuZCA9IEFMSUdOKGJ1Zi0+Ym8tPm9mZnNldDY0ICsgYnVmLT5zaXplLCAxVUwg PDwKPiA+IGFkZHJlc3NfYml0cyk7Cj4gPiArCQllbmQgPSBBTElHTihidWYtPmJvLT5vZmZzZXQ2 NCArIGJ1Zi0+c3VyZmFjZVswXS5zaXplLAo+ID4gKwkJCSAgICAxVUwgPDwgYWRkcmVzc19iaXRz KTsKPiA+ICAJCWlndF9hc3NlcnQoZW5kID49IHN0YXJ0KTsKPiA+ICAKPiA+ICAJCWNvdW50ICs9 IChlbmQgLSBzdGFydCkgPj4gYWRkcmVzc19iaXRzOwo+ID4gQEAgLTI1NSw3ICsyNTYsNyBAQCBw Z3RfcG9wdWxhdGVfZW50cmllc19mb3JfYnVmKHN0cnVjdCBwZ3RhYmxlICpwZ3QsCj4gPiAgCQkJ ICAgICAgIHVpbnQ2NF90IHRvcF90YWJsZSkKPiA+ICB7Cj4gPiAgCXVpbnQ2NF90IHN1cmZhY2Vf YWRkciA9IGJ1Zi0+Ym8tPm9mZnNldDY0Owo+ID4gLQl1aW50NjRfdCBzdXJmYWNlX2VuZCA9IHN1 cmZhY2VfYWRkciArIGJ1Zi0+c2l6ZTsKPiA+ICsJdWludDY0X3Qgc3VyZmFjZV9lbmQgPSBzdXJm YWNlX2FkZHIgKyBidWYtPnN1cmZhY2VbMF0uc2l6ZTsKPiA+ICAJdWludDY0X3QgYXV4X2FkZHIg PSBidWYtPmJvLT5vZmZzZXQ2NCArIGJ1Zi0+Y2NzWzBdLm9mZnNldDsKPiA+ICAJdWludDY0X3Qg bDFfZmxhZ3MgPSBwZ3RfZ2V0X2wxX2ZsYWdzKGJ1Zik7Cj4gPiAgCXVpbnQ2NF90IGx4X2ZsYWdz ID0gcGd0X2dldF9seF9mbGFncygpOwo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1 ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKPiA+IGluZGV4IDUxYWFlNGRjLi4zZGM4 OTAyNCAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCj4gPiArKysgYi9s aWIvaW50ZWxfYmF0Y2hidWZmZXIuYwo+ID4gQEAgLTUxMiw3ICs1MTIsNyBAQCBpbnRlbF9jb3B5 X2JvKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gPiAgICovCj4gPiAgdW5zaWdu ZWQgaWd0X2J1Zl93aWR0aChjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQo+ID4gIHsKPiA+IC0J cmV0dXJuIGJ1Zi0+c3RyaWRlLyhidWYtPmJwcCAvIDgpOwo+ID4gKwlyZXR1cm4gYnVmLT5zdXJm YWNlWzBdLnN0cmlkZS8oYnVmLT5icHAgLyA4KTsKPiA+ICB9Cj4gPiAgCj4gPiAgLyoqCj4gPiBA QCAtNTI2LDcgKzUyNiw3IEBAIHVuc2lnbmVkIGlndF9idWZfd2lkdGgoY29uc3Qgc3RydWN0IGln dF9idWYgKmJ1ZikKPiA+ICAgKi8KPiA+ICB1bnNpZ25lZCBpZ3RfYnVmX2hlaWdodChjb25zdCBz dHJ1Y3QgaWd0X2J1ZiAqYnVmKQo+ID4gIHsKPiA+IC0JcmV0dXJuIGJ1Zi0+c2l6ZS9idWYtPnN0 cmlkZTsKPiA+ICsJcmV0dXJuIGJ1Zi0+c3VyZmFjZVswXS5zaXplL2J1Zi0+c3VyZmFjZVswXS5z dHJpZGU7Cj4gPiAgfQo+ID4gIAo+ID4gIC8qCj4gPiBAQCAtNzg1LDggKzc4NSw4IEBAIHZvaWQg aWd0X2JsaXR0ZXJfZmFzdF9jb3B5KHN0cnVjdAo+ID4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo LAo+ID4gIAo+ID4gIAlpZ3RfYXNzZXJ0KHNyYy0+YnBwID09IGRzdC0+YnBwKTsKPiA+ICAKPiA+ IC0Jc3JjX3BpdGNoID0gZmFzdF9jb3B5X3BpdGNoKHNyYy0+c3RyaWRlLCBzcmMtPnRpbGluZyk7 Cj4gPiAtCWRzdF9waXRjaCA9IGZhc3RfY29weV9waXRjaChkc3QtPnN0cmlkZSwgc3JjLT50aWxp bmcpOwo+ID4gKwlzcmNfcGl0Y2ggPSBmYXN0X2NvcHlfcGl0Y2goc3JjLT5zdXJmYWNlWzBdLnN0 cmlkZSwgc3JjLQo+ID4gPnRpbGluZyk7Cj4gPiArCWRzdF9waXRjaCA9IGZhc3RfY29weV9waXRj aChkc3QtPnN1cmZhY2VbMF0uc3RyaWRlLCBzcmMtCj4gPiA+dGlsaW5nKTsKPiA+ICAJZHdvcmQw ID0gZmFzdF9jb3B5X2R3b3JkMChzcmMtPnRpbGluZywgZHN0LT50aWxpbmcpOwo+ID4gIAlkd29y ZDEgPSBmYXN0X2NvcHlfZHdvcmQxKHNyYy0+dGlsaW5nLCBkc3QtPnRpbGluZywgZHN0LT5icHAp Owo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmgKPiA+IGluZGV4IDYzZDMyMTg4Li42OTU4MDgzOSAxMDA2NDQKPiA+ IC0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCj4gPiArKysgYi9saWIvaW50ZWxfYmF0Y2hi dWZmZXIuaAo+ID4gQEAgLTIzMiwxMiArMjMyLDE0IEBAIGVudW0gaTkxNV9jb21wcmVzc2lvbiB7 Cj4gPiAgICovCj4gPiAgc3RydWN0IGlndF9idWYgewo+ID4gIAlkcm1faW50ZWxfYm8gKmJvOwo+ ID4gLQl1aW50MzJfdCBzdHJpZGU7Cj4gPiAgCXVpbnQzMl90IHRpbGluZzsKPiA+ICAJZW51bSBp OTE1X2NvbXByZXNzaW9uIGNvbXByZXNzaW9uOwo+ID4gIAl1aW50MzJfdCBicHA7Cj4gPiAgCXVp bnQzMl90ICpkYXRhOwo+ID4gLQl1aW50MzJfdCBzaXplOwo+ID4gKwlzdHJ1Y3Qgewo+ID4gKwkJ dWludDMyX3Qgc3RyaWRlOwo+ID4gKwkJdWludDMyX3Qgc2l6ZTsKPiA+ICsJfSBzdXJmYWNlWzJd Owo+ID4gIAlzdHJ1Y3Qgewo+ID4gIAkJdWludDMyX3Qgb2Zmc2V0Owo+ID4gIAkJdWludDMyX3Qg c3RyaWRlOwo+ID4gZGlmZiAtLWdpdCBhL2xpYi9yZW5kZXJjb3B5X2dlbjQuYyBiL2xpYi9yZW5k ZXJjb3B5X2dlbjQuYwo+ID4gaW5kZXggNDJkZTc3ZjkuLmQwN2I4ZTQ4IDEwMDY0NAo+ID4gLS0t IGEvbGliL3JlbmRlcmNvcHlfZ2VuNC5jCj4gPiArKysgYi9saWIvcmVuZGVyY29weV9nZW40LmMK PiA+IEBAIC0xNDIsNyArMTQyLDcgQEAgZ2VuNF9iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLAo+ID4gIAl1aW50MzJfdCB3cml0ZV9kb21haW4sIHJlYWRfZG9tYWluOwo+ ID4gIAlpbnQgcmV0Owo+ID4gIAo+ID4gLQlpZ3RfYXNzZXJ0X2x0ZShidWYtPnN0cmlkZSwgMTI4 KjEwMjQpOwo+ID4gKwlpZ3RfYXNzZXJ0X2x0ZShidWYtPnN1cmZhY2VbMF0uc3RyaWRlLCAxMjgq MTAyNCk7Cj4gPiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfd2lkdGgoYnVmKSwgODE5Mik7Cj4g PiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KGJ1ZiksIDgxOTIpOwo+ID4gIAo+ID4g QEAgLTE3Niw3ICsxNzYsNyBAQCBnZW40X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZl ciAqYmF0Y2gsCj4gPiAgCj4gPiAgCXNzLT5zczIuaGVpZ2h0ID0gaWd0X2J1Zl9oZWlnaHQoYnVm KSAtIDE7Cj4gPiAgCXNzLT5zczIud2lkdGggID0gaWd0X2J1Zl93aWR0aChidWYpIC0gMTsKPiA+ IC0Jc3MtPnNzMy5waXRjaCAgPSBidWYtPnN0cmlkZSAtIDE7Cj4gPiArCXNzLT5zczMucGl0Y2gg ID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAtIDE7Cj4gPiAgCXNzLT5zczMudGlsZWRfc3VyZmFj ZSA9IGJ1Zi0+dGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkU7Cj4gPiAgCXNzLT5zczMudGlsZV93 YWxrICAgICA9IGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1k7Cj4gPiAgCj4gPiBkaWZmIC0t Z2l0IGEvbGliL3JlbmRlcmNvcHlfZ2VuNi5jIGIvbGliL3JlbmRlcmNvcHlfZ2VuNi5jCj4gPiBp bmRleCA4M2M3ZDY5NC4uODcwMzQ3NzQgMTAwNjQ0Cj4gPiAtLS0gYS9saWIvcmVuZGVyY29weV9n ZW42LmMKPiA+ICsrKyBiL2xpYi9yZW5kZXJjb3B5X2dlbjYuYwo+ID4gQEAgLTc5LDcgKzc5LDcg QEAgZ2VuNl9iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ID4gY29u c3Qgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICAJdWludDMyX3Qgd3JpdGVfZG9tYWluLCByZWFk X2RvbWFpbjsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+IC0JaWd0X2Fzc2VydF9sdGUoYnVmLT5z dHJpZGUsIDEyOCoxMDI0KTsKPiA+ICsJaWd0X2Fzc2VydF9sdGUoYnVmLT5zdXJmYWNlWzBdLnN0 cmlkZSwgMTI4KjEwMjQpOwo+ID4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX3dpZHRoKGJ1Ziks IDgxOTIpOwo+ID4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX2hlaWdodChidWYpLCA4MTkyKTsK PiA+ICAKPiA+IEBAIC0xMTMsNyArMTEzLDcgQEAgZ2VuNl9iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAo+ID4gY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICAK PiA+ICAJc3MtPnNzMi5oZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpIC0gMTsKPiA+ICAJc3Mt PnNzMi53aWR0aCAgPSBpZ3RfYnVmX3dpZHRoKGJ1ZikgLSAxOwo+ID4gLQlzcy0+c3MzLnBpdGNo ICA9IGJ1Zi0+c3RyaWRlIC0gMTsKPiA+ICsJc3MtPnNzMy5waXRjaCAgPSBidWYtPnN1cmZhY2Vb MF0uc3RyaWRlIC0gMTsKPiA+ICAJc3MtPnNzMy50aWxlZF9zdXJmYWNlID0gYnVmLT50aWxpbmcg IT0gSTkxNV9USUxJTkdfTk9ORTsKPiA+ICAJc3MtPnNzMy50aWxlX3dhbGsgICAgID0gYnVmLT50 aWxpbmcgPT0gSTkxNV9USUxJTkdfWTsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9saWIvcmVuZGVy Y29weV9nZW43LmMgYi9saWIvcmVuZGVyY29weV9nZW43LmMKPiA+IGluZGV4IGEzYzhiN2YzLi5i ODhiNzVlOSAxMDA2NDQKPiA+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjcuYwo+ID4gKysrIGIv bGliL3JlbmRlcmNvcHlfZ2VuNy5jCj4gPiBAQCAtNjUsNyArNjUsNyBAQCBnZW43X2JpbmRfYnVm KHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gPiAgCXVpbnQzMl90IHdyaXRlX2Rv bWFpbiwgcmVhZF9kb21haW47Cj4gPiAgCWludCByZXQ7Cj4gPiAgCj4gPiAtCWlndF9hc3NlcnRf bHRlKGJ1Zi0+c3RyaWRlLCAyNTYqMTAyNCk7Cj4gPiArCWlndF9hc3NlcnRfbHRlKGJ1Zi0+c3Vy ZmFjZVswXS5zdHJpZGUsIDI1NioxMDI0KTsKPiA+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl93 aWR0aChidWYpLCAxNjM4NCk7Cj4gPiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KGJ1 ZiksIDE2Mzg0KTsKPiA+ICAKPiA+IEBAIC05Miw3ICs5Miw3IEBAIGdlbjdfYmluZF9idWYoc3Ry dWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiA+ICAJc3NbMV0gPSBidWYtPmJvLT5vZmZz ZXQ7Cj4gPiAgCXNzWzJdID0gKChpZ3RfYnVmX3dpZHRoKGJ1ZikgLSAxKSAgPDwgR0VON19TVVJG QUNFX1dJRFRIX1NISUZUCj4gPiB8Cj4gPiAgCQkgKGlndF9idWZfaGVpZ2h0KGJ1ZikgLSAxKSA8 PAo+ID4gR0VON19TVVJGQUNFX0hFSUdIVF9TSElGVCk7Cj4gPiAtCXNzWzNdID0gKGJ1Zi0+c3Ry aWRlIC0gMSkgPDwgR0VON19TVVJGQUNFX1BJVENIX1NISUZUOwo+ID4gKwlzc1szXSA9IChidWYt PnN1cmZhY2VbMF0uc3RyaWRlIC0gMSkgPDwKPiA+IEdFTjdfU1VSRkFDRV9QSVRDSF9TSElGVDsK PiA+ICAJc3NbNF0gPSAwOwo+ID4gIAlpZiAoSVNfVkFMTEVZVklFVyhiYXRjaC0+ZGV2aWQpKQo+ ID4gIAkJc3NbNV0gPSBWTFZfTU9DU19MMyA8PCAxNjsKPiA+IGRpZmYgLS1naXQgYS9saWIvcmVu ZGVyY29weV9nZW44LmMgYi9saWIvcmVuZGVyY29weV9nZW44LmMKPiA+IGluZGV4IGUyMmQ4NTAx Li44ZTAyZDg0NiAxMDA2NDQKPiA+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjguYwo+ID4gKysr IGIvbGliL3JlbmRlcmNvcHlfZ2VuOC5jCj4gPiBAQCAtMTUxLDcgKzE1MSw3IEBAIGdlbjhfYmlu ZF9idWYoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiA+ICAJdWludDMyX3Qgd3Jp dGVfZG9tYWluLCByZWFkX2RvbWFpbiwgb2Zmc2V0Owo+ID4gIAlpbnQgcmV0Owo+ID4gIAo+ID4g LQlpZ3RfYXNzZXJ0X2x0ZShidWYtPnN0cmlkZSwgMjU2KjEwMjQpOwo+ID4gKwlpZ3RfYXNzZXJ0 X2x0ZShidWYtPnN1cmZhY2VbMF0uc3RyaWRlLCAyNTYqMTAyNCk7Cj4gPiAgCWlndF9hc3NlcnRf bHRlKGlndF9idWZfd2lkdGgoYnVmKSwgMTYzODQpOwo+ID4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3Rf YnVmX2hlaWdodChidWYpLCAxNjM4NCk7Cj4gPiAgCj4gPiBAQCAtMTk5LDcgKzE5OSw3IEBAIGdl bjhfYmluZF9idWYoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiA+ICAKPiA+ICAJ c3MtPnNzMi5oZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpIC0gMTsKPiA+ICAJc3MtPnNzMi53 aWR0aCAgPSBpZ3RfYnVmX3dpZHRoKGJ1ZikgLSAxOwo+ID4gLQlzcy0+c3MzLnBpdGNoICA9IGJ1 Zi0+c3RyaWRlIC0gMTsKPiA+ICsJc3MtPnNzMy5waXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3Ry aWRlIC0gMTsKPiA+ICAKPiA+ICAJc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9yID0gNDsK PiA+ICAJc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9nID0gNTsKPiA+IGRpZmYgLS1naXQg YS9saWIvcmVuZGVyY29weV9nZW45LmMgYi9saWIvcmVuZGVyY29weV9nZW45LmMKPiA+IGluZGV4 IDRkNDU0MWUzLi44MzVjOGQ4MCAxMDA2NDQKPiA+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjku Ywo+ID4gKysrIGIvbGliL3JlbmRlcmNvcHlfZ2VuOS5jCj4gPiBAQCAtMTk5LDcgKzE5OSw3IEBA IGdlbjhfYmluZF9idWYoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiA+IGNvbnN0 IHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiAgCXVpbnQzMl90IHdyaXRlX2RvbWFpbiwgcmVhZF9k b21haW4sIG9mZnNldDsKPiA+ICAJaW50IHJldDsKPiA+ICAKPiA+IC0JaWd0X2Fzc2VydF9sdGUo YnVmLT5zdHJpZGUsIDI1NioxMDI0KTsKPiA+ICsJaWd0X2Fzc2VydF9sdGUoYnVmLT5zdXJmYWNl WzBdLnN0cmlkZSwgMjU2KjEwMjQpOwo+ID4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX3dpZHRo KGJ1ZiksIDE2Mzg0KTsKPiA+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl9oZWlnaHQoYnVmKSwg MTYzODQpOwo+ID4gIAo+ID4gQEAgLTI1MCw3ICsyNTAsNyBAQCBnZW44X2JpbmRfYnVmKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gPiBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVm LAo+ID4gIAo+ID4gIAlzcy0+c3MyLmhlaWdodCA9IGlndF9idWZfaGVpZ2h0KGJ1ZikgLSAxOwo+ ID4gIAlzcy0+c3MyLndpZHRoICA9IGlndF9idWZfd2lkdGgoYnVmKSAtIDE7Cj4gPiAtCXNzLT5z czMucGl0Y2ggID0gYnVmLT5zdHJpZGUgLSAxOwo+ID4gKwlzcy0+c3MzLnBpdGNoICA9IGJ1Zi0+ c3VyZmFjZVswXS5zdHJpZGUgLSAxOwo+ID4gIAo+ID4gIAlzcy0+c3M3LnNrbC5zaGFkZXJfY2hh bmVsX3NlbGVjdF9yID0gNDsKPiA+ICAJc3MtPnNzNy5za2wuc2hhZGVyX2NoYW5lbF9zZWxlY3Rf ZyA9IDU7Cj4gPiBkaWZmIC0tZ2l0IGEvbGliL3JlbmRlcmNvcHlfaTgzMC5jIGIvbGliL3JlbmRl cmNvcHlfaTgzMC5jCj4gPiBpbmRleCBlOGMwNDcxOC4uY2E4MTUxMjIgMTAwNjQ0Cj4gPiAtLS0g YS9saWIvcmVuZGVyY29weV9pODMwLmMKPiA+ICsrKyBiL2xpYi9yZW5kZXJjb3B5X2k4MzAuYwo+ ID4gQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgdm9pZCBnZW4yX2VtaXRfdGFyZ2V0KHN0cnVj dAo+ID4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ID4gIAl1aW50MzJfdCB0aWxpbmc7Cj4g PiAgCXVpbnQzMl90IGZvcm1hdDsKPiA+ICAKPiA+IC0JaWd0X2Fzc2VydF9sdGUoZHN0LT5zdHJp ZGUsIDgxOTIpOwo+ID4gKwlpZ3RfYXNzZXJ0X2x0ZShkc3QtPnN1cmZhY2VbMF0uc3RyaWRlLCA4 MTkyKTsKPiA+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl93aWR0aChkc3QpLCAyMDQ4KTsKPiA+ ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl9oZWlnaHQoZHN0KSwgMjA0OCk7Cj4gPiAgCj4gPiBA QCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjJfZW1pdF90YXJnZXQoc3RydWN0Cj4g PiBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gPiAgCQl0aWxpbmcgfD0gQlVGXzNEX1RJTEVf V0FMS19ZOwo+ID4gIAo+ID4gIAlPVVRfQkFUQ0goXzNEU1RBVEVfQlVGX0lORk9fQ01EKTsKPiA+ IC0JT1VUX0JBVENIKEJVRl8zRF9JRF9DT0xPUl9CQUNLIHwgdGlsaW5nIHwgQlVGXzNEX1BJVENI KGRzdC0KPiA+ID5zdHJpZGUpKTsKPiA+ICsJT1VUX0JBVENIKEJVRl8zRF9JRF9DT0xPUl9CQUNL IHwgdGlsaW5nIHwgQlVGXzNEX1BJVENIKGRzdC0KPiA+ID5zdXJmYWNlWzBdLnN0cmlkZSkpOwo+ ID4gIAlPVVRfUkVMT0MoZHN0LT5ibywgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKPiA+IEk5MTVf R0VNX0RPTUFJTl9SRU5ERVIsIDApOwo+ID4gIAo+ID4gIAlPVVRfQkFUQ0goXzNEU1RBVEVfRFNU X0JVRl9WQVJTX0NNRCk7Cj4gPiBAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjJf ZW1pdF90ZXh0dXJlKHN0cnVjdAo+ID4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ID4gIAl1 aW50MzJfdCB0aWxpbmc7Cj4gPiAgCXVpbnQzMl90IGZvcm1hdDsKPiA+ICAKPiA+IC0JaWd0X2Fz c2VydF9sdGUoc3JjLT5zdHJpZGUsIDgxOTIpOwo+ID4gKwlpZ3RfYXNzZXJ0X2x0ZShzcmMtPnN1 cmZhY2VbMF0uc3RyaWRlLCA4MTkyKTsKPiA+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl93aWR0 aChzcmMpLCAyMDQ4KTsKPiA+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl9oZWlnaHQoc3JjKSwg MjA0OCk7Cj4gPiAgCj4gPiBAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjJfZW1p dF90ZXh0dXJlKHN0cnVjdAo+ID4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAo+ID4gIAlPVVRf QkFUQ0goKGlndF9idWZfaGVpZ2h0KHNyYykgLSAxKSA8PCBUTTBTMV9IRUlHSFRfU0hJRlQgfAo+ ID4gIAkJICAoaWd0X2J1Zl93aWR0aChzcmMpIC0gMSkgPDwgVE0wUzFfV0lEVEhfU0hJRlQgfAo+ ID4gIAkJICBmb3JtYXQgfCB0aWxpbmcpOwo+ID4gLQlPVVRfQkFUQ0goKHNyYy0+c3RyaWRlIC8g NCAtIDEpIDw8IFRNMFMyX1BJVENIX1NISUZUIHwKPiA+IFRNMFMyX01BUF8yRCk7Cj4gPiArCU9V VF9CQVRDSCgoc3JjLT5zdXJmYWNlWzBdLnN0cmlkZSAvIDQgLSAxKSA8PCBUTTBTMl9QSVRDSF9T SElGVAo+ID4gfCBUTTBTMl9NQVBfMkQpOwo+ID4gIAlPVVRfQkFUQ0goRklMVEVSX05FQVJFU1Qg PDwgVE0wUzNfTUFHX0ZJTFRFUl9TSElGVCB8Cj4gPiAgCQkgIEZJTFRFUl9ORUFSRVNUIDw8IFRN MFMzX01JTl9GSUxURVJfU0hJRlQgfAo+ID4gIAkJICBNSVBGSUxURVJfTk9ORSA8PCBUTTBTM19N SVBfRklMVEVSX1NISUZUKTsKPiA+IGRpZmYgLS1naXQgYS9saWIvcmVuZGVyY29weV9pOTE1LmMg Yi9saWIvcmVuZGVyY29weV9pOTE1LmMKPiA+IGluZGV4IDFiYWE3YTFiLi41NmUxODYzZSAxMDA2 NDQKPiA+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2k5MTUuYwo+ID4gKysrIGIvbGliL3JlbmRlcmNv cHlfaTkxNS5jCj4gPiBAQCAtODgsNyArODgsNyBAQCB2b2lkIGdlbjNfcmVuZGVyX2NvcHlmdW5j KHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlcgo+ID4gKmJhdGNoLAo+ID4gICNkZWZpbmUgVEVYX0NP VU5UIDEKPiA+ICAJCXVpbnQzMl90IGZvcm1hdF9iaXRzLCB0aWxpbmdfYml0cyA9IDA7Cj4gPiAg Cj4gPiAtCQlpZ3RfYXNzZXJ0X2x0ZShzcmMtPnN0cmlkZSwgODE5Mik7Cj4gPiArCQlpZ3RfYXNz ZXJ0X2x0ZShzcmMtPnN1cmZhY2VbMF0uc3RyaWRlLCA4MTkyKTsKPiA+ICAJCWlndF9hc3NlcnRf bHRlKGlndF9idWZfd2lkdGgoc3JjKSwgMjA0OCk7Cj4gPiAgCQlpZ3RfYXNzZXJ0X2x0ZShpZ3Rf YnVmX2hlaWdodChzcmMpLCAyMDQ4KTsKPiA+ICAKPiA+IEBAIC0xMTAsNyArMTEwLDcgQEAgdm9p ZCBnZW4zX3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QKPiA+IGludGVsX2JhdGNoYnVmZmVyICpiYXRj aCwKPiA+ICAJCU9VVF9CQVRDSChmb3JtYXRfYml0cyB8IHRpbGluZ19iaXRzIHwKPiA+ICAJCQkg IChpZ3RfYnVmX2hlaWdodChzcmMpIC0gMSkgPDwgTVMzX0hFSUdIVF9TSElGVAo+ID4gfAo+ID4g IAkJCSAgKGlndF9idWZfd2lkdGgoc3JjKSAtIDEpIDw8IE1TM19XSURUSF9TSElGVCk7Cj4gPiAt CQlPVVRfQkFUQ0goKHNyYy0+c3RyaWRlLzQtMSkgPDwgTVM0X1BJVENIX1NISUZUKTsKPiA+ICsJ CU9VVF9CQVRDSCgoc3JjLT5zdXJmYWNlWzBdLnN0cmlkZS80LTEpIDw8Cj4gPiBNUzRfUElUQ0hf U0hJRlQpOwo+ID4gIAo+ID4gIAkJT1VUX0JBVENIKF8zRFNUQVRFX1NBTVBMRVJfU1RBVEUgfCAo MyAqIFRFWF9DT1VOVCkpOwo+ID4gIAkJT1VUX0JBVENIKCgxIDw8IFRFWF9DT1VOVCkgLSAxKTsK PiA+IEBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBnZW4zX3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QK PiA+IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKPiA+ICAJCXVpbnQzMl90IHRpbGluZ19iaXRz ID0gMDsKPiA+ICAJCXVpbnQzMl90IGZvcm1hdF9iaXRzOwo+ID4gIAo+ID4gLQkJaWd0X2Fzc2Vy dF9sdGUoZHN0LT5zdHJpZGUsIDgxOTIpOwo+ID4gKwkJaWd0X2Fzc2VydF9sdGUoZHN0LT5zdXJm YWNlWzBdLnN0cmlkZSwgODE5Mik7Cj4gPiAgCQlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX3dpZHRo KGRzdCksIDIwNDgpOwo+ID4gIAkJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl9oZWlnaHQoZHN0KSwg MjA0OCk7Cj4gPiAgCj4gPiBAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgZ2VuM19yZW5kZXJfY29w eWZ1bmMoc3RydWN0Cj4gPiBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gPiAgCj4gPiAgCQlP VVRfQkFUQ0goXzNEU1RBVEVfQlVGX0lORk9fQ01EKTsKPiA+ICAJCU9VVF9CQVRDSChCVUZfM0Rf SURfQ09MT1JfQkFDSyB8IHRpbGluZ19iaXRzIHwKPiA+IC0JCQkgIEJVRl8zRF9QSVRDSChkc3Qt PnN0cmlkZSkpOwo+ID4gKwkJCSAgQlVGXzNEX1BJVENIKGRzdC0+c3VyZmFjZVswXS5zdHJpZGUp KTsKPiA+ICAJCU9VVF9SRUxPQyhkc3QtPmJvLCBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAo+ID4g STkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7Cj4gPiAgCj4gPiAgCQlPVVRfQkFUQ0goXzNEU1RB VEVfRFNUX0JVRl9WQVJTX0NNRCk7Cj4gPiBkaWZmIC0tZ2l0IGEvbGliL3ZlYm94Y29weV9nZW4x Mi5jIGIvbGliL3ZlYm94Y29weV9nZW4xMi5jCj4gPiBpbmRleCA4NzgwMDk0MS4uMmYwMTc1MTQg MTAwNjQ0Cj4gPiAtLS0gYS9saWIvdmVib3hjb3B5X2dlbjEyLmMKPiA+ICsrKyBiL2xpYi92ZWJv eGNvcHlfZ2VuMTIuYwo+ID4gQEAgLTI0OCwxMiArMjQ4LDE0IEBAIHZvaWQgZ2VuMTJfdmVib3hf Y29weWZ1bmMoc3RydWN0Cj4gPiBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCj4gPiAgCS8qIFRP RE86IGFkZCBzdXBwb3J0IGZvciBtb3JlIGZvcm1hdHMgKi8KPiA+ICAJaWd0X2Fzc2VydChzcmMt PmJwcCA9PSAzMik7Cj4gPiAgCWVtaXRfc3VyZmFjZV9zdGF0ZV9jbWQoYmF0Y2gsIFZFQk9YX1NV UkZBQ0VfSU5QVVQsCj4gPiAtCQkJICAgICAgIHdpZHRoLCBoZWlnaHQsIHNyYy0+YnBwLCBzcmMt PnN0cmlkZSwKPiA+ICsJCQkgICAgICAgd2lkdGgsIGhlaWdodCwgc3JjLT5icHAsCj4gPiArCQkJ ICAgICAgIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUsCj4gPiAgCQkJICAgICAgIHNyYy0+dGlsaW5n LCBSOEc4QjhBOF9VTk9STSk7Cj4gPiAgCj4gPiAgCWlndF9hc3NlcnQoZHN0LT5icHAgPT0gMzIp Owo+ID4gIAllbWl0X3N1cmZhY2Vfc3RhdGVfY21kKGJhdGNoLCBWRUJPWF9TVVJGQUNFX09VVFBV VCwKPiA+IC0JCQkgICAgICAgd2lkdGgsIGhlaWdodCwgZHN0LT5icHAsIGRzdC0+c3RyaWRlLAo+ ID4gKwkJCSAgICAgICB3aWR0aCwgaGVpZ2h0LCBkc3QtPmJwcCwKPiA+ICsJCQkgICAgICAgZHN0 LT5zdXJmYWNlWzBdLnN0cmlkZSwKPiA+ICAJCQkgICAgICAgZHN0LT50aWxpbmcsIFI4RzhCOEE4 X1VOT1JNKTsKPiA+ICAKPiA+ICAJZW1pdF90aWxpbmdfY29udmVydF9jbWQoYmF0Y2gsCj4gPiBk aWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYwo+ID4gYi90ZXN0cy9p OTE1L2dlbV9jb25jdXJyZW50X2FsbC5jCj4gPiBpbmRleCA2NDg2YmViZi4uZjFiZTRhODUgMTAw NjQ0Cj4gPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50X2FsbC5jCj4gPiArKysgYi90 ZXN0cy9pOTE1L2dlbV9jb25jdXJyZW50X2FsbC5jCj4gPiBAQCAtODUxLDE1ICs4NTEsMTcgQEAg c3RhdGljIHZvaWQgcmVuZGVyX2NvcHlfYm8oc3RydWN0IGJ1ZmZlcnMgKmIsCj4gPiBkcm1faW50 ZWxfYm8gKmRzdCwgZHJtX2ludGVsX2JvICpzCj4gPiAgewo+ID4gIAlzdHJ1Y3QgaWd0X2J1ZiBk ID0gewo+ID4gIAkJLmJvID0gZHN0LAo+ID4gLQkJLnNpemUgPSBiLT5ucGl4ZWxzICogNCwKPiA+ ICAJCS5udW1fdGlsZXMgPSBiLT5ucGl4ZWxzICogNCwKPiA+IC0JCS5zdHJpZGUgPSBiLT53aWR0 aCAqIDQsCj4gPiArCQkuc3VyZmFjZVswXSA9IHsKPiA+ICsJCQkuc2l6ZSA9IGItPm5waXhlbHMg KiA0LCAuc3RyaWRlID0gYi0+d2lkdGggKiA0LAo+ID4gKwkJfSwKPiA+ICAJCS5icHAgPSAzMiwK PiA+ICAJfSwgcyA9IHsKPiA+ICAJCS5ibyA9IHNyYywKPiA+IC0JCS5zaXplID0gYi0+bnBpeGVs cyAqIDQsCj4gPiAgCQkubnVtX3RpbGVzID0gYi0+bnBpeGVscyAqIDQsCj4gPiAtCQkuc3RyaWRl ID0gYi0+d2lkdGggKiA0LAo+ID4gKwkJLnN1cmZhY2VbMF0gPSB7Cj4gPiArCQkJLnNpemUgPSBi LT5ucGl4ZWxzICogNCwgLnN0cmlkZSA9IGItPndpZHRoICogNCwKPiA+ICsJCX0sCj4gPiAgCQku YnBwID0gMzIsCj4gPiAgCX07Cj4gPiAgCXVpbnQzMl90IHN3aXp6bGU7Cj4gPiBkaWZmIC0tZ2l0 IGEvdGVzdHMvaTkxNS9nZW1fZ3BncHVfZmlsbC5jCj4gPiBiL3Rlc3RzL2k5MTUvZ2VtX2dwZ3B1 X2ZpbGwuYwo+ID4gaW5kZXggNjg5MThjM2UuLmIyZDQwMWQ2IDEwMDY0NAo+ID4gLS0tIGEvdGVz dHMvaTkxNS9nZW1fZ3BncHVfZmlsbC5jCj4gPiArKysgYi90ZXN0cy9pOTE1L2dlbV9ncGdwdV9m aWxsLmMKPiA+IEBAIC03NSw5ICs3NSw5IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQo ZGF0YV90ICpkYXRhLCBzdHJ1Y3QKPiA+IGlndF9idWYgKmJ1ZiwKPiA+ICAJbWVtc2V0KGJ1Ziwg MCwgc2l6ZW9mKCpidWYpKTsKPiA+ICAKPiA+ICAJYnVmLT5ibyA9IGJvOwo+ID4gLQlidWYtPnN0 cmlkZSA9IHN0cmlkZTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IHN0cmlkZTsKPiA+ ICAJYnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwo+ID4gLQlidWYtPnNpemUgPSBTSVpF Owo+ID4gKwlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Cj4gPiAgCWJ1Zi0+YnBwID0gMzI7 Cj4gPiAgfQo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX21lZGlhX2ZpbGwu Ywo+ID4gYi90ZXN0cy9pOTE1L2dlbV9tZWRpYV9maWxsLmMKPiA+IGluZGV4IGE3ZDc3MDhjLi5j ODgwYmFlOSAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX21lZGlhX2ZpbGwuYwo+ID4g KysrIGIvdGVzdHMvaTkxNS9nZW1fbWVkaWFfZmlsbC5jCj4gPiBAQCAtNzgsOSArNzgsOSBAQCBz dGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0Cj4gPiBpZ3Rf YnVmICpidWYsCj4gPiAgCW1lbXNldChidWYsIDAsIHNpemVvZigqYnVmKSk7Cj4gPiAgCj4gPiAg CWJ1Zi0+Ym8gPSBibzsKPiA+IC0JYnVmLT5zdHJpZGUgPSBzdHJpZGU7Cj4gPiArCWJ1Zi0+c3Vy ZmFjZVswXS5zdHJpZGUgPSBzdHJpZGU7Cj4gPiAgCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdf Tk9ORTsKPiA+IC0JYnVmLT5zaXplID0gU0laRTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnNpemUg PSBTSVpFOwo+ID4gIAlidWYtPmJwcCA9IDMyOwo+ID4gIH0KPiA+ICAKPiA+IGRpZmYgLS1naXQg YS90ZXN0cy9pOTE1L2dlbV9tZWRpYV92bWUuYyBiL3Rlc3RzL2k5MTUvZ2VtX21lZGlhX3ZtZS5j Cj4gPiBpbmRleCBkNTA0NWFkMS4uMjBmNWNhMzUgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9pOTE1 L2dlbV9tZWRpYV92bWUuYwo+ID4gKysrIGIvdGVzdHMvaTkxNS9nZW1fbWVkaWFfdm1lLmMKPiA+ IEBAIC01OCw3ICs1OCw3IEBAIHNjcmF0Y2hfYnVmX2luaXQoZHJtX2ludGVsX2J1Zm1nciAqYnVm bWdyLAo+ID4gIAo+ID4gIAlidWYtPmJvID0gYm87Cj4gPiAgCWJ1Zi0+dGlsaW5nID0gSTkxNV9U SUxJTkdfTk9ORTsKPiA+IC0JYnVmLT5zaXplID0gc2l6ZTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBd LnNpemUgPSBzaXplOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9p bml0X3NyYyhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIHN0cnVjdAo+ID4gaWd0X2J1ZiAqYnVm KQo+ID4gQEAgLTcxLDE0ICs3MSwxNCBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0X3Ny Yyhkcm1faW50ZWxfYnVmbWdyCj4gPiAqYnVmbWdyLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQo+ID4g IAkgKiB3aXRoIHRoaXMgdm1lIGtlcm5lbC4KPiA+ICAJICovCj4gPiAgCj4gPiAtCWJ1Zi0+c3Ry aWRlID0gU1RSSURFOwo+ID4gKwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwo+ID4g IH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0X2RzdChkcm1faW50ZWxf YnVmbWdyICpidWZtZ3IsIHN0cnVjdAo+ID4gaWd0X2J1ZiAqYnVmKQo+ID4gIHsKPiA+ICAJc2Ny YXRjaF9idWZfaW5pdChidWZtZ3IsIGJ1ZiwgT1VUUFVUX1NJWkUpOwo+ID4gIAo+ID4gLQlidWYt PnN0cmlkZSA9IDE7Cj4gPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSAxOwo+ID4gIH0KPiA+ ICAKPiA+ICBzdGF0aWMgdWludDY0X3Qgc3dpdGNoX29mZl9uX2JpdHModWludDY0X3QgbWFzaywg dW5zaWduZWQgaW50IG4pCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcHBndHQuYyBi L3Rlc3RzL2k5MTUvZ2VtX3BwZ3R0LmMKPiA+IGluZGV4IDg5Y2RjNGRiLi40YzdkM2JhMiAxMDA2 NDQKPiA+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3BwZ3R0LmMKPiA+ICsrKyBiL3Rlc3RzL2k5MTUv Z2VtX3BwZ3R0LmMKPiA+IEBAIC03Myw5ICs3Myw5IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVm X2luaXQoc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICAJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpi dWYpKTsKPiA+ICAKPiA+ICAJYnVmLT5ibyA9IGNyZWF0ZV9ibyhidWZtZ3IsIHBpeGVsKTsKPiA+ IC0JYnVmLT5zdHJpZGUgPSBTVFJJREU7Cj4gPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBT VFJJREU7Cj4gPiAgCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKPiA+IC0JYnVmLT5z aXplID0gU0laRTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwo+ID4gIAlidWYt PmJwcCA9IDMyOwo+ID4gIH0KPiA+ICAKPiA+IEBAIC0xNDAsOSArMTQwLDkgQEAgc3RhdGljIHZv aWQgZm9ya19yY3NfY29weShpbnQgdGltZW91dCwgdWludDMyX3QKPiA+IGZpbmFsLAo+ID4gIAkJ fQo+ID4gIAo+ID4gIAkJYnVmLmJvID0gZHN0W2NoaWxkXTsKPiA+IC0JCWJ1Zi5zdHJpZGUgPSBT VFJJREU7Cj4gPiArCQlidWYuc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7Cj4gPiAgCQlidWYu dGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKPiA+IC0JCWJ1Zi5zaXplID0gU0laRTsKPiA+ICsJ CWJ1Zi5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwo+ID4gIAkJYnVmLmJwcCA9IDMyOwo+ID4gIAo+ ID4gIAkJaSA9IDA7Cj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVhZF9yZWFkX3Nw ZWVkLmMKPiA+IGIvdGVzdHMvaTkxNS9nZW1fcmVhZF9yZWFkX3NwZWVkLmMKPiA+IGluZGV4IDhi NWJhOGY3Li4yYWFiMjIwNCAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlYWRfcmVh ZF9zcGVlZC5jCj4gPiArKysgYi90ZXN0cy9pOTE1L2dlbV9yZWFkX3JlYWRfc3BlZWQuYwo+ID4g QEAgLTUzLDE1ICs1MywxNyBAQCBzdGF0aWMgZHJtX2ludGVsX2JvICpyY3NfY29weV9ibyhkcm1f aW50ZWxfYm8KPiA+ICpkc3QsIGRybV9pbnRlbF9ibyAqc3JjKQo+ID4gIHsKPiA+ICAJc3RydWN0 IGlndF9idWYgZCA9IHsKPiA+ICAJCS5ibyA9IGRzdCwKPiA+IC0JCS5zaXplID0gd2lkdGggKiBo ZWlnaHQgKiA0LAo+ID4gIAkJLm51bV90aWxlcyA9IHdpZHRoICogaGVpZ2h0ICogNCwKPiA+IC0J CS5zdHJpZGUgPSB3aWR0aCAqIDQsCj4gPiArCQkuc3VyZmFjZVswXSA9IHsKPiA+ICsJCQkuc2l6 ZSA9IHdpZHRoICogaGVpZ2h0ICogNCwgLnN0cmlkZSA9IHdpZHRoICoKPiA+IDQsCj4gPiArCQl9 LAo+ID4gIAkJLmJwcCA9IDMyLAo+ID4gIAl9LCBzID0gewo+ID4gIAkJLmJvID0gc3JjLAo+ID4g LQkJLnNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQsCj4gPiAgCQkubnVtX3RpbGVzID0gd2lkdGgg KiBoZWlnaHQgKiA0LAo+ID4gLQkJLnN0cmlkZSA9IHdpZHRoICogNCwKPiA+ICsJCS5zdXJmYWNl WzBdID0gewo+ID4gKwkJCS5zaXplID0gd2lkdGggKiBoZWlnaHQgKiA0LCAuc3RyaWRlID0gd2lk dGggKgo+ID4gNCwKPiA+ICsJCX0sCj4gPiAgCQkuYnBwID0gMzIsCj4gPiAgCX07Cj4gPiAgCXVp bnQzMl90IHN3aXp6bGU7Cj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2Nv cHkuYwo+ID4gYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCj4gPiBpbmRleCBkZjBkMDQ1 ZS4uNWFiYjIwMzYgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5j Cj4gPiArKysgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCj4gPiBAQCAtMTE4LDcgKzEx OCw4IEBAIHN0YXRpYyB2b2lkIGNvcHlfbGluZWFyX3RvX3lmKGRhdGFfdCAqZGF0YSwKPiA+IHN0 cnVjdCBpZ3RfYnVmICpidWYsCj4gPiAgCWZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5Kysp IHsKPiA+ICAJCWZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewo+ID4gIAkJCXVpbnQz Ml90ICpwdHIgPSB5Zl9wdHIobWFwLCB4LCB5LAo+ID4gLQkJCQkJICAgICAgIGJ1Zi0+c3RyaWRl LCBidWYtPmJwcCAvCj4gPiA4KTsKPiA+ICsJCQkJCSAgICAgICBidWYtPnN1cmZhY2VbMF0uc3Ry aWRlLAo+ID4gKwkJCQkJICAgICAgIGJ1Zi0+YnBwIC8gOCk7Cj4gPiAgCj4gPiAgCQkJKnB0ciA9 IGxpbmVhclt5ICogd2lkdGggKyB4XTsKPiA+ICAJCX0KPiA+IEBAIC0xNDIsNyArMTQzLDggQEAg c3RhdGljIHZvaWQgY29weV95Zl90b19saW5lYXIoZGF0YV90ICpkYXRhLAo+ID4gc3RydWN0IGln dF9idWYgKmJ1ZiwKPiA+ICAJZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgewo+ID4g IAkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Cj4gPiAgCQkJdWludDMyX3QgKnB0 ciA9IHlmX3B0cihtYXAsIHgsIHksCj4gPiAtCQkJCQkgICAgICAgYnVmLT5zdHJpZGUsIGJ1Zi0+ YnBwIC8KPiA+IDgpOwo+ID4gKwkJCQkJICAgICAgIGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUsCj4g PiArCQkJCQkgICAgICAgYnVmLT5icHAgLyA4KTsKPiA+ICAKPiA+ICAJCQlsaW5lYXJbeSAqIHdp ZHRoICsgeF0gPSAqcHRyOwo+ID4gIAkJfQo+ID4gQEAgLTIzMSw3ICsyMzMsNyBAQCBzdGF0aWMg dm9pZCBzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YV90Cj4gPiAqZGF0YSwgc3RydWN0IGln dF9idWYgKmJ1ZiwKPiA+ICAJCQkJCQkgICAgICBDQUlST19GT1JNQVRfUkdCMgo+ID4gNCwKPiA+ ICAJCQkJCQkgICAgICBpZ3RfYnVmX3dpZHRoKGJ1Zgo+ID4gKSwKPiA+ICAJCQkJCQkgICAgICBp Z3RfYnVmX2hlaWdodChidQo+ID4gZiksCj4gPiAtCQkJCQkJICAgICAgYnVmLT5zdHJpZGUpOwo+ ID4gKwkJCQkJCSAgICAgIGJ1Zi0KPiA+ID5zdXJmYWNlWzBdLnN0cmlkZSk7Cj4gPiAgCXJldCA9 IGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nKHN1cmZhY2UsCj4gPiBtYWtlX2ZpbGVuYW1lKGZp bGVuYW1lKSk7Cj4gPiAgCWlndF9hc3NlcnQocmV0ID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsK PiA+ICAJY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOwo+ID4gQEAgLTMyNCw3ICszMjYs NyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90Cj4gPiAqZGF0 YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+ICAJCQkJCQkgICAgICBDQUlST19GT1JNQVRfUkdC Mgo+ID4gNCwKPiA+ICAJCQkJCQkgICAgICBpZ3RfYnVmX3dpZHRoKGJ1Zgo+ID4gKSwKPiA+ICAJ CQkJCQkgICAgICBpZ3RfYnVmX2hlaWdodChidQo+ID4gZiksCj4gPiAtCQkJCQkJICAgICAgYnVm LT5zdHJpZGUpOwo+ID4gKwkJCQkJCSAgICAgIGJ1Zi0KPiA+ID5zdXJmYWNlWzBdLnN0cmlkZSk7 Cj4gPiAgCj4gPiAgCWNyID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwo+ID4gIAo+ID4gQEAgLTQw Myw3ICs0MDUsNyBAQCBzY3JhdGNoX2J1Zl9jb3B5KGRhdGFfdCAqZGF0YSwKPiA+ICAJCWZvciAo aW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Cj4gPiAgCQkJZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4 KyspIHsKPiA+ICAJCQkJY29uc3QgdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAsIHN4K3gsCj4g PiBzeSt5LAo+ID4gLQkJCQkJCQkgICAgIHNyYy0KPiA+ID5zdHJpZGUsCj4gPiArCQkJCQkJCSAg ICAgc3JjLQo+ID4gPnN1cmZhY2VbMF0uc3RyaWRlLAo+ID4gIAkJCQkJCQkgICAgIHNyYy0+YnBw IC8KPiA+IDgpOwo+ID4gIAo+ID4gIAkJCQlsaW5lYXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHgr eF0gPQo+ID4gKnB0cjsKPiA+IEBAIC00NTgsMTQgKzQ2MCwxNCBAQCBzdGF0aWMgdm9pZCBzY3Jh dGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwKPiA+IHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gPiAg CQkgKiB0dXJuIG1hcHBlZCBieSBvbmUgTDEgQVVYIHBhZ2UgdGFibGUgZW50cnkuCj4gPiAgCQkg Ki8KPiA+ICAJCWlmIChpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpID49IDEyKQo+ID4gLQkJCWJ1Zi0+ c3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEyOCAqCj4gPiA0KTsKPiA+ICsJCQli dWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8KPiA+IDgpLCAxMjgg KiA0KTsKPiA+ICAJCWVsc2UKPiA+IC0JCQlidWYtPnN0cmlkZSA9IEFMSUdOKHdpZHRoICogKGJw cCAvIDgpLCAxMjgpOwo+ID4gKwkJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBBTElHTih3aWR0 aCAqIChicHAgLwo+ID4gOCksIDEyOCk7Cj4gPiAgCj4gPiAgCQlpZiAoaW50ZWxfZ2VuKGRhdGEt PmRldmlkKSA+PSAxMikKPiA+ICAJCQloZWlnaHQgPSBBTElHTihoZWlnaHQsIDQgKiAzMik7Cj4g PiAgCj4gPiAtCQlidWYtPnNpemUgPSBidWYtPnN0cmlkZSAqIGhlaWdodDsKPiA+ICsJCWJ1Zi0+ c3VyZmFjZVswXS5zaXplID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAqIGhlaWdodDsKPiA+ICAJ CWJ1Zi0+dGlsaW5nID0gdGlsaW5nOwo+ID4gIAkJYnVmLT5icHAgPSBicHA7Cj4gPiAgCj4gPiBA QCAtNDczLDcgKzQ3NSw3IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpk YXRhLCBzdHJ1Y3QKPiA+IGlndF9idWYgKmJ1ZiwKPiA+ICAJCWF1eF9oZWlnaHQgPSBzY3JhdGNo X2J1Zl9hdXhfaGVpZ2h0KGRhdGEtPmRldmlkLCBidWYpOwo+ID4gIAo+ID4gIAkJYnVmLT5jb21w cmVzc2lvbiA9IGNvbXByZXNzaW9uOwo+ID4gLQkJYnVmLT5jY3NbMF0ub2Zmc2V0ID0gYnVmLT5z dHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsKPiA+ICsJCWJ1Zi0+Y2NzWzBdLm9mZnNldCA9IGJ1 Zi0+c3VyZmFjZVswXS5zdHJpZGUgKgo+ID4gQUxJR04oaGVpZ2h0LCAzMik7Cj4gPiAgCQlidWYt PmNjc1swXS5zdHJpZGUgPSBhdXhfd2lkdGg7Cj4gPiAgCj4gPiAgCQlzaXplID0gYnVmLT5jY3Nb MF0ub2Zmc2V0ICsgYXV4X3dpZHRoICogYXV4X2hlaWdodDsKPiA+IEBAIC00ODEsMTggKzQ4Mywx OSBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwKPiA+IHN0cnVj dCBpZ3RfYnVmICpidWYsCj4gPiAgCQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGRhdGEt PmJ1Zm1nciwgIiIsIHNpemUsCj4gPiA0MDk2KTsKPiA+ICAKPiA+ICAJCWlmICh0aWxpbmcgPT0g STkxNV9USUxJTkdfWSkgewo+ID4gLQkJCWRybV9pbnRlbF9ib19zZXRfdGlsaW5nKGJ1Zi0+Ym8s ICZ0aWxpbmcsIGJ1Zi0KPiA+ID5zdHJpZGUpOwo+ID4gKwkJCWRybV9pbnRlbF9ib19zZXRfdGls aW5nKGJ1Zi0+Ym8sICZ0aWxpbmcsCj4gPiArCQkJCQkJYnVmLQo+ID4gPnN1cmZhY2VbMF0uc3Ry aWRlKTsKPiA+ICAJCQlpZ3RfYXNzZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7Cj4gPiAgCQl9 Cj4gPiAgCX0gZWxzZSBpZiAocmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZikgewo+ID4gIAkJ aW50IHNpemU7Cj4gPiAgCj4gPiAtCQlidWYtPnN0cmlkZSA9IEFMSUdOKHdpZHRoICogKGJwcCAv IDgpLCAxMjgpOwo+ID4gLQkJYnVmLT5zaXplID0gYnVmLT5zdHJpZGUgKiBoZWlnaHQ7Cj4gPiAr CQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEyOCk7 Cj4gPiArCQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgKiBo ZWlnaHQ7Cj4gPiAgCQlidWYtPnRpbGluZyA9IHRpbGluZzsKPiA+ICAJCWJ1Zi0+YnBwID0gYnBw Owo+ID4gIAo+ID4gLQkJc2l6ZSA9IGJ1Zi0+c3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7Cj4g PiArCQlzaXplID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAqIEFMSUdOKGhlaWdodCwgMzIpOwo+ ID4gIAo+ID4gIAkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhkYXRhLT5idWZtZ3IsICIi LCBzaXplLAo+ID4gNDA5Nik7Cj4gPiAgCX0gZWxzZSB7Cj4gPiBAQCAtNTAxLDkgKzUwNCw5IEBA IHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QKPiA+IGln dF9idWYgKmJ1ZiwKPiA+ICAJCQkJCQkgICAmdGlsaW5nLCAmcGl0Y2gsIDApOwo+ID4gIAkJaWd0 X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxpbmcpOwo+ID4gIAo+ID4gLQkJYnVmLT5zdHJpZGUg PSBwaXRjaDsKPiA+ICsJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBwaXRjaDsKPiA+ICAJCWJ1 Zi0+dGlsaW5nID0gdGlsaW5nOwo+ID4gLQkJYnVmLT5zaXplID0gcGl0Y2ggKiBoZWlnaHQ7Cj4g PiArCQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IHBpdGNoICogaGVpZ2h0Owo+ID4gIAkJYnVmLT5i cHAgPSBicHA7Cj4gPiAgCX0KPiA+ICAKPiA+IEBAIC04MDYsNyArODA5LDcgQEAgc3RhdGljIHZv aWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90Cj4gPiBzcmNfdGlsaW5nLCB1aW50MzJfdCBk c3RfdGlsaW5nLAo+ID4gIAkJCQkJICAgICAgMCwgMCwKPiA+IGlndF9idWZfd2lkdGgoJmRzdCks Cj4gPiAgCQkJCQkgICAgICBpZ3RfYnVmX2hlaWdodCgmZHN0KSwKPiA+ICAJCQkJCSAgICAgIEFV Ql9EVU1QX0JNUF9GT1JNQVRfQVJHQl8KPiA+IDg4ODgsCj4gPiAtCQkJCQkgICAgICBkc3Quc3Ry aWRlLCAwKTsKPiA+ICsJCQkJCSAgICAgIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSwKPiA+IDApOwo+ ID4gIAkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9kdW1wKGRhdGEtPmJ1Zm1nciwgZmFs c2UpOwo+ID4gIAl9IGVsc2UgaWYgKGNoZWNrX2FsbF9waXhlbHMpIHsKPiA+ICAJCXNjcmF0Y2hf YnVmX2NoZWNrX2FsbChkYXRhLCAmZHN0LCAmcmVmKTsKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2dlbV9yZW5kZXJfY29weV9yZWR1eC5jCj4gPiBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9j b3B5X3JlZHV4LmMKPiA+IGluZGV4IGVmNjAxYzIyLi4yMzg4ZmMyNCAxMDA2NDQKPiA+IC0tLSBh L3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5X3JlZHV4LmMKPiA+ICsrKyBiL3Rlc3RzL2k5MTUv Z2VtX3JlbmRlcl9jb3B5X3JlZHV4LmMKPiA+IEBAIC0xMDYsOSArMTA2LDkgQEAgc3RhdGljIHZv aWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdAo+ID4gaWd0X2J1ZiAqYnVm LAo+ID4gIAltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwo+ID4gIAo+ID4gIAlidWYtPmJv ID0gYm87Cj4gPiAtCWJ1Zi0+c3RyaWRlID0gc3RyaWRlOwo+ID4gKwlidWYtPnN1cmZhY2VbMF0u c3RyaWRlID0gc3RyaWRlOwo+ID4gIAlidWYtPnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Cj4g PiAtCWJ1Zi0+c2l6ZSA9IFNJWkU7Cj4gPiArCWJ1Zi0+c3VyZmFjZVswXS5zaXplID0gU0laRTsK PiA+ICAJYnVmLT5icHAgPSAzMjsKPiA+ICB9Cj4gPiAgCj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fcmVuZGVyX2xpbmVhcl9ibGl0cy5jCj4gPiBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRl cl9saW5lYXJfYmxpdHMuYwo+ID4gaW5kZXggYTcyNjY1MmIuLjY2NmE0M2NkIDEwMDY0NAo+ID4g LS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2xpbmVhcl9ibGl0cy5jCj4gPiArKysgYi90ZXN0 cy9pOTE1L2dlbV9yZW5kZXJfbGluZWFyX2JsaXRzLmMKPiA+IEBAIC0xMDgsMTUgKzEwOCwxNSBA QCBzdGF0aWMgdm9pZCBydW5fdGVzdCAoaW50IGZkLCBpbnQgY291bnQpCj4gPiAgCQlzdHJ1Y3Qg aWd0X2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307Cj4gPiAgCj4gPiAgCQlzcmMuYm8gPSBib1tpICUg Y291bnRdOwo+ID4gLQkJc3JjLnN0cmlkZSA9IFNUUklERTsKPiA+ICsJCXNyYy5zdXJmYWNlWzBd LnN0cmlkZSA9IFNUUklERTsKPiA+ICAJCXNyYy50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwo+ ID4gLQkJc3JjLnNpemUgPSBTSVpFOwo+ID4gKwkJc3JjLnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7 Cj4gPiAgCQlzcmMuYnBwID0gMzI7Cj4gPiAgCj4gPiAgCQlkc3QuYm8gPSBib1soaSArIDEpICUg Y291bnRdOwo+ID4gLQkJZHN0LnN0cmlkZSA9IFNUUklERTsKPiA+ICsJCWRzdC5zdXJmYWNlWzBd LnN0cmlkZSA9IFNUUklERTsKPiA+ICAJCWRzdC50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwo+ ID4gLQkJZHN0LnNpemUgPSBTSVpFOwo+ID4gKwkJZHN0LnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7 Cj4gPiAgCQlkc3QuYnBwID0gMzI7Cj4gPiAgCj4gPiAgCQlyZW5kZXJfY29weShiYXRjaCwgTlVM TCwgJnNyYywgMCwgMCwgV0lEVEgsIEhFSUdIVCwKPiA+ICZkc3QsIDAsIDApOwo+ID4gQEAgLTEz MywxNSArMTMzLDE1IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0IChpbnQgZmQsIGludCBjb3VudCkK PiA+ICAJCXN0cnVjdCBpZ3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKPiA+ICAKPiA+ICAJCXNy Yy5ibyA9IGJvWyhpICsgMSkgJSBjb3VudF07Cj4gPiAtCQlzcmMuc3RyaWRlID0gU1RSSURFOwo+ ID4gKwkJc3JjLnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwo+ID4gIAkJc3JjLnRpbGluZyA9 IEk5MTVfVElMSU5HX05PTkU7Cj4gPiAtCQlzcmMuc2l6ZSA9IFNJWkU7Cj4gPiArCQlzcmMuc3Vy ZmFjZVswXS5zaXplID0gU0laRTsKPiA+ICAJCXNyYy5icHAgPSAzMjsKPiA+ICAKPiA+ICAJCWRz dC5ibyA9IGJvW2kgJSBjb3VudF07Cj4gPiAtCQlkc3Quc3RyaWRlID0gU1RSSURFOwo+ID4gKwkJ ZHN0LnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOwo+ID4gIAkJZHN0LnRpbGluZyA9IEk5MTVf VElMSU5HX05PTkU7Cj4gPiAtCQlkc3Quc2l6ZSA9IFNJWkU7Cj4gPiArCQlkc3Quc3VyZmFjZVsw XS5zaXplID0gU0laRTsKPiA+ICAJCWRzdC5icHAgPSAzMjsKPiA+ICAKPiA+ICAJCXJlbmRlcl9j b3B5KGJhdGNoLCBOVUxMLCAmc3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULAo+ID4gJmRzdCwgMCwg MCk7Cj4gPiBAQCAtMTYwLDE1ICsxNjAsMTUgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QgKGludCBm ZCwgaW50IGNvdW50KQo+ID4gIAkJCWNvbnRpbnVlOwo+ID4gIAo+ID4gIAkJc3JjLmJvID0gYm9b c107Cj4gPiAtCQlzcmMuc3RyaWRlID0gU1RSSURFOwo+ID4gKwkJc3JjLnN1cmZhY2VbMF0uc3Ry aWRlID0gU1RSSURFOwo+ID4gIAkJc3JjLnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Cj4gPiAt CQlzcmMuc2l6ZSA9IFNJWkU7Cj4gPiArCQlzcmMuc3VyZmFjZVswXS5zaXplID0gU0laRTsKPiA+ ICAJCXNyYy5icHAgPSAzMjsKPiA+ICAKPiA+ICAJCWRzdC5ibyA9IGJvW2RdOwo+ID4gLQkJZHN0 LnN0cmlkZSA9IFNUUklERTsKPiA+ICsJCWRzdC5zdXJmYWNlWzBdLnN0cmlkZSA9IFNUUklERTsK PiA+ICAJCWRzdC50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwo+ID4gLQkJZHN0LnNpemUgPSBT SVpFOwo+ID4gKwkJZHN0LnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Cj4gPiAgCQlkc3QuYnBwID0g MzI7Cj4gPiAgCj4gPiAgCQlyZW5kZXJfY29weShiYXRjaCwgTlVMTCwgJnNyYywgMCwgMCwgV0lE VEgsIEhFSUdIVCwKPiA+ICZkc3QsIDAsIDApOwo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUv Z2VtX3JlbmRlcl90aWxlZF9ibGl0cy5jCj4gPiBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl90aWxl ZF9ibGl0cy5jCj4gPiBpbmRleCAxNDAxODMyOS4uMWRlMWI3MmMgMTAwNjQ0Cj4gPiAtLS0gYS90 ZXN0cy9pOTE1L2dlbV9yZW5kZXJfdGlsZWRfYmxpdHMuYwo+ID4gKysrIGIvdGVzdHMvaTkxNS9n ZW1fcmVuZGVyX3RpbGVkX2JsaXRzLmMKPiA+IEBAIC02Niw5ICs2Niw5IEBAIGNoZWNrX2JvKHN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHN0cnVjdAo+ID4gaWd0X2J1ZiAqYnVmLCB1 aW50MzJfdCB2YWwpCj4gPiAgCWludCBpOwo+ID4gIAo+ID4gIAl0bXAuYm8gPSBsaW5lYXI7Cj4g PiAtCXRtcC5zdHJpZGUgPSBTVFJJREU7Cj4gPiArCXRtcC5zdXJmYWNlWzBdLnN0cmlkZSA9IFNU UklERTsKPiA+ICAJdG1wLnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Cj4gPiAtCXRtcC5zaXpl ID0gU0laRTsKPiA+ICsJdG1wLnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Cj4gPiAgCXRtcC5icHAg PSAzMjsKPiA+ICAKPiA+ICAJcmVuZGVyX2NvcHkoYmF0Y2gsIE5VTEwsIGJ1ZiwgMCwgMCwgV0lE VEgsIEhFSUdIVCwgJnRtcCwgMCwgMCk7Cj4gPiBAQCAtMTMyLDkgKzEzMiw5IEBAIHN0YXRpYyB2 b2lkIHJ1bl90ZXN0IChpbnQgZmQsIGludCBjb3VudCkKPiA+ICAJCWJ1ZltpXS5ibyA9IGRybV9p bnRlbF9ib19hbGxvY190aWxlZChidWZtZ3IsICIiLAo+ID4gIAkJCQkJCSAgICAgV0lEVEgsIEhF SUdIVCwgNCwKPiA+ICAJCQkJCQkgICAgICZ0aWxpbmcsICZwaXRjaCwKPiA+IDApOwo+ID4gLQkJ YnVmW2ldLnN0cmlkZSA9IHBpdGNoOwo+ID4gKwkJYnVmW2ldLnN1cmZhY2VbMF0uc3RyaWRlID0g cGl0Y2g7Cj4gPiAgCQlidWZbaV0udGlsaW5nID0gdGlsaW5nOwo+ID4gLQkJYnVmW2ldLnNpemUg PSBTSVpFOwo+ID4gKwkJYnVmW2ldLnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Cj4gPiAgCQlidWZb aV0uYnBwID0gMzI7Cj4gPiAgCj4gPiAgCQlzdGFydF92YWxbaV0gPSBzdGFydDsKPiA+IGRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yaW5nX3N5bmNfY29weS5jCj4gPiBiL3Rlc3RzL2k5MTUv Z2VtX3Jpbmdfc3luY19jb3B5LmMKPiA+IGluZGV4IDFlNTcyOGJjLi5kZGY1Zjc1MCAxMDA2NDQK PiA+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3Jpbmdfc3luY19jb3B5LmMKPiA+ICsrKyBiL3Rlc3Rz L2k5MTUvZ2VtX3Jpbmdfc3luY19jb3B5LmMKPiA+IEBAIC0xMzQsOSArMTM0LDkgQEAgc3RhdGlj IHZvaWQgc2NyYXRjaF9idWZfaW5pdF9mcm9tX2JvKHN0cnVjdAo+ID4gaWd0X2J1ZiAqYnVmLCBk cm1faW50ZWxfYm8gKmJvKQo+ID4gIAltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwo+ID4g IAo+ID4gIAlidWYtPmJvID0gYm87Cj4gPiAtCWJ1Zi0+c3RyaWRlID0gNCAqIFdJRFRIOwo+ID4g KwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gNCAqIFdJRFRIOwo+ID4gIAlidWYtPnRpbGluZyA9 IEk5MTVfVElMSU5HX05PTkU7Cj4gPiAtCWJ1Zi0+c2l6ZSA9IDQgKiBXSURUSCAqIEhFSUdIVDsK PiA+ICsJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSA0ICogV0lEVEggKiBIRUlHSFQ7Cj4gPiAgCWJ1 Zi0+YnBwID0gMzI7Cj4gPiAgfQo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2Vt X3N0cmVzcy5jIGIvdGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMKPiA+IGluZGV4IDU3ZTI5MDljLi41 MDI0NWI5MyAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3N0cmVzcy5jCj4gPiArKysg Yi90ZXN0cy9pOTE1L2dlbV9zdHJlc3MuYwo+ID4gQEAgLTE1NSw4ICsxNTUsOCBAQCBzdHJ1Y3Qg ewo+ID4gIHN0YXRpYyB2b2lkIHRpbGUyeHkoc3RydWN0IGlndF9idWYgKmJ1ZiwgdW5zaWduZWQg dGlsZSwgdW5zaWduZWQgKngsCj4gPiB1bnNpZ25lZCAqeSkKPiA+ICB7Cj4gPiAgCWlndF9hc3Nl cnQodGlsZSA8IGJ1Zi0+bnVtX3RpbGVzKTsKPiA+IC0JKnggPSAodGlsZSpvcHRpb25zLnRpbGVf c2l6ZSkgJSAoYnVmLT5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSk7Cj4gPiAtCSp5ID0gKCh0aWxl Km9wdGlvbnMudGlsZV9zaXplKSAvIChidWYtCj4gPiA+c3RyaWRlL3NpemVvZih1aW50MzJfdCkp KSAqIG9wdGlvbnMudGlsZV9zaXplOwo+ID4gKwkqeCA9ICh0aWxlKm9wdGlvbnMudGlsZV9zaXpl KSAlIChidWYtCj4gPiA+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSk7Cj4gPiAr CSp5ID0gKCh0aWxlKm9wdGlvbnMudGlsZV9zaXplKSAvIChidWYtCj4gPiA+c3VyZmFjZVswXS5z dHJpZGUvc2l6ZW9mKHVpbnQzMl90KSkpICogb3B0aW9ucy50aWxlX3NpemU7Cj4gPiAgfQo+ID4g IAo+ID4gIHN0YXRpYyB2b2lkIGVtaXRfYmx0KGRybV9pbnRlbF9ibyAqc3JjX2JvLCB1aW50MzJf dCBzcmNfdGlsaW5nLAo+ID4gdW5zaWduZWQgc3JjX3BpdGNoLAo+ID4gQEAgLTI2OCw4ICsyNjgs MTAgQEAgc3RhdGljIHZvaWQgY3B1X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsCj4gPiB1 bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCj4gPiAgCQlzZXRfdG9fY3B1X2RvbWFpbihk c3QsIDEpOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLT5zdHJp ZGUvc2l6ZW9mKHVpbnQzMl90KSwgc3JjX3gsIHNyY195LAo+ID4gLQkJIGRzdC0+ZGF0YSwgZHN0 LT5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwgZHN0X3gsIGRzdF95LAo+ID4gKwljcHVjcHkyZChz cmMtPmRhdGEsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwKPiA+IHNy Y194LAo+ID4gKwkJIHNyY195LAo+ID4gKwkJIGRzdC0+ZGF0YSwgZHN0LT5zdXJmYWNlWzBdLnN0 cmlkZS9zaXplb2YodWludDMyX3QpLAo+ID4gZHN0X3gsCj4gPiArCQkgZHN0X3ksCj4gPiAgCQkg bG9naWNhbF90aWxlX25vKTsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAtMjg3LDcgKzI4OSw3IEBAIHN0 YXRpYyB2b2lkIHByd19jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAqc3JjLAo+ID4gdW5zaWduZWQg c3JjX3gsIHVuc2lnbmVkIHNyY195LAo+ID4gIAo+ID4gIAlpZiAoc3JjLT50aWxpbmcgPT0gSTkx NV9USUxJTkdfTk9ORSkgewo+ID4gIAkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXpl OyBpKyspIHsKPiA+IC0JCQl1bnNpZ25lZCBvZnMgPSBzcmNfeCpzaXplb2YodWludDMyX3QpICsg c3JjLQo+ID4gPnN0cmlkZSooc3JjX3kgKyBpKTsKPiA+ICsJCQl1bnNpZ25lZCBvZnMgPSBzcmNf eCpzaXplb2YodWludDMyX3QpICsgc3JjLQo+ID4gPnN1cmZhY2VbMF0uc3RyaWRlKihzcmNfeSAr IGkpOwo+ID4gIAkJCWRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShzcmMtPmJvLCBvZnMsCj4gPiAg CQkJCQkJIG9wdGlvbnMudGlsZV9zaXplKnNpemUKPiA+IG9mKHVpbnQzMl90KSwKPiA+ICAJCQkJ CQkgdG1wX3RpbGUgKwo+ID4gb3B0aW9ucy50aWxlX3NpemUqaSk7Cj4gPiBAQCAtMjk2LDEzICsy OTgsMTQgQEAgc3RhdGljIHZvaWQgcHJ3X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsCj4g PiB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCj4gPiAgCQlpZiAob3B0aW9ucy51c2Vf Y3B1X21hcHMpCj4gPiAgCQkJc2V0X3RvX2NwdV9kb21haW4oc3JjLCAwKTsKPiA+ICAKPiA+IC0J CWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLT5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwKPiA+IHNy Y194LCBzcmNfeSwKPiA+ICsJCWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLQo+ID4gPnN1cmZhY2Vb MF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksCj4gPiArCQkJIHNyY194LCBzcmNfeSwKPiA+ICAJ CQkgdG1wX3RpbGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLAo+ID4gbG9naWNhbF90aWxlX25v KTsKPiA+ICAJfQo+ID4gIAo+ID4gIAlpZiAoZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfTk9O RSkgewo+ID4gIAkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspIHsKPiA+ IC0JCQl1bnNpZ25lZCBvZnMgPSBkc3RfeCpzaXplb2YodWludDMyX3QpICsgZHN0LQo+ID4gPnN0 cmlkZSooZHN0X3kgKyBpKTsKPiA+ICsJCQl1bnNpZ25lZCBvZnMgPSBkc3RfeCpzaXplb2YodWlu dDMyX3QpICsgZHN0LQo+ID4gPnN1cmZhY2VbMF0uc3RyaWRlKihkc3RfeSArIGkpOwo+ID4gIAkJ CWRybV9pbnRlbF9ib19zdWJkYXRhKGRzdC0+Ym8sIG9mcywKPiA+ICAJCQkJCSAgICAgb3B0aW9u cy50aWxlX3NpemUqc2l6ZW9mKHUKPiA+IGludDMyX3QpLAo+ID4gIAkJCQkJICAgICB0bXBfdGls ZSArCj4gPiBvcHRpb25zLnRpbGVfc2l6ZSppKTsKPiA+IEBAIC0zMTIsNyArMzE1LDggQEAgc3Rh dGljIHZvaWQgcHJ3X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsCj4gPiB1bnNpZ25lZCBz cmNfeCwgdW5zaWduZWQgc3JjX3ksCj4gPiAgCQkJc2V0X3RvX2NwdV9kb21haW4oZHN0LCAxKTsK PiA+ICAKPiA+ICAJCWNwdWNweTJkKHRtcF90aWxlLCBvcHRpb25zLnRpbGVfc2l6ZSwgMCwgMCwK PiA+IC0JCQkgZHN0LT5kYXRhLCBkc3QtPnN0cmlkZS9zaXplb2YodWludDMyX3QpLAo+ID4gZHN0 X3gsIGRzdF95LAo+ID4gKwkJCSBkc3QtPmRhdGEsIGRzdC0KPiA+ID5zdXJmYWNlWzBdLnN0cmlk ZS9zaXplb2YodWludDMyX3QpLAo+ID4gKwkJCSBkc3RfeCwgZHN0X3ksCj4gPiAgCQkJIGxvZ2lj YWxfdGlsZV9ubyk7Cj4gPiAgCX0KPiA+ICB9Cj4gPiBAQCAtMzI3LDkgKzMzMSw5IEBAIHN0YXRp YyB2b2lkIGJsaXR0ZXJfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywKPiA+IHVuc2lnbmVk IHNyY194LCB1bnNpZ25lZCBzcmNfeQo+ID4gIAlpZiAoa2VlcF9ncHVfYnVzeV9jb3VudGVyICYg MSAmJiAhZmVuY2Vfc3Rvcm0pCj4gPiAgCQlrZWVwX2dwdV9idXN5KCk7Cj4gPiAgCj4gPiAtCWVt aXRfYmx0KHNyYy0+Ym8sIHNyYy0+dGlsaW5nLCBzcmMtPnN0cmlkZSwgc3JjX3gsIHNyY195LAo+ ID4gKwllbWl0X2JsdChzcmMtPmJvLCBzcmMtPnRpbGluZywgc3JjLT5zdXJmYWNlWzBdLnN0cmlk ZSwgc3JjX3gsCj4gPiBzcmNfeSwKPiA+ICAJCSBvcHRpb25zLnRpbGVfc2l6ZSwgb3B0aW9ucy50 aWxlX3NpemUsCj4gPiAtCQkgZHN0LT5ibywgZHN0LT50aWxpbmcsIGRzdC0+c3RyaWRlLCBkc3Rf eCwgZHN0X3kpOwo+ID4gKwkJIGRzdC0+Ym8sIGRzdC0+dGlsaW5nLCBkc3QtPnN1cmZhY2VbMF0u c3RyaWRlLCBkc3RfeCwKPiA+IGRzdF95KTsKPiA+ICAKPiA+ICAJaWYgKCEoa2VlcF9ncHVfYnVz eV9jb3VudGVyICYgMSkgJiYgIWZlbmNlX3N0b3JtKQo+ID4gIAkJa2VlcF9ncHVfYnVzeSgpOwo+ ID4gQEAgLTQ0MSw3ICs0NDUsNyBAQCBzdGF0aWMgdm9pZCBmYW5fb3V0KHZvaWQpCj4gPiAgCj4g PiAgCQljcHVjcHkyZCh0bXBfdGlsZSwgb3B0aW9ucy50aWxlX3NpemUsIDAsIDAsCj4gPiAgCQkJ IGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLmRhdGEsCj4gPiAtCQkJIGJ1ZmZlcnNbY3Vy cmVudF9zZXRdW2J1Zl9pZHhdLnN0cmlkZSAvCj4gPiBzaXplb2YodWludDMyX3QpLAo+ID4gKwkJ CSBidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4XS5zdXJmYWNlWzBdLnN0cmlkCj4gPiBlIC8g c2l6ZW9mKHVpbnQzMl90KSwKPiA+ICAJCQkgeCwgeSwgaSk7Cj4gPiAgCX0KPiA+ICAKPiA+IEBA IC00NjUsNyArNDY5LDcgQEAgc3RhdGljIHZvaWQgZmFuX2luX2FuZF9jaGVjayh2b2lkKQo+ID4g IAkJCXNldF90b19jcHVfZG9tYWluKCZidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4Cj4gPiBd LCAwKTsKPiA+ICAKPiA+ICAJCWNwdWNweTJkKGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhd LmRhdGEsCj4gPiAtCQkJIGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLnN0cmlkZSAvCj4g PiBzaXplb2YodWludDMyX3QpLAo+ID4gKwkJCSBidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4 XS5zdXJmYWNlWzBdLnN0cmlkCj4gPiBlIC8gc2l6ZW9mKHVpbnQzMl90KSwKPiA+ICAJCQkgeCwg eSwKPiA+ICAJCQkgdG1wX3RpbGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLAo+ID4gIAkJCSBp KTsKPiA+IEBAIC00NzYsMTUgKzQ4MCwxNSBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9zdHJpZGUo c3RydWN0IGlndF9idWYKPiA+ICpidWYpCj4gPiAgewo+ID4gIAo+ID4gIAlpZiAoaWd0X2J1Zl9o ZWlnaHQoYnVmKSA+IG9wdGlvbnMubWF4X2RpbWVuc2lvbikKPiA+IC0JCWJ1Zi0+c3RyaWRlID0g YnVmLT5zaXplIC8gb3B0aW9ucy5tYXhfZGltZW5zaW9uOwo+ID4gKwkJYnVmLT5zdXJmYWNlWzBd LnN0cmlkZSA9IGJ1Zi0+c3VyZmFjZVswXS5zaXplIC8KPiA+IG9wdGlvbnMubWF4X2RpbWVuc2lv bjsKPiA+ICAKPiA+ICAJaWYgKGlndF9idWZfaGVpZ2h0KGJ1ZikgPCBvcHRpb25zLnRpbGVfc2l6 ZSkKPiA+IC0JCWJ1Zi0+c3RyaWRlID0gYnVmLT5zaXplIC8gb3B0aW9ucy50aWxlX3NpemU7Cj4g PiArCQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gYnVmLT5zdXJmYWNlWzBdLnNpemUgLwo+ID4g b3B0aW9ucy50aWxlX3NpemU7Cj4gPiAgCj4gPiAgCWlmIChpZ3RfYnVmX3dpZHRoKGJ1ZikgPCBv cHRpb25zLnRpbGVfc2l6ZSkKPiA+IC0JCWJ1Zi0+c3RyaWRlID0gb3B0aW9ucy50aWxlX3NpemUg KiBzaXplb2YodWludDMyX3QpOwo+ID4gKwkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IG9wdGlv bnMudGlsZV9zaXplICoKPiA+IHNpemVvZih1aW50MzJfdCk7Cj4gPiAgCj4gPiAtCWlndF9hc3Nl cnQoYnVmLT5zdHJpZGUgPD0gODE5Mik7Cj4gPiArCWlndF9hc3NlcnQoYnVmLT5zdXJmYWNlWzBd LnN0cmlkZSA8PSA4MTkyKTsKPiA+ICAJaWd0X2Fzc2VydChpZ3RfYnVmX3dpZHRoKGJ1ZikgPD0g b3B0aW9ucy5tYXhfZGltZW5zaW9uKTsKPiA+ICAJaWd0X2Fzc2VydChpZ3RfYnVmX2hlaWdodChi dWYpIDw9IG9wdGlvbnMubWF4X2RpbWVuc2lvbik7Cj4gPiAgCj4gPiBAQCAtNDk4LDEwICs1MDIs MTAgQEAgc3RhdGljIHZvaWQgaW5pdF9idWZmZXIoc3RydWN0IGlndF9idWYgKmJ1ZiwKPiA+IHVu c2lnbmVkIHNpemUpCj4gPiAgCW1lbXNldChidWYsIDAsIHNpemVvZigqYnVmKSk7Cj4gPiAgCj4g PiAgCWJ1Zi0+Ym8gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAidGlsZWQgYm8iLCBzaXpl LCA0MDk2KTsKPiA+IC0JYnVmLT5zaXplID0gc2l6ZTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnNp emUgPSBzaXplOwo+ID4gIAlpZ3RfYXNzZXJ0KGJ1Zi0+Ym8pOwo+ID4gIAlidWYtPnRpbGluZyA9 IEk5MTVfVElMSU5HX05PTkU7Cj4gPiAtCWJ1Zi0+c3RyaWRlID0gNDA5NjsKPiA+ICsJYnVmLT5z dXJmYWNlWzBdLnN0cmlkZSA9IDQwOTY7Cj4gPiAgCWJ1Zi0+YnBwID0gMzI7Cj4gPiAgCj4gPiAg CXNhbml0aXplX3N0cmlkZShidWYpOwo+ID4gQEAgLTU2MCwyNSArNTY0LDI2IEBAIHN0YXRpYyB2 b2lkIGluaXRfc2V0KHVuc2lnbmVkIHNldCkKPiA+ICAJCWlmIChidWZmZXJzW3NldF1baV0udGls aW5nID09IEk5MTVfVElMSU5HX05PTkUpIHsKPiA+ICAJCQkvKiBtaW4gNjQgYnl0ZSBzdHJpZGUg Ki8KPiA+ICAJCQlyICU9IDg7Cj4gPiAtCQkJYnVmZmVyc1tzZXRdW2ldLnN0cmlkZSA9IDY0ICog KDEgPDwgcik7Cj4gPiArCQkJYnVmZmVyc1tzZXRdW2ldLnN1cmZhY2VbMF0uc3RyaWRlID0gNjQg KiAoMSA8PAo+ID4gcik7Cj4gPiAgCQl9IGVsc2UgaWYgKElTX0dFTjIoZGV2aWQpKSB7Cj4gPiAg CQkJLyogbWluIDEyOCBieXRlIHN0cmlkZSAqLwo+ID4gIAkJCXIgJT0gNzsKPiA+IC0JCQlidWZm ZXJzW3NldF1baV0uc3RyaWRlID0gMTI4ICogKDEgPDwgcik7Cj4gPiArCQkJYnVmZmVyc1tzZXRd W2ldLnN1cmZhY2VbMF0uc3RyaWRlID0gMTI4ICogKDEgPDwKPiA+IHIpOwo+ID4gIAkJfSBlbHNl IHsKPiA+ICAJCQkvKiBtaW4gNTEyIGJ5dGUgc3RyaWRlICovCj4gPiAgCQkJciAlPSA1Owo+ID4g LQkJCWJ1ZmZlcnNbc2V0XVtpXS5zdHJpZGUgPSA1MTIgKiAoMSA8PCByKTsKPiA+ICsJCQlidWZm ZXJzW3NldF1baV0uc3VyZmFjZVswXS5zdHJpZGUgPSA1MTIgKiAoMSA8PAo+ID4gcik7Cj4gPiAg CQl9Cj4gPiAgCj4gPiAgCQlzYW5pdGl6ZV9zdHJpZGUoJmJ1ZmZlcnNbc2V0XVtpXSk7Cj4gPiAg Cj4gPiAgCQlnZW1fc2V0X3RpbGluZyhkcm1fZmQsIGJ1ZmZlcnNbc2V0XVtpXS5iby0+aGFuZGxl LAo+ID4gIAkJCSAgICAgICBidWZmZXJzW3NldF1baV0udGlsaW5nLAo+ID4gLQkJCSAgICAgICBi dWZmZXJzW3NldF1baV0uc3RyaWRlKTsKPiA+ICsJCQkgICAgICAgYnVmZmVyc1tzZXRdW2ldLnN1 cmZhY2VbMF0uc3RyaWRlKTsKPiA+ICAKPiA+ICAJCWlmIChvcHRpb25zLnRyYWNlX3RpbGUgIT0g LTEgJiYgaSA9PQo+ID4gb3B0aW9ucy50cmFjZV90aWxlL29wdGlvbnMudGlsZXNfcGVyX2J1ZikK PiA+IC0JCQlpZ3RfaW5mbygiY2hhbmdpbmcgYnVmZmVyICVpIGNvbnRhaW5pbmcgdGlsZQo+ID4g JWk6IHRpbGluZyAlaSwgc3RyaWRlICVpXG4iLCBpLCBvcHRpb25zLnRyYWNlX3RpbGUsCj4gPiBi dWZmZXJzW3NldF1baV0udGlsaW5nLCBidWZmZXJzW3NldF1baV0uc3RyaWRlKTsKPiA+ICsJCQlp Z3RfaW5mbygiY2hhbmdpbmcgYnVmZmVyICVpIGNvbnRhaW5pbmcgdGlsZQo+ID4gJWk6IHRpbGlu ZyAlaSwgc3RyaWRlICVpXG4iLCBpLCBvcHRpb25zLnRyYWNlX3RpbGUsCj4gPiBidWZmZXJzW3Nl dF1baV0udGlsaW5nLAo+ID4gKwkJCQkgYnVmZmVyc1tzZXRdW2ldLnN1cmZhY2VbMF0uc3RyaWRl KTsKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IEBAIC02MTYsMTAgKzYyMSwxMCBAQCBzdGF0aWMg dm9pZCBjb3B5X3RpbGVzKHVuc2lnbmVkICpwZXJtdXRhdGlvbikKPiA+ICAKPiA+ICAJCWlmIChv cHRpb25zLm5vX2h3KSB7Cj4gPiAgCQkJY3B1Y3B5MmQoc3JjX2J1Zi0+ZGF0YSwKPiA+IC0JCQkJ IHNyY19idWYtPnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksCj4gPiArCQkJCSBzcmNfYnVmLT5z dXJmYWNlWzBdLnN0cmlkZSAvCj4gPiBzaXplb2YodWludDMyX3QpLAo+ID4gIAkJCQkgc3JjX3gs IHNyY195LAo+ID4gIAkJCQkgZHN0X2J1Zi0+ZGF0YSwKPiA+IC0JCQkJIGRzdF9idWYtPnN0cmlk ZSAvIHNpemVvZih1aW50MzJfdCksCj4gPiArCQkJCSBkc3RfYnVmLT5zdXJmYWNlWzBdLnN0cmlk ZSAvCj4gPiBzaXplb2YodWludDMyX3QpLAo+ID4gIAkJCQkgZHN0X3gsIGRzdF95LAo+ID4gIAkJ CQkgaSk7Cj4gPiAgCQl9IGVsc2Ugewo+ID4gQEAgLTgwOCw3ICs4MTMsNyBAQCBzdGF0aWMgdm9p ZCBjaGVja19yZW5kZXJfY29weWZ1bmModm9pZCkKPiA+ICAKPiA+ICAJCW1lbXNldChzcmMuZGF0 YSwgMHhmZiwgb3B0aW9ucy5zY3JhdGNoX2J1Zl9zaXplKTsKPiA+ICAJCWZvciAoaiA9IDA7IGog PCBvcHRpb25zLnRpbGVfc2l6ZTsgaisrKSB7Cj4gPiAtCQkJcHRyID0gKHVpbnQzMl90KikoKGNo YXIgKilzcmMuZGF0YSArIHN4KjQgKwo+ID4gKHN5K2opICogc3JjLnN0cmlkZSk7Cj4gPiArCQkJ cHRyID0gKHVpbnQzMl90KikoKGNoYXIgKilzcmMuZGF0YSArIHN4KjQgKwo+ID4gKHN5K2opICog c3JjLnN1cmZhY2VbMF0uc3RyaWRlKTsKPiA+ICAJCQlmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy50 aWxlX3NpemU7IGkrKykKPiA+ICAJCQkJcHRyW2ldID0gaiAqIG9wdGlvbnMudGlsZV9zaXplICsg aTsKPiA+ICAJCX0KPiA+IEBAIC04MTksNyArODI0LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfcmVu ZGVyX2NvcHlmdW5jKHZvaWQpCj4gPiAgCQkJc2V0X3RvX2NwdV9kb21haW4oJmRzdCwgMCk7Cj4g PiAgCj4gPiAgCQlmb3IgKGogPSAwOyBqIDwgb3B0aW9ucy50aWxlX3NpemU7IGorKykgewo+ID4g LQkJCXB0ciA9ICh1aW50MzJfdCopKChjaGFyICopZHN0LmRhdGEgKyBkeCo0ICsKPiA+IChkeStq KSAqIGRzdC5zdHJpZGUpOwo+ID4gKwkJCXB0ciA9ICh1aW50MzJfdCopKChjaGFyICopZHN0LmRh dGEgKyBkeCo0ICsKPiA+IChkeStqKSAqIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSk7Cj4gPiAgCQkJ Zm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspCj4gPiAgCQkJCWlmIChwdHJb aV0gIT0gaiAqIG9wdGlvbnMudGlsZV9zaXplICsKPiA+IGkpIHsKPiA+ICAJCQkJCWlndF9pbmZv KCJyZW5kZXIgY29weWZ1bmMKPiA+IG1pc21hdGNoIGF0ICglZCwgJWQpOiBmb3VuZCAlZCwgZXhw ZWN0ZWQgJWRcbiIsIGksIGosIHB0cltpXSwgaiAqCj4gPiBvcHRpb25zLnRpbGVfc2l6ZSArIGkp Owo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9zc2V1LmMgYi90ZXN0cy9pOTE1 L2k5MTVfcG1fc3NldS5jCj4gPiBpbmRleCBlNjcxZTE5MC4uYzJkZWUxMTggMTAwNjQ0Cj4gPiAt LS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fc3NldS5jCj4gPiArKysgYi90ZXN0cy9pOTE1L2k5MTVf cG1fc3NldS5jCj4gPiBAQCAtMjk5LDEwICsyOTksMTEgQEAgZ2VtX2luaXQodm9pZCkKPiA+ICAJ aWd0X2Fzc2VydChnZW0uYmF0Y2gpOwo+ID4gIAlnZW0uaW5pdCA9IDM7Cj4gPiAgCj4gPiAtCWdl bS5idWYuc3RyaWRlID0gc2l6ZW9mKHVpbnQzMl90KTsKPiA+ICsJZ2VtLmJ1Zi5zdXJmYWNlWzBd LnN0cmlkZSA9IHNpemVvZih1aW50MzJfdCk7Cj4gPiAgCWdlbS5idWYudGlsaW5nID0gSTkxNV9U SUxJTkdfTk9ORTsKPiA+IC0JZ2VtLmJ1Zi5zaXplID0gZ2VtLmJ1Zi5zdHJpZGU7Cj4gPiAtCWdl bS5idWYuYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZ2VtLmJ1Zm1nciwgIiIsIGdlbS5idWYuc2l6 ZSwKPiA+IDQwOTYpOwo+ID4gKwlnZW0uYnVmLnN1cmZhY2VbMF0uc2l6ZSA9IGdlbS5idWYuc3Vy ZmFjZVswXS5zdHJpZGU7Cj4gPiArCWdlbS5idWYuYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZ2Vt LmJ1Zm1nciwgIiIsCj4gPiArCQkJCQlnZW0uYnVmLnN1cmZhY2VbMF0uc2l6ZSwgNDA5Nik7Cj4g PiAgCWdlbS5idWYuYnBwID0gMzI7Cj4gPiAgCWlndF9hc3NlcnQoZ2VtLmJ1Zi5ibyk7Cj4gPiAg CWdlbS5pbml0ID0gNDsKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfYmlnX2ZiLmMgYi90ZXN0 cy9rbXNfYmlnX2ZiLmMKPiA+IGluZGV4IGM1ZDAwMmNhLi5lYjE0NGRhOSAxMDA2NDQKPiA+IC0t LSBhL3Rlc3RzL2ttc19iaWdfZmIuYwo+ID4gKysrIGIvdGVzdHMva21zX2JpZ19mYi5jCj4gPiBA QCAtNjAsOSArNjAsOSBAQCBzdGF0aWMgdm9pZCBpbml0X2J1ZihkYXRhX3QgKmRhdGEsCj4gPiAg CWJ1Zi0+Ym8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5idWZtZ3IsIGRhdGEtPmRy bV9mZCwKPiA+ICAJCQkJCSAgbmFtZSwgZmItPmdlbV9oYW5kbGUpOwo+ID4gIAlidWYtPnRpbGlu ZyA9IGlndF9mYl9tb2RfdG9fdGlsaW5nKGZiLT5tb2RpZmllcik7Cj4gPiAtCWJ1Zi0+c3RyaWRl ID0gZmItPnN0cmlkZXNbMF07Cj4gPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBmYi0+c3Ry aWRlc1swXTsKPiA+ICAJYnVmLT5icHAgPSBmYi0+cGxhbmVfYnBwWzBdOwo+ID4gLQlidWYtPnNp emUgPSBmYi0+c2l6ZTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBmYi0+c2l6ZTsKPiA+ ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQgZmluaV9idWYoc3RydWN0IGlndF9idWYgKmJ1ZikK PiA+IEBAIC05OSw4ICs5OSwxMCBAQCBzdGF0aWMgdm9pZCBjb3B5X3BhdHRlcm4oZGF0YV90ICpk YXRhLAo+ID4gIAkJaCA9IG1pbihoLCBzcmNfZmItPmhlaWdodCAtIHN5KTsKPiA+ICAJCWggPSBt aW4oaCwgZHN0X2ZiLT5oZWlnaHQgLSBkeSk7Cj4gPiAgCj4gPiAtCQlpbnRlbF9ibHRfY29weShk YXRhLT5iYXRjaCwgc3JjLmJvLCBzeCwgc3ksIHNyYy5zdHJpZGUsCj4gPiAtCQkJICAgICAgIGRz dC5ibywgZHgsIGR5LCBkc3Quc3RyaWRlLCB3LCBoLAo+ID4gZHN0LmJwcCk7Cj4gPiArCQlpbnRl bF9ibHRfY29weShkYXRhLT5iYXRjaCwgc3JjLmJvLCBzeCwgc3ksCj4gPiArCQkJICAgICAgIHNy Yy5zdXJmYWNlWzBdLnN0cmlkZSwKPiA+ICsJCQkgICAgICAgZHN0LmJvLCBkeCwgZHksIGRzdC5z dXJmYWNlWzBdLnN0cmlkZSwKPiA+IHcsIGgsCj4gPiArCQkJICAgICAgIGRzdC5icHApOwo+ID4g IAl9Cj4gPiAgCj4gPiAgCWZpbmlfYnVmKCZkc3QpOwo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2tt c19wc3IuYyBiL3Rlc3RzL2ttc19wc3IuYwo+ID4gaW5kZXggMjMyYzgwYWEuLmQ5YmU4N2Q5IDEw MDY0NAo+ID4gLS0tIGEvdGVzdHMva21zX3Bzci5jCj4gPiArKysgYi90ZXN0cy9rbXNfcHNyLmMK PiA+IEBAIC0xNTMsOSArMTUzLDkgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChzdHJ1 Y3QgaWd0X2J1ZiAqYnVmLAo+ID4gZHJtX2ludGVsX2JvICpibywKPiA+ICAJbWVtc2V0KGJ1Ziwg MCwgc2l6ZW9mKCpidWYpKTsKPiA+ICAKPiA+ICAJYnVmLT5ibyA9IGJvOwo+ID4gLQlidWYtPnN0 cmlkZSA9IHN0cmlkZTsKPiA+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IHN0cmlkZTsKPiA+ ICAJYnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19YOwo+ID4gLQlidWYtPnNpemUgPSBzaXplOwo+ ID4gKwlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IHNpemU7Cj4gPiAgCWJ1Zi0+YnBwID0gMzI7Cj4g PiAgfQo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmYuYyBiL3Rlc3RzL3BlcmYuYwo+ ID4gaW5kZXggZjVkZDYwNTEuLjk4MjI3N2RmIDEwMDY0NAo+ID4gLS0tIGEvdGVzdHMvcGVyZi5j Cj4gPiArKysgYi90ZXN0cy9wZXJmLmMKPiA+IEBAIC01MDYsOSArNTA2LDkgQEAgc2NyYXRjaF9i dWZfaW5pdChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4gPiAgCW1lbXNldChidWYsIDAsIHNp emVvZigqYnVmKSk7Cj4gPiAgCj4gPiAgCWJ1Zi0+Ym8gPSBibzsKPiA+IC0JYnVmLT5zdHJpZGUg PSBzdHJpZGU7Cj4gPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBzdHJpZGU7Cj4gPiAgCWJ1 Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKPiA+IC0JYnVmLT5zaXplID0gc2l6ZTsKPiA+ ICsJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBzaXplOwo+ID4gIAlidWYtPmJwcCA9IDMyOwo+ID4g IH0KPiA+ICAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==