From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFE191A0B0E; Fri, 20 Dec 2024 20:30:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.10 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734726638; cv=fail; b=tWP/+yB2eMcmpviSoPTiqnhB7iMyFRhOtqb54cyo+kMY8454t0zzVBtlceSD0aHJxMvxS0JvmRi+qBnXk756gwfq2MAOufjhJCqTzCDgiOMdWPiBZXYDTMBmzZ+0/fvl6J6KSLT+VmGTwH3JidPn2xWQDjfSxYKm4Dx//Gy6RZE= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734726638; c=relaxed/simple; bh=nqwyZu95LJhlkkB9rLTbnriYqHQfnlQvxt1P86660Kw=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=m+D3xD6nKslU8vCTrlr2LoChaoTf6T9oZCeyWRRvLfL4VTFlckky9bCaDPUNwaP3+3+7b9ltFUYiH8sj3sZAUSj0ZxQvdRCyerrD0Rb6xomHxDqmT2TtUCoGe+ATjklGekqFwkWuSpreMYpZJqb8WGOQFyESqTCaJG0U85bsoKo= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ArxYO4ok; arc=fail smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ArxYO4ok" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1734726636; x=1766262636; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=nqwyZu95LJhlkkB9rLTbnriYqHQfnlQvxt1P86660Kw=; b=ArxYO4okMYyCrJ4mGM7jwGNbHU1dGfZT0bVUSPmvGqXZfgyDvhTVQ7VB HAKwyhIcdYPLqFyvP0bmYWb4OqXDEqu1JsChstuw+/Kv4gQkQvWBRRrBs L7JJG77U7ytJBN2Dqv1deYvwTKaP7CNBR8HFeSOE5wTcBmpPS3PhsoDma kzkDUm+21GmPZcPkJ/LINKuCI2/OM7pH2ccb6OmhhW6Kyk33RTMGPLv9F tNhpfjsK5yISlMXSyc1Rsfq+Y/1TjPq/pwhNZXiy5VOO4BhlUE2aRNWfi 0l4KKe+n9ExEOPb34Pu8yIxYWeeNLeM8dpszJUoSKE/KrtMxB8SZbPmau Q==; X-CSE-ConnectionGUID: F7oap/1WQVmtTZAT5amaZQ== X-CSE-MsgGUID: r6lShQJyQoukivHWe4X7vA== X-IronPort-AV: E=McAfee;i="6700,10204,11292"; a="46705518" X-IronPort-AV: E=Sophos;i="6.12,251,1728975600"; d="scan'208";a="46705518" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Dec 2024 12:30:34 -0800 X-CSE-ConnectionGUID: 9WYEDYOLTH2Z6ZsA/FLppw== X-CSE-MsgGUID: iHFnRjgJRZOBNgAfwjtzzQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,224,1728975600"; d="scan'208";a="121883658" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmviesa002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 20 Dec 2024 12:30:33 -0800 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44; Fri, 20 Dec 2024 12:30:33 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.44 via Frontend Transport; Fri, 20 Dec 2024 12:30:33 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.45) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Fri, 20 Dec 2024 12:30:32 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OQUhUE7Krzg2x9eA5DbB0PTFwGM++Gwyt9hxQyu8sdlg0v+LsLFCwiebEb88ac9aBP4uB0pNpn1F4/q1h9yR0B/baaC8YNdZu38ap48ZvqRmgzo6yt8mKnM0yjHgOQC7jxcWfDfAX4OGxw6l8DqeMjTvR5PHXEVCBMpuQltvMfva5vS7Fh7WLpGcktDtQ1iTWvAR9fcbQT9l6GcDv6ldLOCvRZpKY3JC4BAv66OAkS43Gd7It7Aw4xLFOjstnnEmrGEGo5kpSnyhFLDMTErdS98W0F7utCZoQJ3LJ0e4ClUJTpobVOpo9zOkYbm6CJcmflk+6C1vXz3aoBqE1sQqdA== 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=nqwyZu95LJhlkkB9rLTbnriYqHQfnlQvxt1P86660Kw=; b=hpLH7/JTHVcz/oeogKocu+NTkJNZCV6e6g5CaMUX6PnWiCcu5XUDq2O26zcxpBLUh7Funbs+dqk9fsVv7KUM9M5gUI4p1T72H70lweqJg9luZMGXYqFOf4oFaodRVSKpLefTHXg67OGfY8xYdST1Znvrlcs/fYylPfZQ3+iUzemk1jTzDVPx5OWwCh3LixmSjq5fmpc1E4gzX/pxeyjhdiY0vO/ouDuduRZHKt1Yo50lh5YPQZGfFb9CDed5xmDMgY6ksnLtEMvDHbkITnbR+fqfqu8BEOif8a7btJfjqNlIv+dzo8SCmNVAX9cp/GKReH/fU5G4gwmwFmwKwBkXFg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CH3PR11MB8383.namprd11.prod.outlook.com (2603:10b6:610:171::6) by DM4PR11MB6477.namprd11.prod.outlook.com (2603:10b6:8:88::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8272.17; Fri, 20 Dec 2024 20:30:12 +0000 Received: from CH3PR11MB8383.namprd11.prod.outlook.com ([fe80::56d4:6f50:dd04:d11b]) by CH3PR11MB8383.namprd11.prod.outlook.com ([fe80::56d4:6f50:dd04:d11b%7]) with mapi id 15.20.8272.013; Fri, 20 Dec 2024 20:30:12 +0000 From: "Falcon, Thomas" To: "acme@kernel.org" CC: "ravi.bangoria@amd.com" , "alexander.shishkin@linux.intel.com" , "linux-perf-users@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "peterz@infradead.org" , "mark.rutland@arm.com" , "mingo@redhat.com" , "Hunter, Adrian" , "namhyung@kernel.org" , "jolsa@kernel.org" , "kan.liang@linux.intel.com" , "irogers@google.com" Subject: Re: [PATCH v3] perf script: Fix output type for dynamically allocated core PMU's Thread-Topic: [PATCH v3] perf script: Fix output type for dynamically allocated core PMU's Thread-Index: AQHbTamZDze70UJ9NUmcmPhnQ12s07LvjAKAgAAUmAA= Date: Fri, 20 Dec 2024 20:30:11 +0000 Message-ID: References: <20241213215421.661139-1-thomas.falcon@intel.com> In-Reply-To: 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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH3PR11MB8383:EE_|DM4PR11MB6477:EE_ x-ms-office365-filtering-correlation-id: a5ccf5bb-77de-4237-b67e-08dd21351a98 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?aDZlaU42NUxGRlJkTXFKT2hFb1BCYmI3SEdsRnFYamkrVlpvUTlOOVZzUzZU?= =?utf-8?B?dlJhNFExWFlXRUwrSGtFSktiNzAvVzVjSTR5REJxQ0I3NC9CalF0RDhSa0tI?= =?utf-8?B?UWt3VVc4Y3ZaL0RRME9zd3RKYmhzcDQzamMvS1dVemhPTWNmR1pISFZ0UzJo?= =?utf-8?B?ZVhTMng1TUw1empTYVdPRmNiU1FhbjhvWGgzaExVYTYrWU9YbmkrSWNuV3VZ?= =?utf-8?B?NkhaM3FodzB0VmoxekRyNXRsUnpZNnd2dXhaVG5XdmxEYVkweENHSHZINXhV?= =?utf-8?B?RlQ5OTNKK0p2OC9BeG5XLzhFOFEzZmIxcnBzVFFSWDF6UnVxUllNMkQvSGpN?= =?utf-8?B?RWpiUXhyYUVNbStnVEl3aFZBeWJvazVjUTdiSzVxQUIzT3NKVGoxL2JkcEFI?= =?utf-8?B?dGZTanAxMWpFOXNxVEpqUnA0VDlIb3hZUFpmRXIxV2VKTThOdGw4eFIrYmtD?= =?utf-8?B?R2V1TDk5WDZGM1lMTkVGTC9tVnJaYSt5ZGxaS2V4djgwN0dRRXZ0TXlrSmZl?= =?utf-8?B?bGdyTFQxN0R3UXVCa2JZcjNOSkNxV2E1QTRlTkw3N2w1YUU2OGtaOGNYVncz?= =?utf-8?B?cldnQjZBU2FybDgwcUx2bmJOd29WTEdweE1scmpWdUNaY1dZcmxCSTZ1YW9F?= =?utf-8?B?RXpOVk5lL2NrUGhhWHF0WndXTFJiMzRjRlFPVER1WklBVnM1L1dxdzBldFla?= =?utf-8?B?ZDdwTDB5Z3JubHFSV1ZPbnpsL0dBV3hWNzhIRU0zOEptQXlLd2NyZ2Z6SzFm?= =?utf-8?B?ZWswOUxNZDNiU2hFTm1zY1owbXNTdW5JSEtLeDJhYTFZL09jRE10WmVWKzd3?= =?utf-8?B?QXp1bTBSWHZ5WUJlOWtYOGZESWxFd2JuZ25HYTBiT3ZuUk1QVGt0MmdOVllC?= =?utf-8?B?NmtKTXlNaDRtb3BHaHFjSUdoRDVsQXlITDJFdnh0TlBueGpGNlFvb25UNExG?= =?utf-8?B?Snk4cTJOeFBmV1BzOTBSek1SN3JOOWUvM1E5eXMvV3paWVlYc1BVaWEvRi9I?= =?utf-8?B?ckVOSWNsZ1hIeU9ucTNzVUw3Z3gzSVhOUkFnSE1Da2dRb1IwRlRZMDVmaUd1?= =?utf-8?B?dnN3VmtqWm82VHE3UDFKb05Ua3NiMEdVZmZQc2xOVlZtRjI5OFpuUHlGL2Jj?= =?utf-8?B?RTN6Y1BRaEN0eHQ0TENaWk1KdGFRdlUydElIZ250Z0FrK3doT0VZcG9vVmMx?= =?utf-8?B?NFpNV0tTNGdLMGw0MGxLU2Q4ZkV2cWVsVWpuK2VOOER5eC9rMVJ2S1h4M2VD?= =?utf-8?B?ekxMUUo1S09JTzdIdWdmN21kOVdhVXR2MnRPL0RmaHBKaFlQeUorWis5bXM5?= =?utf-8?B?RGU0d0dSRk9QQTNBSUhsN0JZdHE3OUw4N1o3RGFraExBYkxsWHgvbUx3UTBy?= =?utf-8?B?OEJMSDNtZTMvbVBVQkp6eEQzT1BMNXhNd0RzZVg0N3M0UFNoRGRSYXA2MkpE?= =?utf-8?B?QWd5V01sRGNza0UxQTg2NkNFSmFsakZhTDk3cXBRQU9YbjlWMjVaVzEyUDg1?= =?utf-8?B?cnJ1VlZKUVJBTzB2REV0TWJhYmx6blRZOU1lU2ZSY3FkaXh1NGV3UDlYLzA3?= =?utf-8?B?Smp5U0VIMVlEYm83dFV2V0dnZXBZQWozWjlyenlIV3R0WkxtcWpzOXdpWDVC?= =?utf-8?B?YUdDV3paZmk3VUNqekcyZmZiZHlNUm1Da0gvRTZncVJHaTV6Y2VoSCtjVTUx?= =?utf-8?B?TXhsaENDSWVrRlZqUEw1dGZuL1dBWFpZL09qRFpmaG9EdC8weldiVGIvbzhO?= =?utf-8?B?OWtEaDEyYnNSM1g4TkZWWTd0WnE4V2dLNzBzRXhlMlRxWng0SmdBV3FTQVc4?= =?utf-8?B?c0pudUtFbDNMVVkxOEdYRmFrUnJFOURvOFo5NmRjRDJQNzYzbkJ2UHZ1T0xR?= =?utf-8?B?WVdEQzZPSWdZZ0JMT2UzYUVTWk9CK1FxOVQwVUNyOGswd0pWdTF6RlpkM3ds?= =?utf-8?Q?UK80MDyuv30YEy6PqTDRNAUXv7cPp4/s?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR11MB8383.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?REh4ZUVJdXlBZ1FJQmg0VkdMeXBwN0VXMGJub2F0d1ByVmh4bkNQQ1QrbkIv?= =?utf-8?B?Z1JjTTVuSHBtUXdJOWw2d21KaUs1Vml5RTNuZmhFdGJDR21tVS9tR3dzVUtR?= =?utf-8?B?bldGSDZOYXZLajd3ai8xbWlDbFVZaW9xdzRxYjk5Y1BTd1ZUVkdtS1dMOStw?= =?utf-8?B?NDdOV2I1YWpzTE1LWkNMWEpDTFJmL0s4WEVmTUZYSXYyeWZQbitPOXBYNjR5?= =?utf-8?B?NWJjUU5MdVI2NVU0ekxNanBtZXYyd0pPNXNiTTkvdlF2V2p2VXZId3pkRVNB?= =?utf-8?B?ME9SNXQ4MUZ0c240bGFZcE90Ynp1UmIyaXJTaDMzM1ZVSnFqZkNsUUhyS3FS?= =?utf-8?B?RFdLSE51MW56SHJXaUt4UVMvSVhzMG1QRUV1enNPaDliK2R1VGUxRE1vYkkz?= =?utf-8?B?ckNBZzdQL29XWXFyQkJUenZZUTdFOVpQVGtTdVlvQTM0aFZyQU9kSnBGL2V0?= =?utf-8?B?eW5xc0NONWJEMUdhU0ozUytvY3RzN1dxVVN5cndEbkMyYUU1ZytnOFV1U2dz?= =?utf-8?B?N1RVOStZYUlNTHNaazNIdC9WQ1BYdHdieXA1ZFhzOHBvbzE1TjgzaDVOV0NN?= =?utf-8?B?VkJiVXB2RGxtN2lmaS91Z2cxaFpyaXZTOVcyRFYwb0k2SGVUUERoWUNYYkFq?= =?utf-8?B?NlJhRVNjWFN4V1NOUUNORE4zaEZLbFNBS0dMdEpWMm9FdFBtZWlRTmdZVFA0?= =?utf-8?B?SWNhQUYxNVNZNG4zcXFkN3lkc3NzcDVFMmF2eGdaSmdBbnRZejhMZUdVR2Fj?= =?utf-8?B?Vjc1T2FLU2RnRDlIY0ZHWFRCb1NIeWVuQWMzdXZJZU43RXNXa2lKUEpvcGhz?= =?utf-8?B?T3ZHZWdsa2ZmQ0psZkp6UmRJK1VaMWxzczBoTXorclFFcFBlWmNSMFBCYnNT?= =?utf-8?B?b3gzS2Y4SVI4R1k1ejRQb2dYdHVKL2JXNW1kc3BKVExaQjhqMlUvQnE1NldQ?= =?utf-8?B?QzY4UVJWQWxSNXU3cW4rSnJLOThqb1pwUnQ3dGlqWGFVdzdpeGZwZ2lpS2Y0?= =?utf-8?B?ak9DM1dEa2lsQXdGajFOeTZKTzFqM25IckJwWnJkSzZNUmVDRTRmNkNQUCsx?= =?utf-8?B?NVhuRlpmVGVsSjFPWEpNWDhtTElKQTdIV0ovZG5YQnN1bnZVY3dvQ1QzclM0?= =?utf-8?B?V201ZERjS1NPMEt6TThFcW1iTjBwOS9BeUtKUWNuVXdrM2RMNitXUnkrZGRn?= =?utf-8?B?dnExYVpTNUh1ZzZFYTQ2TXJvdXlXVVFCZUxBZXByNkp5TXBHVFJiby9saHNz?= =?utf-8?B?cDFUSndZY2NHRWpsYWs5cDJGZmR1VGlVUENTVlJEalJHUHZmWDdjUlBrb2xV?= =?utf-8?B?VFJvWWRtRTAxdTdWbE05VEFRaktSbTFPbXhpcFVyQ3FpWHhHMFh2dXY1TE5S?= =?utf-8?B?YVoyYm56NWtDZVh2OFBrSlQzYVMrN1loZVk3Y1p6RStQaHB6ZDNxUEJPcUJF?= =?utf-8?B?STc0Z3FLVGhwV1dIdFNWS0haTU5zTEpEQjlQQUJ0eWFERkFMelRmREhiMDky?= =?utf-8?B?ZEU3cXFtQkNBdllxZ1dUQU5ia2E3TTNZQmUwT1E4Qlo0c29GK1Zzb05rSGs1?= =?utf-8?B?RmFoM2pSM21JcFdUWGlOWmYreWFSUHdQVTNZSWsrckxIVEtoMlJMZWZ4UVBO?= =?utf-8?B?VFJLK2pWc2tEWURXWUxTcHNSZGFzWkFyUUdlYzNnMENNYWI3MWFlNlRzVmJa?= =?utf-8?B?Z0MzbEFMM3JYOTRkVlpKYkNiUFFHUHVta0dSOGEzMGVhM0RhK0Y5R3h2cXBO?= =?utf-8?B?blVpQVNwdFRHYUV3Zk8zNGZSUlIzZURiQ1ExQWRLZVR2cXVGSThVcldia2ly?= =?utf-8?B?b1RNK2V6MUxMTmk0MHlaS1ZjeTZjNER5WEQ2dDUveUY5bDBqdGdaL1JqWnpM?= =?utf-8?B?Z25UM2RGZlE5ZjhwK01kVGJIMlUwZUNKRFFRSnRENVRxYUQ2bStOT1NDV3Qz?= =?utf-8?B?TU9yZGMvN0VSTEFnMTBQSll0anRTbndKT3NsN2tFZi9BNjRRekhSQktWbThj?= =?utf-8?B?SzA3b3BOMjgrQWh4WHl1LzFQU0toM3BCZDVHMHNlZVN3c01GeTkvWGxKcFY2?= =?utf-8?B?L3N1MjQ3T21sMUxvVlhIM1FFUkhITWtyWnRzb1RIa0xhbzByOEx5SmtaWGIx?= =?utf-8?B?L2JjZkUzcGt3NEVOMmhyRWtJa08yR1Y2UndJOEZCbE1Sa2F4eFVvcThYeUxQ?= =?utf-8?B?Z3c9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <2BE11377FAD43E43B9018A6DC1ABFE91@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB8383.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a5ccf5bb-77de-4237-b67e-08dd21351a98 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Dec 2024 20:30:11.9602 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bL1YEdoO5iXZoT2Rj3k5J2LWMr1EyhKEEen8kL8FVyOdVfuQjHsJrarUY895tSLZQQ3BwuNtnbfTVJ+bVqmMeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6477 X-OriginatorOrg: intel.com T24gRnJpLCAyMDI0LTEyLTIwIGF0IDE2OjE2IC0wMzAwLCBBcm5hbGRvIENhcnZhbGhvIGRlIE1l bG8gd3JvdGU6DQo+IE9uIEZyaSwgRGVjIDEzLCAyMDI0IGF0IDAzOjU0OjIxUE0gLTA2MDAsIFRo b21hcyBGYWxjb24gd3JvdGU6DQo+ID4gcGVyZiBzY3JpcHQgb3V0cHV0IG1heSBzaG93IGRpZmZl cmVudCBmaWVsZHMgb24gZGlmZmVyZW50IGNvcmUNCj4gPiBQTVUncw0KPiA+IHRoYXQgZXhpc3Qg b24gaGV0ZXJvZ2VuZW91cyBwbGF0Zm9ybXMuIEZvciBleGFtcGxlLA0KPiA+IA0KPiA+IHBlcmYg cmVjb3JkIC1lICJ7Y3B1X2NvcmUvbWVtLWxvYWRzLWF1eC8sY3B1X2NvcmUvZXZlbnQ9MHhjZCxc DQo+ID4gdW1hc2s9MHgwMSxsZGxhdD0zLG5hbWU9TUVNX1VPUFNfUkVUSVJFRC5MT0FEX0xBVEVO Q1kvfTp1cHAiXA0KPiA+IC1jMTAwMDAgLVcgLWQgLWEgLS0gc2xlZXAgMQ0KPiA+IA0KPiA+IHBl cmYgc2NyaXB0Og0KPiA+IA0KPiA+IGNocm9taXVtLWJyb3dzZcKgwqAgNDY1NzIgWzAwMl0gNTQ0 OTY2Ljg4MjM4NDrCoMKgwqDCoMKgDQo+ID4gMTAwMDDCoAljcHVfY29yZS9NRU1fVU9QU19SRVRJ UkVELkxPQURfTEFURU5DWS86IDdmZmRmMTM5MWIwY8KgwqDCoMKgIDEwMjY4MTAwMTQyXA0KPiA+ IMKgfE9QIExPQUR8TFZMIEwxIGhpdHxTTlAgTm9uZXxUTEIgTDEgb3IgTDIgaGl0fExDSyBOb3xC TEvCoMKgwqAgTi9BwqDCoMKgDQo+ID4gNcKgwqAgN8KgwqDCoCAwwqDCoCA3ZmFkN2M0NzQyNWQg W3Vua25vd25dICgvdXNyL2xpYjY0L2xpYmdsaWItDQo+ID4gMi4wLnNvLjAuODAwMC4zKQ0KPiA+ IA0KPiA+IHBlcmYgcmVjb3JkIC1lIGNwdV9hdG9tL2V2ZW50PTB4ZDAsdW1hc2s9MHgwNSxsZGxh dD0zLFwNCj4gPiBuYW1lPU1FTV9VT1BTX1JFVElSRUQuTE9BRF9MQVRFTkNZL3VwcCAtYzEwMDAw IC1XIC1kIC1hIC0tIHNsZWVwIDENCj4gPiANCj4gPiBwZXJmIHNjcmlwdDoNCj4gPiANCj4gPiBn bm9tZS1jb250cm9sLWPCoCA1MzQyMjQgWzAyM10gNTQ0OTUxLjgxNjIyNzrCoMKgwqDCoMKgIDEw MDAwDQo+ID4gY3B1X2F0b20vTUVNX1VPUFNfUkVUSVJFRC5MT0FEX0xBVEVOQ1kvOsKgwqAgN2Yw YWFhYTBhYWUwwqAgW3Vua25vd25dDQo+ID4gKC91c3IvbGliNjQvbGliZ2xpYi0yLjAuc28uMC44 MDAwLjMpDQo+ID4gDQo+ID4gU29tZSBmaWVsZHMsIHN1Y2ggYXMgZGF0YV9zcmMsIGFyZSBub3Qg aW5jbHVkZWQgYnkgZGVmYXVsdC4NCj4gPiANCj4gPiBUaGUgY2F1c2UgaXMgdGhhdCB3aGlsZSBv bmUgUE1VIG1heSBiZSBhc3NpZ25lZCBhIHR5cGUgc3VjaCBhcw0KPiA+IFBFUkZfVFlQRV9SQVcs IG90aGVyIGNvcmUgUE1VJ3MgYXJlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhdCBib290DQo+ID4g dGltZS4NCj4gPiBJZiB0aGlzIHZhbHVlIGRvZXMgbm90IG1hdGNoIGFuIGV4aXN0aW5nIFBFUkZf VFlQRV9YIHZhbHVlLA0KPiA+IG91dHB1dF90eXBlKHBlcmZfZXZlbnRfYXR0ci50eXBlKSB3aWxs IHJldHVybiBPVVRQVVRfVFlQRV9PVEhFUi4NCj4gPiANCj4gPiBJbnN0ZWFkIHNlYXJjaCBmb3Ig YSBjb3JlIFBNVSB3aXRoIGEgbWF0Y2hpbmcgcGVyZl9ldmVudF9hdHRyIHR5cGUNCj4gPiBhbmQs IGlmIG9uZSBpcyBmb3VuZCwgcmV0dXJuIFBFUkZfVFlQRV9SQVcgdG8gbWF0Y2ggb3V0cHV0IG9m IG90aGVyDQo+ID4gY29yZSBQTVUncy4NCj4gPiANCj4gPiBTdWdnZXN0ZWQtYnk6IEthbiBMaWFu ZyA8a2FuLmxpYW5nQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgRmFsY29u IDx0aG9tYXMuZmFsY29uQGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiB2MjogcmVzdHJpY3QgcG11 IGxvb2t1cCB0byBwbGF0Zm9ybXMgd2l0aCBtb3JlIHRoYW4gb25lIGNvcmUgcG11DQo+ID4gdjM6 IG9ubHkgc2NhbiBjb3JlIHBtdSBsaXN0DQo+ID4gLS0tDQo+ID4gwqB0b29scy9wZXJmL2J1aWx0 aW4tc2NyaXB0LmMgfCAxNiArKysrKysrKysrKysrKysrDQo+ID4gwqAxIGZpbGUgY2hhbmdlZCwg MTYgaW5zZXJ0aW9ucygrKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0 aW4tc2NyaXB0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tDQo+ID4gc2NyaXB0LmMNCj4gPiBpbmRl eCA5ZTQ3OTA1Zjc1YTYuLjY4NTIzMjg4M2Y5YyAxMDA2NDQNCj4gPiAtLS0gYS90b29scy9wZXJm L2J1aWx0aW4tc2NyaXB0LmMNCj4gPiArKysgYi90b29scy9wZXJmL2J1aWx0aW4tc2NyaXB0LmMN Cj4gPiBAQCAtMzg0LDYgKzM4NCwxOSBAQCBzdGF0aWMgaW50IGV2c2VsX3NjcmlwdF9fZnByaW50 ZihzdHJ1Y3QNCj4gPiBldnNlbF9zY3JpcHQgKmVzLCBGSUxFICpmcCkNCj4gPiDCoAkJwqDCoMKg wqDCoMKgIHN0LnN0X3NpemUgLyAxMDI0LjAgLyAxMDI0LjAsIGVzLT5maWxlbmFtZSwNCj4gPiBl cy0+c2FtcGxlcyk7DQo+ID4gwqB9DQo+ID4gwqANCj4gPiArc3RhdGljIGJvb2wgb3V0cHV0X3R5 cGVfbWFueV9jb3JlX3BtdXModW5zaWduZWQgaW50IHR5cGUpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCBwZXJmX3BtdSAqcG11ID0gTlVMTDsNCj4gPiArDQo+ID4gKwlpZiAocGVyZl9wbXVzX19udW1f Y29yZV9wbXVzKCkgPiAxKSB7DQo+ID4gKwkJd2hpbGUgKChwbXUgPSBwZXJmX3BtdXNfX3NjYW5f Y29yZShwbXUpKSAhPSBOVUxMKQ0KPiA+IHsNCj4gPiArCQkJaWYgKHBtdS0+dHlwZSA9PSB0eXBl KQ0KPiA+ICsJCQkJcmV0dXJuIHRydWU7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJu IGZhbHNlOw0KPiA+ICt9DQo+ID4gKw0KPiA+IMKgc3RhdGljIGlubGluZSBpbnQgb3V0cHV0X3R5 cGUodW5zaWduZWQgaW50IHR5cGUpDQo+ID4gwqB7DQo+ID4gwqAJc3dpdGNoICh0eXBlKSB7DQo+ ID4gQEAgLTM5NCw2ICs0MDcsOSBAQCBzdGF0aWMgaW5saW5lIGludCBvdXRwdXRfdHlwZSh1bnNp Z25lZCBpbnQNCj4gPiB0eXBlKQ0KPiA+IMKgCQkJcmV0dXJuIHR5cGU7DQo+ID4gwqAJfQ0KPiA+ IMKgDQo+ID4gKwlpZiAob3V0cHV0X3R5cGVfbWFueV9jb3JlX3BtdXModHlwZSkpDQo+ID4gKwkJ cmV0dXJuIFBFUkZfVFlQRV9SQVc7DQo+ID4gKw0KPiA+IMKgCXJldHVybiBPVVRQVVRfVFlQRV9P VEhFUjsNCj4gPiDCoH0NCj4gDQo+IENhbiB5b3UgcGxlYXNlIHRlc3QgdGhlIHBhdGNoIGJlbG93 IHNvIHRoYXQgd2UgZG9uJ3QgZG8gdGhpcyB3aGlsZQ0KPiBsb29wDQo+IGluIGFsbCBjYWxscyB0 byBvdXRwdXRfdHlwZSB3aGVuIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjb3JlIHBtdT8NCj4gDQo+ IEkgaGF2ZW4ndCB0ZXN0ZWQgdGhpcyBwYXRjaCwgc28gcGxlYXNlIHNlZSBpZiB5b3VyIHBhdGNo IG9uIHRvcCBvZiBpdA0KPiBwcm9kdWNlcyB0aGUgZGVzaXJlZCByZXN1bHQuDQoNCkhpIEFybmFs ZG8sIGl0IGxvb2tzIGdvb2QgdG8gbWUuDQoNClRoYW5rcywNClRvbQ0KDQo+IA0KPiAtIEFybmFs ZG8NCj4gDQo+IEZyb20gZDNjNjQ1NTBhMDM2NTQ1NTk4MGFhYTljNTY3YzRhNmI4YzEwNDczYSBN b24gU2VwIDE3IDAwOjAwOjAwDQo+IDIwMDENCj4gRnJvbTogQXJuYWxkbyBDYXJ2YWxobyBkZSBN ZWxvIDxhY21lQHJlZGhhdC5jb20+DQo+IERhdGU6IEZyaSwgMjAgRGVjIDIwMjQgMTY6MTA6Mjgg LTAzMDANCj4gU3ViamVjdDogW1BBVENIIDEvMV0gcGVyZiBzY3JpcHQ6IENhY2hlIHRoZSBvdXRw dXQgdHlwZQ0KPiANCj4gUmlnaHQgbm93IGV2ZXJ5IHRpbWUgd2UgbmVlZCB0byBmaWd1cmUgb3V0 IHRoZSB0eXBlIG9mIGFuIGV2c2VsIGZvcg0KPiBvdXRwdXQgcHVycG9zZXMgd2UgZG8gYSBxdWlj ayBzZXF1ZW5jZSBvZiBpZnMsIGJ1dCB0aGVyZSBhcmUgbmV3DQo+IGNhc2VzDQo+IHdoZXJlIHRo ZXJlIGlzIGEgbmVlZCB0byBkbyBtb3JlIGNvbXBsZXggaXRlcmF0aW9ucyBvdmVyIG11bHRpcGxl DQo+IGRhdGENCj4gc3RydWN0dXJlcywgc3NvIGFsbG93IGZvciBjYWNoaW5nIHRoaXMgb3BlcmF0 aW9uIG9uIGEgaG9sZSBvZiAnc3RydWN0DQo+IGV2c2VsJy4NCj4gDQo+IFRoaXMgc2hvdWxkIHJl YWxseSBiZSBkb25lIG9uIHRoZSBldnNlbC0+cHJpdiBhcmVhIHRoYXQgJ3BlcmYgc2NyaXB0Jw0K PiBzZXRzIHVwLCBidXQgbW9yZSB3b3JrIGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCBpdCBp cyBhbGxvY2F0ZWQNCj4gd2hlbg0KPiB3ZSBuZWVkIGl0LCByaWdodCBub3cgaXQgaXMgb25seSB1 c2VkIGZvciBjb25kaXRpb25hbGx5LCBhZGQgc29tZQ0KPiBjb21tZW50cyBzbyB0aGF0IHdlIG1v dmUgdGhpcyB0byB0aGF0ICdwZXJmIHNjcmlwdCcgc3BlY2lmaWMgYXJlYQ0KPiB3aGVuDQo+IHRo ZSBjb25kaXRpb25zIGFyZSBpbiBwbGFjZSBmb3IgdGhhdC4NCj4gDQo+IENjOiBBZHJpYW4gSHVu dGVyIDxhZHJpYW4uaHVudGVyQGludGVsLmNvbT4NCj4gQ2M6IElhbiBSb2dlcnMgPGlyb2dlcnNA Z29vZ2xlLmNvbT4NCj4gQ2M6IEphbWVzIENsYXJrIDxqYW1lcy5jbGFya0BsaW5hcm8ub3JnPg0K PiBDYzogSmlyaSBPbHNhIDxqb2xzYUBrZXJuZWwub3JnPg0KPiBDYzogS2FuIExpYW5nIDxrYW4u bGlhbmdAbGludXguaW50ZWwuY29tPg0KPiBDYzogTmFtaHl1bmcgS2ltIDxuYW1oeXVuZ0BrZXJu ZWwub3JnPg0KPiBTaWduZWQtb2ZmLWJ5OiBBcm5hbGRvIENhcnZhbGhvIGRlIE1lbG8gPGFjbWVA cmVkaGF0LmNvbT4NCj4gLS0tDQo+IMKgdG9vbHMvcGVyZi9idWlsdGluLXNjcmlwdC5jIHwgOTEg KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0NCj4gLS0NCj4gwqB0b29scy9wZXJm L3V0aWwvZXZzZWwuY8KgwqDCoMKgIHzCoCAxICsNCj4gwqB0b29scy9wZXJmL3V0aWwvZXZzZWwu aMKgwqDCoMKgIHzCoCAxICsNCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyks IDQyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1z Y3JpcHQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi0NCj4gc2NyaXB0LmMNCj4gaW5kZXggNmQ1Nzcz NTM5Y2ZkZjE2ZS4uMzM2NjdiNTM0NjM0OTI2OCAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvcGVyZi9i dWlsdGluLXNjcmlwdC5jDQo+ICsrKyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1zY3JpcHQuYw0KPiBA QCAtMjIxLDYgKzIyMSwxMCBAQCBlbnVtIHsNCj4gwqAJT1VUUFVUX1RZUEVfTUFYDQo+IMKgfTsN Cj4gwqANCj4gKy8vIFdlIG5lZWQgdG8gcmVmYWN0b3IgdGhlIGV2c2VsLT5wcml2IHVzZSBpbiBp biAncGVyZiBzY3JpcHQnIHRvDQo+IGFsbG93IGZvcg0KPiArLy8gdXNpbmcgdGhhdCBhcmVhLCB0 aGF0IGlzIGJlaW5nIHVzZWQgb25seSBpbiBzb21lIGNhc2VzLg0KPiArI2RlZmluZSBPVVRQVVRf VFlQRV9VTlNFVCAtMQ0KPiArDQo+IMKgLyogZGVmYXVsdCBzZXQgdG8gbWFpbnRhaW4gY29tcGF0 aWJpbGl0eSB3aXRoIGN1cnJlbnQgZm9ybWF0ICovDQo+IMKgc3RhdGljIHN0cnVjdCB7DQo+IMKg CWJvb2wgdXNlcl9zZXQ7DQo+IEBAIC0zOTQsNiArMzk4LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50 IG91dHB1dF90eXBlKHVuc2lnbmVkIGludCB0eXBlKQ0KPiDCoAlyZXR1cm4gT1VUUFVUX1RZUEVf T1RIRVI7DQo+IMKgfQ0KPiDCoA0KPiArc3RhdGljIGlubGluZSBpbnQgZXZzZWxfX291dHB1dF90 eXBlKHN0cnVjdCBldnNlbCAqZXZzZWwpDQo+ICt7DQo+ICsJaWYgKGV2c2VsLT5zY3JpcHRfb3V0 cHV0X3R5cGUgPT0gT1VUUFVUX1RZUEVfVU5TRVQpDQo+ICsJCWV2c2VsLT5zY3JpcHRfb3V0cHV0 X3R5cGUgPSBvdXRwdXRfdHlwZShldnNlbC0NCj4gPmNvcmUuYXR0ci50eXBlKTsNCj4gKw0KPiAr CXJldHVybiBldnNlbC0+c2NyaXB0X291dHB1dF90eXBlOw0KPiArfQ0KPiArDQo+IMKgc3RhdGlj IGJvb2wgb3V0cHV0X3NldF9ieV91c2VyKHZvaWQpDQo+IMKgew0KPiDCoAlpbnQgajsNCj4gQEAg LTQxOCwxMyArNDMwLDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpvdXRwdXRfZmllbGQyc3RyKGVu dW0NCj4gcGVyZl9vdXRwdXRfZmllbGQgZmllbGQpDQo+IMKgCXJldHVybiBzdHI7DQo+IMKgfQ0K PiDCoA0KPiAtI2RlZmluZSBQUklOVF9GSUVMRCh4KcKgIChvdXRwdXRbb3V0cHV0X3R5cGUoYXR0 ci0+dHlwZSldLmZpZWxkcyAmDQo+IFBFUkZfT1VUUFVUXyMjeCkNCj4gKyNkZWZpbmUgUFJJTlRf RklFTEQoeCnCoCAob3V0cHV0W2V2c2VsX19vdXRwdXRfdHlwZShldnNlbCldLmZpZWxkcyAmDQo+ IFBFUkZfT1VUUFVUXyMjeCkNCj4gwqANCj4gwqBzdGF0aWMgaW50IGV2c2VsX19kb19jaGVja19z dHlwZShzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQNCj4gc2FtcGxlX3R5cGUsIGNvbnN0IGNoYXIg KnNhbXBsZV9tc2csDQo+IMKgCQkJCSBlbnVtIHBlcmZfb3V0cHV0X2ZpZWxkIGZpZWxkLCBib29s DQo+IGFsbG93X3VzZXJfc2V0KQ0KPiDCoHsNCj4gwqAJc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAq YXR0ciA9ICZldnNlbC0+Y29yZS5hdHRyOw0KPiAtCWludCB0eXBlID0gb3V0cHV0X3R5cGUoYXR0 ci0+dHlwZSk7DQo+ICsJaW50IHR5cGUgPSBldnNlbF9fb3V0cHV0X3R5cGUoZXZzZWwpOw0KPiDC oAljb25zdCBjaGFyICpldm5hbWU7DQo+IMKgDQo+IMKgCWlmIChhdHRyLT5zYW1wbGVfdHlwZSAm IHNhbXBsZV90eXBlKQ0KPiBAQCAtNDU4LDcgKzQ3MCw2IEBAIHN0YXRpYyBpbnQgZXZzZWxfX2No ZWNrX3N0eXBlKHN0cnVjdCBldnNlbA0KPiAqZXZzZWwsIHU2NCBzYW1wbGVfdHlwZSwgY29uc3Qg Y2hhciAqDQo+IMKgDQo+IMKgc3RhdGljIGludCBldnNlbF9fY2hlY2tfYXR0cihzdHJ1Y3QgZXZz ZWwgKmV2c2VsLCBzdHJ1Y3QNCj4gcGVyZl9zZXNzaW9uICpzZXNzaW9uKQ0KPiDCoHsNCj4gLQlz dHJ1Y3QgcGVyZl9ldmVudF9hdHRyICphdHRyID0gJmV2c2VsLT5jb3JlLmF0dHI7DQo+IMKgCWJv b2wgYWxsb3dfdXNlcl9zZXQ7DQo+IMKgDQo+IMKgCWlmIChldnNlbF9faXNfZHVtbXlfZXZlbnQo ZXZzZWwpKQ0KPiBAQCAtNTc1LDkgKzU4Niw5IEBAIHN0YXRpYyBpbnQgZXZzZWxfX2NoZWNrX2F0 dHIoc3RydWN0IGV2c2VsICpldnNlbCwNCj4gc3RydWN0IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbikN Cj4gwqAJcmV0dXJuIDA7DQo+IMKgfQ0KPiDCoA0KPiAtc3RhdGljIHZvaWQgc2V0X3ByaW50X2lw X29wdHMoc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAqYXR0cikNCj4gK3N0YXRpYyB2b2lkIGV2c2Vs X19zZXRfcHJpbnRfaXBfb3B0cyhzdHJ1Y3QgZXZzZWwgKmV2c2VsKQ0KPiDCoHsNCj4gLQl1bnNp Z25lZCBpbnQgdHlwZSA9IG91dHB1dF90eXBlKGF0dHItPnR5cGUpOw0KPiArCXVuc2lnbmVkIGlu dCB0eXBlID0gZXZzZWxfX291dHB1dF90eXBlKGV2c2VsKTsNCj4gwqANCj4gwqAJb3V0cHV0W3R5 cGVdLnByaW50X2lwX29wdHMgPSAwOw0KPiDCoAlpZiAoUFJJTlRfRklFTEQoSVApKQ0KPiBAQCAt NjA3LDcgKzYxOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZXZzZWwNCj4gKmZpbmRfZmlyc3Rfb3V0cHV0 X3R5cGUoc3RydWN0IGV2bGlzdCAqZXZsaXN0LA0KPiDCoAlldmxpc3RfX2Zvcl9lYWNoX2VudHJ5 KGV2bGlzdCwgZXZzZWwpIHsNCj4gwqAJCWlmIChldnNlbF9faXNfZHVtbXlfZXZlbnQoZXZzZWwp KQ0KPiDCoAkJCWNvbnRpbnVlOw0KPiAtCQlpZiAob3V0cHV0X3R5cGUoZXZzZWwtPmNvcmUuYXR0 ci50eXBlKSA9PSAoaW50KXR5cGUpDQo+ICsJCWlmIChldnNlbF9fb3V0cHV0X3R5cGUoZXZzZWwp ID09IChpbnQpdHlwZSkNCj4gwqAJCQlyZXR1cm4gZXZzZWw7DQo+IMKgCX0NCj4gwqAJcmV0dXJu IE5VTEw7DQo+IEBAIC02NDksNyArNjYwLDcgQEAgc3RhdGljIGludCBwZXJmX3Nlc3Npb25fX2No ZWNrX291dHB1dF9vcHQoc3RydWN0DQo+IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbikNCj4gwqAJCWlm IChvdXRwdXRbal0uZmllbGRzICYgUEVSRl9PVVRQVVRfRFNPRkYpDQo+IMKgCQkJb3V0cHV0W2pd LmZpZWxkcyB8PSBQRVJGX09VVFBVVF9EU087DQo+IMKgDQo+IC0JCXNldF9wcmludF9pcF9vcHRz KCZldnNlbC0+Y29yZS5hdHRyKTsNCj4gKwkJZXZzZWxfX3NldF9wcmludF9pcF9vcHRzKGV2c2Vs KTsNCj4gwqAJCXRvZCB8PSBvdXRwdXRbal0uZmllbGRzICYgUEVSRl9PVVRQVVRfVE9EOw0KPiDC oAl9DQo+IMKgDQo+IEBAIC02ODUsNyArNjk2LDcgQEAgc3RhdGljIGludCBwZXJmX3Nlc3Npb25f X2NoZWNrX291dHB1dF9vcHQoc3RydWN0DQo+IHBlcmZfc2Vzc2lvbiAqc2Vzc2lvbikNCj4gwqAJ CQkJb3V0cHV0W2pdLmZpZWxkcyB8PSBQRVJGX09VVFBVVF9TWU07DQo+IMKgCQkJCW91dHB1dFtq XS5maWVsZHMgfD0NCj4gUEVSRl9PVVRQVVRfU1lNT0ZGU0VUOw0KPiDCoAkJCQlvdXRwdXRbal0u ZmllbGRzIHw9IFBFUkZfT1VUUFVUX0RTTzsNCj4gLQkJCQlzZXRfcHJpbnRfaXBfb3B0cygmZXZz ZWwtDQo+ID5jb3JlLmF0dHIpOw0KPiArCQkJCWV2c2VsX19zZXRfcHJpbnRfaXBfb3B0cyhldnNl bCk7DQo+IMKgCQkJCWdvdG8gb3V0Ow0KPiDCoAkJCX0NCj4gwqAJCX0NCj4gQEAgLTc4OSw3ICs4 MDAsNiBAQCBzdGF0aWMgaW50IHBlcmZfc2FtcGxlX19mcHJpbnRmX3N0YXJ0KHN0cnVjdA0KPiBw ZXJmX3NjcmlwdCAqc2NyaXB0LA0KPiDCoAkJCQnCoMKgwqDCoMKgIHN0cnVjdCBldnNlbCAqZXZz ZWwsDQo+IMKgCQkJCcKgwqDCoMKgwqAgdTMyIHR5cGUsIEZJTEUgKmZwKQ0KPiDCoHsNCj4gLQlz dHJ1Y3QgcGVyZl9ldmVudF9hdHRyICphdHRyID0gJmV2c2VsLT5jb3JlLmF0dHI7DQo+IMKgCXVu c2lnbmVkIGxvbmcgc2VjczsNCj4gwqAJdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzOw0KPiDCoAlp bnQgcHJpbnRlZCA9IDA7DQo+IEBAIC05NDEsNyArOTUxLDcgQEAgc3RhdGljIGludCBwcmludF9i c3RhY2tfZmxhZ3MoRklMRSAqZnAsIHN0cnVjdA0KPiBicmFuY2hfZW50cnkgKmJyKQ0KPiDCoA0K PiDCoHN0YXRpYyBpbnQgcGVyZl9zYW1wbGVfX2ZwcmludGZfYnJzdGFjayhzdHJ1Y3QgcGVyZl9z YW1wbGUgKnNhbXBsZSwNCj4gwqAJCQkJCXN0cnVjdCB0aHJlYWQgKnRocmVhZCwNCj4gLQkJCQkJ c3RydWN0IHBlcmZfZXZlbnRfYXR0cg0KPiAqYXR0ciwgRklMRSAqZnApDQo+ICsJCQkJCXN0cnVj dCBldnNlbCAqZXZzZWwsIEZJTEUNCj4gKmZwKQ0KPiDCoHsNCj4gwqAJc3RydWN0IGJyYW5jaF9z dGFjayAqYnIgPSBzYW1wbGUtPmJyYW5jaF9zdGFjazsNCj4gwqAJc3RydWN0IGJyYW5jaF9lbnRy eSAqZW50cmllcyA9DQo+IHBlcmZfc2FtcGxlX19icmFuY2hfZW50cmllcyhzYW1wbGUpOw0KPiBA QCAtOTgwLDcgKzk5MCw3IEBAIHN0YXRpYyBpbnQgcGVyZl9zYW1wbGVfX2ZwcmludGZfYnJzdGFj ayhzdHJ1Y3QNCj4gcGVyZl9zYW1wbGUgKnNhbXBsZSwNCj4gwqANCj4gwqBzdGF0aWMgaW50IHBl cmZfc2FtcGxlX19mcHJpbnRmX2Jyc3RhY2tzeW0oc3RydWN0IHBlcmZfc2FtcGxlDQo+ICpzYW1w bGUsDQo+IMKgCQkJCQnCoMKgIHN0cnVjdCB0aHJlYWQgKnRocmVhZCwNCj4gLQkJCQkJwqDCoCBz dHJ1Y3QgcGVyZl9ldmVudF9hdHRyDQo+ICphdHRyLCBGSUxFICpmcCkNCj4gKwkJCQkJwqDCoCBz dHJ1Y3QgZXZzZWwgKmV2c2VsLCBGSUxFDQo+ICpmcCkNCj4gwqB7DQo+IMKgCXN0cnVjdCBicmFu Y2hfc3RhY2sgKmJyID0gc2FtcGxlLT5icmFuY2hfc3RhY2s7DQo+IMKgCXN0cnVjdCBicmFuY2hf ZW50cnkgKmVudHJpZXMgPQ0KPiBwZXJmX3NhbXBsZV9fYnJhbmNoX2VudHJpZXMoc2FtcGxlKTsN Cj4gQEAgLTEwMTgsNyArMTAyOCw3IEBAIHN0YXRpYyBpbnQNCj4gcGVyZl9zYW1wbGVfX2Zwcmlu dGZfYnJzdGFja3N5bShzdHJ1Y3QgcGVyZl9zYW1wbGUgKnNhbXBsZSwNCj4gwqANCj4gwqBzdGF0 aWMgaW50IHBlcmZfc2FtcGxlX19mcHJpbnRmX2Jyc3RhY2tvZmYoc3RydWN0IHBlcmZfc2FtcGxl DQo+ICpzYW1wbGUsDQo+IMKgCQkJCQnCoMKgIHN0cnVjdCB0aHJlYWQgKnRocmVhZCwNCj4gLQkJ CQkJwqDCoCBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyDQo+ICphdHRyLCBGSUxFICpmcCkNCj4gKwkJ CQkJwqDCoCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCBGSUxFDQo+ICpmcCkNCj4gwqB7DQo+IMKgCXN0 cnVjdCBicmFuY2hfc3RhY2sgKmJyID0gc2FtcGxlLT5icmFuY2hfc3RhY2s7DQo+IMKgCXN0cnVj dCBicmFuY2hfZW50cnkgKmVudHJpZXMgPQ0KPiBwZXJmX3NhbXBsZV9fYnJhbmNoX2VudHJpZXMo c2FtcGxlKTsNCj4gQEAgLTExODUsNyArMTE5NSw3IEBAIHN0YXRpYyBpbnQgcHJpbnRfc3JjY29k ZShzdHJ1Y3QgdGhyZWFkICp0aHJlYWQsDQo+IHU4IGNwdW1vZGUsIHVpbnQ2NF90IGFkZHIpDQo+ IMKgCXJldHVybiByZXQ7DQo+IMKgfQ0KPiDCoA0KPiAtc3RhdGljIGludCBhbnlfZHVtcF9pbnNu KHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmF0dHINCj4gX19tYXliZV91bnVzZWQsDQo+ICtzdGF0 aWMgaW50IGFueV9kdW1wX2luc24oc3RydWN0IGV2c2VsICpldnNlbCBfX21heWJlX3VudXNlZCwN Cj4gwqAJCQkgc3RydWN0IHBlcmZfaW5zbiAqeCwgdWludDY0X3QgaXAsDQo+IMKgCQkJIHU4ICpp bmJ1ZiwgaW50IGlubGVuLCBpbnQgKmxlbnAsDQo+IMKgCQkJIEZJTEUgKmZwKQ0KPiBAQCAtMTIx MywxNSArMTIyMywxNCBAQCBzdGF0aWMgaW50IGFkZF9wYWRkaW5nKEZJTEUgKmZwLCBpbnQgcHJp bnRlZCwNCj4gaW50IHBhZGRpbmcpDQo+IMKgc3RhdGljIGludCBpcF9fZnByaW50Zl9qdW1wKHVp bnQ2NF90IGlwLCBzdHJ1Y3QgYnJhbmNoX2VudHJ5ICplbiwNCj4gwqAJCQnCoMKgwqAgc3RydWN0 IHBlcmZfaW5zbiAqeCwgdTggKmluYnVmLCBpbnQgbGVuLA0KPiDCoAkJCcKgwqDCoCBpbnQgaW5z biwgRklMRSAqZnAsIGludCAqdG90YWxfY3ljbGVzLA0KPiAtCQkJwqDCoMKgIHN0cnVjdCBwZXJm X2V2ZW50X2F0dHIgKmF0dHIsDQo+IC0JCQnCoMKgwqAgc3RydWN0IHRocmVhZCAqdGhyZWFkLA0K PiDCoAkJCcKgwqDCoCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLA0KPiArCQkJwqDCoMKgIHN0cnVjdCB0 aHJlYWQgKnRocmVhZCwNCj4gwqAJCQnCoMKgwqAgdTY0IGJyX2NudHIpDQo+IMKgew0KPiDCoAlp bnQgaWxlbiA9IDA7DQo+IMKgCWludCBwcmludGVkID0gZnByaW50ZihmcCwgIlx0JTAxNiIgUFJJ eDY0ICJcdCIsIGlwKTsNCj4gwqANCj4gLQlwcmludGVkICs9IGFkZF9wYWRkaW5nKGZwLCBhbnlf ZHVtcF9pbnNuKGF0dHIsIHgsIGlwLCBpbmJ1ZiwNCj4gbGVuLCAmaWxlbiwgZnApLCAzMCk7DQo+ ICsJcHJpbnRlZCArPSBhZGRfcGFkZGluZyhmcCwgYW55X2R1bXBfaW5zbihldnNlbCwgeCwgaXAs DQo+IGluYnVmLCBsZW4sICZpbGVuLCBmcCksIDMwKTsNCj4gwqAJcHJpbnRlZCArPSBmcHJpbnRm KGZwLCAiXHQiKTsNCj4gwqANCj4gwqAJaWYgKFBSSU5UX0ZJRUxEKEJSU1RBQ0tJTlNOTEVOKSkN Cj4gQEAgLTEyNzcsNyArMTI4Niw3IEBAIHN0YXRpYyBpbnQgaXBfX2ZwcmludGZfanVtcCh1aW50 NjRfdCBpcCwgc3RydWN0DQo+IGJyYW5jaF9lbnRyeSAqZW4sDQo+IMKgDQo+IMKgc3RhdGljIGlu dCBpcF9fZnByaW50Zl9zeW0odWludDY0X3QgYWRkciwgc3RydWN0IHRocmVhZCAqdGhyZWFkLA0K PiDCoAkJCcKgwqAgdTggY3B1bW9kZSwgaW50IGNwdSwgc3RydWN0IHN5bWJvbA0KPiAqKmxhc3Rz eW0sDQo+IC0JCQnCoMKgIHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmF0dHIsIEZJTEUgKmZwKQ0K PiArCQkJwqDCoCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCBGSUxFICpmcCkNCj4gwqB7DQo+IMKgCXN0 cnVjdCBhZGRyX2xvY2F0aW9uIGFsOw0KPiDCoAlpbnQgb2ZmLCBwcmludGVkID0gMCwgcmV0ID0g MDsNCj4gQEAgLTEzNTMsMTAgKzEzNjIsMTAgQEAgc3RhdGljIGludA0KPiBwZXJmX3NhbXBsZV9f ZnByaW50Zl9icnN0YWNraW5zbihzdHJ1Y3QgcGVyZl9zYW1wbGUgKnNhbXBsZSwNCj4gwqAJCQlt YWNoaW5lLCB0aHJlYWQsICZ4LmlzNjRiaXQsICZ4LmNwdW1vZGUsDQo+IGZhbHNlKTsNCj4gwqAJ aWYgKGxlbiA+IDApIHsNCj4gwqAJCXByaW50ZWQgKz0gaXBfX2ZwcmludGZfc3ltKGVudHJpZXNb bnIgLSAxXS5mcm9tLA0KPiB0aHJlYWQsDQo+IC0JCQkJCcKgwqAgeC5jcHVtb2RlLCB4LmNwdSwN Cj4gJmxhc3RzeW0sIGF0dHIsIGZwKTsNCj4gKwkJCQkJwqDCoCB4LmNwdW1vZGUsIHguY3B1LA0K PiAmbGFzdHN5bSwgZXZzZWwsIGZwKTsNCj4gwqAJCXByaW50ZWQgKz0gaXBfX2ZwcmludGZfanVt cChlbnRyaWVzW25yIC0gMV0uZnJvbSwNCj4gJmVudHJpZXNbbnIgLSAxXSwNCj4gwqAJCQkJCcKg wqDCoCAmeCwgYnVmZmVyLCBsZW4sIDAsIGZwLA0KPiAmdG90YWxfY3ljbGVzLA0KPiAtCQkJCQnC oMKgwqAgYXR0ciwgdGhyZWFkLCBldnNlbCwNCj4gYnJfY250cik7DQo+ICsJCQkJCcKgwqDCoCBl dnNlbCwgdGhyZWFkLCBicl9jbnRyKTsNCj4gwqAJCWlmIChQUklOVF9GSUVMRChTUkNDT0RFKSkN Cj4gwqAJCQlwcmludGVkICs9IHByaW50X3NyY2NvZGUodGhyZWFkLCB4LmNwdW1vZGUsDQo+IGVu dHJpZXNbbnIgLSAxXS5mcm9tKTsNCj4gwqAJfQ0KPiBAQCAtMTM4NCwxOSArMTM5MywxOSBAQCBz dGF0aWMgaW50DQo+IHBlcmZfc2FtcGxlX19mcHJpbnRmX2Jyc3RhY2tpbnNuKHN0cnVjdCBwZXJm X3NhbXBsZSAqc2FtcGxlLA0KPiDCoAkJZm9yIChvZmYgPSAwOyBvZmYgPCAodW5zaWduZWQpbGVu OyBvZmYgKz0gaWxlbikgew0KPiDCoAkJCXVpbnQ2NF90IGlwID0gc3RhcnQgKyBvZmY7DQo+IMKg DQo+IC0JCQlwcmludGVkICs9IGlwX19mcHJpbnRmX3N5bShpcCwgdGhyZWFkLA0KPiB4LmNwdW1v ZGUsIHguY3B1LCAmbGFzdHN5bSwgYXR0ciwgZnApOw0KPiArCQkJcHJpbnRlZCArPSBpcF9fZnBy aW50Zl9zeW0oaXAsIHRocmVhZCwNCj4geC5jcHVtb2RlLCB4LmNwdSwgJmxhc3RzeW0sIGV2c2Vs LCBmcCk7DQo+IMKgCQkJaWYgKGlwID09IGVuZCkgew0KPiDCoAkJCQlpZiAoUFJJTlRfRklFTEQo QlJDTlRSKSAmJiBzYW1wbGUtDQo+ID5icmFuY2hfc3RhY2tfY250cikNCj4gwqAJCQkJCWJyX2Nu dHIgPSBzYW1wbGUtDQo+ID5icmFuY2hfc3RhY2tfY250cltpXTsNCj4gwqAJCQkJcHJpbnRlZCAr PSBpcF9fZnByaW50Zl9qdW1wKGlwLA0KPiAmZW50cmllc1tpXSwgJngsIGJ1ZmZlciArIG9mZiwg bGVuIC0gb2ZmLCArK2luc24sIGZwLA0KPiAtCQkJCQkJCcKgwqDCoA0KPiAmdG90YWxfY3ljbGVz LCBhdHRyLCB0aHJlYWQsIGV2c2VsLCBicl9jbnRyKTsNCj4gKwkJCQkJCQnCoMKgwqANCj4gJnRv dGFsX2N5Y2xlcywgZXZzZWwsIHRocmVhZCwgYnJfY250cik7DQo+IMKgCQkJCWlmIChQUklOVF9G SUVMRChTUkNDT0RFKSkNCj4gwqAJCQkJCXByaW50ZWQgKz0NCj4gcHJpbnRfc3JjY29kZSh0aHJl YWQsIHguY3B1bW9kZSwgaXApOw0KPiDCoAkJCQlicmVhazsNCj4gwqAJCQl9IGVsc2Ugew0KPiDC oAkJCQlpbGVuID0gMDsNCj4gwqAJCQkJcHJpbnRlZCArPSBmcHJpbnRmKGZwLCAiXHQlMDE2Ig0K PiBQUkl4NjQgIlx0IiwgaXApOw0KPiAtCQkJCXByaW50ZWQgKz0gYW55X2R1bXBfaW5zbihhdHRy LCAmeCwNCj4gaXAsIGJ1ZmZlciArIG9mZiwgbGVuIC0gb2ZmLCAmaWxlbiwgZnApOw0KPiArCQkJ CXByaW50ZWQgKz0gYW55X2R1bXBfaW5zbihldnNlbCwgJngsDQo+IGlwLCBidWZmZXIgKyBvZmYs IGxlbiAtIG9mZiwgJmlsZW4sIGZwKTsNCj4gwqAJCQkJaWYgKFBSSU5UX0ZJRUxEKEJSU1RBQ0tJ TlNOTEVOKSkNCj4gwqAJCQkJCXByaW50ZWQgKz0gZnByaW50ZihmcCwNCj4gIlx0aWxlbjogJWQi LCBpbGVuKTsNCj4gwqAJCQkJcHJpbnRlZCArPSBmcHJpbnRmKGZwLCAiXG4iKTsNCj4gQEAgLTE0 MzUsNyArMTQ0NCw3IEBAIHN0YXRpYyBpbnQNCj4gcGVyZl9zYW1wbGVfX2ZwcmludGZfYnJzdGFj a2luc24oc3RydWN0IHBlcmZfc2FtcGxlICpzYW1wbGUsDQo+IMKgCQllbmQgPSBzdGFydCArIDEy ODsNCj4gwqAJfQ0KPiDCoAlsZW4gPSBncmFiX2JiKGJ1ZmZlciwgc3RhcnQsIGVuZCwgbWFjaGlu ZSwgdGhyZWFkLA0KPiAmeC5pczY0Yml0LCAmeC5jcHVtb2RlLCB0cnVlKTsNCj4gLQlwcmludGVk ICs9IGlwX19mcHJpbnRmX3N5bShzdGFydCwgdGhyZWFkLCB4LmNwdW1vZGUsIHguY3B1LA0KPiAm bGFzdHN5bSwgYXR0ciwgZnApOw0KPiArCXByaW50ZWQgKz0gaXBfX2ZwcmludGZfc3ltKHN0YXJ0 LCB0aHJlYWQsIHguY3B1bW9kZSwgeC5jcHUsDQo+ICZsYXN0c3ltLCBldnNlbCwgZnApOw0KPiDC oAlpZiAobGVuIDw9IDApIHsNCj4gwqAJCS8qIFByaW50IGF0IGxlYXN0IGxhc3QgSVAgaWYgYmFz aWMgYmxvY2sgZGlkIG5vdA0KPiB3b3JrICovDQo+IMKgCQlsZW4gPSBncmFiX2JiKGJ1ZmZlciwg c2FtcGxlLT5pcCwgc2FtcGxlLT5pcCwNCj4gQEAgLTE0NDQsNyArMTQ1Myw3IEBAIHN0YXRpYyBp bnQNCj4gcGVyZl9zYW1wbGVfX2ZwcmludGZfYnJzdGFja2luc24oc3RydWN0IHBlcmZfc2FtcGxl ICpzYW1wbGUsDQo+IMKgCQkJZ290byBvdXQ7DQo+IMKgCQlpbGVuID0gMDsNCj4gwqAJCXByaW50 ZWQgKz0gZnByaW50ZihmcCwgIlx0JTAxNiIgUFJJeDY0ICJcdCIsIHNhbXBsZS0NCj4gPmlwKTsN Cj4gLQkJcHJpbnRlZCArPSBhbnlfZHVtcF9pbnNuKGF0dHIsICZ4LCBzYW1wbGUtPmlwLA0KPiBi dWZmZXIsIGxlbiwgJmlsZW4sIGZwKTsNCj4gKwkJcHJpbnRlZCArPSBhbnlfZHVtcF9pbnNuKGV2 c2VsLCAmeCwgc2FtcGxlLT5pcCwNCj4gYnVmZmVyLCBsZW4sICZpbGVuLCBmcCk7DQo+IMKgCQlp ZiAoUFJJTlRfRklFTEQoQlJTVEFDS0lOU05MRU4pKQ0KPiDCoAkJCXByaW50ZWQgKz0gZnByaW50 ZihmcCwgIlx0aWxlbjogJWQiLCBpbGVuKTsNCj4gwqAJCXByaW50ZWQgKz0gZnByaW50ZihmcCwg IlxuIik7DQo+IEBAIC0xNDU1LDcgKzE0NjQsNyBAQCBzdGF0aWMgaW50DQo+IHBlcmZfc2FtcGxl X19mcHJpbnRmX2Jyc3RhY2tpbnNuKHN0cnVjdCBwZXJmX3NhbXBsZSAqc2FtcGxlLA0KPiDCoAlm b3IgKG9mZiA9IDA7IG9mZiA8PSBlbmQgLSBzdGFydDsgb2ZmICs9IGlsZW4pIHsNCj4gwqAJCWls ZW4gPSAwOw0KPiDCoAkJcHJpbnRlZCArPSBmcHJpbnRmKGZwLCAiXHQlMDE2IiBQUkl4NjQgIlx0 Iiwgc3RhcnQgKw0KPiBvZmYpOw0KPiAtCQlwcmludGVkICs9IGFueV9kdW1wX2luc24oYXR0ciwg JngsIHN0YXJ0ICsgb2ZmLA0KPiBidWZmZXIgKyBvZmYsIGxlbiAtIG9mZiwgJmlsZW4sIGZwKTsN Cj4gKwkJcHJpbnRlZCArPSBhbnlfZHVtcF9pbnNuKGV2c2VsLCAmeCwgc3RhcnQgKyBvZmYsDQo+ IGJ1ZmZlciArIG9mZiwgbGVuIC0gb2ZmLCAmaWxlbiwgZnApOw0KPiDCoAkJaWYgKFBSSU5UX0ZJ RUxEKEJSU1RBQ0tJTlNOTEVOKSkNCj4gwqAJCQlwcmludGVkICs9IGZwcmludGYoZnAsICJcdGls ZW46ICVkIiwgaWxlbik7DQo+IMKgCQlwcmludGVkICs9IGZwcmludGYoZnAsICJcbiIpOw0KPiBA QCAtMTQ3OSwxMyArMTQ4OCwxMyBAQCBzdGF0aWMgaW50DQo+IHBlcmZfc2FtcGxlX19mcHJpbnRm X2Jyc3RhY2tpbnNuKHN0cnVjdCBwZXJmX3NhbXBsZSAqc2FtcGxlLA0KPiDCoA0KPiDCoHN0YXRp YyBpbnQgcGVyZl9zYW1wbGVfX2ZwcmludGZfYWRkcihzdHJ1Y3QgcGVyZl9zYW1wbGUgKnNhbXBs ZSwNCj4gwqAJCQkJwqDCoMKgwqAgc3RydWN0IHRocmVhZCAqdGhyZWFkLA0KPiAtCQkJCcKgwqDC oMKgIHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmF0dHIsDQo+IEZJTEUgKmZwKQ0KPiArCQkJCcKg wqDCoMKgIHN0cnVjdCBldnNlbCAqZXZzZWwsIEZJTEUgKmZwKQ0KPiDCoHsNCj4gwqAJc3RydWN0 IGFkZHJfbG9jYXRpb24gYWw7DQo+IMKgCWludCBwcmludGVkID0gZnByaW50ZihmcCwgIiUxNiIg UFJJeDY0LCBzYW1wbGUtPmFkZHIpOw0KPiDCoA0KPiDCoAlhZGRyX2xvY2F0aW9uX19pbml0KCZh bCk7DQo+IC0JaWYgKCFzYW1wbGVfYWRkcl9jb3JyZWxhdGVzX3N5bShhdHRyKSkNCj4gKwlpZiAo IXNhbXBsZV9hZGRyX2NvcnJlbGF0ZXNfc3ltKCZldnNlbC0+Y29yZS5hdHRyKSkNCj4gwqAJCWdv dG8gb3V0Ow0KPiDCoA0KPiDCoAl0aHJlYWRfX3Jlc29sdmUodGhyZWFkLCAmYWwsIHNhbXBsZSk7 DQo+IEBAIC0xNTEyLDExICsxNTIxLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpyZXNvbHZlX2Jy YW5jaF9zeW0oc3RydWN0DQo+IHBlcmZfc2FtcGxlICpzYW1wbGUsDQo+IMKgCQkJCcKgwqDCoMKg wqAgc3RydWN0IGFkZHJfbG9jYXRpb24gKmFkZHJfYWwsDQo+IMKgCQkJCcKgwqDCoMKgwqAgdTY0 ICppcCkNCj4gwqB7DQo+IC0Jc3RydWN0IHBlcmZfZXZlbnRfYXR0ciAqYXR0ciA9ICZldnNlbC0+ Y29yZS5hdHRyOw0KPiDCoAljb25zdCBjaGFyICpuYW1lID0gTlVMTDsNCj4gwqANCj4gwqAJaWYg KHNhbXBsZS0+ZmxhZ3MgJiAoUEVSRl9JUF9GTEFHX0NBTEwgfA0KPiBQRVJGX0lQX0ZMQUdfVFJB Q0VfQkVHSU4pKSB7DQo+IC0JCWlmIChzYW1wbGVfYWRkcl9jb3JyZWxhdGVzX3N5bShhdHRyKSkg ew0KPiArCQlpZiAoc2FtcGxlX2FkZHJfY29ycmVsYXRlc19zeW0oJmV2c2VsLT5jb3JlLmF0dHIp KSB7DQo+IMKgCQkJaWYgKCFhZGRyX2FsLT50aHJlYWQpDQo+IMKgCQkJCXRocmVhZF9fcmVzb2x2 ZSh0aHJlYWQsIGFkZHJfYWwsDQo+IHNhbXBsZSk7DQo+IMKgCQkJaWYgKGFkZHJfYWwtPnN5bSkN Cj4gQEAgLTE1NDIsNyArMTU1MCw2IEBAIHN0YXRpYyBpbnQNCj4gcGVyZl9zYW1wbGVfX2Zwcmlu dGZfY2FsbGluZGVudChzdHJ1Y3QgcGVyZl9zYW1wbGUgKnNhbXBsZSwNCj4gwqAJCQkJCcKgwqAg c3RydWN0IGFkZHJfbG9jYXRpb24NCj4gKmFkZHJfYWwsDQo+IMKgCQkJCQnCoMKgIEZJTEUgKmZw KQ0KPiDCoHsNCj4gLQlzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyICphdHRyID0gJmV2c2VsLT5jb3Jl LmF0dHI7DQo+IMKgCXNpemVfdCBkZXB0aCA9IHRocmVhZF9zdGFja19fZGVwdGgodGhyZWFkLCBz YW1wbGUtPmNwdSk7DQo+IMKgCWNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOw0KPiDCoAlzdGF0aWMg aW50IHNwYWNpbmc7DQo+IEBAIC0xNjE0LDcgKzE2MjEsNyBAQCBzdGF0aWMgaW50IHBlcmZfc2Ft cGxlX19mcHJpbnRmX2luc24oc3RydWN0DQo+IHBlcmZfc2FtcGxlICpzYW1wbGUsDQo+IMKgfQ0K PiDCoA0KPiDCoHN0YXRpYyBpbnQgcGVyZl9zYW1wbGVfX2ZwcmludGZfaXBjKHN0cnVjdCBwZXJm X3NhbXBsZSAqc2FtcGxlLA0KPiAtCQkJCcKgwqDCoCBzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyICph dHRyLA0KPiBGSUxFICpmcCkNCj4gKwkJCQnCoMKgwqAgc3RydWN0IGV2c2VsICpldnNlbCwgRklM RSAqZnApDQo+IMKgew0KPiDCoAl1bnNpZ25lZCBpbnQgaXBjOw0KPiDCoA0KPiBAQCAtMTYzNSw3 ICsxNjQyLDcgQEAgc3RhdGljIGludCBwZXJmX3NhbXBsZV9fZnByaW50Zl9idHMoc3RydWN0DQo+ IHBlcmZfc2FtcGxlICpzYW1wbGUsDQo+IMKgCQkJCcKgwqDCoCBzdHJ1Y3QgbWFjaGluZSAqbWFj aGluZSwgRklMRQ0KPiAqZnApDQo+IMKgew0KPiDCoAlzdHJ1Y3QgcGVyZl9ldmVudF9hdHRyICph dHRyID0gJmV2c2VsLT5jb3JlLmF0dHI7DQo+IC0JdW5zaWduZWQgaW50IHR5cGUgPSBvdXRwdXRf dHlwZShhdHRyLT50eXBlKTsNCj4gKwl1bnNpZ25lZCBpbnQgdHlwZSA9IGV2c2VsX19vdXRwdXRf dHlwZShldnNlbCk7DQo+IMKgCWJvb2wgcHJpbnRfc3JjbGluZV9sYXN0ID0gZmFsc2U7DQo+IMKg CWludCBwcmludGVkID0gMDsNCj4gwqANCj4gQEAgLTE2NzIsMTAgKzE2NzksMTAgQEAgc3RhdGlj IGludCBwZXJmX3NhbXBsZV9fZnByaW50Zl9idHMoc3RydWN0DQo+IHBlcmZfc2FtcGxlICpzYW1w bGUsDQo+IMKgCcKgwqDCoCAoKGV2c2VsLT5jb3JlLmF0dHIuc2FtcGxlX3R5cGUgJiBQRVJGX1NB TVBMRV9BRERSKSAmJg0KPiDCoAnCoMKgwqDCoCAhb3V0cHV0W3R5cGVdLnVzZXJfc2V0KSkgew0K PiDCoAkJcHJpbnRlZCArPSBmcHJpbnRmKGZwLCAiID0+ICIpOw0KPiAtCQlwcmludGVkICs9IHBl cmZfc2FtcGxlX19mcHJpbnRmX2FkZHIoc2FtcGxlLCB0aHJlYWQsDQo+IGF0dHIsIGZwKTsNCj4g KwkJcHJpbnRlZCArPSBwZXJmX3NhbXBsZV9fZnByaW50Zl9hZGRyKHNhbXBsZSwgdGhyZWFkLA0K PiBldnNlbCwgZnApOw0KPiDCoAl9DQo+IMKgDQo+IC0JcHJpbnRlZCArPSBwZXJmX3NhbXBsZV9f ZnByaW50Zl9pcGMoc2FtcGxlLCBhdHRyLCBmcCk7DQo+ICsJcHJpbnRlZCArPSBwZXJmX3NhbXBs ZV9fZnByaW50Zl9pcGMoc2FtcGxlLCBldnNlbCwgZnApOw0KPiDCoA0KPiDCoAlpZiAocHJpbnRf c3JjbGluZV9sYXN0KQ0KPiDCoAkJcHJpbnRlZCArPSBtYXBfX2ZwcmludGZfc3JjbGluZShhbC0+ bWFwLCBhbC0+YWRkciwNCj4gIlxuwqAgIiwgZnApOw0KPiBAQCAtMjE1Nyw3ICsyMTY0LDcgQEAg c3RhdGljIHZvaWQgcHJvY2Vzc19ldmVudChzdHJ1Y3QgcGVyZl9zY3JpcHQNCj4gKnNjcmlwdCwN Cj4gwqB7DQo+IMKgCXN0cnVjdCB0aHJlYWQgKnRocmVhZCA9IGFsLT50aHJlYWQ7DQo+IMKgCXN0 cnVjdCBwZXJmX2V2ZW50X2F0dHIgKmF0dHIgPSAmZXZzZWwtPmNvcmUuYXR0cjsNCj4gLQl1bnNp Z25lZCBpbnQgdHlwZSA9IG91dHB1dF90eXBlKGF0dHItPnR5cGUpOw0KPiArCXVuc2lnbmVkIGlu dCB0eXBlID0gZXZzZWxfX291dHB1dF90eXBlKGV2c2VsKTsNCj4gwqAJc3RydWN0IGV2c2VsX3Nj cmlwdCAqZXMgPSBldnNlbC0+cHJpdjsNCj4gwqAJRklMRSAqZnAgPSBlcy0+ZnA7DQo+IMKgCWNo YXIgc3RyW1BBR0VfU0laRV9OQU1FX0xFTl07DQo+IEBAIC0yMjA1LDcgKzIyMTIsNyBAQCBzdGF0 aWMgdm9pZCBwcm9jZXNzX2V2ZW50KHN0cnVjdCBwZXJmX3NjcmlwdA0KPiAqc2NyaXB0LA0KPiDC oAkJcGVyZl9zYW1wbGVfX2ZwcmludGZfc3ludGgoc2FtcGxlLCBldnNlbCwgZnApOw0KPiDCoA0K PiDCoAlpZiAoUFJJTlRfRklFTEQoQUREUikpDQo+IC0JCXBlcmZfc2FtcGxlX19mcHJpbnRmX2Fk ZHIoc2FtcGxlLCB0aHJlYWQsIGF0dHIsIGZwKTsNCj4gKwkJcGVyZl9zYW1wbGVfX2ZwcmludGZf YWRkcihzYW1wbGUsIHRocmVhZCwgZXZzZWwsDQo+IGZwKTsNCj4gwqANCj4gwqAJaWYgKFBSSU5U X0ZJRUxEKERBVEFfU1JDKSkNCj4gwqAJCWRhdGFfc3JjX19mcHJpbnRmKHNhbXBsZS0+ZGF0YV9z cmMsIGZwKTsNCj4gQEAgLTIyNTUsMTEgKzIyNjIsMTEgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19l dmVudChzdHJ1Y3QgcGVyZl9zY3JpcHQNCj4gKnNjcmlwdCwNCj4gwqAJCXBlcmZfc2FtcGxlX19m cHJpbnRmX3VyZWdzKHNhbXBsZSwgYXR0ciwgYXJjaCwgZnApOw0KPiDCoA0KPiDCoAlpZiAoUFJJ TlRfRklFTEQoQlJTVEFDSykpDQo+IC0JCXBlcmZfc2FtcGxlX19mcHJpbnRmX2Jyc3RhY2soc2Ft cGxlLCB0aHJlYWQsIGF0dHIsDQo+IGZwKTsNCj4gKwkJcGVyZl9zYW1wbGVfX2ZwcmludGZfYnJz dGFjayhzYW1wbGUsIHRocmVhZCwgZXZzZWwsDQo+IGZwKTsNCj4gwqAJZWxzZSBpZiAoUFJJTlRf RklFTEQoQlJTVEFDS1NZTSkpDQo+IC0JCXBlcmZfc2FtcGxlX19mcHJpbnRmX2Jyc3RhY2tzeW0o c2FtcGxlLCB0aHJlYWQsDQo+IGF0dHIsIGZwKTsNCj4gKwkJcGVyZl9zYW1wbGVfX2ZwcmludGZf YnJzdGFja3N5bShzYW1wbGUsIHRocmVhZCwNCj4gZXZzZWwsIGZwKTsNCj4gwqAJZWxzZSBpZiAo UFJJTlRfRklFTEQoQlJTVEFDS09GRikpDQo+IC0JCXBlcmZfc2FtcGxlX19mcHJpbnRmX2Jyc3Rh Y2tvZmYoc2FtcGxlLCB0aHJlYWQsDQo+IGF0dHIsIGZwKTsNCj4gKwkJcGVyZl9zYW1wbGVfX2Zw cmludGZfYnJzdGFja29mZihzYW1wbGUsIHRocmVhZCwNCj4gZXZzZWwsIGZwKTsNCj4gwqANCj4g wqAJaWYgKGV2c2VsX19pc19icGZfb3V0cHV0KGV2c2VsKSAmJiBQUklOVF9GSUVMRChCUEZfT1VU UFVUKSkNCj4gwqAJCXBlcmZfc2FtcGxlX19mcHJpbnRmX2JwZl9vdXRwdXQoc2FtcGxlLCBmcCk7 DQo+IEBAIC0yMjc0LDcgKzIyODEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2V2ZW50KHN0cnVj dCBwZXJmX3NjcmlwdA0KPiAqc2NyaXB0LA0KPiDCoAlpZiAoUFJJTlRfRklFTEQoQ09ERV9QQUdF X1NJWkUpKQ0KPiDCoAkJZnByaW50ZihmcCwgIiAlcyIsIGdldF9wYWdlX3NpemVfbmFtZShzYW1w bGUtDQo+ID5jb2RlX3BhZ2Vfc2l6ZSwgc3RyKSk7DQo+IMKgDQo+IC0JcGVyZl9zYW1wbGVfX2Zw cmludGZfaXBjKHNhbXBsZSwgYXR0ciwgZnApOw0KPiArCXBlcmZfc2FtcGxlX19mcHJpbnRmX2lw YyhzYW1wbGUsIGV2c2VsLCBmcCk7DQo+IMKgDQo+IMKgCWZwcmludGYoZnAsICJcbiIpOw0KPiDC oA0KPiBAQCAtMjUwNywxNCArMjUxNCwxNCBAQCBzdGF0aWMgaW50IHByb2Nlc3NfYXR0cihjb25z dCBzdHJ1Y3QNCj4gcGVyZl90b29sICp0b29sLCB1bmlvbiBwZXJmX2V2ZW50ICpldmVudCwNCj4g wqAJwqDCoMKgwqAgc2FtcGxlX3R5cGUgJiBQRVJGX1NBTVBMRV9CUkFOQ0hfU1RBQ0sgfHwNCj4g wqAJwqDCoMKgwqAgKHNhbXBsZV90eXBlICYgUEVSRl9TQU1QTEVfUkVHU19VU0VSICYmDQo+IMKg CcKgwqDCoMKgwqAgc2FtcGxlX3R5cGUgJiBQRVJGX1NBTVBMRV9TVEFDS19VU0VSKSkpIHsNCj4g LQkJaW50IHR5cGUgPSBvdXRwdXRfdHlwZShldnNlbC0+Y29yZS5hdHRyLnR5cGUpOw0KPiArCQlp bnQgdHlwZSA9IGV2c2VsX19vdXRwdXRfdHlwZShldnNlbCk7DQo+IMKgDQo+IMKgCQlpZiAoIShv dXRwdXRbdHlwZV0udXNlcl91bnNldF9maWVsZHMgJg0KPiBQRVJGX09VVFBVVF9JUCkpDQo+IMKg CQkJb3V0cHV0W3R5cGVdLmZpZWxkcyB8PSBQRVJGX09VVFBVVF9JUDsNCj4gwqAJCWlmICghKG91 dHB1dFt0eXBlXS51c2VyX3Vuc2V0X2ZpZWxkcyAmDQo+IFBFUkZfT1VUUFVUX1NZTSkpDQo+IMKg CQkJb3V0cHV0W3R5cGVdLmZpZWxkcyB8PSBQRVJGX09VVFBVVF9TWU07DQo+IMKgCX0NCj4gLQlz ZXRfcHJpbnRfaXBfb3B0cygmZXZzZWwtPmNvcmUuYXR0cik7DQo+ICsJZXZzZWxfX3NldF9wcmlu dF9pcF9vcHRzKGV2c2VsKTsNCj4gwqAJcmV0dXJuIDA7DQo+IMKgfQ0KPiDCoA0KPiBkaWZmIC0t Z2l0IGEvdG9vbHMvcGVyZi91dGlsL2V2c2VsLmMgYi90b29scy9wZXJmL3V0aWwvZXZzZWwuYw0K PiBpbmRleCA2YWU1ZDExMDk5NGEwMzIyLi42OTc0MjhlZmE2NDRhYTM2IDEwMDY0NA0KPiAtLS0g YS90b29scy9wZXJmL3V0aWwvZXZzZWwuYw0KPiArKysgYi90b29scy9wZXJmL3V0aWwvZXZzZWwu Yw0KPiBAQCAtMzk1LDYgKzM5NSw3IEBAIHZvaWQgZXZzZWxfX2luaXQoc3RydWN0IGV2c2VsICpl dnNlbCwNCj4gwqAJZXZzZWwtPmdyb3VwX3BtdV9uYW1lID0gTlVMTDsNCj4gwqAJZXZzZWwtPnNr aXBwYWJsZcKgwqDCoMKgID0gZmFsc2U7DQo+IMKgCWV2c2VsLT5hbHRlcm5hdGVfaHdfY29uZmln ID0gUEVSRl9DT1VOVF9IV19NQVg7DQo+ICsJZXZzZWwtPnNjcmlwdF9vdXRwdXRfdHlwZSA9IC0x OyAvLyBGSVhNRTogT1VUUFVUX1RZUEVfVU5TRVQsDQo+IHNlZSBidWlsdGluLXNjcmlwdC5jDQo+ IMKgfQ0KPiDCoA0KPiDCoHN0cnVjdCBldnNlbCAqZXZzZWxfX25ld19pZHgoc3RydWN0IHBlcmZf ZXZlbnRfYXR0ciAqYXR0ciwgaW50IGlkeCkNCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRp bC9ldnNlbC5oIGIvdG9vbHMvcGVyZi91dGlsL2V2c2VsLmgNCj4gaW5kZXggNWFkMzUyYzk0ZDAw ZjdiMi4uNWU3ODlmYTgwNTkwYjZmNCAxMDA2NDQNCj4gLS0tIGEvdG9vbHMvcGVyZi91dGlsL2V2 c2VsLmgNCj4gKysrIGIvdG9vbHMvcGVyZi91dGlsL2V2c2VsLmgNCj4gQEAgLTEyMSw2ICsxMjEs NyBAQCBzdHJ1Y3QgZXZzZWwgew0KPiDCoAlib29sCQkJZGVmYXVsdF9tZXRyaWNncm91cDsgLyog QSBtZW1iZXIgb2YNCj4gdGhlIERlZmF1bHQgbWV0cmljZ3JvdXAgKi8NCj4gwqAJc3RydWN0IGhh c2htYXAJCSpwZXJfcGtnX21hc2s7DQo+IMKgCWludAkJCWVycjsNCj4gKwlpbnQJCQlzY3JpcHRf b3V0cHV0X3R5cGU7DQo+IMKgCXN0cnVjdCB7DQo+IMKgCQlldnNlbF9fc2JfY2JfdAkqY2I7DQo+ IMKgCQl2b2lkCQkqZGF0YTsNCg0K