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 3E54541C7D; Sun, 12 Feb 2023 20:56:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2146440E09; Sun, 12 Feb 2023 20:56:52 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2084.outbound.protection.outlook.com [40.107.7.84]) by mails.dpdk.org (Postfix) with ESMTP id 62F93400D7 for ; Sun, 12 Feb 2023 20:56:50 +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=rHrfeqC4ZGRL5p8HmC7SketRNwivt8o8MkSwLQ9DgHw=; b=kvCidLKTkHPK1bvQ9pTahOc5V8O/i6m9NTWtzd/aFz+9wgqU2qEfjvrINlCnUagtneJxvhzM0NUtjslNqkYHMacXPxN04LXGSfZNxt/JYRzxT+QjrHrmnC65NLWE1dRkZuunPbm+fQ2OTXA9ovLjtlNXVjJ9bg7yfrt4caVn95U= Received: from AS9PR01CA0026.eurprd01.prod.exchangelabs.com (2603:10a6:20b:542::12) by PAXPR08MB7441.eurprd08.prod.outlook.com (2603:10a6:102:2b9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23; Sun, 12 Feb 2023 19:56:48 +0000 Received: from AM7EUR03FT056.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:542:cafe::eb) by AS9PR01CA0026.outlook.office365.com (2603:10a6:20b:542::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.22 via Frontend Transport; Sun, 12 Feb 2023 19:56:48 +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 AM7EUR03FT056.mail.protection.outlook.com (100.127.140.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23 via Frontend Transport; Sun, 12 Feb 2023 19:56:48 +0000 Received: ("Tessian outbound baf1b7a96f25:v132"); Sun, 12 Feb 2023 19:56:47 +0000 X-CR-MTA-TID: 64aa7808 Received: from 5b0c364552a6.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D545AA26-648B-4EDB-BC18-616CEE2576F2.1; Sun, 12 Feb 2023 19:56:36 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5b0c364552a6.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Sun, 12 Feb 2023 19:56:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hRmrvPOdOrBKsxNluVwfvoLM+IqMz3YPKvLRHH3XusghDA7zw5QxCm5sOHUOptTw6nv0MGbanQYQLOlts2dkIvGFVYFXb6g4Qb76FwOAdYagccLoeJJsAAQt7Rngk/hZi8x+cP44A8L07/fN5Ll2qeS1sDSF4y6CiIwpYlmh89GdrKAUn8bh/UiOYk1Y3+IeMw+8iaicmeRqkLk51CivbNGfWZNL19Q8VMCzO3UKAdfM7Ls7cpxoiWHMscyvuIoVk8pB9/kZ6dqXLfdE19LnTeIibkL8a/ZPhJ1T7ke/nkZVrc0Ge+SYDAZ5RAgyFC6tJ15e+CvoQl1sBYIBNajwoA== 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=rHrfeqC4ZGRL5p8HmC7SketRNwivt8o8MkSwLQ9DgHw=; b=JflKRmusyPUq6IabvUwPOuJ+zhkm6GG+5uLcjMjnKEoOAVP5gXKgxA2TtbUh34bfnPeBDF0a1Xh6uTApUvSceTT8YSZbexntvZsop3rD8OJbdjzdNB3D2ixwhVA1mXsD9S5fAXrdv2YBswAuYQTtDIbdOkWwrwo2faZo6/weQ3a2RYMQ7VMK67JXA15KYYlwxMUW/4spuWhx1G5qqpSQozIhgL62gr8Z227lbHIxYbUoLrl6pxIl9DS5JwxdOPqJlYdTbiqCW/F+/TILra9moHMmYy7T3qCbxXWrKqFIW2ZsUmKkT98ufHSpwQ6cgtRP12IpvYbFEpiXAr7Bz6J+yQ== 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=rHrfeqC4ZGRL5p8HmC7SketRNwivt8o8MkSwLQ9DgHw=; b=kvCidLKTkHPK1bvQ9pTahOc5V8O/i6m9NTWtzd/aFz+9wgqU2qEfjvrINlCnUagtneJxvhzM0NUtjslNqkYHMacXPxN04LXGSfZNxt/JYRzxT+QjrHrmnC65NLWE1dRkZuunPbm+fQ2OTXA9ovLjtlNXVjJ9bg7yfrt4caVn95U= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by AS8PR08MB10071.eurprd08.prod.outlook.com (2603:10a6:20b:633::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.23; Sun, 12 Feb 2023 19:56:34 +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; Sun, 12 Feb 2023 19:56:34 +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/g2OkuXWuiIQOI8vK7LuNhg Date: Sun, 12 Feb 2023 19:56:34 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D87488@smartserver.smartshare.dk> <20230209145833.129986-1-mb@smartsharesystems.com> In-Reply-To: <20230209145833.129986-1-mb@smartsharesystems.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 0D434684E25CDC42908A5DC85D5FE15F.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_|AS8PR08MB10071:EE_|AM7EUR03FT056:EE_|PAXPR08MB7441:EE_ X-MS-Office365-Filtering-Correlation-Id: 39d48576-7d23-4d29-4956-08db0d33468a 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: S+/nejJ+VTw6MAh9ZXUAhC7jp1L19DPlJyAvDru+XH2pLExZ/r5bfrq0phftaVjpYH3F/ydbjDxSO557JzVPgtHZvc2sIjt0pvoDKltFWI3vO1dCL3SLkobVfxG7DAyKg1siNLw2vRjnXo5odF/UV/RaDdW4l/Uv8BQkB5rmKjJGoAxNtYU3v+2/uxsaU6RILHFUNqZrqxMx3m7dN2pO1ccx48aPqtJ8jutAtsm8NIKc9sqQ6U6adEWCjJIAKz6tVwAqGBDKV7bGfFHnMpQNklR3kURltOMscEi5xtKUhvVItDMFA3tB/dCufs/+oEXGupw7bzEdJO/U+T74wP4tyeaOLLjmQtVSHxAshJS/qTqeDcNI3p/Ao0xISUuQE833rnPqA8xS6e7H/crFqpFMW8yLh6//u9vBDXV0tPk1mnc3djP3TPDgsZzmWNyNoinQgR9SnNgzTgRaCMCCudZK1ITqYNz7amOwDb8AQprDe/SdaHM0OfUzu6Auq227fbGagvgPi6GvOV/HGKVBUCtmKNxbRnZL5DykHQ3CzKZdXtpDOy5NVpQkkCSyhtHCSfDJSOYvzNDRmEO4qTE79MsoA4VUDPkTnMv2YLyKsrgcoP4AanZ3jprxDFUjcd3YtDF3IweOK5tv0cxnNqItkRMRByqVdka/Ddk9d+U/36OB7ccBXbfgr4bY2lVOIvQBUmBQhkiHCqxzGT1HgU8cU8/QSiueP/yCk7hZ/kYZ7PP15Y8= 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)(346002)(376002)(136003)(396003)(39860400002)(451199018)(966005)(7696005)(478600001)(55016003)(83380400001)(66574015)(33656002)(122000001)(38100700002)(86362001)(38070700005)(26005)(9686003)(6506007)(53546011)(186003)(54906003)(66556008)(110136005)(64756008)(52536014)(66946007)(316002)(8676002)(66476007)(5660300002)(30864003)(66446008)(66899018)(41300700001)(8936002)(4326008)(76116006)(2906002)(71200400001); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB10071 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: AM7EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: d4a130b3-679f-4dca-0088-08db0d333e6f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6wEyKCcALM6IOiOPK4gFvM1S6/wRlom6DX6o58BclfUaegWEbUNAAU5nDxXAEJMaqfb4iZwyq7SIU7T5Xqvg6c2IFrmyF/3G/9V+CjD8mX28AOwUO1jgrP1Ju6nuk0BWKIsZLuzR4iQ0g9/fo2bYBCXKlI9oD8/QQC0TTK8cfQfdmUoaXu3hSnhKKjBka3zuMGn2k6YKwXSxrdel4Qj1cOXctifYHWgIjhspaYfp5fPmLJ4nqzuyVXCqdYjqhZsSLYSmUNF6h8nBTMwVgQdMyMutuWb+PXiQC1hu3pBzj4nzaDRSCjqS4n9jbE0UY1lrJOp49v4W4IsBuYegPhTvAZEqvO0DvvTaSXjwPl+wOGY4ialfnga6iCKG78kquoKtJPWkeNg/uur/1Rs+g5wJteh1OMH47WhrgNGdU6hpGSxwyKkHYqADWHsY2++mhusYPoDQtHlc3kblb8biAn8vS2kuq+YiSD30ESnT1RNZy9PsZO5+6KfPjk61HrKIxa/17KTrCQKYKQgbvdjDumMcWYeHiMcbPkPABEtELm9UT/GygcSa4lccjRJudqgopxie2H/TPi9Q25cYEFHAQyp3+fXnkdXxdszryXmnT0cuSFhPjRZmOEwC9JIOfx3Q8LVbPKpqSz5t1PhtyzI37Gp6ywzAoH9COt8kS4k8eVkMggofQUkjO239EFz09jEvZ6YFfpY9isOWo2b4msYfL3goidw+I/rqxQ86xgcGk7q01zk= 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)(346002)(396003)(376002)(136003)(39860400002)(451199018)(36840700001)(46966006)(186003)(26005)(9686003)(316002)(110136005)(7696005)(66899018)(53546011)(54906003)(6506007)(478600001)(70206006)(70586007)(966005)(8676002)(4326008)(336012)(8936002)(47076005)(66574015)(52536014)(41300700001)(83380400001)(30864003)(5660300002)(356005)(55016003)(2906002)(36860700001)(82740400003)(81166007)(82310400005)(86362001)(40480700001)(33656002)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2023 19:56:48.0237 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39d48576-7d23-4d29-4956-08db0d33468a 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: AM7EUR03FT056.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7441 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 SGkgTW9ydGVuLA0KCUFwb2xvZ2llcyBmb3IgdGhlIGxhdGUgY29tbWVudHMuDQoNCj4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hh cmVzeXN0ZW1zLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5IDksIDIwMjMgODo1OSBB TQ0KPiBUbzogb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsgYW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxh YnMucnU7IEhvbm5hcHBhDQo+IE5hZ2FyYWhhbGxpIDxIb25uYXBwYS5OYWdhcmFoYWxsaUBhcm0u Y29tPjsgS2FtYWxha3NoaXRoYSBBbGlnZXJpDQo+IDxLYW1hbGFrc2hpdGhhLkFsaWdlcmlAYXJt LmNvbT47IGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tOw0KPiBrb25zdGFudGluLmFuYW55ZXZA aHVhd2VpLmNvbTsgZGV2QGRwZGsub3JnDQo+IENjOiBuZCA8bmRAYXJtLmNvbT47IGRhdmlkLm1h cmNoYW5kQHJlZGhhdC5jb207IE1vcnRlbiBCcsO4cnVwDQo+IDxtYkBzbWFydHNoYXJlc3lzdGVt cy5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCB2OF0gbWVtcG9vbCBjYWNoZTogYWRkIHplcm8tY29w eSBnZXQgYW5kIHB1dCBmdW5jdGlvbnMNCj4gDQo+IFplcm8tY29weSBhY2Nlc3MgdG8gbWVtcG9v bCBjYWNoZXMgaXMgYmVuZWZpY2lhbCBmb3IgUE1EIHBlcmZvcm1hbmNlLCBhbmQNCj4gbXVzdCBi ZSBwcm92aWRlZCBieSB0aGUgbWVtcG9vbCBsaWJyYXJ5IHRvIGZpeCBbQnVnIDEwNTJdIHdpdGhv dXQgYQ0KPiBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLg0KPiANCj4gW0J1ZyAxMDUyXTogaHR0cHM6 Ly9idWdzLmRwZGsub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUyDQo+IA0KPiBCdWd6aWxsYSBJRDog MTA1Mg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVz eXN0ZW1zLmNvbT4NCj4gQWNrZWQtYnk6IEtvbnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi52 LmFuYW55ZXZAeWFuZGV4LnJ1Pg0KPiANCj4gdjg6DQo+ICogQWN0dWFsbHkgaW5jbHVkZSB0aGUg cnRlX2Vycm5vIGhlYWRlciBmaWxlLg0KPiAgIE5vdGUgdG8gc2VsZjogVGhlIGNoYW5nZXMgb25s eSB0YWtlIGVmZmVjdCBvbiB0aGUgZGlzayBhZnRlciB0aGUgZmlsZSBpbg0KPiAgIHRoZSB0ZXh0 IGVkaXRvciBoYXMgYmVlbiBzYXZlZC4NCj4gdjc6DQo+ICogRml4IHR5cG8gaW4gZnVuY3Rpb24g ZGVzY3JpcHRpb24uIChjaGVja3BhdGNoKQ0KPiAqIFplcm8tY29weSBmdW5jdGlvbnMgbWF5IHNl dCBydGVfZXJybm87IGluY2x1ZGUgcnRlX2Vycm5vIGhlYWRlciBmaWxlLg0KPiAgIChjaS9sb29u Z2FyY2gtY29tcGlsYXRpb24pDQo+IHY2Og0KPiAqIEltcHJvdmUgZGVzY3JpcHRpb24gb2YgdGhl ICduJyBwYXJhbWV0ZXIgdG8gdGhlIHplcm8tY29weSBnZXQgZnVuY3Rpb24uDQo+ICAgKEtvbnN0 YW50aW4sIEJydWNlKQ0KPiAqIFRoZSBjYWNoZXMgdXNlZCBmb3IgemVyby1jb3B5IG1heSBub3Qg YmUgdXNlci1vd25lZCwgc28gcmVtb3ZlIHRoaXMgd29yZA0KPiAgIGZyb20gdGhlIGZ1bmN0aW9u IGRlc2NyaXB0aW9ucy4gKEthbWFsYWtzaGl0aGEpDQo+IHY1Og0KPiAqIEJ1Z2ZpeDogQ29tcGFy ZSB6ZXJvLWNvcHkgZ2V0IHJlcXVlc3QgdG8gdGhlIGNhY2hlIHNpemUgaW5zdGVhZCBvZiB0aGUN Cj4gICBmbHVzaCB0aHJlc2hvbGQ7IG90aGVyd2lzZSByZWZpbGwgY291bGQgb3ZlcmZsb3cgdGhl IG1lbW9yeSBhbGxvY2F0ZWQNCj4gICBmb3IgdGhlIGNhY2hlLiAoQW5kcmV3KQ0KPiAqIFNwbGl0 IHRoZSB6ZXJvLWNvcHkgcHV0IGZ1bmN0aW9uIGludG8gYW4gaW50ZXJuYWwgZnVuY3Rpb24gZG9p bmcgdGhlDQo+ICAgd29yaywgYW5kIGEgcHVibGljIGZ1bmN0aW9uIHdpdGggdHJhY2UuDQo+ICog QXZvaWQgY29kZSBkdXBsaWNhdGlvbiBieSByZXdyaXRpbmcgcnRlX21lbXBvb2xfZG9fZ2VuZXJp Y19wdXQoKSB0byB1c2UNCj4gICB0aGUgaW50ZXJuYWwgemVyby1jb3B5IHB1dCBmdW5jdGlvbi4g KEFuZHJldykNCj4gKiBDb3JyZWN0ZWQgdGhlIHJldHVybiB0eXBlIG9mIHJ0ZV9tZW1wb29sX2Nh Y2hlX3pjX3B1dF9idWxrKCkgZnJvbSB2b2lkDQo+ICoNCj4gICB0byB2b2lkICoqOyBpdCByZXR1 cm5zIGEgcG9pbnRlciB0byBhbiBhcnJheSBvZiBvYmplY3RzLg0KPiAqIEZpeCBjb2Rpbmcgc3R5 bGU6IEFkZCBtaXNzaW5nIGN1cmx5IGJyYWNrZXRzLiAoQW5kcmV3KQ0KPiB2NDoNCj4gKiBGaXgg Y2hlY2twYXRjaCB3YXJuaW5ncy4NCj4gdjM6DQo+ICogQnVnZml4OiBSZXNwZWN0IHRoZSBjYWNo ZSBzaXplOyBjb21wYXJlIHRvIHRoZSBmbHVzaCB0aHJlc2hvbGQgaW5zdGVhZA0KPiAgIG9mIFJU RV9NRU1QT09MX0NBQ0hFX01BWF9TSVpFLg0KPiAqIEFkZGVkICdyZXdpbmQnIGZ1bmN0aW9uIGZv ciBpbmNvbXBsZXRlICdwdXQnIG9wZXJhdGlvbnMuIChLb25zdGFudGluKQ0KPiAqIFJlcGxhY2Ug UlRFX0FTU0VSVHMgd2l0aCBydW50aW1lIGNoZWNrcyBvZiB0aGUgcmVxdWVzdCBzaXplLg0KPiAg IEluc3RlYWQgb2YgZmFpbGluZywgcmV0dXJuIE5VTEwgaWYgdGhlIHJlcXVlc3QgaXMgdG9vIGJp Zy4gKEtvbnN0YW50aW4pDQo+ICogTW9kaWZpZWQgY29tcGFyaXNvbiB0byBwcmV2ZW50IG92ZXJm bG93IGlmIG4gaXMgcmVhbGx5IGh1Z2UgYW5kIGxlbiBpcw0KPiAgIG5vbi16ZXJvLg0KPiAqIFVw ZGF0ZWQgdGhlIGNvbW1lbnRzIGluIHRoZSBjb2RlLg0KPiB2MjoNCj4gKiBGaXggY2hlY2twYXRj aCB3YXJuaW5ncy4NCj4gKiBGaXggbWlzc2luZyByZWdpc3RyYXRpb24gb2YgdHJhY2UgcG9pbnRz Lg0KPiAqIFRoZSBmdW5jdGlvbnMgYXJlIGlubGluZSwgc28gdGhleSBkb24ndCBnbyBpbnRvIHRo ZSBtYXAgZmlsZS4NCj4gdjEgY2hhbmdlcyBmcm9tIHRoZSBSRkM6DQo+ICogUmVtb3ZlZCBydW4t dGltZSBwYXJhbWV0ZXIgY2hlY2tzLiAoSG9ubmFwcGEpDQo+ICAgVGhpcyBpcyBhIGhvdCBmYXN0 IHBhdGggZnVuY3Rpb247IHJlcXVpcmluZyBjb3JyZWN0IGFwcGxpY2F0aW9uDQo+ICAgYmVoYXZp b3VyLCBpLmUuIGZ1bmN0aW9uIHBhcmFtZXRlcnMgbXVzdCBiZSB2YWxpZC4NCj4gKiBBZGRlZCBS VEVfQVNTRVJUIGZvciBwYXJhbWV0ZXJzIGluc3RlYWQuDQo+ICAgQ29kZSBmb3IgdGhpcyBpcyBv bmx5IGdlbmVyYXRlZCBpZiBidWlsdCB3aXRoIFJURV9FTkFCTEVfQVNTRVJULg0KPiAqIFJlbW92 ZWQgZmFsbGJhY2sgd2hlbiAnY2FjaGUnIHBhcmFtZXRlciBpcyBub3Qgc2V0LiAoSG9ubmFwcGEp DQo+ICogQ2hvc2UgdGhlIHNpbXBsZSBnZXQgZnVuY3Rpb247IGkuZS4gZG8gbm90IG1vdmUgdGhl IGV4aXN0aW5nIG9iamVjdHMgaW4NCj4gICB0aGUgY2FjaGUgdG8gdGhlIHRvcCBvZiB0aGUgbmV3 IHN0YWNrLCBqdXN0IGxlYXZlIHRoZW0gYXQgdGhlIGJvdHRvbS4NCj4gKiBSZW5hbWVkIHRoZSBm dW5jdGlvbnMuIE90aGVyIHN1Z2dlc3Rpb25zIGFyZSB3ZWxjb21lLCBvZiBjb3Vyc2UuIDstKQ0K PiAqIFVwZGF0ZWQgdGhlIGZ1bmN0aW9uIGRlc2NyaXB0aW9ucy4NCj4gKiBBZGRlZCB0aGUgZnVu Y3Rpb25zIHRvIHRyYWNlX2ZwIGFuZCB2ZXJzaW9uLm1hcC4NCj4gLS0tDQo+ICBsaWIvbWVtcG9v bC9tZW1wb29sX3RyYWNlX3BvaW50cy5jIHwgICA5ICsrDQo+ICBsaWIvbWVtcG9vbC9ydGVfbWVt cG9vbC5oICAgICAgICAgIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tDQo+ICBs aWIvbWVtcG9vbC9ydGVfbWVtcG9vbF90cmFjZV9mcC5oIHwgIDIzICsrKw0KPiAgbGliL21lbXBv b2wvdmVyc2lvbi5tYXAgICAgICAgICAgICB8ICAgNSArDQo+ICA0IGZpbGVzIGNoYW5nZWQsIDI0 NiBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIv bWVtcG9vbC9tZW1wb29sX3RyYWNlX3BvaW50cy5jDQo+IGIvbGliL21lbXBvb2wvbWVtcG9vbF90 cmFjZV9wb2ludHMuYw0KPiBpbmRleCA0YWQ3NmRlYjM0Li44M2QzNTNhNzY0IDEwMDY0NA0KPiAt LS0gYS9saWIvbWVtcG9vbC9tZW1wb29sX3RyYWNlX3BvaW50cy5jDQo+ICsrKyBiL2xpYi9tZW1w b29sL21lbXBvb2xfdHJhY2VfcG9pbnRzLmMNCj4gQEAgLTc3LDMgKzc3LDEyIEBADQo+IFJURV9U UkFDRV9QT0lOVF9SRUdJU1RFUihydGVfbWVtcG9vbF90cmFjZV9vcHNfZnJlZSwNCj4gDQo+ICBS VEVfVFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX21lbXBvb2xfdHJhY2Vfc2V0X29wc19ieW5hbWUs DQo+ICAJbGliLm1lbXBvb2wuc2V0Lm9wcy5ieW5hbWUpDQo+ICsNCj4gK1JURV9UUkFDRV9QT0lO VF9SRUdJU1RFUihydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfYnVsaywNCj4gKwlsaWIu bWVtcG9vbC5jYWNoZS56Yy5wdXQuYnVsaykNCj4gKw0KPiArUlRFX1RSQUNFX1BPSU5UX1JFR0lT VEVSKHJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX3B1dF9yZXdpbmQsDQo+ICsJbGliLm1lbXBv b2wuY2FjaGUuemMucHV0LnJld2luZCkNCj4gKw0KPiArUlRFX1RSQUNFX1BPSU5UX1JFR0lTVEVS KHJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX2dldF9idWxrLA0KPiArCWxpYi5tZW1wb29sLmNh Y2hlLnpjLmdldC5idWxrKQ0KPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wu aCBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgNCj4gaW5kZXggOWY1MzBkYjI0Yi4uNzExYTlk MWMxNiAxMDA2NDQNCj4gLS0tIGEvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0KPiArKysgYi9s aWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oDQo+IEBAIC00Miw2ICs0Miw3IEBADQo+ICAjaW5jbHVk ZSA8cnRlX2NvbmZpZy5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPiAgI2luY2x1 ZGUgPHJ0ZV9kZWJ1Zy5oPg0KPiArI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0KPiAgI2luY2x1ZGUg PHJ0ZV9sY29yZS5oPg0KPiAgI2luY2x1ZGUgPHJ0ZV9icmFuY2hfcHJlZGljdGlvbi5oPg0KPiAg I2luY2x1ZGUgPHJ0ZV9yaW5nLmg+DQo+IEBAIC0xMzQ2LDYgKzEzNDcsMTk4IEBAIHJ0ZV9tZW1w b29sX2NhY2hlX2ZsdXNoKHN0cnVjdA0KPiBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGUsDQo+ICAJ Y2FjaGUtPmxlbiA9IDA7DQo+ICB9DQo+IA0KPiArDQo+ICsvKioNCj4gKyAqIEBpbnRlcm5hbCB1 c2VkIGJ5IHJ0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKCkgYW5kDQo+IHJ0ZV9tZW1wb29s X2RvX2dlbmVyaWNfcHV0KCkuDQo+ICsgKg0KPiArICogWmVyby1jb3B5IHB1dCBvYmplY3RzIGlu IGEgbWVtcG9vbCBjYWNoZSBiYWNrZWQgYnkgdGhlIHNwZWNpZmllZA0KPiBtZW1wb29sLg0KPiAr ICoNCj4gKyAqIEBwYXJhbSBjYWNoZQ0KPiArICogICBBIHBvaW50ZXIgdG8gdGhlIG1lbXBvb2wg Y2FjaGUuDQo+ICsgKiBAcGFyYW0gbXANCj4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29s Lg0KPiArICogQHBhcmFtIG4NCj4gKyAqICAgVGhlIG51bWJlciBvZiBvYmplY3RzIHRvIGJlIHB1 dCBpbiB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gKyAqIEByZXR1cm4NCj4gKyAqICAgVGhlIHBvaW50 ZXIgdG8gd2hlcmUgdG8gcHV0IHRoZSBvYmplY3RzIGluIHRoZSBtZW1wb29sIGNhY2hlLg0KPiAr ICogICBOVUxMIGlmIHRoZSByZXF1ZXN0IGl0c2VsZiBpcyB0b28gYmlnIGZvciB0aGUgY2FjaGUs IGkuZS4NCj4gKyAqICAgZXhjZWVkcyB0aGUgY2FjaGUgZmx1c2ggdGhyZXNob2xkLg0KPiArICov DQo+ICtzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB2b2lkICoqDQo+ICtfX3J0ZV9tZW1wb29s X2NhY2hlX3pjX3B1dF9idWxrKHN0cnVjdCBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGUsDQo+ICsJ CXN0cnVjdCBydGVfbWVtcG9vbCAqbXAsDQo+ICsJCXVuc2lnbmVkIGludCBuKQ0KPiArew0KPiAr CXZvaWQgKipjYWNoZV9vYmpzOw0KPiArDQo+ICsJUlRFX0FTU0VSVChjYWNoZSAhPSBOVUxMKTsN Cj4gKwlSVEVfQVNTRVJUKG1wICE9IE5VTEwpOw0KPiArDQo+ICsJaWYgKG4gPD0gY2FjaGUtPmZs dXNodGhyZXNoIC0gY2FjaGUtPmxlbikgew0KPiArCQkvKg0KPiArCQkgKiBUaGUgb2JqZWN0cyBj YW4gYmUgYWRkZWQgdG8gdGhlIGNhY2hlIHdpdGhvdXQgY3Jvc3NpbmcgdGhlDQo+ICsJCSAqIGZs dXNoIHRocmVzaG9sZC4NCj4gKwkJICovDQo+ICsJCWNhY2hlX29ianMgPSAmY2FjaGUtPm9ianNb Y2FjaGUtPmxlbl07DQo+ICsJCWNhY2hlLT5sZW4gKz0gbjsNCj4gKwl9IGVsc2UgaWYgKGxpa2Vs eShuIDw9IGNhY2hlLT5mbHVzaHRocmVzaCkpIHsNCj4gKwkJLyoNCj4gKwkJICogVGhlIHJlcXVl c3QgaXRzZWxmIGZpdHMgaW50byB0aGUgY2FjaGUuDQo+ICsJCSAqIEJ1dCBmaXJzdCwgdGhlIGNh Y2hlIG11c3QgYmUgZmx1c2hlZCB0byB0aGUgYmFja2VuZCwgc28NCj4gKwkJICogYWRkaW5nIHRo ZSBvYmplY3RzIGRvZXMgbm90IGNyb3NzIHRoZSBmbHVzaCB0aHJlc2hvbGQuDQo+ICsJCSAqLw0K PiArCQljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzWzBdOw0KPiArCQlydGVfbWVtcG9vbF9vcHNf ZW5xdWV1ZV9idWxrKG1wLCBjYWNoZV9vYmpzLCBjYWNoZS0NCj4gPmxlbik7DQpUaGlzIGlzIGEg Zmx1c2ggb2YgdGhlIGNhY2hlLiBJdCBpcyBwcm9iYWJseSB3b3J0aCBoYXZpbmcgYSBjb3VudGVy IGZvciB0aGlzLg0KDQo+ICsJCWNhY2hlLT5sZW4gPSBuOw0KPiArCX0gZWxzZSB7DQo+ICsJCS8q IFRoZSByZXF1ZXN0IGl0c2VsZiBpcyB0b28gYmlnIGZvciB0aGUgY2FjaGUuICovDQpUaGlzIGlz IHBvc3NpYmx5IGFuIGVycm9yIGNvbmRpdGlvbi4gRG8gd2UgbmVlZCB0byBzZXQgcnRlX2Vycm5v PyBEbyB3ZSBuZWVkIGEgY291bnRlciBoZXJlIHRvIGNhcHR1cmUgdGhhdD8NCg0KPiArCQlyZXR1 cm4gTlVMTDsNCj4gKwl9DQo+ICsNCj4gKwlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNo ZSwgcHV0X2J1bGssIDEpOw0KPiArCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBw dXRfb2Jqcywgbik7DQo+ICsNCj4gKwlyZXR1cm4gY2FjaGVfb2JqczsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQRVJJTUVOVEFMOiBUaGlzIEFQSSBtYXkg Y2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHByaW9yDQo+IG5vdGljZS4NCj4gKyAqDQo+ ICsgKiBaZXJvLWNvcHkgcHV0IG9iamVjdHMgaW4gYSBtZW1wb29sIGNhY2hlIGJhY2tlZCBieSB0 aGUgc3BlY2lmaWVkDQo+IG1lbXBvb2wuDQo+ICsgKg0KPiArICogQHBhcmFtIGNhY2hlDQo+ICsg KiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gKyAqIEBwYXJhbSBtcA0KPiAr ICogICBBIHBvaW50ZXIgdG8gdGhlIG1lbXBvb2wuDQo+ICsgKiBAcGFyYW0gbg0KPiArICogICBU aGUgbnVtYmVyIG9mIG9iamVjdHMgdG8gYmUgcHV0IGluIHRoZSBtZW1wb29sIGNhY2hlLg0KPiAr ICogQHJldHVybg0KPiArICogICBUaGUgcG9pbnRlciB0byB3aGVyZSB0byBwdXQgdGhlIG9iamVj dHMgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ICsgKiAgIE5VTEwgaWYgdGhlIHJlcXVlc3QgaXRz ZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBjYWNoZSwgaS5lLg0KPiArICogICBleGNlZWRzIHRoZSBj YWNoZSBmbHVzaCB0aHJlc2hvbGQuDQo+ICsgKi8NCj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiAr c3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZCAqKg0KPiArcnRlX21lbXBvb2xfY2FjaGVf emNfcHV0X2J1bGsoc3RydWN0IHJ0ZV9tZW1wb29sX2NhY2hlICpjYWNoZSwNCj4gKwkJc3RydWN0 IHJ0ZV9tZW1wb29sICptcCwNCj4gKwkJdW5zaWduZWQgaW50IG4pDQo+ICt7DQo+ICsJUlRFX0FT U0VSVChjYWNoZSAhPSBOVUxMKTsNCj4gKwlSVEVfQVNTRVJUKG1wICE9IE5VTEwpOw0KPiArDQo+ ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfcHV0X2J1bGsoY2FjaGUsIG1wLCBuKTsNCj4g KwlyZXR1cm4gX19ydGVfbWVtcG9vbF9jYWNoZV96Y19wdXRfYnVsayhjYWNoZSwgbXAsIG4pOyB9 DQo+ICsNCj4gKy8qKg0KPiArICogQHdhcm5pbmcNCj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogVGhp cyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dCBwcmlvcg0KPiBub3RpY2Uu DQo+ICsgKg0KPiArICogWmVyby1jb3B5IHVuLXB1dCBvYmplY3RzIGluIGEgbWVtcG9vbCBjYWNo ZS4NCj4gKyAqDQo+ICsgKiBAcGFyYW0gY2FjaGUNCj4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBt ZW1wb29sIGNhY2hlLg0KPiArICogQHBhcmFtIG4NCj4gKyAqICAgVGhlIG51bWJlciBvZiBvYmpl Y3RzIG5vdCBwdXQgaW4gdGhlIG1lbXBvb2wgY2FjaGUgYWZ0ZXIgY2FsbGluZw0KPiArICogICBy dGVfbWVtcG9vbF9jYWNoZV96Y19wdXRfYnVsaygpLg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmlt ZW50YWwNCj4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gK3J0ZV9tZW1wb29s X2NhY2hlX3pjX3B1dF9yZXdpbmQoc3RydWN0IHJ0ZV9tZW1wb29sX2NhY2hlICpjYWNoZSwNCj4g KwkJdW5zaWduZWQgaW50IG4pDQo+ICt7DQo+ICsJUlRFX0FTU0VSVChjYWNoZSAhPSBOVUxMKTsN Cj4gKwlSVEVfQVNTRVJUKG4gPD0gY2FjaGUtPmxlbik7DQo+ICsNCj4gKwlydGVfbWVtcG9vbF90 cmFjZV9jYWNoZV96Y19wdXRfcmV3aW5kKGNhY2hlLCBuKTsNCj4gKw0KPiArCWNhY2hlLT5sZW4g LT0gbjsNCj4gKw0KPiArCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBwdXRfb2Jq cywgKGludCktbik7IH0NCj4gKw0KPiArLyoqDQo+ICsgKiBAd2FybmluZw0KPiArICogQGIgRVhQ RVJJTUVOVEFMOiBUaGlzIEFQSSBtYXkgY2hhbmdlLCBvciBiZSByZW1vdmVkLCB3aXRob3V0IHBy aW9yDQo+IG5vdGljZS4NCj4gKyAqDQo+ICsgKiBaZXJvLWNvcHkgZ2V0IG9iamVjdHMgZnJvbSBh IG1lbXBvb2wgY2FjaGUgYmFja2VkIGJ5IHRoZSBzcGVjaWZpZWQNCj4gbWVtcG9vbC4NCj4gKyAq DQo+ICsgKiBAcGFyYW0gY2FjaGUNCj4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNh Y2hlLg0KPiArICogQHBhcmFtIG1wDQo+ICsgKiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbC4N Cj4gKyAqIEBwYXJhbSBuDQo+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0byBiZSBtYWRl IGF2YWlsYWJsZSBmb3IgZXh0cmFjdGlvbiBmcm9tIHRoZQ0KPiBtZW1wb29sIGNhY2hlLg0KPiAr ICogQHJldHVybg0KPiArICogICBUaGUgcG9pbnRlciB0byB0aGUgb2JqZWN0cyBpbiB0aGUgbWVt cG9vbCBjYWNoZS4NCj4gKyAqICAgTlVMTCBvbiBlcnJvcjsgaS5lLiB0aGUgY2FjaGUgKyB0aGUg cG9vbCBkb2VzIG5vdCBjb250YWluICduJyBvYmplY3RzLg0KPiArICogICBXaXRoIHJ0ZV9lcnJu byBzZXQgdG8gdGhlIGVycm9yIGNvZGUgb2YgdGhlIG1lbXBvb2wgZGVxdWV1ZSBmdW5jdGlvbiwN Cj4gKyAqICAgb3IgRUlOVkFMIGlmIHRoZSByZXF1ZXN0IGl0c2VsZiBpcyB0b28gYmlnIGZvciB0 aGUgY2FjaGUsIGkuZS4NCj4gKyAqICAgZXhjZWVkcyB0aGUgY2FjaGUgZmx1c2ggdGhyZXNob2xk Lg0KPiArICovDQo+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gK3N0YXRpYyBfX3J0ZV9hbHdheXNf aW5saW5lIHZvaWQgKg0KPiArcnRlX21lbXBvb2xfY2FjaGVfemNfZ2V0X2J1bGsoc3RydWN0IHJ0 ZV9tZW1wb29sX2NhY2hlICpjYWNoZSwNCj4gKwkJc3RydWN0IHJ0ZV9tZW1wb29sICptcCwNCj4g KwkJdW5zaWduZWQgaW50IG4pDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IGxlbiwgc2l6ZTsNCj4g Kw0KPiArCVJURV9BU1NFUlQoY2FjaGUgIT0gTlVMTCk7DQo+ICsJUlRFX0FTU0VSVChtcCAhPSBO VUxMKTsNCj4gKw0KPiArCXJ0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX2dldF9idWxrKGNhY2hl LCBtcCwgbik7DQo+ICsNCj4gKwlsZW4gPSBjYWNoZS0+bGVuOw0KPiArCXNpemUgPSBjYWNoZS0+ c2l6ZTsNCj4gKw0KPiArCWlmIChuIDw9IGxlbikgew0KPiArCQkvKiBUaGUgcmVxdWVzdCBjYW4g YmUgc2F0aXNmaWVkIGZyb20gdGhlIGNhY2hlIGFzIGlzLiAqLw0KPiArCQlsZW4gLT0gbjsNCj4g Kwl9IGVsc2UgaWYgKGxpa2VseShuIDw9IHNpemUpKSB7DQo+ICsJCS8qDQo+ICsJCSAqIFRoZSBy ZXF1ZXN0IGl0c2VsZiBjYW4gYmUgc2F0aXNmaWVkIGZyb20gdGhlIGNhY2hlLg0KPiArCQkgKiBC dXQgZmlyc3QsIHRoZSBjYWNoZSBtdXN0IGJlIGZpbGxlZCBmcm9tIHRoZSBiYWNrZW5kOw0KPiAr CQkgKiBmZXRjaCBzaXplICsgcmVxdWVzdGVkIC0gbGVuIG9iamVjdHMuDQo+ICsJCSAqLw0KPiAr CQlpbnQgcmV0Ow0KPiArDQo+ICsJCXJldCA9IHJ0ZV9tZW1wb29sX29wc19kZXF1ZXVlX2J1bGso bXAsICZjYWNoZS0NCj4gPm9ianNbbGVuXSwgc2l6ZSArIG4gLSBsZW4pOw0KPiArCQlpZiAodW5s aWtlbHkocmV0IDwgMCkpIHsNCj4gKwkJCS8qDQo+ICsJCQkgKiBXZSBhcmUgYnVmZmVyIGNvbnN0 cmFpbmVkLg0KPiArCQkJICogRG8gbm90IGZpbGwgdGhlIGNhY2hlLCBqdXN0IHNhdGlzZnkgdGhl IHJlcXVlc3QuDQo+ICsJCQkgKi8NCj4gKwkJCXJldCA9IHJ0ZV9tZW1wb29sX29wc19kZXF1ZXVl X2J1bGsobXAsICZjYWNoZS0NCj4gPm9ianNbbGVuXSwgbiAtIGxlbik7DQo+ICsJCQlpZiAodW5s aWtlbHkocmV0IDwgMCkpIHsNCj4gKwkJCQkvKiBVbmFibGUgdG8gc2F0aXNmeSB0aGUgcmVxdWVz dC4gKi8NCj4gKw0KPiArCQkJCVJURV9NRU1QT09MX1NUQVRfQUREKG1wLA0KPiBnZXRfZmFpbF9i dWxrLCAxKTsNCj4gKwkJCQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwNCj4gZ2V0X2ZhaWxfb2Jq cywgbik7DQo+ICsNCj4gKwkJCQlydGVfZXJybm8gPSAtcmV0Ow0KPiArCQkJCXJldHVybiBOVUxM Ow0KPiArCQkJfQ0KPiArDQo+ICsJCQlsZW4gPSAwOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJbGVu ID0gc2l6ZTsNCj4gKwkJfQ0KPiArCX0gZWxzZSB7DQo+ICsJCS8qIFRoZSByZXF1ZXN0IGl0c2Vs ZiBpcyB0b28gYmlnIGZvciB0aGUgY2FjaGUuICovDQo+ICsJCXJ0ZV9lcnJubyA9IEVJTlZBTDsN Cj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJY2FjaGUtPmxlbiA9IGxlbjsNCj4g Kw0KPiArCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBnZXRfc3VjY2Vzc19idWxr LCAxKTsNCj4gKwlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgZ2V0X3N1Y2Nlc3Nf b2Jqcywgbik7DQo+ICsNCj4gKwlyZXR1cm4gJmNhY2hlLT5vYmpzW2xlbl07DQo+ICt9DQo+ICsN Cj4gIC8qKg0KPiAgICogQGludGVybmFsIFB1dCBzZXZlcmFsIG9iamVjdHMgYmFjayBpbiB0aGUg bWVtcG9vbDsgdXNlZCBpbnRlcm5hbGx5Lg0KPiAgICogQHBhcmFtIG1wDQo+IEBAIC0xMzY0LDMy ICsxNTU3LDI1IEBAIHJ0ZV9tZW1wb29sX2RvX2dlbmVyaWNfcHV0KHN0cnVjdA0KPiBydGVfbWVt cG9vbCAqbXAsIHZvaWQgKiBjb25zdCAqb2JqX3RhYmxlLCAgew0KPiAgCXZvaWQgKipjYWNoZV9v YmpzOw0KPiANCj4gLQkvKiBObyBjYWNoZSBwcm92aWRlZCAqLw0KPiAtCWlmICh1bmxpa2VseShj YWNoZSA9PSBOVUxMKSkNCj4gLQkJZ290byBkcml2ZXJfZW5xdWV1ZTsNCj4gKwkvKiBObyBjYWNo ZSBwcm92aWRlZD8gKi8NCj4gKwlpZiAodW5saWtlbHkoY2FjaGUgPT0gTlVMTCkpIHsNCj4gKwkJ LyogSW5jcmVtZW50IHN0YXRzIG5vdywgYWRkaW5nIGluIG1lbXBvb2wgYWx3YXlzIHN1Y2NlZWRz Lg0KPiAqLw0KPiArCQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0X2J1bGssIDEpOw0KPiAr CQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0X29ianMsIG4pOw0KPiANCj4gLQkvKiBpbmNy ZW1lbnQgc3RhdCBub3csIGFkZGluZyBpbiBtZW1wb29sIGFsd2F5cyBzdWNjZXNzICovDQo+IC0J UlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9idWxrLCAxKTsNCj4gLQlSVEVf TUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X29ianMsIG4pOw0KPiArCQlnb3RvIGRy aXZlcl9lbnF1ZXVlOw0KPiArCX0NCj4gDQo+IC0JLyogVGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRv byBiaWcgZm9yIHRoZSBjYWNoZSAqLw0KPiAtCWlmICh1bmxpa2VseShuID4gY2FjaGUtPmZsdXNo dGhyZXNoKSkNCj4gLQkJZ290byBkcml2ZXJfZW5xdWV1ZV9zdGF0c19pbmNyZW1lbnRlZDsNCj4g KwkvKiBQcmVwYXJlIHRvIGFkZCB0aGUgb2JqZWN0cyB0byB0aGUgY2FjaGUuICovDQo+ICsJY2Fj aGVfb2JqcyA9IF9fcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X2J1bGsoY2FjaGUsIG1wLCBuKTsN Cj4gDQo+IC0JLyoNCj4gLQkgKiBUaGUgY2FjaGUgZm9sbG93cyB0aGUgZm9sbG93aW5nIGFsZ29y aXRobToNCj4gLQkgKiAgIDEuIElmIHRoZSBvYmplY3RzIGNhbm5vdCBiZSBhZGRlZCB0byB0aGUg Y2FjaGUgd2l0aG91dCBjcm9zc2luZw0KPiAtCSAqICAgICAgdGhlIGZsdXNoIHRocmVzaG9sZCwg Zmx1c2ggdGhlIGNhY2hlIHRvIHRoZSBiYWNrZW5kLg0KPiAtCSAqICAgMi4gQWRkIHRoZSBvYmpl Y3RzIHRvIHRoZSBjYWNoZS4NCj4gLQkgKi8NCj4gKwkvKiBUaGUgcmVxdWVzdCBpdHNlbGYgaXMg dG9vIGJpZyBmb3IgdGhlIGNhY2hlPyAqLw0KPiArCWlmICh1bmxpa2VseShjYWNoZV9vYmpzID09 IE5VTEwpKSB7DQo+ICsJCS8qIEluY3JlbWVudCBzdGF0cyBub3csIGFkZGluZyBpbiBtZW1wb29s IGFsd2F5cyBzdWNjZWVkcy4NCj4gKi8NCj4gKwkJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQo Y2FjaGUsIHB1dF9idWxrLCAxKTsNCj4gKwkJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2Fj aGUsIHB1dF9vYmpzLCBuKTsNCj4gDQo+IC0JaWYgKGNhY2hlLT5sZW4gKyBuIDw9IGNhY2hlLT5m bHVzaHRocmVzaCkgew0KPiAtCQljYWNoZV9vYmpzID0gJmNhY2hlLT5vYmpzW2NhY2hlLT5sZW5d Ow0KPiAtCQljYWNoZS0+bGVuICs9IG47DQo+IC0JfSBlbHNlIHsNCj4gLQkJY2FjaGVfb2JqcyA9 ICZjYWNoZS0+b2Jqc1swXTsNCj4gLQkJcnRlX21lbXBvb2xfb3BzX2VucXVldWVfYnVsayhtcCwg Y2FjaGVfb2JqcywgY2FjaGUtDQo+ID5sZW4pOw0KPiAtCQljYWNoZS0+bGVuID0gbjsNCj4gKwkJ Z290byBkcml2ZXJfZW5xdWV1ZTsNCj4gIAl9DQo+IA0KPiAgCS8qIEFkZCB0aGUgb2JqZWN0cyB0 byB0aGUgY2FjaGUuICovDQo+IEBAIC0xMzk5LDEzICsxNTg1LDcgQEAgcnRlX21lbXBvb2xfZG9f Z2VuZXJpY19wdXQoc3RydWN0DQo+IHJ0ZV9tZW1wb29sICptcCwgdm9pZCAqIGNvbnN0ICpvYmpf dGFibGUsDQo+IA0KPiAgZHJpdmVyX2VucXVldWU6DQo+IA0KPiAtCS8qIGluY3JlbWVudCBzdGF0 IG5vdywgYWRkaW5nIGluIG1lbXBvb2wgYWx3YXlzIHN1Y2Nlc3MgKi8NCj4gLQlSVEVfTUVNUE9P TF9TVEFUX0FERChtcCwgcHV0X2J1bGssIDEpOw0KPiAtCVJURV9NRU1QT09MX1NUQVRfQUREKG1w LCBwdXRfb2Jqcywgbik7DQo+IC0NCj4gLWRyaXZlcl9lbnF1ZXVlX3N0YXRzX2luY3JlbWVudGVk Og0KPiAtDQo+IC0JLyogcHVzaCBvYmplY3RzIHRvIHRoZSBiYWNrZW5kICovDQo+ICsJLyogUHVz aCB0aGUgb2JqZWN0cyB0byB0aGUgYmFja2VuZC4gKi8NCj4gIAlydGVfbWVtcG9vbF9vcHNfZW5x dWV1ZV9idWxrKG1wLCBvYmpfdGFibGUsIG4pOyAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2xpYi9t ZW1wb29sL3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gYi9saWIvbWVtcG9vbC9ydGVfbWVtcG9v bF90cmFjZV9mcC5oDQo+IGluZGV4IGVkMDYwZTg4N2MuLjE0NjY2NDU3ZjcgMTAwNjQ0DQo+IC0t LSBhL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gKysrIGIvbGliL21lbXBv b2wvcnRlX21lbXBvb2xfdHJhY2VfZnAuaA0KPiBAQCAtMTA5LDYgKzEwOSwyOSBAQCBSVEVfVFJB Q0VfUE9JTlRfRlAoDQo+ICAJcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiAg KQ0KPiANCj4gK1JURV9UUkFDRV9QT0lOVF9GUCgNCj4gKwlydGVfbWVtcG9vbF90cmFjZV9jYWNo ZV96Y19wdXRfYnVsaywNCj4gKwlSVEVfVFJBQ0VfUE9JTlRfQVJHUyh2b2lkICpjYWNoZSwgdm9p ZCAqbWVtcG9vbCwgdWludDMyX3QNCj4gbmJfb2JqcyksDQo+ICsJcnRlX3RyYWNlX3BvaW50X2Vt aXRfcHRyKGNhY2hlKTsNCj4gKwlydGVfdHJhY2VfcG9pbnRfZW1pdF9wdHIobWVtcG9vbCk7DQo+ ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMyKG5iX29ianMpOw0KPiArKQ0KPiArDQo+ICtSVEVf VFJBQ0VfUE9JTlRfRlAoDQo+ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfcHV0X3Jld2lu ZCwNCj4gKwlSVEVfVFJBQ0VfUE9JTlRfQVJHUyh2b2lkICpjYWNoZSwgdWludDMyX3QgbmJfb2Jq cyksDQo+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKGNhY2hlKTsNCj4gKwlydGVfdHJhY2Vf cG9pbnRfZW1pdF91MzIobmJfb2Jqcyk7DQo+ICspDQo+ICsNCj4gK1JURV9UUkFDRV9QT0lOVF9G UCgNCj4gKwlydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19nZXRfYnVsaywNCj4gKwlSVEVfVFJB Q0VfUE9JTlRfQVJHUyh2b2lkICpjYWNoZSwgdm9pZCAqbWVtcG9vbCwgdWludDMyX3QNCj4gbmJf b2JqcyksDQo+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfcHRyKGNhY2hlKTsNCj4gKwlydGVfdHJh Y2VfcG9pbnRfZW1pdF9wdHIobWVtcG9vbCk7DQo+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRfdTMy KG5iX29ianMpOw0KPiArKQ0KPiArDQo+ICAjaWZkZWYgX19jcGx1c3BsdXMNCj4gIH0NCj4gICNl bmRpZg0KPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvdmVyc2lvbi5tYXAgYi9saWIvbWVtcG9v bC92ZXJzaW9uLm1hcCBpbmRleA0KPiBiNjdkN2FhY2U3Li4xMzgzYWU2ZGIyIDEwMDY0NA0KPiAt LS0gYS9saWIvbWVtcG9vbC92ZXJzaW9uLm1hcA0KPiArKysgYi9saWIvbWVtcG9vbC92ZXJzaW9u Lm1hcA0KPiBAQCAtNjMsNiArNjMsMTEgQEAgRVhQRVJJTUVOVEFMIHsNCj4gIAlfX3J0ZV9tZW1w b29sX3RyYWNlX29wc19hbGxvYzsNCj4gIAlfX3J0ZV9tZW1wb29sX3RyYWNlX29wc19mcmVlOw0K PiAgCV9fcnRlX21lbXBvb2xfdHJhY2Vfc2V0X29wc19ieW5hbWU7DQo+ICsNCj4gKwkjIGFkZGVk IGluIDIzLjAzDQo+ICsJX19ydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfYnVsazsNCj4g KwlfX3J0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX3B1dF9yZXdpbmQ7DQo+ICsJX19ydGVfbWVt cG9vbF90cmFjZV9jYWNoZV96Y19nZXRfYnVsazsNCj4gIH07DQo+IA0KPiAgSU5URVJOQUwgew0K PiAtLQ0KPiAyLjE3LjENCg0K