From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: XSA-180 follow-up: repurpose xenconsoled for logging Date: Mon, 6 Jun 2016 16:48:38 +0100 Message-ID: <20160606154838.GK14588@citrix.com> References: <20160601140014.GH5160@citrix.com> <5751C09F.6030706@citrix.com> <57554C87.3040001@citrix.com> <575574B1.60602@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b9wnf-0006aO-Kd for xen-devel@lists.xenproject.org; Mon, 06 Jun 2016 15:50:47 +0000 Content-Disposition: inline In-Reply-To: <575574B1.60602@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andrew Cooper Cc: George Dunlap , Xen-devel , Ian Jackson , Wei Liu , George Dunlap List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBKdW4gMDYsIDIwMTYgYXQgMDI6MDM6NDVQTSArMDEwMCwgQW5kcmV3IENvb3BlciB3 cm90ZToKPiBPbiAwNi8wNi8xNiAxMToxMiwgR2VvcmdlIER1bmxhcCB3cm90ZToKPiA+IE9uIDAz LzA2LzE2IDE4OjM4LCBBbmRyZXcgQ29vcGVyIHdyb3RlOgo+ID4+IE9uIDAxLzA2LzE2IDE1OjAw LCBXZWkgTGl1IHdyb3RlOgo+ID4+PiBIaSBhbGwKPiA+Pj4KPiA+Pj4gRHVyaW5nIHRoZSBkaXNj dXNzaW9uIG9mIFhTQS0xODAgSWFuIGNhbWUgdXAgd2l0aCB0aGUgaWRlYSB0aGF0IHdlCj4gPj4+ IHJlcHVycG9zZSB4ZW5jb25zb2xlZCB0byBoYW5kbGUgbG9nZ2luZy4gSSd2ZSBkb25lIHNvbWUg cmVzZWFyY2ggKGFuZAo+ID4+PiBzb21lIGNvZGluZyBhcyB3ZWxsISkuCj4gPj4+Cj4gPj4+IElu IG15IHJlcGx5IHRvIEdlb3JnZSB0aGUgb3RoZXIgZGF5Ogo+ID4+Pgo+ID4+Pj4gSSBqdXN0IHJl YWQgdGhlIGNvZGUgb2YgdmlydGxvZ2QgYW5kIHhlbmNvbnNvbGVkLgo+ID4+Pj4KPiA+Pj4+IEkg dGhpbmsgeGVuY29uc29sZWQgaXMgbWlzc2luZyBhdCBsZWFzdCB0aGluZ3MuCj4gPj4+Pgo+ID4+ Pj4gRnJvbSBhIGhpZ2hlciBsZXZlbDoKPiA+Pj4+Cj4gPj4+PiAxLiBBYnN0cmFjdGlvbiBvZiBy b3RhdGluZyBmaWxlLgo+ID4+Pj4gMi4gQWJzdHJhY3Rpb24gb2YgY2xpZW50Lgo+ID4+Pj4gMy4g SVBDIGludGVyZmFjZSB0byBsaWJ4bCAtLSBwcmVzdW1hYmx5IHdlIG5lZWQgdG8gY3JlYXRlIGEg c29ja2V0Lgo+ID4+Pj4KPiA+Pj4gSSd2ZSBkb25lICMxIGFuZCBwb3J0IGV4aXN0aW5nIGNvZGUg dG8gdXNlIHRoYXQgLS0gd291bGQgYmUgdXNlZnVsIGluCj4gPj4+IGdlbmVyYWwuCj4gPj4+Cj4g Pj4+ICMyIGlzIG5vdCB0b28gaGFyZCBiZWNhdXNlIHhlbmNvbnNvbGVkIGFscmVhZHkgaGFzIGNv bmNlcHQgb2YgYSBkb21haW4uCj4gPj4+IEkgc3VzcGVjdCBzb21lIHJlZmFjdG9yaW5nIHdpbGwg YmUgZmluZS4KPiA+Pj4KPiA+Pj4gIzMgcmVxdWlyZXMgYSBiaXQgbW9yZSB0aGlua2luZy4gVmly dGxvZ2QgaGFzIGFuIFJQQyBpbnRlcmZhY2UgLS0gSSdtCj4gPj4+IHByZXR0eSBzdXJlIHdlICpk b24ndCogd2FudCB0aGF0IGZvciB4ZW5jb25zb2xlZC4gU28gSSBzcGVudCBzb21lIHRpbWUKPiA+ Pj4gdGhpcyBtb3JuaW5nIGFuZCB3cml0ZSB1cCBhIGRyYWZ0IGZvciBhIHhlbnN0b3JlIGJhc2Vk IHByb3RvY29sLiBTZWUKPiA+Pj4gYmVsb3cuCj4gPj4+Cj4gPj4+IEFsc28gdGhlcmUgaXMgYW4g aW1wbGljYXRpb24gaGVyZTogd2UgcHV0IHhlbmNvbnNvbGVkIGluIGEgcmVhbGx5Cj4gPj4+IGNy aXRpY2FsIHBhdGguIElmIGZvciBzb21lIHJlYXNvbiBpdCBkb2Vzbid0IHdvcmsgYWxsIGd1ZXN0 cyBhcmUKPiA+Pj4gYmxvY2tlZC4gRG8gd2UgcmVhbGx5IHdhbnQgdG8gZG8gdGhpcz8KPiA+PiBT b3JyeSB0byBiZSBsYXRlIHRvIHRoaXMgdGhyZWFkLCBidXQgSSB0aGluayBhbGwgbXkgWGVuIDQu NyB0YXNrcyBhcmUKPiA+PiBub3cgZG9uZS4KPiA+Pgo+ID4+IEFyY2hpdGVjdHVyYWxseSwgdGhp cyBpcyBhIGJhZCBpZGVhLCBhbmQgLTEgZnJvbSBtZS4KPiA+Pgo+ID4+IEZpcnN0IG9mIGFsbCwg eW91IGFyZSBtYWtpbmcgdGhlIGFzc3VtcHRpb24gdGhhdCB4ZW5jb25zb2xlZCBhbmQgYWxsCj4g Pj4gcWVtdXMgYXJlIGluIHRoZSBzYW1lIGRvbWFpbi4gIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5 IHRoZSBjYXNlLAo+ID4+IGFsdGhvdWdoIEkgc3VwcG9zZSB0aGF0IGB4bCBjb25zb2xlYCBkb2Vz IGRlcGVuZCBvbiB4bCBhbmQgeGVuY29uc29sZWQKPiA+PiBiZWluZyBpbiB0aGUgc2FtZSBkb21h aW4uCj4gPj4KPiA+PiBBdCB0aGUgbW9tZW50LCBpZiB4ZW5jb25zb2xlZCBjcmFzaGVzLCB0aGUg d29yc3QgdGhhdCBoYXBwZW5zIGlzIHRoYXQKPiA+PiB5b3UgY2FudCBpbnRlcmFjdCB3aXRoIGd1 ZXN0IGNvbnNvbGVzLCBhbmQgdGhlIGd1ZXN0cyB3aWxsIG5vdGljZSB0aGF0Cj4gPj4gdGhlaXIg Y29uc29sZSByaW5ncyBhcmVuJ3QgYmVpbmcgZHJhaW5lZC4gIFRoaXMgaXMgYSBzYWZlLCBhbGJl aXQKPiA+PiBzdWJvcHRpbWFsLCBzaXR1YXRpb24gd2hpY2ggYWxsb3dzIGd1ZXN0cyB0byBjb250 aW51ZSBydW5uaW5nIHVuaW1wZWVkZWQuCj4gPj4KPiA+PiBJZiBxZW11IGlzIGNvbm5lY3RlZCB2 aWEgeGVuY29uc29sZWQsIGFuZCB4ZW5jb25zb2xlZCBjcmFzaGVzLCBxZW11IHdpbGwKPiA+PiBi bG9jay4gIE9uY2UgcWVtdSBibG9ja3MsIHRoZSBWTSBpcyBmb3IgYWxsIGludGVudHMgYW5kIHB1 cnBvc2VzLCBkZWFkLiAKPiA+PiBBcyB5b3UgaWRlbnRpZnksIHRoZXJlIGlzIGEgc2VjdXJpdHkg aW1wbGljYXRpb24gaGVyZSwgd2hlcmUgYSBndWVzdAo+ID4+IHdoaWNoIGNhbiBjcmFzaCB4ZW5j b25zb2xlZCBjYW4gYWxzbyBEb1MgYWxsIG90aGVyIEhWTSBkb21haW5zIGluIHRoZQo+ID4+IHN5 c3RlbS4KPiA+Pgo+ID4+IEZyb20gdGhlIHNjYWxhYmlsaXR5IHNpZGUsIFhlblNlcnZlciBzdXBw b3J0cyBydW5uaW5nIDEwMDAgd2luZG93cyBWTXMKPiA+PiBvbiBhIHNpbmdsZSBob3N0IChzdWJq ZWN0IHRvIHN1ZmZpY2llbnQgUkFNKSwgYW5kIHhlbnN0b3JlZCBpcyBhIGJpZwo+ID4+IG1vbmxp dGhpYyBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS4gIFdlIHdvdWxkIGxpa2UgdG8gYXZvaWQgYWRk aW5nIGEgc2Vjb25kLgo+ID4gcWVtdSBzdHViZG9tcyBpcyBhIHJlZCBoZXJyaW5nOyB0aGF0J3Mg YSBzZXBhcmF0ZSBjb2RlcGF0aCB3aGljaCB3aWxsIGJlCj4gPiBtb2RpZmllZCBhcHByb3ByaWF0 ZWx5IGZvciBpdHMgdXNlIGNhc2UuCj4gCj4gTW9zdCBjZXJ0YWlubHkgbm90IChhbmQgSSBkaWRu J3Qgc3BlY2lmeSBxZW11IHN0dWJkb21zKS4gIFdoYXQgaGFwcGVucwo+IGlmIHNvbWVvbmUgd2lz aGVzIHRvIHJ1biB4ZW5jb25zb2xlZCBpbiBhIHNlcGFyYXRlIG5vbi1zdHViIGRvbWFpbj8gCj4g V2hhdCBoYXBwZW5zIGlmIHNvbWVvbmUgaGFzIHNlcGFyYXRlIG5vbi1zdHViIGRvbWFpbnMgZm9y IHJ1bm5pbmcgcWVtdXM/Cj4gCj4gQWxsIG9mIHRoZXNlIGFyZSBjdXJyZW50bHkgdmlhYmxlIG9w dGlvbnMgd2l0aCBYU00uCj4gCgpUaGUgc2NhbGFiaWxpdHkgaXNzdWUgaXMgdHJ1ZS4gVEJIIEkn bSBhbHNvIGEgYml0IHNrZXB0aWNhbCB0byB0aGUKc2NhbGFiaWxpdHkgaXNzdWUuIEJ1dCBpbiB0 aGUgZW5kIEkgdGhpbmsgaXQgd291bGRuJ3QgYmUgYW55IGRpZmZlcmVudAppZiB5b3Ugd2FudCB0 byB1c2Ugc3lzbG9nIG9yIGFueSBvdGhlciBkYWVtb24uIFRoZSBpc3N1ZSBpcyBnb2luZyB0byBi ZQp0aGUgdGhlcmUgaWYgeW91IG9wdCB0byB1c2UgYW55IGRhZW1vbiB0byBoYW5kbGUgbG9nLgoK VGhlcmUgaXMgYSBkaWZmZXJlbmNlIGJldHdlZW4gcmVxdWlyaW5nIFFFTVUgYW5kIHRoZSBsb2dn aW5nIGRhZW1vbiB0bwpsaXZlIGluIHRoZSBzYW1lIGRvbWFpbiB2LnMuICByZXF1aXJpbmcgdGhl IHRvb2xzdGFjayB0aGF0IHNldHMgdXAKbG9nZ2luZyBmb3IgUUVNVSBrbm93cyBob3cgdG8gZG8g aXQuIFRoYXQgaXMsIHRoZSB3aGF0ZXZlciB0b29sc3RhY2sgdG8Kc3Bhd24gUUVNVSBpbiB0aGUg b3RoZXIgZG9tYWluIHdpbGwga25vdyBob3cgdG8gaGFuZGxlIGxvZ2dpbmcgYW55d2F5LgpSdW5u aW5nIFFFTVUgYW5kIHhlbmNvbnNvbGVkIGluIHRoZSBzYW1lIGRvbWFpbiB3b24ndCBiZSBhIGhh cmQKcmVxdWlyZW1lbnQuIEl0IGlzIGZhaXIgdG8gZXhwZWN0IHhlbmNvbnNvbGVkIGFuZCB0aGUg dG9vbHN0YWNrIGxpdmUgaW4KdGhlIHNhbWUgZG9tYWluIChUT09MU1RBQ0tfRE9NQUlOKSwgc28g aXQgd291bGQgYmUgZmFpciB0byBleHBlY3QKeGVuY29uc29sZWQgdG8gYmUgYXZhaWxhYmxlIHdo ZW4gbGlieGwgdHJpZXMgdG8gc3RhcnQgUUVNVS4KCkkgd291bGRuJ3QgZXhwZWN0IHhlbmNvbnNv bGVkIHRvIGNyYXNoIGVhc2lseS4KCj4gPiBUaGUgcG90ZW50aWFsIGZvciBxZW11IHRvCj4gPiBi bG9jayBpZiB0aGUgZGFlbW9uIGRpZXMsIGFzIHdlbGwgYXMgc2NhbGFiaWxpdHkgY29uY2VybnMs IGFyZSBnb29kCj4gPiBwb2ludHMgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQ7IGFuZCB3ZSBj ZXJ0YWlubHkgbmVlZCB0byBhbGxvdyBvdGhlcgo+ID4gd2F5cyBvZiBkZWFsaW5nIHdpdGggbG9n Z2luZy4KPiA+Cj4gPiBCdXQuLi4KPiA+Cj4gPj4gSWYgc29tZW9uZSBidWlsZHMgWGVuIGZyb20g c291cmNlIGFuZCBmaW5kcyBsYXRlciB0aGF0IHRoZWlyIGRpc2tzIGFyZQo+ID4+IGZ1bGwgdXAg d2l0aCBsb2dzLCB0aGVuIHRvdWdoLgo+ID4gLi4uSSBjYW5ub3QgZXhwcmVzcyBob3cgd3Jvbmct aGVhZGVkIEkgdGhpbmsgdGhpcyBzdGF0ZW1lbnQgaXM7IGFuZC4uLgo+IAo+IFRoYXQgaXMgbWVy ZWx5IHlvdXIgb3Bpbmlvbi4gIFlvdSBrbm93IG1pbmUsIGFuZCBJIHN0YW5kIGJ5IGl0Lgo+IAoK SSBkb24ndCB0aGluayB0aGVzZSB0d28gdmlld3MgYXJlIGZ1bmRhbWVudGFsbHkgaW4gY29uZmxp Y3Qgd2l0aCBlYWNoCm90aGVyLiBUbyBwcm92aWRlIGEgc3lzdGVtIGxldmVsIHNvbHV0aW9uLCB3 ZSBuZWVkIHRvIHByb3ZpZGUgc29tZXRoaW5nCnRvIGJlIGludGVncmF0ZWQgd2l0aCB0aGUgc3lz dGVtLiBUaGVyZSBpcyBub25lIHNvIGZhci4KCj4gPgo+ID4+IElmIHNvbWVvbmUgaW5zdGFsbHMg WGVuIGZyb20gYSBkaXN0cm8sCj4gPj4gdGhleSBzaG91bGQgcmVhc29uYWJseSBleHBlY3QgbG9n Z2luZywgYW5kIGxvZyBtYW5hZ2VtZW50LCB0byBiZQo+ID4+IGNvbnNpc3RlbnQgd2l0aCBvdGhl ciBwYWNrYWdlcyBmcm9tIHRoZSBzYW1lIGRpc3Ryby4KPiA+IC4uLnRoZSBkZWdyZWUgdG8gd2hp Y2ggdGhpcyBpcyB0cnVlIGRlcGVuZHMgb24gdGhlIGRlZ3JlZSB0byB3aGljaAo+ID4gZGlzdHJp YnV0aW9ucyBhcmUgYWN0dWFsbHkgZXF1aXBwZWQgdG8gZGVhbCB3aXRoIHRoZXNlIHNvcnRzIG9m IHRoaW5ncy4KPiAKPiBBIGRpc3RybyB3aGljaCBpc24ndCBlcXVpcHBlZCB0byBkZWFsIHdpdGgg dGhlc2UgdGhpbmdzIGlzIG9mIG5vCj4gcHJhY3RpY2FsIHVzZSBpbiB0aGUgcmVhbCB3b3JsZC4K PiAKPiBBbnkgZGlzdHJvIHdlIGNhcmUgYWJvdXQgc3VwcG9ydGluZyBpcyBlcXVpcHBlZCB0byBk ZWFsIHdpdGggbG9ncy4KPiAKPiA+Cj4gPiBJIGFncmVlIHRoYXQgaWYgbG9nZ2luZyB1c2luZyBl eGlzdGluZyBsb2dnaW5nIHN5c3RlbXMgd2VyZSB3b3JrYWJsZSwKPiA+IHRoYXQgd291bGQgYmUg YSBiZXR0ZXIgc29sdXRpb24uICBXZWkgZGlkIGFjdHVhbGx5IHNwZW5kIGEgZGVjZW50IGNodW5r Cj4gPiBvZiB0aW1lIGxvb2tpbmcgYXQgb3RoZXIgb3B0aW9ucywgaW5jbHVkaW5nIGxvZ3JvdGF0 ZSBhbmQgam91cm5hbGQKPiA+IGJlZm9yZSBzZXR0bGluZyBvbiB1c2luZyB4ZW5jb25zb2xlZC4K PiA+Cj4gPiBBIGxvdCBvZiB0aGlzIGJyYWluc3Rvcm1pbmcgYW5kIGRpc2N1c3Npb24gaGFwcGVu ZWQgb2ZmLWxpc3QgYmVjYXVzZQo+ID4gWFNBLTE4MCB3YXMgc3RpbGwgZW1iYXJnb2VkLCBzbyBJ IGNhbiB1bmRlcnN0YW5kIHdoeSBpdCBsb29rcyBsaWtlIHRoaXMKPiA+IGNhbWUgb3V0IG9mIG5v d2hlcmUuICBJdCB3b3VsZCBwcm9iYWJseSBiZSBnb29kIGZvciBXZWkgdG8gcmVwb3J0IGhlcmUK PiA+IHdoYXQgaGUgZm91bmQgYW5kIHdoeSBoZSBkZWNpZGVkIHRvIHByb3Bvc2UgdGhpcyBzb2x1 dGlvbiBpbnN0ZWFkLgo+IAo+IFBsZWFzZSBkby4gIFVudGlsIHRoZXJlIGlzIGFuIHVuZGVyc3Rh bmRpbmcgb2Ygd2h5IHRoZSBzdGFuZGFyZAo+IG1lY2hhbmlzbXMgYXJlIG5vdCBzdWl0YWJsZSwg aXQgaXMgcHJlbWF0dXJlIGFuZCBuYWl2ZSB0byByZS1pbnZlbnQgYSB3aGVlbC4KPiAKCldpdGgg c3lzbG9nIGFuZCBsb2dyb3RhdGUgeW91IHdpbGwgc3RpbGwgZW5kIHVwIGZpbGxpbmcgdXAgeW91 ciBkaXNrLgpMb2dyb3RhdGUgY2FuJ3QgYWN0aXZlbHkgcm90YXRlIGxvZyBmaWxlcy4KCllvdSBj YW4ndCBqdXN0IHRhcCBzeXNsb2cgdG8gUUVNVSBhdCB0aGUgbW9tZW50IHVubGVzcyB5b3UgdXNl IHRoZQpzY3JpcHQgSSBzZW50IHRvIFhTQS0xODAgc2VjdXJpdHlAIGRpc2N1c3Npb24uIFRoYXQn cyBzdGlsbCBhIGhhY2tlZCB1cApzb2x1dGlvbi4KCkkgYWN0dWFsbHkgZG9uJ3QgbWluZCBoYXZp bmcgc3lzbG9nIGRlYWwgd2l0aCB0aG9zZSwgYnV0IHdlIG5lZWQgdG8KcHJvdmlkZSBzb21lIG5v dC1zby1oYWNrZWQtdXAgd2F5IGZvciBkb2luZyBpdC4KCj4gPgo+ID4gRldJVywgdGhlIGxpYnZp cnQgcHJvamVjdCBoYXMgZXhhY3RseSB0aGUgc2FtZSBwcm9ibGVtLCBhbmQgdGhleSBkaWQgdGhl Cj4gPiBhbmFsb2cgb2Ygd2hhdCBXZWkgaXMgcHJvcG9zaW5nIC0tIHRoZXkgYWRkZWQgYSBuZXcg ZGFlbW9uLCB2aXJ0bG9nZCwgdG8KPiA+IGhhbmRsZSBhbGwgdGhlIGNvbnNvbGUgYW5kIGRlYnVn IGxvZyByb3RhdGlvbiBpbiBhIGZhc2hpb24gcmVzaXN0YW50IHRvCj4gPiBEb1NpbmcuICBXaXRo b3V0IHJlYWRpbmcgdGhlaXIgZGlzY3Vzc2lvbiwgaXQncyByZWFzb25hYmxlIHRvIGFzc3VtZQo+ ID4gdGhhdCB1c2luZyBzeXN0ZW0gbG9nZ2luZyB3YXMgYXQgbGVhc3QgY29uc2lkZXJlZCB1c2lu ZyBzeXN0ZW0tbGV2ZWwKPiA+IGxvZ2dpbmcgYmVmb3JlIGRlY2lkaW5nIHRvIHdyaXRlIHRoZWly IG93biBjb2RlLgo+IAo+IEp1c3QgYmVjYXVzZSBhIHByb2plY3QgZm9sbG93ZWQgdGhpcyBwYXRo LCBkb2Vzbid0IG1lYW4gaXQgaXMgYSBzZW5zaWJsZQo+IHRoaW5nIHRvIGRvLgo+IAo+ID4KPiA+ IFdlIGFscmVhZHkgaGF2ZSBhIGRhZW1vbiB0byBkbyBsb2dnaW5nIG9mIGNvbnNvbGVzOyBpdCBq dXN0IGRvZXNuJ3QgaGF2ZQo+ID4gYW55IG9mIHRoZSBsb2dyb3RhdGUgZmVhdHVyZXMgdGhhdCBh cmUgbmVlZGVkIHRvIG1ha2UgaXQgcm9idXN0IGFnYWluc3QKPiA+IERvUy4gIFRoZXJlJ3Mgbm8g c2Vuc2UgaW4gaGF2aW5nIGxvZyByb3RhdGlvbiBjb2RlIGluIHR3byBwbGFjZXMsIHNvCj4gPiB1 cGdyYWRpbmcgeGVuY29uc29sZWQgdG8gZG8gd2hhdCB2aXJ0bG9nZCBpcyBkb2luZyBtYWtlcyBt b3JlIHNlbnNlIHRoYW4KPiA+IHNheSwgZWl0aGVyIHdyaXRpbmcgb3VyIG93biwgb3Igc3RlYWxp bmcgdmlydGxvZ2QuCj4gCj4gV2UgaGF2ZSBhIGRhZW1vbiBmb3IgY29ubmVjdGluZyBsb2NhbCBw dHkncyB0byBndWVzdCBjb25zb2xlcywgd2hpY2ggaGFzCj4gYSBkaXNhYmxlZC1ieS1kZWZhdWx0 IG9wdGlvbiB0byBsb2cgY29uc29sZXMgdG8gZmlsZXMuCj4gCj4gPgo+ID4+IEkgdGhpbmsgdGhl IGJlc3Qgc29sdXRpb24gaGVyZSBpcyB0byBtYW5hZ2UgZXhwZWN0YXRpb25zLCBub3QgdG8gZm9s bG93Cj4gPj4gdGhlIGtuZWVqZXJrIHJlYWN0aW9uIGFuZCBoYWNrIHVwIGEgc29sdXRpb24uCj4g PiBIb3BlZnVsbHkgeW91IGNhbiBzZWUgbm93IHRoYXQgdGhpcyBpcyBub3QgYSBrbmVlLWplcmsg c29sdXRpb24uIDotKQo+ID4gVGhhbmsgeW91IGZvciBtYWtpbmcgc3VyZSBvdGhlciBvcHRpb25z IGlzIHByb3Blcmx5IGRpc2N1c3NlZCBpbiBwdWJsaWMuCj4gPgo+ID4gVHlpbmcgb2ZmIGEgZmV3 IHJhbmRvbSB0ZWNobmljYWwgdGhyZWFkczoKPiA+Cj4gPiBXaGF0IGRvZXMgeGFwaSBkbyBhdCB0 aGUgbW9tZW50Pwo+IAo+IFBsYWluIHN5c2xvZyBhbmQgbG9ncm90YXRlLiAgTm8gZnJpbGxzLgoK SG93IGRvZXMgWEFQSSByZWRpcmVjdCBRRU1VJ3Mgc3RkZXJyIHRvIHN5c2xvZz8KCklmIGl0IGlz bid0IHRvbyBjb21wbGV4IEkgd291bGQgbGlrZSB0byBhZGQgdGhhdCB0byBsaWJ4bCByZWdhcmRs ZXNzIG9mCndoZXRoZXIgd2Ugd2FudCB0byB1c2UgeGVuY29uc29sZWQgb3Igbm90LgoKPiAKPiA+ IFJlIHRoZSBpbnRlcmZhY2UsIGl0IHNlZW1zIGxpa2UgaGF2aW5nIHRoZSBvcHRpb24gdG8gbG9n IHRvIHtub3RoaW5nLAo+ID4gZmlsZSwgcGlwZSwgeGVuY29uc29sZWR9IHNob3VsZCBjb3ZlciB0 aGUgcmVhc29uYmxlIHVzZWNhc2VzOiBsaWJ2aXJ0Cj4gPiBmb3IgaW5zdGFuY2UgY291bGQgdGFr ZSB0aGUgcGlwZSBhbmQgcGlwZSBpdCB0byB2aXJ0bG9nZCAoYW5kIHhhcGkgY291bGQKPiA+IGRv IHNvbWV0aGluZyBzaW1pbGFyIGlmIGl0IHdhbnRlZCkuCj4gCj4gTXkgbWFpbiBjb25jZXJuIGlz IHRoYXQgdGhpcyBpcyByZS1pbnZlbnRpbmcgYSB3aGVlbCB3aGljaCBub29uZSB3aWxsIHVzZS4K PiAKCkl0J3MgZ29pbmcgdG8gYmUgdXNlZCBieSBhIGRlZmF1bHQgaW5zdGFsbGF0aW9uIG9mIG9w ZW4gc291cmNlIFhlbi4KCkJ1dCwgSSB3b3VsZCBsaWtlIHRvIGRldmlzZSBhIG1lY2hhbmlzbSB0 aGF0IHN5c3RlbSBhZG1pbmlzdHJhdG9yIGNhbgpvcHQgb3V0LgoKPiA+Cj4gPiBSZWdhcmRpbmcg cWVtdSBncmluZGluZyB0byBhIGhhbHQgaWYgeGVuY29uc29sZWQgZGllczogVGhhdCBtYXkgYmUK PiA+IHNvbWV0aGluZyB3b3J0aCBjb25zaWRlcmluZzsgYnV0IGF0IGxlYXN0IG9uIExpbnV4IHlv dSBjYW4gc2V0IHBpcGVzIGFzCj4gPiBPX05PTkJMT0NLIGFuZCB5b3UnbGwgZ2V0IEVBR0FJTiB3 aGVuIHdyaXRpbmcgdG8gYSBmdWxsIHBpcGUgaW5zdGVhZCBvZgo+ID4gYmxvY2tpbmcuICBXZSdk IGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGVycm9yIGRpZG4ndCBjYXVzZSBhbnkgb3RoZXIK PiA+IGZhaWx1cmVzIChpZ25vcmluZyBpdCBhbmQgbGV0dGluZyB0aGUgd3JpdGUgZHJvcCBpcyBw cm9iYWJseSB0aGUgYmVzdAo+ID4gdGhpbmcpLCBidXQgdGhhdCBzaG91bGRuJ3QgYmUgdGVycmli bHkgZGlmZmljdWx0IHRvIGRvLgo+IAo+IHN0ZGVyciByZWFsbHkgc2hvdWxkbid0IGJlIGluIGEg cG9zaXRpb24gd2hlcmUgaXQgZ2V0cyAtRUFHQUlOcyBpbiBhCj4gY29tbW9uIGNhc2UuCj4gCgpJ IGFncmVlLgoKV2VpLgoKPiB+QW5kcmV3CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=