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 17B7443B7F; Thu, 22 Feb 2024 19:28:40 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 94243402E9; Thu, 22 Feb 2024 19:28:39 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 20B3D402CD; Thu, 22 Feb 2024 19:28:37 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TghPT5QKdz6K6BV; Fri, 23 Feb 2024 02:24:29 +0800 (CST) Received: from frapeml100007.china.huawei.com (unknown [7.182.85.133]) by mail.maildlp.com (Postfix) with ESMTPS id 6EE89140A9C; Fri, 23 Feb 2024 02:28:36 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100007.china.huawei.com (7.182.85.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 22 Feb 2024 19:28:36 +0100 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.035; Thu, 22 Feb 2024 19:28:36 +0100 From: Konstantin Ananyev To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , Ferruh Yigit , Kaiwen Deng , "dev@dpdk.org" CC: "stable@dpdk.org" , "qiming.yang@intel.com" , "yidingx.zhou@intel.com" , Aman Singh , Yuying Zhang , David Marchand , "Thomas Monjalon" , Andrew Rybchenko , Jerin Jacob Subject: RE: [PATCH v2] app/testpmd: use Tx preparation in txonly engine Thread-Topic: [PATCH v2] app/testpmd: use Tx preparation in txonly engine Thread-Index: AQHaRFRkjdCCtAptyE+no5avCHrrtrD/rEgAgADB6ZCAAA2bsIAE2D1ggALj3kCADqCK0A== Date: Thu, 22 Feb 2024 18:28:35 +0000 Message-ID: <670ee735254244878e4b1247a8850be5@huawei.com> References: <20240103012912.4334-1-kaiwenx.deng@intel.com> <20240111052555.35930-1-kaiwenx.deng@intel.com> <38baef9c-103a-4be4-8546-e9ea35abc46f@amd.com> <98CBD80474FA8B44BF855DF32C47DC35E9F1FE@smartserver.smartshare.dk> <918593c56c5745a285facc47b6cdc76b@huawei.com> <98CBD80474FA8B44BF855DF32C47DC35E9F20C@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F20C@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.146.142] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 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 DQo+ICtDQzogRXRoZXJuZXQgQVBJIG1haW50YWluZXJzDQo+ICtDQzogSmVyaW4gKGNvbW1lbnRl ZCBvbiBhbm90aGVyIGJyYW5jaCBvZiB0aGlzIHRocmVhZCkNCj4gDQo+ID4gRnJvbTogS29uc3Rh bnRpbiBBbmFueWV2IFttYWlsdG86a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb21dDQo+ID4g U2VudDogU3VuZGF5LCAxMSBGZWJydWFyeSAyMDI0IDE2LjA0DQo+ID4NCj4gPiA+ID4gPiA+IFRT TyBicmVha3Mgd2hlbiBNU1Mgc3BhbnMgbW9yZSB0aGFuIDggZGF0YSBmcmFnbWVudHMuIFRob3Nl DQo+ID4gPiA+ID4gPiBwYWNrZXRzIHdpbGwgYmUgZHJvcHBlZCBieSBUeCBwcmVwYXJhdGlvbiBB UEksIGJ1dCBpdCB3aWxsDQo+ID4gY2F1c2UNCj4gPiA+ID4gPiA+IE1ERCBldmVudCBpZiB0eG9u bHkgZm9yd2FyZGluZyBlbmdpbmUgZG9lcyBub3QgY2FsbCB0aGUgVHgNCj4gPiA+ID4gcHJlcGFy YXRpb24NCj4gPiA+ID4gPiA+IEFQSSBiZWZvcmUgdHJhbnNtaXR0aW5nIHBhY2tldHMuDQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gdHhvbmx5IGlzIHVzZWQgY29tbW9ubHksIGFk ZGluZyBUeCBwcmVwYXJlIGZvciBhIHNwZWNpZmljIGNhc2UNCj4gPiBtYXkNCj4gPiA+ID4gPiBp bXBhY3QgcGVyZm9ybWFuY2UgZm9yIHVzZXJzLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2hhdCBo YXBwZW5zIHdoZW4gZHJpdmVyIHRocm93cyBNREQgKE1hbGljaW91cyBEcml2ZXIgRGV0ZWN0aW9u KQ0KPiA+ID4gPiBldmVudCwNCj4gPiA+ID4gPiBjYW4ndCBpdCBiZSBpZ25vcmVkPyBBcyB5b3Ug YXJlIGFscmVhZHkgT0sgdG8gZHJvcCB0aGUgcGFja2V0LA0KPiA+IGNhbg0KPiA+ID4gPiA+IGRl dmljZSBiZSBjb25maWd1cmVkIHRvIGRyb3AgdGhlc2UgcGFja2FnZXM/DQo+ID4gPiA+ID4NCj4g PiA+ID4gPg0KPiA+ID4gPiA+IE9yIGFzIEplcmluIHN1Z2dlc3RlZCBhZGRpbmcgYSBuZXcgZm9y d2FyZGluZyBlbmdpbmUgaXMgYQ0KPiA+IHNvbHV0aW9uLA0KPiA+ID4gPiBidXQNCj4gPiA+ID4g PiB0aGF0IHdpbGwgY3JlYXRlIGNvZGUgZHVwbGljYXRpb24sIEkgcHJlZmVyIHRvIG5vdCBoYXZl IGl0IGlmDQo+ID4gdGhpcw0KPiA+ID4gPiBjYW4NCj4gPiA+ID4gPiBiZSBoYW5kbGVkIGluIGRl dmljZSBsZXZlbC4NCj4gPiA+ID4NCj4gPiA+ID4gQWN0dWFsbHkgSSBhbSBhZ3JlZSB3aXRoIHRo ZSBhdXRob3Igb2YgdGhlIHBhdGNoIC0gd2hlbiBUWCBvZmZsb2Fkcw0KPiA+ID4gPiBhbmQvb3Ig bXVsdGlzZWdzIGFyZSBlbmFibGVkLA0KPiA+ID4gPiB1c2VyIHN1cHBvc2VkIHRvIGludm9rZSBl dGhfdHhfcHJlcGFyZSgpLg0KPiA+ID4gPiBOb3QgZG9pbmcgdGhhdCBzZWVtcyBsaWtlIGEgYnVn IHRvIG1lLg0KPiA+ID4NCj4gPiA+IEkgc3Ryb25nbHkgZGlzYWdyZWUgd2l0aCB0aGF0IHN0YXRl bWVudCwgS29uc3RhbnRpbiENCj4gPiA+IEl0IGlzIG5vdCBkb2N1bWVudGVkIGFueXdoZXJlIHRo YXQgdXNpbmcgVFggb2ZmbG9hZHMgYW5kL29yIG11bHRpc2Vncw0KPiA+IHJlcXVpcmVzIGNhbGxp bmcgcnRlX2V0aF90eF9wcmVwYXJlKCkgYmVmb3JlDQo+ID4gPiBydGVfZXRoX3R4X2J1cnN0KCku IEFuZCBub25lIG9mIHRoZSBleGFtcGxlcyBkbyBpdC4NCj4gPg0KPiA+IEluIGZhY3QsIHdlIGRv IHVzZSBpdCBmb3IgdGVzdC1wbWQvY3N1bW9ubHkuYy4NCj4gPiBBYm91dCBvdGhlciBzYW1wbGUg YXBwczoNCj4gPiBBRkFJSywgbm90IG1hbnkgb2Ygb3RoZXIgRFBESyBhcHBzIGRvIHVzZSBMNCBv ZmZsb2Fkcy4NCj4gPiBSaWdodCBub3cgc3BlY2lhbCB0cmVhdG1lbnQgKHBzZXVkby1oZWFkZXIg Y2tzdW0gY2FsY3VsYXRpb24pIGlzIG5lZWRlZA0KPiA+IG9ubHkgZm9yIEw0IG9mZmxvYWRzIChD S1NVTSwgU0VHKS4NCj4gPiBTbywgbWFqb3JpdHkgb2Ygb3VyIGFwcHMgd2hvIHJlbHkgb24gb3Ro ZXIgVFggb2ZmbG9hZHMgKG11bHRpLXNlZywgaXB2NA0KPiA+IGNrc3VtLCB2bGFuIGluc2VydGlv bikgaGFwcGlseSBydW4gd2l0aG91dA0KPiA+IGNhbGxpbmcgdHhfcHJlcGFyZSgpLCBldmVuIHRo b3VnaCBpdCBpcyBub3QgdGhlIHNhZmVzdCB3YXkuDQo+ID4NCj4gPiA+DQo+ID4gPiBJbiBteSBv cGluaW9uOg0KPiA+ID4gSWYgc29tZSBkcml2ZXIgaGFzIGxpbWl0YXRpb25zIGZvciBhIGZlYXR1 cmUsIGUuZy4gbWF4IDggZnJhZ21lbnRzLA0KPiA+IGl0IHNob3VsZCBiZSBkb2N1bWVudGVkIGZv ciB0aGF0IGRyaXZlciwgc28gdGhlIGFwcGxpY2F0aW9uDQo+ID4gPiBkZXZlbG9wZXIgY2FuIG1h a2UgdGhlIGFwcHJvcHJpYXRlIGRlY2lzaW9ucyB3aGVuIGRlc2lnbmluZyB0aGUNCj4gPiBhcHBs aWNhdGlvbi4NCj4gPiA+IEZ1cnRoZXJtb3JlLCB3ZSBoYXZlIEFQSXMgZm9yIHRoZSBkcml2ZXJz IHRvIGV4cG9zZSB0byB0aGUNCj4gPiBhcHBsaWNhdGlvbnMgd2hhdCB0aGUgZHJpdmVyIHN1cHBv cnRzLCBzbyB0aGUgYXBwbGljYXRpb24gY2FuIGNvbmZpZ3VyZQ0KPiA+ID4gaXRzZWxmIG9wdGlt YWxseSBhdCBzdGFydHVwLiBQZXJoYXBzIHRob3NlIEFQSXMgbmVlZCB0byBiZSBleHBhbmRlZC4N Cj4gPiA+IEFuZCBpZiBhIGZlYXR1cmUgbGltaXRhdGlvbiBpcyBjb21tb24gYWNyb3NzIHRoZSBt YWpvcml0eSBvZiBkcml2ZXJzLA0KPiA+IHRoYXQgbGltaXRhdGlvbiBzaG91bGQgYmUgbWVudGlv bmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZQ0KPiA+ID4gZmVhdHVyZSBpdHNlbGYuDQo+ ID4NCj4gPiBNYW55IG9mIHN1Y2ggbGltaXRhdGlvbnMgKmFyZSogZG9jdW1lbnRlZCBhbmQgaW4g ZmFjdCB3ZSBkbyBoYXZlIGFuIEFQSQ0KPiA+IHRvIGNoZWNrIG1heCBzZWdtZW50cyB0aGF0IGVh Y2ggZHJpdmVyIHN1cHBvcnQsDQo+ID4gc2VlIHN0cnVjdCBydGVfZXRoX2Rlc2NfbGltLg0KPiAN Cj4gWWVzLCB0aGlzIGlzIHRoZSBraW5kIG9mIEFQSSB3ZSBzaG91bGQgcHJvdmlkZSwgc28gdGhl IGFwcGxpY2F0aW9uIGNhbiBjb25maWd1cmUgaXRzZWxmIGFwcHJvcHJpYXRlbHkuDQo+IA0KPiA+ IFRoZSBwcm9ibGVtIGlzOg0KPiA+IC0gbm9uZSBvZiBvdXIgc2FtcGxlIGFwcCBkb2VzIHByb3Bl ciBjaGVjayBvbiB0aGVzZSB2YWx1ZXMsIHNvIHVzZXJzDQo+ID4gZG9uJ3QgaGF2ZSBhIGdvb2Qg ZXhhbXBsZSBob3cgdG8gZG8gaXQuDQo+IA0KPiBBZ3JlZWQuDQo+IEFkZGluZyBhbiBleGFtcGxl IHNob3dpbmcgaG93IHRvIGRvIGl0IHByb3Blcmx5IHdvdWxkIGJlIHRoZSBiZXN0IHNvbHV0aW9u Lg0KPiBDYWxsaW5nIHR4X3ByZXBhcmUoKSBpbiB0aGUgZXhhbXBsZXMgaXMgY2VydGFpbmx5IG5v dCB0aGUgc29sdXRpb24uDQo+IA0KPiA+IC0gd2l0aCBjdXJyZW50IERQREsgQVBJIG5vdCBhbGwg b2YgSFcvUE1EIHJlcXVpcmVtZW50cyBjb3VsZCBiZQ0KPiA+IGV4dHJhY3RlZCBwcm9ncmFtbWF0 aWNhbGx5Og0KPiA+ICAgbGV0IHNheSBtYWpvcml0eSBvZiBJbnRlbCBQTURzIGZvciBUQ1Agb2Zm bG9hZHMgZXhwZWN0IHBzZXVkby1oZWFkZXINCj4gPiBja3N1bSB0byBiZSBwcmUtY2FsY3VsYXRl ZCBieSB0aGUgU1cuDQo+IA0KPiBJIGhvcGUgdGhpcyByZXF1aXJlbWVudCBpcyBkb2N1bWVudGVk IHNvbWV3aGVyZS4NCj4gDQo+ID4gICBhbm90aGVyIGV4YW1wbGUsIHNvbWUgSFcgZXhwZWN0cyBw a3RfbGVuIHRvIGJlIGJpZ2dlciB0aGVuIHNvbWUNCj4gPiB0aHJlc2hvbGQgdmFsdWUsIG90aGVy d2lzZSBIVyBoYW5nIG1heSBhcHBlYXIuDQo+IA0KPiBJIGhvcGUgdGhpcyByZXF1aXJlbWVudCBp cyBhbHNvIGRvY3VtZW50ZWQgc29tZXdoZXJlLg0KDQpObyBpZGVhLCBJIGZvdW5kIGl0IG9ubHkg aW4gdGhlIGNvZGUuDQoNCj4gR2VuZXJhbGx5LCBpZiB0aGUgcmVxdWlyZW1lbnRzIGNhbm5vdCBi ZSBleHRyYWN0ZWQgcHJvZ3JhbW1hdGljYWxseSwgdGhleSBtdXN0IGJlIHByb21pbmVudGx5IGRv Y3VtZW50ZWQsIGxpa2UgdGhpcyBub3RlIHRvDQo+IHJ0ZV9ldGhfcnhfYnVyc3QoKToNCg0KT2J2 aW91c2x5LCBtb3JlIGRldGFpbGVkIGRvY3VtZW50YXRpb24gaXMgYWx3YXlzIGdvb2QsIGJ1dC4u Lg0KUmlnaHQgbm93IHdlIGhhdmUgNTArIGRpZmZlcmVudCBQTURzIGZyb20gZGlmZmVyZW50IHZl bmRvcnMuDQpFdmVuIGlmIGVhY2ggYW5kIGV2ZXJ5IG9mIHRoZW0gd2lsbCBjYXJlZnVsbHkgZG9j dW1lbnQgYWxsIHBvc3NpYmxlIGxpbWl0YXRpb25zIGFuZCBuZWNlc3NhcnkgcHJlcGFyYXRpb24g c3RlcHMsDQpob3cgRFBESyBhcHAgZGV2ZWxvcGVyIHN1cHBvc2VkIHRvICBkZWFsIHdpdGggYWxs IHRoYXQ/DQpEbyB5b3UgZXhwZWN0IGV2ZXJ5b25lLCB0byByZWFkIGNhcmVmdWxseSB0aHJvdWdo IGFsbCBvZiB0aGVtLCBhbmQgaGFuZGxlIGFsbCBvZiB0aGVtIHByb3Blcmx5IG9oIGhpcyBvd24N CmluIGVhY2ggYW5kIGV2ZXJ5IERQREsgYXBwIGhlIGlzIGdvaW5nIHRvIHdyaXRlPw0KVGhhdCBz ZWVtcyB1bnJlYWxpc3RpYy4NCkFnYWluIHdoYXQgdG8gZG8gd2l0aCBiYWNrd2FyZCBjb21wYXRp YmlsaXR5OiB3aGVuIG5ldyBkcml2ZXIgKHdpdGggbmV3IGxpbWl0YXRpb25zKSB3aWxsIGFyaXNl DQoqYWZ0ZXIqIHlvdXIgYXBwIGlzIGFscmVhZHkgd3JpdHRlbiBhbmQgdGVzdGVkPyANCg0KPiAN Cj4gICogQG5vdGUNCj4gICogICBTb21lIGRyaXZlcnMgdXNpbmcgdmVjdG9yIGluc3RydWN0aW9u cyByZXF1aXJlIHRoYXQgKm5iX3BrdHMqIGlzDQo+ICAqICAgZGl2aXNpYmxlIGJ5IDQgb3IgOCwg ZGVwZW5kaW5nIG9uIHRoZSBkcml2ZXIgaW1wbGVtZW50YXRpb24uDQo+IA0KPiA+IC0gQXMgbmV3 IEhXIGFuZCBQTUQga2VlcCBhcHBlYXJpbmcgaXQgaXMgaGFyZCB0byBwcmVkaWN0IHdoYXQgZXh0 cmENCj4gPiBsaW1pdGF0aW9ucy9yZXF1aXJlbWVudHMgd2lsbCBhcmlzZSwNCj4gPiAgIHRoYXQn cyB3aHkgdHhfcHJlcGFyZSgpIHdhcyBpbnRyb2R1Y2VkIGFzIHMgZHJpdmVyIG9wLg0KPiA+DQo+ ID4gPg0KPiA+ID4gV2UgZG9uJ3Qgd2FudCB0byBjaGVjayBpbiB0aGUgZmFzdCBwYXRoIHdoYXQg Y2FuIGJlIGNoZWNrZWQgYXQNCj4gPiBzdGFydHVwIG9yIGJ1aWxkIHRpbWUhDQo+ID4NCj4gPiBJ ZiB5b3VyIGFwcCBzdXBwb3NlZCB0byB3b3JrIHdpdGgganVzdCBhIGZldywga25vd24gaW4gYWR2 YW5jZSwgTklDDQo+ID4gbW9kZWxzLCB0aGVuIHN1cmUsIHlvdSBjYW4gZG8gdGhhdC4NCj4gPiBG b3IgYXBwcyB0aGF0IHN1cHBvc2VkIHRvIHdvcmsgJ2luIGdlbmVyYWwnICB3aXRoIGFueSBwb3Nz aWJsZSBQTURzDQo+ID4gdGhhdCBEUERLIHN1cHBvcnRzIC0gdGhhdCBtaWdodCBiZSBhIHByb2Js ZW0uDQo+ID4gVGhhdCdzIHdoeSB0eF9wcmVwYXJlKCkgd2FzIGludHJvZHVjZWQgYW5kIGl0IGlz IHN0cm9uZ2x5IHJlY29tbWVuZGVkDQo+ID4gdG8gdXNlIGl0IGJ5IHRoZSBhcHBzIHRoYXQgZG8g dXNlIFRYIG9mZmxvYWRzLg0KPiA+IFByb2JhYmx5IHR4X3ByZXBhcmUoKSBpcyBub3QgdGhlIGJl c3QgcG9zc2libGUgYXBwcm9hY2gsIGJ1dCByaWdodCBub3cNCj4gPiB0aGVyZSBhcmUgbm90IG1h bnkgYWx0ZXJuYXRpdmVzIHdpdGhpbiBEUERLLg0KPiANCj4gV2hhdCBleGFjdGx5IGlzIGFuIGFw cGxpY2F0aW9uIHN1cHBvc2VkIHRvIGRvIGlmIHR4X3ByZXBhcmUoKSBkb2Vzbid0IGFjY2VwdCB0 aGUgZnVsbCBidXJzdD8gSXQgZG9lc24ndCByZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBp cw0KPiB3cm9uZy4NCg0KSXQgcHJvdmlkZXMgc29tZSBpbmZvcm1hdGlvbiwgYnV0IGl0IGlzICp2 ZXJ5KiBsaW1pdGVkOiBqdXN0IGluZGV4IG9mICdiYWQnIHBhY2tldCBhbmQgZXJyb3IgY29kZS4N CkluIHRoZW9yeSBhcHAgY2FuIHRyeSB0byBoYW5kbGUgaXQgaW4gYSAnc21hcnQnIHdheTogbGV0 IHNheSBpZiBFTk9UU1VQIGlzIHJldHVybmVkLCB0aGVuIHRyeSB0byBkaXNhYmxlIGFsbCBIVyBv ZmZsb2Fkcw0KYW5kIGRvIGFsbCBpbiBTVy4gQnV0IGFnYWluLCBpdCBpcyBtdWNoIGJldHRlciB0 byBkbyBzbyAqYmVmb3JlKiBzdWJtaXR0aW5nIHBhY2tldHMgZm9yIFRYLCBzbyBpbiBwcmFjdGlj ZSBldmVyeW9uZQ0KanVzdCBkcm9wIHN1Y2ggJ2JhZCcgcGFja2V0cy4gICANCg0KIERyb3BwaW5n IHRoZSBwYWNrZXRzIG1pZ2h0IG5vdCBiZSBhbiBvcHRpb24sIGUuZy4gZm9yIGFwcGxpY2F0aW9u cyB1c2VkIGluIGxpZmUgc3VwcG9ydCBvciB0ZWxlLW1lZGljaW5lLg0KDQpJZiB0aGUgcGFja2V0 IGlzICdiYWQnLCB0aGVuIGl0IGlzIG11Y2ggYmV0dGVyIHRvIGRyb3AgaXQsIHRoZW4gVFggY29y cnVwdGVkIHBhY2tldCBvciBldmVuIGhhbmcgTklDIEhXIGNvbXBsZXRlbHkuDQpUaG91Z2ggb2Zm LWNvdXJzZSBpdCBpcyBtdWNoIGJldHRlciB0byBoYXZlIGFuIGFwcCB0aGF0IHdvdWxkIGNoZWNr IGZvciBsaW1pdGF0aW9ucyB0aGF0IGNhbiBiZSBjaGVja2VkIGJ5IEFQSSBwcm92aWRlZA0KYW5k IGVuYWJsZSBvbmx5IHN1cHBvcnRlZCBvZmZsb2Fkcy4gICANCg0KPiBJZiBsaW1pdGF0aW9ucyBh cmUgZG9jdW1lbnRlZCwgYW4gYXBwbGljYXRpb24gY2FuIHVzZSB0aGUgbG93ZXN0IGNvbW1vbiBk ZW5vbWluYXRvciBvZiB0aGUgTklDcyBpdCBzdXBwb3J0cy4gQW5kIGlmIHRoZSBhcHBsaWNhdGlv biBpcw0KPiBzdXBwb3NlZCB0byB3b3JrIGluIGdlbmVyYWwsIHRoYXQgYmVjb21lcyB0aGUgbG93 ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBhbGwgTklDcy4NCg0KSSBhZ3JlZTogZm9yIGxpbWl0 YXRpb25zIHRoYXQgY2FuIGJlIGV4dHJhY3RlZCB3aXRoIGdlbmVyaWMgQVBJLCBsaWtlOg0KbnVt YmVyIG9mIHNlZ21lbnRzIHBlciBwYWNrZXQsIHN1cHBvcnRlZCBUWCBvZmZsb2FkcywgbWJ1ZiBm aWxlZHMgdGhhdCBtdXN0IGJlIHByb3ZpZGVkIGZvciBlYWNoIFRYIG9mZmxvYWQsICBldGMuIC0N Cml0IGlzIHJlc3BvbnNpYmlsaXR5IG9mIHdlbGwtd3JpdHRlbiBhcHBsaWNhdGlvbiB0byBvYmV5 IGFsbCBvZiB0aGVtLg0KWWVzLCBtYW55IHR4X3ByZXBhcmUoKSBpbXBsZW1lbnRhdGlvbnMgZG8g IHN1Y2ggY2hlY2tzIGFueXdheSwgYnV0IGZyb20gbXkgcGVyc3BlY3RpdmUgaXQgaXMgc29ydCBv ZiBsYXN0LWxpbmUgb2YgZGVmZW5zZS4NCkZvciB3ZWxsIHdyaXR0ZW4gYXBwbGljYXRpb24gdGhh dCBzaG91bGQganVzdCBuZXZlciBoYXBwZW4uIA0KQnV0IHRoZXJlIGlzIG9uZSBtb3JlIGltcG9y dGFudCByZXNwb25zaWJpbGl0eSBvZiB0eF9wcmVwYXJlKCkgLSAgaXQgcGVyZm9ybXMgUE1EIHNw ZWNpZmljIHBhY2tldCBtb2RpZmljYXRpb25zIGZvciByZXF1ZXN0ZWQgb2ZmbG9hZHMuDQpBcyBJ IGFscmVhZHkgbWVudGlvbmVkIGZvciBJbnRlbCBOSUNzIC0gaXQgZG9lcyBwc2V1ZG8taGVhZGVy IGNrc3VtIGNhbGN1Y2F0aW9uLCBmb3IgcGFja2V0cyB3aXRoIHNpemUgbGVzcyB0aGVuIG1pbmlt YWwsIGl0IGNhbg0KcHJvYmFibHkgZG8gcGFkZGluZyAoZXZlbiBpZiBkb2Vzbid0IGRvIGl0IHJp Z2h0IG5vdyksIGZvciBzb21lIG90aGVyIFBNRHMgLSBtaWdodCBiZSBzb21ldGhpbmcgZWxzZSwg SSBkaWRuJ3QgY2hlY2suDQpPYnZpb3VzbHkgaXQgc2F2ZXMgYXBwIGRldmVsb3BlciBmcm9tIGEg YnVyZGVuIHRvIGRvIGFsbCB0aGVzZSB0aGluZ3Mgb24gaGlzIG93bi4NCg0KPiBJdCBsb29rcyBs aWtlIHR4X3ByZXBhcmUoKSBoYXMgYmVjb21lIGEgaG9ycmlibGUgd29ya2Fyb3VuZCBmb3IgdW5k b2N1bWVudGVkIGxpbWl0YXRpb25zLg0KPiANCj4gTGltaXRhdGlvbnMgZHVlIHRvIGhhcmR3YXJl IGFuZC9vciBzb2Z0d2FyZSB0cmFkZW9mZnMgYXJlIHVuYXZvaWRhYmxlLCBzbyB3ZSBoYXZlIHRv IGxpdmUgd2l0aCB0aGVtOyBidXQgd2Ugc2hvdWxkIG5vdCBhY2NlcHQNCj4gUE1EcyB3aXRoIHVu ZG9jdW1lbnRlZCBsaW1pdGF0aW9ucy4NCg0KQXMgSSBhbHJlYWR5IHNhaWQsIG1vcmUgZG9jdW1l bnRhdGlvbiBuZXZlciBodXJ0cywgYnV0IGZvciB0aGF0IGNhc2UsIEkgdGhpbmsgaXQgaXMgbm90 IGVub3VnaC4NCkkgZXhwZWN0IFBNRCB0byBwcm92aWRlIGEgdHhfcHJlcGFyZSgpIGltcGxlbWVu dGF0aW9uIHRoYXQgd291bGQgZGVhbCB3aXRoIHN1Y2ggc3BlY2lmaWMgdGhpbmdzLiANCiANCkFu eXdheSwgYmFjayB0byB0aGUgb3JpZ2luYWwgcGF0Y2ggLSBJIGxvb2tlZCBhdCBpdCBvbmNlIGFn YWluLCBhbmQgcmVhbGl6ZWQgdGhhdCB0aGUgcHJvYmxlbQ0KaXMganVzdCBpbiB0aGUgdW5zdXBw b3J0ZWQgbnVtYmVyIG9mIHNlZ21lbnRzLg0KQXMgd2UgZGlzY3Vzc2VkIGFib3ZlIC0gc3VjaCBs aW1pdGF0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBieSB3ZWxsIHdyaXR0ZW4gYXBwLA0KYnV0IG5v bmUgb2YgRFBESyBhcHBzIGRvZXMgaXQgcmlnaHQgbm93Lg0KU28gcHJvYmFibHkgaXQgaXMgZ29v ZCBvcHBvcnR1bml0eSB0byBkbyB0aGluZ3MgaW4gYSBwcm9wZXIgd2F5IGFuZCBpbnRyb2R1Y2Ug c3VjaCBjaGVja3MNCmluIHRlc3RwbWQgOykNCkthaXdlbiwgV0RZVD8gICANCg0KPiA+DQo+ID4g Pg0KPiA+ID4gPiBJZiBpdCBzdGlsbCB3b3JrcyBmb3Igc29tZSBjYXNlcywgdGhhdCdzIGEgbHVj a3kgY29pbmNpZGVuY2UsIGJ1dA0KPiA+IG5vdA0KPiA+ID4gPiB0aGUgZXhwZWN0ZWQgYmVoYXZp b3IuDQo+ID4gPiA+IEFib3V0IHBlcmZvcm1hbmNlIC0gZmlyc3Qgd2UgY2FuIGNoZWNrIGlzIHRo YXQgcmVhbGx5IGEgZHJvcC4NCj4gPiA+ID4gQWxzbyBhcyBJIHJlbWVtYmVyIG1vc3QgZHJpdmVy cyBzZXQgaXQgdG8gbm9uLU5VTEwgdmFsdWUsIG9ubHkgd2hlbg0KPiA+ID4gPiBzb21lIFRYIG9m ZmxvYWRzIHdlcmUNCj4gPiA+ID4gZW5hYmxlZCBieSB0aGUgdXNlciBvbiB0aGF0IHBvcnQsIHNv IGhvcGVmdWxseSBmb3Igc2ltcGxlIGNhc2UgKG9uZQ0KPiA+ID4gPiBzZWdtZW50LCBubyB0eCBv ZmZsb2FkcykgaXQNCj4gPiA+ID4gc2hvdWxkIGJlIG5lZ2xpZ2libGUuDQo+ID4gPiA+IEFnYWlu LCB3ZSBjYW4gYWRkIG1hbnVhbCBjaGVjayBpbiB0ZXN0cG1kIHR4LW9ubHkgY29kZSB0byBkZWNp ZGUgZG8NCj4gPiB3ZQ0KPiA+ID4gPiBuZWVkIGEgVFggcHJlcGFyZQ0KPiA+ID4gPiB0byBiZSBj YWxsZWQgb3Igbm90Lg0KPiA+ID4gPiBLb25zdGFudGluDQo=