From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ola Liljedahl Subject: Re: [PATCH 1/1] eal: add 128-bit cmpset (x86-64 only) Date: Fri, 1 Feb 2019 23:11:57 +0000 Message-ID: <1549062730.20325.67.camel@arm.com> References: <20190128172945.27251-1-gage.eads@intel.com> <20190128172945.27251-2-gage.eads@intel.com> <1548716507.11472.96.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE1FE@FMSMSX108.amr.corp.intel.com> <1549047709.20325.35.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE2CE@FMSMSX108.amr.corp.intel.com> <1549050246.20325.45.camel@arm.com> <9184057F7FC11744A2107296B6B8EB1E541CE38D@FMSMSX108.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "jerinj@marvell.com" , "chaozhu@linux.vnet.ibm.com" , nd , "bruce.richardson@intel.com" , "konstantin.ananyev@intel.com" , "hemant.agrawal@nxp.com" , "olivier.matz@6wind.com" , "arybchenko@solarflare.com" , "Gavin Hu (Arm Technology China)" , Honnappa Nagarahalli To: "gage.eads@intel.com" , "dev@dpdk.org" Return-path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130052.outbound.protection.outlook.com [40.107.13.52]) by dpdk.org (Postfix) with ESMTP id A34C31B4F3 for ; Sat, 2 Feb 2019 00:11:59 +0100 (CET) In-Reply-To: <9184057F7FC11744A2107296B6B8EB1E541CE38D@FMSMSX108.amr.corp.intel.com> Content-Language: en-US Content-ID: <6255A68F714D7049BBA424A7734DC5A3@eurprd08.prod.outlook.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" T24gRnJpLCAyMDE5LTAyLTAxIGF0IDIxOjA1ICswMDAwLCBFYWRzLCBHYWdlIHdyb3RlOg0KPiAN Cj4gPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE9sYSBMaWxq ZWRhaGwgW21haWx0bzpPbGEuTGlsamVkYWhsQGFybS5jb21dDQo+ID4gU2VudDogRnJpZGF5LCBG ZWJydWFyeSAxLCAyMDE5IDE6NDQgUE0NCj4gPiBUbzogRWFkcywgR2FnZSA8Z2FnZS5lYWRzQGlu dGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+IENjOiBqZXJpbmpAbWFydmVsbC5jb207IGNoYW96 aHVAbGludXgudm5ldC5pYm0uY29tOyBuZCA8bmRAYXJtLmNvbT47DQo+ID4gUmljaGFyZHNvbiwg QnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgQW5hbnlldiwgS29uc3RhbnRpbg0K PiA+IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPjsgaGVtYW50LmFncmF3YWxAbnhwLmNv bTsNCj4gPiBvbGl2aWVyLm1hdHpANndpbmQuY29tOyBhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29t OyBHYXZpbiBIdSAoQXJtDQo+ID4gVGVjaG5vbG9neSBDaGluYSkgPEdhdmluLkh1QGFybS5jb20+ OyBIb25uYXBwYSBOYWdhcmFoYWxsaQ0KPiA+IDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0uY29t Pg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAxLzFdIGVhbDogYWRkIDEyOC1i aXQgY21wc2V0ICh4ODYtNjQgb25seSkNCj4gPiANCj4gPiBPbiBGcmksIDIwMTktMDItMDEgYXQg MTk6MjggKzAwMDAsIEVhZHMsIEdhZ2Ugd3JvdGU6DQo+ID4gPiANCj4gPiA+IA0KPiA+ID4gPiAN Cj4gPiA+ID4gDQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZy b206IE9sYSBMaWxqZWRhaGwgW21haWx0bzpPbGEuTGlsamVkYWhsQGFybS5jb21dDQo+ID4gPiA+ IFNlbnQ6IEZyaWRheSwgRmVicnVhcnkgMSwgMjAxOSAxOjAyIFBNDQo+ID4gPiA+IFRvOiBFYWRz LCBHYWdlIDxnYWdlLmVhZHNAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4gPiA+IENjOiBq ZXJpbmpAbWFydmVsbC5jb207IGNoYW96aHVAbGludXgudm5ldC5pYm0uY29tOyBuZCA8bmRAYXJt LmNvbT47DQo+ID4gPiA+IFJpY2hhcmRzb24sIEJydWNlIDxicnVjZS5yaWNoYXJkc29uQGludGVs LmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiA+ID4gPGtvbnN0YW50aW4uYW5hbnlldkBp bnRlbC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOw0KPiA+ID4gPiBvbGl2aWVyLm1hdHpA NndpbmQuY29tOyBhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tOyBHYXZpbiBIdSAoQXJtDQo+ID4g PiA+IFRlY2hub2xvZ3kgQ2hpbmEpIDxHYXZpbi5IdUBhcm0uY29tPjsgSG9ubmFwcGEgTmFnYXJh aGFsbGkNCj4gPiA+ID4gPEhvbm5hcHBhLk5hZ2FyYWhhbGxpQGFybS5jb20+DQo+ID4gPiA+IFN1 YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAxLzFdIGVhbDogYWRkIDEyOC1iaXQgY21wc2V0 ICh4ODYtNjQNCj4gPiA+ID4gb25seSkNCj4gPiA+ID4gDQo+ID4gPiA+IE9uIEZyaSwgMjAxOS0w Mi0wMSBhdCAxNzowNiArMDAwMCwgRWFkcywgR2FnZSB3cm90ZToNCj4gPiA+ID4gPiANCj4gPiA+ ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiBG cm9tOiBPbGEgTGlsamVkYWhsIFttYWlsdG86T2xhLkxpbGplZGFobEBhcm0uY29tXQ0KPiA+ID4g PiA+ID4gU2VudDogTW9uZGF5LCBKYW51YXJ5IDI4LCAyMDE5IDU6MDIgUE0NCj4gPiA+ID4gPiA+ IFRvOiBFYWRzLCBHYWdlIDxnYWdlLmVhZHNAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4g PiA+ID4gPiBDYzogYXJ5YmNoZW5rb0Bzb2xhcmZsYXJlLmNvbTsgamVyaW5qQG1hcnZlbGwuY29t Ow0KPiA+ID4gPiA+ID4gY2hhb3podUBsaW51eC52bmV0LmlibS5jb207IG5kIDxuZEBhcm0uY29t PjsgUmljaGFyZHNvbiwgQnJ1Y2UNCj4gPiA+ID4gPiA+IDxicnVjZS5yaWNoYXJkc29uQGludGVs LmNvbT47IEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gPiA+ID4gPiA+IDxrb25zdGFudGluLmFuYW55 ZXZAaW50ZWwuY29tPjsgaGVtYW50LmFncmF3YWxAbnhwLmNvbTsNCj4gPiA+ID4gPiA+IG9saXZp ZXIubWF0ekA2d2luZC5jb207IEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+ID4gPiA+ID4gPiA8SG9u bmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IEdhdmluIEh1IChBcm0gVGVjaG5vbG9neSBDaGlu YSkNCj4gPiA+ID4gPiA+IDxHYXZpbi5IdUBhcm0uY29tPg0KPiA+ID4gPiA+ID4gU3ViamVjdDog UmU6IFtkcGRrLWRldl0gW1BBVENIIDEvMV0gZWFsOiBhZGQgMTI4LWJpdCBjbXBzZXQNCj4gPiA+ ID4gPiA+ICh4ODYtNjQNCj4gPiA+ID4gPiA+IG9ubHkpDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+IE9uIE1vbiwgMjAxOS0wMS0yOCBhdCAxMToyOSAtMDYwMCwgR2FnZSBFYWRzIHdyb3RlOg0K PiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiBUaGlzIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCBmb3Igbm9uLWJsb2NraW5nIGFsZ29yaXRo bXMsIHN1Y2gNCj4gPiA+ID4gPiA+ID4gYXMgYSBub24tYmxvY2tpbmcgc3RhY2sgb3IgcmluZy4N Cj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEdhZ2UgRWFkcyA8 Z2FnZS5lYWRzQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+IMKg Li4uL2NvbW1vbi9pbmNsdWRlL2FyY2gveDg2L3J0ZV9hdG9taWNfNjQuaMKgwqDCoMKgwqDCoMKg wqB8IDMxDQo+ID4gPiA+ID4gPiA+ICsrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+IMKgbGliL2xp YnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvZ2VuZXJpYy9ydGVfYXRvbWljLmggfCA2NQ0KPiA+ID4g PiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gPiA+IMKgMiBmaWxlcyBj aGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBk aWZmIC0tZ2l0DQo+ID4gPiA+ID4gPiA+IGEvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUv YXJjaC94ODYvcnRlX2F0b21pY182NC5oDQo+ID4gPiA+ID4gPiA+IGIvbGliL2xpYnJ0ZV9lYWwv Y29tbW9uL2luY2x1ZGUvYXJjaC94ODYvcnRlX2F0b21pY182NC5oDQo+ID4gPiA+ID4gPiA+IGlu ZGV4IGZkMmVjOWM1My4uYjdiOTBiODNlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiAtLS0gYS9saWIv bGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9hcmNoL3g4Ni9ydGVfYXRvbWljXzY0LmgNCj4gPiA+ ID4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvYXJjaC94ODYvcnRl X2F0b21pY182NC5oDQo+ID4gPiA+ID4gPiA+IEBAIC0zNCw2ICszNCw3IEBADQo+ID4gPiA+ID4g PiA+IMKgLyoNCj4gPiA+ID4gPiA+ID4gwqAgKiBJbnNwaXJlZCBmcm9tIEZyZWVCU0Qgc3JjL3N5 cy9hbWQ2NC9pbmNsdWRlL2F0b21pYy5oDQo+ID4gPiA+ID4gPiA+IMKgICogQ29weXJpZ2h0IChj KSAxOTk4IERvdWcgUmFic29uDQo+ID4gPiA+ID4gPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTkg SW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ID4gPiA+ID4gwqAgKiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiA+ID4gPiA+ID4gPiDCoCAqLw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gQEAg LTQ2LDYgKzQ3LDcgQEANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IMKgI2luY2x1ZGUg PHN0ZGludC5oPg0KPiA+ID4gPiA+ID4gPiDCoCNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+ID4g PiA+ID4gPiA+ICsjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPg0KPiA+ID4gPiA+ID4gPiDCoCNpbmNs dWRlIDxydGVfYXRvbWljLmg+DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiDCoC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA2NCBiaXQgYXRvbWljIG9wZXJhdGlvbnMNCj4gPiA+ID4g PiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0qLyBAQCAtMjA4LDQgKzIxMCwzMyBAQCBz dGF0aWMNCj4gPiA+ID4gPiA+ID4gaW5saW5lIHZvaWQgcnRlX2F0b21pYzY0X2NsZWFyKHJ0ZV9h dG9taWM2NF90ICp2KQ0KPiA+ID4gPiA+ID4gPiDCoH0NCj4gPiA+ID4gPiA+ID4gwqAjZW5kaWYN Cj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgaW5saW5lIGludCBfX3J0ZV9l eHBlcmltZW50YWwNCj4gPiA+ID4gPiA+IF9fcnRlX2Fsd2F5c19pbmxpbmU/DQo+ID4gPiA+ID4g PiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+ID4gK3J0ZV9hdG9taWMxMjhfY21wc2V0KHZvbGF0aWxlIHJ0ZV9pbnQxMjhfdCAqZHN0 LA0KPiA+ID4gPiA+ID4gTm8gbmVlZCB0byBkZWNsYXJlIHRoZSBsb2NhdGlvbiB2b2xhdGlsZS4g Vm9sYXRpbGUgZG9lc24ndCBkbw0KPiA+ID4gPiA+ID4gd2hhdCB5b3UgdGhpbmsgaXQgZG9lcy4N Cj4gPiA+ID4gPiA+IGh0dHBzOi8veW91dHUuYmUvbGtnc3prUG5WOGc/dD0xMDI3DQo+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiBJIG1hZGUgdGhpcyB2b2xhdGlsZSB0byBtYXRjaCB0aGUgZXhpc3Rp bmcgcnRlX2F0b21pY05fY21wc2V0DQo+ID4gPiA+ID4gZGVmaW5pdGlvbnMsIHdoaWNoIHByZXN1 bWFibHkgaGF2ZSBhIGdvb2QgcmVhc29uIGZvciB1c2luZyB0aGUNCj4gPiA+ID4gPiBrZXl3b3Jk LiBNYWludGFpbmVycywgYW55IGlucHV0IGhlcmU/DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gKwkJwqDCoMKg wqDCoHJ0ZV9pbnQxMjhfdCAqZXhwLA0KPiA+ID4gPiA+ID4gSSB3b3VsZCBkZWNsYXJlICdleHAn IGNvbnN0IGFzIHdlbGwgYW5kIGRvY3VtZW50IHRoYXQgJ2V4cCcgaXMNCj4gPiA+ID4gPiA+IG5v dCB1cGRhdGVkICh3aXRoIHRoZSBvbGQgdmFsdWUpIGZvciBhIGZhaWx1cmUuIFRoZSByZWFzb24g YmVpbmcNCj4gPiA+ID4gPiA+IHRoYXQNCj4gPiA+ID4gPiA+IEFSTXY4LjAvQUFyY2g2NCBjYW5u b3QgYXRvbWljYWxseSByZWFkIHRoZSBvbGQgdmFsdWUgd2l0aG91dA0KPiA+ID4gPiA+ID4gYWxz byB3cml0aW5nIHRoZSBsb2NhdGlvbiBhbmQgdGhhdCBpcyBiYWQgZm9yIHBlcmZvcm1hbmNlDQo+ ID4gPiA+ID4gPiAodW5uZWNlc3Nhcnkgd3JpdGVzIGxlYWRzIHRvIHVubmVjZXNzYXJ5IGNvbnRl bnRpb24gYW5kIHdvcnNlDQo+ID4gPiA+ID4gPiBzY2FsYWJpbGl0eSkuIEFuZCB0aGUgdXNlciBt dXN0IGFueXdheSByZWFkIHRoZSBsb2NhdGlvbiAoaW4gdGhlDQo+ID4gPiA+ID4gPiBzdGFydCBv ZiB0aGUgY3JpdGljYWwNCj4gPiA+ID4gPiA+IHNlY3Rpb24pIHVzaW5nIGUuZy4gbm9uLWF0b21p YyA2NC1iaXQgcmVhZHMgc28gdGhlcmUgaXNuJ3QNCj4gPiA+ID4gPiA+IGFjdHVhbGx5IGFueSBy ZXF1aXJlbWVudCBmb3IgYW4gYXRvbWljIDEyOC1iaXQgcmVhZCBvZiB0aGUgbG9jYXRpb24uDQo+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiBXaWxsIGNoYW5nZSBpbiB2Mi4NCj4gPiA+ID4gPiANCj4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gwqBydGVfaW50MTI4 X3QgKnNyYywNCj4gPiA+ID4gPiA+IGNvbnN0IHJ0ZV9pbnQxMjhfdCAqc3JjPw0KPiA+ID4gPiA+ IFN1cmUsIEkgZG9uJ3Qgc2VlIGFueSBoYXJtIGluIHVzaW5nIGNvbnN0Lg0KPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiBCdXQgd2h5IGFyZSB3ZSBub3QgcGFzc2luZyAnZXhwJyBhbmQgJ3NyYycgYnkg dmFsdWU/IFRoYXQgd29ya3MNCj4gPiA+ID4gPiA+IGdyZWF0LCBldmVuIHdpdGggc3RydWN0cy4g UGFzc2luZyBieSB2YWx1ZSBzaW1wbGlmaWVzIHRoZQ0KPiA+ID4gPiA+ID4gY29tcGlsZXIncyBs aWZlLCBlc3BlY2lhbGx5IGlmIHRoZSBjYWxsIGlzIGlubGluZWQuIEFzayBhIGNvbXBpbGVyDQo+ ID4gPiA+ID4gPiBkZXZlbG9wZXIuDQo+ID4gPiA+ID4gSSByYW4gb2JqZHVtcCBvbiB0aGUgbmJf c3RhY2sgY29kZSB3aXRoIGJvdGggYXBwcm9hY2hlcywgYW5kDQo+ID4gPiA+ID4gcGFzcy1ieS1y ZWZlcmVuY2UgcmVzdWx0ZWQgaW4gZmV3ZXIgb3ZlcmFsbCB4ODZfNjQgYXNzZW1ibHkgb3BzLg0K PiA+ID4gPiA+IFBCVjogMTAwIG9wcyBmb3IgcHVzaCwgOTcgb3BzIGZvciBwb3ANCj4gPiA+ID4g PiBQQlI6IDkyIG9wcyBmb3IgcHVzaCwgODQgb3BzIGZvciBwb3ANCj4gPiA+ID4gT0sgSSBoYXZl IG5ldmVyIGNoZWNrZWQgeDg2XzY0IGNvZGUgZ2VuZXJhdGlvbi4uLiBJIGhhdmUgZ29vZA0KPiA+ ID4gPiBleHBlcmllbmNlcyB3aXRoIEFSTS9BQXJjaDY0LCBldmVyeXRoaW5nIHNlZW1zIHRvIGJl IGRvbmUgdXNpbmcNCj4gPiA+ID4gcmVnaXN0ZXJzLiBJIGFtIHN1cnByaXNlZCB0aGVyZSBpcyBh IGRpZmZlcmVuY2UuDQo+ID4gPiA+IA0KPiA+ID4gPiBEaWQgYSBxdWljayBjaGVjayB3aXRoIGxm cmluZywgcGFzc2luZyAnc3JjJyAodGhpcmQgcGFyYW0pIGJ5DQo+ID4gPiA+IHJlZmVyZW5jZSBh bmQgYnkgdmFsdWUuIE5vIGRpZmZlcmVuY2UgaW4gY29kZSBnZW5lcmF0aW9uIG9uIHg4Nl82NC4N Cj4gPiA+ID4gDQo+ID4gPiA+IEJ1dCBpZiB5b3UgaW5zaXN0IGxldCdzIGdvIHdpdGggUEJSLg0K PiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiAo VXNpbmcgdGhlIGluLXByb2dyZXNzIHY1IG5iX3N0YWNrIGNvZGUpDQo+ID4gPiA+ID4gDQo+ID4g PiA+ID4gQW5vdGhlciBmYWN0b3IgLS0gdGhvdWdoIG11Y2ggbGVzcyBjb21wZWxsaW5nIC0tIGlz IHRoYXQgd2l0aA0KPiA+ID4gPiA+IHBhc3MtYnktIHJlZmVyZW5jZSwgdGhlIHVzZXIgY2FuIGNy ZWF0ZSBhIDE2QiBzdHJ1Y3R1cmUgYW5kIGNhc3QNCj4gPiA+ID4gPiBpdCB0byBydGVfaW50MTI4 X3Qgd2hlbiB0aGV5IGNhbGwgcnRlX2F0b21pYzEyOF9jbXBzZXQsIHdoZXJlYXMNCj4gPiA+ID4g PiB3aXRoIHBhc3MtYnktdmFsdWUgdGhleSBuZWVkIHRvIHB1dCB0aGF0IHN0cnVjdCBpbiBhIHVu aW9uIHdpdGgNCj4gPiBydGVfaW50MTI4X3QuDQo+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+IFdo aWNoIGlzIHdoYXQgSSBhbHdheXMgZG8gbm93YWRheXMuLi4gVHJ5aW5nIHRvIHVzZSBhcyBmZXcg Y2FzdHMgYXMNCj4gPiA+ID4gcG9zc2libGUgYW5kIGxpZSB0byB0aGUgY29tcGlsZXIgYXMgc2Vs ZG9tIGFzIHBvc3NpYmxlLiBCdXQgSSBjYW4NCj4gPiA+ID4gc2VlIHRoZSBmcmVlZG9tIHByb3Zp ZGVkIGJ5IHRha2luZyBhIHBvaW50ZXIgdG8gc29tZXRoaW5nIGFuZCBjYXN0DQo+ID4gPiA+IGl0 IGl0IHJ0ZV9pbnQxMjhfdCBwdHIgaW4gdGhlIGNhbGwgdG/CoHJ0ZV9hdG9taWMxMjhfY21wc2V0 KCkuDQo+ID4gPiA+IA0KPiA+ID4gPiBXb3VsZCBwcmVmZXIgYSBuYW1lIHRoYXQgaXMgbW9yZSBz aW1pbGFyIHRvIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoKS4NCj4gPiA+ID4gRS5nLg0KPiA+ ID4gPiBydGVfYXRvbWljMTI4X2NvbXBhcmVfZXhjaGFuZ2UoKSAob3IgcGVyaGFwcyBqdXN0DQo+ ID4gcnRlX2F0b21pYzEyOF9jbXB4Y2hnKT8NCj4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4gQWxs IHRoZSBydGVfYXRvbWljWFhfY21wc2V0KCkgZnVuY3Rpb25zIGRvIG5vdCB0YWtlIGFueSBtZW1v cnkgb3JkZXINCj4gPiA+ID4gcGFyYW1ldGVycy4NCj4gPiA+ID4gRnJvbSBhbiBBcm0gcGVyc3Bl Y3RpdmUsIHdlIGFyZSBub3QgaGFwcHkgd2l0aCB0aGF0Lg0KPiA+ID4gU2luY2UgdGhlIGZ1bmN0 aW9uIHJldHVybnMgYSBib29sZWFuIHN1Y2Nlc3MgdmFsdWUsIGlzbid0DQo+ID4gPiBjb21wYXJl LWFuZC1zZXQgdGhlIGFwcHJvcHJpYXRlIHRlcm0/DQo+ID4gSSB3YXMgdGhpbmtpbmcgb2YgdGhl IG1lbW9yeSBvcmRlcmluZyBwYXJhbWV0ZXJzIHRoYXQgX19hdG9taWNfeHh4IGJ1aWx0aW5zDQo+ ID4gaGF2ZSBhbmQgd2Ugd2FudCAoZnJvbSBhbiBBcm0gcGVyc3BlY3RpdmUpLg0KPiA+IA0KPiA+ IEdDQyBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlIGFsc28gcmV0dXJucyBhIGJvb2xlYW4uDQo+ ID4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9fMDA1Zl8wMDVmYXRvbWljLUJ1 aWx0aW5zLmh0bWwNCj4gPiBib29sIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbiAodHlwZSAq cHRyLCB0eXBlICpleHBlY3RlZCwgdHlwZSBkZXNpcmVkLA0KPiA+IGJvb2wgd2VhaywgaW50IHN1 Y2Nlc3NfbWVtb3JkZXIsIGludCBmYWlsdXJlX21lbW9yZGVyKSBib29sDQo+ID4gX19hdG9taWNf Y29tcGFyZV9leGNoYW5nZSAodHlwZSAqcHRyLCB0eXBlICpleHBlY3RlZCwgdHlwZSAqZGVzaXJl ZCwgYm9vbA0KPiA+IHdlYWssIGludCBzdWNjZXNzX21lbW9yZGVyLCBpbnQgZmFpbHVyZV9tZW1v cmRlcikNCj4gPiANCj4gPiBydGVfYXRvbWljMTI4X2NvbXBhcmVfZXhjaGFuZ2UocnRlX2ludDEy OF90ICpkc3QsIGNvbnN0IHJ0ZV9pbnQxMjhfdCAqZXhwLA0KPiA+IGNvbnN0IHJ0ZV9pbnQxODJf dCAqc3JjLCBib29sIHdlYWssIGludCBtb19zdWNjZXNzLCBpbnQgbW9fZmFpbHVyZSk7DQo+ID4g DQo+IEkgYXNzdW1lZCBHQ0MgY2hvc2UgdGhlIG5hbWUgImV4Y2hhbmdlIiBiZWNhdXNlIHRoZSBi dWlsdGluIG1vZGlmaWVzICdleHAnIG9uDQo+IGZhaWx1cmUsIGJ1dCBJIGNvdWxkIGJlIHdyb25n Lg0KWW91IGFyZSBwcm9iYWJseSByaWdodC4gQnV0IGV4Y2hhbmdlIGRvZXNuJ3QgbmVjZXNzYXJ5 IG1lYW4gdGhhdCB0aGUgb2xkIHZhbHVlDQppcyByZXR1cm5lZCwganVzdCB0aGF0IGl0IGlzIHJl cGxhY2VkIHdpdGggYSBkaWZmZXJlbnQgdmFsdWU/DQpIb3dldmVyIF9fYXRvbWljX2V4Y2hhbmdl KCkgKHVuY29uZGl0aW9uYWxseSkgcmV0dXJucyB0aGUgb2xkIHZhbHVlIHNvIHRoZXJlIGlzDQpz b21lIHByZWNlZGVudCBmb3IgcmV0dW5ybmluZyB0aGUgb2xkIHZhbHVlLiBBbmQgaXQgY2FuIGJl IGRvbmUsIGp1c3Qgbm90DQpndWFyYW50ZWVkIHRvIGJlIGF0b21pYy4gUGVyaGFwcyB0aGVyZSBp cyBhIHdheSB0byBib3RoIGVhdCBhbmQgaGF2ZSB0aGUgY2FrZT8NCg0KUmUtdXNlIHRoZSBwcm90 b3R5cGUgb2YgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV8xNigpIHNvIG11c3QgcmV0dXJuIGEg dmFsdWUgaWYNCnRoZSBjb21wYXJpc29uIGZhaWxzLiBCdXQgZGVwZW5kaW5nIG9uIHRoZSAnd2Vh aycgZmxhZywgd2UgZm9yIHdlYWs9ZmFsc2UNCnJlcXVpcmUgYW4gYXRvbWljIHJlYWQgd2hpY2gg b24gQVJNdjguMCBtdXN0IGJlIGFjY29tcGxpc2hlZCBieSB3cml0aW5nIGJhY2sgdGhlDQpvbGQg dmFsdWUgKGlmIHRoZSBjb21wYXJpc29uIGZhaWxzKS4gT3IgZm9yIHdlYWs9dHJ1ZSB3ZSBhbGxv dyBib3RoIHNwdXJpb3VzDQpMTC9TQyBmYWlsdXJlcyAodGhpcyBpcyB3aGF0IHRoZSB3ZWFrIHBh cmFtZXRlciBpcyBmb3IpIGFuZCBub24tYXRvbWljIHJlYWQgb2YNCnRoZSBvbGQgdmFsdWUgKHRo aXMgaXMgbXkgJ2ZyYWlsJyBhdG9taWMgY29tcGFyZSBhbmQgZXhjaGFuZ2UgaW4gbGZyaW5nKS4N Cg0KVGhlIEdDQyBkb2N1bWVudGF0aW9uIHNheXMgdGhpczoNCiJJZiB0aGV5IGFyZSBub3QgZXF1 YWwsIHRoZSBvcGVyYXRpb24gaXMgYSByZWFkIGFuZCB0aGUgY3VycmVudCBjb250ZW50cyBvZiBw dHINCmFyZSB3cml0dGVuIGludG8gZXhwZWN0ZWQuIg0KV2UgZm9sbG93IHRoaXMgYnV0IGp1c3Qg ZG9uJ3QgZ3VhcmFudGVlIGFuIGF0b21pYyByZWFkIChmb3Igd2Vhaz10cnVlKS4NCg0KYm9vbA0K cnRlX2F0b21pYzEyOF9jb21wYXJlX2V4Y2hhbmdlKHJ0ZV9pbnQxMjhfdCAqZHN0LA0KwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBydGVfaW50MTI4X3QgKmV4 cCwgLy9Ob3RlIG5vIGNvbnN0IG5vdw0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBjb25zdCBydGVfaW50MTI4X3QgKnNyYywNCsKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYm9vbCB3ZWFrLA0KwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnQgbW9fc3VjY2VzcywNCsKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW50IG1vX2ZhaWx1cmUpOw0K DQoNCj4gIEknbSBmaW5lIHdpdGggZWl0aGVyIG5hbWUuIEFueW9uZSBlbHNlIGhhdmUgYSBwcmVm ZXJlbmNlPw0KDQo+IA0KPiA8c25pcD4NCi0tIA0KT2xhIExpbGplZGFobCwgTmV0d29ya2luZyBT eXN0ZW0gQXJjaGl0ZWN0LCBBcm0NClBob25lICs0NjcwNjg2NjM3MywgU2t5cGUgb2xhLmxpbGpl ZGFobA0KDQo=