From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meng Xu Subject: Re: [PATCH v3 1/2] IOMMU/spinlock: Fix a bug found in AMD IOMMU initialization Date: Fri, 11 Mar 2016 09:41:23 -0500 Message-ID: References: <1457529455-38314-1-git-send-email-quan.xu@intel.com> <1457529455-38314-2-git-send-email-quan.xu@intel.com> <945CA011AD5F084CBEA3E851C0AB28894B861913@SHSMSX101.ccr.corp.intel.com> <1457692537.3102.563.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457692537.3102.563.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli Cc: Suravee Suthikulpanit , Jan Beulich , "Xu, Quan" , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org SGkgUXVhbiBhbmQgRGFyaW8sCgpPbiBGcmksIE1hciAxMSwgMjAxNiBhdCA1OjM1IEFNLCBEYXJp byBGYWdnaW9saQo8ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4gd3JvdGU6Cj4gT24gRnJpLCAy MDE2LTAzLTExIGF0IDA2OjU0ICswMDAwLCBYdSwgUXVhbiB3cm90ZToKPj4gT24gTWFyY2ggMTEs IDIwMTYgMTE6MjVhbSwgPG1lbmd4dUBjaXMudXBlbm4uZWR1PiB3cm90ZToKPj4gPgo+PiA+IE9u IFdlZCwgTWFyIDksIDIwMTYgYXQgODoxNyBBTSwgUXVhbiBYdSA8cXVhbi54dUBpbnRlbC5jb20+ IHdyb3RlOgo+PiA+ID4KPj4gPiA+IHBjaWRldnNfbG9jayBzaG91bGQgYmUgaGVsZCB3aXRoIGlu dGVycnVwdCBlbmFibGVkLiBIb3dldmVyIHRoZXJlCj4+ID4gPiByZW1haW5zIGFuIGV4Y2VwdGlv biBpbiBBTUQgSU9NTVUgY29kZSwgd2hlcmUgdGhlIGxvY2sgaXMKPj4gPiA+IGFjcXVpcmVkCj4+ ID4gPiB3aXRoIGludGVycnVwdCBkaXNhYmxlZC4gVGhpcyBpbmNvbnNpc3RlbmN5IG1pZ2h0IGxl YWQgdG8KPj4gPiA+IGRlYWRsb2NrLgo+PiA+IFdoeSB3aWxsIHRoaXMgaW5jb25zaXN0ZW5jeSBs ZWFkIHRvIGRlYWRsb2NrPwo+PiA+IEkgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVu IHNwaW5fbG9ja19pcnFzYXZlKCksIHdoaWNoCj4+ID4gZGlzYWJsZSBpbnRlcnJ1cHQsCj4+ID4g YW5kIHNwaW5fbG9jaygpLCB3aGljaCBhbGxvd3MgaW50ZXJydXB0LCBob3dldmVyLCBJIGRpZG4n dCBnZXQgd2h5Cj4+ID4gbWlzdXNlIHRoZQo+PiA+IHNwaW5fbG9ja19pcnFzYXZlKCkgYXQgdGhl IHBsYWNlIG9mIHNwaW5fbG9jaygpIGNvdWxkIHBvdGVudGlhbGx5Cj4+ID4gbGVhZCB0byBhCj4+ ID4gZGVhZGxvY2s/Cj4+Cj4+ICAxKS5BcyBKYW4gbWVudGlvbmVkLCBUaGUgaW1wbGljYXRpb24g ZnJvbSBkaXNhYmxpbmcgaW50ZXJydXB0cyB3aGlsZQo+PiBhY3F1aXJpbmcgYSBsb2NrIGlzIHRo YXQgdGhlIGxvY2sgaXMgYWxzbyBiZWluZyBhY3F1aXJlZCBieSBzb21lCj4+IGludGVycnVwdCBo YW5kbGVyLgo+PiAgIElmIHlvdSBtaXggYWNxdWlyZSB0eXBlcywgdGhlIG9uZSBub3QgZGlzYWJs aW5nIGludGVycnVwdHMgaXMgcHJvbmUKPj4gdG8gYmUgaW50ZXJydXB0ZWQsIGFuZCB0aGUgaW50 ZXJydXB0IHRyeWluZyB0byBnZXQgaG9sZCBvZiB0aGUgbG9jawo+PiB0aGUgc2FtZSBDUFUgYWxy ZWFkeSBvd25zLgo+Pgo+IFRoZSBrZXkgaXNzdWUgaXMgd2hldGhlciBvciBub3QgYSBsb2NrIGNh biBiZSBhY3F1aXJlZCBmcm9tIElSUSBjb250ZXh0Cj4gKGkuZS4sIGluIGFuIGludGVycnVwdCBo YW5kbGVyLCBvciBhIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGF0LCBhcyBhCj4gcmVzdWx0IG9mIGFu IGludGVycnVwdCBvY2N1cnJpbmcpLgo+Cj4gRm9yIGxvY2sgdGhhdCBjYW4sIElSUSBkaXNhYmxp bmcgdmFyaWFudHMgbXVzdCBiZSB1c2VkICpldmVyeXdoZXJlKiB0aGUKPiBsb2NrIGlzIHRha2Vu IChzbywgZS5nLiwgbm90IG9ubHkgd2hlbiBpdCBpcyBhY3R1YWxseSB0YWtlbiBmcm9tIElSUQo+ IGNvbnRleHQsIGp1c3QgKmFsd2F5cyohKS4KPgo+IElmIHRoYXQgcnVsZSBpcyBub3QgaG9ub3Jl ZCwgd2UgYXJlIG9rIGlmIHRoZSBsb2NrIGlzIHRha2VuIG9uIENQVUEsCj4gYW5kIHRoZSBpbnRl cnJ1cHQgaGFuZGxlZCBvbiBDUFVCOgo+Cj4gICBDUFVBICAgICAgICAgICAgICBDUFVCCj4gICAu ICAgICAgICAgICAgICAgICAuCj4gICAuICAgICAgICAgICAgICAgICAuCj4gICBzcGluX2xvY2so bCkgICAgICAuCj4gICAuICAgICAgICAgICAgICAgICAuCj4gICAuICAgICAgICAgICAgICAgICAu IDwtLSBJbnRlcnJ1cHQhCj4gICAuICAgICAgICAgICAgICAgICAgICAgICAgLgo+ICAgLiAgICAg ICAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrKGwpOyAvL3NwaW5zIG9uIGwKPiAgIC4gICAgICAg ICAgICAgICAgICAgICAgIHggICAgICAgICAgICAgLy9zcGlucyBvbiBsCj4gICAuICAgICAgICAg ICAgICAgICAgICAgICB4ICAgICAgICAgICAgIC8vc3BpbnMgb24gbAo+ICAgc3Bpbl91bmxvY2so bCkgICAgICAgICAgLiAgICAgICAgICAgICAvL3Rha2VzIGwKPiAgIC4gICAgICAgICAgICAgICAg ICAgICAgIC4KPiAgIC4gICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKGwpOwo+ICAg LiAgICAgICAgICAgICAgICAgLiA8LS0gLgo+ICAgLiAgICAgICAgICAgICAgICAgLgo+Cj4gYnV0 IHRoZSBmb2xsb3dpbmcgY2FuIGhhcHBlbiwgaWYgdGhlIGludGVycnVwdCBpcyBkZWxpdmVyZWQg dG8gdGhlIENQVQo+IHRoYXQgaGFzIGFscmVhZHkgdGFrZW4gdGhlIGxvY2s6Cj4KPiAgICAgIENQ VQo+ICAgICAgLgo+ICAgICAgLgo+IFsxXSAgc3Bpbl9sb2NrKGwpOyAgICAgICAvL3Rha2VzIGwK PiAgICAgIC4KPiAgICAgIC4gPC0tIEludGVycnVwdCEKPiAgICAgICAgICAgIC4KPiAgICAgICAg ICAgIHNwaW5fbG9jayhsKSAvLyBDUFUgZGVhZGxvY2tzCj4KPiBJZiwgaW4gdGhlIGxhdHRlciBj YXNlLCBzcGluX2xvY2tfaXJxKGwpIHdlcmUgdXNlZCBhdCBbMV0sIHRoaW5ncyB3b3VsZAo+IGhh dmUgYmVlbiBmaW5lLCBhcyB0aGUgaW50ZXJydXB0IHdvdWxkbid0IGhhdmUgb2NjdXJyZWQgdW50 aWwgbCB3ZXJlbid0Cj4gcmVsZWFzZWQ6Cj4KPiAgIENQVQo+ICAgLgo+ICAgLgo+ICAgc3Bpbl9s b2NrX2lycShsKSAgICAgICAgICAgICAgICAgICAgICAgIC8vdGFrZXMgbAo+ICAgLgo+ICAgLiA8 LS0tLS0tLS0tLS0tLS0tLSBJbnRlcnJ1cHQhCj4gICAuICAgICAgICAgICAgICAgICAgIC0gICAg ICAgICAgICAgICAgICAgLy9JUlFzIGFyZSBkaXNhYmxlZAo+ICAgLiAgICAgICAgICAgICAgICAg ICAtICAgICAgICAgICAgICAgICAgIC8vSVJRcyBhcmUgZGlzYWJsZWQKPiAgIC4gICAgICAgICAg ICAgICAgICAgLSAgICAgICAgICAgICAgICAgICAvL0lSUXMgYXJlIGRpc2FibGVkCj4gICBzcGlu X3VubG9ja19pcnEobCkgIC4gICAgICAgICAgICAgICAgICAgLy9JUlFzIHJlLWhhbmJsZWQKPiAg ICAgICAgICAgICAgICAgICAgICAgc3Bpbl9sb2NrX2lycShsKTsgICAvL3Rha2VzIGwKPiAgICAg ICAgICAgICAgICAgICAgICAgLgo+ICAgICAgICAgICAgICAgICAgICAgICAuCj4gICAgICAgICAg ICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2lycShsKTsKPiAgLiA8LS0tLS0tLS0tLS0tLS0tLS0g Lgo+ICAuCj4KPiBOb3RlIHRoYXQgd2hldGhlciBzcGluX2xvY2tfaXJxKCkgb3Igc3Bpbl9sb2Nr X2lycXNhdmUoKSBzaG91bGQgYmUKPiB1c2VkLCBpcyBjb21wbGV0ZWx5IGluZGVwZW5kZW50IGZy b20gdGhpcywgYW5kIGl0IG11c3QgYmUgZGVjaWRlZAo+IGFjY29yZGluZyB0byB3aGV0aGVyIElS UXMgYXJlIGRpc2FibGVkIGFscmVhZHkgb3Igbm90IHdoZW4gdGFraW5nIHRoZQo+IGxvY2suIEFu ZCAocXVpdGUgb2J2aW91c2x5LCBidXQgc2luY2Ugd3JlJ3JlIGhlcmUpIGl0IGlzIGZpbmUgdG8g bWl4Cj4gc3Bpbl9sb2NrX2lycSgpIGFuZCBzcGluX2xvY2tfaXJxc2F2ZSgpLCBhcyB0aGV5IGJv dGggZGlzYWJsZQo+IGludGVycnVwdHMsIHdoaWNoIGlzIHdoYXQgbWF0dGVycy4KPgo+IFNvLCBu b3csIGlmIHdlIGtub3cgZm9yIHN1cmUgdGhhdCBhIGxvY2sgaXMgX25ldmVyX2V2ZXJfZXZlcl8g dGFrZW4KPiBmcm9tIGludGVycnVwdCBjb250ZXh0LCBjYW4gd2UgbWl4IHNwaW5fbG9jaygpIGFu ZCBzcGluX2xvY2tfaXJxKCkgb24KPiBpdCAoZm9yIHdoYXRldmVyIHJlYXNvbik/IFdlbGwsIGFz IGZhciBhcyB0aGUgYWJvdmUgcmVhc29uaW5nIGlzCj4gY29uY2VybmVkLCB5ZXMuCj4KPiBJbiBm YWN0LCB0aGUgZGVhZGxvY2sgYXJpc2VzIGJlY2F1c2UgSVJRcyBpbnRlcnJ1cHQgYXN5bmNocm9u b3VzbHkgd2hhdAo+IHRoZSBDUFUgaXMgZG9pbmcsIGFuZCB0aGF0IGNhbiBoYXBwZW4gd2hlbiB0 aGUgQ1BVIGhhcyB0YWtlbiB0aGUgbG9jawo+IGFscmVhZHkuIEJ1dCBpZiB0aGUgJ2FzeW5jaHJv bm91cycgcGFydCBnb2VzIGF3YXksIHdlIHJlYWxseSBkb24ndCBjYXJlCj4gd2hldGhlciBhIGxv Y2sgaXMgdGFrZSBhdCB0aW1lIHQxIHdpdGggSVJRIGVuYWJsZWQsIGFuZCBhdCB0aW1lIHQyIHdp dGgKPiBJUlEgZGlzYWJsZWQsIGRvbid0IHlvdSB0aGluaz8KPgo+IFdlbGwsIGhlcmUgaXQgaXMg d2hlcmUgd2hhdCB0aGUgY29tbWVudCBpbnNpZGUgY2hlY2tfbG9jaygpIGRlc2NyaWJlcwo+IGNv bWVzIGludG8gcGxheS4gQXMgcXVvdGVkIGJ5IFFhdW4gYWxyZWFkeToKPgo+PiAgMikuIENvbW1l bnQgaW5zaWRlIGNoZWNrX2xvY2soKSwKPj4gd2UgcGFydGl0aW9uIGxvY2tzIGludG8gSVJRLXNh ZmUgKGFsd2F5cyBoZWxkIHdpdGggSVJRcyBkaXNhYmxlZCkgYW5kCj4+IElSUS11bnNhZmUgKGFs d2F5cyBoZWxkIHdpdGggSVJRcyBlbmFibGVkKSB0eXBlcy4gVGhlIGNvbnZlbnRpb24gZm9yCj4+ IGV2ZXJ5IGxvY2sgbXVzdCBiZSBjb25zaXN0ZW50bHkgb2JzZXJ2ZWQgZWxzZSB3ZSBjYW4gZGVh ZGxvY2sgaW4KPj4gSVJRLWNvbnRleHQgcmVuZGV6dm91cyBmdW5jdGlvbnMgKF9fYSByZW5kZXp2 b3VzIHdoaWNoIGdldHMgZXZlcnkgQ1BVCj4+IGludG8gSVJRIGNvbnRleHQgYmVmb3JlIGFueSBD UFUgaXMgcmVsZWFzZWQgZnJvbSB0aGUgcmVuZGV6dm91c19fKS4KPj4gSWYgd2UgY2FuIG1peCBJ UlEtZGlzYWJsZWQgYW5kIElSUS1lbmFibGVkIGNhbGxlcnMsIHRoZSBmb2xsb3dpbmcgY2FuCj4+ IGhhcHBlbjoKPj4gICogTG9jayBpcyBoZWxkIGJ5IENQVSBBLCB3aXRoIElSUXMgZW5hYmxlZAo+ PiAgKiBDUFUgQiBpcyBzcGlubmluZyBvbiBzYW1lIGxvY2ssIHdpdGggSVJRcyBkaXNhYmxlZAo+ PiAgKiBSZW5kZXp2b3VzIHN0YXJ0cyAtLSBDUFUgQSB0YWtlcyBpbnRlcnJ1cHQgYW5kIGVudGVy cyByZW5kZXpib3VzCj4+IHNwaW4KPj4gICogREVBRExPQ0sgLS0gQ1BVIEIgd2lsbCBuZXZlciBl bnRlciByZW5kZXp2b3VzLCBDUFUgQSB3aWxsIG5ldmVyCj4+IGV4aXQKPj4gICAgICAgICAgICAg ICAgdGhlIHJlbmRlenZvdXMsIGFuZCB3aWxsIGhlbmNlIG5ldmVyIHJlbGVhc2UgdGhlIGxvY2su Cj4+Cj4+IFRvIGd1YXJkIGFnYWluc3QgdGhpcyBzdWJ0bGUgYnVnIHdlIGxhdGNoIHRoZSBJUlEg c2FmZXR5IG9mIGV2ZXJ5Cj4+IHNwaW5sb2NrIGluIHRoZSBzeXN0ZW0sIG9uIGZpcnN0IHVzZS4K Pj4KPiBUaGlzIGlzIGEgdmVyeSBnb29kIHNhZmV0eSBtZWFzdXJlLCBidXQgaXQgY2FuIGJlIHF1 aXRlIGEgcmVzdHJpY3Rpb24KPiBpbiBzb21lIChsdWNraWx5IGxpbWl0ZWQpIGNhc2VzLiBBbmQg dGhhdCdzIHdoeSBpdCBpcyBwb3NzaWJsZSAtLQo+IGFsdGhvdWdoIGFic29sdXRlbHkgZGlzY291 cmFnZWQtLSB0byByZWxheCBpdC4gU2VlLCBmb3IgYW4gZXhhbXBsZSBvZgo+IHRoaXMsIHRoZSBj b21tZW50IGluIHN0YXJ0X3NlY29uZGFyeSgpLCBpbiB4ZW4vYXJjaC94ODYvc21wYm9vdC5jOgo+ Cj4gICAgIC4uLgo+ICAgICAvKgo+ICAgICAgKiBKdXN0IGFzIGR1cmluZyBlYXJseSBib290c3Ry YXAsIGl0IGlzIGNvbnZlbmllbnQgaGVyZSB0byBkaXNhYmxlCj4gICAgICAqIHNwaW5sb2NrIGNo ZWNraW5nIHdoaWxlIHdlIGhhdmUgSVJRcyBkaXNhYmxlZC4gVGhpcyBhbGxvd3MgdXMgdG8KPiAg ICAgICogYWNxdWlyZSBJUlEtdW5zYWZlIGxvY2tzIHdoZW4gaXQgd291bGQgb3RoZXJ3aXNlIGJl IGRpc2FsbG93ZWQuCj4gICAgICAqCj4gICAgICAqIEl0IGlzIHNhZmUgYmVjYXVzZSB0aGUgcmFj ZSB3ZSBhcmUgdXN1YWxseSB0cnlpbmcgdG8gYXZvaWQgaW52b2x2ZXMKPiAgICAgICogYSBncm91 cCBvZiBDUFVzIHJlbmRlenZvdXNpbmcgaW4gYW4gSVBJIGhhbmRsZXIsIHdoZXJlIG9uZSBjYW5u b3QKPiAgICAgICogam9pbiBiZWNhdXNlIGl0IGlzIHNwaW5uaW5nIHdpdGggSVJRcyBkaXNhYmxl ZCB3YWl0aW5nIHRvIGFjcXVpcmUgYQo+ICAgICAgKiBsb2NrIGhlbGQgYnkgYW5vdGhlciBpbiB0 aGUgcmVuZGV6dm91cyBncm91cCAodGhlIGxvY2sgbXVzdCBiZSBhbgo+ICAgICAgKiBJUlEtdW5z YWZlIGxvY2sgc2luY2UgdGhlIENQVSB0b29rIHRoZSBJUEkgYWZ0ZXIgYWNxdWlyaW5nIGl0LCBh bmQKPiAgICAgICogaGVuY2UgaGFkIElSUXMgZW5hYmxlZCkuIFRoaXMgaXMgYSBkZWFkbG9jayBz Y2VuYXJpby4KPiAgICAgICoKPiAgICAgICogSG93ZXZlciwgbm8gQ1BVIGNhbiBiZSBpbnZvbHZl ZCBpbiByZW5kZXp2b3VzIHVudGlsIGl0IGlzIG9ubGluZSwKPiAgICAgICogaGVuY2Ugbm8gc3Vj aCBncm91cCBjYW4gYmUgd2FpdGluZyBmb3IgdGhpcyBDUFUgdW50aWwgaXQgaXMKPiAgICAgICog dmlzaWJsZSBpbiBjcHVfb25saW5lX21hcC4gSGVuY2Ugc3VjaCBhIGRlYWRsb2NrIGlzIG5vdCBw b3NzaWJsZS4KPiAgICAgICovCj4gICAgIHNwaW5fZGVidWdfZGlzYWJsZSgpOwo+ICAgICAuLi4K Pgo+IEp1c3QgRlRSLCBhdCBsZWFzdCBhcyBmYXIgYXMgSSBjYW4gcmVtZW1iZXIsIExpbnV4IGRv ZXMgbm90IGVuZm9yY2UKPiBhbnl0aGluZyBsaWtlIHRoYXQuCj4KPiBIb3BlIHRoaXMgY2xhcmlm aWVzIHRoaW5ncy4KClRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlvdXIgZXhwbGFuYXRpb24gYW5k IGVkdWNhdGlvbiEgVGhleSBhcmUKcmVhbGx5IGhlbHBmdWwhIDotRAoKTGV0IG1lIHN1bW1hcml6 ZTogOy0pCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHNwaW5fbG9jayB8CnNwaW5fbG9ja19pcnEgfCBzcGluX2xvY2tfaXJxc2F2ZQp8IENh biBydW4gaW4gaXJxIGNvbnRleHQ/ICAgICAgICAgICAgICAgICAgfCBObyAgICAgICAgICAgIHwg IFllcwogICAgICAgIHwgWWVzCnwgQ2FuIHJ1biBpbiBpcnEgZGlzYWJsZWQgY29udGV4dD8gICB8 IE5vICAgICAgICAgICAgfCAgTm8gICAgICAgICAgICAgICAgfCBZZXMKCldoeSBkZWFkbG9jayBt YXkgb2NjdXIgaWYgd2UgbWl4IHRoZSBzcGluX2xvY2sgYW5kIHNwaW5fbG9ja19pcnEoc2F2ZSk/ CklmIHdlIG1peCB0aGUgc3Bpbl9sb2NrIGFuZCBzcGluX2xvY2tfaXJxKHNhdmUpLCBhbmQgYSBn cm91cCBvZiBDUFVzCnJlbmRlenZvdXNpbmcgaW4gYW4gSVBJIGhhbmRsZXIsIHdlIHdpbGwgaGF2 ZSBkZWFkbG9jay4gQmVjYXVzZSB0aGUKQ1BVIEEgdGhhdCB0YWtlcyBzcGluX2xvY2sgd2lsbCB3 YWl0IGZvciB0aGUgcmVuZGV6dm91c2luZyBjb25kaXRpb24KdG8gYmUgc2F0aXNmaWVkLCB3aGls ZSB0aGUgQ1BVIEIgdGhhdCB0YWtlcyB0aCBzcGluX2xvY2tfaXJxKHNhdmUpCndpbGwgbm90IGVu dGVyIGludG8gdGhlIHJlbmRlenZvdXNpbmcgY29uZGl0aW9uIChzaW5jZSBpdCBkaXNhYmxlIHRo ZQppbnRlcnJ1cHQpLiBUaGVuLApDUFUgQSB3YWl0cyBmb3IgQ1BVIEIgdG8gaGFuZGxlIHRoZSBJ UEkgdG8gZ2V0IG91dCBvZiB0aGUKcmVuZGV6dm91c2luZyBjb25kaXRpb24gKGtpbmQgb2Ygc3lu Y2hyb3VzIHBvaW50KSwgd2hpY2ggd29uJ3QgdW50aWwKaXQgZ2V0cyB0aGUgc3Bpbl9sb2NrLgpD UFUgQiB3YWl0cyBmb3IgQ1BVIEEgdG8gcmVsZWFzZSB0aGUgc3Bpbl9sb2NrLCB3aGljaCB3b24n dCB1bnRpbCBpdApnZXQgb3V0IG9mIHRoZSByZW5kZXp2b3VzaW5nIGNvbmRpdGlvbjsKCkFyZSBt eSB1bmRlcnN0YW5kaW5nIGFuZCBzdW1tYXJ5IGNvcnJlY3Q/CgpUaGFua3MgYW5kIEJlc3QgUmVn YXJkcywKCk1lbmcKCi0tLS0tLS0tLS0tCk1lbmcgWHUKUGhEIFN0dWRlbnQgaW4gQ29tcHV0ZXIg YW5kIEluZm9ybWF0aW9uIFNjaWVuY2UKVW5pdmVyc2l0eSBvZiBQZW5uc3lsdmFuaWEKaHR0cDov L3d3dy5jaXMudXBlbm4uZWR1L35tZW5neHUvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=