From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH i-g-t v4 5/7] lib/igt_kms: Rework plane properties to be more atomic, v4. Date: Tue, 03 Oct 2017 15:05:03 +0300 Message-ID: <1507032303.3274.32.camel@intel.com> References: <20170929095937.15702-1-maarten.lankhorst@linux.intel.com> <20170929095937.15702-6-maarten.lankhorst@linux.intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B98B6E43A for ; Tue, 3 Oct 2017 12:05:06 +0000 (UTC) In-Reply-To: <20170929095937.15702-6-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE3LTA5LTI5IGF0IDExOjU5ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBJbiB0aGUgZnV0dXJlIEkgd2FudCB0byBhbGxvdyB0ZXN0cyB0byBjb21taXQgbW9yZSBw cm9wZXJ0aWVzLAo+IGJ1dCBmb3IgdGhpcyB0byB3b3JrIEkgaGF2ZSB0byBmaXggYWxsIHByb3Bl cnRpZXMgdG8gd29yayBiZXR0ZXIKPiB3aXRoIGF0b21pYyBjb21taXQuIEluc3RlYWQgb2Ygc3Bl Y2lhbCBjYXNpbmcgZWFjaAo+IHByb3BlcnR5IG1ha2UgYSBiaXRtYXNrIGZvciBhbGwgcHJvcGVy dHkgY2hhbmdlZCBmbGFncywgYW5kIHRyeSB0bwo+IGNvbW1pdCBhbGwgcHJvcGVydGllcy4KPiAK PiBDaGFuZ2VzIHNpbmNlIHYxOgo+IC0gUmVtb3ZlIHNwZWNpYWwgZHVtcGluZyBvZiBzcmMgYW5k IGNydGMgY29vcmRpbmF0ZXMuCj4gLSBEdW1wIGFsbCBtb2RpZmllZCBjb29yZGluYXRlcy4KPiBD aGFuZ2VzIHNpbmNlIHYyOgo+IC0gTW92ZSBpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZCB1cCBz bGlnaHRseS4KPiBDaGFuZ2VzIHNpbmNlIHYzOgo+IC0gRml4IHdyb25nIG9yZGVyaW5nIG9mIHNl dF9wb3NpdGlvbiBpbiBrbXNfcGxhbmVfbG93cmVzIGNhdXNpbmcgYQo+IHRlc3QgZmFpbHVyZS4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RA bGludXguaW50ZWwuY29tPgo+IC0tLQo+IMKgbGliL2lndF9rbXMuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDI5MyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0K PiAtLS0tLS0tLS0tLS0KPiDCoGxpYi9pZ3Rfa21zLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfMKgwqA1OSArKysrLS0tLQo+IMKgdGVzdHMva21zX2F0b21pY19pbnRl cnJ1cHRpYmxlLmMgfMKgwqAxMiArLQo+IMKgdGVzdHMva21zX3BsYW5lX2xvd3Jlcy5jwqDCoMKg wqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiDCoHRlc3RzL2ttc19yb3RhdGlvbl9jcmMuY8KgwqDC oMKgwqDCoMKgwqDCoHzCoMKgwqA0ICstCj4gwqA1IGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRp b25zKCspLCAyMTAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMg Yi9saWIvaWd0X2ttcy5jCj4gaW5kZXggMDdkMjA3NGMyYjFhLi42ZTAwNTJlYmU3YTcgMTAwNjQ0 Cj4gLS0tIGEvbGliL2lndF9rbXMuYwo+ICsrKyBiL2xpYi9pZ3Rfa21zLmMKPiBAQCAtMTkyLDEx ICsxOTIsMTEgQEAgY29uc3QgY2hhcgo+ICppZ3RfY29ubmVjdG9yX3Byb3BfbmFtZXNbSUdUX05V TV9DT05ORUNUT1JfUFJPUFNdID0gewo+IMKgCj4gwqAvKgo+IMKgICogUmV0cmlldmUgYWxsIHRo ZSBwcm9wZXJpZXMgc3BlY2lmaWVkIGluIHByb3BzX25hbWUgYW5kIHN0b3JlIHRoZW0KPiBpbnRv Cj4gLSAqIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmUuCj4gKyAqIHBsYW5lLT5wcm9wcy4KPiDC oCAqLwo+IMKgc3RhdGljIHZvaWQKPiAtaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGlndF9wbGFuZV90Cj4gKnBsYW5lLAo+IC0JCQlpbnQgbnVtX3By b3BzLCBjb25zdCBjaGFyICoqcHJvcF9uYW1lcykKPiAraWd0X2ZpbGxfcGxhbmVfcHJvcHMoaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X3BsYW5lX3QgKnBsYW5lLAo+ICsJCcKgwqDCoMKgwqBp bnQgbnVtX3Byb3BzLCBjb25zdCBjaGFyICoqcHJvcF9uYW1lcykKPiDCoHsKPiDCoAlkcm1Nb2Rl T2JqZWN0UHJvcGVydGllc1B0ciBwcm9wczsKPiDCoAlpbnQgaSwgaiwgZmQ7Cj4gQEAgLTIxNCw3 ICsyMTQsNyBAQCBpZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMoaWd0X2Rpc3BsYXlfdAo+ICpk aXNwbGF5LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gwqAJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUs IHByb3BfbmFtZXNbal0pICE9IDApCj4gwqAJCQkJY29udGludWU7Cj4gwqAKPiAtCQkJcGxhbmUt PmF0b21pY19wcm9wc19wbGFuZVtqXSA9IHByb3BzLQo+ID5wcm9wc1tpXTsKPiArCQkJcGxhbmUt PnByb3BzW2pdID0gcHJvcHMtPnByb3BzW2ldOwo+IMKgCQkJYnJlYWs7Cj4gwqAJCX0KPiDCoAo+ IEBAIC0xNjU5LDcgKzE2NTksNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSwKPiBpbnQgZHJtX2ZkKQo+IMKgCWRybU1vZGVSZXMgKnJlc291cmNlczsKPiDC oAlkcm1Nb2RlUGxhbmVSZXMgKnBsYW5lX3Jlc291cmNlczsKPiDCoAlpbnQgaTsKPiAtCWludCBp c19hdG9taWMgPSAwOwo+IMKgCj4gwqAJbWVtc2V0KGRpc3BsYXksIDAsIHNpemVvZihpZ3RfZGlz cGxheV90KSk7Cj4gwqAKPiBAQCAtMTY3OSw3ICsxNjc4LDkgQEAgdm9pZCBpZ3RfZGlzcGxheV9p bml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gaW50IGRybV9mZCkKPiDCoAlpZ3RfYXNzZXJ0 X2YoZGlzcGxheS0+cGlwZXMsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvcgo+ICVkIHBp cGVzXG4iLCBkaXNwbGF5LT5uX3BpcGVzKTsKPiDCoAo+IMKgCWRybVNldENsaWVudENhcChkcm1f ZmQsIERSTV9DTElFTlRfQ0FQX1VOSVZFUlNBTF9QTEFORVMsIDEpOwo+IC0JaXNfYXRvbWljID0g ZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRPTUlDLAo+IDEpOwo+ICsJ aWYgKGRybVNldENsaWVudENhcChkcm1fZmQsIERSTV9DTElFTlRfQ0FQX0FUT01JQywgMSkgPT0g MCkKPiArCQlkaXNwbGF5LT5pc19hdG9taWMgPSAxOwo+ICsKPiDCoAlwbGFuZV9yZXNvdXJjZXMg PSBkcm1Nb2RlR2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJtX2ZkKTsKPiDCoAlpZ3RfYXNz ZXJ0KHBsYW5lX3Jlc291cmNlcyk7Cj4gwqAKPiBAQCAtMTc3NiwxOSArMTc3NywxOSBAQCB2b2lk IGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKPiBpbnQgZHJtX2ZkKQo+ IMKgCQkJcGxhbmUtPnR5cGUgPSB0eXBlOwo+IMKgCQkJcGxhbmUtPnBpcGUgPSBwaXBlOwo+IMKg CQkJcGxhbmUtPmRybV9wbGFuZSA9IGRybV9wbGFuZTsKPiAtCQkJcGxhbmUtPmZlbmNlX2ZkID0g LTE7Cj4gKwkJCXBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0lOX0ZFTkNFX0ZEXSA9Cj4gfjBVTEw7 Cj4gwqAKPiAtCQkJaWYgKGlzX2F0b21pYyA9PSAwKSB7Cj4gLQkJCQlkaXNwbGF5LT5pc19hdG9t aWMgPSAxOwo+IC0JCQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksCj4gcGxh bmUsIElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVzKTsKPiAtCQkJfQo+ ICsJCQlpZ3RfZmlsbF9wbGFuZV9wcm9wcyhkaXNwbGF5LCBwbGFuZSwKPiBJR1RfTlVNX1BMQU5F X1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Cj4gwqAKPiDCoAkJCWdldF9wbGFuZV9wcm9w ZXJ0eShkaXNwbGF5LT5kcm1fZmQsCj4gZHJtX3BsYW5lLT5wbGFuZV9pZCwKPiDCoAkJCQkJwqDC oMKgInJvdGF0aW9uIiwKPiAtCQkJCQnCoMKgwqAmcGxhbmUtCj4gPnJvdGF0aW9uX3Byb3BlcnR5 LAo+IC0JCQkJCcKgwqDCoCZwcm9wX3ZhbHVlLAo+ICsJCQkJCcKgwqDCoCZwbGFuZS0KPiA+cHJv cHNbSUdUX1BMQU5FX1JPVEFUSU9OXSwKPiArCQkJCQnCoMKgwqAmcGxhbmUtCj4gPnZhbHVlc1tJ R1RfUExBTkVfUk9UQVRJT05dLAo+IMKgCQkJCQnCoMKgwqBOVUxMKTsKPiAtCQkJcGxhbmUtPnJv dGF0aW9uID0KPiAoaWd0X3JvdGF0aW9uX3QpcHJvcF92YWx1ZTsKPiArCj4gKwkJCS8qIENsZWFy IGFueSByZXNpZHVhbCBmcmFtZWJ1ZmZlciBvbiBmaXJzdAo+IGNvbW1pdC4gKi8KPiArCQkJaWd0 X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdUX1BMQU5FX0ZCX0lEKTsKPiArCQkJ aWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdUX1BMQU5FX0NSVENfSUQpOwo+ IMKgCQl9Cj4gwqAKPiDCoAkJLyoKPiBAQCAtMTgwNSw5ICsxODA2LDYgQEAgdm9pZCBpZ3RfZGlz cGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gaW50IGRybV9mZCkKPiDCoAo+IMKg CQlwaXBlLT5uX3BsYW5lcyA9IG5fcGxhbmVzOwo+IMKgCj4gLQkJZm9yX2VhY2hfcGxhbmVfb25f cGlwZShkaXNwbGF5LCBpLCBwbGFuZSkKPiAtCQkJcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwo+ IC0KPiDCoAkJcGlwZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiDCoAl9Cj4gwqAKPiBAQCAtMjA3 MCwxOCArMjA2OCw3IEBAIGJvb2wgaWd0X3BpcGVfZ2V0X3Byb3BlcnR5KGlndF9waXBlX3QgKnBp cGUsCj4gY29uc3QgY2hhciAqbmFtZSwKPiDCoAo+IMKgc3RhdGljIHVpbnQzMl90IGlndF9wbGFu ZV9nZXRfZmJfaWQoaWd0X3BsYW5lX3QgKnBsYW5lKQo+IMKgewo+IC0JaWYgKHBsYW5lLT5mYikK PiAtCQlyZXR1cm4gcGxhbmUtPmZiLT5mYl9pZDsKPiAtCWVsc2UKPiAtCQlyZXR1cm4gMDsKPiAt fQo+IC0KPiAtc3RhdGljIHVpbnQzMl90IGlndF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShpZ3Rf cGxhbmVfdCAqcGxhbmUpCj4gLXsKPiAtCWlmIChwbGFuZS0+ZmIpCj4gLQkJcmV0dXJuIHBsYW5l LT5mYi0+Z2VtX2hhbmRsZTsKPiAtCWVsc2UKPiAtCQlyZXR1cm4gMDsKPiArCXJldHVybiBwbGFu ZS0+dmFsdWVzW0lHVF9QTEFORV9GQl9JRF07Cj4gwqB9Cj4gwqAKPiDCoCNkZWZpbmUgQ0hFQ0tf UkVUVVJOKHIsIGZhaWwpIHsJXAo+IEBAIC0yMDkwLDkgKzIwNzcsNiBAQCBzdGF0aWMgdWludDMy X3QKPiBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQo+IMKg CWlndF9hc3NlcnRfZXEociwgMCk7CVwKPiDCoH0KPiDCoAo+IC0KPiAtCj4gLQo+IMKgLyoKPiDC oCAqIEFkZCBwb3NpdGlvbiBhbmQgZmIgY2hhbmdlcyBvZiBhIHBsYW5lIHRvIHRoZSBhdG9taWMg cHJvcGVydHkgc2V0Cj4gwqAgKi8KPiBAQCAtMjEwMSw2MyArMjA4NSwzMSBAQCBpZ3RfYXRvbWlj X3ByZXBhcmVfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90Cj4gKnBsYW5lLCBpZ3RfcGlwZV90ICpw aXBlLAo+IMKgCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKPiDCoHsKPiDCoAlpZ3RfZGlzcGxheV90 ICpkaXNwbGF5ID0gcGlwZS0+ZGlzcGxheTsKPiAtCXVpbnQzMl90IGZiX2lkLCBjcnRjX2lkOwo+ ICsJaW50IGk7Cj4gwqAKPiDCoAlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOwo+IMKgCj4g LQkvKiBpdCdzIGFuIGVycm9yIHRvIHRyeSBhbiB1bnN1cHBvcnRlZCBmZWF0dXJlICovCj4gLQlp Z3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlvbihwbGFuZSkgfHwKPiAtCQkJIXBs YW5lLT5yb3RhdGlvbl9jaGFuZ2VkKTsKPiAtCj4gLQlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJf aWQocGxhbmUpOwo+IC0JY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7Cj4gLQo+IMKgCUxPRyhkaXNw bGF5LAo+IMKgCcKgwqDCoMKgInBvcHVsYXRpbmcgcGxhbmUgZGF0YTogJXMuJWQsIGZiICV1XG4i LAo+IMKgCcKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCj4gwqAJwqDCoMKg wqBwbGFuZS0+aW5kZXgsCj4gLQnCoMKgwqDCoGZiX2lkKTsKPiAtCj4gLQlpZiAocGxhbmUtPmZl bmNlX2ZkID49IDApIHsKPiAtCQl1aW50NjRfdCBmZW5jZV9mZCA9IChpbnQ2NF90KSBwbGFuZS0+ ZmVuY2VfZmQ7Cj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwK PiBJR1RfUExBTkVfSU5fRkVOQ0VfRkQsIGZlbmNlX2ZkKTsKPiAtCX0KPiArCcKgwqDCoMKgaWd0 X3BsYW5lX2dldF9mYl9pZChwbGFuZSkpOwo+IMKgCj4gLQlpZiAocGxhbmUtPmZiX2NoYW5nZWQp IHsKPiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IElHVF9Q TEFORV9DUlRDX0lELCBmYl9pZCA/IGNydGNfaWQgOiAwKTsKPiAtCQlpZ3RfYXRvbWljX3BvcHVs YXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IElHVF9QTEFORV9GQl9JRCwgZmJfaWQpOwo+IC0J fQo+IC0KPiAtCWlmIChwbGFuZS0+cG9zaXRpb25fY2hhbmdlZCB8fCBwbGFuZS0+c2l6ZV9jaGFu Z2VkKSB7Cj4gLQkJdWludDMyX3Qgc3JjX3ggPSBJR1RfRklYRUQocGxhbmUtPnNyY194LCAwKTsg LyoKPiBzcmNfeCAqLwo+IC0JCXVpbnQzMl90IHNyY195ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNf eSwgMCk7IC8qCj4gc3JjX3kgKi8KPiAtCQl1aW50MzJfdCBzcmNfdyA9IElHVF9GSVhFRChwbGFu ZS0+c3JjX3csIDApOyAvKgo+IHNyY193ICovCj4gLQkJdWludDMyX3Qgc3JjX2ggPSBJR1RfRklY RUQocGxhbmUtPnNyY19oLCAwKTsgLyoKPiBzcmNfaCAqLwo+IC0JCWludDMyX3QgY3J0Y194ID0g cGxhbmUtPmNydGNfeDsKPiAtCQlpbnQzMl90IGNydGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gLQkJ dWludDMyX3QgY3J0Y193ID0gcGxhbmUtPmNydGNfdzsKPiAtCQl1aW50MzJfdCBjcnRjX2ggPSBw bGFuZS0+Y3J0Y19oOwo+ICsJZm9yIChpID0gMDsgaSA8IElHVF9OVU1fUExBTkVfUFJPUFM7IGkr Kykgewo+ICsJCWlmICghaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwbGFuZSwgaSkpCj4gKwkJ CWNvbnRpbnVlOwo+IMKgCj4gLQkJTE9HKGRpc3BsYXksCj4gLQkJInNyYyA9ICglZCwgJWQpICV1 IHggJXUgIgo+IC0JCSJkc3QgPSAoJWQsICVkKSAldSB4ICV1XG4iLAo+IC0JCXNyY194ID4+IDE2 LCBzcmNfeSA+PiAxNiwgc3JjX3cgPj4gMTYsIHNyY19oID4+IDE2LAo+IC0JCWNydGNfeCwgY3J0 Y195LCBjcnRjX3csIGNydGNfaCk7Cj4gKwkJLyogaXQncyBhbiBlcnJvciB0byB0cnkgYW4gdW5z dXBwb3J0ZWQgZmVhdHVyZSAqLwo+ICsJCWlndF9hc3NlcnQocGxhbmUtPnByb3BzW2ldKTsKPiDC oAo+IC0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gSUdUX1BM QU5FX1NSQ19YLCBzcmNfeCk7Cj4gLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwKPiBJR1RfUExBTkVfU1JDX1ksIHNyY195KTsKPiAtCQlpZ3RfYXRvbWljX3BvcHVs YXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IElHVF9QTEFORV9TUkNfVywgc3JjX3cpOwo+IC0J CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gSUdUX1BMQU5FX1NS Q19ILCBzcmNfaCk7Cj4gKwkJaWd0X2RlYnVnKCJwbGFuZSAlcy4lZDogU2V0dGluZyBwcm9wZXJ0 eSBcIiVzXCIgdG8KPiAweCUiUFJJeDY0Ii8lIlBSSWk2NCJcbiIsCj4gKwkJCWttc3Rlc3RfcGlw ZV9uYW1lKHBpcGUtPnBpcGUpLCBwbGFuZS0+aW5kZXgsIAo+IGlndF9wbGFuZV9wcm9wX25hbWVz W2ldLAo+ICsJCQlwbGFuZS0+dmFsdWVzW2ldLCBwbGFuZS0+dmFsdWVzW2ldKTsKPiDCoAo+IC0J CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gSUdUX1BMQU5FX0NS VENfWCwgY3J0Y194KTsKPiAtCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBs YW5lLAo+IElHVF9QTEFORV9DUlRDX1ksIGNydGNfeSk7Cj4gLQkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwKPiBJR1RfUExBTkVfQ1JUQ19XLCBjcnRjX3cpOwo+IC0J CWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gSUdUX1BMQU5FX0NS VENfSCwgY3J0Y19oKTsKPiArCQlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9w ZXJ0eShyZXEsCj4gcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsCj4gKwkJCQkJCcKgwqBwbGFu ZS0+cHJvcHNbaV0sCj4gKwkJCQkJCcKgwqBwbGFuZS0KPiA+dmFsdWVzW2ldKSk7Cj4gwqAJfQo+ IC0KPiAtCWlmIChwbGFuZS0+cm90YXRpb25fY2hhbmdlZCkKPiAtCQlpZ3RfYXRvbWljX3BvcHVs YXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+IC0JCQlJR1RfUExBTkVfUk9UQVRJT04sIHBsYW5l LT5yb3RhdGlvbik7Cj4gwqB9Cj4gwqAKPiDCoAo+IEBAIC0yMTgzLDE3ICsyMTM1LDIwIEBAIHN0 YXRpYyBpbnQgaWd0X2RybV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QKPiAqcGxhbmUsCj4gwqAJ aW50MzJfdCBjcnRjX3k7Cj4gwqAJdWludDMyX3QgY3J0Y193Owo+IMKgCXVpbnQzMl90IGNydGNf aDsKPiArCWJvb2wgc2V0cGxhbmUgPQo+ICsJCWlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxh bmUsIElHVF9QTEFORV9GQl9JRCkgfHwKPiArCQlwbGFuZS0+Y2hhbmdlZCAmIElHVF9QTEFORV9D T09SRF9DSEFOR0VEX01BU0s7Cj4gwqAKPiDCoAlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUp Owo+IMKgCj4gwqAJLyogaXQncyBhbiBlcnJvciB0byB0cnkgYW4gdW5zdXBwb3J0ZWQgZmVhdHVy ZSAqLwo+IMKgCWlndF9hc3NlcnQoaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKHBsYW5lKSB8 fAo+IC0JCcKgwqDCoCFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Cj4gKwkJwqDCoMKgIWlndF9w bGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdUX1BMQU5FX1JPVEFUSU9OKSk7Cj4gwqAK PiDCoAlmYl9pZCA9IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOwo+IMKgCWNydGNfaWQgPSBw aXBlLT5jcnRjX2lkOwo+IMKgCj4gLQlpZiAoKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5z aXplX2NoYW5nZWQpICYmIGZiX2lkID09Cj4gMCkgewo+ICsJaWYgKHNldHBsYW5lICYmIGZiX2lk ID09IDApIHsKPiDCoAkJTE9HKGRpc3BsYXksCj4gwqAJCcKgwqDCoMKgIlNldFBsYW5lIHBpcGUg JXMsIHBsYW5lICVkLCBkaXNhYmxpbmdcbiIsCj4gwqAJCcKgwqDCoMKga21zdGVzdF9waXBlX25h bWUocGlwZS0+cGlwZSksCj4gQEAgLTIyMTIsMTYgKzIxNjcsMTUgQEAgc3RhdGljIGludCBpZ3Rf ZHJtX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdAo+ICpwbGFuZSwKPiDCoAkJCQnCoMKgwqDCoMKg wqBJR1RfRklYRUQoMCwwKSAvKiBzcmNfaCAqLyk7Cj4gwqAKPiDCoAkJQ0hFQ0tfUkVUVVJOKHJl dCwgZmFpbF9vbl9lcnJvcik7Cj4gLQl9IGVsc2UgaWYgKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBs YW5lLT5wb3NpdGlvbl9jaGFuZ2VkIHx8Cj4gLQkJcGxhbmUtPnNpemVfY2hhbmdlZCkgewo+IC0J CXNyY194ID0gSUdUX0ZJWEVEKHBsYW5lLT5zcmNfeCwwKTsgLyogc3JjX3ggKi8KPiAtCQlzcmNf eSA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3ksMCk7IC8qIHNyY195ICovCj4gLQkJc3JjX3cgPSBJ R1RfRklYRUQocGxhbmUtPnNyY193LDApOyAvKiBzcmNfdyAqLwo+IC0JCXNyY19oID0gSUdUX0ZJ WEVEKHBsYW5lLT5zcmNfaCwwKTsgLyogc3JjX2ggKi8KPiAtCQljcnRjX3ggPSBwbGFuZS0+Y3J0 Y194Owo+IC0JCWNydGNfeSA9IHBsYW5lLT5jcnRjX3k7Cj4gLQkJY3J0Y193ID0gcGxhbmUtPmNy dGNfdzsKPiAtCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+ICsJfSBlbHNlIGlmIChzZXRwbGFu ZSkgewo+ICsJCXNyY194ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1hdOwo+ICsJCXNy Y195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ldOwo+ICsJCXNyY193ID0gcGxhbmUt PnZhbHVlc1tJR1RfUExBTkVfU1JDX1ddOwo+ICsJCXNyY19oID0gcGxhbmUtPnZhbHVlc1tJR1Rf UExBTkVfU1JDX0hdOwo+ICsJCWNydGNfeCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENf WF07Cj4gKwkJY3J0Y195ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19ZXTsKPiArCQlj cnRjX3cgPSBwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddOwo+ICsJCWNydGNfaCA9IHBs YW5lLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfSF07Cj4gwqAKPiDCoAkJTE9HKGRpc3BsYXksCj4g wqAJCcKgwqDCoMKgIlNldFBsYW5lICVzLiVkLCBmYiAldSwgc3JjID0gKCVkLCAlZCkgIgo+IEBA IC0yMjQ1LDkgKzIxOTksMTAgQEAgc3RhdGljIGludCBpZ3RfZHJtX3BsYW5lX2NvbW1pdChpZ3Rf cGxhbmVfdAo+ICpwbGFuZSwKPiDCoAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9lcnJvcik7 Cj4gwqAJfQo+IMKgCj4gLQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpIHsKPiAtCQlyZXQg PSBpZ3RfcGxhbmVfc2V0X3Byb3BlcnR5KHBsYW5lLCBwbGFuZS0KPiA+cm90YXRpb25fcHJvcGVy dHksCj4gLQkJCQnCoMKgwqDCoMKgwqDCoHBsYW5lLT5yb3RhdGlvbik7Cj4gKwlpZiAoaWd0X3Bs YW5lX2lzX3Byb3BfY2hhbmdlZChwbGFuZSwgSUdUX1BMQU5FX1JPVEFUSU9OKSkgewo+ICsJCXJl dCA9IGlndF9wbGFuZV9zZXRfcHJvcGVydHkocGxhbmUsCj4gKwkJCQkJwqDCoMKgwqDCoHBsYW5l LQo+ID5wcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dLAo+ICsJCQkJCcKgwqDCoMKgwqBwbGFuZS0K PiA+dmFsdWVzW0lHVF9QTEFORV9ST1RBVElPTl0pOwo+IMKgCj4gwqAJCUNIRUNLX1JFVFVSTihy ZXQsIGZhaWxfb25fZXJyb3IpOwo+IMKgCX0KPiBAQCAtMjI2OSwzNSArMjIyNCwzMCBAQCBzdGF0 aWMgaW50Cj4gaWd0X2N1cnNvcl9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90ICpjdXJzb3IsCj4g wqAJdWludDMyX3QgY3J0Y19pZCA9IHBpcGUtPmNydGNfaWQ7Cj4gwqAJaW50IHJldDsKPiDCoAo+ IC0JaWYgKGN1cnNvci0+ZmJfY2hhbmdlZCkgewo+IC0JCXVpbnQzMl90IGdlbV9oYW5kbGUgPQo+ IGlndF9wbGFuZV9nZXRfZmJfZ2VtX2hhbmRsZShjdXJzb3IpOwo+IC0KPiAtCQlpZiAoZ2VtX2hh bmRsZSkgewo+ICsJaWYgKGlndF9wbGFuZV9pc19wcm9wX2NoYW5nZWQoY3Vyc29yLCBJR1RfUExB TkVfRkJfSUQpKSB7Cj4gKwkJaWYgKGN1cnNvci0+Z2VtX2hhbmRsZSkKPiDCoAkJCUxPRyhkaXNw bGF5LAo+IMKgCQkJwqDCoMKgwqAiU2V0Q3Vyc29yIHBpcGUgJXMsIGZiICV1ICVkeCVkXG4iLAo+ IMKgCQkJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiAtCQkJwqDCoMKg wqBnZW1faGFuZGxlLAo+IC0JCQnCoMKgwqDCoGN1cnNvci0+Y3J0Y193LCBjdXJzb3ItPmNydGNf aCk7Cj4gLQo+IC0JCQlyZXQgPSBkcm1Nb2RlU2V0Q3Vyc29yKGRpc3BsYXktPmRybV9mZCwKPiBj cnRjX2lkLAo+IC0JCQkJCcKgwqDCoMKgwqDCoMKgZ2VtX2hhbmRsZSwKPiAtCQkJCQnCoMKgwqDC oMKgwqDCoGN1cnNvci0+Y3J0Y193LAo+IC0JCQkJCcKgwqDCoMKgwqDCoMKgY3Vyc29yLT5jcnRj X2gpOwo+IC0JCX0gZWxzZSB7Cj4gKwkJCcKgwqDCoMKgY3Vyc29yLT5nZW1faGFuZGxlLAo+ICsJ CQnCoMKgwqDCoCh1bnNpZ25lZCljdXJzb3ItCj4gPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19XXSwK PiArCQkJwqDCoMKgwqAodW5zaWduZWQpY3Vyc29yLQo+ID52YWx1ZXNbSUdUX1BMQU5FX0NSVENf SF0pOwo+ICsJCWVsc2UKPiDCoAkJCUxPRyhkaXNwbGF5LAo+IMKgCQkJwqDCoMKgwqAiU2V0Q3Vy c29yIHBpcGUgJXMsIGRpc2FibGluZ1xuIiwKPiDCoAkJCcKgwqDCoMKga21zdGVzdF9waXBlX25h bWUocGlwZS0+cGlwZSkpOwo+IMKgCj4gLQkJCXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxh eS0+ZHJtX2ZkLAo+IGNydGNfaWQsCj4gLQkJCQkJwqDCoMKgwqDCoMKgwqAwLCAwLCAwKTsKPiAt CQl9Cj4gLQo+ICsJCXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxheS0+ZHJtX2ZkLCBjcnRj X2lkLAo+ICsJCQkJwqDCoMKgwqDCoMKgwqBjdXJzb3ItPmdlbV9oYW5kbGUsCj4gKwkJCQnCoMKg wqDCoMKgwqDCoGN1cnNvci0KPiA+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1ddLAo+ICsJCQkJwqDC oMKgwqDCoMKgwqBjdXJzb3ItCj4gPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19IXSk7Cj4gwqAJCUNI RUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwo+IMKgCX0KPiDCoAo+IC0JaWYgKGN1cnNv ci0+cG9zaXRpb25fY2hhbmdlZCkgewo+IC0JCWludCB4ID0gY3Vyc29yLT5jcnRjX3g7Cj4gLQkJ aW50IHkgPSBjdXJzb3ItPmNydGNfeTsKPiArCWlmIChpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2Vk KGN1cnNvciwgSUdUX1BMQU5FX0NSVENfWCkgfHwKPiArCcKgwqDCoMKgaWd0X3BsYW5lX2lzX3By b3BfY2hhbmdlZChjdXJzb3IsIElHVF9QTEFORV9DUlRDX1kpKSB7Cj4gKwkJaW50IHggPSBjdXJz b3ItPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19YXTsKPiArCQlpbnQgeSA9IGN1cnNvci0+dmFsdWVz W0lHVF9QTEFORV9DUlRDX1ldOwo+IMKgCj4gwqAJCUxPRyhkaXNwbGF5LAo+IMKgCQnCoMKgwqDC oCJNb3ZlQ3Vyc29yIHBpcGUgJXMsICglZCwgJWQpXG4iLAo+IEBAIC0yMzI2LDEzICsyMjc2LDE0 IEBAIHN0YXRpYyBpbnQKPiBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFu ZV90ICpwcmltYXJ5LAo+IMKgCWludCByZXQ7Cj4gwqAKPiDCoAkvKiBQcmltYXJ5IHBsYW5lcyBj YW4ndCBiZSB3aW5kb3dlZCB3aGVuIHVzaW5nIGEgbGVnYWN5Cj4gY29tbWl0ICovCj4gLQlpZ3Rf YXNzZXJ0KChwcmltYXJ5LT5jcnRjX3ggPT0gMCAmJiBwcmltYXJ5LT5jcnRjX3kgPT0gMCkpOwo+ ICsJaWd0X2Fzc2VydCgocHJpbWFyeS0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1hdID09IDAgJiYK PiBwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV0gPT0gMCkpOwo+IMKgCj4gwqAJLyog bm9yIHJvdGF0ZWQgKi8KPiAtCWlndF9hc3NlcnQoIXByaW1hcnktPnJvdGF0aW9uX2NoYW5nZWQp Owo+ICsJaWd0X2Fzc2VydCghaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwcmltYXJ5LAo+IElH VF9QTEFORV9ST1RBVElPTikpOwo+IMKgCj4gLQlpZiAoIXByaW1hcnktPmZiX2NoYW5nZWQgJiYg IXByaW1hcnktPnBvc2l0aW9uX2NoYW5nZWQgJiYKPiAtCcKgwqDCoMKgIXByaW1hcnktPnNpemVf Y2hhbmdlZCAmJiAhcHJpbWFyeS0+cGlwZS0+bW9kZV9jaGFuZ2VkKQo+ICsJaWYgKCFpZ3RfcGxh bmVfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9GQl9JRCkgJiYKPiArCcKgwqDC oMKgIShwcmltYXJ5LT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSykgJiYK PiArCcKgwqDCoMKgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKPiDCoAkJcmV0dXJuIDA7 Cj4gwqAKPiDCoAljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKPiBAQCAtMjM0MywxOSArMjI5NCwy MiBAQCBzdGF0aWMgaW50Cj4gaWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0X2xlZ2FjeShpZ3RfcGxh bmVfdCAqcHJpbWFyeSwKPiDCoAkJbW9kZSA9IE5VTEw7Cj4gwqAKPiDCoAlpZiAoZmJfaWQpIHsK PiArCQl1aW50MzJfdCBzcmNfeCA9IHByaW1hcnktPnZhbHVlc1tJR1RfUExBTkVfU1JDX1hdID4+ Cj4gMTY7Cj4gKwkJdWludDMyX3Qgc3JjX3kgPSBwcmltYXJ5LT52YWx1ZXNbSUdUX1BMQU5FX1NS Q19ZXSA+Pgo+IDE2Owo+ICsKPiDCoAkJTE9HKGRpc3BsYXksCj4gwqAJCcKgwqDCoMKgIiVzOiBT ZXRDcnRjIHBpcGUgJXMsIGZiICV1LCBzcmMgKCVkLCAlZCksICIKPiDCoAkJwqDCoMKgwqAibW9k ZSAlZHglZFxuIiwKPiDCoAkJwqDCoMKgwqBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKPiDCoAkJ wqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKPiDCoAkJwqDCoMKgwqBmYl9p ZCwKPiAtCQnCoMKgwqDCoHByaW1hcnktPnNyY194LCBwcmltYXJ5LT5zcmNfeSwKPiArCQnCoMKg wqDCoHNyY194LCBzcmNfeSwKPiDCoAkJwqDCoMKgwqBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRp c3BsYXkpOwo+IMKgCj4gwqAJCXJldCA9IGRybU1vZGVTZXRDcnRjKGRpc3BsYXktPmRybV9mZCwK PiDCoAkJCQnCoMKgwqDCoMKgY3J0Y19pZCwKPiDCoAkJCQnCoMKgwqDCoMKgZmJfaWQsCj4gLQkJ CQnCoMKgwqDCoMKgcHJpbWFyeS0+c3JjX3gsIHByaW1hcnktPnNyY195LAo+ICsJCQkJwqDCoMKg wqDCoHNyY194LCBzcmNfeSwKPiDCoAkJCQnCoMKgwqDCoMKgJm91dHB1dC0+aWQsCj4gwqAJCQkJ wqDCoMKgwqDCoDEsCj4gwqAJCQkJwqDCoMKgwqDCoG1vZGUpOwo+IEBAIC0yNjA4LDE4ICsyNTYy LDI3IEBAIGRpc3BsYXlfY29tbWl0X2NoYW5nZWQoaWd0X2Rpc3BsYXlfdAo+ICpkaXNwbGF5LCBl bnVtIGlndF9jb21taXRfc3R5bGUgcykKPiDCoAkJfQo+IMKgCj4gwqAJCWZvcl9lYWNoX3BsYW5l X29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKPiAtCQkJcGxhbmUtPmZiX2NoYW5nZWQg PSBmYWxzZTsKPiAtCQkJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKPiAtCQkJcGxh bmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOwo+ICsJCQlpZiAocyA9PSBDT01NSVRfQVRPTUlDKSB7 Cj4gKwkJCQlpbnQgZmQ7Cj4gKwkJCQlwbGFuZS0+Y2hhbmdlZCA9IDA7Cj4gwqAKPiAtCQkJaWYg KHMgIT0gQ09NTUlUX0xFR0FDWSB8fAo+IC0JCQnCoMKgwqDCoCEocGxhbmUtPnR5cGUgPT0gRFJN X1BMQU5FX1RZUEVfUFJJTUFSWQo+IHx8Cj4gLQkJCcKgwqDCoMKgwqDCoHBsYW5lLT50eXBlID09 IERSTV9QTEFORV9UWVBFX0NVUlNPUikpCj4gLQkJCQlwbGFuZS0+cm90YXRpb25fY2hhbmdlZCA9 IGZhbHNlOwo+ICsJCQkJZmQgPSBwbGFuZS0KPiA+dmFsdWVzW0lHVF9QTEFORV9JTl9GRU5DRV9G RF07Cj4gKwkJCQlpZiAoZmQgIT0gLTEpCj4gKwkJCQkJY2xvc2UoZmQpOwo+IMKgCj4gLQkJCWlm IChzID09IENPTU1JVF9BVE9NSUMpCj4gwqAJCQkJLyogcmVzZXQgZmVuY2VfZmQgdG8gcHJldmVu dCBpdCBmcm9tCj4gYmVpbmcgc2V0IGZvciB0aGUgbmV4dCBjb21taXQgKi8KPiAtCQkJCWlndF9w bGFuZV9zZXRfZmVuY2VfZmQocGxhbmUsIC0xKTsKPiArCQkJCXBsYW5lLT52YWx1ZXNbSUdUX1BM QU5FX0lOX0ZFTkNFX0ZEXSAKPiA9IC0xOwo+ICsJCQl9IGVsc2Ugewo+ICsJCQkJcGxhbmUtPmNo YW5nZWQgJj0KPiB+SUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFTSzsKPiArCj4gKwkJCQlpZ3Rf cGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHBsYW5lLAo+IElHVF9QTEFORV9DUlRDX0lEKTsKPiAr CQkJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsCj4gSUdUX1BMQU5FX0ZCX0lE KTsKPiArCj4gKwkJCQlpZiAocyAhPSBDT01NSVRfTEVHQUNZIHx8Cj4gKwkJCQnCoMKgwqDCoCEo cGxhbmUtPnR5cGUgPT0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZIHx8Cj4gKwkJCQnCoMKgwqDC oMKgwqBwbGFuZS0+dHlwZSA9PQo+IERSTV9QTEFORV9UWVBFX0NVUlNPUikpCj4gKwkJCQkJaWd0 X3BsYW5lX2NsZWFyX3Byb3BfY2hhbmdlZAo+IChwbGFuZSwgSUdUX1BMQU5FX1JPVEFUSU9OKTsK PiArCQkJfQo+IMKgCQl9Cj4gwqAJfQo+IMKgCj4gQEAgLTI5MTMsMzAgKzI4NzYsMzEgQEAgdm9p ZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFuZSwKPiBzdHJ1Y3QgaWd0X2ZiICpm YikKPiDCoAlMT0coZGlzcGxheSwgIiVzLiVkOiBwbGFuZV9zZXRfZmIoJWQpXG4iLAo+IGttc3Rl c3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLAo+IMKgCcKgwqDCoMKgcGxhbmUtPmluZGV4LCBmYiA/ IGZiLT5mYl9pZCA6IDApOwo+IMKgCj4gLQlwbGFuZS0+ZmIgPSBmYjsKPiArCWlndF9wbGFuZV9z ZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQsIGZiID8KPiBwaXBlLT5jcnRj X2lkIDogMCk7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9G Ql9JRCwgZmIgPyBmYi0KPiA+ZmJfaWQgOiAwKTsKPiArCj4gKwlpZiAocGxhbmUtPnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfQ1VSU09SICYmIGZiKQo+ICsJCXBsYW5lLT5nZW1faGFuZGxlID0gZmIt PmdlbV9oYW5kbGU7Cj4gKwllbHNlCj4gKwkJcGxhbmUtPmdlbV9oYW5kbGUgPSAwOwo+ICsKPiDC oAkvKiBoYWNrIHRvIGtlZXAgdGVzdHMgd29ya2luZyB0aGF0IGRvbid0IGNhbGwKPiBpZ3RfcGxh bmVfc2V0X3NpemUoKSAqLwo+IMKgCWlmIChmYikgewo+IMKgCQkvKiBzZXQgZGVmYXVsdCBwbGFu ZSBzaXplIGFzIGZiIHNpemUgKi8KPiAtCQlwbGFuZS0+Y3J0Y193ID0gZmItPndpZHRoOwo+IC0J CXBsYW5lLT5jcnRjX2ggPSBmYi0+aGVpZ2h0Owo+ICsJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24o cGxhbmUsIDAsIDApOwo+ICsJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgZmItPndpZHRoLCBm Yi0+aGVpZ2h0KTsKPiDCoAo+IMKgCQkvKiBzZXQgZGVmYXVsdCBzcmMgcG9zL3NpemUgYXMgZmIg c2l6ZSAqLwo+IC0JCXBsYW5lLT5zcmNfeCA9IDA7Cj4gLQkJcGxhbmUtPnNyY195ID0gMDsKPiAt CQlwbGFuZS0+c3JjX3cgPSBmYi0+d2lkdGg7Cj4gLQkJcGxhbmUtPnNyY19oID0gZmItPmhlaWdo dDsKPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwgMCwgMCk7Cj4gKwkJaWd0X2Zi X3NldF9zaXplKGZiLCBwbGFuZSwgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsKPiDCoAl9IGVsc2Ug ewo+IC0JCXBsYW5lLT5zcmNfeCA9IDA7Cj4gLQkJcGxhbmUtPnNyY195ID0gMDsKPiAtCQlwbGFu ZS0+c3JjX3cgPSAwOwo+IC0JCXBsYW5lLT5zcmNfaCA9IDA7Cj4gKwkJaWd0X3BsYW5lX3NldF9w b3NpdGlvbihwbGFuZSwgMCwgMCk7Cj4gKwkJaWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCAwLCAw KTsKPiDCoAo+IC0JCXBsYW5lLT5jcnRjX3cgPSAwOwo+IC0JCXBsYW5lLT5jcnRjX2ggPSAwOwo+ ICsJCS8qIHNldCBkZWZhdWx0IHNyYyBwb3Mvc2l6ZSBhcyBmYiBzaXplICovCj4gKwkJaWd0X2Zi X3NldF9wb3NpdGlvbihmYiwgcGxhbmUsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZShmYiwg cGxhbmUsIDAsIDApOwo+IMKgCX0KPiAtCj4gLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4g LQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gdHJ1ZTsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTI5 NDksMTIgKzI5MTMsMTkgQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFu ZSwKPiBzdHJ1Y3QgaWd0X2ZiICpmYikKPiDCoCAqLwo+IMKgdm9pZCBpZ3RfcGxhbmVfc2V0X2Zl bmNlX2ZkKGlndF9wbGFuZV90ICpwbGFuZSwgaW50IGZlbmNlX2ZkKQo+IMKgewo+IC0JY2xvc2Uo cGxhbmUtPmZlbmNlX2ZkKTsKPiArCWludDY0X3QgZmQ7Cj4gwqAKPiAtCWlmIChmY250bChmZW5j ZV9mZCwgRl9HRVRGRCkgIT0gLTEpCj4gLQkJcGxhbmUtPmZlbmNlX2ZkID0gZHVwKGZlbmNlX2Zk KTsKPiAtCWVsc2UKPiAtCQlwbGFuZS0+ZmVuY2VfZmQgPSAtMTsKPiArCWZkID0gcGxhbmUtPnZh bHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdOwo+ICsJaWYgKGZkICE9IC0xKQo+ICsJCWNsb3Nl KGZkKTsKPiArCj4gKwlpZiAoZmVuY2VfZmQgIT0gLTEpIHsKPiArCQlmZCA9IGR1cChmZW5jZV9m ZCk7Cj4gKwkJaWd0X2ZhaWxfb24oZmQgPT0gLTEpOwo+ICsJfSBlbHNlCj4gKwkJZmQgPSAtMTsK PiArCj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9JTl9GRU5D RV9GRCwgZmQpOwo+IMKgfQo+IMKgCj4gwqB2b2lkIGlndF9wbGFuZV9zZXRfcG9zaXRpb24oaWd0 X3BsYW5lX3QgKnBsYW5lLCBpbnQgeCwgaW50IHkpCj4gQEAgLTI5NjUsMTAgKzI5MzYsOCBAQCB2 b2lkIGlndF9wbGFuZV9zZXRfcG9zaXRpb24oaWd0X3BsYW5lX3QKPiAqcGxhbmUsIGludCB4LCBp bnQgeSkKPiDCoAlMT0coZGlzcGxheSwgIiVzLiVkOiBwbGFuZV9zZXRfcG9zaXRpb24oJWQsJWQp XG4iLAo+IMKgCcKgwqDCoMKga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5p bmRleCwgeCwgeSk7Cj4gwqAKPiAtCXBsYW5lLT5jcnRjX3ggPSB4Owo+IC0JcGxhbmUtPmNydGNf eSA9IHk7Cj4gLQo+IC0JcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSB0cnVlOwo+ICsJaWd0X3Bs YW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19YLCB4KTsKPiArCWlndF9w bGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgeSk7Cj4gwqB9Cj4g wqAKPiDCoC8qKgo+IEBAIC0yOTg5LDEwICsyOTU4LDggQEAgdm9pZCBpZ3RfcGxhbmVfc2V0X3Np emUoaWd0X3BsYW5lX3QgKnBsYW5lLAo+IGludCB3LCBpbnQgaCkKPiDCoAlMT0coZGlzcGxheSwg IiVzLiVkOiBwbGFuZV9zZXRfc2l6ZSAoJWR4JWQpXG4iLAo+IMKgCcKgwqDCoMKga21zdGVzdF9w aXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgdywgaCk7Cj4gwqAKPiAtCXBsYW5l LT5jcnRjX3cgPSB3Owo+IC0JcGxhbmUtPmNydGNfaCA9IGg7Cj4gLQo+IC0JcGxhbmUtPnNpemVf Y2hhbmdlZCA9IHRydWU7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9Q TEFORV9DUlRDX1csIHcpOwo+ICsJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1Rf UExBTkVfQ1JUQ19ILCBoKTsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTMwMTQsMTAgKzI5ODEs OCBAQCB2b2lkIGlndF9mYl9zZXRfcG9zaXRpb24oc3RydWN0IGlndF9mYiAqZmIsCj4gaWd0X3Bs YW5lX3QgKnBsYW5lLAo+IMKgCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9wb3NpdGlvbigl ZCwlZClcbiIsCj4gwqAJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwgcGxh bmUtPmluZGV4LCB4LCB5KTsKPiDCoAo+IC0JcGxhbmUtPnNyY194ID0geDsKPiAtCXBsYW5lLT5z cmNfeSA9IHk7Cj4gLQo+IC0JcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwo+ICsJaWd0X3BsYW5l X3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX1gsCj4gSUdUX0ZJWEVEKHgsIDAp KTsKPiArCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX1NSQ19ZLAo+ IElHVF9GSVhFRCh5LCAwKSk7Cj4gwqB9Cj4gwqAKPiDCoC8qKgo+IEBAIC0zMDQwLDEwICszMDA1 LDggQEAgdm9pZCBpZ3RfZmJfc2V0X3NpemUoc3RydWN0IGlndF9mYiAqZmIsCj4gaWd0X3BsYW5l X3QgKnBsYW5lLAo+IMKgCUxPRyhkaXNwbGF5LCAiJXMuJWQ6IGZiX3NldF9zaXplKCVkeCVkKVxu IiwKPiDCoAnCoMKgwqDCoGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUtPnBpcGUpLCBwbGFuZS0+aW5k ZXgsIHcsIGgpOwo+IMKgCj4gLQlwbGFuZS0+c3JjX3cgPSB3Owo+IC0JcGxhbmUtPnNyY19oID0g aDsKPiAtCj4gLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7Cj4gKwlpZ3RfcGxhbmVfc2V0X3By b3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9TUkNfVywKPiBJR1RfRklYRUQodywgMCkpOwo+ICsJ aWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX0gsCj4gSUdUX0ZJ WEVEKGgsIDApKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGNvbnN0IGNoYXIgKnJvdGF0aW9uX25h bWUoaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24pCj4gQEAgLTMwNzEsOSArMzAzNCw3IEBAIHZvaWQg aWd0X3BsYW5lX3NldF9yb3RhdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gaWd0X3JvdGF0aW9u X3Qgcm90YXRpb24pCj4gwqAJwqDCoMKgwqBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwK PiDCoAnCoMKgwqDCoHBsYW5lLT5pbmRleCwgcm90YXRpb25fbmFtZShyb3RhdGlvbikpOwo+IMKg Cj4gLQlwbGFuZS0+cm90YXRpb24gPSByb3RhdGlvbjsKPiAtCj4gLQlwbGFuZS0+cm90YXRpb25f Y2hhbmdlZCA9IHRydWU7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9Q TEFORV9ST1RBVElPTiwKPiByb3RhdGlvbik7Cj4gwqB9Cj4gwqAKPiDCoC8qKgo+IGRpZmYgLS1n aXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaAo+IGluZGV4IDFlZjEwZTdkNTI1Yy4u Zjg3ZjhiZTMxNDIxIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmgKPiArKysgYi9saWIvaWd0 X2ttcy5oCj4gQEAgLTI1Miw2ICsyNTIsOSBAQCBlbnVtIGlndF9hdG9taWNfcGxhbmVfcHJvcGVy dGllcyB7Cj4gwqDCoMKgwqDCoMKgwqDCoElHVF9QTEFORV9DUlRDX1csCj4gwqDCoMKgwqDCoMKg wqDCoElHVF9QTEFORV9DUlRDX0gsCj4gwqAKPiArLyogQXBwZW5kIG5ldyBwcm9wZXJ0aWVzIGFm dGVyIElHVF9QTEFORV9DT09SRF9DSEFOR0VEX01BU0sgKi8KPiArI2RlZmluZSBJR1RfUExBTkVf Q09PUkRfQ0hBTkdFRF9NQVNLIDB4ZmYKPiArCj4gwqDCoMKgwqDCoMKgwqDCoElHVF9QTEFORV9G Ql9JRCwKPiDCoMKgwqDCoMKgwqDCoMKgSUdUX1BMQU5FX0NSVENfSUQsCj4gwqDCoMKgwqDCoMKg wqDCoElHVF9QTEFORV9JTl9GRU5DRV9GRCwKPiBAQCAtMjg2LDM3ICsyODksMTkgQEAgdHlwZWRl ZiBzdHJ1Y3Qgewo+IMKgCWludCBpbmRleDsKPiDCoAkvKiBjYXBhYmlsaXRpZXMgKi8KPiDCoAlp bnQgdHlwZTsKPiAtCS8qIHN0YXRlIHRyYWNraW5nICovCj4gLQl1bnNpZ25lZCBpbnQgZmJfY2hh bmdlZMKgwqDCoMKgwqDCoMKgOiAxOwo+IC0JdW5zaWduZWQgaW50IHBvc2l0aW9uX2NoYW5nZWQg OiAxOwo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uX2NoYW5nZWQgOiAxOwo+IC0JdW5zaWduZWQg aW50IHNpemVfY2hhbmdlZMKgwqDCoMKgwqA6IDE7Cj4gKwo+IMKgCS8qCj4gwqAJwqAqIGRybV9w bGFuZSBjYW4gYmUgTlVMTCBmb3IgcHJpbWFyeSBhbmQgY3Vyc29yIHBsYW5lcyAod2hlbgo+IG5v dAo+IMKgCcKgKiB1c2luZyB0aGUgYXRvbWljIG1vZGVzZXQgQVBJKQo+IMKgCcKgKi8KPiDCoAlk cm1Nb2RlUGxhbmUgKmRybV9wbGFuZTsKPiAtCXN0cnVjdCBpZ3RfZmIgKmZiOwo+IC0KPiAtCXVp bnQzMl90IHJvdGF0aW9uX3Byb3BlcnR5Owo+IC0KPiAtCS8qIHBvc2l0aW9uIHdpdGhpbiBwaXBl X3NyY193IHggcGlwZV9zcmNfaCAqLwo+IC0JaW50IGNydGNfeCwgY3J0Y195Owo+IC0JLyogc2l6 ZSB3aXRoaW4gcGlwZV9zcmNfdyB4IHBpcGVfc3JjX2ggKi8KPiAtCWludCBjcnRjX3csIGNydGNf aDsKPiDCoAo+IC0JLyogcG9zaXRpb24gd2l0aGluIHRoZSBmcmFtZWJ1ZmZlciAqLwo+IC0JdWlu dDMyX3Qgc3JjX3g7Cj4gLQl1aW50MzJfdCBzcmNfeTsKPiAtCS8qIHNpemUgd2l0aGluIHRoZSBm cmFtZWJ1ZmZlciovCj4gLQl1aW50MzJfdCBzcmNfdzsKPiAtCXVpbnQzMl90IHNyY19oOwo+ICsJ LyogZ2VtIGhhbmRsZSBmb3IgZmIgKi8KPiArCXVpbnQzMl90IGdlbV9oYW5kbGU7Cj4gwqAKPiAt CWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwo+IC0KPiAtCS8qIGluIGZlbmNlIGZkICovCj4gLQlp bnQgZmVuY2VfZmQ7Cj4gLQl1aW50MzJfdCBhdG9taWNfcHJvcHNfcGxhbmVbSUdUX05VTV9QTEFO RV9QUk9QU107Cj4gKwl1aW50NjRfdCBjaGFuZ2VkOwo+ICsJdWludDMyX3QgcHJvcHNbSUdUX05V TV9QTEFORV9QUk9QU107Cj4gKwl1aW50NjRfdCB2YWx1ZXNbSUdUX05VTV9QTEFORV9QUk9QU107 Cj4gwqB9IGlndF9wbGFuZV90Owo+IMKgCj4gwqBzdHJ1Y3QgaWd0X3BpcGUgewo+IEBAIC00MDcs NyArMzkyLDcgQEAgYm9vbCBpZ3RfcGlwZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdCAqcGlwZSwK PiBjb25zdCBjaGFyICpuYW1lLAo+IMKgCj4gwqBzdGF0aWMgaW5saW5lIGJvb2wgaWd0X3BsYW5l X3N1cHBvcnRzX3JvdGF0aW9uKGlndF9wbGFuZV90ICpwbGFuZSkKPiDCoHsKPiAtCXJldHVybiBw bGFuZS0+cm90YXRpb25fcHJvcGVydHkgIT0gMDsKPiArCXJldHVybiBwbGFuZS0+cHJvcHNbSUdU X1BMQU5FX1JPVEFUSU9OXSAhPSAwOwo+IMKgfQo+IMKgdm9pZCBpZ3RfcGlwZV9yZXF1ZXN0X291 dF9mZW5jZShpZ3RfcGlwZV90ICpwaXBlKTsKPiDCoHZvaWQgaWd0X3BpcGVfc2V0X2RlZ2FtbWFf bHV0KGlndF9waXBlX3QgKnBpcGUsIHZvaWQgKnB0ciwgc2l6ZV90Cj4gbGVuZ3RoKTsKPiBAQCAt NTI3LDE2ICs1MTIsMjAgQEAgc3RhdGljIGlubGluZSBib29sCj4gaWd0X291dHB1dF9pc19jb25u ZWN0ZWQoaWd0X291dHB1dF90ICpvdXRwdXQpCj4gwqAKPiDCoCNkZWZpbmUgSUdUX0ZJWEVEKGks ZikJKChpKSA8PCAxNiB8IChmKSkKPiDCoAo+IC0vKioKPiAtICogaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXE6Cj4gLSAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCj4g LSAqIEBwbGFuZTogQSBwb2ludGVyIGlndF9wbGFuZV90Cj4gLSAqIEBwcm9wOiBvbmUgb2YgaWd0 X2F0b21pY19wbGFuZV9wcm9wZXJ0aWVzCj4gLSAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+ IC0gKi8KPiAtI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5l LCBwcm9wLCB2YWx1ZSkgXAo+IC0JaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJv cGVydHkocmVxLCBwbGFuZS0KPiA+ZHJtX3BsYW5lLT5wbGFuZV9pZCxcCj4gLQkJCQkJCcKgwqBw bGFuZS0KPiA+YXRvbWljX3Byb3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkpCj4gKyNkZWZpbmUgaWd0 X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwbGFuZSwgcHJvcCkgXAo+ICsJKCEhKChwbGFuZSktPmNo YW5nZWQgJiAoMSA8PCAocHJvcCkpKSkKPiArCj4gKyNkZWZpbmUgaWd0X3BsYW5lX3NldF9wcm9w X2NoYW5nZWQocGxhbmUsIHByb3ApIFwKPiArCShwbGFuZSktPmNoYW5nZWQgfD0gMSA8PCAocHJv cCkKPiArCj4gKyNkZWZpbmUgaWd0X3BsYW5lX2NsZWFyX3Byb3BfY2hhbmdlZChwbGFuZSwgcHJv cCkgXAo+ICsJKHBsYW5lKS0+Y2hhbmdlZCAmPSB+KDEgPDwgKHByb3ApKQo+ICsKPiArI2RlZmlu ZSBpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIHByb3AsIHZhbHVlKSBcCj4gKwlkbyB7 IFwKPiArCQlwbGFuZS0+dmFsdWVzW3Byb3BdID0gdmFsdWU7IFwKPiArCQlpZ3RfcGxhbmVfc2V0 X3Byb3BfY2hhbmdlZChwbGFuZSwgcHJvcCk7IFwKPiArCX0gd2hpbGUgKDApCj4gwqAKPiDCoC8q Kgo+IMKgICogaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcToKPiBkaWZmIC0tZ2l0IGEvdGVz dHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMKPiBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJy dXB0aWJsZS5jCj4gaW5kZXggMmQxOWZlOTY3ODA5Li41NTcwODU0MzkwZWEgMTAwNjQ0Cj4gLS0t IGEvdGVzdHMva21zX2F0b21pY19pbnRlcnJ1cHRpYmxlLmMKPiArKysgYi90ZXN0cy9rbXNfYXRv bWljX2ludGVycnVwdGlibGUuYwo+IEBAIC0xNjEsMTIgKzE2MSwxMiBAQCBzdGF0aWMgdm9pZCBy dW5fcGxhbmVfdGVzdChpZ3RfZGlzcGxheV90Cj4gKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBp Z3Rfb3V0cHV0X3QKPiDCoAkJCQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8KPiDCoAkJCQkJb3V0 cHV0LQo+ID5wcm9wc1tJR1RfQ09OTkVDVE9SX0NSVENfSURdLAo+IMKgCQkJCQkvKiBwbGFuZTog cmVtYWluZGVyIHByb3BzICovCj4gLQkJCQkJcGxhbmUtCj4gPmF0b21pY19wcm9wc19wbGFuZVtJ R1RfUExBTkVfQ1JUQ19JRF0sCj4gLQkJCQkJcGxhbmUtCj4gPmF0b21pY19wcm9wc19wbGFuZVtJ R1RfUExBTkVfRkJfSURdLAo+IC0JCQkJCXBsYW5lLQo+ID5hdG9taWNfcHJvcHNfcGxhbmVbSUdU X1BMQU5FX1NSQ19XXSwKPiAtCQkJCQlwbGFuZS0KPiA+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9Q TEFORV9TUkNfSF0sCj4gLQkJCQkJcGxhbmUtCj4gPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExB TkVfQ1JUQ19XXSwKPiAtCQkJCQlwbGFuZS0KPiA+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9QTEFO RV9DUlRDX0hdCj4gKwkJCQkJcGxhbmUtCj4gPnByb3BzW0lHVF9QTEFORV9DUlRDX0lEXSwKPiAr CQkJCQlwbGFuZS0KPiA+cHJvcHNbSUdUX1BMQU5FX0ZCX0lEXSwKPiArCQkJCQlwbGFuZS0KPiA+ cHJvcHNbSUdUX1BMQU5FX1NSQ19XXSwKPiArCQkJCQlwbGFuZS0KPiA+cHJvcHNbSUdUX1BMQU5F X1NSQ19IXSwKPiArCQkJCQlwbGFuZS0KPiA+cHJvcHNbSUdUX1BMQU5FX0NSVENfV10sCj4gKwkJ CQkJcGxhbmUtCj4gPnByb3BzW0lHVF9QTEFORV9DUlRDX0hdCj4gwqAJCQkJfTsKPiDCoAkJCQl1 aW50NjRfdCBwcm9wX3ZhbHNbXSA9IHsKPiDCoAkJCQkJLyogY3J0YyAqLwo+IGRpZmYgLS1naXQg YS90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMgYi90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMKPiBp bmRleCBiMTZjOGNkNDMzYjIuLjYxM2Y2ODg5OTYwMSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNf cGxhbmVfbG93cmVzLmMKPiArKysgYi90ZXN0cy9rbXNfcGxhbmVfbG93cmVzLmMKPiBAQCAtMjI3 LDggKzIyNyw4IEBAIHRlc3Rfc2V0dXAoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgdWlu dDY0X3QKPiBtb2RpZmllciwgaW50IGZsYWdzLAo+IMKgCQkJCcKgwqDCoMKgMS4wLCAxLjAsIDAu MCwKPiDCoAkJCQnCoMKgwqDCoCZkYXRhLT5mYltpXSk7Cj4gwqAKPiAtCQlpZ3RfcGxhbmVfc2V0 X3Bvc2l0aW9uKGRhdGEtPnBsYW5lW2ldLCB4LCB5KTsKPiDCoAkJaWd0X3BsYW5lX3NldF9mYihk YXRhLT5wbGFuZVtpXSwgJmRhdGEtPmZiW2ldKTsKPiArCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9u KGRhdGEtPnBsYW5lW2ldLCB4LCB5KTsKVGhpcyBwYXJ0IGNvdWxkIGJlIHNwbGl0IGludG8gYSBz ZXBhcmF0ZSBwYXRjaCBhcyBpdCBmaXhlcyBhbiBlcnJvci4KQlRXIHdoeSBkbyB3ZSBuZWVkIHRv IGlndF9wbGFuZV9zZXRfZmIoKSBiZWZvcmUKaWd0X3BsYW5lX3NldF9wb3NpdGlvbigpCsKgCj4g wqAJfQo+IMKgCj4gwqAJcmV0dXJuIG1vZGU7Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19yb3Rh dGlvbl9jcmMuYyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+IGluZGV4IDRkMmVmMWMxODRm MC4uNDkzMmEwZDQ0NDEwIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+ ICsrKyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+IEBAIC0xMjIsMTEgKzEyMiwxMSBAQCBz dGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLAo+IGlndF9vdXRwdXRfdCAqb3V0 cHV0LCBlbnVtIHBpcGUgcGlwZSwKPiDCoAlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRh LT5mYl9tb2Rlc2V0KTsKPiDCoAo+IMKgCWlmIChjb21taXQgPCBDT01NSVRfQVRPTUlDKSB7Cj4g LQkJcHJpbWFyeS0+cm90YXRpb25fY2hhbmdlZCA9IGZhbHNlOwo+ICsJCWlndF9wbGFuZV9jbGVh cl9wcm9wX2NoYW5nZWQocHJpbWFyeSwKPiBJR1RfUExBTkVfUk9UQVRJT04pOwo+IMKgCQlpZ3Rf ZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4gwqAKPiDCoAkJaWYgKHBsYW5lLT50eXBlID09IERS TV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gLQkJCXByaW1hcnktPnJvdGF0aW9uX2NoYW5nZWQgPSB0 cnVlOwo+ICsJCQlpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZChwcmltYXJ5LAo+IElHVF9QTEFO RV9ST1RBVElPTik7Cj4gwqAJfQo+IMKgCj4gwqAJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVM TCk7Ci0tIApNaWthIEthaG9sYSAtIEludGVsIE9UQwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==