From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v3] displif: add ABI for para-virtual display Date: Wed, 15 Feb 2017 20:32:14 +0200 Message-ID: <0331d90e-bd07-704a-e198-595c20ec2b0b@gmail.com> References: <1486711798-32322-1-git-send-email-andr2000@gmail.com> <1486711798-32322-2-git-send-email-andr2000@gmail.com> <20170210212747.GA1890@char.us.ORACLE.com> <20170214202741.GA16871@char.us.ORACLE.com> <20170215154545.GE20190@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ce4NK-0008GN-0W for xen-devel@lists.xenproject.org; Wed, 15 Feb 2017 18:32:22 +0000 Received: by mail-lf0-f67.google.com with SMTP id q89so14108253lfi.1 for ; Wed, 15 Feb 2017 10:32:19 -0800 (PST) In-Reply-To: <20170215154545.GE20190@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: Oleksandr Andrushchenko , vlad.babchuk@gmail.com, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, Oleksandr Grytsov , xen-devel@lists.xenproject.org, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gMDIvMTUvMjAxNyAwNTo0NSBQTSwgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIHdyb3RlOgo+IE9u IFdlZCwgRmViIDE1LCAyMDE3IGF0IDA5OjMzOjQxQU0gKzAyMDAsIE9sZWtzYW5kciBBbmRydXNo Y2hlbmtvIHdyb3RlOgo+PiBPbiAwMi8xNC8yMDE3IDEwOjI3IFBNLCBLb25yYWQgUnplc3p1dGVr IFdpbGsgd3JvdGU6Cj4+PiBPbiBNb24sIEZlYiAxMywgMjAxNyBhdCAxMDo1MDo0OUFNICswMjAw LCBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyB3cm90ZToKPj4+PiBIaSwgS29ucmFkIQo+Pj4+Cj4+ Pj4gVGhhbmsgeW91IGZvciByZXZpZXdpbmcgdGhpcy4KPj4+Pgo+Pj4+IE9uIDAyLzEwLzIwMTcg MTE6MjcgUE0sIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPj4+Pj4gT24gRnJpLCBGZWIg MTAsIDIwMTcgYXQgMDk6Mjk6NThBTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3Jv dGU6Cj4+Pj4+PiBGcm9tOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1 c2hjaGVua29AZXBhbS5jb20+Cj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUg dHdvIGhhbHZlcyBvZiBhIHBhcmEtdmlydHVhbGl6ZWQKPj4+Pj4+IGRpc3BsYXkgZHJpdmVyLgo+ Pj4+Pj4KPj4+Pj4+IFRoaXMgcHJvdG9jb2wgYWltcyB0byBwcm92aWRlIGEgdW5pZmllZCBwcm90 b2NvbCB3aGljaCBmaXRzIG1vcmUKPj4+Pj4+IHNvcGhpc3RpY2F0ZWQgdXNlLWNhc2VzIHRoYW4g YSBmcmFtZWJ1ZmZlciBkZXZpY2UgY2FuIGhhbmRsZS4gQXQgdGhlCj4+Pj4+PiBtb21lbnQgYmFz aWMgZnVuY3Rpb25hbGl0eSBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUgaW50ZW50aW9uIHRvIGV4dGVu ZDoKPj4+Pj4+ICAgICAgbyBtdWx0aXBsZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQvZGVzdHJveWVk IGZyYW1lYnVmZmVycwo+Pj4+Pj4gICAgICBvIGJ1ZmZlcnMgb2YgYXJiaXRyYXJ5IHNpemVzCj4+ Pj4+PiAgICAgIG8gYmV0dGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgbXVsdGlw bGUgZGlzcGxheSBzdXBwb3J0Cj4+Pj4+Pgo+Pj4+Pj4gTm90ZTogZXhpc3RpbmcgZmJpZiBjYW4g YmUgdXNlZCB0b2dldGhlciB3aXRoIGRpc3BsaWYgcnVubmluZyBhdCB0aGUKPj4+Pj4+IHNhbWUg dGltZSwgZS5nLiBvbiBMaW51eCBvbmUgcHJvdmlkZXMgZnJhbWVidWZmZXIgYW5kIGFub3RoZXIg RFJNL0tNUwo+Pj4+Pj4KPj4+Pj4+IEZ1dHVyZSBleHRlbnNpb25zIHRvIHRoZSBleGlzdGluZyBw cm90b2NvbCBtYXkgaW5jbHVkZToKPj4+Pj4+ICAgICAgbyBhbGxvdyBkaXNwbGF5L2Nvbm5lY3Rv ciBjbG9uaW5nCj4+Pj4+PiAgICAgIG8gYWxsb3cgYWxsb2NhdGluZyBvYmplY3RzIG90aGVyIHRo YW4gZGlzcGxheSBidWZmZXJzCj4+Pj4+PiAgICAgIG8gYWRkIHBsYW5lcy9vdmVybGF5cyBzdXBw b3J0Cj4+Pj4+PiAgICAgIG8gc3VwcG9ydCBzY2FsaW5nCj4+Pj4+PiAgICAgIG8gc3VwcG9ydCBy b3RhdGlvbgo+Pj4+Pj4KPj4+Pj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Cj4+Pj4+PiBSYXRpb25hbGUgZm9yIGludHJvZHVjaW5nIHRoaXMgcHJv dG9jb2wgaW5zdGVhZCBvZgo+Pj4+Pj4gdXNpbmcgdGhlIGV4aXN0aW5nIGZiaWY6Cj4+Pj4+PiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+Pj4+Pj4K Pj4+Pj4+IDEuIEluL291dCBldmVudCBzaXplcwo+Pj4+Pj4gICAgICBvIGZiaWYgLSA0MCBvY3Rl dHMKPj4+Pj4+ICAgICAgbyBkaXNwbGlmIC0gNDAgb2N0ZXRzCj4+Pj4+PiBUaGlzIGlzIG9ubHkg dGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgZGlzcGxpZiBwcm90b2NvbAo+Pj4+Pj4gd2hpY2gg bWVhbnMgdGhhdCB0aGVyZSBjb3VsZCBiZSByZXF1ZXN0cyB3aGljaCB3aWxsIG5vdCBmaXQKPj4+ Pj4+IChXUlQgaW50cm9kdWNpbmcgc29tZSBHUFUgcmVsYXRlZCBmdW5jdGlvbmFsaXR5Cj4+Pj4+ PiBsYXRlciBvbikuIEluIHRoYXQgY2FzZSB3ZSBjYW5ub3QgYWx0ZXIgZmJpZiBzaXplcyBhcyB3 ZSBuZWVkIHRvCj4+Pj4+PiBiZSBiYWNrd2FyZCBjb21wYXRpYmxlIGFuIHdpbGwgYmUgZm9yY2Vk IHRvIGhhbmRsZSB0aG9zZQo+Pj4+Pj4gYXBhcnQgb2YgZmJpZi4KPj4+Pj4+Cj4+Pj4+PiAyLiBT aGFyZWQgcGFnZQo+Pj4+Pj4gRGlzcGxpZiBkb2Vzbid0IHVzZSBhbnl0aGluZyBsaWtlIHN0cnVj dCB4ZW5mYl9wYWdlLCBidXQKPj4+Pj4+IERFRklORV9SSU5HX1RZUEVTKHhlbl9kaXNwbGlmLCBz dHJ1Y3QgeGVuZGlzcGxfcmVxLCBzdHJ1Y3QKPj4+Pj4+IHhlbmRpc3BsX3Jlc3ApIHdoaWNoIGlz IGEgYmV0dGVyIGFuZCBtb3JlIGNvbW1vbiB3YXkuCj4+Pj4+PiBPdXRwdXQgZXZlbnRzIHVzZSBh IHNoYXJlZCBwYWdlIHdoaWNoIG9ubHkgaGFzIGluX2NvbnMgYW5kIGluX3Byb2QKPj4+Pj4+IGFu ZCBhbGwgdGhlIHJlc3QgaXMgdXNlZCBmb3IgaW5jb21pbmcgZXZlbnRzLiBIZXJlIHN0cnVjdCB4 ZW5mYl9wYWdlCj4+Pj4+PiBjb3VsZCBwcm9iYWJseSBiZSB1c2VkIGFzIGlzIGRlc3BpdGUgdGhl IGZhY3QgdGhhdCBpdCBvbmx5IGhhcyBhIGhhbGYKPj4+Pj4+IG9mIGEgcGFnZSBmb3IgaW5jb21p bmcgZXZlbnRzIHdoaWNoIGlzIG9ubHkgNTAgZXZlbnRzLiAoY29uc2lkZXIKPj4+Pj4+IHNvbWV0 aGluZyBsaWtlIDYwSHogZGlzcGxheSkKPj4+Pj4+Cj4+Pj4+PiAzLiBBbW91bnQgb2YgY2hhbmdl cy4KPj4+Pj4+IGZiaWYgb25seSBwcm92aWRlcyBYRU5GQl9UWVBFX1VQREFURSBhbmQgWEVORkJf VFlQRV9SRVNJWkUKPj4+Pj4+IGV2ZW50cywgc28gaXQgbG9va3MgbGlrZSBpdCBpcyBlYXNpZXIg dG8gZ2V0IGZiIHN1cHBvcnQgaW50byBkaXNwbGlmCj4+Pj4+IC4uIHdvdWxkIGl0IG1ha2Ugc2Vu c2UgdG8gcmVzZXJ2ZSBzb21lIG9mIHRob3NlIHZhbHVlcyAoMiwgMykKPj4+Pj4gaW4gdGhlIFhF TkRJU1BMX09QXyB2YWx1ZXM/IFNvIHRoYXQgaWYgdGhpcyBoYXBwZW5zIHRoZXJlIGlzIGEgbmlj ZQo+Pj4+PiBmaXQgaW4gdGhlcmU/IFRob3VnaHQgbG9va2luZyBhdCB0aGUgc3RydWN0dXJlIHRo ZXJlIGlzIG5vIGVhc3kKPj4+Pj4gd2F5IHRvICdvdmVybGF5JyB0aGUgeGVuZmJfb3V0X2V2ZW50 IHN0cnVjdHVyZSBhcyBpdCBpcyBtaXNzaW5nIHRoZSAnaWQnLgo+Pj4+Pgo+Pj4+PiBJIGd1ZXNz IG9uZSBjYW4gZ2V0IGNyZWF0aXZlLgo+Pj4+Pgo+Pj4+PiBPciB5b3UgY291bGQgc3dhcCBwb3Np dGlvbnMgb2YgJ2lkJyBhbmQgJ3R5cGUnPyBBbmQgdGhlbiBpdCB3b3VsZCBmaXQgbXVjaAo+Pj4+ PiBuaWNlcj8KPj4+PiB5ZWFwLCBpbiBvcmRlciBubyBvbmUgbmVlZHMgdG8gYmUgY3JlYXRpdmUs IHdoeSBub3QKPj4+PiBleHBsaWNpdGx5IGRlZmluZSB0aG9zZT8KPj4+PiBBbnl3YXlzLCBpdCB3 b24ndCBiZSBwb3NzaWJsZSB0byBzaW1wbHkgbGF5IHRoZSBzdHJ1Y3R1cmVzIGZyb20KPj4+PiBm YmlmIG9uIHRvcCBvZiBkaXNwbGlmIChkaWZmZXJlbnQgc3RydWN0dXJlLCBzaXplLCB3b3JrZmxv dyBldGMuKSwKPj4+PiB3aGF0IGlzIG1vcmUgdGhhdCB3b3VsZCBnaXZlIHNvbWUgcm9vbSB0byBm aW5kIHdvcmthcm91bmRzLCByYXRoZXIgdGhhbgo+Pj4+IGhhdmUgd2VsbCBkZWZpbmVkIHNvbHV0 aW9uLiBCVFcsIHRoZXJlIHdhcyBhbiBhdHRlbXB0IFsxXSB0byB1cGRhdGUKPj4+PiBmYmRldiB0 byBtZWV0IG1vZGVybiBhcHBsaWNhdGlvbiBuZWVkcy4gSWYgd2UgZGVjaWRlIHRvIGFkZCBGQkRF Vgo+Pj4+IGZ1bmN0aW9uYWxpdHkgaW50byB0aGlzIHByb3RvY29sLCB0aGVuIEkgY2FuIHJlLXVz ZSBhbHJlYWR5Cj4+Pj4gcHJvdmVuIHRvIHdvcmsgc29sdXRpb24gZnJvbSBbMV0gaW50byBESVNQ TElGLCBidXQgZGVmaW5pbmcKPj4+PiBzdHJ1Y3R1cmVzIGFuZCBldmVudHMgdG8gZml0IHRoZSBj dXJyZW50IHByb3RvY29sLgo+Pj4gSSB3YXMgdGhpbmtpbmcgdGhhdCBzaW5jZSB0aGUgc2l6ZSBv ZiB0aGUgc3RydWN0dXJlIGlzIDY0Ynl0ZXMKPj4+IHlvdSBoYXZlIGVub3VnaCBzcGFjZSB0byBq YW0gaW4gdGhlIG9sZCBzdHJ1Y3R1cmVzIHRvby4KPj4geWVzLCBJIHVuZGVyc3RhbmQgeW91ciBp bnRlbnRpb24KPj4+IE5hdHVyYWxseSB0aGUgZHJpdmVyIHdvdWxkIG5lZWQgYWRqdXN0bWVudHMg YXMgaXQgb2Zmc2V0cwo+Pj4gb2Ygd2hlcmUgdGhpcyBnb2VzIGFyZSBhbGwgd3JvbmcuCj4+IGV4 YWN0bHkKPj4+PiBXaGF0IGRvIHlvdSB0aGluaz8KPj4gc28sIHdoYXQgaXMgdGhlIGRlY2lzaW9u PyBPcHRpb25zOgo+PiAxKSBMZWF2ZSB0aGUgcHJvdG9jb2wgYXMgaXMsIGlmIG5lZWQgYmUgaXQg Y2FuIGJlIGV4dGVuZGVkIGxhdGVyCj4+IDIpIEltcGxlbWVudCBzb21ldGhpbmcgc2ltaWxhciB0 byBbMV0KPj4gMykgR2l2ZSByb29tIGZvciB3b3JrYXJvdW5kcyBhbmQgcmVzZXJ2ZSBYRU5ESVNQ TF9PUF9YWFggZm9yCj4+IHdoYXQgY3VycmVudCBmYmlmIHVzZXMKPiBJIHdvdWxkIGRvIDMpIHNv IHRoYXQgaXQgYmVjb21lcyBlYXNpZXIgdG8gbWlncmF0ZSB0aGUgb2xkIGNvZGUgb3Zlci4KT2ss IHNvIEkgd2lsbCByZXNlcnZlIFhFTkRJU1BMX09QX1hYWCB0byBmaXQgZmJpZiwgbmFtZWx5OgpJ J2xsIHB1dCBYRU5ESVNQTF9PUF9SRVNFUlZFRHswfDEuLi59IGZvciB0aG9zZSB1c2VkIGJ5IGZi aWYKPj4+Pj4+IHRoYW4gdmljZSB2ZXJzYS4gZGlzcGxpZiBhdCB0aGUgbW9tZW50IGhhcyA2IHJl cXVlc3RzIGFuZCAxIGV2ZW50LAo+Pj4+Pj4gbXVsdGlwbGUgY29ubmVjdG9yIHN1cHBvcnQsIGV0 Yy4KPj4+Pj4+Cj4+Pj4+PiBDaGFuZ2VzIHNpbmNlIHYyOgo+Pj4+Pj4gICAgICogdXBkYXRlZCBY ZW5TdG9yZSBjb25maWd1cmF0aW9uIHRlbXBsYXRlL3BhdHRlcm4KPj4+Pj4+ICAgICAqIGFkZGVk ICJSZWNvdmVyeSBmbG93IiB0byBzdGF0ZSBkaWFncmFtIGRlc2NyaXB0aW9uCj4+Pj4+PiAgICAg KiByZW5hbWVkIGdyZWZfZGlyZWN0b3J5X3N0YXJ0IHRvIGdyZWZfZGlyZWN0b3J5Cj4+Pj4+PiAg ICAgKiBhZGRlZCBtaXNzaW5nICJ2ZXJzaW9ucyIgYW5kICJ2ZXJzaW9uIiBzdHJpbmcgY29uc3Rh bnRzCj4+Pj4+Pgo+Pj4+Pj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4+Pj4+ICAgICAqIGZpeGVkIHhl bmRpc3BsX2V2ZW50X3BhZ2UgcGFkZGluZyBzaXplCj4+Pj4+PiAgICAgKiBhZGRlZCB2ZXJzaW9u aW5nIHN1cHBvcnQKPj4+Pj4+ICAgICAqIGV4cGxpY2l0bHkgZGVmaW5lIHZhbHVlIHR5cGVzIGZv ciBYZW5TdG9yZSBmaWVsZHMKPj4+Pj4+ICAgICAqIHRleHQgZGVjb3JhdGlvbiByZS13b3JrCj4+ Pj4+PiAgICAgKiBhZGRlZCBvZmZzZXRzIHRvIEFTQ0lJIGJveCBub3RhdGlvbgo+Pj4+Pj4KPj4+ Pj4+IENoYW5nZXMgc2luY2UgaW5pdGlhbDoKPj4+Pj4+ICAgICAqIERSTSBjaGFuZ2VkIHRvIERJ U1BMLCBwcm90b2NvbCBtYWRlIGdlbmVyaWMKPj4+Pj4+ICAgICAqIG1ham9yIHJlLXdvcmsgYWRk cmVzc2luZyBpc3N1ZXMgcmFpc2VkIGZvciBzbmRpZgo+Pj4+Pj4KPj4+Pj4+IFNpZ25lZC1vZmYt Ynk6IE9sZWtzYW5kciBHcnl0c292IDxvbGVrc2FuZHJfZ3J5dHNvdkBlcGFtLmNvbT4KPj4+Pj4+ IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVz aGNoZW5rb0BlcGFtLmNvbT4KPj4+Pj4+IC0tLQo+Pj4+Pj4gICAgIHhlbi9pbmNsdWRlL3B1Ymxp Yy9pby9kaXNwbGlmLmggfCA3NzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+Pj4+Pj4gICAgIDEgZmlsZSBjaGFuZ2VkLCA3NzggaW5zZXJ0aW9ucygrKQo+Pj4+Pj4g ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4+ Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4+Pj4+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+Pj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi44NDlmMjdmZTVmMWQKPj4+Pj4+IC0tLSAv ZGV2L251bGwKPj4+Pj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgKPj4+ Pj4+IEBAIC0wLDAgKzEsNzc4IEBACj4+Pj4+PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+ Pj4gKyAqIGRpc3BsaWYuaAo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogVW5pZmllZCBkaXNwbGF5IGRl dmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4KPj4+Pj4+ICsgKgo+Pj4+Pj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhIGNvcHkKPj4+Pj4+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPj4+Pj4+ ICsgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcg d2l0aG91dCBsaW1pdGF0aW9uIHRoZQo+Pj4+Pj4gKyAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgo+Pj4+ Pj4gKyAqIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCj4+Pj4+PiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo YWxsIGJlIGluY2x1ZGVkIGluCj4+Pj4+PiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+Pj4+Pj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+Pj4+Pj4gKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI QUxMIFRIRQo+Pj4+Pj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPj4+Pj4+ICsgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO Rwo+Pj4+Pj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPj4+Pj4+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdB UkUuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBFUEFNIFN5 c3RlbXMgSW5jLgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogQXV0aG9yczogT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+Pj4+Pj4gKyAqICAg ICAgICAgIE9sZWtzYW5kciBHcnl0c292IDxvbGVrc2FuZHJfZ3J5dHNvdkBlcGFtLmNvbT4KPj4+ Pj4+ICsgKi8KPj4+Pj4+ICsKPj4+Pj4+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19JT19ESVNQTElG X0hfXwo+Pj4+Pj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCj4+Pj4+PiAr Cj4+Pj4+PiArI2luY2x1ZGUgInJpbmcuaCIKPj4+Pj4+ICsjaW5jbHVkZSAiLi4vZ3JhbnRfdGFi bGUuaCIKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Pj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgIE1haW4gZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhl IHByb3RvY29sCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+Pj4gKyAqIFRoaXMg cHJvdG9jb2wgYWltcyB0byBwcm92aWRlIGEgdW5pZmllZCBwcm90b2NvbCB3aGljaCBmaXRzIG1v cmUKPj4+Pj4+ICsgKiBzb3BoaXN0aWNhdGVkIHVzZS1jYXNlcyB0aGFuIGEgZnJhbWVidWZmZXIg ZGV2aWNlIGNhbiBoYW5kbGUuIEF0IHRoZQo+Pj4+Pj4gKyAqIG1vbWVudCBiYXNpYyBmdW5jdGlv bmFsaXR5IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBpbnRlbnRpb24gdG8gYmUgZXh0ZW5kZWQ6Cj4+ Pj4+PiArICogIG8gbXVsdGlwbGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkL2Rlc3Ryb3llZCBmcmFt ZWJ1ZmZlcnMKPj4+Pj4+ICsgKiAgbyBidWZmZXJzIG9mIGFyYml0cmFyeSBzaXplcwo+Pj4+Pj4g KyAqICBvIGJ1ZmZlciBhbGxvY2F0aW9uIGF0IGVpdGhlciBiYWNrIG9yIGZyb250IGVuZAo+Pj4+ Pj4gKyAqICBvIGJldHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIG11bHRpcGxl IGRpc3BsYXkgc3VwcG9ydAo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogTm90ZTogZXhpc3RpbmcgZmJp ZiBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIGRpc3BsaWYgcnVubmluZyBhdCB0aGUKPj4+Pj4+ ICsgKiBzYW1lIHRpbWUsIGUuZy4gb24gTGludXggb25lIHByb3ZpZGVzIGZyYW1lYnVmZmVyIGFu ZCBhbm90aGVyIERSTS9LTVMKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGlvbiBvZiBpbXByb3Zl bWVudHMKPj4+Pj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+Pj4+PiArICogRnV0dXJlIGV4 dGVuc2lvbnMgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29sIG1heSBpbmNsdWRlOgo+Pj4+Pj4gKyAq ICBvIGRpc3BsYXkvY29ubmVjdG9yIGNsb25pbmcKPj4+Pj4+ICsgKiAgbyBhbGxvY2F0aW9uIG9m IG9iamVjdHMgb3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZlcnMKPj4+Pj4+ICsgKiAgbyBwbGFuZS9v dmVybGF5IHN1cHBvcnQKPj4+Pj4+ICsgKiAgbyBzY2FsaW5nIHN1cHBvcnQKPj4+Pj4+ICsgKiAg byByb3RhdGlvbiBzdXBwb3J0Cj4+Pj4+PiArICoKPj4+Pj4+ICsgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCj4+Pj4+PiArICogICAgICAgICAgICAgICAgICBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVn b3RpYXRpb24KPj4+Pj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+Pj4+PiArICoKPj4+Pj4+ ICsgKiBGcm9udC0+YmFjayBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyByZXF1 ZXN0LCBzZW5kaW5nIGEKPj4+Pj4+ICsgKiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0 aW9uYWwgb24geGVuZGlzcGxfcmVxIChpLmUuLCB0aGUgZ2VuZXJpYwo+Pj4+Pj4gKyAqIGhvbGQt b2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgcmluZyBtYWNyb3MpLiBCYWNrZW5kcyBtdXN0 IHNldAo+Pj4+Pj4gKyAqIHhlbmRpc3BsX3JlcSBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBS SU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVFVRVNUUygpKS4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIEJh Y2stPmZyb250IG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlc3BvbnNlLCBz ZW5kaW5nIGEKPj4+Pj4+ICsgKiBub3RpZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwg b24geGVuZGlzcGxfcmVzcCAoaS5lLiwgdGhlIGdlbmVyaWMKPj4+Pj4+ICsgKiBob2xkLW9mZiBt ZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gRnJvbnRlbmRzIG11c3Qgc2V0 Cj4+Pj4+PiArICogeGVuZGlzcGxfcmVzcCBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5H X0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMoKSkuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBUaGUg dHdvIGhhbHZlcyBvZiBhIHBhcmEtdmlydHVhbCBkaXNwbGF5IGRyaXZlciB1dGlsaXplIG5vZGVz IHdpdGhpbgo+Pj4+Pj4gKyAqIFhlblN0b3JlIHRvIGNvbW11bmljYXRlIGNhcGFiaWxpdGllcyBh bmQgdG8gbmVnb3RpYXRlIG9wZXJhdGluZyBwYXJhbWV0ZXJzLgo+Pj4+Pj4gKyAqIFRoaXMgc2Vj dGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2 ZSBmcm9udCBhbmQKPj4+Pj4+ICsgKiBiYWNrZW5kIHBvcnRpb25zIG9mIFhlblN0b3JlLCBmb2xs b3dpbmcgdGhlIFhlbkJ1cyBjb252ZW50aW9uLgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogQWxsIGRh dGEgaW4gWGVuU3RvcmUgaXMgc3RvcmVkIGFzIHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlpbmcgbnVt ZXJpYwo+Pj4+Pj4gKyAqIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiBkZWNpbWFsLiBJbnRlZ2VyIHZh bHVlIHJhbmdlcyBsaXN0ZWQgYmVsb3cgYXJlCj4+Pj4+PiArICogZXhwcmVzc2VkIGFzIGZpeGVk IHNpemVkIGludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJzaW9uCj4+ Pj4+PiArICogb2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3Nz IG9mIGluZm9ybWF0aW9uLgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+Pj4+Pj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0aW9u Cj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogTm90 ZTogZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBleHBvc2UgbW9yZSBkaXNw bGF5IGNvbm5lY3RvcnMKPj4+Pj4+ICsgKiB0aGFuIHRoZSB1bmRlcmx5aW5nIEhXIHBoeXNpY2Fs bHkgaGFzIGJ5IGVtcGxveWluZyBTVyBncmFwaGljcyBjb21wb3NpdG9ycwo+Pj4+Pj4gKyAqCj4+ Pj4+PiArICogVGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZp Z3VyYXRpb246Cj4+Pj4+PiArICoKPj4+Pj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSBCYWNrZW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+ PiArICoKPj4+Pj4+ICsgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wL2Zyb250 ZW5kLWlkID0gIjEiCj4+Pj4+PiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEv MC9mcm9udGVuZCA9ICIvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wIgo+Pj4+Pj4gKyAq IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvc3RhdGUgPSAiNCIKPj4+Pj4+ICsg KiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wL3ZlcnNpb25zID0gIjEsMiIKPj4+ Pj4+ICsgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wL2ZlYXR1cmVzID0gImJl X2FsbG9jIgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRnJvbnRlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4g KyAqCj4+Pj4+PiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9iYWNrZW5kLWlk ID0gIjAiCj4+Pj4+PiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9iYWNrZW5k ID0gIi9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAiCj4+Pj4+PiArICogL2xvY2Fs L2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9zdGF0ZSA9ICI0Igo+Pj4+Pj4gKyAqIC9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmRpc3BsLzAvdmVyc2lvbiA9ICIxIgo+Pj4+Pj4gKyAqCj4+Pj4+PiAr ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgMCBjb25maWd1cmF0aW9uIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogL2xvY2FsL2RvbWFp bi8xL2RldmljZS92ZGlzcGwvMC8wL3Jlc29sdXRpb24gPSAiMTkyMHgxMDgwIgo+Pj4+Pj4gKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMC9jdHJsLXJpbmctcmVmID0gIjI4MzIi Cj4+Pj4+PiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8wL2N0cmwtY2hhbm5l bCA9ICIxNSIKPj4+Pj4+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzAvZXZl bnQtcmluZy1yZWYgPSAiMzg3Igo+Pj4+Pj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRp c3BsLzAvMC9ldmVudC1jaGFubmVsID0gIjE2Igo+Pj4+Pj4gKyAqCj4+Pj4+PiArICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgMSBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC8xL3Jlc29sdXRpb24gPSAiODAweDYwMCIKPj4+Pj4+ICsgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvY3RybC1yaW5nLXJlZiA9ICIyODMzIgo+Pj4+Pj4gKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9jdHJsLWNoYW5uZWwgPSAiMTciCj4+ Pj4+PiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL2V2ZW50LXJpbmctcmVm ID0gIjM4OCIKPj4+Pj4+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvZXZl bnQtY2hhbm5lbCA9ICIxOCIKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1cyBO b2Rlcwo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIHZlcnNpb25zCj4+Pj4+ PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAq ICAgICAgTGlzdCBvZiBYRU5ESVNQTF9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wg dmVyc2lvbnMgc3VwcG9ydGVkCj4+Pj4+PiArICogICAgICBieSB0aGUgYmFja2VuZC4gRm9yIGV4 YW1wbGUgIjEsMiwzIi4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIGZlYXR1cmVzCj4+Pj4+PiArICog ICAgICBWYWx1ZXM6ICAgICAgICAgPGxpc3Qgb2Ygc3RyaW5ncz4KPj4+Pj4+ICsgKgo+Pj4+Pj4g KyAqICAgICAgWEVORElTUExfTElTVF9TRVBBUkFUT1Igc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVy ZXMKPj4+Pj4+ICsgKiAgICAgIFhFTkRJU1BMX0ZFQVRVUkVfQkVfPz8/IHRoYXQgdGhlIGJhY2tl bmQgc3VwcG9ydHMuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiAgICAgIGJlX2FsbG9jCj4+Pj4+PiAr ICogICAgICAgICAgICAgQmFja2VuZCBjYW4gYmUgYSBidWZmZXIgcHJvdmlkZXIvYWxsb2NhdG9y IGR1cmluZwo+Pj4+Pj4gKyAqICAgICAgICAgICAgIFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFIG9w ZXJhdGlvbiAoc2VlIGJlbG93IGZvciBuZWdvdGlhdGlvbikuCj4+Pj4+PiArICoKPj4+Pj4+ICsg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCj4+Pj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgRnJvbnRlbmQgWGVuQnVzIE5vZGVzCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ Pj4+Pj4gKyAqCj4+Pj4+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBZGRy ZXNzaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4gKyAqCj4+Pj4+ PiArICogZG9tLWlkCj4+Pj4+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQxNl90Pgo+ Pj4+Pj4gKyAqCj4+Pj4+PiArICogICAgICBEb21haW4gaWRlbnRpZmllci4KPj4+Pj4+ICsgKgo+ Pj4+Pj4gKyAqIGRldi1pZAo+Pj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MTZf dD4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIuCj4+Pj4+PiAr ICoKPj4+Pj4+ICsgKiBjb25uLWlkeAo+Pj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1 aW50OF90Pgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogICAgICBaZXJvIGJhc2VkIGNvbnRpZ291cyBp bmRleCBvZiB0aGUgY29ubmVjdG9yLgo+Pj4+Pj4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi88ZG9t LWlkPi9kZXZpY2UvdmRpc3BsLzxkZXYtaWQ+Lzxjb25uLWlkeD4vLi4uCj4+Pj4+PiArICoKPj4+ Pj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RvY29sIHZlcnNpb24gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiB2ZXJzaW9u Cj4+Pj4+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KPj4+Pj4+ICsgKgo+Pj4+ Pj4gKyAqICAgICAgUHJvdG9jb2wgdmVyc2lvbiwgY2hvc2VuIGFtb25nIHRoZSBvbmVzIHN1cHBv cnRlZCBieSB0aGUgYmFja2VuZC4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIHJlc29sdXRpb24KPj4+Pj4+ICsgKiAgICAgIFZh bHVlczogICAgICAgICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50MzJfdD4KPj4+Pj4+ ICsgKgo+Pj4+Pj4gKyAqICAgICAgV2lkdGggYW5kIGhlaWdodCBvZiB0aGUgY29ubmVjdG9yIGlu IHBpeGVscyBzZXBhcmF0ZWQgYnkKPj4+Pj4+ICsgKiAgICAgIFhFTkRJU1BMX1JFU09MVVRJT05f U0VQQVJBVE9SLgo+Pj4+PiBJcyB0aGVyZSBhbiBkZWZhdWx0IGRlcHRoPwo+Pj4+IG5vCj4+Pj4+ ICAgICAzMj8KPj4+PiBubyBkZWZhdWx0cwo+Pj4gU2hvdWxkIHdlIGhhdmUgYSBkZWZhdWx0Pwo+ Pj4KPj4+IEFuZCBwZXJoYXBzIGFsc28gc2F5IHRoYXQgYWxsIHRoZSBvcGVyYXRpb25zIGFyZSBi b3VuZGVkIGJ5IHRoZXNlPwo+PiBub3Qgc3VyZSB3ZSBuZWVkIGRlZmF1bHQgaGVyZTogdGhpcyBp cyAqdXAgdG8gYmFja2VuZCoKPj4gd2hhdCB0byBkbyB3aXRoICpkZXB0aHMqIGFuZCAqcmVzb2x1 dGlvbnMqIHdoaWNoIGFyZSBkaWZmZXJlbnQKPj4gZnJvbSB3aGF0IEhXIGRpc3BsYXkgc3VwcG9y dHMsIGUuZy4gdGhvc2UgYnVmZmVycwo+PiBjYW4gYmUganVzdCBhIHBhcnQgb2YgdGhlIGZpbmFs IGNvbXBvc2l0aW9uLgo+PiBGb3IgZXhhbXBsZSwgYmFja2VuZCB1dGlsaXplcyBhIFNXIGNvbXBv c2l0b3Igd2hpY2gKPj4gbWFrZXMgc2NyZWVuIGNvbXBvc2l0aW5nIHdpdGggMTkyMHgxMDgweDMy IChsZXRzIHNheSwgZm9yCj4+IGV4YW1wbGUsIHRoaXMgaXMgdGhlIG1vc3Qgc3VpdGFibGUgb25l IGZvciB0aGUgR1BVIHVzZWQKPj4gYW5kIGFsc28gdGhpcyBpcyB1c2VkIGZvciBhIHJlbW90ZSBk ZXNrdG9wIC0gdXNlLWNhc2VzIG1heQo+PiBkaWZmZXIpCj4+IEJ1dCwgdGhlIHJlYWwgSFcgZGlz cGxheSBpcyBvbmx5IDEyMDB4ODAweDI0LiBTbywgb25jZSB0aGUKPj4gY29tcG9zaXRpb24gaXMg ZG9uZSwgaXQgd2lsbCBiZSBkb3duc2NhbGVkL3Jlc2FtcGxlZCBieSBhbnkKPj4gbWVhbnMgdG8g d2hhdCBIVyBkaXNwbGF5IHdhbnRzLgo+Pgo+PiBIb3BlLCB0aGlzIGJldHRlciBleHBsYWlucyB3 aHkgYnVmZmVycyBtYXkgZGlmZmVyIGZyb20KPj4gd2hhdCAicmVzb2x1dGlvbiIgc2F5cyBhbmQg ZGVwdGggdXNlZDogYnVmZmVyIGlzIG5vdAo+PiBleGFjdGx5IHdoYXQgeW91IHNlZSBmaW5hbGx5 LCBzbyBpdCBjYW4gYmUgYmlnZ2VyLCBzbWFsbGVyCj4+IG9yIGVxdWFsIC0gYWxsIHZhbGlkCj4g T0ssIHlvdSBtYXkgdG8gaW5jbHVkZSB0aGlzIGV4cGxhbmF0aW9uIGluIHRoZSBkb2N1bWVudC4K PgpPaywgSSB3aWxsIG1ha2UgdGhlIGRlc2NyaXB0aW9uIG1vcmUgc3VpdGFibGUgZm9yIHRoZSBk b2N1bWVudGF0aW9uCmFuZCBwdXQgaXQgaW4KPj4+Pj4gICAgIE9yIHNob3VsZCB0aGF0IGFsc28g YmUgbmVnb3RpYXRlZD8KPj4+PiBmcm9udGVuZCByZXF1ZXN0cyB0aGUgZGVzaXJlZCB2YWx1ZSBv ZiBpdCwgYmFja2VuZCBwcm92aWRlcyBpdAo+Pj4+IG9yIHJlamVjdHMgdGhlIHJlcXVlc3QsIHNv IGZyb250IHdpbGwgdHJ5IG90aGVyIHZhbHVlLgo+Pj4+IFNvLCB5ZXMsIHRoaXMgaXMga2luZCBv ZiBuZWdvdGlhdGlvbiBoZXJlIChFSU5WQUwgYmFzZWQgOikKPj4+PiBJIHdpbGwgYWxzbyBwdXQg YSBub3RlIHRoYXQgInJlc29sdXRpb24iIG9ubHkgZGVmaW5lcyB2aXNpYmxlIGFyZWEsCj4+Pj4g dGh1cyBkaXNwbGF5IGFuZCBmcmFtZSBidWZmZXIgc2l6ZXMgY2FuIGJlIGRpZmZlcmVudCBmcm9t IHRoaXMgdmFsdWUKPj4+IE9LLCB3aGljaCBJIHN1c3BlY3QgbWVhbnMgdGhhdCBpdCBjYW4gb25s eSBiZSBzbWFsbGVyLCBub3QgbGFyZ2VyLgo+PiBTZWUgYWJvdmUsIG5vIGluZmx1ZW5jZSBvbiBi dWZmZXIgc2l6ZQo+Pj4+Pj4gKyAqCj4+Pj4+PiArICotLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVj dG9yIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+ Pj4gKyAqCj4+Pj4+PiArICogY3RybC1jaGFubmVsCj4+Pj4+IFBsZWFzZSBjYWxsIGl0ICdjdHJs LWV2ZW50LWNoYW5uZWwnCj4+Pj4gSSB3aWxsCj4+Pj4+PiArICogICAgICBWYWx1ZXM6ICAgICAg ICAgPHVpbnQzMl90Pgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogICAgICBUaGUgaWRlbnRpZmllciBv ZiB0aGUgWGVuIGNvbm5lY3RvcidzIGNvbnRyb2wgZXZlbnQgY2hhbm5lbAo+Pj4+Pj4gKyAqICAg ICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJpbmcgYnVmZmVyLgo+Pj4+Pj4gKyAq Cj4+Pj4+PiArICogY3RybC1yaW5nLXJlZgo+Pj4+Pj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAg IDx1aW50MzJfdD4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZl cmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCj4+Pj4+PiAr ICogICAgICBhIHNvbGUgcGFnZSBpbiBhIHNpbmdsZSBwYWdlIHNpemVkIGNvbm5lY3RvcidzIGNv bnRyb2wgcmluZyBidWZmZXIuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBldmVudC1jaGFubmVsCj4+ Pj4+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+Pj4+Pj4gKyAqCj4+Pj4+ PiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGNvbm5lY3RvcidzIGV2ZW50IGNo YW5uZWwKPj4+Pj4+ICsgKiAgICAgIHVzZWQgdG8gc2lnbmFsIGFjdGl2aXR5IGluIHRoZSByaW5n IGJ1ZmZlci4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIGV2ZW50LXJpbmctcmVmCj4+Pj4+PiArICog ICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogICAg ICBUaGUgWGVuIGdyYW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFj a2VuZCB0byBtYXAKPj4+Pj4+ICsgKiAgICAgIGEgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ug c2l6ZWQgY29ubmVjdG9yJ3MgZXZlbnQgcmluZyBidWZmZXIuCj4+Pj4+IFNvIHlvdSBhcmUgbWFr aW5nIHR3byByaW5ncyBhbmQgdHdvIGV2ZW50IGNoYW5uZWxzIC0gYW5kIGl0IGxvb2tzIGxpa2Ug dGhlCj4+Pj4+IG9wZXJhdGlvbnMgYXJlIGdvaW5nIHZpYSB0aGUgY29udHJvbCByaW5nLi4gYnV0 IHdoYXQgZ29lcyB0aHJvdWdoIHRoZQo+Pj4+PiB0aGUgb3RoZXIgcmluZyBidWZmZXI/Cj4+Pj4g RXZlbnRzIGZyb20gYmFja2VuZCB0byBmcm9udGVuZCwgY3VycmVudGx5IG9ubHkgWEVORElTUExf RVZUX1BHX0ZMSVAKPj4+IEFhYWFhaCEgSW4gdGhhdCBjYXNlIEkgd291bGQgY2hhbmdlIGl0IGZy b20gJ2N0cmwtJyB0bwo+Pj4gJ3JlcS1hbGxvYycgdG8gbWF0Y2ggd2l0aC4KPj4gd2VsbCwgdGhp cyBpcyB0aGUgY29udHJvbC9jb21tYW5kIHBhdGgsIGZvciB0aGF0IHJlYXNvbiBJCj4+IHN0aWxs IHNlZSBpdHMgbmFtZSBhcyAiY3RybC9jbWQtIi4KPj4gV2hhdCBpcyBtb3JlLCBJIGNhbiBhZ3Jl ZSB0byAicmVxIiwgYnV0IHdoeSAiYWxsb2MiPwo+PiBUaGlzIHBhdGggaXMgbm90IG9ubHkgdXNl ZCBmb3IgYWxsb2NhdGlvbnMsIGJ1dCBjb25maWd1cmF0aW9uIGFzIHdlbGwuCj4+IEluIHRoZSBm dXR1cmUsIEkgd291bGQgZXhwZWN0IG90aGVyIGNvbW1hbmRzL2NvbnRyb2wgYmUgcGFzc2VkCj4+ IG92ZXIgaXQuCj4+IFNvLCB0aGVyZSBpcyBhIGNvbW1hbmQvY29udHJvbCBwYXRoICgiY3RybC0i KSBhbmQgZXZlbnQgcGF0aCAoImV2ZW50LSIpCj4+IHdoaWNoIEkgYmVsaWV2ZSBkbyByZWZsZWN0 IHRoZWlyIHVzYWdlLgo+IElzbid0IHRoaXMgdGllZCB0byAnWEVORElTUExfRkVBVFVSRV9CRV9B TExPQycgZmVhdHVyZT8gSWYgc28gSSB3b3VsZAo+IGNhbGwgaXQgd2l0aCB0aGF0IG5hbWUgaW4g bWluZC4KTm8uIFhFTkRJU1BMX0ZFQVRVUkVfQkVfQUxMT0MganVzdCBzYXlzLCB0aGF0IGJ1ZmZl cnMgY2FuIGJlIGFsbG9jYXRlZApieSB0aGUgYmFja2VuZCBhbmQgc2hhcmVkIHdpdGggZnJvbnRl bmQuIFRoaXMgaXMgc3BlY2lmaWNhbGx5IGZvciB6ZXJvLWNvcHkKdXNlLWNhc2Ugd2hpY2ggbWF5 IGhhdmUgc29tZSBzZWN1cml0eSBjb25jZXJuczogZnJvbnQgd2lsbCBtYXAgcGFnZXMKYWxsb2Nh dGVkIGJ5IHRoZSBiYWNrIGZvciBzdWNoIGJ1ZmZlcnMuClNvLCBJIHdvdWxkIHN0aWxsIGNhbGwg aXQgZWl0aGVyICJjdHJsLSIgb3IgImNtZC0iClBsZWFzZSBzZWUgZGVzY3JpcHRpb24gb2YgdGhl IGV2ZW50IGNoYW5uZWxzL3JpbmcgYmVsb3cKPj4+PiBJIHdpbGwgZGVmaW5lIDIgc2VjdGlvbnM6 Cj4+Pj4gICAgKi0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgUmVxdWVzdCBUcmFuc3BvcnQg UGFyYW1ldGVycwo+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+PiAgICAqCj4+Pj4gICAgKiBj dHJsLWV2ZW50LWNoYW5uZWwKPj4+PiAgICAqIGN0cmwtcmluZy1yZWYKPj4+PiAgICAqCj4+Pj4g ICAgKi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIEV2ZW50IFRyYW5zcG9ydCBQYXJhbWV0 ZXJzCj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+PiAgICAqCj4+Pj4gICAgKiBldmVudC1j aGFubmVsCj4+Pj4gICAgKiBldmVudC1yaW5nLXJlZgo+Pj4+Cj4+Pj4+IE9yIGlzIHRoZSBvdGhl ciByaW5nIGJ1ZmZlciB0aGUgb25lIHRoYXQgaXMgY3JlYXRlZCB2aWEgJ2dyZWZfZGlyZWN0b3J5 JyA/Cj4+Pj4gbm8KPj4+PiBBdCB0aGUgYm90dG9tOgo+Pj4+ICAgICogSW4gb3JkZXIgdG8gZGVs aXZlciBhc3luY2hyb25vdXMgZXZlbnRzIGZyb20gYmFjayB0byBmcm9udCBhIHNoYXJlZCBwYWdl Cj4+Pj4gaXMKPj4+PiAgICAqIGFsbG9jYXRlZCBieSBmcm9udCBhbmQgaXRzIGdyZWYgcHJvcGFn YXRlZCB0byBiYWNrIHZpYSBYZW5TdG9yZSBlbnRyaWVzCj4+Pj4gICAgKiAoZXZlbnQtWFhYKS4K Pj4+IEFBbmQgeW91IG1heSB3YW50IHRvIHNheSB0aGlzIGlzIGd1YXJkZWQgYnkgUkVRX0FMTE9D IGZlYXR1cmUgcmlnaHQ/Cj4+IE5vdCBzdXJlIEkgdW5kZXJzdG9vZCB5b3UuIEV2ZW50IHBhdGgg aXMgdG90YWxseSBpbmRlcGVuZGVudAo+PiBmcm9tIGFueSBmZWF0dXJlLCBlLmcuIFJFUV9BTExP Qy4KPj4gSXQganVzdCBwcm92aWRlcyBtZWFucyB0byBzZW5kIGFzeW5jIGV2ZW50cwo+PiBmcm9t IGJhY2sgdG8gZnJvbnQsICJwYWdlIGZsaXAgZG9uZSIgaW4gbXkgY2FzZS4KPiA8c2NyYXRjaGUg aGlzIGhlYWQ+IFdoeSBkbyB5b3UgbmVlZCBhIHNlcGVyYXRlIHJpbmcgdG8gc2VuZAo+IHJlc3Bv bnNlcyBiYWNrPyBXaHkgbm90IHVzZSB0aGUgc2FtZSByaW5nIG9uIHdoaWNoIHJlcXVlc3RzCj4g d2VyZSBzZW50Ck9rLCBpdCBzZWVtcyB3ZSBhcmUgbm90IG9uIHRoZSBzYW1lIHBhZ2UgZm9yIHJp bmdzL2NoYW5uZWxzIHVzYWdlLgpMZXQgbWUgZGVzY3JpYmUgaG93IHRob3NlIGFyZSB1c2VkOgoK MS4gQ29tbWFuZC9jb250cm9sIGV2ZW50IGNoYW5uZWwgYW5kIGl0cyBjb3JyZXNwb25kaW5nIHJp bmcgYXJlIHVzZWQKdG8gcGFzcyByZXF1ZXN0cyBmcm9tIGZyb250IHRvIGJhY2sgKFhFTkRJU1BM X09QX1hYWCkgYW5kIGdldCByZXNwb25zZXMKZnJvbSB0aGUgYmFjay4gVGhlc2UgYXJlIHN5bmNo cm9ub3VzLCB1c2UgbWFjcm9zIGZyb20gcmluZy5oOgpjdHJsLWV2ZW50LWNoYW5uZWwgKyBjdHJs LXJpbmctcmVmCkkgY2FsbCB0aGVtICJjdHJsLSIgYmVjYXVzZSB0aGlzIHdheSBmcm9udCBjb250 cm9scyBiYWNrLCBvciBzZW5kcyBjb21tYW5kcwppZiB5b3Ugd2lsbC4gTWF5YmUgImNtZC0iIHdv dWxkIGZpdCBiZXR0ZXIgaGVyZT8KCjIuIEV2ZW50IGNoYW5uZWwgLSBhc3luY2hyb25vdXMgcGF0 aCBmb3IgdGhlIGJhY2tlbmQgdG8gc2lnbmFsIGFjdGl2aXR5CnRvIHRoZSBmcm9udGVuZCwgY3Vy cmVudGx5IHVzZWQgZm9yICJwYWdlIGZsaXAgZG9uZSIgZXZlbnQgd2hpY2ggaXMgc2VudAphdCBz b21lIHBvaW50IG9mIHRpbWUgYWZ0ZXIgYmFjayBoYXMgYWN0dWFsbHkgY29tcGxldGVkIHRoZSBw YWdlIGZsaXAgCnJlcXVlc3RlZAooc28sIGJlZm9yZSB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIHJl cXVlc3Qgd2FzIHNlbnQgYW5kIHJlc3BvbnNlIApyZWNlaXZlZCwgYnV0Cm9wZXJhdGlvbiBkaWRu J3QgY29tcGxldGUgeWV0LCBpbnN0ZWFkIGl0IHdhcyBzY2hlZHVsZWQpCk5vIG1hY3JvcyBleGlz dCBmb3IgdGhpcyB1c2UtY2FzZSBpbiByaW5nLmggKGtiZGlmK2ZiaWYgaW1wbGVtZW50CnRoaXMg b24gdGhlaXIgb3duLCBzbyBkbyBJKQpUaGVzZSBhcmU6ICBldmVudC1jaGFubmVsICsgZXZlbnQt cmluZy1yZWYKUHJvYmFibHkgaGVyZSBpcyB0aGUgcG9pbnQgZnJvbSB3aGVyZSBjb25mdXNpb24g Y29tZXMsIG5hbWluZy4KV2UgY2FuIGhhdmUgc29tZXRoaW5nIGxpa2UgImJlLXRvLWZlLWV2ZW50 LWNoYW5uZWwiIG9yIGFueXRoaW5nIGVsc2UKbW9yZSBjdXRlIGFuZCBkZXNjcmlwdGl2ZS4KCkhv cGUgdGhpcyBleHBsYWlucyB0aGUgbmVlZCBmb3IgMiBwYXRocwoKPj4+Pj4gSWYgc28sIHdvdWxk bid0IHlvdSBuZWVkIG11bGl0cGxlIGV2ZW50IGNoYW5uZWxzPyBBbmQgYWxzbyB0aGUgc2l6ZSBv ZiB0aG9zZQo+Pj4+PiByaW5ncyBpcyBtdWNoIG11Y2ggYmlnZ2VyLiBCdXQgaXQgaXMgbm90IHJl YWxseSBhIHJpbmcuIEl0IGxvb2tzIHRvIGhvbGQKPj4+Pj4gc29tZSBvcGFxdWUgZGF0YT8KPj4+ Pj4KPj4+Pj4gLUVDT05GVVNFRC4KPj4+Pj4+ICsgKi8KPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+ Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTVEFURSBESUFHUkFNUwo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK Pj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBmcm9udCBhbmQgYmFjayBz dGF0ZSBub2RlcyB3aXRoIGluaXRpYWwgc3RhdGUKPj4+Pj4+ICsgKiBYZW5idXNTdGF0ZUluaXRp YWxpc2luZy4KPj4+Pj4+ICsgKiBUb29sIHN0YWNrIGNyZWF0ZXMgYW5kIHNldHMgdXAgZnJvbnRl bmQgZGlzcGxheSBjb25maWd1cmF0aW9uCj4+Pj4+PiArICogbm9kZXMgcGVyIGRvbWFpbi4KPj4+ Pj4+ICsgKgo+Pj4+Pj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9ybWFs IGZsb3cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+ICsgKgo+Pj4+Pj4g KyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrCj4+Pj4+PiArICog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KPj4+Pj4+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgICAg ICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcKPj4+Pj4+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgYmFja2VuZCBkZXZpY2UgaWRlbnRpZmlj YXRpb24KPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YS4KPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8g T3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2UuCj4+Pj4+PiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4+PiArICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4+PiArICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCj4+Pj4+PiArICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQKPj4+ Pj4+ICsgKgo+Pj4+Pj4gKyAqIG8gUXVlcnkgZnJvbnRlbmQgY29uZmlndXJhdGlvbgo+Pj4+Pj4g KyAqIG8gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUKPj4+Pj4+ICsgKiAgIGV2ZW50IGNoYW5uZWxz IHBlciBjb25maWd1cmVkCj4+Pj4+PiArICogICBjb25uZWN0b3IuCj4+Pj4+PiArICogbyBQdWJs aXNoIHRyYW5zcG9ydCBwYXJhbWV0ZXJzCj4+Pj4+PiArICogICB0aGF0IHdpbGwgYmUgaW4gZWZm ZWN0IGR1cmluZwo+Pj4+Pj4gKyAqICAgdGhpcyBjb25uZWN0aW9uLgo+Pj4+Pj4gKyAqICAgICAg ICAgICAgICB8Cj4+Pj4+PiArICogICAgICAgICAgICAgIHwKPj4+Pj4+ICsgKiAgICAgICAgICAg ICAgVgo+Pj4+Pj4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQKPj4+Pj4+ICsgKgo+Pj4+Pj4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBmcm9udGVu ZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG8gQ29ubmVjdCB0byB0aGUgZXZlbnQgY2hhbm5lbHMuCj4+Pj4+PiAr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+Pj4+ PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ Pj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW Cj4+Pj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0 YXRlQ29ubmVjdGVkCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiAgbyBDcmVhdGUgYW5kIGluaXRpYWxp emUgT1MKPj4+Pj4+ICsgKiAgICB2aXJ0dWFsIGRpc3BsYXkgY29ubmVjdG9ycwo+Pj4+Pj4gKyAq ICAgIGFzIHBlciBjb25maWd1cmF0aW9uLgo+Pj4+Pj4gKyAqICAgICAgICAgICAgICB8Cj4+Pj4+ PiArICogICAgICAgICAgICAgIHwKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgVgo+Pj4+Pj4gKyAq IFhlbmJ1c1N0YXRlQ29ubmVjdGVkCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3duCj4+Pj4+PiArICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCj4+Pj4+ PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xv c2luZwo+Pj4+Pj4gKyAqIG8gUmVtb3ZlIHZpcnR1YWwgZGlzcGxheSBkZXZpY2UKPj4+Pj4+ICsg KiBvIFJlbW92ZSBldmVudCBjaGFubmVscwo+Pj4+Pj4gKyAqICAgICAgICAgICAgICB8Cj4+Pj4+ PiArICogICAgICAgICAgICAgIHwKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgVgo+Pj4+Pj4gKyAq IFhlbmJ1c1N0YXRlQ2xvc2VkCj4+Pj4+PiArICoKPj4+Pj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gUmVjb3ZlcnkgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBJbiBjYXNlIG9mIGZyb250ZW5kIHVucmVjb3ZlcmFi bGUgZXJyb3JzIGJhY2tlbmQgaGFuZGxlcyB0aGF0IGFzCj4+Pj4+PiArICogaWYgZnJvbnRlbmQg Z29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZUNsb3NlZCBzdGF0ZS4KPj4+Pj4+ICsgKgo+Pj4+Pj4g KyAqIEluIGNhc2Ugb2YgYmFja2VuZCB1bnJlY292ZXJhYmxlIGVycm9ycyBmcm9udGVuZCB0cmll cyByZW1vdmluZwo+Pj4+Pj4gKyAqIHRoZSBlbXVsYXRlZCBkZXZpY2UuIElmIHRoaXMgaXMgcG9z c2libGUgYXQgdGhlIG1vbWVudCBvZiBlcnJvciwKPj4+Pj4gV2hhdCBlbXVsYXRlZCBkZXZpY2U/ Cj4+Pj4gcy9lbXVsYXRlZC92aXJ0dWFsaXplZC9nIGZvciBhbGw/Cj4+PiAvbWUgbm9kcy4KPj4g ZG9uZQo+Pj4+Pj4gKyAqIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0ZUlu aXRpYWxpc2luZyBzdGF0ZSBhbmQgaXMgcmVhZHkgZm9yCj4+Pj4+PiArICogbmV3IGNvbm5lY3Rp b24gd2l0aCBiYWNrZW5kLiBJZiB0aGUgZW11bGF0ZWQgZGV2aWNlIGlzIHN0aWxsIGluIHVzZSBh bmQKPj4+Pj4gZW11bGF0ZWQgZGV2aWNlPwo+Pj4+Pgo+Pj4+Pj4gKyAqIGNhbm5vdCBiZSByZW1v dmVkLCB0aGVuIGZyb250ZW5kIGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5n IHN0YXRlCj4+Pj4+IC4uIGFuZCB3aGF0IGlzIGRvbmUgaW4gWGVuYnVzU3RhdGVSZWNvbmZpZ3Vy aW5nIHN0YXRlPwo+Pj4+Pgo+Pj4+PiBJIGFtIGFzc3VtaW5nICdyZXNvbHV0aW9uJyBpcyBleGFt aW5lZD8KPj4+Pj4KPj4+Pj4+ICsgKiB1bnRpbCBlaXRoZXIgdGhlIGVtdWxhdGVkIGRldmljZSBy ZW1vdmVkIG9yIGJhY2tlbmQgaW5pdGlhdGVzIGEgbmV3Cj4+Pj4+PiArICogY29ubmVjdGlvbi4g T24gdGhlIGVtdWxhdGVkIGRldmljZSByZW1vdmFsIGZyb250ZW5kIGdvZXMgaW50byB0aGUKPj4+ Pj4gZW11bGF0ZWQgZGV2aWNlPwo+Pj4+IFRoZSB3aG9sZSBpZGVhIGhlcmUgaXMgdG8gbGV0IGZy b250ZW5kIHJlY292ZXIgZnJvbSBiYWNrZW5kIGZhaWx1cmUuCj4+Pj4gV2hhdCBoYXBwZW5zIHdo ZW4gYmFja2VuZCBkaWVzOiBmcm9udGVuZCBjYW5ub3Qgc2VuZCByZXF1ZXN0cwo+Pj4+IHRvIHRo ZSBiYWNrZW5kIGFuZCB0aHVzIGNhbm5vdCBlbXVsYXRlICh2aXJ0dWFsaXplKSBkaXNwbGF5Cj4+ Pj4gZGV2aWNlIGFueW1vcmUuIFRoZXJlIGlzIG5vIHNpbXBsZSBzb2x1dGlvbiBsaWtlIGRpc2Nv bm5lY3RpbmcgcmluZ3MKPj4+PiBhbmQgd2FpdGluZyBmb3IgdGhlIGJhY2tlbmQgdG8gcmUtY29u bmVjdCwgYXMgZGlzcGxheSBkZXZpY2UsIGp1c3QgbGlrZQo+Pj4+IHNvdW5kIGRldmljZXMsIGRv ZXMgaG9sZCBzb21lIHN0YXRlOiBjb25maWd1cmF0aW9uIGluIHVzZSwgbnVtYmVyIG9mIGRpc3Bs YXkKPj4+PiBidWZmZXJzLCBmcmFtZWJ1ZmZlcnMsIGFwcGxpY2F0aW9uIHN0YXRlLCBmcmFtZXdv cmsgIndhdGNoZG9ncyIgKGxpa2UKPj4+PiB2ZXJ0aWNhbCBibGFuayB0aW1lLW91dHMgYW5kIHJl Y292ZXJ5IGF0IGZyYW1ld29yayBsZXZlbCkgZXRjLgo+Pj4+IFNvLCBpbiBtb3N0IGNhc2VzLCBp dCB3b3VsZCByZXF1aXJlIGZyb250ZW5kIHRvIGltcGxlbWVudCBjb21wbGV4IHJlY292ZXJ5Cj4+ Pj4gbG9naWMuIEluc3RlYWQsIHdoYXQgSSBzdWdnZXN0LCB0aGF0IHdlIGdvIGludG8gc29tZSBz dGF0ZSwgd2hpY2ggdGVsbHMgdGhhdAo+Pj4+IHdlIGFyZSBub3QgeWV0IHJlYWR5IHRvIGdvIGlu dG8gSW5pdGlhbGl6ZWQgc3RhdGUgYW5kIHN0aWxsIG5lZWQgc29tZSB0aW1lOgo+Pj4+IGF0IHRo aXMgdGltZSBmcm9udGVuZCB3aWxsIHRyeSB0byBtYWtlIHN1cmUgbm8gbmV3IGNsaWVudHMgZnJv bSB1c2VyLXNwYWNlCj4+Pj4gYXJlIGFjY2VwdGVkLCBpdCBhbGxvd3MgdGhlIGN1cnJlbnQgY2xp ZW50IHRvIGV4aXQgZ3JhY2VmdWxseSBieSByZXR1cm5pbmcKPj4+PiBlcnJvciBjb2RlcyBldGMu IE9uY2UgYWxsIHRoZSBjbGllbnRzIGFyZSBnb25lIGZyb250ZW5kIGNhbiByZWluaXRpYWxpemUK Pj4+PiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlLCBlLmcuIERSTS9LTVMgZHJpdmVyLCBhbmQgZ2V0 IGludG8gSW5pdGlhbGl6ZWQgc3RhdGUKPj4+PiBhZ2Fpbi4KPj4+IFRoYXQgaXMgZmluZS4KPj4+ PiBUaHVzLCBJIHdhcyB0aGlua2luZyBvZiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmdzdGF0ZSBh cyBhcHByb3ByaWF0ZSBpbiB0aGlzCj4+Pj4gY2FzZQo+Pj4gUmlnaHQsIGJ1dCBzb21lYm9keSBo YXMgdG8gbW92ZSB0byB0aGlzIHN0YXRlLiBXaG8gd291bGQgZG8gaXQ/Cj4+IHdoZW4gYmFja2Vu ZCBkaWVzIGl0cyBzdGF0ZSBjaGFuZ2VzIHRvICJjbG9zZWQiLgo+PiBBdCB0aGlzIG1vbWVudCBm cm9udCB0cmllcyB0byByZW1vdmUgdmlydHVhbGl6ZWQgZGV2aWNlCj4+IGFuZCBpZiBpdCBpcyBw b3NzaWJsZS9kb25lLCB0aGVuIGl0IGdvZXMgaW50byAiaW5pdGlhbGl6ZWQiCj4+IHN0YXRlLiBJ ZiBub3QgLSAicmVjb25maWd1cmluZyIuCj4+IFNvLCB5b3Ugd291bGQgYXNrIGhvdyBkb2VzIHRo ZSBmcm9udCBnbyBmcm9tICJyZWNvbmZpZ3VyaW5nIgo+PiBpbnRvICJpbml0aWFsaXplZCIgc3Rh dGU/IFRoaXMgaXMgT1MvZnJvbnQgc3BlY2lmaWMsIGJ1dDoKPj4gMS4gdGhlIHVuZGVybHlpbmcg ZnJhbWV3b3JrLCBlLmcuIERSTS9LTVMsIEFMU0EsIHByb3ZpZGUKPj4gYSBjYWxsYmFjayhzKSB0 byBzaWduYWwgdGhhdCB0aGUgbGFzdCBjbGllbnQgdG8gdGhlCj4+IHZpcnR1YWxpemVkIGRldmlj ZSBoYXMgZ29uZSBhbmQgdGhlIGRyaXZlciBjYW4gYmUgcmVtb3ZlZAo+PiAoZXF1aXZhbGVudCB0 byBtb2R1bGUncyB1c2FnZSBjb3VudGVyIDApCj4+IDIuIG9uZSBjYW4gc2NoZWR1bGUgYSBkZWxh eWVkIHdvcmsgKHRpbWVyL3Rhc2tsZXQvd29ya3F1ZXVlKQo+PiB0byBwZXJpb2RpY2FsbHkgY2hl Y2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgdGltZSB0byByZS10cnkKPj4gdGhlIHJlbW92YWwgYW5k IHJlbW92ZQo+Pgo+PiBJbiBib3RoIGNhc2VzLCBhZnRlciB0aGUgdmlydHVhbGl6ZWQgZGV2aWNl IGhhcyBiZWVuIHJlbW92ZWQgd2UgbW92ZQo+PiBpbnRvICJpbml0aWFsaXplZCIgc3RhdGUgYWdh aW4gYW5kIGFyZSByZWFkeSBmb3IgbmV3IGNvbm5lY3Rpb25zCj4+IHdpdGggYmFja2VuZCAoaWYg aXQgYXJvc2UgZnJvbSB0aGUgZGVhZCA6KQo+Pj4gV291bGQgdGhlCj4+PiBmcm9udGVuZCBoYXZl IHNvbWUgZm9ybSBvZiB0aW1lciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYmFja2VuZCBpcyBzdGls bAo+Pj4gYWxpdmU/IEFuZCBpZiBpdCBoYWQgZGllZCB0aGVuIG1vdmUgdG8gUmVjb25maWd1cmlu Zz8KPj4gVGhlcmUgYXJlIGF0IGxlYXN0IDIgd2F5cyB0byB1bmRlcnN0YW5kIGlmIGJhY2sgaXMg ZGVhZDoKPj4gMS4gWGVuQnVzIHN0YXRlIGNoYW5nZSAoYmFjayBpcyBjbG9zZWQpCj4gLi4gSWYg dGhlIGJhY2tlbmQgZG9lcyBhIG5pY2Ugc2h1dGRvd24uLgpobSwgb24gTGludXggSSBjYW4ga2ls bCAtOSBiYWNrZW5kIGFuZCBYZW5CdXMgZHJpdmVyIHNlZW1zCnRvIGJlIGFibGUgdG8gdHVybiBi YWNrJ3Mgc3RhdGUgaW50byAiY2xvc2VkIgppc24ndCB0aGlzIGV4cGVjdGVkIGJlaGF2aW9yPwo+ Cj4+IDIuIHRpbWUtb3V0cyBvbiByZXF1ZXN0cyBmcm9tIGZyb250IHRvIGJhY2sKPj4KPiBSaWdo dC4KPj4gQm90dG9tIGxpbmUgb24gdGhlICJyZWNvdmVyeSBmbG93Ijogd2hhdCBJIGRlc2NyaWJl IGNvdWxkIGJlIHB1dCBpbgo+PiB0aGUgZGVzY3JpcHRpb24gYXMgYW4gZXhhbXBsZSB0byBjbGFy aWZ5IG1vcmUgdGhpcy4KPj4+Pj4+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0ZS4K Pj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+Pj4+ICsgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVCBDT0RFUwo+Pj4+Pj4gKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKPj4+Pj4+ICsgKi8KPj4+Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZf Q1JFQVRFICAgICAgIDAKPj4+Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZfREVTVFJPWSAg ICAgIDEKPj4+Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0ZCX0FUVEFDSCAgICAgICAgIDIKPj4+ Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0ZCX0RFVEFDSCAgICAgICAgIDMKPj4+Pj4+ICsjZGVm aW5lIFhFTkRJU1BMX09QX1NFVF9DT05GSUcgICAgICAgIDQKPj4+Pj4+ICsjZGVmaW5lIFhFTkRJ U1BMX09QX1BHX0ZMSVAgICAgICAgICAgIDUKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVWRU5UIENPREVTCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+Pj4g KyAqLwo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfRVZUX1BHX0ZMSVAgICAgICAgICAgMAo+Pj4+ Pj4gKwo+Pj4+Pj4gKy8qCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+Pj4gKyAq ICAgICAgICAgICAgICAgWEVOU1RPUkUgRklFTEQgQU5EIFBBVEggTkFNRSBTVFJJTkdTLCBIRUxQ RVJTCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+Pj4gKyAqLwo+Pj4+Pj4gKyNk ZWZpbmUgWEVORElTUExfRFJJVkVSX05BTUUgICAgICAgICAgInZkaXNwbCIKPj4+Pj4+ICsKPj4+ Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX0xJU1RfU0VQQVJBVE9SICAgICAgICIsIgo+Pj4+Pj4gKyNk ZWZpbmUgWEVORElTUExfUkVTT0xVVElPTl9TRVBBUkFUT1IgIngiCj4+Pj4+PiArLyogRmllbGQg bmFtZXMgKi8KPj4+Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0JFX1ZFUlNJT05TICAgICJ2 ZXJzaW9ucyIKPj4+Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0ZFX1ZFUlNJT04gICAgICJ2 ZXJzaW9uIgo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfRkVBVFVSRVMgICAgICAgImZl YXR1cmVzIgo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfQ1RSTF9SSU5HX1JFRiAgImN0 cmwtcmluZy1yZWYiCj4+Pj4+PiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9DVFJMX0NIQU5ORUwg ICAiY3RybC1jaGFubmVsIgo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfRVZUX1JJTkdf UkVGICAgImV2ZW50LXJpbmctcmVmIgo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfRVZU X0NIQU5ORUwgICAgImV2ZW50LWNoYW5uZWwiCj4+Pj4+PiArI2RlZmluZSBYRU5ESVNQTF9GSUVM RF9SRVNPTFVUSU9OICAgICAicmVzb2x1dGlvbiIKPj4+Pj4+ICsKPj4+Pj4+ICsjZGVmaW5lIFhF TkRJU1BMX0ZFQVRVUkVfQkVfQUxMT0MgICAgICJiZV9hbGxvYyIKPj4+Pj4+ICsKPj4+Pj4+ICsv Kgo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+Pj4+ICsgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgU1RBVFVTIFJFVFVSTiBDT0RFUwo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFN0YXR1cyByZXR1cm4gY29kZSBpcyB6ZXJvIG9u IHN1Y2Nlc3MgYW5kIC1YRU5fRVhYIG9uIGZhaWx1cmUuCj4+Pj4+PiArICoKPj4+Pj4+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCj4+Pj4+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBc3N1bXB0aW9ucwo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+Pj4+ICsgKiBv IHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFzIGludmFsaWQgZ3JhbnQgcmVmZXJlbmNlOgo+ Pj4+Pj4gKyAqICAgZ3JhbnQgcmVmZXJlbmNlIDAgaXMgdmFsaWQsIGJ1dCBuZXZlciBleHBvc2Vk IHRvIGEgUFYgZHJpdmVyLAo+Pj4+Pj4gKyAqICAgYmVjYXVzZSBvZiB0aGUgZmFjdCBpdCBpcyBh bHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KPj4+Pj4+ICsgKiBvIGFs bCByZWZlcmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBzaXplcyBtdXN0IGJlIHRyZWF0 ZWQKPj4+Pj4+ICsgKiAgIGFzIHBhZ2VzIG9mIHNpemUgWEVOX1BBR0VfU0laRSB1bmxlc3Mgb3Ro ZXJ3aXNlIG5vdGVkLgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ Pj4+Pj4gKyAqICAgICAgIERlc2NyaXB0aW9uIG9mIHRoZSBwcm90b2NvbCBiZXR3ZWVuIGZyb250 ZW5kIGFuZCBiYWNrZW5kIGRyaXZlcgo+Pj4+Pj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4+ Pj4+ICsgKgo+Pj4+Pj4gKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgUGFyYS12aXJ0dWFsIGRpc3Bs YXkgZHJpdmVyIGNvbW11bmljYXRlIHdpdGgKPj4+Pj4+ICsgKiBlYWNoIG90aGVyIHVzaW5nIHNo YXJlZCBwYWdlcyBhbmQgZXZlbnQgY2hhbm5lbHMuCj4+Pj4+PiArICogU2hhcmVkIHBhZ2UgY29u dGFpbnMgYSByaW5nIHdpdGggcmVxdWVzdC9yZXNwb25zZSBwYWNrZXRzLgo+Pj4+Pj4gKyAqCj4+ Pj4+PiArICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0 IGJlIDAuCj4+Pj4+PiArICogRGlzcGxheSBidWZmZXJzJ3MgY29va2llIG9mIHZhbHVlIDAgdHJl YXRlZCBhcyBpbnZhbGlkLgo+Pj4+Pj4gKyAqIEZyYW1lYnVmZmVyJ3MgY29va2llIG9mIHZhbHVl IDAgdHJlYXRlZCBhcyBpbnZhbGlkLgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogQWxsIHJlcXVlc3RzL3Jlc3BvbnNlcywgd2hp Y2ggYXJlIG5vdCBjb25uZWN0b3Igc3BlY2lmaWMsIG11c3QgYmUgc2VudCBvdmVyCj4+Pj4+PiAr ICogY29udHJvbCByaW5nIG9mIHRoZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgo+Pj4+Pj4gKyAq Cj4+Pj4+PiArICogRm9yIGFsbCByZXF1ZXN0L3Jlc3BvbnNlL2V2ZW50IHBhY2tldHMgdGhhdCB1 c2UgY29va2llczoKPj4+Pj4+ICsgKiAgIGRidWZfY29va2llIC0gdWludDY0X3QsIHVuaXF1ZSB0 byBndWVzdCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUgYmFja2VuZAo+Pj4+Pj4gKyAqICAgICB0 byBtYXAgcmVtb3RlIGRpc3BsYXkgYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKPj4+Pj4+ICsgKiAg IGZiX2Nvb2tpZSAtIHVpbnQ2NF90LCB1bmlxdWUgdG8gZ3Vlc3QgZG9tYWluIHZhbHVlIHVzZWQg YnkgdGhlIGJhY2tlbmQKPj4+Pj4+ICsgKiAgICAgdG8gbWFwIHJlbW90ZSBmcmFtZWJ1ZmZlciB0 byBpdHMgbG9jYWwgb25lCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBBbGwgcmVxdWVzdCBwYWNrZXRz IGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3RldHMpCj4+Pj4+PiArICogQWxsIHJlcXVlc3Qg cGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cj4+Pj4+PiArICogICAgICAgICAwICAgICAgICAg ICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+ Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICBpZCAgICAg ICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAgIHwgICByZXNlcnZlZCAgICAgfCA0Cj4+Pj4+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPj4+Pj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPj4+Pj4+ICsgKiAgIGlkIC0gdWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUs IGVjaG9lZCBpbiByZXNwb25zZQo+Pj4+Pj4gKyAqICAgb3BlcmF0aW9uIC0gdWludDhfdCwgb3Bl cmF0aW9uIGNvZGUsIFhFTkRJU1BMX09QXz8/Pwo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogUmVxdWVz dCBkYnVmIGNyZWF0aW9uIC0gcmVxdWVzdCBjcmVhdGlvbiBvZiBhIGRpc3BsYXkgYnVmZmVyLgo+ Pj4+Pj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAg ICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9EQlVGX0NSRUFURSB8 ICAgcmVzZXJ2ZWQgICAgIHwgNAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA4Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAg ICB8IDEyCj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICB8IDE2 Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB3aWR0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCj4+Pj4+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4+Pj4+PiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4Cj4+Pj4+PiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3N6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMyCj4+Pj4+PiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDM2Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyZWN0b3J5ICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDQwCj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDQ0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC98Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0 Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBNdXN0IGJlIHNl bnQgb3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCj4+Pj4+ PiArICoKPj4+Pj4+ICsgKiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0aCBpbiBwaXhlbHMKPj4+Pj4+ ICsgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscwo+Pj4+PiBXaHk/IElzbid0 IHRoYXQgaW4gdGhlICdyZXNvbHV0aW9uJyBYZW5CdXMgZW50cnk/Cj4+Pj4gSXQgY2FuIGJlIGJp Z2dlciB0aGF0IHRoZSByZXNvbHV0aW9uLCBmb3IgZXhhbXBsZQo+Pj4+IGlmIHNjYWxpbmcgd2ls bCB0YWtlIHBsYWNlLgo+Pj4gSG93IHdvdWxkIHlvdSByZWZsZWN0IHRoZSBzY2FsaW5nIHBhcnQg b2YgdGhpcz8gSXMgdGhhdCBzb21ldGhpbmcKPj4+IHRoYXQgaXMgYXNzdW1lZCBpZiB0aGUgWGVu QnVzIHJlc29sdXRpb24gdmFsdWUgPCB3aWR0aHhoZWlnaHQgdmFsdWVzPwo+PiBBcyBpbiB0aGUg YWJvdmUgZXhhbXBsZSB3aXRoIGJhY2sgdXRpbGl6aW5nIGFuIFNXIGNvbXBvc2l0b3IsCj4+IHNj YWxpbmcgd2lsbCBiZSBkb25lIGJ5IHRoZSBiYWNrZW5kLCBmcm9udCBub3dzIG5vdGhpbmcKPj4g YWJvdXQgdGhlIGRlc3Rpbnkgb2YgdGhlIGJ1ZmZlcnMgaXQgd2FudHMgdG8gc2hvdwo+PiBTbywg bm8gbmVlZCB0byB3b3JyeSBhYm91dCB3aWR0aFhoZWlnaHRYZGVwdGggb2YgdGhlIGJ1ZmZlcnMK Pj4+Pj4gSWYgbm90LCB3aHkgZXZlbiBoYXZlIHRoZSAncmVzb2x1dGlvbicgZmllbGQ/Cj4+Pj4g VGhlIGNvbmZ1c2lvbiBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgdGhlIHJlc29sdXRpb24gaXMg dmlzaWJsZSBhcmVhOgo+Pj4+IHdpbGwgc3RhdGUgdGhhdCBjbGVhcmx5Lgo+Pj4+PiBBbmQgYWxz byAtIHdoYXQgaWYgdGhlIHdpZHRoIG9yIGhlaWdodCBhcmUgYmlnZ2VyIHRoYW4gJ3Jlc29sdXRp b24nPwo+Pj4+PiBTaG91bGQgLUVJTlZBTCBiZSByZXR1cm5lZD8KPj4+Pj4KPj4+PiBubyBwcm9i bGVtIGhlcmU6IHdlIGNhbiBoYXZlIGJ1ZmZlcnMgYmlnZ2VyIHRoYW4gdmlzaWJsZSBhcmVhCj4+ Pj4+PiArICogYnBwIC0gdWludDMyX3QsIGJpdHMgcGVyIHBpeGVsCj4+Pj4+PiArICogYnVmZmVy X3N6IC0gdWludDMyX3QsIGJ1ZmZlciBzaXplIHRvIGJlIGFsbG9jYXRlZCwgb2N0ZXRzCj4+Pj4+ PiArICogZmxhZ3MgLSB1aW50MzJfdCwgZmxhZ3Mgb2YgdGhlIG9wZXJhdGlvbgo+Pj4+Pj4gKyAq ICAgbyBYRU5ESVNQTF9EQlVGX0ZMR19SRVFfQUxMT0MgLSBpZiBzZXQsIHRoZW4gYmFja2VuZCBp cyByZXF1ZXN0ZWQKPj4+Pj4+ICsgKiAgICAgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlciB3aXRoIHRo ZSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoaXMgcmVxdWVzdC4KPj4+Pj4+ICsgKiAgICAgUGFn ZSBkaXJlY3RvcnkgaXMgaGFuZGxlZCBhcyBmb2xsb3dzOgo+Pj4+Pj4gKyAqICAgICAgIEZyb250 ZW5kIG9uIHJlcXVlc3Q6Cj4+Pj4+PiArICogICAgICAgICBvIGFsbG9jYXRlcyBwYWdlcyBmb3Ig dGhlIGRpcmVjdG9yeQo+Pj4+Pj4gKyAqICAgICAgICAgbyBncmFudHMgcGVybWlzc2lvbnMgZm9y IHRoZSBwYWdlcyBvZiB0aGUgZGlyZWN0b3J5Cj4+Pj4+PiArICogICAgICAgICBvIHNldHMgZ3Jl Zl9kaXJfbmV4dF9wYWdlIGZpZWxkcwo+Pj4+Pj4gKyAqICAgICAgIEJhY2tlbmQgb24gcmVzcG9u c2U6Cj4+Pj4+PiArICogICAgICAgICBvIGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBhZ2Vz IG9mIHRoZSBidWZmZXIgYWxsb2NhdGVkCj4+Pj4+IDxzY3JhdGNoZXMgaGlzIGhlYWQ+Cj4+Pj4+ PiArICogICAgICAgICBvIGZpbGxzIGluIHBhZ2UgZGlyZWN0b3J5IHdpdGggZ3JhbnQgcmVmZXJl bmNlcwo+Pj4+PiBUaGUgYmFja2VuZCBwcm92aWRlcyB0aGUgcGFnZXMgaW5zdGVhZCBvZiB0aGUg ZnJvbnRlbmQ/IEJ1dCB5b3Ugc2FpZAo+Pj4+PiAnYWxsb2NhdGVkIHBhZ2VzIGZvciB0aGUgZGly ZWN0b3J5JyBpbiB0aGUgZnJvbnRuZWQgcGFydCAtIGFuZCBzaW5jZSB5b3UKPj4+Pj4gc2F5ICdw YWdlcycgdGhhdCBtZWFucyBtb3JlIHRoYW4gb25lPyBPciBkaWQgeW91IG1lYW4gJ3RoZSBncmVm X2RpcmVjdG9yeScKPj4+Pj4gcGFnZSBhbmQgdGhlICdncmVmX2Rpcl9uZXh0X3BhZ2UnIHBhZ2Vz PyBZb3UgbWF5IHdhbnQgdG8gYmUgZXhwbGljaXQuCj4+Pj4+Cj4+Pj4gc3VyZSwgSSB3aWxsIHN0 YXRlIGl0IGNsZWFybHkgdGhhdCBvbmx5IGRpcmVjdG9yeSBwYWdlcwo+Pj4+IGFyZSBhbGxvY2F0 ZWQ6IGdyZWZfZGlyZWN0b3J5ICsgZ3JlZl9kaXJfbmV4dF9wYWdlKHMpCj4+PiBUaHgKPj4+Pj4g QW5kIHdoYXQgaWYgdGhlICdmbGFncycgaXMgemVybz8KPj4+PiBpdCB3b3VsZCBtZWFuIHRoYXQg ZXZlbiB0aGF0IHRoZSBiYWNrZW5kIGNhbiBhbGxvY2F0ZSBidWZmZXJzCj4+Pj4gZm9yIHVzIHdl IGRvbid0IHdhbnQgaXQgdG8gZG8gc28sIHdlIHdpbGwgYWxsb2NhdGUgb24gb3VyIG93bjoKPj4+ PiBmbGFnIGlzIG5vdCBzZXQKPj4+Pj4gT3IgMHgzMTQ/IFBlcmhhcHMgYWxzbyBtZW50aW9uCj4+ Pj4+IHRoZSBkZWZhdWx0IG9uZSAoMCBJIHByZXN1bWUpIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGJh Y2tlbmQgbWFwCj4+Pj4+IHRoZSBmcm9udGVuZCBwYWdlcyBwcm92aWRlZCBpbiAnZ3JlZl9kaXJl Y3RvcnknPwo+Pj4+IHllcywgSSdsbCBwdXQgYSBub3RlIG9uIGRlZmF1bHRzCj4+PiBBd2Vzb21l IQo+Pj4+Pj4gKyAqIGdyZWZfZGlyZWN0b3J5IC0gZ3JhbnRfcmVmX3QsIGEgcmVmZXJlbmNlIHRv IHRoZSBmaXJzdCBzaGFyZWQgcGFnZQo+Pj4+Pj4gKyAqICAgZGVzY3JpYmluZyBzaGFyZWQgYnVm ZmVyIHJlZmVyZW5jZXMuIEF0IGxlYXN0IG9uZSBwYWdlIGV4aXN0cy4gSWYgc2hhcmVkCj4+Pj4+ PiArICogICBidWZmZXIgc2l6ZSAgKGJ1ZmZlcl9zeikgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRy ZXNzZWQgYnkgdGhpcyBzaW5nbGUgcGFnZSwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIF4t IGV4dHJhIHNwYWNlCj4+Pj4gZG9uZQo+Pj4+Pj4gKyAqICAgdGhlbiByZWZlcmVuY2UgdG8gdGhl IG5leHQgcGFnZSBtdXN0IGJlIHN1cHBsaWVkIChzZWUgZ3JlZl9kaXJfbmV4dF9wYWdlCj4+Pj4+ PiArICogICBiZWxvdykKPj4+Pj4+ICsgKi8KPj4+Pj4gV2hhdCBhcmUgc29tZSBvZiB0aGUgcmV0 dXJuIGVycm9ycyA/IFdvdWxkIGl0IG1ha2Ugc2Vuc2UgdG8gbWVudGlvbgo+Pj4+PiBzb21lPwo+ Pj4+IG5vdCBzdXJlLCB0aGlzIHdheSB3aWxsIGRpY3RhdGUgaW1wbGVtZW50YXRpb24gZGV0YWls cywKPj4+PiBidXQgd2UgYXJlIGRlZmluaW5nIHByb3RvY29sCj4+PiBUcnVlIHRvIGFuIGV4dGVu dC4KPj4gQW5kIHRoYXQgZXh0ZW50IG1ha2VzIG1lIGJlbGlldmUgd2Ugc2hvdWxkbid0IGRpY3Rh dGUKPj4gZXJyb3IgY29kZXMgaGVyZS4gUE9TSVggZXJyb3IgY29kZXMgYXJlIChzb21ldGltZXMg OikKPj4gbW9yZSB0aGFuIGRlc2NyaXB0aXZlICkKPj4+Pj4gV2hhdCB0byBmb3IgZXhhbXBsZSBp ZiB0aGVyZSBhcmUgbXVsdGlwbGUgIF9PUF9EQlVGX0NSRUFURQo+Pj4+PiB3aXRoIHRoZSBzYW1l IGRidWZfY29va2llIGJ1dCB3aXRoIGRpZmZlcmVudCB3aWR0aC9oZWlnaHQ/Cj4+Pj4gaXQgd2ls bCBiZSBhbiBlcnJvciwgSSB3aWxsIGNsZWFybHkgc3RhdGUgdGhpczoKPj4+PiAgICAqIEFuIGF0 dGVtcHQgdG8gY3JlYXRlIG11bHRpcGxlIGRpc3BsYXkgYnVmZmVycyB3aXRoIHRoZSBzYW1lIGRi dWZfY29va2llCj4+Pj4gaXMKPj4+PiAgICAqIGFuIGVycm9yLiBkYnVmX2Nvb2tpZSBjYW4gYmUg cmUtdXNlZCBhZnRlciBkZXN0cm95aW5nIHRoZSBjb3JyZXNwb25kaW5nCj4+Pj4gICAgKiBkaXNw bGF5IGJ1ZmZlci4KPj4+IE1heSBhbHNvIHdhbnQgdG8gc2F5IHdoYXQgZXJyb3IgdmFsdWUgaXQg c2hvdWxkIGJlLiAtRUFHQUlOPyBObyBwcm9iYWJseSBzb21ldGhpbmcKPj4+IGRpZmZlcmVudC4K Pj4gQXMgYWJvdmUsIEkgd291bGQgcHJlZmVyIHRvIG5vdCBwdXQgYW55dGhpbmcKPiBPSy4KPj4+ Pj4+ICsKPj4+Pj4+ICsjZGVmaW5lIFhFTkRJU1BMX0RCVUZfRkxHX1JFUV9BTExPQyAgICAgICAw eDAwMDEKPj4+Pj4+ICsKPj4+Pj4+ICtzdHJ1Y3QgeGVuZGlzcGxfZGJ1Zl9jcmVhdGVfcmVxIHsK Pj4+Pj4+ICsgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7Cj4+Pj4+PiArICAgIHVpbnQzMl90IHdp ZHRoOwo+Pj4+Pj4gKyAgICB1aW50MzJfdCBoZWlnaHQ7Cj4+Pj4+PiArICAgIHVpbnQzMl90IGJw cDsKPj4+Pj4+ICsgICAgdWludDMyX3QgYnVmZmVyX3N6Owo+Pj4+Pj4gKyAgICB1aW50MzJfdCBm bGFnczsKPj4+Pj4+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rvcnk7Cj4+Pj4+PiArfTsK Pj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIFNoYXJlZCBwYWdlIGZvciBYRU5ESVNQTF9P UF9EQlVGX0NSRUFURSBidWZmZXIgZGVzY3JpcHRvciAoZ3JlZl9kaXJlY3RvcnkgaW4KPj4+Pj4+ ICsgKiB0aGUgcmVxdWVzdCkgZW1wbG95cyBhIGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxs IHBhZ2VzIG9mIHRoZSBzaGFyZWQKPj4+Pj4+ICsgKiBkYXRhIGJ1ZmZlcjoKPj4+Pj4+ICsgKiAg ICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAg IDMgICAgICAgIG9jdGV0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyX25leHRfcGFnZSAgICAgICAgICAgICAgICAgICAg ICAgICB8IDQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3JlZlswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg OAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+Pj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncmVmW2ldICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpKjQrOAo+Pj4+Pj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+Pj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbTiAtIDFd ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOKjQrOAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogZ3JlZl9kaXJfbmV4dF9wYWdlIC0gZ3JhbnRfcmVmX3Qs IHJlZmVyZW5jZSB0byB0aGUgbmV4dCBwYWdlIGRlc2NyaWJpbmcKPj4+Pj4+ICsgKiAgIHBhZ2Ug ZGlyZWN0b3J5LiBNdXN0IGJlIDAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMgaW4gdGhlIGxp c3QuCj4+Pj4+PiArICogZ3JlZltpXSAtIGdyYW50X3JlZl90LCByZWZlcmVuY2UgdG8gYSBzaGFy ZWQgcGFnZSBvZiB0aGUgYnVmZmVyCj4+Pj4+PiArICogICBhbGxvY2F0ZWQgYXQgWEVORElTUExf T1BfREJVRl9DUkVBVEUKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIE51bWJlciBvZiBncmFudF9yZWZf dCBlbnRyaWVzIGluIHRoZSB3aG9sZSBwYWdlIGRpcmVjdG9yeSBpcyBub3QKPj4+Pj4+ICsgKiBw YXNzZWQsIGJ1dCBpbnN0ZWFkIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgo+Pj4+Pj4gKyAqICAgbnVt X2dyZWZzX3RvdGFsID0gKFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFLmJ1ZmZlcl9zeiArIFhFTl9Q QUdFX1NJWkUgLSAxKSAvCj4+Pj4+PiArICogICAgICAgWEVOX1BBR0VfU0laRQo+Pj4+Pj4gKyAq Lwo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0cnVjdCB4ZW5kaXNwbF9wYWdlX2RpcmVjdG9yeSB7Cj4+Pj4+ PiArICAgIGdyYW50X3JlZl90IGdyZWZfZGlyX25leHRfcGFnZTsKPj4+Pj4+ICsgICAgZ3JhbnRf cmVmX3QgZ3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3RoICovCj4+Pj4+PiArfTsKPj4+Pj4+ICsK Pj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIFJlcXVlc3QgZGJ1ZiBkZXN0cnVjdGlvbiAtIGRlc3Ryb3kg YSBwcmV2aW91c2x5IGFsbG9jYXRlZCBkaXNwbGF5IGJ1ZmZlcjoKPj4+Pj4+ICsgKiAgICAgICAg IDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAg ICAgIG9jdGV0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAg ICAgIGlkICAgICAgICAgICAgICAgIHxfT1BfREJVRl9ERVNUUk9ZfCAgIHJlc2VydmVkICAgICB8 IDQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+Pj4+ Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRi dWZfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+Pj4+Pj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29v a2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgfCAxNgo+Pj4+Pj4gKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+Pj4+Pj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4g KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCA2NAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqCj4+ Pj4+PiArICogTXVzdCBiZSBzZW50IG92ZXIgY29udHJvbCByaW5nIG9mIHRoZSBjb25uZWN0b3Ig d2l0aCBpbmRleCAwLgo+Pj4+Pj4gKyAqLwo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0cnVjdCB4ZW5kaXNw bF9kYnVmX2Rlc3Ryb3lfcmVxIHsKPj4+Pj4+ICsgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7Cj4+ Pj4+PiArfTsKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIFJlcXVlc3QgZnJhbWVidWZm ZXIgYXR0YWNobWVudCAtIHJlcXVlc3QgYXR0YWNobWVudCBvZiBhIGZyYW1lYnVmZmVyIHRvCj4+ Pj4+PiArICogcHJldmlvdXNseSBjcmVhdGVkIGRpc3BsYXkgYnVmZmVyLgo+Pj4+Pj4gKyAqICAg ICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAg MyAgICAgICAgb2N0ZXQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAg ICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfRkJfQVRUQUNIICB8ICAgcmVzZXJ2ZWQg ICAgIHwgNAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4 Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4+Pj4+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1 Zl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4+Pj4+PiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tp ZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICB8IDIwCj4+Pj4+PiArICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdo IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDI4Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDMyCj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF9mb3JtYXQgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDM2Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDQwCj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98 Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4+Pj4+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBNdXN0IGJlIHNlbnQgb3Zl ciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCj4+Pj4+PiArICoK Pj4+Pj4+ICsgKiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0aCBpbiBwaXhlbHMKPj4+Pj4+ICsgKiBo ZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscwo+Pj4+PiBXaHk/IFRoZSBfT1BfREJV Rl9DUkVBVEUgYWxyZWFkeSBzcGVjaWZpZWQgdGhlIGhlaWdodC93aWR0aC4gV2h5IGhhdmUgdGhp cz8KPj4+Pj4KPj4+Pj4gT3IgYXJlIHlvdSB0aGlua2luZyB0byBoYXZlIGFuIHNtYWxsZXIgKG9y IGJpZ2dlcj8pIHJlc29sdXRpb24gZnJhbWVidWZmZXIKPj4+Pj4gdGhhbiB0aGUgZGlzcGxheT8g SSBzdXBwb3NlIHlvdSBjYW4gZG8gdGhhdCB3aGljaCB3b3VsZCBpbXBseSB0aGF0IHRoZSBkaXNw bGF5Cj4+Pj4+IHdvdWxkIHN3aXRjaCBtb2Rlcz8gUGVyaGFwcyBtZW50aW9uIHRoaXM/Cj4+Pj4+ Cj4+Pj4+IEFsc28gd2hhdCBpZiB0aGVzZSB2YWx1ZXMgYXJlIGJpZ2dlciAob3IgbGVzc2VyKSB0 aGFuICdyZXNvbHV0aW9uJyA/Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+PiArICogcGl4ZWxfZm9ybWF0IC0g dWludDMyX3QsIHBpeGVsIGZvcm1hdCBvZiB0aGUgZnJhbWVidWZmZXIsIEZPVVJDQyBjb2RlCj4+ Pj4+IFlvdSBkaWQgbm90IG1lbnRpb24gdGhlIGZiX2Nvb2tpZT8KPj4+PiBJIGhhdmUgYSBjb21t b24gc2VjdGlvbjoKPj4+PiAgICAqIEZvciBhbGwgcmVxdWVzdC9yZXNwb25zZS9ldmVudCBwYWNr ZXRzIHRoYXQgdXNlIGNvb2tpZXM6Cj4+Pj4gICAgKiAgIGRidWZfY29va2llIC0gdWludDY0X3Qs IHVuaXF1ZSB0byBndWVzdCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUKPj4+PiBiYWNrZW5kCj4+ Pj4gICAgKiAgICAgdG8gbWFwIHJlbW90ZSBkaXNwbGF5IGJ1ZmZlciB0byBpdHMgbG9jYWwgb25l Cj4+Pj4gICAgKiAgIGZiX2Nvb2tpZSAtIHVpbnQ2NF90LCB1bmlxdWUgdG8gZ3Vlc3QgZG9tYWlu IHZhbHVlIHVzZWQgYnkgdGhlIGJhY2tlbmQKPj4+PiAgICAqICAgICB0byBtYXAgcmVtb3RlIGZy YW1lYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKPj4+PiBCdXQgaXQgaXMgaW4gdGhlICJSZXF1ZXN0 cyIgc2VjdGlvbiAtIEknbGwgcHVsbCBpdCBvdXQgdG8gYmUgY29tbW9uIGZvciBhbGwKPj4+IEFh YWFoIQo+Pj4+Pj4gKyAqLwo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0cnVjdCB4ZW5kaXNwbF9mYl9hdHRh Y2hfcmVxIHsKPj4+Pj4+ICsgICAgdWludDY0X3QgZGJ1Zl9jb29raWU7Cj4+Pj4+PiArICAgIHVp bnQ2NF90IGZiX2Nvb2tpZTsKPj4+Pj4+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4+Pj4+PiArICAg IHVpbnQzMl90IGhlaWdodDsKPj4+Pj4+ICsgICAgdWludDMyX3QgcGl4ZWxfZm9ybWF0Owo+Pj4+ Pj4gK307Cj4+Pj4+PiArCj4+Pj4+PiArLyoKPj4+Pj4+ICsgKiBSZXF1ZXN0IGZyYW1lYnVmZmVy IGRldGFjaCAtIGRldGFjaCBhIHByZXZpb3VzbHkKPj4+Pj4+ICsgKiBhdHRhY2hlZCBmcmFtZWJ1 ZmZlciBmcm9tIHRoZSBkaXNwbGF5IGJ1ZmZlciBpbiByZXF1ZXN0Ogo+Pj4+Pj4gKyAqICAgICAg ICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAg ICAgICAgaWQgICAgICAgICAgICAgICAgfCAgX09QX0ZCX0RFVEFDSCB8ICAgcmVzZXJ2ZWQgICAg IHwgNAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4+ Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAg IGZiX2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4+Pj4+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nv b2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4+Pj4+PiArICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2 ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCj4+Pj4+PiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4+Pj4+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDY0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICoK Pj4+Pj4+ICsgKiBNdXN0IGJlIHNlbnQgb3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3Rv ciB3aXRoIGluZGV4IDAuCj4+Pj4+PiArICovCj4+Pj4+PiArCj4+Pj4+PiArc3RydWN0IHhlbmRp c3BsX2ZiX2RldGFjaF9yZXEgewo+Pj4+Pj4gKyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4+Pj4+ PiArfTsKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqIFJlcXVlc3QgY29uZmlndXJhdGlv biBzZXQvcmVzZXQgLSByZXF1ZXN0IHRvIHNldCBvciByZXNldAo+Pj4+Pj4gKyAqIHRoZSBjb25m aWd1cmF0aW9uL21vZGUgb2YgdGhlIGRpc3BsYXk6Cj4+Pj4+PiArICogICAgICAgICAwICAgICAg ICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3Rl dAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICBpZCAg ICAgICAgICAgICAgICB8IF9PUF9TRVRfQ09ORklHIHwgICByZXNlcnZlZCAgICAgfCA0Cj4+Pj4+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPj4+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2ll IGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKPj4+Pj4+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGhpZ2gg MzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTYKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK Pj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMjgKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMzIKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg NDAKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKPj4+ Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPj4+Pj4+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIFBhc3MgYWxsIHplcm9zIHRvIHJlc2V0LCBvdGhl cndpc2UgY29tbWFuZCBpcyB0cmVhdGVkIGFzCj4+Pj4+PiArICogY29uZmlndXJhdGlvbiBzZXQu Cj4+Pj4+IEFsbCB6ZXJvcz8gSW5jbHVkaW5nIGZiX2Nvb2tpZT8KPj4+PiBZZXMsIGZiX2Nvb2tp ZSBpcyAwIHdoZW4gd2UgZGlzYWJsZSB0aGUgZGlzcGxheSwgYXMgYXQgdGhpcyBwb2ludCB0aGVy ZQo+Pj4+IGNvdWxkIGJlIG5vIGZiIGF0IGFsbCAoYWxsIHJlbGVhc2VkIGJ5IHRoYXQgdGltZSkK Pj4+Pj4+ICsgKiBJZiB0aGlzIGlzIGEgc2V0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdCB0aGVuIGZy YW1lYnVmZmVyJ3MgY29va2llIHRlbGxzCj4+Pj4+IE5vdCBzdXJlIGlmIHRoZSBmaXJzdCBwYXJ0 IG9mIHRoZSBzZW50ZW5jZSBpcyBuZWVkZWQuIFRoaXMgaXMgYWZ0ZXIgYWxsCj4+Pj4+IHRoZSBz ZWN0aW9uIHRoYXQgdGFsa3MgYWJvdXQgc2V0dGluZyBjb25maWd1cmF0aW9ucy4KPj4+PiBvaywg d2lsbCByZW1vdmUgaXQKPj4+Pj4+ICsgKiB0aGUgZGlzcGxheSB3aGljaCBmcmFtZWJ1ZmZlci9k YnVmIG11c3QgYmUgZGlzcGxheWVkIHdoaWxlIGVuYWJsaW5nIGRpc3BsYXkKPj4+Pj4+ICsgKiAo YXBwbHlpbmcgY29uZmlndXJhdGlvbikuCj4+Pj4+IENhbiB5b3UgZGlzYWJsZSBhbiBkaXNwbGF5 IHdpdGhvdXQgY2hhbmdpbmcgdGhpcz8KPj4+PiBZb3UgcGFzcyBBTEwgemVyb3MsIGluY2x1ZGlu ZyBmYl9jb29raWUgdG8gZGlzYWJsZS9yZXNldC4KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIHggLSB1 aW50MzJfdCwgc3RhcnRpbmcgcG9zaXRpb24gaW4gcGl4ZWxzIGJ5IFggYXhpcwo+Pj4+Pj4gKyAq IHkgLSB1aW50MzJfdCwgc3RhcnRpbmcgcG9zaXRpb24gaW4gcGl4ZWxzIGJ5IFkgYXhpcwo+Pj4+ PiBXaGljaCBpcyBib3VuZCBieSAncmVzb2x1dGlvbicgPyBPciBieSB0aGUgZGlzcGxheSBjb21t YW5kPwo+Pj4+IHRoZXNlIGFyZSBsaW1pdGVkIGJ5IHRoZSAicmVzb2x1dGlvbiIgLSB3aWxsIHN0 YXRlIHRoYXQ6Cj4+Pj4gICAgKiB4LCB5LCB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3VuZCBieSB0 aGUgY29ubmVjdG9yIHJlc29sdXRpb24gYW5kIG11c3Qgbm90Cj4+Pj4gICAgKiBleGNlZWQgaXQu Cj4+PiBUaGFua3MhCj4+IEJUVywgdGhpcyBpcyB0aGUgb25seSBwbGFjZSBBVE0gd2hlcmUgd2Ug c3RpY2sgdG8gcmVzb2x1dGlvbgo+PiBmcm9tIFhlblN0b3JlLi4uIEFuZCBpdCB3aWxsIGNsZWFy bHkgYmUgc3RhdGVkCj4gL21lIG5vZHMKPj4+Pj4+ICsgKiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0 aCBpbiBwaXhlbHMKPj4+Pj4+ICsgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVs cwo+Pj4+Pj4gKyAqIGJwcCAtIHVpbnQzMl90LCBiaXRzIHBlciBwaXhlbAo+Pj4+PiBTaG91bGRu J3QgdGhlcmUgYmUgYW4gc3RyaWRlIGFzIHdlbGw/Cj4+Pj4gbm8sIHN0cmlkZSBpcyBraW5kIG9m IGltcGxlbWVudGF0aW9uIGRldGFpbCB3aGljaCBzaG91bGRuJ3QKPj4+PiBiZSBpbiB0aGUgcHJv dG9jb2wKPj4+Pj4+ICsgKi8KPj4+Pj4+ICsKPj4+Pj4+ICtzdHJ1Y3QgeGVuZGlzcGxfc2V0X2Nv bmZpZ19yZXEgewo+Pj4+Pj4gKyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4+Pj4+PiArICAgIHVp bnQzMl90IHg7Cj4+Pj4+PiArICAgIHVpbnQzMl90IHk7Cj4+Pj4+PiArICAgIHVpbnQzMl90IHdp ZHRoOwo+Pj4+Pj4gKyAgICB1aW50MzJfdCBoZWlnaHQ7Cj4+Pj4+PiArICAgIHVpbnQzMl90IGJw cDsKPj4+Pj4+ICt9Owo+Pj4+Pj4gKwo+Pj4+Pj4gKy8qCj4+Pj4+PiArICogUmVxdWVzdCBwYWdl IGZsaXAgLSByZXF1ZXN0IHRvIGZsaXAgYSBwYWdlIGlkZW50aWZpZWQgYnkgdGhlIGZyYW1lYnVm ZmVyCj4+Pj4+PiArICogY29va2llOgo+Pj4+Pj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAg ICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4+Pj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAg ICAgICAgfCBfT1BfUEdfRkxJUCAgICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+Pj4+Pj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2Vy dmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4+Pj4+PiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzIt Yml0ICAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+ Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJpdCAg ICAgICAgICAgICAgICAgICAgICB8IDE2Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIwCj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC98Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDY0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICovCj4+Pj4+PiArCj4+Pj4+PiAr c3RydWN0IHhlbmRpc3BsX3BhZ2VfZmxpcF9yZXEgewo+Pj4+Pj4gKyAgICB1aW50NjRfdCBmYl9j b29raWU7Cj4+Pj4+PiArfTsKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNwb25zZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPj4+Pj4+ICsgKgo+Pj4+Pj4gKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhh dmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3RldHMpCj4+Pj4+PiArICoKPj4+Pj4+ICsgKiBBbGwg cmVzcG9uc2UgcGFja2V0cyBoYXZlIGNvbW1vbiBoZWFkZXI6Cj4+Pj4+PiArICogICAgICAgICAw ICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAg ICBvY3RldAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAg ICBpZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgfCA0 Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPj4+Pj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKPj4+Pj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+Pj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+ Pj4+ICsgKgo+Pj4+Pj4gKyAqIGlkIC0gdWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVj aG9lZCBmcm9tIHJlcXVlc3QKPj4+Pj4+ICsgKiBzdGF0dXMgLSBpbnQzMl90LCByZXNwb25zZSBz dGF0dXMsIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFggb24gZmFpbHVyZQo+Pj4+Pj4gKyAq Cj4+Pj4+PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmVudHMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogRXZl bnRzIGFyZSBzZW50IHZpYSBhIHNoYXJlZCBwYWdlIGFsbG9jYXRlZCBieSB0aGUgZnJvbnQgYW5k IHByb3BhZ2F0ZWQgYnkKPj4+Pj4+ICsgKiAgIGV2ZW50LWNoYW5uZWwvZXZlbnQtcmluZy1yZWYg WGVuU3RvcmUgZW50cmllcwo+Pj4+Pj4gKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgdGhlIHNh bWUgbGVuZ3RoICg2NCBvY3RldHMpCj4+Pj4+PiArICogQWxsIGV2ZW50IHBhY2tldHMgaGF2ZSBj b21tb24gaGVhZGVyOgo+Pj4+Pj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPj4+Pj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAg ICAgIHR5cGUgICAgICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+Pj4+Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ PiArICoKPj4+Pj4+ICsgKiBpZCAtIHVpbnQxNl90LCBldmVudCBpZCwgbWF5IGJlIHVzZWQgYnkg ZnJvbnQKPj4+Pj4+ICsgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUgZXZlbnQKPj4+Pj4+ ICsgKgo+Pj4+Pj4gKyAqCj4+Pj4+PiArICogUGFnZSBmbGlwIGNvbXBsZXRlIGV2ZW50IC0gZXZl bnQgZnJvbSBiYWNrIHRvIGZyb250IG9uIHBhZ2UgZmxpcCBjb21wbGV0ZWQ6Cj4+Pj4+PiArICog ICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAg ICAzICAgICAgICBvY3RldAo+Pj4+Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pj4gKyAqIHwgICAg ICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgX0VWVF9QR19GTElQIHwgICByZXNlcnZl ZCAgICAgfCA0Cj4+Pj4+PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+PiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgZmJfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKPj4+ Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ZmJfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTYKPj4+Pj4+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPj4+Pj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPj4+Pj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK Pj4+Pj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPj4+Pj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4+ ICsgKi8KPj4+Pj4+ICsKPj4+Pj4+ICtzdHJ1Y3QgeGVuZGlzcGxfcGdfZmxpcF9ldnQgewo+Pj4+ Pj4gKyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4+Pj4+PiArfTsKPj4+Pj4+ICsKPj4+Pj4+ICtz dHJ1Y3QgeGVuZGlzcGxfcmVxIHsKPj4+Pj4+ICsgICAgdWludDE2X3QgaWQ7Cj4+Pj4+PiArICAg IHVpbnQ4X3Qgb3BlcmF0aW9uOwo+Pj4+Pj4gKyAgICB1aW50OF90IHJlc2VydmVkWzVdOwo+Pj4+ Pj4gKyAgICB1bmlvbiB7Cj4+Pj4+PiArICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfZGJ1Zl9jcmVh dGVfcmVxIGRidWZfY3JlYXRlOwo+Pj4+Pj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX2RidWZf ZGVzdHJveV9yZXEgZGJ1Zl9kZXN0cm95Owo+Pj4+Pj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3Bs X2ZiX2F0dGFjaF9yZXEgZmJfYXR0YWNoOwo+Pj4+Pj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3Bs X2ZiX2RldGFjaF9yZXEgZmJfZGV0YWNoOwo+Pj4+Pj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3Bs X3NldF9jb25maWdfcmVxIHNldF9jb25maWc7Cj4+Pj4+PiArICAgICAgICBzdHJ1Y3QgeGVuZGlz cGxfcGFnZV9mbGlwX3JlcSBwZ19mbGlwOwo+Pj4+Pj4gKyAgICAgICAgdWludDhfdCByZXNlcnZl ZFs1Nl07Cj4+Pj4+PiArICAgIH0gb3A7Cj4+Pj4+PiArfTsKPj4+Pj4+ICsKPj4+Pj4+ICtzdHJ1 Y3QgeGVuZGlzcGxfcmVzcCB7Cj4+Pj4+PiArICAgIHVpbnQxNl90IGlkOwo+Pj4+Pj4gKyAgICB1 aW50OF90IG9wZXJhdGlvbjsKPj4+Pj4+ICsgICAgdWludDhfdCByZXNlcnZlZDsKPj4+Pj4+ICsg ICAgaW50MzJfdCBzdGF0dXM7Cj4+Pj4+PiArICAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzU2XTsKPj4+ Pj4+ICt9Owo+Pj4+Pj4gKwo+Pj4+Pj4gK3N0cnVjdCB4ZW5kaXNwbF9ldnQgewo+Pj4+Pj4gKyAg ICB1aW50MTZfdCBpZDsKPj4+Pj4+ICsgICAgdWludDhfdCB0eXBlOwo+Pj4+Pj4gKyAgICB1aW50 OF90IHJlc2VydmVkWzVdOwo+Pj4+Pj4gKyAgICB1bmlvbiB7Cj4+Pj4+PiArICAgICAgICBzdHJ1 Y3QgeGVuZGlzcGxfcGdfZmxpcF9ldnQgcGdfZmxpcDsKPj4+Pj4+ICsgICAgICAgIHVpbnQ4X3Qg cmVzZXJ2ZWRbNTZdOwo+Pj4+Pj4gKyAgICB9IG9wOwo+Pj4+Pj4gK307Cj4+Pj4+PiArCj4+Pj4+ PiArREVGSU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0 cnVjdCB4ZW5kaXNwbF9yZXNwKTsKPj4+Pj4+ICsKPj4+Pj4+ICsvKgo+Pj4+Pj4gKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPj4+Pj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sgdG8g ZnJvbnQgZXZlbnRzIGRlbGl2ZXJ5Cj4+Pj4+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+Pj4+ Pj4gKyAqIEluIG9yZGVyIHRvIGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIGJhY2sg dG8gZnJvbnQgYSBzaGFyZWQgcGFnZSBpcwo+Pj4+Pj4gKyAqIGFsbG9jYXRlZCBieSBmcm9udCBh bmQgaXRzIGdyZWZzIHByb3BhZ2F0ZWQgdG8gYmFjayB2aWEgWGVuU3RvcmUgZW50cmllcwo+Pj4+ Pj4gKyAqIChldmVudC1YWFgpLgo+Pj4+PiA/Cj4+Pj4+Cj4+Pj4+IFlvdSBtZWFuIGV2ZW50LWNo YW5uZWwgPyBPciBjb250cm9sLWV2ZW50LWNoYW5uZWw/Cj4+Pj4gZXZlbnQtY2hhbm5lbCB3aGlj aCBpcyB1c2VkIGZvciBhc3luYyBldmVudHMgZnJvbSBiYWNrIHRvIGZyb250LAo+Pj4+IGNvbnRy b2wgaXMgYWx3YXlzIHVzZWQgdG8gcGFzcyByZXEvcmVzcC4KPj4+Pj4+ICsgKiBUaGlzIHBhZ2Ug aGFzIGEgY29tbW9uIGhlYWRlciB1c2VkIGJ5IGJvdGggZnJvbnQgYW5kIGJhY2sgdG8gc3luY2hy b25pemUKPj4+Pj4+ICsgKiBhY2Nlc3MgYW5kIGNvbnRyb2wgZXZlbnQncyByaW5nIGJ1ZmZlciwg d2hpbGUgYmFjayBiZWluZyBhIHByb2R1Y2VyIG9mIHRoZQo+Pj4+Pj4gKyAqIGV2ZW50cyBhbmQg ZnJvbnQgYmVpbmcgYSBjb25zdW1lci4gVGhlIHJlc3Qgb2YgdGhlIHBhZ2UgYWZ0ZXIgdGhlIGhl YWRlcgo+Pj4+Pj4gKyAqIGlzIHVzZWQgZm9yIGV2ZW50IHBhY2tldHMuCj4+Pj4+PiArICoKPj4+ Pj4+ICsgKiBVcG9uIHJlY2VwdGlvbiBvZiBhbiBldmVudChzKSBmcm9udCBtYXkgY29uZmlybSBp dHMgcmVjZXB0aW9uCj4+Pj4+PiArICogZm9yIGVpdGhlciBlYWNoIGV2ZW50LCBncm91cCBvZiBl dmVudHMgb3Igbm9uZS4KPj4+Pj4+ICsgKi8KPj4+Pj4+ICsKPj4+Pj4+ICtzdHJ1Y3QgeGVuZGlz cGxfZXZlbnRfcGFnZSB7Cj4+Pj4+PiArICAgIHVpbnQzMl90IGluX2NvbnM7Cj4+Pj4+PiArICAg IHVpbnQzMl90IGluX3Byb2Q7Cj4+Pj4+PiArICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOwo+Pj4+ Pj4gK307Cj4+Pj4+PiArCj4+Pj4+PiArI2RlZmluZSBYRU5ESVNQTF9FVkVOVF9QQUdFX1NJWkUg NDA5Ngo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19PRkZTIChzaXplb2Yoc3RydWN0 IHhlbmRpc3BsX2V2ZW50X3BhZ2UpKQo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19T SVpFIChYRU5ESVNQTF9FVkVOVF9QQUdFX1NJWkUgLSBYRU5ESVNQTF9JTl9SSU5HX09GRlMpCj4+ Pj4+PiArI2RlZmluZSBYRU5ESVNQTF9JTl9SSU5HX0xFTiAoWEVORElTUExfSU5fUklOR19TSVpF IC8gc2l6ZW9mKHN0cnVjdCB4ZW5kaXNwbF9ldnQpKQo+Pj4+Pj4gKyNkZWZpbmUgWEVORElTUExf SU5fUklORyhwYWdlKSBcCj4+Pj4+PiArCSgoc3RydWN0IHhlbmRpc3BsX2V2dCAqKSgoY2hhciAq KShwYWdlKSArIFhFTkRJU1BMX0lOX1JJTkdfT0ZGUykpCj4+Pj4+PiArI2RlZmluZSBYRU5ESVNQ TF9JTl9SSU5HX1JFRihwYWdlLCBpZHgpIFwKPj4+Pj4+ICsJKFhFTkRJU1BMX0lOX1JJTkcoKHBh Z2UpKVsoaWR4KSAlIFhFTkRJU1BMX0lOX1JJTkdfTEVOXSkKPj4+Pj4gV2h5IG5vdCB1c2UgdGhl IHJpbmcuaCBtYWNyb3M/Cj4+Pj4gd2VsbCwgdGhpcyBpcyB0aGUgd2F5IHRoZSBzYW1lIHN0cnVj dHMgYXJlIGRlZmluZWQgZm9yIGZiaWYva2JpZgo+Pj4+IGFuZCBJIGFtIG5vdCBzdXJlIHdoYXQg Y2FuIGJlIHJlLXVzZWQgaGVyZSBmcm9tIHJpbmcuaCBhcyBpdCBpcwo+Pj4+IGRlc2lnbmVkIHRv IHdvcmsgd2l0aCByZXEvcmVzcCwgbm90IGV2ZW50cy4KPj4+Pj4gRXNwZWNpYWxseSBhcyB0aGUg dG9wIG9mIHRoaXMgdGFsa3MgYWJvdXQgIlJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTIj8K Pj4+PiBJIGNhbiByZW1vdmUgdGhpcwo+Pj4+Pj4gKwo+Pj4+Pj4gKyNlbmRpZiAvKiBfX1hFTl9Q VUJMSUNfSU9fRElTUExJRl9IX18gKi8KPj4+Pj4gQ291bGQgd2UgYWxzbyBoYXZlIHRoaXMgaGVh ZGVyIGluOgo+Pj4+IHN1cmUsIEkgd2lsbCBhZGQgdGhlIHNhbWUgdG8gc25kaWYgYXMgd2VsbAo+ Pj4+PiAvKgo+Pj4+PiAgICAgKiBMb2NhbCB2YXJpYWJsZXM6Cj4+Pj4+ICAgICAqIG1vZGU6IEMK Pj4+Pj4gICAgICogYy1maWxlLXN0eWxlOiAiQlNEIgo+Pj4+PiAgICAgKiBjLWJhc2ljLW9mZnNl dDogNAo+Pj4+PiAgICAgKiB0YWItd2lkdGg6IDQKPj4+Pj4gICAgICogaW5kZW50LXRhYnMtbW9k ZTogbmlsCj4+Pj4+ICAgICAqIEVuZDoKPj4+Pj4gICAgICovCj4+Pj4+Cj4+Pj4+IHBsZWFzZT8K Pj4+Pj4+IC0tIAo+Pj4+Pj4gMi43LjQKPj4+Pj4+Cj4+Pj4gWzFdIGh0dHA6Ly9tYXJjLmluZm8v P2w9eGVuLWRldmVsJm09MTQyMTY3MTUzMzI0MDUyJnc9NAo+Pj4+Cj4+IFRoYW5rIHlvdSwKPj4g T2xla3NhbmRyCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==