From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shankar, Uma" Subject: Re: [PATCH 02/13] drm/i915: Split the gamma/csc enable bits from the plane_ctl() function Date: Wed, 16 Jan 2019 17:11:26 +0000 Message-ID: References: <20190111170823.4441-1-ville.syrjala@linux.intel.com> <20190111170823.4441-3-ville.syrjala@linux.intel.com> <20190112004137.GU4563@mdroper-desk.amr.corp.intel.com> <20190114171110.GD20097@intel.com> <20190114191132.GF20097@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 83BF26F166 for ; Wed, 16 Jan 2019 17:11:31 +0000 (UTC) In-Reply-To: <20190114191132.GF20097@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?utf-8?B?VmlsbGUgU3lyasOkbMOk?= , "Roper, Matthew D" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEludGVsLWdmeCBbbWFpbHRv OmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmIE9mDQo+ VmlsbGUgU3lyasOkbMOkDQo+U2VudDogVHVlc2RheSwgSmFudWFyeSAxNSwgMjAxOSAxMjo0MiBB TQ0KPlRvOiBSb3BlciwgTWF0dGhldyBEIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPg0KPkNj OiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+U3ViamVjdDogUmU6IFtJbnRlbC1n ZnhdIFtQQVRDSCAwMi8xM10gZHJtL2k5MTU6IFNwbGl0IHRoZSBnYW1tYS9jc2MgZW5hYmxlIGJp dHMNCj5mcm9tIHRoZSBwbGFuZV9jdGwoKSBmdW5jdGlvbg0KPg0KPk9uIE1vbiwgSmFuIDE0LCAy MDE5IGF0IDA3OjExOjEwUE0gKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToNCj4+IE9uIEZy aSwgSmFuIDExLCAyMDE5IGF0IDA0OjQxOjM3UE0gLTA4MDAsIE1hdHQgUm9wZXIgd3JvdGU6DQo+ PiA+IE9uIEZyaSwgSmFuIDExLCAyMDE5IGF0IDA3OjA4OjEyUE0gKzAyMDAsIFZpbGxlIFN5cmph bGEgd3JvdGU6DQo+PiA+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4NCj4+ID4gPg0KPj4gPiA+IE9uIGc0eCsgdGhlIHBpcGUgZ2FtbWEgZW5h YmxlIGJpdCBmb3IgdGhlIHByaW1hcnkgcGxhbmUgYWZmZWN0cw0KPj4gPiA+IHRoZSBwaXBlIGJv dHRvbSBjb2xvciBhcyB3ZWxsLiBUaGUgc2FtZSBmb3IgdGhlIHBpcGUgY3NjIGVuYWJsZQ0KPj4g PiA+IGJpdCBvbiBpbGsrLiBUaHVzIHdlIG11c3QgY29uZmlndXJlIHRob3NlIGJpdHMgY29ycmVj dGx5IGV2ZW4gd2hlbg0KPj4gPiA+IHRoZSBwcmltYXJ5IHBsYW5lIGlzIGRpc2FibGVkLg0KPj4g Pg0KPj4gPiBUaGlzIGlzIG9ubHkgdHJ1ZSBmb3IgPGdlbjksIHJpZ2h0PyBTdGFydGluZyB3aXRo IGdlbjksIHdlIGhhdmUNCj4+ID4gZGVkaWNhdGVkIGJpdHMgdGhhdCBjb250cm9sIHRoaXMsIHNv IEkgZG9uJ3QgdGhpbmsgdGhlIHByaW1heQ0KPj4gPiBwbGFuZSdzIHNldHRpbmdzIHNob3VsZCBo YXZlIGFueSBpbXBhY3Qgd2hlbiBkaXNhYmxlZC4gIEkuZS4sIHdlDQo+PiA+IGFsc28gbmVlZCB0 aGUgYml0cyBzZXQgaW4gdGhpcyBwYXRjaDoNCj4+ID4NCj4+ID4gICAgICAgICBodHRwczovL3Bh dGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMjcxMTA5Lw0KPj4NCj4+IFllcy4gSSBoYWQg dGhlIHNhbWUgYml0cyAob3Igc29tZXRoaW5nIHNpbWlsYXIgaW4gYSBsYXRlciBwYXRjaCBpbiB0 aGUNCj4+IHNlcmllcykuIEJ1dCB3ZSBzaG91bGQgcHJvYmFibHkganVzdCBsYW5kIHlvdXIgc3R1 ZmYgZmlyc3QuDQo+Pg0KPj4gPg0KPj4gPiA+IFRvIG1ha2UgdGhlIGZlYXNpYmxlIGxldCdzIHNw bGl0IHRob3NlIHNldHRpbmdzIGZyb20gdGhlDQo+PiA+ID4gcGxhbmVfY3RsKCkgZnVuY3Rpb24g aW50byBhIHNlcHJhdGUgZnVuY2l0b24gdGhhdCB3ZSBjYW4gY2FsbCBmcm9tDQoNClR5cG8gaGVy ZS4NCg0KPj4gPiA+IHRoZSAtPmRpc2FibGVfcGxhbmUoKSBob29rIGFzIHdlbGwuDQo+PiA+DQo+ PiA+IElzIGNhbGxpbmcgaXQgZnJvbSAtPmRpc2FibGVfcGxhbmUoKSBlbm91Z2g/ICBJZiB3ZSBq dXN0IGRpc2FibGUgdGhlDQo+PiA+IHByaW1hcnkgcGxhbmUsIHRoZW4gdGhvc2UgYml0cyB3aWxs IHJlbWFpbiBzZXQgd2hpbGUgdGhlIGNydGMNCj4+ID4gcmVtYWlucyBhY3RpdmUuICBCdXQgaWYg eW91IHRoZW4gZGlzYWJsZSB0aGUgd2hvbGUgY3J0YyBhbmQNCj4+ID4gcmUtZW5hYmxlIGl0IGFn YWluIGxhdGVyLCB3b24ndCB3ZSBoYXZlIGxvc3QgdGhlIGJpdHMgYXQgdGhhdCBwb2ludD8NCg0K SnVzdCBjdXJpb3VzLCBvbmNlIGNydGMgaXMgcmUtZW5hYmxlZCBwbGFuZSBlbmFibGUgd2lsbCBl dmVudHVhbGx5IGhhcHBlbg0Kd2hlcmUgdGhpcyBjYW4gYWdhaW4gYmUgZW5hYmxlZC4gU28gaXMg dGhpcyB0aGUgY29ybmVyIGNhc2Ugd2hlcmUgY3J0YyBnZXRzIA0KZW5hYmxlZCBhbmQgcHJpbWFy eSBwbGFuZSBpcyBub3QgZW5hYmxlZCBhbmQgaXQgd29ya3Mgd2l0aCBqdXN0IG92ZXJsYXlzID8N Cg0KSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2h5IG5vdCBqdXN0IGV4cGxpY2l0bHkgZW5hYmxlIHRo ZXNlIHNlcGFyYXRlbHkgaW4gY3J0YyBlbmFibGUNCnNlcXVlbmNlIGFuZCBub3QgcmVseSBvbiBw cmltYXJ5IHBsYW5lIGVuYWJsaW5nIHBhdGggdG8gc2V0IHRoaXMgZm9yIHVzLiBXaGF0DQpjb3Vs ZCBiZSB0aGUgcG90ZW50aWFsIHByb2JsZW0gaWYgd2UgZG8gdGhpcyA/DQoNCj4+DQo+PiBIbW0u IFllcywgcHJvYmFibHkuDQo+Pg0KPj4gSnVzdCBhZGRpbmcgYSBuZWVkc19tb2Rlc2V0KCkgY2hl Y2sgaW50bw0KPj4gaW50ZWxfY29sb3JfYWRkX2FmZmVjdGVkX3BsYW5lcygpIChpbnRyb2R1Y2Vk IGluIGEgbGF0ZXIgcGF0Y2gpIGNvdWxkDQo+PiBiZSBvbmUgd2F5LiBCdXQgdGhhdCBtZWFucyB0 aGUgcGxhbmUgY29udHJvbCByZWcgd29uJ3QgYmUgdXBkYXRlZA0KPj4gYmVmb3JlIHRoZSBwaXBl IGlzIGFscmVhZHkgYWN0aXZlLiBTbyB3ZSBtaWdodCBuZWVkIGEgc3BlY2lhbCBjYXNlIGZvcg0K Pj4gdGhhdCB0b28uDQo+Pg0KPj4gVGhhdCBzYWlkLCBJIGtpbmRhIGhhdGUgdGhlIHBpcGUgZW5h YmxlIHNwZWNpYWwgY2FzZXMgZm9yIHRoZSBjb2xvcg0KPj4gbWFuYWdlbWVudCBzdHVmZi4gU28g SSdtIHdvbmRlcmluZyBpZiB3ZSBjb3VsZCBlbGltaW5hdGUgaXQgYWxsIGFuZA0KPj4ganVzdCBy ZWx5IG9uIHRoZSBub3JtYWwgcGlwZStwbGFuZSB1cGRhdGUgdG8gZG8gdGhpbmdzIGNvcnJlY3Rs eS4gQnV0DQo+PiB0byBtYWtlIHRoYXQgY29uc2lzdGVudCB3ZSBtaWdodCBoYXZlIHRvIGhhdmUg YW5vdGhlciBzcGVjaWFsIGNhc2UgdG8NCj4+IGRpc2FibGUgZ2FtbWEvZXRjLiBwcmlvciB0byBl bmFibGluZyB0aGUgcGlwZSBzbyB0aGF0IGl0IGNhbiBhbGwgYmUNCj4+IGVuYWJsZWQgYXRvbWlj YWxseSBsYXRlci4gSG1tLiBJIHN1cHBvc2UgdGhhdCBjb3VsZCBiZSBhY2hpZXZlZCBieQ0KPj4g Y2xlYXJpbmcgYWxsIHJlbGV2YW50IGNvbnRyb2wgYml0cyBpbiBkaXNhYmxlX3BsYW5lKCkgKG9y IGluDQo+PiBjcnRjX2Rpc2FibGUoKSBmb3Igc2tsKykgaWYgdGhlIGNydGMgaXMgbm8gbG9uZ2Vy IGFjdGl2ZS4NCj4+DQo+PiBBbmQgSSBndWVzcyB3ZSBjb3VsZCBzdGlsbCBrZWVwIHRoZSAubG9h ZF9sdXRzKCkgc3BlY2lhbCBjYXNlIHNpbmNlDQo+PiBndWFyYW50ZWVpbmcgdGhlIGF0b21pY2l0 eSBmb3IgdGhhdCBpc24ndCBhcyBlYXN5Lg0KPj4NCj4+IEl0IHdvdWxkIG1lYW4gdGhlIHBpcGUg YWx3YXN5IGNvbWVzIHVwIHdpdGggZ2FtbWEgYW5kIGNzYyBkaXNhYmxlZC4NCj4+IEJ1dCBzaW5j ZSBpdCdzIGFsbCBzb21lIHNoYWRlIG9mIGJsYWNrIGFueXdheSBJIGd1ZXNzIGl0IHNob3VsZG4n dCBiZQ0KPj4gYSBiaWcgZGVhbC4NCj4NCj5CYWguIFRoYXQgd29uJ3QgYWN0dWFsbHkgd29yayB3 aXRob3V0IG1vcmUgaGFja3MgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjcnRjDQo+d2FzIGVuYWJs ZWQgYWxyZWFkeS4gSSBndWVzcyBJJ2xsIGp1c3QgaGF2ZSB0byBzdGljayBhbiBleHBsaWNpdCBw cmltYXJ5LQ0KPj5kaXNhYmxlX3BsYW5lKCkgY2FsbCBpbnRvIHRoZSBjcnRjX2VuYWJsZSgpIHBh dGggOigNCg0KPj4NCj4+ID4NCj4+ID4NCj4+ID4gTWF0dA0KPj4gPg0KPj4gPiA+DQo+PiA+ID4g Rm9yIGNvbnNpc3RlbmN5IHdlJ2xsIGRvIHRoYXQgb24gYWxsIHRoZSBwbGFuZSB0eXBlcy4gV2hp bGUgdGhhdA0KPj4gPiA+IGhhcyBubyByZWFsIGJlbmVmaXRzIGF0IHRoaXMgdGltZSwgaXQnbGwg YmVjb21lIHVzZWZ1bCB3aGVuIHdlDQo+PiA+ID4gc3RhcnQgdG8gY29udHJvbCB0aGUgcGlwZSBn YW1tYS9jc2MgZW5hYmxlIGJpdHMgZHluYW1pY2FsbHkgd2hlbg0KPj4gPiA+IHdlIG92ZXJoYXVs IHRoZSBjb2xvciBtYW5hZ2VtZW50IGNvZGUuDQo+PiA+ID4NCj4+ID4gPiBPbiBwcmUtZzR4IHRo ZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGFueSB3YXkgdG8gZ2FtbWEgY29ycmVjdCB0aGUNCj4+ ID4gPiBwaXBlIGJvdHRvbSBjb2xvciwgYnV0IHN0aWNraW5nIHRvIHRoZSBzYW1lIHBhdHRlcm4g ZG9lc24ndCBodXJ0Lg0KPj4gPiA+IEFuZCBpdCdsbCBzdGlsbCBoZWxwIHVzIHRvIGRvIGNydGMg c3RhdGUgcmVhZG91dCBjb3JyZWN0bHkgZm9yIHRoZQ0KPj4gPiA+IHBpcGUgZ2FtbWEgZW5hYmxl IGJpdCBmb3IgdGhlIGNvbG9yIG1hbmFnZW1lbnQgb3ZlcmhhdWwuDQo+PiA+ID4NCj4+ID4gPiBB biBhbHRlcm5hdGl2ZSBhcHBvcmFjaCB3b3VsZCBiZSB0byBzdGlsbCBwcmVjb21wdXRlIHRoZXNl IGJpdHMNCg0KVHlwbyBpbiBhcHByb2FjaC4NCg0KPj4gPiA+IGludG8gcGxhbmVfc3RhdGUtPmN0 bCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSB0aGF0IHdlIHJ1biB0aHJvdWdoDQo+PiA+ID4gdGhl IHBsYW5lIGNoZWNrIGV2ZW4gd2hlbiB0aGUgcGxhbmUgaXNuJ3QgbG9naWNhbGx5IGVuYWJsZWQg b24gYW55DQo+PiA+ID4gY3J0Yy4gQ3VycmVudGx5IHRoYXQgY29uZGl0aW9uIGNhdXNlcyB1cyB0 byBzaG9ydCBjaXJjdWl0IHRoZQ0KPj4gPiA+IGVudGlyZSB0aGluZyBhbmQgbm90IGNhbGwgLT5j aGVja19wbGFuZSgpLg0KPj4gPiA+IFRoZXJlIHdvdWxkIGFsc28gYmUgc29tZSBjaGlja2VuIGFu ZCBlZ2cgcHJvYmxlbXMgd2l0aA0KPj4gPiA+IC0+Y2hlY2tfcGxhbmUoKSB2cy4gY3J0YyBjb2xv ciBzdGF0ZSBjaGVjayB0aGF0IHdvdWxkDQo+PiA+ID4gcmVxdWl0ZSBzcGxpdHRpbmcgY2VydGFp biB0aGluZ3MgaW50byBtdWx0aXBsZSBzdGVwcy4NCj4+ID4gPiBTbyBhbGwgaW4gYWxsIHRoaXMg c2VlbXMgbGlrZSB0aGUgZWFzaWVyIHJvdXRlLg0KPj4gPiA+DQo+PiA+ID4gU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4NCj4+ID4g PiAtLS0NCj4+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTI4 ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQ0KPj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgfCAgIDMgKy0NCj4+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMgIHwgIDU0ICsrKysrKysrLS0tDQo+PiA+ID4gIDMgZmlsZXMgY2hhbmdl ZCwgMTM5IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQ0KPj4gPiA+DQo+PiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPj4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+PiA+ID4gaW5kZXggNWRjMGRl ODljNDllLi5hMzg3MWRiNDcwM2IgMTAwNjQ0DQo+PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jDQo+PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jDQo+PiA+ID4gQEAgLTMxODAsMjggKzMxODAsMzggQEAgaTl4eF9wbGFu ZV9tYXhfc3RyaWRlKHN0cnVjdCBpbnRlbF9wbGFuZQ0KPipwbGFuZSwNCj4+ID4gPiAgCX0NCj4+ ID4gPiAgfQ0KPj4gPiA+DQo+PiA+ID4gK3N0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGxfY3J0Yyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPj4gPiA+ICsqY3J0Y19zdGF0ZSkgew0KPj4g PiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PmJhc2UuY3J0Yyk7DQo+PiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsNCj4+ID4gPiArCXUzMiBkc3BjbnRyID0gMDsNCj4+ ID4gPiArDQo+PiA+ID4gKwlkc3BjbnRyIHw9IERJU1BQTEFORV9HQU1NQV9FTkFCTEU7DQo+PiA+ ID4gKw0KPj4gPiA+ICsJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChk ZXZfcHJpdikpDQo+PiA+ID4gKwkJZHNwY250ciB8PSBESVNQUExBTkVfUElQRV9DU0NfRU5BQkxF Ow0KPj4gPiA+ICsNCj4+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkNCj4+ID4g PiArCQlkc3BjbnRyIHw9IERJU1BQTEFORV9TRUxfUElQRShjcnRjLT5waXBlKTsNCj4+ID4gPiAr DQo+PiA+ID4gKwlyZXR1cm4gZHNwY250cjsNCj4+ID4gPiArfQ0KPj4gPiA+ICsNCj4+ID4gPiAg c3RhdGljIHUzMiBpOXh4X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwNCj4+ID4gPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKSAgew0KPj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0NCj4+ID4gPiAgCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOw0K Pj4gPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPmJhc2UuY3J0Yyk7DQo+PiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOw0KPj4gPiA+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9u ID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247DQo+PiA+ID4gIAl1MzIgZHNwY250cjsNCj4+ ID4gPg0KPj4gPiA+IC0JZHNwY250ciA9IERJU1BMQVlfUExBTkVfRU5BQkxFIHwgRElTUFBMQU5F X0dBTU1BX0VOQUJMRTsNCj4+ID4gPiArCWRzcGNudHIgPSBESVNQTEFZX1BMQU5FX0VOQUJMRTsN Cj4+ID4gPg0KPj4gPiA+ICAJaWYgKElTX0c0WChkZXZfcHJpdikgfHwgSVNfR0VOKGRldl9wcml2 LCA1KSB8fA0KPj4gPiA+ICAJICAgIElTX0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdF KGRldl9wcml2KSkNCj4+ID4gPiAgCQlkc3BjbnRyIHw9IERJU1BQTEFORV9UUklDS0xFX0ZFRURf RElTQUJMRTsNCj4+ID4gPg0KPj4gPiA+IC0JaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElT X0JST0FEV0VMTChkZXZfcHJpdikpDQo+PiA+ID4gLQkJZHNwY250ciB8PSBESVNQUExBTkVfUElQ RV9DU0NfRU5BQkxFOw0KPj4gPiA+IC0NCj4+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNSkNCj4+ID4gPiAtCQlkc3BjbnRyIHw9IERJU1BQTEFORV9TRUxfUElQRShjcnRjLT5waXBl KTsNCj4+ID4gPiAtDQo+PiA+ID4gIAlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgew0KPj4g PiA+ICAJY2FzZSBEUk1fRk9STUFUX0M4Og0KPj4gPiA+ICAJCWRzcGNudHIgfD0gRElTUFBMQU5F XzhCUFA7DQo+PiA+ID4gQEAgLTMzMjksMTEgKzMzMzksMTMgQEAgc3RhdGljIHZvaWQgaTl4eF91 cGRhdGVfcGxhbmUoc3RydWN0DQo+aW50ZWxfcGxhbmUgKnBsYW5lLA0KPj4gPiA+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOw0K Pj4gPiA+ICAJZW51bSBpOXh4X3BsYW5lX2lkIGk5eHhfcGxhbmUgPSBwbGFuZS0+aTl4eF9wbGFu ZTsNCj4+ID4gPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Ow0KPj4gPiA+IC0JdTMyIGRzcGNudHIgPSBw bGFuZV9zdGF0ZS0+Y3RsOw0KPj4gPiA+ICAJaW50IHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMF0ueDsNCj4+ID4gPiAgCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7 DQo+PiA+ID4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOw0KPj4gPiA+ICAJdTMyIGRzcGFkZHJf b2Zmc2V0Ow0KPj4gPiA+ICsJdTMyIGRzcGNudHI7DQo+PiA+ID4gKw0KPj4gPiA+ICsJZHNwY250 ciA9IHBsYW5lX3N0YXRlLT5jdGwgfCBpOXh4X3BsYW5lX2N0bF9jcnRjKGNydGNfc3RhdGUpOw0K Pj4gPiA+DQo+PiA+ID4gIAlsaW5lYXJfb2Zmc2V0ID0gaW50ZWxfZmJfeHlfdG9fbGluZWFyKHgs IHksIHBsYW5lX3N0YXRlLCAwKTsNCj4+ID4gPg0KPj4gPiA+IEBAIC0zMzkzLDEwICszNDA1LDIz IEBAIHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9wbGFuZShzdHJ1Y3QNCj5pbnRlbF9wbGFuZSAq cGxhbmUsDQo+PiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7DQo+PiA+ID4gIAllbnVtIGk5eHhfcGxhbmVfaWQgaTl4eF9w bGFuZSA9IHBsYW5lLT5pOXh4X3BsYW5lOw0KPj4gPiA+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFn czsNCj4+ID4gPiArCXUzMiBkc3BjbnRyOw0KPj4gPiA+ICsNCj4+ID4gPiArCS8qDQo+PiA+ID4g KwkgKiBEU1BDTlRSIHBpcGUgZ2FtbWEgZW5hYmxlIG9uIGc0eCsgYW5kIHBpcGUgY3NjDQo+PiA+ ID4gKwkgKiBlbmFibGUgb24gaWxrKyBhZmZlY3QgdGhlIHBpcGUgYm90dG9tIGNvbG9yIGFzDQo+ PiA+ID4gKwkgKiB3ZWxsLCBzbyB3ZSBtdXN0IGNvbmZpZ3VyZSB0aGVtIGV2ZW4gaWYgdGhlIHBs YW5lDQo+PiA+ID4gKwkgKiBpcyBkaXNhYmxlZC4NCj4+ID4gPiArCSAqDQo+PiA+ID4gKwkgKiBP biBwcmUtZzR4IHRoZXJlIGlzIG5vIHdheSB0byBnYW1tYSBjb3JyZWN0IHRoZQ0KPj4gPiA+ICsJ ICogcGlwZSBib3R0b20gY29sb3IgYnV0IHdlJ2xsIGtlZXAgb24gZG9pbmcgdGhpcw0KPj4gPiA+ ICsJICogYW55d2F5Lg0KPj4gPiA+ICsJICovDQo+PiA+ID4gKwlkc3BjbnRyID0gaTl4eF9wbGFu ZV9jdGxfY3J0YyhjcnRjX3N0YXRlKTsNCj4+ID4gPg0KPj4gPiA+ICAJc3Bpbl9sb2NrX2lycXNh dmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOw0KPj4gPiA+DQo+PiA+ID4gLQlJ OTE1X1dSSVRFX0ZXKERTUENOVFIoaTl4eF9wbGFuZSksIDApOw0KPj4gPiA+ICsJSTkxNV9XUklU RV9GVyhEU1BDTlRSKGk5eHhfcGxhbmUpLCBkc3BjbnRyKTsNCj4+ID4gPiAgCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDQpDQo+PiA+ID4gIAkJSTkxNV9XUklURV9GVyhEU1BTVVJGKGk5eHhf cGxhbmUpLCAwKTsNCj4+ID4gPiAgCWVsc2UNCj4+ID4gPiBAQCAtMzYzMSw2ICszNjU2LDIwIEBA IHN0YXRpYyB1MzIgY25sX3BsYW5lX2N0bF9mbGlwKHVuc2lnbmVkIGludA0KPnJlZmxlY3QpDQo+ PiA+ID4gIAlyZXR1cm4gMDsNCj4+ID4gPiAgfQ0KPj4gPiA+DQo+PiA+ID4gK3UzMiBza2xfcGxh bmVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpDQo+ PiA+ID4gK3sNCj4+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOw0KPj4gPiA+ICsJdTMyIHBsYW5lX2N0 bCA9IDA7DQo+PiA+ID4gKw0KPj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAg fHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpDQo+PiA+ID4gKwkJcmV0dXJuIHBsYW5lX2N0bDsN Cj4+ID4gPiArDQo+PiA+ID4gKwlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5B QkxFOw0KPj4gPiA+ICsJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEU7DQo+ PiA+ID4gKw0KPj4gPiA+ICsJcmV0dXJuIHBsYW5lX2N0bDsNCj4+ID4gPiArfQ0KPj4gPiA+ICsN Cj4+ID4gPiAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsDQo+PiA+ID4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKSAgeyBAQCAtMzY0NSwxMA0KPj4gPiA+ICszNjg0LDcgQEAgdTMyIHNrbF9w bGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4+ID4gPiAqY3J0Y19zdGF0 ZSwNCj4+ID4gPg0KPj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMCAmJiAhSVNf R0VNSU5JTEFLRShkZXZfcHJpdikpIHsNCj4+ID4gPiAgCQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5l X2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7DQo+PiA+ID4gLQkJcGxhbmVfY3RsIHw9DQo+PiA+ID4g LQkJCVBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRSB8DQo+PiA+ID4gLQkJCVBMQU5FX0NUTF9Q SVBFX0NTQ19FTkFCTEUgfA0KPj4gPiA+IC0JCQlQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJM RTsNCj4+ID4gPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7 DQo+PiA+ID4NCj4+ID4gPiAgCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2Rpbmcg PT0NCj5EUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpDQo+PiA+ID4gIAkJCXBsYW5lX2N0bCB8PQ0KPlBM QU5FX0NUTF9ZVVZfVE9fUkdCX0NTQ19GT1JNQVRfQlQ3MDk7DQo+PiA+ID4gQEAgLTM2NzMsMTkg KzM3MDksMjcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUNCj4qY3J0Y19zdGF0ZSwNCj4+ID4gPiAgCXJldHVybiBwbGFuZV9jdGw7DQo+PiA+ID4gIH0N Cj4+ID4gPg0KPj4gPiA+ICt1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bF9jcnRjKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlDQo+PiA+ID4gKypjcnRjX3N0YXRlKSB7DQo+PiA+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2Uu Y3J0Yy0+ZGV2KTsNCj4+ID4gPiArCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOw0KPj4gPiA+ICsN Cj4+ID4gPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQ0KPj4gPiA+ICsJCXJldHVy biBwbGFuZV9jb2xvcl9jdGw7DQo+PiA+ID4gKw0KPj4gPiA+ICsJcGxhbmVfY29sb3JfY3RsIHw9 IFBMQU5FX0NPTE9SX1BJUEVfR0FNTUFfRU5BQkxFOw0KPj4gPiA+ICsJcGxhbmVfY29sb3JfY3Rs IHw9IFBMQU5FX0NPTE9SX1BJUEVfQ1NDX0VOQUJMRTsNCj4+ID4gPiArDQo+PiA+ID4gKwlyZXR1 cm4gcGxhbmVfY29sb3JfY3RsOw0KPj4gPiA+ICt9DQo+PiA+ID4gKw0KPj4gPiA+ICB1MzIgZ2xr X3BsYW5lX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwNCj4+ID4gPiAgCQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkgIHsNCj4+ID4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9DQo+PiA+ ID4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsNCj4+ID4gPiAgCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7DQo+ PiA+ID4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUpOw0KPj4gPiA+ICAJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7DQo+ PiA+ID4NCj4+ID4gPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpIHsNCj4+ID4gPiAt CQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9HQU1NQV9FTkFCTEU7DQo+PiA+ ID4gLQkJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1BJUEVfQ1NDX0VOQUJMRTsNCj4+ ID4gPiAtCX0NCj4+ID4gPiAgCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9H QU1NQV9ESVNBQkxFOw0KPj4gPiA+ICAJcGxhbmVfY29sb3JfY3RsIHw9IGdsa19wbGFuZV9jb2xv cl9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOw0KPj4gPiA+DQo+PiA+ID4gQEAgLTk4NjcsMTEgKzk5 MTEsMTUgQEAgaTg0NV9jdXJzb3JfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUNCj4qcGxh bmUsDQo+PiA+ID4gIAlyZXR1cm4gMjA0ODsNCj4+ID4gPiAgfQ0KPj4gPiA+DQo+PiA+ID4gK3N0 YXRpYyB1MzIgaTg0NV9jdXJzb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUNCj4+ID4gPiArKmNydGNfc3RhdGUpIHsNCg0KTWF5IGJlIHdlIGNhbiBtYWtlIHRoaXMgaW5s aW5lIGZ1bmN0aW9uLg0KDQo+PiA+ID4gKwlyZXR1cm4gQ1VSU09SX0dBTU1BX0VOQUJMRTsNCj4+ ID4gPiArfQ0KPj4gPiA+ICsNCj4+ID4gPiAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+PiA+ID4gIAkJCSAgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpICB7DQo+PiA+ID4gIAly ZXR1cm4gQ1VSU09SX0VOQUJMRSB8DQo+PiA+ID4gLQkJQ1VSU09SX0dBTU1BX0VOQUJMRSB8DQo+ PiA+ID4gIAkJQ1VSU09SX0ZPUk1BVF9BUkdCIHwNCj4+ID4gPiAgCQlDVVJTT1JfU1RSSURFKHBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5zdHJpZGUpOw0KPj4gPiA+ICB9DQo+PiA+ID4gQEAg LTk5NDEsNyArOTk4OSw5IEBAIHN0YXRpYyB2b2lkIGk4NDVfdXBkYXRlX2N1cnNvcihzdHJ1Y3Qg aW50ZWxfcGxhbmUNCj4qcGxhbmUsDQo+PiA+ID4gIAkJdW5zaWduZWQgaW50IHdpZHRoID0gcGxh bmVfc3RhdGUtPmJhc2UuY3J0Y193Ow0KPj4gPiA+ICAJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBw bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2g7DQo+PiA+ID4NCj4+ID4gPiAtCQljbnRsID0gcGxhbmVf c3RhdGUtPmN0bDsNCj4+ID4gPiArCQljbnRsID0gcGxhbmVfc3RhdGUtPmN0bCB8DQo+PiA+ID4g KwkJCWk4NDVfY3Vyc29yX2N0bF9jcnRjKGNydGNfc3RhdGUpOw0KPj4gPiA+ICsNCj4+ID4gPiAg CQlzaXplID0gKGhlaWdodCA8PCAxMikgfCB3aWR0aDsNCj4+ID4gPg0KPj4gPiA+ICAJCWJhc2Ug PSBpbnRlbF9jdXJzb3JfYmFzZShwbGFuZV9zdGF0ZSk7IEBAIC0xMDAwNiwyNw0KPisxMDA1Niwz Ng0KPj4gPiA+IEBAIGk5eHhfY3Vyc29yX21heF9zdHJpZGUoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwNCj4+ID4gPiAgCXJldHVybiBwbGFuZS0+YmFzZS5kZXYtPm1vZGVfY29uZmlnLmN1cnNv cl93aWR0aCAqIDQ7ICB9DQo+PiA+ID4NCj4+ID4gPiAtc3RhdGljIHUzMiBpOXh4X2N1cnNvcl9j dGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+PiA+ID4gLQkJ CSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpDQo+PiA+ID4g K3N0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUNCj4+ID4gPiArKmNydGNfc3RhdGUpDQo+PiA+ID4gIHsNCj4+ID4gPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9DQo+PiA+ID4gLQkJdG9faTkxNShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZS0+ZGV2KTsNCj4+ID4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOw0KPj4gPiA+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7DQo+PiA+ ID4gIAl1MzIgY250bCA9IDA7DQo+PiA+ID4NCj4+ID4gPiAtCWlmIChJU19HRU4oZGV2X3ByaXYs IDYpIHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpDQo+PiA+ID4gLQkJY250bCB8PSBNQ1VSU09S X1RSSUNLTEVfRkVFRF9ESVNBQkxFOw0KPj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTEpDQo+PiA+ID4gKwkJcmV0dXJuIGNudGw7DQo+PiA+ID4NCj4+ID4gPiAtCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpIDw9IDEwKSB7DQo+PiA+ID4gLQkJY250bCB8PSBNQ1VSU09SX0dBTU1B X0VOQUJMRTsNCj4+ID4gPiArCWNudGwgfD0gTUNVUlNPUl9HQU1NQV9FTkFCTEU7DQo+PiA+ID4N Cj4+ID4gPiAtCQlpZiAoSEFTX0RESShkZXZfcHJpdikpDQo+PiA+ID4gLQkJCWNudGwgfD0gTUNV UlNPUl9QSVBFX0NTQ19FTkFCTEU7DQo+PiA+ID4gLQl9DQo+PiA+ID4gKwlpZiAoSEFTX0RESShk ZXZfcHJpdikpDQo+PiA+ID4gKwkJY250bCB8PSBNQ1VSU09SX1BJUEVfQ1NDX0VOQUJMRTsNCj4+ ID4gPg0KPj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA1ICYmICFJU19HNFgoZGV2 X3ByaXYpKQ0KPj4gPiA+ICAJCWNudGwgfD0gTUNVUlNPUl9QSVBFX1NFTEVDVChjcnRjLT5waXBl KTsNCj4+ID4gPg0KPj4gPiA+ICsJcmV0dXJuIGNudGw7DQo+PiA+ID4gK30NCj4+ID4gPiArDQo+ PiA+ID4gK3N0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLA0KPj4gPiA+ICsJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKSB7DQo+PiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPQ0KPj4gPiA+ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUt PmRldik7DQo+PiA+ID4gKwl1MzIgY250bCA9IDA7DQo+PiA+ID4gKw0KPj4gPiA+ICsJaWYgKElT X0dFTihkZXZfcHJpdiwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkNCj4+ID4gPiArCQlj bnRsIHw9IE1DVVJTT1JfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7DQo+PiA+ID4gKw0KPj4gPiA+ICAJ c3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cpIHsNCj4+ID4gPiAgCWNhc2UgNjQ6DQo+ PiA+ID4gIAkJY250bCB8PSBNQ1VSU09SX01PREVfNjRfQVJHQl9BWDsgQEAgLTEwMTUxLDcgKzEw MjEwLDgNCj5AQCBzdGF0aWMNCj4+ID4gPiB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLA0KPj4gPiA+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsNCj4+ ID4gPg0KPj4gPiA+ICAJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2li bGUpIHsNCj4+ID4gPiAtCQljbnRsID0gcGxhbmVfc3RhdGUtPmN0bDsNCj4+ID4gPiArCQljbnRs ID0gcGxhbmVfc3RhdGUtPmN0bCB8DQo+PiA+ID4gKwkJCWk5eHhfY3Vyc29yX2N0bF9jcnRjKGNy dGNfc3RhdGUpOw0KPj4gPiA+DQo+PiA+ID4gIAkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNydGNf aCAhPSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cpDQo+PiA+ID4gIAkJCWZiY19jdGwgPSBDVVJf RkJDX0NUTF9FTiB8IChwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2gNCj4tIDEpOw0KPj4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPj4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4+ID4gPiBpbmRleCAzYjA1MWZkZDBmY2Uu Ljg4YWM0MmIyZDdlZCAxMDA2NDQNCj4+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaA0KPj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o DQo+PiA+ID4gQEAgLTE3NTIsOSArMTc1MiwxMCBAQCBzdGF0aWMgaW5saW5lIHUzMg0KPj4gPiA+ IGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq c3RhdGUpDQo+PiA+ID4NCj4+ID4gPiAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+PiA+ID4gIAkJCWNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOw0KPj4gPiA+ICt1MzIgZ2xrX3BsYW5l X2NvbG9yX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+PiA+ID4gKypj cnRjX3N0YXRlKTsNCj4+ID4gPiAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsDQo+PiA+ID4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsNCj4+ID4gPiAtdTMyIGdsa19jb2xvcl9jdGwoY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7DQo+PiA+ID4gK3UzMiBz a2xfcGxhbmVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4+ID4gPiAr KmNydGNfc3RhdGUpOw0KPj4gPiA+ICB1MzIgc2tsX3BsYW5lX3N0cmlkZShjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLA0KPj4gPiA+ICAJCSAgICAgaW50IHBsYW5l KTsNCj4+ID4gPiAgaW50IHNrbF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZQ0KPj4gPiA+ICpwbGFuZV9zdGF0ZSk7IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYw0KPj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMNCj4+ID4gPiBpbmRleCA4ZjM5ODJjMDM5MjUuLmE0NWVmOThiMmY4ZCAxMDA2 NDQNCj4+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYw0KPj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jDQo+PiA+ID4gQEAg LTQ4NCw5ICs0ODQsMTYgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwNCj4+ID4gPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0gcGxhbmVfc3RhdGUt PmxpbmtlZF9wbGFuZTsNCj4+ID4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7DQo+PiA+ID4gIAl1OCBhbHBoYSA9IHBsYW5lX3N0YXRl LT5iYXNlLmFscGhhID4+IDg7DQo+PiA+ID4gKwl1MzIgcGxhbmVfY29sb3JfY3RsID0gMDsNCj4+ ID4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+PiA+ID4gIAl1MzIga2V5bXNrLCBrZXlt YXg7DQo+PiA+ID4NCj4+ID4gPiArCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX2NydGMoY3J0 Y19zdGF0ZSk7DQo+PiA+ID4gKw0KPj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpDQo+PiA+ID4gKwkJcGxhbmVfY29sb3JfY3Rs ID0gcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCB8DQo+PiA+ID4gKwkJCWdsa19wbGFuZV9jb2xvcl9j dGxfY3J0YyhjcnRjX3N0YXRlKTsNCj4+ID4gPiArDQo+PiA+ID4gIAkvKiBTaXplcyBhcmUgMCBi YXNlZCAqLw0KPj4gPiA+ICAJc3JjX3ctLTsNCj4+ID4gPiAgCXNyY19oLS07DQo+PiA+ID4gQEAg LTUzMyw4ICs1NDAsNyBAQCBza2xfcHJvZ3JhbV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLA0KPj4gPiA+ICAJfQ0KPj4gPiA+DQo+PiA+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkNCj4+ID4gPiAtCQlJOTE1X1dSSVRF X0ZXKFBMQU5FX0NPTE9SX0NUTChwaXBlLCBwbGFuZV9pZCksDQo+PiA+ID4gLQkJCSAgICAgIHBs YW5lX3N0YXRlLT5jb2xvcl9jdGwpOw0KPj4gPiA+ICsJCUk5MTVfV1JJVEVfRlcoUExBTkVfQ09M T1JfQ1RMKHBpcGUsIHBsYW5lX2lkKSwNCj4+ID4gPiArcGxhbmVfY29sb3JfY3RsKTsNCj4+ID4g Pg0KPj4gPiA+ICAJaWYgKGZiLT5mb3JtYXQtPmlzX3l1diAmJiBpY2xfaXNfaGRyX3BsYW5lKHBs YW5lKSkNCj4+ID4gPiAgCQlpY2xfcHJvZ3JhbV9pbnB1dF9jc2MocGxhbmUsIGNydGNfc3RhdGUs IHBsYW5lX3N0YXRlKTsgQEANCj4+ID4gPiAtNzMxLDYgKzczNywxMSBAQCB2bHZfdXBkYXRlX2Ns cmMoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlDQo+KnBsYW5lX3N0YXRlKQ0KPj4gPiA+ ICAJCSAgICAgIFNQX1NIX1NJTihzaF9zaW4pIHwgU1BfU0hfQ09TKHNoX2NvcykpOyAgfQ0KPj4g PiA+DQo+PiA+ID4gK3N0YXRpYyB1MzIgdmx2X3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZQ0KPj4gPiA+ICsqY3J0Y19zdGF0ZSkgew0KDQpUaGlzIGFzIHdlbGwg YW5kIG90aGVyIHNpbWlsYXIgb25lcy4NCg0KPj4gPiA+ICsJcmV0dXJuIFNQX0dBTU1BX0VOQUJM RTsNCj4+ID4gPiArfQ0KPj4gPiA+ICsNCj4+ID4gPiAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0 bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4+ID4gPiAgCQkJ ICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKSAgeyBAQCAtDQo+ NzM5LDcNCj4+ID4gPiArNzUwLDcgQEAgc3RhdGljIHUzMiB2bHZfc3ByaXRlX2N0bChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPipjcnRjX3N0YXRlLA0KPj4gPiA+ICAJY29uc3Qgc3Ry dWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsN Cj4+ID4gPiAgCXUzMiBzcHJjdGw7DQo+PiA+ID4NCj4+ID4gPiAtCXNwcmN0bCA9IFNQX0VOQUJM RSB8IFNQX0dBTU1BX0VOQUJMRTsNCj4+ID4gPiArCXNwcmN0bCA9IFNQX0VOQUJMRTsNCj4+ID4g Pg0KPj4gPiA+ICAJc3dpdGNoIChmYi0+Zm9ybWF0LT5mb3JtYXQpIHsNCj4+ID4gPiAgCWNhc2Ug RFJNX0ZPUk1BVF9ZVVlWOg0KPj4gPiA+IEBAIC04MDYsNyArODE3LDYgQEAgdmx2X3VwZGF0ZV9w bGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLA0KPj4gPiA+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOw0KPj4gPiA+ICAJ ZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsNCj4+ID4gPiAgCWVudW0gcGxhbmVfaWQgcGxh bmVfaWQgPSBwbGFuZS0+aWQ7DQo+PiA+ID4gLQl1MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUtPmN0 bDsNCj4+ID4gPiAgCXUzMiBzcHJzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVswXS5vZmZzZXQ7DQo+PiA+ID4gIAl1MzIgbGluZWFyX29mZnNldDsNCj4+ID4gPiAgCWNvbnN0 IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPQ0KPj4gPiA+ICZwbGFuZV9z dGF0ZS0+Y2tleTsgQEAgLTgxNyw2ICs4MjcsOSBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdA0K PmludGVsX3BsYW5lICpwbGFuZSwNCj4+ID4gPiAgCXVpbnQzMl90IHggPSBwbGFuZV9zdGF0ZS0+ Y29sb3JfcGxhbmVbMF0ueDsNCj4+ID4gPiAgCXVpbnQzMl90IHkgPSBwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbMF0ueTsNCj4+ID4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+PiA+ID4g Kwl1MzIgc3ByY3RsOw0KPj4gPiA+ICsNCj4+ID4gPiArCXNwcmN0bCA9IHBsYW5lX3N0YXRlLT5j dGwgfCB2bHZfc3ByaXRlX2N0bF9jcnRjKGNydGNfc3RhdGUpOw0KPj4gPiA+DQo+PiA+ID4gIAkv KiBTaXplcyBhcmUgMCBiYXNlZCAqLw0KPj4gPiA+ICAJY3J0Y193LS07DQo+PiA+ID4gQEAgLTg5 Nyw2ICs5MTAsMTkgQEAgdmx2X3BsYW5lX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLA0KPj4gPiA+ICAJcmV0dXJuIHJldDsNCj4+ID4gPiAgfQ0KPj4gPiA+DQo+PiA+ID4g K3N0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZQ0KPj4gPiA+ICsqY3J0Y19zdGF0ZSkgew0KPj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7DQo+ PiA+ID4gKwl1MzIgc3ByY3RsID0gMDsNCj4+ID4gPiArDQo+PiA+ID4gKwlzcHJjdGwgfD0gU1BS SVRFX0dBTU1BX0VOQUJMRTsNCj4+ID4gPiArDQo+PiA+ID4gKwlpZiAoSVNfSEFTV0VMTChkZXZf cHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkNCj4+ID4gPiArCQlzcHJjdGwgfD0gU1BS SVRFX1BJUEVfQ1NDX0VOQUJMRTsNCj4+ID4gPiArDQo+PiA+ID4gKwlyZXR1cm4gc3ByY3RsOw0K Pj4gPiA+ICt9DQo+PiA+ID4gKw0KPj4gPiA+ICBzdGF0aWMgdTMyIGl2Yl9zcHJpdGVfY3RsKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPj4gPiA+ICAJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpICB7IEBAIC0NCj45MDcs MTQNCj4+ID4gPiArOTMzLDExIEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUNCj4qY3J0Y19zdGF0ZSwNCj4+ID4gPiAgCWNvbnN0IHN0cnVj dCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7DQo+ PiA+ID4gIAl1MzIgc3ByY3RsOw0KPj4gPiA+DQo+PiA+ID4gLQlzcHJjdGwgPSBTUFJJVEVfRU5B QkxFIHwgU1BSSVRFX0dBTU1BX0VOQUJMRTsNCj4+ID4gPiArCXNwcmN0bCA9IFNQUklURV9FTkFC TEU7DQo+PiA+ID4NCj4+ID4gPiAgCWlmIChJU19JVllCUklER0UoZGV2X3ByaXYpKQ0KPj4gPiA+ ICAJCXNwcmN0bCB8PSBTUFJJVEVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7DQo+PiA+ID4NCj4+ID4g PiAtCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQ0K Pj4gPiA+IC0JCXNwcmN0bCB8PSBTUFJJVEVfUElQRV9DU0NfRU5BQkxFOw0KPj4gPiA+IC0NCj4+ ID4gPiAgCXN3aXRjaCAoZmItPmZvcm1hdC0+Zm9ybWF0KSB7DQo+PiA+ID4gIAljYXNlIERSTV9G T1JNQVRfWEJHUjg4ODg6DQo+PiA+ID4gIAkJc3ByY3RsIHw9IFNQUklURV9GT1JNQVRfUkdCWDg4 OCB8DQo+U1BSSVRFX1JHQl9PUkRFUl9SR0JYOyBAQA0KPj4gPiA+IC05NjYsNyArOTg5LDYgQEAg aXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLCAgew0KPj4gPiA+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5k ZXYpOw0KPj4gPiA+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsNCj4+ID4gPiAtCXUz MiBzcHJjdGwgPSBwbGFuZV9zdGF0ZS0+Y3RsLCBzcHJzY2FsZSA9IDA7DQo+PiA+ID4gIAl1MzIg c3Byc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0Ow0KPj4g PiA+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7DQo+PiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVs X3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0NCj4+ID4gPiAmcGxhbmVfc3RhdGUtPmNrZXk7IEBAIC05 NzgsOCArMTAwMCwxMSBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdA0KPmludGVsX3BsYW5lICpw bGFuZSwNCj4+ID4gPiAgCXVpbnQzMl90IHkgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0u eTsNCj4+ID4gPiAgCXVpbnQzMl90IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTY7DQo+PiA+ID4gIAl1aW50MzJfdCBzcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsNCj4+ID4gPiArCXUzMiBzcHJjdGws IHNwcnNjYWxlID0gMDsNCj4+ID4gPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7DQo+PiA+ID4N Cj4+ID4gPiArCXNwcmN0bCA9IHBsYW5lX3N0YXRlLT5jdGwgfCBpdmJfc3ByaXRlX2N0bF9jcnRj KGNydGNfc3RhdGUpOw0KPj4gPiA+ICsNCj4+ID4gPiAgCS8qIFNpemVzIGFyZSAwIGJhc2VkICov DQo+PiA+ID4gIAlzcmNfdy0tOw0KPj4gPiA+ICAJc3JjX2gtLTsNCj4+ID4gPiBAQCAtMTA3NCw2 ICsxMDk5LDExIEBAIGc0eF9zcHJpdGVfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxfcGxhbmUNCj4q cGxhbmUsDQo+PiA+ID4gIAlyZXR1cm4gMTYzODQ7DQo+PiA+ID4gIH0NCj4+ID4gPg0KPj4gPiA+ ICtzdGF0aWMgdTMyIGc0eF9zcHJpdGVfY3RsX2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUNCj4+ID4gPiArKmNydGNfc3RhdGUpIHsNCj4+ID4gPiArCXJldHVybiBEVlNfR0FNTUFf RU5BQkxFOw0KPj4gPiA+ICt9DQo+PiA+ID4gKw0KPj4gPiA+ICBzdGF0aWMgdTMyIGc0eF9zcHJp dGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPj4gPiA+ ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpICB7IEBA IC0NCj4xMDg0LDcNCj4+ID4gPiArMTExNCw3IEBAIHN0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUNCj4qY3J0Y19zdGF0ZSwNCj4+ID4gPiAgCWNv bnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUt PmNrZXk7DQo+PiA+ID4gIAl1MzIgZHZzY250cjsNCj4+ID4gPg0KPj4gPiA+IC0JZHZzY250ciA9 IERWU19FTkFCTEUgfCBEVlNfR0FNTUFfRU5BQkxFOw0KPj4gPiA+ICsJZHZzY250ciA9IERWU19F TkFCTEU7DQo+PiA+ID4NCj4+ID4gPiAgCWlmIChJU19HRU4oZGV2X3ByaXYsIDYpKQ0KPj4gPiA+ ICAJCWR2c2NudHIgfD0gRFZTX1RSSUNLTEVfRkVFRF9ESVNBQkxFOyBAQCAtMTE0MCw3ICsxMTcw LDYNCj5AQA0KPj4gPiA+IGc0eF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwgIHsNCj4+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmUtPmJhc2UuZGV2KTsNCj4+ID4gPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBp cGU7DQo+PiA+ID4gLQl1MzIgZHZzY250ciA9IHBsYW5lX3N0YXRlLT5jdGwsIGR2c3NjYWxlID0g MDsNCj4+ID4gPiAgCXUzMiBkdnNzdXJmX29mZnNldCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVswXS5vZmZzZXQ7DQo+PiA+ID4gIAl1MzIgbGluZWFyX29mZnNldDsNCj4+ID4gPiAgCWNvbnN0 IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPQ0KPj4gPiA+ICZwbGFuZV9z dGF0ZS0+Y2tleTsgQEAgLTExNTIsOCArMTE4MSwxMSBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVj dA0KPmludGVsX3BsYW5lICpwbGFuZSwNCj4+ID4gPiAgCXVpbnQzMl90IHkgPSBwbGFuZV9zdGF0 ZS0+Y29sb3JfcGxhbmVbMF0ueTsNCj4+ID4gPiAgCXVpbnQzMl90IHNyY193ID0gZHJtX3JlY3Rf d2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7DQo+PiA+ID4gIAl1aW50MzJfdCBz cmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsNCj4+ ID4gPiArCXUzMiBkdnNjbnRyLCBkdnNzY2FsZSA9IDA7DQo+PiA+ID4gIAl1bnNpZ25lZCBsb25n IGlycWZsYWdzOw0KPj4gPiA+DQo+PiA+ID4gKwlkdnNjbnRyID0gcGxhbmVfc3RhdGUtPmN0bCB8 IGc0eF9zcHJpdGVfY3RsX2NydGMoY3J0Y19zdGF0ZSk7DQo+PiA+ID4gKw0KPj4gPiA+ICAJLyog U2l6ZXMgYXJlIDAgYmFzZWQgKi8NCj4+ID4gPiAgCXNyY193LS07DQo+PiA+ID4gIAlzcmNfaC0t Ow0KPj4gPiA+IC0tDQo+PiA+ID4gMi4xOS4yDQo+PiA+ID4NCj4+ID4NCj4+ID4gLS0NCj4+ID4g TWF0dCBSb3Blcg0KPj4gPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcg0KPj4gPiBJb1RHIFBs YXRmb3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQgSW50ZWwgQ29ycG9yYXRpb24NCj4+ID4gKDkx NikgMzU2LTI3OTUNCj4+DQo+PiAtLQ0KPj4gVmlsbGUgU3lyasOkbMOkDQo+PiBJbnRlbA0KPj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QNCj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 DQo+DQo+LS0NCj5WaWxsZSBTeXJqw6Rsw6QNCj5JbnRlbA0KPl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdA0KPklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj5odHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==