From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ETyaBY7lCmolQwUAWB0awg (envelope-from ) for ; Mon, 18 May 2026 06:10:22 -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=UOF8pVPz; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 0DC661E090; Mon, 18 May 2026 06:10:22 -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_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 24CCF1E062 for ; Mon, 18 May 2026 06:10:19 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4A0274BA23D4 for ; Mon, 18 May 2026 10:10:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4A0274BA23D4 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=UOF8pVPz Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by sourceware.org (Postfix) with ESMTPS id 30D234B99F66 for ; Mon, 18 May 2026 10:06:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 30D234B99F66 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 30D234B99F66 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=198.175.65.13 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1779098784; cv=fail; b=kOTr7rbqwHEqIxEWsaLvrL2OGqWscNSb0u4iV5A6Rgn/lMqbfMFkmjBOdS7uki8cllFLLZyiYRMWv/GQM1dQ5B7OZgl5Dn2L5gdVyhKvWed29L/OkQKfr/Ygibk/R3K9Hv62Pa5DvXHgVEjYqyTyWId4uT/80fitKXTt32cKnuM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1779098784; c=relaxed/simple; bh=YiJ/5i4L6d9FmfS9M2EUNNVOMVaU0wB9Bns3mtsCVm4=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=mnCvL/yqP852h/gK+MxzQuk0AmfgHo+qMQgRYQ3AaBUsnISoutrPjbWn5dp7Cabls1OOZauWPWMIoHTip5VkY44YfHbxiCVB2/j4oBtGLTU105C7nIfLx9ynJmJWaI/OgxeshFfajQdDs02VqKPTA3iHjpi3M7qrYdIUK8UvzKU= 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=UOF8pVPz DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 30D234B99F66 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1779098785; x=1810634785; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=YiJ/5i4L6d9FmfS9M2EUNNVOMVaU0wB9Bns3mtsCVm4=; b=UOF8pVPzUpjDYlm87lff8IoqYsRLIe8LqDzwrs1OhQXe3PvAZwjG5DYD TtcDyrTAYT8w++6l/PhQxHDXpJPH03nKf72s8ElGZV8KX1bXU+gaQywhw a1H72AmaXbtInTHQltcfB6zoSrbXTIkhi1z/XDpYiGSXce+VNFKU3PLUC 5r28dub1ts7bwWZ/BcWilSgPj8m6dRr9c6VEAbYo0m0oezSjcGgUJybPf QsZWlg1kW0HYfYqfEqCIzPk+RupXP7vsMxTROztAtWFwsWiY41Hs8DnDN cH4uAZHZmFwXCAKTMUVvNJnREjBjJ/C4GLIWE5dPE1gBorSKs61v9Odv4 g==; X-CSE-ConnectionGUID: uLO7lFdTRSivjzhV9ukzuw== X-CSE-MsgGUID: YFwzTcHhTDCemT7S4SOybg== X-IronPort-AV: E=McAfee;i="6800,10657,11789"; a="91052134" X-IronPort-AV: E=Sophos;i="6.23,241,1770624000"; d="scan'208";a="91052134" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2026 03:06:24 -0700 X-CSE-ConnectionGUID: hxBQrTWWR5aWzYX/ctf5aw== X-CSE-MsgGUID: DyBpd7rPSLKHqOp5rQt6kQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,241,1770624000"; d="scan'208";a="243381093" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa003.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2026 03:06:23 -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, 18 May 2026 03:06:22 -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, 18 May 2026 03:06:22 -0700 Received: from BN8PR05CU002.outbound.protection.outlook.com (52.101.57.28) 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, 18 May 2026 03:06:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SbBWSuSyDyMH6tratcW4PKjBrf23XW4U6/Foq4Ox5Osw8ZpxV3XG3DCrRgH8Z/bTqYgpyW5pMRHapSFkIRcLG4wifmLoR/eJJnixGM7HxCrddpR+lT2zn7BQYz4a+JcrMmpD/BPR4fa6cuQJtpoYnSqu/LzjFspViRtt6Cl6yc3gxa6lIAcG3Q5LXB5ZpfAeH8WqzrTSlmsR7Cg+oQXQaVETaNRM8xSvWNI+bMrSGyUxFqyPc0YO80rdcljOrq6YMfzMZVLzAYXRUfBu4TubtZFBVanlO+ODIDsm+xlOvK4jlyM6EVUMA5M8ZFy6trtuFF1osTYK0u1FV0fM70gYXQ== 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=7jPjTC+OG1vHKf8WEzl0WwtxKCcMwGmZUFYgsSoSJbk=; b=Id7iiwcMctbrPUc/i1dWX54gG12kiicqjFoUrbNJiJ+tw0/Wy/yNgfUjWB/G8ZTPEtWLuuPQbQgGGZKc9OYLgoA+nuZ/EXF6t3obiPIHFsEag5b63zqyr2esF4hnuOIiaBgXnVPEAJtwZKVCeaWw7R1M0axHHdOaOkihJDiIW/hB+0AAFslYzRuREPjXI/6n/cPGrI8NBDFraT5kZNFVNSGKVNRivPK/95wN5kgoW8MlfV4lNnazJNjzsKhBIrJ3F20rY2G6Ob1z1Y7+aAiUN9duRtvt6CVzMMx1/dOlYNw7/GTSR/l8VxbY13wywR3qoJiVvAztOGaqG2vz9OBZlw== 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 PH0PR11MB7636.namprd11.prod.outlook.com (2603:10b6:510:26f::13) by BN9PR11MB5273.namprd11.prod.outlook.com (2603:10b6:408:132::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.25.24; Mon, 18 May 2026 10:06:19 +0000 Received: from PH0PR11MB7636.namprd11.prod.outlook.com ([fe80::d611:6fa9:bc34:46b]) by PH0PR11MB7636.namprd11.prod.outlook.com ([fe80::d611:6fa9:bc34:46b%3]) with mapi id 15.21.0025.020; Mon, 18 May 2026 10:06:19 +0000 From: "Schimpe, Christina" To: Thiago Jung Bauermann CC: "gdb-patches@sourceware.org" Subject: RE: [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace. Thread-Topic: [PATCH v2 6/9] gdb: Add command option 'bt -shadow' to print the shadow stack backtrace. Thread-Index: AQHc4b/kHCybfNzbT0an0BJJI182u7YK4MWg Date: Mon, 18 May 2026 10:06:19 +0000 Message-ID: References: <20260123080532.878738-1-christina.schimpe@intel.com> <20260123080532.878738-7-christina.schimpe@intel.com> <874ikd1exb.fsf@linaro.org> In-Reply-To: <874ikd1exb.fsf@linaro.org> 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: PH0PR11MB7636:EE_|BN9PR11MB5273:EE_ x-ms-office365-filtering-correlation-id: 38eadc82-1348-49f9-8aa8-08deb4c51b83 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700021|4143699003|11063799003|18002099003|22082099003|56012099003; x-microsoft-antispam-message-info: wIRgiLBwnCYjJA8vkOHWC32+1/gNLzyQvNf9erNyJvCWknBQzQXtNsbnllOxGrYSz1fhM2WEEOLU7nLcdYTo696QWnUutvvlmVjadCTikTJRZ2M+DUD2shdELJO+Sd2Y4QpgQUJdSJw8jWOwtm7HKi0DTVt8diJ5lKONiBwa9BbnclsKZUFaz4gRtjU8WgZ+SJUHHVLQhEvYGojBVjLT7wnAJ3jgPhfyX/DnWz5Bj6faxETYR4qWLqwutoPsPGc5xKjXPOS1uXzD5WYzNLpQ/H8Vvt0TFgPJ9KVUMjVu1z8j8Zd9vr/PVGYy4Qg6WtQ1HjZAD/vm6onefZTyeVTvhbDz9sivEsomSR1Duaf8IWPF1apEwLN55EK0fiEDXgZJtq6ZOKY71o9qAFyRNun6QZzwIj9mg/p9k6dDUDQxv9Fom6Wn5cLmyR6ZjEgrQXkdJC4ZRS6Mu8g3U5OMq0ojMouIJhpBaRJ1AikQmLrFu1Sdqd/NKGEOnQIoAbDy9PeRNj77HgFBzFx+mFz79/yYV3Kf+wdtWedu32AMzVar4SUaMq1liavxhNBPvFMa2AwwMYKNNJTBJp9gy6baPgRm3QXG1CHQhF/Yd2NM4fRpoGYddwOHsCUoppKhzM7GZ+OIAPmfQhOEKI3zOisx0cX1lqJHDPn9Rixy6YxIS7ApnLgDH0ad4em4K5aXqx4oPsuYEVEz5Mpdh7KddWp4p7MCHw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR11MB7636.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(4143699003)(11063799003)(18002099003)(22082099003)(56012099003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RmRXNGw2SUtFOGpSUjQwMm0ybGxGOEg0SEtLb2tNVWk5VTJDSFBOOVE2d0R2?= =?utf-8?B?dS9HNHBPTDNhbDBpQW9FSHVaNWJTZkVDN3dLakxYWUw4b0pyMHZQa21iWVdG?= =?utf-8?B?UTI4YVJ5VExmU1UwSUYzQytXUzVLNW5FM3BsOWhuQlJzUHVXaUFMTXYzTkNS?= =?utf-8?B?TlhiOFhpSW8wRHlIbEw4Tms5Z3YxUHBucjdla2RqVmd4bTFKNThJUUIvY3dX?= =?utf-8?B?VVFodEc3RGFyZDk0TER4YmNEeDhuQ3lkaEVoSkhhaGRhOHNDM0pxMFhmNHNP?= =?utf-8?B?SjJKQ1NubS9PZzVIejY3Sk5pcG1DdGs1OXpsYTVTYXpkcVJwS3l3MUxIMjcv?= =?utf-8?B?cndCNFhqNGxzVU1JL0htOEQvWk9iM1BPWXVCK3RmS0lzQXU5eVVwUmRObXRQ?= =?utf-8?B?c3lTTFYyUlBYQjFsMk1zVGV2OEpNL0ZUcDRLenExTnZFSVZjd3M1WnNGVnhS?= =?utf-8?B?UjBzTlU0b2M2SEJ6N0diQmw1UDJOODNmK3lodDZDNGVqUzJYVGx1MVEweGVu?= =?utf-8?B?UUZEZGVCZmxGWGdhVUpjZjh0Yy9pcU1ubGo1Y001akhhZmtGaWo4NGVYWnBn?= =?utf-8?B?MXQzTDNtWHZVckZIRXNkSTByYzMzZTc2dXBHVDRkWHRVYVljdEFwcU0zcjhB?= =?utf-8?B?VjliN3pINWhCTzkrY1FlR01lWmQ1T1R0c0FvZDdDa29JQk9SK0NWSXExZHB1?= =?utf-8?B?N1pyajZ4MjJsRWZoQ0tWZXpJZFlhUG1teGh3dUo2S3lmblRvL2JBWW9lRE84?= =?utf-8?B?U2JUak1hY0JXRkhPdERzNEQxbDF3RURTbEpMbVNXWWRIUC9sK0hkbDVTRDFN?= =?utf-8?B?NCtqQVZOV01ENmF5YTh5STN5Q2VGMUZETUEwb05yWUtUQ0UrenBVcy81S3h5?= =?utf-8?B?NEhKRjhOWENQdWd3aHJISEd1R2hXczZQZGxETEtSd1VmcVdiS243Q2J4YnRw?= =?utf-8?B?RDQzdyswZkd3U0txZmJzWFdLYjliY1FERHJrSU03anQ1VStiRVowMFZoSlFz?= =?utf-8?B?WGFJNzJSaWg4d3VUN3h6N1p2czRLcUJ0a0JtVEhHbU5lY3JBOUFIUW9rUW11?= =?utf-8?B?bElHMkhqdEY5bGFsZEtnVUE4Y01kblpSMHpSVzBobFhMckZibE1hOGI3di9v?= =?utf-8?B?L0lRUkppeERyaG90Mmt5cFo1OVl3eWRmRkVZdmlSMjVwdkpTbXdqS2xUSjdO?= =?utf-8?B?MCt1ei9WQXEwVFBaK3QzaUNxV01UcXRxME9RZkFHQ0dSQ3Q3M2Fyb3ByS2U4?= =?utf-8?B?YWw3bExkNTBQcVFocXg3OXNwTGcrdG55Z1E2TlFDQjI5NW4yaWFIaHdiY1FE?= =?utf-8?B?WE53eGM3OUlsYU0wMUxwKzZMbmNucEY3QUpLbE1POHJLOGVTRzFrR0JxTnRN?= =?utf-8?B?OFoxWEY1T2FLWWhuY0U4UmlUL2ZINVNLMkxobmtRTXMzUkxSSDNsdEwrYzFr?= =?utf-8?B?YmsyUFVmL3FXeHc4aDRXMjRTU1hEdzR2dkRLMUdZczVocWF6M0JaNUtiRUxk?= =?utf-8?B?NFI3MllTOUxBb2lPaTdMeVY1cGJ4ZWo1eFloZzRmNjFyWVdZSDhycUd0RW1Z?= =?utf-8?B?YVB4UGhMbXZQNU8ycWJWb2hqZDk0c0RyYUMvbFV5UG13Q1dGWlJiMStuVkJ2?= =?utf-8?B?QUNpaGxYbWk2NjlYa3dZd0FqSTNNNmwwcmVRUTc0OVE4M1liVmt1bVhkZzNP?= =?utf-8?B?SEJhOFZDQ3dMY3M4SmdmVTN3dk90Nk5Bb2JSU2JzOE9GVmtabnc3NXNQdHJ4?= =?utf-8?B?Y3laa1ZteVUvcHo3SEg2Z2dRVHdXVmx5SVZqaWJ3NlNrZVZjN2swcHZIYTAr?= =?utf-8?B?bHR1bWhFT2Y0cUxKSEhTTU9TU0NjMlZjZlE3UTYxM1N1L1BaN2lIVlB2aytv?= =?utf-8?B?SEZvOHFOVWNmazllOVkzNWozNmpTeFlXMlF3dmswd1R3R21KblprTGsxaHds?= =?utf-8?B?aSt1VmFOS3RFazNwb24wa3VrRHFMcVMvQmJ0LysrYnJXZ3NWVkprdXNxUEU3?= =?utf-8?B?NlZvK0RVOTZDd0l4SWNQTnBidUJKVkVnS1BkOXVPTWU0STlSOERmbUVSeGlD?= =?utf-8?B?N25TQmp2NTdHVTJ5SFN3ZHQvS01BZ2hYbTE2bHhFRjR5MGtITHlVR3ZYQjUr?= =?utf-8?B?TTBvTSsvdVpKUUN2ckUzNmlVSkpIaHRSclEvdjNrWkJ6bFFxM3g5SFg5ZHJt?= =?utf-8?B?TFhUOE9mSnUzb1c0QmdrRGx1ZEpvWUxZemFiR1VTMzUyMnBVaFQyay9YZWJY?= =?utf-8?B?Q3YwWmpsNGJ4SzFTZk1HVW9ZZDNmeWpVY3dYdWlab2FweWNJTkpLVk4vaFdL?= =?utf-8?B?WlFIeEtDSythZ0E3NDJQbm9aV1ZUdzFHa2h2NndIT1hPVyt2dWpmUT09?= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: EN8Tu34DkmI+9jEHIgUjtUNgKC+xQRifrfVYH+D22yfXqh2K6phlXufULUVADXJQzDQfrK4RNsEkudpf/vhKxTfTVCvZEzSXKVz6p1IHLgEE6q3ewLR+txVQvruRg0nFyp2+/jJOCaB7KZh0lPH6AUj+JNaE1wcgV5B4YGuH+YPOIB7YreXeQF0vqh5zWmCLbhQalHtnShgTAsGAeBHdAlZ1GBMLld8GCPKcmz9dZbMUKULaLppnqqCDM7WhD2KRdewClWy+sVUACM4n0lzFcMQGPPIyeraGykg0Z+sy2QyLy+FF2FwaQ9kqBQSQrjNWNRurgNp9Cq87CcbKqbcbgA== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB7636.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38eadc82-1348-49f9-8aa8-08deb4c51b83 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 May 2026 10:06:19.5910 (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: SBsFIDXd9MhnYYCe1zv2CSbzJVEbBoOVwpT32eZ+fmUowbH1ttk05Vj/+PN2wi9nn7dw+emEZhPI/Tr4tv7TlajEY81RhQqH8cYQo55ePJ8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5273 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 SGkgVGhpYWdvLCANCg0KVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3LCBwbGVhc2UgZmluZCBteSBm ZWVkYmFjayBiZWxvdy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBU aGlhZ28gSnVuZyBCYXVlcm1hbm4gPHRoaWFnby5iYXVlcm1hbm5AbGluYXJvLm9yZz4NCj4gU2Vu dDogRGllbnN0YWcsIDEyLiBNYWkgMjAyNiAwNTozMg0KPiBUbzogU2NoaW1wZSwgQ2hyaXN0aW5h IDxjaHJpc3RpbmEuc2NoaW1wZUBpbnRlbC5jb20+DQo+IENjOiBnZGItcGF0Y2hlc0Bzb3VyY2V3 YXJlLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDYvOV0gZ2RiOiBBZGQgY29tbWFuZCBv cHRpb24gJ2J0IC1zaGFkb3cnIHRvIHByaW50DQo+IHRoZSBzaGFkb3cgc3RhY2sgYmFja3RyYWNl Lg0KPiANCj4gSGVsbG8gQ2hyaXN0aW5hLA0KPiANCj4gSSB3YXMgaGF2aW5nIG9uZSBtb3JlIGxv b2sgYXQgdGhpcyBwYXRjaCB0b2RheS4gSSBqdXN0IGhhdmUgYSBmZXcgbml0czoNCj4gDQo+IENo cmlzdGluYSBTY2hpbXBlIDxjaHJpc3RpbmEuc2NoaW1wZUBpbnRlbC5jb20+IHdyaXRlczoNCj4g DQo+ID4gZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMucHkgYi9nZGIvZ2RiYXJj aF9jb21wb25lbnRzLnB5DQo+ID4gaW5kZXggZDQ0ZTU5YTUyM2QuLjFmMjRhM2E2ZDcyIDEwMDY0 NA0KPiA+IC0tLSBhL2dkYi9nZGJhcmNoX2NvbXBvbmVudHMucHkNCj4gPiArKysgYi9nZGIvZ2Ri YXJjaF9jb21wb25lbnRzLnB5DQo+ID4gQEAgLTI4MzAsOSArMjgzMCwxMSBAQCBwcm92aWRlZDoN Cj4gPiAgICB1bndpbmRpbmcgYW5kIGluZmVyaW9yIGZ1bmN0aW9uIGNhbGxzDQo+ID4gIC0gdG9w X2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrOiByZXF1aXJlZCBmb3Igc2hhZG93IHN0YWNrIHBvaW50 ZXINCj4gPiB1bndpbmRpbmcNCj4gPiAgLSBzc3BfcmVnbnVtOiByZXF1aXJlZCBmb3IgaW5mZXJp b3IgZnVuY3Rpb24gY2FsbHMuDQo+ID4gLQ0KPiA+ICBJZiB0aGUgc2hhZG93IHN0YWNrIGFsaWdu bWVudCBpcyBub3QgdGhlIHByZWRlZmF1bHQgb2YgOCBieXRlcywNCj4gPiBjb25maWd1cmUgIHRo ZSBnZGJhcmNoIHZhbHVlIHNoYWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZC4NCj4gPiAr VG8gc3VwcG9ydCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnYmFja3RyYWNlIC1zaGFkb3cnIGlu IGFkZGl0aW9uIHRvDQo+ID4gK2FsbCB2YWx1ZXMgYW5kIG1ldGhvZHMgbGlzdGVkIGFib3ZlIGFs c28gdGhlIGdkYmFyY2ggaG9vaw0KPiA+ICtnZXRfc2hhZG93X3N0YWNrX3NpemUsIGhhcyB0byBi ZSBwcm92aWRlZC4NCj4gPg0KPiA+ICBJZiBwb3NzaWJsZSwgcmV0dXJuIHRoZSBzaGFkb3cgc3Rh Y2sgcG9pbnRlci4gIElmIHRoZSBzaGFkb3cgc3RhY2sNCj4gPiBmZWF0dXJlIGlzIGVuYWJsZWQg dGhlbiBzZXQgU0hBRE9XX1NUQUNLX0VOQUJMRUQgdG8gdHJ1ZSwgb3RoZXJ3aXNlDQo+IEBADQo+ ID4gLTI4OTMsMyArMjg5NSwxOSBAQCB0aGlzIHZhbHVlLg0KPiA+ICAgICAgcHJlZGVmYXVsdD0i OCIsDQo+ID4gICAgICBpbnZhbGlkPUZhbHNlLA0KPiA+ICApDQo+ID4gKw0KPiA+ICtNZXRob2Qo DQo+ID4gKyAgICBjb21tZW50PSIiIg0KPiA+ICtSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50 cyB3aGljaCBhcmUgY3VycmVudGx5IG9uIHRoZSBzaGFkb3cgc3RhY2sNCj4gPiArYmFzZWQgb24g dGhlIHNoYWRvdyBzdGFjayBwb2ludGVyIFNTUCBhbmQgdGhlIHNoYWRvdyBzdGFjayBtZW1vcnkN Cj4gPiArUkFOR0UgW3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRyZXNzKSBvZiB0aGUgY3VycmVudCB0 aHJlYWQuDQo+ID4gK0luIGNhc2Ugc2hhZG93IHN0YWNrIGlzIG5vdCBlbmFibGVkIGZvciB0aGUg Y3VycmVudCB0aHJlYWQsIHJldHVybiAtMS4NCj4gPiArIiIiLA0KPiA+ICsgICAgdHlwZT0ibG9u ZyIsDQo+ID4gKyAgICBuYW1lPSJnZXRfc2hhZG93X3N0YWNrX3NpemUiLA0KPiA+ICsgICAgcGFy YW1zPVsNCj4gPiArICAgICAgICAoImNvbnN0IHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiIsICJz c3AiKSwNCj4gPiArICAgICAgICAoImNvbnN0IHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQURE Uj4iLCAicmFuZ2UiKQ0KPiA+ICsgICAgXSwNCj4gPiArICAgIHByZWRpY2F0ZT1UcnVlLA0KPiA+ ICspDQo+IA0KPiBTbWFsbCBuaXQ6IHdlIGFpbSB0byBrZWVwIHRoZSBQeXRob24gZmlsZXMgaW4g dGhlIHN0eWxlIHVzZWQgYnkgdGhlIEJsYWNrDQo+IFB5dGhvbiBjb2RlIGZvcm1hdHRlci4gSWYg eW91IHJ1biBpdCBvbiB0aGlzIGZpbGU6DQo+IA0KPiAkIGJsYWNrIGdkYi9nZGJhcmNoX2NvbXBv bmVudHMucHkNCj4gDQo+IEl0IGNoYW5nZXMgdGhlIGFib3ZlIHRvOg0KPiANCj4gICAgICBuYW1l PSJnZXRfc2hhZG93X3N0YWNrX3NpemUiLA0KPiAgICAgIHBhcmFtcz1bDQo+ICAgICAgICAgICgi Y29uc3Qgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IiwgInNzcCIpLA0KPiAtICAgICAgICAoImNv bnN0IHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4iLCAicmFuZ2UiKQ0KPiArICAgICAg ICAoImNvbnN0IHN0ZDo6cGFpcjxDT1JFX0FERFIsIENPUkVfQUREUj4iLCAicmFuZ2UiKSwNCj4g ICAgICBdLA0KPiAgICAgIHByZWRpY2F0ZT1UcnVlLA0KPiAgKQ0KDQpHb29kIHBvaW50IEknbGwg cnVuIGJsYWNrLiANCk90aGVyd2lzZSwgdGhpcyBob29rIG1pZ2h0IGRpc2FwcGVhciBkdWUgdG8g dGhlIHBvdGVudGlhbCBpbnRlcmZhY2UgY2hhbmdlcw0KZGVzY3JpYmVkIGhlcmU6IA0KaHR0cHM6 Ly9zb3VyY2V3YXJlLm9yZy9waXBlcm1haWwvZ2RiLXBhdGNoZXMvMjAyNi1NYXkvMjI3NDgxLmh0 bWwNCkxldCdzIHNlZSB3aGVyZSB0aGlzIGlzIGdvaW5nLiDwn5iKDQoNCj4gPiArLyogUmVhZCB0 aGUgbWVtb3J5IGF0IHNoYWRvdyBzdGFjayBwb2ludGVyIFNTUCBhbmQgYXNzaWduIGl0IHRvDQo+ ID4gKyAgIFJFVFVSTl9WQUxVRS4gIEluIGNhc2Ugd2UgY2Fubm90IHJlYWQgdGhlIG1lbW9yeSwg c2V0IFJFQVNPTiB0bw0KPiA+ICsgICBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjptZW1vcnlfcmVh ZF9lcnJvciBhbmQgcmV0dXJuIGZhbHNlLiAgKi8NCj4gPiArDQo+ID4gK3N0YXRpYyBib29sDQo+ ID4gK3JlYWRfc2hhZG93X3N0YWNrX21lbW9yeSAoZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERS IHNzcCwNCj4gPiArCQkJICBDT1JFX0FERFIgJnJldHVybl92YWx1ZSwNCj4gPiArCQkJICBzc3Bf dW53aW5kX3N0b3BfcmVhc29uICpyZWFzb24pDQo+IA0KPiAicmVhc29uIiBjYW4gYWxzbyBiZSBh IHJlZmVyZW5jZSwgc2luY2UgaXQncyBhc3N1bWVkIHRvIGJlIG5vbi1udWxsLg0KDQpUb20gc3Vn Z2VzdGVkIHRvIHJlbW92ZSByZWFzb24gYXMgcGFyYW1ldGVyLCBidXQgdGhpcyBtaWdodCBjaGFu Z2UgaW4gZ2VuZXJhbA0KdG9vIHdpdGggdGhlIGNoYW5nZXMgZGVzY3JpYmVkIGFib3ZlLi4NCg0K PiA+ICt7DQo+ID4gKyAgLyogT24geDg2IHRoZXJlIGNhbiBiZSBhIHNoYWRvdyBzdGFjayB0b2tl biBhdCBiaXQgNjMuICBGb3IgeDMyLCB0aGUNCj4gPiArICAgICBhZGRyZXNzIHNpemUgaXMgb25s eSAzMiBiaXQuICBUaHVzLCB3ZSBzdGlsbCBtdXN0IHVzZQ0KPiA+ICsgICAgIGdkYmFyY2hfc2hh ZG93X3N0YWNrX2VsZW1lbnRfc2l6ZV9hbGlnbmVkIChhbmQgbm90DQo+IGdkYmFyY2hfYWRkcl9i aXQpDQo+ID4gKyAgICAgdG8gcmVhZCB0aGUgZnVsbCBlbGVtZW50IGZvciB4MzIgYXMgd2VsbC4g ICovDQo+ID4gKyAgY29uc3QgaW50IGVsZW1lbnRfc2l6ZQ0KPiA+ICsgICAgPSBnZGJhcmNoX3No YWRvd19zdGFja19lbGVtZW50X3NpemVfYWxpZ25lZCAoZ2RiYXJjaCk7DQo+ID4gKw0KPiA+ICsg IGNvbnN0IGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJj aCk7DQo+ID4gKyAgaWYgKCFzYWZlX3JlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVnZXIgKHNzcCwg ZWxlbWVudF9zaXplLCBieXRlX29yZGVyLA0KPiA+ICsJCQkJCSAgJnJldHVybl92YWx1ZSkpDQo+ ID4gKyAgICB7DQo+ID4gKyAgICAgICpyZWFzb24gPSBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjpt ZW1vcnlfcmVhZF9lcnJvcjsNCj4gPiArICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsgICAgfQ0K PiA+ICsNCj4gPiArICByZXR1cm4gdHJ1ZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyogIElmIHBv c3NpYmxlLCByZXR1cm4gdGhlIHN0YXJ0aW5nIHNoYWRvdyBzdGFjayBmcmFtZSBpbmZvIG5lZWRl ZCB0bw0KPiBoYW5kbGUNCj4gPiArICAgIENPVU5UIG91dGVybW9zdCBmcmFtZXMuICBGUkFNRSBz aG91bGQgcG9pbnQgdG8gdGhlIGlubmVybW9zdA0KPiAobmV3ZXN0KQ0KPiA+ICsgICAgZWxlbWVu dCBvZiB0aGUgc2hhZG93IHN0YWNrLiAgUkFOR0UgaXMgdGhlIHNoYWRvdyBzdGFjayBtZW1vcnkN Cj4gcmFuZ2UNCj4gPiArICAgIFtzdGFydF9hZGRyZXNzLCBlbmRfYWRkcmVzcykgY29ycmVzcG9u ZGluZyB0byBGUkFNRSdzIHNoYWRvdyBzdGFjaw0KPiBwb2ludGVyLg0KPiA+ICsgICAgSWYgQ09V TlQgaXMgYmlnZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBvbiB0aGUgc2hhZG93IHN0 YWNrLA0KPiByZXR1cm4NCj4gPiArICAgIEZSQU1FLiAgSW4gY2FzZSBvZiBmYWlsdXJlLCBhc3Np Z24gYW4gYXBwcm9wcmlhdGUNCj4gc3NwX3Vud2luZF9zdG9wX3JlYXNvbiBpbg0KPiA+ICsgICAg RlJBTUUtPlVOV0lORF9zdG9wX1JFQVNPTi4gICovDQo+IA0KPiBJIGxpa2UgdGhpcyBuZXcgd29y ZGluZyBvZiB0aGUgZG9jIGNvbW1lbnQuIFRoYW5rcyENCj4gDQo+IEp1c3Qgb25lIG5pdDogVU5X SU5EX3N0b3BfUkVBU09OIHNob3VsZCBiZSBhbGwgdXBwZXItY2FzZS4gOikNCg0KVGhhbmtzLCB3 aWxsIGZpeC4NCg0KPiA+ICsNCj4gPiArc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNr X2ZyYW1lX2luZm8+DQo+ID4gK2dldF90cmFpbGluZ19vdXRlcm1vc3Rfc2hhZG93X3N0YWNrX2Zy YW1lX2luZm8NCj4gPiArICAoZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3Qgc3RkOjpwYWlyPENPUkVf QUREUiwgQ09SRV9BRERSPiByYW5nZSwNCj4gPiArICAgY29uc3QgVUxPTkdFU1QgY291bnQsIHNo YWRvd19zdGFja19mcmFtZV9pbmZvICZmcmFtZSkgew0KPiA+ICsgIGdkYl9hc3NlcnQgKGdkYmFy Y2hfZ2V0X3NoYWRvd19zdGFja19zaXplX3AgKGdkYmFyY2gpKTsNCj4gPiArDQo+ID4gKyAgY29u c3QgbG9uZyBzaGFkb3dfc3RhY2tfc2l6ZQ0KPiA+ICsgICAgPSBnZGJhcmNoX2dldF9zaGFkb3df c3RhY2tfc2l6ZSAoZ2RiYXJjaCwNCj4gPiArCQkJCSAgICAgc3RkOjpvcHRpb25hbDxDT1JFX0FE RFI+IChmcmFtZS5zc3ApLA0KPiA+ICsJCQkJICAgICByYW5nZSk7DQo+ID4gKw0KPiA+ICsgIC8q IFdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGluIGNhc2Ugc2hhZG93IHN0YWNrIGlzIGVuYWJsZWQg Zm9yIHRoZQ0KPiA+ICsgICAgIGN1cnJlbnQgdGhyZWFkLiAgKi8NCj4gPiArICBnZGJfYXNzZXJ0 IChzaGFkb3dfc3RhY2tfc2l6ZSA+PSAwKTsNCj4gPiArDQo+ID4gKyAgY29uc3QgbG9uZyBsZXZl bCA9IHNoYWRvd19zdGFja19zaXplIC0gY291bnQ7DQo+IA0KPiBKdXN0IGZvciB0aGUgcmVjb3Jk OiBhcyBJJ20gc3VyZSB5b3UgcmVhbGl6ZWQsIEkgd2FzIHdyb25nIGluIG15IGNvbW1lbnQgaW4N Cj4gdjEncyByZXZpZXcgd2hlcmUgSSBzYWlkIHRoaXMgZXhwcmVzc2lvbiB0byBjYWxjdWxhdGUg bGV2ZWwgd2FzIG1pc3NpbmcgYSAiLSAxIg0KPiB0ZXJtLiBUaGlzIGxvb2tzIGdvb2QuIFNvcnJ5 IGFib3V0IHRoYXQuDQo+IA0KPiBJIHRoaW5rIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBsb29wIHRo YXQgY2FsbHMgaXQgaW4gYmFja3RyYWNlX3NoYWRvd19jb21tYW5kDQo+IGFyZSBhbGwgZ29vZCBu b3cuDQoNCkkgZG9uJ3QgdGhpbmsgeW91IHdlcmUgd3JvbmcuICDwn5iKDQpUaGUgZWFybGllciBm dW5jdGlvbiBkZXNjcmlwdGlvbiBkaWQgbm90IG1hdGNoIHRoZSBtZWFuaW5nIG9mIGNvdW50LiBJ IGRlc2NyaWJlZCBpdCBpbiB0aGlzIHRocmVhZA0KaHR0cHM6Ly9pbmJveC5zb3VyY2V3YXJlLm9y Zy9nZGItcGF0Y2hlcy9QSDBQUjExTUI3NjM2NDk4NzU0NkYxRDUzNjU1MTY4NTZGOThDQUBQSDBQ UjExTUI3NjM2Lm5hbXByZDExLnByb2Qub3V0bG9vay5jb20vDQooaXQgc3RhcnRzIHdpdGggIiBB aCwgSSB0aGluayBub3cgSSBnZXQgeW91ciBwb2ludCIpDQoNCj4gPiArICAvKiBDT1VOVCBleGNl ZWRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb24gdGhlIHNoYWRvdyBzdGFjay4gIFJldHVybg0K PiB0aGUNCj4gPiArICAgICBzdGFydGluZyBzaGFkb3cgc3RhY2sgZnJhbWUgaW5mbyBGUkFNRS4g ICovICBpZiAobGV2ZWwgPD0gMCkNCj4gPiArICAgIHJldHVybiBzdGQ6Om9wdGlvbmFsPHNoYWRv d19zdGFja19mcmFtZV9pbmZvPiAoZnJhbWUpOw0KPiA+ICsNCj4gPiArICBDT1JFX0FERFIgbmV3 X3NzcCA9IHVwZGF0ZV9zaGFkb3dfc3RhY2tfcG9pbnRlcg0KPiA+ICsgICAgKGdkYmFyY2gsIGZy YW1lLnNzcCwgbGV2ZWwsIHNzcF91cGRhdGVfZGlyZWN0aW9uOjpvdXRlcik7DQo+ID4gKw0KPiA+ ICsgIGlmIChnZGJhcmNoX3N0YWNrX2dyb3dzX2Rvd24gKGdkYmFyY2gpKQ0KPiA+ICsgICAgZ2Ri X2Fzc2VydCAobmV3X3NzcCA8IHJhbmdlLnNlY29uZCk7ICBlbHNlDQo+ID4gKyAgICBnZGJfYXNz ZXJ0IChuZXdfc3NwID49IHJhbmdlLmZpcnN0KTsNCj4gPiArDQo+ID4gKyAgQ09SRV9BRERSIG5l d192YWx1ZTsNCj4gPiArICBpZiAoIXJlYWRfc2hhZG93X3N0YWNrX21lbW9yeSAoZ2RiYXJjaCwg bmV3X3NzcCwgbmV3X3ZhbHVlLA0KPiA+ICsJCQkJICZmcmFtZS51bndpbmRfc3RvcF9yZWFzb24p KQ0KPiA+ICsgICAgcmV0dXJuIHt9Ow0KPiA+ICsNCj4gPiArICByZXR1cm4gc3RkOjpvcHRpb25h bDxzaGFkb3dfc3RhY2tfZnJhbWVfaW5mbz4NCj4gPiArICAgICh7bmV3X3NzcCwgbmV3X3ZhbHVl LCAodW5zaWduZWQgbG9uZykgbGV2ZWwsDQo+ID4gKyAgICAgIHNzcF91bndpbmRfc3RvcF9yZWFz b246Om5vX2Vycm9yfSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0ZDo6b3B0aW9uYWw8c2hhZG93 X3N0YWNrX2ZyYW1lX2luZm8+DQo+ID4gK3NoYWRvd19zdGFja19mcmFtZV9pbmZvOjp1bndpbmRf cHJldl9zaGFkb3dfc3RhY2tfZnJhbWVfaW5mbw0KPiA+ICsgIChnZGJhcmNoICpnZGJhcmNoLCBz dGQ6OnBhaXI8Q09SRV9BRERSLCBDT1JFX0FERFI+IHJhbmdlKSB7DQo+ID4gKyAgLyogSWYgdGhl IHVzZXIncyBiYWNrdHJhY2UgbGltaXQgaGFzIGJlZW4gZXhjZWVkZWQsIHN0b3AuICBXZSBtdXN0 DQo+ID4gKyAgICAgYWRkIHR3byB0byB0aGUgY3VycmVudCBsZXZlbDsgb25lIG9mIHRob3NlIGFj Y291bnRzIGZvcg0KPiA+ICsgICAgIGJhY2t0cmFjZV9saW1pdCBiZWluZyAxLWJhc2VkIGFuZCB0 aGUgbGV2ZWwgYmVpbmcgMC1iYXNlZCwgYW5kIHRoZQ0KPiA+ICsgICAgIG90aGVyIGFjY291bnRz IGZvciB0aGUgbGV2ZWwgb2YgdGhlIG5ldyBmcmFtZSBpbnN0ZWFkIG9mIHRoZSBsZXZlbA0KPiA+ ICsgICAgIG9mIHRoZSBjdXJyZW50IGZyYW1lLiAgKi8NCj4gPiArICBpZiAodGhpcy0+bGV2ZWwg KyAyID4gdXNlcl9zZXRfYmFja3RyYWNlX29wdGlvbnMuYmFja3RyYWNlX2xpbWl0KQ0KPiA+ICsg ICAgcmV0dXJuIHt9Ow0KPiA+ICsNCj4gPiArICBDT1JFX0FERFIgbmV3X3NzcA0KPiA+ICsgICAg PSB1cGRhdGVfc2hhZG93X3N0YWNrX3BvaW50ZXIgKGdkYmFyY2gsIHRoaXMtPnNzcCwgMSwNCj4g PiArCQkJCSAgIHNzcF91cGRhdGVfZGlyZWN0aW9uOjpvdXRlcik7DQo+ID4gKw0KPiA+ICsgICBp ZiAoZ2RiYXJjaF90b3BfYWRkcl9lbXB0eV9zaGFkb3dfc3RhY2tfcCAoZ2RiYXJjaCkNCj4gPiAr ICAgICAgICYmIGdkYmFyY2hfdG9wX2FkZHJfZW1wdHlfc2hhZG93X3N0YWNrIChnZGJhcmNoLCBu ZXdfc3NwLA0KPiByYW5nZSkpDQo+ID4gKyAgICAgcmV0dXJuIHt9Ow0KPiA+ICsgICBlbHNlIGlm IChnZGJhcmNoX3N0YWNrX2dyb3dzX2Rvd24gKGdkYmFyY2gpKQ0KPiANCj4gVGhlIGZvdXIgbGlu ZXMgYWJvdmUgYXJlIGluZGVudGVkIHdpdGggb25lIGV4dHJhIHNwYWNlLg0KDQpXaWxsIGZpeC4N Cg0KPiDii64NCj4gPiArICBpZiAocmVhZF9zaGFkb3dfc3RhY2tfbWVtb3J5IChnZGJhcmNoLCAq c3RhcnRfc3NwLCBuZXdfdmFsdWUsDQo+ICZyZWFzb24pKQ0KPiA+ICsgICAgY3VycmVudCA9IHsq c3RhcnRfc3NwLCBuZXdfdmFsdWUsIDAsDQo+ID4gKyBzc3BfdW53aW5kX3N0b3BfcmVhc29uOjpu b19lcnJvcn07DQo+ID4gKw0KPiA+ICsgIHN0ZDo6b3B0aW9uYWw8c2hhZG93X3N0YWNrX2ZyYW1l X2luZm8+IHRyYWlsaW5nID0gY3VycmVudDsNCj4gPiArDQo+ID4gKyAgTE9OR0VTVCBjb3VudCA9 IC0xOw0KPiA+ICsgIGlmIChjdXJyZW50Lmhhc192YWx1ZSAoKSAmJiBjb3VudF9leHAgIT0gbnVs bHB0cikNCj4gPiArICAgIHsNCj4gPiArICAgICAgY291bnQgPSBwYXJzZV9hbmRfZXZhbF9sb25n IChjb3VudF9leHApOw0KPiA+ICsgICAgICAvKiBJZiBjb3VudCBpcyBuZWdhdGl2ZSwgdXBkYXRl IHRyYWlsaW5nIHdpdGggdGhlIHNoYWRvdyBzdGFjayBmcmFtZQ0KPiA+ICsJIGluZm8gZnJvbSB3 aGljaCB3ZSBzaG91bGQgc3RhcnQgcHJpbnRpbmcuICAqLw0KPiA+ICsgICAgICBpZiAoY291bnQg PCAwKQ0KPiA+ICsJew0KPiA+ICsJICB0cmFpbGluZyA9IGdldF90cmFpbGluZ19vdXRlcm1vc3Rf c2hhZG93X3N0YWNrX2ZyYW1lX2luZm8NCj4gPiArCQkgICAgICAgKGdkYmFyY2gsIHJhbmdlLCBz dGQ6OmFicyAoY291bnQpLCAqY3VycmVudCk7DQo+ID4gKw0KPiA+ICsJICBpZiAoIXRyYWlsaW5n Lmhhc192YWx1ZSAoKSkNCj4gPiArCSAgICByZWFzb24gPSBjdXJyZW50LT51bndpbmRfc3RvcF9y ZWFzb247DQo+ID4gKwl9DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIGlmICghdHJhaWxpbmcu aGFzX3ZhbHVlICgpKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBnZGJfYXNzZXJ0IChyZWFzb24g IT0gc3NwX3Vud2luZF9zdG9wX3JlYXNvbjo6bm9fZXJyb3IpOw0KPiA+ICsNCj4gPiArICAgICAg ZXJyb3IgKF8oIkNhbm5vdCBwcmludCBzaGFkb3cgc3RhY2sgYmFja3RyYWNlOiAlcy5cbiIpLA0K PiA+ICsJICAgICBzc3BfdW53aW5kX3N0b3BfcmVhc29uX3RvX2Vycl9zdHJpbmcgKHJlYXNvbikp Ow0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICBjdXJyZW50ID0gdHJhaWxpbmc7DQo+IA0KPiBU aGUgYXNzaWdubWVudCBhYm92ZSBpcyBub3cgcmVkdW5kYW50LCBzaW5jZSBpdCdzIGFsc28gaW4g dGhlIGZvciBsb29wIGluaXRpYWwNCj4gY29uZGl0aW9uLg0KDQpUaGFua3MsIHdpbGwgcmVtb3Zl IQ0KDQoNCj4gPiArICBmb3IgKGN1cnJlbnQgPSB0cmFpbGluZzsgY3VycmVudC5oYXNfdmFsdWUg KCkgJiYgY291bnQgIT0gMDsgY291bnQtLSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgUVVJVDsN Cj4gPiArDQo+ID4gKyAgICAgIHByaW50X3NoYWRvd19zdGFja19mcmFtZV9pbmZvIChnZGJhcmNo LCBmcF9vcHRzLCAqY3VycmVudCwNCj4gPiArIExPQ0FUSU9OKTsNCj4gPiArDQo+ID4gKyAgICAg IHRyYWlsaW5nID0gY3VycmVudDsNCj4gPiArICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnVud2lu ZF9wcmV2X3NoYWRvd19zdGFja19mcmFtZV9pbmZvIChnZGJhcmNoLA0KPiByYW5nZSk7DQo+ID4g KyAgICB9DQo+ID4gKw0KPiA+ICsgIC8qIElmIHdlJ3ZlIHN0b3BwZWQgYmVmb3JlIHRoZSBlbmQs IG1lbnRpb24gdGhhdC4gICovICBpZg0KPiA+ICsgKGN1cnJlbnQuaGFzX3ZhbHVlICgpICYmIGZy b21fdHR5KQ0KPiA+ICsgICAgZ2RiX3ByaW50ZiAoXygiKE1vcmUgc2hhZG93IHN0YWNrIGZyYW1l cyBmb2xsb3cuLi4pXG4iKSk7DQo+ID4gKw0KPiA+ICsgIC8qIER1ZSB0byB0aGUgbG9vcCBhYm92 ZSwgdHJhaWxpbmcgYWx3YXlzIGhhcyBhIHZhbHVlIGF0IHRoaXMNCj4gPiArIHBvaW50LiAgKi8g IGdkYl9hc3NlcnQgKHRyYWlsaW5nLmhhc192YWx1ZSAoKSk7DQo+ID4gKw0KPiA+ICsgIC8qIElm IHdlJ3ZlIHJ1biBvdXQgb2Ygc2hhZG93IHN0YWNrIGZyYW1lcywgYW5kIHRoZSByZWFzb24gYXBw ZWFycyB0bw0KPiA+ICsgICAgIGJlIGFuIGVycm9yIGNvbmRpdGlvbiwgcHJpbnQgaXQuICAqLw0K PiA+ICsgIGlmICghY3VycmVudC5oYXNfdmFsdWUgKCkNCj4gPiArICAgICAgJiYgdHJhaWxpbmct PnVud2luZF9zdG9wX3JlYXNvbiA+DQo+IHNzcF91bndpbmRfc3RvcF9yZWFzb246Om5vX2Vycm9y KQ0KPiA+ICsgICAgZ2RiX3ByaW50ZiAoXygiU2hhZG93IHN0YWNrIGJhY2t0cmFjZSBzdG9wcGVk IGF0IHNoYWRvdyBzdGFjayAiIFwNCj4gPiArCQkgICJwb2ludGVyICVzIGR1ZSB0bzogJXMuXG4i KSwNCj4gPiArCQlwYWRkcmVzcyAoZ2RiYXJjaCwgdHJhaWxpbmctPnNzcCksDQo+ID4gKwkJc3Nw X3Vud2luZF9zdG9wX3JlYXNvbl90b19lcnJfc3RyaW5nDQo+ID4gKwkJICAodHJhaWxpbmctPnVu d2luZF9zdG9wX3JlYXNvbikpOw0KPiA+ICt9DQo+IA0KPiAtLQ0KPiBUaGlhZ28NCg0KQ2hyaXN0 aW5hDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJIDQpSZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hl ciBTdHJhc3NlIDEsIDg1NjIyIEZlbGRraXJjaGVuLCBHZXJtYW55DQpUZWw6ICs0OSA4OSA5OTEg NDMwLCB3d3cuaW50ZWwuZGUNCk1hbmFnaW5nIERpcmVjdG9yczogSGFycnkgRGVtYXMsIEplZmZy ZXkgU2NobmVpZGVybWFuLCBZaW4gQ2hvbmcgU29ycmVsbA0KQ2hhaXJwZXJzb24gb2YgdGhlIFN1 cGVydmlzb3J5IEJvYXJkOiBOaWNvbGUgTGF1DQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaA0KQ29t bWVyY2lhbCBSZWdpc3RlcjogQW10c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo=