From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 698D43237 for ; Mon, 30 Jan 2017 21:55:24 +0100 (CET) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga102.fm.intel.com with ESMTP; 30 Jan 2017 12:55:23 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,312,1477983600"; d="scan'208";a="59936029" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga006.fm.intel.com with ESMTP; 30 Jan 2017 12:55:23 -0800 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 30 Jan 2017 12:55:23 -0800 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.230]) by fmsmsx156.amr.corp.intel.com ([169.254.13.248]) with mapi id 14.03.0248.002; Mon, 30 Jan 2017 12:55:23 -0800 From: "Wiles, Keith" To: Peter Keereweer CC: "users@dpdk.org" Thread-Topic: [dpdk-users] What to do after rte_eth_tx_burst: free or send again remaining packets? Thread-Index: AQHSeZ89QhXZzOqpSEWE4fljFDCT1aFOTeesgAC074CAAiJJtIAA5BOA Date: Mon, 30 Jan 2017 20:55:22 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.252.137.159] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-users] What to do after rte_eth_tx_burst: free or send again remaining packets? X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 20:55:25 -0000 DQo+IE9uIEphbiAzMCwgMjAxNywgYXQgMTA6MDIgQU0sIFBldGVyIEtlZXJld2VlciA8cGV0ZXJr ZWVyZXdlZXJAaG90bWFpbC5jb20+IHdyb3RlOg0KPiANCj4gSGkgS2VpdGgsDQo+IA0KPiBUaGFu a3MgYSBsb3QgZm9yIHlvdXIgcmVzcG9uc2UhIEJhc2VkIG9uIHlvdXIgaW5mb3JtYXRpb24gSSBo YXZlIHRlc3RlZCBkaWZmZXJlbnQgYnVyc3Qgc2l6ZXMgaW4gdGhlIExvYWQgQmFsYW5jZXIgYXBw bGljYXRpb24gKGFuIGxldCB0aGUgVFggcmluZyBzaXplIHVuY2hhbmdlZCkuIE9uZSBjYW4gY29u ZmlndXJlIHRoZSByZWFkIC8gd3JpdGUgYnVyc3Qgc2l6ZXMgb2YgdGhlIE5JQyBhbmQgdGhlIHNv ZnR3YXJlIHF1ZXVlcyBhcyBhIGNvbW1hbmQgbGluZSBvcHRpb24uIFRoZSBkZWZhdWx0IHZhbHVl IG9mIGFsbCBidXJzdCBzaXplIGlzIGVxdWFsIHRvIDE0NC4gSWYgSSBjb25maWd1cmUgYWxsIHJl YWQvd3JpdGUgYnVyc3Qgc2l6ZXMgYXMgMzIsIGV2ZXJ5IHBhY2tldCB3aWxsIGJlIHRyYW5zbWl0 dGVkIGJ5IHRoZSBUWCBjb3JlIGFuZCBubyBwYWNrZXRzIGFyZSBkcm9wcGVkLiBCdXQgaXMgdGhp cyBhIHZhbGlkIHNvbHV0aW9uPyBJdCBzZWVtcyB0byB3b3JrLCBidXQgaXQgZmVlbHMgYSBsaXR0 bGUgYml0IHN0cmFuZ2UgdG8gZGVjcmVhc2UgdGhlIGJ1cnN0IHNpemUgZnJvbSAxNDQgdG8gMzIu DQoNCkkgYW0gZ29pbmcgdG8gZ3Vlc3MgdGhlIHJlYXNvbiBpcyAzMiBpcyBhIGJldHRlciBmaXQg dG8gdGhlIHJpbmcgc2l6ZSBhbmQgaG93IHRoZSBoYXJkd2FyZSBoYW5kbGVzIHRoZSBkZXNjcmlw dG9ycy4gU29tZSBoYXJkd2FyZSBvbmx5IGZyZWVzIHRoZSBkZXNjcmlwdG9ycyBpbiBidXJzdHMg YWNyb3NzIHRoZSBQQ0kgYnVzLiBJdCBtYWtlcyBpdCBlYXNpZXIgZm9yIHRoZSBoYXJkd2FyZSBh bmQgZmFzdGVyIGFzIGl0IGRvZXMgbm90IG5lZWQgdG8gc2VuZCBldmVyeSBkZXNjcmlwdG9yIGJh Y2sgb25lIGF0IGEgdGltZS4gWW91IG1heSBoYXZlIGp1c3QgaGl0IGEgc3dlZXQgc3BvdCBpbiBi dXJzdCBzaXplIGFuZCB0aGUgaGFyZHdhcmUuIE5vcm1hbGx5IDggZGVzY3JpcHRvcnMgb24gSW50 ZWwgaGFyZHdhcmUgaXMgYSBjYWNoZSBsaW5lIHNpemUgNjQgYnl0ZXMsIHVzaW5nIG11bHRpcGxl IG9mIDggaXMgdGhlIGJlc3QgcGVyZm9ybWFuY2UgYXMgeW91IGRvIG5vdCB3YW50IHRvIHdyaXRl IHBhcnQgb2YgYSBjYWNoZSBsaW5lIHdoaWNoIGNhdXNlcyBhIGxvdCBvZiBQQ0kgdHJhbnNhY3Rp b25zIHRvIGNvbXBsZXRlIHdyaXRpbmcgcGFydCBvZiBhIGNhY2hlIGxpbmUuDQoNCj4gDQo+IEFu b3RoZXIgc29sdXRpb24gaXMgaW1wbGVtZW50aW5nIGEgd2hpbGUgbG9vcCAobGlrZSBpbiBfc2Vu ZF9idXJzdF9mYXN0IGluIHBrdGdlbiksIHNvIGV2ZXJ5IHBhY2tldCB3aWxsIGJlIHRyYW5zbWl0 dGVkLiBUaGlzIHNvbHV0aW9uIHNlZW1zIHRvIHdvcmsgdG9vLCBidXQgdGhlIHNhbWUgcXVlc3Rp b24gaGVyZSwgaXMgdGhpcyBhIHZhbGlkIHNvbHV0aW9uPyBUaGUgc3RyYW5nZSBmZWVsaW5nIGFi b3V0IHRoaXMgc29sdXRpb24gaXMgdGhhdCBiYXNpY2FsbHkgdGhlIHNhbWUgaGFwcGVucyBpbiB0 aGUgaXhnYmUgZHJpdmVyIGNvZGUgKGl4Z2JlX3J4dHguYyk6DQo+IA0KPiB1aW50MTZfdA0KPiBp eGdiZV94bWl0X3BrdHNfc2ltcGxlKHZvaWQgKnR4X3F1ZXVlLCBzdHJ1Y3QgcnRlX21idWYgKip0 eF9wa3RzLA0KPiAJCSAgICAgICB1aW50MTZfdCBuYl9wa3RzKQ0KPiB7DQo+IAl1aW50MTZfdCBu Yl90eDsNCj4gDQo+IAkvKiBUcnkgdG8gdHJhbnNtaXQgYXQgbGVhc3QgY2h1bmtzIG9mIFRYX01B WF9CVVJTVCBwa3RzICovDQo+IAlpZiAobGlrZWx5KG5iX3BrdHMgPD0gUlRFX1BNRF9JWEdCRV9U WF9NQVhfQlVSU1QpKQ0KPiAJCXJldHVybiB0eF94bWl0X3BrdHModHhfcXVldWUsIHR4X3BrdHMs IG5iX3BrdHMpOw0KPiANCj4gCS8qIHRyYW5zbWl0IG1vcmUgdGhhbiB0aGUgbWF4IGJ1cnN0LCBp biBjaHVua3Mgb2YgVFhfTUFYX0JVUlNUICovDQo+IAluYl90eCA9IDA7DQo+IAl3aGlsZSAobmJf cGt0cykgew0KPiAJCXVpbnQxNl90IHJldCwgbjsNCj4gDQo+IAkJbiA9ICh1aW50MTZfdClSVEVf TUlOKG5iX3BrdHMsIFJURV9QTURfSVhHQkVfVFhfTUFYX0JVUlNUKTsNCj4gCQlyZXQgPSB0eF94 bWl0X3BrdHModHhfcXVldWUsICYodHhfcGt0c1tuYl90eF0pLCBuKTsNCj4gCQluYl90eCA9ICh1 aW50MTZfdCkobmJfdHggKyByZXQpOw0KPiAJCW5iX3BrdHMgPSAodWludDE2X3QpKG5iX3BrdHMg LSByZXQpOw0KPiAJCWlmIChyZXQgPCBuKQ0KPiAJCQlicmVhazsNCj4gCX0NCj4gDQo+IAlyZXR1 cm4gbmJfdHg7DQo+IH0NCj4gDQo+IFRvIGJlIGhvbmVzdCwgSSBkb24ndCBrbm93IHdoZXRoZXIg dGhpcyBwaWVjZSBvZiBjb2RlIGlzIGNhbGxlZCBpZiBJIHVzZSB0aGUgcnRlX2V0aF90eF9idXJz dCwgYnV0IEkgZXhwZWN0IHNvbWV0aGluZyBzaW1pbGFyIGhhcHBlbnMgd2hlbiBydGVfZXRoX3R4 X2J1cnN0IHVzZXMgYW5vdGhlciB0cmFuc21pdHRpbmcgZnVuY3Rpb24gaW4gdGhlIGl4Z2JlIGRy aXZlciBjb2RlLiBUaGlzIHdoaWxlIGxvb3AgaW4gdGhlIGl4Z2JlIGRyaXZlciBjb2RlIGlzIGV4 YWN0bHkgZG9pbmcgc2FtZSBhcyB1c2luZyBhIHdoaWxlIGxvb3AgaW4gY29tYmluYXRpb24gd2l0 aCBydGVfZXRoX3R4X2J1cnN0LiBCdXQgaWYgSSBkb24ndCB1c2UgYSB3aGlsZSBsb29wIGluIGNv bWJpbmF0aW9uIHdpdGggdGhlIHJ0ZV9ldGhfdHhfYnVyc3QgKGFuZCBhIGJ1cnN0IHNpemUgb2Yg MTQ0KSBpdCdzIG5vdCB3b3JraW5nIChtYW55IHBhY2tldHMgYXJlIGRyb3BwZWQpLCBidXQgaWYg SSBpbXBsZW1lbnQgdGhpcyB3aGlsZSBsb29wIGl0IHNlZW1zIHRvIHdvcmvigKYNCg0KSSB0aGlu ayBpdCBpcyBhbHdheXMgc2FmZSB0byBkbyB0aGUgbG9vcGluZyBpbiB5b3VyIGFwcGxpY2F0aW9u IGFzIG5vdCBhbGwgZHJpdmVycyBkbyB0aGUgbG9vcGluZyBmb3IgeW91LiBJbiBjYXNlIGFib3Zl IEkgdGhpbmsgdGhleSB3ZXJlIHRyeWluZyB0byBvcHRpbWl6ZSB0aGUgdHJhbnNmZXJzIHRvIHRo ZSBOSUMgdG8gMzIgcGFja2V0cyBvciBkZXNjcmlwdG9ycyBmb3IgYmVzdCBwZXJmb3JtYW5jZS4N Cg0KPiANCj4gSSBob3BlIHlvdSBjYW4gaGVscCBtZSBhZ2FpbiB3aXRoIGZpbmRpbmcgdGhlIGJl c3Qgc29sdXRpb24gdG8gc29sdmUgdGhpcyBwcm9ibGVtIQ0KPiANCj4gUGV0ZXINCj4gDQo+IA0K PiBWYW46IFdpbGVzLCBLZWl0aCA8a2VpdGgud2lsZXNAaW50ZWwuY29tPg0KPiBWZXJ6b25kZW46 IHphdGVyZGFnIDI4IGphbnVhcmkgMjAxNyAyMzo0Mw0KPiBBYW46IFBldGVyIEtlZXJld2Vlcg0K PiBDQzogdXNlcnNAZHBkay5vcmcNCj4gT25kZXJ3ZXJwOiBSZTogW2RwZGstdXNlcnNdIFdoYXQg dG8gZG8gYWZ0ZXIgcnRlX2V0aF90eF9idXJzdDogZnJlZSBvciBzZW5kIGFnYWluIHJlbWFpbmlu ZyBwYWNrZXRzPw0KPiAgICAgDQo+IA0KPj4gT24gSmFuIDI4LCAyMDE3LCBhdCAxOjU3IFBNLCBQ ZXRlciBLZWVyZXdlZXIgPHBldGVya2VlcmV3ZWVyQGhvdG1haWwuY29tPiB3cm90ZToNCj4+IA0K Pj4gSGkhDQo+PiANCj4+IEN1cnJlbnRseSBJJ2FtIHJ1bm5pbmcgc29tZSB0ZXN0cyB3aXRoIHRo ZSBMb2FkIEJhbGFuY2VyIFNhbXBsZSBBcHBsaWNhdGlvbi4gSSdtIHRlc3RpbmcgdGhlIExvYWQg QmFsYW5jZXIgU2FtcGxlIEFwcGxpY2F0aW9uIGJ5IHNlbmRpbmcgcGFja2V0cyB3aXRoIHBrdGdl bi4NCj4+IEkgaGF2ZSBhIHNldHVwIG9mIDIgc2VydmVycyB3aXRoIGVhY2ggc2VydmVyIGNvbnRh aW5pbmcgYSBJbnRlbCAxMEdiZSA4MjU5OSBOSUMgKGNvbm5lY3RlZCB0byBlYWNoIG90aGVyKS4g SSBoYXZlIGNvbmZpZ3VyZWQgdGhlIExvYWQgQmFsYW5jZXIgYXBwbGljYXRpb24gdG8gdXNlIDEg Y29yZSBmb3IgUlgsIDEgd29ya2VyIGNvcmUgYW5kIDEgVFggY29yZS4gVGhlIFRYIGNvcmUgc2Vu ZHMgYWxsIHBhY2tldHMgYmFjayB0byB0aGUgcGt0Z2VuICBhcHBsaWNhdGlvbi4NCj4+IA0KPj4g V2l0aCB0aGUgcGt0Z2VuIEkgc2VuZCAxMDI0IFVEUCBwYWNrZXRzIHRvIHRoZSBMb2FkIEJhbGFu Y2VyLiBFdmVyeSBwYWNrZXQgcHJvY2Vzc2VkIGJ5IHRoZSB3b3JrZXIgY29yZSB3aWxsIGJlIHBy aW50ZWQgdG8gdGhlIHNjcmVlbiAoSSBhZGRlZCB0aGlzIGNvZGUgYnkgbXlzZWxmKS4gSWYgSSBz ZW5kIDEwMjQgVURQIHBhY2tldHMsIDEwMDggKCA9IDcgeCAxNDQpIHBhY2tldHMgd2lsbCBiZSBw cmludGVkIHRvIHRoZSBzY3JlZW4uIFRoaXMgIGlzICBjb3JyZWN0LCBiZWNhdXNlIHRoZSBSWCBj b3JlIHJlYWRzIHBhY2tldHMgd2l0aCBhIGJ1cnN0IHNpemUgb2YgMTQ0LiBTbyBpZiBJIHNlbmQg MTAyNCBwYWNrZXRzLCBJIGV4cGVjdCAxMDA4IHBhY2tldHMgYmFjayBpbiB0aGUgcGt0Z2VuIGFw cGxpY2F0aW9uLiBCdXQgc3VycHJpc2luZ2x5IEkgb25seSByZWNlaXZlIDIyNCBwYWNrZXRzIGlu c3RlYWQgb2YgMTAwOCBwYWNrZXRzLiBBZnRlciBzb21lIHJlc2VhcmNoIEkgZm91bmQgdGhhdCAg dGhhdCAgMjI0IHBhY2tldHMgaXMgbm90IGp1c3QgYSByYW5kb20gbnVtYmVyLCBpdHMgNyB4IDMy ICg9IDIyNCkuIFNvIGlmIHRoZSBSWCByZWFkcyA3IHggMTQ0IHBhY2tldHMsIEkgZ2V0IGJhY2sg NyB4IDMyIHBhY2tldHMuIEFmdGVyIGRpZ2dpbmcgaW50byB0aGUgY29kZSBmcm9tIHRoZSBMb2Fk IEJhbGFuY2VyIGFwcGxpY2F0aW9uIEkgZm91bmQgaW4gJ3J1bnRpbWUuYycgaW4gdGhlICdhcHBf bGNvcmVfaW9fdHgnIGZ1bmN0aW9uIHRoaXMgY29kZSAgOg0KPj4gDQo+PiBuX3BrdHMgPSBydGVf ZXRoX3R4X2J1cnN0KA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwN Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsDQo+PiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBscC0+dHgubWJ1Zl9vdXRbcG9ydF0uYXJyYXksDQo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDE2X3QpIG5fbWJ1ZnMpOw0KPj4gDQo+ PiAuLi4NCj4+IA0KPj4gaWYgKHVubGlrZWx5KG5fcGt0cyA8IG5fbWJ1ZnMpKSB7DQo+PiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBrOw0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gbl9wa3RzOyBrIDwgbl9tYnVmczsgayArKykg ew0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRl X21idWYgKnBrdF90b19mcmVlID0gbHAtPnR4Lm1idWZfb3V0W3BvcnRdLmFycmF5W2tdOw0KPj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydGVfcGt0bWJ1Zl9mcmVl KHBrdF90b19mcmVlKTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+PiANCj4+IFdoYXQgSSB1bmRlcnN0YW5kIGZy b20gdGhpcyBjb2RlIGlzIHRoYXQgbl9tYnVmcyAncGFja2V0cycgYXJlIHNlbmQgd2l0aCAncnRl X2V0aF90eF9idXJzdCcgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBuX3BrdHMsIHRo ZSBudW1iZXIgb2YgcGFja2V0cyB0aGF0IGFyZSBhY3R1YWxseSBzZW5kLiBJZiB0aGUgYWN0dWFs IG51bWJlciBvZiBwYWNrZXRzIHNlbmQgaXMgc21hbGxlciB0aGVuIG5fbWJ1ZnMgKHBhY2tldHMg cmVhZHkgZm9yICAgc2VuZCBnaXZlbiB0byB0aGUgcnRlX2V0aF90eF9idXJzdCkgdGhlbiBhbGwg cmVtYWluaW5nIHBhY2tldHMsIHdoaWNoIGFyZSBub3Qgc2VuZCwgYXJlIGZyZWVkLiBJbiBkZSB0 aGUgTG9hZCBCYWxhbmNlciBhcHBsaWNhdGlvbiwgbl9tYnVmcyBpcyBlcXVhbCB0byAxNDQuIEJ1 dCBpbiBteSBjYXNlICdydGVfZXRoX3R4X2J1cnN0JyByZXR1cm5zIHRoZSB2YWx1ZSAzMiwgYW5k IG5vdCAxNDQuIFNvIDMyIHBhY2tldHMgYXJlIGFjdHVhbGx5IHNlbmQgICBhbmQgdGhlIHJlbWFp bmluZyBwYWNrZXRzICgxNDQgLSAzMiA9IDExMikgYXJlIGZyZWVkLiBUaGlzIGlzIHRoZSByZWFz b24gd2h5IEkgZ2V0IDIyNCAoNyB4IDMyKSBwYWNrZXRzIGJhY2sgaW5zdGVhZCBvZiAxMDA4ICg9 IDcgeCAxNDQpLg0KPj4gDQo+PiBCdXQgdGhlIHF1ZXN0aW9uIGlzOiB3aHkgYXJlIHRoZSByZW1h aW5pbmcgcGFja2V0cyBmcmVlZCBpbnN0ZWFkIG9mIHRyeWluZyB0byBzZW5kIHRoZW0gYWdhaW4/ IElmIEkgbG9vayBpbnRvIHRoZSAncGt0Z2VuLmMnLCB0aGVyZSBpcyBhIGZ1bmN0aW9uICdfc2Vu ZF9idXJzdF9mYXN0JyB3aGVyZSBhbGwgcmVtYWluaW5nIHBhY2tldHMgYXJlIHRyeWluZyB0byBi ZSBzZW5kIGFnYWluIChpbiBhIHdoaWxlIGxvb3AgdW50aWwgdGhleSBhcmUgYWxsICAgc2VuZCkg aW5zdGVhZCBvZiBmcmVlaW5nIHRoZW0gKHNlZSBjb2RlIGJlbG93KSA6DQo+PiANCj4+IHN0YXRp YyBfX2lubGluZV9fIHZvaWQNCj4+IF9zZW5kX2J1cnN0X2Zhc3QocG9ydF9pbmZvX3QgKmluZm8s IHVpbnQxNl90IHFpZCkNCj4+IHsNCj4+ICAgICAgICAgIHN0cnVjdCBtYnVmX3RhYmxlICAgKm10 YWIgPSAmaW5mby0+cVtxaWRdLnR4X21idWZzOw0KPj4gICAgICAgICAgc3RydWN0IHJ0ZV9tYnVm ICoqcGt0czsNCj4+ICAgICAgICAgIHVpbnQzMl90IHJldCwgY250Ow0KPj4gDQo+PiAgICAgICAg ICBjbnQgPSBtdGFiLT5sZW47DQo+PiAgICAgICAgICBtdGFiLT5sZW4gPSAwOw0KPj4gDQo+PiAg ICAgICAgICBwa3RzICAgID0gbXRhYi0+bV90YWJsZTsNCj4+IA0KPj4gICAgICAgICAgaWYgKHJ0 ZV9hdG9taWMzMl9yZWFkKCZpbmZvLT5wb3J0X2ZsYWdzKSAmIFBST0NFU1NfVFhfVEFQX1BLVFMp IHsNCj4+ICAgICAgICAgICAgICAgICAgd2hpbGUgKGNudCA+IDApIHsNCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICByZXQgPSBydGVfZXRoX3R4X2J1cnN0KGluZm8tPnBpZCwgcWlkLCBwa3Rz LCBjbnQpOw0KPj4gDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgcGt0Z2VuX2RvX3R4X3Rh cChpbmZvLCBwa3RzLCByZXQpOw0KPj4gDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgcGt0 cyArPSByZXQ7DQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgY250IC09IHJldDsNCj4+ICAg ICAgICAgICAgICAgICAgfQ0KPj4gICAgICAgICAgfSBlbHNlIHsNCj4+ICAgICAgICAgICAgICAg ICAgd2hpbGUoY250ID4gMCkgew0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHJ0 ZV9ldGhfdHhfYnVyc3QoaW5mby0+cGlkLCBxaWQsIHBrdHMsIGNudCk7DQo+PiANCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICBwa3RzICs9IHJldDsNCj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICBjbnQgLT0gcmV0Ow0KPj4gICAgICAgICAgICAgICAgICB9DQo+PiAgICAgICAgICB9DQo+ PiB9IA0KPj4gDQo+PiBXaHkgaXMgdGhpcyB3aGlsZSBsb29wIChzZW5kaW5nIHBhY2tldHMgdW50 aWwgdGhleSBoYXZlIGFsbCBiZWVuIHNlbmQpIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgJ2FwcF9s Y29yZV9pb190eCcgZnVuY3Rpb24gaW4gdGhlIExvYWQgQmFsYW5jZXIgYXBwbGljYXRpb24/IFRo YXQgd291bGQgbWFrZSBzZW5zZSByaWdodD8gSXQgbG9va3MgbGlrZSB0aGF0IHRoZSBMb2FkIEJh bGFuY2VyIGFwcGxpY2F0aW9uIG1ha2VzIGFuIGFzc3VtcHRpb24gdGhhdCAgIGlmIG5vdCBhbGwg cGFja2V0cyBoYXZlIGJlZW4gc2VuZCwgdGhlIHJlbWFpbmluZyBwYWNrZXRzIGZhaWxlZCBkdXJp bmcgdGhlIHNlbmRpbmcgcHJvY2VzIGFuZCBzaG91bGQgYmUgZnJlZWQuDQo+IA0KPiBUaGUgc2l6 ZSBvZiB0aGUgVFggcmluZyBvbiB0aGUgaGFyZHdhcmUgaXMgbGltaXRlZCBpbiBzaXplLCBidXQg eW91IGNhbiBhZGp1c3QgdGhhdCBzaXplLiBJbiBwa3RnZW4gSSBhdHRlbXB0IHRvIHNlbmQgYWxs IHBhY2tldHMgcmVxdWVzdGVkIHRvIGJlIHNlbnQsIGJ1dCBpbiB0aGUgbG9hZCBiYWxhbmNlciB0 aGUgZGV2ZWxvcGVyIGRlY2lkZWQgdG8ganVzdCBkcm9wIHRoZSBwYWNrZXRzIHRoYXQgYXJlIG5v dCBzZW50IGFzIHRoZSBUWCBoYXJkd2FyZSAgcmluZyBvciBldmVuIGEgU1cgcmluZyBpcyBmdWxs LiBUaGlzIG5vcm1hbGx5IG1lYW5zIHRoZSBjb3JlIGlzIHNlbmRpbmcgcGFja2V0cyBmYXN0ZXIg dGhlbiB0aGUgSFcgcmluZyBvbiB0aGUgTklDIGNhbiBzZW5kIHRoZSBwYWNrZXRzLg0KPiANCj4g SXQgd2FzIGp1c3QgYSBjaG9pY2Ugb2YgdGhlIGRldmVsb3BlciB0byBkcm9wIHRoZSBwYWNrZXRz IGluc3RlYWQgb2YgdHJ5aW5nIGFnYWluIHVudGlsIHRoZSBwYWNrZXRzIGFycmF5IGlzIGVtcHR5 LiBPbmUgcG9zc2libGUgd2F5IHRvIGZpeCB0aGlzIGlzIHRvIGluY3JlYXNlIHRoZSBzaXplIG9m IHRoZSBUWCByaW5nIDItNCB0aW1lIGxhcmdlciB0aGVuIHRoZSBSWCByaW5nLiBUaGlzIHN0aWxs IGRvZXMgbm90IHRydWx5IHNvbHZlIHRoZSBwcm9ibGVtICBpdCBqdXN0IG1vdmVzIGl0IHRvIHRo ZSBSWCByaW5nLiBUaGUgTklDIGlmIGlzIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBSWCBkZXNjcmlw dG9yIGFuZCBhIHBsYWNlIHRvIERNQSB0aGUgcGFja2V0IGludG8gbWVtb3J5IGl0IGdldHMgZHJv cHBlZCBhdCB0aGUgd2lyZS4gQlRXIGluY3JlYXNpbmcgdGhlIFRYIHJpbmcgc2l6ZSBhbHNvIG1l YW5zIHRoZSB0aGVzZSBwYWNrZXRzIHdpbGwgbm90IHJldHVybmVkIHRvIHRoZSBmcmVlIHBvb2wg YW5kIHlvdSAgY2FuIGV4aGF1c3QgdGhlIHBhY2tldCBwb29sLiBUaGUgcGFja2V0cyBhcmUgc3R1 Y2sgb24gdGhlIFRYIHJpbmcgYXMgZG9uZSBiZWNhdXNlIHRoZSB0aHJlc2hvbGQgdG8gcmVjbGFp bSB0aGUgZG9uZSBwYWNrZXRzIGlzIHRvbyBoaWdoLg0KPiANCj4gU2F5IHlvdSBoYXZlIDEwMjQg cmluZyBzaXplIGFuZCB0aGUgaGlnaCB3YXRlcm1hcmsgZm9yIGZsdXNoaW5nIHRoZSBkb25lIG9m ZiB0aGUgcmluZyBpcyA5MDAgcGFja2V0cy4gVGhlbiBpZiB0aGUgcGFja2V0IHBvb2wgaXMgb25s eSA1MTIgcGFja2V0cyB0aGVuIHdoZW4geW91IHNlbmQgNTEyIHBhY2tldHMgdGhleSB3aWxsIGFs bCBiZSBvbiB0aGUgVFggZG9uZSBxdWV1ZSBhbmQgbm93IHlvdSBhcmUgaW4gYSBkZWFkbG9jayBu b3QgYmVpbmcgYWJsZSAgdG8gc2VuZCBhIHBhY2tldCBhcyB0aGV5IGFyZSBhbGwgb24gdGhlIFRY IGRvbmUgcmluZy4gVGhpcyBub3JtYWxseSBkb2VzIG5vdCBoYXBwZW4gYXMgdGhlIHJpbmcgc2l6 ZXMgb3Igbm9ybWFsbHkgbXVjaCBzbWFsbGVyIHRoZW4gdGhlIG51bWJlciBvZiBUWCBwYWNrZXRz IG9yIGV2ZW4gUlggcGFja2V0cy4NCj4gDQo+IEluIHBrdGdlbiBJIGF0dGVtcHQgdG8gc2VuZCBh bGwgb2YgdGhlIHBhY2tldHMgcmVxdWVzdGVkIGFzIGl0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNl IGZvciB0aGUgdXNlciB0byBhc2sgdG8gc2VuZCAxMDAwMCBwYWNrZXRzIGFuZCBwa3RnZW4gb25s eSBzZW5kIHNvbWUgbnVtYmVyIGxlc3MgYXMgdGhlIGNvcmUgc2VuZGluZyB0aGUgcGFja2V0cyBj YW4gb3ZlciBydW4gdGhlIFRYIHF1ZXVlIGF0IHNvbWUgcG9pbnQuDQo+IA0KPiBJIGhvcGUgdGhh dCBoZWxwcy4NCj4gDQo+PiANCj4+IEkgaG9wZSBzb21lb25lIGNhbiBoZWxwIG1lIHdpdGggdGhp cyBxdWVzdGlvbnMuIFRoYW5rIHlvdSBpbiBhZHZhbmNlISENCj4+IA0KPj4gUGV0ZXINCj4gDQo+ IFJlZ2FyZHMsDQo+IEtlaXRoDQo+IA0KDQpSZWdhcmRzLA0KS2VpdGgNCg0K