From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v15] This is the ABI for the two halves of a para-virtualized sound driver to communicate with each to other. Date: Fri, 27 Jan 2017 17:50:36 +0200 Message-ID: <028a91b8-76ba-0a9a-5c9c-e739e4852d9e@gmail.com> References: <1480943129-20524-1-git-send-email-andr2000@gmail.com> <1480943129-20524-2-git-send-email-andr2000@gmail.com> <20170124191352.GA20813@char.us.oracle.com> <20170127151433.GC1250@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170127151433.GC1250@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: lars.kurth@citrix.com, iurii.konovalenko@globallogic.com, vlad.babchuk@gmail.com, ian.jackson@eu.citrix.com, dario.faggioli@citrix.com, tim@xen.org, julien.grall@arm.com, andrii.anisov@gmail.com, olekstysh@gmail.com, embedded-pv-devel@lists.xenproject.org, al1img@gmail.com, david.vrabel@citrix.com, JBeulich@suse.com, xen-devel@lists.xenproject.org, oleksandr.dmytryshyn@globallogic.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org dGhhbmsgeW91IGZvciBjb21tZW50cywgcGxlYXNlIGZpbmQgYW5zd2VycyBiZWxvdwoKQ2FuIHdl IHBsZWFzZSBzd2l0Y2ggdG8gdjE2IGRpc2N1c3Npb24gYXMgdjE1IHZzIHYxNiBpcwphIGJpZyBj aGFuZ2U/CgpPbiAwMS8yNy8yMDE3IDA1OjE0IFBNLCBLb25yYWQgUnplc3p1dGVrIFdpbGsgd3Jv dGU6Cj4gT24gVGh1LCBKYW4gMjYsIDIwMTcgYXQgMTI6MDI6NDlQTSArMDIwMCwgT2xla3NhbmRy IEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+IEhpLCBLb25yYWQhCj4+Cj4+IEZpcnN0IG9mIGFsbCB0 aGFuayB5b3UgdmVyeSBtdWNoIGZvciB0aGUgdmFsdWFibGUgY29tbWVudHMKPj4KPj4gYW5kIHlv dXIgdGltZSEKPj4KPj4gVGhlIG51bWJlciBvZiBjaGFuZ2VzIChtb3N0bHkgaW4gZGVzY3JpcHRp b24pIGlzIGdvaW5nIHRvCj4+Cj4+IGJlIGh1Z2UsIHNvIGRvIHlvdSB0aGluayBJIGNhbiBwdWJs aXNoIHNvbWV0aGluZyBsaWtlCj4+Cj4+ICJSRkMgdjE2IiBzbyB3ZSBjYW4gZGlzY3VzcyB0aGUg dXBkYXRlZCBwYXRjaD8KPiBSRkMgc2FkbHkgbWVhbnMgZm9sa3MgYXJlIGdvaW5nIHRvIG1vc3Rs eSBpZ25vcmUgaXQuCj4gSSB3b3VsZCBwcmVmZXIgeW91IGRpZCBub3QgdXNlIFJGQyBhdCB0aGlz IHN0YWdlIGJ1dCBqdXN0Cj4gZGlkIHYxNi4KPiAuLnNuaXAuLgpzdXJlCj4+Pj4gKyAqIEV4YW1w bGUgZm9yIHRoZSBmcm9udGVuZCBydW5uaW5nIGluIGRvbWFpbiA1LCBpbnN0YW5jZSBvZiB0aGUg ZHJpdmVyCj4+Pj4gKyAqIGluIHRoZSBmcm9udCBpcyAwIChzaW5nbGUgb3IgZmlyc3QgUFYgZHJp dmVyKSwgZGV2aWNlIGlkIDIsCj4+Pj4gKyAqIGZpcnN0IHN0cmVhbSAoMCk6Cj4+Pj4gKyAqIC9s b2NhbC9kb21haW4vPGZyb250ZW5kX2lkPi9kZXZpY2UvdnNuZC88ZHJ2X2lkeD4vCj4+Pj4gKyAq ICAgICAgICAgZGV2aWNlLzxkZXZfaWQ+L3N0cmVhbS88c3RyZWFtX2lkeD4vdHlwZSA9ICJwIgo+ Pj4+ICsgKiAvbG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9kZXZpY2UvMi9zdHJlYW0vMC90 eXBlID0gInAiCj4+PiBXaHkgZG8geW91IG5lZWQgJ2RldmljZScgPwo+PiBqdXN0IGZvciBjbGFy aXR5OiB0aGUgaGllcmFyY2h5IG9mIHRoZSBzb3VuZCBkcml2ZXIgd291bGQKPj4gYmUgdGhhdCBh IGRldmljZSBtYXkgaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgc3RyZWFtcy4KPiBBbmQgaXQganVz dCBvY2N1cmVkIHRvIG1lIHRoYXQgeW91IGNvdWxkIGFsc28gaW1wbHkgdGhhdAo+IGVhY2ggZGV2 aWNlIGhhcyBhbiBzdHJlYW0gd2l0aG91dCB0aGUgJ3N0cmVhbScgaW4gaXQuCj4KPiBTbwo+Cj4g L2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvMi8wL3R5cGUgPSAicCIKPgo+IEFuZCB0aGUg Zm9ybWF0IGlzOgo+IC9sb2NhbC9kb21haW4vPGZyb250LWlkPi9kZXZpY2UvdnNuZC88aW5zdGFu Y2Ugb2YgUFYgZHJpdmVyPi88ZGV2aWNlLWlkPi88c3RyZWFtLWlkPgpvaywgc28gd2UnbGwgZW5k IHVwIHdpdGggc29tZXRoaW5nIGxpa2U6CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gQmFja2VuZCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi9sb2NhbC9k b21haW4vMC9iYWNrZW5kL3ZzbmQvMS8wL2Zyb250ZW5kLWlkID0gIjEiCi9sb2NhbC9kb21haW4v MC9iYWNrZW5kL3ZzbmQvMS8wL2Zyb250ZW5kID0gIi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNu ZC8wIgovbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzEvMC9zdGF0ZSA9ICI0IgovbG9jYWwv ZG9tYWluLzAvYmFja2VuZC92c25kLzEvMC92ZXJzaW9ucyA9ICIxLDIiCgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBDYXJkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL3ZlcnNpb24gPSAiMSIKL2xvY2FsL2RvbWFpbi8xL2Rl dmljZS92c25kLzAvc2hvcnQtbmFtZSA9ICJDYXJkIHNob3J0IG5hbWUiCi9sb2NhbC9kb21haW4v MS9kZXZpY2UvdnNuZC8wL2xvbmctbmFtZSA9ICJDYXJkIGxvbmcgbmFtZSIKL2xvY2FsL2RvbWFp bi8xL2RldmljZS92c25kLzAvc2FtcGxlLXJhdGVzID0gIjgwMDAsMzIwMDAsNDQxMDAsNDgwMDAs OTYwMDAiCi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL3NhbXBsZS1mb3JtYXRzID0gInM4 LHU4LHMxNl9sZSxzMTZfYmUiCi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL2J1ZmZlci1z aXplID0gIjI2MjE0NCIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBDTSBkZXZpY2Ug MCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovbG9jYWwvZG9tYWluLzEvZGV2aWNlL3Zz bmQvMC8wL25hbWUgPSAiR2VuZXJhbCBhbmFsb2ciCi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNu ZC8wLzAvY2hhbm5lbHMtbWF4ID0gIjUiCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBT dHJlYW0gMCwgcGxheWJhY2sgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi9sb2NhbC9k b21haW4vMS9kZXZpY2UvdnNuZC8wLzAvMC90eXBlID0gInAiCi9sb2NhbC9kb21haW4vMS9kZXZp Y2UvdnNuZC8wLzAvMC9zYW1wbGUtZm9ybWF0cyA9ICJzOCx1OCIKL2xvY2FsL2RvbWFpbi8xL2Rl dmljZS92c25kLzAvMC8wL3VuaXF1ZS1pZCA9ICIwIgovbG9jYWwvZG9tYWluLzEvZGV2aWNlL3Zz bmQvMC8wLzAvcmluZy1yZWYgPSAiMzg2IgovbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8w LzAvZXZlbnQtY2hhbm5lbCA9ICIxNSIKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g UENNIGRldmljZSAzIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKL2xvY2FsL2Rv bWFpbi8xL2RldmljZS92c25kLzAvMy9uYW1lID0gIkhETUktMCIKL2xvY2FsL2RvbWFpbi8xL2Rl dmljZS92c25kLzAvMy9zYW1wbGUtcmF0ZXMgPSAiODAwMCwzMjAwMCw0NDEwMCIKCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdHJlYW0gMCwgY2FwdHVyZSAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMy8wL3R5cGUgPSAi YyIKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMy8wL3VuaXF1ZS1pZCA9ICIyIgovbG9j YWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8zLzAvcmluZy1yZWYgPSAiMzg3IgovbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZzbmQvMC8zLzAvZXZlbnQtY2hhbm5lbCA9ICIxNTEiCgpJcyB0aGlzIHdo YXQgeW91IHdvdWxkIGxpa2UgdG8gc2VlPwpJTU8sIGFsbCB0aGVzZSB2YWx1ZXMgZG8gbm90IGhl bHAgdW5kZXJzdGFuZGluZyB3aGF0IGl0IGlzLCBlLmcuCnRoaXMgaXMgZXF1YWwgdG8gbWUgaWYg d2UgaGF2ZQoKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvNTE3MTIvcXVldWUtMC9yaW5nLXJl ZiA9ICI4IgovbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC81MTcxMi9xdWV1ZS0wL2V2ZW50LWNo YW5uZWwgPSAiMyIKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvNTE3MTIvcXVldWUtMSA9ICIi Ci9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmJkLzUxNzEyL3F1ZXVlLTEvcmluZy1yZWYgPSAiOSIK CmFuZCB0aGVuIGRlY2lkZWQgdG8gZ28gd2l0aAoKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQv NTE3MTIvMC9yaW5nLXJlZiA9ICI4IgovbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC81MTcxMi8w L2V2ZW50LWNoYW5uZWwgPSAiMyIKL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvNTE3MTIvMS9y aW5nLXJlZiA9ICI5IgoKQ2FuIG9uZSBlYXNpbHkgdGVsbCB3aGF0IDAgb3IgMSBhZnRlciAiNTE3 MTIvIiBpcz8KClNvLCB3aGF0IGlzIHRoZSBmaW5hbCBkZWNpc2lvbiB0aGVuPwoKPiBUaG91Z2gg SSBoYXZlIGEgbGl0dGxlIG9mIHRyb3VibGUgd2l0aCB0aGUgJ2luc3RhbmNlIG9mIHRoZQo+IGRy aXZlcicuIEFyZSB5b3Ugc3VnZ2VzdGluZyB5b3Ugd291bGQgaGF2ZSBtdWx0aXBsZQo+IFBWIGRy aXZlcnMgb2YgJ3ZzbmQnPyBDYW4ndCB0aGUgbXVsdGlwbGUgZGV2aWNlIGlkcyBmdWxmaWxsIHRo aXM/Cml0IGlzIHBvc3NpYmxlLCBidXQgdGhlIG1haW4gdXNlLWNhc2Ugd2lsbCBoYXZlIGEgc2lu Z2xlClBWIGRyaXZlciB3aXRoIG11bHRpcGxlIFBDTSBkZXZpY2VzL3N0cmVhbXMKPgo+PiBTbywg ZnJvbSByZWFkYWJpbGl0eSBQT1YgSSB3b3VsZCBzdGlsbCBoYXZlICJkZXZpY2UiIGluIHBsYWNl Cj4+ICBGcm9tIHhlbnN0b3JlIGRvY3VtZW50YXRpb246ICJEYXRhIHNob3VsZCBnZW5lcmFsbHkg YmUKPj4gaHVtYW4tcmVhZGFibGUgZm9yIGVhc2Ugb2YgbWFuYWdlbWVudCBhbmQgZGVidWdnaW5n ICIKPj4gSSBhc3N1bWUgdGhpcyBhbHNvIGFwcGxpZXMgdG8gdGhlIHN0cnVjdHVyZSBhcyB3ZWxs Cj4+PiBDb3VsZCBub3QgdGhpcyBiZToKPj4+Cj4+PiAvbG9jYWwvZG9tYWluLzUvZGV2aWNlL3Zz bmQvMC8yL3N0cmVhbS8wL3R5cGUgPSAicCIgPwo+PiB0aGVuIG9uZSBoYXMgdG8ga25vdyB0aGF0 ICIyIiBzdGFuZHMgZm9yIGRldmljZS4KPj4gc2VlIGFib3ZlLCBJIHdvdWxkIGtlZXAgImRldmlj ZSIgaGVyZQo+Pj4KPj4+PiArICoKPj4+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIFBDTSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ICsg Kgo+Pj4+ICsgKiBFdmVyeSB2aXJ0dWFsaXplZCBzb3VuZCBmcm9udGVuZCBoYXMgc2V0IG9mIGRl dmljZXMgYW5kIHN0cmVhbXMsIGVhY2gKPj4+IGZyb250ZW5kIG9yIGJhY2tlbmQ/Cj4+Pgo+Pj4g SSB3b3VsZCB0aGluayBiYWNrZW5kIHNpbmNlIHRoaXMgaXMgc3RpbGwgdGhlIGJhY2tlbmQgc2Vj dGlvbj8KPj4geW91IGFyZSByaWdodCwgbW92ZWQgdG8gZnJvbnRlbmQncyBzZWN0aW9uCj4+Pj4g KyAqIGlzIGluZGl2aWR1YWxseSBjb25maWd1cmVkLiBQYXJ0IG9mIHRoZSBQQ00gY29uZmlndXJh dGlvbiBjYW4gYmUgZGVmaW5lZCBhdAo+Pj4+ICsgKiBoaWdoZXIgbGV2ZWwgYW5kIGJlIGZ1bGx5 IG9yIHBhcnRpYWxseSByZS11c2VkIGJ5IHRoZSB1bmRlcmx5aW5nIGxheWVycy4KPj4+PiArICog VGhlc2UgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlOgo+Pj4+ICsgKiAgbyBudW1iZXIgb2YgY2hh bm5lbHMgKG1pbi9tYXgpCj4+Pj4gKyAqICBvIHN1cHBvcnRlZCBzYW1wbGUgcmF0ZXMKPj4+PiAr ICogIG8gc3VwcG9ydGVkIHNhbXBsZSBmb3JtYXRzLgo+Pj4+ICsgKiBFLmcuIG9uZSBjYW4gZGVm aW5lIHRoZXNlIHZhbHVlcyBmb3IgdGhlIHdob2xlIGRyaXZlciwgZGV2aWNlIG9yIHN0cmVhbS4K Pj4+PiArICogRXZlcnkgdW5kZXJseWluZyBsYXllciBpbiB0dXJuIGNhbiByZS1kZWZpbmUgc29t ZSBvciBhbGwgb2YgdGhlbSB0byBiZXR0ZXIKPj4+PiArICogZml0IGl0cyBuZWVkcy4gRm9yIGV4 YW1wbGUsIGRyaXZlciBtYXkgZGVmaW5lIG51bWJlciBvZiBjaGFubmVscyB0byBiZQo+Pj4+ICsg KiBpbiBbMTsgOF0gcmFuZ2UsIGFuZCBzb21lIHBhcnRpY3VsYXIgc3RyZWFtIG1heSBiZSBsaW1p dGVkIHRvIFsxOyAyXSBvbmx5Lgo+Pj4+ICsgKiBUaGUgcnVsZSBpcyB0aGF0IHRoZSB1bmRlcmx5 aW5nIGxheWVyIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlIHVwcGVyIGxheWVyCj4+Pj4gKyAqIHJh bmdlLgo+Pj4gT0ssIHNvIHRoZXNlIGFyZSBtb3JlIG9mICdnbG9iYWwgb25lcyc/Cj4+IGtpbmQg b2YsIHdoYXQgaXMgbW9yZSB0aGV5IGNhbiBiZSAiZ2xvYmFsIiB0byBhbGwgdGhlCj4+IHVuZGVy bHlpbmcgbGV2ZWxzLCBlLmcuIGlmIGRldmljZSBjaGFuZ2VzIHNvbWUgb2YgdGhlCj4+IHBhcmFt ZXRlcnMgdGhleSBiZWNvbWUgYWRvcHRlZCBieSBzdHJlYW1zIGlmIG5vdAo+PiBleHBsaWNpdGx5 IGNvbmZpZ3VyZWQuIFRoZSBzYW1lIGlzIHRydWUgaWYgZGV2aWNlIGNoYW5nZXMKPj4gcGFyYW1l dGVycyBzZXQgYXQgdGhlIGNhcmQgbGV2ZWwuCj4+IFRoaXMgd2F5IG9uZSBjYW4gZWFzaWx5IHRh aWxvciBwYXJ0aWN1bGFyIHBpZWNlcyBvZiB0aGUKPj4gc3lzdGVtIHcvbyB3cml0aW5nIGFsbCBz ZXR0aW5ncyBhZ2Fpbgo+IEFyZSB0aGV5ICJnbG9iYWwiIHRvIHRoZSAiaW5zdGFuY2Ugb2YgdGhl IFBWIGRyaXZlcnMiIG9yIGFsbCB0aGUKPiBkZXZpY2UgaWRzPwp0aGV5IGFyZSBnbG9iYWwgdG8g dGhlIGZyb250ZW5kIGFuZCB0aGUgc2V0dGluZ3MKbGl2ZSBvbiBmcm9udGVuZCdzIHhlbnN0b3Jl IHBhdGguIFBsZWFzZSBjaGVjawpjb25maWd1cmF0aW9uIGV4YW1wbGUgaW4gdjE2Cj4KPiBJIHBy ZXN1bWUgdGhlIGxhdHRlciB3aGljaCBpcyB3aHkgeW91IG5lZWQgdG8gaGF2ZSBtdWx0aXBsZQo+ IGluc3RhbmNlcyBvZiB0aGUgUFYgZHJpdmVycyBzdXBwb3J0Pwo+Cj4gKFlvdSBtYXkgd2FudCB0 byBtZW50aW9uIHRoaXMgcmVxdWlyZW1lbnQgaW4gdGhlIHNlY3Rpb24gdGFsa2luZwo+IGFib3V0 IHRoZSBmb3JtYXQgb2YgaG93IHRoZSBzdHJ1Y3R1cmUgaXMgZXhwb3NlZCBpbiB0aGUgYmFja2Vu ZAo+IGFuZCBmcm9udGVuZCkuCkkndmUgYWxyZWFkeSBwdXQgZnVsbCBjb25maWd1cmF0aW9uIHhl bnN0b3JlIHRyZWUgd2l0aAp2YWx1ZXMgZm9yIGVkdWNhdGlvbiBwdXJwb3Nlcywgc28gb25lIGNh biBzZWUgaG93IGl0IGdldHMKY29uZmlndXJlZAo+Pj4+ICsgKgo+Pj4+ICsgKiBOb3RlOiBpZiBh bnkgb2YgdGhlIHZhbHVlcyBhcmUgbm90IGRlZmluZWQgdGhlbiBQViBkcml2ZXIgc2hvdWxkIHVz ZQo+Pj4+ICsgKiBpdHMgZGVmYXVsdCB2YWx1ZXMgaW5zdGVhZC4KPj4+IEhvdyBpcyB0aGF0IHN1 cHBvc2UgdG8gd29yaz8gV2hhdCBpZiB0aGUgUFYgZHJpdmVyIGJ5IGRlZmF1bHQgd2FudHMKPj4+ IHRvIHVzZSBzYXkgMzE0MTU2IGNoYW5uZWxzIGFuZCB0aGUgYmFja2VuZCBkb2VzIG5vdCBleHBv c2UgYW55PyBDYW4KPj4+IGl0IHVzZSB0aGF0PyBJIHByZXN1bWUgaXQgY291bGQgdHJ5Li4gYW5k IGl0IHdvdWxkIGZhaWwgYnV0IHRoYXQKPj4+IGhhcmRseSBzZWVtcyBuaWNlLgo+Pj4KPj4gSSB3 aWxsIHByb2JhYmx5IHJlbW92ZSB0aGlzIHNlbnRlbmNlIGFuZCB0aGUgYmVsb3cgYXQgYWxsLgo+ PiBJZiBub3QgZGVmaW5lZCB0aGlzIGNvdWxkIG1lYW4gYW4gZXJyb3Igc3RhdGUKPj4+PiArICoK Pj4+PiArICogY2hhbm5lbHMtbWluCj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50 Pgo+Pj4gdWludDMyX3QKPj4+PiArICoKPj4+PiArICogICAgICBUaGUgbWluaW11bSBhbW91bnQg b2YgY2hhbm5lbHMgdGhhdCBpcyBzdXBwb3J0ZWQuCj4+Pj4gKyAqICAgICAgTXVzdCBiZSBhdCBs ZWFzdCAxLiBJZiBub3QgZGVmaW5lZCB0aGVuIHVzZSBmcm9udGVuZCdzIGRlZmF1bHQuCj4+PiBU aGlzIGlzIG9kZC4gVGhpcyB3aG9sZSBzZWN0aW9uIGlzIGZvciB0aGUgYmFja2VuZCwgc28gaG93 IGNhbiB0aGUgYmFja2VuZAo+Pj4gbm90IGhhdmUgdGhpcyBkZWZpbmVkPwo+Pj4KPj4+IERvIHlv dSBtZWFuIHRvIHNheSB0aGF0IHRoaXMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsPyBQZXJoYXBzCj4+ PiB0aGVuIHNheSByaWdodCBiZWZvcmUgJ1RoZSBtaW5pbXVtJyBpbmNsdWRlICcob3B0aW9uYWwp Jwo+Pj4KPj4+IEFueWhvdyB3aGVyZSBkbyB5b3UgZW52aXNpb24gdGhpcyBvcHRpb25hbCBnbG9i YWwgdmFsdWUgdG8gYmU/Cj4+Pgo+Pj4gL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdnNuZC81L2No YW5uZWxzLVttaW58bWF4XSA/Cj4+Pgo+Pj4gUGVyaGFwcyBtZW50aW9uIHRoYXQgaW4gdGhlIHN0 YXJ0IG9mIHRoaXMgc2VjdGlvbjoKPj4+Cj4+PiBUaGVzZSBnbG9iYWwgdmFsdWVzIGFyZSB1bmRl ciB0aGUgYmFja2VuZCAndnNuZCcgZGlyZWN0b3J5LCBhcwo+Pj4gc286Cj4+Pgo+Pj4gL2xvY2Fs L2RvbWFpbi8wL2JhY2tlbmRzL3ZzbmQvPGZyb250LWlkPi9jaGFubmVscy1bbWlufG1heF0KPj4+ Cj4+PiBUaG91Z2h0IEkgdGhpbmsgdGhlcmUgaXMgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvCj4+ PiBzYXkgdGhpcy4uCj4+IHdlbGwsIHRoZSBjb25mdXNpb24gY29tZXMgZnJvbSB0aGUgZmFjdCB0 aGF0IEkgaGF2ZQo+PiBkZXNjcmliZWQgYWxsIHRoaXMgdW5kZXIgYmFja2VuZCdzIHNlY3Rpb24K Pj4gbm93IHdoZW4gSSBtb3ZlIGl0IHRvIHRoZSBmcm9udGVuZCdzIHNlY3Rpb24gaXQgc2hvdWxk Cj4+IG1ha2UgbW9yZSBzZW5zZQo+IE9LLCBidXQgZG8gcGxlYXNlIGhhdmUgYW4gJ2JhY2tlbmQn IHNlY3Rpb24uCmRvbmUsCkkgaGF2ZSBjbGVhcmx5KD8pIGRlZmluZWQgYm90aCBmcm9udGVuZCBh bmQgYmFja2VuZCBlbnRyaWVzIGluIHYxNgo+Pj4+ICsgKgo+Pj4+ICsgKiBjaGFubmVscy1tYXgK Pj4+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+Cj4+PiB1aW50MzJfdAo+PiB1aW50 OF90Cj4+Pj4gKyAqCj4+Pj4gKyAqICAgICAgVGhlIG1heGltdW0gYW1vdW50IG9mIGNoYW5uZWxz IHRoYXQgaXMgc3VwcG9ydGVkLgo+Pj4+ICsgKiAgICAgIE11c3QgYmUgYXQgbGVhc3QgPGNoYW5u ZWxzLW1pbj4uIElmIG5vdCBkZWZpbmVkIHRoZW4gdXNlIGZyb250ZW5kJ3MKPj4+PiArICogICAg ICBkZWZhdWx0Lgo+Pj4gSSBhbSBzdGlsbCBoYXZpbmcgdHJvdWJsZSB1bmRlcnN0YW5kaW5nIGhv dyB0aGUgYmFja2VuZCBpcyBzdXBwb3NlCj4+PiB0byB1c2UgdGhlIGZyb250ZW5kJ3MgZGVmYXVs dC4KPj4+Cj4+PiBQZXJoYXBzIHlvdSB3YW50IHRvIHNheToKPj4+Cj4+PiBJZiB0aGlzIHZhbHVl IGlzIG5vdCBleHBvc2VkIGJ5IHRoZSBiYWNrZW5kIHRoZSBmcm9udGVuZAo+Pj4gaXMgcGVybWl0 dGVkIHRvIHVzZSBpdHMgZGVmYXVsdCB2YWx1ZXMuCj4+Pgo+Pj4gPwo+PiBtb3ZlZCB0byBmcm9u dGVuZCdzIHNlY3Rpb24KPj4+PiArICoKPj4+PiArICogc2FtcGxlLXJhdGVzCj4+Pj4gKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIHVpbnRzPgo+Pj4gLi4gb2YgdWludDMyX3QKPj4g ZG9uZQo+Pj4+ICsgKgo+Pj4+ICsgKiAgICAgIExpc3Qgb2Ygc3VwcG9ydGVkIHNhbXBsZSByYXRl cyBzZXBhcmF0ZWQgYnkgWEVOU05EX0xJU1RfU0VQQVJBVE9SLgo+Pj4+ICsgKiAgICAgIElmIG5v dCBkZWZpbmVkIHRoZW4gdXNlIGZyb250ZW5kJ3MgZGVmYXVsdC4gU2FtcGxlIHJhdGVzIGFyZSBl eHByZXNzZWQKPj4+IEFoYWluIHRoaXMgJ0lmIG5vdCBkZWZpbmVkIHRoZW4gdXNlIGZyb250ZW4n ZHMgZGVmYXVsdCcgY291bGQgYmUgd3JpdHRlbgo+Pj4gYSBiaXQgZGlmZmVyZW50bHkuCj4+IG1v dmVkIHRvIGZyb250ZW5kJ3Mgc2VjdGlvbgo+Pj4+ICsgKiAgICAgIGFzIGEgbGlzdCBvZiBkZWNp bWFsIHZhbHVlcyB3L28gYW55IG9yZGVyaW5nIHJlcXVpcmVtZW50Lgo+Pj4+ICsgKgo+Pj4+ICsg KiBzYW1wbGUtZm9ybWF0cwo+Pj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBvZiBY RU5TTkRfUENNX0ZPUk1BVF9YWFhfU1RSPgo+Pj4+ICsgKgo+Pj4+ICsgKiAgICAgIExpc3Qgb2Yg c3VwcG9ydGVkIHNhbXBsZSBmb3JtYXRzIHNlcGFyYXRlZCBieSBYRU5TTkRfTElTVF9TRVBBUkFU T1IuCj4+Pj4gKyAqICAgICAgSWYgbm90IGRlZmluZWQgdGhlbiB1c2UgZnJvbnRlbmQncyBkZWZh dWx0Lgo+Pj4gQWdhaW4sIHRoaXMgZG9lcyBub3Qgc291bmQgcmlnaHQuIFRoZSBiYWNrZW5kIGhh cyBubyBjbHVlIHdoYXQKPj4+IHRoZSBmcm9udGVuZCBkZWZhdWx0cyBhcmUuCj4+IG1vdmVkIHRv IGZyb250ZW5kJ3Mgc2VjdGlvbgo+Pj4+ICsgKgo+Pj4+ICsgKiBidWZmZXItc2l6ZQo+Pj4+ICsg KiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KPj4+IHVpbnQzMl90Cj4+IGRvbmUKPj4+PiAr ICoKPj4+PiArICogICAgICBUaGUgbWF4aW11bSBzaXplIGluIG9jdGV0cyBvZiB0aGUgYnVmZmVy IHRvIGFsbG9jYXRlIHBlciBzdHJlYW0uCj4+Pj4gKyAqCj4+Pj4gKyAqIEV4YW1wbGUgY29uZmln dXJhdGlvbjoKPj4+PiArICoKPj4+PiArICogRHJpdmVyIGNvbmZpZ3VyYXRpb24gdXNlZCBieSBh bGwgc3RyZWFtczoKPj4+PiArICogL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvc2FtcGxl LWZvcm1hdHMgPSAiczg7dTg7czE2X2xlO3MxNl9iZSIKPj4+IEh1aD8gQnV0IHRoaXMgaXMgYSBi YWNrZW5kIHZhbHVlPyBEb24ndCB5b3UgbWVhbjoKPj4+Cj4+PiAvbG9jYWwvZG9tYWluLzAvYmFj a2VuZC92c25kLzUvc2FtcGxlLWZvcm1hdHMgPSAiczg7dTg7czE2X2xlO3MxNl9iZSIKPj4+ID8K Pj4gbW92ZWQgdG8gZnJvbnRlbmQncyBzZWN0aW9uCj4+Pj4gKyAqIFN0cmVhbSBvdmVycmlkZXMg c2FtcGxlIHJhdGVzIHN1cHBvcnRlZDoKPj4+IC1FUEFSU0UKPj4gZG9uZQo+Pj4+ICsgKiAvbG9j YWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9kZXZpY2UvMi9zdHJlYW0vMC9zYW1wbGUtcmF0ZXMg PQo+Pj4+ICsgKiAgICAgICAgIjgwMDA7MjIwNTA7NDQxMDA7NDgwMDAiCj4+PiAvbG9jYWwvZG9t YWluLzAvYmFja2VuZC92c25kLzUvMi9zdHJlYW0vMC9zYW1wbGUtcmF0ZXMgPSI4MDAwOzIyMDUw OzQ0MTAwOzQ4MDAwIgo+Pj4KPj4+IEJ1dCB0aGF0IGlzIHdyb25nIGFzIHRoaXMgc2VjdGlvbiBp cyBhYm91dCBnbG9iYWwgdmFsdWVzIHNvIHRoZXkKPj4+IHdvdWxkIGJlIG1vcmUgbGlrZToKPj4+ Cj4+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvc2FtcGxlLXJhdGVzID0iODAwMDsy MjA1MDs0NDEwMDs0ODAwMCIKPj4+Cj4+PiA/Cj4+IG5vdCBhbnltb3JlLCBhcyBJIG1vdmUgdGhl c2UgdG8gZnJvbnRlbmQncyBjb25maWd1cmF0aW9uCj4+Pj4gKyAqCj4+Pj4gKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gVmlydHVhbCBzb3VuZCBjYXJkIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4+Pj4gKyAqIHNob3J0LW5hbWUKPj4+PiArICogICAgICBWYWx1ZXM6ICAg ICAgICAgPGNoYXJbMzJdPgo+Pj4+ICsgKgo+Pj4+ICsgKiAgICAgIFNob3J0IG5hbWUgb2YgdGhl IHZpcnR1YWwgc291bmQgY2FyZC4gT3B0aW9uYWwuCj4+Pj4gKyAqCj4+Pj4gKyAqIGxvbmctbmFt ZQo+Pj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8Y2hhcls4MF0+Cj4+Pj4gKyAqCj4+Pj4g KyAqICAgICAgTG9uZyBuYW1lIG9mIHRoZSB2aXJ0dWFsIHNvdW5kIGNhcmQuIE9wdGlvbmFsLgo+ Pj4+ICsgKgo+Pj4+ICsgKiBGb3IgZXhhbXBsZSwKPj4+PiArICogL2xvY2FsL2RvbWFpbi81L2Rl dmljZS92c25kLzAvc2hvcnQtbmFtZSA9ICJWaXJ0dWFsIGF1ZGlvIgo+Pj4+ICsgKiAvbG9jYWwv ZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9sb25nLW5hbWUgPQo+Pj4+ICsgKiAgICAgICAgICJWaXJ0 dWFsIGF1ZGlvIGF0IGNlbnRlciBzdGFjayIKPj4+IFRoaXMgc2hvdWxkIGJlIGludmVydGVkLiBU aGF0IGlzIHRoaXMgaXMgb24gdGhlIGJhY2tlbmQKPj4+IHNpZGU6Cj4+Pgo+Pj4gL2xvY2FsL2Rv bWFpbi8wL2JhY2tlbmQvdnNuZC81LzAvMi9zaG9ydC1uYW1lID0gIlZpcnR1YWwgYXVkaW8iCj4+ Pgo+Pj4gQW5kIHNvIG9uLgo+Pj4KPj4+IEFsc28gaG93IGNvbWUgeW91ciBleGFtcGxlIGlzIG1p c3NpbmcgdGhlIGRldmljZSBwYXJ0Pwo+PiBJIHdpbGwgcHV0IGEgY29tcGxldGUgY29uZmlndXJh dGlvbiBleGFtcGxlCj4+PiBXYWl0LCB3aHkgZG8geW91IGhhdmUgYW4gYW4gZGV2aWNlIGJlbG93 IGJ1dCAuLi4gbm90IGhlcmU/Cj4+PiBXaHkgbm90IGdyb3VwIHRoZW0gdG9nZXRoZXI/Cj4+Pgo+ Pj4gVGhhdCBpcyB3aHkgbm90IGhhdmUgJ3Nob3J0LW5hbWUnICwnbG9uZy1uYW1lJyBhbmQgJ25h bWUnIGluCj4+PiB0aGUgc2FtZSBkaXJlY3Rvcnk/Cj4+IG5hbWUgaXMgZm9yIGEgc3RyZWFtOyBz aG9ydC9sb25nIGZvciB0aGUgY2FyZAo+Pj4+ICsgKgo+Pj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIERldmljZSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+Pj4+ICsgKiBuYW1lCj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxjaGFyWzgw XT4KPj4+PiArICoKPj4+PiArICogICAgICBOYW1lIG9mIHRoZSBzb3VuZCBkZXZpY2Ugd2l0aGlu IHRoZSB2aXJ0dWFsIHNvdW5kIGNhcmQuIE9wdGlvbmFsLgo+Pj4+ICsgKgo+Pj4+ICsgKiBGb3Ig ZXhhbXBsZSwKPj4+PiArICogL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvZGV2aWNlLzAv bmFtZSA9ICJHZW5lcmFsIGFuYWxvZyIKPj4+IFRoZSBleGFtcGxlIHlvdSB1c2VkIGF0IHN0YXJ0 IGhhZCBhIGRldmljZSB2YWx1ZSBvZiAyLiBJdCBtYXkKPj4+IGJlIGJldHRlciB0byB1c2UgdGhh dCBoZXJlLCBzbyA6Cj4+Pgo+Pj4gL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdnNuZC81LzIvbmFt ZSA9ICJHZW5lcmFsIGFuYWxvZyIKPj4gZG9uZQo+Pj4+ICsgKgo+Pj4+ICsgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4+Pj4gKyAqCj4+Pj4gKyAqIHR5cGUKPj4+PiArICogICAgICBWYWx1ZXM6ICAg ICAgICAgInAiLCAiYyIKPj4+PiArICoKPj4+PiArICogICAgICBTdHJlYW0gdHlwZTogInAiIC0g cGxheWJhY2sgc3RyZWFtLCAiYyIgLSBjYXB0dXJlIHN0cmVhbQo+Pj4+ICsgKgo+Pj4+ICsgKiAg ICAgIElmIGJvdGggY2FwdHVyZSBhbmQgcGxheWJhY2sgYXJlIG5lZWRlZCB0aGVuIHR3byBzdHJl YW1zIG5lZWQgdG8gYmUKPj4+PiArICogICAgICBkZWZpbmVkIHVuZGVyIHRoZSBzYW1lIGRldmlj ZS4gRm9yIGV4YW1wbGUsCj4+Pj4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25k LzAvZGV2aWNlLzAvc3RyZWFtLzAvdHlwZSA9ICJwIgo+Pj4+ICsgKiAgICAgIC9sb2NhbC9kb21h aW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8wL3N0cmVhbS8xL3R5cGUgPSAiYyIKPj4+IE9LLCBi dXQgYWdhaW46Cj4+PiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvMi8wL3N0cmVhbS8w L3R5cGUgPSAicCIKPj4+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvNS8yLzAvc3RyZWFt LzEvdHlwZSA9ICJjIgo+Pj4KPj4+IERvIHlvdSB3YW50IGFsc28gYW4gJ2ZlYXR1cmUtdmVyc2lv bicgdG8gaWRlbnRpZnkgd2hhdCB2ZXJzaW9uCj4+PiB0aGUgYmFja2VuZCBleHBvc2VzPwo+Pj4K Pj4gd2lsbCBhZGQgdGhhdAo+Pj4+ICsgKgo+Pj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+ PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQgWGVuQnVzIE5vZGVzCj4+ Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+ICsgKgo+Pj4+ICsgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4+PiArICoKPj4+PiArICogVGhlc2UgYXJlIHBlciBzdHJlYW0uCj4+PiAuLiB3aGlj aCBtZWFucyB0aGV5IGFyZSBhbHNvIHBlciBkZXZpY2UgcmlnaHQ/Cj4+Pgo+Pj4gU28gb25lIGNh biBoYXZlIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4+Pgo+Pj4gL2xvY2FsL2RvbWFpbi81L2Rldmlj ZS92c25kLzIvc3RyZWFtLzAvZXZlbnQtY2hhbm5lbAo+Pj4gL2xvY2FsL2RvbWFpbi81L2Rldmlj ZS92c25kLzAvc3RyZWFtLzAvZXZlbnQtY2hhbm5lbAo+Pj4gL2xvY2FsL2RvbWFpbi81L2Rldmlj ZS92c25kLzIvc3RyZWFtLzEvZXZlbnQtY2hhbm5lbAo+Pj4gL2xvY2FsL2RvbWFpbi81L2Rldmlj ZS92c25kLzAvc3RyZWFtLzAvZXZlbnQtY2hhbm5lbAo+PiB5ZXMsIGV2ZXJ5IHN0cmVhbSBoYXMg aXRzIG93biBjb21tdW5pY2F0aW9uIGNoYW5uZWwKPj4+PiArICoKPj4+PiArICogZXZlbnQtY2hh bm5lbAo+Pj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KPj4+IHVpbnQzMl90Cj4+ IGRvbmUKPj4+PiArICoKPj4+PiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGV2 ZW50IGNoYW5uZWwgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkKPj4+PiArICogICAgICBpbiB0aGUg cmluZyBidWZmZXIuCj4+Pj4gKyAqCj4+Pj4gKyAqIHJpbmctcmVmCj4+Pj4gKyAqICAgICAgVmFs dWVzOiAgICAgICAgIDx1aW50Pgo+Pj4gdWludDMyX3QKPj4gZG9uZQo+Pj4+ICsgKgo+Pj4+ICsg KiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRo ZSBiYWNrZW5kIHRvIG1hcAo+Pj4+ICsgKiAgICAgIGEgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBh Z2Ugc2l6ZWQgcmluZyBidWZmZXIuCj4+Pj4gKyAqCj4+Pj4gKyAqIGluZGV4Cj4+PiBXaHkgbm90 ICd1bmlxdWUtaWQnID8KPj4gbWFrZXMgc2Vuc2UsIHdpbGwgY2hhbmdlCj4+Pj4gKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDx1aW50Pgo+Pj4gdWludDMyX3QKPj4gZG9uZQo+Pj4+ICsgKgo+Pj4+ ICsgKiAgICAgIEFmdGVyIHN0cmVhbSBpbml0aWFsaXphdGlvbiBpdCBpcyBhc3NpZ25lZCBhIHVu aXF1ZSBJRCAod2l0aGluIHRoZSBmcm9udAo+Pj4+ICsgKiAgICAgIGRyaXZlciksIHNvIGV2ZXJ5 IHN0cmVhbSBvZiB0aGUgZnJvbnRlbmQgY2FuIGJlIGlkZW50aWZpZWQgYnkgdGhlCj4+Pj4gKyAq ICAgICAgYmFja2VuZCBieSB0aGlzIElELiBUaGlzIGlzIG5vdCBlcXVhbCB0byBzdHJlYW1faWR4 IGFzIHRoZSBsYXRlciBpcwo+Pj4gcy9zdHJlYW1faWR4L3N0ZWFtLWlkeC8KPj4gZG9uZQo+Pj4+ ICsgKiAgICAgIHplcm8gYmFzZWQgd2l0aGluIGEgZGV2aWNlLCBidXQgdGhpcyBpbmRleCBpcyBj b250aWd1b3VzIHdpdGhpbiB0aGUKPj4+IGNvbnRpbmdvdXMKPj4gZG9uZQo+Pj4+ICsgKiAgICAg IGRyaXZlci4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsvKgo+Pj4+ICsgKiBTVEFURSBESUFHUkFN Uwo+Pj4+ICsgKgo+Pj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+PiArICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0dXAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+ICsgKgo+Pj4+ICsgKiBU b29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJhY2sgc3RhdGUgbm9kZXMgd2l0aCBpbml0aWFs IHN0YXRlCj4+Pj4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLgo+Pj4+ICsgKiBUb29sIHN0 YWNrIGNyZWF0ZXMgYW5kIHNldHMgdXAgZnJvbnRlbmQgc291bmQgY29uZmlndXJhdGlvbiBub2Rl cyBwZXIgZG9tYWluLgo+Pj4+ICsgKgo+Pj4+ICsgKiBGcm9udCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQmFjawo+Pj4+ICsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+Pj4+ICsgKiBYZW5i dXNTdGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcK Pj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGJh Y2tlbmQgZGV2aWNlIGlkZW50aWZpY2F0aW9uCj4+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhLgo+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG8gT3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2UuCj4+Pj4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAo+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKPj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWCj4+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYZW5idXNTdGF0ZUluaXRXYWl0Cj4+Pj4gKyAqCj4+Pj4gKyAqIG8gUXVlcnkgZnJvbnRl bmQgY29uZmlndXJhdGlvbgo+Pj4+ICsgKiBvIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplCj4+Pj4g KyAqICAgZXZlbnQgY2hhbm5lbHMgcGVyIGNvbmZpZ3VyZWQKPj4+PiArICogICBwbGF5YmFjay9j YXB0dXJlIHN0cmVhbS4KPj4+PiArICogbyBQdWJsaXNoIHRyYW5zcG9ydCBwYXJhbWV0ZXJzCj4+ Pj4gKyAqICAgdGhhdCB3aWxsIGJlIGluIGVmZmVjdCBkdXJpbmcKPj4+PiArICogICB0aGlzIGNv bm5lY3Rpb24uCj4+Pj4gKyAqICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICAgICAgICAgICAgICB8 Cj4+Pj4gKyAqICAgICAgICAgICAgICBWCj4+Pj4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQK Pj4+PiArICoKPj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv IFF1ZXJ5IGZyb250ZW5kIHRyYW5zcG9ydCBwYXJhbWV0ZXJzLgo+Pj4+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gQ29ubmVjdCB0byB0aGUgZXZlbnQgY2hhbm5l bHMuCj4+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAo+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKPj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWCj4+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAo+Pj4+ICsgKgo+Pj4+ICsgKiAgbyBD cmVhdGUgYW5kIGluaXRpYWxpemUgT1MKPj4+PiArICogIHZpcnR1YWwgc291bmQgZGV2aWNlIGlu c3RhbmNlcwo+Pj4+ICsgKiAgYXMgcGVyIGNvbmZpZ3VyYXRpb24uCj4+Pj4gKyAqICAgICAgICAg ICAgICB8Cj4+Pj4gKyAqICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICAgICAgICAgICAgICBWCj4+ Pj4gKyAqIFhlbmJ1c1N0YXRlQ29ubmVjdGVkCj4+Pj4gKyAqCj4+Pj4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZVVua25vd24KPj4+PiArICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCj4+Pj4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3Np bmcKPj4+PiArICogbyBSZW1vdmUgdmlydHVhbCBzb3VuZCBkZXZpY2UKPj4+PiArICogbyBSZW1v dmUgZXZlbnQgY2hhbm5lbHMKPj4+PiArICogICAgICAgICAgICAgIHwKPj4+PiArICogICAgICAg ICAgICAgIHwKPj4+PiArICogICAgICAgICAgICAgIFYKPj4+PiArICogWGVuYnVzU3RhdGVDbG9z ZWQKPj4+PiArICoKPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsvKgo+Pj4+ICsgKiBQQ00gRk9STUFU Uwo+Pj4+ICsgKgo+Pj4+ICsgKiBYRU5TTkRfUENNX0ZPUk1BVF88Zm9ybWF0PltfPGVuZGlhbj5d Cj4+Pj4gKyAqCj4+Pj4gKyAqIGZvcm1hdDogPFMvVS9GPjxiaXRzPiBvciA8bmFtZT4KPj4+PiAr ICogICAgIFMgLSBzaWduZWQsIFUgLSB1bnNpZ25lZCwgRiAtIGZsb2F0Cj4+Pj4gKyAqICAgICBi aXRzIC0gOCwgMTYsIDI0LCAzMgo+Pj4+ICsgKiAgICAgbmFtZSAtIE1VX0xBVywgR1NNLCBldGMu Cj4+Pj4gKyAqCj4+Pj4gKyAqIGVuZGlhbjogPExFL0JFPiwgbWF5IGJlIGFic2VudAo+Pj4+ICsg KiAgICAgTEUgLSBMaXR0bGUgZW5kaWFuLCBCRSAtIEJpZyBlbmRpYW4KPj4+PiArICovCj4+Pj4g KyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzggICAgICAgICAgICAwCj4+Pj4gKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfVTggICAgICAgICAgICAxCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BD TV9GT1JNQVRfUzE2X0xFICAgICAgICAyCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRf UzE2X0JFICAgICAgICAzCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0xFICAg ICAgICA0Cj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0JFICAgICAgICA1Cj4+ Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzI0X0xFICAgICAgICA2Cj4+Pj4gKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfUzI0X0JFICAgICAgICA3Cj4+Pj4gKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfVTI0X0xFICAgICAgICA4Cj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfVTI0X0JFICAgICAgICA5Cj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMyX0xF ICAgICAgICAxMAo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MzMl9CRSAgICAgICAg MTEKPj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMzJfTEUgICAgICAgIDEyCj4+Pj4g KyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0JFICAgICAgICAxMwo+Pj4+ICsjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX0YzMl9MRSAgICAgICAgMTQgLyogNC1ieXRlIGZsb2F0LCBJRUVF LTc1NCAzMi1iaXQsICovCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfRjMyX0JFICAg ICAgICAxNSAvKiByYW5nZSAtMS4wIHRvIDEuMCAgICAgICAgICAgICAgKi8KPj4+PiArI2RlZmlu ZSBYRU5TTkRfUENNX0ZPUk1BVF9GNjRfTEUgICAgICAgIDE2IC8qIDgtYnl0ZSBmbG9hdCwgSUVF RS03NTQgNjQtYml0LCAqLwo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2NF9CRSAg ICAgICAgMTcgLyogcmFuZ2UgLTEuMCB0byAxLjAgICAgICAgICAgICAgICovCj4+Pj4gKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFIDE4Cj4+Pj4gKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFIDE5Cj4+Pj4gKyNkZWZpbmUgWEVO U05EX1BDTV9GT1JNQVRfTVVfTEFXICAgICAgICAyMAo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX0FfTEFXICAgICAgICAgMjEKPj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9J TUFfQURQQ00gICAgIDIyCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfTVBFRyAgICAg ICAgICAyMwo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0dTTSAgICAgICAgICAgMjQK Pj4+PiArCj4+Pj4gKy8qCj4+Pj4gKyAqIFJFUVVFU1QgQ09ERVMuCj4+Pj4gKyAqLwo+Pj4+ICsj ZGVmaW5lIFhFTlNORF9PUF9PUEVOICAgICAgICAgICAgICAgICAgMAo+Pj4+ICsjZGVmaW5lIFhF TlNORF9PUF9DTE9TRSAgICAgICAgICAgICAgICAgMQo+Pj4+ICsjZGVmaW5lIFhFTlNORF9PUF9S RUFEICAgICAgICAgICAgICAgICAgMgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9PUF9XUklURSAgICAg ICAgICAgICAgICAgMwo+Pj4+ICsjZGVmaW5lIFhFTlNORF9PUF9TRVRfVk9MVU1FICAgICAgICAg ICAgNAo+Pj4+ICsjZGVmaW5lIFhFTlNORF9PUF9HRVRfVk9MVU1FICAgICAgICAgICAgNQo+Pj4+ ICsjZGVmaW5lIFhFTlNORF9PUF9NVVRFICAgICAgICAgICAgICAgICAgNgo+Pj4+ICsjZGVmaW5l IFhFTlNORF9PUF9VTk1VVEUgICAgICAgICAgICAgICAgNwo+Pj4+ICsKPj4+PiArLyoKPj4+PiAr ICogWEVOU1RPUkUgRklFTEQgQU5EIFBBVEggTkFNRSBTVFJJTkdTLCBIRUxQRVJTLgo+Pj4+ICsg Ki8KPj4+PiArI2RlZmluZSBYRU5TTkRfRFJJVkVSX05BTUUgICAgICAgICAgICAgICJ2c25kIgo+ Pj4+ICsKPj4+PiArI2RlZmluZSBYRU5TTkRfTElTVF9TRVBBUkFUT1IgICAgICAgICAgICI7Igo+ Pj4+ICsvKiBQYXRoIGVudHJpZXMgKi8KPj4+PiArI2RlZmluZSBYRU5TTkRfUEFUSF9ERVZJQ0Ug ICAgICAgICAgICAgICJkZXZpY2UiCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BBVEhfU1RSRUFNICAg ICAgICAgICAgICAic3RyZWFtIgo+Pj4+ICsvKiBGaWVsZCBuYW1lcyAqLwo+Pj4+ICsjZGVmaW5l IFhFTlNORF9GSUVMRF9WQ0FSRF9TSE9SVF9OQU1FICAgInNob3J0LW5hbWUiCj4+Pj4gKyNkZWZp bmUgWEVOU05EX0ZJRUxEX1ZDQVJEX0xPTkdfTkFNRSAgICAibG9uZy1uYW1lIgo+Pj4+ICsjZGVm aW5lIFhFTlNORF9GSUVMRF9SSU5HX1JFRiAgICAgICAgICAgInJpbmctcmVmIgo+Pj4+ICsjZGVm aW5lIFhFTlNORF9GSUVMRF9FVlRfQ0hOTCAgICAgICAgICAgImV2ZW50LWNoYW5uZWwiCj4+Pj4g KyNkZWZpbmUgWEVOU05EX0ZJRUxEX0RFVklDRV9OQU1FICAgICAgICAibmFtZSIKPj4+PiArI2Rl ZmluZSBYRU5TTkRfRklFTERfVFlQRSAgICAgICAgICAgICAgICJ0eXBlIgo+Pj4+ICsjZGVmaW5l IFhFTlNORF9GSUVMRF9TVFJFQU1fSU5ERVggICAgICAgImluZGV4Igo+Pj4+ICsjZGVmaW5lIFhF TlNORF9GSUVMRF9DSEFOTkVMU19NSU4gICAgICAgImNoYW5uZWxzLW1pbiIKPj4+PiArI2RlZmlu ZSBYRU5TTkRfRklFTERfQ0hBTk5FTFNfTUFYICAgICAgICJjaGFubmVscy1tYXgiCj4+Pj4gKyNk ZWZpbmUgWEVOU05EX0ZJRUxEX1NBTVBMRV9SQVRFUyAgICAgICAic2FtcGxlLXJhdGVzIgo+Pj4+ ICsjZGVmaW5lIFhFTlNORF9GSUVMRF9TQU1QTEVfRk9STUFUUyAgICAgInNhbXBsZS1mb3JtYXRz Igo+Pj4+ICsjZGVmaW5lIFhFTlNORF9GSUVMRF9CVUZGRVJfU0laRSAgICAgICAgImJ1ZmZlci1z aXplIgo+Pj4+ICsKPj4+PiArLyogU3RyZWFtIHR5cGUgZmllbGQgdmFsdWVzLiAqLwo+Pj4+ICsj ZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9QTEFZQkFDSyAgICAgInAiCj4+Pj4gKyNkZWZpbmUg WEVOU05EX1NUUkVBTV9UWVBFX0NBUFRVUkUgICAgICAiYyIKPj4+PiArLyogU2FtcGxlIHJhdGUg bWF4IHN0cmluZyBsZW5ndGggKi8KPj4+PiArI2RlZmluZSBYRU5TTkRfU0FNUExFX1JBVEVfTUFY X0xFTiAgICAgIDYKPj4+IEhtLCBidXQgaXQgaXMgdWludDMyX3Qgd2hpY2ggY2FuIGJlIG11Y2gg bXVjaCBoaWdoZXIgdGhhbiA2Lgo+Pj4KPj4+IDQyOTQ5NjcyOTUKPj4+Cj4+PiAxMSBjaGFyYWN0 ZXJzPwo+PiBmaXhlZAo+Pj4+ICsvKiBTYW1wbGUgZm9ybWF0IGZpZWxkIHZhbHVlcyAqLwo+Pj4+ ICsjZGVmaW5lIFhFTlNORF9TQU1QTEVfRk9STUFUX01BWF9MRU4gICAgMjQKPj4+IFlvdSBzdXJl PyBZb3UgbWF5IHdhbnQgdG8gbWFrZSB0aGF0IGNsZWFyIGluICdzYW1wbGUtZm9ybWF0Jwo+Pj4g c2VjdGlvbiB0aGF0IHRoZSBtYXhpbXVtIG9mIGEgc3RyaW5nIGNhbiBiZSAyNCBjaGFyYWN0ZXJz Lgo+PiBkb25lCj4+PiBBbmQgYWxzbyBleHBsYWluIHdoeSAyNCBjaGFyYWN0ZXJzLgo+PiBubyBw YXJ0aWN1bGFyIHJlYXNvbiwganVzdCB0byBmaXQgWEVOU05EX1BDTV9GT1JNQVRfPz8/X1NUUgo+ PiBkbyB5b3Ugd2FudCBtZSB0byBjaGFuZ2UgaXQgdG8gc29tZXRoaW5nIGVsc2U/Cj4+Pj4gKwo+ Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1M4X1NUUiAgICAgICAgInM4Igo+Pj4+ICsj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1U4X1NUUiAgICAgICAgInU4Igo+Pj4+ICsjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRV9TVFIgICAgInMxNl9sZSIKPj4+PiArI2RlZmluZSBY RU5TTkRfUENNX0ZPUk1BVF9TMTZfQkVfU1RSICAgICJzMTZfYmUiCj4+Pj4gKyNkZWZpbmUgWEVO U05EX1BDTV9GT1JNQVRfVTE2X0xFX1NUUiAgICAidTE2X2xlIgo+Pj4+ICsjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1UxNl9CRV9TVFIgICAgInUxNl9iZSIKPj4+PiArI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9TMjRfTEVfU1RSICAgICJzMjRfbGUiCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BD TV9GT1JNQVRfUzI0X0JFX1NUUiAgICAiczI0X2JlIgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX1UyNF9MRV9TVFIgICAgInUyNF9sZSIKPj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZP Uk1BVF9VMjRfQkVfU1RSICAgICJ1MjRfYmUiCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfUzMyX0xFX1NUUiAgICAiczMyX2xlIgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X1MzMl9CRV9TVFIgICAgInMzMl9iZSIKPj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9V MzJfTEVfU1RSICAgICJ1MzJfbGUiCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMy X0JFX1NUUiAgICAidTMyX2JlIgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9M RV9TVFIgICAgImZsb2F0X2xlIgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9C RV9TVFIgICAgImZsb2F0X2JlIgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2NF9M RV9TVFIgICAgImZsb2F0NjRfbGUiCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfRjY0 X0JFX1NUUiAgICAiZmxvYXQ2NF9iZSIKPj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9J RUM5NThfU1VCRlJBTUVfTEVfU1RSICJpZWM5NThfc3ViZnJhbWVfbGUiCj4+Pj4gKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFX1NUUiAiaWVjOTU4X3N1YmZyYW1l X2JlIgo+Pj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX01VX0xBV19TVFIgICAgIm11X2xh dyIKPj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9BX0xBV19TVFIgICAgICJhX2xhdyIK Pj4+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JTUFfQURQQ01fU1RSICJpbWFfYWRwY20i Cj4+Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfTVBFR19TVFIgICAgICAibXBlZyIKPj4+ PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9HU01fU1RSICAgICAgICJnc20iCj4+Pj4gKwo+ Pj4+ICsvKgo+Pj4+ICsgKiBTVEFUVVMgUkVUVVJOIENPREVTLgo+Pj4+ICsgKi8KPj4+PiArLyog T3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuICovCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1JTUF9OT1RT VVBQICAgICAgICAgICAgICAoLTIpCj4+Pj4gKy8qIE9wZXJhdGlvbiBmYWlsZWQgZm9yIHNvbWUg dW5zcGVjaWZpZWQgcmVhc29uIChlLiBnLiAtRUlPKS4gKi8KPj4+IElzIHRoYXQgdGhlIC1FSU8g Z29pbmcgdG8gYmUgZXhwb3NlZCBzb21ld2hlcmU/Cj4+IG5vCj4+PiAgICBJbnNpZGUgb2YgdGhl Cj4+PiAnc3RydWN0IHhlbnNuZF9yZXNwJyA/Cj4+IG5vLCBYRU5TTkRfUlNQXz8/PyBpcyB1c2Vk IHRoZXJlCj4+PiBXb3VsZCBpdCBtYWtlIHNlbnNlIHRvIGhhdmUgaXQgZXhwb3NlZCB0aGVyZT8g SXMgdGhhdCB3aGF0ICdzdGF0dXMnCj4+PiBpcyBmb3I/Cj4+IHNlZSBhYm92ZSwgWEVOU05EX1JT UF8/Pz8KPj4+IFdoeSBub3QgaGF2ZSBhbiAnZXJyJyBhbmQgbWFuZGF0ZSB0aGF0IGl0IHVzZSBQ T1NJWCByZXR1cm4gdmFsdWVzPwo+PiB3ZWxsLCBpZiB3ZSBhZ3JlZSBvbiBQT1NJWCB2YWx1ZXMg dGhlbiBJIGFtIG1vcmUgdGhhbiBvawo+IEkgdGhpbmsgaXQgaXMgYSBnb29kIG1vdmUgZ29pbmcg Zm9yd2FyZC4KPgo+IEZvciBleGFtcGxlIHRoZSBwY2lmZiBhc3N1bWVkIGl0IHdvdWxkIG9ubHkg bmVlZCB0aGVzZSB0eXBlIG9mCj4gZXJyb3JzIGFuZCAnZXJyJyB3b3VsZCBoYXZlIFhFTl9QQ0lf RVJSXyogZXJyb3JzLgo+IEFuZCB0aGUgTVNJLVggY2FtZSBpbiBhbmQgdGhleSBtZXNzZWQgaXQg dXAgYW5kCj4gJ2VycicgaGFzIG5vdyBQT1NJWCByZXR1cm4gdmFsdWVzIF9hbmRfIFhFTl9QQ0lf RVJSXyogZGVwZW5kaW5nCj4gb24gdGhlIHR5cGUgb2Ygb3BlcmF0aW9uLgo+Cmdvb2QKPj4+PiAr I2RlZmluZSBYRU5TTkRfUlNQX0VSUk9SICAgICAgICAgICAgICAgICgtMSkKPj4+PiArLyogT3Bl cmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuICovCj4+Pj4gKyNkZWZpbmUgWEVOU05EX1JT UF9PS0FZICAgICAgICAgICAgICAgICAwCj4+Pj4gKwo+Pj4+ICsvKgo+Pj4+ICsgKiBBc3N1bXB0 aW9uczoKPj4+PiArICogICBvIHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFzIGludmFsaWQg Z3JhbnQgcmVmZXJlbmNlOgo+Pj4+ICsgKiAgICAgZ3JhbnQgcmVmZXJlbmNlIDAgaXMgdmFsaWQs IGJ1dCBuZXZlciBleHBvc2VkIHRvIGEgUFYgZHJpdmVyLAo+Pj4+ICsgKiAgICAgYmVjYXVzZSBv ZiB0aGUgZmFjdCBpdCBpcyBhbHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29s ZS4KPj4+PiArICogICBvIGFsbCByZWZlcmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBz aXplcyBtdXN0IGJlIHRyZWF0ZWQKPj4+PiArICogICAgIGFzIHBhZ2VzIG9mIHNpemUgWEVOX1BB R0VfU0laRSB1bmxlc3MgIG90aGVyd2lzZSBub3RlZC4KPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXi0gZXh0cmEgc3BhY2UKPj4gZml4ZWQKPj4+ PiArICoKPj4+PiArICogRGVzY3JpcHRpb24gb2YgdGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRl bmQgYW5kIGJhY2tlbmQgZHJpdmVyLgo+Pj4gSXMgdGhpcyBzdXBwb3NlIHRvIGhhdmUgYW46Cj4+ PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4gdW5kZXJuZWF0 aCBpdD8KPj4gZG9uZQo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBhcmEt dmlydHVhbCBzb3VuZCBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAo+Pj4+ICsgKiBlYWNoIG90aGVy IHVzaW5nIGEgc2hhcmVkIHBhZ2UgYW5kIGFuIGV2ZW50IGNoYW5uZWwuCj4+PiBzaGFyZWQgcGFn ZXMgYW5kIGV2ZW50IGNoYW5uZWxzPwo+Pj4KPj4+IFNpbmNlIGl0IGxvb2tzIGxpa2UgIHlvdSBj YW4gaGF2ZQo+Pj4KPj4+IC9sb2NhbC9kb21haW4vPGZyb250ZW5kLWlkPi9kZXZpY2UvdnNuZC88 ZGV2aWNlLWlkPi9zdHJlYW0vPHN0cmVhbS1pZD4vZXZlbnQtY2hhbm5lbAo+Pj4KPj4+IEFuZCB5 b3UgY2FuIGhhdmUgTiBkZXZpY2UtaWQgYW5kIE0gc3RyZWFtLWlkID8KPj4gcmlnaHQsIGRvbmUK Pj4+PiArICogU2hhcmVkIHBhZ2UgY29udGFpbnMgYSByaW5nIHdpdGggcmVxdWVzdC9yZXNwb25z ZSBwYWNrZXRzLgo+Pj4+ICsgKgo+Pj4+ICsgKiBBbGwgcmVzZXJ2ZWQgZmllbGRzIGluIHRoZSBz dHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgMC4KPj4+PiArICoKPj4+PiArICogQWxsIHJlcXVlc3Qg cGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoMzIgb2N0ZXRzKQo+Pj4gV2hpY2ggaW1wbGll cyB5b3UgY2FuIGhhdmUgYXQgbWF4aW11bSA2NCByZXF1ZXN0cz8KPj4+Cj4+PiBbNjQgYnl0ZXMg Zm9yIHRoZSBmb3VyIFJJTkdfSURYIGFsb25nIHdpdGggdGhlIDQ4IG9mIHBhZGRpbmcsIHRoYXQK Pj4+IG1lYW5zIDQwMzIgbGVmdCwgYnV0IHNpbmNlIHdlIG5lZWQgdGhpcyB0byBiZSBtb2R1bG8g MiB0aGUgYmVzdAo+Pj4gd2UgY2FuIGRvIGlzIDJeNi4KPj4geW91IG1lYW4gd2UgaGF2ZSB0byBw YWQgdGhlIHN0cnVjdHVyZXMgc28gdGhleSBhcmUgYWxsCj4+IDY0IGJ5dGVzIGxvbmc/Cj4gTm8g bm8uIEp1c3QgdGhhdCB5b3UgY2FuIG9ubHkgZml0IDY0IHJlcXVlc3RzIG9uIGEgcGFnZS4KPgo+ IFRoZSBmaXJzdCA2NCBieXRlcyBvZiB0aGUgcmluZyBhcmUgZm9yIHRoZSBwcm9kdWNlciBhbmQg Y29uc3VtZXIKPiBpbmRleCB2YWx1ZXMuIFRoZW4gYWZ0ZXIgdGhhdCB5b3VyIHN0cnVjdHVyZXMg d2hpY2ggYXJlIHVwIHRvIDMyIGJ5dGVzCj4gYXJlIGZpbGxlZCBvdXQuCj4KPiBCdXQgc2luY2Ug dGhlIGVudHJpZXMgbmVlZCB0byBiZSBtb2R1bGUgdHdvIHRoYXQgbWVhbnMgdGhlIG1heGltdW0K PiBvZiB0aGVzZSBzdHJ1Y3R1cmVzIHlvdSBjYW4gZmlsbCBvdXQgaXMgNjQuCmhhdmUgMzItb2N0 ZXQgc3RydWN0dXJlcyBpbiB2MTYKPj4+Cj4+Pj4gKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2 ZSBjb21tb24gaGVhZGVyOgo+Pj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAg ICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAg ICAgIHwgICAgb3BlcmF0aW9uICAgIHwgICAgIHN0cmVhbV9pZHggIHwKPj4+IFdoeSB0aGUgc3Ry ZWFtX2lkeCA/IFlvdXIgJ3JpbmctcmVmJyBpcyByb290ZWQgZnJvbSB0aGUgJzxzdHJlYW0taWR4 Picgc28KPj4+IHRoZSBmcm9udGVuZCBhbmQgYmFja2VuZCBhbHJlYWR5IGtub3cgdGhpcy4KPj4g aW5kZWVkLCB3ZSBjYW4gcHJvYmFibHkgcmVtb3ZlIHRoaXMgZnJvbSBhbGwgdGhlIHN0cnVjdHVy ZXMKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogICBpZCAtIHVpbnQxNl90LCBwcml2YXRl IGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcG9uc2UKPj4+PiArICogICBvcGVyYXRpb24gLSB1 aW50OF90LCBvcGVyYXRpb24gY29kZQo+Pj4+ICsgKiAgIHN0cmVhbV9pZHggLSB1aW50OF90LCBp bmRleCBvZiB0aGUgc3RyZWFtICgic3RyZWFtc19pZHgiIFhlblN0b3JlIGVudHJ5Cj4+Pj4gKyAq ICAgICBvZiB0aGUgc3RyZWFtKQo+Pj4gV2h5IGRvIHlvdSBuZWVkIHRoaXMgZHVwbGljYXRlIGlu Zm9ybWF0aW9uPwo+PiBpdCBkZXNjcmliZXMgY29tbW9uIGhlYWRlciBhbmQgaXRzIHZhbHVlcwo+ IEkgbWVhbnQgdGhlICdzdHJlYW1faWR4JwpyZS13b3JrZWQgaW4gdjE2Cj4+Pj4gKyAqCj4+Pj4g KyAqCj4+Pj4gKyAqIFJlcXVlc3Qgb3BlbiAtIG9wZW4gYSBQQ00gc3RyZWFtIGZvciBwbGF5YmFj ayBvciBjYXB0dXJlOgo+Pj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+Pj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAg IHwgWEVOU05EX09QX09QRU4gIHwgICAgIHN0cmVhbV9pZHggIHwKPj4+PiArICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNtX3JhdGUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ Pj4gKyAqIHwgIHBjbV9mb3JtYXQgICAgIHwgIHBjbV9jaGFubmVscyAgIHwgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zeiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAg ICAgICAgICAgICAgICAgICAgICAgICBncmVmX2RpcmVjdG9yeV9zdGFydCAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+Pj4gUGVyaGFwcyAnZ3JlZl9saXN0JyA/Cj4+IG5vdCBzdXJlLCBpdCBp cyB0aGUgc3RhcnQgb2YgdGhlIHBhZ2UgZGlyZWN0b3J5LCBpdHMgZ3JlZgo+IERpcmVjdG9yeSBh bmQgbGlzdCBhcmUgc2ltaWxhciBlbm91Z2guIElmIHlvdSB3YW50IGRpcmVjdG9yeSBrZWVwIGl0 Cj4gYnV0IHBsZWFzZSByZW1vdmUgdGhlICdzdGFydCcuIEl0IGlzIGltcGxpZWQuCnNvdW5kcyBy ZWFzb25hYmxlCj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wK Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4g KyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICoKPj4+PiArICogcGNtX3JhdGUgLSB1aW50MzJf dCwgc3RyZWFtIGRhdGEgcmF0ZSwgSHoKPj4+PiArICogcGNtX2Zvcm1hdCAtIHVpbnQ4X3QsIFhF TlNORF9QQ01fRk9STUFUX1hYWCB2YWx1ZQo+Pj4+ICsgKiBwY21fY2hhbm5lbHMgLSB1aW50OF90 LCBudW1iZXIgb2YgY2hhbm5lbHMgb2YgdGhpcyBzdHJlYW0KPj4+IC4uIEFuZCBJIHByZXN1bWUg dGhpcyBzaG91bGQgYmUgYmV0d2VlbiAnY2hhbm5lbHMtbWluJyBhbmQgJ2NoYW5uZWxzLW1heCc/ Cj4+PiBJcyBpdCBPSyB0byBoYXZlIHRvIHNheSAyNTUgPyBXaGF0IGFyZSB0aGUgYm91bmRhcnkg dmFsdWVzPwo+Pj4KPj4geWVzLCBpdCBpcyBvayB0byBiZSB1aW50OF90LCBJTU8uIEkgd2lsbCBj aGFuZ2UgdGhlCj4+IHhlbnN0b3JlIHZhbHVlcyBkZXNjcmlwdGlvbiBhcyB3ZWxsCj4+Pj4gKyAq IGJ1ZmZlcl9zeiAtIHVpbnQzMl90LCBidWZmZXIgc2l6ZSB0byBiZSBhbGxvY2F0ZWQgaW4gb2N0 ZXRzCj4+PiBJcyB0aGVyZSBhbiBtYXhpbXVtPyBPciBhIG1pbmltdW0/Cj4+Pgo+Pj4gV2h5IGhh dmUgaXQgaW4gYnl0ZXM/ICBXaHkgbm90IGluIHRoZSBhbW91bnQgb2YgZ3JhbnRzIHlvdSBuZWVk Pwo+Pj4gUGVyaGFwcyBjYWxsIGl0ICdncmVmX25yJyA/IFRoYXQgd2F5IHlvdXIgY29tcHV0YXRp b24gb24gaG93Cj4+PiBtYW55IGdyYW50cyB5b3UgbmVlZCBpcyB3ZWxsIHNpbXBsaWZpZWQuCj4+ IHRoZXJlIHdhcyBhIGRpc2N1c3Npb24gb24gdGhhdDoKPj4gaHR0cHM6Ly9tYXJjLmluZm8vP2w9 eGVuLWRldmVsJm09MTQ4MDA4NTg5MzIwNTMzJnc9Mgo+IFlvdSB3YW50IHRvIGNhcHR1cmUgdGhh dCBpbiB0aGlzIGRvY3VtZW50IChvZiB3aHkgeW91IGNob29zZQo+IHRoaXMgd2F5KS4Kb25lIHdv dWxkIG5lZWQgdG8gcmVhZCBhbGwgdGhlIHN0b3J5IHRvIGdldCB0byB0aGUgcG9pbnQsIGJlY2F1 c2UKbG90cyBvZiBpdGVyYXRpb25zIHdlcmUgZG9uZSBhbmQgc29tZSBvZiB0aGUgaW5mbyB3YXMg aW4gYmV0d2Vlbgo+Pj4KPj4+PiArICogZ3JlZl9kaXJlY3Rvcnlfc3RhcnQgLSBncmFudF9yZWZf dCwgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IHNoYXJlZCBwYWdlCj4+PiBzL2dyZWZfZGlyZWN0 b3J5X3N0YXJ0L2dyZWZfbGlzdC8gPwo+PiBub3Qgc3VyZQo+Pj4+ICsgKiAgIGRlc2NyaWJpbmcg c2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBBdCBsZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmIHNo YXJlZAo+Pj4+ICsgKiAgIGJ1ZmZlciBzaXplIGV4Y2VlZHMgd2hhdCBjYW4gYmUgYWRkcmVzc2Vk IGJ5IHRoaXMgc2luZ2xlIHBhZ2UsIHRoZW4KPj4+IHMvc2hhcmVkIGJ1ZmZlciBzaXplL2J1ZmZl cl9zei8gPwo+PiB3aHksIEkgYW0gbm90IHVzaW5nIHZhcmlhYmxlL2ZpZWxkIG5hbWUgaGVyZSwg YnV0IGV4cGxhaW5pbmcKPj4gSSBjYW4gcHV0IHRoZSBuYW1lIGluIGJyYWNrZXRzKQo+Pj4+ICsg KiAgIHJlZmVyZW5jZSB0byB0aGUgbmV4dCBwYWdlIG11c3QgYmUgc3VwcGxpZWQgKHNlZSBncmVm X2Rpcl9uZXh0X3BhZ2UgYmVsb3cpCj4+PiBOb3cgd2hhdCBpZiBncmVmc19uciAob3IgYnVmZmVy X3N6KSBpcyBzYXkgMSBwYWdlICg0MDk2KS4KPj4+IERvZXMgdGhhdCBtZWFuIHRoYXQgZ3JlZl9k aXJlY3Rvcnlfc3RhcnQgc3RpbGwgbmVlZHMgdG8gcG9pbnQgdG8gcGFnZQo+Pj4gd2hpY2ggb25s eSBoYXMgdHdvIGVudHJpZXM6IDAsIDxncmFudCByZWY+ID8KPj4+Cj4+PiBPciBjYW4gaXQgYmUg c2ltcGxpZmllZCBhbmQgdGhpcyBncmVmX2RpcmVjdG9yeV9zdGFydCB3b3VsZCBiZSB1c2VkIGZv cgo+Pj4gZGF0YSBpbnN0ZWFkPwo+Pj4KPj4+IEkgdGhpbmsgdGhhdCBpcyB3aGF0IHlvdSBzYXlp bmcgKCJJZiBzaGFyZWQgLi4gIiB3aGljaCB3b3VsZCBpbXBseQo+Pj4gdGhhdCBpZiAiaWYgIXNo YXJlZCIgdGhlbiBzb21ldGhpbmcgZWxzZSBjYW4gYmUgZG9uZT8pIGJ1dCB0aGUgc3RhcnQKPj4+ IHNheXM6ICJhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3Qgc2hhcmVkIHBhZ2UgZGVzY3JpYmluZCBz aGFyZWQgYnVmZmVyCj4+PiByZWZlcmVuY2VzIiB3aGljaCBpbXBsaWVzIHlvdSBkbwo+Pj4gbmVl ZCB0aGlzIGV4dHJhIGluZGlyZWN0IHBhZ2UgZXZlbiBpZiB0aGUgYnVmZmVyX3N6IGlzIHNheSA0 MDk2Lgo+Pj4gPwo+PiB5ZXMsIHlvdSBnb3QgaXQgcmlnaHQuIHRoZSB1c2UtY2FzZXMgd2UgaGF2 ZSBkbyB1c2UgYnVmZmVycwo+PiBiaWdnZXIgdGhlbiA0Sywgc28gdGhpcyBpcyB3aHkgd2UgbmV2 ZXIgdGhvdWdodCBvZiBzdWNoIGFuIG92ZXJoZWFkCj4+Pgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4g K3N0cnVjdCB4ZW5zbmRfb3Blbl9yZXEgewo+Pj4gcy9fb3Blbl9yZXEvX3JlcV9vcGVuLwo+PiBp dCB3aWxsIGJlIHlldCBhbm90aGVyIGZsYW1lIGhlcmUuLi4KPj4gd2lsbCBrZWVwIGFzIGlzCj4+ Pj4gKyAgICB1aW50MzJfdCBwY21fcmF0ZTsgLyogaW4gSHogKi8KPj4+PiArICAgIHVpbnQ4X3Qg cGNtX2Zvcm1hdDsKPj4+PiArICAgIHVpbnQ4X3QgcGNtX2NoYW5uZWxzOwo+Pj4+ICsgICAgdWlu dDE2X3QgcmVzZXJ2ZWQ7Cj4+Pj4gKyAgICB1aW50MzJfdCBidWZmZXJfc3o7Cj4+Pj4gKyAgICBn cmFudF9yZWZfdCBncmVmX2RpcmVjdG9yeV9zdGFydDsKPj4+PiArfTsKPj4+PiArCj4+Pj4gKy8q Cj4+Pj4gKyAqIFNoYXJlZCBwYWdlIGZvciBYRU5TTkRfT1BfT1BFTiBidWZmZXIgZGVzY3JpcHRv ciAoZ3JlZl9kaXJlY3RvcnkgaW4gdGhlCj4+Pj4gKyAqICAgcmVxdWVzdCkgZW1wbG95cyBhIGxp c3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2VzIG9mIHRoZSBzaGFyZWQgZGF0YQo+Pj4+ ICsgKiAgIGJ1ZmZlcjoKPj4+PiArICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAg ICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4+PiArICogKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmX2Rp cl9uZXh0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZlsw XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rCj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmW2ldICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiAr ICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbTiAtMV0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKgo+Pj4+ICsg KiBncmVmX2Rpcl9uZXh0X3BhZ2UgLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIHRoZSBuZXh0 IHBhZ2UgZGVzY3JpYmluZwo+Pj4+ICsgKiAgIHBhZ2UgZGlyZWN0b3J5LiBNdXN0IGJlIDAgaWYg bm8gbW9yZSBwYWdlcyBpbiB0aGUgbGlzdC4KPj4+IHMvbm8gbW9yZSBwYWdlL3RoZXJlIGFyZSBu byBtb3JlLwo+PiBkb25lCj4+Pj4gKyAqIGdyZWZbaV0gLSBncmFudF9yZWZfdCwgcmVmZXJlbmNl IHRvIGEgc2hhcmVkIHBhZ2Ugb2YgdGhlIGJ1ZmZlcgo+Pj4+ICsgKiAgIGFsbG9jYXRlZCBhdCBY RU5TTkRfT1BfT1BFTgo+Pj4+ICsgKgo+Pj4+ICsgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50 cmllcyBpbiB0aGUgd2hvbGUgcGFnZSBkaXJlY3RvcnkgaXMgbm90Cj4+Pj4gKyAqIHBhc3NlZCwg YnV0IGluc3RlYWQgY2FuIGJlIGNhbGN1bGF0ZWQgYXM6Cj4+Pj4gKyAqICAgbnVtX2dyZWZzX3Rv dGFsID0gKFhFTlNORF9PUF9PUEVOLmJ1ZmZlcl9zeiArIFhFTl9QQUdFX1NJWkUgLSAxKSAvCj4+ Pj4gKyAqICAgICAgIFhFTl9QQUdFX1NJWkUKPj4+IEFuZCB3aGF0IGFyZSB0aGUgZXhwZWN0ZWQg ZXJyb3JzPyBXb3VkbCBpdCBtYWtlIHNlbnNlIHRvIGRlZmluZSB0aG9zZT8KPj4+IFNheToKPj4+ Cj4+PiAgICBSZXR1cm5zOgo+Pj4gICAgLUVOT0JVRlM6IENhbm5vdCBtYXAgdGhhdCBtYW55IGJ1 ZmZlcnMuCj4+PiAgICAtRUlOVkFMOiBJbmNvcnJlY3QgdmFsdWVzIGluIHRoZSByZXF1c3Q/Cj4+ IEFUTSwgdGhlIFhFTlNORF9SU1BfPz8/IGFyZSByZXR1cm5lZAo+Pj4gICAgLQo+Pj4+ICsgKi8K Pj4+PiArCj4+Pj4gK3N0cnVjdCB4ZW5zbmRfcGFnZV9kaXJlY3Rvcnkgewo+Pj4+ICsgICAgZ3Jh bnRfcmVmX3QgZ3JlZl9kaXJfbmV4dF9wYWdlOwo+Pj4+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZlsx XTsgLyogVmFyaWFibGUgbGVuZ3RoICovCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICsvKgo+Pj4+ICsg KiAgUmVxdWVzdCBjbG9zZSAtIGNsb3NlIGFuIG9wZW5lZCBwY20gc3RyZWFtOgo+Pj4+ICsgKiAg ICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgICAzICAgICAgICBvY3RldAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwg ICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgWEVOU05EX09QX0NMT1NFIHwgICAg IHN0cmVhbV9pZHggIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gKy8qCj4+Pj4g KyAqIFJlcXVlc3QgcmVhZC93cml0ZSAtIHVzZWQgZm9yIHJlYWQgKGZvciBjYXB0dXJlKSBvciB3 cml0ZSAoZm9yIHBsYXliYWNrKToKPj4+IE1heWJlIHNheSBhbHNvIHRoYXQgWEVOU05EX09QX09Q RU4gTVVTVCBiZSBjYWxsZWQgYmVmb3JlIHRoZXNlIG9wZXJhdGlvbnMKPj4+IGFyZSBwZXJtaXR0 ZWQuCj4+IG5vdCBzdXJlIHdlIG5lZWQgdGhpczogbm9ybWFsbHkgeW91IGhhdmUgdG8gb3BlbiBz b21ldGhpbmcKPj4gYmVmb3JlIHlvdSBjYW4gdXNlIGl0LCBlLmcuIGEgZmlsZQo+Pj4+ICsgKiAg ICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAg ICAgICAzICAgICAgICBvY3RldAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwg ICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgIHwgICAg IHN0cmVhbV9pZHggIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4g KyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+Pj4+ICsgKgo+Pj4+ICsgKiBvcGVyYXRpb24gLSBYRU5TTkRfT1BfUkVBRCBm b3IgcmVhZCBvciBYRU5TTkRfT1BfV1JJVEUgZm9yIHdyaXRlCj4+Pj4gKyAqIG9mZnNldCAtIHVp bnQzMl90LCByZWFkIG9yIHdyaXRlIGRhdGEgb2Zmc2V0IHdpdGhpbiB0aGUgc2hhcmVkIGJ1ZmZl cgo+Pj4+ICsgKiAgIHBhc3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIHJlcXVlc3QKPj4+IE1heSBh bHNvIHdhbnQgdG8gc2F5IHRoYXQgdGhpcyBvZmZzZXQgbXVzdCBiZSBsZXNzIHRoYW4gYnVmZmVy X3N6Lgo+Pj4KPj4+IEluIG9jdGV0cz8gTWF5IHdhbnQgdG8gc2F5IHRoYXQgZXhwbGljaXRseS4K Pj4gZG9uZQo+Pj4+ICsgKiBsZW5ndGggLSB1aW50MzJfdCwgcmVhZCBvciB3cml0ZSBkYXRhIGxl bmd0aAo+Pj4gSW4gb2N0ZXRzPwo+PiBkb25lCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArc3RydWN0 IHhlbnNuZF9yd19yZXEgewo+Pj4+ICsgICAgdWludDMyX3Qgb2Zmc2V0Owo+Pj4+ICsgICAgdWlu dDMyX3QgbGVuOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArLyoKPj4+PiArICogUmVxdWVzdCBzZXQv Z2V0IHZvbHVtZSAtIHNldC9nZXQgY2hhbm5lbHMnIHZvbHVtZSBvZiB0aGUgc3RyZWFtIGdpdmVu Ogo+Pj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAg MiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r Cj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0 aW9uICAgIHwgICAgIHN0cmVhbV9pZHggIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICog fC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKgo+Pj4+ICsgKiBv cGVyYXRpb24gLSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSBmb3Igdm9sdW1lIHNldAo+Pj4+ICsgKiAg IG9yIFhFTlNORF9PUF9HRVRfVk9MVU1FIGZvciB2b2x1bWUgZ2V0Cj4+Pj4gKyAqIEJ1ZmZlciBw YXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BFTiBpcyB1c2VkIHRvIGV4Y2hhbmdlIHZvbHVtZQo+Pj4+ ICsgKiB2YWx1ZXM6Cj4+PiBPaC4gVGhhdCBtZWFucyB5b3UgdGhlc2Ugb3BlcmF0aW9uIGFyZSBp biBlZmZlY3QgJ2JhcnJpZXInIG9uZXMuCj4+Pgo+Pj4gQXMgdGhlIGJ1ZmZlciBtdXN0IGJlIGZs dXNoZWQgYmVmb3JlIGhhbmQgb3RoZXJ3aXNlIHlvdSB3b3VsZCBiZQo+Pj4gb3ZlcndyaXRpbmcg ZGF0YSBzdHJlYW0gaW5mb3JtYXRpb24uCj4+Pgo+Pj4gWW91IHNob3VsZCBwcm9iYWJseSBtZW50 aW9uIHRoaXMgc2VtYW50aWMgbmVlZD8KPj4gSSB0aGluayB0aGlzIGlzIGltcGxlbWVudGF0aW9u IHNwZWNpZmljIGFuZCBzaG91bGRuJ3QKPj4gYmUgaW4gYSBnZW5lcmljIHByb3RvY29sCj4gSG93 IGlzIHRoYXQgaW1wbGVtZW50YXRpb24gc3BlY2lmaWM/IElmIHRoZXJlIGlzIHNvbWV0aGluZyBp biB0aGUgcGFnZQo+IGZyb20gdGhlIHByZXZpb3VzIGNvbW1hbmQgeW91IGFyZSBvdmVyd3JpdHRp bmcgdGhvc2UgdmFsdWVzLgpvaywgYWxsIHRoZSBvcGVyYXRpb25zIGFyZSBzeW5jaHJvbm91cyBm b3IgdGhlIHN0cmVhbSBnaXZlbi4KaXQgbWVhbnMgdGhhdCBpZiB0aGVyZSBpcyBzb21ldGhpbmcg bGVmdCBpbiB0aGUgYnVmZmVyCml0IHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcmVx L3Jlc3AsIHNvIHRoaXMgaXMgZXhwZWN0ZWQKPgo+Pj4gT3IgYWx0ZXJuYXRpdmVseSB0aGUgWEVO U05EX09QX1NFVF9WT0xVTUUvWEVOU05EX09QX0dFVF9WT0xVTUUgY291bGQgaGF2ZQo+Pj4gYSBz aW1pbGFyIHN0cnVjdHVyZSB0byAnc3RydWN0IHhlbnNuZF9yd19yZXEnIHNvIHRoYXQgeW91IGhh dmUKPj4+IHRoZSBvZmZzZXQgYW5kIGxlbj8KPj4gYSBwYWdlIGNhbiBob2xkIGVub3VnaCB2YWx1 ZXMsIElNTwo+IExldCBtZSBzZWUgIjY0MEsgb3VnaHQgdG8gYmUgZW5vdWdoIj8KSSB3YXMgdGFs a2luZyBhYm91dCAyNTYgY2hhbm5lbHMgNCBieXRlcyBwZXIgZWFjaC4KPgo+IFlvdSBhcmUgbWFr aW5nIGFzc3VtcHRpb25zIGhlcmUgYmFzZWQgb24gaG93IHRoZSBpbXBsZW1lbnRhdGlvbgo+IGZp bGxzIG91dCB0aGUgZGF0YSBzdHJ1Y3R1cmUuIEJ1dCB0aGUgcHVycG9zZSBvZiB0aGUgZGVzaWdu Cj4gaXMgdG8gZGV0YWNoIG9uZXNlbGYgZnJvbSB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoaW5r IG9mCj4gYWx0ZXJuYXRpdmUgd2F5cy4KPgo+IFRvIGNhcHR1cmUgeW91ciB3b3JkczoKPiAiCj4g U28gaWYgcmVhZC93cml0ZSB1c2UgdGhhdCBidWZmZXIsIGFuZCB0aGUgdm9sdW1lIGFuZCBtdXRp bmcKPj4gY29udHJvbHMgdXNlIGl0IHRvbywgaG93IGRvIEkgY2hhbmdlIHRoZSB2b2x1bWUgd2hp bGUgbGlzdGVuaW5nCj4+IHdpdGhvdXQgZGlzdHVyYmluZyB0aGUgcmVhZC93cml0ZT8KPiByZWFk L3dyaXRlIGRvIG5vdCBoYXBwZW4gY29udGludW91c2x5LCBlLmcuIHNvdW5kIGNhcmQgZmlsbHMg aXRzCj4gaW50ZXJuYWwgYnVmZmVycyAob3VyIGJ1ZmZlciBpcyBidXN5KSBhbmQgdGhlbiB1bnRp bCBuZXh0IHJlLWZpbGwgb3VyCj4gYnVmZmVyIGlzIGZyZWUuIHRoYXQgbWVhbnMgdGhhdCB0aGVy ZSBpcyBhbG1vc3Qgbm8gY29uZ2VzdGlvbiBhbmQKPiBhbHdheXMgYSBnb29kIGNoYW5jZSB0byBz ZXQvZ2V0IHZvbHVtZSB3L28gcHJvYmxlbQo+PiBKYW4KPiAiCj4KPiBXZWxsLCB0aGF0IGlzIGlt cGxlbWVudGF0aW9uIHNwZWNpZmljLiBXaGF0IGlmIHNvbWUgaW1wbGVtZW50YWl0b24KPiBmaWxs cyBpdCBiYWNrIHRvIGJhY2s/Cj4KPiBJIHdvdWxkIGxpa2UgeW91IHRvIGFkZCB0aGUgJ29mZnNl dCcgYW5kICdsZW4nIHNvIHRoYXQgd2UgZG9uJ3QKPiBkaWcgYSBob2xlIHRoYXQgd2UgY2FuJ3Qg ZWFzaWx5IGdldCBvdXQgb2YuCj4Kb2ssIEkgd2lsbCBhZGQKICAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwogICog fCBvZmZzZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgogICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCiAgKiB8IGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CiAgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKdG8KMS5SZXF1ZXN0IHNldC9nZXQgdm9sdW1lIC0gc2V0L2dldCBjaGFubmVs cycgdm9sdW1lIG9mIHRoZSBzdHJlYW0gZ2l2ZW4KMi5SZXF1ZXN0IG11dGUvdW5tdXRlIC0gbXV0 ZS91bm11dGUgc3RyZWFtCgpCeSB0aGlzIGNoYW5nZSB5b3UgZW5hYmxlIGEgdXNlLWNhc2Ugd2hl biBwYXJ0IG9mIHRoZSBzaGFyZWQgYnVmZmVyCmlzIHVzZWQgZm9yIHNhbXBsZXMgYW5kIHBhcnQg Zm9yIHZvbHVtZS9tdXRlLCByaWdodD8KPj4+PiArICoKPj4+PiArICogICAgICAgICAgMCAgICAg ICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAgICAgICAg b2N0ZXQKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYW5uZWxbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogKy9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhbm5lbFtpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiArICog Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiArL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+Pj4gKyAqICstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICBjaGFubmVsW1hFTlNORF9PUF9P UEVOLnBjbV9jaGFubmVscyAtIDFdICAgICAgICAgICAgICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rCj4+Pj4gKyAqCj4+Pj4gKyAqIGNoYW5uZWxbaV0gLSBzaW50MzJfdCwgdm9sdW1lIG9m IGktdGggY2hhbm5lbAo+Pj4gWW91IG1heSB3YW50IHRvIHNheSB0aGF0IGkgaXMgdWludDhfdC4K Pj4gZG9uZQo+Pj4+ICsgKiBWb2x1bWUgaXMgZXhwcmVzc2VkIGFzIGEgc2lnbmVkIHZhbHVlIGlu IHN0ZXBzIG9mIDAuMDAxIGRCLAo+Pj4+ICsgKiB3aGlsZSAwIGJlaW5nIDAgZEIuCj4+Pj4gKyAq Lwo+Pj4+ICsKPj4+PiArLyoKPj4+PiArICogUmVxdWVzdCBtdXRlL3VubXV0ZSAtIG11dGUvdW5t dXRlIHN0cmVhbToKPj4+PiArICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4+PiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8 ICAgIG9wZXJhdGlvbiAgICB8ICAgICBzdHJlYW1faWR4ICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r Cj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICoK Pj4+PiArICogb3BlcmF0aW9uIC0gWEVOU05EX09QX01VVEUgZm9yIG11dGUgb3IgWEVOU05EX09Q X1VOTVVURSBmb3IgdW5tdXRlCj4+Pj4gKyAqIEJ1ZmZlciBwYXNzZWQgd2l0aCBYRU5TTkRfT1Bf T1BFTiBpcyB1c2VkIHRvIGV4Y2hhbmdlIG11dGUvdW5tdXRlCj4+Pj4gKyAqIHZhbHVlczoKPj4+ IEFnYWluLCBzYW1lIGNvbW1lbnRzIGFzIGFib3ZlLgo+Pj4+ICsgKgo+Pj4+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvY3RldAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFswXSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiArL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC98Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFubmVsW2ldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqICsvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgIGNoYW5uZWxbWEVO U05EX09QX09QRU4ucGNtX2NoYW5uZWxzIC0gMV0gICAgICAgICAgICAgICB8Cj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSsKPj4+PiArICoKPj4+PiArICogY2hhbm5lbFtpXSAtIHVpbnQ4X3QsIG5v bi16ZXJvIGlmIGktdGggY2hhbm5lbCBuZWVkcyB0byBiZSBtdXRlZC91bm11dGVkCj4+Pj4gKyAq Lwo+Pj4+ICsKPj4+PiArLyoKPj4+PiArICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUg c2FtZSBsZW5ndGggKDMyIG9jdGV0cykKPj4+PiArICoKPj4+PiArICogUmVzcG9uc2UgZm9yIGFs bCByZXF1ZXN0czoKPj4+PiArICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4+PiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8 ICAgIG9wZXJhdGlvbiAgICB8ICAgICBzdHJlYW1faWR4ICB8Cj4+Pj4gKyAqICstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSsKPj4+PiArICogfCAgICAgIHN0YXR1cyAgICAgfCAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r Cj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4+PiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAo+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4gKyAqCj4+Pj4g KyAqIGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0Cj4+Pj4gKyAqIHN0cmVh bV9pZHggLSB1aW50OF90LCBjb3BpZWQgZnJvbSByZXF1ZXN0Cj4+Pj4gKyAqIG9wZXJhdGlvbiAt IHVpbnQ4X3QsIFhFTlNORF9PUF8qIC0gY29waWVkIGZyb20gcmVxdWVzdAo+Pj4+ICsgKiBzdGF0 dXMgLSBpbnQ4X3QsIHJlc3BvbnNlIHN0YXR1cyAoWEVOU05EX1JTUF8qKQo+Pj4gQ291bGQgdGhp cyBiZWNvbWUgYW4gJ2VycicgYW5kIHRoZSBQT1NJWCB2YWx1ZXMgdXNlZCBmb3IgZXJyb3JzPwo+ Pj4KPj4gd2UgY2FuIGRpc2N1c3MgdGhpcywgSSBhbSBmaW5lIHdpdGggdGhpcyBhcHByb2FjaCBp ZiB0aGUKPj4gQ29tbXVuaXR5IGFjY2VwdHMgdGhpcwo+Cj4gWW91IGNhbiBhbHdheXMgaGF2ZSBf Ym90aF8uCkkgYW0gd2l0aCAtWEVOX0UgYW5kIGludDMyX3QKPj4+PiArICovCj4+Pj4gKwo+Pj4+ ICtzdHJ1Y3QgeGVuc25kX3JlcSB7Cj4+Pj4gKyAgICB1aW50MTZfdCBpZDsKPj4+PiArICAgIHVp bnQ4X3Qgb3BlcmF0aW9uOwo+Pj4+ICsgICAgdWludDhfdCBzdHJlYW1faWR4Owo+Pj4+ICsgICAg dWludDMyX3QgcmVzZXJ2ZWQ7Cj4+Pj4gKyAgICB1bmlvbiB7Cj4+Pj4gKyAgICAgICAgc3RydWN0 IHhlbnNuZF9vcGVuX3JlcSBvcGVuOwo+Pj4+ICsgICAgICAgIHN0cnVjdCB4ZW5zbmRfcndfcmVx IHJ3Owo+Pj4+ICsgICAgICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbMjRdOwo+Pj4+ICsgICAgfSBvcDsK Pj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0cnVjdCB4ZW5zbmRfcmVzcCB7Cj4+Pj4gKyAgICB1aW50 MTZfdCBpZDsKPj4+PiArICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOwo+Pj4+ICsgICAgdWludDhfdCBz dHJlYW1faWR4Owo+Pj4+ICsgICAgaW50OF90IHN0YXR1czsKPj4+PiArICAgIHVpbnQ4X3QgcmVz ZXJ2ZWRbMjddOwo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArREVGSU5FX1JJTkdfVFlQRVMoeGVuX3Nu ZGlmLCBzdHJ1Y3QgeGVuc25kX3JlcSwgc3RydWN0IHhlbnNuZF9yZXNwKTsKPj4+PiArCj4+Pj4g KyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fICovCj4+Pj4gLS0gCj4+Pj4gMi43 LjQKPj4+PgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9s aXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=