Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp156928imu; Thu, 8 Nov 2018 06:30:32 -0800 (PST) X-Google-Smtp-Source: AJdET5e+08s6d0ghNeO27T+Sd7SMCr7EBP1vbVxHHa8foe6X94HKbWll0sirEVqSRSyh+duQ9+tT X-Received: by 2002:a17:902:4324:: with SMTP id i33-v6mr4839175pld.253.1541687432725; Thu, 08 Nov 2018 06:30:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541687432; cv=none; d=google.com; s=arc-20160816; b=vgWNYw6JA7P12suo6P9NLWPTr2T5VQHBGWHeYG+4fqrJgb5pJABMLZpEQrwnLzeOot uFpfzW8CpuiFNurv1A9Fi0w8hNxMXK2ID0A/oiQ4DOhEergCm86qAxNw77BqU6Z2S+v4 sTTDvt9CCniDjDoM/UnzKdG9geMOYbi5EbYZZ5BTaHBWOzxLsF5bxu9xYHpLrrXpozOe UhONW6nWmiU0jPbjH1RxHUdSVVv0jXLeW3dOmA/fxbpxZ5I0Z/GYqkku991kmscx5LO4 ugZh9HUCSIRH//y5jMDcdhK+j3glO+oLpoHhjTey3z0MrGcJlqWw9QupgJt5Gq6AYJj0 f2BQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:spamdiagnosticmetadata :spamdiagnosticoutput: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=lkz8j+9/+dX+dnCWwhaB3FcLW4QrqAs+CbsfILsQt8s=; b=YkyynY4ObEtTbxPXZtAeko2knO+eixKRuIx8f2AkIj//fu/gscmPKuNiGZQ256Bc5d o1likhlIpDMYryX/qfCLRN6ANuSdt7QyPpXRIQfkl7BDtmLxa1iWbQaJrV3lnsN4wQSa 4PB3Bfw/BeoqOqiiVSsSfpRJkPxMUa2YQrG33ULFlaRpp9VtGvyY6Sqs8MfDFz2JuPbp tKQVsFFfeQq3wMqXwNqOdnmL7TrRdHJf7g398yjNmVwH5JPq5uhx+c5BJ4Qd1MtqLLJp 3/ZUQyShMtzx8EhvJX47zS2Ph6KZAhh0sAvuafzPDDwOeB1w+mJpA71ZN+UiZekOhmoD lNDQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector1-analog-com header.b=OjNVWojt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p3-v6si4426766pff.272.2018.11.08.06.30.16; Thu, 08 Nov 2018 06:30:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@analog.onmicrosoft.com header.s=selector1-analog-com header.b=OjNVWojt; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727079AbeKIAEu (ORCPT + 99 others); Thu, 8 Nov 2018 19:04:50 -0500 Received: from mail-sn1nam02on0073.outbound.protection.outlook.com ([104.47.36.73]:32896 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726890AbeKIAEt (ORCPT ); Thu, 8 Nov 2018 19:04:49 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.onmicrosoft.com; s=selector1-analog-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lkz8j+9/+dX+dnCWwhaB3FcLW4QrqAs+CbsfILsQt8s=; b=OjNVWojtOTZbFP6Z3mco3laLvyQaMgFZbLWyq2e4etQ0jZYWADtRL2nrNEmVBnDqBnuvotxAhIAZpEHhM7aGPl5Iz1jVMifdlrrX/8y7guwfDs4aoMN2YiUtl6l/ToewA035lGIHaCN+q2TuOMlxpucIUbwReCecwpiL2y82YMQ= Received: from BN3PR03CA0107.namprd03.prod.outlook.com (2603:10b6:400:4::25) by BY2PR03MB555.namprd03.prod.outlook.com (2a01:111:e400:2c37::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.20; Thu, 8 Nov 2018 14:28:53 +0000 Received: from BY2FFO11FD024.protection.gbl (2a01:111:f400:7c0c::137) by BN3PR03CA0107.outlook.office365.com (2603:10b6:400:4::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1294.21 via Frontend Transport; Thu, 8 Nov 2018 14:28:53 +0000 Authentication-Results: spf=pass (sender IP is 137.71.25.55) smtp.mailfrom=analog.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=analog.com; Received-SPF: Pass (protection.outlook.com: domain of analog.com designates 137.71.25.55 as permitted sender) receiver=protection.outlook.com; client-ip=137.71.25.55; helo=nwd2mta1.analog.com; Received: from nwd2mta1.analog.com (137.71.25.55) by BY2FFO11FD024.mail.protection.outlook.com (10.1.15.213) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.1294.14 via Frontend Transport; Thu, 8 Nov 2018 14:28:52 +0000 Received: from NWD2HUBCAS9.ad.analog.com (nwd2hubcas9.ad.analog.com [10.64.69.109]) by nwd2mta1.analog.com (8.13.8/8.13.8) with ESMTP id wA8ESpVr022689 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 8 Nov 2018 06:28:51 -0800 Received: from NWD2MBX5.ad.analog.com ([fe80::49e:7a9f:284e:1a49]) by NWD2HUBCAS9.ad.analog.com ([fe80::44a2:871b:49ab:ea47%12]) with mapi id 14.03.0210.002; Thu, 8 Nov 2018 09:28:51 -0500 From: "Popa, Stefan Serban" To: "jic23@kernel.org" , "robh+dt@kernel.org" CC: "knaack.h@gmx.de" , "lars@metafoo.de" , "pmeerw@pmeerw.net" , "Hennerich, Michael" , "gregkh@linuxfoundation.org" , "linux-iio@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v3 2/3] iio: adc: Add ad7124 support Thread-Topic: [PATCH v3 2/3] iio: adc: Add ad7124 support Thread-Index: AQHUb6XpJEA5nW78CEmCTW7LTZ+YdaU+QcAAgAgRfwA= Date: Thu, 8 Nov 2018 14:28:50 +0000 Message-ID: <1541687328.2091.2.camel@analog.com> References: <1540831111-3040-1-git-send-email-stefan.popa@analog.com> <20181103121606.2fc461ec@archlinux> In-Reply-To: <20181103121606.2fc461ec@archlinux> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.50.1.118] x-adiroutedonprem: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:137.71.25.55;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(376002)(136003)(396003)(39860400002)(346002)(2980300002)(438002)(37524003)(189003)(199004)(575784001)(14444005)(50466002)(86362001)(246002)(2616005)(336012)(47776003)(8936002)(486006)(106002)(316002)(54906003)(110136005)(6116002)(3846002)(305945005)(966005)(14454004)(11346002)(426003)(2906002)(126002)(476003)(106466001)(7636002)(2501003)(8676002)(478600001)(436003)(7736002)(103116003)(446003)(72206003)(36756003)(23676004)(186003)(2486003)(4326008)(26005)(7696005)(6306002)(4744004)(2900100001)(229853002)(356004)(1720100001)(345774005)(6246003)(102836004)(5660300001)(76176011)(87944003);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR03MB555;H:nwd2mta1.analog.com;FPR:;SPF:Pass;LANG:en;PTR:nwd2mail10.analog.com;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD024;1:GVdsEEzHqkBmY64V9L8eIsqzG/MSowRdTnwdOZU7ajNoLNHO6fSZoelfXnr97d7iuYp85211B4pbjIqIZ6qGspZFORvcASvTAZ82Tp1HfZndjXHQvMDkSeSLHad3L10Z X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a30eeb55-c4b2-4004-842c-08d6458681e1 X-Microsoft-Antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4608076)(2017052603328)(7153060)(7193020);SRVR:BY2PR03MB555; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB555;3:lnxQo1B6v5VwTnA/bSODh3Y3kOlLYQJ2TX1TuxUlhSs1AZbO7bzOyWeSsV5mhDTIOEFwrxafbvZqEp78nuwaNecWg5/NIrY/m81kr7E9SFU1c0tAvWLm8fj61MJCUeE/ADmTAXdAyhNsJtQRLj2bNlwrg2WVnfzp6c6OstsXlYAyxEdTprUbIyufWiE1AuisaheAmE99iet6kGCMSKJa5FAnYExXA7ez21FIcHVDilGwtkMV1EsRu5e6o1nGZHv2nJf/RP9O4dH9StMqefrFviF24ty8m19mGgbf2MP6AiEtsUSS/LHuVWe7vqLLt+5baPgqkHzpViYqp5/xEyVQOpbI1+ZPxR25b1HwjFNySuw=;25:4JBxT3TUgp0ePUkKIto4kHbiIXIbuOGHPrL+zqv4EqDkk8qrgFO+wvPdlkiaJ24xtfRWEs0NKb5puqVNHnyTa2D31zWLyfkct43vznsMsflseJ3rKKs2ST6RMm5CxW+EIo38rsbDU2o7q9ze/pjMz06f7jf5cNL2PraHQ71CGE2FtUuxeaJGFBVLBWLdTHiUngXjhNNJITxiRQIbwWkBD6+Rs9zGKyaUYdQ8xvz0aloNFUM1Vu0c9GCff0kGO0KOXhS74Efl1ypNZlBJY4/Yb97WhtqxLi2OjaZGKNYrif18Nf7VKsVPflSwo8Ju/q3wQq3vyMhfg/5pkov3rJqaxg== X-MS-TrafficTypeDiagnostic: BY2PR03MB555: X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB555;31:N6WFthaUEmlBr4zUjipzlEbNdgpiVLUO7ii7qRCFnahmiS8d0PwEiwAWraReehdX9BS9v/ybq74oRxJohG9tojpJtwZVHjISHj/tyEZiOmA5CRhC8wEkM6m3boDG+nfOSK5OEN73+Bunnko2Dsr1JSPzureEEh+ng9GG0AqEdUoa1HvEA7MZIWv9W1cyxLW/QUKqxi97hdbMCYSd3rR8Ms/7iP2CINcuK/fmGos0Szc=;20:qBGOUg2u2ynel5CMes1MvaQWAm7EuSC0j79+kxYq4vEV+I1UAycwYY0v98YqWEjb86i0Xr3xWo0duOMpDTM/I3UOB+U1y0CRrosEYpO3jGUABMO98sexc+pgM6BJ3EcrWKrsyEYnQ/8xdYWPlntyDIl+Khh6WeuFR7ehVMY+jXQtCRaF2DjG8/ADL+wPkMS8E5w319dLYrFQqW03v3mXCu8vkigcC4HRNiYOPaFTB2B5FNxsyAGuLERwQwAxg37UyaPzFjzQcLMqy30dc6LAQpf5eIVWhgV9d/cMz7hNuNpJ+Bu06PTYGNo63WHpvgHnlZ0cYUb61fX3C2HvchsGZS/9EzxJ4qUha7GwZ6nU2WGkN74X6fX4ODlhNMp6vDcjM4jq7yTiBBKWGXHs0du5QhU8a4Afiu7SuIW8u8IMuZ+qavQ37Vxoy9fW5mZE5lwwwuUQCLnzHd3lV5LNIQXZnOBSzy3EUHqdBy+ondaFV1FZy2wnJHod3/SFd9l8iBQ7 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(232431446821674)(270121546159015)(9452136761055)(170811661138872)(95692535739014); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93004095)(3231382)(944501410)(4982022)(52105095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201708071742011)(7699051)(76991095);SRVR:BY2PR03MB555;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB555; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB555;4:Y8mDE8L7AY9YVHzY4BVWC5/J5aijyQIwpS3AH+Q3X49C0XHCig+vwN0KQXZe9iEXA4jb0rfmvGD2wsVk5xLly9yb4Sx85RM+w3gEo1G5RRjRK3RE2kwWvapLE76Cy+s8l68OTVVpnkOHceX0SKndrtd84JFS0N/M+jqMdDAH/0yaTO702mqDgkfky3IuywYMHegJsI3m6mF03g8Dm+jCDiNT66vZkhicW+hcY6S1Qlhj+2HQ8kp38IdB6mluqVNKloipZsvZW5MGEabhMJeImTHOK1L3iLTNvEYJTh2/AwQ4gx6sfKoY8CMZXjnDCd2d5RtgyDYFlDFynpOu/30d8Fh7cgNi5Qiuhfs/XSGAa3K6YNVXvQAbqUTBQxzHEb+0jzqFzUExz+ExVnlIhY4D66dwPq3TUs2pctpGVRlyDfbr2kbQOEBN4AqmTLk25IWuhdUWPhZvYfrhdu7mzTmV0Q== X-Forefront-PRVS: 0850800A29 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjAzTUI1NTU7MjM6dktqRlRlVWVtZ1M5TVQ3MndkVzNJQlYxRVpX?= =?utf-8?B?VDNibitWZHpOUGt3YmhRcS9ReE9qdEUzOVdiTkxhZXRDcmE4cnpWYmpFQ2Fx?= =?utf-8?B?VDJGMW94YldZWEZBYWtmZDB5dllrdG40QVI1K3dwTW1pb3Z1ZFhDdGNXWlo0?= =?utf-8?B?cHNwNDJTYlRQRmJBRjE2bnVBSEdOTUJSdmFWVWs3SlFtRUVLYmx6L3JYWmlx?= =?utf-8?B?Q2E2Zm50NWFMa21xL2ZRa2NlVjZlY3BRN0wyU2YzRm1HOXFyekdaV2hTemd1?= =?utf-8?B?a1E3K0ZZWFdNTWRHWkIycnEvd0VmYmQvRE9SRFUwZmd6NlhLUDZyUE5RMjBW?= =?utf-8?B?SnU5K0hkMlAwZXk1bEtYSytCRWU1bmpaR0h0SUptK2l6UzlkRUc0bzJYOTBI?= =?utf-8?B?Y0VZdzNRdWJvYjl4NGJDRTRHSjE1RS94RHBqSGhhc0xvcER1S25rKzYvSnJl?= =?utf-8?B?Ti9QWCtBOGRobFFhUjZUQ09qczN1RkdsOUJONlAyY3k5SlNYM045NVVZL09x?= =?utf-8?B?ZnI5cmUxbnY3V2VaQjY2S1JlVVZZenFPWkJRNkYyc1ByNUV0bjNWTVV5NjRo?= =?utf-8?B?MUQ3TGU2WUJpcFc2TUxDSS93eTdyYWFMSGFyMWRaVTc4WVlyb1JEMk9XeWwz?= =?utf-8?B?enFLMWpTWHd0Z1VpanlMblZoQjNqUXp3VTFEbnZlZDY2UjNabHNMTVUzTmtR?= =?utf-8?B?bnhJUlFrUXVmVmozRDRBNFJDL2tpQVltZ0ZTV21vMXRnN2dKR0FqTytFZDVo?= =?utf-8?B?REF5YWl3NThxT2Vyb0VKaEtlVisyTmNvbTIyMENSLzdXR1BoNVkzL1pBaW5w?= =?utf-8?B?LzBaM2ViWjRvWVVPcTRzZHd4MmFwUFQ1WXluWFN2akhHZkZaRkpoMElHT08w?= =?utf-8?B?SkR5OERKR2lSamR0R0tXU2RPKzdXRHl1SmRScmhQeHYwNXpBUkZDeE9DTzRn?= =?utf-8?B?SnJOV0ZCWU55ZmZNZzg5bkpZVjJqR1ladzhvYXZ4NTZMK2M2NEcvN0NORkhl?= =?utf-8?B?S3l2ZDBGVmRsM250WXN1ZWJ3dkxFL1pESmRlQVEvQlllVmFqbTNEQ3hUallM?= =?utf-8?B?SVA5MHNCREJSMnh4aDFXdGkyWHpWUGp5TEZaTmdQajlLcndpcjRLSVFxbGRC?= =?utf-8?B?ejJYVHFEWVhMbVc4QXdUM3pZZkNBcTUzdmhjbXFBTlF1RitMSTMwODZiOVp1?= =?utf-8?B?MklaRks3WXFwajNQYlZuSWtSSkNGdHM0NlFSeThuQTR0dmRpTzhmdjNlQURm?= =?utf-8?B?VWtjL0Zmc0IrNEhSWUg5c1BOc1ZlYkdNZ1JzSWtLMExjWjB5dG9ZNXlCSzc1?= =?utf-8?B?b05uUVp1dEI0TkNjOXZSaVdUWWVnVVVydUdBQnAvQVltclhMa2FLTS9DR1VV?= =?utf-8?B?Yk4rMDFzS1V1MkVkcWJhMTRjR2tmUHBjQXNTRDJHSUNIUHg0VUQ2RjRuUmRs?= =?utf-8?B?T0I1TkZxbDVlbFM2ZlhHaWYyMFNIYjhQdDN0SjErenJGTnhaYlpsaFd3SDRB?= =?utf-8?B?ZDVmTWN6K0ZyNDRWRCsvaWk0ZEdxanQrRFlvaXNsa0FnNUMrOS9PeWlzckpX?= =?utf-8?B?NGZuZmxheEwyL2h2Rm42ekd3N1FGRHFCWko4dGhhbFZwWDEzQmN6eUFMQ3FI?= =?utf-8?B?ZDBRNndrTnZpNjlvd1ZZZGFMWUhia2JJNTFWTjNQb3lkVm42NzIwZ0hpTE9a?= =?utf-8?B?dytpNndrRDhUUG9Nb1FwWU5yR3NzTmdwQTRnQnAxd2dNYXEvS2NMTDZVT2dG?= =?utf-8?B?SlZjaFdtRTVrRHNhVDlLY2lpSm41L2xFNzMwOXBtNlNnVXQ5aDIvdExaZzF3?= =?utf-8?B?UURjZys5VytVMmhQUzRpVU5yNUM5YXFuc3p0cld3TzR6Zz09?= X-Microsoft-Antispam-Message-Info: 7Ar308b7fI0KMaBOdVRVs2EtHuhHpN+nhxzy2wRzONLYdIKQ08uR44M6f0VFd33U4UfeinkR792PTgu5wUaW1eleAtMCPCnFeIEtJWQp/GD6PUQ8FJtONra8yWd9HVJcNNQswasM+LX+nO9WoLG02W9XjdsxrH5ybb1qsN/H5scVejMsW+TCurP+iyCaBLqKZI5CORqpLWRAMpQSVtae1OhH+jgxOFQdifJpruEOOU575e2oFHgoXf83eUsklrQ93FhQUUXlYPnD3g6HTiJOlq+2tDQGKcc77zokDohophvRxVTTVDI1bu8J6z5RWZInZ4+BOpSF11RWqCsmrAmdyT/1MXYU4GtP6ZWM8i61raE= X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB555;6:5S4p4fHxxCkE3PHCLfLQtv1QB+we1b8DOwm01mQrvWCUyc2wgKaEypYfbTcIY/oLqGdXRVPw2o/eGSJGLmNFx6GR6TgHTDTWGPKxDeZ19CkjZfnEYnzlHk/LSj6+eyTOeQv66rGW/xZGf3sCX69swngV+wMHFq5LX+w6lzwTB8zns6UlHrYUiqaxDBwdkV4tNxXe6ru1e2K30drQ0RGxXrkS0RnpIo0c85jMJDOFRK1LrXLIiGxMLegCebGXg5IBwVMMNDN1k1qk3yDbl/fZoF6coa/LDkqUVzOTzAFxVeX1QRo3gh3SEDQOf2gXaX4DnytFOgKROYTKIXR89WsJSs8J/kpSVYNsHy5QLa2waphi7MVV99NL4jobdoJxUk+hsz6m105WN70XIxZair07s19ov9YRvtvpcuzaurgq+h3cajGXXUNpnKEpA/7lEKDhhp9r9h8reg6DYGrPcNL8Gg==;5:auz0iv9/Pv5dhoWAzJLLa1V8g9ftCUXFNT5ZnudAwwIJKbQHQJge1Kx9nelpSVn88ff2WW6sjuapPcNF1m1eyi/6itsphuKv4NAbV15dOG3639jhlVrbOyHWZGWDsgtZP/fr1aCGSnXiixyTy7tgDkM0lz2ZkyRCzmT5LaFyUgk=;7:pV6YpIR6B8OgEIRFNpEliqIhjTXOVc0KULiFnz58at+EXbbPUDuOU57BIkJvabFkRaUzuPhq04r56P3x8He3EZw2B9FnD6I0ibQsLCJmF4viDGmFAgzvcKkTyLXuXApEhA/p1Mqmjbrl3rw4iYIvKQ== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: analog.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2018 14:28:52.3666 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a30eeb55-c4b2-4004-842c-08d6458681e1 X-MS-Exchange-CrossTenant-Id: eaa689b4-8f87-40e0-9c6f-7228de4d754a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=eaa689b4-8f87-40e0-9c6f-7228de4d754a;Ip=[137.71.25.55];Helo=[nwd2mta1.analog.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB555 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gU2IsIDIwMTgtMTEtMDMgYXQgMTI6MTYgKzAwMDAsIEpvbmF0aGFuIENhbWVyb24gd3JvdGU6 DQo+IE9uIE1vbiwgMjkgT2N0IDIwMTggMTg6Mzg6MzEgKzAyMDANCj4gU3RlZmFuIFBvcGEgPHN0 ZWZhbi5wb3BhQGFuYWxvZy5jb20+IHdyb3RlOg0KPiANCj4gPiANCj4gPiBUaGUgYWQ3MTI0LTQg YW5kIGFkNzEyNC04IGFyZSBhIGZhbWlseSBvZiA0IGFuZCA4IGNoYW5uZWwgc2lnbWEtZGVsdGEN Cj4gPiBBRENzDQo+ID4gd2l0aCAyNC1iaXQgcHJlY2lzaW9uIGFuZCByZWZlcmVuY2UuDQo+ID4g DQo+ID4gVGhyZWUgcG93ZXIgbW9kZXMgYXJlIGF2YWlsYWJsZSB3aGljaCBpbiB0dXJuIGFmZmVj dCB0aGUgb3V0cHV0IGRhdGENCj4gPiByYXRlOg0KPiA+IMKgKiBGdWxsIHBvd2VyOiA5LjM4IFNQ UyB0byAxOSwyMDAgU1BTDQo+ID4gwqAqIE1pZCBwb3dlcjogMi4zNCBTUFMgdG8gNDgwMCBTUFMN Cj4gPiDCoCogTG93IHBvd2VyOiAxLjE3IFNQUyB0byAyNDAwIFNQUw0KPiA+IA0KPiA+IFRoZSBh ZDcxMjQtNCBjYW4gYmUgY29uZmlndXJlZCB0byBoYXZlIGZvdXIgZGlmZmVyZW50aWFsIGlucHV0 cywgd2hpbGUNCj4gPiBhZDcxMjQtOCBjYW4gaGF2ZSA4LiBNb3Jlb3ZlciwgYWQ3MTI0IGFsc28g c3VwcG9ydHMgcGVyIGNoYW5uZWwNCj4gPiBjb25maWd1cmF0aW9uLiBFYWNoIGNvbmZpZ3VyYXRp b24gY29uc2lzdHMgb2YgZ2FpbiwgcmVmZXJlbmNlIHNvdXJjZSwNCj4gPiBvdXRwdXQgZGF0YSBy YXRlIGFuZCBiaXBvbGFyL3VuaXBvbGFyIGNvbmZpZ3VyYXRpb24uDQo+ID4gDQo+ID4gRGF0YXNo ZWV0czoNCj4gPiBMaW5rOiBodHRwOi8vd3d3LmFuYWxvZy5jb20vbWVkaWEvZW4vdGVjaG5pY2Fs LWRvY3VtZW50YXRpb24vZGF0YS1zaGVldA0KPiA+IHMvQUQ3MTI0LTQucGRmDQo+ID4gTGluazog aHR0cDovL3d3dy5hbmFsb2cuY29tL21lZGlhL2VuL3RlY2huaWNhbC1kb2N1bWVudGF0aW9uL2Rh dGEtc2hlZXQNCj4gPiBzL2FkNzEyNC04LnBkZg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFN0 ZWZhbiBQb3BhIDxzdGVmYW4ucG9wYUBhbmFsb2cuY29tPg0KPiBIaSBTdGVmYW4sDQo+IA0KPiBU aGUgZGlzY3Vzc2lvbiBhcm91bmQgdGhlIERUIGJpbmRpbmcgaGFzIGdvdHRlbiBtZSBsb29raW5n IGF0IGJpdA0KPiBtb3JlIGNsb3NlbHkgYXQgdGhhdCBmb3IgdGhpcyB2ZXJzaW9uLg0KPiANCj4g U29tZSBtb3N0IGNvbW1lbnRzIGluIHRoYXQgc2VjdGlvbi7CoMKgQWxzbyBhIHJlYWxseSBtaW5v ciBvcmRlcmluZyBpc3N1ZQ0KPiBpbg0KPiByZW1vdmUgd2hpY2ggSSdkIGp1c3QgaGF2ZSBmaXhl ZCBpZiB3ZSB3ZXJlbid0IGdvaW5nIGFyb3VuZCBhZ2FpbiBmb3INCj4gdGhlIGJpbmRpbmcuDQo+ IA0KPiBNYWluIGJpbmRpbmcgdGhpbmcgaXMgSSBkb24ndCB0aGluayB0aGUgb2RyIHZhbHVlIGJl bG9uZ3MgaW4gRFQuDQo+IEdhaW4gaXMgbW9yZSBtYXJnaW5hbCAodW5sZXNzIHRoZSBwYXJ0IGNh biBhY3R1YWxseSBiZSBkYW1hZ2VkIGJ5DQo+IGEgd3JvbmcgdmFsdWUgLSB3aGljaCBJIGhvcGUg aXQgY2FuJ3QhKS7CoMKgSSdtIG5vdCB0aGF0IGZ1c3NlZA0KPiBhcyB0aGVyZSBhcmUgZGVmaW5p dGVseSByZWFzb25zIHRvIHNwZWNpZnkgYSBkZWZhdWx0IHNjYWxlIHRvDQo+IGNvdmVyIHRoZSBy ZWFzb25hYmxlIHJhbmdlIG9uIGEgcGluLg0KPiANCj4gVGhhbmtzLA0KPiANCj4gSm9uYXRoYW4N Cg0KSGkgSm9uYXRoYW4sDQoNClRoYW5rIHlvdSBmb3IgdGhlIHJldmlldyEgU28sIGhvdyBzaG91 bGQgSSBwcm9jZWVkPw0KDQpGaXJzdCwgd2UgbmVlZCBhbiBhZGMudHh0IGZpbGUgd2hlcmUgImJp cG9sYXIiIGFuZCBzb21ldGhpbmcgbGlrZSAiZGlmZi0NCmNoYW5uZWxzIiBzaG91bGQgYmUgZG9j dW1lbnRlZC4gU2hvdWxkIHRoZSBmaWxlIGJlIHBsYWNlZCB1bmRlcg0KRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGM/DQoNClJlZ2FyZGluZyB0aGUgIm9kci1oeiIgcHJv cGVydHksIGl0IHRvdGFsbHkgbWFrZXMgc2Vuc2UgdG8gcmVtb3ZlIGl0IGZyb20NCnRoZSBEVC4g SG93IGFib3V0IHRoZSAiZ2FpbiI/IFNob3VsZCB3ZSBsZWF2ZSBpdCBpbiB0aGUgRFQgYW5kIGFs c28gYWRkIHRoZQ0KcG9zc2liaWxpdHkgdG8gYmUgY29uZmlndXJlZCBmcm9tIHVzZXIgc3BhY2U/ DQoNClJlZ2FyZHMsDQotU3RlZmFuDQo+ID4gDQo+ID4gLS0tDQo+ID4gQ2hhbmdlcyBpbiB2MjoN Cj4gPiAJLSBBZGRlZCB0aGlzIGNvbW1pdC4NCj4gPiBDaGFuZ2VzIGluIHYzOg0KPiA+IAktIFJl bW92ZWQgY2hhbm5lbCwgYWRkcmVzcywgc2Nhbl9pbmRleCBhbmQgc2hpZnQgZmllbGRzIGZyb20N Cj4gPiAJwqDCoGFkNzEyNF9jaGFubmVsX3RlbXBsYXRlLg0KPiA+IAktIEFkZGVkIGEgc2FuaXR5 IGNoZWNrIGZvciB2YWwyIGluIGFkNzEyNF93cml0ZV9yYXcoKS4NCj4gPiAJLSBVc2VkIHRoZSAi cmVnIiBwcm9wZXJ0eSB0byBnZXQgdGhlIGNoYW5uZWwgYWRkcmVzcyBhbmQgImFkaSxkaWZmLQ0K PiA+IGNoYW5uZWxzIg0KPiA+IAnCoMKgZm9yIHRoZSBkaWZmZXJlbnRpYWwgcGlucy4gVGhlICJh ZGksY2hhbm5lbC1udW1iZXIiIHByb3BlcnR5IHdhcw0KPiA+IHJlbW92ZWQuDQo+ID4gCS0gV2hl biBjYWxsaW5nIHJlZ3VsYXRvcl9nZXRfb3B0aW9uYWwsIHRoZSBwcm9iZSBpcyBnaXZlbiB1cCBp bg0KPiA+IGNhc2Ugb2YgZXJyb3IsDQo+ID4gCcKgwqBidXQgY29udGludWVzIGluIGNhc2Ugb2Yg LUVOT0RFVi4NCj4gPiAJLSBjbGtfZGlzYWJsZV91bnByZXBhcmUoKSBpcyBjYWxsZWQgYmVmb3Jl DQo+ID4gYWRfc2RfY2xlYW51cF9idWZmZXJfYW5kX3RyaWdnZXINCj4gPiAJwqDCoGluIGFkNzEy NF9yZW1vdmUoKS4NCj4gPiANCj4gPiDCoE1BSU5UQUlORVJTwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHzCoMKgwqA3ICsNCj4gPiDCoGRyaXZlcnMvaWlvL2FkYy9LY29uZmlnwqDCoHzCoMKg MTEgKw0KPiA+IMKgZHJpdmVycy9paW8vYWRjL01ha2VmaWxlIHzCoMKgwqAxICsNCj4gPiDCoGRy aXZlcnMvaWlvL2FkYy9hZDcxMjQuYyB8IDY0OA0KPiA+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gwqA0IGZpbGVzIGNoYW5nZWQsIDY2NyBpbnNl cnRpb25zKCspDQo+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9paW8vYWRjL2FkNzEy NC5jDQo+ID4gDQo+ID4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4g PiBpbmRleCBmNjQyMDQ0Li4zYTFiZmNiIDEwMDY0NA0KPiA+IC0tLSBhL01BSU5UQUlORVJTDQo+ ID4gKysrIGIvTUFJTlRBSU5FUlMNCj4gPiBAQCAtODM5LDYgKzgzOSwxMyBAQCBTOglTdXBwb3J0 ZWQNCj4gPiDCoEY6CWRyaXZlcnMvaWlvL2RhYy9hZDU3NTguYw0KPiA+IMKgRjoJRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvYWQ1NzU4LnR4dA0KPiA+IMKgDQo+ID4g K0FOQUxPRyBERVZJQ0VTIElOQyBBRDcxMjQgRFJJVkVSDQo+ID4gK006CVN0ZWZhbiBQb3BhIDxz dGVmYW4ucG9wYUBhbmFsb2cuY29tPg0KPiA+ICtMOglsaW51eC1paW9Admdlci5rZXJuZWwub3Jn DQo+ID4gK1c6CWh0dHA6Ly9lei5hbmFsb2cuY29tL2NvbW11bml0eS9saW51eC1kZXZpY2UtZHJp dmVycw0KPiA+ICtTOglTdXBwb3J0ZWQNCj4gPiArRjoJZHJpdmVycy9paW8vYWRjL2FkNzEyNC5j DQo+ID4gKw0KPiA+IMKgQU5BTE9HIERFVklDRVMgSU5DIEFEOTM4OUIgRFJJVkVSDQo+ID4gwqBN OglIYW5zIFZlcmt1aWwgPGhhbnMudmVya3VpbEBjaXNjby5jb20+DQo+ID4gwqBMOglsaW51eC1t ZWRpYUB2Z2VyLmtlcm5lbC5vcmcNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL0tj b25maWcgYi9kcml2ZXJzL2lpby9hZGMvS2NvbmZpZw0KPiA+IGluZGV4IGE1MmZlYTguLjE0OGEx MGYgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9paW8vYWRjL0tjb25maWcNCj4gPiArKysgYi9k cml2ZXJzL2lpby9hZGMvS2NvbmZpZw0KPiA+IEBAIC0xMCw2ICsxMCwxNyBAQCBjb25maWcgQURf U0lHTUFfREVMVEENCj4gPiDCoAlzZWxlY3QgSUlPX0JVRkZFUg0KPiA+IMKgCXNlbGVjdCBJSU9f VFJJR0dFUkVEX0JVRkZFUg0KPiA+IMKgDQo+ID4gK2NvbmZpZyBBRDcxMjQNCj4gPiArCXRyaXN0 YXRlICJBbmFsb2cgRGV2aWNlcyBBRDcxMjQgYW5kIHNpbWlsYXIgc2lnbWEtZGVsdGEgQURDcw0K PiA+IGRyaXZlciINCj4gPiArCWRlcGVuZHMgb24gU1BJX01BU1RFUg0KPiA+ICsJc2VsZWN0IEFE X1NJR01BX0RFTFRBDQo+ID4gKwloZWxwDQo+ID4gKwnCoMKgU2F5IHllcyBoZXJlIHRvIGJ1aWxk IHN1cHBvcnQgZm9yIEFuYWxvZyBEZXZpY2VzIEFENzEyNC00DQo+ID4gYW5kIEFENzEyNC04DQo+ ID4gKwnCoMKgU1BJIGFuYWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcnMgKEFEQykuDQo+ID4gKw0K PiA+ICsJwqDCoFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhl cmU6IHRoZQ0KPiA+IG1vZHVsZSB3aWxsIGJlDQo+ID4gKwnCoMKgY2FsbGVkIGFkNzEyNC4NCj4g PiArDQo+ID4gwqBjb25maWcgQUQ3MjY2DQo+ID4gwqAJdHJpc3RhdGUgIkFuYWxvZyBEZXZpY2Vz IEFENzI2NS9BRDcyNjYgQURDIGRyaXZlciINCj4gPiDCoAlkZXBlbmRzIG9uIFNQSV9NQVNURVIN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vYWRjL01ha2VmaWxlIGIvZHJpdmVycy9paW8v YWRjL01ha2VmaWxlDQo+ID4gaW5kZXggYTZlNmEwYi4uNzYxNjhiMiAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL2lpby9hZGMvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL2lpby9hZGMvTWFr ZWZpbGUNCj4gPiBAQCAtNSw2ICs1LDcgQEANCj4gPiDCoA0KPiA+IMKgIyBXaGVuIGFkZGluZyBu ZXcgZW50cmllcyBrZWVwIHRoZSBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlcg0KPiA+IMKgb2Jq LSQoQ09ORklHX0FEX1NJR01BX0RFTFRBKSArPSBhZF9zaWdtYV9kZWx0YS5vDQo+ID4gK29iai0k KENPTkZJR19BRDcxMjQpICs9IGFkNzEyNC5vDQo+ID4gwqBvYmotJChDT05GSUdfQUQ3MjY2KSAr PSBhZDcyNjYubw0KPiA+IMKgb2JqLSQoQ09ORklHX0FENzI5MSkgKz0gYWQ3MjkxLm8NCj4gPiDC oG9iai0kKENPTkZJR19BRDcyOTgpICs9IGFkNzI5OC5vDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvaWlvL2FkYy9hZDcxMjQuYyBiL2RyaXZlcnMvaWlvL2FkYy9hZDcxMjQuYw0KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMDY2MDEzNQ0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2lpby9hZGMvYWQ3MTI0LmMNCj4gPiBAQCAtMCwwICsx LDY0OCBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsNCj4gPiAr LyoNCj4gPiArICogQUQ3MTI0IFNQSSBBREMgZHJpdmVyDQo+ID4gKyAqDQo+ID4gKyAqIENvcHly aWdodCAyMDE4IEFuYWxvZyBEZXZpY2VzIEluYy4NCj4gPiArICovDQo+ID4gKyNpbmNsdWRlIDxs aW51eC9iaXRmaWVsZC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4gKyNpbmNs dWRlIDxsaW51eC9kZWxheS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4g KyNpbmNsdWRlIDxsaW51eC9lcnIuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9yZWd1 bGF0b3IvY29uc3VtZXIuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4NCj4gPiAr DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vaWlvLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9p aW8vYWRjL2FkX3NpZ21hX2RlbHRhLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9paW8vc3lzZnMu aD4NCj4gPiArDQo+ID4gKy8qIEFENzEyNCByZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBBRDcx MjRfQ09NTVMJCQkweDAwDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X1NUQVRVUwkJCTB4MDANCj4gPiAr I2RlZmluZSBBRDcxMjRfQURDX0NPTlRST0wJCTB4MDENCj4gPiArI2RlZmluZSBBRDcxMjRfREFU QQkJCTB4MDINCj4gPiArI2RlZmluZSBBRDcxMjRfSU9fQ09OVFJPTF8xCQkweDAzDQo+ID4gKyNk ZWZpbmUgQUQ3MTI0X0lPX0NPTlRST0xfMgkJMHgwNA0KPiA+ICsjZGVmaW5lIEFENzEyNF9JRAkJ CTB4MDUNCj4gPiArI2RlZmluZSBBRDcxMjRfRVJST1IJCQkweDA2DQo+ID4gKyNkZWZpbmUgQUQ3 MTI0X0VSUk9SX0VOCQkweDA3DQo+ID4gKyNkZWZpbmUgQUQ3MTI0X01DTEtfQ09VTlQJCTB4MDgN Cj4gPiArI2RlZmluZSBBRDcxMjRfQ0hBTk5FTCh4KQkJKDB4MDkgKyAoeCkpDQo+ID4gKyNkZWZp bmUgQUQ3MTI0X0NPTkZJRyh4KQkJKDB4MTkgKyAoeCkpDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X0ZJ TFRFUih4KQkJKDB4MjEgKyAoeCkpDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X09GRlNFVCh4KQkJKDB4 MjkgKyAoeCkpDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X0dBSU4oeCkJCQkoMHgzMSArICh4KSkNCj4g PiArDQo+ID4gKy8qIEFENzEyNF9TVEFUVVMgKi8NCj4gPiArI2RlZmluZSBBRDcxMjRfU1RBVFVT X1BPUl9GTEFHX01TSwlCSVQoNCkNCj4gPiArDQo+ID4gKy8qIEFENzEyNF9BRENfQ09OVFJPTCAq Lw0KPiA+ICsjZGVmaW5lIEFENzEyNF9BRENfQ1RSTF9QV1JfTVNLCUdFTk1BU0soNywgNikNCj4g PiArI2RlZmluZSBBRDcxMjRfQURDX0NUUkxfUFdSKHgpCQlGSUVMRF9QUkVQKEFENzEyNF9BRENf Q1QNCj4gPiBSTF9QV1JfTVNLLCB4KQ0KPiA+ICsjZGVmaW5lIEFENzEyNF9BRENfQ1RSTF9NT0RF X01TSwlHRU5NQVNLKDUsIDIpDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X0FEQ19DVFJMX01PREUoeCkJ RklFTERfUFJFUChBRDcxMjRfQURDX0NUUkxfTU9ERQ0KPiA+IF9NU0ssIHgpDQo+ID4gKw0KPiA+ ICsvKiBBRDcxMjRfQ0hBTk5FTF9YICovDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X0NIQU5ORUxfRU5f TVNLCQlCSVQoMTUpDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X0NIQU5ORUxfRU4oeCkJCUZJRUxEX1BS RVAoQUQ3MTI0X0NIQU5ORUxfDQo+ID4gRU5fTVNLLCB4KQ0KPiA+ICsjZGVmaW5lIEFENzEyNF9D SEFOTkVMX1NFVFVQX01TSwlHRU5NQVNLKDE0LCAxMikNCj4gPiArI2RlZmluZSBBRDcxMjRfQ0hB Tk5FTF9TRVRVUCh4KQlGSUVMRF9QUkVQKEFENzEyNF9DSEFOTkVMX1NFVFVQDQo+ID4gX01TSywg eCkNCj4gPiArI2RlZmluZSBBRDcxMjRfQ0hBTk5FTF9BSU5QX01TSwlHRU5NQVNLKDksIDUpDQo+ ID4gKyNkZWZpbmUgQUQ3MTI0X0NIQU5ORUxfQUlOUCh4KQkJRklFTERfUFJFUChBRDcxMjRfQ0hB Tk5FDQo+ID4gTF9BSU5QX01TSywgeCkNCj4gPiArI2RlZmluZSBBRDcxMjRfQ0hBTk5FTF9BSU5N X01TSwlHRU5NQVNLKDQsIDApDQo+ID4gKyNkZWZpbmUgQUQ3MTI0X0NIQU5ORUxfQUlOTSh4KQkJ RklFTERfUFJFUChBRDcxMjRfQ0hBTk5FDQo+ID4gTF9BSU5NX01TSywgeCkNCj4gPiArDQo+ID4g Ky8qIEFENzEyNF9DT05GSUdfWCAqLw0KPiA+ICsjZGVmaW5lIEFENzEyNF9DT05GSUdfQklQT0xB Ul9NU0sJQklUKDExKQ0KPiA+ICsjZGVmaW5lIEFENzEyNF9DT05GSUdfQklQT0xBUih4KQlGSUVM RF9QUkVQKEFENzEyNF9DT05GSUdfQklQT0wNCj4gPiBBUl9NU0ssIHgpDQo+ID4gKyNkZWZpbmUg QUQ3MTI0X0NPTkZJR19SRUZfU0VMX01TSwlHRU5NQVNLKDQsIDMpDQo+ID4gKyNkZWZpbmUgQUQ3 MTI0X0NPTkZJR19SRUZfU0VMKHgpCUZJRUxEX1BSRVAoQUQ3MTI0X0NPTkZJR19SRUZfUw0KPiA+ IEVMX01TSywgeCkNCj4gPiArI2RlZmluZSBBRDcxMjRfQ09ORklHX1BHQV9NU0sJCUdFTk1BU0so MiwgMCkNCj4gPiArI2RlZmluZSBBRDcxMjRfQ09ORklHX1BHQSh4KQkJRklFTERfUFJFUChBRDcx MjRfQ09ORklHX1ANCj4gPiBHQV9NU0ssIHgpDQo+ID4gKw0KPiA+ICsvKiBBRDcxMjRfRklMVEVS X1ggKi8NCj4gPiArI2RlZmluZSBBRDcxMjRfRklMVEVSX0ZTX01TSwkJR0VOTUFTSygxMCwgMCkN Cj4gPiArI2RlZmluZSBBRDcxMjRfRklMVEVSX0ZTKHgpCQlGSUVMRF9QUkVQKEFENzEyNF9GSUxU RVJfRlMNCj4gPiBfTVNLLCB4KQ0KPiA+ICsNCj4gPiArZW51bSBhZDcxMjRfaWRzIHsNCj4gPiAr CUlEX0FENzEyNF80LA0KPiA+ICsJSURfQUQ3MTI0XzgsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtl bnVtIGFkNzEyNF9yZWZfc2VsIHsNCj4gPiArCUFENzEyNF9SRUZJTjEsDQo+ID4gKwlBRDcxMjRf UkVGSU4yLA0KPiA+ICsJQUQ3MTI0X0lOVF9SRUYsDQo+ID4gKwlBRDcxMjRfQVZERF9SRUYsDQo+ ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIGFkNzEyNF9wb3dlcl9tb2RlIHsNCj4gPiArCUFENzEy NF9MT1dfUE9XRVIsDQo+ID4gKwlBRDcxMjRfTUlEX1BPV0VSLA0KPiA+ICsJQUQ3MTI0X0ZVTExf UE9XRVIsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFk NzEyNF9nYWluWzhdID0gew0KPiA+ICsJMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCwgMTI4DQo+ID4g K307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgaW50IGFkNzEyNF9tYXN0ZXJfY2xrX2ZyZXFf aHpbM10gPSB7DQo+ID4gKwlbQUQ3MTI0X0xPV19QT1dFUl0gPSA3NjgwMCwNCj4gPiArCVtBRDcx MjRfTUlEX1BPV0VSXSA9IDE1MzYwMCwNCj4gPiArCVtBRDcxMjRfRlVMTF9QT1dFUl0gPSA2MTQ0 MDAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGFkNzEy NF9yZWZfbmFtZXNbXSA9IHsNCj4gPiArCVtBRDcxMjRfUkVGSU4xXSA9ICJyZWZpbjEiLA0KPiA+ ICsJW0FENzEyNF9SRUZJTjJdID0gInJlZmluMiIsDQo+ID4gKwlbQUQ3MTI0X0lOVF9SRUZdID0g ImludCIsDQo+ID4gKwlbQUQ3MTI0X0FWRERfUkVGXSA9ICJhdmRkIiwNCj4gPiArfTsNCj4gPiAr DQo+ID4gK3N0cnVjdCBhZDcxMjRfY2hpcF9pbmZvIHsNCj4gPiArCXVuc2lnbmVkIGludCBudW1f aW5wdXRzOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGFkNzEyNF9jaGFubmVsX2NvbmZp ZyB7DQo+ID4gKwllbnVtIGFkNzEyNF9yZWZfc2VsIHJlZnNlbDsNCj4gPiArCWJvb2wgYmlwb2xh cjsNCj4gPiArCXVuc2lnbmVkIGludCBhaW47DQo+ID4gKwl1bnNpZ25lZCBpbnQgdnJlZl9tdjsN Cj4gPiArCXVuc2lnbmVkIGludCBwZ2FfYml0czsNCj4gPiArCXVuc2lnbmVkIGludCBvZHI7DQo+ ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgYWQ3MTI0X3N0YXRlIHsNCj4gPiArCWNvbnN0IHN0 cnVjdCBhZDcxMjRfY2hpcF9pbmZvICpjaGlwX2luZm87DQo+ID4gKwlzdHJ1Y3QgYWRfc2lnbWFf ZGVsdGEgc2Q7DQo+ID4gKwlzdHJ1Y3QgYWQ3MTI0X2NoYW5uZWxfY29uZmlnIGNoYW5uZWxfY29u ZmlnWzRdOw0KPiA+ICsJc3RydWN0IHJlZ3VsYXRvciAqdnJlZls0XTsNCj4gPiArCXN0cnVjdCBj bGsgKm1jbGs7DQo+ID4gKwl1bnNpZ25lZCBpbnQgYWRjX2NvbnRyb2w7DQo+ID4gKwl1bnNpZ25l ZCBpbnQgbnVtX2NoYW5uZWxzOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpaW9fY2hhbl9zcGVjIGFkNzEyNF9jaGFubmVsX3RlbXBsYXRlID0gew0KPiA+ICsJLnR5 cGUgPSBJSU9fVk9MVEFHRSwNCj4gPiArCS5pbmRleGVkID0gMSwNCj4gPiArCS5kaWZmZXJlbnRp YWwgPSAxLA0KPiA+ICsJLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JB VykgfA0KPiA+ICsJCUJJVChJSU9fQ0hBTl9JTkZPX1NDQUxFKSB8DQo+ID4gKwkJQklUKElJT19D SEFOX0lORk9fT0ZGU0VUKSB8DQo+ID4gKwkJQklUKElJT19DSEFOX0lORk9fU0FNUF9GUkVRKSwN Cj4gPiArCS5zY2FuX3R5cGUgPSB7DQo+ID4gKwkJLnNpZ24gPSAndScsDQo+ID4gKwkJLnJlYWxi aXRzID0gMjQsDQo+ID4gKwkJLnN0b3JhZ2ViaXRzID0gMzIsDQo+ID4gKwl9LA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBhZDcxMjRfY2hpcF9pbmZvIGFkNzEyNF9jaGlwX2lu Zm9fdGJsW10gPSB7DQo+ID4gKwlbSURfQUQ3MTI0XzRdID0gew0KPiA+ICsJCS5udW1faW5wdXRz ID0gOCwNCj4gPiArCX0sDQo+ID4gKwlbSURfQUQ3MTI0XzhdID0gew0KPiA+ICsJCS5udW1faW5w dXRzID0gMTYsDQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhZDcx MjRfZmluZF9jbG9zZXN0X21hdGNoKGNvbnN0IGludCAqYXJyYXksDQo+ID4gKwkJCQnCoMKgwqDC oMKgdW5zaWduZWQgaW50IHNpemUsIGludCB2YWwpDQo+ID4gK3sNCj4gPiArCWludCBpOw0KPiA+ ICsNCj4gPiArCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsNCj4gPiArCQlpZiAodmFsIDw9 IGFycmF5W2ldKQ0KPiA+ICsJCQlyZXR1cm4gaTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1 cm4gc2l6ZSAtIDE7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYWQ3MTI0X3NwaV93 cml0ZV9tYXNrKHN0cnVjdCBhZDcxMjRfc3RhdGUgKnN0LA0KPiA+ICsJCQkJwqB1bnNpZ25lZCBp bnQgYWRkciwNCj4gPiArCQkJCcKgdW5zaWduZWQgbG9uZyBtYXNrLA0KPiA+ICsJCQkJwqB1bnNp Z25lZCBpbnQgdmFsLA0KPiA+ICsJCQkJwqB1bnNpZ25lZCBpbnQgYnl0ZXMpDQo+ID4gK3sNCj4g PiArCXVuc2lnbmVkIGludCByZWFkdmFsOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwly ZXQgPSBhZF9zZF9yZWFkX3JlZygmc3QtPnNkLCBhZGRyLCBieXRlcywgJnJlYWR2YWwpOw0KPiA+ ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwlyZWFkdmFs ICY9IH5tYXNrOw0KPiA+ICsJcmVhZHZhbCB8PSB2YWw7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGFk X3NkX3dyaXRlX3JlZygmc3QtPnNkLCBhZGRyLCBieXRlcywgcmVhZHZhbCk7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBpbnQgYWQ3MTI0X3NldF9tb2RlKHN0cnVjdCBhZF9zaWdtYV9kZWx0 YSAqc2QsDQo+ID4gKwkJCcKgwqDCoGVudW0gYWRfc2lnbWFfZGVsdGFfbW9kZSBtb2RlKQ0KPiA+ ICt7DQo+ID4gKwlzdHJ1Y3QgYWQ3MTI0X3N0YXRlICpzdCA9IGNvbnRhaW5lcl9vZihzZCwgc3Ry dWN0DQo+ID4gYWQ3MTI0X3N0YXRlLCBzZCk7DQo+ID4gKw0KPiA+ICsJc3QtPmFkY19jb250cm9s ICY9IH5BRDcxMjRfQURDX0NUUkxfTU9ERV9NU0s7DQo+ID4gKwlzdC0+YWRjX2NvbnRyb2wgfD0g QUQ3MTI0X0FEQ19DVFJMX01PREUobW9kZSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGFkX3NkX3dy aXRlX3JlZygmc3QtPnNkLCBBRDcxMjRfQURDX0NPTlRST0wsIDIsIHN0LQ0KPiA+ID5hZGNfY29u dHJvbCk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYWQ3MTI0X3NldF9jaGFubmVs KHN0cnVjdCBhZF9zaWdtYV9kZWx0YSAqc2QsIHVuc2lnbmVkIGludA0KPiA+IGNoYW5uZWwpDQo+ ID4gK3sNCj4gPiArCXN0cnVjdCBhZDcxMjRfc3RhdGUgKnN0ID0gY29udGFpbmVyX29mKHNkLCBz dHJ1Y3QNCj4gPiBhZDcxMjRfc3RhdGUsIHNkKTsNCj4gPiArCXVuc2lnbmVkIGludCB2YWw7DQo+ ID4gKw0KPiA+ICsJdmFsID0gc3QtPmNoYW5uZWxfY29uZmlnW2NoYW5uZWxdLmFpbiB8IEFENzEy NF9DSEFOTkVMX0VOKDEpIHwNCj4gPiArCcKgwqDCoMKgwqDCoEFENzEyNF9DSEFOTkVMX1NFVFVQ KGNoYW5uZWwpOw0KPiA+ICsNCj4gPiArCXJldHVybiBhZF9zZF93cml0ZV9yZWcoJnN0LT5zZCwg QUQ3MTI0X0NIQU5ORUwoY2hhbm5lbCksIDIsDQo+ID4gdmFsKTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGNvbnN0IHN0cnVjdCBhZF9zaWdtYV9kZWx0YV9pbmZvIGFkNzEyNF9zaWdtYV9k ZWx0YV9pbmZvID0gew0KPiA+ICsJLnNldF9jaGFubmVsID0gYWQ3MTI0X3NldF9jaGFubmVsLA0K PiA+ICsJLnNldF9tb2RlID0gYWQ3MTI0X3NldF9tb2RlLA0KPiA+ICsJLmhhc19yZWdpc3RlcnMg PSB0cnVlLA0KPiA+ICsJLmFkZHJfc2hpZnQgPSAwLA0KPiA+ICsJLnJlYWRfbWFzayA9IEJJVCg2 KSwNCj4gPiArCS5kYXRhX3JlZyA9IEFENzEyNF9EQVRBLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBhZDcxMjRfc2V0X2NoYW5uZWxfb2RyKHN0cnVjdCBhZDcxMjRfc3RhdGUgKnN0 LA0KPiA+ICsJCQkJwqDCoHVuc2lnbmVkIGludCBjaGFubmVsLA0KPiA+ICsJCQkJwqDCoHVuc2ln bmVkIGludCBvZHIpDQo+ID4gK3sNCj4gPiArCXVuc2lnbmVkIGludCBmY2xrLCBvZHJfc2VsX2Jp dHM7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCWZjbGsgPSBjbGtfZ2V0X3JhdGUoc3Qt Pm1jbGspOw0KPiA+ICsJLyoNCj4gPiArCcKgKiBGU1sxMDowXSA9IGZDTEsgLyAoZkFEQyB4IDMy KSB3aGVyZToNCj4gPiArCcKgKiBmQURDIGlzIHRoZSBvdXRwdXQgZGF0YSByYXRlDQo+ID4gKwnC oCogZkNMSyBpcyB0aGUgbWFzdGVyIGNsb2NrIGZyZXF1ZW5jeQ0KPiA+ICsJwqAqIEZTWzEwOjBd IGFyZSB0aGUgYml0cyBpbiB0aGUgZmlsdGVyIHJlZ2lzdGVyDQo+ID4gKwnCoCogRlNbMTA6MF0g Y2FuIGhhdmUgYSB2YWx1ZSBmcm9tIDEgdG8gMjA0Nw0KPiA+ICsJwqAqLw0KPiA+ICsJb2RyX3Nl bF9iaXRzID0gRElWX1JPVU5EX0NMT1NFU1QoZmNsaywgb2RyICogMzIpOw0KPiA+ICsJaWYgKG9k cl9zZWxfYml0cyA8IDEpDQo+ID4gKwkJb2RyX3NlbF9iaXRzID0gMTsNCj4gPiArCWVsc2UgaWYg KG9kcl9zZWxfYml0cyA+IDIwNDcpDQo+ID4gKwkJb2RyX3NlbF9iaXRzID0gMjA0NzsNCj4gPiAr DQo+ID4gKwlyZXQgPSBhZDcxMjRfc3BpX3dyaXRlX21hc2soc3QsIEFENzEyNF9GSUxURVIoY2hh bm5lbCksDQo+ID4gKwkJCQnCoMKgwqDCoEFENzEyNF9GSUxURVJfRlNfTVNLLA0KPiA+ICsJCQkJ wqDCoMKgwqBBRDcxMjRfRklMVEVSX0ZTKG9kcl9zZWxfYml0cyksDQo+ID4gMyk7DQo+ID4gKwlp ZiAocmV0IDwgMCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJLyogZkFEQyA9IGZDTEsgLyAo RlNbMTA6MF0geCAzMikgKi8NCj4gPiArCXN0LT5jaGFubmVsX2NvbmZpZ1tjaGFubmVsXS5vZHIg PQ0KPiA+ICsJCURJVl9ST1VORF9DTE9TRVNUKGZjbGssIG9kcl9zZWxfYml0cyAqIDMyKTsNCj4g PiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhZDcx MjRfcmVhZF9yYXcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gPiArCQkJwqDCoMKgc3Ry dWN0IGlpb19jaGFuX3NwZWMgY29uc3QgKmNoYW4sDQo+ID4gKwkJCcKgwqDCoGludCAqdmFsLCBp bnQgKnZhbDIsIGxvbmcgaW5mbykNCj4gPiArew0KPiA+ICsJc3RydWN0IGFkNzEyNF9zdGF0ZSAq c3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiA+ICsJaW50IGlkeCwgcmV0Ow0KPiA+ICsNCj4g PiArCXN3aXRjaCAoaW5mbykgew0KPiA+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX1JBVzoNCj4gPiAr CQlyZXQgPSBhZF9zaWdtYV9kZWx0YV9zaW5nbGVfY29udmVyc2lvbihpbmRpb19kZXYsDQo+ID4g Y2hhbiwgdmFsKTsNCj4gPiArCQlpZiAocmV0IDwgMCkNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4g PiArDQo+ID4gKwkJLyogQWZ0ZXIgdGhlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkLCBkaXNhYmxl IHRoZQ0KPiA+IGNoYW5uZWwgKi8NCj4gPiArCQlyZXQgPSBhZF9zZF93cml0ZV9yZWcoJnN0LT5z ZCwNCj4gPiArCQkJCcKgwqDCoMKgwqDCoEFENzEyNF9DSEFOTkVMKGNoYW4tPmFkZHJlc3MpLA0K PiA+IDIsDQo+ID4gKwkJCQnCoMKgwqDCoMKgwqBzdC0+Y2hhbm5lbF9jb25maWdbY2hhbi0NCj4g PiA+YWRkcmVzc10uYWluIHwNCj4gPiArCQkJCcKgwqDCoMKgwqDCoEFENzEyNF9DSEFOTkVMX0VO KDApKTsNCj4gPiArCQlpZiAocmV0IDwgMCkNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiArDQo+ ID4gKwkJcmV0dXJuIElJT19WQUxfSU5UOw0KPiA+ICsJY2FzZSBJSU9fQ0hBTl9JTkZPX1NDQUxF Og0KPiA+ICsJCWlkeCA9IHN0LT5jaGFubmVsX2NvbmZpZ1tjaGFuLT5hZGRyZXNzXS5wZ2FfYml0 czsNCj4gPiArCQkqdmFsID0gc3QtPmNoYW5uZWxfY29uZmlnW2NoYW4tPmFkZHJlc3NdLnZyZWZf bXYgLw0KPiA+ICsJCQlhZDcxMjRfZ2FpbltpZHhdOw0KPiA+ICsJCWlmIChzdC0+Y2hhbm5lbF9j b25maWdbY2hhbi0+YWRkcmVzc10uYmlwb2xhcikNCj4gPiArCQkJKnZhbDIgPSBjaGFuLT5zY2Fu X3R5cGUucmVhbGJpdHMgLSAxOw0KPiA+ICsJCWVsc2UNCj4gPiArCQkJKnZhbDIgPSBjaGFuLT5z Y2FuX3R5cGUucmVhbGJpdHM7DQo+ID4gKw0KPiA+ICsJCXJldHVybiBJSU9fVkFMX0ZSQUNUSU9O QUxfTE9HMjsNCj4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19PRkZTRVQ6DQo+ID4gKwkJaWYgKHN0 LT5jaGFubmVsX2NvbmZpZ1tjaGFuLT5hZGRyZXNzXS5iaXBvbGFyKSB7DQo+ID4gKwkJCS8qIENv ZGUgPSAyXihuIOKIkiAxKSDDlyAoKEFpbiDDlyBHYWluIC8gVnJlZikgKw0KPiA+IDEpICovDQo+ ID4gKwkJCWlkeCA9IHN0LT5jaGFubmVsX2NvbmZpZ1tjaGFuLQ0KPiA+ID5hZGRyZXNzXS5wZ2Ff Yml0czsNCj4gPiArCQkJKnZhbCA9IC0oc3QtPmNoYW5uZWxfY29uZmlnW2NoYW4tDQo+ID4gPmFk ZHJlc3NdLnZyZWZfbXYgLw0KPiA+ICsJCQkJwqBhZDcxMjRfZ2FpbltpZHhdKTsNCj4gPiArCQl9 IGVsc2Ugew0KPiA+ICsJCQkqdmFsID0gMDsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCXJldHVy biBJSU9fVkFMX0lOVDsNCj4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVE6DQo+ID4g KwkJKnZhbCA9IHN0LT5jaGFubmVsX2NvbmZpZ1tjaGFuLT5hZGRyZXNzXS5vZHI7DQo+ID4gKw0K PiA+ICsJCXJldHVybiBJSU9fVkFMX0lOVDsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgYWQ3MTI0 X3dyaXRlX3JhdyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiA+ICsJCQnCoMKgwqDCoHN0 cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuLA0KPiA+ICsJCQnCoMKgwqDCoGludCB2YWws IGludCB2YWwyLCBsb25nIGluZm8pDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhZDcxMjRfc3RhdGUg KnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGluZm8pIHsN Cj4gPiArCWNhc2UgSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVE6DQo+ID4gKwkJaWYgKHZhbDIgIT0g MCkNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJCXJldHVybiBhZDcxMjRf c2V0X2NoYW5uZWxfb2RyKHN0LCBjaGFuLT5hZGRyZXNzLCB2YWwpOw0KPiA+ICsJZGVmYXVsdDoN Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBpaW9faW5mbyBhZDcxMjRfaW5mbyA9IHsNCj4gPiArCS5yZWFkX3Jh dyA9IGFkNzEyNF9yZWFkX3JhdywNCj4gPiArCS53cml0ZV9yYXcgPSBhZDcxMjRfd3JpdGVfcmF3 LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhZDcxMjRfc29mdF9yZXNldChzdHJ1 Y3QgYWQ3MTI0X3N0YXRlICpzdCkNCj4gPiArew0KPiA+ICsJdW5zaWduZWQgaW50IHJlYWR2YWws IHRpbWVvdXQ7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IGFkX3NkX3Jlc2V0 KCZzdC0+c2QsIDY0KTsNCj4gPiArCWlmIChyZXQgPCAwKQ0KPiA+ICsJCXJldHVybiByZXQ7DQo+ ID4gKw0KPiA+ICsJdGltZW91dCA9IDEwMDsNCj4gPiArCWRvIHsNCj4gPiArCQlyZXQgPSBhZF9z ZF9yZWFkX3JlZygmc3QtPnNkLCBBRDcxMjRfU1RBVFVTLCAxLA0KPiA+ICZyZWFkdmFsKTsNCj4g PiArCQlpZiAocmV0IDwgMCkNCj4gPiArCQkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwkJaWYg KCEocmVhZHZhbCAmIEFENzEyNF9TVEFUVVNfUE9SX0ZMQUdfTVNLKSkNCj4gPiArCQkJcmV0dXJu IDA7DQo+ID4gKw0KPiA+ICsJCS8qIFRoZSBBRDcxMjQgcmVxdWlyZXMgdHlwaWNhbGx5IDJtcyB0 byBwb3dlciB1cCBhbmQNCj4gPiBzZXR0bGUgKi8NCj4gPiArCQl1c2xlZXBfcmFuZ2UoMTAwLCAy MDAwKTsNCj4gPiArCX0gd2hpbGUgKC0tdGltZW91dCk7DQo+ID4gKw0KPiA+ICsJZGV2X2Vycigm c3QtPnNkLnNwaS0+ZGV2LCAiU29mdCByZXNldCBmYWlsZWRcbiIpOw0KPiA+ICsNCj4gPiArCXJl dHVybiAtRUlPOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGFkNzEyNF9pbml0X2No YW5uZWxfdnJlZihzdHJ1Y3QgYWQ3MTI0X3N0YXRlICpzdCwNCj4gPiArCQkJCcKgwqDCoMKgdW5z aWduZWQgaW50IGNoYW5uZWxfbnVtYmVyKQ0KPiA+ICt7DQo+ID4gKwl1bnNpZ25lZCBpbnQgcmVm c2VsID0gc3QtDQo+ID4gPmNoYW5uZWxfY29uZmlnW2NoYW5uZWxfbnVtYmVyXS5yZWZzZWw7DQo+ ID4gKw0KPiA+ICsJc3dpdGNoIChyZWZzZWwpIHsNCj4gPiArCWNhc2UgQUQ3MTI0X1JFRklOMToN Cj4gPiArCWNhc2UgQUQ3MTI0X1JFRklOMjoNCj4gPiArCWNhc2UgQUQ3MTI0X0FWRERfUkVGOg0K PiA+ICsJCWlmIChJU19FUlIoc3QtPnZyZWZbcmVmc2VsXSkpIHsNCj4gPiArCQkJZGV2X2Vycigm c3QtPnNkLnNwaS0+ZGV2LA0KPiA+ICsJCQkJIkVycm9yLCB0cnlpbmcgdG8gdXNlIGV4dGVybmFs IHZvbHRhZ2UNCj4gPiByZWZlcmVuY2Ugd2l0aG91dCBhICVzIHJlZ3VsYXRvci4iLA0KPiA+ICsJ CQkJYWQ3MTI0X3JlZl9uYW1lc1tyZWZzZWxdKTsNCj4gPiArCQkJCXJldHVybiBQVFJfRVJSKHN0 LT52cmVmW3JlZnNlbF0pOw0KPiA+ICsJCX0NCj4gPiArCQlzdC0+Y2hhbm5lbF9jb25maWdbY2hh bm5lbF9udW1iZXJdLnZyZWZfbXYgPQ0KPiA+ICsJCQlyZWd1bGF0b3JfZ2V0X3ZvbHRhZ2Uoc3Qt PnZyZWZbcmVmc2VsXSk7DQo+ID4gKwkJLyogQ29udmVyc2lvbiBmcm9tIHVWIHRvIG1WICovDQo+ ID4gKwkJc3QtPmNoYW5uZWxfY29uZmlnW2NoYW5uZWxfbnVtYmVyXS52cmVmX212IC89IDEwMDA7 DQo+ID4gKwkJYnJlYWs7DQo+ID4gKwljYXNlIEFENzEyNF9JTlRfUkVGOg0KPiA+ICsJCXN0LT5j aGFubmVsX2NvbmZpZ1tjaGFubmVsX251bWJlcl0udnJlZl9tdiA9IDI1MDA7DQo+ID4gKwkJYnJl YWs7DQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsJCWRldl9lcnIoJnN0LT5zZC5zcGktPmRldiwgIklu dmFsaWQgcmVmZXJlbmNlICVkXG4iLA0KPiA+IHJlZnNlbCk7DQo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQgYWQ3MTI0X29mX3BhcnNlX2NoYW5uZWxfY29uZmlnKHN0cnVjdCBpaW9fZGV2 ICppbmRpb19kZXYsDQo+ID4gKwkJCQkJwqDCoHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBhZDcxMjRfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsN Cj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQ7DQo+ID4gKwlzdHJ1Y3QgaWlvX2NoYW5f c3BlYyAqY2hhbjsNCj4gPiArCXVuc2lnbmVkIGludCBhaW5bMl0sIGNoYW5uZWwgPSAwLCB0bXA7 DQo+ID4gKwlpbnQgcmV0LCByZXM7DQo+ID4gKw0KPiA+ICsJc3QtPm51bV9jaGFubmVscyA9IG9m X2dldF9hdmFpbGFibGVfY2hpbGRfY291bnQobnApOw0KPiA+ICsJaWYgKCFzdC0+bnVtX2NoYW5u ZWxzKSB7DQo+ID4gKwkJZGV2X2VycihpbmRpb19kZXYtPmRldi5wYXJlbnQsICJubyBjaGFubmVs DQo+ID4gY2hpbGRyZW5cbiIpOw0KPiA+ICsJCXJldHVybiAtRU5PREVWOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWNoYW4gPSBkZXZtX2tjYWxsb2MoaW5kaW9fZGV2LT5kZXYucGFyZW50LCBzdC0+ bnVtX2NoYW5uZWxzLA0KPiA+ICsJCQnCoMKgwqDCoHNpemVvZigqY2hhbiksIEdGUF9LRVJORUwp Ow0KPiA+ICsJaWYgKCFjaGFuKQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiAr CWluZGlvX2Rldi0+Y2hhbm5lbHMgPSBjaGFuOw0KPiA+ICsJaW5kaW9fZGV2LT5udW1fY2hhbm5l bHMgPSBzdC0+bnVtX2NoYW5uZWxzOw0KPiA+ICsNCj4gPiArCWZvcl9lYWNoX2F2YWlsYWJsZV9j aGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkgew0KPiA+ICsJCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRf dTMyKGNoaWxkLCAicmVnIiwgJmNoYW5uZWwpOw0KPiA+ICsJCWlmIChyZXQpDQo+ID4gKwkJCWdv dG8gZXJyOw0KPiA+ICsNCj4gPiArCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMl9hcnJheShj aGlsZCwgImFkaSxkaWZmLQ0KPiA+IGNoYW5uZWxzIiwNCj4gPiArCQkJCQkJwqBhaW4sIDIpOw0K PiBUaGlzIGFjdHVhbGx5IGZlZWxzIGxpa2Ugc29tZXRoaW5nIHdlIGNvdWxkIHN0YW5kYXJkaXpl IGFzIHdlbGwgYXMNCj4gYmlwb2xhci4NCj4gSW4gdGhlIG9sZGVzdCBkcml2ZXJzIHdlIGFjdHVh bGx5IGxldCB1c2Vyc3BhY2UgY29uZmlndXJlIGFsbCBvZiB0aGlzLA0KPiBidXQNCj4gSSBjYW4g dW5kZXJzdGFuZCB0aGF0IG9ubHkgc29tZSBjb21iaW5hdGlvbnMgbWFrZSBzZW5zZSBvbiBhIGdp dmVuIGJvYXJkDQo+IHNvIGl0IGFyZ3VhYmx5IG1ha2VzIHNlbnNlIHRvIG9ubHkgZW5hYmxlIHRo b3NlLCBwYXJ0aWN1bGFybHkgd2hlbiB0aGVyZQ0KPiBpcyBhIHJlZmVyZW5jZSBzZWxlY3QgdGhh dCBoYXMgdG8gYmUgcGFpcmVkIHdpdGggY2hhbm5lbCBjaG9pY2UuDQo+IA0KPiA+IA0KPiA+ICsJ CWlmIChyZXQpDQo+ID4gKwkJCWdvdG8gZXJyOw0KPiA+ICsNCj4gPiArCQlpZiAoYWluWzBdID49 IHN0LT5jaGlwX2luZm8tPm51bV9pbnB1dHMgfHwNCj4gPiArCQnCoMKgwqDCoGFpblsxXSA+PSBz dC0+Y2hpcF9pbmZvLT5udW1faW5wdXRzKSB7DQo+ID4gKwkJCWRldl9lcnIoaW5kaW9fZGV2LT5k ZXYucGFyZW50LA0KPiA+ICsJCQkJIklucHV0IHBpbiBudW1iZXIgb3V0IG9mIHJhbmdlLlxuIik7 DQo+ID4gKwkJCXJldCA9IC1FSU5WQUw7DQo+ID4gKwkJCWdvdG8gZXJyOw0KPiA+ICsJCX0NCj4g PiArCQlzdC0+Y2hhbm5lbF9jb25maWdbY2hhbm5lbF0uYWluID0NCj4gPiBBRDcxMjRfQ0hBTk5F TF9BSU5QKGFpblswXSkgfA0KPiA+ICsJCQkJCQnCoMKgQUQ3MTI0X0NIQU5ORUxfQUlOTSgNCj4g PiBhaW5bMV0pOw0KPiA+ICsJCXN0LT5jaGFubmVsX2NvbmZpZ1tjaGFubmVsXS5iaXBvbGFyID0N Cj4gPiArCQkJb2ZfcHJvcGVydHlfcmVhZF9ib29sKGNoaWxkLCAiYWRpLGJpcG9sYXIiKTsNCj4g PiArDQo+ID4gKwkJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoY2hpbGQsICJhZGkscmVmZXJl bmNlLQ0KPiA+IHNlbGVjdCIsICZ0bXApOw0KPiA+ICsJCWlmIChyZXQpDQo+ID4gKwkJCXN0LT5j aGFubmVsX2NvbmZpZ1tjaGFubmVsXS5yZWZzZWwgPQ0KPiA+IEFENzEyNF9JTlRfUkVGOw0KPiA+ ICsJCWVsc2UNCj4gPiArCQkJc3QtPmNoYW5uZWxfY29uZmlnW2NoYW5uZWxdLnJlZnNlbCA9IHRt cDsNCj4gPiArDQo+ID4gKwkJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoY2hpbGQsICJhZGks Z2FpbiIsICZ0bXApOw0KPiA+ICsJCWlmIChyZXQpIHsNCj4gPiArCQkJc3QtPmNoYW5uZWxfY29u ZmlnW2NoYW5uZWxdLnBnYV9iaXRzID0gMDsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQlyZXMg PSBhZDcxMjRfZmluZF9jbG9zZXN0X21hdGNoKGFkNzEyNF9nYWluLA0KPiA+ICsJCQkJCQlBUlJB WV9TSVpFKGFkNzEyNF9nYWluDQo+ID4gKSwgdG1wKTsNCj4gPiArCQkJc3QtPmNoYW5uZWxfY29u ZmlnW2NoYW5uZWxdLnBnYV9iaXRzID0gcmVzOw0KPiBIbW0uIFRoZSBvbGQgcXVlc3Rpb24gb2Yg d2hhdCB0byBwdXQgaW4gRFQgYXMgaXQgcmVmbGVjdHMgd2lyaW5nIGFuZA0KPiB3aGF0IHRvIGxl YXZlIHRvIHVzZXJzcGFjZS4gR2FpbiBpcyB0cmlja3kgYXMgb25seSBzb21lIHZhbHVlcyBtYWtl IHNlbnNlDQo+IGZvciBhIGdpdmVuIHN5c3RlbSwgYnV0IHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4g b25lIHRoYXQgZG9lcy4uLg0KPiBUaGlzIGlzIHByb2JhYmx5IHJlYXNvbmFibGUgYXMgaXQgY2Fu IGJlIGNvbnNpZGVyZWQgYXMgc2V0dGluZyB0aGUNCj4gZGVmYXVsdA0KPiB0aGF0IG1ha2VzIHNl bnNlIGZvciB3aGF0IGlzIHdpcmVkLsKgwqBQb3RlbnRpYWxseSB1c2VyIHNwYWNlIGNvdWxkDQo+ IG92ZXJyaWRlDQo+IGl0IGxhdGVyIGlmIGl0IHdhbnRlZCB0by4NCj4gDQo+ID4gDQo+ID4gKwkJ fQ0KPiA+ICsNCj4gPiArCQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihjaGlsZCwgImFkaSxv ZHItaHoiLCAmdG1wKTsNCj4gV2h5IGlzIHRoaXMgaW4gRFQuIFRoaXMgb25lIGZlZWxzIGxpa2Ug YSB1c2Vyc3BhY2UgY2hvaWNlIHRvIG1lLiBJdCdzDQo+IG9ubHkgdGFuZ2VudGlhbGx5IGNvbm5l Y3RlZCB0byBob3cgdGhpbmdzIGFyZSBjb25uZWN0ZWQgb24gdGhlIGJvYXJkLg0KPiBZb3UgYWxz byBzdXBwb3J0IGNvbnRyb2wgZnJvbSB1c2Vyc3BhY2UuwqDCoEkgd291bGQgcGljayBhIHNlbnNp YmxlDQo+IGdlbmVyYWwgZGVmYXVsdCBhbmQgdGhlbiBkcm9wIHRoaXMgZnJvbSB0aGUgRFQgYmlu ZGluZy4gSXQncyBvcHRpb25hbA0KPiBhbnl3YXkuDQo+IA0KPiA+IA0KPiA+ICsJCWlmIChyZXQp DQo+ID4gKwkJCS8qDQo+ID4gKwkJCcKgKiA5IFNQUyBpcyB0aGUgbWluaW11bSBvdXRwdXQgZGF0 YSByYXRlDQo+ID4gc3VwcG9ydGVkDQo+ID4gKwkJCcKgKiByZWdhcmRsZXNzIG9mIHRoZSBzZWxl Y3RlZCBwb3dlciBtb2RlLg0KPiA+ICsJCQnCoCovDQo+ID4gKwkJCXN0LT5jaGFubmVsX2NvbmZp Z1tjaGFubmVsXS5vZHIgPSA5Ow0KPiA+ICsJCWVsc2UNCj4gPiArCQkJc3QtPmNoYW5uZWxfY29u ZmlnW2NoYW5uZWxdLm9kciA9IHRtcDsNCj4gPiArDQo+ID4gKwkJKmNoYW4gPSBhZDcxMjRfY2hh bm5lbF90ZW1wbGF0ZTsNCj4gPiArCQljaGFuLT5hZGRyZXNzID0gY2hhbm5lbDsNCj4gPiArCQlj aGFuLT5zY2FuX2luZGV4ID0gY2hhbm5lbDsNCj4gPiArCQljaGFuLT5jaGFubmVsID0gYWluWzBd Ow0KPiA+ICsJCWNoYW4tPmNoYW5uZWwyID0gYWluWzFdOw0KPiA+ICsNCj4gPiArCQljaGFuKys7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK2VycjoNCj4gPiArCW9mX25v ZGVfcHV0KGNoaWxkKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGFkNzEyNF9zZXR1cChzdHJ1Y3QgYWQ3MTI0X3N0YXRlICpzdCkNCj4g PiArew0KPiA+ICsJdW5zaWduZWQgaW50IHZhbCwgZmNsaywgcG93ZXJfbW9kZTsNCj4gPiArCWlu dCBpLCByZXQ7DQo+ID4gKw0KPiA+ICsJZmNsayA9IGNsa19nZXRfcmF0ZShzdC0+bWNsayk7DQo+ ID4gKwlpZiAoIWZjbGspDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJLyog VGhlIHBvd2VyIG1vZGUgY2hhbmdlcyB0aGUgbWFzdGVyIGNsb2NrIGZyZXF1ZW5jeSAqLw0KPiA+ ICsJcG93ZXJfbW9kZSA9DQo+ID4gYWQ3MTI0X2ZpbmRfY2xvc2VzdF9tYXRjaChhZDcxMjRfbWFz dGVyX2Nsa19mcmVxX2h6LA0KPiA+ICsJCQkJCUFSUkFZX1NJWkUoYWQ3MTI0X21hc3Rlcl9jbGtf Zg0KPiA+IHJlcV9oeiksDQo+ID4gKwkJCQkJZmNsayk7DQo+ID4gKwlpZiAoZmNsayAhPSBhZDcx MjRfbWFzdGVyX2Nsa19mcmVxX2h6W3Bvd2VyX21vZGVdKSB7DQo+ID4gKwkJcmV0ID0gY2xrX3Nl dF9yYXRlKHN0LT5tY2xrLCBmY2xrKTsNCj4gPiArCQlpZiAocmV0KQ0KPiA+ICsJCQlyZXR1cm4g cmV0Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFNldCB0aGUgcG93ZXIgbW9kZSAqLw0KPiA+ ICsJc3QtPmFkY19jb250cm9sICY9IH5BRDcxMjRfQURDX0NUUkxfUFdSX01TSzsNCj4gPiArCXN0 LT5hZGNfY29udHJvbCB8PSBBRDcxMjRfQURDX0NUUkxfUFdSKHBvd2VyX21vZGUpOw0KPiA+ICsJ cmV0ID0gYWRfc2Rfd3JpdGVfcmVnKCZzdC0+c2QsIEFENzEyNF9BRENfQ09OVFJPTCwgMiwgc3Qt DQo+ID4gPmFkY19jb250cm9sKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0KPiA+ICsJCXJldHVybiBy ZXQ7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IHN0LT5udW1fY2hhbm5lbHM7IGkrKykg ew0KPiA+ICsJCXZhbCA9IHN0LT5jaGFubmVsX2NvbmZpZ1tpXS5haW4gfA0KPiA+IEFENzEyNF9D SEFOTkVMX1NFVFVQKGkpOw0KPiA+ICsJCXJldCA9IGFkX3NkX3dyaXRlX3JlZygmc3QtPnNkLCBB RDcxMjRfQ0hBTk5FTChpKSwgMiwNCj4gPiB2YWwpOw0KPiA+ICsJCWlmIChyZXQgPCAwKQ0KPiA+ ICsJCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCQlyZXQgPSBhZDcxMjRfaW5pdF9jaGFubmVs X3ZyZWYoc3QsIGkpOw0KPiA+ICsJCWlmIChyZXQgPCAwKQ0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0K PiA+ICsNCj4gPiArCQl2YWwgPSBBRDcxMjRfQ09ORklHX0JJUE9MQVIoc3QtDQo+ID4gPmNoYW5u ZWxfY29uZmlnW2ldLmJpcG9sYXIpIHwNCj4gPiArCQnCoMKgwqDCoMKgwqBBRDcxMjRfQ09ORklH X1JFRl9TRUwoc3QtDQo+ID4gPmNoYW5uZWxfY29uZmlnW2ldLnJlZnNlbCkgfA0KPiA+ICsJCcKg wqDCoMKgwqDCoEFENzEyNF9DT05GSUdfUEdBKHN0LQ0KPiA+ID5jaGFubmVsX2NvbmZpZ1tpXS5w Z2FfYml0cyk7DQo+ID4gKwkJcmV0ID0gYWRfc2Rfd3JpdGVfcmVnKCZzdC0+c2QsIEFENzEyNF9D T05GSUcoaSksIDIsDQo+ID4gdmFsKTsNCj4gPiArCQlpZiAocmV0IDwgMCkNCj4gPiArCQkJcmV0 dXJuIHJldDsNCj4gPiArDQo+ID4gKwkJcmV0ID0gYWQ3MTI0X3NldF9jaGFubmVsX29kcihzdCwg aSwgc3QtDQo+ID4gPmNoYW5uZWxfY29uZmlnW2ldLm9kcik7DQo+ID4gKwkJaWYgKHJldCA8IDAp DQo+ID4gKwkJCXJldHVybiByZXQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBhZDcxMjRfcHJvYmUoc3RydWN0IHNwaV9k ZXZpY2UgKnNwaSkNCj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgKmlk Ow0KPiA+ICsJc3RydWN0IGFkNzEyNF9zdGF0ZSAqc3Q7DQo+ID4gKwlzdHJ1Y3QgaWlvX2RldiAq aW5kaW9fZGV2Ow0KPiA+ICsJaW50IGksIHJldDsNCj4gPiArDQo+ID4gKwlpbmRpb19kZXYgPSBk ZXZtX2lpb19kZXZpY2VfYWxsb2MoJnNwaS0+ZGV2LCBzaXplb2YoKnN0KSk7DQo+ID4gKwlpZiAo IWluZGlvX2RldikNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwlzdCA9IGlp b19wcml2KGluZGlvX2Rldik7DQo+ID4gKw0KPiA+ICsJaWQgPSBzcGlfZ2V0X2RldmljZV9pZChz cGkpOw0KPiA+ICsJc3QtPmNoaXBfaW5mbyA9ICZhZDcxMjRfY2hpcF9pbmZvX3RibFtpZC0+ZHJp dmVyX2RhdGFdOw0KPiA+ICsNCj4gPiArCWFkX3NkX2luaXQoJnN0LT5zZCwgaW5kaW9fZGV2LCBz cGksICZhZDcxMjRfc2lnbWFfZGVsdGFfaW5mbyk7DQo+ID4gKw0KPiA+ICsJc3BpX3NldF9kcnZk YXRhKHNwaSwgaW5kaW9fZGV2KTsNCj4gPiArDQo+ID4gKwlpbmRpb19kZXYtPmRldi5wYXJlbnQg PSAmc3BpLT5kZXY7DQo+ID4gKwlpbmRpb19kZXYtPm5hbWUgPSBzcGlfZ2V0X2RldmljZV9pZChz cGkpLT5uYW1lOw0KPiA+ICsJaW5kaW9fZGV2LT5tb2RlcyA9IElORElPX0RJUkVDVF9NT0RFOw0K PiA+ICsJaW5kaW9fZGV2LT5pbmZvID0gJmFkNzEyNF9pbmZvOw0KPiA+ICsNCj4gPiArCXJldCA9 IGFkNzEyNF9vZl9wYXJzZV9jaGFubmVsX2NvbmZpZyhpbmRpb19kZXYsIHNwaS0NCj4gPiA+ZGV2 Lm9mX25vZGUpOw0KPiA+ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiAr DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzdC0+dnJlZik7IGkrKykgew0KPiA+ ICsJCWlmIChpICE9IEFENzEyNF9JTlRfUkVGKSB7DQo+ID4gKwkJCXN0LT52cmVmW2ldID0NCj4g PiBkZXZtX3JlZ3VsYXRvcl9nZXRfb3B0aW9uYWwoJnNwaS0+ZGV2LA0KPiA+ICsJCQkJCQkJYWQ3 MTI0X3JlZl9uYW0NCj4gPiBlc1tpXSk7DQo+ID4gKwkJCWlmIChQVFJfRVJSKHN0LT52cmVmW2ld KSA9PSAtRU5PREVWKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4gKwkJCWVsc2UgaWYgKElTX0VS UihzdC0+dnJlZltpXSkpDQo+ID4gKwkJCQlyZXR1cm4gUFRSX0VSUihzdC0+dnJlZltpXSk7DQo+ ID4gKw0KPiA+ICsJCQlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKHN0LT52cmVmW2ldKTsNCj4gPiAr CQkJaWYgKHJldCkNCj4gPiArCQkJCXJldHVybiByZXQ7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCXN0LT5tY2xrID0gZGV2bV9jbGtfZ2V0KCZzcGktPmRldiwgIm1jbGsiKTsNCj4g PiArCWlmIChJU19FUlIoc3QtPm1jbGspKSB7DQo+ID4gKwkJcmV0ID0gUFRSX0VSUihzdC0+bWNs ayk7DQo+ID4gKwkJZ290byBlcnJvcl9yZWd1bGF0b3JfZGlzYWJsZTsNCj4gPiArCX0NCj4gPiAr DQo+ID4gKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoc3QtPm1jbGspOw0KPiA+ICsJaWYgKHJl dCA8IDApDQo+ID4gKwkJZ290byBlcnJvcl9yZWd1bGF0b3JfZGlzYWJsZTsNCj4gPiArDQo+ID4g KwlyZXQgPSBhZDcxMjRfc29mdF9yZXNldChzdCk7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiAr CQlnb3RvIGVycm9yX2Nsa19kaXNhYmxlX3VucHJlcGFyZTsNCj4gPiArDQo+ID4gKwlyZXQgPSBh ZDcxMjRfc2V0dXAoc3QpOw0KPiA+ICsJaWYgKHJldCA8IDApDQo+ID4gKwkJZ290byBlcnJvcl9j bGtfZGlzYWJsZV91bnByZXBhcmU7DQo+ID4gKw0KPiA+ICsJcmV0ID0gYWRfc2Rfc2V0dXBfYnVm ZmVyX2FuZF90cmlnZ2VyKGluZGlvX2Rldik7DQo+ID4gKwlpZiAocmV0IDwgMCkNCj4gPiArCQln b3RvIGVycm9yX2Nsa19kaXNhYmxlX3VucHJlcGFyZTsNCj4gPiArDQo+ID4gKwlyZXQgPSBpaW9f ZGV2aWNlX3JlZ2lzdGVyKGluZGlvX2Rldik7DQo+ID4gKwlpZiAocmV0IDwgMCkgew0KPiA+ICsJ CWRldl9lcnIoJnNwaS0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGlpbyBkZXZpY2VcbiIpOw0K PiA+ICsJCWdvdG8gZXJyb3JfcmVtb3ZlX3RyaWdnZXI7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ cmV0dXJuIDA7DQo+ID4gKw0KPiA+ICtlcnJvcl9yZW1vdmVfdHJpZ2dlcjoNCj4gPiArCWFkX3Nk X2NsZWFudXBfYnVmZmVyX2FuZF90cmlnZ2VyKGluZGlvX2Rldik7DQo+ID4gK2Vycm9yX2Nsa19k aXNhYmxlX3VucHJlcGFyZToNCj4gPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShzdC0+bWNsayk7 DQo+ID4gK2Vycm9yX3JlZ3VsYXRvcl9kaXNhYmxlOg0KPiA+ICsJZm9yIChpID0gQVJSQVlfU0la RShzdC0+dnJlZikgLSAxOyBpID49IDA7IGktLSkgew0KPiA+ICsJCWlmICghSVNfRVJSX09SX05V TEwoc3QtPnZyZWZbaV0pKQ0KPiA+ICsJCQlyZWd1bGF0b3JfZGlzYWJsZShzdC0+dnJlZltpXSk7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBhZDcxMjRfcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpDQo+ID4gK3sN Cj4gPiArCXN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYgPSBzcGlfZ2V0X2RydmRhdGEoc3BpKTsN Cj4gPiArCXN0cnVjdCBhZDcxMjRfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4g PiArCWludCBpOw0KPiA+ICsNCj4gPiArCWlpb19kZXZpY2VfdW5yZWdpc3RlcihpbmRpb19kZXYp Ow0KPiA+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHN0LT5tY2xrKTsNCj4gPiArCWFkX3NkX2Ns ZWFudXBfYnVmZmVyX2FuZF90cmlnZ2VyKGluZGlvX2Rldik7DQo+IFRoZSBvcmRlcmluZyBoZXJl IHNob3VsZCBtYXRjaCB0aGF0IGluIHRoZSBlcnJvciBwYXRoIGFib3ZlLg0KPiAoc28gdGhlIHR3 byB0aGluZ3MgaGVyZSBzaG91bGQgYmUgcmV2ZXJzZWQpLg0KPiBJdCdzIGluIHRoZSBjYXRlZ29y eSBvZiBtYWtpbmcgdGhpbmdzIG9idmlvdXNseSBzYWZlIHJhdGhlciB0aGFuIGFuDQo+IGFjdHVh bCBpc3N1ZS4NCj4gSSBsaWtlIHRvIGJlIGFibGUgdG8gY2hlY2sgdGhlIG9yZGVyaW5nIG9ubHkg b25jZSByYXRoZXIgdGhhbiB0d2ljZQ0KPiB3aGVuIHJldmlld2luZyBzbyB3aWxsIGFsd2F5cyBj b25maXJtIHRoZXkgbWF0Y2guDQo+IA0KPiA+IA0KPiA+ICsNCj4gPiArCWZvciAoaSA9IEFSUkFZ X1NJWkUoc3QtPnZyZWYpIC0gMTsgaSA+PSAwOyBpLS0pIHsNCj4gPiArCQlpZiAoIUlTX0VSUl9P Ul9OVUxMKHN0LT52cmVmW2ldKSkNCj4gPiArCQkJcmVndWxhdG9yX2Rpc2FibGUoc3QtPnZyZWZb aV0pOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNwaV9kZXZpY2VfaWQgYWQ3MTI0X2lkX3RhYmxlW10gPSB7 DQo+ID4gKwl7ICJhZDcxMjQtNCIsIElEX0FENzEyNF80IH0sDQo+ID4gKwl7ICJhZDcxMjQtOCIs IElEX0FENzEyNF84IH0sDQo+ID4gKwl7fQ0KPiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNFX1RB QkxFKHNwaSwgYWQ3MTI0X2lkX3RhYmxlKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGFkNzEyNF9vZl9tYXRjaFtdID0gew0KPiA+ICsJeyAuY29tcGF0aWJs ZSA9ICJhZGksYWQ3MTI0LTQiIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZDcxMjQt OCIgfSwNCj4gPiArCXsgfSwNCj4gPiArfTsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwg YWQ3MTI0X29mX21hdGNoKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBh ZDcxMTI0X2RyaXZlciA9IHsNCj4gPiArCS5kcml2ZXIgPSB7DQo+ID4gKwkJLm5hbWUgPSAiYWQ3 MTI0IiwNCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBhZDcxMjRfb2ZfbWF0Y2gsDQo+ID4gKwl9 LA0KPiA+ICsJLnByb2JlID0gYWQ3MTI0X3Byb2JlLA0KPiA+ICsJLnJlbW92ZQk9IGFkNzEyNF9y ZW1vdmUsDQo+ID4gKwkuaWRfdGFibGUgPSBhZDcxMjRfaWRfdGFibGUsDQo+ID4gK307DQo+ID4g K21vZHVsZV9zcGlfZHJpdmVyKGFkNzExMjRfZHJpdmVyKTsNCj4gPiArDQo+ID4gK01PRFVMRV9B VVRIT1IoIlN0ZWZhbiBQb3BhIDxzdGVmYW4ucG9wYUBhbmFsb2cuY29tPiIpOw0KPiA+ICtNT0RV TEVfREVTQ1JJUFRJT04oIkFuYWxvZyBEZXZpY2VzIEFENzEyNCBTUEkgZHJpdmVyIik7DQo+ID4g K01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4g