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 D37A745E39; Thu, 5 Dec 2024 14:29:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5ACDC4026E; Thu, 5 Dec 2024 14:29:14 +0100 (CET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2083.outbound.protection.outlook.com [40.107.21.83]) by mails.dpdk.org (Postfix) with ESMTP id E049E4026A for ; Thu, 5 Dec 2024 14:29:12 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mfdcB+JIM3By7dEgU0lO1i2Et9U4l7N2mjSiFBkhvFdSDV9cTeDXnWU5RabCI7LAJ/R7am88fPIrZZqaXcHg92aIPJo5/T//YvzbcV+gY2Vgk6FzSdzmieEQsRGNXlCUBJ5aH0ZEC2qVojDDS5h9dHRrSzHcclnvRIJsCRnSQV7LMtONiAS31cm79Jwpm58PU4PhTiE6VeNpKsk983UTqEN0afLd1lamEj0D7uoe4L/B2EIV/e98ubL5yfPXDKkfT00JZppsACMjo5sRBI9HTncrnwqOzZCiVVdYON9j6WTBPEaJ6QqBGzHDvFBHfVRa27CQaaIbZs9GhiHdFL/jbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=H5pjh4J8jvuZxz/OIqc1yc4IA23UjXx9tqXq8OjXWFI=; b=cWf7UCfjAXsGWtfwU4oy/NtzwDGyX9bilZRQ+Ev/LfWcc8RQ/uInJw4Q3JxrLsUZCwQz4dPPMtA7UqaGfYfiwpIbojQTZP7GrwCluKwUw1bpv2gu2kKIKyDfjP9D3/B+qU/JcZcGjKtw9Yj1l/H+CKQFntkOuPu8DnAp2IxWmresOYPTecsIvtH5Mqo+GyOUIDEqBqljhpHUKZaYPCvehWM8gCvLNJA2je5aXSDP1VTH/aiQX8ZlmECXKa59ohOEy40LPIGWxHuWwJltHs52wdvI3gf6X2XAHeXVKpEjeaOy3S78UtQfDVBEsVFmWAFpnXugcuCmC/mVa68cFe+cvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H5pjh4J8jvuZxz/OIqc1yc4IA23UjXx9tqXq8OjXWFI=; b=XCWxrJcQeUNkXDtX7Yn1TGIR7mZc5a3ASd7YeCmYj/mVGo+drJ12J590NiyKqMnaB3jOJJ0sb7/13VHOI3/s+vhhKfaXld5oZiJh+fmW/86kI3L5+Xei4QrcvXfqxtSYkoRuKSppVILF3WSX+5YXlUx/HMvYafBZVt12bCaZvU5cqr8U91HfRekIQb01MTgDjb25D9J2O+UNOmzvufN08A6JmEeJWJvw/8RN96uW0nQO9S4zlUV9ACU+DZQ1wSyc5c15CXBLHN0/smBYTXCLgHE6yZ9UeHXY1J4X7j897yVvvdC8tNANtBBVpCHoWGyUF0HBlxfiLAlvCyMDxIcPQA== Received: from VI1PR07MB5248.eurprd07.prod.outlook.com (2603:10a6:803:a4::30) by DB8PR07MB6329.eurprd07.prod.outlook.com (2603:10a6:10:137::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8230.12; Thu, 5 Dec 2024 13:29:08 +0000 Received: from VI1PR07MB5248.eurprd07.prod.outlook.com ([fe80::2dee:d246:de3b:42f2]) by VI1PR07MB5248.eurprd07.prod.outlook.com ([fe80::2dee:d246:de3b:42f2%3]) with mapi id 15.20.8207.017; Thu, 5 Dec 2024 13:29:08 +0000 From: Luka Jankovic To: "dev@dpdk.org" CC: =?utf-8?B?TWF0dGlhcyBSw7ZubmJsb20=?= Subject: [RFC] eventdev: add atomic queue to test-eventdev app Thread-Topic: [RFC] eventdev: add atomic queue to test-eventdev app Thread-Index: AQHbRxmpi9iZwsTjKEykdGsyMeTtPQ== Date: Thu, 5 Dec 2024 13:29:08 +0000 Message-ID: <228d44a6f2f1f6a4fb5519d9a91c99973f8d7352.camel@ericsson.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ericsson.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: VI1PR07MB5248:EE_|DB8PR07MB6329:EE_ x-ms-office365-filtering-correlation-id: ed6a7c88-318e-4b5f-09c4-08dd1530cc51 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?eUxieGx3azZLYkNVSGx6MEQyZVNmRlpCaVRITGcvVmlJSUVFWjlJVFNwMlhu?= =?utf-8?B?Vy9mT0dabjhHaWdCNlVONG9OZ2RlNzFRdzlISm5mYWdUQWJaK2EwWVFjbmE3?= =?utf-8?B?bkhnTktOTzBtbGRuRklFK1Vod0MxZU5nRjhSSkY3K0UxWlpsOEI5SEE5WUpJ?= =?utf-8?B?SndtNXhwWHBMRHRjNk1HMEdRQytteHhUWGh6T0dWT2hseFJ1aVd4bG9LVlJL?= =?utf-8?B?bXJTZDdyVWVLWFVZZjF0S0Q4R3FpYVBlUmFJMDhKYjhqU3FYZm5IYlhObDhW?= =?utf-8?B?M0VPRG40RlFiN1VnaWYzRnhHeUtGbGNUeTZoRUw3MWoxZ2I0ZDloYllkb2R6?= =?utf-8?B?Q0xEUWF4OVBhVVFRbi9Ya0dTZVZvZzVNUGhqREorUFU3ZENTTkVZM2d1bG1n?= =?utf-8?B?WlZ0UjlubFYzZEtQb3ZCMCtuZGQyY0lzM2F6VlUrSGN1TDZjRit0T2tTRklP?= =?utf-8?B?NzFkZ1AzSDJCUzdydUdMcWtRMEJsTngxZXRrK3lEUVV0VGY4S3hJR2pzemdY?= =?utf-8?B?N2J6TlA2QnFBWHF1OVNDVDU3NDAwWjRwNDhXcjBndVdaM1FCTGQwelRET1FH?= =?utf-8?B?SzFvNnpyYnFnc3IxSlV6SWtsajFBR0lnOWJqYklqeWRFMTVQenJyN3ZzenNs?= =?utf-8?B?UXEzYktyRHFNeGZqLzZWeHY5ZW14dGlhRmxGSUZUVHFObXo2SjR3OE1GOUFz?= =?utf-8?B?ZDlYOWdIcWZQV1BPa0s4ZGNOZUFVSS82QStZRCttdXBHa1Z5bjZvL3R2a3VN?= =?utf-8?B?eVFKM281ZmZNckh6WmlMRzdLWk1ZTFJWcWh3dUwxY1Z0NmFvTXdQTXRaYlhZ?= =?utf-8?B?ZW5HWlRRVnNML3dKQi8xbDJndWVRSlVsRW9JK3Bqc1VmeG9YNC8vNnBqUlBq?= =?utf-8?B?c1F1NWxDWTIvNzJZczcyRHNvcWd6Q3l6SHlUMDZPMElQUmozMFczTkhTTXVP?= =?utf-8?B?M1Q4Tkx5YlYyZmYyaXNFT1lYbStYWjRXWXA1VzFxK2MrNjhJR0ZyS0FFRE96?= =?utf-8?B?SnhCY25iaEMrVFNMZUtTaklRUGdDam4vQ0VLb1krWXBycGRLVUxqbDlEZ0Zh?= =?utf-8?B?cmRrdnBrZExsMDl2K1MxdGVaMHNsa3d0QTBQY1lmd05aRVMxb25CbGNQOTlF?= =?utf-8?B?T3VpVnpCenlFTktWVmE0eWVCczkvUys5K09FeEZSUnYvR1lxa1NjSXlFNlVY?= =?utf-8?B?S2ZWNGFnM0RiZmd6NnFFQVVJYlFjbWRhM21SMHduc2VmRTJKNzNUYWY5emdZ?= =?utf-8?B?UEQyM0EvdFlXZUwxZzBKTk0weGtyTTRGdVVCdDJLeEdVVU1FUTIzMkhVcE1s?= =?utf-8?B?TzNjTmwyc1dGbDVoK1JSMk9xY2FvVFpLUkNkaXprcCs4MzZxN3VrTG1yb3NJ?= =?utf-8?B?ZE1KMDc5S0dEd2E0ODBid2s5UjFLVWxDT3VMVkloczdTQjBLMjhiMDNGNjE2?= =?utf-8?B?Vlc2Tkl6MWZFeTNqUUQ3RVVDa1lEUUxlZ0hvbmJLOVpzOWFZT3QyOHVpeWoy?= =?utf-8?B?cjJ1dTZmMUJ0aEZienVEZGxHL3FXVXlrQWZIemNpNzBvQXgvVWlEQ0FVa3VR?= =?utf-8?B?TnViVHFrVGtwSVdtSmZWekZZcHVkYjJiSkc1M04yZ0dnZnB0YWE5UUxFYjli?= =?utf-8?B?ajJ6ZmlmU0JBaElFdkRqVVZkZkVqQkRVeFpWMUk3NTVrZEQwS1BkNnJ3N0pw?= =?utf-8?B?ZkVISVE3WWVVL1ByNW80WWFoZWRSL01uMTRVby9OU1ZiZDN5ODNLQk5TWWJC?= =?utf-8?B?aFdzRVRMYTlvcXJTa2hDV2RpNmhBR0tQVEwyUnNQclhwZkNINi80L3Y2ak9L?= =?utf-8?B?U1ZheDNpWFgwMDhzbllVVFBwdGxIdnlzd0lSc04zT3RBMUU0U3ovdFp3eERj?= =?utf-8?B?bldTQlNCYjFwbzRZWVJEYklwN2xYbGh0bkJEQ01SZkRGV3c9PQ==?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR07MB5248.eurprd07.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NWxoM2xqcThNQlBqSkxtNEpndVhkVFZzQllaVjFpMXNMVFpoUS8yNWxpTUtq?= =?utf-8?B?QkJ5MlVZMWhBb3R3NEhpcStnMktTbFAwNVBSZ1JjY25yUHBuWFQzSGFmMDZk?= =?utf-8?B?RVlkcjJlL3kyNjV0T0NkUTJjZ0ZoTjA2SXUrL2tBQnBoeFFCTXdRd2p5K2ZG?= =?utf-8?B?bmhZTG5DR29MRkpSZGtMcG9UMm9HZ3lES2xnaWtiRFlQUVhDQVpOd0FsK1N2?= =?utf-8?B?cERlQldoS3hQRjU2VzVBUCs1ME5qcDdSUVBKWTdraGZJcnhORlNaZ1dickR2?= =?utf-8?B?a3FSTVd5UjNHejc1SDFmclZQSytuMkJOUWNVVjdlbml6VENEVVRIc2FtMlp6?= =?utf-8?B?eE82czZoaDRKaDd1MFI5OXlmZ1VIU00yVEI3SS9wa1pGZmIweFlmczY2ZVlO?= =?utf-8?B?dkp1VEE3NkJKTmN3OFhWK2NxeFc3ZzRTeHl1Zks4ZFNBRWJWL1pBN2VXUXRj?= =?utf-8?B?eDMyVFRFMnFlUU1IMlpVTjArT2d0dkdlc29HNjdCUG1ML1NsK2VwSUlLaFVG?= =?utf-8?B?NUV1c2RHV1RVdDg2TUFBayt2clZGM3BGWTBSbEMzV1dqOTZrRnlyNkkyaURU?= =?utf-8?B?aXRJOTVXNTJKQjBCdldwTDUrRDJOUjZibklkdTFBQ1VVNHU5VXJiRGlHNi9i?= =?utf-8?B?engyajJoMGd6UjRRT2I2Zk1RNGJUai9uUHlZQ2twd2M5STRmREFhOGVJeGE1?= =?utf-8?B?bGFPUnlTemRIWGxEaTFCcGJ4WG9pS2ZjNk1HWEtEQ2dkWXRMelhHUlliRjNT?= =?utf-8?B?TnNDYmNKOTJKekNiL2pycG9CZEx1VDBSU2paYUJkbTZuaDdFVHpmZzZHZm1R?= =?utf-8?B?RnZoa2ZUVURBbXQ0ZnlzZDY0UUlxV1hHVVRnemNmejJPVC9sNElQcGJVMXVm?= =?utf-8?B?dHZvbWZGTDhNVHJpU016anFIOFgrM0ZhNWNsU0xjRzBxZjNXZWZUSDFodHZq?= =?utf-8?B?cU9IazFMOVNydmhja0lYU08zK3MyV3ZrNjh4ZFJmYm9RdmtPOUxuL0tMdVZR?= =?utf-8?B?ZjR4MXRySFJsTW0yd1R3TVVCbExNeW02K3dCZDBGajBUR3hxRE1lMlcrT2ZK?= =?utf-8?B?aDloNkNBckdOK01LdEZqRndOY0dyN0F1NXdpMGRHc0w5Mkd0NW1IN20zR2dr?= =?utf-8?B?UE5wR05WOUkxdHZxaUlHOEpicTBDV011WFJ4SUkxK1NZZmZhMmhBQ0JPT01o?= =?utf-8?B?cWtnUDQrdXR1N2dBUzhkaVlqVmIxVGY2YStJOU1yS3VwOUZFVkRIdnQvcDFn?= =?utf-8?B?QXJITnlPTitZbVh4Zk12dTkyS1N3a2JZNHpBQjBGS0NuOVpjUUZQL0lFc3Q2?= =?utf-8?B?YUM5NUxGNzZ0cDNHbGNvMzNZWDJOSXN5cWRmY3BMV0JjYlR0cXYxZ0toUVhL?= =?utf-8?B?SHZMN1RVaC9zQUg0Wm96MG1Pdk5jVGRqWDc5dWpTYlZacG8vRnAyRWwxVnJO?= =?utf-8?B?VmY3UGFnN1NySzRFdTBqbVpLUXdjMk8rRHpDaVZ2OWU3eE5tTkMxdGdmNVNy?= =?utf-8?B?WkZXVWVJYlFXNElqWWVqY0x4a1FiUi9zTFZDeDhwSHpzYmhPMFYwRm45ZElX?= =?utf-8?B?SGlHSkRwWmxvSGZ1Mysya3BmYWIxa0JGODUxR1NKcFN5NE0xNHZ0RS9RZXZK?= =?utf-8?B?NjkyNkIyOXN6NWlndGNVRWtib0hpeWx5MVllVnRLN0REci9jMElBNEdKR3lI?= =?utf-8?B?c1N3YXFFVkN1WENhcm9jc0pVVzhmbW4zSEsvNXVnTUQrTEVCQ01mOTFlSkFx?= =?utf-8?B?eGhiOHlSUGdxQmU1YnNZRmVkQXBMdDA5U3JKbXpreWh3bkgwOGpWOXd1bVl6?= =?utf-8?B?MW5CK2ZFdFZlSEhhZ3J5U2FKUXFFY2oyc3kwMHh4b3I2aFlyK21PN2hZVWdM?= =?utf-8?B?N1ZYenYyODY3eWVZL2Nua0ErM2pzRzRYY3VNSCtYbk1jVFp0b3p5bHp0WGg5?= =?utf-8?B?ZHJpUTJ1aHpVak5maUJjdEVEazVOV1NFeGZOYjNlN0Nid3ZXZ0ptOXFPOC9Q?= =?utf-8?B?VU05SXVBQmM5bXFVbzV1U2tUdnFBWmhRbEp1dUhHaDIya21zOVFQeUtuSEpG?= =?utf-8?B?TlpjY3BvWTRKUmdnaSt3NVVXYlJmN2tHVHJGcGJTdnBHbzFzQzVmZ1k3Z0xM?= =?utf-8?B?SzZiV1hFMmwwam02NkxFZHdHSzk5YTFrME85a1I4ajNBZFZ1VWVkK2dyVW54?= =?utf-8?B?L1E9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <93503603F8803F4F9E1018C40DACFBE3@eurprd07.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: ericsson.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR07MB5248.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ed6a7c88-318e-4b5f-09c4-08dd1530cc51 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Dec 2024 13:29:08.6904 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5WdVOemesd0SUgIJQKHAuav0XgcP79gorFbD+74e8u/gAdiZU3eX7OaQR3BjooXWVfwwvvalgcrp3F18jjdqV+n2ueMo3OE8pn04+XLg4jg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR07MB6329 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 RnJvbSA3NTMyNzNhYjlhZjQ5ZTE2ZDdmN2I1NzdkNjI2M2UzZGI1MTI1N2Q3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogTHVrYSBKYW5rb3ZpYyA8bHVrYS5qYW5rb3ZpY0Blcmljc3Nv bi5jb20+DQpEYXRlOiBUaHUsIDUgRGVjIDIwMjQgMTM6MDU6MzUgKzAwMDANClN1YmplY3Q6IFtS RkNdIGV2ZW50ZGV2OiBhZGQgYXRvbWljIHF1ZXVlIHRvIHRlc3QtZXZlbnRkZXYgYXBwDQoNCkFk ZCBhbiBhdG9taWMgcXVldWUgdGVzdCBiYXNlZCBvbiB0aGUgb3JkZXIgcXVldWUgdGVzdCBidXQg dXNlIGV4Y2x1c2l2ZWx5IGF0b21pYyBxdWV1ZXMuDQpUaGlzIG1ha2VzIGl0IGNvbXBhdGlibGUg d2l0aCBldmVudCBkZXZpY2VzIHN1Y2ggYXMgdGhlIGRpc3RyaWJ1dGVkIHNvZnR3YXJlIGV2ZW50 ZGV2Lg0KDQpUaGUgdGVzdCBkZXRlY3RzIHdoZXRoZXIgcG9ydCBtYWludGVuYW5jZSBpcyByZXF1 aXJlZC4NCg0KVG8gdmVyaWZ5IGF0b21pY2l0eSwgYSBzcGlubG9jayBpcyBzZXQgdXAgZm9yIGVh Y2ggY29tYmluYXRpb24gb2YgcG9ydCwgcXVldWUsIGFuZCBmbG93Lg0KSXQgaXMgdGFrZW4gd2hl bmV2ZXIgYW4gZXZlbnQgZW50ZXJzIGEgbmV3IGZsb3cgYW5kIHJlbGVhc2VkIHdoZW4gYWxsIGV2 ZW50cyBmcm9tIGEgZmxvdyBhcmUgcHJvY2Vzc2VkLg0KVGhlIHRlc3Qgd2lsbCBmYWlsIGlmIGEg cG9ydCBhdHRlbXB0cyB0byB0YWtlIHRoZSBsb2NrIGZvciBhIGdpdmVuIGZsb3cgd2hpY2ggaXMg YWxyZWFkeSB0YWtlbiBieSBhbm90aGVyIHBvcnQuDQpJbiB0aGUgZW5kLCBpdCBpcyB2ZXJpZmll ZCB0aGF0IGFuIGVxdWFsIGFtb3VudCBvZiBsb2NrcyBhbmQgdW5sb2NrcyBvY2N1cmVkLCBhbmQg dGhhdCBhbGwgZXZlbnRzIGhhdmUgYmVlbiBwcm9jZXNzZWQuDQoNClNpZ25lZC1vZmYtYnk6IEx1 a2EgSmFua292aWMgPGx1a2EuamFua292aWNAZXJpY3Nzb24uY29tPg0KLS0tDQogYXBwL3Rlc3Qt ZXZlbnRkZXYvZXZ0X2NvbW1vbi5oICAgICAgICB8ICAxMCArDQogYXBwL3Rlc3QtZXZlbnRkZXYv bWVzb24uYnVpbGQgICAgICAgICB8ICAgMSArDQogYXBwL3Rlc3QtZXZlbnRkZXYvdGVzdF9hdG9t aWNfcXVldWUuYyB8IDU2OSArKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGFwcC90ZXN0LWV2 ZW50ZGV2L3Rlc3Rfb3JkZXJfY29tbW9uLmggfCAgIDEgKw0KIDQgZmlsZXMgY2hhbmdlZCwgNTgx IGluc2VydGlvbnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXBwL3Rlc3QtZXZlbnRkZXYvdGVz dF9hdG9taWNfcXVldWUuYw0KDQpkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtZXZlbnRkZXYvZXZ0X2Nv bW1vbi5oIGIvYXBwL3Rlc3QtZXZlbnRkZXYvZXZ0X2NvbW1vbi5oDQppbmRleCA5MDFiOGJhNTVk Li5mMDAzNmZiNjIwIDEwMDY0NA0KLS0tIGEvYXBwL3Rlc3QtZXZlbnRkZXYvZXZ0X2NvbW1vbi5o DQorKysgYi9hcHAvdGVzdC1ldmVudGRldi9ldnRfY29tbW9uLmgNCkBAIC0xMzgsNiArMTM4LDE2 IEBAIGV2dF9oYXNfZmxvd19pZCh1aW50OF90IGRldl9pZCkNCiAJCQl0cnVlIDogZmFsc2U7DQog fQ0KIA0KK3N0YXRpYyBpbmxpbmUgYm9vbA0KK2V2dF9oYXNfbWFpbnRlbmFuY2VfZnJlZSh1aW50 OF90IGRldl9pZCkNCit7DQorCXN0cnVjdCBydGVfZXZlbnRfZGV2X2luZm8gZGV2X2luZm87DQor DQorCXJ0ZV9ldmVudF9kZXZfaW5mb19nZXQoZGV2X2lkLCAmZGV2X2luZm8pOw0KKwlyZXR1cm4g KGRldl9pbmZvLmV2ZW50X2Rldl9jYXAgJiBSVEVfRVZFTlRfREVWX0NBUF9NQUlOVEVOQU5DRV9G UkVFKSA/DQorCQkJdHJ1ZSA6IGZhbHNlOw0KK30NCisNCiBzdGF0aWMgaW5saW5lIGludA0KIGV2 dF9zZXJ2aWNlX3NldHVwKHVpbnQzMl90IHNlcnZpY2VfaWQpDQogew0KZGlmZiAtLWdpdCBhL2Fw cC90ZXN0LWV2ZW50ZGV2L21lc29uLmJ1aWxkIGIvYXBwL3Rlc3QtZXZlbnRkZXYvbWVzb24uYnVp bGQNCmluZGV4IGFiODc2OWM3NTUuLmRiNWFkZDM5ZWIgMTAwNjQ0DQotLS0gYS9hcHAvdGVzdC1l dmVudGRldi9tZXNvbi5idWlsZA0KKysrIGIvYXBwL3Rlc3QtZXZlbnRkZXYvbWVzb24uYnVpbGQN CkBAIC0xNSw2ICsxNSw3IEBAIHNvdXJjZXMgPSBmaWxlcygNCiAgICAgICAgICd0ZXN0X29yZGVy X2F0cS5jJywNCiAgICAgICAgICd0ZXN0X29yZGVyX2NvbW1vbi5jJywNCiAgICAgICAgICd0ZXN0 X29yZGVyX3F1ZXVlLmMnLA0KKyAgICAgICAgJ3Rlc3RfYXRvbWljX3F1ZXVlLmMnLA0KICAgICAg ICAgJ3Rlc3RfcGVyZl9hdHEuYycsDQogICAgICAgICAndGVzdF9wZXJmX2NvbW1vbi5jJywNCiAg ICAgICAgICd0ZXN0X3BlcmZfcXVldWUuYycsDQpkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtZXZlbnRk ZXYvdGVzdF9hdG9taWNfcXVldWUuYyBiL2FwcC90ZXN0LWV2ZW50ZGV2L3Rlc3RfYXRvbWljX3F1 ZXVlLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi4wMmFlYzk1ZDU5 DQotLS0gL2Rldi9udWxsDQorKysgYi9hcHAvdGVzdC1ldmVudGRldi90ZXN0X2F0b21pY19xdWV1 ZS5jDQpAQCAtMCwwICsxLDU2OSBAQA0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlIDx1 bmlzdGQuaD4NCisjaW5jbHVkZSA8cnRlX2xjb3JlX3Zhci5oPg0KKw0KKyNpbmNsdWRlICJ0ZXN0 X29yZGVyX2NvbW1vbi5oIg0KKw0KKyNkZWZpbmUgTkJfUVVFVUVTIDINCisNCitydGVfc3Bpbmxv Y2tfdCAqYXRvbWljX2xvY2tzOw0KKw0KK3N0cnVjdCBwb3J0X3N0YXRfY291bnRlcnMgew0KKwl1 aW50MzJfdCBudW1fbG9ja2VkW05CX1FVRVVFU107DQorCXVpbnQzMl90IG51bV91bmxvY2tlZFtO Ql9RVUVVRVNdOw0KKwl1aW50NjRfdCAqbnVtX3BrdHM7DQorfTsNCisNCitzdGF0aWMgUlRFX0xD T1JFX1ZBUl9IQU5ETEUoc3RydWN0IHBvcnRfc3RhdF9jb3VudGVycywgcG9ydF9jb3VudGVycyk7 DQorDQorc3RhdGljIGlubGluZSBpbnQNCitnZXRfbnVtX3BrdHNfaW5kZXgoaW50IHF1ZXVlLCB1 aW50MzJfdCBmbG93LCB1aW50MzJfdCBuYl9mbG93cykNCit7DQorCXJldHVybiAocXVldWUgKiBu Yl9mbG93cykgKyBmbG93Ow0KK30NCisNCitzdGF0aWMgaW5saW5lIHVpbnQzMl90DQorZ2V0X2xv Y2tfaWR4KGludCBxdWV1ZSwgdWludDMyX3QgbmJfcG9ydHMsIHVpbnQzMl90IG5iX2Zsb3dzLCB1 aW50MzJfdCBwb3J0LCBmbG93X2lkX3QgZmxvdykNCit7DQorCXJldHVybiAocXVldWUgKiBuYl9w b3J0cyAqIG5iX2Zsb3dzKSArIChwb3J0ICogbmJfZmxvd3MpICsgZmxvdzsNCit9DQorDQorc3Rh dGljIGlubGluZSBpbnQNCithdG9taWNfcHJvZHVjZXIodm9pZCAqYXJnKQ0KK3sNCisJc3RydWN0 IHByb2RfZGF0YSAqcCA9IGFyZzsNCisJc3RydWN0IHRlc3Rfb3JkZXIgKnQgPSBwLT50Ow0KKwlz dHJ1Y3QgZXZ0X29wdGlvbnMgKm9wdCA9IHQtPm9wdDsNCisJY29uc3QgdWludDhfdCBkZXZfaWQg PSBwLT5kZXZfaWQ7DQorCWNvbnN0IHVpbnQ4X3QgcG9ydCA9IHAtPnBvcnRfaWQ7DQorCXN0cnVj dCBydGVfbWVtcG9vbCAqcG9vbCA9IHQtPnBvb2w7DQorCWNvbnN0IHVpbnQ2NF90IG5iX3BrdHMg PSB0LT5uYl9wa3RzOw0KKwl1aW50MzJfdCAqcHJvZHVjZXJfZmxvd19zZXEgPSB0LT5wcm9kdWNl cl9mbG93X3NlcTsNCisJY29uc3QgdWludDMyX3QgbmJfZmxvd3MgPSB0LT5uYl9mbG93czsNCisJ dWludDY0X3QgY291bnQgPSAwOw0KKwlzdHJ1Y3QgcnRlX21idWYgKm07DQorCXN0cnVjdCBydGVf ZXZlbnQgZXY7DQorDQorCWlmIChvcHQtPnZlcmJvc2VfbGV2ZWwgPiAxKQ0KKwkJcHJpbnRmKCIl cygpOiBsY29yZSAlZCBkZXZfaWQgJWQgcG9ydD0lZCBxdWV1ZT0lZFxuIiwgX19mdW5jX18sIHJ0 ZV9sY29yZV9pZCgpLA0KKwkJCQlkZXZfaWQsIHBvcnQsIHAtPnF1ZXVlX2lkKTsNCisNCisJZXYu ZXZlbnQgPSAwOw0KKwlldi5vcCA9IFJURV9FVkVOVF9PUF9ORVc7DQorCWV2LnF1ZXVlX2lkID0g cC0+cXVldWVfaWQ7DQorCWV2LnNjaGVkX3R5cGUgPSBSVEVfU0NIRURfVFlQRV9PUkRFUkVEOw0K Kwlldi5wcmlvcml0eSA9IFJURV9FVkVOVF9ERVZfUFJJT1JJVFlfTk9STUFMOw0KKwlldi5ldmVu dF90eXBlID0gUlRFX0VWRU5UX1RZUEVfQ1BVOw0KKwlldi5zdWJfZXZlbnRfdHlwZSA9IDA7IC8q IHN0YWdlIDAgKi8NCisNCisJd2hpbGUgKGNvdW50IDwgbmJfcGt0cyAmJiB0LT5lcnIgPT0gZmFs c2UpIHsNCisJCW0gPSBydGVfcGt0bWJ1Zl9hbGxvYyhwb29sKTsNCisJCWlmIChtID09IE5VTEwp DQorCQkJY29udGludWU7DQorDQorCQljb25zdCBmbG93X2lkX3QgZmxvdyA9ICh1aW50cHRyX3Qp bSAlIG5iX2Zsb3dzOw0KKwkJLyogTWFpbnRhaW4gc2VxIG51bWJlciBwZXIgZmxvdyAqLw0KKwkJ Km9yZGVyX21idWZfc2Vxbih0LCBtKSA9IHByb2R1Y2VyX2Zsb3dfc2VxW2Zsb3ddKys7DQorCQlv cmRlcl9mbG93X2lkX3NhdmUodCwgZmxvdywgbSwgJmV2KTsNCisNCisJCXdoaWxlIChydGVfZXZl bnRfZW5xdWV1ZV9idXJzdChkZXZfaWQsIHBvcnQsICZldiwgMSkgIT0gMSkgew0KKwkJCWlmICh0 LT5lcnIpDQorCQkJCWJyZWFrOw0KKwkJCXJ0ZV9wYXVzZSgpOw0KKwkJfQ0KKw0KKwkJY291bnQr KzsNCisJfQ0KKw0KKwlpZiAocC0+bWFpbnRhaW4pIHsNCisJCXdoaWxlICghdC0+ZXJyICYmIHQt PnJlc3VsdCAhPSBFVlRfVEVTVF9TVUNDRVNTKSB7DQorCQkJcnRlX2V2ZW50X21haW50YWluKGRl dl9pZCwgcG9ydCwgUlRFX0VWRU5UX0RFVl9NQUlOVF9PUF9GTFVTSCk7DQorCQkJcnRlX3BhdXNl KCk7DQorCQl9DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBfX3J0ZV9hbHdh eXNfaW5saW5lIHZvaWQNCithdG9taWNfcHJvY2Vzc19zdGFnZV8wKHN0cnVjdCB0ZXN0X29yZGVy ICpjb25zdCB0LCBzdHJ1Y3QgcnRlX2V2ZW50ICpjb25zdCBldiwNCisJCWNvbnN0IHVpbnQzMl90 IG5iX2Zsb3dzLCBjb25zdCB1aW50MzJfdCBuYl9wb3J0cywgdWludDMyX3QgcG9ydCkNCit7DQor CWV2LT5xdWV1ZV9pZCA9IDE7DQorCWV2LT5vcCA9IFJURV9FVkVOVF9PUF9GT1JXQVJEOw0KKwll di0+c2NoZWRfdHlwZSA9IFJURV9TQ0hFRF9UWVBFX0FUT01JQzsNCisJZXYtPmV2ZW50X3R5cGUg PSBSVEVfRVZFTlRfVFlQRV9DUFU7DQorDQorCXN0cnVjdCBwb3J0X3N0YXRfY291bnRlcnMgKmNv dW50ZXJzID0gUlRFX0xDT1JFX1ZBUihwb3J0X2NvdW50ZXJzKTsNCisJY29uc3QgdWludDMyX3Qg ZmxvdyA9ICh1aW50cHRyX3QpZXYtPm1idWYgJSBuYl9mbG93czsNCisNCisJLyogQ2hlY2tzIGlm IGFueSBvdGhlciBwb3J0IGhhcyB0YWtlbiB0aGUgbG9jayBiZWZvcmUgZm9yIHRoZSBnaXZlbiBm bG93ICovDQorCWZvciAodWludDMyX3QgaSA9IDA7IGkgPCBuYl9wb3J0czsgaSsrKSB7DQorCQlp ZiAoaSAhPSBwb3J0KSB7DQorCQkJaWYgKHJ0ZV9zcGlubG9ja19pc19sb2NrZWQoJmF0b21pY19s b2Nrc1tnZXRfbG9ja19pZHgoDQorCQkJCQkgICAgMCwgbmJfcG9ydHMsIG5iX2Zsb3dzLCBpLCBm bG93KV0pKSB7DQorCQkJCWV2dF9lcnIoInByb2Nlc3NpbmcgbG9ja2VkIGZsb3cgJXUsIHBvcnQg JXUiLCBmbG93LCBpKTsNCisJCQkJdC0+ZXJyID0gdHJ1ZTsNCisJCQl9DQorCQl9IGVsc2Ugew0K KwkJCWlmIChydGVfc3BpbmxvY2tfdHJ5bG9jaygmYXRvbWljX2xvY2tzW2dldF9sb2NrX2lkeCgN CisJCQkJCSAgICAwLCBuYl9wb3J0cywgbmJfZmxvd3MsIHBvcnQsIGZsb3cpXSkpIHsNCisJCQkJ Y291bnRlcnMtPm51bV9sb2NrZWRbMF0rKzsNCisJCQl9DQorCQkJY291bnRlcnMtPm51bV9wa3Rz W2dldF9udW1fcGt0c19pbmRleCgwLCBmbG93LCBuYl9mbG93cyldKys7DQorCQl9DQorCX0NCit9 DQorDQorc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZA0KK2F0b21pY19wcm9jZXNzX3N0 YWdlXzEoc3RydWN0IHRlc3Rfb3JkZXIgKmNvbnN0IHQsIHN0cnVjdCBydGVfZXZlbnQgKmNvbnN0 IGV2LA0KKwkJY29uc3QgdWludDMyX3QgbmJfZmxvd3MsIGNvbnN0IHVpbnQzMl90IG5iX3BvcnRz LCB1aW50MzJfdCAqY29uc3QgZXhwZWN0ZWRfZmxvd19zZXEsDQorCQlSVEVfQVRPTUlDKHVpbnQ2 NF90KSAqY29uc3Qgb3V0c3RhbmRfcGt0cywgdWludDMyX3QgcG9ydCkNCit7DQorCWNvbnN0IHVp bnQzMl90IGZsb3cgPSAodWludHB0cl90KWV2LT5tYnVmICUgbmJfZmxvd3M7DQorCS8qIGNvbXBh cmUgdGhlIHNlcW4gYWdhaW5zdCBleHBlY3RlZCB2YWx1ZSAqLw0KKwlpZiAoKm9yZGVyX21idWZf c2Vxbih0LCBldi0+bWJ1ZikgIT0gZXhwZWN0ZWRfZmxvd19zZXFbZmxvd10pIHsNCisJCWV2dF9l cnIoImZsb3c9JXggc2VxbiBtaXNtYXRjaCBnb3Q9JXggZXhwZWN0ZWQ9JXgiLCBmbG93LA0KKwkJ CQkqb3JkZXJfbWJ1Zl9zZXFuKHQsIGV2LT5tYnVmKSwgZXhwZWN0ZWRfZmxvd19zZXFbZmxvd10p Ow0KKwkJdC0+ZXJyID0gdHJ1ZTsNCisJfQ0KKw0KKwlzdHJ1Y3QgcG9ydF9zdGF0X2NvdW50ZXJz ICpjb3VudGVycyA9IFJURV9MQ09SRV9WQVIocG9ydF9jb3VudGVycyk7DQorDQorCS8qIENoZWNr cyBpZiBhbnkgb3RoZXIgcG9ydCBoYXMgdGFrZW4gdGhlIGxvY2sgYmVmb3JlIGZvciB0aGUgZ2l2 ZW4gZmxvdyAqLw0KKwlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbmJfcG9ydHM7IGkrKykgew0K KwkJaWYgKGkgIT0gcG9ydCkgew0KKwkJCWlmIChydGVfc3BpbmxvY2tfaXNfbG9ja2VkKCZhdG9t aWNfbG9ja3NbZ2V0X2xvY2tfaWR4KA0KKwkJCQkJICAgIDEsIG5iX3BvcnRzLCBuYl9mbG93cywg aSwgZmxvdyldKSkgew0KKwkJCQlldnRfZXJyKCJwcm9jZXNzaW5nIGxvY2tlZCBmbG93ICV1LCBw b3J0ICV1IiwgZmxvdywgaSk7DQorCQkJCXQtPmVyciA9IHRydWU7DQorCQkJfQ0KKwkJfSBlbHNl IHsNCisJCQlpZiAocnRlX3NwaW5sb2NrX3RyeWxvY2soJmF0b21pY19sb2Nrc1tnZXRfbG9ja19p ZHgoDQorCQkJCQkgICAgMSwgbmJfcG9ydHMsIG5iX2Zsb3dzLCBwb3J0LCBmbG93KV0pKSB7DQor CQkJCWNvdW50ZXJzLT5udW1fbG9ja2VkWzFdKys7DQorCQkJfQ0KKwkJCWNvdW50ZXJzLT5udW1f cGt0c1tnZXRfbnVtX3BrdHNfaW5kZXgoMSwgZmxvdywgbmJfZmxvd3MpXSsrOw0KKwkJfQ0KKwl9 DQorDQorCWV4cGVjdGVkX2Zsb3dfc2VxW2Zsb3ddKys7DQorCXJ0ZV9wa3RtYnVmX2ZyZWUoZXYt Pm1idWYpOw0KKwlydGVfYXRvbWljX2ZldGNoX3N1Yl9leHBsaWNpdChvdXRzdGFuZF9wa3RzLCAx LCBydGVfbWVtb3J5X29yZGVyX3JlbGF4ZWQpOw0KK30NCisNCitzdGF0aWMgaW50DQorYXRvbWlj X3F1ZXVlX3dvcmtlcih2b2lkICphcmcsIGNvbnN0IGJvb2wgZmxvd19pZF9jYXApDQorew0KKwlP UkRFUl9XT1JLRVJfSU5JVDsNCisJc3RydWN0IHJ0ZV9ldmVudCBldjsNCisNCisJY29uc3QgdWlu dDhfdCBuYl93b3JrZXJzID0gZXZ0X25yX2FjdGl2ZV9sY29yZXMob3B0LT53bGNvcmVzKTsNCisJ Y29uc3QgdWludDhfdCBuYl9wb3J0cyA9IG5iX3dvcmtlcnMgKyAxOw0KKw0KKwl3aGlsZSAodC0+ ZXJyID09IGZhbHNlKSB7DQorCQl1aW50MTZfdCBldmVudCA9IHJ0ZV9ldmVudF9kZXF1ZXVlX2J1 cnN0KGRldl9pZCwgcG9ydCwgJmV2LCAxLCAwKTsNCisJCWlmICghZXZlbnQpIHsNCisJCQlpZiAo cnRlX2F0b21pY19sb2FkX2V4cGxpY2l0KG91dHN0YW5kX3BrdHMsIHJ0ZV9tZW1vcnlfb3JkZXJf cmVsYXhlZCkgPD0gMCkNCisJCQkJYnJlYWs7DQorCQkJcnRlX3BhdXNlKCk7DQorCQkJY29udGlu dWU7DQorCQl9DQorDQorCQlpZiAoIWZsb3dfaWRfY2FwKQ0KKwkJCW9yZGVyX2Zsb3dfaWRfY29w eV9mcm9tX21idWYodCwgJmV2KTsNCisNCisJCXN0cnVjdCBwb3J0X3N0YXRfY291bnRlcnMgKmNv dW50ZXJzID0gUlRFX0xDT1JFX1ZBUihwb3J0X2NvdW50ZXJzKTsNCisJCWNvbnN0IHVpbnQzMl90 IGZsb3cgPSAodWludHB0cl90KWV2Lm1idWYgJSBuYl9mbG93czsNCisNCisJCWlmIChldi5xdWV1 ZV9pZCA9PSAwKSB7IC8qIGZyb20gb3JkZXJlZCBxdWV1ZSAqLw0KKwkJCWF0b21pY19wcm9jZXNz X3N0YWdlXzAodCwgJmV2LCBuYl9mbG93cywgbmJfcG9ydHMsIHBvcnQpOw0KKwkJCXdoaWxlIChy dGVfZXZlbnRfZW5xdWV1ZV9idXJzdChkZXZfaWQsIHBvcnQsICZldiwgMSkgIT0gMSkgew0KKwkJ CQlydGVfcGF1c2UoKTsNCisJCQl9DQorCQkJdWludDY0X3QgcGt0c19sZWZ0ID0gLS1jb3VudGVy cy0+bnVtX3BrdHNbZ2V0X251bV9wa3RzX2luZGV4KDAsIGZsb3csIG5iX2Zsb3dzKV07DQorDQor CQkJaWYgKHBrdHNfbGVmdCA9PSAwKSB7DQorCQkJCWNvbnN0IHVpbnQzMl90IGxvY2tfaWR4ID0N CisJCQkJCQlnZXRfbG9ja19pZHgoMCwgbmJfcG9ydHMsIG5iX2Zsb3dzLCBwb3J0LCBmbG93KTsN CisJCQkJaWYgKHJ0ZV9zcGlubG9ja19pc19sb2NrZWQoJmF0b21pY19sb2Nrc1tsb2NrX2lkeF0p KSB7DQorCQkJCQlydGVfc3BpbmxvY2tfdW5sb2NrKCZhdG9taWNfbG9ja3NbbG9ja19pZHhdKTsN CisJCQkJCWNvdW50ZXJzLT5udW1fdW5sb2NrZWRbMF0rKzsNCisJCQkJfQ0KKwkJCX0NCisJCX0g ZWxzZSBpZiAoZXYucXVldWVfaWQgPT0gMSkgew0KKwkJCWF0b21pY19wcm9jZXNzX3N0YWdlXzEo dCwgJmV2LCBuYl9mbG93cywgbmJfcG9ydHMsIGV4cGVjdGVkX2Zsb3dfc2VxLA0KKwkJCQkJb3V0 c3RhbmRfcGt0cywgcG9ydCk7DQorCQkJZXYub3AgPSBSVEVfRVZFTlRfT1BfUkVMRUFTRTsNCisN CisJCQl1aW50NjRfdCBwa3RzX2xlZnQgPSAtLWNvdW50ZXJzLT5udW1fcGt0c1tnZXRfbnVtX3Br dHNfaW5kZXgoMSwgZmxvdywgbmJfZmxvd3MpXTsNCisNCisJCQlpZiAocGt0c19sZWZ0ID09IDAp IHsNCisJCQkJY29uc3QgdWludDMyX3QgbG9ja19pZHggPQ0KKwkJCQkJCWdldF9sb2NrX2lkeCgx LCBuYl9wb3J0cywgbmJfZmxvd3MsIHBvcnQsIGZsb3cpOw0KKwkJCQlpZiAocnRlX3NwaW5sb2Nr X2lzX2xvY2tlZCgmYXRvbWljX2xvY2tzW2xvY2tfaWR4XSkpIHsNCisJCQkJCXJ0ZV9zcGlubG9j a191bmxvY2soJmF0b21pY19sb2Nrc1tsb2NrX2lkeF0pOw0KKwkJCQkJY291bnRlcnMtPm51bV91 bmxvY2tlZFsxXSsrOw0KKwkJCQl9DQorCQkJfQ0KKwkJfSBlbHNlIHsNCisJCQlvcmRlcl9wcm9j ZXNzX3N0YWdlX2ludmFsaWQodCwgJmV2KTsNCisJCX0NCisJfQ0KKw0KKwlmb3IgKHVpbnQzMl90 IGkgPSAwOyBpIDwgbmJfZmxvd3M7IGkrKykgew0KKwkJcnRlX3NwaW5sb2NrX3VubG9jaygmYXRv bWljX2xvY2tzWyhwb3J0ICogbmJfZmxvd3MpICsgaV0pOw0KKwl9DQorDQorCXJldHVybiAwOw0K K30NCisNCitzdGF0aWMgaW50DQorYXRvbWljX3F1ZXVlX3dvcmtlcl9idXJzdCh2b2lkICphcmcs IGNvbnN0IGJvb2wgZmxvd19pZF9jYXApDQorew0KKwlPUkRFUl9XT1JLRVJfSU5JVDsNCisJc3Ry dWN0IHJ0ZV9ldmVudCBldltCVVJTVF9TSVpFXTsNCisJdWludDE2X3QgaTsNCisNCisJY29uc3Qg dWludDhfdCBuYl93b3JrZXJzID0gZXZ0X25yX2FjdGl2ZV9sY29yZXMob3B0LT53bGNvcmVzKTsN CisJY29uc3QgdWludDhfdCBuYl9wb3J0cyA9IG5iX3dvcmtlcnMgKyAxOw0KKw0KKwl3aGlsZSAo dC0+ZXJyID09IGZhbHNlKSB7DQorDQorCQlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbmJfZmxv d3M7IGkrKykgew0KKwkJCXJ0ZV9zcGlubG9ja191bmxvY2soJmF0b21pY19sb2Nrc1socG9ydCAq IG5iX2Zsb3dzKSArIGldKTsNCisJCX0NCisNCisJCXVpbnQxNl90IGNvbnN0IG5iX3J4ID0gcnRl X2V2ZW50X2RlcXVldWVfYnVyc3QoZGV2X2lkLCBwb3J0LCBldiwgQlVSU1RfU0laRSwgMCk7DQor DQorCQlpZiAobmJfcnggPT0gMCkgew0KKwkJCWlmIChydGVfYXRvbWljX2xvYWRfZXhwbGljaXQo b3V0c3RhbmRfcGt0cywgcnRlX21lbW9yeV9vcmRlcl9yZWxheGVkKSA8PQ0KKwkJCQkJMCkgew0K KwkJCQlicmVhazsNCisJCQl9DQorCQkJcnRlX3BhdXNlKCk7DQorCQkJY29udGludWU7DQorCQl9 DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgbmJfcng7IGkrKykgew0KKw0KKwkJCWlmICghZmxvd19p ZF9jYXApDQorCQkJCW9yZGVyX2Zsb3dfaWRfY29weV9mcm9tX21idWYodCwgJmV2W2ldKTsNCisN CisJCQlpZiAoZXZbaV0ucXVldWVfaWQgPT0gMCkgew0KKwkJCQlhdG9taWNfcHJvY2Vzc19zdGFn ZV8wKHQsICZldltpXSwgbmJfZmxvd3MsIG5iX3BvcnRzLCBwb3J0KTsNCisJCQl9IGVsc2UgaWYg KGV2W2ldLnF1ZXVlX2lkID09IDEpIHsNCisJCQkJYXRvbWljX3Byb2Nlc3Nfc3RhZ2VfMSh0LCAm ZXZbaV0sIG5iX2Zsb3dzLCBuYl9wb3J0cywNCisJCQkJCQlleHBlY3RlZF9mbG93X3NlcSwgb3V0 c3RhbmRfcGt0cywgcG9ydCk7DQorCQkJCWV2W2ldLm9wID0gUlRFX0VWRU5UX09QX1JFTEVBU0U7 DQorCQkJfSBlbHNlIHsNCisJCQkJb3JkZXJfcHJvY2Vzc19zdGFnZV9pbnZhbGlkKHQsICZldltp XSk7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJdWludDE2X3QgdG90YWxfZW5xID0gMDsNCisNCisJCWRv IHsNCisJCQl1aW50MTZfdCBlbnEgPSBydGVfZXZlbnRfZW5xdWV1ZV9idXJzdCgNCisJCQkJCWRl dl9pZCwgcG9ydCwgZXYgKyB0b3RhbF9lbnEsIG5iX3J4IC0gdG90YWxfZW5xKTsNCisNCisJCQlm b3IgKHVpbnQxNl90IGkgPSB0b3RhbF9lbnE7IGkgPCB0b3RhbF9lbnEgKyBlbnE7IGkrKykgew0K KwkJCQlzdHJ1Y3QgcG9ydF9zdGF0X2NvdW50ZXJzICpjb3VudGVycyA9IFJURV9MQ09SRV9WQVIo cG9ydF9jb3VudGVycyk7DQorCQkJCWNvbnN0IHVpbnQzMl90IGZsb3cgPSAodWludHB0cl90KWV2 W2ldLm1idWYgJSBuYl9mbG93czsNCisNCisJCQkJaWYgKGV2W2ldLm9wID09IFJURV9FVkVOVF9P UF9GT1JXQVJEKSB7DQorCQkJCQljb3VudGVycy0+bnVtX3BrdHNbZ2V0X251bV9wa3RzX2luZGV4 KDAsIGZsb3csIG5iX2Zsb3dzKV0tLTsNCisNCisJCQkJCWlmIChjb3VudGVycy0+bnVtX3BrdHNb Z2V0X251bV9wa3RzX2luZGV4KA0KKwkJCQkJCQkgICAgMCwgZmxvdywgbmJfZmxvd3MpXSA9PSAw KSB7DQorCQkJCQkJY29uc3QgdWludDMyX3QgbG9ja19pZHggPSBnZXRfbG9ja19pZHgoDQorCQkJ CQkJCQkwLCBuYl9wb3J0cywgbmJfZmxvd3MsIHBvcnQsIGZsb3cpOw0KKwkJCQkJCWlmIChydGVf c3BpbmxvY2tfaXNfbG9ja2VkKA0KKwkJCQkJCQkJICAgICZhdG9taWNfbG9ja3NbbG9ja19pZHhd KSkgew0KKwkJCQkJCQlydGVfc3BpbmxvY2tfdW5sb2NrKA0KKwkJCQkJCQkJCSZhdG9taWNfbG9j a3NbbG9ja19pZHhdKTsNCisJCQkJCQkJY291bnRlcnMtPm51bV91bmxvY2tlZFswXSsrOw0KKwkJ CQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKw0KKwkJCQlpZiAoZXZbaV0ub3AgPT0gUlRFX0VWRU5U X09QX1JFTEVBU0UpIHsNCisJCQkJCWNvdW50ZXJzLT5udW1fcGt0c1tnZXRfbnVtX3BrdHNfaW5k ZXgoMSwgZmxvdywgbmJfZmxvd3MpXS0tOw0KKw0KKwkJCQkJaWYgKGNvdW50ZXJzLT5udW1fcGt0 c1tnZXRfbnVtX3BrdHNfaW5kZXgoDQorCQkJCQkJCSAgICAxLCBmbG93LCBuYl9mbG93cyldID09 IDApIHsNCisJCQkJCQljb25zdCB1aW50MzJfdCBsb2NrX2lkeCA9IGdldF9sb2NrX2lkeCgNCisJ CQkJCQkJCTEsIG5iX3BvcnRzLCBuYl9mbG93cywgcG9ydCwgZmxvdyk7DQorCQkJCQkJaWYgKHJ0 ZV9zcGlubG9ja19pc19sb2NrZWQoDQorCQkJCQkJCQkgICAgJmF0b21pY19sb2Nrc1tsb2NrX2lk eF0pKSB7DQorCQkJCQkJCXJ0ZV9zcGlubG9ja191bmxvY2soDQorCQkJCQkJCQkJJmF0b21pY19s b2Nrc1tsb2NrX2lkeF0pOw0KKwkJCQkJCQljb3VudGVycy0+bnVtX3VubG9ja2VkWzFdKys7DQor CQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJCXRvdGFsX2VucSArPSBlbnE7 DQorCQl9IHdoaWxlICh0b3RhbF9lbnEgPCBuYl9yeCk7DQorCX0NCisNCisJZm9yICh1aW50MzJf dCBpID0gMDsgaSA8IG5iX2Zsb3dzOyBpKyspIHsNCisJCXJ0ZV9zcGlubG9ja191bmxvY2soJmF0 b21pY19sb2Nrc1socG9ydCAqIG5iX2Zsb3dzKSArIGldKTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGludA0KK3dvcmtlcl93cmFwcGVyKHZvaWQgKmFyZykNCit7DQorCXN0 cnVjdCB3b3JrZXJfZGF0YSAqdyA9IGFyZzsNCisJY29uc3QgYm9vbCBidXJzdCA9IGV2dF9oYXNf YnVyc3RfbW9kZSh3LT5kZXZfaWQpOw0KKwljb25zdCBib29sIGZsb3dfaWRfY2FwID0gZXZ0X2hh c19mbG93X2lkKHctPmRldl9pZCk7DQorDQorDQorCWlmIChidXJzdCkgew0KKwkJaWYgKGZsb3df aWRfY2FwKQ0KKwkJCXJldHVybiBhdG9taWNfcXVldWVfd29ya2VyX2J1cnN0KGFyZywgdHJ1ZSk7 DQorCQllbHNlDQorCQkJcmV0dXJuIGF0b21pY19xdWV1ZV93b3JrZXJfYnVyc3QoYXJnLCBmYWxz ZSk7DQorCX0gZWxzZSB7DQorCQlpZiAoZmxvd19pZF9jYXApDQorCQkJcmV0dXJuIGF0b21pY19x dWV1ZV93b3JrZXIoYXJnLCB0cnVlKTsNCisJCWVsc2UNCisJCQlyZXR1cm4gYXRvbWljX3F1ZXVl X3dvcmtlcihhcmcsIGZhbHNlKTsNCisJfQ0KK30NCisNCitzdGF0aWMgaW50DQorYXRvbWljX3F1 ZXVlX2xhdW5jaF9sY29yZXMoc3RydWN0IGV2dF90ZXN0ICp0ZXN0LCBzdHJ1Y3QgZXZ0X29wdGlv bnMgKm9wdCkNCit7DQorCWludCByZXQsIGxjb3JlX2lkOw0KKwlzdHJ1Y3QgdGVzdF9vcmRlciAq dCA9IGV2dF90ZXN0X3ByaXYodGVzdCk7DQorDQorCVJURV9MQ09SRV9WQVJfQUxMT0MocG9ydF9j b3VudGVycyk7DQorDQorCXN0cnVjdCBwb3J0X3N0YXRfY291bnRlcnMgKmNvdW50ZXJzOw0KKwlS VEVfTENPUkVfVkFSX0ZPUkVBQ0gobGNvcmVfaWQsIGNvdW50ZXJzLCBwb3J0X2NvdW50ZXJzKQ0K Kwl7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IE5CX1FVRVVFUzsgaSsrKSB7DQorCQkJY291bnRl cnMtPm51bV9sb2NrZWRbaV0gPSAwOw0KKwkJCWNvdW50ZXJzLT5udW1fdW5sb2NrZWRbaV0gPSAw Ow0KKwkJfQ0KKw0KKwkJY291bnRlcnMtPm51bV9wa3RzID0NCisJCQkJcnRlX2NhbGxvYyhOVUxM LCBvcHQtPm5iX2Zsb3dzICogTkJfUVVFVUVTLCBzaXplb2YodWludDY0X3QpLCAwKTsNCisJfQ0K Kw0KKwlpbnQgd2tyX2lkeCA9IDA7DQorCS8qIGxhdW5jaCB3b3JrZXJzICovDQorCVJURV9MQ09S RV9GT1JFQUNIX1dPUktFUihsY29yZV9pZCkgew0KKwkJaWYgKCEob3B0LT53bGNvcmVzW2xjb3Jl X2lkXSkpDQorCQkJY29udGludWU7DQorDQorCQlyZXQgPSBydGVfZWFsX3JlbW90ZV9sYXVuY2go d29ya2VyX3dyYXBwZXIsICZ0LT53b3JrZXJbd2tyX2lkeF0sIGxjb3JlX2lkKTsNCisJCWlmIChy ZXQpIHsNCisJCQlldnRfZXJyKCJmYWlsZWQgdG8gbGF1bmNoIHdvcmtlciAlZCIsIGxjb3JlX2lk KTsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0KKwkJd2tyX2lkeCsrOw0KKwl9DQorDQorCS8qIGxh dW5jaCBwcm9kdWNlciAqLw0KKwlpbnQgcGxjb3JlID0gZXZ0X2dldF9maXJzdF9hY3RpdmVfbGNv cmUob3B0LT5wbGNvcmVzKTsNCisNCisJcmV0ID0gcnRlX2VhbF9yZW1vdGVfbGF1bmNoKGF0b21p Y19wcm9kdWNlciwgJnQtPnByb2QsIHBsY29yZSk7DQorCWlmIChyZXQpIHsNCisJCWV2dF9lcnIo ImZhaWxlZCB0byBsYXVuY2ggb3JkZXJfcHJvZHVjZXIgJWQiLCBwbGNvcmUpOw0KKwkJcmV0dXJu IHJldDsNCisJfQ0KKw0KKwl1aW50NjRfdCBjeWNsZXMgPSBydGVfZ2V0X3RpbWVyX2N5Y2xlcygp Ow0KKwlpbnQ2NF90IG9sZF9yZW1haW5pbmcgPSAtMTsNCisNCisJd2hpbGUgKHQtPmVyciA9PSBm YWxzZSkgew0KKwkJdWludDY0X3QgbmV3X2N5Y2xlcyA9IHJ0ZV9nZXRfdGltZXJfY3ljbGVzKCk7 DQorCQlpbnQ2NF90IHJlbWFpbmluZyA9IHJ0ZV9hdG9taWNfbG9hZF9leHBsaWNpdCgNCisJCQkJ JnQtPm91dHN0YW5kX3BrdHMsIHJ0ZV9tZW1vcnlfb3JkZXJfcmVsYXhlZCk7DQorDQorCQlpZiAo cmVtYWluaW5nIDw9IDApIHsNCisJCQl0LT5yZXN1bHQgPSBFVlRfVEVTVF9TVUNDRVNTOw0KKwkJ CWJyZWFrOw0KKwkJfQ0KKw0KKwkJaWYgKG5ld19jeWNsZXMgLSBjeWNsZXMgPiBydGVfZ2V0X3Rp bWVyX2h6KCkgKiAxKSB7DQorCQkJcHJpbnRmKENMR1JOICJcciUiIFBSSWQ2NCAiIiBDTE5STSwg cmVtYWluaW5nKTsNCisJCQlmZmx1c2goc3Rkb3V0KTsNCisJCQlpZiAob2xkX3JlbWFpbmluZyA9 PSByZW1haW5pbmcpIHsNCisJCQkJcnRlX2V2ZW50X2Rldl9kdW1wKG9wdC0+ZGV2X2lkLCBzdGRv dXQpOw0KKwkJCQlldnRfZXJyKCJObyBzY2hlZHVsZXMgZm9yIHNlY29uZHMsIGRlYWRsb2NrIik7 DQorCQkJCXQtPmVyciA9IHRydWU7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCQlvbGRfcmVtYWlu aW5nID0gcmVtYWluaW5nOw0KKwkJCWN5Y2xlcyA9IG5ld19jeWNsZXM7DQorCQl9DQorCX0NCisJ cHJpbnRmKCJcciIpOw0KKw0KKwlSVEVfTENPUkVfVkFSX0ZPUkVBQ0gobGNvcmVfaWQsIGNvdW50 ZXJzLCBwb3J0X2NvdW50ZXJzKQ0KKwl7DQorCQlpZiAoIShvcHQtPndsY29yZXNbbGNvcmVfaWRd KSkNCisJCQljb250aW51ZTsNCisJCWZvciAoaW50IGkgPSAwOyBpIDwgTkJfUVVFVUVTOyBpKysp IHsNCisJCQlpZiAoY291bnRlcnMtPm51bV9sb2NrZWRbaV0gIT0gY291bnRlcnMtPm51bV91bmxv Y2tlZFtpXSkgew0KKwkJCQlldnRfZXJyKCJOdW1iZXIgb2YgbG9ja3MgKCV1KSBkb2VzIG5vdCBu dW1iZXIgb2YgdW5sb2NrcyAoJXUpIGZvciAiDQorCQkJCQkiY29yZSAldSwgcXVldWUgJWkiLA0K KwkJCQkJCWNvdW50ZXJzLT5udW1fbG9ja2VkW2ldLCBjb3VudGVycy0+bnVtX3VubG9ja2VkW2ld LA0KKwkJCQkJCWxjb3JlX2lkLCBpKTsNCisJCQkJdC0+ZXJyID0gdHJ1ZTsNCisJCQl9DQorCQl9 DQorDQorCQlmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgb3B0LT5uYl9mbG93czsgaSsrKSB7DQor CQkJZm9yIChpbnQgaiA9IDA7IGogPCBOQl9RVUVVRVM7IGorKykgew0KKwkJCQlpZiAoY291bnRl cnMtPm51bV9wa3RzW2dldF9udW1fcGt0c19pbmRleChqLCBpLCBvcHQtPm5iX2Zsb3dzKV0gIT0N CisJCQkJCQkwKSB7DQorCQkJCQlldnRfZXJyKCJQYWNrZXRzIGxlZnQgJWx1IGluIGZsb3cgJXUs IHF1ZXVlICVpIGZvciBjb3JlICV1IiwNCisJCQkJCQkJY291bnRlcnMtPm51bV9wa3RzW2dldF9u dW1fcGt0c19pbmRleCgNCisJCQkJCQkJCQlqLCBpLCBvcHQtPm5iX2Zsb3dzKV0sDQorCQkJCQkJ CWksIGosIGxjb3JlX2lkKTsNCisJCQkJCXQtPmVyciA9IHRydWU7DQorCQkJCX0NCisJCQl9DQor CQl9DQorCX0NCisNCisJY29uc3QgdWludDhfdCBuYl93b3JrZXJzID0gZXZ0X25yX2FjdGl2ZV9s Y29yZXMob3B0LT53bGNvcmVzKTsNCisJY29uc3QgdWludDhfdCBuYl9wb3J0cyA9IG5iX3dvcmtl cnMgKyAxOw0KKw0KKwljb25zdCB1aW50MzJfdCBudW1fbG9ja3MgPSBOQl9RVUVVRVMgKiBuYl9w b3J0cyAqIG9wdC0+bmJfZmxvd3M7DQorCWZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1fbG9j a3M7IGkrKykgew0KKwkJcnRlX3NwaW5sb2NrX3VubG9jaygmYXRvbWljX2xvY2tzW2ldKTsNCisJ fQ0KKw0KKwlydGVfZnJlZShhdG9taWNfbG9ja3MpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQor c3RhdGljIGludA0KK2F0b21pY19xdWV1ZV9ldmVudGRldl9zZXR1cChzdHJ1Y3QgZXZ0X3Rlc3Qg KnRlc3QsIHN0cnVjdCBldnRfb3B0aW9ucyAqb3B0KQ0KK3sNCisJaW50IHJldDsNCisNCisJY29u c3QgdWludDhfdCBuYl93b3JrZXJzID0gZXZ0X25yX2FjdGl2ZV9sY29yZXMob3B0LT53bGNvcmVz KTsNCisJLyogbnVtYmVyIG9mIGFjdGl2ZSB3b3JrZXIgY29yZXMgKyAxIHByb2R1Y2VyICovDQor CWNvbnN0IHVpbnQ4X3QgbmJfcG9ydHMgPSBuYl93b3JrZXJzICsgMTsNCisNCisJcmV0ID0gZXZ0 X2NvbmZpZ3VyZV9ldmVudGRldihvcHQsIE5CX1FVRVVFUywgbmJfcG9ydHMpOw0KKwlpZiAocmV0 KSB7DQorCQlldnRfZXJyKCJmYWlsZWQgdG8gY29uZmlndXJlIGV2ZW50ZGV2ICVkIiwgb3B0LT5k ZXZfaWQpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwkvKiBxMCBjb25maWd1cmF0aW9uICov DQorCXN0cnVjdCBydGVfZXZlbnRfcXVldWVfY29uZiBxMF9vcmRlcmVkX2NvbmYgPSB7DQorCQkJ LnByaW9yaXR5ID0gUlRFX0VWRU5UX0RFVl9QUklPUklUWV9OT1JNQUwsDQorCQkJLnNjaGVkdWxl X3R5cGUgPSBSVEVfU0NIRURfVFlQRV9BVE9NSUMsDQorCQkJLm5iX2F0b21pY19mbG93cyA9IG9w dC0+bmJfZmxvd3MsDQorCQkJLm5iX2F0b21pY19vcmRlcl9zZXF1ZW5jZXMgPSBvcHQtPm5iX2Zs b3dzLA0KKwl9Ow0KKwlyZXQgPSBydGVfZXZlbnRfcXVldWVfc2V0dXAob3B0LT5kZXZfaWQsIDAs ICZxMF9vcmRlcmVkX2NvbmYpOw0KKwlpZiAocmV0KSB7DQorCQlldnRfZXJyKCJmYWlsZWQgdG8g c2V0dXAgcXVldWUwIGV2ZW50ZGV2ICVkIGVyciAlZCIsIG9wdC0+ZGV2X2lkLCByZXQpOw0KKwkJ cmV0dXJuIHJldDsNCisJfQ0KKw0KKwkvKiBxMSBjb25maWd1cmF0aW9uICovDQorCXN0cnVjdCBy dGVfZXZlbnRfcXVldWVfY29uZiBxMV9vcmRlcmVkX2NvbmYgPSB7DQorCQkJLnByaW9yaXR5ID0g UlRFX0VWRU5UX0RFVl9QUklPUklUWV9OT1JNQUwsDQorCQkJLnNjaGVkdWxlX3R5cGUgPSBSVEVf U0NIRURfVFlQRV9BVE9NSUMsDQorCQkJLm5iX2F0b21pY19mbG93cyA9IG9wdC0+bmJfZmxvd3Ms DQorCQkJLm5iX2F0b21pY19vcmRlcl9zZXF1ZW5jZXMgPSBvcHQtPm5iX2Zsb3dzLA0KKwl9Ow0K KwlyZXQgPSBydGVfZXZlbnRfcXVldWVfc2V0dXAob3B0LT5kZXZfaWQsIDEsICZxMV9vcmRlcmVk X2NvbmYpOw0KKwlpZiAocmV0KSB7DQorCQlldnRfZXJyKCJmYWlsZWQgdG8gc2V0dXAgcXVldWUw IGV2ZW50ZGV2ICVkIGVyciAlZCIsIG9wdC0+ZGV2X2lkLCByZXQpOw0KKwkJcmV0dXJuIHJldDsN CisJfQ0KKw0KKwkvKiBzZXR1cCBvbmUgcG9ydCBwZXIgd29ya2VyLCBsaW5raW5nIHRvIGFsbCBx dWV1ZXMgKi8NCisJcmV0ID0gb3JkZXJfZXZlbnRfZGV2X3BvcnRfc2V0dXAodGVzdCwgb3B0LCBu Yl93b3JrZXJzLCBOQl9RVUVVRVMpOw0KKwlpZiAocmV0KQ0KKwkJcmV0dXJuIHJldDsNCisNCisJ aWYgKCFldnRfaGFzX2Rpc3RyaWJ1dGVkX3NjaGVkKG9wdC0+ZGV2X2lkKSkgew0KKwkJdWludDMy X3Qgc2VydmljZV9pZDsNCisJCXJ0ZV9ldmVudF9kZXZfc2VydmljZV9pZF9nZXQob3B0LT5kZXZf aWQsICZzZXJ2aWNlX2lkKTsNCisJCXJldCA9IGV2dF9zZXJ2aWNlX3NldHVwKHNlcnZpY2VfaWQp Ow0KKwkJaWYgKHJldCkgew0KKwkJCWV2dF9lcnIoIk5vIHNlcnZpY2UgbGNvcmUgZm91bmQgdG8g cnVuIGV2ZW50IGRldi4iKTsNCisJCQlyZXR1cm4gcmV0Ow0KKwkJfQ0KKwl9DQorDQorCS8vIERT VyBkb2VzIG5vdCBoYXZlIFJURV9FVkVOVF9ERVZfQ0FQX01BSU5URU5BTkNFX0ZSRUUsIHNvIHRo ZSBwcm9kdWNlciBuZWVkcyB0bw0KKwkvLyBjYWxsIHJ0ZV9ldmVudF9tYWludGFpbiBvbiB0aGUg cG9ydCB3aG5ldmVyIG5vdCBzZW5kaW5nLg0KKwlpZiAoIWV2dF9oYXNfbWFpbnRlbmFuY2VfZnJl ZShvcHQtPmRldl9pZCkpIHsNCisJCXN0cnVjdCB0ZXN0X29yZGVyICp0ID0gZXZ0X3Rlc3RfcHJp dih0ZXN0KTsNCisJCXQtPnByb2QubWFpbnRhaW4gPSB0cnVlOw0KKwl9DQorDQorCXJldCA9IHJ0 ZV9ldmVudF9kZXZfc3RhcnQob3B0LT5kZXZfaWQpOw0KKwlpZiAocmV0KSB7DQorCQlldnRfZXJy KCJmYWlsZWQgdG8gc3RhcnQgZXZlbnRkZXYgJWQiLCBvcHQtPmRldl9pZCk7DQorCQlyZXR1cm4g cmV0Ow0KKwl9DQorDQorCWNvbnN0IHVpbnQzMl90IG51bV9sb2NrcyA9IE5CX1FVRVVFUyAqIG5i X3BvcnRzICogb3B0LT5uYl9mbG93czsNCisNCisJYXRvbWljX2xvY2tzID0gcnRlX2NhbGxvYyhO VUxMLCBudW1fbG9ja3MsIHNpemVvZihydGVfc3BpbmxvY2tfdCksIDApOw0KKw0KKwlmb3IgKHVp bnQzMl90IGkgPSAwOyBpIDwgbnVtX2xvY2tzOyBpKyspIHsNCisJCXJ0ZV9zcGlubG9ja19pbml0 KCZhdG9taWNfbG9ja3NbaV0pOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMg dm9pZA0KK2F0b21pY19xdWV1ZV9vcHRfZHVtcChzdHJ1Y3QgZXZ0X29wdGlvbnMgKm9wdCkNCit7 DQorCW9yZGVyX29wdF9kdW1wKG9wdCk7DQorCWV2dF9kdW1wKCJuYl9ldmRldl9xdWV1ZXMiLCAi JWQiLCBOQl9RVUVVRVMpOw0KK30NCisNCitzdGF0aWMgYm9vbA0KK2F0b21pY19xdWV1ZV9jYXBh YmlsaXR5X2NoZWNrKHN0cnVjdCBldnRfb3B0aW9ucyAqb3B0KQ0KK3sNCisJc3RydWN0IHJ0ZV9l dmVudF9kZXZfaW5mbyBkZXZfaW5mbzsNCisNCisJcnRlX2V2ZW50X2Rldl9pbmZvX2dldChvcHQt PmRldl9pZCwgJmRldl9pbmZvKTsNCisJaWYgKGRldl9pbmZvLm1heF9ldmVudF9xdWV1ZXMgPCBO Ql9RVUVVRVMgfHwNCisJCQlkZXZfaW5mby5tYXhfZXZlbnRfcG9ydHMgPCBvcmRlcl9uYl9ldmVu dF9wb3J0cyhvcHQpKSB7DQorCQlldnRfZXJyKCJub3QgZW5vdWdoIGV2ZW50ZGV2IHF1ZXVlcz0l ZC8lZCBvciBwb3J0cz0lZC8lZCIsIE5CX1FVRVVFUywNCisJCQkJZGV2X2luZm8ubWF4X2V2ZW50 X3F1ZXVlcywgb3JkZXJfbmJfZXZlbnRfcG9ydHMob3B0KSwNCisJCQkJZGV2X2luZm8ubWF4X2V2 ZW50X3BvcnRzKTsNCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwlyZXR1cm4gdHJ1ZTsNCit9 DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBldnRfdGVzdF9vcHMgYXRvbWljX3F1ZXVlID0gew0K KwkJLmNhcF9jaGVjayA9IGF0b21pY19xdWV1ZV9jYXBhYmlsaXR5X2NoZWNrLA0KKwkJLm9wdF9j aGVjayA9IG9yZGVyX29wdF9jaGVjaywNCisJCS5vcHRfZHVtcCA9IGF0b21pY19xdWV1ZV9vcHRf ZHVtcCwNCisJCS50ZXN0X3NldHVwID0gb3JkZXJfdGVzdF9zZXR1cCwNCisJCS5tZW1wb29sX3Nl dHVwID0gb3JkZXJfbWVtcG9vbF9zZXR1cCwNCisJCS5ldmVudGRldl9zZXR1cCA9IGF0b21pY19x dWV1ZV9ldmVudGRldl9zZXR1cCwNCisJCS5sYXVuY2hfbGNvcmVzID0gYXRvbWljX3F1ZXVlX2xh dW5jaF9sY29yZXMsDQorCQkuZXZlbnRkZXZfZGVzdHJveSA9IG9yZGVyX2V2ZW50ZGV2X2Rlc3Ry b3ksDQorCQkubWVtcG9vbF9kZXN0cm95ID0gb3JkZXJfbWVtcG9vbF9kZXN0cm95LA0KKwkJLnRl c3RfcmVzdWx0ID0gb3JkZXJfdGVzdF9yZXN1bHQsDQorCQkudGVzdF9kZXN0cm95ID0gb3JkZXJf dGVzdF9kZXN0cm95LA0KK307DQorDQorRVZUX1RFU1RfUkVHSVNURVIoYXRvbWljX3F1ZXVlKTsN CmRpZmYgLS1naXQgYS9hcHAvdGVzdC1ldmVudGRldi90ZXN0X29yZGVyX2NvbW1vbi5oIGIvYXBw L3Rlc3QtZXZlbnRkZXYvdGVzdF9vcmRlcl9jb21tb24uaA0KaW5kZXggNzE3N2ZkOGU5YS4uNmQ0 OGU3NjMwYSAxMDA2NDQNCi0tLSBhL2FwcC90ZXN0LWV2ZW50ZGV2L3Rlc3Rfb3JkZXJfY29tbW9u LmgNCisrKyBiL2FwcC90ZXN0LWV2ZW50ZGV2L3Rlc3Rfb3JkZXJfY29tbW9uLmgNCkBAIC0zNyw2 ICszNyw3IEBAIHN0cnVjdCBwcm9kX2RhdGEgew0KIAl1aW50OF90IHBvcnRfaWQ7DQogCXVpbnQ4 X3QgcXVldWVfaWQ7DQogCXN0cnVjdCB0ZXN0X29yZGVyICp0Ow0KKwlib29sIG1haW50YWluOw0K IH07DQogDQogc3RydWN0IF9fcnRlX2NhY2hlX2FsaWduZWQgdGVzdF9vcmRlciB7DQotLSANCjIu MzQuMQ0KDQoNCg==