From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 17EFC590E for ; Tue, 25 Oct 2016 12:02:51 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP; 25 Oct 2016 03:02:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,545,1473145200"; d="scan'208";a="893687020" Received: from irsmsx103.ger.corp.intel.com ([163.33.3.157]) by orsmga003.jf.intel.com with ESMTP; 25 Oct 2016 03:02:49 -0700 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by IRSMSX103.ger.corp.intel.com (163.33.3.157) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 25 Oct 2016 11:02:48 +0100 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.177]) by irsmsx111.ger.corp.intel.com ([10.108.20.4]) with mapi id 14.03.0248.002; Tue, 25 Oct 2016 11:02:48 +0100 From: "Ananyev, Konstantin" To: "Richardson, Bruce" , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= CC: "Wiles, Keith" , "dev@dpdk.org" , Olivier Matz Thread-Topic: [dpdk-dev] mbuf changes Thread-Index: AdIuDi107p4k5g0aQEmWpCYJ+64TpwAPchyA//990wCAAFndAIAAukEA///iDnA= Date: Tue, 25 Oct 2016 10:02:47 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772583F0CC6A7@irsmsx105.ger.corp.intel.com> References: <98CBD80474FA8B44BF855DF32C47DC359EA8B1@smartserver.smartshare.dk> <7910CF2F-7087-4307-A9AC-DE0287104185@intel.com> <20161024162538.GA34988@bricha3-MOBL3.ger.corp.intel.com> <98CBD80474FA8B44BF855DF32C47DC359EA8B2@smartserver.smartshare.dk> <20161025085353.GA33668@bricha3-MOBL3.ger.corp.intel.com> In-Reply-To: <20161025085353.GA33668@bricha3-MOBL3.ger.corp.intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] mbuf changes 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: Tue, 25 Oct 2016 10:02:53 -0000 SGkgZXZlcnlvbmUsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2 IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBCcnVjZSBSaWNoYXJk c29uDQo+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgMjUsIDIwMTYgOTo1NCBBTQ0KPiBUbzogTW9y dGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gQ2M6IFdpbGVzLCBLZWl0 aCA8a2VpdGgud2lsZXNAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBPbGl2aWVyIE1hdHogPG9s aXZpZXIubWF0ekA2d2luZC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIG1idWYgY2hh bmdlcw0KPiANCj4gT24gTW9uLCBPY3QgMjQsIDIwMTYgYXQgMTE6NDc6MTZQTSArMDIwMCwgTW9y dGVuIEJyw7hydXAgd3JvdGU6DQo+ID4gQ29tbWVudHMgaW5saW5lLg0KPiA+DQo+ID4gTWVkIHZl bmxpZyBoaWxzZW4gLyBraW5kIHJlZ2FyZHMNCj4gPiAtIE1vcnRlbiBCcsO4cnVwDQo+ID4NCj4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBkZXYgW21haWx0bzpk ZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIEJydWNlIFJpY2hhcmRzb24NCj4gPiA+ IFNlbnQ6IE1vbmRheSwgT2N0b2JlciAyNCwgMjAxNiA2OjI2IFBNDQo+ID4gPiBUbzogV2lsZXMs IEtlaXRoDQo+ID4gPiBDYzogTW9ydGVuIEJyw7hydXA7IGRldkBkcGRrLm9yZzsgT2xpdmllciBN YXR6DQo+ID4gPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBtYnVmIGNoYW5nZXMNCj4gPiA+DQo+ ID4gPiBPbiBNb24sIE9jdCAyNCwgMjAxNiBhdCAwNDoxMTozM1BNICswMDAwLCBXaWxlcywgS2Vp dGggd3JvdGU6DQo+ID4gPiA+DQo+ID4gPiA+ID4gT24gT2N0IDI0LCAyMDE2LCBhdCAxMDo0OSBB TSwgTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPiA+IHdyb3Rl Og0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRmlyc3Qgb2YgYWxsOiBUaGFua3MgZm9yIGEgZ3JlYXQg RFBESyBVc2Vyc3BhY2UgMjAxNiENCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBDb250aW51aW5nIHRoZSBVc2Vyc3BhY2UgZGlzY3Vzc2lvbiBhYm91dCBPbGl2aWVy IE1hdHrigJlzIHByb3Bvc2VkIG1idWYNCj4gPiA+IGNoYW5nZXMuLi4NCj4gPiA+DQo+ID4gPiBU aGFua3MgZm9yIGtlZXBpbmcgdGhlIGRpc2N1c3Npb24gZ29pbmchDQo+ID4gPiA+ID4NCj4gPiA+ ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gMS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFN0ZXBo ZW4gSGVtbWluZ2VyIGhhZCBhIG5vdGV3b3J0aHkgZ2VuZXJhbCBjb21tZW50IGFib3V0IGtlZXBp bmcNCj4gPiA+IG1ldGFkYXRhIGZvciB0aGUgTklDIGluIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9u IG9mIHRoZSBtYnVmOiBNZXRhZGF0YQ0KPiA+ID4gZ2VuZXJhdGVkIGJ5IHRoZSBOSUPigJlzIFJY IGhhbmRsZXIgYmVsb25ncyBpbiB0aGUgZmlyc3QgY2FjaGUgbGluZSwgYW5kDQo+ID4gPiBtZXRh ZGF0YSByZXF1aXJlZCBieSB0aGUgTklD4oCZcyBUWCBoYW5kbGVyIGJlbG9uZ3MgaW4gdGhlIHNl Y29uZCBjYWNoZSBsaW5lLg0KPiA+ID4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgdG91Y2hpbmcgdGhl IHNlY29uZCBjYWNoZSBsaW5lIG9uIGluZ3Jlc3Mgc2hvdWxkIGJlDQo+ID4gPiBhdm9pZGVkIGlm IHBvc3NpYmxlOyBhbmQgQnJ1Y2UgUmljaGFyZHNvbiBtZW50aW9uZWQgdGhhdCBmb3IgdGhpcyBy ZWFzb24gbS0NCj4gPiA+ID5uZXh0IHdhcyB6ZXJvZWQgb24gZnJlZSgpLg0KPiA+ID4gPiA+DQo+ ID4gPiBUaGlua2luZyBhYm91dCBpdCwgSSBzdXNwZWN0IHRoZXJlIGFyZSBtb3JlIGZpZWxkcyB3 ZSBjYW4gcmVzZXQgb24gZnJlZQ0KPiA+ID4gdG8gc2F2ZSB0aW1lIG9uIGFsbG9jLiBSZWZjbnQs IGFzIGRpc2N1c3NlZCBiZWxvdyBpcyBvbmUgb2YgdGhlbSwgYnV0IHNvDQo+ID4gPiB0b28gY291 bGQgYmUgdGhlIG5iX3NlZ3MgZmllbGQgYW5kIHBvc3NpYmx5IG90aGVycy4NCj4gPiBZZXMuIENv bnNpZGVyIHRoZSB1c2Ugb2YgcnRlX3BrdG1idWZfcmVzZXQoKSBvciBhZGQgYSBydGVfcGt0bWJ1 Zl9wcmVhbGxvYygpIGZvciB0aGlzIHB1cnBvc2UuDQo+ID4NCj4gUG9zc2libHkuIFdlIGp1c3Qg d2FudCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCByZXNldCB0b28gbXVjaCBlaXRoZXIhDQo+ IDotKQ0KPiANCj4gPg0KPiA+ID4gPiA+IDIuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGVyZSBz ZWVtZWQgdG8gYmUgY29uc2Vuc3VzIHRoYXQgdGhlIHNpemUgb2YgbS0+cmVmY250IHNob3VsZCBt YXRjaA0KPiA+ID4gdGhlIHNpemUgb2YgbS0+cG9ydCBiZWNhdXNlIGEgcGFja2V0IGNvdWxkIGJl IGR1cGxpY2F0ZWQgb24gYWxsIHBoeXNpY2FsDQo+ID4gPiBwb3J0cyBmb3IgTDMgbXVsdGljYXN0 IGFuZCBMMiBmbG9vZGluZy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEZ1cnRoZXJtb3JlLCBhbHRo b3VnaCBhIHNpbmdsZSBwaHlzaWNhbCBtYWNoaW5lIChpLmUuIGEgc2luZ2xlIHNlcnZlcikNCj4g PiA+IHdpdGggMjU1IHBoeXNpY2FsIHBvcnRzIHByb2JhYmx5IGRvZXNu4oCZdCBleGlzdCwgaXQg bWlnaHQgY29udGFpbiBtb3JlIHRoYW4NCj4gPiA+IDI1NSB2aXJ0dWFsIG1hY2hpbmVzIHdpdGgg YSB2aXJ0dWFsIHBvcnQgZWFjaCwgc28gaXQgbWFrZXMgc2Vuc2UgZXh0ZW5kaW5nDQo+ID4gPiB0 aGVzZSBtYnVmIGZpZWxkcyBmcm9tIDggdG8gMTYgYml0cy4NCj4gPiA+ID4NCj4gPiA+ID4gSSB0 aG91Z2h0IHdlIGFsc28gdGFsa2VkIGFib3V0IHJlbW92aW5nIHRoZSBtLT5wb3J0IGZyb20gdGhl IG1idWYgYXMgaXQNCj4gPiA+IGlzIG5vdCByZWFsbHkgbmVlZGVkLg0KPiA+ID4gPg0KPiA+ID4g WWVzLCB0aGlzIHdhcyBtZW50aW9uZWQsIGFuZCBhbHNvIHRoZSBvcHRpb24gb2YgbW92aW5nIHRo ZSBwb3J0IHZhbHVlIHRvDQo+ID4gPiB0aGUgc2Vjb25kIGNhY2hlbGluZSwgYnV0IGl0IGFwcGVh cnMgdGhhdCBOWFAgYXJlIHVzaW5nIHRoZSBwb3J0IHZhbHVlDQo+ID4gPiBpbiB0aGVpciBOSUMg ZHJpdmVycyBmb3IgcGFzc2luZyBpbiBtZXRhZGF0YSwgc28gd2UnZCBuZWVkIHRoZWlyDQo+ID4g PiBhZ3JlZW1lbnQgb24gYW55IG1vdmUgKG9yIHJlbW92YWwpLg0KPiA+ID4NCj4gPiBJZiBhIHNp bmdsZSBkcml2ZXIgaW5zdGFuY2Ugc2VydmljZXMgbXVsdGlwbGUgcG9ydHMsIHNvIHRoZSBwb3J0 cyBhcmUgbm90IHBvbGxlZCBpbmRpdmlkdWFsbHksIHRoZSBtLT5wb3J0IG1lbWJlciB3aWxsIGJl IHJlcXVpcmVkIHRvIGlkZW50aWZ5DQo+IHRoZSBwb3J0LiBJbiB0aGF0IGNhc2UsIGl0IG1pZ2h0 IGFsc28gdXNlZCBlbHNld2hlcmUgaW4gdGhlIGluZ3Jlc3MgcGF0aCwgYW5kIHRodXMgYXBwcm9w cmlhdGUgaGF2aW5nIGluIHRoZSBmaXJzdCBjYWNoZSBsaW5lLiANCg0KT2ssIGJ1dCB0aGVzZSBk YXlzIG1vc3Qgb2YgZGV2aWNlcyBoYXZlIG11bHRpcGxlIHJ4IHF1ZXVlcy4NClNvIGlkZW50aWZ5 IHRoZSBSWCBzb3VyY2UgcHJvcGVybHkgeW91IG5lZWQgbm90IG9ubHkgcG9ydCwgYnV0IHBvcnQr cXVldWUgKGF0IGxlYXN0IDMgYnl0ZXMpLg0KQnV0IEkgc3VwcG9zZSBiZXR0ZXIgdG8gd2FpdCBm b3IgTlhQIGlucHV0IGhlcmUuIA0KDQo+U28geWVzLCB0aGlzIG5lZWRzDQo+IGZ1cnRoZXIgZGlz Y3Vzc2lvbiB3aXRoIE5YUC4NCj4gPg0KPiA+DQo+ID4gPiA+ID4gMy4NCj4gPiA+ID4gPg0KPiA+ ID4gPiA+IFNvbWVvbmUgKEJydWNlIFJpY2hhcmRzb24/KSBzdWdnZXN0ZWQgbW92aW5nIG0tPnJl ZmNudCBhbmQgbS0+cG9ydCB0bw0KPiA+ID4gdGhlIHNlY29uZCBjYWNoZSBsaW5lLCB3aGljaCB0 aGVuIGdlbmVyYXRlZCBxdWVzdGlvbnMgZnJvbSB0aGUgYXVkaWVuY2UNCj4gPiA+IGFib3V0IHRo ZSByZWFsIGxpZmUgcHVycG9zZSBvZiBtLT5wb3J0LCBhbmQgaWYgbS0+cG9ydCBjb3VsZCBiZSBy ZW1vdmVkDQo+ID4gPiBmcm9tIHRoZSBtYnVmIHN0cnVjdHVyZS4NCj4gPiA+ID4gPg0KPiA+ID4g PiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA0Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSSBzdWdn ZXN0ZWQgdXNpbmcgb2Zmc2V0IC0xIGZvciBtLT5yZWZjbnQsIHNvIG0tPnJlZmNudCBiZWNvbWVz IDAgb24NCj4gPiA+IGZpcnN0IGFsbG9jYXRpb24uIFRoaXMgaXMgYmFzZWQgb24gdGhlIGFzc3Vt cHRpb24gdGhhdCBvdGhlciBtYnVmIGZpZWxkcw0KPiA+ID4gbXVzdCBiZSB6ZXJvZWQgYXQgYWxs b2MoKS9mcmVlKCkgYW55d2F5LCBzbyB6ZXJvaW5nIG0tPnJlZmNudCBpcyBjaGVhcGVyDQo+ID4g PiB0aGFuIHNldHRpbmcgaXQgdG8gMS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEZ1cnRoZXJtb3Jl IChyZWdhcmRsZXNzIG9mIG0tPnJlZmNudCBvZmZzZXQpLCBJIHN1Z2dlc3RlZCB0aGF0IGl0IGlz DQo+ID4gPiBub3QgcmVxdWlyZWQgdG8gbW9kaWZ5IG0tPnJlZmNudCB3aGVuIGFsbG9jYXRpbmcg YW5kIGZyZWVpbmcgdGhlIG1idWYsIHRodXMNCj4gPiA+IHNhdmluZyBvbmUgd3JpdGUgb3BlcmF0 aW9uIG9uIGJvdGggYWxsb2MoKSBhbmQgZnJlZSgpLiBIb3dldmVyLCB0aGlzDQo+ID4gPiBhc3N1 bWVzIHRoYXQgbS0+cmVmY250IGRlYnVnZ2luZywgZS5nLiB1bmRlcnJ1biBkZXRlY3Rpb24sIGlz IG5vdCByZXF1aXJlZC4NCj4gPiA+DQo+ID4gPiBJIGRvbid0IHRoaW5rIGl0IHJlYWxseSBtYXR0 ZXJzIHdoYXQgc2VudGluYWwgdmFsdWUgaXMgdXNlZCBmb3IgdGhlDQo+ID4gPiByZWZjbnQgYmVj YXVzZSBpdCBjYW4ndCBiZSBibGluZGx5IGFzc2lnbmVkIG9uIGZyZWUgbGlrZSBvdGhlciBmaWVs ZHMuDQo+ID4gPiBIb3dldmVyLCBJIHRoaW5rIDAgYXMgZmlyc3QgcmVmZXJlbmNlIHZhbHVlIGJl Y29tZXMgbW9yZSBhd2t3YXJkDQo+ID4gPiB0aGFuIDEsIGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFs IHdpdGggdW5kZXJmbG93LiBDb25zaWRlciB0aGUgc2l0dWF0aW9uDQo+ID4gPiB3aGVyZSB3ZSBo YXZlIHR3byByZWZlcmVuY2VzIHRvIHRoZSBtYnVmLCBzbyByZWZjbnQgaXMgMSwgYW5kIGJvdGgg YXJlDQo+ID4gPiBmcmVlZCBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSB0aGUgcmVmY250IGlzIG5v dC16ZXJvLCB0aGVuIGJvdGggY29yZXMNCj4gPiA+IHdpbGwgZG8gYW4gYXRvbWljIGRlY3JlbWVu dCBzaW11bHRhbmVvdXNseSBnaXZpbmcgYSByZWZjbnQgb2YgLTEuIFdlIGNhbg0KPiA+ID4gdGhl biBzZXQgdGhpcyBiYWNrIHRvIHplcm8gYmVmb3JlIGZyZWVpbmcsIGhvd2V2ZXIsIEknZCBzdGls bCBwcmVmZXIgdG8NCj4gPiA+IGhhdmUgcmVmY250IGJlIGFuIGFjY3VyYXRlIHZhbHVlIHNvIHRo YXQgaXQgYWx3YXlzIHN0YXlzIHBvc2l0aXZlLCBhbmQNCj4gPiA+IHdlIGNhbiBzdGlsbCBzZXQg aXQgdG8gIm9uZSIgb24gZnJlZSB0byBhdm9pZCBoYXZpbmcgdG8gc2V0IG9uIGFsbG9jLg0KPiA+ ID4NCj4gPiBHb29kIGV4YW1wbGUuIEl0IGV4cGxhaW5zIHZlcnkgY2xlYXJseSB3aHkgbXkgc3Vn Z2VzdGVkIG9wdGltaXphdGlvbiBpcyB0cmlja3kuIE15IG9wdGltaXphdGlvbiBpcyB0YXJnZXRp bmcgdGhlIG1vc3QgbGlrZWx5IHNjZW5hcmlvDQo+IHdoZXJlIG0tPnJlZmNudCBpcyBvbmx5ICJv bmUiLCBidXQgYXQgdGhlIGV4cGVuc2Ugb2Ygc29tZSBhZGRlZCBjb21wbGV4aXR5IGZvciB0aGUg dW5saWtlbHkgc2NlbmFyaW9zLiAoSSBvbmx5IHN1Z2dlc3RlZCAwIGFzICJvbmUiDQo+IGJlY2F1 c2UgSSBhc3N1bWVkIHRoZSB2YWx1ZSBjb3VsZCBiZSB6ZXJvZWQgZmFzdGVyIHRoYW4gc2V0IHRv IDEsIHNvIGZvcmdldCBhYm91dCB0aGF0LCBpZiB5b3UgbGlrZS4pDQo+ID4NCj4gPiBJIHN0aWxs IGFyZ3VlIHRoYXQgaWYgd2Uga2VlcCBtLT5yZWZjbnQgYXQgIm9uZSIgdmFsdWUgd2hpbGUgaW4g dGhlIGZyZWUgcG9vbCwgYSB3cml0ZSBvcGVyYXRpb24gY2FuIGJlIGF2b2lkZWQgYXQgYm90aCBm cmVlKCkgYW5kIGFsbG9jKCkuDQo+IEhlcmUgaXMgYSBjb25jZXB0dWFsIGV4YW1wbGUgKHVzaW5n IG0tPnJlZmNudD09MSBmb3IgIm9uZSIpOg0KPiA+DQo+IFllcywgSSBhZ3JlZSB3aXRoIHlvdSBv biB0aGlzLg0KPiANCj4gPiB2b2lkIF9fcnRlX21idWZfcmF3X2ZyZWUoc3RydWN0IHJ0ZV9tYnVm ICptKQ0KPiA+IHsNCj4gPiAJUlRFX0FTU0VSVChydGVfbWJ1Zl9yZWZjbnRfcmVhZChtKSA9PSAx KTsNCj4gPiAJcnRlX21lbXBvb2xfcHV0KG0tPnBvb2wsIG0pOw0KPiA+IH0NCj4gPg0KPiA+IHZv aWQgX19ydGVfcGt0bWJ1Zl9mcmVlX3NlZ19pbm5lcihzdHJ1Y3QgcnRlX21idWYgKm0pDQo+ID4g ew0KPiA+IAkvKiBpZiB0aGlzIGlzIGFuIGluZGlyZWN0IG1idWYsIGl0IGlzIGRldGFjaGVkLiAq Lw0KPiA+IAlpZiAoUlRFX01CVUZfSU5ESVJFQ1QobSkpDQo+ID4gCQlydGVfcGt0bWJ1Zl9kZXRh Y2gobSk7DQo+ID4gCW0tPm5leHQgPSBOVUxMOyAvKiBQcmVsb2FkIHRvIGF2b2lkIHNldHRpbmcg aW4gYWxsb2MoKS4gKi8NCj4gPiAJX19ydGVfbWJ1Zl9yYXdfZnJlZShtKTsNCj4gPiB9DQo+ID4N Cj4gPiB2b2lkIHJ0ZV9wa3RtYnVmX2ZyZWVfc2VnKHN0cnVjdCBydGVfbWJ1ZiAqbSkNCj4gPiB7 DQo+ID4gCWlmIChsaWtlbHkocnRlX21idWZfcmVmY250X3JlYWQobSkgPT0gMSkpIHsNCj4gPiAJ CS8qIFdlIGhhdmUgdGhlIGxhc3QgcmVmZXJlbmNlLCBzbyB3ZSByZXR1cm4gaXQgdG8gdGhlIGZy ZWUgcG9vbC4gKi8NCj4gPiAJCV9fcnRlX3BrdG1idWZfZnJlZV9zZWdfaW5uZXIobSk7DQo+ID4g CX0gZWxzZSB7DQo+ID4gCQkvKiBNb3JlIHJlZmVyZW5jZXMsIHNvIGRlY3JlbWVudCB0aGUgcmVm Y250LiAqLw0KPiA+IAkJaWYgKHVubGlrZWx5KHJ0ZV9tYnVmX3JlZmNudF91cGRhdGUobSwgLTEp ID09IDApKSB7DQo+ID4gCQkJLyogU29tZW9uZSByYWNlZCB0byBkZWNyZW1lbnQgdGhlIHJlZmNu dCBiZWZvcmUgdXMsDQo+ID4gCQkJICAgc28gbm93IHdlIGhhdmUgdGhlIGxhc3QgcmVmZXJlbmNl LA0KPiA+IAkJCSAgIHNvIHdlIHJldHVybiBpdCB0byB0aGUgZnJlZSBwb29sLiAqLw0KPiA+IAkJ ICAgIHJ0ZV9tYnVmX3JlZmNudF9zZXQobSwgMSk7IC8qIFByZWxvYWQgdG8gYXZvaWQgaW4gYWxs b2MoKS4gKi8NCj4gPiAJCQlfX3J0ZV9wa3RtYnVmX2ZyZWVfc2VnX2lubmVyKG0pOw0KPiA+IAkJ fQ0KPiA+IAl9DQo+ID4gfQ0KPiA+DQo+ID4NCj4gPiA+IEFsc28sIGlmIHdlIHNldCByZWZjbnQg b24gZnJlZSByYXRoZXIgdGhhbiBhbGxvYywgaXQgZG9lcyBzZXQgaXRzZWxmIHVwDQo+ID4gPiBh cyBhIGdvb2QgY2FuZGlkYXRlIGZvciBtb3ZpbmcgdG8gdGhlIHNlY29uZCBjYWNoZWxpbmUuIEZh c3QtcGF0aA0KPiA+ID4gcHJvY2Vzc2luZyBkb2VzIG5vdCBub3JtYWxseSB1cGRhdGUgdGhlIHZh bHVlLg0KPiA+ID4NCj4gPiBBZ3JlZWQuIEJ1dCBhbHNvIGNvbnNpZGVyIHRoYXQgVFggaGFuZGxp bmcgc2hvdWxkIGJlIG9wdGltaXplZCB0b28uIEFuZCB0aGlzIGluY2x1ZGVzIGZyZWUoKSBwcm9j ZXNzaW5nIGFuZCBwcmVsb2FkaW5nIHZhbHVlcyBmb3IgYWxsb2MoKTsNCj4gdGhpcyBzaG91bGQg b25seSBiZSBkb25lIGluIGZyZWUoKSBpbnN0ZWFkIG9mIGFsbG9jKCkgaWYgaXQgcHJvdmlkZXMg YSB0b3RhbCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4gV2Ugc2hvdWxkIG5vdCBpbXByb3ZlIFJY IGhhbmRsaW5nDQo+IHBlcmZvcm1hbmNlIGlmIHRoZSBUWCBoYW5kbGluZyBwZXJmb3JtYW5jZSBk ZWNyZWFzZXMgbXVjaCBtb3JlLg0KPiANCj4gQWdyZWVkLg0KPiA+DQo+ID4NCj4gPiA+ID4gPiA1 Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQW5kIGhlcmXigJlzIHNvbWV0aGluZyBuZXcgdG8gdGhp bmsgYWJvdXQ6DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBtLT5uZXh0IGFscmVhZHkgcmV2ZWFscyBp ZiB0aGVyZSBhcmUgbW9yZSBzZWdtZW50cyB0byBhIHBhY2tldC4gV2hpY2gNCj4gPiA+IHB1cnBv c2UgZG9lcyBtLT5uYl9zZWdzIHNlcnZlIHRoYXQgaXMgbm90IGFscmVhZHkgY292ZXJlZCBieSBt LT5uZXh0Pw0KPiA+ID4NCj4gPiA+IEl0IGlzIGR1cGxpY2F0ZSBpbmZvLCBidXQgbmJfc2VncyBj YW4gYmUgdXNlZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YNCj4gPiA+IHRoZSBuZXh0IHBvaW50 ZXIgd2l0aG91dCBoYXZpbmcgdG8gcmVhZCB0aGUgc2Vjb25kIG1idWYgY2FjaGVsaW5lLg0KPiA+ ID4NCj4gPiA+IFdoZXRoZXIgaXQncyB3b3J0aCBoYXZpbmcgaXMgc29tZXRoaW5nIEknbSBoYXBw eSBlbm91Z2ggdG8gZGlzY3VzcywNCj4gPiA+IHRob3VnaC4NCj4gPiBJZiBhbnlib2R5IG5lZWRz IHRvIGNoZWNrIGZvciBhZGRpdGlvbmFsIHNlZ21lbnRzIChtLT5uZXh0ICE9IE5VTEwpIHdpdGhv dXQgaGl0dGluZyB0aGUgc2Vjb25kIGNhY2hlIGxpbmUsIGEgc2luZ2xlIGJpdCBpbiB0aGUgZmly c3QgY2FjaGUNCj4gbGluZSB3aWxsIHN1ZmZpY2UuIChJZiB0aGlzIGlzIGEgY29tbW9uIGNhc2Us IHRoZXkgcHJvYmFibHkgbmVlZCB0byByZWFkIHRoZSBtLT5uZXh0IHZhbHVlIGFueXdheSwgYW5k IHRoZW4gaXQgd291bGQgb3B0aW1hbGx5IGJlbG9uZyBpbiB0aGUNCj4gZmlyc3QgY2FjaGUgbGlu ZS4gSSBhbSBqdXN0IG1lbnRpb25pbmcgdGhpcy4gSXQncyBub3QgbXkgcHJlZmVyZW5jZS4pDQo+ ID4NCj4gPg0KPiA+ID4gT25lIG90aGVyIHBvaW50IEknbGwgbWVudGlvbiBpcyB0aGF0IHdlIG5l ZWQgdG8gaGF2ZSBhIGRpc2N1c3Npb24gb24NCj4gPiA+IGhvdy93aGVyZSB0byBhZGQgaW4gYSB0 aW1lc3RhbXAgdmFsdWUgaW50byB0aGUgbWJ1Zi4gUGVyc29uYWxseSwgSSB0aGluaw0KPiA+ID4g aXQgY2FuIGJlIGluIGEgdW5pb24gd2l0aCB0aGUgc2VxdWVuY2UgbnVtYmVyIHZhbHVlLCBidXQg SSBhbHNvIHN1c3BlY3QNCj4gPiA+IHRoYXQgMzItYml0cyBvZiBhIHRpbWVzdGFtcCBpcyBub3Qg Z29pbmcgdG8gYmUgZW5vdWdoIGZvciBtYW55Lg0KPiA+ID4NCj4gPiA+IFRob3VnaHRzPw0KPiA+ IFNwZWFraW5nIGZvciBteXNlbGYsIGEgaGlnaCByZXNvbHV0aW9uIFJYIHRpbWVzdGFtcCBpcyAi bmljZSB0byBoYXZlIiwgc28gSSBsaWtlIGl0LCBidXQgSSB3b3VsZCBoYXRlIHRvIHNhY3JpZmlj ZSB0aGUgc2VxdWVuY2UgbnVtYmVyIGZvciBpdC4NCj4gR2VuZXJhbGx5LCBJIHdvdWxkIGFzc3Vt ZSB0aGF0IHRoZSBzZXF1ZW5jZSBudW1iZXIgdXNlZCBmb3IgcmVvcmRlcmluZyBpcyBtb3JlIGlt cG9ydGFudCB0aGFuIGEgdGltZXN0YW1wLCBleGNlcHQgZm9yIGFwcGxpY2F0aW9ucw0KPiBkZWFs aW5nIHdpdGggdGltaW5nIG1lYXN1cmVtZW50cyBvciBoaWdoIHByZWNpc2lvbiBwYWNrZXQgY2Fw dHVyaW5nLg0KPiA+DQo+ID4gQ29udmVyc2lvbiBvZiB0aW1lc3RhbXBzIGZyb20gb25lIHVuaXQg dG8gYW5vdGhlciBjYW4gYmUgcmVsYXRpdmVseSBleHBlbnNpdmUsIHNvIEkgcmVjb21tZW5kIGtl ZXBpbmcgdGltZXN0YW1wcyBpbiB3aGF0ZXZlcg0KPiByZXNvbHV0aW9uIHRoZSBOSUMgaGFyZHdh cmUgcHJvdmlkZXMsIGxlYXZpbmcgdGhlIGNvbnZlcnNpb24gdG8gZS5nLiBuYW5vc2Vjb25kcyB1 cCB0byB0aGUgYXBwbGljYXRpb25zIHRoYXQgdXNlIHRpbWVzdGFtcHMuIEEgbG90IG9mDQo+IHBy b3RvY29scyB1c2Ugb3BhcXVlIHRpbWVzdGFtcHMsIGUuZy4gUlRQLCBzbyB0aGlzIHdvdWxkIG5v dCBiZSBleGNlcHRpb25hbC4gU2luY2UgdGhlIHRpbWVzdGFtcCBiZWxvbmdzIGluIHRoZSBmaXJz dCBjYWNoZSBsaW5lLCBJIHN1Z2dlc3QNCj4gd2UgbGltaXQgaXQgdG8gMzIgYml0LiBUaGlzIGNh biBiZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgMzIgYml0IG9mIGEgNjQgYml0IE5JQyBoYXJkd2Fy ZSB0aW1lc3RhbXAsIGxlYXZpbmcgaXQgdXAgdG8gdGhlIGFwcGxpY2F0aW9uIHRvIGtlZXAgdHJh Y2sNCj4gb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMzIgYml0IGJ5IHNvbWUgb3RoZXIgbWVhbnMu IElmIGl0J3MgY291bnRpbmcgbmFub3NlY29uZHMsIDMyIGJpdCBjYW4gaG9sZCA0IHNlY29uZHMu DQo+ID4NCj4gDQo+IEkgd29ycnkgdGhhdCAzMi1iaXRzIGlzIG5vdCBlbm91Z2guIElmIHdlIGRv IHVzZSBhIDMyLWJpdCB2YWx1ZSwgSSBhbHNvDQo+IHRoaW5rIHRoYXQgaW4gbWFueSBjYXNlcyB3 ZSBjYW4ndCBqdXN0IHRha2UgdGhlIGxvdyAzMi1iaXRzLiBGb3IgYSAyR0h6DQo+IElBIENQVSB0 aGUgcmR0c2MoKSB2YWx1ZSB3b3VsZCB3cmFwIGFyb3VuZCBpbiBqdXN0IDIgc2Vjb25kcyBpZg0K PiB0cnVuY2F0ZWQgdG8gMzIgYml0cywgZm9yIGluc3RhbmNlLiBJbiBhIGNhc2UgbGlrZSB0aGF0 LCB3ZSBtYXkgYmUNCj4gYmV0dGVyIHRvIHRha2UgMzItYml0cyBmcm9tIHNvbWV3aGVyZSBpbiB0 aGUgbWlkZGxlIC0gdHJhZGluZyBhY2N1cmFjeQ0KPiBmb3IgYmV0dGVyIHdyYXAtYXJvdW5kIHRp bWUuDQoNCkkgYWxzbyB0aGluayB0aGF0IDMyYml0IGZvciB0aW1lc3RhbXBzIHdvdWxkIG5vdCBi ZSBlbm91Z2guDQpUaG91Z2ggYXMgd2UgYWdyZWUgdGhhdCBmaXJzdCBjYWNoZSBsaW5lIHNob3Vs ZCBiZSBmb3IgZmllbGRzIGZpbGxlZCBieSBmYXN0LXBhdGggUlgsDQpJIHN1cHBvc2UgdGltZXN0 YW1wIChhbmQgc2Vxbikgc2hvdWxkIGJlIGluIHRoZSBzZWNvbmQgbGluZSBhbmQgc2hvdWxkbid0 IGJlIGZpbGxlZCBieSBQTUQgaXRzZWxmLg0KQWJvdXQgd2hhdCBzaG91bGQgYmUgc3RvcmVkIGhl cmUgKHRzYyB2YWx1ZS9zeXN0ZW0gY2xvY2sgaW4gbnMvc29tZXRoaW5nIGVsc2UpIC0NCkkgdGhp bmsgaXQgaXMgYmV0dGVyIGxlZnQgdG8gcGFydGljdWxhciBTVyB0aGF0IHdvdWxkIGZpbGwvdXNl IHRoYXQgZmllbGQgdG8gZGVjaWRlLg0KRm9yIG1lIHBlcnNvbmFsbHkgdHNjIHNlZW1zIGxpa2Ug dGhlIG1vc3QgYXBwcm9wcmlhdGUuDQpLb25zdGFudGluDQoNCg==