Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp814357ybt; Tue, 7 Jul 2020 00:34:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhGW+N+4WT8PiwtrVFaTmy37pAskDBGQA+0QKppRTQSK/Mmpbt4TWFa9Iat7jfZ5ISvxKh X-Received: by 2002:aa7:c407:: with SMTP id j7mr59419949edq.96.1594107255093; Tue, 07 Jul 2020 00:34:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594107255; cv=none; d=google.com; s=arc-20160816; b=QM/qFI8fKPh5QdfmVMh1mw4Ed11Q5CfqwBQ9taY9/kMZ740LbudnJ4SijVKzEepsTO eKoJxSvalqv7Qga8Y9go01iJNW1ek7gGAKKWk9eLrvujRh4N8UEr+PGSAEdGeApGMQaP IPg/DhX3CQafHuDagfVjjUraZSKkIrOBmWRAcai4xGB391tsdSVz8Ss60l8ItAY22EO2 XKI6Dk2KalBky5DP58KGwbjmMztXL+sRD5P1n6ADYfNMdh1gvYHfbkdyOyrwnjIf5AR6 BjKSrKSMUqg4SrL88/k7ZQnfdOpq85Q3BXgGq79XW0kaq/Zh+070RkOMjyRPeBrNdqTh 2sQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :dkim-signature; bh=bbruckC3ceq+ERWDrNx+WHxXmMBaz2tWUh5l7zH/VsA=; b=cxjzrda3bdWRNdsJQ2nT7IRkdSeILbc7pqUteuwWR9MKuhUtW4iMCqrX+jtUqycl6R g3h33OcKCbzge8vc8x/lT0pmcDiNLJu8R/wBy3k42m+JJbx6Ubf5/0rGH2ma9JNFeJIn /6/J72Sc3OQhQ1oToJdchJ5lrG6RkYzD96+hzWHpU5tsIZwQDauZUkMA8nvoAA78EpSH oB9MMHbTxJZKiLOoMEaiC3DbxwdJP47UiO/groBG1CTYzW9fPbsp0XkwX6O9+WJ9RoSz d3/Xu4r1CA8j1uv1MXRNHhhIkOYIJkZlE+Lpgn+ArxIAcGZqc31OvoyQdySSQSf5a/xR VLuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=SPd7WdbI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a9si14590857ejf.124.2020.07.07.00.33.50; Tue, 07 Jul 2020 00:34:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=SPd7WdbI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726661AbgGGHdD (ORCPT + 99 others); Tue, 7 Jul 2020 03:33:03 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:7126 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725825AbgGGHdC (ORCPT ); Tue, 7 Jul 2020 03:33:02 -0400 X-UUID: aa5958b8b8ae46c787b8794d0c6cab6c-20200707 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=bbruckC3ceq+ERWDrNx+WHxXmMBaz2tWUh5l7zH/VsA=; b=SPd7WdbIV3UpMIi5oaQy4k3V9FGdhnlfAUydzvpkg9yv6bYWSiPaBRH+MHLjLsu+oML0twaDC67qjEDCVfFgogOolFeiQwqA4dMkq+xUCX1oebLldVR3mMwyxd0kR1AWw00mx5fkj1AsdwC9XiFyBpZo9UrBLEpJOie6s9AF9xI=; X-UUID: aa5958b8b8ae46c787b8794d0c6cab6c-20200707 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1125661989; Tue, 07 Jul 2020 15:32:51 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs01n1.mediatek.inc (172.21.101.68) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 7 Jul 2020 15:32:48 +0800 Received: from [172.21.77.33] (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Tue, 7 Jul 2020 15:32:49 +0800 Message-ID: <1594107170.20820.84.camel@mtkswgap22> Subject: Re: [PATCH 2/2] soc: mediatek: devapc: add devapc-mt6779 driver From: Neal Liu To: Matthias Brugger CC: Neal Liu , Rob Herring , , , lkml , "moderated list:ARM/Mediatek SoC support" , Date: Tue, 7 Jul 2020 15:32:50 +0800 In-Reply-To: References: <1594027693-19530-1-git-send-email-neal.liu@mediatek.com> <1594027693-19530-3-git-send-email-neal.liu@mediatek.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTWF0dGhpYXMsDQoNClRoYW5rcyBmb3IgeW91ciByZXZpZXcuDQoNCk9uIE1vbiwgMjAyMC0w Ny0wNiBhdCAxMzoyNyArMDIwMCwgTWF0dGhpYXMgQnJ1Z2dlciB3cm90ZToNCj4gQ0MgbGludXgt bWVkaWF0ZWsNCj4gDQo+IFBsZWFzZSB5b3UgLi9zY3JpcHRzL2dldF9tYWludGFpbmVycy5wbCB0 byBmaW5kIG91dCB0byB3aG9tIHlvdSBzaG91bGQgc2VuZCB0aGUNCj4gc2VyaWVzLg0KDQpZZXMs IEkgYWxyZWFkeSBmaW5kIG91dCBmcm9tIGdldF9tYWludGFpbmVycy5wbC4gQnV0IEkgZm9yZ290 IHRvIGFkZCBpdA0KaW50byBjYyBsaXN0Li4uDQoNCj4gDQo+IE9uIDA2LzA3LzIwMjAgMTE6Mjgs IE5lYWwgTGl1IHdyb3RlOg0KPiA+IE1UNjc3OSBidXMgZnJhYnJpYyBwcm92aWRlcyBUcnVzdFpv bmUgc2VjdXJpdHkgc3VwcG9ydCBhbmQgZGF0YQ0KPiA+IHByb3RlY3Rpb24gdG8gcHJldmVudCBz bGF2ZXMgZnJvbSBiZWluZyBhY2Nlc3NlZCBieSB1bmV4cGVjdGVkDQo+ID4gbWFzdGVycy4NCj4g PiBUaGUgc2VjdXJpdHkgdmlvbGF0aW9ucyBhcmUgbG9nZ2VkIGFuZCBzZW50IHRvIHRoZSBwcm9j ZXNzb3IgZm9yDQo+ID4gZnVydGhlciBhbmFseXNpcyBvciBjb3VudGVybWVhc3VyZXMuDQo+ID4g DQo+ID4gQW55IG9jY3VycmVuY2Ugb2Ygc2VjdXJpdHkgdmlvbGF0aW9uIHdvdWxkIHJhaXNlIGFu IGludGVycnVwdCwgYW5kDQo+ID4gaXQgd2lsbCBiZSBoYW5kbGVkIGJ5IGRldmFwYy1tdDY3Nzkg ZHJpdmVyLiBUaGUgdmlvbGF0aW9uDQo+ID4gaW5mb3JtYXRpb24gaXMgcHJpbnRlZCBpbiBvcmRl ciB0byBmaW5kIHRoZSBtdXJkZXJlci4NCj4gPiANCj4gDQo+IFBsZWFzZSBkZXNjcmliZSBpbiBt b3JlIGRldGFpbCBob3cgdGhpcyBIVyB3b3Jrcy4NCg0KImRldmFwYyIgbWVhbnMgRGV2aWNlIEFj Y2VzcyBQZXJtaXNzaW9uIENvbnRyb2wuDQpUaGlzIGhhcmR3YXJlIGNhbiBjb250cm9sIHdoaWNo IGJ1cyBtYXN0ZXJzIGFyZSBhbGxvd2VkIG9yIGRpc2FsbG93ZWQgdG8NCmFjY2VzcyBidXMgc2xh dmVzLiBBbmQgaXQgd2lsbCBnZW5lcmF0ZSBpbnRlcnJ1cHRzIGlmIHNvbWVvbmUgdmlvbGF0ZXMN CnRoZSBydWxlcy4NCllvdSBjYW4gY2hlY2sgYmluZGluZyBmb3IgbW9yZSBkZXRhaWxzLg0KDQo+ IA0KPiA+IFNpZ25lZC1vZmYtYnk6IE5lYWwgTGl1IDxuZWFsLmxpdUBtZWRpYXRlay5jb20+DQo+ ID4gLS0tDQo+IA0KPiBjb3B5aW5nIG15IGNvbW1lbnRzIGZyb20gdGhlIGxhc3QgcmV2aXNpb24s IHdoaWNoIHdlcmVuJ3QgYW5zd2VyZWQgYW5kIGFyZSBub3QNCj4gYWRkcmVzc2VkIGhlcmUuIElm IHlvdSBhcmUgbm90IE9LIHdpdGggbXkgc3VnZ3Vlc3Rpb25zLCBubyBwcm9ibGVtIGJ1dCBwbGVh c2UNCj4gcHJvdmlkZSB5b3VyIGFyZ3VtZW50cyBzbyB0aGF0IHdlIGNhbiBjb21lIHVwIHdpdGgg YSBzb2x1dGlvbi4gT3RoZXJ3aXNlIHlvdSBhcmUNCj4ganVzdCB3YXN0aW5nIHlvdXIgYW5kIG15 IHRpbWU6DQoNClNvcnJ5IGZvciBub3QgcmVwbHlpbmcgeW91ciBwcmV2aW91cyBjb21tZW50cy4g SSB0aGluayB5b3VyIG1vc3QNCmNvbW1lbnRzIGFyZSByZWFsbHkgaGVscGZ1bCBhbmQgSSBhbHJl YWR5IHJldmlzZWQgYW5kIGFwcGxpZWQgaXQgaW4gdGhpcw0KcGF0Y2guDQpMZXQncyBkaXNjdXNz IHRoZSBwYXJ0IEkgbWlzc2VkLg0KDQo+IA0KPiBQbGVhc2UgcmV2aWV3IHlvdXIgZGF0YSBzdHJ1 Y3R1cmVzIGFuZCB0cnkgdG8gZ3JvdXAgdGhlIGluZm9ybWF0aW9uIGluIGxvZ2ljYWwNCj4gc3Ry dWN0cy4gRm9yIGV4YW1wbGUgSSBkb24ndCB1bmRlcnN0YW5kIHdoeSB3ZSBuZWVkIG10a19kZXZh cGNfY29udGV4dC4gSXQgc2VlbXMNCj4gdG8gbWUgdGhhdCBhbGwgdGhlIHZhbHVlcyBpbiB0aGVy ZSBhcmUgU29DIHNwZWNpZmljLg0KPiANCg0KWWVzLCB5b3UgYXJlIHJpZ2h0LiBtdGtfZGV2YXBj X2NvbnRleHQgZGVkaWNhdGVkIHRvIFNvQyBzcGVjaWZpYy4NCg0KPiBXaHkgdm9pZCBfX2lvbWVt ICpkZXZhcGNfcGRfYmFzZSBpc24ndCBwYXJ0IG9mIHRoZSBkZXZpY2VfaW5mbz8NCj4gDQoNCmRl dmljZV9pbmZvIHN0b3JlcyBzbGF2ZXMnIGluZm8gd2hpY2ggYXJlIGNvbnRyb2xsZWQgYnkgZGV2 YXBjLg0KZGV2YXBjX3BkX2Jhc2Ugc3RvcmVzIGRldmFwY19wZCBiYXNlZCByZWdpc3RlciB3aGlj aCBpcyB1c2VkIHRvIGNvbnRyb2wNCmFuZCBkdW1wIHZpb2xhdGlvbiBpbmZvcm1hdGlvbi4NCg0K PiANCj4gDQo+ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL0tjb25maWcgICAgICAgICAgICAgICAg fCAgICA2ICsNCj4gPiAgZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICAgICAg ICB8ICAgIDEgKw0KPiA+ICBkcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvS2NvbmZpZyAgICAg ICAgIHwgICAxNyArDQo+ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9NYWtlZmlsZSAg ICAgICAgfCAgIDEwICsNCj4gPiAgZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1t dDY3NzkuYyB8IDExMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+IA0KPiBGcm9tIHRo ZSBhbnN3ZXJzIG9mIHRoZSBsYXN0IHJldmlzaW9uIGl0IHNlZW1zIHRoYXQgdGhpcyBkcml2ZXIg d2lsbCBiZSB1c2VkIGZvcg0KPiBtb3JlIHRoZW4gb25lIFNvQy4gU28gd2Ugc2hvdWxkIG5vdCBu YW1lIGl0IGRldmFwYy1tdDY3NzkuYyBidXQgZm9yIGV4YW1wbGUNCj4gbXRrLWRldmFwYy5jLg0K DQpPa2F5LCB3ZSBjb3VsZCB1c2UgbXRrLWRldmFwYy5jIGZvciBmaXJzdCBwYXRjaC4gSWYgd2Ug dXBzdHJlYW0gbmV4dA0KU29DLCB0aGVuIHdlIGNvdWxkIHNlcGFyYXRlIFNvQyBzcGVjaWZpYyBw YXJ0Lg0KDQo+IA0KPiBCeSB0aGUgd2F5LCB3aGF0IGRvZXMgdGhlIGRldmFwYyBzdGFuZHMgZm9y PyBJdCdzIG5vdCBjbGVhciBmcm9tIHRoZSBjb21taXQNCj4gbWVzc2FnZSBub3IgZnJvbSB0aGUg YmluZGluZyBkZXNjcmlwdGlvbi4NCg0KSXQgYWxyZWFkeSBkZXNjcmliZWQgaW4gYmluZGluZyB0 aXRsZS4NCnRpdGxlOiBNZWRpYVRlayBNVDY3NzkgRGV2aWNlIEFjY2VzcyBQZXJtaXNzaW9uIENv bnRyb2wgZHJpdmVyDQoNCj4gDQo+ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9kZXZh cGMtbXQ2Nzc5LmggfCAgIDk5ICsrKw0KPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDEyNDQgaW5zZXJ0 aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2 YXBjL0tjb25maWcNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc29jL21lZGlhdGVr L2RldmFwYy9NYWtlZmlsZQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVk aWF0ZWsvZGV2YXBjL2RldmFwYy1tdDY3NzkuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1tdDY3NzkuaA0KPiA+IA0KPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9zb2MvbWVkaWF0 ZWsvS2NvbmZpZw0KPiA+IGluZGV4IDU5YTU2Y2QuLjJjOWFkMWYgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlh dGVrL0tjb25maWcNCj4gPiBAQCAtNTEsNCArNTEsMTAgQEAgY29uZmlnIE1US19NTVNZUw0KPiA+ ICAJICBTYXkgeWVzIGhlcmUgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBNZWRpYVRlayBNdWx0aW1l ZGlhDQo+ID4gIAkgIFN1YnN5c3RlbSAoTU1TWVMpLg0KPiA+ICANCj4gPiArbWVudSAiU2VjdXJp dHkiDQo+ID4gKw0KPiA+ICtzb3VyY2UgImRyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9LY29u ZmlnIg0KPiA+ICsNCj4gPiArZW5kbWVudSAjIFNlY3VyaXR5DQo+ID4gKw0KPiA+ICBlbmRtZW51 DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVy cy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUNCj4gPiBpbmRleCAwMWY5Zjg3Li5kNjcxN2E4MSAxMDA2 NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQ0KPiA+ICsrKyBiL2Ry aXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlDQo+ID4gQEAgLTEsNSArMSw2IEBADQo+ID4gICMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPiA+ICBvYmotJChDT05GSUdf TVRLX0NNRFEpICs9IG10ay1jbWRxLWhlbHBlci5vDQo+ID4gK29iai0kKENPTkZJR19NVEtfREVW QVBDKSArPSBkZXZhcGMvDQo+IA0KPiBXaHkgZG8gd2UgbmVlZCBhIG5ldyBmb2xkZXIgZm9yIHRo ZSBkcml2ZXI/DQoNCkN1cnJlbnRseSwgd2UgZG9uJ3QgbmVlZCBpdC4gQnV0IG9uY2UgaXQgc3Vw cG9ydCBtdWx0aXBsZSBwbGF0Zm9ybXMsIHdlDQp3b3VsZCBsaWtlIHRvIGdyb3VwIGl0LiBEb2Vz IGl0IG1ha2Ugc2Vuc2U/DQoNCj4gDQo+ID4gIG9iai0kKENPTkZJR19NVEtfSU5GUkFDRkcpICs9 IG10ay1pbmZyYWNmZy5vDQo+ID4gIG9iai0kKENPTkZJR19NVEtfUE1JQ19XUkFQKSArPSBtdGst cG1pYy13cmFwLm8NCj4gPiAgb2JqLSQoQ09ORklHX01US19TQ1BTWVMpICs9IG10ay1zY3BzeXMu bw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvS2NvbmZpZyBi L2RyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9LY29uZmlnDQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5iMGY3ZDBlDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9LY29uZmlnDQo+ID4gQEAgLTAsMCAr MSwxNyBAQA0KPiA+ICtjb25maWcgTVRLX0RFVkFQQw0KPiA+ICsJdHJpc3RhdGUgIk1lZGlhdGVr IERldmljZSBBUEMgU3VwcG9ydCINCj4gPiArCWhlbHANCj4gPiArCSAgRGV2aWNlIEFQQyBpcyBh IEhXIElQIGNvbnRyb2xsaW5nIGludGVybmFsIGRldmljZSBzZWN1cml0eS4NCj4gPiArCSAgTWVk aWFUZWsgYnVzIGZyYWJyaWMgcHJvdmlkZXMgVHJ1c3Rab25lIHNlY3VyaXR5IHN1cHBvcnQgYW5k IGRhdGENCj4gPiArCSAgcHJvdGVjdGlvbiB0byBwcmV2ZW50IHNsYXZlcyBmcm9tIGJlaW5nIGFj Y2Vzc2VkIGJ5IHVuZXhwZWN0ZWQNCj4gPiArCSAgYnVzIG1hc3RlcnMuDQo+ID4gKwkgIERldmlj ZSBBUEMgcHJldmVudHMgbWFsaWNpb3VzIGFjY2VzcyB0byBpbnRlcm5hbCBkZXZpY2VzLg0KPiA+ ICsNCj4gPiArY29uZmlnIERFVkFQQ19NVDY3NzkNCj4gPiArCXRyaXN0YXRlICJNZWRpYXRlayBN VDY3NzkgRGV2aWNlIEFQQyBkcml2ZXIiDQo+ID4gKwlzZWxlY3QgTVRLX0RFVkFQQw0KPiA+ICsJ aGVscA0KPiA+ICsJICBTYXkgeWVzIGhlcmUgdG8gZW5hYmxlIHN1cHBvcnQgTWVkaWF0ZWsgTVQ2 Nzc5IERldmljZSBBUEMgZHJpdmVyLg0KPiA+ICsJICBUaGlzIGRyaXZlciBtYWlubHkgdXNlZCB0 byBoYW5kbGUgdGhlIHZpb2xhdGlvbiB3aXRoIDEgREVWQVBDIEFPL1BEcy4NCj4gPiArCSAgVGhl IHZpb2xhdGlvbiBpbmZvcm1hdGlvbiBhcmUgbG9nZ2VkIGZvciBmdXJ0aGVyIGFuYWx5c2lzIG9y DQo+ID4gKwkgIGNvdW50ZXJtZWFzdXJlcy4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2Mv bWVkaWF0ZWsvZGV2YXBjL01ha2VmaWxlIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL01h a2VmaWxlDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi4wMzM2 YzFkDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL2Rl dmFwYy9NYWtlZmlsZQ0KPiA+IEBAIC0wLDAgKzEsMTAgQEANCj4gPiArIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsNCj4gPiAraWZlcSAoJChDT05GSUdfTVRLX0dDT1Zf S0VSTkVMKSx5KQ0KPiA+ICtHQ09WX1BST0ZJTEUgOj0geQ0KPiA+ICtlbmRpZg0KPiA+ICsNCj4g PiArb2JqLSQoQ09ORklHX01US19ERVZBUEMpIDo9IGRldmFwYy5vDQo+ID4gKw0KPiA+ICsjIFBs YXRmb3JtDQo+ID4gK2RldmFwYy0kKENPTkZJR19ERVZBUENfTVQ2Nzc5KSArPSBkZXZhcGMtbXQ2 Nzc5Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2RldmFw Yy1tdDY3NzkuYyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9kZXZhcGMtbXQ2Nzc5LmMN Cj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLmEyOGI5ZjMNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2Rl dmFwYy1tdDY3NzkuYw0KPiA+IEBAIC0wLDAgKzEsMTExMSBAQA0KPiA+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjAgTWVkaWFUZWsgSW5jLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9j bGsuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+ICsjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4N Cj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2Zf YWRkcmVzcy5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgImRldmFwYy1tdDY3NzkuaCINCj4gPiAr DQo+ID4gK3N0YXRpYyBzdHJ1Y3QgbXRrX2RldmljZV9pbmZvIG10Njc3OV9kZXZpY2VzX2luZnJh W10gPSB7DQo+IA0KPiBMb29rcyBsaWtlIGEgY2FuZGlkYXRlIHRvIHB1dCBpbnRvIHRoZSAqLmgg ZmlsZS4NCj4gDQoNCnNob3VsZCBiZSBva2F5Lg0KDQo+ID4gKwkvKiBzeXNfaWR4LCBjdHJsX2lk eCwgdmlvX2lkeCAqLw0KPiA+ICsJLyogMCAqLw0KPiA+ICsJezAsIDAsIDB9LA0KPiA+ICsJezAs IDEsIDF9LA0KPiA+ICsJezAsIDIsIDJ9LA0KPiA+ICsJezAsIDMsIDN9LA0KPiA+ICsJezAsIDQs IDR9LA0KPiA+ICsJezAsIDUsIDV9LA0KPiA+ICsJezAsIDYsIDZ9LA0KPiA+ICsJezAsIDcsIDd9 LA0KPiA+ICsJezAsIDgsIDh9LA0KPiA+ICsJezAsIDksIDl9LA0KPiA+ICsNCj4gPiArCS8qIDEw ICovDQo+ID4gKwl7MCwgMTAsIDEwfSwNCj4gPiArCXswLCAxMSwgMTF9LA0KPiA+ICsJezAsIDEy LCAxMn0sDQo+ID4gKwl7MCwgMTMsIDEzfSwNCj4gPiArCXswLCAxNCwgMTR9LA0KPiA+ICsJezAs IDE1LCAxNX0sDQo+ID4gKwl7MCwgMTYsIDE2fSwNCj4gPiArCXswLCAxNywgMTd9LA0KPiA+ICsJ ezAsIDE4LCAxOH0sDQo+ID4gKwl7MCwgMTksIDE5fSwNCj4gPiArDQo+ID4gKwkvKiAyMCAqLw0K PiA+ICsJezAsIDIwLCAyMH0sDQo+ID4gKwl7MCwgMjEsIDIxfSwNCj4gPiArCXswLCAyMiwgMjJ9 LA0KPiA+ICsJezAsIDIzLCAyM30sDQo+ID4gKwl7MCwgMjQsIDI0fSwNCj4gPiArCXswLCAyNSwg MjV9LA0KPiA+ICsJezAsIDI2LCAyNn0sDQo+ID4gKwl7MCwgMjcsIDI3fSwNCj4gPiArCXswLCAy OCwgMjh9LA0KPiA+ICsJezAsIDI5LCAyOX0sDQo+ID4gKw0KPiA+ICsJLyogMzAgKi8NCj4gPiAr CXswLCAzMCwgMzB9LA0KPiA+ICsJezAsIDMxLCAzMX0sDQo+ID4gKwl7MCwgMzIsIDMyfSwNCj4g PiArCXswLCAzMywgNzd9LA0KPiA+ICsJezAsIDM0LCA3OH0sDQo+ID4gKwl7MCwgMzUsIDc5fSwN Cj4gPiArCXswLCAzNSwgODB9LA0KPiA+ICsJezAsIDM3LCAzN30sDQo+ID4gKwl7MCwgMzgsIDM4 fSwNCj4gPiArCXswLCAzOSwgMzl9LA0KPiA+ICsNCj4gPiArCS8qIDQwICovDQo+ID4gKwl7MCwg NDAsIDQwfSwNCj4gPiArCXswLCA0MSwgNDF9LA0KPiA+ICsJezAsIDQyLCA0Mn0sDQo+ID4gKwl7 MCwgNDMsIDQzfSwNCj4gPiArCXswLCA0NCwgNDR9LA0KPiA+ICsJezAsIDQ1LCA0NX0sDQo+ID4g Kwl7MCwgNDYsIDQ2fSwNCj4gPiArCXswLCA0NywgNDd9LA0KPiA+ICsJezAsIDQ4LCA0OH0sDQo+ ID4gKwl7MCwgNDksIDQ5fSwNCj4gPiArDQo+ID4gKwkvKiA1MCAqLw0KPiA+ICsJezAsIDUwLCA1 MH0sDQo+ID4gKwl7MCwgNTEsIDUxfSwNCj4gPiArCXswLCA1MiwgNTJ9LA0KPiA+ICsJezAsIDUz LCA1M30sDQo+ID4gKwl7MCwgNTQsIDU0fSwNCj4gPiArCXswLCA1NSwgNTV9LA0KPiA+ICsJezAs IDU2LCA1Nn0sDQo+ID4gKwl7MCwgNTcsIDU3fSwNCj4gPiArCXswLCA1OCwgNTh9LA0KPiA+ICsJ ezAsIDU5LCA1OX0sDQo+ID4gKw0KPiA+ICsJLyogNjAgKi8NCj4gPiArCXswLCA2MCwgNjB9LA0K PiA+ICsJezAsIDYxLCA2MX0sDQo+ID4gKwl7MCwgNjIsIDYyfSwNCj4gPiArCXswLCA2MywgNjN9 LA0KPiA+ICsJezAsIDY0LCA2NH0sDQo+ID4gKwl7MCwgNjUsIDcwfSwNCj4gPiArCXswLCA2Niwg NzF9LA0KPiA+ICsJezAsIDY3LCA3Mn0sDQo+ID4gKwl7MCwgNjgsIDczfSwNCj4gPiArCXswLCA3 MCwgODF9LA0KPiA+ICsNCj4gPiArCS8qIDcwICovDQo+ID4gKwl7MCwgNzEsIDgyfSwNCj4gPiAr CXswLCA3MiwgODN9LA0KPiA+ICsJezAsIDczLCA4NH0sDQo+ID4gKwl7MCwgNzQsIDg1fSwNCj4g PiArCXswLCA3NSwgODZ9LA0KPiA+ICsJezAsIDc2LCA4N30sDQo+ID4gKwl7MCwgNzcsIDg4fSwN Cj4gPiArCXswLCA3OCwgODl9LA0KPiA+ICsJezAsIDc5LCA5MH0sDQo+ID4gKwl7MCwgODAsIDkx fSwNCj4gPiArDQo+ID4gKwkvKiA4MCAqLw0KPiA+ICsJezAsIDgxLCA5Mn0sDQo+ID4gKwl7MCwg ODIsIDkzfSwNCj4gPiArCXswLCA4MywgOTR9LA0KPiA+ICsJezAsIDg0LCA5NX0sDQo+ID4gKwl7 MCwgODUsIDk2fSwNCj4gPiArCXswLCA4NiwgOTd9LA0KPiA+ICsJezAsIDg3LCA5OH0sDQo+ID4g Kwl7MCwgODgsIDk5fSwNCj4gPiArCXswLCA4OSwgMTAwfSwNCj4gPiArCXswLCA5MCwgMTAxfSwN Cj4gPiArDQo+ID4gKwkvKiA5MCAqLw0KPiA+ICsJezAsIDkxLCAxMDJ9LA0KPiA+ICsJezAsIDky LCAxMDN9LA0KPiA+ICsJezAsIDkzLCAxMDR9LA0KPiA+ICsJezAsIDk0LCAxMDV9LA0KPiA+ICsJ ezAsIDk1LCAxMDZ9LA0KPiA+ICsJezAsIDk2LCAxMDd9LA0KPiA+ICsJezAsIDk3LCAxMDh9LA0K PiA+ICsJezAsIDk4LCAxMDl9LA0KPiA+ICsJezAsIDExMCwgMTEwfSwNCj4gPiArCXswLCAxMTEs IDExMX0sDQo+ID4gKw0KPiA+ICsJLyogMTAwICovDQo+IA0KPiBDb21tZW50cyBtYXliZSBub3Qg bmVlZGVkLCBhdCBsZWFzdCBvZiBhZGRlZCwgdGhleSBzaG91bGQgcmVwcmVzZW50IHRoZSBjb2Rl Lg0KDQpUaGlzIGNvbW1lbnRzIHJlcHJlc2VudCBpbmRleCBvZiBtdDY3NzlfZGV2aWNlc19pbmZy YS4NCkl0J3MgaGVscGZ1bCB0byBjaGVjayB0b3RhbCBudW1iZXJzIG9mIHNsYXZlcy4NCg0KPiAN Cj4gPiArCXswLCAxMTIsIDExMn0sDQo+ID4gKwl7MCwgMTEzLCAxMTN9LA0KPiA+ICsJezAsIDEx NCwgMTE0fSwNCj4gPiArCXswLCAxMTUsIDExNX0sDQo+ID4gKwl7MCwgMTE2LCAxMTZ9LA0KPiA+ ICsJezAsIDExNywgMTE3fSwNCj4gPiArCXswLCAxMTgsIDExOH0sDQo+ID4gKwl7MCwgMTE5LCAx MTl9LA0KPiA+ICsJezAsIDEyMCwgMTIwfSwNCj4gPiArCXswLCAxMjEsIDEyMX0sDQo+ID4gKw0K PiA+ICsJLyogMTEwICovDQo+ID4gKwl7MCwgMTIyLCAxMjJ9LA0KPiA+ICsJezAsIDEyMywgMTIz fSwNCj4gPiArCXswLCAxMjQsIDEyNH0sDQo+ID4gKwl7MCwgMTI1LCAxMjV9LA0KPiA+ICsJezAs IDEyNiwgMTI2fSwNCj4gPiArCXswLCAxMjcsIDEyN30sDQo+ID4gKwl7MCwgMTI4LCAxMjh9LA0K PiA+ICsJezAsIDEyOSwgMTI5fSwNCj4gPiArCXswLCAxMzAsIDEzMH0sDQo+ID4gKwl7MCwgMTMx LCAxMzF9LA0KPiA+ICsNCj4gPiArCS8qIDEyMCAqLw0KPiA+ICsJezAsIDEzMiwgMTMyfSwNCj4g PiArCXswLCAxMzMsIDEzM30sDQo+ID4gKwl7MCwgMTM0LCAxMzR9LA0KPiA+ICsJezAsIDEzNSwg MTM1fSwNCj4gPiArCXswLCAxMzYsIDEzNn0sDQo+ID4gKwl7MCwgMTM3LCAxMzd9LA0KPiA+ICsJ ezAsIDEzOCwgMTM4fSwNCj4gPiArCXswLCAxMzksIDEzOX0sDQo+ID4gKwl7MCwgMTQwLCAxNDB9 LA0KPiA+ICsJezAsIDE0MSwgMTQxfSwNCj4gPiArDQo+ID4gKwkvKiAxMzAgKi8NCj4gPiArCXsw LCAxNDIsIDE0Mn0sDQo+ID4gKwl7MCwgMTQzLCAxNDN9LA0KPiA+ICsJezAsIDE0NCwgMTQ0fSwN Cj4gPiArCXswLCAxNDUsIDE0NX0sDQo+ID4gKwl7MCwgMTQ2LCAxNDZ9LA0KPiA+ICsJezAsIDE0 NywgMTQ3fSwNCj4gPiArCXswLCAxNDgsIDE0OH0sDQo+ID4gKwl7MCwgMTQ5LCAxNDl9LA0KPiA+ ICsJezAsIDE1MCwgMTUwfSwNCj4gPiArCXswLCAxNTEsIDE1MX0sDQo+ID4gKw0KPiA+ICsJLyog MTQwICovDQo+ID4gKwl7MCwgMTUyLCAxNTJ9LA0KPiA+ICsJezAsIDE1MywgMTUzfSwNCj4gPiAr CXswLCAxNTQsIDE1NH0sDQo+ID4gKwl7MCwgMTU1LCAxNTV9LA0KPiA+ICsJezAsIDE1NiwgMTU2 fSwNCj4gPiArCXswLCAxNTcsIDE1N30sDQo+ID4gKwl7MCwgMTU4LCAxNTh9LA0KPiA+ICsJezAs IDE1OSwgMTU5fSwNCj4gPiArCXswLCAxNjAsIDE2MH0sDQo+ID4gKwl7MCwgMTYxLCAxNjF9LA0K PiA+ICsNCj4gPiArCS8qIDE1MCAqLw0KPiA+ICsJezAsIDE2MiwgMTYyfSwNCj4gPiArCXswLCAx NjMsIDE2M30sDQo+ID4gKwl7MCwgMTY0LCAxNjR9LA0KPiA+ICsJezAsIDE2NSwgMTY1fSwNCj4g PiArCXswLCAxNjYsIDE2Nn0sDQo+ID4gKwl7MCwgMTY3LCAxNjd9LA0KPiA+ICsJezAsIDE2OCwg MTY4fSwNCj4gPiArCXswLCAxNjksIDE2OX0sDQo+ID4gKwl7MCwgMTcwLCAxNzB9LA0KPiA+ICsJ ezAsIDE3MSwgMTcxfSwNCj4gPiArDQo+ID4gKwkvKiAxNjAgKi8NCj4gPiArCXswLCAxNzIsIDE3 Mn0sDQo+ID4gKwl7MCwgMTczLCAxNzN9LA0KPiA+ICsJezAsIDE3NCwgMTc0fSwNCj4gPiArCXsw LCAxNzUsIDE3NX0sDQo+ID4gKwl7MCwgMTc2LCAxNzZ9LA0KPiA+ICsJezAsIDE3NywgMTc3fSwN Cj4gPiArCXswLCAxNzgsIDE3OH0sDQo+ID4gKwl7MCwgMTc5LCAxNzl9LA0KPiA+ICsJezAsIDE4 MCwgMTgwfSwNCj4gPiArCXswLCAxODEsIDE4MX0sDQo+ID4gKw0KPiA+ICsJLyogMTcwICovDQo+ ID4gKwl7MCwgMTgyLCAxODJ9LA0KPiA+ICsJezAsIDE4MywgMTgzfSwNCj4gPiArCXswLCAxODQs IDE4NH0sDQo+ID4gKwl7MCwgMTg1LCAxODV9LA0KPiA+ICsJezAsIDE4NiwgMTg2fSwNCj4gPiAr CXswLCAxODcsIDE4N30sDQo+ID4gKwl7MCwgMTg4LCAxODh9LA0KPiA+ICsJezAsIDE4OSwgMTg5 fSwNCj4gPiArCXswLCAxOTAsIDE5MH0sDQo+ID4gKwl7MCwgMTkxLCAxOTF9LA0KPiA+ICsNCj4g PiArCS8qIDE4MCAqLw0KPiA+ICsJezAsIDE5MiwgMTkyfSwNCj4gPiArCXswLCAxOTMsIDE5M30s DQo+ID4gKwl7MCwgMTk0LCAxOTR9LA0KPiA+ICsJezAsIDE5NSwgMTk1fSwNCj4gPiArCXswLCAx OTYsIDE5Nn0sDQo+ID4gKwl7MCwgMTk3LCAxOTd9LA0KPiA+ICsJezAsIDE5OCwgMTk4fSwNCj4g PiArCXswLCAxOTksIDE5OX0sDQo+ID4gKwl7MCwgMjAwLCAyMDB9LA0KPiA+ICsJezAsIDIwMSwg MjAxfSwNCj4gPiArDQo+ID4gKwkvKiAxOTAgKi8NCj4gPiArCXswLCAyMDIsIDIwMn0sDQo+ID4g Kwl7MCwgMjAzLCAyMDN9LA0KPiA+ICsJezAsIDIwNCwgMjA0fSwNCj4gPiArCXswLCAyMDUsIDIw NX0sDQo+ID4gKwl7MCwgMjA2LCAyMDZ9LA0KPiA+ICsJezAsIDIwNywgMjA3fSwNCj4gPiArCXsw LCAyMDgsIDIwOH0sDQo+ID4gKwl7MCwgMjA5LCAyMDl9LA0KPiA+ICsJezAsIDIxMCwgMjEwfSwN Cj4gPiArCXswLCAyMTEsIDIxMX0sDQo+ID4gKw0KPiA+ICsJLyogMjAwICovDQo+ID4gKwl7MCwg MjEyLCAyMTJ9LA0KPiA+ICsJezAsIDIxMywgMjEzfSwNCj4gPiArCXswLCAyMTQsIDIxNH0sDQo+ ID4gKwl7MCwgMjE1LCAyMTV9LA0KPiA+ICsJezAsIDIxNiwgMjE2fSwNCj4gPiArCXswLCAyMTcs IDIxN30sDQo+ID4gKwl7MCwgMjE4LCAyMTh9LA0KPiA+ICsJezAsIDIxOSwgMjE5fSwNCj4gPiAr CXswLCAyMjAsIDIyMH0sDQo+ID4gKwl7MCwgMjIxLCAyMjF9LA0KPiA+ICsNCj4gPiArCS8qIDIx MCAqLw0KPiA+ICsJezAsIDIyMiwgMjIyfSwNCj4gPiArCXswLCAyMjMsIDIyM30sDQo+ID4gKwl7 MCwgMjI0LCAyMjR9LA0KPiA+ICsJezAsIDIyNSwgMjI1fSwNCj4gPiArCXswLCAyMjYsIDIyNn0s DQo+ID4gKwl7MCwgMjI3LCAyMjd9LA0KPiA+ICsJezAsIDIyOCwgMjI4fSwNCj4gPiArCXswLCAy MjksIDIyOX0sDQo+ID4gKwl7MCwgMjMwLCAyMzB9LA0KPiA+ICsJezAsIDIzMSwgMjMxfSwNCj4g PiArDQo+ID4gKwkvKiAyMjAgKi8NCj4gPiArCXsxLCAwLCAyMzJ9LA0KPiA+ICsJezEsIDEsIDIz M30sDQo+ID4gKwl7MSwgMiwgMjM0fSwNCj4gPiArCXsxLCAzLCAyMzV9LA0KPiA+ICsJezEsIDQs IDIzNn0sDQo+ID4gKwl7MSwgNSwgMjM3fSwNCj4gPiArCXsxLCA2LCAyMzh9LA0KPiA+ICsJezEs IDcsIDIzOX0sDQo+ID4gKwl7MSwgOCwgMjQwfSwNCj4gPiArCXsxLCA5LCAyNDF9LA0KPiA+ICsN Cj4gPiArCS8qIDIzMCAqLw0KPiA+ICsJezEsIDEwLCAyNDJ9LA0KPiA+ICsJezEsIDExLCAyNDN9 LA0KPiA+ICsJezEsIDEyLCAyNDR9LA0KPiA+ICsJezEsIDEzLCAyNDV9LA0KPiA+ICsJezEsIDE0 LCAyNDZ9LA0KPiA+ICsJezEsIDE1LCAyNDd9LA0KPiA+ICsJezEsIDE2LCAyNDh9LA0KPiA+ICsJ ezEsIDE3LCAyNDl9LA0KPiA+ICsJezEsIDE4LCAyNTB9LA0KPiA+ICsJezEsIDE5LCAyNTF9LA0K PiA+ICsNCj4gPiArCS8qIDI0MCAqLw0KPiA+ICsJezEsIDIwLCAyNTJ9LA0KPiA+ICsJezEsIDIx LCAyNTN9LA0KPiA+ICsJezEsIDIyLCAyNTR9LA0KPiA+ICsJezEsIDIzLCAyNTV9LA0KPiA+ICsJ ezEsIDI0LCAyNTZ9LA0KPiA+ICsJezEsIDI1LCAyNTd9LA0KPiA+ICsJezEsIDI2LCAyNTh9LA0K PiA+ICsJezEsIDI3LCAyNTl9LA0KPiA+ICsJezEsIDI4LCAyNjB9LA0KPiA+ICsJezEsIDI5LCAy NjF9LA0KPiA+ICsNCj4gPiArCS8qIDI1MCAqLw0KPiA+ICsJezEsIDMwLCAyNjJ9LA0KPiA+ICsJ ezEsIDMxLCAyNjN9LA0KPiA+ICsJezEsIDMyLCAyNjR9LA0KPiA+ICsJezEsIDMzLCAyNjV9LA0K PiA+ICsJezEsIDM0LCAyNjZ9LA0KPiA+ICsJezEsIDM1LCAyNjd9LA0KPiA+ICsJezEsIDM2LCAy Njh9LA0KPiA+ICsJezEsIDM3LCAyNjl9LA0KPiA+ICsJezEsIDM4LCAyNzB9LA0KPiA+ICsJezEs IDM5LCAyNzF9LA0KPiA+ICsNCj4gPiArCS8qIDI2MCAqLw0KPiA+ICsJezEsIDQwLCAyNzJ9LA0K PiA+ICsJezEsIDQxLCAyNzN9LA0KPiA+ICsJezEsIDQyLCAyNzR9LA0KPiA+ICsJezEsIDQzLCAy NzV9LA0KPiA+ICsJezEsIDQ0LCAyNzZ9LA0KPiA+ICsJezEsIDQ1LCAyNzd9LA0KPiA+ICsJezEs IDQ2LCAyNzh9LA0KPiA+ICsJezEsIDQ3LCAyNzl9LA0KPiA+ICsJezEsIDQ4LCAyODB9LA0KPiA+ ICsJezEsIDQ5LCAyODF9LA0KPiA+ICsNCj4gPiArCS8qIDI3MCAqLw0KPiA+ICsJezEsIDUwLCAy ODJ9LA0KPiA+ICsJezEsIDUxLCAyODN9LA0KPiA+ICsJezEsIDUyLCAyODR9LA0KPiA+ICsJezEs IDUzLCAyODV9LA0KPiA+ICsJezEsIDU0LCAyODZ9LA0KPiA+ICsJezEsIDU1LCAyODd9LA0KPiA+ ICsJezEsIDU2LCAyODh9LA0KPiA+ICsJezEsIDU3LCAyODl9LA0KPiA+ICsJezEsIDU4LCAyOTB9 LA0KPiA+ICsJezEsIDU5LCAyOTF9LA0KPiA+ICsNCj4gPiArCS8qIDI4MCAqLw0KPiA+ICsJezEs IDYwLCAyOTJ9LA0KPiA+ICsJezEsIDYxLCAyOTN9LA0KPiA+ICsJezEsIDYyLCAyOTR9LA0KPiA+ ICsJezEsIDYzLCAyOTV9LA0KPiA+ICsJezEsIDY0LCAyOTZ9LA0KPiA+ICsJezEsIDY1LCAyOTd9 LA0KPiA+ICsJezEsIDY2LCAyOTh9LA0KPiA+ICsJezEsIDY3LCAyOTl9LA0KPiA+ICsJezEsIDY4 LCAzMDB9LA0KPiA+ICsJezEsIDY5LCAzMDF9LA0KPiA+ICsNCj4gPiArCS8qIDI5MCAqLw0KPiA+ ICsJezEsIDcwLCAzMDJ9LA0KPiA+ICsJezEsIDcxLCAzMDN9LA0KPiA+ICsJezEsIDcyLCAzMDR9 LA0KPiA+ICsJezEsIDczLCAzMDV9LA0KPiA+ICsJezEsIDc0LCAzMDZ9LA0KPiA+ICsJezEsIDc1 LCAzMDd9LA0KPiA+ICsJezEsIDc2LCAzMDh9LA0KPiA+ICsJezEsIDc3LCAzMDl9LA0KPiA+ICsJ ezEsIDc4LCAzMTB9LA0KPiA+ICsJezEsIDc5LCAzMTF9LA0KPiA+ICsNCj4gPiArCS8qIDMwMCAq Lw0KPiA+ICsJezEsIDgwLCAzMTJ9LA0KPiA+ICsJezEsIDgxLCAzMTN9LA0KPiA+ICsJezEsIDgy LCAzMTR9LA0KPiA+ICsJezEsIDgzLCAzMTV9LA0KPiA+ICsJezEsIDg0LCAzMTZ9LA0KPiA+ICsJ ezEsIDg1LCAzMTd9LA0KPiA+ICsJezEsIDg2LCAzMTh9LA0KPiA+ICsJezEsIDg3LCAzMTl9LA0K PiA+ICsJezEsIDg4LCAzMjB9LA0KPiA+ICsJezEsIDg5LCAzMjF9LA0KPiA+ICsNCj4gPiArCS8q IDMxMCAqLw0KPiA+ICsJezEsIDkwLCAzMjJ9LA0KPiA+ICsJezEsIDkxLCAzMjN9LA0KPiA+ICsJ ezEsIDkyLCAzMjR9LA0KPiA+ICsJezEsIDkzLCAzMjV9LA0KPiA+ICsJezEsIDk0LCAzMjZ9LA0K PiA+ICsJezEsIDk1LCAzMjd9LA0KPiA+ICsJezEsIDk2LCAzMjh9LA0KPiA+ICsJezEsIDk3LCAz Mjl9LA0KPiA+ICsJezEsIDk4LCAzMzB9LA0KPiA+ICsJezEsIDk5LCAzMzF9LA0KPiA+ICsNCj4g PiArCS8qIDMyMCAqLw0KPiA+ICsJezEsIDEwMCwgMzMyfSwNCj4gPiArCXsxLCAxMDEsIDMzM30s DQo+ID4gKwl7MSwgMTAyLCAzMzR9LA0KPiA+ICsJezEsIDEwMywgMzM1fSwNCj4gPiArCXsxLCAx MDQsIDMzNn0sDQo+ID4gKwl7MSwgMTA1LCAzMzd9LA0KPiA+ICsJezEsIDEwNiwgMzM4fSwNCj4g PiArCXsxLCAxMDcsIDMzOX0sDQo+ID4gKwl7MSwgMTA4LCAzNDB9LA0KPiA+ICsJezEsIDEwOSwg MzQxfSwNCj4gPiArDQo+ID4gKwkvKiAzMzAgKi8NCj4gPiArCXsxLCAxMTAsIDM0Mn0sDQo+ID4g Kwl7MSwgMTExLCAzNDN9LA0KPiA+ICsJezEsIDExMiwgMzQ0fSwNCj4gPiArCXsxLCAxMTMsIDM0 NX0sDQo+ID4gKwl7MSwgMTE0LCAzNDZ9LA0KPiA+ICsJezEsIDExNSwgMzQ3fSwNCj4gPiArCXsx LCAxMTYsIDM0OH0sDQo+ID4gKwl7MSwgMTE3LCAzNDl9LA0KPiA+ICsJezEsIDExOCwgMzUwfSwN Cj4gPiArCXsxLCAxMTksIDM1MX0sDQo+ID4gKw0KPiA+ICsJLyogMzQwICovDQo+ID4gKwl7MSwg MTIwLCAzNTJ9LA0KPiA+ICsJezEsIDEyMSwgMzUzfSwNCj4gPiArCXsxLCAxMjIsIDM1NH0sDQo+ ID4gKwl7MSwgMTIzLCAzNTV9LA0KPiA+ICsJezEsIDEyNCwgMzU2fSwNCj4gPiArCXsxLCAxMjUs IDM1N30sDQo+ID4gKwl7MSwgMTI2LCAzNTh9LA0KPiA+ICsJezEsIDEyNywgMzU5fSwNCj4gPiAr CXsxLCAxMjgsIDM2MH0sDQo+ID4gKwl7MSwgMTI5LCAzNjF9LA0KPiA+ICsNCj4gPiArCS8qIDM1 MCAqLw0KPiA+ICsJezEsIDEzMCwgMzYyfSwNCj4gPiArCXsxLCAxMzEsIDM2M30sDQo+ID4gKwl7 MSwgMTMyLCAzNjR9LA0KPiA+ICsJezEsIDEzMywgMzY1fSwNCj4gPiArCXsxLCAxMzQsIDM2Nn0s DQo+ID4gKwl7MSwgMTM1LCAzNjd9LA0KPiA+ICsJezEsIDEzNiwgMzY4fSwNCj4gPiArCXsxLCAx MzcsIDM2OX0sDQo+ID4gKwl7MSwgMTM4LCAzNzB9LA0KPiA+ICsJezEsIDEzOSwgMzcxfSwNCj4g PiArDQo+ID4gKwkvKiAzNjAgKi8NCj4gPiArCXsxLCAxNDAsIDM3Mn0sDQo+ID4gKwl7MSwgMTQx LCAzNzN9LA0KPiA+ICsJezEsIDE0MiwgMzc0fSwNCj4gPiArCXsxLCAxNDMsIDM3NX0sDQo+ID4g Kwl7MSwgMTQ0LCAzNzZ9LA0KPiA+ICsJezEsIDE0NSwgMzc3fSwNCj4gPiArCXsxLCAxNDYsIDM3 OH0sDQo+ID4gKwl7MSwgMTQ3LCAzNzl9LA0KPiA+ICsJezEsIDE0OCwgMzgwfSwNCj4gPiArCXsx LCAxNDksIDM4MX0sDQo+ID4gKw0KPiA+ICsJLyogMzcwICovDQo+ID4gKwl7MSwgMTUwLCAzODJ9 LA0KPiA+ICsJezEsIDE1MSwgMzgzfSwNCj4gPiArCXsxLCAxNTIsIDM4NH0sDQo+ID4gKwl7MSwg MTUzLCAzODV9LA0KPiA+ICsJezEsIDE1NCwgMzg2fSwNCj4gPiArCXsxLCAxNTUsIDM4N30sDQo+ ID4gKwl7MSwgMTU2LCAzODh9LA0KPiA+ICsJezEsIDE1NywgMzg5fSwNCj4gPiArCXsxLCAxNTgs IDM5MH0sDQo+ID4gKwl7MSwgMTU5LCAzOTF9LA0KPiA+ICsNCj4gPiArCS8qIDM4MCAqLw0KPiA+ ICsJezEsIDE2MCwgMzkyfSwNCj4gPiArCXsxLCAxNjEsIDM5M30sDQo+ID4gKwl7MSwgMTYyLCAz OTR9LA0KPiA+ICsJezEsIDE2MywgMzk1fSwNCj4gPiArCXsxLCAxNjQsIDM5Nn0sDQo+ID4gKwl7 MSwgMTY1LCAzOTd9LA0KPiA+ICsJezEsIDE2NiwgMzk4fSwNCj4gPiArCXsxLCAxNjcsIDM5OX0s DQo+ID4gKwl7MSwgMTY4LCA0MDB9LA0KPiA+ICsJezEsIDE2OSwgNDAxfSwNCj4gPiArDQo+ID4g KwkvKiAzOTAgKi8NCj4gPiArCXsxLCAxNzAsIDQwMn0sDQo+ID4gKwl7MSwgMTcxLCA0MDN9LA0K PiA+ICsJezEsIDE3MiwgNDA0fSwNCj4gPiArCXsxLCAxNzMsIDQwNX0sDQo+ID4gKwl7MSwgMTc0 LCA0MDZ9LA0KPiA+ICsJezEsIDE3NSwgNDA3fSwNCj4gPiArCXsxLCAxNzYsIDQwOH0sDQo+ID4g Kwl7MSwgMTc3LCA0MDl9LA0KPiA+ICsJezEsIDE3OCwgNDEwfSwNCj4gPiArCXsxLCAxNzksIDQx MX0sDQo+ID4gKw0KPiA+ICsJLyogNDAwICovDQo+ID4gKwl7MSwgMTgwLCA0MTJ9LA0KPiA+ICsJ ezEsIDE4MSwgNDEzfSwNCj4gPiArCXsxLCAxODIsIDQxNH0sDQo+ID4gKwl7MSwgMTgzLCA0MTV9 LA0KPiA+ICsJezEsIDE4NCwgNDE2fSwNCj4gPiArCXsxLCAxODUsIDQxN30sDQo+ID4gKwl7MSwg MTg2LCA0MTh9LA0KPiA+ICsJezEsIDE4NywgNDE5fSwNCj4gPiArCXsxLCAxODgsIDQyMH0sDQo+ ID4gKwl7MSwgMTg5LCA0MjF9LA0KPiA+ICsNCj4gPiArCS8qIDQxMCAqLw0KPiA+ICsJezEsIDE5 MCwgNDIyfSwNCj4gPiArCXsxLCAxOTEsIDQyM30sDQo+ID4gKwl7MSwgMTkyLCA0MjR9LA0KPiA+ ICsJezEsIDE5MywgNDI1fSwNCj4gPiArCXsxLCAxOTQsIDQyNn0sDQo+ID4gKwl7MSwgMTk1LCA0 Mjd9LA0KPiA+ICsJezEsIDE5NiwgNDI4fSwNCj4gPiArCXsxLCAxOTcsIDQyOX0sDQo+ID4gKwl7 MSwgMTk4LCA0MzB9LA0KPiA+ICsJezEsIDE5OSwgNDMxfSwNCj4gPiArDQo+ID4gKwkvKiA0MjAg Ki8NCj4gPiArCXsxLCAyMDAsIDQzMn0sDQo+ID4gKwl7MSwgMjAxLCA0MzN9LA0KPiA+ICsJezEs IDIwMiwgNDM0fSwNCj4gPiArCXsxLCAyMDMsIDQzNX0sDQo+ID4gKwl7MSwgMjA0LCA0MzZ9LA0K PiA+ICsJezEsIDIwNSwgNDM3fSwNCj4gPiArCXsxLCAyMDYsIDQzOH0sDQo+ID4gKwl7MSwgMjA3 LCA0Mzl9LA0KPiA+ICsJezEsIDIwOCwgNDQwfSwNCj4gPiArCXsxLCAyMDksIDQ0MX0sDQo+ID4g Kw0KPiA+ICsJLyogNDMwICovDQo+ID4gKwl7MSwgMjEwLCA0NDJ9LA0KPiA+ICsJezEsIDIxMSwg NDQzfSwNCj4gPiArCXsxLCAyMTIsIDQ0NH0sDQo+ID4gKwl7MSwgMjEzLCA0NDV9LA0KPiA+ICsJ ezEsIDIxNCwgNDQ2fSwNCj4gPiArCXsxLCAyMTUsIDQ0N30sDQo+ID4gKwl7MSwgMjE2LCA0NDh9 LA0KPiA+ICsJezEsIDIxNywgNDQ5fSwNCj4gPiArCXsxLCAyMTgsIDQ1MH0sDQo+ID4gKwl7MSwg MjE5LCA0NTF9LA0KPiA+ICsNCj4gPiArCS8qIDQ0MCAqLw0KPiA+ICsJezEsIDIyMCwgNDUyfSwN Cj4gPiArCXsxLCAyMjEsIDQ1M30sDQo+ID4gKwl7MSwgMjIyLCA0NTR9LA0KPiA+ICsJezEsIDIy MywgNDU1fSwNCj4gPiArCXsxLCAyMjQsIDQ1Nn0sDQo+ID4gKwl7MSwgMjI1LCA0NTd9LA0KPiA+ ICsJezEsIDIyNiwgNDU4fSwNCj4gPiArCXsxLCAyMjcsIDQ1OX0sDQo+ID4gKwl7MSwgMjI4LCA0 NjB9LA0KPiA+ICsJezEsIDIyOSwgNDYxfSwNCj4gPiArDQo+ID4gKwkvKiA0NTAgKi8NCj4gPiAr CXsxLCAyMzAsIDQ2Mn0sDQo+ID4gKwl7MSwgMjMxLCA0NjN9LA0KPiA+ICsJezEsIDIzMiwgNDY0 fSwNCj4gPiArCXsxLCAyMzMsIDQ2NX0sDQo+ID4gKwl7MSwgMjM0LCA0NjZ9LA0KPiA+ICsJezEs IDIzNSwgNDY3fSwNCj4gPiArCXsxLCAyMzYsIDQ2OH0sDQo+ID4gKwl7MSwgMjM3LCA0Njl9LA0K PiA+ICsJezEsIDIzOCwgNDcwfSwNCj4gPiArCXsxLCAyMzksIDQ3MX0sDQo+ID4gKw0KPiA+ICsJ LyogNDYwICovDQo+ID4gKwl7MSwgMjQwLCA0NzJ9LA0KPiA+ICsJezEsIDI0MSwgNDczfSwNCj4g PiArCXsxLCAyNDIsIDQ3NH0sDQo+ID4gKwl7MSwgMjQzLCA0NzV9LA0KPiA+ICsJezEsIDI0NCwg NDc2fSwNCj4gPiArCXsxLCAyNDUsIDQ3N30sDQo+ID4gKwl7MSwgMjQ2LCA0Nzh9LA0KPiA+ICsJ ey0xLCAtMSwgNDc5fSwNCj4gPiArCXstMSwgLTEsIDQ4MH0sDQo+ID4gKwl7LTEsIC0xLCA0ODF9 LA0KPiA+ICsNCj4gPiArCS8qIDQ3MCAqLw0KPiA+ICsJey0xLCAtMSwgNDgyfSwNCj4gPiArCXst MSwgLTEsIDQ4M30sDQo+ID4gKwl7LTEsIC0xLCA0ODR9LA0KPiA+ICsJey0xLCAtMSwgNDg1fSwN Cj4gPiArCXstMSwgLTEsIDQ4Nn0sDQo+ID4gKwl7LTEsIC0xLCA0ODd9LA0KPiA+ICsJey0xLCAt MSwgNDg4fSwNCj4gPiArCXstMSwgLTEsIDQ4OX0sDQo+ID4gKwl7LTEsIC0xLCA0OTB9LA0KPiA+ ICsJey0xLCAtMSwgNDkxfSwNCj4gPiArDQo+ID4gKwkvKiA0ODAgKi8NCj4gPiArCXstMSwgLTEs IDQ5Mn0sDQo+ID4gKwl7LTEsIC0xLCA0OTN9LA0KPiA+ICsJey0xLCAtMSwgNDk0fSwNCj4gPiAr CXstMSwgLTEsIDQ5NX0sDQo+ID4gKwl7LTEsIC0xLCA0OTZ9LA0KPiA+ICsJey0xLCAtMSwgNDk3 fSwNCj4gPiArCXstMSwgLTEsIDQ5OH0sDQo+ID4gKwl7LTEsIC0xLCA0OTl9LA0KPiA+ICsJey0x LCAtMSwgNTAwfSwNCj4gPiArCXstMSwgLTEsIDUwMX0sDQo+ID4gKw0KPiA+ICsJLyogNDkwICov DQo+ID4gKwl7LTEsIC0xLCA1MDJ9LA0KPiA+ICsJey0xLCAtMSwgNTAzfSwNCj4gPiArCXstMSwg LTEsIDUwNH0sDQo+ID4gKwl7LTEsIC0xLCA1MDV9LA0KPiA+ICsJey0xLCAtMSwgNTA2fSwNCj4g PiArCXstMSwgLTEsIDUwN30sDQo+ID4gKwl7LTEsIC0xLCA1MDh9LA0KPiA+ICsJey0xLCAtMSwg NTA5fSwNCj4gPiArCXstMSwgLTEsIDUxMH0sDQo+ID4gKw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAr c3RhdGljIHN0cnVjdCBtdGtfZGV2aWNlX251bSBtdGs2Nzc5X2RldmljZXNfbnVtW10gPSB7DQo+ ID4gKwl7U0xBVkVfVFlQRV9JTkZSQSwgVklPX1NMQVZFX05VTV9JTkZSQX0sDQo+ID4gK307DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IG10a192aW9fbWFza19zdGFfbnVtW10gPSB7DQo+ID4gKwlW SU9fTUFTS19TVEFfTlVNX0lORlJBLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBtdGtfaW5mcmFfdmlvX2RiZ19kZXNjIG10Njc3OV92aW9fZGJncyA9IHsNCj4gPiAr CS52aW9fZGJnX21zdGlkID0gSU5GUkFfVklPX0RCR19NU1RJRCwNCj4gPiArCS52aW9fZGJnX21z dGlkX3N0YXJ0X2JpdCA9IElORlJBX1ZJT19EQkdfTVNUSURfU1RBUlRfQklULA0KPiA+ICsJLnZp b19kYmdfZG1uaWQgPSBJTkZSQV9WSU9fREJHX0RNTklELA0KPiA+ICsJLnZpb19kYmdfZG1uaWRf c3RhcnRfYml0ID0gSU5GUkFfVklPX0RCR19ETU5JRF9TVEFSVF9CSVQsDQo+ID4gKwkudmlvX2Ri Z193X3ZpbyA9IElORlJBX1ZJT19EQkdfV19WSU8sDQo+ID4gKwkudmlvX2RiZ193X3Zpb19zdGFy dF9iaXQgPSBJTkZSQV9WSU9fREJHX1dfVklPX1NUQVJUX0JJVCwNCj4gPiArCS52aW9fZGJnX3Jf dmlvID0gSU5GUkFfVklPX0RCR19SX1ZJTywNCj4gPiArCS52aW9fZGJnX3JfdmlvX3N0YXJ0X2Jp dCA9IElORlJBX1ZJT19EQkdfUl9WSU9fU1RBUlRfQklULA0KPiA+ICsJLnZpb19hZGRyX2hpZ2gg PSBJTkZSQV9WSU9fQUREUl9ISUdILA0KPiA+ICsJLnZpb19hZGRyX2hpZ2hfc3RhcnRfYml0ID0g SU5GUkFfVklPX0FERFJfSElHSF9TVEFSVF9CSVQsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0 aWMgY29uc3QgdTMyIG10Njc3OV9kZXZhcGNfcGRzW10gPSB7DQo+ID4gKwlQRF9WSU9fTUFTS19P RkZTRVQsDQo+ID4gKwlQRF9WSU9fU1RBX09GRlNFVCwNCj4gPiArCVBEX1ZJT19EQkcwX09GRlNF VCwNCj4gPiArCVBEX1ZJT19EQkcxX09GRlNFVCwNCj4gPiArCVBEX0FQQ19DT05fT0ZGU0VULA0K PiA+ICsJUERfU0hJRlRfU1RBX09GRlNFVCwNCj4gPiArCVBEX1NISUZUX1NFTF9PRkZTRVQsDQo+ ID4gKwlQRF9TSElGVF9DT05fT0ZGU0VULA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIHUz MiBtdDY3Nzlfc2hpZnRfZ3JvdXBfZ2V0KHUzMiB2aW9faWR4KQ0KPiA+ICt7DQo+ID4gKwlpZiAo dmlvX2lkeCA+PSAwICYmIHZpb19pZHggPD0gMzIpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwll bHNlIGlmICh2aW9faWR4ID49IDMzICYmIHZpb19pZHggPD0gMTA5KQ0KPiA+ICsJCXJldHVybiAx Ow0KPiA+ICsJZWxzZSBpZiAoKHZpb19pZHggPj0gMTEwICYmIHZpb19pZHggPD0gMTIxKSB8fA0K PiA+ICsJCSAodmlvX2lkeCA+PSA0NzAgJiYgdmlvX2lkeCA8PSA0NzIpKQ0KPiA+ICsJCXJldHVy biAyOw0KPiA+ICsJZWxzZSBpZiAodmlvX2lkeCA9PSAxMjIgfHwgdmlvX2lkeCA9PSA1MDApDQo+ ID4gKwkJcmV0dXJuIDM7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDEyMykNCj4gPiArCQly ZXR1cm4gNDsNCj4gPiArCWVsc2UgaWYgKHZpb19pZHggPT0gMTI0KQ0KPiA+ICsJCXJldHVybiA1 Ow0KPiA+ICsJZWxzZSBpZiAoKHZpb19pZHggPj0gMTI1ICYmIHZpb19pZHggPD0gMTU1KSB8fA0K PiA+ICsJCSAodmlvX2lkeCA+PSA0ODYgJiYgdmlvX2lkeCA8PSA0ODgpKQ0KPiA+ICsJCXJldHVy biA2Ow0KPiA+ICsJZWxzZSBpZiAoKHZpb19pZHggPj0gMTU2ICYmIHZpb19pZHggPD0gMTU3KSB8 fA0KPiA+ICsJCSAodmlvX2lkeCA+PSAxNTkgJiYgdmlvX2lkeCA8PSAxNjUpKQ0KPiA+ICsJCXJl dHVybiA3Ow0KPiA+ICsJZWxzZSBpZiAoKHZpb19pZHggPj0gMTY2ICYmIHZpb19pZHggPD0gMTgx KSB8fA0KPiA+ICsJCSAodmlvX2lkeCA+PSA0NzMgJiYgdmlvX2lkeCA8PSA0NzUpKQ0KPiA+ICsJ CXJldHVybiA4Ow0KPiA+ICsJZWxzZSBpZiAoKHZpb19pZHggPj0gMTgyICYmIHZpb19pZHggPD0g MTk3KSB8fA0KPiA+ICsJCSAodmlvX2lkeCA+PSA0NzYgJiYgdmlvX2lkeCA8PSA0NzgpKQ0KPiA+ ICsJCXJldHVybiA5Ow0KPiA+ICsJZWxzZSBpZiAoKHZpb19pZHggPj0gMTk4ICYmIHZpb19pZHgg PD0gMjA1KSB8fA0KPiA+ICsJCSAodmlvX2lkeCA+PSA0NzkgJiYgdmlvX2lkeCA8PSA0ODEpKQ0K PiA+ICsJCXJldHVybiAxMDsNCj4gPiArCWVsc2UgaWYgKCh2aW9faWR4ID49IDIxNCAmJiB2aW9f aWR4IDw9IDIyOSkgfHwNCj4gPiArCQkgKHZpb19pZHggPj0gNDgyICYmIHZpb19pZHggPD0gNDg0 KSkNCj4gPiArCQlyZXR1cm4gMTE7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDIzMCkNCj4g PiArCQlyZXR1cm4gMTI7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDE1OCkNCj4gPiArCQly ZXR1cm4gMTM7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDIzMSB8fCB2aW9faWR4ID09IDM4 MikNCj4gPiArCQlyZXR1cm4gMTQ7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID49IDIzMiAmJiB2 aW9faWR4IDw9IDI0NCkNCj4gPiArCQlyZXR1cm4gMTU7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4 ID49IDI0NSAmJiB2aW9faWR4IDw9IDQ3OCkNCj4gPiArCQlyZXR1cm4gMTY7DQo+ID4gKwllbHNl IGlmICh2aW9faWR4ID49IDUwNCAmJiB2aW9faWR4IDw9IDUwNSkNCj4gPiArCQlyZXR1cm4gMTc7 DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDQ5NCkNCj4gPiArCQlyZXR1cm4gMTg7DQo+ID4g KwllbHNlIGlmICh2aW9faWR4ID09IDUwMykNCj4gPiArCQlyZXR1cm4gMTk7DQo+ID4gKwllbHNl IGlmICh2aW9faWR4ID09IDUwMSkNCj4gPiArCQlyZXR1cm4gMjA7DQo+ID4gKwllbHNlIGlmICh2 aW9faWR4ID09IDUwMikNCj4gPiArCQlyZXR1cm4gMjE7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4 ID09IDUwNikNCj4gPiArCQlyZXR1cm4gMjI7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDUw NykNCj4gPiArCQlyZXR1cm4gMjM7DQo+ID4gKwllbHNlIGlmICh2aW9faWR4ID09IDUwOCkNCj4g PiArCQlyZXR1cm4gMjQ7DQo+ID4gKwllbHNlIGlmICgodmlvX2lkeCA+PSAyMDYgJiYgdmlvX2lk eCA8PSAyMTMpIHx8DQo+ID4gKwkJICh2aW9faWR4ID49IDQ5OCAmJiB2aW9faWR4IDw9IDUwMCkp DQo+ID4gKwkJcmV0dXJuIDI1Ow0KPiA+ICsNCj4gPiArCXJldHVybiAzMTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoNCj4gPiArICogbXRrX2RldmFwY19wZF9nZXQgLSBnZXQgZGV2YXBjIHBkX3R5 cGVzIG9mIHJlZ2lzdGVyIGFkZHJlc3MuDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybnMgdGhlIHZh bHVlIG9mIHJlZyBhZGRyDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgdm9pZCBfX2lvbWVtICptdGtf ZGV2YXBjX3BkX2dldChzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0ICpkZXZhcGNfY3R4LA0KPiA+ ICsJCQkJICAgICAgIGludCBzbGF2ZV90eXBlLA0KPiA+ICsJCQkJICAgICAgIGVudW0gREVWQVBD X1BEX1JFR19UWVBFIHBkX3JlZ190eXBlLA0KPiA+ICsJCQkJICAgICAgIHUzMiBpbmRleCkNCj4g PiArew0KPiA+ICsJY29uc3QgdTMyICpkZXZhcGNfcGRzID0gbXQ2Nzc5X2RldmFwY19wZHM7DQo+ ID4gKwl2b2lkIF9faW9tZW0gKnJlZzsNCj4gPiArDQo+ID4gKwlyZWcgPSBkZXZhcGNfY3R4LT5k ZXZhcGNfcGRfYmFzZVtzbGF2ZV90eXBlXSArIGRldmFwY19wZHNbcGRfcmVnX3R5cGVdOw0KPiA+ ICsNCj4gPiArCWlmIChwZF9yZWdfdHlwZSA9PSBWSU9fTUFTSyB8fCBwZF9yZWdfdHlwZSA9PSBW SU9fU1RBKQ0KPiA+ICsJCXJlZyArPSAweDQgKiBpbmRleDsNCj4gPiArDQo+ID4gKwlyZXR1cm4g cmVnOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNoZWNrX3Zpb19tYXNrX3N0YShz dHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0ICpkZXZhcGNfY3R4LA0KPiA+ICsJCQkgICAgICBpbnQg c2xhdmVfdHlwZSwgdTMyIG1vZHVsZSwgaW50IHBkX3JlZ190eXBlKQ0KPiA+ICt7DQo+ID4gKwl1 MzIgYXBjX3JlZ2lzdGVyX2luZGV4LCBhcGNfc2V0X2luZGV4Ow0KPiA+ICsJdm9pZCBfX2lvbWVt ICpyZWc7DQo+ID4gKwl1MzIgdmFsdWU7DQo+ID4gKw0KPiA+ICsJYXBjX3JlZ2lzdGVyX2luZGV4 ID0gbW9kdWxlIC8gKE1PRF9OTV9JTl8xX0RFVkFQQyAqIDIpOw0KPiA+ICsJYXBjX3NldF9pbmRl eCA9IG1vZHVsZSAlIChNT0RfTk1fSU5fMV9ERVZBUEMgKiAyKTsNCj4gPiArDQo+ID4gKwlpZiAo YXBjX3JlZ2lzdGVyX2luZGV4IDwgbXRrX3Zpb19tYXNrX3N0YV9udW1bc2xhdmVfdHlwZV0pDQo+ ID4gKwkJcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgcGRf cmVnX3R5cGUsDQo+ID4gKwkJCQkJYXBjX3JlZ2lzdGVyX2luZGV4KTsNCj4gPiArCWVsc2UNCj4g PiArCQlyZXR1cm4gLUVPVkVSRkxPVzsNCj4gDQo+IEhvdyBjb3VsZCB0aGF0IGhhcHBlbj8NCj4g DQoNCkN1cnJlbnRseSwgYWxsIGNvbXBvbmVudHMgYXJlIGluc2lkZSB0aGlzIGRyaXZlci4gVGhp cyBpcyBub3QgbmVjZXNzYXJ5DQphdCBhbGwuIEknbGwgcmVtb3ZlIGl0Lg0KDQo+ID4gKw0KPiA+ ICsJdmFsdWUgPSAocmVhZGwocmVnKSAmICgweDEgPDwgYXBjX3NldF9pbmRleCkpID4+IGFwY19z ZXRfaW5kZXg7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHZhbHVlOw0KPiANCj4gdmFsdWUgPSByZWFk bChyZWcpOw0KPiByZXR1cm4gKCh2YWx1ZSA+PiBhcGNfc2V0X2luZGV4KSAmIDB4MSk7DQoNCklz IGl0IGZvciByZWFkYWJpbGl0eT8NCg0KPiANCj4gDQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgY2hlY2tfdmlvX21hc2soc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqZGV2YXBjX2N0 eCwgaW50IHNsYXZlX3R5cGUsDQo+ID4gKwkJCSAgdTMyIG1vZHVsZSkNCj4gPiArew0KPiA+ICsJ cmV0dXJuIGNoZWNrX3Zpb19tYXNrX3N0YShkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCBtb2R1bGUs IFZJT19NQVNLKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjaGVja192aW9fc3Rh dHVzKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgsDQo+ID4gKwkJCSAgICBp bnQgc2xhdmVfdHlwZSwgdTMyIG1vZHVsZSkNCj4gPiArew0KPiA+ICsJcmV0dXJuIGNoZWNrX3Zp b19tYXNrX3N0YShkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCBtb2R1bGUsIFZJT19TVEEpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjbGVhcl92aW9fc3RhdHVzKHN0cnVjdCBtdGtf ZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgsDQo+ID4gKwkJCSAgICAgaW50IHNsYXZlX3R5cGUs IHUzMiBtb2R1bGUpDQo+ID4gK3sNCj4gPiArCXUzMiBhcGNfcmVnaXN0ZXJfaW5kZXgsIGFwY19z ZXRfaW5kZXg7DQo+ID4gKwl2b2lkIF9faW9tZW0gKnJlZzsNCj4gPiArDQo+ID4gKwlhcGNfcmVn aXN0ZXJfaW5kZXggPSBtb2R1bGUgLyAoTU9EX05NX0lOXzFfREVWQVBDICogMik7DQo+ID4gKwlh cGNfc2V0X2luZGV4ID0gbW9kdWxlICUgKE1PRF9OTV9JTl8xX0RFVkFQQyAqIDIpOw0KPiANCj4g V2hhdCBkb2VzIE1PRF9OTV9JTl8xX0RFVkFQQyBzdGFuZHMgZm9yPyBXaHkgZG8geW91IGRlZmlu ZSBpdCB3aXRoIDE2IHdoZW4NCj4gYWZ0ZXJ3YXJkcyB5b3Ugb25seSB1c2UgaXQgd2l0aCB2YWx1 ZSAzMj8gRG8gSSB1bmRlcnN0YW5kIGNvcnJlY3RseSB0aGF0IHRoaXMNCj4gY2FsY3VsYXRlcyB0 aGUgcmVnaXN0ZXIgb2Zmc2V0IGFuZCBiaXQgaW4gdGhlIHJlZ2lzdGVyIHRvIHdyaXRlIHRvPw0K DQpZZXMhIEVhY2ggbW9kdWxlIHZpb2xhdGlvbiBpbmRleCBzdGFuZHMgZm9yIDEgYml0LCBzbyB0 aGVyZSBhcmUgMzINCm1vZHVsZXMgaW4gMSBkZXZhcGMgcmVnaXN0ZXIuDQpJIHRoaW5rIE1PRF9O VU1fSU5fMV9ERVZBUEMgaXMgbm90IG5lY2Vzc2FyeSwgSSdsbCByZW1vdmUgaXQgYW5kDQpoYXJk Y29kZSAiMzIiIGZvciB0aGlzIGNhbGN1bGF0aW9uLg0KDQo+IA0KPiA+ICsNCj4gPiArCWlmIChh cGNfcmVnaXN0ZXJfaW5kZXggPCBtdGtfdmlvX21hc2tfc3RhX251bVtzbGF2ZV90eXBlXSkgew0K PiANCj4gbXRrX3Zpb19tYXNrX3N0YV9udW1bc2xhdmVfdHlwZV0gPT0gbWF4aW11bSBvZiByZWdp c3RlcnMgdGhhdCBjYW4gYmUgYWNjZXNzZWQ/DQoNCllhcC4gVGhpcyBjb2RlIGlzIG5vdCBuZWNl c3NhcnkuDQpEaXR0by4NCg0KPiANCj4gPiArCQlyZWcgPSBtdGtfZGV2YXBjX3BkX2dldChkZXZh cGNfY3R4LCBzbGF2ZV90eXBlLCBWSU9fU1RBLA0KPiA+ICsJCQkJCWFwY19yZWdpc3Rlcl9pbmRl eCk7DQo+ID4gKwkJd3JpdGVsKDB4MSA8PCBhcGNfc2V0X2luZGV4LCByZWcpOw0KPiA+ICsNCj4g PiArCX0gZWxzZSB7DQo+ID4gKwkJcHJfZXJyKFBGWCAiJXM6IE91dCBPZiBCb3VuZGFyeSwgc2xh dmVfdHlwZToweCV4LCBtb2R1bGVfaW5kZXg6MHgleFxuIiwNCj4gPiArCQkgICAgICAgX19mdW5j X18sIHNsYXZlX3R5cGUsIG1vZHVsZSk7DQo+IA0KPiBPbmx5IHVzZWQgaW50ZXJuYWxseSBieSB0 aGUgZHJpdmVyLCB3aHkgY2FuJ3Qgd2Ugc3VwcG9zZSB0aGF0IHRoZSBkcml2ZXIgZG9lcw0KPiBu b3QgaW1wbGVtZW50IG1vZHVsZSBudW1iZXIgb3V0c2lkZSBvZiB0aGUgYWNjZXNzaWJsZSByZWdp c3RlcnM/IEkgdGhpbmsgdGhpcw0KPiBjYW4gYmUgZHJvcHBlZC4NCj4gDQoNCkRpdHRvDQoNCj4g PiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNoZWNrX3Zpb19zdGF0dXMo ZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgbW9kdWxlKSkNCj4gPiArCQlwcl9lcnIoUEZYICIlczog Q2xlYXIgZmFpbGVkLCBzbGF2ZV90eXBlOjB4JXgsIG1vZHVsZV9pbmRleDoweCV4XG4iLA0KPiA+ ICsJCSAgICAgICBfX2Z1bmNfXywgc2xhdmVfdHlwZSwgbW9kdWxlKTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIHZvaWQgbWFza19tb2R1bGVfaXJxKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRl eHQgKmRldmFwY19jdHgsDQo+ID4gKwkJCSAgICBpbnQgc2xhdmVfdHlwZSwgdTMyIG1vZHVsZSwg Ym9vbCBtYXNrKQ0KPiA+ICt7DQo+ID4gKwl1MzIgYXBjX3JlZ2lzdGVyX2luZGV4LCBhcGNfc2V0 X2luZGV4Ow0KPiA+ICsJdm9pZCBfX2lvbWVtICpyZWc7DQo+ID4gKw0KPiA+ICsJYXBjX3JlZ2lz dGVyX2luZGV4ID0gbW9kdWxlIC8gKE1PRF9OTV9JTl8xX0RFVkFQQyAqIDIpOw0KPiA+ICsJYXBj X3NldF9pbmRleCA9IG1vZHVsZSAlIChNT0RfTk1fSU5fMV9ERVZBUEMgKiAyKTsNCj4gDQo+IEJl dHRlciBhZGQgYSBtYWNybyBmb3IgdGhpcyBhbmQgcmVuYW1lIHNldF9pbmRleCBpbnRvIHJlZ2lz dGVyX29mZnNldD8NCg0KSSBhZ3JlZS4NCkRvIHlvdSBzdWdnZXN0IHRvIGluY2x1ZGUgdmFyaWFi bGUgZGVjbGFyYXRpb24gaW50byBtYXJjbz8gT3IganVzdA0KY2FsY3VsYXRpb24gb25seT8NCg0K PiANCj4gPiArDQo+ID4gKwlpZiAoYXBjX3JlZ2lzdGVyX2luZGV4IDwgbXRrX3Zpb19tYXNrX3N0 YV9udW1bc2xhdmVfdHlwZV0pIHsNCj4gPiArCQlyZWcgPSBtdGtfZGV2YXBjX3BkX2dldChkZXZh cGNfY3R4LCBzbGF2ZV90eXBlLCBWSU9fTUFTSywNCj4gPiArCQkJCQlhcGNfcmVnaXN0ZXJfaW5k ZXgpOw0KPiANCj4gSSBkb24ndCBsaWtlIHRoaXMgY29kZSBhbGwgb3ZlciB0aGUgcGxhY2UsIGNv dWxkIGFkZCB0aGUgY29ycmVjdCBvZmZzZXQgdG8NCj4gbXRrX2RldmljZV9pbmZvIGFuZCBqdXN0 IGFkZCBpdCBpbiByZWFkbC93cml0ZWwgZGlyZWN0bHk/DQoNCkRpdHRvLg0KDQo+IA0KPiA+ICsN Cj4gPiArCQlpZiAobWFzaykNCj4gPiArCQkJd3JpdGVsKHJlYWRsKHJlZykgfCAoMSA8PCBhcGNf c2V0X2luZGV4KSwgcmVnKTsNCj4gPiArCQllbHNlDQo+ID4gKwkJCXdyaXRlbChyZWFkbChyZWcp ICYgKH4oMSA8PCBhcGNfc2V0X2luZGV4KSksIHJlZyk7DQo+IA0KPiB2YWx1ZSA9IHJlYWRsKHJl Zyk7DQo+IA0KPiBpZiAobWFzaykNCj4gCXZhbHVlIHw9ICgweDEgPDwgYXBjX3NldF9pbmRleCk7 DQo+IGVsc2UNCj4gCXZhbHVlICY9IH4oMHgxIDw8IGFwY19zZXRfaW5kZXgpOw0KPiANCj4gd3Jp dGVsKHZhbHVlKTsNCj4gDQoNCklzIGl0IGZvciByZWFkYWJpbGl0eT8NCg0KPiA+ICsNCj4gPiAr CX0gZWxzZSB7DQo+ID4gKwkJcHJfZXJyKFBGWCAiJXM6IE91dCBPZiBCb3VuZGFyeSwgc2xhdmVf dHlwZToweCV4LCBtb2R1bGVfaW5kZXg6MHgleCwgbWFzazolc1xuIiwNCj4gPiArCQkgICAgICAg X19mdW5jX18sIHNsYXZlX3R5cGUsIG1vZHVsZSwgbWFzayA/ICJ0cnVlIiA6ICJmYWxzZSIpOw0K PiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBzeW5jX3Zpb19kYmcgLSBz dGFydCB0byBnZXQgdmlvbGF0aW9uIGluZm9ybWF0aW9uIGJ5IHNlbGVjdGluZyB2aW9sYXRpb24N Cj4gPiArICoJCSAgZ3JvdXAgYW5kIGVuYWJsZSB2aW9sYXRpb24gc2hpZnQuDQo+ID4gKyAqDQo+ ID4gKyAqIFJldHVybnMgc3luYyBkb25lIG9yIG5vdA0KPiA+ICsgKi8NCj4gPiArc3RhdGljIHUz MiBzeW5jX3Zpb19kYmcoc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqZGV2YXBjX2N0eCwgaW50 IHNsYXZlX3R5cGUsDQo+ID4gKwkJCXUzMiBzaGlmdF9iaXQpDQo+ID4gK3sNCj4gPiArCXZvaWQg X19pb21lbSAqcGRfdmlvX3NoaWZ0X3N0YV9yZWc7DQo+ID4gKwl2b2lkIF9faW9tZW0gKnBkX3Zp b19zaGlmdF9zZWxfcmVnOw0KPiA+ICsJdm9pZCBfX2lvbWVtICpwZF92aW9fc2hpZnRfY29uX3Jl ZzsNCj4gPiArCXUzMiBzaGlmdF9jb3VudDsNCj4gPiArCXUzMiBzeW5jX2RvbmU7DQo+ID4gKw0K PiA+ICsJcGRfdmlvX3NoaWZ0X3N0YV9yZWcgPSBtdGtfZGV2YXBjX3BkX2dldChkZXZhcGNfY3R4 LCBzbGF2ZV90eXBlLA0KPiA+ICsJCQkJCQkgVklPX1NISUZUX1NUQSwgMCk7DQo+ID4gKwlwZF92 aW9fc2hpZnRfc2VsX3JlZyA9IG10a19kZXZhcGNfcGRfZ2V0KGRldmFwY19jdHgsIHNsYXZlX3R5 cGUsDQo+ID4gKwkJCQkJCSBWSU9fU0hJRlRfU0VMLCAwKTsNCj4gPiArCXBkX3Zpb19zaGlmdF9j b25fcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwNCj4gPiAr CQkJCQkJIFZJT19TSElGVF9DT04sIDApOw0KPiA+ICsNCj4gPiArCXdyaXRlbCgweDEgPDwgc2hp ZnRfYml0LCBwZF92aW9fc2hpZnRfc2VsX3JlZyk7DQo+ID4gKwl3cml0ZWwoMHgxLCBwZF92aW9f c2hpZnRfY29uX3JlZyk7DQo+ID4gKw0KPiA+ICsJZm9yIChzaGlmdF9jb3VudCA9IDA7IChzaGlm dF9jb3VudCA8IDEwMCkgJiYNCj4gPiArCSAgICAgKChyZWFkbChwZF92aW9fc2hpZnRfY29uX3Jl ZykgJiAweDMpICE9IDB4Myk7DQo+ID4gKwkgICAgICsrc2hpZnRfY291bnQpDQo+IA0KPiBVc2Ug cmVhZF9wb2xsX3RpbWVvdXQgaGVyZSwgd2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gdGhlIHRp bWUgMTAwIHJlYWRzIG5lZWQsDQo+IGFzIGZyb20gbXkgdW5kZXJzdGFuZGluZyB0aGlzIGRlcGVu ZHMgb24gdGhlIChkeW5hbWljKSBjbG9jayBmcmVxdWVuY3kuDQo+IA0KDQpPa2F5LCBJJ2xsIHRy eSByZWFkX3BvbGxfdGltZW91dCBoZXJlLg0KDQo+ID4gKwkJOw0KPiA+ICsNCj4gPiArCWlmICgo cmVhZGwocGRfdmlvX3NoaWZ0X2Nvbl9yZWcpICYgMHgzKSA9PSAweDMpDQo+IA0KPiBXZSBjYW4g cmVhZCB0aGUgdmFsdWUgdmlhIHJlYWRsX3BvbGxfdGltZW91dC4gTm8gbmVlZCB0byByZWFkIGl0 IGFnYWluIGhlcmUuDQoNCkRpdHRvLg0KDQo+IA0KPiA+ICsJCXN5bmNfZG9uZSA9IDE7DQo+ID4g KwllbHNlDQo+ID4gKwkJc3luY19kb25lID0gMDsNCj4gPiArDQo+ID4gKwkvKiBEaXNhYmxlIHNo aWZ0IG1lY2hhbmlzbSAqLw0KPiANCj4gV2hhdCBpcyB0aGUgInNoaWZ0IG1lY2hhbmlzbSI/DQoN CiJzaGlmdCBtZWNoYW5pc20iIGlzIGRlcGVuZHMgb24gZGV2YXBjIGhhcmR3YXJlIGRlc2lnbi4N CldlIHNldCBtdWx0aXBsZSBzbGF2ZXMgYXMgYSBncm91cC4gV2hlbiB2aW9sYXRpb24gaXMgdHJp Z2dlcmVkLA0KdmlvbGF0aW9uIGluZm9ybWF0aW9uIGlzIGtlcHQgaW5zaWRlIGhhcmR3YXJlLiAo Q2Fubm90IGdldCBmdWxsDQppbmZvcm1hdGlvbiBmcm9tIHJlZ2lzdGVycy4pDQpXZSBoYXZlIHRv IGRvICJzaGlmdCBtZWNoYW5pc20iIHRvIHNoaWZ0IHZpb2xhdGlvbiBpbmZvcm1hdGlvbiB0bw0K VklPX0RCRzAsIFZJT19EQkcxIHJlZ2lzdGVycy4NCg0KWW91IGNhbiBzZWUgd2UgaGF2ZSB0byBk byBzeW5jX3Zpb19kYmcoKSBiZWZvcmUgZ2V0dGluZyBmdWxsIHZpb2xhdGlvbg0KaW5mb3JtYXRp b24gKGRldmFwY19leHRyYWN0X3Zpb19kYmcoKSkuDQoNCj4gDQo+ID4gKwl3cml0ZWwoMHgwLCBw ZF92aW9fc2hpZnRfY29uX3JlZyk7DQo+ID4gKwl3cml0ZWwoMHgwLCBwZF92aW9fc2hpZnRfc2Vs X3JlZyk7DQo+ID4gKwl3cml0ZWwoMHgxIDw8IHNoaWZ0X2JpdCwgcGRfdmlvX3NoaWZ0X3N0YV9y ZWcpOw0KPiA+ICsNCj4gPiArCXJldHVybiBzeW5jX2RvbmU7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyB2b2lkIGRldmFwY192aW9faW5mb19wcmludChzdHJ1Y3QgbXRrX2RldmFwY19jb250 ZXh0ICpkZXZhcGNfY3R4KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbXRrX2RldmFwY192aW9faW5m byAqdmlvX2luZm8gPSBkZXZhcGNfY3R4LT52aW9faW5mbzsNCj4gPiArDQo+ID4gKwkvKiBQcmlu dCB2aW9sYXRpb24gaW5mb3JtYXRpb24gKi8NCj4gPiArCWlmICh2aW9faW5mby0+d3JpdGUpDQo+ ID4gKwkJcHJfaW5mbyhQRlggIldyaXRlIFZpb2xhdGlvblxuIik7DQo+ID4gKwllbHNlIGlmICh2 aW9faW5mby0+cmVhZCkNCj4gPiArCQlwcl9pbmZvKFBGWCAiUmVhZCBWaW9sYXRpb25cbiIpOw0K PiA+ICsNCj4gPiArCXByX2luZm8oUEZYICIlcyV4LCAlcyV4LCAlcyV4LCAlcyV4XG4iLA0KPiA+ ICsJCSJWaW8gQWRkcjoweCIsIHZpb19pbmZvLT52aW9fYWRkciwNCj4gPiArCQkiSGlnaDoweCIs IHZpb19pbmZvLT52aW9fYWRkcl9oaWdoLA0KPiA+ICsJCSJCdXMgSUQ6MHgiLCB2aW9faW5mby0+ bWFzdGVyX2lkLA0KPiA+ICsJCSJEb20gSUQ6MHgiLCB2aW9faW5mby0+ZG9tYWluX2lkKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZGV2YXBjX2V4dHJhY3RfdmlvX2RiZyhzdHJ1 Y3QgbXRrX2RldmFwY19jb250ZXh0ICpkZXZhcGNfY3R4LA0KPiA+ICsJCQkJICAgaW50IHNsYXZl X3R5cGUpDQo+ID4gK3sNCj4gPiArCXZvaWQgX19pb21lbSAqdmlvX2RiZzBfcmVnLCAqdmlvX2Ri ZzFfcmVnOw0KPiA+ICsJY29uc3Qgc3RydWN0IG10a19pbmZyYV92aW9fZGJnX2Rlc2MgKnZpb19k YmdzOw0KPiA+ICsJc3RydWN0IG10a19kZXZhcGNfdmlvX2luZm8gKnZpb19pbmZvOw0KPiA+ICsJ dTMyIGRiZzA7DQo+ID4gKw0KPiA+ICsJdmlvX2RiZzBfcmVnID0gbXRrX2RldmFwY19wZF9nZXQo ZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgVklPX0RCRzAsIDApOw0KPiA+ICsJdmlvX2RiZzFfcmVn ID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgVklPX0RCRzEsIDAp Ow0KPiA+ICsNCj4gPiArCXZpb19kYmdzID0gJm10Njc3OV92aW9fZGJnczsNCj4gPiArCXZpb19p bmZvID0gZGV2YXBjX2N0eC0+dmlvX2luZm87DQo+ID4gKw0KPiA+ICsJLyogRXh0cmFjdCB2aW9s YXRpb24gaW5mb3JtYXRpb24gKi8NCj4gPiArCWRiZzAgPSByZWFkbCh2aW9fZGJnMF9yZWcpOw0K PiA+ICsJdmlvX2luZm8tPnZpb19hZGRyID0gcmVhZGwodmlvX2RiZzFfcmVnKTsNCj4gPiArDQo+ ID4gKwl2aW9faW5mby0+bWFzdGVyX2lkID0gKGRiZzAgJiB2aW9fZGJncy0+dmlvX2RiZ19tc3Rp ZCkgPj4NCj4gPiArCQkJICAgICAgdmlvX2RiZ3MtPnZpb19kYmdfbXN0aWRfc3RhcnRfYml0Ow0K PiA+ICsJdmlvX2luZm8tPmRvbWFpbl9pZCA9IChkYmcwICYgdmlvX2RiZ3MtPnZpb19kYmdfZG1u aWQpID4+DQo+ID4gKwkJCSAgICAgIHZpb19kYmdzLT52aW9fZGJnX2RtbmlkX3N0YXJ0X2JpdDsN Cj4gPiArCXZpb19pbmZvLT53cml0ZSA9ICgoZGJnMCAmIHZpb19kYmdzLT52aW9fZGJnX3dfdmlv KSA+Pg0KPiA+ICsJCQkgICB2aW9fZGJncy0+dmlvX2RiZ193X3Zpb19zdGFydF9iaXQpID09IDE7 DQo+ID4gKwl2aW9faW5mby0+cmVhZCA9ICgoZGJnMCAmIHZpb19kYmdzLT52aW9fZGJnX3Jfdmlv KSA+Pg0KPiA+ICsJCQkgIHZpb19kYmdzLT52aW9fZGJnX3JfdmlvX3N0YXJ0X2JpdCkgPT0gMTsN Cj4gDQo+IFdlIGNhbiBoYXZlIHJlYWQgYW5kIHdyaXRlIHZpb2xhdGlvbiBhdCBhIHRpbWU/DQoN Ck5vLCBidXQgaXQga2VlcHMgaW5kZXBlbmRlbnRseS4NCg0KPiANCj4gPiArCXZpb19pbmZvLT52 aW9fYWRkcl9oaWdoID0gKGRiZzAgJiB2aW9fZGJncy0+dmlvX2FkZHJfaGlnaCkgPj4NCj4gPiAr CQkJCSAgdmlvX2RiZ3MtPnZpb19hZGRyX2hpZ2hfc3RhcnRfYml0Ow0KPiA+ICsNCj4gPiArCWRl dmFwY192aW9faW5mb19wcmludChkZXZhcGNfY3R4KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoN Cj4gPiArICogbXRrX2RldmFwY19kdW1wX3Zpb19kYmcgLSBzaGlmdCAmIGR1bXAgdGhlIHZpb2xh dGlvbiBkZWJ1ZyBpbmZvcm1hdGlvbi4NCj4gPiArICovDQo+ID4gK3N0YXRpYyBib29sIG10a19k ZXZhcGNfZHVtcF92aW9fZGJnKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgs DQo+ID4gKwkJCQkgICAgaW50IHNsYXZlX3R5cGUsIGludCAqdmlvX2lkeCwgaW50ICppbmRleCkN Cj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IG10a19kZXZpY2VfaW5mbyAqKmRldmljZV9pbmZv Ow0KPiA+ICsJY29uc3Qgc3RydWN0IG10a19kZXZpY2VfbnVtICpuZGV2aWNlczsNCj4gPiArCXZv aWQgX19pb21lbSAqcGRfdmlvX3NoaWZ0X3N0YV9yZWc7DQo+ID4gKwl1MzIgc2hpZnRfYml0Ow0K PiA+ICsJaW50IGk7DQo+ID4gKw0KPiA+ICsJaWYgKCF2aW9faWR4KQ0KPiA+ICsJCXJldHVybiBO VUxMOw0KPiA+ICsNCj4gPiArCWRldmljZV9pbmZvID0gZGV2YXBjX2N0eC0+ZGV2aWNlX2luZm87 DQo+ID4gKwluZGV2aWNlcyA9IG10azY3NzlfZGV2aWNlc19udW07DQo+ID4gKw0KPiA+ICsJcGRf dmlvX3NoaWZ0X3N0YV9yZWcgPSBtdGtfZGV2YXBjX3BkX2dldChkZXZhcGNfY3R4LCBzbGF2ZV90 eXBlLA0KPiA+ICsJCQkJCQkgVklPX1NISUZUX1NUQSwgMCk7DQo+ID4gKw0KPiA+ICsJZm9yIChp ID0gMDsgaSA8IG5kZXZpY2VzW3NsYXZlX3R5cGVdLnZpb19zbGF2ZV9udW07IGkrKykgew0KPiA+ ICsJCSp2aW9faWR4ID0gZGV2aWNlX2luZm9bc2xhdmVfdHlwZV1baV0udmlvX2luZGV4Ow0KPiA+ ICsNCj4gPiArCQlpZiAoY2hlY2tfdmlvX21hc2soZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgKnZp b19pZHgpKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArDQo+ID4gKwkJaWYgKGNoZWNrX3Zpb19z dGF0dXMoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgKnZpb19pZHgpIDw9IDApDQo+ID4gKwkJCWNv bnRpbnVlOw0KPiA+ICsNCj4gPiArCQlzaGlmdF9iaXQgPSBtdDY3Nzlfc2hpZnRfZ3JvdXBfZ2V0 KCp2aW9faWR4KTsNCj4gDQo+IHNoaWZ0X2JpdCBzaG91bGQgYmUgcGFydCBvZiBtdGtfZGV2aWNl X2luZm8gZGF0YSBzdHJ1Y3R1cmUuDQo+IFlvdSBjYW4gY3JlYXRlIHR3byBtYWNyb3MgdG8gZGVm aW5lIG10a19kZXZpY2VfaW5mbyBlbnRyaWVzLCBvbmUgd2hpY2ggc2V0cyB0aGUNCj4gc2hpZnQg Yml0IHRvIDMxIGFuZCBhbm90aGVyIG9uZSwgdGhhdCBhbGxvd3MgZm9yIHNldHRpbmcgdGhlIGJp dCBleHBsaWNpdGVseS4NCg0KVGhpcyBpcyBhbm90aGVyIHdheSB0byBnZXQgc2hpZnQgYml0LiBX aGF0IGJlbmVmaXQgY291bGQgd2UgZ2V0Pw0KSSBjb3VsZCBvbmx5IGltYWdpbmUgYXJyYXkgaW5k ZXhpbmcgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBmdW5jdGlvbg0KY2FsbC4gQnV0IHdlIGRvIG5v dCByZWFsbHkgY2FyZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IHNpbmNlIHRoZQ0KdmlvbGF0aW9u IHNjZW5hcmlvIGlzIHVuZXhwZWN0ZWQuDQoNCj4gDQo+ID4gKw0KPiA+ICsJCWlmICghc3luY192 aW9fZGJnKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsIHNoaWZ0X2JpdCkpDQo+ID4gKwkJCWNvbnRp bnVlOw0KPiA+ICsNCj4gPiArCQlkZXZhcGNfZXh0cmFjdF92aW9fZGJnKGRldmFwY19jdHgsIHNs YXZlX3R5cGUpOw0KPiA+ICsJCSppbmRleCA9IGk7DQo+ID4gKw0KPiA+ICsJCXJldHVybiB0cnVl Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBmYWxzZTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoNCj4gPiArICogZGV2YXBjX3Zpb2xhdGlvbl9pcnEgLSB0aGUgZGV2YXBjIEludGVycnVw dCBTZXJ2aWNlIFJvdXRpbmUgKElTUikgd2lsbCBkdW1wDQo+ID4gKyAqCQkJICB2aW9sYXRpb24g aW5mb3JtYXRpb24gaW5jbHVkaW5nIHdoaWNoIG1hc3RlciB2aW9sYXRlcw0KPiA+ICsgKgkJCSAg YWNjZXNzIHNsYXZlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlycXJldHVybl90IGRldmFwY192 aW9sYXRpb25faXJxKGludCBpcnFfbnVtYmVyLA0KPiA+ICsJCQkJCXN0cnVjdCBtdGtfZGV2YXBj X2NvbnRleHQgKmRldmFwY19jdHgpDQo+ID4gK3sNCj4gPiArCWNvbnN0IHN0cnVjdCBtdGtfZGV2 aWNlX2luZm8gKipkZXZpY2VfaW5mbyA9IGRldmFwY19jdHgtPmRldmljZV9pbmZvOw0KPiA+ICsJ aW50IHZpb19pZHggPSAtMTsNCj4gPiArCWludCBpbmRleCA9IC0xOw0KPiA+ICsJaW50IHNsYXZl X3R5cGU7DQo+ID4gKw0KPiA+ICsJZm9yIChzbGF2ZV90eXBlID0gMDsgc2xhdmVfdHlwZSA8IFNM QVZFX1RZUEVfTlVNOyBzbGF2ZV90eXBlKyspIHsNCj4gPiArCQlpZiAoIW10a19kZXZhcGNfZHVt cF92aW9fZGJnKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsICZ2aW9faWR4LA0KPiA+ICsJCQkJCSAg ICAgJmluZGV4KSkNCj4gPiArCQkJY29udGludWU7DQo+ID4gKw0KPiA+ICsJCS8qIEVuc3VyZSB0 aGF0IHZpb2xhdGlvbiBpbmZvIGFyZSB3cml0dGVuIGJlZm9yZQ0KPiA+ICsJCSAqIGZ1cnRoZXIg b3BlcmF0aW9ucw0KPiA+ICsJCSAqLw0KPiA+ICsJCXNtcF9tYigpOw0KPiA+ICsNCj4gPiArCQlt YXNrX21vZHVsZV9pcnEoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgdmlvX2lkeCwgdHJ1ZSk7DQo+ ID4gKw0KPiA+ICsJCWNsZWFyX3Zpb19zdGF0dXMoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgdmlv X2lkeCk7DQo+ID4gKw0KPiA+ICsJCXByX2luZm8oUEZYICJWaW9sYXRpb24gLSBzbGF2ZV90eXBl OjB4JXgsIHN5c19pbmRleDoweCV4LCBjdHJsX2luZGV4OjB4JXgsIHZpb19pbmRleDoweCV4XG4i LA0KPiA+ICsJCQlzbGF2ZV90eXBlLA0KPiA+ICsJCQlkZXZpY2VfaW5mb1tzbGF2ZV90eXBlXVtp bmRleF0uc3lzX2luZGV4LA0KPiA+ICsJCQlkZXZpY2VfaW5mb1tzbGF2ZV90eXBlXVtpbmRleF0u Y3RybF9pbmRleCwNCj4gPiArCQkJZGV2aWNlX2luZm9bc2xhdmVfdHlwZV1baW5kZXhdLnZpb19p bmRleCk7DQo+IA0KPiBIb3cgd2lsbCB0aGF0IHRoZW4gYmUgdXNlZD8gV2lsbCB0aGVyZSBzb21l IGtpbmQgb2YgdXNlci1zcGFjZSBkYWVtb24gd2hpY2ggd2lsbA0KPiBwYXJzZSB0aGUga2VybmVs IGxvZyB0byBzZWUgaWYgYSB2aW9sYXRpb24gaGFwcGVucz8gV2hhdCB3aWxsIGl0IGRvIHdpdGgg dGhpcw0KPiBpbmZvcm1hdGlvbj8NCj4gDQo+IEkgc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCB3aHkg d2UgbmVlZCB0byBkbyB0aGF0IGluIHRoZSBrZXJuZWwgaW5zdGVhZCBvZiBpbg0KPiBURi1BLiBD YW4geW91IHBsZWFzZSBleHBsYWluPw0KPiANCg0KV2Ugd291bGQgZG8gZGlmZmVyZW50IGV4dHJh IGhhbmRsZSBmb3IgZGlmZmVyZW50IGJ1cyBtYXN0ZXJzIGludGVybmFsbHkuDQpCYXNpY2FsbHks IGRpZmZlcmVudCBidXMgbWFzdGVycyBoYXZlIGRpZmZlcmVudCBkZWJ1ZyBtZWNoYW5pc20uDQpB bmQgZGlmZmVyZW50IGN1c3RvbWVycyBoYXZlIGRpZmZlcmVudCBzZXZlcml0eSBhYm91dCBkZXZh cGMgdmlvbGF0aW9uLg0KRm9yIGV4YW1wbGUsIGtlcm5lbCBleGNlcHRpb24sIGV4dGVybmFsIGV4 Y2VwdGlvbiwgd2FybmluZywgZG9uJ3QNCmNhcmUsLi4uDQoNCkkgbGlzdCAyIHJlYXNvbiB3aHkg SSBwdXQgaXQgaW4ga2VybmVsIGluc3RlYWQgb2YgQVRGLg0KMS4gUmljaCBPUyBzdWNoIGFzIExp bnV4IGtlcm5lbCBoYXMgbW9yZSBkZWJ1ZyBtZWNoYW5pc20gYW5kIHRvb2xzIHRvDQpmaW5kIG11 cmRlcmVyLg0KMi4gSWYgaW50ZXJydXB0IGhhcyB0byBiZSBoYW5kbGVkIGluIEFURiwgR0lDIGlu dHIgd291bGQgYmUgc2V0IGFzIEcwUw0KKEdyb3VwIDAgU2VjdXJlKS4gRm9yIG91ciBpbnRlcnJ1 cHQgcm91dGluZywgRzBTIGludHIgd291bGQgYmUgZmlxLiBXaGVuDQp3ZSBoYW5kbGUgaXQgaW4g RUwzLCBpdCB3b3VsZCBtYXNrIGFsbCBFTDEgaXJxIHRlbXBvcmFyaWx5LiBXZSBkbyBub3QNCnRy ZWF0IGRldmFwYyBpbnRlcnJ1cHQgYXMgc3VjaCBjcml0aWNhbC4NCg0KRG9lIGl0IG1ha2Ugc2Vu c2U/IE9yIGRvIHlvdSBoYXZlIGFueSByZWFzb24gdGhhdCBpdCBzaG91bGQgYmUgaGFuZGxlZA0K aW4gQVRGPw0KDQo+IA0KPiA+ICsNCj4gPiArCQltYXNrX21vZHVsZV9pcnEoZGV2YXBjX2N0eCwg c2xhdmVfdHlwZSwgdmlvX2lkeCwgZmFsc2UpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVy biBJUlFfSEFORExFRDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogc3RhcnRfZGV2 YXBjIC0gaW5pdGlhbGl6ZSBkZXZhcGMgc3RhdHVzIGFuZCBzdGFydCByZWNlaXZpbmcgaW50ZXJy dXB0DQo+ID4gKyAqCQkgIHdoaWxlIGRldmFwYyB2aW9sYXRpb24gaXMgdHJpZ2dlcmVkLg0KPiA+ ICsgKi8NCj4gPiArc3RhdGljIHZvaWQgc3RhcnRfZGV2YXBjKHN0cnVjdCBtdGtfZGV2YXBjX2Nv bnRleHQgKmRldmFwY19jdHgpDQo+ID4gK3sNCj4gPiArCWNvbnN0IHN0cnVjdCBtdGtfZGV2aWNl X2luZm8gKipkZXZpY2VfaW5mbzsNCj4gPiArCWNvbnN0IHN0cnVjdCBtdGtfZGV2aWNlX251bSAq bmRldmljZXM7DQo+ID4gKwl2b2lkIF9faW9tZW0gKnBkX3Zpb19zaGlmdF9zdGFfcmVnOw0KPiA+ ICsJdm9pZCBfX2lvbWVtICpwZF9hcGNfY29uX3JlZzsNCj4gPiArCWludCBzbGF2ZV90eXBlLCB2 aW9faWR4LCBpOw0KPiA+ICsJdTMyIHZpb19zaGlmdF9zdGE7DQo+ID4gKw0KPiA+ICsJZGV2YXBj X2N0eC0+ZGV2aWNlX2luZm9bMF0gPSBtdDY3NzlfZGV2aWNlc19pbmZyYTsNCj4gDQo+IE9uZSBl bGVtZW50IGFycnkgc2hvdWxkIGJlIGEgc2ltcGxlIHBvaW50ZXIuDQo+IG10Njc3OV9kZXZpY2Vz X2luZnJhIHNob3VsZCBiZSBEVCBkYXRhIGZvciB0aGUgbXQ2Nzc5IGNvbXBhdGlibGUuDQoNClll cywgeW91IGFyZSByaWdodC4gSXQncyBubyBuZWVkIHRvIHVzZSBlbGVtZW50IGFycmF5LiBJJ2xs IHRyeSBpdCBjb3VsZA0KcHV0IGludG8gRFQgZGF0YSBvciBub3QuDQoNCj4gDQo+ID4gKwlkZXZp Y2VfaW5mbyA9IGRldmFwY19jdHgtPmRldmljZV9pbmZvOw0KPiA+ICsJbmRldmljZXMgPSBtdGs2 Nzc5X2RldmljZXNfbnVtOw0KPiA+ICsNCj4gPiArCWZvciAoc2xhdmVfdHlwZSA9IDA7IHNsYXZl X3R5cGUgPCBTTEFWRV9UWVBFX05VTTsgc2xhdmVfdHlwZSsrKSB7DQo+IA0KPiBGb3IgbG9vcCBu b3QgbmVlZGVkLCB3ZSBvbnkgaGF2ZSBvbmUgU0xBVkVfVFlQRS4NCg0KWWVzLCBJJ2xsIGZpeCBp dC4NCg0KPiANCj4gPiArCQlwZF9hcGNfY29uX3JlZyA9IG10a19kZXZhcGNfcGRfZ2V0KGRldmFw Y19jdHgsIHNsYXZlX3R5cGUsDQo+ID4gKwkJCQkJCSAgIEFQQ19DT04sIDApOw0KPiA+ICsJCXBk X3Zpb19zaGlmdF9zdGFfcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVf dHlwZSwNCj4gPiArCQkJCQkJCSBWSU9fU0hJRlRfU1RBLCAwKTsNCj4gPiArDQo+ID4gKwkJaWYg KCFwZF9hcGNfY29uX3JlZyB8fCAhcGRfdmlvX3NoaWZ0X3N0YV9yZWcpDQo+ID4gKwkJCXJldHVy bjsNCj4gPiArDQo+ID4gKwkJLyogQ2xlYXIgZGV2YXBjIHZpb2xhdGlvbiBzdGF0dXMgKi8NCj4g PiArCQl3cml0ZWwoQklUKDMxKSwgcGRfYXBjX2Nvbl9yZWcpOw0KPiA+ICsNCj4gPiArCQkvKiBD bGVhciB2aW9sYXRpb24gc2hpZnQgc3RhdHVzICovDQo+ID4gKwkJdmlvX3NoaWZ0X3N0YSA9IHJl YWRsKHBkX3Zpb19zaGlmdF9zdGFfcmVnKTsNCj4gPiArCQlpZiAodmlvX3NoaWZ0X3N0YSkNCj4g PiArCQkJd3JpdGVsKHZpb19zaGlmdF9zdGEsIHBkX3Zpb19zaGlmdF9zdGFfcmVnKTsNCj4gPiAr DQo+ID4gKwkJLyogQ2xlYXIgc2xhdmUgdmlvbGF0aW9uIHN0YXR1cyAqLw0KPiA+ICsJCWZvciAo aSA9IDA7IGkgPCBuZGV2aWNlc1tzbGF2ZV90eXBlXS52aW9fc2xhdmVfbnVtOyBpKyspIHsNCj4g PiArCQkJdmlvX2lkeCA9IGRldmljZV9pbmZvW3NsYXZlX3R5cGVdW2ldLnZpb19pbmRleDsNCj4g PiArDQo+ID4gKwkJCWNsZWFyX3Zpb19zdGF0dXMoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgdmlv X2lkeCk7DQo+ID4gKw0KPiA+ICsJCQltYXNrX21vZHVsZV9pcnEoZGV2YXBjX2N0eCwgc2xhdmVf dHlwZSwgdmlvX2lkeCwgZmFsc2UpOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsN Cj4gPiArc3RhdGljIGludCBtdDY3NzlfZGV2YXBjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IHBkZXYt PmRldi5vZl9ub2RlOw0KPiA+ICsJc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqZGV2YXBjX2N0 eDsNCj4gPiArCXN0cnVjdCBjbGsgKmRldmFwY19pbmZyYV9jbGs7DQo+ID4gKwl1MzIgZGV2YXBj X2lycTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJaWYgKElTX0VSUihub2RlKSkNCj4g PiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gPiArDQo+ID4gKwlkZXZhcGNfY3R4ID0gZGV2bV9remFs bG9jKCZwZGV2LT5kZXYsIHNpemVvZihzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0KSwNCj4gPiAr CQkJCSAgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIWRldmFwY19jdHgpDQo+ID4gKwkJcmV0dXJu IC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJZGV2YXBjX2N0eC0+dmlvX2luZm8gPSBkZXZtX2t6YWxs b2MoJnBkZXYtPmRldiwNCj4gPiArCQkJCQkgICAgc2l6ZW9mKHN0cnVjdCBtdGtfZGV2YXBjX3Zp b19pbmZvKSwNCj4gPiArCQkJCQkgICAgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIWRldmFwY19j dHgtPnZpb19pbmZvKQ0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiArCWRldmFw Y19jdHgtPmRldmFwY19wZF9iYXNlWzBdID0gb2ZfaW9tYXAobm9kZSwgMCk7DQo+IA0KPiBObyBh cnJheSBuZWVkZWQsIHdlIG9ubHkgaGF2ZSBvbmUgZWxlbWVudC4uLg0KDQpEaXR0by4NCg0KPiAN Cj4gPiArCWlmICghZGV2YXBjX2N0eC0+ZGV2YXBjX3BkX2Jhc2VbMF0pDQo+ID4gKwkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJZGV2YXBjX2lycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFw KG5vZGUsIDApOw0KPiA+ICsJaWYgKCFkZXZhcGNfaXJxKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFM Ow0KPiA+ICsNCj4gPiArCWRldmFwY19pbmZyYV9jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRl diwgImRldmFwYy1pbmZyYS1jbG9jayIpOw0KPiA+ICsNCj4gDQo+IE5vIG5ldyBsaW5lIGhlcmUs IHBsZWFzZSBjaGVjayBjb25kaW5nIHN0eWxlIGFuZCBhcHBseSB0byBhbGwgdGhlIGNvZGUuDQoN ClllcywgSSdsbCBmaXggaXQuDQoNCj4gDQo+ID4gKwlpZiAoSVNfRVJSKGRldmFwY19pbmZyYV9j bGspKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmIChjbGtfcHJlcGFy ZV9lbmFibGUoZGV2YXBjX2luZnJhX2NsaykpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g Kw0KPiA+ICsJc3RhcnRfZGV2YXBjKGRldmFwY19jdHgpOw0KPiA+ICsNCj4gPiArCXJldCA9IGRl dm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgZGV2YXBjX2lycSwNCj4gPiArCQkJICAgICAgIChp cnFfaGFuZGxlcl90KWRldmFwY192aW9sYXRpb25faXJxLA0KPiA+ICsJCQkgICAgICAgSVJRRl9U UklHR0VSX05PTkUsICJkZXZhcGMiLCBkZXZhcGNfY3R4KTsNCj4gPiArCWlmIChyZXQpDQo+ID4g KwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4g PiArc3RhdGljIGludCBtdDY3NzlfZGV2YXBjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpkZXYpDQo+ID4gK3sNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDY3NzlfZGV2YXBjX2R0X21hdGNoW10gPSB7 DQo+ID4gKwl7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10Njc3OS1kZXZhcGMiIH0sDQo+ID4g Kwl7fSwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVy IG10Njc3OV9kZXZhcGNfZHJpdmVyID0gew0KPiA+ICsJLnByb2JlID0gbXQ2Nzc5X2RldmFwY19w cm9iZSwNCj4gPiArCS5yZW1vdmUgPSBtdDY3NzlfZGV2YXBjX3JlbW92ZSwNCj4gPiArCS5kcml2 ZXIgPSB7DQo+ID4gKwkJLm5hbWUgPSBLQlVJTERfTU9ETkFNRSwNCj4gPiArCQkub2ZfbWF0Y2hf dGFibGUgPSBtdDY3NzlfZGV2YXBjX2R0X21hdGNoLA0KPiA+ICsJfSwNCj4gPiArfTsNCj4gPiAr DQo+ID4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXQ2Nzc5X2RldmFwY19kcml2ZXIpOw0KPiA+ ICsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNZWRpYXRlayBNVDY3NzkgRGV2aWNlIEFQQyBE cml2ZXIiKTsNCj4gPiArTU9EVUxFX0FVVEhPUigiTmVhbCBMaXUgPG5lYWwubGl1QG1lZGlhdGVr LmNvbT4iKTsNCj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvZGV2YXBjLW10Njc3OS5oIGIvZHJpdmVycy9zb2Mv bWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1tdDY3NzkuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gaW5kZXggMDAwMDAwMC4uOGMwZTRlNw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9kcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvZGV2YXBjLW10Njc3OS5oDQo+ID4gQEAgLTAs MCArMSw5OSBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0K PiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWVkaWFUZWsgSW5jLg0KPiA+ICsg Ki8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19ERVZBUENfTVQ2Nzc5X0hfXw0KPiA+ICsjZGVmaW5l IF9fREVWQVBDX01UNjc3OV9IX18NCj4gPiArDQo+ID4gKyNkZWZpbmUgUEZYCQkJIltERVZBUENd OiAiDQo+ID4gKyNkZWZpbmUgTU9EX05NX0lOXzFfREVWQVBDCTE2DQo+ID4gKw0KPiA+ICtlbnVt IERFVkFQQ19TTEFWRV9UWVBFIHsNCj4gPiArCVNMQVZFX1RZUEVfSU5GUkEgPSAwLA0KPiA+ICsJ U0xBVkVfVFlQRV9OVU0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIERFVkFQQ19QRF9SRUdf VFlQRSB7DQo+ID4gKwlWSU9fTUFTSyA9IDAsDQo+ID4gKwlWSU9fU1RBLA0KPiA+ICsJVklPX0RC RzAsDQo+ID4gKwlWSU9fREJHMSwNCj4gPiArCUFQQ19DT04sDQo+ID4gKwlWSU9fU0hJRlRfU1RB LA0KPiA+ICsJVklPX1NISUZUX1NFTCwNCj4gPiArCVZJT19TSElGVF9DT04sDQo+ID4gKwlQRF9S RUdfVFlQRV9OVU0sDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVtIERFVkFQQ19WSU9fTUFTS19T VEFfTlVNIHsNCj4gPiArCVZJT19NQVNLX1NUQV9OVU1fSU5GUkEgPSAxNywNCj4gDQo+ICNkZWZp bmUgaW5zdGVhZCBvZiBlbnVtDQoNCk9rYXksIEknbGwgZml4IGl0LiBQdXQgaXQgaW50byBEVCBk YXRhIG1pZ2h0IGJlIGJldHRlciB3YXkuDQoNCj4gDQo+ID4gK307DQo+ID4gKw0KPiA+ICtlbnVt IERFVkFQQ19WSU9fU0xBVkVfTlVNIHsNCj4gPiArCVZJT19TTEFWRV9OVU1fSU5GUkEgPSA0OTks DQo+IA0KPiAjZGVmaW5lIGluc3RlYWQgb2YgZW51bS4NCj4gDQoNCkRpdHRvLg0KDQo+ID4gK307 DQo+ID4gKw0KPiA+ICtlbnVtIERFVkFQQ19QRF9PRkZTRVQgew0KPiA+ICsJUERfVklPX01BU0tf T0ZGU0VUID0gMHgwLA0KPiA+ICsJUERfVklPX1NUQV9PRkZTRVQgPSAweDQwMCwNCj4gPiArCVBE X1ZJT19EQkcwX09GRlNFVCA9IDB4OTAwLA0KPiA+ICsJUERfVklPX0RCRzFfT0ZGU0VUID0gMHg5 MDQsDQo+ID4gKwlQRF9BUENfQ09OX09GRlNFVCA9IDB4RjAwLA0KPiA+ICsJUERfU0hJRlRfU1RB X09GRlNFVCA9IDB4RjEwLA0KPiA+ICsJUERfU0hJRlRfU0VMX09GRlNFVCA9IDB4RjE0LA0KPiA+ ICsJUERfU0hJRlRfQ09OX09GRlNFVCA9IDB4RjIwLA0KPiANCj4gI2RlZmluZSBpbnN0ZWFkIG9m IGVudW0NCj4gSSB0aGluayB0aGlzIHNob3VsZCBiZSBwYXJ0IG9mIG10a19kZXZpY2VfaW5mbyBv biBhIHBlciBTb0MgYmFzZSAocHJvdmlkZWQgdmlhDQo+IERUIGRhdGEpLg0KPiANCg0KRGl0dG8u DQoNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBtdGtfZGV2aWNlX251bSB7DQo+ID4gKwlp bnQgc2xhdmVfdHlwZTsNCj4gPiArCXUzMiB2aW9fc2xhdmVfbnVtOw0KPiA+ICt9Ow0KPiA+ICsN Cj4gPiArc3RydWN0IG10a19kZXZhcGNfdmlvX2luZm8gew0KPiA+ICsJYm9vbCByZWFkOw0KPiA+ ICsJYm9vbCB3cml0ZTsNCj4gPiArCXUzMiB2aW9fYWRkcjsNCj4gPiArCXUzMiB2aW9fYWRkcl9o aWdoOw0KPiA+ICsJdTMyIG1hc3Rlcl9pZDsNCj4gPiArCXUzMiBkb21haW5faWQ7DQo+ID4gK307 DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgbXRrX2luZnJhX3Zpb19kYmdfZGVzYyB7DQo+ID4gKwl1MzIg dmlvX2RiZ19tc3RpZDsNCj4gPiArCXU4IHZpb19kYmdfbXN0aWRfc3RhcnRfYml0Ow0KPiA+ICsJ dTMyIHZpb19kYmdfZG1uaWQ7DQo+ID4gKwl1OCB2aW9fZGJnX2RtbmlkX3N0YXJ0X2JpdDsNCj4g PiArCXUzMiB2aW9fZGJnX3dfdmlvOw0KPiA+ICsJdTggdmlvX2RiZ193X3Zpb19zdGFydF9iaXQ7 DQo+ID4gKwl1MzIgdmlvX2RiZ19yX3ZpbzsNCj4gPiArCXU4IHZpb19kYmdfcl92aW9fc3RhcnRf Yml0Ow0KPiA+ICsJdTMyIHZpb19hZGRyX2hpZ2g7DQo+ID4gKwl1OCB2aW9fYWRkcl9oaWdoX3N0 YXJ0X2JpdDsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBtdGtfZGV2aWNlX2luZm8gew0K PiA+ICsJaW50IHN5c19pbmRleDsNCj4gPiArCWludCBjdHJsX2luZGV4Ow0KPiA+ICsJaW50IHZp b19pbmRleDsNCj4gDQo+IEEgcXVpY2sgY2hlY2sgc2hvd2VkIG1lIHRoYXQgdGhlIHZpb19pbmRl eCA9PSB0aGUgaW5kZXggaW4gdGhlIGFycmF5LiBEcm9wIGl0Lg0KPiANCg0KTm8sIHZpb19pbmRl eCBpcyBkaWZmZXJlbnQgZnJvbSBpbmRleCBvZiB0aGUgYXJyYXkuDQoNCj4gPiArfTsNCj4gPiAr DQo+ID4gK3N0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgew0KPiA+ICsJdm9pZCBfX2lvbWVtICpk ZXZhcGNfcGRfYmFzZVtTTEFWRV9UWVBFX05VTV07DQo+ID4gKwljb25zdCBzdHJ1Y3QgbXRrX2Rl dmljZV9pbmZvICpkZXZpY2VfaW5mb1tTTEFWRV9UWVBFX05VTV07DQo+ID4gKwlzdHJ1Y3QgbXRr X2RldmFwY192aW9faW5mbyAqdmlvX2luZm87DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKiBGb3Ig SW5mcmEgVklPX0RCRyAqLw0KPiA+ICsjZGVmaW5lIElORlJBX1ZJT19EQkdfTVNUSUQJCQkweDAw MDBGRkZGDQo+ID4gKyNkZWZpbmUgSU5GUkFfVklPX0RCR19NU1RJRF9TVEFSVF9CSVQJCTANCj4g PiArI2RlZmluZSBJTkZSQV9WSU9fREJHX0RNTklECQkJMHgwMDNGMDAwMA0KPiA+ICsjZGVmaW5l IElORlJBX1ZJT19EQkdfRE1OSURfU1RBUlRfQklUCQkxNg0KPiA+ICsjZGVmaW5lIElORlJBX1ZJ T19EQkdfV19WSU8JCQkweDAwNDAwMDAwDQo+ID4gKyNkZWZpbmUgSU5GUkFfVklPX0RCR19XX1ZJ T19TVEFSVF9CSVQJCTIyDQo+ID4gKyNkZWZpbmUgSU5GUkFfVklPX0RCR19SX1ZJTwkJCTB4MDA4 MDAwMDANCj4gPiArI2RlZmluZSBJTkZSQV9WSU9fREJHX1JfVklPX1NUQVJUX0JJVAkJMjMNCj4g PiArI2RlZmluZSBJTkZSQV9WSU9fQUREUl9ISUdICQkJMHgwRjAwMDAwMA0KPiA+ICsjZGVmaW5l IElORlJBX1ZJT19BRERSX0hJR0hfU1RBUlRfQklUCQkyNA0KPiA+ICsNCj4gPiArI2VuZGlmIC8q IF9fREVWQVBDX01UNjc3OV9IX18gKi8NCj4gPiANCg0K