From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 492FEA034C; Wed, 9 Nov 2022 12:42:42 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F093F400EF; Wed, 9 Nov 2022 12:42:41 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 2A94A400D4 for ; Wed, 9 Nov 2022 12:42:40 +0100 (CET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: FW: [PATCH v4 3/3] mempool: use cache for frequently updated stats Date: Wed, 9 Nov 2022 12:42:33 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D874A6@smartserver.smartshare.dk> In-Reply-To: <29e077d6e6444999b01c04c598e763b8@huawei.com> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: FW: [PATCH v4 3/3] mempool: use cache for frequently updated stats Thread-Index: AQHY8EWGJHVmHQn4qECYwEvekL7ida40xLXwgAAcq8CAAAcqEIAAEz2AgAAQHICAABangIAAAkcAgAArPdCAAKWUAIAAQX8AgAAocrCAABBq0A== References: <98CBD80474FA8B44BF855DF32C47DC35D874A1@smartserver.smartshare.dk> <6110999.17fYzF0512@thomas> <98CBD80474FA8B44BF855DF32C47DC35D874A3@smartserver.smartshare.dk> <2028060.trqCLbgVIZ@thomas> <74775cadd8174c3797b4076929ebbcb7@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35D874A4@smartserver.smartshare.dk> <29e077d6e6444999b01c04c598e763b8@huawei.com> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Konstantin Ananyev" , =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "Bruce Richardson" , "Thomas Monjalon" Cc: , , , , , , X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBGcm9tOiBLb25zdGFudGluIEFuYW55ZXYgW21haWx0bzprb25zdGFudGluLmFuYW55ZXZAaHVh d2VpLmNvbV0NCj4gU2VudDogV2VkbmVzZGF5LCA5IE5vdmVtYmVyIDIwMjIgMTEuMjANCj4gDQo+ ID4gT24gMjAyMi0xMS0wOSAwNjowMywgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4gPj4gRnJv bTogS29uc3RhbnRpbiBBbmFueWV2IFttYWlsdG86a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5j b21dDQo+ID4gPj4gU2VudDogVHVlc2RheSwgOCBOb3ZlbWJlciAyMDIyIDE4LjM4DQo+ID4gPj4+ DQo+ID4gPj4+IE9uIFR1ZSwgTm92IDA4LCAyMDIyIGF0IDA0OjUxOjExUE0gKzAxMDAsIFRob21h cyBNb25qYWxvbiB3cm90ZToNCj4gPiA+Pj4+IDA4LzExLzIwMjIgMTU6MzAsIE1vcnRlbiBCcsO4 cnVwOg0KPiA+ID4+Pj4+PiBGcm9tOiBUaG9tYXMgTW9uamFsb24gW21haWx0bzp0aG9tYXNAbW9u amFsb24ubmV0XQ0KPiA+ID4+Pj4+PiAwOC8xMS8yMDIyIDEyOjI1LCBNb3J0ZW4gQnLDuHJ1cDoN Cj4gPiA+Pj4+Pj4+IEZyb206IE1vcnRlbiBCcsO4cnVwDQo+ID4gPj4+Pj4+Pj4gRnJvbTogS29u c3RhbnRpbiBBbmFueWV2DQo+ID4gPj4gW21haWx0bzprb25zdGFudGluLmFuYW55ZXZAaHVhd2Vp LmNvbV0NCj4gPiA+Pj4+Pj4+PiBTZW50OiBUdWVzZGF5LCA4IE5vdmVtYmVyIDIwMjIgMTAuMjAN Cj4gPiA+Pj4+Pj4+Pj4gKyNpZmRlZiBSVEVfTElCUlRFX01FTVBPT0xfU1RBVFMNCj4gPiA+Pj4+ Pj4+Pj4gKyNkZWZpbmUgUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIG5hbWUsIG4p DQo+ID4gPj4gKGNhY2hlKS0NCj4gPiA+Pj4+Pj4+IGh0dHBzOi8vcHJvdGVjdDIuZmlyZWV5ZS5j b20vdjEvdXJsP2s9MzEzMjMzMzQtNTAxZDUxMjItDQo+IDMxMzI3M2FmLTQ1NDQ0NTU1NTczMS0y N2E4NTllN2VjMTMwMzVhJnE9MSZlPWExMjBlMjhlLQ0KPiA+IGNhYTctNDc4My05Njg2LTU4Njhj ODcxNTUzZCZ1PWh0dHAlM0ElMkYlMkZzdGF0cy5uYW1lJTJGICs9IG4NCj4gPiA+Pj4+Pj4+Pg0K PiA+ID4+Pj4+Pj4+IEFzIEFuZHJldyBhbHJlYWR5IHBvaW50ZWQsIGl0IG5lZWRzIHRvIGJlOiAo KGNhY2hlKS0NCj4gPiA+Pj4gaHR0cHM6Ly9wcm90ZWN0Mi5maXJlZXllLmNvbS92MS91cmw/az0z MTMyMzMzNC01MDFkNTEyMi0zMTMyNzNhZi0NCj4gNDU0NDQ1NTU1NzMxLTI3YTg1OWU3ZWMxMzAz NWEmcT0xJmU9YTEyMGUyOGUtY2FhNy0NCj4gPiA0NzgzLTk2ODYtNTg2OGM4NzE1NTNkJnU9aHR0 cCUzQSUyRiUyRnN0YXRzLm5hbWUlMkYgKz0NCj4gPiA+Pj4+Pj4gKG4pKQ0KPiA+ID4+Pj4+Pj4+ IEFwYXJ0IGZyb20gdGhhdCwgTEdUTS4NCj4gPiA+Pj4+Pj4+PiBTZXJpZXMtQWNrZWQtYnk6IEtv bnN0YW50aW4gQW5hbnlldg0KPiA+ID4+IDxrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbT4N Cj4gPiA+Pj4+Pj4+DQo+ID4gPj4+Pj4+PiBAVGhvbWFzLCB0aGlzIHNlcmllcyBzaG91bGQgYmUg cmVhZHkgdG8gYXBwbHkuLi4gaXQgbm93IGhhcw0KPiA+ID4+IGJlZW46DQo+ID4gPj4+Pj4+PiBS ZXZpZXdlZC1ieTogKG1lbXBvb2wgbWFpbnRhaW5lcikgQW5kcmV3IFJ5YmNoZW5rbw0KPiA+ID4+ Pj4+PiA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+ID4gPj4+Pj4+PiBSZXZpZXdl ZC1CeTogTWF0dGlhcyBSw7ZubmJsb20gPG1hdHRpYXMucm9ubmJsb21AZXJpY3Nzb24uY29tPg0K PiA+ID4+Pj4+Pj4gQWNrZWQtYnk6IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFu eWV2QGh1YXdlaS5jb20+DQo+ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+IEJlaW5nIGFja2VkIGRvZXMg bm90IG1lYW4gaXQgaXMgZ29vZCB0byBhcHBseSBpbiAtcmMzLg0KPiA+ID4+Pj4+DQo+ID4gPj4+ Pj4gSSB1bmRlcnN0YW5kIHRoYXQgdGhlIFJGQy92MSBvZiB0aGlzIHNlcmllcyB3YXMgZm9ybWFs bHkgdG9vDQo+IGxhdGUNCj4gPiA+PiB0byBtYWtlIGl0IGluIDIyLjExLCBzbyBJIHdpbGwgbm90 IGNvbXBsYWluIGxvdWRseSBpZiB5b3UgY2hvb3NlDQo+IHRvDQo+ID4gPj4+IG9taXQgaXQgZm9y IDIyLjExLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gV2l0aCB0d28gaW5kZXBlbmRlbnQgcmV2aWV3 cywgaW5jbHVkaW5nIGZyb20gYSBtZW1wb29sDQo+ID4gPj4gbWFpbnRhaW5lciwgSSBzdGlsbCBo YXZlIHNvbWUgaG9wZS4gQWxzbyBjb25zaWRlcmluZyB0aGUgcmlzaw0KPiA+ID4+IGFzc2Vzc21l bnQNCj4gPiA+Pj4gYmVsb3cuIDstKQ0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+IFBsZWFzZSB0ZWxs IHdoYXQgaXMgdGhlIGJlbmVmaXQgZm9yIDIyLjExIChiZWZvcmUvYWZ0ZXIgYW5kDQo+ID4gPj4g Y29uZGl0aW9uKS4NCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IFNob3J0IHZlcnNpb246IFdpdGggdGhp cyBzZXJpZXMsIG1lbXBvb2wgc3RhdGlzdGljcyBjYW4gYmUgdXNlZA0KPiA+ID4+IGluIHByb2R1 Y3Rpb24uIFdpdGhvdXQgaXQsIHRoZSBwZXJmb3JtYW5jZSBjb3N0DQo+ID4gPj4+IChtZW1wb29s X3BlcmZfYXV0b3Rlc3Q6IC03NCAlKSBpcyBwcm9oaWJpdGl2ZSENCj4gPiA+Pj4+Pg0KPiA+ID4+ Pj4+IExvbmcgdmVyc2lvbjoNCj4gPiA+Pj4+Pg0KPiA+ID4+Pj4+IFRoZSBwYXRjaCBzZXJpZXMg cHJvdmlkZXMgc2lnbmlmaWNhbnRseSBoaWdoZXIgcGVyZm9ybWFuY2UgZm9yDQo+ID4gPj4gbWVt cG9vbCBzdGF0aXN0aWNzLCB3aGljaCBhcmUgcmVhZGFibGUgdGhyb3VnaA0KPiA+ID4+PiBydGVf bWVtcG9vbF9kdW1wKEZJTEUgKmYsIHN0cnVjdCBydGVfbWVtcG9vbCAqbXApLg0KPiA+ID4+Pj4+ DQo+ID4gPj4+Pj4gV2l0aG91dCB0aGlzIHNlcmllcywgeW91IGhhdmUgdG8gc2V0IFJURV9MSUJS VEVfTUVNUE9PTF9ERUJVRw0KPiBhdA0KPiA+ID4+IGJ1aWxkIHRpbWUgdG8gZ2V0IG1lbXBvb2wg c3RhdGlzdGljcy4NCj4gPiA+Pj4gUlRFX0xJQlJURV9NRU1QT09MX0RFQlVHIGFsc28gZW5hYmxl cyBwcm90ZWN0aXZlIGNvb2tpZXMgYmVmb3JlDQo+IGFuZA0KPiA+ID4+IGFmdGVyIGVhY2ggbWVt cG9vbCBvYmplY3QsIHdoaWNoIGFyZSBhbGwgdmVyaWZpZWQgb24NCj4gPiA+Pj4gZ2V0L3B1dCBm cm9tIHRoZSBtZW1wb29sLiBBY2NvcmRpbmcgdG8gbWVtcG9vbF9wZXJmX2F1dG90ZXN0LCB0aGUN Cj4gPiA+PiBwZXJmb3JtYW5jZSBjb3N0IG9mIG1lbXBvb2wgc3RhdGlzdGljcyAoYnkgc2V0dGlu Zw0KPiA+ID4+PiBSVEVfTElCUlRFX01FTVBPT0xfREVCVUcpIGlzIGEgNzQgJSBkZWNyZWFzZSBp biByYXRlX3BlcnNlYyBmb3INCj4gPiA+PiBtZW1wb29scyB3aXRoIGNhY2hlIChpLmUuIG1idWYg cG9vbHMpLiBQcm9oaWJpdGl2ZSBmb3IgdXNlIGluDQo+ID4gPj4+IHByb2R1Y3Rpb24hDQo+ID4g Pj4+Pj4NCj4gPiA+Pj4+PiBXaXRoIHRoaXMgc2VyaWVzLCB0aGUgcGVyZm9ybWFuY2UgY29zdCBv ZiBtZW1wb29sIHN0YXRpc3RpY3MNCj4gKGJ5DQo+ID4gPj4gc2V0dGluZyBSVEVfTElCUlRFX01F TVBPT0xfU1RBVFMpIGluDQo+ID4gPj4+IG1lbXBvb2xfcGVyZl9hdXRvdGVzdCBpcyBvbmx5IDYu NyAlLCBzbyBtZW1wb29sIHN0YXRpc3RpY3MgY2FuIGJlDQo+ID4gPj4gdXNlZCBpbiBwcm9kdWN0 aW9uLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4+IE5vdGUgdGhlcmUgaXMgYSByZWFsIHJpc2sgZG9p bmcgc3VjaCBjaGFuZ2UgdGhhdCBsYXRlLg0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gUmlzayBhc3Nl c3NtZW50Og0KPiA+ID4+Pj4+DQo+ID4gPj4+Pj4gVGhlIHBhdGNoIHNlcmllcyBoYXMgemVybyBl ZmZlY3QgdW5sZXNzIGVpdGhlcg0KPiA+ID4+IFJURV9MSUJSVEVfTUVNUE9PTF9ERUJVRyBvciBS VEVfTElCUlRFX01FTVBPT0xfU1RBVFMgYXJlIHNldCB3aGVuDQo+ID4gPj4+IGJ1aWxkaW5nLiBU aGV5IGFyZSBub3Qgc2V0IGluIHRoZSBkZWZhdWx0IGJ1aWxkLg0KPiA+ID4+Pj4NCj4gPiA+Pj4+ IElmIHRoZXNlcyBidWlsZCBmbGFncyBhcmUgbm90IHNldCwgdGhlcmUgaXMgbm8gcmlzayBhbmQg bm8NCj4gYmVuZWZpdC4NCj4gPiA+Pj4+IEJ1dCBpZiB0aGV5IGFyZSBzZXQsIHRoZXJlIGlzIGEg cmlzayBvZiByZWdyZXNzaW9uLA0KPiA+ID4+Pj4gZm9yIHRoZSBiZW5lZml0IG9mIGFuIGluY3Jl YXNlZCBwZXJmb3JtYW5jZSBvZiBhIGRlYnVnIGZlYXR1cmUuDQo+ID4gPj4+PiBJIHdvdWxkIHNh eSBpdCBpcyBiZXR0ZXIgdG8gYXZvaWQgYW55IGZ1bmN0aW9uYWwgcmVncmVzc2lvbiBpbiBhDQo+ ID4gPj4gZGVidWcgZmVhdHVyZQ0KPiA+ID4+Pj4gYXQgdGhpcyBzdGFnZS4NCj4gPiA+Pj4+IEFu eSBvdGhlciBvcGluaW9uPw0KPiA+ID4+Pj4NCj4gPiA+Pj4gV2hpbGUgSSBhZ3JlZSB0aGF0IHdl IHNob3VsZCBhdm9pZCBhbnkgZnVuY3Rpb25hbCByZWdyZXNzaW9uLCBJDQo+ID4gPj4gd29uZGVy IGhvdw0KPiA+ID4+PiB3aWRlbHkgdXNlZCB0aGUgZGVidWcgZmVhdHVyZSBpcywgYW5kIGhvdyBi aWcgdGhlIHJpc2sgb2YgYQ0KPiA+ID4+IHJlZ3Jlc3Npb24gaXM/DQo+ID4gPj4+IEV2ZW4gaWYg dGhlcmUgaXMgb25lLCBoYXZpbmcgYSByZWdyZXNzaW9uIGluIGEgZGVidWcgZmVhdHVyZSBpcyBh DQo+IGxvdA0KPiA+ID4+IGxlc3MNCj4gPiA+Pj4gc2VyaW91cyB0aGFuIGhhdmluZyBvbmUgaW4g c29tZXRoaW5nIHdoaWNoIGdvZXMgaW50byBwcm9kdWN0aW9uLg0KPiA+ID4+Pg0KPiA+ID4+DQo+ ID4gPj4gVW5sZXNzIGl0IGludHJvZHVjZXMgYW4gQUJJIGJyZWFrYWdlIChhcyBJIHVuZGVyc3Rh bmQgaXQgZG9lc24ndCksDQo+IEknbGwNCj4gPiA+PiB3YWl0IHRpbGwgMjMuMDMuDQo+ID4gPj4g SnVzdCBpbiBjYXNlLg0KPiA+ID4NCj4gPiA+IElmIGJ1aWx0IChib3RoIGJlZm9yZSBhbmQgYWZ0 ZXIgdGhpcyBzZXJpZXMpIHdpdGhvdXQNCj4gUlRFX0xJQlJURV9NRU1QT09MX0RFQlVHIChhbmQg d2l0aG91dCBSVEVfTElCUlRFX01FTVBPT0xfU1RBVFMsDQo+ID4gd2hpY2ggaXMgaW50cm9kdWNl ZCBieSB0aGUgc2VyaWVzKSwgdGhlcmUgaXMgbm8gQUJJIGJyZWFrYWdlLg0KPiA+ID4NCj4gPiA+ IElmIGJ1aWx0IChib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBzZXJpZXMpIHdpdGgNCj4gUlRF X0xJQlJURV9NRU1QT09MX0RFQlVHIChhbmQgd2l0aG91dCBSVEVfTElCUlRFX01FTVBPT0xfU1RB VFMpLCB0aGUNCj4gPiBBQkkgZGlmZmVycyBiZXR3ZWVuIGJlZm9yZSBhbmQgYWZ0ZXIgdGhpcyBz ZXJpZXM6IFRoZSBzdGF0cyBhcnJheQ0KPiBkaXNhcHBlYXJzIGZyb20gc3RydWN0IHJ0ZV9tZW1w b29sLCBhbmQgdGhlIG91dHB1dCBmcm9tDQo+ID4gcnRlX21lbXBvb2xfZHVtcCgpIGRvZXMgbm90 IGluY2x1ZGUgdGhlIHN0YXRpc3RpY3MuDQo+ID4gPg0KPiANCj4gQ2FuIHdlIHByb2JhYmx5IGFs d2F5cyBlbmFibGUgUlRFX0xJQlJURV9NRU1QT09MX1NUQVRTIHdoZW4NCj4gUlRFX0xJQlJURV9N RU1QT09MX0RFQlVHIGlzIG9uPw0KDQpUaGF0IHdvdWxkIGZpeCB0aGUgcnRlX21lbXBvb2xfZHVt cCgpIEFQSSBicmVha2FnZSwgeWVzLg0KDQpCdXQgc2luY2UgaXQncyBvbmx5IGEgcGFydGlhbCBm aXgsIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIGRvIGl0Lg0KDQo+IA0KPiA+ID4gSWYgYnVpbHQg KGJvdGggYmVmb3JlIGFuZCBhZnRlciB0aGlzIHNlcmllcykgd2l0aA0KPiBSVEVfTElCUlRFX01F TVBPT0xfREVCVUcgKGFuZCB3aXRoIFJURV9MSUJSVEVfTUVNUE9PTF9TVEFUUyksIHRoZSBBQkkN Cj4gPiBhbHNvIGRpZmZlcnMgYmV0d2VlbiBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgc2VyaWVzOiBU aGUgc2l6ZSBvZiB0aGUNCj4gc3RhdHMgYXJyYXkgaW4gc3RydWN0IHJ0ZV9tZW1wb29sIGdyb3dz IGJ5IG9uZSBlbGVtZW50Lg0KPiANCj4gQWggeWVzLCBtaXNzZWQgdGhhdCBvbmUuDQo+IFNvIHRo ZSBxdWVzdGlvbiBpcyB0aGVuIC0gZG9lcyBpdCBjb3VudCBhcyBmb3JtYWwgQUJJIGJyZWFrYWdl IG9yIG5vdD8NCg0KWWVzLCB0aGlzIGlzIGEga2V5IHF1ZXN0aW9uIQ0KDQpIb3dldmVyLCBwZXJm b3JtYW5jZSBpbXByb3ZlbWVudHMgYXJlIG5vdCBhY2NlcHRlZCBhcyBMVFMgcGF0Y2hlcywgc28g bm90IGluY2x1ZGluZyBpdCBpbiAtcmMzIHdpbGwgbWFrZSBpdCB1c2VsZXNzIHVudGlsIDIzLjEx LiAoQXQgbGVhc3QgZm9yIHVzZXJzIGRlcGxveWluZyBvbmx5IExUUyByZWxlYXNlcy4pDQoNCj4g SWYgeWVzLCB0aGVuIHByb2JhYmx5IGJldHRlciB0byBnbyBhaGVhZCB3aXRoIHRoZXNlIGNoYW5n ZXMgZm9yIDIyLjExDQo+IChpdCBzb3VuZHMgdG9vIHByb2hpYml0aXZlIHRvIHdhaXQgZm9yIGFu IHllYXIgaGVyZSkuDQo+IE9yIGF0IGxlYXN0IHRha2UgaW4gdGhlIHBhcnQgdGhhdCBpbnRyb2R1 Y2UgdGhlIEFCSSBicmVha2FnZS4NCg0KV2l0aG91dCB0aGUgM3JkIHBhdGNoIGluIHRoZSBzZXJp ZXMsIHRoZSBwZXJmb3JtYW5jZSBpcyBub3QgZnVsbHkgb3B0aW1pemVkLiAoUmVtZW1iZXI6IE9u bHkgcmVsZXZhbnQgd2hlbiBidWlsdCB3aXRoIFJURV9MSUJSVEVfTUVNUE9PTF9TVEFUUy4pDQoN Cj4gSWYgbm90LCBwcm9iYWJseSBub3QgYml0IGRlYWwgdG8gd2FpdCB0aWxsIDIzLjAzLg0KPiAN Cj4gPiA+PiBCVFcsIGFzIGEgc2lkZSB0aG91Z2h0IC0gaWYgdGhlIGltcGFjdCBpcyByZWFsbHkg dGhhdCBzbWFsbCBub3csDQo+IHdvdWxkDQo+ID4gPj4gaXQgbWFrZSBzZW5zZSB0byBtYWtlDQo+ ID4gPj4gaXQgcnVuLXRpbWUgb3B0aW9uLCBpbnN0ZWFkIG9mIGNvbXBpbGUtdGltZSBvbmU/DQo+ ID4gPg0KPiA+ID4gVGhlIG1lbXBvb2wgZ2V0L3B1dCBmdW5jdGlvbnMgYXJlIHZlcnkgbGVhbiB3 aGVuIGJ1aWx0IHdpdGhvdXQNCj4gU1RBVFMgb3IgREVCVUcuIFdpdGggYSBydW50aW1lIG9wdGlv biwgdGhlIHJlc3VsdGluZyBjb2RlIHdvdWxkDQo+ID4gYmUgc2xpZ2h0bHkgbG9uZ2VyLCBhbmQg b25seSBvbmUgYWRkaXRpb25hbCBjb25kaXRpb25hbCB3b3VsZCBiZSBoaXQNCj4gaW4gdGhlIGNv bW1vbiBjYXNlIChpLmUuIHdoZW4gdGhlIG9iamVjdHMgZG9uJ3QgbWlzcyB0aGUgbWVtcG9vbA0K PiA+IGNhY2hlKS4gU28gd2l0aCBzdGF0cyBkaXNhYmxlZCAoYXQgcnVudGltZSksIGl0IHdvdWxk IG9ubHkgYWRkIGEgdmVyeQ0KPiBzbWFsbCBwZXJmb3JtYW5jZSBjb3N0LiBIb3dldmVyLCBjaGVj a2luZyB0aGUgdmFsdWUgb2YgdGhlDQo+ID4gZW5hYmxlZC9kaXNhYmxlZCB2YXJpYWJsZSBjYW4g Y2F1c2UgYSBDUFUgY2FjaGUgbWlzcywgd2hpY2ggaGFzIGENCj4gcGVyZm9ybWFuY2UgY29zdC4g QW5kIHRoZSBlbmFibGVkL2Rpc2FibGVkIHZhcmlhYmxlIHNob3VsZA0KPiA+IGRlZmluaXRlbHkg YmUgZ2xvYmFsIC0gaWYgaXQgaXMgcGVyIG1lbXBvb2wsIGl0IHdpbGwgY2F1c2UgbWFueSBDUFUN Cj4gY2FjaGUgbWlzc2VzIChiZWNhdXNlIHRoZSBjb21tb24gY2FzZSBkb2Vzbid0IHRvdWNoIHRo ZSBtZW1wb29sDQo+ID4gc3RydWN0dXJlLCBvbmx5IHRoZSBtZW1wb29sIGNhY2hlIHN0cnVjdHVy ZSkuDQo+ID4gPg0KPiANCj4gWWVzLCBlaXRoZXIgYSBnbG9iYWwgb25lLCBvciBwdXQgaXQgaW50 byBib3RoIHN0cnVjdHM6DQo+IHJ0ZV9tZW1wb29sX2NhY2hlIGFuZCBydGVfbWVtcG9vbC4NCg0K VGhhdCBpcyBkb2FibGUuIFRoZXJlIGlzIHJvb20gZm9yIGl0IGluIHJ0ZV9tZW1wb29sX2NhY2hl LCBhbmQgaXQgY2FuIGJlIGEgZmxhZyBpbiBydGVfbWVtcG9vbC4NCg0KPiANCj4gPiBJdCdzIG5v dCB0b3RhbGx5IG9idmlvdXMgdGhhdCBhIGNvbmRpdGlvbmFsIGlzIGJldHRlciB0aGFuIGp1c3QN Cj4gYWx3YXlzDQo+ID4gcGVyZm9ybWluZyB0aGVzZSBzaW1wbGUgYXJpdGhtZXRpYyBvcGVyYXRp b25zLCBldmVuIGlmIHlvdSBkb24ndCBrbm93DQo+IGlmDQo+ID4geW91IG5lZWQgdGhlIHJlc3Vs dCAoaS5lLiwgaWYgc3RhdHMgaXMgZW5hYmxlZCBvciBub3QpLCBlc3BlY2lhbGx5DQo+IHNpbmNl DQo+ID4gdGhleSBvcGVyYXRlIG9uIGEgY2FjaGUgbGluZSB0aGF0IGlzIHZlcnkgbGlrZWx5IGFs cmVhZHkgb3duZWQgYnkgdGhlDQo+ID4gY29yZSBydW5uaW5nIHRoZSBjb3JlIChzaW5jZSB0aGUg J2xlbicgZmllbGRzIGlzIGZyZXF1ZW50bHkgdXNlZCkuDQo+IA0KPiBZZXAsIHRoYXQncyBhbm90 aGVyIG9wdGlvbiAtIGFsd2F5cyB1cGRhdGUgdGhlIGNhY2hlIHBhcnQuDQoNClllcywgYWx3YXlz IHVwZGF0aW5nIHRoZSBydGVfbWVtcG9vbF9jYWNoZSBzdGF0cyB0byBhdm9pZCB0aGUgY29uZGl0 aW9uYWwgaW4gdGhlIGxpa2VseSBjb2RlIHBhdGggc2VlbXMgbGlrZSBhIHZpYWJsZSBjb25jZXB0 Lg0KDQooQW5kIGZvciBub3csIHdlIGNhbiBpZ25vcmUgdGhhdCA2NCBiaXQgc3RhdHMgYXJlIHNv bWV3aGF0IG1vcmUgY29zdGx5IG9uIDMyIGJpdCBhcmNoaXRlY3R1cmVzIGlmIHRlYXJpbmcgbXVz dCBiZSBhdm9pZGVkLiBJIHNheSB0aGF0IHdlIGNhbiBpZ25vcmUgaXQgZm9yIG5vdywgYmVjYXVz ZSB0aGlzIGtpbmQgb2YgdGVhcmluZyBpcyBpZ25vcmVkIGZvciA2NCBiaXQgc3RhdHMgZXZlcnl3 aGVyZSBpbiBEUERLLCBzbyBpdCBzaG91bGQgYmUgaWdub3JhYmxlIGhlcmUgdG9vLikNCg0KPiAN Cj4gPiA+IEFsc28sIGNoZWNraW5nIHRoZSBydW50aW1lIG9wdGlvbiBzaG91bGQgaGF2ZSB1bmxp a2VseSgpLCBzbyB0aGUNCj4gcGVyZm9ybWFuY2UgY29zdCBvZiB0aGUgc3RhdHMgKHdoZW4gZW5h YmxlZCBhdCBydW50aW1lKSBpcyBhbHNvDQo+ID4gaGlnaGVyIHRoYW4gd2l0aCBhIGJ1aWxkIHRp bWUgb3B0aW9uLiAoWWVzLCBkeW5hbWljIGJyYW5jaCBwcmVkaWN0aW9uDQo+IHdpbGwgYWxsZXZp YXRlIG1vc3Qgb2YgdGhpcywgYnV0IGl0IHdpbGwgY29uc3VtZSBlbnRyaWVzIGluIHRoZQ0KPiA+ IGJyYW5jaCBwcmVkaWN0b3IgdGFibGUgLSB0aGVzZSBhcmUgaW5saW5lZCBmdW5jdGlvbnMuIEp1 c3QgbGlrZSB3ZQ0KPiBhbHdheXMgdHJ5IHRvIGF2b2lkIGNhY2hlIG1pc3NlcyBpbiBEUERLLCB3 ZSBzaG91bGQgYWxzbyB0cnkgdG8NCj4gPiBjb25zZXJ2ZSBicmFuY2ggcHJlZGljdG9yIHRhYmxl IGVudHJpZXMuIEkgaGF0ZSB0aGUgYXJndW1lbnQgdGhhdA0KPiBicmFuY2ggcHJlZGljdGlvbiBm aXhlcyBjb25kaXRpb25hbHMsIGVzcGVjaWFsbHkgaWYgdGhleSBhcmUgd2VpcmQgb3INCj4gPiBj b3VsZCBoYXZlIGJlZW4gYXZvaWRlZC4pDQo+ID4gPg0KPiA+ID4gSW4gdGhlIGNvc3QvYmVuZWZp dCBhbmFseXNpcywgd2UgbmVlZCB0byBjb25zaWRlciB0aGF0IHRoZXNlDQo+IHN0YXRpc3RpY3Mg YXJlIG5vdCBmaWxsL2VtcHRpbmVzcyBsZXZlbCBzdGF0dXMgb3Igc2ltaWxhciwgYnV0IG9ubHkN Cj4gZGVidWcNCj4gPiBjb3VudGVycyAobnVtYmVyIG9mIGdldC9wdXQgdHJhbnNhY3Rpb25zIGFu ZCBvYmplY3RzKSwgc28gd2UgbmVlZCB0bw0KPiBhc2sgb3Vyc2VsdmVzIHRoaXMgcXVlc3Rpb246 IEhvdyBtYW55IHVzZXJzIGFyZSBpbnRlcmVzdGVkIGluDQo+ID4gdGhlc2Ugc3RhdGlzdGljcyBm b3IgcHJvZHVjdGlvbiBhbmQgYXJlIHVuYWJsZSB0byBidWlsZCB0aGVpcg0KPiBhcHBsaWNhdGlv biB3aXRoIFJURV9MSUJSVEVfTUVNUE9PTF9TVEFUUz8NCj4gDQo+IE9idmlvdXNseSwgSSBkb24n dCBoYXZlIHN1Y2ggc3RhdHMuDQo+IEZyb20gbXkgcGVyc3BlY3RpdmUgLSBJIGFtIG9rIHRvIHNw ZW5kIGZldyBleHRyYSBjeWNsZXMgdG8gYXZvaWQNCj4gYnVpbGRpbmcgc2VwYXJhdGUgYmluYXJ5 Lg0KPiBBZ2FpbiwgSSBndWVzcyB0aGF0ICB3aXRoIGdsb2JhbCBzd2l0Y2ggdGhlIGltcGFjdCB3 aWxsIGJlIG5lZ2xpZ2libGUuDQo+IEJ1dCBhbnl3YXksIGl0IHdpbGwgcmVxdWlyZSBldmVuIG1v cmUgY2hhbmdlcyBhbmQgYW5vdGhlciBBQkkgYnJlYWthZ2UNCj4gKGFzIHN0YXRzIHNob3VsZCBh bHdheXMgYmUgaW5jbHVkZWQpLA0KPiBzbyBpdCBkZWZpbml0ZWx5IG91dCBvZiBzY29wZSBmb3Ig dGhpcyByZWxlYXNlLg0KDQpBZ3JlZS4gVGhpcyBzZXJpZXMgY2FuIGJlIHR3ZWFrZWQgZnVydGhl ciwgYXMgdGhlIGRpc2N1c3Npb24gY2xlYXJseSBzaG93cy4NCg0KSG93ZXZlciwgdGltZSBpcyBh Ym91dCB0byBydW4gb3V0IG9uLiBJZiB3ZSB3YW50IHRvIGluY2x1ZGUgaXQgMjIuMTEsIHdlIHNo b3VsZCB0YWtlIGl0IGludG8gLXJjMyB3aXRob3V0IGFueSBvZiB0aGUgZGlzY3Vzc2VkIG1vZGlm aWNhdGlvbnMgKGV4Y2VwdCBmaXhpbmcgdGhlIG1hY3JvIHRvIHNhdGlzZnkgY2hlY2twYXRjaCku DQoNCkZ1cnRoZXJtb3JlLCB0aGUgZGlzY3Vzc2VkIG1vZGlmaWNhdGlvbnMgLSB2YXJpb3VzIHdh eXMgb2YgaGFuZGxpbmcgYSBydW50aW1lIG9wdGlvbiAtIHdpbGwgaW50cm9kdWNlIHNvbWUgcGVy Zm9ybWFuY2UgZGVncmFkYXRpb24gd2l0aCB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9u LiBSZWdhcmRsZXNzIGhvdyBzbWFsbCB3ZSB0aGluayB0aGUgcGVyZm9ybWFuY2UgZGVncmFkYXRp b24gaXMsIEkgd291bGQgaGVzaXRhdGUgdG8gaW50cm9kdWNlIGEgcGVyZm9ybWFuY2UgZGVncmFk YXRpb24gaW4gLXJjMy4NCg0KVGhlIGN1cnJlbnQgcGF0Y2ggc2VyaWVzIGhhcyB6ZXJvIHBlcmZv cm1hbmNlIGVmZmVjdCB3aXRoIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24uDQoNCj4g DQo+ID4gPiBGb3IgZXhhbXBsZSwgd2UgKFNtYXJ0U2hhcmUgU3lzdGVtcykgYXJlIG9ubHkgaW50 ZXJlc3RlZCBpbiB0aGVtDQo+IGZvciBhcHBsaWNhdGlvbiBwcm9maWxpbmcgcHVycG9zZXMuLi4g dHJ5aW5nIHRvIGltcHJvdmUgdGhlDQo+ID4gcGVyZm9ybWFuY2UgYnkgc3RyaXZpbmcgZm9yIGEg aGlnaGVyIG51bWJlciBvZiBvYmplY3RzIHBlciBidXJzdCBpbg0KPiBldmVyeSBwaXBlbGluZSBz dGFnZS4NCj4gPiA+DQo+ID4gPj4gS29uc3RhbnRpbg0KDQo=