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 58B68489C3; Fri, 24 Oct 2025 10:20:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 12CE940267; Fri, 24 Oct 2025 10:20:27 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 6506F40156 for ; Fri, 24 Oct 2025 10:20:25 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.19.162.254]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4ctG6F4x37zvX99; Fri, 24 Oct 2025 16:19:49 +0800 (CST) Received: from kwepemk200009.china.huawei.com (unknown [7.202.194.75]) by mail.maildlp.com (Postfix) with ESMTPS id DDD15180488; Fri, 24 Oct 2025 16:20:22 +0800 (CST) Received: from dubpeml500001.china.huawei.com (7.214.147.241) by kwepemk200009.china.huawei.com (7.202.194.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 24 Oct 2025 16:20:21 +0800 Received: from dubpeml500001.china.huawei.com ([7.214.147.241]) by dubpeml500001.china.huawei.com ([7.214.147.241]) with mapi id 15.02.1544.011; Fri, 24 Oct 2025 09:20:19 +0100 From: Konstantin Ananyev To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "dev@dpdk.org" , Stephen Hemminger , Wathsala Vithanage , Fengchengwen , "Bruce Richardson" , Thomas Monjalon Subject: RE: [PATCH v7] mbuf: optimize segment prefree Thread-Topic: [PATCH v7] mbuf: optimize segment prefree Thread-Index: AQHcRDjKDZgiVqK2tUaY10zSlJWeBrTQ9TOw Date: Fri, 24 Oct 2025 08:20:19 +0000 Message-ID: <9abef7c705da4f9194fd95e1fdeb004c@huawei.com> References: <20250827213535.21602-1-mb@smartsharesystems.com> <20251023161851.328258-1-mb@smartsharesystems.com> In-Reply-To: <20251023161851.328258-1-mb@smartsharesystems.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.48.158.0] 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 DQoNCj4gDQo+IFJlZmFjdG9yZWQgcnRlX3BrdG1idWZfcHJlZnJlZV9zZWcoKSBmb3IgYm90aCBw ZXJmb3JtYW5jZSBhbmQgcmVhZGFiaWxpdHkuDQo+IA0KPiBXaXRoIHRoZSBvcHRpbWl6ZWQgUlRF X01CVUZfRElSRUNUKCkgbWFjcm8sIHRoZSBjb21tb24gbGlrZWx5IGNvZGUgcGF0aA0KPiBub3cg Zml0cyB3aXRoaW4gb25lIGluc3RydWN0aW9uIGNhY2hlIGxpbmUgb24geDg2LTY0IHdoZW4gYnVp bHQgd2l0aCBHQ0MuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNb3J0ZW4gQnLDuHJ1cCA8bWJAc21h cnRzaGFyZXN5c3RlbXMuY29tPg0KPiBBY2tlZC1ieTogS29uc3RhbnRpbiBBbmFueWV2IDxrb25z dGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbT4NCj4gQWNrZWQtYnk6IENoZW5nd2VuIEZlbmcgPGZl bmdjaGVuZ3dlbkBodWF3ZWkuY29tPg0KPiBSZXZpZXdlZC1ieTogQnJ1Y2UgUmljaGFyZHNvbiA8 YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQo+IC0tLQ0KPiB2NzoNCj4gKiBHbyBiYWNrIHRv IGxvbmcgbmFtZXMgaW5zdGVhZCBvZiBudW1lcmljYWwgdmFsdWUgaW4gUlRFX01CVUZfRElSRUNU KCkNCj4gICBtYWNyby4NCj4gICAoS29uc3RhbnRpbiBBbmFueWV2KQ0KPiAqIFVwZGF0ZWQgc3Rh dGljX2Fzc2VydCgpIGFjY29yZGluZ2x5Lg0KPiB2NjoNCj4gKiBGaXhlZCBEb3h5Z2VuIGVycm9y IGluIFJURV9NQlVGX0RJUkVDVCgpIG1hY3JvIGRlc2NyaXB0aW9uLg0KPiAgIChUaG9tYXMgTW9u amFsb24pDQo+ICogQWRkZWQgc3BlY2lmaWMgUlRFX01CVUZfRElSRUNUKCkgbWFjcm8gaW1wbGVt ZW50YXRpb24gZm9yIEFQSQ0KPiAgIGRvY3VtZW50YXRpb24gcHVycG9zZXMsIHVzaW5nIGZsYWcg bmFtZXMgaW5zdGVhZCBvZiBudW1lcmljYWwgdmFsdWUuDQo+IHY1Og0KPiAqIFJlbW92ZWQgdGhl IHBsYWluIFJURV9NQlVGX0RJUkVDVCgpIG1hY3JvLCBhbmQgb25seSB1c2UgdGhlIG9wdGltaXpl ZA0KPiAgIHZhcmlhbnQuIChCcnVjZSBSaWNoYXJkc29uKQ0KPiAgIEZ1cnRoZXIgdGVzdGluZyBv biBHb2Rib2x0IGNvbmZpcm1lZCB0aGF0IG90aGVyIGNvbXBpbGVycyBiZW5lZml0IGZyb20NCj4g ICB0aGUgb3B0aW1pemVkIG1hY3JvIHRvby4NCj4gKiBTaG9ydGVuZWQgdGhlIGRlc2NyaXB0aW9u IG9mIHRoZSBSVEVfTUJVRl9ESVJFQ1QoKSBtYWNybywgYW5kIG9ubHkNCj4gICBwcm92aWRlIG9u ZSBleGFtcGxlIG9mIGNvZGUgZW1pdHRlZCBieSBhIGNvbXBpbGVyLiAoQnJ1Y2UgUmljaGFyZHNv bikNCj4gKiBDb25zb2xpZGF0ZWQgdGhlIHN0YXRpY19hc3NlcnQoKSBpbnRvIG9uZSwgY292ZXJp bmcgYm90aCBsaXR0bGUgYW5kIGJpZw0KPiAgIGVuZGlhbi4NCj4gICBUaGlzIGFsc28gcmVkdWNl cyB0aGUgYW1vdW50IG9mIGVuZGlhbi1jb25kaXRpb25hbCBzb3VyY2UgY29kZSBhbmQNCj4gICBp bXByb3ZlcyByZWFkYWJpbGl0eS4NCj4gICAoQnJ1Y2UgUmljaGFyZHNvbikNCj4gKiBBZGRlZCBj b21tZW50IGFib3V0IE1TQiBtZWFuaW5nICJtb3N0IHNpZ25pZmljYW50IGJ5dGUiLg0KPiB2NDoN Cj4gKiBFbmFibGVkIHRoZSBvcHRpbWl6ZWQgUlRFX01CVUZfRElSRUNUKCkgbWFjcm8gZm9yIEdD QyBvbiBhbGwNCj4gICBhcmNoaXRlY3R1cmVzLg0KPiB2MzoNCj4gKiBSZXdyb3RlIHRoZSBvcHRp bWl6ZWQgUlRFX01CVUZfRElSRUNUKCkgbWFjcm8gZm9yIHJlYWRhYmlsaXR5OyB1c2UNCj4gICBu dW1lcmljYWwgdmFsdWUgaW5zdGVhZCBvZiBsb25nIG5hbWVzLiAoQnJ1Y2UgUmljaGFyZHNvbikN Cj4gKiBFbmFibGVkIHRoZSBvcHRpbWl6ZWQgUlRFX01CVUZfRElSRUNUKCkgbWFjcm8gZm9yIExv b25nYXJjaCB0b28uDQo+IHYyOg0KPiAqIEZpeGVkIHR5cG8gaW4gY29tbWl0IGRlc2NyaXB0aW9u Lg0KPiAqIEZpeGVkIGluZGVudGF0aW9uLg0KPiAqIEFkZGVkIGRldGFpbGVkIGRlc2NyaXB0aW9u IHRvIHRoZSBvcHRpbWl6ZWQgUlRFX01CVUZfRElSRUNUKCkgbWFjcm8uDQo+ICAgKFN0ZXBoZW4g SGVtbWluZ2VyKQ0KPiAqIEFkZGVkIHN0YXRpY19hc3NlcnQoKSB0byB2ZXJpZnkgdGhhdCB0aGUg b3B0aW1pemVkIFJURV9NQlVGX0RJUkVDVCgpDQo+ICAgbWFjcm8gaXMgdmFsaWQsIHNwZWNpZmlj YWxseSB0aGF0IHRoZSB0ZXN0ZWQgYml0cyBhcmUgaW4gdGhlIE1TQiBvZiB0aGUNCj4gICA2NC1i aXQgZmllbGQuDQo+IC0tLQ0KPiAgbGliL21idWYvcnRlX21idWYuaCAgICAgIHwgNTEgKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgbGliL21idWYvcnRlX21idWZf Y29yZS5oIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPiAgMiBm aWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkNCj4gDQo+IGRp ZmYgLS1naXQgYS9saWIvbWJ1Zi9ydGVfbWJ1Zi5oIGIvbGliL21idWYvcnRlX21idWYuaA0KPiBp bmRleCAzZGYyMjEyNWRlLi4yMDA0MzkxZjU3IDEwMDY0NA0KPiAtLS0gYS9saWIvbWJ1Zi9ydGVf bWJ1Zi5oDQo+ICsrKyBiL2xpYi9tYnVmL3J0ZV9tYnVmLmgNCj4gQEAgLTMxLDYgKzMxLDcgQEAN Cj4gICAqIGh0dHA6Ly93d3cua29oYWxhLmNvbS9zdGFydC90Y3BpcGl2Mi5odG1sDQo+ICAgKi8N Cj4gDQo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiAgI2luY2x1ZGUgPHN0ZGludC5oPg0KPiAN Cj4gICNpbmNsdWRlIDxydGVfY29tbW9uLmg+DQo+IEBAIC0xNDU4LDQ0ICsxNDU5LDMwIEBAIHN0 YXRpYyBpbmxpbmUgaW50DQo+IF9fcnRlX3BrdG1idWZfcGlubmVkX2V4dGJ1Zl9kZWNyZWYoc3Ry dWN0IHJ0ZV9tYnVmICptKQ0KPiAgc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgc3RydWN0IHJ0 ZV9tYnVmICoNCj4gIHJ0ZV9wa3RtYnVmX3ByZWZyZWVfc2VnKHN0cnVjdCBydGVfbWJ1ZiAqbSkN Cj4gIHsNCj4gLQlfX3J0ZV9tYnVmX3Nhbml0eV9jaGVjayhtLCAwKTsNCj4gLQ0KPiAtCWlmIChs aWtlbHkocnRlX21idWZfcmVmY250X3JlYWQobSkgPT0gMSkpIHsNCj4gLQ0KPiAtCQlpZiAoIVJU RV9NQlVGX0RJUkVDVChtKSkgew0KPiAtCQkJcnRlX3BrdG1idWZfZGV0YWNoKG0pOw0KPiAtCQkJ aWYgKFJURV9NQlVGX0hBU19FWFRCVUYobSkgJiYNCj4gLQkJCSAgICBSVEVfTUJVRl9IQVNfUElO TkVEX0VYVEJVRihtKSAmJg0KPiAtCQkJICAgIF9fcnRlX3BrdG1idWZfcGlubmVkX2V4dGJ1Zl9k ZWNyZWYobSkpDQo+IC0JCQkJcmV0dXJuIE5VTEw7DQo+IC0JCX0NCj4gLQ0KPiAtCQlpZiAobS0+ bmV4dCAhPSBOVUxMKQ0KPiAtCQkJbS0+bmV4dCA9IE5VTEw7DQo+IC0JCWlmIChtLT5uYl9zZWdz ICE9IDEpDQo+IC0JCQltLT5uYl9zZWdzID0gMTsNCj4gKwlib29sIHJlZmNudF9ub3Rfb25lOw0K PiANCj4gLQkJcmV0dXJuIG07DQo+ICsJX19ydGVfbWJ1Zl9zYW5pdHlfY2hlY2sobSwgMCk7DQo+ IA0KPiAtCX0gZWxzZSBpZiAoX19ydGVfbWJ1Zl9yZWZjbnRfdXBkYXRlKG0sIC0xKSA9PSAwKSB7 DQo+ICsJcmVmY250X25vdF9vbmUgPSB1bmxpa2VseShydGVfbWJ1Zl9yZWZjbnRfcmVhZChtKSAh PSAxKTsNCj4gKwlpZiAocmVmY250X25vdF9vbmUgJiYgX19ydGVfbWJ1Zl9yZWZjbnRfdXBkYXRl KG0sIC0xKSAhPSAwKQ0KPiArCQlyZXR1cm4gTlVMTDsNCj4gDQo+IC0JCWlmICghUlRFX01CVUZf RElSRUNUKG0pKSB7DQo+IC0JCQlydGVfcGt0bWJ1Zl9kZXRhY2gobSk7DQo+IC0JCQlpZiAoUlRF X01CVUZfSEFTX0VYVEJVRihtKSAmJg0KPiAtCQkJICAgIFJURV9NQlVGX0hBU19QSU5ORURfRVhU QlVGKG0pICYmDQo+IC0JCQkgICAgX19ydGVfcGt0bWJ1Zl9waW5uZWRfZXh0YnVmX2RlY3JlZiht KSkNCj4gLQkJCQlyZXR1cm4gTlVMTDsNCj4gLQkJfQ0KPiArCWlmICh1bmxpa2VseSghUlRFX01C VUZfRElSRUNUKG0pKSkgew0KPiArCQlydGVfcGt0bWJ1Zl9kZXRhY2gobSk7DQo+ICsJCWlmIChS VEVfTUJVRl9IQVNfRVhUQlVGKG0pICYmDQo+ICsJCQkJUlRFX01CVUZfSEFTX1BJTk5FRF9FWFRC VUYobSkgJiYNCj4gKwkJCQlfX3J0ZV9wa3RtYnVmX3Bpbm5lZF9leHRidWZfZGVjcmVmKG0pKQ0K PiArCQkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiANCj4gLQkJaWYgKG0tPm5leHQgIT0gTlVMTCkN Cj4gLQkJCW0tPm5leHQgPSBOVUxMOw0KPiAtCQlpZiAobS0+bmJfc2VncyAhPSAxKQ0KPiAtCQkJ bS0+bmJfc2VncyA9IDE7DQo+ICsJaWYgKHJlZmNudF9ub3Rfb25lKQ0KPiAgCQlydGVfbWJ1Zl9y ZWZjbnRfc2V0KG0sIDEpOw0KPiArCWlmIChtLT5uYl9zZWdzICE9IDEpDQo+ICsJCW0tPm5iX3Nl Z3MgPSAxOw0KPiArCWlmIChtLT5uZXh0ICE9IE5VTEwpDQo+ICsJCW0tPm5leHQgPSBOVUxMOw0K PiANCj4gLQkJcmV0dXJuIG07DQo+IC0JfQ0KPiAtCXJldHVybiBOVUxMOw0KPiArCXJldHVybiBt Ow0KPiAgfQ0KPiANCj4gIC8qKg0KPiBkaWZmIC0tZ2l0IGEvbGliL21idWYvcnRlX21idWZfY29y ZS5oIGIvbGliL21idWYvcnRlX21idWZfY29yZS5oDQo+IGluZGV4IGEwZGYyNjViNWQuLjUwNmY3 MTQ2ZjEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9tYnVmL3J0ZV9tYnVmX2NvcmUuaA0KPiArKysgYi9s aWIvbWJ1Zi9ydGVfbWJ1Zl9jb3JlLmgNCj4gQEAgLTcxMSw5ICs3MTEsNTMgQEAgc3RydWN0IHJ0 ZV9tYnVmX2V4dF9zaGFyZWRfaW5mbyB7DQo+ICAgKg0KPiAgICogSWYgYSBtYnVmIGVtYmVkcyBp dHMgb3duIGRhdGEgYWZ0ZXIgdGhlIHJ0ZV9tYnVmIHN0cnVjdHVyZSwgdGhpcyBtYnVmDQo+ICAg KiBjYW4gYmUgZGVmaW5lZCBhcyBhIGRpcmVjdCBtYnVmLg0KPiAtICovDQo+ICsgKg0KPiArICog Tm90ZTogTWFjcm8gb3B0aW1pemVkIGZvciBjb2RlIHNpemUuDQo+ICsgKg0KPiArICogVGhlIHBs YWluIG1hY3JvIHdvdWxkIGJlOg0KPiArICogXGNvZGV7LmN9DQo+ICsgKiAgICAgICNkZWZpbmUg UlRFX01CVUZfRElSRUNUKG1iKSBcDQo+ICsgKiAgICAgICAgICAoISgobWIpLT5vbF9mbGFncyAm IChSVEVfTUJVRl9GX0lORElSRUNUIHwNCj4gUlRFX01CVUZfRl9FWFRFUk5BTCkpKQ0KPiArICog XGVuZGNvZGUNCj4gKyAqDQo+ICsgKiBUaGUgZmxhZ3MgUlRFX01CVUZfRl9JTkRJUkVDVCBhbmQg UlRFX01CVUZfRl9FWFRFUk5BTCBhcmUgYm90aCBpbg0KPiB0aGUgTVNCIChtb3N0IHNpZ25pZmlj YW50DQo+ICsgKiBieXRlKSBvZiB0aGUgNjQtYml0IG9sX2ZsYWdzIGZpZWxkLCBzbyB3ZSBvbmx5 IGNvbXBhcmUgdGhpcyBvbmUgYnl0ZSBpbnN0ZWFkIG9mDQo+IGFsbCA2NCBiaXRzLg0KPiArICoN Cj4gKyAqIEUuZy4sIEdDQyB2ZXJzaW9uIDE2LjAuMCAyMDI1MTAxOSAoZXhwZXJpbWVudGFsKSBn ZW5lcmF0ZXMgdGhlIGZvbGxvd2luZw0KPiBjb2RlIGZvciB4ODYtNjQuDQo+ICsgKg0KPiArICog V2l0aCB0aGUgcGxhaW4gbWFjcm8sIDE3IGJ5dGVzIG9mIGluc3RydWN0aW9uczoNCj4gKyAqIFxj b2RlDQo+ICsgKiAgICAgIG1vdmFicyByYXgsMHg2MDAwMDAwMDAwMDAwMDAwICAgICAgIC8vIDEw IGJ5dGVzDQo+ICsgKiAgICAgIGFuZCAgICByYXgsUVdPUkQgUFRSIFtyZGkrMHgxOF0gICAgIC8v IDQgYnl0ZXMNCj4gKyAqICAgICAgc2V0ZSAgIGFsICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gMyBieXRlcw0KPiArICogXGVuZGNvZGUNCj4gKyAqIFdpdGggdGhpcyBvcHRpbWl6ZWQgbWFj cm8sIG9ubHkgNyBieXRlcyBvZiBpbnN0cnVjdGlvbnM6DQo+ICsgKiBcY29kZQ0KPiArICogICAg ICB0ZXN0ICAgQllURSBQVFIgW3JkaSsweDFmXSwweDYwICAgICAvLyA0IGJ5dGVzDQo+ICsgKiAg ICAgIHNldGUgICBhbCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDMgYnl0ZXMNCj4gKyAq IFxlbmRjb2RlDQo+ICsgKi8NCj4gKyNpZmRlZiBfX0RPWFlHRU5fXw0KPiArI2RlZmluZSBSVEVf TUJVRl9ESVJFQ1QobWIpIFwNCj4gKwkhKCgoY29uc3QgY2hhciAqKSgmKG1iKS0+b2xfZmxhZ3Mp KVtNU0JfT0ZGU0VUIC8qIDcgb3IgMCwgZGVwZW5kaW5nIG9uDQo+IGVuZGlhbm5lc3MgKi9dICYg XA0KPiArCShjaGFyKSgoUlRFX01CVUZfRl9JTkRJUkVDVCB8IFJURV9NQlVGX0ZfRVhURVJOQUwp ID4+ICg3ICoNCj4gQ0hBUl9CSVQpKSkNCj4gKyNlbHNlIC8qICFfX0RPWFlHRU5fXyAqLw0KPiAr I2lmIFJURV9CWVRFX09SREVSID09IFJURV9MSVRUTEVfRU5ESUFODQo+ICsvKiBPbiBsaXR0bGUg ZW5kaWFuIGFyY2hpdGVjdHVyZSwgdGhlIE1TQiBvZiBhIDY0LWJpdCBpbnRlZ2VyIGlzIGF0IGJ5 dGUgb2Zmc2V0IDcuICovDQo+ICsjZGVmaW5lIFJURV9NQlVGX0RJUkVDVChtYikgXA0KPiArCSEo KChjb25zdCBjaGFyICopKCYobWIpLT5vbF9mbGFncykpWzddICYgXA0KPiArCShjaGFyKSgoUlRF X01CVUZfRl9JTkRJUkVDVCB8IFJURV9NQlVGX0ZfRVhURVJOQUwpID4+ICg3ICoNCj4gQ0hBUl9C SVQpKSkNCj4gKyNlbGlmIFJURV9CWVRFX09SREVSID09IFJURV9CSUdfRU5ESUFODQo+ICsvKiBP biBiaWcgZW5kaWFuIGFyY2hpdGVjdHVyZSwgdGhlIE1TQiBvZiBhIDY0LWJpdCBpbnRlZ2VyIGlz IGF0IGJ5dGUgb2Zmc2V0IDAuICovDQo+ICAjZGVmaW5lIFJURV9NQlVGX0RJUkVDVChtYikgXA0K PiAtCSghKChtYiktPm9sX2ZsYWdzICYgKFJURV9NQlVGX0ZfSU5ESVJFQ1QgfA0KPiBSVEVfTUJV Rl9GX0VYVEVSTkFMKSkpDQo+ICsJISgoKGNvbnN0IGNoYXIgKikoJihtYiktPm9sX2ZsYWdzKSlb MF0gJiBcDQo+ICsJKGNoYXIpKChSVEVfTUJVRl9GX0lORElSRUNUIHwgUlRFX01CVUZfRl9FWFRF Uk5BTCkgPj4gKDcgKg0KPiBDSEFSX0JJVCkpKQ0KPiArI2VuZGlmIC8qIFJURV9CWVRFX09SREVS ICovDQo+ICsjZW5kaWYgLyogIV9fRE9YWUdFTl9fICovDQo+ICsvKiBWZXJpZnkgdGhlIG9wdGlt aXphdGlvbiBhYm92ZS4gKi8NCj4gK3N0YXRpY19hc3NlcnQoKChSVEVfTUJVRl9GX0lORElSRUNU IHwgUlRFX01CVUZfRl9FWFRFUk5BTCkgJg0KPiAoVUlOVDY0X0MoMHhGRikgPDwgKDcgKiBDSEFS X0JJVCkpKSA9PQ0KPiArCShSVEVfTUJVRl9GX0lORElSRUNUIHwgUlRFX01CVUZfRl9FWFRFUk5B TCksDQo+ICsJIihSVEVfTUJVRl9GX0lORElSRUNUIHwgUlRFX01CVUZfRl9FWFRFUk5BTCkgaXMg bm90IGF0IE1TQiIpOw0KPiANCj4gIC8qKiBVbmluaXRpYWxpemVkIG9yIHVuc3BlY2lmaWVkIHBv cnQuICovDQo+ICAjZGVmaW5lIFJURV9NQlVGX1BPUlRfSU5WQUxJRCBVSU5UMTZfTUFYDQo+IC0t DQoNCkxHVE0sIHRoYW5rcyBmb3IgcmVmYWN0b3JpbmcuDQoNCj4gMi40My4wDQoNCg==