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 85C9343BED; Mon, 26 Feb 2024 14:26:18 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7050B42E18; Mon, 26 Feb 2024 14:26:18 +0100 (CET) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 0C85A40144; Mon, 26 Feb 2024 14:26:14 +0100 (CET) Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4Tk1W93F3Hz6K9MB; Mon, 26 Feb 2024 21:22:29 +0800 (CST) Received: from frapeml500007.china.huawei.com (unknown [7.182.85.172]) by mail.maildlp.com (Postfix) with ESMTPS id A992F1417EB; Mon, 26 Feb 2024 21:26:12 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml500007.china.huawei.com (7.182.85.172) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 26 Feb 2024 14:26:12 +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; Mon, 26 Feb 2024 14:26:12 +0100 From: Konstantin Ananyev To: Andrew Rybchenko , =?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" , 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/rEgAgADB6ZCAAA2bsIAE2D1ggALj3kCADqCK0IAA9QsAgAUX7nA= Date: Mon, 26 Feb 2024 13:26:12 +0000 Message-ID: <2b264320ddd5499b8e3899708a44cab6@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> <670ee735254244878e4b1247a8850be5@huawei.com> <545e4c08-f4cf-4246-9ed3-22882c754640@oktetlabs.ru> In-Reply-To: <545e4c08-f4cf-4246-9ed3-22882c754640@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.157.27] 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 DQoNCj4gPj4+Pj4+PiBUU08gYnJlYWtzIHdoZW4gTVNTIHNwYW5zIG1vcmUgdGhhbiA4IGRhdGEg ZnJhZ21lbnRzLiBUaG9zZQ0KPiA+Pj4+Pj4+IHBhY2tldHMgd2lsbCBiZSBkcm9wcGVkIGJ5IFR4 IHByZXBhcmF0aW9uIEFQSSwgYnV0IGl0IHdpbGwNCj4gPj4+IGNhdXNlDQo+ID4+Pj4+Pj4gTURE IGV2ZW50IGlmIHR4b25seSBmb3J3YXJkaW5nIGVuZ2luZSBkb2VzIG5vdCBjYWxsIHRoZSBUeA0K PiA+Pj4+PiBwcmVwYXJhdGlvbg0KPiA+Pj4+Pj4+IEFQSSBiZWZvcmUgdHJhbnNtaXR0aW5nIHBh Y2tldHMuDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiB0eG9ubHkgaXMgdXNlZCBjb21t b25seSwgYWRkaW5nIFR4IHByZXBhcmUgZm9yIGEgc3BlY2lmaWMgY2FzZQ0KPiA+Pj4gbWF5DQo+ ID4+Pj4+PiBpbXBhY3QgcGVyZm9ybWFuY2UgZm9yIHVzZXJzLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ IFdoYXQgaGFwcGVucyB3aGVuIGRyaXZlciB0aHJvd3MgTUREIChNYWxpY2lvdXMgRHJpdmVyIERl dGVjdGlvbikNCj4gPj4+Pj4gZXZlbnQsDQo+ID4+Pj4+PiBjYW4ndCBpdCBiZSBpZ25vcmVkPyBB cyB5b3UgYXJlIGFscmVhZHkgT0sgdG8gZHJvcCB0aGUgcGFja2V0LA0KPiA+Pj4gY2FuDQo+ID4+ Pj4+PiBkZXZpY2UgYmUgY29uZmlndXJlZCB0byBkcm9wIHRoZXNlIHBhY2thZ2VzPw0KPiA+Pj4+ Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPciBhcyBKZXJpbiBzdWdnZXN0ZWQgYWRkaW5nIGEgbmV3 IGZvcndhcmRpbmcgZW5naW5lIGlzIGENCj4gPj4+IHNvbHV0aW9uLA0KPiA+Pj4+PiBidXQNCj4g Pj4+Pj4+IHRoYXQgd2lsbCBjcmVhdGUgY29kZSBkdXBsaWNhdGlvbiwgSSBwcmVmZXIgdG8gbm90 IGhhdmUgaXQgaWYNCj4gPj4+IHRoaXMNCj4gPj4+Pj4gY2FuDQo+ID4+Pj4+PiBiZSBoYW5kbGVk IGluIGRldmljZSBsZXZlbC4NCj4gPj4+Pj4NCj4gPj4+Pj4gQWN0dWFsbHkgSSBhbSBhZ3JlZSB3 aXRoIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIC0gd2hlbiBUWCBvZmZsb2Fkcw0KPiA+Pj4+PiBh bmQvb3IgbXVsdGlzZWdzIGFyZSBlbmFibGVkLA0KPiA+Pj4+PiB1c2VyIHN1cHBvc2VkIHRvIGlu dm9rZSBldGhfdHhfcHJlcGFyZSgpLg0KPiA+Pj4+PiBOb3QgZG9pbmcgdGhhdCBzZWVtcyBsaWtl IGEgYnVnIHRvIG1lLg0KPiA+Pj4+DQo+ID4+Pj4gSSBzdHJvbmdseSBkaXNhZ3JlZSB3aXRoIHRo YXQgc3RhdGVtZW50LCBLb25zdGFudGluIQ0KPiA+Pj4+IEl0IGlzIG5vdCBkb2N1bWVudGVkIGFu eXdoZXJlIHRoYXQgdXNpbmcgVFggb2ZmbG9hZHMgYW5kL29yIG11bHRpc2Vncw0KPiA+Pj4gcmVx dWlyZXMgY2FsbGluZyBydGVfZXRoX3R4X3ByZXBhcmUoKSBiZWZvcmUNCj4gPj4+PiBydGVfZXRo X3R4X2J1cnN0KCkuIEFuZCBub25lIG9mIHRoZSBleGFtcGxlcyBkbyBpdC4NCj4gPj4+DQo+ID4+ PiBJbiBmYWN0LCB3ZSBkbyB1c2UgaXQgZm9yIHRlc3QtcG1kL2NzdW1vbmx5LmMuDQo+ID4+PiBB Ym91dCBvdGhlciBzYW1wbGUgYXBwczoNCj4gPj4+IEFGQUlLLCBub3QgbWFueSBvZiBvdGhlciBE UERLIGFwcHMgZG8gdXNlIEw0IG9mZmxvYWRzLg0KPiA+Pj4gUmlnaHQgbm93IHNwZWNpYWwgdHJl YXRtZW50IChwc2V1ZG8taGVhZGVyIGNrc3VtIGNhbGN1bGF0aW9uKSBpcyBuZWVkZWQNCj4gPj4+ IG9ubHkgZm9yIEw0IG9mZmxvYWRzIChDS1NVTSwgU0VHKS4NCj4gPj4+IFNvLCBtYWpvcml0eSBv ZiBvdXIgYXBwcyB3aG8gcmVseSBvbiBvdGhlciBUWCBvZmZsb2FkcyAobXVsdGktc2VnLCBpcHY0 DQo+ID4+PiBja3N1bSwgdmxhbiBpbnNlcnRpb24pIGhhcHBpbHkgcnVuIHdpdGhvdXQNCj4gPj4+ IGNhbGxpbmcgdHhfcHJlcGFyZSgpLCBldmVuIHRob3VnaCBpdCBpcyBub3QgdGhlIHNhZmVzdCB3 YXkuDQo+ID4+Pg0KPiA+Pj4+DQo+ID4+Pj4gSW4gbXkgb3BpbmlvbjoNCj4gPj4+PiBJZiBzb21l IGRyaXZlciBoYXMgbGltaXRhdGlvbnMgZm9yIGEgZmVhdHVyZSwgZS5nLiBtYXggOCBmcmFnbWVu dHMsDQo+ID4+PiBpdCBzaG91bGQgYmUgZG9jdW1lbnRlZCBmb3IgdGhhdCBkcml2ZXIsIHNvIHRo ZSBhcHBsaWNhdGlvbg0KPiA+Pj4+IGRldmVsb3BlciBjYW4gbWFrZSB0aGUgYXBwcm9wcmlhdGUg ZGVjaXNpb25zIHdoZW4gZGVzaWduaW5nIHRoZQ0KPiA+Pj4gYXBwbGljYXRpb24uDQo+ID4+Pj4g RnVydGhlcm1vcmUsIHdlIGhhdmUgQVBJcyBmb3IgdGhlIGRyaXZlcnMgdG8gZXhwb3NlIHRvIHRo ZQ0KPiA+Pj4gYXBwbGljYXRpb25zIHdoYXQgdGhlIGRyaXZlciBzdXBwb3J0cywgc28gdGhlIGFw cGxpY2F0aW9uIGNhbiBjb25maWd1cmUNCj4gPj4+PiBpdHNlbGYgb3B0aW1hbGx5IGF0IHN0YXJ0 dXAuIFBlcmhhcHMgdGhvc2UgQVBJcyBuZWVkIHRvIGJlIGV4cGFuZGVkLg0KPiA+Pj4+IEFuZCBp ZiBhIGZlYXR1cmUgbGltaXRhdGlvbiBpcyBjb21tb24gYWNyb3NzIHRoZSBtYWpvcml0eSBvZiBk cml2ZXJzLA0KPiA+Pj4gdGhhdCBsaW1pdGF0aW9uIHNob3VsZCBiZSBtZW50aW9uZWQgaW4gdGhl IGRvY3VtZW50YXRpb24gb2YgdGhlDQo+ID4+Pj4gZmVhdHVyZSBpdHNlbGYuDQo+ID4+Pg0KPiA+ Pj4gTWFueSBvZiBzdWNoIGxpbWl0YXRpb25zICphcmUqIGRvY3VtZW50ZWQgYW5kIGluIGZhY3Qg d2UgZG8gaGF2ZSBhbiBBUEkNCj4gPj4+IHRvIGNoZWNrIG1heCBzZWdtZW50cyB0aGF0IGVhY2gg ZHJpdmVyIHN1cHBvcnQsDQo+ID4+PiBzZWUgc3RydWN0IHJ0ZV9ldGhfZGVzY19saW0uDQo+ID4+ DQo+ID4+IFllcywgdGhpcyBpcyB0aGUga2luZCBvZiBBUEkgd2Ugc2hvdWxkIHByb3ZpZGUsIHNv IHRoZSBhcHBsaWNhdGlvbiBjYW4gY29uZmlndXJlIGl0c2VsZiBhcHByb3ByaWF0ZWx5Lg0KPiA+ Pg0KPiA+Pj4gVGhlIHByb2JsZW0gaXM6DQo+ID4+PiAtIG5vbmUgb2Ygb3VyIHNhbXBsZSBhcHAg ZG9lcyBwcm9wZXIgY2hlY2sgb24gdGhlc2UgdmFsdWVzLCBzbyB1c2Vycw0KPiA+Pj4gZG9uJ3Qg aGF2ZSBhIGdvb2QgZXhhbXBsZSBob3cgdG8gZG8gaXQuDQo+ID4+DQo+ID4+IEFncmVlZC4NCj4g Pj4gQWRkaW5nIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gZG8gaXQgcHJvcGVybHkgd291bGQg YmUgdGhlIGJlc3Qgc29sdXRpb24uDQo+ID4+IENhbGxpbmcgdHhfcHJlcGFyZSgpIGluIHRoZSBl eGFtcGxlcyBpcyBjZXJ0YWlubHkgbm90IHRoZSBzb2x1dGlvbi4NCj4gPj4NCj4gPj4+IC0gd2l0 aCBjdXJyZW50IERQREsgQVBJIG5vdCBhbGwgb2YgSFcvUE1EIHJlcXVpcmVtZW50cyBjb3VsZCBi ZQ0KPiA+Pj4gZXh0cmFjdGVkIHByb2dyYW1tYXRpY2FsbHk6DQo+ID4+PiAgICBsZXQgc2F5IG1h am9yaXR5IG9mIEludGVsIFBNRHMgZm9yIFRDUCBvZmZsb2FkcyBleHBlY3QgcHNldWRvLWhlYWRl cg0KPiA+Pj4gY2tzdW0gdG8gYmUgcHJlLWNhbGN1bGF0ZWQgYnkgdGhlIFNXLg0KPiA+Pg0KPiA+ PiBJIGhvcGUgdGhpcyByZXF1aXJlbWVudCBpcyBkb2N1bWVudGVkIHNvbWV3aGVyZS4NCj4gPj4N Cj4gPj4+ICAgIGFub3RoZXIgZXhhbXBsZSwgc29tZSBIVyBleHBlY3RzIHBrdF9sZW4gdG8gYmUg YmlnZ2VyIHRoZW4gc29tZQ0KPiA+Pj4gdGhyZXNob2xkIHZhbHVlLCBvdGhlcndpc2UgSFcgaGFu ZyBtYXkgYXBwZWFyLg0KPiA+Pg0KPiA+PiBJIGhvcGUgdGhpcyByZXF1aXJlbWVudCBpcyBhbHNv IGRvY3VtZW50ZWQgc29tZXdoZXJlLg0KPiA+DQo+ID4gTm8gaWRlYSwgSSBmb3VuZCBpdCBvbmx5 IGluIHRoZSBjb2RlLg0KPiANCj4gSU1ITyBUeCBidXJzdCBtdXN0IGNoZWNrIHN1Y2ggbGltaXRh dGlvbnMuIElmIHlvdSBtYWRlIHlvdXIgSFcgc2ltcGxlcg0KPiAob3IganVzdCBsb3N0IGl0IG9u IGluaXRpYWwgdGVzdGluZyksIHBheSBpbiB5b3VyIGRyaXZlcnMgKG9yIHlvdXINCj4gSFcrZHJp dmVyIHdpbGwgYmUgdW51c2FibGUgYmVjYXVzZSBvZiBzdWNoIHByb2JsZW1zKS4NCj4gDQo+ID4+ IEdlbmVyYWxseSwgaWYgdGhlIHJlcXVpcmVtZW50cyBjYW5ub3QgYmUgZXh0cmFjdGVkIHByb2dy YW1tYXRpY2FsbHksIHRoZXkgbXVzdCBiZSBwcm9taW5lbnRseSBkb2N1bWVudGVkLCBsaWtlIHRo aXMgbm90ZSB0bw0KPiA+PiBydGVfZXRoX3J4X2J1cnN0KCk6DQo+ID4NCj4gPiBPYnZpb3VzbHks IG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBpcyBhbHdheXMgZ29vZCwgYnV0Li4uDQo+ID4g UmlnaHQgbm93IHdlIGhhdmUgNTArIGRpZmZlcmVudCBQTURzIGZyb20gZGlmZmVyZW50IHZlbmRv cnMuDQo+ID4gRXZlbiBpZiBlYWNoIGFuZCBldmVyeSBvZiB0aGVtIHdpbGwgY2FyZWZ1bGx5IGRv Y3VtZW50IGFsbCBwb3NzaWJsZSBsaW1pdGF0aW9ucyBhbmQgbmVjZXNzYXJ5IHByZXBhcmF0aW9u IHN0ZXBzLA0KPiA+IGhvdyBEUERLIGFwcCBkZXZlbG9wZXIgc3VwcG9zZWQgdG8gIGRlYWwgd2l0 aCBhbGwgdGhhdD8NCj4gPiBEbyB5b3UgZXhwZWN0IGV2ZXJ5b25lLCB0byByZWFkIGNhcmVmdWxs eSB0aHJvdWdoIGFsbCBvZiB0aGVtLCBhbmQgaGFuZGxlIGFsbCBvZiB0aGVtIHByb3Blcmx5IG9o IGhpcyBvd24NCj4gPiBpbiBlYWNoIGFuZCBldmVyeSBEUERLIGFwcCBoZSBpcyBnb2luZyB0byB3 cml0ZT8NCj4gPiBUaGF0IHNlZW1zIHVucmVhbGlzdGljLg0KPiA+IEFnYWluIHdoYXQgdG8gZG8g d2l0aCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OiB3aGVuIG5ldyBkcml2ZXIgKHdpdGggbmV3IGxp bWl0YXRpb25zKSB3aWxsIGFyaXNlDQo+ID4gKmFmdGVyKiB5b3VyIGFwcCBpcyBhbHJlYWR5IHdy aXR0ZW4gYW5kIHRlc3RlZD8NCj4gDQo+ICsxDQo+IA0KPiA+Pg0KPiA+PiAgICogQG5vdGUNCj4g Pj4gICAqICAgU29tZSBkcml2ZXJzIHVzaW5nIHZlY3RvciBpbnN0cnVjdGlvbnMgcmVxdWlyZSB0 aGF0ICpuYl9wa3RzKiBpcw0KPiA+PiAgICogICBkaXZpc2libGUgYnkgNCBvciA4LCBkZXBlbmRp bmcgb24gdGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4NCj4gDQo+IEknbSB3b25kZXJpbmcgd2hh dCBhcHBsaWNhdGlvbiBzaG91bGQgZG8gaWYgaXQgbmVlZHMgdG8gc2VuZCBqdXN0IG9uZQ0KPiBw YWNrZXQgYW5kIGRvIGl0IG5vdy4gSU1ITywgc3VjaCBsaW1pdGF0aW9ucyBhcmUgbm90IGFjY2Vw dGFibGUuDQo+IA0KPiA+Pg0KPiA+Pj4gLSBBcyBuZXcgSFcgYW5kIFBNRCBrZWVwIGFwcGVhcmlu ZyBpdCBpcyBoYXJkIHRvIHByZWRpY3Qgd2hhdCBleHRyYQ0KPiA+Pj4gbGltaXRhdGlvbnMvcmVx dWlyZW1lbnRzIHdpbGwgYXJpc2UsDQo+ID4+PiAgICB0aGF0J3Mgd2h5IHR4X3ByZXBhcmUoKSB3 YXMgaW50cm9kdWNlZCBhcyBzIGRyaXZlciBvcC4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBXZSBk b24ndCB3YW50IHRvIGNoZWNrIGluIHRoZSBmYXN0IHBhdGggd2hhdCBjYW4gYmUgY2hlY2tlZCBh dA0KPiA+Pj4gc3RhcnR1cCBvciBidWlsZCB0aW1lIQ0KPiA+Pj4NCj4gPj4+IElmIHlvdXIgYXBw IHN1cHBvc2VkIHRvIHdvcmsgd2l0aCBqdXN0IGEgZmV3LCBrbm93biBpbiBhZHZhbmNlLCBOSUMN Cj4gPj4+IG1vZGVscywgdGhlbiBzdXJlLCB5b3UgY2FuIGRvIHRoYXQuDQo+ID4+PiBGb3IgYXBw cyB0aGF0IHN1cHBvc2VkIHRvIHdvcmsgJ2luIGdlbmVyYWwnICB3aXRoIGFueSBwb3NzaWJsZSBQ TURzDQo+ID4+PiB0aGF0IERQREsgc3VwcG9ydHMgLSB0aGF0IG1pZ2h0IGJlIGEgcHJvYmxlbS4N Cj4gPj4+IFRoYXQncyB3aHkgdHhfcHJlcGFyZSgpIHdhcyBpbnRyb2R1Y2VkIGFuZCBpdCBpcyBz dHJvbmdseSByZWNvbW1lbmRlZA0KPiA+Pj4gdG8gdXNlIGl0IGJ5IHRoZSBhcHBzIHRoYXQgZG8g dXNlIFRYIG9mZmxvYWRzLg0KPiA+Pj4gUHJvYmFibHkgdHhfcHJlcGFyZSgpIGlzIG5vdCB0aGUg YmVzdCBwb3NzaWJsZSBhcHByb2FjaCwgYnV0IHJpZ2h0IG5vdw0KPiA+Pj4gdGhlcmUgYXJlIG5v dCBtYW55IGFsdGVybmF0aXZlcyB3aXRoaW4gRFBESy4NCj4gPj4NCj4gPj4gV2hhdCBleGFjdGx5 IGlzIGFuIGFwcGxpY2F0aW9uIHN1cHBvc2VkIHRvIGRvIGlmIHR4X3ByZXBhcmUoKSBkb2Vzbid0 IGFjY2VwdCB0aGUgZnVsbCBidXJzdD8gSXQgZG9lc24ndCByZXR1cm4gaW5mb3JtYXRpb24gYWJv dXQNCj4gd2hhdCBpcw0KPiA+PiB3cm9uZy4NCj4gPg0KPiA+IEl0IHByb3ZpZGVzIHNvbWUgaW5m b3JtYXRpb24sIGJ1dCBpdCBpcyAqdmVyeSogbGltaXRlZDoganVzdCBpbmRleCBvZiAnYmFkJyBw YWNrZXQgYW5kIGVycm9yIGNvZGUuDQo+ID4gSW4gdGhlb3J5IGFwcCBjYW4gdHJ5IHRvIGhhbmRs ZSBpdCBpbiBhICdzbWFydCcgd2F5OiBsZXQgc2F5IGlmIEVOT1RTVVAgaXMgcmV0dXJuZWQsIHRo ZW4gdHJ5IHRvIGRpc2FibGUgYWxsIEhXIG9mZmxvYWRzDQo+ID4gYW5kIGRvIGFsbCBpbiBTVy4g QnV0IGFnYWluLCBpdCBpcyBtdWNoIGJldHRlciB0byBkbyBzbyAqYmVmb3JlKiBzdWJtaXR0aW5n IHBhY2tldHMgZm9yIFRYLCBzbyBpbiBwcmFjdGljZSBldmVyeW9uZQ0KPiA+IGp1c3QgZHJvcCBz dWNoICdiYWQnIHBhY2tldHMuDQo+ID4NCj4gPiAgIERyb3BwaW5nIHRoZSBwYWNrZXRzIG1pZ2h0 IG5vdCBiZSBhbiBvcHRpb24sIGUuZy4gZm9yIGFwcGxpY2F0aW9ucyB1c2VkIGluIGxpZmUgc3Vw cG9ydCBvciB0ZWxlLW1lZGljaW5lLg0KPiANCj4gQ3JpdGljYWwgYXBwbGljYXRpb25zIHNob3Vs ZCBiZSBhYmxlIHRvIGRvIGFsbCBUeCBvZmZsb2FkcyBpbiBTVyBhbmQNCj4gcmV0cnkuIE9mIGNv dXJzZSwgdmFyaW91cyBzdGF0aXN0aWNzIGFuZCBsb2dzIHNob3VsZCBoZWxwIHRvIGltcHJvdmUg dGhlDQo+IGFwcGxpY2F0aW9uLg0KPiANCj4gPiBJZiB0aGUgcGFja2V0IGlzICdiYWQnLCB0aGVu IGl0IGlzIG11Y2ggYmV0dGVyIHRvIGRyb3AgaXQsIHRoZW4gVFggY29ycnVwdGVkIHBhY2tldCBv ciBldmVuIGhhbmcgTklDIEhXIGNvbXBsZXRlbHkuDQo+IA0KPiBJTUhPIFR4IGJ1cnN0IG11c3Qg ZHJvcCBwYWNrZXQgd2hpY2ggY291bGQgaGFuZyBOSUMgSFcgY29tcGxldGVseS4gSQ0KPiByZWFs aXplIHRoYXQgaXQgaXMgYW4gZXh0cmEgY2hlY2tzIGFuZCBwZXJmb3JtYW5jZSBkcm9wLCBidXQg dmVuZG9yDQo+IHNob3VsZCBwYXkgaW4gcGVyZm9ybWFuY2UgaWYgSFcgaXMgbm90IGdvb2QgZW5v dWdoLg0KPiANCj4gPiBUaG91Z2ggb2ZmLWNvdXJzZSBpdCBpcyBtdWNoIGJldHRlciB0byBoYXZl IGFuIGFwcCB0aGF0IHdvdWxkIGNoZWNrIGZvciBsaW1pdGF0aW9ucyB0aGF0IGNhbiBiZSBjaGVj a2VkIGJ5IEFQSSBwcm92aWRlZA0KPiA+IGFuZCBlbmFibGUgb25seSBzdXBwb3J0ZWQgb2ZmbG9h ZHMuDQo+IA0KPiBZZXMsIHRoYXQncyB3aHkgQVBJIHRvIGdldCBsaW1pdGF0aW9uIGlzIG11Y2gg YmV0dGVyIHRoYW4gZG9jdW1lbnRhdGlvbi4NCj4gDQo+ID4+IElmIGxpbWl0YXRpb25zIGFyZSBk b2N1bWVudGVkLCBhbiBhcHBsaWNhdGlvbiBjYW4gdXNlIHRoZSBsb3dlc3QgY29tbW9uIGRlbm9t aW5hdG9yIG9mIHRoZSBOSUNzIGl0IHN1cHBvcnRzLiBBbmQgaWYgdGhlDQo+IGFwcGxpY2F0aW9u IGlzDQo+ID4+IHN1cHBvc2VkIHRvIHdvcmsgaW4gZ2VuZXJhbCwgdGhhdCBiZWNvbWVzIHRoZSBs b3dlc3QgY29tbW9uIGRlbm9taW5hdG9yIG9mIGFsbCBOSUNzLg0KPiA+DQo+ID4gSSBhZ3JlZTog Zm9yIGxpbWl0YXRpb25zIHRoYXQgY2FuIGJlIGV4dHJhY3RlZCB3aXRoIGdlbmVyaWMgQVBJLCBs aWtlOg0KPiA+IG51bWJlciBvZiBzZWdtZW50cyBwZXIgcGFja2V0LCBzdXBwb3J0ZWQgVFggb2Zm bG9hZHMsIG1idWYgZmlsZWRzIHRoYXQgbXVzdCBiZSBwcm92aWRlZCBmb3IgZWFjaCBUWCBvZmZs b2FkLCAgZXRjLiAtDQo+ID4gaXQgaXMgcmVzcG9uc2liaWxpdHkgb2Ygd2VsbC13cml0dGVuIGFw cGxpY2F0aW9uIHRvIG9iZXkgYWxsIG9mIHRoZW0uDQo+ID4gWWVzLCBtYW55IHR4X3ByZXBhcmUo KSBpbXBsZW1lbnRhdGlvbnMgZG8gIHN1Y2ggY2hlY2tzIGFueXdheSwgYnV0IGZyb20gbXkgcGVy c3BlY3RpdmUgaXQgaXMgc29ydCBvZiBsYXN0LWxpbmUgb2YgZGVmZW5zZS4NCj4gPiBGb3Igd2Vs bCB3cml0dGVuIGFwcGxpY2F0aW9uIHRoYXQgc2hvdWxkIGp1c3QgbmV2ZXIgaGFwcGVuLg0KPiA+ IEJ1dCB0aGVyZSBpcyBvbmUgbW9yZSBpbXBvcnRhbnQgcmVzcG9uc2liaWxpdHkgb2YgdHhfcHJl cGFyZSgpIC0gIGl0IHBlcmZvcm1zIFBNRCBzcGVjaWZpYyBwYWNrZXQgbW9kaWZpY2F0aW9ucyBm b3IgcmVxdWVzdGVkDQo+IG9mZmxvYWRzLg0KPiA+IEFzIEkgYWxyZWFkeSBtZW50aW9uZWQgZm9y IEludGVsIE5JQ3MgLSBpdCBkb2VzIHBzZXVkby1oZWFkZXIgY2tzdW0gY2FsY3VjYXRpb24sIGZv ciBwYWNrZXRzIHdpdGggc2l6ZSBsZXNzIHRoZW4gbWluaW1hbCwgaXQgY2FuDQo+ID4gcHJvYmFi bHkgZG8gcGFkZGluZyAoZXZlbiBpZiBkb2Vzbid0IGRvIGl0IHJpZ2h0IG5vdyksIGZvciBzb21l IG90aGVyIFBNRHMgLSBtaWdodCBiZSBzb21ldGhpbmcgZWxzZSwgSSBkaWRuJ3QgY2hlY2suDQo+ ID4gT2J2aW91c2x5IGl0IHNhdmVzIGFwcCBkZXZlbG9wZXIgZnJvbSBhIGJ1cmRlbiB0byBkbyBh bGwgdGhlc2UgdGhpbmdzIG9uIGhpcyBvd24uDQo+ID4NCj4gPj4gSXQgbG9va3MgbGlrZSB0eF9w cmVwYXJlKCkgaGFzIGJlY29tZSBhIGhvcnJpYmxlIHdvcmthcm91bmQgZm9yIHVuZG9jdW1lbnRl ZCBsaW1pdGF0aW9ucy4NCj4gDQo+IEkgc3Ryb25nbHkgZGlzYWdyZWUuIERvY3VtZW50YXRpb24g aXMgbmV2ZXIgYSBzb2x1dGlvbiBmb3IgYSBnZW5lcmljDQo+IGFwcGxpY2F0aW9uIHdoaWNoIGlz IGludGVuZGVkIHRvIHdvcmsgb24gYW55IEhXIGFuZCBJTUhPIGl0IGlzIHRoZQ0KPiBnb2FsIHRv IGhhdmUgbW9yZSBhbmQgbW9yZSBhcHBsaWNhdGlvbnMgd2hpY2ggd29yayBvbiBhbnkgSFcuDQo+ IA0KPiA+PiBMaW1pdGF0aW9ucyBkdWUgdG8gaGFyZHdhcmUgYW5kL29yIHNvZnR3YXJlIHRyYWRl b2ZmcyBhcmUgdW5hdm9pZGFibGUsIHNvIHdlIGhhdmUgdG8gbGl2ZSB3aXRoIHRoZW07IGJ1dCB3 ZSBzaG91bGQgbm90IGFjY2VwdA0KPiA+PiBQTURzIHdpdGggdW5kb2N1bWVudGVkIGxpbWl0YXRp b25zLg0KPiA+DQo+ID4gQXMgSSBhbHJlYWR5IHNhaWQsIG1vcmUgZG9jdW1lbnRhdGlvbiBuZXZl ciBodXJ0cywgYnV0IGZvciB0aGF0IGNhc2UsIEkgdGhpbmsgaXQgaXMgbm90IGVub3VnaC4NCj4g PiBJIGV4cGVjdCBQTUQgdG8gcHJvdmlkZSBhIHR4X3ByZXBhcmUoKSBpbXBsZW1lbnRhdGlvbiB0 aGF0IHdvdWxkIGRlYWwgd2l0aCBzdWNoIHNwZWNpZmljIHRoaW5ncy4NCj4gDQo+ICsxDQo+ID4g QW55d2F5LCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBwYXRjaCAtIEkgbG9va2VkIGF0IGl0IG9uY2Ug YWdhaW4sIGFuZCByZWFsaXplZCB0aGF0IHRoZSBwcm9ibGVtDQo+ID4gaXMganVzdCBpbiB0aGUg dW5zdXBwb3J0ZWQgbnVtYmVyIG9mIHNlZ21lbnRzLg0KPiA+IEFzIHdlIGRpc2N1c3NlZCBhYm92 ZSAtIHN1Y2ggbGltaXRhdGlvbnMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgd2VsbCB3cml0dGVuIGFw cCwNCj4gPiBidXQgbm9uZSBvZiBEUERLIGFwcHMgZG9lcyBpdCByaWdodCBub3cuDQo+ID4gU28g cHJvYmFibHkgaXQgaXMgZ29vZCBvcHBvcnR1bml0eSB0byBkbyB0aGluZ3MgaW4gYSBwcm9wZXIg d2F5IGFuZCBpbnRyb2R1Y2Ugc3VjaCBjaGVja3MNCj4gPiBpbiB0ZXN0cG1kIDspDQo+IA0KPiAr MSBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgZmllbGRzIGluIGRldmljZSBpbmZvcm1hdGlvbiB0byBy ZXBvcnQgc3VjaA0KPiBsaW1pdGF0aW9ucywgYnV0IGl0IGRvZXMgbm90IHNheSB0aGF0IFR4IHBy ZXBhcmUgc2hvdWxkIGJlIGRyb3BwZWQuDQo+IERyaXZlcnMgd2hpY2ggZG9uJ3QgbmVlZCBUeCBw cmVwYXJlIGtlZXAgaXQgTlVMTCBhbmQgaXQgcmV0dXJucw0KPiBpbW1lZGlhdGVseSBmcm9tIGV0 aGRldi4gU2luY2UgaXQgaXMgZG9uZSBwZXItYnVyc3QsIGl0IHNob3VsZCBub3QNCj4gYWZmZWN0 IHBlcmZvcm1hbmNlIGEgbG90Lg0KPiANCg0KMTAwJSBhZ3JlZS4gSSB0aGluayB0eF9wcmVwYXJl IG5lZWRzIHRvIHN0YXksIGFuZCBpbiBnZW5lcmFsIGhhcyB0byBiZSBzdHJvbmdseSByZWNvbW1l bmRlZA0KZm9yIGFwcHMgdGhhdCBkbyB1c2UgVFggb2ZmbG9hZHMvbXVsdGktc2Vncy4gDQo=