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.62; 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-eopbgr00062.outbound.protection.outlook.com [40.107.0.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4B079221EA0A1 for ; Thu, 7 Dec 2017 12:16:31 -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=cGKbojMqh7Lyo4N091T8g+FsajMeKssP7iYkbb+cxkI=; b=YFHj05NhFGTl8KKTikaFh9NB2Lh2zpZm4wQKkKKfCkG+NGKH+VRcuDhd3v5Oj+1UI5wCGRruyieYqKVS1KTrFTXUZOdVV0uhOa670SkmFleo/iJztY5HPBr99+k4lZ7U7U5O8mectx1KZ173RVApL0kaMUqj2cOfay/kcxZxvVI= Received: from AM4PR0801MB1444.eurprd08.prod.outlook.com (10.168.5.24) by VI1PR0801MB1773.eurprd08.prod.outlook.com (10.168.67.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 7 Dec 2017 20:21:02 +0000 Received: from AM4PR0801MB1444.eurprd08.prod.outlook.com ([fe80::2953:37dd:2fcb:a418]) by AM4PR0801MB1444.eurprd08.prod.outlook.com ([fe80::2953:37dd:2fcb:a418%14]) with mapi id 15.20.0302.010; Thu, 7 Dec 2017 20:21:02 +0000 From: Evan Lloyd To: Ard Biesheuvel CC: "edk2-devel@lists.01.org" , Matteo Carlini , Leif Lindholm , "Girish Pathak" Thread-Topic: [PATCH 19/19] ArmPlatformPkg: New DP500/DP550/DP650 GOP driver. Thread-Index: AQHTaHUx3AX1mHcpcE2mKjMI81BUrKMtQ2oggAF8goCABm+d8IAAH1MAgAMKMpA= Date: Thu, 7 Dec 2017 20:21:02 +0000 Message-ID: References: <20170926201529.11644-1-evan.lloyd@arm.com> <20170926201529.11644-20-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; VI1PR0801MB1773; 6:MTKKEuihTcFr+Lz7Rgf26mIV+fXIlwfZk/3qYR5ENfMuyJPOil3sSuJKvnog/cTrIBqRVidzMlqnGwcXSBFgEcxNjqr3wrIxCyxG+8pNLa9RXvYlGeoA7LzosSi9p5K5vuo0w7msBMhytyXqgAbzzKCZXwmxTiRX8Jv95CmmffGwWo0k05CyHO2rCNT12R9EHmGNtXp2FSiamqM+VFZkoLaW4h1bH1DQqQsR0sgW6vwy0hyXexqZeDIdThp+YQ7YoSqrEZ2kD8QQxW9rgiyTwLe93LndcxEg5IQkefALazQgSiADoJIMoyxMgd4vaYYYd+VNWUdqxauXtHYCNv7L6ZV8WuX2oF8jTnwcx3GqlpY=; 5:uyE7/oEO5jQHMSFHGE197W62txHBhi3Hs7fH2/EdfPBoISkAP7/89BSj4LbPFmX88hiEb749NdNaLvvoFbQCeLX39Sk759QTWRPTHiUnagcy31YWYfOAZAnJ5PIeyyYmzrGGecvmXgezcfcgfmPeE6XHp7KZB0foOKdavlnNCMQ=; 24:5gjRmEuouLvKi7FBNtlRPHB55Fa0n2kiPRIq49Z68RdnxGFssLu3b8fx1BkNzoAgAS6EoWkAo6yFPpxSSq9RQogHuHEvIahVHZHnppCW7BM=; 7:eDENQ73rtF3BYt7GhHNRozE9yYKJoz+6rwpXC6Gjfm9f0XMXvzJ/ks9ElYc3/0y8mOxkefPQHSnKGz3aTaChBev2AkzcEJOQ5zsKBT3dV+Qplcl+LxexOIGvd5FvWaShrbdjNgrGEwtofJ2wbr7ZUQ8LqZ1DMZAcX/2udVVUMoERRsLez/h1MQqVFOR8eNh3N7gjiZCZ9W/07IMd3fBMZ3nSynCiw+HeRUPgvm3O7x5Gnc6C+gR6TcBPSRLu2EgX x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c1deb012-cd89-44e1-61bf-08d53db0095e x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603304); SRVR:VI1PR0801MB1773; x-ms-traffictypediagnostic: VI1PR0801MB1773: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(60795455431006)(180628864354917)(162533806227266); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231022)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123564025)(20161123555025)(20161123562025)(6072148)(201708071742011); SRVR:VI1PR0801MB1773; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR0801MB1773; x-forefront-prvs: 05143A8241 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(39860400002)(366004)(346002)(13464003)(199004)(189003)(40434004)(24454002)(3846002)(7736002)(54906003)(6246003)(6116002)(66066001)(99286004)(68736007)(316002)(102836003)(74316002)(4326008)(93886005)(53936002)(33656002)(101416001)(305945005)(86362001)(106356001)(2906002)(9686003)(2900100001)(8676002)(81156014)(72206003)(478600001)(81166006)(55016002)(14454004)(97736004)(25786009)(3280700002)(105586002)(53546010)(6506006)(229853002)(5890100001)(6436002)(8936002)(2950100002)(5250100002)(76176011)(3660700001)(6916009)(7696005)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0801MB1773; H:AM4PR0801MB1444.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1deb012-cd89-44e1-61bf-08d53db0095e X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2017 20:21:02.2105 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1773 Subject: Re: [PATCH 19/19] ArmPlatformPkg: New DP500/DP550/DP650 GOP driver. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Dec 2017 20:16:32 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQXJkLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEFyZCBCaWVz aGV1dmVsIFttYWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gU2VudDogMDUgRGVj ZW1iZXIgMjAxNyAyMToyOA0KPiBUbzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPg0K PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IE1hdHRlbyBDYXJsaW5pIDxNYXR0ZW8uQ2Fy bGluaUBhcm0uY29tPjsNCj4gTGVpZiBMaW5kaG9sbSA8bGVpZi5saW5kaG9sbUBsaW5hcm8ub3Jn PjsgR2lyaXNoIFBhdGhhaw0KPiA8R2lyaXNoLlBhdGhha0Bhcm0uY29tPg0KPiBTdWJqZWN0OiBS ZTogW1BBVENIIDE5LzE5XSBBcm1QbGF0Zm9ybVBrZzogTmV3IERQNTAwL0RQNTUwL0RQNjUwDQo+ IEdPUCBkcml2ZXIuDQo+DQo+IE9uIDUgRGVjZW1iZXIgMjAxNyBhdCAyMDowMywgRXZhbiBMbG95 ZCA8RXZhbi5MbG95ZEBhcm0uY29tPiB3cm90ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEFyZCBCaWVzaGV1dmVsIFttYWlsdG86YXJkLmJp ZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj4gPj4gU2VudDogMDEgRGVjZW1iZXIgMjAxNyAxNzoxOQ0K PiA+PiBUbzogRXZhbiBMbG95ZCA8RXZhbi5MbG95ZEBhcm0uY29tPg0KPiA+PiBDYzogZWRrMi1k ZXZlbEBsaXN0cy4wMS5vcmc7IE1hdHRlbyBDYXJsaW5pIDxNYXR0ZW8uQ2FybGluaUBhcm0uY29t PjsNCj4gPj4gTGVpZiBMaW5kaG9sbSA8bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnPjsgR2lyaXNo IFBhdGhhaw0KPiA+PiA8R2lyaXNoLlBhdGhha0Bhcm0uY29tPg0KPiA+PiBTdWJqZWN0OiBSZTog W1BBVENIIDE5LzE5XSBBcm1QbGF0Zm9ybVBrZzogTmV3IERQNTAwL0RQNTUwL0RQNjUwDQo+IEdP UA0KPiA+PiBkcml2ZXIuDQo+ID4+DQouLi4NCj4gPj4gPg0KPiA+PiA+PiB3aGF0c29ldmVyLiBJ ZiB5b3UgaW50cm9kdWNlIGFueSBsaWJyYXJ5IGNsYXNzZXMgdGhhdCBhYnN0cmFjdA0KPiA+PiA+ PiBhd2F5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHBsYXRmb3JtcywgeW91IGNhbiBpbmNsdWRl IGEgTnVsbA0KPiA+PiA+PiB2ZXJzaW9uIG9mIHN1Y2ggYSBsaWJyYXJ5IHRoYXQgc2ltcGx5IGRv ZXMgQVNTRVJUIChGQUxTRSkgaW4gZXZlcnkNCj4gZnVuY3Rpb246DQo+ID4+ID4+IHRoaXMNCj4g Pj4gPg0KPiA+PiA+ICBbW0V2YW4gTGxveWRdXSBPbmUgY291bGQsIGluZGVlZCwgZG8gdGhhdC4g IFdlLCBob3dldmVyLCB3b3VsZCBiZQ0KPiA+PiA+IHZlcnkNCj4gPj4gcmVsdWN0YW50IHRvIGlu Y3VyIHRoZSBvdmVyaGVhZCBvZiByZXdvcmsgaW4gcmVzcG9uc2UgdG8gc3B1cmlvdXMNCj4gPj4g Y2F2aWxzIGZyb20gYSBtYWludGFpbmVyIHdoZW4gaXQgaXMgb2Ygbm8gZGlyZWN0IHJlbGV2YW5j ZSB0byB1cy4NCj4gPj4gPg0KPiA+Pg0KPiA+PiBJIGRvbid0IHRoaW5rIHRoZSBzdWdnZXN0aW9u IHRoYXQgd2UgZXZpbCBtYWludGFpbmVycyBhcmUgbm90aGluZyBidXQNCj4gPj4gYW4gaW1wZWRp bWVudCB0byB0aGUgbGlrZXMgb2YgeW91IGFuZCB5b3VyIHRlYW0gbWVtYmVycyBkb2luZyB0aGUN Cj4gPj4gYWN0dWFsIHdvcmsgaXMganVzdGlmaWVkLg0KPiA+Pg0KPiA+PiBXZSBhcmUgYWxsIG9u IHRoZSBzYW1lIHRlYW0gaGVyZSwgYW5kIHRoZSBnb2FsIGlzIHRvIG1ha2UgVUVGSSBjb2RlDQo+ ID4+IHJldXNhYmxlIGZvciB0aGUgY3VzdG9tZXJzIG9mIC95b3VyLyBlbXBsb3llci4gVGhyb3dp bmcgc3R1ZmYgb3Zlcg0KPiA+PiB0aGUgZmVuY2UgIT0gdXBzdHJlYW1pbmcsIGFuZCBpdCBpcyBt eSBqb2IgYXMgYSBtYWludGFpbmVyIHRvIGVuc3VyZQ0KPiA+PiB0aGF0IGNvZGUgaXMgc3RpbGwg bWFpbnRhaW5hYmxlIGxvbmcgYWZ0ZXIgdGhlIG9yaWdpbmFsIGF1dGhvcnMgaGF2ZQ0KPiA+PiBt b3ZlZCBvbiB0byBzb21ldGhpbmcgZWxzZS4NCj4gPj4NCj4gPj4gQXJtUGxhdGZvcm1Qa2cgaXMg YSBwZXJmZWN0IGV4YW1wbGUgd2hlcmUgY29kZSByZXVzZSBpcyBtdWNoIG1vcmUNCj4gPj4gZGlm ZmljdWx0IHRoYW4gaXQgbmVlZHMgdG8gYmUsIGFuZCB3ZSBhcyBtYWludGFpbmVycyBuZWVkIHRv IGRlYWwNCj4gPj4gd2l0aCBjb250cmlidXRvcnMgZnJvbSBvdGhlciBjb21wYW5pZXMgdGhhdCBo YXZlIHVzZWQgaXQgYXMNCj4gPj4gJ2d1aWRhbmNlJyBmb3IgaG93IHRvIGFyY2hpdGVjdCB0aGVp ciBVRUZJIGZpcm13YXJlLCB3aGljaCBpcyB1c3VhbGx5DQo+ID4+IGZpbGxlZCB3aXRoIHZleHBy ZXNzLWlzbXMgdGhhdCBkYXRlIGJhY2sgdG8gYmVmb3JlIGFueW9uZSBjdXJyZW50bHkNCj4gaW52 b2x2ZWQgd2l0aCBVRUZJIGNhbiByZW1lbWJlci4NCj4gPj4NCj4gPj4gVGhpcyBpcyB3aHkgSSBo YXZlIHRha2VuIHRoZSB0aW1lIHRvIHNpdCBkb3duLCBnbyB0aHJvdWdoIGFsbCB0aGUNCj4gPj4g Y3JhcCBjb2RlLCBjbGVhbiBpdCB1cCwgcmVmYWN0b3IgaXQgYW5kIHByb3Bvc2UgaXQgb24gdGhl IGxpc3QgYXMNCj4gPj4gaW1wcm92ZW1lbnRzLiBJIGV2ZW4gd2VudCBzbyBmYXIgYXMgdGFraW5n IHRoZSBwcmVwYXJhdG9yeSBNYWxpIHdvcmsNCj4gPj4gb2YgeW91ciB0ZWFtIGFuZCByZWJhc2Ug aXQgc28gdGhhdCB3ZSBjYW4ga2VlcCB0aGUgYml0cyB0aGF0IHdlIG1heQ0KPiA+PiBzaGFyZSwg YW5kIG1vdmUgdGhlIGJpdHMgb3V0IHRoYXQgc2hvdWxkIG5vdCBiZSBrZXB0IGluIG1haW4gRURL Mg0KPiA+PiBiZWNhdXNlIHRoZXkgYXJlIGJlaW5nIHRha2VuIGFzIGdvc3BlbCBieSBlbmdpbmVl cnMgdGhhdCBhcmUgbmV3IHRvDQo+ID4+IEFSTStVRUZJLg0KPiA+Pg0KPiA+PiBJZiB0aGlzIGlz IHRvbyBtdWNoIHRvIGRlYWwgd2l0aCBmb3IgeW91LCB0aGVuIGZpbmUsIGRvbid0IHVwc3RyZWFt IHlvdXINCj4gY29kZS4NCj4gPj4gQnV0IGlmIHlvdSBkbywgeW91IGFyZSBnb2luZyB0byBoYXZl IHRvIHBsYXkgbmljZSB3aXRoIHRoZSBvdGhlcnMsDQo+ID4+IGluY2x1ZGluZyB0aGUgbWFpbnRh aW5lcnMuDQo+ID4+DQo+ID4gW1tFdmFuIExsb3lkXV0gSGkgQXJkLiAgRmlyc3RseSwgSSBhcG9s b2dpemUsIEkgYXNzdW1lZCBmcm9tIHlvdXIgbmFtZSB0aGF0DQo+IHlvdSB3ZXJlIER1dGNoIGFu ZCB3b3VsZCB0aGVyZWZvcmUgcHJvYmFibHkgaGF2ZSBhIGxpdmVseSBzZW5zZSBvZg0KPiBodW1v dXIuICBPZiBjb3Vyc2UsIGlmIEkgaGF2ZSB0b3VjaGVkIGEgbmVydmUsIHRoYXQgaXMgdW5mb3J0 dW5hdGUgYW5kIEknbQ0KPiBzb3JyeS4NCj4NCj4gTm8sIHRoZSBhcHBhcmVudGx5IGJsYXRhbnRs eSBvYnZpb3VzIHRvbmd1ZS1pbi1jaGVlayBuYXR1cmUgb2YgeW91cg0KPiByZXNwb25zZSB3YXMg Y29tcGxldGVseSBsb3N0IG9uIG1lLiBCdXQgSSBrbm93IGEgcGVyc29uIHdobyBkb2VzIGhhdmUg YQ0KPiBsaXZlbHkgc2Vuc2Ugb2YgaHVtb3VyLCBzbyBuZXh0IHRpbWUgSSB3aWxsIGFzayBoaW0g Zm9yIGhlbHAuDQoNCiBbW0V2YW4gTGxveWRdXSBJIHdvdWxkIGxpa2UgdG8gZXh0ZW5kIG15IGFw b2xvZ3kuICBGcm9tIGNvbW1lbnRzIG90aGVycyBoYXZlIG1hZGUgaXQgaXMgYXBwYXJlbnQgdGhh dCBteSB3b3JkaW5nIHdhcyB0b28gZWFzaWx5IGludGVycHJldGVkIGFzIGp1c3Qgb2ZmZW5zaXZl LiAgSSBzaGFsbCB0cnkgYW5kIHJlc2lzdCB0aGUgdGVtcHRhdGlvbiB0byBtYWtlIHN1Y2ggcG9p bnRzIHdpdGggZHViaW91cyBhdHRlbXB0cyBhdCBodW1vdXIgaW4gdGhlIGZ1dHVyZSwgYXQgbGVh c3Qgb24gZm9yYSBsaWtlIHRoaXMgd2hlcmUgdGhleSBhcmUgb3V0IG9mIHBsYWNlLiAgSGV0IHNw aWp0IG1lLg0KDQo+DQo+ID4gSSBhZ3JlZSB0aGF0IGNsZWFuaW5nIHVwIHRoZSBjb2RlIGlzIGlt cG9ydGFudCwgd29ydGh3aGlsZSwgYW5kIGFuDQo+IG9iamVjdGl2ZSBmb3IgdXMgYWxsLiAgV2hh dCBjYW4gYmUgYSBkaWZmaWN1bHR5IGlzIG91ciB2ZXJ5IGRpZmZlcmVudA0KPiBjb25jZXB0aW9u cyBvZiB3aGF0IGNsZWFuIG1lYW5zLg0KPiA+DQo+DQo+IEZhaXIgZW5vdWdoLiBCdXQgYXMgbWFp bnRhaW5lcnMsIHdlIHRha2Ugb3duZXJzaGlwIG9mIHlvdXIgY29kZSwgd2l0aCB0aGUNCj4gaW1w bGllZCBwcm9taXNlIHRvIGtlZXAgaXQgaW4gYSB3b3JraW5nIHN0YXRlLiBJIGRvbid0IHRoaW5r IGl0IGlzDQo+IHVucmVhc29uYWJsZSB0aGF0IHdlIGdldCB0byBkaWN0YXRlIHNvbWUgb2YgdGhl IHRlcm1zIHVuZGVyIHdoaWNoIHRoYXQNCj4gb2NjdXJzLg0KPg0KPiA+IFlvdSBzaG91bGQgYmUg YXdhcmUgdGhvdWdoIHRoYXQgYSBjZXJ0YWluIGFtb3VudCBvZiB3aGluZ2VpbmcgaXMgdG8gYmUN Cj4gPiBleHBlY3RlZCB3aGVuIGRlYWxpbmcgd2l0aCBCcml0cy4gKEFzayBMZWlmIC0gaGUga25v d3MhIE9yIGFueSBBdXN0cmFsaWFuLikNCj4gSSBkbyBub3QgZGlzYWdyZWUgd2l0aCB5b3VyIGlu dGVudCAtIGJ1dCBJIGRvIHNvbWV0aW1lcyBmZWVsIHRoYXQgdGhlIGNyaXRlcmlhDQo+IGFwcGxp ZWQgZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBjb3N0L2JlbmVmaXQgYXNwZWN0cywgYW5k IHNlZWsgdG8gYWlyDQo+IHRoYXQgcG9pbnQuICBJIHNoYWxsIGVuZGVhdm91ciB0byBtYWtlIHN1 Y2ggcG9pbnRzIGluIGEgbGVzcyBiYW50ZXJpbmcgd2F5IGluDQo+IGZ1dHVyZS4NCj4gPg0KPg0K PiBUaGFua3MuDQo+DQo+IEkgdGhpbmsgb25lIG9mIHRoZSBtaXNjb25jZXB0aW9ucyBtYXkgYmUg dGhhdCB1cHN0cmVhbWluZyBpcyBzb21ldGhpbmcNCj4gb25lIGRvZXMgb25jZSB0aGUgY29kZSBp cyBjb21wbGV0ZWx5IGZpbmlzaGVkLiBJbnN0ZWFkLCBwbGVhc2UgaW52b2x2ZSB1cw0KPiBtdWNo IHNvb25lciBpZiB5b3UgaW50ZW5kIHRvIHVwc3RyZWFtIHlvdXIgY29kZSAob3IganVzdCBMZWlm IGZvcg0KPiBjb25maWRlbnRpYWwgc3R1ZmYpLiBUaGF0IHdheSwgYW55IGVmZm9ydCBpbnZlc3Rl ZCBpbiB0aGUgY29kZSBiZW5lZml0cyB5b3VyDQo+IHByb2R1Y3QgYXMgd2VsbCBhcyB0aGUgb3Bl biBzb3VyY2UsIHJhdGhlciB0aGFuIHNoaXBwaW5nIG9uZSB2ZXJzaW9uLCBhbmQNCj4gaGF2aW5n IHRvIGdvIGJhY2sgYW5kIGNoYW5nZSBzdHVmZiBmb3IgdGhlIHZlcnNpb24gdGhhdCBlbmRzIHVw IHVwc3RyZWFtLg0KSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwg YW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2 aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90 aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVu dHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUg b3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K