From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from f177.i.mail.ru (f177.i.mail.ru [94.100.178.163]) (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 A578C469719 for ; Sat, 26 Sep 2020 01:57:48 +0300 (MSK) From: =?UTF-8?B?SWx5YSBLb3NhcmV2?= MIME-Version: 1.0 Date: Sat, 26 Sep 2020 01:57:47 +0300 Reply-To: =?UTF-8?B?SWx5YSBLb3NhcmV2?= Message-ID: <1601074667.81876780@f177.i.mail.ru> Content-Type: multipart/alternative; boundary="--ALT--b3586E0a3f00a195443791CcDcC059421601074667" In-Reply-To: <280d8634-36ce-611c-faab-c8e887c5f74c@tarantool.org> References: <20200918130942.16546-1-i.kosarev@tarantool.org> <280d8634-36ce-611c-faab-c8e887c5f74c@tarantool.org> Subject: Re: [Tarantool-patches] =?utf-8?q?=5BPATCH_v2=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?TGVvbmlkIFZhc2lsaWV2?= Cc: tarantool-patches@dev.tarantool.org ----ALT--b3586E0a3f00a195443791CcDcC059421601074667 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 CkhpIQrCoApUaGFua3MgZm9yIHRoZSByZXZpZXcuCsKgCjQgYW5zd2VycyBiZWxvdy4gRml4ZWQg YWxsIHlvdXIgY29tbWVudHMgaW7CoHYzLMKgcHVzaGVkICYgc2VudCB0byB0aGUgbmV4dCByZXZp ZXdlci4KwqAgCj7Qn9C+0L3QtdC00LXQu9GM0L3QuNC6LCAyMSDRgdC10L3RgtGP0LHRgNGPIDIw MjAsIDE4OjUyICswMzowMCDQvtGCIExlb25pZCBWYXNpbGlldiA8bHZhc2lsaWV2QHRhcmFudG9v bC5vcmc+Ogo+wqAKPkhpISBUaGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KPgo+TEdUTS4KPgo+QWxs IGNvbW1lbnRzIGJlbG93IGFyZSBhdCB5b3VyIGRpc2NyZXRpb246Cj4KPk9uIDkvMTgvMjAgNDow OSBQTSwgSWx5YSBLb3NhcmV2IHdyb3RlOgo+PiBPbiBjb25uZWN0aW9uLCBhbiBldmlvIHNlcnZp Y2UgY2FsbGJhY2sgaXMgaW52b2tlZCB0byBhY2NlcHQgaXQuIFRoZQo+PiBuZXh0IHN0ZXAgYWZ0 ZXIgYWNjZXB0aW9uIHdhcyB0byBwcm9jZXNzIGNvbm5lY3Rpb24gdG8gdHggdGhyZWFkCj4+IHRo cm91Z2ggY2J1cy4gVGhpcyBtZWFudCB0aGF0IGFueSBjb25uZWN0aW9uIGludGVyYWN0aW9uIGlu dm9sdmVzCj4+IHR4IHRocmVhZCBldmVuIGJlZm9yZSB3ZSBnZXQgdG8gZGVjb2RlIHdoYXQgZG9l cyB0aGUgY2xpZW50IHdhbnQKPj4gZnJvbSB1cy4gQ29uc2VxdWVudGx5LCBhIG51bWJlciBvZiBw cm9ibGVtcyBhcHBlYXJzLiBUaGUgbWFpbiBvbmUKPj4gaXMgdGhhdCB3ZSBtaWdodCBnZXQgZGVz Y3JpcHRvciBsZWFrIGluIGNhc2Ugb2YgdW5yZXNwb25zaXZlIHR4IHRocmVhZAo+PiAoZm9yIGV4 YW1wbGUsIHdoZW4gYnVpbGRpbmcgc2Vjb25kYXJ5IGluZGV4KS4gVGhlcmUgYXJlIHNvbWUgb3Ro ZXIKPj4gY2FzZXMgd2hlcmUgd2UgbWlnaHQgbm90IHdhbnQgdG8gc3BlbmQgcHJlY2lvdXMgdHgg dGltZSB0byBwcm9jZXNzCj4+IHRoZSBjb25uZWN0aW9uIGluIGNhc2UgaXByb3RvIGNhbiBkbyBp dCBhbGwgYWxvbmUuCj4+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 dGlvbi4KPj4gLS0tCj4+IEJyYW5jaDogIGh0dHBzOi8vZ2l0aHViLmNvbS90YXJhbnRvb2wvdGFy YW50b29sL3RyZWUvaS5rb3NhcmV2L2doLTM3NzYtaGFuZGxpbmctY29ubmVjdGlvbnMtaW4taXBy b3RvCj4+IElzc3VlOiAgaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvaXNz dWVzLzM3NzYKPj4KPj4gQENoYW5nZUxvZzoKPj4gKiBNYWtlIGlwcm90byB0aHJlYWQgbW9yZSBp bmRlcGVuZGVudCBmcm9tIHR4IChnaC0zNzc2KS4KPgo+LSBDaGFuZ2Vsb2cgYWJvdXQgY2hhbmdl cyB2aXNpYmxlIHRvIHRoZSB1c2VyLiBJIHdvdWxkIHN1Z2dlc3Qgd3JpdGluZwo+YWJvdXQgb25f Y29ubmVjdCB0cmlnZ2VycyBoZXJlLiBvbl9kaXNjb25uZWN0IHRyaWdnZXJzIHdpbGwgYWxzbyBu b3QKPndvcmsgaWYgdGhlcmUgd2FzIG5vdCBvbmUgbWVzc2FnZSBoYXMgYmVlbiBzZW50LCBhcyBJ IHVuZGVyc3RhbmQgaXQuCiogIApSaWdodCwgaSB0aG91Z2h0IGl0IGlzIGdvaW5nIHRvIGJlIHRv byBsb25nIGZvciB0aGUgQ2hhbmdlTG9nLiBCdXQgYWN0dWFsbHkgaXQgc2hvdWxkIGJlIGhlcmUu Cj4KPj4KPj4gQ2hhbmdlcyBpbiB2MjoKPj4gLSBkb2Nib3QgcmVxdWVzdCBwcm92aWRlZAo+PiAt IENoYW5nZUxvZyBwcm92aWRlZAo+PiAtIG5ldF9zZW5kX21zZygpIHVzZWQgaW5zdGVhZCBvZiBu ZXRfc2VuZF9lcnJvcigpIHdoZXJlIG5lZWRlZAo+PiAtIGVycm9yIGNhc2VzIG1hZGUgY2xlYXIg aW4gaXByb3RvX21zZ19kZWNvZGUoKQo+PiAtIHJlcGxhY2VkIG5ldF9jaGVja19jb25uZWN0aW9u KCkgd2l0aCBpcHJvdG9fY29ubmVjdGlvbl9mYWlsKCkgcHJlZGljYXRlCj4+IC0gaW1wcm92ZWQg dHggc2Vzc2lvbiBpbml0aWFsaXphdGlvbiBmYWlsIHByb2Nlc3NpbmcgdG8gYXZvaWQgZXh0cmEg dHJpZXMKPj4gLSBmaXhlZCBvYnVmX2R1cCgpIGZhaWwgcHJvY2Vzc2luZyBpbiBpcHJvdG9fcHJv Y2Vzc19jb25uZWN0KCkKPj4gLSBhZGRlZCBzb21lIGNvbW1lbnRzCj4+IC0gc29tZSBjb21tZW50 cyBzdHlsZSBmaXhlZAo+Pgo+PiBzcmMvYm94L2lwcm90by5jYyB8IDMwNCArKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLQo+PiB0ZXN0L2JveC1weS9iYWRfdHJpZ2dlci5yZXN1bHQgfCAx ICsKPj4gdGVzdC9ib3gtcHkvYmFkX3RyaWdnZXIudGVzdC5weSB8IDIyICsrLQo+PiAzIGZpbGVz IGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCspLCAxMDQgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYg LS1naXQgYS9zcmMvYm94L2lwcm90by5jYyBiL3NyYy9ib3gvaXByb3RvLmNjCj4+IGluZGV4IGI4 ZjY1ZTVlY2EuLjY3YmJkMzU3YTMgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9ib3gvaXByb3RvLmNjCj4+ ICsrKyBiL3NyYy9ib3gvaXByb3RvLmNjCj4+IEBAIC0yNDUsNyArMjQ1LDcgQEAgaXByb3RvX21z Z19uZXcoc3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24pOwo+PiBzdGF0aWMgdm9pZAo+PiBp cHJvdG9fcmVzdW1lKHZvaWQpOwo+Pgo+PiAtc3RhdGljIHZvaWQKPj4gK3N0YXRpYyBpbnQKPj4g aXByb3RvX21zZ19kZWNvZGUoc3RydWN0IGlwcm90b19tc2cgKm1zZywgY29uc3QgY2hhciAqKnBv cywgY29uc3QgY2hhciAqcmVxZW5kLAo+PiBib29sICpzdG9wX2lucHV0KTsKPj4KPj4gQEAgLTI1 Niw2ICsyNTYsOSBAQCBpcHJvdG9fbXNnX2RlbGV0ZShzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKQo+ PiBpcHJvdG9fcmVzdW1lKCk7Cj4+IH0KPj4KPj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+PiAraXBy b3RvX2Nvbm5lY3Rpb25fZGVsZXRlKHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uKTsKPj4g Kwo+PiAvKioKPj4gKiBBIHNpbmdsZSBnbG9iYWwgcXVldWUgZm9yIGFsbCByZXF1ZXN0cyBpbiBh bGwgY29ubmVjdGlvbnMuIEFsbAo+PiAqIHJlcXVlc3RzIGZyb20gYWxsIGNvbm5lY3Rpb25zIGFy ZSBwcm9jZXNzZWQgY29uY3VycmVudGx5Lgo+PiBAQCAtMjgwLDYgKzI4MywxMSBAQCBzdGF0aWMg c3RydWN0IGNvcmQgbmV0X2NvcmQ7Cj4+ICogaW4gdGhlIHR4IHRocmVhZC4KPj4gKi8KPj4gc3Rh dGljIHN0cnVjdCBzbGFiX2NhY2hlIG5ldF9zbGFiYzsKPj4gKy8qKgo+PiArICogU2xhYiBjYWNo ZSB1c2VkIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3Igb3V0cHV0IG5ldHdvcmsgYnVmZmVycwo+ PiArICogaW4gdGhlIGlwcm90byB0aHJlYWQuCj4+ICsgKi8KPj4gK3N0YXRpYyBzdHJ1Y3Qgc2xh Yl9jYWNoZSBpcHJvdG9fc2xhYmM7Cj4+Cj4+IHN0cnVjdCBybWVhbiAqcm1lYW5fbmV0Owo+Pgo+ PiBAQCAtMjk4LDYgKzMwNiw5IEBAIGNvbnN0IGNoYXIgKnJtZWFuX25ldF9zdHJpbmdzW0lQUk9U T19MQVNUXSA9IHsKPj4gIlJFUVVFU1RTIiwKPj4gfTsKPj4KPj4gK3N0YXRpYyBpbnQKPj4gK3R4 X2luaXRfY29ubmVjdChzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKTsKPj4gKwo+PiBzdGF0aWMgdm9p ZAo+PiB0eF9wcm9jZXNzX2Rlc3Ryb3koc3RydWN0IGNtc2cgKm0pOwo+Pgo+PiBAQCAtNDYzLDYg KzQ3NCw3IEBAIHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbgo+PiBzdHJ1Y3QgZXZfaW8gb3V0cHV0 Owo+PiAvKiogTG9naWNhbCBzZXNzaW9uLiAqLwo+PiBzdHJ1Y3Qgc2Vzc2lvbiAqc2Vzc2lvbjsK Pj4gKyBib29sIGluaXRfZmFpbGVkOwo+PiBldl9sb29wICpsb29wOwo+PiAvKioKPj4gKiBQcmUt YWxsb2NhdGVkIGRpc2Nvbm5lY3QgbXNnLiBJcyBzZW50IHJpZ2h0IGFmdGVyCj4+IEBAIC02NTAs NyArNjYyLDE4IEBAIGlwcm90b19jb25uZWN0aW9uX3RyeV90b19zdGFydF9kZXN0cm95KHN0cnVj dCBpcHJvdG9fY29ubmVjdGlvbiAqY29uKQo+PiAqIG90aGVyIHBhcnRzIG9mIHRoZSBjb25uZWN0 aW9uLgo+PiAqLwo+PiBjb24tPnN0YXRlID0gSVBST1RPX0NPTk5FQ1RJT05fREVTVFJPWUVEOwo+ PiAtIGNwaXBlX3B1c2goJnR4X3BpcGUsICZjb24tPmRlc3Ryb3lfbXNnKTsKPj4gKyBpZiAoY29u LT5zZXNzaW9uICE9IE5VTEwpCj4+ICsgY3BpcGVfcHVzaCgmdHhfcGlwZSwgJmNvbi0+ZGVzdHJv eV9tc2cpOwo+PiArIGVsc2Ugewo+PiArIC8qCj4+ICsgKiBJbiBjYXNlIHNlc3Npb24gd2FzIG5v dCBjcmVhdGVkIHdlIGNhbiBzYWZlbHkgZGVzdHJveQo+PiArICogbm90IGludm9sdmluZyB0eCB0 aHJlYWQuIFRodXMgd2UgYWxzbyBuZWVkIHRvIGRlc3Ryb3kKPj4gKyAqIG9idWYsIHdoaWNoIHN0 aWxsIGJlbG9uZ3MgdG8gaXByb3RvIHRocmVhZC4KPj4gKyAqLwo+PiArIG9idWZfZGVzdHJveSgm Y29uLT5vYnVmWzBdKTsKPj4gKyBvYnVmX2Rlc3Ryb3koJmNvbi0+b2J1ZlsxXSk7Cj4+ICsgaXBy b3RvX2Nvbm5lY3Rpb25fZGVsZXRlKGNvbik7Cj4+ICsgfQo+PiB9Cj4+Cj4+IC8qKgo+PiBAQCAt Njc3LDkgKzcwMCwxOCBAQCBpcHJvdG9fY29ubmVjdGlvbl9jbG9zZShzdHJ1Y3QgaXByb3RvX2Nv bm5lY3Rpb24gKmNvbikKPj4gKiBpcyBkb25lIG9ubHkgb25jZS4KPj4gKi8KPj4gY29uLT5wX2li dWYtPndwb3MgLT0gY29uLT5wYXJzZV9zaXplOwo+PiAtIGNwaXBlX3B1c2goJnR4X3BpcGUsICZj b24tPmRpc2Nvbm5lY3RfbXNnKTsKPj4gYXNzZXJ0KGNvbi0+c3RhdGUgPT0gSVBST1RPX0NPTk5F Q1RJT05fQUxJVkUpOwo+PiBjb24tPnN0YXRlID0gSVBST1RPX0NPTk5FQ1RJT05fQ0xPU0VEOwo+ PiArIHJsaXN0X2RlbCgmY29uLT5pbl9zdG9wX2xpc3QpOwo+PiArIGlmIChjb24tPnNlc3Npb24g IT0gTlVMTCkKPj4gKyBjcGlwZV9wdXNoKCZ0eF9waXBlLCAmY29uLT5kaXNjb25uZWN0X21zZyk7 Cj4+ICsgZWxzZQo+PiArIC8qCj4+ICsgKiBJbiBjYXNlIHNlc3Npb24gd2FzIG5vdCBjcmVhdGVk IHdlIGNhbiBzYWZlbHkKPj4gKyAqIHRyeSB0byBzdGFydCBkZXN0cm95IG5vdCBpbnZvbHZpbmcg dHggdGhyZWFkLgo+PiArICovCj4+ICsgaXByb3RvX2Nvbm5lY3Rpb25fdHJ5X3RvX3N0YXJ0X2Rl c3Ryb3koY29uKTsKKiAgCkFkZGVkIGJyYWNrZXRzIHRvIG1ha2UgdGhpcyBpZiBzdGF0ZW1lbnTC oG1vcmUgY2xlYXIuCj4+ICsgcmV0dXJuOwo+PiB9IGVsc2UgaWYgKGNvbi0+c3RhdGUgPT0gSVBS T1RPX0NPTk5FQ1RJT05fUEVORElOR19ERVNUUk9ZKSB7Cj4+IGlwcm90b19jb25uZWN0aW9uX3Ry eV90b19zdGFydF9kZXN0cm95KGNvbik7Cj4+IH0gZWxzZSB7Cj4+IEBAIC04MDksNiArODQxLDcg QEAgaXByb3RvX2VucXVldWVfYmF0Y2goc3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24sIHN0 cnVjdCBpYnVmICppbikKPj4gYXNzZXJ0KHJsaXN0X2VtcHR5KCZjb24tPmluX3N0b3BfbGlzdCkp Owo+PiBpbnQgbl9yZXF1ZXN0cyA9IDA7Cj4+IGJvb2wgc3RvcF9pbnB1dCA9IGZhbHNlOwo+PiAr IGJvb2wgb2J1Zl9pbl9pcHJvdG8gPSAoY29uLT5zZXNzaW9uID09IE5VTEwpOwo+PiBjb25zdCBj aGFyICplcnJtc2c7Cj4+IHdoaWxlIChjb24tPnBhcnNlX3NpemUgIT0gMCAmJiAhc3RvcF9pbnB1 dCkgewo+PiBpZiAoaXByb3RvX2NoZWNrX21zZ19tYXgoKSkgewo+PiBAQCAtODUzLDEyICs4ODYs MjAgQEAgZXJyX21zZ3BhY2s6Cj4+Cj4+IG1zZy0+bGVuID0gcmVxZW5kIC0gcmVxc3RhcnQ7IC8q IHRvdGFsIHJlcXVlc3QgbGVuZ3RoICovCj4+Cj4+IC0gaXByb3RvX21zZ19kZWNvZGUobXNnLCAm cG9zLCByZXFlbmQsICZzdG9wX2lucHV0KTsKPj4gLSAvKgo+PiAtICogVGhpcyBjYW4ndCB0aHJv dywgYnV0IHNob3VsZCBub3QgYmUKPj4gLSAqIGRvbmUgaW4gY2FzZSBvZiBleGNlcHRpb24uCj4+ IC0gKi8KPj4gLSBjcGlwZV9wdXNoX2lucHV0KCZ0eF9waXBlLCAmbXNnLT5iYXNlKTsKPj4gKyBp ZiAoaXByb3RvX21zZ19kZWNvZGUobXNnLCAmcG9zLCByZXFlbmQsICZzdG9wX2lucHV0KSAhPSAt MSkgewo+PiArIGlmIChvYnVmX2luX2lwcm90bykgewo+PiArIC8qCj4+ICsgKiBJZiBzZXNzaW9u IHdhcyBub3QgY3JlYXRlZCB5ZXQgYW5kIG9idWYgaXMKPj4gKyAqIHN0aWxsIGluIGlwcm90byB3 ZSBuZWVkIHRvIGRlc3Ryb3kgaXQuIE5ldwo+PiArICogb25lIHdpbGwgYmUgY3JlYXRlZCBpbiB0 eCB0aHJlYWQgaWYgbmVlZGVkLgo+PiArICovCj4+ICsgb2J1Zl9kZXN0cm95KCZjb24tPm9idWZb MF0pOwo+PiArIG9idWZfZGVzdHJveSgmY29uLT5vYnVmWzFdKTsKPj4gKyBvYnVmX2luX2lwcm90 byA9IGZhbHNlOwo+PiArIH0KPj4gKyBjcGlwZV9wdXNoX2lucHV0KCZ0eF9waXBlLCAmbXNnLT5i YXNlKTsKPj4gKyB9Cj4+ICsKPj4gbl9yZXF1ZXN0cysrOwo+PiAvKiBSZXF1ZXN0IGlzIHBhcnNl ZCAqLwo+PiBhc3NlcnQocmVxZW5kID4gcmVxc3RhcnQpOwo+PiBAQCAtMTEwNSw4ICsxMTQ2LDgg QEAgaXByb3RvX2Nvbm5lY3Rpb25fbmV3KGludCBmZCkKPj4gZXZfaW9faW5pdCgmY29uLT5vdXRw dXQsIGlwcm90b19jb25uZWN0aW9uX29uX291dHB1dCwgZmQsIEVWX1dSSVRFKTsKPj4gaWJ1Zl9j cmVhdGUoJmNvbi0+aWJ1ZlswXSwgY29yZF9zbGFiX2NhY2hlKCksIGlwcm90b19yZWFkYWhlYWQp Owo+PiBpYnVmX2NyZWF0ZSgmY29uLT5pYnVmWzFdLCBjb3JkX3NsYWJfY2FjaGUoKSwgaXByb3Rv X3JlYWRhaGVhZCk7Cj4+IC0gb2J1Zl9jcmVhdGUoJmNvbi0+b2J1ZlswXSwgJm5ldF9zbGFiYywg aXByb3RvX3JlYWRhaGVhZCk7Cj4+IC0gb2J1Zl9jcmVhdGUoJmNvbi0+b2J1ZlsxXSwgJm5ldF9z bGFiYywgaXByb3RvX3JlYWRhaGVhZCk7Cj4+ICsgb2J1Zl9jcmVhdGUoJmNvbi0+b2J1ZlswXSwg Jmlwcm90b19zbGFiYywgaXByb3RvX3JlYWRhaGVhZCk7Cj4+ICsgb2J1Zl9jcmVhdGUoJmNvbi0+ b2J1ZlsxXSwgJmlwcm90b19zbGFiYywgaXByb3RvX3JlYWRhaGVhZCk7Cj4+IGNvbi0+cF9pYnVm ID0gJmNvbi0+aWJ1ZlswXTsKPj4gY29uLT50eC5wX29idWYgPSAmY29uLT5vYnVmWzBdOwo+PiBp cHJvdG9fd3Bvc19jcmVhdGUoJmNvbi0+d3BvcywgY29uLT50eC5wX29idWYpOwo+PiBAQCAtMTEx NCw2ICsxMTU1LDcgQEAgaXByb3RvX2Nvbm5lY3Rpb25fbmV3KGludCBmZCkKPj4gY29uLT5wYXJz ZV9zaXplID0gMDsKPj4gY29uLT5sb25nX3BvbGxfY291bnQgPSAwOwo+PiBjb24tPnNlc3Npb24g PSBOVUxMOwo+PiArIGNvbi0+aW5pdF9mYWlsZWQgPSBmYWxzZTsKPj4gcmxpc3RfY3JlYXRlKCZj b24tPmluX3N0b3BfbGlzdCk7Cj4+IC8qIEl0IG1heSBiZSB2ZXJ5IGF3a3dhcmQgdG8gYWxsb2Nh dGUgYXQgY2xvc2UuICovCj4+IGNtc2dfaW5pdCgmY29uLT5kZXN0cm95X21zZywgZGVzdHJveV9y b3V0ZSk7Cj4+IEBAIC0xMTM0LDEwICsxMTc2LDYgQEAgaXByb3RvX2Nvbm5lY3Rpb25fZGVsZXRl KHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uKQo+PiBhc3NlcnQoIWV2aW9faGFzX2ZkKCZj b24tPmlucHV0KSk7Cj4+IGFzc2VydChjb24tPnNlc3Npb24gPT0gTlVMTCk7Cj4+IGFzc2VydChj b24tPnN0YXRlID09IElQUk9UT19DT05ORUNUSU9OX0RFU1RST1lFRCk7Cj4+IC0gLyoKPj4gLSAq IFRoZSBvdXRwdXQgYnVmZmVycyBtdXN0IGhhdmUgYmVlbiBkZWxldGVkCj4+IC0gKiBpbiB0eCB0 aHJlYWQuCj4+IC0gKi8KPj4gaWJ1Zl9kZXN0cm95KCZjb24tPmlidWZbMF0pOwo+PiBpYnVmX2Rl c3Ryb3koJmNvbi0+aWJ1ZlsxXSk7Cj4+IGFzc2VydChjb24tPm9idWZbMF0ucG9zID09IDAgJiYK Pj4gQEAgLTExNzIsNiArMTIxMCw5IEBAIHR4X3JlcGx5X2Vycm9yKHN0cnVjdCBpcHJvdG9fbXNn ICptc2cpOwo+PiBzdGF0aWMgdm9pZAo+PiB0eF9yZXBseV9pcHJvdG9fZXJyb3Ioc3RydWN0IGNt c2cgKm0pOwo+Pgo+PiArc3RhdGljIHZvaWQKPj4gK3R4X2FjY2VwdF93cG9zKHN0cnVjdCBpcHJv dG9fY29ubmVjdGlvbiAqY29uLCBjb25zdCBzdHJ1Y3QgaXByb3RvX3dwb3MgKndwb3MpOwo+PiAr Cj4+IHN0YXRpYyB2b2lkCj4+IG5ldF9zZW5kX21zZyhzdHJ1Y3QgY21zZyAqbXNnKTsKPj4KPj4g QEAgLTEyNDQsNyArMTI4NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY21zZ19ob3AgZXJyb3Jf cm91dGVbXSA9IHsKPj4geyBuZXRfc2VuZF9lcnJvciwgTlVMTCB9LAo+PiB9Owo+Pgo+PiAtc3Rh dGljIHZvaWQKPj4gK3N0YXRpYyBpbnQKPj4gaXByb3RvX21zZ19kZWNvZGUoc3RydWN0IGlwcm90 b19tc2cgKm1zZywgY29uc3QgY2hhciAqKnBvcywgY29uc3QgY2hhciAqcmVxZW5kLAo+PiBib29s ICpzdG9wX2lucHV0KQo+PiB7Cj4+IEBAIC0xMzE0LDEzICsxMzU1LDI3IEBAIGlwcm90b19tc2df ZGVjb2RlKHN0cnVjdCBpcHJvdG9fbXNnICptc2csIGNvbnN0IGNoYXIgKipwb3MsIGNvbnN0IGNo YXIgKnJlcWVuZCwKPj4gKHVpbnQzMl90KSB0eXBlKTsKPgo+LSBZb3UgaGF2ZSB0aHJlZSBwb3Nz aWJsZSByZXR1cm4gdmFsdWVzLiBNYXliZSBhZGQgYSBmdW5jdGlvbgo+ZGVzY3JpcHRpb24/Ciog IApSaWdodCwgZG9uZS4KPgo+PiBnb3RvIGVycm9yOwo+PiB9Cj4+IC0gcmV0dXJuOwo+PiArIHJl dHVybiAwOwo+PiBlcnJvcjoKPj4gLyoqIExvZyBhbmQgc2VuZCB0aGUgZXJyb3IuICovCj4+IGRp YWdfbG9nKCk7Cj4+IGRpYWdfY3JlYXRlKCZtc2ctPmRpYWcpOwo+PiBkaWFnX21vdmUoJmZpYmVy KCktPmRpYWcsICZtc2ctPmRpYWcpOwo+PiAtIGNtc2dfaW5pdCgmbXNnLT5iYXNlLCBlcnJvcl9y b3V0ZSk7Cj4+ICsgaWYgKG1zZy0+Y29ubmVjdGlvbi0+c2Vzc2lvbiAhPSBOVUxMKSB7Cj4+ICsg Y21zZ19pbml0KCZtc2ctPmJhc2UsIGVycm9yX3JvdXRlKTsKPj4gKyByZXR1cm4gMTsKPj4gKyB9 Cj4+ICsgLyoKPj4gKyAqIEluIGNhc2Ugc2Vzc2lvbiB3YXMgbm90IGNyZWF0ZWQgd2UgY2FuIHBy b2Nlc3MgZXJyb3IgcGF0aAo+PiArICogd2l0aG91dCB0eCB0aHJlYWQuCj4+ICsgKi8KPj4gKyB0 eF9hY2NlcHRfd3Bvcyhtc2ctPmNvbm5lY3Rpb24sICZtc2ctPndwb3MpOwo+PiArIHN0cnVjdCBv YnVmICpvdXQgPSBtc2ctPmNvbm5lY3Rpb24tPnR4LnBfb2J1ZjsKPj4gKyBpcHJvdG9fcmVwbHlf ZXJyb3Iob3V0LCBkaWFnX2xhc3RfZXJyb3IoJm1zZy0+ZGlhZyksCj4+ICsgbXNnLT5oZWFkZXIu c3luYywgOjpzY2hlbWFfdmVyc2lvbik7Cj4+ICsgaXByb3RvX3dwb3NfY3JlYXRlKCZtc2ctPndw b3MsIG91dCk7Cj4+ICsgbmV0X3NlbmRfbXNnKCYobXNnLT5iYXNlKSk7Cj4+ICsgcmV0dXJuIC0x Owo+PiB9Cj4KPi0gSSBtZWFudCBzb21ldGhpbmcgbGlrZToKPi8qKiBMb2cgYW5kIHNlbmQgdGhl IGVycm9yLiAqLwo+ZGlhZ19sb2coKTsKPmlmIChtc2ctPmNvbm5lY3Rpb24tPnNlc3Npb24gIT0g TlVMTCkgewo+ZGlhZ19jcmVhdGUoJm1zZy0+ZGlhZyk7Cj5kaWFnX21vdmUoJmZpYmVyKCktPmRp YWcsICZtc2ctPmRpYWcpOwo+Y21zZ19pbml0KCZtc2ctPmJhc2UsIGVycm9yX3JvdXRlKTsKPnJl dHVybiAxOwo+fQo+LyoKPiogSW4gY2FzZSBzZXNzaW9uIHdhcyBub3QgY3JlYXRlZCB3ZSBjYW4g cHJvY2VzcyBlcnJvciBwYXRoCj4qIHdpdGhvdXQgdHggdGhyZWFkLgo+Ki8KPnR4X2FjY2VwdF93 cG9zKG1zZy0+Y29ubmVjdGlvbiwgJm1zZy0+d3Bvcyk7Cj5zdHJ1Y3Qgb2J1ZiAqb3V0ID0gbXNn LT5jb25uZWN0aW9uLT50eC5wX29idWY7Cj5pcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBkaWFnX2xh c3RfZXJyb3IoJmZpYmVyKCktPmRpYWcpLAo+bXNnLT5oZWFkZXIuc3luYywgOjpzY2hlbWFfdmVy c2lvbik7Cj5pcHJvdG9fd3Bvc19jcmVhdGUoJm1zZy0+d3Bvcywgb3V0KTsKPm5ldF9zZW5kX21z ZygmKG1zZy0+YmFzZSkpOwo+cmV0dXJuIC0xOwoqICAKUmlnaHQsIGnCoHNlZSzCoGnCoG1hZGUg aXQgb3ZlcmNvbXBsaWNhdGVkLiBXZSBjYW4gYWxzbyByZXBsYWNlIHRoaXMgYmxvY2s6CnN0cnVj dCBvYnVmICpvdXQgPSBtc2ctPmNvbm5lY3Rpb24tPnR4LnBfb2J1ZjsKaXByb3RvX3JlcGx5X2Vy cm9yKG91dCwgZGlhZ19sYXN0X2Vycm9yKCZmaWJlcigpLT5kaWFnKSwKwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBtc2ctPmhlYWRlci5zeW5jLCA6OnNjaGVtYV92ZXJzaW9uKTsKaXByb3Rv X3dwb3NfY3JlYXRlKCZtc2ctPndwb3MsIG91dCkgOwrCoCDCoCDCoCDCoCDCoMKgd2l0aCBhbiBl eGlzdGVudMKgZnVuY3Rpb24uCj4KPj4KPj4gc3RhdGljIHZvaWQKPj4gQEAgLTEzODIsMTAgKzE0 MzcsNiBAQCB0eF9wcm9jZXNzX2Rlc3Ryb3koc3RydWN0IGNtc2cgKm0pCj4+IHNlc3Npb25fZGVz dHJveShjb24tPnNlc3Npb24pOwo+PiBjb24tPnNlc3Npb24gPSBOVUxMOyAvKiBzYWZldHkgKi8K Pj4gfQo+PiAtIC8qCj4+IC0gKiBHb3QgdG8gYmUgZG9uZSBpbiBpcHJvdG8gdGhyZWFkIHNpbmNl Cj4+IC0gKiB0aGF0J3Mgd2hlcmUgdGhlIG1lbW9yeSBpcyBhbGxvY2F0ZWQuCj4+IC0gKi8KPj4g b2J1Zl9kZXN0cm95KCZjb24tPm9idWZbMF0pOwo+PiBvYnVmX2Rlc3Ryb3koJmNvbi0+b2J1Zlsx XSk7Cj4+IH0KPj4gQEAgLTE0NzgsMTMgKzE1MjksMjcgQEAgdHhfYWNjZXB0X3dwb3Moc3RydWN0 IGlwcm90b19jb25uZWN0aW9uICpjb24sIGNvbnN0IHN0cnVjdCBpcHJvdG9fd3BvcyAqd3BvcykK Pj4gfQo+PiB9Cj4+Cj4+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcHJvdG9fbXNnICoKPj4gLXR4 X2FjY2VwdF9tc2coc3RydWN0IGNtc2cgKm0pCj4+ICtzdGF0aWMgaW5saW5lIGludAo+PiArdHhf YWNjZXB0X21zZyhzdHJ1Y3QgY21zZyAqbSwgc3RydWN0IGlwcm90b19tc2cgKiptc2cpCj4+IHsK Pj4gLSBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gKHN0cnVjdCBpcHJvdG9fbXNnICopIG07Cj4+ IC0gdHhfYWNjZXB0X3dwb3MobXNnLT5jb25uZWN0aW9uLCAmbXNnLT53cG9zKTsKPj4gLSB0eF9m aWJlcl9pbml0KG1zZy0+Y29ubmVjdGlvbi0+c2Vzc2lvbiwgbXNnLT5oZWFkZXIuc3luYyk7Cj4+ IC0gcmV0dXJuIG1zZzsKPj4gKyAqbXNnID0gKHN0cnVjdCBpcHJvdG9fbXNnICopIG07Cj4+ICsg LyoKPj4gKyAqIEluIGNhc2UgY29ubmVjdGlvbiBpbml0IGZhaWxlZCB3ZSBkb24ndCBuZWVkIHRv IHRyeSBhbnltb3JlLgo+PiArICovCj4+ICsgaWYgKCgqbXNnKS0+Y29ubmVjdGlvbi0+aW5pdF9m YWlsZWQpCj4+ICsgcmV0dXJuIC0xOwo+PiArIC8qCj4+ICsgKiBJbiBjYXNlIHNlc3Npb24gd2Fz IG5vdCBjcmVhdGVkIHdlIG5lZWQgdG8gaW5pdCBjb25uZWN0aW9uIGluIHR4IGFuZAo+PiArICog Y3JlYXRlIGl0IGhlcmUuCj4+ICsgKi8KPj4gKyBpZiAoKCptc2cpLT5jb25uZWN0aW9uLT5zZXNz aW9uID09IE5VTEwgJiYgdHhfaW5pdF9jb25uZWN0KCptc2cpICE9IDApIHsKPj4gKyAoKm1zZykt PmNvbm5lY3Rpb24tPmluaXRfZmFpbGVkID0gdHJ1ZTsKPj4gKyAoKm1zZyktPmNsb3NlX2Nvbm5l Y3Rpb24gPSB0cnVlOwo+PiArIHJldHVybiAtMTsKPj4gKyB9Cj4+ICsgdHhfYWNjZXB0X3dwb3Mo KCptc2cpLT5jb25uZWN0aW9uLCAmKCptc2cpLT53cG9zKTsKPj4gKyB0eF9maWJlcl9pbml0KCgq bXNnKS0+Y29ubmVjdGlvbi0+c2Vzc2lvbiwgKCptc2cpLT5oZWFkZXIuc3luYyk7Cj4+ICsgcmV0 dXJuIDA7Cj4+IH0KPj4KPj4gLyoqCj4+IEBAIC0xNTA3LDcgKzE1NzIsMTQgQEAgdHhfcmVwbHlf ZXJyb3Ioc3RydWN0IGlwcm90b19tc2cgKm1zZykKPj4gc3RhdGljIHZvaWQKPj4gdHhfcmVwbHlf aXByb3RvX2Vycm9yKHN0cnVjdCBjbXNnICptKQo+PiB7Cj4+IC0gc3RydWN0IGlwcm90b19tc2cg Km1zZyA9IHR4X2FjY2VwdF9tc2cobSk7Cj4+ICsgc3RydWN0IGlwcm90b19tc2cgKm1zZzsKPj4g KyAvKgo+PiArICogV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0eF9hY2NlcHRfbXNnKCkgcmV0dXJu IHZhbHVlIGhlcmUKPj4gKyAqIGFzIGZhciBhcyBpZiB3ZSBtaWdodCBvbmx5IHByb2Nlc3MgaXBy b3RvIGVycm9yIGluIHR4Cj4+ICsgKiBpbiBjYXNlIGNvbm5lY3Rpb24gc2Vzc2lvbiBpcyBhbHJl YWR5IGNyZWF0ZWQgYW5kCj4+ICsgKiB0aHVzIHR4X2FjY2VwdF9tc2coKSBjYW4ndCBmYWlsLgo+ PiArICovCj4+ICsgdHhfYWNjZXB0X21zZyhtLCAmbXNnKTsKPj4gc3RydWN0IG9idWYgKm91dCA9 IG1zZy0+Y29ubmVjdGlvbi0+dHgucF9vYnVmOwo+PiBpcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBk aWFnX2xhc3RfZXJyb3IoJm1zZy0+ZGlhZyksCj4+IG1zZy0+aGVhZGVyLnN5bmMsIDo6c2NoZW1h X3ZlcnNpb24pOwo+PiBAQCAtMTUyNyw3ICsxNTk5LDkgQEAgdHhfaW5qZWN0X2RlbGF5KHZvaWQp Cj4+IHN0YXRpYyB2b2lkCj4+IHR4X3Byb2Nlc3MxKHN0cnVjdCBjbXNnICptKQo+PiB7Cj4+IC0g c3RydWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7Cj4+ICsgc3RydWN0IGlw cm90b19tc2cgKm1zZzsKPj4gKyBpZiAodHhfYWNjZXB0X21zZyhtLCAmbXNnKSAhPSAwKQo+PiAr IGdvdG8gZXJyb3I7Cj4+IGlmICh0eF9jaGVja19zY2hlbWEobXNnLT5oZWFkZXIuc2NoZW1hX3Zl cnNpb24pKQo+PiBnb3RvIGVycm9yOwo+Pgo+PiBAQCAtMTU1MywxNyArMTYyNywyMCBAQCBlcnJv cjoKPj4gc3RhdGljIHZvaWQKPj4gdHhfcHJvY2Vzc19zZWxlY3Qoc3RydWN0IGNtc2cgKm0pCj4+ IHsKPj4gLSBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gdHhfYWNjZXB0X21zZyhtKTsKPj4gKyBz dHJ1Y3QgaXByb3RvX21zZyAqbXNnOwo+PiArIHN0cnVjdCByZXF1ZXN0ICpyZXE7Cj4+IHN0cnVj dCBvYnVmICpvdXQ7Cj4+IHN0cnVjdCBvYnVmX3N2cCBzdnA7Cj4+IHN0cnVjdCBwb3J0IHBvcnQ7 Cj4+IGludCBjb3VudDsKPj4gaW50IHJjOwo+PiAtIHN0cnVjdCByZXF1ZXN0ICpyZXEgPSAmbXNn LT5kbWw7Cj4+ICsgaWYgKHR4X2FjY2VwdF9tc2cobSwgJm1zZykgIT0gMCkKPj4gKyBnb3RvIGVy cm9yOwo+PiBpZiAodHhfY2hlY2tfc2NoZW1hKG1zZy0+aGVhZGVyLnNjaGVtYV92ZXJzaW9uKSkK Pj4gZ290byBlcnJvcjsKPj4KPj4gdHhfaW5qZWN0X2RlbGF5KCk7Cj4+ICsgcmVxID0gJm1zZy0+ ZG1sOwo+PiByYyA9IGJveF9zZWxlY3QocmVxLT5zcGFjZV9pZCwgcmVxLT5pbmRleF9pZCwKPj4g cmVxLT5pdGVyYXRvciwgcmVxLT5vZmZzZXQsIHJlcS0+bGltaXQsCj4+IHJlcS0+a2V5LCByZXEt PmtleV9lbmQsICZwb3J0KTsKPj4gQEAgLTE2MDcsNyArMTY4NCw5IEBAIHR4X3Byb2Nlc3NfY2Fs bF9vbl95aWVsZChzdHJ1Y3QgdHJpZ2dlciAqdHJpZ2dlciwgdm9pZCAqZXZlbnQpCj4+IHN0YXRp YyB2b2lkCj4+IHR4X3Byb2Nlc3NfY2FsbChzdHJ1Y3QgY21zZyAqbSkKPj4gewo+PiAtIHN0cnVj dCBpcHJvdG9fbXNnICptc2cgPSB0eF9hY2NlcHRfbXNnKG0pOwo+PiArIHN0cnVjdCBpcHJvdG9f bXNnICptc2c7Cj4+ICsgaWYgKHR4X2FjY2VwdF9tc2cobSwgJm1zZykgIT0gMCkKPj4gKyBnb3Rv IGVycm9yOwo+PiBpZiAodHhfY2hlY2tfc2NoZW1hKG1zZy0+aGVhZGVyLnNjaGVtYV92ZXJzaW9u KSkKPj4gZ290byBlcnJvcjsKPj4KPj4gQEAgLTE2ODYsMTMgKzE3NjUsMTUgQEAgZXJyb3I6Cj4+ IHN0YXRpYyB2b2lkCj4+IHR4X3Byb2Nlc3NfbWlzYyhzdHJ1Y3QgY21zZyAqbSkKPj4gewo+PiAt IHN0cnVjdCBpcHJvdG9fbXNnICptc2cgPSB0eF9hY2NlcHRfbXNnKG0pOwo+PiAtIHN0cnVjdCBp cHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLT5jb25uZWN0aW9uOwo+PiAtIHN0cnVjdCBvYnVm ICpvdXQgPSBjb24tPnR4LnBfb2J1ZjsKPj4gKyBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnOwo+PiAr IGlmICh0eF9hY2NlcHRfbXNnKG0sICZtc2cpICE9IDApCj4+ICsgZ290byBlcnJvcjsKPj4gaWYg KHR4X2NoZWNrX3NjaGVtYShtc2ctPmhlYWRlci5zY2hlbWFfdmVyc2lvbikpCj4+IGdvdG8gZXJy b3I7Cj4+Cj4+IHRyeSB7Cj4+ICsgc3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24gPSBtc2ct PmNvbm5lY3Rpb247Cj4+ICsgc3RydWN0IG9idWYgKm91dCA9IGNvbi0+dHgucF9vYnVmOwo+PiBz dHJ1Y3QgYmFsbG90IGJhbGxvdDsKPj4gc3dpdGNoIChtc2ctPmhlYWRlci50eXBlKSB7Cj4+IGNh c2UgSVBST1RPX0FVVEg6Cj4+IEBAIC0xNzI5LDcgKzE4MTAsNyBAQCBlcnJvcjoKPj4gc3RhdGlj IHZvaWQKPj4gdHhfcHJvY2Vzc19zcWwoc3RydWN0IGNtc2cgKm0pCj4+IHsKPj4gLSBzdHJ1Y3Qg aXByb3RvX21zZyAqbXNnID0gdHhfYWNjZXB0X21zZyhtKTsKPj4gKyBzdHJ1Y3QgaXByb3RvX21z ZyAqbXNnOwo+PiBzdHJ1Y3Qgb2J1ZiAqb3V0Owo+PiBzdHJ1Y3QgcG9ydCBwb3J0Owo+PiBzdHJ1 Y3Qgc3FsX2JpbmQgKmJpbmQgPSBOVUxMOwo+PiBAQCAtMTczOCw2ICsxODE5LDggQEAgdHhfcHJv Y2Vzc19zcWwoc3RydWN0IGNtc2cgKm0pCj4+IHVpbnQzMl90IGxlbjsKPj4gYm9vbCBpc191bnBy ZXBhcmUgPSBmYWxzZTsKPj4KPj4gKyBpZiAodHhfYWNjZXB0X21zZyhtLCAmbXNnKSAhPSAwKQo+ PiArIGdvdG8gZXJyb3I7Cj4+IGlmICh0eF9jaGVja19zY2hlbWEobXNnLT5oZWFkZXIuc2NoZW1h X3ZlcnNpb24pKQo+PiBnb3RvIGVycm9yOwo+PiBhc3NlcnQobXNnLT5oZWFkZXIudHlwZSA9PSBJ UFJPVE9fRVhFQ1VURSB8fAo+PiBAQCAtMTgyNSw3ICsxOTA4LDExIEBAIGVycm9yOgo+PiBzdGF0 aWMgdm9pZAo+PiB0eF9wcm9jZXNzX3JlcGxpY2F0aW9uKHN0cnVjdCBjbXNnICptKQo+PiB7Cj4+ IC0gc3RydWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7Cj4+ICsgc3RydWN0 IGlwcm90b19tc2cgKm1zZzsKPj4gKyBpZiAodHhfYWNjZXB0X21zZyhtLCAmbXNnKSAhPSAwKSB7 Cj4+ICsgdHhfcmVwbHlfZXJyb3IobXNnKTsKPj4gKyByZXR1cm47Cj4+ICsgfQo+PiBzdHJ1Y3Qg aXByb3RvX2Nvbm5lY3Rpb24gKmNvbiA9IG1zZy0+Y29ubmVjdGlvbjsKPj4gc3RydWN0IGV2X2lv IGlvOwo+PiBjb2lvX2NyZWF0ZSgmaW8sIGNvbi0+aW5wdXQuZmQpOwo+PiBAQCAtMTg2NSw2ICsx OTUyLDI5IEBAIHR4X3Byb2Nlc3NfcmVwbGljYXRpb24oc3RydWN0IGNtc2cgKm0pCj4+IH0KPj4g fQo+Pgo+PiArLyoqCj4+ICsgKiBDaGVjayBjb25uZWN0aW9uIGhlYWx0aCBhbmQgdHJ5IHRvIHNl bmQgYW4gZXJyb3IgdG8gdGhlIGNsaWVudAo+PiArICogaW4gY2FzZSBvZiBpbnRlcm5hbCBjb25u ZWN0aW9uIGluaXQgb3Igb25fY29ubmVjdCB0cmlnZ2VyIGZhaWx1cmUuCj4+ICsgKi8KPj4gK3N0 YXRpYyBib29sCj4+ICtpcHJvdG9fY29ubmVjdGlvbl9mYWlsKHN0cnVjdCBpcHJvdG9fbXNnICpt c2cpCj4+ICt7Cj4+ICsgaWYgKCFtc2ctPmNsb3NlX2Nvbm5lY3Rpb24pCj4+ICsgcmV0dXJuIGZh bHNlOwo+PiArIHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLT5jb25uZWN0aW9u Owo+PiArIGludDY0X3QgbndyID0gc2lvX3dyaXRldihjb24tPm91dHB1dC5mZCwgbXNnLT53cG9z Lm9idWYtPmlvdiwKPj4gKyBvYnVmX2lvdmNudChtc2ctPndwb3Mub2J1ZikpOwo+PiArIGlmIChu d3IgPiAwKSB7Cj4+ICsgLyogQ291bnQgc3RhdGlzdGljcy4gKi8KPj4gKyBybWVhbl9jb2xsZWN0 KHJtZWFuX25ldCwgSVBST1RPX1NFTlQsIG53cik7Cj4+ICsgfSBlbHNlIGlmIChud3IgPCAwICYm ICEgc2lvX3dvdWxkYmxvY2soZXJybm8pKSB7Cj4+ICsgZGlhZ19sb2coKTsKPj4gKyB9Cj4+ICsg aXByb3RvX2Nvbm5lY3Rpb25fY2xvc2UoY29uKTsKPj4gKyBpcHJvdG9fbXNnX2RlbGV0ZShtc2cp Owo+PiArIHJldHVybiB0cnVlOwo+PiArfQo+PiArCj4+IHN0YXRpYyB2b2lkCj4+IG5ldF9zZW5k X21zZyhzdHJ1Y3QgY21zZyAqbSkKPj4gewo+PiBAQCAtMTg4MSw2ICsxOTkxLDkgQEAgbmV0X3Nl bmRfbXNnKHN0cnVjdCBjbXNnICptKQo+PiB9Cj4+IGNvbi0+d2VuZCA9IG1zZy0+d3BvczsKPj4K Pj4gKyBpZiAoaXByb3RvX2Nvbm5lY3Rpb25fZmFpbChtc2cpKQo+PiArIHJldHVybjsKPj4gKwo+ PiBpZiAoZXZpb19oYXNfZmQoJmNvbi0+b3V0cHV0KSkgewo+PiBpZiAoISBldl9pc19hY3RpdmUo JmNvbi0+b3V0cHV0KSkKPj4gZXZfZmVlZF9ldmVudChjb24tPmxvb3AsICZjb24tPm91dHB1dCwg RVZfV1JJVEUpOwo+PiBAQCAtMTkxMCw2ICsyMDIzLDEwIEBAIG5ldF9lbmRfam9pbihzdHJ1Y3Qg Y21zZyAqbSkKPj4gc3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24gPSBtc2ctPmNvbm5lY3Rp b247Cj4+Cj4+IG1zZy0+cF9pYnVmLT5ycG9zICs9IG1zZy0+bGVuOwo+PiArCj4+ICsgaWYgKGlw cm90b19jb25uZWN0aW9uX2ZhaWwobXNnKSkKPj4gKyByZXR1cm47Cj4+ICsKPj4gaXByb3RvX21z Z19kZWxldGUobXNnKTsKPj4KPj4gYXNzZXJ0KCEgZXZfaXNfYWN0aXZlKCZjb24tPmlucHV0KSk7 Cj4+IEBAIC0xOTI4LDYgKzIwNDUsMTAgQEAgbmV0X2VuZF9zdWJzY3JpYmUoc3RydWN0IGNtc2cg Km0pCj4+IHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLT5jb25uZWN0aW9uOwo+ Pgo+PiBtc2ctPnBfaWJ1Zi0+cnBvcyArPSBtc2ctPmxlbjsKPj4gKwo+PiArIGlmIChpcHJvdG9f Y29ubmVjdGlvbl9mYWlsKG1zZykpCj4+ICsgcmV0dXJuOwo+PiArCj4+IGlwcm90b19tc2dfZGVs ZXRlKG1zZyk7Cj4+Cj4+IGFzc2VydCghIGV2X2lzX2FjdGl2ZSgmY29uLT5pbnB1dCkpOwo+PiBA QCAtMTkzNiw4MSArMjA1Nyw2MCBAQCBuZXRfZW5kX3N1YnNjcmliZShzdHJ1Y3QgY21zZyAqbSkK Pj4gfQo+Pgo+PiAvKioKPj4gLSAqIEhhbmRzaGFrZSBhIGNvbm5lY3Rpb246IGludm9rZSB0aGUg b24tY29ubmVjdCB0cmlnZ2VyCj4+IC0gKiBhbmQgcG9zc2libHkgYXV0aGVudGljYXRlLiBUcnkg dG8gc2VuZCB0aGUgY2xpZW50IGFuIGVycm9yCj4+IC0gKiB1cG9uIGEgZmFpbHVyZS4KPj4gKyAq IEhhbmRzaGFrZSBhIGNvbm5lY3Rpb246IHByZXBhcmUgZ3JlZXRpbmcgZm9yIGl0Lgo+PiAqLwo+ PiBzdGF0aWMgdm9pZAo+PiAtdHhfcHJvY2Vzc19jb25uZWN0KHN0cnVjdCBjbXNnICptKQo+PiAr aXByb3RvX3Byb2Nlc3NfY29ubmVjdChzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKQo+PiB7Cj4+IC0g c3RydWN0IGlwcm90b19tc2cgKm1zZyA9IChzdHJ1Y3QgaXByb3RvX21zZyAqKSBtOwo+PiBzdHJ1 Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbiA9IG1zZy0+Y29ubmVjdGlvbjsKPj4gc3RydWN0IG9i dWYgKm91dCA9IG1zZy0+Y29ubmVjdGlvbi0+dHgucF9vYnVmOwo+PiAtIHRyeSB7IC8qIGNvbm5l Y3QuICovCj4+IC0gY29uLT5zZXNzaW9uID0gc2Vzc2lvbl9jcmVhdGUoU0VTU0lPTl9UWVBFX0JJ TkFSWSk7Cj4+IC0gaWYgKGNvbi0+c2Vzc2lvbiA9PSBOVUxMKQo+PiAtIGRpYWdfcmFpc2UoKTsK Pj4gLSBjb24tPnNlc3Npb24tPm1ldGEuY29ubmVjdGlvbiA9IGNvbjsKPj4gLSB0eF9maWJlcl9p bml0KGNvbi0+c2Vzc2lvbiwgMCk7Cj4+IC0gY2hhciAqZ3JlZXRpbmcgPSAoY2hhciAqKSBzdGF0 aWNfYWxsb2MoSVBST1RPX0dSRUVUSU5HX1NJWkUpOwo+PiAtIC8qIFRPRE86IGRpcnR5IHJlYWQg ZnJvbSB0eCB0aHJlYWQgKi8KPj4gLSBzdHJ1Y3QgdHRfdXVpZCB1dWlkID0gSU5TVEFOQ0VfVVVJ RDsKPj4gLSByYW5kb21fYnl0ZXMoY29uLT5zYWx0LCBJUFJPVE9fU0FMVF9TSVpFKTsKPj4gLSBn cmVldGluZ19lbmNvZGUoZ3JlZXRpbmcsIHRhcmFudG9vbF92ZXJzaW9uX2lkKCksICZ1dWlkLAo+ PiAtIGNvbi0+c2FsdCwgSVBST1RPX1NBTFRfU0laRSk7Cj4+IC0gb2J1Zl9kdXBfeGMob3V0LCBn cmVldGluZywgSVBST1RPX0dSRUVUSU5HX1NJWkUpOwo+PiAtIGlmICghIHJsaXN0X2VtcHR5KCZz ZXNzaW9uX29uX2Nvbm5lY3QpKSB7Cj4+IC0gaWYgKHNlc3Npb25fcnVuX29uX2Nvbm5lY3RfdHJp Z2dlcnMoY29uLT5zZXNzaW9uKSAhPSAwKQo+PiAtIGRpYWdfcmFpc2UoKTsKPj4gLSB9Cj4+ICsg Y2hhciAqZ3JlZXRpbmcgPSAoY2hhciAqKSBzdGF0aWNfYWxsb2MoSVBST1RPX0dSRUVUSU5HX1NJ WkUpOwo+PiArIC8qIFRPRE86IGRpcnR5IHJlYWQgZnJvbSB0eCB0aHJlYWQgKi8KPj4gKyBzdHJ1 Y3QgdHRfdXVpZCB1dWlkID0gSU5TVEFOQ0VfVVVJRDsKPj4gKyByYW5kb21fYnl0ZXMoY29uLT5z YWx0LCBJUFJPVE9fU0FMVF9TSVpFKTsKPj4gKyBncmVldGluZ19lbmNvZGUoZ3JlZXRpbmcsIHRh cmFudG9vbF92ZXJzaW9uX2lkKCksICZ1dWlkLAo+PiArIGNvbi0+c2FsdCwgSVBST1RPX1NBTFRf U0laRSk7Cj4+ICsgaWYgKG9idWZfZHVwKG91dCwgZ3JlZXRpbmcsIElQUk9UT19HUkVFVElOR19T SVpFKQo+PiArICE9IElQUk9UT19HUkVFVElOR19TSVpFKSB7Cj4+ICsgZGlhZ19zZXQoT3V0T2ZN ZW1vcnksIElQUk9UT19HUkVFVElOR19TSVpFLAo+PiArICJncmVldGluZyBvYnVmIiwgImR1cCIp Owo+PiArIGlwcm90b19yZXBseV9lcnJvcihvdXQsIGRpYWdfbGFzdF9lcnJvcigmZmliZXIoKS0+ ZGlhZyksCj4+ICsgbXNnLT5oZWFkZXIuc3luYywgOjpzY2hlbWFfdmVyc2lvbik7Cj4+IGlwcm90 b193cG9zX2NyZWF0ZSgmbXNnLT53cG9zLCBvdXQpOwo+PiAtIH0gY2F0Y2ggKEV4Y2VwdGlvbiAq ZSkgewo+PiAtIHR4X3JlcGx5X2Vycm9yKG1zZyk7Cj4+IG1zZy0+Y2xvc2VfY29ubmVjdGlvbiA9 IHRydWU7Cj4+IC0gfQo+PiAtfQo+PiAtCj4+IC0vKioKPj4gLSAqIFNlbmQgYSByZXNwb25zZSB0 byBjb25uZWN0IHRvIHRoZSBjbGllbnQgb3IgY2xvc2UgdGhlCj4+IC0gKiBjb25uZWN0aW9uIGlu IGNhc2Ugb25fY29ubmVjdCB0cmlnZ2VyIGZhaWxlZC4KPj4gLSAqLwo+PiAtc3RhdGljIHZvaWQK Pj4gLW5ldF9zZW5kX2dyZWV0aW5nKHN0cnVjdCBjbXNnICptKQo+PiAtewo+PiAtIHN0cnVjdCBp cHJvdG9fbXNnICptc2cgPSAoc3RydWN0IGlwcm90b19tc2cgKikgbTsKPj4gLSBzdHJ1Y3QgaXBy b3RvX2Nvbm5lY3Rpb24gKmNvbiA9IG1zZy0+Y29ubmVjdGlvbjsKPj4gLSBpZiAobXNnLT5jbG9z ZV9jb25uZWN0aW9uKSB7Cj4+IC0gc3RydWN0IG9idWYgKm91dCA9IG1zZy0+d3Bvcy5vYnVmOwo+ PiAtIGludDY0X3QgbndyID0gc2lvX3dyaXRldihjb24tPm91dHB1dC5mZCwgb3V0LT5pb3YsCj4+ IC0gb2J1Zl9pb3ZjbnQob3V0KSk7Cj4+IC0KPj4gLSBpZiAobndyID4gMCkgewo+PiAtIC8qIENv dW50IHN0YXRpc3RpY3MuICovCj4+IC0gcm1lYW5fY29sbGVjdChybWVhbl9uZXQsIElQUk9UT19T RU5ULCBud3IpOwo+PiAtIH0gZWxzZSBpZiAobndyIDwgMCAmJiAhIHNpb193b3VsZGJsb2NrKGVy cm5vKSkgewo+PiAtIGRpYWdfbG9nKCk7Cj4+IC0gfQo+PiAtIGFzc2VydChpcHJvdG9fY29ubmVj dGlvbl9pc19pZGxlKGNvbikpOwo+PiAtIGlwcm90b19jb25uZWN0aW9uX2Nsb3NlKGNvbik7Cj4+ IC0gaXByb3RvX21zZ19kZWxldGUobXNnKTsKPj4gKyBpcHJvdG9fY29ubmVjdGlvbl9mYWlsKG1z Zyk7Cj4+IHJldHVybjsKPj4gfQo+PiArIGlwcm90b193cG9zX2NyZWF0ZSgmbXNnLT53cG9zLCBv dXQpOwo+PiBjb24tPndlbmQgPSBtc2ctPndwb3M7Cj4+IC0gLyoKPj4gLSAqIENvbm5lY3QgaXMg c3luY2hyb25vdXMsIHNvIG5vIG9uZSBjb3VsZCBoYXZlIGJlZW4KPj4gLSAqIG1lc3NpbmcgdXAg d2l0aCB0aGUgY29ubmVjdGlvbiB3aGlsZSBpdCB3YXMgaW4KPj4gLSAqIHByb2dyZXNzLgo+PiAt ICovCj4+IGFzc2VydChldmlvX2hhc19mZCgmY29uLT5vdXRwdXQpKTsKPj4gLSAvKiBIYW5kc2hh a2UgT0ssIHN0YXJ0IHJlYWRpbmcgaW5wdXQuICovCj4+IGV2X2ZlZWRfZXZlbnQoY29uLT5sb29w LCAmY29uLT5vdXRwdXQsIEVWX1dSSVRFKTsKPj4gaXByb3RvX21zZ19kZWxldGUobXNnKTsKPj4g fQo+Pgo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbXNnX2hvcCBjb25uZWN0X3JvdXRlW10gPSB7 Cj4+IC0geyB0eF9wcm9jZXNzX2Nvbm5lY3QsICZuZXRfcGlwZSB9LAo+PiAtIHsgbmV0X3NlbmRf Z3JlZXRpbmcsIE5VTEwgfSwKPj4gLX07Cj4+ICtzdGF0aWMgaW50Cj4+ICt0eF9pbml0X2Nvbm5l Y3Qoc3RydWN0IGlwcm90b19tc2cgKm1zZykKPj4gK3sKPj4gKyBzdHJ1Y3QgaXByb3RvX2Nvbm5l Y3Rpb24gKmNvbiA9IG1zZy0+Y29ubmVjdGlvbjsKPj4gKyBvYnVmX2NyZWF0ZSgmY29uLT5vYnVm WzBdLCAmbmV0X3NsYWJjLCBpcHJvdG9fcmVhZGFoZWFkKTsKPj4gKyBvYnVmX2NyZWF0ZSgmY29u LT5vYnVmWzFdLCAmbmV0X3NsYWJjLCBpcHJvdG9fcmVhZGFoZWFkKTsKPj4gKyBjb24tPnR4LnBf b2J1ZiA9ICZjb24tPm9idWZbMF07Cj4+ICsgaXByb3RvX3dwb3NfY3JlYXRlKCZjb24tPndwb3Ms IGNvbi0+dHgucF9vYnVmKTsKPj4gKyBpcHJvdG9fd3Bvc19jcmVhdGUoJmNvbi0+d2VuZCwgY29u LT50eC5wX29idWYpOwo+PiArCj4+ICsgY29uLT5zZXNzaW9uID0gc2Vzc2lvbl9jcmVhdGUoU0VT U0lPTl9UWVBFX0JJTkFSWSk7Cj4+ICsgaWYgKGNvbi0+c2Vzc2lvbiA9PSBOVUxMKQo+PiArIHJl dHVybiAtMTsKPj4gKyBjb24tPnNlc3Npb24tPm1ldGEuY29ubmVjdGlvbiA9IGNvbjsKPj4gKwo+ PiArIHR4X2ZpYmVyX2luaXQoY29uLT5zZXNzaW9uLCAwKTsKPj4gKyBpZiAoISBybGlzdF9lbXB0 eSgmc2Vzc2lvbl9vbl9jb25uZWN0KSkgewo+PiArIGlmIChzZXNzaW9uX3J1bl9vbl9jb25uZWN0 X3RyaWdnZXJzKGNvbi0+c2Vzc2lvbikgIT0gMCkKPj4gKyByZXR1cm4gLTE7Cj4+ICsgfQo+PiAr Cj4+ICsgcmV0dXJuIDA7Cj4+ICt9Cj4+Cj4+IC8qKiB9fX0gKi8KPj4KPj4gQEAgLTIwMzcsMTEg KzIxMzcsMTAgQEAgaXByb3RvX29uX2FjY2VwdChzdHJ1Y3QgZXZpb19zZXJ2aWNlICogLyogc2Vy dmljZSAqLywgaW50IGZkLAo+PiBtZW1wb29sX2ZyZWUoJmlwcm90b19jb25uZWN0aW9uX3Bvb2ws IGNvbik7Cj4+IHJldHVybiAtMTsKPj4gfQo+PiAtIGNtc2dfaW5pdCgmbXNnLT5iYXNlLCBjb25u ZWN0X3JvdXRlKTsKPj4gbXNnLT5wX2lidWYgPSBjb24tPnBfaWJ1ZjsKPj4gbXNnLT53cG9zID0g Y29uLT53cG9zOwo+PiBtc2ctPmNsb3NlX2Nvbm5lY3Rpb24gPSBmYWxzZTsKPj4gLSBjcGlwZV9w dXNoKCZ0eF9waXBlLCAmbXNnLT5iYXNlKTsKPj4gKyBpcHJvdG9fcHJvY2Vzc19jb25uZWN0KG1z Zyk7Cj4+IHJldHVybiAwOwo+PiB9Cj4+Cj4+IEBAIC0yMDU0LDYgKzIxNTMsOCBAQCBzdGF0aWMg c3RydWN0IGV2aW9fc2VydmljZSBiaW5hcnk7IC8qIGlwcm90byBiaW5hcnkgbGlzdGVuZXIgKi8K Pj4gc3RhdGljIGludAo+PiBuZXRfY29yZF9mKHZhX2xpc3QgLyogYXAgKi8pCj4+IHsKPj4gKyBz bGFiX2NhY2hlX2NyZWF0ZSgmaXByb3RvX3NsYWJjLCAmcnVudGltZSk7Cj4+ICsKPj4gbWVtcG9v bF9jcmVhdGUoJmlwcm90b19tc2dfcG9vbCwgJmNvcmQoKS0+c2xhYmMsCj4+IHNpemVvZihzdHJ1 Y3QgaXByb3RvX21zZykpOwo+PiBtZW1wb29sX2NyZWF0ZSgmaXByb3RvX2Nvbm5lY3Rpb25fcG9v bCwgJmNvcmQoKS0+c2xhYmMsCj4+IEBAIC0yMjk3LDcgKzIzOTgsOCBAQCBpcHJvdG9fbGlzdGVu KGNvbnN0IGNoYXIgKnVyaSkKPj4gc2l6ZV90Cj4+IGlwcm90b19tZW1fdXNlZCh2b2lkKQo+PiB7 Cj4+IC0gcmV0dXJuIHNsYWJfY2FjaGVfdXNlZCgmbmV0X2NvcmQuc2xhYmMpICsgc2xhYl9jYWNo ZV91c2VkKCZuZXRfc2xhYmMpOwo+PiArIHJldHVybiBzbGFiX2NhY2hlX3VzZWQoJm5ldF9jb3Jk LnNsYWJjKQo+PiArICsgc2xhYl9jYWNoZV91c2VkKCZuZXRfc2xhYmMpICsgc2xhYl9jYWNoZV91 c2VkKCZpcHJvdG9fc2xhYmMpOwo+PiB9Cj4+Cj4+IHNpemVfdAo+PiBkaWZmIC0tZ2l0IGEvdGVz dC9ib3gtcHkvYmFkX3RyaWdnZXIucmVzdWx0IGIvdGVzdC9ib3gtcHkvYmFkX3RyaWdnZXIucmVz dWx0Cj4+IGluZGV4IDVkMDY0Yjc2NDguLmJmYTljMmI3NTkgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3Qv Ym94LXB5L2JhZF90cmlnZ2VyLnJlc3VsdAo+PiArKysgYi90ZXN0L2JveC1weS9iYWRfdHJpZ2dl ci5yZXN1bHQKPj4gQEAgLTE0LDYgKzE0LDcgQEAgdHlwZShib3guc2Vzc2lvbi5vbl9jb25uZWN0 KGYxKSkKPj4gLSBmdW5jdGlvbgo+PiAuLi4KPj4gZ3JlZXRpbmc6IFRydWUKPj4gK05vdGhpbmcg dG8gcmVhZCB5ZXQ6IFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlCj4+IGZpeGhlYWRl cjogVHJ1ZQo+PiBlcnJvciBjb2RlIDMyCj4+IGVycm9yIG1lc3NhZ2U6IFtzdHJpbmcgImZ1bmN0 aW9uIGYxKCkgbm9zdWNoZnVuY3Rpb24oKSBlbmQiXToxOiBhdHRlbXB0IHRvIGNhbGwgZ2xvYmFs ICdub3N1Y2hmdW5jdGlvbicgKGEgbmlsIHZhbHVlKQo+PiBkaWZmIC0tZ2l0IGEvdGVzdC9ib3gt cHkvYmFkX3RyaWdnZXIudGVzdC5weSBiL3Rlc3QvYm94LXB5L2JhZF90cmlnZ2VyLnRlc3QucHkK Pj4gaW5kZXggN2QyMDBiOTIxOC4uNDczOWRmZTEzNiAxMDA2NDQKPj4gLS0tIGEvdGVzdC9ib3gt cHkvYmFkX3RyaWdnZXIudGVzdC5weQo+PiArKysgYi90ZXN0L2JveC1weS9iYWRfdHJpZ2dlci50 ZXN0LnB5Cj4+IEBAIC0yLDcgKzIsNyBAQCBmcm9tIGxpYi5ib3hfY29ubmVjdGlvbiBpbXBvcnQg Qm94Q29ubmVjdGlvbgo+PiBmcm9tIGxpYi50YXJhbnRvb2xfY29ubmVjdGlvbiBpbXBvcnQgVGFy YW50b29sQ29ubmVjdGlvbgo+PiBmcm9tIHRhcmFudG9vbCBpbXBvcnQgTmV0d29ya0Vycm9yCj4+ IGZyb20gdGFyYW50b29sLmNvbnN0IGltcG9ydCBJUFJPVE9fR1JFRVRJTkdfU0laRSwgSVBST1RP X0NPREUsIElQUk9UT19FUlJPUiwgXAo+PiAtIFJFUVVFU1RfVFlQRV9FUlJPUgo+PiArIFJFUVVF U1RfVFlQRV9FUlJPUiwgUkVRVUVTVF9UWVBFX1BJTkcKPj4gaW1wb3J0IHNvY2tldAo+PiBpbXBv cnQgbXNncGFjawo+Pgo+PiBAQCAtMjYsOSArMjYsMjUgQEAgcyA9IGNvbm4uc29ja2V0Cj4+ICMg UmVhZCBncmVldGluZwo+PiBwcmludCAnZ3JlZXRpbmc6ICcsIGxlbihzLnJlY3YoSVBST1RPX0dS RUVUSU5HX1NJWkUpKSA9PSBJUFJPVE9fR1JFRVRJTkdfU0laRQo+Pgo+PiAtIyBSZWFkIGVycm9y IHBhY2tldAo+PiArIyBDaGVjayBzb2NrZXQKPj4gSVBST1RPX0ZJWEhFQURFUl9TSVpFID0gNQo+ PiAtZml4aGVhZGVyID0gcy5yZWN2KElQUk9UT19GSVhIRUFERVJfU0laRSkKPj4gK3Muc2V0Ymxv Y2tpbmcoRmFsc2UpCj4+ICtmaXhoZWFkZXIgPSBOb25lCj4+ICt0cnk6Cj4+ICsgZml4aGVhZGVy ID0gcy5yZWN2KElQUk9UT19GSVhIRUFERVJfU0laRSkKPj4gK2V4Y2VwdCBzb2NrZXQuZXJyb3Ig YXMgZXJyOgo+PiArIHByaW50ICdOb3RoaW5nIHRvIHJlYWQgeWV0OicsIHN0cihlcnIpLnNwbGl0 KCddJylbMV0KPj4gK2Vsc2U6Cj4+ICsgcHJpbnQgJ1JlY2VpdmVkIGZpeGhlYWRlcicKPj4gK3Mu c2V0YmxvY2tpbmcoVHJ1ZSkKPj4gKwo+PiArIyBTZW5kIHBpbmcKPj4gK3F1ZXJ5ID0gbXNncGFj ay5kdW1wcyh7IElQUk9UT19DT0RFIDogUkVRVUVTVF9UWVBFX1BJTkcgfSkKPj4gK3Muc2VuZCht c2dwYWNrLmR1bXBzKGxlbihxdWVyeSkpICsgcXVlcnkpCj4+ICsKPj4gKyMgUmVhZCBlcnJvciBw YWNrZXQKPj4gK2lmIG5vdCBmaXhoZWFkZXI6Cj4+ICsgZml4aGVhZGVyID0gcy5yZWN2KElQUk9U T19GSVhIRUFERVJfU0laRSkKPj4gcHJpbnQgJ2ZpeGhlYWRlcjogJywgbGVuKGZpeGhlYWRlcikg PT0gSVBST1RPX0ZJWEhFQURFUl9TSVpFCj4+IHVucGFja2VyLmZlZWQoZml4aGVhZGVyKQo+PiBw YWNrZXRfbGVuID0gdW5wYWNrZXIudW5wYWNrKCkKPj4gCsKgCsKgCi0tCklseWEgS29zYXJldgrC oA== ----ALT--b3586E0a3f00a195443791CcDcC059421601074667 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 CjxIVE1MPjxCT0RZPjxkaXY+PGRpdj5IaSE8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+VGhh bmtzIGZvciB0aGUgcmV2aWV3LjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj40IGFuc3dlcnMg YmVsb3cuIEZpeGVkIGFsbCB5b3VyIGNvbW1lbnRzIGluJm5ic3A7djMsJm5ic3A7cHVzaGVkICZh bXA7IHNlbnQgdG8gdGhlIG5leHQgcmV2aWV3ZXIuPGJyPiZuYnNwOzwvZGl2PjxibG9ja3F1b3Rl IHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRp bmc6MCAwIDAgMTBweDsiPtCf0L7QvdC10LTQtdC70YzQvdC40LosIDIxINGB0LXQvdGC0Y/QsdGA 0Y8gMjAyMCwgMTg6NTIgKzAzOjAwINC+0YIgTGVvbmlkIFZhc2lsaWV2ICZsdDtsdmFzaWxpZXZA dGFyYW50b29sLm9yZyZndDs6PGJyPiZuYnNwOzxkaXYgaWQ9IiI+PGRpdiBjbGFzcz0ianMtaGVs cGVyIGpzLXJlYWRtc2ctbXNnIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwvc3R5bGU+PGRpdj48 ZGl2IGlkPSJzdHlsZV8xNjAwNzAzNTI1MTg3MDg1MTc0Nl9CT0RZIj5IaSEgVGhhbmsgeW91IGZv ciB0aGUgcGF0Y2guPGJyPjxicj5MR1RNLjxicj48YnI+QWxsIGNvbW1lbnRzIGJlbG93IGFyZSBh dCB5b3VyIGRpc2NyZXRpb246PGJyPjxicj5PbiA5LzE4LzIwIDQ6MDkgUE0sIElseWEgS29zYXJl diB3cm90ZTo8YnI+Jmd0OyBPbiBjb25uZWN0aW9uLCBhbiBldmlvIHNlcnZpY2UgY2FsbGJhY2sg aXMgaW52b2tlZCB0byBhY2NlcHQgaXQuIFRoZTxicj4mZ3Q7IG5leHQgc3RlcCBhZnRlciBhY2Nl cHRpb24gd2FzIHRvIHByb2Nlc3MgY29ubmVjdGlvbiB0byB0eCB0aHJlYWQ8YnI+Jmd0OyB0aHJv dWdoIGNidXMuIFRoaXMgbWVhbnQgdGhhdCBhbnkgY29ubmVjdGlvbiBpbnRlcmFjdGlvbiBpbnZv bHZlczxicj4mZ3Q7IHR4IHRocmVhZCBldmVuIGJlZm9yZSB3ZSBnZXQgdG8gZGVjb2RlIHdoYXQg ZG9lcyB0aGUgY2xpZW50IHdhbnQ8YnI+Jmd0OyBmcm9tIHVzLiBDb25zZXF1ZW50bHksIGEgbnVt YmVyIG9mIHByb2JsZW1zIGFwcGVhcnMuIFRoZSBtYWluIG9uZTxicj4mZ3Q7IGlzIHRoYXQgd2Ug bWlnaHQgZ2V0IGRlc2NyaXB0b3IgbGVhayBpbiBjYXNlIG9mIHVucmVzcG9uc2l2ZSB0eCB0aHJl YWQ8YnI+Jmd0OyAoZm9yIGV4YW1wbGUsIHdoZW4gYnVpbGRpbmcgc2Vjb25kYXJ5IGluZGV4KS4g VGhlcmUgYXJlIHNvbWUgb3RoZXI8YnI+Jmd0OyBjYXNlcyB3aGVyZSB3ZSBtaWdodCBub3Qgd2Fu dCB0byBzcGVuZCBwcmVjaW91cyB0eCB0aW1lIHRvIHByb2Nlc3M8YnI+Jmd0OyB0aGUgY29ubmVj dGlvbiBpbiBjYXNlIGlwcm90byBjYW4gZG8gaXQgYWxsIGFsb25lLjxicj4mZ3Q7IFRoaXMgcGF0 Y2ggYWxsb3dzIGlwcm90byB0byBhY2NlcHQgY29ubmVjdGlvbiBhbmQgc2VuZCBncmVldGluZyBi eTxicj4mZ3Q7IGl0c2VsZi4gVGhlIGNvbm5lY3Rpb24gaXMgaW5pdGlhbGl6ZWQgaW4gdHggdGhy ZWFkIHdoZW4gdGhlIHJlYWw8YnI+Jmd0OyByZXF1ZXN0IGNvbWVzIHRocm91Z2ggaXByb3RvX21z Z19kZWNvZGUoKS4gSW4gY2FzZSByZXF1ZXN0IHR5cGUgd2FzIG5vdDxicj4mZ3Q7IHJlY29nbml6 ZWQgd2UgY2FuIGFsc28gc2VuZCByZXBseSB3aXRoIGFuIGVycm9yIHdpdGhvdXQgdXNpbmcgdHgu IEl0IGlzPGJyPiZndDsgcGxhbm5lZCB0byBhZGQgbW9yZSBpcHJvdG8gbG9naWMgdG8gcHJldmVu dCBleHRyYSBpbnRlcmFjdGlvbiB3aXRoPGJyPiZndDsgdHggdGhyZWFkLiBUaGlzIHBhdGNoIGFs cmVhZHkgdG8gc29tZSBleHRlbnQgc29sdmVzIGRlc2NyaXB0b3JzIGxlYWthZ2U8YnI+Jmd0OyBw cm9ibGVtIGFzIGZhciBhcyBjb25uZWN0aW9uIGVzdGFibGlzaGVzIGFuZCBzdGF5cyBpbiBmZXRj aF9zY2hlbWE8YnI+Jmd0OyBzdGF0ZSB3aGlsZSB0eCB0aHJlYWQgaXMgdW5yZXNwb25zaXZlLjxi cj4mZ3Q7IFRoZSBvdGhlciB1c2VyIHZpc2libGUgY2hhbmdlIGlzIHRoYXQgb25fY29ubmVjdCB0 cmlnZ2VycyB3b24ndCBydW4gb248YnI+Jmd0OyBjb25uZWN0aW9ucyB0aGF0IGRvbid0IHByb3Zp ZGUgYW55IGlucHV0LCBhcyByZWZsZWN0ZWQgaW48YnI+Jmd0OyBiYWRfdHJpZ2dlci50ZXN0LnB5 Ljxicj4mZ3Q7PGJyPiZndDsgUGFydCBvZiAjMzc3Njxicj4mZ3Q7PGJyPiZndDsgQFRhcmFudG9v bEJvdCBkb2N1bWVudDxicj4mZ3Q7IFRpdGxlOiBpcHJvdG86IG9uX2Nvbm5lY3QgdHJpZ2dlcnMg ZXhlY3V0aW9uPGJyPiZndDsgVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBvbl9jb25uZWN0 IHRyaWdnZXJzIHRvIHJlZmxlY3QgdGhhdCB0aGV5PGJyPiZndDsgYXJlIG5vdyBiZWluZyBleGVj dXRlZCBvbmx5IHdpdGggdGhlIGZpcnN0IHJlcXVlc3QuIFRob3VnaCB0aGUgdHJpZ2dlcnM8YnI+ Jmd0OyBhcmUgc3RpbGwgdGhlIGZpcnN0IHRoaW5nIHRvIGJlIGV4ZWN1dGVkIG9uIGEgbmV3IGNv bm5lY3Rpb24uIFdoaWxlIGl0PGJyPiZndDsgaXMgcXVpdGUgYSBzeW50aGV0aWMgY2FzZSB0byBl c3RhYmxpc2ggYSBjb25uZWN0aW9uIHdpdGhvdXQgbWFraW5nPGJyPiZndDsgYW55IHJlcXVlc3Rz IGl0IGlzIHRlY2huaWNhbGx5IHBvc3NpYmxlIGFuZCBub3cgeW91ciB0cmlnZ2VycyB3b24ndCBi ZTxicj4mZ3Q7IGV4ZWN1dGVkIGluIHRoaXMgY2FzZS4gU29tZSByZXF1ZXN0IGlzIHJlcXVpcmVk IHRvIHN0YXJ0IHRoZWlyPGJyPiZndDsgZXhlY3V0aW9uLjxicj4mZ3Q7IC0tLTxicj4mZ3Q7IEJy YW5jaDogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wvdHJl ZS9pLmtvc2FyZXYvZ2gtMzc3Ni1oYW5kbGluZy1jb25uZWN0aW9ucy1pbi1pcHJvdG8iIHRhcmdl dD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29sL3RhcmFudG9vbC90cmVlL2ku a29zYXJldi9naC0zNzc2LWhhbmRsaW5nLWNvbm5lY3Rpb25zLWluLWlwcm90bzwvYT48YnI+Jmd0 OyBJc3N1ZTogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RhcmFudG9vbC90YXJhbnRvb2wv aXNzdWVzLzM3NzYiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vdGFyYW50b29s L3RhcmFudG9vbC9pc3N1ZXMvMzc3NjwvYT48YnI+Jmd0Ozxicj4mZ3Q7IEBDaGFuZ2VMb2c6PGJy PiZndDsgKiBNYWtlIGlwcm90byB0aHJlYWQgbW9yZSBpbmRlcGVuZGVudCBmcm9tIHR4IChnaC0z Nzc2KS48YnI+PGJyPi0gQ2hhbmdlbG9nIGFib3V0IGNoYW5nZXMgdmlzaWJsZSB0byB0aGUgdXNl ci4gSSB3b3VsZCBzdWdnZXN0IHdyaXRpbmc8YnI+YWJvdXQgb25fY29ubmVjdCB0cmlnZ2VycyBo ZXJlLiBvbl9kaXNjb25uZWN0IHRyaWdnZXJzIHdpbGwgYWxzbyBub3Q8YnI+d29yayBpZiB0aGVy ZSB3YXMgbm90IG9uZSBtZXNzYWdlIGhhcyBiZWVuIHNlbnQsIGFzIEkgdW5kZXJzdGFuZCBpdC48 L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PG9sPjxsaT5SaWdodCwg aSB0aG91Z2h0IGl0IGlzIGdvaW5nIHRvIGJlIHRvbyBsb25nIGZvciB0aGUgQ2hhbmdlTG9nLiBC dXQgYWN0dWFsbHkgaXQgc2hvdWxkIGJlIGhlcmUuPC9saT48L29sPjxkaXY+PGJsb2NrcXVvdGUg c3R5bGU9ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjMDg1N0E2OyBtYXJnaW46MTBweDsgcGFkZGlu ZzowIDAgMCAxMHB4OyI+PGRpdj48ZGl2IGNsYXNzPSJqcy1oZWxwZXIganMtcmVhZG1zZy1tc2ci PjxkaXY+PGRpdj48YnI+Jmd0Ozxicj4mZ3Q7IENoYW5nZXMgaW4gdjI6PGJyPiZndDsgLSBkb2Ni b3QgcmVxdWVzdCBwcm92aWRlZDxicj4mZ3Q7IC0gQ2hhbmdlTG9nIHByb3ZpZGVkPGJyPiZndDsg LSBuZXRfc2VuZF9tc2coKSB1c2VkIGluc3RlYWQgb2YgbmV0X3NlbmRfZXJyb3IoKSB3aGVyZSBu ZWVkZWQ8YnI+Jmd0OyAtIGVycm9yIGNhc2VzIG1hZGUgY2xlYXIgaW4gaXByb3RvX21zZ19kZWNv ZGUoKTxicj4mZ3Q7IC0gcmVwbGFjZWQgbmV0X2NoZWNrX2Nvbm5lY3Rpb24oKSB3aXRoIGlwcm90 b19jb25uZWN0aW9uX2ZhaWwoKSBwcmVkaWNhdGU8YnI+Jmd0OyAtIGltcHJvdmVkIHR4IHNlc3Np b24gaW5pdGlhbGl6YXRpb24gZmFpbCBwcm9jZXNzaW5nIHRvIGF2b2lkIGV4dHJhIHRyaWVzPGJy PiZndDsgLSBmaXhlZCBvYnVmX2R1cCgpIGZhaWwgcHJvY2Vzc2luZyBpbiBpcHJvdG9fcHJvY2Vz c19jb25uZWN0KCk8YnI+Jmd0OyAtIGFkZGVkIHNvbWUgY29tbWVudHM8YnI+Jmd0OyAtIHNvbWUg Y29tbWVudHMgc3R5bGUgZml4ZWQ8YnI+Jmd0Ozxicj4mZ3Q7IHNyYy9ib3gvaXByb3RvLmNjIHwg MzA0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tPGJyPiZndDsgdGVzdC9ib3gtcHkv YmFkX3RyaWdnZXIucmVzdWx0IHwgMSArPGJyPiZndDsgdGVzdC9ib3gtcHkvYmFkX3RyaWdnZXIu dGVzdC5weSB8IDIyICsrLTxicj4mZ3Q7IDMgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMo KyksIDEwNCBkZWxldGlvbnMoLSk8YnI+Jmd0Ozxicj4mZ3Q7IGRpZmYgLS1naXQgYS9zcmMvYm94 L2lwcm90by5jYyBiL3NyYy9ib3gvaXByb3RvLmNjPGJyPiZndDsgaW5kZXggYjhmNjVlNWVjYS4u NjdiYmQzNTdhMyAxMDA2NDQ8YnI+Jmd0OyAtLS0gYS9zcmMvYm94L2lwcm90by5jYzxicj4mZ3Q7 ICsrKyBiL3NyYy9ib3gvaXByb3RvLmNjPGJyPiZndDsgQEAgLTI0NSw3ICsyNDUsNyBAQCBpcHJv dG9fbXNnX25ldyhzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbik7PGJyPiZndDsgc3RhdGlj IHZvaWQ8YnI+Jmd0OyBpcHJvdG9fcmVzdW1lKHZvaWQpOzxicj4mZ3Q7PGJyPiZndDsgLXN0YXRp YyB2b2lkPGJyPiZndDsgK3N0YXRpYyBpbnQ8YnI+Jmd0OyBpcHJvdG9fbXNnX2RlY29kZShzdHJ1 Y3QgaXByb3RvX21zZyAqbXNnLCBjb25zdCBjaGFyICoqcG9zLCBjb25zdCBjaGFyICpyZXFlbmQs PGJyPiZndDsgYm9vbCAqc3RvcF9pbnB1dCk7PGJyPiZndDs8YnI+Jmd0OyBAQCAtMjU2LDYgKzI1 Niw5IEBAIGlwcm90b19tc2dfZGVsZXRlKHN0cnVjdCBpcHJvdG9fbXNnICptc2cpPGJyPiZndDsg aXByb3RvX3Jlc3VtZSgpOzxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7ICtzdGF0aWMgaW5saW5l IHZvaWQ8YnI+Jmd0OyAraXByb3RvX2Nvbm5lY3Rpb25fZGVsZXRlKHN0cnVjdCBpcHJvdG9fY29u bmVjdGlvbiAqY29uKTs8YnI+Jmd0OyArPGJyPiZndDsgLyoqPGJyPiZndDsgKiBBIHNpbmdsZSBn bG9iYWwgcXVldWUgZm9yIGFsbCByZXF1ZXN0cyBpbiBhbGwgY29ubmVjdGlvbnMuIEFsbDxicj4m Z3Q7ICogcmVxdWVzdHMgZnJvbSBhbGwgY29ubmVjdGlvbnMgYXJlIHByb2Nlc3NlZCBjb25jdXJy ZW50bHkuPGJyPiZndDsgQEAgLTI4MCw2ICsyODMsMTEgQEAgc3RhdGljIHN0cnVjdCBjb3JkIG5l dF9jb3JkOzxicj4mZ3Q7ICogaW4gdGhlIHR4IHRocmVhZC48YnI+Jmd0OyAqLzxicj4mZ3Q7IHN0 YXRpYyBzdHJ1Y3Qgc2xhYl9jYWNoZSBuZXRfc2xhYmM7PGJyPiZndDsgKy8qKjxicj4mZ3Q7ICsg KiBTbGFiIGNhY2hlIHVzZWQgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBvdXRwdXQgbmV0d29y ayBidWZmZXJzPGJyPiZndDsgKyAqIGluIHRoZSBpcHJvdG8gdGhyZWFkLjxicj4mZ3Q7ICsgKi88 YnI+Jmd0OyArc3RhdGljIHN0cnVjdCBzbGFiX2NhY2hlIGlwcm90b19zbGFiYzs8YnI+Jmd0Ozxi cj4mZ3Q7IHN0cnVjdCBybWVhbiAqcm1lYW5fbmV0Ozxicj4mZ3Q7PGJyPiZndDsgQEAgLTI5OCw2 ICszMDYsOSBAQCBjb25zdCBjaGFyICpybWVhbl9uZXRfc3RyaW5nc1tJUFJPVE9fTEFTVF0gPSB7 PGJyPiZndDsgIlJFUVVFU1RTIiw8YnI+Jmd0OyB9Ozxicj4mZ3Q7PGJyPiZndDsgK3N0YXRpYyBp bnQ8YnI+Jmd0OyArdHhfaW5pdF9jb25uZWN0KHN0cnVjdCBpcHJvdG9fbXNnICptc2cpOzxicj4m Z3Q7ICs8YnI+Jmd0OyBzdGF0aWMgdm9pZDxicj4mZ3Q7IHR4X3Byb2Nlc3NfZGVzdHJveShzdHJ1 Y3QgY21zZyAqbSk7PGJyPiZndDs8YnI+Jmd0OyBAQCAtNDYzLDYgKzQ3NCw3IEBAIHN0cnVjdCBp cHJvdG9fY29ubmVjdGlvbjxicj4mZ3Q7IHN0cnVjdCBldl9pbyBvdXRwdXQ7PGJyPiZndDsgLyoq IExvZ2ljYWwgc2Vzc2lvbi4gKi88YnI+Jmd0OyBzdHJ1Y3Qgc2Vzc2lvbiAqc2Vzc2lvbjs8YnI+ Jmd0OyArIGJvb2wgaW5pdF9mYWlsZWQ7PGJyPiZndDsgZXZfbG9vcCAqbG9vcDs8YnI+Jmd0OyAv Kio8YnI+Jmd0OyAqIFByZS1hbGxvY2F0ZWQgZGlzY29ubmVjdCBtc2cuIElzIHNlbnQgcmlnaHQg YWZ0ZXI8YnI+Jmd0OyBAQCAtNjUwLDcgKzY2MiwxOCBAQCBpcHJvdG9fY29ubmVjdGlvbl90cnlf dG9fc3RhcnRfZGVzdHJveShzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbik8YnI+Jmd0OyAq IG90aGVyIHBhcnRzIG9mIHRoZSBjb25uZWN0aW9uLjxicj4mZ3Q7ICovPGJyPiZndDsgY29uLSZn dDtzdGF0ZSA9IElQUk9UT19DT05ORUNUSU9OX0RFU1RST1lFRDs8YnI+Jmd0OyAtIGNwaXBlX3B1 c2goJmFtcDt0eF9waXBlLCAmYW1wO2Nvbi0mZ3Q7ZGVzdHJveV9tc2cpOzxicj4mZ3Q7ICsgaWYg KGNvbi0mZ3Q7c2Vzc2lvbiAhPSBOVUxMKTxicj4mZ3Q7ICsgY3BpcGVfcHVzaCgmYW1wO3R4X3Bp cGUsICZhbXA7Y29uLSZndDtkZXN0cm95X21zZyk7PGJyPiZndDsgKyBlbHNlIHs8YnI+Jmd0OyAr IC8qPGJyPiZndDsgKyAqIEluIGNhc2Ugc2Vzc2lvbiB3YXMgbm90IGNyZWF0ZWQgd2UgY2FuIHNh ZmVseSBkZXN0cm95PGJyPiZndDsgKyAqIG5vdCBpbnZvbHZpbmcgdHggdGhyZWFkLiBUaHVzIHdl IGFsc28gbmVlZCB0byBkZXN0cm95PGJyPiZndDsgKyAqIG9idWYsIHdoaWNoIHN0aWxsIGJlbG9u Z3MgdG8gaXByb3RvIHRocmVhZC48YnI+Jmd0OyArICovPGJyPiZndDsgKyBvYnVmX2Rlc3Ryb3ko JmFtcDtjb24tJmd0O29idWZbMF0pOzxicj4mZ3Q7ICsgb2J1Zl9kZXN0cm95KCZhbXA7Y29uLSZn dDtvYnVmWzFdKTs8YnI+Jmd0OyArIGlwcm90b19jb25uZWN0aW9uX2RlbGV0ZShjb24pOzxicj4m Z3Q7ICsgfTxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7IC8qKjxicj4mZ3Q7IEBAIC02NzcsOSAr NzAwLDE4IEBAIGlwcm90b19jb25uZWN0aW9uX2Nsb3NlKHN0cnVjdCBpcHJvdG9fY29ubmVjdGlv biAqY29uKTxicj4mZ3Q7ICogaXMgZG9uZSBvbmx5IG9uY2UuPGJyPiZndDsgKi88YnI+Jmd0OyBj b24tJmd0O3BfaWJ1Zi0mZ3Q7d3BvcyAtPSBjb24tJmd0O3BhcnNlX3NpemU7PGJyPiZndDsgLSBj cGlwZV9wdXNoKCZhbXA7dHhfcGlwZSwgJmFtcDtjb24tJmd0O2Rpc2Nvbm5lY3RfbXNnKTs8YnI+ Jmd0OyBhc3NlcnQoY29uLSZndDtzdGF0ZSA9PSBJUFJPVE9fQ09OTkVDVElPTl9BTElWRSk7PGJy PiZndDsgY29uLSZndDtzdGF0ZSA9IElQUk9UT19DT05ORUNUSU9OX0NMT1NFRDs8YnI+Jmd0OyAr IHJsaXN0X2RlbCgmYW1wO2Nvbi0mZ3Q7aW5fc3RvcF9saXN0KTs8YnI+Jmd0OyArIGlmIChjb24t Jmd0O3Nlc3Npb24gIT0gTlVMTCk8YnI+Jmd0OyArIGNwaXBlX3B1c2goJmFtcDt0eF9waXBlLCAm YW1wO2Nvbi0mZ3Q7ZGlzY29ubmVjdF9tc2cpOzxicj4mZ3Q7ICsgZWxzZTxicj4mZ3Q7ICsgLyo8 YnI+Jmd0OyArICogSW4gY2FzZSBzZXNzaW9uIHdhcyBub3QgY3JlYXRlZCB3ZSBjYW4gc2FmZWx5 PGJyPiZndDsgKyAqIHRyeSB0byBzdGFydCBkZXN0cm95IG5vdCBpbnZvbHZpbmcgdHggdGhyZWFk Ljxicj4mZ3Q7ICsgKi88YnI+Jmd0OyArIGlwcm90b19jb25uZWN0aW9uX3RyeV90b19zdGFydF9k ZXN0cm95KGNvbik7PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxv bCBzdGFydD0iMiI+PGxpPkFkZGVkIGJyYWNrZXRzIHRvIG1ha2UgdGhpcyBpZiBzdGF0ZW1lbnQm bmJzcDttb3JlIGNsZWFyLjwvbGk+PC9vbD48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXIt bGVmdDoxcHggc29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsi PjxkaXY+PGRpdiBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+Jmd0 OyArIHJldHVybjs8YnI+Jmd0OyB9IGVsc2UgaWYgKGNvbi0mZ3Q7c3RhdGUgPT0gSVBST1RPX0NP Tk5FQ1RJT05fUEVORElOR19ERVNUUk9ZKSB7PGJyPiZndDsgaXByb3RvX2Nvbm5lY3Rpb25fdHJ5 X3RvX3N0YXJ0X2Rlc3Ryb3koY29uKTs8YnI+Jmd0OyB9IGVsc2Ugezxicj4mZ3Q7IEBAIC04MDks NiArODQxLDcgQEAgaXByb3RvX2VucXVldWVfYmF0Y2goc3RydWN0IGlwcm90b19jb25uZWN0aW9u ICpjb24sIHN0cnVjdCBpYnVmICppbik8YnI+Jmd0OyBhc3NlcnQocmxpc3RfZW1wdHkoJmFtcDtj b24tJmd0O2luX3N0b3BfbGlzdCkpOzxicj4mZ3Q7IGludCBuX3JlcXVlc3RzID0gMDs8YnI+Jmd0 OyBib29sIHN0b3BfaW5wdXQgPSBmYWxzZTs8YnI+Jmd0OyArIGJvb2wgb2J1Zl9pbl9pcHJvdG8g PSAoY29uLSZndDtzZXNzaW9uID09IE5VTEwpOzxicj4mZ3Q7IGNvbnN0IGNoYXIgKmVycm1zZzs8 YnI+Jmd0OyB3aGlsZSAoY29uLSZndDtwYXJzZV9zaXplICE9IDAgJmFtcDsmYW1wOyAhc3RvcF9p bnB1dCkgezxicj4mZ3Q7IGlmIChpcHJvdG9fY2hlY2tfbXNnX21heCgpKSB7PGJyPiZndDsgQEAg LTg1MywxMiArODg2LDIwIEBAIGVycl9tc2dwYWNrOjxicj4mZ3Q7PGJyPiZndDsgbXNnLSZndDts ZW4gPSByZXFlbmQgLSByZXFzdGFydDsgLyogdG90YWwgcmVxdWVzdCBsZW5ndGggKi88YnI+Jmd0 Ozxicj4mZ3Q7IC0gaXByb3RvX21zZ19kZWNvZGUobXNnLCAmYW1wO3BvcywgcmVxZW5kLCAmYW1w O3N0b3BfaW5wdXQpOzxicj4mZ3Q7IC0gLyo8YnI+Jmd0OyAtICogVGhpcyBjYW4ndCB0aHJvdywg YnV0IHNob3VsZCBub3QgYmU8YnI+Jmd0OyAtICogZG9uZSBpbiBjYXNlIG9mIGV4Y2VwdGlvbi48 YnI+Jmd0OyAtICovPGJyPiZndDsgLSBjcGlwZV9wdXNoX2lucHV0KCZhbXA7dHhfcGlwZSwgJmFt cDttc2ctJmd0O2Jhc2UpOzxicj4mZ3Q7ICsgaWYgKGlwcm90b19tc2dfZGVjb2RlKG1zZywgJmFt cDtwb3MsIHJlcWVuZCwgJmFtcDtzdG9wX2lucHV0KSAhPSAtMSkgezxicj4mZ3Q7ICsgaWYgKG9i dWZfaW5faXByb3RvKSB7PGJyPiZndDsgKyAvKjxicj4mZ3Q7ICsgKiBJZiBzZXNzaW9uIHdhcyBu b3QgY3JlYXRlZCB5ZXQgYW5kIG9idWYgaXM8YnI+Jmd0OyArICogc3RpbGwgaW4gaXByb3RvIHdl IG5lZWQgdG8gZGVzdHJveSBpdC4gTmV3PGJyPiZndDsgKyAqIG9uZSB3aWxsIGJlIGNyZWF0ZWQg aW4gdHggdGhyZWFkIGlmIG5lZWRlZC48YnI+Jmd0OyArICovPGJyPiZndDsgKyBvYnVmX2Rlc3Ry b3koJmFtcDtjb24tJmd0O29idWZbMF0pOzxicj4mZ3Q7ICsgb2J1Zl9kZXN0cm95KCZhbXA7Y29u LSZndDtvYnVmWzFdKTs8YnI+Jmd0OyArIG9idWZfaW5faXByb3RvID0gZmFsc2U7PGJyPiZndDsg KyB9PGJyPiZndDsgKyBjcGlwZV9wdXNoX2lucHV0KCZhbXA7dHhfcGlwZSwgJmFtcDttc2ctJmd0 O2Jhc2UpOzxicj4mZ3Q7ICsgfTxicj4mZ3Q7ICs8YnI+Jmd0OyBuX3JlcXVlc3RzKys7PGJyPiZn dDsgLyogUmVxdWVzdCBpcyBwYXJzZWQgKi88YnI+Jmd0OyBhc3NlcnQocmVxZW5kICZndDsgcmVx c3RhcnQpOzxicj4mZ3Q7IEBAIC0xMTA1LDggKzExNDYsOCBAQCBpcHJvdG9fY29ubmVjdGlvbl9u ZXcoaW50IGZkKTxicj4mZ3Q7IGV2X2lvX2luaXQoJmFtcDtjb24tJmd0O291dHB1dCwgaXByb3Rv X2Nvbm5lY3Rpb25fb25fb3V0cHV0LCBmZCwgRVZfV1JJVEUpOzxicj4mZ3Q7IGlidWZfY3JlYXRl KCZhbXA7Y29uLSZndDtpYnVmWzBdLCBjb3JkX3NsYWJfY2FjaGUoKSwgaXByb3RvX3JlYWRhaGVh ZCk7PGJyPiZndDsgaWJ1Zl9jcmVhdGUoJmFtcDtjb24tJmd0O2lidWZbMV0sIGNvcmRfc2xhYl9j YWNoZSgpLCBpcHJvdG9fcmVhZGFoZWFkKTs8YnI+Jmd0OyAtIG9idWZfY3JlYXRlKCZhbXA7Y29u LSZndDtvYnVmWzBdLCAmYW1wO25ldF9zbGFiYywgaXByb3RvX3JlYWRhaGVhZCk7PGJyPiZndDsg LSBvYnVmX2NyZWF0ZSgmYW1wO2Nvbi0mZ3Q7b2J1ZlsxXSwgJmFtcDtuZXRfc2xhYmMsIGlwcm90 b19yZWFkYWhlYWQpOzxicj4mZ3Q7ICsgb2J1Zl9jcmVhdGUoJmFtcDtjb24tJmd0O29idWZbMF0s ICZhbXA7aXByb3RvX3NsYWJjLCBpcHJvdG9fcmVhZGFoZWFkKTs8YnI+Jmd0OyArIG9idWZfY3Jl YXRlKCZhbXA7Y29uLSZndDtvYnVmWzFdLCAmYW1wO2lwcm90b19zbGFiYywgaXByb3RvX3JlYWRh aGVhZCk7PGJyPiZndDsgY29uLSZndDtwX2lidWYgPSAmYW1wO2Nvbi0mZ3Q7aWJ1ZlswXTs8YnI+ Jmd0OyBjb24tJmd0O3R4LnBfb2J1ZiA9ICZhbXA7Y29uLSZndDtvYnVmWzBdOzxicj4mZ3Q7IGlw cm90b193cG9zX2NyZWF0ZSgmYW1wO2Nvbi0mZ3Q7d3BvcywgY29uLSZndDt0eC5wX29idWYpOzxi cj4mZ3Q7IEBAIC0xMTE0LDYgKzExNTUsNyBAQCBpcHJvdG9fY29ubmVjdGlvbl9uZXcoaW50IGZk KTxicj4mZ3Q7IGNvbi0mZ3Q7cGFyc2Vfc2l6ZSA9IDA7PGJyPiZndDsgY29uLSZndDtsb25nX3Bv bGxfY291bnQgPSAwOzxicj4mZ3Q7IGNvbi0mZ3Q7c2Vzc2lvbiA9IE5VTEw7PGJyPiZndDsgKyBj b24tJmd0O2luaXRfZmFpbGVkID0gZmFsc2U7PGJyPiZndDsgcmxpc3RfY3JlYXRlKCZhbXA7Y29u LSZndDtpbl9zdG9wX2xpc3QpOzxicj4mZ3Q7IC8qIEl0IG1heSBiZSB2ZXJ5IGF3a3dhcmQgdG8g YWxsb2NhdGUgYXQgY2xvc2UuICovPGJyPiZndDsgY21zZ19pbml0KCZhbXA7Y29uLSZndDtkZXN0 cm95X21zZywgZGVzdHJveV9yb3V0ZSk7PGJyPiZndDsgQEAgLTExMzQsMTAgKzExNzYsNiBAQCBp cHJvdG9fY29ubmVjdGlvbl9kZWxldGUoc3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24pPGJy PiZndDsgYXNzZXJ0KCFldmlvX2hhc19mZCgmYW1wO2Nvbi0mZ3Q7aW5wdXQpKTs8YnI+Jmd0OyBh c3NlcnQoY29uLSZndDtzZXNzaW9uID09IE5VTEwpOzxicj4mZ3Q7IGFzc2VydChjb24tJmd0O3N0 YXRlID09IElQUk9UT19DT05ORUNUSU9OX0RFU1RST1lFRCk7PGJyPiZndDsgLSAvKjxicj4mZ3Q7 IC0gKiBUaGUgb3V0cHV0IGJ1ZmZlcnMgbXVzdCBoYXZlIGJlZW4gZGVsZXRlZDxicj4mZ3Q7IC0g KiBpbiB0eCB0aHJlYWQuPGJyPiZndDsgLSAqLzxicj4mZ3Q7IGlidWZfZGVzdHJveSgmYW1wO2Nv bi0mZ3Q7aWJ1ZlswXSk7PGJyPiZndDsgaWJ1Zl9kZXN0cm95KCZhbXA7Y29uLSZndDtpYnVmWzFd KTs8YnI+Jmd0OyBhc3NlcnQoY29uLSZndDtvYnVmWzBdLnBvcyA9PSAwICZhbXA7JmFtcDs8YnI+ Jmd0OyBAQCAtMTE3Miw2ICsxMjEwLDkgQEAgdHhfcmVwbHlfZXJyb3Ioc3RydWN0IGlwcm90b19t c2cgKm1zZyk7PGJyPiZndDsgc3RhdGljIHZvaWQ8YnI+Jmd0OyB0eF9yZXBseV9pcHJvdG9fZXJy b3Ioc3RydWN0IGNtc2cgKm0pOzxicj4mZ3Q7PGJyPiZndDsgK3N0YXRpYyB2b2lkPGJyPiZndDsg K3R4X2FjY2VwdF93cG9zKHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uLCBjb25zdCBzdHJ1 Y3QgaXByb3RvX3dwb3MgKndwb3MpOzxicj4mZ3Q7ICs8YnI+Jmd0OyBzdGF0aWMgdm9pZDxicj4m Z3Q7IG5ldF9zZW5kX21zZyhzdHJ1Y3QgY21zZyAqbXNnKTs8YnI+Jmd0Ozxicj4mZ3Q7IEBAIC0x MjQ0LDcgKzEyODUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNtc2dfaG9wIGVycm9yX3JvdXRl W10gPSB7PGJyPiZndDsgeyBuZXRfc2VuZF9lcnJvciwgTlVMTCB9LDxicj4mZ3Q7IH07PGJyPiZn dDs8YnI+Jmd0OyAtc3RhdGljIHZvaWQ8YnI+Jmd0OyArc3RhdGljIGludDxicj4mZ3Q7IGlwcm90 b19tc2dfZGVjb2RlKHN0cnVjdCBpcHJvdG9fbXNnICptc2csIGNvbnN0IGNoYXIgKipwb3MsIGNv bnN0IGNoYXIgKnJlcWVuZCw8YnI+Jmd0OyBib29sICpzdG9wX2lucHV0KTxicj4mZ3Q7IHs8YnI+ Jmd0OyBAQCAtMTMxNCwxMyArMTM1NSwyNyBAQCBpcHJvdG9fbXNnX2RlY29kZShzdHJ1Y3QgaXBy b3RvX21zZyAqbXNnLCBjb25zdCBjaGFyICoqcG9zLCBjb25zdCBjaGFyICpyZXFlbmQsPGJyPiZn dDsgKHVpbnQzMl90KSB0eXBlKTs8YnI+PGJyPi0gWW91IGhhdmUgdGhyZWUgcG9zc2libGUgcmV0 dXJuIHZhbHVlcy4gTWF5YmUgYWRkIGEgZnVuY3Rpb248YnI+ZGVzY3JpcHRpb24/PC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxvbCBzdGFydD0iMyI+PGxpPlJpZ2h0 LCBkb25lLjwvbGk+PC9vbD48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHgg c29saWQgIzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRp diBjbGFzcz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPiZndDsgZ290 byBlcnJvcjs8YnI+Jmd0OyB9PGJyPiZndDsgLSByZXR1cm47PGJyPiZndDsgKyByZXR1cm4gMDs8 YnI+Jmd0OyBlcnJvcjo8YnI+Jmd0OyAvKiogTG9nIGFuZCBzZW5kIHRoZSBlcnJvci4gKi88YnI+ Jmd0OyBkaWFnX2xvZygpOzxicj4mZ3Q7IGRpYWdfY3JlYXRlKCZhbXA7bXNnLSZndDtkaWFnKTs8 YnI+Jmd0OyBkaWFnX21vdmUoJmFtcDtmaWJlcigpLSZndDtkaWFnLCAmYW1wO21zZy0mZ3Q7ZGlh Zyk7PGJyPiZndDsgLSBjbXNnX2luaXQoJmFtcDttc2ctJmd0O2Jhc2UsIGVycm9yX3JvdXRlKTs8 YnI+Jmd0OyArIGlmIChtc2ctJmd0O2Nvbm5lY3Rpb24tJmd0O3Nlc3Npb24gIT0gTlVMTCkgezxi cj4mZ3Q7ICsgY21zZ19pbml0KCZhbXA7bXNnLSZndDtiYXNlLCBlcnJvcl9yb3V0ZSk7PGJyPiZn dDsgKyByZXR1cm4gMTs8YnI+Jmd0OyArIH08YnI+Jmd0OyArIC8qPGJyPiZndDsgKyAqIEluIGNh c2Ugc2Vzc2lvbiB3YXMgbm90IGNyZWF0ZWQgd2UgY2FuIHByb2Nlc3MgZXJyb3IgcGF0aDxicj4m Z3Q7ICsgKiB3aXRob3V0IHR4IHRocmVhZC48YnI+Jmd0OyArICovPGJyPiZndDsgKyB0eF9hY2Nl cHRfd3Bvcyhtc2ctJmd0O2Nvbm5lY3Rpb24sICZhbXA7bXNnLSZndDt3cG9zKTs8YnI+Jmd0OyAr IHN0cnVjdCBvYnVmICpvdXQgPSBtc2ctJmd0O2Nvbm5lY3Rpb24tJmd0O3R4LnBfb2J1Zjs8YnI+ Jmd0OyArIGlwcm90b19yZXBseV9lcnJvcihvdXQsIGRpYWdfbGFzdF9lcnJvcigmYW1wO21zZy0m Z3Q7ZGlhZyksPGJyPiZndDsgKyBtc2ctJmd0O2hlYWRlci5zeW5jLCA6OnNjaGVtYV92ZXJzaW9u KTs8YnI+Jmd0OyArIGlwcm90b193cG9zX2NyZWF0ZSgmYW1wO21zZy0mZ3Q7d3Bvcywgb3V0KTs8 YnI+Jmd0OyArIG5ldF9zZW5kX21zZygmYW1wOyhtc2ctJmd0O2Jhc2UpKTs8YnI+Jmd0OyArIHJl dHVybiAtMTs8YnI+Jmd0OyB9PGJyPjxicj4tIEkgbWVhbnQgc29tZXRoaW5nIGxpa2U6PGJyPi8q KiBMb2cgYW5kIHNlbmQgdGhlIGVycm9yLiAqLzxicj5kaWFnX2xvZygpOzxicj5pZiAobXNnLSZn dDtjb25uZWN0aW9uLSZndDtzZXNzaW9uICE9IE5VTEwpIHs8YnI+ZGlhZ19jcmVhdGUoJmFtcDtt c2ctJmd0O2RpYWcpOzxicj5kaWFnX21vdmUoJmFtcDtmaWJlcigpLSZndDtkaWFnLCAmYW1wO21z Zy0mZ3Q7ZGlhZyk7PGJyPmNtc2dfaW5pdCgmYW1wO21zZy0mZ3Q7YmFzZSwgZXJyb3Jfcm91dGUp Ozxicj5yZXR1cm4gMTs8YnI+fTxicj4vKjxicj4qIEluIGNhc2Ugc2Vzc2lvbiB3YXMgbm90IGNy ZWF0ZWQgd2UgY2FuIHByb2Nlc3MgZXJyb3IgcGF0aDxicj4qIHdpdGhvdXQgdHggdGhyZWFkLjxi cj4qLzxicj50eF9hY2NlcHRfd3Bvcyhtc2ctJmd0O2Nvbm5lY3Rpb24sICZhbXA7bXNnLSZndDt3 cG9zKTs8YnI+c3RydWN0IG9idWYgKm91dCA9IG1zZy0mZ3Q7Y29ubmVjdGlvbi0mZ3Q7dHgucF9v YnVmOzxicj5pcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBkaWFnX2xhc3RfZXJyb3IoJmFtcDtmaWJl cigpLSZndDtkaWFnKSw8YnI+bXNnLSZndDtoZWFkZXIuc3luYywgOjpzY2hlbWFfdmVyc2lvbik7 PGJyPmlwcm90b193cG9zX2NyZWF0ZSgmYW1wO21zZy0mZ3Q7d3Bvcywgb3V0KTs8YnI+bmV0X3Nl bmRfbXNnKCZhbXA7KG1zZy0mZ3Q7YmFzZSkpOzxicj5yZXR1cm4gLTE7PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxvbCBzdGFydD0iNCI+PGxpPlJpZ2h0LCBpJm5i c3A7c2VlLCZuYnNwO2kmbmJzcDttYWRlIGl0IG92ZXJjb21wbGljYXRlZC4gV2UgY2FuIGFsc28g cmVwbGFjZSB0aGlzIGJsb2NrOjwvbGk+PC9vbD48ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDo0MHB4 Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MjBweDsiPjxzcGFuIHN0 eWxlPSJmb250LWZhbWlseTomcXVvdDtBbmRhbGUgTW9ubyZxdW90OywmcXVvdDtMdWNpZGEgQ29u c29sZSZxdW90OyxNb25hY28sbW9ub3NwYWNlOyI+c3RydWN0IG9idWYgKm91dCA9IG1zZy0mZ3Q7 Y29ubmVjdGlvbi0mZ3Q7dHgucF9vYnVmOzxicj5pcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBkaWFn X2xhc3RfZXJyb3IoJmFtcDtmaWJlcigpLSZndDtkaWFnKSw8YnI+Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bXNnLSZn dDtoZWFkZXIuc3luYywgOjpzY2hlbWFfdmVyc2lvbik7PGJyPmlwcm90b193cG9zX2NyZWF0ZSgm YW1wO21zZy0mZ3Q7d3Bvcywgb3V0KTwvc3Bhbj47PC9zcGFuPjwvZGl2PjxkaXY+Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwO3dpdGggYW4gZXhpc3RlbnQmbmJzcDtmdW5j dGlvbi48L2Rpdj48ZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQg IzA4NTdBNjsgbWFyZ2luOjEwcHg7IHBhZGRpbmc6MCAwIDAgMTBweDsiPjxkaXY+PGRpdiBjbGFz cz0ianMtaGVscGVyIGpzLXJlYWRtc2ctbXNnIj48ZGl2PjxkaXY+PGJyPiZndDs8YnI+Jmd0OyBz dGF0aWMgdm9pZDxicj4mZ3Q7IEBAIC0xMzgyLDEwICsxNDM3LDYgQEAgdHhfcHJvY2Vzc19kZXN0 cm95KHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IHNlc3Npb25fZGVzdHJveShjb24tJmd0O3Nlc3Np b24pOzxicj4mZ3Q7IGNvbi0mZ3Q7c2Vzc2lvbiA9IE5VTEw7IC8qIHNhZmV0eSAqLzxicj4mZ3Q7 IH08YnI+Jmd0OyAtIC8qPGJyPiZndDsgLSAqIEdvdCB0byBiZSBkb25lIGluIGlwcm90byB0aHJl YWQgc2luY2U8YnI+Jmd0OyAtICogdGhhdCdzIHdoZXJlIHRoZSBtZW1vcnkgaXMgYWxsb2NhdGVk Ljxicj4mZ3Q7IC0gKi88YnI+Jmd0OyBvYnVmX2Rlc3Ryb3koJmFtcDtjb24tJmd0O29idWZbMF0p Ozxicj4mZ3Q7IG9idWZfZGVzdHJveSgmYW1wO2Nvbi0mZ3Q7b2J1ZlsxXSk7PGJyPiZndDsgfTxi cj4mZ3Q7IEBAIC0xNDc4LDEzICsxNTI5LDI3IEBAIHR4X2FjY2VwdF93cG9zKHN0cnVjdCBpcHJv dG9fY29ubmVjdGlvbiAqY29uLCBjb25zdCBzdHJ1Y3QgaXByb3RvX3dwb3MgKndwb3MpPGJyPiZn dDsgfTxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpcHJv dG9fbXNnICo8YnI+Jmd0OyAtdHhfYWNjZXB0X21zZyhzdHJ1Y3QgY21zZyAqbSk8YnI+Jmd0OyAr c3RhdGljIGlubGluZSBpbnQ8YnI+Jmd0OyArdHhfYWNjZXB0X21zZyhzdHJ1Y3QgY21zZyAqbSwg c3RydWN0IGlwcm90b19tc2cgKiptc2cpPGJyPiZndDsgezxicj4mZ3Q7IC0gc3RydWN0IGlwcm90 b19tc2cgKm1zZyA9IChzdHJ1Y3QgaXByb3RvX21zZyAqKSBtOzxicj4mZ3Q7IC0gdHhfYWNjZXB0 X3dwb3MobXNnLSZndDtjb25uZWN0aW9uLCAmYW1wO21zZy0mZ3Q7d3Bvcyk7PGJyPiZndDsgLSB0 eF9maWJlcl9pbml0KG1zZy0mZ3Q7Y29ubmVjdGlvbi0mZ3Q7c2Vzc2lvbiwgbXNnLSZndDtoZWFk ZXIuc3luYyk7PGJyPiZndDsgLSByZXR1cm4gbXNnOzxicj4mZ3Q7ICsgKm1zZyA9IChzdHJ1Y3Qg aXByb3RvX21zZyAqKSBtOzxicj4mZ3Q7ICsgLyo8YnI+Jmd0OyArICogSW4gY2FzZSBjb25uZWN0 aW9uIGluaXQgZmFpbGVkIHdlIGRvbid0IG5lZWQgdG8gdHJ5IGFueW1vcmUuPGJyPiZndDsgKyAq Lzxicj4mZ3Q7ICsgaWYgKCgqbXNnKS0mZ3Q7Y29ubmVjdGlvbi0mZ3Q7aW5pdF9mYWlsZWQpPGJy PiZndDsgKyByZXR1cm4gLTE7PGJyPiZndDsgKyAvKjxicj4mZ3Q7ICsgKiBJbiBjYXNlIHNlc3Np b24gd2FzIG5vdCBjcmVhdGVkIHdlIG5lZWQgdG8gaW5pdCBjb25uZWN0aW9uIGluIHR4IGFuZDxi cj4mZ3Q7ICsgKiBjcmVhdGUgaXQgaGVyZS48YnI+Jmd0OyArICovPGJyPiZndDsgKyBpZiAoKCpt c2cpLSZndDtjb25uZWN0aW9uLSZndDtzZXNzaW9uID09IE5VTEwgJmFtcDsmYW1wOyB0eF9pbml0 X2Nvbm5lY3QoKm1zZykgIT0gMCkgezxicj4mZ3Q7ICsgKCptc2cpLSZndDtjb25uZWN0aW9uLSZn dDtpbml0X2ZhaWxlZCA9IHRydWU7PGJyPiZndDsgKyAoKm1zZyktJmd0O2Nsb3NlX2Nvbm5lY3Rp b24gPSB0cnVlOzxicj4mZ3Q7ICsgcmV0dXJuIC0xOzxicj4mZ3Q7ICsgfTxicj4mZ3Q7ICsgdHhf YWNjZXB0X3dwb3MoKCptc2cpLSZndDtjb25uZWN0aW9uLCAmYW1wOygqbXNnKS0mZ3Q7d3Bvcyk7 PGJyPiZndDsgKyB0eF9maWJlcl9pbml0KCgqbXNnKS0mZ3Q7Y29ubmVjdGlvbi0mZ3Q7c2Vzc2lv biwgKCptc2cpLSZndDtoZWFkZXIuc3luYyk7PGJyPiZndDsgKyByZXR1cm4gMDs8YnI+Jmd0OyB9 PGJyPiZndDs8YnI+Jmd0OyAvKio8YnI+Jmd0OyBAQCAtMTUwNyw3ICsxNTcyLDE0IEBAIHR4X3Jl cGx5X2Vycm9yKHN0cnVjdCBpcHJvdG9fbXNnICptc2cpPGJyPiZndDsgc3RhdGljIHZvaWQ8YnI+ Jmd0OyB0eF9yZXBseV9pcHJvdG9fZXJyb3Ioc3RydWN0IGNtc2cgKm0pPGJyPiZndDsgezxicj4m Z3Q7IC0gc3RydWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7PGJyPiZndDsg KyBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnOzxicj4mZ3Q7ICsgLyo8YnI+Jmd0OyArICogV2UgZG9u J3QgbmVlZCB0byBjaGVjayB0eF9hY2NlcHRfbXNnKCkgcmV0dXJuIHZhbHVlIGhlcmU8YnI+Jmd0 OyArICogYXMgZmFyIGFzIGlmIHdlIG1pZ2h0IG9ubHkgcHJvY2VzcyBpcHJvdG8gZXJyb3IgaW4g dHg8YnI+Jmd0OyArICogaW4gY2FzZSBjb25uZWN0aW9uIHNlc3Npb24gaXMgYWxyZWFkeSBjcmVh dGVkIGFuZDxicj4mZ3Q7ICsgKiB0aHVzIHR4X2FjY2VwdF9tc2coKSBjYW4ndCBmYWlsLjxicj4m Z3Q7ICsgKi88YnI+Jmd0OyArIHR4X2FjY2VwdF9tc2cobSwgJmFtcDttc2cpOzxicj4mZ3Q7IHN0 cnVjdCBvYnVmICpvdXQgPSBtc2ctJmd0O2Nvbm5lY3Rpb24tJmd0O3R4LnBfb2J1Zjs8YnI+Jmd0 OyBpcHJvdG9fcmVwbHlfZXJyb3Iob3V0LCBkaWFnX2xhc3RfZXJyb3IoJmFtcDttc2ctJmd0O2Rp YWcpLDxicj4mZ3Q7IG1zZy0mZ3Q7aGVhZGVyLnN5bmMsIDo6c2NoZW1hX3ZlcnNpb24pOzxicj4m Z3Q7IEBAIC0xNTI3LDcgKzE1OTksOSBAQCB0eF9pbmplY3RfZGVsYXkodm9pZCk8YnI+Jmd0OyBz dGF0aWMgdm9pZDxicj4mZ3Q7IHR4X3Byb2Nlc3MxKHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IHs8 YnI+Jmd0OyAtIHN0cnVjdCBpcHJvdG9fbXNnICptc2cgPSB0eF9hY2NlcHRfbXNnKG0pOzxicj4m Z3Q7ICsgc3RydWN0IGlwcm90b19tc2cgKm1zZzs8YnI+Jmd0OyArIGlmICh0eF9hY2NlcHRfbXNn KG0sICZhbXA7bXNnKSAhPSAwKTxicj4mZ3Q7ICsgZ290byBlcnJvcjs8YnI+Jmd0OyBpZiAodHhf Y2hlY2tfc2NoZW1hKG1zZy0mZ3Q7aGVhZGVyLnNjaGVtYV92ZXJzaW9uKSk8YnI+Jmd0OyBnb3Rv IGVycm9yOzxicj4mZ3Q7PGJyPiZndDsgQEAgLTE1NTMsMTcgKzE2MjcsMjAgQEAgZXJyb3I6PGJy PiZndDsgc3RhdGljIHZvaWQ8YnI+Jmd0OyB0eF9wcm9jZXNzX3NlbGVjdChzdHJ1Y3QgY21zZyAq bSk8YnI+Jmd0OyB7PGJyPiZndDsgLSBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gdHhfYWNjZXB0 X21zZyhtKTs8YnI+Jmd0OyArIHN0cnVjdCBpcHJvdG9fbXNnICptc2c7PGJyPiZndDsgKyBzdHJ1 Y3QgcmVxdWVzdCAqcmVxOzxicj4mZ3Q7IHN0cnVjdCBvYnVmICpvdXQ7PGJyPiZndDsgc3RydWN0 IG9idWZfc3ZwIHN2cDs8YnI+Jmd0OyBzdHJ1Y3QgcG9ydCBwb3J0Ozxicj4mZ3Q7IGludCBjb3Vu dDs8YnI+Jmd0OyBpbnQgcmM7PGJyPiZndDsgLSBzdHJ1Y3QgcmVxdWVzdCAqcmVxID0gJmFtcDtt c2ctJmd0O2RtbDs8YnI+Jmd0OyArIGlmICh0eF9hY2NlcHRfbXNnKG0sICZhbXA7bXNnKSAhPSAw KTxicj4mZ3Q7ICsgZ290byBlcnJvcjs8YnI+Jmd0OyBpZiAodHhfY2hlY2tfc2NoZW1hKG1zZy0m Z3Q7aGVhZGVyLnNjaGVtYV92ZXJzaW9uKSk8YnI+Jmd0OyBnb3RvIGVycm9yOzxicj4mZ3Q7PGJy PiZndDsgdHhfaW5qZWN0X2RlbGF5KCk7PGJyPiZndDsgKyByZXEgPSAmYW1wO21zZy0mZ3Q7ZG1s Ozxicj4mZ3Q7IHJjID0gYm94X3NlbGVjdChyZXEtJmd0O3NwYWNlX2lkLCByZXEtJmd0O2luZGV4 X2lkLDxicj4mZ3Q7IHJlcS0mZ3Q7aXRlcmF0b3IsIHJlcS0mZ3Q7b2Zmc2V0LCByZXEtJmd0O2xp bWl0LDxicj4mZ3Q7IHJlcS0mZ3Q7a2V5LCByZXEtJmd0O2tleV9lbmQsICZhbXA7cG9ydCk7PGJy PiZndDsgQEAgLTE2MDcsNyArMTY4NCw5IEBAIHR4X3Byb2Nlc3NfY2FsbF9vbl95aWVsZChzdHJ1 Y3QgdHJpZ2dlciAqdHJpZ2dlciwgdm9pZCAqZXZlbnQpPGJyPiZndDsgc3RhdGljIHZvaWQ8YnI+ Jmd0OyB0eF9wcm9jZXNzX2NhbGwoc3RydWN0IGNtc2cgKm0pPGJyPiZndDsgezxicj4mZ3Q7IC0g c3RydWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7PGJyPiZndDsgKyBzdHJ1 Y3QgaXByb3RvX21zZyAqbXNnOzxicj4mZ3Q7ICsgaWYgKHR4X2FjY2VwdF9tc2cobSwgJmFtcDtt c2cpICE9IDApPGJyPiZndDsgKyBnb3RvIGVycm9yOzxicj4mZ3Q7IGlmICh0eF9jaGVja19zY2hl bWEobXNnLSZndDtoZWFkZXIuc2NoZW1hX3ZlcnNpb24pKTxicj4mZ3Q7IGdvdG8gZXJyb3I7PGJy PiZndDs8YnI+Jmd0OyBAQCAtMTY4NiwxMyArMTc2NSwxNSBAQCBlcnJvcjo8YnI+Jmd0OyBzdGF0 aWMgdm9pZDxicj4mZ3Q7IHR4X3Byb2Nlc3NfbWlzYyhzdHJ1Y3QgY21zZyAqbSk8YnI+Jmd0OyB7 PGJyPiZndDsgLSBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gdHhfYWNjZXB0X21zZyhtKTs8YnI+ Jmd0OyAtIHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLSZndDtjb25uZWN0aW9u Ozxicj4mZ3Q7IC0gc3RydWN0IG9idWYgKm91dCA9IGNvbi0mZ3Q7dHgucF9vYnVmOzxicj4mZ3Q7 ICsgc3RydWN0IGlwcm90b19tc2cgKm1zZzs8YnI+Jmd0OyArIGlmICh0eF9hY2NlcHRfbXNnKG0s ICZhbXA7bXNnKSAhPSAwKTxicj4mZ3Q7ICsgZ290byBlcnJvcjs8YnI+Jmd0OyBpZiAodHhfY2hl Y2tfc2NoZW1hKG1zZy0mZ3Q7aGVhZGVyLnNjaGVtYV92ZXJzaW9uKSk8YnI+Jmd0OyBnb3RvIGVy cm9yOzxicj4mZ3Q7PGJyPiZndDsgdHJ5IHs8YnI+Jmd0OyArIHN0cnVjdCBpcHJvdG9fY29ubmVj dGlvbiAqY29uID0gbXNnLSZndDtjb25uZWN0aW9uOzxicj4mZ3Q7ICsgc3RydWN0IG9idWYgKm91 dCA9IGNvbi0mZ3Q7dHgucF9vYnVmOzxicj4mZ3Q7IHN0cnVjdCBiYWxsb3QgYmFsbG90Ozxicj4m Z3Q7IHN3aXRjaCAobXNnLSZndDtoZWFkZXIudHlwZSkgezxicj4mZ3Q7IGNhc2UgSVBST1RPX0FV VEg6PGJyPiZndDsgQEAgLTE3MjksNyArMTgxMCw3IEBAIGVycm9yOjxicj4mZ3Q7IHN0YXRpYyB2 b2lkPGJyPiZndDsgdHhfcHJvY2Vzc19zcWwoc3RydWN0IGNtc2cgKm0pPGJyPiZndDsgezxicj4m Z3Q7IC0gc3RydWN0IGlwcm90b19tc2cgKm1zZyA9IHR4X2FjY2VwdF9tc2cobSk7PGJyPiZndDsg KyBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnOzxicj4mZ3Q7IHN0cnVjdCBvYnVmICpvdXQ7PGJyPiZn dDsgc3RydWN0IHBvcnQgcG9ydDs8YnI+Jmd0OyBzdHJ1Y3Qgc3FsX2JpbmQgKmJpbmQgPSBOVUxM Ozxicj4mZ3Q7IEBAIC0xNzM4LDYgKzE4MTksOCBAQCB0eF9wcm9jZXNzX3NxbChzdHJ1Y3QgY21z ZyAqbSk8YnI+Jmd0OyB1aW50MzJfdCBsZW47PGJyPiZndDsgYm9vbCBpc191bnByZXBhcmUgPSBm YWxzZTs8YnI+Jmd0Ozxicj4mZ3Q7ICsgaWYgKHR4X2FjY2VwdF9tc2cobSwgJmFtcDttc2cpICE9 IDApPGJyPiZndDsgKyBnb3RvIGVycm9yOzxicj4mZ3Q7IGlmICh0eF9jaGVja19zY2hlbWEobXNn LSZndDtoZWFkZXIuc2NoZW1hX3ZlcnNpb24pKTxicj4mZ3Q7IGdvdG8gZXJyb3I7PGJyPiZndDsg YXNzZXJ0KG1zZy0mZ3Q7aGVhZGVyLnR5cGUgPT0gSVBST1RPX0VYRUNVVEUgfHw8YnI+Jmd0OyBA QCAtMTgyNSw3ICsxOTA4LDExIEBAIGVycm9yOjxicj4mZ3Q7IHN0YXRpYyB2b2lkPGJyPiZndDsg dHhfcHJvY2Vzc19yZXBsaWNhdGlvbihzdHJ1Y3QgY21zZyAqbSk8YnI+Jmd0OyB7PGJyPiZndDsg LSBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gdHhfYWNjZXB0X21zZyhtKTs8YnI+Jmd0OyArIHN0 cnVjdCBpcHJvdG9fbXNnICptc2c7PGJyPiZndDsgKyBpZiAodHhfYWNjZXB0X21zZyhtLCAmYW1w O21zZykgIT0gMCkgezxicj4mZ3Q7ICsgdHhfcmVwbHlfZXJyb3IobXNnKTs8YnI+Jmd0OyArIHJl dHVybjs8YnI+Jmd0OyArIH08YnI+Jmd0OyBzdHJ1Y3QgaXByb3RvX2Nvbm5lY3Rpb24gKmNvbiA9 IG1zZy0mZ3Q7Y29ubmVjdGlvbjs8YnI+Jmd0OyBzdHJ1Y3QgZXZfaW8gaW87PGJyPiZndDsgY29p b19jcmVhdGUoJmFtcDtpbywgY29uLSZndDtpbnB1dC5mZCk7PGJyPiZndDsgQEAgLTE4NjUsNiAr MTk1MiwyOSBAQCB0eF9wcm9jZXNzX3JlcGxpY2F0aW9uKHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7 IH08YnI+Jmd0OyB9PGJyPiZndDs8YnI+Jmd0OyArLyoqPGJyPiZndDsgKyAqIENoZWNrIGNvbm5l Y3Rpb24gaGVhbHRoIGFuZCB0cnkgdG8gc2VuZCBhbiBlcnJvciB0byB0aGUgY2xpZW50PGJyPiZn dDsgKyAqIGluIGNhc2Ugb2YgaW50ZXJuYWwgY29ubmVjdGlvbiBpbml0IG9yIG9uX2Nvbm5lY3Qg dHJpZ2dlciBmYWlsdXJlLjxicj4mZ3Q7ICsgKi88YnI+Jmd0OyArc3RhdGljIGJvb2w8YnI+Jmd0 OyAraXByb3RvX2Nvbm5lY3Rpb25fZmFpbChzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKTxicj4mZ3Q7 ICt7PGJyPiZndDsgKyBpZiAoIW1zZy0mZ3Q7Y2xvc2VfY29ubmVjdGlvbik8YnI+Jmd0OyArIHJl dHVybiBmYWxzZTs8YnI+Jmd0OyArIHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNn LSZndDtjb25uZWN0aW9uOzxicj4mZ3Q7ICsgaW50NjRfdCBud3IgPSBzaW9fd3JpdGV2KGNvbi0m Z3Q7b3V0cHV0LmZkLCBtc2ctJmd0O3dwb3Mub2J1Zi0mZ3Q7aW92LDxicj4mZ3Q7ICsgb2J1Zl9p b3ZjbnQobXNnLSZndDt3cG9zLm9idWYpKTs8YnI+Jmd0OyArIGlmIChud3IgJmd0OyAwKSB7PGJy PiZndDsgKyAvKiBDb3VudCBzdGF0aXN0aWNzLiAqLzxicj4mZ3Q7ICsgcm1lYW5fY29sbGVjdChy bWVhbl9uZXQsIElQUk9UT19TRU5ULCBud3IpOzxicj4mZ3Q7ICsgfSBlbHNlIGlmIChud3IgJmx0 OyAwICZhbXA7JmFtcDsgISBzaW9fd291bGRibG9jayhlcnJubykpIHs8YnI+Jmd0OyArIGRpYWdf bG9nKCk7PGJyPiZndDsgKyB9PGJyPiZndDsgKyBpcHJvdG9fY29ubmVjdGlvbl9jbG9zZShjb24p Ozxicj4mZ3Q7ICsgaXByb3RvX21zZ19kZWxldGUobXNnKTs8YnI+Jmd0OyArIHJldHVybiB0cnVl Ozxicj4mZ3Q7ICt9PGJyPiZndDsgKzxicj4mZ3Q7IHN0YXRpYyB2b2lkPGJyPiZndDsgbmV0X3Nl bmRfbXNnKHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IHs8YnI+Jmd0OyBAQCAtMTg4MSw2ICsxOTkx LDkgQEAgbmV0X3NlbmRfbXNnKHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IH08YnI+Jmd0OyBjb24t Jmd0O3dlbmQgPSBtc2ctJmd0O3dwb3M7PGJyPiZndDs8YnI+Jmd0OyArIGlmIChpcHJvdG9fY29u bmVjdGlvbl9mYWlsKG1zZykpPGJyPiZndDsgKyByZXR1cm47PGJyPiZndDsgKzxicj4mZ3Q7IGlm IChldmlvX2hhc19mZCgmYW1wO2Nvbi0mZ3Q7b3V0cHV0KSkgezxicj4mZ3Q7IGlmICghIGV2X2lz X2FjdGl2ZSgmYW1wO2Nvbi0mZ3Q7b3V0cHV0KSk8YnI+Jmd0OyBldl9mZWVkX2V2ZW50KGNvbi0m Z3Q7bG9vcCwgJmFtcDtjb24tJmd0O291dHB1dCwgRVZfV1JJVEUpOzxicj4mZ3Q7IEBAIC0xOTEw LDYgKzIwMjMsMTAgQEAgbmV0X2VuZF9qb2luKHN0cnVjdCBjbXNnICptKTxicj4mZ3Q7IHN0cnVj dCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLSZndDtjb25uZWN0aW9uOzxicj4mZ3Q7PGJy PiZndDsgbXNnLSZndDtwX2lidWYtJmd0O3Jwb3MgKz0gbXNnLSZndDtsZW47PGJyPiZndDsgKzxi cj4mZ3Q7ICsgaWYgKGlwcm90b19jb25uZWN0aW9uX2ZhaWwobXNnKSk8YnI+Jmd0OyArIHJldHVy bjs8YnI+Jmd0OyArPGJyPiZndDsgaXByb3RvX21zZ19kZWxldGUobXNnKTs8YnI+Jmd0Ozxicj4m Z3Q7IGFzc2VydCghIGV2X2lzX2FjdGl2ZSgmYW1wO2Nvbi0mZ3Q7aW5wdXQpKTs8YnI+Jmd0OyBA QCAtMTkyOCw2ICsyMDQ1LDEwIEBAIG5ldF9lbmRfc3Vic2NyaWJlKHN0cnVjdCBjbXNnICptKTxi cj4mZ3Q7IHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAqY29uID0gbXNnLSZndDtjb25uZWN0aW9u Ozxicj4mZ3Q7PGJyPiZndDsgbXNnLSZndDtwX2lidWYtJmd0O3Jwb3MgKz0gbXNnLSZndDtsZW47 PGJyPiZndDsgKzxicj4mZ3Q7ICsgaWYgKGlwcm90b19jb25uZWN0aW9uX2ZhaWwobXNnKSk8YnI+ Jmd0OyArIHJldHVybjs8YnI+Jmd0OyArPGJyPiZndDsgaXByb3RvX21zZ19kZWxldGUobXNnKTs8 YnI+Jmd0Ozxicj4mZ3Q7IGFzc2VydCghIGV2X2lzX2FjdGl2ZSgmYW1wO2Nvbi0mZ3Q7aW5wdXQp KTs8YnI+Jmd0OyBAQCAtMTkzNiw4MSArMjA1Nyw2MCBAQCBuZXRfZW5kX3N1YnNjcmliZShzdHJ1 Y3QgY21zZyAqbSk8YnI+Jmd0OyB9PGJyPiZndDs8YnI+Jmd0OyAvKio8YnI+Jmd0OyAtICogSGFu ZHNoYWtlIGEgY29ubmVjdGlvbjogaW52b2tlIHRoZSBvbi1jb25uZWN0IHRyaWdnZXI8YnI+Jmd0 OyAtICogYW5kIHBvc3NpYmx5IGF1dGhlbnRpY2F0ZS4gVHJ5IHRvIHNlbmQgdGhlIGNsaWVudCBh biBlcnJvcjxicj4mZ3Q7IC0gKiB1cG9uIGEgZmFpbHVyZS48YnI+Jmd0OyArICogSGFuZHNoYWtl IGEgY29ubmVjdGlvbjogcHJlcGFyZSBncmVldGluZyBmb3IgaXQuPGJyPiZndDsgKi88YnI+Jmd0 OyBzdGF0aWMgdm9pZDxicj4mZ3Q7IC10eF9wcm9jZXNzX2Nvbm5lY3Qoc3RydWN0IGNtc2cgKm0p PGJyPiZndDsgK2lwcm90b19wcm9jZXNzX2Nvbm5lY3Qoc3RydWN0IGlwcm90b19tc2cgKm1zZyk8 YnI+Jmd0OyB7PGJyPiZndDsgLSBzdHJ1Y3QgaXByb3RvX21zZyAqbXNnID0gKHN0cnVjdCBpcHJv dG9fbXNnICopIG07PGJyPiZndDsgc3RydWN0IGlwcm90b19jb25uZWN0aW9uICpjb24gPSBtc2ct Jmd0O2Nvbm5lY3Rpb247PGJyPiZndDsgc3RydWN0IG9idWYgKm91dCA9IG1zZy0mZ3Q7Y29ubmVj dGlvbi0mZ3Q7dHgucF9vYnVmOzxicj4mZ3Q7IC0gdHJ5IHsgLyogY29ubmVjdC4gKi88YnI+Jmd0 OyAtIGNvbi0mZ3Q7c2Vzc2lvbiA9IHNlc3Npb25fY3JlYXRlKFNFU1NJT05fVFlQRV9CSU5BUlkp Ozxicj4mZ3Q7IC0gaWYgKGNvbi0mZ3Q7c2Vzc2lvbiA9PSBOVUxMKTxicj4mZ3Q7IC0gZGlhZ19y YWlzZSgpOzxicj4mZ3Q7IC0gY29uLSZndDtzZXNzaW9uLSZndDttZXRhLmNvbm5lY3Rpb24gPSBj b247PGJyPiZndDsgLSB0eF9maWJlcl9pbml0KGNvbi0mZ3Q7c2Vzc2lvbiwgMCk7PGJyPiZndDsg LSBjaGFyICpncmVldGluZyA9IChjaGFyICopIHN0YXRpY19hbGxvYyhJUFJPVE9fR1JFRVRJTkdf U0laRSk7PGJyPiZndDsgLSAvKiBUT0RPOiBkaXJ0eSByZWFkIGZyb20gdHggdGhyZWFkICovPGJy PiZndDsgLSBzdHJ1Y3QgdHRfdXVpZCB1dWlkID0gSU5TVEFOQ0VfVVVJRDs8YnI+Jmd0OyAtIHJh bmRvbV9ieXRlcyhjb24tJmd0O3NhbHQsIElQUk9UT19TQUxUX1NJWkUpOzxicj4mZ3Q7IC0gZ3Jl ZXRpbmdfZW5jb2RlKGdyZWV0aW5nLCB0YXJhbnRvb2xfdmVyc2lvbl9pZCgpLCAmYW1wO3V1aWQs PGJyPiZndDsgLSBjb24tJmd0O3NhbHQsIElQUk9UT19TQUxUX1NJWkUpOzxicj4mZ3Q7IC0gb2J1 Zl9kdXBfeGMob3V0LCBncmVldGluZywgSVBST1RPX0dSRUVUSU5HX1NJWkUpOzxicj4mZ3Q7IC0g aWYgKCEgcmxpc3RfZW1wdHkoJmFtcDtzZXNzaW9uX29uX2Nvbm5lY3QpKSB7PGJyPiZndDsgLSBp ZiAoc2Vzc2lvbl9ydW5fb25fY29ubmVjdF90cmlnZ2Vycyhjb24tJmd0O3Nlc3Npb24pICE9IDAp PGJyPiZndDsgLSBkaWFnX3JhaXNlKCk7PGJyPiZndDsgLSB9PGJyPiZndDsgKyBjaGFyICpncmVl dGluZyA9IChjaGFyICopIHN0YXRpY19hbGxvYyhJUFJPVE9fR1JFRVRJTkdfU0laRSk7PGJyPiZn dDsgKyAvKiBUT0RPOiBkaXJ0eSByZWFkIGZyb20gdHggdGhyZWFkICovPGJyPiZndDsgKyBzdHJ1 Y3QgdHRfdXVpZCB1dWlkID0gSU5TVEFOQ0VfVVVJRDs8YnI+Jmd0OyArIHJhbmRvbV9ieXRlcyhj b24tJmd0O3NhbHQsIElQUk9UT19TQUxUX1NJWkUpOzxicj4mZ3Q7ICsgZ3JlZXRpbmdfZW5jb2Rl KGdyZWV0aW5nLCB0YXJhbnRvb2xfdmVyc2lvbl9pZCgpLCAmYW1wO3V1aWQsPGJyPiZndDsgKyBj b24tJmd0O3NhbHQsIElQUk9UT19TQUxUX1NJWkUpOzxicj4mZ3Q7ICsgaWYgKG9idWZfZHVwKG91 dCwgZ3JlZXRpbmcsIElQUk9UT19HUkVFVElOR19TSVpFKTxicj4mZ3Q7ICsgIT0gSVBST1RPX0dS RUVUSU5HX1NJWkUpIHs8YnI+Jmd0OyArIGRpYWdfc2V0KE91dE9mTWVtb3J5LCBJUFJPVE9fR1JF RVRJTkdfU0laRSw8YnI+Jmd0OyArICJncmVldGluZyBvYnVmIiwgImR1cCIpOzxicj4mZ3Q7ICsg aXByb3RvX3JlcGx5X2Vycm9yKG91dCwgZGlhZ19sYXN0X2Vycm9yKCZhbXA7ZmliZXIoKS0mZ3Q7 ZGlhZyksPGJyPiZndDsgKyBtc2ctJmd0O2hlYWRlci5zeW5jLCA6OnNjaGVtYV92ZXJzaW9uKTs8 YnI+Jmd0OyBpcHJvdG9fd3Bvc19jcmVhdGUoJmFtcDttc2ctJmd0O3dwb3MsIG91dCk7PGJyPiZn dDsgLSB9IGNhdGNoIChFeGNlcHRpb24gKmUpIHs8YnI+Jmd0OyAtIHR4X3JlcGx5X2Vycm9yKG1z Zyk7PGJyPiZndDsgbXNnLSZndDtjbG9zZV9jb25uZWN0aW9uID0gdHJ1ZTs8YnI+Jmd0OyAtIH08 YnI+Jmd0OyAtfTxicj4mZ3Q7IC08YnI+Jmd0OyAtLyoqPGJyPiZndDsgLSAqIFNlbmQgYSByZXNw b25zZSB0byBjb25uZWN0IHRvIHRoZSBjbGllbnQgb3IgY2xvc2UgdGhlPGJyPiZndDsgLSAqIGNv bm5lY3Rpb24gaW4gY2FzZSBvbl9jb25uZWN0IHRyaWdnZXIgZmFpbGVkLjxicj4mZ3Q7IC0gKi88 YnI+Jmd0OyAtc3RhdGljIHZvaWQ8YnI+Jmd0OyAtbmV0X3NlbmRfZ3JlZXRpbmcoc3RydWN0IGNt c2cgKm0pPGJyPiZndDsgLXs8YnI+Jmd0OyAtIHN0cnVjdCBpcHJvdG9fbXNnICptc2cgPSAoc3Ry dWN0IGlwcm90b19tc2cgKikgbTs8YnI+Jmd0OyAtIHN0cnVjdCBpcHJvdG9fY29ubmVjdGlvbiAq Y29uID0gbXNnLSZndDtjb25uZWN0aW9uOzxicj4mZ3Q7IC0gaWYgKG1zZy0mZ3Q7Y2xvc2VfY29u bmVjdGlvbikgezxicj4mZ3Q7IC0gc3RydWN0IG9idWYgKm91dCA9IG1zZy0mZ3Q7d3Bvcy5vYnVm Ozxicj4mZ3Q7IC0gaW50NjRfdCBud3IgPSBzaW9fd3JpdGV2KGNvbi0mZ3Q7b3V0cHV0LmZkLCBv dXQtJmd0O2lvdiw8YnI+Jmd0OyAtIG9idWZfaW92Y250KG91dCkpOzxicj4mZ3Q7IC08YnI+Jmd0 OyAtIGlmIChud3IgJmd0OyAwKSB7PGJyPiZndDsgLSAvKiBDb3VudCBzdGF0aXN0aWNzLiAqLzxi cj4mZ3Q7IC0gcm1lYW5fY29sbGVjdChybWVhbl9uZXQsIElQUk9UT19TRU5ULCBud3IpOzxicj4m Z3Q7IC0gfSBlbHNlIGlmIChud3IgJmx0OyAwICZhbXA7JmFtcDsgISBzaW9fd291bGRibG9jayhl cnJubykpIHs8YnI+Jmd0OyAtIGRpYWdfbG9nKCk7PGJyPiZndDsgLSB9PGJyPiZndDsgLSBhc3Nl cnQoaXByb3RvX2Nvbm5lY3Rpb25faXNfaWRsZShjb24pKTs8YnI+Jmd0OyAtIGlwcm90b19jb25u ZWN0aW9uX2Nsb3NlKGNvbik7PGJyPiZndDsgLSBpcHJvdG9fbXNnX2RlbGV0ZShtc2cpOzxicj4m Z3Q7ICsgaXByb3RvX2Nvbm5lY3Rpb25fZmFpbChtc2cpOzxicj4mZ3Q7IHJldHVybjs8YnI+Jmd0 OyB9PGJyPiZndDsgKyBpcHJvdG9fd3Bvc19jcmVhdGUoJmFtcDttc2ctJmd0O3dwb3MsIG91dCk7 PGJyPiZndDsgY29uLSZndDt3ZW5kID0gbXNnLSZndDt3cG9zOzxicj4mZ3Q7IC0gLyo8YnI+Jmd0 OyAtICogQ29ubmVjdCBpcyBzeW5jaHJvbm91cywgc28gbm8gb25lIGNvdWxkIGhhdmUgYmVlbjxi cj4mZ3Q7IC0gKiBtZXNzaW5nIHVwIHdpdGggdGhlIGNvbm5lY3Rpb24gd2hpbGUgaXQgd2FzIGlu PGJyPiZndDsgLSAqIHByb2dyZXNzLjxicj4mZ3Q7IC0gKi88YnI+Jmd0OyBhc3NlcnQoZXZpb19o YXNfZmQoJmFtcDtjb24tJmd0O291dHB1dCkpOzxicj4mZ3Q7IC0gLyogSGFuZHNoYWtlIE9LLCBz dGFydCByZWFkaW5nIGlucHV0LiAqLzxicj4mZ3Q7IGV2X2ZlZWRfZXZlbnQoY29uLSZndDtsb29w LCAmYW1wO2Nvbi0mZ3Q7b3V0cHV0LCBFVl9XUklURSk7PGJyPiZndDsgaXByb3RvX21zZ19kZWxl dGUobXNnKTs8YnI+Jmd0OyB9PGJyPiZndDs8YnI+Jmd0OyAtc3RhdGljIGNvbnN0IHN0cnVjdCBj bXNnX2hvcCBjb25uZWN0X3JvdXRlW10gPSB7PGJyPiZndDsgLSB7IHR4X3Byb2Nlc3NfY29ubmVj dCwgJmFtcDtuZXRfcGlwZSB9LDxicj4mZ3Q7IC0geyBuZXRfc2VuZF9ncmVldGluZywgTlVMTCB9 LDxicj4mZ3Q7IC19Ozxicj4mZ3Q7ICtzdGF0aWMgaW50PGJyPiZndDsgK3R4X2luaXRfY29ubmVj dChzdHJ1Y3QgaXByb3RvX21zZyAqbXNnKTxicj4mZ3Q7ICt7PGJyPiZndDsgKyBzdHJ1Y3QgaXBy b3RvX2Nvbm5lY3Rpb24gKmNvbiA9IG1zZy0mZ3Q7Y29ubmVjdGlvbjs8YnI+Jmd0OyArIG9idWZf Y3JlYXRlKCZhbXA7Y29uLSZndDtvYnVmWzBdLCAmYW1wO25ldF9zbGFiYywgaXByb3RvX3JlYWRh aGVhZCk7PGJyPiZndDsgKyBvYnVmX2NyZWF0ZSgmYW1wO2Nvbi0mZ3Q7b2J1ZlsxXSwgJmFtcDtu ZXRfc2xhYmMsIGlwcm90b19yZWFkYWhlYWQpOzxicj4mZ3Q7ICsgY29uLSZndDt0eC5wX29idWYg PSAmYW1wO2Nvbi0mZ3Q7b2J1ZlswXTs8YnI+Jmd0OyArIGlwcm90b193cG9zX2NyZWF0ZSgmYW1w O2Nvbi0mZ3Q7d3BvcywgY29uLSZndDt0eC5wX29idWYpOzxicj4mZ3Q7ICsgaXByb3RvX3dwb3Nf Y3JlYXRlKCZhbXA7Y29uLSZndDt3ZW5kLCBjb24tJmd0O3R4LnBfb2J1Zik7PGJyPiZndDsgKzxi cj4mZ3Q7ICsgY29uLSZndDtzZXNzaW9uID0gc2Vzc2lvbl9jcmVhdGUoU0VTU0lPTl9UWVBFX0JJ TkFSWSk7PGJyPiZndDsgKyBpZiAoY29uLSZndDtzZXNzaW9uID09IE5VTEwpPGJyPiZndDsgKyBy ZXR1cm4gLTE7PGJyPiZndDsgKyBjb24tJmd0O3Nlc3Npb24tJmd0O21ldGEuY29ubmVjdGlvbiA9 IGNvbjs8YnI+Jmd0OyArPGJyPiZndDsgKyB0eF9maWJlcl9pbml0KGNvbi0mZ3Q7c2Vzc2lvbiwg MCk7PGJyPiZndDsgKyBpZiAoISBybGlzdF9lbXB0eSgmYW1wO3Nlc3Npb25fb25fY29ubmVjdCkp IHs8YnI+Jmd0OyArIGlmIChzZXNzaW9uX3J1bl9vbl9jb25uZWN0X3RyaWdnZXJzKGNvbi0mZ3Q7 c2Vzc2lvbikgIT0gMCk8YnI+Jmd0OyArIHJldHVybiAtMTs8YnI+Jmd0OyArIH08YnI+Jmd0OyAr PGJyPiZndDsgKyByZXR1cm4gMDs8YnI+Jmd0OyArfTxicj4mZ3Q7PGJyPiZndDsgLyoqIH19fSAq Lzxicj4mZ3Q7PGJyPiZndDsgQEAgLTIwMzcsMTEgKzIxMzcsMTAgQEAgaXByb3RvX29uX2FjY2Vw dChzdHJ1Y3QgZXZpb19zZXJ2aWNlICogLyogc2VydmljZSAqLywgaW50IGZkLDxicj4mZ3Q7IG1l bXBvb2xfZnJlZSgmYW1wO2lwcm90b19jb25uZWN0aW9uX3Bvb2wsIGNvbik7PGJyPiZndDsgcmV0 dXJuIC0xOzxicj4mZ3Q7IH08YnI+Jmd0OyAtIGNtc2dfaW5pdCgmYW1wO21zZy0mZ3Q7YmFzZSwg Y29ubmVjdF9yb3V0ZSk7PGJyPiZndDsgbXNnLSZndDtwX2lidWYgPSBjb24tJmd0O3BfaWJ1Zjs8 YnI+Jmd0OyBtc2ctJmd0O3dwb3MgPSBjb24tJmd0O3dwb3M7PGJyPiZndDsgbXNnLSZndDtjbG9z ZV9jb25uZWN0aW9uID0gZmFsc2U7PGJyPiZndDsgLSBjcGlwZV9wdXNoKCZhbXA7dHhfcGlwZSwg JmFtcDttc2ctJmd0O2Jhc2UpOzxicj4mZ3Q7ICsgaXByb3RvX3Byb2Nlc3NfY29ubmVjdChtc2cp Ozxicj4mZ3Q7IHJldHVybiAwOzxicj4mZ3Q7IH08YnI+Jmd0Ozxicj4mZ3Q7IEBAIC0yMDU0LDYg KzIxNTMsOCBAQCBzdGF0aWMgc3RydWN0IGV2aW9fc2VydmljZSBiaW5hcnk7IC8qIGlwcm90byBi aW5hcnkgbGlzdGVuZXIgKi88YnI+Jmd0OyBzdGF0aWMgaW50PGJyPiZndDsgbmV0X2NvcmRfZih2 YV9saXN0IC8qIGFwICovKTxicj4mZ3Q7IHs8YnI+Jmd0OyArIHNsYWJfY2FjaGVfY3JlYXRlKCZh bXA7aXByb3RvX3NsYWJjLCAmYW1wO3J1bnRpbWUpOzxicj4mZ3Q7ICs8YnI+Jmd0OyBtZW1wb29s X2NyZWF0ZSgmYW1wO2lwcm90b19tc2dfcG9vbCwgJmFtcDtjb3JkKCktJmd0O3NsYWJjLDxicj4m Z3Q7IHNpemVvZihzdHJ1Y3QgaXByb3RvX21zZykpOzxicj4mZ3Q7IG1lbXBvb2xfY3JlYXRlKCZh bXA7aXByb3RvX2Nvbm5lY3Rpb25fcG9vbCwgJmFtcDtjb3JkKCktJmd0O3NsYWJjLDxicj4mZ3Q7 IEBAIC0yMjk3LDcgKzIzOTgsOCBAQCBpcHJvdG9fbGlzdGVuKGNvbnN0IGNoYXIgKnVyaSk8YnI+ Jmd0OyBzaXplX3Q8YnI+Jmd0OyBpcHJvdG9fbWVtX3VzZWQodm9pZCk8YnI+Jmd0OyB7PGJyPiZn dDsgLSByZXR1cm4gc2xhYl9jYWNoZV91c2VkKCZhbXA7bmV0X2NvcmQuc2xhYmMpICsgc2xhYl9j YWNoZV91c2VkKCZhbXA7bmV0X3NsYWJjKTs8YnI+Jmd0OyArIHJldHVybiBzbGFiX2NhY2hlX3Vz ZWQoJmFtcDtuZXRfY29yZC5zbGFiYyk8YnI+Jmd0OyArICsgc2xhYl9jYWNoZV91c2VkKCZhbXA7 bmV0X3NsYWJjKSArIHNsYWJfY2FjaGVfdXNlZCgmYW1wO2lwcm90b19zbGFiYyk7PGJyPiZndDsg fTxicj4mZ3Q7PGJyPiZndDsgc2l6ZV90PGJyPiZndDsgZGlmZiAtLWdpdCBhL3Rlc3QvYm94LXB5 L2JhZF90cmlnZ2VyLnJlc3VsdCBiL3Rlc3QvYm94LXB5L2JhZF90cmlnZ2VyLnJlc3VsdDxicj4m Z3Q7IGluZGV4IDVkMDY0Yjc2NDguLmJmYTljMmI3NTkgMTAwNjQ0PGJyPiZndDsgLS0tIGEvdGVz dC9ib3gtcHkvYmFkX3RyaWdnZXIucmVzdWx0PGJyPiZndDsgKysrIGIvdGVzdC9ib3gtcHkvYmFk X3RyaWdnZXIucmVzdWx0PGJyPiZndDsgQEAgLTE0LDYgKzE0LDcgQEAgdHlwZShib3guc2Vzc2lv bi5vbl9jb25uZWN0KGYxKSk8YnI+Jmd0OyAtIGZ1bmN0aW9uPGJyPiZndDsgLi4uPGJyPiZndDsg Z3JlZXRpbmc6IFRydWU8YnI+Jmd0OyArTm90aGluZyB0byByZWFkIHlldDogUmVzb3VyY2UgdGVt cG9yYXJpbHkgdW5hdmFpbGFibGU8YnI+Jmd0OyBmaXhoZWFkZXI6IFRydWU8YnI+Jmd0OyBlcnJv ciBjb2RlIDMyPGJyPiZndDsgZXJyb3IgbWVzc2FnZTogW3N0cmluZyAiZnVuY3Rpb24gZjEoKSBu b3N1Y2hmdW5jdGlvbigpIGVuZCJdOjE6IGF0dGVtcHQgdG8gY2FsbCBnbG9iYWwgJ25vc3VjaGZ1 bmN0aW9uJyAoYSBuaWwgdmFsdWUpPGJyPiZndDsgZGlmZiAtLWdpdCBhL3Rlc3QvYm94LXB5L2Jh ZF90cmlnZ2VyLnRlc3QucHkgYi90ZXN0L2JveC1weS9iYWRfdHJpZ2dlci50ZXN0LnB5PGJyPiZn dDsgaW5kZXggN2QyMDBiOTIxOC4uNDczOWRmZTEzNiAxMDA2NDQ8YnI+Jmd0OyAtLS0gYS90ZXN0 L2JveC1weS9iYWRfdHJpZ2dlci50ZXN0LnB5PGJyPiZndDsgKysrIGIvdGVzdC9ib3gtcHkvYmFk X3RyaWdnZXIudGVzdC5weTxicj4mZ3Q7IEBAIC0yLDcgKzIsNyBAQCBmcm9tIGxpYi5ib3hfY29u bmVjdGlvbiBpbXBvcnQgQm94Q29ubmVjdGlvbjxicj4mZ3Q7IGZyb20gbGliLnRhcmFudG9vbF9j b25uZWN0aW9uIGltcG9ydCBUYXJhbnRvb2xDb25uZWN0aW9uPGJyPiZndDsgZnJvbSB0YXJhbnRv b2wgaW1wb3J0IE5ldHdvcmtFcnJvcjxicj4mZ3Q7IGZyb20gdGFyYW50b29sLmNvbnN0IGltcG9y dCBJUFJPVE9fR1JFRVRJTkdfU0laRSwgSVBST1RPX0NPREUsIElQUk9UT19FUlJPUiwgXDxicj4m Z3Q7IC0gUkVRVUVTVF9UWVBFX0VSUk9SPGJyPiZndDsgKyBSRVFVRVNUX1RZUEVfRVJST1IsIFJF UVVFU1RfVFlQRV9QSU5HPGJyPiZndDsgaW1wb3J0IHNvY2tldDxicj4mZ3Q7IGltcG9ydCBtc2dw YWNrPGJyPiZndDs8YnI+Jmd0OyBAQCAtMjYsOSArMjYsMjUgQEAgcyA9IGNvbm4uc29ja2V0PGJy PiZndDsgIyBSZWFkIGdyZWV0aW5nPGJyPiZndDsgcHJpbnQgJ2dyZWV0aW5nOiAnLCBsZW4ocy5y ZWN2KElQUk9UT19HUkVFVElOR19TSVpFKSkgPT0gSVBST1RPX0dSRUVUSU5HX1NJWkU8YnI+Jmd0 Ozxicj4mZ3Q7IC0jIFJlYWQgZXJyb3IgcGFja2V0PGJyPiZndDsgKyMgQ2hlY2sgc29ja2V0PGJy PiZndDsgSVBST1RPX0ZJWEhFQURFUl9TSVpFID0gNTxicj4mZ3Q7IC1maXhoZWFkZXIgPSBzLnJl Y3YoSVBST1RPX0ZJWEhFQURFUl9TSVpFKTxicj4mZ3Q7ICtzLnNldGJsb2NraW5nKEZhbHNlKTxi cj4mZ3Q7ICtmaXhoZWFkZXIgPSBOb25lPGJyPiZndDsgK3RyeTo8YnI+Jmd0OyArIGZpeGhlYWRl ciA9IHMucmVjdihJUFJPVE9fRklYSEVBREVSX1NJWkUpPGJyPiZndDsgK2V4Y2VwdCBzb2NrZXQu ZXJyb3IgYXMgZXJyOjxicj4mZ3Q7ICsgcHJpbnQgJ05vdGhpbmcgdG8gcmVhZCB5ZXQ6Jywgc3Ry KGVycikuc3BsaXQoJ10nKVsxXTxicj4mZ3Q7ICtlbHNlOjxicj4mZ3Q7ICsgcHJpbnQgJ1JlY2Vp dmVkIGZpeGhlYWRlcic8YnI+Jmd0OyArcy5zZXRibG9ja2luZyhUcnVlKTxicj4mZ3Q7ICs8YnI+ Jmd0OyArIyBTZW5kIHBpbmc8YnI+Jmd0OyArcXVlcnkgPSBtc2dwYWNrLmR1bXBzKHsgSVBST1RP X0NPREUgOiBSRVFVRVNUX1RZUEVfUElORyB9KTxicj4mZ3Q7ICtzLnNlbmQobXNncGFjay5kdW1w cyhsZW4ocXVlcnkpKSArIHF1ZXJ5KTxicj4mZ3Q7ICs8YnI+Jmd0OyArIyBSZWFkIGVycm9yIHBh Y2tldDxicj4mZ3Q7ICtpZiBub3QgZml4aGVhZGVyOjxicj4mZ3Q7ICsgZml4aGVhZGVyID0gcy5y ZWN2KElQUk9UT19GSVhIRUFERVJfU0laRSk8YnI+Jmd0OyBwcmludCAnZml4aGVhZGVyOiAnLCBs ZW4oZml4aGVhZGVyKSA9PSBJUFJPVE9fRklYSEVBREVSX1NJWkU8YnI+Jmd0OyB1bnBhY2tlci5m ZWVkKGZpeGhlYWRlcik8YnI+Jmd0OyBwYWNrZXRfbGVuID0gdW5wYWNrZXIudW5wYWNrKCk8YnI+ Jmd0OzwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT4mbmJzcDs8ZGl2PiZuYnNw OzwvZGl2PjxkaXYgZGF0YS1zaWduYXR1cmUtd2lkZ2V0PSJjb250YWluZXIiPjxkaXYgZGF0YS1z aWduYXR1cmUtd2lkZ2V0PSJjb250ZW50Ij48ZGl2Pi0tPGJyPklseWEgS29zYXJldjwvZGl2Pjwv ZGl2PjwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PC9kaXY+PC9CT0RZPjwvSFRNTD4K ----ALT--b3586E0a3f00a195443791CcDcC059421601074667--