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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 54E5FC7618D for ; Wed, 15 Mar 2023 14:31:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=4qNQgN/NT+WyjGOKNQr0J3MkToEfkvHbZMh1Uh8hAt8=; b=Qb5fRJzIU2MiGSmZqLyHiVFi6Z Slrc+ot9gSFEI3E+A+ibk0wh/4FP0MLDyIB46lVDL1yGskwd6XN8yNiBIAf39RujR3dS8dMDU4Uyo 2gosSy613UImIShEQyC/cMVKM0naMhI/CnjjsbX7DNib756cJHTtYW2SL/b5zuOlJxzy5TqoSL2xj Dk5DC8ehTALxEcU0aPygO15yV2Cli4VJCiczTKgwVXdvV2fjNfpwyDI0qAtq1x9tDd26Kb8oJISjw gZazqXdODRlIUXHcEkMTrtNfNs7R2KABEBakNUpK+aPyDeT/bjV+kNnWLri4VnnrQF5ahQAXSuihT rPVGydaQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pcS98-00DcaT-2t; Wed, 15 Mar 2023 14:30:30 +0000 Received: from mail-dm6nam04on20710.outbound.protection.outlook.com ([2a01:111:f400:7e8b::710] helo=NAM04-DM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pcS94-00DcZ7-2e for linux-arm-kernel@lists.infradead.org; Wed, 15 Mar 2023 14:30:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V8jCySBjiyCsEe+Vv8yH3TY0jXIxe+rgZjuJptOZzEqYYDfWmqsoemknfhZTzK4E/khaW+dF0uGAhXgC/k9YO0hbHQ+MSahcSwwDB51MNuiGAfYlpaXQ/E1+GaLF3FYtJ1FdvrqN0DsWL/x1kLDoJvoajsW6Kbp1/t2GezHjS+tFCcvnUWKtBzMsTvL45UCgJ8hv7Y/dCwV/HfNfikm2LaGTFMtF3VZ6WBJqiRSmnVC93PLD0e9SkQGSSaBHBlxqH+JkaUi5L5zjad2o67qzPcLxzMTUSgfd9fKeapcbTvGp3ImhiDh9dZ8Rq9DASsGjkZFXnFKbe5xwA4Wp1yvIow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kSHnYNRKn7aGBnGLqa5BPx8bn9e2JKaWb6/dq3MoM6Y=; b=jskBUTpqaVxxF/Kt0fHNg7MIOTkuDnqzCUZRDr3SGpRwV+Q0Wb/LsTuVNP3BhoWjjFthkoNLyJk1o6W8sx1nhjj2FXUGo71e8rELv58THn6XBJVNTQXEEwMMDpvEa1YVFuAAKYGsprUE+Vge+WdAtN4h8/U07zARS925DV8RFUQ3YxXTmgE7un0sc+JlKsVOcpIH/JPBmTDKKjnGQdpmQ2Ha0KTGf0Jfs3y6xhRBi/m8zLFl9IfRpyLrBMz6F93TtzxTC6IVB5siLqyezBIWaeq+3RuE8u8OPwld1Xepqjp0nqp6J1KacoO+b7IaySnm7cq4lAefqP8jr4rbuqmu7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none header.from=os.amperecomputing.com; dkim=pass header.d=os.amperecomputing.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=os.amperecomputing.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kSHnYNRKn7aGBnGLqa5BPx8bn9e2JKaWb6/dq3MoM6Y=; b=api1OQNgs/BdB/Ht3O8q31ZaYNmHHJQ9kJg3AroD+bDD+wmgPlpnd3TpFZykk/yuwxiajajyclpd5QyFvb2+5mDZbgAgrdQLuw1dNQiWwABO0lH5Yse+QcnM/+UycHk5jwPSwHvRB0+EMVKfih0L6CYzBB/38RpYbQxYROxG01s= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=os.amperecomputing.com; Received: from DM8PR01MB6824.prod.exchangelabs.com (2603:10b6:8:23::24) by DM5PR01MB2763.prod.exchangelabs.com (2603:10b6:3:fa::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.29; Wed, 15 Mar 2023 14:30:20 +0000 Received: from DM8PR01MB6824.prod.exchangelabs.com ([fe80::fc8b:5e5e:a850:7f0a]) by DM8PR01MB6824.prod.exchangelabs.com ([fe80::fc8b:5e5e:a850:7f0a%8]) with mapi id 15.20.6178.026; Wed, 15 Mar 2023 14:30:20 +0000 Message-ID: <4a089101-eb5d-f6df-992c-0b1711dda878@os.amperecomputing.com> Date: Wed, 15 Mar 2023 20:00:12 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v2 1/2] PCI/ATS: Add a helper function to configure ATS STU of a PF Content-Language: en-US To: Sathyanarayanan Kuppuswamy , Bjorn Helgaas Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, joro@8bytes.org, bhelgaas@google.com, robin.murphy@arm.com, will@kernel.org, jean-philippe@linaro.org, darren@os.amperecomputing.com, scott@os.amperecomputing.com References: <20230314171046.GA1655423@bhelgaas> <63619dd6-8e59-89f1-8e3a-766ed9501f1d@linux.intel.com> From: Ganapatrao Kulkarni In-Reply-To: <63619dd6-8e59-89f1-8e3a-766ed9501f1d@linux.intel.com> X-ClientProxiedBy: CH2PR14CA0037.namprd14.prod.outlook.com (2603:10b6:610:56::17) To DM8PR01MB6824.prod.exchangelabs.com (2603:10b6:8:23::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM8PR01MB6824:EE_|DM5PR01MB2763:EE_ X-MS-Office365-Filtering-Correlation-Id: 5ad834b7-5ab1-4937-28be-08db2561ce26 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2LyClq1hYK6Tvku0KJKFGEepwo/JgYeq30+on5v9JbMA0GKcf6davshmlw2oIG1iDlQHVfEugVJxq1oG028iefWMuQZ7+5EsYHeR9nsTkVRkKvwV7w++h0xMjWY6dfWHksohiENBLBz3sRXVWucdloEcsQBi2jbd0UScOiArNyAGz0uQSrKolbOUlaqFROcETL0akKcdupD8rz+WTOZDNmdlccd3CLufB97G0Opnb/1WMt/mprb8Vv1VcLyIrg1X2HUgDe6N7xA+KjOOqcmDVFSxP5Mt35J7cc6UaEnR2G3bqAHVp1u6AcIsNUeNhCn4hJekHdZ2IIOqg0v/FXMhCG1ZtmblLobH9bRg8cTZF4n979A4Y8whaLDgYVVv9y5ee/v/cKEPnVK7BfOwlliHB79oFykNrg2LCJ1lUaa3/rUP8Xf2qGPPkEC/l4U4ij5CGnkY7/aV6PZqdm/+zpBztQUwa6uL4KYVy+7zHfYwLHVJpP5cIekhtO3GW5WTcWr+Kvu91VE+kSs/4cC0KjqnU1Izrga2qCfWTgL8NSZS5ivMAgPMRA/i+A8DxiYwuvrEkLKokM4tLBCPv9EtV4wTwJXNtqyjGZVGJeHockJJNy9v96tCzTeXVhFtGowmIM1cLTyLY1P2okBf2upeVh3kGDUkrPIQTbtxKb7QFVqf+l/D1Mk+GPcjyNvCQCRm9rOD X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR01MB6824.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(396003)(136003)(376002)(39850400004)(346002)(451199018)(2906002)(7416002)(5660300002)(2616005)(186003)(83380400001)(478600001)(53546011)(107886003)(6666004)(6512007)(6506007)(26005)(6486002)(966005)(66476007)(66556008)(66946007)(86362001)(31696002)(41300700001)(8936002)(8676002)(4326008)(110136005)(316002)(38100700002)(66899018)(31686004)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bEE2cGVHM2V4bFdrbldpNTQ4cjZnWkJtd0pQbmNPMk1YNG80UnJxSzhGMXVE?= =?utf-8?B?UHBJRmdSZ2N1azJBZkdRczRQY0t4dGl5dVdrZStXY284eFh0L050anlTSnBl?= =?utf-8?B?NjRQU3NRSVNWcDNWQzNuOUYydzZXc1hnVTU0Ulp3MzBNM2d5a2JtRTRzWExM?= =?utf-8?B?KzZoVTdYck5hTTJQa0VGQ0psZlRJMDFyd3VEY205Z1NOQnEzK09WYUE5NzJT?= =?utf-8?B?cm9CY1M4QXVoUmpON0xMNFI0QVUwR1RCa3kzbkVNWURUZE8zcEVDMTM1N1lm?= =?utf-8?B?aEtXa3RtaU9tTlRHZmhoODU3YmlkOExlSVE1N1ZQcStVRk82Y2xhOW1zbTNV?= =?utf-8?B?M0tlN1ozOE81a1dQQW5HZUNITTdHYlprUFZwRG9uMy96enUyWTJjM0hUK3F1?= =?utf-8?B?cWNsK1oyRDBjeEwxbVR6c25RV1E5eGp0NVVSbGVEVkZXUSt2Q1I5Z3I3MUdC?= =?utf-8?B?K0o4RUxxMi9wNW50bTBoT1M5VUtzRnYvQ2NJaXZoWUJ1eVp2ZlBBVkluRlc0?= =?utf-8?B?V1ZzK05GZlY5TUtZQTFQVHJOdlcwZUcrSUEwTHRjaEV1K3dQNkp4Uzd1UC9y?= =?utf-8?B?SG0rNlNtUUJaMmN1aVZJc0FhazcxajBPM0tWT0N3Qm4zUjdMaXRKUERxSWdG?= =?utf-8?B?ZnNlVXN2VFUwOWdlekNlUEpKUHFSL3pYSldCV3BJSElXRWdwZmNSMGFMbUk3?= =?utf-8?B?YmFSZy9jbDFqUXM5RG5yZ3l1QkhnM2pVWHNsTEd1VDRxRzZUcFpvbnBWZTJW?= =?utf-8?B?ZVNaenpYTDZCSTBXNWhjRmhUOUdDRTNaV0ZqSklXT0d2MEtXK1UzVnhJNWpK?= =?utf-8?B?RFNHZS82UFhuMkx6cmhWUTM0SzJXWGs3QnRIaUd3NGt5UDZiZk5WOVpVNm9P?= =?utf-8?B?K253YXozdG42bzdITjJGN2d0VHg4b3ByY0E4VmZtbDFkRENORVdERU9SVW16?= =?utf-8?B?MXhxRkptOU01ajhLbXYzeThZeml1TExzc1lmb1ZkMVR1dlBPTjdDNmlBKzFv?= =?utf-8?B?VjE4djlkWGtYNCtQa1MrK2lEQWFyM1cwRGw3UUl4dFVlVnBTaEFCalNuOGgz?= =?utf-8?B?UkxzeGZhVDhoc3FMazhBZjlSZTkyalpmKzBCS3NYT2JHbVlTait2MUFlRENW?= =?utf-8?B?OUlDMm43dWlQUzQ4Q0t0Rlk0a3gyTk55VU52MDJaL2ZDcGo3WkkveWd0VGJh?= =?utf-8?B?ZnZrQWdNV0M5TnRoOUxtbk1RMUdJVWtHdlhHMW1VM2lCYlBSWlVkZDhSN0tX?= =?utf-8?B?WXptRlZGRUt4aXcxVFFrSWkxN1VvazZZMUZ5QWJMQkVIcWRlNjZKTk1mK2Rl?= =?utf-8?B?UnZXdUVseXJHWjNLb3FLSVpIcEJPZzQ4QkV1SGUrR1lPTzgzYkFxMUFveFRH?= =?utf-8?B?Z2NHSWo5MXpFYVNDNWVzTkhLRTUrb05xTEZzL0VsYmdhWXRYYnc1NzNqWndy?= =?utf-8?B?QzRiV1JVaDJsaUw2Z2M1THBUdEtEanFYOUQvNDBFd3RzRVVmUEF4OEdSNzFY?= =?utf-8?B?KzJBRHlFNFZUVmkvWVN4NjljYUlKandhTnE2TEdKTVliVXkvbTUwdWovUk01?= =?utf-8?B?NDg3bVVYWkNNRlRZM2RPQ1JDTzVwMWFLdzYwQkJscTkvNG56YTI5ZkFNRHc4?= =?utf-8?B?cW1MNEJMQlBHbHNBZDRXamd6RkZTeS9RWmpQQ1BmZ2dsUEE1U3Z1U0FDaVp4?= =?utf-8?B?a2RXZk1ZT0dJcjdESnU1YXpKZzFlWGJyQ1RTZGxJRi9iTk9hSWt4eXFXbnN5?= =?utf-8?B?dEw4d3piWnFkRDZQVEJ3eCtyWjRJazlVcld1eWFGWGxLWGcxQ3ZlTzRXa3l5?= =?utf-8?B?TVBkakZraVlrS3NLOEZBMk8wc25EMm1nSml5S0ZYd09rQ3FpYndLa29jSkdr?= =?utf-8?B?Tlo0TzFhU0tlT1ZFbWtyMGRUelc2Z0s2RzVpKzJyT1lQM2xwUzVxT3JQeUNj?= =?utf-8?B?a29oN25aQTdsbjd2QklQKzRHZ1JRL01MU3JDU3d5aFJmVnlYV25pMFVnRThN?= =?utf-8?B?M2dacVBsWTZ5S0IvSjJnVjUva25QaXlrZG1zelJ0eFN0K1RmRHl4UE1JOC9K?= =?utf-8?B?VjVTbmhiUEdpUSs1WVJ2Y3RwWCtvMkJLeW95Wnk4QkNpa0RXZUNETnI3aUJE?= =?utf-8?B?bzRGc1dxN1FqVTdpSUlZVFJWK2hxL2YvQTJxNHMvbG82VE10Q3FFNVBITWl2?= =?utf-8?Q?BoEJEeK5ZaOY1dVUHd4Tt9JFcnNppsp158IArJ0zXDhb?= X-OriginatorOrg: os.amperecomputing.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ad834b7-5ab1-4937-28be-08db2561ce26 X-MS-Exchange-CrossTenant-AuthSource: DM8PR01MB6824.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2023 14:30:20.5282 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bX1vGU0SlDydZl9HUdwqwoBLjqMNcPJQ+UGVGT4lTvQecNuTSR0FzUb4QyBZcMRP2QjKJAYGq0sGpWVW93HhgjbyCHWH4kw4XBriTdr9wxxdACc6PUq24VGg0K6IZYLk X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR01MB2763 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230315_073027_135066_815FFEF1 X-CRM114-Status: GOOD ( 31.60 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAxNC0wMy0yMDIzIDExOjQyIHBtLCBTYXRoeWFuYXJheWFuYW4gS3VwcHVzd2FteSB3cm90 ZToKPiAKPiAKPiBPbiAzLzE0LzIzIDEwOjEwIEFNLCBCam9ybiBIZWxnYWFzIHdyb3RlOgo+PiBP biBUdWUsIE1hciAxNCwgMjAyMyBhdCAwOTo1MDowNkFNIC0wNzAwLCBTYXRoeWFuYXJheWFuYW4g S3VwcHVzd2FteSB3cm90ZToKPj4+IE9uIDMvMTQvMjMgOTowMiBBTSwgQmpvcm4gSGVsZ2FhcyB3 cm90ZToKPj4+PiBPbiBUdWUsIE1hciAxNCwgMjAyMyBhdCAwODowNjowN1BNICswNTMwLCBHYW5h cGF0cmFvIEt1bGthcm5pIHdyb3RlOgo+Pj4+PiBPbiAxNC0wMy0yMDIzIDA2OjIyIHBtLCBTYXRo eWFuYXJheWFuYW4gS3VwcHVzd2FteSB3cm90ZToKPj4+Pj4+IE9uIDMvMTQvMjMgMzowOCBBTSwg R2FuYXBhdHJhbyBLdWxrYXJuaSB3cm90ZToKPj4+Pj4+PiBPbiAxNC0wMy0yMDIzIDA0OjAwIGFt LCBTYXRoeWFuYXJheWFuYW4gS3VwcHVzd2FteSB3cm90ZToKPj4+Pj4+Pj4gT24gMy8xMy8yMyAy OjEyIFBNLCBCam9ybiBIZWxnYWFzIHdyb3RlOgo+Pj4+Pj4+Pj4gT24gTW9uLCBGZWIgMjcsIDIw MjMgYXQgMDg6MjE6MzZQTSAtMDgwMCwgR2FuYXBhdHJhbyBLdWxrYXJuaSB3cm90ZToKPj4+Pj4+ Pj4+PiBBcyBwZXIgUENJIHNwZWNpZmljYXRpb24gKFBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNh dGlvbgo+Pj4+Pj4+Pj4+IFJldmlzaW9uIDYuMCwgU2VjdGlvbiAxMC41KSBib3RoIFBGIGFuZCBW RnMgb2YgYSBQQ0kgRVAKPj4+Pj4+Pj4+PiBhcmUgcGVybWl0dGVkIHRvIGJlIGVuYWJsZWQgaW5k ZXBlbmRlbnRseSBmb3IgQVRTCj4+Pj4+Pj4+Pj4gY2FwYWJpbGl0eSwgaG93ZXZlciB0aGUgU1RV KFNtYWxsZXN0IFRyYW5zbGF0aW9uIFVuaXQpIGlzCj4+Pj4+Pj4+Pj4gc2hhcmVkIGJldHdlZW4g UEYgYW5kIFZGcy4gRm9yIFZGcywgaXQgaXMgaGFyZHdpcmVkIHRvCj4+Pj4+Pj4+Pj4gWmVybyBh bmQgdGhlIGFzc29jaWF0ZWQgUEYncyB2YWx1ZSBhcHBsaWVzIHRvIFZGcy4KPj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4+IEluIHRoZSBjdXJyZW50IGNvZGUsIHRoZSBTVFUgaXMgYmVpbmcgY29uZmlndXJl ZCB3aGlsZQo+Pj4+Pj4+Pj4+IGVuYWJsaW5nIHRoZSBQRiBBVFMuICBIZW5jZSwgaXQgaXMgbm90 IGFibGUgdG8gZW5hYmxlIEFUUwo+Pj4+Pj4+Pj4+IGZvciBWRnMsIGlmIGl0IGlzIG5vdCBlbmFi bGVkIG9uIHRoZSBhc3NvY2lhdGVkIFBGCj4+Pj4+Pj4+Pj4gYWxyZWFkeS4KPj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4+IEFkZGluZyBhIGZ1bmN0aW9uIHBjaV9hdHNfc3R1X2NvbmZpZ3VyZSgpLCB3aGlj aCBjYW4gYmUKPj4+Pj4+Pj4+PiBjYWxsZWQgdG8gY29uZmlndXJlIHRoZSBTVFUgZHVyaW5nIFBG IGVudW1lcmF0aW9uLiAgTGF0dGVyCj4+Pj4+Pj4+Pj4gZW51bWVyYXRpb25zIG9mIFZGcyBjYW4g c3VjY2Vzc2Z1bGx5IGVuYWJsZSBBVFMKPj4+Pj4+Pj4+PiBpbmRlcGVuZGVudGx5Lgo+Pj4+Cj4+ Pj4+Pj4+Pj4gQEAgLTQ2LDYgKzQ2LDM1IEBAIGJvb2wgcGNpX2F0c19zdXBwb3J0ZWQoc3RydWN0 IHBjaV9kZXYgKmRldikKPj4+Pj4+Pj4+PiAgIMKgIH0KPj4+Pj4+Pj4+PiAgIMKgIEVYUE9SVF9T WU1CT0xfR1BMKHBjaV9hdHNfc3VwcG9ydGVkKTsKPj4+Pj4+Pj4+PiAgIMKgICsvKioKPj4+Pj4+ Pj4+PiArICogcGNpX2F0c19zdHVfY29uZmlndXJlIC0gQ29uZmlndXJlIFNUVSBvZiBhIFBGLgo+ Pj4+Pj4+Pj4+ICsgKiBAZGV2OiB0aGUgUENJIGRldmljZQo+Pj4+Pj4+Pj4+ICsgKiBAcHM6IHRo ZSBJT01NVSBwYWdlIHNoaWZ0Cj4+Pj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4+Pj4gKyAqIFJldHVybnMg MCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBvbiBmYWlsdXJlLgo+Pj4+Pj4+Pj4+ICsgKi8KPj4+ Pj4+Pj4+PiAraW50IHBjaV9hdHNfc3R1X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBp bnQgcHMpCj4+Pj4+Pj4+Pj4gK3sKPj4+Pj4+Pj4+PiArwqDCoMKgIHUxNiBjdHJsOwo+Pj4+Pj4+ Pj4+ICsKPj4+Pj4+Pj4+PiArwqDCoMKgIGlmIChkZXYtPmF0c19lbmFibGVkIHx8IGRldi0+aXNf dmlydGZuKQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4+Pj4+Pj4+Cj4+ Pj4+Pj4+PiBJIG1pZ2h0IHJldHVybiBhbiBlcnJvciBmb3IgdGhlIFZGIGNhc2Ugb24gdGhlIGFz c3VtcHRpb24KPj4+Pj4+Pj4+IHRoYXQgaXQncyBsaWtlbHkgYW4gZXJyb3IgaW4gdGhlIGNhbGxl ci7CoCBJIGd1ZXNzIG9uZSBjb3VsZAo+Pj4+Pj4+Pj4gYXJndWUgdGhhdCBpdCBzaW1wbGlmaWVz IHRoZSBjYWxsZXIgaWYgaXQgZG9lc24ndCBoYXZlIHRvCj4+Pj4+Pj4+PiBjaGVjayBmb3IgUEYg dnMgVkYuwqAgQnV0IHRoZSBmYWN0IHRoYXQgU1RVIGlzIHNoYXJlZCBiZXR3ZWVuCj4+Pj4+Pj4+ PiBQRiBhbmQgVkZzIGlzIGFuIGltcG9ydGFudCBwYXJ0IG9mIHVuZGVyc3RhbmRpbmcgaG93IEFU Uwo+Pj4+Pj4+Pj4gd29ya3MsIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGJlIGF3YXJlIG9mIHRoZSBk aXN0aW5jdGlvbgo+Pj4+Pj4+Pj4gYW55d2F5Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJIGhhdmUgYWxy ZWFkeSBhc2tlZCB0aGlzIHF1ZXN0aW9uLiBCdXQgbGV0IG1lIHJlcGVhdCBpdC4KPj4+Pj4+Pj4K Pj4+Pj4+Pj4gV2UgZG9uJ3QgaGF2ZSBhbnkgY2hlY2tzIGZvciB0aGUgUEYgY2FzZSBoZXJlLiBU aGF0IG1lYW5zIHlvdQo+Pj4+Pj4+PiBjYW4gcmUtY29uZmlndXJlIHRoZSBTVFUgYXMgbWFueSB0 aW1lcyBhcyB5b3Ugd2FudCB1bnRpbCBBVFMKPj4+Pj4+Pj4gaXMgZW5hYmxlZCBpbiBQRi4gU28s IGlmIHRoZXJlIGFyZSBhY3RpdmUgVkZzIHdoaWNoIHVzZXMgdGhpcwo+Pj4+Pj4+PiBTVFUsIGNh biBQRiByZS1jb25maWd1cmUgdGhlIFNUVSBhdCB3aWxsPwo+Pj4+Pj4+Cj4+Pj4+Pj4gSU1PLCBT aW5jZSBTVFUgaXMgc2hhcmVkLCBwcm9ncmFtbWluZyBpdCBtdWx0aXBsZSB0aW1lcyBpcyBub3Qg ZXhwZWN0ZWQgZnJvbSBjYWxsZXJzIGNvZGUgZG8gaXQsIGhvd2V2ZXIgd2UgY2FuIGFkZCBiZWxv dyBjaGVjayB0byBhbGxvdyB0byBwcm9ncmFtIFNUVSBvbmNlIGZyb20gYSBQRi4KPj4+Pj4+Pgo+ Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9hdHMuYyBiL2RyaXZlcnMvcGNpL2F0cy5j Cj4+Pj4+Pj4gaW5kZXggMTYxMWJmYTFkNWRhLi5mN2JiMDEwNjhlMTggMTAwNjQ0Cj4+Pj4+Pj4g LS0tIGEvZHJpdmVycy9wY2kvYXRzLmMKPj4+Pj4+PiArKysgYi9kcml2ZXJzL3BjaS9hdHMuYwo+ Pj4+Pj4+IEBAIC02MCw2ICs2MCwxMCBAQCBpbnQgcGNpX2F0c19zdHVfY29uZmlndXJlKHN0cnVj dCBwY2lfZGV2ICpkZXYsIGludCBwcykKPj4+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgIGlmIChkZXYt PmF0c19lbmFibGVkIHx8IGRldi0+aXNfdmlydGZuKQo+Pj4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4+Pj4+Cj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoCAv KiBDb25maWd1cmVkIGFscmVhZHkgKi8KPj4+Pj4+PiArwqDCoMKgwqDCoMKgIGlmIChkZXYtPmF0 c19zdHUpCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ Pj4+Pgo+Pj4+Pj4gVGhlb3JldGljYWxseSwgeW91IGNhbiByZS1jb25maWd1cmUgU1RVIGFzIGxv bmcgYXMgbm8gb25lIGlzIHVzaW5nCj4+Pj4+PiBpdC4gSW5zdGVhZCBvZiB0aGlzIGNoZWNrLCBp cyB0aGVyZSBhIHdheSB0byBjaGVjayB3aGV0aGVyIHRoZXJlCj4+Pj4+PiBhcmUgYWN0aXZlIFZN cyB3aGljaCBlbmFibGVzIEFUUz8KPj4+Pj4KPj4+Pj4gWWVzIEkgYWdyZWUsIHRoZXJlIGlzIG5v IGxpbWl0YXRpb24gb24gaG93IG1hbnkgdGltZXMgeW91IHdyaXRlIFNUVQo+Pj4+PiBiaXRzLCBi dXQgcHJhY3RpY2FsbHkgaXQgaXMgaGFwcGVuaW5nIHdoaWxlIFBGIGlzIGVudW1lcmF0ZWQuCj4+ Pj4+Cj4+Pj4+IFRoZSB1c2FnZSBvZiBmdW5jdGlvbiBwY2lfYXRzX3N0dV9jb25maWd1cmUgaXMg YWxtb3N0Cj4+Pj4+IHNpbWlsYXIoc3Vic2V0KSB0byBwY2lfZW5hYmxlX2F0cyBhbmQgb25seSBk aWZmZXJlbmNlIGlzIG9uZSBkb2VzCj4+Pj4+IEFUUyBlbmFibGUgKyBTVFUgcHJvZ3JhbSBhbmQg YW5vdGhlciBkb2VzIG9ubHkgU1RVIHByb2dyYW0uCj4+Pj4KPj4+PiBXaGF0IHdvdWxkIHlvdSB0 aGluayBvZiByZW1vdmluZyB0aGUgU1RVIHVwZGF0ZSBmZWF0dXJlIGZyb20KPj4+PiBwY2lfZW5h YmxlX2F0cygpIHNvIGl0IGFsd2F5cyBmYWlscyBpZiBwY2lfYXRzX3N0dV9jb25maWd1cmUoKSBo YXMgbm90Cj4+Pj4gYmVlbiBjYWxsZWQsIGV2ZW4gd2hlbiBjYWxsZWQgb24gdGhlIFBGLCBlLmcu LAo+Pj4+Cj4+Pj4gICAgaWYgKHBzICE9IHBjaV9waHlzZm4oZGV2KS0+YXRzX3N0dSkKPj4+PiAg ICAgIHJldHVybiAtRUlOVkFMOwo+Pj4KPj4+IElmIHdlIGFyZSByZW1vdmluZyB0aGUgU1RVIHVw ZGF0ZSBmcm9tIHBjaV9lbmFibGVfYXRzKCksIHdoeQo+Pj4gZXZlbiBhbGxvdyBwYXNzaW5nICJw cyAocGFnZSBzaGlmdCkiIHBhcmFtZXRlcj8gSU1PLCB3ZSBjYW4gYXNzdW1lIHRoYXQKPj4+IGZv ciBTVFUgcmVjb25maWd1cmUsIHVzZXJzIHdpbGwgY2FsbCBwY2lfYXRzX3N0dV9jb25maWd1cmUo KS4KPj4KPj4gVGhlIHJlYXNvbiB0byBwYXNzICJwcyIgd291bGQgYmUgdG8gdmVyaWZ5IHRoYXQg dGhlIFNUVSB0aGUgY2FsbGVyCj4+IHBsYW5zIHRvIHVzZSBtYXRjaGVzIHRoZSBhY3R1YWwgU1RV Lgo+IAo+IERvIHdlIHJlYWxseSBuZWVkIHRvIHZlcmlmeSBpdD8gTXkgdGhpbmtpbmcgaXMsIGJ5 IGludHJvZHVjaW5nCj4gcGNpX2F0c19zdHVfY29uZmlndXJlKCkgd2UgYXJlIGFscmVhZHkgdHJ5 aW5nIHRvIGRlY291cGxlIHRoZSBTVFUgY29uZmlnCj4gZnJvbSBwY2lfZW5hYmxlX2F0cygpLiBT byB3aHkgYWdhaW4gY2hlY2sgZm9yIGl0IHdoZW4gZW5hYmxpbmcgQVRTPwoKQUZBSUssIHdlIGFy ZSBub3QgZGVjb3VwbGluZyBTVFUgZnJvbSBwY2lfZW5hYmxlX2F0cywgdGhlcmUgaXMgYSBjYXNl IAp3aGVyZSBBVFMgaXMgbm90IGVuYWJsZWQgb24gUEYgKGhvc3Qga2VybmVsIGJvb3RlZCBpbiBw YXNzdGhyb3VnaCkgd2hlcmUgCmFzIEFUUyBnZXRzIGVuYWJsZWQgb24gVkYgd2hpbGUgaXQgaXMg YXR0YWNoZWQgdG8gYSBWTSh0aHJvdWdoIHZmaW8gCmRyaXZlcikuIEluIHN1Y2ggY2FzZSwgZHVy aW5nIFBGIGVudW1lcmF0aW9uLCBwY2lfYXRzX3N0dV9jb25maWd1cmUgaXMgCmNhbGxlZCB0byBw cm9ncmFtIFNUVSBhbmQgYWxsb3cgQVRTIHRvIGJlIGVuYWJsZWQgb24gVkZzLgoKSW4gbm9ybWFs IGNhc2UsIFBGIGVuYWJsZXMgQVRTIGFuZCBTVFUgaXMgcHJvZ3JhbW1lZCBhbmQgbm8gaXNzdWUg d2hpbGUgCmVuYWJsaW5nIHRoZSBWRnMuCgo+IAo+Pgo+Pj4gU2luY2UgemVybyBpcyBhIHZhbGlk IFNUVSwgZW5hYmxpbmcgQVRTIGNhbiBiZSBkZWNvdXBsZWQgZnJvbSBTVFUKPj4+IHVwZGF0ZS4K Pj4+Cj4+Pj4gICAgcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBkZXYtPmF0c19jYXAgKyBQQ0lf QVRTX0NUUkwsICZjdHJsKTsKPj4+PiAgICBjdHJsIHw9IFBDSV9BVFNfQ1RSTF9FTkFCTEU7Cj4+ Pj4gICAgcGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgZGV2LT5hdHNfY2FwICsgUENJX0FUU19D VFJMLCBjdHJsKTsKPj4+Pgo+Pj4+IFdvdWxkIHByb2JhYmx5IGFsc28gaGF2ZSB0byBzZXQgImRl di0+YXRzX3N0dSA9IDAiIGluCj4+Pj4gcGNpX2Rpc2FibGVfYXRzKCkgdG8gYWxsb3cgdGhlIHBv c3NpYmlsaXR5IG9mIGNhbGxpbmcKPj4+PiBwY2lfYXRzX3N0dV9jb25maWd1cmUoKSBhZ2Fpbi4K Pj4+Pgo+Pj4+PiBJTU8sIEkgZG9udCB0aGluaywgdGhlcmUgaXMgYW55IG5lZWQgdG8gZmluZCBo b3cgbWFueSBhY3RpdmUgVk1zCj4+Pj4+IHdpdGggYXR0YWNoZWQgVkZzIGFuZCBpdCBpcyBub3Qg ZG9uZSBmb3IgcGNpX2VuYWJsZV9hdHMgYXMgd2VsbC4KPj4+Pgo+Pj4+IEVuYWJsaW5nIG9yIGRp c2FibGluZyBBVFMgaW4gYSBQRiBvciBWRiBoYXMgbm8gZWZmZWN0IG9uIG90aGVyCj4+Pj4gZnVu Y3Rpb25zLgo+Pj4+Cj4+Pj4gQnV0IGNoYW5naW5nIFNUVSB3aGlsZSBhIFZGIGhhcyBBVFMgZW5h YmxlZCB3b3VsZCBkZWZpbml0ZWx5IGJyZWFrIGFueQo+Pj4+IHVzZXIgb2YgdGhhdCBWRiwgc28g aWYgaXQncyBwcmFjdGljYWwgdG8gdmVyaWZ5IHRoYXQgbm8gVkZzIGhhdmUgQVRTCj4+Pj4gZW5h YmxlZCwgSSB0aGluayB3ZSBzaG91bGQuCj4+Pgo+Pj4gSSBhbHNvIHRoaW5rIGl0IGlzIGJldHRl ciB0byBjaGVjayBmb3IgYSBhdHNfZW5hYmxlZCBzdGF0dXMgb2YgVkYgYmVmb3JlCj4+PiBjb25m aWd1cmluZyB0aGUgU1RVLgo+Pj4KPj4+IE1heSBiZSBzb21ldGhpbmcgbGlrZSBiZWxvdyAodW50 ZXN0ZWQpLAo+Pj4KPj4+IHN0YXRpYyBpbnQgaXNfYXRzX2VuYWJsZWRfaW5fdmYoc3RydWN0IHBj aV9kZXYgKmRldikKPj4+IHsKPj4+ICAgICAgICAgIHN0cnVjdCBwY2lfc3Jpb3YgKmlvdiA9IGRl di0+c3Jpb3Y7Cj4+PiAgICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqdmRldjsKPj4+Cj4+PiAgICAg ICAgICBpZiAoZGV2LT5pc192aXJ0Zm4pCj4+PiAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOwo+Pj4KPj4+ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwY2lfc3Jpb3ZfZ2V0X3RvdGFs dmZzKHBkZXYpOyBpKyspIHsKPj4+ICAgICAgICAgICAgICAgICAgdmRldiA9IHBjaV9nZXRfZG9t YWluX2J1c19hbmRfc2xvdChwY2lfZG9tYWluX25yKGRldi0+YnVzKSwKPj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfaW92X3ZpcnRmbl9idXMoZGV2 LCBpKSwKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Y2lfaW92X3ZpcnRmbl9kZXZmbihkZXYsIGkpKTsKPj4KPj4gSSB3b3VsZCB0cnkgaGFyZCB0byBh dm9pZCBwY2lfZ2V0X2RvbWFpbl9idXNfYW5kX3Nsb3QoKS4gIFRoYXQncwo+PiBleHBlbnNpdmUg KHNlYXJjaGVzICphbGwqIFBDSSBkZXZzIHdpdGggZm9yX2VhY2hfcGNpX2RldigpKSBhbmQKPj4g cmVxdWlyZXMgZGVhbGluZyB3aXRoIHJlZmVyZW5jZSBjb3VudHMuCj4+Cj4+IE1heWJlIGFuIGF0 b21pYyBjb3VudCBpbiB0aGUgUEYgb2YgVkZzIHdpdGggQVRTIGVuYWJsZWQuCj4+Cj4+PiAgICAg ICAgICAgICAgICAgIGlmICh2ZGV2ICYmIHZkZXYtPmF0c19lbmFibGVkKQo+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAxOwo+Pj4gICAgICAgICAgfQo+Pj4KPj4+ICAgICAgICAg IHJldHVybiAwOwo+Pj4KPj4+IH0KPj4+Cj4+PiBpbnQgcGNpX2F0c19zdHVfY29uZmlndXJlKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwcykKPj4+IHsKPj4+IC4uLgo+Pj4gaWYgKGlzX2F0c19l bmFibGVkX2luX3ZmKGRldikpCj4+PiAgICAgcmV0dXJuIC1FQlVTWTsKPj4+Cj4+Pj4KPj4+Pj4g QWxzbyB0aGUgY2FsbGVyIGhhcyB0aGUgcmVxdWlyZW1lbnQgdG8gY2FsbCBlaXRoZXIKPj4+Pj4g cGNpX2F0c19zdHVfY29uZmlndXJlIG9yIHBjaV9lbmFibGVfYXRzIHdoaWxlIGVudW1lcmF0aW5n IHRoZSBQRi4KPj4+Pj4KPj4+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgIGlmICghcGNpX2F0c19zdXBw b3J0ZWQoZGV2KSkKPj4+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVJTlZBTDsKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+ICvCoMKgwqAgaWYg KCFwY2lfYXRzX3N1cHBvcnRlZChkZXYpKQo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVJTlZBTDsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gK8KgwqDCoCBpZiAocHMgPCBQQ0lf QVRTX01JTl9TVFUpCj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+ Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiArwqDCoMKgIGRldi0+YXRzX3N0dSA9IHBzOwo+Pj4+Pj4+ Pj4+ICvCoMKgwqAgcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBkZXYtPmF0c19jYXAgKyBQQ0lf QVRTX0NUUkwsICZjdHJsKTsKPj4+Pj4+Pj4+PiArwqDCoMKgIGN0cmwgfD0gUENJX0FUU19DVFJM X1NUVShkZXYtPmF0c19zdHUgLSBQQ0lfQVRTX01JTl9TVFUpOwo+Pj4+Pj4+Pj4+ICvCoMKgwqAg cGNpX3dyaXRlX2NvbmZpZ193b3JkKGRldiwgZGV2LT5hdHNfY2FwICsgUENJX0FUU19DVFJMLCBj dHJsKTsKPj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4gK8KgwqDCoCByZXR1cm4gMDsKPj4+Pj4+Pj4+ PiArfQo+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfYXRzX3N0dV9jb25maWd1cmUp Owo+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+PiAgIMKgIC8qKgo+Pj4+Pj4+Pj4+ICAgwqDCoCAqIHBj aV9lbmFibGVfYXRzIC0gZW5hYmxlIHRoZSBBVFMgY2FwYWJpbGl0eQo+Pj4+Pj4+Pj4+ICAgwqDC oCAqIEBkZXY6IHRoZSBQQ0kgZGV2aWNlCj4+Pj4+Pj4+Pj4gQEAgLTY4LDggKzk3LDggQEAgaW50 IHBjaV9lbmFibGVfYXRzKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwcykKPj4+Pj4+Pj4+PiAg IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+Pj4+Pj4+PiAgIMKgIMKgwqDC oMKgwqAgLyoKPj4+Pj4+Pj4+PiAtwqDCoMKgwqAgKiBOb3RlIHRoYXQgZW5hYmxpbmcgQVRTIG9u IGEgVkYgZmFpbHMgdW5sZXNzIGl0J3MgYWxyZWFkeSBlbmFibGVkCj4+Pj4+Pj4+Pj4gLcKgwqDC oMKgICogd2l0aCB0aGUgc2FtZSBTVFUgb24gdGhlIFBGLgo+Pj4+Pj4+Pj4+ICvCoMKgwqDCoCAq IE5vdGUgdGhhdCBlbmFibGluZyBBVFMgb24gYSBWRiBmYWlscyB1bmxlc3MgaXQncyBhbHJlYWR5 Cj4+Pj4+Pj4+Pj4gK8KgwqDCoMKgICogY29uZmlndXJlZCB3aXRoIHRoZSBzYW1lIFNUVSBvbiB0 aGUgUEYuCj4+Pj4+Pj4+Pj4gICDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4+Pj4+PiAgIMKgwqDCoMKg wqAgY3RybCA9IFBDSV9BVFNfQ1RSTF9FTkFCTEU7Cj4+Pj4+Pj4+Pj4gICDCoMKgwqDCoMKgIGlm IChkZXYtPmlzX3ZpcnRmbikgewo+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L3BjaS1hdHMuaCBiL2luY2x1ZGUvbGludXgvcGNpLWF0cy5oCj4+Pj4+Pj4+Pj4gaW5kZXggZGY1 NGNkNWIxNWRiLi43ZDYyYTkyYWFmMjMgMTAwNjQ0Cj4+Pj4+Pj4+Pj4gLS0tIGEvaW5jbHVkZS9s aW51eC9wY2ktYXRzLmgKPj4+Pj4+Pj4+PiArKysgYi9pbmNsdWRlL2xpbnV4L3BjaS1hdHMuaAo+ Pj4+Pj4+Pj4+IEBAIC04LDYgKzgsNyBAQAo+Pj4+Pj4+Pj4+ICAgwqAgLyogQWRkcmVzcyBUcmFu c2xhdGlvbiBTZXJ2aWNlICovCj4+Pj4+Pj4+Pj4gICDCoCBib29sIHBjaV9hdHNfc3VwcG9ydGVk KHN0cnVjdCBwY2lfZGV2ICpkZXYpOwo+Pj4+Pj4+Pj4+ICAgwqAgaW50IHBjaV9lbmFibGVfYXRz KHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwcyk7Cj4+Pj4+Pj4+Pj4gK2ludCBwY2lfYXRzX3N0 dV9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHBzKTsKPj4+Pj4+Pj4+PiAgIMKg IHZvaWQgcGNpX2Rpc2FibGVfYXRzKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwo+Pj4+Pj4+Pj4+ICAg wqAgaW50IHBjaV9hdHNfcXVldWVfZGVwdGgoc3RydWN0IHBjaV9kZXYgKmRldik7Cj4+Pj4+Pj4+ Pj4gICDCoCBpbnQgcGNpX2F0c19wYWdlX2FsaWduZWQoc3RydWN0IHBjaV9kZXYgKmRldik7Cj4+ Pj4+Pj4+Pj4gQEAgLTE2LDYgKzE3LDggQEAgc3RhdGljIGlubGluZSBib29sIHBjaV9hdHNfc3Vw cG9ydGVkKHN0cnVjdCBwY2lfZGV2ICpkKQo+Pj4+Pj4+Pj4+ICAgwqAgeyByZXR1cm4gZmFsc2U7 IH0KPj4+Pj4+Pj4+PiAgIMKgIHN0YXRpYyBpbmxpbmUgaW50IHBjaV9lbmFibGVfYXRzKHN0cnVj dCBwY2lfZGV2ICpkLCBpbnQgcHMpCj4+Pj4+Pj4+Pj4gICDCoCB7IHJldHVybiAtRU5PREVWOyB9 Cj4+Pj4+Pj4+Pj4gK3N0YXRpYyBpbmxpbmUgaW50IHBjaV9hdHNfc3R1X2NvbmZpZ3VyZShzdHJ1 Y3QgcGNpX2RldiAqZCwgaW50IHBzKQo+Pj4+Pj4+Pj4+ICt7IHJldHVybiAtRU5PREVWOyB9Cj4+ Pj4+Pj4+Pj4gICDCoCBzdGF0aWMgaW5saW5lIHZvaWQgcGNpX2Rpc2FibGVfYXRzKHN0cnVjdCBw Y2lfZGV2ICpkKSB7IH0KPj4+Pj4+Pj4+PiAgIMKgIHN0YXRpYyBpbmxpbmUgaW50IHBjaV9hdHNf cXVldWVfZGVwdGgoc3RydWN0IHBjaV9kZXYgKmQpCj4+Pj4+Pj4+Pj4gICDCoCB7IHJldHVybiAt RU5PREVWOyB9Cj4+Pgo+Pj4gLS0gCj4+PiBTYXRoeWFuYXJheWFuYW4gS3VwcHVzd2FteQo+Pj4g TGludXggS2VybmVsIERldmVsb3Blcgo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4+PiBsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAo+ Pj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4+PiBodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwKPiAKClRoYW5r cywKR2FuYXBhdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo=