From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mayuresh Gharpure Subject: Re: [PATCH] lib/igt_kms: Add COMIT_ATOMIC to igt_display_commit2() Date: Mon, 1 Feb 2016 11:22:40 +0530 Message-ID: <56AEF2A8.4020909@intel.com> References: <20160127130141.GA10933@mcvlad-wk.rb.intel.com> <1454057231-6859-1-git-send-email-mayuresh.s.gharpure@intel.com> <20160129124520.GA16527@mcvlad-wk.rb.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 6D2BA6E286 for ; Sun, 31 Jan 2016 21:52:44 -0800 (PST) In-Reply-To: <20160129124520.GA16527@mcvlad-wk.rb.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGkgTWFyaXVzLAoKSSd2ZSBpbmNvcnBvcmF0ZWQgeW91ciByZXZpZXcgY29tbWVudHMgaW4gOgpo dHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNzIxNzkvCgpPbmUgb2YgdGhl IGNvbW1lbnRzIHJlZ2FyZGluZyBDSEVDS19SRVRVUk4gaXMgYWxyZWFkeSB0YWtlbiBjYXJlIGlu IApkb19kaXNwbGF5X2NvbW1pdCBtZXRob2QsIGFmdGVyIHJldHVybmluZyBmcm9tIGlndF9hdG9t aWNfY29tbWl0CgpSZWdhcmRzLApNYXl1cmVzaAoKT24gMS8yOS8yMDE2IDY6MTUgUE0sIE1hcml1 cyBWbGFkIHdyb3RlOgo+IEhpLAo+IAlJIHN0aWxsIGRvIG5vdCBzZWUgRkJfSUQgc2V0IHRvIDAg d2hlbiBkaXNhYmxpbmcgdGhlIHBsYW5lIGluCj4gCWlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9j b21taXQoKS4KPgo+IAlTZWUgaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9p bnRlbC1nZngvMjAxNi1KYW51YXJ5LzA4NTc5MC5odG1sCj4KPgo+IE9uIEZyaSwgSmFuIDI5LCAy MDE2IGF0IDAyOjE3OjExUE0gKzA1MzAsIE1heXVyZXNoIEdoYXJwdXJlIHdyb3RlOgo+PiBDby1B dXRob3IgOiBNYXJpdXMgVmxhZCA8bWFyaXVzLmMudmxhZEBpbnRlbC5jb20+Cj4+Cj4+IFNvIGZh ciB3ZSBoYXZlIGhhZCBvbmx5IHR3byBjb21taXQgc3R5bGVzLCBDT01NSVRfTEVHQUNZCj4+IGFu ZCBDT01NSVRfVU5JVkVSU0FMLiBUaGlzIHBhdGNoIGFkZHMgYW5vdGhlciBjb21taXQgc3R5bGUK Pj4gQ09NTUlUX0FUT01JQyB3aGljaCBtYWtlcyB1c2Ugb2YgZHJtTW9kZUF0b21pY0NvbW1pdCgp Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1heXVyZXNoIEdoYXJwdXJlIDxtYXl1cmVzaC5zLmdoYXJw dXJlQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgbGliL2lndF9rbXMuYyB8IDMxNyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICAgbGli L2lndF9rbXMuaCB8ICA3MSArKysrKysrKysrKystCj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAzODYg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf a21zLmMgYi9saWIvaWd0X2ttcy5jCj4+IGluZGV4IDkwYzhkYTcuLjczODgzZDMgMTAwNjQ0Cj4+ IC0tLSBhL2xpYi9pZ3Rfa21zLmMKPj4gKysrIGIvbGliL2lndF9rbXMuYwo+PiBAQCAtMTQ1LDYg KzE0NSwxMjAgQEAgY29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYmFzZV9lZGlkKHZv aWQpCj4+ICAgICoKPj4gICAgKiBSZXR1cm5zOiBhbiBhbHRlcm5hdGUgZWRpZCBibG9jawo+PiAg ICAqLwo+PiArc3RhdGljIGNvbnN0IGNoYXIgKmlndF9wbGFuZV9wcm9wX25hbWVzW0lHVF9OVU1f UExBTkVfUFJPUFNdID0gewo+PiArCSJTUkNfWCIsCj4+ICsJIlNSQ19ZIiwKPj4gKwkiU1JDX1ci LAo+PiArCSJTUkNfSCIsCj4+ICsJIkNSVENfWCIsCj4+ICsJIkNSVENfWSIsCj4+ICsJIkNSVENf VyIsCj4+ICsJIkNSVENfSCIsCj4+ICsJIkZCX0lEIiwKPj4gKwkiQ1JUQ19JRCIsCj4+ICsJInR5 cGUiLAo+PiArCSJyb3RhdGlvbiIKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBjaGFyICpp Z3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9QU10gPSB7Cj4+ICsJImJhY2tncm91 bmRfY29sb3IiCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3QgY2hhciAqaWd0X2Nvbm5lY3Rv cl9wcm9wX25hbWVzW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXSA9IHsKPj4gKwkic2NhbGluZyBt b2RlIiwKPj4gKwkiRFBNUyIKPj4gK307Cj4+ICsKPj4gKy8qCj4+ICsgKiBSZXRyaWV2ZSBhbGwg dGhlIHByb3BlcmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbSBpbnRv Cj4+ICsgKiBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lLgo+PiArICovCj4+ICtzdGF0aWMgdm9p ZAo+PiAraWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9kaXNwbGF5X3QgKmRpc3BsYXks IGlndF9wbGFuZV90ICpwbGFuZSwKPj4gKwkJCWludCBudW1fcHJvcHMsIGNvbnN0IGNoYXIgKipw cm9wX25hbWVzKQo+PiArewo+PiArCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3BzOwo+ PiArCWludCBpLCBqLCBmZDsKPj4gKwo+PiArCWZkID0gZGlzcGxheS0+ZHJtX2ZkOwo+PiArCj4+ ICsJcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhmZCwgcGxhbmUtPmRybV9wbGFu ZS0+cGxhbmVfaWQsIERSTV9NT0RFX09CSkVDVF9QTEFORSk7Cj4+ICsJaWd0X2Fzc2VydChwcm9w cyk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNvdW50X3Byb3BzOyBpKyspIHsK Pj4gKwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQo+PiArCQkJZHJtTW9kZUdldFByb3BlcnR5 KGZkLCBwcm9wcy0+cHJvcHNbaV0pOwo+PiArCj4+ICsJCWZvciAoaiA9IDA7IGogPCBudW1fcHJv cHM7IGorKykgewo+PiArCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCBwcm9wX25hbWVzW2pdKSAh PSAwKQo+PiArCQkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCQlwbGFuZS0+YXRvbWljX3Byb3BzX3Bs YW5lW2pdID0gcHJvcHMtPnByb3BzW2ldOwo+PiArCQkJYnJlYWs7Cj4+ICsJCX0KPj4gKwo+PiAr CQlkcm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOwo+PiArCX0KPj4gKwo+PiArCWRybU1vZGVGcmVl T2JqZWN0UHJvcGVydGllcyhwcm9wcyk7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBSZXRyaWV2 ZSBhbGwgdGhlIHByb3BlcmllcyBzcGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhl bSBpbnRvCj4+ICsgKiBjb25maWctPmF0b21pY19wcm9wc19jcnRjIGFuZCBjb25maWctPmF0b21p Y19wcm9wc19jb25uZWN0b3IuCj4+ICsgKi8KPj4gK3N0YXRpYyB2b2lkCj4+ICtpZ3RfYXRvbWlj X2ZpbGxfcHJvcHMoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQs Cj4+ICsJCQlpbnQgbnVtX2NydGNfcHJvcHMsIGNvbnN0IGNoYXIgKipjcnRjX3Byb3BfbmFtZXMs Cj4+ICsJCQlpbnQgbnVtX2Nvbm5lY3Rvcl9wcm9wcywgY29uc3QgY2hhciAqKmNvbm5fcHJvcF9u YW1lcykKPj4gK3sKPj4gKwlkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwcm9wczsKPj4gKwlp bnQgaSwgaiwgZmQ7Cj4+ICsKPj4gKwlmZCA9IGRpc3BsYXktPmRybV9mZDsKPj4gKwo+PiArCXBy b3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIG91dHB1dC0+Y29uZmlnLmNydGMt PmNydGNfaWQsIERSTV9NT0RFX09CSkVDVF9DUlRDKTsKPj4gKwlpZ3RfYXNzZXJ0KHByb3BzKTsK Pj4gKwo+PiArCWZvciAoaSA9IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgewo+PiAr CQlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9Cj4+ICsJCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQs IHByb3BzLT5wcm9wc1tpXSk7Cj4+ICsKPj4gKwkJZm9yIChqID0gMDsgaiA8IG51bV9jcnRjX3By b3BzOyBqKyspIHsKPj4gKwkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwgY3J0Y19wcm9wX25hbWVz W2pdKSAhPSAwKQo+PiArCQkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCQlvdXRwdXQtPmNvbmZpZy5h dG9taWNfcHJvcHNfY3J0Y1tqXSA9IHByb3BzLT5wcm9wc1tpXTsKPj4gKwkJCWJyZWFrOwo+PiAr CQl9Cj4+ICsKPj4gKwkJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKPj4gKwl9Cj4+ICsKPj4g Kwlkcm1Nb2RlRnJlZU9iamVjdFByb3BlcnRpZXMocHJvcHMpOwo+PiArCXByb3BzID0gTlVMTDsK Pj4gKwlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBvdXRwdXQtPmNvbmZp Zy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCwgRFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUik7Cj4+ ICsJaWd0X2Fzc2VydChwcm9wcyk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNv dW50X3Byb3BzOyBpKyspIHsKPj4gKwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQo+PiArCQkJ ZHJtTW9kZUdldFByb3BlcnR5KGZkLCBwcm9wcy0+cHJvcHNbaV0pOwo+PiArCj4+ICsJCWZvciAo aiA9IDA7IGogPCBudW1fY29ubmVjdG9yX3Byb3BzOyBqKyspIHsKPj4gKwkJCWlmIChzdHJjbXAo cHJvcC0+bmFtZSwgY29ubl9wcm9wX25hbWVzW2pdKSAhPSAwKQo+PiArCQkJCWNvbnRpbnVlOwo+ PiArCj4+ICsJCQlvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW2pdID0gcHJv cHMtPnByb3BzW2ldOwo+PiArCQkJYnJlYWs7Cj4+ICsJCX0KPj4gKwo+PiArCQlkcm1Nb2RlRnJl ZVByb3BlcnR5KHByb3ApOwo+PiArCX0KPj4gKwo+PiArCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVy dGllcyhwcm9wcyk7Cj4+ICsKPj4gK30KPj4gKwo+PiAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGln dF9rbXNfZ2V0X2FsdF9lZGlkKHZvaWQpCj4+ICAgewo+PiAgIAl1cGRhdGVfZWRpZF9jc3VtKGFs dF9lZGlkKTsKPj4gQEAgLTk1Miw2ICsxMDY2LDggQEAgc3RhdGljIHZvaWQgaWd0X291dHB1dF9y ZWZyZXNoKGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+PiAgIAkgICAga21zdGVzdF9waXBlX25hbWUo b3V0cHV0LT5jb25maWcucGlwZSkpOwo+PiAgIAo+PiAgIAlkaXNwbGF5LT5waXBlc19pbl91c2Ug fD0gMSA8PCBvdXRwdXQtPmNvbmZpZy5waXBlOwo+PiArCWlndF9hdG9taWNfZmlsbF9wcm9wcyhk aXNwbGF5LCBvdXRwdXQsIElHVF9OVU1fQ1JUQ19QUk9QUywgaWd0X2NydGNfcHJvcF9uYW1lcywK Pj4gKwkJSUdUX05VTV9DT05ORUNUT1JfUFJPUFMsIGlndF9jb25uZWN0b3JfcHJvcF9uYW1lcyk7 Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyBib29sCj4+IEBAIC0xMDIwLDYgKzExMzYsNyBAQCB2 b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkK Pj4gICB7Cj4+ICAgCWRybU1vZGVSZXMgKnJlc291cmNlczsKPj4gICAJZHJtTW9kZVBsYW5lUmVz ICpwbGFuZV9yZXNvdXJjZXM7Cj4+ICsJZHJtTW9kZU9iamVjdFByb3BlcnRpZXNQdHIgcHJvcHM7 Cj4+ICAgCWludCBpOwo+PiAgIAo+PiAgIAltZW1zZXQoZGlzcGxheSwgMCwgc2l6ZW9mKGlndF9k aXNwbGF5X3QpKTsKPj4gQEAgLTEwOTQsNiArMTIxMSw3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5p dChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQo+PiAgIAo+PiAgIAkJCXBsYW5l LT5waXBlID0gcGlwZTsKPj4gICAJCQlwbGFuZS0+ZHJtX3BsYW5lID0gZHJtX3BsYW5lOwo+PiAr CQkJaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1RfTlVNX1BM QU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7Cj4+ICAgCj4+ICAgCQkJZ2V0X3BsYW5l X3Byb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgZHJtX3BsYW5lLT5wbGFuZV9pZCwKPj4gICAJCQkJ CSAgICJyb3RhdGlvbiIsCj4+IEBAIC0xMzQ5LDYgKzE0NjcsMTExIEBAIHN0YXRpYyB1aW50MzJf dCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBsYW5lKQo+PiAgIAlp Z3RfYXNzZXJ0KHIgPT0gMCk7CVwKPj4gICB9Cj4+ICAgCj4+ICsKPj4gKwo+PiArCj4+ICsvKgo+ PiArICogQWRkIHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2VzIG9mIGEgcGxhbmUgdG8gdGhlIGF0b21p YyBwcm9wZXJ0eSBzZXQKPj4gKyAqLwo+PiArc3RhdGljIGludAo+PiAraWd0X2F0b21pY19wcmVw YXJlX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9vdXRwdXRfdCAqb3V0cHV0 LAo+PiArCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKPj4gK3sKPj4gKwo+PiArCWlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7Cj4+ICsJdWludDMyX3QgZmJfaWQsIGNydGNf aWQ7Cj4+ICsJaW50IHJldDsKPj4gKwl1aW50MzJfdCBzcmNfeDsKPj4gKwl1aW50MzJfdCBzcmNf eTsKPj4gKwl1aW50MzJfdCBzcmNfdzsKPj4gKwl1aW50MzJfdCBzcmNfaDsKPj4gKwlpbnQzMl90 IGNydGNfeDsKPj4gKwlpbnQzMl90IGNydGNfeTsKPj4gKwl1aW50MzJfdCBjcnRjX3c7Cj4+ICsJ dWludDMyX3QgY3J0Y19oOwo+PiArCj4+ICsJaWd0X2Fzc2VydChwbGFuZS0+ZHJtX3BsYW5lKTsK Pj4gKwo+PiArCS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVuc3VwcG9ydGVkIGZlYXR1cmUg Ki8KPj4gKwlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlvbihwbGFuZSkgfHwK Pj4gKwkJCSFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Cj4+ICsKPj4gKwlmYl9pZCA9IGlndF9w bGFuZV9nZXRfZmJfaWQocGxhbmUpOwo+PiArCWNydGNfaWQgPSBvdXRwdXQtPmNvbmZpZy5jcnRj LT5jcnRjX2lkOwo+PiArCj4+ICsJaWYgKChwbGFuZS0+ZmJfY2hhbmdlZCB8fCBwbGFuZS0+c2l6 ZV9jaGFuZ2VkKSAmJiBmYl9pZCA9PSAwKSB7Cj4+ICsKPj4gKwkJTE9HKGRpc3BsYXksCj4+ICsJ CSAgICAiJXM6IHBvcHVsYXRpbmcgcGxhbmUgZGF0YTogcGlwZSAlcywgcGxhbmUgJWQsIGRpc2Fi bGluZ1xuIiwKPj4gKwkJICAgICBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwKPj4gKwkJICAgICBr bXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwKPj4gKwkJICAgICBwbGFuZS0+ aW5kZXgpOwo+PiArCj4+ICsJCS8qIHBvcHVsYXRlIHBsYW5lIHJlcSAqLwo+PiArCQlpZ3RfYXRv bWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19JRCwgMCk7 Cj4+ICsKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdU X1BMQU5FX1NSQ19YLCBJR1RfRklYRUQoMCwgMCkpOwo+PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1ksIElHVF9GSVhFRCgwLCAwKSk7 Cj4+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFO RV9TUkNfVywgSUdUX0ZJWEVEKDAsIDApKTsKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ILCBJR1RfRklYRUQoMCwgMCkpOwo+PiAr Cj4+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFO RV9DUlRDX1gsIDApOwo+PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBs YW5lLCBJR1RfUExBTkVfQ1JUQ19ZLCAwKTsKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFu ZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgMCk7Cj4+ICsJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIDApOwo+PiAr Cj4+ICsJfSBlbHNlIGlmIChwbGFuZS0+ZmJfY2hhbmdlZCB8fCBwbGFuZS0+cG9zaXRpb25fY2hh bmdlZCB8fAo+PiArCQkJcGxhbmUtPnNpemVfY2hhbmdlZCkgewo+PiArCj4+ICsJCXNyY194ID0g SUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX3gsIDApOyAvKiBzcmNfeCAqLwo+PiArCQlzcmNfeSA9 IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY195LCAwKTsgLyogc3JjX3kgKi8KPj4gKwkJc3JjX3cg PSBJR1RfRklYRUQocGxhbmUtPmZiLT5zcmNfdywgMCk7IC8qIHNyY193ICovCj4+ICsJCXNyY19o ID0gSUdUX0ZJWEVEKHBsYW5lLT5mYi0+c3JjX2gsIDApOyAvKiBzcmNfaCAqLwo+PiArCQljcnRj X3ggPSBwbGFuZS0+Y3J0Y194Owo+PiArCQljcnRjX3kgPSBwbGFuZS0+Y3J0Y195Owo+PiArCQlj cnRjX3cgPSBwbGFuZS0+Y3J0Y193Owo+PiArCQljcnRjX2ggPSBwbGFuZS0+Y3J0Y19oOwo+PiAr Cj4+ICsJCUxPRyhkaXNwbGF5LAo+PiArCQkgICAgIiVzOiBwb3B1bGF0aW5nIHBsYW5lIGRhdGE6 ICVzLiVkLCBmYiAldSwgc3JjID0gKCVkLCAlZCkgIgo+PiArCQkgICAgIiV1eCV1IGRzdCA9ICgl dSwgJXUpICV1eCV1XG4iLAo+PiArCQkgICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCj4+ICsJ CSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBlKSwKPj4gKwkJICAgIHBs YW5lLT5pbmRleCwKPj4gKwkJICAgIGZiX2lkLAo+PiArCQkgICAgc3JjX3ggPj4gMTYsIHNyY195 ID4+IDE2LCBzcmNfdyA+PiAxNiwgc3JjX2ggPj4gMTYsCj4+ICsJCSAgICBjcnRjX3gsIGNydGNf eSwgY3J0Y193LCBjcnRjX2gpOwo+PiArCj4+ICsKPj4gKwkJLyogcG9wdWxhdGUgcGxhbmUgcmVx ICovCj4+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9DUlRDX0lELCBjcnRjX2lkKTsKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9y ZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Cj4+ICsKPj4gKwkJaWd0X2F0 b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19YLCBzcmNf eCk7Cj4+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9TUkNfWSwgc3JjX3kpOwo+PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShy ZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1csIHNyY193KTsKPj4gKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19ILCBzcmNfaCk7Cj4+ICsK Pj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5F X0NSVENfWCwgY3J0Y194KTsKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfWSwgY3J0Y195KTsKPj4gKwkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgY3J0Y193KTsKPj4g KwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NS VENfSCwgY3J0Y19oKTsKPj4gKwo+PiArCQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpCj4+ ICsJCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLAo+PiArCQkJCUlH VF9QTEFORV9ST1RBVElPTiwgcGxhbmUtPnJvdGF0aW9uKTsKPj4gKwo+PiArCX0KPj4gKwo+PiAr CXBsYW5lLT5mYl9jaGFuZ2VkID0gZmFsc2U7Cj4+ICsJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQg PSBmYWxzZTsKPj4gKwlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gZmFsc2U7Cj4+ICsKPj4gKwlyZXR1 cm4gMDsKPj4gK30KPj4gKwo+PiArCj4+ICsKPj4gICAvKgo+PiAgICAqIENvbW1pdCBwb3NpdGlv biBhbmQgZmIgY2hhbmdlcyB0byBhIERSTSBwbGFuZSB2aWEgdGhlIFNldFBsYW5lIGlvY3RsOyBp ZiB0aGUKPj4gICAgKiBEUk0gY2FsbCB0byBwcm9ncmFtIHRoZSBwbGFuZSBmYWlscywgd2UnbGwg ZWl0aGVyIGZhaWwgaW1tZWRpYXRlbHkgKGZvcgo+PiBAQCAtMTYwMSw3ICsxODI0LDcgQEAgc3Rh dGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpwbGFuZSwKPj4gICAJCXJldHVy biBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KHBsYW5lLCBvdXRwdXQsCj4+ICAgCQkJ CQkJICAgICAgIGZhaWxfb25fZXJyb3IpOwo+PiAgIAl9IGVsc2Ugewo+PiAtCQlyZXR1cm4gaWd0 X2RybV9wbGFuZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7Cj4+ICsJCQly ZXR1cm4gaWd0X2RybV9wbGFuZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFpbF9vbl9lcnJvcik7 Cj4+ICAgCX0KPj4gICB9Cj4+ICAgCj4+IEBAIC0xNjU1LDYgKzE4NzgsOTAgQEAgc3RhdGljIGlu dCBpZ3Rfb3V0cHV0X2NvbW1pdChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPj4gICAJcmV0dXJuIDA7 Cj4+ICAgfQo+PiAgIAo+PiArCj4+ICsvKgo+PiArICogQWRkIGNydGMgcHJvcGVydHkgY2hhbmdl cyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAo+PiArICovCj4+ICtzdGF0aWMgdm9pZCBpZ3Rf YXRvbWljX3ByZXBhcmVfY3J0Y19jb21taXQoaWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1vZGVB dG9taWNSZXEgKnJlcSkKPj4gK3sKPj4gKwo+PiArCWlndF9waXBlX3QgKnBpcGVfb2JqID0gaWd0 X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7Cj4+ICsKPj4gKwlpZiAocGlwZV9vYmot PmJhY2tncm91bmRfY2hhbmdlZCkKPj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShy ZXEsIG91dHB1dCwgSUdUX0NSVENfQkFDS0dST1VORCwgcGlwZV9vYmotPmJhY2tncm91bmQpOwo+ PiArCj4+ICsJLyoKPj4gKwkgKglUT0RPOiBBZGQgYWxsIGNydGMgbGV2ZWwgcHJvcGVydGllcyBo ZXJlCj4+ICsJICovCj4+ICsKPj4gK30KPj4gKwo+PiArLyoKPj4gKyAqIEFkZCBjb25uZWN0b3Ig cHJvcGVydHkgY2hhbmdlcyB0byB0aGUgYXRvbWljIHByb3BlcnR5IHNldAo+PiArICovCj4+ICtz dGF0aWMgdm9pZCBpZ3RfYXRvbWljX3ByZXBhcmVfY29ubmVjdG9yX2NvbW1pdChpZ3Rfb3V0cHV0 X3QgKm91dHB1dCwgZHJtTW9kZUF0b21pY1JlcSAqcmVxKQo+PiArewo+PiArCj4+ICsJc3RydWN0 IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyAqY29uZmlnID0gJm91dHB1dC0+Y29uZmlnOwo+PiAr Cj4+ICsJaWYgKGNvbmZpZy0+Y29ubmVjdG9yX3NjYWxpbmdfbW9kZV9jaGFuZ2VkKQo+PiArCQlp Z3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIElHVF9DT05ORUNU T1JfU0NBTElOR19NT0RFLCBjb25maWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGUpOwo+PiArCj4+ ICsJaWYgKGNvbmZpZy0+Y29ubmVjdG9yX2RwbXNfY2hhbmdlZCkKPj4gKwkJaWd0X2F0b21pY19w b3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBJR1RfQ09OTkVDVE9SX0RQTVMsIGNv bmZpZy0+Y29ubmVjdG9yX2RwbXMpOwo+PiArCS8qCj4+ICsJICoJVE9ETzogQWRkIGFsbCBvdGhl ciBjb25uZWN0b3IgbGV2ZWwgcHJvcGVydGllcyBoZXJlCj4+ICsJICovCj4+ICsKPj4gK30KPj4g Kwo+PiArLyoKPj4gKyAqIENvbW1pdCBhbGwgdGhlIGNoYW5nZXMgb2YgYWxsIHRoZSBwbGFuZXMs Y3J0Y3MsIGNvbm5lY3RvcnMKPj4gKyAqIGF0b21pY2FsbHkgdXNpbmcgZHJtTW9kZUF0b21pY0Nv bW1pdCgpCj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQgaWd0X2F0b21pY19jb21taXQoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSkKPj4gK3sKPj4gKwo+PiArCWludCByZXQgPSAwOwo+PiArCWRybU1vZGVB dG9taWNSZXEgKnJlcTsKPj4gKwlkb19vcl9kaWUoZHJtU2V0Q2xpZW50Q2FwKGRpc3BsYXktPmRy bV9mZCwgRFJNX0NMSUVOVF9DQVBfQVRPTUlDLCAxKSk7Cj4+ICsJaW50IGkgPSAwOwo+PiArCj4+ ICsJcmVxID0gZHJtTW9kZUF0b21pY0FsbG9jKCk7Cj4+ICsJZHJtTW9kZUF0b21pY1NldEN1cnNv cihyZXEsIDApOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsg aSsrKSB7Cj4+ICsJCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gJmRpc3BsYXktPm91dHB1dHNbaV07 Cj4+ICsJCWlndF9waXBlX3QgKnBpcGU7Cj4+ICsKPj4gKwkJaWYgKCFvdXRwdXQtPnZhbGlkKQo+ PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJLyoKPj4gKwkJICogQWRkIENSVEMgUHJvcGVydGll cyB0byB0aGUgcHJvcGVydHkgc2V0Cj4+ICsJCSAqLwo+PiArCQlpZ3RfYXRvbWljX3ByZXBhcmVf Y3J0Y19jb21taXQob3V0cHV0LCByZXEpOwo+PiArCj4+ICsJCS8qCj4+ICsJCSAqIEFkZCBDb25u ZWN0b3IgUHJvcGVydGllcyB0byB0aGUgcHJvcGVydHkgc2V0Cj4+ICsJCSAqLwo+PiArCQlpZ3Rf YXRvbWljX3ByZXBhcmVfY29ubmVjdG9yX2NvbW1pdChvdXRwdXQsIHJlcSk7Cj4+ICsKPj4gKwo+ PiArCQlwaXBlID0gaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKG91dHB1dCk7Cj4+ICsKPj4g KwkJZm9yIChpID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBpKyspIHsKPj4gKwkJCWlndF9wbGFu ZV90ICpwbGFuZSA9ICZwaXBlLT5wbGFuZXNbaV07Cj4+ICsJCQlpZ3RfYXRvbWljX3ByZXBhcmVf cGxhbmVfY29tbWl0KHBsYW5lLCBvdXRwdXQsIHJlcSk7Cj4+ICsJCX0KPj4gKwo+PiArCX0KPj4g Kwo+PiArCXJldCA9IGRybU1vZGVBdG9taWNDb21taXQoZGlzcGxheS0+ZHJtX2ZkLCByZXEsIDAs IE5VTEwpOwo+PiArCWRybU1vZGVBdG9taWNGcmVlKHJlcSk7Cj4+ICsJcmV0dXJuIHJldDsKPj4g Kwo+PiArfQo+PiAgIC8qCj4+ICAgICogQ29tbWl0IGFsbCBwbGFuZSBjaGFuZ2VzIGFjcm9zcyBh bGwgb3V0cHV0cyBvZiB0aGUgZGlzcGxheS4KPj4gICAgKgo+PiBAQCAtMTY3NCw2ICsxOTgxLDE0 IEBAIHN0YXRpYyBpbnQgZG9fZGlzcGxheV9jb21taXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwK Pj4gICAKPj4gICAJaWd0X2Rpc3BsYXlfcmVmcmVzaChkaXNwbGF5KTsKPj4gICAKPj4gKwlpZiAo cyA9PSBDT01NSVRfQVRPTUlDKSB7Cj4+ICsKPj4gKwkJcmV0ID0gaWd0X2F0b21pY19jb21taXQo ZGlzcGxheSk7Cj4+ICsJCUNIRUNLX1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwo+PiArCQly ZXR1cm4gMDsKPj4gKwo+PiArCX0KPj4gKwo+PiAgIAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+ bl9vdXRwdXRzOyBpKyspIHsKPj4gICAJCWlndF9vdXRwdXRfdCAqb3V0cHV0ID0gJmRpc3BsYXkt Pm91dHB1dHNbaV07Cj4+ICAgCj4+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2ln dF9rbXMuaAo+PiBpbmRleCAzZjdhZGQ1Li43NjhhNWUzIDEwMDY0NAo+PiAtLS0gYS9saWIvaWd0 X2ttcy5oCj4+ICsrKyBiL2xpYi9pZ3Rfa21zLmgKPj4gQEAgLTEwNiwxMSArMTA2LDI4IEBAIGlu dCBrbXN0ZXN0X2dldF9waXBlX2Zyb21fY3J0Y19pZChpbnQgZmQsIGludCBjcnRjX2lkKTsKPj4g ICB2b2lkIGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUodm9pZCk7Cj4+ICAgdm9pZCBrbXN0 ZXN0X3Jlc3RvcmVfdnRfbW9kZSh2b2lkKTsKPj4gICAKPj4gK2VudW0gaWd0X2F0b21pY19jcnRj X3Byb3BlcnRpZXMgewo+PiArICAgICAgIElHVF9DUlRDX0JBQ0tHUk9VTkQgPSAwLAo+PiArICAg ICAgIElHVF9OVU1fQ1JUQ19QUk9QUwo+PiArfTsKPj4gKwo+PiArZW51bSBpZ3RfYXRvbWljX2Nv bm5lY3Rvcl9wcm9wZXJ0aWVzIHsKPj4gKyAgICAgICBJR1RfQ09OTkVDVE9SX1NDQUxJTkdfTU9E RSA9IDAsCj4+ICsgICAgICAgSUdUX0NPTk5FQ1RPUl9EUE1TLAo+PiArICAgICAgIElHVF9OVU1f Q09OTkVDVE9SX1BST1BTCj4+ICt9Owo+PiArCj4+ICAgc3RydWN0IGttc3Rlc3RfY29ubmVjdG9y X2NvbmZpZyB7Cj4+ICAgCWRybU1vZGVDcnRjICpjcnRjOwo+PiAgIAlkcm1Nb2RlQ29ubmVjdG9y ICpjb25uZWN0b3I7Cj4+ICAgCWRybU1vZGVFbmNvZGVyICplbmNvZGVyOwo+PiAgIAlkcm1Nb2Rl TW9kZUluZm8gZGVmYXVsdF9tb2RlOwo+PiArCXVpbnQ2NF90IGNvbm5lY3Rvcl9zY2FsaW5nX21v ZGU7Cj4+ICsJYm9vbCBjb25uZWN0b3Jfc2NhbGluZ19tb2RlX2NoYW5nZWQ7Cj4+ICsJdWludDY0 X3QgY29ubmVjdG9yX2RwbXM7Cj4+ICsJYm9vbCBjb25uZWN0b3JfZHBtc19jaGFuZ2VkOwo+PiAr CXVpbnQzMl90IGF0b21pY19wcm9wc19jcnRjW0lHVF9OVU1fQ1JUQ19QUk9QU107Cj4+ICsJdWlu dDMyX3QgYXRvbWljX3Byb3BzX2Nvbm5lY3RvcltJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU107Cj4+ ICAgCWludCBjcnRjX2lkeDsKPj4gICAJaW50IHBpcGU7Cj4+ICAgfTsKPj4gQEAgLTE1OSw5ICsx NzYsMjggQEAgdm9pZCBrbXN0ZXN0X3Vuc2V0X2FsbF9jcnRjcyhpbnQgZHJtX2ZkLCBkcm1Nb2Rl UmVzUHRyIHJlc291cmNlcyk7Cj4+ICAgZW51bSBpZ3RfY29tbWl0X3N0eWxlIHsKPj4gICAJQ09N TUlUX0xFR0FDWSA9IDAsCj4+ICAgCUNPTU1JVF9VTklWRVJTQUwsCj4+IC0JLyogV2UnbGwgYWRk IGF0b21pYyBoZXJlIGV2ZW50dWFsbHkuICovCj4+ICsJQ09NTUlUX0FUT01JQywKPj4gICB9Owo+ PiAgIAo+PiArZW51bSBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRpZXMgewo+PiArICAgICAgIElH VF9QTEFORV9TUkNfWCA9IDAsCj4+ICsgICAgICAgSUdUX1BMQU5FX1NSQ19ZLAo+PiArICAgICAg IElHVF9QTEFORV9TUkNfVywKPj4gKyAgICAgICBJR1RfUExBTkVfU1JDX0gsCj4+ICsKPj4gKyAg ICAgICBJR1RfUExBTkVfQ1JUQ19YLAo+PiArICAgICAgIElHVF9QTEFORV9DUlRDX1ksCj4+ICsg ICAgICAgSUdUX1BMQU5FX0NSVENfVywKPj4gKyAgICAgICBJR1RfUExBTkVfQ1JUQ19ILAo+PiAr Cj4+ICsgICAgICAgSUdUX1BMQU5FX0ZCX0lELAo+PiArICAgICAgIElHVF9QTEFORV9DUlRDX0lE LAo+PiArICAgICAgIElHVF9QTEFORV9UWVBFLAo+PiArICAgICAgIElHVF9QTEFORV9ST1RBVElP TiwKPj4gKyAgICAgICBJR1RfTlVNX1BMQU5FX1BST1BTCj4+ICt9Owo+PiArCj4+ICsKPj4gICB0 eXBlZGVmIHN0cnVjdCBpZ3RfZGlzcGxheSBpZ3RfZGlzcGxheV90Owo+PiAgIHR5cGVkZWYgc3Ry dWN0IGlndF9waXBlIGlndF9waXBlX3Q7Cj4+ICAgdHlwZWRlZiB1aW50MzJfdCBpZ3RfZml4ZWRf dDsJCQkvKiAxNi4xNiBmaXhlZCBwb2ludCAqLwo+PiBAQCAtMjAzLDYgKzIzOSw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKPj4gICAJLyogcGFubmluZyBvZmZzZXQgd2l0aGluIHRoZSBmYiAqLwo+PiAg IAl1bnNpZ25lZCBpbnQgcGFuX3gsIHBhbl95Owo+PiAgIAlpZ3Rfcm90YXRpb25fdCByb3RhdGlv bjsKPj4gKwl1aW50MzJfdCBhdG9taWNfcHJvcHNfcGxhbmVbSUdUX05VTV9QTEFORV9QUk9QU107 Cj4+ICAgfSBpZ3RfcGxhbmVfdDsKPj4gICAKPj4gICBzdHJ1Y3QgaWd0X3BpcGUgewo+PiBAQCAt Mjg0LDYgKzMyMSwzOCBAQCB2b2lkIGlndF93YWl0X2Zvcl92YmxhbmsoaW50IGRybV9mZCwgZW51 bSBwaXBlIHBpcGUpOwo+PiAgIAo+PiAgICNkZWZpbmUgSUdUX0ZJWEVEKGksZikJKChpKSA8PCAx NiB8IChmKSkKPj4gICAKPj4gKy8qKgo+PiArICogaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9y ZXE6Cj4+ICsgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0b21pY1JlcQo+PiArICogQHBs YW5lOiBBIHBvaW50ZXIgaWd0X3BsYW5lX3QKPj4gKyAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21p Y19wbGFuZV9wcm9wZXJ0aWVzCj4+ICsgKiBAdmFsdWU6IHRoZSB2YWx1ZSB0byBhZGQKPj4gKyAq Lwo+PiArI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBw cm9wLCB2YWx1ZSkgXAo+PiArCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0b21pY0FkZFByb3Bl cnR5KHJlcSwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsXAo+PiArCQkJCQkJICBwbGFuZS0+ YXRvbWljX3Byb3BzX3BsYW5lW3Byb3BdLCB2YWx1ZSkpCj4+ICsKPj4gKy8qKgo+PiArICogaWd0 X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcToKPj4gKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1N b2RlQXRvbWljUmVxCj4+ICsgKiBAb3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90Cj4+ICsg KiBAcHJvcDogb25lIG9mIGlndF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzCj4+ICsgKiBAdmFsdWU6 IHRoZSB2YWx1ZSB0byBhZGQKPj4gKyAqLwo+PiArI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRl X2NydGNfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAo+PiArCWlndF9hc3NlcnRfbHQo MCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0 Y19pZCxcCj4+ICsJCQkJCQkgIG91dHB1dC0+Y29uZmlnLmF0b21pY19wcm9wc19jcnRjW3Byb3Bd LCB2YWx1ZSkpCj4+ICsvKioKPj4gKyAqIGlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3Jl cToKPj4gKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCj4+ICsgKiBAb3V0 cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90Cj4+ICsgKiBAcHJvcDogb25lIG9mIGlndF9hdG9t aWNfY29ubmVjdG9yX3Byb3BlcnRpZXMKPj4gKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+ PiArICovCj4+ICsjZGVmaW5lIGlndF9hdG9taWNfcG9wdWxhdGVfY29ubmVjdG9yX3JlcShyZXEs IG91dHB1dCwgcHJvcCwgdmFsdWUpIFwKPj4gKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9t aWNBZGRQcm9wZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lk LFwKPj4gKwkJCQkJCSAgb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3Rvcltwcm9w XSwgdmFsdWUpKQo+PiArCj4+ICAgdm9pZCBpZ3RfZW5hYmxlX2Nvbm5lY3RvcnModm9pZCk7Cj4+ ICAgdm9pZCBpZ3RfcmVzZXRfY29ubmVjdG9ycyh2b2lkKTsKPj4gICAKPj4gLS0gCj4+IDEuOS4x Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=