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 0D99941C7F; Mon, 13 Feb 2023 05:30:22 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DF9F140EE7; Mon, 13 Feb 2023 05:30:21 +0100 (CET) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2053.outbound.protection.outlook.com [40.107.105.53]) by mails.dpdk.org (Postfix) with ESMTP id 12CB240A81 for ; Mon, 13 Feb 2023 05:30:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lEweVig2Xm9UtGfQd1gbuTit/9vHBaUgJLS4ZfW5ziQ=; b=nTgR/V8KvcyZhFQ5mfqP11C6IIV0yhcsMqYq4IpOU0HVZBrHun+GI2qo9hBa7TnYwvBRRUcz5QqVpOE9MTFI4EmiXFwdag/xmoj10o4ey4vBEjXvCZ9BHrSx89ibErNs5LaCoZQCRhqBiftWfEr5aPTLYXHAoxnl6Nm3TtQmX4g= Received: from AS8PR07CA0014.eurprd07.prod.outlook.com (2603:10a6:20b:451::11) by AM9PR08MB6274.eurprd08.prod.outlook.com (2603:10a6:20b:2d5::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23; Mon, 13 Feb 2023 04:30:17 +0000 Received: from AM7EUR03FT014.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:451:cafe::88) by AS8PR07CA0014.outlook.office365.com (2603:10a6:20b:451::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.10 via Frontend Transport; Mon, 13 Feb 2023 04:30:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT014.mail.protection.outlook.com (100.127.140.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23 via Frontend Transport; Mon, 13 Feb 2023 04:30:16 +0000 Received: ("Tessian outbound 333ca28169fa:v132"); Mon, 13 Feb 2023 04:30:16 +0000 X-CR-MTA-TID: 64aa7808 Received: from 2787aa57f63a.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1EB0525C-9DFE-4E88-92B3-2FB1DAE65C71.1; Mon, 13 Feb 2023 04:30:06 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 2787aa57f63a.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 13 Feb 2023 04:30:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KwThcRLRUIzr400jf9H4TMgxZlWJB7Uty/OPUIEAZVQJjM5qgtxvZelxW1BD4A12J5bgnCBDndliMmnC62dkAk2AXiG9aflszLKqbICNtkTnb5fepC89mpxQKtZIUc8cfgMsYQJAHwiefCzC4xVar07sO5sI/KDei/HrL5B1+WRYVskWP3IpCnISLqCt9uaQJTu/V3P+vd+hKXUzaNY+5cqd5WsHeHlHvZMQQWaHwr4wgwtaHC+KzW4ccVeWJhq8J0G9e6wrCSg7jmFGa8u67Kgv3MA+zHZeSdelxzKDm6HGWVnZGgBrvqhCtu91N7DloppMEBDikbX5+tT9xSAr+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lEweVig2Xm9UtGfQd1gbuTit/9vHBaUgJLS4ZfW5ziQ=; b=WBpQvfb/7gS+DVLKexxKXFTrhUyBKfXSJ7+NNHReKNZb2CDnHdJfxQVCntPjCSvfjhwdsXQwwmDfZupqVUmZBVWKj+Gfqo/AKBRlr4+Nv3DypJRIq0G4SU1mWLuQ5Rzy5ayDGoNvvbIMbHcMKiEM0LXqO335EZuZJT4YFe1gVn0JUScpwpnoMUsmuOqNdPE9FRTQhdomuKjiexisNgjmuJxxayIPZk9vn6+qn/9xuF9KK4XHypqLubIs0MGn9GtgX4UCqT7oRSSMMoorHpVWR2yZL3souPmXIPuUv3I5eWiI8s2jjfd+sQSY1V44769v/01lNVUE0e6Rul8YvCI9nw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lEweVig2Xm9UtGfQd1gbuTit/9vHBaUgJLS4ZfW5ziQ=; b=nTgR/V8KvcyZhFQ5mfqP11C6IIV0yhcsMqYq4IpOU0HVZBrHun+GI2qo9hBa7TnYwvBRRUcz5QqVpOE9MTFI4EmiXFwdag/xmoj10o4ey4vBEjXvCZ9BHrSx89ibErNs5LaCoZQCRhqBiftWfEr5aPTLYXHAoxnl6Nm3TtQmX4g= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by GV1PR08MB8572.eurprd08.prod.outlook.com (2603:10a6:150:84::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23; Mon, 13 Feb 2023 04:29:51 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f8c8:b4b6:c041:ac9d]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f8c8:b4b6:c041:ac9d%5]) with mapi id 15.20.6086.024; Mon, 13 Feb 2023 04:29:51 +0000 From: Honnappa Nagarahalli To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "olivier.matz@6wind.com" , "andrew.rybchenko@oktetlabs.ru" , Kamalakshitha Aligeri , "bruce.richardson@intel.com" , "konstantin.ananyev@huawei.com" , "dev@dpdk.org" CC: nd , "david.marchand@redhat.com" , nd Subject: RE: [PATCH v8] mempool cache: add zero-copy get and put functions Thread-Topic: [PATCH v8] mempool cache: add zero-copy get and put functions Thread-Index: AQHZPJcD9sYo5/g2OkuXWuiIQOI8vK7LuNhggAAtOjCAADRhkA== Date: Mon, 13 Feb 2023 04:29:51 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D87488@smartserver.smartshare.dk> <20230209145833.129986-1-mb@smartsharesystems.com> <98CBD80474FA8B44BF855DF32C47DC35D87732@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D87732@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 16603EC20197B24B93F9222A9036A97D.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: DBAPR08MB5814:EE_|GV1PR08MB8572:EE_|AM7EUR03FT014:EE_|AM9PR08MB6274:EE_ X-MS-Office365-Filtering-Correlation-Id: 9515ab97-3da1-457f-ee89-08db0d7b021a x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: /yYeiiWGd7iTH5Wi5oMPYSsIZWRd+sCpTLpUjsNqJxNI2SC7xMFsl/UOFtNyf/znk24KRiZekHUY4V9aorv8I1rCS0oq38Li8GAv6Tv9h4hZLEIZ3VRrxHiVWi9n9nZBfqINbQJI9sMc52vNcv+ufUYoRxPp3BQI6JjPIUun+7m/8I3/ka7Ln7So6CslYbJuCYhh6m5SEcvHccwuXeg/ysYp0gCSfd2QxYy8D0MC/ixCdx9fD1omj8vMQJeY+kZ92iN/PhOuZsyadIxTJOv7BFA9yKMMVaa69JLRG1dCX+OJ/V9F1AU6FTwR506d/IyTzm2tAIVfHPrbx1uKW8j6uNXnFP6NLODP/4wiMouIZv9Y4zrP1w11qxWPR5fsl/G6fVObvIJIomnpzm0taKgRXktjlYqLPTylPXRYDv1Hbv53BuiHefiNr0PWR8pA43SdaXY8opB78yu3Pl/FCkxiWFj1A0ZBQjDvkwK/nVE+nGumBB4zpZcwmhYyNcJw+LGS7jT27xPKyBndJ+tF2SlCti3aKHyr2ABwzM2MJYnAs1B3A/qsBMCzXLW95q+GBka88KwypWjVhUXQ+/h+UjA94aM3+FlvvbKWcXIi1tcS4LWA8QVWt42bOJKeq91/U3XgWswja5tJNOW9eAhpHdoYTHPEKYIQDKCdzNjyuE+vk9z4E/m5nwCXKcsUyb5lVmvmPSl0vjfpfQrRSjrB6OF2A5QQiSGdExPYB6SVeHD8SAo= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(366004)(136003)(396003)(39860400002)(346002)(376002)(451199018)(478600001)(71200400001)(7696005)(966005)(6506007)(26005)(9686003)(186003)(41300700001)(52536014)(66946007)(316002)(76116006)(8676002)(64756008)(4326008)(66476007)(66556008)(2906002)(66446008)(54906003)(30864003)(110136005)(8936002)(5660300002)(86362001)(122000001)(38100700002)(33656002)(55016003)(38070700005)(83380400001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8572 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 4a5917d2-040c-4245-63af-08db0d7af2e8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1Cq4z9ARYkaLU+pbr/8S/tNE5uh2PGhEgtq8TcOi3Sr5AA4apQTl/PRKbDGKZwBAbCa84k/k/5mkZ1hD+28gG5wJF5aUlP2OW73FIMEmRPpVVEWPa09aRxYlHyw9OK3wh00o+VD1xB8sSLlPMrFsbmYA4hq+aB/YUFC4O2beS5Zp3yKkGiHhy6Sel0ICKOM38VGuqqIgJvsbLjE1a1rCGdthn9PUA7/IOiFqJmT2/5Rqu6pioOVvdiFPjAXPVW1Dj7OukleYjPYkPjIBR6meERu5xVuMIn6wtJIDiUBT3jdvYljx3izNRtqHvNkfv52Ce1DXToCR4JFqnjhyMJeHN0dzg4bZyLY1VrP0jkznv6ini32xTLm0NYdGLU4/fg+iDP1Z1/8NluYakp3OFA8uOABUmkN6ehlu7BoSz5akS0UMGl6vCiw+T6O7cRGVutunynTJMaN20hXlwCDuygPqLLu4HMzNKZcfrWpX/nbg/3W7IwhninWT93fgtjVn293h7JSFHJ44LUUFXHaNoc4jokqj/nMmdkT2sRLvbPJe4DNsYxHbGSfwrZgZ1BrXd5RxojCkMGcxBCKhJjZ0k1PZpLemjJbpD2V88+pxXhInGgaKujN7GmyrSRMvK35vb1ay2o3MX8Xdf68mRg9BDZQety44vmkNLYX9EV9J+UZplqNwyryktf3V5xbco6Xd6M8Af4vR8IPYtQqcXwg73EoJaD0bo3TgCgqfZfyGF48fD/I= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230025)(4636009)(39860400002)(136003)(396003)(346002)(376002)(451199018)(36840700001)(46966006)(40470700004)(8936002)(52536014)(41300700001)(55016003)(47076005)(2906002)(81166007)(82740400003)(40460700003)(36860700001)(30864003)(5660300002)(83380400001)(82310400005)(26005)(86362001)(186003)(9686003)(6506007)(478600001)(966005)(7696005)(70206006)(70586007)(8676002)(356005)(336012)(40480700001)(4326008)(316002)(33656002)(110136005)(54906003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2023 04:30:16.9733 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9515ab97-3da1-457f-ee89-08db0d7b021a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6274 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 PHNuaXA+DQoNCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBAaW50ZXJuYWwgdXNlZCBieSBydGVfbWVt cG9vbF9jYWNoZV96Y19wdXRfYnVsaygpIGFuZA0KPiA+ID4gcnRlX21lbXBvb2xfZG9fZ2VuZXJp Y19wdXQoKS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFplcm8tY29weSBwdXQgb2JqZWN0cyBpbiBh IG1lbXBvb2wgY2FjaGUgYmFja2VkIGJ5IHRoZSBzcGVjaWZpZWQNCj4gPiA+IG1lbXBvb2wuDQo+ ID4gPiArICoNCj4gPiA+ICsgKiBAcGFyYW0gY2FjaGUNCj4gPiA+ICsgKiAgIEEgcG9pbnRlciB0 byB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gPiA+ICsgKiBAcGFyYW0gbXANCj4gPiA+ICsgKiAgIEEg cG9pbnRlciB0byB0aGUgbWVtcG9vbC4NCj4gPiA+ICsgKiBAcGFyYW0gbg0KPiA+ID4gKyAqICAg VGhlIG51bWJlciBvZiBvYmplY3RzIHRvIGJlIHB1dCBpbiB0aGUgbWVtcG9vbCBjYWNoZS4NCj4g PiA+ICsgKiBAcmV0dXJuDQo+ID4gPiArICogICBUaGUgcG9pbnRlciB0byB3aGVyZSB0byBwdXQg dGhlIG9iamVjdHMgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4gPiArICogICBOVUxMIGlmIHRo ZSByZXF1ZXN0IGl0c2VsZiBpcyB0b28gYmlnIGZvciB0aGUgY2FjaGUsIGkuZS4NCj4gPiA+ICsg KiAgIGV4Y2VlZHMgdGhlIGNhY2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gPiA+ICsgKi8NCj4gPiA+ ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkICoqDQo+ID4gPiArX19ydGVfbWVtcG9v bF9jYWNoZV96Y19wdXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ ID4gKwkJc3RydWN0IHJ0ZV9tZW1wb29sICptcCwNCj4gPiA+ICsJCXVuc2lnbmVkIGludCBuKQ0K PiA+ID4gK3sNCj4gPiA+ICsJdm9pZCAqKmNhY2hlX29ianM7DQo+ID4gPiArDQo+ID4gPiArCVJU RV9BU1NFUlQoY2FjaGUgIT0gTlVMTCk7DQo+ID4gPiArCVJURV9BU1NFUlQobXAgIT0gTlVMTCk7 DQo+ID4gPiArDQo+ID4gPiArCWlmIChuIDw9IGNhY2hlLT5mbHVzaHRocmVzaCAtIGNhY2hlLT5s ZW4pIHsNCj4gPiA+ICsJCS8qDQo+ID4gPiArCQkgKiBUaGUgb2JqZWN0cyBjYW4gYmUgYWRkZWQg dG8gdGhlIGNhY2hlIHdpdGhvdXQgY3Jvc3NpbmcNCj4gPiB0aGUNCj4gPiA+ICsJCSAqIGZsdXNo IHRocmVzaG9sZC4NCj4gPiA+ICsJCSAqLw0KPiA+ID4gKwkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+ b2Jqc1tjYWNoZS0+bGVuXTsNCj4gPiA+ICsJCWNhY2hlLT5sZW4gKz0gbjsNCj4gPiA+ICsJfSBl bHNlIGlmIChsaWtlbHkobiA8PSBjYWNoZS0+Zmx1c2h0aHJlc2gpKSB7DQo+ID4gPiArCQkvKg0K PiA+ID4gKwkJICogVGhlIHJlcXVlc3QgaXRzZWxmIGZpdHMgaW50byB0aGUgY2FjaGUuDQo+ID4g PiArCQkgKiBCdXQgZmlyc3QsIHRoZSBjYWNoZSBtdXN0IGJlIGZsdXNoZWQgdG8gdGhlIGJhY2tl bmQsIHNvDQo+ID4gPiArCQkgKiBhZGRpbmcgdGhlIG9iamVjdHMgZG9lcyBub3QgY3Jvc3MgdGhl IGZsdXNoIHRocmVzaG9sZC4NCj4gPiA+ICsJCSAqLw0KPiA+ID4gKwkJY2FjaGVfb2JqcyA9ICZj YWNoZS0+b2Jqc1swXTsNCj4gPiA+ICsJCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGsobXAs IGNhY2hlX29ianMsIGNhY2hlLQ0KPiA+ID4gPmxlbik7DQo+ID4gVGhpcyBpcyBhIGZsdXNoIG9m IHRoZSBjYWNoZS4gSXQgaXMgcHJvYmFibHkgd29ydGggaGF2aW5nIGEgY291bnRlcg0KPiA+IGZv ciB0aGlzLg0KPiANCj4gV2Ugc29tZXdoYXQgYWxyZWFkeSBkby4gVGhlIHB1dF9jb21tb25fcG9v bF9idWxrIGNvdW50ZXIgaXMNCj4gaW5jcmVtZW50ZWQgaW4gcnRlX21lbXBvb2xfb3BzX2VucXVl dWVfYnVsaygpIFsxXS4NCj4gDQo+IFsxXToNCj4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20v ZHBkay92MjIuMTEuMS9zb3VyY2UvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuDQo+IGgjTDgyNA0K PiANCj4gVGhpcyBjb3VudGVyIGRvZXNuJ3QgZXhhY3RseSBjb3VudCB0aGUgbnVtYmVyIG9mIHRp bWVzIHRoZSBjYWNoZSB3YXMNCj4gZmx1c2hlZCwgYmVjYXVzZSBpdCBhbHNvIGNvdW50cyBidWxr IHB1dCB0cmFuc2FjdGlvbnMgbm90IGdvaW5nIHZpYSB0aGUgY2FjaGUuDQo+IA0KPiBUaGlua2lu ZyBmdXJ0aGVyIGFib3V0IGl0LCBJIGFncmVlIHRoYXQgc3BlY2lmaWMgY291bnRlcnMgZm9yIGNh Y2hlIGZsdXNoIGFuZA0KPiBjYWNoZSByZWZpbGwgY291bGQgYmUgdXNlZnVsLCBhbmQgc2hvdWxk IGJlIGFkZGVkLiBIb3dldmVyLCBiZWluZyB0aGlzIGxhdGUsIEkNCj4gd291bGQgcHJlZmVyIHBv c3Rwb25pbmcgdGhlbSBmb3IgYSBzZXBhcmF0ZSBwYXRjaC4NCkFncmVlLCBjYW4gYmUgaW4gYSBz ZXBhcmF0ZSBwYXRjaCwgdGhleSBuZXZlciBleGlzdGVkLg0KDQo+IA0KPiA+DQo+ID4gPiArCQlj YWNoZS0+bGVuID0gbjsNCj4gPiA+ICsJfSBlbHNlIHsNCj4gPiA+ICsJCS8qIFRoZSByZXF1ZXN0 IGl0c2VsZiBpcyB0b28gYmlnIGZvciB0aGUgY2FjaGUuICovDQo+ID4gVGhpcyBpcyBwb3NzaWJs eSBhbiBlcnJvciBjb25kaXRpb24uIERvIHdlIG5lZWQgdG8gc2V0IHJ0ZV9lcnJubz8NCj4gDQo+ IEkgY29uc2lkZXJlZCB0aGlzIHdoZW4gSSB3cm90ZSB0aGUgZnVuY3Rpb24sIGFuZCBjb25jbHVk ZWQgdGhhdCB0aGlzIGZ1bmN0aW9uDQo+IG9ubHkgcmV0dXJucyBOVUxMIGFzIG5vcm1hbCBiZWhh dmlvciwgbmV2ZXIgYmVjYXVzZSBvZiBmYWlsdXJlLiBFLmcuIGlmIGEgY2FjaGUNCj4gY2FuIG9u bHkgaG9sZCA0IG1idWZzLCBhbmQgdGhlIFBNRCB0cmllcyB0byBzdG9yZSAzMiBtYnVmcywgaXQg aXMgY29ycmVjdA0KPiBiZWhhdmlvciBvZiB0aGUgUE1EIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBh bmQgbGVhcm4gdGhhdCB0aGUgY2FjaGUgaXMgdG9vIHNtYWxsDQo+IGZvciBkaXJlY3QgYWNjZXNz OyBpdCBpcyBub3QgYSBmYWlsdXJlIGluIHRoZSBQTUQgbm9yIGluIHRoZSBjYWNoZS4NClRoaXMg Y29uZGl0aW9uIGhhcHBlbnMgd2hlbiB0aGVyZSBpcyBhIG1pc21hdGNoIGJldHdlZW4gdGhlIGNh Y2hlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBiZWhhdmlvciBvZiB0aGUgUE1ELiBGcm9tIHRoaXMg cGVyc3BlY3RpdmUgSSB0aGluayB0aGlzIGlzIGFuIGVycm9yLiBUaGlzIGNvdWxkIGdvIHVubm90 aWNlZCwgSSBkbyBub3QgdGhpbmsgdGhpcyBtaXNjb25maWd1cmF0aW9uIGlzIHJlcG9ydGVkIGFu eXdoZXJlLg0KDQo+IA0KPiBJZiBpdCBjb3VsZCByZXR1cm4gTlVMTCBkdWUgdG8gYSB2YXJpZXR5 IG9mIHJlYXNvbnMsIEkgd291bGQgcHJvYmFibHkgYWdyZWUgdGhhdA0KPiB3ZSAqbmVlZCogdG8g c2V0IHJ0ZV9lcnJubywgc28gdGhlIGFwcGxpY2F0aW9uIGNvdWxkIGRldGVybWluZSB0aGUgcmVh c29uLg0KPiANCj4gQnV0IHNpbmNlIGl0IGNhbiBvbmx5IHJldHVybiBOVUxMIGR1ZSB0byBvbmUg cmVhc29uICh3aGljaCBpbnZvbHZlcyBjb3JyZWN0DQo+IHVzZSBvZiB0aGUgZnVuY3Rpb24pLCBJ IGNvbnZpbmNlZCBteXNlbGYgdGhhdCBzZXR0aW5nIHJ0ZV9lcnJubyB3b3VsZCBub3QNCj4gY29u dmV5IGFueSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYW4gdGhlIE5VTEwgcmV0dXJuIHZhbHVl IGl0c2VsZiwgYW5kIGJlIGENCj4gd2FzdGUgb2YgcGVyZm9ybWFuY2UgaW4gdGhlIGZhc3QgcGF0 aC4gSWYgeW91IGRpc2FncmVlLCB0aGVuIGl0IHNob3VsZCBiZSBzZXQgdG8NCj4gRUlOVkFMLCBs aWtlIHdoZW4gcnRlX21lbXBvb2xfY2FjaGVfemNfZ2V0X2J1bGsoKSBpcyBjYWxsZWQgd2l0aCBh IHJlcXVlc3QNCj4gdG9vIGJpZyBmb3IgdGhlIGNhY2hlLg0KPiANCj4gPiBEbyB3ZSBuZWVkIGEg Y291bnRlciBoZXJlIHRvIGNhcHR1cmUgdGhhdD8NCj4gDQo+IEdvb2QgcXVlc3Rpb24uIEkgZG9u J3Qga25vdy4gSXQgd291bGQgaW5kaWNhdGUgdGhhdCBhIGNhY2hlIGlzIHNtYWxsZXIgdGhhbg0K PiBleHBlY3RlZCBieSB0aGUgdXNlcnMgdHJ5aW5nIHRvIGFjY2VzcyB0aGUgY2FjaGUgZGlyZWN0 bHkuDQo+IA0KPiBBbmQgaWYgd2UgYWRkIHN1Y2ggYSBjb3VudGVyLCB3ZSBzaG91bGQgcHJvYmFi bHkgYWRkIGEgc2ltaWxhciBjb3VudGVyIGZvcg0KPiB0aGUgY2FjaGUgZ2V0IGZ1bmN0aW9uIHRv by4NCkFncmVlDQoNCj4gDQo+IEJ1dCBhZ2FpbiwgYmVpbmcgdGhpcyBsYXRlLCBJIHdvdWxkIHBv c3Rwb25lIHN1Y2ggY291bnRlcnMgZm9yIGEgc2VwYXJhdGUNCj4gcGF0Y2guIEFuZCB0aGV5IHNo b3VsZCB0cmlnZ2VyIG1vcmUgZGlzY3Vzc2lvbnMgYWJvdXQgcmVxdWlyZWQvdXNlZnVsDQo+IGNv dW50ZXJzLg0KQWdyZWUsIHNob3VsZCBiZSBwb3N0cG9uZWQgdG8gYW5vdGhlciBwYXRjaC4NCg0K PiANCj4gRm9yIHJlZmVyZW5jZSwgdGhlIHJ0ZV9tZW1wb29sX2RlYnVnX3N0YXRzIGlzIGNhY2hl IGFsaWduZWQgYW5kIGN1cnJlbnRseQ0KPiBob2xkcyAxMiA2NC1iaXQgY291bnRlcnMsIHNvIHdl IGNhbiBhZGQgNCBtb3JlIC0gd2hpY2ggaXMgZXhhY3RseSB0aGUgbnVtYmVyDQo+IGRpc2N1c3Nl ZCBoZXJlIC0gd2l0aG91dCBjaGFuZ2luZyBpdHMgc2l6ZS4gU28gdGhpcyBpcyBub3QgYSBiYXJy aWVyIHRvIGFkZGluZw0KPiB0aG9zZSBjb3VudGVycy4NCj4gDQo+IEZ1cnRoZXJtb3JlLCBJIHN1 cHBvc2UgdGhhdCB3ZSBvbmx5IHdhbnQgdG8gaW5jcmVhc2UgdGhlIGNvdW50ZXIgd2hlbiB0aGUN Cj4gY2FsbGVkIHRocm91Z2ggdGhlIG1lbXBvb2wgY2FjaGUgQVBJLCBub3Qgd2hlbiBjYWxsZWQg aW5kaXJlY3RseSB0aHJvdWdoDQo+IHRoZSBtZW1wb29sIEFQSS4gVGhpcyB3b3VsZCBtZWFuIHRo YXQgdGhlIG9yZGluYXJ5IG1lbXBvb2wgZnVuY3Rpb25zDQo+IGNhbm5vdCBjYWxsIHRoZSBtZW1w b29sIGNhY2hlIGZ1bmN0aW9ucywgb3IgdGhlIHdyb25nIGNvdW50ZXJzIHdvdWxkDQo+IGluY3Jl YXNlLiBTbyBhZGRpbmcgc3VjaCBjb3VudGVycyBpcyBub3QgY29tcGxldGVseSB0cml2aWFsLg0K PiANCj4gPg0KPiA+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gPiArCX0NCj4gPiA+ICsNCj4gPiA+ ICsJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9idWxrLCAxKTsNCj4gPiA+ ICsJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9vYmpzLCBuKTsNCj4gPiA+ ICsNCj4gPiA+ICsJcmV0dXJuIGNhY2hlX29ianM7DQo+ID4gPiArfQ0KPiA+ID4gKw0KPiA+ID4g Ky8qKg0KPiA+ID4gKyAqIEB3YXJuaW5nDQo+ID4gPiArICogQGIgRVhQRVJJTUVOVEFMOiBUaGlz IEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0DQo+ID4gcHJpb3INCj4gPiA+ IG5vdGljZS4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFplcm8tY29weSBwdXQgb2JqZWN0cyBpbiBh IG1lbXBvb2wgY2FjaGUgYmFja2VkIGJ5IHRoZSBzcGVjaWZpZWQNCj4gPiA+IG1lbXBvb2wuDQo+ ID4gPiArICoNCj4gPiA+ICsgKiBAcGFyYW0gY2FjaGUNCj4gPiA+ICsgKiAgIEEgcG9pbnRlciB0 byB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gPiA+ICsgKiBAcGFyYW0gbXANCj4gPiA+ICsgKiAgIEEg cG9pbnRlciB0byB0aGUgbWVtcG9vbC4NCj4gPiA+ICsgKiBAcGFyYW0gbg0KPiA+ID4gKyAqICAg VGhlIG51bWJlciBvZiBvYmplY3RzIHRvIGJlIHB1dCBpbiB0aGUgbWVtcG9vbCBjYWNoZS4NCj4g PiA+ICsgKiBAcmV0dXJuDQo+ID4gPiArICogICBUaGUgcG9pbnRlciB0byB3aGVyZSB0byBwdXQg dGhlIG9iamVjdHMgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4gPiArICogICBOVUxMIGlmIHRo ZSByZXF1ZXN0IGl0c2VsZiBpcyB0b28gYmlnIGZvciB0aGUgY2FjaGUsIGkuZS4NCj4gPiA+ICsg KiAgIGV4Y2VlZHMgdGhlIGNhY2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gPiA+ICsgKi8NCj4gPiA+ ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2 b2lkICoqDQo+ID4gPiArcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X2J1bGsoc3RydWN0IHJ0ZV9t ZW1wb29sX2NhY2hlICpjYWNoZSwNCj4gPiA+ICsJCXN0cnVjdCBydGVfbWVtcG9vbCAqbXAsDQo+ ID4gPiArCQl1bnNpZ25lZCBpbnQgbikNCj4gPiA+ICt7DQo+ID4gPiArCVJURV9BU1NFUlQoY2Fj aGUgIT0gTlVMTCk7DQo+ID4gPiArCVJURV9BU1NFUlQobXAgIT0gTlVMTCk7DQo+ID4gPiArDQo+ ID4gPiArCXJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX3B1dF9idWxrKGNhY2hlLCBtcCwgbik7 DQo+ID4gPiArCXJldHVybiBfX3J0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKGNhY2hlLCBt cCwgbik7IH0NCj4gPiA+ICsNCj4gPiA+ICsvKioNCj4gPiA+ICsgKiBAd2FybmluZw0KPiA+ID4g KyAqIEBiIEVYUEVSSU1FTlRBTDogVGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwg d2l0aG91dA0KPiA+IHByaW9yDQo+ID4gPiBub3RpY2UuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBa ZXJvLWNvcHkgdW4tcHV0IG9iamVjdHMgaW4gYSBtZW1wb29sIGNhY2hlLg0KPiA+ID4gKyAqDQo+ ID4gPiArICogQHBhcmFtIGNhY2hlDQo+ID4gPiArICogICBBIHBvaW50ZXIgdG8gdGhlIG1lbXBv b2wgY2FjaGUuDQo+ID4gPiArICogQHBhcmFtIG4NCj4gPiA+ICsgKiAgIFRoZSBudW1iZXIgb2Yg b2JqZWN0cyBub3QgcHV0IGluIHRoZSBtZW1wb29sIGNhY2hlIGFmdGVyDQo+ID4gY2FsbGluZw0K PiA+ID4gKyAqICAgcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X2J1bGsoKS4NCj4gPiA+ICsgKi8N Cj4gPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPiA+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lu bGluZSB2b2lkDQo+ID4gPiArcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X3Jld2luZChzdHJ1Y3Qg cnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ID4gKwkJdW5zaWduZWQgaW50IG4pDQpFYXJs aWVyIHRoZXJlIHdhcyBhIGRpc2N1c3Npb24gb24gdGhlIEFQSSBuYW1lLg0KSU1PLCB3ZSBzaG91 bGQga2VlcCB0aGUgQVBJIG5hbWVzIHNpbWlsYXIgdG8gdGhvc2UgaW4gcmluZyBsaWJyYXJ5LiBU aGlzIHdvdWxkIHByb3ZpZGUgY29uc2lzdGVuY3kgYWNyb3NzIHRoZSBsaWJyYXJpZXMuDQpUaGVy ZSB3ZXJlIHNvbWUgY29uY2VybnMgZXhwcmVzc2VkIGluIFBNRCBoYXZpbmcgdG8gY2FsbCAyIEFQ SXMuIEkgZG8gbm90IHRoaW5rIGNoYW5naW5nIHRvIDIgQVBJcyB3aWxsIGhhdmUgYW55IHBlcmYg aW1wYWN0Lg0KDQpBbHNvLCB3aGF0IGlzIHRoZSB1c2UgY2FzZSBmb3IgdGhlICdyZXdpbmQnIEFQ ST8NCg0KPiA+ID4gK3sNCj4gPiA+ICsJUlRFX0FTU0VSVChjYWNoZSAhPSBOVUxMKTsNCj4gPiA+ ICsJUlRFX0FTU0VSVChuIDw9IGNhY2hlLT5sZW4pOw0KPiA+ID4gKw0KPiA+ID4gKwlydGVfbWVt cG9vbF90cmFjZV9jYWNoZV96Y19wdXRfcmV3aW5kKGNhY2hlLCBuKTsNCj4gPiA+ICsNCj4gPiA+ ICsJY2FjaGUtPmxlbiAtPSBuOw0KPiA+ID4gKw0KPiA+ID4gKwlSVEVfTUVNUE9PTF9DQUNIRV9T VEFUX0FERChjYWNoZSwgcHV0X29ianMsIChpbnQpLW4pOyB9DQo+ID4gPiArDQo+ID4gPiArLyoq DQo+ID4gPiArICogQHdhcm5pbmcNCj4gPiA+ICsgKiBAYiBFWFBFUklNRU5UQUw6IFRoaXMgQVBJ IG1heSBjaGFuZ2UsIG9yIGJlIHJlbW92ZWQsIHdpdGhvdXQNCj4gPiBwcmlvcg0KPiA+ID4gbm90 aWNlLg0KPiA+ID4gKyAqDQo+ID4gPiArICogWmVyby1jb3B5IGdldCBvYmplY3RzIGZyb20gYSBt ZW1wb29sIGNhY2hlIGJhY2tlZCBieSB0aGUNCj4gPiBzcGVjaWZpZWQNCj4gPiA+IG1lbXBvb2wu DQo+ID4gPiArICoNCj4gPiA+ICsgKiBAcGFyYW0gY2FjaGUNCj4gPiA+ICsgKiAgIEEgcG9pbnRl ciB0byB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gPiA+ICsgKiBAcGFyYW0gbXANCj4gPiA+ICsgKiAg IEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbC4NCj4gPiA+ICsgKiBAcGFyYW0gbg0KPiA+ID4gKyAq ICAgVGhlIG51bWJlciBvZiBvYmplY3RzIHRvIGJlIG1hZGUgYXZhaWxhYmxlIGZvciBleHRyYWN0 aW9uIGZyb20NCj4gPiB0aGUNCj4gPiA+IG1lbXBvb2wgY2FjaGUuDQo+ID4gPiArICogQHJldHVy bg0KPiA+ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIG9iamVjdHMgaW4gdGhlIG1lbXBvb2wg Y2FjaGUuDQo+ID4gPiArICogICBOVUxMIG9uIGVycm9yOyBpLmUuIHRoZSBjYWNoZSArIHRoZSBw b29sIGRvZXMgbm90IGNvbnRhaW4gJ24nDQo+ID4gb2JqZWN0cy4NCj4gPiA+ICsgKiAgIFdpdGgg cnRlX2Vycm5vIHNldCB0byB0aGUgZXJyb3IgY29kZSBvZiB0aGUgbWVtcG9vbCBkZXF1ZXVlDQo+ ID4gZnVuY3Rpb24sDQo+ID4gPiArICogICBvciBFSU5WQUwgaWYgdGhlIHJlcXVlc3QgaXRzZWxm IGlzIHRvbyBiaWcgZm9yIHRoZSBjYWNoZSwgaS5lLg0KPiA+ID4gKyAqICAgZXhjZWVkcyB0aGUg Y2FjaGUgZmx1c2ggdGhyZXNob2xkLg0KPiA+ID4gKyAqLw0KPiA+ID4gK19fcnRlX2V4cGVyaW1l bnRhbA0KPiA+ID4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQgKg0KPiA+ID4gK3J0 ZV9tZW1wb29sX2NhY2hlX3pjX2dldF9idWxrKHN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZSAqY2Fj aGUsDQo+ID4gPiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0KPiA+ID4gKwkJdW5zaWduZWQg aW50IG4pDQo+ID4gPiArew0KPiA+ID4gKwl1bnNpZ25lZCBpbnQgbGVuLCBzaXplOw0KPiA+ID4g Kw0KPiA+ID4gKwlSVEVfQVNTRVJUKGNhY2hlICE9IE5VTEwpOw0KPiA+ID4gKwlSVEVfQVNTRVJU KG1wICE9IE5VTEwpOw0KPiA+ID4gKw0KPiA+ID4gKwlydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96 Y19nZXRfYnVsayhjYWNoZSwgbXAsIG4pOw0KPiA+ID4gKw0KPiA+ID4gKwlsZW4gPSBjYWNoZS0+ bGVuOw0KPiA+ID4gKwlzaXplID0gY2FjaGUtPnNpemU7DQo+ID4gPiArDQo+ID4gPiArCWlmIChu IDw9IGxlbikgew0KPiA+ID4gKwkJLyogVGhlIHJlcXVlc3QgY2FuIGJlIHNhdGlzZmllZCBmcm9t IHRoZSBjYWNoZSBhcyBpcy4gKi8NCj4gPiA+ICsJCWxlbiAtPSBuOw0KPiA+ID4gKwl9IGVsc2Ug aWYgKGxpa2VseShuIDw9IHNpemUpKSB7DQo+ID4gPiArCQkvKg0KPiA+ID4gKwkJICogVGhlIHJl cXVlc3QgaXRzZWxmIGNhbiBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2FjaGUuDQo+ID4gPiArCQkg KiBCdXQgZmlyc3QsIHRoZSBjYWNoZSBtdXN0IGJlIGZpbGxlZCBmcm9tIHRoZSBiYWNrZW5kOw0K PiA+ID4gKwkJICogZmV0Y2ggc2l6ZSArIHJlcXVlc3RlZCAtIGxlbiBvYmplY3RzLg0KPiA+ID4g KwkJICovDQo+ID4gPiArCQlpbnQgcmV0Ow0KPiA+ID4gKw0KPiA+ID4gKwkJcmV0ID0gcnRlX21l bXBvb2xfb3BzX2RlcXVldWVfYnVsayhtcCwgJmNhY2hlLQ0KPiA+ID4gPm9ianNbbGVuXSwgc2l6 ZSArIG4gLSBsZW4pOw0KPiA+ID4gKwkJaWYgKHVubGlrZWx5KHJldCA8IDApKSB7DQo+ID4gPiAr CQkJLyoNCj4gPiA+ICsJCQkgKiBXZSBhcmUgYnVmZmVyIGNvbnN0cmFpbmVkLg0KPiA+ID4gKwkJ CSAqIERvIG5vdCBmaWxsIHRoZSBjYWNoZSwganVzdCBzYXRpc2Z5IHRoZSByZXF1ZXN0Lg0KPiA+ ID4gKwkJCSAqLw0KPiA+ID4gKwkJCXJldCA9IHJ0ZV9tZW1wb29sX29wc19kZXF1ZXVlX2J1bGso bXAsICZjYWNoZS0NCj4gPiA+ID5vYmpzW2xlbl0sIG4gLSBsZW4pOw0KPiA+ID4gKwkJCWlmICh1 bmxpa2VseShyZXQgPCAwKSkgew0KPiA+ID4gKwkJCQkvKiBVbmFibGUgdG8gc2F0aXNmeSB0aGUg cmVxdWVzdC4gKi8NCj4gPiA+ICsNCj4gPiA+ICsJCQkJUlRFX01FTVBPT0xfU1RBVF9BREQobXAs DQo+ID4gPiBnZXRfZmFpbF9idWxrLCAxKTsNCj4gPiA+ICsJCQkJUlRFX01FTVBPT0xfU1RBVF9B REQobXAsDQo+ID4gPiBnZXRfZmFpbF9vYmpzLCBuKTsNCj4gPiA+ICsNCj4gPiA+ICsJCQkJcnRl X2Vycm5vID0gLXJldDsNCj4gPiA+ICsJCQkJcmV0dXJuIE5VTEw7DQo+ID4gPiArCQkJfQ0KPiA+ ID4gKw0KPiA+ID4gKwkJCWxlbiA9IDA7DQo+ID4gPiArCQl9IGVsc2Ugew0KPiA+ID4gKwkJCWxl biA9IHNpemU7DQo+ID4gPiArCQl9DQo+ID4gPiArCX0gZWxzZSB7DQo+ID4gPiArCQkvKiBUaGUg cmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLiAqLw0KPiA+ID4gKwkJcnRl X2Vycm5vID0gRUlOVkFMOw0KPiA+ID4gKwkJcmV0dXJuIE5VTEw7DQo+ID4gPiArCX0NCj4gPiA+ ICsNCj4gPiA+ICsJY2FjaGUtPmxlbiA9IGxlbjsNCj4gPiA+ICsNCj4gPiA+ICsJUlRFX01FTVBP T0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIGdldF9zdWNjZXNzX2J1bGssIDEpOw0KPiA+ID4gKwlS VEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgZ2V0X3N1Y2Nlc3Nfb2Jqcywgbik7DQo+ ID4gPiArDQo+ID4gPiArCXJldHVybiAmY2FjaGUtPm9ianNbbGVuXTsNCj4gPiA+ICt9DQo+ID4g PiArDQo+ID4gPiAgLyoqDQo+ID4gPiAgICogQGludGVybmFsIFB1dCBzZXZlcmFsIG9iamVjdHMg YmFjayBpbiB0aGUgbWVtcG9vbDsgdXNlZA0KPiA+IGludGVybmFsbHkuDQo+ID4gPiAgICogQHBh cmFtIG1wDQo+ID4gPiBAQCAtMTM2NCwzMiArMTU1NywyNSBAQCBydGVfbWVtcG9vbF9kb19nZW5l cmljX3B1dChzdHJ1Y3QNCj4gPiA+IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0ICpvYmpf dGFibGUsICB7DQo+ID4gPiAgCXZvaWQgKipjYWNoZV9vYmpzOw0KPiA+ID4NCj4gPiA+IC0JLyog Tm8gY2FjaGUgcHJvdmlkZWQgKi8NCj4gPiA+IC0JaWYgKHVubGlrZWx5KGNhY2hlID09IE5VTEwp KQ0KPiA+ID4gLQkJZ290byBkcml2ZXJfZW5xdWV1ZTsNCj4gPiA+ICsJLyogTm8gY2FjaGUgcHJv dmlkZWQ/ICovDQo+ID4gPiArCWlmICh1bmxpa2VseShjYWNoZSA9PSBOVUxMKSkgew0KPiA+ID4g KwkJLyogSW5jcmVtZW50IHN0YXRzIG5vdywgYWRkaW5nIGluIG1lbXBvb2wgYWx3YXlzIHN1Y2Nl ZWRzLg0KPiA+ID4gKi8NCj4gPiA+ICsJCVJURV9NRU1QT09MX1NUQVRfQUREKG1wLCBwdXRfYnVs aywgMSk7DQo+ID4gPiArCQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0X29ianMsIG4pOw0K PiA+ID4NCj4gPiA+IC0JLyogaW5jcmVtZW50IHN0YXQgbm93LCBhZGRpbmcgaW4gbWVtcG9vbCBh bHdheXMgc3VjY2VzcyAqLw0KPiA+ID4gLQlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNo ZSwgcHV0X2J1bGssIDEpOw0KPiA+ID4gLQlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNo ZSwgcHV0X29ianMsIG4pOw0KPiA+ID4gKwkJZ290byBkcml2ZXJfZW5xdWV1ZTsNCj4gPiA+ICsJ fQ0KPiA+ID4NCj4gPiA+IC0JLyogVGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRo ZSBjYWNoZSAqLw0KPiA+ID4gLQlpZiAodW5saWtlbHkobiA+IGNhY2hlLT5mbHVzaHRocmVzaCkp DQo+ID4gPiAtCQlnb3RvIGRyaXZlcl9lbnF1ZXVlX3N0YXRzX2luY3JlbWVudGVkOw0KPiA+ID4g KwkvKiBQcmVwYXJlIHRvIGFkZCB0aGUgb2JqZWN0cyB0byB0aGUgY2FjaGUuICovDQo+ID4gPiAr CWNhY2hlX29ianMgPSBfX3J0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKGNhY2hlLCBtcCwg bik7DQo+ID4gPg0KPiA+ID4gLQkvKg0KPiA+ID4gLQkgKiBUaGUgY2FjaGUgZm9sbG93cyB0aGUg Zm9sbG93aW5nIGFsZ29yaXRobToNCj4gPiA+IC0JICogICAxLiBJZiB0aGUgb2JqZWN0cyBjYW5u b3QgYmUgYWRkZWQgdG8gdGhlIGNhY2hlIHdpdGhvdXQNCj4gPiBjcm9zc2luZw0KPiA+ID4gLQkg KiAgICAgIHRoZSBmbHVzaCB0aHJlc2hvbGQsIGZsdXNoIHRoZSBjYWNoZSB0byB0aGUgYmFja2Vu ZC4NCj4gPiA+IC0JICogICAyLiBBZGQgdGhlIG9iamVjdHMgdG8gdGhlIGNhY2hlLg0KPiA+ID4g LQkgKi8NCj4gPiA+ICsJLyogVGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBj YWNoZT8gKi8NCj4gPiA+ICsJaWYgKHVubGlrZWx5KGNhY2hlX29ianMgPT0gTlVMTCkpIHsNCj4g PiA+ICsJCS8qIEluY3JlbWVudCBzdGF0cyBub3csIGFkZGluZyBpbiBtZW1wb29sIGFsd2F5cyBz dWNjZWVkcy4NCj4gPiA+ICovDQo+ID4gPiArCQlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChj YWNoZSwgcHV0X2J1bGssIDEpOw0KPiA+ID4gKwkJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQo Y2FjaGUsIHB1dF9vYmpzLCBuKTsNCj4gPiA+DQo+ID4gPiAtCWlmIChjYWNoZS0+bGVuICsgbiA8 PSBjYWNoZS0+Zmx1c2h0aHJlc2gpIHsNCj4gPiA+IC0JCWNhY2hlX29ianMgPSAmY2FjaGUtPm9i anNbY2FjaGUtPmxlbl07DQo+ID4gPiAtCQljYWNoZS0+bGVuICs9IG47DQo+ID4gPiAtCX0gZWxz ZSB7DQo+ID4gPiAtCQljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzWzBdOw0KPiA+ID4gLQkJcnRl X21lbXBvb2xfb3BzX2VucXVldWVfYnVsayhtcCwgY2FjaGVfb2JqcywgY2FjaGUtDQo+ID4gPiA+ bGVuKTsNCj4gPiA+IC0JCWNhY2hlLT5sZW4gPSBuOw0KPiA+ID4gKwkJZ290byBkcml2ZXJfZW5x dWV1ZTsNCj4gPiA+ICAJfQ0KPiA+ID4NCj4gPiA+ICAJLyogQWRkIHRoZSBvYmplY3RzIHRvIHRo ZSBjYWNoZS4gKi8gQEAgLTEzOTksMTMgKzE1ODUsNyBAQA0KPiA+ID4gcnRlX21lbXBvb2xfZG9f Z2VuZXJpY19wdXQoc3RydWN0IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0DQo+ID4gPiAq b2JqX3RhYmxlLA0KPiA+ID4NCj4gPiA+ICBkcml2ZXJfZW5xdWV1ZToNCj4gPiA+DQo+ID4gPiAt CS8qIGluY3JlbWVudCBzdGF0IG5vdywgYWRkaW5nIGluIG1lbXBvb2wgYWx3YXlzIHN1Y2Nlc3Mg Ki8NCj4gPiA+IC0JUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIHB1dF9idWxrLCAxKTsNCj4gPiA+ IC0JUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIHB1dF9vYmpzLCBuKTsNCj4gPiA+IC0NCj4gPiA+ IC1kcml2ZXJfZW5xdWV1ZV9zdGF0c19pbmNyZW1lbnRlZDoNCj4gPiA+IC0NCj4gPiA+IC0JLyog cHVzaCBvYmplY3RzIHRvIHRoZSBiYWNrZW5kICovDQo+ID4gPiArCS8qIFB1c2ggdGhlIG9iamVj dHMgdG8gdGhlIGJhY2tlbmQuICovDQo+ID4gPiAgCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1 bGsobXAsIG9ial90YWJsZSwgbik7ICB9DQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9t ZW1wb29sL3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gPiA+IGIvbGliL21lbXBvb2wvcnRlX21l bXBvb2xfdHJhY2VfZnAuaA0KPiA+ID4gaW5kZXggZWQwNjBlODg3Yy4uMTQ2NjY0NTdmNyAxMDA2 NDQNCj4gPiA+IC0tLSBhL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gPiA+ ICsrKyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gPiA+IEBAIC0xMDks NiArMTA5LDI5IEBAIFJURV9UUkFDRV9QT0lOVF9GUCgNCj4gPiA+ICAJcnRlX3RyYWNlX3BvaW50 X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiA+ID4gICkNCj4gPiA+DQo+ID4gPiArUlRFX1RSQUNFX1BP SU5UX0ZQKA0KPiA+ID4gKwlydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfYnVsaywNCj4g PiA+ICsJUlRFX1RSQUNFX1BPSU5UX0FSR1Modm9pZCAqY2FjaGUsIHZvaWQgKm1lbXBvb2wsIHVp bnQzMl90DQo+ID4gPiBuYl9vYmpzKSwNCj4gPiA+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRy KGNhY2hlKTsNCj4gPiA+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiA+ ID4gKwlydGVfdHJhY2VfcG9pbnRfZW1pdF91MzIobmJfb2Jqcyk7DQo+ID4gPiArKQ0KPiA+ID4g Kw0KPiA+ID4gK1JURV9UUkFDRV9QT0lOVF9GUCgNCj4gPiA+ICsJcnRlX21lbXBvb2xfdHJhY2Vf Y2FjaGVfemNfcHV0X3Jld2luZCwNCj4gPiA+ICsJUlRFX1RSQUNFX1BPSU5UX0FSR1Modm9pZCAq Y2FjaGUsIHVpbnQzMl90IG5iX29ianMpLA0KPiA+ID4gKwlydGVfdHJhY2VfcG9pbnRfZW1pdF9w dHIoY2FjaGUpOw0KPiA+ID4gKwlydGVfdHJhY2VfcG9pbnRfZW1pdF91MzIobmJfb2Jqcyk7DQo+ ID4gPiArKQ0KPiA+ID4gKw0KPiA+ID4gK1JURV9UUkFDRV9QT0lOVF9GUCgNCj4gPiA+ICsJcnRl X21lbXBvb2xfdHJhY2VfY2FjaGVfemNfZ2V0X2J1bGssDQo+ID4gPiArCVJURV9UUkFDRV9QT0lO VF9BUkdTKHZvaWQgKmNhY2hlLCB2b2lkICptZW1wb29sLCB1aW50MzJfdA0KPiA+ID4gbmJfb2Jq cyksDQo+ID4gPiArCXJ0ZV90cmFjZV9wb2ludF9lbWl0X3B0cihjYWNoZSk7DQo+ID4gPiArCXJ0 ZV90cmFjZV9wb2ludF9lbWl0X3B0cihtZW1wb29sKTsNCj4gPiA+ICsJcnRlX3RyYWNlX3BvaW50 X2VtaXRfdTMyKG5iX29ianMpOw0KPiA+ID4gKykNCj4gPiA+ICsNCj4gPiA+ICAjaWZkZWYgX19j cGx1c3BsdXMNCj4gPiA+ICB9DQo+ID4gPiAgI2VuZGlmDQo+ID4gPiBkaWZmIC0tZ2l0IGEvbGli L21lbXBvb2wvdmVyc2lvbi5tYXAgYi9saWIvbWVtcG9vbC92ZXJzaW9uLm1hcCBpbmRleA0KPiA+ ID4gYjY3ZDdhYWNlNy4uMTM4M2FlNmRiMiAxMDA2NDQNCj4gPiA+IC0tLSBhL2xpYi9tZW1wb29s L3ZlcnNpb24ubWFwDQo+ID4gPiArKysgYi9saWIvbWVtcG9vbC92ZXJzaW9uLm1hcA0KPiA+ID4g QEAgLTYzLDYgKzYzLDExIEBAIEVYUEVSSU1FTlRBTCB7DQo+ID4gPiAgCV9fcnRlX21lbXBvb2xf dHJhY2Vfb3BzX2FsbG9jOw0KPiA+ID4gIAlfX3J0ZV9tZW1wb29sX3RyYWNlX29wc19mcmVlOw0K PiA+ID4gIAlfX3J0ZV9tZW1wb29sX3RyYWNlX3NldF9vcHNfYnluYW1lOw0KPiA+ID4gKw0KPiA+ ID4gKwkjIGFkZGVkIGluIDIzLjAzDQo+ID4gPiArCV9fcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVf emNfcHV0X2J1bGs7DQo+ID4gPiArCV9fcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfcHV0X3Jl d2luZDsNCj4gPiA+ICsJX19ydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19nZXRfYnVsazsNCj4g PiA+ICB9Ow0KPiA+ID4NCj4gPiA+ICBJTlRFUk5BTCB7DQo+ID4gPiAtLQ0KPiA+ID4gMi4xNy4x DQoNCg==