From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 40D741BDED for ; Tue, 3 Jul 2018 03:41:13 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Jul 2018 18:41:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,301,1526367600"; d="scan'208";a="212954287" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga004.jf.intel.com with ESMTP; 02 Jul 2018 18:40:26 -0700 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 2 Jul 2018 18:40:25 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX154.amr.corp.intel.com (10.18.116.70) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 2 Jul 2018 18:40:25 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.51]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.116]) with mapi id 14.03.0319.002; Tue, 3 Jul 2018 09:40:23 +0800 From: "Liu, Yong" To: Maxime Coquelin , "Bie, Tiwei" , "Yigit, Ferruh" CC: "Wang, Zhihong" , "dev@dpdk.org" Thread-Topic: [PATCH v5 8/9] net/virtio: add in-order Rx/Tx into selection Thread-Index: AQHUEcuO4KYjb9NIgku5Ms/qEhu2pKR7RK2AgAAVhQCAACvpAIABM2aA Date: Tue, 3 Jul 2018 01:40:22 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E630D18AC@SHSMSX103.ccr.corp.intel.com> References: <20180702135642.52577-1-yong.liu@intel.com> <20180702135642.52577-9-yong.liu@intel.com> <8bc6e2e3-055d-2cb4-320d-ba14184c7522@redhat.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGRhYmMwNDktZWY4NC00NWNiLTgxNjItM2U4OTc1NzJkNjMzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRTMzUlwvSmNQSjNVMlV0K1wvc25rTWhyanBBR2dJa2s3Wm1yVXFqeXZNTzNSQk45YTdpdDNlcG1Ec0hhNTBUdnlyIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v5 8/9] net/virtio: add in-order Rx/Tx into selection X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2018 01:41:14 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWF4aW1lIENvcXVlbGlu IFttYWlsdG86bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgSnVs eSAwMiwgMjAxOCAxMToxOCBQTQ0KPiBUbzogTGl1LCBZb25nIDx5b25nLmxpdUBpbnRlbC5jb20+ OyBCaWUsIFRpd2VpIDx0aXdlaS5iaWVAaW50ZWwuY29tPjsNCj4gWWlnaXQsIEZlcnJ1aCA8ZmVy cnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gQ2M6IFdhbmcsIFpoaWhvbmcgPHpoaWhvbmcud2FuZ0Bp bnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2NSA4LzldIG5l dC92aXJ0aW86IGFkZCBpbi1vcmRlciBSeC9UeCBpbnRvIHNlbGVjdGlvbg0KPiANCj4gDQo+IA0K PiBPbiAwNy8wMi8yMDE4IDAyOjQxIFBNLCBNYXhpbWUgQ29xdWVsaW4gd3JvdGU6DQo+ID4NCj4g Pg0KPiA+IE9uIDA3LzAyLzIwMTggMDE6MjQgUE0sIE1heGltZSBDb3F1ZWxpbiB3cm90ZToNCj4g Pj4NCj4gPj4NCj4gPj4gT24gMDcvMDIvMjAxOCAwMzo1NiBQTSwgTWFydmluIExpdSB3cm90ZToN Cj4gPj4+IEFmdGVyIElOX09SREVSIFJ4L1R4IHBhdGhzIGFkZGVkLCBuZWVkIHRvIHVwZGF0ZSBS eC9UeCBwYXRoIHNlbGVjdGlvbg0KPiA+Pj4gbG9naWMuDQo+ID4+Pg0KPiA+Pj4gUnggcGF0aCBz ZWxlY3QgbG9naWM6IElmIElOX09SREVSIGFuZCBtZXJnZS1hYmxlIGFyZSBlbmFibGVkIHdpbGwN Cj4gc2VsZWN0DQo+ID4+PiBJTl9PUkRFUiBSeCBwYXRoLiBJZiBJTl9PUkRFUiBpcyBlbmFibGVk LCBSeCBvZmZsb2FkIGFuZCBtZXJnZS1hYmxlDQo+IGFyZQ0KPiA+Pj4gZGlzYWJsZWQgd2lsbCBz ZWxlY3Qgc2ltcGxlIFJ4IHBhdGguIE90aGVyd2lzZSB3aWxsIHNlbGVjdCBub3JtYWwgUngNCj4g Pj4+IHBhdGguDQo+ID4+Pg0KPiA+Pj4gVHggcGF0aCBzZWxlY3QgbG9naWM6IElmIElOX09SREVS IGlzIGVuYWJsZWQgd2lsbCBzZWxlY3QgSU5fT1JERVIgVHgNCj4gPj4+IHBhdGguIE90aGVyd2lz ZSB3aWxsIHNlbGVjdCBkZWZhdWx0IFR4IHBhdGguDQo+ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1i eTogTWFydmluIExpdSA8eW9uZy5saXVAaW50ZWwuY29tPg0KPiA+Pj4gUmV2aWV3ZWQtYnk6IE1h eGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+ID4+Pg0KPiA+Pj4g ZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvbmljcy92aXJ0aW8ucnN0IGIvZG9jL2d1aWRlcy9uaWNz L3ZpcnRpby5yc3QNCj4gPj4+IGluZGV4IDQ2ZTI5MmM0ZC4uN2MwOTlmYjdjIDEwMDY0NA0KPiA+ Pj4gLS0tIGEvZG9jL2d1aWRlcy9uaWNzL3ZpcnRpby5yc3QNCj4gPj4+ICsrKyBiL2RvYy9ndWlk ZXMvbmljcy92aXJ0aW8ucnN0DQo+ID4+PiBAQCAtMjAxLDcgKzIwMSw3IEBAIFRoZSBwYWNrZXQg dHJhbnNtaXNzaW9uIGZsb3cgaXM6DQo+ID4+PiDCoCBWaXJ0aW8gUE1EIFJ4L1R4IENhbGxiYWNr cw0KPiA+Pj4gwqAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPj4+IC1WaXJ0aW8gZHJp dmVyIGhhcyAzIFJ4IGNhbGxiYWNrcyBhbmQgMiBUeCBjYWxsYmFja3MuDQo+ID4+PiArVmlydGlv IGRyaXZlciBoYXMgNCBSeCBjYWxsYmFja3MgYW5kIDMgVHggY2FsbGJhY2tzLg0KPiA+Pj4gwqAg UnggY2FsbGJhY2tzOg0KPiA+Pj4gQEAgLTIxNSw2ICsyMTUsOSBAQCBSeCBjYWxsYmFja3M6DQo+ ID4+PiDCoMKgwqDCoCBWZWN0b3IgdmVyc2lvbiB3aXRob3V0IG1lcmdlYWJsZSBSeCBidWZmZXIg c3VwcG9ydCwgYWxzbyBmaXhlcw0KPiA+Pj4gdGhlIGF2YWlsYWJsZQ0KPiA+Pj4gwqDCoMKgwqAg cmluZyBpbmRleGVzIGFuZCB1c2VzIHZlY3RvciBpbnN0cnVjdGlvbnMgdG8gb3B0aW1pemUgcGVy Zm9ybWFuY2UuDQo+ID4+PiArIy4gYGB2aXJ0aW9fcmVjdl9tZXJnZWFibGVfcGt0c19pbm9yZGVy YGA6DQo+ID4+PiArwqDCoCBJbi1vcmRlciB2ZXJzaW9uIHdpdGggbWVyZ2VhYmxlIFJ4IGJ1ZmZl ciBzdXBwb3J0Lg0KPiA+Pj4gKw0KPiA+Pj4gwqAgVHggY2FsbGJhY2tzOg0KPiA+Pj4gwqAgIy4g YGB2aXJ0aW9feG1pdF9wa3RzYGA6DQo+ID4+PiBAQCAtMjIzLDYgKzIyNiw4IEBAIFR4IGNhbGxi YWNrczoNCj4gPj4+IMKgICMuIGBgdmlydGlvX3htaXRfcGt0c19zaW1wbGVgYDoNCj4gPj4+IMKg wqDCoMKgIFZlY3RvciB2ZXJzaW9uIGZpeGVzIHRoZSBhdmFpbGFibGUgcmluZyBpbmRleGVzIHRv IG9wdGltaXplDQo+ID4+PiBwZXJmb3JtYW5jZS4NCj4gPj4+ICsjLiBgYHZpcnRpb194bWl0X3Br dHNfaW5vcmRlcmBgOg0KPiA+Pj4gK8KgwqAgSW4tb3JkZXIgdmVyc2lvbi4NCj4gPj4+IMKgIEJ5 IGRlZmF1bHQsIHRoZSBub24tdmVjdG9yIGNhbGxiYWNrcyBhcmUgdXNlZDoNCj4gPj4+IEBAIC0y NTQsNiArMjU5LDEyIEBAIEV4YW1wbGUgb2YgdXNpbmcgdGhlIHZlY3RvciB2ZXJzaW9uIG9mIHRo ZQ0KPiA+Pj4gdmlydGlvIHBvbGwgbW9kZSBkcml2ZXIgaW4NCj4gPj4+IMKgwqDCoMKgIHRlc3Rw bWQgLWwgMC0yIC1uIDQgLS0gLWkgLS10eC1vZmZsb2Fkcz0weDAgLS1yeHE9MSAtLXR4cT0xDQo+ ID4+PiAtLW5iLWNvcmVzPTENCj4gPj4+ICtJbi1vcmRlciBjYWxsYmFja3Mgb25seSB3b3JrIG9u IHNpbXVsYXRlZCB2aXJ0aW8gdXNlciB2ZGV2Lg0KPiA+Pj4gKw0KPiA+Pj4gKyrCoMKgIEZvciBS eDogSWYgbWVyZ2VhYmxlIFJ4IGJ1ZmZlcnMgaXMgZW5hYmxlZCBhbmQgaW4tb3JkZXIgaXMNCj4g Pj4+IGVuYWJsZWQgdGhlbg0KPiA+Pj4gK8KgwqDCoCBgYHZpcnRpb194bWl0X3BrdHNfaW5vcmRl cmBgIGlzIHVzZWQuDQo+ID4+PiArDQo+ID4+PiArKsKgwqAgRm9yIFR4OiBJZiBpbi1vcmRlciBp cyBlbmFibGVkIHRoZW4gYGB2aXJ0aW9feG1pdF9wa3RzX2lub3JkZXJgYA0KPiA+Pj4gaXMgdXNl ZC4NCj4gPj4+IMKgIEludGVycnVwdCBtb2RlDQo+ID4+PiDCoCAtLS0tLS0tLS0tLS0tLQ0KPiA+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fZXRoZGV2LmMNCj4gPj4+ IGIvZHJpdmVycy9uZXQvdmlydGlvL3ZpcnRpb19ldGhkZXYuYw0KPiA+Pj4gaW5kZXggZGY1MGE1 NzFhLi5kZjc5ODFkZGIgMTAwNjQ0DQo+ID4+PiAtLS0gYS9kcml2ZXJzL25ldC92aXJ0aW8vdmly dGlvX2V0aGRldi5jDQo+ID4+PiArKysgYi9kcml2ZXJzL25ldC92aXJ0aW8vdmlydGlvX2V0aGRl di5jDQo+ID4+PiBAQCAtMTMyMCw2ICsxMzIwLDExIEBAIHNldF9yeHR4X2Z1bmNzKHN0cnVjdCBy dGVfZXRoX2RldiAqZXRoX2RldikNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBQTURfSU5JVF9M T0coSU5GTywgInZpcnRpbzogdXNpbmcgc2ltcGxlIFJ4IHBhdGggb24gcG9ydCAldSIsDQo+ID4+ PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBldGhfZGV2LT5kYXRhLT5wb3J0X2lkKTsNCj4g Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBldGhfZGV2LT5yeF9wa3RfYnVyc3QgPSB2aXJ0aW9fcmVj dl9wa3RzX3ZlYzsNCj4gPj4+ICvCoMKgwqAgfSBlbHNlIGlmIChody0+dXNlX2lub3JkZXJfcngp IHsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBQTURfSU5JVF9MT0coSU5GTywNCj4gPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICJ2aXJ0aW86IHVzaW5nIGlub3JkZXIgbWVyZ2VhYmxlIGJ1ZmZl ciBSeCBwYXRoIG9uIHBvcnQNCj4gPj4+ICV1IiwNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGV0aF9kZXYtPmRhdGEtPnBvcnRfaWQpOw0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgIGV0aF9k ZXYtPnJ4X3BrdF9idXJzdCA9ICZ2aXJ0aW9fcmVjdl9tZXJnZWFibGVfcGt0c19pbm9yZGVyOw0K PiA+Pj4gwqDCoMKgwqDCoCB9IGVsc2UgaWYgKHZ0cGNpX3dpdGhfZmVhdHVyZShodywgVklSVElP X05FVF9GX01SR19SWEJVRikpIHsNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBQTURfSU5JVF9M T0coSU5GTywNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJ2aXJ0aW86IHVzaW5n IG1lcmdlYWJsZSBidWZmZXIgUnggcGF0aCBvbiBwb3J0ICV1IiwNCj4gPj4+IEBAIC0xMzM1LDYg KzEzNDAsMTAgQEAgc2V0X3J4dHhfZnVuY3Moc3RydWN0IHJ0ZV9ldGhfZGV2ICpldGhfZGV2KQ0K PiA+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIFBNRF9JTklUX0xPRyhJTkZPLCAidmlydGlvOiB1c2lu ZyBzaW1wbGUgVHggcGF0aCBvbiBwb3J0ICV1IiwNCj4gPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGV0aF9kZXYtPmRhdGEtPnBvcnRfaWQpOw0KPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IGV0aF9kZXYtPnR4X3BrdF9idXJzdCA9IHZpcnRpb194bWl0X3BrdHNfc2ltcGxlOw0KPiA+Pj4g K8KgwqDCoCB9IGVsc2UgaWYgKGh3LT51c2VfaW5vcmRlcl90eCkgew0KPiA+Pj4gK8KgwqDCoMKg wqDCoMKgIFBNRF9JTklUX0xPRyhJTkZPLCAidmlydGlvOiB1c2luZyBpbm9yZGVyIFR4IHBhdGgg b24gcG9ydCAldSIsDQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBldGhfZGV2LT5kYXRh LT5wb3J0X2lkKTsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBldGhfZGV2LT50eF9wa3RfYnVyc3Qg PSB2aXJ0aW9feG1pdF9wa3RzX2lub3JkZXI7DQo+ID4+PiDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+ ID4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgUE1EX0lOSVRfTE9HKElORk8sICJ2aXJ0aW86IHVzaW5n IHN0YW5kYXJkIFR4IHBhdGggb24gcG9ydA0KPiA+Pj4gJXUiLA0KPiA+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZXRoX2Rldi0+ZGF0YS0+cG9ydF9pZCk7DQo+ID4+PiBAQCAtMTg3NCwy MCArMTg4MywyNyBAQCB2aXJ0aW9fZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRl dikNCj4gPj4+IMKgwqDCoMKgwqAgaHctPnVzZV9zaW1wbGVfcnggPSAxOw0KPiA+Pj4gwqDCoMKg wqDCoCBody0+dXNlX3NpbXBsZV90eCA9IDE7DQo+ID4+PiArwqDCoMKgIGlmICh2dHBjaV93aXRo X2ZlYXR1cmUoaHcsIFZJUlRJT19GX0lOX09SREVSKSkgew0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKg IC8qIFNpbXBsZSBUeCBub3QgY29tcGF0aWJsZSB3aXRoIGluLW9yZGVyIHJpbmcgKi8NCj4gPj4+ ICvCoMKgwqDCoMKgwqDCoCBody0+dXNlX2lub3JkZXJfdHggPSAxOw0KPiA+Pj4gK8KgwqDCoMKg wqDCoMKgIGh3LT51c2Vfc2ltcGxlX3R4ID0gMDsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo dnRwY2lfd2l0aF9mZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfTVJHX1JYQlVGKSkgew0KPiA+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHctPnVzZV9pbm9yZGVyX3J4ID0gMTsNCj4gPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3LT51c2Vfc2ltcGxlX3J4ID0gMDsNCj4gPj4+ICvCoMKg wqDCoMKgwqDCoCB9IGVsc2Ugew0KPiA+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHctPnVz ZV9pbm9yZGVyX3J4ID0gMDsNCj4gPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyeF9v ZmZsb2FkcyAmIChERVZfUlhfT0ZGTE9BRF9VRFBfQ0tTVU0gfA0KPiA+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERFVl9SWF9PRkZMT0FEX1RDUF9DS1NV TSkpDQo+ID4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3LT51c2Vfc2ltcGxl X3J4ID0gMDsNCj4gPj4gSXQgaXMgYXBwbGllZCwgYnV0IEkgdGhpbmsgdGhpcyBpcyBzdGlsbCBu b3QgZ29vZC4NCj4gPj4NCj4gPj4gU2ltcGxlIFJ4IGlzIHNldCB0byAxIGJ5IGRlZmF1bHQsIHNv IGlmIElOX09SREVSIGlzbid0IG5lZ290aWF0ZWQsDQo+ID4+IGFuZCBVRFAvVENQX0NTVU0gaXMg ZW5hYmxlZCwgc2ltcGxlIFJ4IGtlZXBzIGJlaW5nIHNlbGVjdGVkLg0KPiA+Pg0KPiA+PiBJJ2xs IGZpeCBpdCBpbiBteSBzZXJpZXMgdGhhdCBJJ20gZG9pbmcgb24gdG9wLg0KPiA+DQo+ID4gQWN0 dWFsbHksIGFmdGVyIGRpc2N1c3Npb24gd2l0aCBGZXJydWgsIEkgZml4ZWQgaXQgZGlyZWN0bHkg aW4gdGhlIHBhdGNoLg0KPiANCj4gUnVubmluZyBzb21lIG1vcmUgdGVzdHMsIEkgbm90aWNlZCB0 aGF0IGl0IGlzIHN0aWxsIGJyb2tlbi4NCj4gRm9yIGV4YW1wbGUgdGhlIGNhc2Ugd2hlcmUgaG9z dCBkb2VzIG5vdCBzdXBwb3J0IElOX09SREVSLg0KPiBJZiBtZXJnZWFibGUgYnVmZmVyIGlzIG5l Z290aWF0ZWQsIHRoZSBzaW1wbGUgcGF0aCBnZXRzIHNlbGVjdGVkLCB3aGljaA0KPiBpcyB3cm9u Zy4NCj4gDQo+IEkgZml4ZWQgdGhhdCBkaXJlY3RseSBpbiB0aGUgcGF0Y2guDQoNClRoYW5rcyBN YXhpbWUuIFNvcnJ5LCBJIGZvY3VzZWQgb24gaW4tb3JkZXIgcGFydCBhbmQgaWdub3JlZCBvcmln aW5hbCBwYXRoIGNoZWNrLg0KDQo+IA0KPiBSZWdhcmRzLA0KPiBNYXhpbWUNCj4gPiBUaGFua3Ms DQo+ID4gTWF4aW1lDQo+ID4NCj4gPj4gUmVnYXJkcywNCj4gPj4gTWF4aW1lDQo+ID4+DQo+ID4+ PiArwqDCoMKgwqDCoMKgwqAgfQ0KPiA+Pj4gK8KgwqDCoCB9DQo+ID4+PiArDQo+ID4+PiDCoCAj aWYgZGVmaW5lZCBSVEVfQVJDSF9BUk02NCB8fCBkZWZpbmVkIFJURV9BUkNIX0FSTQ0KPiA+Pj4g wqDCoMKgwqDCoCBpZiAoIXJ0ZV9jcHVfZ2V0X2ZsYWdfZW5hYmxlZChSVEVfQ1BVRkxBR19ORU9O KSkgew0KPiA+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGh3LT51c2Vfc2ltcGxlX3J4ID0gMDsNCj4g Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBody0+dXNlX3NpbXBsZV90eCA9IDA7DQo+ID4+PiDCoMKg wqDCoMKgIH0NCj4gPj4+IMKgICNlbmRpZg0KPiA+Pj4gLcKgwqDCoCBpZiAodnRwY2lfd2l0aF9m ZWF0dXJlKGh3LCBWSVJUSU9fTkVUX0ZfTVJHX1JYQlVGKSkgew0KPiA+Pj4gLcKgwqDCoMKgwqDC oMKgIGh3LT51c2Vfc2ltcGxlX3J4ID0gMDsNCj4gPj4+IC3CoMKgwqDCoMKgwqDCoCBody0+dXNl X3NpbXBsZV90eCA9IDA7DQo+ID4+PiAtwqDCoMKgIH0NCj4gPj4+IC0NCj4gPj4+IC3CoMKgwqAg aWYgKHJ4X29mZmxvYWRzICYgKERFVl9SWF9PRkZMT0FEX1VEUF9DS1NVTSB8DQo+ID4+PiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBERVZfUlhfT0ZGTE9BRF9UQ1BfQ0tTVU0pKQ0KPiA+ Pj4gLcKgwqDCoMKgwqDCoMKgIGh3LT51c2Vfc2ltcGxlX3J4ID0gMDsNCj4gPj4+IMKgwqDCoMKg wqAgcmV0dXJuIDA7DQo+ID4+PiDCoCB9DQo+ID4+Pg0K