From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [RFC] virtio-mmio: Update the device to OASIS spec version Date: Thu, 15 Jan 2015 21:12:03 +0200 Message-ID: <20150115191203.GA31136@redhat.com> References: <1419014284-18500-1-git-send-email-pawel.moll@arm.com> <20150115165101.GA29808@redhat.com> <1421343158.4601.7.camel@arm.com> <20150115175132.GA30453@redhat.com> <1421345477.4601.9.camel@arm.com> <20150115182903.GA30947@redhat.com> <1421347322.4601.13.camel@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1421347322.4601.13.camel@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Pawel Moll Cc: "virtualization@lists.linux-foundation.org" List-Id: virtualization@lists.linuxfoundation.org T24gVGh1LCBKYW4gMTUsIDIwMTUgYXQgMDY6NDI6MDJQTSArMDAwMCwgUGF3ZWwgTW9sbCB3cm90 ZToKPiBPbiBUaHUsIDIwMTUtMDEtMTUgYXQgMTg6MjkgKzAwMDAsIE1pY2hhZWwgUy4gVHNpcmtp biB3cm90ZToKPiA+IE9uIFRodSwgSmFuIDE1LCAyMDE1IGF0IDA2OjExOjE3UE0gKzAwMDAsIFBh d2VsIE1vbGwgd3JvdGU6Cj4gPiA+IE9uIFRodSwgMjAxNS0wMS0xNSBhdCAxNzo1MSArMDAwMCwg TWljaGFlbCBTLiBUc2lya2luIHdyb3RlOgo+ID4gPiA+ID4gPiBJIHRoaW5rIHlvdSBzaG91bGRu J3QgdXNlIFZJUlRJT19NTUlPX1ZSSU5HX0FMSUdOIGluIG5vbi1sZWdhY3kgY29kZToKPiA+ID4g PiA+ID4gaXQncyBhIGxlZ2FjeSB0aGluZy4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gQnV0IEkgc3Rp bGwgbmVlZCB0byBwYXNzIHNvbWV0aGluZyB0byB2cmluZ19uZXdfdmlydHF1ZXVlKCkgYmVsb3cs IGRvbid0Cj4gPiA+ID4gPiBJPyBBbmQgaXQgd2lsbCBhbGxvY2F0ZSB0aGUgcXVldWUgYmFzZWQg b24gc29tZSBhbGlnbm1lbnQgdmFsdWUuIEkgY2FuJ3QKPiA+ID4gPiA+IHNlZSBhbnl0aGluZyB0 aGF0IHdvdWxkIGNyZWF0ZSB0aGUgbGF5b3V0IGZvciBtZSwgbmVpdGhlciBpbiBtYWlubGluZQo+ ID4gPiA+ID4gbm9yIGluIG5leHQuIEhhdmUgSSBtaXNzZWQgc29tZXRoaW5nPyAod291bGRuJ3Qg YmUgc3VycHJpc2VkIGlmIEkgaGF2ZSkKPiA+ID4gPiAKPiA+ID4gPiBObywgYnV0IGl0J3Mgbm8g bG9uZ2VyIGEgdmlydGlvIHRoaW5nIC0ganVzdCBhbiBvcHRpbWl6YXRpb24KPiA+ID4gPiBjaG9p Y2UgYnkgYSBzcGVjaWZpYyBkcml2ZXIuIFNvIHBsZWFzZSBqdXN0IHN0aWNrIGUuZy4gUEFHRV9T SVpFIHRoZXJlLgo+ID4gPiAKPiA+ID4gI2RlZmluZSBWSVJUSU9fTU1JT19WUklOR19BTElHTiAg ICAgICAgIFBBR0VfU0laRQo+ID4gPiAKPiA+ID4gPiBBbmQgbWF5YmUgYWRkIGEgVE9ETyBpdGVt IC0gd2UgY2FuIG9wdGltaXplIGJ5IGFsbG9jYXRpbmcgY2h1bmtzCj4gPiA+ID4gc2VwYXJhdGVs eS4KPiA+ID4gCj4gPiA+IEknbGwgd2FpdCBhbmQgc2VlIGhvdyBkbyBkZWFsIHdpdGgKPiA+ID4g Cj4gPiA+ICAgICAgICAgdnEgPSB2cmluZ19uZXdfdmlydHF1ZXVlKGluZGV4LCBpbmZvLT5udW0s ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZJUlRJ T19QQ0lfVlJJTkdfQUxJR04sICZ2cF9kZXYtPnZkZXYsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCj4gPiAKPiA+IENoZWNrIG91dCB0aGUgY29kZSBpbiBt eSB0cmVlLgo+ID4gSXQgcmVhbGx5IGRvZXMsIGZ1bmRhbWVudGFsbHk6Cj4gPiAKPiA+IAkvKiBU T0RPOiBkb24ndCBhbGxvY2F0ZSBjb250aWdpb3VzbHkgKi8KPiA+ICAgICAgICAgIHZxID0gdnJp bmdfbmV3X3ZpcnRxdWV1ZShpbmRleCwgaW5mby0+bnVtLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNUF9DQUNIRV9CWVRFUywgJnZwX2Rldi0+dmRl diwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiAKPiBX aWxsIGhhdmUgYSBsb29rLgo+IAo+ID4gPiA+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgdm1fZGV2X2F0dHJfdmVyc2lvbiA9Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICBfX0FUVFIodmVyc2lvbiwgU19JUlVHTywgdm1fZGV2X2F0dHJfdmVyc2lvbl9zaG93LCBOVUxM KTsKPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gIHN0YXRpYyBpbnQgdmlydGlvX21taW9f cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4gPiA+ID4gPiAgewo+ID4g PiA+ID4gPiA+ICAgICAgIHN0cnVjdCB2aXJ0aW9fbW1pb19kZXZpY2UgKnZtX2RldjsKPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+IFdlIGFscmVhZHkgZXhwb3NlIGZlYXR1cmUgYml0cyAtIHRoaXMg b25lIHJlYWxseSBuZWNlc3Nhcnk/Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IE5lY2Vzc2FyeT8gT2Yg Y291cnNlIG5vdCwganVzdCBhIGRlYnVnZ2luZyBmZWF0dXJlLCByZWFsbHksIHRvIHNlZSB3aGF0 Cj4gPiA+ID4gPiB2ZXJzaW9uIG9mIGNvbnRyb2wgcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUuIFVz ZWZ1bCAtIEkgc3Ryb25nbHkgYmVsaWV2ZQo+ID4gPiA+ID4gc28uCj4gPiA+ID4gCj4gPiA+ID4g WWVzIGJ1dCB0aGUgcG9pbnQgaXMgdGhlIHNhbWUgaW5mbyBpcyBhbHJlYWR5IGF2YWlsYWJsZQo+ ID4gPiA+IGluIGNvcmU6IGp1c3QgbG9vayBhdCBmZWF0dXJlIGJpdCAzMS4KPiA+ID4gPiBJZiB5 b3UgdGhpbmsgaXQncyBpbXBvcnRhbnQgZW5vdWdoIHRvIGV4cG9zZSBpbiBhIGRlY29kZWQKPiA+ ID4gPiB3YXksIGxldCdzIGFkZCB0aGlzIGluIGNvcmU/Cj4gPiA+IAo+ID4gPiBIb3cgZG8geW91 IG1lYW4gImluIGNvcmUiPyBJdCdzIGEgbW1pby1zcGVjaWZpYyB2YWx1ZS4gQ29udGVudCBvZiB0 aGUKPiA+ID4gVklSVElPX01NSU9fVkVSU0lPTiBjb250cm9sIHJlZ2lzdGVyLgo+ID4gCj4gPiBZ ZXMgYnV0IGlmIGRyaXZlciBsb2FkZWQsIHRoZW4gcmV2aXNpb24gaXMgYWx3YXlzIGluIHN5bmMK PiA+IHdpdGggdGhlIGZlYXR1cmUgYml0Lgo+IAo+IFdlbGwsIG5vdCBxdWl0ZTogYXMgb2Ygbm93 IEkndmUgZ290IGxlZ2FjeSBibG9jayBkZXZpY2UgZHJpdmVyIGhhcHBpbHkKPiB3b3JraW5nIG9u IHRvcCBvZiBjb21wbGlhbnQgKHNvIHYyIGluIE1NSU8gc3BlZWNoKSBNTUlPIGRldmljZSAtIHRo ZQo+IHRyYW5zcG9ydCBpZiBjb21wbGV0ZWx5IHRyYW5zcGFyZW50IGhlcmUuCgpTcGVjIHNheXMg ZXhwbGljaXRseSBpdCdzIGFuIGlsbGVnYWwgY29uZmlndXJhdGlvbi4KCk9uY2UgZHJpdmVyIGNv ZGUgaXMgdXBzdHJlYW0sIHdlIHdvbid0IGJlIGFibGUgdG8gZHJvcCBpdApiZWNhdXNlIHNvbWVv bmUsIHNvbWV3aGVyZSB3aWxsIHVzZSBpdC4KClNvICppZiogdGhlcmUncyBzb21lIHJlYXNvbiB0 byBzdXBwb3J0IGEgbGVnYWN5IGRldmljZSBvbiB0b3Agb2YKYSBtb2Rlcm4gdHJhbnNwb3J0LCB0 aGVuIGxldCdzIGRvY3VtZW50IHRoYXQsCmJ1dCB1bmxlc3Mgd2UgZG8gbGV0J3Mgbm90IGNyZWF0 ZSBtb3JlIGNvbmZpZ3VyYXRpb25zCnRoYXQgd2UgbGF0ZXIgbmVlZCB0byBzdXBwb3J0LgoKCj4g PiBJZiBkcml2ZXIgZmFpbGVkIHRvIGF0dGFjaCwgYXR0cmlidXRlIGlzIG5vdCB0aGVyZQo+ID4g c28gY2FuJ3QgYmUgdXNlZCBmb3IgZGVidWdnaW5nLgo+IAo+IEludGVyZXN0aW5nIHBvaW50IG9u IGl0cyBvd24sIGhhdmVuJ3QgdGhvdWdodCBvZiB0aGF0LiBUaGlzIGlzIGFuIGlzc3VlCj4gd2l0 aCBwbGF0Zm9ybSBkZXZpY2VzLCBubyBzdGFuZGFyZCBzZXQgb2YgYXR0cmlidXRlcywgYWx3YXlz IGF2YWlsYWJsZS4KPiBXaWxsIGhhdmUgYSBsb29rIGF0IHRoaXMuCj4gCj4gPiA+ID4gQWJzb2x1 dGVseS4gU28gd2hhdCBoYXBwZW5zIGlmIHlvdSBkcm9wIHRoZXNlIGNvZGUgbGluZXM/Cj4gPiA+ ID4gVGhlcmUncyBubyBkcml2ZXIgcmVnaXN0ZXJlZCBmb3IgdGhpcyBJRCwgc28gaXQncyBqdXN0 IGlnbm9yZWQuCj4gPiA+ID4gU2VlbXMgbGlrZSB3aGF0IHNwZWMgaXMgYXNraW5nIGZvciwgbm8/ Cj4gPiA+IAo+ID4gPiBOb3QgdG8gbWUsIG5vLiBUaGVyZSB3aWxsIGJlIGEgdm1fZGV2IHJlZ2lz dGVyZWQgd2l0aCBhbiBfaWxsZWdhbF8gSUQuCj4gPiAKPiA+IFllcyAtIHRoZXJlIHdpbGwgYmUg YSBkZXZpY2UsIGJ1dCBubyBkcml2ZXIgd2lsbCBkcml2ZSBpdC4KPiAKPiBBIGRldmljZSB3aXRo IGFuICppbGxlZ2FsKiBJRC4KClNvPyBUaGUgImRldmljZSIgaXMganVzdCBhIGJ1bmNoIG9mIGFs bG9jYXRlZCBtZW1vcnkuIFRoZXJlJ3Mgbm8gZHJpdmVyCmFuZCBubyBvbmUgdG91Y2hlcyBpcywg d2hpY2ggaXMgd2hhdCB0aGUgc3BlYyByZXF1aXJlcy4KCj4gPiA+ID4gPiA+IEBAIC00OTYsNyAr NTMxLDggQEAgc3RhdGljIGludCB2aXJ0aW9fbW1pb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiA+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4gPiA+ICAgICAgIHN0cnVjdCB2 aXJ0aW9fbW1pb19kZXZpY2UgKnZtX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gLSAgICAgdW5yZWdpc3Rlcl92aXJ0aW9fZGV2aWNl KCZ2bV9kZXYtPnZkZXYpOwo+ID4gPiA+ID4gPiA+ICsgICAgIGlmICh2bV9kZXYpCj4gPiA+ID4g PiA+ID4gKyAgICAgICAgICAgICB1bnJlZ2lzdGVyX3ZpcnRpb19kZXZpY2UoJnZtX2Rldi0+dmRl dik7Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFdpbGwgcmVtb3ZlIGV2 ZXIgYmUgY2FsbGVkIGlmIHByb2JlIGZhaWxzPwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBOby4KPiA+ ID4gPiAKPiA+ID4gPiBUaGVuIHRoaXMgaWYgaXNuJ3QgbmVjZXNzYXJ5OiB2bV9kZXYgaXMgYWx3 YXlzIHNldC4KPiA+ID4gCj4gPiA+IE5vdCAoaW4gdGhlIGN1cnJlbnQgY29kZSkgaWYgSUQgaXMg MC4KPiA+IAo+ID4gU28ganVzdCByZXR1cm4gLUVOT0RFViwgdGhlbiBwcm9iZSB3aWxsIGJlIGNv bnNpZGVyZWQKPiA+IGZhaWxlZCBhbmQgcmVtb3ZlIHdvbid0IGJlIGNhbGxlZC4KPiAKPiAiNC4y LjIuMiBEcml2ZXIgUmVxdWlyZW1lbnRzOiBNTUlPIERldmljZSBSZWdpc3RlciBMYXlvdXQgCj4g Cj4gVGhlIGRyaXZlciBNVVNUIGlnbm9yZSBhIGRldmljZSB3aXRoIERldmljZUlEIDB4MCwgYnV0 IE1VU1QgTk9UIHJlcG9ydCBhbnkgZXJyb3IuIgo+IAo+IFJldHVybmluZyAtRU5PREVWICpyZXBv cnRzKiBhbiBlcnJvci4KClJlcG9ydHMgdG8gd2hvbT8gRG8geW91IHJlZmVyIHRvIGh0dHA6Ly94 a2NkLmNvbS84MzgvID8KRU5PREVWIGlzIG5vdCAicmVwb3J0ZWQiLiBJdCdzIGp1c3QgYSBmdW5j dGlvbiByZXR1cm4gdmFsdWUsCml0IHRlbGxzIGtlcm5lbCBub3QgdG8gY2FsbCByZW1vdmUuClVz ZXJzIGRvbid0IGtub3c6IG1vZHVsZSBwcm9iZSBzdWNjZWVkcywgY29yZSB3aWxsIG5vdCBwcmlu dCBhbnkgZXJyb3JzLCB1c2VyIGlzIG5vdApxdWVyaWVkLgoKV2hhdCBoYXBwZW5zIHdpdGggeW91 ciBwYXRjaD8gRHJpdmVyIGlzIGF0dGFjaGVkIHRvCmRldmljZSAoY2hlY2sgd2hlcmUgZG9lcyBk cml2ZXIgYXR0cmlidXRlIHBvaW50cyB0byEpLApidXQgZG9lc24ndCBkbyBhbnl0aGluZy4KCkxv b2tzIGxpa2UgaWYgeW91IGp1c3Qga2VlcCBnb2luZywgeW91J2xsIGFjaGlldmUKdGhlIHNhbWUg cmVzdWx0LgoKCj4gPiBPciAtIGJldHRlciAtIGp1c3QgcmVnaXN0ZXIgdGhlIGRldmljZSwgaXQn cyBoYXJtbGVzcwo+ID4gYXMgbm8gZHJpdmVyIHdpbGwgdHJ5IHRvIGF0dGFjaCB0byBpdCwgYW5k IHRoZXJlCj4gPiB3b24ndCBiZSBhbnkgbmVlZCB0byBzcGVjaWFsLWNhc2UgaXQuCj4gCj4gUmVh bGx5LCB5b3UgbWF5IHdhbnQgdG8gcmVmcmVzaCB5b3VyIG1lbW9yeS4gV2UndmUgYmVlbiB0aGVy ZS4gVGhpcyAqaXMqCj4gYSBzcGVjaWFsIGNhc2UuIEludGVudGlvbmFsbHkuCgpIbW0gSSBmb3Vu ZCBodHRwczovL2lzc3Vlcy5vYXNpcy1vcGVuLm9yZy9icm93c2UvVklSVElPLTcKYnV0IHRoZSBy ZXNvbHV0aW9uIHRoZXJlIGlzIG1lcmVseSBhc2tpbmcgdGhhdCBubyBkcml2ZXIKbWF0Y2hlcyBJ RCAwLiBTZWVtcyBPSy4KVGhlIE1NSU8gY2hhbmdlcyB3ZXJlIGFsbCBtYWRlIGFzIHBhcnQgb2YK aHR0cHM6Ly9pc3N1ZXMub2FzaXMtb3Blbi5vcmcvYnJvd3NlL1ZJUlRJTy00NApBbnl3YXksIG15 IG1lbW9yeSBpcyBpcnJlbGV2YW50LCB3ZSBuZWVkIHRvIGRvY3VtZW50IG1vdGl2YXRpb24KZm9y IGtlcm5lbCBjb2RlIGNoYW5nZXMgZm9yIGZ1dHVyZSByZWFkZXJzLiBJdCBzZWVtcyB0aGF0IGRy b3BwaW5nIHRoaXMKY2h1bmsgc2F0aXNmaWVzIHRoZSBzcGVjLCBzbyBpZiBub3QgdHJ1ZSwgbGV0 J3MgYWRkIGEgY29tbWVudCBpbiBjb2RlCnRoYXQgZXhwbGFpbnMgd2h5LgoKQXNzdW1lIHlvdSBz dGljayBpbiBkZXZpY2Ugd2l0aCBJRCAwLgprZXJuZWwgcHJvYmVzIHRoZSBkZXZpY2UsIGFuZCB0 aGVuIHNlZXMgdGhlcmUgaXMgbm8gZHJpdmVyCmFuZCBsZWF2ZXMgaXQgYWxvbmUuClNlZW1zIHBl cmZlY3QsIG1hdGNoZXMgdGhlIHNwZWMuCgpEbyB5b3UgaGF2ZSBhIGNvbmZpZyB0aGF0J3Mgbm90 IGhhbmRsZWQgd2VsbCBoZXJlPwoKPiA+ID4gPiBOb3QgbmVjZXNzYXJpbHkgLSB0aGUgcG9pbnQg aXMgZm9yIHVzZXJzcGFjZSB0byBiZSBhYmxlIHRvCj4gPiA+ID4gYXZvaWQgZ2V0dGluZyB1c2Vs ZXNzIGxlZ2FjeSBtYWNyb3MgYnkgbWVhbnMgb2YgYSBzaW1wbGUgI2RlZmluZS4KPiA+ID4gPiBB Z2FpbiwgdGFrZSBhIGxvb2sgYXQgbXkgdHJlZToKPiA+ID4gPiAKPiA+ID4gPiBnaXQ6Ly9naXQu a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbXN0L3Zob3N0LmdpdCB2aG9zdC1u ZXh0Cj4gPiA+IAo+ID4gPiBJIGhhdmUgbm8gaWRlYSB3aGF0IGFyZSB5b3UgdGFsa2luZyBhYm91 dCBoZXJlLiBXaHkgd291bGQgdXNlcnNwYWNlIGV2ZXIKPiA+ID4gYWNjZXNzIHRoZSBtZW1vcnkg bWFwcGVkIGNvbnRyb2wgcmVnaXN0ZXJzPwo+ID4gCj4gPiBVc2Vyc3BhY2UgYmVpbmcgcWVtdSB3 aGljaCBpbXBsZW1lbnRzIHRoZXNlLgo+IAo+IFJpZ2h0LCBxZW11IGlzIGEgdmFsaWQgdXNlcnNw YWNlIGNhc2UuCj4gCj4gPiA+IFRoYXQncyBhbGwgd2hhdCB0aGlzIGhlYWRlcgo+ID4gPiBkZXNj cmliZXMuIEFjdHVhbGx5LCBpZiBJIHdhcyB0eXBpbmcgdGhlIGRyaXZlciB0b2RheSwgSSdkIGRl ZmluZSB0aGUKPiA+ID4gb2Zmc2V0cyBpbiB2aXJ0aW9fbW1pby5jIGZpbGUsIG5vdCBpbiBhIHNl cGFyYXRlIGhlYWRlci4gSWYgZmFjdCwgSSBtYXkKPiA+ID4gbW92ZSB0aGVtIHRoZXJlLi4uCj4g Pgo+ID4gQW5kIHRoZW4geW91IHdpbGwgaGF2ZSB0byBjb3B5IGFuZCBwYXN0ZSB0aGVtIGluIHFl bXUuCj4gPiAKPiA+IFdoaWNoIHdlIGRvIEFUTSBmb3Igc2lsbHkgcmVhc29ucyBsaWtlCj4gPiB3 ZSBpbmNsdWRlIGxpbnV4L3R5cGVzLmgsIGJ1dCBJIGZ1bGx5IGludGVuZCB0byBnZXQgcmlkIG9m IHRoYXQsCj4gPiBqdXN0IHR3ZWFrIHRoZSBsaW51eCBvbmVzIHNsaWdodGx5IGZvciBwb3J0YWJp bGl0eS4KPiAKPiBPaywgbW9yZSB0aGFuIGhhcHB5IHRvIGRvIHdoYXRldmVyIHdpbGwgbWFrZSBx ZW11IGhhcHB5LiBBbiBleGFtcGxlPwo+IAo+IFBhd2XFggoKU2VlIGluY2x1ZGUvdWFwaS9saW51 eC92aXJ0aW9fcGNpLmggaW4gbXkgdHJlZSBhYm92ZS4KCi0tIApNU1QKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBs aXN0ClZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlz dHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u