Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp866325ybi; Fri, 14 Jun 2019 04:47:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqz216NG+G9aBeeQ5D+nIapIjAxdyhpUQ2V1i0Jo2fQlIY9gW+NuRN1qdo9T4xG/DegRAsF8 X-Received: by 2002:a17:902:165:: with SMTP id 92mr65915601plb.197.1560512847366; Fri, 14 Jun 2019 04:47:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560512847; cv=none; d=google.com; s=arc-20160816; b=Q9/f4nJReJ6Y14PMp71ipud0ECL6x+R+Y+m/+I7AUEOCmm+TqnYskDRHuvS3wMXmFU W4e0VSeDnxSOmn/jetG6O1vMJ74zisBuYmfUM9tKaLCHdtNONU3yUu8Hra0t7NukrFKd nzftyjJsaCjZ4Sm4b+EsDVicPsvsR09HHssvA7i913+t0RlRp0r+DAXKQcpSgKJ3brNX Xssb8yXSWo16byiAbRdzQiEE8zeRpSePm7RLqFkp5HTcN63dq2RyAebcN3o1k52X6ZWs g7FZJIvcxyRQZrBJx5//RP0vrV3WAHVGP4AdVJvRtdkLYZwxyTXOlMwPL6CPQ4i2jH+L K/NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=4gs3TcOwqmoplXaa22aqsRiYmNMnfkQt+x9wRyPAfJE=; b=PK/SsiFvEnZ5XTaBumZDw9MhDY1qIIxT2JzdkdpS3iISmJfF7SZ8cyrcLsEgArnOLw DGGp22EBxx4I7f0UW095EJPMtljLkDJ2UFRlYXy1rnhmadJpVsl4VkUQ28wlujRsqfrK 91eKWTPJU4hcABAs6i4ZFRxqmfsrFSWPgAn0Ao3KIAAl1CB0w96OqcvsS2cO598ZI9Ro Butpmm5daEwDDEPVaJMmFqYKvaCx22B3hafpHyS/FWOVPSuAsHRNMRfvf13qj0ne7sU8 wpnZl2kwbT09A74HmlDADVhX/hRe5s3jJaGNQuJdZWJDZ5WtlkqKM4rgu0xRMHk6dWjG XlvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@xilinx.onmicrosoft.com header.s=selector1-xilinx-onmicrosoft-com header.b=mIieEc2N; 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 b73si2115934pjc.53.2019.06.14.04.47.10; Fri, 14 Jun 2019 04:47:27 -0700 (PDT) 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=@xilinx.onmicrosoft.com header.s=selector1-xilinx-onmicrosoft-com header.b=mIieEc2N; 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 S1727673AbfFNLpV (ORCPT + 99 others); Fri, 14 Jun 2019 07:45:21 -0400 Received: from mail-eopbgr780082.outbound.protection.outlook.com ([40.107.78.82]:43918 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727164AbfFNLpV (ORCPT ); Fri, 14 Jun 2019 07:45:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4gs3TcOwqmoplXaa22aqsRiYmNMnfkQt+x9wRyPAfJE=; b=mIieEc2NqAqR8t8Y4fPWobmTdFYTTs031nX6orqRfK403EveRmGEOrhoOdFeezLxfi+123OuJkYQdW7EAtfZcaliGnHpyfKWI9Yn5WySO4OjguvrECEiLte/N7OhBUq8MMvr7Mq3vvjTdjKguDYPYSnTeTKx6TsbtzNrUS1fSKg= Received: from CH2PR02MB6088.namprd02.prod.outlook.com (52.132.228.94) by CH2PR02MB6390.namprd02.prod.outlook.com (52.132.231.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.11; Fri, 14 Jun 2019 11:44:52 +0000 Received: from CH2PR02MB6088.namprd02.prod.outlook.com ([fe80::d109:38a2:f2d5:b351]) by CH2PR02MB6088.namprd02.prod.outlook.com ([fe80::d109:38a2:f2d5:b351%7]) with mapi id 15.20.1965.017; Fri, 14 Jun 2019 11:44:52 +0000 From: Vishal Sagar To: Hans Verkuil CC: "linux-kernel@vger.kernel.org" , "linux-media@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , Dinesh Kumar , Sandip Kothari , Vishal Sagar , Hyun Kwon , Laurent Pinchart , Mauro Carvalho Chehab , Michal Simek , Rob Herring , Mark Rutland , Sakari Ailus Subject: RE: [PATCH 2/2] media: v4l: xilinx: Add Xilinx UHD-SDI Rx Subsystem driver Thread-Topic: [PATCH 2/2] media: v4l: xilinx: Add Xilinx UHD-SDI Rx Subsystem driver Thread-Index: AQHVGt1y9b6kdvITzkGymcoGfLMXzqaNBsMAgA4EhgA= Date: Fri, 14 Jun 2019 11:44:51 +0000 Message-ID: References: <1559656556-79174-1-git-send-email-vishal.sagar@xilinx.com> <1559656556-79174-3-git-send-email-vishal.sagar@xilinx.com> <023cf8a6-6fbc-6425-8bca-798045d39e02@xs4all.nl> In-Reply-To: <023cf8a6-6fbc-6425-8bca-798045d39e02@xs4all.nl> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=vsagar@xilinx.com; x-originating-ip: [149.199.50.133] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4deb21c4-5c35-4317-67bb-08d6f0bdb683 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:CH2PR02MB6390; x-ms-traffictypediagnostic: CH2PR02MB6390: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 0068C7E410 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(39860400002)(136003)(366004)(396003)(45074003)(13464003)(189003)(199004)(478600001)(102836004)(486006)(476003)(26005)(55016002)(446003)(11346002)(66066001)(33656002)(9686003)(186003)(71190400001)(316002)(6916009)(6246003)(71200400001)(14444005)(256004)(6506007)(76176011)(7696005)(53946003)(53546011)(52536014)(54906003)(7416002)(53936002)(74316002)(86362001)(81156014)(81166006)(8676002)(3846002)(25786009)(6116002)(66446008)(64756008)(66556008)(66476007)(8936002)(66946007)(76116006)(7736002)(305945005)(229853002)(4326008)(73956011)(6436002)(68736007)(14454004)(5660300002)(30864003)(2906002)(99286004)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:CH2PR02MB6390;H:CH2PR02MB6088.namprd02.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: xilinx.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: XIYLdsEnvazTyQYao3BlXSlku58Ja1KWppBKlZZQa2XfXS/3BOHEhsws+DdeETd/7ibw4g9hmTUomkwAUiR+PaCrSdnQ/RZcBAFNo9tHoU3vieUV9qWl2Aq0p18cVpZBjcRlZHB9uUyXulZmVYT457N3qg9lsOolOJcIozprneox1FHhpd5exI+LLny5qq1yU06oOXJO4+GYnhVZik2MuPx9xWxpE6hkzzE1fFSDLml0zMMHrbyEeniKHcjduqji4TpiTQD+1YaEBDd6npcjoM4+XJBqPTMgL00fG4xft2x3+vFIrRD+9CjELLTK/Huv2a33BEstMDf4xCeMih0C6tP/Bm0yotVpna8qxsL1+3MxjbV4j+6JPqke04hnZk5Z3eicnSctKOUGXXhpW4jXVSk0Lpt1P16ZQssS57tEqzU= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4deb21c4-5c35-4317-67bb-08d6f0bdb683 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2019 11:44:51.8275 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vsagar@xilinx.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR02MB6390 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgSGFucywNCg0KVGhhbmtzIGZvciByZXZpZXdpbmcgdGhpcyBwYXRjaC4NCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIYW5zIFZlcmt1aWwgW21haWx0bzpodmVya3Vp bEB4czRhbGwubmxdDQo+IFNlbnQ6IFdlZG5lc2RheSwgSnVuZSAwNSwgMjAxOSA2OjI4IFBNDQo+ IFRvOiBWaXNoYWwgU2FnYXIgPHZpc2hhbC5zYWdhckB4aWxpbnguY29tPjsgSHl1biBLd29uIDxo eXVua0B4aWxpbnguY29tPjsNCj4gTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBp ZGVhc29uYm9hcmQuY29tPjsgTWF1cm8gQ2FydmFsaG8NCj4gQ2hlaGFiIDxtY2hlaGFiQGtlcm5l bC5vcmc+OyBNaWNoYWwgU2ltZWsgPG1pY2hhbHNAeGlsaW54LmNvbT47IFJvYg0KPiBIZXJyaW5n IDxyb2JoK2R0QGtlcm5lbC5vcmc+OyBNYXJrIFJ1dGxhbmQgPG1hcmsucnV0bGFuZEBhcm0uY29t Pg0KPiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtbWVkaWFAdmdlci5r ZXJuZWwub3JnOyBsaW51eC1hcm0tDQo+IGtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBkZXZp Y2V0cmVlQHZnZXIua2VybmVsLm9yZzsgRGluZXNoIEt1bWFyDQo+IDxkaW5lc2hrQHhpbGlueC5j b20+OyBTYW5kaXAgS290aGFyaSA8c2FuZGlwa0B4aWxpbnguY29tPg0KPiBTdWJqZWN0OiBSZTog W1BBVENIIDIvMl0gbWVkaWE6IHY0bDogeGlsaW54OiBBZGQgWGlsaW54IFVIRC1TREkgUnggU3Vi c3lzdGVtDQo+IGRyaXZlcg0KPiANCj4gRVhURVJOQUwgRU1BSUwNCj4gDQo+IE9uIDYvNC8xOSAz OjU1IFBNLCBWaXNoYWwgU2FnYXIgd3JvdGU6DQo+ID4gVGhlIFhpbGlueCBVSEQtU0RJIFJ4IHN1 YnN5c3RlbSBzb2Z0IElQIGlzIHVzZWQgdG8gY2FwdHVyZSBuYXRpdmUgU0RJDQo+ID4gc3RyZWFt cyBmcm9tIFNESSBzb3VyY2VzIGxpa2UgU0RJIGJyb2FkY2FzdCBlcXVpcG1lbnQgbGlrZSBjYW1l cmFzIGFuZA0KPiA+IG1peGVycy4gVGhpcyBibG9jayBvdXRwdXRzIGVpdGhlciBuYXRpdmUgU0RJ LCBuYXRpdmUgdmlkZW8gb3INCj4gPiBBWEk0LVN0cmVhbSBjb21wbGlhbnQgZGF0YSBzdHJlYW0g Zm9yIGZ1cnRoZXIgcHJvY2Vzc2luZy4gUGxlYXNlIHJlZmVyDQo+ID4gdG8gUEcyOTAgZm9yIGRl dGFpbHMuDQo+ID4NCj4gPiBUaGUgZHJpdmVyIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBJUCB0 byBhZGQgZnJhbWVyLCBzZWFyY2ggZm9yDQo+ID4gc3BlY2lmaWMgbW9kZXMsIGdldCB0aGUgZGV0 ZWN0ZWQgbW9kZSwgc3RyZWFtIHBhcmFtZXRlcnMsIGVycm9ycywgZXRjLg0KPiA+IEl0IGFsc28g Z2VuZXJhdGVzIGV2ZW50cyBmb3IgdmlkZW8gbG9jay91bmxvY2ssIGJyaWRnZSBvdmVyL3VuZGVy IGZsb3cuDQo+ID4NCj4gPiBUaGUgZHJpdmVyIHN1cHBvcnRzIG9ubHkgMTAgYnBjIFlVViA0MjIg bWVkaWEgYnVzIGZvcm1hdC4gSXQgYWxzbw0KPiA+IGRlY29kZXMgdGhlIHN0cmVhbSBwYXJhbWV0 ZXJzIGJhc2VkIG9uIHRoZSBTVDM1MiBwYWNrZXQgZW1iZWRkZWQgaW4gdGhlDQo+ID4gc3RyZWFt LiBJbiBjYXNlIHRoZSBTVDM1MiBwYWNrZXQgaXNuJ3QgcHJlc2VudCBpbiB0aGUgc3RyZWFtLCB0 aGUgY29yZSdzDQo+ID4gZGV0ZWN0ZWQgcHJvcGVydGllcyBhcmUgdXNlZCB0byBzZXQgc3RyZWFt IHByb3BlcnRpZXMuDQo+ID4NCj4gPiBUaGUgZHJpdmVyIGN1cnJlbnRseSBzdXBwb3J0cyBvbmx5 IHRoZSBBWEk0LVN0cmVhbSBjb25maWd1cmF0aW9uLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTog VmlzaGFsIFNhZ2FyIDx2aXNoYWwuc2FnYXJAeGlsaW54LmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngvS2NvbmZpZyAgICAgICAgICB8ICAgMTEgKw0KPiA+ ICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3hpbGlueC9NYWtlZmlsZSAgICAgICAgIHwgICAgMSAr DQo+ID4gIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGlsaW54L3hpbGlueC1zZGlyeHNzLmMgfCAx ODQ2DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBpbmNsdWRlL3VhcGkvbGludXgv eGlsaW54LXNkaXJ4c3MuaCAgICAgICAgICAgIHwgICA2MyArDQo+ID4gIGluY2x1ZGUvdWFwaS9s aW51eC94aWxpbngtdjRsMi1jb250cm9scy5oICAgICAgfCAgIDMwICsNCj4gPiAgaW5jbHVkZS91 YXBpL2xpbnV4L3hpbGlueC12NGwyLWV2ZW50cy5oICAgICAgICB8ICAgIDkgKw0KPiANCj4gTXkg Y29tbWVudHMgZm9yIHRoZSBNSVBJIENTSS0yIFJ4IGRyaXZlciBhcHBseSBoZXJlIGFzIHdlbGwg d2l0aCByZXNwZWN0DQo+IHRvIHRoZSBuYW1pbmcgb2YgY29udHJvbHMvZXZlbnRzIGFuZCBkb2N1 bWVudGluZyB0aGVtLg0KPiANCj4gQWxzbywgdGhlIGNvbnRlbnRzIG9mIHhpbGlueC12NGwyLSou aCBjYW4ganVzdCBiZSBtb3ZlZCB0byB4aWxpbngtc2Rpcnhzcy5oLg0KPiANCg0KT2sgSSB3aWxs IHVwZGF0ZSB0aGUgcGF0Y2ggc2VyaWVzIGJhc2VkIG9uIHRoaXMgYW5kIHJlc2VuZCB2Mi4NCg0K PiA+ICA2IGZpbGVzIGNoYW5nZWQsIDE5NjAgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngveGlsaW54LXNkaXJ4c3MuYw0K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L3hpbGlueC1zZGlyeHNz LmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3hpbGlueC9L Y29uZmlnDQo+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngvS2NvbmZpZw0KPiA+IGlu ZGV4IGNkMWEwZmQuLjBjNjhjYWEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS94aWxpbngvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGls aW54L0tjb25maWcNCj4gPiBAQCAtMjAsNiArMjAsMTcgQEAgY29uZmlnIFZJREVPX1hJTElOWF9D U0kyUlhTUw0KPiA+ICAgICAgICAgQnJpZGdlLiBUaGUgZHJpdmVyIGlzIHVzZWQgdG8gc2V0IHRo ZSBudW1iZXIgb2YgYWN0aXZlIGxhbmVzIGFuZA0KPiA+ICAgICAgICAgZ2V0IHNob3J0IHBhY2tl dCBkYXRhLg0KPiA+DQo+ID4gK2NvbmZpZyBWSURFT19YSUxJTlhfU0RJUlhTUw0KPiA+ICsgICAg IHRyaXN0YXRlICJYaWxpbnggVUhEIFNESSBSeCBTdWJzeXN0ZW0iDQo+ID4gKyAgICAgaGVscA0K PiA+ICsgICAgICAgRHJpdmVyIGZvciBYaWxpbnggVUhELVNESSBSeCBTdWJzeXN0ZW0uIFRoaXMg aXMgYSBWNEwgc3ViLWRldmljZQ0KPiA+ICsgICAgICAgYmFzZWQgZHJpdmVyIHRoYXQgdGFrZXMg aW5wdXQgZnJvbSBhIFNESSBzb3VyY2UgbGlrZSBTREkgY2FtZXJhIGFuZA0KPiA+ICsgICAgICAg Y29udmVydHMgaXQgaW50byBhbiBBWEk0LVN0cmVhbS4gVGhlIHN1YnN5c3RlbSBjb21wcmlzZXMg b2YgYSBTTVBURQ0KPiA+ICsgICAgICAgVUhELVNESSBSeCBjb3JlLCBhIFNESSBSeCB0byBOYXRp dmUgVmlkZW8gYnJpZGdlIGFuZCBhIFZpZGVvIEluIHRvDQo+ID4gKyAgICAgICBBWEk0LVN0cmVh bSBicmlkZ2UuIFRoZSBkcml2ZXIgaXMgdXNlZCB0byBzZXQgZGlmZmVyZW50IHN0cmVhbQ0KPiA+ ICsgICAgICAgZGV0ZWN0aW9uIG1vZGVzIGFuZCBpZGVudGlmeSBzdHJlYW0gcHJvcGVydGllcyB0 byBwcm9wZXJseSBjb25maWd1cmUNCj4gPiArICAgICAgIGRvd25zdHJlYW0uDQo+ID4gKw0KPiA+ ICBjb25maWcgVklERU9fWElMSU5YX1RQRw0KPiA+ICAgICAgIHRyaXN0YXRlICJYaWxpbnggVmlk ZW8gVGVzdCBQYXR0ZXJuIEdlbmVyYXRvciINCj4gPiAgICAgICBkZXBlbmRzIG9uIFZJREVPX1hJ TElOWA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3hpbGlueC9NYWtl ZmlsZQ0KPiBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGlsaW54L01ha2VmaWxlDQo+ID4gaW5k ZXggNjExOWEzNC4uMjIzZjJlYSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRm b3JtL3hpbGlueC9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0veGls aW54L01ha2VmaWxlDQo+ID4gQEAgLTQsNSArNCw2IEBAIHhpbGlueC12aWRlby1vYmpzICs9IHhp bGlueC1kbWEubyB4aWxpbngtdmlwLm8geGlsaW54LXZpcHAubw0KPiA+DQo+ID4gIG9iai0kKENP TkZJR19WSURFT19YSUxJTlgpICs9IHhpbGlueC12aWRlby5vDQo+ID4gIG9iai0kKENPTkZJR19W SURFT19YSUxJTlhfQ1NJMlJYU1MpICs9IHhpbGlueC1jc2kycnhzcy5vDQo+ID4gK29iai0kKENP TkZJR19WSURFT19YSUxJTlhfU0RJUlhTUykgKz0geGlsaW54LXNkaXJ4c3Mubw0KPiA+ICBvYmot JChDT05GSUdfVklERU9fWElMSU5YX1RQRykgKz0geGlsaW54LXRwZy5vDQo+ID4gIG9iai0kKENP TkZJR19WSURFT19YSUxJTlhfVlRDKSArPSB4aWxpbngtdnRjLm8NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngveGlsaW54LXNkaXJ4c3MuYw0KPiBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0veGlsaW54L3hpbGlueC1zZGlyeHNzLmMNCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmJhMmQ5ZDANCj4gPiAtLS0gL2Rldi9udWxs DQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS94aWxpbngveGlsaW54LXNkaXJ4c3Mu Yw0KPiA+IEBAIC0wLDAgKzEsMTg0NiBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCsNCj4gPiArLyoNCj4gPiArICogRHJpdmVyIGZvciBYaWxpbnggU0RJIFJ4IFN1 YnN5c3RlbQ0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgLSAyMDE5IFhpbGlu eCwgSW5jLg0KPiA+ICsgKg0KPiA+ICsgKiBDb250YWN0czogVmlzaGFsIFNhZ2FyIDx2aXNoYWwu c2FnYXJAeGlsaW54LmNvbT4NCj4gPiArICoNCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVk ZSA8ZHQtYmluZGluZ3MvbWVkaWEveGlsaW54LXZpcC5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv Yml0b3BzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvY2xrLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv b2YuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbS5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrX3R5cGVzLmg+DQo+ID4gKyNpbmNsdWRlIDxs aW51eC90eXBlcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdjRsMi1zdWJkZXYuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L3hpbGlueC1zZGlyeHNzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC94 aWxpbngtdjRsMi1ldmVudHMuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3hpbGlueC12NGwyLWNv bnRyb2xzLmg+DQo+ID4gKyNpbmNsdWRlIDxtZWRpYS9tZWRpYS1lbnRpdHkuaD4NCj4gPiArI2lu Y2x1ZGUgPG1lZGlhL3Y0bDItY29tbW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWN0 cmxzLmg+DQo+ID4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWV2ZW50Lmg+DQo+ID4gKyNpbmNsdWRl IDxtZWRpYS92NGwyLWZ3bm9kZS5oPg0KPiA+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1zdWJkZXYu aD4NCj4gPiArI2luY2x1ZGUgInhpbGlueC12aXAuaCINCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAq IFNESSBSeCByZWdpc3RlciBtYXAsIGJpdG1hc2sgYW5kIG9mZnNldHMNCj4gPiArICovDQo+ID4g KyNkZWZpbmUgWFNESVJYX1JTVF9DVFJMX1JFRyAgICAgICAgICAweDAwDQo+ID4gKyNkZWZpbmUg WFNESVJYX01ETF9DVFJMX1JFRyAgICAgICAgICAweDA0DQo+ID4gKyNkZWZpbmUgWFNESVJYX0dM QkxfSUVSX1JFRyAgICAgICAgICAweDBDDQo+ID4gKyNkZWZpbmUgWFNESVJYX0lTUl9SRUcgICAg ICAgICAgICAgICAgICAgICAgIDB4MTANCj4gPiArI2RlZmluZSBYU0RJUlhfSUVSX1JFRyAgICAg ICAgICAgICAgICAgICAgICAgMHgxNA0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9WQUxJRF9S RUcgICAgICAgICAgICAgICAweDE4DQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX0RTMV9SRUcg ICAgICAgICAweDFDDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX0RTM19SRUcgICAgICAgICAw eDIwDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX0RTNV9SRUcgICAgICAgICAweDI0DQo+ID4g KyNkZWZpbmUgWFNESVJYX1NUMzUyX0RTN19SRUcgICAgICAgICAweDI4DQo+ID4gKyNkZWZpbmUg WFNESVJYX1NUMzUyX0RTOV9SRUcgICAgICAgICAweDJDDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NU MzUyX0RTMTFfUkVHICAgICAgICAgICAgICAgIDB4MzANCj4gPiArI2RlZmluZSBYU0RJUlhfU1Qz NTJfRFMxM19SRUcgICAgICAgICAgICAgICAgMHgzNA0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1 Ml9EUzE1X1JFRyAgICAgICAgICAgICAgICAweDM4DQo+ID4gKyNkZWZpbmUgWFNESVJYX1ZFUlNJ T05fUkVHICAgICAgICAgICAweDNDDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NTX0NPTkZJR19SRUcg ICAgICAgICAweDQwDQo+ID4gKyNkZWZpbmUgWFNESVJYX01PREVfREVUX1NUQVRfUkVHICAgICAw eDQ0DQo+ID4gKyNkZWZpbmUgWFNESVJYX1RTX0RFVF9TVEFUX1JFRyAgICAgICAgICAgICAgIDB4 NDgNCj4gPiArI2RlZmluZSBYU0RJUlhfRURIX1NUQVRfUkVHICAgICAgICAgIDB4NEMNCj4gPiAr I2RlZmluZSBYU0RJUlhfRURIX0VSUkNOVF9FTl9SRUcgICAgIDB4NTANCj4gPiArI2RlZmluZSBY U0RJUlhfRURIX0VSUkNOVF9SRUcgICAgICAgICAgICAgICAgMHg1NA0KPiA+ICsjZGVmaW5lIFhT RElSWF9DUkNfRVJSQ05UX1JFRyAgICAgICAgICAgICAgICAweDU4DQo+ID4gKyNkZWZpbmUgWFNE SVJYX1ZJRF9MT0NLX1dJTkRPV19SRUcgICAweDVDDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NCX1JY X1NUU19SRUcgICAgICAgICAweDYwDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RS TF9TU19FTl9NQVNLICAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPiA+ICsjZGVmaW5lIFhTRElS WF9SU1RfQ1RSTF9TUlNUX01BU0sgICAgICAgICAgICAgICAgICAgIEJJVCgxKQ0KPiA+ICsjZGVm aW5lIFhTRElSWF9SU1RfQ1RSTF9SU1RfQ1JDX0VSUkNOVF9NQVNLICAgICAgICAgIEJJVCgyKQ0K PiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9SU1RfRURIX0VSUkNOVF9NQVNLICAgICAgICAg IEJJVCgzKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9SU1RfQ1RSTF9TRElSWF9CUklER0VfRU5CX01B U0sgICAgICAgICAgICAgICAgQklUKDgpDQo+ID4gKyNkZWZpbmUgWFNESVJYX1JTVF9DVFJMX1ZJ RElOX0FYSTRTX01PRF9FTkJfTUFTSyAgICAgQklUKDkpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhT RElSWF9NRExfQ1RSTF9GUk1fRU5fTUFTSyAgICAgICAgICBCSVQoNCkNCj4gPiArI2RlZmluZSBY U0RJUlhfTURMX0NUUkxfTU9ERV9ERVRfRU5fTUFTSyAgICAgQklUKDUpDQo+ID4gKyNkZWZpbmUg WFNESVJYX01ETF9DVFJMX01PREVfSERfRU5fTUFTSyAgICAgICAgICAgICAgQklUKDgpDQo+ID4g KyNkZWZpbmUgWFNESVJYX01ETF9DVFJMX01PREVfU0RfRU5fTUFTSyAgICAgICAgICAgICAgQklU KDkpDQo+ID4gKyNkZWZpbmUgWFNESVJYX01ETF9DVFJMX01PREVfM0dfRU5fTUFTSyAgICAgICAg ICAgICAgQklUKDEwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9NT0RFXzZHX0VOX01B U0sgICAgICAgICAgICAgIEJJVCgxMSkNCj4gPiArI2RlZmluZSBYU0RJUlhfTURMX0NUUkxfTU9E RV8xMkdJX0VOX01BU0sgICAgQklUKDEyKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NRExfQ1RSTF9N T0RFXzEyR0ZfRU5fTUFTSyAgICBCSVQoMTMpDQo+ID4gKyNkZWZpbmUgWFNESVJYX01ETF9DVFJM X01PREVfQVVUT19ERVRfTUFTSyAgIEdFTk1BU0soMTMsIDgpDQo+ID4gKw0KPiA+ICsjZGVmaW5l IFhTRElSWF9NRExfQ1RSTF9GT1JDRURfTU9ERV9PRkZTRVQgICAxNg0KPiA+ICsjZGVmaW5lIFhT RElSWF9NRExfQ1RSTF9GT1JDRURfTU9ERV9NQVNLICAgICBHRU5NQVNLKDE4LCAxNikNCj4gPiAr DQo+ID4gKyNkZWZpbmUgWFNESVJYX0dMQkxfSU5UUl9FTl9NQVNLICAgICBCSVQoMCkNCj4gPiAr DQo+ID4gKyNkZWZpbmUgWFNESVJYX0lOVFJfVklETE9DS19NQVNLICAgICBCSVQoMCkNCj4gPiAr I2RlZmluZSBYU0RJUlhfSU5UUl9WSURVTkxPQ0tfTUFTSyAgIEJJVCgxKQ0KPiA+ICsjZGVmaW5l IFhTRElSWF9JTlRSX09WRVJGTE9XX01BU0sgICAgQklUKDkpDQo+ID4gKyNkZWZpbmUgWFNESVJY X0lOVFJfVU5ERVJGTE9XX01BU0sgICBCSVQoMTApDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElS WF9JTlRSX0FMTF9NQVNLIChYU0RJUlhfSU5UUl9WSURMT0NLX01BU0sgfFwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYU0RJUlhfSU5UUl9WSURVTkxPQ0tfTUFTSyB8XA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhTRElSWF9JTlRSX09WRVJGTE9XX01BU0sg fFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYU0RJUlhfSU5UUl9VTkRFUkZM T1dfTUFTSykNCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUyX1ZBTElEX0RTMV9NQVNL ICBCSVQoMCkNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfVkFMSURfRFMzX01BU0sgIEJJVCgx KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVDM1Ml9WQUxJRF9EUzVfTUFTSyAgQklUKDIpDQo+ID4g KyNkZWZpbmUgWFNESVJYX1NUMzUyX1ZBTElEX0RTN19NQVNLICBCSVQoMykNCj4gPiArI2RlZmlu ZSBYU0RJUlhfU1QzNTJfVkFMSURfRFM5X01BU0sgIEJJVCg0KQ0KPiA+ICsjZGVmaW5lIFhTRElS WF9TVDM1Ml9WQUxJRF9EUzExX01BU0sgQklUKDUpDQo+ID4gKyNkZWZpbmUgWFNESVJYX1NUMzUy X1ZBTElEX0RTMTNfTUFTSyBCSVQoNikNCj4gPiArI2RlZmluZSBYU0RJUlhfU1QzNTJfVkFMSURf RFMxNV9NQVNLIEJJVCg3KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfTU9ERV9ERVRfU1RB VF9SWF9NT0RFX01BU0sgICAgR0VOTUFTSygyLCAwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RF X0RFVF9TVEFUX01PREVfTE9DS19NQVNLICBCSVQoMykNCj4gPiArI2RlZmluZSBYU0RJUlhfTU9E RV9ERVRfU1RBVF9BQ1RfU1RSRUFNX01BU0sgR0VOTUFTSyg2LCA0KQ0KPiA+ICsjZGVmaW5lIFhT RElSWF9NT0RFX0RFVF9TVEFUX0FDVF9TVFJFQU1fT0ZGU0VUICAgICAgIDQNCj4gPiArI2RlZmlu ZSBYU0RJUlhfTU9ERV9ERVRfU1RBVF9MVkxCXzNHX01BU0sgICAgQklUKDcpDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFhTRElSWF9BQ1RJVkVfU1RSRUFNU18xICAgICAgICAgICAgICAweDANCj4gPiAr I2RlZmluZSBYU0RJUlhfQUNUSVZFX1NUUkVBTVNfMiAgICAgICAgICAgICAgMHgxDQo+ID4gKyNk ZWZpbmUgWFNESVJYX0FDVElWRV9TVFJFQU1TXzQgICAgICAgICAgICAgIDB4Mg0KPiA+ICsjZGVm aW5lIFhTRElSWF9BQ1RJVkVfU1RSRUFNU184ICAgICAgICAgICAgICAweDMNCj4gPiArI2RlZmlu ZSBYU0RJUlhfQUNUSVZFX1NUUkVBTVNfMTYgICAgIDB4NA0KPiA+ICsNCj4gPiArI2RlZmluZSBY U0RJUlhfVFNfREVUX1NUQVRfTE9DS0VEX01BU0sgICAgICAgICAgICAgICBCSVQoMCkNCj4gPiAr I2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfU0NBTl9NQVNLICAgICAgICAgQklUKDEpDQo+ID4g KyNkZWZpbmUgWFNESVJYX1RTX0RFVF9TVEFUX1NDQU5fT0ZGU0VUICAgICAgICAgICAgICAgKDEp DQo+ID4gKyNkZWZpbmUgWFNESVJYX1RTX0RFVF9TVEFUX0ZBTUlMWV9NQVNLICAgICAgICAgICAg ICAgR0VOTUFTSyg3LCA0KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9UU19ERVRfU1RBVF9GQU1JTFlf T0ZGU0VUICAgICAoNCkNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV9NQVNL ICAgICAgICAgR0VOTUFTSygxMSwgOCkNCj4gPiArI2RlZmluZSBYU0RJUlhfVFNfREVUX1NUQVRf UkFURV9PRkZTRVQgICAgICAgICAgICAgICAoOCkNCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNESVJY X1RTX0RFVF9TVEFUX1JBVEVfTk9ORSAgICAgICAgIDB4MA0KPiA+ICsjZGVmaW5lIFhTRElSWF9U U19ERVRfU1RBVF9SQVRFXzIzXzk4SFogICAgICAgICAgICAgIDB4Mg0KPiA+ICsjZGVmaW5lIFhT RElSWF9UU19ERVRfU1RBVF9SQVRFXzI0SFogICAgICAgICAweDMNCj4gPiArI2RlZmluZSBYU0RJ UlhfVFNfREVUX1NUQVRfUkFURV80N185NUhaICAgICAgICAgICAgICAweDQNCj4gPiArI2RlZmlu ZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8yNUhaICAgICAgICAgMHg1DQo+ID4gKyNkZWZpbmUg WFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfMjlfOTdIWiAgICAgICAgICAgICAgMHg2DQo+ID4gKyNk ZWZpbmUgWFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfMzBIWiAgICAgICAgIDB4Nw0KPiA+ICsjZGVm aW5lIFhTRElSWF9UU19ERVRfU1RBVF9SQVRFXzQ4SFogICAgICAgICAweDgNCj4gPiArI2RlZmlu ZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV81MEhaICAgICAgICAgMHg5DQo+ID4gKyNkZWZpbmUg WFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfNTlfOTRIWiAgICAgICAgICAgICAgMHhBDQo+ID4gKyNk ZWZpbmUgWFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfNjBIWiAgICAgICAgIDB4Qg0KPiA+ICsNCj4g PiArI2RlZmluZSBYU0RJUlhfRURIX1NUQVRfRURIX0FQX01BU0sgIEJJVCgwKQ0KPiA+ICsjZGVm aW5lIFhTRElSWF9FREhfU1RBVF9FREhfRkZfTUFTSyAgQklUKDEpDQo+ID4gKyNkZWZpbmUgWFNE SVJYX0VESF9TVEFUX0VESF9BTkNfTUFTSyBCSVQoMikNCj4gPiArI2RlZmluZSBYU0RJUlhfRURI X1NUQVRfQVBfRkxBR19NQVNLIEdFTk1BU0soOCwgNCkNCj4gPiArI2RlZmluZSBYU0RJUlhfRURI X1NUQVRfRkZfRkxBR19NQVNLIEdFTk1BU0soMTMsIDkpDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VE SF9TVEFUX0FOQ19GTEFHX01BU0sgICAgICAgIEdFTk1BU0soMTgsIDE0KQ0KPiA+ICsjZGVmaW5l IFhTRElSWF9FREhfU1RBVF9QS1RfRkxBR19NQVNLICAgICAgICBHRU5NQVNLKDIyLCAxOSkNCj4g PiArDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQ09VTlRfTUFTSyBHRU5NQVNLKDE1 LCAwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfQ1JDX0VSUkNOVF9DT1VOVF9NQVNLIEdF Tk1BU0soMzEsIDE2KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9DUkNfRVJSQ05UX0RTX0NSQ19NQVNL ICAgICAgICBHRU5NQVNLKDE1LCAwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfVkVSU0lP Tl9SRVZfTUFTSyAgICAgICAgICAgICAgR0VOTUFTSyg3LCAwKQ0KPiA+ICsjZGVmaW5lIFhTRElS WF9WRVJTSU9OX1BBVENISURfTUFTSyAgR0VOTUFTSygxMSwgOCkNCj4gPiArI2RlZmluZSBYU0RJ UlhfVkVSU0lPTl9WRVJfUkVWX01BU0sgIEdFTk1BU0soMTUsIDEyKQ0KPiA+ICsjZGVmaW5lIFhT RElSWF9WRVJTSU9OX1ZFUl9NSU5fTUFTSyAgR0VOTUFTSygyMywgMTYpDQo+ID4gKyNkZWZpbmUg WFNESVJYX1ZFUlNJT05fVkVSX01BSl9NQVNLICBHRU5NQVNLKDMxLCAyNCkNCj4gPiArDQo+ID4g KyNkZWZpbmUgWFNESVJYX1NTX0NPTkZJR19FREhfSU5DTFVERURfTUFTSyAgICAgICAgICAgQklU KDEpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVEFUX1NCX1JYX1REQVRBX0NIQU5HRV9E T05FX01BU0sgICAgIEJJVCgwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVEFUX1NCX1JYX1REQVRB X0NIQU5HRV9GQUlMX01BU0sgICAgIEJJVCgxKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9TVEFUX1NC X1JYX1REQVRBX0dUX1JFU0VURE9ORV9NQVNLICAgIEJJVCgyKQ0KPiA+ICsjZGVmaW5lIFhTRElS WF9TVEFUX1NCX1JYX1REQVRBX0dUX0JJVFJBVEVfTUFTSyAgICAgICAgICAgICAgQklUKDMpDQo+ ID4gKw0KPiA+ICsvKiBOdW1iZXIgb2YgbWVkaWEgcGFkcyAqLw0KPiA+ICsjZGVmaW5lIFhTRElS WF9NRURJQV9QQURTICAgICgxKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfREVGQVVMVF9X SURUSCAoMTkyMCkNCj4gPiArI2RlZmluZSBYU0RJUlhfREVGQVVMVF9IRUlHSFQgICAgICAgICgx MDgwKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhfTUFYX1NUUl9MRU5HVEggICAgICAgIDE2 DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFhTRElSWFNTX1NESV9TVERfM0cgICAgICAgICAgMA0KPiA+ ICsjZGVmaW5lIFhTRElSWFNTX1NESV9TVERfNkcgICAgICAgICAgMQ0KPiA+ICsjZGVmaW5lIFhT RElSWFNTX1NESV9TVERfMTJHXzhEUyAgICAgMg0KPiA+ICsNCj4gPiArI2RlZmluZSBYU0RJUlhf REVGQVVMVF9WSURFT19MT0NLX1dJTkRPVyAgICAgMHgzMDAwDQo+ID4gKw0KPiA+ICsjZGVmaW5l IFhTRElSWF9NT0RFX0hEX01BU0sgIDB4MA0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFX1NEX01B U0sgIDB4MQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFXzNHX01BU0sgIDB4Mg0KPiA+ICsjZGVm aW5lIFhTRElSWF9NT0RFXzZHX01BU0sgIDB4NA0KPiA+ICsjZGVmaW5lIFhTRElSWF9NT0RFXzEy R0lfTUFTSyAgICAgICAgMHg1DQo+ID4gKyNkZWZpbmUgWFNESVJYX01PREVfMTJHRl9NQVNLICAg ICAgICAweDYNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIE1heGltdW0gbnVtYmVyIG9mIGV2ZW50 cyBwZXIgZmlsZSBoYW5kbGUuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFhTRElSWF9NQVhfRVZF TlRTICAgICgxMjgpDQo+ID4gKw0KPiA+ICsvKiBTVDM1MiByZWxhdGVkIG1hY3JvcyAqLw0KPiA+ ICsjZGVmaW5lIFhTVDM1Ml9QQVlMT0FEX0JZVEVfTUFTSyAgICAgMHhGRg0KPiA+ICsjZGVmaW5l IFhTVDM1Ml9QQVlMT0FEX0JZVEUxX1NISUZUICAgMA0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9QQVlM T0FEX0JZVEUyX1NISUZUICAgOA0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9QQVlMT0FEX0JZVEUzX1NI SUZUICAgMTYNCj4gPiArI2RlZmluZSBYU1QzNTJfUEFZTE9BRF9CWVRFNF9TSElGVCAgIDI0DQo+ ID4gKw0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMV9TVDI5Ml8xeDcyMExfMV81RyAgICAgICAg ICAgICAgIDB4ODQNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTFfU1QyOTJfMXgxMDgwTF8xXzVH ICAgICAgICAgICAgICAweDg1DQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUxX1NUNDI1XzIwMDhf NzUwTF8zR0IgICAgIDB4ODgNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTFfU1Q0MjVfMjAwOF8x MTI1TF8zR0EgICAgMHg4OQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMV9TVDM3Ml9ETF8zR0Ig ICAgICAgICAgICAweDhBDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUxX1NUMzcyXzJ4NzIwTF8z R0IgICAgICAgICAgICAgICAgMHg4Qg0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMV9TVDM3Ml8y eDEwODBMXzNHQiAgICAgICAgICAgICAgIDB4OEMNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTFf U1QyMDgxXzEwXzIxNjBMXzZHICAgICAgICAgICAgICAweEMwDQo+ID4gKyNkZWZpbmUgWFNUMzUy X0JZVEUxX1NUMjA4MV8xMF9ETF8yMTYwTF82RyAgIDB4QzINCj4gPiArI2RlZmluZSBYU1QzNTJf QllURTFfU1QyMDgyXzEwXzIxNjBMXzEyRyAgICAgMHhDRQ0KPiA+ICsNCj4gPiArI2RlZmluZSBY U1QzNTJfQllURTJfVFNfVFlQRV9NQVNLICAgICAgICAgICAgQklUKDE1KQ0KPiA+ICsjZGVmaW5l IFhTVDM1Ml9CWVRFMl9UU19UWVBFX09GRlNFVCAgICAgICAgICAxNQ0KPiA+ICsjZGVmaW5lIFhT VDM1Ml9CWVRFMl9QSUNfVFlQRV9NQVNLICAgICAgICAgICBCSVQoMTQpDQo+ID4gKyNkZWZpbmUg WFNUMzUyX0JZVEUyX1BJQ19UWVBFX09GRlNFVCAgICAgICAgIDE0DQo+ID4gKyNkZWZpbmUgWFNU MzUyX0JZVEUyX1RTX1BJQ19UWVBFX0lOVEVSTEFDRUQgIDANCj4gPiArI2RlZmluZSBYU1QzNTJf QllURTJfVFNfUElDX1RZUEVfUFJPR1JFU1NJVkUgMQ0KPiA+ICsNCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTJfRlBTX01BU0sgICAgICAgICAgICAgICAgICAgICAgICAweEYNCj4gPiArI2RlZmlu ZSBYU1QzNTJfQllURTJfRlBTX1NISUZUICAgICAgICAgICAgICAgICAgICAgICA4DQo+ID4gKyNk ZWZpbmUgWFNUMzUyX0JZVEUyX0ZQU18yNEYgICAgICAgICAgICAgICAgIDB4Mg0KPiA+ICsjZGVm aW5lIFhTVDM1Ml9CWVRFMl9GUFNfMjQgICAgICAgICAgICAgICAgICAweDMNCj4gPiArI2RlZmlu ZSBYU1QzNTJfQllURTJfRlBTXzQ4RiAgICAgICAgICAgICAgICAgMHg0DQo+ID4gKyNkZWZpbmUg WFNUMzUyX0JZVEUyX0ZQU18yNSAgICAgICAgICAgICAgICAgIDB4NQ0KPiA+ICsjZGVmaW5lIFhT VDM1Ml9CWVRFMl9GUFNfMzBGICAgICAgICAgICAgICAgICAweDYNCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTJfRlBTXzMwICAgICAgICAgICAgICAgICAgMHg3DQo+ID4gKyNkZWZpbmUgWFNUMzUy X0JZVEUyX0ZQU180OCAgICAgICAgICAgICAgICAgIDB4OA0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9C WVRFMl9GUFNfNTAgICAgICAgICAgICAgICAgICAweDkNCj4gPiArI2RlZmluZSBYU1QzNTJfQllU RTJfRlBTXzYwRiAgICAgICAgICAgICAgICAgMHhBDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUy X0ZQU182MCAgICAgICAgICAgICAgICAgIDB4Qg0KPiA+ICsvKiBUYWJsZSA0IFNUIDIwODEtMTA6 MjAxNSAqLw0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMl9GUFNfOTYgICAgICAgICAgICAgICAg ICAweEMNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTJfRlBTXzEwMCAgICAgICAgICAgICAgICAg MHhEDQo+ID4gKyNkZWZpbmUgWFNUMzUyX0JZVEUyX0ZQU18xMjAgICAgICAgICAgICAgICAgIDB4 RQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFMl9GUFNfMTIwRiAgICAgICAgICAgICAgICAgICAg ICAgIDB4Rg0KPiA+ICsNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTNfQUNUX0xVTUFfQ09VTlRf TUFTSyAgICAgQklUKDIyKQ0KPiA+ICsjZGVmaW5lIFhTVDM1Ml9CWVRFM19BQ1RfTFVNQV9DT1VO VF9PRkZTRVQgICAyMg0KPiA+ICsNCj4gPiArI2RlZmluZSBYU1QzNTJfQllURTNfQ09MT1JfRk9S TUFUX01BU0sgICAgICAgICAgICAgICBHRU5NQVNLKDE5LCAxNikNCj4gPiArI2RlZmluZSBYU1Qz NTJfQllURTNfQ09MT1JfRk9STUFUX09GRlNFVCAgICAgMTYNCj4gPiArI2RlZmluZSBYU1QzNTJf QllURTNfQ09MT1JfRk9STUFUXzQyMiAgICAgICAgICAgICAgICAweDANCj4gPiArI2RlZmluZSBY U1QzNTJfQllURTNfQ09MT1JfRk9STUFUXzQyMCAgICAgICAgICAgICAgICAweDMNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBlbnVtIHNkaV9mYW1pbHlfZW5jIC0gU0RJIFRyYW5zcG9ydCBWaWRl byBGb3JtYXQgRGV0ZWN0ZWQgd2l0aCBBY3RpdmUNCj4gUGl4ZWxzDQo+ID4gKyAqIEBYU0RJUlhf U01QVEVfU1RfMjc0OiBTTVBURSBTVCAyNzQgZGV0ZWN0ZWQgd2l0aCBBUCAxOTIweDEwODANCj4g PiArICogQFhTRElSWF9TTVBURV9TVF8yOTY6IFNNUFRFIFNUIDI5NiBkZXRlY3RlZCB3aXRoIEFQ IDEyODB4NzIwDQo+ID4gKyAqIEBYU0RJUlhfU01QVEVfU1RfMjA0OF8yOiBTTVBURSBTVCAyMDQ4 LTIgZGV0ZWN0ZWQgd2l0aCBBUA0KPiAyMDQ4eDEwODANCj4gPiArICogQFhTRElSWF9TTVBURV9T VF8yOTU6IFNNUFRFIFNUIDI5NSBkZXRlY3RlZCB3aXRoIEFQIDE5MjB4MTA4MA0KPiA+ICsgKiBA WFNESVJYX05UU0M6IE5UU0MgZW5jb2RpbmcgZGV0ZWN0ZWQgd2l0aCBBUCA3MjB4NDg2DQo+ID4g KyAqIEBYU0RJUlhfUEFMOiBQQUwgZW5jb2RpbmcgZGV0ZWN0ZWQgd2l0aCBBUCA3MjB4NTc2DQo+ ID4gKyAqIEBYU0RJUlhfVFNfVU5LTk9XTjogVW5rbm93biBTTVBURSBUcmFuc3BvcnQgZmFtaWx5 IHR5cGUNCj4gPiArICovDQo+ID4gK2VudW0gc2RpX2ZhbWlseV9lbmMgew0KPiA+ICsgICAgIFhT RElSWF9TTVBURV9TVF8yNzQgICAgID0gMCwNCj4gPiArICAgICBYU0RJUlhfU01QVEVfU1RfMjk2 ICAgICA9IDEsDQo+ID4gKyAgICAgWFNESVJYX1NNUFRFX1NUXzIwNDhfMiAgPSAyLA0KPiA+ICsg ICAgIFhTRElSWF9TTVBURV9TVF8yOTUgICAgID0gMywNCj4gPiArICAgICBYU0RJUlhfTlRTQyAg ICAgICAgICAgICA9IDgsDQo+ID4gKyAgICAgWFNESVJYX1BBTCAgICAgICAgICAgICAgPSA5LA0K PiA+ICsgICAgIFhTRElSWF9UU19VTktOT1dOICAgICAgID0gMTUNCj4gPiArfTsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgeHNkaXJ4c3NfY29yZSAtIENvcmUgY29uZmlndXJhdGlv biBTREkgUnggU3Vic3lzdGVtIGRldmljZQ0KPiBzdHJ1Y3R1cmUNCj4gPiArICogQGRldjogUGxh dGZvcm0gc3RydWN0dXJlDQo+ID4gKyAqIEBpb21lbTogQmFzZSBhZGRyZXNzIG9mIHN1YnN5c3Rl bQ0KPiA+ICsgKiBAaXJxOiByZXF1ZXN0ZWQgaXJxIG51bWJlcg0KPiA+ICsgKiBAaW5jbHVkZV9l ZGg6IEVESCBwcm9jZXNzb3IgcHJlc2VuY2UNCj4gPiArICogQG1vZGU6IDNHLzZHLzEyRyBtb2Rl DQo+ID4gKyAqIEBheGlfY2xrOiBBeGkgbGl0ZSBpbnRlcmZhY2UgY2xvY2sNCj4gPiArICogQHNk aXJ4X2NsazogU0RJIFJ4IEdUIGNsb2NrDQo+ID4gKyAqIEB2aWRvdXRfY2xrOiBWaWRlbyBjbG9j aw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHhzZGlyeHNzX2NvcmUgew0KPiA+ICsgICAgIHN0cnVj dCBkZXZpY2UgKmRldjsNCj4gPiArICAgICB2b2lkIF9faW9tZW0gKmlvbWVtOw0KPiA+ICsgICAg IGludCBpcnE7DQo+ID4gKyAgICAgYm9vbCBpbmNsdWRlX2VkaDsNCj4gPiArICAgICBpbnQgbW9k ZTsNCj4gPiArICAgICBzdHJ1Y3QgY2xrICpheGlfY2xrOw0KPiA+ICsgICAgIHN0cnVjdCBjbGsg KnNkaXJ4X2NsazsNCj4gPiArICAgICBzdHJ1Y3QgY2xrICp2aWRvdXRfY2xrOw0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAtIFNESSBSeCBT dWJzeXN0ZW0gZGV2aWNlIHN0cnVjdHVyZQ0KPiA+ICsgKiBAY29yZTogQ29yZSBzdHJ1Y3R1cmUg Zm9yIE1JUEkgU0RJIFJ4IFN1YnN5c3RlbQ0KPiA+ICsgKiBAc3ViZGV2OiBUaGUgdjRsMiBzdWJk ZXYgc3RydWN0dXJlDQo+ID4gKyAqIEBjdHJsX2hhbmRsZXI6IGNvbnRyb2wgaGFuZGxlcg0KPiA+ ICsgKiBAZXZlbnQ6IEhvbGRzIHRoZSB2aWRlbyB1bmxvY2sgZXZlbnQNCj4gPiArICogQGZvcm1h dHM6IEFjdGl2ZSBWNEwyIGZvcm1hdHMgb24gZWFjaCBwYWQNCj4gPiArICogQGRlZmF1bHRfZm9y bWF0OiBkZWZhdWx0IFY0TDIgbWVkaWEgYnVzIGZvcm1hdA0KPiA+ICsgKiBAZnJhbWVfaW50ZXJ2 YWw6IENhcHR1cmVzIHRoZSBmcmFtZSByYXRlDQo+ID4gKyAqIEB2aXBfZm9ybWF0OiBmb3JtYXQg aW5mb3JtYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUgYWN0aXZlIGZvcm1hdA0KPiA+ICsgKiBA cGFkczogbWVkaWEgcGFkcw0KPiA+ICsgKiBAc3RyZWFtaW5nOiBGbGFnIGZvciBzdG9yaW5nIHN0 cmVhbWluZyBzdGF0ZQ0KPiA+ICsgKiBAdmlkbG9ja2VkOiBGbGFnIGluZGljYXRpbmcgU0RJIFJ4 IGhhcyBsb2NrZWQgb250byB2aWRlbyBzdHJlYW0NCj4gPiArICogQHRzX2lzX2ludGVybGFjZWQ6 IEZsYWcgaW5kaWNhdGluZyBUcmFuc3BvcnQgU3RyZWFtIGlzIGludGVybGFjZWQuDQo+ID4gKyAq DQo+ID4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBkZXZpY2UgZHJpdmVyIHJlbGF0 ZWQgcGFyYW1ldGVycw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IHhzZGlyeHNzX3N0YXRlIHsNCj4g PiArICAgICBzdHJ1Y3QgeHNkaXJ4c3NfY29yZSBjb3JlOw0KPiA+ICsgICAgIHN0cnVjdCB2NGwy X3N1YmRldiBzdWJkZXY7DQo+ID4gKyAgICAgc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxf aGFuZGxlcjsNCj4gPiArICAgICBzdHJ1Y3QgdjRsMl9ldmVudCBldmVudDsNCj4gPiArICAgICBz dHJ1Y3QgdjRsMl9tYnVzX2ZyYW1lZm10IGZvcm1hdHNbWFNESVJYX01FRElBX1BBRFNdOw0KPiA+ ICsgICAgIHN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgZGVmYXVsdF9mb3JtYXQ7DQo+ID4gKyAg ICAgc3RydWN0IHY0bDJfZnJhY3QgZnJhbWVfaW50ZXJ2YWw7DQo+ID4gKyAgICAgY29uc3Qgc3Ry dWN0IHh2aXBfdmlkZW9fZm9ybWF0ICp2aXBfZm9ybWF0Ow0KPiA+ICsgICAgIHN0cnVjdCBtZWRp YV9wYWQgcGFkc1tYU0RJUlhfTUVESUFfUEFEU107DQo+ID4gKyAgICAgYm9vbCBzdHJlYW1pbmc7 DQo+ID4gKyAgICAgYm9vbCB2aWRsb2NrZWQ7DQo+ID4gKyAgICAgYm9vbCB0c19pc19pbnRlcmxh Y2VkOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgeHNkaXJ4c3Nf c3RhdGUgKg0KPiA+ICt0b194c2Rpcnhzc3N0YXRlKHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2 KQ0KPiA+ICt7DQo+ID4gKyAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihzdWJkZXYsIHN0cnVjdCB4 c2Rpcnhzc19zdGF0ZSwgc3ViZGV2KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICog UmVnaXN0ZXIgcmVsYXRlZCBvcGVyYXRpb25zDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW5saW5l IHUzMiB4c2Rpcnhzc19yZWFkKHN0cnVjdCB4c2Rpcnhzc19jb3JlICp4c2RpcnhzcywgdTMyIGFk ZHIpDQo+ID4gK3sNCj4gPiArICAgICByZXR1cm4gaW9yZWFkMzIoeHNkaXJ4c3MtPmlvbWVtICsg YWRkcik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCB4c2Rpcnhzc193 cml0ZShzdHJ1Y3QgeHNkaXJ4c3NfY29yZSAqeHNkaXJ4c3MsIHUzMiBhZGRyLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIHZhbHVlKQ0KPiA+ICt7DQo+ID4gKyAgICAg aW93cml0ZTMyKHZhbHVlLCB4c2Rpcnhzcy0+aW9tZW0gKyBhZGRyKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGlubGluZSB2b2lkIHhzZGlyeHNzX2NscihzdHJ1Y3QgeHNkaXJ4c3NfY29y ZSAqeHNkaXJ4c3MsIHUzMiBhZGRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHUzMiBjbHIpDQo+ID4gK3sNCj4gPiArICAgICB4c2Rpcnhzc193cml0ZSh4c2RpcnhzcywgYWRk ciwgeHNkaXJ4c3NfcmVhZCh4c2RpcnhzcywgYWRkcikgJiB+Y2xyKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGlubGluZSB2b2lkIHhzZGlyeHNzX3NldChzdHJ1Y3QgeHNkaXJ4c3NfY29y ZSAqeHNkaXJ4c3MsIHUzMiBhZGRyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHUzMiBzZXQpDQo+ID4gK3sNCj4gPiArICAgICB4c2Rpcnhzc193cml0ZSh4c2RpcnhzcywgYWRk ciwgeHNkaXJ4c3NfcmVhZCh4c2RpcnhzcywgYWRkcikgfCBzZXQpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZCB4c2RpcnhfY29yZV9kaXNhYmxlKHN0cnVjdCB4c2Rpcnhzc19jb3Jl ICpjb3JlKQ0KPiA+ICt7DQo+ID4gKyAgICAgeHNkaXJ4c3NfY2xyKGNvcmUsIFhTRElSWF9SU1Rf Q1RSTF9SRUcsDQo+IFhTRElSWF9SU1RfQ1RSTF9TU19FTl9NQVNLKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4X2NvcmVfZW5hYmxlKHN0cnVjdCB4c2Rpcnhzc19jb3Jl ICpjb3JlKQ0KPiA+ICt7DQo+ID4gKyAgICAgeHNkaXJ4c3Nfc2V0KGNvcmUsIFhTRElSWF9SU1Rf Q1RSTF9SRUcsDQo+IFhTRElSWF9SU1RfQ1RSTF9TU19FTl9NQVNLKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCB4c2Rpcnhfc2V0X21vZGVkZXRlY3Qoc3RydWN0IHhzZGlyeHNzX2Nv cmUgKmNvcmUsIHUxNiBtYXNrKQ0KPiA+ICt7DQo+ID4gKyAgICAgdTMyIGksIHZhbDsNCj4gPiAr DQo+ID4gKyAgICAgbWFzayAmPSBYU0RJUlhfREVURUNUX0FMTF9NT0RFUzsNCj4gPiArICAgICBp ZiAoIW1hc2spIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY29yZS0+ZGV2LCAiSW52YWxp ZCBiaXQgbWFzayA9IDB4JTA4eFxuIiwgbWFzayk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGRldl9kYmcoY29yZS0+ZGV2 LCAibWFzayA9IDB4JXhcbiIsIG1hc2spOw0KPiA+ICsNCj4gPiArICAgICB2YWwgPSB4c2Rpcnhz c19yZWFkKGNvcmUsIFhTRElSWF9NRExfQ1RSTF9SRUcpOw0KPiA+ICsgICAgIHZhbCAmPSB+KFhT RElSWF9NRExfQ1RSTF9NT0RFX0RFVF9FTl9NQVNLKTsNCj4gPiArICAgICB2YWwgJj0gfihYU0RJ UlhfTURMX0NUUkxfTU9ERV9BVVRPX0RFVF9NQVNLKTsNCj4gPiArICAgICB2YWwgJj0gfihYU0RJ UlhfTURMX0NUUkxfRk9SQ0VEX01PREVfTUFTSyk7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChod2Vp Z2h0MTYobWFzaykgPiAxKSB7DQo+ID4gKyAgICAgICAgICAgICAvKiBNdWx0aSBtb2RlIGRldGVj dGlvbiBhcyBtb3JlIHRoYW4gMSBiaXQgc2V0IGluIG1hc2sgKi8NCj4gPiArICAgICAgICAgICAg IGRldl9kYmcoY29yZS0+ZGV2LCAiRGV0ZWN0IG11bHRpcGxlIG1vZGVzXG4iKTsNCj4gPiArICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBYU0RJUlhfTU9ERV9OVU1fU1VQUE9SVEVEOyBpKysp IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXNrICYgKDEgPDwgaSkpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBCSVQoWFNESVJYX01PREVfU0RfT0ZGU0VU KToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgfD0gWFNESVJYX01ETF9D VFJMX01PREVfU0RfRU5fTUFTSzsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBCSVQoWFNESVJYX01PREVfSERf T0ZGU0VUKToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgfD0gWFNESVJY X01ETF9DVFJMX01PREVfSERfRU5fTUFTSzsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBCSVQoWFNESVJYX01P REVfM0dfT0ZGU0VUKToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgfD0g WFNESVJYX01ETF9DVFJMX01PREVfM0dfRU5fTUFTSzsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBCSVQoWFNE SVJYX01PREVfNkdfT0ZGU0VUKToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YWwgfD0gWFNESVJYX01ETF9DVFJMX01PREVfNkdfRU5fTUFTSzsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBC SVQoWFNESVJYX01PREVfMTJHSV9PRkZTRVQpOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbCB8PSBYU0RJUlhfTURMX0NUUkxfTU9ERV8xMkdJX0VOX01BU0s7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIGNhc2UgQklUKFhTRElSWF9NT0RFXzEyR0ZfT0ZGU0VUKToNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2YWwgfD0gWFNESVJYX01ETF9DVFJMX01PREVfMTJHRl9FTl9NQVNL Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICB2 YWwgfD0gWFNESVJYX01ETF9DVFJMX01PREVfREVUX0VOX01BU0s7DQo+ID4gKyAgICAgfSBlbHNl IHsNCj4gPiArICAgICAgICAgICAgIC8qIEZpeGVkIE1vZGUgKi8NCj4gPiArICAgICAgICAgICAg IHUzMiBmb3JjZWRfbW9kZV9tYXNrID0gMDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBkZXZf ZGJnKGNvcmUtPmRldiwgIkRldGVjdCBmaXhlZCBtb2RlXG4iKTsNCj4gPiArDQo+ID4gKyAgICAg ICAgICAgICAvKiBGaW5kIG9mZnNldCBvZiBmaXJzdCBiaXQgc2V0ICovDQo+ID4gKyAgICAgICAg ICAgICBzd2l0Y2ggKF9fZmZzKG1hc2spKSB7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIFhTRElS WF9NT0RFX1NEX09GRlNFVDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZm9yY2VkX21vZGVf bWFzayA9IFhTRElSWF9NT0RFX1NEX01BU0s7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgICAgICAgY2FzZSBYU0RJUlhfTU9ERV9IRF9PRkZTRVQ6DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIGZvcmNlZF9tb2RlX21hc2sgPSBYU0RJUlhfTU9ERV9IRF9N QVNLOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAg IGNhc2UgWFNESVJYX01PREVfM0dfT0ZGU0VUOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBm b3JjZWRfbW9kZV9tYXNrID0gWFNESVJYX01PREVfM0dfTUFTSzsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIFhTRElSWF9NT0RFXzZHX09G RlNFVDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZm9yY2VkX21vZGVfbWFzayA9IFhTRElS WF9NT0RFXzZHX01BU0s7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsg ICAgICAgICAgICAgY2FzZSBYU0RJUlhfTU9ERV8xMkdJX09GRlNFVDoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgZm9yY2VkX21vZGVfbWFzayA9IFhTRElSWF9NT0RFXzEyR0lfTUFTSzsNCj4g PiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBjYXNlIFhT RElSWF9NT0RFXzEyR0ZfT0ZGU0VUOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBmb3JjZWRf bW9kZV9tYXNrID0gWFNESVJYX01PREVfMTJHRl9NQVNLOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGRldl9k YmcoY29yZS0+ZGV2LCAiRm9yY2VkIE1vZGUgTWFzayA6IDB4JXhcbiIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgIGZvcmNlZF9tb2RlX21hc2spOw0KPiA+ICsgICAgICAgICAgICAgdmFsIHw9 IGZvcmNlZF9tb2RlX21hc2sgPDwNCj4gWFNESVJYX01ETF9DVFJMX0ZPUkNFRF9NT0RFX09GRlNF VDsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiTW9k ZXMgdG8gYmUgZGV0ZWN0ZWQgOiBzZGkgY3RybCByZWcgPSAweCUwOHhcbiIsDQo+ID4gKyAgICAg ICAgICAgICB2YWwpOw0KPiA+ICsgICAgIHhzZGlyeHNzX3dyaXRlKGNvcmUsIFhTRElSWF9NRExf Q1RSTF9SRUcsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgdm9pZCB4c2RpcnhfZnJhbWVyKHN0cnVjdCB4c2Rpcnhzc19jb3JlICpj b3JlLCBib29sIGZsYWcpDQo+ID4gK3sNCj4gPiArICAgICBpZiAoZmxhZykNCj4gPiArICAgICAg ICAgICAgIHhzZGlyeHNzX3NldChjb3JlLCBYU0RJUlhfTURMX0NUUkxfUkVHLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIFhTRElSWF9NRExfQ1RSTF9GUk1fRU5fTUFTSyk7DQo+ID4g KyAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4c3NfY2xyKGNvcmUsIFhTRElSWF9N RExfQ1RSTF9SRUcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgWFNESVJYX01ETF9D VFJMX0ZSTV9FTl9NQVNLKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4 X3NldGVkaGVycmNudHRyaWdnZXIoc3RydWN0IHhzZGlyeHNzX2NvcmUgKmNvcmUsIHUzMg0KPiBl bmFibGUpDQo+ID4gK3sNCj4gPiArICAgICB1MzIgdmFsID0geHNkaXJ4c3NfcmVhZChjb3JlLCBY U0RJUlhfRURIX0VSUkNOVF9FTl9SRUcpOw0KPiA+ICsNCj4gPiArICAgICB2YWwgPSBlbmFibGUg JiBYU0RJUlhfRURIX0FMTEVSUl9NQVNLOw0KPiA+ICsNCj4gPiArICAgICB4c2Rpcnhzc193cml0 ZShjb3JlLCBYU0RJUlhfRURIX0VSUkNOVF9FTl9SRUcsIHZhbCk7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyB2b2lkIHhzZGlyeF9zZXR2aWRsb2Nrd2luZG93KHN0cnVjdCB4c2Rpcnhzc19j b3JlICpjb3JlLCB1MzIgdmFsKQ0KPiA+ICt7DQo+ID4gKyAgICAgLyoNCj4gPiArICAgICAgKiBU aGUgdmlkZW8gbG9jayB3aW5kb3cgaXMgdGhlIGFtb3VudCBvZiB0aW1lIGZvciB3aGljaCB0aGUN Cj4gPiArICAgICAgKiB0aGUgbW9kZSBhbmQgdHJhbnNwb3J0IHN0cmVhbSBzaG91bGQgYmUgbG9j a2VkIHRvIGdldCB0aGUNCj4gPiArICAgICAgKiB2aWRlbyBsb2NrIGludGVycnVwdC4NCj4gPiAr ICAgICAgKi8NCj4gPiArICAgICB4c2Rpcnhzc193cml0ZShjb3JlLCBYU0RJUlhfVklEX0xPQ0tf V0lORE9XX1JFRywgdmFsKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4 X2Rpc2FibGVpbnRyKHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlLCB1MzIgbWFzaykNCj4gPiAr ew0KPiA+ICsgICAgIHhzZGlyeHNzX2Nscihjb3JlLCBYU0RJUlhfSUVSX1JFRywgbWFzayk7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHhzZGlyeF9lbmFibGVpbnRyKHN0cnVjdCB4 c2Rpcnhzc19jb3JlICpjb3JlLCB1MzIgbWFzaykNCj4gPiArew0KPiA+ICsgICAgIHhzZGlyeHNz X3NldChjb3JlLCBYU0RJUlhfSUVSX1JFRywgbWFzayk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0 YXRpYyB2b2lkIHhzZGlyeF9nbG9iYWxpbnRyKHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlLCBi b29sIGZsYWcpDQo+ID4gK3sNCj4gPiArICAgICBpZiAoZmxhZykNCj4gPiArICAgICAgICAgICAg IHhzZGlyeHNzX3NldChjb3JlLCBYU0RJUlhfR0xCTF9JRVJfUkVHLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIFhTRElSWF9HTEJMX0lOVFJfRU5fTUFTSyk7DQo+ID4gKyAgICAgZWxz ZQ0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4c3NfY2xyKGNvcmUsIFhTRElSWF9HTEJMX0lFUl9S RUcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgWFNESVJYX0dMQkxfSU5UUl9FTl9N QVNLKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4X2NsZWFyaW50cihz dHJ1Y3QgeHNkaXJ4c3NfY29yZSAqY29yZSwgdTMyIG1hc2spDQo+ID4gK3sNCj4gPiArICAgICB4 c2Rpcnhzc19zZXQoY29yZSwgWFNESVJYX0lTUl9SRUcsIG1hc2spOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgdm9pZCB4c2RpcnhfdmlkX2JyaWRnZV9jb250cm9sKHN0cnVjdCB4c2Rpcnhz c19jb3JlICpjb3JlLCBib29sDQo+IGVuYWJsZSkNCj4gPiArew0KPiA+ICsgICAgIGlmIChlbmFi bGUpDQo+ID4gKyAgICAgICAgICAgICB4c2Rpcnhzc19zZXQoY29yZSwgWFNESVJYX1JTVF9DVFJM X1JFRywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBYU0RJUlhfUlNUX0NUUkxfU0RJ UlhfQlJJREdFX0VOQl9NQVNLKTsNCj4gPiArICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICB4 c2Rpcnhzc19jbHIoY29yZSwgWFNESVJYX1JTVF9DVFJMX1JFRywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICBYU0RJUlhfUlNUX0NUUkxfU0RJUlhfQlJJREdFX0VOQl9NQVNLKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4X2F4aXM0X2JyaWRnZV9jb250cm9s KHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlLCBib29sDQo+IGVuYWJsZSkNCj4gPiArew0KPiA+ ICsgICAgIGlmIChlbmFibGUpDQo+ID4gKyAgICAgICAgICAgICB4c2Rpcnhzc19zZXQoY29yZSwg WFNESVJYX1JTVF9DVFJMX1JFRywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBYU0RJ UlhfUlNUX0NUUkxfVklESU5fQVhJNFNfTU9EX0VOQl9NQVNLKTsNCj4gPiArICAgICBlbHNlDQo+ ID4gKyAgICAgICAgICAgICB4c2Rpcnhzc19jbHIoY29yZSwgWFNESVJYX1JTVF9DVFJMX1JFRywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBYU0RJUlhfUlNUX0NUUkxfVklESU5fQVhJ NFNfTU9EX0VOQl9NQVNLKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4 X3N0cmVhbWZsb3dfY29udHJvbChzdHJ1Y3QgeHNkaXJ4c3NfY29yZSAqY29yZSwgYm9vbA0KPiBl bmFibGUpDQo+ID4gK3sNCj4gPiArICAgICAvKiBUaGUgc2RpIHRvIG5hdGl2ZSBicmlkZ2UgaXMg Zm9sbG93ZWQgYnkgbmF0aXZlIHRvIGF4aXM0IGJyaWRnZSAqLw0KPiA+ICsgICAgIGlmIChlbmFi bGUpIHsNCj4gPiArICAgICAgICAgICAgIHhzZGlyeF9heGlzNF9icmlkZ2VfY29udHJvbChjb3Jl LCBlbmFibGUpOw0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4X3ZpZF9icmlkZ2VfY29udHJvbChj b3JlLCBlbmFibGUpOw0KPiA+ICsgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICB4c2Rp cnhfdmlkX2JyaWRnZV9jb250cm9sKGNvcmUsIGVuYWJsZSk7DQo+ID4gKyAgICAgICAgICAgICB4 c2RpcnhfYXhpczRfYnJpZGdlX2NvbnRyb2woY29yZSwgZW5hYmxlKTsNCj4gPiArICAgICB9DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHhzZGlyeF9zdHJlYW1kb3duY2Ioc3RydWN0 IHhzZGlyeHNzX2NvcmUgKmNvcmUpDQo+ID4gK3sNCj4gPiArICAgICB4c2Rpcnhfc3RyZWFtZmxv d19jb250cm9sKGNvcmUsIGZhbHNlKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQg eHNkaXJ4c3NfZ2V0X2ZyYW1lcmF0ZShzdHJ1Y3QgdjRsMl9mcmFjdCAqZnJhbWVfaW50ZXJ2YWws DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyIGZyYW1lcmF0ZSkNCj4g PiArew0KPiA+ICsgICAgIHN3aXRjaCAoZnJhbWVyYXRlKSB7DQo+ID4gKyAgICAgY2FzZSBYU0RJ UlhfVFNfREVUX1NUQVRfUkFURV8yM185OEhaOg0KPiA+ICsgICAgICAgICAgICAgZnJhbWVfaW50 ZXJ2YWwtPm51bWVyYXRvciA9IDEwMDE7DQo+ID4gKyAgICAgICAgICAgICBmcmFtZV9pbnRlcnZh bC0+ZGVub21pbmF0b3IgPSAyNDAwMDsNCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsg ICAgIGNhc2UgWFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfMjRIWjoNCj4gPiArICAgICAgICAgICAg IGZyYW1lX2ludGVydmFsLT5udW1lcmF0b3IgPSAxMDAwOw0KPiA+ICsgICAgICAgICAgICAgZnJh bWVfaW50ZXJ2YWwtPmRlbm9taW5hdG9yID0gMjQwMDA7DQo+ID4gKyAgICAgICAgICAgICBicmVh azsNCj4gPiArICAgICBjYXNlIFhTRElSWF9UU19ERVRfU1RBVF9SQVRFXzI1SFo6DQo+ID4gKyAg ICAgICAgICAgICBmcmFtZV9pbnRlcnZhbC0+bnVtZXJhdG9yID0gMTAwMDsNCj4gPiArICAgICAg ICAgICAgIGZyYW1lX2ludGVydmFsLT5kZW5vbWluYXRvciA9IDI1MDAwOw0KPiA+ICsgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8yOV85 N0haOg0KPiA+ICsgICAgICAgICAgICAgZnJhbWVfaW50ZXJ2YWwtPm51bWVyYXRvciA9IDEwMDE7 DQo+ID4gKyAgICAgICAgICAgICBmcmFtZV9pbnRlcnZhbC0+ZGVub21pbmF0b3IgPSAzMDAwMDsN Cj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgWFNESVJYX1RTX0RFVF9T VEFUX1JBVEVfMzBIWjoNCj4gPiArICAgICAgICAgICAgIGZyYW1lX2ludGVydmFsLT5udW1lcmF0 b3IgPSAxMDAwOw0KPiA+ICsgICAgICAgICAgICAgZnJhbWVfaW50ZXJ2YWwtPmRlbm9taW5hdG9y ID0gMzAwMDA7DQo+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICBjYXNlIFhTRElS WF9UU19ERVRfU1RBVF9SQVRFXzQ3Xzk1SFo6DQo+ID4gKyAgICAgICAgICAgICBmcmFtZV9pbnRl cnZhbC0+bnVtZXJhdG9yID0gMTAwMTsNCj4gPiArICAgICAgICAgICAgIGZyYW1lX2ludGVydmFs LT5kZW5vbWluYXRvciA9IDQ4MDAwOw0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAg ICAgY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV80OEhaOg0KPiA+ICsgICAgICAgICAgICAg ZnJhbWVfaW50ZXJ2YWwtPm51bWVyYXRvciA9IDEwMDA7DQo+ID4gKyAgICAgICAgICAgICBmcmFt ZV9pbnRlcnZhbC0+ZGVub21pbmF0b3IgPSA0ODAwMDsNCj4gPiArICAgICAgICAgICAgIGJyZWFr Ow0KPiA+ICsgICAgIGNhc2UgWFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfNTBIWjoNCj4gPiArICAg ICAgICAgICAgIGZyYW1lX2ludGVydmFsLT5udW1lcmF0b3IgPSAxMDAwOw0KPiA+ICsgICAgICAg ICAgICAgZnJhbWVfaW50ZXJ2YWwtPmRlbm9taW5hdG9yID0gNTAwMDA7DQo+ID4gKyAgICAgICAg ICAgICBicmVhazsNCj4gPiArICAgICBjYXNlIFhTRElSWF9UU19ERVRfU1RBVF9SQVRFXzU5Xzk0 SFo6DQo+ID4gKyAgICAgICAgICAgICBmcmFtZV9pbnRlcnZhbC0+bnVtZXJhdG9yID0gMTAwMTsN Cj4gPiArICAgICAgICAgICAgIGZyYW1lX2ludGVydmFsLT5kZW5vbWluYXRvciA9IDYwMDAwOw0K PiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBYU0RJUlhfVFNfREVUX1NU QVRfUkFURV82MEhaOg0KPiA+ICsgICAgICAgICAgICAgZnJhbWVfaW50ZXJ2YWwtPm51bWVyYXRv ciA9IDEwMDA7DQo+ID4gKyAgICAgICAgICAgICBmcmFtZV9pbnRlcnZhbC0+ZGVub21pbmF0b3Ig PSA2MDAwMDsNCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGRlZmF1bHQ6DQo+ ID4gKyAgICAgICAgICAgICBmcmFtZV9pbnRlcnZhbC0+bnVtZXJhdG9yID0gMTsNCj4gPiArICAg ICAgICAgICAgIGZyYW1lX2ludGVydmFsLT5kZW5vbWluYXRvciA9IDE7DQo+ID4gKyAgICAgfQ0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeHNkaXJ4X2dldF9zdHJlYW1fcHJvcGVy dGllcyAtIEdldCBTREkgUnggc3RyZWFtIHByb3BlcnRpZXMNCj4gPiArICogQHN0YXRlOiBwb2lu dGVyIHRvIGRyaXZlciBzdGF0ZQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGRlY29k ZXMgdGhlIHN0cmVhbSdzIFNUMzUyIHBheWxvYWQgKGlmIGF2YWlsYWJsZSkgdG8gZ2V0DQo+ID4g KyAqIHN0cmVhbSBwcm9wZXJ0aWVzIGxpa2Ugd2lkdGgsIGhlaWdodCwgcGljdHVyZSB0eXBlIChp bnRlcmxhY2VkL3Byb2dyZXNzaXZlKSwNCj4gPiArICogZXRjLg0KPiA+ICsgKg0KPiA+ICsgKiBS ZXR1cm46IDAgZm9yIHN1Y2Nlc3MgZWxzZSBlcnJvcnMNCj4gPiArICovDQo+ID4gK3N0YXRpYyBp bnQgeHNkaXJ4X2dldF9zdHJlYW1fcHJvcGVydGllcyhzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnN0 YXRlKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0IHhzZGlyeHNzX2NvcmUgKmNvcmUgPSAmc3Rh dGUtPmNvcmU7DQo+ID4gKyAgICAgdTMyIG1vZGUsIHBheWxvYWQgPSAwLCB2YWwsIGZhbWlseSwg dmFsaWQsIHRzY2FuOw0KPiA+ICsgICAgIHU4IGJ5dGUxID0gMCwgYWN0aXZlX2x1bWEgPSAwLCBw aWNfdHlwZSA9IDAsIGZyYW1lcmF0ZSA9IDA7DQo+ID4gKyAgICAgdTggc2FtcGxpbmcgPSBYU1Qz NTJfQllURTNfQ09MT1JfRk9STUFUXzQyMjsNCj4gPiArICAgICBzdHJ1Y3QgdjRsMl9tYnVzX2Zy YW1lZm10ICpmb3JtYXQgPSAmc3RhdGUtPmZvcm1hdHNbMF07DQo+ID4gKw0KPiA+ICsgICAgIG1v ZGUgPSB4c2Rpcnhzc19yZWFkKGNvcmUsIFhTRElSWF9NT0RFX0RFVF9TVEFUX1JFRyk7DQo+ID4g KyAgICAgbW9kZSAmPSBYU0RJUlhfTU9ERV9ERVRfU1RBVF9SWF9NT0RFX01BU0s7DQo+ID4gKw0K PiA+ICsgICAgIHZhbGlkID0geHNkaXJ4c3NfcmVhZChjb3JlLCBYU0RJUlhfU1QzNTJfVkFMSURf UkVHKTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKG1vZGUgPj0gWFNESVJYX01PREVfM0dfTUFTSyAm JiAhdmFsaWQpIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY29yZS0+ZGV2LCAiTm8gdmFs aWQgU1QzNTIgcGF5bG9hZCBwcmVzZW50IGV2ZW4gZm9yIDNHDQo+IG1vZGUgYW5kIGFib3ZlXG4i KTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgdmFsID0geHNkaXJ4c3NfcmVhZChjb3JlLCBYU0RJUlhfVFNfREVUX1NUQVRf UkVHKTsNCj4gPiArICAgICBpZiAodmFsaWQgJiBYU0RJUlhfU1QzNTJfVkFMSURfRFMxX01BU0sp IHsNCj4gPiArICAgICAgICAgICAgIHBheWxvYWQgPSB4c2Rpcnhzc19yZWFkKGNvcmUsIFhTRElS WF9TVDM1Ml9EUzFfUkVHKTsNCj4gPiArICAgICAgICAgICAgIGJ5dGUxID0gKHBheWxvYWQgPj4g WFNUMzUyX1BBWUxPQURfQllURTFfU0hJRlQpICYNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYU1QzNTJfUEFZTE9BRF9CWVRFX01BU0s7DQo+ID4gKyAgICAgICAgICAgICBhY3Rp dmVfbHVtYSA9IChwYXlsb2FkICYNCj4gWFNUMzUyX0JZVEUzX0FDVF9MVU1BX0NPVU5UX01BU0sp ID4+DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFNUMzUyX0JZVEUzX0FDVF9M VU1BX0NPVU5UX09GRlNFVDsNCj4gPiArICAgICAgICAgICAgIHBpY190eXBlID0gKHBheWxvYWQg JiBYU1QzNTJfQllURTJfUElDX1RZUEVfTUFTSykgPj4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBYU1QzNTJfQllURTJfUElDX1RZUEVfT0ZGU0VUOw0KPiA+ICsgICAgICAgICAg ICAgZnJhbWVyYXRlID0gKHBheWxvYWQgPj4gWFNUMzUyX0JZVEUyX0ZQU19TSElGVCkgJg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhTVDM1Ml9CWVRFMl9GUFNfTUFTSzsNCj4g PiArICAgICAgICAgICAgIHRzY2FuID0gKHBheWxvYWQgJiBYU1QzNTJfQllURTJfVFNfVFlQRV9N QVNLKSA+Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhTVDM1Ml9CWVRFMl9U U19UWVBFX09GRlNFVDsNCj4gPiArICAgICAgICAgICAgIHNhbXBsaW5nID0gKHBheWxvYWQgJiBY U1QzNTJfQllURTNfQ09MT1JfRk9STUFUX01BU0spID4+DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIFhTVDM1Ml9CWVRFM19DT0xPUl9GT1JNQVRfT0ZGU0VUOw0KPiA+ICsgICAgIH0gZWxz ZSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIk5vIFNUMzUyIHBheWxv YWQgYXZhaWxhYmxlIDogTW9kZSA9ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBt b2RlKTsNCj4gPiArICAgICAgICAgICAgIGZyYW1lcmF0ZSA9ICh2YWwgJiBYU0RJUlhfVFNfREVU X1NUQVRfUkFURV9NQVNLKSA+Pg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhT RElSWF9UU19ERVRfU1RBVF9SQVRFX09GRlNFVDsNCj4gPiArICAgICAgICAgICAgIHRzY2FuID0g KHZhbCAmIFhTRElSWF9UU19ERVRfU1RBVF9TQ0FOX01BU0spID4+DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWFNESVJYX1RTX0RFVF9TVEFUX1NDQU5fT0ZGU0VUOw0KPiA+ICsg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgZmFtaWx5ID0gKHZhbCAmIFhTRElSWF9UU19ERVRfU1RB VF9GQU1JTFlfTUFTSykgPj4NCj4gPiArICAgICAgICAgICAgICAgWFNESVJYX1RTX0RFVF9TVEFU X0ZBTUlMWV9PRkZTRVQ7DQo+ID4gKyAgICAgc3RhdGUtPnRzX2lzX2ludGVybGFjZWQgPSB0c2Nh biA/IGZhbHNlIDogdHJ1ZTsNCj4gPiArDQo+ID4gKyAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJ0 c19pc19pbnRlcmxhY2VkID0gJWQsIGZhbWlseSA9ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAg c3RhdGUtPnRzX2lzX2ludGVybGFjZWQsIGZhbWlseSk7DQo+ID4gKw0KPiA+ICsgICAgIHN3aXRj aCAobW9kZSkgew0KPiA+ICsgICAgIGNhc2UgWFNESVJYX01PREVfSERfTUFTSzoNCj4gPiArICAg ICAgICAgICAgIGlmICghdmFsaWQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgLyogTm8g cGF5bG9hZCBvYnRhaW5lZCAqLw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGNv cmUtPmRldiwgImZyYW1lIHJhdGUgOiAlZCwgdHNjYW4gPSAlZFxuIiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmcmFtZXJhdGUsIHRzY2FuKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgLyoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICogTk9URSA6IEEgcHJvZ3Jl c3NpdmUgc2VnbWVudGVkIGZyYW1lIHBTRiB3aWxsIGJlDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAqIHJlcG9ydGVkIGluY29ycmVjdGx5IGFzIEludGVybGFjZWQgYXMgd2UgcmVseSBvbiBJ UCdzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqIHRyYW5zcG9ydCBzY2FuIGxvY2tlZCBi aXQuDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBkZXZfd2Fybihjb3JlLT5kZXYsICJwU0Ygd2lsbCBiZSBpbmNvcnJlY3RseSByZXBvcnRl ZCBhcw0KPiBJbnRlcmxhY2VkXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IHN3aXRjaCAoZnJhbWVyYXRlKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNhc2UgWFNE SVJYX1RTX0RFVF9TVEFUX1JBVEVfMjNfOThIWjoNCj4gPiArICAgICAgICAgICAgICAgICAgICAg Y2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8yNEhaOg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBjYXNlIFhTRElSWF9UU19ERVRfU1RBVF9SQVRFXzI1SFo6DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGNhc2UgWFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfMjlfOTdIWjoNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV8zMEhaOg0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gWFNESVJYX1NNUFRF X1NUXzI5Nikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y bWF0LT53aWR0aCA9IDEyODA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb3JtYXQtPmhlaWdodCA9IDcyMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZvcm1hdC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmYW1pbHkgPT0gWFNESVJYX1NNUFRF X1NUXzIwNDhfMikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Zm9ybWF0LT53aWR0aCA9IDIwNDg7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQtPmhlaWdodCA9IDEwODA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiAodHNjYW4pDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmllbGQgPQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFY0TDJfRklFTERfQUxURVJOQVRFOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Jt YXQtPndpZHRoID0gMTkyMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvcm1hdC0+aGVpZ2h0ID0gMTA4MDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmICh0c2NhbikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWVsZCA9DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjRM Ml9GSUVMRF9BTFRFUk5BVEU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBjYXNlIFhTRElSWF9UU19ERVRfU1RBVF9SQVRFXzUwSFo6DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGNhc2UgWFNESVJYX1RTX0RFVF9TVEFUX1JBVEVfNTlfOTRIWjoNCj4g PiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBYU0RJUlhfVFNfREVUX1NUQVRfUkFURV82MEha Og0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gWFNESVJY X1NNUFRFX1NUXzI3NCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9ybWF0LT53aWR0aCA9IDE5MjA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3JtYXQtPmhlaWdodCA9IDEwODA7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZvcm1hdC0+d2lkdGggPSAxMjgwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9ybWF0LT5oZWlnaHQgPSA3MjA7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1h dC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCA9IDE5MjA7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5oZWlnaHQgPSAxMDgwOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05P TkU7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIH0gZWxz ZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiR290IHRo ZSBwYXlsb2FkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChieXRlMSkg ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBjYXNlIFhTVDM1Ml9CWVRFMV9TVDI5Ml8xeDcy MExfMV81RzoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTVBURSBTVCAy OTItMSBmb3IgNzIwIGxpbmUgcGF5bG9hZHMgKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQtPndpZHRoID0gMTI4MDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQtPmhlaWdodCA9IDcyMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY2FzZSBYU1QzNTJfQllU RTFfU1QyOTJfMXgxMDgwTF8xXzVHOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIFNNUFRFIFNUIDI5Mi0xIGZvciAxMDgwIGxpbmUgcGF5bG9hZHMgKi8NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmhlaWdodCA9IDEwODA7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZV9sdW1hKQ0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCA9IDIwNDg7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCA9IDE5MjA7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRlZmF1 bHQ6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhjb3JlLT5kZXYs ICJVbmtub3duIEhEIE1vZGUgU01QVEUNCj4gc3RhbmRhcmRcbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICB9DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4g PiArICAgICBjYXNlIFhTRElSWF9NT0RFX1NEX01BU0s6DQo+ID4gKyAgICAgICAgICAgICBmb3Jt YXQtPmZpZWxkID0gVjRMMl9GSUVMRF9BTFRFUk5BVEU7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgc3dpdGNoIChmYW1pbHkpIHsNCj4gPiArICAgICAgICAgICAgIGNhc2UgWFNESVJYX05UU0M6 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGggPSA3MjA7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+aGVpZ2h0ID0gNDg2Ow0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIGNhc2UgWFNESVJYX1BBTDoNCj4g PiArICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCA9IDcyMDsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgZm9ybWF0LT5oZWlnaHQgPSA1NzY7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJVbmtub3duIFNEIE1vZGUgU01QVEUgc3Rh bmRhcmRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g PiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGNh c2UgWFNESVJYX01PREVfM0dfTUFTSzoNCj4gPiArICAgICAgICAgICAgIHN3aXRjaCAoYnl0ZTEp IHsNCj4gPiArICAgICAgICAgICAgIGNhc2UgWFNUMzUyX0JZVEUxX1NUNDI1XzIwMDhfNzUwTF8z R0I6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIC8qIFNlYyA0LjEuNi4xIFNNUFRFIDQyNS0y MDA4ICovDQo+ID4gKyAgICAgICAgICAgICBjYXNlIFhTVDM1Ml9CWVRFMV9TVDM3Ml8yeDcyMExf M0dCOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAvKiBUYWJsZSAxMyBTTVBURSA0MjUtMjAw OCAqLw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPndpZHRoID0gMTI4MDsNCj4g PiArICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5oZWlnaHQgPSA3MjA7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgY2FzZSBYU1QzNTJfQllU RTFfU1Q0MjVfMjAwOF8xMTI1TF8zR0E6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIC8qIFNU MzUyIFRhYmxlIFNNUFRFIDQyNS0xICovDQo+ID4gKyAgICAgICAgICAgICBjYXNlIFhTVDM1Ml9C WVRFMV9TVDM3Ml9ETF8zR0I6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIC8qIFRhYmxlIDEz IFNNUFRFIDQyNS0yMDA4ICovDQo+ID4gKyAgICAgICAgICAgICBjYXNlIFhTVDM1Ml9CWVRFMV9T VDM3Ml8yeDEwODBMXzNHQjoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgLyogVGFibGUgMTMg U01QVEUgNDI1LTIwMDggKi8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5oZWln aHQgPSAxMDgwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlX2x1bWEpDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCA9IDIwNDg7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXQtPndpZHRoID0gMTkyMDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICAgICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIlVua25vd24gM0cgTW9kZSBTTVBURSBzdGFuZGFyZFxu Iik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAg ICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBYU0RJ UlhfTU9ERV82R19NQVNLOg0KPiA+ICsgICAgICAgICAgICAgc3dpdGNoIChieXRlMSkgew0KPiA+ ICsgICAgICAgICAgICAgY2FzZSBYU1QzNTJfQllURTFfU1QyMDgxXzEwX0RMXzIxNjBMXzZHOg0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAvKiBEdWFsIGxpbmsgNkcgKi8NCj4gPiArICAgICAg ICAgICAgIGNhc2UgWFNUMzUyX0JZVEUxX1NUMjA4MV8xMF8yMTYwTF82RzoNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgLyogVGFibGUgMyBTTVBURSBTVCAyMDgxLTEwICovDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGZvcm1hdC0+aGVpZ2h0ID0gMjE2MDsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgaWYgKGFjdGl2ZV9sdW1hKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvcm1hdC0+d2lkdGggPSA0MDk2Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBlbHNl DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCA9IDM4NDA7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgZGVm YXVsdDoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJVbmtu b3duIDZHIE1vZGUgU01QVEUgc3RhbmRhcmRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgWFNESVJYX01PREVfMTJHSV9NQVNLOg0KPiA+ICsgICAg IGNhc2UgWFNESVJYX01PREVfMTJHRl9NQVNLOg0KPiA+ICsgICAgICAgICAgICAgc3dpdGNoIChi eXRlMSkgew0KPiA+ICsgICAgICAgICAgICAgY2FzZSBYU1QzNTJfQllURTFfU1QyMDgyXzEwXzIx NjBMXzEyRzoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgLyogU2VjdGlvbiA0LjMuMSBTTVBU RSBTVCAyMDgyLTEwICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+aGVpZ2h0 ID0gMjE2MDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZV9sdW1hKQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGggPSA0MDk2Ow0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9ybWF0LT53aWR0aCA9IDM4NDA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOw0KPiA+ICsgICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgZGV2X2RiZyhjb3JlLT5kZXYsICJVbmtub3duIDEyRyBNb2RlIFNNUFRFIHN0YW5kYXJkXG4i KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAg ICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICBkZWZhdWx0Og0K PiA+ICsgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJJbnZhbGlkIE1vZGVcbiIpOw0K PiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4g PiArICAgICBpZiAodmFsaWQpIHsNCj4gPiArICAgICAgICAgICAgIGlmIChwaWNfdHlwZSkNCj4g PiArICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsN Cj4gPiArICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZm9ybWF0 LT5maWVsZCA9IFY0TDJfRklFTERfQUxURVJOQVRFOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgaWYgKGZvcm1hdC0+ZmllbGQgPT0gVjRMMl9GSUVMRF9BTFRFUk5BVEUpDQo+ID4gKyAg ICAgICAgICAgICBmb3JtYXQtPmhlaWdodCA9IGZvcm1hdC0+aGVpZ2h0IC8gMjsNCj4gPiArDQo+ ID4gKyAgICAgc3dpdGNoIChzYW1wbGluZykgew0KPiA+ICsgICAgIGNhc2UgWFNUMzUyX0JZVEUz X0NPTE9SX0ZPUk1BVF80MjI6DQo+ID4gKyAgICAgICAgICAgICBmb3JtYXQtPmNvZGUgPSBNRURJ QV9CVVNfRk1UX1VZVlkxMF8xWDIwOw0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAg ICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY29yZS0+ZGV2LCAiVW5zdXBw b3J0ZWQgY29sb3IgZm9ybWF0IDogJWRcbiIsIHNhbXBsaW5nKTsNCj4gPiArICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgeHNkaXJ4c3Nf Z2V0X2ZyYW1lcmF0ZSgmc3RhdGUtPmZyYW1lX2ludGVydmFsLCBmcmFtZXJhdGUpOw0KPiA+ICsN Cj4gPiArICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIlN0cmVhbSB3aWR0aCA9ICVkIGhlaWdodCA9 ICVkIEZpZWxkID0gJWQgcGF5bG9hZCA9DQo+IDB4JTA4eCB0cyA9IDB4JTA4eFxuIiwNCj4gPiAr ICAgICAgICAgICAgIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+aGVpZ2h0LCBmb3JtYXQtPmZpZWxk LCBwYXlsb2FkLCB2YWwpOw0KPiA+ICsgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiZnJhbWUgcmF0 ZSBudW1lcmF0b3IgPSAlZCBkZW5vbWluYXRvciA9ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAg c3RhdGUtPmZyYW1lX2ludGVydmFsLm51bWVyYXRvciwNCj4gPiArICAgICAgICAgICAgIHN0YXRl LT5mcmFtZV9pbnRlcnZhbC5kZW5vbWluYXRvcik7DQo+ID4gKyAgICAgZGV2X2RiZyhjb3JlLT5k ZXYsICJTdHJlYW0gY29kZSA9IDB4JXhcbiIsIGZvcm1hdC0+Y29kZSk7DQo+ID4gKyAgICAgcmV0 dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4c2Rpcnhzc19pcnFfaGFu ZGxlciAtIEludGVycnVwdCBoYW5kbGVyIGZvciBTREkgUngNCj4gPiArICogQGlycTogSVJRIG51 bWJlcg0KPiA+ICsgKiBAZGV2X2lkOiBQb2ludGVyIHRvIGRldmljZSBzdGF0ZQ0KPiA+ICsgKg0K PiA+ICsgKiBUaGUgU0RJIFJ4IGludGVycnVwdHMgYXJlIGNsZWFyZWQgYnkgZmlyc3Qgc2V0dGlu ZyBhbmQgdGhlbiBjbGVhcmluZyB0aGUgYml0cw0KPiA+ICsgKiBpbiB0aGUgaW50ZXJydXB0IGNs ZWFyIHJlZ2lzdGVyLiBUaGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3RlciBpcyByZWFkIG9ubHku DQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogSVJRX0hBTkRMRUQgYWZ0ZXIgaGFuZGxpbmcgaW50 ZXJydXB0cw0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlycXJldHVybl90IHhzZGlyeHNzX2lycV9o YW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCB4 c2Rpcnhzc19zdGF0ZSAqc3RhdGUgPSAoc3RydWN0IHhzZGlyeHNzX3N0YXRlICopZGV2X2lkOw0K PiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlID0gJnN0YXRlLT5jb3JlOw0KPiA+ ICsgICAgIHUzMiBzdGF0dXM7DQo+ID4gKw0KPiA+ICsgICAgIHN0YXR1cyA9IHhzZGlyeHNzX3Jl YWQoY29yZSwgWFNESVJYX0lTUl9SRUcpOw0KPiA+ICsgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAi aW50ZXJydXB0IHN0YXR1cyA9IDB4JTA4eFxuIiwgc3RhdHVzKTsNCj4gPiArDQo+ID4gKyAgICAg aWYgKCFzdGF0dXMpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gSVJRX05PTkU7DQo+ID4gKw0K PiA+ICsgICAgIGlmIChzdGF0dXMgJiBYU0RJUlhfSU5UUl9WSURMT0NLX01BU0spIHsNCj4gPiAr ICAgICAgICAgICAgIHUzMiB2YWwxLCB2YWwyOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGRl dl9kYmcoY29yZS0+ZGV2LCAidmlkZW8gbG9jayBpbnRlcnJ1cHRcbiIpOw0KPiA+ICsgICAgICAg ICAgICAgeHNkaXJ4X2NsZWFyaW50cihjb3JlLCBYU0RJUlhfSU5UUl9WSURMT0NLX01BU0spOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgIHZhbDEgPSB4c2Rpcnhzc19yZWFkKGNvcmUsIFhTRElS WF9NT0RFX0RFVF9TVEFUX1JFRyk7DQo+ID4gKyAgICAgICAgICAgICB2YWwyID0geHNkaXJ4c3Nf cmVhZChjb3JlLCBYU0RJUlhfVFNfREVUX1NUQVRfUkVHKTsNCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICBpZiAoKHZhbDEgJiBYU0RJUlhfTU9ERV9ERVRfU1RBVF9NT0RFX0xPQ0tfTUFTSykgJiYN Cj4gPiArICAgICAgICAgICAgICAgICAodmFsMiAmIFhTRElSWF9UU19ERVRfU1RBVF9MT0NLRURf TUFTSykpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdTMyIG1hc2sgPSBYU0RJUlhfUlNU X0NUUkxfUlNUX0NSQ19FUlJDTlRfTUFTSyB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWFNESVJYX1JTVF9DVFJMX1JTVF9FREhfRVJSQ05UX01BU0s7DQo+ID4gKw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIm1vZGUgJiB0cyBsb2Nr IG9jY3VycmVkXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHhzZGlyeHNz X3NldChjb3JlLCBYU0RJUlhfUlNUX0NUUkxfUkVHLCBtYXNrKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgeHNkaXJ4c3NfY2xyKGNvcmUsIFhTRElSWF9SU1RfQ1RSTF9SRUcsIG1hc2spOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgdmFsMSA9IHhzZGlyeHNzX3JlYWQoY29y ZSwgWFNESVJYX1NUMzUyX1ZBTElEX1JFRyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHZh bDIgPSB4c2Rpcnhzc19yZWFkKGNvcmUsIFhTRElSWF9TVDM1Ml9EUzFfUkVHKTsNCj4gPiArDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAidmFsaWQgc3QzNTIg bWFzayA9IDB4JTA4eFxuIiwgdmFsMSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9k YmcoY29yZS0+ZGV2LCAic3QzNTIgcGF5bG9hZCA9IDB4JTA4eFxuIiwgdmFsMik7DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoIXhzZGlyeF9nZXRfc3RyZWFtX3Byb3BlcnRp ZXMoc3RhdGUpKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZz dGF0ZS0+ZXZlbnQsIDAsIHNpemVvZihzdGF0ZS0+ZXZlbnQpKTsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0ZS0+ZXZlbnQudHlwZSA9IFY0TDJfRVZFTlRfU09VUkNFX0NI QU5HRTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+ZXZlbnQudS5z cmNfY2hhbmdlLmNoYW5nZXMgPQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVjRMMl9FVkVOVF9TUkNfQ0hfUkVTT0xVVElPTjsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2NGwyX3N1YmRldl9ub3RpZnlfZXZlbnQoJnN0YXRlLT5zdWJkZXYsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzdGF0ZS0+ZXZlbnQpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdGF0ZS0+dmlkbG9ja2VkID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGNvcmUtPmRl diwgIlVuYWJsZSB0byBnZXQgc3RyZWFtIHByb3BlcnRpZXMhXG4iKTsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+dmlkbG9ja2VkID0gZmFsc2U7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAidmlkZW8gdW5sb2NrIGJlZm9yZSB2 aWRlbyBsb2NrIVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT52aWRsb2Nr ZWQgPSBmYWxzZTsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgIGlmIChzdGF0dXMgJiBYU0RJUlhfSU5UUl9WSURVTkxPQ0tfTUFTSykgew0KPiA+ICsg ICAgICAgICAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJ2aWRlbyB1bmxvY2sgaW50ZXJydXB0XG4i KTsNCj4gPiArICAgICAgICAgICAgIHhzZGlyeF9jbGVhcmludHIoY29yZSwgWFNESVJYX0lOVFJf VklEVU5MT0NLX01BU0spOw0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4X3N0cmVhbWRvd25jYihj b3JlKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBtZW1zZXQoJnN0YXRlLT5ldmVudCwgMCwg c2l6ZW9mKHN0YXRlLT5ldmVudCkpOw0KPiA+ICsgICAgICAgICAgICAgc3RhdGUtPmV2ZW50LnR5 cGUgPSBWNEwyX0VWRU5UX1hMTlhTRElSWF9WSURVTkxPQ0s7DQo+ID4gKyAgICAgICAgICAgICB2 NGwyX3N1YmRldl9ub3RpZnlfZXZlbnQoJnN0YXRlLT5zdWJkZXYsICZzdGF0ZS0+ZXZlbnQpOw0K PiA+ICsNCj4gPiArICAgICAgICAgICAgIHN0YXRlLT52aWRsb2NrZWQgPSBmYWxzZTsNCj4gPiAr ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmIChzdGF0dXMgJiBYU0RJUlhfSU5UUl9VTkRFUkZM T1dfTUFTSykgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJWaWRlbyBp biB0byBBWEk0IFN0cmVhbSBjb3JlIHVuZGVyZmxvdw0KPiBpbnRlcnJ1cHRcbiIpOw0KPiA+ICsg ICAgICAgICAgICAgeHNkaXJ4X2NsZWFyaW50cihjb3JlLCBYU0RJUlhfSU5UUl9VTkRFUkZMT1df TUFTSyk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgbWVtc2V0KCZzdGF0ZS0+ZXZlbnQsIDAs IHNpemVvZihzdGF0ZS0+ZXZlbnQpKTsNCj4gPiArICAgICAgICAgICAgIHN0YXRlLT5ldmVudC50 eXBlID0gVjRMMl9FVkVOVF9YTE5YU0RJUlhfVU5ERVJGTE9XOw0KPiA+ICsgICAgICAgICAgICAg djRsMl9zdWJkZXZfbm90aWZ5X2V2ZW50KCZzdGF0ZS0+c3ViZGV2LCAmc3RhdGUtPmV2ZW50KTsN Cj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmIChzdGF0dXMgJiBYU0RJUlhfSU5UUl9P VkVSRkxPV19NQVNLKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIlZp ZGVvIGluIHRvIEFYSTQgU3RyZWFtIGNvcmUgb3ZlcmZsb3cNCj4gaW50ZXJydXB0XG4iKTsNCj4g PiArICAgICAgICAgICAgIHhzZGlyeF9jbGVhcmludHIoY29yZSwgWFNESVJYX0lOVFJfT1ZFUkZM T1dfTUFTSyk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgbWVtc2V0KCZzdGF0ZS0+ZXZlbnQs IDAsIHNpemVvZihzdGF0ZS0+ZXZlbnQpKTsNCj4gPiArICAgICAgICAgICAgIHN0YXRlLT5ldmVu dC50eXBlID0gVjRMMl9FVkVOVF9YTE5YU0RJUlhfT1ZFUkZMT1c7DQo+ID4gKyAgICAgICAgICAg ICB2NGwyX3N1YmRldl9ub3RpZnlfZXZlbnQoJnN0YXRlLT5zdWJkZXYsICZzdGF0ZS0+ZXZlbnQp Ow0KPiA+ICsgICAgIH0NCj4gPiArICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4c2Rpcnhzc19zdWJzY3JpYmVfZXZlbnQgLSBTdWJzY3Jp YmUgdG8gdmlkZW8gbG9jayBhbmQgdW5sb2NrIGV2ZW50DQo+ID4gKyAqIEBzZDogVjRMMiBTdWIg ZGV2aWNlDQo+ID4gKyAqIEBmaDogVjRMMiBGaWxlIEhhbmRsZQ0KPiA+ICsgKiBAc3ViOiBTdWJj cmliZSBldmVudCBzdHJ1Y3R1cmUNCj4gPiArICoNCj4gPiArICogUmV0dXJuOiAwIG9uIHN1Y2Nl c3MsIGVycm9ycyBvdGhlcndpc2UNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4c3Nf c3Vic2NyaWJlX2V2ZW50KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX2ZoICpmaCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfZXZlbnRfc3Vic2NyaXB0aW9uICpz dWIpDQo+ID4gK3sNCj4gPiArICAgICBpbnQgcmV0Ow0KPiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhz c19zdGF0ZSAqeHNkaXJ4c3MgPSB0b194c2Rpcnhzc3N0YXRlKHNkKTsNCj4gPiArICAgICBzdHJ1 Y3QgeHNkaXJ4c3NfY29yZSAqY29yZSA9ICZ4c2Rpcnhzcy0+Y29yZTsNCj4gPiArDQo+ID4gKyAg ICAgc3dpdGNoIChzdWItPnR5cGUpIHsNCj4gPiArICAgICBjYXNlIFY0TDJfRVZFTlRfWExOWFNE SVJYX1ZJRFVOTE9DSzoNCj4gPiArICAgICBjYXNlIFY0TDJfRVZFTlRfWExOWFNESVJYX1VOREVS RkxPVzoNCj4gPiArICAgICBjYXNlIFY0TDJfRVZFTlRfWExOWFNESVJYX09WRVJGTE9XOg0KPiA+ ICsgICAgICAgICAgICAgcmV0ID0gdjRsMl9ldmVudF9zdWJzY3JpYmUoZmgsIHN1YiwgWFNESVJY X01BWF9FVkVOVFMsIE5VTEwpOw0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAg Y2FzZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0U6DQo+ID4gKyAgICAgICAgICAgICByZXQgPSB2 NGwyX3NyY19jaGFuZ2VfZXZlbnRfc3Vic2NyaWJlKGZoLCBzdWIpOw0KPiA+ICsgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgIHJldHVybiAt RUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIkV2ZW50 IHN1YnNjcmliZWQgOiAweCUwOHhcbiIsIHN1Yi0+dHlwZSk7DQo+ID4gKyAgICAgcmV0dXJuIHJl dDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX3Vuc3Vic2NyaWJl X2V2ZW50IC0gVW5zdWJzY3JpYmUgZnJvbSBhbGwgZXZlbnRzIHJlZ2lzdGVyZWQNCj4gPiArICog QHNkOiBWNEwyIFN1YiBkZXZpY2UNCj4gPiArICogQGZoOiBWNEwyIGZpbGUgaGFuZGxlDQo+ID4g KyAqIEBzdWI6IHBvaW50ZXIgdG8gRXZlbnQgdW5zdWJzY3JpcHRpb24gc3RydWN0dXJlDQo+ID4g KyAqDQo+ID4gKyAqIFJldHVybjogemVybyBvbiBzdWNjZXNzLCBlbHNlIGEgbmVnYXRpdmUgZXJy b3IgY29kZS4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4c3NfdW5zdWJzY3JpYmVf ZXZlbnQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9maCAqZmgsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfZXZlbnRfc3Vic2NyaXB0aW9uICpzdWIpDQo+ ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnhzZGlyeHNzID0gdG9feHNk aXJ4c3NzdGF0ZShzZCk7DQo+ID4gKyAgICAgc3RydWN0IHhzZGlyeHNzX2NvcmUgKmNvcmUgPSAm eHNkaXJ4c3MtPmNvcmU7DQo+ID4gKw0KPiA+ICsgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiRXZl bnQgdW5zdWJzY3JpYmUgOiAweCUwOHhcbiIsIHN1Yi0+dHlwZSk7DQo+ID4gKyAgICAgcmV0dXJu IHY0bDJfZXZlbnRfdW5zdWJzY3JpYmUoZmgsIHN1Yik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiB4c2Rpcnhzc19zX2N0cmwgLSBUaGlzIGlzIHVzZWQgdG8gc2V0IHRoZSBYaWxp bnggU0RJIFJ4IFY0TDIgY29udHJvbHMNCj4gPiArICogQGN0cmw6IFY0TDIgY29udHJvbCB0byBi ZSBzZXQNCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUg VjRMMiBjb250cm9scyBmb3IgdGhlIFhpbGlueCBTREkgUngNCj4gPiArICogU3Vic3lzdGVtLg0K PiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgZXJyb3JzIG90aGVyd2lzZQ0K PiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB4c2Rpcnhzc19zX2N0cmwoc3RydWN0IHY0bDJfY3Ry bCAqY3RybCkNCj4gPiArew0KPiA+ICsgICAgIGludCByZXQgPSAwOw0KPiA+ICsgICAgIHN0cnVj dCB4c2Rpcnhzc19zdGF0ZSAqeHNkaXJ4c3MgPQ0KPiA+ICsgICAgICAgICAgICAgY29udGFpbmVy X29mKGN0cmwtPmhhbmRsZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHhzZGlyeHNzX3N0YXRlLCBjdHJsX2hhbmRsZXIpOw0KPiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhz c19jb3JlICpjb3JlID0gJnhzZGlyeHNzLT5jb3JlOw0KPiA+ICsNCj4gPiArICAgICBkZXZfZGJn KGNvcmUtPmRldiwgInNldCBjdHJsIGlkID0gMHglMDh4IHZhbCA9IDB4JTA4eFxuIiwNCj4gPiAr ICAgICAgICAgICAgIGN0cmwtPmlkLCBjdHJsLT52YWwpOw0KPiA+ICsNCj4gPiArICAgICBpZiAo eHNkaXJ4c3MtPnN0cmVhbWluZykgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5k ZXYsICJDYW5ub3Qgc2V0IGNvbnRyb2xzIHdoaWxlIHN0cmVhbWluZ1xuIik7DQo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHhz ZGlyeF9jb3JlX2Rpc2FibGUoY29yZSk7DQo+ID4gKyAgICAgc3dpdGNoIChjdHJsLT5pZCkgew0K PiA+ICsgICAgIGNhc2UgVjRMMl9DSURfWElMSU5YX1NESVJYX0ZSQU1FUjoNCj4gPiArICAgICAg ICAgICAgIHhzZGlyeF9mcmFtZXIoY29yZSwgY3RybC0+dmFsKTsNCj4gPiArICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgVjRMMl9DSURfWElMSU5YX1NESVJYX1ZJRExPQ0tfV0lO RE9XOg0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4X3NldHZpZGxvY2t3aW5kb3coY29yZSwgY3Ry bC0+dmFsKTsNCj4gPiArICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgVjRMMl9D SURfWElMSU5YX1NESVJYX0VESF9FUlJDTlRfRU5BQkxFOg0KPiA+ICsgICAgICAgICAgICAgeHNk aXJ4X3NldGVkaGVycmNudHRyaWdnZXIoY29yZSwgY3RybC0+dmFsKTsNCj4gPiArICAgICAgICAg ICAgIGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgVjRMMl9DSURfWElMSU5YX1NESVJYX1NFQVJDSF9N T0RFUzoNCj4gPiArICAgICAgICAgICAgIGlmIChjdHJsLT52YWwpIHsNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgaWYgKGNvcmUtPm1vZGUgPT0gWFNESVJYU1NfU0RJX1NURF8zRykgew0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiVXB0byAz RyBzdXBwb3J0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmwt PnZhbCAmPSB+KEJJVChYU0RJUlhfTU9ERV82R19PRkZTRVQpIHwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoWFNESVJYX01PREVfMTJHSV9PRkZT RVQpIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC SVQoWFNESVJYX01PREVfMTJHRl9PRkZTRVQpKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKGNvcmUtPm1vZGUgPT0gWFNE SVJYU1NfU0RJX1NURF82Rykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl dl9kYmcoY29yZS0+ZGV2LCAiVXB0byA2RyBzdXBwb3J0ZWRcbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN0cmwtPnZhbCAmPSB+KEJJVChYU0RJUlhfTU9ERV8xMkdJX09G RlNFVCkgfA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEJJVChYU0RJUlhfTU9ERV8xMkdGX09GRlNFVCkpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSB4c2Rpcnhfc2V0X21v ZGVkZXRlY3QoY29yZSwgY3RybC0+dmFsKTsNCj4gPiArICAgICAgICAgICAgIH0gZWxzZSB7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoY29yZS0+ZGV2LCAiU2VsZWN0IGF0IGxl YXN0IG9uZSBtb2RlIVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgYnJlYWs7DQo+ID4g KyAgICAgZGVmYXVsdDoNCj4gPiArICAgICAgICAgICAgIHhzZGlyeHNzX3NldChjb3JlLCBYU0RJ UlhfUlNUX0NUUkxfUkVHLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIFhTRElSWF9S U1RfQ1RSTF9TU19FTl9NQVNLKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ICsgICAgIH0NCj4gPiArICAgICB4c2RpcnhfY29yZV9lbmFibGUoY29yZSk7DQo+ID4gKyAg ICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNz X2dfdm9sYXRpbGVfY3RybCAtIGdldCB0aGUgWGlsaW54IFNESSBSeCBjb250cm9scw0KPiA+ICsg KiBAY3RybDogUG9pbnRlciB0byBWNEwyIGNvbnRyb2wNCj4gPiArICoNCj4gPiArICogUmV0dXJu OiAwIG9uIHN1Y2Nlc3MsIGVycm9ycyBvdGhlcndpc2UNCj4gPiArICovDQo+ID4gK3N0YXRpYyBp bnQgeHNkaXJ4c3NfZ192b2xhdGlsZV9jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQo+ID4g K3sNCj4gPiArICAgICB1MzIgdmFsOw0KPiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAq eHNkaXJ4c3MgPQ0KPiA+ICsgICAgICAgICAgICAgY29udGFpbmVyX29mKGN0cmwtPmhhbmRsZXIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhzZGlyeHNzX3N0YXRlLCBj dHJsX2hhbmRsZXIpOw0KPiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlID0gJnhz ZGlyeHNzLT5jb3JlOw0KPiA+ICsNCj4gPiArICAgICBzd2l0Y2ggKGN0cmwtPmlkKSB7DQo+ID4g KyAgICAgY2FzZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfTU9ERV9ERVRFQ1Q6DQo+ID4gKyAgICAg ICAgICAgICBpZiAoIXhzZGlyeHNzLT52aWRsb2NrZWQpIHsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJDYW4ndCBnZXQgdmFsdWVzIHdoZW4gdmlkZW8gbm90 DQo+IGxvY2tlZCFcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAgICAgICAgIHZhbCA9IHhzZGlyeHNz X3JlYWQoY29yZSwgWFNESVJYX01PREVfREVUX1NUQVRfUkVHKTsNCj4gPiArICAgICAgICAgICAg IHZhbCAmPSBYU0RJUlhfTU9ERV9ERVRfU1RBVF9SWF9NT0RFX01BU0s7DQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICAgc3dpdGNoICh2YWwpIHsNCj4gPiArICAgICAgICAgICAgIGNhc2UgWFNESVJY X01PREVfU0RfTUFTSzoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY3RybC0+dmFsID0gWFNE SVJYX01PREVfU0RfT0ZGU0VUOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4g PiArICAgICAgICAgICAgIGNhc2UgWFNESVJYX01PREVfSERfTUFTSzoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgY3RybC0+dmFsID0gWFNESVJYX01PREVfSERfT0ZGU0VUOw0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIGNhc2UgWFNESVJYX01P REVfM0dfTUFTSzoNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY3RybC0+dmFsID0gWFNESVJY X01PREVfM0dfT0ZGU0VUOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAr ICAgICAgICAgICAgIGNhc2UgWFNESVJYX01PREVfNkdfTUFTSzoNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgY3RybC0+dmFsID0gWFNESVJYX01PREVfNkdfT0ZGU0VUOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgIGNhc2UgWFNESVJYX01PREVf MTJHSV9NQVNLOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBjdHJsLT52YWwgPSBYU0RJUlhf TU9ERV8xMkdJX09GRlNFVDsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4g KyAgICAgICAgICAgICBjYXNlIFhTRElSWF9NT0RFXzEyR0ZfTUFTSzoNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgY3RybC0+dmFsID0gWFNESVJYX01PREVfMTJHRl9PRkZTRVQ7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfQ1JD Og0KPiA+ICsgICAgICAgICAgICAgY3RybC0+dmFsID0geHNkaXJ4c3NfcmVhZChjb3JlLCBYU0RJ UlhfQ1JDX0VSUkNOVF9SRUcpOw0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4c3Nfd3JpdGUoY29y ZSwgWFNESVJYX0NSQ19FUlJDTlRfUkVHLCAweEZGRkYpOw0KPiA+ICsgICAgICAgICAgICAgYnJl YWs7DQo+ID4gKyAgICAgY2FzZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfRURIX0VSUkNOVDoNCj4g PiArICAgICAgICAgICAgIHZhbCA9IHhzZGlyeHNzX3JlYWQoY29yZSwgWFNESVJYX01PREVfREVU X1NUQVRfUkVHKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSBYU0RJUlhfTU9ERV9ERVRfU1RB VF9SWF9NT0RFX01BU0s7DQo+ID4gKyAgICAgICAgICAgICBpZiAodmFsID09IFhTRElSWF9NT0RF X1NEX01BU0spIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY3RybC0+dmFsID0geHNkaXJ4 c3NfcmVhZChjb3JlLCBYU0RJUlhfRURIX0VSUkNOVF9SRUcpOw0KPiA+ICsgICAgICAgICAgICAg fSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICIl ZCAtIG5vdCBpbiBTRCBtb2RlXG4iLCBjdHJsLT5pZCk7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAg ICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfRURIX1NUQVRV UzoNCj4gPiArICAgICAgICAgICAgIHZhbCA9IHhzZGlyeHNzX3JlYWQoY29yZSwgWFNESVJYX01P REVfREVUX1NUQVRfUkVHKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSBYU0RJUlhfTU9ERV9E RVRfU1RBVF9SWF9NT0RFX01BU0s7DQo+ID4gKyAgICAgICAgICAgICBpZiAodmFsID09IFhTRElS WF9NT0RFX1NEX01BU0spIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgY3RybC0+dmFsID0g eHNkaXJ4c3NfcmVhZChjb3JlLCBYU0RJUlhfRURIX1NUQVRfUkVHKTsNCj4gPiArICAgICAgICAg ICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoY29yZS0+ZGV2 LCAiJWQgLSBub3QgaW4gU0QgbW9kZVxuIiwgY3RybC0+aWQpOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAgICAg ICAgICAgIGJyZWFrOw0KPiA+ICsgICAgIGNhc2UgVjRMMl9DSURfWElMSU5YX1NESVJYX1RTX0lT X0lOVEVSTEFDRUQ6DQo+ID4gKyAgICAgICAgICAgICBpZiAoIXhzZGlyeHNzLT52aWRsb2NrZWQp IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJDYW4ndCBn ZXQgdmFsdWVzIHdoZW4gdmlkZW8gbm90DQo+IGxvY2tlZCFcbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgIGN0cmwtPnZhbCA9IHhzZGlyeHNzLT50c19pc19pbnRlcmxhY2VkOw0KPiA+ICsg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgY2FzZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhf QUNUSVZFX1NUUkVBTVM6DQo+ID4gKyAgICAgICAgICAgICBpZiAoIXhzZGlyeHNzLT52aWRsb2Nr ZWQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJDYW4n dCBnZXQgdmFsdWVzIHdoZW4gdmlkZW8gbm90DQo+IGxvY2tlZCFcbiIpOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiAr ICAgICAgICAgICAgIHZhbCA9IHhzZGlyeHNzX3JlYWQoY29yZSwgWFNESVJYX01PREVfREVUX1NU QVRfUkVHKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSBYU0RJUlhfTU9ERV9ERVRfU1RBVF9B Q1RfU1RSRUFNX01BU0s7DQo+ID4gKyAgICAgICAgICAgICB2YWwgPj49IFhTRElSWF9NT0RFX0RF VF9TVEFUX0FDVF9TVFJFQU1fT0ZGU0VUOw0KPiA+ICsgICAgICAgICAgICAgY3RybC0+dmFsID0g MSA8PCB2YWw7DQo+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICBjYXNlIFY0TDJf Q0lEX1hJTElOWF9TRElSWF9JU18zR0I6DQo+ID4gKyAgICAgICAgICAgICBpZiAoIXhzZGlyeHNz LT52aWRsb2NrZWQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5k ZXYsICJDYW4ndCBnZXQgdmFsdWVzIHdoZW4gdmlkZW8gbm90DQo+IGxvY2tlZCFcbiIpOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAg IH0NCj4gPiArICAgICAgICAgICAgIHZhbCA9IHhzZGlyeHNzX3JlYWQoY29yZSwgWFNESVJYX01P REVfREVUX1NUQVRfUkVHKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSBYU0RJUlhfTU9ERV9E RVRfU1RBVF9MVkxCXzNHX01BU0s7DQo+ID4gKyAgICAgICAgICAgICBjdHJsLT52YWwgPSB2YWwg PyB0cnVlIDogZmFsc2U7DQo+ID4gKyAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICBkZWZh dWx0Og0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJHZXQgSW52YWxpZCBj b250cm9sIGlkIDB4JTB4XG4iLCBjdHJsLT5pZCk7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJHZXQg Y3RybCBpZCA9IDB4JTA4eCB2YWwgPSAweCUwOHhcbiIsDQo+ID4gKyAgICAgICAgICAgICBjdHJs LT5pZCwgY3RybC0+dmFsKTsNCj4gPiArICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX2xvZ19zdGF0dXMgLSBMb2dzIHRoZSBzdGF0dXMgb2Yg dGhlIFNESSBSeCBTdWJzeXN0ZW0NCj4gPiArICogQHNkOiBQb2ludGVyIHRvIFY0TDIgc3ViZGV2 aWNlIHN0cnVjdHVyZQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHByaW50cyB0aGUg Y3VycmVudCBzdGF0dXMgb2YgWGlsaW54IFNESSBSeCBTdWJzeXN0ZW0NCj4gPiArICoNCj4gPiAr ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4 c3NfbG9nX3N0YXR1cyhzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQ0KPiA+ICt7DQo+ID4gKyAgICAg c3RydWN0IHhzZGlyeHNzX3N0YXRlICp4c2RpcnhzcyA9IHRvX3hzZGlyeHNzc3RhdGUoc2QpOw0K PiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlID0gJnhzZGlyeHNzLT5jb3JlOw0K PiA+ICsgICAgIHUzMiBkYXRhLCBpOw0KPiA+ICsNCj4gPiArICAgICB2NGwyX2luZm8oc2QsICIq KioqKiBTREkgUnggc3Vic3lzdGVtIHJlZyBkdW1wIHN0YXJ0ICoqKioqXG4iKTsNCj4gPiArICAg ICBmb3IgKGkgPSAwOyBpIDwgMHgyODsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICBkYXRhID0g eHNkaXJ4c3NfcmVhZChjb3JlLCBpICogNCk7DQo+ID4gKyAgICAgICAgICAgICB2NGwyX2luZm8o c2QsICJvZmZzZXQgMHglMDh4IGRhdGEgMHglMDh4XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIGkgKiA0LCBkYXRhKTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgdjRsMl9pbmZvKHNk LCAiKioqKiogU0RJIFJ4IHN1YnN5c3RlbSByZWcgZHVtcCBlbmQgKioqKipcbiIpOw0KPiA+ICsg ICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCB4c2Rpcnhzc19z dGFydF9zdHJlYW0oc3RydWN0IHhzZGlyeHNzX3N0YXRlICp4c2RpcnhzcykNCj4gPiArew0KPiA+ ICsgICAgIHhzZGlyeF9zdHJlYW1mbG93X2NvbnRyb2woJnhzZGlyeHNzLT5jb3JlLCB0cnVlKTsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgeHNkaXJ4c3Nfc3RvcF9zdHJlYW0oc3Ry dWN0IHhzZGlyeHNzX3N0YXRlICp4c2RpcnhzcykNCj4gPiArew0KPiA+ICsgICAgIHhzZGlyeF9z dHJlYW1mbG93X2NvbnRyb2woJnhzZGlyeHNzLT5jb3JlLCBmYWxzZSk7DQo+ID4gK30NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiB4c2Rpcnhzc19nX2ZyYW1lX2ludGVydmFsIC0gR2V0IHRoZSBm cmFtZSBpbnRlcnZhbA0KPiA+ICsgKiBAc2Q6IFY0TDIgU3ViIGRldmljZQ0KPiA+ICsgKiBAZmk6 IFBvaW50ZXIgdG8gVjRsMiBTdWIgZGV2aWNlIGZyYW1lIGludGVydmFsIHN0cnVjdHVyZQ0KPiA+ ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSBmcmFtZSBpbnRl cnZhbC4NCj4gPiArICogVGhlIGZyYW1lIHJhdGUgY2FuIGJlIGludGVncmFsIG9yIGZyYWN0aW9u YWwuDQo+ID4gKyAqIEludGVncmFsIGZyYW1lIHJhdGUgZS5nLiBudW1lcmF0b3IgPSAxMDAwLCBk ZW5vbWluYXRvciA9IDI0MDAwID0+IDI0DQo+IGZwcw0KPiA+ICsgKiBGcmFjdGlvbmFsIGZyYW1l IHJhdGUgZS5nLiBudW1lcmF0b3IgPSAxMDAxLCBkZW5vbWluYXRvciA9IDI0MDAwID0+DQo+IDIz Ljk3IGZwcw0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcw0KPiA+ICsgKi8N Cj4gPiArc3RhdGljIGludCB4c2Rpcnhzc19nX2ZyYW1lX2ludGVydmFsKHN0cnVjdCB2NGwyX3N1 YmRldiAqc2QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg djRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWwgKmZpKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3RydWN0 IHhzZGlyeHNzX3N0YXRlICp4c2RpcnhzcyA9IHRvX3hzZGlyeHNzc3RhdGUoc2QpOw0KPiA+ICsg ICAgIHN0cnVjdCB4c2Rpcnhzc19jb3JlICpjb3JlID0gJnhzZGlyeHNzLT5jb3JlOw0KPiA+ICsN Cj4gPiArICAgICBpZiAoIXhzZGlyeHNzLT52aWRsb2NrZWQpIHsNCj4gPiArICAgICAgICAgICAg IGRldl9lcnIoY29yZS0+ZGV2LCAiVmlkZW8gbm90IGxvY2tlZCFcbiIpOw0KPiA+ICsgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBmaS0+ aW50ZXJ2YWwgPSB4c2Rpcnhzcy0+ZnJhbWVfaW50ZXJ2YWw7DQo+ID4gKw0KPiA+ICsgICAgIGRl dl9kYmcoY29yZS0+ZGV2LCAiZnJhbWUgcmF0ZSBudW1lcmF0b3IgPSAlZCBkZW5vbWluYXRvciA9 ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4c3MtPmZyYW1lX2ludGVydmFsLm51bWVy YXRvciwNCj4gPiArICAgICAgICAgICAgIHhzZGlyeHNzLT5mcmFtZV9pbnRlcnZhbC5kZW5vbWlu YXRvcik7DQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiB4c2Rpcnhzc19zX3N0cmVhbSAtIEl0IGlzIHVzZWQgdG8gc3RhcnQvc3RvcCB0aGUgc3Ry ZWFtaW5nLg0KPiA+ICsgKiBAc2Q6IFY0TDIgU3ViIGRldmljZQ0KPiA+ICsgKiBAZW5hYmxlOiBG bGFnIChUcnVlIC8gRmFsc2UpDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY29udHJv bHMgdGhlIHN0YXJ0IG9yIHN0b3Agb2Ygc3RyZWFtaW5nIGZvciB0aGUNCj4gPiArICogWGlsaW54 IFNESSBSeCBTdWJzeXN0ZW0uDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LCBlcnJvcnMgb3RoZXJ3aXNlDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHhzZGlyeHNzX3Nf c3RyZWFtKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIGludCBlbmFibGUpDQo+ID4gK3sNCj4gPiAr ICAgICBzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnhzZGlyeHNzID0gdG9feHNkaXJ4c3NzdGF0ZShz ZCk7DQo+ID4gKyAgICAgc3RydWN0IHhzZGlyeHNzX2NvcmUgKmNvcmUgPSAmeHNkaXJ4c3MtPmNv cmU7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChlbmFibGUpIHsNCj4gPiArICAgICAgICAgICAgIGlm ICgheHNkaXJ4c3MtPnZpZGxvY2tlZCkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZf ZGJnKGNvcmUtPmRldiwgIlZpZGVvIGlzIG5vdCBsb2NrZWRcbiIpOw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgIGlmICh4c2Rpcnhzcy0+c3RyZWFtaW5nKSB7DQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiQWxyZWFkeSBzdHJlYW1pbmdcbiIpOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICAgICAgICB4c2Rpcnhzc19zdGFydF9zdHJlYW0oeHNkaXJ4c3Mp Ow0KPiA+ICsgICAgICAgICAgICAgeHNkaXJ4c3MtPnN0cmVhbWluZyA9IHRydWU7DQo+ID4gKyAg ICAgICAgICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIlN0cmVhbWluZyBzdGFydGVkXG4iKTsNCj4g PiArICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgaWYgKCF4c2Rpcnhzcy0+c3RyZWFt aW5nKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoY29yZS0+ZGV2LCAiU3Rv cHBlZCBzdHJlYW1pbmcgYWxyZWFkeVxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAg ICAgIHhzZGlyeHNzX3N0b3Bfc3RyZWFtKHhzZGlyeHNzKTsNCj4gPiArICAgICAgICAgICAgIHhz ZGlyeHNzLT5zdHJlYW1pbmcgPSBmYWxzZTsNCj4gPiArICAgICAgICAgICAgIGRldl9kYmcoY29y ZS0+ZGV2LCAiU3RyZWFtaW5nIHN0b3BwZWRcbiIpOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgdjRsMl9t YnVzX2ZyYW1lZm10ICoNCj4gPiArX194c2Rpcnhzc19nZXRfcGFkX2Zvcm1hdChzdHJ1Y3QgeHNk aXJ4c3Nfc3RhdGUgKnhzZGlyeHNzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaW50IHBhZCwgdTMyIHdoaWNoKQ0KPiA+ICt7DQo+ID4gKyAgICAg c3dpdGNoICh3aGljaCkgew0KPiA+ICsgICAgIGNhc2UgVjRMMl9TVUJERVZfRk9STUFUX1RSWToN Cj4gPiArICAgICAgICAgICAgIHJldHVybiB2NGwyX3N1YmRldl9nZXRfdHJ5X2Zvcm1hdCgmeHNk aXJ4c3MtPnN1YmRldiwgY2ZnLCBwYWQpOw0KPiA+ICsgICAgIGNhc2UgVjRMMl9TVUJERVZfRk9S TUFUX0FDVElWRToNCj4gPiArICAgICAgICAgICAgIHJldHVybiAmeHNkaXJ4c3MtPmZvcm1hdHNb cGFkXTsNCj4gPiArICAgICBkZWZhdWx0Og0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7 DQo+ID4gKyAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeHNkaXJ4c3Nf Z2V0X2Zvcm1hdCAtIEdldCB0aGUgcGFkIGZvcm1hdA0KPiA+ICsgKiBAc2Q6IFBvaW50ZXIgdG8g VjRMMiBTdWIgZGV2aWNlIHN0cnVjdHVyZQ0KPiA+ICsgKiBAY2ZnOiBQb2ludGVyIHRvIHN1YiBk ZXZpY2UgcGFkIGluZm9ybWF0aW9uIHN0cnVjdHVyZQ0KPiA+ICsgKiBAZm10OiBQb2ludGVyIHRv IHBhZCBsZXZlbCBtZWRpYSBidXMgZm9ybWF0DQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byBnZXQgdGhlIHBhZCBmb3JtYXQgaW5mb3JtYXRpb24uDQo+ID4gKyAqDQo+ ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHhz ZGlyeHNzX2dldF9mb3JtYXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJk ZXZfZm9ybWF0ICpmbXQpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUg KnhzZGlyeHNzID0gdG9feHNkaXJ4c3NzdGF0ZShzZCk7DQo+ID4gKyAgICAgc3RydWN0IHhzZGly eHNzX2NvcmUgKmNvcmUgPSAmeHNkaXJ4c3MtPmNvcmU7DQo+ID4gKw0KPiA+ICsgICAgIGlmICgh eHNkaXJ4c3MtPnZpZGxvY2tlZCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5k ZXYsICJWaWRlbyBub3QgbG9ja2VkIVxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGZtdC0+Zm9ybWF0ID0gKl9feHNk aXJ4c3NfZ2V0X3BhZF9mb3JtYXQoeHNkaXJ4c3MsIGNmZywNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdC0+cGFkLCBmbXQtPndoaWNoKTsNCj4g PiArDQo+ID4gKyAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJTdHJlYW0gd2lkdGggPSAlZCBoZWln aHQgPSAlZCBGaWVsZCA9ICVkXG4iLA0KPiA+ICsgICAgICAgICAgICAgZm10LT5mb3JtYXQud2lk dGgsIGZtdC0+Zm9ybWF0LmhlaWdodCwgZm10LT5mb3JtYXQuZmllbGQpOw0KPiA+ICsNCj4gPiAr ICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNz X3NldF9mb3JtYXQgLSBUaGlzIGlzIHVzZWQgdG8gc2V0IHRoZSBwYWQgZm9ybWF0DQo+ID4gKyAq IEBzZDogUG9pbnRlciB0byBWNEwyIFN1YiBkZXZpY2Ugc3RydWN0dXJlDQo+ID4gKyAqIEBjZmc6 IFBvaW50ZXIgdG8gc3ViIGRldmljZSBwYWQgaW5mb3JtYXRpb24gc3RydWN0dXJlDQo+ID4gKyAq IEBmbXQ6IFBvaW50ZXIgdG8gcGFkIGxldmVsIG1lZGlhIGJ1cyBmb3JtYXQNCj4gPiArICoNCj4g PiArICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgcGFkIGZvcm1hdC4NCj4gPiAr ICogU2luY2UgdGhlIHBhZCBmb3JtYXQgaXMgZml4ZWQgaW4gaGFyZHdhcmUsIGl0IGNhbid0IGJl DQo+ID4gKyAqIG1vZGlmaWVkIG9uIHJ1biB0aW1lLg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46 IDAgb24gc3VjY2Vzcw0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCB4c2Rpcnhzc19zZXRfZm9y bWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX2NvbmZpZyAqY2ZnLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKmZtdCkNCj4gPiAr ew0KPiA+ICsgICAgIHN0cnVjdCB2NGwyX21idXNfZnJhbWVmbXQgKl9fZm9ybWF0Ow0KPiA+ICsg ICAgIHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAqeHNkaXJ4c3MgPSB0b194c2Rpcnhzc3N0YXRlKHNk KTsNCj4gPiArDQo+ID4gKyAgICAgZGV2X2RiZyh4c2Rpcnhzcy0+Y29yZS5kZXYsDQo+ID4gKyAg ICAgICAgICAgICAic2V0IHdpZHRoICVkIGhlaWdodCAlZCBjb2RlICVkIGZpZWxkICVkIGNvbG9y c3BhY2UgJWRcbiIsDQo+ID4gKyAgICAgICAgICAgICBmbXQtPmZvcm1hdC53aWR0aCwgZm10LT5m b3JtYXQuaGVpZ2h0LA0KPiA+ICsgICAgICAgICAgICAgZm10LT5mb3JtYXQuY29kZSwgZm10LT5m b3JtYXQuZmllbGQsDQo+ID4gKyAgICAgICAgICAgICBmbXQtPmZvcm1hdC5jb2xvcnNwYWNlKTsN Cj4gPiArDQo+ID4gKyAgICAgX19mb3JtYXQgPSBfX3hzZGlyeHNzX2dldF9wYWRfZm9ybWF0KHhz ZGlyeHNzLCBjZmcsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZtdC0+cGFkLCBmbXQtPndoaWNoKTsNCj4gPiArDQo+ID4gKyAgICAgLyogQ3VycmVudGx5 IHJlc2V0IHRoZSBjb2RlIHRvIG9uZSBmaXhlZCBpbiBoYXJkd2FyZSAqLw0KPiA+ICsgICAgIC8q IFRPRE8gOiBBZGQgY2hlY2tzIGZvciB3aWR0aCBoZWlnaHQgKi8NCj4gPiArICAgICBmbXQtPmZv cm1hdC5jb2RlID0gX19mb3JtYXQtPmNvZGU7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeHNkaXJ4c3Nfb3BlbiAtIENhbGxlZCBv biB2NGwyX29wZW4oKQ0KPiA+ICsgKiBAc2Q6IFBvaW50ZXIgdG8gVjRMMiBzdWIgZGV2aWNlIHN0 cnVjdHVyZQ0KPiA+ICsgKiBAZmg6IFBvaW50ZXIgdG8gVjRMMiBGaWxlIGhhbmRsZQ0KPiA+ICsg Kg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiB2NGwyX29wZW4oKS4gSXQgc2V0 cyB0aGUgZGVmYXVsdCBmb3JtYXQgZm9yIHBhZC4NCj4gPiArICoNCj4gPiArICogUmV0dXJuOiAw IG9uIHN1Y2Nlc3MNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4c3Nfb3BlbihzdHJ1 Y3QgdjRsMl9zdWJkZXYgKnNkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0 bDJfc3ViZGV2X2ZoICpmaCkNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCB2NGwyX21idXNfZnJh bWVmbXQgKmZvcm1hdDsNCj4gPiArICAgICBzdHJ1Y3QgeHNkaXJ4c3Nfc3RhdGUgKnhzZGlyeHNz ID0gdG9feHNkaXJ4c3NzdGF0ZShzZCk7DQo+ID4gKw0KPiA+ICsgICAgIGZvcm1hdCA9IHY0bDJf c3ViZGV2X2dldF90cnlfZm9ybWF0KHNkLCBmaC0+cGFkLCAwKTsNCj4gPiArICAgICAqZm9ybWF0 ID0geHNkaXJ4c3MtPmRlZmF1bHRfZm9ybWF0Ow0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhzZGlyeHNzX2Nsb3NlIC0gQ2FsbGVk IG9uIHY0bDJfY2xvc2UoKQ0KPiA+ICsgKiBAc2Q6IFBvaW50ZXIgdG8gVjRMMiBzdWIgZGV2aWNl IHN0cnVjdHVyZQ0KPiA+ICsgKiBAZmg6IFBvaW50ZXIgdG8gVjRMMiBGaWxlIGhhbmRsZQ0KPiA+ ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiB2NGwyX2Nsb3NlKCkuDQo+ ID4gKyAqDQo+ID4gKyAqIFJldHVybjogMCBvbiBzdWNjZXNzDQo+ID4gKyAqLw0KPiA+ICtzdGF0 aWMgaW50IHhzZGlyeHNzX2Nsb3NlKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2ZoICpmaCkNCj4gPiArew0KPiA+ ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiA+ICsgKiBNZWRpYSBPcGVyYXRpb25zDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBtZWRpYV9lbnRpdHlfb3BlcmF0aW9ucyB4c2Rpcnhzc19tZWRpYV9v cHMgPSB7DQo+ID4gKyAgICAgLmxpbmtfdmFsaWRhdGUgPSB2NGwyX3N1YmRldl9saW5rX3ZhbGlk YXRlDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9v cHMgeHNkaXJ4c3NfY3RybF9vcHMgPSB7DQo+ID4gKyAgICAgLmdfdm9sYXRpbGVfY3RybCA9IHhz ZGlyeHNzX2dfdm9sYXRpbGVfY3RybCwNCj4gPiArICAgICAuc19jdHJsID0geHNkaXJ4c3Nfc19j dHJsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHY0bDJfY3RybF9jb25maWcg eHNkaXJ4c3NfZWRoX2N0cmxzW10gPSB7DQo+ID4gKyAgICAgew0KPiA+ICsgICAgICAgICAgICAg Lm9wcyAgICA9ICZ4c2Rpcnhzc19jdHJsX29wcywNCj4gPiArICAgICAgICAgICAgIC5pZCAgICAg PSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfRURIX0VSUkNOVF9FTkFCTEUsDQo+ID4gKyAgICAgICAg ICAgICAubmFtZSAgID0gIlNESSBSeCA6IEVESCBFcnJvciBDb3VudCBFbmFibGUiLA0KPiA+ICsg ICAgICAgICAgICAgLnR5cGUgICA9IFY0TDJfQ1RSTF9UWVBFX0JJVE1BU0ssDQo+ID4gKyAgICAg ICAgICAgICAubWluICAgID0gMCwNCj4gPiArICAgICAgICAgICAgIC5tYXggICAgPSBYU0RJUlhf RURIX0FMTEVSUl9NQVNLLA0KPiA+ICsgICAgICAgICAgICAgLmRlZiAgICA9IDAsDQo+ID4gKyAg ICAgfSwgew0KPiA+ICsgICAgICAgICAgICAgLm9wcyAgICA9ICZ4c2Rpcnhzc19jdHJsX29wcywN Cj4gPiArICAgICAgICAgICAgIC5pZCAgICAgPSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfRURIX0VS UkNOVCwNCj4gPiArICAgICAgICAgICAgIC5uYW1lICAgPSAiU0RJIFJ4IDogRURIIEVycm9yIENv dW50IiwNCj4gPiArICAgICAgICAgICAgIC50eXBlICAgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VS LA0KPiA+ICsgICAgICAgICAgICAgLm1pbiAgICA9IDAsDQo+ID4gKyAgICAgICAgICAgICAubWF4 ICAgID0gMHhGRkZGLA0KPiA+ICsgICAgICAgICAgICAgLnN0ZXAgICA9IDEsDQo+ID4gKyAgICAg ICAgICAgICAuZGVmICAgID0gMCwNCj4gPiArICAgICAgICAgICAgIC5mbGFncyAgPSBWNEwyX0NU UkxfRkxBR19WT0xBVElMRSB8DQo+IFY0TDJfQ1RSTF9GTEFHX1JFQURfT05MWSwNCj4gPiArICAg ICB9LCB7DQo+ID4gKyAgICAgICAgICAgICAub3BzICAgID0gJnhzZGlyeHNzX2N0cmxfb3BzLA0K PiA+ICsgICAgICAgICAgICAgLmlkICAgICA9IFY0TDJfQ0lEX1hJTElOWF9TRElSWF9FREhfU1RB VFVTLA0KPiA+ICsgICAgICAgICAgICAgLm5hbWUgICA9ICJTREkgUnggOiBFREggU3RhdHVzIiwN Cj4gPiArICAgICAgICAgICAgIC50eXBlICAgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSLA0KPiA+ ICsgICAgICAgICAgICAgLm1pbiAgICA9IDAsDQo+ID4gKyAgICAgICAgICAgICAubWF4ICAgID0g MHhGRkZGRkZGRiwNCj4gPiArICAgICAgICAgICAgIC5zdGVwICAgPSAxLA0KPiA+ICsgICAgICAg ICAgICAgLmRlZiAgICA9IDAsDQo+ID4gKyAgICAgICAgICAgICAuZmxhZ3MgID0gVjRMMl9DVFJM X0ZMQUdfVk9MQVRJTEUgfA0KPiBWNEwyX0NUUkxfRkxBR19SRUFEX09OTFksDQo+ID4gKyAgICAg fQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCB2NGwyX2N0cmxfY29uZmlnIHhz ZGlyeHNzX2N0cmxzW10gPSB7DQo+ID4gKyAgICAgew0KPiA+ICsgICAgICAgICAgICAgLm9wcyAg ICA9ICZ4c2Rpcnhzc19jdHJsX29wcywNCj4gPiArICAgICAgICAgICAgIC5pZCAgICAgPSBWNEwy X0NJRF9YSUxJTlhfU0RJUlhfRlJBTUVSLA0KPiA+ICsgICAgICAgICAgICAgLm5hbWUgICA9ICJT REkgUnggOiBFbmFibGUgRnJhbWVyIiwNCj4gPiArICAgICAgICAgICAgIC50eXBlICAgPSBWNEwy X0NUUkxfVFlQRV9CT09MRUFOLA0KPiA+ICsgICAgICAgICAgICAgLm1pbiAgICA9IGZhbHNlLA0K PiA+ICsgICAgICAgICAgICAgLm1heCAgICA9IHRydWUsDQo+ID4gKyAgICAgICAgICAgICAuc3Rl cCAgID0gMSwNCj4gPiArICAgICAgICAgICAgIC5kZWYgICAgPSB0cnVlLA0KPiA+ICsgICAgIH0s IHsNCj4gPiArICAgICAgICAgICAgIC5vcHMgICAgPSAmeHNkaXJ4c3NfY3RybF9vcHMsDQo+ID4g KyAgICAgICAgICAgICAuaWQgICAgID0gVjRMMl9DSURfWElMSU5YX1NESVJYX1ZJRExPQ0tfV0lO RE9XLA0KPiA+ICsgICAgICAgICAgICAgLm5hbWUgICA9ICJTREkgUnggOiBWaWRlbyBMb2NrIFdp bmRvdyIsDQo+ID4gKyAgICAgICAgICAgICAudHlwZSAgID0gVjRMMl9DVFJMX1RZUEVfSU5URUdF UiwNCj4gPiArICAgICAgICAgICAgIC5taW4gICAgPSAwLA0KPiA+ICsgICAgICAgICAgICAgLm1h eCAgICA9IDB4RkZGRkZGRkYsDQo+ID4gKyAgICAgICAgICAgICAuc3RlcCAgID0gMSwNCj4gPiAr ICAgICAgICAgICAgIC5kZWYgICAgPSBYU0RJUlhfREVGQVVMVF9WSURFT19MT0NLX1dJTkRPVywN Cj4gPiArICAgICB9LCB7DQo+ID4gKyAgICAgICAgICAgICAub3BzICAgID0gJnhzZGlyeHNzX2N0 cmxfb3BzLA0KPiA+ICsgICAgICAgICAgICAgLmlkICAgICA9IFY0TDJfQ0lEX1hJTElOWF9TRElS WF9TRUFSQ0hfTU9ERVMsDQo+ID4gKyAgICAgICAgICAgICAubmFtZSAgID0gIlNESSBSeCA6IE1v ZGVzIHNlYXJjaCBNYXNrIiwNCj4gPiArICAgICAgICAgICAgIC50eXBlICAgPSBWNEwyX0NUUkxf VFlQRV9CSVRNQVNLLA0KPiA+ICsgICAgICAgICAgICAgLm1pbiAgICA9IDAsDQo+ID4gKyAgICAg ICAgICAgICAubWF4ICAgID0gWFNESVJYX0RFVEVDVF9BTExfTU9ERVMsDQo+ID4gKyAgICAgICAg ICAgICAuZGVmICAgID0gWFNESVJYX0RFVEVDVF9BTExfTU9ERVMsDQo+ID4gKyAgICAgfSwgew0K PiA+ICsgICAgICAgICAgICAgLm9wcyAgICA9ICZ4c2Rpcnhzc19jdHJsX29wcywNCj4gPiArICAg ICAgICAgICAgIC5pZCAgICAgPSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhfTU9ERV9ERVRFQ1QsDQo+ ID4gKyAgICAgICAgICAgICAubmFtZSAgID0gIlNESSBSeCA6IE1vZGUgRGV0ZWN0IFN0YXR1cyIs DQo+ID4gKyAgICAgICAgICAgICAudHlwZSAgID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUiwNCj4g PiArICAgICAgICAgICAgIC5taW4gICAgPSBYU0RJUlhfTU9ERV9TRF9PRkZTRVQsDQo+ID4gKyAg ICAgICAgICAgICAubWF4ICAgID0gWFNESVJYX01PREVfMTJHRl9PRkZTRVQsDQo+ID4gKyAgICAg ICAgICAgICAuc3RlcCAgID0gMSwNCj4gPiArICAgICAgICAgICAgIC5mbGFncyAgPSBWNEwyX0NU UkxfRkxBR19WT0xBVElMRSB8DQo+IFY0TDJfQ1RSTF9GTEFHX1JFQURfT05MWSwNCj4gPiArICAg ICB9LCB7DQo+ID4gKyAgICAgICAgICAgICAub3BzICAgID0gJnhzZGlyeHNzX2N0cmxfb3BzLA0K PiA+ICsgICAgICAgICAgICAgLmlkICAgICA9IFY0TDJfQ0lEX1hJTElOWF9TRElSWF9DUkMsDQo+ ID4gKyAgICAgICAgICAgICAubmFtZSAgID0gIlNESSBSeCA6IENSQyBFcnJvciBzdGF0dXMiLA0K PiA+ICsgICAgICAgICAgICAgLnR5cGUgICA9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVIsDQo+ID4g KyAgICAgICAgICAgICAubWluICAgID0gMCwNCj4gPiArICAgICAgICAgICAgIC5tYXggICAgPSAw eEZGRkZGRkZGLA0KPiA+ICsgICAgICAgICAgICAgLnN0ZXAgICA9IDEsDQo+ID4gKyAgICAgICAg ICAgICAuZGVmICAgID0gMCwNCj4gPiArICAgICAgICAgICAgIC5mbGFncyAgPSBWNEwyX0NUUkxf RkxBR19WT0xBVElMRSB8DQo+IFY0TDJfQ1RSTF9GTEFHX1JFQURfT05MWSwNCj4gPiArICAgICB9 LCB7DQo+ID4gKyAgICAgICAgICAgICAub3BzICAgID0gJnhzZGlyeHNzX2N0cmxfb3BzLA0KPiA+ ICsgICAgICAgICAgICAgLmlkICAgICA9IFY0TDJfQ0lEX1hJTElOWF9TRElSWF9UU19JU19JTlRF UkxBQ0VELA0KPiA+ICsgICAgICAgICAgICAgLm5hbWUgICA9ICJTREkgUnggOiBUUyBpcyBJbnRl cmxhY2VkIiwNCj4gPiArICAgICAgICAgICAgIC50eXBlICAgPSBWNEwyX0NUUkxfVFlQRV9CT09M RUFOLA0KPiA+ICsgICAgICAgICAgICAgLm1pbiAgICA9IGZhbHNlLA0KPiA+ICsgICAgICAgICAg ICAgLm1heCAgICA9IHRydWUsDQo+ID4gKyAgICAgICAgICAgICAuZGVmICAgID0gZmFsc2UsDQo+ ID4gKyAgICAgICAgICAgICAuc3RlcCAgID0gMSwNCj4gPiArICAgICAgICAgICAgIC5mbGFncyAg PSBWNEwyX0NUUkxfRkxBR19WT0xBVElMRSB8DQo+IFY0TDJfQ1RSTF9GTEFHX1JFQURfT05MWSwN Cj4gPiArICAgICB9LCB7DQo+ID4gKyAgICAgICAgICAgICAub3BzICAgID0gJnhzZGlyeHNzX2N0 cmxfb3BzLA0KPiA+ICsgICAgICAgICAgICAgLmlkICAgICA9IFY0TDJfQ0lEX1hJTElOWF9TRElS WF9BQ1RJVkVfU1RSRUFNUywNCj4gPiArICAgICAgICAgICAgIC5uYW1lICAgPSAiU0RJIFJ4IDog QWN0aXZlIFN0cmVhbXMiLA0KPiA+ICsgICAgICAgICAgICAgLnR5cGUgICA9IFY0TDJfQ1RSTF9U WVBFX0lOVEVHRVIsDQo+ID4gKyAgICAgICAgICAgICAubWluICAgID0gMSwNCj4gPiArICAgICAg ICAgICAgIC5tYXggICAgPSAxNiwNCj4gPiArICAgICAgICAgICAgIC5kZWYgICAgPSAxLA0KPiA+ ICsgICAgICAgICAgICAgLnN0ZXAgICA9IDEsDQo+ID4gKyAgICAgICAgICAgICAuZmxhZ3MgID0g VjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUgfA0KPiBWNEwyX0NUUkxfRkxBR19SRUFEX09OTFksDQo+ ID4gKyAgICAgfSwgew0KPiA+ICsgICAgICAgICAgICAgLm9wcyAgICA9ICZ4c2Rpcnhzc19jdHJs X29wcywNCj4gPiArICAgICAgICAgICAgIC5pZCAgICAgPSBWNEwyX0NJRF9YSUxJTlhfU0RJUlhf SVNfM0dCLA0KPiA+ICsgICAgICAgICAgICAgLm5hbWUgICA9ICJTREkgUnggOiBJcyAzR0IiLA0K PiA+ICsgICAgICAgICAgICAgLnR5cGUgICA9IFY0TDJfQ1RSTF9UWVBFX0JPT0xFQU4sDQo+ID4g KyAgICAgICAgICAgICAubWluICAgID0gZmFsc2UsDQo+ID4gKyAgICAgICAgICAgICAubWF4ICAg ID0gdHJ1ZSwNCj4gPiArICAgICAgICAgICAgIC5kZWYgICAgPSBmYWxzZSwNCj4gPiArICAgICAg ICAgICAgIC5zdGVwICAgPSAxLA0KPiA+ICsgICAgICAgICAgICAgLmZsYWdzICA9IFY0TDJfQ1RS TF9GTEFHX1ZPTEFUSUxFIHwNCj4gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZLA0KPiA+ICsgICAg IH0NCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZf Y29yZV9vcHMgeHNkaXJ4c3NfY29yZV9vcHMgPSB7DQo+ID4gKyAgICAgLmxvZ19zdGF0dXMgPSB4 c2Rpcnhzc19sb2dfc3RhdHVzLA0KPiA+ICsgICAgIC5zdWJzY3JpYmVfZXZlbnQgPSB4c2Rpcnhz c19zdWJzY3JpYmVfZXZlbnQsDQo+ID4gKyAgICAgLnVuc3Vic2NyaWJlX2V2ZW50ID0geHNkaXJ4 c3NfdW5zdWJzY3JpYmVfZXZlbnQNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qg djRsMl9zdWJkZXZfdmlkZW9fb3BzIHhzZGlyeHNzX3ZpZGVvX29wcyA9IHsNCj4gPiArICAgICAu Z19mcmFtZV9pbnRlcnZhbCA9IHhzZGlyeHNzX2dfZnJhbWVfaW50ZXJ2YWwsDQo+ID4gKyAgICAg LnNfc3RyZWFtID0geHNkaXJ4c3Nfc19zdHJlYW0NCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRp YyBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyB4c2Rpcnhzc19wYWRfb3BzID0gew0KPiA+ICsg ICAgIC5nZXRfZm10ID0geHNkaXJ4c3NfZ2V0X2Zvcm1hdCwNCj4gPiArICAgICAuc2V0X2ZtdCA9 IHhzZGlyeHNzX3NldF9mb3JtYXQsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0 IHY0bDJfc3ViZGV2X29wcyB4c2Rpcnhzc19vcHMgPSB7DQo+ID4gKyAgICAgLmNvcmUgPSAmeHNk aXJ4c3NfY29yZV9vcHMsDQo+ID4gKyAgICAgLnZpZGVvID0gJnhzZGlyeHNzX3ZpZGVvX29wcywN Cj4gPiArICAgICAucGFkID0gJnhzZGlyeHNzX3BhZF9vcHMNCj4gPiArfTsNCj4gPiArDQo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfaW50ZXJuYWxfb3BzIHhzZGlyeHNzX2lu dGVybmFsX29wcyA9IHsNCj4gPiArICAgICAub3BlbiA9IHhzZGlyeHNzX29wZW4sDQo+ID4gKyAg ICAgLmNsb3NlID0geHNkaXJ4c3NfY2xvc2UNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4gKyAqIFBsYXRmb3JtIERldmljZSBEcml2ZXINCj4gPiArICov DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHhzZGlyeHNzX3BhcnNlX29mKHN0cnVjdCB4c2Rpcnhz c19zdGF0ZSAqeHNkaXJ4c3MpDQo+ID4gK3sNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUg Km5vZGUgPSB4c2Rpcnhzcy0+Y29yZS5kZXYtPm9mX25vZGU7DQo+ID4gKyAgICAgc3RydWN0IGRl dmljZV9ub2RlICpwb3J0cyA9IE5VTEw7DQo+ID4gKyAgICAgc3RydWN0IGRldmljZV9ub2RlICpw b3J0ID0gTlVMTDsNCj4gPiArICAgICB1bnNpZ25lZCBpbnQgbnBvcnRzID0gMDsNCj4gPiArICAg ICBzdHJ1Y3QgeHNkaXJ4c3NfY29yZSAqY29yZSA9ICZ4c2Rpcnhzcy0+Y29yZTsNCj4gPiArICAg ICBpbnQgcmV0Ow0KPiA+ICsgICAgIGNvbnN0IGNoYXIgKnNkaV9zdGQ7DQo+ID4gKw0KPiA+ICsg ICAgIGNvcmUtPmluY2x1ZGVfZWRoID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKG5vZGUsICJ4bG54 LGluY2x1ZGUtZWRoIik7DQo+ID4gKyAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJFREggcHJvcGVy dHkgPSAlc1xuIiwNCj4gPiArICAgICAgICAgICAgIGNvcmUtPmluY2x1ZGVfZWRoID8gIlByZXNl bnQiIDogIkFic2VudCIpOw0KPiA+ICsNCj4gPiArICAgICByZXQgPSBvZl9wcm9wZXJ0eV9yZWFk X3N0cmluZyhub2RlLCAieGxueCxsaW5lLXJhdGUiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZzZGlfc3RkKTsNCj4gPiArICAgICBpZiAocmV0IDwgMCkgew0KPiA+ ICsgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJ4bG54LGxpbmUtcmF0ZSBwcm9wZXJ0 eSBub3QgZm91bmRcbiIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgIGlmICghc3RybmNtcChzZGlfc3RkLCAiMTJHX1NESV84RFMi LCBYU0RJUlhfTUFYX1NUUl9MRU5HVEgpKSB7DQo+ID4gKyAgICAgICAgICAgICBjb3JlLT5tb2Rl ID0gWFNESVJYU1NfU0RJX1NURF8xMkdfOERTOw0KPiA+ICsgICAgIH0gZWxzZSBpZiAoIXN0cm5j bXAoc2RpX3N0ZCwgIjZHX1NESSIsIFhTRElSWF9NQVhfU1RSX0xFTkdUSCkpIHsNCj4gPiArICAg ICAgICAgICAgIGNvcmUtPm1vZGUgPSBYU0RJUlhTU19TRElfU1REXzZHOw0KPiA+ICsgICAgIH0g ZWxzZSBpZiAoIXN0cm5jbXAoc2RpX3N0ZCwgIjNHX1NESSIsIFhTRElSWF9NQVhfU1RSX0xFTkdU SCkpIHsNCj4gPiArICAgICAgICAgICAgIGNvcmUtPm1vZGUgPSBYU0RJUlhTU19TRElfU1REXzNH Ow0KPiA+ICsgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGNvcmUtPmRl diwgIkludmFsaWQgTGluZSBSYXRlXG4iKTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOw0KPiA+ICsgICAgIH0NCj4gPiArICAgICBkZXZfZGJnKGNvcmUtPmRldiwgIlNESSBSeCBM aW5lIFJhdGUgPSAlcywgbW9kZSA9ICVkXG4iLCBzZGlfc3RkLA0KPiA+ICsgICAgICAgICAgICAg Y29yZS0+bW9kZSk7DQo+ID4gKw0KPiA+ICsgICAgIHBvcnRzID0gb2ZfZ2V0X2NoaWxkX2J5X25h bWUobm9kZSwgInBvcnRzIik7DQo+ID4gKyAgICAgaWYgKCFwb3J0cykNCj4gPiArICAgICAgICAg ICAgIHBvcnRzID0gbm9kZTsNCj4gPiArDQo+ID4gKyAgICAgZm9yX2VhY2hfY2hpbGRfb2Zfbm9k ZShwb3J0cywgcG9ydCkgew0KPiA+ICsgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHh2aXBfdmlk ZW9fZm9ybWF0ICpmb3JtYXQ7DQo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUg KmVuZHBvaW50Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGlmICghcG9ydC0+bmFtZSB8fCBv Zl9ub2RlX2NtcChwb3J0LT5uYW1lLCAicG9ydCIpKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBmb3JtYXQgPSB4dmlwX29mX2dl dF9mb3JtYXQocG9ydCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoSVNfRVJSKGZvcm1hdCkpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJpbnZhbGlkIGZv cm1hdCBpbiBEVCIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihm b3JtYXQpOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIGRl dl9kYmcoY29yZS0+ZGV2LCAidmZfY29kZSA9ICVkIGJwYyA9ICVkIGJwcCA9ICVkXG4iLA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnZmX2NvZGUsIGZvcm1hdC0+d2lkdGgsIGZv cm1hdC0+YnBwKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBpZiAoZm9ybWF0LT52Zl9jb2Rl ICE9IFhWSVBfVkZfWVVWXzQyMiAmJg0KPiA+ICsgICAgICAgICAgICAgICAgIGZvcm1hdC0+dmZf Y29kZSAhPSBYVklQX1ZGX1lVVl80MjApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2 X2Vycihjb3JlLT5kZXYsICJJbmNvcnJlY3QgVUc5MzQgdmlkZW8gZm9ybWF0IHNldC5cbiIpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAg ICAgIH0NCj4gPiArICAgICAgICAgICAgIHhzZGlyeHNzLT52aXBfZm9ybWF0ID0gZm9ybWF0Ow0K PiA+ICsNCj4gPiArICAgICAgICAgICAgIGVuZHBvaW50ID0gb2ZfZ2V0X25leHRfY2hpbGQocG9y dCwgTlVMTCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoIWVuZHBvaW50KSB7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIGRldl9lcnIoY29yZS0+ZGV2LCAiTm8gcG9ydCBhdFxuIik7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAg fQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgcG9ydHMu ICovDQo+ID4gKyAgICAgICAgICAgICBucG9ydHMrKzsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgIGlmIChucG9ydHMgIT0gMSkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vycihjb3Jl LT5kZXYsICJpbnZhbGlkIG51bWJlciBvZiBwb3J0cyAldVxuIiwgbnBvcnRzKTsNCj4gPiArICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg LyogUmVnaXN0ZXIgaW50ZXJydXB0IGhhbmRsZXIgKi8NCj4gPiArICAgICBjb3JlLT5pcnEgPSBp cnFfb2ZfcGFyc2VfYW5kX21hcChub2RlLCAwKTsNCj4gPiArDQo+ID4gKyAgICAgcmV0ID0gZGV2 bV9yZXF1ZXN0X2lycShjb3JlLT5kZXYsIGNvcmUtPmlycSwgeHNkaXJ4c3NfaXJxX2hhbmRsZXIs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlFGX1NIQVJFRCwgInhpbGlueC1z ZGlyeHNzIiwgeHNkaXJ4c3MpOw0KPiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAg ICAgIGRldl9lcnIoY29yZS0+ZGV2LCAiRXJyID0gJWQgSW50ZXJydXB0IGhhbmRsZXIgcmVnIGZh aWxlZCFcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldCk7DQo+ID4gKyAgICAgICAg ICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgeHNkaXJ4c3NfcHJvYmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikNCj4gPiArew0KPiA+ICsgICAgIHN0cnVjdCB2NGwyX3N1YmRl diAqc3ViZGV2Ow0KPiA+ICsgICAgIHN0cnVjdCB4c2Rpcnhzc19zdGF0ZSAqeHNkaXJ4c3M7DQo+ ID4gKyAgICAgc3RydWN0IHhzZGlyeHNzX2NvcmUgKmNvcmU7DQo+ID4gKyAgICAgc3RydWN0IHJl c291cmNlICpyZXM7DQo+ID4gKyAgICAgaW50IHJldDsNCj4gPiArICAgICB1bnNpZ25lZCBpbnQg bnVtX2N0cmxzLCBudW1fZWRoX2N0cmxzID0gMCwgaTsNCj4gPiArDQo+ID4gKyAgICAgeHNkaXJ4 c3MgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCp4c2RpcnhzcyksIEdGUF9LRVJO RUwpOw0KPiA+ICsgICAgIGlmICgheHNkaXJ4c3MpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g LUVOT01FTTsNCj4gPiArDQo+ID4gKyAgICAgeHNkaXJ4c3MtPmNvcmUuZGV2ID0gJnBkZXYtPmRl djsNCj4gPiArICAgICBjb3JlID0gJnhzZGlyeHNzLT5jb3JlOw0KPiA+ICsNCj4gPiArICAgICBj b3JlLT5heGlfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJzX2F4aV9hY2xrIik7DQo+ ID4gKyAgICAgaWYgKElTX0VSUihjb3JlLT5heGlfY2xrKSkgew0KPiA+ICsgICAgICAgICAgICAg cmV0ID0gUFRSX0VSUihjb3JlLT5heGlfY2xrKTsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIo JnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgc19heGlfY2xrICglZClcbiIsIHJldCk7DQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg Y29yZS0+c2RpcnhfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJzZGlfcnhfY2xrIik7 DQo+ID4gKyAgICAgaWYgKElTX0VSUihjb3JlLT5zZGlyeF9jbGspKSB7DQo+ID4gKyAgICAgICAg ICAgICByZXQgPSBQVFJfRVJSKGNvcmUtPnNkaXJ4X2Nsayk7DQo+ID4gKyAgICAgICAgICAgICBk ZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHNkaV9yeF9jbGsgKCVkKVxuIiwgcmV0 KTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4g PiArICAgICBjb3JlLT52aWRvdXRfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJ2aWRl b19vdXRfY2xrIik7DQo+ID4gKyAgICAgaWYgKElTX0VSUihjb3JlLT52aWRvdXRfY2xrKSkgew0K PiA+ICsgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihjb3JlLT52aWRvdXRfY2xrKTsNCj4gPiAr ICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgdmlkZW9fb3V0 X2FjbGsgKCVkKVxuIiwgcmV0KTsNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4g KyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoY29yZS0+ YXhpX2Nsayk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vy cigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBheGlfY2xrICglZClcbiIsIHJldCk7DQo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNvcmUtPnNkaXJ4X2Nsayk7DQo+ID4gKyAgICAg aWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVk IHRvIGVuYWJsZSBzZGlyeF9jbGsgKCVkKVxuIiwgcmV0KTsNCj4gPiArICAgICAgICAgICAgIGdv dG8gcnhfY2xrX2VycjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGNsa19w cmVwYXJlX2VuYWJsZShjb3JlLT52aWRvdXRfY2xrKTsNCj4gPiArICAgICBpZiAocmV0KSB7DQo+ ID4gKyAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIHZp ZG91dF9jbGsgKCVkKVxuIiwgcmV0KTsNCj4gPiArICAgICAgICAgICAgIGdvdG8gdmlkb3V0X2Ns a19lcnI7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXQgPSB4c2Rpcnhzc19wYXJz ZV9vZih4c2Rpcnhzcyk7DQo+ID4gKyAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAg ICBnb3RvIGNsa19lcnI7DQo+ID4gKw0KPiA+ICsgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNv dXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4gKyAgICAgeHNkaXJ4c3MtPmNvcmUu aW9tZW0gPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoeHNkaXJ4c3MtPmNvcmUuZGV2LCByZXMpOw0K PiA+ICsgICAgIGlmIChJU19FUlIoeHNkaXJ4c3MtPmNvcmUuaW9tZW0pKSB7DQo+ID4gKyAgICAg ICAgICAgICByZXQgPSBQVFJfRVJSKHhzZGlyeHNzLT5jb3JlLmlvbWVtKTsNCj4gPiArICAgICAg ICAgICAgIGdvdG8gY2xrX2VycjsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIFJl c2V0IHRoZSBjb3JlICovDQo+ID4gKyAgICAgeHNkaXJ4X3N0cmVhbWZsb3dfY29udHJvbChjb3Jl LCBmYWxzZSk7DQo+ID4gKyAgICAgeHNkaXJ4X2NvcmVfZGlzYWJsZShjb3JlKTsNCj4gPiArICAg ICB4c2RpcnhfY2xlYXJpbnRyKGNvcmUsIFhTRElSWF9JTlRSX0FMTF9NQVNLKTsNCj4gPiArICAg ICB4c2RpcnhfZGlzYWJsZWludHIoY29yZSwgWFNESVJYX0lOVFJfQUxMX01BU0spOw0KPiA+ICsg ICAgIHhzZGlyeF9lbmFibGVpbnRyKGNvcmUsIFhTRElSWF9JTlRSX0FMTF9NQVNLKTsNCj4gPiAr ICAgICB4c2RpcnhfZ2xvYmFsaW50cihjb3JlLCB0cnVlKTsNCj4gPiArICAgICB4c2Rpcnhzc193 cml0ZShjb3JlLCBYU0RJUlhfQ1JDX0VSUkNOVF9SRUcsIDB4RkZGRik7DQo+ID4gKw0KPiA+ICsg ICAgIC8qIEluaXRpYWxpemUgVjRMMiBzdWJkZXZpY2UgYW5kIG1lZGlhIGVudGl0eSAqLw0KPiA+ ICsgICAgIHhzZGlyeHNzLT5wYWRzWzBdLmZsYWdzID0gTUVESUFfUEFEX0ZMX1NPVVJDRTsNCj4g PiArDQo+ID4gKyAgICAgLyogSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBmb3JtYXQgKi8NCj4gPiAr ICAgICB4c2Rpcnhzcy0+ZGVmYXVsdF9mb3JtYXQuY29kZSA9IHhzZGlyeHNzLT52aXBfZm9ybWF0 LT5jb2RlOw0KPiA+ICsgICAgIHhzZGlyeHNzLT5kZWZhdWx0X2Zvcm1hdC5maWVsZCA9IFY0TDJf RklFTERfTk9ORTsNCj4gPiArICAgICB4c2Rpcnhzcy0+ZGVmYXVsdF9mb3JtYXQuY29sb3JzcGFj ZSA9IFY0TDJfQ09MT1JTUEFDRV9ERUZBVUxUOw0KPiA+ICsgICAgIHhzZGlyeHNzLT5kZWZhdWx0 X2Zvcm1hdC53aWR0aCA9IFhTRElSWF9ERUZBVUxUX1dJRFRIOw0KPiA+ICsgICAgIHhzZGlyeHNz LT5kZWZhdWx0X2Zvcm1hdC5oZWlnaHQgPSBYU0RJUlhfREVGQVVMVF9IRUlHSFQ7DQo+ID4gKw0K PiA+ICsgICAgIHhzZGlyeHNzLT5mb3JtYXRzWzBdID0geHNkaXJ4c3MtPmRlZmF1bHRfZm9ybWF0 Ow0KPiA+ICsNCj4gPiArICAgICAvKiBJbml0aWFsaXplIFY0TDIgc3ViZGV2aWNlIGFuZCBtZWRp YSBlbnRpdHkgKi8NCj4gPiArICAgICBzdWJkZXYgPSAmeHNkaXJ4c3MtPnN1YmRldjsNCj4gPiAr ICAgICB2NGwyX3N1YmRldl9pbml0KHN1YmRldiwgJnhzZGlyeHNzX29wcyk7DQo+ID4gKw0KPiA+ ICsgICAgIHN1YmRldi0+ZGV2ID0gJnBkZXYtPmRldjsNCj4gPiArICAgICBzdWJkZXYtPmludGVy bmFsX29wcyA9ICZ4c2Rpcnhzc19pbnRlcm5hbF9vcHM7DQo+ID4gKyAgICAgc3RybGNweShzdWJk ZXYtPm5hbWUsIGRldl9uYW1lKCZwZGV2LT5kZXYpLCBzaXplb2Yoc3ViZGV2LT5uYW1lKSk7DQo+ IA0KPiBVc2Ugc3Ryc2NweS4NCj4gDQoNCk9rLiBJIHdpbGwgZml4IHRoaXMgaW4gdjIuDQoNCj4g PiArDQo+ID4gKyAgICAgc3ViZGV2LT5mbGFncyB8PSBWNEwyX1NVQkRFVl9GTF9IQVNfRVZFTlRT IHwNCj4gVjRMMl9TVUJERVZfRkxfSEFTX0RFVk5PREU7DQo+ID4gKw0KPiA+ICsgICAgIHN1YmRl di0+ZW50aXR5Lm9wcyA9ICZ4c2Rpcnhzc19tZWRpYV9vcHM7DQo+ID4gKw0KPiA+ICsgICAgIHY0 bDJfc2V0X3N1YmRldmRhdGEoc3ViZGV2LCB4c2Rpcnhzcyk7DQo+ID4gKw0KPiA+ICsgICAgIHJl dCA9IG1lZGlhX2VudGl0eV9wYWRzX2luaXQoJnN1YmRldi0+ZW50aXR5LCAxLCB4c2Rpcnhzcy0+ cGFkcyk7DQo+ID4gKyAgICAgaWYgKHJldCA8IDApDQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVy cm9yOw0KPiA+ICsNCj4gPiArICAgICAvKiBJbml0aWFsaXNlIGFuZCByZWdpc3RlciB0aGUgY29u dHJvbHMgKi8NCj4gPiArICAgICBudW1fY3RybHMgPSBBUlJBWV9TSVpFKHhzZGlyeHNzX2N0cmxz KTsNCj4gPiArDQo+ID4gKyAgICAgaWYgKHhzZGlyeHNzLT5jb3JlLmluY2x1ZGVfZWRoKQ0KPiA+ ICsgICAgICAgICAgICAgbnVtX2VkaF9jdHJscyA9IEFSUkFZX1NJWkUoeHNkaXJ4c3NfZWRoX2N0 cmxzKTsNCj4gPiArDQo+ID4gKyAgICAgdjRsMl9jdHJsX2hhbmRsZXJfaW5pdCgmeHNkaXJ4c3Mt PmN0cmxfaGFuZGxlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudW1fY3Ry bHMgKyBudW1fZWRoX2N0cmxzKSk7DQo+ID4gKw0KPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBu dW1fY3RybHM7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgc3RydWN0IHY0bDJfY3RybCAqY3Ry bDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICBkZXZfZGJnKHhzZGlyeHNzLT5jb3JlLmRldiwg IiVkICVzIGN0cmwgPSAweCV4XG4iLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpLCB4c2Rp cnhzc19jdHJsc1tpXS5uYW1lLCB4c2Rpcnhzc19jdHJsc1tpXS5pZCk7DQo+ID4gKw0KPiA+ICsg ICAgICAgICAgICAgY3RybCA9IHY0bDJfY3RybF9uZXdfY3VzdG9tKCZ4c2Rpcnhzcy0+Y3RybF9o YW5kbGVyLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4 c2Rpcnhzc19jdHJsc1tpXSwgTlVMTCk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoIWN0cmwpIHsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyh4c2Rpcnhzcy0+Y29yZS5kZXYsICJG YWlsZWQgdG8gYWRkICVzIGN0cmxcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeHNkaXJ4c3NfY3RybHNbaV0ubmFtZSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXJyb3I7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICBpZiAoeHNkaXJ4c3MtPmNvcmUuaW5jbHVkZV9lZGgpIHsNCj4gPiArICAgICAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBudW1fZWRoX2N0cmxzOyBpKyspIHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHY0bDJfY3RybCAqY3RybDsNCj4gPiArDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGRldl9kYmcoeHNkaXJ4c3MtPmNvcmUuZGV2LCAiJWQgJXMgY3RybCA9IDB4JXhc biIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgeHNkaXJ4c3NfZWRoX2N0 cmxzW2ldLm5hbWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHNkaXJ4c3Nf ZWRoX2N0cmxzW2ldLmlkKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGN0cmwg PSB2NGwyX2N0cmxfbmV3X2N1c3RvbSgmeHNkaXJ4c3MtPmN0cmxfaGFuZGxlciwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4c2Rpcnhzc19l ZGhfY3RybHNbaV0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdHJsKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2RiZyh4c2Rpcnhzcy0+Y29y ZS5kZXYsICJGYWlsZWQgdG8gYWRkICVzIGN0cmxcbiIsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4c2Rpcnhzc19lZGhfY3RybHNbaV0ubmFtZSk7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgIH0gZWxzZSB7DQo+ID4g KyAgICAgICAgICAgICBkZXZfZGJnKHhzZGlyeHNzLT5jb3JlLmRldiwgIk5vdCByZWdpc3Rlcmlu ZyB0aGUgRURIIGNvbnRyb2xzIGFzDQo+IEVESCBpcyBkaXNhYmxlZCBpbiBJUFxuIik7DQo+ID4g KyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBpZiAoeHNkaXJ4c3MtPmN0cmxfaGFuZGxlci5lcnJv cikgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFk ZCBjb250cm9sc1xuIik7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSB4c2Rpcnhzcy0+Y3RybF9o YW5kbGVyLmVycm9yOw0KPiA+ICsgICAgICAgICAgICAgZ290byBlcnJvcjsNCj4gPiArICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgIHN1YmRldi0+Y3RybF9oYW5kbGVyID0gJnhzZGlyeHNzLT5jdHJs X2hhbmRsZXI7DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IHY0bDJfY3RybF9oYW5kbGVyX3NldHVw KCZ4c2Rpcnhzcy0+Y3RybF9oYW5kbGVyKTsNCj4gPiArICAgICBpZiAocmV0IDwgMCkgew0KPiA+ ICsgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHNldCBjb250cm9s c1xuIik7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycm9yOw0KPiA+ICsgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgeHNkaXJ4c3MpOw0KPiA+ICsN Cj4gPiArICAgICByZXQgPSB2NGwyX2FzeW5jX3JlZ2lzdGVyX3N1YmRldihzdWJkZXYpOw0KPiA+ ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5k ZXYsICJmYWlsZWQgdG8gcmVnaXN0ZXIgc3ViZGV2XG4iKTsNCj4gPiArICAgICAgICAgICAgIGdv dG8gZXJyb3I7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICB4c2Rpcnhzcy0+c3RyZWFt aW5nID0gZmFsc2U7DQo+ID4gKw0KPiA+ICsgICAgIGRldl9pbmZvKHhzZGlyeHNzLT5jb3JlLmRl diwgIlhpbGlueCBTREkgUnggU3Vic3lzdGVtIGRldmljZSBmb3VuZCFcbiIpOw0KPiA+ICsNCj4g PiArICAgICB4c2RpcnhfY29yZV9lbmFibGUoY29yZSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVy biAwOw0KPiA+ICtlcnJvcjoNCj4gPiArICAgICB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZ4c2Rp cnhzcy0+Y3RybF9oYW5kbGVyKTsNCj4gPiArICAgICBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc3Vi ZGV2LT5lbnRpdHkpOw0KPiA+ICsNCj4gPiArY2xrX2VycjoNCj4gPiArICAgICBjbGtfZGlzYWJs ZV91bnByZXBhcmUoY29yZS0+dmlkb3V0X2Nsayk7DQo+ID4gK3ZpZG91dF9jbGtfZXJyOg0KPiA+ ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjb3JlLT5zZGlyeF9jbGspOw0KPiA+ICtyeF9j bGtfZXJyOg0KPiA+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShjb3JlLT5heGlfY2xrKTsN Cj4gPiArICAgICByZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHhz ZGlyeHNzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICt7DQo+ID4g KyAgICAgc3RydWN0IHhzZGlyeHNzX3N0YXRlICp4c2RpcnhzcyA9IHBsYXRmb3JtX2dldF9kcnZk YXRhKHBkZXYpOw0KPiA+ICsgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAqc3ViZGV2ID0gJnhzZGly eHNzLT5zdWJkZXY7DQo+ID4gKw0KPiA+ICsgICAgIHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJk ZXYoc3ViZGV2KTsNCj4gPiArICAgICB2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZ4c2Rpcnhzcy0+ Y3RybF9oYW5kbGVyKTsNCj4gPiArICAgICBtZWRpYV9lbnRpdHlfY2xlYW51cCgmc3ViZGV2LT5l bnRpdHkpOw0KPiA+ICsgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZSh4c2Rpcnhzcy0+Y29yZS52 aWRvdXRfY2xrKTsNCj4gPiArICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoeHNkaXJ4c3MtPmNv cmUuc2RpcnhfY2xrKTsNCj4gPiArICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoeHNkaXJ4c3Mt PmNvcmUuYXhpX2Nsayk7DQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHhzZGlyeHNzX29mX2lkX3RhYmxlW10g PSB7DQo+ID4gKyAgICAgeyAuY29tcGF0aWJsZSA9ICJ4bG54LHYtc21wdGUtdWhkc2RpLXJ4LXNz IiB9LA0KPiA+ICsgICAgIHsgfQ0KPiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCB4c2Rpcnhzc19vZl9pZF90YWJsZSk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRm b3JtX2RyaXZlciB4c2Rpcnhzc19kcml2ZXIgPSB7DQo+ID4gKyAgICAgLmRyaXZlciA9IHsNCj4g PiArICAgICAgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJ4aWxpbngtc2RpcnhzcyIsDQo+ID4g KyAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSB4c2Rpcnhzc19vZl9pZF90YWJsZSwNCj4g PiArICAgICB9LA0KPiA+ICsgICAgIC5wcm9iZSAgICAgICAgICAgICAgICAgID0geHNkaXJ4c3Nf cHJvYmUsDQo+ID4gKyAgICAgLnJlbW92ZSAgICAgICAgICAgICAgICAgPSB4c2Rpcnhzc19yZW1v dmUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHhzZGlyeHNz X2RyaXZlcik7DQo+ID4gKw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJWaXNoYWwgU2FnYXIgPHZzYWdh ckB4aWxpbnguY29tPiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlhpbGlueCBTREkgUngg U3Vic3lzdGVtIERyaXZlciIpOw0KPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7DQo+ID4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC94aWxpbngtc2Rpcnhzcy5oIGIvaW5jbHVk ZS91YXBpL2xpbnV4L3hpbGlueC0NCj4gc2Rpcnhzcy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPiBpbmRleCAwMDAwMDAwLi45ODNhNDNiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsr KyBiL2luY2x1ZGUvdWFwaS9saW51eC94aWxpbngtc2Rpcnhzcy5oDQo+ID4gQEAgLTAsMCArMSw2 MyBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPiA+ICsv Kg0KPiA+ICsgKiBYaWxpbnggU0RJIFJ4IFN1YnN5c3RlbSBtb2RlIGFuZCBmbGFnIGRlZmluaXRp b25zLg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgWGlsaW54LCBJbmMuDQo+ ID4gKyAqDQo+ID4gKyAqIENvbnRhY3RzOiBWaXNoYWwgU2FnYXIgPHZpc2hhbC5zYWdhckB4aWxp bnguY29tPg0KPiA+ICsgKg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19VQVBJX1hJ TElOWF9TRElSWFNTX0hfXw0KPiA+ICsjZGVmaW5lIF9fVUFQSV9YSUxJTlhfU0RJUlhTU19IX18N Cj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvdmlkZW9kZXYyLmg+DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBUaGlzIGVudW0gaXMgdXNl ZCB0byBwcmVwYXJlIHRoZSBiaXRtYXNrIG9mIG1vZGVzIHRvIGJlIGRldGVjdGVkDQo+ID4gKyAq Lw0KPiA+ICtlbnVtIHsNCj4gPiArICAgICBYU0RJUlhfTU9ERV9TRF9PRkZTRVQgPSAwLA0KPiA+ ICsgICAgIFhTRElSWF9NT0RFX0hEX09GRlNFVCwNCj4gPiArICAgICBYU0RJUlhfTU9ERV8zR19P RkZTRVQsDQo+ID4gKyAgICAgWFNESVJYX01PREVfNkdfT0ZGU0VULA0KPiA+ICsgICAgIFhTRElS WF9NT0RFXzEyR0lfT0ZGU0VULA0KPiA+ICsgICAgIFhTRElSWF9NT0RFXzEyR0ZfT0ZGU0VULA0K PiA+ICsgICAgIFhTRElSWF9NT0RFX05VTV9TVVBQT1JURUQsDQo+ID4gK307DQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFhTRElSWF9ERVRFQ1RfQUxMX01PREVTDQo+IChCSVQoWFNESVJYX01PREVfU0Rf T0ZGU0VUKSB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJ VChYU0RJUlhfTU9ERV9IRF9PRkZTRVQpIHwgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQklUKFhTRElSWF9NT0RFXzNHX09GRlNFVCkgfCBcDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoWFNESVJYX01PREVfNkdfT0ZGU0VU KSB8IFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVChYU0RJ UlhfTU9ERV8xMkdJX09GRlNFVCkgfCBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCSVQoWFNESVJYX01PREVfMTJHRl9PRkZTRVQpKQ0KPiA+ICsNCj4gPiArLyoN Cj4gPiArICogRURIIEVycm9yIFR5cGVzDQo+ID4gKyAqIEFOQyAtIEFuY2lsbGFyeSBEYXRhIFBh Y2tldCBFcnJvcnMNCj4gPiArICogRkYgLSBGdWxsIEZpZWxkIEVycm9ycw0KPiA+ICsgKiBBUCAt IEFjdGl2ZSBQb3J0aW9uIEVycm9ycw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNkZWZpbmUgWFNE SVJYX0VESF9FUlJDTlRfQU5DX0VESF9FUlIgICAgICAgICAgICAgICAgQklUKDApDQo+ID4gKyNk ZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQU5DX0VEQV9FUlIgICAgICAgICAgICAgICAgQklUKDEp DQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQU5DX0lESF9FUlIgICAgICAgICAgICAg ICAgQklUKDIpDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQU5DX0lEQV9FUlIgICAg ICAgICAgICAgICAgQklUKDMpDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJDTlRfQU5DX1VF U19FUlIgICAgICAgICAgICAgICAgQklUKDQpDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9FUlJD TlRfRkZfRURIX0VSUiAgICAgICAgIEJJVCg1KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhfRVJS Q05UX0ZGX0VEQV9FUlIgICAgICAgICBCSVQoNikNCj4gPiArI2RlZmluZSBYU0RJUlhfRURIX0VS UkNOVF9GRl9JREhfRVJSICAgICAgICAgQklUKDcpDQo+ID4gKyNkZWZpbmUgWFNESVJYX0VESF9F UlJDTlRfRkZfSURBX0VSUiAgICAgICAgIEJJVCg4KQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9FREhf RVJSQ05UX0ZGX1VFU19FUlIgICAgICAgICBCSVQoOSkNCj4gPiArI2RlZmluZSBYU0RJUlhfRURI X0VSUkNOVF9BUF9FREhfRVJSICAgICAgICAgQklUKDEwKQ0KPiA+ICsjZGVmaW5lIFhTRElSWF9F REhfRVJSQ05UX0FQX0VEQV9FUlIgICAgICAgICBCSVQoMTEpDQo+ID4gKyNkZWZpbmUgWFNESVJY X0VESF9FUlJDTlRfQVBfSURIX0VSUiAgICAgICAgIEJJVCgxMikNCj4gPiArI2RlZmluZSBYU0RJ UlhfRURIX0VSUkNOVF9BUF9JREFfRVJSICAgICAgICAgQklUKDEzKQ0KPiA+ICsjZGVmaW5lIFhT RElSWF9FREhfRVJSQ05UX0FQX1VFU19FUlIgICAgICAgICBCSVQoMTQpDQo+ID4gKyNkZWZpbmUg WFNESVJYX0VESF9FUlJDTlRfUEtUX0NIS1NVTV9FUlIgICAgIEJJVCgxNSkNCj4gPiArDQo+ID4g KyNkZWZpbmUgWFNESVJYX0VESF9BTExFUlJfTUFTSyAgICAgICAgICAgICAgIDB4RkZGRg0KPiA+ ICsNCj4gPiArI2VuZGlmIC8qIF9fVUFQSV9YSUxJTlhfU0RJUlhTU19IX18gKi8NCj4gPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3hpbGlueC12NGwyLWNvbnRyb2xzLmgNCj4gYi9p bmNsdWRlL3VhcGkvbGludXgveGlsaW54LXY0bDItY29udHJvbHMuaA0KPiA+IGluZGV4IGYwMjM2 MjMuLjRjNjhhMTAgMTAwNjQ0DQo+ID4gLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3hpbGlueC12 NGwyLWNvbnRyb2xzLmgNCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgveGlsaW54LXY0bDIt Y29udHJvbHMuaA0KPiA+IEBAIC04Myw0ICs4MywzNCBAQA0KPiA+ICAvKiBSZXNldCBhbGwgZXZl bnQgY291bnRlcnMgKi8NCj4gPiAgI2RlZmluZSBWNEwyX0NJRF9YSUxJTlhfTUlQSUNTSVNTX1JF U0VUX0NPVU5URVJTDQo+IChWNEwyX0NJRF9YSUxJTlhfTUlQSUNTSVNTICsgMikNCj4gPg0KPiA+ ICsvKg0KPiA+ICsgKiBYaWxpbnggU0RJIFJ4IFN1YnN5c3RlbQ0KPiA+ICsgKi8NCj4gPiArDQo+ ID4gKy8qIEJhc2UgSUQgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJRF9YSUxJTlhfU0RJUlggICAg ICAgICAgICAgICAgICAgICAgICAoVjRMMl9DSURfVVNFUl9CQVNFICsNCj4gMHhjMTAwKQ0KPiA+ ICsNCj4gPiArLyogRnJhbWVyIENvbnRyb2wgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJRF9YSUxJ TlhfU0RJUlhfRlJBTUVSICAgICAgICAgKFY0TDJfQ0lEX1hJTElOWF9TRElSWCArIDEpDQo+ID4g Ky8qIFZpZGVvIExvY2sgV2luZG93IENvbnRyb2wgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJRF9Y SUxJTlhfU0RJUlhfVklETE9DS19XSU5ET1cNCj4gKFY0TDJfQ0lEX1hJTElOWF9TRElSWCArIDIp DQo+ID4gKy8qIEVESCBFcnJvciBNYXNrIENvbnRyb2wgKi8NCj4gPiArI2RlZmluZSBWNEwyX0NJ RF9YSUxJTlhfU0RJUlhfRURIX0VSUkNOVF9FTkFCTEUNCj4gKFY0TDJfQ0lEX1hJTElOWF9TRElS WCArIDMpDQo+ID4gKy8qIE1vZGUgc2VhcmNoIENvbnRyb2wgKi8NCj4gPiArI2RlZmluZSBWNEwy X0NJRF9YSUxJTlhfU0RJUlhfU0VBUkNIX01PREVTDQo+IChWNEwyX0NJRF9YSUxJTlhfU0RJUlgg KyA0KQ0KPiA+ICsvKiBHZXQgRGV0ZWN0ZWQgTW9kZSBjb250cm9sICovDQo+ID4gKyNkZWZpbmUg VjRMMl9DSURfWElMSU5YX1NESVJYX01PREVfREVURUNUICAgIChWNEwyX0NJRF9YSUxJTlhfU0RJ UlgNCj4gKyA1KQ0KPiA+ICsvKiBHZXQgQ1JDIGVycm9yIHN0YXR1cyAqLw0KPiA+ICsjZGVmaW5l IFY0TDJfQ0lEX1hJTElOWF9TRElSWF9DUkMgICAgICAgICAgICAoVjRMMl9DSURfWElMSU5YX1NE SVJYICsgNikNCj4gPiArLyogR2V0IEVESCBlcnJvciBjb3VudCBjb250cm9sICovDQo+ID4gKyNk ZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX0VESF9FUlJDTlQgICAgIChWNEwyX0NJRF9YSUxJ TlhfU0RJUlggKw0KPiA3KQ0KPiA+ICsvKiBHZXQgRURIIHN0YXR1cyBjb250cm9sICovDQo+ID4g KyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX0VESF9TVEFUVVMgICAgIChWNEwyX0NJRF9Y SUxJTlhfU0RJUlggKw0KPiA4KQ0KPiA+ICsvKiBHZXQgVHJhbnNwb3J0IEludGVybGFjZWQgc3Rh dHVzICovDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX1RTX0lTX0lOVEVSTEFD RUQNCj4gKFY0TDJfQ0lEX1hJTElOWF9TRElSWCArIDkpDQo+ID4gKy8qIEdldCBBY3RpdmUgU3Ry ZWFtcyBjb3VudCAqLw0KPiA+ICsjZGVmaW5lIFY0TDJfQ0lEX1hJTElOWF9TRElSWF9BQ1RJVkVf U1RSRUFNUw0KPiAoVjRMMl9DSURfWElMSU5YX1NESVJYICsgMTApDQo+ID4gKy8qIElzIE1vZGUg M0dCICovDQo+ID4gKyNkZWZpbmUgVjRMMl9DSURfWElMSU5YX1NESVJYX0lTXzNHQiAgICAgICAg IChWNEwyX0NJRF9YSUxJTlhfU0RJUlggKyAxMSkNCj4gPiArDQo+ID4gICNlbmRpZiAvKiBfX1VB UElfWElMSU5YX1Y0TDJfQ09OVFJPTFNfSF9fICovDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv dWFwaS9saW51eC94aWxpbngtdjRsMi1ldmVudHMuaCBiL2luY2x1ZGUvdWFwaS9saW51eC94aWxp bngtDQo+IHY0bDItZXZlbnRzLmgNCj4gPiBpbmRleCAyYWEzNTdjLi43YjQ3NTk1IDEwMDY0NA0K PiA+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC94aWxpbngtdjRsMi1ldmVudHMuaA0KPiA+ICsr KyBiL2luY2x1ZGUvdWFwaS9saW51eC94aWxpbngtdjRsMi1ldmVudHMuaA0KPiA+IEBAIC0xOCw0 ICsxOCwxMyBAQA0KPiA+ICAvKiBTdHJlYW0gTGluZSBCdWZmZXIgZnVsbCAqLw0KPiA+ICAjZGVm aW5lIFY0TDJfRVZFTlRfWExOWENTSVJYX1NMQkYgICAgKFY0TDJfRVZFTlRfWExOWENTSVJYX0NM QVNTIHwNCj4gMHgxKQ0KPiA+DQo+ID4gKy8qIFhpbGlueCBTTVBURSBVSEQtU0RJIFJYIFN1YnN5 c3RlbSAqLw0KPiA+ICsjZGVmaW5lIFY0TDJfRVZFTlRfWExOWFNESVJYX0NMQVNTICAgKFY0TDJf RVZFTlRfUFJJVkFURV9TVEFSVCB8DQo+IDB4MjAwKQ0KPiA+ICsvKiBWaWRlbyBVbmxvY2sgZXZl bnQgKi8NCj4gPiArI2RlZmluZSBWNEwyX0VWRU5UX1hMTlhTRElSWF9WSURVTkxPQ0sNCj4gKFY0 TDJfRVZFTlRfWExOWFNESVJYX0NMQVNTIHwgMHgxKQ0KPiA+ICsvKiBWaWRlbyBpbiB0byBBWEk0 IFN0cmVhbSBjb3JlIHVuZGVyZmxvd2VkICovDQo+ID4gKyNkZWZpbmUgVjRMMl9FVkVOVF9YTE5Y U0RJUlhfVU5ERVJGTE9XDQo+IChWNEwyX0VWRU5UX1hMTlhTRElSWF9DTEFTUyB8IDB4MikNCj4g PiArLyogVmlkZW8gaW4gdG8gQVhJNCBTdHJlYW0gY29yZSBvdmVyZmxvd2VkICovDQo+ID4gKyNk ZWZpbmUgVjRMMl9FVkVOVF9YTE5YU0RJUlhfT1ZFUkZMT1cNCj4gKFY0TDJfRVZFTlRfWExOWFNE SVJYX0NMQVNTIHwgMHgzKQ0KPiA+ICsNCj4gPiAgI2VuZGlmIC8qIF9fVUFQSV9YSUxJTlhfVjRM Ml9FVkVOVFNfSF9fICovDQo+ID4NCj4gDQo+IEkgYW0gY29uY2VybmVkIGFib3V0IHRoaXMgZHJp dmVyOiBJIHNlZSB0aGF0IG5vbmUgb2YgdGhlICpfZHZfdGltaW5ncyBjYWxsYmFja3MNCj4gYXJl IGltcGxlbWVudGVkLiBJIHdvdWxkIGV4cGVjdCB0byBzZWUgdGhhdCBmb3IgYSB2aWRlbyByZWNl aXZlci4gVGhlcmUgaXMgYWxzbw0KPiBubyBnX2lucHV0X3N0YXR1cyBpbXBsZW1lbnRlZC4NCj4g DQo+IFRha2UgYSBsb29rIGF0IGFub3RoZXIgU0RJIGRyaXZlcjogZHJpdmVycy9tZWRpYS9zcGkv Z3MxNjYyLmMNCj4gDQoNCkkgaGFkIGEgbG9vayBhdCB0aGUgZ3MxNjYyIGRyaXZlciBmb3IgdGhl IGR2X3RpbWluZ3MgY2FsbGJhY2tzLiBUaGUgZ3MxNjYyIGRyaXZlcg0KcmVxdWlyZXMgdGhlIHRp bWluZ3MgYmVjYXVzZSBpdCBpcyBhIFNESSBUcmFuc21pdHRlci4gDQoNCkhlcmUgdGhlIHRpbWlu Z3MgYXJlIG5vdCByZXF1aXJlZCBhcyB0aGUgSVAgYmxvY2sgZ2VuZXJhdGVzIGEgQVhJNCBTdHJl YW0uDQpJIHRoaW5rIGl0IG1heSBiZSByZXF1aXJlZCBvbmx5IGluIGNhc2Ugb2YgbmF0aXZlIC8g cGFyYWxsZWwgdmlkZW8gYmVpbmcgb3V0cHV0dGVkDQphcyB0aGUgb3V0cHV0IHN0cmVhbSBuZWVk cyB0aW1pbmcgaW5mb3JtYXRpb24gdG8gYmUgZGVjb2RlZC4NCg0KUGxlYXNlIGZlZWwgZnJlZSB0 byBjb3JyZWN0IG15IHVuZGVyc3RhbmRpbmcgaWYgd3JvbmcuDQoNCkluIHRoZSBjdXJyZW50IGRy aXZlciwgdGhlIGlucHV0IHN0cmVhbSBwcm9wZXJ0aWVzIGxpa2Ugd2lkdGgsIGhlaWdodCwgZnJh bWUgcmF0ZSwNCnByb2dyZXNzaXZlL2ludGVybGFjZWQgIGFyZSBkZXRlcm1pbmVkIGZyb20gdGhl IFNUMzUyIHBhY2tldCBwYXlsb2FkIG9yIGZyb20gdGhlDQpwcm9wZXJ0aWVzIGRldGVjdGVkIGJ5 IHRoZSBjb3JlLg0KDQpTZWUgdGhlIHhzZGlyeF9nZXRfc3RyZWFtX3Byb3BlcnRpZXMoKSBmb3Ig ZGV0YWlscy4NCg0KPiBTb21lIG9mIHRoZSBjb250cm9scyB5b3UgYWRkIGluIHRoaXMgZHJpdmVy IGNhbiBsaWtlbHkgYmUgZHJvcHBlZC4gRXNwZWNpYWxseQ0KPiB0aG9zZSBjb250cm9scyB0aGF0 IGFyZSBub3Qgc3BlY2lmaWMgdG8gdGhlIFhpbGlueCBpbXBsZW1lbnRhdGlvbiBidXQgYXJlDQo+ IGdlbmVyaWMgZm9yIGFueSBTREkgcmVjZWl2ZXIsIHNob3VsZCBiZSBsb29rZWQgYXQgY2xvc2Vs eTogdGhvc2UgYXJlDQo+IGNhbmRpZGF0ZXMgZm9yIGJlY29taW5nIHN0YW5kYXJkIGNvbnRyb2xz Lg0KDQpJIGRvbid0IGtub3cgaG93IG90aGVyIFNESSBSZWNlaXZlciBkZXZpY2VzIGZ1bmN0aW9u Lg0KU28gSSBhbSBhc3N1bWluZyBhbGwgdGhlc2UgY29udHJvbHMgYXJlIFhpbGlueCBzcGVjaWZp YyBpbXBsZW1lbnRhdGlvbnMuDQoNCj4gDQo+IEJ1dCB0aGUgZG9jdW1lbnRhdGlvbiBhYm92ZSBp cyBzaW1wbHkgaW5zdWZmaWNpZW50IGZvciBtZSB0byB0ZWxsIHdoYXQgaXMNCj4gU0RJIHNwZWNp ZmljIGFuZCB3aGF0IGlzIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLg0KPiANCg0KSSB3aWxsIGFk ZCBtb3JlIGRvY3VtZW50YXRpb24gZm9yIHRoZXNlIGNvbnRyb2xzLg0KDQo+IEFsc28sIEknbSBu byBTREkgZXhwZXJ0LCBjZXJ0YWlubHkgbm90IGZvciB0aGUgVUhELVNESS4NCj4gDQo+IFJlZ2Fy ZHMsDQo+IA0KPiAgICAgICAgIEhhbnMNCg0KUmVnYXJkcw0KVmlzaGFsIFNhZ2FyDQo=