From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-SN1-obe.outbound.protection.outlook.com (mail-eopbgr700102.outbound.protection.outlook.com [40.107.70.102]) by dpdk.org (Postfix) with ESMTP id 831E714E8 for ; Tue, 31 Jul 2018 08:10:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bushare.onmicrosoft.com; s=selector1-bu-edu; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MVcZkyG9Tm5mzWo5dG36IFu1l4wnV93lhHj9hT5hMJ8=; b=QVLWWgMIlbf2sOek41yV21Z+fYfe3SSz9DCWXz4CYO7voruYj2xqLMf0dbOKeAc9gTXYd/VqpvaBogFhD/thzQHgvvl9KvmXy/eUzOntJLA3VM0IlpNfpqzpzX3HYZdqIPPtRAB1Zs99Mq6vOFrUmbei6BUIdoSeT01TBqy2Kto= Received: from MWHSPR01MB303.namprd03.prod.outlook.com (10.174.170.167) by MWHPR03MB2495.namprd03.prod.outlook.com (10.169.201.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.995.19; Tue, 31 Jul 2018 06:09:02 +0000 Received: from MWHSPR01MB303.namprd03.prod.outlook.com ([fe80::a445:510c:12ca:a49f]) by MWHSPR01MB303.namprd03.prod.outlook.com ([fe80::a445:510c:12ca:a49f%5]) with mapi id 15.20.1017.010; Tue, 31 Jul 2018 06:09:02 +0000 From: "Fu, Qiaobin" To: "Wang, Yipeng1" CC: "Fu, Qiaobin" , "Wiles, Keith" , "Richardson, Bruce" , "De Lara Guarch, Pablo" , "dev@dpdk.org" , "michel@digirati.com.br" , "Doucette, Cody, Joseph" , "Gobriel, Sameh" , "Tai, Charlie" Thread-Topic: [dpdk-dev] [PATCH] hash table: add a bucket iterator function Thread-Index: AQHUJptvcc+I3/8SLk2SA4m7AaCNJqSmL7GAgAI7/YCAAHEOgA== Date: Tue, 31 Jul 2018 06:09:02 +0000 Message-ID: <7E249D4F-3CAA-4EDB-936D-4DFAEA55F0D8@bu.edu> References: <20180728174851.46422-1-qiaobinf@bu.edu> <5CCC4983-8B4F-480B-B6E1-3A01806BC416@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=qiaobinf@bu.edu; x-originating-ip: [67.180.169.0] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; MWHPR03MB2495; 6:MEyd2RtoH4wOIkxn9ERMUKr7j3lV6CNTfGmy+ZNjjWnqulbBvUzYu/L1yXxDiyWc+E79mdqod8oszDpBZXmljSl6KwCEZw3EePdHE9sO7ySF4lRZbxbB/9ScHkGTxSAw1heBL/KViqoUT1AAuMoghESAv3z3MttkD37nUcoHBJDD3leOhZeTTmvRe2L2Oiq02W1Ois4R0KMi9sk7Xbzbsr8dandrFAGcyzCeJFXiIbRFLCbHDBj7+PUInZXSlqpMH5yGjuTuwjmSjjftIJEcAqnyFs0pB0rynbJ1xZHe+2CWnID+ls0sWrOSYBRAQ9u3DCh46Js8nw/BaqV7yRBKrVPHV8KwtniKMqNk/IM8R94ccmLy0eVVseRhdwDdaqyuaqZAxNxhhVEZ8lHI4z+UQo42A/F5DuNnouL6RjJeUbqSyyCMOlYtiUmSh50zc/4BqhnscZETnXxHUL8iy+eDxQ==; 5:5fWjxGW5tOhTFCqJ3TEQ9V6utorjbPuSzRf5DumS3LyV57CVWz+hzreqs/8NiCDp7nFysDR2NxcYIhY7XFJ3nJ4bZI74WrWeFXCqluO7pdUGu5u9gfcPNcPlNqjYcYEI60iCPNkg4YK42NWRe0wkQNZ/Nk6vIl3fFGzblmaiHzM=; 7:tuZvfGym0ZkqNCSjsn8QD0PkxWaT6dipiLtg0aKGYvLaweWqg1JOKm1oKVa7xmJ5AXQxoX83lu+rtkxm+txbdFJ5dvSbDjSgj9bEbX6AspuC2+2U9LKrlGQeJ1v6vx36DPDt4KjuQJxai5lklGXT7dzC6n35h1CtzQr5aE+ZTB+ICioFbwFn8r3swTkDB78nmX2bHQdBja2XjPkhbagnNAhtC2Kg0j+eC829TaRCHaAFekSPS5akBv0tI3SX/Md5 x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 093b83d6-9ad0-4572-6198-08d5f6ac1d0d x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:MWHPR03MB2495; x-ms-traffictypediagnostic: MWHPR03MB2495: x-ld-processed: d57d32cc-c121-488f-b07b-dfe705680c71,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(788757137089)(238701278423138)(166494164430575)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231311)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(149027)(150027)(6041310)(20161123560045)(20161123558120)(20161123562045)(201703131423095)(201702281529075)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011)(7699016); SRVR:MWHPR03MB2495; BCL:0; PCL:0; RULEID:; SRVR:MWHPR03MB2495; x-forefront-prvs: 0750463DC9 x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(136003)(396003)(346002)(39860400002)(366004)(189003)(199004)(51914003)(13464003)(5250100002)(76176011)(478600001)(14444005)(256004)(66066001)(2906002)(53546011)(88552002)(3846002)(6506007)(97736004)(229853002)(6116002)(105586002)(106356001)(2900100001)(5660300001)(4326008)(25786009)(54906003)(36756003)(6436002)(33656002)(6512007)(26005)(6916009)(53936002)(99286004)(75432002)(14454004)(305945005)(786003)(316002)(11346002)(6246003)(86362001)(6486002)(7736002)(83716003)(81156014)(446003)(82746002)(102836004)(186003)(486006)(476003)(2616005)(8936002)(8676002)(81166006)(68736007)(7756004); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR03MB2495; H:MWHSPR01MB303.namprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: bu.edu does not designate permitted sender hosts) x-microsoft-antispam-message-info: 7CtHnjsAIM0OVHITzur0t//XluTN6uA1Sgp95yX6PTRbgVmC6IfaVKjrR5blQXJOhKQ1Iwm0IHcsF7+ZbIcWeyBeyzbKLbXms1bUOS+aBNzxbW2GEV6z4sh5N31M4z6jUnp5rl5EwvlfJzSZwMnM+3Fbf/jQsJegkEgK7ZES4J/GSB1EQddYGziwU8+XPPSuE5XRm2Oi6r8bKvu6ddNky4GIrcuaxtctczv75mxqPrn2bGyW9HjnkvCc5XyY68K08ysecQVdlnI9/sjYkUdZ1lRE2Qwiww8Sqh2HdXSEBysJ0W2kb5GVO05Wb+tZmB/eWk+OefEorL2T7f9GDzUn84BJvMIYV6wUkTwGu/rBe/4= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <4B4F056D9A17AB4BA99413E9D5ABABB7@namprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: bu.edu X-MS-Exchange-CrossTenant-Network-Message-Id: 093b83d6-9ad0-4572-6198-08d5f6ac1d0d X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jul 2018 06:09:02.3316 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d57d32cc-c121-488f-b07b-dfe705680c71 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2495 Subject: Re: [dpdk-dev] [PATCH] hash table: add a bucket iterator function 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, 31 Jul 2018 06:10:24 -0000 SGkgWWlwZW5nLA0KDQpUaGFua3MgZm9yIHRoZSBmZWVkYmFja3MhDQoNCj4gT24gSnVsIDMwLCAy MDE4LCBhdCA0OjI0IFBNLCBXYW5nLCBZaXBlbmcxIDx5aXBlbmcxLndhbmdAaW50ZWwuY29tPiB3 cm90ZToNCj4gDQo+IEhpLCBRaWFvYmluLCANCj4gDQo+IFRoYW5rcyBmb3IgdGhlIHBhdGNoLiBJ ZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5IHlvdXIgdXNlIGNhc2UgaXMgdG8gdXNlIGhhc2ggdGFi bGUgYXMgYSAiY2FjaGUiIHRoYXQgbmV3IGVudHJpZXMgc2hvdWxkIGV2aWN0IHN0YWxlIG9uZXMg YXV0b21hdGljYWxseS4gQ291bGQgeW91IGJlIG1vcmUgc3BlY2lmaWMgb24geW91ciB1c2Ugc2Nl bmFyaW9zIHNvIHRoYXQgSSBjYW4gaGF2ZSBtb3JlIGNvbnRleHQ/IA0KPiANCg0KQWN0dWFsbHks IHdlIGRpZG7igJl0IHVzZSBoYXNoIHRhYmxlIGFzIGEg4oCcY2FjaGXigJ0sIGFuZCB0aGVyZSBp cyBubyBhdXRvbWF0aW9uIHRvIGV2aWN0IHN0YWxlIG9uZXMuIEluc3RlYWQsIHRoZSBmdW5jdGlv bnJ0ZV9oYXNoX2J1Y2tldF9pdGVyYXRlKCkgYWxsb3dzIHRoZSBjYWxsZXJzIHRvIGl0ZXJhdGUg b3ZlciB0aGUgaGFzaCB0YWJsZSBpbiBhbiBpbmNyZW1lbnRhbCB3YXksIGkuZS4sIG9uZSBidWNr ZXQgYnkgYW5vdGhlciBidWNrZXQsIHNvIHRoYXQgdGhlIGNhbGxlciBkb2VzbuKAmXQgaGF2ZSB0 byBpdGVyYXRlIG92ZXIgdGhlIHdob2xlIGhhc2ggdGFibGUgaW4gb25lIHRpbWUuIFRoaXMgd2F5 IGNhbiBhdm9pZCBjcmVhdGluZyBoaWNjdXBzIGFuZCBhY2hpZXZlIGJldHRlciBjYWNoZSBwZXJm b3JtYW5jZS4gT25lIHBvc3NpYmxlIHVzZSBzY2VuYXJpbyBpcyB3aGVuIEREb1MgYXR0YWNrcyBo YXBwZW4sIG9uZSBtYXkgd2FudCB0byB0YWtlIG1vcmUgQ1BVIHRpbWUgdG8gcHJvY2VzcyB0aGUg cGFja2V0cywgdGh1cyBpdGVyYXRpbmcgb3ZlciB0aGUgaGFzaCB0YWJsZSBpbmNyZW1lbnRhbGx5 IGlzIGRlc2lyYWJsZS4NCg0KPiBXZSBhcmUgYWN0dWFsbHkgd29ya2luZyBvbiBhbiBleHRlbmRh YmxlIHZlcnNpb24gb2YgcnRlX2hhc2ggd2hpY2ggd2lsbCBsaW5rIGV4dHJhIGJ1Y2tldHMgdG8g Y3VycmVudCB0YWJsZSBpZiB0aGUgdGFibGUgaXMgZnVsbC4gQXMgbG9uZyBhcyB0aGUgdGFibGUg aXMgc2l6ZWQgYXBwcm9wcmlhdGVseSwgdGhlcmUgd2lsbCBiZSBubyBjb25mbGljdCBpc3N1ZXMg dGh1cyB5b3UgZG9u4oCZdCBuZWVkIHRvIHJlcGxhY2Ugb2xkIGVudHJpZXMuIFdpbGwgdGhpcyBz b2x2ZSB5b3VyIGlzc3VlPyBBbHNvLCBpZiB0aGUg4oCcY2FjaGXigJ0gbW9kZSBpcyB3aGF0IHlv dSB3YW50LCB3ZSBoYXZlIHRoZSBtZW1iZXJzaGlwIGxpYnJhcnkg4oCccnRlX21lbWJlcuKAnS4g SXMgaXQgYXBwbGljYWJsZSB0byB5b3VyIGNhc2U/IA0KDQpJIGFncmVlIHRoYXQgYWRkaW5nIGV4 dHJhIGJ1Y2tldHMgdG8gY3VycmVudCB0YWJsZSB3aGVuIHRoZSB0YWJsZSBpcyBmdWxsIGNhbiBh bGxldmlhdGUgdGhpcyBzY2VuYXJpby4gSW5kZWVkLCB3ZSBhbHNvIGNvbnNpZGVyZWQgdGhpcyBz b2x1dGlvbiBiZWZvcmUgY29taW5nIHVwIG91ciBwcm9wb3NlZCBzb2x1dGlvbi4gSG93ZXZlciwg aXTigJlzIHN0aWxsIGhpZ2hseSBkZXNpcmFibGUgdG8gaGF2ZSBhIGJ1Y2tldCBpdGVyYXRvciBm dW5jdGlvbi4gQ29uc2lkZXJpbmcgdGhlIHNjZW5hcmlvIHdoZXJlIHRoZSBtYWNoaW5l4oCZcyBt ZW1vcnkgaXMgbGltaXRlZCBhbmQgY2Fubm90IGFsd2F5cyBhbGxvY2F0ZSBuZXcgbWVtb3J5IHRv IHRoZSBoYXNoIHRhYmxlIChlLmcuLCBERG9TIGF0dGFja3MsIHN3aXRjaCBtZWFzdXJlbWVudCB0 YXNrcywgZXRjLiksIGEgc29sdXRpb24gaXMgdG8gYWxsb3cgdGhlIGNhbGxlcnMgZXZpY3Qgc29t ZSBsZXNzIGltcG9ydGFudCAodGhlIGNyaXRlcmlhIGZvciB0aGUgZXZpY3Rpb24gaXMgYmFzZWQg b24gdGhlIGNhbGxlcuKAmXMgbmVlZHMpIGVudHJpZXMuDQoNCkluZGVlZCwgd2UgZG9u4oCZdCBo YXZlIHRoZSDigJxjYWNoZeKAnSBtb2RlLCBvdXIgaW1wbGVtZW50YXRpb24gaXMgYSB3YXkgdG8g YWNoaWV2ZSBiZXR0ZXIgY2FjaGUgcGVyZm9ybWFuY2UuIFNvLCB0aGUgcnRlX21lbWJlciB3b27i gJl0IGhlbHAgaGVyZS4NCg0KPiANCj4gdy5yLnQuIHRoZSBwYXRjaCBzZXQgeW91IHByb3Bvc2Vk LCBteSBjb25jZXJuIGlzIHRoYXQgdGhlIG5ldyBBUEkgd2lsbCBleHBvc2UgdG9vIG11Y2ggaW50 ZXJuYWxzIHRvIHRoZSB1c2VyLCBlLmcuIHRoZSBidWNrZXQvZW50cmllcyBzdHJ1Y3R1cmUgc2hv dWxkIGJlIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gRXhwb3NpbmcgaW50ZXJuYWwgc3RydWN0 dXJlcyB3b3VsZCBwcmV2ZW50IGltcHJvdmluZyB0aGUgaW1wbGVtZW50YXRpb24gZG93biB0aGUg cm9hZCB1bmxlc3Mgd2Uga2VlcCBjaGFuZ2luZyBBUEkgd2hpY2ggaXMgbm90IHJlY29tbWVuZGVk LiAgDQo+IA0KDQpUaGUgZnVuY3Rpb25zIHdlIGFkZCBoZXJlIGdpdmUgYSB3YXkgZm9yIHRoZSBj YWxsZXJzIHRvIGl0ZXJhdGUgb3ZlciB0aGUgc3BlY2lmaWMgYnVja2V0LCB3aGljaCBwb3RlbnRp YWxseSBjb250YWlucyB0aGUgZW50cnkuIFRoZXNlIGZ1bmN0aW9ucyBjYW4gYmUgbWFkZSBnZW5l cmFsIGVub3VnaCB0byBhbGxvdyBjYWxsZXJzIHRvIGhldXJpc3RpY2FsbHkgZXZpY3Qgc29tZSBl bnRyaWVzLCBhbmQgYWRkIHRoZSBuZXcgb25lcyB0byB0aGUgaGFzaCB0YWJsZS4gT3RoZXJ3aXNl LCB0aGVyZSBpcyBubyB3YXkgdG8gZXZpY3Qgc29tZSBsZXNzIGltcG9ydGFudCBlbnRyaWVzLg0K DQpIb3BlIHRoaXMgY2xhcmlmaWVzIHRoZSBwYXRjaC4NCg0KQmVzdCwNClFpYW9iaW4NCg0KPiAN Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYt Ym91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIFdpbGVzLCBLZWl0aA0KPj4gU2VudDogU3Vu ZGF5LCBKdWx5IDI5LCAyMDE4IDY6MTcgQU0NCj4+IFRvOiBRaWFvYmluIEZ1IDxxaWFvYmluZkBi dS5lZHU+DQo+PiBDYzogUmljaGFyZHNvbiwgQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwu Y29tPjsgRGUgTGFyYSBHdWFyY2gsIFBhYmxvIDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5j b20+OyBkZXZAZHBkay5vcmc7DQo+PiBtaWNoZWxAZGlnaXJhdGkuY29tLmJyOyBkb3VjZXR0ZUBi dS5lZHUNCj4+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gaGFzaCB0YWJsZTogYWRk IGEgYnVja2V0IGl0ZXJhdG9yIGZ1bmN0aW9uDQo+PiANCj4+IA0KPj4gDQo+Pj4gT24gSnVsIDI4 LCAyMDE4LCBhdCAxMjo0OCBQTSwgUWlhb2JpbiBGdSA8cWlhb2JpbmZAYnUuZWR1PiB3cm90ZToN Cj4+PiANCj4+PiBGdW5jdGlvbiBydGVfaGFzaF9idWNrZXRfaXRlcmF0ZSgpIGVuYWJsZXMgY2Fs bGVycyB0bw0KPj4+IGluY3JlbWVudGFsbHkgaXRlcmF0ZSBvdmVyIHRoZSBoYXNoIHRhYmxlIGJ1 Y2tldCBieSBidWNrZXQsDQo+Pj4gc28gdGhhdCBpdCBjYW4gYXZvaWQgY3JlYXRpbmcgaGljY3Vw cyBhbmQgdGhyYXNoaW5nIHRoZSBjYWNoZQ0KPj4+IG9mIHRoZSBwcm9jZXNzb3IuDQo+Pj4gDQo+ Pj4gVGhpcyBwYXRjaCBtYWlubHkgZGVhbHMgd2l0aCBjYXNlcyBpbiB3aGljaA0KPj4+IHRoZSBo YXNoIHRhYmxlIGlzIGZ1bGwgYW5kIG9uZSBuZWVkcyB0byBkZWNpZGUgaWYgdGhlIGluY29taW5n DQo+Pj4gZW50cnkgaXMgbW9yZSB2YWx1YWJsZSB0aGFuIHRoZSBlbnRyaWVzIGFscmVhZHkgaW4g dGhlIGhhc2ggdGFibGUuDQo+Pj4gDQo+Pj4gU2lnbmVkLW9mZi1ieTogUWlhb2JpbiBGdSA8cWlh b2JpbmZAYnUuZWR1Pg0KPj4+IFJldmlld2VkLWJ5OiBDb2R5IERvdWNldHRlIDxkb3VjZXR0ZUBi dS5lZHU+DQo+Pj4gUmV2aWV3ZWQtYnk6IE1pY2hlbCBNYWNoYWRvIDxtaWNoZWxAZGlnaXJhdGku Y29tLmJyPg0KPj4+IC0tLQ0KPj4+IGxpYi9saWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guYyAg ICB8IDYwICsrKysrKysrKysrKysrKysrKysrKysrKysNCj4+PiBsaWIvbGlicnRlX2hhc2gvcnRl X2hhc2guaCAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+Pj4g bGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoX3ZlcnNpb24ubWFwIHwgIDQgKysNCj4+PiAzIGZpbGVz IGNoYW5nZWQsIDEzMCBpbnNlcnRpb25zKCspDQo+Pj4gDQo+Pj4gZGlmZiAtLWdpdCBhL2xpYi9s aWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guYyBiL2xpYi9saWJydGVfaGFzaC9ydGVfY3Vja29v X2hhc2guYw0KPj4+IGluZGV4IGEwNzU0M2EyOS4uMmI5MGYzNTkzIDEwMDY0NA0KPj4+IC0tLSBh L2xpYi9saWJydGVfaGFzaC9ydGVfY3Vja29vX2hhc2guYw0KPj4+ICsrKyBiL2xpYi9saWJydGVf aGFzaC9ydGVfY3Vja29vX2hhc2guYw0KPj4+IEBAIC0xMTYwLDMgKzExNjAsNjMgQEAgcnRlX2hh c2hfaXRlcmF0ZShjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXksIHZv aWQgKipkYXRhLCB1aW50MzINCj4+PiANCj4+PiAJcmV0dXJuIHBvc2l0aW9uIC0gMTsNCj4+PiB9 DQo+Pj4gKw0KPj4+ICtpbnQNCj4+PiArcnRlX2hhc2hfZ2V0X251bV9idWNrZXRzKHN0cnVjdCBy dGVfaGFzaCAqaCkNCj4+PiArew0KPj4+ICsJUkVUVVJOX0lGX1RSVUUoKGggPT0gTlVMTCksIC1F SU5WQUwpOw0KPj4+ICsJcmV0dXJuIGgtPm51bV9idWNrZXRzOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ ICt1aW50MzJfdA0KPj4+ICtydGVfaGFzaF9nZXRfcHJpbWFyeV9idWNrZXQoY29uc3Qgc3RydWN0 IHJ0ZV9oYXNoICpoLCBoYXNoX3NpZ190IHNpZykNCj4+PiArew0KPj4+ICsJcmV0dXJuIHNpZyAm IGgtPmJ1Y2tldF9iaXRtYXNrOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICt1aW50MzJfdA0KPj4+ICty dGVfaGFzaF9nZXRfc2Vjb25kYXJ5X2J1Y2tldChjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGhh c2hfc2lnX3Qgc2lnKQ0KPj4+ICt7DQo+Pj4gKwlyZXR1cm4gcnRlX2hhc2hfc2Vjb25kYXJ5X2hh c2goc2lnKSAmIGgtPmJ1Y2tldF9iaXRtYXNrOw0KPj4+ICt9DQo+PiANCj4+IFRoZSBhYm92ZSB0 d28gZnVuY3Rpb25zIHNob3VsZCBoYXZlIHRoZSBSRVRVUk5fSUZfVFJVRSgoaCA9PSBOVUxMKSwg LUVJTlZBTCk7IHN0YXRlbWVudHMganVzdCBsaWtlIHRoZSBmaXJzdCBvbmUuDQo+PiANCj4+PiAr DQo+Pj4gK2ludDMyX3QNCj4+PiArcnRlX2hhc2hfYnVja2V0X2l0ZXJhdGUoY29uc3Qgc3RydWN0 IHJ0ZV9oYXNoICpoLA0KPj4+ICsJY29uc3Qgdm9pZCAqKmtleSwgdm9pZCAqKmRhdGEsIHVpbnQz Ml90ICpiaWR4LCB1aW50MzJfdCAqbmV4dCkNCj4+PiArew0KPj4+ICsJdWludDMyX3QgcG9zaXRp b247DQo+Pj4gKwlzdHJ1Y3QgcnRlX2hhc2hfa2V5ICpuZXh0X2tleTsNCj4+PiArDQo+Pj4gKwlS RVRVUk5fSUZfVFJVRSgoKGggPT0gTlVMTCkgfHwgKGtleSA9PSBOVUxMKSB8fCAoZGF0YSA9PSBO VUxMKSB8fA0KPj4+ICsJCShiaWR4ID09IE5VTEwpIHx8IChuZXh0ID09IE5VTEwpKSwgLUVJTlZB TCk7DQo+Pj4gKw0KPj4+ICsJLyogT3V0IG9mIGJvdW5kcy4gKi8NCj4+PiArCWlmICgqYmlkeCA+ PSBoLT5udW1fYnVja2V0cyB8fCAqbmV4dCA+PSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUykNCj4+ PiArCQlnb3RvIG5leHRfYnVja2V0Ow0KPj4+ICsNCj4+PiArCS8qIElmIGN1cnJlbnQgcG9zaXRp b24gaXMgZW1wdHksIGdvIHRvIHRoZSBuZXh0IG9uZS4gKi8NCj4+PiArCXdoaWxlIChoLT5idWNr ZXRzWypiaWR4XS5rZXlfaWR4WypuZXh0XSA9PSBFTVBUWV9TTE9UKSB7DQo+Pj4gKwkJKCpuZXh0 KSsrOw0KPj4+ICsJCS8qIEVuZCBvZiBidWNrZXQuICovDQo+Pj4gKwkJaWYgKCpuZXh0ID49IFJU RV9IQVNIX0JVQ0tFVF9FTlRSSUVTKQ0KPj4+ICsJCQlnb3RvIG5leHRfYnVja2V0Ow0KPj4+ICsJ fQ0KPj4+ICsNCj4+PiArCS8qIEdldCBwb3NpdGlvbiBvZiBlbnRyeSBpbiBrZXkgdGFibGUuICov DQo+Pj4gKwlwb3NpdGlvbiA9IGgtPmJ1Y2tldHNbKmJpZHhdLmtleV9pZHhbKm5leHRdOw0KPj4+ ICsJbmV4dF9rZXkgPSAoc3RydWN0IHJ0ZV9oYXNoX2tleSAqKSAoKGNoYXIgKiloLT5rZXlfc3Rv cmUgKw0KPj4+ICsJCQkJcG9zaXRpb24gKiBoLT5rZXlfZW50cnlfc2l6ZSk7DQo+Pj4gKwkvKiBS ZXR1cm4ga2V5IGFuZCBkYXRhLiAqLw0KPj4+ICsJKmtleSA9IG5leHRfa2V5LT5rZXk7DQo+Pj4g KwkqZGF0YSA9IG5leHRfa2V5LT5wZGF0YTsNCj4+PiArDQo+Pj4gKwkvKiBJbmNyZW1lbnQgaXRl cmF0b3IuICovDQo+Pj4gKwkoKm5leHQpKys7DQo+Pj4gKw0KPj4+ICsJcmV0dXJuIHBvc2l0aW9u IC0gMTsNCj4+PiArDQo+Pj4gK25leHRfYnVja2V0Og0KPj4+ICsJKmJpZHggPSAoKmJpZHggKyAx KSA+PSBoLT5udW1fYnVja2V0cyA/IDAgOiAqYmlkeCArIDE7DQo+Pj4gKwkqbmV4dCA9IDA7DQo+ PiANCj4+IElmIHRoaXMgaXMgYW4gZXJyb3IgY2FzZSB3aHkgYXJlIHdlIHNldHRpbmcgKm5leHQg dG8gemVybyBhbmQgaW5jcmVtZW50aW5nICpiaWR4ID8NCj4+IEkgd291bGQgZXhwZWN0IHdlIHNo b3VsZCBub3QgY2hhbmdlIHRoZSB2YWx1ZXMgb24gYW4gZXJyb3IgYmVjYXVzZSB0aGV5IGNhbm5v dCBkZWJ1ZyB0aGUgdmFsdWVzIG9uIHJldHVybi4NCj4+IA0KPj4+ICsJcmV0dXJuIC1FTk9FTlQ7 DQo+Pj4gK30NCj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmggYi9s aWIvbGlicnRlX2hhc2gvcnRlX2hhc2guaA0KPj4+IGluZGV4IGY3MWNhOWZiZi4uMzI5YmY0MmQ2 IDEwMDY0NA0KPj4+IC0tLSBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oDQo+Pj4gKysrIGIv bGliL2xpYnJ0ZV9oYXNoL3J0ZV9oYXNoLmgNCj4+PiBAQCAtOTQsNiArOTQsMTcgQEAgcnRlX2hh c2hfY3JlYXRlKGNvbnN0IHN0cnVjdCBydGVfaGFzaF9wYXJhbWV0ZXJzICpwYXJhbXMpOw0KPj4+ ICovDQo+Pj4gdm9pZCBydGVfaGFzaF9zZXRfY21wX2Z1bmMoc3RydWN0IHJ0ZV9oYXNoICpoLCBy dGVfaGFzaF9jbXBfZXFfdCBmdW5jKTsNCj4+PiANCj4+PiArLyoqDQo+Pj4gKyAqIEdldCB0aGUg bnVtYmVyIG9mIGJ1Y2tldHMgaW4gdGhlIGhhc2ggdGFibGUuDQo+Pj4gKyAqIEBwYXJhbSBoDQo+ Pj4gKyAqICAgSGFzaCB0YWJsZSBmb3Igd2hpY2ggdGhlIGZ1bmN0aW9uIHF1ZXJpZXMuDQo+Pj4g KyAqIEByZXR1cm4NCj4+PiArICogICBUaGUgbnVtYmVyIG9mIGJ1Y2tldHMgaW4gdGhlIGhhc2gg dGFibGUgaC4NCj4+PiArICogICAgLSBFSU5WQUwgLSBpbnZhbGlkIHBhcmFtZXRlciBwYXNzZWQg dG8gZnVuY3Rpb24NCj4+PiArICovDQo+Pj4gK2ludA0KPj4gDQo+PiBOZWVkcyB0byBjaGFuZ2Ug dG8g4oCYaW50IF9fcnRlX2V4cGVyaW1lbnRhbOKAmQ0KPj4gDQo+Pj4gK3J0ZV9oYXNoX2dldF9u dW1fYnVja2V0cyhzdHJ1Y3QgcnRlX2hhc2ggKmgpOw0KPj4+ICsNCj4+PiAvKioNCj4+PiAqIEZp bmQgYW4gZXhpc3RpbmcgaGFzaCB0YWJsZSBvYmplY3QgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8g aXQuDQo+Pj4gKg0KPj4+IEBAIC0yNjEsNiArMjcyLDM0IEBAIGludA0KPj4+IHJ0ZV9oYXNoX2dl dF9rZXlfd2l0aF9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IGludDMy X3QgcG9zaXRpb24sDQo+Pj4gCQkJICAgICAgIHZvaWQgKiprZXkpOw0KPj4+IA0KPj4+ICsvKioN Cj4+PiArICogR2V0IHRoZSBwcmltYXJ5IGJ1Y2tldCBpbmRleCBnaXZlbiB0aGUgcHJlY29tcHV0 ZWQgaGFzaCB2YWx1ZS4NCj4+PiArICogVGhpcyBvcGVyYXRpb24gaXMgbXVsdGktdGhyZWFkIHNh ZmUuDQo+Pj4gKyAqDQo+Pj4gKyAqIEBwYXJhbSBoDQo+Pj4gKyAqICAgSGFzaCB0YWJsZSB0byBn ZXQgdGhlIGtleSBmcm9tLg0KPj4+ICsgKiBAcGFyYW0gc2lnDQo+Pj4gKyAqICAgUHJlY29tcHV0 ZWQgaGFzaCB2YWx1ZS4NCj4+PiArICogQHJldHVybg0KPj4+ICsgKiAgIFRoZSBwcmltYXJ5IGJ1 Y2tldCBpbmRleC4NCj4+IA0KPj4gQ29tbWVudCB0aGUgZXJyb3IgY2FzZSBoZXJlLg0KPj4+ICsg Ki8NCj4+PiArdWludDMyX3QNCj4+IA0KPj4gTmVlZHMgdG8gY2hhbmdlIHRvIOKAmHVpbnQzMl90 IF9fcnRlX2V4cGVyaW1lbnRhbOKAmQ0KPj4+ICtydGVfaGFzaF9nZXRfcHJpbWFyeV9idWNrZXQo Y29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBoYXNoX3NpZ190IHNpZyk7DQo+Pj4gKw0KPj4+ICsv KioNCj4+PiArICogR2V0IHRoZSBzZWNvbmRhcnkgYnVja2V0IGluZGV4IGdpdmVuIHRoZSBwcmVj b21wdXRlZCBoYXNoIHZhbHVlLg0KPj4+ICsgKiBUaGlzIG9wZXJhdGlvbiBpcyBtdWx0aS10aHJl YWQgc2FmZS4NCj4+PiArICoNCj4+PiArICogQHBhcmFtIGgNCj4+PiArICogICBIYXNoIHRhYmxl IHRvIGdldCB0aGUga2V5IGZyb20uDQo+Pj4gKyAqIEBwYXJhbSBzaWcNCj4+PiArICogICBQcmVj b21wdXRlZCBoYXNoIHZhbHVlLg0KPj4+ICsgKiBAcmV0dXJuDQo+Pj4gKyAqICAgVGhlIHByaW1h cnkgYnVja2V0IGluZGV4Lg0KPj4gDQo+PiBDb21tZW50IHRoZSBlcnJvciBjYXNlIGhlcmUuDQo+ Pj4gKyAqLw0KPj4+ICt1aW50MzJfdA0KPj4gDQo+PiBOZWVkcyB0byBjaGFuZ2UgdG8g4oCYdWlu dDMyX3QgX19ydGVfZXhwZXJpbWVudGFs4oCZDQo+Pj4gK3J0ZV9oYXNoX2dldF9zZWNvbmRhcnlf YnVja2V0KGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwgaGFzaF9zaWdfdCBzaWcpOw0KPj4+ICsN Cj4+PiAvKioNCj4+PiAqIEZpbmQgYSBrZXktdmFsdWUgcGFpciBpbiB0aGUgaGFzaCB0YWJsZS4N Cj4+PiAqIFRoaXMgb3BlcmF0aW9uIGlzIG11bHRpLXRocmVhZCBzYWZlLg0KPj4+IEBAIC00MTks NiArNDU4LDMzIEBAIHJ0ZV9oYXNoX2xvb2t1cF9idWxrKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAq aCwgY29uc3Qgdm9pZCAqKmtleXMsDQo+Pj4gKi8NCj4+PiBpbnQzMl90DQo+Pj4gcnRlX2hhc2hf aXRlcmF0ZShjb25zdCBzdHJ1Y3QgcnRlX2hhc2ggKmgsIGNvbnN0IHZvaWQgKiprZXksIHZvaWQg KipkYXRhLCB1aW50MzJfdCAqbmV4dCk7DQo+Pj4gKw0KPj4+ICsvKioNCj4+PiArICogSXRlcmF0 ZSB0aHJvdWdoIHRoZSBidWNrZXRzIGluIGhhc2ggdGFibGUsIHJldHVybmluZyBrZXktdmFsdWUg cGFpcnMuDQo+Pj4gKyAqDQo+Pj4gKyAqIEBwYXJhbSBoDQo+Pj4gKyAqICAgSGFzaCB0YWJsZSB0 byBpdGVyYXRlDQo+Pj4gKyAqIEBwYXJhbSBrZXkNCj4+PiArICogICBPdXRwdXQgY29udGFpbmlu ZyB0aGUga2V5IHdoZXJlIGN1cnJlbnQgaXRlcmF0b3INCj4+PiArICogICB3YXMgcG9pbnRpbmcg YXQNCj4+PiArICogQHBhcmFtIGRhdGENCj4+PiArICogICBPdXRwdXQgY29udGFpbmluZyB0aGUg ZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5Lg0KPj4+ICsgKiAgIFJldHVybnMgTlVMTCBpZiBkYXRh IHdhcyBub3Qgc3RvcmVkLg0KPj4+ICsgKiBAcGFyYW0gYmlkeA0KPj4+ICsgKiAgIFBvaW50ZXIg dG8gdGhlIGN1cnJlbnQgYnVja2V0IGluZGV4LiBTaG91bGQgYmUgMCB0byBzdGFydA0KPj4+ICsg KiAgIGl0ZXJhdGluZyB0aGUgaGFzaCB0YWJsZS4gSXRlcmF0b3IgaXMgaW5jcmVtZW50ZWQgYWZ0 ZXINCj4+PiArICogICBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUyBjYWxscyBvZiB0aGlzIGZ1bmN0 aW9uLg0KPj4gDQo+PiBUaGUgd29yZGluZyBvZiB0aGUgbGFzdCBsaW5lIHNlZW0gb2RkIHRvIG1l LCBzaG91bGQgdGhlIOKAmG9m4oCZIGJlIHJlbW92ZWQ/DQo+PiANCj4+PiArICogQHBhcmFtIG5l eHQNCj4+PiArICogICBQb2ludGVyIHRvIGl0ZXJhdG9yLiBTaG91bGQgYmUgMCB0byBzdGFydCBp dGVyYXRpbmcgdGhlIGJ1Y2tldC4NCj4+PiArICogICBJdGVyYXRvciBpcyBpbmNyZW1lbnRlZCBh ZnRlciBlYWNoIGNhbGwgb2YgdGhpcyBmdW5jdGlvbi4NCj4+PiArICogQHJldHVybg0KPj4+ICsg KiAgIFBvc2l0aW9uIHdoZXJlIGtleSB3YXMgc3RvcmVkLCBpZiBzdWNjZXNzZnVsLg0KPj4+ICsg KiAgIC0gLUVJTlZBTCBpZiB0aGUgcGFyYW1ldGVycyBhcmUgaW52YWxpZC4NCj4+PiArICogICAt IC1FTk9FTlQgaWYgZW5kIG9mIHRoZSBidWNrZXQuDQo+Pj4gKyAqLw0KPj4+ICtpbnQzMl90DQo+ PiANCj4+IE5lZWRzIHRvIGNoYW5nZSB0byDigJhpbnQzMl90IF9fcnRlX2V4cGVyaW1lbnRhbOKA mSBhbmQgd2h5IHVzZSDigJhpbnQzMl90JyB3aGVuIGV2ZXJ5d2hlcmUgZWxzZSB3ZSBhcmUgdXNp bmcg4oCYaW50Jz8NCj4+IA0KPj4+ICtydGVfaGFzaF9idWNrZXRfaXRlcmF0ZShjb25zdCBzdHJ1 Y3QgcnRlX2hhc2ggKmgsDQo+Pj4gKwljb25zdCB2b2lkICoqa2V5LCB2b2lkICoqZGF0YSwgdWlu dDMyX3QgKmJpZHgsIHVpbnQzMl90ICpuZXh0KTsNCj4+IA0KPj4gU2hvdWxkIGhhdmUgYSBibGFu ayBsaW5lIGhlcmUgYmVmb3JlIHRoZSAjaWZkZWYuDQo+Pj4gI2lmZGVmIF9fY3BsdXNwbHVzDQo+ Pj4gfQ0KPj4+ICNlbmRpZg0KPj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2hhc2gvcnRlX2hh c2hfdmVyc2lvbi5tYXAgYi9saWIvbGlicnRlX2hhc2gvcnRlX2hhc2hfdmVyc2lvbi5tYXANCj4+ PiBpbmRleCA1MmEyNTc2ZjkuLjdkNDhmMzJjOSAxMDA2NDQNCj4+PiAtLS0gYS9saWIvbGlicnRl X2hhc2gvcnRlX2hhc2hfdmVyc2lvbi5tYXANCj4+PiArKysgYi9saWIvbGlicnRlX2hhc2gvcnRl X2hhc2hfdmVyc2lvbi5tYXANCj4+PiBAQCAtMTUsNiArMTUsMTAgQEAgRFBES18yLjAgew0KPj4+ IAlydGVfaGFzaF9sb29rdXA7DQo+Pj4gCXJ0ZV9oYXNoX2xvb2t1cF9idWxrOw0KPj4+IAlydGVf aGFzaF9sb29rdXBfd2l0aF9oYXNoOw0KPj4+ICsJcnRlX2hhc2hfZ2V0X251bV9idWNrZXRzOw0K Pj4+ICsJcnRlX2hhc2hfZ2V0X3ByaW1hcnlfYnVja2V0Ow0KPj4+ICsJcnRlX2hhc2hfZ2V0X3Nl Y29uZGFyeV9idWNrZXQ7DQo+Pj4gKwlydGVfaGFzaF9idWNrZXRfaXRlcmF0ZTsNCj4+IA0KPj4g VGhlc2UgbXVzdCBiZSBhZGRlZCB0byBhIEVYUEVSSU1FTlRBTCBjbGF1c2UgaW4gdGhlIGZpbGUg YW5kIGxhdGVyIHlvdSBjYW4gcmVtb3ZlIHRoZSBleHBlcmltZW50YWwgaW5kaWN0b3IuDQo+PiAN Cj4+PiANCj4+PiAJbG9jYWw6ICo7DQo+Pj4gfTsNCj4+PiAtLQ0KPj4+IDIuMTcuMQ0KPj4+IA0K Pj4gDQo+PiBSZWdhcmRzLA0KPj4gS2VpdGgNCj4gDQoNCg==