From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.0.42; helo=eur02-am5-obe.outbound.protection.outlook.com; envelope-from=evan.lloyd@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00042.outbound.protection.outlook.com [40.107.0.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0BC532236BA92 for ; Mon, 8 Jan 2018 10:46:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=HaEfv5RE3qI6nrIjK8CLsq36cwSzpzgOfw7NDkaMT14=; b=kn25IauhEfyJTv/NwtqbSOOSYgmoH0Tyg8XZOAietoI7Bmu33P0j6TeM+O87usnv1B0cSzzJE2mQtcSM6wZjAjysDKPW5uIe6W+A1CN2igOHIYEgIaes0/rNU/MvyUllSdElG7GSibwdwXUyRpXEarQtj2k2h/K0pXyvRzI8nNQ= Received: from HE1PR08MB2684.eurprd08.prod.outlook.com (10.170.248.27) by HE1PR08MB0746.eurprd08.prod.outlook.com (10.164.52.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Mon, 8 Jan 2018 18:51:12 +0000 Received: from HE1PR08MB2684.eurprd08.prod.outlook.com ([fe80::2cba:9ca8:24d:df80]) by HE1PR08MB2684.eurprd08.prod.outlook.com ([fe80::2cba:9ca8:24d:df80%13]) with mapi id 15.20.0386.009; Mon, 8 Jan 2018 18:51:12 +0000 From: Evan Lloyd To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , Arvind Chauhan , Daniil Egranov , "Thomas Abraham" , "\"ard.biesheuvel@linaro.org\"@arm.com" <"ard.biesheuvel@linaro.org"@arm.com>, "\"leif.lindholm@linaro.org\"@arm.com" <"leif.lindholm@linaro.org"@arm.com>, "\"Matteo.Carlini@arm.com\"@arm.com" <"Matteo.Carlini@arm.com"@arm.com>, "\"nd@arm.com\"@arm.com" <"nd@arm.com"@arm.com> Thread-Topic: [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New DP500/DP550/DP650 platform library. Thread-Index: AQHTfAgfeyyW2hW5Jky2/wx3AzBHZaNqaWcg Date: Mon, 8 Jan 2018 18:51:12 +0000 Message-ID: References: <20171222190821.12440-1-evan.lloyd@arm.com> <20171222190821.12440-16-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR08MB0746; 7:3ww28Q5fgU3as1XGTcQNORVBkEPRiR7pDMJhpUaQTSJcZ/49h6Cw23AS+aph8Qv4MauAeB/pPnl2cOOPR/PEtIlF+sJ4KXM3HQX79KlA4MqTyF2t5LXBND2L4XGl5xAoyzOo+Jx+z9zSsAbn0zxOgZ0uOyUmlkH4Os9xHtm8g6AyN+O16TDXURPpbZx58X+60jeDSSmTitjG6o0zWiWm45z1vhh5JXTPiBV7hQpUcs1WfrzV30W6INBgJWhQgqNy x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 37b7d891-8350-4c66-ead9-08d556c8c9f1 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:HE1PR08MB0746; x-ms-traffictypediagnostic: HE1PR08MB0746: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(162533806227266)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231023)(944501075)(6055026)(6041268)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(6072148)(201708071742011); SRVR:HE1PR08MB0746; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR08MB0746; x-forefront-prvs: 054642504A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(376002)(346002)(39860400002)(39380400002)(396003)(40434004)(13464003)(24454002)(199004)(189003)(478600001)(102836004)(68736007)(3846002)(9686003)(6506007)(76176011)(2900100001)(53546011)(3660700001)(6116002)(97736004)(86362001)(6246003)(4326008)(7736002)(105586002)(3280700002)(59450400001)(72206003)(305945005)(74316002)(33656002)(55016002)(106356001)(5250100002)(5890100001)(66066001)(229853002)(575784001)(54906003)(53936002)(25786009)(14454004)(99286004)(316002)(8936002)(2950100002)(6916009)(2906002)(8676002)(5660300001)(6436002)(81166006)(81156014)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR08MB0746; H:HE1PR08MB2684.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:3; MX:3; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: p7aqqkGE1zLFT21ZJ1XF4Vi+GE3QOZiWxqxPHa5I5xXw/Huy1u4Si3E+/af34eTA7ebboVSx9ebTqWrJkMVN0w== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 37b7d891-8350-4c66-ead9-08d556c8c9f1 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2018 18:51:12.2753 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB0746 Subject: Re: [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New DP500/DP550/DP650 platform library. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Jan 2018 18:46:21 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiAyMyBEZWNlbWJlciAy MDE3IDE2OjA3DQo+IFRvOiBFdmFuIExsb3lkIDxFdmFuLkxsb3lkQGFybS5jb20+DQo+IENjOiBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgQXJ2aW5kIENoYXVoYW4gPEFydmluZC5DaGF1aGFuQGFy bS5jb20+Ow0KPiBEYW5paWwgRWdyYW5vdiA8RGFuaWlsLkVncmFub3ZAYXJtLmNvbT47IFRob21h cyBBYnJhaGFtDQo+IDx0aG9tYXMuYWJyYWhhbUBhcm0uY29tPjsgImFyZC5iaWVzaGV1dmVsQGxp bmFyby5vcmciQGFybS5jb207DQo+ICJsZWlmLmxpbmRob2xtQGxpbmFyby5vcmciQGFybS5jb207 DQo+ICJNYXR0ZW8uQ2FybGluaUBhcm0uY29tIkBhcm0uY29tOyAibmRAYXJtLmNvbSJAYXJtLmNv bQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIGVkazItcGxhdGZvcm1zIHYyIDE1LzE4XSBBUk0vVkV4 cHJlc3NQa2c6IE5ldw0KPiBEUDUwMC9EUDU1MC9EUDY1MCBwbGF0Zm9ybSBsaWJyYXJ5Lg0KPg0K PiBPbiAyMiBEZWNlbWJlciAyMDE3IGF0IDE5OjA4LCAgPGV2YW4ubGxveWRAYXJtLmNvbT4gd3Jv dGU6DQo+ID4gRnJvbTogR2lyaXNoIFBhdGhhayA8Z2lyaXNoLnBhdGhhayBhdCBhcm0uY29tPg0K PiA+DQouLi4NCj4gPiArDQo+ID4gKy8qIEludGVybmFsIGhlbHBlciBmdW5jdGlvbiB0byBhbGxv Y2F0ZSBtZW1vcnkgaWYgbWVtb3J5IGlzIG5vdA0KPiA+ICthbHJlYWR5DQo+ID4gKyAgcmVzZXJ2 ZWQgZm9yIGZyYW1lYnVmZmVyDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtpbl0gIFZyYW1TaXplICAg ICAgICAgIFJlcXVlc3RlZCBmcmFtZWJ1ZmZlciBzaXplIGluIGJ5dGVzLg0KPiA+ICsgIEBwYXJh bVtvdXRdIFZyYW1CYXNlQWRkcmVzcyAgIFBvaW50ZXIgdG8gbWVtb3J5IGFsbG9jYXRlZCBmb3IN Cj4gZnJhbWVidWZmZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgIEZyYW1lYnVmZmVyIG1lbW9yeSBhbGxvY2F0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+ICsgIEBy ZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgIEFsbG9jYXRlZCBhZGRyZXNzIHdpZGVyIHRoYW4g NDAgYml0cy4NCj4gPiArICBAcmV0dmFsICFFRklfU1VDQ0VTUyAgICAgICAgICBPdGhlciBlcnJv cnMuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtHZXRWcmFt ICgNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgIENPTlNUICBWcmFtU2l6ZSwNCj4g PiArICBPVVQgRUZJX1BIWVNJQ0FMX0FERFJFU1MgKkNPTlNUICBWcmFtQmFzZUFkZHJlc3MNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTIFN0YXR1czsNCj4gPiArDQo+ID4gKyAg Ly8gQ2hlY2sgaWYgbWVtb3J5IGlzIGFscmVhZHkgcmVzZXJ2ZWQgZm9yIHRoZSBmcmFtZWJ1ZmZl ci4NCj4gPiArI2lmIChGaXhlZFBjZEdldDY0IChQY2RBcm1MY2REZHJGcmFtZUJ1ZmZlckJhc2Up ICE9IDApDQo+ID4gKw0KPg0KPiBQbGVhc2UgZG9uJ3QgdXNlIENQUCBjb25kaXRpb25hbHMgZm9y IGNvbnRyb2wgZmxvdw0KPg0KPiA+ICsjaWYgKCFEUF9WQUxJRF9CQVNFX0FERFIgKEZpeGVkUGNk R2V0NjQNCj4gPiArKFBjZEFybUxjZERkckZyYW1lQnVmZmVyQmFzZSkpKSAjZXJyb3IgQVJNIE1h bGkgRFAgZnJhbWVidWZmZXINCj4gYmFzZSBhZGRyZXNzIGNhbm5vdCBiZSB3aWRlciB0aGFuIDQw IGJpdHMuDQo+ID4gKyNlbHNlDQo+ID4gKyAgKlZyYW1CYXNlQWRkcmVzcyA9DQo+ID4gKyAgICAo RUZJX1BIWVNJQ0FMX0FERFJFU1MpRml4ZWRQY2RHZXQ2NA0KPiA+ICsoUGNkQXJtTGNkRGRyRnJh bWVCdWZmZXJCYXNlKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4g KyNlbmRpZg0KPiA+ICsNCj4gPiArI2Vsc2UNCj4gPiArICAvLyBJZiBub3QgYWxyZWFkeSByZXNl cnZlZCwgYXR0ZW1wdCB0byBhbGxvY2F0ZSB0aGUgVlJBTSBmcm9tIHRoZQ0KPiBEUkFNLg0KPiA+ ICsgIFN0YXR1cyA9IGdCUy0+QWxsb2NhdGVQYWdlcyAoDQo+ID4gKyAgICAgICAgICAgICAgICAg IEFsbG9jYXRlQW55UGFnZXMsDQo+ID4gKyAgICAgICAgICAgICAgICAgIEVmaUJvb3RTZXJ2aWNl c0RhdGEsDQo+ID4gKyAgICAgICAgICAgICAgICAgIEVGSV9TSVpFX1RPX1BBR0VTICgqVnJhbVNp emUpLA0KPiA+ICsgICAgICAgICAgICAgICAgICBWcmFtQmFzZUFkZHJlc3MNCj4gPiArICAgICAg ICAgICAgICAgICAgKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAg ICBERUJVRyAoKERFQlVHX0VSUk9SLCAiQXJtTWFsaURwTGliOiBGYWlsZWQgdG8gYWxsb2NhdGUN Cj4gZnJhbWVidWZmZXIuXG4iKSk7DQo+ID4gKyAgICBBU1NFUlQgKEZBTFNFKTsNCj4gPiArICAg IHJldHVybiBTdGF0dXM7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBBUk0gTWFsaSBEUCBm cmFtZWJ1ZmZlciBiYXNlIGFkZHJlc3MgY2FuIG5vdCBiZSB3aWRlciB0aGFuIDQwIGJpdHMuDQo+ ID4gKyAgaWYgKCFEUF9WQUxJRF9CQVNFX0FERFIgKCpWcmFtQmFzZUFkZHJlc3MpKSB7DQo+ID4g KyAgICBnQlMtPkZyZWVQYWdlcyAoKlZyYW1CYXNlQWRkcmVzcywgRUZJX1NJWkVfVE9fUEFHRVMN Cj4gKCpWcmFtU2l6ZSkpOw0KPiA+ICsgICAgQVNTRVJUIChEUF9WQUxJRF9CQVNFX0FERFIgKCpW cmFtQmFzZUFkZHJlc3MpKTsNCj4gPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICAvLyBNYXJrIHRoZSBWUkFNIGFzIHdyaXRlLWNvbWJpbmluZy4g VGhlIFZSQU0gaXMgaW5zaWRlIHRoZSBEUkFNLA0KPiA+ICsgd2hpY2ggaXMgIC8vIGNhY2hlYWJs ZSwgZm9yIEFSTS9BQXJjaDY0IEVGSV9NRU1PUllfV0MgbWVtb3J5IGlzDQo+IGFjdHVhbGx5IHVu Y2FjaGVkLg0KPiA+ICsgIFN0YXR1cyA9IGdEUy0+U2V0TWVtb3J5U3BhY2VBdHRyaWJ1dGVzICgN Cj4gPiArICAgICAgICAgICAgICAgICAgKlZyYW1CYXNlQWRkcmVzcywNCj4gPiArICAgICAgICAg ICAgICAgICAgKlZyYW1TaXplLA0KPiA+ICsgICAgICAgICAgICAgICAgICBFRklfTUVNT1JZX1dD DQo+DQo+IFBsZWFzZSBhZGQgRUZJX01FTU9SWV9YUCBoZXJlDQo+DQoNCiBbW0V2YW4gTGxveWRd XSBXZSBjYW4gZG8gdGhhdCwgaGFwcGlseS4gIEhvd2V2ZXIsIGluIGxvb2tpbmcgYXQgdGhpcyB3 ZSBmb3VuZCB0aGF0IHRoZSBVRUZJIHNwZWMgaGFzIGluICIyLjMuNiBBQXJjaDY0IFBsYXRmb3Jt cyIsIHNlY3Rpb24gIjIuMy42LjEgTWVtb3J5IHR5cGVzIjoNCkVGSV9NRU1PUllfWFAsIC4uLiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTm90IHVzZWQgb3IgZGVmaW5lZA0KDQpEb2VzIHRoYXQgc3VnZ2Vz dCB3ZSBuZWVkIGEgbWlub3Igc3BlYyB1cGRhdGU/DQoNCj4gPiArICAgICAgICAgICAgICAgICAg KTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gKyAgICBBU1NFUlQgKEZB TFNFKTsNCj4gPiArICAgIGdCUy0+RnJlZVBhZ2VzICgqVnJhbUJhc2VBZGRyZXNzLCBFRklfU0la RV9UT19QQUdFUw0KPiAoKlZyYW1TaXplKSk7DQo+ID4gKyAgfQ0KPiA+ICsjZW5kaWYNCj4gPiAr DQo+ID4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIEFsbG9jYXRl IFZSQU0gbWVtb3J5IGluIERSQU0gZm9yIHRoZSBmcmFtZWJ1ZmZlcg0KPiA+ICsgICh1bmxlc3Mg aXQgaXMgcmVzZXJ2ZWQgYWxyZWFkeSkuDQo+ID4gKw0KPiA+ICsgIFRoZSBhbGxvY2F0ZWQgYWRk cmVzcyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGZyYW1lYnVmZmVyIGFzIGEgYmFzZQ0KPiA+ICsg YnVmZmVyICBhZGRyZXNzIGZvciBhbnkgbGF5ZXIgb2YgdGhlIEFSTSBNYWxpIERQLg0KPiA+ICsN Cj4gPiArICBAcGFyYW1bb3V0XSBWcmFtQmFzZUFkZHJlc3MgICAgIEEgcG9pbnRlciB0byB0aGUg ZnJhbWVidWZmZXINCj4gYWRkcmVzcy4NCj4gPiArICBAcGFyYW1bb3V0XSBWcmFtU2l6ZSAgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgc2l6ZSBvZiB0aGUgZnJhbWUNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciBpbiBieXRlcw0KPiA+ICsNCj4gPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIEZyYW1lIGJ1ZmZlciBtZW1vcnkgYWxsb2Nh dGlvbiBzdWNjZXNzLg0KPiA+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgQWxs b2NhdGVkIGFkZHJlc3Mgd2lkZXIgdGhhbiA0MCBiaXRzDQo+ID4gKyAgQHJldHZhbCAhRUZJX1NV Q0NFU1MgICAgICAgICAgICBPdGhlciBlcnJvcnMuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVT DQo+ID4gK0xjZFBsYXRmb3JtR2V0VnJhbSAoDQo+ID4gKyAgT1VUIEVGSV9QSFlTSUNBTF9BRERS RVNTICogQ09OU1QgVnJhbUJhc2VBZGRyZXNzLA0KPiA+ICsgIE9VVCBVSU5UTiAgICAgICAgICAg ICAgICAqIENPTlNUIFZyYW1TaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgQVNTRVJUIChW cmFtQmFzZUFkZHJlc3MgIT0gTlVMTCk7DQo+ID4gKyAgQVNTRVJUIChWcmFtU2l6ZSAhPSBOVUxM KTsNCj4gPiArDQo+ID4gKyAgLy8gU2V0IHRoZSBWUkFNIHNpemUuDQo+ID4gKyAgKlZyYW1TaXpl ID0gKFVJTlROKUZpeGVkUGNkR2V0MzIgKFBjZEFybUxjZERkckZyYW1lQnVmZmVyU2l6ZSk7DQo+ ID4gKw0KPiA+ICsgIHJldHVybiBHZXRWcmFtICgqVnJhbVNpemUsIFZyYW1CYXNlQWRkcmVzcyk7 IH0NCj4gPiArDQo+ID4gKy8qKiBSZXR1cm4gdG90YWwgbnVtYmVyIG9mIG1vZGVzIHN1cHBvcnRl ZC4NCj4gPiArDQo+ID4gKyAgTm90ZTogVmFsaWQgbW9kZSBudW1iZXJzIGFyZSAwIHRvIE1heE1v ZGUgLSAxICBTZWUgU2VjdGlvbiAxMi45IG9mDQo+ID4gKyB0aGUgVUVGSSBTcGVjaWZpY2F0aW9u IDIuNw0KPiA+ICsNCj4gPiArICBAcmV0dmFsIFVJTlQzMiAgICAgICAgICAgICBNb2RlIE51bWJl ci4NCj4gPiArKiovDQo+ID4gK1VJTlQzMg0KPiA+ICtMY2RQbGF0Zm9ybUdldE1heE1vZGUgKFZP SUQpDQo+ID4gK3sNCj4gPiArICByZXR1cm4gIG1NYXhNb2RlOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKiogU2V0IHRoZSByZXF1ZXN0ZWQgZGlzcGxheSBtb2RlLg0KPiA+ICsNCj4gPiArICBAcGFy YW1baW5dIE1vZGVOdW1iZXIgICAgICAgICAgICBNb2RlIE51bWJlci4NCj4gPiArDQo+ID4gKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgTW9kZSBzZXQgc3VjY2Vzc2Z1bC4NCj4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICBSZXF1ZXN0ZWQgbW9kZSBub3Qg Zm91bmQuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0xjZFBsYXRmb3JtU2V0TW9k ZSAoDQo+ID4gKyAgSU4gQ09OU1QgVUlOVDMyIE1vZGVOdW1iZXINCj4gPiArICApDQo+ID4gK3sN Cj4gPiArDQo+ID4gKyAgaWYgKE1vZGVOdW1iZXIgPj0gbU1heE1vZGUpIHsNCj4gPiArICAgIEFT U0VSVCAoTW9kZU51bWJlciA8IG1NYXhNb2RlKTsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBPbiBtb2RlbHMsIHBsYXRm b3JtIHNwZWNpZmljIGNsb2NrL211eCBzZXR0aW5ncyBhcmUgbm90IHJlcXVpcmVkLg0KPiA+ICsg IC8vIERpc3BsYXkgY29udHJvbGxlciBzcGVjaWZpYyBzZXR0aW5ncyBmb3IgTWFsaSBEUCBhcmUg ZG9uZSBpbg0KPiBMY2RTZXRNb2RlLg0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqIFJldHVybiBpbmZvcm1hdGlvbiBmb3IgdGhlIHJlcXVlc3RlZCBt b2RlIG51bWJlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgTW9kZU51bWJlciAgICAgICAg ICBNb2RlIE51bWJlci4NCj4gPiArICBAcGFyYW1bb3V0XSBJbmZvICAgICAgICAgICAgICAgIFBv aW50ZXIgZm9yIHJldHVybmVkIG1vZGUgaW5mb3JtYXRpb24NCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvbiBzdWNjZXNzKS4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgICBEaXNwbGF5IG1vZGUgaW5mb3JtYXRpb24gb2YgdGhlDQo+ IHJlcXVlc3RlZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSBy ZXR1cm5lZCBzdWNjZXNzZnVsbHkuDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0xj ZFBsYXRmb3JtUXVlcnlNb2RlICgNCj4gPiArICBJTiAgQ09OU1QgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTW9kZU51bWJlciwNCj4gPiArICBPVVQgRUZJX0dSQVBISUNT X09VVFBVVF9NT0RFX0lORk9STUFUSU9OICogQ09OU1QgSW5mbw0KPiA+ICsgICkNCj4gPiArew0K PiA+ICsgIEFTU0VSVCAoTW9kZU51bWJlciA8IG1NYXhNb2RlKTsNCj4gPiArICBBU1NFUlQgKElu Zm8gIT0gTlVMTCk7DQo+ID4gKw0KPiA+ICsgIEluZm8tPlZlcnNpb24gPSAwOw0KPiA+ICsgIElu Zm8tPkhvcml6b250YWxSZXNvbHV0aW9uID0NCj4gPiArIG1EaXNwbGF5TW9kZXNbTW9kZU51bWJl cl0uSG9yaXpvbnRhbC5SZXNvbHV0aW9uOw0KPiA+ICsgIEluZm8tPlZlcnRpY2FsUmVzb2x1dGlv biA9DQo+ID4gKyBtRGlzcGxheU1vZGVzW01vZGVOdW1iZXJdLlZlcnRpY2FsLlJlc29sdXRpb247 DQo+ID4gKyAgSW5mby0+UGl4ZWxzUGVyU2NhbkxpbmUgPQ0KPiA+ICsgbURpc3BsYXlNb2Rlc1tN b2RlTnVtYmVyXS5Ib3Jpem9udGFsLlJlc29sdXRpb247DQo+ID4gKw0KPiA+ICsgIEluZm8tPlBp eGVsRm9ybWF0ID0gRml4ZWRQY2RHZXQzMiAoUGNkR29wUGl4ZWxGb3JtYXQpOw0KPiA+ICsNCj4g PiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBSZXR1cm4g dGhlIGRpc3BsYXkgdGltaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcmVxdWVzdGVkIG1vZGUNCj4g bnVtYmVyLg0KPiA+ICsNCj4gPiArICBAcGFyYW1baW5dICBNb2RlTnVtYmVyICAgICAgICAgTW9k ZSBOdW1iZXIuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdIEhvcml6b250YWwgICAgICAgICBQ b2ludGVyIHRvIGhvcml6b250YWwgdGltaW5nIHBhcmFtZXRlcnMuDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChSZXNvbHV0aW9uLCBTeW5jLCBCYWNrIHBvcmNoLCBGcm9u dCBwb3JjaCkNCj4gPiArICBAcGFyYW1bb3V0XSBWZXJ0aWNhbCAgICAgICAgICAgUG9pbnRlciB0 byB2ZXJ0aWNhbCB0aW1pbmcgcGFyYW1ldGVycy4NCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFJlc29sdXRpb24sIFN5bmMsIEJhY2sgcG9yY2gsIEZyb250DQo+ID4gKyBw b3JjaCkNCj4gPiArDQo+ID4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBEaXNw bGF5IHRpbWluZyBpbmZvcm1hdGlvbiBvZiB0aGUNCj4gcmVxdWVzdGVkDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4g PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFJlcXVlc3RlZCBtb2RlIG5vdCBm b3VuZC4NCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArTGNkUGxhdGZvcm1HZXRUaW1p bmdzICgNCj4gPiArICBJTiAgVUlOVDMyICAgICAgICAgICAgICAgIE1vZGVOdW1iZXIsDQo+ID4g KyAgT1VUIENPTlNUIFNDQU5fVElNSU5HUyAqKiBIb3Jpem9udGFsLA0KPiA+ICsgIE9VVCBDT05T VCBTQ0FOX1RJTUlOR1MgKiogVmVydGljYWwNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBBU1NF UlQgKEhvcml6b250YWwgIT0gTlVMTCk7DQo+ID4gKyAgQVNTRVJUIChWZXJ0aWNhbCAhPSBOVUxM KTsNCj4gPiArDQo+ID4gKyAgaWYgKE1vZGVOdW1iZXIgPj0gbU1heE1vZGUpIHsNCj4gPiArICAg IEFTU0VSVCAoTW9kZU51bWJlciA8IG1NYXhNb2RlKTsNCj4gPiArICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAqSG9yaXpvbnRhbCA9ICZt RGlzcGxheU1vZGVzW01vZGVOdW1iZXJdLkhvcml6b250YWw7DQo+ID4gKyAgKlZlcnRpY2FsID0g Jm1EaXNwbGF5TW9kZXNbTW9kZU51bWJlcl0uVmVydGljYWw7DQo+ID4gKw0KPiA+ICsgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqIFJldHVybiBiaXRzIHBlciBw aXhlbCBpbmZvcm1hdGlvbiBmb3IgYSBtb2RlIG51bWJlci4NCj4gPiArDQo+ID4gKyAgQHBhcmFt W2luXSAgTW9kZU51bWJlciAgICAgICAgICBNb2RlIE51bWJlci4NCj4gPiArICBAcGFyYW1bb3V0 XSBCcHAgICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdmFsdWUgQnl0ZXMgUGVyIFBpeGVsLg0K PiA+ICsNCj4gPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIEJpdHMgcGVyIHBp eGVsIGluZm9ybWF0aW9uIG9mIHRoZSBkaXNwbGF5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb2RlIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4NCj4gPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFJlcXVlc3RlZCBtb2RlIG5vdCBmb3VuZC4NCj4gPiAr KiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArTGNkUGxhdGZvcm1HZXRCcHAgKA0KPiA+ICsgIElO ICBDT05TVCBVSU5UMzIgICAgTW9kZU51bWJlciwNCj4gPiArICBPVVQgTENEX0JQUCAqIENPTlNU IEJwcA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFTU0VSVCAoQnBwICE9IE5VTEwpOw0KPiA+ ICsgIGlmIChNb2RlTnVtYmVyID49IG1NYXhNb2RlKSB7DQo+ID4gKyAgICAvLyBDaGVjayB2YWxp ZCBNb2RlTnVtYmVyLg0KPiA+ICsgICAgQVNTRVJUIChNb2RlTnVtYmVyIDwgbU1heE1vZGUpOw0K PiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgICpCcHAgPSBMQ0RfQklUU19QRVJfUElYRUxfMjQ7DQo+ID4gKw0KPiA+ICsgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL1BsYXRmb3Jt L0FSTS9WRXhwcmVzc1BrZy9MaWJyYXJ5L0FybVZFeHByZXNzTGliUlRTTS9SVFNNTWVtLmMNCj4g Pg0KPiBiL1BsYXRmb3JtL0FSTS9WRXhwcmVzc1BrZy9MaWJyYXJ5L0FybVZFeHByZXNzTGliUlRT TS9SVFNNTWVtLmMNCj4gPiBpbmRleA0KPiA+DQo+IDFlOGYzMjA1MzEyZWJmMzBmYTE2NjYxMzBi Yzk0NDI2MTM4NDM1OWEuLmYwYjQ4MmY5MWE4NGQ5MWFjOTkxNA0KPiBjMThiNzk0DQo+ID4gMWRk MzJhYjhjOGE3IDEwMDY0NA0KPiA+IC0tLQ0KPiBhL1BsYXRmb3JtL0FSTS9WRXhwcmVzc1BrZy9M aWJyYXJ5L0FybVZFeHByZXNzTGliUlRTTS9SVFNNTWVtLmMNCj4gPiArKysNCj4gYi9QbGF0Zm9y bS9BUk0vVkV4cHJlc3NQa2cvTGlicmFyeS9Bcm1WRXhwcmVzc0xpYlJUU00vUlRTTU1lbS5jDQo+ ID4gQEAgLTIxLDkgKzIxLDEwIEBADQo+ID4gICNpbmNsdWRlIDxBcm1QbGF0Zm9ybS5oPg0KPiA+ DQo+ID4gICNkZWZpbmUgRlJBTUVfQlVGRkVSX0RFU0NSSVBUT1IgKChGaXhlZFBjZEdldDY0DQo+ ID4gKFBjZEFybUxjZERkckZyYW1lQnVmZmVyQmFzZSkgIT0gMCkgPyAxIDogMCkNCj4gPiArI2Rl ZmluZSBEUF9CQVNFX0RFU0NSSVBUT1IgICAgICAoKEZpeGVkUGNkR2V0NjQNCj4gKFBjZEFybU1h bGlEcEJhc2UpICE9IDApID8gMSA6IDApDQo+ID4NCj4gPiAgLy8gTnVtYmVyIG9mIFZpcnR1YWwg TWVtb3J5IE1hcCBEZXNjcmlwdG9ycyAtI2RlZmluZQ0KPiA+IE1BWF9WSVJUVUFMX01FTU9SWV9N QVBfREVTQ1JJUFRPUlMgKDkgKw0KPiBGUkFNRV9CVUZGRVJfREVTQ1JJUFRPUikNCj4gPiArI2Rl ZmluZSBNQVhfVklSVFVBTF9NRU1PUllfTUFQX0RFU0NSSVBUT1JTICg5ICsNCj4gPiArRlJBTUVf QlVGRkVSX0RFU0NSSVBUT1IgKyBEUF9CQVNFX0RFU0NSSVBUT1IpDQo+ID4NCj4gPiAgLy8gRERS IGF0dHJpYnV0ZXMNCj4gPiAgI2RlZmluZSBERFJfQVRUUklCVVRFU19DQUNIRUQNCj4gQVJNX01F TU9SWV9SRUdJT05fQVRUUklCVVRFX1dSSVRFX0JBQ0sNCj4gPiBAQCAtMTU4LDYgKzE1OSwxMyBA QCBBcm1QbGF0Zm9ybUdldFZpcnR1YWxNZW1vcnlNYXAgKA0KPiA+ICAgIFZpcnR1YWxNZW1vcnlU YWJsZVtJbmRleF0uQXR0cmlidXRlcyA9DQo+ID4gQVJNX01FTU9SWV9SRUdJT05fQVRUUklCVVRF X1VOQ0FDSEVEX1VOQlVGRkVSRUQ7DQo+ID4gICNlbmRpZg0KPiA+DQo+ID4gKyNpZiAoRml4ZWRQ Y2RHZXQ2NCAoUGNkQXJtTWFsaURwQmFzZSkgIT0gMCkNCj4gPiArICAvLyBEUDUwMC9EUDU1MC9E UDY1MCBwZXJpcGhlcmFsIG1lbW9yeSByZWdpb24NCj4gPiArICBWaXJ0dWFsTWVtb3J5VGFibGVb KytJbmRleF0uUGh5c2ljYWxCYXNlID0gRml4ZWRQY2RHZXQ2NA0KPiA+ICsoUGNkQXJtTWFsaURw QmFzZSk7DQo+ID4gKyAgVmlydHVhbE1lbW9yeVRhYmxlW0luZGV4XS5WaXJ0dWFsQmFzZSA9IEZp eGVkUGNkR2V0NjQNCj4gPiArKFBjZEFybU1hbGlEcEJhc2UpOw0KPiA+ICsgIFZpcnR1YWxNZW1v cnlUYWJsZVtJbmRleF0uTGVuZ3RoID0gRml4ZWRQY2RHZXQzMg0KPiA+ICsoUGNkQXJtTWFsaURw TWVtb3J5UmVnaW9uTGVuZ3RoKTsNCj4gPiArICBWaXJ0dWFsTWVtb3J5VGFibGVbSW5kZXhdLkF0 dHJpYnV0ZXMgPQ0KPiA+ICtBUk1fTUVNT1JZX1JFR0lPTl9BVFRSSUJVVEVfREVWSUNFOw0KPiA+ ICsjZW5kaWYNCj4gPiAgICAvLyBNYXAgc3BhcnNlIG1lbW9yeSByZWdpb24gaWYgcHJlc2VudA0K PiA+ICAgIGlmIChIYXNTcGFyc2VNZW1vcnkpIHsNCj4gPiAgICAgIFZpcnR1YWxNZW1vcnlUYWJs ZVsrK0luZGV4XS5QaHlzaWNhbEJhc2UgPSBTcGFyc2VNZW1vcnlCYXNlOw0KPiA+IC0tDQo+ID4g R3VpZCgiQ0UxNjU2NjktM0VGMy00OTNGLUI4NUQtNjE5MEVFNUI5NzU5IikNCj4gPg0KSU1QT1JU QU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50 cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJl IG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1t ZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBl cnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3Jt YXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K