From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f429.i.mail.ru (f429.i.mail.ru [185.5.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 20FC744643B for ; Mon, 19 Oct 2020 12:49:56 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Mon, 19 Oct 2020 12:49:54 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1603100994.191990135@f429.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--6dA2dEb89fB373A3CcBAb6Db1B7f9C241603100994" In-Reply-To: <903df397-8107-1619-e589-2e41c52d0478@tarantool.org> References: <20200925225359.29653-1-i.kosarev@tarantool.org> <903df397-8107-1619-e589-2e41c52d0478@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v3=5D_iproto=3A_make_iprot?= =?utf-8?q?o_thread_more_independent_from_tx?= List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?VmxhZGlzbGF2IFNocGlsZXZveQ==?= Cc: tarantool-patches@dev.tarantool.org ----ALT--6dA2dEb89fB373A3CcBAb6Db1B7f9C241603100994 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpLArCoApUaGFua3MgZm9yIHlvdXIgcmV2aWV3IQrCoApTZW50IHY0IG9mIHRoZSBwYXRjaCBj b25zaWRlcmluZyB0aGUgY29tbWVudHMgYW5kIHByaXZhdCBkaXNjdXNzaW9uLgrCoApTb21lIGFu c3dlcnMgYXJlIGJlbG93LgrCoCAKPtCf0Y/RgtC90LjRhtCwLCAyINC+0LrRgtGP0LHRgNGPIDIw MjAsIDI6NDUgKzAzOjAwINC+0YIgVmxhZGlzbGF2IFNocGlsZXZveSA8di5zaHBpbGV2b3lAdGFy YW50b29sLm9yZz46Cj7CoAo+SGkhIFRoYW5rcyBmb3IgdGhlIHBhdGNoISBWZXJ5IG5pY2UhIEV4 dHJlbWUgbmljZW5lc3MhIE9wdGltaXN0aWMgY29ubmVjdGlvbiBoYW5kbGluZyEKPgo+U2VlIDE3 IHNtYWxsIG1pbm9yIGNvbW1lbnRzIGJlbG93Lgo+Cj4xLiBUaGUgYnJhbmNoIGZhaWxzIHF1aXRl IGhhcmQgYWxsIHRoZSBpcHJvdG8tcmVsYXRlZCB0ZXN0cyBvbiBteSBtYWNoaW5lLAo+c29tZSB3 aXRoIGNyYXNoZXMuIEFsc28gd2hlbiBJIHRyaWVkIHRvIHJ1biBpdCBpbiB0aGUgY29uc29sZSwg SSBnZXQKPidQZWVyIGNsb3NlZCcgcmlnaHQgYWZ0ZXIgbmV0Ym94LmNvbm5lY3QuCj4KPkhvd2V2 ZXIgSSBzZWUgQ0kgZ3JlZW4sIGFuZCBJIGFtIG5vdCBzdXJlIHdoeSBkb2VzIGl0IHBhc3MgdGhl cmUuIE9uIG15Cj5tYWNoaW5lIGFsbCBuZXR3b3JraW5nIGl0IHRvdGFsbHkgYnJva2VuIG9uIHlv dXIgYnJhbmNoLgo+Cj5JIGZpeGVkIGl0IGJ5IGFkZGluZyB0aGlzOgo+Cj5AQCAtNTc4LDYgKzU3 OCw3IEBAIGlwcm90b19tc2dfbmV3KHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uKQo+cmV0 dXJuIE5VTEw7Cj59Cj5tc2ctPmNvbm5lY3Rpb24gPSBjb247Cj4rIG1zZy0+Y2xvc2VfY29ubmVj dGlvbiA9IGZhbHNlOwo+cm1lYW5fY29sbGVjdChybWVhbl9uZXQsIElQUk9UT19SRVFVRVNUUywg MSk7Cj5yZXR1cm4gbXNnOwo+fQo+Cj5JdCBzZWVtcyBpdCBpcyB5b3VyIGJ1ZywgYmVjYXVzZSBw cmV2aW91c2x5IGl0IHdhcyB1c2VkIG9ubHkgb24KPmNvbm5lY3Rpb24sIGFuZCBpbml0aWFsaXpl ZCBvbmx5IGluIGlwcm90b19vbl9hY2NlcHQoKS4gTm93IHlvdQo+dXNlIGl0IG9uIGVhY2ggcmVx dWVzdCwgYnV0IG5vdCBpbml0aWFsaXplIG9uIGVhY2ggcmVxdWVzdC4gQWxzbyB0aGlzCj5zaG91 bGQgaGF2ZSBiZWVuIGEgaHVnZSBsdWNrIGl0IGRpZG4ndCBmYWlsIG9uIGFueSBDSSBqb2IuClJp Z2h0LCBteSBmYXVsdCBoZXJlLiBGaXhlZCBpbiB2NC4KPgo+T24gMjYuMDkuMjAyMCAwMDo1Mywg SWx5YSBLb3NhcmV2IHdyb3RlOgo+PiBPbiBjb25uZWN0aW9uLCBhbiBldmlvIHNlcnZpY2UgY2Fs bGJhY2sgaXMgaW52b2tlZCB0byBhY2NlcHQgaXQuIFRoZQo+PiBuZXh0IHN0ZXAgYWZ0ZXIgYWNj ZXB0aW9uIHdhcyB0byBwcm9jZXNzIGNvbm5lY3Rpb24gdG8gdHggdGhyZWFkCj4+IHRocm91Z2gg Y2J1cy4gVGhpcyBtZWFudCB0aGF0IGFueSBjb25uZWN0aW9uIGludGVyYWN0aW9uIGludm9sdmVz Cj4+IHR4IHRocmVhZCBldmVuIGJlZm9yZSB3ZSBnZXQgdG8gZGVjb2RlIHdoYXQgZG9lcyB0aGUg Y2xpZW50IHdhbnQKPj4gZnJvbSB1cy4gQ29uc2VxdWVudGx5LCBhIG51bWJlciBvZiBwcm9ibGVt cyBhcHBlYXJzLiBUaGUgbWFpbiBvbmUKPj4gaXMgdGhhdCB3ZSBtaWdodCBnZXQgZGVzY3JpcHRv ciBsZWFrIGluIGNhc2Ugb2YgdW5yZXNwb25zaXZlIHR4IHRocmVhZAo+PiAoZm9yIGV4YW1wbGUs IHdoZW4gYnVpbGRpbmcgc2Vjb25kYXJ5IGluZGV4KS4KPgo+Mi4gSXQgaXMgbm90IGEgbGVhayBy ZWFsbHkuIEp1c3QgdG9vIG1hbnkgY2xpZW50cyB3YWl0aW5nIGZvciBiZWluZwo+cHJvY2Vzc2Vk LiBEZXNjcmlwdG9ycyB3ZXJlIG5vdCBsb3N0IGNvbXBsZXRlbHkuCj4KPkFzIGZvciB0aGUgaXNz dWUgLSB3aGF0IHdhcyB0aGUgcHJvYmxlbSBub3QgdG8gc3RhcnQgbGlzdGVuaW5nIHVudGlsCj5y ZWNvdmVyeSBpcyBjb21wbGV0ZT8KPgo+QW5kIGhvdyBkb2VzIHRoaXMgcGF0Y2ggc29sdmUgaXQs IGlmIHRoZSBjb25uZWN0aW9ucyBhcmUgc3RpbGwga2VwdCwKPmFuZCBzbyB0aGVpciBkZXNjcmlw dG9ycz8gSG93IGRpZCB5b3UgdmFsaWRhdGUgdGhlIHByb2JsZW0gd2FzIGdvbmU/Cj5JdCBzZWVt cyB0aGUgZGVzY3JpcHRvcnMgc3RpbGwgYXJlIGNyZWF0ZWQsIGFuZCBzdGlsbCBhcmUgbm90IGNs b3NlZC4KPgo+SWYgdGhlIHByb2JsZW0gaXMgbm90IGdvbmUsIHRoYXQgd2h5IGRvZXMgdGhpcyBw YXRjaCBkb2VzIHdoYXQgaXQgZG9lcz8KVGhpcyB0b3BpYyB3YXMgZGlzY3Vzc2VkIHdpdGggdm9p Y2UuIFNob3J0IGFuc3dlciBoZXJlOgpQcmV2aW91c2x5wqBpcHJvdG8gaGFkIG9ubHkgYWNjZXB0 ZWQgY29ubmVjdGlvbnMgd2l0aG91dCBhbnkKZnVydGhlcsKgYWN0aW9ucyzCoGxlYWRpbmcgdG8g dGhlIHZlcnkgZmFzdCBkZXNjcmlwdG9ycyBleGhhdXN0aW9uLgpXZSBjYW7igJl0IG5vdCBzdGFy dMKgbGlzdGVuaW5nIGJlZm9yZSByZWNvdmVyeTogaXQgaXMgbmVlZGVkIGZvciByZXBsaWNhdGlv bi4KUGF0Y2hlcyBzb2x2ZXMgaXMsIGNhdXNlIHRoZSBjb25uZWN0aW9ucyBhcmUgbm93IGdyZWV0 ZWQgYW5kCnRoZXkgYXJlIG5vdCB0cnlpbmcgcmVjb25uZWN0LCB3YXN0aW5nIHNvY2tldHMuIFRo ZXJlIGlzIGEgcmVwcm9kdWNlcgppbiB0aGUgdGlja2V0LCB3aGljaCBpIGNhbid0IHNlZSBob3cg dG8gaW5jbHVkZSBpbiB0ZXN0LXJ1bi4gQnV0IGl0IHNob3dzCnRoZSBkaWZmZXJlbmNlLgo+PiBU aGVyZSBhcmUgc29tZSBvdGhlcgo+PiBjYXNlcyB3aGVyZSB3ZSBtaWdodCBub3Qgd2FudCB0byBz cGVuZCBwcmVjaW91cyB0eCB0aW1lIHRvIHByb2Nlc3MKPj4gdGhlIGNvbm5lY3Rpb24gaW4gY2Fz ZSBpcHJvdG8gY2FuIGRvIGl0IGFsbCBhbG9uZS4KPgo+My4gV2hhdCBhcmUgdGhlc2Ugb3RoZXIg Y2FzZXM/IEkgY2FuIHRoaW5rIG9ubHkgb2YgU1dJTSBpbiBpcHJvdG8gdGhyZWFkLAo+YnV0IGl0 IGlzIG5vdCByZWxhdGVkIGF0IGFsbC4KVGhlIGNhc2VzIGFyZSB0aGF0IHdlIGNhbiBub3cgYWRk IG1vcmUgbG9naWMgdG8gcmVxdWVzdApwcm9jZXNzaW5nIGluIGlwcm90bywgaWYgbmVlZGVkLCB3 aGVuIHR4IGlzIG5vdCByZWFsbHkgbmVlZGVkIHRvIGFuc3dlci4KRm9yIGV4YW1wbGUsIHNlZSAj NDY0Ni4KVGhpcyBjYW4gYWxzbyBzb2x2ZSBzb21lIHByb2JsZW1zIHdpdGggaW1wcm9wZXIgdHgg YW5zd2Vycy7CoAo+Cj4+IFRoaXMgcGF0Y2ggYWxsb3dzIGlwcm90byB0byBhY2NlcHQgY29ubmVj dGlvbiBhbmQgc2VuZCBncmVldGluZyBieQo+PiBpdHNlbGYuIFRoZSBjb25uZWN0aW9uIGlzIGlu aXRpYWxpemVkIGluIHR4IHRocmVhZCB3aGVuIHRoZSByZWFsCj4+IHJlcXVlc3QgY29tZXMgdGhy b3VnaCBpcHJvdG9fbXNnX2RlY29kZSgpLiBJbiBjYXNlIHJlcXVlc3QgdHlwZSB3YXMgbm90Cj4+ IHJlY29nbml6ZWQgd2UgY2FuIGFsc28gc2VuZCByZXBseSB3aXRoIGFuIGVycm9yIHdpdGhvdXQg dXNpbmcgdHguIEl0IGlzCj4+IHBsYW5uZWQgdG8gYWRkIG1vcmUgaXByb3RvIGxvZ2ljIHRvIHBy ZXZlbnQgZXh0cmEgaW50ZXJhY3Rpb24gd2l0aAo+PiB0eCB0aHJlYWQuIFRoaXMgcGF0Y2ggYWxy ZWFkeSB0byBzb21lIGV4dGVudCBzb2x2ZXMgZGVzY3JpcHRvcnMgbGVha2FnZQo+PiBwcm9ibGVt IGFzIGZhciBhcyBjb25uZWN0aW9uIGVzdGFibGlzaGVzIGFuZCBzdGF5cyBpbiBmZXRjaF9zY2hl bWEKPj4gc3RhdGUgd2hpbGUgdHggdGhyZWFkIGlzIHVucmVzcG9uc2l2ZS4KPj4gVGhlIG90aGVy IHVzZXIgdmlzaWJsZSBjaGFuZ2UgaXMgdGhhdCBvbl9jb25uZWN0IHRyaWdnZXJzIHdvbid0IHJ1 biBvbgo+PiBjb25uZWN0aW9ucyB0aGF0IGRvbid0IHByb3ZpZGUgYW55IGlucHV0LCBhcyByZWZs ZWN0ZWQgaW4KPj4gYmFkX3RyaWdnZXIudGVzdC5weS4KPj4KPj4gUGFydCBvZiAjMzc3Ngo+Pgo+ PiBAVGFyYW50b29sQm90IGRvY3VtZW50Cj4+IFRpdGxlOiBpcHJvdG86IG9uX2Nvbm5lY3QgdHJp Z2dlcnMgZXhlY3V0aW9uCj4+IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3Igb25fY29ubmVj dCB0cmlnZ2VycyB0byByZWZsZWN0IHRoYXQgdGhleQo+PiBhcmUgbm93IGJlaW5nIGV4ZWN1dGVk IG9ubHkgd2l0aCB0aGUgZmlyc3QgcmVxdWVzdC4gVGhvdWdoIHRoZSB0cmlnZ2Vycwo+PiBhcmUg c3RpbGwgdGhlIGZpcnN0IHRoaW5nIHRvIGJlIGV4ZWN1dGVkIG9uIGEgbmV3IGNvbm5lY3Rpb24u IFdoaWxlIGl0Cj4+IGlzIHF1aXRlIGEgc3ludGhldGljIGNhc2UgdG8gZXN0YWJsaXNoIGEgY29u bmVjdGlvbiB3aXRob3V0IG1ha2luZwo+PiBhbnkgcmVxdWVzdHMgaXQgaXMgdGVjaG5pY2FsbHkg cG9zc2libGUgYW5kIG5vdyB5b3VyIHRyaWdnZXJzIHdvbid0IGJlCj4+IGV4ZWN1dGVkIGluIHRo aXMgY2FzZS4gU29tZSByZXF1ZXN0IGlzIHJlcXVpcmVkIHRvIHN0YXJ0IHRoZWlyCj4+IGV4ZWN1 dGlvbi4KPgo+NC4gSSBhbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQuIEFjY29yZGluZyB0byAzNzc2 IHRoZXJlIHdhcyBhIHByb2JsZW0sIHRoYXQKPnRoZSBjb25uZWN0aW9ucyB3ZXJlIG1hZGUuIFNv IHRoZXkgZGlkbid0IGRvIGFueSByZXF1ZXN0cz8gQW5kIHRoZQo+Y2FzZSBpcyBub3QgdGhhdCBz eW50ZXRpYyBhcyBpdCBzZWVtcz8KVGhleSBkaWRu4oCZdCBtYWtlIGFueSByZXF1ZXN0cyBqdXN0 IGJlY2F1c2UgdGhleSB3ZXJlbuKAmXQgZXZlbiBncmVldGVkLgpJbnN0ZWFkIHRoZXkgd2VyZSBy ZWNvbm5lY3RpbmcgYWxsIHRoZSB0aW1lLiBBcyBzb29uIGFzIHRoZXkgYXJlIGdyZWV0ZWQKdGhl eSBhcmUgc2VuZGluZyByZXF1ZXN0cy4KPgo+V2hhdCB3YXMgdGhlIHByb2JsZW0gdG8gcHJlc2Vy dmUgdGhlIG9yaWdpbmFsIGJlaGF2aW91cj8gRm9yIGV4YW1wbGUsCj55b3UgY291bGQgbWFrZSB0 aGUgb25fY29ubmVjdCBleGVjdXRpb24gZGVsYXllZC4gVFggdGhyZWFkIGNvdWxkIHRlbGwKPndo ZW4gcmVjb3ZlcnkgaXMgZG9uZSwgYW5kIGlwcm90byB3b3VsZCBzZW5kIHRoZSBwZW5kaW5nIGNv bm5lY3Rpb25zIHRvIGl0LgpJIHRoaW5rIHdlIGRvbuKAmXQgcmVhbGx5IG5lZWQgdG8gZGVhbCB3 aXRoIHRoZSBjb25uZWN0aW9ucyB0aGF0IGRvbuKAmXQgc2VuZCByZXF1ZXN0cy4KPgo+PiBzcmMv Ym94L2lwcm90by5jYyB8IDMxNyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+PiB0 ZXN0L2JveC1weS9iYWRfdHJpZ2dlci5yZXN1bHQgfCAxICsKPj4gdGVzdC9ib3gtcHkvYmFkX3Ry aWdnZXIudGVzdC5weSB8IDIyICsrLQo+PiB0ZXN0L3NxbC9wcmVwYXJlZC5yZXN1bHQgfCA0ICsK Pj4gdGVzdC9zcWwvcHJlcGFyZWQudGVzdC5sdWEgfCAxICsKPj4gNSBmaWxlcyBjaGFuZ2VkLCAy MzkgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvc3Jj L2JveC9pcHJvdG8uY2MgYi9zcmMvYm94L2lwcm90by5jYwo+PiBpbmRleCBiOGY2NWU1ZWMuLjlm OThmY2U4NiAxMDA2NDQKPj4gLS0tIGEvc3JjL2JveC9pcHJvdG8uY2MKPj4gKysrIGIvc3JjL2Jv eC9pcHJvdG8uY2MKPj4gQEAgLTQ2Myw2ICs0NzQsNyBAQCBzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rp b24KPj4gc3RydWN0IGV2X2lvIG91dHB1dDsKPj4gLyoqIExvZ2ljYWwgc2Vzc2lvbi4gKi8KPj4g c3RydWN0IHNlc3Npb24gKnNlc3Npb247Cj4+ICsgYm9vbCBpbml0X2ZhaWxlZDsKPgo+NS4gRmxh Z3MgbmVlZCAnaXNfJyBwcmVmaXguClJpZ2h0LCBvay7CoERvbmUgaW4gdjQuCj4KPjYuIFdoYXQg aXMgdGhpcz8gV2h5IGlzIGl0IG5lZWRlZD8gVXN1YWxseSB3ZSBsZWF2ZSBjb21tZW50cwo+dG8g ZWFjaCBzdHJ1Y3QgbWVtYmVyLiBPdGhlcndpc2UgaXQgaXMgaGFyZCB0byB1bmRlcnN0YW5kIHdo eQo+c29tZSBvZiB0aGVtIGFyZSBuZWVkZWQuClJpZ2h0LCBhZGRlZCB0aGUgY29tbWVudCBpbiB2 NC4KPgo+Ny4gVGhlIGZpZWxkIGlzIGFjY2Vzc2VkIGZyb20gdHggdGhyZWFkIG9ubHksIGFuZCBp cyBjbG9zZSB0bwo+ZmllbGRzIG11dGF0ZWQgZnJvbSBpcHJvdG8gdGhyZWFkLiBUaGF0IGxlYWRz IHRvIGZhbHNlLXNoYXJpbmcKPnByb2JsZW0uIFBsZWFzZSwgbW92ZSBpdCB0byBpcHJvdG9fY29u bmVjdGlvbi50eCBzdWItc3RydWN0LgpSaWdodCEgRml4ZWQgaW4gdjQuCj4KPj4gZXZfbG9vcCAq bG9vcDsKPj4gLyoqCj4+ICogUHJlLWFsbG9jYXRlZCBkaXNjb25uZWN0IG1zZy4gSXMgc2VudCBy aWdodCBhZnRlcgo+PiBAQCAtNjc3LDkgKzcwMCwxOSBAQCBpcHJvdG9fY29ubmVjdGlvbl9jbG9z ZShzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbikKPj4gKiBpcyBkb25lIG9ubHkgb25jZS4K Pj4gKi8KPj4gY29uLT5wX2lidWYtPndwb3MgLT0gY29uLT5wYXJzZV9zaXplOwo+PiAtIGNwaXBl X3B1c2goJnR4X3BpcGUsICZjb24tPmRpc2Nvbm5lY3RfbXNnKTsKPj4gYXNzZXJ0KGNvbi0+c3Rh dGUgPT0gSVBST1RPX0NPTk5FQ1RJT05fQUxJVkUpOwo+PiBjb24tPnN0YXRlID0gSVBST1RPX0NP Tk5FQ1RJT05fQ0xPU0VEOwo+PiArIHJsaXN0X2RlbCgmY29uLT5pbl9zdG9wX2xpc3QpOwo+PiAr IGlmIChjb24tPnNlc3Npb24gIT0gTlVMTCkgewo+PiArIGNwaXBlX3B1c2goJnR4X3BpcGUsICZj b24tPmRpc2Nvbm5lY3RfbXNnKTsKPj4gKyB9IGVsc2Ugewo+PiArIC8qCj4+ICsgKiBJbiBjYXNl IHNlc3Npb24gd2FzIG5vdCBjcmVhdGVkIHdlIGNhbiBzYWZlbHkKPj4gKyAqIHRyeSB0byBzdGFy dCBkZXN0cm95IG5vdCBpbnZvbHZpbmcgdHggdGhyZWFkLgo+PiArICovCj4+ICsgaXByb3RvX2Nv bm5lY3Rpb25fdHJ5X3RvX3N0YXJ0X2Rlc3Ryb3koY29uKTsKPj4gKyB9Cj4+ICsgcmV0dXJuOwo+ Cj44LiBZb3Ugd291bGRuJ3QgbmVlZCB0aGUgJ3JldHVybicgYW5kIHdvdWxkbid0IG5lZWQgdG8g ZHVwbGljYXRlCj4ncmxpc3RfZGVsKCZjb24tPmluX3N0b3BfbGlzdCk7JyBjYWxsLCBpZiB5b3Ug d291bGQgbW92ZQo+J3JsaXN0X2RlbCgmY29uLT5pbl9zdG9wX2xpc3QpOycgdG8gdGhlIGJlZ2lu bmluZyBvZiB0aGlzIGZ1bmN0aW9uCj5mcm9tIGl0cyBlbmQuClJpZ2h0LCBkb25lwqBpbiB2NC4K Pgo+PiB9IGVsc2UgaWYgKGNvbi0+c3RhdGUgPT0gSVBST1RPX0NPTk5FQ1RJT05fUEVORElOR19E RVNUUk9ZKSB7Cj4+IGlwcm90b19jb25uZWN0aW9uX3RyeV90b19zdGFydF9kZXN0cm95KGNvbik7 Cj4+IH0gZWxzZSB7Cj4+IEBAIC04MDksNiArODQyLDcgQEAgaXByb3RvX2VucXVldWVfYmF0Y2go c3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24sIHN0cnVjdCBpYnVmICppbikKPj4gYXNzZXJ0 KHJsaXN0X2VtcHR5KCZjb24tPmluX3N0b3BfbGlzdCkpOwo+PiBpbnQgbl9yZXF1ZXN0cyA9IDA7 Cj4+IGJvb2wgc3RvcF9pbnB1dCA9IGZhbHNlOwo+PiArIGJvb2wgb2J1Zl9pbl9pcHJvdG8gPSAo Y29uLT5zZXNzaW9uID09IE5VTEwpOwo+Cj45LiBXZSBhbHdheXMgbmFtZSBmbGFncyBzdGFydGlu ZyBmcm9tICdpc18nIHByZWZpeCBvciBhIHNpbWlsYXIgb25lIGxpa2UgJ2hhc18nLAo+J2RvZXNf Jy4gUGxlYXNlLCBmb2xsb3cgdGhhdCBhZ3JlZW1lbnQuCkFsbCByaWdodCwgYWRkZWQgaW4gdjQu Cj4KPj4gY29uc3QgY2hhciAqZXJybXNnOwo+PiB3aGlsZSAoY29uLT5wYXJzZV9zaXplICE9IDAg JiYgIXN0b3BfaW5wdXQpIHsKPj4gaWYgKGlwcm90b19jaGVja19tc2dfbWF4KCkpIHsKPj4gQEAg LTEzMTQsMTMgKzEzNjcsMjQgQEAgaXByb3RvX21zZ19kZWNvZGUoc3RydWN0IGlwcm90b19tc2cg Km1zZywgY29uc3QgY2hhciAqKnBvcywgY29uc3QgY2hhciAqcmVxZW5kLAo+PiAodWludDMyX3Qp IHR5cGUpOwo+PiBnb3RvIGVycm9yOwo+PiB9Cj4+IC0gcmV0dXJuOwo+PiArIHJldHVybiAwOwo+ PiBlcnJvcjoKPj4gLyoqIExvZyBhbmQgc2VuZCB0aGUgZXJyb3IuICovCj4+IGRpYWdfbG9nKCk7 Cj4+IC0gZGlhZ19jcmVhdGUoJm1zZy0+ZGlhZyk7Cj4+IC0gZGlhZ19tb3ZlKCZmaWJlcigpLT5k aWFnLCAmbXNnLT5kaWFnKTsKPj4gLSBjbXNnX2luaXQoJm1zZy0+YmFzZSwgZXJyb3Jfcm91dGUp Owo+PiArIGlmIChtc2ctPmNvbm5lY3Rpb24tPnNlc3Npb24gIT0gTlVMTCkgewo+PiArIGRpYWdf Y3JlYXRlKCZtc2ctPmRpYWcpOwo+PiArIGRpYWdfbW92ZSgmZmliZXIoKS0+ZGlhZywgJm1zZy0+ ZGlhZyk7Cj4+ICsgY21zZ19pbml0KCZtc2ctPmJhc2UsIGVycm9yX3JvdXRlKTsKPj4gKyByZXR1 cm4gMTsKPgo+MTAuIFdoeSBkbyB5b3UgbmVlZCAzIHJldHVybiB2YWx1ZXM/IFlvdSBvbmx5IGNo ZWNrIGZvciAtMS4gU28geW91Cj5jb3VsZCByZXR1cm4gMCBoZXJlIGxpa2UgaXQgd2FzIGJlZm9y ZSwgYW5kIC0xIGJlbG93LiBJbiB0aGUKPmNhbGxpbmcgY29kZSB5b3Ugd291bGQgY2hlY2sgIT0g MCBsaWtlIHdlIGRvIGV2ZXJ5d2hlcmUuCldlbGwsIHRoZSBpZGVhIHdhcyB0aGF0IHdlIGhhdmUg MiBkaWZmZXJlbnQgZXJyb3IgY2FzZXMuIEJ1dCBhY3R1YWxseQppdCBzaG91bGQgYmU6IDAgaWYg dGhlIHJvdXRlIHdhcyBpbml0ZWQuIC0xIG90aGVyd2lzZS4gTm93wqBpdCBpcyBsaWtlIHRoYXQu CkZpeGVkIGluIHY0Lgo+Cj4+ICsgfQo+PiArIC8qCj4+ICsgKiBJbiBjYXNlIHNlc3Npb24gd2Fz IG5vdCBjcmVhdGVkIHdlIGNhbiBwcm9jZXNzIGVycm9yIHBhdGgKPj4gKyAqIHdpdGhvdXQgdHgg dGhyZWFkLgo+PiArICovCj4+ICsgdHhfYWNjZXB0X3dwb3MobXNnLT5jb25uZWN0aW9uLCAmbXNn LT53cG9zKTsKPj4gKyB0eF9yZXBseV9lcnJvcihtc2cpOwo+Cj4xMS4gVGhlcmUgaXMgYSBuYW1p bmcgY29udmVudGlvbiwgdGhhdCBhbGwgdHhfIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGluCj5UWCB0 aHJlYWQgYWx3YXlzLiBBbGwgbmV0XyBhbmQgaXByb3RvXyBmdW5jdGlvbnMgYXJlIGNhbGxlZCBp biBJUHJvdG8KPnRocmVhZC4gTGV0cyBub3QgdmlvbGF0ZSB0aGUgcnVsZSBhbmQgb2JmdXNjYXRl IHRoZSBpcHJvdG8uY2MgY29kZQo+ZXZlbiBtb3JlIHRoYXQgaXQgaXMuIFBsZWFzZSwgY29tZSB1 cCB3aXRoIG5ldyBuYW1lcyByZWZsZWN0aW5nIHdoZXJlCj50aGUgZnVuY3Rpb25zIGFyZSB1c2Vk LiBPciBhdCBsZWFzdCBub3Qgc3BlY2lmeWluZyBpdCBhcyB0eF8uCldlbGwsIHRoaXMgY29udmVu dGlvbiBpcyBhbHJlYWR5IGJyb2tlbiB0byBzb21lIGV4dGVudC4gRm9yIGV4YW1wbGUsCnR4X3Jl cGx5X2Vycm9yKCkgaXRzZWxmIGNhbGxzwqAgaXByb3RvX3JlcGx5X2Vycm9yKCkgYW5kCmlwcm90 b193cG9zX2NyZWF0ZSgpLiB0eF9wcm9jZXNzX3NxbCgpIGNhbGxzwqAgaXByb3RvX3JlcGx5X3Nx bCgpLgpUaG91Z2ggaSBhZ3JlZSB0aGF0IGl0IGlzIGEgZ29vZCBpZGVhIHRvIGZvbGxvdyB0aGUg Y29udmVudGlvbi4gSSBkZWNpZGVkIHRvCmludHJvZHVjZSByZXBseV9lcnJvcigpIGFuZCBvYnVm X2FjY2VwdF93cG9zKCkgaW4gdjQuCj4KPj4gKyBuZXRfc2VuZF9tc2coJihtc2ctPmJhc2UpKTsK Pgo+MTIuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgJ2lwcm90b19tc2dfZGVjb2RlJy4gTGV0cyBs ZWF2ZSBpdCBkbyBkZWNvZGluZywKPmFuZCBub3Qgc2VuZCBhbnl0aGluZyBmcm9tIGl0LiBJdCBq dXN0IHZpb2xhdGVzIGl0cyBwdXJwb3NlIGFuZCBuYW1lLgpSaWdodCwgZml4ZWQgaW4gdjQuwqAK Pgo+PiArIHJldHVybiAtMTsKPj4gfQo+Pgo+PiBzdGF0aWMgdm9pZAo+PiBAQCAtMTQ3OCwxMyAr MTUzOCwyNyBAQCB0eF9hY2NlcHRfd3BvcyhzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbiwg Y29uc3Qgc3RydWN0IGlwcm90b193cG9zICp3cG9zKQo+PiB9Cj4+IH0KPj4KPj4gLXN0YXRpYyBp bmxpbmUgc3RydWN0IGlwcm90b19tc2cgKgo+PiAtdHhfYWNjZXB0X21zZyhzdHJ1Y3QgY21zZyAq bSkKPj4gK3N0YXRpYyBpbmxpbmUgaW50Cj4+ICt0eF9hY2NlcHRfbXNnKHN0cnVjdCBjbXNnICpt LCBzdHJ1Y3QgaXByb3RvX21zZyAqKm1zZykKPj4gewo+PiAtIHN0cnVjdCBpcHJvdG9fbXNnICpt c2cgPSAoc3RydWN0IGlwcm90b19tc2cgKikgbTsKPj4gLSB0eF9hY2NlcHRfd3Bvcyhtc2ctPmNv bm5lY3Rpb24sICZtc2ctPndwb3MpOwo+PiAtIHR4X2ZpYmVyX2luaXQobXNnLT5jb25uZWN0aW9u LT5zZXNzaW9uLCBtc2ctPmhlYWRlci5zeW5jKTsKPj4gLSByZXR1cm4gbXNnOwo+PiArICptc2cg PSAoc3RydWN0IGlwcm90b19tc2cgKikgbTsKPgo+MTMuIFdoeSBkbyB5b3UgY2hhbmdlIHRoZSBy ZXR1cm4gdHlwZSBhbmQgYWRkIGFuIG91dCBwYXJhbWV0ZXI/IFlvdQo+Y291bGQganVzdCByZXR1 cm4gTlVMTCBpbiBjYXNlIG9mIGFuIGVycm9yLgpObywgaSBjYW7igJl0LCBjYXVzZSBpIHdpbGwg bmVlZCB0aGlzwqBtc2cgdG8gcHJvY2VzcyB0aGUgZXJyb3IuIEkgY2Fu4oCZdCBnZXQgTlVMTApp bnN0ZWFkLgo+Cj4+ICsgLyoKPj4gKyAqIEluIGNhc2UgY29ubmVjdGlvbiBpbml0IGZhaWxlZCB3 ZSBkb24ndCBuZWVkIHRvIHRyeSBhbnltb3JlLgo+PiArICovCj4+ICsgaWYgKCgqbXNnKS0+Y29u bmVjdGlvbi0+aW5pdF9mYWlsZWQpCj4+ICsgcmV0dXJuIC0xOwo+PiArIC8qCj4+ICsgKiBJbiBj YXNlIHNlc3Npb24gd2FzIG5vdCBjcmVhdGVkIHdlIG5lZWQgdG8gaW5pdCBjb25uZWN0aW9uIGlu IHR4IGFuZAo+PiArICogY3JlYXRlIGl0IGhlcmUuCj4+ICsgKi8KPj4gKyBpZiAoKCptc2cpLT5j b25uZWN0aW9uLT5zZXNzaW9uID09IE5VTEwgJiYgdHhfaW5pdF9jb25uZWN0KCptc2cpICE9IDAp IHsKPj4gKyAoKm1zZyktPmNvbm5lY3Rpb24tPmluaXRfZmFpbGVkID0gdHJ1ZTsKPj4gKyAoKm1z ZyktPmNsb3NlX2Nvbm5lY3Rpb24gPSB0cnVlOwo+PiArIHJldHVybiAtMTsKPj4gKyB9Cj4+ICsg dHhfYWNjZXB0X3dwb3MoKCptc2cpLT5jb25uZWN0aW9uLCAmKCptc2cpLT53cG9zKTsKPj4gKyB0 eF9maWJlcl9pbml0KCgqbXNnKS0+Y29ubmVjdGlvbi0+c2Vzc2lvbiwgKCptc2cpLT5oZWFkZXIu c3luYyk7Cj4+ICsgcmV0dXJuIDA7Cj4+IH0KPj4KPj4gLyoqCj4+IEBAIC0xNTA3LDcgKzE1ODEs MTQgQEAgdHhfcmVwbHlfZXJyb3Ioc3RydWN0IGlwcm90b19tc2cgKm1zZykKPj4gc3RhdGljIHZv aWQKPj4gdHhfcmVwbHlfaXByb3RvX2Vycm9yKHN0cnVjdCBjbXNnICptKQo+PiB7Cj4+IC0gc3Ry dWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7Cj4+ICsgc3RydWN0IGlwcm90 b19tc2cgKm1zZzsKPj4gKyAvKgo+PiArICogV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0eF9hY2Nl cHRfbXNnKCkgcmV0dXJuIHZhbHVlIGhlcmUKPj4gKyAqIGFzIGZhciBhcyBpZiB3ZSBtaWdodCBv bmx5IHByb2Nlc3MgaXByb3RvIGVycm9yIGluIHR4Cj4+ICsgKiBpbiBjYXNlIGNvbm5lY3Rpb24g c2Vzc2lvbiBpcyBhbHJlYWR5IGNyZWF0ZWQgYW5kCj4+ICsgKiB0aHVzIHR4X2FjY2VwdF9tc2co KSBjYW4ndCBmYWlsLgo+PiArICovCj4+ICsgdHhfYWNjZXB0X21zZyhtLCAmbXNnKTsKPgo+MTQu IFdlbGwsIGlmIGl0IGZhaWxzLCB5b3UgaGF2ZSBtc2cgPT0gTlVMTCwgYW5kIHRoZSBjb2RlIGJl bG93IHdpbGwKPmNyYXNoLiBPdGhlcndpc2UgaXQgc2hvdWxkIGJlIGFuIGFzc2VydGlvbiwgbm90 IGp1c3QgYSBjb21tZW50LgpSaWdodCwgaW50cm9kdWNlZCB0aGUgYXNzZXJ0aW9uIGluIHY0Lgo+ Cj4+IHN0cnVjdCBvYnVmICpvdXQgPSBtc2ctPmNvbm5lY3Rpb24tPnR4LnBfb2J1ZjsKPj4gaXBy b3RvX3JlcGx5X2Vycm9yKG91dCwgZGlhZ19sYXN0X2Vycm9yKCZtc2ctPmRpYWcpLAo+PiBtc2ct PmhlYWRlci5zeW5jLCA6OnNjaGVtYV92ZXJzaW9uKTsKPj4gQEAgLTE4NjUsNiArMTk2MSwyOSBA QCB0eF9wcm9jZXNzX3JlcGxpY2F0aW9uKHN0cnVjdCBjbXNnICptKQo+PiB9Cj4+IH0KPj4KPj4g Ky8qKgo+PiArICogQ2hlY2sgY29ubmVjdGlvbiBoZWFsdGggYW5kIHRyeSB0byBzZW5kIGFuIGVy cm9yIHRvIHRoZSBjbGllbnQKPj4gKyAqIGluIGNhc2Ugb2YgaW50ZXJuYWwgY29ubmVjdGlvbiBp bml0IG9yIG9uX2Nvbm5lY3QgdHJpZ2dlciBmYWlsdXJlLgo+PiArICovCj4+ICtzdGF0aWMgYm9v bAo+PiAraXByb3RvX2Nvbm5lY3Rpb25fZmFpbChzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKQo+Cj4x NS4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCAnY29ubmVjdGlvbl9mYWlsJyBhbmQgbGl0ZXJhbGx5 IGRvZXMgbm90aGluZwo+d2hlbiB0aGUgY29ubmVjdGlvbiBpcyBmaW5lLiBEb2VzIG5vdCB0aGlz IG5hbWUgbG9vayB3cm9uZyB0byB5b3U/Ck9rLCByaWdodCwgaXQgd2lsbCBiZSBpcHJvdG9fY29u bmVjdGlvbl9jaGVja192YWxpZCgpIGluIHY0Lgo+Cj4+ICt7Cj4+ICsgaWYgKCFtc2ctPmNsb3Nl X2Nvbm5lY3Rpb24pCj4+ICsgcmV0dXJuIGZhbHNlOwo+PiArIHN0cnVjdCBpcHJvdG9fY29ubmVj dGlvbiAqY29uID0gbXNnLT5jb25uZWN0aW9uOwo+PiArIGludDY0X3QgbndyID0gc2lvX3dyaXRl dihjb24tPm91dHB1dC5mZCwgbXNnLT53cG9zLm9idWYtPmlvdiwKPj4gKyBvYnVmX2lvdmNudCht c2ctPndwb3Mub2J1ZikpOwo+Cj4xNi4gWW91IGNhbid0IGp1c3Qgd3JpdGUgdG8gYSBzb2NrZXQg d2hlbmV2ZXIgeW91IHdhbnQuIEl0IG1heSBiZQo+bm90IHdyaXRhYmxlLiBQbGVhc2UsIHVzZSBs aWJldiBldmVudHMgYW5kIGNhbGxiYWNrcyB0byBzZW5kIGFueXRoaW5nLgo+WW91IGNhbiBkbyBh IHdyaXRlIG9ubHkgd2hlbiB5b3UgZ2V0IEVWX1dSSVRFIGV2ZW50IGZyb20gbGliZXYsIHdobwo+ aW4gdHVybiBnZXRzIGl0IGZyb20gc2VsZWN0L3BvbGwvZXBvbGwva3F1ZXVlL3doYXRldmVyLWVs c2UtaXMtcHJvdmlkZWQKPmJ5IHRoZSBPUy4KUmlnaHQuIEFzIGRpc2N1c3NlZCBpbiB2b2ljZSwg aXQgaXMgc3BlY2lhbCBlcnJvcsKgY2FzZS4gSW4gY2FzZSB3ZSB3aWxsCmRvIHRoZSBub3JtYWwg d2F5LCB3ZSB3b27igJl0IGJlIGFibGUgdG8gc2VuZCB0aGUgZXJyb3IuIEkgY2hlY2tlZCB0aGUK Y2FzZSB3aXRoIGJhZF90cmlnZ2VyLnRlc3QgYW5kIGl0IGNsZWFybHnCoHNob3dzIHRoYXQgdGhl IGNsaWVudCB3b27igJl0CnJlY2VpdmXCoMKgdGhlIGVycm9ywqBtZXNzYWdlIGluIGNhc2Ugd2Ug d2lsbCB0cnkgdG8gd2FpdCBmb3IgdGhlIGV2ZW50IGhlcmUsCndoaWxlwqBzaW9fd3JpdGV2KCkg ZG9lcyBpdHMgam9iLgo+Cj4+ICsgaWYgKG53ciA+IDApIHsKPj4gKyAvKiBDb3VudCBzdGF0aXN0 aWNzLiAqLwo+PiArIHJtZWFuX2NvbGxlY3Qocm1lYW5fbmV0LCBJUFJPVE9fU0VOVCwgbndyKTsK Pj4gKyB9IGVsc2UgaWYgKG53ciA8IDAgJiYgISBzaW9fd291bGRibG9jayhlcnJubykpIHsKPj4g KyBkaWFnX2xvZygpOwo+PiArIH0KPj4gKyBpcHJvdG9fY29ubmVjdGlvbl9jbG9zZShjb24pOwo+ PiArIGlwcm90b19tc2dfZGVsZXRlKG1zZyk7Cj4+ICsgcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsK Pj4gc3RhdGljIHZvaWQKPj4gbmV0X3NlbmRfbXNnKHN0cnVjdCBjbXNnICptKQo+PiB7Cj4+IEBA IC0xOTM2LDgxICsyMDY2LDYwIEBAIG5ldF9lbmRfc3Vic2NyaWJlKHN0cnVjdCBjbXNnICptKQo+ PiB9Cj4+Cj4+IC8qKgo+PiAtICogSGFuZHNoYWtlIGEgY29ubmVjdGlvbjogaW52b2tlIHRoZSBv bi1jb25uZWN0IHRyaWdnZXIKPj4gLSAqIGFuZCBwb3NzaWJseSBhdXRoZW50aWNhdGUuIFRyeSB0 byBzZW5kIHRoZSBjbGllbnQgYW4gZXJyb3IKPj4gLSAqIHVwb24gYSBmYWlsdXJlLgo+PiArICog SGFuZHNoYWtlIGEgY29ubmVjdGlvbjogcHJlcGFyZSBncmVldGluZyBmb3IgaXQuCj4+ICovCj4+ IHN0YXRpYyB2b2lkCj4+IC10eF9wcm9jZXNzX2Nvbm5lY3Qoc3RydWN0IGNtc2cgKm0pCj4+ICtp cHJvdG9fcHJvY2Vzc19jb25uZWN0KHN0cnVjdCBpcHJvdG9fbXNnICptc2cpCj4+IHsKPj4gLSBz dHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gKHN0cnVjdCBpcHJvdG9fbXNnICopIG07Cj4+IHN0cnVj dCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLT5jb25uZWN0aW9uOwo+PiBzdHJ1Y3Qgb2J1 ZiAqb3V0ID0gbXNnLT5jb25uZWN0aW9uLT50eC5wX29idWY7Cj4+IC0gdHJ5IHsgLyogY29ubmVj dC4gKi8KPj4gLSBjb24tPnNlc3Npb24gPSBzZXNzaW9uX2NyZWF0ZShTRVNTSU9OX1RZUEVfQklO QVJZKTsKPj4gLSBpZiAoY29uLT5zZXNzaW9uID09IE5VTEwpCj4+IC0gZGlhZ19yYWlzZSgpOwo+ PiAtIGNvbi0+c2Vzc2lvbi0+bWV0YS5jb25uZWN0aW9uID0gY29uOwo+PiAtIHR4X2ZpYmVyX2lu aXQoY29uLT5zZXNzaW9uLCAwKTsKPj4gLSBjaGFyICpncmVldGluZyA9IChjaGFyICopIHN0YXRp Y19hbGxvYyhJUFJPVE9fR1JFRVRJTkdfU0laRSk7Cj4+IC0gLyogVE9ETzogZGlydHkgcmVhZCBm cm9tIHR4IHRocmVhZCAqLwo+PiAtIHN0cnVjdCB0dF91dWlkIHV1aWQgPSBJTlNUQU5DRV9VVUlE Owo+PiAtIHJhbmRvbV9ieXRlcyhjb24tPnNhbHQsIElQUk9UT19TQUxUX1NJWkUpOwo+PiAtIGdy ZWV0aW5nX2VuY29kZShncmVldGluZywgdGFyYW50b29sX3ZlcnNpb25faWQoKSwgJnV1aWQsCj4+ IC0gY29uLT5zYWx0LCBJUFJPVE9fU0FMVF9TSVpFKTsKPj4gLSBvYnVmX2R1cF94YyhvdXQsIGdy ZWV0aW5nLCBJUFJPVE9fR1JFRVRJTkdfU0laRSk7Cj4+IC0gaWYgKCEgcmxpc3RfZW1wdHkoJnNl c3Npb25fb25fY29ubmVjdCkpIHsKPj4gLSBpZiAoc2Vzc2lvbl9ydW5fb25fY29ubmVjdF90cmln Z2Vycyhjb24tPnNlc3Npb24pICE9IDApCj4+IC0gZGlhZ19yYWlzZSgpOwo+PiAtIH0KPj4gKyBj aGFyICpncmVldGluZyA9IChjaGFyICopIHN0YXRpY19hbGxvYyhJUFJPVE9fR1JFRVRJTkdfU0la RSk7Cj4+ICsgLyogVE9ETzogZGlydHkgcmVhZCBmcm9tIHR4IHRocmVhZCAqLwo+PiArIHN0cnVj dCB0dF91dWlkIHV1aWQgPSBJTlNUQU5DRV9VVUlEOwo+PiArIHJhbmRvbV9ieXRlcyhjb24tPnNh bHQsIElQUk9UT19TQUxUX1NJWkUpOwo+Cj4xNy4gU29ycnksIGJ1dCB3dGY/ISBUaGlzIGRhdGEg cmlnaHQgbm93IG1heSBiZSBiZWluZyB3cml0dGVuIGJ5IFRYIHRocmVhZCwKPnNvIHlvdSBsaXRl cmFsbHkgbWF5IHJlYWQgYW5kIHJldHVybiAqZ2FyYmFnZSogaGVyZS4gSXQgaXMgbm90IGFjY2Vw dGFibGUuCj5JdCBpcyBub3QgZXZlbiBhIHNob3J0IHRlcm0gc29sdXRpb24sIGl0IGlzIGp1c3Qg YSBidWcsIGlmIHlvdSBjYW4ndCBwcm92ZQo+dGhlIHZhbHVlIGlzIGFscmVhZHkgaW5pdGlhbGl6 ZWQgYW5kIGNvbnN0YW50IGJ5IHRoYXQgbW9tZW50Lgo+Cj5JZiBsaXN0ZW4gc3RhcnRzIGJlZm9y ZSByZWNvdmVyeSwgYW5kIFVVSUQgaXMgc3RvcmVkIGluIHRoZSB4bG9ncywgdGhlbiBpdAo+aXMg ZGVmaW5pdGVseSBhIGJ1Zy4KQXMgZGlzY3Vzc2VkIGluIHZvaWNlLCBhY3R1YWxseSwgZXZlcnl0 aGluZyBpcyBmaW5lLiBNeSBmYXVsdCB0byBsZWF2ZSB0aGUKd3JvbmcgY29tbWVudCBoZXJlIChJ IHdhcyBub3QgdG90YWxseSBzdXJlIGV2ZXJ5dGhpbmcgaXMgZmluZSwgYnV0IHRoZQpjb21tZW50 IHdhcyBhbHNvIHdyb25nIGJlZm9yZSBteSBwYXRjaCkuIEluIHY0IGl0IGlzIHJlcGxhY2VkIHdp dGgKdGhlIGNvcnJlY3Qgb25lLCB0aGF0IGV4cGxhaW5zIHRoZSBzaXR1YXRpb24uIEhlcmUgaXQg aXM6Ci8qCiAqIElOU1RBTkNFX1VVSUQgaXMgZ3VhcmFudGVlZCB0byBiZSBpbml0ZWQgYmVmb3Jl IHRoaXMgbW9tZW50LgogKiBXZSBzdGFydCBsaXN0ZW5pbmcgZWl0aGVyIGluIGxvY2FsX3JlY292 ZXJ5KCkgb3IgYm9vdHN0cmFwKCkuCiAqIFRoZSBJTlNUQU5DRV9VVUlEIGlzIGVuc3VyZWQgdG8g YmUgaW5pdGVkIGluIHRoZSBiZWdpbm5pbmcgb2YKICogYm90aCBtZXRob2RzLiBJbiBjYXNlIG9m IGxvY2FsX3JlY292ZXJ5KCkgaXQgaXMgdmVyaWZpZWQgdGhhdAogKiBJTlNUQU5DRV9VVUlEIHdh cyByZWFkIGZyb20gdGhlIHNuYXBzaG90IGluIG1lbXR4X2VuZ2luZV9uZXcoKS4KICogSW4gYm9v dHN0cmFwKCkgSU5TVEFOQ0VfVVVJRCBpcyBlaXRoZXIgdGFrZW4gZnJvbSB0aGUKICogaW5zdGFu Y2VfdXVpZCBib3guY2Zne30gcGFyYW0gb3IgY3JlYXRlZCBvbiB0aGUgc3BvdC4KICovCj4KPj4g KyBncmVldGluZ19lbmNvZGUoZ3JlZXRpbmcsIHRhcmFudG9vbF92ZXJzaW9uX2lkKCksICZ1dWlk LAo+PiArIGNvbi0+c2FsdCwgSVBST1RPX1NBTFRfU0laRSk7Cj4+ICsgaWYgKG9idWZfZHVwKG91 dCwgZ3JlZXRpbmcsIElQUk9UT19HUkVFVElOR19TSVpFKQo+PiArICE9IElQUk9UT19HUkVFVElO R19TSVpFKSB7Cj4+ICsgZGlhZ19zZXQoT3V0T2ZNZW1vcnksIElQUk9UT19HUkVFVElOR19TSVpF LAo+PiArICJncmVldGluZyBvYnVmIiwgImR1cCIpOwo+PiArIGlwcm90b19yZXBseV9lcnJvcihv dXQsIGRpYWdfbGFzdF9lcnJvcigmZmliZXIoKS0+ZGlhZyksCj4+ICsgbXNnLT5oZWFkZXIuc3lu YywgOjpzY2hlbWFfdmVyc2lvbik7Cj4+IGlwcm90b193cG9zX2NyZWF0ZSgmbXNnLT53cG9zLCBv dXQpOwo+PiAtIH0gY2F0Y2ggKEV4Y2VwdGlvbiAqZSkgewo+PiAtIHR4X3JlcGx5X2Vycm9yKG1z Zyk7Cj4+IG1zZy0+Y2xvc2VfY29ubmVjdGlvbiA9IHRydWU7Cj4+IC0gfQo+PiAtfQotLQpJbHlh IEtvc2FyZXY= ----ALT--6dA2dEb89fB373A3CcBAb6Db1B7f9C241603100994 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGRpdj5IaSw8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+VGhh bmtzIGZvciB5b3VyIHJldmlldyE8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+U2VudCB2NCBv ZiB0aGUgcGF0Y2ggY29uc2lkZXJpbmcgdGhlIGNvbW1lbnRzIGFuZCBwcml2YXQgZGlzY3Vzc2lv bi48L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+U29tZSBhbnN3ZXJzIGFyZSBiZWxvdy48YnI+ Jm5ic3A7PC9kaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1 N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+0J/Rj9GC0L3QuNGG0LAsIDIg 0L7QutGC0Y/QsdGA0Y8gMjAyMCwgMjo0NSArMDM6MDAg0L7RgiBWbGFkaXNsYXYgU2hwaWxldm95 ICZsdDt2LnNocGlsZXZveUB0YXJhbnRvb2wub3JnJmd0Ozo8YnI+Jm5ic3A7PGRpdiBpZD0iIj48 ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxzdHlsZSB0eXBlPSJ0ZXh0L2Nz cyI+PC9zdHlsZT48ZGl2PjxkaXYgaWQ9InN0eWxlXzE2MDE1OTU5NTMwNzU2NDk1MjU0X0JPRFki PkhpISBUaGFua3MgZm9yIHRoZSBwYXRjaCEgVmVyeSBuaWNlISBFeHRyZW1lIG5pY2VuZXNzISBP cHRpbWlzdGljIGNvbm5lY3Rpb24gaGFuZGxpbmchPGJyPjxicj5TZWUgMTcgc21hbGwgbWlub3Ig Y29tbWVudHMgYmVsb3cuPGJyPjxicj4xLiBUaGUgYnJhbmNoIGZhaWxzIHF1aXRlIGhhcmQgYWxs IHRoZSBpcHJvdG8tcmVsYXRlZCB0ZXN0cyBvbiBteSBtYWNoaW5lLDxicj5zb21lIHdpdGggY3Jh c2hlcy4gQWxzbyB3aGVuIEkgdHJpZWQgdG8gcnVuIGl0IGluIHRoZSBjb25zb2xlLCBJIGdldDxi cj4nUGVlciBjbG9zZWQnIHJpZ2h0IGFmdGVyIG5ldGJveC5jb25uZWN0Ljxicj48YnI+SG93ZXZl ciBJIHNlZSBDSSBncmVlbiwgYW5kIEkgYW0gbm90IHN1cmUgd2h5IGRvZXMgaXQgcGFzcyB0aGVy ZS4gT24gbXk8YnI+bWFjaGluZSBhbGwgbmV0d29ya2luZyBpdCB0b3RhbGx5IGJyb2tlbiBvbiB5 b3VyIGJyYW5jaC48YnI+PGJyPkkgZml4ZWQgaXQgYnkgYWRkaW5nIHRoaXM6PGJyPjxicj5AQCAt NTc4LDYgKzU3OCw3IEBAIGlwcm90b19tc2dfbmV3KHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAq Y29uKTxicj5yZXR1cm4gTlVMTDs8YnI+fTxicj5tc2ctJmd0O2Nvbm5lY3Rpb24gPSBjb247PGJy PisgbXNnLSZndDtjbG9zZV9jb25uZWN0aW9uID0gZmFsc2U7PGJyPnJtZWFuX2NvbGxlY3Qocm1l YW5fbmV0LCBJUFJPVE9fUkVRVUVTVFMsIDEpOzxicj5yZXR1cm4gbXNnOzxicj59PGJyPjxicj5J dCBzZWVtcyBpdCBpcyB5b3VyIGJ1ZywgYmVjYXVzZSBwcmV2aW91c2x5IGl0IHdhcyB1c2VkIG9u bHkgb248YnI+Y29ubmVjdGlvbiwgYW5kIGluaXRpYWxpemVkIG9ubHkgaW4gaXByb3RvX29uX2Fj Y2VwdCgpLiBOb3cgeW91PGJyPnVzZSBpdCBvbiBlYWNoIHJlcXVlc3QsIGJ1dCBub3QgaW5pdGlh bGl6ZSBvbiBlYWNoIHJlcXVlc3QuIEFsc28gdGhpczxicj5zaG91bGQgaGF2ZSBiZWVuIGEgaHVn ZSBsdWNrIGl0IGRpZG4ndCBmYWlsIG9uIGFueSBDSSBqb2IuPC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+UmlnaHQsIG15IGZhdWx0IGhlcmUuIEZpeGVkIGlu IHY0LjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAj MDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNz PSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+T24gMjYuMDkuMjAyMCAw MDo1MywgSWx5YSBLb3NhcmV2IHdyb3RlOjxicj4mZ3Q7IE9uIGNvbm5lY3Rpb24sIGFuIGV2aW8g c2VydmljZSBjYWxsYmFjayBpcyBpbnZva2VkIHRvIGFjY2VwdCBpdC4gVGhlPGJyPiZndDsgbmV4 dCBzdGVwIGFmdGVyIGFjY2VwdGlvbiB3YXMgdG8gcHJvY2VzcyBjb25uZWN0aW9uIHRvIHR4IHRo cmVhZDxicj4mZ3Q7IHRocm91Z2ggY2J1cy4gVGhpcyBtZWFudCB0aGF0IGFueSBjb25uZWN0aW9u IGludGVyYWN0aW9uIGludm9sdmVzPGJyPiZndDsgdHggdGhyZWFkIGV2ZW4gYmVmb3JlIHdlIGdl dCB0byBkZWNvZGUgd2hhdCBkb2VzIHRoZSBjbGllbnQgd2FudDxicj4mZ3Q7IGZyb20gdXMuIENv bnNlcXVlbnRseSwgYSBudW1iZXIgb2YgcHJvYmxlbXMgYXBwZWFycy4gVGhlIG1haW4gb25lPGJy PiZndDsgaXMgdGhhdCB3ZSBtaWdodCBnZXQgZGVzY3JpcHRvciBsZWFrIGluIGNhc2Ugb2YgdW5y ZXNwb25zaXZlIHR4IHRocmVhZDxicj4mZ3Q7IChmb3IgZXhhbXBsZSwgd2hlbiBidWlsZGluZyBz ZWNvbmRhcnkgaW5kZXgpLjxicj48YnI+Mi4gSXQgaXMgbm90IGEgbGVhayByZWFsbHkuIEp1c3Qg dG9vIG1hbnkgY2xpZW50cyB3YWl0aW5nIGZvciBiZWluZzxicj5wcm9jZXNzZWQuIERlc2NyaXB0 b3JzIHdlcmUgbm90IGxvc3QgY29tcGxldGVseS48YnI+PGJyPkFzIGZvciB0aGUgaXNzdWUgLSB3 aGF0IHdhcyB0aGUgcHJvYmxlbSBub3QgdG8gc3RhcnQgbGlzdGVuaW5nIHVudGlsPGJyPnJlY292 ZXJ5IGlzIGNvbXBsZXRlPzxicj48YnI+QW5kIGhvdyBkb2VzIHRoaXMgcGF0Y2ggc29sdmUgaXQs IGlmIHRoZSBjb25uZWN0aW9ucyBhcmUgc3RpbGwga2VwdCw8YnI+YW5kIHNvIHRoZWlyIGRlc2Ny aXB0b3JzPyBIb3cgZGlkIHlvdSB2YWxpZGF0ZSB0aGUgcHJvYmxlbSB3YXMgZ29uZT88YnI+SXQg c2VlbXMgdGhlIGRlc2NyaXB0b3JzIHN0aWxsIGFyZSBjcmVhdGVkLCBhbmQgc3RpbGwgYXJlIG5v dCBjbG9zZWQuPGJyPjxicj5JZiB0aGUgcHJvYmxlbSBpcyBub3QgZ29uZSwgdGhhdCB3aHkgZG9l cyB0aGlzIHBhdGNoIGRvZXMgd2hhdCBpdCBkb2VzPzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv YmxvY2txdW90ZT48L2Rpdj48ZGl2PlRoaXMgdG9waWMgd2FzIGRpc2N1c3NlZCB3aXRoIHZvaWNl LiBTaG9ydCBhbnN3ZXIgaGVyZTo8L2Rpdj48ZGl2PlByZXZpb3VzbHkmbmJzcDtpcHJvdG8gaGFk IG9ubHkgYWNjZXB0ZWQgY29ubmVjdGlvbnMgd2l0aG91dCBhbnk8L2Rpdj48ZGl2PmZ1cnRoZXIm bmJzcDthY3Rpb25zLCZuYnNwO2xlYWRpbmcgdG8gdGhlIHZlcnkgZmFzdCBkZXNjcmlwdG9ycyBl eGhhdXN0aW9uLjwvZGl2PjxkaXY+V2UgY2Fu4oCZdCBub3Qgc3RhcnQmbmJzcDtsaXN0ZW5pbmcg YmVmb3JlIHJlY292ZXJ5OiBpdCBpcyBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uLjwvZGl2PjxkaXY+ UGF0Y2hlcyBzb2x2ZXMgaXMsIGNhdXNlIHRoZSBjb25uZWN0aW9ucyBhcmUgbm93IGdyZWV0ZWQg YW5kPC9kaXY+PGRpdj50aGV5IGFyZSBub3QgdHJ5aW5nIHJlY29ubmVjdCwgd2FzdGluZyBzb2Nr ZXRzLiBUaGVyZSBpcyBhIHJlcHJvZHVjZXI8L2Rpdj48ZGl2PmluIHRoZSB0aWNrZXQsIHdoaWNo IGkgY2FuJ3Qgc2VlIGhvdyB0byBpbmNsdWRlIGluIHRlc3QtcnVuLiBCdXQgaXQgc2hvd3M8L2Rp dj48ZGl2PnRoZSBkaWZmZXJlbmNlLjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRl ci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4 OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj4m Z3Q7IFRoZXJlIGFyZSBzb21lIG90aGVyPGJyPiZndDsgY2FzZXMgd2hlcmUgd2UgbWlnaHQgbm90 IHdhbnQgdG8gc3BlbmQgcHJlY2lvdXMgdHggdGltZSB0byBwcm9jZXNzPGJyPiZndDsgdGhlIGNv bm5lY3Rpb24gaW4gY2FzZSBpcHJvdG8gY2FuIGRvIGl0IGFsbCBhbG9uZS48YnI+PGJyPjMuIFdo YXQgYXJlIHRoZXNlIG90aGVyIGNhc2VzPyBJIGNhbiB0aGluayBvbmx5IG9mIFNXSU0gaW4gaXBy b3RvIHRocmVhZCw8YnI+YnV0IGl0IGlzIG5vdCByZWxhdGVkIGF0IGFsbC48L2Rpdj48L2Rpdj48 L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5UaGUgY2FzZXMgYXJlIHRoYXQgd2Ug Y2FuIG5vdyBhZGQgbW9yZSBsb2dpYyB0byByZXF1ZXN0PC9kaXY+PGRpdj5wcm9jZXNzaW5nIGlu IGlwcm90bywgaWYgbmVlZGVkLCB3aGVuIHR4IGlzIG5vdCByZWFsbHkgbmVlZGVkIHRvIGFuc3dl ci48L2Rpdj48ZGl2PkZvciBleGFtcGxlLCBzZWUgIzQ2NDYuPC9kaXY+PGRpdj5UaGlzIGNhbiBh bHNvIHNvbHZlIHNvbWUgcHJvYmxlbXMgd2l0aCBpbXByb3BlciB0eCBhbnN3ZXJzLiZuYnNwOzwv ZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2 OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1o ZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0OyBUaGlzIHBhdGNoIGFsbG93 cyBpcHJvdG8gdG8gYWNjZXB0IGNvbm5lY3Rpb24gYW5kIHNlbmQgZ3JlZXRpbmcgYnk8YnI+Jmd0 OyBpdHNlbGYuIFRoZSBjb25uZWN0aW9uIGlzIGluaXRpYWxpemVkIGluIHR4IHRocmVhZCB3aGVu IHRoZSByZWFsPGJyPiZndDsgcmVxdWVzdCBjb21lcyB0aHJvdWdoIGlwcm90b19tc2dfZGVjb2Rl KCkuIEluIGNhc2UgcmVxdWVzdCB0eXBlIHdhcyBub3Q8YnI+Jmd0OyByZWNvZ25pemVkIHdlIGNh biBhbHNvIHNlbmQgcmVwbHkgd2l0aCBhbiBlcnJvciB3aXRob3V0IHVzaW5nIHR4LiBJdCBpczxi cj4mZ3Q7IHBsYW5uZWQgdG8gYWRkIG1vcmUgaXByb3RvIGxvZ2ljIHRvIHByZXZlbnQgZXh0cmEg aW50ZXJhY3Rpb24gd2l0aDxicj4mZ3Q7IHR4IHRocmVhZC4gVGhpcyBwYXRjaCBhbHJlYWR5IHRv IHNvbWUgZXh0ZW50IHNvbHZlcyBkZXNjcmlwdG9ycyBsZWFrYWdlPGJyPiZndDsgcHJvYmxlbSBh cyBmYXIgYXMgY29ubmVjdGlvbiBlc3RhYmxpc2hlcyBhbmQgc3RheXMgaW4gZmV0Y2hfc2NoZW1h PGJyPiZndDsgc3RhdGUgd2hpbGUgdHggdGhyZWFkIGlzIHVucmVzcG9uc2l2ZS48YnI+Jmd0OyBU aGUgb3RoZXIgdXNlciB2aXNpYmxlIGNoYW5nZSBpcyB0aGF0IG9uX2Nvbm5lY3QgdHJpZ2dlcnMg d29uJ3QgcnVuIG9uPGJyPiZndDsgY29ubmVjdGlvbnMgdGhhdCBkb24ndCBwcm92aWRlIGFueSBp bnB1dCwgYXMgcmVmbGVjdGVkIGluPGJyPiZndDsgYmFkX3RyaWdnZXIudGVzdC5weS48YnI+Jmd0 Ozxicj4mZ3Q7IFBhcnQgb2YgIzM3NzY8YnI+Jmd0Ozxicj4mZ3Q7IEBUYXJhbnRvb2xCb3QgZG9j dW1lbnQ8YnI+Jmd0OyBUaXRsZTogaXByb3RvOiBvbl9jb25uZWN0IHRyaWdnZXJzIGV4ZWN1dGlv bjxicj4mZ3Q7IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3Igb25fY29ubmVjdCB0cmlnZ2Vy cyB0byByZWZsZWN0IHRoYXQgdGhleTxicj4mZ3Q7IGFyZSBub3cgYmVpbmcgZXhlY3V0ZWQgb25s eSB3aXRoIHRoZSBmaXJzdCByZXF1ZXN0LiBUaG91Z2ggdGhlIHRyaWdnZXJzPGJyPiZndDsgYXJl IHN0aWxsIHRoZSBmaXJzdCB0aGluZyB0byBiZSBleGVjdXRlZCBvbiBhIG5ldyBjb25uZWN0aW9u LiBXaGlsZSBpdDxicj4mZ3Q7IGlzIHF1aXRlIGEgc3ludGhldGljIGNhc2UgdG8gZXN0YWJsaXNo IGEgY29ubmVjdGlvbiB3aXRob3V0IG1ha2luZzxicj4mZ3Q7IGFueSByZXF1ZXN0cyBpdCBpcyB0 ZWNobmljYWxseSBwb3NzaWJsZSBhbmQgbm93IHlvdXIgdHJpZ2dlcnMgd29uJ3QgYmU8YnI+Jmd0 OyBleGVjdXRlZCBpbiB0aGlzIGNhc2UuIFNvbWUgcmVxdWVzdCBpcyByZXF1aXJlZCB0byBzdGFy dCB0aGVpcjxicj4mZ3Q7IGV4ZWN1dGlvbi48YnI+PGJyPjQuIEkgYW0gbm90IHN1cmUgSSB1bmRl cnN0YW5kLiBBY2NvcmRpbmcgdG8gMzc3NiB0aGVyZSB3YXMgYSBwcm9ibGVtLCB0aGF0PGJyPnRo ZSBjb25uZWN0aW9ucyB3ZXJlIG1hZGUuIFNvIHRoZXkgZGlkbid0IGRvIGFueSByZXF1ZXN0cz8g QW5kIHRoZTxicj5jYXNlIGlzIG5vdCB0aGF0IHN5bnRldGljIGFzIGl0IHNlZW1zPzwvZGl2Pjwv ZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PlRoZXkgZGlkbuKAmXQgbWFr ZSBhbnkgcmVxdWVzdHMganVzdCBiZWNhdXNlIHRoZXkgd2VyZW7igJl0IGV2ZW4gZ3JlZXRlZC48 L2Rpdj48ZGl2Pkluc3RlYWQgdGhleSB3ZXJlIHJlY29ubmVjdGluZyBhbGwgdGhlIHRpbWUuIEFz IHNvb24gYXMgdGhleSBhcmUgZ3JlZXRlZDwvZGl2PjxkaXY+dGhleSBhcmUgc2VuZGluZyByZXF1 ZXN0cy48L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQg IzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFz cz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPldoYXQgd2FzIHRoZSBw cm9ibGVtIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBiZWhhdmlvdXI/IEZvciBleGFtcGxlLDxi cj55b3UgY291bGQgbWFrZSB0aGUgb25fY29ubmVjdCBleGVjdXRpb24gZGVsYXllZC4gVFggdGhy ZWFkIGNvdWxkIHRlbGw8YnI+d2hlbiByZWNvdmVyeSBpcyBkb25lLCBhbmQgaXByb3RvIHdvdWxk IHNlbmQgdGhlIHBlbmRpbmcgY29ubmVjdGlvbnMgdG8gaXQuPC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+SSB0aGluayB3ZSBkb27igJl0IHJlYWxseSBuZWVk IHRvIGRlYWwgd2l0aCB0aGUgY29ubmVjdGlvbnMgdGhhdCBkb27igJl0IHNlbmQgcmVxdWVzdHMu PC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3 QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9Impz LWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4mZ3Q7IHNyYy9ib3gvaXByb3Rv LmNjIHwgMzE3ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tPGJyPiZndDsgdGVzdC9i b3gtcHkvYmFkX3RyaWdnZXIucmVzdWx0IHwgMSArPGJyPiZndDsgdGVzdC9ib3gtcHkvYmFkX3Ry aWdnZXIudGVzdC5weSB8IDIyICsrLTxicj4mZ3Q7IHRlc3Qvc3FsL3ByZXBhcmVkLnJlc3VsdCB8 IDQgKzxicj4mZ3Q7IHRlc3Qvc3FsL3ByZXBhcmVkLnRlc3QubHVhIHwgMSArPGJyPiZndDsgNSBm aWxlcyBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKTxicj4mZ3Q7 PGJyPiZndDsgZGlmZiAtLWdpdCBhL3NyYy9ib3gvaXByb3RvLmNjIGIvc3JjL2JveC9pcHJvdG8u Y2M8YnI+Jmd0OyBpbmRleCBiOGY2NWU1ZWMuLjlmOThmY2U4NiAxMDA2NDQ8YnI+Jmd0OyAtLS0g YS9zcmMvYm94L2lwcm90by5jYzxicj4mZ3Q7ICsrKyBiL3NyYy9ib3gvaXByb3RvLmNjPGJyPiZn dDsgQEAgLTQ2Myw2ICs0NzQsNyBAQCBzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb248YnI+Jmd0OyBz dHJ1Y3QgZXZfaW8gb3V0cHV0Ozxicj4mZ3Q7IC8qKiBMb2dpY2FsIHNlc3Npb24uICovPGJyPiZn dDsgc3RydWN0IHNlc3Npb24gKnNlc3Npb247PGJyPiZndDsgKyBib29sIGluaXRfZmFpbGVkOzxi cj48YnI+NS4gRmxhZ3MgbmVlZCAnaXNfJyBwcmVmaXguPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+UmlnaHQsIG9rLiZuYnNwO0RvbmUgaW4gdjQuPC9kaXY+ PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1h cmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBl ciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj42LiBXaGF0IGlzIHRoaXM/IFdoeSBpcyBp dCBuZWVkZWQ/IFVzdWFsbHkgd2UgbGVhdmUgY29tbWVudHM8YnI+dG8gZWFjaCBzdHJ1Y3QgbWVt YmVyLiBPdGhlcndpc2UgaXQgaXMgaGFyZCB0byB1bmRlcnN0YW5kIHdoeTxicj5zb21lIG9mIHRo ZW0gYXJlIG5lZWRlZC48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+ PGRpdj5SaWdodCwgYWRkZWQgdGhlIGNvbW1lbnQgaW4gdjQuPC9kaXY+PGRpdj48YmxvY2txdW90 ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRk aW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1z ZyI+PGRpdj48ZGl2Pjxicj43LiBUaGUgZmllbGQgaXMgYWNjZXNzZWQgZnJvbSB0eCB0aHJlYWQg b25seSwgYW5kIGlzIGNsb3NlIHRvPGJyPmZpZWxkcyBtdXRhdGVkIGZyb20gaXByb3RvIHRocmVh ZC4gVGhhdCBsZWFkcyB0byBmYWxzZS1zaGFyaW5nPGJyPnByb2JsZW0uIFBsZWFzZSwgbW92ZSBp dCB0byBpcHJvdG9fY29ubmVjdGlvbi50eCBzdWItc3RydWN0LjwvZGl2PjwvZGl2PjwvZGl2Pjwv ZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PlJpZ2h0ISBGaXhlZCBpbiB2NC48L2Rpdj48ZGl2 PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2lu OjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpz LXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPiZndDsgZXZfbG9vcCAqbG9vcDs8YnI+Jmd0OyAv Kio8YnI+Jmd0OyAqIFByZS1hbGxvY2F0ZWQgZGlzY29ubmVjdCBtc2cuIElzIHNlbnQgcmlnaHQg YWZ0ZXI8YnI+Jmd0OyBAQCAtNjc3LDkgKzcwMCwxOSBAQCBpcHJvdG9fY29ubmVjdGlvbl9jbG9z ZShzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbik8YnI+Jmd0OyAqIGlzIGRvbmUgb25seSBv bmNlLjxicj4mZ3Q7ICovPGJyPiZndDsgY29uLSZndDtwX2lidWYtJmd0O3dwb3MgLT0gY29uLSZn dDtwYXJzZV9zaXplOzxicj4mZ3Q7IC0gY3BpcGVfcHVzaCgmYW1wO3R4X3BpcGUsICZhbXA7Y29u LSZndDtkaXNjb25uZWN0X21zZyk7PGJyPiZndDsgYXNzZXJ0KGNvbi0mZ3Q7c3RhdGUgPT0gSVBS T1RPX0NPTk5FQ1RJT05fQUxJVkUpOzxicj4mZ3Q7IGNvbi0mZ3Q7c3RhdGUgPSBJUFJPVE9fQ09O TkVDVElPTl9DTE9TRUQ7PGJyPiZndDsgKyBybGlzdF9kZWwoJmFtcDtjb24tJmd0O2luX3N0b3Bf bGlzdCk7PGJyPiZndDsgKyBpZiAoY29uLSZndDtzZXNzaW9uICE9IE5VTEwpIHs8YnI+Jmd0OyAr IGNwaXBlX3B1c2goJmFtcDt0eF9waXBlLCAmYW1wO2Nvbi0mZ3Q7ZGlzY29ubmVjdF9tc2cpOzxi cj4mZ3Q7ICsgfSBlbHNlIHs8YnI+Jmd0OyArIC8qPGJyPiZndDsgKyAqIEluIGNhc2Ugc2Vzc2lv biB3YXMgbm90IGNyZWF0ZWQgd2UgY2FuIHNhZmVseTxicj4mZ3Q7ICsgKiB0cnkgdG8gc3RhcnQg ZGVzdHJveSBub3QgaW52b2x2aW5nIHR4IHRocmVhZC48YnI+Jmd0OyArICovPGJyPiZndDsgKyBp cHJvdG9fY29ubmVjdGlvbl90cnlfdG9fc3RhcnRfZGVzdHJveShjb24pOzxicj4mZ3Q7ICsgfTxi cj4mZ3Q7ICsgcmV0dXJuOzxicj48YnI+OC4gWW91IHdvdWxkbid0IG5lZWQgdGhlICdyZXR1cm4n IGFuZCB3b3VsZG4ndCBuZWVkIHRvIGR1cGxpY2F0ZTxicj4ncmxpc3RfZGVsKCZhbXA7Y29uLSZn dDtpbl9zdG9wX2xpc3QpOycgY2FsbCwgaWYgeW91IHdvdWxkIG1vdmU8YnI+J3JsaXN0X2RlbCgm YW1wO2Nvbi0mZ3Q7aW5fc3RvcF9saXN0KTsnIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBmdW5j dGlvbjxicj5mcm9tIGl0cyBlbmQuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3Rl PjwvZGl2PjxkaXY+UmlnaHQsIGRvbmUmbmJzcDtpbiB2NC48L2Rpdj48ZGl2PjxibG9ja3F1b3Rl IHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRp bmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNn Ij48ZGl2PjxkaXY+PGJyPiZndDsgfSBlbHNlIGlmIChjb24tJmd0O3N0YXRlID09IElQUk9UT19D T05ORUNUSU9OX1BFTkRJTkdfREVTVFJPWSkgezxicj4mZ3Q7IGlwcm90b19jb25uZWN0aW9uX3Ry eV90b19zdGFydF9kZXN0cm95KGNvbik7PGJyPiZndDsgfSBlbHNlIHs8YnI+Jmd0OyBAQCAtODA5 LDYgKzg0Miw3IEBAIGlwcm90b19lbnF1ZXVlX2JhdGNoKHN0cnVjdCBpcHJvdG9fY29ubmVjdGlv biAqY29uLCBzdHJ1Y3QgaWJ1ZiAqaW4pPGJyPiZndDsgYXNzZXJ0KHJsaXN0X2VtcHR5KCZhbXA7 Y29uLSZndDtpbl9zdG9wX2xpc3QpKTs8YnI+Jmd0OyBpbnQgbl9yZXF1ZXN0cyA9IDA7PGJyPiZn dDsgYm9vbCBzdG9wX2lucHV0ID0gZmFsc2U7PGJyPiZndDsgKyBib29sIG9idWZfaW5faXByb3Rv ID0gKGNvbi0mZ3Q7c2Vzc2lvbiA9PSBOVUxMKTs8YnI+PGJyPjkuIFdlIGFsd2F5cyBuYW1lIGZs YWdzIHN0YXJ0aW5nIGZyb20gJ2lzXycgcHJlZml4IG9yIGEgc2ltaWxhciBvbmUgbGlrZSAnaGFz XycsPGJyPidkb2VzXycuIFBsZWFzZSwgZm9sbG93IHRoYXQgYWdyZWVtZW50LjwvZGl2PjwvZGl2 PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PkFsbCByaWdodCwgYWRkZWQgaW4g djQuPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMw ODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9 ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4mZ3Q7IGNvbnN0IGNoYXIg KmVycm1zZzs8YnI+Jmd0OyB3aGlsZSAoY29uLSZndDtwYXJzZV9zaXplICE9IDAgJmFtcDsmYW1w OyAhc3RvcF9pbnB1dCkgezxicj4mZ3Q7IGlmIChpcHJvdG9fY2hlY2tfbXNnX21heCgpKSB7PGJy PiZndDsgQEAgLTEzMTQsMTMgKzEzNjcsMjQgQEAgaXByb3RvX21zZ19kZWNvZGUoc3RydWN0IGlw cm90b19tc2cgKm1zZywgY29uc3QgY2hhciAqKnBvcywgY29uc3QgY2hhciAqcmVxZW5kLDxicj4m Z3Q7ICh1aW50MzJfdCkgdHlwZSk7PGJyPiZndDsgZ290byBlcnJvcjs8YnI+Jmd0OyB9PGJyPiZn dDsgLSByZXR1cm47PGJyPiZndDsgKyByZXR1cm4gMDs8YnI+Jmd0OyBlcnJvcjo8YnI+Jmd0OyAv KiogTG9nIGFuZCBzZW5kIHRoZSBlcnJvci4gKi88YnI+Jmd0OyBkaWFnX2xvZygpOzxicj4mZ3Q7 IC0gZGlhZ19jcmVhdGUoJmFtcDttc2ctJmd0O2RpYWcpOzxicj4mZ3Q7IC0gZGlhZ19tb3ZlKCZh bXA7ZmliZXIoKS0mZ3Q7ZGlhZywgJmFtcDttc2ctJmd0O2RpYWcpOzxicj4mZ3Q7IC0gY21zZ19p bml0KCZhbXA7bXNnLSZndDtiYXNlLCBlcnJvcl9yb3V0ZSk7PGJyPiZndDsgKyBpZiAobXNnLSZn dDtjb25uZWN0aW9uLSZndDtzZXNzaW9uICE9IE5VTEwpIHs8YnI+Jmd0OyArIGRpYWdfY3JlYXRl KCZhbXA7bXNnLSZndDtkaWFnKTs8YnI+Jmd0OyArIGRpYWdfbW92ZSgmYW1wO2ZpYmVyKCktJmd0 O2RpYWcsICZhbXA7bXNnLSZndDtkaWFnKTs8YnI+Jmd0OyArIGNtc2dfaW5pdCgmYW1wO21zZy0m Z3Q7YmFzZSwgZXJyb3Jfcm91dGUpOzxicj4mZ3Q7ICsgcmV0dXJuIDE7PGJyPjxicj4xMC4gV2h5 IGRvIHlvdSBuZWVkIDMgcmV0dXJuIHZhbHVlcz8gWW91IG9ubHkgY2hlY2sgZm9yIC0xLiBTbyB5 b3U8YnI+Y291bGQgcmV0dXJuIDAgaGVyZSBsaWtlIGl0IHdhcyBiZWZvcmUsIGFuZCAtMSBiZWxv dy4gSW4gdGhlPGJyPmNhbGxpbmcgY29kZSB5b3Ugd291bGQgY2hlY2sgIT0gMCBsaWtlIHdlIGRv IGV2ZXJ5d2hlcmUuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxk aXY+V2VsbCwgdGhlIGlkZWEgd2FzIHRoYXQgd2UgaGF2ZSAyIGRpZmZlcmVudCBlcnJvciBjYXNl cy4gQnV0IGFjdHVhbGx5PC9kaXY+PGRpdj5pdCBzaG91bGQgYmU6IDAgaWYgdGhlIHJvdXRlIHdh cyBpbml0ZWQuIC0xIG90aGVyd2lzZS4gTm93Jm5ic3A7aXQgaXMgbGlrZSB0aGF0LjwvZGl2Pjxk aXY+Rml4ZWQgaW4gdjQuPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6 MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2 PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxicj4mZ3Q7 ICsgfTxicj4mZ3Q7ICsgLyo8YnI+Jmd0OyArICogSW4gY2FzZSBzZXNzaW9uIHdhcyBub3QgY3Jl YXRlZCB3ZSBjYW4gcHJvY2VzcyBlcnJvciBwYXRoPGJyPiZndDsgKyAqIHdpdGhvdXQgdHggdGhy ZWFkLjxicj4mZ3Q7ICsgKi88YnI+Jmd0OyArIHR4X2FjY2VwdF93cG9zKG1zZy0mZ3Q7Y29ubmVj dGlvbiwgJmFtcDttc2ctJmd0O3dwb3MpOzxicj4mZ3Q7ICsgdHhfcmVwbHlfZXJyb3IobXNnKTs8 YnI+PGJyPjExLiBUaGVyZSBpcyBhIG5hbWluZyBjb252ZW50aW9uLCB0aGF0IGFsbCB0eF8gZnVu Y3Rpb25zIGFyZSBjYWxsZWQgaW48YnI+VFggdGhyZWFkIGFsd2F5cy4gQWxsIG5ldF8gYW5kIGlw cm90b18gZnVuY3Rpb25zIGFyZSBjYWxsZWQgaW4gSVByb3RvPGJyPnRocmVhZC4gTGV0cyBub3Qg dmlvbGF0ZSB0aGUgcnVsZSBhbmQgb2JmdXNjYXRlIHRoZSBpcHJvdG8uY2MgY29kZTxicj5ldmVu IG1vcmUgdGhhdCBpdCBpcy4gUGxlYXNlLCBjb21lIHVwIHdpdGggbmV3IG5hbWVzIHJlZmxlY3Rp bmcgd2hlcmU8YnI+dGhlIGZ1bmN0aW9ucyBhcmUgdXNlZC4gT3IgYXQgbGVhc3Qgbm90IHNwZWNp ZnlpbmcgaXQgYXMgdHhfLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rp dj48ZGl2PldlbGwsIHRoaXMgY29udmVudGlvbiBpcyBhbHJlYWR5IGJyb2tlbiB0byBzb21lIGV4 dGVudC4gRm9yIGV4YW1wbGUsPC9kaXY+PGRpdj50eF9yZXBseV9lcnJvcigpIGl0c2VsZiBjYWxs cyZuYnNwOzxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDgsIDgsIDgpOyBmb250LWZhbWlseTogJnF1 b3Q7SmV0QnJhaW5zIE1vbm8mcXVvdDssIG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjhwdDsiPmlw cm90b19yZXBseV9lcnJvcigpIGFuZDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xv cjogcmdiKDgsIDgsIDgpOyBmb250LWZhbWlseTogJnF1b3Q7SmV0QnJhaW5zIE1vbm8mcXVvdDss IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjhwdDsiPmlwcm90b193cG9zX2NyZWF0ZSgpLiB0eF9w cm9jZXNzX3NxbCgpIGNhbGxzJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDgs IDgsIDgpOyBmb250LWZhbWlseTogJnF1b3Q7SmV0QnJhaW5zIE1vbm8mcXVvdDssIG1vbm9zcGFj ZTsgZm9udC1zaXplOiA5LjhwdDsiPmlwcm90b19yZXBseV9zcWwoKS48L3NwYW4+PGJyPlRob3Vn aCBpIGFncmVlIHRoYXQgaXQgaXMgYSBnb29kIGlkZWEgdG8gZm9sbG93IHRoZSBjb252ZW50aW9u LiBJIGRlY2lkZWQgdG88L2Rpdj48ZGl2PmludHJvZHVjZSByZXBseV9lcnJvcigpIGFuZCBvYnVm X2FjY2VwdF93cG9zKCkgaW4gdjQuPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVy LWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEwcHg7 Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2Pjxi cj4mZ3Q7ICsgbmV0X3NlbmRfbXNnKCZhbXA7KG1zZy0mZ3Q7YmFzZSkpOzxicj48YnI+MTIuIFRo ZSBmdW5jdGlvbiBpcyBjYWxsZWQgJ2lwcm90b19tc2dfZGVjb2RlJy4gTGV0cyBsZWF2ZSBpdCBk byBkZWNvZGluZyw8YnI+YW5kIG5vdCBzZW5kIGFueXRoaW5nIGZyb20gaXQuIEl0IGp1c3Qgdmlv bGF0ZXMgaXRzIHB1cnBvc2UgYW5kIG5hbWUuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9j a3F1b3RlPjwvZGl2PjxkaXY+UmlnaHQsIGZpeGVkIGluIHY0LiZuYnNwOzwvZGl2PjxkaXY+PGJs b2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBw eDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVh ZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0OyArIHJldHVybiAtMTs8YnI+Jmd0OyB9PGJyPiZn dDs8YnI+Jmd0OyBzdGF0aWMgdm9pZDxicj4mZ3Q7IEBAIC0xNDc4LDEzICsxNTM4LDI3IEBAIHR4 X2FjY2VwdF93cG9zKHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uLCBjb25zdCBzdHJ1Y3Qg aXByb3RvX3dwb3MgKndwb3MpPGJyPiZndDsgfTxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7IC1z dGF0aWMgaW5saW5lIHN0cnVjdCBpcHJvdG9fbXNnICo8YnI+Jmd0OyAtdHhfYWNjZXB0X21zZyhz dHJ1Y3QgY21zZyAqbSk8YnI+Jmd0OyArc3RhdGljIGlubGluZSBpbnQ8YnI+Jmd0OyArdHhfYWNj ZXB0X21zZyhzdHJ1Y3QgY21zZyAqbSwgc3RydWN0IGlwcm90b19tc2cgKiptc2cpPGJyPiZndDsg ezxicj4mZ3Q7IC0gc3RydWN0IGlwcm90b19tc2cgKm1zZyA9IChzdHJ1Y3QgaXByb3RvX21zZyAq KSBtOzxicj4mZ3Q7IC0gdHhfYWNjZXB0X3dwb3MobXNnLSZndDtjb25uZWN0aW9uLCAmYW1wO21z Zy0mZ3Q7d3Bvcyk7PGJyPiZndDsgLSB0eF9maWJlcl9pbml0KG1zZy0mZ3Q7Y29ubmVjdGlvbi0m Z3Q7c2Vzc2lvbiwgbXNnLSZndDtoZWFkZXIuc3luYyk7PGJyPiZndDsgLSByZXR1cm4gbXNnOzxi cj4mZ3Q7ICsgKm1zZyA9IChzdHJ1Y3QgaXByb3RvX21zZyAqKSBtOzxicj48YnI+MTMuIFdoeSBk byB5b3UgY2hhbmdlIHRoZSByZXR1cm4gdHlwZSBhbmQgYWRkIGFuIG91dCBwYXJhbWV0ZXI/IFlv dTxicj5jb3VsZCBqdXN0IHJldHVybiBOVUxMIGluIGNhc2Ugb2YgYW4gZXJyb3IuPC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+Tm8sIGkgY2Fu4oCZdCwgY2F1 c2UgaSB3aWxsIG5lZWQgdGhpcyZuYnNwO21zZyB0byBwcm9jZXNzIHRoZSBlcnJvci4gSSBjYW7i gJl0IGdldCBOVUxMPC9kaXY+PGRpdj5pbnN0ZWFkLjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5 bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzow IDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxk aXY+PGRpdj48YnI+Jmd0OyArIC8qPGJyPiZndDsgKyAqIEluIGNhc2UgY29ubmVjdGlvbiBpbml0 IGZhaWxlZCB3ZSBkb24ndCBuZWVkIHRvIHRyeSBhbnltb3JlLjxicj4mZ3Q7ICsgKi88YnI+Jmd0 OyArIGlmICgoKm1zZyktJmd0O2Nvbm5lY3Rpb24tJmd0O2luaXRfZmFpbGVkKTxicj4mZ3Q7ICsg cmV0dXJuIC0xOzxicj4mZ3Q7ICsgLyo8YnI+Jmd0OyArICogSW4gY2FzZSBzZXNzaW9uIHdhcyBu b3QgY3JlYXRlZCB3ZSBuZWVkIHRvIGluaXQgY29ubmVjdGlvbiBpbiB0eCBhbmQ8YnI+Jmd0OyAr ICogY3JlYXRlIGl0IGhlcmUuPGJyPiZndDsgKyAqLzxicj4mZ3Q7ICsgaWYgKCgqbXNnKS0mZ3Q7 Y29ubmVjdGlvbi0mZ3Q7c2Vzc2lvbiA9PSBOVUxMICZhbXA7JmFtcDsgdHhfaW5pdF9jb25uZWN0 KCptc2cpICE9IDApIHs8YnI+Jmd0OyArICgqbXNnKS0mZ3Q7Y29ubmVjdGlvbi0mZ3Q7aW5pdF9m YWlsZWQgPSB0cnVlOzxicj4mZ3Q7ICsgKCptc2cpLSZndDtjbG9zZV9jb25uZWN0aW9uID0gdHJ1 ZTs8YnI+Jmd0OyArIHJldHVybiAtMTs8YnI+Jmd0OyArIH08YnI+Jmd0OyArIHR4X2FjY2VwdF93 cG9zKCgqbXNnKS0mZ3Q7Y29ubmVjdGlvbiwgJmFtcDsoKm1zZyktJmd0O3dwb3MpOzxicj4mZ3Q7 ICsgdHhfZmliZXJfaW5pdCgoKm1zZyktJmd0O2Nvbm5lY3Rpb24tJmd0O3Nlc3Npb24sICgqbXNn KS0mZ3Q7aGVhZGVyLnN5bmMpOzxicj4mZ3Q7ICsgcmV0dXJuIDA7PGJyPiZndDsgfTxicj4mZ3Q7 PGJyPiZndDsgLyoqPGJyPiZndDsgQEAgLTE1MDcsNyArMTU4MSwxNCBAQCB0eF9yZXBseV9lcnJv cihzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKTxicj4mZ3Q7IHN0YXRpYyB2b2lkPGJyPiZndDsgdHhf cmVwbHlfaXByb3RvX2Vycm9yKHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IHs8YnI+Jmd0OyAtIHN0 cnVjdCBpcHJvdG9fbXNnICptc2cgPSB0eF9hY2NlcHRfbXNnKG0pOzxicj4mZ3Q7ICsgc3RydWN0 IGlwcm90b19tc2cgKm1zZzs8YnI+Jmd0OyArIC8qPGJyPiZndDsgKyAqIFdlIGRvbid0IG5lZWQg dG8gY2hlY2sgdHhfYWNjZXB0X21zZygpIHJldHVybiB2YWx1ZSBoZXJlPGJyPiZndDsgKyAqIGFz IGZhciBhcyBpZiB3ZSBtaWdodCBvbmx5IHByb2Nlc3MgaXByb3RvIGVycm9yIGluIHR4PGJyPiZn dDsgKyAqIGluIGNhc2UgY29ubmVjdGlvbiBzZXNzaW9uIGlzIGFscmVhZHkgY3JlYXRlZCBhbmQ8 YnI+Jmd0OyArICogdGh1cyB0eF9hY2NlcHRfbXNnKCkgY2FuJ3QgZmFpbC48YnI+Jmd0OyArICov PGJyPiZndDsgKyB0eF9hY2NlcHRfbXNnKG0sICZhbXA7bXNnKTs8YnI+PGJyPjE0LiBXZWxsLCBp ZiBpdCBmYWlscywgeW91IGhhdmUgbXNnID09IE5VTEwsIGFuZCB0aGUgY29kZSBiZWxvdyB3aWxs PGJyPmNyYXNoLiBPdGhlcndpc2UgaXQgc2hvdWxkIGJlIGFuIGFzc2VydGlvbiwgbm90IGp1c3Qg YSBjb21tZW50LjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2 PlJpZ2h0LCBpbnRyb2R1Y2VkIHRoZSBhc3NlcnRpb24gaW4gdjQuPC9kaXY+PGRpdj48YmxvY2tx dW90ZSBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBw YWRkaW5nOjAgMCAwIDEwcHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNn LW1zZyI+PGRpdj48ZGl2Pjxicj4mZ3Q7IHN0cnVjdCBvYnVmICpvdXQgPSBtc2ctJmd0O2Nvbm5l Y3Rpb24tJmd0O3R4LnBfb2J1Zjs8YnI+Jmd0OyBpcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBkaWFn X2xhc3RfZXJyb3IoJmFtcDttc2ctJmd0O2RpYWcpLDxicj4mZ3Q7IG1zZy0mZ3Q7aGVhZGVyLnN5 bmMsIDo6c2NoZW1hX3ZlcnNpb24pOzxicj4mZ3Q7IEBAIC0xODY1LDYgKzE5NjEsMjkgQEAgdHhf cHJvY2Vzc19yZXBsaWNhdGlvbihzdHJ1Y3QgY21zZyAqbSk8YnI+Jmd0OyB9PGJyPiZndDsgfTxi cj4mZ3Q7PGJyPiZndDsgKy8qKjxicj4mZ3Q7ICsgKiBDaGVjayBjb25uZWN0aW9uIGhlYWx0aCBh bmQgdHJ5IHRvIHNlbmQgYW4gZXJyb3IgdG8gdGhlIGNsaWVudDxicj4mZ3Q7ICsgKiBpbiBjYXNl IG9mIGludGVybmFsIGNvbm5lY3Rpb24gaW5pdCBvciBvbl9jb25uZWN0IHRyaWdnZXIgZmFpbHVy ZS48YnI+Jmd0OyArICovPGJyPiZndDsgK3N0YXRpYyBib29sPGJyPiZndDsgK2lwcm90b19jb25u ZWN0aW9uX2ZhaWwoc3RydWN0IGlwcm90b19tc2cgKm1zZyk8YnI+PGJyPjE1LiBUaGUgZnVuY3Rp b24gaXMgY2FsbGVkICdjb25uZWN0aW9uX2ZhaWwnIGFuZCBsaXRlcmFsbHkgZG9lcyBub3RoaW5n PGJyPndoZW4gdGhlIGNvbm5lY3Rpb24gaXMgZmluZS4gRG9lcyBub3QgdGhpcyBuYW1lIGxvb2sg d3JvbmcgdG8geW91PzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48 ZGl2Pk9rLCByaWdodCwgaXQgd2lsbCBiZSBpcHJvdG9fY29ubmVjdGlvbl9jaGVja192YWxpZCgp IGluIHY0LjwvZGl2PjxkaXY+PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xp ZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGluZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNs YXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ciPjxkaXY+PGRpdj48YnI+Jmd0OyArezxicj4m Z3Q7ICsgaWYgKCFtc2ctJmd0O2Nsb3NlX2Nvbm5lY3Rpb24pPGJyPiZndDsgKyByZXR1cm4gZmFs c2U7PGJyPiZndDsgKyBzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbiA9IG1zZy0mZ3Q7Y29u bmVjdGlvbjs8YnI+Jmd0OyArIGludDY0X3QgbndyID0gc2lvX3dyaXRldihjb24tJmd0O291dHB1 dC5mZCwgbXNnLSZndDt3cG9zLm9idWYtJmd0O2lvdiw8YnI+Jmd0OyArIG9idWZfaW92Y250KG1z Zy0mZ3Q7d3Bvcy5vYnVmKSk7PGJyPjxicj4xNi4gWW91IGNhbid0IGp1c3Qgd3JpdGUgdG8gYSBz b2NrZXQgd2hlbmV2ZXIgeW91IHdhbnQuIEl0IG1heSBiZTxicj5ub3Qgd3JpdGFibGUuIFBsZWFz ZSwgdXNlIGxpYmV2IGV2ZW50cyBhbmQgY2FsbGJhY2tzIHRvIHNlbmQgYW55dGhpbmcuPGJyPllv dSBjYW4gZG8gYSB3cml0ZSBvbmx5IHdoZW4geW91IGdldCBFVl9XUklURSBldmVudCBmcm9tIGxp YmV2LCB3aG88YnI+aW4gdHVybiBnZXRzIGl0IGZyb20gc2VsZWN0L3BvbGwvZXBvbGwva3F1ZXVl L3doYXRldmVyLWVsc2UtaXMtcHJvdmlkZWQ8YnI+YnkgdGhlIE9TLjwvZGl2PjwvZGl2PjwvZGl2 PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2PlJpZ2h0LiBBcyBkaXNjdXNzZWQgaW4gdm9p Y2UsIGl0IGlzIHNwZWNpYWwgZXJyb3ImbmJzcDtjYXNlLiBJbiBjYXNlIHdlIHdpbGw8L2Rpdj48 ZGl2PmRvIHRoZSBub3JtYWwgd2F5LCB3ZSB3b27igJl0IGJlIGFibGUgdG8gc2VuZCB0aGUgZXJy b3IuIEkgY2hlY2tlZCB0aGU8L2Rpdj48ZGl2PmNhc2Ugd2l0aCBiYWRfdHJpZ2dlci50ZXN0IGFu ZCBpdCBjbGVhcmx5Jm5ic3A7c2hvd3MgdGhhdCB0aGUgY2xpZW50IHdvbuKAmXQ8L2Rpdj48ZGl2 PnJlY2VpdmUmbmJzcDsmbmJzcDt0aGUgZXJyb3ImbmJzcDttZXNzYWdlIGluIGNhc2Ugd2Ugd2ls bCB0cnkgdG8gd2FpdCBmb3IgdGhlIGV2ZW50IGhlcmUsPC9kaXY+PGRpdj53aGlsZSZuYnNwO3Np b193cml0ZXYoKSBkb2VzIGl0cyBqb2IuPC9kaXY+PGRpdj48YmxvY2txdW90ZSBzdHlsZT0iYm9y ZGVyLWxlZnQ6MXB4IHNvbGlkICMwODU3QTY7IG1hcmdpbjoxMHB4OyBwYWRkaW5nOjAgMCAwIDEw cHg7Ij48ZGl2PjxkaXYgY2xhc3M9ImpzLWhlbHBlciBqcy1yZWFkbXNnLW1zZyI+PGRpdj48ZGl2 Pjxicj4mZ3Q7ICsgaWYgKG53ciAmZ3Q7IDApIHs8YnI+Jmd0OyArIC8qIENvdW50IHN0YXRpc3Rp Y3MuICovPGJyPiZndDsgKyBybWVhbl9jb2xsZWN0KHJtZWFuX25ldCwgSVBST1RPX1NFTlQsIG53 cik7PGJyPiZndDsgKyB9IGVsc2UgaWYgKG53ciAmbHQ7IDAgJmFtcDsmYW1wOyAhIHNpb193b3Vs ZGJsb2NrKGVycm5vKSkgezxicj4mZ3Q7ICsgZGlhZ19sb2coKTs8YnI+Jmd0OyArIH08YnI+Jmd0 OyArIGlwcm90b19jb25uZWN0aW9uX2Nsb3NlKGNvbik7PGJyPiZndDsgKyBpcHJvdG9fbXNnX2Rl bGV0ZShtc2cpOzxicj4mZ3Q7ICsgcmV0dXJuIHRydWU7PGJyPiZndDsgK308YnI+Jmd0OyArPGJy PiZndDsgc3RhdGljIHZvaWQ8YnI+Jmd0OyBuZXRfc2VuZF9tc2coc3RydWN0IGNtc2cgKm0pPGJy PiZndDsgezxicj4mZ3Q7IEBAIC0xOTM2LDgxICsyMDY2LDYwIEBAIG5ldF9lbmRfc3Vic2NyaWJl KHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7IC8qKjxicj4mZ3Q7IC0g KiBIYW5kc2hha2UgYSBjb25uZWN0aW9uOiBpbnZva2UgdGhlIG9uLWNvbm5lY3QgdHJpZ2dlcjxi cj4mZ3Q7IC0gKiBhbmQgcG9zc2libHkgYXV0aGVudGljYXRlLiBUcnkgdG8gc2VuZCB0aGUgY2xp ZW50IGFuIGVycm9yPGJyPiZndDsgLSAqIHVwb24gYSBmYWlsdXJlLjxicj4mZ3Q7ICsgKiBIYW5k c2hha2UgYSBjb25uZWN0aW9uOiBwcmVwYXJlIGdyZWV0aW5nIGZvciBpdC48YnI+Jmd0OyAqLzxi cj4mZ3Q7IHN0YXRpYyB2b2lkPGJyPiZndDsgLXR4X3Byb2Nlc3NfY29ubmVjdChzdHJ1Y3QgY21z ZyAqbSk8YnI+Jmd0OyAraXByb3RvX3Byb2Nlc3NfY29ubmVjdChzdHJ1Y3QgaXByb3RvX21zZyAq bXNnKTxicj4mZ3Q7IHs8YnI+Jmd0OyAtIHN0cnVjdCBpcHJvdG9fbXNnICptc2cgPSAoc3RydWN0 IGlwcm90b19tc2cgKikgbTs8YnI+Jmd0OyBzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbiA9 IG1zZy0mZ3Q7Y29ubmVjdGlvbjs8YnI+Jmd0OyBzdHJ1Y3Qgb2J1ZiAqb3V0ID0gbXNnLSZndDtj b25uZWN0aW9uLSZndDt0eC5wX29idWY7PGJyPiZndDsgLSB0cnkgeyAvKiBjb25uZWN0LiAqLzxi cj4mZ3Q7IC0gY29uLSZndDtzZXNzaW9uID0gc2Vzc2lvbl9jcmVhdGUoU0VTU0lPTl9UWVBFX0JJ TkFSWSk7PGJyPiZndDsgLSBpZiAoY29uLSZndDtzZXNzaW9uID09IE5VTEwpPGJyPiZndDsgLSBk aWFnX3JhaXNlKCk7PGJyPiZndDsgLSBjb24tJmd0O3Nlc3Npb24tJmd0O21ldGEuY29ubmVjdGlv biA9IGNvbjs8YnI+Jmd0OyAtIHR4X2ZpYmVyX2luaXQoY29uLSZndDtzZXNzaW9uLCAwKTs8YnI+ Jmd0OyAtIGNoYXIgKmdyZWV0aW5nID0gKGNoYXIgKikgc3RhdGljX2FsbG9jKElQUk9UT19HUkVF VElOR19TSVpFKTs8YnI+Jmd0OyAtIC8qIFRPRE86IGRpcnR5IHJlYWQgZnJvbSB0eCB0aHJlYWQg Ki88YnI+Jmd0OyAtIHN0cnVjdCB0dF91dWlkIHV1aWQgPSBJTlNUQU5DRV9VVUlEOzxicj4mZ3Q7 IC0gcmFuZG9tX2J5dGVzKGNvbi0mZ3Q7c2FsdCwgSVBST1RPX1NBTFRfU0laRSk7PGJyPiZndDsg LSBncmVldGluZ19lbmNvZGUoZ3JlZXRpbmcsIHRhcmFudG9vbF92ZXJzaW9uX2lkKCksICZhbXA7 dXVpZCw8YnI+Jmd0OyAtIGNvbi0mZ3Q7c2FsdCwgSVBST1RPX1NBTFRfU0laRSk7PGJyPiZndDsg LSBvYnVmX2R1cF94YyhvdXQsIGdyZWV0aW5nLCBJUFJPVE9fR1JFRVRJTkdfU0laRSk7PGJyPiZn dDsgLSBpZiAoISBybGlzdF9lbXB0eSgmYW1wO3Nlc3Npb25fb25fY29ubmVjdCkpIHs8YnI+Jmd0 OyAtIGlmIChzZXNzaW9uX3J1bl9vbl9jb25uZWN0X3RyaWdnZXJzKGNvbi0mZ3Q7c2Vzc2lvbikg IT0gMCk8YnI+Jmd0OyAtIGRpYWdfcmFpc2UoKTs8YnI+Jmd0OyAtIH08YnI+Jmd0OyArIGNoYXIg KmdyZWV0aW5nID0gKGNoYXIgKikgc3RhdGljX2FsbG9jKElQUk9UT19HUkVFVElOR19TSVpFKTs8 YnI+Jmd0OyArIC8qIFRPRE86IGRpcnR5IHJlYWQgZnJvbSB0eCB0aHJlYWQgKi88YnI+Jmd0OyAr IHN0cnVjdCB0dF91dWlkIHV1aWQgPSBJTlNUQU5DRV9VVUlEOzxicj4mZ3Q7ICsgcmFuZG9tX2J5 dGVzKGNvbi0mZ3Q7c2FsdCwgSVBST1RPX1NBTFRfU0laRSk7PGJyPjxicj4xNy4gU29ycnksIGJ1 dCB3dGY/ISBUaGlzIGRhdGEgcmlnaHQgbm93IG1heSBiZSBiZWluZyB3cml0dGVuIGJ5IFRYIHRo cmVhZCw8YnI+c28geW91IGxpdGVyYWxseSBtYXkgcmVhZCBhbmQgcmV0dXJuICpnYXJiYWdlKiBo ZXJlLiBJdCBpcyBub3QgYWNjZXB0YWJsZS48YnI+SXQgaXMgbm90IGV2ZW4gYSBzaG9ydCB0ZXJt IHNvbHV0aW9uLCBpdCBpcyBqdXN0IGEgYnVnLCBpZiB5b3UgY2FuJ3QgcHJvdmU8YnI+dGhlIHZh bHVlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgYW5kIGNvbnN0YW50IGJ5IHRoYXQgbW9tZW50Ljxi cj48YnI+SWYgbGlzdGVuIHN0YXJ0cyBiZWZvcmUgcmVjb3ZlcnksIGFuZCBVVUlEIGlzIHN0b3Jl ZCBpbiB0aGUgeGxvZ3MsIHRoZW4gaXQ8YnI+aXMgZGVmaW5pdGVseSBhIGJ1Zy48L2Rpdj48L2Rp dj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj5BcyBkaXNjdXNzZWQgaW4gdm9p Y2UsIGFjdHVhbGx5LCBldmVyeXRoaW5nIGlzIGZpbmUuIE15IGZhdWx0IHRvIGxlYXZlIHRoZTwv ZGl2PjxkaXY+d3JvbmcgY29tbWVudCBoZXJlIChJIHdhcyBub3QgdG90YWxseSBzdXJlIGV2ZXJ5 dGhpbmcgaXMgZmluZSwgYnV0IHRoZTwvZGl2PjxkaXY+Y29tbWVudCB3YXMgYWxzbyB3cm9uZyBi ZWZvcmUgbXkgcGF0Y2gpLiBJbiB2NCBpdCBpcyByZXBsYWNlZCB3aXRoPC9kaXY+PGRpdj50aGUg Y29ycmVjdCBvbmUsIHRoYXQgZXhwbGFpbnMgdGhlIHNpdHVhdGlvbi4gSGVyZSBpdCBpczo8L2Rp dj48ZGl2PjxwcmUgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsgY29sb3I6IzA4MDgw ODsgZm9udC1mYW1pbHk6J0pldEJyYWlucyBNb25vJyxtb25vc3BhY2U7IGZvbnQtc2l6ZTo5Ljhw dCI+PHNwYW4gc3R5bGU9ImNvbG9yOiM4YzhjOGM7Zm9udC1zdHlsZTppdGFsaWM7Ij4vKgo8L3Nw YW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM4YzhjOGM7Zm9udC1zdHlsZTppdGFsaWM7Ij4gKiBJTlNU QU5DRV9VVUlEIGlzIGd1YXJhbnRlZWQgdG8gYmUgaW5pdGVkIGJlZm9yZSB0aGlzIG1vbWVudC4K PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojOGM4YzhjO2ZvbnQtc3R5bGU6aXRhbGljOyI+ICog V2Ugc3RhcnQgbGlzdGVuaW5nIGVpdGhlciBpbiBsb2NhbF9yZWNvdmVyeSgpIG9yIGJvb3RzdHJh cCgpLgo8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiM4YzhjOGM7Zm9udC1zdHlsZTppdGFsaWM7 Ij4gKiBUaGUgSU5TVEFOQ0VfVVVJRCBpcyBlbnN1cmVkIHRvIGJlIGluaXRlZCBpbiB0aGUgYmVn aW5uaW5nIG9mCjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzhjOGM4Yztmb250LXN0eWxlOml0 YWxpYzsiPiAqIGJvdGggbWV0aG9kcy4gSW4gY2FzZSBvZiBsb2NhbF9yZWNvdmVyeSgpIGl0IGlz IHZlcmlmaWVkIHRoYXQKPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojOGM4YzhjO2ZvbnQtc3R5 bGU6aXRhbGljOyI+ICogSU5TVEFOQ0VfVVVJRCB3YXMgcmVhZCBmcm9tIHRoZSBzbmFwc2hvdCBp biBtZW10eF9lbmdpbmVfbmV3KCkuCjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzhjOGM4Yztm b250LXN0eWxlOml0YWxpYzsiPiAqIEluIGJvb3RzdHJhcCgpIElOU1RBTkNFX1VVSUQgaXMgZWl0 aGVyIHRha2VuIGZyb20gdGhlCjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzhjOGM4Yztmb250 LXN0eWxlOml0YWxpYzsiPiAqIGluc3RhbmNlX3V1aWQgYm94LmNmZ3t9IHBhcmFtIG9yIGNyZWF0 ZWQgb24gdGhlIHNwb3QuCjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IzhjOGM4Yztmb250LXN0 eWxlOml0YWxpYzsiPiAqLzwvc3Bhbj48L3ByZT48L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0eWxl PSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAw IDAgMTBweDsiPjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2 PjxkaXY+PGJyPiZndDsgKyBncmVldGluZ19lbmNvZGUoZ3JlZXRpbmcsIHRhcmFudG9vbF92ZXJz aW9uX2lkKCksICZhbXA7dXVpZCw8YnI+Jmd0OyArIGNvbi0mZ3Q7c2FsdCwgSVBST1RPX1NBTFRf U0laRSk7PGJyPiZndDsgKyBpZiAob2J1Zl9kdXAob3V0LCBncmVldGluZywgSVBST1RPX0dSRUVU SU5HX1NJWkUpPGJyPiZndDsgKyAhPSBJUFJPVE9fR1JFRVRJTkdfU0laRSkgezxicj4mZ3Q7ICsg ZGlhZ19zZXQoT3V0T2ZNZW1vcnksIElQUk9UT19HUkVFVElOR19TSVpFLDxicj4mZ3Q7ICsgImdy ZWV0aW5nIG9idWYiLCAiZHVwIik7PGJyPiZndDsgKyBpcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBk aWFnX2xhc3RfZXJyb3IoJmFtcDtmaWJlcigpLSZndDtkaWFnKSw8YnI+Jmd0OyArIG1zZy0mZ3Q7 aGVhZGVyLnN5bmMsIDo6c2NoZW1hX3ZlcnNpb24pOzxicj4mZ3Q7IGlwcm90b193cG9zX2NyZWF0 ZSgmYW1wO21zZy0mZ3Q7d3Bvcywgb3V0KTs8YnI+Jmd0OyAtIH0gY2F0Y2ggKEV4Y2VwdGlvbiAq ZSkgezxicj4mZ3Q7IC0gdHhfcmVwbHlfZXJyb3IobXNnKTs8YnI+Jmd0OyBtc2ctJmd0O2Nsb3Nl X2Nvbm5lY3Rpb24gPSB0cnVlOzxicj4mZ3Q7IC0gfTxicj4mZ3Q7IC19PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxicj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29u dGFpbmVyIj48ZGl2IGRhdGEtc2lnbmF0dXJlLXdpZGdldD0iY29udGVudCI+PGRpdj4tLTxicj5J bHlhIEtvc2FyZXY8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L0JPRFk+PC9IVE1MPgo= ----ALT--6dA2dEb89fB373A3CcBAb6Db1B7f9C241603100994--