From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9758FF55427 for ; Tue, 24 Feb 2026 22:54:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5464B10E703; Tue, 24 Feb 2026 22:54:28 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.b="qfDlSIC1"; dkim-atps=neutral Received: from SN4PR0501CU005.outbound.protection.outlook.com (mail-southcentralusazon11011021.outbound.protection.outlook.com [40.93.194.21]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5EE0410E6EB; Tue, 24 Feb 2026 22:54:24 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Rkfi/effUxkAAPmYQ6d1jYc0tfF3SoORCUEXxmJuX3QRzBft3gSDJP8Rw4vaimmhBH+JlTHKrkgZlS5+GY8+tC/mkSul+gybDl+dvAfM4f6RjlBP0EmsK8Yhtx2A2bM1ZuVJP9lPbTszKR94JoM3OSS4xKniUhxGUQncaZpwYOYM75KoGphEEVOltU0bFO/6SUKCSzckMIuyhZTfq6S6N/M8m3PYjLNhxJRjvT5P/X6WCTvFJBSoUmsFFnmupbDcJpC3Retd7vo3HVFM/XVIyLMub+R7fd+8SmPN61Dg9GSXmjutVuMcmdw3pDmEBhYPMoQ4G73qsqvg2xo5M7tqMQ== 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=R43gNWA3PZxF0NM1SiVo+6rrKdl9coWCgbX5uwPfvbY=; b=loqcVumJeiyvT99ejY8WrMbItAvl41dFtR5YuRdsk6gxn8zeJ4ci7mfbaVFT0GtKaxuBi8+aMboI3ThzVQyAge9RIrdEuIu3X7UsrouF4xnki458z0I6cBMtyyk304TEsLNH80qV9QYQU/KYwm+XSvdayy6qvSOKg+H4FsfNwz6qImlf4W5QCVUTUQyQYrLnJzFyvvKq8Jea2hxO3UkWSYAn/p4tSfslyOxzWrfeDneHs5zWn88mx+AC0+nbqwSKXNDLgU7rbf076sS5tRt83eSstSfPhSBe/7+tEIxvIqUrq0qZaDhAPO+3MCQTvu1RUms0/PjyAibTUtaz0lH1QA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R43gNWA3PZxF0NM1SiVo+6rrKdl9coWCgbX5uwPfvbY=; b=qfDlSIC1oqrwrf1JKEGaogx3AW/oafccy2DV6PF4ie1KAv2RhsMYFQ9cYyowdvrRkCYl9GiOyO6wleEG7Yqyp0KThQ4IIy+V4ONSng+CQGe3jYEvyZoHejEE86tX2zML5f0DHrBSrjoOe1lT2GKZW7mj8imCsy0wSALtIlxbLFlTGY+5Lf+K/t38CGQazrnL2AzYPVY8zBClRorza6sQoutGOZy5ALXA7jjFMA8rDHL4gH93bVHVwRcD6i+62iKTrV0hLe4d4cwjLZZSvCTrNaYjJV0+5wmpUoyG5/IpeOOoH1fDACkabcXLN0w8X1M+eSDGlP0OJ3vQP7EG8/5U4Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) by SN7PR12MB6885.namprd12.prod.outlook.com (2603:10b6:806:263::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.21; Tue, 24 Feb 2026 22:54:18 +0000 Received: from DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33]) by DS0PR12MB6486.namprd12.prod.outlook.com ([fe80::88a9:f314:c95f:8b33%4]) with mapi id 15.20.9632.017; Tue, 24 Feb 2026 22:54:18 +0000 From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: Miguel Ojeda , Boqun Feng , Gary Guo , =?UTF-8?q?Bj=C3=B6rn=20Roy=20Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Dave Airlie , Daniel Almeida , Koen Koning , dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, rust-for-linux@vger.kernel.org, Nikola Djukic , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jonathan Corbet , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , Huang Rui , Matthew Auld , Matthew Brost , Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Helge Deller , Alex Gaynor , Boqun Feng , John Hubbard , Alistair Popple , Timur Tabi , Edwin Peer , Alexandre Courbot , Andrea Righi , Andy Ritger , Zhi Wang , Balbir Singh , Philipp Stanner , Elle Rhumsaa , alexeyi@nvidia.com, Eliot Courtney , joel@joelfernandes.org, linux-doc@vger.kernel.org, amd-gfx@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, linux-fbdev@vger.kernel.org, Joel Fernandes Subject: [PATCH v8 24/25] gpu: nova-core: mm: Add BAR1 memory management self-tests Date: Tue, 24 Feb 2026 17:53:22 -0500 Message-Id: <20260224225323.3312204-25-joelagnelf@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260224225323.3312204-1-joelagnelf@nvidia.com> References: <20260224225323.3312204-1-joelagnelf@nvidia.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-ClientProxiedBy: BLAPR03CA0026.namprd03.prod.outlook.com (2603:10b6:208:32b::31) To DS0PR12MB6486.namprd12.prod.outlook.com (2603:10b6:8:c5::21) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR12MB6486:EE_|SN7PR12MB6885:EE_ X-MS-Office365-Filtering-Correlation-Id: 590d1bb5-6e38-4bc5-74c6-08de73f7a3ef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?B?ejA2SjBDM2lydWM0Sjc1SGtRekxxM0VSeFQ2S0dsdVlsVGljcEhIVTZWcFBm?= =?utf-8?B?c0tYUWRrRXR0RG9UT04xNG9WTmhOMXlYMDg5b3JjeDEzOE0vYmhRNjVLcDli?= =?utf-8?B?ZkZ2T3ZmTmFnenNIaW1HK2tKOFNvaUZqM1Ria1BSMzBZM3RPNXMzQmQzVU9W?= =?utf-8?B?bGplTjllQkJyYTR1bDdrUFczbkFVS3Z5S05aTytDWWhmYWRkWWExOXFyN2Vv?= =?utf-8?B?RGVueUhtNklNUC81MHBLMEw4aGhuaDJ3alRZM1VMb1l2WkkyRzJQUTgrbmt3?= =?utf-8?B?UlhoVEJ1bDhHazdIV2JLOG1tSGw0N3lVOUhvb0p1M3NLbzRrWERCOTR0YkE5?= =?utf-8?B?YzVGanFUdzlZdjRLeHZ5MHhRSFdUU0JybDJSQmVaNy9XTzFpQU1NUzJSd3Ez?= =?utf-8?B?RTNRV2pzOC94SWxhM0lZenRMVEpuaWgyU3lJQmtzZEJJaEduSDJrTWhubDNX?= =?utf-8?B?ZWF6b2YxWlBpeklUcUhGR2NwSVpvUzJxTzhTcnZhS2VNUWprUG1uMnQ4SFhj?= =?utf-8?B?ZnRkbUdJUTlwQ3ZqS1J2VEM5QzFDYXFlK2R5RmVOd0VNdDdvV3F3c2p3LzVB?= =?utf-8?B?NHkyZXRUdEU1WU5vTHllcUx4aFR4K1ZRVms5djlSaTBUSm45ODNNd05PUnRG?= =?utf-8?B?WGhiVW55WS9UaC9McktCQ3AxRDBzWkpVR0tmcVVwaXFtS3hVZ0U5VjZlOXVk?= =?utf-8?B?Rm8xQkNMSmRTSFUxTGJjZjJIZWsxWHRJQWtEOHRKamloV2EzL29FUTJpeHpE?= =?utf-8?B?UHdTV0huK1hlaFozZHdyZUZaNjM2RGE4RFJJNmNFRUZLV1lBbmFGbEw4WjhI?= =?utf-8?B?SGltcDlxK2grdWRJRFVkaVJYdnBYR24wSDVoSmFkTFVGdDdNclNxeHJyRmFp?= =?utf-8?B?MGpUVkdJbndCMDdGaVIzazVORzRGdHFMRmFLS1ZhNG1OTVhIOFR0THFnQzhj?= =?utf-8?B?cWF5NFhSb3hmM0lZRW5hRWIvT2ZjUVFQaERkTy9aYkk4TWtpeTRCSDFJVHRI?= =?utf-8?B?dDNNT0FxQVVLdm1qM2dtbEFTVU5ab0FHWGhOR0xMU3JnQml1aDQ3V2VzdFNC?= =?utf-8?B?RFdPYUVkb3o4dkNncUhFRXM2Q05EUEhrNWxmNStSVHowRmlRY29EMXE4Y1RR?= =?utf-8?B?VUdvUUNSNnRESlJCWkgrQWx5WHlFYU5iWlRrejA0a0NiY0lLbHFyTW00VWN3?= =?utf-8?B?WVBHYjNMNTZhbTh4V3drS1I2My9RQnNJQXZRWGVQZWcxZjN0SmJobDJsMGFL?= =?utf-8?B?MVd2dmQ5eGdTbVpydDVjVEVQY2F3TXVEZnhGaVBSS1FoT0l3ckxNZGJNRHpn?= =?utf-8?B?dmFVdHFRbzBabVNPaEhDWEZ1ZnVkeVdic2krajdKTW5xNkRoaWJoYVR2Yk5X?= =?utf-8?B?cEp6MmphQWgrK0VaRjRDc3ZoV3Q3QlhUNERTWlU3WnY2QzZENHUvcGgyVC9Y?= =?utf-8?B?eUlvRXR6TmI3WDAyU3ZSYzF0aGxmZUQwMFhLeEg5dmd5aDJyYjU5NDg3Mm9a?= =?utf-8?B?bDMxdlhZQkcwTTdjbTdSYXpOaldNblJFS2N5endqU2ZxRUxBcUh4amtVUjlo?= =?utf-8?B?WG51dEhvMWxrYlRscUxPMU9yWUtOY3VKQ0I0cVpQM205R0JWWU1nUXJuQ3RG?= =?utf-8?B?bFN0UHVxRnpjMElNOUM1RWZjQWpLYytpOVg1T0xqVklGb1JrY2JybFNhZ1BL?= =?utf-8?B?TjNnbm1Ea1ZRNlZGYSsyQnpLbmwxd3JDMndNblMyS0lQUjc4d0tBK1N6OEJO?= =?utf-8?B?dTB0bXk5V2pSRjN1eGpjRUVvWkhVTzlvS2d4aU1NM3JpWFY3MlEwMVp2blJw?= =?utf-8?B?Ym5WNnV0RTA1U2E4bXI5bTVxYzgzb0VVbmFXRG5JbVFaTStyME5HektOWHRm?= =?utf-8?B?RkRNMFc5Rld5QVE4WjE5VmFjOFBUSkY1V1p4WnFJZGszaTlRcWdrZ25zWUtv?= =?utf-8?B?RU5xZGJSUEdsZXBrYURmTUNJdTVJcndlQWZHYmsvanN6WE1Gb1RWTGcvNlNQ?= =?utf-8?B?NzF6YXE5U2g1SEs4NFlvUEdtZCtPMnVjRTNJb1JocGQ3V2VGeDBYWDFYckZn?= =?utf-8?B?dDFzbnMxeWhrMjJVYlhZZlpndEVORFNHcWFrUGwya1lxbG5hZjh2eE9PbUhu?= =?utf-8?Q?x90M=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR12MB6486.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(7416014)(376014)(366016)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c2VvOXh4MUtoZ3Fhakplcng3aWNjYWxXaGlzMGIwT3pnRXZRMDJQRjBxSW9v?= =?utf-8?B?MUNCWFI2NW1jWXJxaGl6WXdnbnVCa1hiZmVwbjVWZlY4SnYrWGVzZFdtRGdt?= =?utf-8?B?ZGRuYWEzNElSL1REalNURXF6TmlYV3ZEMnVtYTZ4RWNMVERoOGxHNHRnV0x4?= =?utf-8?B?Q2N5NUlERFY0RTlrMXVuWC9VZXgvVlB4S2llaXZ4TkpMcDdqa0QvbjN2aU1T?= =?utf-8?B?SlFNS2pBTVpsMU41djBaOHFvbmg0OXlxTk9QaDQ4YXE3cGY5SUMwM2w5WURC?= =?utf-8?B?WkozVnkxcjJKcndyNnJYQzdCK0gvakxQSklGOC9yYnltMjRDeHdZOEtLN2FG?= =?utf-8?B?T29wenNaV2NYeHZxK3k1ZllJcmZjMVUzRzM5aEpLWk5CMlhPZmdnWXlzUE4r?= =?utf-8?B?VGNRdW8zenBKeG9YeEVEZWRuNVpsNFBuVi9XNWF2VjJqYWJVcWVIZEt3aFdP?= =?utf-8?B?YVlIZ0ZFcTdjeENjYi9TaE00NldwVkYwYnE5YmpkNWxrNDFxVnJsYndqeHZ5?= =?utf-8?B?M0ZFTHc0M3FSQmxGdFQ4VGZvYkJaV2x5a0kxUWJuYlNtZEdPN3doRlgwQ0VV?= =?utf-8?B?RUEwS3R6ZEoxczlWcWhWVVc3bGkxUThvMkp2RGpCSTdlVTR6bFpneXphU3p1?= =?utf-8?B?bUxZSUV0RXlMcldOdjRocjFRaWRGTGRDVVZEZ2JIRFhEQVJ4ajNXU0tsTmVG?= =?utf-8?B?ckdHZWg3bU1MR1UxcXhoSEFmeTBxejFYb1NoQUkzQW10OTNRcmFoOEZSQlVl?= =?utf-8?B?Rlp6aldQaUFveDNQeWdUQ2NyS0lyeXFhN3lsOWNQY3dtcjNmQlNBcTNXL0tw?= =?utf-8?B?RnN5czgycWVZL3hhcW4vL0FLRjhjU2cvaHhKU3hhMVovZWpXc2FGTVJvNWZ4?= =?utf-8?B?VkdIekYwSzFZcVc2R01PbEoyZ3BGeEhJMEdCQ2V2b2UxNjJSc0NnaGFOVWUv?= =?utf-8?B?dVRURXRvZUZSTDdkVmxVVCtVYUV3MU9yZXZmZ0h3VW9vRUdES1plcHNJQUlB?= =?utf-8?B?NVFweFZKVEJsY3JCZEJOTmg4ZHdqdnlwcE9xVmZpVHFOcHFXMTVBOVhmcTc1?= =?utf-8?B?VElvMFlSNnhYN0ZLRkJqcHBhK2hzY2pYSFl4S2pKbHQ5Z1NibC9MMjJNZFYz?= =?utf-8?B?VFA3ektzQmRBNlRTWTc0Z1pMZ2RuVXVCeVRYUXVNRlhJaE1WYUJvV1NuVzhH?= =?utf-8?B?SnBneDByaUczaEVSWXY2bjlDUTR3Qk85c2cyTWcyaVRUQVlGYXVyODR4ZnFP?= =?utf-8?B?N014eDlhR2EyUjk0WWxveGhaMHhHY3ZoWFJzVnI5eXQ4U3h3Z1htV0cyZncx?= =?utf-8?B?d2xDaGxPU3lFaC9xdURBRUdLMnVrclI1OVBIZk9RbWtPcEJ2b1doN3M4ZkNR?= =?utf-8?B?QkYyd2IvNU0rRkpiZ2RJVTRWY2orbzZ1STBsY0hZQ1lFZWYwZFI4Vk84cWkv?= =?utf-8?B?OEpLM1VVc3dxeE84bGJ3Mzd6VWdYOFlMRWRTZDNHZTJiajlzZGs1MUI5S0g5?= =?utf-8?B?aVg1bFFXeW1EbXluNStQY0RNbEU5ZG02VkN4R1M0RFlSc2xmWCtNbkp2Rk8x?= =?utf-8?B?aFlsMmRLVGNuK2JFMENlWVRSaWZ0OEJ2RWpiRXNUWjR4QkNGeFQ3S1pVbjlu?= =?utf-8?B?NllMVnExUldPeXNidC9pZGg3MnZzMHBDRk5NRThaellKT3JyUkp3czFPcHB0?= =?utf-8?B?Zk1MY3I3T00raVlIN3lRb284TTFReHJ4Tmtxc04rTHYrUXBPc2V0R0dmL2pN?= =?utf-8?B?RjNQSmNIamZvMEpHY2RuQ2VlRDAxbGs2dzZrU3Z6NnlQRkFyclhiS1RCZFhV?= =?utf-8?B?YkhXTC93a1VqbjdabTNnRE9kREtzeHJkbjE5REMzMS9BM2w3OW9rQUV6S3ox?= =?utf-8?B?NVdhN0paQzVUZ1RRYnZsTGhCRW1wZE5WUDNBQ0J1SnJacVhudTRtbkUxZllX?= =?utf-8?B?dlhPQytvME9uaXNXZVY3bVBTdTlsWjIzU0p2ZURjRjJHcVA3NTdMT3FZQWxs?= =?utf-8?B?MWQ4YTNYbnphNTNZSVpzMjdFS1M4WnY3dkFwR1ExbTc1a01pcldXQ1IwRVkr?= =?utf-8?B?VGtXUCt5Y25WeENJWXJsUTNGRmZVMXU2TFU5M092eDJrVTZTZ3JINENOclNC?= =?utf-8?B?d3A4UXM5bDU5WklsN3lxYmxyYnYvVEF2SU1objQ5Q3U5Y0ZJK0d2ZWhoekxM?= =?utf-8?B?TmZlYjhpc2VGZjVURzRsZithVm1JOGwwanVLMW9kUW1Pb2QyUDdCVEFVQlFl?= =?utf-8?B?bXpiaXFBY2Z4OTcydFYzMEJwVlZCZkpnakg3cENFTTZETTN3ZW5ld3YxL0dZ?= =?utf-8?B?cVNXMlZUYk5RUHlReWUyTGFBNnRnM1VEK3dLRVY3VjE1WXVyS2hxQT09?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 590d1bb5-6e38-4bc5-74c6-08de73f7a3ef X-MS-Exchange-CrossTenant-AuthSource: DS0PR12MB6486.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2026 22:54:17.8853 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dm8Qyzaweu/B3AXD+k0BeQnidF7IwOvdin8G+s2ZyMfj6fX+qUYnkeo15UL2vOG0bULy72L7BM+8ATwvA/82mA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6885 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWRkIHNlbGYtdGVzdHMgZm9yIEJBUjEgYWNjZXNzIGR1cmluZyBkcml2ZXIgcHJvYmUgd2hlbgpD T05GSUdfTk9WQV9NTV9TRUxGVEVTVFMgaXMgZW5hYmxlZCAoZGVmYXVsdCBkaXNhYmxlZCkuIFRo aXMgcmVzdWx0cyBpbgp0ZXN0aW5nIHRoZSBWbW0sIEdQVSBidWRkeSBhbGxvY2F0b3IgYW5kIEJB UjEgcmVnaW9uIGFsbCBvZiB3aGljaCBzaG91bGQKZnVuY3Rpb24gY29ycmVjdGx5IGZvciB0aGUg dGVzdHMgdG8gcGFzcy4KCkNjOiBOaWtvbGEgRGp1a2ljIDxuZGp1a2ljQG52aWRpYS5jb20+ClNp Z25lZC1vZmYtYnk6IEpvZWwgRmVybmFuZGVzIDxqb2VsYWduZWxmQG52aWRpYS5jb20+Ci0tLQog ZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWcgICAgICAgIHwgIDEwICsrCiBkcml2ZXJzL2dw dS9ub3ZhLWNvcmUvZHJpdmVyLnJzICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvbm92YS1jb3Jl L2dwdS5ycyAgICAgICAgIHwgIDQyICsrKysrCiBkcml2ZXJzL2dwdS9ub3ZhLWNvcmUvbW0vYmFy X3VzZXIucnMgfCAyNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5n ZWQsIDMwNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvbm92YS1jb3Jl L0tjb25maWcgYi9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvS2NvbmZpZwppbmRleCA2NTEzMDA3YmY2 NmYuLjM1ZGU1NWFhYmNmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25m aWcKKysrIGIvZHJpdmVycy9ncHUvbm92YS1jb3JlL0tjb25maWcKQEAgLTE1LDMgKzE1LDEzIEBA IGNvbmZpZyBOT1ZBX0NPUkUKIAkgIFRoaXMgZHJpdmVyIGlzIHdvcmsgaW4gcHJvZ3Jlc3MgYW5k IG1heSBub3QgYmUgZnVuY3Rpb25hbC4KIAogCSAgSWYgTSBpcyBzZWxlY3RlZCwgdGhlIG1vZHVs ZSB3aWxsIGJlIGNhbGxlZCBub3ZhX2NvcmUuCisKK2NvbmZpZyBOT1ZBX01NX1NFTEZURVNUUwor CWJvb2wgIk1lbW9yeSBtYW5hZ2VtZW50IHNlbGYtdGVzdHMiCisJZGVwZW5kcyBvbiBOT1ZBX0NP UkUKKwloZWxwCisJICBFbmFibGUgc2VsZi10ZXN0cyBmb3IgdGhlIG1lbW9yeSBtYW5hZ2VtZW50 IHN1YnN5c3RlbS4gV2hlbiBlbmFibGVkLAorCSAgdGVzdHMgYXJlIHJ1biBkdXJpbmcgR1BVIHBy b2JlIHRvIHZlcmlmeSBQUkFNSU4gYXBlcnR1cmUgYWNjZXNzLAorCSAgcGFnZSB0YWJsZSB3YWxr aW5nLCBhbmQgQkFSMSB2aXJ0dWFsIG1lbW9yeSBtYXBwaW5nIGZ1bmN0aW9uYWxpdHkuCisKKwkg IFRoaXMgaXMgYSB0ZXN0aW5nIG9wdGlvbiBhbmQgaXMgZGVmYXVsdC1kaXNhYmxlZC4KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9kcml2ZXIucnMgYi9kcml2ZXJzL2dwdS9ub3Zh LWNvcmUvZHJpdmVyLnJzCmluZGV4IGQ4YjJlOTY3YmE0Yy4uN2QwZDA5OTM5ODM1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZHJpdmVyLnJzCisrKyBiL2RyaXZlcnMvZ3B1L25v dmEtY29yZS9kcml2ZXIucnMKQEAgLTkyLDYgKzkyLDggQEAgZm4gcHJvYmUocGRldjogJnBjaTo6 RGV2aWNlPENvcmU+LCBfaW5mbzogJlNlbGY6OklkSW5mbykgLT4gaW1wbCBQaW5Jbml0PFNlbGYs IEUKIAogICAgICAgICAgICAgT2sodHJ5X3Bpbl9pbml0IShTZWxmIHsKICAgICAgICAgICAgICAg ICBncHUgPC0gR3B1OjpuZXcocGRldiwgYmFyLmNsb25lKCksIGJhci5hY2Nlc3MocGRldi5hc19y ZWYoKSk/KSwKKyAgICAgICAgICAgICAgICAvLyBSdW4gb3B0aW9uYWwgR1BVIHNlbGZ0ZXN0cy4K KyAgICAgICAgICAgICAgICBfOiB7IGdwdS5ydW5fc2VsZnRlc3RzKHBkZXYpPyB9LAogICAgICAg ICAgICAgICAgIF9yZWcgPC0gYXV4aWxpYXJ5OjpSZWdpc3RyYXRpb246Om5ldygKICAgICAgICAg ICAgICAgICAgICAgcGRldi5hc19yZWYoKSwKICAgICAgICAgICAgICAgICAgICAgYyJub3ZhLWRy bSIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9ub3ZhLWNvcmUvZ3B1LnJzIGIvZHJpdmVycy9n cHUvbm92YS1jb3JlL2dwdS5ycwppbmRleCA0MjgxNDg3Y2E1MmUuLmZiYTZkZGJhNmEzZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL2dwdS5ycworKysgYi9kcml2ZXJzL2dwdS9u b3ZhLWNvcmUvZ3B1LnJzCkBAIC0zODAsNCArMzgwLDQ2IEBAIHB1YihjcmF0ZSkgZm4gdW5iaW5k KCZzZWxmLCBkZXY6ICZkZXZpY2U6OkRldmljZTxkZXZpY2U6OkNvcmU+KSB7CiAgICAgICAgICAg ICAuaW5zcGVjdCh8YmFyfCBzZWxmLnN5c21lbV9mbHVzaC51bnJlZ2lzdGVyKGJhcikpCiAgICAg ICAgICAgICAuaXNfZXJyKCkpOwogICAgIH0KKworICAgIC8vLyBSdW4gc2VsZnRlc3RzIG9uIHRo ZSBjb25zdHJ1Y3RlZCBbYEdwdWBdLgorICAgIHB1YihjcmF0ZSkgZm4gcnVuX3NlbGZ0ZXN0cygK KyAgICAgICAgbXV0IHNlbGY6IFBpbjwmbXV0IFNlbGY+LAorICAgICAgICBwZGV2OiAmcGNpOjpE ZXZpY2U8ZGV2aWNlOjpCb3VuZD4sCisgICAgKSAtPiBSZXN1bHQgeworICAgICAgICBzZWxmLmFz X211dCgpLnJ1bl9tbV9zZWxmdGVzdHMocGRldik/OworICAgICAgICBPaygoKSkKKyAgICB9CisK KyAgICAjW2NmZyhDT05GSUdfTk9WQV9NTV9TRUxGVEVTVFMpXQorICAgIGZuIHJ1bl9tbV9zZWxm dGVzdHMobXV0IHNlbGY6IFBpbjwmbXV0IFNlbGY+LCBwZGV2OiAmcGNpOjpEZXZpY2U8ZGV2aWNl OjpCb3VuZD4pIC0+IFJlc3VsdCB7CisgICAgICAgIHVzZSBjcmF0ZTo6ZHJpdmVyOjpCQVIxX1NJ WkU7CisKKyAgICAgICAgbGV0IG1tdV92ZXJzaW9uID0gTW11VmVyc2lvbjo6ZnJvbShzZWxmLnNw ZWMuY2hpcHNldC5hcmNoKCkpOworCisgICAgICAgIC8vIEJBUjEgc2VsZi10ZXN0cy4KKyAgICAg ICAgbGV0IGJhcjEgPSBBcmM6OnBpbl9pbml0KAorICAgICAgICAgICAgcGRldi5pb21hcF9yZWdp b25fc2l6ZWQ6OjxCQVIxX1NJWkU+KDEsIGMibm92YS1jb3JlL2JhcjEiKSwKKyAgICAgICAgICAg IEdGUF9LRVJORUwsCisgICAgICAgICk/OworICAgICAgICBsZXQgYmFyMV9hY2Nlc3MgPSBiYXIx LmFjY2VzcyhwZGV2LmFzX3JlZigpKT87CisKKyAgICAgICAgbGV0IHByb2ogPSBzZWxmLmFzX211 dCgpLnByb2plY3QoKTsKKyAgICAgICAgbGV0IGJhcjFfcGRlX2Jhc2UgPSBwcm9qLmdzcF9zdGF0 aWNfaW5mby5iYXIxX3BkZV9iYXNlKCk7CisgICAgICAgIGxldCBtbSA9IHByb2oubW0uYXNfcmVm KCkuZ2V0X3JlZigpOworCisgICAgICAgIGNyYXRlOjptbTo6YmFyX3VzZXI6OnJ1bl9zZWxmX3Rl c3QoCisgICAgICAgICAgICBwZGV2LmFzX3JlZigpLAorICAgICAgICAgICAgbW0sCisgICAgICAg ICAgICBiYXIxX2FjY2VzcywKKyAgICAgICAgICAgIGJhcjFfcGRlX2Jhc2UsCisgICAgICAgICAg ICBtbXVfdmVyc2lvbiwKKyAgICAgICAgKT87CisKKyAgICAgICAgT2soKCkpCisgICAgfQorCisg ICAgI1tjZmcobm90KENPTkZJR19OT1ZBX01NX1NFTEZURVNUUykpXQorICAgIGZuIHJ1bl9tbV9z ZWxmdGVzdHMoc2VsZjogUGluPCZtdXQgU2VsZj4sIF9wZGV2OiAmcGNpOjpEZXZpY2U8ZGV2aWNl OjpCb3VuZD4pIC0+IFJlc3VsdCB7CisgICAgICAgIE9rKCgpKQorICAgIH0KIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L25vdmEtY29yZS9tbS9iYXJfdXNlci5ycyBiL2RyaXZlcnMvZ3B1L25v dmEtY29yZS9tbS9iYXJfdXNlci5ycwppbmRleCA0YWY1NmFjNjI4YjYuLjI4ZGZiMTBlN2NlYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvbm92YS1jb3JlL21tL2Jhcl91c2VyLnJzCisrKyBiL2Ry aXZlcnMvZ3B1L25vdmEtY29yZS9tbS9iYXJfdXNlci5ycwpAQCAtMTU0LDMgKzE1NCwyNTMgQEAg Zm4gZHJvcCgmbXV0IHNlbGYpIHsKICAgICAgICAgfQogICAgIH0KIH0KKworLy8vIENoZWNrIGlm IHRoZSBQREIgaGFzIHZhbGlkLCBWUkFNLWJhY2tlZCBwYWdlIHRhYmxlcy4KKy8vLworLy8vIFJl dHVybnMgYEVycihFTk9FTlQpYCBpZiBwYWdlIHRhYmxlcyBhcmUgbWlzc2luZyBvciBub3QgaW4g VlJBTS4KKyNbY2ZnKENPTkZJR19OT1ZBX01NX1NFTEZURVNUUyldCitmbiBjaGVja192YWxpZF9w YWdlX3RhYmxlcyhtbTogJkdwdU1tLCBwZGJfYWRkcjogVnJhbUFkZHJlc3MpIC0+IFJlc3VsdCB7 CisgICAgdXNlIGNyYXRlOjptbTo6cGFnZXRhYmxlOjp7CisgICAgICAgIHZlcjI6OlBkZSwKKyAg ICAgICAgQXBlcnR1cmVQZGUsIC8vCisgICAgfTsKKworICAgIGxldCBtdXQgd2luZG93ID0gbW0u cHJhbWluKCkud2luZG93KCk/OworICAgIGxldCBwZGJfZW50cnlfcmF3ID0gd2luZG93LnRyeV9y ZWFkNjQocGRiX2FkZHIucmF3KCkpPzsKKyAgICBsZXQgcGRiX2VudHJ5ID0gUGRlOjpuZXcocGRi X2VudHJ5X3Jhdyk7CisKKyAgICBpZiAhcGRiX2VudHJ5LmlzX3ZhbGlkKCkgeworICAgICAgICBy ZXR1cm4gRXJyKEVOT0VOVCk7CisgICAgfQorCisgICAgaWYgcGRiX2VudHJ5LmFwZXJ0dXJlKCkg IT0gQXBlcnR1cmVQZGU6OlZpZGVvTWVtb3J5IHsKKyAgICAgICAgcmV0dXJuIEVycihFTk9FTlQp OworICAgIH0KKworICAgIE9rKCgpKQorfQorCisvLy8gUnVuIE1NIHN1YnN5c3RlbSBzZWxmLXRl c3RzIGR1cmluZyBwcm9iZS4KKy8vLworLy8vIFRlc3RzIHBhZ2UgdGFibGUgaW5mcmFzdHJ1Y3R1 cmUgYW5kIGBCQVIxYCBNTUlPIGFjY2VzcyB1c2luZyB0aGUgYEJBUjFgCisvLy8gYWRkcmVzcyBz cGFjZS4gVXNlcyB0aGUgYEdwdU1tYCdzIGJ1ZGR5IGFsbG9jYXRvciB0byBhbGxvY2F0ZSBwYWdl IHRhYmxlcworLy8vIGFuZCB0ZXN0IHBhZ2VzIGFzIG5lZWRlZC4KKyNbY2ZnKENPTkZJR19OT1ZB X01NX1NFTEZURVNUUyldCitwdWIoY3JhdGUpIGZuIHJ1bl9zZWxmX3Rlc3QoCisgICAgZGV2OiAm a2VybmVsOjpkZXZpY2U6OkRldmljZSwKKyAgICBtbTogJkdwdU1tLAorICAgIGJhcjE6ICZjcmF0 ZTo6ZHJpdmVyOjpCYXIxLAorICAgIGJhcjFfcGRiOiB1NjQsCisgICAgbW11X3ZlcnNpb246IE1t dVZlcnNpb24sCispIC0+IFJlc3VsdCB7CisgICAgdXNlIGNyYXRlOjptbTo6eworICAgICAgICB2 bW06OlZtbSwKKyAgICAgICAgUEFHRV9TSVpFLCAvLworICAgIH07CisgICAgdXNlIGtlcm5lbDo6 Z3B1OjpidWRkeTo6eworICAgICAgICBCdWRkeUZsYWdzLAorICAgICAgICBHcHVCdWRkeUFsbG9j UGFyYW1zLCAvLworICAgIH07CisgICAgdXNlIGtlcm5lbDo6c2l6ZXM6OnsKKyAgICAgICAgU1pf NEssCisgICAgICAgIFNaXzE2SywKKyAgICAgICAgU1pfMzJLLAorICAgICAgICBTWl82NEssIC8v CisgICAgfTsKKworICAgIC8vIFNlbGYtdGVzdHMgb25seSBzdXBwb3J0IE1NVSB2MiBmb3Igbm93 LgorICAgIGlmIG1tdV92ZXJzaW9uICE9IE1tdVZlcnNpb246OlYyIHsKKyAgICAgICAgZGV2X2lu Zm8hKAorICAgICAgICAgICAgZGV2LAorICAgICAgICAgICAgIk1NOiBTa2lwcGluZyBzZWxmLXRl c3RzIGZvciBNTVUgezo/fSAob25seSBWMiBzdXBwb3J0ZWQpXG4iLAorICAgICAgICAgICAgbW11 X3ZlcnNpb24KKyAgICAgICAgKTsKKyAgICAgICAgcmV0dXJuIE9rKCgpKTsKKyAgICB9CisKKyAg ICAvLyBUZXN0IHBhdHRlcm5zLgorICAgIGNvbnN0IFBBVFRFUk5fUFJBTUlOOiB1MzIgPSAweERF QURfQkVFRjsKKyAgICBjb25zdCBQQVRURVJOX0JBUjE6IHUzMiA9IDB4Q0FGRV9CQUJFOworCisg ICAgZGV2X2luZm8hKGRldiwgIk1NOiBTdGFydGluZyBzZWxmLXRlc3QuLi5cbiIpOworCisgICAg bGV0IHBkYl9hZGRyID0gVnJhbUFkZHJlc3M6Om5ldyhiYXIxX3BkYik7CisKKyAgICAvLyBDaGVj ayBpZiBpbml0aWFsIHBhZ2UgdGFibGVzIGFyZSBpbiBWUkFNLgorICAgIGlmIGNoZWNrX3ZhbGlk X3BhZ2VfdGFibGVzKG1tLCBwZGJfYWRkcikuaXNfZXJyKCkgeworICAgICAgICBkZXZfaW5mbyEo ZGV2LCAiTU06IFNlbGYtdGVzdCBTS0lQUEVEIC0gbm8gdmFsaWQgVlJBTSBwYWdlIHRhYmxlc1xu Iik7CisgICAgICAgIHJldHVybiBPaygoKSk7CisgICAgfQorCisgICAgLy8gU2V0IHVwIGEgdGVz dCBwYWdlIGZyb20gdGhlIGJ1ZGR5IGFsbG9jYXRvci4KKyAgICBsZXQgYWxsb2NfcGFyYW1zID0g R3B1QnVkZHlBbGxvY1BhcmFtcyB7CisgICAgICAgIHN0YXJ0X3JhbmdlX2FkZHJlc3M6IDAsCisg ICAgICAgIGVuZF9yYW5nZV9hZGRyZXNzOiAwLAorICAgICAgICBzaXplX2J5dGVzOiBTWl80Sy5p bnRvX3NhZmVfY2FzdCgpLAorICAgICAgICBtaW5fYmxvY2tfc2l6ZV9ieXRlczogU1pfNEsuaW50 b19zYWZlX2Nhc3QoKSwKKyAgICAgICAgYnVkZHlfZmxhZ3M6IEJ1ZGR5RmxhZ3M6OnRyeV9uZXco MCk/LAorICAgIH07CisKKyAgICBsZXQgdGVzdF9wYWdlX2Jsb2NrcyA9IEtCb3g6OnBpbl9pbml0 KG1tLmJ1ZGR5KCkuYWxsb2NfYmxvY2tzKCZhbGxvY19wYXJhbXMpLCBHRlBfS0VSTkVMKT87Cisg ICAgbGV0IHRlc3RfdnJhbV9vZmZzZXQgPSB0ZXN0X3BhZ2VfYmxvY2tzLml0ZXIoKS5uZXh0KCku b2tfb3IoRU5PTUVNKT8ub2Zmc2V0KCk7CisgICAgbGV0IHRlc3RfdnJhbSA9IFZyYW1BZGRyZXNz OjpuZXcodGVzdF92cmFtX29mZnNldCk7CisgICAgbGV0IHRlc3RfcGZuID0gUGZuOjpmcm9tKHRl c3RfdnJhbSk7CisKKyAgICAvLyBDcmVhdGUgYSBWTU0gb2Ygc2l6ZSA2NEsgdG8gdHJhY2sgdmly dHVhbCBtZW1vcnkgbWFwcGluZ3MuCisgICAgbGV0IG11dCB2bW0gPSBWbW06Om5ldyhwZGJfYWRk ciwgTW11VmVyc2lvbjo6VjIsIFNaXzY0Sy5pbnRvX3NhZmVfY2FzdCgpKT87CisKKyAgICAvLyBD cmVhdGUgYSB0ZXN0IG1hcHBpbmcuCisgICAgbGV0IG1hcHBlZCA9IHZtbS5tYXBfcGFnZXMobW0s ICZbdGVzdF9wZm5dLCBOb25lLCB0cnVlKT87CisgICAgbGV0IHRlc3RfdmZuID0gbWFwcGVkLnZm bl9zdGFydDsKKworICAgIC8vIFByZS1jb21wdXRlIHRlc3QgYWRkcmVzc2VzIGZvciB0aGUgUFJB TUlOIHRvIEJBUjEgcmVhZCB0ZXN0LgorICAgIGxldCB2Zm5fb2Zmc2V0OiB1c2l6ZSA9IHRlc3Rf dmZuLnJhdygpLmludG9fc2FmZV9jYXN0KCk7CisgICAgbGV0IGJhcjFfYmFzZV9vZmZzZXQgPSB2 Zm5fb2Zmc2V0LmNoZWNrZWRfbXVsKFBBR0VfU0laRSkub2tfb3IoRU9WRVJGTE9XKT87CisgICAg bGV0IGJhcjFfcmVhZF9vZmZzZXQ6IHVzaXplID0gYmFyMV9iYXNlX29mZnNldCArIDB4MTAwOwor ICAgIGxldCB2cmFtX3JlYWRfYWRkcjogdXNpemUgPSB0ZXN0X3ZyYW0ucmF3KCkgKyAweDEwMDsK KworICAgIC8vIFRlc3QgMTogV3JpdGUgdmlhIFBSQU1JTiwgcmVhZCB2aWEgQkFSMS4KKyAgICB7 CisgICAgICAgIGxldCBtdXQgd2luZG93ID0gbW0ucHJhbWluKCkud2luZG93KCk/OworICAgICAg ICB3aW5kb3cudHJ5X3dyaXRlMzIodnJhbV9yZWFkX2FkZHIsIFBBVFRFUk5fUFJBTUlOKT87Cisg ICAgfQorCisgICAgLy8gUmVhZCBiYWNrIHZpYSBCQVIxIGFwZXJ0dXJlLgorICAgIGxldCBiYXIx X3ZhbHVlID0gYmFyMS50cnlfcmVhZDMyKGJhcjFfcmVhZF9vZmZzZXQpPzsKKworICAgIGxldCB0 ZXN0MV9wYXNzZWQgPSBpZiBiYXIxX3ZhbHVlID09IFBBVFRFUk5fUFJBTUlOIHsKKyAgICAgICAg dHJ1ZQorICAgIH0gZWxzZSB7CisgICAgICAgIGRldl9lcnIhKAorICAgICAgICAgICAgZGV2LAor ICAgICAgICAgICAgIk1NOiBUZXN0IDEgRkFJTEVEIC0gRXhwZWN0ZWQgezojMDEweH0sIGdvdCB7 OiMwMTB4fVxuIiwKKyAgICAgICAgICAgIFBBVFRFUk5fUFJBTUlOLAorICAgICAgICAgICAgYmFy MV92YWx1ZQorICAgICAgICApOworICAgICAgICBmYWxzZQorICAgIH07CisKKyAgICAvLyBDbGVh bnVwIC0gaW52YWxpZGF0ZSBQVEUuCisgICAgdm1tLnVubWFwX3BhZ2VzKG1tLCBtYXBwZWQpPzsK KworICAgIC8vIFRlc3QgMjogVHdvLXBoYXNlIHByZXBhcmUvZXhlY3V0ZSBBUEkuCisgICAgbGV0 IHByZXBhcmVkID0gdm1tLnByZXBhcmVfbWFwKG1tLCAxLCBOb25lKT87CisgICAgbGV0IG1hcHBl ZDIgPSB2bW0uZXhlY3V0ZV9tYXAobW0sIHByZXBhcmVkLCAmW3Rlc3RfcGZuXSwgdHJ1ZSk/Owor ICAgIGxldCByZWFkYmFjayA9IHZtbS5yZWFkX21hcHBpbmcobW0sIG1hcHBlZDIudmZuX3N0YXJ0 KT87CisgICAgbGV0IHRlc3QyX3Bhc3NlZCA9IGlmIHJlYWRiYWNrID09IFNvbWUodGVzdF9wZm4p IHsKKyAgICAgICAgdHJ1ZQorICAgIH0gZWxzZSB7CisgICAgICAgIGRldl9lcnIhKGRldiwgIk1N OiBUZXN0IDIgRkFJTEVEIC0gVHdvLXBoYXNlIG1hcCByZWFkYmFjayBtaXNtYXRjaFxuIik7Cisg ICAgICAgIGZhbHNlCisgICAgfTsKKyAgICB2bW0udW5tYXBfcGFnZXMobW0sIG1hcHBlZDIpPzsK KworICAgIC8vIFRlc3QgMzogUmFuZ2UtY29uc3RyYWluZWQgYWxsb2NhdGlvbiB3aXRoIGEgaG9s ZSDigJQgZXhlcmNpc2VzIGJsb2NrLnNpemUoKS1kcml2ZW4KKyAgICAvLyBCQVIxIG1hcHBpbmcu IEEgNEsgaG9sZSBpcyBwdW5jaGVkIGF0IGJhc2UrMTZLLCB0aGVuIGEgc2luZ2xlIDMySyBhbGxv Y2F0aW9uCisgICAgLy8gaXMgcmVxdWVzdGVkIHdpdGhpbiBbYmFzZSwgYmFzZSszNkspLiBUaGUg YnVkZHkgYWxsb2NhdG9yIG11c3Qgc3BsaXQgYXJvdW5kIHRoZQorICAgIC8vIGhvbGUsIHJldHVy bmluZyBtdWx0aXBsZSBibG9ja3MgKGV4cGVjdGVkOiB7MTZLLCA0SywgOEssIDRLfSA9IDMySyB0 b3RhbCkuCisgICAgLy8gRWFjaCBibG9jayBpcyBtYXBwZWQgaW50byBCQVIxIGFuZCB2ZXJpZmll ZCB2aWEgUFJBTUlOIHJlYWQtYmFjay4KKyAgICAvLworICAgIC8vIEFkZHJlc3MgbGF5b3V0IChi YXNlID0gMHgxMDAwMCk6CisgICAgLy8gICBbICAgIDE2SyAgICBdIFtIT0xFIDRLXSBbNEtdIFsg OEsgXSBbNEtdCisgICAgLy8gICAweDEwMDAwICAgICAgIDB4MTQwMDAgIDB4MTUwMDAgMHgxNjAw MCAweDE4MDAwIDB4MTkwMDAKKyAgICBsZXQgcmFuZ2VfYmFzZTogdTY0ID0gU1pfNjRLLmludG9f c2FmZV9jYXN0KCk7CisgICAgbGV0IHJhbmdlX2ZsYWcgPSBCdWRkeUZsYWdzOjp0cnlfbmV3KEJ1 ZGR5RmxhZ3M6OlJBTkdFX0FMTE9DQVRJT04pPzsKKyAgICBsZXQgc3pfNGs6IHU2NCA9IFNaXzRL LmludG9fc2FmZV9jYXN0KCk7CisgICAgbGV0IHN6XzE2azogdTY0ID0gU1pfMTZLLmludG9fc2Fm ZV9jYXN0KCk7CisgICAgbGV0IHN6XzMya180azogdTY0ID0gKFNaXzMySyArIFNaXzRLKS5pbnRv X3NhZmVfY2FzdCgpOworCisgICAgLy8gUHVuY2ggYSA0SyBob2xlIGF0IGJhc2UrMTZLIHNvIHRo ZSBzdWJzZXF1ZW50IDMySyBhbGxvY2F0aW9uIG11c3Qgc3BsaXQuCisgICAgbGV0IF9ob2xlID0g S0JveDo6cGluX2luaXQobW0uYnVkZHkoKS5hbGxvY19ibG9ja3MoJkdwdUJ1ZGR5QWxsb2NQYXJh bXMgeworICAgICAgICBzdGFydF9yYW5nZV9hZGRyZXNzOiByYW5nZV9iYXNlICsgc3pfMTZrLAor ICAgICAgICBlbmRfcmFuZ2VfYWRkcmVzczogcmFuZ2VfYmFzZSArIHN6XzE2ayArIHN6XzRrLAor ICAgICAgICBzaXplX2J5dGVzOiBTWl80Sy5pbnRvX3NhZmVfY2FzdCgpLAorICAgICAgICBtaW5f YmxvY2tfc2l6ZV9ieXRlczogU1pfNEsuaW50b19zYWZlX2Nhc3QoKSwKKyAgICAgICAgYnVkZHlf ZmxhZ3M6IHJhbmdlX2ZsYWcsCisgICAgfSksIEdGUF9LRVJORUwpPzsKKworICAgIC8vIEFsbG9j YXRlIDMySyB3aXRoaW4gW2Jhc2UsIGJhc2UrMzZLKS4gVGhlIGhvbGUgZm9yY2VzIHRoZSBhbGxv Y2F0b3IgdG8gcmV0dXJuCisgICAgLy8gc3BsaXQgYmxvY2tzIHdob3NlIHNpemVzIGFyZSBkZXRl cm1pbmVkIGJ5IGJ1ZGR5IGFsaWdubWVudC4KKyAgICBsZXQgYmxvY2tzID0gS0JveDo6cGluX2lu aXQobW0uYnVkZHkoKS5hbGxvY19ibG9ja3MoJkdwdUJ1ZGR5QWxsb2NQYXJhbXMgeworICAgICAg ICBzdGFydF9yYW5nZV9hZGRyZXNzOiByYW5nZV9iYXNlLAorICAgICAgICBlbmRfcmFuZ2VfYWRk cmVzczogcmFuZ2VfYmFzZSArIHN6XzMya180aywKKyAgICAgICAgc2l6ZV9ieXRlczogU1pfMzJL LmludG9fc2FmZV9jYXN0KCksCisgICAgICAgIG1pbl9ibG9ja19zaXplX2J5dGVzOiBTWl80Sy5p bnRvX3NhZmVfY2FzdCgpLAorICAgICAgICBidWRkeV9mbGFnczogcmFuZ2VfZmxhZywKKyAgICB9 KSwgR0ZQX0tFUk5FTCk/OworCisgICAgbGV0IG11dCB0ZXN0M19wYXNzZWQgPSB0cnVlOworICAg IGxldCBtdXQgdG90YWxfc2l6ZSA9IDB1NjQ7CisKKyAgICBmb3IgYmxvY2sgaW4gYmxvY2tzLml0 ZXIoKSB7CisgICAgICAgIHRvdGFsX3NpemUgKz0gYmxvY2suc2l6ZSgpOworCisgICAgICAgIC8v IE1hcCBhbGwgcGFnZXMgb2YgdGhpcyBibG9jay4KKyAgICAgICAgbGV0IHBhZ2Vfc2l6ZTogdTY0 ID0gUEFHRV9TSVpFLmludG9fc2FmZV9jYXN0KCk7CisgICAgICAgIGxldCBudW1fcGFnZXM6IHVz aXplID0gKGJsb2NrLnNpemUoKSAvIHBhZ2Vfc2l6ZSkuaW50b19zYWZlX2Nhc3QoKTsKKworICAg ICAgICBsZXQgbXV0IHBmbnMgPSBLVmVjOjpuZXcoKTsKKyAgICAgICAgZm9yIGogaW4gMC4ubnVt X3BhZ2VzIHsKKyAgICAgICAgICAgIGxldCBqX3U2NDogdTY0ID0gai5pbnRvX3NhZmVfY2FzdCgp OworICAgICAgICAgICAgcGZucy5wdXNoKAorICAgICAgICAgICAgICAgIFBmbjo6ZnJvbShWcmFt QWRkcmVzczo6bmV3KAorICAgICAgICAgICAgICAgICAgICBibG9jay5vZmZzZXQoKQorICAgICAg ICAgICAgICAgICAgICAgICAgKyBqX3U2NC5jaGVja2VkX211bChwYWdlX3NpemUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLm9rX29yKEVPVkVSRkxPVyk/LAorICAgICAgICAgICAgICAg ICkpLAorICAgICAgICAgICAgICAgIEdGUF9LRVJORUwsCisgICAgICAgICAgICApPzsKKyAgICAg ICAgfQorCisgICAgICAgIGxldCBtYXBwZWQgPSB2bW0ubWFwX3BhZ2VzKG1tLCAmcGZucywgTm9u ZSwgdHJ1ZSk/OworICAgICAgICBsZXQgYmFyMV9iYXNlX3ZmbjogdXNpemUgPSBtYXBwZWQudmZu X3N0YXJ0LnJhdygpLmludG9fc2FmZV9jYXN0KCk7CisgICAgICAgIGxldCBiYXIxX2Jhc2UgPSBi YXIxX2Jhc2VfdmZuLmNoZWNrZWRfbXVsKFBBR0VfU0laRSkub2tfb3IoRU9WRVJGTE9XKT87CisK KyAgICAgICAgZm9yIGogaW4gMC4ubnVtX3BhZ2VzIHsKKyAgICAgICAgICAgIGxldCBwYWdlX2Jh cjFfb2ZmID0gYmFyMV9iYXNlICsgaiAqIFBBR0VfU0laRTsKKyAgICAgICAgICAgIGxldCBqX3U2 NDogdTY0ID0gai5pbnRvX3NhZmVfY2FzdCgpOworICAgICAgICAgICAgbGV0IHBhZ2VfcGh5cyA9 IGJsb2NrLm9mZnNldCgpCisgICAgICAgICAgICAgICAgKyBqX3U2NC5jaGVja2VkX211bChQQUdF X1NJWkUuaW50b19zYWZlX2Nhc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgLm9rX29yKEVPVkVS RkxPVyk/OworCisgICAgICAgICAgICBiYXIxLnRyeV93cml0ZTMyKFBBVFRFUk5fQkFSMSwgcGFn ZV9iYXIxX29mZik/OworCisgICAgICAgICAgICBsZXQgcHJhbWluX3ZhbCA9IHsKKyAgICAgICAg ICAgICAgICBsZXQgbXV0IHdpbmRvdyA9IG1tLnByYW1pbigpLndpbmRvdygpPzsKKyAgICAgICAg ICAgICAgICB3aW5kb3cudHJ5X3JlYWQzMihwYWdlX3BoeXMuaW50b19zYWZlX2Nhc3QoKSk/Cisg ICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiBwcmFtaW5fdmFsICE9IFBBVFRFUk5fQkFS MSB7CisgICAgICAgICAgICAgICAgZGV2X2VyciEoCisgICAgICAgICAgICAgICAgICAgIGRldiwK KyAgICAgICAgICAgICAgICAgICAgIk1NOiBUZXN0IDMgRkFJTEVEIGJsb2NrIG9mZnNldCB7OiN4 fSBwYWdlIHt9ICh2YWw9ezojeH0pXG4iLAorICAgICAgICAgICAgICAgICAgICBibG9jay5vZmZz ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgaiwKKyAgICAgICAgICAgICAgICAgICAgcHJhbWlu X3ZhbAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgdGVzdDNfcGFzc2VkID0g ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2bW0udW5tYXBfcGFn ZXMobW0sIG1hcHBlZCk/OworICAgIH0KKworICAgIC8vIFZlcmlmeSBhZ2dyZWdhdGU6IGFsbCBy ZXR1cm5lZCBibG9jayBzaXplcyBtdXN0IHN1bSB0byBhbGxvY2F0aW9uIHNpemUuCisgICAgaWYg dG90YWxfc2l6ZSAhPSBTWl8zMksuaW50b19zYWZlX2Nhc3QoKSB7CisgICAgICAgIGRldl9lcnIh KAorICAgICAgICAgICAgZGV2LAorICAgICAgICAgICAgIk1NOiBUZXN0IDMgRkFJTEVEIC0gdG90 YWwgc2l6ZSB7fSAhPSBleHBlY3RlZCB7fVxuIiwKKyAgICAgICAgICAgIHRvdGFsX3NpemUsCisg ICAgICAgICAgICBTWl8zMksKKyAgICAgICAgKTsKKyAgICAgICAgdGVzdDNfcGFzc2VkID0gZmFs c2U7CisgICAgfQorCisgICAgaWYgdGVzdDFfcGFzc2VkICYmIHRlc3QyX3Bhc3NlZCAmJiB0ZXN0 M19wYXNzZWQgeworICAgICAgICBkZXZfaW5mbyEoZGV2LCAiTU06IEFsbCBzZWxmLXRlc3RzIFBB U1NFRFxuIik7CisgICAgICAgIE9rKCgpKQorICAgIH0gZWxzZSB7CisgICAgICAgIGRldl9lcnIh KGRldiwgIk1NOiBTZWxmLXRlc3RzIEZBSUxFRFxuIik7CisgICAgICAgIEVycihFSU8pCisgICAg fQorfQotLSAKMi4zNC4xCgo=