From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-40130.protonmail.ch (mail-40130.protonmail.ch [185.70.40.130]) by sourceware.org (Postfix) with ESMTPS id 45CD23861C30 for ; Wed, 8 Sep 2021 14:20:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 45CD23861C30 Date: Wed, 08 Sep 2021 14:20:21 +0000 To: Phil Eaton From: spellcard199 Cc: Per Bothner , kawa mailing list Reply-To: spellcard199 Subject: Re: Receiver class does not define or inherit an implementation of the resolved method Message-ID: <2a6pSwL15NYCrCoQuR3UdmM39l7RE8lmfH4ZENWgYW4Ptg0K348wkFm-uJr5_HsQ6Q1K-xCmvIjCMBdzMXnw-aIjnIQ-jCUQ78JW2U_wQaw=@protonmail.com> In-Reply-To: References: <5hzGa_Y5K9Av5y0olKFg4Qb_A8LuHAwRZiCNDB2oN17IDMHkgCxAhIGYUV0ttSsfsL82Krtjbc2I1AteZ5wQWGRBTMYf-dV1PHINjmezWa4=@protonmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, FREEMAIL_REPLYTO_END_DIGIT, HTML_MESSAGE, KAM_LOTSOFHASH, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: kawa@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Kawa mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Sep 2021 14:20:29 -0000 Q29ycmVjdGluZyBza2lwcGVkIGxpbmUgaW4gbXkgcHJldmlvdXMgZS1tYWlsOiB0aGUgcGF0Y2gg cmVwbGFjaW5nIGxpbmUgNDQgaW4gUm91dGVBbmFseXplci5yZXR1cm5UeXBlIGlzOgoKQ2xhc3NM b2FkZXIgY2wgPSBtZXRob2QuZ2V0RGVjbGFyaW5nQ2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpOwpD bGFzc1NvdXJjZSBjbGFzc1NvdXJjZUZpeCA9IG5ldyBDbGFzc1NvdXJjZShjbCk7CkNsYXNzUmVh ZGVyIHJlYWRlciA9IG5ldyBDbGFzc1JlYWRlcihjbGFzc1NvdXJjZUZpeC5ieXRlQ29kZShtZXRo b2QuZ2V0RGVjbGFyaW5nQ2xhc3MoKSkpOwoK4oCQ4oCQ4oCQ4oCQ4oCQ4oCQ4oCQIE9yaWdpbmFs IE1lc3NhZ2Ug4oCQ4oCQ4oCQ4oCQ4oCQ4oCQ4oCQCk9uIFdlZG5lc2RheSwgU2VwdGVtYmVyIDh0 aCwgMjAyMSBhdCA0OjE0IFBNLCBzcGVsbGNhcmQxOTkgPHNwZWxsY2FyZDE5OUBwcm90b25tYWls LmNvbT4gd3JvdGU6Cgo+PiBMb29raW5nIGF0IEphdmEgc291cmNlIGZpbGVzIGZlZWxzIGxpa2Ug YSB3ZWlyZCB0aGluZyB0byBkby4KPgo+PiBUaGUgcHJvYmxlbSBpcyB0aGF0IEpvb2J5IGRvZXMg X0phdmFfIHNvdXJjZSBjb2RlIGFuYWx5c2lzIChub3QKPj4gcmVmbGVjdGlvbikuIEl0IGxpdGVy YWxseSBwYXJzZXMgeW91ciBoYW5kbGVyIHNvdXJjZSBjb2RlIHRvIGZpZ3VyZQo+PiBvdXQgd2hh dCB0aGUgcmV0dXJuIHR5cGUgYWN0dWFsbHkgaXMgKHNpbmNlIHRoZSBPYmplY3QgcmV0dXJuIHR5 cGUKPj4gbWFza3MgaXQpLiBJdCBvbmx5IGRvZXMgdGhpcyB0aG91Z2ggaWYgdGhlcmUncyBub3Qg YSBtZXRob2QgaXQgY2FuCj4+IGludHJvc3BlY3Qgd2l0aG91dCBzb3VyY2UgY29kZSBhbmFseXNp cy4KPgo+IFRvZGF5IEkgdHJpZWQgdG8gcmVhZCB0aGUgSm9vYmx5IGNvZGUgYmFja3dhcmQgZnJv bSB0aGUgcG9pbnQgd2hlcmUKPiB0aGUgZXJyb3IgaGFwcGVucyBhbmQgaW4gdGhlIGNvZGUgcGF0 aCB0aGF0IGFmZmVjdHMgdXMgaXQgcmVhZHMgb3VyCj4gImFwcGx5IiBtZXRob2QncyBieXRlY29k ZSB1c2luZyB0aGUgYXNtIGxpYnJhcnkuCj4KPiBJIHVuZGVyc3RhbmQgd2hhdCB5b3UgYXJlIHRy eWluZyB0byBkbyBpcyB0byBhdm9pZCB0aGlzIGNvZGUgcGF0aAo+IGFsdG9nZXRoZXIsIGJ1dCBJ IHRoaW5rIHRoZXJlIGlzIGEgbGVzcyBiYWQgYXBwcm9hY2ggdG8gdGhlIHByb2JsZW0KPiB0aGFu IGhhdmluZyAyIG1ldGhvZHMgd2l0aCB0aGUgc2FtZSBuYW1lIGFuZCBwYXJhbWV0ZXIgdHlwZXMu Cj4KPiBUaGUgcmVhc29uIHdoeSBhc20gZmFpbHMgdG8gcmVhZCB0aGUgImFwcGx5IiBtZXRob2Qg ZGVmaW5lZCBmcm9tIEthd2EKPiBpcyBpdCBzZWFyY2hlcyBvdXIgb2JqZWN0J3MgY2xhc3MsIHdo aWNoIGltcGxlbWVudHMgUm91dGUuSGFuZGxlciwgaW4KPiB0aGUgd3JvbmcgQ2xhc3NMb2FkZXIu Cj4KPiBMZXQncyBmb2xsb3cgd2hlcmUgdGhlIENsYXNzTG9hZGVyIGFzbSByZWNlaXZlcyBjb21l cyBmcm9tLgo+Cj4gdGhlIEpvb2J5IG9iamVjdCBnZXRzIGl0cyBvd24gY2xhc3NMb2FkZXIKPiBo dHRwczovL2dpdGh1Yi5jb20vam9vYnktcHJvamVjdC9qb29ieS9ibG9iL2Y0N2VkYTQ1MDBiYzRi NzZiMjNkMjRkNGQ3N2FhMmFiM2NjMTllOTUvam9vYnkvc3JjL21haW4vamF2YS9pby9qb29ieS9K b29ieS5qYXZhI0wxMjkKPgo+IHRoZSBKb29ieSBvYmplY3QgcGFzc2VzIGNsYXNzTG9hZGVyIHRv IGEgUm91dGVySW1wbCBvYmplY3QKPiBodHRwczovL2dpdGh1Yi5jb20vam9vYnktcHJvamVjdC9q b29ieS9ibG9iL2Y0N2VkYTQ1MDBiYzRiNzZiMjNkMjRkNGQ3N2FhMmFiM2NjMTllOTUvam9vYnkv c3JjL21haW4vamF2YS9pby9qb29ieS9Kb29ieS5qYXZhI0wxMzEKPgo+IHRoZSBSb3V0ZXJJbXBs IG9iamVjdCBwYXNzZXMgY2xhc3NMb2FkZXIgdG8gYSBDbGFzc1NvdXJjZSBvYmplY3QsCj4gd2hp Y2ggaXMgYmFzaWNhbGx5IGEgd3JhcHBlciBmb3Igc3RvcmluZyB0aGUgQ2xhc3NMb2FkZXIgYW5k IGNhbGxpbmcKPiBjbGFzc0xvYWRlci5nZXRSZXNvdXJjZUFzU3RyZWFtKC4uLikgd2hlbiBuZWVk ZWQuCj4gaHR0cHM6Ly9naXRodWIuY29tL2pvb2J5LXByb2plY3Qvam9vYnkvYmxvYi9mNDdlZGE0 NTAwYmM0Yjc2YjIzZDI0ZDRkNzdhYTJhYjNjYzE5ZTk1L2pvb2J5L3NyYy9tYWluL2phdmEvaW8v am9vYnkvaW50ZXJuYWwvUm91dGVySW1wbC5qYXZhI0w1MzgKPgo+IHRoZSBDbGFzc1NvdXJjZSBv YmplY3QgaXMgcGFzc2VkIHRvIGEgUm91dGVBbmFseXplciBvYmplY3QKPiBodHRwczovL2dpdGh1 Yi5jb20vam9vYnktcHJvamVjdC9qb29ieS9ibG9iL2Y0N2VkYTQ1MDBiYzRiNzZiMjNkMjRkNGQ3 N2FhMmFiM2NjMTllOTUvam9vYnkvc3JjL21haW4vamF2YS9pby9qb29ieS9pbnRlcm5hbC9Sb3V0 ZXJJbXBsLmphdmEjTDUzOQo+Cj4gdGhlIFJvdXRlQW5hbHl6ZXIgb2JqZWN0Ogo+IDEuIEdldHMg dGhlIGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCBjb3JyZXNwb25kaW5nIHRvIG91cgo+IFJvdXRl SGFuZGxlcidzICJhcHBseSIgbWV0aG9kLgo+IGh0dHBzOi8vZ2l0aHViLmNvbS9qb29ieS1wcm9q ZWN0L2pvb2J5L2Jsb2IvZjQ3ZWRhNDUwMGJjNGI3NmIyM2QyNGQ0ZDc3YWEyYWIzY2MxOWU5NS9q b29ieS9zcmMvbWFpbi9qYXZhL2lvL2pvb2J5L2ludGVybmFsL1JvdXRlQW5hbHl6ZXIuamF2YSNM MzYKPiAyLiBHZXRzICJhcHBseSIncyBjbGFzcyBjYWxsaW5nIG1ldGhvZC5nZXREZWNsYXJpbmdD bGFzcygpIG9uIHRoZQo+IE1ldGhvZCBpdCBqdXN0IGdvdAo+IDMuIFNlYXJjaGVzIGZvciB0aGUg Y2xhc3MgaXQganVzdCBnb3QgaW4gY2xhc3NMb2FkZXI6IGFuZCBoZXJlIHRoZQo+IGVycm9yIHJh aXNlcy4gVGhpcyBjbGFzc0xvYWRlciBjb21lcyBmcm9tCj4gSm9vYmx5LmdldENsYXNzKCkuZ2V0 Q2xhc3Nsb2FkZXIoKSwgYnV0IG91ciBjbGFzcyBpcyBpbiBLYXdhJ3MKPiBjbGFzc2xvYWRlci4K PiBodHRwczovL2dpdGh1Yi5jb20vam9vYnktcHJvamVjdC9qb29ieS9ibG9iL2Y0N2VkYTQ1MDBi YzRiNzZiMjNkMjRkNGQ3N2FhMmFiM2NjMTllOTUvam9vYnkvc3JjL21haW4vamF2YS9pby9qb29i eS9pbnRlcm5hbC9Sb3V0ZUFuYWx5emVyLmphdmEjTDQ0Cj4KPiBNYXliZSBSb3V0ZUFuYWx5emVy LnJldHVyblR5cGUgc2hvdWxkIHVzZQo+IG1ldGhvZC5nZXREZWNsYXJpbmdDbGFzcygpLmdldENs YXNzTG9hZGVyKCkgYXMgInNvdXJjZSIgKHdoZXJlCj4gInNvdXJjZSIgaXMgYSBDbGFzc0xvYWRl cikgaW5zdGVhZCBvZiB0aGlzLmNsYXNzTG9hZGVyPyBUbyBjb25maXJtCj4gdGhpcyBJIHRyaWVk IHRvLi4uOgo+IDEuIGNsb25lIHRoZSBKb29ieSByZXBvCj4gMi4gUmVwbGFjZSBsaW5lIDQ0IGlu IFJvdXRlQW5hbHl6ZXI6Cj4gLSBmcm9tOgo+Cj4gQ2xhc3NSZWFkZXIgcmVhZGVyID0gbmV3IENs YXNzUmVhZGVyKHNvdXJjZS5ieXRlQ29kZShtZXRob2QuZ2V0RGVjbGFyaW5nQ2xhc3MoKSkpOwo+ Cj4gLSB0bzoKPgo+IENsYXNzU291cmNlIGNsYXNzU291cmNlRml4ID0gbmV3IENsYXNzU291cmNl KGNsKTsKPiBDbGFzc1JlYWRlciByZWFkZXIgPSBuZXcgQ2xhc3NSZWFkZXIoY2xhc3NTb3VyY2VG aXguYnl0ZUNvZGUobWV0aG9kLmdldERlY2xhcmluZ0NsYXNzKCkpKTsKPgo+IDMuIEFkZCBLYXdh IGluIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRlc3RzIGluIHBvbS54bWwKPiA0LiBBZGQgYSBuZXcg dGVzdCB0aGF0IHN0YXJ0cyBhIHJlbW90ZSBLYXdhIHJlcGwKPiA1LiBSdW4gbmV3IHRlc3QgYW5k IGNvbm5lY3QgdG8gdGhlIHJlbW90ZSBLYXdhIHJlcGwKPiA1LiBFdmFsdWF0ZSBhIG1pbmltYWwg am9vYnkgZXhhbXBsZQo+IC4uLiBhbmQgaXQgd29ya2VkLCBzbyB0aGlzIGEgcG9zc2libGUgc3Rh cnRpbmcgcG9pbnQgZm9yIGEKPiBzb2x1dGlvbi4gQnV0IG1heWJlIHRoYXQgY291bGQgY3JlYXRl IG5ldyBlcnJvcnMgaW4gc29tZSBvdGhlcgo+IHNjZW5hcmlvcz8gQW5kIEJUVywgaW4gdGhlIG5l eHQgcmVsZWFzZSBvZiBKb29ieSB0aGV5IGFyZSByZW1vdmluZwo+IGFzbTogaHR0cHM6Ly9naXRo dWIuY29tL2pvb2J5LXByb2plY3Qvam9vYnkvaXNzdWVzLzE3MTIKPgo+IEhlcmUncyBhIGRpcnR5 IGhhY2sgZm9yIGEgd29ya2luZyBtaW5pbWFsIGV4YW1wbGUgaW4gS2F3YSB0aGF0IGRvZXNuJ3QK PiByZXF1aXJlIHBhdGNoaW5nIEpvb2JseSAoeW91IGNhbiBjb3B5IGFuZCBwYXN0ZSBpdCBkaXJl Y3RseSBpbnRvIHRoZQo+IGthd2EvbWFpbi5zY20gaW4geW91ciByZXBvLCByZXBsYWNpbmcgaXRz IGN1cnJlbnQgY29udGVudHMpOgo+Cj4gIytCRUdJTl9TUkMgc2NoZW1lCj4KPiAoZGVmaW5lIHJo IDo6PGlvLmpvb2J5LlJvdXRlJEhhbmRsZXI+Cj4gKG9iamVjdCAoaW8uam9vYnkuUm91dGUkSGFu ZGxlcikKPiA7OyAoKGFwcGx5KSA6OjxqYXZhLmxhbmcuU3RyaW5nPiAoImVtcHkiOnRvU3RyaW5n KSkKPiAoKGFwcGx5IChjdHggOjo8aW8uam9vYnkuQ29udGV4dD4pKSA6OjxqYXZhLmxhbmcuT2Jq ZWN0Pgo+IHRocm93czogKGphdmEubGFuZy5FeGNlcHRpb24pCj4gKGphdmEubGFuZy5TdHJpbmcg IkhlbGxvISIpKSkpCj4KPiAoZGVmaW5lIGFwcCA6Ojxpby5qb29ieS5Kb29ieT4gKGlvLmpvb2J5 Lkpvb2J5KSkKPiA7OyBEaXJ0eSBoYWNrIHRvIHJlcGxhY2UgYXBwLnJvdXRlciB3aXRoIGFub3Ro ZXIgb25lIHRoYXQgdXNlcyBLYXdhJ3MKPiA7OyBjbGFzc2xvYWRlciBpbnN0ZWFkIG9mIGFwcC5n ZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkuCj4gKGRlZmluZSByb3V0ZXJGaWVsZCA6OjxqYXZh LmxhbmcucmVmbGVjdC5GaWVsZD4KPiAoaW52b2tlIChhcHA6Z2V0Q2xhc3MpICdnZXREZWNsYXJl ZEZpZWxkICJyb3V0ZXIiKSkKPiAocm91dGVyRmllbGQ6c2V0QWNjZXNzaWJsZSAjdCkKPiAocm91 dGVyRmllbGQ6c2V0IGFwcCAoaW8uam9vYnkuaW50ZXJuYWwuUm91dGVySW1wbAo+IChpbnZva2Ug KHJoOmdldENsYXNzKSAnZ2V0Q2xhc3NMb2FkZXIpKSkKPiAocm91dGVyRmllbGQ6c2V0QWNjZXNz aWJsZSAjZikKPgo+IDs7IGFwcC5yb3V0ZSBhZGRzIGEgUm91dGUkSGFuZGxlciB0byBhcHAucm91 dGVyLnJvdXRlcwo+IChhcHA6cm91dGUgIkdFVCIgIi9ncmVldGluZyIgcmgpCj4KPiA7OyBTdGFy dCBzZXJ2ZXIKPiAoZGVmaW5lIHNlcnZlciA6Ojxpby5qb29ieS5uZXR0eS5OZXR0eT4gKGlvLmpv b2J5Lm5ldHR5Lk5ldHR5KSkKPiAoc2VydmVyOnNldE9wdGlvbnMgKChpby5qb29ieS5TZXJ2ZXJP cHRpb25zKTpzZXRQb3J0IDgwODApKQo+IChzZXJ2ZXI6c3RhcnQgYXBwKQo+IChzZXJ2ZXI6am9p bikKPgo+ICMrRU5EX1NSQwo+Cj4g4oCQ4oCQ4oCQ4oCQ4oCQ4oCQ4oCQIE9yaWdpbmFsIE1lc3Nh Z2Ug4oCQ4oCQ4oCQ4oCQ4oCQ4oCQ4oCQCj4gT24gVHVlc2RheSwgU2VwdGVtYmVyIDd0aCwgMjAy MSBhdCA5OjM1IFBNLCBQaGlsIEVhdG9uIDxwaGlsQGVhdG9ucGhpbC5jb20+IHdyb3RlOgo+Cj4+ PiBTaW5jZSBpdCBpcyBhIEphdmEgbGlicmFyeSBhbmQsCj4+IGFzIEkgc3VwcG9zZWQsIEphdmEg ZG9lcyBub3QgYWxsb3cgdG8gaGF2ZSAyIG1ldGhvZHMgd2l0aCB0aGUgc2FtZQo+PiBuYW1lIGFu ZCBwYXJhbWV0ZXIgdHlwZXMgWzFdWzJdLCBpZiBJIHdlcmUgaW4geW91IEkgd291bGQgZmlyc3Qg dHJ5IHRvCj4+IHRyYW5zbGF0ZSB5b3VyIGV4YW1wbGUgdG8gcGxhaW4gSmF2YSB3aXRob3V0IEpv b2J5J3MgYW5ub3RhdGlvbnMgKEkKPj4gZG9uJ3Qga25vdyBob3cgdG8gZG8gaXQpLiBNYXliZSBh c2tpbmcgdGhlIHBlb3BsZSB3b3JraW5nIG9uIEpvb2J5IG1heQo+PiBiZSBhbiBvcHRpb24/Cj4+ Cj4+IFRoZSBwcm9ibGVtIGlzIHRoYXQgSm9vYnkgZG9lcyBfSmF2YV8gc291cmNlIGNvZGUgYW5h bHlzaXMgKG5vdCByZWZsZWN0aW9uKS4gSXQgbGl0ZXJhbGx5IHBhcnNlcyB5b3VyIGhhbmRsZXIg c291cmNlIGNvZGUgdG8gZmlndXJlIG91dCB3aGF0IHRoZSByZXR1cm4gdHlwZSBhY3R1YWxseSBp cyAoc2luY2UgdGhlIE9iamVjdCByZXR1cm4gdHlwZSBtYXNrcyBpdCkuIEl0IG9ubHkgZG9lcyB0 aGlzIHRob3VnaCBpZiB0aGVyZSdzIG5vdCBhIG1ldGhvZCBpdCBjYW4gaW50cm9zcGVjdCB3aXRo b3V0IHNvdXJjZSBjb2RlIGFuYWx5c2lzLgo+Pgo+PiBJIHNwZW50IGEgd2hpbGUgZGlnZ2luZyBh cm91bmQgSm9vYnkncyBBUElzIGFuZCB0aGlzIHdhcyB0aGUgb25seSB3YXkgSSBjb3VsZCBzaG9l aG9ybiBub24tSmF2YSBjb2RlIGludG8gaXQuCj4+Cj4+IFNpbmNlIEkgcHV0IGRlY2VudCBhbW91 bnQgb2YgZWZmb3J0IGludG8gdGhlIEFCQ0wgY29kZSAobmVlZGVkIHRvIHN1Ym1pdCBhIHBhdGNo IHRvIHRoZSBBQkNMIHRlYW0pIEkgYW0gcmVsdWN0YW50IHRvIGdpdmUgdXAgbm93IGluIEthd2Eg d2l0aG91dCBmaW5kaW5nIGEgd2F5IHRvIGhhY2sgdGhpcyB1cC4KPj4KPj4gRnVydGhlcm1vcmUg dGhlIHByb2JsZW0gaXMgdGhhdCBhbG1vc3QgZXZlcnkgaGlwIEphdmEgQVBJIGlzIGRlc2lnbmVk IGxpa2UgdGhpcy4gVGhleSBhcmUgdmVyeSB1bmZyaWVuZGx5IHRvIGZ1bmN0aW9uLW9yaWVudGVk IHBhcmFkaWdtcy4KPj4KPj4gTm93IHRoYXQgSSB0aGluayBvZiBpdCB0aG91Z2ggbWF5YmUgdXNp bmcgS2F3YSdzIGNsYXNzIGFubm90YXRpb24gc3VwcG9ydCB3aWxsIGhlbHAgbWUgZmlnaHQgbGVz cyB3aXRoIEpvb2J5IHNpbmNlIGl0IGRvZXMgd2FudCB5b3UgdG8gYW5ub3RhdGUgY2xhc3NlcyAo d2hpY2ggSSB3YXMgaWdub3JpbmcgYmVjYXVzZSBJIHdhcyB0cnlpbmcgdG8gdXNlIGNsYXNzZXMg YXMgbGl0dGxlIGFzIHBvc3NpYmxlKS4KPj4KPj4gT24gVHVlLCBTZXAgNywgMjAyMSBhdCAxOjU4 IFBNIHNwZWxsY2FyZDE5OSA8c3BlbGxjYXJkMTk5QHByb3Rvbm1haWwuY29tPiB3cm90ZToKPj4K Pj4+IEkgY2xvbmVkIHlvdXIgcmVwbywgY2QnZWQgaW50byBhYmNsLCBydW4gbXZuIGluc3RhbGwg YW5kIHRoZW4gbWFrZS4gSQo+Pj4gc3RpbGwgaGFkIHRvIGNvcHktcGFzdGUgeW91ciBtYWluLmxp c3AgaW4gdGhlIHJlcGwgYnV0IGl0Cj4+PiB3b3JrZWQuIEFmdGVyIGNvbW1lbnRpbmcgb3V0IGVh Y2ggb2YgdGhlIDIgYXBwbHkgbWV0aG9kcyBJIGNvdWxkIHNlZQo+Pj4gd2hhdCBwcm9ibGVtIHlv dSBoYXZlLgo+Pj4KPj4+IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIGJhc2ljYWxseSB3aGF0 IHlvdSBhcmUgdHJ5aW5nIHRvIGRvIGlzCj4+PiByZXBsaWNhdGUgYXQgYSBsYW5ndWFnZSBsZXZl bCB3aGF0IEpvb2J5IGFscmVhZHkgZG9lcyBpbiBwdXJlCj4+PiBKYXZhLgo+Pj4KPj4+IE15IG9w aW5pb24gYXMgYSBub3QtZXhwZXJpZW5jZWQgcHJvZ3JhbW1lciB0aGF0IGhhcyBuZXZlciB1c2Vk IEpvb2J5Cj4+PiBpcyB0aGF0IHRoZXJlIG1heSBiZSBzb21lIG90aGVyIHdheSB0byB1c2UgdGhl IEpvb2J5IGFwaS4gV2h5Cj4+PiByZS1zb2x2aW5nIHdpdGggYSBsYW5ndWFnZS1zcGVjaWZpYyBz b2x1dGlvbiBhIHByb2JsZW0gdGhhdCBzb21ld2hlcmUKPj4+IGluIEpvb2J5IGhhcyBhbHJlYWR5 IGJlZW4gaW1wbGVtZW50ZWQ/IFNpbmNlIGl0IGlzIGEgSmF2YSBsaWJyYXJ5IGFuZCwKPj4+IGFz IEkgc3VwcG9zZWQsIEphdmEgZG9lcyBub3QgYWxsb3cgdG8gaGF2ZSAyIG1ldGhvZHMgd2l0aCB0 aGUgc2FtZQo+Pj4gbmFtZSBhbmQgcGFyYW1ldGVyIHR5cGVzIFsxXVsyXSwgaWYgSSB3ZXJlIGlu IHlvdSBJIHdvdWxkIGZpcnN0IHRyeSB0bwo+Pj4gdHJhbnNsYXRlIHlvdXIgZXhhbXBsZSB0byBw bGFpbiBKYXZhIHdpdGhvdXQgSm9vYnkncyBhbm5vdGF0aW9ucyAoSQo+Pj4gZG9uJ3Qga25vdyBo b3cgdG8gZG8gaXQpLiBNYXliZSBhc2tpbmcgdGhlIHBlb3BsZSB3b3JraW5nIG9uIEpvb2J5IG1h eQo+Pj4gYmUgYW4gb3B0aW9uPwo+Pj4KPj4+PiBJIGd1ZXNzIHRoYXQncyBub3QgdGhlIHBsYWNl IHdoZXJlIHRoZSBtZXRob2QgbmFtZSBpcyBnZW5lcmF0ZWQgZm9yCj4+Pj4gYnl0ZWNvZGUgY29t cGlsYXRpb24uIElmIGFueW9uZSBjb3VsZCBwb2ludCBtZSBhdCB3aGVyZSB0aGF0IGhhcHBlbnMK Pj4+PiB0aGF0IHdvdWxkIGhlbHAuCj4+Pgo+Pj4gSnVzdCBvdXQgb2YgY3VyaW9zaXR5Li4uIEkn dmUgbm90IHRlc3RlZCBpdCwgYnV0IEkgdGhpbmsgaXQgaGFwcGVucyBpbgo+Pj4gZ251LmV4cHIu TGFtYmRhRXhwLmFkZE1ldGhvZEZvciwgYXJvdW5kIGxpbmUgMTE0NC4KPj4+Cj4+Pj4gVGhhbmtz IQo+Pj4KPj4+IG5wLCBidXQgSSB3YXNuJ3QgdmVyeSBoZWxwZnVsID0vLgo+Pj4KPj4+IFsxXSBo dHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNDM5NzgyL292ZXJsb2FkLXdpdGgt ZGlmZmVyZW50LXJldHVybi10eXBlLWluLWphdmEKPj4+IFsyXSBodHRwczovL3N0YWNrb3ZlcmZs b3cuY29tL3F1ZXN0aW9ucy81NTYxNDM2L2Nhbi10d28tamF2YS1tZXRob2RzLWhhdmUtc2FtZS1u YW1lLXdpdGgtZGlmZmVyZW50LXJldHVybi10eXBlcwo+Pj4KPj4+IOKAkOKAkOKAkOKAkOKAkOKA kOKAkCBPcmlnaW5hbCBNZXNzYWdlIOKAkOKAkOKAkOKAkOKAkOKAkOKAkAo+Pj4gT24gVHVlc2Rh eSwgU2VwdGVtYmVyIDd0aCwgMjAyMSBhdCAzOjAyIFBNLCBQaGlsIEVhdG9uIDxwaGlsQGVhdG9u cGhpbC5jb20+IHdyb3RlOgo+Pj4KPj4+PiBHb29kIHF1ZXN0aW9uISBJIGRvbid0IGtub3cgaG93 IHRvIGdldCB0aGUgQUJDTC1lbWl0dGVkIGJ5dGVjb2RlIG90aGVyd2lzZSBJIHdvdWxkIGhhdmUg anVzdCBwb3N0ZWQgdGhhdC4KPj4+Pgo+Pj4+IEJ1dCBJIGNhbiBkZXNjcmliZSB0byB5b3UgdGhl IGJlaGF2aW9yIHRoYXQgbWFrZXMgbWUgc2F5IGl0IGVtaXRzIHR3byBmdW5jdGlvbnMgd2l0aCB0 aGUgc2FtZSBuYW1lLgo+Pj4+Cj4+Pj4gSGVyZSBpcyBteSBBQkNMIGNvZGU6IGh0dHBzOi8vZ2l0 aHViLmNvbS9lYXRvbnBoaWwvanZtLWxpc3AtZXhhbXBsZXMvYmxvYi9tYWluL2FiY2wvbWFpbi5s aXNwI0wyMi4KPj4+Pgo+Pj4+IEluIHRoaXMgY29kZSBJIGRlZmluZSB0d28gbWV0aG9kcyBvZiB0 aGUgc2FtZSBuYW1lLiBUaGUgImZha2UiIG1ldGhvZCBjb21lcyBmaXJzdC4gVGhpcyBpcyBmb3Vu ZCB3aGVuIHRoZSBqb29ieSBsaWJyYXJ5IGRvZXMgcmVmbGVjdGlvbiEgQnV0IGl0IGlzIG5vdCB0 aGUgb25lIGNhbGxlZCBieSBKb29ieS4gVGhlIHNlY29uZCBtZXRob2QgdGhhdCByZXR1cm5zIGFu IE9iamVjdCAodGhlIG9uZSB0aGF0IGFjdHVhbGx5IGltcGxlbWVudHMgdGhlIGludGVyZmFjZSkg aXMgdGhlIG9uZSB0aGF0IGlzIGNhbGxlZC4KPj4+Pgo+Pj4+IFNlcGFyYXRlbHksIEkgd2FzIG1l c3NpbmcgYXJvdW5kIGluIEthd2EgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyAkWCBz dWZmaXggaXMgZ2VuZXJhdGVkIG9uIGR1cGxpY2F0ZSBtZXRob2RzLiBJIGRpZCBmaW5kIGZpeFBh cmFtTmFtZXMgaW4gZ251L2J5dGVjb2RlL1Njb3BlLmphdmE6MTEwLiBJdCBoYXMgYSBub3RlIHNh eWluZyB0aGF0ICRYIHN1ZmZpeCB3YXMgcmVxdWlyZWQgYmVjYXVzZSBvZiBfQW5kcm9pZF8vZGV4 LiBJIGNvbW1lbnRlZCB0aGlzIG1ldGhvZCBvdXQgYW5kIHJlY29tcGlsZWQgYW5kIHJhbiBteSBl eGFtcGxlIGJ1dCBpdCBzdGlsbCBnZW5lcmF0ZWQgdGhlICRYIHN1ZmZpeC4gU28gSSBndWVzcyB0 aGF0J3Mgbm90IHRoZSBwbGFjZSB3aGVyZSB0aGUgbWV0aG9kIG5hbWUgaXMgZ2VuZXJhdGVkIGZv ciBieXRlY29kZSBjb21waWxhdGlvbi4gSWYgYW55b25lIGNvdWxkIHBvaW50IG1lIGF0IHdoZXJl IHRoYXQgaGFwcGVucyB0aGF0IHdvdWxkIGhlbHAuCj4+Pj4KPj4+PiBUaGFua3MhCj4+Pj4KPj4+ PiBPbiBUdWUsIFNlcCA3LCAyMDIxIGF0IDY6NTkgQU0gc3BlbGxjYXJkMTk5IDxzcGVsbGNhcmQx OTlAcHJvdG9ubWFpbC5jb20+IHdyb3RlOgo+Pj4+Cj4+Pj4+IEhlbGxvLgo+Pj4+Pgo+Pj4+Pj4g Rm9yIHdoYXQgaXQncyB3b3J0aCB0aGlzIGtpbmQgb2YgcmVkZWZpbml0aW9uIG9mIHRoZSBzYW1l IG1ldGhvZAo+Pj4+PiB3b3JrZWQgZm9yIG1lIGluIEFCQ0wgbGlzcC4gU28gSSBrbm93IGl0J3Mg ZGVmaW5pdGVseSBwb3NzaWJsZSB0bwo+Pj4+PiBleHByZXNzIGluIEphdmEuCj4+Pj4+Cj4+Pj4+ IEkga25vdyBub3RoaW5nIGFib3V0IEFCQ0wgc28gSSB0cnVzdCB5b3Ugb24gdGhlIGZhY3QgQUJD TCBoYW5kbGVzCj4+Pj4+IHRoaXMgZGlmZmVyZW50bHkgZnJvbSBLYXdhLCBidXQgSSBkb24ndCB0 aGluayBpbiBKYXZhIHlvdSBkbyBpdC4KPj4+Pj4KPj4+Pj4gSWYgSSB0cnkgdG8gd3JpdGUgdGhl IGZvbGxvd2luZyBjbGFzcyBpbiBwbGFpbiBKYXZhLi4uCj4+Pj4+Cj4+Pj4+IHB1YmxpYyBjbGFz cyBNYWluIHsKPj4+Pj4gcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewo+ Pj4+PiBNYWluIG1haW4gPSBuZXcgTWFpbigpOwo+Pj4+PiBTeXN0ZW0ub3V0LnByaW50bG4obWFp bi5hcHBseSgieCIpKTsKPj4+Pj4gfQo+Pj4+PiBwdWJsaWMgamF2YS5sYW5nLkNoYXJTZXF1ZW5j ZSBhcHBseShTdHJpbmcgcykgewo+Pj4+PiByZXR1cm4gcy5jb25jYXQocyk7Cj4+Pj4+IH0KPj4+ Pj4gcHVibGljIGphdmEubGFuZy5PYmplY3QgYXBwbHkoU3RyaW5nIHMpIHsKPj4+Pj4gcmV0dXJu IHMuY29uY2F0KHMpLmNvbmNhdChzKTsKPj4+Pj4gfQo+Pj4+PiB9Cj4+Pj4+Cj4+Pj4+IC4uLiBp dCBnaXZlcyBhIGNvbXBpbGUgdGltZSBlcnJvcjoKPj4+Pj4KPj4+Pj4gYXBwbHkoU3RyaW5nKSBp cyBhbHJlYWR5IGRlZmluZWQgaW4gJ01haW4nCj4+Pj4+Cj4+Pj4+IEFuZCB0aGUgc2FtZSB0aGlu ZyBoYXBwZW5zIHdoZW4gdGhlIG1ldGhvZHMgYXJlIHN0YXRpYy4KPj4+Pj4KPj4+Pj4gSSBzdXBw b3NlIGluIHBsYWluIEphdmEgeW91IGNhbid0IGhhdmUgbW9yZSB0aGFuIG9uZSBtZXRob2Qgd2l0 aCBib3RoCj4+Pj4+IHRoZSBzYW1lOgo+Pj4+PiAtIG5hbWUKPj4+Pj4gLSBpbnB1dCB0eXBlcwo+ Pj4+Pgo+Pj4+PiBJIHJlbWVtYmVyIGJlaW5nIGNvbmZ1c2VkIGJ5IHRoaXMgdGhlIGZpcnN0IHRp bWUgSSBzYXcgaXQsIGJ1dCBpbgo+Pj4+PiBoaW5kc2lnaHQgaXQgbWFrZXMgc2Vuc2U6IGlmIHRo ZXJlIHdlcmUgMiBtZXRob2RzIHdpdGggdGhlIHNhbWUgbmFtZQo+Pj4+PiBhbmQgaW5wdXQgdHlw ZXMsIGhvdyBjb3VsZCBKYXZhIGtub3cgd2hpY2ggb25lIHNob3VsZCBiZSBjYWxsZWQgd2hlbgo+ Pj4+PiBhcHBsaWVkIHRvIGFyZ3VtZW50cz8KPj4+Pj4KPj4+Pj4gU28gbXkgcXVlc3Rpb24gaXM6 IGRvZXMgQUJDTCByZWFsbHkgbGV0IHlvdSBoYXZlIGJvdGggbWV0aG9kcyBhdCB0aGUKPj4+Pj4g c2FtZSB0aW1lIG9yIGp1c3QgdGhlIGxhc3RseSBkZWZpbmVkIG9uZT8KPj4+Pj4KPj4+Pj4g4oCQ 4oCQ4oCQ4oCQ4oCQ4oCQ4oCQIE9yaWdpbmFsIE1lc3NhZ2Ug4oCQ4oCQ4oCQ4oCQ4oCQ4oCQ4oCQ Cj4+Pj4+Cj4+Pj4+IE9uIFR1ZXNkYXksIEF1Z3VzdCAzMXN0LCAyMDIxIGF0IDE6MTggQU0sIFBo aWwgRWF0b24gPHBoaWxAZWF0b25waGlsLmNvbT4gd3JvdGU6Cj4+Pj4+Cj4+Pj4+PiBJIHNwb2tl IHRvbyBzb29uLiBUaGUgaXNzdWUgaXMgdGhhdCBJIHRydWx5IGRvIG5lZWQgYm90aCBvZiB0aGVz ZSBtZXRob2RzCj4+Pj4+Pgo+Pj4+Pj4gdG8gYmUgY2FsbGVkIGBhcHBseWAgbm90IGBhcHBseWAg YW5kIGBhcHBseSQxYC4KPj4+Pj4+Cj4+Pj4+PiBGb3Igd2hhdCBpdCdzIHdvcnRoIHRoaXMga2lu ZCBvZiByZWRlZmluaXRpb24gb2YgdGhlIHNhbWUgbWV0aG9kIHdvcmtlZCBmb3IKPj4+Pj4+Cj4+ Pj4+PiBtZSBpbiBBQkNMIGxpc3AuIFNvIEkga25vdyBpdCdzIGRlZmluaXRlbHkgcG9zc2libGUg dG8gZXhwcmVzcyBpbiBKYXZhLgo+Pj4+Pj4KPj4+Pj4+IE9uIE1vbiwgQXVnIDMwLCAyMDIxIGF0 IDc6MDkgUE0gUGhpbCBFYXRvbiBwaGlsQGVhdG9ucGhpbC5jb20gd3JvdGU6Cj4+Pj4+Pgo+Pj4+ Pj4gPiBBaGEhIEl0IGdhdmUgbXkgc2Vjb25kIGFwcGx5IG1ldGhvZCBhIGRpZmZlcmVudCBzdWZm aXguIEJ5IHJlb3JkZXJpbmcKPj4+Pj4+ID4KPj4+Pj4+ID4gdGhlc2UgdHdvIG1ldGhvZHMgdGhl IHdob2xlIHRoaW5nIHNvbWVob3cgd29ya3MuCj4+Pj4+PiA+Cj4+Pj4+PiA+ICQgamF2YXAgbWFp blwkMC5jbGFzcwo+Pj4+Pj4gPgo+Pj4+Pj4gPiBDb21waWxlZCBmcm9tICJtYWluLnNjbSIKPj4+ Pj4+ID4KPj4+Pj4+ID4gcHVibGljIGNsYXNzIG1haW4kMCBpbXBsZW1lbnRzIGlvLmpvb2J5LlJv dXRlJEhhbmRsZXIgewo+Pj4+Pj4gPgo+Pj4+Pj4gPiBtYWluJGZyYW1lIHRoaXMkMDsKPj4+Pj4+ ID4KPj4+Pj4+ID4gcHVibGljIGphdmEubGFuZy5DaGFyU2VxdWVuY2UgYXBwbHkoaW8uam9vYnku Q29udGV4dCk7Cj4+Pj4+PiA+Cj4+Pj4+PiA+IHB1YmxpYyBqYXZhLmxhbmcuT2JqZWN0IGFwcGx5 JDEoaW8uam9vYnkuQ29udGV4dCk7Cj4+Pj4+PiA+Cj4+Pj4+PiA+IHB1YmxpYyBtYWluJDAobWFp biRmcmFtZSk7Cj4+Pj4+PiA+Cj4+Pj4+PiA+IH0KPj4+Pj4+ID4KPj4+Pj4+ID4gSXQncyB3ZWly ZCBidXQgSSdsbCB0YWtlIGl0Lgo+Pj4+Pj4gPgo+Pj4+Pj4gPiBPbiBNb24sIEF1ZyAzMCwgMjAy MSBhdCAxMjo0MCBQTSBQZXIgQm90aG5lciBwZXJAYm90aG5lci5jb20gd3JvdGU6Cj4+Pj4+PiA+ Cj4+Pj4+PiA+ID4gT24gOC8yOS8yMSAxMjowMyBQTSwgUGhpbCBFYXRvbiB3cm90ZTo+IFN0aWxs IG5ldyB0byBLYXdhLiBJJ20gdHJ5aW5nIHRvCj4+Pj4+PiA+ID4KPj4+Pj4+ID4gPiBpbXBsZW1l bnQgYW4gaW50ZXJmYWNlICgKPj4+Pj4+ID4gPgo+Pj4+Pj4gPiA+ID4gaW8uam9vYnkuUm91dGUk SGFuZGxlcgo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IDwKPj4+Pj4+ID4gPiA+Cj4+Pj4+PiA+ ID4gPiBodHRwczovL2dpdGh1Yi5jb20vam9vYnktcHJvamVjdC9qb29ieS9ibG9iLzIueC9qb29i eS9zcmMvbWFpbi9qYXZhL2lvL2pvb2J5L1JvdXRlLmphdmEjTDI0Nwo+Pj4+Pj4gPiA+ID4KPj4+ Pj4+ID4gPiA+ICkuCj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gSXQgb25seSBoYXMgYSBzaW5n bGUgbm9uLWRlZmF1bHQgbWV0aG9kLCBhcHBseS4KPj4+Pj4+ID4gPiA+Cj4+Pj4+PiA+ID4gPiBI ZXJlJ3Mgd2hhdCBJJ3ZlIGdvdAo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IChkZWZpbmUgKHJv dXRlIGFwcCBtZXRob2QgcGF0aCBoYW5kbGVyKQo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IChs ZXQgKChoYW5kbGVyIChvYmplY3QgKGlvLmpvb2J5LlJvdXRlJEhhbmRsZXIpCj4+Pj4+PiA+ID4g Pgo+Pj4+Pj4gPiA+ID4gI3wgVGhpcyBtZXRob2QgZXhpc3RzIGp1c3QgdG8gc3RvcCBKb29ieSBm cm9tCj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gdHJ5aW5nIHRvIGludHJvc3BlY3QgSmF2YSBj b2RlIHRoYXQgZG9lc24ndCBleGlzdCBiZWNhdXNlIHRoaXMgaXNuJ3QKPj4+Pj4+ID4gPiA+Cj4+ Pj4+PiA+ID4gPiB3cml0dGVuIGluIEphdmEuIHwjCj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4g KChhcHBseSAoY3R4IDo6aW8uam9vYnkuQ29udGV4dCkpIDo6c3RyaW5nCj4+Pj4+PiA+ID4gPgo+ Pj4+Pj4gPiA+ID4gIyFudWxsKQo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+ICgoYXBwbHkgKGN0 eCA6OmlvLmpvb2J5LkNvbnRleHQpKQo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IDo6amF2YS5s YW5nLk9iamVjdAo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IChoYW5kbGVyIGN0eCkpKSkpCj4+ Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gKGFwcDpyb3V0ZSBtZXRob2QgcGF0aCBoYW5kbGVyKSkp Cj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gQnV0IHdoZW4gdGhpcyBnZXRzIGV4ZXJjaXNlZCwg SSBnZXQ6Cj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gW3dvcmtlci0xLTNdIEVSUk9SIGlvLmpv b2J5Lkpvb2J5IC0gR0VUIC9oZWxsby13b3JsZCA1MDAgU2VydmVyIEVycm9yCj4+Pj4+PiA+ID4g Pgo+Pj4+Pj4gPiA+ID4gamF2YS5sYW5nLkFic3RyYWN0TWV0aG9kRXJyb3I6IFJlY2VpdmVyIGNs YXNzIG1haW4kMCBkb2VzIG5vdCBkZWZpbmUgb3IKPj4+Pj4+ID4gPiA+Cj4+Pj4+PiA+ID4gPiBp bmhlcml0IGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSByZXNvbHZlZCBtZXRob2QgJ2Fic3RyYWN0 Cj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gamF2YS5sYW5nLk9iamVjdAo+Pj4+Pj4gPiA+ID4K Pj4+Pj4+ID4gPiA+IGFwcGx5KGlvLmpvb2J5LkNvbnRleHQpJyBvZiBpbnRlcmZhY2UgaW8uam9v YnkuUm91dGUkSGFuZGxlci4KPj4+Pj4+ID4gPgo+Pj4+Pj4gPiA+IEkgZG9uJ3Qgc2VlIGFueXRo aW5nIG9idmlvdXNseSB3cm9uZy4gT25lIHRoaW5nIHRvIHRyeSBpcyBpbnN0ZWFkIG9mIGFuCj4+ Pj4+PiA+ID4KPj4+Pj4+ID4gPiBhbm9ueW1vdXMgY2xhc3MgKHdpdGggb2JqZWN0KSB1c2UgYSBu YW1lZCBjbGFzcyAod2l0aAo+Pj4+Pj4gPiA+Cj4+Pj4+PiA+ID4gZGVmaW5lLXNpbXBsZS1jbGFz cykuCj4+Pj4+PiA+ID4KPj4+Pj4+ID4gPiBUaGUgYW5vbnltb3VzIGNsYXNzIGlzIG1vcmUgY29u dmVuaWVudCBvZiBjb3Vyc2UgdGhlcmUgaXMgc29tZSBleHRyYQo+Pj4+Pj4gPiA+Cj4+Pj4+PiA+ ID4gIm1hZ2ljIgo+Pj4+Pj4gPiA+Cj4+Pj4+PiA+ID4gKHN1Y2ggYXMgaW52aXNpYmxlIGZpZWxk cykgdGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncy4KPj4+Pj4+ID4gPgo+Pj4+Pj4gPiA+ID4g QWxzbyBvbiBhIHRhbmdlbnQsIEkgd2FzIGV4Y2l0ZWQgYWJvdXQgdGhlIGxhbWJkYSBzaG9ydGhh bmQgZm9yIHNpbmdsZQo+Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IG1ldGhvZCBvYmplY3RzLiBM aWtlIEkgc2FpZCB0aGlzIGludGVyZmFjZSBvbmx5IGhhcyBhIHNpbmdsZSBub24tZGVmYXVsdAo+ Pj4+Pj4gPiA+ID4KPj4+Pj4+ID4gPiA+IG1ldGhvZDogYXBwbHkuIEJ1dCBJIHRyaWVkIGp1c3Qg Y2FsbGluZyBgKGFwcDpyb3V0ZSBtZXRob2QgaGFuZGxlcilgCj4+Pj4+PiA+ID4gPgo+Pj4+Pj4g PiA+ID4gd2l0aG91dCB3cmFwcGluZyBpdCBpbiB0aGUgaW8uam9vYnkuUm91dGUkSGFuZGxlciBv YmplY3QgYnV0IGl0IHN0aWxsCj4+Pj4+PiA+ID4gPgo+Pj4+Pj4gPiA+ID4gZmFpbGVkLiBJIGd1 ZXNzIGl0IGNvdWxkbid0IGZpZ3VyZSBvdXQgdGhpcyBvbmUgbWV0aG9kLgo+Pj4+Pj4gPiA+Cj4+ Pj4+PiA+ID4gS2F3YSBoYXMgdG8gYmUgYWJsZSB0byBmaWd1cmUgb3V0IGF0IGNvbXBpbGUgdGlt ZSB0aGF0IGEgc3BlY2lmaWMKPj4+Pj4+ID4gPgo+Pj4+Pj4gPiA+IGNsYXNzL2ludGVyZmFjZQo+ Pj4+Pj4gPiA+Cj4+Pj4+PiA+ID4gaXMgcmVxdWlyZWQgYmVmb3JlIGl0IGNhbiBjb252ZXJ0IHRo ZSBsYW1iZGEgdG8gYW4gb2JqZWN0LiAoQXMgZmFyIGFzIEkKPj4+Pj4+ID4gPgo+Pj4+Pj4gPiA+ IGNhbgo+Pj4+Pj4gPiA+Cj4+Pj4+PiA+ID4gcmVtZW1iZXIsIGRvaW5nIHRoaXMgY29udmVyc2lv biBhdCBydW4tdGltZSBpc24ndCBpbXBsZW1lbnRlZCwgYW5kIHdvdWxkCj4+Pj4+PiA+ID4KPj4+ Pj4+ID4gPiBiZQo+Pj4+Pj4gPiA+Cj4+Pj4+PiA+ID4gZmFpcmx5IGNvbXBsaWNhdGVkLikgU28g eW91IG1heSBuZWVkIHRvIGFkZCBzb21lIG1vcmUgdHlwZS1zcGVjaWZpZXJzLgo+Pj4+Pj4gPiA+ Cj4+Pj4+PiA+ID4gSSBzdWdnZXN0IHVzaW5nIGphdmFwIHRvIGxvb2sgYXQgdGhlIGdlbmVyYXRl ZCBjbGFzc2VzLCB0byBzZWUgd2hhdCBpcwo+Pj4+Pj4gPiA+Cj4+Pj4+PiA+ID4gZ29pbmcgb24u Cj4+Pj4+PiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+PiA+ID4KPj4+Pj4+ID4g PiAtLVBlciBCb3RobmVyCj4+Pj4+PiA+ID4KPj4+Pj4+ID4gPgo+Pj4+Pj4gPiA+IHBlckBib3Ro bmVyLmNvbSBodHRwOi8vcGVyLmJvdGhuZXIuY29tLw==