From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (EUR04-DB3-obe.outbound.protection.outlook.com [40.107.6.78]) by mx.groups.io with SMTP id smtpd.web11.15978.1591282847267511568 for ; Thu, 04 Jun 2020 08:00:50 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=3aXfscG7; spf=pass (domain: arm.com, ip: 40.107.6.78, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L/1mq9oaOjYdtTcE0cTA/eUwfzX60hq8/RWt3vticl0=; b=3aXfscG751/uvrxeTGtUgIntWLzu4JUfiMmQlKxM7E9inLslhjXk1OpKJvYDx5V2jFQJKLyzEDovv/7ouv/Pwie7vad9j44EuTSu6834OyXtzy3t38DGnM0tF0WBEvDgJBE+0CPY6gvPhqYxtc0IETD7Pnrhtr6a1CiaM5FLprA= Received: from AM0PR05CA0080.eurprd05.prod.outlook.com (2603:10a6:208:136::20) by HE1PR0802MB2428.eurprd08.prod.outlook.com (2603:10a6:3:df::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.21; Thu, 4 Jun 2020 15:00:44 +0000 Received: from AM5EUR03FT029.eop-EUR03.prod.protection.outlook.com (2603:10a6:208:136:cafe::5f) by AM0PR05CA0080.outlook.office365.com (2603:10a6:208:136::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18 via Frontend Transport; Thu, 4 Jun 2020 15:00:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT029.mail.protection.outlook.com (10.152.16.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18 via Frontend Transport; Thu, 4 Jun 2020 15:00:43 +0000 Received: ("Tessian outbound 3e82c366635e:v59"); Thu, 04 Jun 2020 15:00:43 +0000 X-CR-MTA-TID: 64aa7808 Received: from 4914ea936cab.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 685B6D52-1CF4-4BDD-8D08-E4D893EFCCCC.1; Thu, 04 Jun 2020 15:00:38 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4914ea936cab.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 04 Jun 2020 15:00:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WK+3iwvAPLHBqtAM4eg3PGtcZifK5exceNWAEaFcxslUVLlEx+T7tfNlKGhehQXrXBXLzZgM9uomnKmllSvmGzyEb4dbbMe0duHdeTXgwMArBFzZsoaAbQBLVzdYSCyzdbcYzRsKX3zO/QXgiuySGIMafTjMMsgdVemh7448IwRdOh3co5Ehe2ghUEIFTo4/wEoBCNf7YCGlfXiFHbkZylCXeNfPvJ056UEUMOwRDHjLF0e0mq2lJAINsr2RUxJ9ZzuM64H5XnQHY0Ri7x/jRVHoSV7+63N/PW13fk6byjW7doOy1mXoXiC/lx46W1KiV5azWZgNqF2gGqJus/udpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L/1mq9oaOjYdtTcE0cTA/eUwfzX60hq8/RWt3vticl0=; b=oM6UmFZC/gTe6Vm7Za1Ql8oat6trLjsgybEwDSkojHo/CeUrX/g/p2bFXJJ8AJQ6izFAS8raAIUiucDyvtOQo2W3vX9Xflx0BCEXlCeJsZ+7hyXkkEo/TAgTvHK0j+FBV8H7Jd4JJKRnhSZUV275fd/bPpg1v3HvP9SeR63v6oyseeNWGW16spjR1jDo0DBPimimUHKwghisBWEUjwYLZsHqdhl8mS6De1VCvgBd0612qkzZbNockVGHKVH2Hvi0uTQxMofVs58RDsGuupb2nRRWFoR+wGSSKqHjxAVxHZna4h2Lxkj9cway4ux7LyX/8lQwDahokUre0K5DELYHyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=L/1mq9oaOjYdtTcE0cTA/eUwfzX60hq8/RWt3vticl0=; b=3aXfscG751/uvrxeTGtUgIntWLzu4JUfiMmQlKxM7E9inLslhjXk1OpKJvYDx5V2jFQJKLyzEDovv/7ouv/Pwie7vad9j44EuTSu6834OyXtzy3t38DGnM0tF0WBEvDgJBE+0CPY6gvPhqYxtc0IETD7Pnrhtr6a1CiaM5FLprA= Received: from DB7PR08MB3097.eurprd08.prod.outlook.com (2603:10a6:5:1d::27) by DB7PR08MB3817.eurprd08.prod.outlook.com (2603:10a6:10:77::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Thu, 4 Jun 2020 15:00:35 +0000 Received: from DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::9832:4116:bba6:2b97]) by DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::9832:4116:bba6:2b97%4]) with mapi id 15.20.3066.019; Thu, 4 Jun 2020 15:00:35 +0000 From: "Sami Mujawar" To: =?utf-8?B?UGhpbGlwcGUgTWF0aGlldS1EYXVkw6k=?= , "devel@edk2.groups.io" CC: Ard Biesheuvel , "leif@nuviainc.com" , "lersek@redhat.com" , Alexandru Elisei , Andre Przywara , Matteo Carlini , Laura Moretta , nd Subject: Re: [edk2-devel] [PATCH v1 08/11] ArmVirtPkg: Add Kvmtool NOR flash lib Thread-Topic: [edk2-devel] [PATCH v1 08/11] ArmVirtPkg: Add Kvmtool NOR flash lib Thread-Index: AQHWKcvspQYebYSUJEqL8cjr7k7A6Ki76RAAgAw2qgCAAF56AA== Date: Thu, 4 Jun 2020 15:00:35 +0000 Message-ID: References: <20200514084019.71368-1-sami.mujawar@arm.com> <20200514084019.71368-9-sami.mujawar@arm.com> <6fca2acc-f9f2-59cd-92a4-5276b30c0f91@redhat.com> <190ec56b-99b0-f9cb-1ef0-366fca285787@redhat.com> In-Reply-To: <190ec56b-99b0-f9cb-1ef0-366fca285787@redhat.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 53cfc229-b9f5-4c84-955d-66cd7eda768e.1 x-checkrecipientchecked: true Authentication-Results-Original: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [217.140.99.251] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 809b6003-62fe-411e-c63b-08d808980dff x-ms-traffictypediagnostic: DB7PR08MB3817:|HE1PR0802MB2428: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; x-forefront-prvs: 04244E0DC5 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: P2GULJRVM+QTO1VnsEwVGqeiHHVywORKQyn2ZqNds1f34ac+hf/dwsi6ooe72F6aUgTHyTTNHqpN1lZ9D8LHyTL+PxCMPBJgqG4r1GD9HbUmupTqb63hV0l5imBaz2WXiZ4phPFZvsIkrV6s5TPs5UiEGb/hqinJbnDHWRYLW7WX5BxveJrxFo5VFdBgb0lMKgzKVR+rU3ZsNjmKb6U++GIur0vV9pjZcNoCXK5iZIuHv7zBjUuBjJ4hac/Z4YljPk45vbwUNlIxgnOkJYonCTl1MjgRjq0AdE9lDhjRIdtq+ArLjw9vdaQaI3OY9uPf X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3097.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(396003)(136003)(376002)(366004)(39860400002)(346002)(8936002)(4326008)(71200400001)(8676002)(2906002)(9686003)(186003)(26005)(83380400001)(55016002)(7696005)(316002)(66946007)(76116006)(478600001)(6506007)(54906003)(66446008)(110136005)(86362001)(66556008)(64756008)(66476007)(52536014)(33656002)(53546011)(30864003)(5660300002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: 9SLQOuJKpZ+WJPFpByggXj5HBI/G2S5p79Ma1+SOX6cMbbNzEqTY79QY3UoBA2b1Js50lWg7BM6y8kRdNnQ5Vaw28AS3oq9PZEsqBSKvB5xPXkbdVPkRhuKdEn3kCcVmV18iyLIeT8GGs10B/nbi3LeJNAqx1DC8yhS9qc3q+P1nBdczrACRf7TOWK5jzJ5NHhicvRgQ48ZBz8wAD1xpZuxjBcZCL4JQMJMPdjRCPhMKSnVNpNKpDMsDiWv5UFvqd1C1xgm2kd1JaCSUSRyMO5PFZI/EspIKV2aHYoo3A9MlqZrK8BiSdfGU4b99DQ6ZWsWJZGUkmRQQ6C1gqmum9LALDtfYwejKO457UrBo8+1buypzD9h9F6oTFCN2SOrZJo63H6RB9xg5RmXqzkp95drIHOdMldLYTdcRDaYgULr2aFEnZzg6Z70LQL9YqyYOonBJi5+G2GT/jTmSZoOpAx6Bew5NAQi70cwcFVXGWaJ9Qe4DVfC4HnjzRl2Qt2Uk MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3817 Original-Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT029.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFTY:;SFS:(4636009)(136003)(39860400002)(396003)(346002)(376002)(46966005)(336012)(316002)(5660300002)(55016002)(26005)(8676002)(36906005)(4326008)(33656002)(186003)(53546011)(52536014)(6506007)(478600001)(47076004)(2906002)(81166007)(70586007)(70206006)(9686003)(83380400001)(82740400003)(110136005)(82310400002)(8936002)(30864003)(356005)(7696005)(86362001)(54906003);DIR:OUT;SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: 05d6a2ff-d59b-429e-c9d2-08d80898092c X-Forefront-PRVS: 04244E0DC5 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ouuu0VxvEL03DqO8B2zqUIxhmU46iQ5ARnRe6Uhy8cvejCecW/i9TB9ZizIjUNYOCAN8wo11FR03Asothkf36bKUvn1+3nE0FtHWlt+MMnGhvq9ZXAbMAjHiR8SP3O+KyiedZhOfJoayBdiBmtzjCt0orw0QhKI/bz6x5iFPB79AS+MJX41tDSKPi6x/JcjF/dJEcjuX+9OTNH1n2U8KTHq8u+vCgloFAzxJvtbU/JnYYMy5NzCn32E11GMmIANZMYELpigm/GsrlpDKU9juRsi5INWd0LG3TywsGLNDhw2/IquBtWKMPk9QC6llPDH/hSsoY7yQHjIGAtcJBgH6alYcf3DcZtCtLhtt8x0wLKqoJ4V7xV/lCUQz2Yzoks9VBwaEuMhhSszrpRqMO/v40g== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jun 2020 15:00:43.5003 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 809b6003-62fe-411e-c63b-08d808980dff X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2428 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUGhpbGlwcGUsDQoNClRoYW5rIHlvdSBmb3IgcmV2aWV3aW5nIHRoaXMgcGF0Y2guDQpQbGVh c2UgZmluZCBteSBhbnN3ZXJzIGlubGluZSBtYXJrZWQgW1NBTUldDQoNClJlZ2FyZHMsDQoNClNh bWkgTXVqYXdhcg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogUGhpbGlwcGUg TWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPiANClNlbnQ6IDA0IEp1bmUgMjAyMCAw NzozMSBBTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBTYW1pIE11amF3YXIgPFNhbWkuTXVq YXdhckBhcm0uY29tPg0KQ2M6IEFyZCBCaWVzaGV1dmVsIDxBcmQuQmllc2hldXZlbEBhcm0uY29t PjsgbGVpZkBudXZpYWluYy5jb207IGxlcnNla0ByZWRoYXQuY29tOyBBbGV4YW5kcnUgRWxpc2Vp IDxBbGV4YW5kcnUuRWxpc2VpQGFybS5jb20+OyBBbmRyZSBQcnp5d2FyYSA8QW5kcmUuUHJ6eXdh cmFAYXJtLmNvbT47IE1hdHRlbyBDYXJsaW5pIDxNYXR0ZW8uQ2FybGluaUBhcm0uY29tPjsgTGF1 cmEgTW9yZXR0YSA8TGF1cmEuTW9yZXR0YUBhcm0uY29tPjsgbmQgPG5kQGFybS5jb20+DQpTdWJq ZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2MSAwOC8xMV0gQXJtVmlydFBrZzogQWRkIEt2 bXRvb2wgTk9SIGZsYXNoIGxpYg0KDQpPbiA1LzI3LzIwIDE6NTkgUE0sIFBoaWxpcHBlIE1hdGhp ZXUtRGF1ZMOpIHdyb3RlOg0KPiBIaSBTYW1pLA0KPiANCj4gT24gNS8xNC8yMCAxMDo0MCBBTSwg U2FtaSBNdWphd2FyIHdyb3RlOg0KPj4gS3ZtdG9vbCBwbGFjZXMgdGhlIGJhc2UgYWRkcmVzcyBv ZiB0aGUgQ0ZJIGZsYXNoIGluIHRoZSBkZXZpY2UgdHJlZSANCj4+IGl0IHBhc3NlcyB0byBVRUZJ LiBUaGlzIGxpYnJhcnkgcGFyc2VzIHRoZSBrdm10b29sIGRldmljZSB0cmVlIHRvIA0KPj4gcmVh ZCB0aGUgQ0ZJIGJhc2UgYWRkcmVzcyBhbmQgaW5pdGlhbGlzZSB0aGUgUENEcyB1c2UgYnkgdGhl IE5PUiANCj4+IGZsYXNoIGRyaXZlciBhbmQgdGhlIHZhcmlhYmxlIHN0b3JhZ2UuDQo+Pg0KPj4g U2lnbmVkLW9mZi1ieTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNvbT4NCj4+IC0t LQ0KPj4gIEFybVZpcnRQa2cvTGlicmFyeS9Ob3JGbGFzaEt2bXRvb2xMaWIvTm9yRmxhc2hLdm10 b29sLmMgICAgICB8IDI2NSArKysrKysrKysrKysrKysrKysrKw0KPj4gIEFybVZpcnRQa2cvTGli cmFyeS9Ob3JGbGFzaEt2bXRvb2xMaWIvTm9yRmxhc2hLdm10b29sTGliLmluZiB8ICA1MCANCj4+ ICsrKysNCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDMxNSBpbnNlcnRpb25zKCspDQo+Pg0KPj4gZGlm ZiAtLWdpdCBhL0FybVZpcnRQa2cvTGlicmFyeS9Ob3JGbGFzaEt2bXRvb2xMaWIvTm9yRmxhc2hL dm10b29sLmMgDQo+PiBiL0FybVZpcnRQa2cvTGlicmFyeS9Ob3JGbGFzaEt2bXRvb2xMaWIvTm9y Rmxhc2hLdm10b29sLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCANCj4+IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNDNjMmUyMWJjOWVmN2Rk MWRkMTk4ZWViYg0KPj4gZDcwYzNiMGI5NmQxYw0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIv QXJtVmlydFBrZy9MaWJyYXJ5L05vckZsYXNoS3ZtdG9vbExpYi9Ob3JGbGFzaEt2bXRvb2wuYw0K Pj4gQEAgLTAsMCArMSwyNjUgQEANCj4+ICsvKiogQGZpbGUNCj4+ICsgICBBbiBpbnN0YW5jZSBv ZiB0aGUgTm9yRmxhc2hQbGF0Zm9ybUxpYiBmb3IgS3ZtdG9vbCBwbGF0Zm9ybS4NCj4+ICsNCj4+ ICsgQ29weXJpZ2h0IChjKSAyMDIwLCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N Cj4+ICsNCj4+ICsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4+ICsNCj4+ICsgKiovDQo+PiArDQo+PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0K Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+PiArI2luY2x1ZGUgPExpYnJhcnkv Tm9yRmxhc2hQbGF0Zm9ybUxpYi5oPiAjaW5jbHVkZSANCj4+ICs8TGlicmFyeS9VZWZpQm9vdFNl cnZpY2VzVGFibGVMaWIuaD4NCj4+ICsjaW5jbHVkZSA8UHJvdG9jb2wvRmR0Q2xpZW50Lmg+DQo+ PiArDQo+PiArLyoqIE1hY3JvIGRlZmluaW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBGbGFzaCBC YW5rcy4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIE1BWF9GTEFTSF9CQU5LUyAgICAgICA0DQo+PiAr DQo+PiArU1RBVElDIE5PUl9GTEFTSF9ERVNDUklQVElPTiAgbU5vckZsYXNoRGV2aWNlc1tNQVhf RkxBU0hfQkFOS1NdOw0KPiANCj4gVGhpcyBpcyBjb25mdXNlLCB0aGUgbWFjcm8gZGVmaW5lIDQg YmFua3MgdG8gYSBmbGFzaCBkZXZpY2UsIGJ1dCB0aGVuIA0KPiB5b3UgZGVjbGFyZSBhbiBhcnJh eSBvZiA0IGZsYXNoIGRldmljZXMuDQo+IA0KPiBJJ20gZXZlbiBtb3JlIGNvbmZ1c2VkIGJlY2F1 c2UgSSdtIG9ubHkgYXdhcmUgb2YgMiBkZXZpY2VzIG9uIHRoZSBWaXJ0IA0KPiBtYWNoaW5lLiBX aGF0IGFtIEkgbWlzc2luZz8NCg0KUGluZ2luZyBhZ2FpbiBpbiBjYXNlIHRoaXMgcXVlc3Rpb24g aGFzIGJlZW4gbWlzc2VkLg0KW1NBTUldIFRoZSBtYWNybyBNQVhfRkxBU0hfQkFOS1Mgc2hvdWxk IGJlIGNoYW5nZWQgdG8gTUFYX0ZMQVNIX0RFVklDRVMuIEkgd2lsbCBzZW5kIGFuIHVwZGF0ZWQg cGF0Y2ggd2l0aCB0aGlzIGZpeGVkLg0KT24ga3ZtdG9vbCwgdGhlcmUgaXMgb25seSBvbmUgZmxh c2ggZGV2aWNlIGN1cnJlbnRseSBhcyB0aGlzIGlzIGFsbCB0aGF0IGlzIG5lZWRlZC4gSG93ZXZl ciwgaW4gdGhlIGZ1dHVyZSBpZiBtb3JlIGZsYXNoIGRldmljZXMgYXJlIHByb3ZpZGVkIHRoZW4g dGhpcyBjb2RlIGNhbiBoYW5kbGUgbXVsdGlwbGUgZmxhc2ggZGV2aWNlcy4NClsvU0FNSV0NCj4g DQo+PiArU1RBVElDIFVJTlROICAgICAgICAgICAgICAgICAgbU5vckZsYXNoRGV2aWNlQ291bnQg PSAwOw0KPj4gKw0KPj4gKy8qKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHBsYXRmb3JtIHNwZWNp ZmljIGFjdGlvbnMgdG8gaW5pdGlhbGlzZQ0KPj4gKyAgICB0aGUgTk9SIGZsYXNoLCBpZiByZXF1 aXJlZC4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3Mu DQo+PiArKiovDQo+PiArRUZJX1NUQVRVUw0KPj4gK05vckZsYXNoUGxhdGZvcm1Jbml0aWFsaXph dGlvbiAoDQo+PiArICBWT0lEDQo+PiArICApDQo+PiArew0KPj4gKyAgREVCVUcgKChERUJVR19J TkZPLCAiTm9yRmxhc2hQbGF0Zm9ybUluaXRpYWxpemF0aW9uXG4iKSk7DQo+PiArICAvLyBOb3Ro aW5nIHRvIGRvIGhlcmUNCj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+ICt9DQo+PiArDQo+ PiArLyoqIEluaXRpYWxpc2UgTm9uIHZvbGF0aWxlIEZsYXNoIHN0b3JhZ2UgdmFyaWFibGVzLg0K Pj4gKw0KPj4gKyAgQHBhcmFtIFtpbl0gIEZsYXNoRGV2aWNlIFBvaW50ZXIgdG8gdGhlIE5PUiBG bGFzaCBkZXZpY2UuDQo+PiArDQo+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBT dWNjZXNzLg0KPj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgQSBwYXJhbWV0ZXIg aXMgaW52YWxpZC4NCj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgIEluc3VmZmlj aWVudCBmbGFzaCBzdG9yYWdlIHNwYWNlLg0KPj4gKyoqLw0KPj4gK0VGSV9TVEFUVVMNCj4+ICtT ZXR1cFZhcmlhYmxlU3RvcmUgKA0KPj4gKyAgSU4gTk9SX0ZMQVNIX0RFU0NSSVBUSU9OICogRmxh c2hEZXZpY2UNCj4+ICsgICkNCj4+ICt7DQo+PiArICBVSU5UTiAgIEZsYXNoUmVnaW9uOw0KPj4g KyAgVUlOVE4gICBGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZTsNCj4+ICsgIFVJTlROICAgRmxh c2hOdlN0b3JhZ2VGdHdXb3JraW5nQmFzZTsNCj4+ICsgIFVJTlROICAgRmxhc2hOdlN0b3JhZ2VG dHdTcGFyZUJhc2U7DQo+PiArICBVSU5UTiAgIEZsYXNoTnZTdG9yYWdlVmFyaWFibGVTaXplOw0K Pj4gKyAgVUlOVE4gICBGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplOw0KPj4gKyAgVUlOVE4g ICBGbGFzaE52U3RvcmFnZUZ0d1NwYXJlU2l6ZTsNCj4+ICsNCj4+ICsgIEZsYXNoTnZTdG9yYWdl VmFyaWFibGVTaXplID0gUGNkR2V0MzIgDQo+PiArIChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxl U2l6ZSk7ICBGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplID0gDQo+PiArIFBjZEdldDMyIChQ Y2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdTaXplKTsNCj4+ICsgIEZsYXNoTnZTdG9yYWdlRnR3 U3BhcmVTaXplID0gIFBjZEdldDMyIA0KPj4gKyAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNp emUpOw0KPj4gKw0KPj4gKyAgaWYgKChGbGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6ZSA9PSAwKSAg IHx8DQo+PiArICAgICAgKEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUgPT0gMCkgfHwNCj4+ ICsgICAgICAoRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUgPT0gMCkpIHsNCj4+ICsgICAgREVC VUcgKChERUJVR19FUlJPUiwgIkZsYXNoTnZTdG9yYWdlIHNpemUgbm90IGRlZmluZWRcbiIpKTsN Cj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4+ICsgIH0NCj4+ICsNCj4+ ICsgIC8vIFNldHVwIHRoZSB2YXJpYWJsZSBzdG9yZQ0KPj4gKyAgRmxhc2hSZWdpb24gPSBGbGFz aERldmljZS0+RGV2aWNlQmFzZUFkZHJlc3M7DQo+PiArDQo+PiArICBGbGFzaE52U3RvcmFnZVZh cmlhYmxlQmFzZSA9IEZsYXNoUmVnaW9uOyAgRmxhc2hSZWdpb24gKz0gUGNkR2V0MzIgDQo+PiAr IChQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlU2l6ZSk7DQo+PiArDQo+PiArICBGbGFzaE52U3Rv cmFnZUZ0d1dvcmtpbmdCYXNlID0gRmxhc2hSZWdpb247ICBGbGFzaFJlZ2lvbiArPSANCj4+ICsg UGNkR2V0MzIgKFBjZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUpOw0KPj4gKw0KPj4gKyAg Rmxhc2hOdlN0b3JhZ2VGdHdTcGFyZUJhc2UgPSBGbGFzaFJlZ2lvbjsgIEZsYXNoUmVnaW9uICs9 IFBjZEdldDMyIA0KPj4gKyAoUGNkRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUpOw0KPj4gKw0K Pj4gKyAgaWYgKEZsYXNoUmVnaW9uID4gKEZsYXNoRGV2aWNlLT5EZXZpY2VCYXNlQWRkcmVzcyAr IEZsYXNoRGV2aWNlLT5TaXplKSkgew0KPj4gKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiSW5z dWZmaWNpZW50IGZsYXNoIHN0b3JhZ2Ugc2l6ZVxuIikpOw0KPj4gKyAgICByZXR1cm4gRUZJX09V VF9PRl9SRVNPVVJDRVM7DQo+PiArICB9DQo+PiArDQo+PiArICBQY2RTZXQzMlMgKA0KPj4gKyAg ICBQY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZSwNCj4+ICsgICAgRmxhc2hOdlN0b3JhZ2VW YXJpYWJsZUJhc2UNCj4+ICsgICAgKTsNCj4+ICsNCj4+ICsgIFBjZFNldDMyUyAoDQo+PiArICAg IFBjZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ0Jhc2UsDQo+PiArICAgIEZsYXNoTnZTdG9yYWdl RnR3V29ya2luZ0Jhc2UNCj4+ICsgICAgKTsNCj4+ICsNCj4+ICsgIFBjZFNldDMyUyAoDQo+PiAr ICAgIFBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVCYXNlLA0KPj4gKyAgICBGbGFzaE52U3RvcmFn ZUZ0d1NwYXJlQmFzZQ0KPj4gKyAgICApOw0KPj4gKw0KPj4gKyAgREVCVUcgKCgNCj4+ICsgICAg REVCVUdfSU5GTywNCj4+ICsgICAgIlBjZEZsYXNoTnZTdG9yYWdlVmFyaWFibGVCYXNlID0gMHgl eFxuIiwNCj4+ICsgICAgRmxhc2hOdlN0b3JhZ2VWYXJpYWJsZUJhc2UNCj4+ICsgICAgKSk7DQo+ PiArICBERUJVRyAoKA0KPj4gKyAgICBERUJVR19JTkZPLA0KPj4gKyAgICAiUGNkRmxhc2hOdlN0 b3JhZ2VWYXJpYWJsZVNpemUgPSAweCV4XG4iLA0KPj4gKyAgICBGbGFzaE52U3RvcmFnZVZhcmlh YmxlU2l6ZQ0KPj4gKyAgICApKTsNCj4+ICsgIERFQlVHICgoDQo+PiArICAgIERFQlVHX0lORk8s DQo+PiArICAgICJQY2RGbGFzaE52U3RvcmFnZUZ0d1dvcmtpbmdCYXNlID0gMHgleFxuIiwNCj4+ ICsgICAgRmxhc2hOdlN0b3JhZ2VGdHdXb3JraW5nQmFzZQ0KPj4gKyAgICApKTsNCj4+ICsgIERF QlVHICgoDQo+PiArICAgIERFQlVHX0lORk8sDQo+PiArICAgICJQY2RGbGFzaE52U3RvcmFnZUZ0 d1dvcmtpbmdTaXplID0gMHgleFxuIiwNCj4+ICsgICAgRmxhc2hOdlN0b3JhZ2VGdHdXb3JraW5n U2l6ZQ0KPj4gKyAgICApKTsNCj4+ICsgIERFQlVHICgoDQo+PiArICAgIERFQlVHX0lORk8sDQo+ PiArICAgICJQY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlQmFzZSA9IDB4JXhcbiIsDQo+PiArICAg IEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVCYXNlDQo+PiArICAgICkpOw0KPj4gKyAgREVCVUcgKCgN Cj4+ICsgICAgREVCVUdfSU5GTywNCj4+ICsgICAgIlBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVT aXplID0gMHgleFxuIiwNCj4+ICsgICAgRmxhc2hOdlN0b3JhZ2VGdHdTcGFyZVNpemUNCj4+ICsg ICAgKSk7DQo+PiArDQo+PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+PiArfQ0KPj4gKw0KPj4g Ky8qKiBSZXR1cm4gdGhlIEZsYXNoIGRldmljZXMgb24gdGhlIHBsYXRmb3JtLg0KPj4gKw0KPj4g KyAgQHBhcmFtIFtvdXRdICBOb3JGbGFzaERlc2NyaXB0aW9ucyAgICBQb2ludGVyIHRvIHRoZSBG bGFzaCBkZXZpY2UgZGVzY3JpcHRpb24uDQo+PiArICBAcGFyYW0gW291dF0gIENvdW50ICAgICAg ICAgICAgICAgICAgIE51bWJlciBvZiBGbGFzaCBkZXZpY2VzLg0KPj4gKw0KPj4gKyAgQHJldHZh bCBFRklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCj4+ICsgIEByZXR2YWwgRUZJX05PVF9G T1VORCAgICAgICAgIEZsYXNoIGRldmljZSBub3QgZm91bmQuDQo+PiArKiovDQo+PiArRUZJX1NU QVRVUw0KPj4gK05vckZsYXNoUGxhdGZvcm1HZXREZXZpY2VzICgNCj4+ICsgIE9VVCBOT1JfRkxB U0hfREVTQ1JJUFRJT04gICAqKk5vckZsYXNoRGVzY3JpcHRpb25zLA0KPj4gKyAgT1VUIFVJTlQz MiAgICAgICAgICAgICAgICAgICpDb3VudA0KPj4gKyAgKQ0KPj4gK3sNCj4+ICsgIGlmIChtTm9y Rmxhc2hEZXZpY2VDb3VudCA+IDApIHsNCj4+ICsgICAgKk5vckZsYXNoRGVzY3JpcHRpb25zID0g bU5vckZsYXNoRGV2aWNlczsNCj4+ICsgICAgKkNvdW50ID0gbU5vckZsYXNoRGV2aWNlQ291bnQ7 DQo+PiArICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+ICsgIH0NCj4+ICsgIHJldHVybiBFRklf Tk9UX0ZPVU5EOw0KPj4gK30NCj4+ICsNCj4+ICsvKiogRW50cnlwb2ludCBmb3IgTm9yRmxhc2hQ bGF0Zm9ybUxpYi4NCj4+ICsNCj4+ICsgIEBwYXJhbSBbaW5dICBJbWFnZUhhbmRsZSAgVGhlIGhh bmRsZSB0byB0aGUgaW1hZ2UuDQo+PiArICBAcGFyYW0gW2luXSAgU3lzdGVtVGFibGUgIFBvaW50 ZXIgdG8gdGhlIFN5c3RlbSBUYWJsZS4NCj4+ICsNCj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICAgU3VjY2Vzcy4NCj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVS ICAgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAg ICAgICAgICAgRmxhc2ggZGV2aWNlIG5vdCBmb3VuZC4NCj4+ICsqKi8NCj4+ICtFRklfU1RBVFVT DQo+PiArRUZJQVBJDQo+PiArTm9yRmxhc2hQbGF0Zm9ybUxpYkNvbnN0cnVjdG9yICgNCj4+ICsg IElOICBFRklfSEFORExFICAgICAgICAgIEltYWdlSGFuZGxlLA0KPj4gKyAgSU4gIEVGSV9TWVNU RU1fVEFCTEUgICogU3lzdGVtVGFibGUNCj4+ICsgICkNCj4+ICt7DQo+PiArICBGRFRfQ0xJRU5U X1BST1RPQ09MICAgICAgICAgKkZkdENsaWVudDsNCj4+ICsgIElOVDMyICAgICAgICAgICAgICAg ICAgICAgICBOb2RlOw0KPj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBGaW5kTm9kZVN0YXR1czsNCj4+ICsg IENPTlNUIFVJTlQzMiAgICAgICAgICAgICAgICAqUmVnOw0KPj4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgIFByb3BTaXplOw0KPj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAg IEJhc2U7DQo+PiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4+ICsNCj4+ ICsgIGlmIChtTm9yRmxhc2hEZXZpY2VDb3VudCAhPSAwKSB7DQo+PiArICAgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4+ICsgIH0NCj4+ICsNCj4+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9j b2wgKA0KPj4gKyAgICAgICAgICAgICAgICAgICZnRmR0Q2xpZW50UHJvdG9jb2xHdWlkLA0KPj4g KyAgICAgICAgICAgICAgICAgIE5VTEwsDQo+PiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiop JkZkdENsaWVudA0KPj4gKyAgICAgICAgICAgICAgICAgICk7DQo+PiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+PiArICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+PiArICAg IHJldHVybiBTdGF0dXM7DQo+PiArICB9DQo+PiArDQo+PiArICBmb3IgKEZpbmROb2RlU3RhdHVz ID0gRmR0Q2xpZW50LT5GaW5kQ29tcGF0aWJsZU5vZGUgKA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGZHRDbGllbnQsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJjZmktZmxhc2giLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmTm9kZQ0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApOw0KPj4gKyAgICAgICAhRUZJX0VSUk9SIChGaW5kTm9kZVN0YXR1cykgJiYgKG1Ob3JG bGFzaERldmljZUNvdW50IDwgTUFYX0ZMQVNIX0JBTktTKTsNCj4+ICsgICAgICAgRmluZE5vZGVT dGF0dXMgPSBGZHRDbGllbnQtPkZpbmROZXh0Q29tcGF0aWJsZU5vZGUgKA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGZHRDbGllbnQsDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJjZmktZmxhc2giLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOb2RlLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmTm9kZQ0KPj4gKyAgICApKSB7DQo+PiArICAgIFN0YXR1cyA9IEZkdENs aWVudC0+R2V0Tm9kZVByb3BlcnR5ICgNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEZk dENsaWVudCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUsDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAicmVnIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IChDT05TVCBWT0lEICoqKSZSZWcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAmUHJv cFNpemUNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+PiArICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEdl dE5vZGVQcm9wZXJ0eSAoKSBmYWlsZWQgKFN0YXR1cyA9PSAlcilcbiIsDQo+PiArICAgICAgICBf X0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KPj4gKyAgICAgIGNvbnRpbnVlOw0KPj4gKyAgICB9DQo+ PiArDQo+PiArICAgIEFTU0VSVCAoKFByb3BTaXplICUgKDQgKiBzaXplb2YgKFVJTlQzMikpKSA9 PSAwKTsNCj4+ICsNCj4+ICsgICAgd2hpbGUgKChQcm9wU2l6ZSA+PSAoNCAqIHNpemVvZiAoVUlO VDMyKSkpICYmDQo+PiArICAgICAgICAgICAobU5vckZsYXNoRGV2aWNlQ291bnQgPCBNQVhfRkxB U0hfQkFOS1MpKSB7DQo+PiArICAgICAgQmFzZSA9IFN3YXBCeXRlczY0IChSZWFkVW5hbGlnbmVk NjQgKChWT0lEICopJlJlZ1swXSkpOw0KPj4gKyAgICAgIFNpemUgPSBTd2FwQnl0ZXM2NCAoUmVh ZFVuYWxpZ25lZDY0ICgoVk9JRCAqKSZSZWdbMl0pKTsNCj4+ICsgICAgICBSZWcgKz0gNDsNCj4+ ICsNCj4+ICsgICAgICBQcm9wU2l6ZSAtPSA0ICogc2l6ZW9mIChVSU5UMzIpOw0KPj4gKw0KPj4g KyAgICAgIC8vDQo+PiArICAgICAgLy8gRGlzcmVnYXJkIGFueSBmbGFzaCBkZXZpY2VzIHRoYXQg b3ZlcmxhcCB3aXRoIHRoZSBwcmltYXJ5IEZWLg0KPj4gKyAgICAgIC8vIFRoZSBmaXJtd2FyZSBp cyBub3QgdXBkYXRhYmxlIGZyb20gaW5zaWRlIHRoZSBndWVzdCBhbnl3YXkuDQo+PiArICAgICAg Ly8NCj4+ICsgICAgICBpZiAoKFBjZEdldDY0IChQY2RGdkJhc2VBZGRyZXNzKSArIFBjZEdldDMy IChQY2RGdlNpemUpID4gQmFzZSkgJiYNCj4+ICsgICAgICAgICAgKEJhc2UgKyBTaXplKSA+IFBj ZEdldDY0IChQY2RGdkJhc2VBZGRyZXNzKSkgew0KPj4gKyAgICAgICAgY29udGludWU7DQo+PiAr ICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgIERFQlVHICgoDQo+PiArICAgICAgICBERUJVR19JTkZP LA0KPj4gKyAgICAgICAgIk5PUiVkIDogQmFzZSA9IDB4JWx4LCBTaXplID0gMHglbHhcbiIsDQo+ PiArICAgICAgICBtTm9yRmxhc2hEZXZpY2VDb3VudCwNCj4+ICsgICAgICAgIEJhc2UsDQo+PiAr ICAgICAgICBTaXplDQo+PiArICAgICAgICApKTsNCj4+ICsNCj4+ICsgICAgICBtTm9yRmxhc2hE ZXZpY2VzW21Ob3JGbGFzaERldmljZUNvdW50XS5EZXZpY2VCYXNlQWRkcmVzcyA9IChVSU5UTilC YXNlOw0KPj4gKyAgICAgIG1Ob3JGbGFzaERldmljZXNbbU5vckZsYXNoRGV2aWNlQ291bnRdLlJl Z2lvbkJhc2VBZGRyZXNzID0gKFVJTlROKUJhc2U7DQo+PiArICAgICAgbU5vckZsYXNoRGV2aWNl c1ttTm9yRmxhc2hEZXZpY2VDb3VudF0uU2l6ZSAgICAgICAgICAgICAgPSAoVUlOVE4pU2l6ZTsN Cj4+ICsgICAgICBtTm9yRmxhc2hEZXZpY2VzW21Ob3JGbGFzaERldmljZUNvdW50XS5CbG9ja1Np emUgICAgICAgICA9IFNJWkVfMjU2S0I7DQo+IA0KPiBIbW0gSSdtIHdvcnJpZWQgdGhhdCB0aGVy ZSBpcyBubyBjb250cmFjdCBlbmZvcmNpbmcgdGhlIFZpcnQgbWFjaGluZSANCj4gdG8gdXNlIDI1 NktpQiBzZWN0b3JzLiBDYW4gd2UgYWRkIGEgZGVmaW5pdGlvbiBlbHNld2hlcmUgYW5kIHVzZSBp dCANCj4gaGVyZSwgaW5zdGVhZCBvZiBidXJ5aW5nIHRoZSBmaXhlZCBzZWN0b3Igc2l6ZSBoZXJl Pw0KPiANCj4+ICsgICAgICBtTm9yRmxhc2hEZXZpY2VDb3VudCsrOw0KPj4gKyAgICB9DQo+PiAr ICB9DQo+PiArDQo+PiArICAvLyBTZXR1cCB0aGUgdmFyaWFibGUgc3RvcmUgaW4gdGhlIGxhc3Qg YmFuayAgaWYgDQo+PiArICgobU5vckZsYXNoRGV2aWNlQ291bnQgPiAwKSAmJg0KPj4gKyAgICAg IChtTm9yRmxhc2hEZXZpY2VzW21Ob3JGbGFzaERldmljZUNvdW50IC0gMV0uRGV2aWNlQmFzZUFk ZHJlc3MgIT0gMCkpIHsNCj4+ICsgICAgcmV0dXJuIFNldHVwVmFyaWFibGVTdG9yZSANCj4+ICsg KCZtTm9yRmxhc2hEZXZpY2VzW21Ob3JGbGFzaERldmljZUNvdW50IC0gMV0pOyAgfQ0KPj4gKw0K Pj4gKyAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+PiArfQ0KPj4gKw0KPj4gZGlmZiAtLWdpdCAN Cj4+IGEvQXJtVmlydFBrZy9MaWJyYXJ5L05vckZsYXNoS3ZtdG9vbExpYi9Ob3JGbGFzaEt2bXRv b2xMaWIuaW5mIA0KPj4gYi9Bcm1WaXJ0UGtnL0xpYnJhcnkvTm9yRmxhc2hLdm10b29sTGliL05v ckZsYXNoS3ZtdG9vbExpYi5pbmYNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAN Cj4+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiZDZmNzMwZGNi NTJlNTk3YjQxOGU1OTc2Ng0KPj4gYzE1NjZhOTUxOTc4OQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4g KysrIGIvQXJtVmlydFBrZy9MaWJyYXJ5L05vckZsYXNoS3ZtdG9vbExpYi9Ob3JGbGFzaEt2bXRv b2xMaWIuaW5mDQo+PiBAQCAtMCwwICsxLDUwIEBADQo+PiArIy8qKiBAZmlsZQ0KPj4gKyMNCj4+ ICsjICBDb3B5cmlnaHQgKGMpIDIwMjAsIEFSTSBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS PiAjICANCj4+ICtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAj ICMqKi8NCj4+ICsNCj4+ICtbRGVmaW5lc10NCj4+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAg ICAgICAgICA9IDB4MDAwMTAwMUINCj4+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAg ICA9IE5vckZsYXNoS3ZtdG9vbExpYg0KPj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgID0gRTc1RjA3QTEtQjE2MC00ODkzLUJERDQtMDlFMzJGRjg0N0RDDQo+PiArICBNT0RVTEVf VFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+PiArICBWRVJTSU9OX1NUUklO RyAgICAgICAgICAgICAgICAgPSAxLjANCj4+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAg ICAgICA9IE5vckZsYXNoUGxhdGZvcm1MaWINCj4+ICsgIENPTlNUUlVDVE9SICAgICAgICAgICAg ICAgICAgICA9IE5vckZsYXNoUGxhdGZvcm1MaWJDb25zdHJ1Y3Rvcg0KPj4gKw0KPj4gK1tTb3Vy Y2VzLmNvbW1vbl0NCj4+ICsgIE5vckZsYXNoS3ZtdG9vbC5jDQo+PiArDQo+PiArW1BhY2thZ2Vz XQ0KPj4gKyAgQXJtUGtnL0FybVBrZy5kZWMNCj4+ICsgIEFybVBsYXRmb3JtUGtnL0FybVBsYXRm b3JtUGtnLmRlYw0KPj4gKyAgQXJtVmlydFBrZy9Bcm1WaXJ0UGtnLmRlYw0KPj4gKyAgTWRlUGtn L01kZVBrZy5kZWMNCj4+ICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+PiArDQo+ PiArW0xpYnJhcnlDbGFzc2VzXQ0KPj4gKyAgQmFzZUxpYg0KPj4gKyAgRGVidWdMaWINCj4+ICsg IFBjZExpYg0KPj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+PiArDQo+PiArW1Byb3Rv Y29sc10NCj4+ICsgIGdGZHRDbGllbnRQcm90b2NvbEd1aWQgICAgICAgICAgIyMgQ09OU1VNRVMN Cj4+ICsNCj4+ICtbUGNkXQ0KPj4gKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEZ2QmFzZUFkZHJl c3MNCj4+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RGdlNpemUNCj4+ICsNCj4+ICsgIGdFZmlN ZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZVZhcmlhYmxlQmFzZQ0K Pj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZTdG9yYWdlVmFy aWFibGVTaXplDQo+PiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkRmxhc2hO dlN0b3JhZ2VGdHdXb3JraW5nQmFzZQ0KPj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VH dWlkLlBjZEZsYXNoTnZTdG9yYWdlRnR3V29ya2luZ1NpemUNCj4+ICsgIGdFZmlNZGVNb2R1bGVQ a2dUb2tlblNwYWNlR3VpZC5QY2RGbGFzaE52U3RvcmFnZUZ0d1NwYXJlQmFzZQ0KPj4gKyAgZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEZsYXNoTnZTdG9yYWdlRnR3U3BhcmVTaXpl DQo+PiArDQo+PiArDQo+PiArW0RlcGV4XQ0KPj4gKyAgZ0ZkdENsaWVudFByb3RvY29sR3VpZA0K Pj4gKw0KPj4NCj4gDQoNCg==