From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 42E47C27C4F for ; Thu, 13 Jun 2024 23:29:39 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B6E4910E13B; Thu, 13 Jun 2024 23:29:38 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="iLpWm4iy"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A8E710E13B for ; Thu, 13 Jun 2024 23:29:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1718321376; x=1749857376; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=RRM3mSiWRwJ0RIp+v/xSANMQTAsOC2LuqncIMtlumqw=; b=iLpWm4iycTc/QpZd3ZAG1GNb3/2i2goSk3lsKy4EZgLn2/Flk04Ksuky msXdUCFUeX6bsKH79niPKpHCWjshbCbkfXcYjS3io2StSNEIx6cvqb4kM OabLU0wnOnPR8fqFrxFPj7ZkCpdzbM0+jslVGb3I/r4vOQxqzMPuZwSo8 ypawqefLY67WZBWPqwF4l9cdHU+0BSsqTXWaQOpcBld103ZJqsTQttDpO Pk5v+Pwm46Jm0fXgMBoCYPzv22InR0KtCjbC8o10A6EUl96XrRT8ucmw6 ch80Y5QK/M5ios+UzeeTcQUEp2g+s04ljb3YpdCkh8lCNBNFplISw6l/O A==; X-CSE-ConnectionGUID: 3JUcU7FmTbuOTRFXgJm2+A== X-CSE-MsgGUID: AZV4VT8JR2698fQaIqMQdw== X-IronPort-AV: E=McAfee;i="6700,10204,11102"; a="26586815" X-IronPort-AV: E=Sophos;i="6.08,236,1712646000"; d="scan'208";a="26586815" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2024 16:29:35 -0700 X-CSE-ConnectionGUID: U0PcYfwBT02e6cY4uUeiGA== X-CSE-MsgGUID: 9DGTjEffT/yblN2GwE81aw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,236,1712646000"; d="scan'208";a="40810384" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orviesa006.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 13 Jun 2024 16:26:30 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) 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.39; Thu, 13 Jun 2024 16:26:29 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 13 Jun 2024 16:26:29 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Thu, 13 Jun 2024 16:26:29 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Thu, 13 Jun 2024 16:26:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HQ4Etn+gn2LcCU1ZEK9Qcp+V6Z9+Kb1/YPGdlPnkzxzfi67e7oS1+QGaeX/H5upRrn26UETuJgiB7bQHYBjDaWzM0Nh2K1+R1An/f3xi2T14Z+RLdJeTgaIU24/F8vELZKE2YmqhL++T2l6xvJbvohQ0OFwdSzhajbbJeaEArjRVtxENpQKVwVxC/jVAqWvohEs3OkT34LstA3hlWvEEazFhKukrs1b3VaC+n8kxs6PvWUmPQaWe+dUGT2Ucl2jbJGiS50MJ3wjarsCraLZmKlwPGEKep3LXIDT5iw1vmupIHRiEsbuYPE6pFS54AV5cy2NZMSs5O0vl+Xv5ng86ww== 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=RRM3mSiWRwJ0RIp+v/xSANMQTAsOC2LuqncIMtlumqw=; b=k8CJckHPAPNqM3HdA4f+kmw64zJDtsxKDnqgk2hHlYgaXxa+RRpvmDzOGU3jwuXf0HuFPqkoAE/o2CMGYG2xVDTeOapL52IgzVXwz6/ekuD6CQsrZTBsJQnChhhDucTG/0dcdCOGM+jdwQkZYN2O/6ZnnBR2J2Yy4f3gSaxOG9mJzxG3RMD7OtHE/u/GEMQRxsjYVFeGMvTk1h72vAOepFEAR9Sstijn9CroIt96x9VXwLahhsCWFCg6LsrCWF7aJQ7UiC9UUvsxZkwXiSVuHVyBB2ROkEQaxh6TeDR+pWayxCJ1ilYPi29/Kaa5lmwZPJwgZEhzy/7udnKp2WNXPA== 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 DM8PR11MB5751.namprd11.prod.outlook.com (2603:10b6:8:12::16) by MW4PR11MB7005.namprd11.prod.outlook.com (2603:10b6:303:22e::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.21; Thu, 13 Jun 2024 23:26:22 +0000 Received: from DM8PR11MB5751.namprd11.prod.outlook.com ([fe80::4046:430d:f16c:b842]) by DM8PR11MB5751.namprd11.prod.outlook.com ([fe80::4046:430d:f16c:b842%3]) with mapi id 15.20.7677.021; Thu, 13 Jun 2024 23:26:22 +0000 From: "Teres Alexis, Alan Previn" To: "Dong, Zhanjun" , "intel-xe@lists.freedesktop.org" Subject: Re: [PATCH v9 4/4] drm/xe/guc: Extract GuC capture lists to register snapshot Thread-Topic: [PATCH v9 4/4] drm/xe/guc: Extract GuC capture lists to register snapshot Thread-Index: AQHauG7DPDvTovlJD0SVha8DJY1wFLHGYVWA Date: Thu, 13 Jun 2024 23:26:22 +0000 Message-ID: <42eec22527828fe82a5edf60ed02ba7a5e85b6d8.camel@intel.com> References: <20240607000719.1012422-1-zhanjun.dong@intel.com> <20240607000719.1012422-5-zhanjun.dong@intel.com> In-Reply-To: <20240607000719.1012422-5-zhanjun.dong@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu2 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: DM8PR11MB5751:EE_|MW4PR11MB7005:EE_ x-ms-office365-filtering-correlation-id: f6cc23e2-dcc5-4571-d516-08dc8c003cc9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230035|376009|1800799019|366011|38070700013; x-microsoft-antispam-message-info: =?utf-8?B?Nk5jRnpPTFVGR29vVnZYUE1Bd2J5RE5SN0hwNFV6UzJBeFc3REZLZ1RrV3VO?= =?utf-8?B?VzJaZkowVEtYcHZyWW1HOCtMNmlrUDRuUkgyV3hKMm5rNTF4cnZzSzQ4bGo0?= =?utf-8?B?V3k0akNtRlNuV04xdHd6QU13Tnk4elJ5VmtReXQ0WmxPQktXdFRhZWV0bk1T?= =?utf-8?B?L1BXQUFoYmJKbnd2WjM3a2dFdGpjOUQxQVR5QkVNem1NcWRpaFRPRnNabzFP?= =?utf-8?B?VnpFWGVwUWJlRDd1Q0J1RGU3MWdQMGtRajN1QWlWb2s3Nmt2VFphTEZYcE9y?= =?utf-8?B?bEluRlp2ZDlwQTV5TUdpM2tNbWJlQzh5THZvRnNYTTZJTE96TWZwWjJ3M3cw?= =?utf-8?B?dXlRTUtFZ3M5OFI2OTFvTCs0QklZdUQ0Tm10R3VHSktEZ0gzSjhrWXFsNUFC?= =?utf-8?B?NTdVMHEzMS9NcFRJTGxaQmh6NXVOK1h2RFNnN1hHK0xpbVJXUXN2YWsyWWdz?= =?utf-8?B?eEsxZzBKUTBLVndhNzZ5YTFWWEtLY3JwdTJGc1hETUdDMkR5dmlEMlhtZjIz?= =?utf-8?B?dXZRY0xxbmpiLzJFQlc4N3FCdzVzbmtKM29POGJHblloM2tRMS9PUytOTEZz?= =?utf-8?B?TU80aVhBQ1prTmphNDgvaEFtMDVjS1VVWHNXSGRYRGYralZGdVl4eEJLWjY0?= =?utf-8?B?WVFRSmswTHJMTTQ1Kzk5ZnFNYXV6U0liRXZNMHE3eHlwbk0rN3gzU1dEVUoy?= =?utf-8?B?VUJJZ0lEQXQydWNDd09iYnFqTC9PMCtxNFFZK3czcExGeDdKay9GendNbU8z?= =?utf-8?B?eC82YmgvSlI3UTdTVERkZWwvazVMTldWQlFocTQ4aWZrdTgvd0c2QnNpTndE?= =?utf-8?B?eXc4SXRJalNwTVppZkxFOWdKK0tnSzh4bHNJbjAzdjVmT1hHUVFCU0tGRnBM?= =?utf-8?B?cWV5RU43ZE00YjMvU0VSaGI2bW5XS2kyZjY4Q2VtUWgvT3l3dVJGbjJKK0RY?= =?utf-8?B?Sk94QTBWeVpHcmFBTEM3c1l6SGhPaCs0bWsrUUpPNzgxeElVV3FMNVBqdHo2?= =?utf-8?B?VnQ4TTNrM0tUQVFiaVVjMVhyNnFROVJaankzMVpyTmZOTy8yWGdrc2pGdmZp?= =?utf-8?B?emtON1dicDBWSVljNEJ1YVpQejg0K3ByNllpNlhjSVJkdE9YdVFGaFJaaXdM?= =?utf-8?B?SjcySnI2MTVFcGYwNEcvNXpTRmlVMzBnc2VtejROazV6UHBKUTNpWDEvTWY1?= =?utf-8?B?eDFLTXZnZGhna1BmeXA3VnVvOE1mQVVhN0JLZFg1WWRVY2dMSGdOSTNjdGMv?= =?utf-8?B?TzIvclBFVm5Cd2FUL0xmZyszSmdrWFdIYUoxQ2ZJMlQwY01vaVMxSWhtNzlW?= =?utf-8?B?S2FzeTFtMnY0UGhUOEdyeXBvelQrSzFGTXhFL3pyeFpDaDR2RDgyMVJtdXZu?= =?utf-8?B?clZ3TDlPZ2RlcVZkMWNiWnl0cDh0dlFuV0VsSUlDZHExNmNLZzhLcmFoSlJw?= =?utf-8?B?WVh2UmJBV3F2SE9JZ3VtUC8raDBPV1UwbXNvc3BQTzhZMnJMNVVtRnY5SkpJ?= =?utf-8?B?ZWlTUmRicG1mYy9UcnJYKytsOHpKb1ZqUTJ5Sy94UG9QMlhsblZ1dGttb2Q0?= =?utf-8?B?T2FFTHdRRG96aDZONlFmajdXNXQ5aklMRW5ORzYrbWEvT3crWmhIN21ud1k3?= =?utf-8?B?VGVXZEtUSGRaMG5wK1BXV3JaOVpmdVpibkhkS3R3enQzb3JvdEcvdThKeUZa?= =?utf-8?B?LzdSZ0F0Kzh0VWZaWjh6bkxFOFNDVjgwaXkyL0ZoTkEwOHl4MXNYVjJBRXd5?= =?utf-8?B?dFgyTXAxR0QwbVl3dC8yeDRUV2JlSkwrTVNOZkI2UGdQeE1rSDV4VlluU1Mr?= =?utf-8?Q?1zMND4q1uuw6kY4E2iu9OVSfF56Gd35jcDVrQ=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR11MB5751.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230035)(376009)(1800799019)(366011)(38070700013); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Vk90eU81Y01LYjdSRG9LTDlnTDVvYVJHd0lMajY5SVdDb3paMyt0aEh3MGQ1?= =?utf-8?B?U2g0b25Dc0FYK1dYVkV6YlM1Wkx6bDJNeExuTVJKeW1kT2NTVFJTbGNrYnN4?= =?utf-8?B?SE13cGFJeDdDZ0NGQ0l6aVBQWkR4ZHlycGN2U2tZTnBCa2dhSU9rcUY5cDV6?= =?utf-8?B?NVdaeGJHQlN3ZTN6cGZZc2IrRkU0eW13UmJsWldIbHNYZ3Z4MzVpZVVySFZy?= =?utf-8?B?aW9vWlFxVGMyaER2dkNsQmhyYWdLd0FOZ04vWDByaXpQemtBNlBLQ0k3YU1V?= =?utf-8?B?bEhCVGhNWnIzR09mZ2NGbGx0KzZ3cGxaSXFsemgzMDRBYzN3TFRmdDlwM1pa?= =?utf-8?B?QUpMT244QVk0dGpDTmFFZjNmNk55ZE14bkxpMThwSjJ4Z2FSemJOZEpYenhx?= =?utf-8?B?QThpZ2tzdW9JaUlRQ3NIWThIZXp0VUh5TGhodi9jcHEwcG9FbTVHZFZ1d3dW?= =?utf-8?B?NllRRC9BVUN5SGhmZ2w5OXQ1NDlJZ2hjR1ZPd2xSTzdtN3E2S3hyMmtOQnBI?= =?utf-8?B?LzFvcDNOMWZqakt3dTlvb0FTenNzZ2hLOHlSdXozaG04bC9UTG43MTdVUUtw?= =?utf-8?B?V2piQW5Gc2JDOXdrNGk3cUlBbFUzWVo1Y2U2dlhnb0ZGTWJ5TEt3M0t2LzlZ?= =?utf-8?B?dmdWYi9YUEc5V3dIM0VqUnhwTldMOWhaaWR2VmFzK0psSGpaUW5mbXFTZEF5?= =?utf-8?B?Q0lzTXBXN2FTUWNMVFJzQUdUMjR5ODIvVTFVRkJHSmFpTkFmeHZqdlZRSVdl?= =?utf-8?B?UFA5eElEN0dGdGQwbVhtQ1dqZExKNkErQzFZakZubk1pdlJDWmdmNjRPbysw?= =?utf-8?B?RlJKK0grdGZDb25GTUdCbWFmVkZ6Q3FoYUlzamkvU1ZnTWxjZjk4Tm9oWStj?= =?utf-8?B?TnBTeUNTN2Fmc0RISkprOENkY2NiMlBVTEF2bnpJcTZ1aEFLRnRUb1FSdUNn?= =?utf-8?B?R2JFckhXWCtVYUZlSmdXQ21yb3MrMmVVcFgwdkNQeDBQOEpwYkN4dXdzeDZZ?= =?utf-8?B?L0o4WWVRNXYzUjUxcU9DT3BUOUtEZGZ5TXNOYXBHOFMzdktqM0xxRjBubHpH?= =?utf-8?B?ZkFCaGllUCtTQjhQNmFHWEZ5RUFYSmM5SjI0Z1NkakUzdGFCNmJteDNGdU5i?= =?utf-8?B?K2NMOEJHbTFZNndGMFZKU2E3ZW9YdjRHZTJ2VWtYSUd4S1hZcXQzRThwakhR?= =?utf-8?B?SzNITTVnSjlhZHdhZjZmUE9qcTF1SmtCdjVOeE5JLzNIT0pYZ3pEcnp3VEJs?= =?utf-8?B?d1lWYVJKdWswTERTaWdPZTlCZDlmT05EVnhFcGRvSnAzZXpNU1pXMVphc1lY?= =?utf-8?B?a0FZRzNWaWVieTVyRHMrQjIwd2E4aVhyWlk2UVNZamwzcU1xK1lnUHpJbzZk?= =?utf-8?B?Tk0xVUNqSVFYTU9TNS9xZCtlcXdMT3kyZVpnUnN0ZDFTSnEwWTRNRmcvQy9q?= =?utf-8?B?UnhMUEMxd3ZFRFlMTWwwWXFoSzFCRkFLRVI4WENxWjZYQXFWQmorc3UwTXZu?= =?utf-8?B?TDE2anBHV1dUdDBJZU9BYWk0RG9IbHJmbGhGS2hxVUUyTmRIK2hFa3FJWUJW?= =?utf-8?B?a3Q1OTQrTjhpMktxczY0SGl0RjlMRTRYNDIzZWgvcGNHKzc2SGNzZkVjaVhP?= =?utf-8?B?bXFqY2k1V2lTT01ScVdCMmV4ZDVLWkNCdkc1ZlZHSkxXOERSRmpLeU9xYlZV?= =?utf-8?B?cjNGbXNYQW1jV0dENE5lWjRCM25kK09zQ1hhY2syUDZHUVVMaWNuZSt2T3Ex?= =?utf-8?B?QmR6bTFPMXdFRmFjYlE3YmorR1g0TEhwbkthTzRaeHhxeW9WMWxjblJ4amNE?= =?utf-8?B?WjdjdTFmb1gxOWxwTllIU2tCL29WcGE3MzhDdllzRmdZdFBzd05QajZyNzdB?= =?utf-8?B?MUpjVFpHQi9pekhIVXdLK2JxZkNqeVczNVN4RXRrU2ZhSWo3SnlwWjRxRWIz?= =?utf-8?B?aUU3cFMwSU16RnJkOTl0M1pJRUJhUFJLbERNQTdmYmQ0a0paNDZlR1JPRWhX?= =?utf-8?B?ZE1FLzN0dE5WNDNlNVpTbmMxNEh0MkMvY1pjaS9EZUNvSUhkTHJqS1Y3YzNr?= =?utf-8?B?bklVNS9HNXBKY1FXWnNwNjhnUGdKTDFXMDd3S3VLaXVNcDBScHFYM0Fjd2ND?= =?utf-8?B?c3RKZTFTV1hCcUcvb3RGS0U0NDZKTXRDVzltOERFRUwrdTJVSFAyTG1uRjRq?= =?utf-8?Q?sJuwrN2kx8sxgvRLiSk7hh4=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5751.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6cc23e2-dcc5-4571-d516-08dc8c003cc9 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2024 23:26:22.6894 (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: 0WDFL0dqJmq0Dvcmsf919ZR4qqNBfwhkMpqhmpqg8UUqkIghudF/L1SxPJHO2NroR0u0EsYBuZju6+/9qA3ViRoF4+lvFoEwGYGWIh4WjK2Ns+aW+686+nRDmvCl+YkE X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7005 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" YWxhbjogSGkgdGhlcmUgWmhhbmp1biwgYXMgcGVyIG9mZmxpbmUgY29udmVyc2F0aW9uLCBpIHdh cyBzdXJwcmlzZWQgdG8Kc2VlIHlvdSBzcXVhc2ggdGhlICJHdWMtZXJyb3ItY2FwdHVyZS1leHRy YWN0aW9uIiB0b2dldGhlciB3aXRoIHRoZQoiUGx1bWIgR3VDLWNhcHR1cmUgaW50byBkZXYgY29y ZWR1bXAiIHBhdGNoIGJ1dCBub3cgcmVhbGl6ZSBpIG1hZGUgYQpyZWdyZXR0YWJsZSB0eXBvIGlu IG15IHJldjggcmV2aWV3IGNvbW1lbnRzIC0gd2hlbiBpIG1lbnRpb25lZCBhYm91dApwb3Npc2Js eSBzcXVhc2hpbmcgcHJlLWFsbG9jYXRlLW5vZGVzIHdpdGggbm9kZS1leHRyYWN0aW9uIGkgc2Fp ZAoicGF0Y2ggNCBhbmQgcGF0Y2ggNiIgYnV0IHdoYXQgaSBtZWFudCB3YXMgInBhdGNoIDQgYW5k IHBhdGNoIDUiLgpJJ20gdGVycmlibHkgc29ycnkgYWJvdXQgdGhpcyBtaXN0YWtlLiBTaW5jZSB3 ZSBrbm93IHRoYXQgeW91CmhhdmUgdG8gcmVkbyB0aGlzIHBhdGNoIGFueXdheXMgYmFzZWQgb24g b2ZmbGluZSBjb252ZXJzYXRpb24gdG8KcmVzb2x2ZSByYWNlIGJldHdlZW4gZHJtLXRkciB2cyBn dWMtY29udGV4dC1yZXNldCwgdGhhbmtzIGZvciBhZ3JlZWluZwp0byBrZWVwIGV4dHJhY3Rpb24g c2VwYXJhdGUgYWdhaW4uIEFuZCBvZmMgd2UgZG9uJ3QgbmVlZCBwcmUtYWxsb2NhdGluZwpvZiBu b2RlcyBub3cuCgpPbiBUaHUsIDIwMjQtMDYtMDYgYXQgMTc6MDcgLTA3MDAsIFpoYW5qdW4gRG9u ZyB3cm90ZToKPiBVcG9uIHRoZSBHMkggTm90aWZ5LUVyci1DYXB0dXJlIGV2ZW50LCBwYXJzZSB0 aHJvdWdoIHRoZQo+IEd1QyBMb2cgQnVmZmVyIChlcnJvci1jYXB0dXJlLXN1YnJlZ2lvbikgYW5k IGdlbmVyYXRlIG9uZSBvcgo+IG1vcmUgY2FwdHVyZS1ub2Rlcy4gQSBzaW5nbGUgbm9kZSByZXBy ZXNlbnRzIGEgc2luZ2xlICJlbmdpbmUtCj4gaW5zdGFuY2UtY2FwdHVyZS1kdW1wIiBhbmQgY29u dGFpbnMgYXQgbGVhc3QgMyByZWdpc3RlciBsaXN0czoKPiBnbG9iYWwsIGVuZ2luZS1jbGFzcyBh bmQgZW5naW5lLWluc3RhbmNlLiBBbiBpbnRlcm5hbCBsaW5rCj4gbGlzdCBpcyBtYWludGFpbmVk IHRvIHN0b3JlIG9uZSBvciBtb3JlIG5vZGVzLgo+IEJlY2F1c2UgdGhlIGxpbmstbGlzdCBub2Rl IGdlbmVyYXRpb24gaGFwcGVuIGJlZm9yZSB0aGUgY2FsbAo+IHRvIGRldmNvcmVkdW1wLCBkdXBs aWNhdGUgZ2xvYmFsIGFuZCBlbmdpbmUtY2xhc3MgcmVnaXN0ZXIKPiBsaXN0cyBmb3IgZWFjaCBl bmdpbmUtaW5zdGFuY2UgcmVnaXN0ZXIgZHVtcCBpZiB3ZSBmaW5kCj4gZGVwZW5kZW50LWVuZ2lu ZSByZXNldHMgaW4gYSBlbmdpbmUtY2FwdHVyZS1ncm91cC4KPiBXaGVuIHhlX2RldmNvcmVkdW1w IGNhbGxzIGludG8gc25hcHNob3RfZnJvbV9jYXB0dXJlX2VuZ2luZSwKPiB3ZSBkZXRhY2ggdGhl IG1hdGNoaW5nIG5vZGUgKGd1Yy1pZCwgTFJDQSwgZXRjKSBmcm9tIHRoZSBsaW5rIGxpc3QKPiBh Ym92ZSBhbmQgYXR0YWNoIGl0IHRvIHNuYXBzaG90X3JlZ3Mgc3RydWN0dXJlIHdoZW4gaGF2ZQo+ IG1hdGNoaW5nIExSQ0EvZ3VjLWlkL2VuZ2luZS1pbnN0YW5jZS4KPiAKPiBUbyBhdm9pZCBkeW5h bWljYWxseSBhbGxvY2F0ZSB0aGUgb3V0cHV0IG5vZGVzIGR1cmluZyBndCByZXNldCwKPiBwcmUt YWxsb2NhdGUgYSBmaXhlZCBudW1iZXIgb2YgZW1wdHkgbm9kZXMgdXAgZnJvbnQgKGF0IHRoZQo+ IHRpbWUgb2YgQURTIHJlZ2lzdHJhdGlvbikgdGhhdCB3ZSBjYW4gY29uc3VtZSBmcm9tIG9yIHJl dHVybiB0bwo+IGFuIGludGVybmFsIGNhY2hlZCBsaXN0IG9mIG5vZGVzLgo+IEFkZCBndWMgY2Fw dHVyZSBkYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9uLgo+IAo+IEFkZCB4ZV9od19lbmdpbmVfc25h cHNob3RfZnJvbV9jYXB0dXJlIHRvIHRha2Ugc25hcHNob3QgZnJvbSBjYXB0dXJlCj4gbm9kZSBs aXN0Lgo+IE1vdmUgc25hcHNob3QgcmVnaXN0ZXIgc3RydWN0IG91dCBvZiBlbmdpbmUgc25hcHNo b3Qgc3RydWN0Lgo+IEFkZCBvZmZzZXQgaW4gc25hcHNob3QgcmVnaXN0ZXIgdG8gcmVnaXN0ZXIg ZGVmaW5pdGlvbiBsaXN0IGF0Cj4geGVfZ3VjX2NhcHR1cmUuYy4KPiBTbmFwc2hvdCBjb3VsZCBi ZSBzcGxpdCBpbnRvIGdsb2JhbCwgZW5naW5lIGNsYXNzLCBlbmdpbmUgaW5zdGFuY2UKPiBhbmQg c3RlZXJpbmcgcmVnaXN0ZXIgem9uZSwgZmV3IG1hY3JvcyBkZWZpbmVkIHRvIHNlcGFyYXRlIHpv bmVzLgo+IFN1cHBvcnQgY29tYmluZXMgMiAzMmJpdCByZWdpc3RlcnMgYXMgYSA2NGJpdCByZWdp c3RlciBpbiBzbmFwc2hvdCwKPiBwZXJmb3JtIGVuZGlhbiBjb252ZXJ0IGlmIG5lZWRlZC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBaaGFuanVuIERvbmcgPHpoYW5qdW4uZG9uZ0BpbnRlbC5jb20+Cj4g LS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUvYWJpL2d1Y19hY3Rpb25zX2FiaS5owqAgfMKgwqAg NyArCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUvcmVncy94ZV9ndF9yZWdzLmjCoMKgwqDCoMKgIHzC oMKgIDIgKwo+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmNvcmVkdW1wLmPCoMKgwqDCoMKg wqAgfMKgwqAgNCArCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXBfdHlwZXMu aCB8wqDCoCAyICsKPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWMuaMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDIzICsKPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY2Fw dHVyZS5jwqDCoMKgwqDCoMKgIHwgODc2Cj4gKysrKysrKysrKysrKysrKysrKysrLQo+IMKgZHJp dmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jYXB0dXJlLmjCoMKgwqDCoMKgwqAgfMKgwqAgOSArCj4g wqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2NhcHR1cmVfZndpZi5owqAgfMKgIDQ1ICsrCj4g wqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgIDIgKwo+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19md2lmLmjCoMKgwqDCoMKgwqDC oMKgwqAgfMKgwqAgNiArCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jwqDC oMKgwqDCoMKgwqAgfMKgIDYzICstCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1p dC5owqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfaHdf ZW5naW5lLmPCoMKgwqDCoMKgwqDCoMKgIHwgMjE4ICsrKystLQo+IMKgZHJpdmVycy9ncHUvZHJt L3hlL3hlX2h3X2VuZ2luZV90eXBlcy5owqDCoCB8IDE1OSArKy0tCj4gwqBkcml2ZXJzL2dwdS9k cm0veGUveGVfbHJjLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+IMKg MTUgZmlsZXMgY2hhbmdlZCwgMTI0NCBpbnNlcnRpb25zKCspLCAxNzUgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS9hYmkvZ3VjX2FjdGlvbnNfYWJpLmgK PiBiL2RyaXZlcnMvZ3B1L2RybS94ZS9hYmkvZ3VjX2FjdGlvbnNfYWJpLmgKPiBpbmRleCA3OWJh OThhMTY5ZjkuLmVkMWVlZWEzNGU4ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv YWJpL2d1Y19hY3Rpb25zX2FiaS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL2FiaS9ndWNf YWN0aW9uc19hYmkuaAo+IEBAIC0xODIsNiArMTgyLDEzIEBAIGVudW0geGVfZ3VjX3NsZWVwX3N0 YXRlX3N0YXR1cyB7Cj4gwqAjZGVmaW5lIEdVQ19MT0dfQ09OVFJPTF9WRVJCT1NJVFlfTUFTS8Kg KDB4RiA8PAo+IEdVQ19MT0dfQ09OVFJPTF9WRVJCT1NJVFlfU0hJRlQpCj4gwqAjZGVmaW5lIEdV Q19MT0dfQ09OVFJPTF9ERUZBVUxUX0xPR0dJTkfCoMKgwqDCoMKgwqDCoMKgKDEgPDwgOCkKPiDC oAo+ICtlbnVtIGludGVsX2d1Y19zdGF0ZV9jYXB0dXJlX2V2ZW50X3N0YXR1cyB7Cj4gK8KgwqDC oMKgwqDCoMKgWEVfR1VDX1NUQVRFX0NBUFRVUkVfRVZFTlRfU1RBVFVTX1NVQ0NFU1MgPSAweDAs Cj4gK8KgwqDCoMKgwqDCoMKgWEVfR1VDX1NUQVRFX0NBUFRVUkVfRVZFTlRfU1RBVFVTX05PU1BB Q0UgPSAweDEsCj4gK307Cj4gKwo+ICsjZGVmaW5lIFhFX0dVQ19TVEFURV9DQVBUVVJFX0VWRU5U X1NUQVRVU19NQVNLwqDCoMKgwqDCoCAweDAwMDAwMEZGCj4gKwo+IMKgI2RlZmluZSBYRV9HVUNf VExCX0lOVkFMX1RZUEVfU0hJRlQgMAo+IMKgI2RlZmluZSBYRV9HVUNfVExCX0lOVkFMX01PREVf U0hJRlQgOAo+IMKgLyogRmx1c2ggUFBDIG9yIFNNUk8gY2FjaGVzIGFsb25nIHdpdGggVExCIGlu dmFsaWRhdGlvbiByZXF1ZXN0ICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS9y ZWdzL3hlX2d0X3JlZ3MuaAo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3JlZ3MveGVfZ3RfcmVncy5o Cj4gaW5kZXggZDA5YjI0NzMyNTlmLi5jNmJkNTA3MzhlMmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3hlL3JlZ3MveGVfZ3RfcmVncy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hl L3JlZ3MveGVfZ3RfcmVncy5oCj4gQEAgLTU3NCw0ICs1NzQsNiBAQAo+IMKgI2RlZmluZcKgwqAg R1RfQ1NfTUFTVEVSX0VSUk9SX0lOVEVSUlVQVMKgwqDCoMKgwqDCoMKgwqDCoFJFR19CSVQoMykK PiDCoCNkZWZpbmXCoMKgIEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgUkVHX0JJVCgwKQo+IMKgCj4gKyNkZWZpbmUgU0ZDX0RPTkUobinCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFhFX1JFRygweDFj YzAwMCArIChuKQo+ICogMHgxMDAwKQo+ICsKPiDCoCNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXAuYwo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hl X2RldmNvcmVkdW1wLmMKPiBpbmRleCBkN2YyZDE5YTc3YzEuLjVlODA3MTBkM2NjOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXAuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9kZXZjb3JlZHVtcC5jCj4gQEAgLTE2LDYgKzE2LDcgQEAKPiDCoCNp bmNsdWRlICJ4ZV9mb3JjZV93YWtlLmgiCj4gwqAjaW5jbHVkZSAieGVfZ3QuaCIKPiDCoCNpbmNs dWRlICJ4ZV9ndF9wcmludGsuaCIKPiArI2luY2x1ZGUgInhlX2d1Y19jYXB0dXJlLmgiCj4gwqAj aW5jbHVkZSAieGVfZ3VjX2N0LmgiCj4gwqAjaW5jbHVkZSAieGVfZ3VjX3N1Ym1pdC5oIgo+IMKg I2luY2x1ZGUgInhlX2h3X2VuZ2luZS5oIgo+IEBAIC0xNDksMTAgKzE1MCwxMiBAQCBzdGF0aWMg dm9pZCB4ZV9kZXZjb3JlZHVtcF9mcmVlKHZvaWQgKmRhdGEpCj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoY29yZWR1bXAtPnNuYXBzaG90Lmh3ZVtpXSkKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9od19lbmdpbmVfc25hcHNo b3RfZnJlZShjb3JlZHVtcC0KPiA+c25hcHNob3QuaHdlW2ldKTsKPiDCoMKgwqDCoMKgwqDCoMKg eGVfdm1fc25hcHNob3RfZnJlZShjb3JlZHVtcC0+c25hcHNob3Qudm0pOwo+ICvCoMKgwqDCoMKg wqDCoHhlX2d1Y19jYXB0dXJlX2ZyZWUoJmNvcmVkdW1wLT5zbmFwc2hvdC5ndC0+dWMuZ3VjKTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKiBUbyBwcmV2ZW50IHN0YWxlIGRhdGEgb24gbmV4dCBz bmFwc2hvdCwgY2xlYXIgZXZlcnl0aGluZwo+ICovCj4gwqDCoMKgwqDCoMKgwqDCoG1lbXNldCgm Y29yZWR1bXAtPnNuYXBzaG90LCAwLCBzaXplb2YoY29yZWR1bXAtPnNuYXBzaG90KSk7Cj4gwqDC oMKgwqDCoMKgwqDCoGNvcmVkdW1wLT5jYXB0dXJlZCA9IGZhbHNlOwo+ICvCoMKgwqDCoMKgwqDC oGNvcmVkdW1wLT5qb2IgPSBOVUxMOwo+IMKgwqDCoMKgwqDCoMKgwqBkcm1faW5mbygmY29yZWR1 bXBfdG9feGUoY29yZWR1bXApLT5kcm0sCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgIlhlIGRldmljZSBjb3JlZHVtcCBoYXMgYmVlbiBkZWxldGVkLlxuIik7Cj4gwqB9Cj4gQEAg LTE4Niw2ICsxODksNyBAQCBzdGF0aWMgdm9pZCBkZXZjb3JlZHVtcF9zbmFwc2hvdChzdHJ1Y3QK PiB4ZV9kZXZjb3JlZHVtcCAqY29yZWR1bXAsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBwdXRfdGFza19zdHJ1Y3QodGFzayk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgc3MtPmd0 ID0gcS0+Z3Q7Cj4gK8KgwqDCoMKgwqDCoMKgY29yZWR1bXAtPmpvYiA9IGpvYjsKPiDCoMKgwqDC oMKgwqDCoMKgSU5JVF9XT1JLKCZzcy0+d29yaywgeGVfZGV2Y29yZWR1bXBfZGVmZXJyZWRfc25h cF93b3JrKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBjb29raWUgPSBkbWFfZmVuY2VfYmVnaW5f c2lnbmFsbGluZygpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29y ZWR1bXBfdHlwZXMuaAo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmNvcmVkdW1wX3R5cGVz LmgKPiBpbmRleCA5MjNjZGY3MmE4MTYuLmMzOWFiNzNhOWY2YSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfZGV2Y29yZWR1bXBfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS94ZS94ZV9kZXZjb3JlZHVtcF90eXBlcy5oCj4gQEAgLTYxLDYgKzYxLDggQEAgc3RydWN0 IHhlX2RldmNvcmVkdW1wIHsKPiDCoMKgwqDCoMKgwqDCoMKgYm9vbCBjYXB0dXJlZDsKPiDCoMKg wqDCoMKgwqDCoMKgLyoqIEBzbmFwc2hvdDogU25hcHNob3QgaXMgY2FwdHVyZWQgYXQgdGltZSBv ZiB0aGUgZmlyc3QKPiBjcmFzaCAqLwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2Y29y ZWR1bXBfc25hcHNob3Qgc25hcHNob3Q7Cj4gK8KgwqDCoMKgwqDCoMKgLyoqIEBqb2I6IFBvaW50 IHRvIHRoZSBpc3N1ZSBqb2IgKi8KPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfc2NoZWRfam9i ICpqb2I7Cj4gwqB9Owo+IMKgCj4gwqAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3hlL3hlX2d1Yy5oCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmgKPiBpbmRleCBk ZGZhODU1NDU4YWIuLmUxYWZkYTkwNzBmNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v eGUveGVfZ3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjLmgKPiBAQCAtNTks NiArNTksMjkgQEAgc3RhdGljIGlubGluZSB1MTYKPiB4ZV9lbmdpbmVfY2xhc3NfdG9fZ3VjX2Ns YXNzKGVudW0geGVfZW5naW5lX2NsYXNzIGNsYXNzKQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqB9 Cj4gwqAKPiArc3RhdGljIGlubGluZSB1MTYgeGVfZ3VjX2NsYXNzX3RvX2NhcHR1cmVfY2xhc3Mo dWludCBjbGFzcykKPiArewo+ICvCoMKgwqDCoMKgwqDCoHN3aXRjaCAoY2xhc3MpIHsKPiArwqDC oMKgwqDCoMKgwqBjYXNlIEdVQ19SRU5ERVJfQ0xBU1M6Cj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBH VUNfQ09NUFVURV9DTEFTUzoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IEdVQ19DQVBUVVJFX0xJU1RfQ0xBU1NfUkVOREVSX0NPTVBVVEU7Cj4gK8KgwqDCoMKgwqDCoMKg Y2FzZSBHVUNfR1NDX09USEVSX0NMQVNTOgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gR1VDX0NBUFRVUkVfTElTVF9DTEFTU19HU0NfT1RIRVI7Cj4gK8KgwqDCoMKgwqDC oMKgY2FzZSBHVUNfVklERU9fQ0xBU1M6Cj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBHVUNfVklERU9F TkhBTkNFX0NMQVNTOgo+ICvCoMKgwqDCoMKgwqDCoGNhc2UgR1VDX0JMSVRURVJfQ0xBU1M6Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBjbGFzczsKPiArwqDCoMKgwqDC oMKgwqBkZWZhdWx0Ogo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRV9XQVJOX09O KGNsYXNzKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC0xOwo+ICvC oMKgwqDCoMKgwqDCoH0KPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1MTYgeGVfZW5naW5lX2Ns YXNzX3RvX2d1Y19jYXB0dXJlX2NsYXNzKGVudW0KPiB4ZV9lbmdpbmVfY2xhc3MgY2xhc3MpCj4g K3sKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4KPiB4ZV9ndWNfY2xhc3NfdG9fY2FwdHVyZV9jbGFz cyh4ZV9ndWNfY2xhc3NfdG9fY2FwdHVyZV9jbGFzcyhjbGFzcykpOwo+ICt9Cj4gKwo+IMKgc3Rh dGljIGlubGluZSBzdHJ1Y3QgeGVfZ3QgKmd1Y190b19ndChzdHJ1Y3QgeGVfZ3VjICpndWMpCj4g wqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBjb250YWluZXJfb2YoZ3VjLCBzdHJ1Y3QgeGVf Z3QsIHVjLmd1Yyk7Cj4gCgphbGFuOnNuaXAuCgo+ICtzdGF0aWMgdm9pZAo+ICtfX2d1Y19jYXB0 dXJlX2NyZWF0ZV9wcmVhbGxvY19ub2RlcyhzdHJ1Y3QgeGVfZ3VjICpndWMpCj4gK3sKPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgX19ndWNfY2FwdHVyZV9wYXJzZWRfb3V0cHV0ICpub2RlID0gTlVM TDsKPiArwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0g MDsgaSA8IFBSRUFMTE9DX05PREVTX01BWF9DT1VOVDsgKytpKSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoG5vZGUgPSBndWNfY2FwdHVyZV9hbGxvY19vbmVfbm9kZShndWMpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIW5vZGUpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2d0X3dhcm4oZ3VjX3RvX2d0 KGd1YyksICJSZWdpc3RlciBjYXB0dXJlCj4gcHJlLWFsbG9jLWNhY2hlIGZhaWx1cmVcbiIpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZG9udCBm cmVlIHRoZSBwcmlvcnMsIHVzZSB3aGF0IHdlIGdvdCBhbmQKPiBjbGVhbnVwIGF0IHNodXRkb3du ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm47Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ3VjX2NhcHR1cmVfYWRkX25vZGVfdG9fY2FjaGVsaXN0KGd1Yy0+Y2Fw dHVyZSwKPiBub2RlKTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gK30KPiArCmJ0dywgd2h5IGFyZSB3 ZSBzdGlsbCB1c2luZyB0aGlzIHByZS1hbGxvY2F0ZWQtbm9kZXMgZnJhbWV3b3JrIGFuZApmdW5j dGlvbnM/IGkgdGhvdWdodCB3ZSBkZWNpZGVkIHdlIGRpZG4ndCBuZWVkIGl0IGZvciB0aGUgY2Fz ZSBvZiBYZT8KKHNpbmNlIHdlJ2xsIHNlcmlhbGl6ZSB0aGUgZXh0cmFjdGlvbi1mbG93IHZzIGFu eSByZXNldC1mbG93IHZzIHRoZQpkZXZjb3JlZHVtcC1wcmludGluZyAgYnkgcHV0dGluZyB0aGVt IG9uIHRoZSBzYW1lIHdvcmtxdWV1ZSkuIEluIHRoYXQKY2FzZSB3ZSBjYW4gcmVtb3ZlIHRoZSBw cmVhbG9jYXRlZCBub2RlcycgY2FjaGVsaXN0IGV4dHJhY3Rpb24gY29kZQpyZXF1aXJpbmcgbmV3 IG5kZXMgY2FuIGR5bmFtaWNhbGx5IGJ5IGNhbGxpbmcgCmd1Y19jYXB0dXJlX2FsbG9jX29uZV9u b2RlIGRpcmVjdGx5CgphbGFuOnNuaXAuIHNhbWUgY29tbWVudCBhYm92ZSBmb3IgYmVsb3cgaG5r Lgo+ICtzdGF0aWMgdm9pZAo+ICtndWNfY2FwdHVyZV9jcmVhdGVfcHJlYWxsb2Nfbm9kZXMoc3Ry dWN0IHhlX2d1YyAqZ3VjKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgLyogc2tpcCBpZiB3ZSd2ZSBh bHJlYWR5IGRvbmUgdGhlIHByZS1hbGxvYyAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmIChndWMtPmNh cHR1cmUtPm1heF9tbWlvX3Blcl9ub2RlKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm47Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGd1Yy0+Y2FwdHVyZS0+bWF4X21taW9fcGVy X25vZGUgPQo+IGd1Y19nZXRfbWF4X3JlZ2xpc3RfY291bnQoZ3VjKTsKPiArwqDCoMKgwqDCoMKg wqBfX2d1Y19jYXB0dXJlX2NyZWF0ZV9wcmVhbGxvY19ub2RlcyhndWMpOwo+ICt9Cj4gKwoKPiAr c3RhdGljIHZvaWQgY3BfcmVnX3RvX3NuYXBzaG90KGludCB0eXBlLCB1MTYgaHdlX2d1Y19jbGFz cywgdTMyCj4gb2Zmc2V0LCB1MzIgdmFsdWUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHNuYXBzaG90X3JlZ3MgKnJl Z3MpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBz dHJ1Y3QgX19ndWNfbW1pb19yZWdfZGVzY3JfZ3JvdXAgKmxpc3Q7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoC8qIEdldCByZWdpc3RlciBsaXN0IGZvciB0aGUgdHlwZS9jbGFzcyAqLwo+ICvCoMKgwqDC oMKgwqDCoGxpc3QgPQo+IHhlX2d1Y19jYXB0dXJlX2dldF9yZWdfZGVzY19saXN0KEdVQ19DQVBU VVJFX0xJU1RfSU5ERVhfUEYsIHR5cGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZV9ndWNfY2xhc3NfdG9fY2FwdHUKPiByZV9jbGFzcyhod2VfZ3VjX2NsYXNzKSk7 Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFsaXN0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm47Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBsaXN0LT5u dW1fcmVnczsgaSsrKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob2Zmc2V0 ID09IGxpc3QtPmxpc3RbaV0ucmVnLmFkZHIpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHUzMiAqZmllbGQgPSAodTMyICopKCh1aW50cHRyX3QpcmVn cyArIGxpc3QtCj4gPmxpc3RbaV0ucG9zaXRpb25faW5fc25hcHNob3QpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmZpZWxkID0gdmFsdWU7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ3Vj X2NhcHR1cmVfcGFyc2VfcmVnbGlzdChzdHJ1Y3QKPiBfX2d1Y19jYXB0dXJlX3BhcnNlZF9vdXRw dXQgKm5vZGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVfaHdfZW5naW5lX3NuYXBzaG90 Cj4gKnNuYXBzaG90LCB1MTYgaHdlX2d1Y19jbGFzcykKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlu dCBpLCB0eXBlOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoIW5vZGUpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZm9yICh0eXBl ID0gR1VDX0NBUFRVUkVfTElTVF9UWVBFX0dMT0JBTDsgdHlwZSA8Cj4gR1VDX0NBUFRVUkVfTElT VF9UWVBFX01BWDsgdHlwZSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBnY2FwX3JlZ19saXN0X2luZm8gKnJlZ2luZm8gPSAmbm9kZS0KPiA+cmVnaW5mb1t0eXBl XTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGd1Y19tbWlvX3JlZyAq cmVncyA9IHJlZ2luZm8tPnJlZ3M7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBmb3IgKGkgPSAwOyBpIDwgcmVnaW5mby0+bnVtX3JlZ3M7IGkrKykKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNwX3JlZ190b19zbmFwc2hvdCh0eXBl LCBod2VfZ3VjX2NsYXNzLAo+IHJlZ3NbaV0ub2Zmc2V0LCByZWdzW2ldLnZhbHVlLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzbmFwc2hvdC0+cmVnKTsKPiArwqDCoMKgwqDCoMKgwqB9 Cj4gK30KPiArCj4gKy8qKgo+ICsgKiB4ZV9od19lbmdpbmVfZmluZF9hbmRfY29weV9ndWNfY2Fw dHVyZV9zbmFwc2hvdCAtIFRha2UgYSBlbmdpbmUKPiBzbmFwc2hvdCBmcm9tIEd1QyBjYXB0dXJl Lgo+ICsgKiBAaHdlOiBYZSBIVyBFbmdpbmUuCj4gKyAqIEBzbmFwc2hvdDogWGUgSFcgRW5naW5l IHNuYXBzaG90IG9iamVjdCB0byBzYXZlIGRhdGEsIGNvcGllZCBmcm9tCj4gZXJyb3IgY2FwdHVy ZQo+ICsgKgo+ICsgKiBUaGlzIGNhbiBiZSBwcmludGVkIG91dCBpbiBhIGxhdGVyIHN0YWdlIGxp a2UgZHVyaW5nIGRldl9jb3JlZHVtcAo+ICsgKiBhbmFseXNpcy4KPiArICoKPiArICogUmV0dXJu czogTm9uZQo+ICsgKi8KPiArdm9pZAo+ICt4ZV9od19lbmdpbmVfZmluZF9hbmRfY29weV9ndWNf Y2FwdHVyZV9zbmFwc2hvdChzdHJ1Y3QgeGVfaHdfZW5naW5lCj4gKmh3ZSwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdAo+IHhlX2h3X2VuZ2luZV9zbmFwc2hv dCAqc25hcHNob3QpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3QgKmd0ID0gaHdl LT5ndDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IGd0X3RvX3hlKGd0 KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3VjICpndWMgPSAmZ3QtPnVjLmd1YzsKPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgX19ndWNfY2FwdHVyZV9wYXJzZWRfb3V0cHV0ICpuLCAqbnRt cDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2Y29yZWR1bXAgKmRldmNvcmVkdW1wID0g JnhlLT5kZXZjb3JlZHVtcDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0 ID0gJmd1Yy0+Y2FwdHVyZS0+b3V0bGlzdDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfc2No ZWRfam9iICpqb2IgPSBkZXZjb3JlZHVtcC0+am9iOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4 ZV9ndWNfc3VibWl0X2V4ZWNfcXVldWVfc25hcHNob3QgKmdlID0gZGV2Y29yZWR1bXAtCj4gPnNu YXBzaG90LmdlOwo+ICvCoMKgwqDCoMKgwqDCoHUxNiBndWNfaWQgPSBnZS0+Z3VjLmlkOwo+ICvC oMKgwqDCoMKgwqDCoHUzMiBscmNhOwo+ICvCoMKgwqDCoMKgwqDCoHUxNiBod2VfZ3VjX2NsYXNz ID0geGVfZW5naW5lX2NsYXNzX3RvX2d1Y19jbGFzcyhod2UtPmNsYXNzKTsKPiArCj4gK8KgwqDC oMKgwqDCoMKgbHJjYSA9IHhlX2xyY19nZ3R0X2FkZHIoam9iLT5xLT5scmNbMF0pICYKPiBMUkNf R1RUX0FERFJFU1NfTUFTSzsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKg wqAgKiBMb29rIGZvciBhIG1hdGNoaW5nIEd1QyByZXBvcnRlZCBlcnJvciBjYXB0dXJlIG5vZGUg ZnJvbQo+ICvCoMKgwqDCoMKgwqDCoCAqIHRoZSBpbnRlcm5hbCBvdXRwdXQgbGluay1saXN0IGJh c2VkIG9uIGVuZ2luZSBjbGFzcyBhbmQKPiBpbnN0YW5jZS4KPiArwqDCoMKgwqDCoMKgwqAgKi8K PiArwqDCoMKgwqDCoMKgwqBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobiwgbnRtcCwgbGlzdCwg bGluaykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobi0+ZW5nX2NsYXNz ID09IGh3ZV9ndWNfY2xhc3MgJiYgbi0+ZW5nX2luc3QgPT0KPiBod2UtPmluc3RhbmNlICYmCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuLT5ndWNfaWQgPT0gZ3VjX2lk ICYmIChuLT5scmNhICYKPiBMUkNfR1RUX0FERFJFU1NfTUFTSykgPT0gbHJjYSkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ3VjX2NhcHR1cmVfcGFy c2VfcmVnbGlzdChuLCBzbmFwc2hvdCwKPiBod2VfZ3VjX2NsYXNzKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfZGVsKCZuLT5saW5rKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoH0KPiArfQo+ ICsKPiArdm9pZCB4ZV9ndWNfY2FwdHVyZV9mcmVlKHN0cnVjdCB4ZV9ndWMgKmd1YykKPiArewo+ ICvCoMKgwqDCoMKgwqDCoGlmIChndWMtPmNhcHR1cmUgJiYgIWxpc3RfZW1wdHkoJmd1Yy0+Y2Fw dHVyZS0+b3V0bGlzdCkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IF9fZ3VjX2NhcHR1cmVfcGFyc2VkX291dHB1dCAqbiwgKm50bXA7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobiwgbnRtcCwgJmd1 Yy0+Y2FwdHVyZS0KPiA+b3V0bGlzdCwgbGluaykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9kZWwoJm4tPmxpbmspOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogcHV0IG5vZGUgYmFjayB0byBj YWNoZSBsaXN0ICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBObyBuZWVkIHRvIGluaXQgaGVyZSwKPiBndWNfY2FwdHVyZV9nZXRfcHJlYWxsb2Nf bm9kZSBpbml0IGl0IGxhdGVyICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBndWNfY2FwdHVyZV9hZGRfbm9kZV90b19jYWNoZWxpc3QoZ3VjLQo+ID5j YXB0dXJlLCBuKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDC oMKgwqDCoH0KPiArfQo+ICsKPiDCoGludCB4ZV9ndWNfY2FwdHVyZV9pbml0KHN0cnVjdCB4ZV9n dWMgKmd1YykKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgZ3VjLT5jYXB0dXJlID0gZHJtbV9remFs bG9jKGd1Y190b19kcm0oZ3VjKSwgc2l6ZW9mKCpndWMtCj4gPmNhcHR1cmUpLCBHRlBfS0VSTkVM KTsKPiBAQCAtNTc0LDcgKzE0MDQsOSBAQCBpbnQgeGVfZ3VjX2NhcHR1cmVfaW5pdChzdHJ1Y3Qg eGVfZ3VjICpndWMpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVO T01FTTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBndWMtPmNhcHR1cmUtPnJlZ2xpc3RzID0gZ3Vj X2NhcHR1cmVfZ2V0X2RldmljZV9yZWdsaXN0KGd1Yyk7Cj4gLQo+IMKgwqDCoMKgwqDCoMKgwqBj aGVja19ndWNfY2FwdHVyZV9zaXplKGd1Yyk7Cj4gK8KgwqDCoMKgwqDCoMKgSU5JVF9MSVNUX0hF QUQoJmd1Yy0+Y2FwdHVyZS0+b3V0bGlzdCk7Cj4gK8KgwqDCoMKgwqDCoMKgSU5JVF9MSVNUX0hF QUQoJmd1Yy0+Y2FwdHVyZS0+Y2FjaGVsaXN0KTsKPiArCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+IMKgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2NhcHR1 cmUuaAo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jYXB0dXJlLmgKPiBpbmRleCBhNjJi MWRiZDQ3YTYuLmMwYmFkYTk5YzllYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUv eGVfZ3VjX2NhcHR1cmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY2FwdHVy ZS5oCj4gQEAgLTEwLDYgKzEwLDggQEAKPiDCoCNpbmNsdWRlICJyZWdzL3hlX3JlZ19kZWZzLmgi Cj4gwqAKPiDCoHN0cnVjdCB4ZV9ndWM7Cj4gK3N0cnVjdCB4ZV9od19lbmdpbmU7Cj4gK3N0cnVj dCB4ZV9od19lbmdpbmVfc25hcHNob3Q7Cj4gwqAKPiDCoC8qCj4gwqAgKiBzdHJ1Y3QgX19ndWNf bW1pb19yZWdfZGVzY3IgLyBzdHJ1Y3QgX19ndWNfbW1pb19yZWdfZGVzY3JfZ3JvdXAKPiBAQCAt MjUsNiArMjcsNyBAQCBzdHJ1Y3QgX19ndWNfbW1pb19yZWdfZGVzY3Igewo+IMKgwqDCoMKgwqDC oMKgwqB1MzIgZmxhZ3M7Cj4gwqDCoMKgwqDCoMKgwqDCoHUzMiBtYXNrOwo+IMKgwqDCoMKgwqDC oMKgwqBjb25zdCBjaGFyICpyZWduYW1lOwo+ICvCoMKgwqDCoMKgwqDCoHUzMiBwb3NpdGlvbl9p bl9zbmFwc2hvdDsKPiDCoH07Cj4gwqAKPiDCoHN0cnVjdCBfX2d1Y19tbWlvX3JlZ19kZXNjcl9n cm91cCB7Cj4gQEAgLTM2LDkgKzM5LDE1IEBAIHN0cnVjdCBfX2d1Y19tbWlvX3JlZ19kZXNjcl9n cm91cCB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBfX2d1Y19tbWlvX3JlZ19kZXNjciAqZXh0 bGlzdDsgLyogb25seSB1c2VkIGZvcgo+IHN0ZWVyZWQgcmVnaXN0ZXJzICovCj4gwqB9Owo+IMKg Cj4gK3ZvaWQgeGVfZ3VjX2NhcHR1cmVfcHJvY2VzcyhzdHJ1Y3QgeGVfZ3VjICpndWMpOwo+IMKg aW50IHhlX2d1Y19jYXB0dXJlX2dldGxpc3Qoc3RydWN0IHhlX2d1YyAqZ3VjLCB1MzIgb3duZXIs IHUzMiB0eXBlLAo+IHUzMiBjbGFzc2lkLCB2b2lkICoqb3V0cHRyKTsKPiDCoGludCB4ZV9ndWNf Y2FwdHVyZV9nZXRsaXN0c2l6ZShzdHJ1Y3QgeGVfZ3VjICpndWMsIHUzMiBvd25lciwgdTMyCj4g dHlwZSwgdTMyIGNsYXNzaWQsIHNpemVfdCAqc2l6ZSk7Cj4gwqBpbnQgeGVfZ3VjX2NhcHR1cmVf Z2V0bnVsbGhlYWRlcihzdHJ1Y3QgeGVfZ3VjICpndWMsIHZvaWQgKipvdXRwdHIsCj4gc2l6ZV90 ICpzaXplKTsKPiArY29uc3Qgc3RydWN0IF9fZ3VjX21taW9fcmVnX2Rlc2NyX2dyb3VwICoKPiAr eGVfZ3VjX2NhcHR1cmVfZ2V0X3JlZ19kZXNjX2xpc3QodTMyIG93bmVyLCB1MzIgdHlwZSwgdTMy Cj4gZW5naW5lX2NsYXNzaWQpOwo+ICt2b2lkIHhlX2h3X2VuZ2luZV9maW5kX2FuZF9jb3B5X2d1 Y19jYXB0dXJlX3NuYXBzaG90KHN0cnVjdAo+IHhlX2h3X2VuZ2luZSAqaHdlLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0Cj4geGVfaHdfZW5n aW5lX3NuYXBzaG90ICpzbmFwc2hvdCk7Cj4gK3ZvaWQgeGVfZ3VjX2NhcHR1cmVfZnJlZShzdHJ1 Y3QgeGVfZ3VjICpndWMpOwo+IMKgaW50IHhlX2d1Y19jYXB0dXJlX2luaXQoc3RydWN0IHhlX2d1 YyAqZ3VjKTsKPiDCoAo+IMKgI2VuZGlmIC8qIF9YRV9HVUNfQ0FQVFVSRV9IICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9ndWNfY2FwdHVyZV9md2lmLmgKPiBiL2RyaXZl cnMvZ3B1L2RybS94ZS94ZV9ndWNfY2FwdHVyZV9md2lmLmgKPiBpbmRleCAxOTllM2MwMTA4YTQu LjVlZjhjMjBmZTliYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Nh cHR1cmVfZndpZi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jYXB0dXJlX2Z3 aWYuaAo+IEBAIC0xMCw2ICsxMCw1MSBAQAo+IMKgCj4gwqAjaW5jbHVkZSAieGVfZ3VjX2Z3aWYu aCIKPiDCoAo+ICsvKgo+ICsgKiBzdHJ1Y3QgX19ndWNfY2FwdHVyZV9idWZzdGF0ZQo+ICsgKgo+ ICsgKiBCb29rLWtlZXBpbmcgc3RydWN0dXJlIHVzZWQgdG8gdHJhY2sgcmVhZCBhbmQgd3JpdGUg cG9pbnRlcnMKPiArICogYXMgd2UgZXh0cmFjdCBlcnJvciBjYXB0dXJlIGRhdGEgZnJvbSB0aGUg R3VDLWxvZy1idWZmZXIncwo+ICsgKiBlcnJvci1jYXB0dXJlIHJlZ2lvbiBhcyBhIHN0cmVhbSBv ZiBkd29yZHMuCj4gKyAqLwo+ICtzdHJ1Y3QgX19ndWNfY2FwdHVyZV9idWZzdGF0ZSB7Cj4gK8Kg wqDCoMKgwqDCoMKgdTMyIHNpemU7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIGRhdGFfb2Zmc2V0Owo+ ICvCoMKgwqDCoMKgwqDCoHUzMiByZDsKPiArwqDCoMKgwqDCoMKgwqB1MzIgd3I7Cj4gK307Cj4g Kwo+ICsvKgo+ICsgKiBzdHJ1Y3QgX19ndWNfY2FwdHVyZV9wYXJzZWRfb3V0cHV0IC0gZXh0cmFj dGVkIGVycm9yIGNhcHR1cmUgbm9kZQo+ICsgKgo+ICsgKiBBIHNpbmdsZSB1bml0IG9mIGV4dHJh Y3RlZCBlcnJvci1jYXB0dXJlIG91dHB1dCBkYXRhIGdyb3VwZWQKPiB0b2dldGhlcgo+ICsgKiBh dCBhbiBlbmdpbmUtaW5zdGFuY2UgbGV2ZWwuIFdlIGtlZXAgdGhlc2Ugbm9kZXMgaW4gYSBsaW5r ZWQKPiBsaXN0Lgo+ICsgKiBTZWUgY2FjaGVsaXN0IGFuZCBvdXRsaXN0IGJlbG93Lgo+ICsgKi8K PiArc3RydWN0IF9fZ3VjX2NhcHR1cmVfcGFyc2VkX291dHB1dCB7Cj4gK8KgwqDCoMKgwqDCoMKg LyoKPiArwqDCoMKgwqDCoMKgwqAgKiBBIHNpbmdsZSBzZXQgb2YgMyBjYXB0dXJlIGxpc3RzOiBh IGdsb2JhbC1saXN0Cj4gK8KgwqDCoMKgwqDCoMKgICogYW4gZW5naW5lLWNsYXNzLWxpc3QgYW5k IGFuIGVuZ2luZS1pbnN0YW5jZSBsaXN0Lgo+ICvCoMKgwqDCoMKgwqDCoCAqIG91dGxpc3QgaW4g X19ndWNfY2FwdHVyZV9wYXJzZWRfb3V0cHV0IHdpbGwga2VlcAo+ICvCoMKgwqDCoMKgwqDCoCAq IGEgbGlua2VkIGxpc3Qgb2YgdGhlc2Ugbm9kZXMgdGhhdCB3aWxsIGV2ZW50dWFsbHkKPiArwqDC oMKgwqDCoMKgwqAgKiBiZSBkZXRhY2hlZCBmcm9tIG91dGxpc3QgYW5kIGF0dGFjaGVkIGludG8g dG8KPiArwqDCoMKgwqDCoMKgwqAgKiB4ZV9jb2RlZHVtcCBpbiByZXNwb25zZSB0byBhIGNvbnRl eHQgcmVzZXQKPiArwqDCoMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGlz dF9oZWFkIGxpbms7Cj4gK8KgwqDCoMKgwqDCoMKgYm9vbCBpc19wYXJ0aWFsOwo+ICvCoMKgwqDC oMKgwqDCoHUzMiBlbmdfY2xhc3M7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIGVuZ19pbnN0Owo+ICvC oMKgwqDCoMKgwqDCoHUzMiBndWNfaWQ7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIGxyY2E7Cj4gK8Kg wqDCoMKgwqDCoMKgc3RydWN0IGdjYXBfcmVnX2xpc3RfaW5mbyB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHUzMiB2ZmlkOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB1MzIgbnVtX3JlZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBn dWNfbW1pb19yZWcgKnJlZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgfSByZWdpbmZvW0dVQ19DQVBUVVJF X0xJU1RfVFlQRV9NQVhdOwo+ICsjZGVmaW5lIEdDQVBfUEFSU0VEX1JFR0xJU1RfSU5ERVhfR0xP QkFMwqDCoAo+IEJJVChHVUNfQ0FQVFVSRV9MSVNUX1RZUEVfR0xPQkFMKQo+ICsjZGVmaW5lIEdD QVBfUEFSU0VEX1JFR0xJU1RfSU5ERVhfRU5HQ0xBU1MKPiBCSVQoR1VDX0NBUFRVUkVfTElTVF9U WVBFX0VOR0lORV9DTEFTUykKPiArfTsKPiArCj4gwqAvKgo+IMKgICogc3RydWN0IGd1Y19kZWJ1 Z19jYXB0dXJlX2xpc3RfaGVhZGVyIC8gc3RydWN0Cj4gZ3VjX2RlYnVnX2NhcHR1cmVfbGlzdAo+ IMKgICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19jdC5jCj4gYi9k cml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmMKPiBpbmRleCBjMWYyNTgzNDhmNWMuLjg2NWI1 OGJiNGZkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2N0LmMKPiBAQCAtMTA0NSw2ICsxMDQ1LDgg QEAgc3RhdGljIGludCBwcm9jZXNzX2cyaF9tc2coc3RydWN0IHhlX2d1Y19jdAo+ICpjdCwgdTMy ICptc2csIHUzMiBsZW4pCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBTZWxm dGVzdCBvbmx5IGF0IHRoZSBtb21lbnQgKi8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGJyZWFrOwo+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhFX0dVQ19BQ1RJT05fU1RBVEVfQ0FQ VFVSRV9OT1RJRklDQVRJT046Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9 IHhlX2d1Y19lcnJvcl9jYXB0dXJlX2hhbmRsZXIoZ3VjLCBwYXlsb2FkLAo+IGFkal9sZW4pOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiDCoMKgwqDCoMKgwqDCoMKg Y2FzZSBYRV9HVUNfQUNUSU9OX05PVElGWV9GTFVTSF9MT0dfQlVGRkVSX1RPX0ZJTEU6Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBGSVhNRTogSGFuZGxlIHRoaXMgKi8KPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Z3aWYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1 Y19md2lmLmgKPiBpbmRleCA5MDgyOTg3OTFjOTMuLmY4ZjljNzZlYjdhYyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX2Z3aWYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9ndWNfZndpZi5oCj4gQEAgLTIwNiw2ICsyMDYsMTIgQEAgZW51bSBndWNfY2FwdHVy ZV90eXBlIHsKPiDCoMKgwqDCoMKgwqDCoMKgR1VDX0NBUFRVUkVfTElTVF9UWVBFX01BWCwKPiDC oH07Cj4gwqAKPiArLyogR3VDIHN1cHBvcnQgbGltaXRlZCByZWdpc3RlcnMgcmFuZ2UgdG8gYmUg Y2FwdHVyZWQgZm9yIGRlYnVnCj4gcHVycG9zZSwKPiArICogZm9yIHVuc3VwcG9ydGVkIHJlZ2lz dGVycywgZGlyZWN0IHJlYWQgaXMgdGhlIG9ubHkgd2F5IHRvIHNhdmUKPiB0aGUgZGF0YS4KPiAr ICogR3VDIGNhcHR1cmUgaGFuZGxpbmcgd2lsbCBpZ25vcmUgYWxsIGxpc3RzIHdpdGggdGhpcyB0 eXBlOgo+IEdVQ19DQVBUVVJFX0xJU1RfVFlQRV9ESVJFQ1RfUkVBRAo+ICsgKi8KPiArI2RlZmlu ZSBHVUNfQ0FQVFVSRV9MSVNUX1RZUEVfRElSRUNUX1JFQUQgR1VDX0NBUFRVUkVfTElTVF9UWVBF X01BWAo+ICsKPiDCoC8qIENsYXNzIGluZGVjaWVzIGZvciBjYXB0dXJlX2NsYXNzIGFuZCBjYXB0 dXJlX2luc3RhbmNlIGFycmF5cyAqLwo+IMKgZW51bSB7Cj4gwqDCoMKgwqDCoMKgwqDCoEdVQ19D QVBUVVJFX0xJU1RfQ0xBU1NfUkVOREVSX0NPTVBVVEUgPSAwLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5jCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVf Z3VjX3N1Ym1pdC5jCj4gaW5kZXggNDdhYWIwNGNmMzRmLi5mMDJmNGMwYzk1NjggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS94ZS94ZV9ndWNfc3VibWl0LmMKPiBAQCAtMjUsNiArMjUsNyBAQAo+IMKgI2luY2x1 ZGUgInhlX2d0LmgiCj4gwqAjaW5jbHVkZSAieGVfZ3RfcHJpbnRrLmgiCj4gwqAjaW5jbHVkZSAi eGVfZ3VjLmgiCj4gKyNpbmNsdWRlICJ4ZV9ndWNfY2FwdHVyZS5oIgo+IMKgI2luY2x1ZGUgInhl X2d1Y19jdC5oIgo+IMKgI2luY2x1ZGUgInhlX2d1Y19leGVjX3F1ZXVlX3R5cGVzLmgiCj4gwqAj aW5jbHVkZSAieGVfZ3VjX2lkX21nci5oIgo+IEBAIC03NjksNyArNzcwLDcgQEAgc3RhdGljIHZv aWQgZ3VjX2V4ZWNfcXVldWVfZnJlZV9qb2Ioc3RydWN0Cj4gZHJtX3NjaGVkX2pvYiAqZHJtX2pv YikKPiDCoMKgwqDCoMKgwqDCoMKgeGVfc2NoZWRfam9iX3B1dChqb2IpOwo+IMKgfQo+IMKgCj4g LXN0YXRpYyBpbnQgZ3VjX3JlYWRfc3RvcHBlZChzdHJ1Y3QgeGVfZ3VjICpndWMpCj4gK2ludCB4 ZV9ndWNfcmVhZF9zdG9wcGVkKHN0cnVjdCB4ZV9ndWMgKmd1YykKPiDCoHsKPiDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIGF0b21pY19yZWFkKCZndWMtPnN1Ym1pc3Npb25fc3RhdGUuc3RvcHBlZCk7 Cj4gwqB9Cj4gQEAgLTc5MSw3ICs3OTIsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlX3NjaGVkdWxp bmdfZGVyZWdpc3RlcihzdHJ1Y3QKPiB4ZV9ndWMgKmd1YywKPiDCoMKgwqDCoMKgwqDCoMKgc2V0 X21pbl9wcmVlbXB0aW9uX3RpbWVvdXQoZ3VjLCBxKTsKPiDCoMKgwqDCoMKgwqDCoMKgc21wX3Jt YigpOwo+IMKgwqDCoMKgwqDCoMKgwqByZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoZ3VjLT5jdC53 cSwKPiAhZXhlY19xdWV1ZV9wZW5kaW5nX2VuYWJsZShxKSB8fAo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfcmVhZF9z dG9wcGVkKGd1YyksIEhaICogNSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlX2d1Y19yZWFkX3N0b3BwZWQoZ3VjKSwg SFogKiA1KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZXQpIHsKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ncHVfc2NoZWR1bGVyICpzY2hlZCA9ICZxLT5ndWMt PnNjaGVkOwo+IMKgCj4gQEAgLTkwNiw3ICs5MDcsNyBAQCBzdGF0aWMgdm9pZCB4ZV9ndWNfZXhl Y19xdWV1ZV9scl9jbGVhbnVwKHN0cnVjdAo+IHdvcmtfc3RydWN0ICp3KQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXQgPSB3YWl0X2V2ZW50X3RpbWVvdXQoZ3VjLT5jdC53cSwKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoAo+ICFleGVjX3F1ZXVlX3BlbmRpbmdfZGlzYWJsZShxKSB8fAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ3VjX3JlYWRfc3RvcHBlZChndWMpLCBIWiAqCj4gNSk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB4ZV9ndWNfcmVhZF9zdG9wcGVkKGd1YyksIEhaCj4gKiA1KTsKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcmV0KSB7Cj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3dhcm4oJnhlLT5kcm0sICJTY2hl ZHVsZSBkaXNhYmxlIGZhaWxlZAo+IHRvIHJlc3BvbmQiKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9zY2hlZF9zdWJtaXNzaW9uX3N0YXJ0KHNj aGVkKTsKPiBAQCAtOTI5LDYgKzkzMCw4IEBAIGd1Y19leGVjX3F1ZXVlX3RpbWVkb3V0X2pvYihz dHJ1Y3QgZHJtX3NjaGVkX2pvYgo+ICpkcm1fam9iKQo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgZXJy ID0gLUVUSU1FOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgaSA9IDA7Cj4gwqDCoMKgwqDCoMKgwqDC oGJvb2wgd2VkZ2VkOwo+ICvCoMKgwqDCoMKgwqDCoGJvb2wgcmVzZXRfc3RhdHVzID0gZXhlY19x dWV1ZV9yZXNldChxKTsKPiArwqDCoMKgwqDCoMKgwqBib29sIGd1Y19lbiA9IHhlX2RldmljZV91 Y19lbmFibGVkKHhlKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKgo+IMKgwqDCoMKgwqDCoMKg wqAgKiBURFIgaGFzIGZpcmVkIGJlZm9yZSBmcmVlIGpvYiB3b3JrZXIuIENvbW1vbiBpZiBleGVj IHF1ZXVlCj4gQEAgLTk0OCw3ICs5NTEsMTUgQEAgZ3VjX2V4ZWNfcXVldWVfdGltZWRvdXRfam9i KHN0cnVjdCBkcm1fc2NoZWRfam9iCj4gKmRybV9qb2IpCj4gwqDCoMKgwqDCoMKgwqDCoHhlX2d0 X1dBUk4ocS0+Z3QsIHEtPmZsYWdzICYgRVhFQ19RVUVVRV9GTEFHX1ZNICYmCj4gIWV4ZWNfcXVl dWVfa2lsbGVkKHEpLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiVk0g am9iIHRpbWVkIG91dCBvbiBub24ta2lsbGVkIGV4ZWNxdWV1ZVxuIik7Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqBpZiAoIWV4ZWNfcXVldWVfa2lsbGVkKHEpKQo+ICvCoMKgwqDCoMKgwqDCoC8qIHRh a2UgZGV2Y29yZWR1bXAgb246Cj4gK8KgwqDCoMKgwqDCoMKgICogMS4gR3VDIG5vdCBlbmFibGVk Cj4gK8KgwqDCoMKgwqDCoMKgICogMi4gR3VDIGVuYWJsZWQgd2l0aCBHdUMgcmVzZXQgc3RhdHVz ID09IDEKPiArwqDCoMKgwqDCoMKgwqAgKiBXaGVuIEd1QyBlbmFibGVkLCByZWdpc3RlciB2YWx1 ZSBpcyBjYXB0dXJlZCBieSBHdUMsIEd1Qwo+IHdpbGwgbm90aWZ5IGhvc3QKPiArwqDCoMKgwqDC oMKgwqAgKiB3aXRoIGNhcHR1cmUgbm90aWZpY2F0aW9uIG1lc3NhZ2UsIHdoaWNoIGlzIHJpZ2h0 IGJlZm9yZQo+IHJlc2V0Lgo+ICvCoMKgwqDCoMKgwqDCoCAqIEd1QyByZXNldCBzdGF0dXMgMSBh bHNvIG1lYW5zIGNhcHR1cmUgcmVhZHkuCj4gK8KgwqDCoMKgwqDCoMKgICogSWYgbm90IHJlYWR5 LCB3aWxsIHRha2Ugc25hcHNob3QgYWZ0ZXIgd2FpdCBldmVudCB3aXRoaW4KPiB0aGlzIGZ1bmN0 aW9uLgo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmICghZXhlY19xdWV1 ZV9raWxsZWQocSkgJiYgKCFndWNfZW4gfHwgKGd1Y19lbiAmJgo+IHJlc2V0X3N0YXR1cykpKQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfZGV2Y29yZWR1bXAoam9iKTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqB0cmFjZV94ZV9zY2hlZF9qb2JfdGltZWRvdXQoam9iKTsKPiBA QCAtOTk2LDggKzEwMDcsOCBAQCBndWNfZXhlY19xdWV1ZV90aW1lZG91dF9qb2Ioc3RydWN0IGRy bV9zY2hlZF9qb2IKPiAqZHJtX2pvYikKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHNtcF9ybWIoKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHdhaXRf ZXZlbnRfdGltZW91dChndWMtPmN0LndxLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gIWV4 ZWNfcXVldWVfcGVuZGluZ19kaXNhYmxlKHEpIHx8Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBn dWNfcmVhZF9zdG9wcGVkKGd1YyksIEhaICoKPiA1KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCFyZXQgfHwgZ3VjX3JlYWRfc3RvcHBlZChndWMpKSB7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB4ZV9ndWNfcmVhZF9zdG9wcGVkKGd1YyksIEhaCj4gKiA1KTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZXQgfHwgeGVfZ3VjX3JlYWRfc3RvcHBl ZChndWMpKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZHJtX3dhcm4oJnhlLT5kcm0sICJTY2hlZHVsZSBkaXNhYmxlIGZhaWxlZAo+IHRvIHJlc3Bv bmQiKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4 ZV9zY2hlZF9hZGRfcGVuZGluZ19qb2Ioc2NoZWQsIGpvYik7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGVfc2NoZWRfc3VibWlzc2lvbl9zdGFydChz Y2hlZCk7Cj4gQEAgLTEwMDcsNiArMTAxOCwxMCBAQCBndWNfZXhlY19xdWV1ZV90aW1lZG91dF9q b2Ioc3RydWN0Cj4gZHJtX3NjaGVkX2pvYiAqZHJtX2pvYikKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gK8KgwqDCoMKgwqDCoMKg LyogV2hlbiBlbnRyaW5nIHRoaXMgZnVuY3Rpb24sIGlmIGNhcHR1cmUvcmVzZXQgbm90IHJlYWR5 LAo+IG5vdyBpcyB0aW1lIHRvIHRha2Ugc25hcHNob3QgKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAo IWV4ZWNfcXVldWVfa2lsbGVkKHEpICYmIGd1Y19lbiAmJiAhcmVzZXRfc3RhdHVzKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZV9kZXZjb3JlZHVtcChqb2IpOwo+ICsKPiDCoMKg wqDCoMKgwqDCoMKgLyogU3RvcCBmZW5jZSBzaWduYWxpbmcgKi8KPiDCoMKgwqDCoMKgwqDCoMKg eGVfaHdfZmVuY2VfaXJxX3N0b3AocS0+ZmVuY2VfaXJxKTsKPiDCoAo+IEBAIC0xMTEyLDcgKzEx MjcsNyBAQCBzdGF0aWMgdm9pZCBzdXNwZW5kX2ZlbmNlX3NpZ25hbChzdHJ1Y3QKPiB4ZV9leGVj X3F1ZXVlICpxKQo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZGV2aWNlICp4ZSA9IGd1Y190 b194ZShndWMpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHhlX2Fzc2VydCh4ZSwgZXhlY19xdWV1 ZV9zdXNwZW5kZWQocSkgfHwgZXhlY19xdWV1ZV9raWxsZWQocSkKPiB8fAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfcmVhZF9zdG9wcGVkKGd1YykpOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZV9ndWNfcmVhZF9zdG9wcGVkKGd1YykpOwo+IMKg wqDCoMKgwqDCoMKgwqB4ZV9hc3NlcnQoeGUsIHEtPmd1Yy0+c3VzcGVuZF9wZW5kaW5nKTsKPiDC oAo+IMKgwqDCoMKgwqDCoMKgwqBxLT5ndWMtPnN1c3BlbmRfcGVuZGluZyA9IGZhbHNlOwo+IEBA IC0xMTI4LDkgKzExNDMsOSBAQCBzdGF0aWMgdm9pZAo+IF9fZ3VjX2V4ZWNfcXVldWVfcHJvY2Vz c19tc2dfc3VzcGVuZChzdHJ1Y3QgeGVfc2NoZWRfbXNnICptc2cpCj4gwqDCoMKgwqDCoMKgwqDC oGlmIChndWNfZXhlY19xdWV1ZV9hbGxvd2VkX3RvX2NoYW5nZV9zdGF0ZShxKSAmJgo+ICFleGVj X3F1ZXVlX3N1c3BlbmRlZChxKSAmJgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhlY19xdWV1 ZV9lbmFibGVkKHEpKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3YWl0X2V2 ZW50KGd1Yy0+Y3Qud3EsIHEtPmd1Yy0+cmVzdW1lX3RpbWUgIT0KPiBSRVNVTUVfUEVORElORyB8 fAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBn dWNfcmVhZF9zdG9wcGVkKGd1YykpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB4ZV9ndWNfcmVhZF9zdG9wcGVkKGd1YykpOwo+IMKgCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghZ3VjX3JlYWRfc3RvcHBlZChndWMpKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgheGVfZ3VjX3JlYWRfc3RvcHBl ZChndWMpKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgTUFLRV9TQ0hFRF9DT05URVhUX0FDVElPTihxLCBESVNBQkxFKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzNjQgc2luY2VfcmVzdW1lX21zID0K PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKga3RpbWVfbXNfZGVsdGEoa3RpbWVfZ2V0KCksCj4gQEAgLTEyNTgsNyArMTI3Myw3 IEBAIHN0YXRpYyBpbnQgZ3VjX2V4ZWNfcXVldWVfaW5pdChzdHJ1Y3QKPiB4ZV9leGVjX3F1ZXVl ICpxKQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHEtPmVudGl0eSA9ICZnZS0+ZW50aXR5Owo+IMKg Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKGd1Y19yZWFkX3N0b3BwZWQoZ3VjKSkKPiArwqDCoMKgwqDC oMKgwqBpZiAoeGVfZ3VjX3JlYWRfc3RvcHBlZChndWMpKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgeGVfc2NoZWRfc3RvcChzY2hlZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg bXV0ZXhfdW5sb2NrKCZndWMtPnN1Ym1pc3Npb25fc3RhdGUubG9jayk7Cj4gQEAgLTEzODUsNyAr MTQwMCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19leGVjX3F1ZXVlX3N1c3BlbmRfd2FpdChzdHJ1Y3QK PiB4ZV9leGVjX3F1ZXVlICpxKQo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVfZ3VjICpndWMg PSBleGVjX3F1ZXVlX3RvX2d1YyhxKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqB3YWl0X2V2ZW50 KHEtPmd1Yy0+c3VzcGVuZF93YWl0LCAhcS0+Z3VjLT5zdXNwZW5kX3BlbmRpbmcgfHwKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfcmVhZF9zdG9wcGVkKGd1YykpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhlX2d1Y19yZWFkX3N0b3BwZWQo Z3VjKSk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIGd1Y19leGVjX3F1ZXVlX3Jlc3VtZShz dHJ1Y3QgeGVfZXhlY19xdWV1ZSAqcSkKPiBAQCAtMTQ5NSw3ICsxNTEwLDcgQEAgaW50IHhlX2d1 Y19zdWJtaXRfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgeGVfZ3VjCj4gKmd1YykKPiDCoAo+IMKgdm9p ZCB4ZV9ndWNfc3VibWl0X3Jlc2V0X3dhaXQoc3RydWN0IHhlX2d1YyAqZ3VjKQo+IMKgewo+IC3C oMKgwqDCoMKgwqDCoHdhaXRfZXZlbnQoZ3VjLT5jdC53cSwgIWd1Y19yZWFkX3N0b3BwZWQoZ3Vj KSk7Cj4gK8KgwqDCoMKgwqDCoMKgd2FpdF9ldmVudChndWMtPmN0LndxLCAheGVfZ3VjX3JlYWRf c3RvcHBlZChndWMpKTsKPiDCoH0KPiDCoAo+IMKgdm9pZCB4ZV9ndWNfc3VibWl0X3N0b3Aoc3Ry dWN0IHhlX2d1YyAqZ3VjKQo+IEBAIC0xNTA0LDcgKzE1MTksNyBAQCB2b2lkIHhlX2d1Y19zdWJt aXRfc3RvcChzdHJ1Y3QgeGVfZ3VjICpndWMpCj4gwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxv bmcgaW5kZXg7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3VjX3Rv X3hlKGd1Yyk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqB4ZV9hc3NlcnQoeGUsIGd1Y19yZWFkX3N0 b3BwZWQoZ3VjKSA9PSAxKTsKPiArwqDCoMKgwqDCoMKgwqB4ZV9hc3NlcnQoeGUsIHhlX2d1Y19y ZWFkX3N0b3BwZWQoZ3VjKSA9PSAxKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBtdXRleF9sb2Nr KCZndWMtPnN1Ym1pc3Npb25fc3RhdGUubG9jayk7Cj4gwqAKPiBAQCAtMTU0Miw3ICsxNTU3LDcg QEAgaW50IHhlX2d1Y19zdWJtaXRfc3RhcnQoc3RydWN0IHhlX2d1YyAqZ3VjKQo+IMKgwqDCoMKg wqDCoMKgwqB1bnNpZ25lZCBsb25nIGluZGV4Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGVf ZGV2aWNlICp4ZSA9IGd1Y190b194ZShndWMpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgeGVfYXNz ZXJ0KHhlLCBndWNfcmVhZF9zdG9wcGVkKGd1YykgPT0gMSk7Cj4gK8KgwqDCoMKgwqDCoMKgeGVf YXNzZXJ0KHhlLCB4ZV9ndWNfcmVhZF9zdG9wcGVkKGd1YykgPT0gMSk7Cj4gwqAKPiDCoMKgwqDC oMKgwqDCoMKgbXV0ZXhfbG9jaygmZ3VjLT5zdWJtaXNzaW9uX3N0YXRlLmxvY2spOwo+IMKgwqDC oMKgwqDCoMKgwqBhdG9taWNfZGVjKCZndWMtPnN1Ym1pc3Npb25fc3RhdGUuc3RvcHBlZCk7Cj4g QEAgLTE2OTgsOCArMTcxMyw2IEBAIGludCB4ZV9ndWNfZXhlY19xdWV1ZV9yZXNldF9oYW5kbGVy KHN0cnVjdAo+IHhlX2d1YyAqZ3VjLCB1MzIgKm1zZywgdTMyIGxlbikKPiDCoMKgwqDCoMKgwqDC oMKgeGVfZ3RfaW5mbyhndCwgIkVuZ2luZSByZXNldDogZW5naW5lX2NsYXNzPSVzLCBsb2dpY2Fs X21hc2s6Cj4gMHgleCwgZ3VjX2lkPSVkIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgeGVfaHdfZW5naW5lX2NsYXNzX3RvX3N0cihxLT5jbGFzcyksIHEtCj4gPmxvZ2lj YWxfbWFzaywgZ3VjX2lkKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoC8qIEZJWE1FOiBEbyBlcnJv ciBjYXB0dXJlLCBtb3N0IGxpa2VseSBhc3luYyAqLwo+IC0KPiDCoMKgwqDCoMKgwqDCoMKgdHJh Y2VfeGVfZXhlY19xdWV1ZV9yZXNldChxKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKgo+IEBA IC0xNzE1LDYgKzE3MjgsMjQgQEAgaW50IHhlX2d1Y19leGVjX3F1ZXVlX3Jlc2V0X2hhbmRsZXIo c3RydWN0Cj4geGVfZ3VjICpndWMsIHUzMiAqbXNnLCB1MzIgbGVuKQo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+ICtpbnQgeGVfZ3VjX2Vycm9yX2NhcHR1cmVfaGFuZGxl cihzdHJ1Y3QgeGVfZ3VjICpndWMsIHUzMiAqbXNnLCB1MzIKPiBsZW4pCj4gK3sKPiArwqDCoMKg wqDCoMKgwqB1MzIgc3RhdHVzOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAodW5saWtlbHkobGVu ICE9IDEpKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2d0X2RiZyhndWNf dG9fZ3QoZ3VjKSwgIkludmFsaWQgbGVuZ3RoICV1IiwgbGVuKTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FUFJPVE87Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiAr wqDCoMKgwqDCoMKgwqBzdGF0dXMgPSBtc2dbMF0gJiBYRV9HVUNfU1RBVEVfQ0FQVFVSRV9FVkVO VF9TVEFUVVNfTUFTSzsKPiArwqDCoMKgwqDCoMKgwqBpZiAoc3RhdHVzID09IFhFX0dVQ19TVEFU RV9DQVBUVVJFX0VWRU5UX1NUQVRVU19OT1NQQUNFKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4ZV9ndF93YXJuKGd1Y190b19ndChndWMpLCAiRzJILUVycm9yIGNhcHR1cmUgbm8K PiBzcGFjZSIpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqB4ZV9ndWNfY2FwdHVyZV9wcm9jZXNzKGd1 Yyk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICt9Cj4gKwo+IMKgaW50IHhlX2d1 Y19leGVjX3F1ZXVlX21lbW9yeV9jYXRfZXJyb3JfaGFuZGxlcihzdHJ1Y3QgeGVfZ3VjICpndWMs Cj4gdTMyICptc2csCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGxl bikKPiDCoHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQu aAo+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2d1Y19zdWJtaXQuaAo+IGluZGV4IDRhZDVmNGMx YjA4NC4uZDkyMjU2ZGU0NzNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9n dWNfc3VibWl0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfZ3VjX3N1Ym1pdC5oCj4g QEAgLTE5LDEyICsxOSwxNCBAQCB2b2lkIHhlX2d1Y19zdWJtaXRfcmVzZXRfd2FpdChzdHJ1Y3Qg eGVfZ3VjCj4gKmd1Yyk7Cj4gwqB2b2lkIHhlX2d1Y19zdWJtaXRfc3RvcChzdHJ1Y3QgeGVfZ3Vj ICpndWMpOwo+IMKgaW50IHhlX2d1Y19zdWJtaXRfc3RhcnQoc3RydWN0IHhlX2d1YyAqZ3VjKTsK PiDCoAo+ICtpbnQgeGVfZ3VjX3JlYWRfc3RvcHBlZChzdHJ1Y3QgeGVfZ3VjICpndWMpOwo+IMKg aW50IHhlX2d1Y19zY2hlZF9kb25lX2hhbmRsZXIoc3RydWN0IHhlX2d1YyAqZ3VjLCB1MzIgKm1z ZywgdTMyCj4gbGVuKTsKPiDCoGludCB4ZV9ndWNfZGVyZWdpc3Rlcl9kb25lX2hhbmRsZXIoc3Ry dWN0IHhlX2d1YyAqZ3VjLCB1MzIgKm1zZywgdTMyCj4gbGVuKTsKPiDCoGludCB4ZV9ndWNfZXhl Y19xdWV1ZV9yZXNldF9oYW5kbGVyKHN0cnVjdCB4ZV9ndWMgKmd1YywgdTMyICptc2csCj4gdTMy IGxlbik7Cj4gwqBpbnQgeGVfZ3VjX2V4ZWNfcXVldWVfbWVtb3J5X2NhdF9lcnJvcl9oYW5kbGVy KHN0cnVjdCB4ZV9ndWMgKmd1YywKPiB1MzIgKm1zZywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MzIgbGVuKTsKPiDCoGludCB4ZV9ndWNfZXhlY19xdWV1ZV9yZXNldF9m YWlsdXJlX2hhbmRsZXIoc3RydWN0IHhlX2d1YyAqZ3VjLCB1MzIKPiAqbXNnLCB1MzIgbGVuKTsK PiAraW50IHhlX2d1Y19lcnJvcl9jYXB0dXJlX2hhbmRsZXIoc3RydWN0IHhlX2d1YyAqZ3VjLCB1 MzIgKm1zZywgdTMyCj4gbGVuKTsKPiDCoAo+IMKgc3RydWN0IHhlX2d1Y19zdWJtaXRfZXhlY19x dWV1ZV9zbmFwc2hvdCAqCj4gwqB4ZV9ndWNfZXhlY19xdWV1ZV9zbmFwc2hvdF9jYXB0dXJlKHN0 cnVjdCB4ZV9leGVjX3F1ZXVlICpxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX2h3X2VuZ2luZS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdfZW5naW5lLmMKPiBp bmRleCAwYTgzNTA2ZTFhZDguLjNiYzg4ZmJhZDk1MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0veGUveGVfaHdfZW5naW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfaHdf ZW5naW5lLmMKPiBAQCAtMjAsNiArMjAsOSBAQAo+IMKgI2luY2x1ZGUgInhlX2d0X3ByaW50ay5o Igo+IMKgI2luY2x1ZGUgInhlX2d0X21jci5oIgo+IMKgI2luY2x1ZGUgInhlX2d0X3RvcG9sb2d5 LmgiCj4gKyNpbmNsdWRlICJ4ZV9ndWMuaCIKPiArI2luY2x1ZGUgInhlX2d1Y19jYXB0dXJlLmgi Cj4gKyNpbmNsdWRlICJ4ZV9ndWNfY2FwdHVyZV9md2lmLmgiCj4gwqAjaW5jbHVkZSAieGVfaHdf ZmVuY2UuaCIKPiDCoCNpbmNsdWRlICJ4ZV9pcnEuaCIKPiDCoCNpbmNsdWRlICJ4ZV9scmMuaCIK PiBAQCAtMjg3LDYgKzI5MCw3IEBAIHN0YXRpYyB2b2lkIGh3X2VuZ2luZV9tbWlvX3dyaXRlMzIo c3RydWN0Cj4geGVfaHdfZW5naW5lICpod2UsIHN0cnVjdCB4ZV9yZWcgcmVnLAo+IMKgc3RhdGlj IHUzMiBod19lbmdpbmVfbW1pb19yZWFkMzIoc3RydWN0IHhlX2h3X2VuZ2luZSAqaHdlLCBzdHJ1 Y3QKPiB4ZV9yZWcgcmVnKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqB4ZV9ndF9hc3NlcnQoaHdl LT5ndCwgIShyZWcuYWRkciAmIGh3ZS0+bW1pb19iYXNlKSk7Cj4gKwo+IMKgwqDCoMKgwqDCoMKg wqB4ZV9mb3JjZV93YWtlX2Fzc2VydF9oZWxkKGd0X3RvX2Z3KGh3ZS0+Z3QpLCBod2UtPmRvbWFp bik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmVnLmFkZHIgKz0gaHdlLT5tbWlvX2Jhc2U7Cj4g QEAgLTgyNSw2ICs4MjksNjIgQEAgeGVfaHdfZW5naW5lX3NuYXBzaG90X2luc3Rkb25lX2NhcHR1 cmUoc3RydWN0Cj4geGVfaHdfZW5naW5lICpod2UsCj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoH0K PiDCoAo+ICtzdGF0aWMgdm9pZAo+ICt4ZV9od19lbmdpbmVfc25hcHNob3RfZnJvbV9od19ieV90 eXBlKHN0cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB4 ZV9od19lbmdpbmVfc25hcHNob3QKPiAqc25hcHNob3QsIGludCB0eXBlKQo+ICt7Cj4gK8KgwqDC oMKgwqDCoMKgY29uc3Qgc3RydWN0IF9fZ3VjX21taW9fcmVnX2Rlc2NyX2dyb3VwICpsaXN0Owo+ ICvCoMKgwqDCoMKgwqDCoHUxNiBjYXB0dXJlX2NsYXNzID0geGVfZW5naW5lX2NsYXNzX3RvX2d1 Y19jYXB0dXJlX2NsYXNzKGh3ZS0KPiA+Y2xhc3MpOwo+ICvCoMKgwqDCoMKgwqDCoGludCBpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqBsaXN0ID0KPiB4ZV9ndWNfY2FwdHVyZV9nZXRfcmVnX2Rlc2Nf bGlzdChHVUNfQ0FQVFVSRV9MSVNUX0lOREVYX1BGLCB0eXBlLAo+IGNhcHR1cmVfY2xhc3MpOwo+ ICvCoMKgwqDCoMKgwqDCoGlmICghbGlzdCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgbGlzdC0+bnVt X3JlZ3M7IGkrKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgKmZpZWxk Owo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogbG9vcCB1bnRpbCBleHRy YSBvcGVyYXRpb24gcmVnaXN0ZXJzIHpvbmUgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKGxpc3QtPmxpc3RbaV0ucmVnLmFkZHIgPT0KPiBYRV9HVUNfU05BUFNIT1RfRVhU UkFfT1BFUkFUSU9OX1JFR1NfU1RBUlRfUkVHX0FERFIpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZpZWxkID0gKHUzMiAqKSgodWludHB0cl90KSZzbmFwc2hvdC0+cmVnICsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBsaXN0LT5saXN0W2ldLnBvc2l0aW9uX2luX3NuYXBzaG90KTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHR5cGUgPT0gR1VDX0NBUFRVUkVfTElTVF9UWVBFX0VO R0lORV9JTlNUQU5DRSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCpmaWVsZCA9IGh3X2VuZ2luZV9tbWlvX3JlYWQzMihod2UsIGxpc3QtCj4gPmxpc3Rb aV0ucmVnKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKmZpZWxkID0geGVfbW1pb19y ZWFkMzIoaHdlLT5ndCwgbGlzdC0KPiA+bGlzdFtpXS5yZWcpOwo+ICvCoMKgwqDCoMKgwqDCoH0K PiArfQo+ICsKPiArLyoqCj4gKyAqIHhlX2h3X2VuZ2luZV9zbmFwc2hvdF9mcm9tX2h3IC0gVGFr ZSBhIHF1aWNrIGVuZ2luZSBzbmFwc2hvdCBmcm9tCj4gSFcuCj4gKyAqIEBod2U6IFhlIEhXIEVu Z2luZS4KPiArICogQHNuYXBzaG90OiBQb2ludCB0byB0aGUgWGUgSFcgRW5naW5lIHNuYXBzaG90 IG9iamVjdCB0byBzYXZlCj4gZGF0YS4KPiArICoKPiArICogVGhpcyBjYW4gYmUgcHJpbnRlZCBv dXQgaW4gYSBsYXRlciBzdGFnZSBsaWtlIGR1cmluZyBkZXZfY29yZWR1bXAKPiArICogYW5hbHlz aXMuCj4gKyAqCj4gKyAqIFJldHVybnM6IE5vbmUKPiArICovCj4gK3N0YXRpYyB2b2lkCj4gK3hl X2h3X2VuZ2luZV9zbmFwc2hvdF9mcm9tX2h3KHN0cnVjdCB4ZV9od19lbmdpbmUgKmh3ZSwgc3Ry dWN0Cj4geGVfaHdfZW5naW5lX3NuYXBzaG90ICpzbmFwc2hvdCkKPiArewo+ICvCoMKgwqDCoMKg wqDCoGludCB0eXBlOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBmb3IgKHR5cGUgPSBHVUNfQ0FQVFVS RV9MSVNUX1RZUEVfR0xPQkFMOyB0eXBlIDwKPiBHVUNfQ0FQVFVSRV9MSVNUX1RZUEVfTUFYOyB0 eXBlKyspCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2h3X2VuZ2luZV9zbmFw c2hvdF9mcm9tX2h3X2J5X3R5cGUoaHdlLCBzbmFwc2hvdCwKPiB0eXBlKTsKPiArCj4gK8KgwqDC oMKgwqDCoMKgLyogRXh0cmEgb3BlcmF0aW9uIHJlcXVpcmVkIHJlZ2lzdGVycyB6b25lIC0gc3Rh cnQgKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAoeGVfZ3RfaGFzX2luZGlyZWN0X3Jpbmdfc3RhdGUo aHdlLT5ndCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNuYXBzaG90LT5yZWcu aW5kaXJlY3RfcmluZ19zdGF0ZSA9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBod19lbmdpbmVfbW1pb19yZWFkMzIoaHdlLAo+IElORElSRUNUX1JJTkdf U1RBVEUoMCkpOwo+ICvCoMKgwqDCoMKgwqDCoC8qIEV4dHJhIG9wZXJhdGlvbiByZXF1aXJlZCBy ZWdpc3RlcnMgem9uZSAtIEVuZCAqLwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBDYXB0dXJlIHN0 ZWVyaW5nIHJlZ2lzdGVycyAqLwo+ICvCoMKgwqDCoMKgwqDCoHhlX2h3X2VuZ2luZV9zbmFwc2hv dF9pbnN0ZG9uZV9jYXB0dXJlKGh3ZSwgc25hcHNob3QpOwo+ICt9Cj4gKwo+IMKgLyoqCj4gwqAg KiB4ZV9od19lbmdpbmVfc25hcHNob3RfY2FwdHVyZSAtIFRha2UgYSBxdWljayBzbmFwc2hvdCBv ZiB0aGUgSFcKPiBFbmdpbmUuCj4gwqAgKiBAaHdlOiBYZSBIVyBFbmdpbmUuCj4gQEAgLTgzOSw4 ICs4OTksMTIgQEAgc3RydWN0IHhlX2h3X2VuZ2luZV9zbmFwc2hvdCAqCj4gwqB4ZV9od19lbmdp bmVfc25hcHNob3RfY2FwdHVyZShzdHJ1Y3QgeGVfaHdfZW5naW5lICpod2UpCj4gwqB7Cj4gwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9od19lbmdpbmVfc25hcHNob3QgKnNuYXBzaG90Owo+ICvC oMKgwqDCoMKgwqDCoHN0cnVjdCB4ZV9ndCAqZ3QgPSBod2UtPmd0Owo+ICvCoMKgwqDCoMKgwqDC oHN0cnVjdCB4ZV9kZXZpY2UgKnhlID0gZ3RfdG9feGUoZ3QpOwo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCB4ZV9ndWMgKmd1YyA9ICZndC0+dWMuZ3VjOwo+IAphbGFuOnNuaXAKCj4gK8KgwqDCoMKg wqDCoMKgLyogQ2hlY2sgR3VDIHNldHRpbmdzLCBqb2IgaXMgc2V0IGFuZCBjYXB0dXJlIG91dGxp c3Qgbm90Cj4gZW1wdHksCj4gK8KgwqDCoMKgwqDCoMKgICogb3RoZXJ3aXNlIHRha2UgaXQgZnJv bSBlbmdpbmUKPiArwqDCoMKgwqDCoMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAoeGVfZGV2 aWNlX3VjX2VuYWJsZWQoeGUpICYmIHhlLT53ZWRnZWQubW9kZSA+PSAxICYmCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgICFsaXN0X2VtcHR5KCZndWMtPmNhcHR1cmUtPm91dGxpc3QpICYmIHhlLQo+ ID5kZXZjb3JlZHVtcC5qb2IpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhlX2h3 X2VuZ2luZV9maW5kX2FuZF9jb3B5X2d1Y19jYXB0dXJlX3NuYXBzaG90KGh3ZSwKPiBzbmFwc2hv dCk7Cj4gK8KgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB4ZV9od19lbmdpbmVfc25hcHNob3RfZnJvbV9odyhod2UsIHNuYXBzaG90KTsKCmFsYW46IGlu IHRoZSBhYm92ZSBpZi1lbHNlIGNoZWNrLCB3ZSBhcmUgYXNzdW1pbmcgdGhhdCBndWMncyBjYXB0 dXJlCmxpc3Qgbm90IGJlaW5nIGVtcHR5IG1lYW5zIHdlIGhhdmUgdGhlIGNhcHR1cmVkIG5vZGUg Zm9yIHRoaXMKZGV2Y29yZWR1bXAgdHJpZ2VyLi4uIGhvd2V2ZXIsIGluIGxhcmdlciBzY2FsZSBw bGF0Zm9ybXMgd2UgY291bGQgaGF2ZQptdWx0aXBsZSBjYXB0dXJlZCBub2RlcyBmcm9tIG11bHRp cGxlIGVuZ2luZXMgc28gd2Ugc2hvdWxkIG5vdApiZSByZWx5aW5nIG9uIGp1c3Qgd2hldGhlciBp dHMgZW1wdHkgb3Igbm90LCByYXRoZXIgdGhlIGNoZWNrIHNob3VsZApjYWxsIGd1YyBjYXB0dXJl IHRvIGZpbmQgbWF0Y2hpbmcgbm9kZSBiYXNlZCBvbiBscmMsIGd1Yy1pZCwgZW5nbmluZQpldGMg KGkuZS4gYmFzaWNhbGx5IGNhbGwgCnhlX2h3X2VuZ2luZV9maW5kX2FuZF9jb3B5X2d1Y19jYXB0 dXJlX3NuYXBzaG90IGRpcmVjdGx5IHRvIHNlZSBpZiB3ZQpoYXZlIGEgZHVtcC4pCgphbGFuOnNu aXAuCgpJJ2xsIHJldmlldyB0aGUgcmVzdCBvZiB0aGlzIHBhdGNoIGFmdGVyIHJldjkgaXMgb3V0 IHNpbmNlIHRoZXJlIGFyZQpvdGhlciBjaGFuZ2VzIGluY29taW5nIGFzIHBlciBteSBmaXJzdCBy ZXZpZXcgY29tbWVudHMgb24gdG9wLgo=