Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp2771575rdb; Mon, 4 Dec 2023 07:10:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IEzqZfTLNr/iROp+hElWz+X9V8WIDzvMOcp6VPp4HG3Lz/aZ5eKZQ1YnSp45fo1zUprSgm+ X-Received: by 2002:a17:90b:370c:b0:286:6cc0:cae6 with SMTP id mg12-20020a17090b370c00b002866cc0cae6mr3076027pjb.93.1701702644895; Mon, 04 Dec 2023 07:10:44 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1701702644; cv=pass; d=google.com; s=arc-20160816; b=EGQpu4fXK2FFhvbasF9hU08f3WoTC+w6SvrdgFRF4BprY/l6otfUTnrcwZl1q1YCRE 1oxi3CVcryCLnqj5gYZPW0RAJROJPquTzIhhpyHjjo+Xd/L8gGk4KJr59iWmBJC5tzwy qfMDJ6BKb87p1ag2VA4YOb8SC3ghBy5DeIWPwA3rh0Eif+1f9rYHon2JMqsv7uYiEutp SU4YH92a97jL8/lvNnYQyZG4sGb8YVj43bT/6yqBhwykJPiXVJmgfCaMY4RhhcWz3sxD ka5vpeWduDGaF5rkuMai2H9dF0df6b0FUTzLdbRS3kV3xt/3Ur2O79v13aMSDeVZwoUQ lDxA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=9OnLbcbNhrxKHODr858lJDr5ANi91vy5q54SS5EbsRY=; fh=Qumy8p0LHWC7NgXMbcfk3y38DZRuv5J96pMvdk/j2ak=; b=eNLpR77SPRjn54bezODaBwYlkx+L3+ti2Ts4YlASU/AH8RuV5MewC7GKPwY3hAKE/k EvJvLyjCy2tvXqU3QCgtkxm6ul2NQEoDUWx6mBAStPuRbDLa1N9qmxdwYVAtheVUqXKz TAxqa/RLqwGXVBK2GumomqAi3Yg+5l2thhteQelps3oiKkTmuatXV77qjWTYcDMZ+6gw qp92eInqiHYmmwQ4TtV4Va5PPPnEQZIENZuG18dmScSltGq41cSod+vIqDBcB/dW6+oM pDaOzJndqYkOiD3qXHo1mE+LAD8iaruzyWPNsmAaFqOtvDzi8tdSD09zG982QnISo907 zPeg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@leica-geosystems.com header.s=selector1 header.b="bzNr21/y"; arc=pass (i=1 spf=pass spfdomain=leica-geosystems.com dkim=pass dkdomain=leica-geosystems.com dmarc=pass fromdomain=leica-geosystems.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=leica-geosystems.com Return-Path: Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id l4-20020a17090a850400b002867e3075bfsi3327084pjn.150.2023.12.04.07.10.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 07:10:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@leica-geosystems.com header.s=selector1 header.b="bzNr21/y"; arc=pass (i=1 spf=pass spfdomain=leica-geosystems.com dkim=pass dkdomain=leica-geosystems.com dmarc=pass fromdomain=leica-geosystems.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=leica-geosystems.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 8E3E08098FCD; Mon, 4 Dec 2023 07:10:30 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233994AbjLDPKA (ORCPT + 99 others); Mon, 4 Dec 2023 10:10:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233080AbjLDPJ5 (ORCPT ); Mon, 4 Dec 2023 10:09:57 -0500 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2095.outbound.protection.outlook.com [40.107.247.95]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2F8ACB; Mon, 4 Dec 2023 07:10:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bJ2e5JGHm1iPTuyJw5cp2RZkSiKK3v8ZepBLm2vTzz0SdzN08cTX5zuGHVN2j4g0ddFcp2YH4tOxgoeFvE+/F2t+6buUkQr9nitwnKLH8xs7u+UBt0rG2b0A/6tgd5qdRnkMumZ0w/n4gGn6H4p/QXSvU6McjvjZBNcPWjcNW+9wbiYBE+pMGXNN5H0uGjf0Rq/SQ2RgXiJchpyKNkLwNW0potbFsaGvFiLyNN4LL1pEBcxSbHGxiDcg1LHJyjXPAR/NAUxpzIym/CvaGg3nvml7HpT56dQ3LXzHQ+LqxrorkKlijrBi6ernBkw4zhn/Tci07Bzv9ASaVKtzf0QTYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9OnLbcbNhrxKHODr858lJDr5ANi91vy5q54SS5EbsRY=; b=KqyTvVqrC+5pUH0wQ4G/K5IXxeRE2D8mnXEO/1JC3WYdOHP/GopBy8MDIr9u+jkw1BhQ+VH4Efc56qA6HGTauD6H120jXz+jlgOqP96Ui6BIDwxYZogIIY6LmbG+44pgjhG1xW1iiTN6YE43XlHVGSkQE4nIbCZPPH0EyTdwZLg7WEqLgsFuPhMkhewbVad7mNS10Bw5pUzbQYQ+L0Mx/Z/3UaKQQPpDj+4eLkkvFGYAPu2ugGmHoT8i2OHqLbdGOGKTxnD2USW0Ni7INTG2pFaF2R48cUQ8HVvM59LBxvJPSMHBWnObkl1C+GKeLO+k3vUTypAkpBNAb+zjttl1+w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=leica-geosystems.com; dmarc=pass action=none header.from=leica-geosystems.com; dkim=pass header.d=leica-geosystems.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=leica-geosystems.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9OnLbcbNhrxKHODr858lJDr5ANi91vy5q54SS5EbsRY=; b=bzNr21/ySpIlNhaz8RmNL6uc8Ynrgs7sMoNf05iIKr1exe+K7r1c6vxfwhBnz4wmQXDYxELWLIZ3Pn3wcVZxMGdEaUsdf4A2qrWkegVj1yAtId7bPFA6IOfOwWPKHGCF3vATerUqjxsfadqJFUC5jAlkUetkkKajLJuK96z99ys= Received: from VI1PR06MB6063.eurprd06.prod.outlook.com (2603:10a6:803:9e::11) by PA4PR06MB7213.eurprd06.prod.outlook.com (2603:10a6:102:d7::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.33; Mon, 4 Dec 2023 15:09:58 +0000 Received: from VI1PR06MB6063.eurprd06.prod.outlook.com ([fe80::f5af:b3bb:56f3:dc02]) by VI1PR06MB6063.eurprd06.prod.outlook.com ([fe80::f5af:b3bb:56f3:dc02%7]) with mapi id 15.20.7046.033; Mon, 4 Dec 2023 15:09:58 +0000 From: POPESCU Catalin To: Kamel Bouhara , Dmitry Torokhov , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Henrik Rydberg , "linux-input@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , Marco Felsch , Jeff LaBundy CC: "mark.satterthwaite@touchnetix.com" , "bartp@baasheep.co.uk" , "hannah.rossiter@touchnetix.com" , Thomas Petazzoni , Gregory Clement , GEO-CHHER-bsp-development Subject: Re: [PATCH v4 3/3] Input: Add TouchNetix axiom i2c touchscreen driver Thread-Topic: [PATCH v4 3/3] Input: Add TouchNetix axiom i2c touchscreen driver Thread-Index: AQHaJrrvs5leGSmk2Uu6jLzgr697jLCZOmyA Date: Mon, 4 Dec 2023 15:09:58 +0000 Message-ID: <76a14af9-dc51-4d87-9110-a8be05702b56@leica-geosystems.com> References: <20231204140505.2838916-1-kamel.bouhara@bootlin.com> <20231204140505.2838916-4-kamel.bouhara@bootlin.com> In-Reply-To: <20231204140505.2838916-4-kamel.bouhara@bootlin.com> Accept-Language: en-CH, en-US Content-Language: aa X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=leica-geosystems.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: VI1PR06MB6063:EE_|PA4PR06MB7213:EE_ x-ms-office365-filtering-correlation-id: ee1de6e7-49fd-4233-f8d0-08dbf4db1492 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: b6AhCf+6B5aeufkJPaqWjbdfVqXYIJJE6tg1uROgtUc5BW/ssRTcIe9zYItnDaB/GkPgkaQx/MukCy6gBGAvbuPlzWchD+1OHUrTNjSo1jgUPxbhTASh4BPBU5kmHNRdlhrjS8lo5EZkicCcLZeTwm43WZHQOxW2IV3ayHyq664NGIXE4tNgF/0t1M580R3z8tfZhg+4sWMpZF9j2CxpFNmlhwRgq3G0+x3Gn9nd0RmtKsxch4MaU7fSbKUUja1smcq+cr1NrYs487UfLQBS58YiY/UtXBu3KkUjYWfgpWV0xaIdeNvjpsVI7Rw9Ppz7keUtCtgjgL48NxUTaHHfhIZlfOLbGBqx2cpFfLP56mRRWcpY1OToj9rb9a03VvZArhuuKNMMOySMl98lHKTJm4aTckzGraLqnljF0WYJSXgNF375d0oI9uasTwdjR8P7DdK5EseammuL06IqcwEWtR4xGr23IE5Wvjo01a6XAWs3Q3EI3FLpjzEYsA9lTKOSPXZ0DSgX+bXfP0V4ACZdSs95F1JA4GPwPESMB+Zs43Dmrp7mksdBxNTfXJIzpd251+rHhoQiqaiurDOsIdA1hVXA8YJZlrwOTccD3m267ZUuME9Yn3B+Gyt2Ooc9kwYiLm3TWVjkuGOn5QkaWLsuXR5Bcgs9j7q5KTtG0LGU+qc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR06MB6063.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(366004)(136003)(39860400002)(376002)(346002)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(6506007)(53546011)(71200400001)(6512007)(6486002)(478600001)(45080400002)(30864003)(8676002)(4326008)(8936002)(76116006)(91956017)(64756008)(110136005)(66446008)(66946007)(83380400001)(86362001)(316002)(31696002)(54906003)(66556008)(66476007)(31686004)(122000001)(107886003)(26005)(2616005)(7416002)(5660300002)(921008)(2906002)(36756003)(41300700001)(38070700009)(38100700002)(45980500001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QUdvNXZQdEUrSUJnNEY0ZS9LQXFGYU9YSVFkazkzWDU5blRnbUYxUFk3VFUy?= =?utf-8?B?VEFZWjh4ZVpBK2dlY3M4eGJlTE92SldIMEdLQ2FNTWd3OXNHVUpmUnJFdENF?= =?utf-8?B?dnhZKzB6UGxCL01Fd0FHbDBZUWZZWDBaTkQ4UklZcVZ4MCtqVDgzaENkbU9u?= =?utf-8?B?MnEycUhkUm9kMGd6N3FhNE9aMEFJQWxUOXR5UG1qMndodWs5MzdWdXNHcDVF?= =?utf-8?B?MzJ6bElxdVJJQmFPa0hGTTJoN2NadnhtRll3TWJDc0E0c2JMRThpT2dDeVVo?= =?utf-8?B?Tm8yeG5YM0RZYXFGOTNlZUlOQ3piQWtqZlZKUHMzWmhyaXVTUkY5VDliK2gz?= =?utf-8?B?amJaOWRHSm52b1FReDNWTHltbEUvTUhzRXlTT1NTeEhPcFhFOEhRaGNRc2RI?= =?utf-8?B?Q2NYSTFaSXplWlRJRVdRSlFQODR4UW1GdndWeW0xWEpUcTh1S2E1Z3VFeTB3?= =?utf-8?B?R1hEd2MxcEY0RDdtQWo1Z1RYZXRaNHk5QVkzeUdmN2FUTnZ0NDlLUHFuV0lX?= =?utf-8?B?MzlhRU1vd25NZkZLTVcrTVRlc0lHUWRyRlpHdGJUcDZOeSt0ZTg3RUZ1MGdy?= =?utf-8?B?WWJTWEh5VHNmM0ZyVTVZWG9jR3JYRlp5eXZldytsOWxQRktQS24rUWRUYlBH?= =?utf-8?B?ZGkyOXAvUkJBVjhFZjhETjFjbXdjdHphN25obXAzMWpyRWRWeUUwSGEvbnFX?= =?utf-8?B?VGd4OWMrYUE0UmFTZ2ZzNFRCVzJ5dXFGVkpvK2Z5VlFjeXM0dENkSzNHZHRY?= =?utf-8?B?Q21IR2VRY1FtSndVT2ZzeTVUcHEvd1hjSlovdkFlKzJxeUJoZ0pjWHVlTEJH?= =?utf-8?B?UUNLTEhHVENoSTRKU1NLYlRqbElwK0R6ZFB1c2JadXp5WkFjLzZnN2Nib2VM?= =?utf-8?B?amVVSWZoWUtGUzFQL2dtSnF3K0hOcGREVzg0WnVVcmhrZ3ZVbStWeDNwbWdG?= =?utf-8?B?amgrU1JWSFRtUUtpR21OSmVBMUxadDJORTBVNjd6djNGNTNucmVMaHM1WGJu?= =?utf-8?B?Z0ppWFl5S0pTbmp3ajZ1ZXhxanpNT01ReDJxYjlZeU13RW9aM3hWWmxudnpH?= =?utf-8?B?Yyt2MWNOcVllR090WTAvdTBrRC9yMWRSaUh5Q0c5aFZ4anR3QWdhbFh0Qzhr?= =?utf-8?B?M20xVm1uZFJ6SU5SR1cyemZoYi85L3Q0eFVqMVdGeVplTkZpRUd2bDJRRjVa?= =?utf-8?B?NmQ3YStRUjRKWDlBWmtuOEVqRm1wRmdCbmFTMmMxUkRUVHRmOWJuckNZdG5C?= =?utf-8?B?MjhxZWtDWnppNVRrYWNQZXd2STlMUXZHSEV6SVc3OEoxRVJieVFrQVdmODRq?= =?utf-8?B?S2J5d2g5Q2lhRE42UE0yWXZ3aGE5b0N2WEc1VUFJU3VabDFEam90QmVSMS9N?= =?utf-8?B?ZE9jVDA0VUNmMjNKdXhDQ0E5UWp0NWJwVndSS01DT3NqM2RZOXNQT1N4MElS?= =?utf-8?B?bG9acHVzMEdndFdLRXJJRENLd3hiSlRaUXhJL2F0aElqOG9rNUFKaDFvcTIr?= =?utf-8?B?VWJ6cHhiT3RZcjR0V2l2b2FkVzNiNzZqV2Zkb3U3bXgxbkR5eUVMNHlPZ01V?= =?utf-8?B?MkU5U3F3VkxSaHU2T3h3LzlaU0pkcFVRR0d6ek0yU3FzdzJXZXk5STF1bitU?= =?utf-8?B?TVMrRUtmVlQ4REt1V2dDN2tmdUdTTk80UnVPSzBMNDVWdFBpMUd1U0ZHRjJu?= =?utf-8?B?QzNZRHNUTWF2cEs1Qkg3a2RpdXJXZHp5RFlVc3MvSUJZeUxHZk9jTHRBY09x?= =?utf-8?B?NG1GNW9JRnpwRFdoZ09SMWlsRG42bWpGaDM5c2JrODlmV2RKaXpTaGlPM2gx?= =?utf-8?B?V1Z0Q01lTzR0aEdZYXZRc3lrVFhlU1ZNTW15UzY4YmY5WFhOQ2FlVTJ6Q2VF?= =?utf-8?B?azNmK2xsdVo4dm0wUXhzVk9rc2ZKbFRDK08wYXdmdmtoU0hReGI4dUpCTzFw?= =?utf-8?B?S1dUZkswZDd6U3lTZGNUd0t5bEdRTVZxRVp5YUpsTFdRZ2ZsRzdMRVYyVjBX?= =?utf-8?B?RysxS2Y4VERoREh4TUJZWURRUkF4QS9ITy9oajhKWVZJR011MGc5Z29rM29N?= =?utf-8?B?dUVFbXY4OVBiMnBLWG1nVXZnUkpjRGxnRkJ4Z0NKSXBmTzlSUVFkQUhIaHEv?= =?utf-8?B?WEQzM3MrZW8vL2labzN3NHhOVFhUMHZYR0VPb0dWM2JCcFR4T3hKYk5lMjQ2?= =?utf-8?B?Rmc9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <1149465B3AC16F40A924A7BBDFF686F7@eurprd06.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: leica-geosystems.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR06MB6063.eurprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee1de6e7-49fd-4233-f8d0-08dbf4db1492 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2023 15:09:58.2868 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 1b16ab3e-b8f6-4fe3-9f3e-2db7fe549f6a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bx/gJIxfg3VdOvQ990Uioi1GlI1irKxF5//+skbuZSlRWk92qQkB7vlXf4lKnJfLAOs1onPjoa/1Oz9pf+wXYNOQI1ZyWf0H1KWVCPCzNEHHLU6VmumhVTvdkAEXpgsz X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR06MB7213 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Mon, 04 Dec 2023 07:10:30 -0800 (PST) T24gMDQuMTIuMjMgMTU6MDUsIEthbWVsIEJvdWhhcmEgd3JvdGU6DQo+IFRoaXMgZW1haWwgaXMg bm90IGZyb20gSGV4YWdvbuKAmXMgT2ZmaWNlIDM2NSBpbnN0YW5jZS4gUGxlYXNlIGJlIGNhcmVm dWwgd2hpbGUgY2xpY2tpbmcgbGlua3MsIG9wZW5pbmcgYXR0YWNobWVudHMsIG9yIHJlcGx5aW5n IHRvIHRoaXMgZW1haWwuDQo+DQo+DQo+IEFkZCBhIG5ldyBkcml2ZXIgZm9yIHRoZSBUb3VjaE5l dGl4J3MgYXhpb20gZmFtaWx5IG9mDQo+IHRvdWNoc2NyZWVuIGNvbnRyb2xsZXJzLiBUaGlzIGRy aXZlciBvbmx5IHN1cHBvcnRzIGkyYw0KPiBhbmQgY2FuIGJlIGxhdGVyIGFkYXB0ZWQgZm9yIFNQ SSBhbmQgVVNCIHN1cHBvcnQuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IEthbWVsIEJvdWhhcmEgPGth bWVsLmJvdWhhcmFAYm9vdGxpbi5jb20+DQo+IC0tLQ0KPiAgIE1BSU5UQUlORVJTICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4gICBkcml2ZXJzL2lucHV0L3RvdWNo c2NyZWVuL0tjb25maWcgICAgICAgICAgICB8ICAxMiArDQo+ICAgZHJpdmVycy9pbnB1dC90b3Vj aHNjcmVlbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKw0KPiAgIGRyaXZlcnMvaW5wdXQvdG91 Y2hzY3JlZW4vdG91Y2huZXRpeF9heGlvbS5jIHwgNjc1ICsrKysrKysrKysrKysrKysrKysNCj4g ICA0IGZpbGVzIGNoYW5nZWQsIDY4OSBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vdG91Y2huZXRpeF9heGlvbS5jDQo+DQo+IGRp ZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQo+IGluZGV4IDQ3NTJkODQzNmRi Yi4uMzM3ZGRhYzZjNzRiIDEwMDY0NA0KPiAtLS0gYS9NQUlOVEFJTkVSUw0KPiArKysgYi9NQUlO VEFJTkVSUw0KPiBAQCAtMjE0MzYsNiArMjE0MzYsNyBAQCBNOiAgICAgIEthbWVsIEJvdWhhcmEg PGthbWVsLmJvdWhhcmFAYm9vdGxpbi5jb20+DQo+ICAgTDogICAgIGxpbnV4LWlucHV0QHZnZXIu a2VybmVsLm9yZw0KPiAgIFM6ICAgICBNYWludGFpbmVkDQo+ICAgRjogICAgIERvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi90b3VjaG5ldGl4LGF4NTRh LnlhbWwNCj4gK0Y6ICAgICBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3RvdWNobmV0aXhfYXhp b20uYw0KPg0KPiAgIFRIVU5ERVJCT0xUIERNQSBUUkFGRklDIFRFU1QgRFJJVkVSDQo+ICAgTTog ICAgIElzYWFjIEhhemFuIDxpc2FhYy5oYXphbkBpbnRlbC5jb20+DQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWcgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2Ny ZWVuL0tjb25maWcNCj4gaW5kZXggZTNlMjMyNDU0N2I5Li5mMzZiZWU4ZDg2OTYgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZw0KPiArKysgYi9kcml2ZXJz L2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWcNCj4gQEAgLTgwMyw2ICs4MDMsMTggQEAgY29uZmln IFRPVUNIU0NSRUVOX01JR09SDQo+ICAgICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBh cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+ICAgICAgICAgICAgbW9kdWxlIHdpbGwg YmUgY2FsbGVkIG1pZ29yX3RzLg0KPg0KPiArY29uZmlnIFRPVUNIU0NSRUVOX1RPVUNITkVUSVhf QVhJT00NCj4gKyAgICAgICB0cmlzdGF0ZSAiVG91Y2hOZXRpeCBBWElPTSBiYXNlZCB0b3VjaHNj cmVlbiBjb250cm9sbGVycyINCj4gKyAgICAgICBkZXBlbmRzIG9uIEkyQw0KPiArICAgICAgIGhl bHANCj4gKyAgICAgICAgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBheGlvbSB0b3VjaHNjcmVl biBjb25uZWN0ZWQgdG8NCj4gKyAgICAgICAgIHlvdXIgc3lzdGVtLg0KPiArDQo+ICsgICAgICAg ICBJZiB1bnN1cmUsIHNheSBOLg0KPiArDQo+ICsgICAgICAgICBUbyBjb21waWxlIHRoaXMgZHJp dmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUNCj4gKyAgICAgICAgIG1vZHVsZSB3 aWxsIGJlIGNhbGxlZCBheGlvbS4NCj4gKw0KPiAgIGNvbmZpZyBUT1VDSFNDUkVFTl9UT1VDSFJJ R0hUDQo+ICAgICAgICAgIHRyaXN0YXRlICJUb3VjaHJpZ2h0IHNlcmlhbCB0b3VjaHNjcmVlbiIN Cj4gICAgICAgICAgc2VsZWN0IFNFUklPDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3Rv dWNoc2NyZWVuL01ha2VmaWxlIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9NYWtlZmlsZQ0K PiBpbmRleCA2MmJkMjRmM2FjOGUuLjhlMzJhMmRmNWUxOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9pbnB1dC90b3VjaHNjcmVlbi9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL2lucHV0L3RvdWNo c2NyZWVuL01ha2VmaWxlDQo+IEBAIC04OCw2ICs4OCw3IEBAIG9iai0kKENPTkZJR19UT1VDSFND UkVFTl9TVVI0MCkgICAgICAgICAgICAgICArPSBzdXI0MC5vDQo+ICAgb2JqLSQoQ09ORklHX1RP VUNIU0NSRUVOX1NVUkZBQ0UzX1NQSSkgKz0gc3VyZmFjZTNfc3BpLm8NCj4gICBvYmotJChDT05G SUdfVE9VQ0hTQ1JFRU5fVElfQU0zMzVYX1RTQykgICAgICAgICs9IHRpX2FtMzM1eF90c2Mubw0K PiAgIG9iai0kKENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSElUMjEzKSAgICs9IHRvdWNoaXQyMTMu bw0KPiArb2JqLSQoQ09ORklHX1RPVUNIU0NSRUVOX1RPVUNITkVUSVhfQVhJT00pICAgICArPSB0 b3VjaG5ldGl4X2F4aW9tLm8NCj4gICBvYmotJChDT05GSUdfVE9VQ0hTQ1JFRU5fVE9VQ0hSSUdI VCkgICArPSB0b3VjaHJpZ2h0Lm8NCj4gICBvYmotJChDT05GSUdfVE9VQ0hTQ1JFRU5fVE9VQ0hX SU4pICAgICArPSB0b3VjaHdpbi5vDQo+ICAgb2JqLSQoQ09ORklHX1RPVUNIU0NSRUVOX1RTNDgw MCkgICAgICAgKz0gdHM0ODAwLXRzLm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91 Y2hzY3JlZW4vdG91Y2huZXRpeF9heGlvbS5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi90 b3VjaG5ldGl4X2F4aW9tLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMDAwLi45NzgzZTg5ZjllM2ENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9kcml2ZXJzL2lu cHV0L3RvdWNoc2NyZWVuL3RvdWNobmV0aXhfYXhpb20uYw0KPiBAQCAtMCwwICsxLDY3NSBAQA0K PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiArLyoNCj4gKyAq IFRvdWNoTmV0aXggYXhpb20gVG91Y2hzY3JlZW4gRHJpdmVyDQo+ICsgKg0KPiArICogQ29weXJp Z2h0IChDKSAyMDIwLTIwMjMgVG91Y2hOZXRpeCBMdGQuDQo+ICsgKg0KPiArICogQXV0aG9yKHMp OiBCYXJ0IFByZXNjb3R0IDxiYXJ0cEBiYWFzaGVlcC5jby51az4NCj4gKyAqICAgICAgICAgICAg UGVkcm8gVG9ycnVlbGxhIDxwZWRyby50b3JydWVsbGFAdG91Y2huZXRpeC5jb20+DQo+ICsgKiAg ICAgICAgICAgIE1hcmsgU2F0dGVydGh3YWl0ZSA8bWFyay5zYXR0ZXJ0aHdhaXRlQHRvdWNobmV0 aXguY29tPg0KPiArICogICAgICAgICAgICBIYW5uYWggUm9zc2l0ZXIgPGhhbm5haC5yb3NzaXRl ckB0b3VjaG5ldGl4LmNvbT4NCj4gKyAqICAgICAgICAgICAgS2FtZWwgQm91aGFyYSA8a2FtZWwu Ym91aGFyYUBib290bGluLmNvbT4NCj4gKyAqDQo+ICsgKi8NCj4gKyNpbmNsdWRlIDxsaW51eC9i aXRmaWVsZC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2NyYzE2Lmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9ncGlvL2NvbnN1bWVyLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvaW5wdXQuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pbnB1dC9tdC5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ DQo+ICsNCj4gKyNkZWZpbmUgQVhJT01fUFJPWF9MRVZFTCAgICAgICAgICAgICAgIC0xMjgNCj4g Ky8qDQo+ICsgKiBSZWdpc3RlciBncm91cCB1MzEgaGFzIDIgcGFnZXMgZm9yIHVzYWdlIHRhYmxl IGVudHJpZXMuDQo+ICsgKi8NCj4gKyNkZWZpbmUgQVhJT01fVTMxX01BWF9VU0FHRVMgICAgICAg ICAgICgoMiAqIEFYSU9NX0NPTU1TX1BBR0VfU0laRSkgLyBBWElPTV9VMzFfQllURVNfUEVSX1VT QUdFKQ0KPiArI2RlZmluZSBBWElPTV9VMzFfQllURVNfUEVSX1VTQUdFICAgICAgNg0KPiArI2Rl ZmluZSBBWElPTV9VMzFfUEFHRTBfTEVOR1RIICAgICAgICAgMHgwQw0KPiArI2RlZmluZSBBWElP TV9VMzFfQk9PVE1PREVfTUFTSyAgICAgICAgICAgICAgICBCSVQoNykNCj4gKyNkZWZpbmUgQVhJ T01fVTMxX0RFVklEX01BU0sgICAgICAgICAgIEdFTk1BU0soMTQsIDApDQo+ICsNCj4gKyNkZWZp bmUgQVhJT01fQ01EX0hFQURFUl9SRUFEX01BU0sgICAgIEJJVCgxNSkNCj4gKyNkZWZpbmUgQVhJ T01fVTQxX01BWF9UQVJHRVRTICAgICAgICAgIDEwDQo+ICsNCj4gKyNkZWZpbmUgQVhJT01fVTQ2 X0FVWF9DSEFOTkVMUyAgICAgICAgIDQNCj4gKyNkZWZpbmUgQVhJT01fVTQ2X0FVWF9NQVNLICAg ICAgICAgICAgIEdFTk1BU0soMTEsIDApDQo+ICsNCj4gKyNkZWZpbmUgQVhJT01fQ09NTVNfTUFY X1VTQUdFX1BBR0VTICAgIDMNCj4gKyNkZWZpbmUgQVhJT01fQ09NTVNfUEFHRV9TSVpFICAgICAg ICAgIDI1Ng0KPiArI2RlZmluZSBBWElPTV9DT01NU19SRVBPUlRfTEVOX01BU0sgICAgR0VOTUFT Syg2LCAwKQ0KPiArDQo+ICsjZGVmaW5lIEFYSU9NX1JFUE9SVF9VU0FHRV9JRCAgICAgICAgICAw eDM0DQo+ICsjZGVmaW5lIEFYSU9NX0RFVklORk9fVVNBR0VfSUQgICAgICAgICAweDMxDQo+ICsj ZGVmaW5lIEFYSU9NX1VTQUdFXzJIQl9SRVBPUlRfSUQgICAgICAweDAxDQo+ICsjZGVmaW5lIEFY SU9NX1VTQUdFXzJBVVhfUkVQT1JUX0lEICAgICAweDQ2DQo+ICsjZGVmaW5lIEFYSU9NX1VTQUdF XzJEQ1RTX1JFUE9SVF9JRCAgICAweDQxDQo+ICsNCj4gKyNkZWZpbmUgQVhJT01fUEFHRV9PRkZT RVRfTUFTSyAgICAgICAgIEdFTk1BU0soNiwgMCkNCj4gKw0KPiArc3RydWN0IGF4aW9tX2Rldmlu Zm8gew0KPiArICAgICAgIHUxNiBkZXZpY2VfaWQ7DQo+ICsgICAgICAgdTggZndfbWlub3I7DQo+ ICsgICAgICAgdTggZndfbWFqb3I7DQo+ICsgICAgICAgdTggZndfaW5mb19leHRyYTsNCj4gKyAg ICAgICB1OCB0Y3BfcmV2aXNpb247DQo+ICsgICAgICAgdTggYm9vdGxvYWRlcl9md19taW5vcjsN Cj4gKyAgICAgICB1OCBib290bG9hZGVyX2Z3X21ham9yOw0KPiArICAgICAgIHUxNiBqZWRlY19p ZDsNCj4gKyAgICAgICB1OCBudW1fdXNhZ2VzOw0KPiArfSBfX3BhY2tlZDsNCj4gKw0KPiArLyoN Cj4gKyAqIERlc2NyaWJlcyBwYXJhbWV0ZXJzIG9mIGEgc3BlY2lmaWMgdXNhZ2UsIGVzc2VudGlh bGx5IGEgc2luZ2xlIGVsZW1lbnQgb2YNCj4gKyAqIHRoZSAiVXNhZ2UgVGFibGUiDQo+ICsgKi8N Cj4gK3N0cnVjdCBheGlvbV91c2FnZV9lbnRyeSB7DQo+ICsgICAgICAgdTggaWQ7DQo+ICsgICAg ICAgdTggaXNfcmVwb3J0Ow0KPiArICAgICAgIHU4IHN0YXJ0X3BhZ2U7DQo+ICsgICAgICAgdTgg bnVtX3BhZ2VzOw0KPiArfTsNCj4gKw0KPiArLyoNCj4gKyAqIFJlcHJlc2VudHMgc3RhdGUgb2Yg YSB0b3VjaCBvciB0YXJnZXQgd2hlbiBkZXRlY3RlZCBwcmlvciBhIHRvdWNoIChlZy4NCj4gKyAq IGhvdmVyIG9yIHByb3hpbWl0eSBldmVudHMpLg0KPiArICovDQo+ICtlbnVtIGF4aW9tX3Rhcmdl dF9zdGF0ZSB7DQo+ICsgICAgICAgQVhJT01fVEFSR0VUX1NUQVRFX05PVF9QUkVTRU5UID0gMCwN Cj4gKyAgICAgICBBWElPTV9UQVJHRVRfU1RBVEVfUFJPWCA9IDEsDQo+ICsgICAgICAgQVhJT01f VEFSR0VUX1NUQVRFX0hPVkVSID0gMiwNCj4gKyAgICAgICBBWElPTV9UQVJHRVRfU1RBVEVfVE9V Q0hJTkcgPSAzLA0KPiArfTsNCj4gKw0KPiArc3RydWN0IGF4aW9tX3U0MV90YXJnZXQgew0KPiAr ICAgICAgIGVudW0gYXhpb21fdGFyZ2V0X3N0YXRlIHN0YXRlOw0KPiArICAgICAgIHUxNiB4Ow0K PiArICAgICAgIHUxNiB5Ow0KPiArICAgICAgIHM4IHo7DQo+ICsgICAgICAgYm9vbCBpbnNlcnQ7 DQo+ICsgICAgICAgYm9vbCB0b3VjaDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBheGlvbV90YXJn ZXRfcmVwb3J0IHsNCj4gKyAgICAgICB1OCBpbmRleDsNCj4gKyAgICAgICB1OCBwcmVzZW50Ow0K PiArICAgICAgIHUxNiB4Ow0KPiArICAgICAgIHUxNiB5Ow0KPiArICAgICAgIHM4IHo7DQo+ICt9 Ow0KPiArDQo+ICtzdHJ1Y3QgYXhpb21fY21kX2hlYWRlciB7DQo+ICsgICAgICAgX19sZTE2IHRh cmdldF9hZGRyZXNzOw0KPiArICAgICAgIF9fbGUxNiBsZW5ndGg7DQo+ICt9IF9fcGFja2VkOw0K PiArDQo+ICtzdHJ1Y3QgYXhpb21fZGF0YSB7DQo+ICsgICAgICAgc3RydWN0IGF4aW9tX2Rldmlu Zm8gZGV2aW5mbzsNCj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+ICsgICAgICAgc3Ry dWN0IGdwaW9fZGVzYyAqcmVzZXRfZ3BpbzsNCj4gKyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50Ow0KPiArICAgICAgIHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0X2RldjsNCj4gKyAgICAg ICB1MzIgbWF4X3JlcG9ydF9sZW47DQo+ICsgICAgICAgY2hhciByeF9idWZbQVhJT01fQ09NTVNf TUFYX1VTQUdFX1BBR0VTICogQVhJT01fQ09NTVNfUEFHRV9TSVpFXTsNCj4gKyAgICAgICBzdHJ1 Y3QgYXhpb21fdTQxX3RhcmdldCB0YXJnZXRzW0FYSU9NX1U0MV9NQVhfVEFSR0VUU107DQo+ICsg ICAgICAgc3RydWN0IGF4aW9tX3VzYWdlX2VudHJ5IHVzYWdlX3RhYmxlW0FYSU9NX1UzMV9NQVhf VVNBR0VTXTsNCj4gKyAgICAgICBib29sIHVzYWdlX3RhYmxlX3BvcHVsYXRlZDsNCj4gKyAgICAg ICBzdHJ1Y3QgcmVndWxhdG9yICp2ZGRhOw0KPiArICAgICAgIHN0cnVjdCByZWd1bGF0b3IgKnZk ZGk7DQo+ICt9Ow0KPiArDQo+ICsvKg0KPiArICogYXhpb20gZGV2aWNlcyBhcmUgdHlwaWNhbGx5 IGNvbmZpZ3VyZWQgdG8gcmVwb3J0DQo+ICsgKiB0b3VjaGVzIGF0IGEgcmF0ZSBvZiAxMDBIeiAo MTBtcykuIEZvciBzeXN0ZW1zDQo+ICsgKiB0aGF0IHJlcXVpcmUgcG9sbGluZyBmb3IgcmVwb3J0 cy4NCj4gKyAqIFdoZW4gcmVwb3J0cyBhcmUgcG9sbGVkLCBpdCB3aWxsIGJlIGV4cGVjdGVkIHRv DQo+ICsgKiBvY2Nhc2lvbmFsbHkgb2JzZXJ2ZSB0aGUgb3ZlcmZsb3cgYml0IGJlaW5nIHNldA0K PiArICogaW4gdGhlIHJlcG9ydHMuIFRoaXMgaW5kaWNhdGVzIHRoYXQgcmVwb3J0cyBhcmUgbm90 DQo+ICsgKiBiZWluZyByZWFkIGZhc3QgZW5vdWdoLg0KPiArICovDQo+ICsjZGVmaW5lIFBPTExf SU5URVJWQUxfREVGQVVMVF9NUyAxMA0KPiArDQo+ICsvKiBUcmFuc2xhdGUgdXNhZ2UvcGFnZS9v ZmZzZXQgdHJpcGxldCBpbnRvIHBoeXNpY2FsIGFkZHJlc3MuICovDQo+ICtzdGF0aWMgdTE2IGF4 aW9tX3VzYWdlX3RvX3RhcmdldF9hZGRyZXNzKHN0cnVjdCBheGlvbV9kYXRhICp0cywgY2hhciB1 c2FnZSwgY2hhciBwYWdlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNoYXIgb2Zmc2V0KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBheGlvbV91c2FnZV9lbnRy eSAqdXNhZ2VfdGFibGU7DQo+ICsgICAgICAgc3RydWN0IGF4aW9tX2RldmluZm8gKmRldmljZV9p bmZvOw0KPiArICAgICAgIHUzMiBpOw0KPiArDQo+ICsgICAgICAgZGV2aWNlX2luZm8gPSAmdHMt PmRldmluZm87DQo+ICsgICAgICAgdXNhZ2VfdGFibGUgPSB0cy0+dXNhZ2VfdGFibGU7DQo+ICsN Cj4gKyAgICAgICAvKiBBdCB0aGUgbW9tZW50IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgdTMxIGlz IGFsd2F5cyBhdCBwaHlzaWNhbCBhZGRyZXNzIDB4MCAqLw0KPiArICAgICAgIGlmICghdHMtPnVz YWdlX3RhYmxlX3BvcHVsYXRlZCkgew0KPiArICAgICAgICAgICAgICAgaWYgKHVzYWdlID09IEFY SU9NX0RFVklORk9fVVNBR0VfSUQpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAo KHBhZ2UgPDwgOCkgKyBvZmZzZXQpOw0KPiArICAgICAgICAgICAgICAgZWxzZQ0KPiArICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gMHhmZmZmOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAg ICAgIGZvciAoaSA9IDA7IGkgPCB0cy0+ZGV2aW5mby5udW1fdXNhZ2VzOyBpKyspIHsNCj4gKyAg ICAgICAgICAgICAgIGlmICh1c2FnZV90YWJsZVtpXS5pZCAhPSB1c2FnZSkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChwYWdl ID49IHVzYWdlX3RhYmxlW2ldLm51bV9wYWdlcykgew0KPiArICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKHRzLT5kZXYsICJJbnZhbGlkIHVzYWdlIHRhYmxlISB1c2FnZTogJXUsIHBhZ2U6 ICV1LCBvZmZzZXQ6ICV1XG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz YWdlLCBwYWdlLCBvZmZzZXQpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMHhm ZmZmOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsg ICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuICgodXNhZ2VfdGFibGVbaV0uc3RhcnRfcGFn ZSArIHBhZ2UpIDw8IDgpICsgb2Zmc2V0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGF4aW9t X2kyY19yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHVzYWdlLCB1OCBwYWdlLCB1 OCAqYnVmLCB1MTYgbGVuKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBheGlvbV9kYXRhICp0cyA9 IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOw0KPiArICAgICAgIHN0cnVjdCBheGlvbV9jbWRf aGVhZGVyIGNtZF9oZWFkZXI7DQo+ICsgICAgICAgdTggYnVmZmVyW3NpemVvZihjbWRfaGVhZGVy KSArIEFYSU9NX0NPTU1TX1BBR0VfU0laRV07DQo+ICsgICAgICAgc3RydWN0IGkyY19tc2cgbXNn Ow0KPiArICAgICAgIGludCBlcnJvcjsNCj4gKw0KPiArICAgICAgIGNtZF9oZWFkZXIudGFyZ2V0 X2FkZHJlc3MgPSBjcHVfdG9fbGUxNihheGlvbV91c2FnZV90b190YXJnZXRfYWRkcmVzcyh0cywg dXNhZ2UsIHBhZ2UsIDApKTsNCj4gKyAgICAgICBjbWRfaGVhZGVyLmxlbmd0aCA9IGNwdV90b19s ZTE2KGxlbiB8IEFYSU9NX0NNRF9IRUFERVJfUkVBRF9NQVNLKTsNCj4gKw0KPiArICAgICAgIG1l bWNweSgmYnVmZmVyWzBdLCAmY21kX2hlYWRlciwgc2l6ZW9mKGNtZF9oZWFkZXIpKTsNCj4gKyAg ICAgICBtZW1jcHkoJmJ1ZmZlcltzaXplb2YoY21kX2hlYWRlcildLCBidWYsIGxlbik7DQoNCllv dSdyZSBjb3B5aW5nIGEgYnVmZmVyIHRoYXQgaXMgbWVhbnQgdG8gaG9sZCB0aGUgcmVzcG9uc2Ug d2hpY2ggbWFrZXMgDQpubyBzZW5zZS4NClBsZWFzZSBzdGljayB0byB0aGUgb3JpZ2luYWwgaW1w bGVtZW50YXRpb24gd2hpY2ggdHJhbnNmZXJzIDIgbWVzc2FnZXMgOg0KLSBmaXJzdCBpcyB0aGUg aGVhZGVyICh5b3UncmUgdGVsbGluZyB0aGUgY29udHJvbGxlciB3aGF0IHlvdSB3YW50IHRvIA0K cmVhZCkgOiB0aGlzIGlzIGEgd3JpdGUgYW5kIGZsYWdzIHNob3VsZCBiZSAwLg0KLSBzZWNvbmQg aXMgdGhlIGFjdHVhbCByZWFkIG1lc3NhZ2UgOiBmbGFncyBzaG91bGQgYmUgSTJDX01fUkQNCg0K PiArDQo+ICsgICAgICAgbXNnLmFkZHIgPSBjbGllbnQtPmFkZHI7DQo+ICsgICAgICAgbXNnLmZs YWdzID0gMDsNCj4gKyAgICAgICBtc2cubGVuID0gbGVuICsgc2l6ZW9mKGNtZF9oZWFkZXIpOw0K PiArICAgICAgIG1zZy5idWYgPSAodTggKilidWZmZXI7DQo+ICsNCj4gKyAgICAgICBlcnJvciA9 IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsICZtc2csIDEpOw0KPiArICAgICAgIGlmIChl cnJvciAhPSAxKSB7DQpZb3Ugc2hvdWxkIHRyYW5zZmVyIDIgbWVzc2FnZXMgKHNlZSBhYm92ZSku DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKCZjbGllbnQtPmRldiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIkZhaWxlZCByZWFkaW5nIHVzYWdlICUjeCBwYWdlICUjeCwgZXJyb3I9JWRc biIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlLCBwYWdlLCBlcnJvcik7DQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAg dXNsZWVwX3JhbmdlKDEwMCwgMjUwKTsNClRoZSBkZWxheSBoZXJlIGlzIG5vdCBlbm91Z2ggYXMg VG91Y2huZXRpeCBjb25maXJtZWQgdGhhdCB3ZSB3b3VsZCBuZWVkIA0KMjUwIHVzZWNzIGZvciB0 aGUgY29udHJvbGxlcidzIGludGVybmFsIERNQSB0byBiZSByZWFkeSBhZnRlciBhbiBpMmMgDQp0 cmFuc2Zlci4NCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKg0KPiAr ICogT25lIG9mIHRoZSBtYWluIHB1cnBvc2VzIGZvciByZWFkaW5nIHRoZSB1c2FnZSB0YWJsZSBp cyB0byBpZGVudGlmeQ0KPiArICogd2hpY2ggdXNhZ2VzIHJlc2lkZSBhdCB3aGljaCBUQSBhZGRy ZXNzLg0KPiArICogV2hlbiBwZXJmb3JtaW5nIHN1YnNlcXVlbnQgcmVhZHMgb3Igd3JpdGVzIHRv IEFYSU9NLCB0aGUgVEEgaXMgdXNlZA0KPiArICogdG8gc3BlY2lmeSB3aGljaCB1c2FnZSBpcyBi ZWluZyBhY2Nlc3NlZC4NCj4gKyAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZGlzY292ZXJ5IGNv ZGUgd2hpY2ggd2lsbCBidWlsZCB1cCB0aGUgdXNhZ2UgdGFibGUuDQo+ICsgKi8NCj4gK3N0YXRp YyB1MzIgYXhpb21fcG9wdWxhdGVfdXNhZ2VfdGFibGUoc3RydWN0IGF4aW9tX2RhdGEgKnRzKQ0K PiArew0KPiArICAgICAgIHN0cnVjdCBheGlvbV91c2FnZV9lbnRyeSAqdXNhZ2VfdGFibGU7DQo+ ICsgICAgICAgdTMyIG1heF9yZXBvcnRfbGVuID0gMDsNCj4gKyAgICAgICBjaGFyICpyeF9kYXRh ID0gdHMtPnJ4X2J1ZjsNCj4gKyAgICAgICB1MzIgdXNhZ2VfaWQ7DQo+ICsgICAgICAgaW50IGVy cm9yOw0KPiArDQo+ICsgICAgICAgdXNhZ2VfdGFibGUgPSB0cy0+dXNhZ2VfdGFibGU7DQo+ICsN Cj4gKyAgICAgICAvKiBSZWFkIHRoZSBzZWNvbmQgcGFnZSBvZiB1c2FnZSB1MzEgdG8gZ2V0IHRo ZSB1c2FnZSB0YWJsZSAqLw0KPiArICAgICAgIGVycm9yID0gYXhpb21faTJjX3JlYWQodHMtPmNs aWVudCwgQVhJT01fREVWSU5GT19VU0FHRV9JRCwgMSwgcnhfZGF0YSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChBWElPTV9VMzFfQllURVNfUEVSX1VTQUdFICogdHMtPmRldmlu Zm8ubnVtX3VzYWdlcykpOw0KPiArICAgICAgIGlmIChlcnJvcikNCj4gKyAgICAgICAgICAgICAg IHJldHVybiBlcnJvcjsNCj4gKw0KPiArICAgICAgIGZvciAodXNhZ2VfaWQgPSAwOyB1c2FnZV9p ZCA8IHRzLT5kZXZpbmZvLm51bV91c2FnZXM7IHVzYWdlX2lkKyspIHsNCj4gKyAgICAgICAgICAg ICAgIHUxNiBvZmZzZXQgPSAodXNhZ2VfaWQgKiBBWElPTV9VMzFfQllURVNfUEVSX1VTQUdFKTsN Cj4gKyAgICAgICAgICAgICAgIHU4IGlkID0gcnhfZGF0YVtvZmZzZXQgKyAwXTsNCj4gKyAgICAg ICAgICAgICAgIHU4IHN0YXJ0X3BhZ2UgPSByeF9kYXRhW29mZnNldCArIDFdOw0KPiArICAgICAg ICAgICAgICAgdTggbnVtX3BhZ2VzID0gcnhfZGF0YVtvZmZzZXQgKyAyXTsNCj4gKyAgICAgICAg ICAgICAgIHUzMiBtYXhfb2Zmc2V0ID0gKChyeF9kYXRhW29mZnNldCArIDNdICYgQVhJT01fUEFH RV9PRkZTRVRfTUFTSykgKyAxKSAqIDI7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmICghbnVt X3BhZ2VzKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICB1c2FnZV90YWJsZVt1c2FnZV9pZF0u aXNfcmVwb3J0ID0gdHJ1ZTsNCj4gKw0KPiArICAgICAgICAgICAgICAgLyogU3RvcmUgdGhlIGVu dHJ5IGludG8gdGhlIHVzYWdlIHRhYmxlICovDQo+ICsgICAgICAgICAgICAgICB1c2FnZV90YWJs ZVt1c2FnZV9pZF0uaWQgPSBpZDsNCj4gKyAgICAgICAgICAgICAgIHVzYWdlX3RhYmxlW3VzYWdl X2lkXS5zdGFydF9wYWdlID0gc3RhcnRfcGFnZTsNCj4gKyAgICAgICAgICAgICAgIHVzYWdlX3Rh YmxlW3VzYWdlX2lkXS5udW1fcGFnZXMgPSBudW1fcGFnZXM7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIGRldl9kYmcodHMtPmRldiwgIlVzYWdlIHUlMDJ4IEluZm86ICUqcGhcbiIsIGlkLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBBWElPTV9VMzFfQllURVNfUEVSX1VTQUdFLCAmcnhfZGF0 YVtvZmZzZXRdKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgLyogSWRlbnRpZnkgdGhlIG1heCBy ZXBvcnQgbGVuZ3RoIHRoZSBtb2R1bGUgd2lsbCByZWNlaXZlICovDQo+ICsgICAgICAgICAgICAg ICBpZiAodXNhZ2VfdGFibGVbdXNhZ2VfaWRdLmlzX3JlcG9ydCAmJiBtYXhfb2Zmc2V0ID4gbWF4 X3JlcG9ydF9sZW4pDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1heF9yZXBvcnRfbGVuID0g bWF4X29mZnNldDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICB0cy0+dXNhZ2VfdGFibGVf cG9wdWxhdGVkID0gdHJ1ZTsNCj4gKw0KPiArICAgICAgIHJldHVybiBtYXhfcmVwb3J0X2xlbjsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBheGlvbV9kaXNjb3ZlcihzdHJ1Y3QgYXhpb21fZGF0 YSAqdHMpDQo+ICt7DQo+ICsgICAgICAgaW50IGVycm9yOw0KPiArDQo+ICsgICAgICAgLyoNCj4g KyAgICAgICAgKiBGZXRjaCB0aGUgZmlyc3QgcGFnZSBvZiB1c2FnZSB1MzEgdG8gZ2V0IHRoZQ0K PiArICAgICAgICAqIGRldmljZSBpbmZvcm1hdGlvbiBhbmQgdGhlIG51bWJlciBvZiB1c2FnZXMN Cj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBlcnJvciA9IGF4aW9tX2kyY19yZWFkKHRzLT5jbGll bnQsIEFYSU9NX0RFVklORk9fVVNBR0VfSUQsIDAsIChjaGFyICopJnRzLT5kZXZpbmZvLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVhJT01fVTMxX1BBR0UwX0xFTkdUSCk7DQo+ ICsgICAgICAgaWYgKGVycm9yKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOw0KPiAr DQo+ICsgICAgICAgZGV2X2RiZyh0cy0+ZGV2LCAiICBCb290IE1vZGUgICAgICA6ICVzXG4iLA0K PiArICAgICAgICAgICAgICAgRklFTERfR0VUKEFYSU9NX1UzMV9CT09UTU9ERV9NQVNLLCB0cy0+ ZGV2aW5mby5kZXZpY2VfaWQpID8gIkJMUCIgOiAiVENQIik7DQo+ICsgICAgICAgZGV2X2RiZyh0 cy0+ZGV2LCAiICBEZXZpY2UgSUQgICAgICA6ICUwNGx4XG4iLA0KPiArICAgICAgICAgICAgICAg RklFTERfR0VUKEFYSU9NX1UzMV9ERVZJRF9NQVNLLCB0cy0+ZGV2aW5mby5kZXZpY2VfaWQpKTsN Cj4gKyAgICAgICBkZXZfZGJnKHRzLT5kZXYsICIgIEZpcm13YXJlIFJldiAgIDogJTAyeC4lMDJ4 XG4iLCB0cy0+ZGV2aW5mby5md19tYWpvciwNCj4gKyAgICAgICAgICAgICAgIHRzLT5kZXZpbmZv LmZ3X21pbm9yKTsNCj4gKyAgICAgICBkZXZfZGJnKHRzLT5kZXYsICIgIEJvb3Rsb2FkZXIgUmV2 IDogJTAyeC4lMDJ4XG4iLCB0cy0+ZGV2aW5mby5ib290bG9hZGVyX2Z3X21ham9yLA0KPiArICAg ICAgICAgICAgICAgdHMtPmRldmluZm8uYm9vdGxvYWRlcl9md19taW5vcik7DQo+ICsgICAgICAg ZGV2X2RiZyh0cy0+ZGV2LCAiICBGVyBFeHRyYSBJbmZvICA6ICUwNHhcbiIsIHRzLT5kZXZpbmZv LmZ3X2luZm9fZXh0cmEpOw0KPiArICAgICAgIGRldl9kYmcodHMtPmRldiwgIiAgU2lsaWNvbiAg ICAgICAgOiAlMDR4XG4iLCB0cy0+ZGV2aW5mby5qZWRlY19pZCk7DQo+ICsgICAgICAgZGV2X2Ri Zyh0cy0+ZGV2LCAiICBOdW1iZXIgdXNhZ2VzICAgICAgICA6ICUwNHhcbiIsIHRzLT5kZXZpbmZv Lm51bV91c2FnZXMpOw0KPiArDQo+ICsgICAgICAgdHMtPm1heF9yZXBvcnRfbGVuID0gYXhpb21f cG9wdWxhdGVfdXNhZ2VfdGFibGUodHMpOw0KPiArICAgICAgIGlmICghdHMtPm1heF9yZXBvcnRf bGVuIHx8ICF0cy0+ZGV2aW5mby5udW1fdXNhZ2VzKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgICBkZXZfZGJnKHRzLT5kZXYsICJNYXggUmVwb3J0IExl bmd0aDogJXVcbiIsIHRzLT5tYXhfcmVwb3J0X2xlbik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4g MDsNCj4gK30NCj4gKw0KPiArLyoNCj4gKyAqIFN1cHBvcnQgZnVuY3Rpb24gdG8gYXhpb21fcHJv Y2Vzc191NDFfcmVwb3J0Lg0KPiArICogR2VuZXJhdGVzIGlucHV0LXN1YnN5c3RlbSBldmVudHMg Zm9yIGV2ZXJ5IHRhcmdldC4NCj4gKyAqIEFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB0aGUg Y2FsbGVyIHNoYWxsIGlzc3VlDQo+ICsgKiBhIFN5bmMgdG8gdGhlIGlucHV0IHN1Yi1zeXN0ZW0u DQo+ICsgKi8NCj4gK3N0YXRpYyBib29sIGF4aW9tX3Byb2Nlc3NfdTQxX3JlcG9ydF90YXJnZXQo c3RydWN0IGF4aW9tX2RhdGEgKnRzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBheGlvbV90YXJnZXRfcmVwb3J0ICp0YXJnZXQpDQo+ICt7DQo+ ICsgICAgICAgc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2ID0gdHMtPmlucHV0X2RldjsNCj4g KyAgICAgICBzdHJ1Y3QgYXhpb21fdTQxX3RhcmdldCAqdGFyZ2V0X3ByZXZfc3RhdGU7DQo+ICsg ICAgICAgZW51bSBheGlvbV90YXJnZXRfc3RhdGUgY3VycmVudF9zdGF0ZTsNCj4gKyAgICAgICBi b29sIHVwZGF0ZSA9IGZhbHNlOw0KPiArICAgICAgIGludCBzbG90Ow0KPiArDQo+ICsgICAgICAg LyogVmVyaWZ5IHRoZSB0YXJnZXQgaW5kZXggKi8NCj4gKyAgICAgICBpZiAodGFyZ2V0LT5pbmRl eCA+PSBBWElPTV9VNDFfTUFYX1RBUkdFVFMpIHsNCj4gKyAgICAgICAgICAgICAgIGRldl9kYmco dHMtPmRldiwgIkludmFsaWQgdGFyZ2V0IGluZGV4ISAldVxuIiwgdGFyZ2V0LT5pbmRleCk7DQo+ ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAg ICAgdGFyZ2V0X3ByZXZfc3RhdGUgPSAmdHMtPnRhcmdldHNbdGFyZ2V0LT5pbmRleF07DQo+ICsN Cj4gKyAgICAgICBjdXJyZW50X3N0YXRlID0gQVhJT01fVEFSR0VUX1NUQVRFX05PVF9QUkVTRU5U Ow0KPiArDQo+ICsgICAgICAgaWYgKHRhcmdldC0+cHJlc2VudCkgew0KPiArICAgICAgICAgICAg ICAgaWYgKHRhcmdldC0+eiA+PSAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50 X3N0YXRlID0gQVhJT01fVEFSR0VUX1NUQVRFX1RPVUNISU5HOw0KPiArICAgICAgICAgICAgICAg ZWxzZSBpZiAodGFyZ2V0LT56ID4gQVhJT01fUFJPWF9MRVZFTCAmJiB0YXJnZXQtPnogPCAwKQ0K PiArICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3N0YXRlID0gQVhJT01fVEFSR0VUX1NU QVRFX0hPVkVSOw0KPiArICAgICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0LT56ID09IEFYSU9N X1BST1hfTEVWRUwpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RhdGUgPSBB WElPTV9UQVJHRVRfU1RBVEVfUFJPWDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBpZiAo dGFyZ2V0X3ByZXZfc3RhdGUtPnN0YXRlID09IGN1cnJlbnRfc3RhdGUgJiYNCj4gKyAgICAgICAg ICAgdGFyZ2V0X3ByZXZfc3RhdGUtPnggPT0gdGFyZ2V0LT54ICYmDQo+ICsgICAgICAgICAgIHRh cmdldF9wcmV2X3N0YXRlLT55ID09IHRhcmdldC0+eSAmJg0KPiArICAgICAgICAgICB0YXJnZXRf cHJldl9zdGF0ZS0+eiA9PSB0YXJnZXQtPnopIHsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBzbG90ID0gdGFyZ2V0LT5pbmRleDsN Cj4gKw0KPiArICAgICAgIGRldl9kYmcodHMtPmRldiwgIlU0MSBUYXJnZXQgVCV1LCBzbG90OiV1 IHByZXNlbnQ6JXUsIHg6JXUsIHk6JXUsIHo6JWRcbiIsDQo+ICsgICAgICAgICAgICAgICB0YXJn ZXQtPmluZGV4LCBzbG90LCB0YXJnZXQtPnByZXNlbnQsDQo+ICsgICAgICAgICAgICAgICB0YXJn ZXQtPngsIHRhcmdldC0+eSwgdGFyZ2V0LT56KTsNCj4gKw0KPiArICAgICAgIHN3aXRjaCAoY3Vy cmVudF9zdGF0ZSkgew0KPiArICAgICAgIGNhc2UgQVhJT01fVEFSR0VUX1NUQVRFX05PVF9QUkVT RU5UOg0KPiArICAgICAgIGNhc2UgQVhJT01fVEFSR0VUX1NUQVRFX1BST1g6DQo+ICsgICAgICAg ICAgICAgICBpZiAoIXRhcmdldF9wcmV2X3N0YXRlLT5pbnNlcnQpDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgdXBkYXRlID0gdHJ1ZTsNCj4gKyAg ICAgICAgICAgICAgIHRhcmdldF9wcmV2X3N0YXRlLT5pbnNlcnQgPSBmYWxzZTsNCj4gKyAgICAg ICAgICAgICAgIGlucHV0X210X3Nsb3QoaW5wdXRfZGV2LCBzbG90KTsNCj4gKw0KPiArICAgICAg ICAgICAgICAgaWYgKCFzbG90KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9yZXBv cnRfa2V5KGlucHV0X2RldiwgQlROX1RPVUNILCAwKTsNCj4gKw0KPiArICAgICAgICAgICAgICAg aW5wdXRfbXRfcmVwb3J0X3Nsb3RfaW5hY3RpdmUoaW5wdXRfZGV2KTsNCj4gKyAgICAgICAgICAg ICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgKiBtYWtlIHN1cmUgdGhlIHByZXZpb3VzIGNvb3Jk aW5hdGVzIGFyZQ0KPiArICAgICAgICAgICAgICAgICogYWxsIG9mZiBzY3JlZW4gd2hlbiB0aGUg ZmluZ2VyIGNvbWVzIGJhY2sNCj4gKyAgICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAg ICAgdGFyZ2V0LT54ID0gNjU1MzU7DQo+ICsgICAgICAgICAgICAgICB0YXJnZXQtPnkgPSA2NTUz NTsNCj4gKyAgICAgICAgICAgICAgIHRhcmdldC0+eiA9IEFYSU9NX1BST1hfTEVWRUw7DQo+ICsg ICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICBjYXNlIEFYSU9NX1RBUkdFVF9TVEFURV9I T1ZFUjoNCj4gKyAgICAgICBjYXNlIEFYSU9NX1RBUkdFVF9TVEFURV9UT1VDSElORzoNCj4gKyAg ICAgICAgICAgICAgIHRhcmdldF9wcmV2X3N0YXRlLT5pbnNlcnQgPSB0cnVlOw0KPiArICAgICAg ICAgICAgICAgdXBkYXRlID0gdHJ1ZTsNCj4gKyAgICAgICAgICAgICAgIGlucHV0X210X3Nsb3Qo aW5wdXRfZGV2LCBzbG90KTsNCj4gKyAgICAgICAgICAgICAgIGlucHV0X3JlcG9ydF9hYnMoaW5w dXRfZGV2LCBBQlNfTVRfVFJBQ0tJTkdfSUQsIHNsb3QpOw0KPiArICAgICAgICAgICAgICAgaW5w dXRfcmVwb3J0X2FicyhpbnB1dF9kZXYsIEFCU19NVF9QT1NJVElPTl9YLCB0YXJnZXQtPngpOw0K PiArICAgICAgICAgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dF9kZXYsIEFCU19YLCB0YXJn ZXQtPngpOw0KPiArICAgICAgICAgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dF9kZXYsIEFC U19NVF9QT1NJVElPTl9ZLCB0YXJnZXQtPnkpOw0KPiArICAgICAgICAgICAgICAgaW5wdXRfcmVw b3J0X2FicyhpbnB1dF9kZXYsIEFCU19ZLCB0YXJnZXQtPnkpOw0KPiArDQo+ICsgICAgICAgICAg ICAgICBpZiAoY3VycmVudF9zdGF0ZSA9PSBBWElPTV9UQVJHRVRfU1RBVEVfVE9VQ0hJTkcpIHsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dF9kZXYsIEFC U19NVF9ESVNUQU5DRSwgMCk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3JlcG9y dF9hYnMoaW5wdXRfZGV2LCBBQlNfRElTVEFOQ0UsIDApOw0KPiArICAgICAgICAgICAgICAgICAg ICAgICBpbnB1dF9yZXBvcnRfYWJzKGlucHV0X2RldiwgQUJTX01UX1BSRVNTVVJFLCB0YXJnZXQt PnopOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9yZXBvcnRfYWJzKGlucHV0X2Rl diwgQUJTX1BSRVNTVVJFLCB0YXJnZXQtPnopOw0KPiArICAgICAgICAgICAgICAgfSBlbHNlIHsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dF9kZXYsIEFC U19NVF9ESVNUQU5DRSwgLXRhcmdldC0+eik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlu cHV0X3JlcG9ydF9hYnMoaW5wdXRfZGV2LCBBQlNfRElTVEFOQ0UsIC10YXJnZXQtPnopOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9yZXBvcnRfYWJzKGlucHV0X2RldiwgQUJTX01U X1BSRVNTVVJFLCAwKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfcmVwb3J0X2Fi cyhpbnB1dF9kZXYsIEFCU19QUkVTU1VSRSwgMCk7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIGlmICghc2xvdCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg aW5wdXRfcmVwb3J0X2tleShpbnB1dF9kZXYsIEJUTl9UT1VDSCwgKGN1cnJlbnRfc3RhdGUgPT0N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBWElPTV9UQVJHRVRf U1RBVEVfVE9VQ0hJTkcpKTsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGRl ZmF1bHQ6DQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAg ICAgICB0YXJnZXRfcHJldl9zdGF0ZS0+c3RhdGUgPSBjdXJyZW50X3N0YXRlOw0KPiArICAgICAg IHRhcmdldF9wcmV2X3N0YXRlLT54ID0gdGFyZ2V0LT54Ow0KPiArICAgICAgIHRhcmdldF9wcmV2 X3N0YXRlLT55ID0gdGFyZ2V0LT55Ow0KPiArICAgICAgIHRhcmdldF9wcmV2X3N0YXRlLT56ID0g dGFyZ2V0LT56Ow0KPiArDQo+ICsgICAgICAgcmV0dXJuIHVwZGF0ZTsNCj4gK30NCj4gKw0KPiAr LyoNCj4gKyAqIFU0MSBpcyB0aGUgb3V0cHV0IHJlcG9ydCBvZiB0aGUgMkQgQ1RTIGFuZCBjb250 YWlucyB0aGUgc3RhdHVzIG9mIHRhcmdldHMNCj4gKyAqIChpbmNsdWRpbmcgY29udGFjdHMgYW5k IHByZS1jb250YWN0cykgYWxvbmcgd2l0aCB0aGVpciBYLFksWiB2YWx1ZXMuDQo+ICsgKiBXaGVu IGEgdGFyZ2V0IGhhcyBiZWVuIHJlbW92ZWQgKG5vIGxvbmdlciBkZXRlY3RlZCksDQo+ICsgKiB0 aGUgY29ycmVzcG9uZGluZyBYLFksWiB2YWx1ZXMgd2lsbCBiZSB6ZXJvZWQuDQo+ICsgKi8NCj4g K3N0YXRpYyBib29sIGF4aW9tX3Byb2Nlc3NfdTQxX3JlcG9ydChzdHJ1Y3QgYXhpb21fZGF0YSAq dHMsIGNoYXIgKnJ4X2J1ZikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgYXhpb21fdGFyZ2V0X3Jl cG9ydCB0YXJnZXQ7DQo+ICsgICAgICAgYm9vbCB1cGRhdGVfZG9uZSA9IGZhbHNlOw0KPiArICAg ICAgIHUxNiB0YXJnZXRfc3RhdHVzOw0KPiArICAgICAgIHUzMiBpOw0KPiArDQo+ICsgICAgICAg dGFyZ2V0X3N0YXR1cyA9ICgocnhfYnVmWzFdKSB8IChyeF9idWZbMl0gPDwgOCkpOw0KPiArDQo+ ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFYSU9NX1U0MV9NQVhfVEFSR0VUUzsgaSsrKSB7DQo+ ICsgICAgICAgICAgICAgICBjaGFyIHRhcmdldF9zdGVwID0gaSAqIDQ7DQo+ICsNCj4gKyAgICAg ICAgICAgICAgIHRhcmdldC5pbmRleCA9IGk7DQo+ICsgICAgICAgICAgICAgICB0YXJnZXQucHJl c2VudCA9ICgodGFyZ2V0X3N0YXR1cyAmICgxIDw8IGkpKSAhPSAwKSA/IDEgOiAwOw0KPiArICAg ICAgICAgICAgICAgdGFyZ2V0LnggPSAocnhfYnVmWyh0YXJnZXRfc3RlcCArIDMpXSB8IChyeF9i dWZbdGFyZ2V0X3N0ZXAgKyA0XSA8PCA4KSk7DQo+ICsgICAgICAgICAgICAgICB0YXJnZXQueSA9 IChyeF9idWZbKHRhcmdldF9zdGVwICsgNSldIHwgKHJ4X2J1Zlt0YXJnZXRfc3RlcCArIDZdIDw8 IDgpKTsNCj4gKyAgICAgICAgICAgICAgIHRhcmdldC56ID0gKHM4KShyeF9idWZbaSArIDQzXSk7 DQo+ICsgICAgICAgICAgICAgICB1cGRhdGVfZG9uZSB8PSBheGlvbV9wcm9jZXNzX3U0MV9yZXBv cnRfdGFyZ2V0KHRzLCAmdGFyZ2V0KTsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1 cm4gdXBkYXRlX2RvbmU7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBVNDYgcmVwb3J0IGNvbnRh aW5zIGEgbG93IGxldmVsIG1lYXN1cmVtZW50IGRhdGEgZ2VuZXJhdGVkIGJ5IHRoZSBDRFMNCj4g KyAqIGFsZ29yaXRobXMgZnJvbSB0aGUgQVVYIGNoYW5uZWxzLiBUaGlzIGluZm9ybWF0aW9uIGlz IHVzZWZ1bCB3aGVuIHR1bmluZw0KPiArICogbXVsdGktcHJlc3MgdG8gYXNzZXNzIG1lY2hhbmlj YWwgY29uc2lzdGVuY3kgaW4gdGhlIHVuaXQncyBjb25zdHJ1Y3Rpb24uDQo+ICsgKi8NCj4gK3N0 YXRpYyB2b2lkIGF4aW9tX3Byb2Nlc3NfdTQ2X3JlcG9ydChzdHJ1Y3QgYXhpb21fZGF0YSAqdHMs IGNoYXIgKnJ4X2J1ZikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgaW5wdXRfZGV2ICppbnB1dF9k ZXYgPSB0cy0+aW5wdXRfZGV2Ow0KPiArICAgICAgIHUzMiBldmVudF92YWx1ZTsNCj4gKyAgICAg ICB1MTYgYXV4X3ZhbHVlOw0KPiArICAgICAgIHUzMiBpID0gMDsNCj4gKw0KPiArICAgICAgIGZv ciAoaSA9IDA7IGkgPCBBWElPTV9VNDZfQVVYX0NIQU5ORUxTOyBpKyspIHsNCj4gKyAgICAgICAg ICAgICAgIGNoYXIgdGFyZ2V0X3N0ZXAgPSBpICogMjsNCj4gKw0KPiArICAgICAgICAgICAgICAg YXV4X3ZhbHVlID0gKChyeF9idWZbdGFyZ2V0X3N0ZXAgKyAyXSA8PCA4KSB8IChyeF9idWZbdGFy Z2V0X3N0ZXAgKyAxXSkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBBWElPTV9V NDZfQVVYX01BU0s7DQo+ICsgICAgICAgICAgICAgICBldmVudF92YWx1ZSA9IChpIDw8IDE2KSB8 IChhdXhfdmFsdWUpOw0KPiArICAgICAgICAgICAgICAgaW5wdXRfZXZlbnQoaW5wdXRfZGV2LCBF Vl9NU0MsIE1TQ19SQVcsIGV2ZW50X3ZhbHVlKTsNCj4gKyAgICAgICB9DQo+ICt9DQo+ICsNCj4g Ky8qDQo+ICsgKiBWYWxpZGF0ZXMgdGhlIGNyYyBhbmQgZGVtdWx0aXBsZXhlcyB0aGUgYXhpb20g cmVwb3J0cyB0byB0aGUgYXBwcm9wcmlhdGUNCj4gKyAqIHJlcG9ydCBoYW5kbGVyDQo+ICsgKi8N Cj4gK3N0YXRpYyBpbnQgYXhpb21faGFuZGxlX2V2ZW50cyhzdHJ1Y3QgYXhpb21fZGF0YSAqdHMp DQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2ID0gdHMtPmlucHV0 X2RldjsNCj4gKyAgICAgICBjaGFyICpyZXBvcnRfZGF0YSA9IHRzLT5yeF9idWY7DQo+ICsgICAg ICAgY2hhciByZXBvcnRfbGVuOw0KPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHRzLT5k ZXY7DQo+ICsgICAgICAgdTE2IGNyY19yZXBvcnQ7DQo+ICsgICAgICAgdTE2IGNyY19jYWxjOw0K PiArICAgICAgIGludCBlcnJvcjsNCj4gKw0KPiArICAgICAgIGVycm9yID0gYXhpb21faTJjX3Jl YWQodHMtPmNsaWVudCwgQVhJT01fUkVQT1JUX1VTQUdFX0lELCAwLCAmcmVwb3J0X2xlbiwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZXBvcnRfbGVuKSk7DQoNCkkg a25vdyB0aGF0IEkgdG9sZCB5b3UgaXQgd291bGQgYmUgYmV0dGVyIHRvIGRvIHRoZSByZWFkIHJl cG9ydCBpbiAyIA0KcGhhc2VzLCBidXQgd2Ugc2hvdWxkIGhhdmUgc3RpY2sgdG8gVG91Y2huZXRp eCByZWNvbW1lbmRhdGlvbiB0aGF0IGlzIHRvIA0KcmVhZCB0aGUgd2hvbGUgcmVwb3J0IGV2ZW4g aWYgaXQncyBwYWRkZWQgd2l0aCB6ZXJvZXMuDQpUaGlzIGlzIHRvIGF2b2lkIHRoZSAyNTAgdXNl Y3MgZGVsYXkgYWZ0ZXIgdGhlIHJlYWQgb2YgdGhlIHJlcG9ydCBsZW5ndGguDQoNCj4gKyAgICAg ICBpZiAoZXJyb3IpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7DQo+ICsNCj4gKyAg ICAgICByZXBvcnRfbGVuID0gKHJlcG9ydF9sZW4gJiBBWElPTV9DT01NU19SRVBPUlRfTEVOX01B U0spIDw8IDE7DQo+ICsgICAgICAgaWYgKCFyZXBvcnRfbGVuKSB7DQo+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgIlplcm8gbGVuZ3RoIHJlcG9ydCBkaXNjYXJkZWRcbiIpOw0KPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FTk9EQVRBOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAg IGVycm9yID0gYXhpb21faTJjX3JlYWQodHMtPmNsaWVudCwgQVhJT01fUkVQT1JUX1VTQUdFX0lE LCAwLCByZXBvcnRfZGF0YSwgcmVwb3J0X2xlbik7DQo+ICsgICAgICAgaWYgKGVycm9yKQ0KPiAr ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOw0KPiArDQo+ICsgICAgICAgLyogVmFsaWRhdGUg dGhlIHJlcG9ydCBDUkMgKi8NCj4gKyAgICAgICBjcmNfcmVwb3J0ID0gKHJlcG9ydF9kYXRhW3Jl cG9ydF9sZW4gLSAxXSA8PCA4KSB8IChyZXBvcnRfZGF0YVtyZXBvcnRfbGVuIC0gMl0pOw0KPiAr ICAgICAgIC8qIExlbmd0aCBpcyBpbiAxNiBiaXQgd29yZHMgYW5kIHJlbW92ZSB0aGUgc2l6ZSBv ZiB0aGUgQ1JDMTYgaXRzZWxmICovDQo+ICsgICAgICAgY3JjX2NhbGMgPSBjcmMxNigwLCByZXBv cnRfZGF0YSwgKHJlcG9ydF9sZW4gLSAyKSk7DQo+ICsNCj4gKyAgICAgICBpZiAoY3JjX2NhbGMg IT0gY3JjX3JlcG9ydCkgew0KPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICJDUkMgbWlzbWF0Y2ghIEV4cGVjdGVkOiAlI3gsIENhbGN1bGF0 ZWQgQ1JDOiAlI3guXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBjcmNfcmVwb3J0LCBj cmNfY2FsYyk7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgICB9 DQo+ICsNCj4gKyAgICAgICBzd2l0Y2ggKHJlcG9ydF9kYXRhWzFdKSB7DQo+ICsgICAgICAgY2Fz ZSBBWElPTV9VU0FHRV8yRENUU19SRVBPUlRfSUQ6DQo+ICsgICAgICAgICAgICAgICBpZiAoYXhp b21fcHJvY2Vzc191NDFfcmVwb3J0KHRzLCAmcmVwb3J0X2RhdGFbMV0pKSB7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGlucHV0X210X3N5bmNfZnJhbWUoaW5wdXRfZGV2KTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaW5wdXRfc3luYyhpbnB1dF9kZXYpOw0KPiArICAgICAgICAgICAg ICAgfQ0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICBjYXNlIEFYSU9N X1VTQUdFXzJBVVhfUkVQT1JUX0lEOg0KPiArICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhbiBh dXggcmVwb3J0IChmb3JjZSkgKi8NCj4gKyAgICAgICAgICAgICAgIGF4aW9tX3Byb2Nlc3NfdTQ2 X3JlcG9ydCh0cywgJnJlcG9ydF9kYXRhWzFdKTsNCj4gKyAgICAgICAgICAgICAgIGlucHV0X210 X3N5bmMoaW5wdXRfZGV2KTsNCj4gKyAgICAgICAgICAgICAgIGlucHV0X3N5bmMoaW5wdXRfZGV2 KTsNCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAgICAgY2FzZSBBWElPTV9V U0FHRV8ySEJfUkVQT1JUX0lEOg0KPiArICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIGhlYXJ0 YmVhdCByZXBvcnQgKi8NCj4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgIGRlZmF1 bHQ6DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgICB9DQo+ICsN Cj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgYXhpb21faTJj X3BvbGwoc3RydWN0IGlucHV0X2RldiAqaW5wdXRfZGV2KQ0KPiArew0KPiArICAgICAgIHN0cnVj dCBheGlvbV9kYXRhICp0cyA9IGlucHV0X2dldF9kcnZkYXRhKGlucHV0X2Rldik7DQo+ICsNCj4g KyAgICAgICBheGlvbV9oYW5kbGVfZXZlbnRzKHRzKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGly cXJldHVybl90IGF4aW9tX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQo+ICt7DQo+ICsgICAg ICAgc3RydWN0IGF4aW9tX2RhdGEgKnRzID0gZGV2X2lkOw0KPiArDQo+ICsgICAgICAgYXhpb21f aGFuZGxlX2V2ZW50cyh0cyk7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGF4aW9tX3Jlc2V0KHN0cnVjdCBncGlvX2Rlc2MgKnJl c2V0X2dwaW8pDQo+ICt7DQo+ICsgICAgICAgZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHJlc2V0 X2dwaW8sIDEpOw0KPiArICAgICAgIHVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsNCj4gKyAgICAg ICBncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocmVzZXRfZ3BpbywgMCk7DQo+ICsgICAgICAgbXNs ZWVwKDExMCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgYXhpb21faTJjX3Byb2JlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2 ID0gJmNsaWVudC0+ZGV2Ow0KPiArICAgICAgIHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0X2RldjsN Cj4gKyAgICAgICBzdHJ1Y3QgYXhpb21fZGF0YSAqdHM7DQo+ICsgICAgICAgdTMyIHN0YXJ0dXBf ZGVsYXlfbXM7DQo+ICsgICAgICAgdTMyIHBvbGxfaW50ZXJ2YWw7DQo+ICsgICAgICAgaW50IHRh cmdldDsNCj4gKyAgICAgICBpbnQgZXJyb3I7DQo+ICsNCj4gKyAgICAgICB0cyA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqdHMpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIXRzKQ0K PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKyAgICAgICB0cy0+Y2xp ZW50ID0gY2xpZW50Ow0KPiArICAgICAgIGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHRzKTsN Cj4gKyAgICAgICB0cy0+ZGV2ID0gZGV2Ow0KPiArDQo+ICsgICAgICAgdHMtPnJlc2V0X2dwaW8g PSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYsICJyZXNldCIsIEdQSU9EX09VVF9ISUdIKTsN Cj4gKyAgICAgICBpZiAoSVNfRVJSKHRzLT5yZXNldF9ncGlvKSkNCj4gKyAgICAgICAgICAgICAg IHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUih0cy0+cmVzZXRfZ3BpbyksICJmYWls ZWQgdG8gZ2V0IHJlc2V0IEdQSU9cbiIpOw0KPiArDQo+ICsgICAgICAgaWYgKHRzLT5yZXNldF9n cGlvKQ0KPiArICAgICAgICAgICAgICAgYXhpb21fcmVzZXQodHMtPnJlc2V0X2dwaW8pOw0KPiAr DQo+ICsgICAgICAgdHMtPnZkZGkgPSBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwoZGV2LCAi VkRESSIpOw0KPiArICAgICAgIGlmICghSVNfRVJSKHRzLT52ZGRpKSkgew0KPiArICAgICAgICAg ICAgICAgZXJyb3IgPSByZWd1bGF0b3JfZW5hYmxlKHRzLT52ZGRpKTsNCj4gKyAgICAgICAgICAg ICAgIGlmIChlcnJvcikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJf cHJvYmUoJmNsaWVudC0+ZGV2LCBQVFJfRVJSKHRzLT52ZGRpKSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBlbmFibGUgVkRESSByZWd1 bGF0b3JcbiIpOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHRzLT52ZGRhID0gZGV2bV9y ZWd1bGF0b3JfZ2V0X29wdGlvbmFsKGRldiwgIlZEREEiKTsNCj4gKyAgICAgICBpZiAoIUlTX0VS Uih0cy0+dmRkYSkpIHsNCj4gKyAgICAgICAgICAgICAgIGVycm9yID0gcmVndWxhdG9yX2VuYWJs ZSh0cy0+dmRkYSk7DQo+ICsgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IFZEREEgcmVndWxhdG9y XG4iKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVndWxhdG9yX2Rpc2FibGUodHMtPnZk ZGkpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7DQo+ICsgICAgICAg ICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICBpZiAoIWRldmljZV9wcm9wZXJ0eV9yZWFkX3Uz MihkZXYsICJzdGFydHVwLXRpbWUtbXMiLCAmc3RhcnR1cF9kZWxheV9tcykpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIG1zbGVlcChzdGFydHVwX2RlbGF5X21zKTsNCj4gKyAgICAgICB9DQo+ ICsNCj4gKyAgICAgICBlcnJvciA9IGF4aW9tX2Rpc2NvdmVyKHRzKTsNCj4gKyAgICAgICBpZiAo ZXJyb3IpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIGVycm9y LCAiRmFpbGVkIHRvdWNoc2NyZWVuIGRpc2NvdmVyXG4iKTsNCj4gKw0KPiArICAgICAgIGlucHV0 X2RldiA9IGRldm1faW5wdXRfYWxsb2NhdGVfZGV2aWNlKHRzLT5kZXYpOw0KPiArICAgICAgIGlm ICghaW5wdXRfZGV2KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4g KyAgICAgICBpbnB1dF9kZXYtPm5hbWUgPSAiVG91Y2hOZXRpeCBheGlvbSBUb3VjaHNjcmVlbiI7 DQo+ICsgICAgICAgaW5wdXRfZGV2LT5waHlzID0gImlucHV0L2F4aW9tX3RzIjsNCj4gKw0KPiAr ICAgICAgIC8qIFNpbmdsZSBUb3VjaCAqLw0KPiArICAgICAgIGlucHV0X3NldF9hYnNfcGFyYW1z KGlucHV0X2RldiwgQUJTX1gsIDAsIDY1NTM1LCAwLCAwKTsNCj4gKyAgICAgICBpbnB1dF9zZXRf YWJzX3BhcmFtcyhpbnB1dF9kZXYsIEFCU19ZLCAwLCA2NTUzNSwgMCwgMCk7DQo+ICsNCj4gKyAg ICAgICAvKiBNdWx0aSBUb3VjaCAqLw0KPiArICAgICAgIC8qIE1pbiwgTWF4LCBGdXp6IChleHBl Y3RlZCBub2lzZSBpbiBweCwgdHJ5IDQ/KSBhbmQgRmxhdCAqLw0KPiArICAgICAgIGlucHV0X3Nl dF9hYnNfcGFyYW1zKGlucHV0X2RldiwgQUJTX01UX1BPU0lUSU9OX1gsIDAsIDY1NTM1LCAwLCAw KTsNCj4gKyAgICAgICAvKiBNaW4sIE1heCwgRnV6eiAoZXhwZWN0ZWQgbm9pc2UgaW4gcHgsIHRy eSA0PykgYW5kIEZsYXQgKi8NCj4gKyAgICAgICBpbnB1dF9zZXRfYWJzX3BhcmFtcyhpbnB1dF9k ZXYsIEFCU19NVF9QT1NJVElPTl9ZLCAwLCA2NTUzNSwgMCwgMCk7DQo+ICsgICAgICAgaW5wdXRf c2V0X2Fic19wYXJhbXMoaW5wdXRfZGV2LCBBQlNfTVRfVE9PTF9UWVBFLCAwLCBNVF9UT09MX01B WCwgMCwgMCk7DQo+ICsgICAgICAgaW5wdXRfc2V0X2Fic19wYXJhbXMoaW5wdXRfZGV2LCBBQlNf TVRfRElTVEFOQ0UsIDAsIDEyNywgMCwgMCk7DQo+ICsgICAgICAgaW5wdXRfc2V0X2Fic19wYXJh bXMoaW5wdXRfZGV2LCBBQlNfTVRfUFJFU1NVUkUsIDAsIDEyNywgMCwgMCk7DQo+ICsNCj4gKyAg ICAgICBpbnB1dF9zZXRfY2FwYWJpbGl0eShpbnB1dF9kZXYsIEVWX0tFWSwgQlROX1RPVUNIKTsN Cj4gKw0KPiArICAgICAgIC8qIFJlZ2lzdGVycyB0aGUgYXhpb20gZGV2aWNlIGFzIGEgdG91Y2hz Y3JlZW4gaW5zdGVhZCBvZiBhIG1vdXNlIHBvaW50ZXIgKi8NCj4gKyAgICAgICBlcnJvciA9IGlu cHV0X210X2luaXRfc2xvdHMoaW5wdXRfZGV2LCBBWElPTV9VNDFfTUFYX1RBUkdFVFMsIElOUFVU X01UX0RJUkVDVCk7DQo+ICsgICAgICAgaWYgKGVycm9yKQ0KPiArICAgICAgICAgICAgICAgcmV0 dXJuIGVycm9yOw0KPiArDQo+ICsgICAgICAgLyogRW5hYmxlcyB0aGUgcmF3IGRhdGEgZm9yIHVw IHRvIDQgZm9yY2UgY2hhbm5lbHMgdG8gYmUgc2VudCB0byB0aGUgaW5wdXQgc3Vic3lzdGVtICov DQo+ICsgICAgICAgc2V0X2JpdChFVl9SRUwsIGlucHV0X2Rldi0+ZXZiaXQpOw0KPiArICAgICAg IHNldF9iaXQoRVZfTVNDLCBpbnB1dF9kZXYtPmV2Yml0KTsNCj4gKyAgICAgICAvKiBEZWNsYXJl IHRoYXQgd2Ugc3VwcG9ydCAiUkFXIiBNaXNjZWxsYW5lb3VzIGV2ZW50cyAqLw0KPiArICAgICAg IHNldF9iaXQoTVNDX1JBVywgaW5wdXRfZGV2LT5tc2NiaXQpOw0KPiArDQo+ICsgICAgICAgdHMt PmlucHV0X2RldiA9IGlucHV0X2RldjsNCj4gKyAgICAgICBpbnB1dF9zZXRfZHJ2ZGF0YSh0cy0+ aW5wdXRfZGV2LCB0cyk7DQo+ICsNCj4gKyAgICAgICAvKiBFbnN1cmUgdGhhdCBhbGwgcmVwb3J0 cyBhcmUgaW5pdGlhbGlzZWQgdG8gbm90IGJlIHByZXNlbnQuICovDQo+ICsgICAgICAgZm9yICh0 YXJnZXQgPSAwOyB0YXJnZXQgPCBBWElPTV9VNDFfTUFYX1RBUkdFVFM7IHRhcmdldCsrKQ0KPiAr ICAgICAgICAgICAgICAgdHMtPnRhcmdldHNbdGFyZ2V0XS5zdGF0ZSA9IEFYSU9NX1RBUkdFVF9T VEFURV9OT1RfUFJFU0VOVDsNCj4gKw0KPiArICAgICAgIGVycm9yID0gaW5wdXRfcmVnaXN0ZXJf ZGV2aWNlKGlucHV0X2Rldik7DQo+ICsgICAgICAgaWYgKGVycm9yKQ0KPiArICAgICAgICAgICAg ICAgcmV0dXJuIGRldl9lcnJfcHJvYmUodHMtPmRldiwgZXJyb3IsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHJlZ2lzdGVyIHdpdGggSW5wdXQgU3Vi LXN5c3RlbS5cbiIpOw0KPiArDQo+ICsgICAgICAgZXJyb3IgPSBkZXZtX3JlcXVlc3RfdGhyZWFk ZWRfaXJxKGRldiwgY2xpZW50LT5pcnEsIE5VTEwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF4aW9tX2lycSwgSVJRRl9PTkVTSE9ULCBkZXZfbmFtZShkZXYp LCB0cyk7DQo+ICsgICAgICAgaWYgKGVycm9yIDwgMCkgew0KPiArICAgICAgICAgICAgICAgZGV2 X3dhcm4oZGV2LCAiUmVxdWVzdCBpcnEgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gcG9sbGluZyBt b2RlIik7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGVycm9yID0gaW5wdXRfc2V0dXBfcG9sbGlu ZyhpbnB1dF9kZXYsIGF4aW9tX2kyY19wb2xsKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChlcnJv cikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUodHMtPmRl diwgZXJyb3IsICJVbmFibGUgdG8gc2V0IHVwIHBvbGxpbmcgbW9kZVxuIik7DQo+ICsNCj4gKyAg ICAgICAgICAgICAgIGlmICghZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKHRzLT5kZXYsICJwb2xs LWludGVydmFsIiwgJnBvbGxfaW50ZXJ2YWwpKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBp bnB1dF9zZXRfcG9sbF9pbnRlcnZhbChpbnB1dF9kZXYsIHBvbGxfaW50ZXJ2YWwpOw0KPiArICAg ICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9zZXRfcG9s bF9pbnRlcnZhbChpbnB1dF9kZXYsIFBPTExfSU5URVJWQUxfREVGQVVMVF9NUyk7DQo+ICsgICAg ICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBheGlvbV9pMmNfaWRfdGFibGVbXSA9IHsNCj4gKyAgICAg ICB7ICJheDU0YSIgfSwNCj4gKyAgICAgICB7fSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RB QkxFKGkyYywgYXhpb21faTJjX2lkX3RhYmxlKTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgYXhpb21faTJjX29mX21hdGNoW10gPSB7DQo+ICsgICAgICAgeyAuY29t cGF0aWJsZSA9ICJ0b3VjaG5ldGl4LGF4NTRhIiwgfSwNCj4gKyAgICAgICB7IH0NCj4gK307DQo+ ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBheGlvbV9pMmNfb2ZfbWF0Y2gpOw0KPiArDQo+ICtz dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgYXhpb21faTJjX2RyaXZlciA9IHsNCj4gKyAgICAgICAu ZHJpdmVyID0gew0KPiArICAgICAgICAgICAgICAgICAgLm5hbWUgPSAiYXhpb20iLA0KPiArICAg ICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gYXhpb21faTJjX29mX21hdGNoLA0KPiAr ICAgICAgIH0sDQo+ICsgICAgICAgLmlkX3RhYmxlID0gYXhpb21faTJjX2lkX3RhYmxlLA0KPiAr ICAgICAgIC5wcm9iZSA9IGF4aW9tX2kyY19wcm9iZSwNCj4gK307DQo+ICttb2R1bGVfaTJjX2Ry aXZlcihheGlvbV9pMmNfZHJpdmVyKTsNCj4gK01PRFVMRV9BVVRIT1IoIkJhcnQgUHJlc2NvdHQg PGJhcnRwQGJhYXNoZWVwLmNvLnVrPiIpOw0KPiArTU9EVUxFX0FVVEhPUigiUGVkcm8gVG9ycnVl bGxhIDxwZWRyby50b3JydWVsbGFAdG91Y2huZXRpeC5jb20+Iik7DQo+ICtNT0RVTEVfQVVUSE9S KCJNYXJrIFNhdHRlcnRod2FpdGUgPG1hcmsuc2F0dGVydGh3YWl0ZUB0b3VjaG5ldGl4LmNvbT4i KTsNCj4gK01PRFVMRV9BVVRIT1IoIkhhbm5haCBSb3NzaXRlciA8aGFubmFoLnJvc3NpdGVyQHRv dWNobmV0aXguY29tPiIpOw0KPiArTU9EVUxFX0FVVEhPUigiS2FtZWwgQm91aGFyYSA8a2FtZWwu Ym91aGFyYUBib290bGluLmNvbT4iKTsNCj4gK01PRFVMRV9ERVNDUklQVElPTigiVG91Y2hOZXRp eCBheGlvbSB0b3VjaHNjcmVlbiBJMkMgYnVzIGRyaXZlciIpOw0KPiArTU9EVUxFX0xJQ0VOU0Uo IkdQTCIpOw0KPiAtLQ0KPiAyLjI1LjENCj4NCg0K