From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoffer Dall Subject: Re: Xen ARM - Exposing a PL011 to the guest Date: Sun, 29 Jan 2017 12:06:40 +0100 Message-ID: <20170129110640.GA8656@cbox> References: <173fa6a7-8656-3465-3d40-59f776deb8a1@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: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Bhupinder Thakur Cc: Stefano Stabellini , Wei Liu , Steve Capper , George Dunlap , Andrew Cooper , Ian Jackson , Xen Devel , Julien Grall , Jan Beulich List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBKYW4gMjcsIDIwMTcgYXQgMDU6NDQ6MTVQTSArMDUzMCwgQmh1cGluZGVyIFRoYWt1 ciB3cm90ZToKPiBIaSwKPiAKPiBJIGhhdmUgZG9uZSB0aGUgY2hhbmdlcyBmb3IgZW11bGF0aW5n IHBsMDExIGluIFhlbi4gQ3VycmVudGx5LCBJIGhhdmUKPiB2ZXJpZmllZCB0aGUgZW11bGF0aW9u IGNvZGUgYnkgbWFudWFsbHkgcmVhZGluZy93cml0aW5nIGRhdGEgdG8KPiAvZGV2L3R0eUFNQTAg d2hpY2ggaXMgdGhlIGRldmljZSBmaWxlIGZvciBwbDAxMSBkZXZpY2UuIFRoZSBkYXRhIGlzCj4g Zmxvd2luZyBmaW5lIGJldHdlZW4geGVuY29uc29sZWQgYW5kIHRoZSBndWVzdCBkb21haW4uCj4g Cj4gQXMgYSBuZXh0IHN0ZXAsIEkgd2FudGVkIHRvIHVzZSAvZGV2L3R0eUFNQTAgYXMgYSBjb25z b2xlLgo+IAo+IEZvciB0aGF0IEkgdHJpZWQgYWRkaW5nIGNvbnNvbGU9dHR5QU1BMCBpbnN0ZWFk IG9mIGNvbnNvbGU9aHZjMCBpbiB0aGUKPiAiZXh0cmEiIGRpcmVjdGl2ZSBpbiB0aGUgZG9tVSBj b25maWd1cmF0aW9uIGZpbGUuIEhvd2V2ZXIsIEkgZG8gbm90Cj4gc2VlIHRoZSBvdXRwdXQgb24g dGhlIGNvbnNvbGUgb25jZSBJIGF0dGFjaGVkIHRoZSBjb25zb2xlIHVzaW5nICJ4bAo+IGNvbnNv bGUgPGRvbWFpbl9uYW1lPiIuIEkgdHJpZWQgdXNpbmcgInhsIGNvbnNvbGUgLXQgc2VyaWFsCj4g PGRvbWFpbl9uYW1lPiIgYWxzbyBidXQgdGhhdCBzaG93cyB0aGUgdHR5MSBjb25zb2xlIGFuZCBu b3QgdGhlCj4gdHR5QU1BMCBvbmUuCgpJIHdvdWxkIHRyeSB0byB2ZXJpZnkgdGhhdCB3aGVuIExp bnV4IHVzZXMgdGhlIHBsMDExIGFzIGEgY29uc29sZSAoYXMKb3Bwb3NlZCB0byBqdXN0IHdyaXRp bmcgc29tZSBjaGFyYWN0ZXJzIGludG8gL2Rldi90dHlBTUEwKSwgdGhhdCBpdApkb2Vzbid0IGVy cm9yIG91dCBzb21ld2hlcmUuICBTbyBsaWtlIFN0ZWZhbm8gc3VnZ2VzdHMsIG1ha2Ugc3VyZSB5 b3UKY2hlY2sgdGhlIGd1ZXN0IGtlcm5lbCBsb2cgYWZ0ZXIgYm9vdCAoYXNzdW1pbmcgeW91IGNh biBTU0ggb3Igc29tZXRoaW5nCmludG8gdGhlIGJveCkgYW5kIGxvb2sgYXQgJ2RtZXNnJyB0byBz ZWUgaWYgdGhlIHBsMDExIGRyaXZlciBmYWlsZWQuCgpZb3UgY291bGQgYWxzbyB0cnkgYWRkaW5n IHNvbWUgbG9nIGluZm8gaW4geW91IFhlbiBwbDAxMSBlbXVsYXRpb24gY29kZQp0byBzZWUgaWYg dGhlIGd1ZXN0IGtlcm5lbCBkcml2ZXIgcHJvZHMgdGhlIGRldmljZSBpbiB0aGUgc2VxdWVuY2Ug eW91CmV4cGVjdCwgYmFzZWQgb24gbG9va2luZyBhdCB0aGUgbGludXggZHJpdmVyIGZvciB0aGUg cGwwMTEuCgpUaGFua3MsCi1DaHJpc3RvZmZlcgoKPiAKPiAKPiBPbiAxOCBKYW51YXJ5IDIwMTcg YXQgMDA6NTcsIFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4gd3Jv dGU6Cj4gPiBPbiBUdWUsIDE3IEphbiAyMDE3LCBKdWxpZW4gR3JhbGwgd3JvdGU6Cj4gPj4gSGks Cj4gPj4KPiA+PiBTb3JyeSBmb3IgdGhlIGxhdGUgYW5zd2VyLCBJIGFtIGp1c3QgYmFjayBmcm9t IGhvbGlkYXlzIGFuZCBzdGlsbCBjYXRjaGluZy11cAo+ID4+IHdpdGggbXkgZS1tYWlscy4KPiA+ Pgo+ID4+IE9uIDAzLzAxLzE3IDIwOjA4LCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4gPj4g PiBPbiBUaHUsIDI5IERlYyAyMDE2LCBCaHVwaW5kZXIgVGhha3VyIHdyb3RlOgo+ID4+ID4gPiBP biAyOCBEZWNlbWJlciAyMDE2IGF0IDIzOjE5LCBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBh cm0uY29tPiB3cm90ZToKPiA+PiA+ID4gPiBPbiAyMS8xMi8xNiAyMjoxMiwgU3RlZmFubyBTdGFi ZWxsaW5pIHdyb3RlOgo+ID4+ID4gPiA+ID4KPiA+PiA+ID4gPiA+IE9uIFdlZCwgMjEgRGVjIDIw MTYsIEp1bGllbiBHcmFsbCB3cm90ZToKPiA+PiA+ID4gPiA+ID4KPiA+PiA+ID4gPiA+ID4gT24g MjAvMTIvMjAxNiAyMDo1MywgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOgo+ID4+ID4gPiA+ID4g PiA+Cj4gPj4gPiA+ID4gPiA+ID4gT24gVHVlLCAyMCBEZWMgMjAxNiwgSnVsaWVuIEdyYWxsIHdy b3RlOgo+ID4+ID4gPiA+ID4gPiA+ID4KPiA+PiA+ID4gPiA+ID4gPiA+IE9uIDE5LzEyLzIwMTYg MjE6MjQsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToKPiA+PiA+ID4gPiA+ID4gPiA+ID4KPiA+ PiA+ID4gPiA+ID4gPiA+ID4gT24gTW9uLCAxOSBEZWMgMjAxNiwgQ2hyaXN0b2ZmZXIgRGFsbCB3 cm90ZToKPiA+PiA+ID4gPiA+ID4gPiA+ID4gPgo+ID4+ID4gPiA+ID4gPiA+ID4gPiA+IE9uIEZy aSwgRGVjIDE2LCAyMDE2IGF0IDA1OjAzOjEzUE0gKzAwMDAsIEp1bGllbiBHcmFsbAo+ID4+ID4g PiA+ID4gPiA+ID4gPiA+IHdyb3RlOgo+ID4+ID4gPiA+ID4gPiA+ID4gPgo+ID4+ID4gPiA+ID4g PiA+ID4gPiBJZiB3ZSB1c2UgaHZtX3BhcmFtcyBmb3IgdGhpcywgd2UgbmVlZCB0d28gbmV3IGh2 bV9wYXJhbXMgYW5kCj4gPj4gPiA+ID4gPiA+ID4gPiA+IFhlbgo+ID4+ID4gPiA+ID4gPiA+ID4g PiBuZWVkcwo+ID4+ID4gPiA+ID4gPiA+ID4gPiB0byB1bm1hcCB0aGUgcGZuIGZyb20gdGhlIGd1 ZXN0IGltbWVkaWF0ZWx5LCBiZWNhdXNlIHdlIGRvbid0Cj4gPj4gPiA+ID4gPiA+ID4gPiA+IHdh bnQgdGhlCj4gPj4gPiA+ID4gPiA+ID4gPiA+IGd1ZXN0IHRvIGhhdmUgYWNjZXNzIHRvIGl0Lgo+ ID4+ID4gPiA+ID4gPiA+ID4KPiA+PiA+ID4gPiA+ID4gPiA+Cj4gPj4gPiA+ID4gPiA+ID4gPiBJ ZiB5b3UgdW5tYXAgdGhlIHBmbiwgdGhlIFBWIGJhY2tlbmQgd2lsbCBub3QgYmUgYWJsZSB0byBy ZXF1ZXN0Cj4gPj4gPiA+ID4gPiA+ID4gPiB0aGUKPiA+PiA+ID4gPiA+ID4gPiA+IHBhZ2UKPiA+ PiA+ID4gPiA+ID4gPiA+IGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBubyB0cmFuc2xhdGlvbiBhdmFp bGFibGUuCj4gPj4gPiA+ID4gPiA+ID4gPgo+ID4+ID4gPiA+ID4gPiA+ID4gU28gd2hhdCB5b3Ug d2FudCB0byBkbyBpcyBwcmV2ZW50aW5nIHRoZSBndWVzdCB0byBhdCBsZWFzdCB3cml0ZQo+ID4+ ID4gPiA+ID4gPiA+ID4gaW50bwo+ID4+ID4gPiA+ID4gPiA+ID4gcmVnaW9uCj4gPj4gPiA+ID4g PiA+ID4gPiAobm90IHN1cmUgaWYgaXQgaXMgd29ydGggdG8gcmVzdHJpY3QgcmVhZCkKPiA+PiA+ ID4gPiA+ID4gPgo+ID4+ID4gPiA+ID4gPiA+Cj4gPj4gPiA+ID4gPiA+ID4gVGhhdCdzIGEgZ29v ZCBpZGVhLgo+ID4+ID4gPiA+ID4gPiA+Cj4gPj4gPiA+ID4gPiA+ID4KPiA+PiA+ID4gPiA+ID4g PiA+IGFuZCB1bm1hcCB0aGUgcGFnZSB2aWEgdGhlIGh5cGVyY2FsbAo+ID4+ID4gPiA+ID4gPiA+ ID4gWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uLgo+ID4+ID4gPiA+ID4gPiA+Cj4gPj4gPiA+ ID4gPiA+ID4KPiA+PiA+ID4gPiA+ID4gPiBUaGF0IHdvdWxkIGJlIGlzc3VlZCBieSB0aGUgZ3Vl c3QgaXRzZWxmLCByaWdodD8gVG8gc2F2ZSBhZGRyZXNzCj4gPj4gPiA+ID4gPiA+ID4gc3BhY2U/ Cj4gPj4gPiA+ID4gPiA+Cj4gPj4gPiA+ID4gPiA+Cj4gPj4gPiA+ID4gPiA+IENvcnJlY3QuIFRo ZSBtYWluIHVzZSBjYXNlIHRvZGF5IGlzIGJhbGxvb25pbmcsIGJ1dCBndWVzdCBjb3VsZCBjYWxs Cj4gPj4gPiA+ID4gPiA+IGl0Cj4gPj4gPiA+ID4gPiA+IG9uIGFueQo+ID4+ID4gPiA+ID4gPiBv dGhlciBSQU0gYmFrZWQgcGFnZS4KPiA+PiA+ID4gPiA+ID4KPiA+PiA+ID4gPiA+ID4gSSB3YXMg dGhpbmtpbmcgYWJvdXQgbW9yZSBhYm91dCB0aGUgcHJvdGVjdGlvbiBuZWVkZWQuIFRlY2huaWNh bGx5Cj4gPj4gPiA+ID4gPiA+IHRoZQo+ID4+ID4gPiA+ID4gPiBkYXRhIGluCj4gPj4gPiA+ID4g PiA+IHRoZSByaW5nIGFyZSBub3QgdHJ1c3RlZC4gU28gaWYgdGhlIGd1ZXN0IGlzIG1lc3Npbmcg dXAgd2l0aCBpdCwgaXQKPiA+PiA+ID4gPiA+ID4gd291bGQKPiA+PiA+ID4gPiA+ID4gbm90Cj4g Pj4gPiA+ID4gPiA+IGJlIGEgYmlnIGlzc3VlLiBPciBkaWQgSSBtaXNzIGFueXRoaW5nIGhlcmU/ Cj4gPj4gPiA+ID4gPgo+ID4+ID4gPiA+ID4KPiA+PiA+ID4gPiA+IEkgdW5kZXJzdGFuZCB0aGF0 IGEgZ3Vlc3Qgd291bGQgYmUgc21hcnQgdG8gY2FsbAo+ID4+ID4gPiA+ID4gWEVOTUVNX2RlY3Jl YXNlX3Jlc2VydmF0aW9uIG9uIHRoZSBQViBjb25zb2xlIHBhZ2UgZm9yIHBsMDExLCBidXQgaXQK PiA+PiA+ID4gPiA+IGNhbm5vdCBiZSBhIHNlY3VyaXR5IG1lYXN1cmUsIGJlY2F1c2UsIGluIGZh Y3QsIGl0IG5lZWRzIHRvIGJlIGNhbGxlZAo+ID4+ID4gPiA+ID4gYnkKPiA+PiA+ID4gPiA+IHRo ZSBndWVzdC4gIE9mIGNvdXJzZSwgYSBtYWxpY2lvdXMgZ3Vlc3QgY2FuIHNpbXBseSBub3QgY2Fs bAo+ID4+ID4gPiA+ID4gWEVOTUVNX2RlY3JlYXNlX3Jlc2VydmF0aW9uIGZvciBpdC4KPiA+PiA+ ID4gPgo+ID4+ID4gPiA+Cj4gPj4gPiA+ID4gU29ycnkgSSB3YXMgbm90IGNsZWFyLiBJIHdhcyBu b3Qgc3VnZ2VzdGVkIHRoZSBndWVzdCB0byBjYWxsCj4gPj4gPiA+ID4gWEVOTUVNX2RlY3JlYXNl X3Jlc2VydmF0aW9uIG9uIHJpbmcgZm9yIHNlY3VyaXR5IGJ1dCBhIG1hbGljaW91cyBndWVzdAo+ ID4+ID4gPiA+IGlzc3VpbmcgdGhlIGh5cGVyY2FsbCBvbiB0aGUgcmluZyBwcm90ZWN0ZWQgYW5k IHJlcGxhY2luZyBieSBhbm90aGVyCj4gPj4gPiA+ID4gcGFnZS4KPiA+PiA+ID4gPgo+ID4+ID4g PiA+IFRoaXMgaXMgdGhlIGV4YWN0IHNhbWUgcHJvYmxlbSBhcyB0aGUgb25lIEkgbWVudGlvbmVk IG9uIHRoZSBJVFMgdGhyZWFkLgo+ID4+ID4gPiA+IFRoZQo+ID4+ID4gPiA+IHBhZ2UgbGl2ZSBp biBndWVzdCBtZW1vcnkgYnV0IGNvbnRhaW5zIGRhdGEgdGhhdCB3aWxsIG9ubHkgYmUgdG91Y2hl ZCBieQo+ID4+ID4gPiA+IFhlbi4KPiA+PiA+ID4gPgo+ID4+ID4gPiA+IElmIHlvdSByZW1vdmUg dGhvc2UgcGFnZSBmcm9tIHN0YWdlLTIsIHRoZSB0cmFuc2xhdGlvbiBJUEEgLT4gTUZOIHdpbGwK PiA+PiA+ID4gPiBiZQo+ID4+ID4gPiA+IGxvc3QgdW5sZXNzIHlvdSBzdG9yZSBzb21ld2hlcmUg ZWxzZS4gWW91IHdvdWxkIGhhdmUgdG8gZG8gaXQgcGVyLXBhZ2UKPiA+PiA+ID4gPiBhcwo+ID4+ ID4gPiA+IHRoZSBidWZmZXIgd2lsbCB1c2UgY29udGlndW91cyBJUEEgYnV0IHBvdGVudGlhbGx5 IG5vbmNvbnRpZ3VvdXMgTUZOLgo+ID4+ID4gPiA+Cj4gPj4gPiA+ID4gSW4gdGhlIGNhc2Ugb2Yg SVRTIHRoZSBtZW1vcnkgaXMgcHJvdmlzaW9uZWQgYnkgdGhlIGd1ZXN0LiBTbyB0aGVyZSBhcmUK PiA+PiA+ID4gPiBub3QKPiA+PiA+ID4gPiBtdWNoIHRvIGRvIHRoZXJlIGV4Y2VwdCBhZGRpbmcg cHJvdGVjdGlvbiBpbiBzdGFnZS0yIHN1Y2ggYXMgd3JpdGUKPiA+PiA+ID4gPiBwcm90ZWN0aW9u IGFuZCBwcmV2ZW50aW5nIHRoZSBndWVzdCB0byB1bm1hcCBpdC4gSG93ZXZlciBmb3IgdGhlIHBs MDExCj4gPj4gPiA+ID4gcmluZywKPiA+PiA+ID4gPiBhcyBBbmRyZXcgcG9pbnRlZCBvbiBJUkMs IHdoYXQgd2UgbmVlZCB0byBkbyBpcyBhY2NvdW50aW5nIHRoaXMgcGFnZSB0bwo+ID4+ID4gPiA+ IHRoZQo+ID4+ID4gPiA+IGRvbWFpbiBtZW1vcnkuIE5vIG1hcHBpbmcgaXMgbmVjZXNzYXJ5IGlu IHN0YWdlLTIuCj4gPj4gPiA+Cj4gPj4gPiA+IFBsZWFzZSBjbGFyaWZ5IHdoYXQgaXMgbWVhbnQg YnkgdGhhdCBubyBzdGFnZS0yIG1hcHBpbmcgaXMgcmVxdWlyZWQuCj4gPj4gPiA+IERvZXMgaXQg bWVhbiB0aGF0IG5vIHN0YWdlLTIgbWFwcGluZyBpcyByZXF1aXJlZCBmb3IgdGhlIGd1ZXN0IGFz IGl0Cj4gPj4gPiA+IG5ldmVyIG5lZWRzIHRvIGFjY2VzcyB0aGlzIHBhZ2U/Cj4gPj4gPgo+ID4+ ID4gVGhhdCdzIHJpZ2h0Lgo+ID4+ID4KPiA+PiA+Cj4gPj4gPiA+IEhvd2V2ZXIsIHRoZSBYZW4g SFlQIHdpbGwgbmVlZCB0aGUgc3RhZ2UtMiBtYXBwaW5nIHRvIGZpbmQgb3V0IHRoZQo+ID4+ID4g PiBwbDAxMSBQRk4gLS0+IHBoeXNpY2FsIE1GTiBtYXBwaW5nIHNvIHRoYXQgaXQgY2FuIG1hcCB0 aGUgcGFnZSB0byBpdHMKPiA+PiA+ID4gb3duIGFkZHJlc3Mgc3BhY2UuIEN1cnJlbnRseSwgSSBh bSB1c2luZyBwcmVwYXJlX3JpbmdfZm9yX2hlbHBlciAoKSB0bwo+ID4+ID4gPiBtYXAgdGhlIHBs MDExIFBGTiAocGFzc2VkIHZpYSBodm0gY2FsbCkgLS0tPiBwaHlpc2NhbCBNRk4gLS0tPiBYZW4g SFlQCj4gPj4gPiA+IFZBLgo+ID4+ID4KPiA+PiA+IEkgYW0gbm90IHN1cmUgd2hhdCBKdWxpZW4g aGFkIGluIG1pbmQgZXhhY3RseS4gSSBsaWtlIHRoZSBpZGVhIG9mIG5vdAo+ID4+ID4gbWFwcGlu ZyB0aGUgcGFnZSBhdCBzdGFnZS0yLCBidXQgaXQgaXMgdHJ1ZSB0aGF0IG1hbnkgaW50ZXJmYWNl cyBleHBlY3QKPiA+PiA+IHBmbnMuIElmIFhlbiBpcyB0aGUgb25lIHRvIGFsbG9jYXRlIHRoZSBw bDAxMSBQViBjb25zb2xlIHBhZ2UsIHRoZW4gWGVuCj4gPj4gPiBrbm93cyB0aGUgbWZuIGFuZCBj b3VsZCB1c2UgaXQgdG8gbWFwIHRoZSBwYWdlLCBpbnN0ZWFkIG9mIHRoZSBwZm4uCj4gPj4gPiBI b3dldmVyLCB0aGUgUFYgY29uc29sZSBiYWNrZW5kIGFsc28gbmVlZHMgdG8gbWFwIHRoZSBzYW1l IHBhZ2UsIGFuZCBpdAo+ID4+ID4gY3VycmVudGx5IGRvZXMgdGhhdCBieSBjYWxsaW5nIHhjX21h cF9mb3JlaWduX3JhbmdlLCB3aGljaCBJIGJlbGlldmUKPiA+PiA+IGFsc28gZXhwZWN0IGEgcGZu Lgo+ID4+Cj4gPj4gRG8geW91IGFncmVlIHRoYXQgcGFnZSBzdWNoIGFzIGlvcmVxIGFuZCB0aGUg cGwwMTEgUFYgY29uc29sZSBhcmUgb25seSB1c2VkCj4gPj4gZm9yIGNvbW11bmljYXRpb24gYmV0 d2VlbiBYZW4gYW5kIGEgYmFja2VuZD8KPiA+Cj4gPiBJIGFncmVlCj4gPgo+ID4KPiA+PiBXZSBk b24ndCB3YW50IHRoZSBndWVzdCB0byBhY2Nlc3MKPiA+PiB0aGUgY29udGVudCBvZiB0aGUgcGFn ZXMgYnV0IHN0aWxsIGJlIGFibGUgdG8gbWFwLiBJIHdvdWxkIGd1ZXNzIHRoYXQgdXNpbmcKPiA+ PiB0aGUgZ2ZuIHdhcyBhIGNvbnZlbmllbmNlIGJ1dCBoYXMgc29tZSBzZWN1cml0eSBpbXBhY3Qg KHNlZSAgZ3Vlc3MgdXNpbmcgdGhlCj4gPj4gZ2ZuIGlzIG1vc3RseSBmb3IgY29udmVuaWVuY2Ug YnV0IGhhcyBzb21lIHNlY3VyaXR5IGltcGFjdCB0b2RheSAoc2VlIFhTQS0xOTcKPiA+PiBhbmQg WFNBLTE5OSkuIEFGQUlVLCB3ZSBhbHNvIHdhbnQgdG8gYWNjb3VudCB0aG9zZSBwYWdlcyB0byBh IGRvbWFpbi4KPiA+Cj4gPiBSaWdodAo+ID4KPiA+Cj4gPj4gRm9yIHRoZSBjcmVkaXQsIHRoaXMg aXMgYSBzdWdnZXN0aW9uIG1hZGUgYnkgQW5kcmV3IG9uIElSQy4gSWYgSSByZW1lbWJlcgo+ID4+ IGNvcnJlY3RseSB3aGF0IGhlIHN1Z2dlc3RlZCwgaXQgd291bGQgYmUgdG8gaGF2ZSBhbiBhZGQt dG8tcGh5c21hcCB2ZXJzaW9uCj4gPj4gcmVzdHJpY3RlZCBmb3Igbm9uLWRvbVUgY29tcG9uZW50 cyAoZS5nIGJhY2tlbmQsIHRvb2xzdGFjaykgd2hpY2ggd291bGQgYWxsb3cKPiA+PiB0byBtYXAg YSBnaXZlbiBwYWdlIChtYXliZSB2aWEgYW4gaW5kZXg/KS4KPiA+Pgo+ID4+ID4KPiA+PiA+IFNv IG1heWJlIGl0IGlzIGVhc2llciB0byB1c2Ugd3JpdGUtcHJvdGVjdGlvbiBpbiBzdGFnZS0yIChh cyBmb3IgSVRTKSwKPiA+PiA+IHVubGVzcyBKdWxpZW4gaGFzIGEgYmV0dGVyIGlkZWE/Cj4gPj4g Pgo+ID4+Cj4gPj4gV2UgbmVlZCB3cml0ZS1wcm90ZWN0aW9uIGFuZCBhbHNvIHByZXZlbnQgdGhl IHBhZ2UgdG8gYmUgcmVtb3ZlZC4KPiA+Pgo+ID4+IEJ1dCB0byBiZSBmYWlyLCBJIHdvdWxkIG5v dCBib3RoZXIgdG8gdHJ5IHRvIHdyaXRlLXByb3RlY3QgaXQgZm9yIG5vdyBpZiB3ZQo+ID4+IGFy ZSBnb2luZyB0b3dhcmRzIGtlZXBpbmcgdGhlIHBsMDExIGNvbnNvbGUgaW4gdGhlIGd1ZXN0IG1l bW9yeS4gSSBkb24ndCB0aGluawo+ID4+IGxldHRpbmcgdGhlIGd1ZXN0IHdyaXRpbmcgaW4gdGhl IGNvbnNvbGUgcGFnZSBpcyBhIGJpZyBwcm9ibGVtLiBUaGUgYmFja2VuZAo+ID4+IGNvbnNvbGUg c2hvdWxkIGFscmVhZHkgYmUgcHJvdGVjdGVkIGFnYWluc3QgbWFsaWNpb3VzIGd1ZXN0LiBJZiBu b3QsIHdlIGFyZQo+ID4+IGFscmVhZHkgaW4gdHJvdWJsZSBhcyBpdCBwYXJ0IG9mIHRoZSBQViBw cm90b2NvbCA6KS4KPiA+Cj4gPiBUcnVlCj4gPgo+ID4KPiA+PiBSZWdhcmRpbmcgWGVuLCB0aGUg Y29uc29sZSBwcm90b2NvbCBpcyB2ZXJ5IGVhc3kgYW5kIEkgdGhpbmsgb25seSBib3VuZAo+ID4+ IGNoZWNraW5nIGlzIHN1ZmZpY2llbnQuIFNvIHdoYXQgYSBndWVzdCBjb3VsZCBkbyBpcyBoaWph Y2tpbmcgaXRzIG93biBjb25zb2xlLgo+ID4+IEFueSB0aG91Z2h0cz8KPiA+Cj4gPiBJIHRoaW5r IHlvdSBhcmUgY29ycmVjdCwgaXQgaXMgbm8gZGlmZmVyZW50IHRoYW4gcHJvdmlkaW5nIGEgUFYg Y29uc29sZQo+ID4gdG8gYSBndWVzdCwgd2hpY2ggd2UgYWxyZWFkeSBkby4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=