From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.phytec.de ([217.6.246.34] helo=root.phytec.de) by merlin.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1e03oV-00011N-5L for barebox@lists.infradead.org; Thu, 05 Oct 2017 10:55:36 +0000 References: <20170928231249.4158-1-antonynpavlov@gmail.com> <20170928231249.4158-2-antonynpavlov@gmail.com> <6767ad4e-80b7-2c69-49ff-ecfb64ab19e0@rempel-privat.de> <20171003012135.1d3cf8c61dce09c821ae45e4@gmail.com> From: Daniel Schultz Message-ID: Date: Thu, 5 Oct 2017 12:55:09 +0200 MIME-Version: 1.0 In-Reply-To: <20171003012135.1d3cf8c61dce09c821ae45e4@gmail.com> Content-Language: en-US List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [RFC v4 01/10] Add initial RISC-V architecture support To: Antony Pavlov Cc: barebox@lists.infradead.org SGksCgpPbiAxMC8wMy8yMDE3IDEyOjIxIEFNLCBBbnRvbnkgUGF2bG92IHdyb3RlOgo+IE9uIE1v biwgMiBPY3QgMjAxNyAxMjowODo1OCArMDIwMAo+IERhbmllbCBTY2h1bHR6IDxkLnNjaHVsdHpA cGh5dGVjLmRlPiB3cm90ZToKPgo+PiBIaSwKPj4KPj4KPj4gT24gMDkvMjkvMjAxNyAwMjowNyBQ TSwgT2xla3NpaiBSZW1wZWwgd3JvdGU6Cj4+PiBIaSwKPj4+Cj4+PiBobS4uLiBtb3N0bHkgbG9v a3MgaWRlbnRpY2FsIHdpdGggZXhpc3RpbmcgYXJjaAo+Pj4KPj4+IEFtIDI5LjA5LjIwMTcgdW0g MDE6MTIgc2NocmllYiBBbnRvbnkgUGF2bG92Ogo+Pj4+IFNpZ25lZC1vZmYtYnk6IEFudG9ueSBQ YXZsb3YgPGFudG9ueW5wYXZsb3ZAZ21haWwuY29tPgo+Pj4+IC0tCj4+Pj4gVE9ET3M6Cj4+Pj4K Pj4+PiAgICAgKiBzcGxpdCBwYXRjaDsKPj4+PiAtLS0KPj4+PiAgICBhcmNoL3Jpc2N2L0tjb25m aWcgICAgICAgICAgICAgICAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ Pj4+ICAgIGFyY2gvcmlzY3YvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8IDY4ICsrKysrKysr KysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvYm9vdC9NYWtlZmlsZSAgICAg ICAgICAgICB8ICAyICsKPj4+PiAgICBhcmNoL3Jpc2N2L2Jvb3QvbWFpbl9lbnRyeS5jICAgICAg ICAgfCA0MCArKysrKysrKysrKysrKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9ib290L3N0YXJ0LlMg ICAgICAgICAgICAgIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gICAg YXJjaC9yaXNjdi9kdHMvLmdpdGlnbm9yZSAgICAgICAgICAgIHwgID4gIGFyY2gvcmlzY3YvZHRz L01ha2VmaWxlICAgICAgICAgICAgICB8ICA5ICsrKysKPj4+PiAgICBhcmNoL3Jpc2N2L2R0cy9z a2VsZXRvbi5kdHNpICAgICAgICAgfCAxMyArKysrKysKPj4+PiAgICBhcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL2JhcmVib3guaCAgICAgfCAgMSArCj4+Pj4gICAgYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9iaXRvcHMuaCAgICAgIHwgMzUgKysrKysrKysrKysrKysKPj4+PiAgICBhcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL2JpdHNwZXJsb25nLmggfCAxMCArKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9ieXRlb3JkZXIuaCAgIHwgMTAgKysrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVk ZS9hc20vY29tbW9uLmggICAgICB8ICA2ICsrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVkZS9h c20vZWxmLmggICAgICAgICB8IDExICsrKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9pby5oICAgICAgICAgIHwgIDggKysrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20v bW11LmggICAgICAgICB8ICA2ICsrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vcG9z aXhfdHlwZXMuaCB8ICAxICsKPj4+PiAgICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NlY3Rpb25z LmggICAgfCAgMSArCj4+Pj4gICAgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zdHJpbmcuaCAgICAg IHwgIDEgKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dhYi5oICAgICAgICB8ICA2 ICsrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdHlwZXMuaCAgICAgICB8IDYwICsr KysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdW5h bGlnbmVkLmggICB8IDE5ICsrKysrKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9saWIvLmdpdGlnbm9y ZSAgICAgICAgICAgIHwgIDEgKwo+Pj4+ICAgIGFyY2gvcmlzY3YvbGliL01ha2VmaWxlICAgICAg ICAgICAgICB8ICA5ICsrKysKPj4+PiAgICBhcmNoL3Jpc2N2L2xpYi9hc2hsZGkzLmMgICAgICAg ICAgICAgfCAyOCArKysrKysrKysrKysKPj4+PiAgICBhcmNoL3Jpc2N2L2xpYi9hc2hyZGkzLmMg ICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysKPj4+PiAgICBhcmNoL3Jpc2N2L2xpYi9hc20t b2Zmc2V0cy5jICAgICAgICAgfCAxMiArKysrKwo+Pj4+ICAgIGFyY2gvcmlzY3YvbGliL2JhcmVi b3gubGRzLlMgICAgICAgICB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+Pj4+ICAgIGFyY2gvcmlzY3YvbGliL2R0Yi5jICAgICAgICAgICAgICAgICB8IDQxICsrKysr KysrKysrKysrKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9saWIvbGliZ2NjLmggICAgICAgICAgICAg IHwgMjkgKysrKysrKysrKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9saWIvbHNocmRpMy5jICAgICAg ICAgICAgIHwgMjggKysrKysrKysrKysrCj4+Pj4gICAgYXJjaC9yaXNjdi9saWIvcmlzY3ZfdGlt ZXIuYyAgICAgICAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gICAgZHJp dmVycy9vZi9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPj4+PiAgICAzMyBmaWxl cyBjaGFuZ2VkLCA3OTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4+Cj4+Pj4gZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3YvS2NvbmZpZyBiL2FyY2gvcmlzY3YvS2NvbmZpZwo+Pj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi5iMmYwODE3ZWYKPj4+PiAt LS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4+Pj4gQEAgLTAsMCAr MSw3MyBAQAo+Pj4+ICtjb25maWcgUklTQ1YKPj4+PiArCWJvb2wKPj4+PiArCXNlbGVjdCBHRU5F UklDX0ZJTkRfTkVYVF9CSVQKPj4+PiArCXNlbGVjdCBIQVZFX0NPTkZJR1VSQUJMRV9NRU1PUllf TEFZT1VUCj4+Pj4gKwlzZWxlY3QgSEFWRV9DT05GSUdVUkFCTEVfVEVYVF9CQVNFCj4+Pj4gKwlz ZWxlY3QgR1BJT0xJQgo+Pj4+ICsJc2VsZWN0IE9GVFJFRQo+Pj4+ICsJc2VsZWN0IENPTU1PTl9D TEsKPj4+PiArCXNlbGVjdCBDT01NT05fQ0xLX09GX1BST1ZJREVSCj4+Pj4gKwlzZWxlY3QgQ0xL REVWX0xPT0tVUAo+Pj4+ICsJZGVmYXVsdCB5Cj4+Pj4gKwo+Pj4+ICtjb25maWcgQVJDSF9URVhU X0JBU0UKPj4+PiArCWhleAo+Pj4+ICsJZGVmYXVsdCAweDAKPj4+PiArCj4+Pj4gK2NvbmZpZyBH RU5FUklDX0xJTktFUl9TQ1JJUFQKPj4+PiArCWJvb2wKPj4+PiArCWRlZmF1bHQgeQo+Pj4+ICsK Pj4+PiArbWVudSAiTWFjaGluZSBzZWxlY3Rpb24iCj4+Pj4gKwo+Pj4+ICtjaG9pY2UKPj4+PiAr CXByb21wdCAiQ1BVIHNlbGVjdGlvbiIKPj4+PiArCWRlZmF1bHQgQ1BVX1JWX0dFTkVSSUMKPj4+ PiArCj4+Pj4gK2NvbmZpZyBDUFVfUlZfR0VORVJJQwo+Pj4+ICsJYm9vbCAiR2VuZXJpYyBSSVND LVYiCj4+Pj4gKwlzZWxlY3QgQ1BVX1NVUFBPUlRTXzMyQklUX0tFUk5FTAo+Pj4+ICsJc2VsZWN0 IENQVV9TVVBQT1JUU182NEJJVF9LRVJORUwKPj4+PiArCj4+Pj4gK2VuZGNob2ljZQo+Pj4+ICsK Pj4+PiArY29uZmlnIENQVV9TVVBQT1JUU18zMkJJVF9LRVJORUwKPj4+PiArCWJvb2wKPj4+PiAr Y29uZmlnIENQVV9TVVBQT1JUU182NEJJVF9LRVJORUwKPj4+PiArCWJvb2wKPj4+PiArCj4+Pj4g K2Nob2ljZQo+Pj4+ICsJcHJvbXB0ICJiYXJlYm94IGNvZGUgbW9kZWwiCj4+Pj4gKwlkZWZhdWx0 IDY0QklUCj4+Pj4gKwo+Pj4+ICtjb25maWcgMzJCSVQKPj4+PiArCWJvb2wgIjMyLWJpdCBiYXJl Ym94Igo+Pj4+ICsJZGVwZW5kcyBvbiBDUFVfU1VQUE9SVFNfMzJCSVRfS0VSTkVMCj4+Pj4gKwlo ZWxwCj4+Pj4gKwkgIFNlbGVjdCB0aGlzIG9wdGlvbiB0byBidWlsZCBhIDMyLWJpdCBiYXJlYm94 Lgo+Pj4+ICsKPj4+PiArY29uZmlnIDY0QklUCj4+Pj4gKwlib29sICI2NC1iaXQgYmFyZWJveCIK Pj4+PiArCWRlcGVuZHMgb24gQ1BVX1NVUFBPUlRTXzY0QklUX0tFUk5FTAo+Pj4+ICsJaGVscAo+ Pj4+ICsJICBTZWxlY3QgdGhpcyBvcHRpb24gdG8gYnVpbGQgYSA2NC1iaXQgYmFyZWJveC4KPj4+ PiArCj4+Pj4gK2VuZGNob2ljZQo+Pj4+ICsKPj4+PiArY29uZmlnIEJVSUxUSU5fRFRCCj4+Pj4g Kwlib29sICJsaW5rIGEgRFRCIGludG8gdGhlIGJhcmVib3ggaW1hZ2UiCj4+Pj4gKwlkZXBlbmRz IG9uIE9GVFJFRQo+Pj4+ICsKPj4+PiArY29uZmlnIEJVSUxUSU5fRFRCX05BTUUKPj4+PiArCXN0 cmluZyAiRFRCIHRvIGJ1aWxkIGludG8gdGhlIGJhcmVib3ggaW1hZ2UiCj4+Pj4gKwlkZXBlbmRz IG9uIEJVSUxUSU5fRFRCCj4+Pj4gKwo+Pj4+ICtlbmRtZW51Cj4+Pj4gKwo+Pj4+ICtzb3VyY2Ug Y29tbW9uL0tjb25maWcKPj4+PiArc291cmNlIGNvbW1hbmRzL0tjb25maWcKPj4+PiArc291cmNl IG5ldC9LY29uZmlnCj4+Pj4gK3NvdXJjZSBkcml2ZXJzL0tjb25maWcKPj4+PiArc291cmNlIGZz L0tjb25maWcKPj4+PiArc291cmNlIGxpYi9LY29uZmlnCj4+Pj4gK3NvdXJjZSBjcnlwdG8vS2Nv bmZpZwo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L01ha2VmaWxlIGIvYXJjaC9yaXNjdi9N YWtlZmlsZQo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi40 ZTMzMThjZjEKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9NYWtlZmls ZQo+Pj4+IEBAIC0wLDAgKzEsNjggQEAKPj4+PiArQ1BQRkxBR1MgKz0gLWZuby1zdHJpY3QtYWxp YXNpbmcKPj4+PiArCj4+Pj4gK2NmbGFncy15ICs9IC1mbm8tcGljIC1waXBlCj4+Pj4gK2NmbGFn cy15ICs9IC1XYWxsIC1XbWlzc2luZy1wcm90b3R5cGVzIC1Xc3RyaWN0LXByb3RvdHlwZXMgXAo+ Pj4+ICsJLVduby11bmluaXRpYWxpemVkIC1Xbm8tZm9ybWF0IC1Xbm8tbWFpbiAtbWNtb2RlbD1t ZWRhbnkKPj4+PiArCj4+Pj4gK0xERkxBR1MgKz0gJChsZGZsYWdzLXkpCj4+Pj4gK0xERkxBR1Nf YmFyZWJveCArPSAtbm9zdGRsaWIKPj4+PiArCj4+Pj4gK1RFWFRfQkFTRSA9ICQoQ09ORklHX1RF WFRfQkFTRSkKPj4+PiArQ1BQRkxBR1MgKz0gLURURVhUX0JBU0U9JChDT05GSUdfVEVYVF9CQVNF KQo+Pj4+ICsKPj4+PiAraWZuZGVmIENPTkZJR19NT0RVTEVTCj4+Pj4gKyMgQWRkIGNsZWFudXAg ZmxhZ3MKPj4+PiArQ1BQRkxBR1MgKz0gLWZkYXRhLXNlY3Rpb25zIC1mZnVuY3Rpb24tc2VjdGlv bnMKPj4+PiArTERGTEFHU19iYXJlYm94ICs9IC1zdGF0aWMgLS1nYy1zZWN0aW9ucwo+Pj4+ICtl bmRpZgo+Pj4+ICsKPj4+PiArS0JVSUxEX0JJTkFSWSA6PSBiYXJlYm94LmJpbgo+Pj4+ICsKPj4+ PiArbWFjaGRpcnMgOj0gJChwYXRzdWJzdCAlLGFyY2gvcmlzY3YvbWFjaC0lLywkKG1hY2hpbmUt eSkpCj4+Pj4gKwo+Pj4+ICtpZm5lcSAoJChib2FyZC15KSwpCj4+Pj4gK0JPQVJEIDo9IGFyY2gv cmlzY3YvYm9hcmRzLyQoYm9hcmQteSkvCj4+Pj4gK2Vsc2UKPj4+PiArQk9BUkQgOj0KPj4+PiAr ZW5kaWYKPj4+PiArCj4+Pj4gK2lmZXEgKCQoS0JVSUxEX1NSQyksKQo+Pj4+ICtDUFBGTEFHUyAr PSAtSSQoQk9BUkQpL2luY2x1ZGUKPj4+PiArZWxzZQo+Pj4+ICtDUFBGTEFHUyArPSAtSSQoc3Jj dHJlZSkvJChCT0FSRCkvaW5jbHVkZQo+Pj4+ICtlbmRpZgo+Pj4+ICsKPj4+PiAraWZlcSAoJChL QlVJTERfU1JDKSwpCj4+Pj4gK0NQUEZMQUdTICs9ICQocGF0c3Vic3QgJSwtSSVpbmNsdWRlLCQo bWFjaGRpcnMpKQo+Pj4+ICtlbHNlCj4+Pj4gK0NQUEZMQUdTICs9ICQocGF0c3Vic3QgJSwtSSQo c3JjdHJlZSkvJWluY2x1ZGUsJChtYWNoZGlycykpCj4+Pj4gK2VuZGlmCj4+Pj4gKwo+Pj4+ICth cmNocHJlcGFyZTogbWFrZXRvb2xzCj4+Pj4gKwo+Pj4+ICtQSE9OWSArPSBtYWtldG9vbHMKPj4+ PiArCj4+Pj4gK2lmbmVxICgkKG1hY2hpbmUteSksKQo+Pj4+ICtNQUNIICA6PSBhcmNoL3Jpc2N2 L21hY2gtJChtYWNoaW5lLXkpLwo+Pj4+ICtlbHNlCj4+Pj4gK01BQ0ggIDo9Cj4+Pj4gK2VuZGlm Cj4+Pj4gKwo+Pj4+ICtpZm5lcSAoJChib2FyZC15KSwpCj4+Pj4gK0JPQVJEIDo9IGFyY2gvcmlz Y3YvYm9hcmRzLyQoYm9hcmQteSkvCj4+Pj4gK2Vsc2UKPj4+PiArQk9BUkQgOj0KPj4+PiArZW5k aWYKPj4+PiArCj4+Pj4gK2NvbW1vbi15ICs9ICQoQk9BUkQpICQoTUFDSCkKPj4+PiArY29tbW9u LXkgKz0gYXJjaC9yaXNjdi9saWIvCj4+Pj4gK2NvbW1vbi15ICs9IGFyY2gvcmlzY3YvYm9vdC8K Pj4+PiArCj4+Pj4gK2NvbW1vbi0kKENPTkZJR19PRlRSRUUpICs9IGFyY2gvcmlzY3YvZHRzLwo+ Pj4+ICsKPj4+PiArQ1BQRkxBR1MgKz0gJChjZmxhZ3MteSkKPj4+PiArQ0ZMQUdTICs9ICQoY2Zs YWdzLXkpCj4+Pj4gKwo+Pj4+ICtsZHMteQk6PSBhcmNoL3Jpc2N2L2xpYi9iYXJlYm94Lmxkcwo+ Pj4+ICsKPj4+PiArQ0xFQU5fRklMRVMgKz0gYXJjaC9yaXNjdi9saWIvYmFyZWJveC5sZHMKPj4+ PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9ib290L01ha2VmaWxlIGIvYXJjaC9yaXNjdi9ib290 L01ha2VmaWxlCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAu LmQ2ZDI4Y2U2NQo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9hcmNoL3Jpc2N2L2Jvb3Qv TWFrZWZpbGUKPj4+PiBAQCAtMCwwICsxLDIgQEAKPj4+PiArb2JqLXkgKz0gc3RhcnQubwo+Pj4+ ICtvYmoteSArPSBtYWluX2VudHJ5Lm8KPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9ib290 L21haW5fZW50cnkuYyBiL2FyY2gvcmlzY3YvYm9vdC9tYWluX2VudHJ5LmMKPj4+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4uMThkYjg2ZGE1Cj4+Pj4gLS0tIC9k ZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvYm9vdC9tYWluX2VudHJ5LmMKPj4+PiBAQCAt MCwwICsxLDQwIEBACj4+Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBBbnRvbnkg UGF2bG92IDxhbnRvbnlucGF2bG92QGdtYWlsLmNvbT4KPj4+PiArICoKPj4+PiArICogVGhpcyBm aWxlIGlzIHBhcnQgb2YgYmFyZWJveC4KPj4+PiArICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlz dCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcHJvamVjdC4KPj4+PiArICoKPj4+ PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgo+Pj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwo+Pj4+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgo+Pj4+ICsgKiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4+PiArICoKPj4+ PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCj4+Pj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4+Pj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPj4+PiArICogR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+PiArICoKPj4+PiArICov Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSA8Y29tbW9uLmg+Cj4+Pj4gKyNpbmNsdWRlIDxtZW1vcnku aD4KPj4+PiArI2luY2x1ZGUgPGFzbS1nZW5lcmljL21lbW9yeV9sYXlvdXQuaD4KPj4+PiArI2lu Y2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgo+Pj4+ICsKPj4+PiArdm9pZCBtYWluX2VudHJ5KHZvaWQp Owo+Pj4+ICsKPj4+PiArLyoqCj4+Pj4gKyAqIENhbGxlZCBwbGFpbmx5IGZyb20gYXNzZW1ibGVy IGNvZGUKPj4+PiArICoKPj4+PiArICogQG5vdGUgVGhlIEMgZW52aXJvbm1lbnQgaXNuJ3QgaW5p dGlhbGl6ZWQgeWV0Cj4+Pj4gKyAqLwo+Pj4+ICt2b2lkIG1haW5fZW50cnkodm9pZCkKPj4+PiAr ewo+Pj4+ICsJLyogY2xlYXIgdGhlIEJTUyBmaXJzdCAqLwo+Pj4+ICsJbWVtc2V0KF9fYnNzX3N0 YXJ0LCAweDAwLCBfX2Jzc19zdG9wIC0gX19ic3Nfc3RhcnQpOwo+Pj4+ICsKPj4+PiArCW1lbV9t YWxsb2NfaW5pdCgodm9pZCAqKU1BTExPQ19CQVNFLAo+Pj4+ICsJCQkodm9pZCAqKShNQUxMT0Nf QkFTRSArIE1BTExPQ19TSVpFIC0gMSkpOwo+Pj4+ICsKPj4+PiArCXN0YXJ0X2JhcmVib3goKTsK Pj4+PiArfQo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2Jvb3Qvc3RhcnQuUyBiL2FyY2gv cmlzY3YvYm9vdC9zdGFydC5TCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAw MDAwMDAwMDAuLjJmZDAwZjYzZAo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9hcmNoL3Jp c2N2L2Jvb3Qvc3RhcnQuUwo+Pj4+IEBAIC0wLDAgKzEsNzQgQEAKPj4+PiArLyoKPj4+PiArICog U3RhcnR1cCBDb2RlIGZvciBNSVBTIENQVQo+Pj4+ICsgKgo+Pj4+ICsgKiBiYXNlZCBvbiBjb3Jl Ym9vdC9zcmMvYXJjaC9yaXNjdi9ib290YmxvY2suUwo+Pj4+ICsgKgo+Pj4+ICsgKiBDb3B5cmln aHQgKEMpIDIwMTYgQW50b255IFBhdmxvdiA8YW50b255bnBhdmxvdkBnbWFpbC5jb20+Cj4+Pj4g KyAqCj4+Pj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJhcmVib3guCj4+Pj4gKyAqIFNlZSBm aWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzIHBy b2plY3QuCj4+Pj4gKyAqCj4+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4+Pj4gKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCj4+Pj4g KyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+Pj4+ICsg Kgo+Pj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPj4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+PiArICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+Pj4+ICsgKiBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4+ICsgKgo+Pj4+ ICsgKi8KPj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9tZW1vcnlfbGF5b3V0Lmg+ Cj4+Pj4gKwo+Pj4+ICsJLnRleHQKPj4+PiArCS5zZWN0aW9uICIudGV4dF9lbnRyeSIKPj4+PiAr CS5hbGlnbiAyCj4+Pj4gKwo+Pj4+ICsuZ2xvYmwgX3N0YXJ0Cj4+Pj4gK19zdGFydDoKPj4+PiAr CWxpIHNwLCBTVEFDS19CQVNFICsgU1RBQ0tfU0laRQo+Pj4+ICsKPj4+PiArCSMgbWFrZSByb29t IGZvciBITFMgYW5kIGluaXRpYWxpemUgaXQKPj4+PiArCWFkZGkgc3AsIHNwLCAtNjQgLyogTUVO VFJZX0ZSQU1FX1NJWkUgKi8KPj4+PiArCj4+Pj4gKwkjIHBvaXNvbiB0aGUgc3RhY2sKPj4+PiAr CWxpIHQxLCBTVEFDS19CQVNFCj4+Pj4gKwlsaSB0MCwgMHhkZWFkYmVlZgo+Pj4+ICsJc3cgdDAs IDAodDEpCj4+Pj4gKwo+Pj4+ICsJIyBjbGVhciBhbnkgcGVuZGluZyBpbnRlcnJ1cHRzCj4+Pj4g KwkvL2NzcndpIG1pcCwgMAo+Pj4gc2hvdWxkIGJlIHJlbW92ZWQuCj4+Pgo+Pj4+ICsJLyogY29w eSBiYXJlYm94IHRvIGxpbmsgbG9jYXRpb24gKi8KPj4+PiArCj4+Pj4gKwlsYQlhMCwgX3N0YXJ0 CS8qIGEwIDwtIF9zdGFydCBhY3R1YWwgYWRkcmVzcyAqLwo+Pj4+ICsJbGkJYTEsIENPTkZJR19U RVhUX0JBU0UJLyogYTEgPC0gX3N0YXJ0IGxpbmsgYWRkcmVzcyAqLwo+Pj4+ICsKPj4+PiArCWJl cQlhMCwgYTEsIG1haW5fZW50cnkKPj4+PiArCj4+Pj4gKwlsYQlhMiwgX19ic3Nfc3RhcnQKPj4+ PiArCj4+Pj4gKyNkZWZpbmUgTE9OR1NJWkUgNAo+Pj4+ICsKPj4+PiArY29weV9sb29wOgo+Pj4+ ICsJLyogY29weSBmcm9tIHNvdXJjZSBhZGRyZXNzIFthMF0gKi8KPj4+PiArCWx3CXQwLCBMT05H U0laRSAqIDAoYTApCj4+Pj4gKwlsdwl0MSwgTE9OR1NJWkUgKiAxKGEwKQo+Pj4+ICsJbHcJdDIs IExPTkdTSVpFICogMihhMCkKPj4+PiArCWx3CXQzLCBMT05HU0laRSAqIDMoYTApCj4+Pj4gKwkv KiBjb3B5IHRvIHRhcmdldCBhZGRyZXNzIFthMV0gKi8KPj4+PiArCXN3CXQwLCBMT05HU0laRSAq IDAoYTEpCj4+Pj4gKwlzdwl0MSwgTE9OR1NJWkUgKiAxKGExKQo+Pj4+ICsJc3cJdDIsIExPTkdT SVpFICogMihhMSkKPj4+PiArCXN3CXQzLCBMT05HU0laRSAqIDMoYTEpCj4+Pj4gKwlhZGRpCWEw LCBhMCwgTE9OR1NJWkUgKiAyCj4+Pj4gKwlhZGRpCWExLCBhMSwgTE9OR1NJWkUgKiAyCj4+Pj4g KwliZ2V1CWEyLCBhMCwgY29weV9sb29wCj4+Pj4gKwo+Pj4+ICsJLyogQWxhcyEgQXQgdGhlIG1v bWVudCBJIGNhbid0IGxvYWQgbWFpbl9lbnRyeSBfX2xpbmtfXyBhZGRyZXNzCj4+Pj4gKwkgICBp bnRvIGEwIHdpdGggbGEuIFVzZSBDT05GSUdfVEVYVF9CQVNFIGluc3RlYWQuIFRoaXMgc29sdXRp b24KPj4+PiArCSAgIGxlYWRzIHRvIGV4dHJhIGN5Y2xlcyBmb3IgcmVwZWF0IHNwIGluaXRpYWxp emF0aW9uLiAqLwo+Pj4+ICsKPj4+PiArCWxpCWEwLCBDT05GSUdfVEVYVF9CQVNFCj4+Pj4gKwlq YWxyCWEwCj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvZHRzLy5naXRpZ25vcmUgYi9hcmNo L3Jpc2N2L2R0cy8uZ2l0aWdub3JlCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRl eCAwMDAwMDAwMDAuLjA3NzkwM2M1MAo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9hcmNo L3Jpc2N2L2R0cy8uZ2l0aWdub3JlCj4+Pj4gQEAgLTAsMCArMSBAQAo+Pj4+ICsqZHRiKgo+Pj4+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2R0cy9NYWtlZmlsZSBiL2FyY2gvcmlzY3YvZHRzL01h a2VmaWxlCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAuLmY4 MzgwYjExYwo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9hcmNoL3Jpc2N2L2R0cy9NYWtl ZmlsZQo+Pj4+IEBAIC0wLDAgKzEsOSBAQAo+Pj4+ICtCVUlMVElOX0RUQiA6PSAkKHBhdHN1YnN0 ICIlIiwlLCQoQ09ORklHX0JVSUxUSU5fRFRCX05BTUUpKQo+Pj4+ICtvYmotJChDT05GSUdfQlVJ TFRJTl9EVEIpICs9ICQoQlVJTFRJTl9EVEIpLmR0Yi5vCj4+Pj4gKwo+Pj4+ICsjIGp1c3QgdG8g YnVpbGQgYSBidWlsdC1pbi5vLiBPdGhlcndpc2UgY29tcGlsYXRpb24gZmFpbHMgd2hlbiBubyBk ZXZpY2V0cmVlIGlzCj4+Pj4gKyMgY3JlYXRlZC4KPj4+PiArb2JqLSArPSBkdW1teS5vCj4+Pj4g Kwo+Pj4+ICthbHdheXMgOj0gJChkdGIteSkKPj4+PiArY2xlYW4tZmlsZXMgOj0gKi5kdGIgKi5k dGIuUyAuKi5kdGMgLioucHJlIC4qLmR0cwo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2R0 cy9za2VsZXRvbi5kdHNpIGIvYXJjaC9yaXNjdi9kdHMvc2tlbGV0b24uZHRzaQo+Pj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi4zOGVhZDgyMWIKPj4+PiAtLS0g L2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9kdHMvc2tlbGV0b24uZHRzaQo+Pj4+IEBA IC0wLDAgKzEsMTMgQEAKPj4+PiArLyoKPj4+PiArICogU2tlbGV0b24gZGV2aWNlIHRyZWU7IHRo ZSBiYXJlIG1pbmltdW0gbmVlZGVkIHRvIGJvb3Q7IGp1c3QgaW5jbHVkZSBhbmQKPj4+PiArICog YWRkIGEgY29tcGF0aWJsZSB2YWx1ZS4gIFRoZSBib290bG9hZGVyIHdpbGwgdHlwaWNhbGx5IHBv cHVsYXRlIHRoZSBtZW1vcnkKPj4+PiArICogbm9kZS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ICsv IHsKPj4+PiArCSNhZGRyZXNzLWNlbGxzID0gPDI+Owo+Pj4+ICsJI3NpemUtY2VsbHMgPSA8MT47 Cj4+Pj4gKwljaG9zZW4geyB9Owo+Pj4+ICsJYWxpYXNlcyB7IH07Cj4+Pj4gKwltZW1vcnkgeyBk ZXZpY2VfdHlwZSA9ICJtZW1vcnkiOyByZWcgPSA8MCAwIDA+OyB9Owo+Pj4gInJlZyA9IDwwIDA+ IiBpbnN0ZWFkPwo+Pj4KPj4+PiArfTsKPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9iYXJlYm94LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2JhcmVib3guaAo+Pj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi4yOTk3NTg3ZDgKPj4+ PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9iYXJlYm94 LmgKPj4+PiBAQCAtMCwwICsxIEBACj4+Pj4gKy8qIGR1bW15ICovCj4+Pj4gZGlmZiAtLWdpdCBh L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYml0b3BzLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L2JpdG9wcy5oCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAu LmU3N2FiODMyMAo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL2JpdG9wcy5oCj4+Pj4gQEAgLTAsMCArMSwzNSBAQAo+Pj4+ICsvKgo+Pj4+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCj4+Pj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzCj4+Pj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCj4+Pj4gKyAqIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+Pj4+ICsgKgo+Pj4+ICsgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKPj4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKPj4+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+Pj4+ICsgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+Pj4+ICsgKgo+Pj4+ICsgKgo+Pj4+ICsg Ki8KPj4+PiArCj4+Pj4gKyNpZm5kZWYgX0FTTV9CSVRPUFNfSF8KPj4+PiArI2RlZmluZSBfQVNN X0JJVE9QU19IXwo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPGFzbS1nZW5lcmljL2JpdG9wcy9fX2Zm cy5oPgo+Pj4+ICsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL19fZmxzLmg+Cj4+Pj4gKyNp bmNsdWRlIDxhc20tZ2VuZXJpYy9iaXRvcHMvZmZzLmg+Cj4+Pj4gKyNpbmNsdWRlIDxhc20tZ2Vu ZXJpYy9iaXRvcHMvZmxzLmg+Cj4+Pj4gKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9iaXRvcHMvZmZ6 Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9iaXRvcHMvaHdlaWdodC5oPgo+Pj4+ICsj aW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL2ZsczY0Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxhc20t Z2VuZXJpYy9iaXRvcHMvZmluZC5oPgo+Pj4+ICsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3Bz L29wcy5oPgo+Pj4+ICsKPj4+PiArI2RlZmluZSBzZXRfYml0KHgsIHkpCQkJX19zZXRfYml0KHgs IHkpCj4+Pj4gKyNkZWZpbmUgY2xlYXJfYml0KHgsIHkpCQkJX19jbGVhcl9iaXQoeCwgeSkKPj4+ PiArI2RlZmluZSBjaGFuZ2VfYml0KHgsIHkpCQlfX2NoYW5nZV9iaXQoeCwgeSkKPj4+PiArI2Rl ZmluZSB0ZXN0X2FuZF9zZXRfYml0KHgsIHkpCQlfX3Rlc3RfYW5kX3NldF9iaXQoeCwgeSkKPj4+ PiArI2RlZmluZSB0ZXN0X2FuZF9jbGVhcl9iaXQoeCwgeSkJX190ZXN0X2FuZF9jbGVhcl9iaXQo eCwgeSkKPj4+PiArI2RlZmluZSB0ZXN0X2FuZF9jaGFuZ2VfYml0KHgsIHkpCV9fdGVzdF9hbmRf Y2hhbmdlX2JpdCh4LCB5KQo+Pj4+ICsKPj4+PiArI2VuZGlmIC8qIF9BU01fQklUT1BTX0hfICov Cj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYml0c3BlcmxvbmcuaCBi L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYml0c3BlcmxvbmcuaAo+Pj4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi40NjQxZTdlNDgKPj4+PiAtLS0gL2Rldi9udWxs Cj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9iaXRzcGVybG9uZy5oCj4+Pj4gQEAg LTAsMCArMSwxMCBAQAo+Pj4+ICsjaWZuZGVmIF9fQVNNX0JJVFNQRVJMT05HX0gKPj4+PiArI2Rl ZmluZSBfX0FTTV9CSVRTUEVSTE9OR19ICj4+Pj4gKwo+Pj4+ICsjaWZkZWYgX19yaXNjdjY0Cj4+ Pj4gKyNkZWZpbmUgQklUU19QRVJfTE9ORyA2NAo+Pj4+ICsjZWxzZQo+Pj4+ICsjZGVmaW5lIEJJ VFNfUEVSX0xPTkcgMzIKPj4+PiArI2VuZGlmCj4+Pj4gKwo+Pj4+ICsjZW5kaWYgLyogX19BU01f QklUU1BFUkxPTkdfSCAqLwo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNt L2J5dGVvcmRlci5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9ieXRlb3JkZXIuaAo+Pj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi43NzhiYjcyMjQKPj4+PiAt LS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9ieXRlb3JkZXIu aAo+Pj4+IEBAIC0wLDAgKzEsMTAgQEAKPj4+PiArI2lmbmRlZiBfQVNNX1JJU0NWX0JZVEVPUkRF Ul9ICj4+Pj4gKyNkZWZpbmUgX0FTTV9SSVNDVl9CWVRFT1JERVJfSAo+Pj4+ICsKPj4+PiArI2lm IGRlZmluZWQoX19SSVNDVkVCX18pCj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9ieXRlb3JkZXIvYmln X2VuZGlhbi5oPgo+Pj4+ICsjZWxzZQo+Pj4+ICsjaW5jbHVkZSA8bGludXgvYnl0ZW9yZGVyL2xp dHRsZV9lbmRpYW4uaD4KPj4+PiArI2VuZGlmCj4+Pj4gKwo+Pj4+ICsjZW5kaWYgLyogX0FTTV9S SVNDVl9CWVRFT1JERVJfSCAqLwo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUv YXNtL2NvbW1vbi5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jb21tb24uaAo+Pj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi5iYzhhMTdlMzAKPj4+PiAtLS0g L2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jb21tb24uaAo+Pj4+ IEBAIC0wLDAgKzEsNiBAQAo+Pj4+ICsjaWZuZGVmIEFTTV9SSVNDVl9DT01NT05fSAo+Pj4+ICsj ZGVmaW5lIEFTTV9SSVNDVl9DT01NT05fSAo+Pj4+ICsKPj4+PiArLyogbm90aGluZyBzcGVjaWFs IHlldCAqLwo+Pj4+ICsKPj4+PiArI2VuZGlmIC8qIEFTTV9SSVNDVl9DT01NT05fSCAqLwo+Pj4+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2VsZi5oIGIvYXJjaC9yaXNjdi9p bmNsdWRlL2FzbS9lbGYuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAw MDAwMDAwLi43MTM0ZmEwNTgKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNj di9pbmNsdWRlL2FzbS9lbGYuaAo+Pj4+IEBAIC0wLDAgKzEsMTEgQEAKPj4+PiArI2lmbmRlZiBf X0FTTV9SSVNDVl9FTEZfSF9fCj4+Pj4gKyNkZWZpbmUgX19BU01fUklTQ1ZfRUxGX0hfXwo+Pj4+ ICsKPj4+PiArI2lmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4Cj4+Pj4gKyNkZWZpbmUgRUxGX0NM QVNTCUVMRkNMQVNTNjQKPj4+PiArI2RlZmluZSBDT05GSUdfUEhZU19BRERSX1RfNjRCSVQKPj4+ PiArI2Vsc2UKPj4+PiArI2RlZmluZSBFTEZfQ0xBU1MJRUxGQ0xBU1MzMgo+Pj4+ICsjZW5kaWYK Pj4+PiArCj4+Pj4gKyNlbmRpZiAvKiBfX0FTTV9SSVNDVl9FTEZfSF9fICovCj4+Pj4gZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaW8uaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9h c20vaW8uaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi4z Y2RlYTdmY2EKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRl L2FzbS9pby5oCj4+Pj4gQEAgLTAsMCArMSw4IEBACj4+Pj4gKyNpZm5kZWYgX19BU01fUklTQ1Zf SU9fSAo+Pj4+ICsjZGVmaW5lIF9fQVNNX1JJU0NWX0lPX0gKPj4+PiArCj4+Pj4gKyNkZWZpbmUg SU9fU1BBQ0VfTElNSVQgMAo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPGFzbS1nZW5lcmljL2lvLmg+ Cj4+Pj4gKwo+Pj4+ICsjZW5kaWYgLyogX19BU01fUklTQ1ZfSU9fSCAqLwo+Pj4+IGRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL21tdS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2Fz bS9tbXUuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi45 NWFmODcxNDIKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRl L2FzbS9tbXUuaAo+Pj4+IEBAIC0wLDAgKzEsNiBAQAo+Pj4+ICsjaWZuZGVmIF9fQVNNX01NVV9I Cj4+Pj4gKyNkZWZpbmUgX19BU01fTU1VX0gKPj4+PiArCj4+Pj4gKyNkZWZpbmUgTUFQX0FSQ0hf REVGQVVMVCBNQVBfVU5DQUNIRUQKPj4+PiArCj4+Pj4gKyNlbmRpZiAvKiBfX0FTTV9NTVVfSCAq Lwo+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgg Yi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgKPj4+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4uMjJjYWU2MjMwCj4+Pj4gLS0tIC9kZXYvbnVs bAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcG9zaXhfdHlwZXMuaAo+Pj4+IEBA IC0wLDAgKzEgQEAKPj4+PiArI2luY2x1ZGUgPGFzbS1nZW5lcmljL3Bvc2l4X3R5cGVzLmg+Cj4+ Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2VjdGlvbnMuaCBiL2FyY2gv cmlzY3YvaW5jbHVkZS9hc20vc2VjdGlvbnMuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+ Pj4gaW5kZXggMDAwMDAwMDAwLi4yYjhjNTE2MDMKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysr IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zZWN0aW9ucy5oCj4+Pj4gQEAgLTAsMCArMSBAQAo+ Pj4+ICsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvc2VjdGlvbnMuaD4KPj4+PiBkaWZmIC0tZ2l0IGEv YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zdHJpbmcuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v c3RyaW5nLmgKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4u Mjk5NzU4N2Q4Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vc3RyaW5nLmgKPj4+PiBAQCAtMCwwICsxIEBACj4+Pj4gKy8qIGR1bW15ICovCj4+Pj4g ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3dhYi5oIGIvYXJjaC9yaXNjdi9p bmNsdWRlL2FzbS9zd2FiLmgKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAw MDAwMDAwMC4uNjBhOTAxMjBiCj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlz Y3YvaW5jbHVkZS9hc20vc3dhYi5oCj4+Pj4gQEAgLTAsMCArMSw2IEBACj4+Pj4gKyNpZm5kZWYg X0FTTV9TV0FCX0gKPj4+PiArI2RlZmluZSBfQVNNX1NXQUJfSAo+Pj4+ICsKPj4+PiArLyogbm90 aGluZy4gdXNlIGdlbmVyaWMgZnVuY3Rpb25zICovCj4+Pj4gKwo+Pj4+ICsjZW5kaWYgLyogX0FT TV9TV0FCX0ggKi8KPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90eXBl cy5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS90eXBlcy5oCj4+Pj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAuLmJhMzg2YWI0Ywo+Pj4+IC0tLSAvZGV2L251bGwK Pj4+PiArKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3R5cGVzLmgKPj4+PiBAQCAtMCwwICsx LDYwIEBACj4+Pj4gKyNpZm5kZWYgX19BU01fUklTQ1ZfVFlQRVNfSAo+Pj4+ICsjZGVmaW5lIF9f QVNNX1JJU0NWX1RZUEVTX0gKPj4+PiArCj4+Pj4gKyNpZmRlZiBfX3Jpc2N2NjQKPj4+PiArLyoK Pj4+PiArICogVGhpcyBpcyB1c2VkIGluIGRsbWFsbG9jLiBPbiBSSVNDVjY0IHdlIG5lZWQgaXQg dG8gYmUgNjQgYml0Cj4+Pj4gKyAqLwo+Pj4+ICsjZGVmaW5lIElOVEVSTkFMX1NJWkVfVCB1bnNp Z25lZCBsb25nCj4+Pj4gKwo+Pj4+ICsvKgo+Pj4+ICsgKiBUaGlzIGlzIGEgS2NvbmZpZyB2YXJp YWJsZSBpbiB0aGUgS2VybmVsLCBidXQgd2Ugd2FudCB0byBkZXRlY3QKPj4+PiArICogdGhpcyBk dXJpbmcgY29tcGlsZSB0aW1lLCBzbyB3ZSBzZXQgaXQgaGVyZS4KPj4+PiArICovCj4+Pj4gKyNk ZWZpbmUgQ09ORklHX1BIWVNfQUREUl9UXzY0QklUCj4+Pj4gKwo+Pj4+ICsjZW5kaWYKPj4+PiAr Cj4+Pj4gK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdW1vZGVfdDsKPj4+PiArCj4+Pj4gKy8qCj4+ Pj4gKyAqIF9feHggaXMgb2s6IGl0IGRvZXNuJ3QgcG9sbHV0ZSB0aGUgUE9TSVggbmFtZXNwYWNl LiBVc2UgdGhlc2UgaW4gdGhlCj4+Pj4gKyAqIGhlYWRlciBmaWxlcyBleHBvcnRlZCB0byB1c2Vy IHNwYWNlCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArdHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19z ODsKPj4+PiArdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cj4+Pj4gKwo+Pj4+ICt0eXBlZGVm IF9fc2lnbmVkX18gc2hvcnQgX19zMTY7Cj4+Pj4gK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191 MTY7Cj4+Pj4gKwo+Pj4+ICt0eXBlZGVmIF9fc2lnbmVkX18gaW50IF9fczMyOwo+Pj4+ICt0eXBl ZGVmIHVuc2lnbmVkIGludCBfX3UzMjsKPj4+PiArCj4+Pj4gKyNpZiBkZWZpbmVkKF9fR05VQ19f KSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCj4+Pj4gK3R5cGVkZWYgX19zaWduZWRfXyBs b25nIGxvbmcgX19zNjQ7Cj4+Pj4gK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0Owo+ Pj4+ICsjZW5kaWYKPj4+PiArCj4+Pj4gKy8qCj4+Pj4gKyAqIFRoZXNlIGFyZW4ndCBleHBvcnRl ZCBvdXRzaWRlIHRoZSBrZXJuZWwgdG8gYXZvaWQgbmFtZSBzcGFjZSBjbGFzaGVzCj4+Pj4gKyAq Lwo+Pj4+ICsjaWZkZWYgX19LRVJORUxfXwo+Pj4+ICsKPj4+PiArdHlwZWRlZiBzaWduZWQgY2hh ciBzODsKPj4+PiArdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4Owo+Pj4+ICsKPj4+PiArdHlwZWRl ZiBzaWduZWQgc2hvcnQgczE2Owo+Pj4+ICt0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKPj4+ PiArCj4+Pj4gK3R5cGVkZWYgc2lnbmVkIGludCBzMzI7Cj4+Pj4gK3R5cGVkZWYgdW5zaWduZWQg aW50IHUzMjsKPj4+PiArCj4+Pj4gK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBzNjQ7Cj4+Pj4g K3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKPj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxh c20vYml0c3BlcmxvbmcuaD4KPj4+PiArCj4+Pj4gKyNlbmRpZiAvKiBfX0tFUk5FTF9fICovCj4+ Pj4gKwo+Pj4+ICsjZW5kaWYgLyogX19BU01fUklTQ1ZfVFlQRVNfSCAqLwo+Pj4+IGRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3VuYWxpZ25lZC5oIGIvYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS91bmFsaWduZWQuaAo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXgg MDAwMDAwMDAwLi5hYWViYzA2NDEKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS91bmFsaWduZWQuaAo+Pj4+IEBAIC0wLDAgKzEsMTkgQEAKPj4+PiAr I2lmbmRlZiBfQVNNX1JJU0NWX1VOQUxJR05FRF9ICj4+Pj4gKyNkZWZpbmUgX0FTTV9SSVNDVl9V TkFMSUdORURfSAo+Pj4+ICsKPj4+PiArLyoKPj4+PiArICogRklYTUU6IHRoaXMgZmlsZSBpcyBj b3B5LW4tcGFzdGVkIGZyb20gc2FuZGJveCdzIHVuYWxpZ25lZC5oCj4+Pj4gKyAqLwo+Pj4+ICsK Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3VuYWxpZ25lZC9hY2Nlc3Nfb2suaD4KPj4+PiArI2luY2x1 ZGUgPGxpbnV4L3VuYWxpZ25lZC9nZW5lcmljLmg+Cj4+Pj4gKwo+Pj4+ICsjaWYgX19CWVRFX09S REVSID09IF9fTElUVExFX0VORElBTgo+Pj4+ICsjZGVmaW5lIGdldF91bmFsaWduZWQgX19nZXRf dW5hbGlnbmVkX2xlCj4+Pj4gKyNkZWZpbmUgcHV0X3VuYWxpZ25lZCBfX3B1dF91bmFsaWduZWRf bGUKPj4+PiArI2Vsc2UKPj4+PiArI2RlZmluZSBnZXRfdW5hbGlnbmVkIF9fZ2V0X3VuYWxpZ25l ZF9iZQo+Pj4+ICsjZGVmaW5lIHB1dF91bmFsaWduZWQgX19wdXRfdW5hbGlnbmVkX2JlCj4+Pj4g KyNlbmRpZgo+Pj4+ICsKPj4+PiArI2VuZGlmIC8qIF9BU01fUklTQ1ZfVU5BTElHTkVEX0ggKi8K Pj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9saWIvLmdpdGlnbm9yZSBiL2FyY2gvcmlzY3Yv bGliLy5naXRpZ25vcmUKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAw MDAwMC4uZDExNjU3ODhjCj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3Yv bGliLy5naXRpZ25vcmUKPj4+PiBAQCAtMCwwICsxIEBACj4+Pj4gK2JhcmVib3gubGRzCj4+Pj4g ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbGliL01ha2VmaWxlIGIvYXJjaC9yaXNjdi9saWIvTWFr ZWZpbGUKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4uMzEz MzYzYzFhCj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvbGliL01ha2Vm aWxlCj4+Pj4gQEAgLTAsMCArMSw5IEBACj4+Pj4gK2V4dHJhLSQoQ09ORklHX0dFTkVSSUNfTElO S0VSX1NDUklQVCkgKz0gYmFyZWJveC5sZHMKPj4+PiArCj4+Pj4gK29iai15ICs9IHJpc2N2X3Rp bWVyLm8KPj4+PiArCj4+Pj4gK29iai0kKENPTkZJR18zMkJJVCkgKz0gbHNocmRpMy5vCj4+Pj4g K29iai0kKENPTkZJR18zMkJJVCkgKz0gYXNobGRpMy5vCj4+Pj4gK29iai0kKENPTkZJR18zMkJJ VCkgKz0gYXNocmRpMy5vCj4+Pj4gKwo+Pj4+ICtvYmotJChDT05GSUdfQlVJTFRJTl9EVEIpICs9 IGR0Yi5vCj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbGliL2FzaGxkaTMuYyBiL2FyY2gv cmlzY3YvbGliL2FzaGxkaTMuYwo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXgg MDAwMDAwMDAwLi5jYmRiY2JiNmEKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvYXJjaC9y aXNjdi9saWIvYXNobGRpMy5jCj4+Pj4gQEAgLTAsMCArMSwyOCBAQAo+Pj4+ICsjaW5jbHVkZSA8 bW9kdWxlLmg+Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAibGliZ2NjLmgiCj4+Pj4gKwo+Pj4+ICts b25nIGxvbmcgX19hc2hsZGkzKGxvbmcgbG9uZyB1LCB3b3JkX3R5cGUgYikKPj4+PiArewo+Pj4+ ICsJRFd1bmlvbiB1dSwgdzsKPj4+PiArCXdvcmRfdHlwZSBibTsKPj4+PiArCj4+Pj4gKwlpZiAo YiA9PSAwKQo+Pj4+ICsJCXJldHVybiB1Owo+Pj4+ICsKPj4+PiArCXV1LmxsID0gdTsKPj4+PiAr CWJtID0gMzIgLSBiOwo+Pj4+ICsKPj4+PiArCWlmIChibSA8PSAwKSB7Cj4+Pj4gKwkJdy5zLmxv dyA9IDA7Cj4+Pj4gKwkJdy5zLmhpZ2ggPSAodW5zaWduZWQgaW50KSB1dS5zLmxvdyA8PCAtYm07 Cj4+Pj4gKwl9IGVsc2Ugewo+Pj4+ICsJCWNvbnN0IHVuc2lnbmVkIGludCBjYXJyaWVzID0gKHVu c2lnbmVkIGludCkgdXUucy5sb3cgPj4gYm07Cj4+Pj4gKwo+Pj4+ICsJCXcucy5sb3cgPSAodW5z aWduZWQgaW50KSB1dS5zLmxvdyA8PCBiOwo+Pj4+ICsJCXcucy5oaWdoID0gKCh1bnNpZ25lZCBp bnQpIHV1LnMuaGlnaCA8PCBiKSB8IGNhcnJpZXM7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJcmV0 dXJuIHcubGw7Cj4+Pj4gK30KPj4+PiArRVhQT1JUX1NZTUJPTChfX2FzaGxkaTMpOwo+Pj4+IGRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2xpYi9hc2hyZGkzLmMgYi9hcmNoL3Jpc2N2L2xpYi9hc2hy ZGkzLmMKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4uOTI4 ZDZkOTdjCj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvbGliL2FzaHJk aTMuYwo+Pj4+IEBAIC0wLDAgKzEsMzAgQEAKPj4+PiArI2luY2x1ZGUgPG1vZHVsZS5oPgo+Pj4+ ICsKPj4+PiArI2luY2x1ZGUgImxpYmdjYy5oIgo+Pj4+ICsKPj4+PiArbG9uZyBsb25nIF9fYXNo cmRpMyhsb25nIGxvbmcgdSwgd29yZF90eXBlIGIpCj4+Pj4gK3sKPj4+PiArCURXdW5pb24gdXUs IHc+ICsJd29yZF90eXBlIGJtOwo+Pj4+ICsKPj4+PiArCWlmIChiID09IDApCj4+Pj4gKwkJcmV0 dXJuIHU7Cj4+Pj4gKwo+Pj4+ICsJdXUubGwgPSB1Owo+Pj4+ICsJYm0gPSAzMiAtIGI7Cj4+Pj4g Kwo+Pj4+ICsJaWYgKGJtIDw9IDApIHsKPj4+PiArCQkvKiB3LnMuaGlnaCA9IDEuLjEgb3IgMC4u MCAqLwo+Pj4+ICsJCXcucy5oaWdoID0KPj4+PiArCQkgICAgdXUucy5oaWdoID4+IDMxOwo+Pj4+ ICsJCXcucy5sb3cgPSB1dS5zLmhpZ2ggPj4gLWJtOwo+Pj4+ICsJfSBlbHNlIHsKPj4+PiArCQlj b25zdCB1bnNpZ25lZCBpbnQgY2FycmllcyA9ICh1bnNpZ25lZCBpbnQpIHV1LnMuaGlnaCA8PCBi bTsKPj4+PiArCj4+Pj4gKwkJdy5zLmhpZ2ggPSB1dS5zLmhpZ2ggPj4gYjsKPj4+PiArCQl3LnMu bG93ID0gKCh1bnNpZ25lZCBpbnQpIHV1LnMubG93ID4+IGIpIHwgY2FycmllczsKPj4+PiArCX0K Pj4+PiArCj4+Pj4gKwlyZXR1cm4gdy5sbDsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MKF9f YXNocmRpMyk7Cj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbGliL2FzbS1vZmZzZXRzLmMg Yi9hcmNoL3Jpc2N2L2xpYi9hc20tb2Zmc2V0cy5jCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK Pj4+PiBpbmRleCAwMDAwMDAwMDAuLjIyZjM4MmI3MQo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiAr KysgYi9hcmNoL3Jpc2N2L2xpYi9hc20tb2Zmc2V0cy5jCj4+Pj4gQEAgLTAsMCArMSwxMiBAQAo+ Pj4+ICsvKgo+Pj4+ICsgKiBHZW5lcmF0ZSBkZWZpbml0aW9ucyBuZWVkZWQgYnkgYXNzZW1ibHkg bGFuZ3VhZ2UgbW9kdWxlcy4KPj4+PiArICogVGhpcyBjb2RlIGdlbmVyYXRlcyByYXcgYXNtIG91 dHB1dCB3aGljaCBpcyBwb3N0LXByb2Nlc3NlZCB0byBleHRyYWN0Cj4+Pj4gKyAqIGFuZCBmb3Jt YXQgdGhlIHJlcXVpcmVkIGRhdGEuCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPGxp bnV4L2tidWlsZC5oPgo+Pj4+ICsKPj4+PiAraW50IG1haW4odm9pZCkKPj4+PiArewo+Pj4+ICsJ cmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9saWIvYmFyZWJv eC5sZHMuUyBiL2FyY2gvcmlzY3YvbGliL2JhcmVib3gubGRzLlMKPj4+PiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4uOTQ2OGZiOGI1Cj4+Pj4gLS0tIC9kZXYvbnVs bAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvbGliL2JhcmVib3gubGRzLlMKPj4+PiBAQCAtMCwwICsx LDg5IEBACj4+Pj4gKy8qCj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBBbnRvbnkgUGF2bG92 IDxhbnRvbnlucGF2bG92QGdtYWlsLmNvbT4KPj4+PiArICoKPj4+PiArICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgYmFyZWJveC4KPj4+PiArICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBw ZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgcHJvamVjdC4KPj4+PiArICoKPj4+PiArICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKPj4+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKPj4+PiArICogYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4+Pj4gKyAqCj4+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+Pj4+ICsg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo+Pj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+Pj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCj4+Pj4gKyAqCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArI2luY2x1 ZGUgPGFzbS1nZW5lcmljL2JhcmVib3gubGRzLmg+Cj4+Pj4gKwo+Pj4+ICtPVVRQVVRfQVJDSChy aXNjdikKPj4+PiArRU5UUlkoX3N0YXJ0KQo+Pj4+ICtTRUNUSU9OUwo+Pj4+ICt7Cj4+Pj4gKwku ID0gVEVYVF9CQVNFOwo+Pj4+ICsKPj4+PiArCS4gPSBBTElHTig4KTsKPj4+PiArCS50ZXh0ICAg ICAgOgo+Pj4+ICsJewo+Pj4+ICsJCV9zdGV4dCA9IC47Cj4+Pj4gKwkJX3N0YXJ0ID0gLjsKPj4+ PiArCQlLRUVQKCooLnRleHRfZW50cnkqKSkKPj4+PiArCQlfdGV4dCA9IC47Cj4+Pj4gKwkJX19i YXJlX2luaXRfc3RhcnQgPSAuOwo+Pj4+ICsJCSooLnRleHRfYmFyZV9pbml0KikKPj4+PiArCQlf X2JhcmVfaW5pdF9lbmQgPSAuOwo+Pj4+ICsJCSooLnRleHQqKQo+Pj4+ICsJfQo+Pj4+ICsJQkFS RUJPWF9CQVJFX0lOSVRfU0laRQo+Pj4+ICsKPj4+PiArCVBSRV9JTUFHRQo+Pj4+ICsKPj4+PiAr CS4gPSBBTElHTig4KTsKPj4+PiArCS5yb2RhdGEgOiB7ICooLnJvZGF0YSopIH0KPj4+PiArCj4+ Pj4gKwlfZXRleHQgPSAuOwkJCS8qIEVuZCBvZiB0ZXh0IGFuZCByb2RhdGEgc2VjdGlvbiAqLwo+ Pj4+ICsJX3NkYXRhID0gLjsKPj4+PiArCj4+Pj4gKwkuID0gQUxJR04oOCk7Cj4+Pj4gKwkuZGF0 YSA6IHsgKiguZGF0YSopIH0KPj4+PiArCj4+Pj4gKwkuYmFyZWJveF9pbWQgOiB7IEJBUkVCT1hf SU1EIH0KPj4+PiArCj4+Pj4gKwkuID0gQUxJR04oOCk7Cj4+Pj4gKwkuZ290IDogeyAqKC5nb3Qq KSB9Cj4+Pj4gKwo+Pj4+ICsJLiA9IC47Cj4+Pj4gKwlfX2JhcmVib3hfY21kX3N0YXJ0ID0gLjsK Pj4+PiArCS5iYXJlYm94X2NtZCA6IHsgQkFSRUJPWF9DTURTIH0KPj4+PiArCV9fYmFyZWJveF9j bWRfZW5kID0gLjsKPj4+PiArCj4+Pj4gKwlfX2JhcmVib3hfbWFnaWN2YXJfc3RhcnQgPSAuOwo+ Pj4+ICsJLmJhcmVib3hfbWFnaWN2YXIgOiB7IEJBUkVCT1hfTUFHSUNWQVJTIH0KPj4+PiArCV9f YmFyZWJveF9tYWdpY3Zhcl9lbmQgPSAuOwo+Pj4+ICsKPj4+PiArCV9fYmFyZWJveF9pbml0Y2Fs bHNfc3RhcnQgPSAuOwo+Pj4+ICsJLmJhcmVib3hfaW5pdGNhbGxzIDogeyBJTklUQ0FMTFMgfQo+ Pj4+ICsJX19iYXJlYm94X2luaXRjYWxsc19lbmQgPSAuOwo+Pj4+ICsKPj4+PiArCV9fYmFyZWJv eF9leGl0Y2FsbHNfc3RhcnQgPSAuOwo+Pj4+ICsJLmJhcmVib3hfZXhpdGNhbGxzIDogeyBFWElU Q0FMTFMgfQo+Pj4+ICsJX19iYXJlYm94X2V4aXRjYWxsc19lbmQgPSAuOwo+Pj4+ICsKPj4+PiAr CV9fdXN5bXRhYl9zdGFydCA9IC47Cj4+Pj4gKwlfX3VzeW10YWIgOiB7IEJBUkVCT1hfU1lNUyB9 Cj4+Pj4gKwlfX3VzeW10YWJfZW5kID0gLjsKPj4+PiArCj4+Pj4gKwkucmVsYS5keW4gOiB7ICoo LnJlbGEqKSB9Cj4+Pj4gKwo+Pj4+ICsJLm9mdGFibGVzIDogeyBCQVJFQk9YX0NMS19UQUJMRSgp IH0KPj4+PiArCj4+Pj4gKwkuZHRiIDogeyBCQVJFQk9YX0RUQigpIH0KPj4+PiArCj4+Pj4gKwlf ZWRhdGEgPSAuOwo+Pj4+ICsJLiA9IEFMSUdOKDgpOwo+Pj4+ICsJX19ic3Nfc3RhcnQgPSAuOwo+ Pj4+ICsJLmJzcyA6IHsgKiguYnNzKikgKiguc2JzcyopIH0KPj4+PiArCV9fYnNzX3N0b3AgPSAu Owo+Pj4+ICsJX2VuZCA9IC47Cj4+Pj4gK30KPj4+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9s aWIvZHRiLmMgYi9hcmNoL3Jpc2N2L2xpYi9kdGIuYwo+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi4wOWY1MTlkY2MKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4g KysrIGIvYXJjaC9yaXNjdi9saWIvZHRiLmMKPj4+PiBAQCAtMCwwICsxLDQxIEBACj4+Pj4gKy8q Cj4+Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBBbnRvbnkgUGF2bG92IDxhbnRvbnlucGF2bG92 QGdtYWlsLmNvbT4KPj4+PiArICoKPj4+PiArICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBv ZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKPj4+PiArICogcHJvamVjdC4KPj4+PiAr ICoKPj4+PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPj4+PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKPj4+PiArICogYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4+Pj4gKyAqCj4+Pj4gKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAo+Pj4+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgo+Pj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+Pj4gKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4+Pj4gKyAqCj4+Pj4gKyAqLwo+Pj4+ICsj aW5jbHVkZSA8Y29tbW9uLmg+Cj4+Pj4gKyNpbmNsdWRlIDxpbml0Lmg+Cj4+Pj4gKyNpbmNsdWRl IDxvZi5oPgo+Pj4+ICsKPj4+PiArZXh0ZXJuIGNoYXIgX19kdGJfc3RhcnRbXTsKPj4+PiArCj4+ Pj4gK3N0YXRpYyBpbnQgb2ZfcmlzY3ZfaW5pdCh2b2lkKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKnJvb3Q7Cj4+Pj4gKwo+Pj4+ICsJcm9vdCA9IG9mX2dldF9yb290X25vZGUo KTsKPj4+PiArCWlmIChyb290KQo+Pj4+ICsJCXJldHVybiAwOwo+Pj4+ICsKPj4+PiArCXJvb3Qg PSBvZl91bmZsYXR0ZW5fZHRiKF9fZHRiX3N0YXJ0KTsKPj4+PiArCWlmICghSVNfRVJSKHJvb3Qp KSB7Cj4+Pj4gKwkJcHJfZGVidWcoInVzaW5nIGludGVybmFsIERUQlxuIik7Cj4+Pj4gKwkJb2Zf c2V0X3Jvb3Rfbm9kZShyb290KTsKPj4+PiArCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfT0ZERVZJ Q0UpKQo+Pj4+ICsJCQlvZl9wcm9iZSgpOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCXJldHVybiAw Owo+Pj4+ICt9Cj4+Pj4gK2NvcmVfaW5pdGNhbGwob2ZfcmlzY3ZfaW5pdCk7Cj4+Pj4gZGlmZiAt LWdpdCBhL2FyY2gvcmlzY3YvbGliL2xpYmdjYy5oIGIvYXJjaC9yaXNjdi9saWIvbGliZ2NjLmgK Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMC4uNTkzZTU5ODAy Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL2FyY2gvcmlzY3YvbGliL2xpYmdjYy5oCj4+ Pj4gQEAgLTAsMCArMSwyOSBAQAo+Pj4+ICsjaWZuZGVmIF9fQVNNX0xJQkdDQ19ICj4+Pj4gKyNk ZWZpbmUgX19BU01fTElCR0NDX0gKPj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVy Lmg+Cj4+Pj4gKwo+Pj4+ICt0eXBlZGVmIGludCB3b3JkX3R5cGUgX19hdHRyaWJ1dGVfXyAoKG1v ZGUgKF9fd29yZF9fKSkpOwo+Pj4+ICsjaWZkZWYgX19CSUdfRU5ESUFOCj4+Pj4gK3N0cnVjdCBE V3N0cnVjdCB7Cj4+Pj4gKwlpbnQgaGlnaCwgbG93Owo+Pj4+ICt9Owo+Pj4+ICsjZWxpZiBkZWZp bmVkKF9fTElUVExFX0VORElBTikKPj4+PiArc3RydWN0IERXc3RydWN0IHsKPj4+PiArCWludCBs b3csIGhpZ2g7Cj4+Pj4gK307Cj4+Pj4gKyNlbHNlCj4+Pj4gKyNlcnJvciBJIGZlZWwgc2ljay4K Pj4+PiArI2VuZGlmCj4+Pj4gKwo+Pj4+ICt0eXBlZGVmIHVuaW9uIHsKPj4+PiArCXN0cnVjdCBE V3N0cnVjdCBzOwo+Pj4+ICsJbG9uZyBsb25nIGxsOwo+Pj4+ICt9IERXdW5pb247Cj4+Pj4gKwo+ Pj4+ICtsb25nIGxvbmcgX19sc2hyZGkzKGxvbmcgbG9uZyB1LCB3b3JkX3R5cGUgYik7Cj4+Pj4g K2xvbmcgbG9uZyBfX2FzaGxkaTMobG9uZyBsb25nIHUsIHdvcmRfdHlwZSBiKTsKPj4+PiArbG9u ZyBsb25nIF9fYXNocmRpMyhsb25nIGxvbmcgdSwgd29yZF90eXBlIGIpOwo+Pj4+ICsKPj4+PiAr I2VuZGlmIC8qIF9fQVNNX0xJQkdDQ19IICovCj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yv bGliL2xzaHJkaTMuYyBiL2FyY2gvcmlzY3YvbGliL2xzaHJkaTMuYwo+Pj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwLi43NGE0ODQ2ZTkKPj4+PiAtLS0gL2Rldi9u dWxsCj4+Pj4gKysrIGIvYXJjaC9yaXNjdi9saWIvbHNocmRpMy5jCj4+Pj4gQEAgLTAsMCArMSwy OCBAQAo+Pj4+ICsjaW5jbHVkZSA8bW9kdWxlLmg+Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAibGli Z2NjLmgiCj4+Pj4gKwo+Pj4+ICtsb25nIGxvbmcgX19sc2hyZGkzKGxvbmcgbG9uZyB1LCB3b3Jk X3R5cGUgYikKPj4+PiArewo+Pj4+ICsJRFd1bmlvbiB1dSwgdzsKPj4+PiArCXdvcmRfdHlwZSBi bTsKPj4+PiArCj4+Pj4gKwlpZiAoYiA9PSAwKQo+Pj4+ICsJCXJldHVybiB1Owo+Pj4+ICsKPj4+ PiArCXV1LmxsID0gdTsKPj4+PiArCWJtID0gMzIgLSBiOwo+Pj4+ICsKPj4+PiArCWlmIChibSA8 PSAwKSB7Cj4+Pj4gKwkJdy5zLmhpZ2ggPSAwOwo+Pj4+ICsJCXcucy5sb3cgPSAodW5zaWduZWQg aW50KSB1dS5zLmhpZ2ggPj4gLWJtOwo+Pj4+ICsJfSBlbHNlIHsKPj4+PiArCQljb25zdCB1bnNp Z25lZCBpbnQgY2FycmllcyA9ICh1bnNpZ25lZCBpbnQpIHV1LnMuaGlnaCA8PCBibTsKPj4+PiAr Cj4+Pj4gKwkJdy5zLmhpZ2ggPSAodW5zaWduZWQgaW50KSB1dS5zLmhpZ2ggPj4gYjsKPj4+PiAr CQl3LnMubG93ID0gKCh1bnNpZ25lZCBpbnQpIHV1LnMubG93ID4+IGIpIHwgY2FycmllczsKPj4+ PiArCX0KPj4+PiArCj4+Pj4gKwlyZXR1cm4gdy5sbDsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lN Qk9MKF9fbHNocmRpMyk7Cj4+Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbGliL3Jpc2N2X3Rp bWVyLmMgYi9hcmNoL3Jpc2N2L2xpYi9yaXNjdl90aW1lci5jCj4+Pj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPj4+PiBpbmRleCAwMDAwMDAwMDAuLjQ2MTgxZjg3Nwo+Pj4+IC0tLSAvZGV2L251bGwK Pj4+PiArKysgYi9hcmNoL3Jpc2N2L2xpYi9yaXNjdl90aW1lci5jCj4+Pj4gQEAgLTAsMCArMSw2 OCBAQAo+Pj4+ICsvKgo+Pj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW50b255IFBhdmxvdiA8 YW50b255bnBhdmxvdkBnbWFpbC5jb20+Cj4+Pj4gKyAqCj4+Pj4gKyAqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIGJhcmVib3guCj4+Pj4gKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVv cGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzIHByb2plY3QuCj4+Pj4gKyAqCj4+Pj4gKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Cj4+Pj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCj4+Pj4gKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4+PiArICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKPj4+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQo+Pj4+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgo+Pj4+ICsgKgo+Pj4+ICsgKi8KPj4+PiArCj4+Pj4gKy8qKgo+Pj4+ ICsgKiBAZmlsZQo+Pj4+ICsgKiBAYnJpZWYgQ2xvY2tzb3VyY2UgYmFzZWQgb24gUklTQ1YgY3lj bGUgQ1NSIHRpbWVyCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPGluaXQuaD4KPj4+ PiArI2luY2x1ZGUgPG9mLmg+Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPj4+PiArI2lu Y2x1ZGUgPGNsb2NrLmg+Cj4+Pj4gKyNpbmNsdWRlIDxpby5oPgo+Pj4+ICsKPj4+PiArc3RhdGlj IHVpbnQ2NF90IHJkY3ljbGVfcmVhZCh2b2lkKQo+Pj4+ICt7Cj4+Pj4gKwlyZWdpc3RlciB1bnNp Z25lZCBsb25nIF9fdjsKPj4+PiArCj4+Pj4gKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJkY3lj bGUgJTAiIDogIj1yIiAoX192KSk7Cj4+Pj4gKwo+PiBNYXliZSB5b3Ugc2hvdWxkIGFsc28gYWRk IHN1cHBvcnQgZm9yIDMyLWJpdCBjb3Jlcy4KPiBUaGF0IGRvIHlvdSBtZWFuPwo+Cj4gcmRjeWNs ZSBwc2V1ZG8gb3Agc2hvdWxkIHJldHVybiAzMiBsb3cgYml0cyBvZiBjeWNsZSBjb3VudGVyIG9u IDMyLWJpdCBjb3JlLgo+Cj4KPj4+PiArCXJldHVybiBfX3Y7Cj4+Pj4gK30KPj4+PiArCj4+Pj4g K3N0YXRpYyBzdHJ1Y3QgY2xvY2tzb3VyY2UgcmRjeWNsZV9jcyA9IHsKPj4+PiArCS5yZWFkCT0g cmRjeWNsZV9yZWFkLAo+Pj4+ICsJLm1hc2sJPSBDTE9DS1NPVVJDRV9NQVNLKDMyKSwKPj4+PiAr fTsKPj4+PiArCkFhaCBJIHdhcyBhIGxpdHRsZSBiaXQgY29uZnVzZWQgYnkgdGhlIHJldHVybiB2 YWx1ZSB0eXBlLiBZb3UgY291bGQgCmV4cGFuZCB0aGUgbWFzayB0byA2NCBhbmQgd3JpdGUgc29t ZXRoaW5nIGxpa2UgdGhhdDoKCgpyZWdpc3RlciB1bnNpZ25lZCBsb25nIF9fdjsKcmVnaXN0ZXIg dW5zaWduZWQgbG9uZyBfX3Q7CnVpbnQ2NF90IHRpbWU7CgojaWZkZWYgUklTQ1ZfNjRCSVQKIMKg wqDCoCBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJkY3ljbGUgJTAiIDogIj1yIiAoX192KSk7CiDC oMKgwqAgcmV0dXJuIF9fdjsKI2Vsc2UKIMKgwqAgZG8gewogwqDCoMKgwqDCoMKgwqAgX19hc21f XyBfX3ZvbGF0aWxlX18gKCJyZGN5Y2xlICUwIiA6ICI9ciIgKF9fdikpOwogwqDCoMKgIH0gd2hp bGUgKF9fdiA9PSAwKTsgLy9tYXliZSB3aXRoIGFuIGFkZGl0aW9uYWwgY291bnRlciBhcyB0aW1l b3V0CiDCoMKgwqAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZGN5Y2xlaCAlMCIgOiAiPXIiIChf X3QpKTsKIMKgwqDCoCB0aW1lID0gKF9fdCA8PCAzMikgJiBfX3Y7CiDCoMKgwqAgcmV0dXJuIHRp bWU7CiNlbmRpZgoKCkkgZG9uJ3Qga25vdyBpZiB0aGlzIHdvcmtzLCBidXQgd2Ugc2hvdWxkIGFs d2F5cyBzdXBwb3J0IGJvdGggcmVnaXN0ZXIgCndpZHRocy4KQlRXOiBTb21ldGltZXMgeW91ciBs aWNlbnNlIGhlYWRlciBhcmUgZnJvbSAyMDE2LgoKLS0gCk1pdCBmcmV1bmRsaWNoZW4gR3LDvMOf ZW4sCldpdGggYmVzdCByZWdhcmRzLAogICBEYW5pZWwgU2NodWx0egoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmJhcmVib3ggbWFpbGluZyBsaXN0CmJh cmVib3hAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2JhcmVib3gK