Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp4580708rwb; Tue, 8 Aug 2023 10:26:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGRf78Q213dD2DEIY852RAPJUnyCPYVUwX/wsM7vFpBG+S9t9WICLUg9eZVemSdq65i7NHk X-Received: by 2002:aca:1706:0:b0:3a7:4b9a:43c2 with SMTP id j6-20020aca1706000000b003a74b9a43c2mr419338oii.13.1691515570731; Tue, 08 Aug 2023 10:26:10 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1691515570; cv=pass; d=google.com; s=arc-20160816; b=eqqo6FDeOIj8VcdGuridkjKRAR/l5yfskaUnoTLRMsrS0VV6OBBU4hRZfj0+lYLUFP RxhaawVLNqSwx2zcpafcJqFdSKRKOmmmmXjMVKbTa5qPAqEL0UwYHU/ua5oqo5b+lzj0 tOGLTkGfkGFneozdIYryKWsBTpSlYIWK/lbUvxxEIRMafaMfJ2JyouV+LpMgPI/Ys7+f JWQM9oV8i+eVyUHpn1Gaj4ZCORgf/LVtn/KXKMLJXFdPT4qv8llLHKPR0G+8pYLknAjC sHbrmXtPevGtmBuZt9sB4X4ncPf0FcT/8cIzWGFGtwfG+h0gHrMzjHiVOPV1EgmOQES3 VZXg== 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:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature; bh=x6vcn+7pUrdYCr/sX15aqnEauZ2wSHzw+adg/VYmBKM=; fh=6h8sCOzsHN91gFokT9+/SXj1hfw5Bcz4arIPHgkww8A=; b=x2mF1eFhDLInxVI89TpNDEu6AChue0UNUrLld2FmDhRPERQkbQQYEDU6GfMXy80tpA O6vdBj+MmELN7d0QJAa1YREdCcHlj7Q53LcyrqpYRPZynUwsE9hIy701/+oFvkevgkLA bC0DJVVuLOpGKj4Rn6RzH/nO9KRwzaYXnfc5ac1iMqlBotfPyauSqb6u9exeitsSsHPx 3ukNEInbe4mfPwNEOnH/Kv55qFdu4xNELgECGfLZpZHas2kmWMMVa/hEABE8+g1+UGu0 q2SE9B+A00f/p9eBibiyqKE5c1+NqesTLdpPE4gYmXJrQPOZ2iqk1OI0N2aASJadNQNA z+WA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@csgroup.eu header.s=selector2 header.b="fT+o2/WA"; arc=pass (i=1 spf=pass spfdomain=csgroup.eu dkim=pass dkdomain=csgroup.eu dmarc=pass fromdomain=csgroup.eu); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=csgroup.eu Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e5-20020a17090a9a8500b0025c287f697asi7731589pjp.35.2023.08.08.10.25.50; Tue, 08 Aug 2023 10:26:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@csgroup.eu header.s=selector2 header.b="fT+o2/WA"; arc=pass (i=1 spf=pass spfdomain=csgroup.eu dkim=pass dkdomain=csgroup.eu dmarc=pass fromdomain=csgroup.eu); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=csgroup.eu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230142AbjHHPtG (ORCPT + 99 others); Tue, 8 Aug 2023 11:49:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229695AbjHHPrf (ORCPT ); Tue, 8 Aug 2023 11:47:35 -0400 Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on2049.outbound.protection.outlook.com [40.107.12.49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EEB4422F; Tue, 8 Aug 2023 08:41:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FXsiWah6D+8NDZGigLCcZnPZC9pBMnBz6jSuJ4W4+hc8z61bonbzBMqBISr6tiRKjUXbVb/NGOouan1M57yaFR4Qv4IdYyfpDdYEeEyLtew3yl/FzoMI5gkKGP0vkZ/9XlFCJZWmSX26CpkBp/QUCJ3NTWJ3MeuhS6cQBqHDKEld8JRVOEwaFbFJcHmS+MmtSF42o4iqoE2JmbQyVgKHJ6NZ8h/2Ck/vbn5xPj2aJXCkvvyiZdSBxGlLLTHgtSdGvyZaep9TLga6PWxa+1tPwlVLikPftVhTMWFv2lXzHwn1WRcSliJDrvK2bZVsBEO1KLyqF8wz7NS99Co5JyGKtg== 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=x6vcn+7pUrdYCr/sX15aqnEauZ2wSHzw+adg/VYmBKM=; b=AKnAi/aRW2NYM3RxbeOb+zuJaS/DP1JPqHwcKDgjr7DrogLGhQ0BrmBlcSRUycZbQ6WJeMmQP5brRDowfq90UdcKhBLTn0auv7YA4lzRFkm7gA0yWRfz+ADu9M3pFYru7gaNn+TYwuU+VvjNd8/UM6mhkYNdWDOmYt866Gk5hvhnCoW4kkOqSODNMyjx8qYcE3v2cCIRs8MVyLrD8hyt93QiWNv0wqDqOYI+WH8puv2/jS6OsiMbHw4BGpP6/HXOJKmIqOkXQ7wO3z3cX0qVHjeheY9u8QKTBU8vVQQbSHpxI+6/jL1eutW/1AM5zDB+n5GI6MEQGsinBtxa4Sgg3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=csgroup.eu; dmarc=pass action=none header.from=csgroup.eu; dkim=pass header.d=csgroup.eu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csgroup.eu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x6vcn+7pUrdYCr/sX15aqnEauZ2wSHzw+adg/VYmBKM=; b=fT+o2/WApCfMMIpq666/iLa2FUdPktitmbytRc+onKANg+TjpmREAMFD52e8yj9u2x4R4Gg3Es8jmJRTso98z1D/nJl/M3KSDJ+3CGvZf5RhvbIo4/xa/ewWDwjsRzuBJHC+2kk5zfkyI5/5XphEPONQvYX5+uGzmdaHQDkw1Yb3MyK0CLNdYZTjvYwyDkBT1AdErvpml2Visg3Ff0+7qYgP2IiE4trW5h5ByV04UT+dij4mtFyXNL/7a8b17WTfTLKeuLhEisWdYalhGNzICwQrD7pE4ortfnHkFxw5/oxx5sjKucf1t5E+z4rw3kfZMpgrGO1WEvSp7EcGzeobUw== Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:31::15) by PAZP264MB2415.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:1f1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.27; Tue, 8 Aug 2023 08:15:43 +0000 Received: from MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::2820:d3a6:1cdf:c60e]) by MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM ([fe80::2820:d3a6:1cdf:c60e%6]) with mapi id 15.20.6652.026; Tue, 8 Aug 2023 08:15:42 +0000 From: Christophe Leroy To: Herve Codina , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Lee Jones , Linus Walleij , Qiang Zhao , Li Yang , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Shengjiu Wang , Xiubo Li , Fabio Estevam , Nicolin Chen , Randy Dunlap CC: "netdev@vger.kernel.org" , "linuxppc-dev@lists.ozlabs.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-gpio@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "alsa-devel@alsa-project.org" , Thomas Petazzoni Subject: Re: [PATCH v2 23/28] net: wan: framer: Add support for the Lantiq PEF2256 framer Thread-Topic: [PATCH v2 23/28] net: wan: framer: Add support for the Lantiq PEF2256 framer Thread-Index: AQHZv9JslSYfTvp+JEWe9yF8Sx3cQ6/gIWYA Date: Tue, 8 Aug 2023 08:15:42 +0000 Message-ID: <6bc38a0f-6f5f-b234-f651-7c4c623975e2@csgroup.eu> References: <20230726150225.483464-1-herve.codina@bootlin.com> <20230726150225.483464-24-herve.codina@bootlin.com> In-Reply-To: <20230726150225.483464-24-herve.codina@bootlin.com> Accept-Language: fr-FR, en-US Content-Language: fr-FR X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=csgroup.eu; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MRZP264MB2988:EE_|PAZP264MB2415:EE_ x-ms-office365-filtering-correlation-id: a7b857cf-038d-4d9e-79f5-08db97e7a8d9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /Wxf+0N9QKCZvI3ve9SR3ejOzbBHRBAaGtV7SjNqVVgt+cZbbBXg3sg3Zxf6pZ1UQPHOYn91XKbZ1R/WvssoPDKgqYosoVT6L0rWxGryIpJpbuLftF/DY9jAj9S0NiOPFpGVKVrfj8VywBiXM3+3aZYsoWDkWYt6myimeOeTeAMRSaegbvTrcTNpiuefbHlZEXGg1ywK5RWb61vozoiA9eiWkc5ApXX7/yGTvR8cQcV4/NF2bG4+CmGq939zIDAed4v9OmqauMkTk64HHXB6RWlu4FUeZOct1Z/wDnx484hM2Wble+jSscJFHW3ee69mkQ6jJBdRIzsiEx5I++thMDyVsPExuQ8sR0q4BTgR10qFycpLEbEcv6z3oOe2C28v8SB8WWtoZ3yyPYkGhC1vhluM3lPW7VHYq0I0adBtL2HMK1G8jzd62tqBgVUcoDAKJU1xZ58rbGYW1DY9qmmtgcDWlaRLgfaTz9jpSGCl2sYzb0fUYDAiTFqoeR9fudxbalGi1BaiJyuW7Mja8IPmTf5nvqaDDGhZH5Pk218DZQG7hJFHx4NywwwmxRaJk13CKXSbN/hjvTfOLj1axmM3PYHHbIfwyI1fmhSer7I/eNZgJdTypQAzan702GSH8kVLEFMfW2Dtp3iSkkRuud7EnrNVwxkyocWHGY5yxsydK95I1Q3tswC9qcQHD55YE4PcYyqLKuHubicMVZgUvFagpbMExLDh0FH+cXatZ0VpROyD5YqgXVmfee/HCWO8eD47tOgoXnO/eyq7FmhXAPluQgPK7pAit9wXZZF7mSVX1OU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230028)(136003)(346002)(396003)(39850400004)(366004)(376002)(186006)(1800799003)(90021799007)(90011799007)(451199021)(2616005)(26005)(6506007)(6512007)(71200400001)(6486002)(31686004)(122000001)(921005)(478600001)(110136005)(54906003)(38100700002)(36756003)(66476007)(66556008)(66946007)(91956017)(66446008)(76116006)(64756008)(4326008)(316002)(41300700001)(66574015)(8936002)(8676002)(5660300002)(38070700005)(7406005)(44832011)(7416002)(30864003)(2906002)(83380400001)(31696002)(86362001)(43740500002)(45980500001)(579004)(559001)(309714004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TUsrM2VXM0ladENsSGZ5ZGp6WEdpT1J1SVFPRlNvQUVaTDkxWVBnaTlCN3R5?= =?utf-8?B?anFnb0xUK085bEtoOE1jSk85ZlVmQXdObkR1dEt4K3hSWlNLL2FKWFF6N2Nv?= =?utf-8?B?VWFKbDBqdVorZWd2VzArMDFXUFNOSEc2cDM2ZWtFQVVrRUJFM01rUkgrekJQ?= =?utf-8?B?NlpidllWN0I5d0FsRjhTclZKMHBTL0RJRnNmS1pjaHNzNm1sbTBnMFRrdlV5?= =?utf-8?B?REtKS3FMbmF5UDlzam5jZHBmQVU0bnZmWWxOcUNOY3loblhGUUJXLzlsSHMw?= =?utf-8?B?WldpSzNsUmVVTE5GMnRqdCtyRnlZVXcreHpkVldJVlJDZGEwb2FDOXV2a1hN?= =?utf-8?B?a2dpVzlXcCtlWHAzVGRmSk9MUU11a3dSOVhrTnRXRnN1NlJJSlQ4aWxKamJ2?= =?utf-8?B?ZmFXYU9xdXF4d3Z5Ym1rNjZ1SkJsTjYxVXRxcDhxSkZ6YjloZ2kzQnVQQzc2?= =?utf-8?B?aW9neFl2THNKb295WThJK0U0Mk9ROWMzcjA1ZndHZlBUNGtPQkxHcng5Mngz?= =?utf-8?B?UVdwNTlFWnFvMnJNc1ozRktMd2dpWXZuOVpwYVlWV1czbWpnWHVRdDFrM3cx?= =?utf-8?B?RVh5S2Z0a1dsUnEyZVR6M0psY2hKOEttOEdiMUtQc1FId0FxN3FGMmZjTXdW?= =?utf-8?B?Yit5MWVxbVRiUVVaZndveWJnSitUVUU1Z3o5MnpmWitvSlQ0NDFDNVVZZVBv?= =?utf-8?B?NjlkTklVYlVUUG5PTmZ0L2QwbXVNZGwrT2pGYjFqdEIvUUZJSnVlVUR5OG1z?= =?utf-8?B?dExkMEhyT1B5TTBiaWFnd21aOVJBU1ZVWGpRRUx2b0ZZT0ovVWFjTWQwM0Zx?= =?utf-8?B?diswQ0N3ejJqYkE3UXVTakJDczFVbmMxNG1aTG1Sbmt1V1pEQVlaTW12TEsv?= =?utf-8?B?WTl5Q2pwQStaUXpvbUFvQnhiMTJMSEdobktZeklhQjFCY21tNTRYckxOQVBX?= =?utf-8?B?RHZWZG5SMlpWaUM3YXhBRFZSTmhaY2lhUkhSbGdHcEpxNEVpZURha3ZQU3lF?= =?utf-8?B?bERIam9qcnY0aTBLZ2ZESzBvTXJVMDBNelpEZ0NXTjJ5TlQwbGtQZ2FSM1Zr?= =?utf-8?B?WEIrNXhqb1orRGpVbEovOG5PRjloT3Fqa1JxL0dwQUZBV1FCREpoRmd4Wm1K?= =?utf-8?B?aURvVURtSzRTTjlCa0pIeGM1UWJzK3JRZjQvQXBCbGJ3SG1OVlMvNjZCNkpP?= =?utf-8?B?amhSdysvZUpuNENRRUtkUEY0K3FObGYrYmkzdElJT0sxOUtTNkZqVVJOUzAv?= =?utf-8?B?ZzV2ZXhWMzNKSWVzQUVEOWtKVzM3Q2R4Z1NPQW1rT0xqdnE2SDJlODJldjhC?= =?utf-8?B?S0VmMUt5OWRIWURhT0tPcUZ5NjRDejNCUzFIaVlmUk00MVBnUGpnYWdwYlUr?= =?utf-8?B?Q2JIVU5UQ2hURHVKWWJXTEFYYTdSUzlrdWVBMXgyTXJFWlEwKzFKREFTU3B0?= =?utf-8?B?Q0ZETzZMSi9KZy9FSUltRG53ZG9YcXh6VkRtdjlkTk95UVRJbzVQVDZBdThU?= =?utf-8?B?dEY4RnoyU2NzeStBazFHV3pTS1ZlY0hzdUxUQm4veFMvY3lXQngxZFF0aGlu?= =?utf-8?B?bG5JZjJRRkp1b2FvcnpGQktBeGNUZDZ2QVJIdUxtSnRsZGs4OFlFK0JHblBw?= =?utf-8?B?SmRXWGdFd08xRnBCb24yM3VXRGpmb3ZjTU5GY2FsUlliU2FzRDhYVlZYY3dG?= =?utf-8?B?b0NoL2JXZVIzclZKQVVYc2hsL0NFUFFIcURUaTh0c3N4S1NMNGluYVpWcjY4?= =?utf-8?B?WDc3Ry9vK2hOTWlrTWNXdWVNc0s4QWhFQTR2YXlGOUhUQU82RUY4NHordFQ2?= =?utf-8?B?V3BMWkRrYXd6dlJRK0FCWU1aOXJ1Z3ZycEhMWVJKUFNCM2hrZmJWVm82SzFT?= =?utf-8?B?QUdlMkRpaWZETi9ONjNkSUFMR21OOEU3amNEcVVpcjJWYzBwRnkrU1Exc3RW?= =?utf-8?B?Q1JXMkNNemVCOHNPS2VXVUpCaHUvV2NLMEQ1dFAyRzRyeURaOG8vQTRZc2dV?= =?utf-8?B?clkzSEpabElKWjhObWdvZnB0QVo1emhxU1JyYXMwUmhTak52M0hhRjVWb08w?= =?utf-8?B?QjJEVjR1K3NPRTR6UitaWXdNek5yNlovWlFIQW5FNGoxcU0zRjVERkJmTklD?= =?utf-8?Q?dHCofnnr017OIYa2if9a9/hk7?= Content-Type: text/plain; charset="utf-8" Content-ID: <402817BA0D82494CA488BE9AB5307706@FRAP264.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: csgroup.eu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MRZP264MB2988.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: a7b857cf-038d-4d9e-79f5-08db97e7a8d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Aug 2023 08:15:42.8745 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9914def7-b676-4fda-8815-5d49fb3b45c8 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: EiJLYMnCv8xjtcdrklkcaxd8ZykU8J4ZkOJmXWZT+lqP/vPGm5yoPIWSQZVQTCMLRlPhWOA5xLwOAOUc84Iykhg4IBNdTQAPYtfV8D6KVks= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAZP264MB2415 X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCkxlIDI2LzA3LzIwMjMgw6AgMTc6MDIsIEhlcnZlIENvZGluYSBhIMOpY3JpdMKgOg0KPiBU aGUgTGFudGlxIFBFRjIyNTYgaXMgYSBmcmFtZXIgYW5kIGxpbmUgaW50ZXJmYWNlIGNvbXBvbmVu dCBkZXNpZ25lZCB0bw0KPiBmdWxmaWxsIGFsbCByZXF1aXJlZCBpbnRlcmZhY2luZyBiZXR3ZWVu IGFuIGFuYWxvZyBFMS9UMS9KMSBsaW5lIGFuZCB0aGUNCj4gZGlnaXRhbCBQQ00gc3lzdGVtIGhp Z2h3YXkvSC4xMDAgYnVzLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSGVydmUgQ29kaW5hIDxoZXJ2 ZS5jb2RpbmFAYm9vdGxpbi5jb20+DQoNClJldmlld2VkLWJ5OiBDaHJpc3RvcGhlIExlcm95IDxj aHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+DQoNCj4gLS0tDQo+ICAgZHJpdmVycy9uZXQvd2Fu L2ZyYW1lci9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDE2ICsNCj4gICBkcml2ZXJzL25ldC93 YW4vZnJhbWVyL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgIGRyaXZlcnMvbmV0 L3dhbi9mcmFtZXIvcGVmMjI1Ni9NYWtlZmlsZSAgICAgICB8ICAgOCArDQo+ICAgZHJpdmVycy9u ZXQvd2FuL2ZyYW1lci9wZWYyMjU2L3BlZjIyNTYtcmVncy5oIHwgMjUwICsrKysrDQo+ICAgZHJp dmVycy9uZXQvd2FuL2ZyYW1lci9wZWYyMjU2L3BlZjIyNTYuYyAgICAgIHwgODgwICsrKysrKysr KysrKysrKysrKw0KPiAgIGluY2x1ZGUvbGludXgvZnJhbWVyL3BlZjIyNTYuaCAgICAgICAgICAg ICAgICB8ICAzMSArDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAxMTg2IGluc2VydGlvbnMoKykNCj4g ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9wZWYyMjU2L01ha2Vm aWxlDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dhbi9mcmFtZXIvcGVmMjI1 Ni9wZWYyMjU2LXJlZ3MuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93YW4v ZnJhbWVyL3BlZjIyNTYvcGVmMjI1Ni5jDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv bGludXgvZnJhbWVyL3BlZjIyNTYuaA0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dh bi9mcmFtZXIvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3dhbi9mcmFtZXIvS2NvbmZpZw0KPiBpbmRl eCA5NmVmMWU3YmE4ZWIuLmJhNDNkN2YxNjJhMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQv d2FuL2ZyYW1lci9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvbmV0L3dhbi9mcmFtZXIvS2NvbmZp Zw0KPiBAQCAtMTYsNCArMTYsMjAgQEAgY29uZmlnIEdFTkVSSUNfRlJBTUVSDQo+ICAgCSAgZnJh bWV3b3JrIGFuZCBmcmFtZXIgdXNlcnMgY2FuIG9idGFpbiByZWZlcmVuY2UgdG8gdGhlIGZyYW1l ci4NCj4gICAJICBBbGwgdGhlIHVzZXJzIG9mIHRoaXMgZnJhbWV3b3JrIHNob3VsZCBzZWxlY3Qg dGhpcyBjb25maWcuDQo+ICAgDQo+ICtjb25maWcgRlJBTUVSX1BFRjIyNTYNCj4gKwl0cmlzdGF0 ZSAiTGFudGlxIFBFRjIyNTYiDQo+ICsJZGVwZW5kcyBvbiBPRg0KPiArCXNlbGVjdCBHRU5FUklD X0ZSQU1FUg0KPiArCXNlbGVjdCBNRkRfQ09SRQ0KPiArCXNlbGVjdCBSRUdNQVBfTU1JTw0KPiAr CWhlbHANCj4gKwkgIEVuYWJsZSBzdXBwb3J0IGZvciB0aGUgTGFudGlxIFBFRjIyNTYgKEZBTEM1 NikgZnJhbWVyLg0KPiArCSAgVGhlIFBFRjIyNTYgaXMgYSBmcmFtZXIgYW5kIGxpbmUgaW50ZXJm YWNlIGJldHdlZW4gYW5hbG9nIEUxL1QxL0oxDQo+ICsJICBsaW5lIGFuZCBhIGRpZ2l0YWwgUENN IGJ1cy4NCj4gKw0KPiArCSAgSWYgdW5zdXJlLCBzYXkgTi4NCj4gKw0KPiArCSAgVG8gY29tcGls ZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+ICsJICBtb2R1 bGUgd2lsbCBiZSBjYWxsZWQgZnJhbWVyLXBlZjIyNTYuDQo+ICsNCj4gICBlbmRtZW51DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vZnJhbWVyL01ha2VmaWxlIGIvZHJpdmVycy9uZXQv d2FuL2ZyYW1lci9NYWtlZmlsZQ0KPiBpbmRleCA3OGRiZDhlNTYzZDAuLjM0MDNmMmIxNDUzNCAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9NYWtlZmlsZQ0KPiArKysgYi9k cml2ZXJzL25ldC93YW4vZnJhbWVyL01ha2VmaWxlDQo+IEBAIC00LDMgKzQsNCBAQA0KPiAgICMN Cj4gICANCj4gICBvYmotJChDT05GSUdfR0VORVJJQ19GUkFNRVIpCQkJKz0gZnJhbWVyLWNvcmUu bw0KPiArb2JqLSQoQ09ORklHX0ZSQU1FUl9QRUYyMjU2KQkJCSs9IHBlZjIyNTYvDQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93YW4vZnJhbWVyL3BlZjIyNTYvTWFrZWZpbGUgYi9kcml2ZXJz L25ldC93YW4vZnJhbWVyL3BlZjIyNTYvTWFrZWZpbGUNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mNGQxMjA4ZGQ4YTQNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9kcml2ZXJzL25ldC93YW4vZnJhbWVyL3BlZjIyNTYvTWFrZWZpbGUNCj4gQEAgLTAsMCAr MSw4IEBADQo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsjDQo+ICsj IE1ha2VmaWxlIGZvciB0aGUgcGVmMjI1NiBkcml2ZXIuDQo+ICsjDQo+ICsNCj4gK29iai0kKENP TkZJR19GUkFNRVJfUEVGMjI1NikJCSs9IGZyYW1lci1wZWYyMjU2Lm8NCj4gKw0KPiArZnJhbWVy LXBlZjIyNTYtb2Jqcwk6PSBwZWYyMjU2Lm8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dh bi9mcmFtZXIvcGVmMjI1Ni9wZWYyMjU2LXJlZ3MuaCBiL2RyaXZlcnMvbmV0L3dhbi9mcmFtZXIv cGVmMjI1Ni9wZWYyMjU2LXJlZ3MuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMDAuLjVkMzE4M2M5MTcxNA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2RyaXZl cnMvbmV0L3dhbi9mcmFtZXIvcGVmMjI1Ni9wZWYyMjU2LXJlZ3MuaA0KPiBAQCAtMCwwICsxLDI1 MCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4gKy8qDQo+ ICsgKiBQRUYyMjU2IHJlZ2lzdGVycyBkZWZpbml0aW9uDQo+ICsgKg0KPiArICogQ29weXJpZ2h0 IDIwMjMgQ1MgR1JPVVAgRnJhbmNlDQo+ICsgKg0KPiArICogQXV0aG9yOiBIZXJ2ZSBDb2RpbmEg PGhlcnZlLmNvZGluYUBib290bGluLmNvbT4NCj4gKyAqLw0KPiArI2lmbmRlZiBfX1BFRjIyNTZf UkVHU19IX18NCj4gKyNkZWZpbmUgX19QRUYyMjU2X1JFR1NfSF9fDQo+ICsNCj4gKyNpbmNsdWRl ICJsaW51eC9iaXRmaWVsZC5oIg0KPiArDQo+ICsvKiBDb21tYW5kIFJlZ2lzdGVyICovDQo+ICsj ZGVmaW5lIFBFRjIyNTZfQ01EUgkJMHgwMg0KPiArI2RlZmluZSBQRUYyMjU2X0NNRFJfUlJFUwlC SVQoNikNCj4gKyNkZWZpbmUgUEVGMjI1Nl9DTURSX1hSRVMJQklUKDQpDQo+ICsjZGVmaW5lIFBF RjIyNTZfQ01EUl9TUkVTCUJJVCgwKQ0KPiArDQo+ICsvKiBJbnRlcnJ1cHQgTWFzayBSZWdpc3Rl ciAwLi41ICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfSU1SMAkgICAgICAgIDB4MTQNCj4gKyNkZWZp bmUgUEVGMjI1Nl9JTVIxCSAgICAgICAgMHgxNQ0KPiArI2RlZmluZSBQRUYyMjU2X0lNUjIJICAg ICAgICAweDE2DQo+ICsjZGVmaW5lIFBFRjIyNTZfSU1SMwkgICAgICAgIDB4MTcNCj4gKyNkZWZp bmUgUEVGMjI1Nl9JTVI0CSAgICAgICAgMHgxOA0KPiArI2RlZmluZSBQRUYyMjU2X0lNUjUJICAg ICAgICAweDE5DQo+ICsNCj4gKy8qIEZyYW1lciBNb2RlIFJlZ2lzdGVyIDAgKi8NCj4gKyNkZWZp bmUgUEVGMjI1Nl9GTVIwCQkweDFDDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMF9YQ19NQVNLCUdF Tk1BU0soNywgNikNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIwX1hDX05SWglGSUVMRF9QUkVQX0NP TlNUKFBFRjIyNTZfRk1SMF9YQ19NQVNLLCAweDApDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMF9Y Q19DTUkJRklFTERfUFJFUF9DT05TVChQRUYyMjU2X0ZNUjBfWENfTUFTSywgMHgxKQ0KPiArI2Rl ZmluZSBQRUYyMjU2X0ZNUjBfWENfQU1JCUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9GTVIwX1hD X01BU0ssIDB4MikNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIwX1hDX0hEQjMJRklFTERfUFJFUF9D T05TVChQRUYyMjU2X0ZNUjBfWENfTUFTSywgMHgzKQ0KPiArI2RlZmluZSBQRUYyMjU2X0ZNUjBf UkNfTUFTSwlHRU5NQVNLKDUsIDQpDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMF9SQ19OUloJRklF TERfUFJFUF9DT05TVChQRUYyMjU2X0ZNUjBfUkNfTUFTSywgMHgwKQ0KPiArI2RlZmluZSBQRUYy MjU2X0ZNUjBfUkNfQ01JCUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9GTVIwX1JDX01BU0ssIDB4 MSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIwX1JDX0FNSQlGSUVMRF9QUkVQX0NPTlNUKFBFRjIy NTZfRk1SMF9SQ19NQVNLLCAweDIpDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMF9SQ19IREIzCUZJ RUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9GTVIwX1JDX01BU0ssIDB4MykNCj4gKw0KPiArLyogRnJh bWVyIE1vZGUgUmVnaXN0ZXIgMSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0ZNUjEJCTB4MUQNCj4g KyNkZWZpbmUgUEVGMjI1Nl9GTVIxX1hGUwlCSVQoMykNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIx X0VDTQlCSVQoMikNCj4gKy8qIFNTRCBpcyBkZWZpbmVkIG9uIDIgYml0cy4gVGhlIG90aGVyIGJp dCBpcyBvbiBTSUMxIHJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMV9TU0RfTUFT SwlHRU5NQVNLKDEsIDEpDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMV9TU0RfMjA0OAlGSUVMRF9Q UkVQX0NPTlNUKFBFRjIyNTZfRk1SMV9TU0RfTUFTSywgMHgwKQ0KPiArI2RlZmluZSBQRUYyMjU2 X0ZNUjFfU1NEXzQwOTYJRklFTERfUFJFUF9DT05TVChQRUYyMjU2X0ZNUjFfU1NEX01BU0ssIDB4 MSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIxX1NTRF84MTkyCUZJRUxEX1BSRVBfQ09OU1QoUEVG MjI1Nl9GTVIxX1NTRF9NQVNLLCAweDApDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMV9TU0RfMTYz ODQJRklFTERfUFJFUF9DT05TVChQRUYyMjU2X0ZNUjFfU1NEX01BU0ssIDB4MSkNCj4gKw0KPiAr LyogRnJhbWVyIE1vZGUgUmVnaXN0ZXIgMiAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0ZNUjIJCQkg IDB4MUUNCj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIyX1JGU19NQVNLCQkgIEdFTk1BU0soNywgNikN Cj4gKyNkZWZpbmUgUEVGMjI1Nl9GTVIyX1JGU19ET1VCTEVGUkFNRQkgIEZJRUxEX1BSRVBfQ09O U1QoUEVGMjI1Nl9GTVIyX1JGU19NQVNLLCAweDApDQo+ICsjZGVmaW5lIFBFRjIyNTZfRk1SMl9S RlNfQ1JDNF9NVUxUSUZSQU1FICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfRk1SMl9SRlNfTUFT SywgMHgyKQ0KPiArI2RlZmluZSBQRUYyMjU2X0ZNUjJfUkZTX0FVVE9fTVVMVElGUkFNRSAgRklF TERfUFJFUF9DT05TVChQRUYyMjU2X0ZNUjJfUkZTX01BU0ssIDB4MykNCj4gKyNkZWZpbmUgUEVG MjI1Nl9GTVIyX0FYUkEJCSAgQklUKDEpDQo+ICsNCj4gKy8qIFRyYW5zbWl0IFNlcnZpY2UgV29y ZCAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1hTVwkJMHgyMA0KPiArI2RlZmluZSBQRUYyMjU2X1hT V19YU0lTCUJJVCg3KQ0KPiArI2RlZmluZSBQRUYyMjU2X1hTV19YVE0JCUJJVCg2KQ0KPiArI2Rl ZmluZSBQRUYyMjU2X1hTV19YWV9NQVNLCUdFTk1BU0soNSwgMCkNCj4gKyNkZWZpbmUgUEVGMjI1 Nl9YU1dfWFkoX3YpCUZJRUxEX1BSRVAoUEVGMjI1Nl9YU1dfWFlfTUFTSywgX3YpDQo+ICsNCj4g Ky8qIFRyYW5zbWl0IFNwYXJlIEJpdHMgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9YU1AJICAgICAg ICAweDIxDQo+ICsjZGVmaW5lIFBFRjIyNTZfWFNQX1hTSUYJQklUKDIpDQo+ICsNCj4gKy8qIFRy YW5zbWl0IENvbnRyb2wgMC4uMSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1hDMAkJMHgyMg0KPiAr I2RlZmluZSBQRUYyMjU2X1hDMQkJMHgyMw0KPiArDQo+ICsvKiBSZWNlaXZlIENvbnRyb2wgMCAq Lw0KPiArI2RlZmluZSBQRUYyMjU2X1JDMAkJMHgyNA0KPiArI2RlZmluZSBQRUYyMjU2X1JDMF9T V0QJCUJJVCg3KQ0KPiArI2RlZmluZSBQRUYyMjU2X1JDMF9BU1k0CUJJVCg2KQ0KPiArDQo+ICsv KiBSZWNlaXZlIENvbnRyb2wgMSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1JDMQkJMHgyNQ0KPiAr DQo+ICsvKiBUcmFuc21pdCBQdWxzZSBNYXNrIDAuLjEgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9Y UE0wCQkweDI2DQo+ICsjZGVmaW5lIFBFRjIyNTZfWFBNMQkJMHgyNw0KPiArDQo+ICsvKiBUcmFu c21pdCBQdWxzZSBNYXNrIDIgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9YUE0yCQkweDI4DQo+ICsj ZGVmaW5lIFBFRjIyNTZfWFBNMl9YTFQJQklUKDYpDQo+ICsNCj4gKy8qIFRyYW5zcGFyZW50IFNl cnZpY2UgV29yZCBNYXNrICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfVFNXTQkJMHgyOQ0KPiArDQo+ ICsvKiBMaW5lIEludGVyZmFjZSBNb2RlIDAgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9MSU0wCQkw eDM2DQo+ICsjZGVmaW5lIFBFRjIyNTZfMlhfTElNMF9CSVQzCUJJVCgzKSAvKiB2Mi54LCBkZXNj cmliZWQgYXMgYSBmb3JjZWQgJzEnIGJpdCAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0xJTTBfTUFT CUJJVCgwKQ0KPiArDQo+ICsvKiBMaW5lIEludGVyZmFjZSBNb2RlIDEgKi8NCj4gKyNkZWZpbmUg UEVGMjI1Nl9MSU0xCQkgIDB4MzcNCj4gKyNkZWZpbmUgUEVGMjI1Nl8xMl9MSU0xX1JJTF9NQVNL ICBHRU5NQVNLKDYsIDQpDQo+ICsjZGVmaW5lIFBFRjIyNTZfMTJfTElNMV9SSUxfOTEwCSAgRklF TERfUFJFUF9DT05TVChQRUYyMjU2XzEyX0xJTTFfUklMX01BU0ssIDB4MCkNCj4gKyNkZWZpbmUg UEVGMjI1Nl8xMl9MSU0xX1JJTF83NDAJICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMTJfTElN MV9SSUxfTUFTSywgMHgxKQ0KPiArI2RlZmluZSBQRUYyMjU2XzEyX0xJTTFfUklMXzU5MAkgIEZJ RUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl8xMl9MSU0xX1JJTF9NQVNLLCAweDIpDQo+ICsjZGVmaW5l IFBFRjIyNTZfMTJfTElNMV9SSUxfNDIwCSAgRklFTERfUFJFUF9DT05TVChQRUYyMjU2XzEyX0xJ TTFfUklMX01BU0ssIDB4MykNCj4gKyNkZWZpbmUgUEVGMjI1Nl8xMl9MSU0xX1JJTF8zMjAJICBG SUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMTJfTElNMV9SSUxfTUFTSywgMHg0KQ0KPiArI2RlZmlu ZSBQRUYyMjU2XzEyX0xJTTFfUklMXzIxMAkgIEZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl8xMl9M SU0xX1JJTF9NQVNLLCAweDUpDQo+ICsjZGVmaW5lIFBFRjIyNTZfMTJfTElNMV9SSUxfMTYwCSAg RklFTERfUFJFUF9DT05TVChQRUYyMjU2XzEyX0xJTTFfUklMX01BU0ssIDB4NikNCj4gKyNkZWZp bmUgUEVGMjI1Nl8xMl9MSU0xX1JJTF8xMDAJICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMTJf TElNMV9SSUxfTUFTSywgMHg3KQ0KPiArI2RlZmluZSBQRUYyMjU2XzJYX0xJTTFfUklMX01BU0sg IEdFTk1BU0soNiwgNCkNCj4gKyNkZWZpbmUgUEVGMjI1Nl8yWF9MSU0xX1JJTF8yMjUwICBGSUVM RF9QUkVQX0NPTlNUKFBFRjIyNTZfMlhfTElNMV9SSUxfTUFTSywgMHgwKQ0KPiArI2RlZmluZSBQ RUYyMjU2XzJYX0xJTTFfUklMXzExMDAgIEZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl8yWF9MSU0x X1JJTF9NQVNLLCAweDEpDQo+ICsjZGVmaW5lIFBFRjIyNTZfMlhfTElNMV9SSUxfNjAwCSAgRklF TERfUFJFUF9DT05TVChQRUYyMjU2XzJYX0xJTTFfUklMX01BU0ssIDB4MikNCj4gKyNkZWZpbmUg UEVGMjI1Nl8yWF9MSU0xX1JJTF8zNTAJICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMlhfTElN MV9SSUxfTUFTSywgMHgzKQ0KPiArI2RlZmluZSBQRUYyMjU2XzJYX0xJTTFfUklMXzIxMAkgIEZJ RUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl8yWF9MSU0xX1JJTF9NQVNLLCAweDQpDQo+ICsjZGVmaW5l IFBFRjIyNTZfMlhfTElNMV9SSUxfMTQwCSAgRklFTERfUFJFUF9DT05TVChQRUYyMjU2XzJYX0xJ TTFfUklMX01BU0ssIDB4NSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl8yWF9MSU0xX1JJTF8xMDAJICBG SUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMlhfTElNMV9SSUxfTUFTSywgMHg2KQ0KPiArI2RlZmlu ZSBQRUYyMjU2XzJYX0xJTTFfUklMXzUwCSAgRklFTERfUFJFUF9DT05TVChQRUYyMjU2XzJYX0xJ TTFfUklMX01BU0ssIDB4NykNCj4gKw0KPiArLyogUHVsc2UgQ291bnQgRGV0ZWN0aW9uICovDQo+ ICsjZGVmaW5lIFBFRjIyNTZfUENECQkweDM4DQo+ICsNCj4gKyAvKiBQdWxzZSBDb3VudCBSZWNv dmVyeSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1BDUgkJMHgzOQ0KPiArDQo+ICsgLyogTGluZSBJ bnRlcmZhY2UgTW9kZSAyICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfTElNMgkJMHgzQQ0KPiArI2Rl ZmluZSBQRUYyMjU2X0xJTTJfU0xUX01BU0sJR0VOTUFTSyg1LCA0KQ0KPiArI2RlZmluZSBQRUYy MjU2X0xJTTJfU0xUX1RIUjU1CUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9MSU0yX1NMVF9NQVNL LCAweDApDQo+ICsjZGVmaW5lIFBFRjIyNTZfTElNMl9TTFRfVEhSNjcJRklFTERfUFJFUF9DT05T VChQRUYyMjU2X0xJTTJfU0xUX01BU0ssIDB4MSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9MSU0yX1NM VF9USFI1MAlGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfTElNMl9TTFRfTUFTSywgMHgyKQ0KPiAr I2RlZmluZSBQRUYyMjU2X0xJTTJfU0xUX1RIUjQ1CUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9M SU0yX1NMVF9NQVNLLCAweDMpDQo+ICsjZGVmaW5lIFBFRjIyNTZfTElNMl9FTFQJQklUKDIpDQo+ ICsNCj4gKy8qIFN5c3RlbSBJbnRlcmZhY2UgQ29udHJvbCAxICovDQo+ICsjZGVmaW5lIFBFRjIy NTZfU0lDMQkgICAgICAgICAgMHgzRQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzFfU1NDX01BU0sJ ICAoQklUKDcpIHwgIEJJVCgzKSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMxX1NTQ18yMDQ4CSAg KDApDQo+ICsjZGVmaW5lIFBFRjIyNTZfU0lDMV9TU0NfNDA5NgkgIEJJVCgzKQ0KPiArI2RlZmlu ZSBQRUYyMjU2X1NJQzFfU1NDXzgxOTIJICBCSVQoNykNCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMx X1NTQ18xNjM4NAkgIChCSVQoNykgfCAgQklUKDMpKQ0KPiArLyogU1NEIGlzIGRlZmluZWQgb24g MiBiaXRzLiBUaGUgb3RoZXIgYml0IGlzIG9uIEZNUjEgcmVnaXN0ZXIgKi8NCj4gKyNkZWZpbmUg UEVGMjI1Nl9TSUMxX1NTRF9NQVNLCSAgR0VOTUFTSyg2LCA2KQ0KPiArI2RlZmluZSBQRUYyMjU2 X1NJQzFfU1NEXzIwNDgJICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfU0lDMV9TU0RfTUFTSywg MHgwKQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzFfU1NEXzQwOTYJICBGSUVMRF9QUkVQX0NPTlNU KFBFRjIyNTZfU0lDMV9TU0RfTUFTSywgMHgwKQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzFfU1NE XzgxOTIJICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfU0lDMV9TU0RfTUFTSywgMHgxKQ0KPiAr I2RlZmluZSBQRUYyMjU2X1NJQzFfU1NEXzE2Mzg0CSAgRklFTERfUFJFUF9DT05TVChQRUYyMjU2 X1NJQzFfU1NEX01BU0ssIDB4MSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMxX1JCU19NQVNLCSAg R0VOTUFTSyg1LCA0KQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzFfUkJTXzJGUkFNRVMgIEZJRUxE X1BSRVBfQ09OU1QoUEVGMjI1Nl9TSUMxX1JCU19NQVNLLCAweDApDQo+ICsjZGVmaW5lIFBFRjIy NTZfU0lDMV9SQlNfMUZSQU1FCSAgRklFTERfUFJFUF9DT05TVChQRUYyMjU2X1NJQzFfUkJTX01B U0ssIDB4MSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMxX1JCU185NkJJVFMJICBGSUVMRF9QUkVQ X0NPTlNUKFBFRjIyNTZfU0lDMV9SQlNfTUFTSywgMHgyKQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJ QzFfUkJTX0JZUEFTUwkgIEZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9TSUMxX1JCU19NQVNLLCAw eDMpDQo+ICsjZGVmaW5lIFBFRjIyNTZfU0lDMV9YQlNfTUFTSwkgIEdFTk1BU0soMSwgMCkNCj4g KyNkZWZpbmUgUEVGMjI1Nl9TSUMxX1hCU19CWVBBU1MJICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIy NTZfU0lDMV9YQlNfTUFTSywgMHgwKQ0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzFfWEJTXzFGUkFN RQkgIEZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9TSUMxX1hCU19NQVNLLCAweDEpDQo+ICsjZGVm aW5lIFBFRjIyNTZfU0lDMV9YQlNfMkZSQU1FUyAgRklFTERfUFJFUF9DT05TVChQRUYyMjU2X1NJ QzFfWEJTX01BU0ssIDB4MikNCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMxX1hCU185NkJJVFMJICBG SUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfU0lDMV9YQlNfTUFTSywgMHgzKQ0KPiArDQo+ICsvKiBT eXN0ZW0gSW50ZXJmYWNlIENvbnRyb2wgMiAqLw0KPiArI2RlZmluZSBQRUYyMjU2X1NJQzIJCTB4 M0YNCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMyX1NJQ1NfTUFTSwlHRU5NQVNLKDMsIDEpDQo+ICsj ZGVmaW5lIFBFRjIyNTZfU0lDMl9TSUNTKF92KQlGSUVMRF9QUkVQKFBFRjIyNTZfU0lDMl9TSUNT X01BU0ssIF92KQ0KPiArDQo+ICsvKiBTeXN0ZW0gSW50ZXJmYWNlIENvbnRyb2wgMyAqLw0KPiAr I2RlZmluZSBQRUYyMjU2X1NJQzMJCTB4NDANCj4gKyNkZWZpbmUgUEVGMjI1Nl9TSUMzX1JUUkkJ QklUKDUpDQo+ICsjZGVmaW5lIFBFRjIyNTZfU0lDM19SRVNYCUJJVCgzKQ0KPiArI2RlZmluZSBQ RUYyMjU2X1NJQzNfUkVTUglCSVQoMikNCj4gKw0KPiArLyogQ2xvY2sgTW9kZSBSZWdpc3RlciAx ICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfQ01SMQkJCTB4NDQNCj4gKyNkZWZpbmUgUEVGMjI1Nl9D TVIxX1JTX01BU0sJCUdFTk1BU0soNSwgNCkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9DTVIxX1JTX0RQ TEwJCUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9DTVIxX1JTX01BU0ssIDB4MCkNCj4gKyNkZWZp bmUgUEVGMjI1Nl9DTVIxX1JTX0RQTExfTE9TX0hJR0gJRklFTERfUFJFUF9DT05TVChQRUYyMjU2 X0NNUjFfUlNfTUFTSywgMHgxKQ0KPiArI2RlZmluZSBQRUYyMjU2X0NNUjFfUlNfRENPUl8yMDQ4 CUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9DTVIxX1JTX01BU0ssIDB4MikNCj4gKyNkZWZpbmUg UEVGMjI1Nl9DTVIxX1JTX0RDT1JfODE5MglGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfQ01SMV9S U19NQVNLLCAweDMpDQo+ICsjZGVmaW5lIFBFRjIyNTZfQ01SMV9EQ1MJCUJJVCgzKQ0KPiArDQo+ ICsvKiBDbG9jayBNb2RlIFJlZ2lzdGVyIDIgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9DTVIyCQkw eDQ1DQo+ICsjZGVmaW5lIFBFRjIyNTZfQ01SMl9EQ09YQwlCSVQoNSkNCj4gKw0KPiArLyogR2xv YmFsIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ1IJCTB4 NDYNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ1JfU0NJCQlCSVQoNikNCj4gKyNkZWZpbmUgUEVGMjI1 Nl9HQ1JfRUNNQwlCSVQoNCkNCj4gKw0KPiArLyogUG9ydCBDb25maWd1cmF0aW9uIDUgKi8NCj4g KyNkZWZpbmUgUEVGMjI1Nl9QQzUJCTB4ODQNCj4gKyNkZWZpbmUgUEVGMjI1Nl9QQzVfQ1JQICAg ICAgICAgQklUKDApDQo+ICsNCj4gKy8qIEdsb2JhbCBQb3J0IENvbmZpZ3VyYXRpb24gMSAqLw0K PiArI2RlZmluZSBQRUYyMjU2X0dQQzEJCQkweDg1DQo+ICsjZGVmaW5lIFBFRjIyNTZfR1BDMV9D U0ZQX01BU0sJCUdFTk1BU0soNywgNSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HUEMxX0NTRlBfU0VD X0lOX0hJR0gJRklFTERfUFJFUF9DT05TVChQRUYyMjU2X0dQQzFfQ1NGUF9NQVNLLCAweDApDQo+ ICsjZGVmaW5lIFBFRjIyNTZfR1BDMV9DU0ZQX1NFQ19PVVRfSElHSAlGSUVMRF9QUkVQX0NPTlNU KFBFRjIyNTZfR1BDMV9DU0ZQX01BU0ssIDB4MSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HUEMxX0NT RlBfRlNDX09VVF9ISUdICUZJRUxEX1BSRVBfQ09OU1QoUEVGMjI1Nl9HUEMxX0NTRlBfTUFTSywg MHgyKQ0KPiArI2RlZmluZSBQRUYyMjU2X0dQQzFfQ1NGUF9GU0NfT1VUX0xPVwlGSUVMRF9QUkVQ X0NPTlNUKFBFRjIyNTZfR1BDMV9DU0ZQX01BU0ssIDB4MykNCj4gKw0KPiArLyogUG9ydCBDb25m aWd1cmF0aW9uIDYgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9QQzYJCTB4ODYNCj4gKw0KPiArLyog R2xvYmFsIENvdW50ZXIgTW9kZSBuPTEuLjggKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ00oX24p ICAgICAgICAgKDB4OTIgKyAoX24pIC0gMSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ00xCSAgICAg ICAgMHg5Mg0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTIJICAgICAgICAweDkzDQo+ICsjZGVmaW5l IFBFRjIyNTZfR0NNMwkgICAgICAgIDB4OTQNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ000CSAgICAg ICAgMHg5NQ0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTUJICAgICAgICAweDk2DQo+ICsjZGVmaW5l IFBFRjIyNTZfR0NNNgkgICAgICAgIDB4OTcNCj4gKyNkZWZpbmUgUEVGMjI1Nl9HQ003CSAgICAg ICAgMHg5OA0KPiArI2RlZmluZSBQRUYyMjU2X0dDTTgJICAgICAgICAweDk5DQo+ICsNCj4gKy8q IFZlcnNpb24gU3RhdHVzIFJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfVlNUUgkJIDB4 NEENCj4gKyNkZWZpbmUgUEVGMjI1Nl9WU1RSX1ZFUlNJT05fMTIJIDB4MDANCj4gKyNkZWZpbmUg UEVGMjI1Nl9WU1RSX1ZFUlNJT05fMjEJIDB4MTANCj4gKyNkZWZpbmUgUEVGMjI1Nl9WU1RSX1ZF UlNJT05fMngJIDB4MDUNCj4gKw0KPiArLyogRnJhbWVyIFJlY2VpdmUgU3RhdHVzIDAgKi8NCj4g KyNkZWZpbmUgUEVGMjI1Nl9GUlMwCQkweDRDDQo+ICsjZGVmaW5lIFBFRjIyNTZfRlJTMF9MT1MJ QklUKDcpDQo+ICsjZGVmaW5lIFBFRjIyNTZfRlJTMF9BSVMJQklUKDYpDQo+ICsNCj4gKy8qIElu dGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgMC4uNSAqLw0KPiArI2RlZmluZSBQRUYyMjU2X0lTUihf bikJCSgweDY4ICsgKF9uKSkNCj4gKyNkZWZpbmUgUEVGMjI1Nl9JU1IwCQkweDY4DQo+ICsjZGVm aW5lIFBFRjIyNTZfSVNSMQkJMHg2OQ0KPiArI2RlZmluZSBQRUYyMjU2X0lTUjIJCTB4NkENCj4g KyNkZWZpbmUgUEVGMjI1Nl9JU1IzCQkweDZCDQo+ICsjZGVmaW5lIFBFRjIyNTZfSVNSNAkJMHg2 Qw0KPiArI2RlZmluZSBQRUYyMjU2X0lTUjUJCTB4NkQNCj4gKw0KPiArLyogR2xvYmFsIEludGVy cnVwdCBTdGF0dXMgKi8NCj4gKyNkZWZpbmUgUEVGMjI1Nl9HSVMJCTB4NkUNCj4gKyNkZWZpbmUg UEVGMjI1Nl9HSVNfSVNSKF9uKQlCSVQoX24pDQo+ICsNCj4gKy8qIFdhZmVyIElkZW50aWZpY2F0 aW9uIFJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIFBFRjIyNTZfV0lECQkgICAweEVDDQo+ICsjZGVm aW5lIFBFRjIyNTZfMTJfV0lEX01BU0sJICAgR0VOTUFTSygxLCAwKQ0KPiArI2RlZmluZSBQRUYy MjU2XzEyX1dJRF9WRVJTSU9OXzEyICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMTJfV0lEX01B U0ssIDB4MykNCj4gKyNkZWZpbmUgUEVGMjI1Nl8yWF9XSURfTUFTSwkgICBHRU5NQVNLKDcsIDYp DQo+ICsjZGVmaW5lIFBFRjIyNTZfMlhfV0lEX1ZFUlNJT05fMjEgIEZJRUxEX1BSRVBfQ09OU1Qo UEVGMjI1Nl8yWF9XSURfTUFTSywgMHgwKQ0KPiArI2RlZmluZSBQRUYyMjU2XzJYX1dJRF9WRVJT SU9OXzIyICBGSUVMRF9QUkVQX0NPTlNUKFBFRjIyNTZfMlhfV0lEX01BU0ssIDB4MSkNCj4gKw0K PiArLyogSU1SMi9JU1IyIEludGVycnVwdHMgY29tbW9uIGJpdHMgKi8NCj4gKyNkZWZpbmUgUEVG MjI1Nl9JTlQyX0FJUwlCSVQoMykNCj4gKyNkZWZpbmUgUEVGMjI1Nl9JTlQyX0xPUwlCSVQoMikN Cj4gKw0KPiArI2VuZGlmIC8qIF9fUEVGMjI1Nl9SRUdTX0hfXyAqLw0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvd2FuL2ZyYW1lci9wZWYyMjU2L3BlZjIyNTYuYyBiL2RyaXZlcnMvbmV0L3dh bi9mcmFtZXIvcGVmMjI1Ni9wZWYyMjU2LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAwLi4xZWI1YmM0MDQyNzgNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9k cml2ZXJzL25ldC93YW4vZnJhbWVyL3BlZjIyNTYvcGVmMjI1Ni5jDQo+IEBAIC0wLDAgKzEsODgw IEBADQo+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyoNCj4gKyAq IFBFRjIyNTYgYWxzbyBrbm93biBhcyBGQUxDNTYgZHJpdmVyDQo+ICsgKg0KPiArICogQ29weXJp Z2h0IDIwMjMgQ1MgR1JPVVAgRnJhbmNlDQo+ICsgKg0KPiArICogQXV0aG9yOiBIZXJ2ZSBDb2Rp bmEgPGhlcnZlLmNvZGluYUBib290bGluLmNvbT4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8 bGludXgvZnJhbWVyL3BlZjIyNTYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC9mcmFtZXIvZnJhbWVyLXByb3ZpZGVyLmg+DQo+ICsjaW5jbHVkZSA8bGlu dXgvZ3Bpby9jb25zdW1lci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiAr I2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUuaD4NCj4g KyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZv cm0uaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9yZWdtYXAuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ICsjaW5jbHVk ZSAicGVmMjI1Ni1yZWdzLmgiDQo+ICsNCj4gK2VudW0gcGVmMjI1Nl9mcmFtZV90eXBlIHsNCj4g KwlQRUYyMjU2X0ZSQU1FX0UxX0RPVUJMRUZSQU1FLA0KPiArCVBFRjIyNTZfRlJBTUVfRTFfQ1JD NF9NVUxUSUZSQU1FLA0KPiArCVBFRjIyNTZfRlJBTUVfRTFfQVVUT19NVUxUSUZSQU1FLA0KPiAr CVBFRjIyNTZfRlJBTUVfVDFKMV80RlJBTUUsDQo+ICsJUEVGMjI1Nl9GUkFNRV9UMUoxXzEyRlJB TUUsDQo+ICsJUEVGMjI1Nl9GUkFNRV9UMUoxXzI0RlJBTUUsDQo+ICsJUEVGMjI1Nl9GUkFNRV9U MUoxXzcyRlJBTUUsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgcGVmMjI1NiB7DQo+ICsJc3RydWN0 IGRldmljZSAqZGV2Ow0KPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCj4gKwllbnVtIHBlZjIy NTZfdmVyc2lvbiB2ZXJzaW9uOw0KPiArCXN0cnVjdCBjbGsgKm1jbGs7DQo+ICsJc3RydWN0IGNs ayAqc2Nsa3I7DQo+ICsJc3RydWN0IGNsayAqc2Nsa3g7DQo+ICsJc3RydWN0IGdwaW9fZGVzYyAq cmVzZXRfZ3BpbzsNCj4gKwl1bnNpZ25lZCBsb25nIHN5c2Nsa19yYXRlOw0KPiArCXUzMiBkYXRh X3JhdGU7DQo+ICsJYm9vbCBpc190eF9mYWxsaW5nX2VkZ2U7DQo+ICsJYm9vbCBpc19zdWJvcmRp bmF0ZTsNCj4gKwllbnVtIHBlZjIyNTZfZnJhbWVfdHlwZSBmcmFtZV90eXBlOw0KPiArCXU4IGNo YW5uZWxfcGhhc2U7DQo+ICsJYXRvbWljX3QgY2FycmllcjsNCj4gKwlzdHJ1Y3QgZnJhbWVyICpm cmFtZXI7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHU4IHBlZjIyNTZfcmVhZDgoc3Ry dWN0IHBlZjIyNTYgKnBlZjIyNTYsIGludCBvZmZzZXQpDQo+ICt7DQo+ICsJaW50IHZhbDsNCj4g Kw0KPiArCXJlZ21hcF9yZWFkKHBlZjIyNTYtPnJlZ21hcCwgb2Zmc2V0LCAmdmFsKTsNCj4gKwly ZXR1cm4gdmFsOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcGVmMjI1Nl93cml0 ZTgoc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYsIGludCBvZmZzZXQsIHU4IHZhbCkNCj4gK3sNCj4g KwlyZWdtYXBfd3JpdGUocGVmMjI1Ni0+cmVnbWFwLCBvZmZzZXQsIHZhbCk7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBwZWYyMjU2X2NscmJpdHM4KHN0cnVjdCBwZWYyMjU2ICpw ZWYyMjU2LCBpbnQgb2Zmc2V0LCB1OCBjbHIpDQo+ICt7DQo+ICsJcmVnbWFwX2NsZWFyX2JpdHMo cGVmMjI1Ni0+cmVnbWFwLCBvZmZzZXQsIGNscik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxp bmUgdm9pZCBwZWYyMjU2X3NldGJpdHM4KHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2LCBpbnQgb2Zm c2V0LCB1OCBzZXQpDQo+ICt7DQo+ICsJcmVnbWFwX3NldF9iaXRzKHBlZjIyNTYtPnJlZ21hcCwg b2Zmc2V0LCBzZXQpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcGVmMjI1Nl9j bHJzZXRiaXRzOChzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiwgaW50IG9mZnNldCwgdTggY2xyLCB1 OCBzZXQpDQo+ICt7DQo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHBlZjIyNTYtPnJlZ21hcCwgb2Zm c2V0LCBjbHIgfCBzZXQsIHNldCk7DQo+ICt9DQo+ICsNCj4gK2VudW0gcGVmMjI1Nl92ZXJzaW9u IHBlZjIyNTZfZ2V0X3ZlcnNpb24oc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYpDQo+ICt7DQo+ICsJ ZW51bSBwZWYyMjU2X3ZlcnNpb24gdmVyc2lvbiA9IFBFRjIyNTZfVkVSU0lPTl9VTktOT1dOOw0K PiArCXU4IHZzdHIsIHdpZDsNCj4gKw0KPiArCXZzdHIgPSBwZWYyMjU2X3JlYWQ4KHBlZjIyNTYs IFBFRjIyNTZfVlNUUik7DQo+ICsJd2lkID0gcGVmMjI1Nl9yZWFkOChwZWYyMjU2LCBQRUYyMjU2 X1dJRCk7DQo+ICsNCj4gKwlzd2l0Y2ggKHZzdHIpIHsNCj4gKwljYXNlIFBFRjIyNTZfVlNUUl9W RVJTSU9OXzEyOg0KPiArCQlpZiAoKHdpZCAmIFBFRjIyNTZfMTJfV0lEX01BU0spID09IFBFRjIy NTZfMTJfV0lEX1ZFUlNJT05fMTIpDQo+ICsJCQl2ZXJzaW9uID0gUEVGMjI1Nl9WRVJTSU9OXzFf MjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBQRUYyMjU2X1ZTVFJfVkVSU0lPTl8yeDoNCj4gKwkJ c3dpdGNoICh3aWQgJiBQRUYyMjU2XzJYX1dJRF9NQVNLKSB7DQo+ICsJCWNhc2UgUEVGMjI1Nl8y WF9XSURfVkVSU0lPTl8yMToNCj4gKwkJCXZlcnNpb24gPSBQRUYyMjU2X1ZFUlNJT05fMl8xOw0K PiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgUEVGMjI1Nl8yWF9XSURfVkVSU0lPTl8yMjoNCj4gKwkJ CXZlcnNpb24gPSBQRUYyMjU2X1ZFUlNJT05fMl8yOw0KPiArCQkJYnJlYWs7DQo+ICsJCX0NCj4g KwkJYnJlYWs7DQo+ICsJY2FzZSBQRUYyMjU2X1ZTVFJfVkVSU0lPTl8yMToNCj4gKwkJdmVyc2lv biA9IFBFRjIyNTZfVkVSU0lPTl8yXzE7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCWlm ICh2ZXJzaW9uID09IFBFRjIyNTZfVkVSU0lPTl9VTktOT1dOKQ0KPiArCQlkZXZfZXJyKHBlZjIy NTYtPmRldiwgIlVua25vd24gdmVyc2lvbiAoMHglMDJ4LCAweCUwMngpXG4iLCB2c3RyLCB3aWQp Ow0KPiArDQo+ICsJcmV0dXJuIHZlcnNpb247DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTChw ZWYyMjU2X2dldF92ZXJzaW9uKTsNCj4gKw0KPiArZW51bSBwZWYyMjU2X2djbV9jb25maWdfaXRl bSB7DQo+ICsJUEVGMjI1Nl9HQ01fQ09ORklHXzE1NDQwMDAgPSAwLA0KPiArCVBFRjIyNTZfR0NN X0NPTkZJR18yMDQ4MDAwLA0KPiArCVBFRjIyNTZfR0NNX0NPTkZJR184MTkyMDAwLA0KPiArCVBF RjIyNTZfR0NNX0NPTkZJR18xMDAwMDAwMCwNCj4gKwlQRUYyMjU2X0dDTV9DT05GSUdfMTIzNTIw MDAsDQo+ICsJUEVGMjI1Nl9HQ01fQ09ORklHXzE2Mzg0MDAwLA0KPiArfTsNCj4gKw0KPiArc3Ry dWN0IHBlZjIyNTZfZ2NtX2NvbmZpZyB7DQo+ICsJdTggZ2NtXzEyWzZdOw0KPiArCXU4IGdjbV8y eFs4XTsNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGVmMjI1Nl9nY21fY29u ZmlnIHBlZjIyNTZfZ2NtX2NvbmZpZ3NbXSA9IHsNCj4gKwlbUEVGMjI1Nl9HQ01fQ09ORklHXzE1 NDQwMDBdID0gew0KPiArCQkuZ2NtXzEyID0gezB4RjAsIDB4NTEsIDB4MDAsIDB4ODAsIDB4MDAs IDB4MTV9LA0KPiArCQkuZ2NtXzJ4ID0gezB4MDAsIDB4MTUsIDB4MDAsIDB4MDgsIDB4MDAsIDB4 M0YsIDB4OUMsIDB4REZ9LA0KPiArCX0sDQo+ICsJW1BFRjIyNTZfR0NNX0NPTkZJR18yMDQ4MDAw XSA9IHsNCj4gKwkJLmdjbV8xMiA9IHsweDAwLCAweDU4LCAweEQyLCAweEMyLCAweDAwLCAweDEw fSwNCj4gKwkJLmdjbV8yeCA9IHsweDAwLCAweDE4LCAweEZCLCAweDBCLCAweDAwLCAweDJGLCAw eERCLCAweERGfSwNCj4gKwl9LA0KPiArCVtQRUYyMjU2X0dDTV9DT05GSUdfODE5MjAwMF0gPSB7 DQo+ICsJCS5nY21fMTIgPSB7MHgwMCwgMHg1OCwgMHhEMiwgMHhDMiwgMHgwMywgMHgxMH0sDQo+ ICsJCS5nY21fMnggPSB7MHgwMCwgMHgxOCwgMHhGQiwgMHgwQiwgMHgwMCwgMHgwQiwgMHhEQiwg MHhERn0sDQo+ICsJfSwNCj4gKwlbUEVGMjI1Nl9HQ01fQ09ORklHXzEwMDAwMDAwXSA9IHsNCj4g KwkJLmdjbV8xMiA9IHsweDkwLCAweDUxLCAweDgxLCAweDhGLCAweDA0LCAweDEwfSwNCj4gKwkJ LmdjbV8yeCA9IHsweDQwLCAweDFCLCAweDNELCAweDBBLCAweDAwLCAweDA3LCAweEM5LCAweERD fSwNCj4gKwl9LA0KPiArCVtQRUYyMjU2X0dDTV9DT05GSUdfMTIzNTIwMDBdID0gew0KPiArCQku Z2NtXzEyID0gezB4RjAsIDB4NTEsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MTV9LA0KPiArCQkuZ2Nt XzJ4ID0gezB4MDAsIDB4MTksIDB4MDAsIDB4MDgsIDB4MDEsIDB4MEEsIDB4OTgsIDB4REF9LA0K PiArCX0sDQo+ICsJW1BFRjIyNTZfR0NNX0NPTkZJR18xNjM4NDAwMF0gPSB7DQo+ICsJCS5nY21f MTIgPSB7MHgwMCwgMHg1OCwgMHhEMiwgMHhDMiwgMHgwNywgMHgxMH0sDQo+ICsJCS5nY21fMngg PSB7MHgwMCwgMHgxOCwgMHhGQiwgMHgwQiwgMHgwMSwgMHgwQiwgMHhEQiwgMHhERn0sDQo+ICsJ fSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9zZXR1cF9nY20oc3RydWN0IHBl ZjIyNTYgKnBlZjIyNTYpDQo+ICt7DQo+ICsJZW51bSBwZWYyMjU2X2djbV9jb25maWdfaXRlbSBp dGVtOw0KPiArCXVuc2lnbmVkIGxvbmcgbWNsa19yYXRlOw0KPiArCWNvbnN0IHU4ICpnY207DQo+ ICsJaW50IGksIGNvdW50Ow0KPiArDQo+ICsJbWNsa19yYXRlID0gY2xrX2dldF9yYXRlKHBlZjIy NTYtPm1jbGspOw0KPiArCXN3aXRjaCAobWNsa19yYXRlKSB7DQo+ICsJY2FzZSAxNTQ0MDAwOg0K PiArCQlpdGVtID0gUEVGMjI1Nl9HQ01fQ09ORklHXzE1NDQwMDA7DQo+ICsJCWJyZWFrOw0KPiAr CWNhc2UgMjA0ODAwMDoNCj4gKwkJaXRlbSA9IFBFRjIyNTZfR0NNX0NPTkZJR18yMDQ4MDAwOw0K PiArCQlicmVhazsNCj4gKwljYXNlIDgxOTIwMDA6DQo+ICsJCWl0ZW0gPSBQRUYyMjU2X0dDTV9D T05GSUdfODE5MjAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAxMDAwMDAwMDoNCj4gKwkJaXRl bSA9IFBFRjIyNTZfR0NNX0NPTkZJR18xMDAwMDAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSAx MjM1MjAwMDoNCj4gKwkJaXRlbSA9IFBFRjIyNTZfR0NNX0NPTkZJR18xMjM1MjAwMDsNCj4gKwkJ YnJlYWs7DQo+ICsJY2FzZSAxNjM4NDAwMDoNCj4gKwkJaXRlbSA9IFBFRjIyNTZfR0NNX0NPTkZJ R18xNjM4NDAwMDsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJZGV2X2VycihwZWYy MjU2LT5kZXYsICJVbnN1cHBvcnRlZCB2Mi54IE1DTEsgcmF0ZSAlbHVcbiIsIG1jbGtfcmF0ZSk7 DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCUJVSUxEX0JVR19PTihpdGVt ID49IEFSUkFZX1NJWkUocGVmMjI1Nl9nY21fY29uZmlncykpOw0KPiArDQo+ICsJaWYgKHBlZjIy NTYtPnZlcnNpb24gPT0gUEVGMjI1Nl9WRVJTSU9OXzFfMikgew0KPiArCQlnY20gPSBwZWYyMjU2 X2djbV9jb25maWdzW2l0ZW1dLmdjbV8xMjsNCj4gKwkJY291bnQgPSBBUlJBWV9TSVpFKHBlZjIy NTZfZ2NtX2NvbmZpZ3NbaXRlbV0uZ2NtXzEyKTsNCj4gKwl9IGVsc2Ugew0KPiArCQlnY20gPSBw ZWYyMjU2X2djbV9jb25maWdzW2l0ZW1dLmdjbV8yeDsNCj4gKwkJY291bnQgPSBBUlJBWV9TSVpF KHBlZjIyNTZfZ2NtX2NvbmZpZ3NbaXRlbV0uZ2NtXzJ4KTsNCj4gKwl9DQo+ICsNCj4gKwlmb3Ig KGkgPSAwOyBpIDwgY291bnQ7IGkrKykNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVG MjI1Nl9HQ00oaSArIDEpLCAqKGdjbSArIGkpKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50IHBlZjIyNTZfc2V0dXBfZTFfbGluZShzdHJ1Y3QgcGVmMjI1NiAq cGVmMjI1NikNCj4gK3sNCj4gKwl1OCBmbXIxLCBmbXIyOw0KPiArDQo+ICsJLyogUkNMSyBvdXRw dXQgOiBEUExMIGNsb2NrLCBEQ08tWCBlbmFibGVkLCBEQ08tWCBpbnRlcm5hbCByZWYgY2xvY2sg Ki8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0NNUjEsIDB4MDApOw0KPiAr DQo+ICsJLyogU0NMS1Igc2VsZWN0ZWQsIFNDTEtYIHNlbGVjdGVkLA0KPiArCSAqIHJlY2VpdmUg c3luY2hybyBwdWxzZSBzb3VyY2VkIGJ5IFNZUFIsDQo+ICsJICogdHJhbnNtaXQgc3luY2hybyBw dWxzZSBzb3VyY2VkIGJ5IFNZUFgsDQo+ICsJICogRENPLVggY2VudGVyIGZyZXF1ZW5jeSBlbmFi bGVkDQo+ICsJICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9DTVIyLCBQ RUYyMjU2X0NNUjJfRENPWEMpOw0KPiArDQo+ICsJaWYgKHBlZjIyNTYtPmlzX3N1Ym9yZGluYXRl KSB7DQo+ICsJCS8qIHNlbGVjdCBSQ0xLIHNvdXJjZSA9IDJNLCAgZGlzYWJsZSBzd2l0Y2hpbmcg ZnJvbSBSQ0xLIHRvIFNZTkMgKi8NCj4gKwkJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYyMjU2LCBQ RUYyMjU2X0NNUjEsIFBFRjIyNTZfQ01SMV9SU19NQVNLLA0KPiArCQkJCSAgICBQRUYyMjU2X0NN UjFfUlNfRENPUl8yMDQ4IHwgUEVGMjI1Nl9DTVIxX0RDUyk7DQo+ICsJfQ0KPiArDQo+ICsJLyog c2xhdmUgbW9kZSwgbG9jYWwgbG9vcCBvZmYsIG1vZGUgc2hvcnQtaGF1bA0KPiArCSAqIEluIHYy LngsIGJpdDMgaXMgYSBmb3JjZWQgMSBiaXQgaW4gdGhlIGRhdGFzaGVldCAtPiBOZWVkIHRvIGJl IHNldC4NCj4gKwkgKi8NCj4gKwlpZiAocGVmMjI1Ni0+dmVyc2lvbiA9PSBQRUYyMjU2X1ZFUlNJ T05fMV8yKQ0KPiArCQlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0xJTTAsIDB4MDAp Ow0KPiArCWVsc2UNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9MSU0wLCBQ RUYyMjU2XzJYX0xJTTBfQklUMyk7DQo+ICsNCj4gKwkvKiAibWFzdGVyIiBtb2RlICovDQo+ICsJ aWYgKCFwZWYyMjU2LT5pc19zdWJvcmRpbmF0ZSkNCj4gKwkJcGVmMjI1Nl9zZXRiaXRzOChwZWYy MjU2LCBQRUYyMjU2X0xJTTAsIFBFRjIyNTZfTElNMF9NQVMpOw0KPiArDQo+ICsJLyogYW5hbG9n IGludGVyZmFjZSBzZWxlY3RlZCwgcmVtb3RlIGxvb3Agb2ZmICovDQo+ICsJcGVmMjI1Nl93cml0 ZTgocGVmMjI1NiwgUEVGMjI1Nl9MSU0xLCAweDAwKTsNCj4gKw0KPiArCS8qIHJlY2VpdmUgaW5w dXQgdGhyZXNob2xkID0gMCwyMVYgKi8NCj4gKwlpZiAocGVmMjI1Ni0+dmVyc2lvbiA9PSBQRUYy MjU2X1ZFUlNJT05fMV8yKQ0KPiArCQlwZWYyMjU2X2NscnNldGJpdHM4KHBlZjIyNTYsIFBFRjIy NTZfTElNMSwgUEVGMjI1Nl8xMl9MSU0xX1JJTF9NQVNLLA0KPiArCQkJCSAgICBQRUYyMjU2XzEy X0xJTTFfUklMXzIxMCk7DQo+ICsJZWxzZQ0KPiArCQlwZWYyMjU2X2NscnNldGJpdHM4KHBlZjIy NTYsIFBFRjIyNTZfTElNMSwgUEVGMjI1Nl8yWF9MSU0xX1JJTF9NQVNLLA0KPiArCQkJCSAgICBQ RUYyMjU2XzJYX0xJTTFfUklMXzIxMCk7DQo+ICsNCj4gKwkvKiB0cmFuc21pdCBwdWxzZSBtYXNr LCBkZWZhdWx0IHZhbHVlIGZyb20gZGF0YXNoZWV0DQo+ICsJICogdHJhbnNtaXQgbGluZSBpbiBu b3JtYWwgb3BlcmF0aW9uDQo+ICsJICovDQo+ICsJaWYgKHBlZjIyNTYtPnZlcnNpb24gPT0gUEVG MjI1Nl9WRVJTSU9OXzFfMikNCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9Y UE0wLCAweDdCKTsNCj4gKwllbHNlDQo+ICsJCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIy NTZfWFBNMCwgMHg5Qyk7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9YUE0x LCAweDAzKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1hQTTIsIDB4MDAp Ow0KPiArDQo+ICsJLyogSERCMyBjb2RpbmcsIG5vIGFsYXJtIHNpbXVsYXRpb24gKi8NCj4gKwlw ZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0ZNUjAsIFBFRjIyNTZfRk1SMF9YQ19IREIz IHwgUEVGMjI1Nl9GTVIwX1JDX0hEQjMpOw0KPiArDQo+ICsJLyogRTEsIGZyYW1lIGZvcm1hdCwg MiBNYml0L3Mgc3lzdGVtIGRhdGEgcmF0ZSwgbm8gQUlTDQo+ICsJICogdHJhbnNtaXNzaW9uIHRv IHJlbW90ZSBlbmQgb3Igc3lzdGVtIGludGVyZmFjZSwgcGF5bG9hZCBsb29wDQo+ICsJICogb2Zm LCB0cmFuc21pdCByZW1vdGUgYWxhcm0gb24NCj4gKwkgKi8NCj4gKwlmbXIxID0gMHgwMDsNCj4g KwlmbXIyID0gUEVGMjI1Nl9GTVIyX0FYUkE7DQo+ICsJc3dpdGNoIChwZWYyMjU2LT5mcmFtZV90 eXBlKSB7DQo+ICsJY2FzZSBQRUYyMjU2X0ZSQU1FX0UxX0RPVUJMRUZSQU1FOg0KPiArCQlmbXIy IHw9IFBFRjIyNTZfRk1SMl9SRlNfRE9VQkxFRlJBTUU7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2Ug UEVGMjI1Nl9GUkFNRV9FMV9DUkM0X01VTFRJRlJBTUU6DQo+ICsJCWZtcjEgfD0gUEVGMjI1Nl9G TVIxX1hGUzsNCj4gKwkJZm1yMiB8PSBQRUYyMjU2X0ZNUjJfUkZTX0NSQzRfTVVMVElGUkFNRTsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBQRUYyMjU2X0ZSQU1FX0UxX0FVVE9fTVVMVElGUkFNRToN Cj4gKwkJZm1yMSB8PSBQRUYyMjU2X0ZNUjFfWEZTOw0KPiArCQlmbXIyIHw9IFBFRjIyNTZfRk1S Ml9SRlNfQVVUT19NVUxUSUZSQU1FOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlk ZXZfZXJyKHBlZjIyNTYtPmRldiwgIlVuc3VwcG9ydGVkIGZyYW1lIHR5cGUgJWRcbiIsIHBlZjIy NTYtPmZyYW1lX3R5cGUpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsJcGVmMjI1 Nl9jbHJzZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X0ZNUjEsIFBFRjIyNTZfRk1SMV9YRlMsIGZt cjEpOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfRk1SMiwgZm1yMik7DQo+ ICsNCj4gKwlpZiAoIXBlZjIyNTYtPmlzX3N1Ym9yZGluYXRlKSB7DQo+ICsJCS8qIFNFQyBpbnB1 dCwgYWN0aXZlIGhpZ2ggKi8NCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9H UEMxLCBQRUYyMjU2X0dQQzFfQ1NGUF9TRUNfSU5fSElHSCk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJ LyogRlNDIG91dHB1dCwgYWN0aXZlIGhpZ2ggKi8NCj4gKwkJcGVmMjI1Nl93cml0ZTgocGVmMjI1 NiwgUEVGMjI1Nl9HUEMxLCBQRUYyMjU2X0dQQzFfQ1NGUF9GU0NfT1VUX0hJR0gpOw0KPiArCX0N Cj4gKw0KPiArCS8qIFNDTEtSLCBTQ0xLWCwgUkNMSyBjb25maWd1cmVkIHRvIGlucHV0cywNCj4g KwkgKiBYRk1TIGFjdGl2ZSBsb3csIENMSzEgYW5kIENMSzIgcGluIGNvbmZpZ3VyYXRpb24NCj4g KwkgKi8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1BDNSwgMHgwMCk7DQo+ ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9QQzYsIDB4MDApOw0KPiArDQo+ICsJ LyogcG9ydCBSQ0xLIGlzIG91dHB1dCAqLw0KPiArCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1Niwg UEVGMjI1Nl9QQzUsIFBFRjIyNTZfUEM1X0NSUCk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgcGVmMjI1Nl9zZXR1cF9lMV9sb3Moc3RydWN0IHBlZjIyNTYg KnBlZjIyNTYpDQo+ICt7DQo+ICsJLyogZGV0ZWN0aW9uIG9mIExPUyBhbGFybSA9IDE3NiBwdWxz ZXMgKGllICgxMCArIDEpICogMTYpICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVG MjI1Nl9QQ0QsIDEwKTsNCj4gKwkvKiByZWNvdmVyeSBvZiBMT1MgYWxhcm0gPSAyMiBwdWxzZXMg KGllIDIxICsgMSkgKi8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1BDUiwg MjEpOw0KPiArCS8qIEUxIGRlZmF1bHQgZm9yIHRoZSByZWNlaXZlIHNsaWNlciB0aHJlc2hvbGQg Ki8NCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0xJTTIsIFBFRjIyNTZfTElN Ml9TTFRfVEhSNTApOw0KPiArCWlmIChwZWYyMjU2LT5pc19zdWJvcmRpbmF0ZSkgew0KPiArCQkv KiBMb29wLXRpbWVkICovDQo+ICsJCXBlZjIyNTZfc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9M SU0yLCBQRUYyMjU2X0xJTTJfRUxUKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg cGVmMjI1Nl9zZXR1cF9lMV9zeXN0ZW0oc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYpDQo+ICt7DQo+ ICsJdTggc2ljMSwgZm1yMTsNCj4gKw0KPiArCS8qIDIuMDQ4IE1IeiBzeXN0ZW0gY2xvY2tpbmcg cmF0ZSwgcmVjZWl2ZSBidWZmZXIgMiBmcmFtZXMsIHRyYW5zbWl0DQo+ICsJICogYnVmZmVyIGJ5 cGFzcywgZGF0YSBzYW1wbGVkIGFuZCB0cmFuc21pdHRlZCBvbiB0aGUgZmFsbGluZyBlZGdlIG9m DQo+ICsJICogU0NMS1IvWCwgYXV0b21hdGljIGZyZWV6ZSBzaWduYWxpbmcsIGRhdGEgaXMgYWN0 aXZlIGluIHRoZSBmaXJzdA0KPiArCSAqIGNoYW5uZWwgcGhhc2UNCj4gKwkgKi8NCj4gKwlwZWYy MjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1NJQzEsIDB4MDApOw0KPiArCXBlZjIyNTZfd3Jp dGU4KHBlZjIyNTYsIFBFRjIyNTZfU0lDMiwgMHgwMCk7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVm MjI1NiwgUEVGMjI1Nl9TSUMzLCAweDAwKTsNCj4gKw0KPiArCWlmIChwZWYyMjU2LT5pc19zdWJv cmRpbmF0ZSkgew0KPiArCQkvKiB0cmFuc21pdCBidWZmZXIgc2l6ZSA9IDIgZnJhbWVzLCB0cmFu c3BhcmVudCBtb2RlICovDQo+ICsJCXBlZjIyNTZfY2xyc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1 Nl9TSUMxLCBQRUYyMjU2X1NJQzFfWEJTX01BU0ssDQo+ICsJCQkJICAgIFBFRjIyNTZfU0lDMV9Y QlNfMkZSQU1FUyk7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHBlZjIyNTYtPnZlcnNpb24gIT0gUEVG MjI1Nl9WRVJTSU9OXzFfMikgew0KPiArCQkvKiBkdXJpbmcgaW5hY3RpdmUgY2hhbm5lbCBwaGFz ZSBzd2l0Y2ggUkRPL1JTSUcgaW50byB0cmktc3RhdGUgKi8NCj4gKwkJcGVmMjI1Nl9zZXRiaXRz OChwZWYyMjU2LCBQRUYyMjU2X1NJQzMsIFBFRjIyNTZfU0lDM19SVFJJKTsNCj4gKwl9DQo+ICsN Cj4gKwlpZiAocGVmMjI1Ni0+aXNfdHhfZmFsbGluZ19lZGdlKSB7DQo+ICsJCS8qIGZhbGxpbmcg ZWRnZSBzeW5jIHB1bHNlIHRyYW5zbWl0LCByaXNpbmcgZWRnZSBzeW5jIHB1bHNlIHJlY2VpdmUg Ki8NCj4gKwkJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X1NJQzMsIFBFRjIy NTZfU0lDM19SRVNYLCBQRUYyMjU2X1NJQzNfUkVTUik7DQo+ICsJfSBlbHNlIHsNCj4gKwkJLyog cmlzaW5nIGVkZ2Ugc3luYyBwdWxzZSB0cmFuc21pdCwgZmFsbGluZyBlZGdlIHN5bmMgcHVsc2Ug cmVjZWl2ZSAqLw0KPiArCQlwZWYyMjU2X2NscnNldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZfU0lD MywgUEVGMjI1Nl9TSUMzX1JFU1IsIFBFRjIyNTZfU0lDM19SRVNYKTsNCj4gKwl9DQo+ICsNCj4g KwkvKiB0cmFuc21pdCBvZmZzZXQgY291bnRlciAoWENPMTAuLjApID0gNCAqLw0KPiArCXBlZjIy NTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfWEMwLCAwKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChw ZWYyMjU2LCBQRUYyMjU2X1hDMSwgNCk7DQo+ICsJLyogcmVjZWl2ZSBvZmZzZXQgY291bnRlciAo UkNPMTAuLjApID0gNCAqLw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfUkMw LCAwKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X1JDMSwgNCk7DQo+ICsN Cj4gKwkvKiBzeXN0ZW0gY2xvY2sgcmF0ZSAqLw0KPiArCXN3aXRjaCAocGVmMjI1Ni0+c3lzY2xr X3JhdGUpIHsNCj4gKwljYXNlIDIwNDgwMDA6DQo+ICsJCXNpYzEgPSBQRUYyMjU2X1NJQzFfU1ND XzIwNDg7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgNDA5NjAwMDoNCj4gKwkJc2ljMSA9IFBFRjIy NTZfU0lDMV9TU0NfNDA5NjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSA4MTkyMDAwOg0KPiArCQlz aWMxID0gUEVGMjI1Nl9TSUMxX1NTQ184MTkyOw0KPiArCQlicmVhazsNCj4gKwljYXNlIDE2Mzg0 MDAwOg0KPiArCQlzaWMxID0gUEVGMjI1Nl9TSUMxX1NTQ18xNjM4NDsNCj4gKwkJYnJlYWs7DQo+ ICsJZGVmYXVsdDoNCj4gKwkJZGV2X2VycihwZWYyMjU2LT5kZXYsICJVbnN1cHBvcnRlZCBzeXNj bGsgcmF0ZSAlbHVcbiIsIHBlZjIyNTYtPnN5c2Nsa19yYXRlKTsNCj4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ICsJfQ0KPiArCXBlZjIyNTZfY2xyc2V0Yml0czgocGVmMjI1NiwgUEVGMjI1Nl9TSUMx LCBQRUYyMjU2X1NJQzFfU1NDX01BU0ssIHNpYzEpOw0KPiArDQo+ICsJLyogZGF0YSBjbG9jayBy YXRlICovDQo+ICsJc3dpdGNoIChwZWYyMjU2LT5kYXRhX3JhdGUpIHsNCj4gKwljYXNlIDIwNDgw MDA6DQo+ICsJCWZtcjEgPSBQRUYyMjU2X0ZNUjFfU1NEXzIwNDg7DQo+ICsJCXNpYzEgPSBQRUYy MjU2X1NJQzFfU1NEXzIwNDg7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgNDA5NjAwMDoNCj4gKwkJ Zm1yMSA9IFBFRjIyNTZfRk1SMV9TU0RfNDA5NjsNCj4gKwkJc2ljMSA9IFBFRjIyNTZfU0lDMV9T U0RfNDA5NjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSA4MTkyMDAwOg0KPiArCQlmbXIxID0gUEVG MjI1Nl9GTVIxX1NTRF84MTkyOw0KPiArCQlzaWMxID0gUEVGMjI1Nl9TSUMxX1NTRF84MTkyOw0K PiArCQlicmVhazsNCj4gKwljYXNlIDE2Mzg0MDAwOg0KPiArCQlmbXIxID0gUEVGMjI1Nl9GTVIx X1NTRF8xNjM4NDsNCj4gKwkJc2ljMSA9IFBFRjIyNTZfU0lDMV9TU0RfMTYzODQ7DQo+ICsJCWJy ZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiVW5zdXBwb3J0 ZWQgZGF0YSByYXRlICV1XG4iLCBwZWYyMjU2LT5kYXRhX3JhdGUpOw0KPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gKwl9DQo+ICsJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X0ZN UjEsIFBFRjIyNTZfRk1SMV9TU0RfTUFTSywgZm1yMSk7DQo+ICsJcGVmMjI1Nl9jbHJzZXRiaXRz OChwZWYyMjU2LCBQRUYyMjU2X1NJQzEsIFBFRjIyNTZfU0lDMV9TU0RfTUFTSywgc2ljMSk7DQo+ ICsNCj4gKwkvKiBjaGFubmVsIHBoYXNlICovDQo+ICsJcGVmMjI1Nl9jbHJzZXRiaXRzOChwZWYy MjU2LCBQRUYyMjU2X1NJQzIsIFBFRjIyNTZfU0lDMl9TSUNTX01BU0ssDQo+ICsJCQkgICAgUEVG MjI1Nl9TSUMyX1NJQ1MocGVmMjI1Ni0+Y2hhbm5lbF9waGFzZSkpOw0KPiArDQo+ICsJcmV0dXJu IDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHBlZjIyNTZfc2V0dXBfZTFfc2lnbmFsaW5n KHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2KQ0KPiArew0KPiArCS8qIEFsbCBiaXRzIG9mIHRoZSB0 cmFuc21pdHRlZCBzZXJ2aWNlIHdvcmQgYXJlIGNsZWFyZWQgKi8NCj4gKwlwZWYyMjU2X3dyaXRl OChwZWYyMjU2LCBQRUYyMjU2X1hTVywgUEVGMjI1Nl9YU1dfWFkoMHgxRikpOw0KPiArDQo+ICsJ LyogQ0FTIGRpc2FibGVkIGFuZCBjbGVhciBzcGFyZSBiaXQgdmFsdWVzICovDQo+ICsJcGVmMjI1 Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9YU1AsIDB4MDApOw0KPiArDQo+ICsJaWYgKHBlZjIy NTYtPmlzX3N1Ym9yZGluYXRlKSB7DQo+ICsJCS8qIHRyYW5zcGFyZW50IG1vZGUgKi8NCj4gKwkJ cGVmMjI1Nl9zZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X1hTVywgUEVGMjI1Nl9YU1dfWFRNKTsN Cj4gKwl9DQo+ICsNCj4gKwkvKiBTaS1CaXQsIFNwYXJlIGJpdCBGb3IgSW50ZXJuYXRpb25hbCwg RkFTIHdvcmQgKi8NCj4gKwlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZfWFNXLCBQ RUYyMjU2X1hTV19YU0lTKTsNCj4gKwlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZf WFNQLCBQRUYyMjU2X1hTUF9YU0lGKTsNCj4gKw0KPiArCS8qIG5vIHRyYW5zcGFyZW50IG1vZGUg YWN0aXZlICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9UU1dNLCAweDAw KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgcGVmMjI1Nl9zZXR1cF9lMV9lcnJvcnMoc3Ry dWN0IHBlZjIyNTYgKnBlZjIyNTYpDQo+ICt7DQo+ICsJLyogZXJyb3IgY291bnRlciBsYXRjaGVk IGV2ZXJ5IDFzICovDQo+ICsJcGVmMjI1Nl9zZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X0ZNUjEs IFBFRjIyNTZfRk1SMV9FQ00pOw0KPiArDQo+ICsJLyogZXJyb3IgY291bnRlciBtb2RlIENPRkEg Ki8NCj4gKwlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZfR0NSLCBQRUYyMjU2X0dD Ul9FQ01DKTsNCj4gKw0KPiArCS8qIGVycm9ycyBpbiBzZXJ2aWNlIHdvcmRzIGhhdmUgbm8gaW5m bHVlbmNlICovDQo+ICsJcGVmMjI1Nl9zZXRiaXRzOChwZWYyMjU2LCBQRUYyMjU2X1JDMCwgUEVG MjI1Nl9SQzBfU1dEKTsNCj4gKw0KPiArCS8qIDQgY29uc2VjdXRpdmUgaW5jb3JyZWN0IEZBUyBj YXVzZXMgbG9zcyBvZiBzeW5jICovDQo+ICsJcGVmMjI1Nl9zZXRiaXRzOChwZWYyMjU2LCBQRUYy MjU2X1JDMCwgUEVGMjI1Nl9SQzBfQVNZNCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVm MjI1Nl9zZXR1cF9lMShzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NikNCj4gK3sNCj4gKwlpbnQgcmV0 Ow0KPiArDQo+ICsJLyogU2V0dXAsIE1hc3RlciBjbG9ja2luZyBtb2RlIChHQ004Li4xKSAqLw0K PiArCXJldCA9IHBlZjIyNTZfc2V0dXBfZ2NtKHBlZjIyNTYpOw0KPiArCWlmIChyZXQpDQo+ICsJ CXJldHVybiByZXQ7DQo+ICsNCj4gKwkvKiBTZWxlY3QgRTEgbW9kZSAqLw0KPiArCXBlZjIyNTZf d3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfRk1SMSwgMHgwMCk7DQo+ICsNCj4gKwkvKiBpbnRlcm5h bCBzZWNvbmQgdGltZXIsIHBvd2VyIG9uICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1Niwg UEVGMjI1Nl9HQ1IsIDB4MDApOw0KPiArDQo+ICsJLyogU2V0dXAgbGluZSBpbnRlcmZhY2UgKi8N Cj4gKwlyZXQgPSBwZWYyMjU2X3NldHVwX2UxX2xpbmUocGVmMjI1Nik7DQo+ICsJaWYgKHJldCkN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiArCS8qIFNldHVwIExvc3Mtb2Ytc2lnbmFsIGRldGVj dGlvbiBhbmQgcmVjb3ZlcnkgKi8NCj4gKwlwZWYyMjU2X3NldHVwX2UxX2xvcyhwZWYyMjU2KTsN Cj4gKw0KPiArCS8qIFNldHVwIHN5c3RlbSBpbnRlcmZhY2UgKi8NCj4gKwlyZXQgPSBwZWYyMjU2 X3NldHVwX2UxX3N5c3RlbShwZWYyMjU2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0 Ow0KPiArDQo+ICsJLyogU2V0dXAgc2lnbmFsaW5nICovDQo+ICsJcGVmMjI1Nl9zZXR1cF9lMV9z aWduYWxpbmcocGVmMjI1Nik7DQo+ICsNCj4gKwkvKiBTZXR1cCBlcnJvcnMgY291bnRlcnMgYW5k IGNvbmRpdGlvbiAqLw0KPiArCXBlZjIyNTZfc2V0dXBfZTFfZXJyb3JzKHBlZjIyNTYpOw0KPiAr DQo+ICsJLyogc3RhdHVzIGNoYW5nZWQgaW50ZXJydXB0IGF0IGJvdGggdXAgYW5kIGRvd24gKi8N Cj4gKwlwZWYyMjU2X3NldGJpdHM4KHBlZjIyNTYsIFBFRjIyNTZfR0NSLCBQRUYyMjU2X0dDUl9T Q0kpOw0KPiArDQo+ICsJLyogQ2xlYXIgYW55IElTUjIgcGVuZGluZyBpbnRlcnJ1cHRzIGFuZCB1 bm1hc2sgbmVlZGVkIGludGVycnVwdHMgKi8NCj4gKwlwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBF RjIyNTZfSVNSMik7DQo+ICsJcGVmMjI1Nl9jbHJiaXRzOChwZWYyMjU2LCBQRUYyMjU2X0lNUjIs IFBFRjIyNTZfSU5UMl9MT1MgfCBQRUYyMjU2X0lOVDJfQUlTKTsNCj4gKw0KPiArCS8qIHJlc2V0 IGxpbmVzICovDQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9DTURSLCBQRUYy MjU2X0NNRFJfUlJFUyB8IFBFRjIyNTZfQ01EUl9YUkVTKTsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIHZvaWQgcGVmMjI1Nl9pc3JfZGVmYXVsdF9oYW5kbGVyKHN0cnVjdCBw ZWYyMjU2ICpwZWYyMjU2LCB1OCBuYnIsIHU4IGlzcikNCj4gK3sNCj4gKwlkZXZfd2FybihwZWYy MjU2LT5kZXYsICJJU1IldTogMHglMDJ4IG5vdCBoYW5kbGVkXG4iLCBuYnIsIGlzcik7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBib29sIHBlZjIyNTZfaXNfY2Fycmllcl9vbihzdHJ1Y3QgcGVmMjI1 NiAqcGVmMjI1NikNCj4gK3sNCj4gKwl1OCBmcnMwOw0KPiArDQo+ICsJZnJzMCA9IHBlZjIyNTZf cmVhZDgocGVmMjI1NiwgUEVGMjI1Nl9GUlMwKTsNCj4gKwlyZXR1cm4gIShmcnMwICYgKFBFRjIy NTZfRlJTMF9MT1MgfCBQRUYyMjU2X0ZSUzBfQUlTKSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIHBlZjIyNTZfaXNyMl9oYW5kbGVyKHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2LCB1OCBuYnIs IHU4IGlzcikNCj4gK3sNCj4gKwlib29sIGNhcnJpZXI7DQo+ICsNCj4gKwlpZiAoaXNyICYgKFBF RjIyNTZfSU5UMl9MT1MgfCBQRUYyMjU2X0lOVDJfQUlTKSkgew0KPiArCQljYXJyaWVyID0gcGVm MjI1Nl9pc19jYXJyaWVyX29uKHBlZjIyNTYpOw0KPiArCQlpZiAoYXRvbWljX3hjaGcoJnBlZjIy NTYtPmNhcnJpZXIsIGNhcnJpZXIpICE9IGNhcnJpZXIpDQo+ICsJCQlmcmFtZXJfbm90aWZ5X3N0 YXR1c19jaGFuZ2UocGVmMjI1Ni0+ZnJhbWVyKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpcnFyZXR1cm5fdCBwZWYyMjU2X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKnByaXYpDQo+ ICt7DQo+ICsJc3RhdGljIHZvaWQgKCpwZWYyMjU2X2lzcl9oYW5kbGVyW10pKHN0cnVjdCBwZWYy MjU2ICosIHU4LCB1OCkgPSB7DQo+ICsJCVswXSA9IHBlZjIyNTZfaXNyX2RlZmF1bHRfaGFuZGxl ciwNCj4gKwkJWzFdID0gcGVmMjI1Nl9pc3JfZGVmYXVsdF9oYW5kbGVyLA0KPiArCQlbMl0gPSBw ZWYyMjU2X2lzcjJfaGFuZGxlciwNCj4gKwkJWzNdID0gcGVmMjI1Nl9pc3JfZGVmYXVsdF9oYW5k bGVyLA0KPiArCQlbNF0gPSBwZWYyMjU2X2lzcl9kZWZhdWx0X2hhbmRsZXIsDQo+ICsJCVs1XSA9 IHBlZjIyNTZfaXNyX2RlZmF1bHRfaGFuZGxlcg0KPiArCX07DQo+ICsJc3RydWN0IHBlZjIyNTYg KnBlZjIyNTYgPSAoc3RydWN0IHBlZjIyNTYgKilwcml2Ow0KPiArCXU4IGdpczsNCj4gKwl1OCBp c3I7DQo+ICsJdTggbjsNCj4gKw0KPiArCWdpcyA9IHBlZjIyNTZfcmVhZDgocGVmMjI1NiwgUEVG MjI1Nl9HSVMpOw0KPiArDQo+ICsJZm9yIChuID0gMDsgbiA8IEFSUkFZX1NJWkUocGVmMjI1Nl9p c3JfaGFuZGxlcik7IG4rKykgew0KPiArCQlpZiAoZ2lzICYgUEVGMjI1Nl9HSVNfSVNSKG4pKSB7 DQo+ICsJCQlpc3IgPSBwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBFRjIyNTZfSVNSKG4pKTsNCj4g KwkJCXBlZjIyNTZfaXNyX2hhbmRsZXJbbl0ocGVmMjI1NiwgbiwgaXNyKTsNCj4gKwkJfQ0KPiAr CX0NCj4gKw0KPiArCXJldHVybiBJUlFfSEFORExFRDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dCBwZWYyMjU2X2NoZWNrX3JhdGVzKHN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2LCB1bnNpZ25lZCBs b25nIHN5c2Nsa19yYXRlLA0KPiArCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YV9yYXRlKQ0K PiArew0KPiArCXVuc2lnbmVkIGxvbmcgcmF0ZTsNCj4gKw0KPiArCXN3aXRjaCAoc3lzY2xrX3Jh dGUpIHsNCj4gKwljYXNlIDIwNDgwMDA6DQo+ICsJY2FzZSA0MDk2MDAwOg0KPiArCWNhc2UgODE5 MjAwMDoNCj4gKwljYXNlIDE2Mzg0MDAwOg0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiAr CQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIlVuc3VwcG9ydGVkIHN5c3RlbSBjbG9jayByYXRlICVs dVxuIiwgc3lzY2xrX3JhdGUpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4g Kwlmb3IgKHJhdGUgPSBkYXRhX3JhdGU7IHJhdGUgPD0gZGF0YV9yYXRlICogNDsgcmF0ZSAqPSAy KSB7DQo+ICsJCWlmIChyYXRlID09IHN5c2Nsa19yYXRlKQ0KPiArCQkJcmV0dXJuIDA7DQo+ICsJ fQ0KPiArCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiVW5zdXBwb3J0ZWQgZGF0YSByYXRlICVsdSB3 aXRoIHN5c3RlbSBjbG9jayByYXRlICVsdVxuIiwNCj4gKwkJZGF0YV9yYXRlLCBzeXNjbGtfcmF0 ZSk7DQo+ICsJcmV0dXJuIC1FSU5WQUw7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjU1 Nl9vZl9wYXJzZShzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1Niwgc3RydWN0IGRldmljZV9ub2RlICpu cCkNCj4gK3sNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJcGVmMjI1Ni0+ZGF0YV9yYXRlID0gMjA0 ODAwMDsNCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImxhbnRpcSxkYXRhLXJh dGUtYnBzIiwgJnBlZjIyNTYtPmRhdGFfcmF0ZSk7DQo+ICsJaWYgKHJldCAmJiByZXQgIT0gLUVJ TlZBTCkgew0KPiArCQlkZXZfZXJyKHBlZjIyNTYtPmRldiwgIiVwT0Y6IGZhaWxlZCB0byByZWFk IGxhbnRpcSxkYXRhLXJhdGUtYnBzXG4iLCBucCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0K PiArDQo+ICsJcmV0ID0gIHBlZjIyNTZfY2hlY2tfcmF0ZXMocGVmMjI1NiwgcGVmMjI1Ni0+c3lz Y2xrX3JhdGUsIHBlZjIyNTYtPmRhdGFfcmF0ZSk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJu IHJldDsNCj4gKw0KPiArCXBlZjIyNTYtPmlzX3R4X2ZhbGxpbmdfZWRnZSA9IG9mX3Byb3BlcnR5 X3JlYWRfYm9vbChucCwgImxhbnRpcSxjbG9jay1mYWxsaW5nLWVkZ2UiKTsNCj4gKw0KPiArCXBl ZjIyNTYtPmNoYW5uZWxfcGhhc2UgPSAwOw0KPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTgo bnAsICJsYW50aXEsY2hhbm5lbC1waGFzZSIsICZwZWYyMjU2LT5jaGFubmVsX3BoYXNlKTsNCj4g KwlpZiAocmV0ICYmIHJldCAhPSAtRUlOVkFMKSB7DQo+ICsJCWRldl9lcnIocGVmMjI1Ni0+ZGV2 LCAiJXBPRjogZmFpbGVkIHRvIHJlYWQgbGFudGlxLGNoYW5uZWwtcGhhc2VcbiIsDQo+ICsJCQlu cCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArCWlmIChwZWYyMjU2LT5jaGFubmVsX3Bo YXNlID49IHBlZjIyNTYtPnN5c2Nsa19yYXRlIC8gcGVmMjI1Ni0+ZGF0YV9yYXRlKSB7DQo+ICsJ CWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiJXBPRjogSW52YWxpZCBsYW50aXEsY2hhbm5lbC1waGFz ZSAldVxuIiwNCj4gKwkJCW5wLCBwZWYyMjU2LT5jaGFubmVsX3BoYXNlKTsNCj4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBwZWYyMjU2X3JlZ21hcF9jb25maWcgPSB7DQo+ ICsJLnJlZ19iaXRzID0gMzIsDQo+ICsJLnZhbF9iaXRzID0gOCwNCj4gKwkubWF4X3JlZ2lzdGVy ID0gMHhmZiwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWZkX2NlbGwgcGVm MjI1Nl9kZXZzW10gPSB7DQo+ICsJeyAubmFtZSA9ICJsYW50aXEtcGVmMjI1Ni1waW5jdHJsIiwg fSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9hZGRfYXVkaW9fZGV2aWNlcyhz dHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NikNCj4gK3sNCj4gKwljb25zdCBjaGFyICpjb21wYXRpYmxl ID0gImxhbnRpcSxwZWYyMjU2LWNvZGVjIjsNCj4gKwlzdHJ1Y3QgbWZkX2NlbGwgKmF1ZGlvX2Rl dnM7DQo+ICsJc3RydWN0IGRldmljZV9ub2RlICpucDsNCj4gKwl1bnNpZ25lZCBpbnQgY291bnQg PSAwOw0KPiArCXVuc2lnbmVkIGludCBpOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlmb3JfZWFj aF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShwZWYyMjU2LT5kZXYtPm9mX25vZGUsIG5wKSB7DQo+ ICsJCWlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShucCwgY29tcGF0aWJsZSkpDQo+ICsJCQlj b3VudCsrOw0KPiArCX0NCj4gKw0KPiArCWlmICghY291bnQpDQo+ICsJCXJldHVybiAwOw0KPiAr DQo+ICsJYXVkaW9fZGV2cyA9IGtjYWxsb2MoY291bnQsIHNpemVvZigqYXVkaW9fZGV2cyksIEdG UF9LRVJORUwpOw0KPiArCWlmICghYXVkaW9fZGV2cykNCj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgew0KPiArCQkoYXVkaW9fZGV2cyAr IGkpLT5uYW1lID0gImZyYW1lci1jb2RlYyI7DQo+ICsJCShhdWRpb19kZXZzICsgaSktPm9mX2Nv bXBhdGlibGUgPSBjb21wYXRpYmxlOw0KPiArCQkoYXVkaW9fZGV2cyArIGkpLT5pZCA9IGk7DQo+ ICsJfQ0KPiArDQo+ICsJcmV0ID0gbWZkX2FkZF9kZXZpY2VzKHBlZjIyNTYtPmRldiwgMCwgYXVk aW9fZGV2cywgY291bnQsIE5VTEwsIDAsIE5VTEwpOw0KPiArCWtmcmVlKGF1ZGlvX2RldnMpOw0K PiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9mcmFtZXJf Z2V0X3N0YXR1cyhzdHJ1Y3QgZnJhbWVyICpmcmFtZXIsIHN0cnVjdCBmcmFtZXJfc3RhdHVzICpz dGF0dXMpDQo+ICt7DQo+ICsJc3RydWN0IHBlZjIyNTYgKnBlZjIyNTYgPSBmcmFtZXJfZ2V0X2Ry dmRhdGEoZnJhbWVyKTsNCj4gKw0KPiArCXN0YXR1cy0+bGlua19pc19vbiA9ICEhYXRvbWljX3Jl YWQoJnBlZjIyNTYtPmNhcnJpZXIpOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgaW50IHBlZjIyNTZfZnJhbWVyX3NldF9jb25maWcoc3RydWN0IGZyYW1lciAqZnJhbWVyLCBj b25zdCBzdHJ1Y3QgZnJhbWVyX2NvbmZpZyAqY29uZmlnKQ0KPiArew0KPiArCXN0cnVjdCBwZWYy MjU2ICpwZWYyMjU2ID0gZnJhbWVyX2dldF9kcnZkYXRhKGZyYW1lcik7DQo+ICsNCj4gKwlpZiAo Y29uZmlnLT5pZmFjZSAhPSBGUkFNRVJfSUZBQ0VfRTEpIHsNCj4gKwkJZGV2X2VycihwZWYyMjU2 LT5kZXYsICJPbmx5IEUxIGxpbmUgaXMgY3VycmVudGx5IHN1cHBvcnRlZFxuIik7DQo+ICsJCXJl dHVybiAtRU9QTk9UU1VQUDsNCj4gKwl9DQo+ICsNCj4gKwlzd2l0Y2ggKGNvbmZpZy0+Y2xvY2tf dHlwZSkgew0KPiArCWNhc2UgRlJBTUVSX0NMT0NLX0VYVDoNCj4gKwkJcGVmMjI1Ni0+aXNfc3Vi b3JkaW5hdGUgPSB0cnVlOw0KPiArCQlicmVhazsNCj4gKwljYXNlIEZSQU1FUl9DTE9DS19JTlQ6 DQo+ICsJCXBlZjIyNTYtPmlzX3N1Ym9yZGluYXRlID0gZmFsc2U7DQo+ICsJCWJyZWFrOw0KPiAr CWRlZmF1bHQ6DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCS8qIEFwcGx5 IHRoZSBuZXcgc2V0dGluZ3MgKi8NCj4gKwlyZXR1cm4gcGVmMjI1Nl9zZXR1cF9lMShwZWYyMjU2 KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBwZWYyMjU2X2ZyYW1lcl9nZXRfY29uZmlnKHN0 cnVjdCBmcmFtZXIgKmZyYW1lciwgc3RydWN0IGZyYW1lcl9jb25maWcgKmNvbmZpZykNCj4gK3sN Cj4gKwlzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiA9IGZyYW1lcl9nZXRfZHJ2ZGF0YShmcmFtZXIp Ow0KPiArDQo+ICsJY29uZmlnLT5pZmFjZSA9IEZSQU1FUl9JRkFDRV9FMTsNCj4gKwljb25maWct PmNsb2NrX3R5cGUgPSBwZWYyMjU2LT5pc19zdWJvcmRpbmF0ZSA/IEZSQU1FUl9DTE9DS19FWFQg OiBGUkFNRVJfQ0xPQ0tfSU5UOw0KPiArCWNvbmZpZy0+bGluZV9jbG9ja19yYXRlID0gMjA0ODAw MDsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFt ZXJfb3BzIHBlZjIyNTZfZnJhbWVyX29wcyA9IHsNCj4gKwkub3duZXIgPSBUSElTX01PRFVMRSwN Cj4gKwkuZ2V0X3N0YXR1cyA9IHBlZjIyNTZfZnJhbWVyX2dldF9zdGF0dXMsDQo+ICsJLmdldF9j b25maWcgPSBwZWYyMjU2X2ZyYW1lcl9nZXRfY29uZmlnLA0KPiArCS5zZXRfY29uZmlnID0gcGVm MjI1Nl9mcmFtZXJfc2V0X2NvbmZpZywNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1 Nl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LT5kZXYub2Zfbm9kZTsNCj4gKwl1bnNpZ25lZCBsb25nIHNj bGtyX3JhdGUsIHNjbGt4X3JhdGU7DQo+ICsJc3RydWN0IGZyYW1lcl9wcm92aWRlciAqZnJhbWVy X3Byb3ZpZGVyOw0KPiArCXN0cnVjdCBwZWYyMjU2ICpwZWYyMjU2Ow0KPiArCWNvbnN0IGNoYXIg KnZlcnNpb25fdHh0Ow0KPiArCXZvaWQgX19pb21lbSAqaW9tZW07DQo+ICsJaW50IHJldDsNCj4g KwlpbnQgaXJxOw0KPiArDQo+ICsJcGVmMjI1NiA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBz aXplb2YoKnBlZjIyNTYpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIXBlZjIyNTYpDQo+ICsJCXJl dHVybiAtRU5PTUVNOw0KPiArDQo+ICsJcGVmMjI1Ni0+ZGV2ID0gJnBkZXYtPmRldjsNCj4gKwlh dG9taWNfc2V0KCZwZWYyMjU2LT5jYXJyaWVyLCAwKTsNCj4gKw0KPiArCXBlZjIyNTYtPmlzX3N1 Ym9yZGluYXRlID0gdHJ1ZTsNCj4gKwlwZWYyMjU2LT5mcmFtZV90eXBlID0gUEVGMjI1Nl9GUkFN RV9FMV9ET1VCTEVGUkFNRTsNCj4gKw0KPiArCWlvbWVtID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFw X3Jlc291cmNlKHBkZXYsIDApOw0KPiArCWlmIChJU19FUlIoaW9tZW0pKQ0KPiArCQlyZXR1cm4g UFRSX0VSUihpb21lbSk7DQo+ICsNCj4gKwlwZWYyMjU2LT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9p bml0X21taW8oJnBkZXYtPmRldiwgaW9tZW0sDQo+ICsJCQkJCQkmcGVmMjI1Nl9yZWdtYXBfY29u ZmlnKTsNCj4gKwlpZiAoSVNfRVJSKHBlZjIyNTYtPnJlZ21hcCkpIHsNCj4gKwkJZGV2X2Vycigm cGRldi0+ZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpc2UgUmVnbWFwICglbGQpXG4iLA0KPiArCQkJ UFRSX0VSUihwZWYyMjU2LT5yZWdtYXApKTsNCj4gKwkJcmV0dXJuIFBUUl9FUlIocGVmMjI1Ni0+ cmVnbWFwKTsNCj4gKwl9DQo+ICsNCj4gKwlwZWYyMjU2LT5tY2xrID0gZGV2bV9jbGtfZ2V0X2Vu YWJsZWQoJnBkZXYtPmRldiwgIm1jbGsiKTsNCj4gKwlpZiAoSVNfRVJSKHBlZjIyNTYtPm1jbGsp KQ0KPiArCQlyZXR1cm4gUFRSX0VSUihwZWYyMjU2LT5tY2xrKTsNCj4gKw0KPiArCXBlZjIyNTYt PnNjbGtyID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQoJnBkZXYtPmRldiwgInNjbGtyIik7DQo+ICsJ aWYgKElTX0VSUihwZWYyMjU2LT5zY2xrcikpDQo+ICsJCXJldHVybiBQVFJfRVJSKHBlZjIyNTYt PnNjbGtyKTsNCj4gKw0KPiArCXBlZjIyNTYtPnNjbGt4ID0gZGV2bV9jbGtfZ2V0X2VuYWJsZWQo JnBkZXYtPmRldiwgInNjbGt4Iik7DQo+ICsJaWYgKElTX0VSUihwZWYyMjU2LT5zY2xreCkpDQo+ ICsJCXJldHVybiBQVFJfRVJSKHBlZjIyNTYtPnNjbGt4KTsNCj4gKw0KPiArCS8qIEJvdGggU0NM S1IgKHJlY2VpdmUpIGFuZCBTQ0xLWCAodHJhbnNtaXQpIG11c3QgaGF2ZSB0aGUgc2FtZSByYXRl LA0KPiArCSAqIHN0b3JlZCBhcyBzeXNjbGtfcmF0ZS4NCj4gKwkgKiBUaGUgZXhhY3QgdmFsdWUg d2lsbCBiZSBjaGVja2VkIGF0IHBlZjIyNTZfY2hlY2tfcmF0ZXMoKQ0KPiArCSAqLw0KPiArCXNj bGtyX3JhdGUgPSBjbGtfZ2V0X3JhdGUocGVmMjI1Ni0+c2Nsa3IpOw0KPiArCXNjbGt4X3JhdGUg PSBjbGtfZ2V0X3JhdGUocGVmMjI1Ni0+c2Nsa3gpOw0KPiArCWlmIChzY2xrcl9yYXRlICE9IHNj bGt4X3JhdGUpIHsNCj4gKwkJZGV2X2VycihwZWYyMjU2LT5kZXYsICJjbGsgcmF0ZSBtaXNtYXRj aC4gc2Nsa3IgJWx1IEh6LCBzY2xreCAlbHUgSHpcbiIsDQo+ICsJCQlzY2xrcl9yYXRlLCBzY2xr eF9yYXRlKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArCXBlZjIyNTYtPnN5c2Ns a19yYXRlID0gc2Nsa3JfcmF0ZTsNCj4gKw0KPiArCS8qIFJlc2V0IHRoZSBjb21wb25lbnQuIFRo ZSBNQ0xLIGNsb2NrIG11c3QgYmUgYWN0aXZlIGR1cmluZyByZXNldCAqLw0KPiArCXBlZjIyNTYt PnJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbCgmcGRldi0+ZGV2LCAicmVzZXQi LCBHUElPRF9PVVRfTE9XKTsNCj4gKwlpZiAoSVNfRVJSKHBlZjIyNTYtPnJlc2V0X2dwaW8pKQ0K PiArCQlyZXR1cm4gUFRSX0VSUihwZWYyMjU2LT5yZXNldF9ncGlvKTsNCj4gKwlpZiAocGVmMjI1 Ni0+cmVzZXRfZ3Bpbykgew0KPiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAocGVmMjI1Ni0+ cmVzZXRfZ3BpbywgMSk7DQo+ICsJCXVzbGVlcF9yYW5nZSgxMCwgMjApOw0KPiArCQlncGlvZF9z ZXRfdmFsdWVfY2Fuc2xlZXAocGVmMjI1Ni0+cmVzZXRfZ3BpbywgMCk7DQo+ICsJCXVzbGVlcF9y YW5nZSgxMCwgMjApOw0KPiArCX0NCj4gKw0KPiArCXBlZjIyNTYtPnZlcnNpb24gPSBwZWYyMjU2 X2dldF92ZXJzaW9uKHBlZjIyNTYpOw0KPiArCXN3aXRjaCAocGVmMjI1Ni0+dmVyc2lvbikgew0K PiArCWNhc2UgUEVGMjI1Nl9WRVJTSU9OXzFfMjoNCj4gKwkJdmVyc2lvbl90eHQgPSAiMS4yIjsN Cj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBQRUYyMjU2X1ZFUlNJT05fMl8xOg0KPiArCQl2ZXJzaW9u X3R4dCA9ICIyLjEiOw0KPiArCQlicmVhazsNCj4gKwljYXNlIFBFRjIyNTZfVkVSU0lPTl8yXzI6 DQo+ICsJCXZlcnNpb25fdHh0ID0gIjIuMiI7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ ICsJCXJldHVybiAtRU5PREVWOw0KPiArCX0NCj4gKwlkZXZfaW5mbyhwZWYyMjU2LT5kZXYsICJW ZXJzaW9uICVzIGRldGVjdGVkXG4iLCB2ZXJzaW9uX3R4dCk7DQo+ICsNCj4gKwlyZXQgPSBwZWYy NTU2X29mX3BhcnNlKHBlZjIyNTYsIG5wKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gcmV0 Ow0KPiArDQo+ICsJLyogQ3JlYXRlIHRoZSBmcmFtZXIuIEl0IGNhbiBiZSB1c2VkIG9uIGludGVy cnVwdHMgKi8NCj4gKwlwZWYyMjU2LT5mcmFtZXIgPSBkZXZtX2ZyYW1lcl9jcmVhdGUocGVmMjI1 Ni0+ZGV2LCBOVUxMLCAmcGVmMjI1Nl9mcmFtZXJfb3BzKTsNCj4gKwlpZiAoSVNfRVJSKHBlZjIy NTYtPmZyYW1lcikpDQo+ICsJCXJldHVybiBQVFJfRVJSKHBlZjIyNTYtPmZyYW1lcik7DQo+ICsN Cj4gKwlmcmFtZXJfc2V0X2RydmRhdGEocGVmMjI1Ni0+ZnJhbWVyLCBwZWYyMjU2KTsNCj4gKw0K PiArCS8qIERpc2FibGUgaW50ZXJydXB0cyAqLw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYs IFBFRjIyNTZfSU1SMCwgMHhmZik7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1 Nl9JTVIxLCAweGZmKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0lNUjIs IDB4ZmYpOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZfSU1SMywgMHhmZik7 DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9JTVI0LCAweGZmKTsNCj4gKwlw ZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0lNUjUsIDB4ZmYpOw0KPiArDQo+ICsJLyog Q2xlYXIgYW55IHBlbmRpbmcgaW50ZXJydXB0cyAqLw0KPiArCXBlZjIyNTZfcmVhZDgocGVmMjI1 NiwgUEVGMjI1Nl9JU1IwKTsNCj4gKwlwZWYyMjU2X3JlYWQ4KHBlZjIyNTYsIFBFRjIyNTZfSVNS MSk7DQo+ICsJcGVmMjI1Nl9yZWFkOChwZWYyMjU2LCBQRUYyMjU2X0lTUjIpOw0KPiArCXBlZjIy NTZfcmVhZDgocGVmMjI1NiwgUEVGMjI1Nl9JU1IzKTsNCj4gKwlwZWYyMjU2X3JlYWQ4KHBlZjIy NTYsIFBFRjIyNTZfSVNSNCk7DQo+ICsJcGVmMjI1Nl9yZWFkOChwZWYyMjU2LCBQRUYyMjU2X0lT UjUpOw0KPiArDQo+ICsJaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gKwlpZiAo aXJxIDwgMCkNCj4gKwkJcmV0dXJuIGlycTsNCj4gKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKHBl ZjIyNTYtPmRldiwgaXJxLCBwZWYyMjU2X2lycV9oYW5kbGVyLCAwLCAicGVmMjI1NiIsIHBlZjIy NTYpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgcGVmMjI1Nik7DQo+ICsNCj4gKwlyZXQgPSBtZmRfYWRkX2Rl dmljZXMocGVmMjI1Ni0+ZGV2LCAwLCBwZWYyMjU2X2RldnMsDQo+ICsJCQkgICAgICBBUlJBWV9T SVpFKHBlZjIyNTZfZGV2cyksIE5VTEwsIDAsIE5VTEwpOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJ ZGV2X2VycihwZWYyMjU2LT5kZXYsICJhZGQgZGV2aWNlcyBmYWlsZWQgKCVkKVxuIiwgcmV0KTsN Cj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwlyZXQgPSBwZWYyMjU2X3NldHVwX2Ux KHBlZjIyNTYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlmcmFt ZXJfcHJvdmlkZXIgPSBkZXZtX2ZyYW1lcl9wcm92aWRlcl9vZl9yZWdpc3RlcihwZWYyMjU2LT5k ZXYsDQo+ICsJCQkJCQkJICAgZnJhbWVyX3Byb3ZpZGVyX3NpbXBsZV9vZl94bGF0ZSk7DQo+ICsJ aWYgKElTX0VSUihmcmFtZXJfcHJvdmlkZXIpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihmcmFtZXJf cHJvdmlkZXIpOw0KPiArDQo+ICsJLyogQWRkIGF1ZGlvIGRldmljZXMgKi8NCj4gKwlyZXQgPSBw ZWYyMjU2X2FkZF9hdWRpb19kZXZpY2VzKHBlZjIyNTYpOw0KPiArCWlmIChyZXQgPCAwKSB7DQo+ ICsJCWRldl9lcnIocGVmMjI1Ni0+ZGV2LCAiYWRkIGF1ZGlvIGRldmljZXMgZmFpbGVkICglZClc biIsIHJldCk7DQo+ICsJCXJldHVybiByZXQ7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcGVmMjI1Nl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NiA9IHBsYXRmb3Jt X2dldF9kcnZkYXRhKHBkZXYpOw0KPiArDQo+ICsJLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovDQo+ ICsJcGVmMjI1Nl93cml0ZTgocGVmMjI1NiwgUEVGMjI1Nl9JTVIwLCAweGZmKTsNCj4gKwlwZWYy MjU2X3dyaXRlOChwZWYyMjU2LCBQRUYyMjU2X0lNUjEsIDB4ZmYpOw0KPiArCXBlZjIyNTZfd3Jp dGU4KHBlZjIyNTYsIFBFRjIyNTZfSU1SMiwgMHhmZik7DQo+ICsJcGVmMjI1Nl93cml0ZTgocGVm MjI1NiwgUEVGMjI1Nl9JTVIzLCAweGZmKTsNCj4gKwlwZWYyMjU2X3dyaXRlOChwZWYyMjU2LCBQ RUYyMjU2X0lNUjQsIDB4ZmYpOw0KPiArCXBlZjIyNTZfd3JpdGU4KHBlZjIyNTYsIFBFRjIyNTZf SU1SNSwgMHhmZik7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcGVmMjI1Nl9pZF90YWJsZVtdID0gew0KPiArCXsgLmNv bXBhdGlibGUgPSAibGFudGlxLHBlZjIyNTYiIH0sDQo+ICsJe30gLyogc2VudGluZWwgKi8NCj4g K307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBwZWYyMjU2X2lkX3RhYmxlKTsNCj4gKw0K PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcGVmMjI1Nl9kcml2ZXIgPSB7DQo+ICsJ LmRyaXZlciA9IHsNCj4gKwkJLm5hbWUgPSAibGFudGlxLXBlZjIyNTYiLA0KPiArCQkub2ZfbWF0 Y2hfdGFibGUgPSBwZWYyMjU2X2lkX3RhYmxlLA0KPiArCX0sDQo+ICsJLnByb2JlID0gcGVmMjI1 Nl9wcm9iZSwNCj4gKwkucmVtb3ZlID0gcGVmMjI1Nl9yZW1vdmUsDQo+ICt9Ow0KPiArbW9kdWxl X3BsYXRmb3JtX2RyaXZlcihwZWYyMjU2X2RyaXZlcik7DQo+ICsNCj4gK3N0cnVjdCByZWdtYXAg KnBlZjIyNTZfZ2V0X3JlZ21hcChzdHJ1Y3QgcGVmMjI1NiAqcGVmMjI1NikNCj4gK3sNCj4gKwly ZXR1cm4gcGVmMjI1Ni0+cmVnbWFwOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwocGVmMjI1 Nl9nZXRfcmVnbWFwKTsNCj4gKw0KPiArTU9EVUxFX0FVVEhPUigiSGVydmUgQ29kaW5hIDxoZXJ2 ZS5jb2RpbmFAYm9vdGxpbi5jb20+Iik7DQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlBFRjIyNTYg ZHJpdmVyIik7DQo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2ZyYW1lci9wZWYyMjU2LmggYi9pbmNsdWRlL2xpbnV4L2ZyYW1lci9wZWYyMjU2 LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi43MWQ4MGFm NThjNDANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L2ZyYW1lci9wZWYy MjU2LmgNCj4gQEAgLTAsMCArMSwzMSBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb3ItbGF0ZXIgKi8NCj4gKy8qDQo+ICsgKiBQRUYyMjU2IGNvbnN1bWVyIEFQSQ0K PiArICoNCj4gKyAqIENvcHlyaWdodCAyMDIzIENTIEdST1VQIEZyYW5jZQ0KPiArICoNCj4gKyAq IEF1dGhvcjogSGVydmUgQ29kaW5hIDxoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+DQo+ICsgKi8N Cj4gKyNpZm5kZWYgX19QRUYyMjU2X0hfXw0KPiArI2RlZmluZSBfX1BFRjIyNTZfSF9fDQo+ICsN Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiArDQo+ICtzdHJ1Y3QgcGVmMjI1NjsNCj4g K3N0cnVjdCByZWdtYXA7DQo+ICsNCj4gKy8qIFJldHJpZXZlIHRoZSBQRUYyMjU2IHJlZ21hcCAq Lw0KPiArc3RydWN0IHJlZ21hcCAqcGVmMjI1Nl9nZXRfcmVnbWFwKHN0cnVjdCBwZWYyMjU2ICpw ZWYyMjU2KTsNCj4gKw0KPiArLyogUEVGMjI1NiBoYXJkd2FyZSB2ZXJzaW9ucyAqLw0KPiArZW51 bSBwZWYyMjU2X3ZlcnNpb24gew0KPiArCVBFRjIyNTZfVkVSU0lPTl9VTktOT1dOLA0KPiArCVBF RjIyNTZfVkVSU0lPTl8xXzIsDQo+ICsJUEVGMjI1Nl9WRVJTSU9OXzJfMSwNCj4gKwlQRUYyMjU2 X1ZFUlNJT05fMl8yLA0KPiArfTsNCj4gKw0KPiArLyogR2V0IHRoZSBQRUYyMjU2IGhhcmR3YXJl IHZlcnNpb24gKi8NCj4gK2VudW0gcGVmMjI1Nl92ZXJzaW9uIHBlZjIyNTZfZ2V0X3ZlcnNpb24o c3RydWN0IHBlZjIyNTYgKnBlZjIyNTYpOw0KPiArDQo+ICsjZW5kaWYgLyogX19QRUYyMjU2X0hf XyAqLw0K