From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH i-g-t v5] lib/igt_kms: Add COMIT_ATOMIC to igt_display_commit2() Date: Fri, 12 Feb 2016 12:50:40 +0200 Message-ID: <87fuwyqk1r.fsf@intel.com> References: <1455273260-698-1-git-send-email-pratik.vishwakarma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 4812C6EA75 for ; Fri, 12 Feb 2016 02:50:53 -0800 (PST) In-Reply-To: <1455273260-698-1-git-send-email-pratik.vishwakarma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Pratik Vishwakarma , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org ClBsZWFzZSBmaXggdGhlIHR5cG8gaW4gdGhlIHN1YmplY3QuCgpCUiwKSmFuaS4KCk9uIEZyaSwg MTIgRmViIDIwMTYsIFByYXRpayBWaXNod2FrYXJtYSA8cHJhdGlrLnZpc2h3YWthcm1hQGludGVs LmNvbT4gd3JvdGU6Cj4gRnJvbTogTWF5dXJlc2ggR2hhcnB1cmUgPG1heXVyZXNoLnMuZ2hhcnB1 cmVAaW50ZWwuY29tPgo+Cj4gQ28tQXV0aG9yIDogTWFyaXVzIFZsYWQgPG1hcml1cy5jLnZsYWRA aW50ZWwuY29tPgo+IENvLUF1dGhvciA6IFByYXRpayBWaXNod2FrYXJtYSA8cHJhdGlrLnZpc2h3 YWthcm1hQGludGVsLmNvbT4KPgo+IFNvIGZhciB3ZSBoYXZlIGhhZCBvbmx5IHR3byBjb21taXQg c3R5bGVzLCBDT01NSVRfTEVHQUNZCj4gYW5kIENPTU1JVF9VTklWRVJTQUwuIFRoaXMgcGF0Y2gg YWRkcyBhbm90aGVyIGNvbW1pdCBzdHlsZQo+IENPTU1JVF9BVE9NSUMgd2hpY2ggbWFrZXMgdXNl IG9mIGRybU1vZGVBdG9taWNDb21taXQoKQo+Cj4gdjI6IChNYXJpdXMpCj4gCWkpU2V0IENSVENf SUQgdG8gemVybyB3aGlsZSBkaXNhYmxpbmcgcGxhbmUKPiAJaWkpTW9kaWZpZWQgdGhlIGxvZyBt ZXNzYWdlIGluIGlndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQKPiAJaHR0cHM6Ly9wYXRj aHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzcxOTQ1Lwo+Cj4gdjM6IChNYXJpdXMpU2V0IEZC X0lEIHRvIHplcm8gd2hpbGUgZGlzYWJsaW5nIHBsYW5lCj4gCWh0dHBzOi8vcGF0Y2h3b3JrLmZy ZWVkZXNrdG9wLm9yZy9wYXRjaC83MjE3OS8KPgo+IHY0OiAoTWFhcnRlbikgQ29ycmVjdGVkIHRo ZSB0eXBvIGluIGNvbW1pdCBtZXNzYWdlCj4gCWh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9w Lm9yZy9wYXRjaC83MjU5OC8KPgo+IHY1OiBBZGRlZCBjaGVjayBmb3IgRFJNX0NMSUVOVF9DQVBf QVRPTUlDIGluIGlndF9kaXNwbGF5X2luaXQKPiAgICAgKE1hcml1cykKPiAJaSlSZW1vdmVkIHVu dXNlZCBwcm9wcyBmcm9tIGlndF9kaXNwbGF5X2luaXQKPiAJaWkpUmVtb3ZlZCB1bnVzZWQgcmV0 LiBDaGFuZ2VkIGZ1bmN0aW9uIHRvIHZvaWQKPiAJaWlpKURlY2xhcmUgdGhlIHZhcmlhYmxlIGJl Zm9yZSBjaGVja2luZyBpZiB3ZSBoYXZlCj4gCURSTV9DTElFTlRfQ0FQX0FUT01JQy4KPgo+IFNp Z25lZC1vZmYtYnk6IE1heXVyZXNoIEdoYXJwdXJlIDxtYXl1cmVzaC5zLmdoYXJwdXJlQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQcmF0aWsgVmlzaHdha2FybWEgPHByYXRpay52aXNod2Fr YXJtYUBpbnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9pZ3Rfa21zLmMgfCAzMTcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBsaWIvaWd0 X2ttcy5oIHwgIDcxICsrKysrKysrKysrKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAzODYgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIv bGliL2lndF9rbXMuYwo+IGluZGV4IDkwYzhkYTcuLjhlMjAxZTggMTAwNjQ0Cj4gLS0tIGEvbGli L2lndF9rbXMuYwo+ICsrKyBiL2xpYi9pZ3Rfa21zLmMKPiBAQCAtMTQ1LDYgKzE0NSwxMjAgQEAg Y29uc3QgdW5zaWduZWQgY2hhciogaWd0X2ttc19nZXRfYmFzZV9lZGlkKHZvaWQpCj4gICAqCj4g ICAqIFJldHVybnM6IGFuIGFsdGVybmF0ZSBlZGlkIGJsb2NrCj4gICAqLwo+ICtzdGF0aWMgY29u c3QgY2hhciAqaWd0X3BsYW5lX3Byb3BfbmFtZXNbSUdUX05VTV9QTEFORV9QUk9QU10gPSB7Cj4g KwkiU1JDX1giLAo+ICsJIlNSQ19ZIiwKPiArCSJTUkNfVyIsCj4gKwkiU1JDX0giLAo+ICsJIkNS VENfWCIsCj4gKwkiQ1JUQ19ZIiwKPiArCSJDUlRDX1ciLAo+ICsJIkNSVENfSCIsCj4gKwkiRkJf SUQiLAo+ICsJIkNSVENfSUQiLAo+ICsJInR5cGUiLAo+ICsJInJvdGF0aW9uIgo+ICt9Owo+ICsK PiArc3RhdGljIGNvbnN0IGNoYXIgKmlndF9jcnRjX3Byb3BfbmFtZXNbSUdUX05VTV9DUlRDX1BS T1BTXSA9IHsKPiArCSJiYWNrZ3JvdW5kX2NvbG9yIgo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0 IGNoYXIgKmlndF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU10g PSB7Cj4gKwkic2NhbGluZyBtb2RlIiwKPiArCSJEUE1TIgo+ICt9Owo+ICsKPiArLyoKPiArICog UmV0cmlldmUgYWxsIHRoZSBwcm9wZXJpZXMgc3BlY2lmaWVkIGluIHByb3BzX25hbWUgYW5kIHN0 b3JlIHRoZW0gaW50bwo+ICsgKiBwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lLgo+ICsgKi8KPiAr c3RhdGljIHZvaWQKPiAraWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9kaXNwbGF5X3Qg KmRpc3BsYXksIGlndF9wbGFuZV90ICpwbGFuZSwKPiArCQkJaW50IG51bV9wcm9wcywgY29uc3Qg Y2hhciAqKnByb3BfbmFtZXMpCj4gK3sKPiArCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHBy b3BzOwo+ICsJaW50IGksIGosIGZkOwo+ICsKPiArCWZkID0gZGlzcGxheS0+ZHJtX2ZkOwo+ICsK PiArCXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZmQsIHBsYW5lLT5kcm1fcGxh bmUtPnBsYW5lX2lkLCBEUk1fTU9ERV9PQkpFQ1RfUExBTkUpOwo+ICsJaWd0X2Fzc2VydChwcm9w cyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7Cj4g KwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQo+ICsJCQlkcm1Nb2RlR2V0UHJvcGVydHkoZmQs IHByb3BzLT5wcm9wc1tpXSk7Cj4gKwo+ICsJCWZvciAoaiA9IDA7IGogPCBudW1fcHJvcHM7IGor Kykgewo+ICsJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsIHByb3BfbmFtZXNbal0pICE9IDApCj4g KwkJCQljb250aW51ZTsKPiArCj4gKwkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbal0gPSBw cm9wcy0+cHJvcHNbaV07Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJZHJtTW9kZUZyZWVQ cm9wZXJ0eShwcm9wKTsKPiArCX0KPiArCj4gKwlkcm1Nb2RlRnJlZU9iamVjdFByb3BlcnRpZXMo cHJvcHMpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBSZXRyaWV2ZSBhbGwgdGhlIHByb3BlcmllcyBz cGVjaWZpZWQgaW4gcHJvcHNfbmFtZSBhbmQgc3RvcmUgdGhlbSBpbnRvCj4gKyAqIGNvbmZpZy0+ YXRvbWljX3Byb3BzX2NydGMgYW5kIGNvbmZpZy0+YXRvbWljX3Byb3BzX2Nvbm5lY3Rvci4KPiAr ICovCj4gK3N0YXRpYyB2b2lkCj4gK2lndF9hdG9taWNfZmlsbF9wcm9wcyhpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiArCQkJaW50IG51bV9jcnRjX3Byb3Bz LCBjb25zdCBjaGFyICoqY3J0Y19wcm9wX25hbWVzLAo+ICsJCQlpbnQgbnVtX2Nvbm5lY3Rvcl9w cm9wcywgY29uc3QgY2hhciAqKmNvbm5fcHJvcF9uYW1lcykKPiArewo+ICsJZHJtTW9kZU9iamVj dFByb3BlcnRpZXNQdHIgcHJvcHM7Cj4gKwlpbnQgaSwgaiwgZmQ7Cj4gKwo+ICsJZmQgPSBkaXNw bGF5LT5kcm1fZmQ7Cj4gKwo+ICsJcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhm ZCwgb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZCwgRFJNX01PREVfT0JKRUNUX0NSVEMpOwo+ ICsJaWd0X2Fzc2VydChwcm9wcyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3Vu dF9wcm9wczsgaSsrKSB7Cj4gKwkJZHJtTW9kZVByb3BlcnR5UHRyIHByb3AgPQo+ICsJCQlkcm1N b2RlR2V0UHJvcGVydHkoZmQsIHByb3BzLT5wcm9wc1tpXSk7Cj4gKwo+ICsJCWZvciAoaiA9IDA7 IGogPCBudW1fY3J0Y19wcm9wczsgaisrKSB7Cj4gKwkJCWlmIChzdHJjbXAocHJvcC0+bmFtZSwg Y3J0Y19wcm9wX25hbWVzW2pdKSAhPSAwKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQlvdXRw dXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY3J0Y1tqXSA9IHByb3BzLT5wcm9wc1tpXTsKPiArCQkJ YnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlkcm1Nb2RlRnJlZVByb3BlcnR5KHByb3ApOwo+ICsJfQo+ ICsKPiArCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVydGllcyhwcm9wcyk7Cj4gKwlwcm9wcyA9IE5V TEw7Cj4gKwlwcm9wcyA9IGRybU1vZGVPYmplY3RHZXRQcm9wZXJ0aWVzKGZkLCBvdXRwdXQtPmNv bmZpZy5jb25uZWN0b3ItPmNvbm5lY3Rvcl9pZCwgRFJNX01PREVfT0JKRUNUX0NPTk5FQ1RPUik7 Cj4gKwlpZ3RfYXNzZXJ0KHByb3BzKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJvcHMtPmNv dW50X3Byb3BzOyBpKyspIHsKPiArCQlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCA9Cj4gKwkJCWRy bU1vZGVHZXRQcm9wZXJ0eShmZCwgcHJvcHMtPnByb3BzW2ldKTsKPiArCj4gKwkJZm9yIChqID0g MDsgaiA8IG51bV9jb25uZWN0b3JfcHJvcHM7IGorKykgewo+ICsJCQlpZiAoc3RyY21wKHByb3At Pm5hbWUsIGNvbm5fcHJvcF9uYW1lc1tqXSkgIT0gMCkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiAr CQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3RvcltqXSA9IHByb3BzLT5wcm9w c1tpXTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlkcm1Nb2RlRnJlZVByb3BlcnR5KHBy b3ApOwo+ICsJfQo+ICsKPiArCWRybU1vZGVGcmVlT2JqZWN0UHJvcGVydGllcyhwcm9wcyk7Cj4g Kwo+ICt9Cj4gKwo+ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBpZ3Rfa21zX2dldF9hbHRfZWRpZCh2 b2lkKQo+ICB7Cj4gIAl1cGRhdGVfZWRpZF9jc3VtKGFsdF9lZGlkKTsKPiBAQCAtOTUyLDYgKzEw NjYsOCBAQCBzdGF0aWMgdm9pZCBpZ3Rfb3V0cHV0X3JlZnJlc2goaWd0X291dHB1dF90ICpvdXRw dXQpCj4gIAkgICAga21zdGVzdF9waXBlX25hbWUob3V0cHV0LT5jb25maWcucGlwZSkpOwo+ICAK PiAgCWRpc3BsYXktPnBpcGVzX2luX3VzZSB8PSAxIDw8IG91dHB1dC0+Y29uZmlnLnBpcGU7Cj4g KwlpZ3RfYXRvbWljX2ZpbGxfcHJvcHMoZGlzcGxheSwgb3V0cHV0LCBJR1RfTlVNX0NSVENfUFJP UFMsIGlndF9jcnRjX3Byb3BfbmFtZXMsCj4gKwkJSUdUX05VTV9DT05ORUNUT1JfUFJPUFMsIGln dF9jb25uZWN0b3JfcHJvcF9uYW1lcyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sCj4gQEAgLTEw MzgsNiArMTE1NCw3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNw bGF5LCBpbnQgZHJtX2ZkKQo+ICAJZGlzcGxheS0+bl9waXBlcyA9IHJlc291cmNlcy0+Y291bnRf Y3J0Y3M7Cj4gIAo+ICAJZHJtU2V0Q2xpZW50Q2FwKGRybV9mZCwgRFJNX0NMSUVOVF9DQVBfVU5J VkVSU0FMX1BMQU5FUywgMSk7Cj4gKwlkcm1TZXRDbGllbnRDYXAoZHJtX2ZkLCBEUk1fQ0xJRU5U X0NBUF9BVE9NSUMsIDEpOwo+ICAJcGxhbmVfcmVzb3VyY2VzID0gZHJtTW9kZUdldFBsYW5lUmVz b3VyY2VzKGRpc3BsYXktPmRybV9mZCk7Cj4gIAlpZ3RfYXNzZXJ0KHBsYW5lX3Jlc291cmNlcyk7 Cj4gIAo+IEBAIC0xMDk0LDYgKzEyMTEsNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKPiAgCj4gIAkJCXBsYW5lLT5waXBlID0gcGlw ZTsKPiAgCQkJcGxhbmUtPmRybV9wbGFuZSA9IGRybV9wbGFuZTsKPiArCQkJaWd0X2F0b21pY19m aWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1RfTlVNX1BMQU5FX1BST1BTLCBpZ3Rf cGxhbmVfcHJvcF9uYW1lcyk7Cj4gIAo+ICAJCQlnZXRfcGxhbmVfcHJvcGVydHkoZGlzcGxheS0+ ZHJtX2ZkLCBkcm1fcGxhbmUtPnBsYW5lX2lkLAo+ICAJCQkJCSAgICJyb3RhdGlvbiIsCj4gQEAg LTEzNDksNiArMTQ2NywxMTEgQEAgc3RhdGljIHVpbnQzMl90IGlndF9wbGFuZV9nZXRfZmJfZ2Vt X2hhbmRsZShpZ3RfcGxhbmVfdCAqcGxhbmUpCj4gIAlpZ3RfYXNzZXJ0KHIgPT0gMCk7CVwKPiAg fQo+ICAKPiArCj4gKwo+ICsKPiArLyoKPiArICogQWRkIHBvc2l0aW9uIGFuZCBmYiBjaGFuZ2Vz IG9mIGEgcGxhbmUgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKPiArICovCj4gK3N0YXRpYyB2 b2lkCj4gK2lndF9hdG9taWNfcHJlcGFyZV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5l LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwKPiArCWRybU1vZGVBdG9taWNSZXEgKnJlcSkKPiArewo+ ICsKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSBvdXRwdXQtPmRpc3BsYXk7Cj4gKwl1aW50 MzJfdCBmYl9pZCwgY3J0Y19pZDsKPiArCXVpbnQzMl90IHNyY194Owo+ICsJdWludDMyX3Qgc3Jj X3k7Cj4gKwl1aW50MzJfdCBzcmNfdzsKPiArCXVpbnQzMl90IHNyY19oOwo+ICsJaW50MzJfdCBj cnRjX3g7Cj4gKwlpbnQzMl90IGNydGNfeTsKPiArCXVpbnQzMl90IGNydGNfdzsKPiArCXVpbnQz Ml90IGNydGNfaDsKPiArCj4gKwlpZ3RfYXNzZXJ0KHBsYW5lLT5kcm1fcGxhbmUpOwo+ICsKPiAr CS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVuc3VwcG9ydGVkIGZlYXR1cmUgKi8KPiArCWln dF9hc3NlcnQoaWd0X3BsYW5lX3N1cHBvcnRzX3JvdGF0aW9uKHBsYW5lKSB8fAo+ICsJCQkhcGxh bmUtPnJvdGF0aW9uX2NoYW5nZWQpOwo+ICsKPiArCWZiX2lkID0gaWd0X3BsYW5lX2dldF9mYl9p ZChwbGFuZSk7Cj4gKwljcnRjX2lkID0gb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKPiAr Cj4gKwlpZiAoKHBsYW5lLT5mYl9jaGFuZ2VkIHx8IHBsYW5lLT5zaXplX2NoYW5nZWQpICYmIGZi X2lkID09IDApIHsKPiArCj4gKwkJTE9HKGRpc3BsYXksCj4gKwkJICAgICIlczogcG9wdWxhdGlu ZyBwbGFuZSBkYXRhOiBwaXBlICVzLCBwbGFuZSAlZCwgZGlzYWJsaW5nXG4iLAo+ICsJCSAgICAg aWd0X291dHB1dF9uYW1lKG91dHB1dCksCj4gKwkJICAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRw dXQtPmNvbmZpZy5waXBlKSwKPiArCQkgICAgIHBsYW5lLT5pbmRleCk7Cj4gKwo+ICsJCS8qIHBv cHVsYXRlIHBsYW5lIHJlcSAqLwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJl cSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0lELCAwKTsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRl X3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfRkJfSUQsIDApOwo+ICsKPiArCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1gsIElH VF9GSVhFRCgwLCAwKSk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBw bGFuZSwgSUdUX1BMQU5FX1NSQ19ZLCBJR1RfRklYRUQoMCwgMCkpOwo+ICsJCWlndF9hdG9taWNf cG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgSUdUX0ZJWEVE KDAsIDApKTsKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJ R1RfUExBTkVfU1JDX0gsIElHVF9GSVhFRCgwLCAwKSk7Cj4gKwo+ICsJCWlndF9hdG9taWNfcG9w dWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIDApOwo+ICsJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1ks IDApOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9DUlRDX1csIDApOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwg cGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIDApOwo+ICsKPiArCX0gZWxzZSBpZiAocGxhbmUtPmZi X2NoYW5nZWQgfHwgcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwKPiArCQkJcGxhbmUtPnNpemVf Y2hhbmdlZCkgewo+ICsKPiArCQlzcmNfeCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY194LCAw KTsgLyogc3JjX3ggKi8KPiArCQlzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY195LCAw KTsgLyogc3JjX3kgKi8KPiArCQlzcmNfdyA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY193LCAw KTsgLyogc3JjX3cgKi8KPiArCQlzcmNfaCA9IElHVF9GSVhFRChwbGFuZS0+ZmItPnNyY19oLCAw KTsgLyogc3JjX2ggKi8KPiArCQljcnRjX3ggPSBwbGFuZS0+Y3J0Y194Owo+ICsJCWNydGNfeSA9 IHBsYW5lLT5jcnRjX3k7Cj4gKwkJY3J0Y193ID0gcGxhbmUtPmNydGNfdzsKPiArCQljcnRjX2gg PSBwbGFuZS0+Y3J0Y19oOwo+ICsKPiArCQlMT0coZGlzcGxheSwKPiArCQkgICAgIiVzOiBwb3B1 bGF0aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAldSwgc3JjID0gKCVkLCAlZCkgIgo+ICsJCSAg ICAiJXV4JXUgZHN0ID0gKCV1LCAldSkgJXV4JXVcbiIsCj4gKwkJICAgIGlndF9vdXRwdXRfbmFt ZShvdXRwdXQpLAo+ICsJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShvdXRwdXQtPmNvbmZpZy5waXBl KSwKPiArCQkgICAgcGxhbmUtPmluZGV4LAo+ICsJCSAgICBmYl9pZCwKPiArCQkgICAgc3JjX3gg Pj4gMTYsIHNyY195ID4+IDE2LCBzcmNfdyA+PiAxNiwgc3JjX2ggPj4gMTYsCj4gKwkJICAgIGNy dGNfeCwgY3J0Y195LCBjcnRjX3csIGNydGNfaCk7Cj4gKwo+ICsKPiArCQkvKiBwb3B1bGF0ZSBw bGFuZSByZXEgKi8KPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5l LCBJR1RfUExBTkVfQ1JUQ19JRCwgY3J0Y19pZCk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9w bGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0ZCX0lELCBmYl9pZCk7Cj4gKwo+ICsJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfWCwg c3JjX3gpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElH VF9QTEFORV9TUkNfWSwgc3JjX3kpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVx KHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfVywgc3JjX3cpOwo+ICsJCWlndF9hdG9taWNfcG9w dWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfSCwgc3JjX2gpOwo+ICsK PiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVf Q1JUQ19YLCBjcnRjX3gpOwo+ICsJCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwg cGxhbmUsIElHVF9QTEFORV9DUlRDX1ksIGNydGNfeSk7Cj4gKwkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywgY3J0Y193KTsKPiArCQlp Z3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19I LCBjcnRjX2gpOwo+ICsKPiArCQlpZiAocGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQpCj4gKwkJCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsCj4gKwkJCQlJR1RfUExBTkVf Uk9UQVRJT04sIHBsYW5lLT5yb3RhdGlvbik7Cj4gKwo+ICsJfQo+ICsKPiArCXBsYW5lLT5mYl9j aGFuZ2VkID0gZmFsc2U7Cj4gKwlwbGFuZS0+cG9zaXRpb25fY2hhbmdlZCA9IGZhbHNlOwo+ICsJ cGxhbmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOwo+ICsKPiArCXJldHVybjsKPiArfQo+ICsKPiAr Cj4gKwo+ICAvKgo+ICAgKiBDb21taXQgcG9zaXRpb24gYW5kIGZiIGNoYW5nZXMgdG8gYSBEUk0g cGxhbmUgdmlhIHRoZSBTZXRQbGFuZSBpb2N0bDsgaWYgdGhlCj4gICAqIERSTSBjYWxsIHRvIHBy b2dyYW0gdGhlIHBsYW5lIGZhaWxzLCB3ZSdsbCBlaXRoZXIgZmFpbCBpbW1lZGlhdGVseSAoZm9y Cj4gQEAgLTE2MDEsNyArMTgyNCw3IEBAIHN0YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3Rf cGxhbmVfdCAqcGxhbmUsCj4gIAkJcmV0dXJuIGlndF9wcmltYXJ5X3BsYW5lX2NvbW1pdF9sZWdh Y3kocGxhbmUsIG91dHB1dCwKPiAgCQkJCQkJICAgICAgIGZhaWxfb25fZXJyb3IpOwo+ICAJfSBl bHNlIHsKPiAtCQlyZXR1cm4gaWd0X2RybV9wbGFuZV9jb21taXQocGxhbmUsIG91dHB1dCwgZmFp bF9vbl9lcnJvcik7Cj4gKwkJCXJldHVybiBpZ3RfZHJtX3BsYW5lX2NvbW1pdChwbGFuZSwgb3V0 cHV0LCBmYWlsX29uX2Vycm9yKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTY1NSw2ICsxODc4LDkw IEBAIHN0YXRpYyBpbnQgaWd0X291dHB1dF9jb21taXQoaWd0X291dHB1dF90ICpvdXRwdXQsCj4g IAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArCj4gKy8qCj4gKyAqIEFkZCBjcnRjIHByb3BlcnR5IGNo YW5nZXMgdG8gdGhlIGF0b21pYyBwcm9wZXJ0eSBzZXQKPiArICovCj4gK3N0YXRpYyB2b2lkIGln dF9hdG9taWNfcHJlcGFyZV9jcnRjX2NvbW1pdChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJtTW9k ZUF0b21pY1JlcSAqcmVxKQo+ICt7Cj4gKwo+ICsJaWd0X3BpcGVfdCAqcGlwZV9vYmogPSBpZ3Rf b3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKPiArCj4gKwlpZiAocGlwZV9vYmotPmJh Y2tncm91bmRfY2hhbmdlZCkKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxKHJlcSwg b3V0cHV0LCBJR1RfQ1JUQ19CQUNLR1JPVU5ELCBwaXBlX29iai0+YmFja2dyb3VuZCk7Cj4gKwo+ ICsJLyoKPiArCSAqCVRPRE86IEFkZCBhbGwgY3J0YyBsZXZlbCBwcm9wZXJ0aWVzIGhlcmUKPiAr CSAqLwo+ICsKPiArfQo+ICsKPiArLyoKPiArICogQWRkIGNvbm5lY3RvciBwcm9wZXJ0eSBjaGFu Z2VzIHRvIHRoZSBhdG9taWMgcHJvcGVydHkgc2V0Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBpZ3Rf YXRvbWljX3ByZXBhcmVfY29ubmVjdG9yX2NvbW1pdChpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZHJt TW9kZUF0b21pY1JlcSAqcmVxKQo+ICt7Cj4gKwo+ICsJc3RydWN0IGttc3Rlc3RfY29ubmVjdG9y X2NvbmZpZyAqY29uZmlnID0gJm91dHB1dC0+Y29uZmlnOwo+ICsKPiArCWlmIChjb25maWctPmNv bm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hhbmdlZCkKPiArCQlpZ3RfYXRvbWljX3BvcHVsYXRlX2Nv bm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQsIElHVF9DT05ORUNUT1JfU0NBTElOR19NT0RFLCBjb25m aWctPmNvbm5lY3Rvcl9zY2FsaW5nX21vZGUpOwo+ICsKPiArCWlmIChjb25maWctPmNvbm5lY3Rv cl9kcG1zX2NoYW5nZWQpCj4gKwkJaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxKHJl cSwgb3V0cHV0LCBJR1RfQ09OTkVDVE9SX0RQTVMsIGNvbmZpZy0+Y29ubmVjdG9yX2RwbXMpOwo+ ICsJLyoKPiArCSAqCVRPRE86IEFkZCBhbGwgb3RoZXIgY29ubmVjdG9yIGxldmVsIHByb3BlcnRp ZXMgaGVyZQo+ICsJICovCj4gKwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBDb21taXQgYWxsIHRoZSBj aGFuZ2VzIG9mIGFsbCB0aGUgcGxhbmVzLGNydGNzLCBjb25uZWN0b3JzCj4gKyAqIGF0b21pY2Fs bHkgdXNpbmcgZHJtTW9kZUF0b21pY0NvbW1pdCgpCj4gKyAqLwo+ICtzdGF0aWMgaW50IGlndF9h dG9taWNfY29tbWl0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXkpCj4gK3sKPiArCj4gKwlpbnQgcmV0 ID0gMDsKPiArCWludCBpID0gMDsKPiArCWRybU1vZGVBdG9taWNSZXEgKnJlcTsKPiArCWRvX29y X2RpZShkcm1TZXRDbGllbnRDYXAoZGlzcGxheS0+ZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9N SUMsIDEpKTsKPiArCj4gKwlyZXEgPSBkcm1Nb2RlQXRvbWljQWxsb2MoKTsKPiArCWRybU1vZGVB dG9taWNTZXRDdXJzb3IocmVxLCAwKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+ bl9vdXRwdXRzOyBpKyspIHsKPiArCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9ICZkaXNwbGF5LT5v dXRwdXRzW2ldOwo+ICsJCWlndF9waXBlX3QgKnBpcGU7Cj4gKwo+ICsJCWlmICghb3V0cHV0LT52 YWxpZCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCS8qCj4gKwkJICogQWRkIENSVEMgUHJvcGVy dGllcyB0byB0aGUgcHJvcGVydHkgc2V0Cj4gKwkJICovCj4gKwkJaWd0X2F0b21pY19wcmVwYXJl X2NydGNfY29tbWl0KG91dHB1dCwgcmVxKTsKPiArCj4gKwkJLyoKPiArCQkgKiBBZGQgQ29ubmVj dG9yIFByb3BlcnRpZXMgdG8gdGhlIHByb3BlcnR5IHNldAo+ICsJCSAqLwo+ICsJCWlndF9hdG9t aWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KG91dHB1dCwgcmVxKTsKPiArCj4gKwo+ICsJCXBp cGUgPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKPiArCj4gKwkJZm9yIChp ID0gMDsgaSA8IHBpcGUtPm5fcGxhbmVzOyBpKyspIHsKPiArCQkJaWd0X3BsYW5lX3QgKnBsYW5l ID0gJnBpcGUtPnBsYW5lc1tpXTsKPiArCQkJaWd0X2F0b21pY19wcmVwYXJlX3BsYW5lX2NvbW1p dChwbGFuZSwgb3V0cHV0LCByZXEpOwo+ICsJCX0KPiArCj4gKwl9Cj4gKwo+ICsJcmV0ID0gZHJt TW9kZUF0b21pY0NvbW1pdChkaXNwbGF5LT5kcm1fZmQsIHJlcSwgMCwgTlVMTCk7Cj4gKwlkcm1N b2RlQXRvbWljRnJlZShyZXEpOwo+ICsJcmV0dXJuIHJldDsKPiArCj4gK30KPiAgLyoKPiAgICog Q29tbWl0IGFsbCBwbGFuZSBjaGFuZ2VzIGFjcm9zcyBhbGwgb3V0cHV0cyBvZiB0aGUgZGlzcGxh eS4KPiAgICoKPiBAQCAtMTY3NCw2ICsxOTgxLDE0IEBAIHN0YXRpYyBpbnQgZG9fZGlzcGxheV9j b21taXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKPiAgCj4gIAlpZ3RfZGlzcGxheV9yZWZyZXNo KGRpc3BsYXkpOwo+ICAKPiArCWlmIChzID09IENPTU1JVF9BVE9NSUMpIHsKPiArCj4gKwkJcmV0 ID0gaWd0X2F0b21pY19jb21taXQoZGlzcGxheSk7Cj4gKwkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFp bF9vbl9lcnJvcik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJfQo+ICsKPiAgCWZvciAoaSA9IDA7 IGkgPCBkaXNwbGF5LT5uX291dHB1dHM7IGkrKykgewo+ICAJCWlndF9vdXRwdXRfdCAqb3V0cHV0 ID0gJmRpc3BsYXktPm91dHB1dHNbaV07Cj4gIAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5o IGIvbGliL2lndF9rbXMuaAo+IGluZGV4IDNmN2FkZDUuLjc2OGE1ZTMgMTAwNjQ0Cj4gLS0tIGEv bGliL2lndF9rbXMuaAo+ICsrKyBiL2xpYi9pZ3Rfa21zLmgKPiBAQCAtMTA2LDExICsxMDYsMjgg QEAgaW50IGttc3Rlc3RfZ2V0X3BpcGVfZnJvbV9jcnRjX2lkKGludCBmZCwgaW50IGNydGNfaWQp Owo+ICB2b2lkIGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUodm9pZCk7Cj4gIHZvaWQga21z dGVzdF9yZXN0b3JlX3Z0X21vZGUodm9pZCk7Cj4gIAo+ICtlbnVtIGlndF9hdG9taWNfY3J0Y19w cm9wZXJ0aWVzIHsKPiArICAgICAgIElHVF9DUlRDX0JBQ0tHUk9VTkQgPSAwLAo+ICsgICAgICAg SUdUX05VTV9DUlRDX1BST1BTCj4gK307Cj4gKwo+ICtlbnVtIGlndF9hdG9taWNfY29ubmVjdG9y X3Byb3BlcnRpZXMgewo+ICsgICAgICAgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01PREUgPSAwLAo+ ICsgICAgICAgSUdUX0NPTk5FQ1RPUl9EUE1TLAo+ICsgICAgICAgSUdUX05VTV9DT05ORUNUT1Jf UFJPUFMKPiArfTsKPiArCj4gIHN0cnVjdCBrbXN0ZXN0X2Nvbm5lY3Rvcl9jb25maWcgewo+ICAJ ZHJtTW9kZUNydGMgKmNydGM7Cj4gIAlkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3I7Cj4gIAlk cm1Nb2RlRW5jb2RlciAqZW5jb2RlcjsKPiAgCWRybU1vZGVNb2RlSW5mbyBkZWZhdWx0X21vZGU7 Cj4gKwl1aW50NjRfdCBjb25uZWN0b3Jfc2NhbGluZ19tb2RlOwo+ICsJYm9vbCBjb25uZWN0b3Jf c2NhbGluZ19tb2RlX2NoYW5nZWQ7Cj4gKwl1aW50NjRfdCBjb25uZWN0b3JfZHBtczsKPiArCWJv b2wgY29ubmVjdG9yX2RwbXNfY2hhbmdlZDsKPiArCXVpbnQzMl90IGF0b21pY19wcm9wc19jcnRj W0lHVF9OVU1fQ1JUQ19QUk9QU107Cj4gKwl1aW50MzJfdCBhdG9taWNfcHJvcHNfY29ubmVjdG9y W0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXTsKPiAgCWludCBjcnRjX2lkeDsKPiAgCWludCBwaXBl Owo+ICB9Owo+IEBAIC0xNTksOSArMTc2LDI4IEBAIHZvaWQga21zdGVzdF91bnNldF9hbGxfY3J0 Y3MoaW50IGRybV9mZCwgZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMpOwo+ICBlbnVtIGlndF9jb21t aXRfc3R5bGUgewo+ICAJQ09NTUlUX0xFR0FDWSA9IDAsCj4gIAlDT01NSVRfVU5JVkVSU0FMLAo+ IC0JLyogV2UnbGwgYWRkIGF0b21pYyBoZXJlIGV2ZW50dWFsbHkuICovCj4gKwlDT01NSVRfQVRP TUlDLAo+ICB9Owo+ICAKPiArZW51bSBpZ3RfYXRvbWljX3BsYW5lX3Byb3BlcnRpZXMgewo+ICsg ICAgICAgSUdUX1BMQU5FX1NSQ19YID0gMCwKPiArICAgICAgIElHVF9QTEFORV9TUkNfWSwKPiAr ICAgICAgIElHVF9QTEFORV9TUkNfVywKPiArICAgICAgIElHVF9QTEFORV9TUkNfSCwKPiArCj4g KyAgICAgICBJR1RfUExBTkVfQ1JUQ19YLAo+ICsgICAgICAgSUdUX1BMQU5FX0NSVENfWSwKPiAr ICAgICAgIElHVF9QTEFORV9DUlRDX1csCj4gKyAgICAgICBJR1RfUExBTkVfQ1JUQ19ILAo+ICsK PiArICAgICAgIElHVF9QTEFORV9GQl9JRCwKPiArICAgICAgIElHVF9QTEFORV9DUlRDX0lELAo+ ICsgICAgICAgSUdUX1BMQU5FX1RZUEUsCj4gKyAgICAgICBJR1RfUExBTkVfUk9UQVRJT04sCj4g KyAgICAgICBJR1RfTlVNX1BMQU5FX1BST1BTCj4gK307Cj4gKwo+ICsKPiAgdHlwZWRlZiBzdHJ1 Y3QgaWd0X2Rpc3BsYXkgaWd0X2Rpc3BsYXlfdDsKPiAgdHlwZWRlZiBzdHJ1Y3QgaWd0X3BpcGUg aWd0X3BpcGVfdDsKPiAgdHlwZWRlZiB1aW50MzJfdCBpZ3RfZml4ZWRfdDsJCQkvKiAxNi4xNiBm aXhlZCBwb2ludCAqLwo+IEBAIC0yMDMsNiArMjM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAJ LyogcGFubmluZyBvZmZzZXQgd2l0aGluIHRoZSBmYiAqLwo+ICAJdW5zaWduZWQgaW50IHBhbl94 LCBwYW5feTsKPiAgCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwo+ICsJdWludDMyX3QgYXRvbWlj X3Byb3BzX3BsYW5lW0lHVF9OVU1fUExBTkVfUFJPUFNdOwo+ICB9IGlndF9wbGFuZV90Owo+ICAK PiAgc3RydWN0IGlndF9waXBlIHsKPiBAQCAtMjg0LDYgKzMyMSwzOCBAQCB2b2lkIGlndF93YWl0 X2Zvcl92YmxhbmsoaW50IGRybV9mZCwgZW51bSBwaXBlIHBpcGUpOwo+ICAKPiAgI2RlZmluZSBJ R1RfRklYRUQoaSxmKQkoKGkpIDw8IDE2IHwgKGYpKQo+ICAKPiArLyoqCj4gKyAqIGlndF9hdG9t aWNfcG9wdWxhdGVfcGxhbmVfcmVxOgo+ICsgKiBAcmVxOiBBIHBvaW50ZXIgdG8gZHJtTW9kZUF0 b21pY1JlcQo+ICsgKiBAcGxhbmU6IEEgcG9pbnRlciBpZ3RfcGxhbmVfdAo+ICsgKiBAcHJvcDog b25lIG9mIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcwo+ICsgKiBAdmFsdWU6IHRoZSB2YWx1 ZSB0byBhZGQKPiArICovCj4gKyNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEo cmVxLCBwbGFuZSwgcHJvcCwgdmFsdWUpIFwKPiArCWlndF9hc3NlcnRfbHQoMCwgZHJtTW9kZUF0 b21pY0FkZFByb3BlcnR5KHJlcSwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQsXAo+ICsJCQkJ CQkgIHBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbcHJvcF0sIHZhbHVlKSkKPiArCj4gKy8qKgo+ ICsgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2NydGNfcmVxOgo+ICsgKiBAcmVxOiBBIHBvaW50ZXIg dG8gZHJtTW9kZUF0b21pY1JlcQo+ICsgKiBAb3V0cHV0OiBBIHBvaW50ZXIgaWd0X291dHB1dF90 Cj4gKyAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMKPiArICogQHZh bHVlOiB0aGUgdmFsdWUgdG8gYWRkCj4gKyAqLwo+ICsjZGVmaW5lIGlndF9hdG9taWNfcG9wdWxh dGVfY3J0Y19yZXEocmVxLCBvdXRwdXQsIHByb3AsIHZhbHVlKSBcCj4gKwlpZ3RfYXNzZXJ0X2x0 KDAsIGRybU1vZGVBdG9taWNBZGRQcm9wZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNydGMtPmNy dGNfaWQsXAo+ICsJCQkJCQkgIG91dHB1dC0+Y29uZmlnLmF0b21pY19wcm9wc19jcnRjW3Byb3Bd LCB2YWx1ZSkpCj4gKy8qKgo+ICsgKiBpZ3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXE6 Cj4gKyAqIEByZXE6IEEgcG9pbnRlciB0byBkcm1Nb2RlQXRvbWljUmVxCj4gKyAqIEBvdXRwdXQ6 IEEgcG9pbnRlciBpZ3Rfb3V0cHV0X3QKPiArICogQHByb3A6IG9uZSBvZiBpZ3RfYXRvbWljX2Nv bm5lY3Rvcl9wcm9wZXJ0aWVzCj4gKyAqIEB2YWx1ZTogdGhlIHZhbHVlIHRvIGFkZAo+ICsgKi8K PiArI2RlZmluZSBpZ3RfYXRvbWljX3BvcHVsYXRlX2Nvbm5lY3Rvcl9yZXEocmVxLCBvdXRwdXQs IHByb3AsIHZhbHVlKSBcCj4gKwlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNBZGRQcm9w ZXJ0eShyZXEsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLFwKPiArCQkJ CQkJICBvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW3Byb3BdLCB2YWx1ZSkp Cj4gKwo+ICB2b2lkIGlndF9lbmFibGVfY29ubmVjdG9ycyh2b2lkKTsKPiAgdm9pZCBpZ3RfcmVz ZXRfY29ubmVjdG9ycyh2b2lkKTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2Ug VGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==