From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8E5F4A0544; Mon, 10 Oct 2022 19:33:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3C80440143; Mon, 10 Oct 2022 19:33:28 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 670D140041 for ; Mon, 10 Oct 2022 19:33:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665423205; x=1696959205; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=tm+pQLQr31gj1hW3JoX7GoNnhm41Vq9hiqbuM2bv4L4=; b=iLoPYG7+l3GvS2Ofi/m2cRgjAwsdr1NYo+B9tSeTNetsmzUEouYL8yGW kCmCIQlruYvsobcs9JYhgqd8akPH4eoTZUl/xnqYfjdxVfuiPTvH5FwBe Ls30DoPe2oNvqbInWz7bvmTZahmItEuF11qpnAJFqc1wVQ3FncSlDwYd7 S27qUQegaTxYBMqhwMeIqw9eyhDZeajMOWBxuI8FQnHeaKuQf7gr0xuyM p82dMvcAo9vrzb2Bf35LMLm5UrhKj/Wtg3WmQkQLJeE/x9UGzuNtY/UeU TVOqOaU3wUUeAe6Q9JkPRUKOTr7k/8tymZ4yXNHdjr9j4GDmOj3jkNUL4 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10496"; a="305320822" X-IronPort-AV: E=Sophos;i="5.95,173,1661842800"; d="scan'208";a="305320822" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Oct 2022 10:33:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10496"; a="768470921" X-IronPort-AV: E=Sophos;i="5.95,173,1661842800"; d="scan'208";a="768470921" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga001.fm.intel.com with ESMTP; 10 Oct 2022 10:33:23 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 10 Oct 2022 10:33:23 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Mon, 10 Oct 2022 10:33:23 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Mon, 10 Oct 2022 10:33:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e0mUcKcz8kDXO7kY3zzdCVQZ3x81MPLrs8dy93wO38FHLgsunkjIDUJx6AH+l5Ze6cO++NYDaf3rMVpjIHCzuUQRUdaOvqpoyxXpUla2LBclKQ5D07FVVcFbTBo1zH9hK6gOrcq+bqQzL9M+lP+U7yqZUHeT7wBGueqP4CaiDkoQG1V1jNlSSiLR/5NleFpflte5RuKrweSBfU7mLNET+OCKUEEkvBvLyMtTkSnsc8PDoTR/AgZbNP8K0mTvdGE8Nrzu5Re0Z0+6jG8i/rDXZhaKZ6r+bWRflleHf/8ODMLCiMQAmpLu84m/HwLMt/6Y7Titlca9w7SaXr8TsO7mAQ== 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=tm+pQLQr31gj1hW3JoX7GoNnhm41Vq9hiqbuM2bv4L4=; b=B/eW+aKK/12uTkiKIoeLhHu2kZDB/hXqLAJ34HA8MbCoemDt3zR6spV7XNVaE1f3hli+gGUCQj4qgUF6GMD+MEFlFIs90AU5Suo/y/n9eyMkg17TL+UWQC+m/m13WCWmxqRdlOZH0DnrgSvSEaquTjYia1hgrYgbEcuowQwdX3rqrxuLDM++tpMSnvqQg8g92sPiFupIYpuO2k2L+JpMycxpYXyATH77it2+9QppqEkF4fspo84OiaSt9Mw2jhzZDtWZQqTTlqPsRmd1SE758f4BMadFHePifdn1j9iotLatcTV1SmeRBh8XJWiQzU99IgtsjvCC/yoxHKygpsY7mQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by SJ1PR11MB6156.namprd11.prod.outlook.com (2603:10b6:a03:45d::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Mon, 10 Oct 2022 17:33:14 +0000 Received: from BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::e6be:3feb:17fd:bdcf]) by BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::e6be:3feb:17fd:bdcf%7]) with mapi id 15.20.5676.029; Mon, 10 Oct 2022 17:33:14 +0000 From: "Chautru, Nicolas" To: Maxime Coquelin , "dev@dpdk.org" , "gakhil@marvell.com" CC: "trix@redhat.com" , "mdr@ashroe.eu" , "Richardson, Bruce" , "hemant.agrawal@nxp.com" , "david.marchand@redhat.com" , "stephen@networkplumber.org" , "Vargas, Hernan" Subject: RE: [PATCH v9 09/14] baseband/acc: add LTE processing functions Thread-Topic: [PATCH v9 09/14] baseband/acc: add LTE processing functions Thread-Index: AQHY2pVC18rMtBS1QU6T3g78JZfh0q4HZYeAgACAmmA= Date: Mon, 10 Oct 2022 17:33:14 +0000 Message-ID: References: <20221007213851.31524-1-nicolas.chautru@intel.com> <20221007213851.31524-10-nicolas.chautru@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR11MB4451:EE_|SJ1PR11MB6156:EE_ x-ms-office365-filtering-correlation-id: 04d5e5ed-371d-45c9-176a-08daaae582bc x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ghqLsSuANXDL0Piuj0ubYaBRbsOK0h5QxSK0TTREatdxALOg0AGcMzwgxjTV7/GfLntxAYF/an/KZi4WJA+MFuAlaMAxlpwX84FCX0OUoZju3sIIAA9tRRMR8VKVfQz3M7s+ENPSm/zB2rTuSz+lEk2gfkZ5ihdeMfpZFmR5fDsmUbmbsQQMsEnEbEPRy+aK7BneXwBKzXCk/i/AVAWZw5neNUpr3rBE0JaUZUjHVqK2Tv8ZC6fzopSLyIw4LgSmJ8sMrvTxn2LhT9WHOeWk07aDW2qXK7IpB3Izxa6sv1pD9tkAyKhGiLnvfbn8fHQTQqkl4RyrnDVhIw5trgORRJ/7IhhJICtceU8hYWGQvzL20O37QBPaCWCCsDYZ2oTB8P3Gvwj/5OXNcC0D+mMBUdO9SDRklBlYF56VQCCZ1dx6yzmquCyqMz5ZM7ddvHkoLHpEGLuspYzXcSUuWkd0HiaK9zXrS8W4BQsGqPQuA9uIyF2mpelpZj3v4up96eVjQ1tPnEy5oVBv0F00RCq8gn+ijniXKrMbW6JDwFN665OFUSDHi/Zy3cYv5oycZGqAUt2jWipDG5DvWNXAFOx7ziP+tghhZ/m37ljyHizDcCF1syZpXJr3KlZnn62yM3KL1fVYopoRiraJ0z14tqsUsaxoDCZg58POk7MsdixKs2sr47h5RTJQBhYxFMuVqKfk/qcYHWNuM028mdvRHMe4v9zbySmMVXA6vcTqkDsZNstHO7pz+j1ZFzAvtMewd+AO2D0CICYgZaYk0Q4etKdIHQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB4451.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(376002)(39860400002)(396003)(366004)(136003)(346002)(451199015)(54906003)(64756008)(76116006)(66476007)(66556008)(66446008)(2906002)(4326008)(66946007)(316002)(8676002)(82960400001)(38100700002)(52536014)(30864003)(38070700005)(5660300002)(33656002)(41300700001)(122000001)(8936002)(53546011)(7696005)(6506007)(478600001)(86362001)(107886003)(186003)(83380400001)(110136005)(71200400001)(9686003)(55016003)(26005)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YXJDZW1tdWI2ejViSTNBamh0dUQwSlI4NGkwUXJLY1Q2eHovakRDbURrZHBy?= =?utf-8?B?SUllQnpkZG0xRk1sSEVRL0lPaTNvWmlFcXhkQzJVUTF2Y0tIU0NTYlZZT0Q0?= =?utf-8?B?RjdHYUI0TjBHWUtObXJYQUx1V05sdEd0UmhWZEtaMGFnc1lqZ3JmdzRpL1VC?= =?utf-8?B?Yy9ZVVJnajY5UURzL2pLN29WQjZCci9icDlhU2VPcWJaZmNYcVBsOE5TMU4v?= =?utf-8?B?Y0VPRjUvQXVab2podGoxZXNiK2pnUnNtNnNtSk5QTEtXNmdwWmNGWGNqNDMv?= =?utf-8?B?YTVKaWROeUIxcnNEVkJObDh5ZUUzQnhOUEdqVm5YYkVHSlpmMGp4S3BXRWdM?= =?utf-8?B?c052Rm1xdk5EQ2NkNDlKaENXd3ZXVVlIT3pLUEU3UTVEbkpFOVVlVVVlbU82?= =?utf-8?B?YU1sNDRmcXRTd2ZmY2JFdnUxbmJhZE4xQ1VTQXhaKzJzUUtZUmM3RDN5RXZv?= =?utf-8?B?UFNwVGh6M0hzQ2ZyS1pzTE5KRjlpWFpweXpxRWgyaHRsWHNNVTFYVFdFZFF5?= =?utf-8?B?czVDNWdFelZHUFg4RG5la0pmN0U5WFE5SVNTOFQ0S0Zpd0M0dGU0bUwrOFg3?= =?utf-8?B?Mnp5LzVhODVLQkhxY3lOSTJJMTVDYVdBZmJCMS82ZEFvbjdJNklpSTBtK1A5?= =?utf-8?B?UTk3cVJDOWdJTFlUTzJzRTdNR0pNMFpyWEJZZFkxaFBxVUVla0dydjlWaFl4?= =?utf-8?B?b1JPeVRtbXFaTTFVcDZUaCt2VDV6cXk2dFJKaS9sRGNFZytIRXluaWxhc284?= =?utf-8?B?R2tTdnVVbzdpZGIrMDJ4REpBS0FxWnB5QnBubTI1T3JsSXpJbmdWUEFRWCt1?= =?utf-8?B?bUpVem9kYnJRMVNrQVFQWEcxUWRabmI1RzBWSkY2ck56cUZuYk56U0RqaUMx?= =?utf-8?B?eERNWkU4TjdycWE3dWVlY1VLeWZZL0FhNTVLcFByalNseDg1TEJ1TWJ1WVVq?= =?utf-8?B?dDRsa3hWNjV1V2VzQTgxQjZ5MW53RU1uSzFaK2FGU3d0THpDR05jcVNDN3Y3?= =?utf-8?B?SHc2Y2k1dGF6M2VodzErNUNkaUNsbkRvRnNpSktlS1FkMG9Wa0FwMVp3eXJR?= =?utf-8?B?Q3Bqby9VNGl1YllCTDFxMzA5SDQ2cjVJZit4ZkFxVGhBbUxqaTVMMGFtYXMy?= =?utf-8?B?bHNYblBWTU51Z0RzQ2dGMzdwakVHTzlISDZUMUxKMEtYZGVDU3pSZlhEb0pw?= =?utf-8?B?aHJsTGRqR01UNThORTJtQnVjb0NkdlMyanA4UjlqM2NHaGpNaUhDUms3MFZU?= =?utf-8?B?Rnd4VVFFT1Q0UDM4Y0Jwc2RCbHhKTFduck1kOXNiNHdVRjlVcThOVmVNTHg2?= =?utf-8?B?RFVvbS9SVTRnZkNxY01PMkRvZllzSmtvOGhrLzRGYUxncTA5U0E3V25iMHZt?= =?utf-8?B?S0g5M3JxWCsvRVhhVFFiQ1N4VDlWYkQxZzNHeEVwL3R5TmxOT2ZESEltVGQ0?= =?utf-8?B?akpkbzJCeDBkOUtoZk91QklLNDhMRW10cjF5aTc3bFp6YjFQQUZ4VzhYWDc0?= =?utf-8?B?UHF4NGhoZFVGbE1ZeXZKbVdKbmtGZVhaOEtjdDV3ZGh6UkZ0LzBibWdsVHJo?= =?utf-8?B?clZ3a0tPaFQvb0Y1c1RJQnhFdUdISlZ4YlhDY0IxaUExSngzTVd6SXNwdk4r?= =?utf-8?B?a1NoeEVvNzZtdzRqM3Zub2lwTFpVZElKNmNGMFp3VzE3d3ZLcU8xUWRQT1Fi?= =?utf-8?B?YjJyR0hONUl3cXBraTFlTWNSUm1qRDhiZUhzaW81ZHlBVUxVT2V3Y3hYZUFX?= =?utf-8?B?UXhyMUlwa0UwMTlMZnlVVWdWMUhmU3EzbXNvRmtPUlptMnNTZkdIeU5sbnhM?= =?utf-8?B?aWhHNERkVFJRWXBoWWxjTHlFM3BDTU9LcFBROUNSQnV3SjBReGEzTE9PNm9R?= =?utf-8?B?UWtqaW5yd1lCdUNFNXc4eVRTZjhXQTRQWEo4S2pOMDlJT3dpV3JCamxrUDBW?= =?utf-8?B?c2RZNVRLRC9iOVVkSkJhVU1ZY3FWV0ZFNlFWUy94WGhQSmEwSEVSMWMxZ0pa?= =?utf-8?B?SS91MWc1WHlzeGxJU1RraW9CK0tUM2V2d0xJYVdzMGJSZ2ZKZERZSERkYU9Y?= =?utf-8?B?WjJmKzVoN0xiV0dwcm0vRSt5UHRqYWNoYmdiMmNPOW9YZVU5aXp2anZGb0do?= =?utf-8?Q?C8RVcZo2h3dohnEx2/OGIp/nN?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB4451.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04d5e5ed-371d-45c9-176a-08daaae582bc X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2022 17:33:14.3319 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uWfLyrSDNitlSKwnK7w2A+CDvPqqFk9zMH26qbJmpOzMksleFN8gH7Jyqo07FUeGgmarU5imh/PseYq9zQtDP6irpl3tKHQhEA/6I8jI8vs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR11MB6156 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgTWF4aW1lLCANCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNYXhp bWUgQ29xdWVsaW4gPG1heGltZS5jb3F1ZWxpbkByZWRoYXQuY29tPg0KPiBTZW50OiBNb25kYXks IE9jdG9iZXIgMTAsIDIwMjIgMjo0OCBBTQ0KPiBUbzogQ2hhdXRydSwgTmljb2xhcyA8bmljb2xh cy5jaGF1dHJ1QGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsNCj4gZ2FraGlsQG1hcnZlbGwuY29t DQo+IENjOiB0cml4QHJlZGhhdC5jb207IG1kckBhc2hyb2UuZXU7IFJpY2hhcmRzb24sIEJydWNl DQo+IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT47IGhlbWFudC5hZ3Jhd2FsQG54cC5jb207 DQo+IGRhdmlkLm1hcmNoYW5kQHJlZGhhdC5jb207IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3Jn OyBWYXJnYXMsDQo+IEhlcm5hbiA8aGVybmFuLnZhcmdhc0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6 IFJlOiBbUEFUQ0ggdjkgMDkvMTRdIGJhc2ViYW5kL2FjYzogYWRkIExURSBwcm9jZXNzaW5nIGZ1 bmN0aW9ucw0KPiANCj4gDQo+IA0KPiBPbiAxMC83LzIyIDIzOjM4LCBOaWNvbGFzIENoYXV0cnUg d3JvdGU6DQo+ID4gRnJvbTogTmljIENoYXV0cnUgPG5pY29sYXMuY2hhdXRydUBpbnRlbC5jb20+ DQo+ID4NCj4gPiBBZGRlZCBmdW5jdGlvbnMgYW5kIGNhcGFiaWxpdHkgZm9yIDRHIEZFQw0KPiA+ DQo+ID4gU2lnbmVkLW9mZi1ieTogTmljIENoYXV0cnUgPG5pY29sYXMuY2hhdXRydUBpbnRlbC5j b20+DQo+ID4gLS0tDQo+ID4gICBkcml2ZXJzL2Jhc2ViYW5kL2FjYy9ydGVfYWNjMjAwX3BtZC5j IHwgODUxDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKystDQo+ID4gICAxIGZpbGUgY2hhbmdl ZCwgODQ2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9iYXNlYmFuZC9hY2MvcnRlX2FjYzIwMF9wbWQuYw0KPiA+IGIvZHJpdmVycy9i YXNlYmFuZC9hY2MvcnRlX2FjYzIwMF9wbWQuYw0KPiA+IGluZGV4IDBmMDE4YjE5YWMuLjA1OGUz OGMzZWMgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9iYXNlYmFuZC9hY2MvcnRlX2FjYzIwMF9w bWQuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYmFzZWJhbmQvYWNjL3J0ZV9hY2MyMDBfcG1kLmMNCj4g PiBAQCAtNjQ5LDYgKzY0OSw0NiBAQCBhY2MyMDBfZGV2X2luZm9fZ2V0KHN0cnVjdCBydGVfYmJk ZXYgKmRldiwNCj4gPiAgIAlzdHJ1Y3QgYWNjX2RldmljZSAqZCA9IGRldi0+ZGF0YS0+ZGV2X3By aXZhdGU7DQo+ID4gICAJaW50IGk7DQo+ID4gICAJc3RhdGljIGNvbnN0IHN0cnVjdCBydGVfYmJk ZXZfb3BfY2FwIGJiZGV2X2NhcGFiaWxpdGllc1tdID0gew0KPiA+ICsJCXsNCj4gPiArCQkJLnR5 cGUgPSBSVEVfQkJERVZfT1BfVFVSQk9fREVDLA0KPiA+ICsJCQkuY2FwLnR1cmJvX2RlYyA9IHsN Cj4gPiArCQkJCS5jYXBhYmlsaXR5X2ZsYWdzID0NCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9f U1VCQkxPQ0tfREVJTlRFUkxFQVZFIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fQ1JDX1RZ UEVfMjRCDQo+IHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fRVFVQUxJWkVSIHwNCj4gPiAr DQo+IAlSVEVfQkJERVZfVFVSQk9fU09GVF9PVVRfU0FUVVJBVEUgfA0KPiA+ICsNCj4gCVJURV9C QkRFVl9UVVJCT19IQUxGX0lURVJBVElPTl9FVkVOIHwNCj4gPiArDQo+IAlSVEVfQkJERVZfVFVS Qk9fQ09OVElOVUVfQ1JDX01BVENIIHwNCj4gPiArCQkJCQlSVEVfQkJERVZfVFVSQk9fU09GVF9P VVRQVVQNCj4gfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19FQVJMWV9URVJNSU5BVElPTiB8 DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX05FR19MTFJfMV9CSVRfSU4gfA0KPiA+ICsNCj4g CVJURV9CQkRFVl9UVVJCT19ORUdfTExSXzFfQklUX1NPRlRfT1VUIHwNCj4gPiArCQkJCQlSVEVf QkJERVZfVFVSQk9fTUFQX0RFQyB8DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX0RFQ19UQl9D UkNfMjRCX0tFRVAgfA0KPiA+ICsNCj4gCVJURV9CQkRFVl9UVVJCT19ERUNfU0NBVFRFUl9HQVRI RVIsDQo+ID4gKwkJCQkubWF4X2xscl9tb2R1bHVzID0gSU5UOF9NQVgsDQo+ID4gKwkJCQkubnVt X2J1ZmZlcnNfc3JjID0NCj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fTUFYX0NPREVfQkxPQ0tT LA0KPiA+ICsJCQkJLm51bV9idWZmZXJzX2hhcmRfb3V0ID0NCj4gPiArDQo+IAlSVEVfQkJERVZf VFVSQk9fTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQkJLm51bV9idWZmZXJzX3NvZnRfb3V0ID0N Cj4gPiArDQo+IAlSVEVfQkJERVZfVFVSQk9fTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQl9DQo+ ID4gKwkJfSwNCj4gPiArCQl7DQo+ID4gKwkJCS50eXBlID0gUlRFX0JCREVWX09QX1RVUkJPX0VO QywNCj4gPiArCQkJLmNhcC50dXJib19lbmMgPSB7DQo+ID4gKwkJCQkuY2FwYWJpbGl0eV9mbGFn cyA9DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX0NSQ18yNEJfQVRUQUNIIHwNCj4gPiArDQo+ IAlSVEVfQkJERVZfVFVSQk9fUlZfSU5ERVhfQllQQVNTIHwNCj4gPiArCQkJCQlSVEVfQkJERVZf VFVSQk9fUkFURV9NQVRDSCB8DQo+ID4gKw0KPiAJUlRFX0JCREVWX1RVUkJPX0VOQ19TQ0FUVEVS X0dBVEhFUiwNCj4gPiArCQkJCS5udW1fYnVmZmVyc19zcmMgPQ0KPiA+ICsNCj4gCVJURV9CQkRF Vl9UVVJCT19NQVhfQ09ERV9CTE9DS1MsDQo+ID4gKwkJCQkubnVtX2J1ZmZlcnNfZHN0ID0NCj4g PiArDQo+IAlSVEVfQkJERVZfVFVSQk9fTUFYX0NPREVfQkxPQ0tTLA0KPiA+ICsJCQl9DQo+ID4g KwkJfSwNCj4gPiAgIAkJew0KPiA+ICAgCQkJLnR5cGUgICA9IFJURV9CQkRFVl9PUF9MRFBDX0VO QywNCj4gPiAgIAkJCS5jYXAubGRwY19lbmMgPSB7DQo+ID4gQEAgLTcwMCwxNSArNzQwLDE3IEBA IGFjYzIwMF9kZXZfaW5mb19nZXQoc3RydWN0IHJ0ZV9iYmRldiAqZGV2LA0KPiA+DQo+ID4gICAJ LyogRXhwb3NlZCBudW1iZXIgb2YgcXVldWVzLiAqLw0KPiA+ICAgCWRldl9pbmZvLT5udW1fcXVl dWVzW1JURV9CQkRFVl9PUF9OT05FXSA9IDA7DQo+ID4gLQlkZXZfaW5mby0+bnVtX3F1ZXVlc1tS VEVfQkJERVZfT1BfVFVSQk9fREVDXSA9IDA7DQo+ID4gLQlkZXZfaW5mby0+bnVtX3F1ZXVlc1tS VEVfQkJERVZfT1BfVFVSQk9fRU5DXSA9IDA7DQo+ID4gKwlkZXZfaW5mby0+bnVtX3F1ZXVlc1tS VEVfQkJERVZfT1BfVFVSQk9fREVDXSA9IGQtDQo+ID5hY2NfY29uZi5xX3VsXzRnLm51bV9hcXNf cGVyX2dyb3VwcyAqDQo+ID4gKwkJCWQtPmFjY19jb25mLnFfdWxfNGcubnVtX3Fncm91cHM7DQo+ ID4gKwlkZXZfaW5mby0+bnVtX3F1ZXVlc1tSVEVfQkJERVZfT1BfVFVSQk9fRU5DXSA9IGQtDQo+ ID5hY2NfY29uZi5xX2RsXzRnLm51bV9hcXNfcGVyX2dyb3VwcyAqDQo+ID4gKwkJCWQtPmFjY19j b25mLnFfZGxfNGcubnVtX3Fncm91cHM7DQo+ID4gICAJZGV2X2luZm8tPm51bV9xdWV1ZXNbUlRF X0JCREVWX09QX0xEUENfREVDXSA9IGQtDQo+ID5hY2NfY29uZi5xX3VsXzVnLm51bV9hcXNfcGVy X2dyb3VwcyAqDQo+ID4gICAJCQlkLT5hY2NfY29uZi5xX3VsXzVnLm51bV9xZ3JvdXBzOw0KPiA+ ICAgCWRldl9pbmZvLT5udW1fcXVldWVzW1JURV9CQkRFVl9PUF9MRFBDX0VOQ10gPSBkLQ0KPiA+ YWNjX2NvbmYucV9kbF81Zy5udW1fYXFzX3Blcl9ncm91cHMgKg0KPiA+ICAgCQkJZC0+YWNjX2Nv bmYucV9kbF81Zy5udW1fcWdyb3VwczsNCj4gPiAgIAlkZXZfaW5mby0+bnVtX3F1ZXVlc1tSVEVf QkJERVZfT1BfRkZUXSA9IDA7DQo+ID4gLQlkZXZfaW5mby0+cXVldWVfcHJpb3JpdHlbUlRFX0JC REVWX09QX1RVUkJPX0RFQ10gPSAwOw0KPiA+IC0JZGV2X2luZm8tPnF1ZXVlX3ByaW9yaXR5W1JU RV9CQkRFVl9PUF9UVVJCT19FTkNdID0gMDsNCj4gPiArCWRldl9pbmZvLT5xdWV1ZV9wcmlvcml0 eVtSVEVfQkJERVZfT1BfVFVSQk9fREVDXSA9IGQtDQo+ID5hY2NfY29uZi5xX3VsXzRnLm51bV9x Z3JvdXBzOw0KPiA+ICsJZGV2X2luZm8tPnF1ZXVlX3ByaW9yaXR5W1JURV9CQkRFVl9PUF9UVVJC T19FTkNdID0NCj4gPiArZC0+YWNjX2NvbmYucV9kbF80Zy5udW1fcWdyb3VwczsNCj4gPiAgIAlk ZXZfaW5mby0+cXVldWVfcHJpb3JpdHlbUlRFX0JCREVWX09QX0xEUENfREVDXSA9IGQtDQo+ID5h Y2NfY29uZi5xX3VsXzVnLm51bV9xZ3JvdXBzOw0KPiA+ICAgCWRldl9pbmZvLT5xdWV1ZV9wcmlv cml0eVtSVEVfQkJERVZfT1BfTERQQ19FTkNdID0gZC0NCj4gPmFjY19jb25mLnFfZGxfNWcubnVt X3Fncm91cHM7DQo+ID4gICAJZGV2X2luZm8tPnF1ZXVlX3ByaW9yaXR5W1JURV9CQkRFVl9PUF9G RlRdID0gMDsgQEAgLTc1Myw2DQo+ICs3OTUsNzANCj4gPiBAQCBzdGF0aWMgc3RydWN0IHJ0ZV9w Y2lfaWQgcGNpX2lkX2FjYzIwMF92Zl9tYXBbXSA9IHsNCj4gPiAgIAl7LmRldmljZV9pZCA9IDB9 LA0KPiA+ICAgfTsNCj4gPg0KPiA+ICsvKiBGaWxsIGluIGEgZnJhbWUgY29udHJvbCB3b3JkIGZv ciB0dXJibyBkZWNvZGluZy4gKi8gc3RhdGljIGlubGluZQ0KPiA+ICt2b2lkIGFjYzIwMF9mY3df dGRfZmlsbChjb25zdCBzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqb3AsIHN0cnVjdA0KPiA+ICth Y2NfZmN3X3RkICpmY3cpIHsNCj4gPiArCWZjdy0+ZmN3X3ZlciA9IDE7DQo+ID4gKwlmY3ctPm51 bV9tYXBzID0gQUNDX0ZDV19URF9BVVRPTUFQOw0KPiA+ICsJZmN3LT5ieXBhc3Nfc2JfZGVpbnQg PSAhY2hlY2tfYml0KG9wLT50dXJib19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJCVJURV9CQkRFVl9U VVJCT19TVUJCTE9DS19ERUlOVEVSTEVBVkUpOw0KPiA+ICsJaWYgKG9wLT50dXJib19kZWMuY29k ZV9ibG9ja19tb2RlID09DQo+IFJURV9CQkRFVl9UUkFOU1BPUlRfQkxPQ0spIHsNCj4gPiArCQkv KiBGSVhNRSBmb3IgVEIgYmxvY2sgKi8NCj4gPiArCQlmY3ctPmtfcG9zID0gb3AtPnR1cmJvX2Rl Yy50Yl9wYXJhbXMua19wb3M7DQo+ID4gKwkJZmN3LT5rX25lZyA9IG9wLT50dXJib19kZWMudGJf cGFyYW1zLmtfbmVnOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlmY3ctPmtfcG9zID0gb3AtPnR1 cmJvX2RlYy5jYl9wYXJhbXMuazsNCj4gPiArCQlmY3ctPmtfbmVnID0gb3AtPnR1cmJvX2RlYy5j Yl9wYXJhbXMuazsNCj4gPiArCX0NCj4gPiArCWZjdy0+YyA9IDE7DQo+ID4gKwlmY3ctPmNfbmVn ID0gMTsNCj4gPiArCWlmIChjaGVja19iaXQob3AtPnR1cmJvX2RlYy5vcF9mbGFncywNCj4gUlRF X0JCREVWX1RVUkJPX1NPRlRfT1VUUFVUKSkgew0KPiA+ICsJCWZjdy0+c29mdF9vdXRwdXRfZW4g PSAxOw0KPiA+ICsJCWZjdy0+c3dfc29mdF9vdXRfZGlzID0gMDsNCj4gPiArCQlmY3ctPnN3X2V0 X2NvbnQgPSBjaGVja19iaXQob3AtPnR1cmJvX2RlYy5vcF9mbGFncywNCj4gPiArDQo+IAlSVEVf QkJERVZfVFVSQk9fQ09OVElOVUVfQ1JDX01BVENIKTsNCj4gPiArCQlmY3ctPnN3X3NvZnRfb3V0 X3NhdHVyYXRpb24gPSBjaGVja19iaXQob3AtDQo+ID50dXJib19kZWMub3BfZmxhZ3MsDQo+ID4g Kw0KPiAJUlRFX0JCREVWX1RVUkJPX1NPRlRfT1VUX1NBVFVSQVRFKTsNCj4gPiArCQlpZiAoY2hl Y2tfYml0KG9wLT50dXJib19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJCQlSVEVfQkJERVZfVFVSQk9f RVFVQUxJWkVSKSkgew0KPiA+ICsJCQlmY3ctPmJ5cGFzc190ZXEgPSAwOw0KPiA+ICsJCQlmY3ct PmVhID0gb3AtPnR1cmJvX2RlYy5jYl9wYXJhbXMuZTsNCj4gPiArCQkJZmN3LT5lYiA9IG9wLT50 dXJib19kZWMuY2JfcGFyYW1zLmU7DQo+ID4gKwkJCWlmIChvcC0+dHVyYm9fZGVjLnJ2X2luZGV4 ID09IDApDQo+ID4gKwkJCQlmY3ctPmswX3N0YXJ0X2NvbCA9IEFDQ19GQ1dfVERfUlZJRFhfMDsN Cj4gPiArCQkJZWxzZSBpZiAob3AtPnR1cmJvX2RlYy5ydl9pbmRleCA9PSAxKQ0KPiA+ICsJCQkJ ZmN3LT5rMF9zdGFydF9jb2wgPSBBQ0NfRkNXX1REX1JWSURYXzE7DQo+ID4gKwkJCWVsc2UgaWYg KG9wLT50dXJib19kZWMucnZfaW5kZXggPT0gMikNCj4gPiArCQkJCWZjdy0+azBfc3RhcnRfY29s ID0gQUNDX0ZDV19URF9SVklEWF8yOw0KPiA+ICsJCQllbHNlDQo+ID4gKwkJCQlmY3ctPmswX3N0 YXJ0X2NvbCA9IEFDQ19GQ1dfVERfUlZJRFhfMzsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQlm Y3ctPmJ5cGFzc190ZXEgPSAxOw0KPiA+ICsJCQlmY3ctPmViID0gNjQ7IC8qIGF2b2lkIHVuZGVm aW5lZCB2YWx1ZSAqLw0KPiA+ICsJCX0NCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJZmN3LT5zb2Z0 X291dHB1dF9lbiA9IDA7DQo+ID4gKwkJZmN3LT5zd19zb2Z0X291dF9kaXMgPSAxOw0KPiA+ICsJ CWZjdy0+YnlwYXNzX3RlcSA9IDA7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZmN3LT5jb2RlX2Js b2NrX21vZGUgPSAxOyAvKiBGSVhNRSAqLw0KPiA+ICsJZmN3LT50dXJib19jcmNfdHlwZSA9IGNo ZWNrX2JpdChvcC0+dHVyYm9fZGVjLm9wX2ZsYWdzLA0KPiA+ICsJCQlSVEVfQkJERVZfVFVSQk9f Q1JDX1RZUEVfMjRCKTsNCj4gPiArDQo+ID4gKwlmY3ctPmV4dF90ZF9jb2xkX3JlZ19lbiA9IDE7 DQo+ID4gKwlmY3ctPnJhd19kZWNvZGVyX2lucHV0X29uID0gMDsNCj4gPiArCWZjdy0+bWF4X2l0 ZXIgPSBSVEVfTUFYKCh1aW50OF90KSBvcC0+dHVyYm9fZGVjLml0ZXJfbWF4LCAyKTsNCj4gPiAr CWZjdy0+bWluX2l0ZXIgPSAyOw0KPiA+ICsJZmN3LT5oYWxmX2l0ZXJfb24gPSAhY2hlY2tfYml0 KG9wLT50dXJib19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJCVJURV9CQkRFVl9UVVJCT19IQUxGX0lU RVJBVElPTl9FVkVOKTsNCj4gPiArDQo+ID4gKwlmY3ctPmVhcmx5X3N0b3BfZW4gPSBjaGVja19i aXQob3AtPnR1cmJvX2RlYy5vcF9mbGFncywNCj4gPiArCQkJUlRFX0JCREVWX1RVUkJPX0VBUkxZ X1RFUk1JTkFUSU9OKSAmICFmY3ctDQo+ID5zb2Z0X291dHB1dF9lbjsNCj4gPiArCWZjdy0+ZXh0 X3NjYWxlID0gMHhGOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyogRmlsbCBpbiBhIGZyYW1lIGNv bnRyb2wgd29yZCBmb3IgTERQQyBkZWNvZGluZy4gKi8NCj4gPiAgIHN0YXRpYyBpbmxpbmUgdm9p ZA0KPiA+ICAgYWNjMjAwX2Zjd19sZF9maWxsKHN0cnVjdCBydGVfYmJkZXZfZGVjX29wICpvcCwg c3RydWN0IGFjY19mY3dfbGQNCj4gPiAqZmN3LCBAQCAtODc2LDcgKzk4MiwyMDYgQEAgYWNjMjAw X2Zjd19sZF9maWxsKHN0cnVjdA0KPiBydGVfYmJkZXZfZGVjX29wICpvcCwgc3RydWN0IGFjY19m Y3dfbGQgKmZjdywNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3RhdGljIGlubGluZSBpbnQNCj4gPiAt YWNjMjAwX2RtYV9kZXNjX2xkX2ZpbGwoc3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLCBzdHJ1 Y3QNCj4gPiBhY2NfZG1hX3JlcV9kZXNjICpkZXNjLA0KPiA+ICthY2MyMDBfZG1hX2Rlc2NfdGVf ZmlsbChzdHJ1Y3QgcnRlX2JiZGV2X2VuY19vcCAqb3AsDQo+ID4gKwkJc3RydWN0IGFjY19kbWFf cmVxX2Rlc2MgKmRlc2MsIHN0cnVjdCBydGVfbWJ1ZiAqKmlucHV0LA0KPiA+ICsJCXN0cnVjdCBy dGVfbWJ1ZiAqb3V0cHV0LCB1aW50MzJfdCAqaW5fb2Zmc2V0LA0KPiA+ICsJCXVpbnQzMl90ICpv dXRfb2Zmc2V0LCB1aW50MzJfdCAqb3V0X2xlbmd0aCwNCj4gPiArCQl1aW50MzJfdCAqbWJ1Zl90 b3RhbF9sZWZ0LCB1aW50MzJfdCAqc2VnX3RvdGFsX2xlZnQsIHVpbnQ4X3QNCj4gcikgew0KPiA+ ICsJaW50IG5leHRfdHJpcGxldCA9IDE7IC8qIEZDVyBhbHJlYWR5IGRvbmUuICovDQo+ID4gKwl1 aW50MzJfdCBlLCBlYSwgZWIsIGxlbmd0aDsNCj4gPiArCXVpbnQxNl90IGssIGtfbmVnLCBrX3Bv czsNCj4gPiArCXVpbnQ4X3QgY2FiLCBjX25lZzsNCj4gPiArDQo+ID4gKwlkZXNjLT53b3JkMCA9 IEFDQ19ETUFfREVTQ19UWVBFOw0KPiA+ICsJZGVzYy0+d29yZDEgPSAwOyAvKio8IFRpbWVzdGFt cCBjb3VsZCBiZSBkaXNhYmxlZC4gKi8NCj4gPiArCWRlc2MtPndvcmQyID0gMDsNCj4gPiArCWRl c2MtPndvcmQzID0gMDsNCj4gPiArCWRlc2MtPm51bUNCcyA9IDE7DQo+ID4gKw0KPiA+ICsJaWYg KG9wLT50dXJib19lbmMuY29kZV9ibG9ja19tb2RlID09DQo+IFJURV9CQkRFVl9UUkFOU1BPUlRf QkxPQ0spIHsNCj4gPiArCQllYSA9IG9wLT50dXJib19lbmMudGJfcGFyYW1zLmVhOw0KPiA+ICsJ CWViID0gb3AtPnR1cmJvX2VuYy50Yl9wYXJhbXMuZWI7DQo+ID4gKwkJY2FiID0gb3AtPnR1cmJv X2VuYy50Yl9wYXJhbXMuY2FiOw0KPiA+ICsJCWtfbmVnID0gb3AtPnR1cmJvX2VuYy50Yl9wYXJh bXMua19uZWc7DQo+ID4gKwkJa19wb3MgPSBvcC0+dHVyYm9fZW5jLnRiX3BhcmFtcy5rX3BvczsN Cj4gPiArCQljX25lZyA9IG9wLT50dXJib19lbmMudGJfcGFyYW1zLmNfbmVnOw0KPiA+ICsJCWUg PSAociA8IGNhYikgPyBlYSA6IGViOw0KPiA+ICsJCWsgPSAociA8IGNfbmVnKSA/IGtfbmVnIDog a19wb3M7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCWUgPSBvcC0+dHVyYm9fZW5jLmNiX3BhcmFt cy5lOw0KPiA+ICsJCWsgPSBvcC0+dHVyYm9fZW5jLmNiX3BhcmFtcy5rOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCWlmIChjaGVja19iaXQob3AtPnR1cmJvX2VuYy5vcF9mbGFncywNCj4gUlRFX0JC REVWX1RVUkJPX0NSQ18yNEJfQVRUQUNIKSkNCj4gPiArCQlsZW5ndGggPSAoayAtIDI0KSA+PiAz Ow0KPiA+ICsJZWxzZQ0KPiA+ICsJCWxlbmd0aCA9IGsgPj4gMzsNCj4gPiArDQo+ID4gKwlpZiAo dW5saWtlbHkoKCptYnVmX3RvdGFsX2xlZnQgPT0gMCkgfHwgKCptYnVmX3RvdGFsX2xlZnQgPCBs ZW5ndGgpKSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJIk1pc21hdGNo IGJldHdlZW4gbWJ1ZiBsZW5ndGggYW5kDQo+IGluY2x1ZGVkIENCIHNpemVzOiBtYnVmIGxlbiAl dSwgY2IgbGVuICV1IiwNCj4gPiArCQkJCSptYnVmX3RvdGFsX2xlZnQsIGxlbmd0aCk7DQo+ID4g KwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW5leHRfdHJpcGxldCA9IGFjY19k bWFfZmlsbF9ibGtfdHlwZV9pbihkZXNjLCBpbnB1dCwgaW5fb2Zmc2V0LA0KPiA+ICsJCQlsZW5n dGgsIHNlZ190b3RhbF9sZWZ0LCBuZXh0X3RyaXBsZXQsDQo+ID4gKwkJCWNoZWNrX2JpdChvcC0+ dHVyYm9fZW5jLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfVFVSQk9fRU5DX1NDQVRURVJfR0FUSEVS KSk7DQo+ID4gKwlpZiAodW5saWtlbHkobmV4dF90cmlwbGV0IDwgMCkpIHsNCj4gPiArCQlydGVf YmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJNaXNtYXRjaCBiZXR3ZWVuIGRhdGEgdG8gcHJvY2Vz cyBhbmQNCj4gbWJ1ZiBkYXRhIGxlbmd0aCBpbiBiYmRldl9vcDogJXAiLA0KPiA+ICsJCQkJb3Ap Ow0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArCWRlc2MtPmRhdGFfcHRyc1tuZXh0 X3RyaXBsZXQgLSAxXS5sYXN0ID0gMTsNCj4gPiArCWRlc2MtPm0yZGxlbiA9IG5leHRfdHJpcGxl dDsNCj4gPiArCSptYnVmX3RvdGFsX2xlZnQgLT0gbGVuZ3RoOw0KPiA+ICsNCj4gPiArCS8qIFNl dCBvdXRwdXQgbGVuZ3RoLiAqLw0KPiA+ICsJaWYgKGNoZWNrX2JpdChvcC0+dHVyYm9fZW5jLm9w X2ZsYWdzLA0KPiBSVEVfQkJERVZfVFVSQk9fUkFURV9NQVRDSCkpDQo+ID4gKwkJLyogSW50ZWdl ciByb3VuZCB1cCBkaXZpc2lvbiBieSA4LiAqLw0KPiA+ICsJCSpvdXRfbGVuZ3RoID0gKGUgKyA3 KSA+PiAzOw0KPiA+ICsJZWxzZQ0KPiA+ICsJCSpvdXRfbGVuZ3RoID0gKGsgPj4gMykgKiAzICsg MjsNCj4gPiArDQo+ID4gKwluZXh0X3RyaXBsZXQgPSBhY2NfZG1hX2ZpbGxfYmxrX3R5cGUoZGVz Yywgb3V0cHV0LCAqb3V0X29mZnNldCwNCj4gPiArCQkJKm91dF9sZW5ndGgsIG5leHRfdHJpcGxl dCwNCj4gQUNDX0RNQV9CTEtJRF9PVVRfRU5DKTsNCj4gPiArCWlmICh1bmxpa2VseShuZXh0X3Ry aXBsZXQgPCAwKSkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLA0KPiA+ICsJCQkJIk1pc21h dGNoIGJldHdlZW4gZGF0YSB0byBwcm9jZXNzIGFuZA0KPiBtYnVmIGRhdGEgbGVuZ3RoIGluIGJi ZGV2X29wOiAlcCIsDQo+ID4gKwkJCQlvcCk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0K PiA+ICsJb3AtPnR1cmJvX2VuYy5vdXRwdXQubGVuZ3RoICs9ICpvdXRfbGVuZ3RoOw0KPiA+ICsJ Km91dF9vZmZzZXQgKz0gKm91dF9sZW5ndGg7DQo+ID4gKwlkZXNjLT5kYXRhX3B0cnNbbmV4dF90 cmlwbGV0IC0gMV0ubGFzdCA9IDE7DQo+ID4gKwlkZXNjLT5kMm1sZW4gPSBuZXh0X3RyaXBsZXQg LSBkZXNjLT5tMmRsZW47DQo+ID4gKw0KPiA+ICsJZGVzYy0+b3BfYWRkciA9IG9wOw0KPiA+ICsN Cj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0K PiA+ICthY2MyMDBfZG1hX2Rlc2NfdGRfZmlsbChzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqb3As DQo+ID4gKwkJc3RydWN0IGFjY19kbWFfcmVxX2Rlc2MgKmRlc2MsIHN0cnVjdCBydGVfbWJ1ZiAq KmlucHV0LA0KPiA+ICsJCXN0cnVjdCBydGVfbWJ1ZiAqaF9vdXRwdXQsIHN0cnVjdCBydGVfbWJ1 ZiAqc19vdXRwdXQsDQo+ID4gKwkJdWludDMyX3QgKmluX29mZnNldCwgdWludDMyX3QgKmhfb3V0 X29mZnNldCwNCj4gPiArCQl1aW50MzJfdCAqc19vdXRfb2Zmc2V0LCB1aW50MzJfdCAqaF9vdXRf bGVuZ3RoLA0KPiA+ICsJCXVpbnQzMl90ICpzX291dF9sZW5ndGgsIHVpbnQzMl90ICptYnVmX3Rv dGFsX2xlZnQsDQo+ID4gKwkJdWludDMyX3QgKnNlZ190b3RhbF9sZWZ0LCB1aW50OF90IHIpIHsN Cj4gPiArCWludCBuZXh0X3RyaXBsZXQgPSAxOyAvKiBGQ1cgYWxyZWFkeSBkb25lLiAqLw0KPiA+ ICsJdWludDE2X3QgazsNCj4gPiArCXVpbnQxNl90IGNyYzI0X292ZXJsYXAgPSAwOw0KPiA+ICsJ dWludDMyX3QgZSwga3c7DQo+ID4gKw0KPiA+ICsJZGVzYy0+d29yZDAgPSBBQ0NfRE1BX0RFU0Nf VFlQRTsNCj4gPiArCWRlc2MtPndvcmQxID0gMDsgLyoqPCBUaW1lc3RhbXAgY291bGQgYmUgZGlz YWJsZWQuICovDQo+ID4gKwlkZXNjLT53b3JkMiA9IDA7DQo+ID4gKwlkZXNjLT53b3JkMyA9IDA7 DQo+ID4gKwlkZXNjLT5udW1DQnMgPSAxOw0KPiA+ICsNCj4gPiArCWlmIChvcC0+dHVyYm9fZGVj LmNvZGVfYmxvY2tfbW9kZSA9PQ0KPiBSVEVfQkJERVZfVFJBTlNQT1JUX0JMT0NLKSB7DQo+ID4g KwkJayA9IChyIDwgb3AtPnR1cmJvX2RlYy50Yl9wYXJhbXMuY19uZWcpDQo+ID4gKwkJCT8gb3At PnR1cmJvX2RlYy50Yl9wYXJhbXMua19uZWcNCj4gPiArCQkJOiBvcC0+dHVyYm9fZGVjLnRiX3Bh cmFtcy5rX3BvczsNCj4gPiArCQllID0gKHIgPCBvcC0+dHVyYm9fZGVjLnRiX3BhcmFtcy5jYWIp DQo+ID4gKwkJCT8gb3AtPnR1cmJvX2RlYy50Yl9wYXJhbXMuZWENCj4gPiArCQkJOiBvcC0+dHVy Ym9fZGVjLnRiX3BhcmFtcy5lYjsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJayA9IG9wLT50dXJi b19kZWMuY2JfcGFyYW1zLms7DQo+ID4gKwkJZSA9IG9wLT50dXJib19kZWMuY2JfcGFyYW1zLmU7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKChvcC0+dHVyYm9fZGVjLmNvZGVfYmxvY2tfbW9k ZSA9PQ0KPiBSVEVfQkJERVZfVFJBTlNQT1JUX0JMT0NLKQ0KPiA+ICsJCSYmICFjaGVja19iaXQo b3AtPnR1cmJvX2RlYy5vcF9mbGFncywNCj4gPiArCQlSVEVfQkJERVZfVFVSQk9fREVDX1RCX0NS Q18yNEJfS0VFUCkpDQo+ID4gKwkJY3JjMjRfb3ZlcmxhcCA9IDI0Ow0KPiA+ICsNCj4gPiArCS8q IENhbGN1bGF0ZXMgY2lyY3VsYXIgYnVmZmVyIHNpemUuDQo+ID4gKwkgKiBBY2NvcmRpbmcgdG8g M2dwcCAzNi4yMTIgc2VjdGlvbiA1LjEuNC4yDQo+ID4gKwkgKiAgIEt3ID0gMyAqIEtwaSwNCj4g PiArCSAqIHdoZXJlOg0KPiA+ICsJICogICBLcGkgPSBuQ29sICogblJvdw0KPiA+ICsJICogd2hl cmUgbkNvbCBpcyAzMiBhbmQgblJvdyBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tOg0KPiA+ICsJICog ICBEID08IG5Db2wgKiBuUm93DQo+ID4gKwkgKiB3aGVyZSBEIGlzIHRoZSBzaXplIG9mIGVhY2gg b3V0cHV0IGZyb20gdHVyYm8gZW5jb2RlciBibG9jayAoayArDQo+IDQpLg0KPiA+ICsJICovDQo+ ID4gKwlrdyA9IFJURV9BTElHTl9DRUlMKGsgKyA0LCAzMikgKiAzOw0KPiA+ICsNCj4gPiArCWlm ICh1bmxpa2VseSgoKm1idWZfdG90YWxfbGVmdCA9PSAwKSB8fCAoKm1idWZfdG90YWxfbGVmdCA8 IGt3KSkpIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJNaXNtYXRjaCBi ZXR3ZWVuIG1idWYgbGVuZ3RoIGFuZA0KPiBpbmNsdWRlZCBDQiBzaXplczogbWJ1ZiBsZW4gJXUs IGNiIGxlbiAldSIsDQo+ID4gKwkJCQkqbWJ1Zl90b3RhbF9sZWZ0LCBrdyk7DQo+ID4gKwkJcmV0 dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW5leHRfdHJpcGxldCA9IGFjY19kbWFfZmls bF9ibGtfdHlwZV9pbihkZXNjLCBpbnB1dCwgaW5fb2Zmc2V0LCBrdywNCj4gPiArCQkJc2VnX3Rv dGFsX2xlZnQsIG5leHRfdHJpcGxldCwNCj4gPiArCQkJY2hlY2tfYml0KG9wLT50dXJib19kZWMu b3BfZmxhZ3MsDQo+ID4gKwkJCVJURV9CQkRFVl9UVVJCT19ERUNfU0NBVFRFUl9HQVRIRVIpKTsN Cj4gPiArCWlmICh1bmxpa2VseShuZXh0X3RyaXBsZXQgPCAwKSkgew0KPiA+ICsJCXJ0ZV9iYmRl dl9sb2coRVJSLA0KPiA+ICsJCQkJIk1pc21hdGNoIGJldHdlZW4gZGF0YSB0byBwcm9jZXNzIGFu ZA0KPiBtYnVmIGRhdGEgbGVuZ3RoIGluIGJiZGV2X29wOiAlcCIsDQo+ID4gKwkJCQlvcCk7DQo+ ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0KPiA+ICsJZGVzYy0+ZGF0YV9wdHJzW25leHRfdHJp cGxldCAtIDFdLmxhc3QgPSAxOw0KPiA+ICsJZGVzYy0+bTJkbGVuID0gbmV4dF90cmlwbGV0Ow0K PiA+ICsJKm1idWZfdG90YWxfbGVmdCAtPSBrdzsNCj4gPiArCSpoX291dF9sZW5ndGggPSAoKGsg LSBjcmMyNF9vdmVybGFwKSA+PiAzKTsNCj4gPiArCW5leHRfdHJpcGxldCA9IGFjY19kbWFfZmls bF9ibGtfdHlwZSgNCj4gPiArCQkJZGVzYywgaF9vdXRwdXQsICpoX291dF9vZmZzZXQsDQo+ID4g KwkJCSpoX291dF9sZW5ndGgsIG5leHRfdHJpcGxldCwNCj4gQUNDX0RNQV9CTEtJRF9PVVRfSEFS RCk7DQo+ID4gKwlpZiAodW5saWtlbHkobmV4dF90cmlwbGV0IDwgMCkpIHsNCj4gPiArCQlydGVf YmJkZXZfbG9nKEVSUiwNCj4gPiArCQkJCSJNaXNtYXRjaCBiZXR3ZWVuIGRhdGEgdG8gcHJvY2Vz cyBhbmQNCj4gbWJ1ZiBkYXRhIGxlbmd0aCBpbiBiYmRldl9vcDogJXAiLA0KPiA+ICsJCQkJb3Ap Ow0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlvcC0+dHVyYm9fZGVj LmhhcmRfb3V0cHV0Lmxlbmd0aCArPSAqaF9vdXRfbGVuZ3RoOw0KPiA+ICsJKmhfb3V0X29mZnNl dCArPSAqaF9vdXRfbGVuZ3RoOw0KPiA+ICsNCj4gPiArCS8qIFNvZnQgb3V0cHV0LiAqLw0KPiA+ ICsJaWYgKGNoZWNrX2JpdChvcC0+dHVyYm9fZGVjLm9wX2ZsYWdzLA0KPiBSVEVfQkJERVZfVFVS Qk9fU09GVF9PVVRQVVQpKSB7DQo+ID4gKwkJaWYgKG9wLT50dXJib19kZWMuc29mdF9vdXRwdXQu ZGF0YSA9PSAwKSB7DQo+ID4gKwkJCXJ0ZV9iYmRldl9sb2coRVJSLCAiU29mdCBvdXRwdXQgaXMg bm90IGRlZmluZWQiKTsNCj4gPiArCQkJcmV0dXJuIC0xOw0KPiA+ICsJCX0NCj4gPiArCQlpZiAo Y2hlY2tfYml0KG9wLT50dXJib19kZWMub3BfZmxhZ3MsDQo+ID4gKwkJCQlSVEVfQkJERVZfVFVS Qk9fRVFVQUxJWkVSKSkNCj4gPiArCQkJKnNfb3V0X2xlbmd0aCA9IGU7DQo+ID4gKwkJZWxzZQ0K PiA+ICsJCQkqc19vdXRfbGVuZ3RoID0gKGsgKiAzKSArIDEyOw0KPiA+ICsNCj4gPiArCQluZXh0 X3RyaXBsZXQgPSBhY2NfZG1hX2ZpbGxfYmxrX3R5cGUoZGVzYywgc19vdXRwdXQsDQo+ID4gKwkJ CQkqc19vdXRfb2Zmc2V0LCAqc19vdXRfbGVuZ3RoLCBuZXh0X3RyaXBsZXQsDQo+ID4gKwkJCQlB Q0NfRE1BX0JMS0lEX09VVF9TT0ZUKTsNCj4gPiArCQlpZiAodW5saWtlbHkobmV4dF90cmlwbGV0 IDwgMCkpIHsNCj4gPiArCQkJcnRlX2JiZGV2X2xvZyhFUlIsDQo+ID4gKwkJCQkJIk1pc21hdGNo IGJldHdlZW4gZGF0YSB0byBwcm9jZXNzDQo+IGFuZCBtYnVmIGRhdGEgbGVuZ3RoIGluIGJiZGV2 X29wOiAlcCIsDQo+ID4gKwkJCQkJb3ApOw0KPiA+ICsJCQlyZXR1cm4gLTE7DQo+ID4gKwkJfQ0K PiA+ICsNCj4gPiArCQlvcC0+dHVyYm9fZGVjLnNvZnRfb3V0cHV0Lmxlbmd0aCArPSAqc19vdXRf bGVuZ3RoOw0KPiA+ICsJCSpzX291dF9vZmZzZXQgKz0gKnNfb3V0X2xlbmd0aDsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwlkZXNjLT5kYXRhX3B0cnNbbmV4dF90cmlwbGV0IC0gMV0ubGFzdCA9IDE7 DQo+ID4gKwlkZXNjLT5kMm1sZW4gPSBuZXh0X3RyaXBsZXQgLSBkZXNjLT5tMmRsZW47DQo+ID4g Kw0KPiA+ICsJZGVzYy0+b3BfYWRkciA9IG9wOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIGludA0KPiA+ICthY2MyMDBfZG1hX2Rlc2Nf bGRfZmlsbChzdHJ1Y3QgcnRlX2JiZGV2X2RlY19vcCAqb3AsDQo+ID4gKwkJc3RydWN0IGFjY19k bWFfcmVxX2Rlc2MgKmRlc2MsDQo+ID4gICAJCXN0cnVjdCBydGVfbWJ1ZiAqKmlucHV0LCBzdHJ1 Y3QgcnRlX21idWYgKmhfb3V0cHV0LA0KPiA+ICAgCQl1aW50MzJfdCAqaW5fb2Zmc2V0LCB1aW50 MzJfdCAqaF9vdXRfb2Zmc2V0LA0KPiA+ICAgCQl1aW50MzJfdCAqaF9vdXRfbGVuZ3RoLCB1aW50 MzJfdCAqbWJ1Zl90b3RhbF9sZWZ0LCBAQCAtDQo+IDEwMzQsNg0KPiA+ICsxMzM5LDQ5IEBAIGFj YzIwMF9kbWFfZGVzY19sZF91cGRhdGUoc3RydWN0IHJ0ZV9iYmRldl9kZWNfb3AgKm9wLA0KPiA+ ICAgCWRlc2MtPm9wX2FkZHIgPSBvcDsNCj4gPiAgIH0NCj4gPg0KPiA+ICsvKiBFbnF1ZXVlIG9u ZSBlbmNvZGUgb3BlcmF0aW9ucyBmb3IgQUNDMjAwIGRldmljZSBpbiBDQiBtb2RlICovDQo+ID4g K3N0YXRpYyBpbmxpbmUgaW50IGVucXVldWVfZW5jX29uZV9vcF9jYihzdHJ1Y3QgYWNjX3F1ZXVl ICpxLCBzdHJ1Y3QNCj4gPiArcnRlX2JiZGV2X2VuY19vcCAqb3AsDQo+ID4gKwkJdWludDE2X3Qg dG90YWxfZW5xdWV1ZWRfY2JzKQ0KPiA+ICt7DQo+ID4gKwl1bmlvbiBhY2NfZG1hX2Rlc2MgKmRl c2MgPSBOVUxMOw0KPiA+ICsJaW50IHJldDsNCj4gPiArCXVpbnQzMl90IGluX29mZnNldCwgb3V0 X29mZnNldCwgb3V0X2xlbmd0aCwgbWJ1Zl90b3RhbF9sZWZ0LA0KPiA+ICsJCXNlZ190b3RhbF9s ZWZ0Ow0KPiA+ICsJc3RydWN0IHJ0ZV9tYnVmICppbnB1dCwgKm91dHB1dF9oZWFkLCAqb3V0cHV0 Ow0KPiA+ICsNCj4gPiArCXVpbnQxNl90IGRlc2NfaWR4ID0gKChxLT5zd19yaW5nX2hlYWQgKyB0 b3RhbF9lbnF1ZXVlZF9jYnMpDQo+ID4gKwkJCSYgcS0+c3dfcmluZ193cmFwX21hc2spOw0KPiA+ ICsJZGVzYyA9IHEtPnJpbmdfYWRkciArIGRlc2NfaWR4Ow0KPiA+ICsJYWNjX2Zjd190ZV9maWxs KG9wLCAmZGVzYy0+cmVxLmZjd190ZSk7DQo+ID4gKw0KPiA+ICsJaW5wdXQgPSBvcC0+dHVyYm9f ZW5jLmlucHV0LmRhdGE7DQo+ID4gKwlvdXRwdXRfaGVhZCA9IG91dHB1dCA9IG9wLT50dXJib19l bmMub3V0cHV0LmRhdGE7DQo+ID4gKwlpbl9vZmZzZXQgPSBvcC0+dHVyYm9fZW5jLmlucHV0Lm9m ZnNldDsNCj4gPiArCW91dF9vZmZzZXQgPSBvcC0+dHVyYm9fZW5jLm91dHB1dC5vZmZzZXQ7DQo+ ID4gKwlvdXRfbGVuZ3RoID0gMDsNCj4gPiArCW1idWZfdG90YWxfbGVmdCA9IG9wLT50dXJib19l bmMuaW5wdXQubGVuZ3RoOw0KPiA+ICsJc2VnX3RvdGFsX2xlZnQgPSBydGVfcGt0bWJ1Zl9kYXRh X2xlbihvcC0+dHVyYm9fZW5jLmlucHV0LmRhdGEpDQo+ID4gKwkJCS0gaW5fb2Zmc2V0Ow0KPiA+ ICsNCj4gPiArCXJldCA9IGFjYzIwMF9kbWFfZGVzY190ZV9maWxsKG9wLCAmZGVzYy0+cmVxLCAm aW5wdXQsIG91dHB1dCwNCj4gPiArCQkJJmluX29mZnNldCwgJm91dF9vZmZzZXQsICZvdXRfbGVu Z3RoLA0KPiAmbWJ1Zl90b3RhbF9sZWZ0LA0KPiA+ICsJCQkmc2VnX3RvdGFsX2xlZnQsIDApOw0K PiA+ICsNCj4gPiArCWlmICh1bmxpa2VseShyZXQgPCAwKSkNCj4gPiArCQlyZXR1cm4gcmV0Ow0K PiA+ICsNCj4gPiArCW1idWZfYXBwZW5kKG91dHB1dF9oZWFkLCBvdXRwdXQsIG91dF9sZW5ndGgp Ow0KPiA+ICsNCj4gPiArI2lmZGVmIFJURV9MSUJSVEVfQkJERVZfREVCVUcNCj4gPiArCXJ0ZV9t ZW1kdW1wKHN0ZGVyciwgIkZDVyIsICZkZXNjLT5yZXEuZmN3X3RlLA0KPiA+ICsJCQlzaXplb2Yo ZGVzYy0+cmVxLmZjd190ZSkgLSA4KTsNCj4gPiArCXJ0ZV9tZW1kdW1wKHN0ZGVyciwgIlJlcSBE ZXNjLiIsIGRlc2MsIHNpemVvZigqZGVzYykpOyAjZW5kaWYNCj4gPiArCS8qIE9uZSBDQiAob25l IG9wKSB3YXMgc3VjY2Vzc2Z1bGx5IHByZXBhcmVkIHRvIGVucXVldWUgKi8NCj4gPiArCXJldHVy biAxOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyogRW5xdWV1ZSBvbmUgZW5jb2RlIG9wZXJhdGlv bnMgZm9yIEFDQzIwMCBkZXZpY2UgaW4gQ0IgbW9kZQ0KPiA+ICAgICogbXVsdGlwbGV4ZWQgb24g dGhlIHNhbWUgZGVzY3JpcHRvci4NCj4gPiAgICAqLw0KPiA+IEBAIC0xMTQ2LDYgKzE0OTQsNzgg QEAgZW5xdWV1ZV9sZHBjX2VuY19wYXJ0X3RiKHN0cnVjdCBhY2NfcXVldWUNCj4gKnEsDQo+ID4g c3RydWN0IHJ0ZV9iYmRldl9lbmNfb3AgKm9wLA0KPiA+DQo+ID4gICB9DQo+ID4NCj4gPiArLyog RW5xdWV1ZSBvbmUgZW5jb2RlIG9wZXJhdGlvbnMgZm9yIEFDQzIwMCBkZXZpY2UgaW4gVEIgbW9k ZS4gKi8NCj4gPiArc3RhdGljIGlubGluZSBpbnQgZW5xdWV1ZV9lbmNfb25lX29wX3RiKHN0cnVj dCBhY2NfcXVldWUgKnEsIHN0cnVjdA0KPiA+ICtydGVfYmJkZXZfZW5jX29wICpvcCwNCj4gPiAr CQl1aW50MTZfdCB0b3RhbF9lbnF1ZXVlZF9jYnMsIHVpbnQ4X3QgY2JzX2luX3RiKSB7DQo+ID4g Kwl1bmlvbiBhY2NfZG1hX2Rlc2MgKmRlc2MgPSBOVUxMOw0KPiA+ICsJaW50IHJldDsNCj4gPiAr CXVpbnQ4X3QgciwgYzsNCj4gPiArCXVpbnQzMl90IGluX29mZnNldCwgb3V0X29mZnNldCwgb3V0 X2xlbmd0aCwgbWJ1Zl90b3RhbF9sZWZ0LA0KPiA+ICsJCXNlZ190b3RhbF9sZWZ0Ow0KPiA+ICsJ c3RydWN0IHJ0ZV9tYnVmICppbnB1dCwgKm91dHB1dF9oZWFkLCAqb3V0cHV0Ow0KPiA+ICsJdWlu dDE2X3QgY3VycmVudF9lbnF1ZXVlZF9jYnMgPSAwOw0KPiA+ICsNCj4gPiArCXVpbnQxNl90IGRl c2NfaWR4ID0gKChxLT5zd19yaW5nX2hlYWQgKyB0b3RhbF9lbnF1ZXVlZF9jYnMpDQo+ID4gKwkJ CSYgcS0+c3dfcmluZ193cmFwX21hc2spOw0KPiANCj4gTWF5YmUgSSBkaWQgbm90IG1ha2UgdGhl IGNvbW1lbnQgb24gdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHksIGJ1dCBoYXZpbmcgYQ0KPiBoZWxw ZXIgdG8gZ2V0IHRoZSBkZXNjcmlwdG9yIGluZGV4IHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW50IGl0 IGlzIGR1cGxpY2F0ZWQgYXQNCj4gc2V2ZXJhbCBwbGFjZXMuDQo+IA0KPiANCj4gV2l0aCB0aGlz IGZpeGVkLCB5b3UgY2FuIGFkZDoNCg0KSXQgaXMgYSBnb29kIGlkZWEsIG5vdGFibHkgZm9yIHJl YWRhYmlsaXR5LiBCdXQgdW5zdXJlIHdlIG5lZWQgaXQgbm93IGZvciAyMi4xMSB3aXRoIHN0aWxs IGEgbG90IG9mIGFjYzEwMCBhbmQgYWNjMjAwIGNvbW1pdHMgaW4gZmxpZ2h0LiANCkFyZSB5b3Ug b2theSBpZiB3ZSB0byBkZWZlciB0aGlzIHNtYWxsIHJlZmFjdG9yIHRvIDIzLjAzPyANClRoZXJl IGFyZSBmZXcgc2ltaWxhciByb3V0aW5lcyB3aGljaCBtYXkgYmVuZWZpdCBmcm9tIHNpbWlsYXIg d3JhcHBlciBmdW5jdGlvbnMuIA0KTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmsuIA0KDQo+IA0K PiBSZXZpZXdlZC1ieTogTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5AcmVkaGF0LmNv bT4NCj4gDQo+IFRoYW5rcywNCj4gTWF4aW1lDQoNCg==