From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 140216CB9 for ; Mon, 16 May 2016 21:56:32 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP; 16 May 2016 12:56:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,627,1459839600"; d="scan'208";a="703996244" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by FMSMGA003.fm.intel.com with ESMTP; 16 May 2016 12:56:31 -0700 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 16 May 2016 12:56:31 -0700 Received: from fmsmsx105.amr.corp.intel.com ([169.254.4.115]) by fmsmsx115.amr.corp.intel.com ([10.18.116.19]) with mapi id 14.03.0248.002; Mon, 16 May 2016 12:56:31 -0700 From: "Walker, Benjamin" To: "Wiles, Keith" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] Add rte_mempool_free Thread-Index: AQHRr5H3qlMu5Hzxzk+C8ZUt97MZpp+8PjWAgAAyEwA= Date: Mon, 16 May 2016 19:56:30 +0000 Message-ID: <1463428590.2522.160.camel@intel.com> References: <1463416935-82998-1-git-send-email-benjamin.walker@intel.com> <815F2AB2-EBA1-4097-91B6-14DDD18497BE@intel.com> In-Reply-To: <815F2AB2-EBA1-4097-91B6-14DDD18497BE@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [143.182.136.117] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] Add rte_mempool_free 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, 16 May 2016 19:56:33 -0000 T24gTW9uLCAyMDE2LTA1LTE2IGF0IDE2OjU3ICswMDAwLCBXaWxlcywgS2VpdGggd3JvdGU6DQo+ ID4gDQo+ID4gVGhlcmUgaXMgbm8gaW52ZXJzZSBvZiBydGVfbWVtcG9vbF9jcmVhdGUsIHNvIHRo aXMgcGF0Y2ggYWRkcyBvbmUuDQo+ID4gVGhlIHR5cGljYWwgdXNhZ2Ugb2YgcnRlX21lbXBvb2xf Y3JlYXRlIGlzIHRvIGNyZWF0ZSBhIHBvb2wgYXQNCj4gPiBpbml0aWFsaXphdGlvbiB0aW1lIGFu ZCBvbmx5IHRvIGZyZWUgaXQgdXBvbiBwcm9ncmFtIGV4aXQsIHNvIGFuDQo+ID4gcnRlX21lbXBv b2xfZnJlZSBmdW5jdGlvbiBhdCBmaXJzdCBzZWVtcyB0byBiZSBvZiBsaXR0bGUgdmFsdWUuDQo+ ID4gSG93ZXZlciwgaXQgaXMgdmVyeSB1c2VmdWwgYXMgYSBzYW5pdHkgY2hlY2sgZm9yIGEgY2xl YW4gc2h1dGRvd24NCj4gPiB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0b29scyBsaWtl IEFkZHJlc3NTYW5pdGl6ZXIuIEZ1cnRoZXIsDQo+ID4gdGhlIGNhbGwgaXRzZWxmIHZlcmlmaWVz IHRoYXQgYWxsIGVsZW1lbnRzIGhhdmUgYmVlbiByZXR1cm5lZCB0bw0KPiA+IHRoZSBwb29sIG9y IGl0IGZhaWxzLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IEJlbiBXYWxrZXIgPGJlbmphbWlu LndhbGtlckBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gbGliL2xpYnJ0ZV9tZW1wb29sL3J0ZV9k b20wX21lbXBvb2wuYyB8IDIyICsrKysrKysrKysrDQo+ID4gbGliL2xpYnJ0ZV9tZW1wb29sL3J0 ZV9tZW1wb29sLmPCoMKgwqDCoMKgwqB8IDcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrDQo+ID4gbGliL2xpYnJ0ZV9tZW1wb29sL3J0ZV9tZW1wb29sLmjCoMKgwqDCoMKgwqB8 IDQxICsrKysrKysrKysrKysrKysrKysrDQo+ID4gMyBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0 aW9ucygrKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX21lbXBvb2wvcnRlX2Rv bTBfbWVtcG9vbC5jIGIvbGliL2xpYnJ0ZV9tZW1wb29sL3J0ZV9kb20wX21lbXBvb2wuYw0KPiA+ IGluZGV4IDBkNmQ3NTAuLmVkZjJkNTggMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9tZW1w b29sL3J0ZV9kb20wX21lbXBvb2wuYw0KPiA+ICsrKyBiL2xpYi9saWJydGVfbWVtcG9vbC9ydGVf ZG9tMF9tZW1wb29sLmMNCj4gPiBAQCAtMTMxLDMgKzEzMSwyNSBAQCBydGVfZG9tMF9tZW1wb29s X2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBlbHRfbnVtLCB1bnNpZ25lZA0KPiA+ IGVsdF9zaXplLA0KPiA+IA0KPiA+IAlyZXR1cm4gbXA7DQo+ID4gfQ0KPiA+ICsNCj4gPiArLyog ZnJlZSB0aGUgbWVtcG9vbCBzdXBwb3J0aW5nIERvbTAgKi8NCj4gPiAraW50DQo+ID4gK3J0ZV9k b20wX21lbXBvb2xfZnJlZShzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wKQ0KPiA+ICt7DQo+ID4gKwlj b25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUgKm16Ow0KPiA+ICsJY2hhciBtel9uYW1lW1JURV9NRU1a T05FX05BTUVTSVpFXTsNCj4gPiArCWludCByYzsNCj4gPiArDQo+ID4gKwlyYyA9IHJ0ZV9tZW1w b29sX3htZW1fZnJlZShtcCk7DQo+ID4gKwlpZiAocmMpIHsNCj4gPiArCQlyZXR1cm4gcmM7DQo+ ID4gKwl9DQo+IFJlbW92ZSB7fSBvbiBzaW5nbGUgbGluZSBzdGF0ZW1lbnRzLg0KDQpJJ2xsIHJl bW92ZSBicmFjZXMgZnJvbSBhbGwgb2YgdGhlIHNpbmdsZSBsaW5lIGNvbmRpdGlvbmFscyBhbmQg cmVzZW5kLg0KDQo+ID4gDQo+ID4gKw0KPiA+ICsJc25wcmludGYobXpfbmFtZSwgc2l6ZW9mKG16 X25hbWUpLCBSVEVfTUVNUE9PTF9PQkpfTkFNRSwgbXAtPm5hbWUpOw0KPiA+ICsJbXogPSBydGVf bWVtem9uZV9sb29rdXAobXpfbmFtZSk7DQo+ID4gKwlpZiAobXopIHsNCj4gPiArCQlydGVfbWVt em9uZV9mcmVlKG16KTsNCj4gPiArCX0NCj4gSGVyZSB0b28uDQo+ID4gDQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9tZW1wb29sL3J0 ZV9tZW1wb29sLmMgYi9saWIvbGlicnRlX21lbXBvb2wvcnRlX21lbXBvb2wuYw0KPiA+IGluZGV4 IDcwODEyZDkuLjgyZjY0NWUgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9tZW1wb29sL3J0 ZV9tZW1wb29sLmMNCj4gPiArKysgYi9saWIvbGlicnRlX21lbXBvb2wvcnRlX21lbXBvb2wuYw0K PiA+IEBAIC02MzgsNiArNjM4LDc2IEBAIGV4aXRfdW5sb2NrOg0KPiA+IAlyZXR1cm4gTlVMTDsN Cj4gPiB9DQo+ID4gDQo+ID4gKyNpZm5kZWYgUlRFX0xJQlJURV9YRU5fRE9NMA0KPiA+ICsvKiBz dHViIGlmIERPTTAgc3VwcG9ydCBub3QgY29uZmlndXJlZCAqLw0KPiA+ICtpbnQNCj4gPiArcnRl X2RvbTBfbWVtcG9vbF9mcmVlKHN0cnVjdCBydGVfbWVtcG9vbCAqbXAgX19ydGVfdW51c2VkKQ0K PiA+ICt7DQo+ID4gKwlydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4gKwlyZXR1cm4gLTE7DQo+IEkg d2FzIHRoaW5raW5nIHRoaXMgc2hvdWxkIGp1c3QgcmV0dXJuIE9LIG9yIHplcm8uIFRoZSBjaGFu Y2VzIG9mIGJlaW5nIGNhbGxlZCBpcyB2ZXJ5IGxvdyBhbmQNCj4gbWF5YmUgd2lsbCBub3QgYmUg Y2FsbGVkLCByaWdodD8gSWYgc28gdGhlbiBkbyB3ZSBuZWVkIHRoZSBmdW5jdGlvbj8NCg0KVGhl IHVzZXIgZG9lcyBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYmVjYXVzZSBpdCBpcyBkZWNsYXJl ZCBpbiB0aGUgaGVhZGVyLCBzbyB0aGV5IGNvdWxkDQptaXN0YWtlbmx5IGNhbGwgaXQuIEluIHRo YXQgY2FzZSwgdGhleSdkIGhhdmUgdG8gcGFzcyBpbiBhIG1lbXBvb2wgcG9pbnRlciwgc28gSSB0 aGluayB0aGUgY29ycmVjdA0KdGhpbmcgdG8gZG8gaXMgZmFpbCB0aGUgY2FsbCB3aXRoIEVJTlZB TCBsaWtlIEkgaGF2ZSBpdCBiZWNhdXNlIGlmIFhFTl9ET00wIGlzIG5vdCBzdXBwb3J0ZWQgdGhl bg0KdGhlIG1lbXBvb2wgdGhleSBwYXNzIHRvIHRoaXMgZnVuY3Rpb24gaXMgY2VydGFpbmx5IG5v dCBjcmVhdGVkIHdpdGggcnRlX2RvbTBfbWVtcG9vbF9jcmVhdGUgYW5kIGlzDQp0aGVyZWZvcmUg YW4gaW52YWxpZCBwYXJhbWV0ZXIuDQoNCj4gPiANCj4gPiArfQ0KPiA+ICsjZW5kaWYNCj4gPiAr DQo+ID4gK2ludA0KPiA+ICtydGVfbWVtcG9vbF9mcmVlKHN0cnVjdCBydGVfbWVtcG9vbCAqbXAp DQo+ID4gK3sNCj4gPiArCWlmIChydGVfeGVuX2RvbTBfc3VwcG9ydGVkKCkpDQo+ID4gKwkJcmV0 dXJuIHJ0ZV9kb20wX21lbXBvb2xfZnJlZShtcCk7DQo+ID4gKwllbHNlDQo+ID4gKwkJcmV0dXJu IHJ0ZV9tZW1wb29sX3htZW1fZnJlZShtcCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsv KiBGcmVlIHRoZSBtZW1vcnkgcG9vbCAqLw0KPiA+ICtpbnQNCj4gPiArcnRlX21lbXBvb2xfeG1l bV9mcmVlKHN0cnVjdCBydGVfbWVtcG9vbCAqbXApDQo+ID4gK3sNCj4gPiArCWNoYXIgbXpfbmFt ZVtSVEVfTUVNWk9ORV9OQU1FU0laRV07DQo+ID4gKwlzdHJ1Y3QgcnRlX21lbXBvb2xfbGlzdCAq bWVtcG9vbF9saXN0Ow0KPiA+ICsJc3RydWN0IHJ0ZV90YWlscV9lbnRyeSAqdGUgPSBOVUxMOw0K PiA+ICsJY29uc3Qgc3RydWN0IHJ0ZV9tZW16b25lICptejsNCj4gPiArCXVuc2lnbmVkIGNvdW50 Ow0KPiA+ICsNCj4gPiArCWlmICghbXApIHsNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArCX0NCj4g UmVtb3ZlIHRoZSBleHRyYSB7fQ0KPiA+IA0KPiA+ICsNCj4gPiArCWNvdW50ID0gcnRlX21lbXBv b2xfZnJlZV9jb3VudChtcCk7DQo+ID4gKwlpZiAoY291bnQgIT0gMCkgew0KPiA+ICsJCS8qIEFs bCBlbGVtZW50cyBtdXN0IGJlIHJldHVybmVkIHRvIHRoZSBwb29sIGJlZm9yZSBmcmVlICovDQo+ ID4gKwkJcmV0dXJuIGNvdW50Ow0KPiA+ICsJfQ0KPiBUaGlzIG9uZSBhbHNvIGRvZXMgbm90IHJl YWxseSBuZWVkIHRoZSB7fQ0KPiA+IA0KPiA+ICsNCj4gPiArCXJ0ZV9yd2xvY2tfd3JpdGVfbG9j ayhSVEVfRUFMX01FTVBPT0xfUldMT0NLKTsNCj4gPiArDQo+ID4gKwkvKiBGcmVlIHRoZSByaW5n IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1lbXBvb2wgKi8NCj4gPiArCWlmIChtcC0+cmluZykgew0K PiA+ICsJCXJ0ZV9yaW5nX2ZyZWUobXAtPnJpbmcpOw0KPiA+ICsJfQ0KPiBUaGlzIG9uZSB0b28u DQo+ID4gDQo+ID4gKw0KPiA+ICsJLyogUmVtb3ZlIHRoZSBlbnRyeSBmcm9tIHRoZSBtZW1wb29s IGxpc3QgYW5kIGZyZWUgaXQuICovDQo+ID4gKwlydGVfcndsb2NrX3dyaXRlX2xvY2soUlRFX0VB TF9UQUlMUV9SV0xPQ0spOw0KPiA+ICsJbWVtcG9vbF9saXN0ID0gUlRFX1RBSUxRX0NBU1QocnRl X21lbXBvb2xfdGFpbHEuaGVhZCwgcnRlX21lbXBvb2xfbGlzdCk7DQo+ID4gKwlUQUlMUV9GT1JF QUNIKHRlLCBtZW1wb29sX2xpc3QsIG5leHQpIHsNCj4gPiArCQlpZiAoKHN0cnVjdCBydGVfbWVt cG9vbCAqKXRlLT5kYXRhID09IG1wKSB7DQo+ID4gKwkJCVRBSUxRX1JFTU9WRShtZW1wb29sX2xp c3QsIHRlLCBuZXh0KTsNCj4gPiArCQkJcnRlX2ZyZWUodGUpOw0KPiA+ICsJCQlicmVhazsNCj4g PiArCQl9DQo+ID4gKwl9DQo+ID4gKwlydGVfcndsb2NrX3dyaXRlX3VubG9jayhSVEVfRUFMX1RB SUxRX1JXTE9DSyk7DQo+ID4gKw0KPiA+ICsJc25wcmludGYobXpfbmFtZSwgc2l6ZW9mKG16X25h bWUpLCBSVEVfTUVNUE9PTF9NWl9GT1JNQVQsIG1wLT5uYW1lKTsNCj4gPiArCW16ID0gcnRlX21l bXpvbmVfbG9va3VwKG16X25hbWUpOw0KPiA+ICsJaWYgKG16KSB7DQo+ID4gKwkJcnRlX21lbXpv bmVfZnJlZShteik7DQo+ID4gKwl9DQo+IFRoaXMgb25lIHRvby4NCj4gPiANCj4gPiArDQo+ID4g KwlydGVfcndsb2NrX3dyaXRlX3VubG9jayhSVEVfRUFMX01FTVBPT0xfUldMT0NLKTsNCj4gPiAr DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiBUaGUgYmlnIHF1ZXN0aW9uIGlzIGhvdyBkbyB5 b3Uga25vdyB0aGUgbWVtcG9vbCBpcyBub3QgYmVpbmcgdXNlZCBzb21lcGxhY2U/DQoNClRoYXQn cyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5LiBVc2UgYWZ0ZXIgZnJlZSBpcyBjZXJ0YWlubHkg cG9zc2libGUgaWYgdGhlIHVzZXIgZG9lc24ndCB0YWtlDQpjYXJlLCBqdXN0IGxpa2UgYW55IGFs bG9jL2ZyZWUgaW4gQy4gVGhpcyBpcyB0aGUgc2FtZSBzaXR1YXRpb24gYXMgcnRlX3JpbmdfZnJl ZSBvcg0KcnRlX21lbXpvbmVfZnJlZS4gVG8gaGVscCBwcmV2ZW50IHVzZXJzIGZyb20gc2hvb3Rp bmcgdGhlbXNlbHZlcyBpbiB0aGUgZm9vdCBJIGRpZCBhZGQgYSBjaGVjayB0aGF0DQphbGwgb2Yg dGhlIGVsZW1lbnRzIGhhdmUgYmVlbiBmcmVlZCBiYWNrIHRvIHRoZSBwb29sIGF0IHRoZSB0b3Ag b2YgdGhlIGZ1bmN0aW9uLiBUaGVyZSBhcmUgY2VydGFpbmx5DQpwb3RlbnRpYWwgcmFjZSBjb25k aXRpb25zIGlmIHRoZSB1c2VyIGlzIGZyZWVpbmcgdGhpcyBvbiBvbmUgdGhyZWFkIGFuZCB1c2lu ZyBpdCBmcm9tIGFub3RoZXIgdGhhdCBJDQpoYXZlbid0IGhhbmRsZWQuIEknbSBub3Qgc3VyZSB0 aGVzZSBjYXNlcyBuZWVkIHRvIGJlIGhhbmRsZWQgdGhvdWdoIC0gdGhleSdyZSBub3QgaGFuZGxl ZCBieQ0KcnRlX3JpbmdfZnJlZSwgZm9yIGV4YW1wbGUuDQoNCj4gDQo+ID4gDQo+ID4gKw0KPiA+ IC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1lbXBvb2wgKi8NCj4gPiB1 bnNpZ25lZA0KPiA+IHJ0ZV9tZW1wb29sX2NvdW50KGNvbnN0IHN0cnVjdCBydGVfbWVtcG9vbCAq bXApDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfbWVtcG9vbC9ydGVfbWVtcG9vbC5oIGIv bGliL2xpYnJ0ZV9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gPiBpbmRleCA5NzQ1YmYwLi4yNjk0 OWM3IDEwMDY0NA0KPiA+IC0tLSBhL2xpYi9saWJydGVfbWVtcG9vbC9ydGVfbWVtcG9vbC5oDQo+ ID4gKysrIGIvbGliL2xpYnJ0ZV9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gPiBAQCAtNzI4LDYg KzcyOCw0NyBAQCBydGVfZG9tMF9tZW1wb29sX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCB1bnNp Z25lZCBuLCB1bnNpZ25lZCBlbHRfc2l6ZSwNCj4gPiAJCXJ0ZV9tZW1wb29sX29ial9jdG9yX3Qg Km9ial9pbml0LCB2b2lkICpvYmpfaW5pdF9hcmcsDQo+ID4gCQlpbnQgc29ja2V0X2lkLCB1bnNp Z25lZCBmbGFncyk7DQo+ID4gDQo+ID4gKy8qKg0KPiA+ICsgKiBGcmVlIHRoZSBtZW1vcnkgcG9v bCBjcmVhdGVkIGJ5IHJ0ZV9tZW1wb29sX2NyZWF0ZQ0KPiA+ICsgKg0KPiA+ICsgKiBBbGwgZWxl bWVudHMgbXVzdCBiZSBwbGFjZWQgYmFjayBpbiB0aGUgcG9vbCBwcmlvciB0byBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBtcA0KPiA+ICsgKsKgwqDCoEEg cG9pbnRlciB0byB0aGUgbWVtcG9vbCBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiAr ICrCoMKgwqAwIG9uIHN1Y2Nlc3MuIC0xIG9uIGVycm9ywqDCoHdpdGggcnRlX2Vycm5vIHNldCBh cHByb3ByaWF0ZWx5Lg0KPiA+ICsgKsKgwqDCoMKgwqBQb3NzaWJsZSBydGVfZXJybm8gdmFsdWVz IGluY2x1ZGU6DQo+ID4gKyAqwqDCoMKgwqAtIEVJTlZBTCAtIEludmFsaWQgaW5wdXQgdmFsdWUu DQo+ID4gKyAqLw0KPiA+ICtpbnQgcnRlX21lbXBvb2xfZnJlZShzdHJ1Y3QgcnRlX21lbXBvb2wg Km1wKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBGcmVlIHRoZSBtZW1vcnkgcG9vbCBjcmVh dGVkIGJ5IHJ0ZV9tZW1wb29sX3htZW1fY3JlYXRlLg0KPiA+ICsgKg0KPiA+ICsgKiBBbGwgZWxl bWVudHMgbXVzdCBiZSBwbGFjZWQgYmFjayBpbiB0aGUgcG9vbCBwcmlvciB0byBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBtcA0KPiA+ICsgKsKgwqDCoEEg cG9pbnRlciB0byB0aGUgbWVtcG9vbCBzdHJ1Y3R1cmUuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiAr ICrCoMKgwqAwIG9uIHN1Y2Nlc3MuIC0xIG9uIGVycm9ywqDCoHdpdGggcnRlX2Vycm5vIHNldCBh cHByb3ByaWF0ZWx5Lg0KPiA+ICsgKsKgwqDCoMKgwqBQb3NzaWJsZSBydGVfZXJybm8gdmFsdWVz IGluY2x1ZGU6DQo+ID4gKyAqwqDCoMKgwqAtIEVJTlZBTCAtIEludmFsaWQgaW5wdXQgdmFsdWUu DQo+ID4gKyAqLw0KPiA+ICtpbnQgcnRlX21lbXBvb2xfeG1lbV9mcmVlKHN0cnVjdCBydGVfbWVt cG9vbCAqbXApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEZyZWUgdGhlIG1lbW9yeSBwb29s IGNyZWF0ZWQgYnkgcnRlX2RvbTBfbWVtcG9vbF9jcmVhdGUuDQo+ID4gKyAqDQo+ID4gKyAqIEFs bCBlbGVtZW50cyBtdXN0IGJlIHBsYWNlZCBiYWNrIGluIHRoZSBwb29sIHByaW9yIHRvIGNhbGxp bmcgdGhpcyBmdW5jdGlvbi4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIG1wDQo+ID4gKyAqwqDC oMKgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIHN0cnVjdHVyZS4NCj4gPiArICogQHJldHVybg0K PiA+ICsgKsKgwqDCoDAgb24gc3VjY2Vzcy4gLTEgb24gZXJyb3LCoMKgd2l0aCBydGVfZXJybm8g c2V0IGFwcHJvcHJpYXRlbHkuDQo+ID4gKyAqwqDCoMKgwqDCoFBvc3NpYmxlIHJ0ZV9lcnJubyB2 YWx1ZXMgaW5jbHVkZToNCj4gPiArICrCoMKgwqDCoC0gRUlOVkFMIC0gSW52YWxpZCBpbnB1dCB2 YWx1ZS4NCj4gPiArICovDQo+ID4gK2ludCBydGVfZG9tMF9tZW1wb29sX2ZyZWUoc3RydWN0IHJ0 ZV9tZW1wb29sICptcCk7DQo+ID4gDQo+ID4gLyoqDQo+ID4gwqAqIER1bXAgdGhlIHN0YXR1cyBv ZiB0aGUgbWVtcG9vbCB0byB0aGUgY29uc29sZS4NCj4gPiAtLcKgDQo+ID4gMi41LjUNCj4gPiAN Cj4gPiANCj4gDQo+IFJlZ2FyZHMsDQo+IEtlaXRoDQo+IA0KPiANCj4gDQo+IA==