From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id AFC4037AA for ; Mon, 13 Jun 2016 15:19:22 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP; 13 Jun 2016 06:19:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,466,1459839600"; d="scan'208,217";a="986395791" Received: from irsmsx152.ger.corp.intel.com ([163.33.192.66]) by fmsmga001.fm.intel.com with ESMTP; 13 Jun 2016 06:18:58 -0700 Received: from irsmsx108.ger.corp.intel.com ([169.254.11.183]) by IRSMSX152.ger.corp.intel.com ([169.254.6.247]) with mapi id 14.03.0248.002; Mon, 13 Jun 2016 14:18:57 +0100 From: "Dumitrescu, Cristian" To: Ethan CC: "dev@dpdk.org" , "Singh, Jasvinder" , "Yigit, Ferruh" Thread-Topic: [PATCH] port: add kni interface support Thread-Index: AQHRuNPzqUvoK3y1DESiX5+hyUDcX5/hyG9ggAV3MYCAACoEEA== Date: Mon, 13 Jun 2016 13:18:56 +0000 Message-ID: <3EB4FA525960D640B5BDFFD6A3D8912647A03BCB@IRSMSX108.ger.corp.intel.com> References: <1464325653-6912-1-git-send-email-zhuangwj@gmail.com> <1464434757-10860-1-git-send-email-zhuangwj@gmail.com> <3EB4FA525960D640B5BDFFD6A3D8912647A00F57@IRSMSX108.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNTVhZTZjOTYtNDkyMi00ZjhkLTg1NDEtN2QwMWY3ZmYyMjdkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6ImFMMk5aejVuWm52YVpvakFyS0ZCMXZPdG5CeDBIcVlpVHFxNnY4akRqQ0U9In0= x-ctpclassification: CTP_IC x-originating-ip: [163.33.239.181] MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH] port: add kni interface support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jun 2016 13:19:25 -0000 SGkgRXRoYW4sDQoNCkdyZWF0LCB3ZeKAmWxsIHdhaXQgZm9yIHlvdXIgcGF0Y2ggbGF0ZXIgdGhp cyB3ZWVrIHRoZW4uIEkgcmVjb21tZW5kIHlvdSBhZGQgYW55IG90aGVyIGNoYW5nZXMgdGhhdCB5 b3UgbWlnaHQgaGF2ZSBvbiB0b3Agb2YgdGhlIGxhdGVzdCBjb2RlIHRoYXQgSSBqdXN0IHNlbmQs IGFzIHRoaXMgd2lsbCBtaW5pbWl6ZSB5b3VyIHdvcmssIG15IHdvcmsgdG8gZnVydGhlciBjb2Rl IHJldmlld3MgYW5kIG51bWJlciBvZiBmdXR1cmUgaXRlcmF0aW9ucyB0byBtZXJnZSB0aGlzIHBh dGNoLg0KDQpBbnN3ZXJzIHRvIHlvdXIgcXVlc3Rpb25zIGFyZSBpbmxpbmVkIGJlbG93Lg0KDQpS ZWdhcmRzLA0KQ3Jpc3RpYW4NCg0KRnJvbTogemh1YW5nd2VpamllQGdtYWlsLmNvbSBbbWFpbHRv OnpodWFuZ3dlaWppZUBnbWFpbC5jb21dIE9uIEJlaGFsZiBPZiBFdGhhbg0KU2VudDogTW9uZGF5 LCBKdW5lIDEzLCAyMDE2IDExOjQ4IEFNDQpUbzogRHVtaXRyZXNjdSwgQ3Jpc3RpYW4gPGNyaXN0 aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPg0KQ2M6IGRldkBkcGRrLm9yZzsgU2luZ2gsIEphc3Zp bmRlciA8amFzdmluZGVyLnNpbmdoQGludGVsLmNvbT47IFlpZ2l0LCBGZXJydWggPGZlcnJ1aC55 aWdpdEBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW1BBVENIXSBwb3J0OiBhZGQga25pIGludGVy ZmFjZSBzdXBwb3J0DQoNCkhpIENyaXN0aWFuLA0KDQpJJ3ZlIGdvdCB5b3VyIGNvbW1lbnRzLiBU aGFuayB5b3UgZm9yIHJldmlldyB0aGUgY29kZSBmcm9tIGEgRFBESyBuZXdiaWUuIDotKQ0KSSBw bGFuIHRvIHN1Ym1pdCBhIG5ldyBwYXRjaCB0byBmaXggYWxsIGR1cmluZyB0aGlzIHdlZWsgaG9w ZWZ1bGx5Lg0KDQpUaGVyZSBhcmUgZm91ciBwbGFjZXMgSSdkIGxpa2UgdG8gZGlzY3VzcyBmdXJ0 aGVyOg0KDQoxLiBEZWRpY2F0ZWQgbGNvcmUgZm9yIGtuaSBrZXJuZWwgdGhyZWFkDQpGaXJzdCBv ZiBhbGwsIGl0IGlzIGEgYnVnIHRvIGFkZCBrbmkga2VybmVsIGNvcmUgdG8gdGhlIHVzZXIgc3Bh Y2UgY29yZSBtYXNrLiBXaGF0IEkgd2FudCBpcyBqdXN0IHRvIGNoZWNrIGlmIHRoZSBrbmkga2Vy bmVsIHRocmVhZCBoYXMgYSBkZWRpY2F0ZWQgY29yZS4NClRoZSByZWFzb24gSSBwcmVmZXIgdG8g YWxsb2NhdGUgYSBkZWRpY2F0ZWQgY29yZSB0byBrbmkga2VybmVsIHRocmVhZCBpcyB0aGF0IG15 IGFwcGxpY2F0aW9uIGlzIGxhdGVuY3kgc2Vuc2l0aXZlLiBJIHdvcnJ5IHRoZSBjb250ZXh0IHN3 aXRjaCBhbmQgY2FjaGUgbWlzcyB3aWxsIGNhdXNlIHRoZSBsYXRlbmN5IGluY3JlYXNpbmcgaWYg dGhlIGtuaSBrZXJuZWwgdGhyZWFkIGFuZCBhcHBsaWNhdGlvbiB0aHJlYWQgc2hhcmUgb25lIGNv cmUuDQpBbnl3YXksIEkgdGhpbmsgSSBzaG91bGQgcmVtb3ZlIHRoZSBoYXJkIGNvZGVkIGNoZWNr IGJlY2F1c2UgaXQgd2lsbCBiZSBtb3JlIGdlbmVyaWMuIFVzZXJzIHdobyBoYXMgdGhlIHNpbWls YXIgdXNhZ2UgbGlrZSBtaW5lIGNhbiBhY2hpZXZlIHNvIHRocm91Z2ggY29uZmlndXJhdGlvbiBm aWxlLg0KDQpbQ3Jpc3RpYW5dIEkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgdXNlciBzaG91bGQg YmUgYWJsZSB0byBzcGVjaWZ5IHRoZSBjb3JlIHdoZXJlIHRoZSBrZXJuZWwgdGhyZWFkIHNob3Vs ZCBydW4sIGFuZCB0aGlzIHJlcXVpcmVtZW50IGlzIGZ1bGx5IG1ldCBieSB0aGUgbGF0ZXN0IGNv ZGUgSSBzZW50LCBidXQgaW1wbGVtZW50ZWQgaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5LCB3 aGljaCBJIHRoaW5rIGl0IGlzIGEgY2xlYW5lciB3YXkuDQoNCkluIHlvdXIgaW5pdGlhbCBzb2x1 dGlvbiwgdGhlIGFwcGxpY2F0aW9uIHJlZGVmaW5lcyB0aGUgbWVhbmluZyBvZiB0aGUgY29yZSBt YXNrIGFzIHRoZSByZXVuaW9uIG9mIGNvcmVzIHVzZWQgYnkgdGhlIHVzZXIgc3BhY2UgYXBwbGlj YXRpb24gKGNvcmVzIHJ1bm5pbmcgdGhlIHBpcGVsaW5lcykgYW5kIHRoZSBjb3JlcyB1c2VkIHRv IHJ1biB0aGUga2VybmVsIHNwYWNlIEtOSSB0aHJlYWRzLiBUaGlzIGRvZXMgbm90IG1ha2Ugc2Vu c2UgdG8gbWUuIFRoZSBhcHBsaWNhdGlvbiBpcyBpbiB1c2VyIHNwYWNlIGFuZCBpdCBkb2VzIG5v dCBzdGFydCBvciBtYW5hZ2UgYW55IGtlcm5lbCB0aHJlYWRzIGl0c2VsZiwgd2h5IHNob3VsZCB0 aGUgYXBwbGljYXRpb24gd29ycnkgYWJvdXQgdGhlIGNvcmVzIHJ1bm5pbmcga2VybmVsIHRocmVh ZHM/IFRoZSBhcHBsaWNhdGlvbiBzaG91bGQganVzdCBwaWNrIHVwIHRoZSB1c2VyIGluc3RydWN0 aW9ucyBmcm9tIHRoZSBjb25maWcgZmlsZSBhbmQgc2VuZCB0aGVtIHRvIHRoZSBLTkkga2VybmVs IG1vZHVsZSB0cmFuc3BhcmVudGx5Lg0KDQpJbiB0aGUgY29kZSB0aGF0IEkganVzdCBzZW50LCB0 aGUgYXBwbGljYXRpb24gcHJlc2VydmVzIHRoZSBjdXJyZW50IGRlZmluaXRpb24gb2YgdGhlIGNv cmUgbWFzaywgaS5lLiBqdXN0IHRoZSBjb2xsZWN0aW9uIG9mIGNvcmVzIHJ1bm5pbmcgdGhlIHBp cGVsaW5lcy4gVGhpcyBsZWFkcyB0byBzaW1wbGVyIGNvZGUgdGhhdCBtZWV0cyBhbGwgdGhlIHJl cXVpcmVtZW50cyBmb3Iga2VybmVsIHRocmVhZHMgYWZmaW5pdHk6DQppKSBUaGUgdXNlciB3YW50 cyB0byBhZmZpbml0aXplIHRoZSBrZXJuZWwgdGhyZWFkIHRvIGEgQ1BVIGNvcmUgdGhhdCBpcyBu b3QgdXNlZCB0byBydW4gYW55IHBpcGVsaW5lICh0aGlzIGNvcmUgd2lsbCBydW4ganVzdCBLTkkg a2VybmVsIHRocmVhZHMpOiBDb3JlIGVudHJ5IGluIEtOSSBzZWN0aW9uIGlzIHNldCB0byBiZSBk aWZmZXJlbnQgdGhhbiB0aGUgY29yZSBlbnRyeSBvZiBhbnkgUElQRUxJTkUgc2VjdGlvbiBpbiB0 aGUgY29uZmlnIGZpbGU7DQppaSkgVGhlIHVzZXIgYWZmaW5pdGl6ZXMgdGhlIGtlcm5lbCB0aHJl YWQgdG8gYSBDUFUgY29yZSB0aGF0IGFsc28gcnVucyBzb21lIG9mIHRoZSBwaXBlbGluZXMgKHRo aXMgY29yZSB3aWxsIHJ1biBib3RoIHVzZXIgc3BhY2UgYW5kIGtlcm5lbCBzcGFjZSB0aHJlYWRz KTogQ29yZSBlbnRyeSBpbiBLTkkgc2VjdGlvbiBpcyBlcXVhbCB0byB0aGUgY29yZSBlbnRyeSBp biBvbmUgb3Igc2V2ZXJhbCBvZiB0aGUgUElQRUxJTkUgc2VjdGlvbnMgaW4gdGhlIGNvbmZpZyBm aWxlOw0KaWlpKSBUaGUgdXNlciBkb2VzIG5vdCBhZmZpbml0aXplIHRoZSBrZXJuZWwgdGhyZWFk IHRvIGFueSBDUFUgY29yZSwgc28gdGhlIGtlcm5lbCBkZWNpZGVzIHRoZSBzY2hlZHVsaW5nIHBv bGljeSBmb3IgdGhlIEtOSSB0aHJlYWRzOiBDb3JlIGVudHJ5IG9mIHRoZSBLTkkgc2VjdGlvbiBp cyBub3QgcHJlc2VudDsgdGhpcyByZXN1bHRzIGluIGZvcmNlX2JpbmQgS05JIHBhcmFtZXRlciB0 byBiZSBzZXQgdG8gMC4NCg0KTWFrZXMgc2Vuc2U/DQoNCjIuIFRoZSBjb21waWxlciBlcnJvciBv ZiB0aGUgTWFjcm8gUlRFX1BPUlRfS05JX1dSSVRFUl9TVEFUU19QS1RTX0lOX0FERA0KQWN0dWFs bHkgSSBpbXBsZW1lbnRzIHRoZSBtYWNybyBzaW1pbGFyIHRvIFJURV9QT1JUX1JJTkdfUkVBREVS X1NUQVRTX1BLVFNfSU5fQUREIGZpcnN0LiBCdXQgdGhlIHNjcmlwdHMvY2hlY2twYXRjaGVzLnNo IGZhaWxzOiBFUlJPUjpDT01QTEVYX01BQ1JPOiBNYWNyb3Mgd2l0aCBjb21wbGV4IHZhbHVlcyBz aG91bGQgYmUgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMNCkknbSBub3Qgc2hhcmUgZWl0aGVyIEkg aGF2ZSBkb25lIHNvbWV0aGluZyB3cm9uZyBvciB0aGUgY2hlY2twYXRjaGVzIHNjcmlwdCBuZWVk IGFuIHVwZGF0ZS4NCg0KW0NyaXN0aWFuXSBMZXTigJlzIHVzZSB0aGUgc2FtZSBjb25zaXN0ZW50 IHJ1bGUgdG8gY3JlYXRlIHRoZSBzdGF0cyBtYWNyb3MgZm9yIGFsbCB0aGUgcG9ydHMsIGkuZS4g Zm9sbG93IHRoZSBleGlzdGluZyBydWxlIHVzZWQgZm9yIG90aGVyIHBvcnRzLiBZb3UgY2FuIGln bm9yZSB0aGlzIGNoZWNrIHBhdGNoIGlzc3VlLg0KDQozLiBLTkkga2VybmVsIG9wZXJhdGlvbnMg Y2FsbGJhY2sNClRvIGJlICBob25lc3QsIEkgbWFkZSByZWZlcmVuY2UgdG8gdGhlIHRoZSBLTkkg c2FtcGxlIGFwcGxpY2F0aW9uLg0KU2luY2UgdGhlcmUgaXMgdmVyeSBsaXR0bGUgZG9jcyB0ZWxs IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbGluayB1cCBjYWxsIGFuZCBkZXZpY2Ugc3RhcnQgY2Fs bCwgSSBhbSBub3Qgc3VyZSB3aGljaCBvbmUgaXMgYmV0dGVyIGhlcmUuDQpBbnkgaGVscCB3aWxs IGJlIGFwcHJlY2lhdGUuIDotKQ0KDQpbQ3Jpc3RpYW5dIEkgc3VnZ2VzdCB5b3UgdXNlIHRoZSBv bmVzIGZyb20gdGhlIGNvZGUgdGhhdCBJIGp1c3Qgc2VudC4NCg0KNC4gU2hhbGwgSSB1c2UgRFBE S18xNi4wNyBpbiB0aGUgIGxpYnJ0ZV9wb3J0L3J0ZV9wb3J0X3ZlcnNpb24ubWFwIGZpbGU/DQoN CltDcmlzdGlhbl0gWWVzLg0KDQoNCjIwMTYtMDYtMTAgNzo0MiBHTVQrMDg6MDAgRHVtaXRyZXNj dSwgQ3Jpc3RpYW4gPGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tPG1haWx0bzpjcmlzdGlh bi5kdW1pdHJlc2N1QGludGVsLmNvbT4+Og0KSGkgRXRoYW4sDQoNCkdyZWF0IHdvcmshIFRoZXJl IGFyZSBzdGlsbCBzZXZlcmFsIGNvbW1lbnRzIGJlbG93IHRoYXQgbmVlZCB0byBiZSBhZGRyZXNz ZWQsIGJ1dCBJIGFtIGNvbmZpZGVudCB3ZSBjYW4gY2xvc2Ugb24gdGhlbSBxdWlja2x5LiBUaGFu ayB5b3UhDQoNClBsZWFzZSByZWJhc2UgdGhlIG5leHQgdmVyc2lvbiBvbiB0b3Agb2YgdGhlIGxh dGVzdCBjb2RlIG9uIG1hc3RlciBicmFuY2guDQoNClBsZWFzZSBhbHNvIHVwZGF0ZSBsaWJydGVf cG9ydC9ydGVfcG9ydF92ZXJzaW9uLm1hcCBmaWxlLg0KDQpTaGFsbCBJIHVzZSBEUERLXzE2LjA3 IGluIHRoZSAgbGlicnRlX3BvcnQvcnRlX3BvcnRfdmVyc2lvbi5tYXAgZmlsZT8NCg0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdlaUppZSBaaHVhbmcgW21haWx0bzp6 aHVhbmd3akBnbWFpbC5jb208bWFpbHRvOnpodWFuZ3dqQGdtYWlsLmNvbT5dDQo+IFNlbnQ6IFNh dHVyZGF5LCBNYXkgMjgsIDIwMTYgMTI6MjYgUE0NCj4gVG86IER1bWl0cmVzY3UsIENyaXN0aWFu IDxjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbTxtYWlsdG86Y3Jpc3RpYW4uZHVtaXRyZXNj dUBpbnRlbC5jb20+Pg0KPiBDYzogZGV2QGRwZGsub3JnPG1haWx0bzpkZXZAZHBkay5vcmc+OyBX ZWlKaWUgWmh1YW5nIDx6aHVhbmd3akBnbWFpbC5jb208bWFpbHRvOnpodWFuZ3dqQGdtYWlsLmNv bT4+DQo+IFN1YmplY3Q6IFtQQVRDSF0gcG9ydDogYWRkIGtuaSBpbnRlcmZhY2Ugc3VwcG9ydA0K Pg0KPiAxLiBhZGQgS05JIHBvcnQgdHlwZSB0byB0aGUgcGFja2V0IGZyYW1ld29yaw0KPiAyLiBh ZGQgS05JIHN1cHBvcnQgdG8gdGhlIElQIFBpcGVsaW5lIHNhbXBsZSBBcHBsaWNhdGlvbg0KPg0K PiBTaWduZWQtb2ZmLWJ5OiBXZWlKaWUgWmh1YW5nIDx6aHVhbmd3akBnbWFpbC5jb208bWFpbHRv OnpodWFuZ3dqQGdtYWlsLmNvbT4+DQo+IC0tLQ0KPiB2MjoNCj4gKiBGaXggY2hlY2sgcGF0Y2gg ZXJyb3IuDQo+IC0tLQ0KPiAgZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZDxodHRwOi8vZG94eS1h cGktaW5kZXgubWQ+ICAgICAgICAgICB8ICAgMSArDQo+ICBleGFtcGxlcy9pcF9waXBlbGluZS9N YWtlZmlsZSAgICAgICB8ICAgNiArLQ0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUvYXBwLmggICAg ICAgICAgfCAgNzQgKysrKysrKysrDQo+ICBleGFtcGxlcy9pcF9waXBlbGluZS9jb25maWcva25p LmNmZyB8ICAxMiArKw0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnX2NoZWNrLmMgfCAg MzQgKysrKw0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnX3BhcnNlLmMgfCAxMzAgKysr KysrKysrKysrKysrDQo+ICBleGFtcGxlcy9pcF9waXBlbGluZS9pbml0LmMgICAgICAgICB8ICA3 OSArKysrKysrKysNCj4gIGV4YW1wbGVzL2lwX3BpcGVsaW5lL2tuaS9rbmkuYyAgICAgIHwgIDgw ICsrKysrKysrKw0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUva25pL2tuaS5oICAgICAgfCAgMTYg KysNCj4gIGV4YW1wbGVzL2lwX3BpcGVsaW5lL3BpcGVsaW5lX2JlLmggIHwgIDEzICsrDQo+ICBl eGFtcGxlcy9pcF9waXBlbGluZS90aHJlYWQuYyAgICAgICB8ICAgOSArDQo+ICBsaWIvbGlicnRl X3BvcnQvTWFrZWZpbGUgICAgICAgICAgICB8ICAgNyArDQo+ICBsaWIvbGlicnRlX3BvcnQvcnRl X3BvcnRfa25pLmMgICAgICB8IDMxNg0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCj4gIGxpYi9saWJydGVfcG9ydC9ydGVfcG9ydF9rbmkuaCAgICAgIHwgIDgxICsrKysr KysrKw0KPiAgMTQgZmlsZXMgY2hhbmdlZCwgODU2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnL2tu aS5jZmcNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9pcF9waXBlbGluZS9rbmkva25p LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBleGFtcGxlcy9pcF9waXBlbGluZS9rbmkva25pLmgN Cj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3BvcnQvcnRlX3BvcnRfa25pLmMNCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3BvcnQvcnRlX3BvcnRfa25pLmgNCj4NCj4g ZGlmZiAtLWdpdCBhL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQ8aHR0cDovL2RveHktYXBpLWlu ZGV4Lm1kPiBiL2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQ8aHR0cDovL2RveHktYXBpLWluZGV4 Lm1kPg0KPiBpbmRleCBmNjI2Mzg2Li5lMzhhOTU5IDEwMDY0NA0KPiAtLS0gYS9kb2MvYXBpL2Rv eHktYXBpLWluZGV4Lm1kPGh0dHA6Ly9kb3h5LWFwaS1pbmRleC5tZD4NCj4gKysrIGIvZG9jL2Fw aS9kb3h5LWFwaS1pbmRleC5tZDxodHRwOi8vZG94eS1hcGktaW5kZXgubWQ+DQo+IEBAIC0xMTks NiArMTE5LDcgQEAgVGhlcmUgYXJlIG1hbnkgbGlicmFyaWVzLCBzbyB0aGVpciBoZWFkZXJzIG1h eSBiZQ0KPiBncm91cGVkIGJ5IHRvcGljczoNCj4gICAgICBbcmVhc3NdICAgICAgICAgICAgKEBy ZWYgcnRlX3BvcnRfcmFzLmgpLA0KPiAgICAgIFtzY2hlZF0gICAgICAgICAgICAoQHJlZiBydGVf cG9ydF9zY2hlZC5oKSwNCj4gICAgICBbc3JjL3NpbmtdICAgICAgICAgKEByZWYgcnRlX3BvcnRf c291cmNlX3NpbmsuaCkNCj4gKyAgICBba25pXSAgICAgICAgICAgICAgKEByZWYgcnRlX3BvcnRf a25pLmgpDQo+ICAgICogW3RhYmxlXSAgICAgICAgICAgIChAcmVmIHJ0ZV90YWJsZS5oKToNCj4g ICAgICBbbHBtIElQdjRdICAgICAgICAgKEByZWYgcnRlX3RhYmxlX2xwbS5oKSwNCj4gICAgICBb bHBtIElQdjZdICAgICAgICAgKEByZWYgcnRlX3RhYmxlX2xwbV9pcHY2LmgpLA0KPiBkaWZmIC0t Z2l0IGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUvTWFrZWZpbGUgYi9leGFtcGxlcy9pcF9waXBlbGlu ZS9NYWtlZmlsZQ0KPiBpbmRleCAxMGZlMWJhLi44NDhjMmFhIDEwMDY0NA0KPiAtLS0gYS9leGFt cGxlcy9pcF9waXBlbGluZS9NYWtlZmlsZQ0KPiArKysgYi9leGFtcGxlcy9pcF9waXBlbGluZS9N YWtlZmlsZQ0KPiBAQCAtNDMsOSArNDMsMTAgQEAgaW5jbHVkZSAkKFJURV9TREspL21rL3J0ZS52 YXJzLm1rPGh0dHA6Ly9ydGUudmFycy5taz4NCj4gICMgYmluYXJ5IG5hbWUNCj4gIEFQUCA9IGlw X3BpcGVsaW5lDQo+DQo+ICtWUEFUSCArPSAkKFNSQ0RJUikva25pDQo+ICBWUEFUSCArPSAkKFNS Q0RJUikvcGlwZWxpbmUNCj4NCj4gLUlOQyArPSAkKHdpbGRjYXJkICouaCkgJCh3aWxkY2FyZCBw aXBlbGluZS8qLmgpDQo+ICtJTkMgKz0gJCh3aWxkY2FyZCAqLmgpICQod2lsZGNhcmQgcGlwZWxp bmUvKi5oKSAkKHdpbGRjYXJkIGtuaS8qLmgpDQo+DQo+ICAjIGFsbCBzb3VyY2UgYXJlIHN0b3Jl ZCBpbiBTUkNTLXkNCj4gIFNSQ1MtJChDT05GSUdfUlRFX0xJQlJURV9QSVBFTElORSkgOj0gbWFp bi5jDQo+IEBAIC01Niw2ICs1Nyw3IEBAIFNSQ1MtJChDT05GSUdfUlRFX0xJQlJURV9QSVBFTElO RSkgKz0gaW5pdC5jDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IHRo cmVhZC5jDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IHRocmVhZF9m ZS5jDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IGNwdV9jb3JlX21h cC5jDQo+ICtTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IGtuaS5jDQo+DQo+ ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IHBpcGVsaW5lX2NvbW1vbl9i ZS5jDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IHBpcGVsaW5lX2Nv bW1vbl9mZS5jDQo+IEBAIC03Miw3ICs3NCw3IEBAIFNSQ1MtJChDT05GSUdfUlRFX0xJQlJURV9Q SVBFTElORSkgKz0NCj4gcGlwZWxpbmVfZmxvd19hY3Rpb25zLmMNCj4gIFNSQ1MtJChDT05GSUdf UlRFX0xJQlJURV9QSVBFTElORSkgKz0gcGlwZWxpbmVfcm91dGluZ19iZS5jDQo+ICBTUkNTLSQo Q09ORklHX1JURV9MSUJSVEVfUElQRUxJTkUpICs9IHBpcGVsaW5lX3JvdXRpbmcuYw0KPg0KPiAt Q0ZMQUdTICs9IC1JJChTUkNESVIpIC1JJChTUkNESVIpL3BpcGVsaW5lDQo+ICtDRkxBR1MgKz0g LUkkKFNSQ0RJUikgLUkkKFNSQ0RJUikvcGlwZWxpbmUgLUkkKFNSQ0RJUikva25pDQo+ICBDRkxB R1MgKz0gLU8zDQo+ICBDRkxBR1MgKz0gJChXRVJST1JfRkxBR1MpIC1Xbm8tZXJyb3I9dW51c2Vk LWZ1bmN0aW9uIC1Xbm8tDQo+IGVycm9yPXVudXNlZC12YXJpYWJsZQ0KPg0KSSB3b3VsZCBsaWtl IHRvIGF2b2lkIGNyZWF0aW5nIHRoZSBrbmkgc3ViZm9sZGVyLiBQbGVhc2UgbW92ZSB0aGUgZnVu Y3Rpb25zIGZyb20ga25pL2tuaS5jIHRvIGluaXQuYyBmaWxlLCBqdXN0IGJlZm9yZSBmdW5jdGlv biBhcHBfaW5pdF9rbmkoKSwgd2hlcmUgdGhleSBzaG91bGQgYmUgZGVjbGFyZWQgYXMgc3RhdGlj IGZ1bmN0aW9ucy4NCg0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUvYXBwLmgg Yi9leGFtcGxlcy9pcF9waXBlbGluZS9hcHAuaA0KPiBpbmRleCBlNzc1MDI0Li5hODZjZTU3IDEw MDY0NA0KPiAtLS0gYS9leGFtcGxlcy9pcF9waXBlbGluZS9hcHAuaA0KPiArKysgYi9leGFtcGxl cy9pcF9waXBlbGluZS9hcHAuaA0KPiBAQCAtNDQsNyArNDQsOSBAQA0KPiAgI2luY2x1ZGUgPGNt ZGxpbmVfcGFyc2UuaD4NCj4NCj4gICNpbmNsdWRlIDxydGVfZXRoZGV2Lmg+DQo+ICsjaW5jbHVk ZSA8cnRlX2tuaS5oPg0KPg0KPiArI2luY2x1ZGUgImtuaS5oIg0KPiAgI2luY2x1ZGUgImNwdV9j b3JlX21hcC5oIg0KPiAgI2luY2x1ZGUgInBpcGVsaW5lLmgiDQo+DQo+IEBAIC05OSw2ICsxMDEs MTggQEAgc3RydWN0IGFwcF9wa3RxX2h3cV9vdXRfcGFyYW1zIHsNCj4gICAgICAgc3RydWN0IHJ0 ZV9ldGhfdHhjb25mIGNvbmY7DQo+ICB9Ow0KPg0KPiArc3RydWN0IGFwcF9rbmlfcGFyYW1zIHsN Cj4gKyAgICAgY2hhciAqbmFtZTsNCj4gKyAgICAgdWludDMyX3QgcGFyc2VkOw0KPiArDQo+ICsg ICAgIHVpbnQzMl90IHNvY2tldF9pZDsNCj4gKyAgICAgdWludDMyX3QgY29yZV9pZDsNCj4gKyAg ICAgdWludDMyX3QgaHlwZXJfdGhfaWQ7DQo+ICsNCj4gKyAgICAgdWludDMyX3QgbWVtcG9vbF9p ZDsNCg0KUGxlYXNlIGFkZCB0aGUgdXN1YWwgY29tbWVudCBvbiB0aGUgc2FtZSBsaW5lOiAvKiBQ b3NpdGlvbiBpbiB0aGUgYXBwLT5tZW1wb29sX3BhcmFtcyAqLw0KDQo+ICsgICAgIHVpbnQzMl90 IGJ1cnN0Ow0KDQpXaHkgaGF2aW5nIGEgdW5pZmllZCB2YWx1ZSBmb3IgcmVhZCBhbmQgd3JpdGUg YnVyc3Qgc2l6ZT8gUGxlYXNlIHVzZSBidXJzdF9yZWFkIGFuZCBidXJzdF93cml0ZSAoYm90aCB1 aW50MzJfdCkgaW5zdGVhZCBhbmQgdXBkYXRlIHRoZSBjb25maWdfcGFyc2UuYyBhbmQgaW5pdC5j IGNvZGUgYWNjb3JkaW5nbHkgKHNtYWxsIGNoYW5nZXMpLg0KDQo+ICt9Ow0KPiArDQo+ICBzdHJ1 Y3QgYXBwX3BrdHFfc3dxX3BhcmFtcyB7DQo+ICAgICAgIGNoYXIgKm5hbWU7DQo+ICAgICAgIHVp bnQzMl90IHBhcnNlZDsNCj4gQEAgLTE3Miw2ICsxODYsNyBAQCBlbnVtIGFwcF9wa3RxX2luX3R5 cGUgew0KPiAgICAgICBBUFBfUEtUUV9JTl9TV1EsDQo+ICAgICAgIEFQUF9QS1RRX0lOX1RNLA0K PiAgICAgICBBUFBfUEtUUV9JTl9TT1VSQ0UsDQo+ICsgICAgIEFQUF9QS1RRX0lOX0tOSSwNCj4g IH07DQo+DQo+ICBzdHJ1Y3QgYXBwX3BrdHFfaW5fcGFyYW1zIHsNCj4gQEAgLTE4NCw2ICsxOTks NyBAQCBlbnVtIGFwcF9wa3RxX291dF90eXBlIHsNCj4gICAgICAgQVBQX1BLVFFfT1VUX1NXUSwN Cj4gICAgICAgQVBQX1BLVFFfT1VUX1RNLA0KPiAgICAgICBBUFBfUEtUUV9PVVRfU0lOSywNCj4g KyAgICAgQVBQX1BLVFFfT1VUX0tOSSwNCj4gIH07DQo+DQo+ICBzdHJ1Y3QgYXBwX3BrdHFfb3V0 X3BhcmFtcyB7DQo+IEBAIC00MzQsNiArNDUwLDEwIEBAIHN0cnVjdCBhcHBfZWFsX3BhcmFtcyB7 DQo+ICAjZGVmaW5lIEFQUF9USFJFQURfSEVBRFJPT01fU1RBVFNfQ09MTEVDVCAgICAgICAgMQ0K PiAgI2VuZGlmDQo+DQo+ICsjaWZuZGVmIEFQUF9NQVhfS05JDQo+ICsjZGVmaW5lIEFQUF9NQVhf S05JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOA0KPiArI2VuZGlmDQo+ICsNCj4gIHN0 cnVjdCBhcHBfcGFyYW1zIHsNCj4gICAgICAgLyogQ29uZmlnICovDQo+ICAgICAgIGNoYXIgYXBw X25hbWVbQVBQX0FQUE5BTUVfU0laRV07DQo+IEBAIC00NTcsNiArNDc3LDcgQEAgc3RydWN0IGFw cF9wYXJhbXMgew0KPiAgICAgICBzdHJ1Y3QgYXBwX3BrdHFfc2lua19wYXJhbXMgc2lua19wYXJh bXNbQVBQX01BWF9QS1RRX1NJTktdOw0KPiAgICAgICBzdHJ1Y3QgYXBwX21zZ3FfcGFyYW1zIG1z Z3FfcGFyYW1zW0FQUF9NQVhfTVNHUV07DQo+ICAgICAgIHN0cnVjdCBhcHBfcGlwZWxpbmVfcGFy YW1zIHBpcGVsaW5lX3BhcmFtc1tBUFBfTUFYX1BJUEVMSU5FU107DQo+ICsgICAgIHN0cnVjdCBh cHBfa25pX3BhcmFtcyBrbmlfcGFyYW1zW0FQUF9NQVhfS05JXTsNCj4NCj4gICAgICAgdWludDMy X3Qgbl9tZW1wb29sczsNCj4gICAgICAgdWludDMyX3Qgbl9saW5rczsNCj4gQEAgLTQ2OCw2ICs0 ODksNyBAQCBzdHJ1Y3QgYXBwX3BhcmFtcyB7DQo+ICAgICAgIHVpbnQzMl90IG5fcGt0cV9zaW5r Ow0KPiAgICAgICB1aW50MzJfdCBuX21zZ3E7DQo+ICAgICAgIHVpbnQzMl90IG5fcGlwZWxpbmVz Ow0KPiArICAgICB1aW50MzJfdCBuX2tuaTsNCj4NCj4gICAgICAgLyogSW5pdCAqLw0KPiAgICAg ICBjaGFyICplYWxfYXJndlsxICsgQVBQX0VBTF9BUkdDXTsNCj4gQEAgLTQ4MCw2ICs1MDIsNyBA QCBzdHJ1Y3QgYXBwX3BhcmFtcyB7DQo+ICAgICAgIHN0cnVjdCBwaXBlbGluZV90eXBlIHBpcGVs aW5lX3R5cGVbQVBQX01BWF9QSVBFTElORV9UWVBFU107DQo+ICAgICAgIHN0cnVjdCBhcHBfcGlw ZWxpbmVfZGF0YSBwaXBlbGluZV9kYXRhW0FQUF9NQVhfUElQRUxJTkVTXTsNCj4gICAgICAgc3Ry dWN0IGFwcF90aHJlYWRfZGF0YSB0aHJlYWRfZGF0YVtBUFBfTUFYX1RIUkVBRFNdOw0KPiArICAg ICBzdHJ1Y3QgcnRlX2tuaSAqa25pW0FQUF9NQVhfS05JXTsNCj4gICAgICAgY21kbGluZV9wYXJz ZV9jdHhfdCBjbWRzW0FQUF9NQVhfQ01EUyArIDFdOw0KPg0KPiAgICAgICBpbnQgZWFsX2FyZ2M7 DQo+IEBAIC03MzgsNiArNzYxLDMxIEBAIGFwcF9tc2dxX2dldF9yZWFkZXJzKHN0cnVjdCBhcHBf cGFyYW1zICphcHAsDQo+IHN0cnVjdCBhcHBfbXNncV9wYXJhbXMgKm1zZ3EpDQo+ICB9DQo+DQo+ ICBzdGF0aWMgaW5saW5lIHVpbnQzMl90DQo+ICthcHBfa25pX2dldF9yZWFkZXJzKHN0cnVjdCBh cHBfcGFyYW1zICphcHAsIHN0cnVjdCBhcHBfa25pX3BhcmFtcw0KPiAqa25pKQ0KPiArew0KPiAr ICAgICB1aW50MzJfdCBwb3MgPSBrbmkgLSBhcHAtPmtuaV9wYXJhbXM7DQo+ICsgICAgIHVpbnQz Ml90IG5fcGlwZWxpbmVzID0gUlRFX01JTihhcHAtPm5fcGlwZWxpbmVzLA0KPiArICAgICAgICAg ICAgIFJURV9ESU0oYXBwLT5waXBlbGluZV9wYXJhbXMpKTsNCj4gKyAgICAgdWludDMyX3Qgbl9y ZWFkZXJzID0gMCwgaTsNCj4gKw0KPiArICAgICBmb3IgKGkgPSAwOyBpIDwgbl9waXBlbGluZXM7 IGkrKykgew0KPiArICAgICAgICAgICAgIHN0cnVjdCBhcHBfcGlwZWxpbmVfcGFyYW1zICpwID0g JmFwcC0+cGlwZWxpbmVfcGFyYW1zW2ldOw0KPiArICAgICAgICAgICAgIHVpbnQzMl90IG5fcGt0 cV9pbiA9IFJURV9NSU4ocC0+bl9wa3RxX2luLCBSVEVfRElNKHAtDQo+ID5wa3RxX2luKSk7DQo+ ICsgICAgICAgICAgICAgdWludDMyX3QgajsNCj4gKw0KPiArICAgICAgICAgICAgIGZvciAoaiA9 IDA7IGogPCBuX3BrdHFfaW47IGorKykgew0KPiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGFwcF9wa3RxX2luX3BhcmFtcyAqcGt0cSA9ICZwLT5wa3RxX2luW2pdOw0KPiArDQo+ICsgICAg ICAgICAgICAgICAgICAgICBpZiAoKHBrdHEtPnR5cGUgPT0gQVBQX1BLVFFfSU5fS05JKSAmJg0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGt0cS0+aWQgPT0gcG9zKSkNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZWFkZXJzKys7DQo+ICsgICAgICAgICAgICAg fQ0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgcmV0dXJuIG5fcmVhZGVyczsNCj4gK30NCj4gKw0K PiArc3RhdGljIGlubGluZSB1aW50MzJfdA0KPiAgYXBwX3R4cV9nZXRfd3JpdGVycyhzdHJ1Y3Qg YXBwX3BhcmFtcyAqYXBwLCBzdHJ1Y3QNCj4gYXBwX3BrdHFfaHdxX291dF9wYXJhbXMgKnR4cSkN Cj4gIHsNCj4gICAgICAgdWludDMyX3QgcG9zID0gdHhxIC0gYXBwLT5od3Ffb3V0X3BhcmFtczsN Cj4gQEAgLTg2Myw2ICs5MTEsMzIgQEAgYXBwX21zZ3FfZ2V0X3dyaXRlcnMoc3RydWN0IGFwcF9w YXJhbXMgKmFwcCwNCj4gc3RydWN0IGFwcF9tc2dxX3BhcmFtcyAqbXNncSkNCj4gICAgICAgcmV0 dXJuIG5fd3JpdGVyczsNCj4gIH0NCj4NCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QNCj4gK2Fw cF9rbmlfZ2V0X3dyaXRlcnMoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwgc3RydWN0IGFwcF9rbmlf cGFyYW1zICprbmkpDQo+ICt7DQo+ICsgICAgIHVpbnQzMl90IHBvcyA9IGtuaSAtIGFwcC0+a25p X3BhcmFtczsNCj4gKyAgICAgdWludDMyX3Qgbl9waXBlbGluZXMgPSBSVEVfTUlOKGFwcC0+bl9w aXBlbGluZXMsDQo+ICsgICAgICAgICAgICAgUlRFX0RJTShhcHAtPnBpcGVsaW5lX3BhcmFtcykp Ow0KPiArICAgICB1aW50MzJfdCBuX3dyaXRlcnMgPSAwLCBpOw0KPiArDQo+ICsgICAgIGZvciAo aSA9IDA7IGkgPCBuX3BpcGVsaW5lczsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgc3RydWN0IGFw cF9waXBlbGluZV9wYXJhbXMgKnAgPSAmYXBwLT5waXBlbGluZV9wYXJhbXNbaV07DQo+ICsgICAg ICAgICAgICAgdWludDMyX3Qgbl9wa3RxX291dCA9IFJURV9NSU4ocC0+bl9wa3RxX291dCwNCj4g KyAgICAgICAgICAgICAgICAgICAgIFJURV9ESU0ocC0+cGt0cV9vdXQpKTsNCj4gKyAgICAgICAg ICAgICB1aW50MzJfdCBqOw0KPiArDQo+ICsgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5f cGt0cV9vdXQ7IGorKykgew0KPiArICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFwcF9wa3Rx X291dF9wYXJhbXMgKnBrdHEgPSAmcC0NCj4gPnBrdHFfb3V0W2pdOw0KPiArDQo+ICsgICAgICAg ICAgICAgICAgICAgICBpZiAoKHBrdHEtPnR5cGUgPT0gQVBQX1BLVFFfT1VUX0tOSSkgJiYNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBrdHEtPmlkID09IHBvcykpDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5fd3JpdGVycysrOw0KPiArICAgICAgICAgICAgIH0N Cj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIHJldHVybiBuX3dyaXRlcnM7DQo+ICt9DQo+ICsNCj4g IHN0YXRpYyBpbmxpbmUgc3RydWN0IGFwcF9saW5rX3BhcmFtcyAqDQo+ICBhcHBfZ2V0X2xpbmtf Zm9yX3J4cShzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLCBzdHJ1Y3QNCj4gYXBwX3BrdHFfaHdxX2lu X3BhcmFtcyAqcCkNCj4gIHsNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2Nv bmZpZy9rbmkuY2ZnDQo+IGIvZXhhbXBsZXMvaXBfcGlwZWxpbmUvY29uZmlnL2tuaS5jZmcNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uMzA0NjZiMA0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZpZy9rbmkuY2ZnDQo+IEBA IC0wLDAgKzEsMTIgQEANCj4gK1tLTkkwXQ0KPiArY29yZSA9IDINCj4gKw0KPiArW1BJUEVMSU5F MF0NCj4gK3R5cGUgPSBNQVNURVINCj4gK2NvcmUgPSAwDQo+ICsNCj4gK1tQSVBFTElORTFdDQo+ ICt0eXBlID0gUEFTUy1USFJPVUdIDQo+ICtjb3JlID0gMQ0KPiArcGt0cV9pbiA9IFJYUTAuMCBL TkkwDQo+ICtwa3RxX291dCA9IEtOSTAgVFhRMC4wDQpJIGRvbid0IHRoaW5rIHRoaXMgbmV3IGNv bmZpZyBmaWxlIGNvbmZpZy9rbmkuY2ZnIGlzIHJlYWxseSB1c2VmdWwsIHNvIEkgd291bGQgbGlr ZSB0byByZW1vdmUgaXQuIFdlIHNob3VsZCBhdm9pZCB0aGUgcHJvbGlmZXJhdGlvbiBvZiBzdHJh aWdodGZvcndhcmQgY29uZmlnIGZpbGVzLg0KDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcF9w aXBlbGluZS9jb25maWdfY2hlY2suYw0KPiBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZpZ19j aGVjay5jDQo+IGluZGV4IGZkOWZmNDkuLjNlMzAwZjkgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVz L2lwX3BpcGVsaW5lL2NvbmZpZ19jaGVjay5jDQo+ICsrKyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5l L2NvbmZpZ19jaGVjay5jDQo+IEBAIC00MjYsNiArNDI2LDM5IEBAIGNoZWNrX3BpcGVsaW5lcyhz dHJ1Y3QgYXBwX3BhcmFtcyAqYXBwKQ0KPiAgICAgICB9DQo+ICB9DQo+DQo+ICtzdGF0aWMgdm9p ZA0KPiArY2hlY2tfa25pKHN0cnVjdCBhcHBfcGFyYW1zICphcHApIHsNCj4gKyAgICAgdWludDMy X3QgaTsNCj4gKyAgICAgdWludDMyX3QgcG9ydF9pZDsNCj4gKw0KPiArICAgICBmb3IgKGkgPSAw OyBpIDwgYXBwLT5uX2tuaTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgc3RydWN0IGFwcF9rbmlf cGFyYW1zICpwID0gJmFwcC0+a25pX3BhcmFtc1tpXTsNCj4gKyAgICAgICAgICAgICB1aW50MzJf dCBuX3JlYWRlcnMgPSBhcHBfa25pX2dldF9yZWFkZXJzKGFwcCwgcCk7DQo+ICsgICAgICAgICAg ICAgdWludDMyX3Qgbl93cml0ZXJzID0gYXBwX2tuaV9nZXRfd3JpdGVycyhhcHAsIHApOw0KPiAr DQo+ICsgICAgICAgICAgICAgQVBQX0NIRUNLKChuX3JlYWRlcnMgIT0gMCksDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGhhcyBubyByZWFkZXJcbiIsIHAtPm5hbWUpOw0K PiArDQo+ICsgICAgICAgICAgICAgaWYgKG5fcmVhZGVycyA+IDEpDQo+ICsgICAgICAgICAgICAg ICAgICAgICBBUFBfTE9HKGFwcCwgTE9XLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICIlcyBoYXMgbW9yZSB0aGFuIG9uZSByZWFkZXIiLCBwLQ0KPiA+bmFtZSk7DQo+ ICsNCj4gKyAgICAgICAgICAgICBBUFBfQ0hFQ0soKG5fd3JpdGVycyAhPSAwKSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaGFzIG5vIHdyaXRlclxuIiwgcC0+bmFtZSk7 DQo+ICsNCj4gKyAgICAgICAgICAgICBpZiAobl93cml0ZXJzID4gMSkNCj4gKyAgICAgICAgICAg ICAgICAgICAgIEFQUF9MT0coYXBwLCBMT1csDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiVzIGhhcyBtb3JlIHRoYW4gb25lIHdyaXRlciIsIHAtDQo+ID5uYW1lKTsN Cj4gKw0KV2Ugc2hvdWxkIHJlbW92ZSB0aGUgbmV4dCB0d28gY2hlY2tzLiBUaGUgcmVhc29uIGlz IHRoYXQgaW4gdGhlIGxhdGVzdCBjb2RlIGluIGNvbmZpZ19wYXJzZS5jIChhbHJlYWR5IG1lcmdl ZCBvbiBtYXN0ZXIgYnJhbmNoKSwgd2UgYXV0b21hdGljYWxseSBhZGQgTElOS3ggZm9yIGV2ZXJ5 IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggaXQgLCBzdWNoIGFzIFJYUXgueSwgVFhReC55LCBUTXgu IFRoaXMgaXMgdGhlIHNhbWUgZm9yIEtOSSwgYXMgS05JeCBpcyBhc3NvY2lhdGVkIHdpdGggTElO S3guIEFzIGFsc28gY29tbWVudGVkIGJlbG93LCB3ZSBzaG91bGQgaW1wbGVtZW50IHRoaXMgaW4g Y29uZmlnX3BhcnNlLmMuIEJhc2ljYWxseSwgZHVlIHRvIHRoaXMgY2hhbmdlIGluIGNvbmZpZ19w YXJzZS5jLCBpdCBpcyBhbHdheXMgZ3VhcmFudGVlZCB0aGF0IGZvciBldmVyeSBLTkl4IG9iamVj dCwgdGhlIExJTkt4IG9iamVjdCBleGlzdHMgYXMgd2VsbCwgc28gbm8gbmVlZCB0byBjaGVjayB0 aGlzIGhlcmUgaW4gY29uZmlnX2NoZWNrLmMgb3IgaW4gaW5pdC5jLg0KDQo+ICsgICAgICAgICAg ICAgQVBQX0NIRUNLKHNzY2FuZihwLT5uYW1lLCAiS05JJSIgUFJJdTMyLCAmcG9ydF9pZCkgPT0g MSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMncyBwb3J0IGlkIGlzIGlu dmFsaWRcbiIsIHAtPm5hbWUpOw0KPiArDQo+ICsgICAgICAgICAgICAgQVBQX0NIRUNLKHBvcnRf aWQgPCBhcHAtPm5fbGlua3MsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtu aSAlcyBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgdmFsaWQgbGlua1xuIiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsNCj4gKyAgICAgfQ0KPiArfQ0KPiArDQo+ ICBpbnQNCj4gIGFwcF9jb25maWdfY2hlY2soc3RydWN0IGFwcF9wYXJhbXMgKmFwcCkNCj4gIHsN Cj4gQEAgLTQzOSw2ICs0NzIsNyBAQCBhcHBfY29uZmlnX2NoZWNrKHN0cnVjdCBhcHBfcGFyYW1z ICphcHApDQo+ICAgICAgIGNoZWNrX3NpbmtzKGFwcCk7DQo+ICAgICAgIGNoZWNrX21zZ3FzKGFw cCk7DQo+ICAgICAgIGNoZWNrX3BpcGVsaW5lcyhhcHApOw0KPiArICAgICBjaGVja19rbmkoYXBw KTsNCj4NCj4gICAgICAgcmV0dXJuIDA7DQo+ICB9DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9p cF9waXBlbGluZS9jb25maWdfcGFyc2UuYw0KPiBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2NvbmZp Z19wYXJzZS5jDQo+IGluZGV4IGU1ZWZkMDMuLmU5Y2Q1YTQgMTAwNjQ0DQo+IC0tLSBhL2V4YW1w bGVzL2lwX3BpcGVsaW5lL2NvbmZpZ19wYXJzZS5jDQo+ICsrKyBiL2V4YW1wbGVzL2lwX3BpcGVs aW5lL2NvbmZpZ19wYXJzZS5jDQo+IEBAIC0yMDksNiArMjA5LDE1IEBAIHN0cnVjdCBhcHBfcGlw ZWxpbmVfcGFyYW1zDQo+IGRlZmF1bHRfcGlwZWxpbmVfcGFyYW1zID0gew0KPiAgICAgICAubl9h cmdzID0gMCwNCj4gIH07DQo+DQo+ICtzdHJ1Y3QgYXBwX2tuaV9wYXJhbXMgZGVmYXVsdF9rbmlf cGFyYW1zID0gew0KPiArICAgICAucGFyc2VkID0gMCwNCj4gKyAgICAgLnNvY2tldF9pZCA9IDAs DQo+ICsgICAgIC5jb3JlX2lkID0gMCwNCj4gKyAgICAgLmh5cGVyX3RoX2lkID0gMCwNCj4gKyAg ICAgLm1lbXBvb2xfaWQgPSAwLA0KPiArICAgICAuYnVyc3QgPSAzMiwNCi5idXJzdF9yZWFkID0g MzIsDQouYnVyc3Rfd3JpdGUgPSAzMiwNCg0KPiArfTsNCj4gKw0KPiAgc3RhdGljIGNvbnN0IGNo YXIgYXBwX3VzYWdlW10gPQ0KPiAgICAgICAiVXNhZ2U6ICVzIFstZiBDT05GSUdfRklMRV0gWy1z IFNDUklQVF9GSUxFXSBbLXAgUE9SVF9NQVNLXSAiDQo+ICAgICAgICJbLWwgTE9HX0xFVkVMXSBb LS1wcmVwcm9jIFBSRVBST0NFU1NPUl0gWy0tcHJlcHJvYy1hcmdzDQo+IEFSR1NdXG4iDQo+IEBA IC0xMTY5LDYgKzExNzgsOSBAQCBwYXJzZV9waXBlbGluZV9wa3RxX2luKHN0cnVjdCBhcHBfcGFy YW1zICphcHAsDQo+ICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZV9uYW1lKG5hbWUs ICJTT1VSQ0UiLCAxKSA9PSAwKSB7DQo+ICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gQVBQ X1BLVFFfSU5fU09VUkNFOw0KPiAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBBUFBfUEFSQU1f QUREKGFwcC0+c291cmNlX3BhcmFtcywgbmFtZSk7DQo+ICsgICAgICAgICAgICAgfSBlbHNlIGlm ICh2YWxpZGF0ZV9uYW1lKG5hbWUsICJLTkkiLCAxKSA9PSAwKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICB0eXBlID0gQVBQX1BLVFFfSU5fS05JOw0KPiArICAgICAgICAgICAgICAgICAgICAg aWQgPSBBUFBfUEFSQU1fQUREKGFwcC0+a25pX3BhcmFtcywgbmFtZSk7DQo+ICAgICAgICAgICAg ICAgfSBlbHNlDQo+ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4NCj4g QEAgLTEyNDAsNiArMTI1Miw5IEBAIHBhcnNlX3BpcGVsaW5lX3BrdHFfb3V0KHN0cnVjdCBhcHBf cGFyYW1zICphcHAsDQo+ICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWxpZGF0ZV9uYW1lKG5h bWUsICJTSU5LIiwgMSkgPT0gMCkgew0KPiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFQ UF9QS1RRX09VVF9TSU5LOw0KPiAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBBUFBfUEFSQU1f QUREKGFwcC0+c2lua19wYXJhbXMsIG5hbWUpOw0KPiArICAgICAgICAgICAgIH0gZWxzZSBpZiAo dmFsaWRhdGVfbmFtZShuYW1lLCAiS05JIiwgMSkgPT0gMCkgew0KPiArICAgICAgICAgICAgICAg ICAgICAgdHlwZSA9IEFQUF9QS1RRX09VVF9LTkk7DQo+ICsgICAgICAgICAgICAgICAgICAgICBp ZCA9IEFQUF9QQVJBTV9BREQoYXBwLT5rbmlfcGFyYW1zLCBuYW1lKTsNCj4gICAgICAgICAgICAg ICB9IGVsc2UNCj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPg0KPiBA QCAtMjQ1OSw2ICsyNDc0LDc2IEBAIHBhcnNlX21zZ3Eoc3RydWN0IGFwcF9wYXJhbXMgKmFwcCwN Cj4gICAgICAgZnJlZShlbnRyaWVzKTsNCj4gIH0NCj4NClBsZWFzZSByZXdvcmsgdGhlIGJlbG93 IHBhcnNlX2tuaSgpIGZ1bmN0aW9uIGJhc2VkIG9uIHRoZSBsYXRlc3QgY29kZSAocmViYXNlKS4g Rm9yIGV4YW1wbGUsIHRoZSBQQVJTRVJfUEFSQU1fQUREX0NIRUNLIG1hY3JvIGhhcyBiZWVuIHJl bW92ZWQuDQoNCkFsc28sIGFzIG1lbnRpb25lZCBhYm92ZSwgcGxlYXNlIGFkZCBMSU5LeCBhdXRv bWF0aWNhbGx5IGZvciBLTkl4LCBzYW1lIGFzIHRoZSBsYXRlc3QgY29kZSBhZGRzIExJTkt4IGF1 dG9tYXRpY2FsbHkgZXZlcnkgdGltZSBSWFF4LnksIFRYUXgueSwgVE14IG9iamVjdHMgYXJlIG1l dC4gVGhpcyBoYXMgdG8gYmUgZG9uZSBpbiBzZXZlcmFsIHBsYWNlczogb25jZSBoZXJlLCBpbiBm dW5jdGlvbiBwYXJzZV9rbmkoKSwgd2hpY2ggaXMgZXhlY3V0ZWQgZm9yIEtOSSBzZWN0aW9ucywg YnV0IGFsc28gaW4gcGFyc2VfcGlwZWxpbmVfcGt0cV9pbigpIGFuZCBwYXJzZV9waXBlbGluZV9w a3RxX291dCgpIGZ1bmN0aW9ucyAocGxlYXNlIGNoZWNrIGxhdGVzdCBjb2RlKS4NCg0KPiArc3Rh dGljIHZvaWQNCj4gK3BhcnNlX2tuaShzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLA0KPiArICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwNCj4gKyAgICAgICAgICAgICAgICBz dHJ1Y3QgcnRlX2NmZ2ZpbGUgKmNmZykNCj4gK3sNCj4gKyAgICAgc3RydWN0IGFwcF9rbmlfcGFy YW1zICpwYXJhbTsNCj4gKyAgICAgc3RydWN0IHJ0ZV9jZmdmaWxlX2VudHJ5ICplbnRyaWVzOw0K PiArICAgICBpbnQgbl9lbnRyaWVzLCBpOw0KPiArICAgICBzc2l6ZV90IHBhcmFtX2lkeDsNCj4g Kw0KPiArICAgICBuX2VudHJpZXMgPSBydGVfY2ZnZmlsZV9zZWN0aW9uX251bV9lbnRyaWVzKGNm Zywgc2VjdGlvbl9uYW1lKTsNCj4gKyAgICAgUEFSU0VfRVJST1JfU0VDVElPTl9OT19FTlRSSUVT KChuX2VudHJpZXMgPiAwKSwNCj4gc2VjdGlvbl9uYW1lKTsNCj4gKw0KPiArICAgICBlbnRyaWVz ID0gbWFsbG9jKG5fZW50cmllcyAqIHNpemVvZihzdHJ1Y3QgcnRlX2NmZ2ZpbGVfZW50cnkpKTsN Cj4gKyAgICAgUEFSU0VfRVJST1JfTUFMTE9DKGVudHJpZXMgIT0gTlVMTCk7DQo+ICsNCj4gKyAg ICAgcnRlX2NmZ2ZpbGVfc2VjdGlvbl9lbnRyaWVzKGNmZywgc2VjdGlvbl9uYW1lLCBlbnRyaWVz LCBuX2VudHJpZXMpOw0KPiArDQo+ICsgICAgIHBhcmFtX2lkeCA9IEFQUF9QQVJBTV9BREQoYXBw LT5rbmlfcGFyYW1zLCBzZWN0aW9uX25hbWUpOw0KPiArICAgICBQQVJTRVJfUEFSQU1fQUREX0NI RUNLKHBhcmFtX2lkeCwgYXBwLT5rbmlfcGFyYW1zLA0KPiBzZWN0aW9uX25hbWUpOw0KPiArDQo+ ICsgICAgIHBhcmFtID0gJmFwcC0+a25pX3BhcmFtc1twYXJhbV9pZHhdOw0KPiArDQo+ICsgICAg IGZvciAoaSA9IDA7IGkgPCBuX2VudHJpZXM7IGkrKykgew0KPiArICAgICAgICAgICAgIHN0cnVj dCBydGVfY2ZnZmlsZV9lbnRyeSAqZW50ID0gJmVudHJpZXNbaV07DQo+ICsNCj4gKyAgICAgICAg ICAgICBpZiAoc3RyY21wKGVudC0+bmFtZSwgImNvcmUiKSA9PSAwKSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICBpbnQgc3RhdHVzID0gcGFyc2VfcGlwZWxpbmVfY29yZSgNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnBhcmFtLT5zb2NrZXRfaWQsICZwYXJhbS0+Y29yZV9pZCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcmFtLT5oeXBlcl90aF9pZCwgZW50 LT52YWx1ZSk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgIFBBUlNFX0VSUk9SKChzdGF0 dXMgPT0gMCksIHNlY3Rpb25fbmFtZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW50LT5uYW1lKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArICAgICAg ICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgIGlmIChzdHJjbXAoZW50LT5uYW1lLCAibWVt cG9vbCIpID09IDApIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMgPSB2YWxp ZGF0ZV9uYW1lKGVudC0+dmFsdWUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN RU1QT09MIiwgMSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICBzc2l6ZV90IGlkeDsNCj4gKw0K PiArICAgICAgICAgICAgICAgICAgICAgUEFSU0VfRVJST1IoKHN0YXR1cyA9PSAwKSwgc2VjdGlv bl9uYW1lLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnQtPm5hbWUpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgaWR4ID0gQVBQX1BBUkFNX0FERChhcHAtPm1lbXBvb2xfcGFy YW1zLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnQtPnZhbHVlKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTV9BRERfQ0hFQ0soaWR4LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcHAtPm1lbXBvb2xfcGFyYW1zLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWN0aW9uX25hbWUpOw0KPiArICAgICAgICAgICAgICAgICAg ICAgcGFyYW0tPm1lbXBvb2xfaWQgPSBpZHg7DQo+ICsgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsNCj4gKyAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICBpZiAoc3RyY21w KGVudC0+bmFtZSwgImJ1cnN0IikgPT0gMCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgaW50 IHN0YXR1cyA9IHBhcnNlcl9yZWFkX3VpbnQzMigmcGFyYW0tPmJ1cnN0LA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnQtPnZhbHVlKTsNCj4gKw0KPiArICAgICAgICAgICAgICAg ICAgICAgUEFSU0VfRVJST1IoKHN0YXR1cyA9PSAwKSwgc2VjdGlvbl9uYW1lLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnQtPm5hbWUpOw0KPiArICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7DQo+ICsgICAgICAgICAgICAgfQ0KQXMgZGlzY3Vzc2VkIGFib3ZlLCB3ZSBz aG91bGQgcGFyc2UgdHdvIGRpZmZlcmVudCBlbnRyaWVzIGluIEtOSSBzZWN0aW9uOiBidXJzdF9y ZWFkIGFuZCBidXJzdF93cml0ZS4NCg0KPiArDQo+ICsgICAgICAgICAgICAgLyogdW5yZWNvZ25p emVkICovDQo+ICsgICAgICAgICAgICAgUEFSU0VfRVJST1JfSU5WQUxJRCgwLCBzZWN0aW9uX25h bWUsIGVudC0+bmFtZSk7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBwYXJhbS0+cGFyc2VkID0g MTsNCj4gKw0KPiArICAgICBmcmVlKGVudHJpZXMpOw0KPiArfQ0KPiArDQo+ICB0eXBlZGVmIHZv aWQgKCpjb25maWdfc2VjdGlvbl9sb2FkKShzdHJ1Y3QgYXBwX3BhcmFtcyAqcCwNCj4gICAgICAg Y29uc3QgY2hhciAqc2VjdGlvbl9uYW1lLA0KPiAgICAgICBzdHJ1Y3QgcnRlX2NmZ2ZpbGUgKmNm Zyk7DQo+IEBAIC0yNDgzLDYgKzI1NjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19z ZWN0aW9uIGNmZ19maWxlX3NjaGVtZVtdDQo+ID0gew0KPiAgICAgICB7Ik1TR1EtUkVRLVBJUEVM SU5FIiwgMSwgcGFyc2VfbXNncV9yZXFfcGlwZWxpbmV9LA0KPiAgICAgICB7Ik1TR1EtUlNQLVBJ UEVMSU5FIiwgMSwgcGFyc2VfbXNncV9yc3BfcGlwZWxpbmV9LA0KPiAgICAgICB7Ik1TR1EiLCAx LCBwYXJzZV9tc2dxfSwNCj4gKyAgICAgeyJLTkkiLCAxLCBwYXJzZV9rbml9LA0KPiAgfTsNCj4N Cj4gIHN0YXRpYyB2b2lkDQo+IEBAIC0yNjE5LDYgKzI3MDUsNyBAQCBhcHBfY29uZmlnX3BhcnNl KHN0cnVjdCBhcHBfcGFyYW1zICphcHAsIGNvbnN0DQo+IGNoYXIgKmZpbGVfbmFtZSkNCj4gICAg ICAgQVBQX1BBUkFNX0NPVU5UKGFwcC0+c2lua19wYXJhbXMsIGFwcC0+bl9wa3RxX3NpbmspOw0K PiAgICAgICBBUFBfUEFSQU1fQ09VTlQoYXBwLT5tc2dxX3BhcmFtcywgYXBwLT5uX21zZ3EpOw0K PiAgICAgICBBUFBfUEFSQU1fQ09VTlQoYXBwLT5waXBlbGluZV9wYXJhbXMsIGFwcC0+bl9waXBl bGluZXMpOw0KPiArICAgICBBUFBfUEFSQU1fQ09VTlQoYXBwLT5rbmlfcGFyYW1zLCBhcHAtPm5f a25pKTsNCj4NCj4gICNpZmRlZiBSVEVfUE9SVF9QQ0FQDQo+ICAgICAgIGZvciAoaSA9IDA7IGkg PCAoaW50KWFwcC0+bl9wa3RxX3NvdXJjZTsgaSsrKSB7DQo+IEBAIC0zMDI1LDYgKzMxMTIsOSBA QCBzYXZlX3BpcGVsaW5lX3BhcmFtcyhzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLA0KPiBGSUxFICpm KQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEFQUF9QS1RRX0lOX1NPVVJD RToNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gYXBwLT5z b3VyY2VfcGFyYW1zW3BwLQ0KPiA+aWRdLm5hbWU7DQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2UgQVBQX1BLVFFfSU5fS05JOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hbWUgPSBhcHAtPmtuaV9wYXJhbXNbcHAtDQo+ID5pZF0ubmFtZTsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVmYXVsdDoNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBUFBfQ0hFQ0soMCwgIlN5c3RlbSBlcnJvciAiDQo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAib2NjdXJyZWQgd2hpbGUgc2F2aW5nICINCj4gQEAg LTMwNTksNiArMzE0OSw5IEBAIHNhdmVfcGlwZWxpbmVfcGFyYW1zKHN0cnVjdCBhcHBfcGFyYW1z ICphcHAsDQo+IEZJTEUgKmYpDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug QVBQX1BLVFFfT1VUX1NJTks6DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmFtZSA9IGFwcC0+c2lua19wYXJhbXNbcHAtDQo+ID5pZF0ubmFtZTsNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2FzZSBBUFBfUEtUUV9PVVRfS05JOg0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWUgPSBhcHAtPmtuaV9wYXJhbXNbcHAtDQo+ID5pZF0ubmFt ZTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBUFBfQ0hFQ0soMCwgIlN5c3RlbSBlcnJvciAiDQo+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2NjdXJyZWQgd2hpbGUg c2F2aW5nICINCj4gQEAgLTMxMTQsNiArMzIwNywzNyBAQCBzYXZlX3BpcGVsaW5lX3BhcmFtcyhz dHJ1Y3QgYXBwX3BhcmFtcyAqYXBwLA0KPiBGSUxFICpmKQ0KPiAgICAgICB9DQo+ICB9DQo+DQo+ ICtzdGF0aWMgdm9pZA0KPiArc2F2ZV9rbmlfcGFyYW1zKHN0cnVjdCBhcHBfcGFyYW1zICphcHAs IEZJTEUgKmYpDQo+ICt7DQo+ICsgICAgIHN0cnVjdCBhcHBfa25pX3BhcmFtcyAqcDsNCj4gKyAg ICAgc2l6ZV90IGksIGNvdW50Ow0KPiArDQo+ICsgICAgIGNvdW50ID0gUlRFX0RJTShhcHAtPmtu aV9wYXJhbXMpOw0KPiArICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgew0KPiArICAg ICAgICAgICAgIHAgPSAmYXBwLT5rbmlfcGFyYW1zW2ldOw0KPiArICAgICAgICAgICAgIGlmICgh QVBQX1BBUkFNX1ZBTElEKHApKQ0KPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ ICsNCj4gKyAgICAgICAgICAgICAvKiBzZWN0aW9uIG5hbWUgKi8NCj4gKyAgICAgICAgICAgICBm cHJpbnRmKGYsICJbJXNdXG4iLCBwLT5uYW1lKTsNCj4gKw0KPiArICAgICAgICAgICAgIC8qIGNv cmUgKi8NCj4gKyAgICAgICAgICAgICBmcHJpbnRmKGYsICJjb3JlID0gcyUiIFBSSXUzMiAiYyUi IFBSSXUzMiAiJXNcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnNvY2tl dF9pZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+Y29yZV9pZCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHAtPmh5cGVyX3RoX2lkKSA/ICJoIiA6ICIiKTsN Cj4gKw0KPiArICAgICAgICAgICAgIC8qIG1lbXBvb2wgKi8NCj4gKyAgICAgICAgICAgICBmcHJp bnRmKGYsICIlcyA9ICUiIFBSSXUzMiAiXG4iLCAibWVtcG9vbF9pZCIsIHAtDQo+ID5tZW1wb29s X2lkKTsNClRoZSBuYW1lIG9mIHRoZSBlbnRyeSBpcyAibWVtcG9vbCIgaW5zdGVhZCBvZiAibWVt cG9vbF9pZCIuIFRoZSB2YWx1ZSBvZiB0aGUgZW50cnkgaXMgYXBwLT5tZW1wb29sX3BhcmFtc1tw LT5tZW1wb29sX2lkXS5uYW1lICh3aGljaCBpcyBhIHN0cmluZykgaW5zdGVhZCBvZiBwLT5tZW1w b29sX2lkICh3aGljaCBpcyBhIG51bWJlcikuDQoNCj4gKw0KPiArICAgICAgICAgICAgIC8qIGJ1 cnN0ICovDQo+ICsgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMgPSAlIiBQUkl1MzIgIlxuIiwg ImJ1cnN0IiwgcC0+YnVyc3QpOw0KPiArDQoNCldlIHNob3VsZCBzYXZlIGJvdGggcC0+YnVyc3Rf cmVhZCBhbmQgcC0+YnVyc3Rfd3JpdGUuDQoNCj4gKyAgICAgICAgICAgICBmcHV0YygnXG4nLCBm KTsNCj4gKyAgICAgfQ0KPiArfQ0KPiArDQo+ICB2b2lkDQo+ICBhcHBfY29uZmlnX3NhdmUoc3Ry dWN0IGFwcF9wYXJhbXMgKmFwcCwgY29uc3QgY2hhciAqZmlsZV9uYW1lKQ0KPiAgew0KPiBAQCAt MzE0NCw2ICszMjY4LDcgQEAgYXBwX2NvbmZpZ19zYXZlKHN0cnVjdCBhcHBfcGFyYW1zICphcHAs IGNvbnN0DQo+IGNoYXIgKmZpbGVfbmFtZSkNCj4gICAgICAgc2F2ZV9zb3VyY2VfcGFyYW1zKGFw cCwgZmlsZSk7DQo+ICAgICAgIHNhdmVfc2lua19wYXJhbXMoYXBwLCBmaWxlKTsNCj4gICAgICAg c2F2ZV9tc2dxX3BhcmFtcyhhcHAsIGZpbGUpOw0KPiArICAgICBzYXZlX2tuaV9wYXJhbXMoYXBw LCBmaWxlKTsNCj4NCj4gICAgICAgZmNsb3NlKGZpbGUpOw0KPiAgICAgICBmcmVlKG5hbWUpOw0K PiBAQCAtMzIwNiw2ICszMzMxLDExIEBAIGFwcF9jb25maWdfaW5pdChzdHJ1Y3QgYXBwX3BhcmFt cyAqYXBwKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHRfcGlwZWxpbmVfcGFyYW1z LA0KPiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRlZmF1bHRfcGlwZWxpbmVfcGFyYW1z KSk7DQo+DQo+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBSVEVfRElNKGFwcC0+a25pX3BhcmFtcyk7 IGkrKykNCj4gKyAgICAgICAgICAgICBtZW1jcHkoJmFwcC0+a25pX3BhcmFtc1tpXSwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICZkZWZhdWx0X2tuaV9wYXJhbXMsDQo+ICsgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoZGVmYXVsdF9rbmlfcGFyYW1zKSk7DQo+ICsNCj4gICAgICAgcmV0dXJu IDA7DQo+ICB9DQo+DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcF9waXBlbGluZS9pbml0LmMg Yi9leGFtcGxlcy9pcF9waXBlbGluZS9pbml0LmMNCj4gaW5kZXggMDIzNTFmNi4uOGZmOTExOCAx MDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUvaW5pdC5jDQo+ICsrKyBiL2V4YW1w bGVzL2lwX3BpcGVsaW5lL2luaXQuYw0KVGhpcyBpcyBydW4tdGltZSBjb2RlLCBsZXQncyBoYXZl IGFsbCB0aGUgS05JIGNvZGUgaW4gaW5pdC5jIGZpbGUgZW5hYmxlZCBvbmx5IHdoZW4gS05JIGxp YnJhcnkgaXMgcGFydCBvZiB0aGUgYnVpbGQ6DQojaWZkZWYgUlRFX0xJQlJURV9LTkkNCi4uLg0K I2VuZGlmIC8qIFJURV9MSUJSVEVfS05JICovDQoNCj4gQEAgLTg5LDYgKzg5LDI0IEBAIGFwcF9p bml0X2NvcmVfbWFzayhzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBwKQ0KPiAgICAgICAgICAgICAgIG1h c2sgfD0gMUxMVSA8PCBsY29yZV9pZDsNCj4gICAgICAgfQ0KPg0KPiArICAgICBmb3IgKGkgPSAw OyBpIDwgYXBwLT5uX2tuaTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgc3RydWN0IGFwcF9rbmlf cGFyYW1zICpwID0gJmFwcC0+a25pX3BhcmFtc1tpXTsNCj4gKyAgICAgICAgICAgICBpbnQgbGNv cmVfaWQ7DQo+ICsNCj4gKyAgICAgICAgICAgICBsY29yZV9pZCA9IGNwdV9jb3JlX21hcF9nZXRf bGNvcmVfaWQoYXBwLT5jb3JlX21hcCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIHAtPnNvY2tl dF9pZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgIHAtPmNvcmVfaWQsDQo+ICsgICAgICAgICAg ICAgICAgICAgICBwLT5oeXBlcl90aF9pZCk7DQo+ICsNCj4gKyAgICAgICAgICAgICBpZiAobGNv cmVfaWQgPCAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgcnRlX3BhbmljKCJDYW5ub3QgY3Jl YXRlIENQVSBjb3JlIG1hc2tcbiIpOw0KPiArDQo+ICsgICAgICAgICAgICAgaWYgKG1hc2sgJiAx TExVIDw8IGxjb3JlX2lkKQ0KDQpQbGVhc2UgdXNlIHBhcmVudGhlc2lzIGZvciBpbXByb3ZlZCBy ZWFkYWJpbGl0eTogaWYgKG1hc2sgJiAoMUxMVSA8PCBsY29yZV9pZCkpLg0KDQo+ICsgICAgICAg ICAgICAgICAgICAgICBydGVfcGFuaWMoIktOSSBpbnRlcmZhY2UgbXVzdCB1c2UgYSBkZWRpY2F0 ZWQNCj4gbGNvcmVcbiIpOw0KDQpUaGUgYmlnZ2VyIHF1ZXN0aW9ucyBhcmU6DQotIFdoeSBkbyB3 ZSBuZWVkIHRvIGRlZGljYXRlIHNlcGFyYXRlIENQVSBjb3JlKHMpIGZvciBLTkkgaW50ZXJmYWNl KHMpPyBJc24ndCBLTkkgY29kZSBydW5uaW5nIGluIGtlcm5lbCBzcGFjZSwgd2h5IGRvIHdlIG5l ZWQgdG8gZGVkaWNhdGUgc2VwYXJhdGUgdXNlciBzcGFjZSBjb3JlIGZvciBpdCBhbmQgd2h5IGRv IHdlIG5lZWQgdG8gYWRkIHRoaXMgY29yZSB0byB0aGUgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBj b3JlIG1hc2s/DQotIEV2ZW4gaWYgd2UgbmVlZCB0byBhZGQgdGhpcyB0byB0aGUgY29yZSBtYXNr IChtYXliZSBJIGFtIG1pc3Npbmcgc29tZXRoaW5nIGhlcmUgLi4uKSwgd2h5IGRvIHdlIG5lZWQg dG8gZGVkaWNhdGUgdGhpcyBjb3JlIGVudGlyZWx5IHRvIEtOST8gQ2FuJ3Qgd2UgaGF2ZSBLTkkg KGtlcm5lbCkgY29kZSBzaGFyaW5nIHRoaXMgY29yZSB3aXRoIHVzZXItc3BhY2UgYXBwbGljYXRp b24gY29kZSAoZS5nLiBzb21lIHBpcGVsaW5lIGluc3RhbmNlcz8pDQoNCkZpcnN0IG9mIGFsbCwg aXQgaXMgYSBidWcgdG8gYWRkIEtOSSBrZXJuZWwgY29yZSB0byB0aGUgdXNlciBzcGFjZSBjb3Jl IG1hc2suIFdoYXQgSSB3YW50IGlzIGp1c3QgdG8gY2hlY2sgaWYgdGhlIEtOSSBrZXJuZWwgdGhy ZWFkIGhhcyBhIGRlZGljYXRlZCBjb3JlLg0KVGhlIHJlYXNvbiBJIHByZWZlciB0byBhbGxvY2F0 ZSBhIGRlZGljYXRlZCBjb3JlIHRvIEtOSSBrZXJuZWwgdGhyZWFkIGlzIHRoYXQgbXkgYXBwbGlj YXRpb24gaXMgbGF0ZW5jeSBzZW5zaXRpdmUuIEkgd29ycnkgdGhlIGNvbnRleHQgc3dpdGNoIGFu ZCBjYWNoZSBtaXNzIHdpbGwgY2F1c2UgdGhlIGxhdGVuY3kgaW5jcmVhc2luZyBpZiB0aGUgS05J IGtlcm5lbCB0aHJlYWQgYW5kIGFwcGxpY2F0aW9uIHRocmVhZCBzaGFyZSBvbmUgY29yZS4NCkFu eXdheSwgSSB0aGluayBJIHNob3VsZCByZW1vdmUgdGhlIGhhcmQgY29kZWQgY2hlY2sgYmVjYXVz ZSBpdCB3aWxsIGJlIG1vcmUgZ2VuZXJpYy4gVXNlcnMgd2hvIGhhcyB0aGUgc2ltaWxhciB1c2Fn ZSBsaWtlIG1pbmUgY2FuIGFjaGlldmUgc28gdGhyb3VnaCBjb25maWd1cmF0aW9uIGZpbGUuDQoN Cj4gKw0KPiArICAgICAgICAgICAgIG1hc2sgfD0gMUxMVSA8PCBsY29yZV9pZDsNCj4gKyAgICAg fQ0KPiArDQo+ICAgICAgIGFwcC0+Y29yZV9tYXNrID0gbWFzazsNCj4gICAgICAgQVBQX0xPRyhh cHAsIEhJR0gsICJDUFUgY29yZSBtYXNrID0gMHglMDE2IiBQUkl4NjQsIGFwcC0NCj4gPmNvcmVf bWFzayk7DQo+ICB9DQo+IEBAIC0xMjM2LDYgKzEyNTQsMTEgQEAgc3RhdGljIHZvaWQgYXBwX3Bp cGVsaW5lX3BhcmFtc19nZXQoc3RydWN0DQo+IGFwcF9wYXJhbXMgKmFwcCwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2J5dGVzX3Blcl9wa3Q7DQo+ICAgICAgICAg ICAgICAgICAgICAgICB9DQo+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAg ICAgICAgICBjYXNlIEFQUF9QS1RRX0lOX0tOSToNCj4gKyAgICAgICAgICAgICAgICAgICAgIG91 dC0+dHlwZSA9IFBJUEVMSU5FX1BPUlRfSU5fS05JOw0KPiArICAgICAgICAgICAgICAgICAgICAg b3V0LT5wYXJhbXMua25pLmtuaSA9IGFwcC0+a25pW2luLT5pZF07DQo+ICsgICAgICAgICAgICAg ICAgICAgICBvdXQtPmJ1cnN0X3NpemUgPSBhcHAtPmtuaV9wYXJhbXNbaW4tPmlkXS5idXJzdDsN Cj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICAgIGRlZmF1bHQ6 DQo+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICB9DQo+IEBA IC0xMzc0LDYgKzEzOTcsMTIgQEAgc3RhdGljIHZvaWQgYXBwX3BpcGVsaW5lX3BhcmFtc19nZXQo c3RydWN0DQo+IGFwcF9wYXJhbXMgKmFwcCwNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3V0LT5wYXJhbXMuc2luay5tYXhfbl9wa3RzID0gMDsNCj4gICAgICAgICAgICAgICAgICAg ICAgIH0NCj4gICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgIGNh c2UgQVBQX1BLVFFfT1VUX0tOSToNCj4gKyAgICAgICAgICAgICAgICAgICAgIG91dC0+dHlwZSA9 IFBJUEVMSU5FX1BPUlRfT1VUX0tOSTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIG91dC0+cGFy YW1zLmtuaS5rbmkgPSBhcHAtPmtuaVtpbi0+aWRdOw0KPiArICAgICAgICAgICAgICAgICAgICAg b3V0LT5wYXJhbXMua25pLnR4X2J1cnN0X3N6ID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhcHAtPmtuaV9wYXJhbXNbaW4tPmlkXS5idXJzdDsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICB9DQo+IEBAIC0xMzk3LDYgKzE0 MjYsNTUgQEAgc3RhdGljIHZvaWQgYXBwX3BpcGVsaW5lX3BhcmFtc19nZXQoc3RydWN0DQo+IGFw cF9wYXJhbXMgKmFwcCwNCj4gIH0NCj4NCj4gIHN0YXRpYyB2b2lkDQo+ICthcHBfaW5pdF9rbmko c3RydWN0IGFwcF9wYXJhbXMgKmFwcCkgew0KPiArICAgICB1aW50MzJfdCBpOw0KPiArICAgICBz dHJ1Y3QgcnRlX2tuaV9jb25mIGNvbmY7DQo+ICsNCkF2b2lkIGNhbGxpbmcgcnRlX2tuaV9pbml0 KCkgd2hlbiB0aGVyZSBpcyBubyBLTkkgZGV2aWNlOg0KDQppZiAoYXBwLT5uX2tuaSA9PSAwKQ0K ICAgICAgICByZXR1cm47DQoNCj4gKyAgICAgcnRlX2tuaV9pbml0KCh1bnNpZ25lZCBpbnQpYXBw LT5uX2tuaSk7DQo+ICsNCj4gKyAgICAgZm9yIChpID0gMDsgaSA8IGFwcC0+bl9rbmk7IGkrKykg ew0KPiArICAgICAgICAgICAgIHN0cnVjdCBhcHBfa25pX3BhcmFtcyAqcF9rbmkgPSAmYXBwLT5r bmlfcGFyYW1zW2ldOw0KPiArICAgICAgICAgICAgIHVpbnQzMl90IHBvcnRfaWQ7DQoNClBsZWFz ZSByZW5hbWUgcG9ydF9pZCB3aXRoIGxpbmtfaWQsIGFzIHRoaXMgaW5kZXggaXMgcmVhbGx5IHRo ZSB4IGZyb20gTElOS3ggb2JqZWN0cy4NCg0KPiArICAgICAgICAgICAgIHN0cnVjdCBhcHBfbWVt cG9vbF9wYXJhbXMgKm1lbXBvb2xfcGFyYW1zOw0KPiArICAgICAgICAgICAgIHN0cnVjdCBydGVf bWVtcG9vbCAqbWVtcG9vbDsNCj4gKw0KPiArICAgICAgICAgICAgIGlmIChzc2NhbmYocF9rbmkt Pm5hbWUsICJLTkklIiBQUkl1MzIsICZwb3J0X2lkKSAhPSAxKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgcnRlX3BhbmljKCIlcydzIHBvcnQgaWQgaXMgaW52YWxpZFxuIiwgcF9rbmktPm5hbWUp Ow0KDQpTYW1lIGNvbW1lbnQgYXMgYWJvdmU6IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIHRoZSB4 IGluIEtOSXgsIGFzIExJTkt4IGlzIChzaG91bGQgYmUsIGFmdGVyIHlvdSBhZGp1c3QgdGhlIGNv bmZpZ19wYXJzZS5jIGNvZGUpIGFkZGVkIGF1dG9tYXRpY2FsbHkgZm9yIEtOSXguDQoNCj4gKw0K PiArICAgICAgICAgICAgIG1lbXBvb2xfcGFyYW1zID0gJmFwcC0+bWVtcG9vbF9wYXJhbXNbcF9r bmktDQo+ID5tZW1wb29sX2lkXTsNCj4gKyAgICAgICAgICAgICBtZW1wb29sID0gYXBwLT5tZW1w b29sW3Bfa25pLT5tZW1wb29sX2lkXTsNCj4gKw0KPiArICAgICAgICAgICAgIG1lbXNldCgmY29u ZiwgMCwgc2l6ZW9mKGNvbmYpKTsNCj4gKyAgICAgICAgICAgICBzbnByaW50Zihjb25mLm5hbWU8 aHR0cDovL2NvbmYubmFtZT4sIFJURV9LTklfTkFNRVNJWkUsDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidkV0aCV1IiwgcG9ydF9pZCk7DQo+ICsgICAgICAgICAgICAgY29uZi5j b3JlX2lkID0gcF9rbmktPmNvcmVfaWQ7DQoNClRoZSB3YXkgdGhlIGNvbmYuY29yZV9pZCBpcyBz ZXQgaGVyZSBpcyB3cm9uZywgcmlnaHQ/DQoNCg0KY29uZi5jb3JlX2lkID0gY3B1X2NvcmVfbWFw X2dldF9sY29yZV9pZChhcHAtPmNvcmVfbWFwLA0KICAgICAgICBwLT5zb2NrZXRfaWQsDQogICAg ICAgIHAtPmNvcmVfaWQsDQogICAgICAgIHAtPmh5cGVyX3RoX2lkKTsNCg0KPiArICAgICAgICAg ICAgIGNvbmYuZm9yY2VfYmluZCA9IDE7DQo+ICsNCj4gKyAgICAgICAgICAgICBjb25mLmdyb3Vw X2lkID0gKHVpbnQxNl90KSBwb3J0X2lkOw0KPiArICAgICAgICAgICAgIGNvbmYubWJ1Zl9zaXpl ID0gbWVtcG9vbF9wYXJhbXMtPmJ1ZmZlcl9zaXplOw0KPiArDQo+ICsgICAgICAgICAgICAgc3Ry dWN0IHJ0ZV9rbmlfb3BzIG9wczsNCj4gKyAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2V0aF9kZXZf aW5mbyBkZXZfaW5mbzsNCj4gKw0KDQpQbGVhc2UgbW92ZSB0aGVzZSBkZWZpbml0aW9ucyBhdCB0 aGUgdG9wIG9mIHRoZSBmb3IgbG9vcCBibG9jayByYXRoZXIgdGhhbiBoYXZpbmcgdGhlbSBpbiB0 aGUgbWlkZGxlIG9mIHRoZSBmb3IgbG9vcCBibG9jay4NCg0KPiArICAgICAgICAgICAgIG1lbXNl dCgmZGV2X2luZm8sIDAsIHNpemVvZihkZXZfaW5mbykpOw0KPiArICAgICAgICAgICAgIHJ0ZV9l dGhfZGV2X2luZm9fZ2V0KGFwcC0+bGlua19wYXJhbXNbcG9ydF9pZF0ucG1kX2lkLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRldl9p bmZvKTsNCj4gKyAgICAgICAgICAgICBjb25mLmFkZHIgPSBkZXZfaW5mby5wY2lfZGV2LT5hZGRy Ow0KPiArICAgICAgICAgICAgIGNvbmYuaWQ8aHR0cDovL2NvbmYuaWQ+ID0gZGV2X2luZm8ucGNp X2Rldi0+aWQ7DQo+ICsNCj4gKyAgICAgICAgICAgICBtZW1zZXQoJm9wcywgMCwgc2l6ZW9mKG9w cykpOw0KPiArICAgICAgICAgICAgIG9wcy5wb3J0X2lkID0gYXBwLT5saW5rX3BhcmFtc1twb3J0 X2lkXS5wbWRfaWQ7DQo+ICsgICAgICAgICAgICAgb3BzLmNoYW5nZV9tdHUgPSBrbmlfY2hhbmdl X210dTsNCj4gKyAgICAgICAgICAgICBvcHMuY29uZmlnX25ldHdvcmtfaWYgPSBrbmlfY29uZmln X25ldHdvcmtfaW50ZXJmYWNlOw0KPiArDQo+ICsgICAgICAgICAgICAgYXBwLT5rbmlbaV0gPSBy dGVfa25pX2FsbG9jKG1lbXBvb2wsDQo+ICsgICAgICAgICAgICAgICAgICAgICAmY29uZiwgJm9w cyk7DQo+ICsgICAgICAgICAgICAgaWYgKCFhcHAtPmtuaVtpXSkNCj4gKyAgICAgICAgICAgICAg ICAgICAgIHJ0ZV9wYW5pYygiRmFpbCB0byBjcmVhdGUga25pIGZvciBwb3J0OiAlZFxuIiwgcG9y dF9pZCk7DQoNCnJ0ZV9wYW5pYygiRmFpbGVkIHRvIGNyZWF0ZSAlcyIsIHAtPm5hbWUpOw0KDQpU aGlzIHNob3VsZCBwcmludCBlLmcuICJGYWlsZWQgdG8gY3JlYXRlIEtOSTUiLCB3aGljaCB1c2Vy cyBzaG91bGQga25vdyBpdCBpcyB0aGUgS05JIGFzc29jaWF0ZWQgd2l0aCBMSU5LNS4NCg0KPiAr ICAgICB9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkDQo+ICBhcHBfaW5pdF9waXBlbGluZXMo c3RydWN0IGFwcF9wYXJhbXMgKmFwcCkNCj4gIHsNCj4gICAgICAgdWludDMyX3QgcF9pZDsNCj4g QEAgLTE1MzEsNiArMTYwOSw3IEBAIGludCBhcHBfaW5pdChzdHJ1Y3QgYXBwX3BhcmFtcyAqYXBw KQ0KPiAgICAgICBhcHBfaW5pdF9zd3EoYXBwKTsNCj4gICAgICAgYXBwX2luaXRfdG0oYXBwKTsN Cj4gICAgICAgYXBwX2luaXRfbXNncShhcHApOw0KPiArICAgICBhcHBfaW5pdF9rbmkoYXBwKTsN Cj4NCj4gICAgICAgYXBwX3BpcGVsaW5lX2NvbW1vbl9jbWRfcHVzaChhcHApOw0KPiAgICAgICBh cHBfcGlwZWxpbmVfdGhyZWFkX2NtZF9wdXNoKGFwcCk7DQo+IGRpZmYgLS1naXQgYS9leGFtcGxl cy9pcF9waXBlbGluZS9rbmkva25pLmMgYi9leGFtcGxlcy9pcF9waXBlbGluZS9rbmkva25pLmMN Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMC4uYzU4ZTE0Ng0KDQpQbGVh c2UgbW92ZSB0aGUgdHdvIGZ1bmN0aW9ucyBmcm9tIGtuaS9rbmkuYyB0byBpbml0LmMgKGp1c3Qg YmVmb3JlIGFwcF9pbml0X2tuaSgpIGZ1bmN0aW9uKSBhbmQgbWFrZSB0aGVtIHN0YXRpYyBmdW5j dGlvbnMsIHRoZW4gcmVtb3ZlIGtuaS9rbmkuaCBhbmQga25pL2tuaS5jIGZpbGVzLg0KDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvZXhhbXBsZXMvaXBfcGlwZWxpbmUva25pL2tuaS5jDQo+IEBA IC0wLDAgKzEsODAgQEANCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4gKw0KPiArI2luY2x1ZGUg PHJ0ZV9jb21tb24uaD4NCj4gKyNpbmNsdWRlIDxydGVfbWFsbG9jLmg+DQo+ICsjaW5jbHVkZSA8 cnRlX3RhYmxlX2FycmF5Lmg+DQo+ICsjaW5jbHVkZSA8cnRlX2tuaS5oPg0KPiArI2luY2x1ZGUg PHJ0ZV9ldGhkZXYuaD4NCj4gKw0KPiArI2luY2x1ZGUgInJ0ZV9wb3J0X2tuaS5oIg0KPiArI2lu Y2x1ZGUgImtuaS5oIg0KPiArDQo+ICtpbnQNCj4gK2tuaV9jb25maWdfbmV0d29ya19pbnRlcmZh Y2UodWludDhfdCBwb3J0X2lkLCB1aW50OF90IGlmX3VwKSB7DQo+ICsgICAgIGludCByZXQgPSAw Ow0KPiArDQo+ICsgICAgIGlmIChwb3J0X2lkID49IHJ0ZV9ldGhfZGV2X2NvdW50KCkgfHwgcG9y dF9pZCA+PQ0KPiBSVEVfTUFYX0VUSFBPUlRTKSB7DQo+ICsgICAgICAgICAgICAgUlRFX0xPRyhF UlIsIFBPUlQsICIlczogSW52YWxpZCBwb3J0IGlkICVkXG4iLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2Z1bmNfXywgcG9ydF9pZCk7DQo+ICsgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBSVEVfTE9HKElORk8sIFBPUlQsICIl czogQ29uZmlndXJlIG5ldHdvcmsgaW50ZXJmYWNlIG9mICVkDQo+ICVzXG4iLA0KPiArICAgICAg ICAgICAgICAgICAgICAgX19mdW5jX18sIHBvcnRfaWQsIGlmX3VwID8gInVwIiA6ICJkb3duIik7 DQo+ICsNCj4gKyAgICAgaWYgKGlmX3VwICE9IDApIHsgLyogQ29uZmlndXJlIG5ldHdvcmsgaW50 ZXJmYWNlIHVwICovDQo+ICsgICAgICAgICAgICAgcnRlX2V0aF9kZXZfc3RvcChwb3J0X2lkKTsN CldoeSBkbyB3ZSBuZWVkIHRvIHN0b3AgdGhlIGRldmljZSBmaXJzdCBiZWZvcmUgd2Ugc3RhcnQg aXQ/DQoNCj4gKyAgICAgICAgICAgICByZXQgPSBydGVfZXRoX2Rldl9zdGFydChwb3J0X2lkKTsN Cj4gKyAgICAgfSBlbHNlIC8qIENvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZSBkb3duICovDQo+ ICsgICAgICAgICAgICAgcnRlX2V0aF9kZXZfc3RvcChwb3J0X2lkKTsNCg0KRG8gd2UgbmVlZCB0 byBjYWxsIHJ0ZV9ldGhfZGV2X3N0YXJ0L3N0b3AoKSBvciBkbyB3ZSBuZWVkIHRvIGNhbGwgcnRl X2V0aF9kZXZfdXAvZG93bigpPw0KVG8gYmUgIGhvbmVzdCwgSSBtYWRlIHJlZmVyZW5jZSB0byB0 aGUgdGhlIEtOSSBzYW1wbGUgYXBwbGljYXRpb24uDQpTaW5jZSB0aGVyZSBpcyB2ZXJ5IGxpdHRs ZSBkb2NzIHRlbGwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBkZXZpY2UgdXAgY2FsbCBhbmQgZGV2 aWNlIHN0YXJ0IGNhbGwsIEkgYW0gbm90IHN1cmUgd2hpY2ggb25lIGlzIGJldHRlciBoZXJlLg0K QW55IGhlbHAgd2lsbCBiZSBhcHByZWNpYXRlLiA6LSkNCg0KPiArDQo+ICsgICAgIGlmIChyZXQg PCAwKQ0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJSLCBQT1JULCAiJXM6IEZhaWxlZCB0byBz dGFydCBwb3J0ICVkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf XywgcG9ydF9pZCk7DQo+ICsNCg0KVGhpcyBpcyBhIGNhbGxiYWNrIGZ1bmN0aW9uLCBJIHRoaW5r IHdlIHNob3VsZCBjb21wbGV0ZWx5IHJlbW92ZSBhbnkgUlRFX0xPRyBjYWxscyBmcm9tIGl0LCBh cyBsaW5rIGNhbiBnbyB1cCBhbmQgZG93biBxdWl0ZSBmcmVxdWVudGx5Lg0KDQo+ICsgICAgIHJl dHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK2ludA0KPiAra25pX2NoYW5nZV9tdHUodWludDhfdCBw b3J0X2lkLCB1bnNpZ25lZCBuZXdfbXR1KSB7DQo+ICsgICAgIGludCByZXQ7DQo+ICsNCj4gKyAg ICAgaWYgKHBvcnRfaWQgPj0gcnRlX2V0aF9kZXZfY291bnQoKSkgew0KPiArICAgICAgICAgICAg IFJURV9MT0coRVJSLCBQT1JULCAiJXM6IEludmFsaWQgcG9ydCBpZCAlZFxuIiwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHBvcnRfaWQpOw0KPiArICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgaWYgKG5ld19tdHUg PiBFVEhFUl9NQVhfTEVOKSB7DQo+ICsgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIFBPUlQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogRmFpbCB0byByZWNvbmZpZ3VyZSBw b3J0ICVkLCB0aGUgbmV3DQo+IE1UVSBpcyB0b28gYmlnXG4iLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX2Z1bmNfXywgcG9ydF9pZCk7DQo+ICsgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICBSVEVfTE9HKElORk8sIFBPUlQsICIl czogQ2hhbmdlIE1UVSBvZiBwb3J0ICVkIHRvICV1XG4iLA0KPiArICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18sIHBvcnRfaWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICBuZXdfbXR1KTsN Cj4gKw0KPiArICAgICAvKiBTdG9wIHNwZWNpZmljIHBvcnQgKi8NCj4gKyAgICAgcnRlX2V0aF9k ZXZfc3RvcChwb3J0X2lkKTsNCj4gKw0KPiArICAgICAvKiBTZXQgbmV3IE1UVSAqLw0KPiArICAg ICByZXQgPSBydGVfZXRoX2Rldl9zZXRfbXR1KHBvcnRfaWQsIG5ld19tdHUpOw0KPiArICAgICBp ZiAocmV0IDwgMCkgew0KPiArICAgICAgICAgICAgIFJURV9MT0coRVJSLCBQT1JULCAiJXM6IEZh aWwgdG8gcmVjb25maWd1cmUgcG9ydCAlZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19mdW5jX18sIHBvcnRfaWQpOw0KPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ ICsgICAgIH0NCj4gKw0KPiArICAgICAvKiBSZXN0YXJ0IHNwZWNpZmljIHBvcnQgKi8NCj4gKyAg ICAgcmV0ID0gcnRlX2V0aF9kZXZfc3RhcnQocG9ydF9pZCk7DQo+ICsgICAgIGlmIChyZXQgPCAw KSB7DQo+ICsgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIFBPUlQsICIlczogRmFpbCB0byByZXN0 YXJ0IHBvcnQgJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCBwb3J0X2lkKTsNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICB9DQo+ICsN Cj4gKyAgICAgcmV0dXJuIDA7DQo+ICt9DQpUaGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24sIEkg dGhpbmsgd2Ugc2hvdWxkIGNvbXBsZXRlbHkgcmVtb3ZlIGFsbCB0aGUgUlRFX0xPRyBjYWxscyBm cm9tIGl0Lg0KDQo+ICsNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2tuaS9r bmkuaCBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL2tuaS9rbmkuaA0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleCAwMDAwMDAwLi4wNGM4NDI5DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv ZXhhbXBsZXMvaXBfcGlwZWxpbmUva25pL2tuaS5oDQo+IEBAIC0wLDAgKzEsMTYgQEANCj4gKyNp Zm5kZWYgX19JTkNMVURFX0tOSV9IX18NCj4gKyNkZWZpbmUgX19JTkNMVURFX0tOSV9IX18NCj4g Kw0KPiArI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gKw0KPiArLyogVG90YWwgb2N0ZXRzIGlu IGV0aGVybmV0IGhlYWRlciAqLw0KPiArI2RlZmluZSBLTklfRU5FVF9IRUFERVJfU0laRSAgICAx NA0KDQpBcmUgd2UgYWN0dWFsbHkgdXNpbmcgdGhpcyBtYWNybz8gSSB3b3VsZCBsaWtlIHRvIHJl bW92ZSBpdCBpZiBub3QgbmVlZGVkLg0KDQo+ICsNCj4gKy8qIFRvdGFsIG9jdGV0cyBpbiB0aGUg RkNTICovDQo+ICsjZGVmaW5lIEtOSV9FTkVUX0ZDU19TSVpFICAgICAgIDQNCg0KQXJlIHdlIGFj dHVhbGx5IHVzaW5nIHRoaXMgbWFjcm8/IEkgd291bGQgbGlrZSB0byByZW1vdmUgaXQgaWYgbm90 IG5lZWRlZC4NCg0KPiArDQo+ICtpbnQga25pX2NvbmZpZ19uZXR3b3JrX2ludGVyZmFjZSh1aW50 OF90IHBvcnRfaWQsIHVpbnQ4X3QgaWZfdXApOw0KPiArDQo+ICtpbnQga25pX2NoYW5nZV9tdHUo dWludDhfdCBwb3J0X2lkLCB1bnNpZ25lZCBuZXdfbXR1KTsNCj4gKw0KPiArI2VuZGlmDQo+IGRp ZmYgLS1naXQgYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZV9iZS5oDQo+IGIvZXhhbXBs ZXMvaXBfcGlwZWxpbmUvcGlwZWxpbmVfYmUuaA0KPiBpbmRleCBmNGZmMjYyLi4yM2YwNDM4IDEw MDY0NA0KPiAtLS0gYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZV9iZS5oDQo+ICsrKyBi L2V4YW1wbGVzL2lwX3BpcGVsaW5lL3BpcGVsaW5lX2JlLmgNCj4gQEAgLTQwLDYgKzQwLDcgQEAN Cj4gICNpbmNsdWRlIDxydGVfcG9ydF9yYXMuaD4NCj4gICNpbmNsdWRlIDxydGVfcG9ydF9zY2hl ZC5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9wb3J0X3NvdXJjZV9zaW5rLmg+DQo+ICsjaW5jbHVkZSA8 cnRlX3BvcnRfa25pLmg+DQo+ICAjaW5jbHVkZSA8cnRlX3BpcGVsaW5lLmg+DQo+DQo+ICBlbnVt IHBpcGVsaW5lX3BvcnRfaW5fdHlwZSB7DQo+IEBAIC01MCw2ICs1MSw3IEBAIGVudW0gcGlwZWxp bmVfcG9ydF9pbl90eXBlIHsNCj4gICAgICAgUElQRUxJTkVfUE9SVF9JTl9SSU5HX1JFQURFUl9J UFY2X0ZSQUcsDQo+ICAgICAgIFBJUEVMSU5FX1BPUlRfSU5fU0NIRURfUkVBREVSLA0KPiAgICAg ICBQSVBFTElORV9QT1JUX0lOX1NPVVJDRSwNCj4gKyAgICAgUElQRUxJTkVfUE9SVF9JTl9LTkks DQo+ICB9Ow0KPg0KPiAgc3RydWN0IHBpcGVsaW5lX3BvcnRfaW5fcGFyYW1zIHsNCj4gQEAgLTYy LDYgKzY0LDcgQEAgc3RydWN0IHBpcGVsaW5lX3BvcnRfaW5fcGFyYW1zIHsNCj4gICAgICAgICAg ICAgICBzdHJ1Y3QgcnRlX3BvcnRfcmluZ19yZWFkZXJfaXB2Nl9mcmFnX3BhcmFtcw0KPiByaW5n X2lwdjZfZnJhZzsNCj4gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3BvcnRfc2NoZWRfcmVhZGVy X3BhcmFtcyBzY2hlZDsNCj4gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX3BvcnRfc291cmNlX3Bh cmFtcyBzb3VyY2U7DQo+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXJf cGFyYW1zIGtuaTsNCj4gICAgICAgfSBwYXJhbXM7DQo+ICAgICAgIHVpbnQzMl90IGJ1cnN0X3Np emU7DQo+ICB9Ow0KPiBAQCAtODQsNiArODcsOCBAQCBwaXBlbGluZV9wb3J0X2luX3BhcmFtc19j b252ZXJ0KHN0cnVjdA0KPiBwaXBlbGluZV9wb3J0X2luX3BhcmFtcyAgKnApDQo+ICAgICAgICAg ICAgICAgcmV0dXJuICh2b2lkICopICZwLT5wYXJhbXMuc2NoZWQ7DQo+ICAgICAgIGNhc2UgUElQ RUxJTkVfUE9SVF9JTl9TT1VSQ0U6DQo+ICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopICZw LT5wYXJhbXMuc291cmNlOw0KPiArICAgICBjYXNlIFBJUEVMSU5FX1BPUlRfSU5fS05JOg0KPiAr ICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKSAmcC0+cGFyYW1zLmtuaTsNCj4gICAgICAgZGVm YXVsdDoNCj4gICAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gICAgICAgfQ0KPiBAQCAtMTA3 LDYgKzExMiw4IEBAIHBpcGVsaW5lX3BvcnRfaW5fcGFyYW1zX2dldF9vcHMoc3RydWN0DQo+IHBp cGVsaW5lX3BvcnRfaW5fcGFyYW1zICAqcCkNCj4gICAgICAgICAgICAgICByZXR1cm4gJnJ0ZV9w b3J0X3NjaGVkX3JlYWRlcl9vcHM7DQo+ICAgICAgIGNhc2UgUElQRUxJTkVfUE9SVF9JTl9TT1VS Q0U6DQo+ICAgICAgICAgICAgICAgcmV0dXJuICZydGVfcG9ydF9zb3VyY2Vfb3BzOw0KPiArICAg ICBjYXNlIFBJUEVMSU5FX1BPUlRfSU5fS05JOg0KPiArICAgICAgICAgICAgIHJldHVybiAmcnRl X3BvcnRfa25pX3JlYWRlcl9vcHM7DQo+ICAgICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgICAgICAg cmV0dXJuIE5VTEw7DQo+ICAgICAgIH0NCj4gQEAgLTEyMyw2ICsxMzAsNyBAQCBlbnVtIHBpcGVs aW5lX3BvcnRfb3V0X3R5cGUgew0KPiAgICAgICBQSVBFTElORV9QT1JUX09VVF9SSU5HX1dSSVRF Ul9JUFY2X1JBUywNCj4gICAgICAgUElQRUxJTkVfUE9SVF9PVVRfU0NIRURfV1JJVEVSLA0KPiAg ICAgICBQSVBFTElORV9QT1JUX09VVF9TSU5LLA0KPiArICAgICBQSVBFTElORV9QT1JUX09VVF9L TkksDQo+ICB9Ow0KPg0KPiAgc3RydWN0IHBpcGVsaW5lX3BvcnRfb3V0X3BhcmFtcyB7DQo+IEBA IC0xMzgsNiArMTQ2LDcgQEAgc3RydWN0IHBpcGVsaW5lX3BvcnRfb3V0X3BhcmFtcyB7DQo+ICAg ICAgICAgICAgICAgc3RydWN0IHJ0ZV9wb3J0X3Jpbmdfd3JpdGVyX2lwdjZfcmFzX3BhcmFtcyBy aW5nX2lwdjZfcmFzOw0KPiAgICAgICAgICAgICAgIHN0cnVjdCBydGVfcG9ydF9zY2hlZF93cml0 ZXJfcGFyYW1zIHNjaGVkOw0KPiAgICAgICAgICAgICAgIHN0cnVjdCBydGVfcG9ydF9zaW5rX3Bh cmFtcyBzaW5rOw0KPiArICAgICAgICAgICAgIHN0cnVjdCBydGVfcG9ydF9rbmlfd3JpdGVyX3Bh cmFtcyBrbmk7DQo+ICAgICAgIH0gcGFyYW1zOw0KPiAgfTsNCj4NCj4gQEAgLTE2NSw2ICsxNzQs OCBAQCBwaXBlbGluZV9wb3J0X291dF9wYXJhbXNfY29udmVydChzdHJ1Y3QNCj4gcGlwZWxpbmVf cG9ydF9vdXRfcGFyYW1zICAqcCkNCj4gICAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKikgJnAt PnBhcmFtcy5zY2hlZDsNCj4gICAgICAgY2FzZSBQSVBFTElORV9QT1JUX09VVF9TSU5LOg0KPiAg ICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKSAmcC0+cGFyYW1zLnNpbms7DQo+ICsgICAgIGNh c2UgUElQRUxJTkVfUE9SVF9PVVRfS05JOg0KPiArICAgICAgICAgICAgIHJldHVybiAodm9pZCAq KSAmcC0+cGFyYW1zLmtuaTsNCj4gICAgICAgZGVmYXVsdDoNCj4gICAgICAgICAgICAgICByZXR1 cm4gTlVMTDsNCj4gICAgICAgfQ0KPiBAQCAtMTk0LDYgKzIwNSw4IEBAIHBpcGVsaW5lX3BvcnRf b3V0X3BhcmFtc19nZXRfb3BzKHN0cnVjdA0KPiBwaXBlbGluZV9wb3J0X291dF9wYXJhbXMgICpw KQ0KPiAgICAgICAgICAgICAgIHJldHVybiAmcnRlX3BvcnRfc2NoZWRfd3JpdGVyX29wczsNCj4g ICAgICAgY2FzZSBQSVBFTElORV9QT1JUX09VVF9TSU5LOg0KPiAgICAgICAgICAgICAgIHJldHVy biAmcnRlX3BvcnRfc2lua19vcHM7DQo+ICsgICAgIGNhc2UgUElQRUxJTkVfUE9SVF9PVVRfS05J Og0KPiArICAgICAgICAgICAgIHJldHVybiAmcnRlX3BvcnRfa25pX3dyaXRlcl9vcHM7DQo+ICAg ICAgIGRlZmF1bHQ6DQo+ICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7DQo+ICAgICAgIH0NCj4g ZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwX3BpcGVsaW5lL3RocmVhZC5jIGIvZXhhbXBsZXMvaXBf cGlwZWxpbmUvdGhyZWFkLmMNCj4gaW5kZXggYTBmMWYxMi4uNTM0ODY0YSAxMDA2NDQNCj4gLS0t IGEvZXhhbXBsZXMvaXBfcGlwZWxpbmUvdGhyZWFkLmMNCj4gKysrIGIvZXhhbXBsZXMvaXBfcGlw ZWxpbmUvdGhyZWFkLmMNCj4gQEAgLTIzOSw2ICsyMzksMTUgQEAgYXBwX3RocmVhZCh2b2lkICph cmcpDQo+ICAgICAgIHVpbnQzMl90IGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKSwgaSwgajsNCj4g ICAgICAgc3RydWN0IGFwcF90aHJlYWRfZGF0YSAqdCA9ICZhcHAtPnRocmVhZF9kYXRhW2NvcmVf aWRdOw0KPg0KPiArICAgICBmb3IgKGkgPSAwOyBpIDwgYXBwLT5uX2tuaTsgaSsrKSB7DQo+ICsg ICAgICAgICAgICAgaWYgKGNvcmVfaWQgPT0gKHVpbnQzMl90KWNwdV9jb3JlX21hcF9nZXRfbGNv cmVfaWQoDQo+ICsgICAgICAgICAgICAgICAgICAgICBhcHAtPmNvcmVfbWFwLA0KPiArICAgICAg ICAgICAgICAgICAgICAgYXBwLT5rbmlfcGFyYW1zW2ldLnNvY2tldF9pZCwNCj4gKyAgICAgICAg ICAgICAgICAgICAgIGFwcC0+a25pX3BhcmFtc1tpXS5jb3JlX2lkLA0KPiArICAgICAgICAgICAg ICAgICAgICAgYXBwLT5rbmlfcGFyYW1zW2ldLmh5cGVyX3RoX2lkKSkNCj4gKyAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICB9DQo+ICsNClNhbWUgcXVlc3Rpb25zIGFzIGFi b3ZlOg0KLSBXaHkgZG8gd2UgbmVlZCB0byBkZWRpY2F0ZSBzZXBhcmF0ZSBDUFUgY29yZShzKSBm b3IgS05JIGludGVyZmFjZShzKT8gSXNuJ3QgS05JIGNvZGUgcnVubmluZyBpbiBrZXJuZWwgc3Bh Y2UsIHdoeSBkbyB3ZSBuZWVkIHRvIGRlZGljYXRlIHNlcGFyYXRlIHVzZXIgc3BhY2UgY29yZSBm b3IgaXQgYW5kIHdoeSBkbyB3ZSBuZWVkIHRvIGFkZCB0aGlzIGNvcmUgdG8gdGhlIHVzZXItc3Bh Y2UgYXBwbGljYXRpb24gY29yZSBtYXNrPw0KLSBFdmVuIGlmIHdlIG5lZWQgdG8gYWRkIHRoaXMg dG8gdGhlIGNvcmUgbWFzayAobWF5YmUgSSBhbSBtaXNzaW5nIHNvbWV0aGluZyBoZXJlIC4uLiks IHdoeSBkbyB3ZSBuZWVkIHRvIGRlZGljYXRlIHRoaXMgY29yZSBlbnRpcmVseSB0byBLTkk/IENh bid0IHdlIGhhdmUgS05JIChrZXJuZWwpIGNvZGUgc2hhcmluZyB0aGlzIGNvcmUgd2l0aCB1c2Vy LXNwYWNlIGFwcGxpY2F0aW9uIGNvZGUgKGUuZy4gc29tZSBwaXBlbGluZSBpbnN0YW5jZXM/KQ0K DQpUaGlzIGlzIHJ1bi10aW1lIGNvZGUsIGxldCdzIGhhdmUgaXQgZW5hYmxlZCBvbmx5IHdoZW4g S05JIGxpYnJhcnkgaXMgcGFydCBvZiB0aGUgYnVpbGQ6DQojaWZkZWYgUlRFX0xJQlJURV9LTkkN Ci4uLg0KI2VuZGlmIC8qIFJURV9MSUJSVEVfS05JICovDQoNCj4gICAgICAgZm9yIChpID0gMDsg OyBpKyspIHsNCj4gICAgICAgICAgICAgICB1aW50MzJfdCBuX3JlZ3VsYXIgPSBSVEVfTUlOKHQt Pm5fcmVndWxhciwgUlRFX0RJTSh0LQ0KPiA+cmVndWxhcikpOw0KPiAgICAgICAgICAgICAgIHVp bnQzMl90IG5fY3VzdG9tID0gUlRFX01JTih0LT5uX2N1c3RvbSwgUlRFX0RJTSh0LQ0KPiA+Y3Vz dG9tKSk7DQo+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX3BvcnQvTWFrZWZpbGUgYi9saWIvbGli cnRlX3BvcnQvTWFrZWZpbGUNCj4gaW5kZXggZDRkZTVhZi4uZjE4MjUzZCAxMDA2NDQNCj4gLS0t IGEvbGliL2xpYnJ0ZV9wb3J0L01ha2VmaWxlDQo+ICsrKyBiL2xpYi9saWJydGVfcG9ydC9NYWtl ZmlsZQ0KPiBAQCAtNTcsNiArNTcsOSBAQCBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkg Kz0gcnRlX3BvcnRfcmFzLmMNCj4gIGVuZGlmDQo+ICBTUkNTLSQoQ09ORklHX1JURV9MSUJSVEVf UE9SVCkgKz0gcnRlX3BvcnRfc2NoZWQuYw0KPiAgU1JDUy0kKENPTkZJR19SVEVfTElCUlRFX1BP UlQpICs9IHJ0ZV9wb3J0X3NvdXJjZV9zaW5rLmMNCj4gK2lmZXEgKCQoQ09ORklHX1JURV9MSUJS VEVfS05JKSx5KQ0KPiArU1JDUy0kKENPTkZJR19SVEVfTElCUlRFX1BPUlQpICs9IHJ0ZV9wb3J0 X2tuaS5jDQo+ICtlbmRpZg0KPg0KPiAgIyBpbnN0YWxsIGluY2x1ZGVzDQo+ICBTWU1MSU5LLSQo Q09ORklHX1JURV9MSUJSVEVfUE9SVCktaW5jbHVkZSArPSBydGVfcG9ydC5oDQo+IEBAIC02OCw2 ICs3MSw5IEBAIFNZTUxJTkstJChDT05GSUdfUlRFX0xJQlJURV9QT1JUKS1pbmNsdWRlICs9DQo+ IHJ0ZV9wb3J0X3Jhcy5oDQo+ICBlbmRpZg0KPiAgU1lNTElOSy0kKENPTkZJR19SVEVfTElCUlRF X1BPUlQpLWluY2x1ZGUgKz0gcnRlX3BvcnRfc2NoZWQuaA0KPiAgU1lNTElOSy0kKENPTkZJR19S VEVfTElCUlRFX1BPUlQpLWluY2x1ZGUgKz0gcnRlX3BvcnRfc291cmNlX3NpbmsuaA0KPiAraWZl cSAoJChDT05GSUdfUlRFX0xJQlJURV9LTkkpLHkpDQo+ICtTWU1MSU5LLSQoQ09ORklHX1JURV9M SUJSVEVfUE9SVCktaW5jbHVkZSArPSBydGVfcG9ydF9rbmkuaA0KPiArZW5kaWYNCj4NCj4gICMg dGhpcyBsaWIgZGVwZW5kcyB1cG9uOg0KPiAgREVQRElSUy0kKENPTkZJR19SVEVfTElCUlRFX1BP UlQpIDo9IGxpYi9saWJydGVfZWFsDQo+IEBAIC03NSw1ICs4MSw2IEBAIERFUERJUlMtJChDT05G SUdfUlRFX0xJQlJURV9QT1JUKSArPQ0KPiBsaWIvbGlicnRlX21idWYNCj4gIERFUERJUlMtJChD T05GSUdfUlRFX0xJQlJURV9QT1JUKSArPSBsaWIvbGlicnRlX21lbXBvb2wNCj4gIERFUERJUlMt JChDT05GSUdfUlRFX0xJQlJURV9QT1JUKSArPSBsaWIvbGlicnRlX2V0aGVyDQo+ICBERVBESVJT LSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gbGliL2xpYnJ0ZV9pcF9mcmFnDQo+ICtERVBE SVJTLSQoQ09ORklHX1JURV9MSUJSVEVfUE9SVCkgKz0gbGliL2xpYnJ0ZV9rbmkNCj4NCj4gIGlu Y2x1ZGUgJChSVEVfU0RLKS9tay9ydGUubGliLm1rPGh0dHA6Ly9ydGUubGliLm1rPg0KPiBkaWZm IC0tZ2l0IGEvbGliL2xpYnJ0ZV9wb3J0L3J0ZV9wb3J0X2tuaS5jIGIvbGliL2xpYnJ0ZV9wb3J0 L3J0ZV9wb3J0X2tuaS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAu LjhjNWU0MDQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9saWIvbGlicnRlX3BvcnQvcnRlX3Bv cnRfa25pLmMNCj4gQEAgLTAsMCArMSwzMTYgQEANCj4gKy8qLQ0KPiArICogICBCU0QgTElDRU5T RQ0KPiArICoNCj4gKyAqICAgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlv bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NClBsZWFzZSBmaXggdGhlIHllYXIgYXMgMjAxNi4NCg0K PiArICogICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqICAgUmVkaXN0cmlidXRp b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ ICsgKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs b3dpbmcgY29uZGl0aW9ucw0KPiArICogICBhcmUgbWV0Og0KPiArICoNCj4gKyAqICAgICAqIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp Z2h0DQo+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICogICAgICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluDQo+ICsgKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgKiAgICAgICBkaXN0cmlidXRpb24uDQo+ICsgKiAg ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMg b2YgaXRzDQo+ICsgKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gKyAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2Fy ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKyAqDQo+ICsg KiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO RA0KPiBDT05UUklCVVRPUlMNCj4gKyAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gKyAqICAgTElNSVRFRCBU TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5F U1MgRk9SDQo+ICsgKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO TyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+ICsgKiAgIE9XTkVSIE9SIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLA0K PiArICogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQNCj4gTk9UDQo+ICsgKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiArICogICBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+ IEFORCBPTiBBTlkNCj4gKyAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiArICogICAoSU5DTFVESU5HIE5F R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBV U0UNCj4gKyAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT SUJJTElUWSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKyAqLw0KPiArI2luY2x1ZGUgPHN0cmluZy5o Pg0KPiArDQo+ICsjaW5jbHVkZSA8cnRlX2NvbW1vbi5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9tYWxs b2MuaD4NCj4gKyNpbmNsdWRlIDxydGVfa25pLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJydGVfcG9y dF9rbmkuaCINCj4gKw0KPiArLyoNCj4gKyAqIFBvcnQgS05JIFJlYWRlcg0KPiArICovDQo+ICsj aWZkZWYgUlRFX1BPUlRfU1RBVFNfQ09MTEVDVA0KPiArDQo+ICsjZGVmaW5lIFJURV9QT1JUX0tO SV9SRUFERVJfU1RBVFNfUEtUU19JTl9BREQocG9ydCwgdmFsKSBcDQo+ICsgICAgIHtwb3J0LT5z dGF0cy5uX3BrdHNfaW4gKz0gdmFsfQ0KPiArI2RlZmluZSBSVEVfUE9SVF9LTklfUkVBREVSX1NU QVRTX1BLVFNfRFJPUF9BREQocG9ydCwgdmFsKSBcDQo+ICsgICAgIHtwb3J0LT5zdGF0cy5uX3Br dHNfZHJvcCArPSB2YWx9DQpUaGlzIGFjdHVhbGx5IHJlc3VsdHMgaW4gY29tcGlsZXIgZXJyb3Ig d2hlbiBidWlsdCB3aXRoIFJURV9QT1JUX1NUQVRTX0NPTExFQ1QgPSBPTi4NCg0KUGxlYXNlIGFk ZCBzZW1pY29sb24gYW5kIHJlbW92ZSBjdXJseSBicmFjZXMgKGFzIGluIGUuZy4gcnRlX3BvcnRf cmluZy5jKToNCiNkZWZpbmUgUlRFX1BPUlRfS05JX1JFQURFUl9TVEFUU19QS1RTX0lOX0FERChw b3J0LCB2YWwpIFwNCiAgICAgICAgcG9ydC0+c3RhdHMubl9wa3RzX2luICs9IHZhbDsNCiNkZWZp bmUgUlRFX1BPUlRfS05JX1JFQURFUl9TVEFUU19QS1RTX0RST1BfQUREKHBvcnQsIHZhbCkgXA0K ICAgICAgICBwb3J0LT5zdGF0cy5uX3BrdHNfZHJvcCArPSB2YWw7DQoNCj4gKyNlbHNlDQo+ICsN Cj4gKyNkZWZpbmUgUlRFX1BPUlRfS05JX1JFQURFUl9TVEFUU19QS1RTX0lOX0FERChwb3J0LCB2 YWwpDQo+ICsjZGVmaW5lIFJURV9QT1JUX0tOSV9SRUFERVJfU1RBVFNfUEtUU19EUk9QX0FERChw b3J0LCB2YWwpDQo+ICsNCj4gKyNlbmRpZg0KPiArDQo+ICtzdHJ1Y3QgcnRlX3BvcnRfa25pX3Jl YWRlciB7DQo+ICsgICAgIHN0cnVjdCBydGVfcG9ydF9pbl9zdGF0cyBzdGF0czsNCj4gKw0KPiAr ICAgICBzdHJ1Y3QgcnRlX2tuaSAqa25pOw0KPiArfTsNCj4gKw0KPiArc3RhdGljIHZvaWQgKg0K PiArcnRlX3BvcnRfa25pX3JlYWRlcl9jcmVhdGUodm9pZCAqcGFyYW1zLCBpbnQgc29ja2V0X2lk KSB7DQo+ICsgICAgIHN0cnVjdCBydGVfcG9ydF9rbmlfcmVhZGVyX3BhcmFtcyAqY29uZiA9DQo+ ICsgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXJfcGFyYW1z ICopIHBhcmFtczsNCj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXIgKnBvcnQ7DQo+ ICsNCj4gKyAgICAgLyogQ2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLw0KPiArICAgICBpZiAoY29u ZiA9PSBOVUxMKSB7DQo+ICsgICAgICAgICAgICAgUlRFX0xPRyhFUlIsIFBPUlQsICIlczogcGFy YW1zIGlzIE5VTExcbiIsIF9fZnVuY19fKTsNCj4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsN Cj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIC8qIE1lbW9yeSBhbGxvY2F0aW9uICovDQo+ICsgICAg IHBvcnQgPSBydGVfem1hbGxvY19zb2NrZXQoIlBPUlQiLCBzaXplb2YoKnBvcnQpLA0KPiArICAg ICAgICAgICAgIFJURV9DQUNIRV9MSU5FX1NJWkUsIHNvY2tldF9pZCk7DQo+ICsgICAgIGlmIChw b3J0ID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAgICBSVEVfTE9HKEVSUiwgUE9SVCwgIiVzOiBG YWlsZWQgdG8gYWxsb2NhdGUgcG9ydFxuIiwNCj4gX19mdW5jX18pOw0KPiArICAgICAgICAgICAg IHJldHVybiBOVUxMOw0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgLyogSW5pdGlhbGl6YXRpb24g Ki8NCj4gKyAgICAgcG9ydC0+a25pID0gY29uZi0+a25pOw0KPiArDQo+ICsgICAgIHJldHVybiBw b3J0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtydGVfcG9ydF9rbmlfcmVhZGVyX3J4 KHZvaWQgKnBvcnQsIHN0cnVjdCBydGVfbWJ1ZiAqKnBrdHMsIHVpbnQzMl90DQo+IG5fcGt0cykg ew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3JlYWRlciAqcCA9DQo+ICsgICAgICAgICAg ICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXIgKikgcG9ydDsNCj4gKyAgICAg dWludDE2X3QgcnhfcGt0X2NudDsNCj4gKw0KPiArICAgICByeF9wa3RfY250ID0gcnRlX2tuaV9y eF9idXJzdChwLT5rbmksIHBrdHMsIG5fcGt0cyk7DQo+ICsgICAgIFJURV9QT1JUX0tOSV9SRUFE RVJfU1RBVFNfUEtUU19JTl9BREQocCwgcnhfcGt0X2NudCk7DQo+ICsgICAgIHJldHVybiByeF9w a3RfY250Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50DQo+ICtydGVfcG9ydF9rbmlfcmVhZGVy X2ZyZWUodm9pZCAqcG9ydCkgew0KPiArICAgICBpZiAocG9ydCA9PSBOVUxMKSB7DQo+ICsgICAg ICAgICAgICAgUlRFX0xPRyhFUlIsIFBPUlQsICIlczogcG9ydCBpcyBOVUxMXG4iLCBfX2Z1bmNf Xyk7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAgIH0NCj4gKw0KPiAr ICAgICBydGVfZnJlZShwb3J0KTsNCj4gKw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0K PiArc3RhdGljIGludCBydGVfcG9ydF9rbmlfcmVhZGVyX3N0YXRzX3JlYWQodm9pZCAqcG9ydCwN Cj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2luX3N0YXRzICpzdGF0cywgaW50IGNsZWFyKQ0KPiAr ew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3JlYWRlciAqcCA9DQo+ICsgICAgICAgICAg ICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV9yZWFkZXIgKikgcG9ydDsNCj4gKw0KPiAr ICAgICBpZiAoc3RhdHMgIT0gTlVMTCkNCj4gKyAgICAgICAgICAgICBtZW1jcHkoc3RhdHMsICZw LT5zdGF0cywgc2l6ZW9mKHAtPnN0YXRzKSk7DQo+ICsNCj4gKyAgICAgaWYgKGNsZWFyKQ0KPiAr ICAgICAgICAgICAgIG1lbXNldCgmcC0+c3RhdHMsIDAsIHNpemVvZihwLT5zdGF0cykpOw0KPiAr DQo+ICsgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogUG9ydCBLTkkgV3Jp dGVyDQo+ICsgKi8NCj4gKyNpZmRlZiBSVEVfUE9SVF9TVEFUU19DT0xMRUNUDQo+ICsNCj4gKyNk ZWZpbmUgUlRFX1BPUlRfS05JX1dSSVRFUl9TVEFUU19QS1RTX0lOX0FERChwb3J0LCB2YWwpIFwN Cj4gKyAgICAge3BvcnQtPnN0YXRzLm5fcGt0c19pbiArPSB2YWx9DQo+ICsjZGVmaW5lIFJURV9Q T1JUX0tOSV9XUklURVJfU1RBVFNfUEtUU19EUk9QX0FERChwb3J0LCB2YWwpIFwNCj4gKyAgICAg e3BvcnQtPnN0YXRzLm5fcGt0c19kcm9wICs9IHZhbH0NCj4gKw0KVGhpcyBhY3R1YWxseSByZXN1 bHRzIGluIGNvbXBpbGVyIGVycm9yIHdoZW4gYnVpbHQgd2l0aCBSVEVfUE9SVF9TVEFUU19DT0xM RUNUID0gT04uDQoNClBsZWFzZSBhZGQgc2VtaWNvbG9uIGFuZCByZW1vdmUgY3VybHkgYnJhY2Vz IChhcyBpbiBlLmcuIHJ0ZV9wb3J0X3JpbmcuYykuDQpBY3R1YWxseSBJIGltcGxlbWVudHMgdGhl IG1hY3JvIHNpbWlsYXIgdG8gUlRFX1BPUlRfUklOR19SRUFERVJfU1RBVFNfUEtUU19JTl9BREQg Zmlyc3QuIEJ1dCB0aGUgc2NyaXB0cy9jaGVja3BhdGNoZXMuc2ggZmFpbHM6IEVSUk9SOkNPTVBM RVhfTUFDUk86IE1hY3JvcyB3aXRoIGNvbXBsZXggdmFsdWVzIHNob3VsZCBiZSBlbmNsb3NlZCBp biBwYXJlbnRoZXNlcw0KSSdtIG5vdCBzaGFyZSBlaXRoZXIgSSBoYXZlIGRvbmUgc29tZXRoaW5n IHdyb25nIG9yIHRoZSBjaGVja3BhdGNoZXMgc2NyaXB0IG5lZWQgYW4gdXBkYXRlLg0KDQo+ICsj ZWxzZQ0KPiArDQo+ICsjZGVmaW5lIFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNfUEtUU19JTl9B REQocG9ydCwgdmFsKQ0KPiArI2RlZmluZSBSVEVfUE9SVF9LTklfV1JJVEVSX1NUQVRTX1BLVFNf RFJPUF9BREQocG9ydCwgdmFsKQ0KPiArDQo+ICsjZW5kaWYNCj4gKw0KPiArc3RydWN0IHJ0ZV9w b3J0X2tuaV93cml0ZXIgew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfb3V0X3N0YXRzIHN0YXRz Ow0KPiArDQo+ICsgICAgIHN0cnVjdCBydGVfbWJ1ZiAqdHhfYnVmWzIgKiBSVEVfUE9SVF9JTl9C VVJTVF9TSVpFX01BWF07DQo+ICsgICAgIHVpbnQzMl90IHR4X2J1cnN0X3N6Ow0KPiArICAgICB1 aW50MTZfdCB0eF9idWZfY291bnQ7DQoNCkNhbiB3ZSBhY3R1YWxseSBtYWtlIHR4X2J1Zl9jb3Vu dCB0byBiZSB1aW50MzJfdCByYXRoZXIgdGhhbiB1aW50MTZfdD8gSSBzZWUgc29tZSBjb21wdXRh dGlvbiBiZXR3ZWVuIHR4X2J1Zl9jb3VudCBhbmQgc29tZSBvdGhlciB2YXJpYWJsZSBvZiB0eXBl IHVpbnQzMl90IGxhdGVyIGluIHRoZSBjb2RlIC4uLg0KDQo+ICsgICAgIHVpbnQ2NF90IGJzel9t YXNrOw0KPiArICAgICBzdHJ1Y3QgcnRlX2tuaSAqa25pOw0KPiArfTsNCj4gKw0KPiArc3RhdGlj IHZvaWQgKg0KPiArcnRlX3BvcnRfa25pX3dyaXRlcl9jcmVhdGUodm9pZCAqcGFyYW1zLCBpbnQg c29ja2V0X2lkKSB7DQo+ICsgICAgIHN0cnVjdCBydGVfcG9ydF9rbmlfd3JpdGVyX3BhcmFtcyAq Y29uZiA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV93cml0 ZXJfcGFyYW1zICopIHBhcmFtczsNCj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV93cml0ZXIg KnBvcnQ7DQo+ICsNCj4gKyAgICAgLyogQ2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLw0KPiArICAg ICBpZiAoKGNvbmYgPT0gTlVMTCkgfHwNCj4gKyAgICAgICAgICAgICAoY29uZi0+dHhfYnVyc3Rf c3ogPT0gMCkgfHwNCj4gKyAgICAgICAgICAgICAoY29uZi0+dHhfYnVyc3Rfc3ogPiBSVEVfUE9S VF9JTl9CVVJTVF9TSVpFX01BWCkgfHwNCj4gKyAgICAgICAgICAgICAoIXJ0ZV9pc19wb3dlcl9v Zl8yKGNvbmYtPnR4X2J1cnN0X3N6KSkpIHsNCj4gKyAgICAgICAgICAgICBSVEVfTE9HKEVSUiwg UE9SVCwgIiVzOiBJbnZhbGlkIGlucHV0IHBhcmFtZXRlcnNcbiIsDQo+IF9fZnVuY19fKTsNCj4g KyAgICAgICAgICAgICByZXR1cm4gTlVMTDsNCj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIC8qIE1l bW9yeSBhbGxvY2F0aW9uICovDQo+ICsgICAgIHBvcnQgPSBydGVfem1hbGxvY19zb2NrZXQoIlBP UlQiLCBzaXplb2YoKnBvcnQpLA0KPiArICAgICAgICAgICAgIFJURV9DQUNIRV9MSU5FX1NJWkUs IHNvY2tldF9pZCk7DQo+ICsgICAgIGlmIChwb3J0ID09IE5VTEwpIHsNCj4gKyAgICAgICAgICAg ICBSVEVfTE9HKEVSUiwgUE9SVCwgIiVzOiBGYWlsZWQgdG8gYWxsb2NhdGUgcG9ydFxuIiwNCj4g X19mdW5jX18pOw0KPiArICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiArICAgICB9DQo+ICsN Cj4gKyAgICAgLyogSW5pdGlhbGl6YXRpb24gKi8NCj4gKyAgICAgcG9ydC0+a25pID0gY29uZi0+ a25pOw0KPiArICAgICBwb3J0LT50eF9idXJzdF9zeiA9IGNvbmYtPnR4X2J1cnN0X3N6Ow0KPiAr ICAgICBwb3J0LT50eF9idWZfY291bnQgPSAwOw0KPiArICAgICBwb3J0LT5ic3pfbWFzayA9IDFM TFUgPDwgKGNvbmYtPnR4X2J1cnN0X3N6IC0gMSk7DQo+ICsNCj4gKyAgICAgcmV0dXJuIHBvcnQ7 DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiArc2VuZF9idXJzdChzdHJ1Y3Qg cnRlX3BvcnRfa25pX3dyaXRlciAqcCkgew0KPiArICAgICB1aW50MzJfdCBuYl90eDsNCj4gKw0K PiArICAgICBuYl90eCA9IHJ0ZV9rbmlfdHhfYnVyc3QocC0+a25pLCBwLT50eF9idWYsIHAtPnR4 X2J1Zl9jb3VudCk7DQo+ICsgICAgIHJ0ZV9rbmlfaGFuZGxlX3JlcXVlc3QocC0+a25pKTsNCj4g Kw0KPiArICAgICBSVEVfUE9SVF9LTklfV1JJVEVSX1NUQVRTX1BLVFNfRFJPUF9BREQocCwgcC0N Cj4gPnR4X2J1Zl9jb3VudCAtIG5iX3R4KTsNCj4gKyAgICAgZm9yICg7IG5iX3R4IDwgcC0+dHhf YnVmX2NvdW50OyBuYl90eCsrKQ0KPiArICAgICAgICAgICAgIHJ0ZV9wa3RtYnVmX2ZyZWUocC0+ dHhfYnVmW25iX3R4XSk7DQo+ICsNCj4gKyAgICAgcC0+dHhfYnVmX2NvdW50ID0gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludA0KPiArcnRlX3BvcnRfa25pX3dyaXRlcl90eCh2b2lkICpwb3J0 LCBzdHJ1Y3QgcnRlX21idWYgKnBrdCkgew0KPiArICAgICBzdHJ1Y3QgcnRlX3BvcnRfa25pX3dy aXRlciAqcCA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHJ0ZV9wb3J0X2tuaV93 cml0ZXIgKikgcG9ydDsNCj4gKw0KPiArICAgICBwLT50eF9idWZbcC0+dHhfYnVmX2NvdW50Kytd ID0gcGt0Ow0KPiArICAgICBSVEVfUE9SVF9LTklfV1JJVEVSX1NUQVRTX1BLVFNfSU5fQUREKHAs IDEpOw0KPiArICAgICBpZiAocC0+dHhfYnVmX2NvdW50ID49IHAtPnR4X2J1cnN0X3N6KQ0KPiAr ICAgICAgICAgICAgIHNlbmRfYnVyc3QocCk7DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3J0ZV9wb3J0X2tuaV93cml0ZXJfdHhfYnVsayh2b2lk ICpwb3J0LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcnRlX21idWYNCj4gKipwa3RzLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBwa3RzX21hc2spIHsN Cj4gKyAgICAgc3RydWN0IHJ0ZV9wb3J0X2tuaV93cml0ZXIgKnAgPQ0KPiArICAgICAgICAgICAg ICAgICAgICAgKHN0cnVjdCBydGVfcG9ydF9rbmlfd3JpdGVyICopIHBvcnQ7DQo+ICsgICAgIHVp bnQ2NF90IGJzel9tYXNrID0gcC0+YnN6X21hc2s7DQo+ICsgICAgIHVpbnQzMl90IHR4X2J1Zl9j b3VudCA9IHAtPnR4X2J1Zl9jb3VudDsNCj4gKyAgICAgdWludDY0X3QgZXhwciA9IChwa3RzX21h c2sgJiAocGt0c19tYXNrICsgMSkpIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoKHBrdHNfbWFzayAmIGJzel9tYXNrKSBeDQo+IGJzel9tYXNrKTsNCj4gKw0KPiAr ICAgICBpZiAoZXhwciA9PSAwKSB7DQo+ICsgICAgICAgICAgICAgdWludDY0X3Qgbl9wa3RzID0g X19idWlsdGluX3BvcGNvdW50bGwocGt0c19tYXNrKTsNCj4gKyAgICAgICAgICAgICB1aW50MzJf dCBuX3BrdHNfb2s7DQo+ICsNCj4gKyAgICAgICAgICAgICBpZiAodHhfYnVmX2NvdW50KQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgc2VuZF9idXJzdChwKTsNCj4gKw0KPiArICAgICAgICAgICAg IFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNfUEtUU19JTl9BREQocCwgbl9wa3RzKTsNCj4gKyAg ICAgICAgICAgICBuX3BrdHNfb2sgPSBydGVfa25pX3R4X2J1cnN0KHAtPmtuaSwgcGt0cywgbl9w a3RzKTsNCj4gKw0KPiArICAgICAgICAgICAgIFJURV9QT1JUX0tOSV9XUklURVJfU1RBVFNfUEtU U19EUk9QX0FERChwLCBuX3BrdHMNCj4gLSBuX3BrdHNfb2spOw0KPiArICAgICAgICAgICAgIGZv ciAoOyBuX3BrdHNfb2sgPCBuX3BrdHM7IG5fcGt0c19vaysrKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcnRlX21idWYgKnBrdCA9IHBrdHNbbl9wa3RzX29rXTsNCj4gKw0KPiAr ICAgICAgICAgICAgICAgICAgICAgcnRlX3BrdG1idWZfZnJlZShwa3QpOw0KPiArICAgICAgICAg ICAgIH0NCj4gKyAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICBmb3IgKDsgcGt0c19tYXNr Oykgew0KPiArICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcGt0X2luZGV4ID0gX19idWls dGluX2N0emxsKHBrdHNfbWFzayk7DQo+ICsgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBw a3RfbWFzayA9IDFMTFUgPDwgcGt0X2luZGV4Ow0KPiArICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHJ0ZV9tYnVmICpwa3QgPSBwa3RzW3BrdF9pbmRleF07DQo+ICsNCj4gKyAgICAgICAgICAg ICAgICAgICAgIHAtPnR4X2J1Zlt0eF9idWZfY291bnQrK10gPSBwa3Q7DQo+ICsgICAgICAgICAg ICAgICAgICAgICBSVEVfUE9SVF9LTklfV1JJVEVSX1NUQVRTX1BLVFNfSU5fQUREKHAsIDEpOw0K PiArICAgICAgICAgICAgICAgICAgICAgcGt0c19tYXNrICY9IH5wa3RfbWFzazsNCj4gKyAgICAg ICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICBwLT50eF9idWZfY291bnQgPSB0eF9idWZf Y291bnQ7DQo+ICsgICAgICAgICAgICAgaWYgKHR4X2J1Zl9jb3VudCA+PSBwLT50eF9idXJzdF9z eikNCj4gKyAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnVyc3QocCk7DQo+ICsgICAgIH0NCj4g Kw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludA0KPiArcnRlX3Bv cnRfa25pX3dyaXRlcl9mbHVzaCh2b2lkICpwb3J0KSB7DQo+ICsgICAgIHN0cnVjdCBydGVfcG9y dF9rbmlfd3JpdGVyICpwID0NCj4gKyAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgcnRlX3Bv cnRfa25pX3dyaXRlciAqKSBwb3J0Ow0KPiArDQo+ICsgICAgIGlmIChwLT50eF9idWZfY291bnQg PiAwKQ0KPiArICAgICAgICAgICAgIHNlbmRfYnVyc3QocCk7DQo+ICsNCj4gKyAgICAgcmV0dXJu IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQNCj4gK3J0ZV9wb3J0X2tuaV93cml0ZXJfZnJl ZSh2b2lkICpwb3J0KSB7DQo+ICsgICAgIGlmIChwb3J0ID09IE5VTEwpIHsNCj4gKyAgICAgICAg ICAgICBSVEVfTE9HKEVSUiwgUE9SVCwgIiVzOiBQb3J0IGlzIE5VTExcbiIsIF9fZnVuY19fKTsN Cj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgfQ0KPiArDQo+ICsgICAg IHJ0ZV9wb3J0X2tuaV93cml0ZXJfZmx1c2gocG9ydCk7DQo+ICsgICAgIHJ0ZV9mcmVlKHBvcnQp Ow0KPiArDQo+ICsgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IHJ0ZV9w b3J0X2tuaV93cml0ZXJfc3RhdHNfcmVhZCh2b2lkICpwb3J0LA0KPiArICAgICBzdHJ1Y3QgcnRl X3BvcnRfb3V0X3N0YXRzICpzdGF0cywgaW50IGNsZWFyKQ0KPiArew0KPiArICAgICBzdHJ1Y3Qg cnRlX3BvcnRfa25pX3dyaXRlciAqcCA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAoc3RydWN0 IHJ0ZV9wb3J0X2tuaV93cml0ZXIgKikgcG9ydDsNCj4gKw0KPiArICAgICBpZiAoc3RhdHMgIT0g TlVMTCkNCj4gKyAgICAgICAgICAgICBtZW1jcHkoc3RhdHMsICZwLT5zdGF0cywgc2l6ZW9mKHAt PnN0YXRzKSk7DQo+ICsNCj4gKyAgICAgaWYgKGNsZWFyKQ0KPiArICAgICAgICAgICAgIG1lbXNl dCgmcC0+c3RhdHMsIDAsIHNpemVvZihwLT5zdGF0cykpOw0KPiArDQo+ICsgICAgIHJldHVybiAw Ow0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogU3VtbWFyeSBvZiBwb3J0IG9wZXJhdGlvbnMNCj4g KyAqLw0KPiArc3RydWN0IHJ0ZV9wb3J0X2luX29wcyBydGVfcG9ydF9rbmlfcmVhZGVyX29wcyA9 IHsNCj4gKyAgICAgLmZfY3JlYXRlID0gcnRlX3BvcnRfa25pX3JlYWRlcl9jcmVhdGUsDQo+ICsg ICAgIC5mX2ZyZWUgPSBydGVfcG9ydF9rbmlfcmVhZGVyX2ZyZWUsDQo+ICsgICAgIC5mX3J4ID0g cnRlX3BvcnRfa25pX3JlYWRlcl9yeCwNCj4gKyAgICAgLmZfc3RhdHMgPSBydGVfcG9ydF9rbmlf cmVhZGVyX3N0YXRzX3JlYWQsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgcnRlX3BvcnRfb3V0X29w cyBydGVfcG9ydF9rbmlfd3JpdGVyX29wcyA9IHsNCj4gKyAgICAgLmZfY3JlYXRlID0gcnRlX3Bv cnRfa25pX3dyaXRlcl9jcmVhdGUsDQo+ICsgICAgIC5mX2ZyZWUgPSBydGVfcG9ydF9rbmlfd3Jp dGVyX2ZyZWUsDQo+ICsgICAgIC5mX3R4ID0gcnRlX3BvcnRfa25pX3dyaXRlcl90eCwNCj4gKyAg ICAgLmZfdHhfYnVsayA9IHJ0ZV9wb3J0X2tuaV93cml0ZXJfdHhfYnVsaywNCj4gKyAgICAgLmZf Zmx1c2ggPSBydGVfcG9ydF9rbmlfd3JpdGVyX2ZsdXNoLA0KPiArICAgICAuZl9zdGF0cyA9IHJ0 ZV9wb3J0X2tuaV93cml0ZXJfc3RhdHNfcmVhZCwNCj4gK307DQpEbyB3ZSBuZWVkIGEgS05JIHdy aXRlciBuby1kcm9wIHZlcnNpb24gYXMgd2VsbD8gV291bGQgaXQgYmUgdXNlZnVsPw0KDQo+IGRp ZmYgLS1naXQgYS9saWIvbGlicnRlX3BvcnQvcnRlX3BvcnRfa25pLmggYi9saWIvbGlicnRlX3Bv cnQvcnRlX3BvcnRfa25pLmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MC4uNzYyMzc5OA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2xpYi9saWJydGVfcG9ydC9ydGVf cG9ydF9rbmkuaA0KPiBAQCAtMCwwICsxLDgxIEBADQo+ICsvKi0NCj4gKyAqICAgQlNEIExJQ0VO U0UNCj4gKyAqDQo+ICsgKiAgIENvcHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoNClBsZWFzZSBmaXggdGhlIHllYXIgdG8gMjAxNi4N Cg0KPiArICogICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICoNCj4gKyAqICAgUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 DQo+ICsgKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucw0KPiArICogICBhcmUgbWV0Og0KPiArICoNCj4gKyAqICAgICAq IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0DQo+ICsgKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiArICogICAg ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluDQo+ICsgKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+ICsgKiAgICAgICBkaXN0cmlidXRpb24uDQo+ICsg KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFt ZXMgb2YgaXRzDQo+ICsgKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gKyAqICAgICAgIGZyb20gdGhpcyBzb2Z0 d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gKyAqDQo+ ICsgKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT IEFORA0KPiBDT05UUklCVVRPUlMNCj4gKyAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gKyAqICAgTElNSVRF RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJ VE5FU1MgRk9SDQo+ICsgKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+ICsgKiAgIE9XTkVSIE9SIENPTlRS SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFM LA0KPiArICogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo SU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+ICsgKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiArICogICBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE DQo+IEFORCBPTiBBTlkNCj4gKyAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiArICogICAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRI RSBVU0UNCj4gKyAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKyAqLw0KPiArDQo+ICsjaWZuZGVmIF9f SU5DTFVERV9SVEVfUE9SVF9LTklfSF9fDQo+ICsjZGVmaW5lIF9fSU5DTFVERV9SVEVfUE9SVF9L TklfSF9fDQo+ICsNCj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiArZXh0ZXJuICJDIiB7DQo+ICsj ZW5kaWYNCj4gKw0KPiArLyoqDQo+ICsgKiBAZmlsZQ0KPiArICogUlRFIFBvcnQgS05JIEludGVy ZmFjZQ0KPiArICoNCj4gKyAqIGtuaV9yZWFkZXI6IGlucHV0IHBvcnQgYnVpbHQgb24gdG9wIG9m IHByZS1pbml0aWFsaXplZCBLTkkgaW50ZXJmYWNlDQo+ICsgKiBrbmlfd3JpdGVyOiBvdXRwdXQg cG9ydCBidWlsdCBvbiB0b3Agb2YgcHJlLWluaXRpYWxpemVkIEtOSSBpbnRlcmZhY2UNCj4gKyAq DQo+ICsgKioqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+ICsNCj4gKyNpbmNsdWRl IDxydGVfa25pLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJydGVfcG9ydC5oIg0KPiArDQo+ICsvKiog a25pX3JlYWRlciBwb3J0IHBhcmFtZXRlcnMgKi8NCj4gK3N0cnVjdCBydGVfcG9ydF9rbmlfcmVh ZGVyX3BhcmFtcyB7DQo+ICsgICAgIC8qKiBLTkkgaW50ZXJmYWNlIHJlZmVyZW5jZSAqLw0KPiAr ICAgICBzdHJ1Y3QgcnRlX2tuaSAqa25pOw0KPiArfTsNCj4gKw0KPiArLyoqIGtuaV9yZWFkZXIg cG9ydCBvcGVyYXRpb25zICovDQo+ICtleHRlcm4gc3RydWN0IHJ0ZV9wb3J0X2luX29wcyBydGVf cG9ydF9rbmlfcmVhZGVyX29wczsNCj4gKw0KPiArDQo+ICsvKioga25pX3dyaXRlciBwb3J0IHBh cmFtZXRlcnMgKi8NCj4gK3N0cnVjdCBydGVfcG9ydF9rbmlfd3JpdGVyX3BhcmFtcyB7DQo+ICsg ICAgIC8qKiBLTkkgaW50ZXJmYWNlIHJlZmVyZW5jZSAqLw0KPiArICAgICBzdHJ1Y3QgcnRlX2tu aSAqa25pOw0KPiArICAgICAvKiogQnVyc3Qgc2l6ZSB0byBLTkkgaW50ZXJmYWNlLiAqLw0KPiAr ICAgICB1aW50MzJfdCB0eF9idXJzdF9zejsNCj4gK307DQo+ICsNCj4gKy8qKiBrbmlfd3JpdGVy IHBvcnQgb3BlcmF0aW9ucyAqLw0KPiArZXh0ZXJuIHN0cnVjdCBydGVfcG9ydF9vdXRfb3BzIHJ0 ZV9wb3J0X2tuaV93cml0ZXJfb3BzOw0KPiArDQo+ICsjaWZkZWYgX19jcGx1c3BsdXMNCj4gK30N Cj4gKyNlbmRpZg0KPiArDQo+ICsjZW5kaWYNCj4gLS0NCj4gMi43LjQNClRoYW5rIHlvdSENCg0K UmVnYXJkcywNCkNyaXN0aWFuDQoNCg0KQi5SLg0KDQpFdGhhbg0KDQo=