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 4BA66424F0; Mon, 4 Sep 2023 14:48:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 23D29402BB; Mon, 4 Sep 2023 14:48:51 +0200 (CEST) Received: from dkmailrelay1.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id BA419400EF for ; Mon, 4 Sep 2023 14:48:49 +0200 (CEST) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesys.local [192.168.4.10]) by dkmailrelay1.smartsharesystems.com (Postfix) with ESMTP id 917F120977; Mon, 4 Sep 2023 14:48:49 +0200 (CEST) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [RFC] cache guard Date: Mon, 4 Sep 2023 14:48:46 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D87B6F@smartserver.smartshare.dk> In-Reply-To: <10be7ca8-fe5a-ba24-503a-9c6ce2fef710@lysator.liu.se> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [RFC] cache guard Thread-Index: AdnfKF4hr6hbsubgTZeZ61XXGYLT/QAAuIVw References: <98CBD80474FA8B44BF855DF32C47DC35D87B39@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D87B47@smartserver.smartshare.dk> <2507011.Sgy9Pd6rRy@thomas> <98CBD80474FA8B44BF855DF32C47DC35D87B69@smartserver.smartshare.dk> <10be7ca8-fe5a-ba24-503a-9c6ce2fef710@lysator.liu.se> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= , "Thomas Monjalon" Cc: "Bruce Richardson" , , , , , , 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 PiBGcm9tOiBNYXR0aWFzIFLDtm5uYmxvbSBbbWFpbHRvOmhvZm9yc0BseXNhdG9yLmxpdS5zZV0N Cj4gU2VudDogTW9uZGF5LCA0IFNlcHRlbWJlciAyMDIzIDE0LjA3DQo+IA0KPiBPbiAyMDIzLTA5 LTAxIDIwOjUyLCBNb3J0ZW4gQnLDuHJ1cCB3cm90ZToNCj4gPj4gRnJvbTogTWF0dGlhcyBSw7Zu bmJsb20gW21haWx0bzpob2ZvcnNAbHlzYXRvci5saXUuc2VdDQo+ID4+IFNlbnQ6IEZyaWRheSwg MSBTZXB0ZW1iZXIgMjAyMyAxOC41OA0KPiA+Pg0KPiA+PiBPbiAyMDIzLTA5LTAxIDE0OjI2LCBU aG9tYXMgTW9uamFsb24gd3JvdGU6DQo+ID4+PiAyNy8wOC8yMDIzIDEwOjM0LCBNb3J0ZW4gQnLD uHJ1cDoNCj4gPj4+PiArQ0MgSG9ubmFwcGEgYW5kIEtvbnN0YW50aW4sIFJpbmcgbGliIG1haW50 YWluZXJzDQo+ID4+Pj4gK0NDIE1hdHRpYXMsIFBSTkcgbGliIG1haW50YWluZXINCj4gPj4+Pg0K PiA+Pj4+PiBGcm9tOiBCcnVjZSBSaWNoYXJkc29uIFttYWlsdG86YnJ1Y2UucmljaGFyZHNvbkBp bnRlbC5jb21dDQo+ID4+Pj4+IFNlbnQ6IEZyaWRheSwgMjUgQXVndXN0IDIwMjMgMTEuMjQNCj4g Pj4+Pj4NCj4gPj4+Pj4gT24gRnJpLCBBdWcgMjUsIDIwMjMgYXQgMTE6MDY6MDFBTSArMDIwMCwg TW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+Pj4+PiArQ0MgbWVtcG9vbCBtYWludGFpbmVycw0K PiA+Pj4+Pj4NCj4gPj4+Pj4+PiBGcm9tOiBCcnVjZSBSaWNoYXJkc29uIFttYWlsdG86YnJ1Y2Uu cmljaGFyZHNvbkBpbnRlbC5jb21dDQo+ID4+Pj4+Pj4gU2VudDogRnJpZGF5LCAyNSBBdWd1c3Qg MjAyMyAxMC4yMw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gT24gRnJpLCBBdWcgMjUsIDIwMjMgYXQg MDg6NDU6MTJBTSArMDIwMCwgTW9ydGVuIEJyw7hydXAgd3JvdGU6DQo+ID4+Pj4+Pj4+IEJydWNl LA0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBXaXRoIHRoaXMgcGF0Y2ggWzFdLCBpdCBpcyBub3Rl ZCB0aGF0IHRoZSByaW5nIHByb2R1Y2VyIGFuZA0KPiA+Pj4+PiBjb25zdW1lciBkYXRhDQo+ID4+ Pj4+Pj4gc2hvdWxkIG5vdCBiZSBvbiBhZGphY2VudCBjYWNoZSBsaW5lcywgZm9yIHBlcmZvcm1h bmNlIHJlYXNvbnMuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFsxXToNCj4gPj4+Pj4+Pg0KPiA+ Pj4+Pg0KPiA+Pg0KPiBodHRwczovL2dpdC5kcGRrLm9yZy9kcGRrL2NvbW1pdC9saWIvbGlicnRl X3JpbmcvcnRlX3JpbmcuaD9pZD1kOWYwZDNhMWYNCj4gPj4+Pj4gZmQ0YjY2DQo+ID4+Pj4+Pj4g ZTc1NDg1Y2M4YjYzYjlhZWRmYmRmZThiMA0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiAoSXQncyBv YnZpb3VzIHRoYXQgdGhleSBjYW5ub3Qgc2hhcmUgdGhlIHNhbWUgY2FjaGUgbGluZSwNCj4gYmVj YXVzZQ0KPiA+Pj4+PiB0aGV5IGFyZQ0KPiA+Pj4+Pj4+IGFjY2Vzc2VkIGJ5IHR3byBkaWZmZXJl bnQgdGhyZWFkcy4pDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEludHVpdGl2ZWx5LCBJIHdvdWxk IHRoaW5rIHRoYXQgaGF2aW5nIHRoZW0gb24gZGlmZmVyZW50IGNhY2hlDQo+ID4+Pj4+IGxpbmVz IHdvdWxkDQo+ID4+Pj4+Pj4gc3VmZmljZS4gV2h5IGRvZXMgaGF2aW5nIGFuIGVtcHR5IGNhY2hl IGxpbmUgYmV0d2VlbiB0aGVtIG1ha2UgYQ0KPiA+Pj4+PiBkaWZmZXJlbmNlPw0KPiA+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+PiBBbmQgZG9lcyBpdCBuZWVkIHRvIGJlIGFuIGVtcHR5IGNhY2hlIGxpbmU/ IE9yIGRvZXMgaXQgc3VmZmljZQ0KPiA+Pj4+PiBoYXZpbmcgdGhlDQo+ID4+Pj4+Pj4gc2Vjb25k IHN0cnVjdHVyZSBzdGFydCBhdCB0d28gY2FjaGUgbGluZXMgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRo ZQ0KPiA+Pj4+PiBmaXJzdA0KPiA+Pj4+Pj4+IHN0cnVjdHVyZSAoZS5nLiBpZiB0aGUgc2l6ZSBv ZiB0aGUgZmlyc3Qgc3RydWN0dXJlIGlzIHR3byBjYWNoZQ0KPiA+Pj4+PiBsaW5lcyk/DQo+ID4+ Pj4+Pj4+DQo+ID4+Pj4+Pj4+IEknbSBhc2tpbmcgYmVjYXVzZSB0aGUgc2FtZSBwcmluY2lwbGUg bWlnaHQgYXBwbHkgdG8gb3RoZXIgY29kZQ0KPiA+Pj4+PiB0b28uDQo+ID4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4gSGkgTW9ydGVuLA0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gdGhpcyB3YXMgc29tZXRoaW5n IHdlIGRpc2NvdmVyZWQgd2hlbiB3b3JraW5nIG9uIHRoZSBkaXN0cmlidXRvcg0KPiA+Pj4+PiBs aWJyYXJ5Lg0KPiA+Pj4+Pj4+IElmIHdlIGhhdmUgY2FjaGVsaW5lcyBwZXIgY29yZSB3aGVyZSB0 aGVyZSBpcyBoZWF2eSBhY2Nlc3MsDQo+IGhhdmluZw0KPiA+Pj4+PiBzb21lDQo+ID4+Pj4+Pj4g Y2FjaGVsaW5lcyBhcyBhIGdhcCBiZXR3ZWVuIHRoZSBjb250ZW50IGNhY2hlbGluZXMgY2FuIGhl bHANCj4gPj4+Pj4gcGVyZm9ybWFuY2UuIFdlDQo+ID4+Pj4+Pj4gYmVsaWV2ZSB0aGlzIGhlbHBz IGR1ZSB0byBhdm9pZGluZyBpc3N1ZXMgd2l0aCB0aGUgSFcNCj4gcHJlZmV0Y2hlcnMNCj4gPj4+ Pj4gKGUuZy4NCj4gPj4+Pj4+PiBhZGphY2VudCBjYWNoZWxpbmUgcHJlZmV0Y2hlcikgYnJpbmdp bmcgaW4gdGhlIHNlY29uZCBjYWNoZWxpbmUNCj4gPj4+Pj4+PiBzcGVjdWxhdGl2ZWx5IHdoZW4g YW4gb3BlcmF0aW9uIGlzIGRvbmUgb24gdGhlIGZpcnN0IGxpbmUuDQo+ID4+Pj4+Pg0KPiA+Pj4+ Pj4gSSBndWVzc2VkIHRoYXQgaXQgaGFkIHNvbWV0aGluZyB0byBkbyB3aXRoIHNwZWN1bGF0aXZl DQo+IHByZWZldGNoaW5nLA0KPiA+Pj4+PiBidXQgd2Fzbid0IHN1cmUuIEdvb2QgdG8gZ2V0IGNv bmZpcm1hdGlvbiwgYW5kIHRoYXQgaXQgaGFzIGENCj4gPj4gbWVhc3VyZWFibGUNCj4gPj4+Pj4g ZWZmZWN0IHNvbWV3aGVyZS4gVmVyeSBpbnRlcmVzdGluZyENCj4gPj4+Pj4+DQo+ID4+Pj4+PiBO QjogTW9yZSBjb21tZW50cyBpbiB0aGUgcmluZyBsaWIgYWJvdXQgc3R1ZmYgbGlrZSB0aGlzIHdv dWxkIGJlDQo+ID4+IG5pY2UuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gU28sIGZvciB0aGUgbWVtcG9v bCBsaWIsIHdoYXQgZG8geW91IHRoaW5rIGFib3V0IGFwcGx5aW5nIHRoZQ0KPiBzYW1lDQo+ID4+ Pj4+IHRlY2huaXF1ZSB0byB0aGUgcnRlX21lbXBvb2xfZGVidWdfc3RhdHMgc3RydWN0dXJlICh3 aGljaCBpcyBhbg0KPiA+PiBhcnJheQ0KPiA+Pj4+PiBpbmRleGVkIHBlciBsY29yZSkuLi4gVHdv IGFkamFjZW50IGxjb3JlcyBoZWF2aWx5IGFjY2Vzc2luZyB0aGVpcg0KPiA+PiBsb2NhbA0KPiA+ Pj4+PiBtZW1wb29sIGNhY2hlcyBzZWVtcyBsaWtlbHkgdG8gbWUuIEJ1dCBob3cgaGVhdnkgZG9l cyB0aGUgYWNjZXNzDQo+ID4+IG5lZWQgdG8NCj4gPj4+Pj4gYmUgZm9yIHRoaXMgdGVjaG5pcXVl IHRvIGJlIHJlbGV2YW50Pw0KPiA+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4gTm8gaWRlYSBob3cg aGVhdnkgdGhlIGFjY2Vzc2VzIG5lZWQgdG8gYmUgZm9yIHRoaXMgdG8gaGF2ZSBhDQo+ID4+IG5v dGljYWJsZQ0KPiA+Pj4+PiBlZmZlY3QuIEZvciB0aGluZ3MgbGlrZSBkZWJ1ZyBzdGF0cywgSSB3 b25kZXIgaG93IHdvcnRod2hpbGUNCj4gbWFraW5nDQo+ID4+IHN1Y2gNCj4gPj4+Pj4gYQ0KPiA+ Pj4+PiBjaGFuZ2Ugd291bGQgYmUsIGJ1dCB0aGVuIGFnYWluLCBhbnkgY2hhbmdlIHdvdWxkIGhh dmUgdmVyeSBsb3cNCj4gPj4gaW1wYWN0DQo+ID4+Pj4+IHRvbw0KPiA+Pj4+PiBpbiB0aGF0IGNh c2UuDQo+ID4+Pj4NCj4gPj4+PiBJIGp1c3QgdHJpZWQgYWRkaW5nIHBhZGRpbmcgdG8gc29tZSBv ZiB0aGUgaG90IHN0cnVjdHVyZXMgaW4gb3VyDQo+IG93bg0KPiA+PiBhcHBsaWNhdGlvbiwgYW5k IG9ic2VydmVkIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgZm9yDQo+ID4+ IHRob3NlLg0KPiA+Pj4+DQo+ID4+Pj4gU28gSSB0aGluayB0aGlzIHRlY2huaXF1ZSBzaG91bGQg aGF2ZSBoaWdoZXIgdmlzaWJpbGl0eSBpbiBEUERLIGJ5DQo+ID4+IGFkZGluZyBhIG5ldyBjYWNo ZSBtYWNybyB0byBydGVfY29tbW9uLmg6DQo+ID4+Pg0KPiA+Pj4gKzEgdG8gbWFrZSBtb3JlIHZp c2liaWxpdHkgaW4gZG9jIGFuZCBhZGRpbmcgYSBtYWNybywgZ29vZCBpZGVhIQ0KPiA+Pj4NCj4g Pj4+DQo+ID4+Pg0KPiA+Pg0KPiA+PiBBIHdvcnJ5IEkgaGF2ZSBpcyB0aGF0IGZvciBDUFVzIHdp dGggbGFyZ2UgKGluIHRoaXMgY29udGV4dCkgTiwgeW91DQo+IHdpbGwNCj4gPj4gZW5kIHVwIHdp dGggYSBsb3Qgb2YgcGFkZGluZyB0byBhdm9pZCBuZXh0LU4tbGluZXMgZmFsc2Ugc2hhcmluZy4N Cj4gVGhhdA0KPiA+PiB3b3VsZCBiZSBwYWRkaW5nIGFmdGVyLCBhbmQgaW4gdGhlIGdlbmVyYWwg KG5vbi1hcnJheSkgY2FzZSBhbHNvDQo+IGJlZm9yZSwNCj4gPj4gdGhlIGFjdHVhbCBwZXItbGNv cmUgZGF0YS4gQSBzbGlnaHQgbnVpc2FuY2UgaXMgYWxzbyB0aGF0IHRob3NlDQo+ID4+IHByZWZl dGNoZWQgbGluZXMgb2YgcGFkZGluZywgd2lsbCBuZXZlciBjb250YWluIGFueXRoaW5nIHVzZWZ1 bCwgYW5kDQo+ID4+IHRodXMgZmV0Y2hpbmcgdGhlbSB3aWxsIGFsd2F5cyBiZSBhIHdhc3RlLg0K PiA+DQo+ID4gT3V0IG9mIGN1cmlvc2l0eSwgd2hhdCBpcyB0aGUgbGFyZ2VzdCBOIGFueW9uZSBo ZXJlIG9uIHRoZSBsaXN0IGlzDQo+IGF3YXJlIG9mPw0KPiA+DQo+ID4+DQo+ID4+IFBhZGRpbmcv YWxpZ25tZW50IG1heSBub3QgYmUgdGhlIG9ubHkgd2F5IHRvIGF2b2lkIEhXLXByZWZldGNoZXIt DQo+IGluZHVjZWQNCj4gPj4gZmFsc2Ugc2hhcmluZyBmb3IgcGVyLWxjb3JlIGRhdGEgc3RydWN0 dXJlcy4NCj4gPj4NCj4gPj4gV2hhdCB3ZSBhcmUgZGlzY3Vzc2luZyBoZXJlIGlzIG9yZ2FuaXpp bmcgdGhlIHN0YXRpY2FsbHkgYWxsb2NhdGVkDQo+ID4+IHBlci1sY29yZSBzdHJ1Y3RzIG9mIGEg cGFydGljdWxhciBtb2R1bGUgaW4gYW4gYXJyYXkgd2l0aCB0aGUNCj4gPj4gYXBwcm9wcmlhdGUg cGFkZGluZy9hbGlnbm1lbnQuIEluIHRoaXMgbW9kZWwsIGFsbCBkYXRhIHJlbGF0ZWQgdG8gYQ0K PiA+PiBwYXJ0aWN1bGFyIG1vZHVsZSBpcyBjbG9zZSAobWVtb3J5IGFkZHJlc3MvcGFnZS13aXNl KSwgYnV0IG5vdCBzbw0KPiBjbG9zZQ0KPiA+PiB0byBjYXVzZSBmYWxzZSBzaGFyaW5nLg0KPiA+ Pg0KPiA+PiAvKiBydGVfYS5jICovDQo+ID4+DQo+ID4+IHN0cnVjdCBydGVfYV9zdGF0ZQ0KPiA+ PiB7DQo+ID4+IAlpbnQgeDsNCj4gPj4gICAgICAgICAgIFJURV9DQUNIRV9HVUFSRDsNCj4gPj4g fSBfX3J0ZV9jYWNoZV9hbGlnbmVkOw0KPiA+Pg0KPiA+PiBzdGF0aWMgc3RydWN0IHJ0ZV9hX3N0 YXRlIGFfc3RhdGVzW1JURV9NQVhfTENPUkVdOw0KPiA+Pg0KPiA+PiAvKiBydGVfYi5jICovDQo+ ID4+DQo+ID4+IHN0cnVjdCBydGVfYl9zdGF0ZQ0KPiA+PiB7DQo+ID4+IAljaGFyIHk7DQo+ID4+ ICAgICAgICAgICBjaGFyIHo7DQo+ID4+ICAgICAgICAgICBSVEVfQ0FDSEVfR1VBUkQ7DQo+ID4+ IH0gX19ydGVfY2FjaGVfYWxpZ25lZDsNCj4gPj4NCj4gPj4NCj4gPj4gc3RhdGljIHN0cnVjdCBy dGVfYl9zdGF0ZSBiX3N0YXRlc1tSVEVfTUFYX0xDT1JFXTsNCj4gPj4NCj4gPj4gV2hhdCB5b3Ug d291bGQgZW5kIHVwIHdpdGggaW4gcnVudGltZSB3aGVuIHRoZSBsaW5rZXIgaGFzIGRvbmUgaXRz DQo+IGpvYg0KPiA+PiBpcyBzb21ldGhpbmcgdGhhdCBlc3NlbnRpYWxseSBsb29rcyBsaWtlIHRo aXMgKGluIG1lbW9yeSk6DQo+ID4+DQo+ID4+IHN0cnVjdCB7DQo+ID4+IAlzdHJ1Y3QgcnRlX2Ff c3RhdGUgYV9zdGF0ZXNbUlRFX01BWF9MQ09SRV07DQo+ID4+IAlzdHJ1Y3QgcnRlX2Jfc3RhdGUg Yl9zdGF0ZXNbUlRFX01BWF9MQ09SRV07DQo+ID4+IH07DQo+ID4+DQo+ID4+IFlvdSBjb3VsZCBj b25zaWRlciB0dXJuaW5nIGl0IGFyb3VuZCwgYW5kIGtlZXBpbmcgZGF0YSAoaS5lLiwgbW9kdWxl DQo+ID4+IHN0cnVjdHMpIHJlbGF0ZWQgdG8gYSBwYXJ0aWN1bGFyIGxjb3JlLCBmb3IgYWxsIG1v ZHVsZXMsIGNsb3NlLiBJbg0KPiBvdGhlcg0KPiA+PiB3b3Jkcywga2VlcGluZyBhIHBlci1sY29y ZSBhcnJheXMgb2YgdmFyaWFibGUtc2l6ZWQgZWxlbWVudHMuDQo+ID4+DQo+ID4+IFNvLCBzb21l dGhpbmcgdGhhdCB3aWxsIGVuZCB1cCBsb29raW5nIGxpa2UgdGhpcyAoaW4gbWVtb3J5LCBub3Qg aW4NCj4gdGhlDQo+ID4+IHNvdXJjZSBjb2RlKToNCj4gPj4NCj4gPj4gc3RydWN0IHJ0ZV9sY29y ZV9zdGF0ZQ0KPiA+PiB7DQo+ID4+IAlzdHJ1Y3QgcnRlX2Ffc3RhdGUgYV9zdGF0ZTsNCj4gPj4g CXN0cnVjdCBydGVfYl9zdGF0ZSBiX3N0YXRlOw0KPiA+PiAgICAgICAgICAgUlRFX0NBQ0hFX0dV QVJEOw0KPiA+PiB9Ow0KPiA+Pg0KPiA+PiBzdHJ1Y3QgcnRlX2xjb3JlX3N0YXRlIGxjb3JlX3N0 YXRlc1tSVEVfTENPUkVfTUFYXTsNCj4gPj4NCj4gPj4gSW4gc3VjaCBhIHNjZW5hcmlvLCB0aGUg cGVyLWxjb3JlIHN0cnVjdCB0eXBlIGZvciBhIG1vZHVsZSBuZWVkIG5vdA0KPiAoYW5kDQo+ID4+ IHNob3VsZCBub3QpIGJlIGNhY2hlLWxpbmUtYWxpZ25lZCAoYnV0IG1heSBzdGlsbCBoYXZlIHNv bWUgYWxpZ25tZW50DQo+ID4+IHJlcXVpcmVtZW50cykuIERhdGEgd2lsbCBiZSBtb3JlIHRpZ2h0 bHkgcGFja2VkLCBhbmQgdGhlICJuZXh0IGxpbmVzIg0KPiA+PiBwcmVmZXRjaGVkIG1heSBhY3R1 YWxseSBiZSB1c2VmdWwgKGFsdGhvdWdoIEknbSBndWVzc2luZyBpbiBwcmFjdGljZQ0KPiA+PiB0 aGV5IHdpbGwgdXN1YWxseSBub3QpLg0KPiA+Pg0KPiA+PiBUaGVyZSBtYXkgYmUgc2V2ZXJhbCB3 YXlzIHRvIGltcGxlbWVudCB0aGF0IHNjaGVtZS4gVGhlIGFib3ZlIGlzIHRvDQo+ID4+IGlsbHVz dHJhdGUgaG93IHRoaW5nIHdvdWxkIGxvb2sgaW4gbWVtb3J5LCBub3QgbmVjZXNzYXJpbHkgb24g dGhlDQo+IGxldmVsDQo+ID4+IG9mIHRoZSBzb3VyY2UgY29kZS4NCj4gPj4NCj4gPj4gT25lIHdh eSBjb3VsZCBiZSB0byBmaXQgdGhlIHBlci1tb2R1bGUtcGVyLWxjb3JlIHN0cnVjdCBpbiBhIGNo dW5rIG9mDQo+ID4+IG1lbW9yeSBhbGxvY2F0ZWQgaW4gYSBwZXItbGNvcmUgaGVhcC4gSW4gc3Vj aCBhIGNhc2UsIHRoZSBEUERLIGhlYXANCj4gPj4gd291bGQgbmVlZCBleHRlbnNpb24sIG1heWJl IHdpdGggc2VtYW50aWNzIHNpbWlsYXIgdG8gdGhhdCBvZiBOVU1BLQ0KPiBub2RlDQo+ID4+IHNw ZWNpZmljIGFsbG9jYXRpb25zLg0KPiA+Pg0KPiA+PiBBbm90aGVyIHdheSB3b3VsZCBiZSB0byB1 c2UgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgKFRMUywgX190aHJlYWQpLA0KPiA+PiBhbHRob3VnaCBp dCdzIHVuY2xlYXIgdG8gbWUgaG93IHdlbGwgVExTIHdvcmtzIHdpdGggbGFyZ2VyIGRhdGENCj4g Pj4gc3RydWN0dXJlcy4NCj4gPj4NCj4gPj4gQSB0aGlyZCB3YXkgbWF5IGJlIHRvIHNvbWVob3cg YWNoaWV2ZSBzb21ldGhpbmcgdGhhdCBsb29rcyBsaWtlIHRoZQ0KPiA+PiBhYm92ZSBleGFtcGxl LCB1c2luZyBtYWNyb3MsIHdpdGhvdXQgYnJlYWtpbmcgbW9kdWxlIGVuY2Fwc3VsYXRpb24gb3IN Cj4gPj4gZ2VuZXJhbGx5IGJlIHRvbyBpbnRydXNpdmUgb3Igb3RoZXJ3aXNlIGN1bWJlcnNvbWUu DQo+ID4+DQo+ID4+IE5vdCBzdXJlIHRoaXMgaXMgd29ydGggdGhlIHRyb3VibGUgKGNvbXBhcmVk IHRvIGp1c3QgbW9yZSBwYWRkaW5nKSwNCj4gYnV0DQo+ID4+IEkgdGhvdWdodCBpdCB3YXMgYW4g aWRlYSB3b3J0aCBzaGFyaW5nLg0KPiA+DQo+ID4gSSB0aGluayB3aGF0IE1hdHRpYXMgc3VnZ2Vz dHMgaXMgcmVsZXZhbnQsIGFuZCBpdCB3b3VsZCBiZSBncmVhdCBpZiBhDQo+IGdlbmVyaWMgc29s dXRpb24gY291bGQgYmUgZm91bmQgZm9yIERQREsuDQo+ID4NCj4gPiBGb3IgcmVmZXJlbmNlLCB3 ZSBpbml0aWFsbHkgdXNlZCBSVEVfUEVSX0xDT1JFKG1vZHVsZV92YXJpYWJsZSksIGkuZS4NCj4g dGhyZWFkIGxvY2FsIHN0b3JhZ2UsIGV4dGVuc2l2ZWx5IGluIG91ciBhcHBsaWNhdGlvbiBtb2R1 bGVzLiBCdXQgaXQgaGFzDQo+IHR3byBkaXNhZHZhbnRhZ2VzOg0KPiA+IDEuIFRMUyBkb2VzIG5v dCB1c2UgaHVnZXBhZ2VzLiAoVGhlIHNhbWUgYXBwbGllcyB0byBnbG9iYWwgYW5kIGxvY2FsDQo+ IHZhcmlhYmxlcywgQlRXLikNCj4gPiAyLiBXZSBuZWVkIHRvIHNldCB1cCBnbG9iYWwgcG9pbnRl cnMgdG8gdGhlc2UgVExTIHZhcmlhYmxlcywgc28gdGhleQ0KPiBjYW4gYmUgYWNjZXNzZWQgZnJv bSB0aGUgbWFpbiBsY29yZSAoZS5nLiBmb3Igc3RhdGlzdGljcykuIFRoaXMgbWVhbnMNCj4gdGhh dCBldmVyeSBtb2R1bGUgbmVlZHMgc29tZSBzb3J0IG9mIG1vZHVsZV9wZXJfbGNvcmVfaW5pdCwg Y2FsbGVkIGJ5DQo+IHRoZSB0aHJlYWQgYWZ0ZXIgaXRzIGNyZWF0aW9uLCB0byBzZXQgdGhlDQo+ IG1vZHVsZV9nbG9iYWxfcHRyW3J0ZV9sY29yZV9pZCgpXSA9ICZSVEVfUEVSX0xDT1JFKG1vZHVs ZV92YXJpYWJsZSkuDQo+ID4NCj4gDQo+IEdvb2QgcG9pbnRzLiBJIG5ldmVyIHRob3VnaHQgYWJv dXQgdGhlIGluaXRpYWxpemF0aW9uIGlzc3VlLg0KPiANCj4gSG93IGFib3V0IG1lbW9yeSBjb25z dW1wdGlvbiBhbmQgVExTPyBJZiB5b3UgaGF2ZSBtYW55IG5vbi1FQUwtdGhyZWFkcw0KPiBpbiB0 aGUgRFBESyBwcm9jZXNzLCB3b3VsZCB0aGUgc3lzdGVtIGFsbG9jYXRlIFRMUyBtZW1vcnkgZm9y IERQREsNCj4gbGNvcmUtc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzPyBBc3N1bWluZyBhIHNjZW5h cmlvIHdoZXJlIF9fdGhyZWFkIHdhcw0KPiB1c2VkIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIERQ REsgcGF0dGVybi4NCg0KUm9vbSBmb3IgYWxsIHRoZSBfX3RocmVhZCB2YXJpYWJsZXMgaXMgYWxs b2NhdGVkIGFuZCBpbml0aWFsaXplZCBmb3IgZXZlcnkgdGhyZWFkIHN0YXJ0ZWQuDQoNCk5vdGU6 IFJURV9QRVJfTENPUkUgdmFyaWFibGVzIGFyZSBzaW1wbHkgX190aHJlYWQtd3JhcHBlZCB2YXJp YWJsZXM6DQoNCiNkZWZpbmUgUlRFX0RFRklORV9QRVJfTENPUkUodHlwZSwgbmFtZSkJCQlcDQoJ X190aHJlYWQgX190eXBlb2ZfXyh0eXBlKSBwZXJfbGNvcmVfIyNuYW1lDQoNCj4gDQo+ID4gRXZl bnR1YWxseSwgd2UgZ2F2ZSB1cCBhbmQgbWlncmF0ZWQgdG8gdGhlIERQREsgc3RhbmRhcmQgZGVz aWduDQo+IHBhdHRlcm4gb2YgaW5zdGFudGlhdGluZyBhIGdsb2JhbCBtb2R1bGVfdmFyaWFibGVb UlRFX01BWF9MQ09SRV0sIGFuZA0KPiBsZXR0aW5nIGVhY2ggdGhyZWFkIHVzZSBpdHMgb3duIGVu dHJ5IGluIHRoYXQgYXJyYXkuDQo+ID4NCj4gPiBBbmQgYXMgTWF0dGlhcyBzdWdnZXN0cywgdGhp cyBhZGRzIGEgbG90IG9mIHVzZWxlc3MgcGFkZGluZywgYmVjYXVzZQ0KPiBlYWNoIG1vZHVsZXMn IHZhcmlhYmxlcyBub3cgbmVlZCB0byBzdGFydCBvbiBpdHMgb3duIGNhY2hlIGxpbmUuDQo+ID4N Cj4gPiBTbyBhIGdlbmVyaWMgc29sdXRpb24gd2l0aCBwYWNrZWQgcGVyLXRocmVhZCBkYXRhIHdv dWxkIGJlIGEgZ3JlYXQNCj4gbG9uZyB0ZXJtIHNvbHV0aW9uLg0KPiA+DQo+ID4gU2hvcnQgdGVy bSwgSSBjYW4gbGl2ZSB3aXRoIHRoZSBzaW1wbGUgY2FjaGUgZ3VhcmQuIEl0IGlzIHZlcnkgZWFz eSB0bw0KPiBpbXBsZW1lbnQgYW5kIHVzZS4NCj4gPg0KPiBUaGUgUlRFX0NBQ0hFX0dVQVJEIHBh dHRlcm4gaXMgYWxzbyBpbnRydXNpdmUsIGluIHRoZSBzZW5zZSBpdCBuZWVkcyB0bw0KPiBiZSBl eHBsaWNpdGx5IGFkZGVkIGV2ZXJ5d2hlcmUgKGp1c3QgbGlrZSBfX3J0ZV9jYWNoZV9hbGlnbmVk KSBhbmQgZXJyb3INCj4gcHJvbmUsIGFuZCBzb21ld2hhdCBicml0dGxlIChpbiB0aGUgZmFjZSBv ZiBjaGFuZ2VkIDxOPikuDQoNCkFncmVlLiBMaWtlIGEgbG90IG9mIG90aGVyIHN0dWZmIGluIERQ REsuIERQREsgaXMgdmVyeSBleHBsaWNpdC4gOi0pDQoNCj4gDQo+IChJIG1lbnRpb25lZCB0aGlz IG5vdCB0byBkaXNjb3VyYWdlIHRoZSB1c2Ugb2YgUlRFX0NBQ0hFX0dVQVJEIC0gbW9yZSB0bw0K PiBlbmNvdXJhZ2Ugc29tZWhvdyB0byBpbnZpdGUgc29tZXRoaW5nIG1vcmUgZWZmaWNpZW50LCBy b2J1c3QgYW5kDQo+IGVhc2llci10by11c2UuKQ0KDQpJIGdldCB0aGF0IHlvdSBkb24ndCBkaXNj b3VyYWdlIGl0LCBidXQgSSBkb24ndCBleHBlY3QgdGhlIGRpc2N1c3Npb24gdG8gcHJvY2VlZCBm dXJ0aGVyIGF0IHRoaXMgdGltZS4gU28gcGxlYXNlIGRvbuKAmXQgZm9yZ2V0IHRvIGFsc28gQUNL IHRoaXMgcGF0Y2guIDstKQ0KDQpUaGVyZSBzaG91bGQgYmUgYSB3aXNoIGxpc3QsIHdoZXJlIGNv bmNlcHRzIGxpa2UgeW91ciBzdWdnZXN0ZWQgaW1wcm92ZW1lbnQgY291bGQgYmUgZWFzaWx5IG5v dGVkLg0KDQo=