From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey G Subject: Re: [RFC PATCH 07/12] hvmloader: allocate MMCONFIG area in the MMIO hole + minor code refactoring Date: Wed, 28 Mar 2018 21:42:38 +1000 Message-ID: <20180328214238.0000529f@gmail.com> References: <5AB3BB9002000078001B5134@prv-mh.provo.novell.com> <20180323003421.00000566@gmail.com> <5AB3CED102000078001B529A@prv-mh.provo.novell.com> <20180323010833.0000444c@gmail.com> <20180324083244.00003d8e@gmail.com> <20180326092438.7auduhpx5eu3adb3@MacBook-Pro-de-Roger.local> <20180327054211.00003e13@gmail.com> <20180327084530.woyza2twwzr2caqe@MacBook-Pro-de-Roger.local> <20180328013729.00000de9@gmail.com> <20180328093032.adl5pmr5sujjpogu@MacBook-Pro-de-Roger.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f19Tf-0005tH-7S for xen-devel@lists.xenproject.org; Wed, 28 Mar 2018 11:42:51 +0000 Received: by mail-lf0-x22b.google.com with SMTP id m16-v6so3033839lfc.4 for ; Wed, 28 Mar 2018 04:42:48 -0700 (PDT) In-Reply-To: <20180328093032.adl5pmr5sujjpogu@MacBook-Pro-de-Roger.local> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Roger Pau =?iso-8859-1?Q?Monn=E9?= Cc: StefanoStabellini , Wei Liu , Paul Durrant , Jan Beulich , "xen-devel@lists.xenproject.org" , Anthony Perard , Ian Jackson List-Id: xen-devel@lists.xenproject.org T24gV2VkLCAyOCBNYXIgMjAxOCAxMDozMDozMiArMDEwMApSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cgo+T24gV2VkLCBNYXIgMjgsIDIwMTggYXQgMDE6Mzc6 MjlBTSArMTAwMCwgQWxleGV5IEcgd3JvdGU6Cj4+IE9uIFR1ZSwgMjcgTWFyIDIwMTggMDk6NDU6 MzAgKzAxMDAKPj4gUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+IHdyb3Rl Ogo+PiAgIAo+PiA+T24gVHVlLCBNYXIgMjcsIDIwMTggYXQgMDU6NDI6MTFBTSArMTAwMCwgQWxl eGV5IEcgd3JvdGU6ICAKPj4gPj4gT24gTW9uLCAyNiBNYXIgMjAxOCAxMDoyNDozOCArMDEwMAo+ PiA+PiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cj4+ID4+ ICAgICAKPj4gPj4gPk9uIFNhdCwgTWFyIDI0LCAyMDE4IGF0IDA4OjMyOjQ0QU0gKzEwMDAsIEFs ZXhleSBHIHdyb3RlOiAgICAKPgo+PiBCVFcsIGFub3RoZXIgc29tZXdoYXQgcmVsYXRlZCBwcm9i bGVtIGF0IHRoZSBtb21lbnQgaXMgdGhhdCBYZW4ga25vd3MKPj4gbm90aGluZyBhYm91dCBhIGNo aXBzZXQtc3BlY2lmaWMgTU1JTyBob2xlKHMpLiBEdWUgdG8gdGhpcywgaXQgaXMKPj4gcG9zc2li bGUgZm9yIGEgZ3Vlc3QgdG8gbWFwIFBUIEJBUnMgb3V0c2lkZSB0aGUgTU1JTyBob2xlLCBsZWFk aW5nIHRvCj4+IGVycm9ycyBsaWtlIHRoaXM6Cj4+IAo+PiAoWEVOKSBtZW1vcnlfbWFwOnJlbW92 ZTogZG9tNCBnZm49YzgwMDAgbWZuPWM4MDAwIG5yPTIwMDAKPj4gKFhFTikgbWVtb3J5X21hcDph ZGQ6IGRvbTQgZ2ZuPWZmZmZmZmZmYzgwMDAgbWZuPWM4MDAwIG5yPTIwMDAKPj4gKFhFTikgcDJt LmM6MTEyMTpkMHY1IHAybV9zZXRfZW50cnk6IDB4ZmZmZmZmZmZjODAwMDo5IC0+IC0yMgo+PiAo MHhjODAwMCkgKFhFTikgbWVtb3J5X21hcDpmYWlsOiBkb200IGdmbj1mZmZmZmZmZmM4MDAwIG1m bj1jODAwMAo+PiBucj0yMDAwIHJldDotMjIgKFhFTikgbWVtb3J5X21hcDpyZW1vdmU6IGRvbTQg Z2ZuPWZmZmZmZmZmYzgwMDAKPj4gbWZuPWM4MDAwIG5yPTIwMDAgKFhFTikgcDJtLmM6MTIyODpk MHY1IGdmbl90b19tZm4gZmFpbGVkIQo+PiBnZm49ZmZmZmZmZmZjODAwMCB0eXBlOjQgKFhFTikg bWVtb3J5X21hcDogZXJyb3IgLTIyIHJlbW92aW5nIGRvbTQKPj4gYWNjZXNzIHRvIFtjODAwMCxj OWZmZl0gKFhFTikgbWVtb3J5X21hcDpyZW1vdmU6IGRvbTQKPj4gZ2ZuPWZmZmZmZmZmYzgwMDAg bWZuPWM4MDAwIG5yPTIwMDAgKFhFTikgcDJtLmM6MTIyODpkMHY1IGdmbl90b19tZm4KPj4gZmFp bGVkISBnZm49ZmZmZmZmZmZjODAwMCB0eXBlOjQgKFhFTikgbWVtb3J5X21hcDogZXJyb3IgLTIy Cj4+IHJlbW92aW5nIGRvbTQgYWNjZXNzIHRvIFtjODAwMCxjOWZmZl0gKFhFTikgbWVtb3J5X21h cDphZGQ6IGRvbTQKPj4gZ2ZuPWM4MDAwIG1mbj1jODAwMCBucj0yMDAwCj4+IAo+PiBOb3RlIHRo YXQgaXQgd2FzIG1lcmVseSBhIGxhbWUgQkFSIHNpemluZyBhdHRlbXB0IGZyb20gdGhlCj4+IGd1 ZXN0LXNpZGUgU1cgKGEgUENJIGNvbmZpZyBzcGFjZSB2aWV3aW5nIHRvb2wpIC0tIHdyaXRpbmcg RidzIHRvCj4+IHRoZSBoaWdoIHBhcnQgb2YgdGhlIE1NSU8gQkFSIGZpcnN0LiAgCj4KPllvdSBz aG91bGQgZGlzYWJsZSBtZW1vcnkgZGVjb2RpbmcgYmVmb3JlIGF0dGVtcHRpbmcgdG8gc2l6ZSBh IEJBUi4KClRoZSBwcm9ibGVtIGlzLCB0aGF0IFBDSSBjb25maWcgc3BhY2Ugdmlld2VyIGlzIG5v dCBtaW5lLiA6KQpJdCBzaG91bGQgZGlzYWJsZSB0aGUgZGVjb2RpbmcgZmlyc3Qgbm9ybWFsbHks IHllcywgYnV0IGl0IGRvZXNuJ3QuIFlldAp0aGVyZSBhcmUgbm8gcHJvYmxlbXMgb24gdGhlIHJl YWwgc3lzdGVtIGFuZCB0aGVzZSBlcnJvcnMgd2hpbGUgYmVpbmcKcnVuIGluIGEgVk0uIElJUkMg cG93ZXJjeWNsaW5nIHRoZSBndWVzdCBhbmQgdHJpZ2dlcmluZyB0aGVzZSBlcnJvcnMKbXVsdGlw bGUgdGltZXMgZXZlbiBoYWQgbmVnYXRpdmUgaW1wYWN0IG9uIGhvc3QncyBzdGFiaWxpdHksIHNv IGl0J3MgYQpnb29kIHRlc3QgY2FzZS4KCj5UaGlzIGVycm9yIGhhcyBub3RoaW5nIHRvIGRvIHdp dGggdHJ5aW5nIHRvIG1vdmUgYSBCQVIgb3V0c2lkZSBvZiB0aGUKPk1NSU8gaG9sZSwgdGhpcyBl cnJvciBpcyBjYXVzZWQgYnkgdGhlIGdmbiBiZWluZyBiaWdnZXIgdGhhbiB0aGUgZ3Vlc3QKPnBo eXNpY2FsIGFkZHJlc3Mgd2lkdGggQUZBSUNULgoKSW4gZmFjdCwgaXQncyB0aGUgZXNzZW5jZSBv ZiB0aGUgZXJyb3IgLS0gYW4gYXR0ZW1wdCB0byBtYXAgdGhlIHJhbmdlCndoZXJlIGl0IHNob3Vs ZG4ndCBiZSBhdHRlbXB0ZWQgdG8gbWFwIGF0IGFsbC4KcDJtX3NldF9lbnRyeSBpcyB0b28gZGVl cCB0byBlbmNvdW50ZXIgdGhpcyBlcnJvciwgaXQgc2hvdWxkIGJlIGF2b2lkZWQKbXVjaCBlYXJs aWVyLiBJZiB3ZSBrbmV3IHRoZSBsaW1pdHMgd2hlcmUgd2UgY2FuIChhbmQgY2Fubm90KSBtYXAg dGhlClBUIGRldmljZSBCQVJzLCB3ZSBjYW4gY2hlY2sgaWYgd2UgcmVhbGx5IG5lZWQgdG8gcHJv Y2VlZCB3aXRoIHRoZQptYXBwaW5nLiBUaGlzIHdheSB3ZSBjYW4gaGFuZGxlIHRoYXQgIm1pZC1z aXppbmcvbWlkLWNoYW5nZSIgY29uZGl0aW9uCndoZW4gb25seSBoYWxmIG9mIHRoZSA2NC1iaXQg bWVtIEJBUiBoYXMgYmVlbiB3cml0dGVuLgoKPj4gSWYgd2Ugd2lsbCBrbm93IHRoZSBndWVzdCdz IE1NSU8gaG9sZSBib3VuZHMsIHdlIGNhbiBhZGFwdCB0byB0aGlzCj4+IGJlaGF2aW9yLCBhdm9p ZGluZyBlcnJvbmVvdXMgbWFwcGluZyBhdHRlbXB0cyB0byBhIHdyb25nIGFkZHJlc3MKPj4gb3V0 c2lkZSB0aGUgTU1JTyBob2xlLiBPbmx5IHRoZSBNTUlPIGhvbGUgZGVzaWduYXRlZCByYW5nZSBj YW4gYmUKPj4gdXNlZCB0byBtYXAgUFQgZGV2aWNlIEJBUnMuCj4+IAo+PiBTbywgaWYgd2Ugd2ls bCBiZSBhY3R1YWxseSBlbXVsYXRpbmcgTUNIJ3MgTU1JTyBob2xlIHJlbGF0ZWQKPj4gcmVnaXN0 ZXJzIGluIFhlbiBhcyB3ZWxsIC0tIHdlIGNhbiB1c2UgdGhlbSBhcyBzY3JhdGNocGFkIHJlZ2lz dGVycwo+PiAod3JpdGUtb25jZSBvZiBjb3Vyc2UpIHRvIHBhc3MgdGhpcyBraW5kIG9mIGluZm9y bWF0aW9uIGJldHdlZW4gWGVuCj4+IGFuZCBvdGhlciBpbnZvbHZlZCBwYXJ0aWVzIGFzIGFuIGFs dGVybmF0aXZlIHRvIGVnLiBhIGRlZGljYXRlZAo+PiBoeXBlcmNhbGwuICAKPgo+SSdtIG5vdCBz dXJlIHdoZXJlIHRoaXMgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIE1DSCwgZ3Vlc3QgT1NlcyB0 ZW5kCj50byBmZXRjaCB0aGlzIGZyb20gdGhlIEFDUEkgX0NSUyBtZXRob2Qgb2YgdGhlIGhvc3Qt cGNpIGJyaWRnZSBkZXZpY2UuCj4KPkkgYWxzbyBkb24ndCBzZWUgUUVNVSBlbXVsYXRpbmcgc3Vj aCByZWdpc3RlcnMsIGJ1dCB5ZXMsIEkgd29uJ3QgYmUKPm9wcG9zZWQgdG8gc3RvcmluZy9yZXBv cnRpbmcgdGhpcyBpbiBzb21lIHJlZ2lzdGVycyBpZiB0aGF0J3MgaW5kZWVkCj5zdXBwb3J0ZWQu IE5vdGUgdGhhdCBJIGRvbid0IHRoaW5rIHRoaXMgc2hvdWxkIGJlIG1hbmRhdG9yeSBmb3IgYWRk aW5nCj5RMzUgc3VwcG9ydCB0aG91Z2guCgpUaGlzIGluZm8gbmVlZGVkIGZvciBYZW4sIG5vdCBn dWVzdCBPU2VzIC0tIGluIG9yZGVyIHRvIGF2b2lkIGVycm9ycwpsaWtlIGRlc2NyaWJlZCBhYm92 ZS4gSWYgd2Ugd2lsbCBiZSBlbXVsYXRpbmcgTUNIIGluIFhlbiBpbnRlcm5hbGx5LCB3ZQpjYW4g ZW11bGF0ZSB0aGlzIHJlZ2lzdGVycyBhcyB3ZWxsLiBJdCB3aWxsIGJlIHNpbXBsZXIgdGhhbiBp bnRyb2R1Y2luZwphIG5ldyBoeXBlcmNhbGwgdG8gaW5mb3JtIFhlbiBhYm91dCB0aGUgZXN0YWJs aXNoZWQgTU1JTyBob2xlIHJhbmdlLgoKQW55d2F5LCB5b3UncmUgcmlnaHQsIGl0J3MgYSBzaWRl IGlzc3VlLiBKdXN0IGFuIGV4YW1wbGUgZm9yIHdoYXQgZWxzZQp0aGUgYnVpbHQtaW4gTUNIIGVt dWxhdGlvbiBtYXkgYmUgdXNlZnVsLgoKPj4gPj4gV2hhdCB0aGlzIGFwcHJvYWNoIHdpbGwgcmVx dWlyZToKPj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gPj4gCj4+ID4+ IC0gQ2hhbmdlcyBpbiBRRU1VIGNvZGUgdG8gc3VwcG9ydCBhIG5ldyBjaGlwc2V0LWxlc3MgbWFj aGluZShzKS4KPj4gPj4gSW4gdGhlb3J5IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGltcGxlbWVudCBv biB0b3Agb2YgdGhlICJudWxsIgo+PiA+PiBtYWNoaW5lIGNvbmNlcHQgICAgCj4+ID4KPj4gPk5v dCBhbGwgcGFydHMgb2YgdGhlIGNoaXBzZXQgc2hvdWxkIGdvIGluc2lkZSBvZiBYZW4sIEFUTSBJ IG9ubHkKPj4gPmZvcmVzZWUgUTM1IE1DSCBiZWluZyBpbXBsZW1lbnRlZCBpbnNpZGUgb2YgWGVu LiBTbyBJJ20gbm90IHN1cmUKPj4gPmNhbGxpbmcgdGhpcyBhIGNoaXBzZXQtbGVzcyBtYWNoaW5l IGlzIGNvcnJlY3QgZnJvbSBRRU1VIFBvVi4gIAo+PiAKPj4gRW11bGF0aW5nIG9ubHkgTUNIIGlu IFhlbiB3aWxsIHN0aWxsIHJlcXVpcmUgbG90IG9mIGNoYW5nZXMgYnV0IAo+PiBvdmVyYWxsIGJl bmVmaXQgd2lsbCBiZWNvbWUgdW5jbGVhciAtLSBiYXNpY2FsbHksIHdlIGp1c3QgbW92ZQo+PiBQ Q0lFWEJBUiBlbXVsYXRpb24gdG8gWGVuIGZyb20gUUVNVS4gIAo+Cj5BdCBsZWFzdCBpdCB3b3Vs ZCBtYWtlIFhlbiB0aGUgb25lIGNvbnRyb2xsaW5nIHRoZSBNQ0ZHIGFyZWEsIHdoaWNoIGlzCj5p bXBvcnRhbnQuIEl0IHdvdWxkIGFsc28gYmUgdGhlIGZpcnN0IHN0ZXAgaW50byBtb3Zpbmcgb3Ro ZXIgY2hpcHNldAo+ZnVuY3Rpb25hbGl0eSBpbnRvIFhlbi4KPgo+Tm90IGRvaW5nIGl0IGp1c3Qg cGVycGV0dWF0ZXMgdGhlIGJhZCBwcmVjZWRlbnQgdGhhdCB3ZSBhbHJlYWR5IGhhdmUKPndpdGgg dGhlIHByZXZpb3VzIGNoaXBzZXQuCgpJIHRoaW5rIGl0IHdpbGwgYmUga2luZGEgdWdseSBpZiB3 ZSB3aWxsIGJlIGVtdWxhdGluZyBqdXN0IE1DSCBpbiBYZW4KYW5kIElDSDkgKCsgYWxsIHRoZSBy ZXN0KSBpbiBRRU1VIGF0IHRoZSBzYW1lIHRpbWUuIEl0IGxvb2tzIG1vcmUgbGlrZQpzb21lIHRl bXBvcmFyeSBzb2x1dGlvbi4gSXQgd291bGQgYmUgZ29vZCB0byBrbm93IGlmIHN1Y2ggYXBwcm9h Y2ggd2lsbApiZSBhcHByb3ZlZCBieSBtYWludGFpbmVycy4KCj4+ID5XaGF0IGFyZSBzcGVjaWZp Y2FsbHkgdGhlIHJlZ2lzdGVycyB0aGF0IHlvdSBtZW50aW9uPyAgCj4+IAo+PiBXcml0ZS1vbmNl IGVtdWxhdGlvbiBvZiBUT0xVRC9UT1VVRC9SRU1BUEJBU0UvUkVNQVBMSU1JVCByZWdpc3RlcnMK Pj4gZm9yIGh2bWxvYWRlciB0byB1c2UuIFRoYXQncyB0aGUgYXBwcm9hY2ggSSdtIGFjdHVhbGx5 IHVzaW5nIHRvIG1ha2UKPj4gJ2h2bWxvYWRlci9hbGxvdy1tZW1vcnktcmVsb2NhdGU9MScgdG8g d29yay4gTWVtb3J5IHJlbG9jYXRpb24KPj4gd2l0aG91dCByZWx5aW5nIG9uIGFkZF90b19waHlz bWFwIGh5cGVyY2FsbCBmb3IgaHZtbG9hZGVyICh3aGljaCBpdAo+PiBkb2VzIGN1cnJlbnRseSkg d2hpbGUgaGF2aW5nIE1NSU8vbWVtb3J5IGxheW91dCBzeW5jaHJvbml6ZWQgYmV0d2Vlbgo+PiBh bGwgcGFydGllcy4gVGhlcmUgYXJlIG11bHRpcGxlIGJlbmVmaXRzIChtb3N0bHkgZm9yIFBUIG5l ZWRzKSwKPj4gaW5jbHVkaW5nIHRoZSBNTUlPIGhvbGUgYXV0by1zaXppbmcgc3VwcG9ydCBidXQg dGhpcyBhcHByb2FjaCB3b24ndAo+PiBiZSBhY2NlcHRlZCB3ZWxsIHdpdGggInRvb2xzdGFjayBz aG91bGQgZG8gZXZlcnl0aGluZyIgYXR0aXR1ZGUgSSdtCj4+IGFmcmFpZC4gIAo+Cj5Zb3Ugc2Vl bSB0byBiZSB0cnlpbmcgdG8gZml4IHNldmVyYWwgaXNzdWVzIGF0IHRoZSBzYW1lIHRpbWUsIHdo aWNoCj5qdXN0IG1ha2VzIHRoaXMgbXVjaCBtb3JlIGNvbXBsZXggdGhhbiBuZWVkZWQuIFRoZSBp bml0aWFsIGFpbSBvZiB0aGlzCj5zZXJpZXMgd2FzIHRvIGFsbG93IEhWTSBndWVzdHMgdG8gdXNl IHRoZSBRMzUgY2hpcHNldC4gSSB0aGluayB0aGF0J3MKPndoYXQgd2Ugc2hvdWxkIGZvY3VzIG9u LgoKQWdyZWUuIEluaXRpYWxseSwgdGhlIG1haW4gZ29hbCB3YXMgdG8gYWxsb3cgdGhlIFBDSWUg ZXh0ZW5kZWQgY29uZmlnCnNwYWNlIHVzYWdlIGZvciBQVCBkZXZpY2VzLiBFdmVuIHRoaXMgcGFy dGljdWxhciBmZWF0dXJlIGlzIG5vdCBpbiBpdHMKZmluYWwgc3RhdGUsIHRoZXJlIGFyZSBvdGhl ciBwYXRjaGVzIGZvciBody94ZW4veGVuLXB0Ki5jIHBlbmRpbmcKKGR5bmFtaWMgZmllbGRzIHN1 cHBvcnQpLCBidXQgdGhlc2UgYXJlIG1vcmUgY29tbW9uLCBub3QgYm91bmQgdG8KanVzdCBRMzUu Cgo+QXMgeW91IGhhdmUgbGlzdGVkIGFib3ZlIChhbmQgaW4gb3RoZXIgZW1haWxzKSB0aGVyZSBh cmUgbWFueQo+bGltaXRhdGlvbnMgd2l0aCB0aGUgY3VycmVudCBIVk0gYXBwcm9hY2gsIHdoaWNo IEkgd291bGQgYmUgbW9yZSB0aGFuCj5oYXBweSBmb3IgeW91IHRvIHNvbHZlLiBCdXQgSU1PIG5v dCBhbGwgb2YgdGhlbSBtdXN0IGJlIHNvbHZlZCBpbgo+b3JkZXIgdG8gYWRkIFEzNSBzdXBwb3J0 Lgo+Cj5TaW5jZSB0aGlzIHNlcmllcyBhbmQgZW1haWwgdGhyZWFkIGhhcyBhbHJlYWR5IGdvbmUg cXVpdGUgZmFyLCB3b3VsZAo+eW91IG1pbmQgd3JpdGluZyBhIGRlc2lnbiBkb2N1bWVudCB3aXRo IHRoZSBhcHByb2FjaCB0aGF0IHdlCj5kaXNjdXNzZWQ/CgpJIHRoaW5rIHdlIG11c3QgYWxsIGFn cmVlIHdoaWNoIGFwcHJvYWNoIHRvIGltcGxlbWVudCBuZXh0LiBCYXNpY2FsbHksCndoZXRoZXIg d2UgbmVlZCB0byBjb21wbGV0ZWx5IGRpc2NhcmQgdGhlIG9wdGlvbiAjMSBmb3IgdGhpcyBzZXJp ZXMgYW5kCm1vdmUgb24gd2l0aCAjMi4gVGhhdCBsZW5ndGh5IHJlcXVpcmVtZW50cy9yaXNrcyBl bWFpbCB3YXMgYW4gYXR0ZW1wdCB0bwpwcm92aWRlIHNvbWUgZ3JvdW5kIGZvciBjb21wYXJpc29u LgoKTGVhdmluZyBvbmx5IHJlcXVpcmVkIGRldmljZXMgbGlrZSB2Z2EvdXNiL25ldHdvcmsvc3Rv cmFnZSB0byBRRU1VIHdoaWxlCmVtdWxhdGluZyBldmVyeXRoaW5nIGVsc2UgaW4gWGVuIGlzIGEg Z29vZCBtaWxlc3RvbmUsIGJ1dCwgYXMgSQp1bmRlcnN0b29kIHdlIGN1cnJlbnRseSB0YXJnZXRp bmcgbGVzcyBhbWJpdGlvdXMgZ29hbHMgZm9yIG9wdGlvbiAjMiAtLQplbXVsYXRpbmcgb25seSBN Q0ggaW4gWGVuIHdoaWxlIGVtdWxhdGluZyBJQ0g5IGV0YyBpbiBRRU1VLgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==