From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id XP9/H63RdGqZ7g0AWB0awg (envelope-from ) for ; Thu, 06 Aug 2026 14:25:49 -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=XGvVpMan; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 6EAF41E09B; Thu, 06 Aug 2026 14:25:49 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.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 autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::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 D73D11E09B for ; Thu, 06 Aug 2026 14:25:45 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E14244BB3BF7 for ; Thu, 6 Aug 2026 18:25:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E14244BB3BF7 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=XGvVpMan Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) by sourceware.org (Postfix) with ESMTPS id 192DD4BA23E1 for ; Thu, 6 Aug 2026 18:25:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 192DD4BA23E1 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 192DD4BA23E1 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.15 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1786040710; cv=fail; b=biDOgGECIURkhSkYhinJTCYe5vOykz9aDCvxSf/+T4F4dJX5bvlkMlLFMn9w3ZYAg/UfZckIC5z7KKPlhyEj6Bh2vAVacT+S3N61J9OtEjS0Qb7BadopvWI8lB/bhdpVHdXnXoPU3DViwyT6FtIt6tbfVLJC4HpYX+BCeANv7Uo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1786040710; c=relaxed/simple; bh=tDxuwrU4WunQgpDnicMZp/AVqUXsEGJ/kQ3DftrRcSM=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=gHYAxAN4aDRXDB/8WTXFXlvDR4t5Y01OtBIEHetSbr8Vw+lb2wu3dlXw/XpZFYiVwxvfwSBkDsp7yJeQJtTMYcKo3Uu655sbJYNu8OxK8iu0ICtP+297AQYvXWr/uM3rdaP8TPX6MXbsMNa8BarLap/flSs8Jv1x2SvUOCHQETg= 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=XGvVpMan DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 192DD4BA23E1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1786040710; x=1817576710; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=tDxuwrU4WunQgpDnicMZp/AVqUXsEGJ/kQ3DftrRcSM=; b=XGvVpManN3hJ73aNQyMAiUZHVRp/Xnb0m3gTA0rGKuykdTin7RoCItk4 B7pwh3ih4enlNHUQr/oBapgmycpuNTYP8si/J0LcymDGhEluJ4Z7u4NBx sxeisbDfyv8JydIxSb6eo0xsoBNkrF9OGrcxFulNsj6L1nRqHp6Fh3Bq8 F6pEwSy+Xh8GwWeyAnsrH3S2Kju/9vPOHUBbCXOBPL5rtWivjhixjqJvC Ehg1pqDEoBrlpMcV+M16TIUBRQhsXPeYFyXmR0Ejw29665Z5fVRdOQRpy 74nOLBNadPTCcyixXYFq2Xv79Z5JFYbCukX6VEBzjTt7KhnB43oVhKe7E Q==; X-CSE-ConnectionGUID: eqFSIT7ITae8hkZfBx+Yow== X-CSE-MsgGUID: iXkEX9qvQ6OYD+eAW8tkkg== X-IronPort-AV: E=McAfee;i="6800,10657,11867"; a="86759885" X-IronPort-AV: E=Sophos;i="6.25,208,1779174000"; d="scan'208";a="86759885" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2026 11:25:08 -0700 X-CSE-ConnectionGUID: dRw+hztWQxmXsKWMK0AnEQ== X-CSE-MsgGUID: dsAVWm2YRhGaIBohUzjOlQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,208,1779174000"; d="scan'208";a="264169337" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa004.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Aug 2026 11:25:09 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) 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.45; Thu, 6 Aug 2026 11:25:08 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) 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.45 via Frontend Transport; Thu, 6 Aug 2026 11:25:08 -0700 Received: from PH0PR06CU001.outbound.protection.outlook.com (40.107.208.31) 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.45; Thu, 6 Aug 2026 11:25:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AMYwMT8rZcDdvsQyLKIByUow0Vm1Q/Fj4ubSu+WcUm+kiBfnyb/gayff8l2212ukBkOJsWJX7PrYvWicKXwXLqpLrkPw5V+xbRK27s5fspXYlgipBKreDsFC5bOuA5jr+yvYNrHKeC7XaidGiBIjIYqNbcLyHTHbgFI5Ruzxrqx4+8aMtG4WDsWw048+gAfFNOGvxtnZBvJM03s7HgrNDnlaW6uGVzG/nbrLOKX5O98ICNG8cAJ1Sp4vHrVOrMY+Fhhhy6DgbeXvP1F9RYljBJ9u9lRnsYxh47WRZxU88hy4auRQnckOqrRBw87A1VPcHX5+jVq9TnPY/DbHQ/y5oQ== 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=hBlPhXVymDga2OFL64imlQ9guVgA9bc+8/bqklPUrRs=; b=uAX1qc5CDF+WrfvenGhRejKltGbyvOqzLtFNkequOywtrPe1vT+Z/JoA50+Tj4RMelrWBlL0be3kNpNQZPC+gfRzOXitea76OFpCL3/qt/ri+2ldjqpecHOzoB5IOcShMprGyg0HfOMFxJLAjWsncpmjMGp9aKq5YLdC4MdMZicyF+fHFZRmq48woTGxY914/iqVhqK8gyTdwW54V1Ve0xoSwrPcneZIyufwgsEg4ROglNHHrx7brdCAgLmr8t5pOgViB+y8L0h+lIEVFQ183jhCDqjsnZfDrdm6XdZJMABTLrmPCZFjuPDHCHOEZVEXjpSAxqSnSThym4YqAHi2lw== 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 DM3PPFD7E67F036.namprd11.prod.outlook.com (2603:10b6:f:fc00::f54) by DM3PR11MB8684.namprd11.prod.outlook.com (2603:10b6:0:4a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.21; Thu, 6 Aug 2026 18:25:00 +0000 Received: from DM3PPFD7E67F036.namprd11.prod.outlook.com ([fe80::343d:28d7:cc0f:a556]) by DM3PPFD7E67F036.namprd11.prod.outlook.com ([fe80::343d:28d7:cc0f:a556%8]) with mapi id 15.21.0292.015; Thu, 6 Aug 2026 18:25:00 +0000 From: "Gerlicher, Klaus" To: Luis , "gdb-patches@sourceware.org" , "Joos, Christina" Subject: RE: [PATCH v3 1/1] gdb/linespec: relax block filter to preserve distinct code paths Thread-Topic: [PATCH v3 1/1] gdb/linespec: relax block filter to preserve distinct code paths Thread-Index: AQHdHArfEoAPDF3GvE+Bk0HY+znAJ7aRaYJg Date: Thu, 6 Aug 2026 18:25:00 +0000 Message-ID: References: <20260722093654.30044-1-klaus.gerlicher@intel.com> <20260722093654.30044-2-klaus.gerlicher@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM3PPFD7E67F036:EE_|DM3PR11MB8684:EE_ x-ms-office365-filtering-correlation-id: 052f772c-5b53-409b-d2e8-08def3e806b9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|23010399003|376014|366016|1800799024|13003099007|38070700021|6133799003|56012099006|5023799004|11063799006|10067099003|4143699003|3023799007|22082099003|18002099003; x-microsoft-antispam-message-info: zMtVDnwNbFMhLZw3nMNfOWPRocG+ErQGJIiv/APMsGee4+2TARztrW7xkYxVDq8ETIIORHZJ/YB2lYyMzNrpCtxj00bYoWXsqPywOzgbrbulqPD+HUEgfNShnUFBCARJXhQolNsdKX+cIxyX5ZVSUGcC5BuvYPgtdYfnQzm2FOTCySwaNf9DYye22Rhdr77Jic0whNywc7Z+UWualO984NEv5J+HDT6skqclF5hEKbV2G1nDvLxN4VnMRxl4JXOsdHONwJtLfaw6RZC4PvJl7JDCBVwYvjA0L7vGv1Ch43jdnRM5V4Pve3vwF13bVIgu6ysUB+6e/HWrr6B32aOx+YelyvREEqBI3Je5qE4GOXsyQZrtZpDi632iNL+FXv16WYqgAVI74X0ypIjqItaBaj9meKrngZQSrs31WWCsMhc7xd2qel7coHxy8JjFO2ikuf1qt6bl3YrrwaXDHOdtJBfPkYMX4NxBvsTSom22WbdvqqyXL5VRr8DVA8Z7aCPUkQaiMywabNqcNjVR5DeqLovj4elWg/lF34dNVJlwAVWPlk7w3NX0ItmJ8jkzSgRAPQBeB8Ozi6noEUVejrtaa7XzMDEER9BQJmJbxdALBZ1lB7eW2to7fkkCpINTEp+YCAU1/aowvvIjEQ4an5tIVFExOJDiKiE9wqrf1y7MK3w= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM3PPFD7E67F036.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(23010399003)(376014)(366016)(1800799024)(13003099007)(38070700021)(6133799003)(56012099006)(5023799004)(11063799006)(10067099003)(4143699003)(3023799007)(22082099003)(18002099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?eW1KdUVoMDFqS2NYcVV4UUpibWFoQXRYR0F2VlBCK2VBV2s2anprcjhzVTBt?= =?utf-8?B?ZTVMRFpHbWd1WEhHUGw5SXdLMm9QWHhjeW44NkhpREdrVVdFM2Y0MmJ1MEFr?= =?utf-8?B?R1NLcHJVQjhJV0dLU3E5TEhiQVFnb3I1emJTOGlWTmRneFIva1k1T3QvYUxD?= =?utf-8?B?c2JYMVI3TWlUdXI4cVBxT09WeURHd0xPRXZheXRkYlNHc2lWVFR0RkFlajl0?= =?utf-8?B?L3E1czE2MjBtcjNKWDVOK1NUbHhZY0tHN2oxZTEzS0RBV0gyTDN1VjRFbGZj?= =?utf-8?B?SnpJSFY3MXdCUVBCbG1FT0RQZndCc000S0hnQWtkYmNoNmozVXhOM0lVRGNM?= =?utf-8?B?YUZkYTArclRFcXhQMm52ZVZ6NnBpd3dxb2o5dFZackJRbHJQMHhKWlI4cjBI?= =?utf-8?B?c29WclUzeHc1bU1NeTlTdkYrUjJ5SkVRR1FRblFJd1pvYTFYalZIb3cwS3JW?= =?utf-8?B?T3cxM1ZzN1FrNEhrNmd3MjJWTDRtL2hwaDJUUU45K3hYMFlwNTN3UktncFFC?= =?utf-8?B?TW8wUmdWN2JlaDhwN2NtWFQ1WHFkaDV6TFUrb2l0dmZkdmtjeXBSMHN1Q1JT?= =?utf-8?B?SGVRd1grK1lWRythZXFlcW5FTE05Mjl0TFR0RURFYmVkZkZmOWZlQmg4OXpF?= =?utf-8?B?SzdrV05jYjBmY0h3cE10eUtmSjBxMmpVNG4ralRBdkkyV2hPaTBTcG1KRHJB?= =?utf-8?B?Q0tEbXBzclQrZlBvVXcvR1hiTVE2L1BnYXd3SmZjR0ZGSU9yWDlzSHV3dEpU?= =?utf-8?B?MHlTZ0habWdyeWJUUFhyVnVuTDVuL3lSYi9ZRE12NURKclk2QUUxUTJkUHRX?= =?utf-8?B?NnhPVHJNKzdCWkFxUUhWeEJQTk1ndDdoZUtHdVJCcElKcFFuWHRlU1J3Nm8r?= =?utf-8?B?UWZYN3M5YlcvOGtqcWlIRHFicmdMbGpZZDdxTEV3S1QyenQwSmg4aXJ0a0xI?= =?utf-8?B?amJXL0pKQVlUNFBxTURYOTNQbWVkOUlUUnM3RHlKdjFUTTV6d2ZQNFdJOS8v?= =?utf-8?B?TFVtNVlrdUlrb0RGNnE2R0oyYXZ5ZTlUL1lDTTRDLytsOEJ4bTR6Nk55bVJ0?= =?utf-8?B?SmJaN09pN2dFQnhVWkFUanJyVTlVRERkMjBzOWtxOEF5ZWp2WUcwNTJWM09o?= =?utf-8?B?allmWHU5dUpLOXNnMmxZcTF2ZTFaci80MUhyOHBXdG9Xd1BDRUFHemZCVDRq?= =?utf-8?B?RVV6L2R0eUV6NEJqbU8wcngzYU51QkJib2RGSGNJRjB2TmhxbFIyNW5WVjYz?= =?utf-8?B?a05iVXZBRGh2WFhZNVpRTm5rdWxrdnJjYUZzamRqOFJRMTR6ZlNUYzdxMTNF?= =?utf-8?B?YVMvSm1zU29GZUMvTjV3aFpPT3ZlbHhlSjJzcm44c2hGT2xjcFFnTlg3L1ho?= =?utf-8?B?elBGUVdsZjl3L2xpRUErdEdWcnZyS3VNL0FFRTBIcEY4eC85VSs3R2pmekVx?= =?utf-8?B?Ny96NGtjYVRkV0FYMDEvT3hSWkxHa0plVUtRUHo5N09MZXVxWlZ2MnJRR2pq?= =?utf-8?B?QVM4QldaYUN2NERmMW1JRk5UN3YvVm4ySk12RXh6ekdUN2FvYXZZWXJmTXVu?= =?utf-8?B?NTlQa0Y1TnlPR2VId2dhTGZiR3VXcVdMNjNoVDRDVlpnczE5ZlBiMlg2QStW?= =?utf-8?B?eWhIWXVJYUxlQ2lDR3ZWR2tPMTZJOFUrYXZ6SER5YXY3OUphYWU1eVcxdWNB?= =?utf-8?B?a1M0RGpZdDNxdmcxMFdiOUlTSmxIMHpGdnpOdDVWbnkwTi9Tb3lPRDBBRUFo?= =?utf-8?B?Qlc0SDBrZnVPUDI5R1Q2S2JEdEtGRFBadDIwYkdrRzlmM05YL3FUU3U5RHBw?= =?utf-8?B?Mm1JT0hvSC93WHNQK05Kdmw2bktJaGVaWWZKUFdEbFVoTGVxc2NkZk1JbURl?= =?utf-8?B?cDhkakxUZWdKQVc3ZVoySkVScjcvek5FNlIxaFZFc3hmSmhOM2JkUzRObkNL?= =?utf-8?B?Tm1TV1lwUUxtU2tNM0tDcFFZOUVWY3JaUjg5SWNmSDF3dCtVTlJRcTdoYjBo?= =?utf-8?B?MVJWODhXV29ldjJuOS9QaHczTndHSlhTblNOMVZtUzRmMkkrLzFKQUluYlZ6?= =?utf-8?B?KzVpYVplN00xMkRJdW5ZZVpDQ3I2QW1PY2hOMGdxZUplZzJWYzhyU2h5Z1lz?= =?utf-8?B?UGxReThSWFFic2JOWng4RzBSR290b2lwTHdQMDkxWEZjUGVqNGxEREV2dkJm?= =?utf-8?B?dURGVDNJOUZYN1NNV0xpeGdPbEVzZE1XUWtvSWdZK0ZSQnEyMDhuSHNUOW1F?= =?utf-8?B?SmUxaS9adGRldFJqc2dldmhqS0pGTUUwZi9CSys4U29neEJrV3BRd1hQYUtp?= =?utf-8?B?OXdpNkl3aTNIRmVEbCtVcWpKRWFTcEd3QUZkRHc3aEw0MFpaWGxhUT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: U63o5Fa27cjGCa97LU61LlR2uzOmfDI8d/2o6SiuCFuwMDt6vqWB+ePU2BjRl0J3UM124vGBH4J59nA/iLLTOF/huKGWuDxJvkzRoh15lGcwWCm8vzc1vvYOQixmbADoNcvBvIo72Q/+YKHAVxvtyk3pztUCt9Gy+vBuo63xge8q2frQU+CnIqZKVAsF/B7wu3swMA/+UlYjftviL0L/ZqQNzI4kjXCnrzvkYToLRzHcxXpbZighVTpHxDUvaWTtq/sDEz1+uvGGZ/xllpYcmwiWJ9DIvF5gG1LJpxdGRXctbdJq3VNNhfOjoTxVE49uCbu/c7bwbVdbP1UYpNclFA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM3PPFD7E67F036.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 052f772c-5b53-409b-d2e8-08def3e806b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Aug 2026 18:25:00.2923 (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: dEoMFJaKt9LUe1w9cF4j45AP9WPxT0jTvLw3XSfJE+asb46aX6XLcS1iRpVfta3HVlT/BbrecoBPCWJWSU8hnWLst5wtR9Fv1RbW7tH28Hk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR11MB8684 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 VGhhbmtzIEx1aXMuDQoNCktpbmRseSBwaW5naW5nIGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZSBw YXRjaGVzLg0KDQpUaGFua3MNCktsYXVzDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogTHVpcyA8bHVpcy5tYWNoYWRvLmZvc3NAZ21haWwuY29tPg0KPiBTZW50OiBTYXR1 cmRheSwgSnVseSAyNSwgMjAyNiA5OjU1IEFNDQo+IFRvOiBHZXJsaWNoZXIsIEtsYXVzIDxrbGF1 cy5nZXJsaWNoZXJAaW50ZWwuY29tPjsgZ2RiLQ0KPiBwYXRjaGVzQHNvdXJjZXdhcmUub3JnOyBK b29zLCBDaHJpc3RpbmEgPGNocmlzdGluYS5qb29zQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6 IFtQQVRDSCB2MyAxLzFdIGdkYi9saW5lc3BlYzogcmVsYXggYmxvY2sgZmlsdGVyIHRvIHByZXNl cnZlIGRpc3RpbmN0DQo+IGNvZGUgcGF0aHMNCj4gDQo+IEhpLA0KPiANCj4gVGhhbmtzIGZvciB0 aGUgcGF0Y2guDQo+IA0KPiBTa2ltbWluZyB0aHJvdWdoIGl0LCBpdCBsb29rcyBmaW5lIHRvIG1l IGZvciB0aGUgYWFyY2g2NCBwYXJ0cy4NCj4gDQo+IE9uIDIyLzA3LzIwMjYgMTA6MzYsIEtsYXVz IEdlcmxpY2hlciB3cm90ZToNCj4gPiBGcm9tOiAiR2VybGljaGVyLCBLbGF1cyIgPGtsYXVzLmdl cmxpY2hlckBpbnRlbC5jb20+DQo+ID4NCj4gPiBUaGUgYmxvY2stYmFzZWQgZHVwbGljYXRlIGZp bHRlciBpbiBjcmVhdGVfc2Fsc19saW5lX29mZnNldCBrZWVwcyBvbmx5DQo+ID4gdGhlIGZpcnN0 IGlzX3N0bXQgbGluZSB0YWJsZSBlbnRyeSBwZXIgYmxvY2suICBUaGlzIGhldXJpc3RpYyByZWR1 Y2VzDQo+ID4gbXVsdGlwbGUgZm9yLWxvb3AgaGVhZGVyIGVudHJpZXMgKGluaXQvdGVzdC9pbmNy ZW1lbnQgb24gc2FtZSBsaW5lKSB0bw0KPiA+IHNpbmdsZSBicmVha3BvaW50IGxvY2F0aW9ucy4g IEhvd2V2ZXIsIGl0IGlzIHRvbyBhZ2dyZXNzaXZlIGZvcg0KPiA+IHZlY3Rvcml6ZWQgbG9vcHMs IHdoZXJlIHRoZSBjb21waWxlciBlbWl0cyBzZXBhcmF0ZSBjb2RlIHJlZ2lvbnMgZm9yDQo+ID4g dGhlIHZlY3Rvcml6ZWQgYm9keSBhbmQgc2NhbGFyIHJlbWFpbmRlciwgYm90aCBvbiB0aGUgc2Ft ZSBzb3VyY2UgbGluZS4NCj4gPiBUaGUgZmlsdGVyIGRpc2NhcmRzIHRoZSBzY2FsYXIgcmVtYWlu ZGVyIGVudHJ5LCBjYXVzaW5nIGJyZWFrcG9pbnRzIHRvDQo+ID4gYmUgc2lsZW50bHkgbWlzc2Vk IHdoZW4gb25seSB0aGUgc2NhbGFyIHBhdGggZXhlY3V0ZXMuDQo+ID4NCj4gPiBUaGUgb2xkIGhl dXJpc3RpYyBjb2xsYXBzZXMgYWxsIHNhbWUtYmxvY2sgU0FMcyBmb3IgYSBnaXZlbiBsaW5lIGRv d24gdG8NCj4gPiBhIHNpbmdsZSBicmVha3BvaW50IGxvY2F0aW9uLCB3aGlsZSB0aGUgbmV3IGhl dXJpc3RpYyBwcmVzZXJ2ZXMgYWRkaXRpb25hbA0KPiA+IFNBTHMgd2hlbiB0aGUgaW5zdHJ1Y3Rp b24gcmFuZ2UgYmV0d2VlbiB0aGVtIGVuZHMgd2l0aCBhbiB1bmNvbmRpdGlvbmFsDQo+IGp1bXAN Cj4gPiBvciByZXR1cm4sIGluZGljYXRpbmcgdGhleSBsaWUgb24gZ2VudWluZWx5IGRpc3RpbmN0 LCBub24tZmFsbC10aHJvdWdoIGNvZGUNCj4gPiBwYXRocy4NCj4gPg0KPiA+IFRoZSBmaXggaW50 cm9kdWNlcyByYW5nZV9oYXNfdW5jb25kaXRpb25hbF9mbG93X2NvbnRyb2wsIHdoaWNoIGFuYWx5 emVzDQo+ID4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSBmb3IgdHdvIGNvbmRpdGlvbnMgaW5kaWNh dGluZyBkaXN0aW5jdCBjb2RlIHBhdGhzOg0KPiA+DQo+ID4gMS4gVW5jb25kaXRpb25hbCBleGl0 OiBUaGUgbGFzdCBpbnN0cnVjdGlvbiBiZWZvcmUgdGhlIHNlY29uZCBQQyBpcyBhbg0KPiA+ICAg ICB1bmNvbmRpdGlvbmFsIGptcCBvciByZXQgKGV4ZWN1dGlvbiBjYW5ub3QgZmFsbCB0aHJvdWdo KS4NCj4gPg0KPiA+IDIuIEJhY2t3YXJkIGJyYW5jaDogQW55IGluc3RydWN0aW9uIGluIHRoZSBy YW5nZSBpcyBhIHJlbGF0aXZlIGJyYW5jaA0KPiA+ICAgICB0YXJnZXRpbmcgYmVmb3JlIHRoZSBm aXJzdCBQQyAobG9vcCBiYWNrLWVkZ2UgaW5kaWNhdGluZyBzZXBhcmF0ZQ0KPiA+ICAgICBsb29w IGJvZGllcykuDQo+ID4NCj4gPiBBIG5ldyBnZGJhcmNoIG1ldGhvZCBnZGJhcmNoX2luc25fYnJh bmNoX3RhcmdldCBkZWNvZGVzIHJlbGF0aXZlDQo+IGJyYW5jaA0KPiA+IHRhcmdldHMuIEltcGxl bWVudGVkIGZvciBhbWQ2NCBhbmQgYWFyY2g2NDsgb3RoZXIgYXJjaGl0ZWN0dXJlcyBkZWZhdWx0 DQo+ID4gdG8gY29uc2VydmF0aXZlIGJlaGF2aW9yLCBwcmVzZXJ2aW5nIGJhY2t3YXJkIGNvbXBh dGliaWxpdHkuDQo+ID4NCj4gPiBFeGlzdGluZyBnZGJhcmNoX2luc25faXNfanVtcCBhbmQgZ2Ri YXJjaF9pbnNuX2lzX3JldCBhcmUgbm93IGFsc28NCj4gPiBpbXBsZW1lbnRlZCBmb3IgYWFyY2g2 NCwgZW5hYmxpbmcgdGhlIGhldXJpc3RpYyBvbiB0aGF0IHBsYXRmb3JtIHRvby4NCj4gPiBQcmVk aWNhdGUgZnVuY3Rpb25zIGFyZSBhZGRlZCB0byBhbGxvdyBmb3IgY2hvc2luZyB2aWFiaWxpdHkg b2YgdGhpcyBleHRlbmRlZA0KPiA+IGhldXJpc3RpYy4gIEltcGxlbWVudGVkIG9uIHg4Nl82NCBh bmQgYWFyY2g2NC4NCj4gPg0KPiA+IFRlc3RpbmcgY292ZXJzOg0KPiA+IC0gZm9yX2xvb3BfZW1w dHlfYm9keSAoLU8wKTogMSBsb2NhdGlvbg0KPiA+IC0gZm9yX2xvb3BfbGFyZ2VfYm9keSAoLU8w KTogMSBsb2NhdGlvbg0KPiA+IC0gZm9yX2xvb3BfdmVjdG9yaXplZCAoLU8yKTogPj0gMiBsb2Nh dGlvbnMgd2l0aCBydW50aW1lIHZlcmlmaWNhdGlvbg0KPiA+IC0gbmVzdGVkX3ZlY3Rvcml6ZWRf bG9vcHMgKC1PMik6ID49IDIgbG9jYXRpb25zDQo+ID4gLSBsb29wX3dpdGhfZWFybHlfYnJlYWsg KC1PMik6ID49IDIgb3IgMSBsb2NhdGlvbg0KPiA+IC0gaWZlbHNlX3NlcGFyYXRlX2xpbmVzICgt TzApOiAyIGxvY2F0aW9ucyBvbiB4ODZfNjQvYWFyY2g2NCwgdW5zdXBwb3J0ZWQNCj4gPiAgICBl bHNld2hlcmUNCj4gPiAtIHNldC9zaG93IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBy ZXBvcnRzIG9uL29mZiBhbmQNCj4gPiAgICBhcmNoaXRlY3R1cmUgc3VwcG9ydCBjb3JyZWN0bHkN Cj4gPg0KPiA+IFRlc3RlZCB3aXRoIEdDQyAxMSBhbmQgSUNYIDIwMjUuMiBvbiB4ODZfNjQsIGFu ZCBvbiBhYXJjaDY0IChyYXNwaTUpLg0KPiA+IC0tLQ0KPiA+ICAgZ2RiL05FV1MgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsNCj4gPiAgIGdkYi9hYXJjaDY0LXRk ZXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5MSArKysrKysNCj4gPiAgIGdkYi9h bWQ2NC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1NyArKysrDQo+ID4g ICBnZGIvYXJjaC11dGlscy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKw0K PiA+ICAgZ2RiL2FyY2gtdXRpbHMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsNCj4gPiAgIGdkYi9hcmNoL2FhcmNoNjQtaW5zbi5jICAgICAgICAgICAgICAgICAgICAgICB8 ICAyMyArKw0KPiA+ICAgZ2RiL2FyY2gvYWFyY2g2NC1pbnNuLmggICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsNCj4gPiAgIGdkYi9nZGJhcmNoLWdlbi5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA1OSArKystDQo+ID4gICBnZGIvZ2RiYXJjaC1nZW4uaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTYgKw0KPiA+ICAgZ2RiL2dkYmFyY2hfY29tcG9uZW50cy5weSAg ICAgICAgICAgICAgICAgICAgIHwgIDE4ICsrDQo+ID4gICBnZGIvbGluZXNwZWMuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDggKysrKysrKystDQo+ID4gICAuLi4vZ2RiLmxp bmVzcGVjL2Jsb2NrLWZpbHRlci1jYXNlcy5jICAgICAgICAgfCAxMjYgKysrKysrKysNCj4gPiAg IC4uLi9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmV4cCAgICAgICB8IDI5MSArKysr KysrKysrKysrKysrKysNCj4gPiAgIDEzIGZpbGVzIGNoYW5nZWQsIDg0OCBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQ0KPiA+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUv Z2RiLmxpbmVzcGVjL2Jsb2NrLWZpbHRlci1jYXNlcy5jDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmV4cA0KPiA+ DQo+ID4gZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MNCj4gPiBpbmRleCA4ZjQwY2E1 Y2IxMS4uYjU4N2FjODc3NjMgMTAwNjQ0DQo+ID4gLS0tIGEvZ2RiL05FV1MNCj4gPiArKysgYi9n ZGIvTkVXUw0KPiA+IEBAIC02OCw2ICs2OCwxNyBAQA0KPiA+ICAgICBUaGlzIGZpeGVzIGFuIGlz c3VlIHdoZXJlIEdEQiBjb3VsZCBmYWlsIHRvIGZpbmQgYSB0eXBlIHdoZW4gcmVseWluZw0KPiA+ ICAgICBvbiB0aGUgaW5kZXguICBBbnkgZXhpc3RpbmcgaW5kZXhlcyBzaG91bGQgYmUgcmVnZW5l cmF0ZWQuDQo+ID4NCj4gPiArKiBCcmVha3BvaW50IGxvY2F0aW9uIHJlc29sdXRpb24gaGFzIGJl ZW4gaW1wcm92ZWQgZm9yIHZlY3Rvcml6ZWQgbG9vcHMuDQo+ID4gKyAgUHJldmlvdXNseSwgd2hl biBzZXR0aW5nIGEgYnJlYWtwb2ludCBvbiBhIHNvdXJjZSBsaW5lIHdpdGggdmVjdG9yaXplZA0K PiA+ICsgIGNvZGUgKGF0IC1PMiB3aXRoIC1mdHJlZS12ZWN0b3JpemUpLCBHREIncyBibG9jayBm aWx0ZXIgaGV1cmlzdGljIHdvdWxkDQo+ID4gKyAgZGlzY2FyZCB0aGUgc2NhbGFyIHJlbWFpbmRl ciBsb2NhdGlvbiwgY2F1c2luZyBicmVha3BvaW50cyB0byBiZSBtaXNzZWQNCj4gPiArICB3aGVu IG9ubHkgdGhlIHNjYWxhciBwYXRoIGV4ZWN1dGVkLiBHREIgbm93IGNvcnJlY3RseSBwcmVzZXJ2 ZXMgbXVsdGlwbGUNCj4gPiArICBsb2NhdGlvbnMgZm9yIHZlY3Rvcml6ZWQgYW5kIHNjYWxhciBs b29wIHBhdGhzLCBpbXByb3ZpbmcgZGVidWdnYWJpbGl0eQ0KPiA+ICsgIG9mIG9wdGltaXplZCBj b2RlLiAgVGhpcyBpcyBzdXBwb3J0ZWQgY3VycmVudGx5IG9uIHg4NiBhbmQgYWFyY2g2NC4NCj4g PiArDQo+ID4gKyAgVXNlICJzZXQgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIG9mZiIg dG8gZGlzYWJsZSB0aGUgbmV3DQo+ID4gKyAgaGV1cmlzdGljIG9uIHN1cHBvcnRlZCBwbGF0Zm9y bXMgYW5kIHJldmVydCB0byB0aGUgb3JpZ2luYWwgYmVoYXZpb3IgaWYNCj4gbmVlZGVkLg0KPiA+ ICsNCj4gPiAgICogU3VwcG9ydCBmb3IgRmxvYXRpbmcgUG9pbnQgTW9kZSBSZWdpc3RlciAoRlBN UikgaW4gQUFyY2g2NC4NCj4gPg0KPiA+ICAgKiBXaGVuIHJ1bm5pbmcgb24gdGhlIFdpbmRvd3Mg VGVybWluYWwgY29uc29sZSwgR0RCIG5vdyBzdXBwb3J0cw0KPiA+IGRpZmYgLS1naXQgYS9nZGIv YWFyY2g2NC10ZGVwLmMgYi9nZGIvYWFyY2g2NC10ZGVwLmMNCj4gPiBpbmRleCBhODRkYTFmZDU5 ZS4uNWI0NWVmYmY4YjkgMTAwNjQ0DQo+ID4gLS0tIGEvZ2RiL2FhcmNoNjQtdGRlcC5jDQo+ID4g KysrIGIvZ2RiL2FhcmNoNjQtdGRlcC5jDQo+ID4gQEAgLTQ0MzMsNiArNDQzMyw5MiBAQCBhYXJj aDY0X2luaXRpYWxpemVfc21lX3BzZXVkb19uYW1lcyAoc3RydWN0DQo+IGdkYmFyY2ggKmdkYmFy Y2gsDQo+ID4gICAgICAgfQ0KPiA+ICAgfQ0KPiA+DQo+ID4gKy8qIFJldHVybiB0aGUgc3RhdGlj YWxseS1rbm93biB0YXJnZXQgb2YgYSByZWxhdGl2ZSBicmFuY2ggaW5zdHJ1Y3Rpb24uDQo+ID4g KyAgIEhhbmRsZXMgQiA8aW1tMjY+LCBCLmNvbmQgPGltbTE5PiwgQ0JaL0NCTlogPGltbTE5Piwg VEJaL1RCTloNCj4gPGltbTE0Pi4NCj4gPiArICAgUmV0dXJucyBzdGQ6Om51bGxvcHQgZm9yIGlu ZGlyZWN0IGJyYW5jaGVzIChCUikgb3IgdW5yZWFkYWJsZSBtZW1vcnkuICAqLw0KPiA+ICsNCj4g PiArc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPg0KPiA+ICthYXJjaDY0X2luc25fYnJh bmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKQ0KPiA+ ICt7DQo+ID4gKyAgZ2RiX2J5dGUgYnVmWzRdOw0KPiA+ICsNCj4gPiArICBpZiAodGFyZ2V0X3Jl YWRfbWVtb3J5IChhZGRyLCBidWYsIDQpICE9IDApDQo+ID4gKyAgICByZXR1cm4gc3RkOjpudWxs b3B0Ow0KPiA+ICsNCj4gPiArICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hf Ynl0ZV9vcmRlcl9mb3JfY29kZSAoZ2RiYXJjaCk7DQo+ID4gKyAgdWludDMyX3QgaW5zbiA9IGV4 dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCA0LCBieXRlX29yZGVyKTsNCj4gPiArDQo+ID4g KyAgaW50IGlzX2JsOw0KPiA+ICsgIGludDMyX3Qgb2Zmc2V0Ow0KPiA+ICsNCj4gPiArICAvKiBC IDxpbW0yNj4gKGJ1dCBub3QgQkwsIHdoaWNoIGlzIGEgY2FsbCkuICAqLw0KPiA+ICsgIGlmIChh YXJjaDY0X2RlY29kZV9iIChhZGRyLCBpbnNuLCAmaXNfYmwsICZvZmZzZXQpICYmICFpc19ibCkN Cj4gPiArICAgIHJldHVybiBhZGRyICsgb2Zmc2V0Ow0KPiA+ICsNCj4gPiArICAvKiBCLmNvbmQg PGltbTE5Pi4gICovDQo+ID4gKyAgdW5zaWduZWQgY29uZDsNCj4gPiArICBpZiAoYWFyY2g2NF9k ZWNvZGVfYmNvbmQgKGFkZHIsIGluc24sICZjb25kLCAmb2Zmc2V0KSkNCj4gPiArICAgIHJldHVy biBhZGRyICsgb2Zmc2V0Ow0KPiA+ICsNCj4gPiArICAvKiBDQlovQ0JOWiA8aW1tMTk+LiAgKi8N Cj4gPiArICBpbnQgaXM2NCwgaXNfY2JuejsNCj4gPiArICB1bnNpZ25lZCBybjsNCj4gPiArICBp ZiAoYWFyY2g2NF9kZWNvZGVfY2IgKGFkZHIsIGluc24sICZpczY0LCAmaXNfY2JueiwgJnJuLCAm b2Zmc2V0KSkNCj4gPiArICAgIHJldHVybiBhZGRyICsgb2Zmc2V0Ow0KPiA+ICsNCj4gPiArICAv KiBUQlovVEJOWiA8aW1tMTQ+LiAgKi8NCj4gPiArICBpbnQgaXNfdGJuejsNCj4gPiArICB1bnNp Z25lZCBiaXQsIHJ0Ow0KPiA+ICsgIGlmIChhYXJjaDY0X2RlY29kZV90YiAoYWRkciwgaW5zbiwg JmlzX3RibnosICZiaXQsICZydCwgJm9mZnNldCkpDQo+ID4gKyAgICByZXR1cm4gYWRkciArIG9m ZnNldDsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyogUmV0dXJuIHRydWUgaWYgdGhlIGluc3RydWN0aW9uIGF0IEFERFIgaXMgYW4gdW5j b25kaXRpb25hbCBicmFuY2guDQo+ID4gKyAgIEhhbmRsZXMgZGlyZWN0IEIgPGltbTI2PiBhbmQg aW5kaXJlY3QgQlIgPFhuPi4gICovDQo+ID4gKw0KPiA+ICtzdGF0aWMgYm9vbA0KPiA+ICthYXJj aDY0X2luc25faXNfanVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRy KQ0KPiA+ICt7DQo+ID4gKyAgZ2RiX2J5dGUgYnVmWzRdOw0KPiA+ICsNCj4gPiArICBpZiAodGFy Z2V0X3JlYWRfbWVtb3J5IChhZGRyLCBidWYsIDQpICE9IDApDQo+ID4gKyAgICByZXR1cm4gZmFs c2U7DQo+ID4gKw0KPiA+ICsgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9i eXRlX29yZGVyX2Zvcl9jb2RlIChnZGJhcmNoKTsNCj4gPiArICB1aW50MzJfdCBpbnNuID0gZXh0 cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDQsIGJ5dGVfb3JkZXIpOw0KPiA+ICsNCj4gPiAr ICAvKiBCIDxpbW0yNj4gKGJ1dCBub3QgQkwsIHdoaWNoIGlzIGEgY2FsbCkuICAqLw0KPiA+ICsg IGludCBpc19ibDsNCj4gPiArICBpbnQzMl90IG9mZnNldDsNCj4gPiArICBpZiAoYWFyY2g2NF9k ZWNvZGVfYiAoYWRkciwgaW5zbiwgJmlzX2JsLCAmb2Zmc2V0KSAmJiAhaXNfYmwpDQo+ID4gKyAg ICByZXR1cm4gdHJ1ZTsNCj4gPiArDQo+ID4gKyAgLyogQlIgPFhuPjogYml0c1szMToxMF0gZml4 ZWQsIGJpdHNbOTo1XSA9IFhuLCBiaXRzWzQ6MF0gPSAwLg0KPiA+ICsgICAgIE5vIHNoYXJlZCBk ZWNvZGVyIGV4aXN0cyBmb3IgaW5kaXJlY3QgYnJhbmNoZXMuICAqLw0KPiA+ICsgIGlmICgoaW5z biAmIDB4RkZGRkZDMUYpID09IDB4RDYxRjAwMDApDQo+ID4gKyAgICByZXR1cm4gdHJ1ZTsNCj4g PiArDQo+ID4gKyAgcmV0dXJuIGZhbHNlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBSZXR1cm4g dHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gYXQgQUREUiBpcyBhIHJldHVybi4gICovDQo+ID4gKw0K PiA+ICtzdGF0aWMgYm9vbA0KPiA+ICthYXJjaDY0X2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpDQo+ID4gK3sNCj4gPiArICBnZGJfYnl0ZSBidWZb NF07DQo+ID4gKw0KPiA+ICsgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGFkZHIsIGJ1ZiwgNCkg IT0gMCkNCj4gPiArICAgIHJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gKyAgZW51bSBiZmRfZW5k aWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXJfZm9yX2NvZGUgKGdkYmFyY2gpOw0K PiA+ICsgIHVpbnQzMl90IGluc24gPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgNCwg Ynl0ZV9vcmRlcik7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBhYXJjaDY0X2RlY29kZV9yZXQgKGFk ZHIsIGluc24pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyogSW5pdGlhbGl6ZSB0aGUgY3VycmVu dCBhcmNoaXRlY3R1cmUgYmFzZWQgb24gSU5GTy4gIElmIHBvc3NpYmxlLA0KPiA+ICAgICAgcmV1 c2UgYW4gYXJjaGl0ZWN0dXJlIGZyb20gQVJDSEVTLCB3aGljaCBpcyBhIGxpc3Qgb2YNCj4gPiAg ICAgIGFyY2hpdGVjdHVyZXMgYWxyZWFkeSBjcmVhdGVkIGR1cmluZyB0aGlzIGRlYnVnZ2luZyBz ZXNzaW9uLg0KPiA+IEBAIC00ODYxLDYgKzQ5NDcsMTEgQEAgYWFyY2g2NF9nZGJhcmNoX2luaXQg KHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywNCj4gc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVz KQ0KPiA+ICAgICBzZXRfZ2RiYXJjaF9wcm9ncmFtX2JyZWFrcG9pbnRfaGVyZV9wIChnZGJhcmNo LA0KPiA+DQo+IGFhcmNoNjRfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCk7DQo+ID4NCj4gPiAr ICAvKiBJbnN0cnVjdGlvbiBzdHJlYW0gYW5hbHlzaXMuICAqLw0KPiA+ICsgIHNldF9nZGJhcmNo X2luc25faXNfanVtcCAoZ2RiYXJjaCwgYWFyY2g2NF9pbnNuX2lzX2p1bXApOw0KPiA+ICsgIHNl dF9nZGJhcmNoX2luc25faXNfcmV0IChnZGJhcmNoLCBhYXJjaDY0X2luc25faXNfcmV0KTsNCj4g PiArICBzZXRfZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXQgKGdkYmFyY2gsIGFhcmNoNjRfaW5z bl9icmFuY2hfdGFyZ2V0KTsNCj4gPiArDQo+ID4gICAgIC8qIEFkZCBzb21lIGRlZmF1bHQgcHJl ZGljYXRlcy4gICovDQo+ID4gICAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFy Y2gsICZhYXJjaDY0X3N0dWJfdW53aW5kKTsNCj4gPiAgICAgZHdhcmYyX2FwcGVuZF91bndpbmRl cnMgKGdkYmFyY2gpOw0KPiA+IGRpZmYgLS1naXQgYS9nZGIvYW1kNjQtdGRlcC5jIGIvZ2RiL2Ft ZDY0LXRkZXAuYw0KPiA+IGluZGV4IGE5ODJlNjEwNjQyLi43MjZiYzQ3NTI1NiAxMDA2NDQNCj4g PiAtLS0gYS9nZGIvYW1kNjQtdGRlcC5jDQo+ID4gKysrIGIvZ2RiL2FtZDY0LXRkZXAuYw0KPiA+ IEBAIC0xODIyLDYgKzE4MjIsNjIgQEAgYW1kNjRfaW5zbl9pc19qdW1wIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwNCj4gQ09SRV9BRERSIGFkZHIpDQo+ID4gICAgIHJldHVybiBhbWQ2NF9jbGFz c2lmeV9pbnNuX2F0IChnZGJhcmNoLCBhZGRyLCBhbWQ2NF9qbXBfcCk7DQo+ID4gICB9DQo+ID4N Cj4gPiArLyogUmV0dXJuIHRoZSBzdGF0aWNhbGx5LWtub3duIHRhcmdldCBvZiBhIHJlbGF0aXZl IGJyYW5jaCBpbnN0cnVjdGlvbg0KPiA+ICsgICAoY29uZGl0aW9uYWwgSmNjLCBKTVAsIExPT1As IEpDWFopLiAgUmV0dXJuIHN0ZDo6bnVsbG9wdCBmb3Igbm9uLWJyYW5jaCwNCj4gPiArICAgaW5k aXJlY3QgYnJhbmNoZXMsIG9yIHdoZW4gbWVtb3J5IGNhbm5vdCBiZSByZWFkLiAgKi8NCj4gPiAr DQo+ID4gK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4NCj4gPiArYW1kNjRfaW5zbl9i cmFuY2hfdGFyZ2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpDQo+ ID4gK3sNCj4gPiArICBnZGJfYnl0ZSBidWZbMTZdOw0KPiA+ICsNCj4gPiArICAvKiBSZWFkIGVu b3VnaCBieXRlcyBmb3IgdGhlIGxvbmdlc3QgcmVsYXRpdmUtYnJhbmNoIGVuY29kaW5nLiAgKi8N Cj4gPiArICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyLCBidWYsIHNpemVvZiAoYnVmKSkg IT0gMCkNCj4gPiArICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7DQo+ID4gKw0KPiA+ICsgIC8qIFNr aXAgYSBzaW5nbGUgUkVYIHByZWZpeCBieXRlICgweDQwLTB4NEYpLiAgKi8NCj4gPiArICBpbnQg b2ZmID0gMDsNCj4gPiArICBpZiAoKGJ1ZlswXSAmIDB4ZjApID09IDB4NDApDQo+ID4gKyAgICBv ZmYgPSAxOw0KPiA+ICsNCj4gPiArICBjb25zdCBnZGJfYnl0ZSBvcGMgPSBidWZbb2ZmXTsNCj4g PiArDQo+ID4gKyAgLyogU2hvcnQgY29uZGl0aW9uYWwgSmNjOiA3eCBjYyAgKDIgYnl0ZXMsIHNp Z25lZCA4LWJpdCBkaXNwbGFjZW1lbnQpLiAgKi8NCj4gPiArICBpZiAoKG9wYyAmIDB4ZjApID09 IDB4NzApDQo+ID4gKyAgICByZXR1cm4gYWRkciArIG9mZiArIDIgKyAoTE9OR0VTVCkgKHNpZ25l ZCBjaGFyKSBidWZbb2ZmICsgMV07DQo+ID4gKw0KPiA+ICsgIC8qIFNob3J0IHVuY29uZGl0aW9u YWwgSk1QOiBFQiBjYyAgKDIgYnl0ZXMpLiAgKi8NCj4gPiArICBpZiAob3BjID09IDB4ZWIpDQo+ ID4gKyAgICByZXR1cm4gYWRkciArIG9mZiArIDIgKyAoTE9OR0VTVCkgKHNpZ25lZCBjaGFyKSBi dWZbb2ZmICsgMV07DQo+ID4gKw0KPiA+ICsgIC8qIExPT1AvTE9PUEUvTE9PUE5FOiBFMi9FMS9F MCBjYyAgKDIgYnl0ZXMsIHNpZ25lZCA4LWJpdA0KPiBkaXNwbGFjZW1lbnQpLiAgKi8NCj4gPiAr ICBpZiAoKG9wYyAmIDB4ZmQpID09IDB4ZTApDQo+ID4gKyAgICByZXR1cm4gYWRkciArIG9mZiAr IDIgKyAoTE9OR0VTVCkgKHNpZ25lZCBjaGFyKSBidWZbb2ZmICsgMV07DQo+ID4gKw0KPiA+ICsg IC8qIEpDWFovSkVDWFovSlJDWFo6IEUzIGNjICAoMiBieXRlcywgc2lnbmVkIDgtYml0IGRpc3Bs YWNlbWVudCkuICAqLw0KPiA+ICsgIGlmIChvcGMgPT0gMHhlMykNCj4gPiArICAgIHJldHVybiBh ZGRyICsgb2ZmICsgMiArIChMT05HRVNUKSAoc2lnbmVkIGNoYXIpIGJ1ZltvZmYgKyAxXTsNCj4g PiArDQo+ID4gKyAgLyogTmVhciBjb25kaXRpb25hbCBKY2M6IDBGIDh4IGNjIGNjIGNjIGNjICAo NiBieXRlcywgc2lnbmVkIDMyLWJpdCkuICAqLw0KPiA+ICsgIGlmIChvcGMgPT0gMHgwZiAmJiAo YnVmW29mZiArIDFdICYgMHhmMCkgPT0gMHg4MCkNCj4gPiArICAgIHsNCj4gPiArICAgICAgaW50 MzJfdCBkaXNwOw0KPiA+ICsgICAgICBtZW1jcHkgKCZkaXNwLCBidWYgKyBvZmYgKyAyLCBzaXpl b2YgKGRpc3ApKTsNCj4gPiArICAgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyA2ICsgKExPTkdFU1Qp IGRpc3A7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIC8qIE5lYXIgdW5jb25kaXRpb25hbCBK TVA6IEU5IGNjIGNjIGNjIGNjICAoNSBieXRlcywgc2lnbmVkIDMyLWJpdCkuICAqLw0KPiA+ICsg IGlmIChvcGMgPT0gMHhlOSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgaW50MzJfdCBkaXNwOw0K PiA+ICsgICAgICBtZW1jcHkgKCZkaXNwLCBidWYgKyBvZmYgKyAxLCBzaXplb2YgKGRpc3ApKTsN Cj4gPiArICAgICAgcmV0dXJuIGFkZHIgKyBvZmYgKyA1ICsgKExPTkdFU1QpIGRpc3A7DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgIC8qIEluZGlyZWN0IG9yIGZhciBicmFuY2hlczogdGFyZ2V0 IGNhbm5vdCBiZSBkZXRlcm1pbmVkIHN0YXRpY2FsbHkuICAqLw0KPiA+ICsgIHJldHVybiBzdGQ6 Om51bGxvcHQ7DQo+ID4gK30NCj4gPiArDQo+ID4gICAvKiBGaXggdXAgdGhlIHN0YXRlIG9mIHJl Z2lzdGVycyBhbmQgbWVtb3J5IGFmdGVyIGhhdmluZyBzaW5nbGUtc3RlcHBlZA0KPiA+ICAgICAg YSBkaXNwbGFjZWQgaW5zdHJ1Y3Rpb24uICAqLw0KPiA+DQo+ID4gQEAgLTM2NDMsNiArMzY5OSw3 IEBAIGFtZDY0X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdA0KPiBn ZGJhcmNoICpnZGJhcmNoLA0KPiA+ICAgICBzZXRfZ2RiYXJjaF9pbnNuX2lzX2NhbGwgKGdkYmFy Y2gsIGFtZDY0X2luc25faXNfY2FsbCk7DQo+ID4gICAgIHNldF9nZGJhcmNoX2luc25faXNfcmV0 IChnZGJhcmNoLCBhbWQ2NF9pbnNuX2lzX3JldCk7DQo+ID4gICAgIHNldF9nZGJhcmNoX2luc25f aXNfanVtcCAoZ2RiYXJjaCwgYW1kNjRfaW5zbl9pc19qdW1wKTsNCj4gPiArICBzZXRfZ2RiYXJj aF9pbnNuX2JyYW5jaF90YXJnZXQgKGdkYmFyY2gsIGFtZDY0X2luc25fYnJhbmNoX3RhcmdldCk7 DQo+ID4NCj4gPiAgICAgc2V0X2dkYmFyY2hfaW5faW5kaXJlY3RfYnJhbmNoX3RodW5rIChnZGJh cmNoLA0KPiA+ICAgCQkJCQlhbWQ2NF9pbl9pbmRpcmVjdF9icmFuY2hfdGh1bmspOw0KPiA+IGRp ZmYgLS1naXQgYS9nZGIvYXJjaC11dGlscy5jIGIvZ2RiL2FyY2gtdXRpbHMuYw0KPiA+IGluZGV4 IGU5NTk3ODhiZDNiLi5mNzNkMTU4MWYwOSAxMDA2NDQNCj4gPiAtLS0gYS9nZGIvYXJjaC11dGls cy5jDQo+ID4gKysrIGIvZ2RiL2FyY2gtdXRpbHMuYw0KPiA+IEBAIC00NSw2ICs0NSw4IEBADQo+ ID4NCj4gPiAgICNpbmNsdWRlICJkaXMtYXNtLmgiDQo+ID4NCj4gPiArI2luY2x1ZGUgPG9wdGlv bmFsPg0KPiA+ICsNCj4gPiAgIGJvb2wNCj4gPiAgIGRlZmF1bHRfZGlzcGxhY2VkX3N0ZXBfaHdf c2luZ2xlc3RlcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQo+ID4gICB7DQo+ID4gQEAgLTky Myw2ICs5MjUsMTQgQEAgZGVmYXVsdF9pbnNuX2lzX2p1bXAgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLA0KPiBDT1JFX0FERFIgYWRkcikNCj4gPg0KPiA+ICAgLyogIFNlZSBhcmNoLXV0aWxzLmgu ICAqLw0KPiA+DQo+ID4gK3N0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPg0KPiA+ICtkZWZhdWx0X2lu c25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRy KQ0KPiA+ICt7DQo+ID4gKyAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyogIFNlZSBhcmNoLXV0aWxzLmguICAqLw0KPiA+ICsNCj4gPiAgIGJvb2wNCj4gPiAgIGRl ZmF1bHRfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs DQo+ID4gICAJCQkJICAgQ09SRV9BRERSIGFkZHJlc3MpDQo+ID4gZGlmZiAtLWdpdCBhL2dkYi9h cmNoLXV0aWxzLmggYi9nZGIvYXJjaC11dGlscy5oDQo+ID4gaW5kZXggMDY5MDIwNTAwNDMuLjQ2 ZDlkODllNjY4IDEwMDY0NA0KPiA+IC0tLSBhL2dkYi9hcmNoLXV0aWxzLmgNCj4gPiArKysgYi9n ZGIvYXJjaC11dGlscy5oDQo+ID4gQEAgLTMyNyw2ICszMjcsNyBAQCBleHRlcm4gYm9vbA0KPiBk ZWZhdWx0X3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKiwN Cj4gPiAgIGV4dGVybiBib29sIGRlZmF1bHRfaW5zbl9pc19jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq LCBDT1JFX0FERFIpOw0KPiA+ICAgZXh0ZXJuIGJvb2wgZGVmYXVsdF9pbnNuX2lzX3JldCAoc3Ry dWN0IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsNCj4gPiAgIGV4dGVybiBib29sIGRlZmF1bHRfaW5z bl9pc19qdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqLCBDT1JFX0FERFIpOw0KPiA+ICtleHRlcm4gc3Rk OjpvcHRpb25hbDxDT1JFX0FERFI+IGRlZmF1bHRfaW5zbl9icmFuY2hfdGFyZ2V0IChzdHJ1Y3QN Cj4gZ2RiYXJjaCAqLCBDT1JFX0FERFIpOw0KPiA+DQo+ID4gICAvKiBEZWZhdWx0IGltcGxlbWVu dGF0aW9uIG9mIGdkYmFyY2hfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcC4gICovDQo+ID4gICBl eHRlcm4gYm9vbCBkZWZhdWx0X3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLA0KPiA+IGRpZmYgLS1naXQgYS9nZGIvYXJjaC9hYXJjaDY0LWluc24uYyBi L2dkYi9hcmNoL2FhcmNoNjQtaW5zbi5jDQo+ID4gaW5kZXggZjYwODkwOTJlY2EuLjNhYjI4ZTZk ZDRiIDEwMDY0NA0KPiA+IC0tLSBhL2dkYi9hcmNoL2FhcmNoNjQtaW5zbi5jDQo+ID4gKysrIGIv Z2RiL2FyY2gvYWFyY2g2NC1pbnNuLmMNCj4gPiBAQCAtMjAxLDYgKzIwMSwyOSBAQCBhYXJjaDY0 X2RlY29kZV90YiAoQ09SRV9BRERSIGFkZHIsIHVpbnQzMl90DQo+IGluc24sIGludCAqaXNfdGJu eiwNCj4gPiAgICAgcmV0dXJuIDA7DQo+ID4gICB9DQo+ID4NCj4gPiArLyogRGVjb2RlIGFuIG9w Y29kZSBpZiBpdCByZXByZXNlbnRzIGEgUkVUIGluc3RydWN0aW9uLg0KPiA+ICsNCj4gPiArICAg QUREUiBzcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9wY29kZS4NCj4gPiArICAgSU5TTiBz cGVjaWZpZXMgdGhlIG9wY29kZSB0byB0ZXN0Lg0KPiA+ICsNCj4gPiArICAgUmV0dXJuIDEgaWYg dGhlIG9wY29kZXMgbWF0Y2hlcyBhbmQgaXMgZGVjb2RlZCwgb3RoZXJ3aXNlIDAuICAqLw0KPiA+ ICsNCj4gPiAraW50DQo+ID4gK2FhcmNoNjRfZGVjb2RlX3JldCAoQ09SRV9BRERSIGFkZHIsIHVp bnQzMl90IGluc24pDQo+ID4gK3sNCj4gPiArICAvKiByZXQgYjExMDEgMDExMCAwMTAwIG5ubm4g bjAwMCAwMDAwIDAwMDAgMDAwMCAqLw0KPiA+ICsgIGlmIChkZWNvZGVfbWFza2VkX21hdGNoIChp bnNuLCAweEZGRTBGRkZGLCAweEQ2NDAwMDAwKSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgdW5z aWduZWQgaW50IHJuID0gKGluc24gPj4gMTUpICYgMHgxZjsNCj4gPiArDQo+ID4gKyAgICAgIGFh cmNoNjRfZGVidWdfcHJpbnRmICgiZGVjb2RlOiAweCVzIDB4JXggeCV1IiwNCj4gPiArCQkJICAg IGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHIpLCBpbnNuLA0KPiA+ICsJCQkgICAgcm4pOw0K PiA+ICsgICAgICByZXR1cm4gMTsNCj4gPiArICAgIH0NCj4gPiArICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiAgIC8qIERlY29kZSBhbiBvcGNvZGUgaWYgaXQgcmVwcmVzZW50cyBhbiBM RFIgb3IgTERSU1cgaW5zdHJ1Y3Rpb24gdGFraW5nIGENCj4gPiAgICAgIGxpdGVyYWwgb2Zmc2V0 IGZyb20gdGhlIGN1cnJlbnQgUEMuDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZ2RiL2FyY2gvYWFy Y2g2NC1pbnNuLmggYi9nZGIvYXJjaC9hYXJjaDY0LWluc24uaA0KPiA+IGluZGV4IDQyOGU1M2Mz ODU4Li5hYWZiZTNjMGQ2YiAxMDA2NDQNCj4gPiAtLS0gYS9nZGIvYXJjaC9hYXJjaDY0LWluc24u aA0KPiA+ICsrKyBiL2dkYi9hcmNoL2FhcmNoNjQtaW5zbi5oDQo+ID4gQEAgLTIwMCw2ICsyMDAs OCBAQCBpbnQgYWFyY2g2NF9kZWNvZGVfdGIgKENPUkVfQUREUiBhZGRyLCB1aW50MzJfdA0KPiBp bnNuLCBpbnQgKmlzX3RibnosDQo+ID4gICBpbnQgYWFyY2g2NF9kZWNvZGVfbGRyX2xpdGVyYWwg KENPUkVfQUREUiBhZGRyLCB1aW50MzJfdCBpbnNuLCBpbnQgKmlzX3csDQo+ID4gICAJCQkJaW50 ICppczY0LCB1bnNpZ25lZCAqcnQsIGludDMyX3QgKm9mZnNldCk7DQo+ID4NCj4gPiAraW50IGFh cmNoNjRfZGVjb2RlX3JldCAoQ09SRV9BRERSIGFkZHIsIHVpbnQzMl90IGluc24pOw0KPiA+ICsN Cj4gPiAgIC8qIERhdGEgcGFzc2VkIHRvIGVhY2ggbWV0aG9kIG9mIGFhcmNoNjRfaW5zbl92aXNp dG9yLiAgKi8NCj4gPg0KPiA+ICAgc3RydWN0IGFhcmNoNjRfaW5zbl9kYXRhDQo+ID4gZGlmZiAt LWdpdCBhL2dkYi9nZGJhcmNoLWdlbi5jIGIvZ2RiL2dkYmFyY2gtZ2VuLmMNCj4gPiBpbmRleCBm NDI0ZmEyYTg2ZS4uMWNiYjY0NTlmODcgMTAwNjQ0DQo+ID4gLS0tIGEvZ2RiL2dkYmFyY2gtZ2Vu LmMNCj4gPiArKysgYi9nZGIvZ2RiYXJjaC1nZW4uYw0KPiA+IEBAIC0yMzQsNiArMjM0LDcgQEAg c3RydWN0IGdkYmFyY2gNCj4gPiAgICAgZ2RiYXJjaF9pbnNuX2lzX2NhbGxfZnR5cGUgKmluc25f aXNfY2FsbCA9IGRlZmF1bHRfaW5zbl9pc19jYWxsOw0KPiA+ICAgICBnZGJhcmNoX2luc25faXNf cmV0X2Z0eXBlICppbnNuX2lzX3JldCA9IGRlZmF1bHRfaW5zbl9pc19yZXQ7DQo+ID4gICAgIGdk YmFyY2hfaW5zbl9pc19qdW1wX2Z0eXBlICppbnNuX2lzX2p1bXAgPSBkZWZhdWx0X2luc25faXNf anVtcDsNCj4gPiArICBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldF9mdHlwZSAqaW5zbl9icmFu Y2hfdGFyZ2V0ID0NCj4gZGVmYXVsdF9pbnNuX2JyYW5jaF90YXJnZXQ7DQo+ID4gICAgIGdkYmFy Y2hfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcF9mdHlwZQ0KPiAqcHJvZ3JhbV9icmVha3BvaW50 X2hlcmVfcCA9IGRlZmF1bHRfcHJvZ3JhbV9icmVha3BvaW50X2hlcmVfcDsNCj4gPiAgICAgZ2Ri YXJjaF9hdXh2X3BhcnNlX2Z0eXBlICphdXh2X3BhcnNlID0gbnVsbHB0cjsNCj4gPiAgICAgZ2Ri YXJjaF9wcmludF9hdXh2X2VudHJ5X2Z0eXBlICpwcmludF9hdXh2X2VudHJ5ID0NCj4gZGVmYXVs dF9wcmludF9hdXh2X2VudHJ5Ow0KPiA+IEBAIC00OTIsOCArNDkzLDkgQEAgdmVyaWZ5X2dkYmFy Y2ggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQ0KPiA+ICAgICAvKiBTa2lwIHZlcmlmeSBvZiBj b3JlX2luZm9fcHJvYywgaGFzIHByZWRpY2F0ZS4gICovDQo+ID4gICAgIC8qIFNraXAgdmVyaWZ5 IG9mIHJhdmVuc2Nhcl9vcHMsIGludmFsaWRfcCA9PSAwLiAgKi8NCj4gPiAgICAgLyogU2tpcCB2 ZXJpZnkgb2YgaW5zbl9pc19jYWxsLCBpbnZhbGlkX3AgPT0gMC4gICovDQo+ID4gLSAgLyogU2tp cCB2ZXJpZnkgb2YgaW5zbl9pc19yZXQsIGludmFsaWRfcCA9PSAwLiAgKi8NCj4gPiAtICAvKiBT a2lwIHZlcmlmeSBvZiBpbnNuX2lzX2p1bXAsIGludmFsaWRfcCA9PSAwLiAgKi8NCj4gPiArICAv KiBTa2lwIHZlcmlmeSBvZiBpbnNuX2lzX3JldCwgaGFzIHByZWRpY2F0ZS4gICovDQo+ID4gKyAg LyogU2tpcCB2ZXJpZnkgb2YgaW5zbl9pc19qdW1wLCBoYXMgcHJlZGljYXRlLiAgKi8NCj4gPiAr ICAvKiBTa2lwIHZlcmlmeSBvZiBpbnNuX2JyYW5jaF90YXJnZXQsIGhhcyBwcmVkaWNhdGUuICAq Lw0KPiA+ICAgICAvKiBTa2lwIHZlcmlmeSBvZiBwcm9ncmFtX2JyZWFrcG9pbnRfaGVyZV9wLCBp bnZhbGlkX3AgPT0gMC4gICovDQo+ID4gICAgIC8qIFNraXAgdmVyaWZ5IG9mIGF1eHZfcGFyc2Us IGhhcyBwcmVkaWNhdGUuICAqLw0KPiA+ICAgICAvKiBTa2lwIHZlcmlmeSBvZiBwcmludF9hdXh2 X2VudHJ5LCBpbnZhbGlkX3AgPT0gMC4gICovDQo+ID4gQEAgLTEyNzAsMTIgKzEyNzIsMjQgQEAg Z2RiYXJjaF9kdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gc3RydWN0IHVpX2ZpbGUg KmZpbGUpDQo+ID4gICAgIGdkYl9wcmludGYgKGZpbGUsDQo+ID4gICAJICAgICAgImdkYmFyY2hf ZHVtcDogaW5zbl9pc19jYWxsID0gPCVzPlxuIiwNCj4gPiAgIAkgICAgICBob3N0X2FkZHJlc3Nf dG9fc3RyaW5nIChnZGJhcmNoLT5pbnNuX2lzX2NhbGwpKTsNCj4gPiArICBnZGJfcHJpbnRmIChm aWxlLA0KPiA+ICsJICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9pbnNuX2lzX3JldF9wKCkg PSAlZFxuIiwNCj4gPiArCSAgICAgIGdkYmFyY2hfaW5zbl9pc19yZXRfcCAoZ2RiYXJjaCkpOw0K PiA+ICAgICBnZGJfcHJpbnRmIChmaWxlLA0KPiA+ICAgCSAgICAgICJnZGJhcmNoX2R1bXA6IGlu c25faXNfcmV0ID0gPCVzPlxuIiwNCj4gPiAgIAkgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5n IChnZGJhcmNoLT5pbnNuX2lzX3JldCkpOw0KPiA+ICsgIGdkYl9wcmludGYgKGZpbGUsDQo+ID4g KwkgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX2luc25faXNfanVtcF9wKCkgPSAlZFxuIiwN Cj4gPiArCSAgICAgIGdkYmFyY2hfaW5zbl9pc19qdW1wX3AgKGdkYmFyY2gpKTsNCj4gPiAgICAg Z2RiX3ByaW50ZiAoZmlsZSwNCj4gPiAgIAkgICAgICAiZ2RiYXJjaF9kdW1wOiBpbnNuX2lzX2p1 bXAgPSA8JXM+XG4iLA0KPiA+ICAgCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFy Y2gtPmluc25faXNfanVtcCkpOw0KPiA+ICsgIGdkYl9wcmludGYgKGZpbGUsDQo+ID4gKwkgICAg ICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldF9wKCkgPSAlZFxuIiwN Cj4gPiArCSAgICAgIGdkYmFyY2hfaW5zbl9icmFuY2hfdGFyZ2V0X3AgKGdkYmFyY2gpKTsNCj4g PiArICBnZGJfcHJpbnRmIChmaWxlLA0KPiA+ICsJICAgICAgImdkYmFyY2hfZHVtcDogaW5zbl9i cmFuY2hfdGFyZ2V0ID0gPCVzPlxuIiwNCj4gPiArCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJp bmcgKGdkYmFyY2gtPmluc25fYnJhbmNoX3RhcmdldCkpOw0KPiA+ICAgICBnZGJfcHJpbnRmIChm aWxlLA0KPiA+ICAgCSAgICAgICJnZGJhcmNoX2R1bXA6IHByb2dyYW1fYnJlYWtwb2ludF9oZXJl X3AgPSA8JXM+XG4iLA0KPiA+ICAgCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFy Y2gtPnByb2dyYW1fYnJlYWtwb2ludF9oZXJlX3ApKTsNCj4gPiBAQCAtNDkxNiwxMSArNDkzMCwx OSBAQCBzZXRfZ2RiYXJjaF9pbnNuX2lzX2NhbGwgKHN0cnVjdCBnZGJhcmNoDQo+ICpnZGJhcmNo LA0KPiA+ICAgICBnZGJhcmNoLT5pbnNuX2lzX2NhbGwgPSBpbnNuX2lzX2NhbGw7DQo+ID4gICB9 DQo+ID4NCj4gPiArYm9vbA0KPiA+ICtnZGJhcmNoX2luc25faXNfcmV0X3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQ0KPiA+ICt7DQo+ID4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBudWxs cHRyKTsNCj4gPiArICByZXR1cm4gZ2RiYXJjaC0+aW5zbl9pc19yZXQgIT0gZGVmYXVsdF9pbnNu X2lzX3JldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgIGJvb2wNCj4gPiAgIGdkYmFyY2hfaW5zbl9p c19yZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcikNCj4gPiAgIHsN Cj4gPiAgICAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBudWxscHRyKTsNCj4gPiAgICAgZ2RiX2Fz c2VydCAoZ2RiYXJjaC0+aW5zbl9pc19yZXQgIT0gbnVsbHB0cik7DQo+ID4gKyAgLyogRG8gbm90 IGNoZWNrIHByZWRpY2F0ZTogZ2RiYXJjaC0+aW5zbl9pc19yZXQgIT0gZGVmYXVsdF9pbnNuX2lz X3JldCwNCj4gYWxsb3cgY2FsbC4gICovDQo+ID4gICAgIGlmIChnZGJhcmNoX2RlYnVnID49IDIp DQo+ID4gICAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfaW5zbl9pc19yZXQg Y2FsbGVkXG4iKTsNCj4gPiAgICAgcmV0dXJuIGdkYmFyY2gtPmluc25faXNfcmV0IChnZGJhcmNo LCBhZGRyKTsNCj4gPiBAQCAtNDkzMywxMSArNDk1NSwxOSBAQCBzZXRfZ2RiYXJjaF9pbnNuX2lz X3JldCAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFyY2gsDQo+ID4gICAgIGdkYmFyY2gtPmluc25f aXNfcmV0ID0gaW5zbl9pc19yZXQ7DQo+ID4gICB9DQo+ID4NCj4gPiArYm9vbA0KPiA+ICtnZGJh cmNoX2luc25faXNfanVtcF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkNCj4gPiArew0KPiA+ ICsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gbnVsbHB0cik7DQo+ID4gKyAgcmV0dXJuIGdkYmFy Y2gtPmluc25faXNfanVtcCAhPSBkZWZhdWx0X2luc25faXNfanVtcDsNCj4gPiArfQ0KPiA+ICsN Cj4gPiAgIGJvb2wNCj4gPiAgIGdkYmFyY2hfaW5zbl9pc19qdW1wIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgQ09SRV9BRERSIGFkZHIpDQo+ID4gICB7DQo+ID4gICAgIGdkYl9hc3NlcnQgKGdk YmFyY2ggIT0gbnVsbHB0cik7DQo+ID4gICAgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPmluc25faXNf anVtcCAhPSBudWxscHRyKTsNCj4gPiArICAvKiBEbyBub3QgY2hlY2sgcHJlZGljYXRlOiBnZGJh cmNoLT5pbnNuX2lzX2p1bXAgIT0NCj4gZGVmYXVsdF9pbnNuX2lzX2p1bXAsIGFsbG93IGNhbGwu ICAqLw0KPiA+ICAgICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQ0KPiA+ICAgICAgIGdkYl9wcmlu dGYgKGdkYl9zdGRsb2csICJnZGJhcmNoX2luc25faXNfanVtcCBjYWxsZWRcbiIpOw0KPiA+ICAg ICByZXR1cm4gZ2RiYXJjaC0+aW5zbl9pc19qdW1wIChnZGJhcmNoLCBhZGRyKTsNCj4gPiBAQCAt NDk1MCw2ICs0OTgwLDMxIEBAIHNldF9nZGJhcmNoX2luc25faXNfanVtcCAoc3RydWN0IGdkYmFy Y2gNCj4gKmdkYmFyY2gsDQo+ID4gICAgIGdkYmFyY2gtPmluc25faXNfanVtcCA9IGluc25faXNf anVtcDsNCj4gPiAgIH0NCj4gPg0KPiA+ICtib29sDQo+ID4gK2dkYmFyY2hfaW5zbl9icmFuY2hf dGFyZ2V0X3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQ0KPiA+ICt7DQo+ID4gKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaCAhPSBudWxscHRyKTsNCj4gPiArICByZXR1cm4gZ2RiYXJjaC0+aW5zbl9i cmFuY2hfdGFyZ2V0ICE9IGRlZmF1bHRfaW5zbl9icmFuY2hfdGFyZ2V0Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4NCj4gPiArZ2RiYXJjaF9pbnNuX2JyYW5j aF90YXJnZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcikNCj4gPiAr ew0KPiA+ICsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gbnVsbHB0cik7DQo+ID4gKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaC0+aW5zbl9icmFuY2hfdGFyZ2V0ICE9IG51bGxwdHIpOw0KPiA+ICsgIC8q IERvIG5vdCBjaGVjayBwcmVkaWNhdGU6IGdkYmFyY2gtPmluc25fYnJhbmNoX3RhcmdldCAhPQ0K PiBkZWZhdWx0X2luc25fYnJhbmNoX3RhcmdldCwgYWxsb3cgY2FsbC4gICovDQo+ID4gKyAgaWYg KGdkYmFyY2hfZGVidWcgPj0gMikNCj4gPiArICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csICJn ZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCBjYWxsZWRcbiIpOw0KPiA+ICsgIHJldHVybiBnZGJh cmNoLT5pbnNuX2JyYW5jaF90YXJnZXQgKGdkYmFyY2gsIGFkZHIpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICt2b2lkDQo+ID4gK3NldF9nZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsDQo+ID4gKwkJCQlnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldF9mdHlw ZQ0KPiBpbnNuX2JyYW5jaF90YXJnZXQpDQo+ID4gK3sNCj4gPiArICBnZGJhcmNoLT5pbnNuX2Jy YW5jaF90YXJnZXQgPSBpbnNuX2JyYW5jaF90YXJnZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gICBi b29sDQo+ID4gICBnZGJhcmNoX3Byb2dyYW1fYnJlYWtwb2ludF9oZXJlX3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLA0KPiBDT1JFX0FERFIgYWRkcmVzcykNCj4gPiAgIHsNCj4gPiBkaWZmIC0t Z2l0IGEvZ2RiL2dkYmFyY2gtZ2VuLmggYi9nZGIvZ2RiYXJjaC1nZW4uaA0KPiA+IGluZGV4IDY3 OGIzMDhmYmE1Li42YTZlOWVkNDBmMSAxMDA2NDQNCj4gPiAtLS0gYS9nZGIvZ2RiYXJjaC1nZW4u aA0KPiA+ICsrKyBiL2dkYi9nZGJhcmNoLWdlbi5oDQo+ID4gQEAgLTE1ODIsMTYgKzE1ODIsMzIg QEAgdm9pZCBzZXRfZ2RiYXJjaF9pbnNuX2lzX2NhbGwgKHN0cnVjdCBnZGJhcmNoDQo+ICpnZGJh cmNoLCBnZGJhcmNoX2luc25faXNfY2FsbF9mdHkNCj4gPg0KPiA+ICAgLyogUmV0dXJuIHRydWUg aWYgdGhlIGluc3RydWN0aW9uIGF0IEFERFIgaXMgYSByZXR1cm47IGZhbHNlIG90aGVyd2lzZS4g Ki8NCj4gPg0KPiA+ICtib29sIGdkYmFyY2hfaW5zbl9pc19yZXRfcCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gpOw0KPiA+ICsNCj4gPiAgIHVzaW5nIGdkYmFyY2hfaW5zbl9pc19yZXRfZnR5cGUg PSBib29sIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gQ09SRV9BRERSIGFkZHIpOw0KPiA+ ICAgYm9vbCBnZGJhcmNoX2luc25faXNfcmV0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09S RV9BRERSIGFkZHIpOw0KPiA+ICAgdm9pZCBzZXRfZ2RiYXJjaF9pbnNuX2lzX3JldCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsDQo+IGdkYmFyY2hfaW5zbl9pc19yZXRfZnR5cGUgKmluc25faXNf cmV0KTsNCj4gPg0KPiA+ICAgLyogUmV0dXJuIHRydWUgaWYgdGhlIGluc3RydWN0aW9uIGF0IEFE RFIgaXMgYSBqdW1wOyBmYWxzZSBvdGhlcndpc2UuICovDQo+ID4NCj4gPiArYm9vbCBnZGJhcmNo X2luc25faXNfanVtcF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7DQo+ID4gKw0KPiA+ICAg dXNpbmcgZ2RiYXJjaF9pbnNuX2lzX2p1bXBfZnR5cGUgPSBib29sIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwNCj4gQ09SRV9BRERSIGFkZHIpOw0KPiA+ICAgYm9vbCBnZGJhcmNoX2luc25faXNf anVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBhZGRyKTsNCj4gPiAgIHZv aWQgc2V0X2dkYmFyY2hfaW5zbl9pc19qdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4g Z2RiYXJjaF9pbnNuX2lzX2p1bXBfZnR5cGUgKmluc25faXNfanVtcCk7DQo+ID4NCj4gPiArLyog Rm9yIGEgcmVsYXRpdmUgYnJhbmNoIGluc3RydWN0aW9uIGF0IEFERFIgKGNvbmRpdGlvbmFsIG9y DQo+ID4gKyAgIHVuY29uZGl0aW9uYWwpLCByZXR1cm4gdGhlIHN0YXRpY2FsbHkta25vd24gYnJh bmNoIHRhcmdldCBhZGRyZXNzLg0KPiA+ICsgICBSZXR1cm4gc3RkOjpudWxsb3B0IGZvciBub24t YnJhbmNoIGluc3RydWN0aW9ucywgaW5kaXJlY3QgYnJhbmNoZXMsDQo+ID4gKyAgIG9yIHdoZW4g cmVhZGluZyBtZW1vcnkgZmFpbHMuICBUaGlzIGlzIHVzZWQgdG8gZGV0ZWN0IGJhY2t3YXJkDQo+ ID4gKyAgIGxvb3AgYmFjay1lZGdlcyBkdXJpbmcgRFdBUkYgbGluZS10YWJsZSBhbmFseXNpcy4g Ki8NCj4gPiArDQo+ID4gK2Jvb2wgZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXRfcCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gpOw0KPiA+ICsNCj4gPiArdXNpbmcgZ2RiYXJjaF9pbnNuX2JyYW5j aF90YXJnZXRfZnR5cGUgPSBzdGQ6Om9wdGlvbmFsPENPUkVfQUREUj4NCj4gKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcik7DQo+ID4gK3N0ZDo6b3B0aW9uYWw8Q09SRV9B RERSPiBnZGJhcmNoX2luc25fYnJhbmNoX3RhcmdldCAoc3RydWN0IGdkYmFyY2gNCj4gKmdkYmFy Y2gsIENPUkVfQUREUiBhZGRyKTsNCj4gPiArdm9pZCBzZXRfZ2RiYXJjaF9pbnNuX2JyYW5jaF90 YXJnZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiBnZGJhcmNoX2luc25fYnJhbmNoX3Rh cmdldF9mdHlwZSAqaW5zbl9icmFuY2hfdGFyZ2V0KTsNCj4gPiArDQo+ID4gICAvKiBSZXR1cm4g dHJ1ZSBpZiB0aGVyZSdzIGEgcHJvZ3JhbS9wZXJtYW5lbnQgYnJlYWtwb2ludCBwbGFudGVkIGlu DQo+ID4gICAgICBtZW1vcnkgYXQgQUREUkVTUywgcmV0dXJuIGZhbHNlIG90aGVyd2lzZS4gKi8N Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5IGIvZ2RiL2dk YmFyY2hfY29tcG9uZW50cy5weQ0KPiA+IGluZGV4IGI5MzA0ZDMwMzZkLi5kZjVkZGVmZmZjYiAx MDA2NDQNCj4gPiAtLS0gYS9nZGIvZ2RiYXJjaF9jb21wb25lbnRzLnB5DQo+ID4gKysrIGIvZ2Ri L2dkYmFyY2hfY29tcG9uZW50cy5weQ0KPiA+IEBAIC0yNTA5LDYgKzI1MDksNyBAQCBSZXR1cm4g dHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gYXQgQUREUiBpcyBhIHJldHVybjsNCj4gZmFsc2Ugb3Ro ZXJ3aXNlLg0KPiA+ICAgICAgIHR5cGU9ImJvb2wiLA0KPiA+ICAgICAgIG5hbWU9Imluc25faXNf cmV0IiwNCj4gPiAgICAgICBwYXJhbXM9WygiQ09SRV9BRERSIiwgImFkZHIiKV0sDQo+ID4gKyAg ICBwcmVkaWNhdGU9VHJ1ZSwNCj4gPiAgICAgICBwcmVkZWZhdWx0PSJkZWZhdWx0X2luc25faXNf cmV0IiwNCj4gPiAgICAgICBpbnZhbGlkPUZhbHNlLA0KPiA+ICAgKQ0KPiA+IEBAIC0yNTIwLDEw ICsyNTIxLDI3IEBAIFJldHVybiB0cnVlIGlmIHRoZSBpbnN0cnVjdGlvbiBhdCBBRERSIGlzIGEN Cj4ganVtcDsgZmFsc2Ugb3RoZXJ3aXNlLg0KPiA+ICAgICAgIHR5cGU9ImJvb2wiLA0KPiA+ICAg ICAgIG5hbWU9Imluc25faXNfanVtcCIsDQo+ID4gICAgICAgcGFyYW1zPVsoIkNPUkVfQUREUiIs ICJhZGRyIildLA0KPiA+ICsgICAgcHJlZGljYXRlPVRydWUsDQo+ID4gICAgICAgcHJlZGVmYXVs dD0iZGVmYXVsdF9pbnNuX2lzX2p1bXAiLA0KPiA+ICAgICAgIGludmFsaWQ9RmFsc2UsDQo+ID4g ICApDQo+ID4NCj4gPiArTWV0aG9kKA0KPiA+ICsgICAgY29tbWVudD0iIiINCj4gPiArRm9yIGEg cmVsYXRpdmUgYnJhbmNoIGluc3RydWN0aW9uIGF0IEFERFIgKGNvbmRpdGlvbmFsIG9yDQo+ID4g K3VuY29uZGl0aW9uYWwpLCByZXR1cm4gdGhlIHN0YXRpY2FsbHkta25vd24gYnJhbmNoIHRhcmdl dCBhZGRyZXNzLg0KPiA+ICtSZXR1cm4gc3RkOjpudWxsb3B0IGZvciBub24tYnJhbmNoIGluc3Ry dWN0aW9ucywgaW5kaXJlY3QgYnJhbmNoZXMsDQo+ID4gK29yIHdoZW4gcmVhZGluZyBtZW1vcnkg ZmFpbHMuICBUaGlzIGlzIHVzZWQgdG8gZGV0ZWN0IGJhY2t3YXJkDQo+ID4gK2xvb3AgYmFjay1l ZGdlcyBkdXJpbmcgRFdBUkYgbGluZS10YWJsZSBhbmFseXNpcy4NCj4gPiArIiIiLA0KPiA+ICsg ICAgdHlwZT0ic3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IiwNCj4gPiArICAgIG5hbWU9Imluc25f YnJhbmNoX3RhcmdldCIsDQo+ID4gKyAgICBwYXJhbXM9WygiQ09SRV9BRERSIiwgImFkZHIiKV0s DQo+ID4gKyAgICBwcmVkaWNhdGU9VHJ1ZSwNCj4gPiArICAgIHByZWRlZmF1bHQ9ImRlZmF1bHRf aW5zbl9icmFuY2hfdGFyZ2V0IiwNCj4gPiArICAgIGludmFsaWQ9RmFsc2UsDQo+ID4gKykNCj4g PiArDQo+ID4gICBNZXRob2QoDQo+ID4gICAgICAgY29tbWVudD0iIiINCj4gPiAgIFJldHVybiB0 cnVlIGlmIHRoZXJlJ3MgYSBwcm9ncmFtL3Blcm1hbmVudCBicmVha3BvaW50IHBsYW50ZWQgaW4N Cj4gPiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbmVzcGVjLmMgYi9nZGIvbGluZXNwZWMuYw0KPiA+IGlu ZGV4IGI2NTA1YmEyODNkLi4xOTkyZmM2MmU0YSAxMDA2NDQNCj4gPiAtLS0gYS9nZGIvbGluZXNw ZWMuYw0KPiA+ICsrKyBiL2dkYi9saW5lc3BlYy5jDQo+ID4gQEAgLTQ0LDkgKzQ0LDEyIEBADQo+ ID4gICAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9mdW5jdGlvbi12aWV3LmgiDQo+ID4gICAjaW5jbHVk ZSAiZ2Ric3VwcG9ydC9kZWYtdmVjdG9yLmgiDQo+ID4gICAjaW5jbHVkZSA8YWxnb3JpdGhtPg0K PiA+ICsjaW5jbHVkZSAiZGlzYXNtLmgiDQo+ID4gKyNpbmNsdWRlICJnZGJhcmNoLmgiDQo+ID4g ICAjaW5jbHVkZSAiaW5mZXJpb3IuaCINCj4gPiAgICNpbmNsdWRlICJnZGJzdXBwb3J0L3Vub3Jk ZXJlZF9zZXQuaCINCj4gPiAgICNpbmNsdWRlICJjbGkvY2xpLXN0eWxlLmgiDQo+ID4gKyNpbmNs dWRlICJjbGkvY2xpLWNtZHMuaCINCj4gPg0KPiA+ICAgLyogQW4gZW51bWVyYXRpb24gb2YgdGhl IHZhcmlvdXMgdGhpbmdzIGEgdXNlciBtaWdodCBhdHRlbXB0IHRvDQo+ID4gICAgICBjb21wbGV0 ZSBmb3IgYSBsaW5lc3BlYyBsb2NhdGlvbi4gICovDQo+ID4gQEAgLTQzMiw2ICs0MzUsOSBAQCBz dGF0aWMgYm9vbCBjb21wYXJlX21zeW1ib2xzIChjb25zdA0KPiBib3VuZF9taW5pbWFsX3N5bWJv bCAmYSwNCj4gPiAgICAgIHByZXZpb3VzIHBhcnNlci4gICovDQo+ID4gICBzdGF0aWMgY29uc3Qg Y2hhciBsaW5lc3BlY19xdW90ZV9jaGFyYWN0ZXJzW10gPSAiXCJcJyI7DQo+ID4NCj4gPiArLyog Q29udHJvbCB3aGV0aGVyIHRoZSBleHRlbmRlZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIGVu YWJsZWQuICAqLw0KPiA+ICtzdGF0aWMgYm9vbCBkZWJ1Z19saW5lc3BlY19leHRlbmRlZF9ibG9j a19maWx0ZXIgPSB0cnVlOw0KPiA+ICsNCj4gPiAgIC8qIExleGVyIGZ1bmN0aW9ucy4gICovDQo+ ID4NCj4gPiAgIC8qIExleCBhIG51bWJlciBmcm9tIHRoZSBpbnB1dCBpbiBQQVJTRVIuICBUaGlz IG9ubHkgc3VwcG9ydHMNCj4gPiBAQCAtMTk4Niw2ICsxOTkyLDUyIEBAIGNhbm9uaWNhbGl6ZV9s aW5lc3BlYyAoc3RydWN0IGxpbmVzcGVjX3N0YXRlDQo+ICpzdGF0ZSwgY29uc3QgbGluZXNwZWMg KmxzKQ0KPiA+ICAgICAgIGV4cGxpY2l0X2xvYy0+c2V0X3N0cmluZyAoZXhwbGljaXRfbG9jLT50 b19saW5lc3BlYyAoKSk7DQo+ID4gICB9DQo+ID4NCj4gPiArLyogUmV0dXJuIHRydWUgaWYgUENf VE8gaXMgdW5yZWFjaGFibGUgYnkgZmFsbC10aHJvdWdoIGZyb20gUENfRlJPTS4NCj4gPiArICAg VHdvIGNvbmRpdGlvbnMgYXJlIHN1ZmZpY2llbnQ6ICgxKSBhbnkgcmV0IGluIFtQQ19GUk9NLCBQ Q19UTyksIG9yDQo+ID4gKyAgICgyKSB1bmNvbmRpdGlvbmFsIGp1bXAgaW1tZWRpYXRlbHkgYmVm b3JlIFBDX1RPLiAgT25seSB0aGUgbGFzdA0KPiA+ICsgICBpbnN0cnVjdGlvbiBiZWZvcmUgUENf VE8gbWF0dGVyczsgbWlkLXJhbmdlIGJyYW5jaGVzIGFyZSBpZ25vcmVkIHRvDQo+ID4gKyAgIHBy ZXNlcnZlIGZvci1sb29wIGRlZHVwbGljYXRpb24uICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGJv b2wNCj4gPiArcmFuZ2VfaGFzX3VuY29uZGl0aW9uYWxfZmxvd19jb250cm9sIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwNCj4gPiArCQkJCSAgICAgIENPUkVfQUREUiBwY19mcm9tLCBDT1JFX0FE RFIgcGNfdG8pDQo+ID4gK3sNCj4gPiArICAvKiBSZXR1cm4gdHJ1ZSBpZjogbGFzdCBpbnN0cnVj dGlvbiBiZWZvcmUgUENfVE8gaXMgdW5jb25kaXRpb25hbA0KPiA+ICsgICAgIGptcC9yZXQsIG9y IGFueSBpbnN0cnVjdGlvbiBpbiByYW5nZSBpcyBhIGJhY2t3YXJkIGJyYW5jaA0KPiA+ICsgICAg IChpbmRpY2F0aW5nIHNlcGFyYXRlIGxvb3AgYm9kaWVzKS4gICovDQo+ID4gKw0KPiA+ICsgIENP UkVfQUREUiBwYyA9IHBjX2Zyb207DQo+ID4gKw0KPiA+ICsgIHdoaWxlIChwYyA8IHBjX3RvKQ0K PiA+ICsgICAgew0KPiA+ICsgICAgICB0cnkNCj4gPiArCXsNCj4gPiArCSAgaW50IGxlbiA9IGdk Yl9pbnNuX2xlbmd0aCAoZ2RiYXJjaCwgcGMpOw0KPiA+ICsJICBpZiAobGVuIDw9IDApDQo+ID4g KwkgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCSAgLyogQ2hlY2sgZm9yIGJhY2t3YXJk IGJyYW5jaCAobG9vcCBiYWNrLWVkZ2UpLiAgKi8NCj4gPiArCSAgc3RkOjpvcHRpb25hbDxDT1JF X0FERFI+IHRhcmdldA0KPiA+ICsJICAgID0gZ2RiYXJjaF9pbnNuX2JyYW5jaF90YXJnZXQgKGdk YmFyY2gsIHBjKTsNCj4gPiArCSAgaWYgKHRhcmdldC5oYXNfdmFsdWUgKCkgJiYgdGFyZ2V0LnZh bHVlICgpIDwgcGNfZnJvbSkNCj4gPiArCSAgICByZXR1cm4gdHJ1ZTsNCj4gPiArDQo+ID4gKwkg IC8qIElzIHRoaXMgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gYmVmb3JlIFBDX1RPPyAgKi8NCj4gPiAr CSAgaWYgKHBjICsgbGVuID49IHBjX3RvKQ0KPiA+ICsJICAgIHJldHVybiBnZGJhcmNoX2luc25f aXNfanVtcCAoZ2RiYXJjaCwgcGMpDQo+ID4gKwkgICAgICB8fCBnZGJhcmNoX2luc25faXNfcmV0 IChnZGJhcmNoLCBwYyk7DQo+ID4gKw0KPiA+ICsJICBwYyArPSBsZW47DQo+ID4gKwl9DQo+ID4g KyAgICAgIGNhdGNoIChjb25zdCBnZGJfZXhjZXB0aW9uX2Vycm9yICYpDQo+ID4gKwl7DQo+ID4g KwkgIHJldHVybiBmYWxzZTsNCj4gPiArCX0NCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgcmV0 dXJuIGZhbHNlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyogR2l2ZW4gYSBsaW5lIG9mZnNldCBp biBMUywgY29uc3RydWN0IHRoZSByZWxldmFudCBTQUxzLiAgKi8NCj4gPg0KPiA+ICAgc3RhdGlj IHN0ZDo6dmVjdG9yPHN5bXRhYl9hbmRfbGluZT4NCj4gPiBAQCAtMjA4NCwxMyArMjEzNiwzMyBA QCBjcmVhdGVfc2Fsc19saW5lX29mZnNldCAoc3RydWN0IGxpbmVzcGVjX3N0YXRlDQo+ICpzZWxm LA0KPiA+DQo+ID4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW50ZXJtZWRpYXRlX3Jlc3VsdHMu c2l6ZSAoKTsgKytpKQ0KPiA+ICAgCXsNCj4gPiAtCSAgaWYgKGJsb2Nrc1tpXSAhPSBOVUxMKQ0K PiA+ICsJICBpZiAoYmxvY2tzW2ldICE9IE5VTEwgJiYgZmlsdGVyW2ldKQ0KPiA+ICAgCSAgICBm b3IgKGogPSBpICsgMTsgaiA8IGludGVybWVkaWF0ZV9yZXN1bHRzLnNpemUgKCk7ICsraikNCj4g PiAgIAkgICAgICB7DQo+ID4gLQkJaWYgKGJsb2Nrc1tqXSA9PSBibG9ja3NbaV0pDQo+ID4gKwkJ aWYgKGJsb2Nrc1tqXSA9PSBibG9ja3NbaV0gJiYgZmlsdGVyW2pdKQ0KPiA+ICAgCQkgIHsNCj4g PiArCQkgICAgY29uc3Qgc3ltdGFiX2FuZF9saW5lICZzYWxfaSA9IGludGVybWVkaWF0ZV9yZXN1 bHRzW2ldOw0KPiA+ICsJCSAgICBjb25zdCBzeW10YWJfYW5kX2xpbmUgJnNhbF9qID0gaW50ZXJt ZWRpYXRlX3Jlc3VsdHNbal07DQo+ID4gKw0KPiA+ICsJCSAgICBhdXRvIFtwY19sbywgcGNfaGld ID0gc3RkOjptaW5tYXggKHNhbF9pLnBjLCBzYWxfai5wYyk7DQo+ID4gKw0KPiA+ICsJCSAgICAv KiBXaXRob3V0IHN5bXRhYiBpbmZvLCBkb24ndCBmaWx0ZXIg4oCUIHdlIGNhbid0IHJlbGlhYmx5 DQo+ID4gKwkJICAgICAgIGRldGVybWluZSBpZiB0aGVzZSBhcmUgZGlzdGluY3QgY29kZSBwYXRo cy4gICovDQo+ID4gKwkJICAgIGlmIChzYWxfaS5zeW10YWIgPT0gbnVsbHB0ciB8fCBzYWxfai5z eW10YWIgIT0gc2FsX2kuc3ltdGFiKQ0KPiA+ICsJCSAgICAgIGNvbnRpbnVlOw0KPiA+ICsNCj4g PiArCQkgICAgLyogQ2hlY2sgZm9yIHVuY29uZGl0aW9uYWwgZmxvdyBjb250cm9sIGluIHRoZSBy YW5nZQ0KPiA+ICsJCSAgICAgICAoZXh0ZW5kZWQgaGV1cmlzdGljOyBjYW4gYmUgZGlzYWJsZWQp LiAgTWVtb3J5IHJlYWQNCj4gPiArCQkgICAgICAgZmFpbHVyZXMgYXJlIGhhbmRsZWQgZ3JhY2Vm dWxseSBpbnNpZGUgdGhlIGhlbHBlci4gICovDQo+ID4gKwkJICAgIG9iamZpbGUgKm9maWxlID0g c2FsX2kuc3ltdGFiLT5jb21wdW5pdCAoKS5vYmpmaWxlICgpOw0KPiA+ICsJCSAgICBnZGJhcmNo ICpnZGJhcmNoID0gb2ZpbGUtPmFyY2ggKCk7DQo+ID4gKw0KPiA+ICsJCSAgICBpZiAoZGVidWdf bGluZXNwZWNfZXh0ZW5kZWRfYmxvY2tfZmlsdGVyDQo+ID4gKwkJCSYmIHJhbmdlX2hhc191bmNv bmRpdGlvbmFsX2Zsb3dfY29udHJvbCAoZ2RiYXJjaCwNCj4gPiArCQkJCQkJCQkgcGNfbG8sIHBj X2hpKSkNCj4gPiArCQkgICAgICBjb250aW51ZTsNCj4gPiArDQo+ID4gICAJCSAgICBmaWx0ZXJb al0gPSAwOw0KPiA+IC0JCSAgICBicmVhazsNCj4gPiAgIAkJICB9DQo+ID4gICAJICAgICAgfQ0K PiA+ICAgCX0NCj4gPiBAQCAtNDM0MywzICs0NDE1LDczIEBAIGdldF9nZGJfbGluZXNwZWNfcGFy c2VyX3F1b3RlX2NoYXJhY3RlcnMNCj4gKHZvaWQpDQo+ID4gICB7DQo+ID4gICAgIHJldHVybiBs aW5lc3BlY19xdW90ZV9jaGFyYWN0ZXJzOw0KPiA+ICAgfQ0KPiA+ICsNCj4gPiArLyogUmV0dXJu IHRydWUgaWYgYXJjaGl0ZWN0dXJlIGltcGxlbWVudHMgdGhlDQo+IGluc25faXNfanVtcC9pbnNu X2JyYW5jaF90YXJnZXQNCj4gPiArICAgbWV0aG9kcyBmb3IgdGhlIGV4dGVuZGVkIGJsb2NrLWZp bHRlciBoZXVyaXN0aWMuICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIGJvb2wNCj4gPiArZXh0ZW5k ZWRfYmxvY2tfZmlsdGVyX3N1cHBvcnRlZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpDQo+ID4g K3sNCj4gPiArICByZXR1cm4gKGdkYmFyY2hfaW5zbl9pc19qdW1wX3AgKGdkYmFyY2gpDQo+ID4g KwkgICYmIGdkYmFyY2hfaW5zbl9pc19yZXRfcChnZGJhcmNoKQ0KPiA+ICsJICAmJiBnZGJhcmNo X2luc25fYnJhbmNoX3RhcmdldF9wIChnZGJhcmNoKSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q IENhbGxiYWNrIGZvciAic2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIiLiAgRGlz dGluZ3Vpc2hlcw0KPiA+ICsgICB0aGUgdXNlcidzIHJlcXVlc3RlZCBzZXR0aW5nIGZyb20gd2hl dGhlciBpdCBhY3R1YWxseSBoYXMgYW55DQo+ID4gKyAgIGVmZmVjdCBvbiB0aGUgY3VycmVudCBh cmNoaXRlY3R1cmUuICAqLw0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiArc2hvd19kZWJ1 Z19saW5lc3BlY19leHRlbmRlZF9ibG9ja19maWx0ZXIgKHN0cnVjdCB1aV9maWxlICpmaWxlLA0K PiA+ICsJCQkJCSAgIGludCBmcm9tX3R0eSwNCj4gPiArCQkJCQkgICBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqYywNCj4gPiArCQkJCQkgICBjb25zdCBjaGFyICp2YWx1ZSkNCj4gPiArew0KPiA+ ICsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gY3VycmVudF9pbmZlcmlvciAoKS0+YXJjaCAo KTsNCj4gPiArDQo+ID4gKyAgZ2RiX3ByaW50ZiAoZmlsZSwNCj4gPiArCSAgICAgXygiVGhlIGV4 dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgc2V0IHRvICVzICINCj4gPiArCSAgICAg ICAiKGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciAlczogJXMpLlxuIiksDQo+ID4gKwkgICAgIHZh bHVlLA0KPiA+ICsJICAgICBnZGJhcmNoX2JmZF9hcmNoX2luZm8gKGdkYmFyY2gpLT5wcmludGFi bGVfbmFtZSwNCj4gPiArCSAgICAgZXh0ZW5kZWRfYmxvY2tfZmlsdGVyX3N1cHBvcnRlZCAoZ2Ri YXJjaCkgPyAieWVzIiA6ICJubyIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBDYWxsYmFjayBm b3IgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIiLiAgV2FybiB3aGVuDQo+ID4g KyAgIHR1cm5pbmcgdGhlIHNldHRpbmcgb24gaGFzIG5vIGVmZmVjdCBiZWNhdXNlIHRoZSBjdXJy ZW50DQo+ID4gKyAgIGFyY2hpdGVjdHVyZSBkb2Vzbid0IGltcGxlbWVudCB0aGUgaGV1cmlzdGlj LiAgKi8NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkDQo+ID4gK3NldF9kZWJ1Z19saW5lc3BlY19l eHRlbmRlZF9ibG9ja19maWx0ZXIgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwNCj4g PiArCQkJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQ0KPiA+ICt7DQo+ID4gKyAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBjdXJyZW50X2luZmVyaW9yICgpLT5hcmNoICgpOw0KPiA+ ICsNCj4gPiArICBpZiAoZGVidWdfbGluZXNwZWNfZXh0ZW5kZWRfYmxvY2tfZmlsdGVyDQo+ID4g KyAgICAgICYmICFleHRlbmRlZF9ibG9ja19maWx0ZXJfc3VwcG9ydGVkIChnZGJhcmNoKSkNCj4g PiArICAgIHdhcm5pbmcgKF8oInRoZSBleHRlbmRlZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlz IG5vdCBpbXBsZW1lbnRlZCAiDQo+ID4gKwkgICAgICAiZm9yICVzOyBicmVha3BvaW50IGxvY2F0 aW9uIHJlc29sdXRpb24gd2lsbCBrZWVwIHVzaW5nICINCj4gPiArCSAgICAgICJ0aGUgb3JpZ2lu YWwgaGV1cmlzdGljIiksDQo+ID4gKwkgICAgZ2RiYXJjaF9iZmRfYXJjaF9pbmZvIChnZGJhcmNo KS0+cHJpbnRhYmxlX25hbWUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiBSZWdpc3RlciBsaW5l c3BlYyBkZWJ1Z2dpbmcgY29tbWFuZHMuICAqLw0KPiA+ICsNCj4gPiArSU5JVF9HREJfRklMRSAo bGluZXNwZWMpDQo+ID4gK3sNCj4gPiArICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImxpbmVz cGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIsDQo+ID4gKwkJCSAgIGNsYXNzX3N1cHBvcnQsDQo+ ID4gKwkJCSAgICZkZWJ1Z19saW5lc3BlY19leHRlbmRlZF9ibG9ja19maWx0ZXIsIF8oIlwNCj4g PiArU2V0IHdoZXRoZXIgdGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgZW5h YmxlZC4iKSwgXygiXA0KPiA+ICtTaG93IHdoZXRoZXIgdGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRl ciBoZXVyaXN0aWMgaXMgZW5hYmxlZC4iKSwgXygiXA0KPiA+ICtUaGUgZXh0ZW5kZWQgaGV1cmlz dGljIGltcHJvdmVzIGJyZWFrcG9pbnQgbG9jYXRpb24gcmVzb2x1dGlvbiBmb3JcblwNCj4gPiAr dmVjdG9yaXplZCBsb29wcyBhdCAtTzIuIFdoZW4gb2ZmLCBicmVha3BvaW50cyB1c2Ugb25seSB0 aGUgb3JpZ2luYWxcblwNCj4gPiAraGV1cmlzdGljLCB3aGljaCBtYXkgbWlzcyBsb2NhdGlvbnMg aW4gdmVjdG9yaXplZCBjb2RlLiBPbmx5XG5cDQo+ID4gK2FyY2hpdGVjdHVyZXMgdGhhdCBpbXBs ZW1lbnQgZ2RiYXJjaF9pbnNuX2lzX2p1bXAgb3JcblwNCj4gPiArZ2RiYXJjaF9pbnNuX2JyYW5j aF90YXJnZXQgYWN0dWFsbHkgYXBwbHkgdGhlIGV4dGVuZGVkIGhldXJpc3RpYztcblwNCj4gPiAr b24gb3RoZXJzIHRoaXMgc2V0dGluZyBoYXMgbm8gZWZmZWN0LlxuXA0KPiA+ICtEZWZhdWx0IGlz IG9uLiIpLA0KPiA+ICsJCQkgICBzZXRfZGVidWdfbGluZXNwZWNfZXh0ZW5kZWRfYmxvY2tfZmls dGVyLA0KPiA+ICsJCQkgICBzaG93X2RlYnVnX2xpbmVzcGVjX2V4dGVuZGVkX2Jsb2NrX2ZpbHRl ciwNCj4gPiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7DQo+ID4gK30NCj4gPiBkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVyLWNhc2VzLmMNCj4g Yi9nZGIvdGVzdHN1aXRlL2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMuYw0KPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAuLjhjZjgzNGU5NWY0DQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2Js b2NrLWZpbHRlci1jYXNlcy5jDQo+ID4gQEAgLTAsMCArMSwxMjYgQEANCj4gPiArLyogVGVzdCBj YXNlcyBmb3IgdGhlIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMgaW4gY3JlYXRlX3NhbHNfbGluZV9v ZmZzZXQuDQo+ID4gKw0KPiA+ICsgICBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuDQo+ID4gKw0KPiA+ICsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu DQo+ID4gKw0KPiA+ICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiA+ICsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KPiA+ICsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcg0KPiA+ICsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0K PiA+ICsNCj4gPiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4gKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gPiAr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCj4gPiArDQo+ ID4gKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlDQo+ID4gKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KPiA+ICsNCj4gPiArICAgT25l IGZ1bmN0aW9uIHBlciB0ZXN0ZWQgcGF0dGVybi4gIFRoZSBhY2NvbXBhbnlpbmcgLmV4cCBmaWxl IHZlcmlmaWVzDQo+ID4gKyAgIHRoZSBicmVha3BvaW50IGxvY2F0aW9uIGNvdW50IGZvciBlYWNo IHBhdHRlcm4gYW5kLCB3aGVyZSB2ZWN0b3Jpc2F0aW9uDQo+ID4gKyAgIGlzIHByZXNlbnQsIGNv bmZpcm1zIHRoYXQgYm90aCB0aGUgdmVjdG9yaXplZCBhbmQgc2NhbGFyLXJlbWFpbmRlciBwYXRo cw0KPiA+ICsgICBhcmUgcmVhY2hhYmxlIGF0IHJ1bnRpbWUuDQo+ID4gKw0KPiA+ICsgICBhcmdj ID4gMSAgLT4gIGZvcl9sb29wX3ZlY3Rvcml6ZWQgY2FsbGVkIHdpdGggbj0xMDI0ICAodmVjdG9y aXplZCBwYXRoKQ0KPiA+ICsgICBhcmdjID09IDEgLT4gIGZvcl9sb29wX3ZlY3Rvcml6ZWQgY2Fs bGVkIHdpdGggbj0zICAgICAoc2NhbGFyIHBhdGggb25seSkgICovDQo+ID4gKw0KPiA+ICt2b2xh dGlsZSBpbnQgc2luazsNCj4gPiArDQo+ID4gKy8qIGZvci1sb29wIHdpdGggZW1wdHkgYm9keSAo LU8wKS4gIEV4cGVjdGVkOiAxIGxvY2F0aW9uLiAgKi8NCj4gPiArDQo+ID4gK3ZvaWQgX19hdHRy aWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gPiArZm9yX2xvb3BfZW1wdHlfYm9keSAoaW50IG4pDQo+ ID4gK3sNCj4gPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykge30gIC8qIGVtcHR5LWZv ci1saW5lICovDQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIGZvci1sb29wIHdpdGggbGFyZ2UgYm9k eSAoLU8wKS4gIEV4cGVjdGVkOiAxIGxvY2F0aW9uLiAgKi8NCj4gPiArDQo+ID4gK3ZvaWQgX19h dHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gPiArZm9yX2xvb3BfbGFyZ2VfYm9keSAodm9sYXRp bGUgaW50ICphLCB2b2xhdGlsZSBpbnQgKmIsIHZvbGF0aWxlIGludCAqYywNCj4gPiArCQkgICAg IGludCBuKQ0KPiA+ICt7DQo+ID4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsgIC8q IGxhcmdlLWJvZHktZm9yLWxpbmUgKi8NCj4gPiArICAgIHNpbmsgPSBhW2ldICogMyArIGJbaV07 DQo+ID4gKyAgICBzaW5rID0gc2luayBeIChzaW5rID4+IDUpOw0KPiA+ICsgICAgc2luayArPSBj W2ldICogNyAtIGFbaV07DQo+ID4gKyAgICBzaW5rID0gKHNpbmsgPDwgMykgfCAoc2luayA+PiAy OSk7DQo+ID4gKyAgICBzaW5rICs9IGFbaV0gKyBiW2ldICsgY1tpXTsNCj4gPiArICAgIHNpbmsg PSBzaW5rICogc2luayArIGFbaV07DQo+ID4gKyAgICBzaW5rIF49IGJbaV0gKiBjW2ldOw0KPiA+ ICsgICAgc2luayArPSAoYVtpXSB8IGJbaV0pICYgY1tpXTsNCj4gPiArICAgIHNpbmsgPSBzaW5r IC0gYVtpXSAqIGJbaV07DQo+ID4gKyAgICBzaW5rICs9IGNbaV0gXiAoYVtpXSArIGJbaV0pOw0K PiA+ICsgICAgc2luayArPSBhW2ldICogNSAtIGJbaV0gKiAzOw0KPiA+ICsgICAgc2luayBePSAo c2luayA8PCA3KSB8IChzaW5rID4+IDI1KTsNCj4gPiArICAgIHNpbmsgKz0gY1tpXSAqIGNbaV0g KyBhW2ldOw0KPiA+ICsgICAgc2luayA9IHNpbmsgLyAoYVtpXSArIDEpOw0KPiA+ICsgICAgc2lu ayArPSBiW2ldICogYltpXSAtIGNbaV07DQo+ID4gKyAgICBzaW5rIF49IGFbaV0gXiBiW2ldIF4g Y1tpXTsNCj4gPiArICAgIHNpbmsgKz0gKGFbaV0gKyBiW2ldKSAqIChiW2ldICsgY1tpXSk7DQo+ ID4gKyAgICBzaW5rID0gKHNpbmsgPj4gMykgKyBhW2ldOw0KPiA+ICsgICAgc2luayArPSBjW2ld ICogKGFbaV0gLSBiW2ldKTsNCj4gPiArICAgIHNpbmsgXj0gc2luayA+PiAxOw0KPiA+ICsgIH0N Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyogVmVjdG9yaXplZCBmb3ItbG9vcCAoLU8yKS4gIEV4cGVj dGVkOiA+PSAyIGxvY2F0aW9ucy4gICovDQo+ID4gKw0KPiA+ICt2b2lkIF9fYXR0cmlidXRlX18g KChub2lubGluZSkpDQo+ID4gK2Zvcl9sb29wX3ZlY3Rvcml6ZWQgKGludCAqYXJyLCBpbnQgbikN Cj4gPiArew0KPiA+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQ0KPiA+ICsgICAgYXJy W2ldID0gaSAqIDM7ICAvKiB2ZWMtbG9vcC1saW5lICovDQo+ID4gK30NCj4gPiArDQo+ID4gKy8q IE5lc3RlZCB2ZWN0b3JpemVkIGZvci1sb29wcyAoLU8yKS4gIEV4cGVjdGVkOiA+PSAyIGxvY2F0 aW9ucy4gICovDQo+ID4gKw0KPiA+ICt2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ ID4gK25lc3RlZF92ZWN0b3JpemVkX2xvb3BzIChpbnQgKmFyciwgaW50IG4pDQo+ID4gK3sNCj4g PiArICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gPiArICAgIGZvciAoaW50IGogPSAw OyBqIDwgbjsgaisrKQ0KPiA+ICsgICAgICBhcnJbaSAqIG4gKyBqXSA9IGkgKiBqOyAgLyogbmVz dGVkLXZlYy1saW5lICovDQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIEZvci1sb29wIHdpdGggZWFy bHkgYnJlYWsgKC1PMikuICBFeHBlY3RlZDogPj0gMiBvciAxIGxvY2F0aW9uLiAgKi8NCj4gPiAr DQo+ID4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkNCj4gPiArbG9vcF93aXRoX2Vh cmx5X2JyZWFrIChpbnQgKmFyciwgaW50IG4sIGludCB0YXJnZXQpDQo+ID4gK3sNCj4gPiArICBm b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgew0KPiA+ICsgICAgYXJyW2ldID0gaSAqIDI7ICAv KiBicmVhay1sb29wLWxpbmUgKi8NCj4gPiArICAgIGlmIChhcnJbaV0gPT0gdGFyZ2V0KQ0KPiA+ ICsgICAgICBicmVhazsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qIElmLWVsc2Ug d2l0aCBib3RoIGJyYW5jaGVzIG9uIHNhbWUgbGluZSAoLU8wKS4gIEV4cGVjdGVkOiAyIGxvY2F0 aW9ucy4gICovDQo+ID4gKw0KPiA+ICt2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ ID4gK2lmZWxzZV9zZXBhcmF0ZV9saW5lcyAoaW50IHgsIGludCAqcmVzdWx0KQ0KPiA+ICt7DQo+ ID4gKyAgaWYgKHggPiAwKQ0KPiA+ICsgICAgKnJlc3VsdCA9IHggKiAyOyAgZWxzZSAqcmVzdWx0 ID0gLXg7ICAvKiBpZmVsc2UtbGluZSAqLw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiAraW50 DQo+ID4gK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ID4gK3sNCj4gPiArICBpbnQg YXJyWzEwMjRdOw0KPiA+ICsgIHZvbGF0aWxlIGludCBhWzRdID0gezEsIDIsIDMsIDR9Ow0KPiA+ ICsgIHZvbGF0aWxlIGludCBiWzRdID0gezQsIDMsIDIsIDF9Ow0KPiA+ICsgIHZvbGF0aWxlIGlu dCBjWzRdID0gezEsIDEsIDEsIDF9Ow0KPiA+ICsgIGludCByZXN1bHQgPSAwOw0KPiA+ICsNCj4g PiArICBmb3JfbG9vcF9lbXB0eV9ib2R5ICg0KTsNCj4gPiArICBmb3JfbG9vcF9sYXJnZV9ib2R5 IChhLCBiLCBjLCA0KTsNCj4gPiArICBmb3JfbG9vcF92ZWN0b3JpemVkIChhcnIsIGFyZ2MgPiAx ID8gMTAyNCA6IDMpOw0KPiA+ICsgIG5lc3RlZF92ZWN0b3JpemVkX2xvb3BzIChhcnIsIGFyZ2Mg PiAxID8gMzIgOiAzKTsNCj4gPiArICBsb29wX3dpdGhfZWFybHlfYnJlYWsgKGFyciwgYXJnYyA+ IDEgPyAxMDI0IDogMywgNDIpOw0KPiA+ICsgIGlmZWxzZV9zZXBhcmF0ZV9saW5lcyAoYXJnYyA+ IDEgPyAxMCA6IC01LCAmcmVzdWx0KTsNCj4gPiArDQo+ID4gKyAgcmV0dXJuIDA7DQo+ID4gK30N Cj4gPiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubGluZXNwZWMvYmxvY2stZmlsdGVy LWNhc2VzLmV4cA0KPiBiL2dkYi90ZXN0c3VpdGUvZ2RiLmxpbmVzcGVjL2Jsb2NrLWZpbHRlci1j YXNlcy5leHANCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAw Li4zOWYzNmFkNGEyNw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5saW5lc3BlYy9ibG9jay1maWx0ZXItY2FzZXMuZXhwDQo+ID4gQEAgLTAsMCArMSwyOTEg QEANCj4gPiArIyBDb3B5cmlnaHQgKEMpIDIwMjYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuDQo+ID4gKw0KPiA+ICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQo+ID4gKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gPiAr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcg0KPiA+ICsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQo+ ID4gKyMNCj4gPiArIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwNCj4gPiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiA+ICsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCj4gPiArIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KPiA+ICsjDQo+ID4g KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UNCj4gPiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCj4gPiArIw0KPiA+ICsjIFZlcmlmeSB0 aGUgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBhZ2FpbnN0IGtub3duIHBhdHRlcm5zLiAgVGhlIGNv bXBpbGVyIGlzDQo+ID4gKyMgc2VsZWN0ZWQgYnkgdGhlIGJvYXJkIGZpbGU7IHRoaXMgdGVzdCB1 c2VzIGNvbnNpc3RlbnQgZXhwZWN0YXRpb25zIGFjcm9zcw0KPiA+ICsjIGNvbXBpbGVycyAoR0ND LCBJQ1gsIGV0Yy4pLg0KPiA+ICsNCj4gPiArc3RhbmRhcmRfdGVzdGZpbGUNCj4gPiArDQo+ID4g K2lmIHsgW2J1aWxkX2V4ZWN1dGFibGUgImZhaWxlZCB0byBwcmVwYXJlIChPMCkiIFwNCj4gPiAr ICAgICAgIiR7dGVzdGZpbGV9LU8wIiAke3NyY2ZpbGV9IHsgZGVidWcgb3B0aW1pemU9LU8wIH1d IH0gew0KPiA+ICsgICAgcmV0dXJuIC0xDQo+ID4gK30NCj4gPiArDQo+ID4gK2lmIHsgW2J1aWxk X2V4ZWN1dGFibGUgImZhaWxlZCB0byBwcmVwYXJlIChPMikiIFwNCj4gPiArICAgICAgIiR7dGVz dGZpbGV9LU8yIiAke3NyY2ZpbGV9IFwNCj4gPiArICAgICAgeyBkZWJ1ZyBvcHRpbWl6ZT0tTzIg YWRkaXRpb25hbF9mbGFncz0tZnRyZWUtdmVjdG9yaXplIH1dIH0gew0KPiA+ICsgICAgcmV0dXJu IC0xDQo+ID4gK30NCj4gPiArDQo+ID4gKyMgUmV0cmlldmUgYWxsIHRhcmdldCBsaW5lIG51bWJl cnMgZnJvbSB0aGUgc2luZ2xlIHNoYXJlZCBzb3VyY2UgZmlsZS4NCj4gPiArc2V0IGxpbmVfZW1w dHlfZm9yICAgICAgW2dkYl9nZXRfbGluZV9udW1iZXIgImVtcHR5LWZvci1saW5lIiAke3NyY2Zp bGV9XQ0KPiA+ICtzZXQgbGluZV9sYXJnZV9ib2R5X2ZvciBbZ2RiX2dldF9saW5lX251bWJlciAi bGFyZ2UtYm9keS1mb3ItbGluZSINCj4gJHtzcmNmaWxlfV0NCj4gPiArc2V0IGxpbmVfdmVjX2xv b3AgICAgICAgW2dkYl9nZXRfbGluZV9udW1iZXIgInZlYy1sb29wLWxpbmUiICR7c3JjZmlsZX1d DQo+ID4gK3NldCBsaW5lX25lc3RlZF92ZWMgICAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJuZXN0 ZWQtdmVjLWxpbmUiICR7c3JjZmlsZX1dDQo+ID4gK3NldCBsaW5lX2JyZWFrX2xvb3AgICAgIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1sb29wLWxpbmUiICR7c3JjZmlsZX1dDQo+ID4gK3Nl dCBsaW5lX2lmZWxzZSAgICAgICAgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpZmVsc2UtbGluZSIg JHtzcmNmaWxlfV0NCj4gPiArDQo+ID4gKyMgUmV0dXJuIHRydWUgaWYgdGhlIGV4dGVuZGVkIGJs b2NrLWZpbHRlciBoZXVyaXN0aWMgaXMgYWN0dWFsbHkNCj4gPiArIyBpbXBsZW1lbnRlZCBmb3Ig dGhlIGN1cnJlbnQgYXJjaGl0ZWN0dXJlLg0KPiA+ICtwcm9jIGJsb2NrX2ZpbHRlcl9hcmNoX3N1 cHBvcnRlZCB7IH0gew0KPiA+ICsgICAgZ2xvYmFsIGdkYl9wcm9tcHQNCj4gPiArICAgIHNldCBz dXBwb3J0ZWQgLTENCj4gPiArICAgIGdkYl90ZXN0X211bHRpcGxlICJzaG93IGxpbmVzcGVjLWV4 dGVuZGVkLWJsb2NrLWZpbHRlciIgXA0KPiA+ICsJInF1ZXJ5IGV4dGVuZGVkIGJsb2NrLWZpbHRl ciBhcmNoaXRlY3R1cmUgc3VwcG9ydCIgew0KPiA+ICsJLXJlIC13cmFwICJhcmNoaXRlY3R1cmUg c3VwcG9ydCBmb3IgXFteXHJcblxdKzogeWVzXFwpXFwuIiB7DQo+ID4gKwkgICAgc2V0IHN1cHBv cnRlZCAxDQo+ID4gKwkgICAgcGFzcyAkZ2RiX3Rlc3RfbmFtZQ0KPiA+ICsJfQ0KPiA+ICsJLXJl IC13cmFwICJhcmNoaXRlY3R1cmUgc3VwcG9ydCBmb3IgXFteXHJcblxdKzogbm9cXClcXC4iIHsN Cj4gPiArCSAgICBzZXQgc3VwcG9ydGVkIDANCj4gPiArCSAgICBwYXNzICRnZGJfdGVzdF9uYW1l DQo+ID4gKwl9DQo+ID4gKyAgICB9DQo+ID4gKyAgICByZXR1cm4gJHN1cHBvcnRlZA0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsjIFR1cm4gdGhlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciBoZXVyaXN0aWMg b24uDQo+ID4gK3Byb2MgZW5hYmxlX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciB7IGRlc2MgfSB7DQo+ ID4gKyAgICBnZGJfdGVzdCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvbiIg XA0KPiA+ICsJIih3YXJuaW5nOiB0aGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJpc3RpYyBp cyBub3QgaW1wbGVtZW50ZWRcDQo+ID4gKwkgZm9yIFxbXlxyXG5cXSs7IGJyZWFrcG9pbnQgbG9j YXRpb24gcmVzb2x1dGlvbiB3aWxsIGtlZXAgdXNpbmdcDQo+ID4gKwkgdGhlIG9yaWdpbmFsIGhl dXJpc3RpYyk/IiBcDQo+ID4gKwkkZGVzYw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsjIFNldCBicmVh a3BvaW50IGFuZCByZXR1cm4gaG93IG1hbnkgbG9jYXRpb25zIGl0IHJlc29sdmVzIHRvLg0KPiA+ ICtwcm9jIGJwX25sb2NzIHsgc3JjZmlsZSBsaW5lIGRlc2MgfSB7DQo+ID4gKyAgICBzZXQgbmxv Y3MgLTENCj4gPiArICAgIGdkYl90ZXN0X211bHRpcGxlICJicmVhayAke3NyY2ZpbGV9OiR7bGlu ZX0iICRkZXNjIHsNCj4gPiArCS1yZSAtd3JhcCAiQnJlYWtwb2ludCBcWzAtOVxdKyBhdCAuKlxc KChcWzAtOVxdKykgbG9jYXRpb25zXFwpLioiIHsNCj4gPiArCSAgICBzZXQgbmxvY3MgJGV4cGVj dF9vdXQoMSxzdHJpbmcpDQo+ID4gKwkgICAgcGFzcyAkZGVzYw0KPiA+ICsJfQ0KPiA+ICsJLXJl IC13cmFwICJCcmVha3BvaW50IFxbMC05XF0rIGF0IC4qIiB7DQo+ID4gKwkgICAgc2V0IG5sb2Nz IDENCj4gPiArCSAgICBwYXNzICRkZXNjDQo+ID4gKwl9DQo+ID4gKyAgICB9DQo+ID4gKyAgICBy ZXR1cm4gJG5sb2NzDQo+ID4gK30NCj4gPiArDQo+ID4gK2NsZWFuX3Jlc3RhcnQgIiR7dGVzdGZp bGV9LU8wIg0KPiA+ICsNCj4gPiArIyBWZXJpZnkgdGhlIGxpbmVzcGVjLWV4dGVuZGVkLWJsb2Nr LWZpbHRlciBzZXR0aW5nIGV4aXN0cyBhbmQgd29ya3MuDQo+ID4gK2dkYl90ZXN0ICJzaG93IGxp bmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIgXA0KPiA+ICsgICAgIlRoZSBleHRlbmRlZCBi bG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIHNldCB0byBvblwNCj4gPiArICAgICBcXChhcmNoaXRl Y3R1cmUgc3VwcG9ydCBmb3IgXFteXHJcblxdKzogKHllc3xubylcXClcXC4iIFwNCj4gPiArICAg ICJzaG93IGRlZmF1bHQgbGluZXNwZWMtZXh0ZW5kZWQtYmxvY2stZmlsdGVyIChvbikiDQo+ID4g Kw0KPiA+ICtnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1m aWx0ZXIgb2ZmIiBcDQo+ID4gKyAgICAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRl ciBvZmYiDQo+ID4gKw0KPiA+ICtnZGJfdGVzdCAic2hvdyBsaW5lc3BlYy1leHRlbmRlZC1ibG9j ay1maWx0ZXIiIFwNCj4gPiArICAgICJUaGUgZXh0ZW5kZWQgYmxvY2stZmlsdGVyIGhldXJpc3Rp YyBpcyBzZXQgdG8gb2ZmXA0KPiA+ICsgICAgIFxcKGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciBc W15cclxuXF0rOiAoeWVzfG5vKVxcKVxcLiIgXA0KPiA+ICsgICAgInNob3cgbGluZXNwZWMtZXh0 ZW5kZWQtYmxvY2stZmlsdGVyIChvZmYpIg0KPiA+ICsNCj4gPiArIyBSZS1lbmFibGU6IG9uIGEg c3VwcG9ydGVkIGFyY2ggdGhpcyBtdXN0IGJlIHNpbGVudDsgb24gYW4gdW5zdXBwb3J0ZWQNCj4g PiArIyBhcmNoIHByaW50cyBhbiBpbmZvcm1hdGlvbmFsIHdhcm5pbmcuDQo+ID4gK2lmIHsgW2Js b2NrX2ZpbHRlcl9hcmNoX3N1cHBvcnRlZF0gfSB7DQo+ID4gKyAgICBnZGJfdGVzdF9ub19vdXRw dXQgInNldCBsaW5lc3BlYy1leHRlbmRlZC1ibG9jay1maWx0ZXIgb24iIFwNCj4gPiArCSJzZXQg b24gcHJvZHVjZXMgbm8gd2FybmluZyBvbiBzdXBwb3J0ZWQgYXJjaCINCj4gPiArfSBlbHNlIHsN Cj4gPiArICAgIGVuYWJsZV9leHRlbmRlZF9ibG9ja19maWx0ZXIgInNldCBsaW5lc3BlYy1leHRl bmRlZC1ibG9jay1maWx0ZXIgb24iDQo+ID4gK30NCj4gPiArDQo+ID4gK2dkYl90ZXN0ICJzaG93 IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciIgXA0KPiA+ICsgICAgIlRoZSBleHRlbmRl ZCBibG9jay1maWx0ZXIgaGV1cmlzdGljIGlzIHNldCB0byBvblwNCj4gPiArICAgICBcXChhcmNo aXRlY3R1cmUgc3VwcG9ydCBmb3IgXFteXHJcblxdKzogKHllc3xubylcXClcXC4iIFwNCj4gPiAr ICAgICJzaG93IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciByZS1lbmFibGVkIg0KPiA+ ICsNCj4gPiArd2l0aF90ZXN0X3ByZWZpeCAiZm9yLWxvb3AgZW1wdHkgYm9keSAoLU8wKSIgew0K PiA+ICsgICAgc2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9lbXB0eV9mb3J9 ICJzZXQgYnJlYWtwb2ludCJdDQo+ID4gKw0KPiA+ICsgICAgaWYgeyAkbmxvY3MgPT0gMSB9IHsN Cj4gPiArCXBhc3MgIjEgYnJlYWtwb2ludCBsb2NhdGlvbiAoY29ycmVjdCkiDQo+ID4gKyAgICB9 IGVsc2Ugew0KPiA+ICsJZmFpbCAiZXhwZWN0ZWQgMSBsb2NhdGlvbiwgZ290ICRubG9jcyINCj4g PiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gPiArfQ0KPiA+ ICsNCj4gPiArd2l0aF90ZXN0X3ByZWZpeCAiZm9yLWxvb3AgZXhjZWVkaW5nIHNjYW4gbGltaXQg KC1PMCkiIHsNCj4gPiArICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVf bGFyZ2VfYm9keV9mb3J9ICJzZXQgYnJlYWtwb2ludCJdDQo+ID4gKw0KPiA+ICsgICAgaWYgeyAk bmxvY3MgPT0gMSB9IHsNCj4gPiArCXBhc3MgIjEgYnJlYWtwb2ludCBsb2NhdGlvbiAoY29ycmVj dCkiDQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsJZmFpbCAiZXhwZWN0ZWQgMSBsb2NhdGlvbiwg Z290ICRubG9jcyINCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBkZWxldGVfYnJlYWtwb2lu dHMNCj4gPiArfQ0KPiA+ICsNCj4gPiArd2l0aF90ZXN0X3ByZWZpeCAiaWYtZWxzZSBzZXBhcmF0 ZSBsaW5lcyAoLU8wKSIgew0KPiA+ICsgICAgc2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2ZpbGV9 ICR7bGluZV9pZmVsc2V9ICJzZXQgYnJlYWtwb2ludCJdDQo+ID4gKw0KPiA+ICsgICAgaWYgeyAk bmxvY3MgPCAyIH0gew0KPiA+ICsJaWYgeyBbYmxvY2tfZmlsdGVyX2FyY2hfc3VwcG9ydGVkXSB9 IHsNCj4gPiArCSAgICBmYWlsICJleHBlY3RlZCAyIGxvY2F0aW9ucywgZ290ICRubG9jcyINCj4g PiArCX0gZWxzZSB7DQo+ID4gKwkgICAgdW5zdXBwb3J0ZWQgImN1cnJlbnQgYXJjaCBsYWNrcyBp bnNuX2lzX2p1bXAgc3VwcG9ydFwNCj4gPiArCQkJIGZvciB0aGUgZXh0ZW5kZWQgYmxvY2sgZmls dGVyIg0KPiA+ICsJfQ0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArCXBhc3MgIiRubG9jcyBsb2Nh dGlvbnMgKGlmLWVsc2UgYnJhbmNoZXMgb24gc2FtZSBsaW5lLCBkaWZmZXJlbnQgYmxvY2tzKSIN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gPiArfQ0K PiA+ICsNCj4gPiArY2xlYW5fcmVzdGFydCAiJHt0ZXN0ZmlsZX0tTzIiDQo+ID4gKw0KPiA+ICt3 aXRoX3Rlc3RfcHJlZml4ICJmb3ItbG9vcCB2ZWN0b3JpemVkICgtTzIpIiB7DQo+ID4gKyAgICBz ZXQgbmxvY3MgW2JwX25sb2NzICR7c3JjZmlsZX0gJHtsaW5lX3ZlY19sb29wfSAic2V0IGJyZWFr cG9pbnQiXQ0KPiA+ICsNCj4gPiArICAgIGlmIHsgJG5sb2NzIDwgMiB9IHsNCj4gPiArCXVuc3Vw cG9ydGVkICJjb21waWxlciBkaWQgbm90IHByb2R1Y2UgbXVsdGlwbGUgbG9jYXRpb25zO1wNCj4g PiArCQkgICAgIHZlY3Rvcml6YXRpb24gbWF5IG5vdCBoYXZlIGZpcmVkIg0KPiA+ICsgICAgfSBl bHNlIHsNCj4gPiArCXBhc3MgIiRubG9jcyBsb2NhdGlvbnMgcHJlc2VydmVkICh2ZWN0b3JpemVk ICsgc2NhbGFyIHBhdGhzKSINCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBkZWxldGVfYnJl YWtwb2ludHMNCj4gPiArfQ0KPiA+ICsNCj4gPiArd2l0aF90ZXN0X3ByZWZpeCAibmVzdGVkIHZl Y3Rvcml6ZWQgbG9vcHMgKC1PMikiIHsNCj4gPiArICAgIHNldCBubG9jcyBbYnBfbmxvY3MgJHtz cmNmaWxlfSAke2xpbmVfbmVzdGVkX3ZlY30gInNldCBicmVha3BvaW50Il0NCj4gPiArDQo+ID4g KyAgICBpZiB7ICRubG9jcyA8IDIgfSB7DQo+ID4gKwl1bnN1cHBvcnRlZCAiY29tcGlsZXIgZGlk IG5vdCBwcm9kdWNlIG11bHRpcGxlIGxvY2F0aW9ucztcDQo+ID4gKwkJICAgICBuZXN0ZWQgdmVj dG9yaXphdGlvbiBtYXkgbm90IGhhdmUgZmlyZWQiDQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsJ cGFzcyAiJG5sb2NzIGxvY2F0aW9ucyBwcmVzZXJ2ZWQgKG5lc3RlZCBwYXRocykiDQo+ID4gKyAg ICB9DQo+ID4gKw0KPiA+ICsgICAgZGVsZXRlX2JyZWFrcG9pbnRzDQo+ID4gK30NCj4gPiArDQo+ ID4gK3dpdGhfdGVzdF9wcmVmaXggImxvb3Agd2l0aCBlYXJseSBicmVhayAoLU8yKSIgew0KPiA+ ICsgICAgc2V0IG5sb2NzIFticF9ubG9jcyAke3NyY2ZpbGV9ICR7bGluZV9icmVha19sb29wfSAi c2V0IGJyZWFrcG9pbnQiXQ0KPiA+ICsNCj4gPiArICAgIGlmIHsgJG5sb2NzID49IDIgfSB7DQo+ ID4gKwlwYXNzICIkbmxvY3MgbG9jYXRpb25zIHByZXNlcnZlZCAobm9ybWFsIGFuZCBicmVhayBw YXRocykiDQo+ID4gKyAgICB9IGVsc2Ugew0KPiA+ICsJcGFzcyAiJG5sb2NzIGxvY2F0aW9uIChi cmVhayBwYXRoIG5vdCBzZXBhcmF0ZWx5IGNvbXBpbGVkKSINCj4gPiArICAgIH0NCj4gPiArDQo+ ID4gKyAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gPiArfQ0KPiA+ICsNCj4gPiArd2l0aF90ZXN0 X3ByZWZpeCAiZm9yLWxvb3AgdmVjdG9yaXplZCBydW50aW1lICgtTzIpIiB7DQo+ID4gKyAgICBj bGVhbl9yZXN0YXJ0ICIke3Rlc3RmaWxlfS1PMiINCj4gPiArDQo+ID4gKyAgICBzZXQgbmxvY3Mg W2JwX25sb2NzICR7c3JjZmlsZX0gJHtsaW5lX3ZlY19sb29wfSAic2V0IGJyZWFrcG9pbnQgKHBy b2JlKSJdDQo+ID4gKyAgICBkZWxldGVfYnJlYWtwb2ludHMNCj4gPiArDQo+ID4gKyAgICBpZiB7 ICRubG9jcyA8IDIgfSB7DQo+ID4gKwl1bnN1cHBvcnRlZCAib25seSAxIGxvY2F0aW9uOyBza2lw IHJlYWNoYWJpbGl0eSB0ZXN0Ig0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArCXdpdGhfdGVzdF9w cmVmaXggInNjYWxhciAobj0zKSIgew0KPiA+ICsJICAgIGlmIHsgIVtydW50b19tYWluXSB9IHsN Cj4gPiArCQlyZXR1cm4gLTENCj4gPiArCSAgICB9DQo+ID4gKw0KPiA+ICsJICAgIGdkYl90ZXN0 ICJicmVhayAke3NyY2ZpbGV9OiR7bGluZV92ZWNfbG9vcH0iIFwNCj4gPiArCQkiQnJlYWtwb2lu dCAuKiBhdCAuKiIgXA0KPiA+ICsJCSJzZXQgYnJlYWtwb2ludCINCj4gPiArDQo+ID4gKwkgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcDQo+ID4gKwkJIkJyZWFrcG9pbnQgLiosIGZvcl9sb29wX3Zl Y3Rvcml6ZWQgLioiIFwNCj4gPiArCQkiaGl0IGJyZWFrcG9pbnQgb24gc2NhbGFyIHBhdGgiDQo+ ID4gKw0KPiA+ICsJICAgIGRlbGV0ZV9icmVha3BvaW50cw0KPiA+ICsJICAgIGdkYl90ZXN0ICJj b250aW51ZSIgIi4qZXhpdGVkIG5vcm1hbGx5LioiICJwcm9ncmFtIGV4aXRzIGNsZWFubHkiDQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJY2xlYW5fcmVzdGFydCAiJHt0ZXN0ZmlsZX0tTzIiDQo+ID4g KwlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzIGZvbyIgInNldCBhcmdzIGZvciB2ZWN0b3Jp emVkIHJ1biINCj4gPiArDQo+ID4gKwlpZiB7ICFbcnVudG9fbWFpbl0gfSB7DQo+ID4gKwkgICAg cmV0dXJuIC0xDQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJd2l0aF90ZXN0X3ByZWZpeCAidmVjdG9y aXplZCAobj0xMDI0KSIgew0KPiA+ICsJICAgIGdkYl90ZXN0ICJicmVhayAke3NyY2ZpbGV9OiR7 bGluZV92ZWNfbG9vcH0iIFwNCj4gPiArCQkiQnJlYWtwb2ludCAuKiBhdCAuKiIgXA0KPiA+ICsJ CSJzZXQgYnJlYWtwb2ludCINCj4gPiArDQo+ID4gKwkgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBc DQo+ID4gKwkJIkJyZWFrcG9pbnQgLiosIGZvcl9sb29wX3ZlY3Rvcml6ZWQgLioiIFwNCj4gPiAr CQkiaGl0IGJyZWFrcG9pbnQgb24gdmVjdG9yaXplZCBwYXRoIg0KPiA+ICsNCj4gPiArCSAgICBk ZWxldGVfYnJlYWtwb2ludHMNCj4gPiArCSAgICBnZGJfdGVzdCAiY29udGludWUiICIuKmV4aXRl ZCBub3JtYWxseS4qIiAicHJvZ3JhbSBleGl0cyBjbGVhbmx5Ig0KPiA+ICsJfQ0KPiA+ICsgICAg fQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICt3aXRoX3Rlc3RfcHJlZml4ICJzZXR0aW5nIHRvZ2dsZSBh ZmZlY3RzIHJlc29sdXRpb24iIHsNCj4gPiArICAgIGNsZWFuX3Jlc3RhcnQgIiR7dGVzdGZpbGV9 LU8wIg0KPiA+ICsNCj4gPiArICAgICMgVGVzdCB3aXRoIGV4dGVuZGVkIGZpbHRlciBPTiAoZGVm YXVsdCkuDQo+ID4gKyAgICBlbmFibGVfZXh0ZW5kZWRfYmxvY2tfZmlsdGVyICJlbmFibGUgZXh0 ZW5kZWQgYmxvY2stZmlsdGVyIg0KPiA+ICsNCj4gPiArICAgIHNldCBubG9jc19vbiBbYnBfbmxv Y3MgJHtzcmNmaWxlfSAke2xpbmVfaWZlbHNlfSBcDQo+ID4gKwkic2V0IGJyZWFrcG9pbnQgb24g aWYtZWxzZSBsaW5lIHdpdGggZmlsdGVyIE9OIl0NCj4gPiArICAgIGRlbGV0ZV9icmVha3BvaW50 cw0KPiA+ICsNCj4gPiArICAgIGlmIHsgJG5sb2NzX29uIDwgMiB9IHsNCj4gPiArCWlmIHsgW2Js b2NrX2ZpbHRlcl9hcmNoX3N1cHBvcnRlZF0gfSB7DQo+ID4gKwkgICAgZmFpbCAiZXhwZWN0ZWQg MiBsb2NhdGlvbnMgd2l0aCBleHRlbmRlZCBmaWx0ZXIgT04sIGdvdCAkbmxvY3Nfb24iDQo+ID4g Kwl9IGVsc2Ugew0KPiA+ICsJICAgIHVuc3VwcG9ydGVkICJjdXJyZW50IGFyY2ggbGFja3Mgc3Vw cG9ydFwNCj4gPiArCQkJIGZvciB0aGUgZXh0ZW5kZWQgYmxvY2sgZmlsdGVyOyBza2lwcGluZyB0 b2dnbGUgY2hlY2tzIg0KPiA+ICsJfQ0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArCXBhc3MgImlm LWVsc2Ugd2l0aCBleHRlbmRlZCBmaWx0ZXIgT046ICRubG9jc19vbiBsb2NhdGlvbnMiDQo+ID4g Kw0KPiA+ICsJIyBUZXN0IHdpdGggZXh0ZW5kZWQgZmlsdGVyIE9GRi4NCj4gPiArCWdkYl90ZXN0 X25vX291dHB1dCAic2V0IGxpbmVzcGVjLWV4dGVuZGVkLWJsb2NrLWZpbHRlciBvZmYiIFwNCj4g PiArCSAgICAiZGlzYWJsZSBleHRlbmRlZCBibG9jay1maWx0ZXIiDQo+ID4gKw0KPiA+ICsJc2V0 IG5sb2NzX29mZiBbYnBfbmxvY3MgJHtzcmNmaWxlfSAke2xpbmVfaWZlbHNlfSBcDQo+ID4gKwkg ICAgInNldCBicmVha3BvaW50IG9uIGlmLWVsc2UgbGluZSB3aXRoIGZpbHRlciBPRkYiXQ0KPiA+ ICsJZGVsZXRlX2JyZWFrcG9pbnRzDQo+ID4gKw0KPiA+ICsJaWYgeyAkbmxvY3Nfb2ZmID09IDEg fSB7DQo+ID4gKwkgICAgcGFzcyAiaWYtZWxzZSB3aXRoIGV4dGVuZGVkIGZpbHRlciBPRkY6IDEg bG9jYXRpb24iDQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJICAgIGZhaWwgImV4cGVjdGVkIDEgbG9j YXRpb24gd2l0aCBleHRlbmRlZCBmaWx0ZXIgT0ZGLCBnb3QgJG5sb2NzX29mZiINCj4gPiArCX0N Cj4gPiArDQo+ID4gKwkjIFZlcmlmeSB0b2dnbGluZyBpdCBiYWNrIE9OIHJlc3RvcmVzIHRoZSB0 d28gbG9jYXRpb25zLg0KPiA+ICsJZW5hYmxlX2V4dGVuZGVkX2Jsb2NrX2ZpbHRlciAicmUtZW5h YmxlIGV4dGVuZGVkIGJsb2NrLWZpbHRlciINCj4gPiArDQo+ID4gKwlzZXQgbmxvY3Nfb25fYWdh aW4gW2JwX25sb2NzICR7c3JjZmlsZX0gJHtsaW5lX2lmZWxzZX0gXA0KPiA+ICsJICAgICJzZXQg YnJlYWtwb2ludCBvbiBpZi1lbHNlIGxpbmUgd2l0aCBmaWx0ZXIgcmUtZW5hYmxlZCJdDQo+ID4g KwlkZWxldGVfYnJlYWtwb2ludHMNCj4gPiArDQo+ID4gKwlpZiB7ICRubG9jc19vbl9hZ2FpbiA9 PSAkbmxvY3Nfb24gfSB7DQo+ID4gKwkgICAgcGFzcyAiaWYtZWxzZSB3aXRoIGV4dGVuZGVkIGZp bHRlciByZS1lbmFibGVkOiAkbmxvY3Nfb25fYWdhaW4NCj4gbG9jYXRpb25zICh2ZXJpZmllZCki DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJICAgIGZhaWwgImV4cGVjdGVkICRubG9jc19vbiBsb2Nh dGlvbnMgYWZ0ZXIgcmUtZW5hYmxpbmcsIGdvdA0KPiAkbmxvY3Nfb25fYWdhaW4iDQo+ID4gKwl9 DQo+ID4gKyAgICB9DQo+ID4gK30NCj4gPg0KPiA+DQo+ID4NCj4gPiBJbnRlbCBEZXV0c2NobGFu ZCBHbWJIDQo+ID4NCj4gPiBSZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hlciBTdHJhw59lIDEs IDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55DQo+ID4gVGVsOiArNDkgODkgOTkxIDQzMCwgd3d3 LmludGVsLmRlIDwvL3d3dy5pbnRlbC5kZT4NCj4gPiBNYW5hZ2luZyBEaXJlY3RvcnM6IEhhcnJ5 IERlbWFzLCBKZWZmcmV5IFNjaG5laWRlcm1hbiwgWWluIENob25nIFNvcnJlbGwNCj4gPiBDaGFp cnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUNCj4gPiBSZWdpc3Rl cmVkIFNlYXQ6IE11bmljaA0KPiA+IENvbW1lcmNpYWwgUmVnaXN0ZXI6IEFtdHNnZXJpY2h0IE3D vG5jaGVuIEhSQiAxODY5MjgNCj4gPg0KPiANCj4gUmV2aWV3ZWQtQnk6IEx1aXMgTWFjaGFkbyA8 bHVpcy5tYWNoYWRvLmZvc3NAZ21haS5jb20+DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIIA0KDQpSZWdpc3RlcmVkIEFkZHJl c3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55IA0KDQpU ZWw6ICs0OSAoODkpIDk5MTQzLTAgDQoNCnd3dy5pbnRlbC5kZSANCg0KTWFuYWdpbmcgRGlyZWN0 b3JzOiBDYW5kaWNlIE1vb3JlLCBKZWZmcmV5IFNjaG5laWRlcm1hbiwgUmFtYWNoYW5kcmFuIFNp dGFyYW1hbg0KDQpDaGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IFNvbmphIFBp ZXJlcg0KDQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaCBDb21tZXJjaWFsIFJlZ2lzdGVyIEI6IEFt dHNnZXJpY2h0IE11bmljaCBIUkIgMTg2OTI4DQoNClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNo bWVudHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcg0KdGhlIHNvbGUgdXNl IG9mIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9u DQpieSBvdGhlcnMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGFyZSBub3QgdGhlIGlu dGVuZGVkDQpyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBh bGwgY29waWVzLgo=