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 35B5AC433F5 for ; Tue, 8 Feb 2022 21:03:59 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:Cc:To:Subject:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=SYTkUp1Jjz0EU17FT1GA+5i0zRK1JHdv5uE2fjOmSeU=; b=c/qRxhAsE5SscFOOVY/K9ms5hV uVhIPer2gk5h2oP6EjSPoK9FtG8uhLzT3SHwjFQ6I1u1Njss++/5lEOMeXplMSPvHrEjiiBlQfNUG X7ip6t6Z0njEBbkLoZ6fKTGBIvslmGSQu3WVch5ArLVrBi012y8Er64gSVJpu9kczpxZA2J7uQl1n HM7P6iAbNmx3mSiTF6ZHOuaJA+TEgOGRljC0yeeIxuzGGjpqsP8fEGSFU9plK7bAqX++5KkgX6TgB QrNkulrRi1RLxNreruGKfG5uRnbCl42WXdL3CWlNmIYODnBcxd9RSu71dT39EqoKkV49muITKOFPV AnZJX6Og==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHXbP-00FZEX-1o; Tue, 08 Feb 2022 21:00:43 +0000 Received: from mout.kundenserver.de ([212.227.17.10]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHXbH-00FZCh-1A; Tue, 08 Feb 2022 21:00:40 +0000 Received: from [192.168.1.107] ([37.4.249.169]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MtOSu-1oAsVS2ABC-00urlz; Tue, 08 Feb 2022 22:00:24 +0100 Subject: Re: [PATCH v5 04/11] media: bcm2835-unicam: Add support for CCP2/CSI2 camera interface To: Jean-Michel Hautbois Cc: dave.stevenson@raspberrypi.com, devicetree@vger.kernel.org, kernel-list@raspberrypi.com, laurent.pinchart@ideasonboard.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, lukasz@jany.st, mchehab@kernel.org, naush@raspberrypi.com, robh@kernel.org, tomi.valkeinen@ideasonboard.com, bcm-kernel-feedback-list@broadcom.com References: <20220208155027.891055-1-jeanmichel.hautbois@ideasonboard.com> <20220208155027.891055-5-jeanmichel.hautbois@ideasonboard.com> From: Stefan Wahren Autocrypt: addr=stefan.wahren@i2se.com; keydata= LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tClZlcnNpb246IEdudVBHIHYy CgptUUlOQkZ0NmdCTUJFQUN1Yi9wQmV2SHhidkplZnlaRzMySklObW4yYnNFUFgyNVY2ZmVq bXlZd21DR0tqRnRMCi9Eb1VNRVZIRHhDSjQ3Qk1YbzM0NGZIVjFDM0FudWRnTjFCZWhMb0J0 TEh4bW5lQ3pnSDNLY1B0V1c3cHRqNEcKdEp2OUNRRFp5MjdTS29FUHh5YUk4Q0YweWdSeEpj NzJNOUk5d21zUFo1YlVIc0x1WVdNcVE3SmNSbVBzNkQ4ZwpCa2srOC95bmdFeU5FeHd4SnBS MXlsajVianhXREh5WVF2dUo1THpaS3VPOUxCM2xYVnNjNGJxWEVqYzZWRnVaCkZDQ2svc3lp by9ZaHNlOE4rUXN4N01RYWd6NHdLVWtRUWJmWGcxVnFrVG5BaXZYczQyVm5Ja211NWd6SXcv MHQKUkp2NTBGUmhIaHhweUtBSThCOG5oTjhRdng3TVZrUGM1dkRmZDN1R1lXNDdKUGhWUUJj VXdKd05rLzQ5RjllQQp2ZzJtdE1QRm5GT1JrV1VSdlArRzZGSmZtNitDdk92N1lmUDF1ZXdB aTRsbitKTzFnK2dqVklXbC9XSnB5MG5UCmlwZGZlSDlkSGtnU2lmUXVuWWN1Y2lzTXlvUmJG OTU1dENna0VZOUVNRWRZMXQ4aUdEaUNnWDZzNTBMSGJpM2sKNDUzdWFjcHhmUVhTYUF3UGtz bDhNa0NPc3YyZUVyNElOQ0hZUUR5WmljbEJ1dUNnOEVOYlI2QUdWdFpTUGNRYgplbnpTektS Wm9POUNhcUlEK2ZhdkxpQi9kaHptSEErOWJnSWhtWGZ2WFJMRFp6ZThwbzFkeXQzRTFzaFhp ZGRaClBBOE51SlZ6RUl0MmxtSTZWOHBaRHBuMjIxcmZLaml2UlFpYW9zNTRUZ1pqak1ZSTdu bko3ZTZ4endBUkFRQUIKdENCVGRHVm1ZVzRnVjJGb2NtVnVJRHgzWVdoeVpXNXpkRUJuYlhn dWJtVjBQb2tDTndRVEFRZ0FJUVVDWElkYwo0Z0liQXdVTENRZ0hBZ1lWQ0FrS0N3SUVGZ0lE QVFJZUFRSVhnQUFLQ1JDVWdld1BFWkR5MjFPVEQvOUdpWkxkCnRSWWNteVJKZ2x0aVFRekFp UWRjSUQ3OGxHb1dwL3grci92Y1U2YjZqdVl1ZVR3Z1Iwclc3djdsMklSQnlEN24KSEp4YSt0 SVNvUVpCZ2hvbE1JZmI5TXRoR09KTENZNzdrL1FoQWhuMzJOR1prZWp3OXR6a3MvNDBtclpT VVQ4NApaeWJzUVhyTE0vSFI2VElJL0RlUEIwbktEM0ppcHBzMlVIUUQ5cUQySWpFd1NRUGxI akNPckVaaDQ1UFo3bTkrClo5M0x6aVRlc1dabFlRdUxpSndzNHJLcHRIVzFkL3dSZWxzaG1t NlFxY0wybDRDL2U0MGVEQjlncTRkU1poOVgKUEVZbGxpeU5RaDdhMkxTZHVtRTFyK2NTd0lq RS91ZHRSdmRPOWFLb0psT2JVSzVkTmpTUEg3d0tUYndkWGRZRApHUHdEaFhkNThOQXdyK1BY QmxQajB0STFMQ3ErTEJ4ZUt6aFdYK0dWcTlEb2pWanlVREV4Rk5Ga1h1b0M3ZzhtClY5VDB0 ZUJpdVpSbm91WEt3VjJGcHRaT0hIN0JVRVd0a0t0aGgxZXRmT1dwaWdCemtVN2JQc2ZJWVQr cnk5dGIKMW9KK3Y0MVBOYXFaRW1QVXBKeHZmek5UN3Ayd01lRDdaajlmMHJ1YlJQdExBSjJR R2pyRkhzdVh3QU9xcHl6ZQoxOEVidHNZazBOMHp1SEVoY2orUEJJQmZoMFlJWWQ1MW9mNkdJ aU95UjlxMFhYdHBsVUo3VDIvSDF1UXFrWGxwCitnVzRWa2lmc2NJckl1eWZueFpXMTJlSXZq NnlicVdMN2FZS0dZbVQ2aUxDUGJIWXlZY2F5bDRFa0ZjckNGN0UKZTBXVC9zY1ZNaE8vNVgv SGFOQTVIQngvcjUycGdMY3Y0aTlNeExRbVUzUmxabUZ1SUZkaGFISmxiaUE4YzNSbApabUZ1 TG5kaGFISmxia0JwTW5ObExtTnZiVDZKQWpnRUV3RUNBQ0lGQWx0NmdCTUNHd01HQ3drSUJ3 TUNCaFVJCkFna0tDd1FXQWdNQkFoNEJBaGVBQUFvSkVKU0I3QThSa1BMYmpic1AvamdqYVNz NUh0bGtBSXZXUytGcm15N2MKaG5jT0F4TFRWL0Q2UkV3SU95R0poRkt3d29pck55UTJnOXZV YTNZQ1lDZjFmSjh3RWhhS09COWQwTHBNUm5MNApkRVQ4ZDgyMzhFL3BLK0hxTktpSXNKaHM2 SnNLOFpnalZRR3JtbWZua0dyWisxdjBIQnV4ZGljZ0duUC9XdHVBClVsOGw2Mi9BTGJheXlq KzYxQ2xyc0V0UklhcU82N0xJWXdQaVBEUkkrWGlNek5pR3pIRi8xUTZHUjAyUkg2YTMKRjg5 ejhhUHhjSGkxWnZDdDJ5a3o2VUVjaHpQMHI1Z3FGSisvTC9VcHU4ME1YaVk0djVlSWFCNTJn VlBnaXlNQQpsTDJkRHMxbUladm5yUkxSWTJ0YjNtQVlOa1Y1QjVJRFQzcGtXeTZrS281T0Nn SytZZFlPUjhGTloyb04ydDhPCnJLK1ZudGFLN01NU0tIbG1ZL3NPd3RSbEVoMU9CbXJjQ3dH d21wLzA1R2tSNDZmL0lzaFJWZUZPUmF3K0dBcXQKUDIrQ0ZhMkNOQS9JSG5aTm95aWtsRHpQ UUhVVUdzck5wcERyaFg5Sm1oQm1nMXYyeXdIMU5YdTFpRGZQMUJBdwpLZ29rdDVmNVVhUkY5 c0FBNTN2V0V2YlVVTjllZXNGR0x6UFdkSkdRNWhwZC9WSDVJUXk5U0JyaC93SWNla3E1Cm4w a042cGJUSHhHRTUyU2kvTVZJa05UdURaM2FwbjJqbERaNHBPdHBCWEkydlAzYlBPK05pcUJa anNVM3R4TGkKV2R2MkZqeXp6NlhMUndlV1JZVkw1SGE2TER0eG9yMnZ1NlVQMDdwOXh6MXhS WmFPRFczb1lsSEZ6WXBhNFc1ZwpMSGIybEVrSXVVZlNjaWNHYmpqQXRDbFRkR1ZtWVc0Z1Yy Rm9jbVZ1SUR4emRHVm1ZVzR1ZDJGb2NtVnVRR2x1CkxYUmxZMmd1WTI5dFBva0NOd1FUQVFn QUlRVUNYSWRlaHdJYkF3VUxDUWdIQWdZVkNBa0tDd0lFRmdJREFRSWUKQVFJWGdBQUtDUkNV Z2V3UEVaRHkyeUhURC85VUY3UWxEa0d4elE3QWFDSTZOOTVpUWY4LzFvU1VhRE51Mlk2SQpL K0R6UXBiMVRiVE9yM1ZKd3dZOGEzT1d6NU5MU09MTVdlVnh0K29zTW1sUUlHdWJEM09EWko4 aXpQbEcvSnJOCnQ1elNkbU41SUE1ZjNlc1dXUVZLdmdoWkFnVERxZHB2K1pIVzJFbXhuQUox dUxGWFhlUWQzVVpjQzVyMy9nL3YKU2FNbzl4ZWszSjVtTnVEbTcxbEVXc0FzL0JBY0ZjK3lu TGh4d0JXQld3c3Z3UjhiSHRKNURPTVd2YUt1RHNrcApJR0ZVZS9LYjJCK2pyYXZRM1RuNnMv SHFKTTBjZXhTSHo1cGUrMHNHdlArdDlKNzIzNEJGUXdlRkV4cmlleThVCkl4T3I0WEFiYWFi U3J5WW5VL3pWSDlVMWkyQUlRWk1XSkFldkN2VmdRL1UrTmVSaFh1ZGU5WVVtRE1EbzJzQjIK VkFGRUFxaUYyUVVIUEEybThhN0VPM3lmTDRyTWswaUh6TElLdmg2L3JIOFFDWThpM1h4VE5M OWlDTHpCV3UvTgpPbkNBYlMremx2TFphaVNNaDVFZnV4VHR2NFBsVmRFamY2MlArWkhJRDE2 Z1VEd0VtYXpMQU1yeDY2NmpINWt1ClVDVFZ5bWJMMFR2Qis2TDZBUmw4QU55TTRBRG1rV2tw eU0yMmtDdUlTWUFFZlFSM3VXWFo5WWd4YVBNcWJWK3cKQnJoSmc0SGFONkM2eFRxR3YzcjRC MmFxYjc3L0NWb1JKMVo5Y3BIQ3dpT3pJYUFtdnl6UFU2TXhDRFhaOEZnWQpsVDR2MjNHNWlt SlAyemdYNXMrRjZBQ1VKOVVRUEQwdVRmK0o5RGEycitza2gvc1dPbloreWNvSE5CUXZvY1pF Ck5BSFFmN2tDRFFSYmVvQVRBUkFBMkhkMGZzRFZLNzJSTFNESGJ5ME9oZ0RjRGxWQk0yTSto WVlwTzNmWDFyKysKc2hpcVBLQ0hWQXNRNWJ4ZTdIbUppbUhhNEtLWXMya3YvbWx0L0NhdUNK Ly9wbWN5Y0JNN0d2d25Lem11WHp1QQpHbVZUWkM2V1I1TGtha0ZydEhPelZtc0VHcE52NVJj OWw2SFlGcExrYlNrVmk1U1BRWkp5K0VNZ01DRmdqclpmClZGNnlvdHdFMWFmN0hOdE1oTlBh TEROMW9VS0Y1aitSeVJnNWl3SnVDRGtuSGp3QlFWNHBndzIvNXZTOEE3WlEKdjJNYlcvVExF eXBLWGlmNzhJaGdBelh0RTJYck0xbi9vNlpINzFvUkZGS096NDJsRmR6ZHJTWDBZc3FYZ0hD WAo1Z0l0TGZxemoxcHNNYTlvMWVpTlRFbTFkVlFyVHFueXMwbDE4b2FsUk5zd1lsUW1uWUJ3 cHdDa2FUSExNSHdLCmZHQmJvNWRMUEVzaHRWb3dJNm5zZ3FMVHlRSG1xSFlxVVpZSXBpZ21t QzNTd0JXWTFWNmZmVUVta3FwQUFDRW4KTDQvZ1Vnbjd5US81ZDBzZXFuQXEycFNCSE1VVW9D Y1R6RVFVV1ZraUR2M1JrN2hURm1oVHNNcTc4eHYyWFJzWApNUjZ5UWhTVFBGWkNZRFVFeEVs RXNTbzlGV0hXcjZ6SHlZY2M4cURMRnZHOUZQaG1RdVQyczlCbHg2Z0kzMjNHCm5FcTFsd1dQ SlZ6UDRqUWtKS0lBWHdGcHYrVzhDV0xxekRXT3ZkbHJEYVRhVk1zY0ZUZUg1VzZVcHJsNjVq cUYKUUdNcGNSR0NzOEdDVVcxM0gwSXlPdFF0d1dYQTRueStTTDgxcHZpQW1hU1hVOGxhS2FS dTkxVk9WYUY5ZjRzQQpFUUVBQVlrQ0h3UVlBUUlBQ1FVQ1czcUFFd0liREFBS0NSQ1VnZXdQ RVpEeTIrb1hELzljSEhSa0JaT2ZrbVNxCjE0U3Z4MDYyUHRVMEtWNDcwVFNucC9qV29ZSm5L SXczRzBtWElSZ3J0SDJkUHdwSWdWanNZeVJTVk1LbVNwdDUKWnJEZjlOdFRiTldnazhWb0xl WnpZRW8rSjNvUHFGclRNczNhWVl2N2U0K0pLNjk1WW5tUSttT0Q5bmlhOTE1dApyNUFaajk1 VWZTVGx5VW15aWMxZDhvdnNmMWZQN1hDVVZSRmNSamZOZkRGMW9ML3BEZ01QNUdaMk93YVRl am15CkN1SGpNOElSMUNpYXZCcFlEbUJuVFlrN1B0aHk2YXRXdllsMGZ5L0NxYWpUS3N4Nytw OXh6aXU4WmZWWCtpS0IKQ2MrSGUrRURFZEdJRGh2TlovSVFIZk9CMlBVWFdHUytzOUZOVHhy L0E2bkxHWG5BOVk2dzkzaVBkWUl3eFM3SwpYTG9LSmVlMTBEamx6c1lzUmZsRk9XMFpPaVNp aElDWGlRVjF1cU02dHpGRzlndFJjaXVzNVVBdGhXYU8xT3dVClNDUW1mQ09tNGZ2TUlKSUE5 cnh0b1M2T3FSUWNpRjNjcm1vMHJKQ3ROMmF3WmZnaThYRWlmN2Q2aGp2MEVLTTkKWFpvaUFa WVpEKy9pTG01VGFLV042b0dJdGkwVmpKdjhaWk9aT2ZDYjZ2cUZJa0pXK2FPdTRvclRMRk16 MjhhbwpVM1F5V3BOQzhGRm1kWXNWdWE4czZnTjFOSWE2eTNxYS9aQjhiQS9pa3k1OUFFejRp RElScmdVek1FZzhBazdUCmZtMUtpWWVpVHRCRENvMjVCdlhqYnFzeXhrUUQxbmtSbTZGQVZ6 RXVPUEllOEp1cVcyeEQ5aXhHWXZqVTVoa1IKZ0pwM2dQNWIrY25HM0xQcXF1UTJFNmdvS1VN TEFia0NEUVJiZmw5REFSQUFzRExjYStMbFAydm5mdEVHaHBjQQpCR1ZOUUVGbkdQckNhdVU2 SGhOODA1V3RQVHRtc1JPdUp6cWdVVDBtcHFXSWZacTZzTXd5dkhLOVRzL0tIM0paClVWYlJD M3oyaDNLZmhIL0RhZjk1cGQ2bVBjL2g5dkYvT3kzK2VUV2hnR25QNmNBNWtsUitmTzFXaEc4 VnJpWHYKck5lUkcyMHN6emplSG9jblNJY1Q1WHVaUjB1REhPaUd4T2l6MXNNUkZUR3h6R095 MTlSOXJ2dTYzdGlJM2Q3dgpnYzc1T0NBZGtlQi9TZUNFbGFSdzBUZjdMWmJQampzRjI2M0JZ bk1mNGtrTkVLdnFXY1UyaWNNcCtxZXpqeW5CCnB2ZXVlMHJDVFFCWUFRbG9GQ1ZUR0hyV1dB NkQ0VzVPMkFmSWRJYzF1MUpDWnAyZjVMV1ZvVUZUVklyUW5RUVUKU0hDaWZyOU1aeExUdFBK ZFU1Mm9TUHczZGs0aExQOGlKSUx1dnYvYXZhakNzUVlIRXR3WXNiZUZaeGl1TGdscApBN1lj Sk5ObXBnQ3BNRDR3VWh2bEN0QUtOQlFXeXIyOTc2OThFUVRuNDZlQmVVNkttMkNpaFhrZ3dD eWY4ZXlLCkxFM3NYZXdhcTVrZ1pXdk5xNml1NXFZSVJCOXl3K2NYYzYwZE9aRE9scTkzWDVT QVJZemFvZXBrSHo0cmtMa1AKUG8rdENIeUhRUHNHblBYYzlXVDgwREM5Tm5KR2R2VWx5NXJk TUk0eHBaeWdlb2tqd293VlFsUFV1Y1M2TXluNwpmOHc4Y2dmQjdDMklBSWNEeDJwUC9IendY dmtDT1FOQTdtVjFsTTA4bitnVmtUcnpweGlwNURicTRDSW9ZeDJNCkpaVDhiR1JINlhqY1VE S2EwOVFoeVpzQUVRRUFBWWtFUkFRWUFRZ0FEd1VDVzM1ZlF3SWJBZ1VKQThKbkFBSXAKQ1JD VWdld1BFWkR5MjhGZElBUVpBUWdBQmdVQ1czNWZRd0FLQ1JCVnhETFBjVk1NamNkc0QvMFJo QXN1UVlPeQpyMTNCbDNOaFhrWUFaR3AyWkZER3VrZTdPU2tWOG9qT09UZFR5ei9jT1JHQ2J5 ZEQrRGd2cUZ5VmRuT1hLZ08wCmxKbUd3ckdlTGRnZ0F2aDBpaHJwNU8wWVVKOWJCU1htR01t UVRZSC9BbUxUR2FkYnVqQ1dqNWZGVWtDeXd4aW0KSHV5MFBiMjRwelR2UzUwR1k1WStxSDBG SE5haWdka2tpV04zcnVnN0haRXUvQ3lsUFpqT1h6K0QxUVBNckV4dwo3ZC9NS2FiVis5YU5i UVlabGRJajk4UXd2VUYxS1N6YThqbFVJdnBoUnEyN0FUOGZER1lHUGZERU1nMmNCT2FlCkty N29uUXM0YjdhV082aWZEbHhRVHB6c3pvK0FuODA3Tk1TdFZFRmYrczNBaFZEM2U3bmY4SkJh dmJWckFlMGsKb20yNm96elBubnh6K2xxVlZ0dzZVazRYTUl6dGl4L0h3SFl3dUNuY1VYWndL MEkzeUFKd2pZd29vck9DaEozUwpFVWJKUVB0R3NneFJERXhWQkZlNk5MUC82MnhQOU82dGFj d09kYjBNbVAxYjM5cFJBVEM3YmdkMWxkVUxpNzVaCmxKckowL1NpVkVyb3FOWXk3OXRmbWdB WjJVeFptczlTckV5Nm85UVNmc24xYVh2K01QTDlKYUNHbWtQNnpiTFEKTm5kajBKY2FRbmtD MHZneWRPMUJtNk11OTZQOXVmbEtaY0FTNndtTE01SWRIT3lqTDg4d0h3anVjakFPQnRjdwpw MG9HVG5WT25Sc05ZU084VzhZWi9LZGJ1Nzg1ZGF6TXFKMmlOakFEdUJiZG02TjRqNUVkTW5r TG4wQklmUEpwCmRnbTR2bDJVcExqd1JHci9NM3dtbTVwdnMrNnVCN2hrL0ZKaUQvNGxsRU5Q NGVNMWg3U200aitWcTZOMSt6VEIKSVhKQWViSXFhc0RwNXlaUzdYcnk0STM2bjg1WEVZZkcw MWx0QXlob05WMkRPOFNJUlFwdWkydHErOVJQM1JLMQpKREJ4eEVKWTJFTzVKWjhNeGFQSFEw RFQwNWxSRmpLMkFsaGRFSXRqTGpwSjNmVW05c3FMeE1XeHpQNlV6M2lpCjJ1YTR1bnJ0Nk9D VHFRd2lqRi8zYlRXaXd2VkFBSG5NRlVpb1hzaEhhb2hWRGNWZm5lSU1mVjBiUUNYWWkzTnAK WTB2MFp3Y2lGSCtnU0M3cUQ2WE51aHBWR1NMNElpbGlGeS9TemNhSkV6QUhlTERTaFpQMkNX ZG5DNHZnbDM3dApocHg4aDU1WWhKbjZIU3VVelBnaGFLdFZCMmsrajdaZXlaK1NGeHA3SXVi SEN3TEhsUWhUNzVSd1EzaUF4S242CjBxajUxY1lUbnF4ZFpYVzZmSDNQa3VNellVNUdwcVIv MU9sNWMvd2ZJNmc2QW04eUtXLzBFVUx0K0tuNExGc1MKbTdZM201SDV2MTJVNkpCWXZWK3Ix M2paaW9zNEVFREU5M0Q1c05IMk1JeVJ6Q0RxMXpkZHQ0WHV5S0ZqUEtXMQo5aWJaRGZGVjdL dUNzdnVMMjNzQmMxc0NNb3ArRTFtVC9ReE9JQTZvRFQxTVFzdHdPVnVReURDdi9PdktTZ2Z6 CjhGWEdMNkFQY2xqQ3FqOEFKaHhReXN4ZG9pUVA4bS92dStialdHR3Z4dzVzMWxncGlSRFRS VVBnY0pKTmFHWTIKVklEclpRaTROU2lOUTBOSWkrZGp1NGZOTW1DcFFxZzh0YkMzY0FhNnl3 bTZvUUIxU0JobURYMmUxMWdSbGx1SQpPblRHUEUwSFRvM2w3MmxoYmc9PQo9cVpNVgotLS0t LUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCg== Message-ID: Date: Tue, 8 Feb 2022 22:00:23 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20220208155027.891055-5-jeanmichel.hautbois@ideasonboard.com> Content-Language: en-US X-Provags-ID: V03:K1:wB/q4NgRp2fSuIwaCOxvJD7oSUD2henGhSqHImVf5X4K3lghloc q2H74xF5eTl8PcuTuDZya90P7BbCDa9kPVjzGR4DaMICctBLbcNuppvsWHOwjJFftnlKiva gyk8zN3qbx076zEitLjaRuqtJm5fBHA9TnDMYh4j33LSV3xEpe5cYR8GTPqPPEUVfk+BITS 0ldwuxSSrttnoFrnmdZ3Q== X-UI-Out-Filterresults: notjunk:1;V03:K0:2nBpvSd9k/w=:s3qlEACKKpclDe8ev9H5Of 8BKVC9fyK3Z8L18D4KpSEPEWqS4/orbqxl12QoXukHu+CGCBjql07ZG+3z2QShtogN6Y81wZ0 JK3/DujmD8TPtOS8iltUi3QR8kWAmg0rPjCnhlH2609KWZ7U2+FTHOXX2/FbA7h+2gsp/yLcO JFgo96moshCdpctj9aMimmG2Yc2cI3ucyy+CW0uB71n4B17P3RZNUCzrIrOnHv4YGQ67/Aibz gqJYq0B2eQKi+rXFNXYtkB12eP9+FiJkdH5HU0s7ib76+XTk9glUu7P6T4+BcfwyjzLs1G7BO ErbV+8vJ+AIygawAy1diq/MAuFVf5PNWAjMfUf8ragOLBjjxbSDGbFhZxve1S2sqnL+N62Vo6 RTghaeouQMPg7ke1iKGuFJzmmloXpBL/EJrgmKXyG4mgUGi7LNipbM4YPlSUisa4vRNAnOUp/ LH13b4t4lHZ+IBrjhr285cVyBAimhfOHFxi8jNDPp2SedotbBpIUAz9upVhGxCGHZGP1cBUpf w9hUmksSvpRJNqupkQ2Sf4o5TGxS+OXZ4XqA/b4IZ2TFNDMH8D7gLLPCZQUdLUVKS+pxKzAAy jkYhKQYc5Hosme6vxpXXX0w7g7ajVC7ID+KnPlXFWmN/DG6VIyExIYdMIDtRlPBaOsdbs5YYc ciCqpyOZ4GfrOb/aO8tGy3WpJZJKh7Ihvg1hsLu67i9ST+N0rGkbsEXlX6XCS4tt09YmTbsX/ +nzI0FFil8bIoRFn X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220208_130035_800796_3401863D X-CRM114-Status: GOOD ( 21.15 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgSmVhbi1NaWNoZWwsCgpBbSAwOC4wMi4yMiB1bSAxNjo1MCBzY2hyaWViIEplYW4tTWljaGVs IEhhdXRib2lzOgo+IEFkZCBkcml2ZXIgZm9yIHRoZSBVbmljYW0gY2FtZXJhIHJlY2VpdmVyIGJs b2NrIG9uIEJDTTI4M3ggcHJvY2Vzc29ycy4KPiBJdCBpcyByZXByZXNlbnRlZCBhcyB0d28gdmlk ZW8gZGV2aWNlIG5vZGVzOiB1bmljYW0taW1hZ2UgYW5kCj4gdW5pY2FtLWVtYmVkZGVkIHdoaWNo IGFyZSBjb25uZWN0ZWQgdG8gYW4gaW50ZXJuYWwgc3ViZGV2IChuYW1lZAo+IHVuaWNhbS1zdWJk ZXYpIGluIG9yZGVyIHRvIG1hbmFnZSBzdHJlYW1zIHJvdXRpbmcuCj4KPiBTaWduZWQtb2ZmLWJ5 OiBEYXZlIFN0ZXZlbnNvbiA8ZGF2ZS5zdGV2ZW5zb25AcmFzcGJlcnJ5cGkuY29tPgo+IFNpZ25l ZC1vZmYtYnk6IE5hdXNoaXIgUGF0dWNrIDxuYXVzaEByYXNwYmVycnlwaS5jb20+Cj4gU2lnbmVk LW9mZi1ieTogSmVhbi1NaWNoZWwgSGF1dGJvaXMgPGplYW5taWNoZWwuaGF1dGJvaXNAaWRlYXNv bmJvYXJkLmNvbT4KPgo+IC0tLQo+IHY0Ogo+ICAgLSBBZGQgdGhlIHZlbmRvciBwcmVmb3ggZm9y IERUIG5hbWUKPiAgIC0gVXNlIHRoZSByZWctbmFtZXMgaW4gRFQgcGFyc2luZwo+ICAgLSBSZW1v dmUgTUFJTlRBSU5FUlMgZW50cnkKPgo+IHYzIG1haW4gY2hhbmdlczoKPiAgIC0gQ2hhbmdlIGNv ZGUgb3JnYW5pemF0aW9uCj4gICAtIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCj4gICAtIENvcnJl Y3QgdGhlIGZtdF9tZXRhIGZ1bmN0aW9ucwo+ICAgLSBSZXdyaXRlIHRoZSBzdGFydC9zdG9wIHN0 cmVhbWluZwo+ICAgICAtIFlvdSBjYW4gbm93IHN0YXJ0IHRoZSBpbWFnZSBub2RlIGFsb25lLCBi dXQgbm90IHRoZSBtZXRhZGF0YSBvbmUKPiAgICAgLSBUaGUgYnVmZmVycyBhcmUgYWxsb2NhdGVk IHBlci1ub2RlCj4gICAgIC0gb25seSB0aGUgcmVxdWlyZWQgc3RyZWFtIGlzIHN0YXJ0ZWQsIGlm IHRoZSByb3V0ZSBleGlzdHMgYW5kIGlzCj4gICAgICAgZW5hYmxlZAo+ICAgLSBQcmVmaXggdGhl IG1hY3JvcyB3aXRoIFVOSUNBTV8gdG8gbm90IGhhdmUgdG9vIGdlbmVyaWMgbmFtZXMKPiAgIC0g RHJvcCBjb2xvcnNwYWNlIHN1cHBvcnQKPiAgICAgLT4gVGhpcyBpcyBjYXVzaW5nIGlzc3VlcyBp biB0aGUgdHJ5LWZtdCB2NGwyLWNvbXBsaWFuY2UgdGVzdAo+ICAgdGVzdCBWSURJT0NfR19GTVQ6 IE9LCj4gCWZhaWw6IHY0bDItdGVzdC1mb3JtYXRzLmNwcCgzNjMpOiBjb2xvcnNwYWNlID49IDB4 ZmYKPiAJZmFpbDogdjRsMi10ZXN0LWZvcm1hdHMuY3BwKDQ2NSk6IHRlc3RDb2xvcnNwYWNlKCFu b2RlLT5pc19pb19tYywgcGl4LnBpeGVsZm9ybWF0LCBwaXguY29sb3JzcGFjZSwgcGl4LnljYmNy X2VuYywgcGl4LnF1YW50aXphdGlvbikKPiAgIHRlc3QgVklESU9DX1RSWV9GTVQ6IEZBSUwKPiAJ ZmFpbDogdjRsMi10ZXN0LWZvcm1hdHMuY3BwKDM2Myk6IGNvbG9yc3BhY2UgPj0gMHhmZgo+IAlm YWlsOiB2NGwyLXRlc3QtZm9ybWF0cy5jcHAoNDY1KTogdGVzdENvbG9yc3BhY2UoIW5vZGUtPmlz X2lvX21jLCBwaXgucGl4ZWxmb3JtYXQsIHBpeC5jb2xvcnNwYWNlLCBwaXgueWNiY3JfZW5jLCBw aXgucXVhbnRpemF0aW9uKQo+ICAgdGVzdCBWSURJT0NfU19GTVQ6IEZBSUwKPgo+IHYyOiBSZW1v dmUgdGhlIHVuaWNhbV97aW5mbyxkZWJ1ZyxlcnJvcn0gbWFjcm9zIGFuZCB1c2UKPiBkZXZfZGJn L2Rldl9lcnIgaW5zdGVhZC4KPiAtLS0KPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmln ICAgICAgICAgICAgICAgIHwgICAgMSArCj4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZp bGUgICAgICAgICAgICAgICB8ICAgIDIgKwo+ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4 MzUvS2NvbmZpZyAgICAgICAgfCAgIDIxICsKPiAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9iY20y ODM1L01ha2VmaWxlICAgICAgIHwgICAgMyArCj4gIC4uLi9wbGF0Zm9ybS9iY20yODM1L2JjbTI4 MzUtdW5pY2FtLXJlZ3MuaCAgICB8ICAyNTMgKysKPiAgLi4uL21lZGlhL3BsYXRmb3JtL2JjbTI4 MzUvYmNtMjgzNS11bmljYW0uYyAgIHwgMjU3MCArKysrKysrKysrKysrKysrKwo+ICA2IGZpbGVz IGNoYW5nZWQsIDI4NTAgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9iY20yODM1L0tjb25maWcKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vYmNtMjgzNS9NYWtlZmlsZQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9iY20yODM1L2JjbTI4MzUtdW5pY2FtLXJlZ3MuaAo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9iY20yODM1L2JjbTI4 MzUtdW5pY2FtLmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25m aWcgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcKPiBpbmRleCA5ZmJkYmEwZmQxZTcu LjAzM2IwMzU4ZmJiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25m aWcKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tjb25maWcKPiBAQCAtMTcwLDYgKzE3 MCw3IEBAIHNvdXJjZSAiZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hbTQzN3gvS2NvbmZpZyIKPiAg c291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3hpbGlueC9LY29uZmlnIgo+ICBzb3VyY2Ug ImRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmNhci12aW4vS2NvbmZpZyIKPiAgc291cmNlICJkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2F0bWVsL0tjb25maWciCj4gK3NvdXJjZSAiZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9iY20yODM1L0tjb25maWciCj4gIHNvdXJjZSAiZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9zdW54aS9LY29uZmlnIgo+ICAKPiAgY29uZmlnIFZJREVPX1RJX0NBTAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9NYWtlZmlsZQo+IGluZGV4IDI4ZWI0YWFkYmY0NS4uMTg4OTRmYzU4NmFhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL01ha2VmaWxlCj4gQEAgLTg2LDYgKzg2LDggQEAgb2JqLSQoQ09ORklHX1ZJ REVPX1FDT01fQ0FNU1MpCQkrPSBxY29tL2NhbXNzLwo+ICAKPiAgb2JqLSQoQ09ORklHX1ZJREVP X1FDT01fVkVOVVMpCQkrPSBxY29tL3ZlbnVzLwo+ICAKPiArb2JqLSQoQ09ORklHX1ZJREVPX0JD TTI4MzVfVU5JQ0FNKQkrPSBiY20yODM1Lwo+ICsKPiAgb2JqLXkJCQkJCSs9IHN1bnhpLwo+ICAK PiAgb2JqLSQoQ09ORklHX1ZJREVPX01FU09OX0dFMkQpCQkrPSBtZXNvbi9nZTJkLwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4MzUvS2NvbmZpZyBiL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYmNtMjgzNS9LY29uZmlnCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAuLjE2OTE1NDFkYTkwNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4MzUvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMjEgQEAK PiArIyBCcm9hZGNvbSBWaWRlb0NvcmU0IFY0TDIgY2FtZXJhIHN1cHBvcnQKPiArCj4gK2NvbmZp ZyBWSURFT19CQ00yODM1X1VOSUNBTQo+ICsJdHJpc3RhdGUgIkJyb2FkY29tIEJDTTI4M3gvQkNN MjcxeCBVbmljYW0gdmlkZW8gY2FwdHVyZSBkcml2ZXIiCj4gKwlkZXBlbmRzIG9uIEFSQ0hfQkNN MjgzNSB8fCBDT01QSUxFX1RFU1QKPiArCWRlcGVuZHMgb24gVklERU9fVjRMMgo+ICsJc2VsZWN0 IE1FRElBX0NPTlRST0xMRVIKPiArCXNlbGVjdCBWSURFT19WNEwyX1NVQkRFVl9BUEkKPiArCXNl bGVjdCBWNEwyX0ZXTk9ERQo+ICsJc2VsZWN0IFZJREVPQlVGMl9ETUFfQ09OVElHCj4gKwloZWxw Cj4gKwkgIFNheSBZIGhlcmUgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBCQ00yODN4L0JDTTI3 MXggQ1NJLTIgcmVjZWl2ZXIuCj4gKwkgIFRoaXMgaXMgYSBWNEwyIGRyaXZlciB0aGF0IGNvbnRy b2xzIHRoZSBDU0ktMiByZWNlaXZlciBkaXJlY3RseSwKPiArCSAgaW5kZXBlbmRlbnRseSBmcm9t IHRoZSBWQzQgZmlybXdhcmUuCj4gKwkgIFRoaXMgZHJpdmVyIGlzIG11dHVhbGx5IGV4Y2x1c2l2 ZSB3aXRoIHRoZSB1c2Ugb2YgYmNtMjgzNS1jYW1lcmEuIFRoZQo+ICsJICBmaXJtd2FyZSB3aWxs IGRpc2FibGUgYWxsIGFjY2VzcyB0byB0aGUgcGVyaXBoZXJhbCBmcm9tIHdpdGhpbiB0aGUKPiAr CSAgZmlybXdhcmUgaWYgaXQgZmluZHMgYSBEVCBub2RlIHVzaW5nIGl0LCBhbmQgYmNtMjgzNS1j YW1lcmEgd2lsbAo+ICsJICB0aGVyZWZvcmUgZmFpbCB0byBwcm9iZS4KPiArCj4gKwkgIFRvIGNv bXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGUg d2lsbCBiZQo+ICsJICBjYWxsZWQgYmNtMjgzNS11bmljYW0uCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vYmNtMjgzNS9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vYmNtMjgzNS9NYWtlZmlsZQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi5hOThhYmEwMzU5OGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9iY20yODM1L01ha2VmaWxlCj4gQEAgLTAsMCArMSwzIEBACj4gKyMgTWFrZWZp bGUgZm9yIEJDTTI4MzUgVW5pY2FtIGRyaXZlcgo+ICsKPiArb2JqLSQoQ09ORklHX1ZJREVPX0JD TTI4MzVfVU5JQ0FNKSArPSBiY20yODM1LXVuaWNhbS5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vYmNtMjgzNS9iY20yODM1LXVuaWNhbS1yZWdzLmggYi9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL2JjbTI4MzUvYmNtMjgzNS11bmljYW0tcmVncy5oCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmI4ZDI5NzA3NmEwMgo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4MzUvYmNtMjgzNS11bmljYW0t cmVncy5oCj4gQEAgLTAsMCArMSwyNTMgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb25seSAqLwo+ICsKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAg UmFzcGJlcnJ5IFBpIFRyYWRpbmcuCj4gKyAqIERhdmUgU3RldmVuc29uIDxkYXZlLnN0ZXZlbnNv bkByYXNwYmVycnlwaS5jb20+Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBWQzRfUkVHU19VTklDQU1f SAo+ICsjZGVmaW5lIFZDNF9SRUdTX1VOSUNBTV9ICj4gKwo+ICsvKgo+ICsgKiBUaGUgZm9sbG93 aW5nIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSBmaWxlcyBmb3VuZCB3aXRoaW4gdGhlIGNvZGUgZHJv cAo+ICsgKiBtYWRlIGJ5IEJyb2FkY29tIGZvciB0aGUgQkNNMjE1NTMgR3JhcGhpY3MgRHJpdmVy LCBwcmVkb21pbmFudGx5IGluCj4gKyAqIGJyY21fdXNybGliL2RhZy92bWNzeC92Y2luY2x1ZGUv aGFyZHdhcmVfdmM0LmguCj4gKyAqIFRoZXkgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIGJlIG9ubHkg dGhlIHJlZ2lzdGVyIG9mZnNldC4KPiArICovCj4gKyNkZWZpbmUgVU5JQ0FNX0NUUkwJCTB4MDAw Cj4gKyNkZWZpbmUgVU5JQ0FNX1NUQQkJMHgwMDQKPiArI2RlZmluZSBVTklDQU1fQU5BCQkweDAw OAo+ICsjZGVmaW5lIFVOSUNBTV9QUkkJCTB4MDBjCj4gKyNkZWZpbmUgVU5JQ0FNX0NMSwkJMHgw MTAKPiArI2RlZmluZSBVTklDQU1fQ0xUCQkweDAxNAo+ICsjZGVmaW5lIFVOSUNBTV9EQVQwCQkw eDAxOAo+ICsjZGVmaW5lIFVOSUNBTV9EQVQxCQkweDAxYwo+ICsjZGVmaW5lIFVOSUNBTV9EQVQy CQkweDAyMAo+ICsjZGVmaW5lIFVOSUNBTV9EQVQzCQkweDAyNAo+ICsjZGVmaW5lIFVOSUNBTV9E TFQJCTB4MDI4Cj4gKyNkZWZpbmUgVU5JQ0FNX0NNUDAJCTB4MDJjCj4gKyNkZWZpbmUgVU5JQ0FN X0NNUDEJCTB4MDMwCj4gKyNkZWZpbmUgVU5JQ0FNX0NBUDAJCTB4MDM0Cj4gKyNkZWZpbmUgVU5J Q0FNX0NBUDEJCTB4MDM4Cj4gKyNkZWZpbmUgVU5JQ0FNX0lDVEwJCTB4MTAwCj4gKyNkZWZpbmUg VU5JQ0FNX0lTVEEJCTB4MTA0Cj4gKyNkZWZpbmUgVU5JQ0FNX0lESTAJCTB4MTA4Cj4gKyNkZWZp bmUgVU5JQ0FNX0lQSVBFCQkweDEwYwo+ICsjZGVmaW5lIFVOSUNBTV9JQlNBMAkJMHgxMTAKPiAr I2RlZmluZSBVTklDQU1fSUJFQTAJCTB4MTE0Cj4gKyNkZWZpbmUgVU5JQ0FNX0lCTFMJCTB4MTE4 Cj4gKyNkZWZpbmUgVU5JQ0FNX0lCV1AJCTB4MTFjCj4gKyNkZWZpbmUgVU5JQ0FNX0lIV0lOCQkw eDEyMAo+ICsjZGVmaW5lIFVOSUNBTV9JSFNUQQkJMHgxMjQKPiArI2RlZmluZSBVTklDQU1fSVZX SU4JCTB4MTI4Cj4gKyNkZWZpbmUgVU5JQ0FNX0lWU1RBCQkweDEyYwo+ICsjZGVmaW5lIFVOSUNB TV9JQ0MJCTB4MTMwCj4gKyNkZWZpbmUgVU5JQ0FNX0lDUwkJMHgxMzQKPiArI2RlZmluZSBVTklD QU1fSURDCQkweDEzOAo+ICsjZGVmaW5lIFVOSUNBTV9JRFBPCQkweDEzYwo+ICsjZGVmaW5lIFVO SUNBTV9JRENBCQkweDE0MAo+ICsjZGVmaW5lIFVOSUNBTV9JRENECQkweDE0NAo+ICsjZGVmaW5l IFVOSUNBTV9JRFMJCTB4MTQ4Cj4gKyNkZWZpbmUgVU5JQ0FNX0RDUwkJMHgyMDAKPiArI2RlZmlu ZSBVTklDQU1fREJTQTAJCTB4MjA0Cj4gKyNkZWZpbmUgVU5JQ0FNX0RCRUEwCQkweDIwOAo+ICsj ZGVmaW5lIFVOSUNBTV9EQldQCQkweDIwYwo+ICsjZGVmaW5lIFVOSUNBTV9EQkNUTAkJMHgzMDAK PiArI2RlZmluZSBVTklDQU1fSUJTQTEJCTB4MzA0Cj4gKyNkZWZpbmUgVU5JQ0FNX0lCRUExCQkw eDMwOAo+ICsjZGVmaW5lIFVOSUNBTV9JREkxCQkweDMwYwo+ICsjZGVmaW5lIFVOSUNBTV9EQlNB MQkJMHgzMTAKPiArI2RlZmluZSBVTklDQU1fREJFQTEJCTB4MzE0Cj4gKyNkZWZpbmUgVU5JQ0FN X01JU0MJCTB4NDAwCj4gKwo+ICsvKgo+ICsgKiBUaGUgZm9sbG93aW5nIGJpdG1hc2tzIGFyZSBm cm9tIHRoZSBrZXJuZWwgcmVsZWFzZWQgYnkgQnJvYWRjb20KPiArICogZm9yIEFuZHJvaWQgLSBo dHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9rZXJuZWwvYmNtLwo+ICsgKiBUaGUgUmhl YSwgSGF3YWlpLCBhbmQgSmF2YSBjaGlwcyBhbGwgY29udGFpbiB0aGUgc2FtZSBWaWRlb0NvcmU0 Cj4gKyAqIFVuaWNhbSBibG9jayBhcyBCQ00yODM1LCBhcyBkZWZpbmVkIGluIGVnCj4gKyAqIGFy Y2gvYXJtL21hY2gtcmhlYS9pbmNsdWRlL21hY2gvcmRiX0EwL2JyY21fcmRiX2NhbS5oIGFuZCBz aW1pbGFyLgo+ICsgKiBWYWx1ZXMgcmV3b3JrZWQgdG8gdXNlIHRoZSBrZXJuZWwgQklUIGFuZCBH RU5NQVNLIG1hY3Jvcy4KPiArICoKPiArICogU29tZSBvZiB0aGUgYml0IG1uZW5vbWljcyBoYXZl IGJlZW4gYW1lbmRlZCB0byBtYXRjaCB0aGUgZGF0YXNoZWV0Lgo+ICsgKi8KPiArLyogVU5JQ0FN X0NUUkwgUmVnaXN0ZXIgKi8KPiArI2RlZmluZSBVTklDQU1fQ1BFCQlCSVQoMCkKPiArI2RlZmlu ZSBVTklDQU1fTUVNCQlCSVQoMSkKPiArI2RlZmluZSBVTklDQU1fQ1BSCQlCSVQoMikKPiArI2Rl ZmluZSBVTklDQU1fQ1BNX01BU0sJCUdFTk1BU0soMywgMykKPiArI2RlZmluZSBVTklDQU1fQ1BN X0NTSTIJCTAKPiArI2RlZmluZSBVTklDQU1fQ1BNX0NDUDIJCTEKPiArI2RlZmluZSBVTklDQU1f U09FCQlCSVQoNCkKPiArI2RlZmluZSBVTklDQU1fRENNX01BU0sJCUdFTk1BU0soNSwgNSkKPiAr I2RlZmluZSBVTklDQU1fRENNX1NUUk9CRQkwCj4gKyNkZWZpbmUgVU5JQ0FNX0RDTV9EQVRBCQkx Cj4gKyNkZWZpbmUgVU5JQ0FNX1NMUwkJQklUKDYpCj4gKyNkZWZpbmUgVU5JQ0FNX1BGVF9NQVNL CQlHRU5NQVNLKDExLCA4KQo+ICsjZGVmaW5lIFVOSUNBTV9PRVRfTUFTSwkJR0VOTUFTSygyMCwg MTIpCj4gKwo+ICsvKiBVTklDQU1fU1RBIFJlZ2lzdGVyICovCj4gKyNkZWZpbmUgVU5JQ0FNX1NZ TgkJQklUKDApCj4gKyNkZWZpbmUgVU5JQ0FNX0NTCQlCSVQoMSkKPiArI2RlZmluZSBVTklDQU1f U0JFCQlCSVQoMikKPiArI2RlZmluZSBVTklDQU1fUEJFCQlCSVQoMykKPiArI2RlZmluZSBVTklD QU1fSE9FCQlCSVQoNCkKPiArI2RlZmluZSBVTklDQU1fUExFCQlCSVQoNSkKPiArI2RlZmluZSBV TklDQU1fU1NDCQlCSVQoNikKPiArI2RlZmluZSBVTklDQU1fQ1JDRQkJQklUKDcpCj4gKyNkZWZp bmUgVU5JQ0FNX09FUwkJQklUKDgpCj4gKyNkZWZpbmUgVU5JQ0FNX0lGTwkJQklUKDkpCj4gKyNk ZWZpbmUgVU5JQ0FNX09GTwkJQklUKDEwKQo+ICsjZGVmaW5lIFVOSUNBTV9CRk8JCUJJVCgxMSkK PiArI2RlZmluZSBVTklDQU1fREwJCUJJVCgxMikKPiArI2RlZmluZSBVTklDQU1fUFMJCUJJVCgx MykKPiArI2RlZmluZSBVTklDQU1fSVMJCUJJVCgxNCkKPiArI2RlZmluZSBVTklDQU1fUEkwCQlC SVQoMTUpCj4gKyNkZWZpbmUgVU5JQ0FNX1BJMQkJQklUKDE2KQo+ICsjZGVmaW5lIFVOSUNBTV9G U0lfUwkJQklUKDE3KQo+ICsjZGVmaW5lIFVOSUNBTV9GRUlfUwkJQklUKDE4KQo+ICsjZGVmaW5l IFVOSUNBTV9MQ0lfUwkJQklUKDE5KQo+ICsjZGVmaW5lIFVOSUNBTV9CVUYwX1JEWQkJQklUKDIw KQo+ICsjZGVmaW5lIFVOSUNBTV9CVUYwX05PCQlCSVQoMjEpCj4gKyNkZWZpbmUgVU5JQ0FNX0JV RjFfUkRZCQlCSVQoMjIpCj4gKyNkZWZpbmUgVU5JQ0FNX0JVRjFfTk8JCUJJVCgyMykKPiArI2Rl ZmluZSBVTklDQU1fREkJCUJJVCgyNCkKPiArCj4gKyNkZWZpbmUgVU5JQ0FNX1NUQV9NQVNLX0FM TCBcCj4gKwkJKFVOSUNBTV9ETCB8IFwKPiArCQlVTklDQU1fU0JFIHwgXAo+ICsJCVVOSUNBTV9Q QkUgfCBcCj4gKwkJVU5JQ0FNX0hPRSB8IFwKPiArCQlVTklDQU1fUExFIHwgXAo+ICsJCVVOSUNB TV9TU0MgfCBcCj4gKwkJVU5JQ0FNX0NSQ0UgfCBcCj4gKwkJVU5JQ0FNX0lGTyB8IFwKPiArCQlV TklDQU1fT0ZPIHwgXAo+ICsJCVVOSUNBTV9QUyB8IFwKPiArCQlVTklDQU1fUEkwIHwgXAo+ICsJ CVVOSUNBTV9QSTEpCj4gKwo+ICsvKiBVTklDQU1fQU5BIFJlZ2lzdGVyICovCj4gKyNkZWZpbmUg VU5JQ0FNX0FQRAkJQklUKDApCj4gKyNkZWZpbmUgVU5JQ0FNX0JQRAkJQklUKDEpCj4gKyNkZWZp bmUgVU5JQ0FNX0FSCQlCSVQoMikKPiArI2RlZmluZSBVTklDQU1fRERMCQlCSVQoMykKPiArI2Rl ZmluZSBVTklDQU1fQ1RBVEFESl9NQVNLCUdFTk1BU0soNywgNCkKPiArI2RlZmluZSBVTklDQU1f UFRBVEFESl9NQVNLCUdFTk1BU0soMTEsIDgpCj4gKwo+ICsvKiBVTklDQU1fUFJJIFJlZ2lzdGVy ICovCj4gKyNkZWZpbmUgVU5JQ0FNX1BFCQlCSVQoMCkKPiArI2RlZmluZSBVTklDQU1fUFRfTUFT SwkJR0VOTUFTSygyLCAxKQo+ICsjZGVmaW5lIFVOSUNBTV9OUF9NQVNLCQlHRU5NQVNLKDcsIDQp Cj4gKyNkZWZpbmUgVU5JQ0FNX1BQX01BU0sJCUdFTk1BU0soMTEsIDgpCj4gKyNkZWZpbmUgVU5J Q0FNX0JTX01BU0sJCUdFTk1BU0soMTUsIDEyKQo+ICsjZGVmaW5lIFVOSUNBTV9CTF9NQVNLCQlH RU5NQVNLKDE3LCAxNikKPiArCj4gKy8qIFVOSUNBTV9DTEsgUmVnaXN0ZXIgKi8KPiArI2RlZmlu ZSBVTklDQU1fQ0xFCQlCSVQoMCkKPiArI2RlZmluZSBVTklDQU1fQ0xQRAkJQklUKDEpCj4gKyNk ZWZpbmUgVU5JQ0FNX0NMTFBFCQlCSVQoMikKPiArI2RlZmluZSBVTklDQU1fQ0xIU0UJCUJJVCgz KQo+ICsjZGVmaW5lIFVOSUNBTV9DTFRSRQkJQklUKDQpCj4gKyNkZWZpbmUgVU5JQ0FNX0NMQUNf TUFTSwlHRU5NQVNLKDgsIDUpCj4gKyNkZWZpbmUgVU5JQ0FNX0NMU1RFCQlCSVQoMjkpCj4gKwo+ ICsvKiBVTklDQU1fQ0xUIFJlZ2lzdGVyICovCj4gKyNkZWZpbmUgVU5JQ0FNX0NMVDFfTUFTSwlH RU5NQVNLKDcsIDApCj4gKyNkZWZpbmUgVU5JQ0FNX0NMVDJfTUFTSwlHRU5NQVNLKDE1LCA4KQo+ ICsKPiArLyogVU5JQ0FNX0RBVG4gUmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgVU5JQ0FNX0RMRQkJ QklUKDApCj4gKyNkZWZpbmUgVU5JQ0FNX0RMUEQJCUJJVCgxKQo+ICsjZGVmaW5lIFVOSUNBTV9E TExQRQkJQklUKDIpCj4gKyNkZWZpbmUgVU5JQ0FNX0RMSFNFCQlCSVQoMykKPiArI2RlZmluZSBV TklDQU1fRExUUkUJCUJJVCg0KQo+ICsjZGVmaW5lIFVOSUNBTV9ETFNNCQlCSVQoNSkKPiArI2Rl ZmluZSBVTklDQU1fRExGTwkJQklUKDI4KQo+ICsjZGVmaW5lIFVOSUNBTV9ETFNURQkJQklUKDI5 KQo+ICsKPiArI2RlZmluZSBVTklDQU1fREFUX01BU0tfQUxMCShVTklDQU1fRExTVEUgfCBVTklD QU1fRExGTykKPiArCj4gKy8qIFVOSUNBTV9ETFQgUmVnaXN0ZXIgKi8KPiArI2RlZmluZSBVTklD QU1fRExUMV9NQVNLCUdFTk1BU0soNywgMCkKPiArI2RlZmluZSBVTklDQU1fRExUMl9NQVNLCUdF Tk1BU0soMTUsIDgpCj4gKyNkZWZpbmUgVU5JQ0FNX0RMVDNfTUFTSwlHRU5NQVNLKDIzLCAxNikK PiArCj4gKy8qIFVOSUNBTV9JQ1RMIFJlZ2lzdGVyICovCj4gKyNkZWZpbmUgVU5JQ0FNX0ZTSUUJ CUJJVCgwKQo+ICsjZGVmaW5lIFVOSUNBTV9GRUlFCQlCSVQoMSkKPiArI2RlZmluZSBVTklDQU1f SUJPQgkJQklUKDIpCj4gKyNkZWZpbmUgVU5JQ0FNX0ZDTQkJQklUKDMpCj4gKyNkZWZpbmUgVU5J Q0FNX1RGQwkJQklUKDQpCj4gKyNkZWZpbmUgVU5JQ0FNX0xJUF9NQVNLCQlHRU5NQVNLKDYsIDUp Cj4gKyNkZWZpbmUgVU5JQ0FNX0xDSUVfTUFTSwlHRU5NQVNLKDI4LCAxNikKPiArCj4gKy8qIFVO SUNBTV9JREkwLzEgUmVnaXN0ZXIgKi8KPiArI2RlZmluZSBVTklDQU1fSUQwX01BU0sJCUdFTk1B U0soNywgMCkKPiArI2RlZmluZSBVTklDQU1fSUQxX01BU0sJCUdFTk1BU0soMTUsIDgpCj4gKyNk ZWZpbmUgVU5JQ0FNX0lEMl9NQVNLCQlHRU5NQVNLKDIzLCAxNikKPiArI2RlZmluZSBVTklDQU1f SUQzX01BU0sJCUdFTk1BU0soMzEsIDI0KQo+ICsKPiArLyogVU5JQ0FNX0lTVEEgUmVnaXN0ZXIg Ki8KPiArI2RlZmluZSBVTklDQU1fRlNJCQlCSVQoMCkKPiArI2RlZmluZSBVTklDQU1fRkVJCQlC SVQoMSkKPiArI2RlZmluZSBVTklDQU1fTENJCQlCSVQoMikKPiArCj4gKyNkZWZpbmUgVU5JQ0FN X0lTVEFfTUFTS19BTEwJKFVOSUNBTV9GU0kgfCBVTklDQU1fRkVJIHwgVU5JQ0FNX0xDSSkKPiAr Cj4gKy8qIFVOSUNBTV9JUElQRSBSZWdpc3RlciAqLwo+ICsjZGVmaW5lIFVOSUNBTV9QVU1fTUFT SwkJR0VOTUFTSygyLCAwKQo+ICsvKiBVbnBhY2tpbmcgbW9kZXMgKi8KPiArI2RlZmluZSBVTklD QU1fUFVNX05PTkUJCTAKPiArI2RlZmluZSBVTklDQU1fUFVNX1VOUEFDSzYJMQo+ICsjZGVmaW5l IFVOSUNBTV9QVU1fVU5QQUNLNwkyCj4gKyNkZWZpbmUgVU5JQ0FNX1BVTV9VTlBBQ0s4CTMKPiAr I2RlZmluZSBVTklDQU1fUFVNX1VOUEFDSzEwCTQKPiArI2RlZmluZSBVTklDQU1fUFVNX1VOUEFD SzEyCTUKPiArI2RlZmluZSBVTklDQU1fUFVNX1VOUEFDSzE0CTYKPiArI2RlZmluZSBVTklDQU1f UFVNX1VOUEFDSzE2CTcKPiArI2RlZmluZSBVTklDQU1fRERNX01BU0sJCUdFTk1BU0soNiwgMykK PiArI2RlZmluZSBVTklDQU1fUFBNX01BU0sJCUdFTk1BU0soOSwgNykKPiArLyogUGFja2luZyBt b2RlcyAqLwo+ICsjZGVmaW5lIFVOSUNBTV9QUE1fTk9ORQkJMAo+ICsjZGVmaW5lIFVOSUNBTV9Q UE1fUEFDSzgJMQo+ICsjZGVmaW5lIFVOSUNBTV9QUE1fUEFDSzEwCTIKPiArI2RlZmluZSBVTklD QU1fUFBNX1BBQ0sxMgkzCj4gKyNkZWZpbmUgVU5JQ0FNX1BQTV9QQUNLMTQJNAo+ICsjZGVmaW5l IFVOSUNBTV9QUE1fUEFDSzE2CTUKPiArI2RlZmluZSBVTklDQU1fREVNX01BU0sJCUdFTk1BU0so MTEsIDEwKQo+ICsjZGVmaW5lIFVOSUNBTV9ERUJMX01BU0sJR0VOTUFTSygxNCwgMTIpCj4gKyNk ZWZpbmUgVU5JQ0FNX0lDTV9NQVNLCQlHRU5NQVNLKDE2LCAxNSkKPiArI2RlZmluZSBVTklDQU1f SURNX01BU0sJCUdFTk1BU0soMTcsIDE3KQo+ICsKPiArLyogVU5JQ0FNX0lDQyBSZWdpc3RlciAq Lwo+ICsjZGVmaW5lIFVOSUNBTV9JQ0ZMX01BU0sJR0VOTUFTSyg0LCAwKQo+ICsjZGVmaW5lIFVO SUNBTV9JQ0ZIX01BU0sJR0VOTUFTSyg5LCA1KQo+ICsjZGVmaW5lIFVOSUNBTV9JQ1NUX01BU0sJ R0VOTUFTSygxMiwgMTApCj4gKyNkZWZpbmUgVU5JQ0FNX0lDTFRfTUFTSwlHRU5NQVNLKDE1LCAx MykKPiArI2RlZmluZSBVTklDQU1fSUNMTF9NQVNLCUdFTk1BU0soMzEsIDE2KQo+ICsKPiArLyog VU5JQ0FNX0RDUyBSZWdpc3RlciAqLwo+ICsjZGVmaW5lIFVOSUNBTV9ESUUJCUJJVCgwKQo+ICsj ZGVmaW5lIFVOSUNBTV9ESU0JCUJJVCgxKQo+ICsjZGVmaW5lIFVOSUNBTV9EQk9CCQlCSVQoMykK PiArI2RlZmluZSBVTklDQU1fRkRFCQlCSVQoNCkKPiArI2RlZmluZSBVTklDQU1fTERQCQlCSVQo NSkKPiArI2RlZmluZSBVTklDQU1fRURMX01BU0sJCUdFTk1BU0soMTUsIDgpCj4gKwo+ICsvKiBV TklDQU1fREJDVEwgUmVnaXN0ZXIgKi8KPiArI2RlZmluZSBVTklDQU1fREJFTgkJQklUKDApCj4g KyNkZWZpbmUgVU5JQ0FNX0JVRjBfSUUJCUJJVCgxKQo+ICsjZGVmaW5lIFVOSUNBTV9CVUYxX0lF CQlCSVQoMikKPiArCj4gKy8qIFVOSUNBTV9DTVBbMCwxXSByZWdpc3RlciAqLwo+ICsjZGVmaW5l IFVOSUNBTV9QQ0UJCUJJVCgzMSkKPiArI2RlZmluZSBVTklDQU1fR0kJCUJJVCg5KQo+ICsjZGVm aW5lIFVOSUNBTV9DUEgJCUJJVCg4KQo+ICsjZGVmaW5lIFVOSUNBTV9QQ1ZDX01BU0sJR0VOTUFT Syg3LCA2KQo+ICsjZGVmaW5lIFVOSUNBTV9QQ0RUX01BU0sJR0VOTUFTSyg1LCAwKQo+ICsKPiAr LyogVU5JQ0FNX01JU0MgcmVnaXN0ZXIgKi8KPiArI2RlZmluZSBVTklDQU1fRkwwCQlCSVQoNikK PiArI2RlZmluZSBVTklDQU1fRkwxCQlCSVQoOSkKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4MzUvYmNtMjgzNS11bmljYW0uYyBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vYmNtMjgzNS9iY20yODM1LXVuaWNhbS5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjQ3MGU2OTE2MzdjNwo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4MzUvYmNtMjgzNS11bmljYW0u Ywo+IEBAIC0wLDAgKzEsMjU3MCBAQAo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMC1vbmx5Cj4gKy8qCj4gKyAqIEJDTTI4M3ggLyBCQ00yNzF4IFVuaWNhbSBDYXB0dXJlIERy aXZlcgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCAtIFJhc3BiZXJyeSBQaSAo VHJhZGluZykgTHRkLgo+ICsgKgo+ICsgKiBEYXZlIFN0ZXZlbnNvbiA8ZGF2ZS5zdGV2ZW5zb25A cmFzcGJlcnJ5cGkuY29tPgo+ICsgKgo+ICsgKiBCYXNlZCBvbiBUSSBhbTQzN3ggZHJpdmVyIGJ5 Cj4gKyAqICAgQmVub2l0IFBhcnJvdCA8YnBhcnJvdEB0aS5jb20+Cj4gKyAqICAgTGFkLCBQcmFi aGFrYXIgPHByYWJoYWthci5jc2VuZ2dAZ21haWwuY29tPgo+ICsgKgo+ICsgKiBhbmQgVEkgQ0FM IGNhbWVyYSBpbnRlcmZhY2UgZHJpdmVyIGJ5Cj4gKyAqICAgIEJlbm9pdCBQYXJyb3QgPGJwYXJy b3RAdGkuY29tPgo+ICsgKgo+ICsgKgo+ICsgKiBUaGVyZSBhcmUgdHdvIGNhbWVyYSBkcml2ZXJz IGluIHRoZSBrZXJuZWwgZm9yIEJDTTI4M3ggLSB0aGlzIG9uZQo+ICsgKiBhbmQgYmNtMjgzNS1j YW1lcmEgKGN1cnJlbnRseSBpbiBzdGFnaW5nKS4KPiArICoKPiArICogVGhpcyBkcml2ZXIgZGly ZWN0bHkgY29udHJvbHMgdGhlIFVuaWNhbSBwZXJpcGhlcmFsIC0gdGhlcmUgaXMgbm8KPiArICog aW52b2x2ZW1lbnQgd2l0aCB0aGUgVmlkZW9Db3JlIGZpcm13YXJlLiBVbmljYW0gcmVjZWl2ZXMg Q1NJLTIgb3IKPiArICogQ0NQMiBkYXRhIGFuZCB3cml0ZXMgaXQgaW50byBTRFJBTS4KPiArICog VGhlIG9ubHkgcG90ZW50aWFsIHByb2Nlc3Npbmcgb3B0aW9ucyBhcmUgdG8gcmVwYWNrIEJheWVy IGRhdGEgaW50byBhbgo+ICsgKiBhbHRlcm5hdGUgZm9ybWF0LCBhbmQgYXBwbHlpbmcgd2luZG93 aW5nLgo+ICsgKiBUaGUgcmVwYWNraW5nIGRvZXMgbm90IHNoaWZ0IHRoZSBkYXRhLCBzbyBjYW4g cmVwYWNrIFY0TDJfUElYX0ZNVF9TeHh4eDEwUAo+ICsgKiB0byBWNEwyX1BJWF9GTVRfU3h4eHgx MCwgb3IgVjRMMl9QSVhfRk1UX1N4eHh4MTJQIHRvIFY0TDJfUElYX0ZNVF9TeHh4eDEyLAo+ICsg KiBidXQgbm90IGdlbmVyaWNhbGx5IHVwIHRvIFY0TDJfUElYX0ZNVF9TeHh4eDE2LiBUaGUgZHJp dmVyIHdpbGwgYWRkIGJvdGgKPiArICogZm9ybWF0cyB3aGVyZSB0aGUgcmVsZXZhbnQgZm9ybWF0 cyBhcmUgZGVmaW5lZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseQo+ICsgKiBjb25maWd1cmUgdGhl IHJlcGFja2luZyBhcyByZXF1aXJlZC4KPiArICogU3VwcG9ydCBmb3Igd2luZG93aW5nIG1heSBi ZSBhZGRlZCBsYXRlci4KPiArICoKPiArICogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbm5l Y3QgdGhpcyBkcml2ZXIgdG8gYW55IHNlbnNvciB3aXRoIGEKPiArICogc3VpdGFibGUgb3V0cHV0 IGludGVyZmFjZSBhbmQgVjRMMiBzdWJkZXZpY2UgZHJpdmVyLgo+ICsgKgo+ICsgKiBiY20yODM1 LWNhbWVyYSB1c2VzIHRoZSBWaWRlb0NvcmUgZmlybXdhcmUgdG8gY29udHJvbCB0aGUgc2Vuc29y LAo+ICsgKiBVbmljYW0sIElTUCwgYW5kIGFsbCB0dW5lciBjb250cm9sIGxvb3BzLiBGdWxseSBw cm9jZXNzZWQgZnJhbWVzIGFyZQo+ICsgKiBkZWxpdmVyZWQgdG8gdGhlIGRyaXZlciBieSB0aGUg ZmlybXdhcmUuIEl0IG9ubHkgaGFzIHNlbnNvciBkcml2ZXJzCj4gKyAqIGZvciBPbW5pdmlzaW9u IE9WNTY0NywgYW5kIFNvbnkgSU1YMjE5IHNlbnNvcnMuCj4gKyAqCj4gKyAqIFRoZSB0d28gZHJp dmVycyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciB0aGUgc2FtZSBVbmljYW0gaW5zdGFuY2Uu Cj4gKyAqIFRoZSBWaWRlb0NvcmUgZmlybXdhcmUgY2hlY2tzIHRoZSBkZXZpY2UgdHJlZSBjb25m aWd1cmF0aW9uIGR1cmluZyBib290Lgo+ICsgKiBJZiBpdCBmaW5kcyBkZXZpY2UgdHJlZSBub2Rl cyBjYWxsZWQgY3NpMCBvciBjc2kxIGl0IHdpbGwgYmxvY2sgdGhlCj4gKyAqIGZpcm13YXJlIGZy b20gYWNjZXNzaW5nIHRoZSBwZXJpcGhlcmFsLCBhbmQgYmNtMjgzNS1jYW1lcmEgd2lsbAo+ICsg KiBub3QgYmUgYWJsZSB0byBzdHJlYW0gZGF0YS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGlu dXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGludXgv ZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZXJyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9pbnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvb2ZfZ3JhcGguaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgv cG1fcnVudGltZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvdWFjY2Vzcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+Cj4gKwo+ICsjaW5j bHVkZSA8bWVkaWEvdjRsMi1hc3luYy5oPgo+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1jb21tb24u aD4KPiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItY3RybHMuaD4KPiArI2luY2x1ZGUgPG1lZGlhL3Y0 bDItZGV2Lmg+Cj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWRldmljZS5oPgo+ICsjaW5jbHVkZSA8 bWVkaWEvdjRsMi1kdi10aW1pbmdzLmg+Cj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWV2ZW50Lmg+ Cj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWlvY3RsLmg+Cj4gKyNpbmNsdWRlIDxtZWRpYS92NGwy LWZ3bm9kZS5oPgo+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1tYy5oPgo+ICsjaW5jbHVkZSA8bWVk aWEvdmlkZW9idWYyLWRtYS1jb250aWcuaD4KPiArCj4gKyNpbmNsdWRlICJiY20yODM1LXVuaWNh bS1yZWdzLmgiCj4gKwo+ICsjZGVmaW5lIFVOSUNBTV9NT0RVTEVfTkFNRQkidW5pY2FtIgo+ICsK PiArLyoKPiArICogVW5pY2FtIG11c3QgcmVxdWVzdCBhIG1pbmltdW0gb2YgMjUwTWh6IGZyb20g dGhlIFZQVSBjbG9jay4KPiArICogT3RoZXJ3aXNlIHRoZSBpbnB1dCBGSUZPcyBvdmVycnVuIGFu ZCBjYXVzZSBpbWFnZSBjb3JydXB0aW9uLgo+ICsgKi8KPiArI2RlZmluZSBVTklDQU1fTUlOX1ZQ VV9DTE9DS19SQVRFICgyNTAgKiAxMDAwICogMTAwMCkKPiArCj4gKy8qCj4gKyAqIFN0cmlkZSBp cyBhIDE2IGJpdCByZWdpc3RlciwgYnV0IGFsc28gaGFzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMzIu Cj4gKyAqLwo+ICsjZGVmaW5lIFVOSUNBTV9CUExfQUxJR05NRU5UCQkzMgo+ICsjZGVmaW5lIFVO SUNBTV9NQVhfQllURVNQRVJMSU5FCQkoKDEgPDwgMTYpIC0gVU5JQ0FNX0JQTF9BTElHTk1FTlQp Cj4gKy8qCj4gKyAqIE1heCB3aWR0aCBpcyB0aGVyZWZvcmUgZGV0ZXJtaW5lZCBieSB0aGUgbWF4 IHN0cmlkZSBkaXZpZGVkIGJ5Cj4gKyAqIHRoZSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwuIFRh a2UgMzJicHAgYXMgYQo+ICsgKiB3b3JzdCBjYXNlLgo+ICsgKiBObyBpbXBvc2VkIGxpbWl0IG9u IHRoZSBoZWlnaHQsIHNvIGFkb3B0IGEgc3F1YXJlIGltYWdlIGZvciB3YW50Cj4gKyAqIG9mIGFu eXRoaW5nIGJldHRlci4KPiArICovCj4gKyNkZWZpbmUgVU5JQ0FNX01BWF9XSURUSAkJKFVOSUNB TV9NQVhfQllURVNQRVJMSU5FIC8gNCkKPiArI2RlZmluZSBVTklDQU1fTUFYX0hFSUdIVAkJVU5J Q0FNX01BWF9XSURUSAo+ICsvKiBEZWZpbmUgYSBub21pbmFsIG1pbmltdW0gaW1hZ2Ugc2l6ZSAq Lwo+ICsjZGVmaW5lIFVOSUNBTV9NSU5fV0lEVEgJCTE2Cj4gKyNkZWZpbmUgVU5JQ0FNX01JTl9I RUlHSFQJCTE2Cj4gKy8qIERlZmF1bHQgc2l6ZSBvZiB0aGUgZW1iZWRkZWQgYnVmZmVyICovCj4g KyNkZWZpbmUgVU5JQ0FNX0VNQkVEREVEX1NJWkUJCTE2Mzg0Cj4gKwo+ICsvKgo+ICsgKiBTaXpl IG9mIHRoZSBkdW1teSBidWZmZXIuIENhbiBiZSBhbnkgc2l6ZSByZWFsbHksIGJ1dCB0aGUgRE1B Cj4gKyAqIGFsbG9jYXRpb24gd29ya3MgaW4gdW5pdHMgb2YgcGFnZSBzaXplcy4KPiArICovCj4g KyNkZWZpbmUgVU5JQ0FNX0RVTU1ZX0JVRl9TSVpFCQlQQUdFX1NJWkUKPiArCj4gKyNkZWZpbmUg VU5JQ0FNX1NEX1BBRF9TSU5LCQkwCj4gKyNkZWZpbmUgVU5JQ0FNX1NEX1BBRF9TT1VSQ0VfSU1B R0UJMQo+ICsjZGVmaW5lIFVOSUNBTV9TRF9QQURfU09VUkNFX01FVEFEQVRBCTIKPiArI2RlZmlu ZSBVTklDQU1fU0RfTlVNX1BBRFMJCSgxICsgVU5JQ0FNX1NEX1BBRF9TT1VSQ0VfTUVUQURBVEEp Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgdW5pY2FtX3NkX3BhZF9pc19zaW5rKHUzMiBwYWQp Cj4gK3sKPiArCS8qIENhbWVyYSBSWCBoYXMgMSBzaW5rIHBhZCwgYW5kIE4gc291cmNlIHBhZHMg Ki8KPiArCXJldHVybiBwYWQgPT0gMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBib29sIHVu aWNhbV9zZF9wYWRfaXNfc291cmNlKHUzMiBwYWQpCj4gK3sKPiArCS8qIENhbWVyYSBSWCBoYXMg MSBzaW5rIHBhZCwgYW5kIE4gc291cmNlIHBhZHMgKi8KPiArCXJldHVybiBwYWQgIT0gVU5JQ0FN X1NEX1BBRF9TSU5LOwo+ICt9Cj4gKwo+ICtlbnVtIHVuaWNhbV9ub2RlX3R5cGUgewo+ICsJVU5J Q0FNX0lNQUdFX05PREUsCj4gKwlVTklDQU1fTUVUQURBVEFfTk9ERSwKPiArCVVOSUNBTV9NQVhf Tk9ERVMKPiArfTsKPiArCj4gKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqIFN0cnVjdHVy ZSBkZWZpbml0aW9ucwo+ICsgKi8KPiArCj4gKy8qCj4gKyAqIHN0cnVjdCB1bmljYW1fZm10IC0g VW5pY2FtIG1lZGlhIGJ1cyBmb3JtYXQgaW5mb3JtYXRpb24KPiArICogQGZvdXJjYzogVjRMMiBw aXhlbCBmb3JtYXQgRkNDIGlkZW50aWZpZXIuIDAgaWYgbi9hLgo+ICsgKiBAdW5wYWNrZWRfZm91 cmNjOiBWNEwyIHBpeGVsIGZvcm1hdCBGQ0MgaWRlbnRpZmllciBpZiB0aGUgZGF0YSBpcyBleHBh bmRlZAo+ICsgKiBvdXQgdG8gMTZicHAuIDAgaWYgbi9hLgo+ICsgKiBAY29kZTogVjRMMiBtZWRp YSBidXMgZm9ybWF0IGNvZGUuCj4gKyAqIEBkZXB0aDogQml0cyBwZXIgcGl4ZWwgYXMgZGVsaXZl cmVkIGZyb20gdGhlIHNvdXJjZS4KPiArICogQGNzaV9kdDogQ1NJIGRhdGEgdHlwZS4KPiArICog QG1ldGFkYXRhX2ZtdDogVGhpcyBmb3JtYXQgb25seSBhcHBsaWVzIHRvIHRoZSBtZXRhZGF0YSBw YWQuCj4gKyAqLwo+ICtzdHJ1Y3QgdW5pY2FtX2ZtdCB7Cj4gKwl1MzIJZm91cmNjOwo+ICsJdTMy CXVucGFja2VkX2ZvdXJjYzsKPiArCXUzMgljb2RlOwo+ICsJdTgJZGVwdGg7Cj4gKwl1OAljc2lf ZHQ7Cj4gKwl1OAltZXRhZGF0YV9mbXQ6MTsKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdW5pY2FtX2ZtdCB1bmljYW1faW1hZ2VfZm9ybWF0c1tdID0gewo+ICsJLyogWVVWIEZvcm1h dHMgKi8KPiArCXsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9ZVVlWLAo+ICsJCS5jb2Rl CQk9IE1FRElBX0JVU19GTVRfWVVZVjhfMVgxNiwKPiArCQkuZGVwdGgJCT0gMTYsCj4gKwkJLmNz aV9kdAkJPSAweDFlLAo+ICsJfSwgewo+ICsJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1VZVlks Cj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9VWVZZOF8xWDE2LAo+ICsJCS5kZXB0aAkJPSAx NiwKPiArCQkuY3NpX2R0CQk9IDB4MWUsCj4gKwl9LCB7Cj4gKwkJLmZvdXJjYwkJPSBWNEwyX1BJ WF9GTVRfWVZZVSwKPiArCQkuY29kZQkJPSBNRURJQV9CVVNfRk1UX1lWWVU4XzFYMTYsCj4gKwkJ LmRlcHRoCQk9IDE2LAo+ICsJCS5jc2lfZHQJCT0gMHgxZSwKPiArCX0sIHsKPiArCQkuZm91cmNj CQk9IFY0TDJfUElYX0ZNVF9WWVVZLAo+ICsJCS5jb2RlCQk9IE1FRElBX0JVU19GTVRfVllVWThf MVgxNiwKPiArCQkuZGVwdGgJCT0gMTYsCj4gKwkJLmNzaV9kdAkJPSAweDFlLAo+ICsJfSwgewo+ ICsJLyogUkdCIEZvcm1hdHMgKi8KPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9SR0I1NjUs IC8qIGdnZ2JiYmJiIHJycnJyZ2dnICovCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9SR0I1 NjVfMVgxNiwKPiArCQkuZGVwdGgJCT0gMTYsCj4gKwkJLmNzaV9kdAkJPSAweDIyLAo+ICsJfSwg ewo+ICsJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1JHQjI0LCAvKiByZ2IgKi8KPiArCQkuY29k ZQkJPSBNRURJQV9CVVNfRk1UX1JHQjg4OF8xWDI0LAo+ICsJCS5kZXB0aAkJPSAyNCwKPiArCQku Y3NpX2R0CQk9IDB4MjQsCj4gKwl9LCB7Cj4gKwkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfQkdS MjQsIC8qIGJnciAqLwo+ICsJCS5jb2RlCQk9IE1FRElBX0JVU19GTVRfQkdSODg4XzFYMjQsCj4g KwkJLmRlcHRoCQk9IDI0LAo+ICsJCS5jc2lfZHQJCT0gMHgyNCwKPiArCX0sIHsKPiArCS8qIEJh eWVyIEZvcm1hdHMgKi8KPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TQkdHUjgsCj4gKwkJ LmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TQkdHUjhfMVg4LAo+ICsJCS5kZXB0aAkJPSA4LAo+ICsJ CS5jc2lfZHQJCT0gMHgyYSwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9T R0JSRzgsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TR0JSRzhfMVg4LAo+ICsJCS5kZXB0 aAkJPSA4LAo+ICsJCS5jc2lfZHQJCT0gMHgyYSwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0 TDJfUElYX0ZNVF9TR1JCRzgsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TR1JCRzhfMVg4 LAo+ICsJCS5kZXB0aAkJPSA4LAo+ICsJCS5jc2lfZHQJCT0gMHgyYSwKPiArCX0sIHsKPiArCQku Zm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TUkdHQjgsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZN VF9TUkdHQjhfMVg4LAo+ICsJCS5kZXB0aAkJPSA4LAo+ICsJCS5jc2lfZHQJCT0gMHgyYSwKPiAr CX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TQkdHUjEwUCwKPiArCQkudW5wYWNr ZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NCR0dSMTAsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVT X0ZNVF9TQkdHUjEwXzFYMTAsCj4gKwkJLmRlcHRoCQk9IDEwLAo+ICsJCS5jc2lfZHQJCT0gMHgy YiwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR0JSRzEwUCwKPiArCQku dW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NHQlJHMTAsCj4gKwkJLmNvZGUJCT0gTUVE SUFfQlVTX0ZNVF9TR0JSRzEwXzFYMTAsCj4gKwkJLmRlcHRoCQk9IDEwLAo+ICsJCS5jc2lfZHQJ CT0gMHgyYiwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR1JCRzEwUCwK PiArCQkudW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NHUkJHMTAsCj4gKwkJLmNvZGUJ CT0gTUVESUFfQlVTX0ZNVF9TR1JCRzEwXzFYMTAsCj4gKwkJLmRlcHRoCQk9IDEwLAo+ICsJCS5j c2lfZHQJCT0gMHgyYiwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TUkdH QjEwUCwKPiArCQkudW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NSR0dCMTAsCj4gKwkJ LmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TUkdHQjEwXzFYMTAsCj4gKwkJLmRlcHRoCQk9IDEwLAo+ ICsJCS5jc2lfZHQJCT0gMHgyYiwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZN VF9TQkdHUjEyUCwKPiArCQkudW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NCR0dSMTIs Cj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TQkdHUjEyXzFYMTIsCj4gKwkJLmRlcHRoCQk9 IDEyLAo+ICsJCS5jc2lfZHQJCT0gMHgyYywKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJf UElYX0ZNVF9TR0JSRzEyUCwKPiArCQkudW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NH QlJHMTIsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TR0JSRzEyXzFYMTIsCj4gKwkJLmRl cHRoCQk9IDEyLAo+ICsJCS5jc2lfZHQJCT0gMHgyYywKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9 IFY0TDJfUElYX0ZNVF9TR1JCRzEyUCwKPiArCQkudW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhf Rk1UX1NHUkJHMTIsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TR1JCRzEyXzFYMTIsCj4g KwkJLmRlcHRoCQk9IDEyLAo+ICsJCS5jc2lfZHQJCT0gMHgyYywKPiArCX0sIHsKPiArCQkuZm91 cmNjCQk9IFY0TDJfUElYX0ZNVF9TUkdHQjEyUCwKPiArCQkudW5wYWNrZWRfZm91cmNjID0gVjRM Ml9QSVhfRk1UX1NSR0dCMTIsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TUkdHQjEyXzFY MTIsCj4gKwkJLmRlcHRoCQk9IDEyLAo+ICsJCS5jc2lfZHQJCT0gMHgyYywKPiArCX0sIHsKPiAr CQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TQkdHUjE0UCwKPiArCQkudW5wYWNrZWRfZm91cmNj ID0gVjRMMl9QSVhfRk1UX1NCR0dSMTQsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9TQkdH UjE0XzFYMTQsCj4gKwkJLmRlcHRoCQk9IDE0LAo+ICsJCS5jc2lfZHQJCT0gMHgyZCwKPiArCX0s IHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR0JSRzE0UCwKPiArCQkudW5wYWNrZWRf Zm91cmNjID0gVjRMMl9QSVhfRk1UX1NHQlJHMTQsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZN VF9TR0JSRzE0XzFYMTQsCj4gKwkJLmRlcHRoCQk9IDE0LAo+ICsJCS5jc2lfZHQJCT0gMHgyZCwK PiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TR1JCRzE0UCwKPiArCQkudW5w YWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NHUkJHMTQsCj4gKwkJLmNvZGUJCT0gTUVESUFf QlVTX0ZNVF9TR1JCRzE0XzFYMTQsCj4gKwkJLmRlcHRoCQk9IDE0LAo+ICsJCS5jc2lfZHQJCT0g MHgyZCwKPiArCX0sIHsKPiArCQkuZm91cmNjCQk9IFY0TDJfUElYX0ZNVF9TUkdHQjE0UCwKPiAr CQkudW5wYWNrZWRfZm91cmNjID0gVjRMMl9QSVhfRk1UX1NSR0dCMTQsCj4gKwkJLmNvZGUJCT0g TUVESUFfQlVTX0ZNVF9TUkdHQjE0XzFYMTQsCj4gKwkJLmRlcHRoCQk9IDE0LAo+ICsJCS5jc2lf ZHQJCT0gMHgyZCwKPiArCX0sIHsKPiArCS8qIDE2IGJpdCBCYXllciBmb3JtYXRzIGNvdWxkIGJl IHN1cHBvcnRlZC4gKi8KPiArCj4gKwkvKiBHcmV5c2NhbGUgZm9ybWF0cyAqLwo+ICsJCS5mb3Vy Y2MJCT0gVjRMMl9QSVhfRk1UX0dSRVksCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9ZOF8x WDgsCj4gKwkJLmRlcHRoCQk9IDgsCj4gKwkJLmNzaV9kdAkJPSAweDJhLAo+ICsJfSwgewo+ICsJ CS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1kxMFAsCj4gKwkJLnVucGFja2VkX2ZvdXJjYyA9IFY0 TDJfUElYX0ZNVF9ZMTAsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9ZMTBfMVgxMCwKPiAr CQkuZGVwdGgJCT0gMTAsCj4gKwkJLmNzaV9kdAkJPSAweDJiLAo+ICsJfSwgewo+ICsJCS5mb3Vy Y2MJCT0gVjRMMl9QSVhfRk1UX1kxMlAsCj4gKwkJLnVucGFja2VkX2ZvdXJjYyA9IFY0TDJfUElY X0ZNVF9ZMTIsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9ZMTJfMVgxMiwKPiArCQkuZGVw dGgJCT0gMTIsCj4gKwkJLmNzaV9kdAkJPSAweDJjLAo+ICsJfSwgewo+ICsJCS5mb3VyY2MJCT0g VjRMMl9QSVhfRk1UX1kxNFAsCj4gKwkJLnVucGFja2VkX2ZvdXJjYyA9IFY0TDJfUElYX0ZNVF9Z MTQsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9ZMTRfMVgxNCwKPiArCQkuZGVwdGgJCT0g MTQsCj4gKwkJLmNzaV9kdAkJPSAweDJkLAo+ICsJfSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgdW5pY2FtX2ZtdCB1bmljYW1fbWV0YV9mb3JtYXRzW10gPSB7Cj4gKwl7Cj4gKwkJ LmZvdXJjYwkJPSBWNEwyX01FVEFfRk1UXzgsCj4gKwkJLmNvZGUJCT0gTUVESUFfQlVTX0ZNVF9N RVRBREFUQV84LAo+ICsJCS5kZXB0aAkJPSA4LAo+ICsJCS5tZXRhZGF0YV9mbXQJPSAxLAo+ICsJ fQo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgZGVm YXVsdF9pbWFnZV9mb3JtYXQgPSB7Cj4gKwkud2lkdGggPSA2NDAsCj4gKwkuaGVpZ2h0ID0gNDgw LAo+ICsJLmNvZGUgPSBNRURJQV9CVVNfRk1UX1VZVlk4XzFYMTYsCj4gKwkuZmllbGQgPSBWNEwy X0ZJRUxEX05PTkUsCj4gKwkuY29sb3JzcGFjZSA9IFY0TDJfQ09MT1JTUEFDRV9TUkdCLAo+ICsJ LnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DXzYwMSwKPiArCS5xdWFudGl6YXRpb24gPSBWNEwy X1FVQU5USVpBVElPTl9MSU1fUkFOR0UsCj4gKwkueGZlcl9mdW5jID0gVjRMMl9YRkVSX0ZVTkNf U1JHQiwKPiArCS5mbGFncyA9IDAsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgdW5pY2FtX2J1ZmZlciB7 Cj4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyIHZiOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0 Owo+ICt9Owo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgdW5pY2FtX2J1ZmZlciAqdG9fdW5p Y2FtX2J1ZmZlcihzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpCj4gK3sKPiArCXJldHVybiBjb250YWlu ZXJfb2YodmIsIHN0cnVjdCB1bmljYW1fYnVmZmVyLCB2Yi52YjJfYnVmKTsKPiArfQo+ICsKPiAr c3RydWN0IHVuaWNhbV9ub2RlIHsKPiArCWJvb2wgcmVnaXN0ZXJlZDsKPiArCWJvb2wgc3RyZWFt aW5nOwo+ICsJdW5zaWduZWQgaW50IGlkOwo+ICsKPiArCS8qIFBvaW50ZXIgdG8gdGhlIGN1cnJl bnQgdjRsMl9idWZmZXIgKi8KPiArCXN0cnVjdCB1bmljYW1fYnVmZmVyICpjdXJfZnJtOwo+ICsJ LyogUG9pbnRlciB0byB0aGUgbmV4dCB2NGwyX2J1ZmZlciAqLwo+ICsJc3RydWN0IHVuaWNhbV9i dWZmZXIgKm5leHRfZnJtOwo+ICsJLyogdmlkZW8gY2FwdHVyZSAqLwo+ICsJY29uc3Qgc3RydWN0 IHVuaWNhbV9mbXQgKmZtdDsKPiArCS8qIFVzZWQgdG8gc3RvcmUgY3VycmVudCBwaXhlbCBmb3Jt YXQgKi8KPiArCXN0cnVjdCB2NGwyX2Zvcm1hdCB2X2ZtdDsKPiArCS8qIEJ1ZmZlciBxdWV1ZSB1 c2VkIGluIHZpZGVvLWJ1ZiAqLwo+ICsJc3RydWN0IHZiMl9xdWV1ZSBidWZmZXJfcXVldWU7Cj4g KwkvKiBRdWV1ZSBvZiBmaWxsZWQgZnJhbWVzICovCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGRtYV9x dWV1ZTsKPiArCS8qIElSUSBsb2NrIGZvciBETUEgcXVldWUgKi8KPiArCXNwaW5sb2NrX3QgZG1h X3F1ZXVlX2xvY2s7Cj4gKwkvKiBsb2NrIHVzZWQgdG8gYWNjZXNzIHRoaXMgc3RydWN0dXJlICov Cj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiArCS8qIElkZW50aWZpZXMgdmlkZW8gZGV2aWNlIGZv ciB0aGlzIGNoYW5uZWwgKi8KPiArCXN0cnVjdCB2aWRlb19kZXZpY2UgdmlkZW9fZGV2Owo+ICsJ LyogUG9pbnRlciB0byB0aGUgcGFyZW50IGhhbmRsZSAqLwo+ICsJc3RydWN0IHVuaWNhbV9kZXZp Y2UgKmRldjsKPiArCXN0cnVjdCBtZWRpYV9wYWQgcGFkOwo+ICsJLyoKPiArCSAqIER1bW15IGJ1 ZmZlciBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IHVuaWNhbQo+ICsJICogaWYgd2UgaGF2ZSBubyBv dGhlciBxdWV1ZWQgYnVmZmVycyB0byBzd2FwIHRvLgo+ICsJICovCj4gKwl2b2lkICpkdW1teV9i dWZfY3B1X2FkZHI7Cj4gKwlkbWFfYWRkcl90IGR1bW15X2J1Zl9kbWFfYWRkcjsKPiArfTsKPiAr Cj4gK3N0cnVjdCB1bmljYW1fZGV2aWNlIHsKPiArCXN0cnVjdCBrcmVmIGtyZWY7Cj4gKwo+ICsJ LyogcGVyaXBoZXJhbCBiYXNlIGFkZHJlc3MgKi8KPiArCXZvaWQgX19pb21lbSAqYmFzZTsKPiAr CS8qIGNsb2NrIGdhdGluZyBiYXNlIGFkZHJlc3MgKi8KPiArCXZvaWQgX19pb21lbSAqY2xrX2dh dGVfYmFzZTsKPiArCS8qIGxwIGNsb2NrIGhhbmRsZSAqLwo+ICsJc3RydWN0IGNsayAqY2xvY2s7 Cj4gKwkvKiB2cHUgY2xvY2sgaGFuZGxlICovCj4gKwlzdHJ1Y3QgY2xrICp2cHVfY2xvY2s7Cj4g KwkvKiBWNGwyIGRldmljZSAqLwo+ICsJc3RydWN0IHY0bDJfZGV2aWNlIHY0bDJfZGV2Owo+ICsJ c3RydWN0IG1lZGlhX2RldmljZSBtZGV2Owo+ICsKPiArCS8qIHBhcmVudCBkZXZpY2UgKi8KPiAr CXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCS8qIHN1YmRldmljZSBhc3luYyBOb3RpZmllciAqLwo+ ICsJc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgbm90aWZpZXI7Cj4gKwl1bnNpZ25lZCBpbnQg c2VxdWVuY2U7Cj4gKwo+ICsJLyogU2Vuc29yIG5vZGUgKi8KPiArCXN0cnVjdCB7Cj4gKwkJc3Ry dWN0IHY0bDJfc3ViZGV2ICpzdWJkZXY7Cj4gKwkJc3RydWN0IG1lZGlhX3BhZCAqcGFkOwo+ICsJ fSBzZW5zb3I7Cj4gKwo+ICsJLyogSW50ZXJuYWwgc3ViZGV2ICovCj4gKwlzdHJ1Y3Qgewo+ICsJ CXN0cnVjdCB2NGwyX3N1YmRldiBzZDsKPiArCQlzdHJ1Y3QgbWVkaWFfcGFkIHBhZHNbVU5JQ0FN X1NEX05VTV9QQURTXTsKPiArCQlib29sIHN0cmVhbWluZzsKPiArCX0gc3ViZGV2Owo+ICsKPiAr CWVudW0gdjRsMl9tYnVzX3R5cGUgYnVzX3R5cGU7Cj4gKwkvKgo+ICsJICogU3RvcmVzIGJ1cy5t aXBpX2NzaTIuZmxhZ3MgZm9yIENTSTIgc2Vuc29ycywgb3IKPiArCSAqIGJ1cy5taXBpX2NzaTEu c3Ryb2JlIGZvciBDQ1AyLgo+ICsJICovCj4gKwl1bnNpZ25lZCBpbnQgYnVzX2ZsYWdzOwo+ICsJ dW5zaWduZWQgaW50IG1heF9kYXRhX2xhbmVzOwo+ICsJdW5zaWduZWQgaW50IGFjdGl2ZV9kYXRh X2xhbmVzOwo+ICsKPiArCXN0cnVjdCBtZWRpYV9waXBlbGluZSBwaXBlOwo+ICsKPiArCXN0cnVj dCB1bmljYW1fbm9kZSBub2RlW1VOSUNBTV9NQVhfTk9ERVNdOwo+ICt9Owo+ICsKPiArc3RhdGlj IGlubGluZSBzdHJ1Y3QgdW5pY2FtX2RldmljZSAqCj4gK25vdGlmaWVyX3RvX3VuaWNhbV9kZXZp Y2Uoc3RydWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgKm5vdGlmaWVyKQo+ICt7Cj4gKwlyZXR1cm4g Y29udGFpbmVyX29mKG5vdGlmaWVyLCBzdHJ1Y3QgdW5pY2FtX2RldmljZSwgbm90aWZpZXIpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCB1bmljYW1fZGV2aWNlICoKPiArc2RfdG9f dW5pY2FtX2RldmljZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQo+ICt7Cj4gKwlyZXR1cm4gY29u dGFpbmVyX29mKHNkLCBzdHJ1Y3QgdW5pY2FtX2RldmljZSwgc3ViZGV2LnNkKTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgdW5pY2FtX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpCj4gK3sKPiAr CXN0cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0gPQo+ICsJCWNvbnRhaW5lcl9vZihrcmVmLCBz dHJ1Y3QgdW5pY2FtX2RldmljZSwga3JlZik7Cj4gKwo+ICsJaWYgKHVuaWNhbS0+bWRldi5kZXYp Cj4gKwkJbWVkaWFfZGV2aWNlX2NsZWFudXAoJnVuaWNhbS0+bWRldik7Cj4gKwo+ICsJa2ZyZWUo dW5pY2FtKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5pY2FtX3B1dChzdHJ1Y3QgdW5pY2Ft X2RldmljZSAqdW5pY2FtKQo+ICt7Cj4gKwlrcmVmX3B1dCgmdW5pY2FtLT5rcmVmLCB1bmljYW1f cmVsZWFzZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgdW5pY2FtX2RldmljZSAqdW5pY2Ft X2dldChzdHJ1Y3QgdW5pY2FtX2RldmljZSAqdW5pY2FtKQo+ICt7Cj4gKwlrcmVmX2dldCgmdW5p Y2FtLT5rcmVmKTsKPiArCXJldHVybiB1bmljYW07Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHVu aWNhbV9ub2RlX3JlbGVhc2Uoc3RydWN0IHZpZGVvX2RldmljZSAqdmRldikKPiArewo+ICsJc3Ry dWN0IHVuaWNhbV9ub2RlICpub2RlID0gdmlkZW9fZ2V0X2RydmRhdGEodmRldik7Cj4gKwo+ICsJ dW5pY2FtX3B1dChub2RlLT5kZXYpOwo+ICt9Cj4gKwo+ICsvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICsgKiBNaXNjIGhlbHBlciBmdW5jdGlvbnMKPiArICovCj4gKwo+ICtzdGF0aWMgaW5saW5l IGJvb2wgaXNfbWV0YWRhdGFfbm9kZShzdHJ1Y3QgdW5pY2FtX25vZGUgKm5vZGUpCj4gK3sKPiAr CXJldHVybiBub2RlLT52aWRlb19kZXYuZGV2aWNlX2NhcHMgJiBWNEwyX0NBUF9NRVRBX0NBUFRV UkU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19pbWFnZV9ub2RlKHN0cnVjdCB1 bmljYW1fbm9kZSAqbm9kZSkKPiArewo+ICsJcmV0dXJuIG5vZGUtPnZpZGVvX2Rldi5kZXZpY2Vf Y2FwcyAmIFY0TDJfQ0FQX1ZJREVPX0NBUFRVUkU7Cj4gK30KPiArCj4gKy8qIEhhcmR3YXJlIGFj Y2VzcyAqLwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdW5pY2FtX2Nsa193cml0ZShzdHJ1Y3QgdW5p Y2FtX2RldmljZSAqdW5pY2FtLCB1MzIgdmFsKQo+ICt7Cj4gKwkvKiBQYXNzIHRoZSBDTV9QQVNT V09SRCBhbG9uZyB3aXRoIHRoZSB2YWx1ZS4gKi8KPiArCXdyaXRlbCh2YWwgfCAweDVhMDAwMDAw LCB1bmljYW0tPmNsa19nYXRlX2Jhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHUzMiB1 bmljYW1fcmVnX3JlYWQoc3RydWN0IHVuaWNhbV9kZXZpY2UgKnVuaWNhbSwgdTMyIG9mZnNldCkK PiArewo+ICsJcmV0dXJuIHJlYWRsKHVuaWNhbS0+YmFzZSArIG9mZnNldCk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbmxpbmUgdm9pZCB1bmljYW1fcmVnX3dyaXRlKHN0cnVjdCB1bmljYW1fZGV2aWNl ICp1bmljYW0sIHUzMiBvZmZzZXQsIHUzMiB2YWwpCj4gK3sKPiArCXdyaXRlbCh2YWwsIHVuaWNh bS0+YmFzZSArIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHVuaWNhbV9n ZXRfZmllbGQodTMyIHZhbHVlLCB1MzIgbWFzaykKPiArewo+ICsJcmV0dXJuICh2YWx1ZSAmIG1h c2spID4+IF9fZmZzKG1hc2spOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdW5pY2Ft X3NldF9maWVsZCh1MzIgKnZhbHAsIHUzMiBmaWVsZCwgdTMyIG1hc2spCj4gK3sKPiArCXUzMiB2 YWwgPSAqdmFscDsKPiArCj4gKwl2YWwgJj0gfm1hc2s7Cj4gKwl2YWwgfD0gKGZpZWxkIDw8IF9f ZmZzKG1hc2spKSAmIG1hc2s7Cj4gKwkqdmFscCA9IHZhbDsKPiArfQo+ICsKPiArc3RhdGljIGlu bGluZSB2b2lkIHVuaWNhbV9yZWdfd3JpdGVfZmllbGQoc3RydWN0IHVuaWNhbV9kZXZpY2UgKnVu aWNhbSwgdTMyIG9mZnNldCwKPiArCQkJCQkgIHUzMiBmaWVsZCwgdTMyIG1hc2spCj4gK3sKPiAr CXUzMiB2YWwgPSB1bmljYW1fcmVnX3JlYWQodW5pY2FtLCBvZmZzZXQpOwo+ICsKPiArCXVuaWNh bV9zZXRfZmllbGQoJnZhbCwgZmllbGQsIG1hc2spOwo+ICsJdW5pY2FtX3JlZ193cml0ZSh1bmlj YW0sIG9mZnNldCwgdmFsKTsKPiArfQo+ICsKPiArLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAr ICogRm9ybWF0IGRhdGEgdGFibGUgYW5kIGhlbHBlciBmdW5jdGlvbnMKPiArICovCj4gKwo+ICsv KiBGb3JtYXQgc2V0dXAgZnVuY3Rpb25zICovCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdW5pY2Ft X2ZtdCAqdW5pY2FtX2ZpbmRfZm9ybWF0X2J5X2NvZGUodTMyIGNvZGUsIHUzMiBwYWQpCj4gK3sK PiArCWNvbnN0IHN0cnVjdCB1bmljYW1fZm10ICpmb3JtYXRzOwo+ICsJdW5zaWduZWQgaW50IG51 bV9mb3JtYXRzOwo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsJaWYgKHBhZCA9PSBVTklDQU1f U0RfUEFEX1NPVVJDRV9JTUFHRSkgewo+ICsJCWZvcm1hdHMgPSB1bmljYW1faW1hZ2VfZm9ybWF0 czsKPiArCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUodW5pY2FtX2ltYWdlX2Zvcm1hdHMpOwo+ ICsJfSBlbHNlIHsKPiArCQlmb3JtYXRzID0gdW5pY2FtX21ldGFfZm9ybWF0czsKPiArCQludW1f Zm9ybWF0cyA9IEFSUkFZX1NJWkUodW5pY2FtX21ldGFfZm9ybWF0cyk7Cj4gKwl9Cj4gKwo+ICsJ Zm9yIChpID0gMDsgaSA8IG51bV9mb3JtYXRzOyBpKyspIHsKPiArCQlpZiAoZm9ybWF0c1tpXS5j b2RlID09IGNvZGUpCj4gKwkJCXJldHVybiAmZm9ybWF0c1tpXTsKPiArCX0KPiArCj4gKwlyZXR1 cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCB1bmljYW1fZm10ICp1bmlj YW1fZmluZF9mb3JtYXRfYnlfZm91cmNjKHUzMiBmb3VyY2MsIHUzMiBwYWQpCj4gK3sKPiArCWNv bnN0IHN0cnVjdCB1bmljYW1fZm10ICpmb3JtYXRzOwo+ICsJdW5zaWduZWQgaW50IG51bV9mb3Jt YXRzOwo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsJaWYgKHBhZCA9PSBVTklDQU1fU0RfUEFE X1NPVVJDRV9JTUFHRSkgewo+ICsJCWZvcm1hdHMgPSB1bmljYW1faW1hZ2VfZm9ybWF0czsKPiAr CQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUodW5pY2FtX2ltYWdlX2Zvcm1hdHMpOwo+ICsJfSBl bHNlIHsKPiArCQlmb3JtYXRzID0gdW5pY2FtX21ldGFfZm9ybWF0czsKPiArCQludW1fZm9ybWF0 cyA9IEFSUkFZX1NJWkUodW5pY2FtX21ldGFfZm9ybWF0cyk7Cj4gKwl9Cj4gKwo+ICsJZm9yIChp ID0gMDsgaSA8IG51bV9mb3JtYXRzOyArK2kpIHsKPiArCQlpZiAoZm9ybWF0c1tpXS5mb3VyY2Mg PT0gZm91cmNjKQo+ICsJCQlyZXR1cm4gJmZvcm1hdHNbaV07Cj4gKwl9Cj4gKwo+ICsJcmV0dXJu IE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdW5pY2FtX2NhbGNfZm9ybWF0X3NpemVfYnBs KHN0cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0sCj4gKwkJCQkgICAgICAgY29uc3Qgc3RydWN0 IHVuaWNhbV9mbXQgKmZtdCwKPiArCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpCj4g K3sKPiArCXUzMiBtaW5fYnBsOwo+ICsKPiArCXY0bF9ib3VuZF9hbGlnbl9pbWFnZSgmZi0+Zm10 LnBpeC53aWR0aCwgVU5JQ0FNX01JTl9XSURUSCwKPiArCQkJICAgICAgVU5JQ0FNX01BWF9XSURU SCwgMiwKPiArCQkJICAgICAgJmYtPmZtdC5waXguaGVpZ2h0LCBVTklDQU1fTUlOX0hFSUdIVCwK PiArCQkJICAgICAgVU5JQ0FNX01BWF9IRUlHSFQsIDAsIDApOwo+ICsKPiArCS8qIFVucGFja2lu ZyBhbHdheXMgZ29lcyB0byAxNmJwcCAqLwo+ICsJaWYgKGYtPmZtdC5waXgucGl4ZWxmb3JtYXQg PT0gZm10LT51bnBhY2tlZF9mb3VyY2MpCj4gKwkJbWluX2JwbCA9IGYtPmZtdC5waXgud2lkdGgg KiAyOwo+ICsJZWxzZQo+ICsJCW1pbl9icGwgPSBmLT5mbXQucGl4LndpZHRoICogZm10LT5kZXB0 aCAvIDg7Cj4gKwltaW5fYnBsID0gQUxJR04obWluX2JwbCwgVU5JQ0FNX0JQTF9BTElHTk1FTlQp Owo+ICsKPiArCWYtPmZtdC5waXguYnl0ZXNwZXJsaW5lID0gQUxJR04oZi0+Zm10LnBpeC5ieXRl c3BlcmxpbmUsCj4gKwkJCQkJVU5JQ0FNX0JQTF9BTElHTk1FTlQpOwo+ICsJZi0+Zm10LnBpeC5i eXRlc3BlcmxpbmUgPSBjbGFtcF90KHVuc2lnbmVkIGludCwKPiArCQkJCQkgIGYtPmZtdC5waXgu Ynl0ZXNwZXJsaW5lLAo+ICsJCQkJCSAgbWluX2JwbCwKPiArCQkJCQkgIFVOSUNBTV9NQVhfQllU RVNQRVJMSU5FKTsKPiArCj4gKwlmLT5mbXQucGl4LnNpemVpbWFnZSA9IGYtPmZtdC5waXguaGVp Z2h0ICogZi0+Zm10LnBpeC5ieXRlc3BlcmxpbmU7Cj4gKwo+ICsJZGV2X2RiZyh1bmljYW0tPmRl diwgIiVzOiBmb3VyY2M6ICUwOFggc2l6ZTogJXV4JXUgYnBsOiV1IGltZ19zaXplOiV1XG4iLAo+ ICsJCV9fZnVuY19fLAo+ICsJCWYtPmZtdC5waXgucGl4ZWxmb3JtYXQsCj4gKwkJZi0+Zm10LnBp eC53aWR0aCwgZi0+Zm10LnBpeC5oZWlnaHQsCj4gKwkJZi0+Zm10LnBpeC5ieXRlc3BlcmxpbmUs IGYtPmZtdC5waXguc2l6ZWltYWdlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICogSGFyZHdhcmUgaGFuZGxpbmcKPiArICovCj4gKwo+ ICtzdGF0aWMgdm9pZCB1bmljYW1fd3JfZG1hX2FkZHIoc3RydWN0IHVuaWNhbV9ub2RlICpub2Rl LCBkbWFfYWRkcl90IGRtYWFkZHIsCj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyX3Np emUpCj4gK3sKPiArCWRtYV9hZGRyX3QgZW5kYWRkciA9IGRtYWFkZHIgKyBidWZmZXJfc2l6ZTsK PiArCj4gKwlpZiAobm9kZS0+aWQgPT0gVU5JQ0FNX0lNQUdFX05PREUpIHsKPiArCQl1bmljYW1f cmVnX3dyaXRlKG5vZGUtPmRldiwgVU5JQ0FNX0lCU0EwLCBkbWFhZGRyKTsKPiArCQl1bmljYW1f cmVnX3dyaXRlKG5vZGUtPmRldiwgVU5JQ0FNX0lCRUEwLCBlbmRhZGRyKTsKPiArCX0gZWxzZSB7 Cj4gKwkJdW5pY2FtX3JlZ193cml0ZShub2RlLT5kZXYsIFVOSUNBTV9EQlNBMCwgZG1hYWRkcik7 Cj4gKwkJdW5pY2FtX3JlZ193cml0ZShub2RlLT5kZXYsIFVOSUNBTV9EQkVBMCwgZW5kYWRkcik7 Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgdW5pY2FtX2dldF9saW5lc19k b25lKHN0cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0pCj4gK3sKPiArCWRtYV9hZGRyX3Qgc3Rh cnRfYWRkciwgY3VyX2FkZHI7Cj4gKwlzdHJ1Y3QgdW5pY2FtX25vZGUgKm5vZGUgPSAmdW5pY2Ft LT5ub2RlW1VOSUNBTV9JTUFHRV9OT0RFXTsKPiArCXVuc2lnbmVkIGludCBzdHJpZGUgPSBub2Rl LT52X2ZtdC5mbXQucGl4LmJ5dGVzcGVybGluZTsKPiArCXN0cnVjdCB1bmljYW1fYnVmZmVyICpm cm0gPSBub2RlLT5jdXJfZnJtOwo+ICsKPiArCWlmICghZnJtKQo+ICsJCXJldHVybiAwOwo+ICsK PiArCXN0YXJ0X2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcigmZnJtLT52Yi52 YjJfYnVmLCAwKTsKPiArCWN1cl9hZGRyID0gdW5pY2FtX3JlZ19yZWFkKHVuaWNhbSwgVU5JQ0FN X0lCV1ApOwo+ICsJcmV0dXJuICh1bnNpZ25lZCBpbnQpKGN1cl9hZGRyIC0gc3RhcnRfYWRkcikg LyBzdHJpZGU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHVuaWNhbV9zY2hlZHVsZV9uZXh0X2J1 ZmZlcihzdHJ1Y3QgdW5pY2FtX25vZGUgKm5vZGUpCj4gK3sKPiArCXN0cnVjdCB1bmljYW1fYnVm ZmVyICpidWY7Cj4gKwl1bnNpZ25lZCBpbnQgc2l6ZTsKPiArCWRtYV9hZGRyX3QgYWRkcjsKPiAr Cj4gKwlidWYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZub2RlLT5kbWFfcXVldWUsIHN0cnVjdCB1bmlj YW1fYnVmZmVyLCBsaXN0KTsKPiArCW5vZGUtPm5leHRfZnJtID0gYnVmOwo+ICsJbGlzdF9kZWwo JmJ1Zi0+bGlzdCk7Cj4gKwo+ICsJYWRkciA9IHZiMl9kbWFfY29udGlnX3BsYW5lX2RtYV9hZGRy KCZidWYtPnZiLnZiMl9idWYsIDApOwo+ICsJaWYgKGlzX2ltYWdlX25vZGUobm9kZSkpCj4gKwkJ c2l6ZSA9IG5vZGUtPnZfZm10LmZtdC5waXguc2l6ZWltYWdlOwo+ICsJZWxzZQo+ICsJCXNpemUg PSBub2RlLT52X2ZtdC5mbXQubWV0YS5idWZmZXJzaXplOwo+ICsKPiArCXVuaWNhbV93cl9kbWFf YWRkcihub2RlLCBhZGRyLCBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5pY2FtX3Nj aGVkdWxlX2R1bW15X2J1ZmZlcihzdHJ1Y3QgdW5pY2FtX25vZGUgKm5vZGUpCj4gK3sKPiArCXN0 cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0gPSBub2RlLT5kZXY7Cj4gKwlpbnQgbm9kZV9pZCA9 IGlzX2ltYWdlX25vZGUobm9kZSkgPyBVTklDQU1fSU1BR0VfTk9ERSA6IFVOSUNBTV9NRVRBREFU QV9OT0RFOwo+ICsKPiArCWRldl9kYmcodW5pY2FtLT5kZXYsICJTY2hlZHVsaW5nIGR1bW15IGJ1 ZmZlciBmb3Igbm9kZSAlZFxuIiwgbm9kZV9pZCk7Cj4gKwo+ICsJdW5pY2FtX3dyX2RtYV9hZGRy KG5vZGUsIG5vZGUtPmR1bW15X2J1Zl9kbWFfYWRkciwKPiArCQkJICAgVU5JQ0FNX0RVTU1ZX0JV Rl9TSVpFKTsKPiArCj4gKwlub2RlLT5uZXh0X2ZybSA9IE5VTEw7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIHVuaWNhbV9wcm9jZXNzX2J1ZmZlcl9jb21wbGV0ZShzdHJ1Y3QgdW5pY2FtX25vZGUg Km5vZGUsCj4gKwkJCQkJICAgdW5zaWduZWQgaW50IHNlcXVlbmNlKQo+ICt7Cj4gKwlub2RlLT5j dXJfZnJtLT52Yi5maWVsZCA9IG5vZGUtPnZfZm10LmZtdC5waXguZmllbGQ7Cj4gKwlub2RlLT5j dXJfZnJtLT52Yi5zZXF1ZW5jZSA9IHNlcXVlbmNlOwo+ICsKPiArCXZiMl9idWZmZXJfZG9uZSgm bm9kZS0+Y3VyX2ZybS0+dmIudmIyX2J1ZiwgVkIyX0JVRl9TVEFURV9ET05FKTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgdW5pY2FtX3F1ZXVlX2V2ZW50X3NvZihzdHJ1Y3QgdW5pY2FtX2Rldmlj ZSAqdW5pY2FtKQo+ICt7Cj4gKwlzdHJ1Y3QgdW5pY2FtX25vZGUgKm5vZGUgPSAmdW5pY2FtLT5u b2RlW1VOSUNBTV9JTUFHRV9OT0RFXTsKPiArCj4gKwlzdHJ1Y3QgdjRsMl9ldmVudCBldmVudCA9 IHsKPiArCQkudHlwZSA9IFY0TDJfRVZFTlRfRlJBTUVfU1lOQywKPiArCQkudS5mcmFtZV9zeW5j LmZyYW1lX3NlcXVlbmNlID0gdW5pY2FtLT5zZXF1ZW5jZSwKPiArCX07Cj4gKwo+ICsJdjRsMl9l dmVudF9xdWV1ZSgmbm9kZS0+dmlkZW9fZGV2LCAmZXZlbnQpOwo+ICt9Cj4gKwo+ICsvKgo+ICsg KiB1bmljYW1faXNyIDogSVNSIGhhbmRsZXIgZm9yIHVuaWNhbSBjYXB0dXJlCj4gKyAqIEBpcnE6 IGlycSBudW1iZXIKPiArICogQGRldl9pZDogZGV2X2lkIHB0cgo+ICsgKgo+ICsgKiBJdCBjaGFu Z2VzIHN0YXR1cyBvZiB0aGUgY2FwdHVyZWQgYnVmZmVyLCB0YWtlcyBuZXh0IGJ1ZmZlciBmcm9t IHRoZSBxdWV1ZQo+ICsgKiBhbmQgc2V0cyBpdHMgYWRkcmVzcyBpbiB1bmljYW0gcmVnaXN0ZXJz Cj4gKyAqLwo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgdW5pY2FtX2lzcihpbnQgaXJxLCB2b2lkICpk ZXYpCj4gK3sKPiArCXN0cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0gPSBkZXY7Cj4gKwl1bnNp Z25lZCBpbnQgbGluZXNfZG9uZSA9IHVuaWNhbV9nZXRfbGluZXNfZG9uZShkZXYpOwo+ICsJdW5z aWduZWQgaW50IHNlcXVlbmNlID0gdW5pY2FtLT5zZXF1ZW5jZTsKPiArCXVuc2lnbmVkIGludCBp Owo+ICsJdTMyIGlzdGEsIHN0YTsKPiArCWJvb2wgZmU7Cj4gKwl1NjQgdHM7Cj4gKwo+ICsJc3Rh ID0gdW5pY2FtX3JlZ19yZWFkKHVuaWNhbSwgVU5JQ0FNX1NUQSk7Cj4gKwkvKiBXcml0ZSB2YWx1 ZSBiYWNrIHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHRzICovCj4gKwl1bmljYW1fcmVnX3dyaXRlKHVu aWNhbSwgVU5JQ0FNX1NUQSwgc3RhKTsKPiArCj4gKwlpc3RhID0gdW5pY2FtX3JlZ19yZWFkKHVu aWNhbSwgVU5JQ0FNX0lTVEEpOwo+ICsJLyogV3JpdGUgdmFsdWUgYmFjayB0byBjbGVhciB0aGUg aW50ZXJydXB0cyAqLwo+ICsJdW5pY2FtX3JlZ193cml0ZSh1bmljYW0sIFVOSUNBTV9JU1RBLCBp c3RhKTsKPiArCj4gKwlkZXZfZGJnKHVuaWNhbS0+ZGV2LCAiSVNSOiBJU1RBOiAweCVYLCBTVEE6 IDB4JVgsIHNlcXVlbmNlICVkLCBsaW5lcyBkb25lICVkIiwKPiArCQlpc3RhLCBzdGEsIHNlcXVl bmNlLCBsaW5lc19kb25lKTsKPiArCj4gKwlpZiAoIShzdGEgJiAoVU5JQ0FNX0lTIHwgVU5JQ0FN X1BJMCkpKQo+ICsJCXJldHVybiBJUlFfSEFORExFRDsKPiArCj4gKwkvKgo+ICsJICogTG9vayBm b3IgZWl0aGVyIHRoZSBGcmFtZSBFbmQgaW50ZXJydXB0IG9yIHRoZSBQYWNrZXQgQ2FwdHVyZSBz dGF0dXMKPiArCSAqIHRvIHNpZ25hbCBhIGZyYW1lIGVuZC4KPiArCSAqLwo+ICsJZmUgPSBpc3Rh ICYgVU5JQ0FNX0ZFSSB8fCBzdGEgJiBVTklDQU1fUEkwOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBt dXN0IHJ1biB0aGUgZnJhbWUgZW5kIGhhbmRsZXIgZmlyc3QuIElmIHdlIGhhdmUgYSB2YWxpZCBu ZXh0X2ZybQo+ICsJICogYW5kIHdlIGdldCBhIHNpbXVsdGFuZW91dCBGRSArIEZTIGludGVycnVw dCwgcnVubmluZyB0aGUgRlMgaGFuZGxlcgo+ICsJICogZmlyc3Qgd291bGQgbnVsbCBvdXQgdGhl IG5leHRfZnJtIHB0ciBhbmQgd2Ugd291bGQgaGF2ZSBsb3N0IHRoZQo+ICsJICogYnVmZmVyIGZv cmV2ZXIuCj4gKwkgKi8KPiArCWlmIChmZSkgewo+ICsJCS8qCj4gKwkJICogRW5zdXJlIHdlIGhh dmUgc3dhcHBlZCBidWZmZXJzIGFscmVhZHkgYXMgd2UgY2FuJ3QKPiArCQkgKiBzdG9wIHRoZSBw ZXJpcGhlcmFsLiBJZiBubyBidWZmZXIgaXMgYXZhaWxhYmxlLCB1c2UgYQo+ICsJCSAqIGR1bW15 IGJ1ZmZlciB0byBkdW1wIG91dCBmcmFtZXMgdW50aWwgd2UgZ2V0IGEgbmV3IGJ1ZmZlcgo+ICsJ CSAqIHRvIHVzZS4KPiArCQkgKi8KPiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh1bmlj YW0tPm5vZGUpOyBpKyspIHsKPiArCQkJaWYgKCF1bmljYW0tPm5vZGVbaV0uc3RyZWFtaW5nKQo+ ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBJZiBjdXJfZnJtID09IG5leHRf ZnJtLCBpdCBtZWFucyB3ZSBoYXZlIG5vdCBoYWQKPiArCQkJICogYSBjaGFuY2UgdG8gc3dhcCBi dWZmZXJzLCBsaWtlbHkgZHVlIHRvIGhhdmluZwo+ICsJCQkgKiBtdWx0aXBsZSBpbnRlcnJ1cHRz IG9jY3VycmluZyBzaW11bHRhbmVvdXNseSAobGlrZSBGRQo+ICsJCQkgKiArIEZTICsgTFMpLiBJ biB0aGlzIGNhc2UsIHdlIGNhbm5vdCBzaWduYWwgdGhlIGJ1ZmZlcgo+ICsJCQkgKiBhcyBjb21w bGV0ZSwgYXMgdGhlIEhXIHdpbGwgcmV1c2UgdGhhdCBidWZmZXIuCj4gKwkJCSAqLwo+ICsJCQlp ZiAodW5pY2FtLT5ub2RlW2ldLmN1cl9mcm0gJiYKPiArCQkJICAgIHVuaWNhbS0+bm9kZVtpXS5j dXJfZnJtICE9IHVuaWNhbS0+bm9kZVtpXS5uZXh0X2ZybSkKPiArCQkJCXVuaWNhbV9wcm9jZXNz X2J1ZmZlcl9jb21wbGV0ZSgmdW5pY2FtLT5ub2RlW2ldLAo+ICsJCQkJCQkJICAgICAgIHNlcXVl bmNlKTsKPiArCQkJdW5pY2FtLT5ub2RlW2ldLmN1cl9mcm0gPSB1bmljYW0tPm5vZGVbaV0ubmV4 dF9mcm07Cj4gKwkJfQo+ICsJCXVuaWNhbS0+c2VxdWVuY2UrKzsKPiArCX0KPiArCj4gKwlpZiAo aXN0YSAmIFVOSUNBTV9GU0kpIHsKPiArCQkvKgo+ICsJCSAqIFRpbWVzdGFtcCBpcyB0byBiZSB3 aGVuIHRoZSBmaXJzdCBkYXRhIGJ5dGUgd2FzIGNhcHR1cmVkLAo+ICsJCSAqIGFrYSBmcmFtZSBz dGFydC4KPiArCQkgKi8KPiArCQl0cyA9IGt0aW1lX2dldF9ucygpOwo+ICsJCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHVuaWNhbS0+bm9kZSk7IGkrKykgewo+ICsJCQlpZiAoIXVuaWNhbS0+ bm9kZVtpXS5zdHJlYW1pbmcpCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCWlmICh1bmljYW0t Pm5vZGVbaV0uY3VyX2ZybSkKPiArCQkJCXVuaWNhbS0+bm9kZVtpXS5jdXJfZnJtLT52Yi52YjJf YnVmLnRpbWVzdGFtcCA9Cj4gKwkJCQkJCQkJdHM7Cj4gKwkJCWVsc2UKPiArCQkJCWRldl9kYmco dW5pY2FtLT52NGwyX2Rldi5kZXYsCj4gKwkJCQkJIklTUjogWyVkXSBEcm9wcGluZyBmcmFtZSwg YnVmZmVyIG5vdCBhdmFpbGFibGUgYXQgRlNcbiIsCj4gKwkJCQkJaSk7Cj4gKwkJCS8qCj4gKwkJ CSAqIFNldCB0aGUgbmV4dCBmcmFtZSBvdXRwdXQgdG8gZ28gdG8gYSBkdW1teSBmcmFtZQo+ICsJ CQkgKiBpZiB3ZSBoYXZlIG5vdCBtYW5hZ2VkIHRvIG9idGFpbiBhbm90aGVyIGZyYW1lCj4gKwkJ CSAqIGZyb20gdGhlIHF1ZXVlLgo+ICsJCQkgKi8KPiArCQkJdW5pY2FtX3NjaGVkdWxlX2R1bW15 X2J1ZmZlcigmdW5pY2FtLT5ub2RlW2ldKTsKPiArCQl9Cj4gKwo+ICsJCXVuaWNhbV9xdWV1ZV9l dmVudF9zb2YodW5pY2FtKTsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogQ2Fubm90IHN3YXAgYnVm ZmVyIGF0IGZyYW1lIGVuZCwgdGhlcmUgbWF5IGJlIGEgcmFjZSBjb25kaXRpb24KPiArCSAqIHdo ZXJlIHRoZSBIVyBkb2VzIG5vdCBhY3R1YWxseSBzd2FwIGl0IGlmIHRoZSBuZXcgZnJhbWUgaGFz Cj4gKwkgKiBhbHJlYWR5IHN0YXJ0ZWQuCj4gKwkgKi8KPiArCWlmIChpc3RhICYgKFVOSUNBTV9G U0kgfCBVTklDQU1fTENJKSAmJiAhZmUpIHsKPiArCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RSh1bmljYW0tPm5vZGUpOyBpKyspIHsKPiArCQkJaWYgKCF1bmljYW0tPm5vZGVbaV0uc3RyZWFt aW5nKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlzcGluX2xvY2soJnVuaWNhbS0+bm9kZVtp XS5kbWFfcXVldWVfbG9jayk7Cj4gKwkJCWlmICghbGlzdF9lbXB0eSgmdW5pY2FtLT5ub2RlW2ld LmRtYV9xdWV1ZSkgJiYKPiArCQkJICAgICF1bmljYW0tPm5vZGVbaV0ubmV4dF9mcm0pCj4gKwkJ CQl1bmljYW1fc2NoZWR1bGVfbmV4dF9idWZmZXIoJnVuaWNhbS0+bm9kZVtpXSk7Cj4gKwkJCXNw aW5fdW5sb2NrKCZ1bmljYW0tPm5vZGVbaV0uZG1hX3F1ZXVlX2xvY2spOwo+ICsJCX0KPiArCX0K PiArCj4gKwlpZiAodW5pY2FtX3JlZ19yZWFkKHVuaWNhbSwgVU5JQ0FNX0lDVEwpICYgVU5JQ0FN X0ZDTSkgewo+ICsJCS8qIFN3aXRjaCBvdXQgb2YgdHJpZ2dlciBtb2RlIGlmIHNlbGVjdGVkICov Cj4gKwkJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9JQ1RMLCAxLCBVTklD QU1fVEZDKTsKPiArCQl1bmljYW1fcmVnX3dyaXRlX2ZpZWxkKHVuaWNhbSwgVU5JQ0FNX0lDVEws IDAsIFVOSUNBTV9GQ00pOwo+ICsJfQo+ICsJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCB1bmljYW1fc2V0X3BhY2tpbmdfY29uZmlnKHN0cnVjdCB1bmljYW1fZGV2 aWNlICp1bmljYW0pCj4gK3sKPiArCXN0cnVjdCB1bmljYW1fbm9kZSAqbm9kZSA9ICZ1bmljYW0t Pm5vZGVbVU5JQ0FNX0lNQUdFX05PREVdOwo+ICsJdTMyIHBhY2ssIHVucGFjazsKPiArCXUzMiB2 YWw7Cj4gKwo+ICsJaWYgKG5vZGUtPnZfZm10LmZtdC5waXgucGl4ZWxmb3JtYXQgPT0KPiArCSAg ICBub2RlLT5mbXQtPmZvdXJjYykgewo+ICsJCXVucGFjayA9IFVOSUNBTV9QVU1fTk9ORTsKPiAr CQlwYWNrID0gVU5JQ0FNX1BQTV9OT05FOwo+ICsJfSBlbHNlIHsKPiArCQlzd2l0Y2ggKG5vZGUt PmZtdC0+ZGVwdGgpIHsKPiArCQljYXNlIDg6Cj4gKwkJCXVucGFjayA9IFVOSUNBTV9QVU1fVU5Q QUNLODsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSAxMDoKPiArCQkJdW5wYWNrID0gVU5JQ0FNX1BV TV9VTlBBQ0sxMDsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSAxMjoKPiArCQkJdW5wYWNrID0gVU5J Q0FNX1BVTV9VTlBBQ0sxMjsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSAxNDoKPiArCQkJdW5wYWNr ID0gVU5JQ0FNX1BVTV9VTlBBQ0sxNDsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSAxNjoKPiArCQkJ dW5wYWNrID0gVU5JQ0FNX1BVTV9VTlBBQ0sxNjsKPiArCQkJYnJlYWs7Cj4gKwkJZGVmYXVsdDoK PiArCQkJdW5wYWNrID0gVU5JQ0FNX1BVTV9OT05FOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ ICsJCS8qIFJlcGFja2luZyBpcyBhbHdheXMgdG8gMTZicHAgKi8KPiArCQlwYWNrID0gVU5JQ0FN X1BQTV9QQUNLMTY7Cj4gKwl9Cj4gKwo+ICsJdmFsID0gMDsKPiArCXVuaWNhbV9zZXRfZmllbGQo JnZhbCwgdW5wYWNrLCBVTklDQU1fUFVNX01BU0spOwo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFs LCBwYWNrLCBVTklDQU1fUFBNX01BU0spOwo+ICsJdW5pY2FtX3JlZ193cml0ZSh1bmljYW0sIFVO SUNBTV9JUElQRSwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5pY2FtX2NmZ19pbWFn ZV9pZChzdHJ1Y3QgdW5pY2FtX2RldmljZSAqdW5pY2FtKQo+ICt7Cj4gKwlzdHJ1Y3QgdW5pY2Ft X25vZGUgKm5vZGUgPSAmdW5pY2FtLT5ub2RlW1VOSUNBTV9JTUFHRV9OT0RFXTsKPiArCj4gKwlp ZiAodW5pY2FtLT5idXNfdHlwZSA9PSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7Cj4gKwkJLyogQ1NJ MiBtb2RlLCBoYXJkY29kZSBWQyAwIGZvciBub3cuICovCj4gKwkJdW5pY2FtX3JlZ193cml0ZSh1 bmljYW0sIFVOSUNBTV9JREkwLAo+ICsJCQkJICgwIDw8IDYpIHwgbm9kZS0+Zm10LT5jc2lfZHQp Owo+ICsJfSBlbHNlIHsKPiArCQkvKiBDQ1AyIG1vZGUgKi8KPiArCQl1bmljYW1fcmVnX3dyaXRl KHVuaWNhbSwgVU5JQ0FNX0lESTAsCj4gKwkJCQkgMHg4MCB8IG5vZGUtPmZtdC0+Y3NpX2R0KTsK PiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5pY2FtX2VuYWJsZV9lZChzdHJ1Y3QgdW5p Y2FtX2RldmljZSAqdW5pY2FtKQo+ICt7Cj4gKwl1MzIgdmFsID0gdW5pY2FtX3JlZ19yZWFkKHVu aWNhbSwgVU5JQ0FNX0RDUyk7Cj4gKwo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAyLCBVTklD QU1fRURMX01BU0spOwo+ICsJLyogRG8gbm90IHdyYXAgYXQgdGhlIGVuZCBvZiB0aGUgZW1iZWRk ZWQgZGF0YSBidWZmZXIgKi8KPiArCXVuaWNhbV9zZXRfZmllbGQoJnZhbCwgMCwgVU5JQ0FNX0RC T0IpOwo+ICsKPiArCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fRENTLCB2YWwpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1bmljYW1fc3RhcnRfcngoc3RydWN0IHVuaWNhbV9kZXZp Y2UgKnVuaWNhbSwgZG1hX2FkZHJfdCAqYWRkcikKPiArewo+ICsJc3RydWN0IHVuaWNhbV9ub2Rl ICpub2RlID0gJnVuaWNhbS0+bm9kZVtVTklDQU1fSU1BR0VfTk9ERV07Cj4gKwlpbnQgbGluZV9p bnRfZnJlcSA9IG5vZGUtPnZfZm10LmZtdC5waXguaGVpZ2h0ID4+IDI7Cj4gKwl1bnNpZ25lZCBp bnQgc2l6ZSwgaTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJaWYgKGxpbmVfaW50X2ZyZXEgPCAxMjgp Cj4gKwkJbGluZV9pbnRfZnJlcSA9IDEyODsKPiArCj4gKwkvKiBFbmFibGUgbGFuZSBjbG9ja3Mg Ki8KPiArCXZhbCA9IDE7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgdW5pY2FtLT5hY3RpdmVfZGF0YV9s YW5lczsgaSsrKQo+ICsJCXZhbCA9IHZhbCA8PCAyIHwgMTsKPiArCXVuaWNhbV9jbGtfd3JpdGUo dW5pY2FtLCB2YWwpOwo+ICsKPiArCS8qIEJhc2ljIGluaXQgKi8KPiArCXVuaWNhbV9yZWdfd3Jp dGUodW5pY2FtLCBVTklDQU1fQ1RSTCwgVU5JQ0FNX01FTSk7Cj4gKwo+ICsJLyogRW5hYmxlIGFu YWxvZ3VlIGNvbnRyb2wsIGFuZCBsZWF2ZSBpbiByZXNldC4gKi8KPiArCXZhbCA9IFVOSUNBTV9B UjsKPiArCXVuaWNhbV9zZXRfZmllbGQoJnZhbCwgNywgVU5JQ0FNX0NUQVRBREpfTUFTSyk7Cj4g Kwl1bmljYW1fc2V0X2ZpZWxkKCZ2YWwsIDcsIFVOSUNBTV9QVEFUQURKX01BU0spOwo+ICsJdW5p Y2FtX3JlZ193cml0ZSh1bmljYW0sIFVOSUNBTV9BTkEsIHZhbCk7Cj4gKwl1c2xlZXBfcmFuZ2Uo MTAwMCwgMjAwMCk7Cj4gKwo+ICsJLyogQ29tZSBvdXQgb2YgcmVzZXQgKi8KPiArCXVuaWNhbV9y ZWdfd3JpdGVfZmllbGQodW5pY2FtLCBVTklDQU1fQU5BLCAwLCBVTklDQU1fQVIpOwo+ICsKPiAr CS8qIFBlcmlwaGVyYWwgcmVzZXQgKi8KPiArCXVuaWNhbV9yZWdfd3JpdGVfZmllbGQodW5pY2Ft LCBVTklDQU1fQ1RSTCwgMSwgVU5JQ0FNX0NQUik7Cj4gKwl1bmljYW1fcmVnX3dyaXRlX2ZpZWxk KHVuaWNhbSwgVU5JQ0FNX0NUUkwsIDAsIFVOSUNBTV9DUFIpOwo+ICsKPiArCXVuaWNhbV9yZWdf d3JpdGVfZmllbGQodW5pY2FtLCBVTklDQU1fQ1RSTCwgMCwgVU5JQ0FNX0NQRSk7Cj4gKwo+ICsJ LyogRW5hYmxlIFJ4IGNvbnRyb2wuICovCj4gKwl2YWwgPSB1bmljYW1fcmVnX3JlYWQodW5pY2Ft LCBVTklDQU1fQ1RSTCk7Cj4gKwlpZiAodW5pY2FtLT5idXNfdHlwZSA9PSBWNEwyX01CVVNfQ1NJ Ml9EUEhZKSB7Cj4gKwkJdW5pY2FtX3NldF9maWVsZCgmdmFsLCBVTklDQU1fQ1BNX0NTSTIsIFVO SUNBTV9DUE1fTUFTSyk7Cj4gKwkJdW5pY2FtX3NldF9maWVsZCgmdmFsLCBVTklDQU1fRENNX1NU Uk9CRSwgVU5JQ0FNX0RDTV9NQVNLKTsKPiArCX0gZWxzZSB7Cj4gKwkJdW5pY2FtX3NldF9maWVs ZCgmdmFsLCBVTklDQU1fQ1BNX0NDUDIsIFVOSUNBTV9DUE1fTUFTSyk7Cj4gKwkJdW5pY2FtX3Nl dF9maWVsZCgmdmFsLCB1bmljYW0tPmJ1c19mbGFncywgVU5JQ0FNX0RDTV9NQVNLKTsKPiArCX0K PiArCS8qIFBhY2tldCBmcmFtZXIgdGltZW91dCAqLwo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFs LCAweGYsIFVOSUNBTV9QRlRfTUFTSyk7Cj4gKwl1bmljYW1fc2V0X2ZpZWxkKCZ2YWwsIDEyOCwg VU5JQ0FNX09FVF9NQVNLKTsKPiArCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fQ1RS TCwgdmFsKTsKPiArCj4gKwl1bmljYW1fcmVnX3dyaXRlKHVuaWNhbSwgVU5JQ0FNX0lIV0lOLCAw KTsKPiArCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fSVZXSU4sIDApOwo+ICsKPiAr CS8qIEFYSSBidXMgYWNjZXNzIFFvUyBzZXR1cCAqLwo+ICsJdmFsID0gdW5pY2FtX3JlZ19yZWFk KHVuaWNhbSwgVU5JQ0FNX1BSSSk7Cj4gKwl1bmljYW1fc2V0X2ZpZWxkKCZ2YWwsIDAsIFVOSUNB TV9CTF9NQVNLKTsKPiArCXVuaWNhbV9zZXRfZmllbGQoJnZhbCwgMCwgVU5JQ0FNX0JTX01BU0sp Owo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAweGUsIFVOSUNBTV9QUF9NQVNLKTsKPiArCXVu aWNhbV9zZXRfZmllbGQoJnZhbCwgOCwgVU5JQ0FNX05QX01BU0spOwo+ICsJdW5pY2FtX3NldF9m aWVsZCgmdmFsLCAyLCBVTklDQU1fUFRfTUFTSyk7Cj4gKwl1bmljYW1fc2V0X2ZpZWxkKCZ2YWws IDEsIFVOSUNBTV9QRSk7Cj4gKwl1bmljYW1fcmVnX3dyaXRlKHVuaWNhbSwgVU5JQ0FNX1BSSSwg dmFsKTsKPiArCj4gKwl1bmljYW1fcmVnX3dyaXRlX2ZpZWxkKHVuaWNhbSwgVU5JQ0FNX0FOQSwg MCwgVU5JQ0FNX0RETCk7Cj4gKwo+ICsJLyogQWx3YXlzIHN0YXJ0IGluIHRyaWdnZXIgZnJhbWUg Y2FwdHVyZSBtb2RlIChVTklDQU1fRkNNIHNldCkgKi8KPiArCXZhbCA9IFVOSUNBTV9GU0lFIHwg VU5JQ0FNX0ZFSUUgfCBVTklDQU1fRkNNIHwgVU5JQ0FNX0lCT0I7Cj4gKwl1bmljYW1fc2V0X2Zp ZWxkKCZ2YWwsIGxpbmVfaW50X2ZyZXEsIFVOSUNBTV9MQ0lFX01BU0spOwo+ICsJdW5pY2FtX3Jl Z193cml0ZSh1bmljYW0sIFVOSUNBTV9JQ1RMLCB2YWwpOwo+ICsJdW5pY2FtX3JlZ193cml0ZSh1 bmljYW0sIFVOSUNBTV9TVEEsIFVOSUNBTV9TVEFfTUFTS19BTEwpOwo+ICsJdW5pY2FtX3JlZ193 cml0ZSh1bmljYW0sIFVOSUNBTV9JU1RBLCBVTklDQU1fSVNUQV9NQVNLX0FMTCk7Cj4gKwo+ICsJ LyogdGNsa190ZXJtX2VuICovCj4gKwl1bmljYW1fcmVnX3dyaXRlX2ZpZWxkKHVuaWNhbSwgVU5J Q0FNX0NMVCwgMiwgVU5JQ0FNX0NMVDFfTUFTSyk7Cj4gKwkvKiB0Y2xrX3NldHRsZSAqLwo+ICsJ dW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9DTFQsIDYsIFVOSUNBTV9DTFQy X01BU0spOwo+ICsJLyogdGRfdGVybV9lbiAqLwo+ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1 bmljYW0sIFVOSUNBTV9ETFQsIDIsIFVOSUNBTV9ETFQxX01BU0spOwo+ICsJLyogdGhzX3NldHRs ZSAqLwo+ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9ETFQsIDYsIFVO SUNBTV9ETFQyX01BU0spOwo+ICsJLyogdHJ4X2VuYWJsZSAqLwo+ICsJdW5pY2FtX3JlZ193cml0 ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9ETFQsIDAsIFVOSUNBTV9ETFQzX01BU0spOwo+ICsKPiAr CXVuaWNhbV9yZWdfd3JpdGVfZmllbGQodW5pY2FtLCBVTklDQU1fQ1RSTCwgMCwgVU5JQ0FNX1NP RSk7Cj4gKwo+ICsJLyogUGFja2V0IGNvbXBhcmUgc2V0dXAgLSByZXF1aXJlZCB0byBhdm9pZCBt aXNzaW5nIGZyYW1lIGVuZHMgKi8KPiArCXZhbCA9IDA7Cj4gKwl1bmljYW1fc2V0X2ZpZWxkKCZ2 YWwsIDEsIFVOSUNBTV9QQ0UpOwo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1f R0kpOwo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1fQ1BIKTsKPiArCXVuaWNh bV9zZXRfZmllbGQoJnZhbCwgMCwgVU5JQ0FNX1BDVkNfTUFTSyk7Cj4gKwl1bmljYW1fc2V0X2Zp ZWxkKCZ2YWwsIDEsIFVOSUNBTV9QQ0RUX01BU0spOwo+ICsJdW5pY2FtX3JlZ193cml0ZSh1bmlj YW0sIFVOSUNBTV9DTVAwLCB2YWwpOwo+ICsKPiArCS8qIEVuYWJsZSBjbG9jayBsYW5lIGFuZCBz ZXQgdXAgdGVybWluYXRpb25zICovCj4gKwl2YWwgPSAwOwo+ICsJaWYgKHVuaWNhbS0+YnVzX3R5 cGUgPT0gVjRMMl9NQlVTX0NTSTJfRFBIWSkgewo+ICsJCS8qIENTSTIgKi8KPiArCQl1bmljYW1f c2V0X2ZpZWxkKCZ2YWwsIDEsIFVOSUNBTV9DTEUpOwo+ICsJCXVuaWNhbV9zZXRfZmllbGQoJnZh bCwgMSwgVU5JQ0FNX0NMTFBFKTsKPiArCQlpZiAodW5pY2FtLT5idXNfZmxhZ3MgJiBWNEwyX01C VVNfQ1NJMl9DT05USU5VT1VTX0NMT0NLKSB7Cj4gKwkJCXVuaWNhbV9zZXRfZmllbGQoJnZhbCwg MSwgVU5JQ0FNX0NMVFJFKTsKPiArCQkJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1f Q0xIU0UpOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4gKwkJLyogQ0NQMiAqLwo+ICsJCXVuaWNhbV9z ZXRfZmllbGQoJnZhbCwgMSwgVU5JQ0FNX0NMRSk7Cj4gKwkJdW5pY2FtX3NldF9maWVsZCgmdmFs LCAxLCBVTklDQU1fQ0xIU0UpOwo+ICsJCXVuaWNhbV9zZXRfZmllbGQoJnZhbCwgMSwgVU5JQ0FN X0NMVFJFKTsKPiArCX0KPiArCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fQ0xLLCB2 YWwpOwo+ICsKPiArCS8qCj4gKwkgKiBFbmFibGUgcmVxdWlyZWQgZGF0YSBsYW5lcyB3aXRoIGFw cHJvcHJpYXRlIHRlcm1pbmF0aW9ucy4KPiArCSAqIFRoZSBzYW1lIHZhbHVlIG5lZWRzIHRvIGJl IHdyaXR0ZW4gdG8gVU5JQ0FNX0RBVG4gcmVnaXN0ZXJzIGZvcgo+ICsJICogdGhlIGFjdGl2ZSBs YW5lcywgYW5kIDAgZm9yIGluYWN0aXZlIG9uZXMuCj4gKwkgKi8KPiArCXZhbCA9IDA7Cj4gKwlp ZiAodW5pY2FtLT5idXNfdHlwZSA9PSBWNEwyX01CVVNfQ1NJMl9EUEhZKSB7Cj4gKwkJLyogQ1NJ MiAqLwo+ICsJCXVuaWNhbV9zZXRfZmllbGQoJnZhbCwgMSwgVU5JQ0FNX0RMRSk7Cj4gKwkJdW5p Y2FtX3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1fRExMUEUpOwo+ICsJCWlmICh1bmljYW0tPmJ1 c19mbGFncyAmIFY0TDJfTUJVU19DU0kyX0NPTlRJTlVPVVNfQ0xPQ0spIHsKPiArCQkJdW5pY2Ft X3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1fRExUUkUpOwo+ICsJCQl1bmljYW1fc2V0X2ZpZWxk KCZ2YWwsIDEsIFVOSUNBTV9ETEhTRSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQkvKiBDQ1Ay ICovCj4gKwkJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1fRExFKTsKPiArCQl1bmlj YW1fc2V0X2ZpZWxkKCZ2YWwsIDEsIFVOSUNBTV9ETEhTRSk7Cj4gKwkJdW5pY2FtX3NldF9maWVs ZCgmdmFsLCAxLCBVTklDQU1fRExUUkUpOwo+ICsJfQo+ICsJdW5pY2FtX3JlZ193cml0ZSh1bmlj YW0sIFVOSUNBTV9EQVQwLCB2YWwpOwo+ICsKPiArCWlmICh1bmljYW0tPmFjdGl2ZV9kYXRhX2xh bmVzID09IDEpCj4gKwkJdmFsID0gMDsKPiArCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklD QU1fREFUMSwgdmFsKTsKPiArCj4gKwlpZiAodW5pY2FtLT5tYXhfZGF0YV9sYW5lcyA+IDIpIHsK PiArCQkvKgo+ICsJCSAqIFJlZ2lzdGVycyBVTklDQU1fREFUMiBhbmQgVU5JQ0FNX0RBVDMgb25s eSB2YWxpZCBpZiB0aGUKPiArCQkgKiBpbnN0YW5jZSBzdXBwb3J0cyBtb3JlIHRoYW4gMiBkYXRh IGxhbmVzLgo+ICsJCSAqLwo+ICsJCWlmICh1bmljYW0tPmFjdGl2ZV9kYXRhX2xhbmVzID09IDIp Cj4gKwkJCXZhbCA9IDA7Cj4gKwkJdW5pY2FtX3JlZ193cml0ZSh1bmljYW0sIFVOSUNBTV9EQVQy LCB2YWwpOwo+ICsKPiArCQlpZiAodW5pY2FtLT5hY3RpdmVfZGF0YV9sYW5lcyA9PSAzKQo+ICsJ CQl2YWwgPSAwOwo+ICsJCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fREFUMywgdmFs KTsKPiArCX0KPiArCj4gKwl1bmljYW1fcmVnX3dyaXRlKHVuaWNhbSwgVU5JQ0FNX0lCTFMsCj4g KwkJCSBub2RlLT52X2ZtdC5mbXQucGl4LmJ5dGVzcGVybGluZSk7Cj4gKwlzaXplID0gbm9kZS0+ dl9mbXQuZm10LnBpeC5zaXplaW1hZ2U7Cj4gKwl1bmljYW1fd3JfZG1hX2FkZHIoJnVuaWNhbS0+ bm9kZVtVTklDQU1fSU1BR0VfTk9ERV0sCj4gKwkJCSAgIGFkZHJbVU5JQ0FNX0lNQUdFX05PREVd LCBzaXplKTsKPiArCXVuaWNhbV9zZXRfcGFja2luZ19jb25maWcodW5pY2FtKTsKPiArCXVuaWNh bV9jZmdfaW1hZ2VfaWQodW5pY2FtKTsKPiArCj4gKwl2YWwgPSB1bmljYW1fcmVnX3JlYWQodW5p Y2FtLCBVTklDQU1fTUlTQyk7Cj4gKwl1bmljYW1fc2V0X2ZpZWxkKCZ2YWwsIDEsIFVOSUNBTV9G TDApOwo+ICsJdW5pY2FtX3NldF9maWVsZCgmdmFsLCAxLCBVTklDQU1fRkwxKTsKPiArCXVuaWNh bV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fTUlTQywgdmFsKTsKPiArCj4gKwkvKiBFbmFibGUg cGVyaXBoZXJhbCAqLwo+ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9D VFJMLCAxLCBVTklDQU1fQ1BFKTsKPiArCj4gKwkvKiBMb2FkIGltYWdlIHBvaW50ZXJzICovCj4g Kwl1bmljYW1fcmVnX3dyaXRlX2ZpZWxkKHVuaWNhbSwgVU5JQ0FNX0lDVEwsIDEsIFVOSUNBTV9M SVBfTUFTSyk7Cj4gKwo+ICsJLyoKPiArCSAqIEVuYWJsZSB0cmlnZ2VyIG9ubHkgZm9yIHRoZSBm aXJzdCBmcmFtZSB0bwo+ICsJICogc3luYyBjb3JyZWN0bHkgdG8gdGhlIEZTIGZyb20gdGhlIHNv dXJjZS4KPiArCSAqLwo+ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9J Q1RMLCAxLCBVTklDQU1fVEZDKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5pY2FtX3N0YXJ0 X21ldGFkYXRhKHN0cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0sIGRtYV9hZGRyX3QgKmFkZHIp Cj4gK3sKPiArCXN0cnVjdCB1bmljYW1fbm9kZSAqbm9kZSA9ICZ1bmljYW0tPm5vZGVbVU5JQ0FN X01FVEFEQVRBX05PREVdOwo+ICsJdW5zaWduZWQgaW50IHNpemU7Cj4gKwo+ICsJZGV2X2RiZyh1 bmljYW0tPmRldiwgImVuYWJsZSBtZXRhZGF0YSBkbWFcbiIpOwo+ICsJc2l6ZSA9IG5vZGUtPnZf Zm10LmZtdC5tZXRhLmJ1ZmZlcnNpemU7Cj4gKwl1bmljYW1fZW5hYmxlX2VkKHVuaWNhbSk7Cj4g Kwl1bmljYW1fd3JfZG1hX2FkZHIobm9kZSwgYWRkcltVTklDQU1fTUVUQURBVEFfTk9ERV0sIHNp emUpOwo+ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9EQ1MsIDEsIFVO SUNBTV9MRFApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB1bmljYW1fZGlzYWJsZShzdHJ1Y3Qg dW5pY2FtX2RldmljZSAqdW5pY2FtKQo+ICt7Cj4gKwkvKiBBbmFsb2d1ZSBsYW5lIGNvbnRyb2wg ZGlzYWJsZSAqLwo+ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9BTkEs IDEsIFVOSUNBTV9EREwpOwo+ICsKPiArCS8qIFN0b3AgdGhlIG91dHB1dCBlbmdpbmUgKi8KPiAr CXVuaWNhbV9yZWdfd3JpdGVfZmllbGQodW5pY2FtLCBVTklDQU1fQ1RSTCwgMSwgVU5JQ0FNX1NP RSk7Cj4gKwo+ICsJLyogRGlzYWJsZSB0aGUgZGF0YSBsYW5lcy4gKi8KPiArCXVuaWNhbV9yZWdf d3JpdGUodW5pY2FtLCBVTklDQU1fREFUMCwgMCk7Cj4gKwl1bmljYW1fcmVnX3dyaXRlKHVuaWNh bSwgVU5JQ0FNX0RBVDEsIDApOwo+ICsKPiArCWlmICh1bmljYW0tPm1heF9kYXRhX2xhbmVzID4g Mikgewo+ICsJCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fREFUMiwgMCk7Cj4gKwkJ dW5pY2FtX3JlZ193cml0ZSh1bmljYW0sIFVOSUNBTV9EQVQzLCAwKTsKPiArCX0KPiArCj4gKwkv KiBQZXJpcGhlcmFsIHJlc2V0ICovCj4gKwl1bmljYW1fcmVnX3dyaXRlX2ZpZWxkKHVuaWNhbSwg VU5JQ0FNX0NUUkwsIDEsIFVOSUNBTV9DUFIpOwo+ICsJdXNsZWVwX3JhbmdlKDUwLCAxMDApOwo+ ICsJdW5pY2FtX3JlZ193cml0ZV9maWVsZCh1bmljYW0sIFVOSUNBTV9DVFJMLCAwLCBVTklDQU1f Q1BSKTsKPiArCj4gKwkvKiBEaXNhYmxlIHBlcmlwaGVyYWwgKi8KPiArCXVuaWNhbV9yZWdfd3Jp dGVfZmllbGQodW5pY2FtLCBVTklDQU1fQ1RSTCwgMCwgVU5JQ0FNX0NQRSk7Cj4gKwo+ICsJLyog Q2xlYXIgRUQgc2V0dXAgKi8KPiArCXVuaWNhbV9yZWdfd3JpdGUodW5pY2FtLCBVTklDQU1fRENT LCAwKTsKPiArCj4gKwkvKiBEaXNhYmxlIGFsbCBsYW5lIGNsb2NrcyAqLwo+ICsJdW5pY2FtX2Ns a193cml0ZSh1bmljYW0sIDApOwo+ICt9Cj4gKwo+ICsvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ ICsgKiBWNEwyIHN1YmRldiBPcGVyYXRpb25zCj4gKyAqLwo+ICsKPiArc3RhdGljIGludCBfX3Vu aWNhbV9zdWJkZXZfc2V0X3JvdXRpbmcoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwKPiArCQkJCSAg ICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnN0YXRlLAo+ICsJCQkJICAgICAgIHN0cnVj dCB2NGwyX3N1YmRldl9rcm91dGluZyAqcm91dGluZykKPiArewo+ICsJaW50IHJldDsKPiArCj4g KwlyZXQgPSB2NGwyX3N1YmRldl9yb3V0aW5nX3ZhbGlkYXRlXzFfdG9fMShyb3V0aW5nKTsKPiAr CWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwl2NGwyX3N1YmRldl9sb2NrX3N0YXRl KHN0YXRlKTsKPiArCj4gKwlyZXQgPSB2NGwyX3N1YmRldl9zZXRfcm91dGluZyhzZCwgc3RhdGUs IHJvdXRpbmcpOwo+ICsKPiArCXY0bDJfc3ViZGV2X3VubG9ja19zdGF0ZShzdGF0ZSk7Cj4gKwo+ ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB1bmljYW1fc3ViZGV2X3NldF9y b3V0aW5nKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsCj4gKwkJCQkgICAgIHN0cnVjdCB2NGwyX3N1 YmRldl9zdGF0ZSAqc3RhdGUsCj4gKwkJCQkgICAgIGVudW0gdjRsMl9zdWJkZXZfZm9ybWF0X3do ZW5jZSB3aGljaCwKPiArCQkJCSAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2tyb3V0aW5nICpyb3V0 aW5nKQo+ICt7Cj4gKwlzdHJ1Y3QgdW5pY2FtX2RldmljZSAqdW5pY2FtID0gc2RfdG9fdW5pY2Ft X2RldmljZShzZCk7Cj4gKwo+ICsJaWYgKHdoaWNoID09IFY0TDJfU1VCREVWX0ZPUk1BVF9BQ1RJ VkUgJiYgdW5pY2FtLT5zdWJkZXYuc3RyZWFtaW5nKQo+ICsJCXJldHVybiAtRUJVU1k7Cj4gKwo+ ICsJcmV0dXJuIF9fdW5pY2FtX3N1YmRldl9zZXRfcm91dGluZyhzZCwgc3RhdGUsIHJvdXRpbmcp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHVuaWNhbV9zdWJkZXZfaW5pdF9jZmcoc3RydWN0IHY0 bDJfc3ViZGV2ICpzZCwKPiArCQkJCSAgc3RydWN0IHY0bDJfc3ViZGV2X3N0YXRlICpzdGF0ZSkK PiArewo+ICsJc3RydWN0IHY0bDJfc3ViZGV2X3JvdXRlIHJvdXRlc1tdID0gewo+ICsJCXsKPiAr CQkJLnNpbmtfcGFkID0gVU5JQ0FNX1NEX1BBRF9TSU5LLAo+ICsJCQkuc2lua19zdHJlYW0gPSAw LAo+ICsJCQkuc291cmNlX3BhZCA9IFVOSUNBTV9TRF9QQURfU09VUkNFX0lNQUdFLAo+ICsJCQku c291cmNlX3N0cmVhbSA9IDAsCj4gKwkJCS5mbGFncyA9IFY0TDJfU1VCREVWX1JPVVRFX0ZMX0FD VElWRSwKPiArCQl9LAo+ICsJfTsKPiArCj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXZfa3JvdXRpbmcg cm91dGluZyA9IHsKPiArCQkubnVtX3JvdXRlcyA9IEFSUkFZX1NJWkUocm91dGVzKSwKPiArCQku cm91dGVzID0gcm91dGVzLAo+ICsJfTsKPiArCj4gKwkvKiBJbml0aWFsaXplIHJvdXRpbmcgdG8g c2luZ2xlIHJvdXRlIHRvIHRoZSBmaXN0IHNvdXJjZSBwYWQgKi8KPiArCXJldHVybiBfX3VuaWNh bV9zdWJkZXZfc2V0X3JvdXRpbmcoc2QsIHN0YXRlLCAmcm91dGluZyk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgdW5pY2FtX3N1YmRldl9lbnVtX21idXNfY29kZShzdHJ1Y3QgdjRsMl9zdWJkZXYg KnNkLAo+ICsJCQkJCXN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGUsCj4gKwkJCQkJc3Ry dWN0IHY0bDJfc3ViZGV2X21idXNfY29kZV9lbnVtICpjb2RlKQo+ICt7Cj4gKwl1MzIgcGFkLCBz dHJlYW07Cj4gKwlpbnQgcmV0ID0gLUVJTlZBTDsKPiArCj4gKwl2NGwyX3N1YmRldl9sb2NrX3N0 YXRlKHN0YXRlKTsKPiArCj4gKwlyZXQgPSB2NGwyX3N1YmRldl9yb3V0aW5nX2ZpbmRfb3Bwb3Np dGVfZW5kKCZzdGF0ZS0+cm91dGluZywgY29kZS0+cGFkLAo+ICsJCQkJCQkgICAgY29kZS0+c3Ry ZWFtLCAmcGFkLAo+ICsJCQkJCQkgICAgJnN0cmVhbSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8g b3V0Owo+ICsKPiArCWlmICh1bmljYW1fc2RfcGFkX2lzX3NvdXJjZShjb2RlLT5wYWQpKSB7Cj4g KwkJLyogTm8gdHJhbnNjb2RpbmcsIHNvdXJjZSBhbmQgc2luayBjb2RlcyBtdXN0IG1hdGNoLiAq Lwo+ICsJCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZtdDsKPiArCj4gKwkJZm10ID0gdjRs Ml9zdGF0ZV9nZXRfc3RyZWFtX2Zvcm1hdChzdGF0ZSwgcGFkLCBzdHJlYW0pOwo+ICsJCWlmICgh Zm10KQo+ICsJCQlnb3RvIG91dDsKPiArCj4gKwkJaWYgKGNvZGUtPmluZGV4ID4gMCkKPiArCQkJ Z290byBvdXQ7Cj4gKwo+ICsJCWNvZGUtPmNvZGUgPSBmbXQtPmNvZGU7Cj4gKwl9IGVsc2Ugewo+ ICsJCWNvbnN0IHN0cnVjdCB1bmljYW1fZm10ICpmb3JtYXRzOwo+ICsJCXVuc2lnbmVkIGludCBu dW1fZm9ybWF0czsKPiArCj4gKwkJaWYgKHBhZCA9PSBVTklDQU1fU0RfUEFEX1NPVVJDRV9JTUFH RSkgewo+ICsJCQlmb3JtYXRzID0gdW5pY2FtX2ltYWdlX2Zvcm1hdHM7Cj4gKwkJCW51bV9mb3Jt YXRzID0gQVJSQVlfU0laRSh1bmljYW1faW1hZ2VfZm9ybWF0cyk7Cj4gKwkJfSBlbHNlIHsKPiAr CQkJZm9ybWF0cyA9IHVuaWNhbV9tZXRhX2Zvcm1hdHM7Cj4gKwkJCW51bV9mb3JtYXRzID0gQVJS QVlfU0laRSh1bmljYW1fbWV0YV9mb3JtYXRzKTsKPiArCQl9Cj4gKwo+ICsJCWlmIChjb2RlLT5p bmRleCA+PSBudW1fZm9ybWF0cykKPiArCQkJZ290byBvdXQ7Cj4gKwo+ICsJCWNvZGUtPmNvZGUg PSBmb3JtYXRzW2NvZGUtPmluZGV4XS5jb2RlOwo+ICsJfQo+ICsKPiArb3V0Ogo+ICsJdjRsMl9z dWJkZXZfdW5sb2NrX3N0YXRlKHN0YXRlKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IHVuaWNhbV9zZF9lbmFibGVfc3RyZWFtcyhzdHJ1Y3QgdjRsMl9zdWJkZXYg KnNkLCB1MzIgcGFkLAo+ICsJCQkJICAgIHU2NCBzdHJlYW1zX21hc2spCj4gK3sKPiArCXN0cnVj dCB1bmljYW1fZGV2aWNlICp1bmljYW0gPSBzZF90b191bmljYW1fZGV2aWNlKHNkKTsKPiArCXN0 cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gKwl1MzIgb3RoZXJfcGFkLCBvdGhlcl9z dHJlYW07Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChXQVJOX09OKHN0cmVhbXNfbWFzayAhPSAx KSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlzdGF0ZSA9IHY0bDJfc3ViZGV2X2xvY2tf YWN0aXZlX3N0YXRlKHNkKTsKPiArCj4gKwlyZXQgPSB2NGwyX3N1YmRldl9yb3V0aW5nX2ZpbmRf b3Bwb3NpdGVfZW5kKCZzdGF0ZS0+cm91dGluZywgcGFkLCAwLAo+ICsJCQkJCQkgICAgJm90aGVy X3BhZCwgJm90aGVyX3N0cmVhbSk7Cj4gKwo+ICsJdjRsMl9zdWJkZXZfdW5sb2NrX3N0YXRlKHN0 YXRlKTsKPiArCj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJdW5pY2FtLT5z ZXF1ZW5jZSA9IDA7Cj4gKwo+ICsJZGV2X2RiZyh1bmljYW0tPmRldiwgIlJ1bm5pbmcgd2l0aCAl dSBkYXRhIGxhbmVzXG4iLAo+ICsJCXVuaWNhbS0+YWN0aXZlX2RhdGFfbGFuZXMpOwo+ICsKPiAr CXJldCA9IGNsa19zZXRfbWluX3JhdGUodW5pY2FtLT52cHVfY2xvY2ssIFVOSUNBTV9NSU5fVlBV X0NMT0NLX1JBVEUpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIodW5pY2FtLT5kZXYsICJm YWlsZWQgdG8gc2V0IHVwIFZQVSBjbG9ja1xuIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiAr Cj4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUodW5pY2FtLT52cHVfY2xvY2spOwo+ICsJaWYg KHJldCkgewo+ICsJCWRldl9lcnIodW5pY2FtLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIFZQVSBj bG9jazogJWRcbiIsIHJldCk7Cj4gKwkJZ290byBlcnJfdnB1X2Nsb2NrOwo+ICsJfQo+ICsKPiAr CXJldCA9IGNsa19zZXRfcmF0ZSh1bmljYW0tPmNsb2NrLCAxMDAgKiAxMDAwICogMTAwMCk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycih1bmljYW0tPmRldiwgImZhaWxlZCB0byBzZXQgdXAg Q1NJIGNsb2NrXG4iKTsKPiArCQlnb3RvIGVycl92cHVfcHJlcGFyZTsKPiArCX0KPiArCj4gKwly ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUodW5pY2FtLT5jbG9jayk7Cj4gKwlpZiAocmV0KSB7Cj4g KwkJZGV2X2Vycih1bmljYW0tPmRldiwgIkZhaWxlZCB0byBlbmFibGUgQ1NJIGNsb2NrOiAlZFxu IiwgcmV0KTsKPiArCQlnb3RvIGVycl92cHVfcHJlcGFyZTsKPiArCX0KPiArCj4gKwlyZXQgPSB2 NGwyX3N1YmRldl9jYWxsKHVuaWNhbS0+c2Vuc29yLnN1YmRldiwgdmlkZW8sIGVuYWJsZV9zdHJl YW1zLAo+ICsJCQkgICAgICAgdW5pY2FtLT5zZW5zb3IucGFkLT5pbmRleCwgQklUKG90aGVyX3N0 cmVhbSkpOwo+ICsKPiArCWlmIChyZXQgJiYgcmV0ID09IC1FTk9JT0NUTENNRCkKPiArCQlyZXQg PSB2NGwyX3N1YmRldl9jYWxsKHVuaWNhbS0+c2Vuc29yLnN1YmRldiwgdmlkZW8sIHNfc3RyZWFt LCAxKTsKPiArCj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycih1bmljYW0tPmRldiwgInN0cmVh bSBvbiBmYWlsZWQgaW4gc3ViZGV2XG4iKTsKPiArCQlnb3RvIGVycl9lbmFibGVfc3RyZWFtOwo+ ICsJfQo+ICsKPiArCXVuaWNhbS0+c3ViZGV2LnN0cmVhbWluZyA9IHRydWU7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gKwo+ICtlcnJfZW5hYmxlX3N0cmVhbToKPiArCWNsa19kaXNhYmxlX3VucHJlcGFy ZSh1bmljYW0tPmNsb2NrKTsKPiArZXJyX3ZwdV9wcmVwYXJlOgo+ICsJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKHVuaWNhbS0+dnB1X2Nsb2NrKTsKPiArZXJyX3ZwdV9jbG9jazoKPiArCWlmIChjbGtf c2V0X21pbl9yYXRlKHVuaWNhbS0+dnB1X2Nsb2NrLCAwKSkKPiArCQlkZXZfZXJyKHVuaWNhbS0+ ZGV2LCAiZmFpbGVkIHRvIHJlc2V0IHRoZSBWUFUgY2xvY2tcbiIpOwo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIGludCB1bmljYW1fc2RfZGlzYWJsZV9zdHJlYW1zKHN0cnVjdCB2 NGwyX3N1YmRldiAqc2QsIHUzMiBwYWQsCj4gKwkJCQkgICAgIHU2NCBzdHJlYW1zX21hc2spCj4g K3sKPiArCXN0cnVjdCB1bmljYW1fZGV2aWNlICp1bmljYW0gPSBzZF90b191bmljYW1fZGV2aWNl KHNkKTsKPiArCXN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gKwl1MzIgb3RoZXJf cGFkLCBvdGhlcl9zdHJlYW07Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWlmIChXQVJOX09OKHN0cmVh bXNfbWFzayAhPSAxKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlzdGF0ZSA9IHY0bDJf c3ViZGV2X2xvY2tfYWN0aXZlX3N0YXRlKHNkKTsKPiArCj4gKwlyZXQgPSB2NGwyX3N1YmRldl9y b3V0aW5nX2ZpbmRfb3Bwb3NpdGVfZW5kKCZzdGF0ZS0+cm91dGluZywgcGFkLCAwLAo+ICsJCQkJ CQkgICAgJm90aGVyX3BhZCwgJm90aGVyX3N0cmVhbSk7Cj4gKwo+ICsJdjRsMl9zdWJkZXZfdW5s b2NrX3N0YXRlKHN0YXRlKTsKPiArCj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2Vycih1bmljYW0t PmRldiwgImRpc2FibGUgc3RyZWFtcyBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gdjRsMl9zdWJkZXZfY2FsbCh1bmljYW0tPnNlbnNvci5z dWJkZXYsIHZpZGVvLCBkaXNhYmxlX3N0cmVhbXMsCj4gKwkJCSAgICAgICB1bmljYW0tPnNlbnNv ci5wYWQtPmluZGV4LCBCSVQob3RoZXJfc3RyZWFtKSk7Cj4gKwo+ICsJaWYgKHJldCAmJiByZXQg PT0gLUVOT0lPQ1RMQ01EKSB7Cj4gKwkJLyogVGhlIHNlbnNvciBkb2VzIG5vdCBzdXBwb3J0IGRp c2FibGUgc3RyZWFtcy4gKi8KPiArCQlpZiAodW5pY2FtLT5ub2RlW1VOSUNBTV9JTUFHRV9OT0RF XS5zdHJlYW1pbmcgJiYKPiArCQkgICAgb3RoZXJfcGFkID09IHVuaWNhbS0+bm9kZVtVTklDQU1f TUVUQURBVEFfTk9ERV0ucGFkLmluZGV4KSB7Cj4gKwkJCS8qIFdlIHdvbid0IHN0b3AgdGhlIHNl bnNvciB5ZXQuICovCj4gKwkJCXVuaWNhbS0+c3ViZGV2LnN0cmVhbWluZyA9IGZhbHNlOwo+ICsJ CQlyZXR1cm4gMDsKPiArCQl9Cj4gKwkJLyogVGhlcmUgaXMgbm8gbW9yZSB0aGUgbWV0YWRhdGEg bm9kZSwgd2UgY2FuIHN0b3AuICovCj4gKwkJcmV0ID0gdjRsMl9zdWJkZXZfY2FsbCh1bmljYW0t PnNlbnNvci5zdWJkZXYsIHZpZGVvLCBzX3N0cmVhbSwgMCk7Cj4gKwl9Cj4gKwo+ICsJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKHVuaWNhbS0+Y2xvY2spOwo+ICsJaWYgKGNsa19zZXRfbWluX3JhdGUo dW5pY2FtLT52cHVfY2xvY2ssIDApKQo+ICsJCWRldl9lcnIodW5pY2FtLT5kZXYsICJmYWlsZWQg dG8gcmVzZXQgdGhlIFZQVSBjbG9ja1xuIik7Cj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUodW5p Y2FtLT52cHVfY2xvY2spOwo+ICsKPiArCXVuaWNhbS0+c3ViZGV2LnN0cmVhbWluZyA9IGZhbHNl Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHVuaWNhbV9zdWJkZXZf c2V0X3BhZF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwKPiArCQkJCQlzdHJ1Y3QgdjRs Ml9zdWJkZXZfc3RhdGUgKnN0YXRlLAo+ICsJCQkJCXN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQg KmZvcm1hdCkKPiArewo+ICsJc3RydWN0IHVuaWNhbV9kZXZpY2UgKnVuaWNhbSA9IHNkX3RvX3Vu aWNhbV9kZXZpY2Uoc2QpOwo+ICsJc3RydWN0IHY0bDJfbWJ1c19mcmFtZWZtdCAqc2lua19mb3Jt YXQsICpzb3VyY2VfZm9ybWF0Owo+ICsJY29uc3Qgc3RydWN0IHVuaWNhbV9mbXQgKmZtdGluZm87 Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlpZiAoZm9ybWF0LT53aGljaCA9PSBWNEwyX1NVQkRF Vl9GT1JNQVRfQUNUSVZFICYmIHVuaWNhbS0+c3ViZGV2LnN0cmVhbWluZykKPiArCQlyZXR1cm4g LUVCVVNZOwo+ICsKPiArCS8qIE5vIHRyYW5zY29kaW5nLCBzb3VyY2UgYW5kIHNpbmsgZm9ybWF0 cyBtdXN0IG1hdGNoLiAqLwo+ICsJaWYgKHVuaWNhbV9zZF9wYWRfaXNfc291cmNlKGZvcm1hdC0+ cGFkKSkKPiArCQlyZXR1cm4gdjRsMl9zdWJkZXZfZ2V0X2ZtdChzZCwgc3RhdGUsIGZvcm1hdCk7 Cj4gKwo+ICsJZm10aW5mbyA9IHVuaWNhbV9maW5kX2Zvcm1hdF9ieV9jb2RlKGZvcm1hdC0+Zm9y bWF0LmNvZGUsIGZvcm1hdC0+cGFkKTsKPiArCWlmICghZm10aW5mbykKPiArCQlmbXRpbmZvID0g JnVuaWNhbV9pbWFnZV9mb3JtYXRzWzBdOwo+ICsKPiArCWlmIChmb3JtYXQtPnBhZCA9PSBVTklD QU1fU0RfUEFEX1NPVVJDRV9JTUFHRSkgewo+ICsJCWZvcm1hdC0+Zm9ybWF0LndpZHRoID0gY2xh bXBfdCh1bnNpZ25lZCBpbnQsCj4gKwkJCQkJICAgICAgIGZvcm1hdC0+Zm9ybWF0LndpZHRoLAo+ ICsJCQkJCSAgICAgICBVTklDQU1fTUlOX1dJRFRILAo+ICsJCQkJCSAgICAgICBVTklDQU1fTUFY X1dJRFRIKTsKPiArCQlmb3JtYXQtPmZvcm1hdC5oZWlnaHQgPSBjbGFtcF90KHVuc2lnbmVkIGlu dCwKPiArCQkJCQkJZm9ybWF0LT5mb3JtYXQuaGVpZ2h0LAo+ICsJCQkJCQlVTklDQU1fTUlOX0hF SUdIVCwKPiArCQkJCQkJVU5JQ0FNX01BWF9IRUlHSFQpOwo+ICsJfQo+ICsJZm9ybWF0LT5mb3Jt YXQuZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4gKwo+ICsJdjRsMl9zdWJkZXZfbG9ja19zdGF0 ZShzdGF0ZSk7Cj4gKwo+ICsJc2lua19mb3JtYXQgPSB2NGwyX3N0YXRlX2dldF9zdHJlYW1fZm9y bWF0KHN0YXRlLCBmb3JtYXQtPnBhZCwKPiArCQkJCQkJICAgZm9ybWF0LT5zdHJlYW0pOwo+ICsJ c291cmNlX2Zvcm1hdCA9IHY0bDJfc3ViZGV2X3N0YXRlX2dldF9vcHBvc2l0ZV9zdHJlYW1fZm9y bWF0KHN0YXRlLAo+ICsJCQkJCQkJCSAgICAgZm9ybWF0LT5wYWQsCj4gKwkJCQkJCQkJICAgICBm b3JtYXQtPnN0cmVhbSk7Cj4gKwlpZiAoIXNpbmtfZm9ybWF0IHx8ICFzb3VyY2VfZm9ybWF0KSB7 Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwkqc2lua19m b3JtYXQgPSBmb3JtYXQtPmZvcm1hdDsKPiArCSpzb3VyY2VfZm9ybWF0ID0gZm9ybWF0LT5mb3Jt YXQ7Cj4gK291dDoKPiArCXY0bDJfc3ViZGV2X3VubG9ja19zdGF0ZShzdGF0ZSk7Cj4gKwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB1bmljYW1fc3ViZGV2X2VudW1fZnJh bWVfc2l6ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLAo+ICsJCQkJCSBzdHJ1Y3QgdjRsMl9zdWJk ZXZfc3RhdGUgKnN0YXRlLAo+ICsJCQkJCSBzdHJ1Y3QgdjRsMl9zdWJkZXZfZnJhbWVfc2l6ZV9l bnVtICpmc2UpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCB1bmljYW1fZm10ICpmbXRpbmZvOwo+ICsJ dTMyIHBhZCwgc3RyZWFtOwo+ICsJaW50IHJldCA9IC1FSU5WQUw7Cj4gKwo+ICsJaWYgKGZzZS0+ aW5kZXggPiAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJdjRsMl9zdWJkZXZfbG9ja19zdGF0 ZShzdGF0ZSk7Cj4gKwo+ICsJcmV0ID0gdjRsMl9zdWJkZXZfcm91dGluZ19maW5kX29wcG9zaXRl X2VuZCgmc3RhdGUtPnJvdXRpbmcsIGZzZS0+cGFkLAo+ICsJCQkJCQkgICAgZnNlLT5zdHJlYW0s ICZwYWQsCj4gKwkJCQkJCSAgICAmc3RyZWFtKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7 Cj4gKwo+ICsJaWYgKHVuaWNhbV9zZF9wYWRfaXNfc291cmNlKGZzZS0+cGFkKSkgewo+ICsJCS8q IE5vIHRyYW5zY29kaW5nLCBzb3VyY2UgYW5kIHNpbmsgZm9ybWF0cyBtdXN0IG1hdGNoLiAqLwo+ ICsJCXN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKmZtdDsKPiArCj4gKwkJZm10ID0gdjRsMl9z dGF0ZV9nZXRfc3RyZWFtX2Zvcm1hdChzdGF0ZSwgcGFkLCBzdHJlYW0pOwo+ICsJCWlmICghZm10 KQo+ICsJCQlnb3RvIG91dDsKPiArCj4gKwkJaWYgKGZzZS0+Y29kZSAhPSBmbXQtPmNvZGUpCj4g KwkJCWdvdG8gb3V0Owo+ICsKPiArCQlmc2UtPm1pbl93aWR0aCA9IGZtdC0+d2lkdGg7Cj4gKwkJ ZnNlLT5tYXhfd2lkdGggPSBmbXQtPndpZHRoOwo+ICsJCWZzZS0+bWluX2hlaWdodCA9IGZtdC0+ aGVpZ2h0Owo+ICsJCWZzZS0+bWF4X2hlaWdodCA9IGZtdC0+aGVpZ2h0Owo+ICsJfSBlbHNlIHsK PiArCQlmbXRpbmZvID0gdW5pY2FtX2ZpbmRfZm9ybWF0X2J5X2NvZGUoZnNlLT5jb2RlLCBwYWQp Owo+ICsJCWlmICghZm10aW5mbykKPiArCQkJZ290byBvdXQ7Cj4gKwo+ICsJCWZzZS0+bWluX3dp ZHRoID0gVU5JQ0FNX01JTl9XSURUSDsKPiArCQlmc2UtPm1heF93aWR0aCA9IFVOSUNBTV9NQVhf V0lEVEg7Cj4gKwkJZnNlLT5taW5faGVpZ2h0ID0gVU5JQ0FNX01JTl9IRUlHSFQ7Cj4gKwkJZnNl LT5tYXhfaGVpZ2h0ID0gVU5JQ0FNX01BWF9IRUlHSFQ7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwl2 NGwyX3N1YmRldl91bmxvY2tfc3RhdGUoc3RhdGUpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfdmlkZW9fb3BzIHVuaWNhbV9z dWJkZXZfdmlkZW9fb3BzID0gewo+ICsJLmVuYWJsZV9zdHJlYW1zCT0gdW5pY2FtX3NkX2VuYWJs ZV9zdHJlYW1zLAo+ICsJLmRpc2FibGVfc3RyZWFtcyA9IHVuaWNhbV9zZF9kaXNhYmxlX3N0cmVh bXMsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9vcHMg dW5pY2FtX3N1YmRldl9wYWRfb3BzID0gewo+ICsJLmluaXRfY2ZnCQk9IHVuaWNhbV9zdWJkZXZf aW5pdF9jZmcsCj4gKwkuZW51bV9tYnVzX2NvZGUJCT0gdW5pY2FtX3N1YmRldl9lbnVtX21idXNf Y29kZSwKPiArCS5nZXRfZm10CQk9IHY0bDJfc3ViZGV2X2dldF9mbXQsCj4gKwkuc2V0X2ZtdAkJ PSB1bmljYW1fc3ViZGV2X3NldF9wYWRfZm9ybWF0LAo+ICsJLnNldF9yb3V0aW5nCQk9IHVuaWNh bV9zdWJkZXZfc2V0X3JvdXRpbmcsCj4gKwkuZW51bV9mcmFtZV9zaXplCT0gdW5pY2FtX3N1YmRl dl9lbnVtX2ZyYW1lX3NpemUsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJf c3ViZGV2X29wcyB1bmljYW1fc3ViZGV2X29wcyA9IHsKPiArCS52aWRlbwkJPSAmdW5pY2FtX3N1 YmRldl92aWRlb19vcHMsCj4gKwkucGFkCQk9ICZ1bmljYW1fc3ViZGV2X3BhZF9vcHMsCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG1lZGlhX2VudGl0eV9vcGVyYXRpb25zIHVuaWNh bV9zdWJkZXZfbWVkaWFfb3BzID0gewo+ICsJLmxpbmtfdmFsaWRhdGUgPSB2NGwyX3N1YmRldl9s aW5rX3ZhbGlkYXRlLAo+ICsJLmhhc19yb3V0ZSA9IHY0bDJfc3ViZGV2X2hhc19yb3V0ZSwKPiAr fTsKPiArCj4gK3N0YXRpYyBpbnQgdW5pY2FtX2luaXRfYW5kX3JlZ2lzdGVyX3N1YmRldihzdHJ1 Y3QgdW5pY2FtX2RldmljZSAqdW5pY2FtKQo+ICt7Cj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNk ID0gJnVuaWNhbS0+c3ViZGV2LnNkOwo+ICsJaW50IHJldDsKPiArCj4gKwl2NGwyX3N1YmRldl9p bml0KHNkLCAmdW5pY2FtX3N1YmRldl9vcHMpOwo+ICsJdjRsMl9zZXRfc3ViZGV2ZGF0YShzZCwg dW5pY2FtKTsKPiArCXVuaWNhbS0+c3ViZGV2LnNkLmVudGl0eS5mdW5jdGlvbiA9IE1FRElBX0VO VF9GX1ZJRF9JRl9CUklER0U7Cj4gKwl1bmljYW0tPnN1YmRldi5zZC5lbnRpdHkub3BzID0gJnVu aWNhbV9zdWJkZXZfbWVkaWFfb3BzOwo+ICsJdW5pY2FtLT5zdWJkZXYuc2QuZGV2ID0gdW5pY2Ft LT5kZXY7Cj4gKwl1bmljYW0tPnN1YmRldi5zZC5vd25lciA9IFRISVNfTU9EVUxFOwo+ICsJdW5p Y2FtLT5zdWJkZXYuc2QuZmxhZ3MgPSBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERSB8IFY0TDJf U1VCREVWX0ZMX01VTFRJUExFWEVEOwo+ICsJc25wcmludGYodW5pY2FtLT5zdWJkZXYuc2QubmFt ZSwgc2l6ZW9mKHVuaWNhbS0+c3ViZGV2LnNkLm5hbWUpLCAidW5pY2FtLXN1YmRldiIpOwo+ICsK PiArCXVuaWNhbS0+c3ViZGV2LnBhZHNbVU5JQ0FNX1NEX1BBRF9TSU5LXS5mbGFncyA9IE1FRElB X1BBRF9GTF9TSU5LOwo+ICsKPiArCXVuaWNhbS0+c3ViZGV2LnBhZHNbVU5JQ0FNX1NEX1BBRF9T T1VSQ0VfSU1BR0VdLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NPVVJDRTsKPiArCXVuaWNhbS0+c3Vi ZGV2LnBhZHNbVU5JQ0FNX1NEX1BBRF9TT1VSQ0VfTUVUQURBVEFdLmZsYWdzID0gTUVESUFfUEFE X0ZMX1NPVVJDRTsKPiArCj4gKwlyZXQgPSBtZWRpYV9lbnRpdHlfcGFkc19pbml0KCZzZC0+ZW50 aXR5LAo+ICsJCQkJICAgICBBUlJBWV9TSVpFKHVuaWNhbS0+c3ViZGV2LnBhZHMpLCB1bmljYW0t PnN1YmRldi5wYWRzKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKHVuaWNhbS0+ZGV2LCAi Q291bGQgbm90IGluaXQgbWVkaWEgZW50aXR5Iik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiAr Cj4gKwlyZXQgPSB2NGwyX3N1YmRldl9pbml0X2ZpbmFsaXplKHNkKTsKPiArCWlmIChyZXQpIHsK PiArCQlkZXZfZXJyKHVuaWNhbS0+ZGV2LCAiQ291bGQgbm90IGZpbmFsaXplIGluaXQgZm9yIHN1 YmRldiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHY0bDJfZGV2aWNl X3JlZ2lzdGVyX3N1YmRldigmdW5pY2FtLT52NGwyX2Rldiwgc2QpOwo+ICt9Cj4gKwo+ICsvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKiBWaWRlb2J1ZjIgUXVldWUgT3BlcmF0aW9ucwo+ICsg Ki8KPiArCj4gK3N0YXRpYyBpbnQgdW5pY2FtX3F1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUg KnZxLAo+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgKm5idWZmZXJzLAo+ICsJCQkgICAgICB1bnNp Z25lZCBpbnQgKm5wbGFuZXMsCj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCBzaXplc1tdLAo+ICsJ CQkgICAgICBzdHJ1Y3QgZGV2aWNlICphbGxvY19kZXZzW10pCj4gK3sKPiArCXN0cnVjdCB1bmlj YW1fbm9kZSAqbm9kZSA9IHZiMl9nZXRfZHJ2X3ByaXYodnEpOwo+ICsJc3RydWN0IHVuaWNhbV9k ZXZpY2UgKnVuaWNhbSA9IG5vZGUtPmRldjsKPiArCXVuc2lnbmVkIGludCBzaXplID0gaXNfaW1h Z2Vfbm9kZShub2RlKSA/Cj4gKwkJCQlub2RlLT52X2ZtdC5mbXQucGl4LnNpemVpbWFnZSA6Cj4g KwkJCQlub2RlLT52X2ZtdC5mbXQubWV0YS5idWZmZXJzaXplOwo+ICsKPiArCWlmICh2cS0+bnVt X2J1ZmZlcnMgKyAqbmJ1ZmZlcnMgPCAzKQo+ICsJCSpuYnVmZmVycyA9IDMgLSB2cS0+bnVtX2J1 ZmZlcnM7Cj4gKwo+ICsJaWYgKCpucGxhbmVzKSB7Cj4gKwkJaWYgKHNpemVzWzBdIDwgc2l6ZSkg ewo+ICsJCQlkZXZfZGJnKHVuaWNhbS0+ZGV2LCAic2l6ZXNbMF0gJWkgPCBzaXplICV1XG4iLCBz aXplc1swXSwKPiArCQkJCXNpemUpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwkJ c2l6ZSA9IHNpemVzWzBdOwo+ICsJfQo+ICsKPiArCSpucGxhbmVzID0gMTsKPiArCXNpemVzWzBd ID0gc2l6ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCB1bmljYW1f YnVmZmVyX3ByZXBhcmUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+ICt7Cj4gKwlzdHJ1Y3QgdW5p Y2FtX25vZGUgKm5vZGUgPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOwo+ICsJc3Ry dWN0IHVuaWNhbV9kZXZpY2UgKnVuaWNhbSA9IG5vZGUtPmRldjsKPiArCXN0cnVjdCB1bmljYW1f YnVmZmVyICpidWYgPSB0b191bmljYW1fYnVmZmVyKHZiKTsKPiArCXVuc2lnbmVkIGxvbmcgc2l6 ZTsKPiArCj4gKwlpZiAoV0FSTl9PTighbm9kZS0+Zm10KSkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwlzaXplID0gaXNfaW1hZ2Vfbm9kZShub2RlKSA/IG5vZGUtPnZfZm10LmZtdC5waXgu c2l6ZWltYWdlIDoKPiArCQkJCSAgICAgbm9kZS0+dl9mbXQuZm10Lm1ldGEuYnVmZmVyc2l6ZTsK PiArCWlmICh2YjJfcGxhbmVfc2l6ZSh2YiwgMCkgPCBzaXplKSB7Cj4gKwkJZGV2X2RiZyh1bmlj YW0tPmRldiwgImRhdGEgd2lsbCBub3QgZml0IGludG8gcGxhbmUgKCVsdSA8ICVsdSlcbiIsCj4g KwkJCXZiMl9wbGFuZV9zaXplKHZiLCAwKSwgc2l6ZSk7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwl9Cj4gKwo+ICsJdmIyX3NldF9wbGFuZV9wYXlsb2FkKCZidWYtPnZiLnZiMl9idWYsIDAsIHNp emUpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHVuaWNhbV9idWZmZXJf cXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+ICt7Cj4gKwlzdHJ1Y3QgdW5pY2FtX25vZGUg Km5vZGUgPSB2YjJfZ2V0X2Rydl9wcml2KHZiLT52YjJfcXVldWUpOwo+ICsJc3RydWN0IHVuaWNh bV9idWZmZXIgKmJ1ZiA9IHRvX3VuaWNhbV9idWZmZXIodmIpOwo+ICsKPiArCXNwaW5fbG9ja19p cnEoJm5vZGUtPmRtYV9xdWV1ZV9sb2NrKTsKPiArCWxpc3RfYWRkX3RhaWwoJmJ1Zi0+bGlzdCwg Jm5vZGUtPmRtYV9xdWV1ZSk7Cj4gKwlzcGluX3VubG9ja19pcnEoJm5vZGUtPmRtYV9xdWV1ZV9s b2NrKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdW5pY2FtX3JldHVybl9idWZmZXJzKHN0cnVj dCB1bmljYW1fbm9kZSAqbm9kZSwKPiArCQkJCSAgZW51bSB2YjJfYnVmZmVyX3N0YXRlIHN0YXRl KQo+ICt7Cj4gKwlzdHJ1Y3QgdW5pY2FtX2J1ZmZlciAqYnVmLCAqdG1wOwo+ICsKPiArCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShidWYsIHRtcCwgJm5vZGUtPmRtYV9xdWV1ZSwgbGlzdCkgewo+ ICsJCWxpc3RfZGVsKCZidWYtPmxpc3QpOwo+ICsJCXZiMl9idWZmZXJfZG9uZSgmYnVmLT52Yi52 YjJfYnVmLCBzdGF0ZSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKG5vZGUtPmN1cl9mcm0pCj4gKwkJdmIy X2J1ZmZlcl9kb25lKCZub2RlLT5jdXJfZnJtLT52Yi52YjJfYnVmLAo+ICsJCQkJc3RhdGUpOwo+ ICsJaWYgKG5vZGUtPm5leHRfZnJtICYmIG5vZGUtPmN1cl9mcm0gIT0gbm9kZS0+bmV4dF9mcm0p Cj4gKwkJdmIyX2J1ZmZlcl9kb25lKCZub2RlLT5uZXh0X2ZybS0+dmIudmIyX2J1ZiwKPiArCQkJ CXN0YXRlKTsKPiArCj4gKwlub2RlLT5jdXJfZnJtID0gTlVMTDsKPiArCW5vZGUtPm5leHRfZnJt ID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCB1bmljYW1fdmlkZW9fY2hlY2tfZm9ybWF0 KHN0cnVjdCB1bmljYW1fbm9kZSAqbm9kZSkKPiArewo+ICsJY29uc3Qgc3RydWN0IHY0bDJfbWJ1 c19mcmFtZWZtdCAqZm9ybWF0Owo+ICsJc3RydWN0IHVuaWNhbV9kZXZpY2UgKnVuaWNhbSA9IG5v ZGUtPmRldjsKPiArCXN0cnVjdCB2NGwyX3N1YmRldl9zdGF0ZSAqc3RhdGU7Cj4gKwlpbnQgcmV0 ID0gMDsKPiArCj4gKwlzdGF0ZSA9IHY0bDJfc3ViZGV2X2xvY2tfYWN0aXZlX3N0YXRlKCZ1bmlj YW0tPnN1YmRldi5zZCk7Cj4gKwo+ICsJZm9ybWF0ID0gdjRsMl9zdGF0ZV9nZXRfc3RyZWFtX2Zv cm1hdChzdGF0ZSwgVU5JQ0FNX1NEX1BBRF9TT1VSQ0VfSU1BR0UsIDApOwo+ICsJaWYgKCFmb3Jt YXQpIHsKPiArCQlyZXQgPSAtRUlOVkFMOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWlm IChub2RlLT5mbXQtPmNvZGUgIT0gZm9ybWF0LT5jb2RlIHx8Cj4gKwkgICAgbm9kZS0+dl9mbXQu Zm10LnBpeC5oZWlnaHQgIT0gZm9ybWF0LT5oZWlnaHQgfHwKPiArCSAgICBub2RlLT52X2ZtdC5m bXQucGl4LndpZHRoICE9IGZvcm1hdC0+d2lkdGggfHwKPiArCSAgICBub2RlLT52X2ZtdC5mbXQu cGl4LmZpZWxkICE9IGZvcm1hdC0+ZmllbGQpIHsKPiArCQlkZXZfZGJnKHVuaWNhbS0+ZGV2LCAi KCV1IHggJXUpICUwOHggJXMgIT0gKCV1IHggJXUpICUwOHggJXNcbiIsCj4gKwkJCW5vZGUtPnZf Zm10LmZtdC5waXgud2lkdGgsIG5vZGUtPnZfZm10LmZtdC5waXguaGVpZ2h0LAo+ICsJCQlub2Rl LT5mbXQtPmNvZGUsCj4gKwkJCXY0bDJfZmllbGRfbmFtZXNbbm9kZS0+dl9mbXQuZm10LnBpeC5m aWVsZF0sCj4gKwkJCWZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+aGVpZ2h0LCBmb3JtYXQtPmNvZGUs Cj4gKwkJCXY0bDJfZmllbGRfbmFtZXNbZm9ybWF0LT5maWVsZF0pOwo+ICsJCXJldCA9IC1FUElQ RTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gK291dDoKPiArCXY0bDJfc3ViZGV2X3VubG9j a19zdGF0ZShzdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCB1bmljYW1fc3RhcnRfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUgKnZxLCB1bnNpZ25lZCBp bnQgY291bnQpCj4gK3sKPiArCXN0cnVjdCB1bmljYW1fbm9kZSAqbm9kZSA9IHZiMl9nZXRfZHJ2 X3ByaXYodnEpOwo+ICsJc3RydWN0IHVuaWNhbV9kZXZpY2UgKnVuaWNhbSA9IG5vZGUtPmRldjsK PiArCWRtYV9hZGRyX3QgYnVmZmVyX2FkZHJbVU5JQ0FNX01BWF9OT0RFU10gPSB7IDAgfTsKPiAr CXN0cnVjdCB1bmljYW1fYnVmZmVyICpidWY7Cj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUg KnN0YXRlOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsJ aW50IHJldDsKPiArCXUzMiBwYWQsIHN0cmVhbTsKPiArCXUzMiByZW1vdGVfcGFkX2luZGV4ID0g aXNfaW1hZ2Vfbm9kZShub2RlKSA/IFVOSUNBTV9TRF9QQURfU09VUkNFX0lNQUdFCj4gKwkJCQkJ CSAgIDogVU5JQ0FNX1NEX1BBRF9TT1VSQ0VfTUVUQURBVEE7Cj4gKwo+ICsJLyogTG9vayBmb3Ig dGhlIHJvdXRlIGZvciB0aGUgZ2l2ZW4gcGFkIGFuZCBzdHJlYW0uICovCj4gKwlzdGF0ZSA9IHY0 bDJfc3ViZGV2X2xvY2tfYWN0aXZlX3N0YXRlKCZ1bmljYW0tPnN1YmRldi5zZCk7Cj4gKwo+ICsJ cmV0ID0gdjRsMl9zdWJkZXZfcm91dGluZ19maW5kX29wcG9zaXRlX2VuZCgmc3RhdGUtPnJvdXRp bmcsCj4gKwkJCQkJCSAgICByZW1vdGVfcGFkX2luZGV4LCAwLAo+ICsJCQkJCQkgICAgJnBhZCwg JnN0cmVhbSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3N0cmVhbWluZzsKPiArCj4gKwl2 NGwyX3N1YmRldl91bmxvY2tfc3RhdGUoc3RhdGUpOwo+ICsKPiArCWRldl9kYmcodW5pY2FtLT5k ZXYsICJTdGFydGluZyBzdHJlYW0gMCBvbiBwYWQgJWQgb24gc3ViZGV2ICVzXG4iLAo+ICsJCXJl bW90ZV9wYWRfaW5kZXgsIHVuaWNhbS0+c3ViZGV2LnNkLm5hbWUpOwo+ICsKPiArCS8qIFRoZSBt ZXRhZGF0YSBub2RlIGNhbid0IGJlIHN0YXJ0ZWQgYWxvbmUuICovCj4gKwlpZiAoaXNfbWV0YWRh dGFfbm9kZShub2RlKSkgewo+ICsJCWlmICghdW5pY2FtLT5ub2RlW1VOSUNBTV9JTUFHRV9OT0RF XS5zdHJlYW1pbmcpIHsKPiArCQkJZGV2X2Vycih1bmljYW0tPmRldiwKPiArCQkJCSJDYW4ndCBz dGFydCBtZXRhZGF0YSB3aXRob3V0IGltYWdlXG4iKTsKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4g KwkJfQo+ICsJCWRldl9kYmcodW5pY2FtLT5kZXYsICJzdGFydGluZyBtZXRhZGF0YSBub2RlXG4i KTsKPiArCj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJm5vZGUtPmRtYV9xdWV1ZV9sb2NrLCBmbGFn cyk7Cj4gKwkJYnVmID0gbGlzdF9maXJzdF9lbnRyeSgmbm9kZS0+ZG1hX3F1ZXVlLAo+ICsJCQkJ ICAgICAgIHN0cnVjdCB1bmljYW1fYnVmZmVyLCBsaXN0KTsKPiArCQlkZXZfZGJnKHVuaWNhbS0+ ZGV2LCAiYnVmZmVyICVkOiAlcFxuIiwgaSwgYnVmKTsKPiArCQlub2RlLT5jdXJfZnJtID0gYnVm Owo+ICsJCW5vZGUtPm5leHRfZnJtID0gYnVmOwo+ICsJCWxpc3RfZGVsKCZidWYtPmxpc3QpOwo+ ICsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm5vZGUtPmRtYV9xdWV1ZV9sb2NrLCBmbGFncyk7 Cj4gKwo+ICsJCWJ1ZmZlcl9hZGRyW1VOSUNBTV9NRVRBREFUQV9OT0RFXSA9Cj4gKwkJCXZiMl9k bWFfY29udGlnX3BsYW5lX2RtYV9hZGRyKCZidWYtPnZiLnZiMl9idWYsIDApOwo+ICsJCWRldl9k YmcodW5pY2FtLT5kZXYsICJidWZmZXIgJWQgYWRkcjogJWxsZFxuIiwgaSwgYnVmZmVyX2FkZHJb aV0pOwoKaSB0cmllZCB0byBjb21waWxlIHRoZSBkcml2ZXIgYW5kIGdldCB0aGUgZm9sbG93aW5n IHdhcm5pbmcuIEkgdGhpbmsgdGhlCmVhc2llc3Qgc29sdXRpb24gd291bGQgYmUgdG8gZHJvcCB0 aGlzIGRlYnVnIG1lc3NhZ2UuCgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi9pbmNsdWRlL2xpbnV4 L3ByaW50ay5oOjU1NTowLAoKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJvbSAu L2luY2x1ZGUvbGludXgva2VybmVsLmg6MjksCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZyb20gLi9pbmNsdWRlL2xpbnV4L2Nsay5oOjEzLArCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmcm9tIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYmNtMjgzNS9iY20yODM1LXVu aWNhbS5jOjQ3Ogpkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JjbTI4MzUvYmNtMjgzNS11bmljYW0u YzogSW4gZnVuY3Rpb24K4oCYdW5pY2FtX3N0YXJ0X3N0cmVhbWluZ+KAmToKZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9iY20yODM1L2JjbTI4MzUtdW5pY2FtLmM6MTY3NjoyNDogd2FybmluZzogZm9y bWF0CuKAmCVsbGTigJkgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlIOKAmGxvbmcgbG9uZyBpbnTi gJksIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlCuKAmGRtYV9hZGRyX3Qge2FrYSB1bnNpZ25lZCBp bnR94oCZIFstV2Zvcm1hdD1dCsKgwqAgZGV2X2RiZyh1bmljYW0tPmRldiwgImJ1ZmZlciAlZCBh ZGRyOiAlbGxkXG4iLCBpLCBidWZmZXJfYWRkcltpXSk7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXgouL2luY2x1ZGUvbGludXgvZHluYW1pY19kZWJ1Zy5o OjEzNDoxNTogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybwrigJhfX2R5bmFtaWNfZnVuY19j YWxs4oCZCsKgwqAgZnVuYygmaWQsICMjX19WQV9BUkdTX18pO8KgIFwKwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBefn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvZHluYW1pY19kZWJ1Zy5o OjE2NjoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8K4oCYX2R5bmFtaWNfZnVuY19jYWxs 4oCZCsKgIF9keW5hbWljX2Z1bmNfY2FsbChmbXQsX19keW5hbWljX2Rldl9kYmcswqDCoCBcCsKg IF5+fn5+fn5+fn5+fn5+fn5+fgouL2luY2x1ZGUvbGludXgvZGV2X3ByaW50ay5oOjE1NToyOiBu b3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8K4oCYZHluYW1pY19kZXZfZGJn4oCZCsKgIGR5bmFt aWNfZGV2X2RiZyhkZXYsIGRldl9mbXQoZm10KSwgIyNfX1ZBX0FSR1NfXykKwqAgXn5+fn5+fn5+ fn5+fn5+Ci4vaW5jbHVkZS9saW51eC9kZXZfcHJpbnRrLmg6MTU1OjIzOiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8g4oCYZGV2X2ZtdOKAmQrCoCBkeW5hbWljX2Rldl9kYmcoZGV2LCBkZXZf Zm10KGZtdCksICMjX19WQV9BUkdTX18pCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIF5+fn5+fn4KZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9iY20yODM1L2JjbTI4 MzUtdW5pY2FtLmM6MTY3NjozOiBub3RlOiBpbgpleHBhbnNpb24gb2YgbWFjcm8g4oCYZGV2X2Ri Z+KAmQrCoMKgIGRldl9kYmcodW5pY2FtLT5kZXYsICJidWZmZXIgJWQgYWRkcjogJWxsZFxuIiwg aSwgYnVmZmVyX2FkZHJbaV0pOwrCoMKgIF5+fn5+fn4KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK