From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0064.outbound.protection.outlook.com [104.47.2.64]) by dpdk.org (Postfix) with ESMTP id 56C944CA5 for ; Thu, 4 Oct 2018 01:05:34 +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=9tq7IXtt0sg6rZUoGFei836HZwO9+Zmx8lBnbw+M7yA=; b=fflZ1IoEnyOTOXbizkspr4tazcazTPQ77wjwzGkTldMGGBEMPS1wVzV/QzqIijbW6BpJ5C7ockd1rW0bj9Hxo1XeFzxAEvpZYfIone6HD2xMz9HP+Nf8Fug2e1ard5nY6dIHIEAuJ6s0rM2tQACgI3Ujb8h3+mqG5QaJKwdNWCQ= Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com (10.168.95.140) by HE1PR0801MB1658.eurprd08.prod.outlook.com (10.168.149.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.18; Wed, 3 Oct 2018 23:05:31 +0000 Received: from HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20]) by HE1PR0801MB2076.eurprd08.prod.outlook.com ([fe80::c84:eee7:43bf:9f20%11]) with mapi id 15.20.1185.026; Wed, 3 Oct 2018 23:05:30 +0000 From: Ola Liljedahl To: "Wang, Yipeng1" , Honnappa Nagarahalli , "Van Haaren, Harry" , "Richardson, Bruce" CC: "De Lara Guarch, Pablo" , "dev@dpdk.org" , "Gavin Hu (Arm Technology China)" , Steve Capper , nd , "Gobriel, Sameh" Thread-Topic: [dpdk-dev] [PATCH 3/4] hash: fix rw concurrency while moving keys Thread-Index: AQHUW22UOruhd3pz1UOuCfmE47h8FQ== Date: Wed, 3 Oct 2018 23:05:30 +0000 Message-ID: <59A4B92C-C306-4E89-920D-0FD3F6517AA6@arm.com> References: <1536253938-192391-1-git-send-email-honnappa.nagarahalli@arm.com> <1536253938-192391-4-git-send-email-honnappa.nagarahalli@arm.com> <20180928082610.GA7592@bricha3-MOBL.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/10.10.0.180812 authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ola.Liljedahl@arm.com; x-originating-ip: [158.174.8.16] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1658; 6:mtjX1CEQFgLWF53mTADIW0BxgiLF5Zk/RtiGl8qYabZg/osTwpgUKqo+NuD+7LbhSG3kp56+UE73ImyE982rELDsnatIkBc3a7OZuvkjWLKIGtvUee3mmN2B4btKa4QYN3vwzQNmBfzC0NcULPZO5dGZZ0qbD8/MrB2GWvExIDykGj5EPBglZmw/mAL44yTkqNjf2I+hqLjWyAVht8DQWKruzBxBwZkjKT38If5fGspD2znCtWgZwFjM4G0NO0yvgaG7hMRKBwk0cobx5dRmF7EPJ7qiMNvQRCYrBxd8TRIV7ZbND1jvGHmYHOA1/oyd2UDhq4a7UuEHudILrHkyY8IkcsCI/Bmn/JPOYw7mhNLoc7+pp32DHpmJDD6PNul3cozqNcoXeb6wgRdpT/jkTD2k9z52lM8N98hoDRfq2+fFontYi72lS+EOXJF4ZhftQJJ6ZrR57WiBTtdncm763w==; 5:Z13Kbyg1ZF4nqW06Z0UT4vqGB9gf1zUewAGky83wjt2GVbSHspd92d3oluqssSW2FcEBIu/M+JOJivSK3dYrNEIVnXAsiS9AQslclDCN+9+G2+oKAvwPTtDGtxxpcHUdVb8cjE+d48t/mzmPOXTEgFlFldFdi2xGFzkwHHj26t0=; 7:1imI+gQPfRDwSkEC4Z4zC+nj5nOOr4FrwNtJ6a10zOVRLFh5F/l8ZsNBAorsoyXQUlqvFShOBiyDIa0rJpwrKWpPdzej3xZNoh0HKq54FdMtWEn5qmW6124ahcTVyoIAqBBjMQfffsRhMwvr8ObpFl3wNQVEYZ0xAqx68mL3BnoZb/4TLNii1DFeUF8anhY1AoXhqNUHfGaQQ2c/d1MHlUDzo6ZfYZwHkwzu6GZ/Q4LSeUooQfAkXL4NdT3/lKDV x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-correlation-id: 6df21ee6-74c5-4a71-4e45-08d62984b775 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1658; x-ms-traffictypediagnostic: HE1PR0801MB1658: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123564045)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051); SRVR:HE1PR0801MB1658; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1658; x-forefront-prvs: 0814A2C7A3 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(396003)(136003)(366004)(346002)(39860400002)(57704003)(13464003)(199004)(189003)(14454004)(2900100001)(68736007)(6506007)(76176011)(66066001)(99286004)(82746002)(2906002)(102836004)(186003)(14444005)(93886005)(2616005)(97736004)(6246003)(5250100002)(26005)(446003)(256004)(486006)(316002)(11346002)(5660300001)(476003)(110136005)(25786009)(54906003)(86362001)(305945005)(105586002)(6116002)(3846002)(7736002)(4326008)(478600001)(81156014)(72206003)(81166006)(8676002)(33656002)(6306002)(6512007)(53936002)(8936002)(36756003)(71190400001)(71200400001)(6436002)(229853002)(106356001)(83716004)(6486002)(58126008); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1658; H:HE1PR0801MB2076.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: jtQLjCMAPhNeUAdjaa4x/ACZ6BiuZRZgy8SqLmQCbll1iButjKqUrqlc7VGwmpCvYBwPNVG16ssZ7aAdH9BlKsrQypcpvxXq15qyDIUjqYU77va1pNqB7REYe8mCNW+kEypBThm/8i6t9lUO1Uahmy3Qe52lt6Mq7qntSjD6axYkiUfXRbLQfKOE7hsxQUgHH0W62enzsMwzRFBTnSummRfUzWEk16mK1PzS3XKq93MTICQRX0w74AcoSsmZLfni7/wRDnrxnkMkfSLdyyQ1tBN0Tj14scvuMzrvw66OZDH2Gb6WU4eJwAWR2zwade1BHOGjiMLvZwEGuzK1dSaVJSR+oiLMysVr7WUhjQSetDM= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <13F9A940667B2543BA5D6DD5096FF26A@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6df21ee6-74c5-4a71-4e45-08d62984b775 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2018 23:05:30.8332 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1658 Subject: Re: [dpdk-dev] [PATCH 3/4] hash: fix rw concurrency while moving keys 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, 03 Oct 2018 23:05:34 -0000 DQoNCu+7v09uIDAzLzEwLzIwMTgsIDIwOjAwLCAiV2FuZywgWWlwZW5nMSIgPHlpcGVuZzEud2Fu Z0BpbnRlbC5jb20+IHdyb3RlOg0KDQogICAgDQogICAgDQogICAgPi0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQogICAgPkZyb206IEhvbm5hcHBhIE5hZ2FyYWhhbGxpIFttYWlsdG86SG9ubmFw cGEuTmFnYXJhaGFsbGlAYXJtLmNvbV0NCiAgICA+U2VudDogV2VkbmVzZGF5LCBPY3RvYmVyIDMs IDIwMTggMTA6MzMgQU0NCiAgICA+VG86IFdhbmcsIFlpcGVuZzEgPHlpcGVuZzEud2FuZ0BpbnRl bC5jb20+OyBWYW4gSGFhcmVuLCBIYXJyeSA8aGFycnkudmFuLmhhYXJlbkBpbnRlbC5jb20+OyBS aWNoYXJkc29uLCBCcnVjZQ0KICAgID48YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+DQogICAg PkNjOiBEZSBMYXJhIEd1YXJjaCwgUGFibG8gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNv bT47IGRldkBkcGRrLm9yZzsgR2F2aW4gSHUgKEFybSBUZWNobm9sb2d5IENoaW5hKQ0KICAgID48 R2F2aW4uSHVAYXJtLmNvbT47IFN0ZXZlIENhcHBlciA8U3RldmUuQ2FwcGVyQGFybS5jb20+OyBP bGEgTGlsamVkYWhsIDxPbGEuTGlsamVkYWhsQGFybS5jb20+OyBuZCA8bmRAYXJtLmNvbT47IEdv YnJpZWwsDQogICAgPlNhbWVoIDxzYW1laC5nb2JyaWVsQGludGVsLmNvbT4NCiAgICA+U3ViamVj dDogUkU6IFtkcGRrLWRldl0gW1BBVENIIDMvNF0gaGFzaDogZml4IHJ3IGNvbmN1cnJlbmN5IHdo aWxlIG1vdmluZyBrZXlzDQogICAgPg0KICAgID4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KICAgID4+ID5Gcm9tOiBWYW4gSGFhcmVuLCBIYXJyeQ0KICAgID4+ID4+ID4gPiA+ID4gLyoq DQogICAgPj4gPj4gPiA+ID4gPiAgKiBBZGQgYSBrZXkgdG8gYW4gZXhpc3RpbmcgaGFzaCB0YWJs ZS4NCiAgICA+PiA+PiA+ID4gPiA+QEAgLTIyMiw3ICsyMjIsNyBAQCBydGVfaGFzaF9hZGRfa2V5 KGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwNCiAgICA+PiA+PiA+ID4gPiA+Y29uc3Qgdm9pZA0K ICAgID4+ID4+ID4gPiAqa2V5KTsNCiAgICA+PiA+PiA+ID4gPiA+ICAqICAgICBhcnJheSBvZiB1 c2VyIGRhdGEuIFRoaXMgdmFsdWUgaXMgdW5pcXVlIGZvciB0aGlzIGtleS4NCiAgICA+PiA+PiA+ ID4gPiA+ICAqLw0KICAgID4+ID4+ID4gPiA+ID4gaW50MzJfdA0KICAgID4+ID4+ID4gPiA+ID4t cnRlX2hhc2hfYWRkX2tleV93aXRoX2hhc2goY29uc3Qgc3RydWN0IHJ0ZV9oYXNoICpoLCBjb25z dA0KICAgID4+ID4+ID4gPiA+ID52b2lkICprZXksDQogICAgPj4gPj4gPiA+IGhhc2hfc2lnX3Qg c2lnKTsNCiAgICA+PiA+PiA+ID4gPiA+K3J0ZV9oYXNoX2FkZF9rZXlfd2l0aF9oYXNoKHN0cnVj dCBydGVfaGFzaCAqaCwgY29uc3Qgdm9pZA0KICAgID4+ID4+ID4gPiA+ID4rKmtleSwNCiAgICA+ PiA+PiA+ID4gaGFzaF9zaWdfdCBzaWcpOw0KICAgID4+ID4+ID4gPiA+ID4NCiAgICA+PiA+PiA+ ID4gPiA+IC8NCiAgICA+PiA+PiA+ID4gPg0KICAgID4+ID4+ID4gPiA+IEkgdGhpbmsgdGhlIGFi b3ZlIGNoYW5nZXMgd2lsbCBicmVhayBBQkkgYnkgY2hhbmdpbmcgdGhlDQogICAgPj4gPj4gPiA+ ID4gcGFyYW1ldGVyDQogICAgPj4gPj4gdHlwZT8NCiAgICA+PiA+PiA+ID4gT3RoZXIgcGVvcGxl IG1heSBrbm93IGJldHRlciBvbiB0aGlzLg0KICAgID4+ID4+ID4gPg0KICAgID4+ID4+ID4gPiBK dXN0IHJlbW92aW5nIGEgY29uc3Qgc2hvdWxkIG5vdCBjaGFuZ2UgdGhlIEFCSSwgSSBiZWxpZXZl LCBzaW5jZQ0KICAgID4+ID4+ID4gPiB0aGUgY29uc3QgaXMganVzdCBhZHZpc29yeSBoaW50IHRv IHRoZSBjb21waWxlci4gQWN0dWFsIHBhcmFtZXRlcg0KICAgID4+ID4+ID4gPiBzaXplIGFuZCBj b3VudCByZW1haW5zIHVuY2hhbmdlZCBzbyBJIGRvbid0IGJlbGlldmUgdGhlcmUgaXMgYW4gaXNz dWUuDQogICAgPj4gPj4gPiA+IFtBQkkgZXhwZXJ0cywgcGxlYXNlIGNvcnJlY3QgbWUgaWYgSSdt IHdyb25nIG9uIHRoaXNdDQogICAgPj4gPj4gPg0KICAgID4+ID4+ID4NCiAgICA+PiA+PiA+IFtD ZXJ0YWlubHkgbm8gQUJJIGV4cGVydCwgYnV0Li4uXQ0KICAgID4+ID4+ID4NCiAgICA+PiA+PiA+ IEkgdGhpbmsgdGhpcyBpcyBhbiBBUEkgYnJlYWssIG5vdCBBQkkgYnJlYWsuDQogICAgPj4gPj4g Pg0KICAgID4+ID4+ID4gR2l2ZW4gYXBwbGljYXRpb24gY29kZSBhcyBmb2xsb3dzLCBpdCB3aWxs IGZhaWwgdG8gY29tcGlsZSAtIGV2ZW4NCiAgICA+PiA+PiA+IHRob3VnaA0KICAgID4+ID4+IHJ1 bm5pbmcNCiAgICA+PiA+PiA+IHRoZSBuZXcgY29kZSBhcyBhIC5zbyB3b3VsZG4ndCBjYXVzZSBh bnkgaXNzdWVzIChBRkFJSykuDQogICAgPj4gPj4gPg0KICAgID4+ID4+ID4gdm9pZCBkb19oYXNo X3N0dWZmKGNvbnN0IHN0cnVjdCBydGVfaGFzaCAqaCwgLi4uKSB7DQogICAgPj4gPj4gPiAgICAg LyogcGFyYW1ldGVyIHBhc3NlZCBpbiBpcyBjb25zdCwgYnV0IHVwZGF0ZWQgZnVuY3Rpb24gcHJv dG90eXBlDQogICAgPj4gPj4gPiBpcw0KICAgID4+ID4+IG5vbi0NCiAgICA+PiA+PiA+IGNvbnN0 ICovDQogICAgPj4gPj4gPiAgICAgcnRlX2hhc2hfYWRkX2tleV93aXRoX2hhc2goaCwgLi4uKTsg fQ0KICAgID4+ID4+ID4NCiAgICA+PiA+PiA+IFRoaXMgbWVhbnMgdGhhdCB3ZSBjYW4ndCByZWNv bXBpbGUgYXBwcyBhZ2FpbnN0IGxhdGVzdCBwYXRjaA0KICAgID4+ID4+ID4gd2l0aG91dCBhcHBs aWNhdGlvbiBjb2RlIGNoYW5nZXMsIGlmIHRoZSBhcHAgd2FzIHBhc3NpbmcgYSBjb25zdA0KICAg ID4+ID4+ID4gcnRlX2hhc2ggc3RydWN0DQogICAgPj4gPj4gYXMNCiAgICA+PiA+PiA+IHRoZSBm aXJzdCBwYXJhbWV0ZXIuDQogICAgPj4gPj4gPg0KICAgID4+ID4+IEFncmVlLiBEbyB3ZSBuZWVk IHRvIGRvIGFueXRoaW5nIGZvciB0aGlzPw0KICAgID4+ID4NCiAgICA+PiA+SSB0aGluayB3ZSBz aG91bGQgdHJ5IHRvIGF2b2lkIGJyZWFraW5nIEFQSSB3aGVyZXZlciBwb3NzaWJsZS4NCiAgICA+ PiA+SWYgd2UgbXVzdCwgdGhlbiBJIHN1cHBvc2Ugd2UgY291bGQgZm9sbG93IHRoZSBBQkkgcHJv Y2VzcyBvZiBhDQogICAgPj4gPmRlcHJlY2F0aW9uIG5vdGljZS4NCiAgICA+PiA+DQogICAgPj4g PkZyb20gbXkgcmVhZGluZyBvZiB0aGUgdmVyc2lvbmluZyBkb2NzLCBpdCBkb2Vzbid0IGRvY3Vt ZW50IHRoaXMgY2FzZToNCiAgICA+PiA+aHR0cHM6Ly9kb2MuZHBkay5vcmcvZ3VpZGVzL2NvbnRy aWJ1dGluZy92ZXJzaW9uaW5nLmh0bWwNCiAgICA+PiA+DQogICAgPj4gPkkgZG9uJ3QgcmVjYWxs IGEgc2ltaWxhciBzaXR1YXRpb24gaW4gRFBESyBwcmV2aW91c2x5IC0gc28gSSBzdWdnZXN0DQog ICAgPj4gPnlvdSBhc2sgVGVjaCBib2FyZCBmb3IgaW5wdXQgaGVyZS4NCiAgICA+PiA+DQogICAg Pj4gPkhvcGUgdGhhdCBoZWxwcyEgLUhhcnJ5DQogICAgPj4gW1dhbmcsIFlpcGVuZ10NCiAgICA+ PiBIb25uYXBwYSwgaG93IGFib3V0IHVzZSBhIHBvaW50ZXIgdG8gdGhlIGNvdW50ZXIgaW4gdGhl IHJ0ZV9oYXNoIHN0cnVjdA0KICAgID4+IGluc3RlYWQgb2YgdGhlIGNvdW50ZXI/IFdpbGwgdGhp cyBhdm9pZCBBUEkgY2hhbmdlPw0KICAgID5JIHRoaW5rIGl0IGRlZmVhdHMgdGhlIHB1cnBvc2Ug b2YgJ2NvbnN0JyBwYXJhbWV0ZXIgdG8gdGhlIEFQSSBhbmQgcHJvdmlkZXMgaW5jb3JyZWN0IGlu Zm9ybWF0aW9uIHRvIHRoZSB1c2VyLg0KICAgID5JTU8sIERQREsgc2hvdWxkIGhhdmUgZ3VpZGVs aW5lcyBvbiBob3cgdG8gaGFuZGxlIHRoZSBBUEkgY29tcGF0aWJpbGl0eSBicmVha3MuIEkgd2ls bCBzZW5kIGFuIGVtYWlsIHRvIHRlY2ggYm9hcmQgb24gdGhpcy4NCiAgICA+V2UgY2FuIGFsc28g c29sdmUgdGhpcyBieSBoYXZpbmcgY291bnRlcnMgb24gdGhlIGJ1Y2tldC4gSSB3YXMgcGxhbm5p bmcgdG8gZG8gdGhpcyBsaXR0bGUgYml0IGxhdGVyLiBJIHdpbGwgbG9vayBhdCB0aGUgZWZmb3J0 IGludm9sdmVkIGFuZA0KICAgID5tYXkgYmUgZG8gaXQgbm93Lg0KICAgIFtXYW5nLCBZaXBlbmdd IA0KICAgIEkgdGhpbmsgd2l0aCBBQkkvQVBJIGNoYW5nZSwgeW91IG1pZ2h0IG5lZWQgdG8gYW5u b3VuY2UgaXQgb25lIHJlbGVhc2UgY3ljbGUgYWhlYWQuDQogICAgDQogICAgSW4gdGhlIGN1Y2tv byBzd2l0Y2ggcGFwZXI6IFNjYWxhYmxlLCBIaWdoIFBlcmZvcm1hbmNlIEV0aGVybmV0IEZvcndh cmRpbmcgd2l0aA0KICAgIENVQ0tPT1NXSVRDSA0KICAgIGl0IHNlcGFyYXRlcyB0aGUgdmVyc2lv biBjb3VudGVyIGFycmF5IGFuZCB0aGUgaGFzaCB0YWJsZS4gWW91IGNhbiBzdHJpa2UgYSBiYWxh bmNlDQogICAgYmV0d2VlbiBncmFudWxhcml0eSBvZiB0aGUgdmVyc2lvbiBjb3VudGVyIGFuZCB0 aGUgY2FjaGUvbWVtb3J5IHJlcXVpcmVtZW50Lg0KICAgIElzIGl0IGEgYmV0dGVyIHdheT8NCltP bGFdIEhhdmluZyBvbmx5IGEgc2luZ2xlIGdlbmVyYXRpb24gY291bnRlciBjYW4gZWFzaWx5IGJl Y29tZSBhIHNjYWxhYmlsaXR5IGJvdHRsZW5lY2sgZHVlIHRvIHdyaXRlIGNvbnRlbnRpb24gdG8g dGhlIGNhY2hlIGxpbmUuDQpJZGVhbGx5IHlvdSB3YW50IGVhY2ggZ2VuIGNvdW50ZXIgdG8gYmUg bG9jYXRlZCBpbiBpdHMgb3duIGNhY2hlIGxpbmUgKG11bHRpcGxlIGdlbiBjb3VudGVycyBpbiB0 aGUgc2FtZSBjYWNoZSBsaW5lIHdpbGwgZXhwZXJpZW5jZSB0aGUgc2FtZSB3cml0ZSBjb250ZW50 aW9uKS4gQnV0IHRoYXQgc2VlbXMgYSBiaXQgd2FzdGVmdWwgb2YgbWVtb3J5Lg0KSWRlYWxseSAo aW4gb3JkZXIgdG8gYXZvaWQgYWNjZXNzaW5nIG1vcmUgY2FjaGUgbGluZXMpLCB0aGUgZ2VuIGNv dW50ZXIgc2hvdWxkIGJlIGxvY2F0ZWQgaW4gdGhlIGhhc2ggYnVja2V0LiBCdXQgYXMgeW91IHdy aXRlIGJlbG93LCB0aGlzIHdvdWxkIGNyZWF0ZSBwcm9ibGVtcyBmb3IgdGhlIGxheW91dCBvZiB0 aGUgaGFzaCBidWNrZXQsIHRoZXJlIGlzbid0IGFueSByb29tIGZvciBhbm90aGVyIGZpZWxkLg0K U28gSSBwcm9wb3NlIGFuIGFycmF5IG9mIGdlbi4gY291bnRlcnMsIGluZGV4ZWQgYnkgdGhlIGhh c2ggKG9mIHNvbWVraW5kKSBvZiBwcmltYXJ5IGFuZCBhbHRlcm5hdGUgaGFzaGVzIChzaWduYXR1 cmVzKSBvZiB0aGUgZWxlbWVudCAobW9kdWxvIHRoZSBhcnJheSBzaXplKS4gU28gYW5vdGhlciBo YXNoIHRhYmxlLg0KICAgIA0KICAgIEFub3RoZXIgY29uc2lkZXJhdGlvbiBpcyBjdXJyZW50IGJ1 Y2tldCBpcyA2NC1ieXRlIGV4YWN0bHkgd2l0aCB0aGUgcGFydGlhbC1rZXktaGFzaGluZy4NCiAg ICBUbyBhZGQgYW5vdGhlciBjb3VudGVyLCB3ZSBuZWVkIHRvIHRoaW5rIGFib3V0IGNoYW5naW5n IGNlcnRhaW4gdmFyaWFibGVzIHRvIHN0aWxsIGFsaWduDQogICAgY2FjaGUgbGluZS4NCiAgICAN CiAgICANCg0K