From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60051.outbound.protection.outlook.com [40.107.6.51]) by dpdk.org (Postfix) with ESMTP id 395AF4CBB for ; Wed, 12 Sep 2018 22:37:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PNxMYJzvMoeVe0ZcYDT7LmFSCM4xY2c31CcplA/RT10=; b=QIpRdJgN9cW2MFB4BG8tvAzCjbO+HlSJrxWtM4mOx+/w+9Y603xUsxDS/yAkTa9aobRw2MhApUFrJkiLFwuRtDLM320H4kqSSUDaXBKm6x+mOY4oeBWL6GnJb8ooKy4V2Y97Ajbo1ky2mglUw+WxyZcGT/eQB5j+N1vDnvKthco= Received: from AM6PR08MB3672.eurprd08.prod.outlook.com (20.177.115.29) by AM6PR08MB3382.eurprd08.prod.outlook.com (20.177.112.219) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1122.15; Wed, 12 Sep 2018 20:37:35 +0000 Received: from AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::589e:d3cf:9777:5ff9]) by AM6PR08MB3672.eurprd08.prod.outlook.com ([fe80::589e:d3cf:9777:5ff9%2]) with mapi id 15.20.1122.018; Wed, 12 Sep 2018 20:37:35 +0000 From: Honnappa Nagarahalli To: Michel Machado , Qiaobin Fu , "bruce.richardson@intel.com" , "pablo.de.lara.guarch@intel.com" CC: "dev@dpdk.org" , "doucette@bu.edu" , "keith.wiles@intel.com" , "sameh.gobriel@intel.com" , "charlie.tai@intel.com" , "stephen@networkplumber.org" , nd , "yipeng1.wang@intel.com" Thread-Topic: [PATCH v3] hash table: add an iterator over conflicting entries Thread-Index: AQHUQUrktx3ADshLHUm/2g6PS6B8FKTdbJBQgAMeHgCAAbOIcIABGwWAgAnKz/A= Date: Wed, 12 Sep 2018 20:37:35 +0000 Message-ID: References: <20180831165101.20026-1-qiaobinf@bu.edu> <8ff2d6be-df5b-51cb-95e9-f227127b7d45@digirati.com.br> 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=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR08MB3382; 6:FjkDwRJyCdMB+E2PBghDTdCFL/vb53ukYeFfP1smb/VWtM8ldkPOFl9reFg7SpxI5xQug4Tv3d8PnF4E2LcQM3AXgCVo8MRs2cqA+7KWpxZ9ZjYpPsd2D17tYS0CuY57NZOg0xOx7r50Yf8uB94q569lnWBvJbP6rt2Mbqo/8UW4bERwrkpXpFhJ8qpiBlBYpp0kTHlsKxbPxTCxGc7mHsixeOMgfvHMhIFt0UUOv0CfSlnH3sh3+cCA1oEXr+UG02dBHzemkGIxAi8EmzF51vFVzHvjcAur38irznLMMp4GIodwFUStm4rKpG7Sjzdk1dPvytkn0YniPRul24vIT+hDgDM5oUJkMSnub6ObxId7T/zDijozp9Dr0US4LTplA4c+bH9DVPae1izdLhWfusd3voUO5Mo0tva2s0jDmiYVkh3pVi3l7r9CTede4pLTudV6PYZAdTvp98ga+SgL3w==; 5:sSC+fyQt368DCVbgY/BiKR12mHP7KdTyB1GC5YSG3NVudnvuB36qeSbU9xTC4L9mdXNv+zZwao9/oxR7Htc5XSdj4pnF9e8l0U0NkPdOd1aN0uJkIUL/fOx7Py76qAehx3MF/RD/V1K71SQ8RqJTtTJ2o2fKy5FXe7NzQo0W65M=; 7:3xrPxmo8fO0Oj/7/BQo1eoaMKjxl4eVbE2EsFtbUt+rSu12yhd3w2+EVNnvGS8x0WR0dS7bDYoPFQAO0j/hQfWlbGIA9o8cg/2GeQL/p1oU4lZjc+WiN2gbbVsaANkZY7VaebLQqRoS6XvrWLa+CSoct4qwDZ1EmAlOM6IoV7P2MrJb9tDi1Mj/AdmhDaaJsqKOHkhY+fMBuRfyn1pntM8D2/CKq303LqtxO9tmV4LZn86BwYZYConJxuvNt90pC x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 0fb1ae77-ab19-40c4-5fd8-08d618ef92a1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR08MB3382; x-ms-traffictypediagnostic: AM6PR08MB3382: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(278428928389397)(788757137089)(238701278423138)(166494164430575)(228905959029699)(17755550239193); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(823301075)(10201501046)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(201708071742011)(7699050); SRVR:AM6PR08MB3382; BCL:0; PCL:0; RULEID:; SRVR:AM6PR08MB3382; x-forefront-prvs: 07935ACF08 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(136003)(39860400002)(396003)(346002)(376002)(199004)(189003)(13464003)(316002)(97736004)(478600001)(99286004)(6116002)(3846002)(110136005)(33656002)(93886005)(14444005)(5660300001)(105586002)(305945005)(74316002)(106356001)(7736002)(54906003)(86362001)(81166006)(256004)(26005)(72206003)(81156014)(229853002)(2201001)(14454004)(966005)(486006)(186003)(4326008)(53546011)(6246003)(6506007)(102836004)(2171002)(53936002)(2906002)(446003)(8676002)(11346002)(476003)(6436002)(7416002)(5250100002)(9686003)(68736007)(2501003)(76176011)(6306002)(2900100001)(7696005)(55016002)(8936002)(66066001)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR08MB3382; H:AM6PR08MB3672.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: YtU46a10OC/O5as4tn9lkBFurzySuqdjuUb8L6yG0RWM8wmEoR4a8eqkxoNBDxQ4FqmW/AiSQpiJX2ih4N2jWKfOK5RC4jfjkE9NC4mXMig9JsKDSrRLxfoFgqvAScqQ5zHHzdC2oQ6+g6DZwaifoRK5NkUZqsHWAxPWudVL1gEfeCVK/+mEseHlDQz21maWc9Ytf+BvRovz01LeDHLDQfesS5Uy4kbflt98KMwfygsk2bMS1kqu0GKebuFWs+1/sBGrqfj5TA+dyzgeYrunNoW/QPmJVojreX+i+rvOEnTpeh/32pJRDG6voBdTv9erw2CIajBDosyuO0rFBqov8jZ5QP7levIdsPb8OU93UQA= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fb1ae77-ab19-40c4-5fd8-08d618ef92a1 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Sep 2018 20:37:35.5178 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3382 Subject: Re: [dpdk-dev] [PATCH v3] hash table: add an iterator over conflicting entries 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: Wed, 12 Sep 2018 20:37:37 -0000 SGkgTWljaGVsLA0KCUkgYXBwbGllZCB5b3VyIHBhdGNoIGFuZCB0d2Vha2VkIHRoZSBjb2RlIHRv IHJ1biBmZXcgcGVyZm9ybWFuY2UgdGVzdHMgb24gQXJtIChDb3J0ZXgtQTcyLCAxLjNHSHopIGFu ZCB4ODYgKEludGVsIFhlb24gQ1BVIEU1LTI2NjAgdjQgQCAyLjAwR0h6KS4gVGhlIHBlcmYgY29k ZSBsb29rcyBhcyBmb2xsb3dzOg0KDQogICAgICAgIGNvdW50X2IgPSBydGVfcmR0c2NfcHJlY2lz ZSgpOw0KICAgICAgICBpbnQgayA9IDA7DQogICAgICAgIHJ0ZV9oYXNoX2l0ZXJhdG9yX2luaXQo dGJsX3J3X3Rlc3RfcGFyYW0uaCwgJnN0YXRlKTsNCg0KICAgICAgICB3aGlsZSAocnRlX2hhc2hf aXRlcmF0ZSgmc3RhdGUsICZuZXh0X2tleSwgJm5leHRfZGF0YSkgPj0gMCkgew0KICAgICAgICAg ICAgICAgIC8qIFNlYXJjaCBmb3IgdGhlIGtleSBpbiB0aGUgbGlzdCBvZiBrZXlzIGFkZGVkIC4q Lw0KICAgICAgICAgICAgICAgIGkgPSAqKGNvbnN0IHVpbnQzMl90ICopbmV4dF9rZXk7DQogICAg ICAgICAgICAgICAgdGJsX3J3X3Rlc3RfcGFyYW0uZm91bmRbaV0rKzsNCiAgICAgICAgICAgICAg ICBrKys7DQogICAgICAgIH0NCg0KICAgICAgICBjb3VudF9hID0gcnRlX3JkdHNjX3ByZWNpc2Uo KSAtIGNvdW50X2I7DQogICAgICAgIHByaW50ZigiKioqKipDeWNsZXMyIHBlciBpdGVyYXRlIGNh bGw6ICVsdVxuIiwgY291bnRfYS9rKTsNCg0KRnVydGhlciwgSSBjaGFuZ2VkIHRoZSBydGVfaGFz aF9pdGVyYXRlIGFzIGZvbGxvd3MgYW5kIHJhbiB0aGUgc2FtZSB0ZXN0Lg0KaW50MzJfdCBydGVf aGFzaF9pdGVyYXRlKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwgc3RydWN0IHJ0ZV9oYXNoX2l0 ZXJhdG9yX3N0YXRlICpzdGF0ZSwgY29uc3Qgdm9pZCAqKmtleSwgdm9pZCAqKmRhdGEpDQoNCkZp bmFsbHksIEkgdXNlZCBtZW1zZXQgaW4gdGhlIHBsYWNlIG9mIHJ0ZV9oYXNoX2l0ZXJhdG9yX2lu aXQgd2l0aCB0aGUgcmVxdWlyZWQgY2hhbmdlcyB0byBydGVfaGFzaF9pdGVyYXRlLg0KDQpBbGwg dGhlc2UgdGVzdHMgc2hvdyBsaXR0bGUgdmFyaWF0aW9uIGluICdjeWNsZXMgcGVyIGl0ZXJhdGUg Y2FsbCcgZm9yIGJvdGggYXJjaGl0ZWN0dXJlcy4NCg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KRnJvbTogTWljaGVsIE1hY2hhZG8gPG1pY2hlbEBkaWdpcmF0aS5jb20uYnI+IA0KU2Vu dDogVGh1cnNkYXksIFNlcHRlbWJlciA2LCAyMDE4IDk6MjkgQU0NClRvOiBIb25uYXBwYSBOYWdh cmFoYWxsaSA8SG9ubmFwcGEuTmFnYXJhaGFsbGlAYXJtLmNvbT47IFFpYW9iaW4gRnUgPHFpYW9i aW5mQGJ1LmVkdT47IGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tOyBwYWJsby5kZS5sYXJhLmd1 YXJjaEBpbnRlbC5jb20NCkNjOiBkZXZAZHBkay5vcmc7IGRvdWNldHRlQGJ1LmVkdTsga2VpdGgu d2lsZXNAaW50ZWwuY29tOyBzYW1laC5nb2JyaWVsQGludGVsLmNvbTsgY2hhcmxpZS50YWlAaW50 ZWwuY29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgbmQgPG5kQGFybS5jb20+OyB5aXBl bmcxLndhbmdAaW50ZWwuY29tDQpTdWJqZWN0OiBSZTogW1BBVENIIHYzXSBoYXNoIHRhYmxlOiBh ZGQgYW4gaXRlcmF0b3Igb3ZlciBjb25mbGljdGluZyBlbnRyaWVzDQoNCk9uIDA5LzA1LzIwMTgg MDY6MTMgUE0sIEhvbm5hcHBhIE5hZ2FyYWhhbGxpIHdyb3RlOg0KPj4gKwl1aW50MzJfdCAgICAg ICAgICAgICAgbmV4dDsNCj4+ICsJdWludDMyX3QgICAgICAgICAgICAgIHRvdGFsX2VudHJpZXM7 DQo+PiArfTsNCj4+IFRoaXMgc3RydWN0dXJlIGNhbiBiZSBtb3ZlZCB0byBydGVfY3Vja29vX2hh c2guaCBmaWxlLg0KPiANCj4gICAgICBXaGF0J3MgdGhlIHB1cnBvc2Ugb2YgbW92aW5nIHRoaXMg c3RydWN0IHRvIGEgaGVhZGVyIGZpbGUgc2luY2UgaXQncyBvbmx5IHVzZWQgaW4gdGhlIEMgZmls ZSBydGVfY3Vja29vX2hhc2guYz8NCj4gDQo+IFRoaXMgaXMgdG8gbWFpbnRhaW4gY29uc2lzdGVu Y3kuIEZvciBleDogJ3N0cnVjdCBxdWV1ZV9ub2RlJywgd2hpY2ggaXMgDQo+IGFuIGludGVybmFs IHN0cnVjdHVyZSwgaXMga2VwdCBpbiBydGVfY3Vja29vX2hhc2guaA0KDQogICAgT2theS4gV2Un bGwgbW92ZSBpdCB0aGVyZS4NCg0KPj4gK2ludDMyX3QNCj4+ICtydGVfaGFzaF9pdGVyYXRvcl9p bml0KGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwNCj4+ICsJc3RydWN0IHJ0ZV9oYXNoX2l0ZXJh dG9yX3N0YXRlICpzdGF0ZSkgew0KPj4gKwlzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3JfaXN0YXRl ICpfX3N0YXRlOw0KPj4gJ19fc3RhdGUnIGNhbiBiZSByZXBsYWNlZCBieSAncycuDQo+Pg0KPj4g Kw0KPj4gKwlSRVRVUk5fSUZfVFJVRSgoKGggPT0gTlVMTCkgfHwgKHN0YXRlID09IE5VTEwpKSwg LUVJTlZBTCk7DQo+PiArDQo+PiArCV9fc3RhdGUgPSAoc3RydWN0IHJ0ZV9oYXNoX2l0ZXJhdG9y X2lzdGF0ZSAqKXN0YXRlOw0KPj4gKwlfX3N0YXRlLT5oID0gaDsNCj4+ICsJX19zdGF0ZS0+bmV4 dCA9IDA7DQo+PiArCV9fc3RhdGUtPnRvdGFsX2VudHJpZXMgPSBoLT5udW1fYnVja2V0cyAqIFJU RV9IQVNIX0JVQ0tFVF9FTlRSSUVTOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiBJ TU8sIGNyZWF0aW5nIHRoaXMgQVBJIGNhbiBiZSBhdm9pZGVkIGlmIHRoZSBpbml0aWFsaXphdGlv biBpcyBoYW5kbGVkIGluICdydGVfaGFzaF9pdGVyYXRlJyBmdW5jdGlvbi4gVGhlIGNvc3Qgb2Yg ZG9pbmcgdGhpcyBpcyB2ZXJ5IHRyaXZpYWwgKG9uZSBleHRyYSAnaWYnIHN0YXRlbWVudCkgaW4g J3J0ZV9oYXNoX2l0ZXJhdGUnIGZ1bmN0aW9uLiBJdCB3aWxsIGhlbHAga2VlcCB0aGUgbnVtYmVy IG9mIEFQSXMgdG8gbWluaW1hbC4NCj4gDQo+ICAgICAgQXBwbGljYXRpb25zIHdvdWxkIGhhdmUg dG8gaW5pdGlhbGl6ZSBzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3Jfc3RhdGUgKnN0YXRlIGJlZm9y ZSBjYWxsaW5nIHJ0ZV9oYXNoX2l0ZXJhdGUoKSBhbnl3YXkuIFdoeSBub3QgaW5pdGlhbGl6aW5n IHRoZSBmaWVsZHMgb2YgYSBzdGF0ZSBvbmx5IG9uY2U/DQo+IA0KPiBNeSBjb25jZXJuIGlzIGFi b3V0IGNyZWF0aW5nIGFub3RoZXIgQVBJIGZvciBldmVyeSBpdGVyYXRvciBBUEkuIFlvdSBoYXZl IGEgdmFsaWQgcG9pbnQgb24gc2F2aW5nIGN5Y2xlcyBhcyB0aGlzIEFQSSBhcHBsaWVzIGZvciBk YXRhIHBsYW5lLiBIYXZlIHlvdSBkb25lIGFueSBwZXJmb3JtYW5jZSBiZW5jaG1hcmtpbmcgd2l0 aCBhbmQgd2l0aG91dCB0aGlzIEFQST8gTWF5IGJlIHdlIGNhbiBndWlkZSBvdXIgZGVjaXNpb24g YmFzZWQgb24gdGhhdC4NCg0KICAgIEl0J3Mgbm90IGp1c3QgYWJvdXQgY3JlYXRpbmcgb25lIGlu aXQgZnVuY3Rpb24gZm9yIGVhY2ggaXRlcmF0b3IgYmVjYXVzZSBhbiBpdGVyYXRvciBtYXkgaGF2 ZSBhIGNvdXBsZSBvZiBpbml0IGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGUsIHNvbWVvbmUgbWF5IGV2 ZW50dWFsbHkgZmluZCB1c2VmdWwgdG8gYWRkIGFub3RoZXIgaW5pdCBmdW5jdGlvbiBmb3IgdGhl IGNvbmZsaWN0aW5nLWVudHJ5IGl0ZXJhdG9yIHRoYXQgd2UgYXJlIGFkdm9jYXRpbmcgaW4gdGhp cyBwYXRjaC4gQSBwb3NzaWJpbGl0eSB3b3VsZCBiZSBmb3IgdGhpcyBuZXcgaW5pdCBmdW5jdGlv biB0byB1c2UgdGhlIGtleSBvZiB0aGUgbmV3IGVudHJ5IGluc3RlYWQgb2YgaXRzIHNpZ25hdHVy ZSB0byBpbml0aWFsaXplIHRoZSBzdGF0ZS4gU2ltaWxhciB0byB3aGF0IGlzIGFscmVhZHkgZG9u ZSBpbiBydGVfaGFzaF9sb29rdXAqKCkgZnVuY3Rpb25zLiBJbiBzcGl0ZSBvZiBwb3NzaWJseSBo YXZpbmcgbXVsdGlwbGUgaW5pdCBmdW5jdGlvbnMsIHRoZXJlIHdpbGwgYmUgYSBzaW5nbGUgaXRl cmF0b3IgZnVuY3Rpb24uDQoNCiAgICBBYm91dCB0aGUgcGVyZm9ybWFuY2UgYmVuY2htYXJraW5n LCB0aGUgY3VycmVudCBBUEkgb25seSByZXF1aXRlcyBhcHBsaWNhdGlvbnMgdG8gaW5pdGlhbGl6 ZSBhIHNpbmdsZSAzMi1iaXQgaW50ZWdlci4gQnV0IHdpdGggdGhlIGFkb3B0aW9uIG9mIGEgc3Ry dWN0IGZvciB0aGUgc3RhdGUsIHRoZSBpbml0aWFsaXphdGlvbiB3aWxsIGdyb3cgdG8gNjQgYnl0 ZXMuDQoNCkFzIG15IHRlc3RzIHNob3dlZCwgSSBkbyBub3Qgc2VlIGFueSBpbXBhY3Qgb2YgdGhp cy4NCg0KPj4gICAgaW50MzJfdA0KPj4gLXJ0ZV9oYXNoX2l0ZXJhdGUoY29uc3Qgc3RydWN0IHJ0 ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5LCB2b2lkIA0KPj4gKipkYXRhLCB1aW50MzJfdCAq bmV4dCkNCj4+ICtydGVfaGFzaF9pdGVyYXRlKA0KPj4gKwlzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0 b3Jfc3RhdGUgKnN0YXRlLCBjb25zdCB2b2lkICoqa2V5LCB2b2lkDQo+PiArKipkYXRhKQ0KPj4N Cj4+IElNTywgYXMgc3VnZ2VzdGVkIGFib3ZlLCBkbyBub3Qgc3RvcmUgJ3N0cnVjdCBydGVfaGFz aCAqaCcgaW4gJ3N0cnVjdCBydGVfaGFzaF9pdGVyYXRvcl9zdGF0ZScuIEluc3RlYWQsIGNoYW5n ZSB0aGUgQVBJIGRlZmluaXRpb24gYXMgZm9sbG93czoNCj4+IHJ0ZV9oYXNoX2l0ZXJhdGUoY29u c3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25zdCB2b2lkICoqa2V5LCB2b2lkIA0KPj4gKipkYXRh LCBzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3Jfc3RhdGUgKnN0YXRlKQ0KPj4NCj4+IFRoaXMgd2ls bCBoZWxwIGtlZXAgdGhlIEFQSSBzaWduYXR1cmUgY29uc2lzdGVudCB3aXRoIGV4aXN0aW5nIEFQ SXMuDQo+Pg0KPj4gVGhpcyBpcyBhbiBBQkkgY2hhbmdlLiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQg aHR0cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL2NvbnRyaWJ1dGluZy92ZXJzaW9uaW5nLmh0bWwu DQo+IA0KPiAgICAgIFRoZSBBQkkgd2lsbCBjaGFuZ2UgaW4gYSB3YXkgb3IgYW5vdGhlciwgc28g d2h5IG5vdCBnb2luZyBmb3IgYSBzaW5nbGUgc3RhdGUgaW5zdGVhZCBvZiByZXF1aXJpbmcgcGFy YW1ldGVycyB0aGF0IGFyZSBhbHJlYWR5IG5lZWRlZCBmb3IgdGhlIGluaXRpYWxpemF0aW9uIG9m IHRoZSBzdGF0ZT8NCj4gDQo+IEFyZSB0aGVyZSBhbnkgY29zdCBzYXZpbmdzIHdlIGNhbiBhY2hp ZXZlIGJ5IGtlZXBpbmcgdGhlICdoJyBpbiB0aGUgaXRlcmF0b3Igc3RhdGU/DQoNCiAgICBUaGVy ZSdzIGEgdGlueSBjb3N0IHNhdmluZzogYXZvaWRpbmcgdG8gcHVzaCB0aGF0IHBhcmFtZXRlciBp biB0aGUgZXhlY3V0aW9uIHN0YWNrIGV2ZXJ5IHRpbWUgdGhlIGl0ZXJhdG9yIHdpbGwgZ2V0IGFu b3RoZXIgZW50cnkuIEhvd2V2ZXIsIHRoZSByZWFzb24gSSBmaW5kIG1vcmUgaW1wb3J0YW50IGlz IHRvIG1ha2UgaW1wb3NzaWJsZSB0byBpbnRyb2R1Y2UgYSBidWcgaW4gdGhlIGNvZGUuIENvbnNp ZGVyIGEgZnVuY3Rpb24gdGhhdCBpcyBkZWFsaW5nIHdpdGggdHdvIGhhc2ggdGFibGVzIGFuZCB0 d28gaXRlcmF0b3JzLiBXaXRob3V0IGFza2luZyBmb3IgdGhlIGhhc2ggdGFibGUgdG8gbWFrZSBw cm9ncmVzcyBpbiBhbiBpdGVyYXRvciwgaXQncyBpbXBvc3NpYmxlIHRvIG1peCB1cCBoYXNoIHRh YmxlcyBhbmQgaXRlcmF0b3Igc3RhdGVzLg0KDQpJTU8sIHNpbWlsYXIgYXJndW1lbnRzIGNhbiBi ZSBhcHBsaWVkIGZvciBvdGhlciBBUElzIHRvby4gSXQgaXMgbW9yZSBkaWZmaWN1bHQgdG8gdXNl IHRoZSBBUElzIGlmIHRoZXkgYXJlIG5vdCBjb25zaXN0ZW50LiBJIGFsc28gZG8gbm90IHNlZSB0 aGUgYmVuZWZpdCBvZiB0aGUgc2F2aW5ncyBpbiBteSB0ZXN0cy4gDQoNCiAgICBUaGVyZSdzIGV2 ZW4gdGhlIHBvc3NpYmlsaXR5IHRoYXQgYW4gaXRlcmF0b3IgZG9lc24ndCBuZWVkIHRoZSBoYXNo IHRhYmxlIGFmdGVyIGl0cyBpbml0aWFsaXphdGlvbi4gVGhpcyB3b3VsZCBiZSBhbiAqdW5saWtl bHkqIGNhc2UsIGJ1dCBjb25zaWRlciBhbiBpdGVyYXRvciB0aGF0IG9ubHkgcmV0dXJucyBhIGNv dXBsZSBvZiBlbnRyaWVzLiBJdCBjb3VsZCBjYWNoZSB0aG9zZSBlbnRyaWVzIGR1cmluZyBpbml0 aWFsaXphdGlvbi4NCg0KPj4gICAgCS8qIENhbGN1bGF0ZSBidWNrZXQgYW5kIGluZGV4IG9mIGN1 cnJlbnQgaXRlcmF0b3IgKi8NCj4+IC0JYnVja2V0X2lkeCA9ICpuZXh0IC8gUlRFX0hBU0hfQlVD S0VUX0VOVFJJRVM7DQo+PiAtCWlkeCA9ICpuZXh0ICUgUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVM7 DQo+PiArCWJ1Y2tldF9pZHggPSBfX3N0YXRlLT5uZXh0IC8gUlRFX0hBU0hfQlVDS0VUX0VOVFJJ RVM7DQo+PiArCWlkeCA9IF9fc3RhdGUtPm5leHQgJSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsN Cj4+ICAgIA0KPj4gICAgCS8qIElmIGN1cnJlbnQgcG9zaXRpb24gaXMgZW1wdHksIGdvIHRvIHRo ZSBuZXh0IG9uZSAqLw0KPj4gLQl3aGlsZSAoaC0+YnVja2V0c1tidWNrZXRfaWR4XS5rZXlfaWR4 W2lkeF0gPT0gRU1QVFlfU0xPVCkgew0KPj4gLQkJKCpuZXh0KSsrOw0KPj4gKwl3aGlsZSAoX19z dGF0ZS0+aC0+YnVja2V0c1tidWNrZXRfaWR4XS5rZXlfaWR4W2lkeF0gPT0gRU1QVFlfU0xPVCkg ew0KPj4gKwkJX19zdGF0ZS0+bmV4dCsrOw0KPj4gICAgCQkvKiBFbmQgb2YgdGFibGUgKi8NCj4+ IC0JCWlmICgqbmV4dCA9PSB0b3RhbF9lbnRyaWVzKQ0KPj4gKwkJaWYgKF9fc3RhdGUtPm5leHQg PT0gX19zdGF0ZS0+dG90YWxfZW50cmllcykNCj4+ICAgIAkJCXJldHVybiAtRU5PRU5UOw0KPj4g LQkJYnVja2V0X2lkeCA9ICpuZXh0IC8gUlRFX0hBU0hfQlVDS0VUX0VOVFJJRVM7DQo+PiAtCQlp ZHggPSAqbmV4dCAlIFJURV9IQVNIX0JVQ0tFVF9FTlRSSUVTOw0KPj4gKwkJYnVja2V0X2lkeCA9 IF9fc3RhdGUtPm5leHQgLyBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4+ICsJCWlkeCA9IF9f c3RhdGUtPm5leHQgJSBSVEVfSEFTSF9CVUNLRVRfRU5UUklFUzsNCj4+ICAgIAl9DQo+PiAtCV9f aGFzaF9yd19yZWFkZXJfbG9jayhoKTsNCj4+ICsJX19oYXNoX3J3X3JlYWRlcl9sb2NrKF9fc3Rh dGUtPmgpOw0KPj4gICAgCS8qIEdldCBwb3NpdGlvbiBvZiBlbnRyeSBpbiBrZXkgdGFibGUgKi8N Cj4+IC0JcG9zaXRpb24gPSBoLT5idWNrZXRzW2J1Y2tldF9pZHhdLmtleV9pZHhbaWR4XTsNCj4+ IC0JbmV4dF9rZXkgPSAoc3RydWN0IHJ0ZV9oYXNoX2tleSAqKSAoKGNoYXIgKiloLT5rZXlfc3Rv cmUgKw0KPj4gLQkJCQlwb3NpdGlvbiAqIGgtPmtleV9lbnRyeV9zaXplKTsNCj4+ICsJcG9zaXRp b24gPSBfX3N0YXRlLT5oLT5idWNrZXRzW2J1Y2tldF9pZHhdLmtleV9pZHhbaWR4XTsNCj4+ICsJ bmV4dF9rZXkgPSAoc3RydWN0IHJ0ZV9oYXNoX2tleSAqKSAoKGNoYXIgKilfX3N0YXRlLT5oLT5r ZXlfc3RvcmUgKw0KPj4gKwkJCQlwb3NpdGlvbiAqIF9fc3RhdGUtPmgtPmtleV9lbnRyeV9zaXpl KTsNCj4+ICAgIAkvKiBSZXR1cm4ga2V5IGFuZCBkYXRhICovDQo+PiAgICAJKmtleSA9IG5leHRf a2V5LT5rZXk7DQo+PiAgICAJKmRhdGEgPSBuZXh0X2tleS0+cGRhdGE7DQo+PiAgICANCj4+IC0J X19oYXNoX3J3X3JlYWRlcl91bmxvY2soaCk7DQo+PiArCV9faGFzaF9yd19yZWFkZXJfdW5sb2Nr KF9fc3RhdGUtPmgpOw0KPj4gICAgDQo+PiAgICAJLyogSW5jcmVtZW50IGl0ZXJhdG9yICovDQo+ PiAtCSgqbmV4dCkrKzsNCj4+ICsJX19zdGF0ZS0+bmV4dCsrOw0KPj4gVGhpcyBjb21tZW50IGlz IG5vdCByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLCBpdCBpcyBiZXR0ZXIgdG8gcGxhY2UgdGhpcyBp bnNpZGUgdGhlIGxvY2suDQo+IA0KPiAgICAgIEV2ZW4gdGhvdWdoIF9fc3RhdGUtPm5leHQgZG9l cyBub3QgZGVwZW5kIG9uIHRoZSBsb2NrPw0KPiANCj4gSXQgZGVwZW5kcyBvbiBpZiB0aGlzIEFQ SSBuZWVkcyB0byBiZSBtdWx0aS10aHJlYWQgc2FmZS4gSW50ZXJlc3RpbmdseSwgdGhlIGRvY3Vt ZW50YXRpb24gZG9lcyBub3Qgc2F5IGl0IGlzIG11bHRpLXRocmVhZCBzYWZlLiBJZiBpdCBoYXMg dG8gYmUgbXVsdGktdGhyZWFkIHNhZmUsIHRoZW4gdGhlIHN0YXRlIGFsc28gbmVlZHMgdG8gYmUg cHJvdGVjdGVkLiBGb3IgZXg6IHdoYXQgaGFwcGVucyBpZiB0aGUgdXNlciB1c2VzIGEgZ2xvYmFs IHZhcmlhYmxlIGZvciB0aGUgc3RhdGU/DQoNCiAgICBJZiBhbiBhcHBsaWNhdGlvbiBuZWVkcyB0 byBzaGFyZSBhbiBpdGVyYXRvciBzdGF0ZSBiZXR3ZWVuIHRocmVhZHMsIGl0IGhhcyB0byBoYXZl IGEgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSBmb3IgdGhhdCBhcyBpdCB3b3VsZCBmb3IgYW55 IG90aGVyIHNoYXJlZCB2YXJpYWJsZS4gVGhlIGxvY2sgYWJvdmUgaXMgYWxsb3dpbmcgYXBwbGlj YXRpb25zIHRvIHNoYXJlIGEgaGFzaCB0YWJsZSBiZXR3ZWVuIHRocmVhZHMsIGl0IGhhcyBubyBz ZW1hbnRpYyBvdmVyIGFueXRoaW5nIGVsc2UuDQoNCkFncmVlLCB0aGUgbG9jayBpcyBmb3IgcHJv dGVjdGluZyB0aGUgaGFzaCB0YWJsZSwgbm90IHRoZSBpdGVyYXRvciBzdGF0ZS4NCg0KPj4gZGlm ZiAtLWdpdCBhL2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oIGIvbGliL2xpYnJ0ZV9oYXNoL3J0 ZV9oYXNoLmggDQo+PiBpbmRleCA5ZTdkOTMxNWYuLmZkYjAxMDIzZSAxMDA2NDQNCj4+IC0tLSBh L2xpYi9saWJydGVfaGFzaC9ydGVfaGFzaC5oDQo+PiArKysgYi9saWIvbGlicnRlX2hhc2gvcnRl X2hhc2guaA0KPj4gQEAgLTE0LDYgKzE0LDggQEANCj4+ICAgICNpbmNsdWRlIDxzdGRpbnQuaD4N Cj4+ICAgICNpbmNsdWRlIDxzdGRkZWYuaD4NCj4+ICAgIA0KPj4gKyNpbmNsdWRlIDxydGVfY29t cGF0Lmg+DQo+PiArDQo+PiAgICAjaWZkZWYgX19jcGx1c3BsdXMNCj4+ICAgIGV4dGVybiAiQyIg ew0KPj4gICAgI2VuZGlmDQo+PiBAQCAtNjQsNiArNjYsMTYgQEAgc3RydWN0IHJ0ZV9oYXNoX3Bh cmFtZXRlcnMgew0KPj4gICAgLyoqIEBpbnRlcm5hbCBBIGhhc2ggdGFibGUgc3RydWN0dXJlLiAq LyAgc3RydWN0IHJ0ZV9oYXNoOw0KPj4gICAgDQo+PiArLyoqDQo+PiArICogQHdhcm5pbmcNCj4+ ICsgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBu b3RpY2UuDQo+PiArICoNCj4+ICsgKiBAaW50ZXJuYWwgQSBoYXNoIHRhYmxlIGl0ZXJhdG9yIHN0 YXRlIHN0cnVjdHVyZS4NCj4+ICsgKi8NCj4+ICtzdHJ1Y3QgcnRlX2hhc2hfaXRlcmF0b3Jfc3Rh dGUgew0KPj4gKwl1aW50OF90IHNwYWNlWzY0XTsNCj4+IEkgd291bGQgY2FsbCB0aGlzICdzdGF0 ZScuIDY0IGNhbiBiZSByZXBsYWNlZCBieSAnUlRFX0NBQ0hFX0xJTkVfU0laRScuDQo+IA0KPiAg ICAgIE9rYXkuDQoNCiAgICBJIHRoaW5rIHdlIHNob3VsZCBub3QgcmVwbGFjZSA2NCB3aXRoIFJU RV9DQUNIRV9MSU5FX1NJWkUgYmVjYXVzZSB0aGUgQUJJIHdvdWxkIGNoYW5nZSBiYXNlZCBvbiB0 aGUgYXJjaGl0ZWN0dXJlIGZvciB3aGljaCBpdCdzIGNvbXBpbGVkLg0KDQpPay4gTWF5IGJlIGhh dmUgYSAjZGVmaW5lIGZvciA2ND8NCg0KWyBdJ3MNCk1pY2hlbCBNYWNoYWRvDQo=