From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id tTkZI8L0AWqYGzAAWB0awg (envelope-from ) for ; Mon, 11 May 2026 11:24:50 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=iz38cHjC; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 7BBFC1E067; Mon, 11 May 2026 11:24:50 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id EC4521E067 for ; Mon, 11 May 2026 11:24:46 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A107A4BAE7D8 for ; Mon, 11 May 2026 15:24:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A107A4BAE7D8 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=iz38cHjC Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by sourceware.org (Postfix) with ESMTPS id EAC864B99F42 for ; Mon, 11 May 2026 15:24:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EAC864B99F42 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org EAC864B99F42 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.10 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1778513045; cv=fail; b=r76QTyXp5BGzPJje9OoiXKl2q+R8MH7p90QUZwbzQUK9mzHUCaRGru5czXvgaW8Qxn6ZONC9AUeQxUTl3DnKnbQ4qIGOKWCGO0b1V4GT0ql43B5ZoHNDTidXbtW60wyg4/+hcIagrpQS6dP4zM7ShgI6qtWZdgHw5UE/begwg4U= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1778513045; c=relaxed/simple; bh=5kfIIHU8NDfIB992oJtYzF7llauVRQhUdnXT6SMhoRE=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=n7ubKt6dUtVWokatjdDgAYv8KgW6etLSOoDpRXNbcvN7fULyJk5uSrqmY0Twrawa5CkGlg6nqb+TsIIxxS8OMKQiS3k+u2Wh/ehKcBC0TrnFVjIKOfQRzaGTM+3dkZklPnJme9Ugf4bqPgojWFlry1qyFYz+2W4YBAbM57OelOo= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=iz38cHjC DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EAC864B99F42 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1778513045; x=1810049045; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=5kfIIHU8NDfIB992oJtYzF7llauVRQhUdnXT6SMhoRE=; b=iz38cHjCXGF5zOD+qmZzQl8JyB0BYwE535oiNtkoUljoI2RltpRXrzJy JL0cjiF1fX2vOeUpZcPjiRmtohiiNZwvaecNPnuCubGWoHVTBdZajEp1+ gIGcnNSWoOjKm5uS70wJdxkiZdlXw25BjSlZJmRuHqpRQpsMTu3o2mlg8 JzgTpn27wB9+xLEoSuJ9kB3UhgdlgqFuwEcTHZfPdyNio33FJCLgh72Z7 khk/QQdUkLeNHM/W9/ISCoGCJJLd+WvS/840v7l5T/R4CxpWN5GLWTuhg nz7EYt+WpYoE250n3FFAvj9KVazxZULmH9yIvTtq6gusmGqM0SvIDN6Hj Q==; X-CSE-ConnectionGUID: 32oZ0dwaS1KT9nnKL9E8Jg== X-CSE-MsgGUID: /8PTmgk7QXqDsAHQLjx0eA== X-IronPort-AV: E=McAfee;i="6800,10657,11783"; a="90779993" X-IronPort-AV: E=Sophos;i="6.23,229,1770624000"; d="scan'208";a="90779993" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2026 08:24:04 -0700 X-CSE-ConnectionGUID: 4FX2kG2BT8K0+w+8Ncsk7g== X-CSE-MsgGUID: bcAN8JmHQkqDxV+RYyb82g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,229,1770624000"; d="scan'208";a="239297011" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa004.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2026 08:24:03 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Mon, 11 May 2026 08:24:03 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Mon, 11 May 2026 08:24:03 -0700 Received: from CO1PR03CU002.outbound.protection.outlook.com (52.101.46.9) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Mon, 11 May 2026 08:24:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Y1fbHzVohbgfqfxg6SEAiYk0ad2YXNy3cVjrQOh6R8YemFQRSKaS4EYwEU8PfUpMSPwcnYUo3gCpe/mvmC+fyQXL2ZLTAeT085xTz1OrhhgKZnYzOJipyZIlgBI3LeU1YoaoQ9Wtcn5K59gDqiQag16OrV6fIbfblH85aRjrS5t8BFMsH7IFe/Pe5+cyBpOs9HJlbYWl4KjJt78d7oHrmW2e6LXQb6fLeq2EpPgqqDrK6GYn8q7E2FlI3uCmBmfwHE5++uWUpcaiy6i9TAL38H6dSVihZjJBNalUHL6FEHfK/oSUYT++wHqUPDetLGbPiVjFeZR8+wqdwdMljSHsew== 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=fdonnPRqzqpxNbpbB8TZzIu0IsduYp92/H+5q8scMQc=; b=cC7Ra02/foRCuGebT+qSOwdQ1jdrGtEZkjeCnbFrn/8Qvv/5EM+KShZbfl8vJsa+nUdJeA10oV8utjaMRo2F/6fgzb6XlW8xcMu266C+dTFbTc9sIVE5HKdj2ENPFzRDdR92M/+TmTnHIKIky9ZvWSLPbgNWczHCbPTeZlhwE+8sD1gPwaVXl5+NtwWW6/dQTi74rkdfCmGOcY0UpXB084mz4zEhTziDhviolIA4X+gejZvmlRdhunbbV6OC4EiRWdI4BmmESuuuRmseulJ3Wc1H3V07JNwBBk+/eP5T+yxHhaitWB8dsRb4nZkE0aMyepNfanZVqW8KovUKaU38IQ== 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 SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by SA2PR11MB5018.namprd11.prod.outlook.com (2603:10b6:806:11a::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9891.23; Mon, 11 May 2026 15:23:54 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%3]) with mapi id 15.20.9891.016; Mon, 11 May 2026 15:23:54 +0000 From: "Schimpe, Christina" To: Guinevere Larsen , "gdb-patches@sourceware.org" Subject: RE: [PATCH v2 1/6] gdb/record: Refactor record history Thread-Topic: [PATCH v2 1/6] gdb/record: Refactor record history Thread-Index: AQHc0zWs2tneStgsnkGdGTFQ8Vh1hbYA9WWAgAH0sQCABBlGQA== Date: Mon, 11 May 2026 15:23:52 +0000 Message-ID: References: <20260423152604.171356-1-guinevere@redhat.com> <20260423152604.171356-2-guinevere@redhat.com> <9de15785-0595-417b-b14d-fe5820738231@redhat.com> In-Reply-To: <9de15785-0595-417b-b14d-fe5820738231@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7638:EE_|SA2PR11MB5018:EE_ x-ms-office365-filtering-correlation-id: 08dee1e7-d621-413c-a13c-08deaf714fde x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|3023799003|17096099006|22082099003|56012099003|11063799003|18096099006|38070700021|18002099003; x-microsoft-antispam-message-info: VJMOL1Y6XhJkoxiz7A8bZjGD+49owi/vAY+FSRvqkJXSbvfpuHSf53eQmkb1BfsSuYmySj0HsXbtkcmlOywoiIDT8MY0tOK/K018LtQWzUGdonoYFPCEz5XEzg98nGOu1+Xb1nBP39PjWnFCreORFDV9dtdfEKwExX4AQMkjFBZSIadbgIFt+3TA4zkOIHBASSZT/TXR2z6JWf/k6xN5rVKXZAFb8DyAnfuRzykGmg+9bBCNVdq8te2dLntvX6U5cTSguO1mZMwBQ3G9W4Z/dF3bhyk/XtMNldTGTmR1hO2II7KjBtszVCZ8fJmZ49sFlJjneecarEhdHYc3NnrqeyDL2R9wR6A9WQn1O54MqUrDDs5bg6lgRwjiZuoPw4g4vQtL6lLsXFMfW39WJG2MZFauI08ehfWHN1l21Q3bK45xL8QN+Uo9v7D+e1ff9DlaUuuBFgCCWne2oBa911CnWKKgqwU0mQQv3BXzzbrAtNhTZ4tl7G0BJzvgapOKHWjpSgTum+2aqcxmQi5aOPWnAxT+0VHVouJiZD1GCE/KZh7F8B3+6uuJAnmXglliNI3Mp/krrgsYci4sCx79WskqFxutkbXw6MU945ucP8BiFcW+nydgnLlD296G7sO9AibS1QyD/H0RyeQRS+MDe/37D2mcDptBj2AhRDcOgnBFK1Vz5yCYGjaqpwU/Pf9MwYLI x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(3023799003)(17096099006)(22082099003)(56012099003)(11063799003)(18096099006)(38070700021)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NHhrYjRKR3JrN2FuTGRDNjRMYWVaa0djcTBqL3JucnZoVkk1QzM4ZzlJUlNN?= =?utf-8?B?ZEdUZjhKd3BDQ3ZMT3VWY1dzYTVSei9wd21ubjNIUnlOSmd6dzVxOGJNYzRC?= =?utf-8?B?aFBoVE54OENuS1pURHpvdVNrc1hJYmRyS0lPVWMwQjhpYVN6dDkxakJ0VWtX?= =?utf-8?B?RzZpK3huNm5KM2hjc2JRVW5RdUh5UENta3ZXZGI3d01GcnVSeDA0bEppWjhp?= =?utf-8?B?MGwvaUMyd1RFZzJuQ2VLM3YyNkV3NVk2Z3RzSGpKdnN4NklUdUxWcG1veVdY?= =?utf-8?B?ekYxQU01citpSVBTOG1sZVU2Zkt4V2xKMG42TVV3dkMxZCs2VDlKVk1IZU41?= =?utf-8?B?eUxycHJYcDR6V3IvaXJDMlFmMVpPanBBMHh5ZkdheXhCbEdldTJNUVZuL1Nt?= =?utf-8?B?bTUvakh2cENzTTV6ZFZ4eC9oai8wZDdhWnNvSGtiTXA2c1FUcHA1MGYyVk9j?= =?utf-8?B?RTVyemJzM2diaVN2UE1WSEJuSFo4V1NuMzRZandtNTkzZWFFZDRGSGNjU1FC?= =?utf-8?B?Rys3Vml2aklkVEhjNEdMazZrMGNUcGRxOTNPaDg2QmptYkoxSXRMRS8vanlx?= =?utf-8?B?b0IwamVCTjRmTktFQkx3ZENKaGVjQk16YkFGbmVLVk0vMVhOUXpFT0tiMzFO?= =?utf-8?B?Tnc4OThNVHdFWkQ5R3UrRzBLdTcrcGFvTEkyamZsWGQxdXYyT0FxTGxoemox?= =?utf-8?B?L1ZHQUJjZFhrWTVibjhXb3p1ZUdjYUg1bWdURTB4WlkwdCsxYWp1ZFlGcm8x?= =?utf-8?B?eGFpcFd2YlhzK2pWUUZDckNOV1pTb09GSGc3RzhneTArdk8wdksvVys3N2pY?= =?utf-8?B?bmJxR2gwSjRYQW4vR3Y3K0RNckpTQWJJK216WXo1ZnlIS20rakxyQTRLLzhV?= =?utf-8?B?SVZjSXYvUUpFL3dSZjB4cFRvUlQrRzdPa1ZzV0VxaGNzeDJ3aW5aMCtORlZn?= =?utf-8?B?Q0xUMEpZYmRVSnZBUWZoVkJVTmcwSmpzTThqYnR4Rk5kcnNqYmlOSEZTYzBF?= =?utf-8?B?dUdCK2U5WUZTVDdrcWp5ZWFYSW9uSWtja0VPOEdXZXppZEN6akVJSW1ISjZr?= =?utf-8?B?c2RXT05odjh6SWtDaEh2STRZZnFBVEI1NmYrWW1tdVg2ejZ1S0cvdEdxLzZ4?= =?utf-8?B?aUxuZVpkaWlub1NXOGFyU2Z0aXE3TmhyYWZLTTZvZVNjVFUrUGh4ek55UnRt?= =?utf-8?B?UVRQWmlzbHhLQmIrQjRxbGxOWnFiM2JwM0Y4Ryt1L1JaSjNaSVFsWGJQOVJw?= =?utf-8?B?cTgxOVRLRVBpWEduODRnRDJzUXgxNFQwTmx2aU5XMXZ2T0FCOVlRbG9UbURa?= =?utf-8?B?Ulg1bEQrL1JMTVVZaHBaQkx2WmhYLzJ4Z1V1YWd2NVM0cWpNWGlSbFJmM0Fj?= =?utf-8?B?cVFmUE1oUmpLSjVlK2VxQmU2R1g4cFlDclJxL0k0QjR4dGJqWUtHMElnbXdN?= =?utf-8?B?ZlFYMGhWYUVoZ0hqeDZHdE9NOVlPT1E5MDdnajNMK3l2L1JTZGt4bFhrcEQ0?= =?utf-8?B?cHJqcndpNHVmTXBjZnRnVlVjOEJtaGJLMitQOEcrYnJ5MVdyclNtVlptSlMy?= =?utf-8?B?WFRYRnBqblhjNnYzS00yaGNrNkx6dGkyOGFxbVladFdnVFFVeDJIUERoRlAw?= =?utf-8?B?SnU2emNTbXZzcjVYckNTazN5ZTBzLzFPbDZuMUVJdmt1R3AyTnF5bnFWZUtY?= =?utf-8?B?Z0dUVHNhMDJKZmFJRXJ6T1M5WnU3SVpKN0JibDB0ZXFkV2VyaHM1NG95Rmg1?= =?utf-8?B?VWk0b21meFNNUllGQkpMcjQwcEl4TlVFSUZiam10SHhGK1VnNmlnMmg0SzRu?= =?utf-8?B?M3Z6MmUvbzlDbisxKy95Qm1vWXZQNG4zUFNIckI2dURrdVhSZ0VIZWtaY25R?= =?utf-8?B?OHlIQm5nUjVZVzNpNWhjUkVlYzJOREY4b2gyQUdCYzc0ZWhTTG1IS04vczVa?= =?utf-8?B?NENyTlIyMEtPNVRWdlZTaVd5ZW9KeXFFejUzNzh2RExUV1JuQSt6QU9BQUxK?= =?utf-8?B?TEVoNlFoM3dORDZyZTltSVo0S1NGcm94U05GN3g2cTVXWnFwRkExc3k2L0Jz?= =?utf-8?B?WnlLdzJzT2ZMR1JqOVgwbkpxM0pOMkE0L01lbG5BckcyeVB4RzNHTTR4M0My?= =?utf-8?B?VUxlQzgyYUlxbXkyTTFsa0FoZnN4eU53VHlGZ3RqT1JRR2xnQUxkclpOOEVU?= =?utf-8?B?RitieUtJWTJvYUVkc1ZmbDZQZkxEbDlsT1hDV21YV1RMUjl6N0xPckVwRU55?= =?utf-8?B?RFplZmJ1bzIxc3hUdktwcGFUazZCTDd4ZDVvZ0hGbjRQczkyV24vZHdWSVU2?= =?utf-8?B?UmltK2E0cmdVUk1Md2JvYnhSSk9IZ2ltam1IeG5kc3NvWkh5Y1hrZz09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: TUpDhMPT/oGWrIEmTVSFZKE7te4iWMLchg6FGKEgMPZqnJogZ3YMihbUy3rSetWIV49aZYyJCyxMN6oeyzgx/iwif72fCePNM9WviSw5M27xK1Gr/GFgFacKBiij4dDkpYE7nQOtA+rSfn4CW+8OEdNm71PhB7Ekq1Ag4nU4DVOx+x9AUmPhZFhpBoEoUCVcvRM42XbkORXvzpPI5gGkhXtDsOWN8tg5VymwsDply4O1AEwaCiZj+C1O6vlSr1t15vuMdzCVU3AJos6dABFrkZmxYywewXVrnt8QN4BS3ZS38wo9zSQ6RIIdyNyddNDRV8U+rGYgc/x0fjB4587llA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08dee1e7-d621-413c-a13c-08deaf714fde X-MS-Exchange-CrossTenant-originalarrivaltime: 11 May 2026 15:23:52.7773 (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: jbZy0YumEpfvDLsvVaR4xv236uoKoi9S2ITJcqncD5Qk3XDIXXBV1J5zf6iMEJoC85QQdcdq2xsTKGCMxk7pm+Qo12ask2DYKba2VoKEAwY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5018 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org SGkgR3VpbmV2ZXJlLCANCg0KUGxlYXNlIGZpbmQgc29tZSBmdXJ0aGVyIGNvbW1lbnRzIGJlbG93 Lg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEd1aW5ldmVyZSBMYXJz ZW4gPGd1aW5ldmVyZUByZWRoYXQuY29tPg0KPiBTZW50OiBEb25uZXJzdGFnLCA3LiBNYWkgMjAy NiAxOTozOA0KPiBUbzogU2NoaW1wZSwgQ2hyaXN0aW5hIDxjaHJpc3RpbmEuc2NoaW1wZUBpbnRl bC5jb20+OyBnZGItDQo+IHBhdGNoZXNAc291cmNld2FyZS5vcmcNCj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MiAxLzZdIGdkYi9yZWNvcmQ6IFJlZmFjdG9yIHJlY29yZCBoaXN0b3J5DQo+IA0KPiBP biA1LzYvMjYgNjoxNiBQTSwgU2NoaW1wZSwgQ2hyaXN0aW5hIHdyb3RlOg0KPiA+IEhpIEd1aW5l dmVyZSwNCj4gPg0KPiA+IFRoYW5rIHlvdSBmb3Igd29ya2luZyBvbiB0aGlzLg0KPiA+IEkgZm91 bmQgdHdvIGl0ZW1zIHRoYXQgbWlnaHQgYmUgd29ydGggbG9va2luZyBhdCBpbiBtb3JlIGRldGFp bCwgYnV0DQo+ID4gYXBhcnQgZnJvbSB0aGF0IGl04oCZcyBtb3N0bHkgbWlub3Igbml0cy4gUGxl YXNlIGZpbmQgbXkgZmVlZGJhY2sgYmVsb3cuDQo+ID4NCj4gPiBJIGRvbuKAmXQgaGF2ZSBtdWNo IGV4cGVyaWVuY2Ugd2l0aCB0aGUgcmVjb3JkIGZlYXR1cmUsIHNvIG15IHJldmlldyBpcw0KPiA+ IGEgYml0IHNsb3cgaGVyZS4gVG8gZnVsbHkgdW5kZXJzdGFuZCB0aGlzIHBhdGNoLCBJIHByb2Jh Ymx5IG5lZWQgbW9yZSB0aW1lLA0KPiA+IGJ1dCBJIHdhbnRlZCB0byBzaGFyZSB0aGUgY29tbWVu dHMgSSBhbHJlYWR5IGhhdmUuIFNvcnJ5IGZvciBjaGltaW5nIGluDQo+ID4gc28gbGF0ZS4gSeKA mWxsIHRyeSBhZ2FpbiB0b21vcnJvdywgb3IgYnkgRnJpZGF5IGF0IHRoZSBsYXRlc3QuDQo+IA0K PiBIaSEgVGhhbmsgeW91IGZvciBub3RpbmcgYWxsIHRoZSBpbmNvbnNpc3RlbmNpZXMsIEknbGwg Zml4IGFsbW9zdCBhbGwgb2YNCj4gdGhlbSBiZWZvcmUgcHVzaGluZyENCj4gDQo+IFRoZSBvbmUg dGhpbmcgSSBkb24ndCB0aGluayBpdCdzIGEgZ29vZCBpZGVhIGlzIHRvIG1ha2UgdGhlIGNoYW5n ZSBmcm9tDQo+IHJlY29yZF9mdWxsX2xpc3QgLT4gcmVjb3JkX2Z1bGxfbG9nIGluIHRoaXMgY29t bWl0Li4uIG1vc3RseSBiZWNhdXNlIGl0DQo+IHdpbGwgaW50cm9kdWNlIHVudG9sZCBhbW91bnRz IG9mIHJlYmFzZSBjb25mbGljdHMuIEknbGwgaW50cm9kdWNlIGENCj4gZm9sbG93aW5nIGNvbW1p dCB0byB0aGlzIHNlcmllcyB0aGF0IHdpbGwgbWFrZSB0aGF0IHJlbmFtaW5nLCB0aG91Z2ggOikN Cj4gLS0NCj4gQ2hlZXJzLA0KPiBHdWluZXZlcmUgTGFyc2VuDQo+IEl0L3NoZQ0KPiANCj4gPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogR3VpbmV2ZXJlIExhcnNlbiA8 Z3VpbmV2ZXJlQHJlZGhhdC5jb20+DQo+ID4+IFNlbnQ6IERvbm5lcnN0YWcsIDIzLiBBcHJpbCAy MDI2IDE3OjI2DQo+ID4+IFRvOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiA+PiBDYzog R3VpbmV2ZXJlIExhcnNlbiA8Z3VpbmV2ZXJlQHJlZGhhdC5jb20+DQo+ID4+IFN1YmplY3Q6IFtQ QVRDSCB2MiAxLzZdIGdkYi9yZWNvcmQ6IFJlZmFjdG9yIHJlY29yZCBoaXN0b3J5DQo+ID4+DQo+ ID4+IFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gYSBsYXJnZSByZWZhY3RvciBpbiBob3cgR0RC IGtlZXBzIGV4ZWN1dGlvbg0KPiA+PiBoaXN0b3J5LiAgUmF0aGVyIHRoYW4gdXNpbmcgYSBsaW5r ZWQgbGlzdCB3aGVyZSBtdWx0aXBsZSBlbnRyaWVzIGNhbg0KPiA+PiBkZXNjcmliZSBhIHNpbmds ZSBpbnN0cnVjdGlvbiwgdGhlIGhpc3Rvcnkgd2lsbCBub3cgYmUgc3RvcmVkIGluIGFuDQo+ID4+ IHN0ZDo6ZGVxdWUsIGVhY2ggaW5zdHJ1Y3Rpb24gYmVpbmcgb25lIGVudHJ5IGluIHRoZSBkZXF1 ZS4NCj4gPj4NCj4gPj4gVGhlIGNob2ljZSB3YXMgaW5pdGlhbGx5IHRvIHVzZSBhbiBzdGQ6OnZl Y3RvciwgYnV0IGl0IHdvdWxkIGJlY29tZQ0KPiA+PiB1bndpZWxkeSBiZWNhdXNlIGl0IG5lZWRz IGFsbCB0aGUgbWVtb3J5IHRvIGJlIGNvbnNlY3V0aXZlLCB3aGljaCBpcw0KPiA+PiBoYXJkIGZv ciAyMDAgdGhvdXNhbmQgZW50cmllcy4gRGVxdWUgd2FzIHBpY2tlZCBiZWNhdXNlIGl0IHdhcyBh IG5pY2UNCj4gPj4gbWlkcG9pbnQgYmV0d2VlbiB2ZWN0b3IgKG1heGltdW0gY2FjaGUgY29oZXNp b24pIGFuZCBsaW5rZWQgbGlzdA0KPiA+PiAobWF4aW11bSBlYXNlIG9mIGZpbmRpbmcgc3BhY2Ug dG8gc3RvcmUgbW9yZSkuDQo+ID4+DQo+ID4+IEVhY2ggaW5zdHJ1Y3Rpb24gaW4gbWVtb3J5IHdp bGwgYmUgbm93IG9uZSByZWNvcmRfZnVsbF9pbnN0cnVjdGlvbg0KPiA+PiBlbnRyeSwgd2hpY2gg Zm9yIHRoaXMgY29tbWl0IGp1c3QgY29udGFpbnMgYSB2ZWN0b3Igb2YNCj4gPj4gcmVjb3JkX2Z1 bGxfZW50cnkgZm9yIHRoZSBlZmZlY3RzIG9mIHRoZSBpbnN0cnVjdGlvbiwgYW5kIHRoZSBkYXRh IHRoYXQNCj4gPj4gd2FzIHN0b3JlZCBpbiB0aGUgcmVjb3JkX2Z1bGxfZW5kIGVudHJ5ICh0aGF0 IGlzLCB0aGUgaW5zdHJ1Y3Rpb24gbnVtYmVyDQo+ID4+IGFuZCB0aGUgc2lnbmFsLCBpZiBhbnkp Lg0KPiA+Pg0KPiA+PiBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VkIGEgbWluaW1hbCBwZXJmb3JtYW5j ZSBpbXByb3ZlbWVudCAod2hhdCdzDQo+ID4+IGltcG9ydGFudCBpcyB0aGF0IGl0IGlzbid0IGEg ZGVncmFkYXRpb24pIGFuZCBhICByZWR1Y3Rpb24gaW4gdGhlIHRvdGFsDQo+ID4+IG1lbW9yeSBm b290cHJpbnQgb2Ygcm91Z2hseSAyMCUgaWYgdGhlIGVudGlyZSBoaXN0b3J5IGlzIHVzZWQuDQo+ ID4+IC0tLQ0KPiA+PiAgIGdkYi9hYXJjaDY0LXRkZXAuYyAgICAgfCAgICAyIC0NCj4gPj4gICBn ZGIvYW1kNjQtbGludXgtdGRlcC5jIHwgICAgMyAtDQo+ID4+ICAgZ2RiL2FybS10ZGVwLmMgICAg ICAgICB8ICAgIDIgLQ0KPiA+PiAgIGdkYi9pMzg2LWxpbnV4LXRkZXAuYyAgfCAgICAzIC0NCj4g Pj4gICBnZGIvaTM4Ni10ZGVwLmMgICAgICAgIHwgICAgNCAtDQo+ID4+ICAgZ2RiL2xvb25nYXJj aC10ZGVwLmMgICB8ICAgIDIgLQ0KPiA+PiAgIGdkYi9tb3hpZS10ZGVwLmMgICAgICAgfCAgICAy IC0NCj4gPj4gICBnZGIvcHBjLWxpbnV4LXRkZXAuYyAgIHwgICAgMyAtDQo+ID4+ICAgZ2RiL3Jl Y29yZC1mdWxsLmMgICAgICB8IDExODAgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPiA+PiAgIGdkYi9yZWNvcmQtZnVsbC5oICAgICAgfCAgICAxIC0NCj4gPj4gICBn ZGIvcmlzY3YtdGRlcC5jICAgICAgIHwgICAgMyAtDQo+ID4+ICAgZ2RiL3JzNjAwMC10ZGVwLmMg ICAgICB8ICAgIDQgLQ0KPiA+PiAgIGdkYi9zMzkwLWxpbnV4LXRkZXAuYyAgfCAgICAzIC0NCj4g Pj4gICBnZGIvczM5MC10ZGVwLmMgICAgICAgIHwgICAgMiAtDQo+ID4+ICAgMTQgZmlsZXMgY2hh bmdlZCwgNDc2IGluc2VydGlvbnMoKyksIDczOCBkZWxldGlvbnMoLSkNCj4gPj4NCj4gPj4gZGlm ZiAtLWdpdCBhL2dkYi9hYXJjaDY0LXRkZXAuYyBiL2dkYi9hYXJjaDY0LXRkZXAuYw0KPiA+PiBp bmRleCA0YmVmYWEyNzIwZC4uYTUzMjk5MmIxZDggMTAwNjQ0DQo+ID4+IC0tLSBhL2dkYi9hYXJj aDY0LXRkZXAuYw0KPiA+PiArKysgYi9nZGIvYWFyY2g2NC10ZGVwLmMNCj4gPj4gQEAgLTYyMTAs OCArNjIxMCw2IEBAIGFhcmNoNjRfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoDQo+ICpn ZGJhcmNoLA0KPiA+PiBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+PiAgIAkgICAgICAg YWFyY2g2NF9yZWNvcmQuYWFyY2g2NF9tZW1zW3JlY19ub10ubGVuKSkNCj4gPj4gICAJICAgIHJl dCA9IC0xOw0KPiA+Pg0KPiA+PiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRf ZW5kICgpKQ0KPiA+PiAtCXJldCA9IC0xOw0KPiA+PiAgICAgICB9DQo+ID4+DQo+ID4+ICAgICBk ZWFsbG9jYXRlX3JlZ19tZW0gKCZhYXJjaDY0X3JlY29yZCk7DQo+ID4+IGRpZmYgLS1naXQgYS9n ZGIvYW1kNjQtbGludXgtdGRlcC5jIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYw0KPiA+PiBpbmRl eCBhNWFjMjY2NTRjZi4uOWIyM2RiNzJiYmUgMTAwNjQ0DQo+ID4+IC0tLSBhL2dkYi9hbWQ2NC1s aW51eC10ZGVwLmMNCj4gPj4gKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYw0KPiA+PiBAQCAt MTU5MSw5ICsxNTkxLDYgQEAgYW1kNjRfbGludXhfcmVjb3JkX3NpZ25hbCAoc3RydWN0IGdkYmFy Y2gNCj4gPj4gKmdkYmFyY2gsDQo+ID4+ICAgCQkJCSAgICAgKyBBTUQ2NF9MSU5VWF9mcmFtZV9z aXplKSkNCj4gPj4gICAgICAgcmV0dXJuIC0xOw0KPiA+Pg0KPiA+PiAtICBpZiAocmVjb3JkX2Z1 bGxfYXJjaF9saXN0X2FkZF9lbmQgKCkpDQo+ID4+IC0gICAgcmV0dXJuIC0xOw0KPiA+PiAtDQo+ ID4+ICAgICByZXR1cm4gMDsNCj4gPj4gICB9DQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9nZGIv YXJtLXRkZXAuYyBiL2dkYi9hcm0tdGRlcC5jDQo+ID4+IGluZGV4IDA4Y2NlOWRiYWQ4Li4xY2Uw OTI3ZjI2YiAxMDA2NDQNCj4gPj4gLS0tIGEvZ2RiL2FybS10ZGVwLmMNCj4gPj4gKysrIGIvZ2Ri L2FybS10ZGVwLmMNCj4gPj4gQEAgLTE0OTExLDggKzE0OTExLDYgQEAgYXJtX3Byb2Nlc3NfcmVj b3JkIChzdHJ1Y3QgZ2RiYXJjaA0KPiAqZ2RiYXJjaCwNCj4gPj4gc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwNCj4gPj4gICAJICAgIH0NCj4gPj4gICAJfQ0KPiA+Pg0KPiA+PiAtICAgICAgaWYg KHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfZW5kICgpKQ0KPiA+PiAtCXJldCA9IC0xOw0KPiA+ PiAgICAgICB9DQo+ID4+DQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9nZGIvaTM4Ni1saW51eC10 ZGVwLmMgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMNCj4gPj4gaW5kZXggMjNhZWNjYWM5ZmMuLjRm MzM3NjZmY2RkIDEwMDY0NA0KPiA+PiAtLS0gYS9nZGIvaTM4Ni1saW51eC10ZGVwLmMNCj4gPj4g KysrIGIvZ2RiL2kzODYtbGludXgtdGRlcC5jDQo+ID4+IEBAIC05NDksOSArOTQ5LDYgQEAgaTM4 Nl9saW51eF9yZWNvcmRfc2lnbmFsIChzdHJ1Y3QgZ2RiYXJjaA0KPiAqZ2RiYXJjaCwNCj4gPj4g ICAJCQkJICAgICBJMzg2X0xJTlVYX3hzdGF0ZSArDQo+ID4+IEkzODZfTElOVVhfZnJhbWVfc2l6 ZSkpDQo+ID4+ICAgICAgIHJldHVybiAtMTsNCj4gPj4NCj4gPj4gLSAgaWYgKHJlY29yZF9mdWxs X2FyY2hfbGlzdF9hZGRfZW5kICgpKQ0KPiA+PiAtICAgIHJldHVybiAtMTsNCj4gPj4gLQ0KPiA+ PiAgICAgcmV0dXJuIDA7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEv Z2RiL2kzODYtdGRlcC5jIGIvZ2RiL2kzODYtdGRlcC5jDQo+ID4+IGluZGV4IGZhOTM1YjVmY2Ri Li5mZWUzNmI0NmE3MyAxMDA2NDQNCj4gPj4gLS0tIGEvZ2RiL2kzODYtdGRlcC5jDQo+ID4+ICsr KyBiL2dkYi9pMzg2LXRkZXAuYw0KPiA+PiBAQCAtNTIwMSw4ICs1MjAxLDYgQEAgaTM4Nl9yZWNv cmRfdmV4IChzdHJ1Y3QgaTM4Nl9yZWNvcmRfcyAqaXIsDQo+IHVpbnQ4X3QNCj4gPj4gdmV4X3cs IHVpbnQ4X3QgdmV4X3IsDQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gICAgIHJlY29yZF9mdWxs X2FyY2hfbGlzdF9hZGRfcmVnIChpci0+cmVnY2FjaGUsIGlyLQ0KPiA+Pj4gcmVnbWFwW1g4Nl9S RUNPUkRfUkVJUF9SRUdOVU1dKTsNCj4gPj4gLSAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9h ZGRfZW5kICgpKQ0KPiA+PiAtICAgIHJldHVybiAtMTsNCj4gPj4NCj4gPj4gICAgIHJldHVybiAw Ow0KPiA+PiAgIH0NCj4gPj4gQEAgLTgzNTksOCArODM1Nyw2IEBAIERvIHlvdSB3YW50IHRvIHN0 b3AgdGhlIHByb2dyYW0/IiksDQo+ID4+DQo+ID4+ICAgICAvKiBJbiB0aGUgZnV0dXJlLCBtYXli ZSBzdGlsbCBuZWVkIHRvIGRlYWwgd2l0aCBuZWVkX2Rhc20uICAqLw0KPiA+PiAgICAgSTM4Nl9S RUNPUkRfRlVMTF9BUkNIX0xJU1RfQUREX1JFRw0KPiAoWDg2X1JFQ09SRF9SRUlQX1JFR05VTSk7 DQo+ID4+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gPj4gLSAg ICByZXR1cm4gLTE7DQo+ID4+DQo+ID4+ICAgICByZXR1cm4gMDsNCj4gPj4NCj4gPj4gZGlmZiAt LWdpdCBhL2dkYi9sb29uZ2FyY2gtdGRlcC5jIGIvZ2RiL2xvb25nYXJjaC10ZGVwLmMNCj4gPj4g aW5kZXggMjI1YjFhYmI3MDMuLjVlYzZiMmE0OGQwIDEwMDY0NA0KPiA+PiAtLS0gYS9nZGIvbG9v bmdhcmNoLXRkZXAuYw0KPiA+PiArKysgYi9nZGIvbG9vbmdhcmNoLXRkZXAuYw0KPiA+PiBAQCAt Mjc4OSw4ICsyNzg5LDYgQEAgbG9vbmdhcmNoX3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJj aA0KPiA+PiAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gPj4gICAJCQkJ CSBMT09OR0FSQ0hfUENfUkVHTlVNKSkNCj4gPj4gICAJcmV0dXJuIC0xOw0KPiA+Pg0KPiA+PiAt ICAgICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfZW5kICgpKQ0KPiA+PiAtCXJldHVy biAtMTsNCj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgcmV0dXJuIHJldDsNCj4gPj4gZGlm ZiAtLWdpdCBhL2dkYi9tb3hpZS10ZGVwLmMgYi9nZGIvbW94aWUtdGRlcC5jDQo+ID4+IGluZGV4 IGM4YTA0ZDIxZjU5Li4yZjhmMDE4NjQ4OCAxMDA2NDQNCj4gPj4gLS0tIGEvZ2RiL21veGllLXRk ZXAuYw0KPiA+PiArKysgYi9nZGIvbW94aWUtdGRlcC5jDQo+ID4+IEBAIC0xMDQwLDggKzEwNDAs NiBAQCBtb3hpZV9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsDQo+ ID4+IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsDQo+ID4+DQo+ID4+ICAgICBpZiAocmVjb3Jk X2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgKHJlZ2NhY2hlLCBNT1hJRV9QQ19SRUdOVU0pKQ0KPiA+ PiAgICAgICByZXR1cm4gLTE7DQo+ID4+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRk X2VuZCAoKSkNCj4gPj4gLSAgICByZXR1cm4gLTE7DQo+ID4+ICAgICByZXR1cm4gMDsNCj4gPj4g ICB9DQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LXRkZXAuYyBiL2dkYi9w cGMtbGludXgtdGRlcC5jDQo+ID4+IGluZGV4IDE5Njk4ZWFhY2JlLi5lMmY1MzU1MTcwOSAxMDA2 NDQNCj4gPj4gLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMNCj4gPj4gKysrIGIvZ2RiL3BwYy1s aW51eC10ZGVwLmMNCj4gPj4gQEAgLTE1NjUsOSArMTU2NSw2IEBAIHBwY19saW51eF9yZWNvcmRf c2lnbmFsIChzdHJ1Y3QgZ2RiYXJjaA0KPiAqZ2RiYXJjaCwNCj4gPj4gc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwNCj4gPj4gICAgIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX21lbSAo c3AsIFNJR05BTF9GUkFNRVNJWkUgKw0KPiA+PiBzaXplb2ZfcnRfc2lnZnJhbWUpKQ0KPiA+PiAg ICAgICByZXR1cm4gLTE7DQo+ID4+DQo+ID4+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3Rf YWRkX2VuZCAoKSkNCj4gPj4gLSAgICByZXR1cm4gLTE7DQo+ID4+IC0NCj4gPj4gICAgIHJldHVy biAwOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL2dkYi9yZWNvcmQtZnVsbC5j IGIvZ2RiL3JlY29yZC1mdWxsLmMNCj4gPj4gaW5kZXggNjlkMmMxMDBlNTcuLmFhYzY5Y2VlMTdl IDEwMDY0NA0KPiA+PiAtLS0gYS9nZGIvcmVjb3JkLWZ1bGwuYw0KPiA+PiArKysgYi9nZGIvcmVj b3JkLWZ1bGwuYw0KPiA+IEkgdGhpbmsgd2Ugc2hvdWxkIGluY2x1ZGUgdmVjdG9yLCBvcHRpb25h bCBhbmQgZGVxdWUgZGlyZWN0bHkuDQo+ID4NCj4gPj4gQEAgLTcyLDIwICs3MiwxNyBAQA0KPiA+ PiAgICNkZWZpbmUgREVGQVVMVF9SRUNPUkRfRlVMTF9JTlNOX01BWF9OVU0JMjAwMDAwDQo+ID4+ DQo+ID4+ICAgI2RlZmluZSBSRUNPUkRfRlVMTF9JU19SRVBMQVkgXA0KPiA+PiAtICAocmVjb3Jk X2Z1bGxfbGlzdC0+bmV4dCB8fCA6OmV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNF KQ0KPiA+PiArICAoIChyZWNvcmRfZnVsbF9uZXh0X2luc24gIT0gcmVjb3JkX2Z1bGxfbGlzdC5z aXplICgpKSBcDQo+ID4gTml0OiBObyB3aGl0ZXNwYWNlIGFmdGVyIHRoZSBmaXJzdCBicmFja2V0 Og0KPiA+ID0+ICgocmVjb3JkX2Z1bGxfbmV4dF9pbnNuICE9IHJlY29yZF9mdWxsX2xpc3Quc2l6 ZSAoKSkgXA0KPiA+DQo+ID4+ICsgICAgIHx8IDo6ZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVD X1JFVkVSU0UpDQo+ID4+DQo+ID4+ICAgI2RlZmluZSBSRUNPUkRfRlVMTF9GSUxFX01BR0lDCW5l dG9yZGVyMzIoMHgyMDA5MTAxNikNCj4gPj4NCj4gPj4gICAvKiBUaGVzZSBhcmUgdGhlIGNvcmUg c3RydWN0cyBvZiB0aGUgcHJvY2VzcyByZWNvcmQgZnVuY3Rpb25hbGl0eS4NCj4gPj4NCj4gPj4g ICAgICBBIHJlY29yZF9mdWxsX2VudHJ5IGlzIGEgcmVjb3JkIG9mIHRoZSB2YWx1ZSBjaGFuZ2Ug b2YgYSByZWdpc3Rlcg0KPiA+PiAtICAgKCJyZWNvcmRfZnVsbF9yZWciKSBvciBhIHBhcnQgb2Yg bWVtb3J5ICgicmVjb3JkX2Z1bGxfbWVtIikuICBBbmQgZWFjaA0KPiA+PiAtICAgaW5zdHJ1Y3Rp b24gbXVzdCBoYXZlIGEgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICgicmVjb3JkX2Z1bGxfZW5k IikNCj4gPj4gLSAgIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyB0aGUgbGFzdCBzdHJ1Y3Qg cmVjb3JkX2Z1bGxfZW50cnkgb2YgdGhpcw0KPiA+PiAtICAgaW5zdHJ1Y3Rpb24uDQo+ID4+IC0N Cj4gPj4gLSAgIEVhY2ggc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5IGlzIGxpbmtlZCB0byAicmVj b3JkX2Z1bGxfbGlzdCIgYnkgInByZXYiDQo+ID4+IC0gICBhbmQgIm5leHQiIHBvaW50ZXJzLiAg Ki8NCj4gPj4gKyAgICgicmVjb3JkX2Z1bGxfcmVnIikgb3IgYSBwYXJ0IG9mIG1lbW9yeSAoInJl Y29yZF9mdWxsX21lbSIpLg0KPiA+PiArICAgVGhlc2UgYXJlIHNhdmVkIG9uIHRoZSByZWNvcmRf ZnVsbF9pbnN0cnVjdGlvbiBzdHJ1Y3QsIHdoaWNoIGFsc28NCj4gPj4gKyAgIGNvbnRhaW5zIHNv bWUgZXh0cmEgaW5mb3JtYXRpb24sIHN1Y2ggYXMgZGVsaXZlcmVkIHNpZ25hbHMuICAqLw0KPiA+ Pg0KPiA+PiAgIHN0cnVjdCByZWNvcmRfZnVsbF9tZW1fZW50cnkNCj4gPj4gICB7DQo+ID4+IEBA IC0xMTIsNDcgKzEwOSwxNCBAQCBzdHJ1Y3QgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5DQo+ID4+ICAg ICB9IHU7DQo+ID4+ICAgfTsNCj4gPj4NCj4gPj4gLXN0cnVjdCByZWNvcmRfZnVsbF9lbmRfZW50 cnkNCj4gPj4gLXsNCj4gPj4gLSAgZW51bSBnZGJfc2lnbmFsIHNpZ3ZhbDsNCj4gPj4gLSAgVUxP TkdFU1QgaW5zbl9udW07DQo+ID4+IC19Ow0KPiA+PiAtDQo+ID4+ICAgZW51bSByZWNvcmRfZnVs bF90eXBlDQo+ID4+ICAgew0KPiA+PiAtICByZWNvcmRfZnVsbF9lbmQgPSAwLA0KPiA+PiAgICAg cmVjb3JkX2Z1bGxfcmVnLA0KPiA+PiAgICAgcmVjb3JkX2Z1bGxfbWVtDQo+ID4+ICAgfTsNCj4g Pj4NCj4gPj4gLS8qIFRoaXMgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgbWFrZXMgdXAgdGhl IGV4ZWN1dGlvbiBsb2cuDQo+ID4+IC0NCj4gPj4gLSAgIFRoZSBleGVjdXRpb24gbG9nIGNvbnNp c3RzIG9mIGEgc2luZ2xlIGxpbmtlZCBsaXN0IG9mIGVudHJpZXMNCj4gPj4gLSAgIG9mIHR5cGUg InN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSIuICBJdCBpcyBkb3VibHkgbGlua2VkIHNvIHRoYXQg aXQNCj4gPj4gLSAgIGNhbiBiZSB0cmF2ZXJzZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi4NCj4gPj4g LQ0KPiA+PiAtICAgVGhlIHN0YXJ0IG9mIHRoZSBsaXN0IGlzIGFuY2hvcmVkIGJ5IGEgc3RydWN0 IGNhbGxlZA0KPiA+PiAtICAgInJlY29yZF9mdWxsX2ZpcnN0Ii4gIFRoZSBwb2ludGVyICJyZWNv cmRfZnVsbF9saXN0IiBlaXRoZXIgcG9pbnRzDQo+ID4+IC0gICB0byB0aGUgbGFzdCBlbnRyeSB0 aGF0IHdhcyBhZGRlZCB0byB0aGUgbGlzdCAoaW4gcmVjb3JkIG1vZGUpLCBvciB0bw0KPiA+PiAt ICAgdGhlIG5leHQgZW50cnkgaW4gdGhlIGxpc3QgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIChpbiBy ZXBsYXkgbW9kZSkuDQo+ID4+IC0NCj4gPj4gLSAgIEVhY2ggbGlzdCBlbGVtZW50IChzdHJ1Y3Qg cmVjb3JkX2Z1bGxfZW50cnkpLCBpbiBhZGRpdGlvbiB0byBuZXh0DQo+ID4+IC0gICBhbmQgcHJl diBwb2ludGVycywgY29uc2lzdHMgb2YgYSB1bmlvbiBvZiB0aHJlZSBlbnRyeSB0eXBlczogbWVt LA0KPiA+PiAtICAgcmVnLCBhbmQgZW5kLiAgQSBmaWVsZCBjYWxsZWQgInR5cGUiIGRldGVybWlu ZXMgd2hpY2ggZW50cnkgdHlwZSBpcw0KPiA+PiAtICAgcmVwcmVzZW50ZWQgYnkgYSBnaXZlbiBs aXN0IGVsZW1lbnQuDQo+ID4+IC0NCj4gPj4gLSAgIEVhY2ggaW5zdHJ1Y3Rpb24gdGhhdCBpcyBh ZGRlZCB0byB0aGUgZXhlY3V0aW9uIGxvZyBpcyByZXByZXNlbnRlZA0KPiA+PiAtICAgYnkgYSB2 YXJpYWJsZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyAoJ2VudHJpZXMnKS4gIFRoZSBpbnN0cnVj dGlvbg0KPiA+PiAtICAgd2lsbCBoYXZlIG9uZSAicmVnIiBlbnRyeSBmb3IgZWFjaCByZWdpc3Rl ciB0aGF0IGlzIGNoYW5nZWQgYnkNCj4gPj4gLSAgIGV4ZWN1dGluZyB0aGUgaW5zdHJ1Y3Rpb24g KGluY2x1ZGluZyB0aGUgUEMgaW4gZXZlcnkgY2FzZSkuICBJdA0KPiA+PiAtICAgd2lsbCBhbHNv IGhhdmUgb25lICJtZW0iIGVudHJ5IGZvciBlYWNoIG1lbW9yeSBjaGFuZ2UuICBGaW5hbGx5LA0K PiA+PiAtICAgZWFjaCBpbnN0cnVjdGlvbiB3aWxsIGhhdmUgYW4gImVuZCIgZW50cnkgdGhhdCBz ZXBhcmF0ZXMgaXQgZnJvbQ0KPiA+PiAtICAgdGhlIGNoYW5nZXMgYXNzb2NpYXRlZCB3aXRoIHRo ZSBuZXh0IGluc3RydWN0aW9uLiAgKi8NCj4gPj4gLQ0KPiA+PiAgIHN0cnVjdCByZWNvcmRfZnVs bF9lbnRyeQ0KPiA+PiAgIHsNCj4gPj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpwcmV2 Ow0KPiA+PiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKm5leHQ7DQo+ID4+ICAgICBlbnVt IHJlY29yZF9mdWxsX3R5cGUgdHlwZTsNCj4gPj4gICAgIHVuaW9uDQo+ID4+ICAgICB7DQo+ID4+ IEBAIC0xNjAsMTEgKzEyNCwzMSBAQCBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkNCj4gPj4gICAg ICAgc3RydWN0IHJlY29yZF9mdWxsX3JlZ19lbnRyeSByZWc7DQo+ID4+ICAgICAgIC8qIG1lbSAq Lw0KPiA+PiAgICAgICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfbWVtX2VudHJ5IG1lbTsNCj4gPj4gLSAg ICAvKiBlbmQgKi8NCj4gPj4gLSAgICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW5kX2VudHJ5IGVuZDsN Cj4gPj4gICAgIH0gdTsNCj4gPj4gICB9Ow0KPiA+Pg0KPiA+PiArLyogVGhpcyBpcyB0aGUgbWFp biBzdHJ1Y3R1cmUgdGhhdCBjb21wcmlzZXMgdGhlIGV4ZWN1dGlvbiBsb2cuDQo+ID4+ICsgICBF YWNoIGluc3RydWN0aW9uIGlzIGNvbXByaXNlZCBvZjoNCj4gPj4gKyAgICogVGhlIGluc3RydWN0 aW9uIG51bWJlcjogSG93IG1hbnkgaW5zdHJ1Y3Rpb25zIHdlcmUgcmVjb3JkZWQgYmVmb3JlDQo+ ID4+ICsgICAgIHRoaXMgb25lOw0KPiA+PiArICAgKiBzaWd2YWw6IFdoZXRoZXIgdGhlIGluZmVy aW9yIHJlY2VpdmVkIGEgc2lnbmFsIHdoaWxlIHRoZSBmb2xsb3dpbmcNCj4gPj4gKyAgICAgaW5z dHJ1Y3Rpb24gd2FzIGJlaW5nIHJlY29yZGVkOw0KDQpJdCBtaWdodCBiZSB3b3J0aCBkZXNjcmli aW5nIGluIHRoZSBjb21tZW50IGluIHdoaWNoIGNhc2VzIHRoaXMgZG9lcyBub3QNCmhhdmUgYSB2 YWx1ZSwgdG8gcG9pbnQgb3V0IHRoZSByZWFzb24gd2h5IHRoaXMgaXMgbm93IG9wdGlvbmFsLg0K QXMgSSB1bmRlcnN0YW5kIGl0IGJlZm9yZSB0aGlzIHBhdGNoIHdlIHVzZWQgR0RCX1NJR05BTF8w IGZvciB0aGlzIGNhc2UsIGlzIHRoYXQgcmlnaHQ/DQoNCj4gPj4gKyAgICogZWZmZWN0czogQSBs aXN0IG9mIHJlY29yZF9mdWxsX2VudHJ5IHN0cnVjdHVyZXMsIGVhY2ggb2Ygd2hpY2gNCj4gPj4g KyAgICAgZGVzY3JpYmluZyBvbmUgZWZmZWN0IHRoYXQgdGhlIGluc3RydWN0aW9uIGhhcyBvbiB0 aGUgaW5mZXJpb3IuDQo+ID4+ICsNCj4gPj4gKyAgIE5vdGUsIHRoZSBzaWduYWwgaXMgc3RvcmVk IGluIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbiBmb3IgaGlzdG9yaWNhbA0KPiA+PiArICAgcmVh c29ucy4gIFRoaXMgaXMgaG93IGl0IHdhcyBmaXJzdCBpbXBsZW1lbnRlZCwgYW5kIG5vIG9uZSBo YXMgZ290dGVuDQo+ID4+ICsgICBhcm91bmQgdG8gY2hhbmdpbmcgaXQgeWV0LiAgKi8NCj4gPj4g Kw0KPiA+PiArc3RydWN0IHJlY29yZF9mdWxsX2luc3RydWN0aW9uDQo+ID4+ICt7DQo+ID4+ICsg IC8qIFRoaXMgbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGluZGV4IGlmDQo+ID4+ICsgICAg IHdlIGhhZCB0byByZW1vdmUgdGhlIGZpcnN0IGZldyBpbnN0cnVjdGlvbnMuICAqLw0KPiA+PiAr ICB1aW50MzJfdCBpbnNuX251bTsNCj4gPj4gKyAgc3RkOjpvcHRpb25hbDxnZGJfc2lnbmFsPiBz aWd2YWw7DQo+ID4+ICsgIHN0ZDo6dmVjdG9yPHJlY29yZF9mdWxsX2VudHJ5PiBlZmZlY3RzOw0K PiA+PiArfTsNCj4gPj4gKw0KPiA+PiAgIC8qIElmIHRydWUsIHF1ZXJ5IGlmIFBSRUMgY2Fubm90 IHJlY29yZCBtZW1vcnkNCj4gPj4gICAgICBjaGFuZ2Ugb2YgbmV4dCBpbnN0cnVjdGlvbi4gICov DQo+ID4+ICAgYm9vbCByZWNvcmRfZnVsbF9tZW1vcnlfcXVlcnkgPSBmYWxzZTsNCj4gPj4gQEAg LTE4MSwyNyArMTY1LDI1IEBAIHN0YXRpYyBkZXRhY2hlZF9yZWdjYWNoZQ0KPiA+PiAqcmVjb3Jk X2Z1bGxfY29yZV9yZWdidWYgPSBOVUxMOw0KPiA+PiAgIHN0YXRpYyBzdGQ6OnZlY3Rvcjx0YXJn ZXRfc2VjdGlvbj4gcmVjb3JkX2Z1bGxfY29yZV9zZWN0aW9uczsNCj4gPj4gICBzdGF0aWMgc3Ry dWN0IHJlY29yZF9mdWxsX2NvcmVfYnVmX2VudHJ5ICpyZWNvcmRfZnVsbF9jb3JlX2J1Zl9saXN0 ID0NCj4gTlVMTDsNCj4gPj4NCj4gPj4gLS8qIFRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSB1 c2VkIGZvciBtYW5hZ2luZyB0aGUgbGlua2VkIGxpc3QgdGhhdA0KPiA+PiAtICAgcmVwcmVzZW50 cyB0aGUgZXhlY3V0aW9uIGxvZy4NCj4gPj4gKy8qIFRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFy ZSB1c2VkIGZvciBtYW5hZ2luZyB0aGUgaGlzdG9yeSBvZiBleGVjdXRlZA0KPiA+PiArICAgaW5z dHJ1Y3Rpb25zIGZyb20gdGhlIGluZmVyaW9yLg0KPiA+Pg0KPiA+PiAtICAgcmVjb3JkX2Z1bGxf Zmlyc3QgaXMgdGhlIGFuY2hvciB0aGF0IGhvbGRzIGRvd24gdGhlIGJlZ2lubmluZyBvZg0KPiA+ PiAtICAgdGhlIGxpc3QuDQo+ID4+ICsgICByZWNvcmRfZnVsbF9saXN0IGNvbnRhaW5zIGFsbCBp bnN0cnVjdGlvbnMgdGhhdCB3ZXJlIGZ1bGx5IGV4ZWN1dGVkIGFuZA0KPiA+PiArICAgc2F2ZWQg dG8gdGhlIGxvZywgc28gdGhhdCB3ZSBjYW4gcmVwbGF5IHRoZSBleGVjdXRpb24uDQo+ID4+DQo+ ID4+IC0gICByZWNvcmRfZnVsbF9saXN0IHNlcnZlcyB0d28gZnVuY3Rpb25zOg0KPiA+PiAtICAg ICAxKSBJbiByZWNvcmQgbW9kZSwgaXQgYW5jaG9ycyB0aGUgZW5kIG9mIHRoZSBsaXN0Lg0KPiA+ PiAtICAgICAyKSBJbiByZXBsYXkgbW9kZSwgaXQgdHJhdmVyc2VzIHRoZSBsaXN0IGFuZCBwb2lu dHMgdG8NCj4gPj4gLQl0aGUgbmV4dCBpbnN0cnVjdGlvbiB0aGF0IG11c3QgYmUgZW11bGF0ZWQu DQo+ID4+ICsgICByZWNvcmRfZnVsbF9uZXh0X2luc24gYWx3YXlzIHBvaW50cyB0byB0aGUgbmV4 dCBpbnN0cnVjdGlvbiB0aGF0IHdvdWxkDQo+ID4+ICsgICBiZSBleGVjdXRlZCBpZiB0aGUgaW5m ZXJpb3IgZXhlY3V0ZXMgZm9yd2FyZC4gIEluIHRoZSBzcGVjaWFsIGNhc2Ugd2hlbg0KPiA+PiAr ICAgdGhlIGluZmVyaW9yIGlzIG5vdCByZXBsYXlpbmcsIHJlY29yZF9mdWxsX25leHRfaW5zbiBw b2ludHMgcGFzdCB0aGUNCj4gPj4gKyAgIGVuZCBvZiB0aGUgaGlzdG9yeS4NCj4gPj4NCj4gPj4g LSAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9oZWFkIGFuZCByZWNvcmRfZnVsbF9hcmNoX2xpc3Rf dGFpbCBhcmUgdXNlZA0KPiA+PiAtICAgdG8gbWFuYWdlIGEgc2VwYXJhdGUgbGlzdCwgd2hpY2gg aXMgdXNlZCB0byBidWlsZCB1cCB0aGUgY2hhbmdlDQo+ID4+IC0gICBlbGVtZW50cyBvZiB0aGUg Y3VycmVudGx5IGV4ZWN1dGluZyBpbnN0cnVjdGlvbiBkdXJpbmcgcmVjb3JkIG1vZGUuDQo+ID4+ IC0gICBXaGVuIHRoaXMgaW5zdHJ1Y3Rpb24gaGFzIGJlZW4gY29tcGxldGVseSBhbm5vdGF0ZWQg aW4gdGhlICJhcmNoDQo+ID4+IC0gICBsaXN0IiwgaXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUg bWFpbiBleGVjdXRpb24gbG9nLiAgKi8NCj4gPj4gKyAgIHJlY29yZF9mdWxsX2luY29tcGxldGVf aW5zdHJ1Y3Rpb24gaG9sZHMgYSBwYXJ0aWFsIGluc3RydWN0aW9uLCB3aGlsZQ0KPiA+PiArICAg dGhlIGxvd2VyIHRhcmdldCBpcyBkaXNhc3NlbWJsaW5nIHRoZSBpbnN0cnVjdGlvbiwgb3IgYXMg cGFydGlhbCB4ZmVycyBhcmUNCj4gPj4gKyAgIGhhcHBlbmluZy4gIEl0IGlzIG1hbmlwdWxhdGVk IGJ5IHRoZSAiYXJjaCBsaXN0IiBmdW5jdGlvbnMgZm9yIGhpc3RvcmljYWwNCj4gPj4gKyAgIHJl YXNvbnMuICAqLw0KPiA+Pg0KPiA+PiAtc3RhdGljIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSBy ZWNvcmRfZnVsbF9maXJzdDsNCj4gPj4gLXN0YXRpYyBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkg KnJlY29yZF9mdWxsX2xpc3QgPSAmcmVjb3JkX2Z1bGxfZmlyc3Q7DQo+ID4+IC1zdGF0aWMgc3Ry dWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZCA9IE5VTEw7 DQo+ID4+IC1zdGF0aWMgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWNvcmRfZnVsbF9hcmNo X2xpc3RfdGFpbCA9IE5VTEw7DQo+ID4+ICtzdGF0aWMgc3RkOjpkZXF1ZTxyZWNvcmRfZnVsbF9p bnN0cnVjdGlvbj4gcmVjb3JkX2Z1bGxfbGlzdDsNCj4gPiBHaXZlbiB0aGF0IHRoaXMgaXMgbm90 IGEgbGlzdCBhbnltb3JlIEkgd29uZGVyIGlmIHdlIHNob3VsZCBiZXR0ZXIgY2FsbCB0aGlzDQo+ IHN0aC4gbGlrZQ0KPiA+IHJlY29yZF9mdWxsX2hpc3Rvcnkgb3IgcmVjb3JkX2Z1bGxfbG9nIG9y IGV2ZW4gc2ltcGx5DQo+IHJlY29yZGVkX2luc3RydWN0aW9ucz8NCj4gPg0KPiA+PiArc3RhdGlj IHJlY29yZF9mdWxsX2luc3RydWN0aW9uIHJlY29yZF9mdWxsX2luY29tcGxldGVfaW5zdHJ1Y3Rp b247DQo+ID4+ICtpbnQgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuOw0KDQpBbnkgcGFydGljdWxhciBy ZWFzb24gd2h5IHRoaXMgaXMgbm90IHN0YXRpYz8NCg0KPiA+Pg0KPiA+PiAgIC8qIHRydWUgYXNr IHVzZXIuIGZhbHNlIGF1dG8gZGVsZXRlIHRoZSBsYXN0IHN0cnVjdCByZWNvcmRfZnVsbF9lbnRy eS4gICovDQo+ID4+ICAgc3RhdGljIGJvb2wgcmVjb3JkX2Z1bGxfc3RvcF9hdF9saW1pdCA9IHRy dWU7DQo+ID4+IEBAIC0zNjEsNiArMzQzLDE0IEBAIHJlY29yZF9mdWxsX3RhcmdldDo6a2lsbCAo KQ0KPiA+PiAgICAgcmVjb3JkX2tpbGwgKHRoaXMpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gK3N0 YXRpYyB2b2lkDQo+ID4+ICtyZWNvcmRfZnVsbF9yZXNldF9pbmNvbXBsZXRlICgpDQo+ID4+ICt7 DQo+ID4+ICsgIHJlY29yZF9mdWxsX2luY29tcGxldGVfaW5zdHJ1Y3Rpb24uZWZmZWN0cy5jbGVh ciAoKTsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5zaWd2YWwu cmVzZXQgKCk7DQo+ID4+ICsgIHJlY29yZF9mdWxsX2luY29tcGxldGVfaW5zdHJ1Y3Rpb24uaW5z bl9udW0gPSAwOw0KPiA+PiArfQ0KPiA+PiArDQo+ID4+ICAgLyogU2VlIHJlY29yZC1mdWxsLmgu ICAqLw0KPiA+Pg0KPiA+PiAgIGludA0KPiA+PiBAQCAtMzkwLDE1NiArMzgwLDEyMCBAQCBzdGF0 aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQNCj4gPj4gKnNob3dfcmVjb3JkX2Z1bGxfY21kbGlz dDsNCj4gPj4gICAvKiBDb21tYW5kIGxpc3QgZm9yICJyZWNvcmQgZnVsbCIuICAqLw0KPiA+PiAg IHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmVjb3JkX2Z1bGxfY21kbGlzdDsNCj4g Pj4NCj4gPj4gLXN0YXRpYyB2b2lkIHJlY29yZF9mdWxsX2dvdG9faW5zbiAoc3RydWN0IHJlY29y ZF9mdWxsX2VudHJ5ICplbnRyeSwNCj4gPj4gK3N0YXRpYyB2b2lkIHJlY29yZF9mdWxsX2dvdG9f aW5zbiAoc2l6ZV90IHRhcmdldF9pbnNuLA0KPiA+PiAgIAkJCQkgICBlbnVtIGV4ZWNfZGlyZWN0 aW9uX2tpbmQgZGlyKTsNCj4gPj4NCj4gPj4gLS8qIEFsbG9jIGFuZCBmcmVlIGZ1bmN0aW9ucyBm b3IgcmVjb3JkX2Z1bGxfcmVnLCByZWNvcmRfZnVsbF9tZW0sIGFuZA0KPiA+PiAtICAgcmVjb3Jk X2Z1bGxfZW5kIGVudHJpZXMuICAqLw0KPiA+PiArLyogSW5pdGlhbGl6YXRpb24gYW5kIGNsZWFu dXAgZnVuY3Rpb25zIGZvciByZWNvcmRfZnVsbF9yZWcgYW5kDQo+ID4+ICsgICByZWNvcmRfZnVs bF9tZW0gZW50cmllcy4gICovDQo+ID4+DQo+ID4+IC0vKiBBbGxvYyBhIHJlY29yZF9mdWxsX3Jl ZyByZWNvcmQgZW50cnkuICAqLw0KPiA+PiArLyogSW5pdCBhIHJlY29yZF9mdWxsX3JlZyByZWNv cmQgZW50cnkuICAqLw0KPiA+Pg0KPiA+PiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVjb3JkX2Z1 bGxfZW50cnkgKg0KPiA+PiAtcmVjb3JkX2Z1bGxfcmVnX2FsbG9jIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbnVtKQ0KPiA+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVjb3Jk X2Z1bGxfZW50cnkNCj4gPj4gK3JlY29yZF9mdWxsX3JlZ19pbml0IChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbnVtKQ0KPiA+PiAgIHsNCj4gPj4gLSAgc3RydWN0IHJlY29yZF9m dWxsX2VudHJ5ICpyZWM7DQo+ID4+ICsgIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSByZWM7DQo+ ID4+ICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOw0KPiA+ Pg0KPiA+PiAtICByZWMgPSBYQ05FVyAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5KTsNCj4gPj4g LSAgcmVjLT50eXBlID0gcmVjb3JkX2Z1bGxfcmVnOw0KPiA+PiAtICByZWMtPnUucmVnLm51bSA9 IHJlZ251bTsNCj4gPj4gLSAgcmVjLT51LnJlZy5sZW4gPSByZWdpc3Rlcl9zaXplIChnZGJhcmNo LCByZWdudW0pOw0KPiA+PiAtICBpZiAocmVjLT51LnJlZy5sZW4gPiBzaXplb2YgKHJlYy0+dS5y ZWcudS5idWYpKQ0KPiA+PiAtICAgIHJlYy0+dS5yZWcudS5wdHIgPSAoZ2RiX2J5dGUgKikgeG1h bGxvYyAocmVjLT51LnJlZy5sZW4pOw0KPiA+PiArICByZWMudHlwZSA9IHJlY29yZF9mdWxsX3Jl ZzsNCj4gPj4gKyAgcmVjLnUucmVnLm51bSA9IHJlZ251bTsNCj4gPj4gKyAgcmVjLnUucmVnLmxl biA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ251bSk7DQo+ID4+ICsgIGlmIChyZWMudS5y ZWcubGVuID4gc2l6ZW9mIChyZWMudS5yZWcudS5idWYpKQ0KPiA+PiArICAgIHJlYy51LnJlZy51 LnB0ciA9IChnZGJfYnl0ZSAqKSB4bWFsbG9jIChyZWMudS5yZWcubGVuKTsNCj4gPj4NCj4gPj4g ICAgIHJldHVybiByZWM7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiAtLyogRnJlZSBhIHJlY29yZF9m dWxsX3JlZyByZWNvcmQgZW50cnkuICAqLw0KPiA+PiArLyogQ2xlYW51cCBhIHJlY29yZF9mdWxs X3JlZyByZWNvcmQgZW50cnkuICAqLw0KPiA+Pg0KPiA+PiAgIHN0YXRpYyBpbmxpbmUgdm9pZA0K PiA+PiAtcmVjb3JkX2Z1bGxfcmVnX3JlbGVhc2UgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAq cmVjKQ0KPiA+PiArcmVjb3JkX2Z1bGxfcmVnX2NsZWFudXAgKHN0cnVjdCByZWNvcmRfZnVsbF9l bnRyeSByZWMpDQo+ID4+ICAgew0KPiA+PiAtICBnZGJfYXNzZXJ0IChyZWMtPnR5cGUgPT0gcmVj b3JkX2Z1bGxfcmVnKTsNCj4gPj4gLSAgaWYgKHJlYy0+dS5yZWcubGVuID4gc2l6ZW9mIChyZWMt PnUucmVnLnUuYnVmKSkNCj4gPj4gLSAgICB4ZnJlZSAocmVjLT51LnJlZy51LnB0cik7DQo+ID4+ IC0gIHhmcmVlIChyZWMpOw0KPiA+PiArICBnZGJfYXNzZXJ0IChyZWMudHlwZSA9PSByZWNvcmRf ZnVsbF9yZWcpOw0KPiA+PiArICBpZiAocmVjLnUucmVnLmxlbiA+IHNpemVvZiAocmVjLnUucmVn LnUuYnVmKSkNCj4gPj4gKyAgICB4ZnJlZSAocmVjLnUucmVnLnUucHRyKTsNCj4gPj4gICB9DQo+ ID4+DQo+ID4+IC0vKiBBbGxvYyBhIHJlY29yZF9mdWxsX21lbSByZWNvcmQgZW50cnkuICAqLw0K PiA+PiArLyogSW5pdCBhIHJlY29yZF9mdWxsX21lbSByZWNvcmQgZW50cnkuICAqLw0KPiA+Pg0K PiA+PiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKg0KPiA+PiAtcmVj b3JkX2Z1bGxfbWVtX2FsbG9jIChDT1JFX0FERFIgYWRkciwgaW50IGxlbikNCj4gPj4gK3N0YXRp YyBpbmxpbmUgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5DQo+ID4+ICtyZWNvcmRfZnVsbF9tZW1f aW5pdCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pDQo+ID4+ICAgew0KPiA+PiAtICBzdHJ1Y3Qg cmVjb3JkX2Z1bGxfZW50cnkgKnJlYzsNCj4gPj4gKyAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5 IHJlYzsNCj4gPj4NCj4gPj4gLSAgcmVjID0gWENORVcgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRy eSk7DQo+ID4+IC0gIHJlYy0+dHlwZSA9IHJlY29yZF9mdWxsX21lbTsNCj4gPj4gLSAgcmVjLT51 Lm1lbS5hZGRyID0gYWRkcjsNCj4gPj4gLSAgcmVjLT51Lm1lbS5sZW4gPSBsZW47DQo+ID4+IC0g IGlmIChyZWMtPnUubWVtLmxlbiA+IHNpemVvZiAocmVjLT51Lm1lbS51LmJ1ZikpDQo+ID4+IC0g ICAgcmVjLT51Lm1lbS51LnB0ciA9IChnZGJfYnl0ZSAqKSB4bWFsbG9jIChsZW4pOw0KPiA+PiAr ICByZWMudHlwZSA9IHJlY29yZF9mdWxsX21lbTsNCj4gPj4gKyAgcmVjLnUubWVtLmFkZHIgPSBh ZGRyOw0KPiA+PiArICByZWMudS5tZW0ubGVuID0gbGVuOw0KPiA+PiArICBpZiAocmVjLnUubWVt LmxlbiA+IHNpemVvZiAocmVjLnUubWVtLnUuYnVmKSkNCj4gPj4gKyAgICByZWMudS5tZW0udS5w dHIgPSAoZ2RiX2J5dGUgKikgeG1hbGxvYyAobGVuKTsNCj4gPj4gKyAgcmVjLnUubWVtLm1lbV9l bnRyeV9ub3RfYWNjZXNzaWJsZSA9IDA7DQo+ID4+DQo+ID4+ICAgICByZXR1cm4gcmVjOw0KPiA+ PiAgIH0NCj4gPj4NCj4gPj4gLS8qIEZyZWUgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5 LiAgKi8NCj4gPj4gKy8qIENsZWFudXAgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAg Ki8NCj4gPj4NCj4gPj4gICBzdGF0aWMgaW5saW5lIHZvaWQNCj4gPj4gLXJlY29yZF9mdWxsX21l bV9yZWxlYXNlIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykNCj4gPj4gLXsNCj4gPj4g LSAgZ2RiX2Fzc2VydCAocmVjLT50eXBlID09IHJlY29yZF9mdWxsX21lbSk7DQo+ID4+IC0gIGlm IChyZWMtPnUubWVtLmxlbiA+IHNpemVvZiAocmVjLT51Lm1lbS51LmJ1ZikpDQo+ID4+IC0gICAg eGZyZWUgKHJlYy0+dS5tZW0udS5wdHIpOw0KPiA+PiAtICB4ZnJlZSAocmVjKTsNCj4gPj4gLX0N Cj4gPj4gLQ0KPiA+PiAtLyogQWxsb2MgYSByZWNvcmRfZnVsbF9lbmQgcmVjb3JkIGVudHJ5LiAg Ki8NCj4gPj4gLQ0KPiA+PiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkg Kg0KPiA+PiAtcmVjb3JkX2Z1bGxfZW5kX2FsbG9jICh2b2lkKQ0KPiA+PiArcmVjb3JkX2Z1bGxf bWVtX2NsZWFudXAgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSByZWMpDQo+ID4+ICAgew0KPiA+ PiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYzsNCj4gPj4gLQ0KPiA+PiAtICByZWMg PSBYQ05FVyAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5KTsNCj4gPj4gLSAgcmVjLT50eXBlID0g cmVjb3JkX2Z1bGxfZW5kOw0KPiA+PiAtDQo+ID4+IC0gIHJldHVybiByZWM7DQo+ID4+ICsgIGdk Yl9hc3NlcnQgKHJlYy50eXBlID09IHJlY29yZF9mdWxsX21lbSk7DQo+ID4+ICsgIGlmIChyZWMu dS5tZW0ubGVuID4gc2l6ZW9mIChyZWMudS5tZW0udS5idWYpKQ0KPiA+PiArICAgIHhmcmVlIChy ZWMudS5tZW0udS5wdHIpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gLS8qIEZyZWUgYSByZWNvcmRf ZnVsbF9lbmQgcmVjb3JkIGVudHJ5LiAgKi8NCj4gPj4gKy8qIEZyZWUgb25lIHJlY29yZCBlbnRy eSwgYW55IHR5cGUuICAqLw0KPiA+Pg0KPiA+PiAgIHN0YXRpYyBpbmxpbmUgdm9pZA0KPiA+PiAt cmVjb3JkX2Z1bGxfZW5kX3JlbGVhc2UgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcmVjKQ0K PiA+PiAtew0KPiA+PiAtICB4ZnJlZSAocmVjKTsNCj4gPj4gLX0NCj4gPj4gLQ0KPiA+PiAtLyog RnJlZSBvbmUgcmVjb3JkIGVudHJ5LCBhbnkgdHlwZS4NCj4gPj4gLSAgIFJldHVybiBlbnRyeS0+ dHlwZSwgaW4gY2FzZSBjYWxsZXIgd2FudHMgdG8ga25vdy4gICovDQo+ID4+IC0NCj4gPj4gLXN0 YXRpYyBpbmxpbmUgZW51bSByZWNvcmRfZnVsbF90eXBlDQo+ID4+IC1yZWNvcmRfZnVsbF9lbnRy eV9yZWxlYXNlIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykNCj4gPj4gK3JlY29yZF9m dWxsX2VudHJ5X2NsZWFudXAgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSByZWMpDQo+ID4+ICAg ew0KPiA+PiAtICBlbnVtIHJlY29yZF9mdWxsX3R5cGUgdHlwZSA9IHJlYy0+dHlwZTsNCj4gPj4N Cj4gPj4gLSAgc3dpdGNoICh0eXBlKSB7DQo+ID4+ICsgIHN3aXRjaCAocmVjLnR5cGUpIHsNCj4g Pj4gICAgIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0KPiA+PiAtICAgIHJlY29yZF9mdWxsX3JlZ19y ZWxlYXNlIChyZWMpOw0KPiA+PiArICAgIHJlY29yZF9mdWxsX3JlZ19jbGVhbnVwIChyZWMpOw0K PiA+PiAgICAgICBicmVhazsNCj4gPj4gICAgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOg0KPiA+PiAt ICAgIHJlY29yZF9mdWxsX21lbV9yZWxlYXNlIChyZWMpOw0KPiA+PiAtICAgIGJyZWFrOw0KPiA+ PiAtICBjYXNlIHJlY29yZF9mdWxsX2VuZDoNCj4gPj4gLSAgICByZWNvcmRfZnVsbF9lbmRfcmVs ZWFzZSAocmVjKTsNCj4gPj4gKyAgICByZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAocmVjKTsNCj4g Pj4gICAgICAgYnJlYWs7DQo+ID4+ICAgICB9DQo+ID4+IC0gIHJldHVybiB0eXBlOw0KPiA+PiAg IH0NCj4gPj4NCj4gPj4gLS8qIEZyZWUgYWxsIHJlY29yZCBlbnRyaWVzIGluIGxpc3QgcG9pbnRl ZCB0byBieSBSRUMuICAqLw0KPiA+PiAtDQo+ID4+ICAgc3RhdGljIHZvaWQNCj4gPj4gLXJlY29y ZF9mdWxsX2xpc3RfcmVsZWFzZSAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMpDQo+ID4+ ICtyZWNvcmRfZnVsbF9yZXNldF9oaXN0b3J5ICgpDQo+ID4+ICAgew0KPiA+PiAtICBpZiAoIXJl YykNCj4gPj4gLSAgICByZXR1cm47DQo+ID4+IC0NCj4gPj4gLSAgd2hpbGUgKHJlYy0+bmV4dCkN Cj4gPj4gLSAgICByZWMgPSByZWMtPm5leHQ7DQo+ID4+ICsgIHJlY29yZF9mdWxsX2luc25fbnVt ID0gMDsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfaW5zbl9jb3VudCA9IDA7DQo+ID4+ICsgIHJlY29y ZF9mdWxsX25leHRfaW5zbiA9IDA7DQo+ID4+DQo+ID4+IC0gIHdoaWxlIChyZWMtPnByZXYpDQo+ ID4+ICsgIGZvciAoYXV0byAmaW5zbiA6IHJlY29yZF9mdWxsX2xpc3QpDQo+ID4+ICAgICAgIHsN Cj4gPj4gLSAgICAgIHJlYyA9IHJlYy0+cHJldjsNCj4gPj4gLSAgICAgIHJlY29yZF9mdWxsX2Vu dHJ5X3JlbGVhc2UgKHJlYy0+bmV4dCk7DQo+ID4+ICsgICAgICBmb3IgKGF1dG8gJmVudHJ5IDog aW5zbi5lZmZlY3RzKQ0KPiA+PiArCXJlY29yZF9mdWxsX2VudHJ5X2NsZWFudXAgKGVudHJ5KTsN Cj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAtICBpZiAocmVjID09ICZyZWNvcmRfZnVsbF9maXJz dCkNCj4gPj4gLSAgICB7DQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9pbnNuX251bSA9IDA7DQo+ ID4+IC0gICAgICByZWNvcmRfZnVsbF9maXJzdC5uZXh0ID0gTlVMTDsNCj4gPj4gLSAgICB9DQo+ ID4+IC0gIGVsc2UNCj4gPj4gLSAgICByZWNvcmRfZnVsbF9lbnRyeV9yZWxlYXNlIChyZWMpOw0K PiA+PiArICByZWNvcmRfZnVsbF9saXN0LmNsZWFyICgpOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4g LS8qIEZyZWUgYWxsIHJlY29yZCBlbnRyaWVzIGZvcndhcmQgb2YgdGhlIGdpdmVuIGxpc3QgcG9z aXRpb24uICAqLw0KPiA+PiAtDQo+ID4+ICAgc3RhdGljIHZvaWQNCj4gPj4gLXJlY29yZF9mdWxs X2xpc3RfcmVsZWFzZV9mb2xsb3dpbmcgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcmVjKQ0K PiA+PiArcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZvbGxvd2luZyAoaW50IGluZGV4KQ0KPiA+ PiAgIHsNCj4gPj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICp0bXAgPSByZWMtPm5leHQ7 DQo+ID4+IC0NCj4gPj4gLSAgcmVjLT5uZXh0ID0gTlVMTDsNCj4gPj4gLSAgd2hpbGUgKHRtcCkN Cj4gPj4gKyAgZm9yIChpbnQgaSA9IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSAtIDE7IGkgPiBp bmRleDsgaS0tKQ0KPiA+PiAgICAgICB7DQo+ID4+IC0gICAgICByZWMgPSB0bXAtPm5leHQ7DQo+ ID4+IC0gICAgICBpZiAocmVjb3JkX2Z1bGxfZW50cnlfcmVsZWFzZSAodG1wKSA9PSByZWNvcmRf ZnVsbF9lbmQpDQo+ID4+IC0Jew0KPiA+PiAtCSAgcmVjb3JkX2Z1bGxfaW5zbl9udW0tLTsNCj4g Pj4gLQkgIHJlY29yZF9mdWxsX2luc25fY291bnQtLTsNCj4gPj4gLQl9DQo+ID4+IC0gICAgICB0 bXAgPSByZWM7DQo+ID4+ICsgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3JkX2Z1bGxfbGlz dFtpXS5lZmZlY3RzKQ0KPiA+PiArCXJlY29yZF9mdWxsX2VudHJ5X2NsZWFudXAgKGVudHJ5KTsN Cj4gPj4gKyAgICAgIHJlY29yZF9mdWxsX2xpc3QucG9wX2JhY2sgKCk7DQo+ID4+ICAgICAgIH0N Cj4gPj4gKyAgLyogU2V0IHRoZSBuZXh0IGluc3RydWN0aW9uIHRvIGJlIHBhc3QgdGhlIGVuZCBv ZiB0aGUgbG9nIHNvIHdlDQo+ID4+ICsgICAgIHN0YXJ0IHJlY29yZGluZyBpZiB0aGUgdXNlciBt b3ZlcyBmb3J3YXJkIGFnYWluLiAgKi8NCj4gPj4gKyAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuID0g aW5kZXg7DQo+ID4+ICt9DQo+IA0KPiA+PiArc3RhdGljIHZvaWQNCj4gPj4gK3JlY29yZF9mdWxs X3NhdmVfaW5zdHJ1Y3Rpb24gKCkNCg0KQSBmdW5jdGlvbiBjb21tZW50IHdvdWxkIGJlIG5pY2Uu DQoNCj4gPj4gK3sNCj4gPj4gKyAgKytyZWNvcmRfZnVsbF9pbnNuX2NvdW50Ow0KPiA+PiArICBy ZWNvcmRfZnVsbF9pbmNvbXBsZXRlX2luc3RydWN0aW9uLmluc25fbnVtID0gcmVjb3JkX2Z1bGxf aW5zbl9jb3VudDsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5l ZmZlY3RzLnNocmlua190b19maXQgKCk7DQo+ID4+ICsgIHJlY29yZF9mdWxsX2xpc3QucHVzaF9i YWNrIChyZWNvcmRfZnVsbF9pbmNvbXBsZXRlX2luc3RydWN0aW9uKTsNCg0KSSB0aGluayB0aGlz IGxpbmUgd2lsbCBhdCBzb21lIHBvaW50IGNhbGwgdGhlIGRlZmF1bHQgY29weSBjb25zdHJ1Y3Rv ciBvZiByZWNvcmRfZnVsbF9tZW1fZW50cnkNCmFuZCByZWNvcmRfZnVsbF9yZWdfZW50cnksIHdo aWNoIGhhdmUgdGhvc2UgYnVmZmVyczoNCg0KZ2RiX2J5dGUgYnVmW3NpemVvZiAoZ2RiX2J5dGUg KildOw0KDQpJSVVDIHlvdSdsbCBvbmx5IGhhdmUgYSBzaGFsbG93IGNvcHkuIFNob3VsZCB3ZSB1 c2UgYSBzdGQ6Om1vdmUgaW5zdGVhZCBoZXJlPw0KDQpJIGZ1cnRoZXIgd29uZGVyIGlmIHRoaXMg cHJvYmxlbSBtaWdodCBiZSByZWxhdGVkIHRvIHRoZSBkb3VibGUgZnJlZSBpc3N1ZXMgeW91DQpk ZXNjcmliZSBpbiBwYXRjaCAjMy4gV291bGQgeW91IG1pbmQgY2hlY2tpbmc/IA0KDQpBbmQgaWYg eW91IGFkZCB0aGUgZGVzdHJ1Y3RvciwgSSB0aGluayBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGFk ZCBhIGNvcHkgY29uc3RydWN0b3IgZXRjLiwgdG9vOg0KaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2Uu Y29tL2NwcC9sYW5ndWFnZS9ydWxlX29mX3RocmVlDQoNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfbmV4 dF9pbnNuKys7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiAgIC8qIERlbGV0ZSB0aGUgZmlyc3QgaW5z dHJ1Y3Rpb24gZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb2csIHRvIG1ha2UNCj4gPj4gQEAg LTU1MCw1MiArNTA0LDIyIEBAIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9mb2xsb3dpbmcgKHN0 cnVjdA0KPiA+PiByZWNvcmRfZnVsbF9lbnRyeSAqcmVjKQ0KPiA+PiAgIHN0YXRpYyB2b2lkDQo+ ID4+ICAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZpcnN0ICh2b2lkKQ0KPiA+PiAgIHsNCj4g Pj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICp0bXA7DQo+ID4+IC0NCj4gPj4gLSAgaWYg KCFyZWNvcmRfZnVsbF9maXJzdC5uZXh0KQ0KPiA+PiArICBpZiAocmVjb3JkX2Z1bGxfbGlzdC5l bXB0eSAoKSkNCj4gPj4gICAgICAgcmV0dXJuOw0KPiA+Pg0KPiA+PiAtICAvKiBMb29wIHVudGls IGEgcmVjb3JkX2Z1bGxfZW5kLiAgKi8NCj4gPj4gLSAgd2hpbGUgKDEpDQo+ID4+IC0gICAgew0K PiA+PiAtICAgICAgLyogQ3V0IHJlY29yZF9mdWxsX2ZpcnN0Lm5leHQgb3V0IG9mIHRoZSBsaW5r ZWQgbGlzdC4gICovDQo+ID4+IC0gICAgICB0bXAgPSByZWNvcmRfZnVsbF9maXJzdC5uZXh0Ow0K PiA+PiAtICAgICAgcmVjb3JkX2Z1bGxfZmlyc3QubmV4dCA9IHRtcC0+bmV4dDsNCj4gPj4gLSAg ICAgIHRtcC0+bmV4dC0+cHJldiA9ICZyZWNvcmRfZnVsbF9maXJzdDsNCj4gPj4gLQ0KPiA+PiAt ICAgICAgLyogdG1wIGlzIG5vdyBpc29sYXRlZCwgYW5kIGNhbiBiZSBkZWxldGVkLiAgKi8NCj4g Pj4gLSAgICAgIGlmIChyZWNvcmRfZnVsbF9lbnRyeV9yZWxlYXNlICh0bXApID09IHJlY29yZF9m dWxsX2VuZCkNCj4gPj4gLQlicmVhazsJLyogRW5kIGxvb3AgYXQgZmlyc3QgcmVjb3JkX2Z1bGxf ZW5kLiAgKi8NCj4gPj4gKyAgZm9yIChhdXRvICZlbnRyeSA6IHJlY29yZF9mdWxsX2xpc3RbMF0u ZWZmZWN0cykNCj4gPj4gKyAgICByZWNvcmRfZnVsbF9lbnRyeV9jbGVhbnVwIChlbnRyeSk7DQo+ ID4+DQo+ID4+IC0gICAgICBpZiAoIXJlY29yZF9mdWxsX2ZpcnN0Lm5leHQpDQo+ID4+IC0Jew0K PiA+PiAtCSAgZ2RiX2Fzc2VydCAocmVjb3JkX2Z1bGxfaW5zbl9udW0gPT0gMSk7DQo+ID4+IC0J ICBicmVhazsJLyogRW5kIGxvb3Agd2hlbiBsaXN0IGlzIGVtcHR5LiAgKi8NCj4gPj4gLQl9DQo+ ID4+IC0gICAgfQ0KPiA+PiArICByZWNvcmRfZnVsbF9saXN0LnBvcF9mcm9udCAoKTsNCj4gPj4g KyAgLS1yZWNvcmRfZnVsbF9uZXh0X2luc247DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiAgIC8qIEFk ZCBhIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSB0byByZWNvcmRfZnVsbF9hcmNoX2xpc3QuICAq Lw0KPiA+Pg0KPiA+PiAgIHN0YXRpYyB2b2lkDQo+ID4+IC1yZWNvcmRfZnVsbF9hcmNoX2xpc3Rf YWRkIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykNCj4gPj4gK3JlY29yZF9mdWxsX2Fy Y2hfbGlzdF9hZGQgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAmcmVjKQ0KPiA+PiAgIHsNCj4g Pj4gLSAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ID4+IC0gICAgZ2RiX3ByaW50ZiAoZ2RiX3N0 ZGxvZywNCj4gPj4gLQkJIlByb2Nlc3MgcmVjb3JkOiByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRk ICVzLlxuIiwNCj4gPj4gLQkJaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAocmVjKSk7DQo+ID4+IC0N Cj4gPj4gLSAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsKQ0KPiA+PiAtICAgIHsNCj4g Pj4gLSAgICAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsLT5uZXh0ID0gcmVjOw0KPiA+PiAt ICAgICAgcmVjLT5wcmV2ID0gcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWw7DQo+ID4+IC0gICAg ICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCA9IHJlYzsNCj4gPj4gLSAgICB9DQo+ID4+IC0g IGVsc2UNCj4gPj4gLSAgICB7DQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVh ZCA9IHJlYzsNCj4gPj4gLSAgICAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsID0gcmVjOw0K PiA+PiAtICAgIH0NCj4gPj4gKyAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5l ZmZlY3RzLnB1c2hfYmFjayAocmVjKTsNCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgLyogUmV0dXJu IHRoZSB2YWx1ZSBzdG9yYWdlIGxvY2F0aW9uIG9mIGEgcmVjb3JkIGVudHJ5LiAgKi8NCj4gPj4g QEAgLTYxMyw3ICs1MzcsNiBAQCByZWNvcmRfZnVsbF9nZXRfbG9jIChzdHJ1Y3QgcmVjb3JkX2Z1 bGxfZW50cnkgKnJlYykNCj4gPj4gICAgICAgICByZXR1cm4gcmVjLT51LnJlZy51LnB0cjsNCj4g Pj4gICAgICAgZWxzZQ0KPiA+PiAgICAgICAgIHJldHVybiByZWMtPnUucmVnLnUuYnVmOw0KPiA+ PiAtICBjYXNlIHJlY29yZF9mdWxsX2VuZDoNCj4gPj4gICAgIGRlZmF1bHQ6DQo+ID4+ICAgICAg IGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJ1bmV4cGVjdGVkIHJlY29yZF9mdWxsX2VudHJ5IHR5 cGUiKTsNCj4gPj4gICAgICAgcmV0dXJuIE5VTEw7DQo+ID4+IEBAIC02MjUsNyArNTQ4LDcgQEAg cmVjb3JkX2Z1bGxfZ2V0X2xvYyAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMpDQo+ID4+ ICAgaW50DQo+ID4+ICAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0pDQo+ID4+ICAgew0KPiA+PiAtICBzdHJ1Y3QgcmVj b3JkX2Z1bGxfZW50cnkgKnJlYzsNCj4gPj4gKyAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5IHJl YzsNCj4gPiBJIHRoaW5rIHdlIGNhbiBvbWl0IHRoZSBzdHJ1Y3Qga2V5d29yZCBoZXJlICh0aGVy ZSBhcmUgc29tZSBtb3JlDQo+IG9jY3VycmVuY2VzIGluIHRoaXMgcGF0Y2gpLg0KPiA+DQo+ID4+ ICAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gPj4gICAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0 ZGxvZywNCj4gPj4gQEAgLTYzMyw5ICs1NTYsOSBAQCByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRk X3JlZyAoc3RydWN0IHJlZ2NhY2hlDQo+ID4+ICpyZWdjYWNoZSwgaW50IHJlZ251bSkNCj4gPj4g ICAJCSJyZWNvcmQgbGlzdC5cbiIsDQo+ID4+ICAgCQlyZWdudW0pOw0KPiA+Pg0KPiA+PiAtICBy ZWMgPSByZWNvcmRfZnVsbF9yZWdfYWxsb2MgKHJlZ2NhY2hlLCByZWdudW0pOw0KPiA+PiArICBy ZWMgPSByZWNvcmRfZnVsbF9yZWdfaW5pdCAocmVnY2FjaGUsIHJlZ251bSk7DQo+ID4+DQo+ID4+ IC0gIHJlZ2NhY2hlLT5jb29rZWRfcmVhZCAocmVnbnVtLCByZWNvcmRfZnVsbF9nZXRfbG9jIChy ZWMpKTsNCj4gPj4gKyAgcmVnY2FjaGUtPmNvb2tlZF9yZWFkIChyZWdudW0sIHJlY29yZF9mdWxs X2dldF9sb2MgKCZyZWMpKTsNCj4gPj4NCj4gPj4gICAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9h ZGQgKHJlYyk7DQo+ID4+DQo+ID4+IEBAIC02NDgsNyArNTcxLDcgQEAgcmVjb3JkX2Z1bGxfYXJj aF9saXN0X2FkZF9yZWcgKHN0cnVjdCByZWdjYWNoZQ0KPiA+PiAqcmVnY2FjaGUsIGludCByZWdu dW0pDQo+ID4+ICAgaW50DQo+ID4+ICAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9tZW0gKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuKQ0KPiA+PiAgIHsNCj4gPj4gLSAgc3RydWN0IHJlY29yZF9m dWxsX2VudHJ5ICpyZWM7DQo+ID4+ICsgIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSByZWM7DQo+ ID4+DQo+ID4+ICAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gPj4gICAgICAgZ2RiX3ByaW50 ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gQEAgLTY1OSwxMiArNTgyLDEyIEBAIHJlY29yZF9mdWxsX2Fy Y2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFINCj4gYWRkciwNCj4gPj4gaW50IGxlbikNCj4gPj4g ICAgIGlmICghYWRkcikJLyogRklYTUU6IFdoeT8gIFNvbWUgYXJjaCBtdXN0IHBlcm1pdCBpdC4u LiAgKi8NCj4gPj4gICAgICAgcmV0dXJuIDA7DQo+ID4+DQo+ID4+IC0gIHJlYyA9IHJlY29yZF9m dWxsX21lbV9hbGxvYyAoYWRkciwgbGVuKTsNCj4gPj4gKyAgcmVjID0gcmVjb3JkX2Z1bGxfbWVt X2luaXQgKGFkZHIsIGxlbik7DQo+ID4+DQo+ID4+ICAgICBpZiAocmVjb3JkX3JlYWRfbWVtb3J5 IChjdXJyZW50X2luZmVyaW9yICgpLT5hcmNoICgpLCBhZGRyLA0KPiA+PiAtCQkJICByZWNvcmRf ZnVsbF9nZXRfbG9jIChyZWMpLCBsZW4pKQ0KPiA+PiArCQkJICByZWNvcmRfZnVsbF9nZXRfbG9j ICgmcmVjKSwgbGVuKSkNCj4gPj4gICAgICAgew0KPiA+PiAtICAgICAgcmVjb3JkX2Z1bGxfbWVt X3JlbGVhc2UgKHJlYyk7DQo+ID4+ICsgICAgICByZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAocmVj KTsNCj4gPj4gICAgICAgICByZXR1cm4gLTE7DQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gQEAg LTY3MywyNyArNTk2LDYgQEAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9tZW0gKENPUkVfQURE Ug0KPiBhZGRyLA0KPiA+PiBpbnQgbGVuKQ0KPiA+PiAgICAgcmV0dXJuIDA7DQo+ID4+ICAgfQ0K PiA+Pg0KPiA+PiAtLyogQWRkIGEgcmVjb3JkX2Z1bGxfZW5kIHR5cGUgc3RydWN0IHJlY29yZF9m dWxsX2VudHJ5IHRvDQo+ID4+IC0gICByZWNvcmRfZnVsbF9hcmNoX2xpc3QuICAqLw0KPiA+PiAt DQo+ID4+IC1pbnQNCj4gPj4gLXJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfZW5kICh2b2lkKQ0K PiA+PiAtew0KPiA+PiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYzsNCj4gPj4gLQ0K PiA+PiAtICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gPj4gLSAgICBnZGJfcHJpbnRmIChnZGJf c3RkbG9nLA0KPiA+PiAtCQkiUHJvY2VzcyByZWNvcmQ6IGFkZCBlbmQgdG8gYXJjaCBsaXN0Llxu Iik7DQo+ID4+IC0NCj4gPj4gLSAgcmVjID0gcmVjb3JkX2Z1bGxfZW5kX2FsbG9jICgpOw0KPiA+ PiAtICByZWMtPnUuZW5kLnNpZ3ZhbCA9IEdEQl9TSUdOQUxfMDsNCj4gPj4gLSAgcmVjLT51LmVu ZC5pbnNuX251bSA9ICsrcmVjb3JkX2Z1bGxfaW5zbl9jb3VudDsNCj4gPj4gLQ0KPiA+PiAtICBy ZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiA+PiAtDQo+ID4+IC0gIHJldHVybiAw Ow0KPiA+PiAtfQ0KPiA+PiAtDQo+ID4+ICAgc3RhdGljIHZvaWQNCj4gPj4gICByZWNvcmRfZnVs bF9jaGVja19pbnNuX251bSAodm9pZCkNCj4gPj4gICB7DQo+ID4+IEBAIC03MjUsOCArNjI3LDcg QEAgcmVjb3JkX2Z1bGxfbWVzc2FnZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gPj4g ZW51bSBnZGJfc2lnbmFsIHNpZ25hbCkNCj4gPj4NCj4gPj4gICAgIHRyeQ0KPiA+PiAgICAgICB7 DQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZCA9IE5VTEw7DQo+ID4+IC0g ICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCA9IE5VTEw7DQo+ID4+ICsgICAgICByZWNv cmRfZnVsbF9yZXNldF9pbmNvbXBsZXRlICgpOw0KPiA+Pg0KPiA+PiAgICAgICAgIC8qIENoZWNr IHJlY29yZF9mdWxsX2luc25fbnVtLiAgKi8NCj4gPj4gICAgICAgICByZWNvcmRfZnVsbF9jaGVj a19pbnNuX251bSAoKTsNCj4gPj4gQEAgLTc0NiwyMCArNjQ3LDE2IEBAIHJlY29yZF9mdWxsX21l c3NhZ2UgKHN0cnVjdCByZWdjYWNoZQ0KPiAqcmVnY2FjaGUsDQo+ID4+IGVudW0gZ2RiX3NpZ25h bCBzaWduYWwpDQo+ID4+ICAgCSB0aGUgdXNlciBzYXlzIHNvbWV0aGluZyBkaWZmZXJlbnQsIGxp a2UgImRlbGl2ZXIgdGhpcyBzaWduYWwiDQo+ID4+ICAgCSBkdXJpbmcgdGhlIHJlcGxheSBtb2Rl KS4NCj4gPj4NCj4gPj4gLQkgVXNlciBzaG91bGQgdW5kZXJzdGFuZCB0aGF0IG5vdGhpbmcgaGUg ZG9lcyBkdXJpbmcgdGhlIHJlcGxheQ0KPiA+PiAtCSBtb2RlIHdpbGwgY2hhbmdlIHRoZSBiZWhh dmlvciBvZiB0aGUgY2hpbGQuICBJZiBoZSB0cmllcywNCj4gPj4gKwkgVXNlciBzaG91bGQgdW5k ZXJzdGFuZCB0aGF0IG5vdGhpbmcgdGhleSBkbyBkdXJpbmcgdGhlIHJlcGxheQ0KPiA+PiArCSBt b2RlIHdpbGwgY2hhbmdlIHRoZSBiZWhhdmlvciBvZiB0aGUgY2hpbGQuICBJZiB0aGV5IHRyeSwN Cj4gPj4gICAJIHRoZW4gdGhhdCBpcyBhIHVzZXIgZXJyb3IuDQo+ID4+DQo+ID4+ICAgCSBCdXQg d2Ugc2hvdWxkIHN0aWxsIGRlbGl2ZXIgdGhlIHNpZ25hbCB0byBnZGIgZHVyaW5nIHRoZSByZXBs YXksDQo+ID4+ICAgCSBpZiB3ZSBkZWxpdmVyZWQgaXQgZHVyaW5nIHRoZSByZWNvcmRpbmcuICBU aGVyZWZvcmUgd2Ugc2hvdWxkDQo+ID4+ICAgCSByZWNvcmQgdGhlIHNpZ25hbCBkdXJpbmcgcmVj b3JkX2Z1bGxfd2FpdCwgbm90DQo+ID4+ICAgCSByZWNvcmRfZnVsbF9yZXN1bWUuICAqLw0KPiA+ PiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QgIT0gJnJlY29yZF9mdWxsX2ZpcnN0KSAgLyog RklYTUUgYmV0dGVyIHdheQ0KPiA+PiAtCQkJCQkJICAgICAgdG8gY2hlY2sgKi8NCj4gPj4gLQl7 DQo+ID4+IC0JICBnZGJfYXNzZXJ0IChyZWNvcmRfZnVsbF9saXN0LT50eXBlID09IHJlY29yZF9m dWxsX2VuZCk7DQo+ID4+IC0JICByZWNvcmRfZnVsbF9saXN0LT51LmVuZC5zaWd2YWwgPSBzaWdu YWw7DQo+ID4+IC0JfQ0KPiA+PiArICAgICAgaWYgKHNpZ25hbCAhPSBHREJfU0lHTkFMXzApDQo+ ID4+ICsJcmVjb3JkX2Z1bGxfbGlzdFtyZWNvcmRfZnVsbF9uZXh0X2luc24gLSAxXS5zaWd2YWwg PSBzaWduYWw7DQoNClNpbWlsYXIgY29tbWVudCBhcyBhbHJlYWR5IGluIG15IGVhcmxpZXIgcmV2 aWV3Og0KQ2FuIHJlY29yZF9mdWxsX25leHRfaW5zbiBiZSA9PSAwIGhlcmUgb3IgbWF5IHJlY29y ZF9mdWxsX2xpc3QgYmUgZW1wdHkgPw0KDQpJIHRoaW5rIGl0IG1pZ2h0IGJlIHdvcnRoIGNoZWNr aW5nIHRoZSBwYXRjaCBpZiB0aGVyZSBhcmUgbW9yZSBzaW1pbGFyIGlzc3Vlcy4gDQpUaGUgb2xk IHBhdGNoIGhhZCBtb3JlIGd1YXJkcyB0byBjaGVjayB0aGlzLg0KDQpBbmQgSSBub3RpY2VkIGlu IHNvbWUgb3RoZXIgbG9jYXRpb25zIHlvdSBjYXN0IGl0Og0KDQoJICBpZiAoc2lndmFsICE9IEdE Ql9TSUdOQUxfMCkNCgkgICAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5zaWd2 YWwgPSAoZ2RiX3NpZ25hbCkgc2lndmFsOw0KDQpOb3Qgc3VyZSBpZiB0aGlzIGlzIG5lY2Vzc2Fy eSBvciBub3QsIGJ1dCBpdCBtaWdodCBiZSBmb3IgY2hlY2tpbmcgYW5kIG1ha2luZyBpdCBjb25z aXN0ZW50Pw0KQW5kIGlzIGl0IGludGVuZGVkIHRoYXQgbm93IHdlIGRvbid0IGNsZWFyIHNpZ3Zh bCBhbnltb3JlPyANCg0KU2hvdWxkbid0IHdlIHNldCBpdCB0byAgc3RkOjpudWxsb3B0IGluIGNh c2Ugc2lnbmFsID09IEdEQl9TSUdOQUxfMCwgIHRvIG1hdGNoIHRoZSBvcmlnaW5hbA0KYmVoYXZp b3VyPw0KDQo+ID4+ICAgICAgICAgaWYgKHNpZ25hbCA9PSBHREJfU0lHTkFMXzANCj4gPj4gICAJ ICB8fCAhZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9zaWduYWxfcCAoZ2RiYXJjaCkpDQo+ID4+IEBA IC03NzgsMTMgKzY3NSwxMSBAQCByZWNvcmRfZnVsbF9tZXNzYWdlIChzdHJ1Y3QgcmVnY2FjaGUN Cj4gKnJlZ2NhY2hlLA0KPiA+PiBlbnVtIGdkYl9zaWduYWwgc2lnbmFsKQ0KPiA+PiAgICAgICB9 DQo+ID4+ICAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZXgpDQo+ID4+ICAgICAgIHsN Cj4gPj4gLSAgICAgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZSAocmVjb3JkX2Z1bGxfYXJjaF9s aXN0X3RhaWwpOw0KPiA+PiArICAgICAgcmVjb3JkX2Z1bGxfcmVzZXRfaW5jb21wbGV0ZSAoKTsN Cj4gPj4gICAgICAgICB0aHJvdzsNCj4gPj4gICAgICAgfQ0KPiA+Pg0KPiA+PiAtICByZWNvcmRf ZnVsbF9saXN0LT5uZXh0ID0gcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2hlYWQ7DQo+ID4+IC0gIHJl Y29yZF9mdWxsX2FyY2hfbGlzdF9oZWFkLT5wcmV2ID0gcmVjb3JkX2Z1bGxfbGlzdDsNCj4gPj4g LSAgcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsOw0KPiA+PiAr ICByZWNvcmRfZnVsbF9zYXZlX2luc3RydWN0aW9uICgpOw0KPiA+Pg0KPiA+PiAgICAgaWYgKHJl Y29yZF9mdWxsX2luc25fbnVtID09IHJlY29yZF9mdWxsX2luc25fbWF4X251bSkNCj4gPj4gICAg ICAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZpcnN0ICgpOw0KPiA+PiBAQCAtODI5LDkgKzcy NCw5IEBAIHN0YXRpYyBlbnVtIHRhcmdldF9zdG9wX3JlYXNvbg0KPiA+PiByZWNvcmRfZnVsbF9z dG9wX3JlYXNvbg0KPiA+PiAgICAgIGVudHJpZXMgYW5kIG1lbW9yeSBlbnRyaWVzLCBmb2xsb3dl ZCBieSBhbiAnZW5kJyBlbnRyeS4gICovDQo+ID4+DQo+ID4+ICAgc3RhdGljIGlubGluZSB2b2lk DQo+ID4+IC1yZWNvcmRfZnVsbF9leGVjX2luc24gKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs DQo+ID4+IC0JCSAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gPj4gLQkJICAgICAg IHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqZW50cnkpDQo+ID4+ICtyZWNvcmRfZnVsbF9leGVj X2VudHJ5IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+PiArCQkJc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsDQo+ID4+ICsJCQlzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKmVudHJ5KQ0K PiA+IE5pdDogb21pdCBzdHJ1Y3Qga2V5d29yZHMNCj4gPiBBbmQgdGhlcmUgYXJlIHNvbWUgbW9y ZSBwbGFjZXMgaW4gdGhpcyBzZXJpZXMvcGF0Y2gsIGJ1dCBJIHdpbGwgc3RvcA0KPiBjb21tZW50 aW5nDQo+ID4gbm93IG9uIGFsbCBvZiB0aGVtLg0KPiA+DQo+ID4+ICAgew0KPiA+PiAgICAgc3dp dGNoIChlbnRyeS0+dHlwZSkNCj4gPj4gICAgICAgew0KPiA+PiBAQCAtOTA5LDYgKzgwNCwxNSBA QCByZWNvcmRfZnVsbF9leGVjX2luc24gKHN0cnVjdCByZWdjYWNoZQ0KPiAqcmVnY2FjaGUsDQo+ ID4+ICAgICAgIH0NCj4gPj4gICB9DQo+ID4+DQo+ID4+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4g Pj4gK3JlY29yZF9mdWxsX2V4ZWNfaW5zbiAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4g Pj4gKwkJICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiA+PiArCQkgICAgICAgcmVj b3JkX2Z1bGxfaW5zdHJ1Y3Rpb24gJmluc24pDQo+ID4+ICt7DQo+ID4+ICsgIGZvciAoYXV0byAm ZW50cnkgOiBpbnNuLmVmZmVjdHMpDQo+ID4+ICsgICAgcmVjb3JkX2Z1bGxfZXhlY19lbnRyeSAo cmVnY2FjaGUsIGdkYmFyY2gsICZlbnRyeSk7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gICBzdGF0 aWMgdm9pZCByZWNvcmRfZnVsbF9yZXN0b3JlIChzdHJ1Y3QgYmZkICZjYmZkKTsNCj4gPj4NCj4g Pj4gICAvKiBBc3luY2hyb25vdXMgc2lnbmFsIGhhbmRsZSByZWdpc3RlcmVkIGFzIGV2ZW50IGxv b3Agc291cmNlIGZvciB3aGVuDQo+ID4+IEBAIC05ODMsMTAgKzg4Nyw3IEBAIHJlY29yZF9mdWxs X29wZW4gKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gPj4gICAgIHJlY29yZF9w cmVvcGVuICgpOw0KPiA+Pg0KPiA+PiAgICAgLyogUmVzZXQgKi8NCj4gPj4gLSAgcmVjb3JkX2Z1 bGxfaW5zbl9udW0gPSAwOw0KPiA+PiAtICByZWNvcmRfZnVsbF9pbnNuX2NvdW50ID0gMDsNCj4g Pj4gLSAgcmVjb3JkX2Z1bGxfbGlzdCA9ICZyZWNvcmRfZnVsbF9maXJzdDsNCj4gPj4gLSAgcmVj b3JkX2Z1bGxfbGlzdC0+bmV4dCA9IE5VTEw7DQo+ID4+ICsgIHJlY29yZF9mdWxsX3Jlc2V0X2hp c3RvcnkgKCk7DQo+ID4+DQo+ID4+ICAgICBiZmQgKmNiZmQgPSBnZXRfaW5mZXJpb3JfY29yZV9i ZmQgKGN1cnJlbnRfaW5mZXJpb3IgKCkpOw0KPiA+PiAgICAgaWYgKGNiZmQgIT0gbnVsbHB0cikN Cj4gPj4gQEAgLTEwMTQsNyArOTE1LDcgQEAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6OmNsb3Nl ICgpDQo+ID4+ICAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAgICAgICBnZGJfcHJpbnRmIChn ZGJfc3RkbG9nLCAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF9mdWxsX2Nsb3NlXG4iKTsNCj4gPj4N Cj4gPj4gLSAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlIChyZWNvcmRfZnVsbF9saXN0KTsNCj4g Pj4gKyAgcmVjb3JkX2Z1bGxfcmVzZXRfaGlzdG9yeSAoKTsNCj4gPj4NCj4gPj4gICAgIC8qIFJl bGVhc2UgcmVjb3JkX2Z1bGxfY29yZV9yZWdidWYuICAqLw0KPiA+PiAgICAgaWYgKHJlY29yZF9m dWxsX2NvcmVfcmVnYnVmKQ0KPiA+PiBAQCAtMTMxMyw3ICsxMjE0LDYgQEAgcmVjb3JkX2Z1bGxf d2FpdF8xIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLA0KPiA+PiAgICAgICAgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7DQo+ID4+ICAgICAgICAgY29uc3QgYWRk cmVzc19zcGFjZSAqYXNwYWNlID0gY3VycmVudF9pbmZlcmlvciAoKS0+YXNwYWNlLmdldCAoKTsN Cj4gPj4gICAgICAgICBpbnQgY29udGludWVfZmxhZyA9IDE7DQo+ID4+IC0gICAgICBpbnQgZmly c3RfcmVjb3JkX2Z1bGxfZW5kID0gMTsNCj4gPj4NCj4gPj4gICAgICAgICB0cnkNCj4gPj4gICAJ ew0KPiA+PiBAQCAtMTMyMiw3ICsxMjIyLDYgQEAgcmVjb3JkX2Z1bGxfd2FpdF8xIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzLA0KPiA+PiAgIAkgIHJlY29yZF9mdWxsX3N0b3BfcmVhc29uID0gVEFS R0VUX1NUT1BQRURfQllfTk9fUkVBU09OOw0KPiA+PiAgIAkgIHN0YXR1cy0+c2V0X3N0b3BwZWQg KEdEQl9TSUdOQUxfMCk7DQo+ID4+DQo+ID4+IC0JICAvKiBDaGVjayBicmVha3BvaW50IHdoZW4g Zm9yd2FyZCBleGVjdXRlLiAgKi8NCj4gPj4gICAJICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9 PSBFWEVDX0ZPUldBUkQpDQo+ID4+ICAgCSAgICB7DQo+ID4+ICAgCSAgICAgIHRtcF9wYyA9IHJl Z2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hlKTsNCj4gPj4gQEAgLTEzMzAsOCArMTIyOSw3IEBAIHJl Y29yZF9mdWxsX3dhaXRfMSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywNCj4gPj4NCj4gPj4gJnJl Y29yZF9mdWxsX3N0b3BfcmVhc29uKSkNCj4gPj4gICAJCXsNCj4gPj4gICAJCSAgaWYgKHJlY29y ZF9kZWJ1ZykNCj4gPj4gLQkJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCQkJ IlByb2Nlc3MgcmVjb3JkOiBicmVhayBhdCAlcy5cbiIsDQo+ID4+ICsJCSAgICBnZGJfcHJpbnRm IChnZGJfc3RkbG9nLCAiUHJvY2VzcyByZWNvcmQ6IGJyZWFrIGF0ICVzLlxuIiwNCj4gPj4gICAJ CQkJcGFkZHJlc3MgKGdkYmFyY2gsIHRtcF9wYykpOw0KPiA+PiAgIAkJICBnb3RvIHJlcGxheV9v dXQ7DQo+ID4+ICAgCQl9DQo+ID4+IEBAIC0xMzQ0LDEwICsxMjQyLDEwIEBAIHJlY29yZF9mdWxs X3dhaXRfMSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywNCj4gPj4gICAJICAgICB0aGUgc2lnbmFs LiAgKi8NCj4gPj4gICAJICB0YXJnZXRfdGVybWluYWw6Om91cnMgKCk7DQo+ID4+DQo+ID4+IC0J ICAvKiBJbiBFWEVDX0ZPUldBUkQgbW9kZSwgcmVjb3JkX2Z1bGxfbGlzdCBwb2ludHMgdG8gdGhl IHRhaWwgb2YNCj4gcHJldg0KPiA+PiAtCSAgICAgaW5zdHJ1Y3Rpb24uICAqLw0KPiA+PiAtCSAg aWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19GT1JXQVJEICYmIHJlY29yZF9mdWxsX2xp c3QtDQo+ID5uZXh0KQ0KPiA+PiAtCSAgICByZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxf bGlzdC0+bmV4dDsNCj4gPj4gKwkgIC8qIEluIEVYRUNfRk9SV0FSRCBtb2RlLCByZWNvcmRfZnVs bF9uZXh0X2luc24gaXMgdGhlIG5leHQNCj4gPj4gKwkgICAgIGluc3RydWN0aW9uIHRvIGJlIGV4 ZWN1dGVkLiAgKi8NCj4gPj4gKwkgIGlmIChleGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVW RVJTRSkNCj4gPj4gKwkgICAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuLS07DQo+ID4+DQo+ID4+ICAg CSAgLyogTG9vcCBvdmVyIHRoZSByZWNvcmRfZnVsbF9saXN0LCBsb29raW5nIGZvciB0aGUgbmV4 dCBwbGFjZSB0bw0KPiA+PiAgIAkgICAgIHN0b3AuICAqLw0KPiA+PiBAQCAtMTM1NSwxMDggKzEy NTMsOTIgQEAgcmVjb3JkX2Z1bGxfd2FpdF8xIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLA0KPiA+ PiAgIAkgICAgew0KPiA+PiAgIAkgICAgICAvKiBDaGVjayBmb3IgYmVnaW5uaW5nIGFuZCBlbmQg b2YgbG9nLiAgKi8NCj4gPj4gICAJICAgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhF Q19SRVZFUlNFDQo+ID4+IC0JCSAgJiYgcmVjb3JkX2Z1bGxfbGlzdCA9PSAmcmVjb3JkX2Z1bGxf Zmlyc3QpDQo+ID4+ICsJCSAgJiYgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuIDwgMCkNCj4gPj4gICAJ CXsNCj4gPj4gICAJCSAgLyogSGl0IGJlZ2lubmluZyBvZiByZWNvcmQgbG9nIGluIHJldmVyc2Uu ICAqLw0KPiA+PiAgIAkJICBzdGF0dXMtPnNldF9ub19oaXN0b3J5ICgpOw0KPiA+PiArCQkgIHJl Y29yZF9mdWxsX25leHRfaW5zbiA9IDA7DQo+ID4+ICAgCQkgIGJyZWFrOw0KPiA+PiAgIAkJfQ0K PiA+PiAgIAkgICAgICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiAhPSBFWEVDX1JFVkVSU0UNCj4g Pj4gLQkJICAmJiAhcmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCkNCj4gPj4gKwkJICAmJiByZWNvcmRf ZnVsbF9uZXh0X2luc24gPT0gcmVjb3JkX2Z1bGxfbGlzdC5zaXplICgpKQ0KPiA+PiAgIAkJew0K PiA+PiAgIAkJICAvKiBIaXQgZW5kIG9mIHJlY29yZCBsb2cgZ29pbmcgZm9yd2FyZC4gICovDQo+ ID4+ICAgCQkgIHN0YXR1cy0+c2V0X25vX2hpc3RvcnkgKCk7DQo+ID4+ICAgCQkgIGJyZWFrOw0K PiA+PiAgIAkJfQ0KPiA+Pg0KPiA+PiAtCSAgICAgIHJlY29yZF9mdWxsX2V4ZWNfaW5zbiAocmVn Y2FjaGUsIGdkYmFyY2gsIHJlY29yZF9mdWxsX2xpc3QpOw0KPiA+PiArCSAgICAgIHJlY29yZF9m dWxsX2V4ZWNfaW5zbg0KPiA+PiArCQkocmVnY2FjaGUsIGdkYmFyY2gsDQo+ID4+ICsJCSByZWNv cmRfZnVsbF9saXN0W3JlY29yZF9mdWxsX25leHRfaW5zbl0pOw0KPiA+Pg0KPiA+PiAtCSAgICAg IGlmIChyZWNvcmRfZnVsbF9saXN0LT50eXBlID09IHJlY29yZF9mdWxsX2VuZCkNCj4gPj4gKwkg ICAgICAvKiBzdGVwICovDQo+ID4+ICsJICAgICAgaWYgKHJlY29yZF9mdWxsX3Jlc3VtZV9zdGVw KQ0KPiA+PiAgIAkJew0KPiA+PiAgIAkJICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gPj4gLQkJ ICAgIGdkYl9wcmludGYNCj4gPj4gLQkJICAgICAgKGdkYl9zdGRsb2csDQo+ID4+IC0JCSAgICAg ICAiUHJvY2VzcyByZWNvcmQ6IHJlY29yZF9mdWxsX2VuZCAlcyB0byAiDQo+ID4+IC0JCSAgICAg ICAiaW5mZXJpb3IuXG4iLA0KPiA+PiAtCQkgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAo cmVjb3JkX2Z1bGxfbGlzdCkpOw0KPiA+PiAtDQo+ID4+IC0JCSAgaWYgKGZpcnN0X3JlY29yZF9m dWxsX2VuZA0KPiA+PiAtCQkgICAgICAmJiBleGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVW RVJTRSkNCj4gPj4gLQkJICAgIHsNCj4gPj4gLQkJICAgICAgLyogV2hlbiByZXZlcnNlIGV4ZWN1 dGUsIHRoZSBmaXJzdA0KPiA+PiAtCQkJIHJlY29yZF9mdWxsX2VuZCBpcyB0aGUgcGFydCBvZiBj dXJyZW50DQo+ID4+IC0JCQkgaW5zdHJ1Y3Rpb24uICAqLw0KPiA+PiAtCQkgICAgICBmaXJzdF9y ZWNvcmRfZnVsbF9lbmQgPSAwOw0KPiA+PiAtCQkgICAgfQ0KPiA+PiAtCQkgIGVsc2UNCj4gPj4g LQkJICAgIHsNCj4gPj4gLQkJICAgICAgLyogSW4gRVhFQ19SRVZFUlNFIG1vZGUsIHRoaXMgaXMg dGhlDQo+ID4+IC0JCQkgcmVjb3JkX2Z1bGxfZW5kIG9mIHByZXYgaW5zdHJ1Y3Rpb24uICBJbg0K PiA+PiAtCQkJIEVYRUNfRk9SV0FSRCBtb2RlLCB0aGlzIGlzIHRoZQ0KPiA+PiAtCQkJIHJlY29y ZF9mdWxsX2VuZCBvZiBjdXJyZW50IGluc3RydWN0aW9uLiAgKi8NCj4gPj4gLQkJICAgICAgLyog c3RlcCAqLw0KPiA+PiAtCQkgICAgICBpZiAocmVjb3JkX2Z1bGxfcmVzdW1lX3N0ZXApDQo+ID4+ IC0JCQl7DQo+ID4+IC0JCQkgIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiA+PiAtCQkJICAgIGdk Yl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCQkJCSJQcm9jZXNzIHJlY29yZDogc3RlcC5c biIpOw0KPiA+PiAtCQkJICBjb250aW51ZV9mbGFnID0gMDsNCj4gPj4gLQkJCX0NCj4gPj4gLQ0K PiA+PiAtCQkgICAgICAvKiBjaGVjayBicmVha3BvaW50ICovDQo+ID4+IC0JCSAgICAgIHRtcF9w YyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hlKTsNCj4gPj4gLQkJICAgICAgaWYgKHJlY29y ZF9jaGVja19zdG9wcGVkX2J5X2JyZWFrcG9pbnQNCj4gPj4gLQkJCSAgKGFzcGFjZSwgdG1wX3Bj LCAmcmVjb3JkX2Z1bGxfc3RvcF9yZWFzb24pKQ0KPiA+PiAtCQkJew0KPiA+PiAtCQkJICBpZiAo cmVjb3JkX2RlYnVnKQ0KPiA+PiAtCQkJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+ IC0JCQkJCSJQcm9jZXNzIHJlY29yZDogYnJlYWsgIg0KPiA+PiAtCQkJCQkiYXQgJXMuXG4iLA0K PiA+PiAtCQkJCQlwYWRkcmVzcyAoZ2RiYXJjaCwgdG1wX3BjKSk7DQo+ID4+ICsJCSAgICBnZGJf cHJpbnRmIChnZGJfc3RkbG9nLA0KPiA+PiArCQkJCSJQcm9jZXNzIHJlY29yZDogc3RlcC5cbiIp Ow0KPiA+PiArCQkgIGNvbnRpbnVlX2ZsYWcgPSAwOw0KPiA+PiArCQl9DQo+ID4+DQo+ID4+IC0J CQkgIGNvbnRpbnVlX2ZsYWcgPSAwOw0KPiA+PiAtCQkJfQ0KPiA+PiArCSAgICAgIC8qIGNoZWNr IGJyZWFrcG9pbnQgKi8NCj4gPj4gKwkgICAgICB0bXBfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChy ZWdjYWNoZSk7DQo+ID4+ICsJICAgICAgaWYgKHJlY29yZF9jaGVja19zdG9wcGVkX2J5X2JyZWFr cG9pbnQNCj4gPj4gKwkJICAoYXNwYWNlLCB0bXBfcGMsICZyZWNvcmRfZnVsbF9zdG9wX3JlYXNv bikpDQo+ID4+ICsJCXsNCj4gPj4gKwkJICBpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiArCQkgICAg Z2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gKwkJCQkiUHJvY2VzcyByZWNvcmQ6IGJyZWFr ICINCj4gPj4gKwkJCQkiYXQgJXMuXG4iLA0KPiA+PiArCQkJCXBhZGRyZXNzIChnZGJhcmNoLCB0 bXBfcGMpKTsNCj4gPj4NCj4gPj4gLQkJICAgICAgaWYgKHJlY29yZF9mdWxsX3N0b3BfcmVhc29u DQo+ID4+IC0JCQkgID09IFRBUkdFVF9TVE9QUEVEX0JZX1dBVENIUE9JTlQpDQo+ID4+IC0JCQl7 DQo+ID4+IC0JCQkgIGlmIChyZWNvcmRfZGVidWcpDQo+ID4+IC0JCQkgICAgZ2RiX3ByaW50ZiAo Z2RiX3N0ZGxvZywNCj4gPj4gLQkJCQkJIlByb2Nlc3MgcmVjb3JkOiBoaXQgaHcgIg0KPiA+PiAt CQkJCQkid2F0Y2hwb2ludC5cbiIpOw0KPiA+PiAtCQkJICBjb250aW51ZV9mbGFnID0gMDsNCj4g Pj4gLQkJCX0NCj4gPj4gLQkJICAgICAgLyogQ2hlY2sgdGFyZ2V0IHNpZ25hbCAqLw0KPiA+PiAt CQkgICAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdC0+dS5lbmQuc2lndmFsICE9IEdEQl9TSUdOQUxf MCkNCj4gPj4gLQkJCS8qIEZJWE1FOiBiZXR0ZXIgd2F5IHRvIGNoZWNrICovDQo+ID4+IC0JCQlj b250aW51ZV9mbGFnID0gMDsNCj4gPj4gLQkJICAgIH0NCj4gPj4gKwkJICBjb250aW51ZV9mbGFn ID0gMDsNCj4gPj4gICAJCX0NCj4gPj4NCj4gPj4gLQkgICAgICBpZiAoY29udGludWVfZmxhZykN Cj4gPj4gKwkgICAgICBpZiAocmVjb3JkX2Z1bGxfc3RvcF9yZWFzb24NCj4gPj4gKwkJICA9PSBU QVJHRVRfU1RPUFBFRF9CWV9XQVRDSFBPSU5UKQ0KPiA+PiAgIAkJew0KPiA+PiAtCQkgIGlmIChl eGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVWRVJTRSkNCj4gPj4gLQkJICAgIHsNCj4gPj4g LQkJICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QtPnByZXYpDQo+ID4+IC0JCQlyZWNvcmRfZnVs bF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+cHJldjsNCj4gPj4gLQkJICAgIH0NCj4gPj4gLQkJ ICBlbHNlDQo+ID4+IC0JCSAgICB7DQo+ID4+IC0JCSAgICAgIGlmIChyZWNvcmRfZnVsbF9saXN0 LT5uZXh0KQ0KPiA+PiAtCQkJcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xpc3QtPm5l eHQ7DQo+ID4+IC0JCSAgICB9DQo+ID4+ICsJCSAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gKwkJ ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+ICsJCQkJIlByb2Nlc3MgcmVjb3JkOiBo aXQgaHcgIg0KPiA+PiArCQkJCSJ3YXRjaHBvaW50LlxuIik7DQo+ID4+ICsJCSAgY29udGludWVf ZmxhZyA9IDA7DQo+ID4+ICAgCQl9DQo+ID4+ICsJICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3Rb cmVjb3JkX2Z1bGxfbmV4dF9pbnNuXS5zaWd2YWwuaGFzX3ZhbHVlICgpKQ0KPiA+PiArCQljb250 aW51ZV9mbGFnID0gMDsNCj4gPj4gKw0KPiA+PiArCSAgICAgIGlmIChleGVjdXRpb25fZGlyZWN0 aW9uID09IEVYRUNfUkVWRVJTRSkNCj4gPj4gKwkJcmVjb3JkX2Z1bGxfbmV4dF9pbnNuLS07DQo+ ID4+ICsJICAgICAgZWxzZQ0KPiA+PiArCQlyZWNvcmRfZnVsbF9uZXh0X2luc24rKzsNCj4gPj4g ICAJICAgIH0NCj4gPj4gICAJICB3aGlsZSAoY29udGludWVfZmxhZyk7DQo+ID4+DQo+ID4+ICsJ ICBpZiAocmVjb3JkX2Z1bGxfbmV4dF9pbnNuIDwgMCkNCj4gPj4gKwkgICAgew0KPiA+PiArCSAg ICAgIGdkYl9hc3NlcnQgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNFKTsNCj4g Pj4gKwkgICAgICByZWNvcmRfZnVsbF9uZXh0X2luc24gPSAwOw0KPiA+PiArCSAgICB9DQo+ID4+ ICsJICBlbHNlIGlmIChyZWNvcmRfZnVsbF9uZXh0X2luc24gPiByZWNvcmRfZnVsbF9saXN0LnNp emUgKCkpDQo+ID4+ICsJICAgIHsNCj4gPj4gKwkgICAgICBnZGJfYXNzZXJ0IChleGVjdXRpb25f ZGlyZWN0aW9uID09IEVYRUNfRk9SV0FSRCk7DQo+ID4+ICsJICAgICAgcmVjb3JkX2Z1bGxfbmV4 dF9pbnNuID0gcmVjb3JkX2Z1bGxfbGlzdC5zaXplICgpOw0KPiA+PiArCSAgICB9DQo+ID4+ICsJ ICAvKiBSZXNldCB0aGUgY3VycmVudCBpbnN0cnVjaXRvbiB0byBwb2ludCB0byB0aGUgb25lIHRv IGJlIHJlcGxheWVkDQo+ID4gTml0OiBpbnN0cnVjdGlvbg0KPiA+DQo+ID4+ICsJICAgICBtb3Zp bmcgZm9yd2FyZC4gICovDQo+ID4+ICsJICBlbHNlIGlmIChleGVjdXRpb25fZGlyZWN0aW9uID09 IEVYRUNfUkVWRVJTRSkNCj4gPj4gKwkgICAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuKys7DQo+ID4+ ICsNCj4gPj4gICAJcmVwbGF5X291dDoNCj4gPj4gICAJICBpZiAoc3RhdHVzLT5raW5kICgpID09 IFRBUkdFVF9XQUlUS0lORF9TVE9QUEVEKQ0KPiA+PiAgIAkgICAgew0KPiA+PiArCSAgICAgIGlu dCBpbnNuID0gKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19GT1JXQVJEKQ0KPiA+PiArCQkJ ID8gcmVjb3JkX2Z1bGxfbmV4dF9pbnNuIC0gMSA6IHJlY29yZF9mdWxsX25leHRfaW5zbjsNCj4g Pj4gICAJICAgICAgaWYgKHJlY29yZF9mdWxsX2dldF9zaWcpDQo+ID4+ICAgCQlzdGF0dXMtPnNl dF9zdG9wcGVkIChHREJfU0lHTkFMX0lOVCk7DQo+ID4+IC0JICAgICAgZWxzZSBpZiAocmVjb3Jk X2Z1bGxfbGlzdC0+dS5lbmQuc2lndmFsICE9IEdEQl9TSUdOQUxfMCkNCj4gPj4gLQkJLyogRklY TUU6IGJldHRlciB3YXkgdG8gY2hlY2sgKi8NCj4gPj4gLQkJc3RhdHVzLT5zZXRfc3RvcHBlZCAo cmVjb3JkX2Z1bGxfbGlzdC0+dS5lbmQuc2lndmFsKTsNCj4gPj4gKwkgICAgICBlbHNlIGlmIChy ZWNvcmRfZnVsbF9saXN0W2luc25dLnNpZ3ZhbC5oYXNfdmFsdWUgKCkpDQo+ID4+ICsJCXN0YXR1 cy0+c2V0X3N0b3BwZWQNCj4gPj4gKwkJICAocmVjb3JkX2Z1bGxfbGlzdFtpbnNuXS5zaWd2YWwu dmFsdWUgKCkpOw0KPiA+PiAgIAkgICAgICBlbHNlDQo+ID4+ICAgCQlzdGF0dXMtPnNldF9zdG9w cGVkIChHREJfU0lHTkFMX1RSQVApOw0KPiA+PiAgIAkgICAgfQ0KPiA+PiBAQCAtMTQ2NCwxMiAr MTM0Niw5IEBAIHJlY29yZF9mdWxsX3dhaXRfMSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywNCj4g Pj4gICAgICAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZXgpDQo+ID4+ICAgCXsNCj4g Pj4gICAJICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVSU0UpDQo+ID4+IC0J ICAgIHsNCj4gPj4gLQkgICAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCkNCj4gPj4gLQkJ cmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xpc3QtPm5leHQ7DQo+ID4+IC0JICAgIH0N Cj4gPj4gKwkgICAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuKys7DQo+ID4+ICAgCSAgZWxzZQ0KPiA+ PiAtCSAgICByZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+cHJldjsNCj4gPj4g KwkgICAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuLS07DQo+ID4+DQo+ID4+ICAgCSAgdGhyb3c7DQo+ ID4+ICAgCX0NCj4gPj4gQEAgLTE1NTcsOCArMTQzNiw3IEBAIHJlY29yZF9mdWxsX3JlZ2lzdGVy c19jaGFuZ2UgKHN0cnVjdCByZWdjYWNoZQ0KPiA+PiAqcmVnY2FjaGUsIGludCByZWdudW0pDQo+ ID4+ICAgICAvKiBDaGVjayByZWNvcmRfZnVsbF9pbnNuX251bS4gICovDQo+ID4+ICAgICByZWNv cmRfZnVsbF9jaGVja19pbnNuX251bSAoKTsNCj4gPj4NCj4gPj4gLSAgcmVjb3JkX2Z1bGxfYXJj aF9saXN0X2hlYWQgPSBOVUxMOw0KPiA+PiAtICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCA9 IE5VTEw7DQo+ID4+ICsgIHJlY29yZF9mdWxsX3Jlc2V0X2luY29tcGxldGUgKCk7DQo+ID4+DQo+ ID4+ICAgICBpZiAocmVnbnVtIDwgMCkNCj4gPj4gICAgICAgew0KPiA+PiBAQCAtMTU2OCw3ICsx NDQ2LDcgQEAgcmVjb3JkX2Z1bGxfcmVnaXN0ZXJzX2NoYW5nZSAoc3RydWN0IHJlZ2NhY2hlDQo+ ID4+ICpyZWdjYWNoZSwgaW50IHJlZ251bSkNCj4gPj4gICAJew0KPiA+PiAgIAkgIGlmIChyZWNv cmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAocmVnY2FjaGUsIGkpKQ0KPiA+PiAgIAkgICAgew0K PiA+PiAtCSAgICAgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZSAocmVjb3JkX2Z1bGxfYXJjaF9s aXN0X3RhaWwpOw0KPiA+PiArCSAgICAgIHJlY29yZF9mdWxsX3Jlc2V0X2luY29tcGxldGUgKCk7 DQo+ID4+ICAgCSAgICAgIGVycm9yIChfKCJQcm9jZXNzIHJlY29yZDogZmFpbGVkIHRvIHJlY29y ZCBleGVjdXRpb24gbG9nLiIpKTsNCj4gPj4gICAJICAgIH0NCj4gPj4gICAJfQ0KPiA+PiBAQCAt MTU3NywxOCArMTQ1NSwxMSBAQCByZWNvcmRfZnVsbF9yZWdpc3RlcnNfY2hhbmdlIChzdHJ1Y3QN Cj4gcmVnY2FjaGUNCj4gPj4gKnJlZ2NhY2hlLCBpbnQgcmVnbnVtKQ0KPiA+PiAgICAgICB7DQo+ ID4+ICAgICAgICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChyZWdjYWNoZSwg cmVnbnVtKSkNCj4gPj4gICAJew0KPiA+PiAtCSAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlIChy ZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCk7DQo+ID4+ICsJICByZWNvcmRfZnVsbF9yZXNldF9p bmNvbXBsZXRlICgpOw0KPiA+PiAgIAkgIGVycm9yIChfKCJQcm9jZXNzIHJlY29yZDogZmFpbGVk IHRvIHJlY29yZCBleGVjdXRpb24gbG9nLiIpKTsNCj4gPj4gICAJfQ0KPiA+PiAgICAgICB9DQo+ ID4+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gPj4gLSAgICB7 DQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2UgKHJlY29yZF9mdWxsX2FyY2hf bGlzdF90YWlsKTsNCj4gPj4gLSAgICAgIGVycm9yIChfKCJQcm9jZXNzIHJlY29yZDogZmFpbGVk IHRvIHJlY29yZCBleGVjdXRpb24gbG9nLiIpKTsNCj4gPj4gLSAgICB9DQo+ID4+IC0gIHJlY29y ZF9mdWxsX2xpc3QtPm5leHQgPSByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZDsNCj4gPj4gLSAg cmVjb3JkX2Z1bGxfYXJjaF9saXN0X2hlYWQtPnByZXYgPSByZWNvcmRfZnVsbF9saXN0Ow0KPiA+ PiAtICByZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWw7DQo+ID4+ ICsgIHJlY29yZF9mdWxsX3NhdmVfaW5zdHJ1Y3Rpb24gKCk7DQo+ID4+DQo+ID4+ICAgICBpZiAo cmVjb3JkX2Z1bGxfaW5zbl9udW0gPT0gcmVjb3JkX2Z1bGxfaW5zbl9tYXhfbnVtKQ0KPiA+PiAg ICAgICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZmlyc3QgKCk7DQo+ID4+IEBAIC0xNjA3LDcg KzE0NzgsNyBAQCByZWNvcmRfZnVsbF90YXJnZXQ6OnN0b3JlX3JlZ2lzdGVycyAoc3RydWN0DQo+ ID4+IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQ0KPiA+PiAgIAl7DQo+ID4+ICAgCSAg aW50IG47DQo+ID4+DQo+ID4+IC0JICAvKiBMZXQgdXNlciBjaG9vc2UgaWYgaGUgd2FudHMgdG8g d3JpdGUgcmVnaXN0ZXIgb3Igbm90LiAgKi8NCj4gPj4gKwkgIC8qIExldCB1c2VyIGNob29zZSBp ZiB0aGV5IHdhbnQgdG8gd3JpdGUgcmVnaXN0ZXIgb3Igbm90LiAgKi8NCj4gPj4gICAJICBpZiAo cmVnbm8gPCAwKQ0KPiA+PiAgIAkgICAgbiA9DQo+ID4+ICAgCSAgICAgIHF1ZXJ5IChfKCJCZWNh dXNlIEdEQiBpcyBpbiByZXBsYXkgbW9kZSwgY2hhbmdpbmcgdGhlICINCj4gPj4gQEAgLTE2NDIs NyArMTUxMyw3IEBAIHJlY29yZF9mdWxsX3RhcmdldDo6c3RvcmVfcmVnaXN0ZXJzIChzdHJ1Y3QN Cj4gPj4gcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pDQo+ID4+ICAgCSAgICB9DQo+ID4+ DQo+ID4+ICAgCSAgLyogRGVzdHJveSB0aGUgcmVjb3JkIGZyb20gaGVyZSBmb3J3YXJkLiAgKi8N Cj4gPj4gLQkgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9mb2xsb3dpbmcgKHJlY29yZF9mdWxs X2xpc3QpOw0KPiA+PiArCSAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZvbGxvd2luZyAocmVj b3JkX2Z1bGxfbmV4dF9pbnNuKTsNCj4gPj4gICAJfQ0KPiA+Pg0KPiA+PiAgICAgICAgIHJlY29y ZF9mdWxsX3JlZ2lzdGVyc19jaGFuZ2UgKHJlZ2NhY2hlLCByZWdubyk7DQo+ID4+IEBAIC0xNjc1 LDM2ICsxNTQ2LDI0IEBAIHJlY29yZF9mdWxsX3RhcmdldDo6eGZlcl9wYXJ0aWFsIChlbnVtDQo+ ID4+IHRhcmdldF9vYmplY3Qgb2JqZWN0LA0KPiA+PiAgIAkgICAgZXJyb3IgKF8oIlByb2Nlc3Mg cmVjb3JkIGNhbmNlbGVkIHRoZSBvcGVyYXRpb24uIikpOw0KPiA+Pg0KPiA+PiAgIAkgIC8qIERl c3Ryb3kgdGhlIHJlY29yZCBmcm9tIGhlcmUgZm9yd2FyZC4gICovDQo+ID4+IC0JICByZWNvcmRf ZnVsbF9saXN0X3JlbGVhc2VfZm9sbG93aW5nIChyZWNvcmRfZnVsbF9saXN0KTsNCj4gPj4gKwkg IHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9mb2xsb3dpbmcgKHJlY29yZF9mdWxsX25leHRfaW5z bik7DQo+ID4+ICAgCX0NCj4gPj4NCj4gPj4gICAgICAgICAvKiBDaGVjayByZWNvcmRfZnVsbF9p bnNuX251bSAqLw0KPiA+PiAgICAgICAgIHJlY29yZF9mdWxsX2NoZWNrX2luc25fbnVtICgpOw0K PiA+Pg0KPiA+PiAgICAgICAgIC8qIFJlY29yZCByZWdpc3RlcnMgY2hhbmdlIHRvIGxpc3QgYXMg YW4gaW5zdHJ1Y3Rpb24uICAqLw0KPiA+PiAtICAgICAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2hl YWQgPSBOVUxMOw0KPiA+PiAtICAgICAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwgPSBOVUxM Ow0KPiA+PiArICAgICAgcmVjb3JkX2Z1bGxfcmVzZXRfaW5jb21wbGV0ZSAoKTsNCj4gPj4gICAg ICAgICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9tZW0gKG9mZnNldCwgbGVuKSkNCj4g Pj4gICAJew0KPiA+PiAtCSAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlIChyZWNvcmRfZnVsbF9h cmNoX2xpc3RfdGFpbCk7DQo+ID4+ICsJICByZWNvcmRfZnVsbF9yZXNldF9pbmNvbXBsZXRlICgp Ow0KPiA+PiAgIAkgIGlmIChyZWNvcmRfZGVidWcpDQo+ID4+ICAgCSAgICBnZGJfcHJpbnRmIChn ZGJfc3RkbG9nLA0KPiA+PiAgIAkJCSJQcm9jZXNzIHJlY29yZDogZmFpbGVkIHRvIHJlY29yZCAi DQo+ID4+ICAgCQkJImV4ZWN1dGlvbiBsb2cuIik7DQo+ID4+ICAgCSAgcmV0dXJuIFRBUkdFVF9Y RkVSX0VfSU87DQo+ID4+ICAgCX0NCj4gPj4gLSAgICAgIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xp c3RfYWRkX2VuZCAoKSkNCj4gPj4gLQl7DQo+ID4+IC0JICByZWNvcmRfZnVsbF9saXN0X3JlbGVh c2UgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsKTsNCj4gPj4gLQkgIGlmIChyZWNvcmRfZGVi dWcpDQo+ID4+IC0JICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCQkiUHJvY2Vz cyByZWNvcmQ6IGZhaWxlZCB0byByZWNvcmQgIg0KPiA+PiAtCQkJImV4ZWN1dGlvbiBsb2cuIik7 DQo+ID4+IC0JICByZXR1cm4gVEFSR0VUX1hGRVJfRV9JTzsNCj4gPj4gLQl9DQo+ID4+IC0gICAg ICByZWNvcmRfZnVsbF9saXN0LT5uZXh0ID0gcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2hlYWQ7DQo+ ID4+IC0gICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZC0+cHJldiA9IHJlY29yZF9mdWxs X2xpc3Q7DQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfYXJjaF9s aXN0X3RhaWw7DQo+ID4+ICsgICAgICByZWNvcmRfZnVsbF9zYXZlX2luc3RydWN0aW9uICgpOw0K PiA+Pg0KPiA+PiAgICAgICAgIGlmIChyZWNvcmRfZnVsbF9pbnNuX251bSA9PSByZWNvcmRfZnVs bF9pbnNuX21heF9udW0pDQo+ID4+ICAgCXJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9maXJzdCAo KTsNCj4gPj4gQEAgLTE4NjYsOCArMTcyNSw3IEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0Ojpn ZXRfYm9va21hcmsgKGNvbnN0DQo+IGNoYXINCj4gPj4gKmFyZ3MsIGludCBmcm9tX3R0eSkNCj4g Pj4gICAgIGNoYXIgKnJldCA9IE5VTEw7DQo+ID4+DQo+ID4+ICAgICAvKiBSZXR1cm4gc3RyaW5n aWZpZWQgZm9ybSBvZiBpbnN0cnVjdGlvbiBjb3VudC4gICovDQo+ID4+IC0gIGlmIChyZWNvcmRf ZnVsbF9saXN0ICYmIHJlY29yZF9mdWxsX2xpc3QtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0K PiA+PiAtICAgIHJldCA9IHhzdHJkdXAgKHB1bG9uZ2VzdCAocmVjb3JkX2Z1bGxfbGlzdC0+dS5l bmQuaW5zbl9udW0pKTsNCj4gPj4gKyAgcmV0ID0geHN0cmR1cCAocHVsb25nZXN0DQo+IChyZWNv cmRfZnVsbF9saXN0W3JlY29yZF9mdWxsX25leHRfaW5zbl0uaW5zbl9udW0pKTsNCj4gPiBJIHRo aW5rIHdlIGNhbiBnZXQgaGVyZSB3aXRoIGFuIGVtcHR5IHJlY29yZF9mdWxsX2xpc3QgLSBpbiBj YXNlIHdlIGFyZSBpbg0KPiByZWNvcmRpbmcgbW9kZSwNCj4gPiBubyBpbnN0cnVjdGlvbnMgaGF2 ZSBiZWVuIGxvZ2dlZCBhbmQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQ6DQo+ID4NCj4gPiB+fn4N Cj4gPiAoZ2RiKSBpbmZvIHJlY29yZA0KPiA+IEFjdGl2ZSByZWNvcmQgdGFyZ2V0OiByZWNvcmQt ZnVsbA0KPiA+IFJlY29yZCBtb2RlOg0KPiA+IE5vIGluc3RydWN0aW9ucyBoYXZlIGJlZW4gbG9n Z2VkLg0KPiA+IE1heCBsb2dnZWQgaW5zdHJ1Y3Rpb25zIGlzIDIwMDAwMC4NCj4gPiAoZ2RiKSBi b29rbWFyaw0KPiA+DQo+ID4gVGhyZWFkIDEgImdkYi11cCIgaGl0IEJyZWFrcG9pbnQgMSwgcmVj b3JkX2Z1bGxfYmFzZV90YXJnZXQ6OmdldF9ib29rbWFyaw0KPiAodGhpcz0weDU1NTU1ODM5Mjkw MCA8cmVjb3JkX2Z1bGxfb3BzPiwgYXJncz0weDAsIGZyb21fdHR5PTEpIGF0DQo+IC90bXAvcmVj b3JkLWZ1bGwuYzoxNzc0DQo+ID4gMTc3NCAgICAgIGNoYXIgKnJldCA9IE5VTEw7DQo+ID4gKGdk YikgcCByZWNvcmRfZnVsbF9uZXh0X2luc24NCj4gPiAkMSA9IDANCj4gPiAoZ2RiKSBwIHJlY29y ZF9mdWxsX2xpc3QuZW1wdHkgKCkNCj4gPiAkMiA9IHRydWUNCj4gPiB+fn4NCg0KSSB3b25kZXIs IGRvIHdlIHNvbWV3aGVyZSBoYXZlIGEgdGVzdCBmb3IgYm9va21hcmtzPw0KSSBhbHNvIGZpbmQg YSBzcGVjaWZpYyBkZXNjcmlwdGlvbiBmb3IgdGhpcyBpbiB0aGUgbWFudWFsLi4uIHdoYXQncyB0 aGUgZGlmZmVyZW5jZSB0byBjaGVja3BvaW50cz8NCg0KSSBhbSBhIGJpdCBjb25mdXNlZCBhYm91 dCB0aGUgYm9va21hcmsgZmVhdHVyZSAob2YgY291cnNlLCB0aGlzIGlzIG5vdGhpbmcgdG8gZml4 IGZvciB0aGlzIHNlcmllcy4uLikuDQoNCj4gPj4gICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ID4+ ICAgICAgIHsNCj4gPj4gQEAgLTE5MjMsMzAgKzE3ODEsMjIgQEAgcmVjb3JkX2Z1bGxfYmFzZV90 YXJnZXQ6OnJlY29yZF9tZXRob2QNCj4gKHB0aWRfdA0KPiA+PiBwdGlkKQ0KPiA+PiAgIHZvaWQN Cj4gPj4gICByZWNvcmRfZnVsbF9iYXNlX3RhcmdldDo6aW5mb19yZWNvcmQgKCkNCj4gPj4gICB7 DQo+ID4+IC0gIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcDsNCj4gPj4gLQ0KPiA+PiAgICAg aWYgKFJFQ09SRF9GVUxMX0lTX1JFUExBWSkNCj4gPj4gICAgICAgZ2RiX3ByaW50ZiAoXygiUmVw bGF5IG1vZGU6XG4iKSk7DQo+ID4+ICAgICBlbHNlDQo+ID4+ICAgICAgIGdkYl9wcmludGYgKF8o IlJlY29yZCBtb2RlOlxuIikpOw0KPiA+Pg0KPiA+PiAtICAvKiBGaW5kIGVudHJ5IGZvciBmaXJz dCBhY3R1YWwgaW5zdHJ1Y3Rpb24gaW4gdGhlIGxvZy4gICovDQo+ID4+IC0gIGZvciAocCA9IHJl Y29yZF9mdWxsX2ZpcnN0Lm5leHQ7DQo+ID4+IC0gICAgICAgcCAhPSBOVUxMICYmIHAtPnR5cGUg IT0gcmVjb3JkX2Z1bGxfZW5kOw0KPiA+PiAtICAgICAgIHAgPSBwLT5uZXh0KQ0KPiA+PiAtICAg IDsNCj4gPj4gLQ0KPiA+PiAgICAgLyogRG8gd2UgaGF2ZSBhIGxvZyBhdCBhbGw/ICAqLw0KPiA+ PiAtICBpZiAocCAhPSBOVUxMICYmIHAtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0KPiA+PiAr ICBpZiAoIXJlY29yZF9mdWxsX2xpc3QuZW1wdHkgKCkpDQo+ID4+ICAgICAgIHsNCj4gPj4gICAg ICAgICAvKiBEaXNwbGF5IGluc3RydWN0aW9uIG51bWJlciBmb3IgZmlyc3QgaW5zdHJ1Y3Rpb24g aW4gdGhlIGxvZy4gICovDQo+ID4+IC0gICAgICBnZGJfcHJpbnRmIChfKCJMb3dlc3QgcmVjb3Jk ZWQgaW5zdHJ1Y3Rpb24gbnVtYmVyIGlzICVzLlxuIiksDQo+ID4+IC0JCSAgcHVsb25nZXN0IChw LT51LmVuZC5pbnNuX251bSkpOw0KPiA+PiArICAgICAgZ2RiX3ByaW50ZiAoXygiTG93ZXN0IHJl Y29yZGVkIGluc3RydWN0aW9uIG51bWJlciBpcyAldS5cbiIpLA0KPiA+PiArCQkgIHJlY29yZF9m dWxsX2xpc3RbMF0uaW5zbl9udW0pOw0KPiA+Pg0KPiA+PiAgICAgICAgIC8qIElmIGluIHJlcGxh eSBtb2RlLCBkaXNwbGF5IHdoZXJlIHdlIGFyZSBpbiB0aGUgbG9nLiAgKi8NCj4gPj4gICAgICAg ICBpZiAoUkVDT1JEX0ZVTExfSVNfUkVQTEFZKQ0KPiA+PiAtCWdkYl9wcmludGYgKF8oIkN1cnJl bnQgaW5zdHJ1Y3Rpb24gbnVtYmVyIGlzICVzLlxuIiksDQo+ID4+IC0JCSAgICBwdWxvbmdlc3Qg KHJlY29yZF9mdWxsX2xpc3QtPnUuZW5kLmluc25fbnVtKSk7DQo+ID4+ICsJZ2RiX3ByaW50ZiAo XygiQ3VycmVudCBpbnN0cnVjdGlvbiBudW1iZXIgaXMgJXUuXG4iKSwNCj4gPj4gKwkJICAgIHJl Y29yZF9mdWxsX2xpc3RbcmVjb3JkX2Z1bGxfbmV4dF9pbnNuXS5pbnNuX251bSk7DQo+ID4+DQo+ ID4+ICAgICAgICAgLyogRGlzcGxheSBpbnN0cnVjdGlvbiBudW1iZXIgZm9yIGxhc3QgaW5zdHJ1 Y3Rpb24gaW4gdGhlIGxvZy4gICovDQo+ID4+ICAgICAgICAgZ2RiX3ByaW50ZiAoXygiSGlnaGVz dCByZWNvcmRlZCBpbnN0cnVjdGlvbiBudW1iZXIgaXMgJXMuXG4iKSwNCj4gPj4gQEAgLTE5NzUs NyArMTgyNSw3IEBADQo+IHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzdXBwb3J0c19kZWxldGVf cmVjb3JkICgpDQo+ID4+ICAgdm9pZA0KPiA+PiAgIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0Ojpk ZWxldGVfcmVjb3JkICgpDQo+ID4+ICAgew0KPiA+PiAtICByZWNvcmRfZnVsbF9saXN0X3JlbGVh c2VfZm9sbG93aW5nIChyZWNvcmRfZnVsbF9saXN0KTsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfcmVz ZXRfaGlzdG9yeSAoKTsNCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgLyogVGhlICJyZWNvcmRfaXNf cmVwbGF5aW5nIiB0YXJnZXQgbWV0aG9kLiAgKi8NCj4gPj4gQEAgLTIwMDEsMjMgKzE4NTEsMjMg QEAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6OnJlY29yZF93aWxsX3JlcGxheQ0KPiA+PiAocHRp ZF90IHB0aWQsIGludCBkaXIpDQo+ID4+ICAgLyogR28gdG8gYSBzcGVjaWZpYyBlbnRyeS4gICov DQo+ID4+DQo+ID4+ICAgc3RhdGljIHZvaWQNCj4gPj4gLXJlY29yZF9mdWxsX2dvdG9fZW50cnkg KHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcCkNCj4gPj4gK3JlY29yZF9mdWxsX2dvdG9fZW50 cnkgKHNpemVfdCB0YXJnZXRfaW5zbikNCj4gPj4gICB7DQo+ID4+IC0gIGlmIChwID09IE5VTEwp DQo+ID4+ICsgIGlmICh0YXJnZXRfaW5zbiA+PSByZWNvcmRfZnVsbF9saXN0LnNpemUgKCkpDQo+ ID4+ICAgICAgIGVycm9yIChfKCJUYXJnZXQgaW5zbiBub3QgZm91bmQuIikpOw0KPiA+PiAtICBl bHNlIGlmIChwID09IHJlY29yZF9mdWxsX2xpc3QpDQo+ID4+ICsgIGVsc2UgaWYgKHRhcmdldF9p bnNuID09IHJlY29yZF9mdWxsX25leHRfaW5zbikNCj4gPj4gICAgICAgZXJyb3IgKF8oIkFscmVh ZHkgYXQgdGFyZ2V0IGluc24uIikpOw0KPiA+PiAtICBlbHNlIGlmIChwLT51LmVuZC5pbnNuX251 bSA+IHJlY29yZF9mdWxsX2xpc3QtPnUuZW5kLmluc25fbnVtKQ0KPiA+PiArICBlbHNlIGlmICh0 YXJnZXRfaW5zbiA+IHJlY29yZF9mdWxsX25leHRfaW5zbikNCj4gPj4gICAgICAgew0KPiA+PiAg ICAgICAgIGdkYl9wcmludGYgKF8oIkdvIGZvcndhcmQgdG8gaW5zbiBudW1iZXIgJXNcbiIpLA0K PiA+PiAtCQkgIHB1bG9uZ2VzdCAocC0+dS5lbmQuaW5zbl9udW0pKTsNCj4gPj4gLSAgICAgIHJl Y29yZF9mdWxsX2dvdG9faW5zbiAocCwgRVhFQ19GT1JXQVJEKTsNCj4gPj4gKwkJICBwdWxvbmdl c3QgKHJlY29yZF9mdWxsX2xpc3RbdGFyZ2V0X2luc25dLmluc25fbnVtKSk7DQo+ID4+ICsgICAg ICByZWNvcmRfZnVsbF9nb3RvX2luc24gKHRhcmdldF9pbnNuLCBFWEVDX0ZPUldBUkQpOw0KPiA+ PiAgICAgICB9DQo+ID4+ICAgICBlbHNlDQo+ID4+ICAgICAgIHsNCj4gPj4gICAgICAgICBnZGJf cHJpbnRmIChfKCJHbyBiYWNrd2FyZCB0byBpbnNuIG51bWJlciAlc1xuIiksDQo+ID4+IC0JCSAg cHVsb25nZXN0IChwLT51LmVuZC5pbnNuX251bSkpOw0KPiA+PiAtICAgICAgcmVjb3JkX2Z1bGxf Z290b19pbnNuIChwLCBFWEVDX1JFVkVSU0UpOw0KPiA+PiArCQkgIHB1bG9uZ2VzdCAodGFyZ2V0 X2luc24pKTsNCj4gPj4gKyAgICAgIHJlY29yZF9mdWxsX2dvdG9faW5zbiAodGFyZ2V0X2luc24s IEVYRUNfUkVWRVJTRSk7DQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gICAgIHJlZ2lzdGVyc19j aGFuZ2VkICgpOw0KPiA+PiBAQCAtMjAzMywxMyArMTg4Myw3IEBAIHJlY29yZF9mdWxsX2dvdG9f ZW50cnkgKHN0cnVjdA0KPiByZWNvcmRfZnVsbF9lbnRyeQ0KPiA+PiAqcCkNCj4gPj4gICB2b2lk DQo+ID4+ICAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6OmdvdG9fcmVjb3JkX2JlZ2luICgpDQo+ ID4+ICAgew0KPiA+PiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnAgPSBOVUxMOw0KPiA+ PiAtDQo+ID4+IC0gIGZvciAocCA9ICZyZWNvcmRfZnVsbF9maXJzdDsgcCAhPSBOVUxMOyBwID0g cC0+bmV4dCkNCj4gPj4gLSAgICBpZiAocC0+dHlwZSA9PSByZWNvcmRfZnVsbF9lbmQpDQo+ID4+ IC0gICAgICBicmVhazsNCj4gPj4gLQ0KPiA+PiAtICByZWNvcmRfZnVsbF9nb3RvX2VudHJ5IChw KTsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfZ290b19lbnRyeSAoMCk7DQo+ID4+ICAgfQ0KPiA+Pg0K PiA+PiAgIC8qIFRoZSAiZ290b19yZWNvcmRfZW5kIiB0YXJnZXQgbWV0aG9kLiAgKi8NCj4gPj4g QEAgLTIwNDcsMTUgKzE4OTEsNyBAQCByZWNvcmRfZnVsbF9iYXNlX3RhcmdldDo6Z290b19yZWNv cmRfYmVnaW4gKCkNCj4gPj4gICB2b2lkDQo+ID4+ICAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6 OmdvdG9fcmVjb3JkX2VuZCAoKQ0KPiA+PiAgIHsNCj4gPj4gLSAgc3RydWN0IHJlY29yZF9mdWxs X2VudHJ5ICpwID0gTlVMTDsNCj4gPj4gLQ0KPiA+PiAtICBmb3IgKHAgPSByZWNvcmRfZnVsbF9s aXN0OyBwLT5uZXh0ICE9IE5VTEw7IHAgPSBwLT5uZXh0KQ0KPiA+PiAtICAgIDsNCj4gPj4gLSAg Zm9yICg7IHAhPSBOVUxMOyBwID0gcC0+cHJldikNCj4gPj4gLSAgICBpZiAocC0+dHlwZSA9PSBy ZWNvcmRfZnVsbF9lbmQpDQo+ID4+IC0gICAgICBicmVhazsNCj4gPj4gLQ0KPiA+PiAtICByZWNv cmRfZnVsbF9nb3RvX2VudHJ5IChwKTsNCj4gPj4gKyAgcmVjb3JkX2Z1bGxfZ290b19lbnRyeSAo cmVjb3JkX2Z1bGxfbGlzdC5zaXplICgpIC0xKTsNCj4gPiBOaXQ6IHdoaXRlc3BhY2UgYmVmb3Jl IDEgPT4gInJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSAtIDEiDQo+ID4NCj4gPiBBbmQgaW4gY2Fz ZSB0aGUgcmVjb3JkX2Z1bGxfbGlzdCBpcyBlbXB0eSwgd29uJ3Qgd2UgY2FsbA0KPiA+IHJlY29y ZF9mdWxsX2dvdG9fZW50cnkgd2l0aCBhbiBpbnZhbGlkIHZhbHVlIGZvciB0YXJnZXRfaW5zbiA/ DQo+ID4NCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgLyogVGhlICJnb3RvX3JlY29yZCIgdGFyZ2V0 IG1ldGhvZC4gICovDQo+ID4+IEBAIC0yMDYzLDEzICsxODk5LDcgQEAgcmVjb3JkX2Z1bGxfYmFz ZV90YXJnZXQ6OmdvdG9fcmVjb3JkX2VuZCAoKQ0KPiA+PiAgIHZvaWQNCj4gPj4gICByZWNvcmRf ZnVsbF9iYXNlX3RhcmdldDo6Z290b19yZWNvcmQgKFVMT05HRVNUIHRhcmdldF9pbnNuKQ0KPiA+ PiAgIHsNCj4gPj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpwID0gTlVMTDsNCj4gPj4g LQ0KPiA+PiAtICBmb3IgKHAgPSAmcmVjb3JkX2Z1bGxfZmlyc3Q7IHAgIT0gTlVMTDsgcCA9IHAt Pm5leHQpDQo+ID4+IC0gICAgaWYgKHAtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kICYmIHAtPnUu ZW5kLmluc25fbnVtID09IHRhcmdldF9pbnNuKQ0KPiA+PiAtICAgICAgYnJlYWs7DQo+ID4+IC0N Cj4gPj4gLSAgcmVjb3JkX2Z1bGxfZ290b19lbnRyeSAocCk7DQo+ID4+ICsgIHJlY29yZF9mdWxs X2dvdG9fZW50cnkgKHRhcmdldF9pbnNuKTsNCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgLyogVGhl ICJyZWNvcmRfc3RvcF9yZXBsYXlpbmciIHRhcmdldCBtZXRob2QuICAqLw0KPiA+PiBAQCAtMjMz OSwxOSArMjE2OSw5NiBAQCBuZXRvcmRlcjMyICh1aW50MzJfdCBpbnB1dCkNCj4gPj4gICAgIHJl dHVybiByZXQ7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiArc3RhdGljIHZvaWQNCj4gPj4gK3JlY29y ZF9mdWxsX3JlYWRfZW50cnlfZnJvbV9iZmQgKGJmZCAqY2JmZCwgYXNlY3Rpb24gKm9zZWMsIGlu dA0KPiAqYmZkX29mZnNldCkNCj4gPj4gK3sNCj4gPj4gKyAgdWludDhfdCByZWN0eXBlOw0KPiA+ PiArICB1aW50MzJfdCByZWdudW0sIGxlbjsNCj4gPj4gKyAgdWludDY0X3QgYWRkcjsNCj4gPj4g KyAgcmVnY2FjaGUgKmNhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoaW5mZXJpb3JfdGhyZWFk ICgpKTsNCj4gPj4gKw0KPiA+PiArICBiZmRjb3JlX3JlYWQgKGNiZmQsIG9zZWMsICZyZWN0eXBl LCBzaXplb2YgKHJlY3R5cGUpLCBiZmRfb2Zmc2V0KTsNCj4gPj4gKyAgc3dpdGNoIChyZWN0eXBl KQ0KPiA+PiArICAgIHsNCj4gPj4gKyAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzogLyogcmVnICov DQo+ID4+ICsgICAgICB7DQo+ID4+ICsJLyogR2V0IHJlZ2lzdGVyIG51bWJlciB0byByZWdudW0u ICAqLw0KPiA+PiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChy ZWdudW0pLCBiZmRfb2Zmc2V0KTsNCj4gPj4gKwlyZWdudW0gPSBuZXRvcmRlcjMyIChyZWdudW0p Ow0KPiA+PiArDQo+ID4+ICsJcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiA+PiArDQo+ID4+ICsJ cmVjID0gcmVjb3JkX2Z1bGxfcmVnX2luaXQgKGNhY2hlLCByZWdudW0pOw0KPiA+PiArDQo+ID4+ ICsJLyogR2V0IHZhbC4gICovDQo+ID4+ICsJYmZkY29yZV9yZWFkIChjYmZkLCBvc2VjLCByZWNv cmRfZnVsbF9nZXRfbG9jICgmcmVjKSwNCj4gPj4gKwkJICAgICAgcmVjLnUucmVnLmxlbiwgYmZk X29mZnNldCk7DQo+ID4+ICsNCj4gPj4gKwlpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiArCSAgZ2Ri X3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gKwkJICAgICAgIiAgUmVhZGluZyByZWdpc3RlciAl ZCAoMSAiDQo+ID4+ICsJCSAgICAgICJwbHVzICVsdSBwbHVzICVkIGJ5dGVzKVxuIiwNCj4gPj4g KwkJICAgICAgcmVjLnUucmVnLm51bSwNCj4gPj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNp emVvZiAocmVnbnVtKSwNCj4gPj4gKwkJICAgICAgcmVjLnUucmVnLmxlbik7DQo+ID4+ICsNCj4g Pj4gKwlyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiA+PiArCWJyZWFrOw0KPiA+ PiArICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgY2FzZSByZWNvcmRfZnVsbF9tZW06IC8qIG1l bSAqLw0KPiA+PiArICAgICAgew0KPiA+PiArCS8qIEdldCBsZW4uICAqLw0KPiA+PiArCWJmZGNv cmVfcmVhZCAoY2JmZCwgb3NlYywgJmxlbiwgc2l6ZW9mIChsZW4pLCBiZmRfb2Zmc2V0KTsNCj4g Pj4gKwlsZW4gPSBuZXRvcmRlcjMyIChsZW4pOw0KPiA+PiArDQo+ID4+ICsJLyogR2V0IGFkZHIu ICAqLw0KPiA+PiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgJmFkZHIsIHNpemVvZiAoYWRk ciksDQo+ID4+ICsJCSAgICAgIGJmZF9vZmZzZXQpOw0KPiA+PiArCWFkZHIgPSBuZXRvcmRlcjY0 IChhZGRyKTsNCj4gPj4gKw0KPiA+PiArCXJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gPj4gKwly ZWMgPSByZWNvcmRfZnVsbF9tZW1faW5pdCAoYWRkciwgbGVuKTsNCj4gPj4gKw0KPiA+PiArCS8q IEdldCB2YWwuICAqLw0KPiA+PiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgcmVjb3JkX2Z1 bGxfZ2V0X2xvYyAoJnJlYyksIGxlbiwNCj4gPj4gKwkJICAgICAgYmZkX29mZnNldCk7DQo+ID4+ ICsNCj4gPj4gKwlpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiArCSAgZ2RiX3ByaW50ZiAoZ2RiX3N0 ZGxvZywNCj4gPj4gKwkJICAgICAgIiAgUmVhZGluZyBtZW1vcnkgJXMgKDEgcGx1cyAiDQo+ID4+ ICsJCSAgICAgICIlbHUgcGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ID4+ICsJCSAgICAg IHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLA0KPiA+PiArCQkJCXJlYy51Lm1lbS5hZGRy KSwNCj4gPj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAoYWRkciksDQo+ID4+ICsJ CSAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGxlbiksDQo+ID4+ICsJCSAgICAgIGxlbik7 DQo+ID4+ICsNCj4gPj4gKwlyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiA+PiAr CWJyZWFrOw0KPiA+PiArICAgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgZGVmYXVsdDoNCj4gPj4g KyAgICAgIGVycm9yIChfKCJCYWQgZW50cnkgdHlwZSAlZCwgb2Zmc2V0ICVkIG9mICVsdSBpbiBj b3JlIGZpbGUgJXBzLiIpLA0KPiA+PiArCSAgICAgcmVjdHlwZSwgKmJmZF9vZmZzZXQsIGJmZF9z ZWN0aW9uX3NpemUgKG9zZWMpLA0KPiA+PiArCSAgICAgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1l X3N0eWxlLnN0eWxlICgpLA0KPiA+PiArCQkJICAgIGJmZF9nZXRfZmlsZW5hbWUgKGNiZmQpKSk7 DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKyAgICB9DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4g ICAvKiBSZXN0b3JlIHRoZSBleGVjdXRpb24gbG9nIGZyb20gY29yZSBmaWxlIENCRkQuICAqLw0K PiA+Pg0KPiA+PiAgIHN0YXRpYyB2b2lkDQo+ID4+ICAgcmVjb3JkX2Z1bGxfcmVzdG9yZSAoc3Ry dWN0IGJmZCAmY2JmZCkNCj4gPj4gICB7DQo+ID4+ICAgICB1aW50MzJfdCBtYWdpYzsNCj4gPj4g LSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWM7DQo+ID4+ICAgICBhc2VjdGlvbiAqb3Nl YzsNCj4gPj4gICAgIHVpbnQzMl90IG9zZWNfc2l6ZTsNCj4gPj4gICAgIGludCBiZmRfb2Zmc2V0 ID0gMDsNCj4gPj4NCj4gPj4gICAgIC8qICJyZWNvcmRfZnVsbF9yZXN0b3JlIiBjYW4gb25seSBi ZSBjYWxsZWQgd2hlbiByZWNvcmQgbGlzdCBpcyBlbXB0eS4gICovDQo+ID4+IC0gIGdkYl9hc3Nl cnQgKHJlY29yZF9mdWxsX2ZpcnN0Lm5leHQgPT0gTlVMTCk7DQo+ID4+ICsgIGdkYl9hc3NlcnQg KHJlY29yZF9mdWxsX2xpc3QuZW1wdHkgKCkpOw0KPiA+Pg0KPiA+PiAgICAgaWYgKHJlY29yZF9k ZWJ1ZykNCj4gPj4gICAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgIlJlc3RvcmluZyByZWNv cmRpbmcgZnJvbSBjb3JlIGZpbGUuXG4iKTsNCj4gPj4gQEAgLTIzNzksMTI0ICsyMjg2LDQ3IEBA IHJlY29yZF9mdWxsX3Jlc3RvcmUgKHN0cnVjdCBiZmQgJmNiZmQpDQo+ID4+ICAgCQkiUkVDT1JE X0ZVTExfRklMRV9NQUdJQyAoMHglcylcbiIsDQo+ID4+ICAgCQlwaGV4X256IChuZXRvcmRlcjMy IChtYWdpYyksIDQpKTsNCj4gPj4NCj4gPj4gLSAgLyogUmVzdG9yZSB0aGUgZW50cmllcyBpbiBy ZWNmZCBpbnRvIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9oZWFkIGFuZA0KPiA+PiAtICAgICByZWNv cmRfZnVsbF9hcmNoX2xpc3RfdGFpbC4gICovDQo+ID4+IC0gIHJlY29yZF9mdWxsX2FyY2hfbGlz dF9oZWFkID0gTlVMTDsNCj4gPj4gLSAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwgPSBOVUxM Ow0KPiA+PiAgICAgcmVjb3JkX2Z1bGxfaW5zbl9udW0gPSAwOw0KPiA+Pg0KPiA+PiAgICAgdHJ5 DQo+ID4+ICAgICAgIHsNCj4gPj4gLSAgICAgIHJlZ2NhY2hlICpyZWdjYWNoZSA9IGdldF90aHJl YWRfcmVnY2FjaGUgKGluZmVyaW9yX3RocmVhZCAoKSk7DQo+ID4+IC0NCj4gPj4gLSAgICAgIHdo aWxlICgxKQ0KPiA+PiArICAgICAgd2hpbGUgKGJmZF9vZmZzZXQgPCBvc2VjX3NpemUpDQo+ID4+ ICAgCXsNCj4gPj4gLQkgIHVpbnQ4X3QgcmVjdHlwZTsNCj4gPj4gLQkgIHVpbnQzMl90IHJlZ251 bSwgbGVuLCBzaWduYWwsIGNvdW50Ow0KPiA+PiAtCSAgdWludDY0X3QgYWRkcjsNCj4gPj4gLQ0K PiA+PiAtCSAgLyogV2UgYXJlIGZpbmlzaGVkIHdoZW4gb2Zmc2V0IHJlYWNoZXMgb3NlY19zaXpl LiAgKi8NCj4gPj4gLQkgIGlmIChiZmRfb2Zmc2V0ID49IG9zZWNfc2l6ZSkNCj4gPj4gLQkgICAg YnJlYWs7DQo+ID4+IC0JICBiZmRjb3JlX3JlYWQgKCZjYmZkLCBvc2VjLCAmcmVjdHlwZSwgc2l6 ZW9mIChyZWN0eXBlKSwgJmJmZF9vZmZzZXQpOw0KPiA+PiAtDQo+ID4+IC0JICBzd2l0Y2ggKHJl Y3R5cGUpDQo+ID4+ICsJICByZWNvcmRfZnVsbF9yZXNldF9pbmNvbXBsZXRlICgpOw0KPiA+PiAr CSAgdWludDMyX3QgZWZmX2NvdW50ID0gMDsNCj4gPj4gKwkgIHVpbnQ4X3Qgc2lndmFsOw0KPiA+ PiArCSAgdWludDMyX3QgaW5zbl9udW07DQo+ID4+ICsNCj4gPj4gKwkgIC8qIEZpcnN0IHJlYWQg dGhlIGdlbmVyaWMgaW5mb3JtYXRpb24gZm9yIGFuIGluc3RydWN0aW9uLiAgKi8NCj4gPj4gKwkg IGJmZGNvcmVfcmVhZCAoJmNiZmQsIG9zZWMsICZzaWd2YWwsIHNpemVvZiAodWludDhfdCksICZi ZmRfb2Zmc2V0KTsNCj4gPj4gKwkgIGJmZGNvcmVfcmVhZCAoJmNiZmQsIG9zZWMsICZlZmZfY291 bnQsIHNpemVvZiAodWludDMyX3QpLA0KPiA+PiArCQkJJmJmZF9vZmZzZXQpOw0KPiA+PiArCSAg YmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgJmluc25fbnVtLCBzaXplb2YgKHVpbnQzMl90KSwN Cj4gPj4gKwkJCSZiZmRfb2Zmc2V0KTsNCj4gPj4gKw0KPiA+PiArCSAgcmVjb3JkX2Z1bGxfaW5j b21wbGV0ZV9pbnN0cnVjdGlvbi5pbnNuX251bSA9IG5ldG9yZGVyMzINCj4gPj4gKGluc25fbnVt KTsNCj4gPj4gKwkgIGlmIChzaWd2YWwgIT0gR0RCX1NJR05BTF8wKQ0KPiA+PiArCSAgICByZWNv cmRfZnVsbF9pbmNvbXBsZXRlX2luc3RydWN0aW9uLnNpZ3ZhbCA9IChnZGJfc2lnbmFsKSBzaWd2 YWw7DQo+ID4+ICsNCj4gPj4gKwkgIGVmZl9jb3VudCA9IG5ldG9yZGVyMzIgKGVmZl9jb3VudCk7 DQo+ID4+ICsNCj4gPj4gKwkgIC8qIFRoaXMgZGVhbHMgd2l0aCBhbGwgdGhlIHNpZGUgZWZmZWN0 cy4gICovDQo+ID4+ICsJIHdoaWxlIChlZmZfY291bnQgPiAwKQ0KPiA+PiAgIAkgICAgew0KPiA+ IFRoZXJlIGlzIG9uZSBzcGFjZSB0b28gbXVjaCBpbmRlbnQuDQo+ID4NCj4gPj4gLQkgICAgY2Fz ZSByZWNvcmRfZnVsbF9yZWc6IC8qIHJlZyAqLw0KPiA+PiAtCSAgICAgIC8qIEdldCByZWdpc3Rl ciBudW1iZXIgdG8gcmVnbnVtLiAgKi8NCj4gPj4gLQkgICAgICBiZmRjb3JlX3JlYWQgKCZjYmZk LCBvc2VjLCAmcmVnbnVtLCBzaXplb2YgKHJlZ251bSksDQo+ID4+IC0JCQkgICAgJmJmZF9vZmZz ZXQpOw0KPiA+PiAtCSAgICAgIHJlZ251bSA9IG5ldG9yZGVyMzIgKHJlZ251bSk7DQo+ID4+IC0N Cj4gPj4gLQkgICAgICByZWMgPSByZWNvcmRfZnVsbF9yZWdfYWxsb2MgKHJlZ2NhY2hlLCByZWdu dW0pOw0KPiA+PiAtDQo+ID4+IC0JICAgICAgLyogR2V0IHZhbC4gICovDQo+ID4+IC0JICAgICAg YmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAocmVjKSwNCj4g Pj4gLQkJCSAgICByZWMtPnUucmVnLmxlbiwgJmJmZF9vZmZzZXQpOw0KPiA+PiAtDQo+ID4+IC0J ICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gLQkJZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywN Cj4gPj4gLQkJCSAgICAiICBSZWFkaW5nIHJlZ2lzdGVyICVkICgxICINCj4gPj4gLQkJCSAgICAi cGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ID4+IC0JCQkgICAgcmVjLT51LnJlZy5udW0s DQo+ID4+IC0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAocmVnbnVtKSwNCj4gPj4gLQkJ CSAgICByZWMtPnUucmVnLmxlbik7DQo+ID4+IC0JICAgICAgYnJlYWs7DQo+ID4+ICsJICAgICAg ZWZmX2NvdW50LS07DQo+ID4+DQo+ID4+IC0JICAgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOiAvKiBt ZW0gKi8NCj4gPj4gLQkgICAgICAvKiBHZXQgbGVuLiAgKi8NCj4gPj4gLQkgICAgICBiZmRjb3Jl X3JlYWQgKCZjYmZkLCBvc2VjLCAmbGVuLCBzaXplb2YgKGxlbiksICZiZmRfb2Zmc2V0KTsNCj4g Pj4gLQkgICAgICBsZW4gPSBuZXRvcmRlcjMyIChsZW4pOw0KPiA+PiAtDQo+ID4+IC0JICAgICAg LyogR2V0IGFkZHIuICAqLw0KPiA+PiAtCSAgICAgIGJmZGNvcmVfcmVhZCAoJmNiZmQsIG9zZWMs ICZhZGRyLCBzaXplb2YgKGFkZHIpLCAmYmZkX29mZnNldCk7DQo+ID4+IC0JICAgICAgYWRkciA9 IG5ldG9yZGVyNjQgKGFkZHIpOw0KPiA+PiAtDQo+ID4+IC0JICAgICAgcmVjID0gcmVjb3JkX2Z1 bGxfbWVtX2FsbG9jIChhZGRyLCBsZW4pOw0KPiA+PiAtDQo+ID4+IC0JICAgICAgLyogR2V0IHZh bC4gICovDQo+ID4+IC0JICAgICAgYmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgcmVjb3JkX2Z1 bGxfZ2V0X2xvYyAocmVjKSwNCj4gPj4gLQkJCSAgICByZWMtPnUubWVtLmxlbiwgJmJmZF9vZmZz ZXQpOw0KPiA+PiAtDQo+ID4+IC0JICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gLQkJZ2Ri X3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gLQkJCSAgICAiICBSZWFkaW5nIG1lbW9yeSAlcyAo MSBwbHVzICINCj4gPj4gLQkJCSAgICAiJWx1IHBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0K PiA+PiAtCQkJICAgIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLA0KPiA+PiAtCQkJCSAg ICAgIHJlYy0+dS5tZW0uYWRkciksDQo+ID4+IC0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVv ZiAoYWRkciksDQo+ID4+IC0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4g Pj4gLQkJCSAgICByZWMtPnUubWVtLmxlbik7DQo+ID4+IC0JICAgICAgYnJlYWs7DQo+ID4+IC0N Cj4gPj4gLQkgICAgY2FzZSByZWNvcmRfZnVsbF9lbmQ6IC8qIGVuZCAqLw0KPiA+PiAtCSAgICAg IHJlYyA9IHJlY29yZF9mdWxsX2VuZF9hbGxvYyAoKTsNCj4gPj4gLQkgICAgICByZWNvcmRfZnVs bF9pbnNuX251bSArKzsNCj4gPj4gLQ0KPiA+PiAtCSAgICAgIC8qIEdldCBzaWduYWwgdmFsdWUu ICAqLw0KPiA+PiAtCSAgICAgIGJmZGNvcmVfcmVhZCAoJmNiZmQsIG9zZWMsICZzaWduYWwsIHNp emVvZiAoc2lnbmFsKSwNCj4gPj4gLQkJCSAgICAmYmZkX29mZnNldCk7DQo+ID4+IC0JICAgICAg c2lnbmFsID0gbmV0b3JkZXIzMiAoc2lnbmFsKTsNCj4gPj4gLQkgICAgICByZWMtPnUuZW5kLnNp Z3ZhbCA9IChlbnVtIGdkYl9zaWduYWwpIHNpZ25hbDsNCj4gPj4gLQ0KPiA+PiAtCSAgICAgIC8q IEdldCBpbnNuIGNvdW50LiAgKi8NCj4gPj4gLQkgICAgICBiZmRjb3JlX3JlYWQgKCZjYmZkLCBv c2VjLCAmY291bnQsIHNpemVvZiAoY291bnQpLCAmYmZkX29mZnNldCk7DQo+ID4+IC0JICAgICAg Y291bnQgPSBuZXRvcmRlcjMyIChjb3VudCk7DQo+ID4+IC0JICAgICAgcmVjLT51LmVuZC5pbnNu X251bSA9IGNvdW50Ow0KPiA+PiAtCSAgICAgIHJlY29yZF9mdWxsX2luc25fY291bnQgPSBjb3Vu dCArIDE7DQo+ID4+IC0JICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gLQkJZ2RiX3ByaW50 ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gLQkJCSAgICAiICBSZWFkaW5nIHJlY29yZF9mdWxsX2VuZCAo MSArICINCj4gPj4gLQkJCSAgICAiJWx1ICsgJWx1IGJ5dGVzKSwgb2Zmc2V0ID09ICVzXG4iLA0K PiA+PiAtCQkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKHNpZ25hbCksDQo+ID4+IC0JCQkg ICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAoY291bnQpLA0KPiA+PiAtCQkJICAgIHBhZGRyZXNz IChnZXRfY3VycmVudF9hcmNoICgpLA0KPiA+PiAtCQkJCSAgICAgIGJmZF9vZmZzZXQpKTsNCj4g Pj4gLQkgICAgICBicmVhazsNCj4gPj4gLQ0KPiA+PiAtCSAgICBkZWZhdWx0Og0KPiA+PiAtCSAg ICAgIGVycm9yIChfKCJCYWQgZW50cnkgdHlwZSBpbiBjb3JlIGZpbGUgJXBzLiIpLA0KPiA+PiAt CQkgICAgIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwNCj4gPj4gLQkJ CQkgICAgYmZkX2dldF9maWxlbmFtZSAoJmNiZmQpKSk7DQo+ID4+IC0JICAgICAgYnJlYWs7DQo+ ID4+ICsJICAgICAgcmVjb3JkX2Z1bGxfcmVhZF9lbnRyeV9mcm9tX2JmZCAoJmNiZmQsIG9zZWMs ICZiZmRfb2Zmc2V0KTsNCj4gPj4gICAJICAgIH0NCj4gPj4NCj4gPj4gLQkgIC8qIEFkZCByZWMg dG8gcmVjb3JkIGFyY2ggbGlzdC4gICovDQo+ID4+IC0JICByZWNvcmRfZnVsbF9hcmNoX2xpc3Rf YWRkIChyZWMpOw0KPiA+PiArCSAgcmVjb3JkX2Z1bGxfc2F2ZV9pbnN0cnVjdGlvbiAoKTsNCj4g Pj4gICAJfQ0KPiA+PiAgICAgICB9DQo+ID4+ICAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlv biAmZXgpDQo+ID4+ICAgICAgIHsNCj4gPj4gLSAgICAgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFz ZSAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwpOw0KPiA+PiArICAgICAgcmVjb3JkX2Z1bGxf cmVzZXRfaW5jb21wbGV0ZSAoKTsNCj4gPj4gICAgICAgICB0aHJvdzsNCj4gPj4gICAgICAgfQ0K PiA+Pg0KPiA+PiAtICAvKiBBZGQgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2hlYWQgdG8gdGhlIGVu ZCBvZiByZWNvcmQgbGlzdC4gICovDQo+ID4+IC0gIHJlY29yZF9mdWxsX2ZpcnN0Lm5leHQgPSBy ZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZDsNCj4gPj4gLSAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0 X2hlYWQtPnByZXYgPSAmcmVjb3JkX2Z1bGxfZmlyc3Q7DQo+ID4+IC0gIHJlY29yZF9mdWxsX2Fy Y2hfbGlzdF90YWlsLT5uZXh0ID0gTlVMTDsNCj4gPj4gLSAgcmVjb3JkX2Z1bGxfbGlzdCA9ICZy ZWNvcmRfZnVsbF9maXJzdDsNCj4gPj4gLQ0KPiA+PiAgICAgLyogVXBkYXRlIHJlY29yZF9mdWxs X2luc25fbWF4X251bS4gICovDQo+ID4+ICAgICBpZiAocmVjb3JkX2Z1bGxfaW5zbl9udW0gPiBy ZWNvcmRfZnVsbF9pbnNuX21heF9udW0pDQo+ID4+ICAgICAgIHsNCj4gPj4gQEAgLTI1MDUsNiAr MjMzNSwxMCBAQCByZWNvcmRfZnVsbF9yZXN0b3JlIChzdHJ1Y3QgYmZkICZjYmZkKQ0KPiA+PiAg IAkgICAgICAgcmVjb3JkX2Z1bGxfaW5zbl9tYXhfbnVtKTsNCj4gPj4gICAgICAgfQ0KPiA+Pg0K PiA+PiArICAvKiBXaGVuIGxvYWRpbmcgYSByZWNvcmRpbmcsIHdlJ2xsIGFsd2F5cyBzdGFydCBh dCB0aGUgb2xkZXN0IHBvc3NpYmxlDQo+ID4+ICsgICAgIGluc3RydWN0aW9uLCBubyBtYXR0ZXIg d2hlcmUgdGhlIG9yaWdpbmFsIHJlY29yZGluZyB3YXMgc3RvcHBlZC4gICovDQo+ID4+ICsgIHJl Y29yZF9mdWxsX25leHRfaW5zbiA9IDA7DQo+ID4+ICsNCj4gPj4gICAgIC8qIFN1Y2NlZWRlZC4g ICovDQo+ID4+ICAgICBnZGJfcHJpbnRmIChfKCJSZXN0b3JlZCByZWNvcmRzIGZyb20gY29yZSBm aWxlICVzLlxuIiksDQo+ID4+ICAgCSAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKCZjYmZkKSk7DQo+ ID4+IEBAIC0yNTM4LDEzICsyMzcyLDczIEBAIGNtZF9yZWNvcmRfZnVsbF9yZXN0b3JlIChjb25z dCBjaGFyICphcmdzLA0KPiBpbnQNCj4gPj4gZnJvbV90dHkpDQo+ID4+ICAgICByZWNvcmRfZnVs bF9vcGVuIChudWxscHRyLCBmcm9tX3R0eSk7DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiArc3RhdGlj IHZvaWQNCj4gPj4gK3JlY29yZF9mdWxsX3dyaXRlX2VudHJ5X3RvX2JmZCAocmVjb3JkX2Z1bGxf ZW50cnkgJmVudHJ5LA0KPiA+PiArCQkJCWdkYl9iZmRfcmVmX3B0ciBvYmZkLA0KPiA+PiArCQkJ CWFzZWN0aW9uICpvc2VjLCBpbnQgKmJmZF9vZmZzZXQsDQo+ID4+ICsJCQkJc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpDQo+ID4+ICt7DQo+ID4+ICsgIC8qIFNhdmUgZW50cnkuICAqLw0KPiA+PiAr ICB1aW50OF90IHR5cGU7DQo+ID4+ICsgIHVpbnQzMl90IHJlZ251bSwgbGVuOw0KPiA+PiArICB1 aW50NjRfdCBhZGRyOw0KPiA+PiArDQo+ID4+ICsgIHR5cGUgPSBlbnRyeS50eXBlOw0KPiA+PiAr ICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnR5cGUsIHNpemVvZiAodHlwZSks IGJmZF9vZmZzZXQpOw0KPiA+PiArDQo+ID4+ICsgIHN3aXRjaCAoZW50cnkudHlwZSkNCj4gPj4g KyAgICB7DQo+ID4+ICsgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6IC8qIHJlZyAqLw0KPiA+PiAr ICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gPj4gKwlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0K PiA+PiArCQkgICAgIiAgV3JpdGluZyByZWdpc3RlciAlZCAoMSAiDQo+ID4+ICsJCSAgICAicGx1 cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ID4+ICsJCSAgICBlbnRyeS51LnJlZy5udW0sDQo+ ID4+ICsJCSAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChyZWdudW0pLA0KPiA+PiArCQkgICAg ZW50cnkudS5yZWcubGVuKTsNCj4gPj4gKw0KPiA+PiArICAgICAgLyogV3JpdGUgcmVnbnVtLiAg Ki8NCj4gPj4gKyAgICAgIHJlZ251bSA9IG5ldG9yZGVyMzIgKGVudHJ5LnUucmVnLm51bSk7DQo+ ID4+ICsgICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnJlZ251bSwgc2l6 ZW9mIChyZWdudW0pLA0KPiBiZmRfb2Zmc2V0KTsNCj4gPj4gKw0KPiA+PiArICAgICAgLyogV3Jp dGUgcmVndmFsLiAgKi8NCj4gPj4gKyAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBv c2VjLCByZWNvcmRfZnVsbF9nZXRfbG9jICgmZW50cnkpLA0KPiA+PiArCQkgICAgIGVudHJ5LnUu cmVnLmxlbiwgYmZkX29mZnNldCk7DQo+ID4+ICsgICAgICBicmVhazsNCj4gPj4gKw0KPiA+PiAr ICAgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOiAvKiBtZW0gKi8NCj4gPj4gKyAgICAgIGlmIChyZWNv cmRfZGVidWcpDQo+ID4+ICsJZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gPj4gKwkJICAgICIg IFdyaXRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiA+PiArCQkgICAgIiVsdSBwbHVzICVsdSBw bHVzICVkIGJ5dGVzKVxuIiwNCj4gPj4gKwkJICAgIHBhZGRyZXNzIChnZGJhcmNoLA0KPiA+PiAr CQkJICAgICAgZW50cnkudS5tZW0uYWRkciksDQo+ID4+ICsJCSAgICAodW5zaWduZWQgbG9uZykg c2l6ZW9mIChhZGRyKSwNCj4gPj4gKwkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGxlbiks DQo+ID4+ICsJCSAgICBlbnRyeS51Lm1lbS5sZW4pOw0KPiA+PiArDQo+ID4+ICsgICAgICAvKiBX cml0ZSBtZW1sZW4uICAqLw0KPiA+PiArICAgICAgbGVuID0gbmV0b3JkZXIzMiAoZW50cnkudS5t ZW0ubGVuKTsNCj4gPj4gKyAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAm bGVuLCBzaXplb2YgKGxlbiksIGJmZF9vZmZzZXQpOw0KPiA+PiArDQo+ID4+ICsgICAgICAvKiBX cml0ZSBtZW1hZGRyLiAgKi8NCj4gPj4gKyAgICAgIGFkZHIgPSBuZXRvcmRlcjY0IChlbnRyeS51 Lm1lbS5hZGRyKTsNCj4gPj4gKyAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2Vj LCAmYWRkciwgc2l6ZW9mIChhZGRyKSwgYmZkX29mZnNldCk7DQo+ID4+ICsNCj4gPj4gKyAgICAg IC8qIFdyaXRlIG1lbXZhbC4gICovDQo+ID4+ICsgICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdl dCAoKSwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJmVudHJ5KSwNCj4gPj4gKwkJICAgICBl bnRyeS51Lm1lbS5sZW4sIGJmZF9vZmZzZXQpOw0KPiA+PiArICAgICAgYnJlYWs7DQo+ID4+ICsg ICAgfQ0KPiA+PiArDQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gICAvKiBTYXZlIHRoZSBleGVjdXRp b24gbG9nIHRvIGEgZmlsZS4gIFdlIHVzZSBhIG1vZGlmaWVkIGVsZiBjb3JlZmlsZQ0KPiA+PiAg ICAgIGZvcm1hdCwgd2l0aCBhbiBleHRyYSBzZWN0aW9uIGZvciBvdXIgZGF0YS4gICovDQo+ID4+ DQo+ID4+ICAgdm9pZA0KPiA+PiAgIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZlX3JlY29y ZCAoY29uc3QgY2hhciAqcmVjZmlsZW5hbWUpDQo+ID4+ICAgew0KPiA+PiAtICBzdHJ1Y3QgcmVj b3JkX2Z1bGxfZW50cnkgKmN1cl9yZWNvcmRfZnVsbF9saXN0Ow0KPiA+PiAgICAgdWludDMyX3Qg bWFnaWM7DQo+ID4+ICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsNCj4gPj4gICAgIGludCBz YXZlX3NpemUgPSAwOw0KPiA+PiBAQCAtMjU2Miw5ICsyNDU2LDYgQEAgcmVjb3JkX2Z1bGxfYmFz ZV90YXJnZXQ6OnNhdmVfcmVjb3JkIChjb25zdA0KPiBjaGFyDQo+ID4+ICpyZWNmaWxlbmFtZSkN Cj4gPj4gICAgIC8qIEFycmFuZ2UgdG8gcmVtb3ZlIHRoZSBvdXRwdXQgZmlsZSBvbiBmYWlsdXJl LiAgKi8NCj4gPj4gICAgIGdkYjo6dW5saW5rZXIgdW5saW5rX2ZpbGUgKHJlY2ZpbGVuYW1lKTsN Cj4gPj4NCj4gPj4gLSAgLyogU2F2ZSB0aGUgY3VycmVudCByZWNvcmQgZW50cnkgdG8gImN1cl9y ZWNvcmRfZnVsbF9saXN0Ii4gICovDQo+ID4+IC0gIGN1cl9yZWNvcmRfZnVsbF9saXN0ID0gcmVj b3JkX2Z1bGxfbGlzdDsNCj4gPj4gLQ0KPiA+PiAgICAgLyogR2V0IHRoZSB2YWx1ZXMgb2YgcmVn Y2FjaGUgYW5kIGdkYmFyY2guICAqLw0KPiA+PiAgICAgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0 X3RocmVhZF9yZWdjYWNoZSAoaW5mZXJpb3JfdGhyZWFkICgpKTsNCj4gPj4gICAgIGdkYmFyY2gg PSByZWdjYWNoZS0+YXJjaCAoKTsNCj4gPj4gQEAgLTI1NzQsMzQgKzI0NjUsMjcgQEAgcmVjb3Jk X2Z1bGxfYmFzZV90YXJnZXQ6OnNhdmVfcmVjb3JkIChjb25zdA0KPiA+PiBjaGFyICpyZWNmaWxl bmFtZSkNCj4gPj4gICAgICAgPSByZWNvcmRfZnVsbF9nZGJfb3BlcmF0aW9uX2Rpc2FibGVfc2V0 ICgpOw0KPiA+Pg0KPiA+PiAgICAgLyogUmV2ZXJzZSBleGVjdXRlIHRvIHRoZSBiZWdpbiBvZiBy ZWNvcmQgbGlzdC4gICovDQo+ID4+IC0gIHdoaWxlICgxKQ0KPiA+PiAtICAgIHsNCj4gPj4gLSAg ICAgIC8qIENoZWNrIGZvciBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsb2cuICAqLw0KPiA+PiAtICAg ICAgaWYgKHJlY29yZF9mdWxsX2xpc3QgPT0gJnJlY29yZF9mdWxsX2ZpcnN0KQ0KPiA+PiAtCWJy ZWFrOw0KPiA+PiAtDQo+ID4+IC0gICAgICByZWNvcmRfZnVsbF9leGVjX2luc24gKHJlZ2NhY2hl LCBnZGJhcmNoLCByZWNvcmRfZnVsbF9saXN0KTsNCj4gPj4gLQ0KPiA+PiAtICAgICAgaWYgKHJl Y29yZF9mdWxsX2xpc3QtPnByZXYpDQo+ID4+IC0JcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9m dWxsX2xpc3QtPnByZXY7DQo+ID4+IC0gICAgfQ0KPiA+PiArICBmb3IgKGludCBpID0gcmVjb3Jk X2Z1bGxfbmV4dF9pbnNuIC0gMTsgaSA+PSAwOyBpLS0pDQo+ID4+ICsgICAgcmVjb3JkX2Z1bGxf ZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwNCj4gPj4gKwkJCSAgIHJlY29yZF9mdWxsX2xp c3RbaV0pOw0KPiA+Pg0KPiA+PiAgICAgLyogQ29tcHV0ZSB0aGUgc2l6ZSBuZWVkZWQgZm9yIHRo ZSBleHRyYSBiZmQgc2VjdGlvbi4gICovDQo+ID4+ICAgICBzYXZlX3NpemUgPSA0OwkvKiBtYWdp YyBjb29raWUgKi8NCj4gPj4gLSAgZm9yIChyZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxf Zmlyc3QubmV4dDsgcmVjb3JkX2Z1bGxfbGlzdDsNCj4gPj4gLSAgICAgICByZWNvcmRfZnVsbF9s aXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCkNCj4gPj4gLSAgICBzd2l0Y2ggKHJlY29yZF9m dWxsX2xpc3QtPnR5cGUpDQo+ID4+IC0gICAgICB7DQo+ID4+IC0gICAgICBjYXNlIHJlY29yZF9m dWxsX2VuZDoNCj4gPj4gLQlzYXZlX3NpemUgKz0gMSArIDQgKyA0Ow0KPiA+PiAtCWJyZWFrOw0K PiA+PiAtICAgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ID4+IC0Jc2F2ZV9zaXplICs9IDEg KyA0ICsgcmVjb3JkX2Z1bGxfbGlzdC0+dS5yZWcubGVuOw0KPiA+PiAtCWJyZWFrOw0KPiA+PiAt ICAgICAgY2FzZSByZWNvcmRfZnVsbF9tZW06DQo+ID4+IC0Jc2F2ZV9zaXplICs9IDEgKyA0ICsg OCArIHJlY29yZF9mdWxsX2xpc3QtPnUubWVtLmxlbjsNCj4gPj4gLQlicmVhazsNCj4gPj4gLSAg ICAgIH0NCj4gPj4gKyAgZm9yIChpbnQgaSA9IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSAtIDE7 IGkgPj0gMDsgaS0tKQ0KPiA+PiArICAgIHsNCj4gPj4gKyAgICAgIC8qIE51bWJlciBvZiBlZmZl Y3RzIG9mIGFuIGluc3RydWN0aW9uLiAgKi8NCj4gPj4gKyAgICAgIHNhdmVfc2l6ZSArPSBzaXpl b2YgKHVpbnQzMl90KSArIHNpemVvZiAodWludDhfdCkgKyBzaXplb2YgKHVpbnQzMl90KTsNCj4g Pj4gKyAgICAgIGZvciAoYXV0byAmZW50cnkgOiByZWNvcmRfZnVsbF9saXN0W2ldLmVmZmVjdHMp DQo+ID4+ICsJc3dpdGNoIChlbnRyeS50eXBlKQ0KPiA+PiArCSAgew0KPiA+PiArCSAgY2FzZSBy ZWNvcmRfZnVsbF9yZWc6DQo+ID4+ICsJICAgIHNhdmVfc2l6ZSArPSAxICsgNCArIGVudHJ5LnUu cmVnLmxlbjsNCj4gPj4gKwkgICAgYnJlYWs7DQo+ID4+ICsJICBjYXNlIHJlY29yZF9mdWxsX21l bToNCj4gPj4gKwkgICAgc2F2ZV9zaXplICs9IDEgKyA0ICsgOCArIGVudHJ5LnUubWVtLmxlbjsN Cj4gPj4gKwkgICAgYnJlYWs7DQo+ID4+ICsJICB9DQo+ID4+ICsgICAgfQ0KPiA+Pg0KPiA+PiAg ICAgLyogTWFrZSB0aGUgbmV3IGJmZCBzZWN0aW9uLiAgKi8NCj4gPj4gICAgIG9zZWMgPSBiZmRf bWFrZV9zZWN0aW9uX2FueXdheV93aXRoX2ZsYWdzIChvYmZkLmdldCAoKSwgInByZWNvcmQiLA0K PiA+PiBAQCAtMjYzMCwxMDggKzI1MTQsMzIgQEAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6OnNh dmVfcmVjb3JkDQo+IChjb25zdA0KPiA+PiBjaGFyICpyZWNmaWxlbmFtZSkNCj4gPj4NCj4gPj4g ICAgIC8qIFNhdmUgdGhlIGVudHJpZXMgdG8gcmVjZmQgYW5kIGZvcndhcmQgZXhlY3V0ZSB0byB0 aGUgZW5kIG9mDQo+ID4+ICAgICAgICByZWNvcmQgbGlzdC4gICovDQo+ID4+IC0gIHJlY29yZF9m dWxsX2xpc3QgPSAmcmVjb3JkX2Z1bGxfZmlyc3Q7DQo+ID4+IC0gIHdoaWxlICgxKQ0KPiA+PiAr ICBmb3IgKGludCBpID0gMDsgaSA8IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKTsgaSsrKQ0KPiA+ PiAgICAgICB7DQo+ID4+IC0gICAgICAvKiBTYXZlIGVudHJ5LiAgKi8NCj4gPj4gLSAgICAgIGlm IChyZWNvcmRfZnVsbF9saXN0ICE9ICZyZWNvcmRfZnVsbF9maXJzdCkNCj4gPj4gKyAgICAgIHVp bnQzMl90IGVmZl9jb3VudCA9ICh1aW50MzJfdCkgcmVjb3JkX2Z1bGxfbGlzdFtpXS5lZmZlY3Rz LnNpemUgKCk7DQo+ID4+ICsgICAgICB1aW50MzJfdCBpbnNuX251bSA9IHJlY29yZF9mdWxsX2xp c3RbaV0uaW5zbl9udW07DQo+ID4+ICsgICAgICB1aW50OF90IHNpZ3ZhbCA9IChyZWNvcmRfZnVs bF9saXN0W2ldLnNpZ3ZhbC5oYXNfdmFsdWUgKCkpDQo+ID4+ICsJCQkgPyByZWNvcmRfZnVsbF9s aXN0W2ldLnNpZ3ZhbC52YWx1ZSAoKQ0KPiA+PiArCQkJIDogR0RCX1NJR05BTF8wOw0KPiA+PiAr DQo+ID4+ICsgICAgICAvKiBTaWduYWwuICAqLw0KPiA+PiArICAgICAgYmZkY29yZV93cml0ZSAo b2JmZC5nZXQgKCksIG9zZWMsICZzaWd2YWwsIHNpemVvZiAoc2lndmFsKSwgJmJmZF9vZmZzZXQp Ow0KPiA+PiArICAgICAgZWZmX2NvdW50ID0gbmV0b3JkZXIzMiAoZWZmX2NvdW50KTsNCj4gPj4g KyAgICAgIC8qIE51bWJlciBvZiBlZmZlY3RzLiAgKi8NCj4gPj4gKyAgICAgIGJmZGNvcmVfd3Jp dGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmZWZmX2NvdW50LCBzaXplb2YgKGVmZl9jb3VudCksDQo+ ID4+ICsJCSAgICAgJmJmZF9vZmZzZXQpOw0KPiA+PiArICAgICAgLyogSW5zdHJ1Y3Rpb24gbnVt YmVyLiAgKi8NCj4gPj4gKyAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAm aW5zbl9udW0sIHNpemVvZiAodWludDMyX3QpLA0KPiA+PiArCQkgICAgICZiZmRfb2Zmc2V0KTsN Cj4gPj4gKw0KPiA+PiArICAgICAgZm9yIChhdXRvICZlbnRyeSA6IHJlY29yZF9mdWxsX2xpc3Rb aV0uZWZmZWN0cykNCj4gPj4gICAJew0KPiA+PiAtCSAgdWludDhfdCB0eXBlOw0KPiA+PiAtCSAg dWludDMyX3QgcmVnbnVtLCBsZW4sIHNpZ25hbCwgY291bnQ7DQo+ID4+IC0JICB1aW50NjRfdCBh ZGRyOw0KPiA+PiAtDQo+ID4+IC0JICB0eXBlID0gcmVjb3JkX2Z1bGxfbGlzdC0+dHlwZTsNCj4g Pj4gLQkgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmdHlwZSwgc2l6ZW9mICh0 eXBlKSwgJmJmZF9vZmZzZXQpOw0KPiA+PiAtDQo+ID4+IC0JICBzd2l0Y2ggKHJlY29yZF9mdWxs X2xpc3QtPnR5cGUpDQo+ID4+IC0JICAgIHsNCj4gPj4gLQkgICAgY2FzZSByZWNvcmRfZnVsbF9y ZWc6IC8qIHJlZyAqLw0KPiA+PiAtCSAgICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ID4+IC0JCWdk Yl9wcmludGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCQkgICAgIiAgV3JpdGluZyByZWdpc3RlciAl ZCAoMSAiDQo+ID4+IC0JCQkgICAgInBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiA+PiAt CQkJICAgIHJlY29yZF9mdWxsX2xpc3QtPnUucmVnLm51bSwNCj4gPj4gLQkJCSAgICAodW5zaWdu ZWQgbG9uZykgc2l6ZW9mIChyZWdudW0pLA0KPiA+PiAtCQkJICAgIHJlY29yZF9mdWxsX2xpc3Qt PnUucmVnLmxlbik7DQo+ID4+IC0NCj4gPj4gLQkgICAgICAvKiBXcml0ZSByZWdudW0uICAqLw0K PiA+PiAtCSAgICAgIHJlZ251bSA9IG5ldG9yZGVyMzIgKHJlY29yZF9mdWxsX2xpc3QtPnUucmVn Lm51bSk7DQo+ID4+IC0JICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsICZy ZWdudW0sDQo+ID4+IC0JCQkgICAgIHNpemVvZiAocmVnbnVtKSwgJmJmZF9vZmZzZXQpOw0KPiA+ PiAtDQo+ID4+IC0JICAgICAgLyogV3JpdGUgcmVndmFsLiAgKi8NCj4gPj4gLQkgICAgICBiZmRj b3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywNCj4gPj4gLQkJCSAgICAgcmVjb3JkX2Z1bGxf Z2V0X2xvYyAocmVjb3JkX2Z1bGxfbGlzdCksDQo+ID4+IC0JCQkgICAgIHJlY29yZF9mdWxsX2xp c3QtPnUucmVnLmxlbiwgJmJmZF9vZmZzZXQpOw0KPiA+PiAtCSAgICAgIGJyZWFrOw0KPiA+PiAt DQo+ID4+IC0JICAgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOiAvKiBtZW0gKi8NCj4gPj4gLQkgICAg ICBpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAtCQlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiA+ PiAtCQkJICAgICIgIFdyaXRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiA+PiAtCQkJICAgICIl bHUgcGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ID4+IC0JCQkgICAgcGFkZHJlc3MgKGdk YmFyY2gsDQo+ID4+IC0JCQkJICAgICAgcmVjb3JkX2Z1bGxfbGlzdC0+dS5tZW0uYWRkciksDQo+ ID4+IC0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAoYWRkciksDQo+ID4+IC0JCQkgICAg KHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4gPj4gLQkJCSAgICByZWNvcmRfZnVsbF9s aXN0LT51Lm1lbS5sZW4pOw0KPiA+PiAtDQo+ID4+IC0JICAgICAgLyogV3JpdGUgbWVtbGVuLiAg Ki8NCj4gPj4gLQkgICAgICBsZW4gPSBuZXRvcmRlcjMyIChyZWNvcmRfZnVsbF9saXN0LT51Lm1l bS5sZW4pOw0KPiA+PiAtCSAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAm bGVuLCBzaXplb2YgKGxlbiksDQo+ID4+IC0JCQkgICAgICZiZmRfb2Zmc2V0KTsNCj4gPj4gLQ0K PiA+PiAtCSAgICAgIC8qIFdyaXRlIG1lbWFkZHIuICAqLw0KPiA+PiAtCSAgICAgIGFkZHIgPSBu ZXRvcmRlcjY0IChyZWNvcmRfZnVsbF9saXN0LT51Lm1lbS5hZGRyKTsNCj4gPj4gLQkgICAgICBi ZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIsDQo+ID4+IC0JCQkgICAgIHNp emVvZiAoYWRkciksICZiZmRfb2Zmc2V0KTsNCj4gPj4gLQ0KPiA+PiAtCSAgICAgIC8qIFdyaXRl IG1lbXZhbC4gICovDQo+ID4+IC0JICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9z ZWMsDQo+ID4+IC0JCQkgICAgIHJlY29yZF9mdWxsX2dldF9sb2MgKHJlY29yZF9mdWxsX2xpc3Qp LA0KPiA+PiAtCQkJICAgICByZWNvcmRfZnVsbF9saXN0LT51Lm1lbS5sZW4sICZiZmRfb2Zmc2V0 KTsNCj4gPj4gLQkgICAgICBicmVhazsNCj4gPj4gLQ0KPiA+PiAtCSAgICAgIGNhc2UgcmVjb3Jk X2Z1bGxfZW5kOg0KPiA+PiAtCQlpZiAocmVjb3JkX2RlYnVnKQ0KPiA+PiAtCQkgIGdkYl9wcmlu dGYgKGdkYl9zdGRsb2csDQo+ID4+IC0JCQkgICAgICAiICBXcml0aW5nIHJlY29yZF9mdWxsX2Vu ZCAoMSArICINCj4gPj4gLQkJCSAgICAgICIlbHUgKyAlbHUgYnl0ZXMpXG4iLA0KPiA+PiAtCQkJ ICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAoc2lnbmFsKSwNCj4gPj4gLQkJCSAgICAgICh1 bnNpZ25lZCBsb25nKSBzaXplb2YgKGNvdW50KSk7DQo+ID4+IC0JCS8qIFdyaXRlIHNpZ25hbCB2 YWx1ZS4gICovDQo+ID4+IC0JCXNpZ25hbCA9IG5ldG9yZGVyMzIgKHJlY29yZF9mdWxsX2xpc3Qt PnUuZW5kLnNpZ3ZhbCk7DQo+ID4+IC0JCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2Vj LCAmc2lnbmFsLA0KPiA+PiAtCQkJICAgICAgIHNpemVvZiAoc2lnbmFsKSwgJmJmZF9vZmZzZXQp Ow0KPiA+PiAtDQo+ID4+IC0JCS8qIFdyaXRlIGluc24gY291bnQuICAqLw0KPiA+PiAtCQljb3Vu dCA9IG5ldG9yZGVyMzIgKHJlY29yZF9mdWxsX2xpc3QtPnUuZW5kLmluc25fbnVtKTsNCj4gPj4g LQkJYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsICZjb3VudCwNCj4gPj4gLQkJCSAg ICAgICBzaXplb2YgKGNvdW50KSwgJmJmZF9vZmZzZXQpOw0KPiA+PiAtCQlicmVhazsNCj4gPj4g LQkgICAgfQ0KPiA+PiArCSAgcmVjb3JkX2Z1bGxfd3JpdGVfZW50cnlfdG9fYmZkIChlbnRyeSwg b2JmZCwgb3NlYywgJmJmZF9vZmZzZXQsDQo+ID4+ICsJCQkJCSAgZ2RiYXJjaCk7DQo+ID4+ICAg CX0NCj4gPj4gLQ0KPiA+PiAgICAgICAgIC8qIEV4ZWN1dGUgZW50cnkuICAqLw0KPiA+PiAtICAg ICAgcmVjb3JkX2Z1bGxfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwgcmVjb3JkX2Z1bGxf bGlzdCk7DQo+ID4+IC0NCj4gPj4gLSAgICAgIGlmIChyZWNvcmRfZnVsbF9saXN0LT5uZXh0KQ0K PiA+PiAtCXJlY29yZF9mdWxsX2xpc3QgPSByZWNvcmRfZnVsbF9saXN0LT5uZXh0Ow0KPiA+PiAt ICAgICAgZWxzZQ0KPiA+PiAtCWJyZWFrOw0KPiA+PiAtICAgIH0NCj4gPj4gLQ0KPiA+PiAtICAv KiBSZXZlcnNlIGV4ZWN1dGUgdG8gY3VyX3JlY29yZF9mdWxsX2xpc3QuICAqLw0KPiA+PiAtICB3 aGlsZSAoMSkNCj4gPj4gLSAgICB7DQo+ID4+IC0gICAgICAvKiBDaGVjayBmb3IgYmVnaW5uaW5n IGFuZCBlbmQgb2YgbG9nLiAgKi8NCj4gPj4gLSAgICAgIGlmIChyZWNvcmRfZnVsbF9saXN0ID09 IGN1cl9yZWNvcmRfZnVsbF9saXN0KQ0KPiA+PiAtCWJyZWFrOw0KPiA+PiAtDQo+ID4+IC0gICAg ICByZWNvcmRfZnVsbF9leGVjX2luc24gKHJlZ2NhY2hlLCBnZGJhcmNoLCByZWNvcmRfZnVsbF9s aXN0KTsNCj4gPj4gLQ0KPiA+PiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QtPnByZXYpDQo+ ID4+IC0JcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xpc3QtPnByZXY7DQo+ID4+ICsg ICAgICBpZiAoaSA8IHJlY29yZF9mdWxsX25leHRfaW5zbikNCj4gPj4gKwlyZWNvcmRfZnVsbF9l eGVjX2luc24gKHJlZ2NhY2hlLCBnZGJhcmNoLCByZWNvcmRfZnVsbF9saXN0W2ldKTsNCj4gPj4g ICAgICAgfQ0KPiA+Pg0KPiA+PiAgICAgdW5saW5rX2ZpbGUua2VlcCAoKTsNCj4gPj4gQEAgLTI3 NDYsNyArMjU1NCw3IEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZlX3JlY29yZCAoY29u c3QNCj4gY2hhcg0KPiA+PiAqcmVjZmlsZW5hbWUpDQo+ID4+ICAgICAgY29ycmVzcG9uZGluZ2x5 LiAgKi8NCj4gPj4NCj4gPj4gICBzdGF0aWMgdm9pZA0KPiA+PiAtcmVjb3JkX2Z1bGxfZ290b19p bnNuIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKmVudHJ5LA0KPiA+PiArcmVjb3JkX2Z1bGxf Z290b19pbnNuIChzaXplX3QgdGFyZ2V0X2luc24sDQo+ID4+ICAgCQkgICAgICAgZW51bSBleGVj X2RpcmVjdGlvbl9raW5kIGRpcikNCj4gPiBZb3UgY291bGQgZXhwbGFpbiB0aGUgbmV3IHBhcmFt ZXRlciBpbiB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24uDQo+ID4NCj4gPj4gICB7DQo+ID4+ICAg ICBzY29wZWRfcmVzdG9yZSByZXN0b3JlX29wZXJhdGlvbl9kaXNhYmxlDQo+ID4+IEBAIC0yNzU3 LDE3ICsyNTY1LDEyIEBAIHJlY29yZF9mdWxsX2dvdG9faW5zbiAoc3RydWN0DQo+IHJlY29yZF9m dWxsX2VudHJ5DQo+ID4+ICplbnRyeSwNCj4gPj4gICAgIC8qIEFzc3VtZSBldmVyeXRoaW5nIGlz IHZhbGlkOiB3ZSB3aWxsIGhpdCB0aGUgZW50cnksDQo+ID4+ICAgICAgICBhbmQgd2Ugd2lsbCBu b3QgaGl0IHRoZSBlbmQgb2YgdGhlIHJlY29yZGluZy4gICovDQo+ID4+DQo+ID4+IC0gIGlmIChk aXIgPT0gRVhFQ19GT1JXQVJEKQ0KPiA+PiAtICAgIHJlY29yZF9mdWxsX2xpc3QgPSByZWNvcmRf ZnVsbF9saXN0LT5uZXh0Ow0KPiA+PiAtDQo+ID4+IC0gIGRvDQo+ID4+IC0gICAgew0KPiA+PiAt ICAgICAgcmVjb3JkX2Z1bGxfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwgcmVjb3JkX2Z1 bGxfbGlzdCk7DQo+ID4+IC0gICAgICBpZiAoZGlyID09IEVYRUNfUkVWRVJTRSkNCj4gPj4gLQly ZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+cHJldjsNCj4gPj4gLSAgICAgIGVs c2UNCj4gPj4gLQlyZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+bmV4dDsNCj4g Pj4gLSAgICB9IHdoaWxlIChyZWNvcmRfZnVsbF9saXN0ICE9IGVudHJ5KTsNCj4gPj4gKyAgaWYg KGRpciA9PSBFWEVDX1JFVkVSU0UpDQo+ID4+ICsgICAgZm9yIChpbnQgaSA9IHJlY29yZF9mdWxs X25leHRfaW5zbjsgaSA+IHRhcmdldF9pbnNuOyBpLS0pDQo+ID4+ICsgICAgICByZWNvcmRfZnVs bF9leGVjX2luc24gKHJlZ2NhY2hlLCBnZGJhcmNoLCByZWNvcmRfZnVsbF9saXN0W2kgLSAxXSk7 DQo+ID4+ICsgIGVsc2UNCj4gPj4gKyAgICBmb3IgKGludCBpID0gcmVjb3JkX2Z1bGxfbmV4dF9p bnNuOyBpIDwgdGFyZ2V0X2luc247IGkrKykNCj4gPj4gKyAgICAgIHJlY29yZF9mdWxsX2V4ZWNf aW5zbiAocmVnY2FjaGUsIGdkYmFyY2gsIHJlY29yZF9mdWxsX2xpc3RbaV0pOw0KPiA+PiAgIH0N Cj4gPj4NCj4gPj4gICAvKiBBbGlhcyBmb3IgInRhcmdldCByZWNvcmQtZnVsbCIuICAqLw0KPiA+ PiBAQCAtMjc5OCw2MSArMjYwMSwzNiBAQCBzZXRfcmVjb3JkX2Z1bGxfaW5zbl9tYXhfbnVtIChj b25zdCBjaGFyDQo+ID4+ICphcmdzLCBpbnQgZnJvbV90dHksDQo+ID4+ICAgc3RhdGljIHZvaWQN Cj4gPj4gICBtYWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24gKGNvbnN0IGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gPj4gICB7DQo+ID4+IC0gIHN0cnVjdCByZWNvcmRfZnVs bF9lbnRyeSAqdG9fcHJpbnQgPSByZWNvcmRfZnVsbF9saXN0Ow0KPiA+PiArICBpZiAocmVjb3Jk X2Z1bGxfbGlzdC5lbXB0eSAoKSkNCj4gPj4gKyAgICBlcnJvciAoXygiTm90IGVub3VnaCByZWNv cmRlZCBoaXN0b3J5IikpOw0KPiA+Pg0KPiA+PiArICBpbnQgb2Zmc2V0ID0gcmVjb3JkX2Z1bGxf bmV4dF9pbnNuIC0gMTsNCj4gPj4gKyAgLyogUmVkdWNlIHRoZSBvZmZzZXQgYnkgMSBpZiB0aGUg cmVjb3JkX2Z1bGxfbmV4dF9pbnNuIGlzIGFmdGVyIHRoZSBlbmQNCj4gPj4gKyAgICAgc28gdGhh dCB3ZSBzaG93IHRoZSBsYXN0IHJlY29yZGVkIGluc3RydWN0aW9uIGluc3RlYWQgb2YgY3Jhc2hp bmcuICAqLw0KPiA+PiArICBpZiAob2Zmc2V0ID09IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSkN Cj4gPj4gKyAgICBvZmZzZXQtLTsNCj4gPj4gICAgIGlmIChhcmdzICE9IG51bGxwdHIpDQo+ID4+ ICAgICAgIHsNCj4gPj4gLSAgICAgIGludCBvZmZzZXQgPSB2YWx1ZV9hc19sb25nIChwYXJzZV9h bmRfZXZhbCAoYXJncykpOw0KPiA+PiAtICAgICAgaWYgKG9mZnNldCA+IDApDQo+ID4+IC0Jew0K PiA+PiAtCSAgLyogTW92ZSBmb3J3YXJkIE9GRlNFVCBpbnN0cnVjdGlvbnMuICBXZSBrbm93IHdl IGZvdW5kIHRoZQ0KPiA+PiAtCSAgICAgZW5kIG9mIGFuIGluc3RydWN0aW9uIHdoZW4gdG9fcHJp bnQtPnR5cGUgaXMgcmVjb3JkX2Z1bGxfZW5kLiAgKi8NCj4gPj4gLQkgIHdoaWxlICh0b19wcmlu dC0+bmV4dCAhPSBudWxscHRyICYmIG9mZnNldCA+IDApDQo+ID4+IC0JICAgIHsNCj4gPj4gLQkg ICAgICB0b19wcmludCA9IHRvX3ByaW50LT5uZXh0Ow0KPiA+PiAtCSAgICAgIGlmICh0b19wcmlu dC0+dHlwZSA9PSByZWNvcmRfZnVsbF9lbmQpDQo+ID4+IC0JCW9mZnNldC0tOw0KPiA+PiAtCSAg ICB9DQo+ID4+IC0JICBpZiAob2Zmc2V0ICE9IDApDQo+ID4+IC0JICAgIGVycm9yIChfKCJOb3Qg ZW5vdWdoIHJlY29yZGVkIGhpc3RvcnkiKSk7DQo+ID4+IC0JfQ0KPiA+PiAtICAgICAgZWxzZQ0K PiA+PiAtCXsNCj4gPj4gLQkgIHdoaWxlICh0b19wcmludC0+cHJldiAhPSBudWxscHRyICYmIG9m ZnNldCA8IDApDQo+ID4+IC0JICAgIHsNCj4gPj4gLQkgICAgICB0b19wcmludCA9IHRvX3ByaW50 LT5wcmV2Ow0KPiA+PiAtCSAgICAgIGlmICh0b19wcmludC0+dHlwZSA9PSByZWNvcmRfZnVsbF9l bmQpDQo+ID4+IC0JCW9mZnNldCsrOw0KPiA+PiAtCSAgICB9DQo+ID4+IC0JICBpZiAob2Zmc2V0 ICE9IDApDQo+ID4+IC0JICAgIGVycm9yIChfKCJOb3QgZW5vdWdoIHJlY29yZGVkIGhpc3Rvcnki KSk7DQo+ID4+IC0JfQ0KPiA+PiArICAgICAgb2Zmc2V0ICs9IHZhbHVlX2FzX2xvbmcgKHBhcnNl X2FuZF9ldmFsIChhcmdzKSk7DQo+ID4+ICsgICAgICBpZiAob2Zmc2V0ID49IHJlY29yZF9mdWxs X2xpc3Quc2l6ZSAoKSB8fCBvZmZzZXQgPCAwKQ0KPiA+PiArCWVycm9yIChfKCJOb3QgZW5vdWdo IHJlY29yZGVkIGhpc3RvcnkiKSk7DQo+ID4+ICAgICAgIH0NCj4gPj4gLSAgZ2RiX2Fzc2VydCAo dG9fcHJpbnQgIT0gbnVsbHB0cik7DQo+ID4+ICsgIGF1dG8gdG9fcHJpbnQgPSByZWNvcmRfZnVs bF9saXN0LmJlZ2luICgpICsgb2Zmc2V0Ow0KPiA+Pg0KPiA+PiAgICAgZ2RiYXJjaCAqYXJjaCA9 IGN1cnJlbnRfaW5mZXJpb3IgKCktPmFyY2ggKCk7DQo+ID4+DQo+ID4+IC0gIC8qIEdvIGJhY2sg dG8gdGhlIHN0YXJ0IG9mIHRoZSBpbnN0cnVjdGlvbi4gICovDQo+ID4+IC0gIHdoaWxlICh0b19w cmludC0+cHJldiAhPSBudWxscHRyICYmIHRvX3ByaW50LT5wcmV2LT50eXBlICE9DQo+IHJlY29y ZF9mdWxsX2VuZCkNCj4gPj4gLSAgICB0b19wcmludCA9IHRvX3ByaW50LT5wcmV2Ow0KPiA+PiAt DQo+ID4+IC0gIC8qIGlmIHdlJ3JlIGluIHRoZSBmaXJzdCByZWNvcmQsIHRoZXJlIGFyZSBubyBh Y3R1YWwgaW5zdHJ1Y3Rpb25zDQo+ID4+IC0gICAgIHJlY29yZGVkLiAgV2FybiB0aGUgdXNlciBh bmQgbGVhdmUuICAqLw0KPiA+PiAtICBpZiAodG9fcHJpbnQgPT0gJnJlY29yZF9mdWxsX2ZpcnN0 KQ0KPiA+PiAtICAgIGVycm9yIChfKCJOb3QgZW5vdWdoIHJlY29yZGVkIGhpc3RvcnkiKSk7DQo+ ID4+IC0NCj4gPj4gLSAgd2hpbGUgKHRvX3ByaW50LT50eXBlICE9IHJlY29yZF9mdWxsX2VuZCkN Cj4gPj4gKyAgZm9yIChhdXRvIGVudHJ5IDogdG9fcHJpbnQtPmVmZmVjdHMpDQo+ID4+ICAgICAg IHsNCj4gPj4gLSAgICAgIHN3aXRjaCAodG9fcHJpbnQtPnR5cGUpDQo+ID4+ICsgICAgICBzd2l0 Y2ggKGVudHJ5LnR5cGUpDQo+ID4+ICAgCXsNCj4gPj4gICAJICBjYXNlIHJlY29yZF9mdWxsX3Jl ZzoNCj4gPj4gICAJICAgIHsNCj4gPj4gLQkgICAgICB0eXBlICpyZWd0eXBlID0gZ2RiYXJjaF9y ZWdpc3Rlcl90eXBlIChhcmNoLCB0b19wcmludC0NCj4gPj4+IHUucmVnLm51bSk7DQo+ID4+ICsJ ICAgICAgdHlwZSAqcmVndHlwZSA9IGdkYmFyY2hfcmVnaXN0ZXJfdHlwZSAoYXJjaCwgZW50cnku dS5yZWcubnVtKTsNCj4gPj4gICAJICAgICAgdmFsdWUgKnZhbA0KPiA+PiAgIAkJICA9IHZhbHVl X2Zyb21fY29udGVudHMgKHJlZ3R5cGUsDQo+ID4+IC0JCQkJCSByZWNvcmRfZnVsbF9nZXRfbG9j ICh0b19wcmludCkpOw0KPiA+PiArCQkJCQkgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJmVudHJ5KSk7 DQo+ID4+ICAgCSAgICAgIGdkYl9wcmludGYgKCJSZWdpc3RlciAlcyBjaGFuZ2VkOiAiLA0KPiA+ PiAtCQkJICBnZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGFyY2gsIHRvX3ByaW50LQ0KPiA+Pj4gdS5y ZWcubnVtKSk7DQo+ID4+ICsJCQkgIGdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoYXJjaCwgZW50cnku dS5yZWcubnVtKSk7DQo+ID4+ICAgCSAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9w dHM7DQo+ID4+ICAgCSAgICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsNCj4gPj4g ICAJICAgICAgb3B0cy5yYXcgPSB0cnVlOw0KPiA+PiBAQCAtMjg2MiwxNyArMjY0MCwxNiBAQCBt YWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24NCj4gKGNvbnN0DQo+ID4+IGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gPj4gICAJICAgIH0NCj4gPj4gICAJICBjYXNlIHJlY29y ZF9mdWxsX21lbToNCj4gPj4gICAJICAgIHsNCj4gPj4gLQkgICAgICBnZGJfYnl0ZSAqYiA9IHJl Y29yZF9mdWxsX2dldF9sb2MgKHRvX3ByaW50KTsNCj4gPj4gKwkgICAgICBnZGJfYnl0ZSAqYiA9 IHJlY29yZF9mdWxsX2dldF9sb2MgKCZlbnRyeSk7DQo+ID4+ICAgCSAgICAgIGdkYl9wcmludGYg KCIlZCBieXRlcyBvZiBtZW1vcnkgYXQgYWRkcmVzcyAlcyBjaGFuZ2VkIGZyb206IiwNCj4gPj4g LQkJCSAgdG9fcHJpbnQtPnUubWVtLmxlbiwNCj4gPj4gLQkJCSAgcHJpbnRfY29yZV9hZGRyZXNz IChhcmNoLCB0b19wcmludC0+dS5tZW0uYWRkcikpOw0KPiA+PiAtCSAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgdG9fcHJpbnQtPnUubWVtLmxlbjsgaSsrKQ0KPiA+PiArCQkJICBlbnRyeS51Lm1l bS5sZW4sDQo+ID4+ICsJCQkgIHByaW50X2NvcmVfYWRkcmVzcyAoYXJjaCwgZW50cnkudS5tZW0u YWRkcikpOw0KPiA+PiArCSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW50cnkudS5tZW0ubGVu OyBpKyspDQo+ID4+ICAgCQlnZGJfcHJpbnRmICgiICUwMngiLCBiW2ldKTsNCj4gPj4gICAJICAg ICAgZ2RiX3ByaW50ZiAoIlxuIik7DQo+ID4+ICAgCSAgICAgIGJyZWFrOw0KPiA+PiAgIAkgICAg fQ0KPiA+PiAgIAl9DQo+ID4+IC0gICAgICB0b19wcmludCA9IHRvX3ByaW50LT5uZXh0Ow0KPiA+ PiAgICAgICB9DQo+ID4+ICAgfQ0KPiA+Pg0KPiA+PiBAQCAtMjg4MCwxMSArMjY1Nyw2IEBAIElO SVRfR0RCX0ZJTEUgKHJlY29yZF9mdWxsKQ0KPiA+PiAgIHsNCj4gPj4gICAgIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpjOw0KPiA+Pg0KPiA+PiAtICAvKiBJbml0IHJlY29yZF9mdWxsX2ZpcnN0 LiAgKi8NCj4gPj4gLSAgcmVjb3JkX2Z1bGxfZmlyc3QucHJldiA9IE5VTEw7DQo+ID4+IC0gIHJl Y29yZF9mdWxsX2ZpcnN0Lm5leHQgPSBOVUxMOw0KPiA+PiAtICByZWNvcmRfZnVsbF9maXJzdC50 eXBlID0gcmVjb3JkX2Z1bGxfZW5kOw0KPiA+PiAtDQo+ID4+ICAgICBhZGRfdGFyZ2V0IChyZWNv cmRfZnVsbF90YXJnZXRfaW5mbywgcmVjb3JkX2Z1bGxfb3Blbik7DQo+ID4+ICAgICBhZGRfZGVw cmVjYXRlZF90YXJnZXRfYWxpYXMgKHJlY29yZF9mdWxsX3RhcmdldF9pbmZvLCAicmVjb3JkIik7 DQo+ID4+ICAgICBhZGRfdGFyZ2V0IChyZWNvcmRfZnVsbF9jb3JlX3RhcmdldF9pbmZvLCByZWNv cmRfZnVsbF9vcGVuKTsNCj4gPj4gZGlmZiAtLWdpdCBhL2dkYi9yZWNvcmQtZnVsbC5oIGIvZ2Ri L3JlY29yZC1mdWxsLmgNCj4gPj4gaW5kZXggNTFlZmZlNzQ1NjAuLmMzMjdkODc5YThhIDEwMDY0 NA0KPiA+PiAtLS0gYS9nZGIvcmVjb3JkLWZ1bGwuaA0KPiA+PiArKysgYi9nZGIvcmVjb3JkLWZ1 bGwuaA0KPiA+PiBAQCAtNDEsNyArNDEsNiBAQCBlbnVtIHJlY29yZF9yZXN1bHQNCj4gPj4NCj4g Pj4gICBleHRlcm4gaW50IHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQNCj4gPj4gbnVtKTsNCj4gPj4gICBleHRlcm4gaW50IHJlY29y ZF9mdWxsX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFIgYWRkciwgaW50IGxlbik7DQo+ID4+ IC1leHRlcm4gaW50IHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfZW5kICh2b2lkKTsNCj4gPj4N Cj4gPj4gICAvKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb2Nlc3MgcmVjb3JkIHRhcmdldCBpcyBv cGVuLiAgKi8NCj4gPj4gICBleHRlcm4gaW50IHJlY29yZF9mdWxsX2lzX3VzZWQgKHZvaWQpOw0K PiA+PiBkaWZmIC0tZ2l0IGEvZ2RiL3Jpc2N2LXRkZXAuYyBiL2dkYi9yaXNjdi10ZGVwLmMNCj4g Pj4gaW5kZXggNmI1YzljMDJkNDYuLmY1YjFmNjY4NDRjIDEwMDY0NA0KPiA+PiAtLS0gYS9nZGIv cmlzY3YtdGRlcC5jDQo+ID4+ICsrKyBiL2dkYi9yaXNjdi10ZGVwLmMNCj4gPj4gQEAgLTU0NjYs OCArNTQ2Niw1IEBAIHJpc2N2X3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwNCj4gPj4gc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gPj4gICAgIGlmIChyZXMgIT0g UkVDT1JEX1NVQ0NFU1MpDQo+ID4+ICAgICAgIHJldHVybiByZXM7DQo+ID4+DQo+ID4+IC0gIGlm IChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gPj4gLSAgICByZXR1cm4gLTE7 DQo+ID4+IC0NCj4gPj4gICAgIHJldHVybiAwOw0KPiA+PiAgIH0NCj4gPj4gZGlmZiAtLWdpdCBh L2dkYi9yczYwMDAtdGRlcC5jIGIvZ2RiL3JzNjAwMC10ZGVwLmMNCj4gPj4gaW5kZXggZTEzNWRm OTRhNDAuLmY5NjQ4ODlhNDlmIDEwMDY0NA0KPiA+PiAtLS0gYS9nZGIvcnM2MDAwLXRkZXAuYw0K PiA+PiArKysgYi9nZGIvcnM2MDAwLXRkZXAuYw0KPiA+PiBAQCAtNzEzOCw4ICs3MTM4LDYgQEAg cHBjX3Byb2Nlc3NfcHJlZml4X2luc3RydWN0aW9uIChpbnQgaW5zbl9wcmVmaXgsDQo+IGludA0K PiA+PiBpbnNuX3N1ZmZpeCwNCj4gPj4gICAgIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRk X3JlZyAocmVnY2FjaGUsIFBQQ19QQ19SRUdOVU0pKQ0KPiA+PiAgICAgICByZXR1cm4gLTE7DQo+ ID4+DQo+ID4+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gPj4g LSAgICByZXR1cm4gLTE7DQo+ID4+ICAgICByZXR1cm4gMDsNCj4gPj4gICB9DQo+ID4+DQo+ID4+ IEBAIC03NDQ3LDggKzc0NDUsNiBAQCBwcGNfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLA0KPiA+PiBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+Pg0KPiA+PiAg ICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChyZWdjYWNoZSwgUFBDX1BDX1JF R05VTSkpDQo+ID4+ICAgICAgIHJldHVybiAtMTsNCj4gPj4gLSAgaWYgKHJlY29yZF9mdWxsX2Fy Y2hfbGlzdF9hZGRfZW5kICgpKQ0KPiA+PiAtICAgIHJldHVybiAtMTsNCj4gPj4gICAgIHJldHVy biAwOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL2dkYi9zMzkwLWxpbnV4LXRk ZXAuYyBiL2dkYi9zMzkwLWxpbnV4LXRkZXAuYw0KPiA+PiBpbmRleCAzY2Q2YjM1OWQxMy4uNmJl YTMwZjA4ZGMgMTAwNjQ0DQo+ID4+IC0tLSBhL2dkYi9zMzkwLWxpbnV4LXRkZXAuYw0KPiA+PiAr KysgYi9nZGIvczM5MC1saW51eC10ZGVwLmMNCj4gPj4gQEAgLTkxMCw5ICs5MTAsNiBAQCBzMzkw X2xpbnV4X3JlY29yZF9zaWduYWwgKHN0cnVjdCBnZGJhcmNoDQo+ICpnZGJhcmNoLA0KPiA+PiBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiA+PiAgICAgaWYgKHJlY29yZF9mdWxsX2FyY2hf bGlzdF9hZGRfbWVtIChzcCwgc2l6ZW9mX3J0X3NpZ2ZyYW1lKSkNCj4gPj4gICAgICAgcmV0dXJu IC0xOw0KPiA+Pg0KPiA+PiAtICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9lbmQgKCkp DQo+ID4+IC0gICAgcmV0dXJuIC0xOw0KPiA+PiAtDQo+ID4+ICAgICByZXR1cm4gMDsNCj4gPj4g ICB9DQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9nZGIvczM5MC10ZGVwLmMgYi9nZGIvczM5MC10 ZGVwLmMNCj4gPj4gaW5kZXggZjlkN2JkZDA0ZTQuLjM2Y2U2NTllYTE1IDEwMDY0NA0KPiA+PiAt LS0gYS9nZGIvczM5MC10ZGVwLmMNCj4gPj4gKysrIGIvZ2RiL3MzOTAtdGRlcC5jDQo+ID4+IEBA IC03MDE5LDggKzcwMTksNiBAQCBzMzkwX3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwNCj4gPj4gc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gPj4NCj4gPj4gICAg IGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAocmVnY2FjaGUsIFMzOTBfUFNXQV9S RUdOVU0pKQ0KPiA+PiAgICAgICByZXR1cm4gLTE7DQo+ID4+IC0gIGlmIChyZWNvcmRfZnVsbF9h cmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gPj4gLSAgICByZXR1cm4gLTE7DQo+ID4+ICAgICByZXR1 cm4gMDsNCj4gPj4gICB9DQo+ID4+DQo+ID4+IC0tDQo+ID4+IDIuNTMuMA0KPiA+Pg0KPiA+IEtp bmQgUmVnYXJkcywNCj4gPiBDaHJpc3RpbmENCj4gPg0KPiA+IEludGVsIERldXRzY2hsYW5kIEdt YkgNCj4gPiBSZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZl bGRraXJjaGVuLCBHZXJtYW55DQo+ID4gVGVsOiArNDkgODkgOTkxIDQzMCwgd3d3LmludGVsLmRl DQo+ID4gTWFuYWdpbmcgRGlyZWN0b3JzOiBIYXJyeSBEZW1hcywgSmVmZnJleSBTY2huZWlkZXJt YW4sIFlpbiBDaG9uZyBTb3JyZWxsDQo+ID4gQ2hhaXJwZXJzb24gb2YgdGhlIFN1cGVydmlzb3J5 IEJvYXJkOiBOaWNvbGUgTGF1DQo+ID4gUmVnaXN0ZXJlZCBTZWF0OiBNdW5pY2gNCj4gPiBDb21t ZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4DQo+ID4NCg0K Q2hyaXN0aW5hDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIDQpSZWdpc3RlcmVkIEFkZHJlc3M6IERv cm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55DQpUZWw6ICs0OSA4 OSA5OTEgNDMwLCB3d3cuaW50ZWwuZGUNCk1hbmFnaW5nIERpcmVjdG9yczogSGFycnkgRGVtYXMs IEplZmZyZXkgU2NobmVpZGVybWFuLCBZaW4gQ2hvbmcgU29ycmVsbA0KQ2hhaXJwZXJzb24gb2Yg dGhlIFN1cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1DQpSZWdpc3RlcmVkIFNlYXQ6IE11bmlj aA0KQ29tbWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo=