From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shards.monkeyblade.net ([149.20.54.216]:39605 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753131AbcA0CAt (ORCPT ); Tue, 26 Jan 2016 21:00:49 -0500 Received: from localhost (74-93-104-98-Washington.hfc.comcastbusiness.net [74.93.104.98]) (Authenticated sender: davem-davemloft) by shards.monkeyblade.net (Postfix) with ESMTPSA id 9E6E05A7A0F for ; Tue, 26 Jan 2016 18:00:45 -0800 (PST) Date: Tue, 26 Jan 2016 18:00:44 -0800 (PST) Message-Id: <20160126.180044.924171839568875606.davem@davemloft.net> To: stable@vger.kernel.org Subject: [PATCHES] Networking From: David Miller Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Tue_Jan_26_18_00_44_2016_358)--" Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: ----Next_Part(Tue_Jan_26_18_00_44_2016_358)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Please queue up the following networking bug fixes for 4.4.x, 4.3.1, 4.1.x, and 3.18.x -stable, respectively. Thanks! ----Next_Part(Tue_Jan_26_18_00_44_2016_358)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_44.mbox" RnJvbSBjYWJlN2VlNWE0ZDRiMWFkZGNkNmM4NWYzNzU1ZTY5MTJlNTM2YjE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3aWxseSB0YXJyZWF1IDx3QDF3dC5ldT4KRGF0ZTogU3VuLCAx MCBKYW4gMjAxNiAwNzo1NDo1NiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDEvMjRdIHVuaXg6IHBy b3Blcmx5IGFjY291bnQgZm9yIEZEcyBwYXNzZWQgb3ZlciB1bml4IHNvY2tldHMKClsgVXBzdHJl YW0gY29tbWl0IDcxMmY0YWFkNDA2YmIxZWQ2N2YzZjk4ZDA0YzA0NDE5MWYwZmY1OTMgXQoKSXQg aXMgcG9zc2libGUgZm9yIGEgcHJvY2VzcyB0byBhbGxvY2F0ZSBhbmQgYWNjdW11bGF0ZSBmYXIg bW9yZSBGRHMgdGhhbgp0aGUgcHJvY2VzcycgbGltaXQgYnkgc2VuZGluZyB0aGVtIG92ZXIgYSB1 bml4IHNvY2tldCB0aGVuIGNsb3NpbmcgdGhlbQp0byBrZWVwIHRoZSBwcm9jZXNzJyBmZCBjb3Vu dCBsb3cuCgpUaGlzIGNoYW5nZSBhZGRyZXNzZXMgdGhpcyBwcm9ibGVtIGJ5IGtlZXBpbmcgdHJh Y2sgb2YgdGhlIG51bWJlciBvZiBGRHMKaW4gZmxpZ2h0IHBlciB1c2VyIGFuZCBwcmV2ZW50aW5n IG5vbi1wcml2aWxlZ2VkIHByb2Nlc3NlcyBmcm9tIGhhdmluZwptb3JlIEZEcyBpbiBmbGlnaHQg dGhhbiB0aGVpciBjb25maWd1cmVkIEZEIGxpbWl0LgoKUmVwb3J0ZWQtYnk6IHNvY2tldHBhaXJA Z21haWwuY29tClJlcG9ydGVkLWJ5OiBUZXRzdW8gSGFuZGEgPHBlbmd1aW4ta2VybmVsQEktbG92 ZS5TQUtVUkEubmUuanA+Ck1pdGlnYXRlczogQ1ZFLTIwMTMtNDMxMiAoTGludXggMi4wKykKU3Vn Z2VzdGVkLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+ CkFja2VkLWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5v cmc+ClNpZ25lZC1vZmYtYnk6IFdpbGx5IFRhcnJlYXUgPHdAMXd0LmV1PgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogaW5jbHVkZS9saW51 eC9zY2hlZC5oIHwgIDEgKwogbmV0L3VuaXgvYWZfdW5peC5jICAgIHwgMjQgKysrKysrKysrKysr KysrKysrKystLS0tCiBuZXQvdW5peC9nYXJiYWdlLmMgICAgfCAxMyArKysrKysrKy0tLS0tCiAz IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCmluZGV4 IGZhMzk0MzQuLjIxYTZlOTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaAorKysg Yi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKQEAgLTgzMCw2ICs4MzAsNyBAQCBzdHJ1Y3QgdXNlcl9z dHJ1Y3QgewogCXVuc2lnbmVkIGxvbmcgbXFfYnl0ZXM7CS8qIEhvdyBtYW55IGJ5dGVzIGNhbiBi ZSBhbGxvY2F0ZWQgdG8gbXF1ZXVlPyAqLwogI2VuZGlmCiAJdW5zaWduZWQgbG9uZyBsb2NrZWRf c2htOyAvKiBIb3cgbWFueSBwYWdlcyBvZiBtbG9ja2VkIHNobSA/ICovCisJdW5zaWduZWQgbG9u ZyB1bml4X2luZmxpZ2h0OwkvKiBIb3cgbWFueSBmaWxlcyBpbiBmbGlnaHQgaW4gdW5peCBzb2Nr ZXRzICovCiAKICNpZmRlZiBDT05GSUdfS0VZUwogCXN0cnVjdCBrZXkgKnVpZF9rZXlyaW5nOwkv KiBVSUQgc3BlY2lmaWMga2V5cmluZyAqLwpkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5j IGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IGVmMDVjZDkuLmUzZjg1YmMgMTAwNjQ0Ci0tLSBh L25ldC91bml4L2FmX3VuaXguYworKysgYi9uZXQvdW5peC9hZl91bml4LmMKQEAgLTE1MTMsNiAr MTUxMywyMSBAQCBzdGF0aWMgdm9pZCB1bml4X2Rlc3RydWN0X3NjbShzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQogCXNvY2tfd2ZyZWUoc2tiKTsKIH0KIAorLyoKKyAqIFRoZSAidXNlci0+dW5peF9pbmZs aWdodCIgdmFyaWFibGUgaXMgcHJvdGVjdGVkIGJ5IHRoZSBnYXJiYWdlCisgKiBjb2xsZWN0aW9u IGxvY2ssIGFuZCB3ZSBqdXN0IHJlYWQgaXQgbG9ja2xlc3NseSBoZXJlLiBJZiB5b3UgZ28KKyAq IG92ZXIgdGhlIGxpbWl0LCB0aGVyZSBtaWdodCBiZSBhIHRpbnkgcmFjZSBpbiBhY3R1YWxseSBu b3RpY2luZworICogaXQgYWNyb3NzIHRocmVhZHMuIFRvdWdoLgorICovCitzdGF0aWMgaW5saW5l IGJvb2wgdG9vX21hbnlfdW5peF9mZHMoc3RydWN0IHRhc2tfc3RydWN0ICpwKQoreworCXN0cnVj dCB1c2VyX3N0cnVjdCAqdXNlciA9IGN1cnJlbnRfdXNlcigpOworCisJaWYgKHVubGlrZWx5KHVz ZXItPnVuaXhfaW5mbGlnaHQgPiB0YXNrX3JsaW1pdChwLCBSTElNSVRfTk9GSUxFKSkpCisJCXJl dHVybiAhY2FwYWJsZShDQVBfU1lTX1JFU09VUkNFKSAmJiAhY2FwYWJsZShDQVBfU1lTX0FETUlO KTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKICNkZWZpbmUgTUFYX1JFQ1VSU0lPTl9MRVZFTCA0CiAK IHN0YXRpYyBpbnQgdW5peF9hdHRhY2hfZmRzKHN0cnVjdCBzY21fY29va2llICpzY20sIHN0cnVj dCBza19idWZmICpza2IpCkBAIC0xNTIxLDYgKzE1MzYsOSBAQCBzdGF0aWMgaW50IHVuaXhfYXR0 YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXVu c2lnbmVkIGNoYXIgbWF4X2xldmVsID0gMDsKIAlpbnQgdW5peF9zb2NrX2NvdW50ID0gMDsKIAor CWlmICh0b29fbWFueV91bml4X2ZkcyhjdXJyZW50KSkKKwkJcmV0dXJuIC1FVE9PTUFOWVJFRlM7 CisKIAlmb3IgKGkgPSBzY20tPmZwLT5jb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAJCXN0cnVj dCBzb2NrICpzayA9IHVuaXhfZ2V0X3NvY2tldChzY20tPmZwLT5mcFtpXSk7CiAKQEAgLTE1NDIs MTAgKzE1NjAsOCBAQCBzdGF0aWMgaW50IHVuaXhfYXR0YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nvb2tp ZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmICghVU5JWENCKHNrYikuZnApCiAJCXJl dHVybiAtRU5PTUVNOwogCi0JaWYgKHVuaXhfc29ja19jb3VudCkgewotCQlmb3IgKGkgPSBzY20t PmZwLT5jb3VudCAtIDE7IGkgPj0gMDsgaS0tKQotCQkJdW5peF9pbmZsaWdodChzY20tPmZwLT5m cFtpXSk7Ci0JfQorCWZvciAoaSA9IHNjbS0+ZnAtPmNvdW50IC0gMTsgaSA+PSAwOyBpLS0pCisJ CXVuaXhfaW5mbGlnaHQoc2NtLT5mcC0+ZnBbaV0pOwogCXJldHVybiBtYXhfbGV2ZWw7CiB9CiAK ZGlmZiAtLWdpdCBhL25ldC91bml4L2dhcmJhZ2UuYyBiL25ldC91bml4L2dhcmJhZ2UuYwppbmRl eCBhNzNhMjI2Li44ZmNkYzIyIDEwMDY0NAotLS0gYS9uZXQvdW5peC9nYXJiYWdlLmMKKysrIGIv bmV0L3VuaXgvZ2FyYmFnZS5jCkBAIC0xMjAsMTEgKzEyMCwxMSBAQCB2b2lkIHVuaXhfaW5mbGln aHQoc3RydWN0IGZpbGUgKmZwKQogewogCXN0cnVjdCBzb2NrICpzID0gdW5peF9nZXRfc29ja2V0 KGZwKTsKIAorCXNwaW5fbG9jaygmdW5peF9nY19sb2NrKTsKKwogCWlmIChzKSB7CiAJCXN0cnVj dCB1bml4X3NvY2sgKnUgPSB1bml4X3NrKHMpOwogCi0JCXNwaW5fbG9jaygmdW5peF9nY19sb2Nr KTsKLQogCQlpZiAoYXRvbWljX2xvbmdfaW5jX3JldHVybigmdS0+aW5mbGlnaHQpID09IDEpIHsK IAkJCUJVR19PTighbGlzdF9lbXB0eSgmdS0+bGluaykpOwogCQkJbGlzdF9hZGRfdGFpbCgmdS0+ bGluaywgJmdjX2luZmxpZ2h0X2xpc3QpOwpAQCAtMTMyLDI1ICsxMzIsMjggQEAgdm9pZCB1bml4 X2luZmxpZ2h0KHN0cnVjdCBmaWxlICpmcCkKIAkJCUJVR19PTihsaXN0X2VtcHR5KCZ1LT5saW5r KSk7CiAJCX0KIAkJdW5peF90b3RfaW5mbGlnaHQrKzsKLQkJc3Bpbl91bmxvY2soJnVuaXhfZ2Nf bG9jayk7CiAJfQorCWZwLT5mX2NyZWQtPnVzZXItPnVuaXhfaW5mbGlnaHQrKzsKKwlzcGluX3Vu bG9jaygmdW5peF9nY19sb2NrKTsKIH0KIAogdm9pZCB1bml4X25vdGluZmxpZ2h0KHN0cnVjdCBm aWxlICpmcCkKIHsKIAlzdHJ1Y3Qgc29jayAqcyA9IHVuaXhfZ2V0X3NvY2tldChmcCk7CiAKKwlz cGluX2xvY2soJnVuaXhfZ2NfbG9jayk7CisKIAlpZiAocykgewogCQlzdHJ1Y3QgdW5peF9zb2Nr ICp1ID0gdW5peF9zayhzKTsKIAotCQlzcGluX2xvY2soJnVuaXhfZ2NfbG9jayk7CiAJCUJVR19P TihsaXN0X2VtcHR5KCZ1LT5saW5rKSk7CiAKIAkJaWYgKGF0b21pY19sb25nX2RlY19hbmRfdGVz dCgmdS0+aW5mbGlnaHQpKQogCQkJbGlzdF9kZWxfaW5pdCgmdS0+bGluayk7CiAJCXVuaXhfdG90 X2luZmxpZ2h0LS07Ci0JCXNwaW5fdW5sb2NrKCZ1bml4X2djX2xvY2spOwogCX0KKwlmcC0+Zl9j cmVkLT51c2VyLT51bml4X2luZmxpZ2h0LS07CisJc3Bpbl91bmxvY2soJnVuaXhfZ2NfbG9jayk7 CiB9CiAKIHN0YXRpYyB2b2lkIHNjYW5faW5mbGlnaHQoc3RydWN0IHNvY2sgKngsIHZvaWQgKCpm dW5jKShzdHJ1Y3QgdW5peF9zb2NrICopLAotLSAKMi4xLjAKCgpGcm9tIDU3ZTM0N2JkM2Q0MTY1 NWE2YTg0NDk4M2I0YjczODkxNTU3MmJmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE5pY29sYXMgRGljaHRlbCA8bmljb2xhcy5kaWNodGVsQDZ3aW5kLmNvbT4KRGF0ZTogVGh1LCA3 IEphbiAyMDE2IDExOjI2OjUzICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMi8yNF0gdnhsYW46IGZp eCB0ZXN0IHdoaWNoIGRldGVjdCBkdXBsaWNhdGUgdnhsYW4gaWZhY2UKClsgVXBzdHJlYW0gY29t bWl0IDA3YjliMzdjMjI3Y2I4ZDg4ZDQ3OGI0YTljNTYzNGZlZTUxNGVkZTEgXQoKV2hlbiBhIHZ4 bGFuIGludGVyZmFjZSBpcyBjcmVhdGVkLCB0aGUgZHJpdmVyIGNoZWNrcyB0aGF0IHRoZXJlIGlz IG5vdAphbm90aGVyIHZ4bGFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMuIFRv IGRvIHRoaXMsIGl0IGNoZWNrcwp0aGUgZXhpc3RpbmcgdnhsYW4gdWRwIHNvY2tldC4gU2luY2Ug Y29tbWl0IDFjNTFhOTE1OWRkZSwgdGhlIGNyZWF0aW9uIG9mCnRoZSB2eGxhbiBzb2NrZXQgaXMg ZG9uZSBvbmx5IHdoZW4gdGhlIGludGVyZmFjZSBpcyBzZXQgdXAsIHRodXMgaXQgYnJlYWtzCnRo YXQgdGVzdC4KCkV4YW1wbGU6CiQgaXAgbCBhIHZ4bGFuMTAgdHlwZSB2eGxhbiBpZCAxMCBncm91 cCAyMzkuMC4wLjEwIGRldiBldGgwIGRzdHBvcnQgMAokIGlwIGwgYSB2eGxhbjExIHR5cGUgdnhs YW4gaWQgMTAgZ3JvdXAgMjM5LjAuMC4xMCBkZXYgZXRoMCBkc3Rwb3J0IDAKJCBpcCAtYnIgbCB8 IGdyZXAgdnhsYW4KdnhsYW4xMCAgICAgICAgICBET1dOICAgICAgICAgICBmMjo1NToxYzo2YTpm YjowMCA8QlJPQURDQVNULE1VTFRJQ0FTVD4KdnhsYW4xMSAgICAgICAgICBET1dOICAgICAgICAg ICA3YTpjYjpiOTozODo1OTowZCA8QlJPQURDQVNULE1VTFRJQ0FTVD4KCkluc3RlYWQgb2YgY2hl Y2tpbmcgc29ja2V0cywgbGV0J3MgbG9vcCBvdmVyIHRoZSB2eGxhbiBpZmFjZSBsaXN0LgoKRml4 ZXM6IDFjNTFhOTE1OWRkZSAoInZ4bGFuOiBmaXggcmFjZSBjYXVzZWQgYnkgZHJvcHBpbmcgcnRu bF91bmxvY2siKQpSZXBvcnRlZC1ieTogVGhvbWFzIEZhaXZyZSA8dGhvbWFzLmZhaXZyZUA2d2lu ZC5jb20+ClNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRGljaHRlbCA8bmljb2xhcy5kaWNodGVsQDZ3 aW5kLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIGRyaXZlcnMvbmV0L3Z4bGFuLmMgfCAxMiArKysrKysrKystLS0KIDEgZmlsZSBj aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvdnhsYW4uYyBiL2RyaXZlcnMvbmV0L3Z4bGFuLmMKaW5kZXggYmEzNjNjZS4uNDA1 YTdiNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4uYworKysgYi9kcml2ZXJzL25ldC92 eGxhbi5jCkBAIC0yNzUxLDcgKzI3NTEsNyBAQCBzdGF0aWMgaW50IHZ4bGFuX2Rldl9jb25maWd1 cmUoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICAg ICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mKQogewogCXN0cnVjdCB2eGxhbl9uZXQgKnZuID0g bmV0X2dlbmVyaWMoc3JjX25ldCwgdnhsYW5fbmV0X2lkKTsKLQlzdHJ1Y3QgdnhsYW5fZGV2ICp2 eGxhbiA9IG5ldGRldl9wcml2KGRldik7CisJc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4gPSBuZXRk ZXZfcHJpdihkZXYpLCAqdG1wOwogCXN0cnVjdCB2eGxhbl9yZHN0ICpkc3QgPSAmdnhsYW4tPmRl ZmF1bHRfZHN0OwogCXVuc2lnbmVkIHNob3J0IG5lZWRlZF9oZWFkcm9vbSA9IEVUSF9ITEVOOwog CWludCBlcnI7CkBAIC0yODE3LDkgKzI4MTcsMTUgQEAgc3RhdGljIGludCB2eGxhbl9kZXZfY29u ZmlndXJlKHN0cnVjdCBuZXQgKnNyY19uZXQsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYg KCF2eGxhbi0+Y2ZnLmFnZV9pbnRlcnZhbCkKIAkJdnhsYW4tPmNmZy5hZ2VfaW50ZXJ2YWwgPSBG REJfQUdFX0RFRkFVTFQ7CiAKLQlpZiAodnhsYW5fZmluZF92bmkoc3JjX25ldCwgY29uZi0+dm5p LCB1c2VfaXB2NiA/IEFGX0lORVQ2IDogQUZfSU5FVCwKLQkJCSAgIHZ4bGFuLT5jZmcuZHN0X3Bv cnQsIHZ4bGFuLT5mbGFncykpCisJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsICZ2bi0+dnhsYW5f bGlzdCwgbmV4dCkgeworCQlpZiAodG1wLT5jZmcudm5pID09IGNvbmYtPnZuaSAmJgorCQkgICAg KHRtcC0+ZGVmYXVsdF9kc3QucmVtb3RlX2lwLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNiB8fAor CQkgICAgIHRtcC0+Y2ZnLnNhZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgPT0gdXNlX2lw djYgJiYKKwkJICAgIHRtcC0+Y2ZnLmRzdF9wb3J0ID09IHZ4bGFuLT5jZmcuZHN0X3BvcnQgJiYK KwkJICAgICh0bXAtPmZsYWdzICYgVlhMQU5fRl9SQ1ZfRkxBR1MpID09CisJCSAgICAodnhsYW4t PmZsYWdzICYgVlhMQU5fRl9SQ1ZfRkxBR1MpKQogCQlyZXR1cm4gLUVFWElTVDsKKwl9CiAKIAlk ZXYtPmV0aHRvb2xfb3BzID0gJnZ4bGFuX2V0aHRvb2xfb3BzOwogCi0tIAoyLjEuMAoKCkZyb20g YzQ3MWYxNmVkMTk2NjVhYTg3MjY3NGZlMGQ2MWEyZTk5MDgyZTFkOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogU2FzaGEgTGV2aW4gPHNhc2hhLmxldmluQG9yYWNsZS5jb20+CkRhdGU6 IFRodSwgNyBKYW4gMjAxNiAxNDo1Mjo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDMvMjRdIG5l dDogc2N0cDogcHJldmVudCB3cml0ZXMgdG8gY29va2llX2htYWNfYWxnIGZyb20KIGFjY2Vzc2lu ZyBpbnZhbGlkIG1lbW9yeQoKWyBVcHN0cmVhbSBjb21taXQgMzIwZjFhNGExNzVlN2NkNWQzZjAw NmY5MmI0ZDRkM2UyY2JiN2JiNSBdCgpwcm9jX2Rvc3RyaW5nKCkgbmVlZHMgYW4gaW5pdGlhbGl6 ZWQgZGVzdGluYXRpb24gc3RyaW5nLCB3aGlsZSB0aGUgb25lCnByb3ZpZGVkIGluIHByb2Nfc2N0 cF9kb19obWFjX2FsZygpIGNvbnRhaW5zIHN0YWNrIGdhcmJhZ2UuCgpUaHVzLCB3cml0aW5nIHRv IGNvb2tpZV9obWFjX2FsZyB3b3VsZCBzdHJsZW4oKSB0aGF0IGdhcmJhZ2UgYW5kIGVuZCB1cAph Y2Nlc3NpbmcgaW52YWxpZCBtZW1vcnkuCgpGaXhlczogM2M2ODE5OGU3ICgic2N0cDogTWFrZSBo bWFjIGFsZ29yaXRobSBzZWxlY3Rpb24gZm9yIGNvb2tpZSBnZW5lcmF0aW9uIGR5bmFtaWMiKQpT aWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGEubGV2aW5Ab3JhY2xlLmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9z Y3RwL3N5c2N0bC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc3lzY3RsLmMgYi9uZXQvc2N0cC9zeXNj dGwuYwppbmRleCAyNmQ1MGM1Li4zZTBmYzUxIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zeXNjdGwu YworKysgYi9uZXQvc2N0cC9zeXNjdGwuYwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyBpbnQg cHJvY19zY3RwX2RvX2htYWNfYWxnKHN0cnVjdCBjdGxfdGFibGUgKmN0bCwgaW50IHdyaXRlLAog CXN0cnVjdCBjdGxfdGFibGUgdGJsOwogCWJvb2wgY2hhbmdlZCA9IGZhbHNlOwogCWNoYXIgKm5v bmUgPSAibm9uZSI7Ci0JY2hhciB0bXBbOF07CisJY2hhciB0bXBbOF0gPSB7MH07CiAJaW50IHJl dDsKIAogCW1lbXNldCgmdGJsLCAwLCBzaXplb2Yoc3RydWN0IGN0bF90YWJsZSkpOwotLSAKMi4x LjAKCgpGcm9tIDU2YWY1M2RhY2U1ZmNiMTlhNjNjMzUyNDM0NDkwYmEwYTA4MDQ0OGQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNv bT4KRGF0ZTogRnJpLCA4IEphbiAyMDE2IDA5OjM1OjUxIC0wODAwClN1YmplY3Q6IFtQQVRDSCAw NC8yNF0gaXB2NjogdGNwOiBhZGQgcmN1IGxvY2tpbmcgaW4gdGNwX3Y2X3NlbmRfc3luYWNrKCkK ClsgVXBzdHJlYW0gY29tbWl0IDNlNDAwNmYwYjg2YTVhZTVlYjBlODIxNWY5YTllMWRiMjQ1MDY5 NzcgXQoKV2hlbiBmaXJzdCBTWU5BQ0sgaXMgc2VudCwgd2UgYWxyZWFkeSBob2xkIHJjdV9yZWFk X2xvY2soKSwgYnV0IHRoaXMKaXMgbm90IHRydWUgaWYgYSBTWU5BQ0sgaXMgcmV0cmFuc21pdHRl ZCwgYXMgYSB0aW1lciAoc29mdCkgaW50ZXJydXB0CmRvZXMgbm90IGhvbGQgcmN1X3JlYWRfbG9j aygpCgpGaXhlczogNDVmNmZhZDg0Y2MzMCAoImlwdjY6IGFkZCBjb21wbGV0ZSByY3UgcHJvdGVj dGlvbiBhcm91bmQgbnAtPm9wdCIpClJlcG9ydGVkLWJ5OiBEYXZlIEpvbmVzIDxkYXZlakBjb2Rl bW9ua2V5Lm9yZy51az4KU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29n bGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+Ci0tLQogbmV0L2lwdjYvdGNwX2lwdjYuYyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0L2lwdjYv dGNwX2lwdjYuYwppbmRleCA2YjhhOGE5Li5iZDEwMGI0IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni90 Y3BfaXB2Ni5jCisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKQEAgLTQ2Miw4ICs0NjIsMTAgQEAg c3RhdGljIGludCB0Y3BfdjZfc2VuZF9zeW5hY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3QgZHN0X2VudHJ5ICpkc3QsCiAJCWlmIChucC0+cmVwZmxvdyAmJiBpcmVxLT5wa3RvcHRzKQog CQkJZmw2LT5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKGlyZXEtPnBrdG9wdHMp KTsKIAorCQlyY3VfcmVhZF9sb2NrKCk7CiAJCWVyciA9IGlwNl94bWl0KHNrLCBza2IsIGZsNiwg cmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAogCQkJICAgICAgIG5wLT50Y2xhc3MpOworCQlyY3Vf cmVhZF91bmxvY2soKTsKIAkJZXJyID0gbmV0X3htaXRfZXZhbChlcnIpOwogCX0KIAotLSAKMi4x LjAKCgpGcm9tIGE1MDgzZTNjYTY2NDg2ODE5NDg1OWY4YmQ3NzI2N2IwZWE4NTY5YTAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5lYWwgQ2FyZHdlbGwgPG5jYXJkd2VsbEBnb29nbGUu Y29tPgpEYXRlOiBNb24sIDExIEphbiAyMDE2IDEzOjQyOjQzIC0wNTAwClN1YmplY3Q6IFtQQVRD SCAwNS8yNF0gdGNwX3llYWg6IGRvbid0IHNldCBzc3RocmVzaCBiZWxvdyAyCgpbIFVwc3RyZWFt IGNvbW1pdCA4M2QxNWU3MGM0ZDg5MDlkNzIyYzBkNjQ3NDdkOGZiNDJlMzhhNDhmIF0KCkZvciB0 Y3BfeWVhaCwgdXNlIGFuIHNzdGhyZXNoIGZsb29yIG9mIDIsIHRoZSBzYW1lIGZsb29yIHVzZWQg YnkgUmVubwphbmQgQ1VCSUMsIHBlciBSRkMgNTY4MSAoZXF1YXRpb24gNCkuCgp0Y3BfeWVhaF9z c3RocmVzaCgpIHdhcyBzb21ldGltZXMgcmV0dXJuaW5nIGEgMCBvciBuZWdhdGl2ZSBzc3RocmVz aAp2YWx1ZSBpZiB0aGUgaW50ZW5kZWQgcmVkdWN0aW9uIGlzIGFzIGJpZyBvciBiaWdnZXIgdGhh biB0aGUgY3VycmVudApjd25kLiBDb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlcyBzaG91bGQgbmV2 ZXIgcmV0dXJuIGEgemVybyBvcgpuZWdhdGl2ZSBzc3RocmVzaC4gQSB6ZXJvIHNzdGhyZXNoIGdl bmVyYWxseSByZXN1bHRzIGluIGEgemVybyBjd25kLApjYXVzaW5nIHRoZSBjb25uZWN0aW9uIHRv IHN0YWxsLiBBIG5lZ2F0aXZlIHNzdGhyZXNoIHZhbHVlIHdpbGwgYmUKaW50ZXJwcmV0ZWQgYXMg YSB1MzIgYW5kIHdpbGwgc2V0IGEgdGFyZ2V0IGN3bmQgZm9yIFBSUiBuZWFyIDQKYmlsbGlvbi4K Ck9sZWtzYW5kciBOYXRhbGVua28gcmVwb3J0ZWQgdGhhdCBhIHN5c3RlbSB1c2luZyB0Y3BfeWVh aCB3aXRoIEVDTgpjb3VsZCBzZWUgYSB3YXJuaW5nIGFib3V0IGEgcHJpb3JfY3duZCBvZiAwIGlu CnRjcF9jd25kX3JlZHVjdGlvbigpLiBUZXN0aW5nIHZlcmlmaWVkIHRoYXQgdGhpcyB3YXMgZHVl IHRvCnRjcF95ZWFoX3NzdGhyZXNoKCkgbWlzYmVoYXZpbmcgaW4gdGhpcyB3YXkuCgpSZXBvcnRl ZC1ieTogT2xla3NhbmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFsZW5rby5uYW1lPgpTaWdu ZWQtb2ZmLWJ5OiBOZWFsIENhcmR3ZWxsIDxuY2FyZHdlbGxAZ29vZ2xlLmNvbT4KU2lnbmVkLW9m Zi1ieTogWXVjaHVuZyBDaGVuZyA8eWNoZW5nQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4g TWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF95ZWFoLmMgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9uZXQvaXB2NC90Y3BfeWVhaC5jIGIvbmV0L2lwdjQvdGNwX3llYWguYwppbmRleCAx N2QzNTY2Li4zZTZhNDcyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfeWVhaC5jCisrKyBiL25l dC9pcHY0L3RjcF95ZWFoLmMKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgdTMyIHRjcF95ZWFo X3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzaykKIAl5ZWFoLT5mYXN0X2NvdW50ID0gMDsKIAl5ZWFo LT5yZW5vX2NvdW50ID0gbWF4KHllYWgtPnJlbm9fY291bnQ+PjEsIDJVKTsKIAotCXJldHVybiB0 cC0+c25kX2N3bmQgLSByZWR1Y3Rpb247CisJcmV0dXJuIG1heF90KGludCwgdHAtPnNuZF9jd25k IC0gcmVkdWN0aW9uLCAyKTsKIH0KIAogc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMg dGNwX3llYWggX19yZWFkX21vc3RseSA9IHsKLS0gCjIuMS4wCgoKRnJvbSA1ZjkwZTZiZDVmNjFk YWQ4OTJhNmNmNDRlNjYzZWEzMzUxMmZjNGZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBKYW1hbCBIYWRpIFNhbGltIDxqaHNAbW9qYXRhdHUuY29tPgpEYXRlOiBTdW4sIDEwIEphbiAy MDE2IDExOjQ3OjAxIC0wNTAwClN1YmplY3Q6IFtQQVRDSCAwNi8yNF0gc2NoZWQsY2xzX2Zsb3dl cjogc2V0IGtleSBhZGRyZXNzIHR5cGUgd2hlbiBwcmVzZW50CgpbIFVwc3RyZWFtIGNvbW1pdCA2 NjUzMGJkZjg1ZWIxZDcyYTBjMzk5NjY1ZTA5YTJjMjI5ODUwMWM2IF0KCm9ubHkgd2hlbiB1c2Vy IHNwYWNlIHBhc3NlcyB0aGUgYWRkcmVzc2VzIHNob3VsZCB3ZSBjb25zaWRlciB0aGVpcgpwcmVz ZW5jZQoKU2lnbmVkLW9mZi1ieTogSmFtYWwgSGFkaSBTYWxpbSA8amhzQG1vamF0YXR1LmNvbT4K QWNrZWQtYnk6IEppcmkgUGlya28gPGppcmlAcmVzbnVsbGkudXM+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvc2NoZWQvY2xzX2Zs b3dlci5jIHwgMTAgKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2Zsb3dlci5jIGIvbmV0 L3NjaGVkL2Nsc19mbG93ZXIuYwppbmRleCA1NzY5Mjk0Li45NWIwMjEyIDEwMDY0NAotLS0gYS9u ZXQvc2NoZWQvY2xzX2Zsb3dlci5jCisrKyBiL25ldC9zY2hlZC9jbHNfZmxvd2VyLmMKQEAgLTI1 MiwyMyArMjUyLDI4IEBAIHN0YXRpYyBpbnQgZmxfc2V0X2tleShzdHJ1Y3QgbmV0ICpuZXQsIHN0 cnVjdCBubGF0dHIgKip0YiwKIAlmbF9zZXRfa2V5X3ZhbCh0Yiwga2V5LT5ldGguc3JjLCBUQ0Ff RkxPV0VSX0tFWV9FVEhfU1JDLAogCQkgICAgICAgbWFzay0+ZXRoLnNyYywgVENBX0ZMT1dFUl9L RVlfRVRIX1NSQ19NQVNLLAogCQkgICAgICAgc2l6ZW9mKGtleS0+ZXRoLnNyYykpOworCiAJZmxf c2V0X2tleV92YWwodGIsICZrZXktPmJhc2ljLm5fcHJvdG8sIFRDQV9GTE9XRVJfS0VZX0VUSF9U WVBFLAogCQkgICAgICAgJm1hc2stPmJhc2ljLm5fcHJvdG8sIFRDQV9GTE9XRVJfVU5TUEVDLAog CQkgICAgICAgc2l6ZW9mKGtleS0+YmFzaWMubl9wcm90bykpOworCiAJaWYgKGtleS0+YmFzaWMu bl9wcm90byA9PSBodG9ucyhFVEhfUF9JUCkgfHwKIAkgICAga2V5LT5iYXNpYy5uX3Byb3RvID09 IGh0b25zKEVUSF9QX0lQVjYpKSB7CiAJCWZsX3NldF9rZXlfdmFsKHRiLCAma2V5LT5iYXNpYy5p cF9wcm90bywgVENBX0ZMT1dFUl9LRVlfSVBfUFJPVE8sCiAJCQkgICAgICAgJm1hc2stPmJhc2lj LmlwX3Byb3RvLCBUQ0FfRkxPV0VSX1VOU1BFQywKIAkJCSAgICAgICBzaXplb2Yoa2V5LT5iYXNp Yy5pcF9wcm90bykpOwogCX0KLQlpZiAoa2V5LT5jb250cm9sLmFkZHJfdHlwZSA9PSBGTE9XX0RJ U1NFQ1RPUl9LRVlfSVBWNF9BRERSUykgeworCisJaWYgKHRiW1RDQV9GTE9XRVJfS0VZX0lQVjRf U1JDXSB8fCB0YltUQ0FfRkxPV0VSX0tFWV9JUFY0X0RTVF0pIHsKKwkJa2V5LT5jb250cm9sLmFk ZHJfdHlwZSA9IEZMT1dfRElTU0VDVE9SX0tFWV9JUFY0X0FERFJTOwogCQlmbF9zZXRfa2V5X3Zh bCh0YiwgJmtleS0+aXB2NC5zcmMsIFRDQV9GTE9XRVJfS0VZX0lQVjRfU1JDLAogCQkJICAgICAg ICZtYXNrLT5pcHY0LnNyYywgVENBX0ZMT1dFUl9LRVlfSVBWNF9TUkNfTUFTSywKIAkJCSAgICAg ICBzaXplb2Yoa2V5LT5pcHY0LnNyYykpOwogCQlmbF9zZXRfa2V5X3ZhbCh0YiwgJmtleS0+aXB2 NC5kc3QsIFRDQV9GTE9XRVJfS0VZX0lQVjRfRFNULAogCQkJICAgICAgICZtYXNrLT5pcHY0LmRz dCwgVENBX0ZMT1dFUl9LRVlfSVBWNF9EU1RfTUFTSywKIAkJCSAgICAgICBzaXplb2Yoa2V5LT5p cHY0LmRzdCkpOwotCX0gZWxzZSBpZiAoa2V5LT5jb250cm9sLmFkZHJfdHlwZSA9PSBGTE9XX0RJ U1NFQ1RPUl9LRVlfSVBWNl9BRERSUykgeworCX0gZWxzZSBpZiAodGJbVENBX0ZMT1dFUl9LRVlf SVBWNl9TUkNdIHx8IHRiW1RDQV9GTE9XRVJfS0VZX0lQVjZfRFNUXSkgeworCQlrZXktPmNvbnRy b2wuYWRkcl90eXBlID0gRkxPV19ESVNTRUNUT1JfS0VZX0lQVjZfQUREUlM7CiAJCWZsX3NldF9r ZXlfdmFsKHRiLCAma2V5LT5pcHY2LnNyYywgVENBX0ZMT1dFUl9LRVlfSVBWNl9TUkMsCiAJCQkg ICAgICAgJm1hc2stPmlwdjYuc3JjLCBUQ0FfRkxPV0VSX0tFWV9JUFY2X1NSQ19NQVNLLAogCQkJ ICAgICAgIHNpemVvZihrZXktPmlwdjYuc3JjKSk7CkBAIC0yNzYsNiArMjgxLDcgQEAgc3RhdGlj IGludCBmbF9zZXRfa2V5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQkJ ICAgICAgICZtYXNrLT5pcHY2LmRzdCwgVENBX0ZMT1dFUl9LRVlfSVBWNl9EU1RfTUFTSywKIAkJ CSAgICAgICBzaXplb2Yoa2V5LT5pcHY2LmRzdCkpOwogCX0KKwogCWlmIChrZXktPmJhc2ljLmlw X3Byb3RvID09IElQUFJPVE9fVENQKSB7CiAJCWZsX3NldF9rZXlfdmFsKHRiLCAma2V5LT50cC5z cmMsIFRDQV9GTE9XRVJfS0VZX1RDUF9TUkMsCiAJCQkgICAgICAgJm1hc2stPnRwLnNyYywgVENB X0ZMT1dFUl9VTlNQRUMsCi0tIAoyLjEuMAoKCkZyb20gZjlmNzc3MmE4MTcyNTExYTM3NjdlNDk5 MDM0NzQ4OWY2NmMyODM1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiBGYXN0 YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxMCBKYW4gMjAxNiAy MTozODo0NCAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMDcvMjRdIG5ldDogcGt0Z2VuOiBmaXggbnVs bCBwdHIgZGVyZWYgaW4gc2tiIGFsbG9jYXRpb24KClsgVXBzdHJlYW0gY29tbWl0IDNkZTAzNTk2 ZGZlZWU0OGJjODAzYzFkMWE2ZGFmNjBhNDU5OTI5ZjMgXQoKRml4IHBvc3NpYmxlIG51bGwgcG9p bnRlciBkZXJlZmVyZW5jZSB0aGF0IG1heSBvY2N1ciB3aGVuIGNhbGxpbmcKc2tiX3Jlc2VydmUo KSBvbiBhIG51bGwgc2tiLgoKRml4ZXM6IDg3OWM3MjIwZTgyICgibmV0OiBwa3RnZW46IE9ic2Vy dmUgbmVlZGVkX2hlYWRyb29tIG9mIHRoZSBkZXZpY2UiKQpTaWduZWQtb2ZmLWJ5OiBKb2huIEZh c3RhYmVuZCA8am9obi5yLmZhc3RhYmVuZEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvY29yZS9wa3RnZW4uYyB8 IDQgKysrLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL25ldC9jb3JlL3BrdGdlbi5jIGIvbmV0L2NvcmUvcGt0Z2VuLmMKaW5kZXgg ZGU4ZDVjYy4uNGRhNGQ1MSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvcGt0Z2VuLmMKKysrIGIvbmV0 L2NvcmUvcGt0Z2VuLmMKQEAgLTI3ODcsNyArMjc4Nyw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVm ZiAqcGt0Z2VuX2FsbG9jX3NrYihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCX0gZWxzZSB7CiAJ CSBza2IgPSBfX25ldGRldl9hbGxvY19za2IoZGV2LCBzaXplLCBHRlBfTk9XQUlUKTsKIAl9Ci0J c2tiX3Jlc2VydmUoc2tiLCBMTF9SRVNFUlZFRF9TUEFDRShkZXYpKTsKKworCWlmIChsaWtlbHko c2tiKSkKKwkJc2tiX3Jlc2VydmUoc2tiLCBMTF9SRVNFUlZFRF9TUEFDRShkZXYpKTsKIAogCXJl dHVybiBza2I7CiB9Ci0tIAoyLjEuMAoKCkZyb20gZjdkNzc4NTg0OWFlYWU4OTc0YTQ0ZmE3MWJi NTJjMjQzOWQ4YTg5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP01p Y2hhbD0yMEt1YmU9QzQ9OERlaz89IDxta3ViZWNla0BzdXNlLmN6PgpEYXRlOiBNb24sIDExIEph biAyMDE2IDA3OjUwOjMwICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOC8yNF0gdWRwOiBkaXNhbGxv dyBVRk8gZm9yIHNvY2tldHMgd2l0aCBTT19OT19DSEVDSyBvcHRpb24KClsgVXBzdHJlYW0gY29t bWl0IDQwYmEzMzAyMjdhZDAwYjhjMGNkZjJmNDI1NzM2ZmY5NTQ5Y2M0MjMgXQoKQ29tbWl0IGFj ZjhkZDBhOWQwYiAoInVkcDogb25seSBhbGxvdyBVRk8gZm9yIHBhY2tldHMgZnJvbSBTT0NLX0RH UkFNCnNvY2tldHMiKSBkaXNhbGxvd3MgVUZPIGZvciBwYWNrZXRzIHNlbnQgZnJvbSByYXcgc29j a2V0cy4gV2UgbmVlZCB0byBkbwp0aGUgc2FtZSBhbHNvIGZvciBTT0NLX0RHUkFNIHNvY2tldHMg d2l0aCBTT19OT19DSEVDSyBvcHRpb25zLCBldmVuIGlmCmZvciBhIGJpdCBkaWZmZXJlbnQgcmVh c29uOiB3aGlsZSBzdWNoIHNvY2tldCB3b3VsZCBvdmVycmlkZSB0aGUKQ0hFQ0tTVU1fUEFSVElB TCBzZXQgYnkgaXBfdWZvX2FwcGVuZF9kYXRhKCksIGdzb19zaXplIGlzIHN0aWxsIHNldCBhbmQK YmFkIG9mZmxvYWRpbmcgZmxhZ3Mgd2FybmluZyBpcyB0cmlnZ2VyZWQgaW4gX19za2JfZ3NvX3Nl Z21lbnQoKS4KCkluIHRoZSBJUHY2IGNhc2UsIFNPX05PX0NIRUNLIG9wdGlvbiBpcyBpZ25vcmVk IGJ1dCB3ZSBuZWVkIHRvIGRpc2FsbG93ClVGTyBmb3IgcGFja2V0cyBzZW50IGJ5IHNvY2tldHMg d2l0aCBVRFBfTk9fQ0hFQ0s2X1RYIG9wdGlvbi4KClNpZ25lZC1vZmYtYnk6IE1pY2hhbCBLdWJl Y2VrIDxta3ViZWNla0BzdXNlLmN6PgpUZXN0ZWQtYnk6IFNoYW5ub24gTmVsc29uIDxzaGFubm9u Lm5lbHNvbkBpbnRlbC5jb20+CkFja2VkLWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVz QHN0cmVzc2luZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2 ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC9pcF9vdXRwdXQuYyAgfCAyICstCiBuZXQv aXB2Ni9pcDZfb3V0cHV0LmMgfCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9vdXRwdXQuYyBiL25l dC9pcHY0L2lwX291dHB1dC5jCmluZGV4IDQyMzNjYmUuLjM2YWM5ZjMgMTAwNjQ0Ci0tLSBhL25l dC9pcHY0L2lwX291dHB1dC5jCisrKyBiL25ldC9pcHY0L2lwX291dHB1dC5jCkBAIC05MjEsNyAr OTIxLDcgQEAgc3RhdGljIGludCBfX2lwX2FwcGVuZF9kYXRhKHN0cnVjdCBzb2NrICpzaywKIAlp ZiAoKChsZW5ndGggPiBtdHUpIHx8IChza2IgJiYgc2tiX2lzX2dzbyhza2IpKSkgJiYKIAkgICAg KHNrLT5za19wcm90b2NvbCA9PSBJUFBST1RPX1VEUCkgJiYKIAkgICAgKHJ0LT5kc3QuZGV2LT5m ZWF0dXJlcyAmIE5FVElGX0ZfVUZPKSAmJiAhcnQtPmRzdC5oZWFkZXJfbGVuICYmCi0JICAgIChz ay0+c2tfdHlwZSA9PSBTT0NLX0RHUkFNKSkgeworCSAgICAoc2stPnNrX3R5cGUgPT0gU09DS19E R1JBTSkgJiYgIXNrLT5za19ub19jaGVja190eCkgewogCQllcnIgPSBpcF91Zm9fYXBwZW5kX2Rh dGEoc2ssIHF1ZXVlLCBnZXRmcmFnLCBmcm9tLCBsZW5ndGgsCiAJCQkJCSBoaF9sZW4sIGZyYWdo ZWFkZXJsZW4sIHRyYW5zaGRybGVuLAogCQkJCQkgbWF4ZnJhZ2xlbiwgZmxhZ3MpOwpkaWZmIC0t Z2l0IGEvbmV0L2lwdjYvaXA2X291dHB1dC5jIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCmluZGV4 IGU2YTdiZDE1Li42NDczODg5IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKKysr IGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBlbXNnc2l6ZToK IAkgICAgIChza2IgJiYgc2tiX2lzX2dzbyhza2IpKSkgJiYKIAkgICAgKHNrLT5za19wcm90b2Nv bCA9PSBJUFBST1RPX1VEUCkgJiYKIAkgICAgKHJ0LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElG X0ZfVUZPKSAmJgotCSAgICAoc2stPnNrX3R5cGUgPT0gU09DS19ER1JBTSkpIHsKKwkgICAgKHNr LT5za190eXBlID09IFNPQ0tfREdSQU0pICYmICF1ZHBfZ2V0X25vX2NoZWNrNl90eChzaykpIHsK IAkJZXJyID0gaXA2X3Vmb19hcHBlbmRfZGF0YShzaywgcXVldWUsIGdldGZyYWcsIGZyb20sIGxl bmd0aCwKIAkJCQkJICBoaF9sZW4sIGZyYWdoZWFkZXJsZW4sCiAJCQkJCSAgdHJhbnNoZHJsZW4s IG10dSwgZmxhZ3MsIGZsNik7Ci0tIAoyLjEuMAoKCkZyb20gMWIwZDg3MTY4MTM5MDg0MjE0MGZk Yzc2NTg4NWU4YTRmYWVhZTY3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS29uc3Rh bnRpbiBLaGxlYm5pa292IDxrb2N0OWlAZ21haWwuY29tPgpEYXRlOiBGcmksIDggSmFuIDIwMTYg MTU6MjE6NDYgKzAzMDAKU3ViamVjdDogW1BBVENIIDA5LzI0XSBuZXQ6IHByZXNlcnZlIElQIGNv bnRyb2wgYmxvY2sgZHVyaW5nIEdTTyBzZWdtZW50YXRpb24KClsgVXBzdHJlYW0gY29tbWl0IDky MDdmOWQ0NWIwYWQwNzFiYWExMjhlODQ2ZDdlN2VkODUwMTZkZjMgXQoKU2tiX2dzb19zZWdtZW50 KCkgdXNlcyBza2IgY29udHJvbCBibG9jayBkdXJpbmcgc2VnbWVudGF0aW9uLgpUaGlzIHBhdGNo IGFkZHMgMzItYnl0ZXMgcm9vbSBmb3IgcHJldmlvdXMgY29udHJvbCBibG9jayB3aGljaAp3aWxs IGJlIGNvcGllZCBpbnRvIGFsbCByZXN1bHRpbmcgc2VnbWVudHMuCgpUaGlzIHBhdGNoIGZpeGVz IGtlcm5lbCBjcmFzaCBkdXJpbmcgZnJhZ21lbnRpbmcgZm9yd2FyZGVkIHBhY2tldHMuCkZyYWdt ZW50YXRpb24gcmVxdWlyZXMgdmFsaWQgSVAgQ0IgaW4gc2tiIGZvciBjbGVhcmluZyBpcCBvcHRp b25zLgpBbHNvIHBhdGNoIHJlbW92ZXMgY3VzdG9tIHNhdmUvcmVzdG9yZSBpbiBvdnMgY29kZSwg bm93IGl0J3MgcmVkdW5kYW50LgoKU2lnbmVkLW9mZi1ieTogS29uc3RhbnRpbiBLaGxlYm5pa292 IDxrb2N0OWlAZ21haWwuY29tPgpMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3IvQ0FMWUdO aVAtME1aLUZFeFYySHV0VHZFOVUtUVF0a0tTb0UtLUtOPUpRRTVTVFlzakFBQG1haWwuZ21haWwu Y29tClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4K LS0tCiBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oICAgICB8IDMgKystCiBuZXQvY29yZS9kZXYuYyAg ICAgICAgICAgICB8IDUgKysrKysKIG5ldC9pcHY0L2lwX291dHB1dC5jICAgICAgIHwgMSArCiBu ZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYyB8IDUgKy0tLS0KIG5ldC94ZnJtL3hmcm1fb3V0cHV0 LmMgICAgIHwgMiArKwogNSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xp bnV4L3NrYnVmZi5oCmluZGV4IDQzNTUxMjkuLjkxNDdmOWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv bGludXgvc2tidWZmLmgKKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzQ0Niw3ICsz NDQ2LDggQEAgc3RydWN0IHNrYl9nc29fY2IgewogCWludAllbmNhcF9sZXZlbDsKIAlfX3UxNglj c3VtX3N0YXJ0OwogfTsKLSNkZWZpbmUgU0tCX0dTT19DQihza2IpICgoc3RydWN0IHNrYl9nc29f Y2IgKikoc2tiKS0+Y2IpCisjZGVmaW5lIFNLQl9TR09fQ0JfT0ZGU0VUCTMyCisjZGVmaW5lIFNL Ql9HU09fQ0Ioc2tiKSAoKHN0cnVjdCBza2JfZ3NvX2NiICopKChza2IpLT5jYiArIFNLQl9TR09f Q0JfT0ZGU0VUKSkKIAogc3RhdGljIGlubGluZSBpbnQgc2tiX3RubF9oZWFkZXJfbGVuKGNvbnN0 IHN0cnVjdCBza19idWZmICppbm5lcl9za2IpCiB7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYu YyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IGFlMDBiODkuLjdmMDBmMjQgMTAwNjQ0Ci0tLSBhL25l dC9jb3JlL2Rldi5jCisrKyBiL25ldC9jb3JlL2Rldi5jCkBAIC0yNTQyLDYgKzI1NDIsOCBAQCBz dGF0aWMgaW5saW5lIGJvb2wgc2tiX25lZWRzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsIGJv b2wgdHhfcGF0aCkKICAqCiAgKglJdCBtYXkgcmV0dXJuIE5VTEwgaWYgdGhlIHNrYiByZXF1aXJl cyBubyBzZWdtZW50YXRpb24uICBUaGlzIGlzCiAgKglvbmx5IHBvc3NpYmxlIHdoZW4gR1NPIGlz IHVzZWQgZm9yIHZlcmlmeWluZyBoZWFkZXIgaW50ZWdyaXR5LgorICoKKyAqCVNlZ21lbnRhdGlv biBwcmVzZXJ2ZXMgU0tCX1NHT19DQl9PRkZTRVQgYnl0ZXMgb2YgcHJldmlvdXMgc2tiIGNiLgog ICovCiBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZ3NvX3NlZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNr YiwKIAkJCQkgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzLCBib29sIHR4X3BhdGgpCkBAIC0y NTU2LDYgKzI1NTgsOSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZ3NvX3NlZ21lbnQoc3RydWN0 IHNrX2J1ZmYgKnNrYiwKIAkJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCisJQlVJTERfQlVH X09OKFNLQl9TR09fQ0JfT0ZGU0VUICsKKwkJICAgICBzaXplb2YoKlNLQl9HU09fQ0Ioc2tiKSkg PiBzaXplb2Yoc2tiLT5jYikpOworCiAJU0tCX0dTT19DQihza2IpLT5tYWNfb2Zmc2V0ID0gc2ti X2hlYWRyb29tKHNrYik7CiAJU0tCX0dTT19DQihza2IpLT5lbmNhcF9sZXZlbCA9IDA7CiAKZGlm ZiAtLWdpdCBhL25ldC9pcHY0L2lwX291dHB1dC5jIGIvbmV0L2lwdjQvaXBfb3V0cHV0LmMKaW5k ZXggMzZhYzlmMy4uNDlmMDI4NSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMKKysr IGIvbmV0L2lwdjQvaXBfb3V0cHV0LmMKQEAgLTI0MCw2ICsyNDAsNyBAQCBzdGF0aWMgaW50IGlw X2ZpbmlzaF9vdXRwdXRfZ3NvKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLAogCSAq IGZyb20gaG9zdCBuZXR3b3JrIHN0YWNrLgogCSAqLwogCWZlYXR1cmVzID0gbmV0aWZfc2tiX2Zl YXR1cmVzKHNrYik7CisJQlVJTERfQlVHX09OKHNpemVvZigqSVBDQihza2IpKSA+IFNLQl9TR09f Q0JfT0ZGU0VUKTsKIAlzZWdzID0gc2tiX2dzb19zZWdtZW50KHNrYiwgZmVhdHVyZXMgJiB+TkVU SUZfRl9HU09fTUFTSyk7CiAJaWYgKElTX0VSUl9PUl9OVUxMKHNlZ3MpKSB7CiAJCWtmcmVlX3Nr Yihza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMgYi9uZXQvb3Bl bnZzd2l0Y2gvZGF0YXBhdGguYwppbmRleCA5MWE4YjAwLi5kZWFkZmRhIDEwMDY0NAotLS0gYS9u ZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGgu YwpAQCAtMzM2LDEyICszMzYsMTAgQEAgc3RhdGljIGludCBxdWV1ZV9nc29fcGFja2V0cyhzdHJ1 Y3QgZGF0YXBhdGggKmRwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXVuc2lnbmVkIHNob3J0IGdz b190eXBlID0gc2tiX3NoaW5mbyhza2IpLT5nc29fdHlwZTsKIAlzdHJ1Y3Qgc3dfZmxvd19rZXkg bGF0ZXJfa2V5OwogCXN0cnVjdCBza19idWZmICpzZWdzLCAqbnNrYjsKLQlzdHJ1Y3Qgb3ZzX3Nr Yl9jYiBvdnNfY2I7CiAJaW50IGVycjsKIAotCW92c19jYiA9ICpPVlNfQ0Ioc2tiKTsKKwlCVUlM RF9CVUdfT04oc2l6ZW9mKCpPVlNfQ0Ioc2tiKSkgPiBTS0JfU0dPX0NCX09GRlNFVCk7CiAJc2Vn cyA9IF9fc2tiX2dzb19zZWdtZW50KHNrYiwgTkVUSUZfRl9TRywgZmFsc2UpOwotCSpPVlNfQ0Io c2tiKSA9IG92c19jYjsKIAlpZiAoSVNfRVJSKHNlZ3MpKQogCQlyZXR1cm4gUFRSX0VSUihzZWdz KTsKIAlpZiAoc2VncyA9PSBOVUxMKQpAQCAtMzU5LDcgKzM1Nyw2IEBAIHN0YXRpYyBpbnQgcXVl dWVfZ3NvX3BhY2tldHMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwK IAkvKiBRdWV1ZSBhbGwgb2YgdGhlIHNlZ21lbnRzLiAqLwogCXNrYiA9IHNlZ3M7CiAJZG8gewot CQkqT1ZTX0NCKHNrYikgPSBvdnNfY2I7CiAJCWlmIChnc29fdHlwZSAmIFNLQl9HU09fVURQICYm IHNrYiAhPSBzZWdzKQogCQkJa2V5ID0gJmxhdGVyX2tleTsKIApkaWZmIC0tZ2l0IGEvbmV0L3hm cm0veGZybV9vdXRwdXQuYyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKaW5kZXggY2MzNjc2ZS4u ZmY0YTkxZiAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9vdXRwdXQuYworKysgYi9uZXQveGZy bS94ZnJtX291dHB1dC5jCkBAIC0xNjcsNiArMTY3LDggQEAgc3RhdGljIGludCB4ZnJtX291dHB1 dF9nc28oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpz a2IKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2VnczsKIAorCUJVSUxEX0JVR19PTihzaXplb2YoKklQ Q0Ioc2tiKSkgPiBTS0JfU0dPX0NCX09GRlNFVCk7CisJQlVJTERfQlVHX09OKHNpemVvZigqSVA2 Q0Ioc2tiKSkgPiBTS0JfU0dPX0NCX09GRlNFVCk7CiAJc2VncyA9IHNrYl9nc29fc2VnbWVudChz a2IsIDApOwogCWtmcmVlX3NrYihza2IpOwogCWlmIChJU19FUlIoc2VncykpCi0tIAoyLjEuMAoK CkZyb20gOWMwMmQ5ZGFhYmZhZDI2MDI4ZWUwOTI2NTk5N2E1M2MxYzYxOGVkYSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogS2FybCBIZWlzcyA8a2hlaXNzQGdtYWlsLmNvbT4KRGF0ZTog TW9uLCAxMSBKYW4gMjAxNiAwODoyODo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMjRdIGJv bmRpbmc6IFByZXZlbnQgSVB2NiBsaW5rIGxvY2FsIGFkZHJlc3Mgb24gZW5zbGF2ZWQKIGRldmlj ZXMKClsgVXBzdHJlYW0gY29tbWl0IDAzZDg0YTVmODNhNjdlNjkyYWYwMGEzZDM5MDFlNzgyMGUz ZTg0ZDUgXQoKQ29tbWl0IDFmNzE4ZjBmNGY5NyAoImJvbmRpbmc6IHBvcHVsYXRlIG5laWdoYm91 cidzIHByaXZhdGUgb24gZW5zbGF2ZSIpCnVuZG9lcyB0aGUgZml4IHByb3ZpZGVkIGJ5IGNvbW1p dCBjMmVkYWNmODBlMTUgKCJib25kaW5nIC8gaXB2Njogbm8gYWRkcmNvbmYKZm9yIHNsYXZlcyBz ZXBhcmF0ZWx5IGZyb20gbWFzdGVyIikgYnkgZWZmZWN0aXZlbHkgc2V0dGluZyB0aGUgc2xhdmUg ZmxhZwphZnRlciB0aGUgc2xhdmUgaGFzIGJlZW4gb3BlbmVkLiAgSWYgdGhlIHNsYXZlIGNvbWVz IHVwIHF1aWNrbHkgZW5vdWdoLCBpdAp3aWxsIGdvIHRocm91Z2ggdGhlIElQdjYgYWRkcmNvbmYg YmVmb3JlIHRoZSBzbGF2ZSBmbGFnIGhhcyBiZWVuIHNldCBhbmQKd2lsbCBnZXQgYSBsaW5rIGxv Y2FsIElQdjYgYWRkcmVzcy4KCkluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGFkZHJjb25mIGtub3dz IHRvIGlnbm9yZSB0aGUgc2xhdmUgZGV2aWNlcyBvbiBzdGF0ZQpjaGFuZ2UsIHNldCBJRkZfU0xB VkUgYmVmb3JlIGRldl9vcGVuKCkgZHVyaW5nIGJvbmRpbmcgZW5zbGF2ZW1lbnQuCgpGaXhlczog MWY3MThmMGY0Zjk3ICgiYm9uZGluZzogcG9wdWxhdGUgbmVpZ2hib3VyJ3MgcHJpdmF0ZSBvbiBl bnNsYXZlIikKU2lnbmVkLW9mZi1ieTogS2FybCBIZWlzcyA8a2hlaXNzQGdtYWlsLmNvbT4KU2ln bmVkLW9mZi1ieTogSmF5IFZvc2J1cmdoIDxqYXkudm9zYnVyZ2hAY2Fub25pY2FsLmNvbT4KUmV2 aWV3ZWQtYnk6IEphcm9kIFdpbHNvbiA8amFyb2RAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTog QW5keSBHb3Nwb2RhcmVrIDxnb3Nwb0BjdW11bHVzbmV0d29ya3MuY29tPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQv Ym9uZGluZy9ib25kX21haW4uYyB8IDUgKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2Jv bmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwppbmRleCA5ZTBmOGE3 Li5mMTY5MmU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCisr KyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKQEAgLTEyMDcsNyArMTIwNyw2IEBA IHN0YXRpYyBpbnQgYm9uZF9tYXN0ZXJfdXBwZXJfZGV2X2xpbmsoc3RydWN0IG5ldF9kZXZpY2Ug KmJvbmRfZGV2LAogCWVyciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2xpbmtfcHJpdmF0ZShz bGF2ZV9kZXYsIGJvbmRfZGV2LCBzbGF2ZSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKLQlz bGF2ZV9kZXYtPmZsYWdzIHw9IElGRl9TTEFWRTsKIAlydG1zZ19pZmluZm8oUlRNX05FV0xJTkss IHNsYXZlX2RldiwgSUZGX1NMQVZFLCBHRlBfS0VSTkVMKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE0 NjUsNiArMTQ2NCw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRf ZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KQogCQl9CiAJfQogCisJLyogc2V0IHNs YXZlIGZsYWcgYmVmb3JlIG9wZW4gdG8gcHJldmVudCBJUHY2IGFkZHJjb25mICovCisJc2xhdmVf ZGV2LT5mbGFncyB8PSBJRkZfU0xBVkU7CisKIAkvKiBvcGVuIHRoZSBzbGF2ZSBzaW5jZSB0aGUg YXBwbGljYXRpb24gY2xvc2VkIGl0ICovCiAJcmVzID0gZGV2X29wZW4oc2xhdmVfZGV2KTsKIAlp ZiAocmVzKSB7CkBAIC0xNzI1LDYgKzE3MjcsNyBAQCBlcnJfY2xvc2U6CiAJZGV2X2Nsb3NlKHNs YXZlX2Rldik7CiAKIGVycl9yZXN0b3JlX21hYzoKKwlzbGF2ZV9kZXYtPmZsYWdzICY9IH5JRkZf U0xBVkU7CiAJaWYgKCFib25kLT5wYXJhbXMuZmFpbF9vdmVyX21hYyB8fAogCSAgICBCT05EX01P REUoYm9uZCkgIT0gQk9ORF9NT0RFX0FDVElWRUJBQ0tVUCkgewogCQkvKiBYWFggVE9ETyAtIGZv bSBmb2xsb3cgbW9kZSBuZWVkcyB0byBjaGFuZ2UgbWFzdGVyJ3MKLS0gCjIuMS4wCgoKRnJvbSA0 MDNiZTQxN2JlMjEwNjBiNmFmMTQ2NWZhOTdmMjdhMGI0MDMwZTE1IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBMYXJzIFBlcnNzb24gPGxhcnMucGVyc3NvbkBheGlzLmNvbT4KRGF0ZTog VHVlLCAxMiBKYW4gMjAxNiAxNToyODoxMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMjRdIGR3 Y19ldGhfcW9zOiBGaXggZG1hIGFkZHJlc3MgZm9yIG11bHRpLWZyYWdtZW50IHNrYnMKClsgVXBz dHJlYW0gY29tbWl0IGQ0NjE4NzMyNzIxNjlhM2ZjM2E4ZDE1NWQ3YjFjOTJlOWQ5N2I0MTkgXQoK VGhlIG9mZnNldCBpbnNpZGUgdGhlIGZyYWdtZW50IHdhcyBub3QgdXNlZCBmb3IgdGhlIGRtYSBh ZGRyZXNzIGFuZApzaWxlbnQgZGF0YSBjb3JydXB0aW9uIHJlc3VsdGVkIGJlY2F1c2UgVFNPIG1h a2VzIHRoZSBjaGVja3N1bSBtYXRjaC4KCkZpeGVzOiAwNzc3NDJkYWMyYzcgKCJkd2NfZXRoX3Fv czogQWRkIHN1cHBvcnQgZm9yIFN5bm9wc3lzIERXQyBFdGhlcm5ldCBRb1MiKQpTaWduZWQtb2Zm LWJ5OiBMYXJzIFBlcnNzb24gPGxhcnBlckBheGlzLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0 L3N5bm9wc3lzL2R3Y19ldGhfcW9zLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9z eW5vcHN5cy9kd2NfZXRoX3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMvZHdj X2V0aF9xb3MuYwppbmRleCA5MDY2ZDdhLi5mOTZjNmIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9zeW5vcHN5cy9kd2NfZXRoX3Fvcy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3N5bm9wc3lzL2R3Y19ldGhfcW9zLmMKQEAgLTIxMDcsNyArMjEwNyw3IEBAIHN0YXRpYyBp bnQgZHdjZXFvc190eF9mcmFncyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2xvY2Fs ICpscCwKIAkJCWRkID0gJmxwLT50eF9kZXNjc1tscC0+dHhfbmV4dF07CiAKIAkJCS8qIFNldCBE TUEgRGVzY3JpcHRvciBmaWVsZHMgKi8KLQkJCWRkLT5kZXMwID0gZG1hX2hhbmRsZTsKKwkJCWRk LT5kZXMwID0gZG1hX2hhbmRsZSArIGNvbnN1bWVkX3NpemU7CiAJCQlkZC0+ZGVzMSA9IDA7CiAJ CQlkZC0+ZGVzMiA9IGRtYV9zaXplOwogCi0tIAoyLjEuMAoKCkZyb20gYjhhODE0Y2UwYjQ4YzI2 ZTE4NTUzZjViMGI3ZDA4ZjQwMjVmNTgyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog RXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBUdWUsIDEyIEphbiAyMDE2 IDA4OjU4OjAwIC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMi8yNF0gcGhvbmV0OiBwcm9wZXJseSB1 bnNoYXJlIHNrYnMgaW4gcGhvbmV0X3JjdigpCgpbIFVwc3RyZWFtIGNvbW1pdCA3YWFlZDU3YzVj Mjg5MDYzNGNmYWRmNzI1MTczYzdjNjhlYTRjYjRmIF0KCkl2YXlsbyBEaW1pdHJvdiByZXBvcnRl ZCBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IGNvbW1pdCA3ODY2YTYyMTA0M2YKKCJkZXY6IGFkZCBw ZXIgbmV0X2RldmljZSBwYWNrZXQgdHlwZSBjaGFpbnMiKS4KCnNrYi0+ZGV2IGJlY29tZXMgTlVM TCBhbmQgd2UgY3Jhc2ggaW4gX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKCkuCgpCZWZvcmUgYWJv dmUgY29tbWl0LCBkaWZmZXJlbnQga2luZCBvZiBidWdzIG9yIGNvcnJ1cHRpb25zIGNvdWxkIGhh cHBlbgp3aXRob3V0IG1ham9yIGNyYXNoLgoKQnV0IHRoZSByb290IGNhdXNlIGlzIHRoYXQgcGhv bmV0X3JjdigpIGNhbiBxdWV1ZSBza2Igd2l0aG91dCBjaGVja2luZwppZiBza2IgaXMgc2hhcmVk IG9yIG5vdC4KCk1hbnkgdGhhbmtzIHRvIEl2YXlsbyBEaW1pdHJvdiBmb3IgaGlzIGhlbHAsIGRp YWdub3NpcyBhbmQgdGVzdHMuCgpSZXBvcnRlZC1ieTogSXZheWxvIERpbWl0cm92IDxpdm8uZy5k aW1pdHJvdi43NUBnbWFpbC5jb20+ClRlc3RlZC1ieTogSXZheWxvIERpbWl0cm92IDxpdm8uZy5k aW1pdHJvdi43NUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KQ2M6IFJlbWkgRGVuaXMtQ291cm1vbnQgPGNvdXJtaXNjaEBnbWFpbC5j b20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4K LS0tCiBuZXQvcGhvbmV0L2FmX3Bob25ldC5jIHwgNCArKysrCiAxIGZpbGUgY2hhbmdlZCwgNCBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbmV0L3Bob25ldC9hZl9waG9uZXQuYyBiL25ldC9w aG9uZXQvYWZfcGhvbmV0LmMKaW5kZXggMTBkNDJmMy4uZjkyNTc1MyAxMDA2NDQKLS0tIGEvbmV0 L3Bob25ldC9hZl9waG9uZXQuYworKysgYi9uZXQvcGhvbmV0L2FmX3Bob25ldC5jCkBAIC0zNzcs NiArMzc3LDEwIEBAIHN0YXRpYyBpbnQgcGhvbmV0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBz dHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXN0cnVjdCBzb2NrYWRkcl9wbiBzYTsKIAl1MTYgbGVu OwogCisJc2tiID0gc2tiX3NoYXJlX2NoZWNrKHNrYiwgR0ZQX0FUT01JQyk7CisJaWYgKCFza2Ip CisJCXJldHVybiBORVRfUlhfRFJPUDsKKwogCS8qIGNoZWNrIHdlIGhhdmUgYXQgbGVhc3QgYSBm dWxsIFBob25ldCBoZWFkZXIgKi8KIAlpZiAoIXBza2JfcHVsbChza2IsIHNpemVvZihzdHJ1Y3Qg cGhvbmV0aGRyKSkpCiAJCWdvdG8gb3V0OwotLSAKMi4xLjAKCgpGcm9tIDcyZjdkMzA4ZTM5MTUy YTNhMzBhOGVhOWI0YWY1M2VkMGZkNDBmYmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KRGF0ZTogVHVlLCAxMiBKYW4gMjAxNiAyMDox NzowOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMjRdIG5ldDogYnBmOiByZWplY3QgaW52YWxp ZCBzaGlmdHMKClsgVXBzdHJlYW0gY29tbWl0IDIyOTM5NGU4ZTYyYTQxOTFkNTkyODQyY2Y2N2U4 MGM2MmE0OTI5MzcgXQoKT24gQVJNNjQsIGEgQlVHKCkgaXMgdHJpZ2dlcmVkIGluIHRoZSBlQlBG IEpJVCBpZiBhIGZpbHRlciB3aXRoIGEKY29uc3RhbnQgc2hpZnQgdGhhdCBjYW4ndCBiZSBlbmNv ZGVkIGluIHRoZSBpbW1lZGlhdGUgZmllbGQgb2YgdGhlClVCRk0vU0JGTSBpbnN0cnVjdGlvbnMg aXMgcGFzc2VkIHRvIHRoZSBKSVQuICBTaW5jZSB0aGVzZSBzaGlmdHMKYW1vdW50cywgd2hpY2gg YXJlIG5lZ2F0aXZlIG9yID49IHJlZ3NpemUsIGFyZSBpbnZhbGlkLCByZWplY3QgdGhlbSBpbgp0 aGUgZUJQRiB2ZXJpZmllciBhbmQgdGhlIGNsYXNzaWMgQlBGIGZpbHRlciBjaGVja2VyLCBmb3Ig YWxsCmFyY2hpdGVjdHVyZXMuCgpTaWduZWQtb2ZmLWJ5OiBSYWJpbiBWaW5jZW50IDxyYWJpbkBy YWIuaW4+CkFja2VkLWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3JnPgpBY2tl ZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGtlcm5lbC9icGYv dmVyaWZpZXIuYyB8IDEwICsrKysrKysrKysKIG5ldC9jb3JlL2ZpbHRlci5jICAgICB8ICA1ICsr KysrCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9rZXJu ZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggYTc5NDVkMS4u ZDFkM2U4ZiAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCisrKyBiL2tlcm5lbC9i cGYvdmVyaWZpZXIuYwpAQCAtMTEyMSw2ICsxMTIxLDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfYWx1 X29wKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKQogCQkJ cmV0dXJuIC1FSU5WQUw7CiAJCX0KIAorCQlpZiAoKG9wY29kZSA9PSBCUEZfTFNIIHx8IG9wY29k ZSA9PSBCUEZfUlNIIHx8CisJCSAgICAgb3Bjb2RlID09IEJQRl9BUlNIKSAmJiBCUEZfU1JDKGlu c24tPmNvZGUpID09IEJQRl9LKSB7CisJCQlpbnQgc2l6ZSA9IEJQRl9DTEFTUyhpbnNuLT5jb2Rl KSA9PSBCUEZfQUxVNjQgPyA2NCA6IDMyOworCisJCQlpZiAoaW5zbi0+aW1tIDwgMCB8fCBpbnNu LT5pbW0gPj0gc2l6ZSkgeworCQkJCXZlcmJvc2UoImludmFsaWQgc2hpZnQgJWRcbiIsIGluc24t PmltbSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJCX0KKwogCQkvKiBwYXR0ZXJuIG1h dGNoICdicGZfYWRkIFJ4LCBpbW0nIGluc3RydWN0aW9uICovCiAJCWlmIChvcGNvZGUgPT0gQlBG X0FERCAmJiBCUEZfQ0xBU1MoaW5zbi0+Y29kZSkgPT0gQlBGX0FMVTY0ICYmCiAJCSAgICByZWdz W2luc24tPmRzdF9yZWddLnR5cGUgPT0gRlJBTUVfUFRSICYmCmRpZmYgLS1naXQgYS9uZXQvY29y ZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jCmluZGV4IDY3MmVlZmIuLjM3MTU3YzQgMTAw NjQ0Ci0tLSBhL25ldC9jb3JlL2ZpbHRlci5jCisrKyBiL25ldC9jb3JlL2ZpbHRlci5jCkBAIC03 NzcsNiArNzc3LDExIEBAIHN0YXRpYyBpbnQgYnBmX2NoZWNrX2NsYXNzaWMoY29uc3Qgc3RydWN0 IHNvY2tfZmlsdGVyICpmaWx0ZXIsCiAJCQlpZiAoZnRlc3QtPmsgPT0gMCkKIAkJCQlyZXR1cm4g LUVJTlZBTDsKIAkJCWJyZWFrOworCQljYXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6CisJ CWNhc2UgQlBGX0FMVSB8IEJQRl9SU0ggfCBCUEZfSzoKKwkJCWlmIChmdGVzdC0+ayA+PSAzMikK KwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCWJyZWFrOwogCQljYXNlIEJQRl9MRCB8IEJQRl9NRU06 CiAJCWNhc2UgQlBGX0xEWCB8IEJQRl9NRU06CiAJCWNhc2UgQlBGX1NUOgotLSAKMi4xLjAKCgpG cm9tIDEzZjQ4YTVjOGYxZDkwMzM4MTIyNTA4MTQyNWVkMTE2MDM2MGRlNjQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0 ZTogRnJpLCAxNSBKYW4gMjAxNiAwNDo1Njo1NiAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTQvMjRd IGlwdjY6IHVwZGF0ZSBza2ItPmNzdW0gd2hlbiBDRSBtYXJrIGlzIHByb3BhZ2F0ZWQKClsgVXBz dHJlYW0gY29tbWl0IDM0YWU2YTFhYTA1NDBmMGY3ODFkZDI2NTM2NjAzNjM1NWZkYzg5MzAgXQoK V2hlbiBhIHR1bm5lbCBkZWNhcHN1bGF0ZXMgdGhlIG91dGVyIGhlYWRlciwgaXQgaGFzIHRvIGNv bXBseQp3aXRoIFJGQyA2MDgwIGFuZCBldmVudHVhbGx5IHByb3BhZ2F0ZSBDRSBtYXJrIGludG8g aW5uZXIgaGVhZGVyLgoKSXQgdHVybnMgb3V0IElQNl9FQ05fc2V0X2NlKCkgZG9lcyBub3QgY29y cmVjdGx5IHVwZGF0ZSBza2ItPmNzdW0KZm9yIENIRUNLU1VNX0NPTVBMRVRFIHBhY2tldHMsIHRy aWdnZXJpbmcgaW5mYW1vdXMgImh3IGNzdW0gZmFpbHVyZSIKbWVzc2FnZXMgYW5kIHN0YWNrIHRy YWNlcy4KClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4K QWNrZWQtYnk6IEhlcmJlcnQgWHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1 ZGUvbmV0L2luZXRfZWNuLmggICAgICAgfCAxOSArKysrKysrKysrKysrKysrLS0tCiBuZXQvaXB2 Ni94ZnJtNl9tb2RlX3R1bm5lbC5jIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0X2Vj bi5oIGIvaW5jbHVkZS9uZXQvaW5ldF9lY24uaAppbmRleCA4NGIyMDgzLi4wZGMwYTUxIDEwMDY0 NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oCisrKyBiL2luY2x1ZGUvbmV0L2luZXRfZWNu LmgKQEAgLTExMSwxMSArMTExLDI0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcHY0X2NvcHlfZHNj cCh1bnNpZ25lZCBpbnQgZHNjcCwgc3RydWN0IGlwaGRyICppbm5lcikKIAogc3RydWN0IGlwdjZo ZHI7CiAKLXN0YXRpYyBpbmxpbmUgaW50IElQNl9FQ05fc2V0X2NlKHN0cnVjdCBpcHY2aGRyICpp cGgpCisvKiBOb3RlOgorICogSVBfRUNOX3NldF9jZSgpIGhhcyB0byB0d2VhayBJUFY0IGNoZWNr c3VtIHdoZW4gc2V0dGluZyBDRSwKKyAqIG1lYW5pbmcgYm90aCBjaGFuZ2VzIGhhdmUgbm8gZWZm ZWN0IG9uIHNrYi0+Y3N1bSBpZi93aGVuIENIRUNLU1VNX0NPTVBMRVRFCisgKiBJbiBJUHY2IGNh c2UsIG5vIGNoZWNrc3VtIGNvbXBlbnNhdGVzIHRoZSBjaGFuZ2UgaW4gSVB2NiBoZWFkZXIsCisg KiBzbyB3ZSBoYXZlIHRvIHVwZGF0ZSBza2ItPmNzdW0uCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50 IElQNl9FQ05fc2V0X2NlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcHY2aGRyICppcGgp CiB7CisJX19iZTMyIGZyb20sIHRvOworCiAJaWYgKElORVRfRUNOX2lzX25vdF9lY3QoaXB2Nl9n ZXRfZHNmaWVsZChpcGgpKSkKIAkJcmV0dXJuIDA7Ci0JKihfX2JlMzIqKWlwaCB8PSBodG9ubChJ TkVUX0VDTl9DRSA8PCAyMCk7CisKKwlmcm9tID0gKihfX2JlMzIgKilpcGg7CisJdG8gPSBmcm9t IHwgaHRvbmwoSU5FVF9FQ05fQ0UgPDwgMjApOworCSooX19iZTMyICopaXBoID0gdG87CisJaWYg KHNrYi0+aXBfc3VtbWVkID09IENIRUNLU1VNX0NPTVBMRVRFKQorCQlza2ItPmNzdW0gPSBjc3Vt X2FkZChjc3VtX3N1Yihza2ItPmNzdW0sIGZyb20pLCB0byk7CiAJcmV0dXJuIDE7CiB9CiAKQEAg LTE0Miw3ICsxNTUsNyBAQCBzdGF0aWMgaW5saW5lIGludCBJTkVUX0VDTl9zZXRfY2Uoc3RydWN0 IHNrX2J1ZmYgKnNrYikKIAljYXNlIGNwdV90b19iZTE2KEVUSF9QX0lQVjYpOgogCQlpZiAoc2ti X25ldHdvcmtfaGVhZGVyKHNrYikgKyBzaXplb2Yoc3RydWN0IGlwdjZoZHIpIDw9CiAJCSAgICBz a2JfdGFpbF9wb2ludGVyKHNrYikpCi0JCQlyZXR1cm4gSVA2X0VDTl9zZXRfY2UoaXB2Nl9oZHIo c2tiKSk7CisJCQlyZXR1cm4gSVA2X0VDTl9zZXRfY2Uoc2tiLCBpcHY2X2hkcihza2IpKTsKIAkJ YnJlYWs7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5lbC5jIGIv bmV0L2lwdjYveGZybTZfbW9kZV90dW5uZWwuYwppbmRleCBmN2ZiZGJhLi4zNzI4NTVlIDEwMDY0 NAotLS0gYS9uZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5lbC5jCisrKyBiL25ldC9pcHY2L3hmcm02 X21vZGVfdHVubmVsLmMKQEAgLTIzLDcgKzIzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwaXA2 X2Vjbl9kZWNhcHN1bGF0ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcHY2aGRyICpp bm5lcl9pcGggPSBpcGlwdjZfaGRyKHNrYik7CiAKIAlpZiAoSU5FVF9FQ05faXNfY2UoWEZSTV9N T0RFX1NLQl9DQihza2IpLT50b3MpKQotCQlJUDZfRUNOX3NldF9jZShpbm5lcl9pcGgpOworCQlJ UDZfRUNOX3NldF9jZShza2IsIGlubmVyX2lwaCk7CiB9CiAKIC8qIEFkZCBlbmNhcHN1bGF0aW9u IGhlYWRlci4KLS0gCjIuMS4wCgoKRnJvbSBlOWQ1ODIyYWUyZDFjZTFjYTFmYjM4OGIwNmI2MTg5 OTFhNTJlODk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOaWtvbGF5IEFsZWtzYW5k cm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+CkRhdGU6IEZyaSwgMTUgSmFuIDIwMTYg MTk6MDM6NTQgKzAxMDAKU3ViamVjdDogW1BBVENIIDE1LzI0XSBicmlkZ2U6IGZpeCBsb2NrZGVw IGFkZHJfbGlzdF9sb2NrIGZhbHNlIHBvc2l0aXZlIHNwbGF0CgpbIFVwc3RyZWFtIGNvbW1pdCBj Njg5NGRlYzhlYTlhZTA1NzQ3MTI0ZGNlOThiM2I1YzJlNjliMTY4IF0KCkFmdGVyIHByb21pc2Mg bW9kZSBtYW5hZ2VtZW50IHdhcyBpbnRyb2R1Y2VkIGEgYnJpZGdlIGRldmljZSBjb3VsZCBkbwpk ZXZfc2V0X3Byb21pc2N1aXR5IGZyb20gaXRzIG5kb19jaGFuZ2VfcnhfZmxhZ3MoKSBjYWxsYmFj ayB3aGljaCBpbgp0dXJuIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGJyaWRnZSdzIGFkZHJfbGlz dF9sb2NrIGhhcyBiZWVuIHRha2VuCihlLmcuIGJ5IGRldl91Y19hZGQpLiBUaGlzIGNhdXNlcyBh IGZhbHNlIHBvc2l0aXZlIGxvY2tkZXAgc3BsYXQgYmVjYXVzZQp0aGUgcG9ydCBpbnRlcmZhY2Vz JyBhZGRyX2xpc3RfbG9jayBpcyB0YWtlbiB3aGVuIGJyX21hbmFnZV9wcm9taXNjKCkKcnVucyBh ZnRlciB0aGUgYnJpZGdlJ3MgYWRkciBsaXN0IGxvY2sgd2FzIGFscmVhZHkgdGFrZW4uClRvIHJl bW92ZSB0aGUgZmFsc2UgcG9zaXRpdmUgaW50cm9kdWNlIGEgY3VzdG9tIGJyaWRnZSBhZGRyX2xp c3RfbG9jawpjbGFzcyBhbmQgc2V0IGl0IG9uIGJyaWRnZSBpbml0LgpBIHNpbXBsZSB3YXkgdG8g cmVwcm9kdWNlIHRoaXMgaXMgd2l0aCB0aGUgZm9sbG93aW5nOgokIGJyY3RsIGFkZGJyIGJyMAok IGlwIGwgYWRkIGwgYnIwIGJyMC4xMDAgdHlwZSB2bGFuIGlkIDEwMAokIGlwIGwgc2V0IGJyMCB1 cAokIGlwIGwgc2V0IGJyMC4xMDAgdXAKJCBlY2hvIDEgPiAvc3lzL2NsYXNzL25ldC9icjAvYnJp ZGdlL3ZsYW5fZmlsdGVyaW5nCiQgYnJjdGwgYWRkaWYgYnIwIGV0aDAKU3BsYXQ6ClsgICA0My42 ODQzMjVdID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpbICAg NDMuNjg0NDg1XSBbIElORk86IHBvc3NpYmxlIHJlY3Vyc2l2ZSBsb2NraW5nIGRldGVjdGVkIF0K WyAgIDQzLjY4NDYzNl0gNC40LjAtcmM4KyAjNTQgTm90IHRhaW50ZWQKWyAgIDQzLjY4NDc1NV0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClsgICA0My42ODQ5 MDZdIGJyY3RsLzExODcgaXMgdHJ5aW5nIHRvIGFjcXVpcmUgbG9jazoKWyAgIDQzLjY4NTA0N10g IChfeG1pdF9FVEhFUil7Ky4uLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4MTUwMTY5ZT5dIGRldl9zZXRf cnhfbW9kZSsweDFlLzB4NDAKWyAgIDQzLjY4NTQ2MF0gIGJ1dCB0YXNrIGlzIGFscmVhZHkgaG9s ZGluZyBsb2NrOgpbICAgNDMuNjg1NjE4XSAgKF94bWl0X0VUSEVSKXsrLi4uLi59LCBhdDogWzxm ZmZmZmZmZjgxNTA3MmE3Pl0gZGV2X3VjX2FkZCsweDI3LzB4ODAKWyAgIDQzLjY4NjAxNV0gIG90 aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6ClsgICA0My42ODYzMTZdICBQ b3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKClsgICA0My42ODY3NDNdICAgICAgICBD UFUwClsgICA0My42ODY5NjddICAgICAgICAtLS0tClsgICA0My42ODcxOTddICAgbG9jayhfeG1p dF9FVEhFUik7ClsgICA0My42ODc1NDRdICAgbG9jayhfeG1pdF9FVEhFUik7ClsgICA0My42ODc4 ODZdICoqKiBERUFETE9DSyAqKioKClsgICA0My42ODg0MzhdICBNYXkgYmUgZHVlIHRvIG1pc3Np bmcgbG9jayBuZXN0aW5nIG5vdGF0aW9uCgpbICAgNDMuNjg4ODgyXSAyIGxvY2tzIGhlbGQgYnkg YnJjdGwvMTE4NzoKWyAgIDQzLjY4OTEzNF0gICMwOiAgKHJ0bmxfbXV0ZXgpeysuKy4rLn0sIGF0 OiBbPGZmZmZmZmZmODE1MTAzMTc+XSBydG5sX2xvY2srMHgxNy8weDIwClsgICA0My42ODk4NTJd ICAjMTogIChfeG1pdF9FVEhFUil7Ky4uLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4MTUwNzJhNz5dIGRl dl91Y19hZGQrMHgyNy8weDgwClsgICA0My42OTA1NzVdIHN0YWNrIGJhY2t0cmFjZToKWyAgIDQz LjY5MDk3MF0gQ1BVOiAwIFBJRDogMTE4NyBDb21tOiBicmN0bCBOb3QgdGFpbnRlZCA0LjQuMC1y YzgrICM1NApbICAgNDMuNjkxMjcwXSBIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChp NDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyAxLjguMS0yMDE1MDMxOF8xODMzNTgtIDA0LzAxLzIw MTQKWyAgIDQzLjY5MTc3MF0gIGZmZmZmZmZmODI2YTI1YzAgZmZmZjg4MDAzNjlmYjhlMCBmZmZm ZmZmZjgxMzYwY2ViIGZmZmZmZmZmODI2YTI1YzAKWyAgIDQzLjY5MjQyNV0gIGZmZmY4ODAwMzY5 ZmI5YjggZmZmZmZmZmY4MTBkMDQ2NiBmZmZmODgwMDM2OWZiOTY4IGZmZmZmZmZmODE1MzcxMzkK WyAgIDQzLjY5MzA3MV0gIGZmZmY4ODAwM2EwOGM4ODAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAw MGZmZmZmZmZmIDAwMDAwMDAwMDIwODAwMjAKWyAgIDQzLjY5MzcwOV0gQ2FsbCBUcmFjZToKWyAg IDQzLjY5MzkzMV0gIFs8ZmZmZmZmZmY4MTM2MGNlYj5dIGR1bXBfc3RhY2srMHg0Yi8weDcwClsg ICA0My42OTQxOTldICBbPGZmZmZmZmZmODEwZDA0NjY+XSBfX2xvY2tfYWNxdWlyZSsweDFlNDYv MHgxZTkwClsgICA0My42OTQ0ODNdICBbPGZmZmZmZmZmODE1MzcxMzk+XSA/IG5ldGxpbmtfYnJv YWRjYXN0X2ZpbHRlcmVkKzB4MTM5LzB4M2UwClsgICA0My42OTQ3ODldICBbPGZmZmZmZmZmODE1 M2I1ZGE+XSA/IG5sbXNnX25vdGlmeSsweDVhLzB4YzAKWyAgIDQzLjY5NTA2NF0gIFs8ZmZmZmZm ZmY4MTBkMTBmNT5dIGxvY2tfYWNxdWlyZSsweGU1LzB4MWYwClsgICA0My42OTUzNDBdICBbPGZm ZmZmZmZmODE1MDE2OWU+XSA/IGRldl9zZXRfcnhfbW9kZSsweDFlLzB4NDAKWyAgIDQzLjY5NTYy M10gIFs8ZmZmZmZmZmY4MTVlZGVhNT5dIF9yYXdfc3Bpbl9sb2NrX2JoKzB4NDUvMHg4MApbICAg NDMuNjk1OTAxXSAgWzxmZmZmZmZmZjgxNTAxNjllPl0gPyBkZXZfc2V0X3J4X21vZGUrMHgxZS8w eDQwClsgICA0My42OTYxODBdICBbPGZmZmZmZmZmODE1MDE2OWU+XSBkZXZfc2V0X3J4X21vZGUr MHgxZS8weDQwClsgICA0My42OTY0NjBdICBbPGZmZmZmZmZmODE1MDE4OWM+XSBkZXZfc2V0X3By b21pc2N1aXR5KzB4M2MvMHg1MApbICAgNDMuNjk2NzUwXSAgWzxmZmZmZmZmZmEwNTg2ODQ1Pl0g YnJfcG9ydF9zZXRfcHJvbWlzYysweDI1LzB4NTAgW2JyaWRnZV0KWyAgIDQzLjY5NzA1Ml0gIFs8 ZmZmZmZmZmZhMDU4NjlhYT5dIGJyX21hbmFnZV9wcm9taXNjKzB4OGEvMHhlMCBbYnJpZGdlXQpb ICAgNDMuNjk3MzQ4XSAgWzxmZmZmZmZmZmEwNTgyNmVlPl0gYnJfZGV2X2NoYW5nZV9yeF9mbGFn cysweDFlLzB4MjAgW2JyaWRnZV0KWyAgIDQzLjY5NzY1NV0gIFs8ZmZmZmZmZmY4MTUwMTUzMj5d IF9fZGV2X3NldF9wcm9taXNjdWl0eSsweDEzMi8weDFmMApbICAgNDMuNjk3OTQzXSAgWzxmZmZm ZmZmZjgxNTAxNjcyPl0gX19kZXZfc2V0X3J4X21vZGUrMHg4Mi8weDkwClsgICA0My42OTgyMjNd ICBbPGZmZmZmZmZmODE1MDcyZGU+XSBkZXZfdWNfYWRkKzB4NWUvMHg4MApbICAgNDMuNjk4NDk4 XSAgWzxmZmZmZmZmZmEwNWIzYzYyPl0gdmxhbl9kZXZpY2VfZXZlbnQrMHg1NDIvMHg2NTAgWzgw MjFxXQpbICAgNDMuNjk4Nzk4XSAgWzxmZmZmZmZmZjgxMDk4ODZkPl0gbm90aWZpZXJfY2FsbF9j aGFpbisweDVkLzB4ODAKWyAgIDQzLjY5OTA4M10gIFs8ZmZmZmZmZmY4MTA5ODhiNj5dIHJhd19u b3RpZmllcl9jYWxsX2NoYWluKzB4MTYvMHgyMApbICAgNDMuNjk5Mzc0XSAgWzxmZmZmZmZmZjgx NGY0NTZlPl0gY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzX2luZm8rMHg2ZS8weDgwClsgICA0My42 OTk2NzhdICBbPGZmZmZmZmZmODE0ZjQ1OTY+XSBjYWxsX25ldGRldmljZV9ub3RpZmllcnMrMHgx Ni8weDIwClsgICA0My42OTk5NzNdICBbPGZmZmZmZmZmYTA1ODcyYmU+XSBicl9hZGRfaWYrMHg0 N2UvMHg0YzAgW2JyaWRnZV0KWyAgIDQzLjcwMDI1OV0gIFs8ZmZmZmZmZmZhMDU4ODAxZT5dIGFk ZF9kZWxfaWYrMHg2ZS8weDgwIFticmlkZ2VdClsgICA0My43MDA1NDhdICBbPGZmZmZmZmZmYTA1 ODhiNWY+XSBicl9kZXZfaW9jdGwrMHhhZi8weGMwIFticmlkZ2VdClsgICA0My43MDA4MzZdICBb PGZmZmZmZmZmODE1MWE3YWM+XSBkZXZfaWZzaW9jKzB4MzBjLzB4M2MwClsgICA0My43MDExMDZd ICBbPGZmZmZmZmZmODE1MWFhYzk+XSBkZXZfaW9jdGwrMHhmOS8weDZmMApbICAgNDMuNzAxMzc5 XSAgWzxmZmZmZmZmZjgxMjU0MzQ1Pl0gPyBtbnRwdXRfbm9fZXhwaXJlKzB4NS8weDQ1MApbICAg NDMuNzAxNjY1XSAgWzxmZmZmZmZmZjgxMjU0M2VlPl0gPyBtbnRwdXRfbm9fZXhwaXJlKzB4YWUv MHg0NTAKWyAgIDQzLjcwMTk0N10gIFs8ZmZmZmZmZmY4MTRkN2IwMj5dIHNvY2tfZG9faW9jdGwr MHg0Mi8weDUwClsgICA0My43MDIyMTldICBbPGZmZmZmZmZmODE0ZDgxNzU+XSBzb2NrX2lvY3Rs KzB4MWU1LzB4MjkwClsgICA0My43MDI1MDBdICBbPGZmZmZmZmZmODEyNDJkMGI+XSBkb192ZnNf aW9jdGwrMHgyY2IvMHg1YzAKWyAgIDQzLjcwMjc3MV0gIFs8ZmZmZmZmZmY4MTI0MzA3OT5dIFN5 U19pb2N0bCsweDc5LzB4OTAKWyAgIDQzLjcwMzAzM10gIFs8ZmZmZmZmZmY4MTVlZWJiNj5dIGVu dHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgxNi8weDdhCgpDQzogVmxhZCBZYXNldmljaCA8dnlh c2V2aWNAcmVkaGF0LmNvbT4KQ0M6IFN0ZXBoZW4gSGVtbWluZ2VyIDxzdGVwaGVuQG5ldHdvcmtw bHVtYmVyLm9yZz4KQ0M6IEJyaWRnZSBsaXN0IDxicmlkZ2VAbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmc+CkNDOiBBbmR5IEdvc3BvZGFyZWsgPGdvc3BvQGN1bXVsdXNuZXR3b3Jrcy5jb20+CkND OiBSb29wYSBQcmFiaHUgPHJvb3BhQGN1bXVsdXNuZXR3b3Jrcy5jb20+CkZpeGVzOiAyNzk2ZDBj NjQ4YzkgKCJicmlkZ2U6IEF1dG9tYXRpY2FsbHkgbWFuYWdlIHBvcnQgcHJvbWlzY3VvdXMgbW9k ZS4iKQpSZXBvcnRlZC1ieTogQW5keSBHb3Nwb2RhcmVrIDxnb3Nwb0BjdW11bHVzbmV0d29ya3Mu Y29tPgpTaWduZWQtb2ZmLWJ5OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNu ZXR3b3Jrcy5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBuZXQvYnJpZGdlL2JyX2RldmljZS5jIHwgOCArKysrKysrKwogMSBmaWxl IGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfZGV2 aWNlLmMgYi9uZXQvYnJpZGdlL2JyX2RldmljZS5jCmluZGV4IDVlODhkM2UuLjJjODA5NWEgMTAw NjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfZGV2aWNlLmMKKysrIGIvbmV0L2JyaWRnZS9icl9kZXZp Y2UuYwpAQCAtMjgsNiArMjgsOCBAQAogY29uc3Qgc3RydWN0IG5mX2JyX29wcyBfX3JjdSAqbmZf YnJfb3BzIF9fcmVhZF9tb3N0bHk7CiBFWFBPUlRfU1lNQk9MX0dQTChuZl9icl9vcHMpOwogCitz dGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IGJyaWRnZV9uZXRkZXZfYWRkcl9sb2NrX2tleTsK KwogLyogbmV0IGRldmljZSB0cmFuc21pdCBhbHdheXMgY2FsbGVkIHdpdGggQkggZGlzYWJsZWQg Ki8KIG5ldGRldl90eF90IGJyX2Rldl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYpCiB7CkBAIC04Nyw2ICs4OSwxMSBAQCBvdXQ6CiAJcmV0dXJuIE5FVERF Vl9UWF9PSzsKIH0KIAorc3RhdGljIHZvaWQgYnJfc2V0X2xvY2tkZXBfY2xhc3Moc3RydWN0IG5l dF9kZXZpY2UgKmRldikKK3sKKwlsb2NrZGVwX3NldF9jbGFzcygmZGV2LT5hZGRyX2xpc3RfbG9j aywgJmJyaWRnZV9uZXRkZXZfYWRkcl9sb2NrX2tleSk7Cit9CisKIHN0YXRpYyBpbnQgYnJfZGV2 X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIg PSBuZXRkZXZfcHJpdihkZXYpOwpAQCAtOTksNiArMTA2LDcgQEAgc3RhdGljIGludCBicl9kZXZf aW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWVyciA9IGJyX3ZsYW5faW5pdChicik7CiAJ aWYgKGVycikKIAkJZnJlZV9wZXJjcHUoYnItPnN0YXRzKTsKKwlicl9zZXRfbG9ja2RlcF9jbGFz cyhkZXYpOwogCiAJcmV0dXJuIGVycjsKIH0KLS0gCjIuMS4wCgoKRnJvbSBiN2U0NDBmZTM0Yjc1 MGM1N2ZmMDVkNmUxNGUzY2EzOTQyZTBkMDBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBEb3JvbiBUc3VyIDxkb3JvbnRAbWVsbGFub3guY29tPgpEYXRlOiBTdW4sIDE3IEphbiAyMDE2 IDExOjI1OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNi8yNF0gbmV0L21seDVfY29yZTogRml4 IHRyaW1taW5nIGRvd24gSVJRIG51bWJlcgoKWyBVcHN0cmVhbSBjb21taXQgMGI2ZTI2Y2U4OTM5 MTMyN2Q5NTVhNzU2YTc4MjMyNzIyMzhlYjg2NyBdCgpXaXRoIHNldmVyYWwgQ29ubmVjdFgtNCBj YXJkcyBpbnN0YWxsZWQgb24gYSBzZXJ2ZXIsIG9uZSBtYXkgcmVjZWl2ZQppcnFuID4gMjU1IGZy b20gdGhlIGtlcm5lbCBBUEksIHdoaWNoIHdlIG1pc3Rha2VubHkgdHJpbSB0byA4Yml0LgoKVGhp cyBjYXVzZXMgRVEgY3JlYXRpb24gZmFpbHVyZSB3aXRoIHRoZSBmb2xsb3dpbmcgc3RhY2sgdHJh Y2U6Cls8ZmZmZmZmZmY4MTJhMTFmND5dIGR1bXBfc3RhY2srMHg0OC8weDY0Cls8ZmZmZmZmZmY4 MTBhY2UyMT5dIF9fc2V0dXBfaXJxKzB4M2ExLzB4NGYwCls8ZmZmZmZmZmY4MTBhZDdlMD5dIHJl cXVlc3RfdGhyZWFkZWRfaXJxKzB4MTIwLzB4MTgwCls8ZmZmZmZmZmZhMDkyMzY2MD5dID8gbWx4 NV9lcV9pbnQrMHg0NTAvMHg0NTAgW21seDVfY29yZV0KWzxmZmZmZmZmZmEwOTIyZjY0Pl0gbWx4 NV9jcmVhdGVfbWFwX2VxKzB4MWU0LzB4MmIwIFttbHg1X2NvcmVdCls8ZmZmZmZmZmZhMDkxZGUw MT5dIGFsbG9jX2NvbXBfZXFzKzB4YjEvMHgxODAgW21seDVfY29yZV0KWzxmZmZmZmZmZmEwOTFl YTk5Pl0gbWx4NV9kZXZfaW5pdCsweDVlOS8weDZlMCBbbWx4NV9jb3JlXQpbPGZmZmZmZmZmYTA5 MWVjMjk+XSBpbml0X29uZSsweDk5LzB4MWMwIFttbHg1X2NvcmVdCls8ZmZmZmZmZmY4MTJlMmFm Yz5dIGxvY2FsX3BjaV9wcm9iZSsweDRjLzB4YTAKCkZpeGluZyBpdCBieSBjaGFuZ2luZyBvZiB0 aGUgaXJxbiB0eXBlIGZyb20gdTggdG8gdW5zaWduZWQgaW50IHRvCnN1cHBvcnQgdmFsdWVzID4g MjU1CgpGaXhlczogNjFkMGU3M2UwYTVhICgnbmV0L21seDVfY29yZTogVXNlIHRoZSB0aGUgcmVh bCBpcnFuIGluIGVxLT5pcnFuJykKUmVwb3J0ZWQtYnk6IEppcmkgUGlya28gPGppcmlAbWVsbGFu b3guY29tPgpTaWduZWQtb2ZmLWJ5OiBEb3JvbiBUc3VyIDxkb3JvbnRAbWVsbGFub3guY29tPgpT aWduZWQtb2ZmLWJ5OiBNYXRhbiBCYXJhayA8bWF0YW5iQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMv aW5maW5pYmFuZC9ody9tbHg1L2NxLmMgICAgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jIHwgNiArKystLS0KIGRy aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMgICAgfCAzICsrLQog aW5jbHVkZS9saW51eC9tbHg1L2NxLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0K IGluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaCAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsr Ky0tCiA1IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYyBiL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9tbHg1L2NxLmMKaW5kZXggM2RmZDI4Ny4uOTJkZGFlMSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQv aHcvbWx4NS9jcS5jCkBAIC03NTYsNyArNzU2LDcgQEAgc3RydWN0IGliX2NxICptbHg1X2liX2Ny ZWF0ZV9jcShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwKIAlpbnQgdW5pbml0aWFsaXplZF92YXIo aW5kZXgpOwogCWludCB1bmluaXRpYWxpemVkX3Zhcihpbmxlbik7CiAJaW50IGNxZV9zaXplOwot CWludCBpcnFuOworCXVuc2lnbmVkIGludCBpcnFuOwogCWludCBlcW47CiAJaW50IGVycjsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21h aW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMK aW5kZXggMWU1MmRiMy4uMTIwM2Q4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9t ZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCkBAIC03NDYsNyArNzQ2LDcgQEAgc3RhdGljIGlu dCBtbHg1ZV9jcmVhdGVfY3Eoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMsCiAJc3RydWN0IG1seDVf Y29yZV9kZXYgKm1kZXYgPSBwcml2LT5tZGV2OwogCXN0cnVjdCBtbHg1X2NvcmVfY3EgKm1jcSA9 ICZjcS0+bWNxOwogCWludCBlcW5fbm90X3VzZWQ7Ci0JaW50IGlycW47CisJdW5zaWduZWQgaW50 IGlycW47CiAJaW50IGVycjsKIAl1MzIgaTsKIApAQCAtODAwLDcgKzgwMCw3IEBAIHN0YXRpYyBp bnQgbWx4NWVfZW5hYmxlX2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3EsIHN0cnVjdCBtbHg1ZV9jcV9w YXJhbSAqcGFyYW0pCiAJdm9pZCAqaW47CiAJdm9pZCAqY3FjOwogCWludCBpbmxlbjsKLQlpbnQg aXJxbl9ub3RfdXNlZDsKKwl1bnNpZ25lZCBpbnQgaXJxbl9ub3RfdXNlZDsKIAlpbnQgZXFuOwog CWludCBlcnI7CiAKQEAgLTE1MDQsNyArMTUwNCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfY3JlYXRl X2Ryb3BfY3Eoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsCiAJc3RydWN0IG1seDVfY29yZV9kZXYg Km1kZXYgPSBwcml2LT5tZGV2OwogCXN0cnVjdCBtbHg1X2NvcmVfY3EgKm1jcSA9ICZjcS0+bWNx OwogCWludCBlcW5fbm90X3VzZWQ7Ci0JaW50IGlycW47CisJdW5zaWduZWQgaW50IGlycW47CiAJ aW50IGVycjsKIAogCWVyciA9IG1seDVfY3F3cV9jcmVhdGUobWRldiwgJnBhcmFtLT53cSwgcGFy YW0tPmNxYywgJmNxLT53cSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1 L2NvcmUvbWFpbi5jCmluZGV4IDRhYzhkNGNjLi42Y2Y2ZDkzIDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMKQEAgLTU2OCw3ICs1NjgsOCBAQCBz dGF0aWMgdm9pZCBtbHg1X2lycV9jbGVhcl9hZmZpbml0eV9oaW50cyhzdHJ1Y3QgbWx4NV9jb3Jl X2RldiAqbWRldikKIAkJbWx4NV9pcnFfY2xlYXJfYWZmaW5pdHlfaGludChtZGV2LCBpKTsKIH0K IAotaW50IG1seDVfdmVjdG9yMmVxbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBpbnQgdmVj dG9yLCBpbnQgKmVxbiwgaW50ICppcnFuKQoraW50IG1seDVfdmVjdG9yMmVxbihzdHJ1Y3QgbWx4 NV9jb3JlX2RldiAqZGV2LCBpbnQgdmVjdG9yLCBpbnQgKmVxbiwKKwkJICAgIHVuc2lnbmVkIGlu dCAqaXJxbikKIHsKIAlzdHJ1Y3QgbWx4NV9lcV90YWJsZSAqdGFibGUgPSAmZGV2LT5wcml2LmVx X3RhYmxlOwogCXN0cnVjdCBtbHg1X2VxICplcSwgKm47CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L21seDUvY3EuaCBiL2luY2x1ZGUvbGludXgvbWx4NS9jcS5oCmluZGV4IGFiYzQ3NjcuLmIy YzlmYWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbWx4NS9jcS5oCisrKyBiL2luY2x1ZGUv bGludXgvbWx4NS9jcS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBtbHg1X2NvcmVfY3Egewog CWF0b21pY190CQlyZWZjb3VudDsKIAlzdHJ1Y3QgY29tcGxldGlvbglmcmVlOwogCXVuc2lnbmVk CQl2ZWN0b3I7Ci0JaW50CQkJaXJxbjsKKwl1bnNpZ25lZCBpbnQJCWlycW47CiAJdm9pZCAoKmNv bXApCQkoc3RydWN0IG1seDVfY29yZV9jcSAqKTsKIAl2b2lkICgqZXZlbnQpCQkoc3RydWN0IG1s eDVfY29yZV9jcSAqLCBlbnVtIG1seDVfZXZlbnQpOwogCXN0cnVjdCBtbHg1X3VhcgkgICAgICAg KnVhcjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaCBiL2luY2x1ZGUv bGludXgvbWx4NS9kcml2ZXIuaAppbmRleCA1Yzg1N2YyLi5hZjNlZmQ5IDEwMDY0NAotLS0gYS9p bmNsdWRlL2xpbnV4L21seDUvZHJpdmVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZl ci5oCkBAIC0zMDMsNyArMzAzLDcgQEAgc3RydWN0IG1seDVfZXEgewogCXUzMgkJCWNvbnNfaW5k ZXg7CiAJc3RydWN0IG1seDVfYnVmCQlidWY7CiAJaW50CQkJc2l6ZTsKLQl1OAkJCWlycW47CisJ dW5zaWduZWQgaW50CQlpcnFuOwogCXU4CQkJZXFuOwogCWludAkJCW5lbnQ7CiAJdTY0CQkJbWFz azsKQEAgLTc2Miw3ICs3NjIsOCBAQCBpbnQgbWx4NV9jcmVhdGVfbWFwX2VxKHN0cnVjdCBtbHg1 X2NvcmVfZGV2ICpkZXYsIHN0cnVjdCBtbHg1X2VxICplcSwgdTggdmVjaWR4LAogaW50IG1seDVf ZGVzdHJveV91bm1hcF9lcShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCBzdHJ1Y3QgbWx4NV9l cSAqZXEpOwogaW50IG1seDVfc3RhcnRfZXFzKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpOwog aW50IG1seDVfc3RvcF9lcXMoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7Ci1pbnQgbWx4NV92 ZWN0b3IyZXFuKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCB2ZWN0b3IsIGludCAqZXFu LCBpbnQgKmlycW4pOworaW50IG1seDVfdmVjdG9yMmVxbihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAq ZGV2LCBpbnQgdmVjdG9yLCBpbnQgKmVxbiwKKwkJICAgIHVuc2lnbmVkIGludCAqaXJxbik7CiBp bnQgbWx4NV9jb3JlX2F0dGFjaF9tY2coc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdW5pb24g aWJfZ2lkICptZ2lkLCB1MzIgcXBuKTsKIGludCBtbHg1X2NvcmVfZGV0YWNoX21jZyhzdHJ1Y3Qg bWx4NV9jb3JlX2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsIHUzMiBxcG4pOwogCi0tIAoy LjEuMAoKCkZyb20gYzNlMGQzM2I4OTM0YjVlYjg4MDlkOWYyOWJmOGNhNDM5ZTgwZDBlZSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSWRvIFNjaGltbWVsIDxpZG9zY2hAbWVsbGFub3gu Y29tPgpEYXRlOiBNb24sIDE4IEphbiAyMDE2IDE3OjMwOjIyICswMjAwClN1YmplY3Q6IFtQQVRD SCAxNy8yNF0gdGVhbTogUmVwbGFjZSByY3VfcmVhZF9sb2NrIHdpdGggYSBtdXRleCBpbgogdGVh bV92bGFuX3J4X2tpbGxfdmlkCgpbIFVwc3RyZWFtIGNvbW1pdCA2MGE2NTMxYmZlNDk1NTU1ODFj Y2Q2NWY2NmEzNTBjYzU2OTNmY2RlIF0KCldlIGNhbid0IGJlIHdpdGhpbiBhbiBSQ1UgcmVhZC1z aWRlIGNyaXRpY2FsIHNlY3Rpb24gd2hlbiBkZWxldGluZwpWTEFOcywgYXMgdW5kZXJseWluZyBk cml2ZXJzIG1pZ2h0IHNsZWVwIGR1cmluZyB0aGUgaGFyZHdhcmUgb3BlcmF0aW9uLgpUaGVyZWZv cmUsIHJlcGxhY2UgdGhlIFJDVSBjcml0aWNhbCBzZWN0aW9uIHdpdGggYSBtdXRleC4gVGhpcyBp cwpjb25zaXN0ZW50IHdpdGggdGVhbV92bGFuX3J4X2FkZF92aWQuCgpGaXhlczogM2QyNDlkNGNh N2QwICgibmV0OiBpbnRyb2R1Y2UgZXRoZXJuZXQgdGVhbWluZyBkZXZpY2UiKQpBY2tlZC1ieTog SmlyaSBQaXJrbyA8amlyaUBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IElkbyBTY2hpbW1l bCA8aWRvc2NoQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxk YXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0L3RlYW0vdGVhbS5jIHwgNiArKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVhbS90ZWFtLmMgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW0u YwppbmRleCA2NTFkMzVlLi41OWZlZmNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWFtL3Rl YW0uYworKysgYi9kcml2ZXJzL25ldC90ZWFtL3RlYW0uYwpAQCAtMTg0NSwxMCArMTg0NSwxMCBA QCBzdGF0aWMgaW50IHRlYW1fdmxhbl9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LCBfX2JlMTYgcHJvdG8sIHUxNiB2aWQpCiAJc3RydWN0IHRlYW0gKnRlYW0gPSBuZXRkZXZfcHJp dihkZXYpOwogCXN0cnVjdCB0ZWFtX3BvcnQgKnBvcnQ7CiAKLQlyY3VfcmVhZF9sb2NrKCk7Ci0J bGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocG9ydCwgJnRlYW0tPnBvcnRfbGlzdCwgbGlzdCkKKwlt dXRleF9sb2NrKCZ0ZWFtLT5sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZ0ZWFt LT5wb3J0X2xpc3QsIGxpc3QpCiAJCXZsYW5fdmlkX2RlbChwb3J0LT5kZXYsIHByb3RvLCB2aWQp OwotCXJjdV9yZWFkX3VubG9jaygpOworCW11dGV4X3VubG9jaygmdGVhbS0+bG9jayk7CiAKIAly ZXR1cm4gMDsKIH0KLS0gCjIuMS4wCgoKRnJvbSBiN2NmZTNlNjg5ZTA0NDYwOTdhNDgzMjg0ZThk NDBkYTc5ZjMyNDU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdmVuIEVja2VsbWFu biA8c3ZlbkBuYXJmYXRpb24ub3JnPgpEYXRlOiBUaHUsIDE0IEphbiAyMDE2IDE1OjI4OjE5ICsw MTAwClN1YmplY3Q6IFtQQVRDSCAxOC8yNF0gYmF0bWFuLWFkdjogQXZvaWQgcmVjdXJzaXZlIGNh bGxfcmN1IGZvcgogYmF0YWR2X2JsYV9jbGFpbQoKWyBVcHN0cmVhbSBjb21taXQgNjNiMzk5Mjcy Mjk0ZTdhOTM5Y2RlNDE3OTJkY2EzOGM1NDlmMDQ4NCBdCgpUaGUgYmF0YWR2X2NsYWltX2ZyZWVf cmVmIGZ1bmN0aW9uIHVzZXMgY2FsbF9yY3UgdG8gZGVsYXkgdGhlIGZyZWUgb2YgdGhlCmJhdGFk dl9ibGFfY2xhaW0gb2JqZWN0IHVudGlsIG5vIChhbHJlYWR5IHN0YXJ0ZWQpIHJjdV9yZWFkX2xv Y2sgaXMgZW5hYmxlZAphbnltb3JlLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCBubyBjb250ZXh0IGlz IHN0aWxsIHRyeWluZyB0byBhY2Nlc3MgdGhlCm9iamVjdCB3aGljaCBzaG91bGQgYmUgcmVtb3Zl ZC4gQnV0IGJhdGFkdl9ibGFfY2xhaW0gYWxzbyBjb250YWlucyBhCnJlZmVyZW5jZSB0byBiYWNr Ym9uZV9ndyB3aGljaCBtdXN0IGJlIHJlbW92ZWQuCgpUaGUgcmVmZXJlbmNlIGRyb3Agb2YgYmFj a2JvbmVfZ3cgd2FzIGRvbmUgaW4gdGhlIGNhbGxfcmN1IGZ1bmN0aW9uCmJhdGFkdl9jbGFpbV9m cmVlX3JjdSBidXQgc2hvdWxkIGFjdHVhbGx5IGJlIGRvbmUgaW4gdGhlCmJhdGFkdl9jbGFpbV9y ZWxlYXNlIGZ1bmN0aW9uIHRvIGF2b2lkIG5lc3RlZCBjYWxsX3JjdXMuIFRoaXMgaXMgaW1wb3J0 YW50CmJlY2F1c2UgcmN1X2JhcnJpZXIgKGUuZy4gYmF0YWR2X3NvZnRpZl9mcmVlIG9yIGJhdGFk dl9leGl0KSB3aWxsIG5vdApkZXRlY3QgdGhlIGlubmVyIGNhbGxfcmN1IGFzIHJlbGV2YW50IGZv ciBpdHMgZXhlY3V0aW9uLiBPdGhlcndpc2UgdGhpcwpiYXJyaWVyIHdpbGwgbW9zdCBsaWtlbHkg YmUgaW5zZXJ0ZWQgaW4gdGhlIHF1ZXVlIGJlZm9yZSB0aGUgY2FsbGJhY2sgb2YKdGhlIGZpcnN0 IGNhbGxfcmN1IHdhcyBleGVjdXRlZC4gVGhlIGNhbGxlciBvZiByY3VfYmFycmllciB3aWxsIHRo ZXJlZm9yZQpjb250aW51ZSB0byBydW4gYmVmb3JlIHRoZSBpbm5lciBjYWxsX3JjdSBjYWxsYmFj ayBmaW5pc2hlZC4KCkZpeGVzOiAyMzcyMTM4N2M0MDkgKCJiYXRtYW4tYWR2OiBhZGQgYmFzaWMg YnJpZGdlIGxvb3AgYXZvaWRhbmNlIGNvZGUiKQpTaWduZWQtb2ZmLWJ5OiBTdmVuIEVja2VsbWFu biA8c3ZlbkBuYXJmYXRpb24ub3JnPgpBY2tlZC1ieTogU2ltb24gV3VuZGVybGljaCA8c3dAc2lt b253dW5kZXJsaWNoLmRlPgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBMaW5kbmVyIDxtYXJla2xpbmRu ZXJAbmVvbWFpbGJveC5jaD4KU2lnbmVkLW9mZi1ieTogQW50b25pbyBRdWFydHVsbGkgPGFAdW5z dGFibGUuY2M+Ci0tLQogbmV0L2JhdG1hbi1hZHYvYnJpZGdlX2xvb3BfYXZvaWRhbmNlLmMgfCAx MCArKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L2JyaWRnZV9sb29wX2F2b2lkYW5jZS5j IGIvbmV0L2JhdG1hbi1hZHYvYnJpZGdlX2xvb3BfYXZvaWRhbmNlLmMKaW5kZXggMTkxYTcwMi4u ZjVkMmZlNSAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvYnJpZGdlX2xvb3BfYXZvaWRhbmNl LmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvYnJpZGdlX2xvb3BfYXZvaWRhbmNlLmMKQEAgLTEyNywy MSArMTI3LDE3IEBAIGJhdGFkdl9iYWNrYm9uZV9nd19mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X2Js YV9iYWNrYm9uZV9ndyAqYmFja2JvbmVfZ3cpCiB9CiAKIC8qIGZpbmFsbHkgZGVpbml0aWFsaXpl IHRoZSBjbGFpbSAqLwotc3RhdGljIHZvaWQgYmF0YWR2X2NsYWltX2ZyZWVfcmN1KHN0cnVjdCBy Y3VfaGVhZCAqcmN1KQorc3RhdGljIHZvaWQgYmF0YWR2X2NsYWltX3JlbGVhc2Uoc3RydWN0IGJh dGFkdl9ibGFfY2xhaW0gKmNsYWltKQogewotCXN0cnVjdCBiYXRhZHZfYmxhX2NsYWltICpjbGFp bTsKLQotCWNsYWltID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IGJhdGFkdl9ibGFfY2xhaW0s IHJjdSk7Ci0KIAliYXRhZHZfYmFja2JvbmVfZ3dfZnJlZV9yZWYoY2xhaW0tPmJhY2tib25lX2d3 KTsKLQlrZnJlZShjbGFpbSk7CisJa2ZyZWVfcmN1KGNsYWltLCByY3UpOwogfQogCiAvKiBmcmVl IGEgY2xhaW0sIGNhbGwgY2xhaW1fZnJlZV9yY3UgaWYgaXRzIHRoZSBsYXN0IHJlZmVyZW5jZSAq Lwogc3RhdGljIHZvaWQgYmF0YWR2X2NsYWltX2ZyZWVfcmVmKHN0cnVjdCBiYXRhZHZfYmxhX2Ns YWltICpjbGFpbSkKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmY2xhaW0tPnJlZmNvdW50 KSkKLQkJY2FsbF9yY3UoJmNsYWltLT5yY3UsIGJhdGFkdl9jbGFpbV9mcmVlX3JjdSk7CisJCWJh dGFkdl9jbGFpbV9yZWxlYXNlKGNsYWltKTsKIH0KIAogLyoqCi0tIAoyLjEuMAoKCkZyb20gNjkw M2Q0NjAzNDRiMmY5ZjEyYmYwN2Y2MjMzNDlhMjY1OGEzYjRjOCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KRGF0ZTogVHVl LCA1IEphbiAyMDE2IDEyOjA2OjE5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxOS8yNF0gYmF0bWFu LWFkdjogQXZvaWQgcmVjdXJzaXZlIGNhbGxfcmN1IGZvciBiYXRhZHZfbmNfbm9kZQoKWyBVcHN0 cmVhbSBjb21taXQgNDRlOGU3ZTkxZDZjN2M3YWIxOTY4ODc1MGY3MjU3MjkyNjQwZDFhMCBdCgpU aGUgYmF0YWR2X25jX25vZGVfZnJlZV9yZWYgZnVuY3Rpb24gdXNlcyBjYWxsX3JjdSB0byBkZWxh eSB0aGUgZnJlZSBvZiB0aGUKYmF0YWR2X25jX25vZGUgb2JqZWN0IHVudGlsIG5vIChhbHJlYWR5 IHN0YXJ0ZWQpIHJjdV9yZWFkX2xvY2sgaXMgZW5hYmxlZAphbnltb3JlLiBUaGlzIG1ha2VzIHN1 cmUgdGhhdCBubyBjb250ZXh0IGlzIHN0aWxsIHRyeWluZyB0byBhY2Nlc3MgdGhlCm9iamVjdCB3 aGljaCBzaG91bGQgYmUgcmVtb3ZlZC4gQnV0IGJhdGFkdl9uY19ub2RlIGFsc28gY29udGFpbnMg YQpyZWZlcmVuY2UgdG8gb3JpZ19ub2RlIHdoaWNoIG11c3QgYmUgcmVtb3ZlZC4KClRoZSByZWZl cmVuY2UgZHJvcCBvZiBvcmlnX25vZGUgd2FzIGRvbmUgaW4gdGhlIGNhbGxfcmN1IGZ1bmN0aW9u CmJhdGFkdl9uY19ub2RlX2ZyZWVfcmN1IGJ1dCBzaG91bGQgYWN0dWFsbHkgYmUgZG9uZSBpbiB0 aGUKYmF0YWR2X25jX25vZGVfcmVsZWFzZSBmdW5jdGlvbiB0byBhdm9pZCBuZXN0ZWQgY2FsbF9y Y3VzLiBUaGlzIGlzCmltcG9ydGFudCBiZWNhdXNlIHJjdV9iYXJyaWVyIChlLmcuIGJhdGFkdl9z b2Z0aWZfZnJlZSBvciBiYXRhZHZfZXhpdCkgd2lsbApub3QgZGV0ZWN0IHRoZSBpbm5lciBjYWxs X3JjdSBhcyByZWxldmFudCBmb3IgaXRzIGV4ZWN1dGlvbi4gT3RoZXJ3aXNlIHRoaXMKYmFycmll ciB3aWxsIG1vc3QgbGlrZWx5IGJlIGluc2VydGVkIGluIHRoZSBxdWV1ZSBiZWZvcmUgdGhlIGNh bGxiYWNrIG9mCnRoZSBmaXJzdCBjYWxsX3JjdSB3YXMgZXhlY3V0ZWQuIFRoZSBjYWxsZXIgb2Yg cmN1X2JhcnJpZXIgd2lsbCB0aGVyZWZvcmUKY29udGludWUgdG8gcnVuIGJlZm9yZSB0aGUgaW5u ZXIgY2FsbF9yY3UgY2FsbGJhY2sgZmluaXNoZWQuCgpGaXhlczogZDU2YjE3MDVlMjhjICgiYmF0 bWFuLWFkdjogbmV0d29yayBjb2RpbmcgLSBkZXRlY3QgY29kaW5nIG5vZGVzIGFuZCByZW1vdmUg dGhlc2UgYWZ0ZXIgdGltZW91dCIpClNpZ25lZC1vZmYtYnk6IFN2ZW4gRWNrZWxtYW5uIDxzdmVu QG5hcmZhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5l ckBuZW9tYWlsYm94LmNoPgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIFF1YXJ0dWxsaSA8YUB1bnN0 YWJsZS5jYz4KLS0tCiBuZXQvYmF0bWFuLWFkdi9uZXR3b3JrLWNvZGluZy5jIHwgMTkgKysrKysr KystLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvbmV0d29yay1jb2RpbmcuYyBiL25l dC9iYXRtYW4tYWR2L25ldHdvcmstY29kaW5nLmMKaW5kZXggZjUyNzZiZS4uZDA5NTZmNyAxMDA2 NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvbmV0d29yay1jb2RpbmcuYworKysgYi9uZXQvYmF0bWFu LWFkdi9uZXR3b3JrLWNvZGluZy5jCkBAIC0yMDMsMjggKzIwMywyNSBAQCB2b2lkIGJhdGFkdl9u Y19pbml0X29yaWcoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSkKIH0KIAogLyoq Ci0gKiBiYXRhZHZfbmNfbm9kZV9mcmVlX3JjdSAtIHJjdSBjYWxsYmFjayB0byBmcmVlIGFuIG5j IG5vZGUgYW5kIHJlbW92ZQotICogIGl0cyByZWZjb3VudCBvbiB0aGUgb3JpZ19ub2RlCi0gKiBA cmN1OiByY3UgcG9pbnRlciBvZiB0aGUgbmMgbm9kZQorICogYmF0YWR2X25jX25vZGVfcmVsZWFz ZSAtIHJlbGVhc2UgbmNfbm9kZSBmcm9tIGxpc3RzIGFuZCBxdWV1ZSBmb3IgZnJlZSBhZnRlcgor ICogIHJjdSBncmFjZSBwZXJpb2QKKyAqIEBuY19ub2RlOiB0aGUgbmMgbm9kZSB0byBmcmVlCiAg Ki8KLXN0YXRpYyB2b2lkIGJhdGFkdl9uY19ub2RlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAq cmN1KQorc3RhdGljIHZvaWQgYmF0YWR2X25jX25vZGVfcmVsZWFzZShzdHJ1Y3QgYmF0YWR2X25j X25vZGUgKm5jX25vZGUpCiB7Ci0Jc3RydWN0IGJhdGFkdl9uY19ub2RlICpuY19ub2RlOwotCi0J bmNfbm9kZSA9IGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBiYXRhZHZfbmNfbm9kZSwgcmN1KTsK IAliYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmVmKG5jX25vZGUtPm9yaWdfbm9kZSk7Ci0Ja2ZyZWUo bmNfbm9kZSk7CisJa2ZyZWVfcmN1KG5jX25vZGUsIHJjdSk7CiB9CiAKIC8qKgotICogYmF0YWR2 X25jX25vZGVfZnJlZV9yZWYgLSBkZWNyZW1lbnRzIHRoZSBuYyBub2RlIHJlZmNvdW50ZXIgYW5k IHBvc3NpYmx5Ci0gKiBmcmVlcyBpdAorICogYmF0YWR2X25jX25vZGVfZnJlZV9yZWYgLSBkZWNy ZW1lbnQgdGhlIG5jIG5vZGUgcmVmY291bnRlciBhbmQgcG9zc2libHkKKyAqICByZWxlYXNlIGl0 CiAgKiBAbmNfbm9kZTogdGhlIG5jIG5vZGUgdG8gZnJlZQogICovCiBzdGF0aWMgdm9pZCBiYXRh ZHZfbmNfbm9kZV9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X25jX25vZGUgKm5jX25vZGUpCiB7CiAJ aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm5jX25vZGUtPnJlZmNvdW50KSkKLQkJY2FsbF9yY3Uo Jm5jX25vZGUtPnJjdSwgYmF0YWR2X25jX25vZGVfZnJlZV9yY3UpOworCQliYXRhZHZfbmNfbm9k ZV9yZWxlYXNlKG5jX25vZGUpOwogfQogCiAvKioKLS0gCjIuMS4wCgoKRnJvbSA5YjQ5YTFiMWEz OGQzZmY0MjUxMWRmYzJkZWVmNTA1MzljYzE3MzBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBTdmVuIEVja2VsbWFubiA8c3ZlbkBuYXJmYXRpb24ub3JnPgpEYXRlOiBUdWUsIDUgSmFu IDIwMTYgMTI6MDY6MjEgKzAxMDAKU3ViamVjdDogW1BBVENIIDIwLzI0XSBiYXRtYW4tYWR2OiBE cm9wIGltbWVkaWF0ZSBiYXRhZHZfb3JpZ19pZmluZm8gZnJlZQogZnVuY3Rpb24KClsgVXBzdHJl YW0gY29tbWl0IGRlZWQ5NjYwNWY1Njk1Y2I5NDVlMGIzZDc5NDI5NTgxODU3YTJiOWQgXQoKSXQg aXMgbm90IGFsbG93ZWQgdG8gZnJlZSB0aGUgbWVtb3J5IG9mIGFuIG9iamVjdCB3aGljaCBpcyBw YXJ0IG9mIGEgbGlzdAp3aGljaCBpcyBwcm90ZWN0ZWQgYnkgcmN1LXJlYWQtc2lkZS1jcml0aWNh bCBzZWN0aW9ucyB3aXRob3V0IG1ha2luZyBzdXJlCnRoYXQgbm8gb3RoZXIgY29udGV4dCBpcyBh Y2Nlc3NpbmcgdGhlIG9iamVjdCBhbnltb3JlLiBUaGlzIHVzdWFsbHkgaGFwcGVucwpieSByZW1v dmluZyB0aGUgcmVmZXJlbmNlcyB0byB0aGlzIG9iamVjdCBhbmQgdGhlbiB3YWl0aW5nIHVudGls IHRoZSByY3UKZ3JhY2UgcGVyaW9kIGlzIG92ZXIgYW5kIG5vIG9uZSAoYWxsb3dlZGx5KSBhY2Nl c3NlcyBpdCBhbnltb3JlLgoKQnV0IHRoZSBfbm93IGZ1bmN0aW9ucyBpZ25vcmUgdGhpcyBjb21w bGV0ZWx5LiBUaGV5IGZyZWUgdGhlIG9iamVjdApkaXJlY3RseSBldmVuIHdoZW4gYSBkaWZmZXJl bnQgY29udGV4dCBzdGlsbCB0cmllcyB0byBhY2Nlc3MgaXQuIFRoaXMgaGFzCnRvIGJlIGF2b2lk ZWQgYW5kIHRodXMgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgcmVtb3ZlZCBhbmQgYWxsIGZ1bmN0 aW9ucwpoYXZlIHRvIHVzZSBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYuCgpGaXhlczogNzM1 MWE0ODIyZDQyICgiYmF0bWFuLWFkdjogc3BsaXQgb3V0IHJvdXRlciBmcm9tIG9yaWdfbm9kZSIp ClNpZ25lZC1vZmYtYnk6IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+ClNpZ25l ZC1vZmYtYnk6IE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgpTaWdu ZWQtb2ZmLWJ5OiBBbnRvbmlvIFF1YXJ0dWxsaSA8YUB1bnN0YWJsZS5jYz4KLS0tCiBuZXQvYmF0 bWFuLWFkdi9vcmlnaW5hdG9yLmMgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgYi9uZXQv YmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKaW5kZXggNzQ4NmRmOS4uYTA3Mjg5NCAxMDA2NDQKLS0t IGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCisrKyBiL25ldC9iYXRtYW4tYWR2L29yaWdp bmF0b3IuYwpAQCAtNTUzLDc2ICs1NTMsNzkgQEAgc3RhdGljIHZvaWQgYmF0YWR2X29yaWdfaWZp bmZvX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQogfQogCiAvKioKLSAqIGJhdGFkdl9v cmlnX2lmaW5mb19mcmVlX3JlZiAtIGRlY3JlbWVudCB0aGUgcmVmY291bnRlciBhbmQgcG9zc2li bHkgZnJlZQotICogIHRoZSBvcmlnX2lmaW5mbyAod2l0aG91dCByY3UgY2FsbGJhY2spCisgKiBi YXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYgLSBkZWNyZW1lbnQgdGhlIHJlZmNvdW50ZXIgYW5k IHBvc3NpYmx5IHJlbGVhc2UKKyAqICB0aGUgb3JpZ19pZmluZm8KICAqIEBvcmlnX2lmaW5mbzog dGhlIG9yaWdfaWZpbmZvIG9iamVjdCB0byByZWxlYXNlCiAgKi8KLXN0YXRpYyB2b2lkCi1iYXRh ZHZfb3JpZ19pZmluZm9fZnJlZV9yZWZfbm93KHN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm9y aWdfaWZpbmZvKQordm9pZCBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYoc3RydWN0IGJhdGFk dl9vcmlnX2lmaW5mbyAqb3JpZ19pZmluZm8pCiB7CiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3Qo Jm9yaWdfaWZpbmZvLT5yZWZjb3VudCkpCi0JCWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JjdSgm b3JpZ19pZmluZm8tPnJjdSk7CisJCWNhbGxfcmN1KCZvcmlnX2lmaW5mby0+cmN1LCBiYXRhZHZf b3JpZ19pZmluZm9fZnJlZV9yY3UpOwogfQogCiAvKioKLSAqIGJhdGFkdl9vcmlnX2lmaW5mb19m cmVlX3JlZiAtIGRlY3JlbWVudCB0aGUgcmVmY291bnRlciBhbmQgcG9zc2libHkgZnJlZQotICog IHRoZSBvcmlnX2lmaW5mbwotICogQG9yaWdfaWZpbmZvOiB0aGUgb3JpZ19pZmluZm8gb2JqZWN0 IHRvIHJlbGVhc2UKKyAqIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yY3UgLSBmcmVlIHRoZSBvcmln X25vZGUKKyAqIEByY3U6IHJjdSBwb2ludGVyIG9mIHRoZSBvcmlnX25vZGUKICAqLwotdm9pZCBi YXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb3Jp Z19pZmluZm8pCitzdGF0aWMgdm9pZCBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmN1KHN0cnVjdCBy Y3VfaGVhZCAqcmN1KQogewotCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZvcmlnX2lmaW5mby0+ cmVmY291bnQpKQotCQljYWxsX3JjdSgmb3JpZ19pZmluZm8tPnJjdSwgYmF0YWR2X29yaWdfaWZp bmZvX2ZyZWVfcmN1KTsKKwlzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3JpZ19ub2RlOworCisJ b3JpZ19ub2RlID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IGJhdGFkdl9vcmlnX25vZGUsIHJj dSk7CisKKwliYXRhZHZfbWNhc3RfcHVyZ2Vfb3JpZyhvcmlnX25vZGUpOworCisJYmF0YWR2X2Zy YWdfcHVyZ2Vfb3JpZyhvcmlnX25vZGUsIE5VTEwpOworCisJaWYgKG9yaWdfbm9kZS0+YmF0X3By aXYtPmJhdF9hbGdvX29wcy0+YmF0X29yaWdfZnJlZSkKKwkJb3JpZ19ub2RlLT5iYXRfcHJpdi0+ YmF0X2FsZ29fb3BzLT5iYXRfb3JpZ19mcmVlKG9yaWdfbm9kZSk7CisKKwlrZnJlZShvcmlnX25v ZGUtPnR0X2J1ZmYpOworCWtmcmVlKG9yaWdfbm9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGJhdGFk dl9vcmlnX25vZGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpCisvKioKKyAqIGJhdGFk dl9vcmlnX25vZGVfcmVsZWFzZSAtIHJlbGVhc2Ugb3JpZ19ub2RlIGZyb20gbGlzdHMgYW5kIHF1 ZXVlIGZvcgorICogIGZyZWUgYWZ0ZXIgcmN1IGdyYWNlIHBlcmlvZAorICogQG9yaWdfbm9kZTog dGhlIG9yaWcgbm9kZSB0byBmcmVlCisgKi8KK3N0YXRpYyB2b2lkIGJhdGFkdl9vcmlnX25vZGVf cmVsZWFzZShzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3JpZ19ub2RlKQogewogCXN0cnVjdCBo bGlzdF9ub2RlICpub2RlX3RtcDsKIAlzdHJ1Y3QgYmF0YWR2X25laWdoX25vZGUgKm5laWdoX25v ZGU7Ci0Jc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZTsKIAlzdHJ1Y3QgYmF0YWR2 X29yaWdfaWZpbmZvICpvcmlnX2lmaW5mbzsKIAotCW9yaWdfbm9kZSA9IGNvbnRhaW5lcl9vZihy Y3UsIHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlLCByY3UpOwotCiAJc3Bpbl9sb2NrX2JoKCZvcmln X25vZGUtPm5laWdoX2xpc3RfbG9jayk7CiAKIAkvKiBmb3IgYWxsIG5laWdoYm9ycyB0b3dhcmRz IHRoaXMgb3JpZ2luYXRvciAuLi4gKi8KIAlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5laWdo X25vZGUsIG5vZGVfdG1wLAogCQkJCSAgJm9yaWdfbm9kZS0+bmVpZ2hfbGlzdCwgbGlzdCkgewog CQlobGlzdF9kZWxfcmN1KCZuZWlnaF9ub2RlLT5saXN0KTsKLQkJYmF0YWR2X25laWdoX25vZGVf ZnJlZV9yZWZfbm93KG5laWdoX25vZGUpOworCQliYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZihu ZWlnaF9ub2RlKTsKIAl9CiAKIAlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9yaWdfaWZpbmZv LCBub2RlX3RtcCwKIAkJCQkgICZvcmlnX25vZGUtPmlmaW5mb19saXN0LCBsaXN0KSB7CiAJCWhs aXN0X2RlbF9yY3UoJm9yaWdfaWZpbmZvLT5saXN0KTsKLQkJYmF0YWR2X29yaWdfaWZpbmZvX2Zy ZWVfcmVmX25vdyhvcmlnX2lmaW5mbyk7CisJCWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihv cmlnX2lmaW5mbyk7CiAJfQogCXNwaW5fdW5sb2NrX2JoKCZvcmlnX25vZGUtPm5laWdoX2xpc3Rf bG9jayk7CiAKLQliYXRhZHZfbWNhc3RfcHVyZ2Vfb3JpZyhvcmlnX25vZGUpOwotCiAJLyogRnJl ZSBuY19ub2RlcyAqLwogCWJhdGFkdl9uY19wdXJnZV9vcmlnKG9yaWdfbm9kZS0+YmF0X3ByaXYs IG9yaWdfbm9kZSwgTlVMTCk7CiAKLQliYXRhZHZfZnJhZ19wdXJnZV9vcmlnKG9yaWdfbm9kZSwg TlVMTCk7Ci0KLQlpZiAob3JpZ19ub2RlLT5iYXRfcHJpdi0+YmF0X2FsZ29fb3BzLT5iYXRfb3Jp Z19mcmVlKQotCQlvcmlnX25vZGUtPmJhdF9wcml2LT5iYXRfYWxnb19vcHMtPmJhdF9vcmlnX2Zy ZWUob3JpZ19ub2RlKTsKLQotCWtmcmVlKG9yaWdfbm9kZS0+dHRfYnVmZik7Ci0Ja2ZyZWUob3Jp Z19ub2RlKTsKKwljYWxsX3JjdSgmb3JpZ19ub2RlLT5yY3UsIGJhdGFkdl9vcmlnX25vZGVfZnJl ZV9yY3UpOwogfQogCiAvKioKICAqIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yZWYgLSBkZWNyZW1l bnQgdGhlIG9yaWcgbm9kZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseQotICogc2NoZWR1bGUgYW4g cmN1IGNhbGxiYWNrIGZvciBmcmVlaW5nIGl0CisgKiAgcmVsZWFzZSBpdAogICogQG9yaWdfbm9k ZTogdGhlIG9yaWcgbm9kZSB0byBmcmVlCiAgKi8KIHZvaWQgYmF0YWR2X29yaWdfbm9kZV9mcmVl X3JlZihzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3JpZ19ub2RlKQogewogCWlmIChhdG9taWNf ZGVjX2FuZF90ZXN0KCZvcmlnX25vZGUtPnJlZmNvdW50KSkKLQkJY2FsbF9yY3UoJm9yaWdfbm9k ZS0+cmN1LCBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmN1KTsKKwkJYmF0YWR2X29yaWdfbm9kZV9y ZWxlYXNlKG9yaWdfbm9kZSk7CiB9CiAKIC8qKgotLSAKMi4xLjAKCgpGcm9tIGJlYTY4MDE4YmE4 MDdiYzY1NjA5OTJkNTUwYzE0MTc4NGQ4ZmMwNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4g MjAxNiAxMjowNjoyMiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMjEvMjRdIGJhdG1hbi1hZHY6IERy b3AgaW1tZWRpYXRlIGJhdGFkdl9uZWlnaF9ub2RlIGZyZWUKIGZ1bmN0aW9uCgpbIFVwc3RyZWFt IGNvbW1pdCAyYmFhNzUzYzI3NmYyN2Y4ZTg0NDYzNzU2MWFkNTk3ODY3YWE2ZmI2IF0KCkl0IGlz IG5vdCBhbGxvd2VkIHRvIGZyZWUgdGhlIG1lbW9yeSBvZiBhbiBvYmplY3Qgd2hpY2ggaXMgcGFy dCBvZiBhIGxpc3QKd2hpY2ggaXMgcHJvdGVjdGVkIGJ5IHJjdS1yZWFkLXNpZGUtY3JpdGljYWwg c2VjdGlvbnMgd2l0aG91dCBtYWtpbmcgc3VyZQp0aGF0IG5vIG90aGVyIGNvbnRleHQgaXMgYWNj ZXNzaW5nIHRoZSBvYmplY3QgYW55bW9yZS4gVGhpcyB1c3VhbGx5IGhhcHBlbnMKYnkgcmVtb3Zp bmcgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBvYmplY3QgYW5kIHRoZW4gd2FpdGluZyB1bnRpbCB0 aGUgcmN1CmdyYWNlIHBlcmlvZCBpcyBvdmVyIGFuZCBubyBvbmUgKGFsbG93ZWRseSkgYWNjZXNz ZXMgaXQgYW55bW9yZS4KCkJ1dCB0aGUgX25vdyBmdW5jdGlvbnMgaWdub3JlIHRoaXMgY29tcGxl dGVseS4gVGhleSBmcmVlIHRoZSBvYmplY3QKZGlyZWN0bHkgZXZlbiB3aGVuIGEgZGlmZmVyZW50 IGNvbnRleHQgc3RpbGwgdHJpZXMgdG8gYWNjZXNzIGl0LiBUaGlzIGhhcwp0byBiZSBhdm9pZGVk IGFuZCB0aHVzIHRoZXNlIGZ1bmN0aW9ucyBtdXN0IGJlIHJlbW92ZWQgYW5kIGFsbCBmdW5jdGlv bnMKaGF2ZSB0byB1c2UgYmF0YWR2X25laWdoX25vZGVfZnJlZV9yZWYuCgpGaXhlczogODk2NTIz MzFjMDBmICgiYmF0bWFuLWFkdjogc3BsaXQgdHEgaW5mb3JtYXRpb24gaW4gbmVpZ2hfbm9kZSBz dHJ1Y3QiKQpTaWduZWQtb2ZmLWJ5OiBTdmVuIEVja2VsbWFubiA8c3ZlbkBuYXJmYXRpb24ub3Jn PgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBMaW5kbmVyIDxtYXJla2xpbmRuZXJAbmVvbWFpbGJveC5j aD4KU2lnbmVkLW9mZi1ieTogQW50b25pbyBRdWFydHVsbGkgPGFAdW5zdGFibGUuY2M+Ci0tLQog bmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jIHwgMzMgKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jIGIvbmV0L2JhdG1h bi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IGEwNzI4OTQuLmE4ZTY4ZWIgMTAwNjQ0Ci0tLSBhL25l dC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYworKysgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9y LmMKQEAgLTIyOSwyMCArMjI5LDggQEAgc3RhdGljIHZvaWQgYmF0YWR2X25laWdoX25vZGVfZnJl ZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpCiB9CiAKIC8qKgotICogYmF0YWR2X25laWdoX25v ZGVfZnJlZV9yZWZfbm93IC0gZGVjcmVtZW50IHRoZSBuZWlnaGJvcnMgcmVmY291bnRlcgotICog IGFuZCBwb3NzaWJseSBmcmVlIGl0ICh3aXRob3V0IHJjdSBjYWxsYmFjaykKLSAqIEBuZWlnaF9u b2RlOiBuZWlnaCBuZWlnaGJvciB0byBmcmVlCi0gKi8KLXN0YXRpYyB2b2lkCi1iYXRhZHZfbmVp Z2hfbm9kZV9mcmVlX3JlZl9ub3coc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpuZWlnaF9ub2Rl KQotewotCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZuZWlnaF9ub2RlLT5yZWZjb3VudCkpCi0J CWJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1KCZuZWlnaF9ub2RlLT5yY3UpOwotfQotCi0vKioK ICAqIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmIC0gZGVjcmVtZW50IHRoZSBuZWlnaGJvcnMg cmVmY291bnRlcgotICogIGFuZCBwb3NzaWJseSBmcmVlIGl0CisgKiAgYW5kIHBvc3NpYmx5IHJl bGVhc2UgaXQKICAqIEBuZWlnaF9ub2RlOiBuZWlnaCBuZWlnaGJvciB0byBmcmVlCiAgKi8KIHZv aWQgYmF0YWR2X25laWdoX25vZGVfZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpu ZWlnaF9ub2RlKQpAQCAtNTMyLDI0ICs1MjAsMjMgQEAgb3V0OgogfQogCiAvKioKLSAqIGJhdGFk dl9vcmlnX2lmaW5mb19mcmVlX3JjdSAtIGZyZWUgdGhlIG9yaWdfaWZpbmZvIG9iamVjdAotICog QHJjdTogcmN1IHBvaW50ZXIgb2YgdGhlIG9yaWdfaWZpbmZvIG9iamVjdAorICogYmF0YWR2X29y aWdfaWZpbmZvX3JlbGVhc2UgLSByZWxlYXNlIG9yaWdfaWZpbmZvIGZyb20gbGlzdHMgYW5kIHF1 ZXVlIGZvcgorICogIGZyZWUgYWZ0ZXIgcmN1IGdyYWNlIHBlcmlvZAorICogQG9yaWdfaWZpbmZv OiB0aGUgb3JpZ19pZmluZm8gb2JqZWN0IHRvIHJlbGVhc2UKICAqLwotc3RhdGljIHZvaWQgYmF0 YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQorc3RhdGljIHZv aWQgYmF0YWR2X29yaWdfaWZpbmZvX3JlbGVhc2Uoc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAq b3JpZ19pZmluZm8pCiB7Ci0Jc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb3JpZ19pZmluZm87 CiAJc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpyb3V0ZXI7CiAKLQlvcmlnX2lmaW5mbyA9IGNv bnRhaW5lcl9vZihyY3UsIHN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8sIHJjdSk7Ci0KIAlpZiAo b3JpZ19pZmluZm8tPmlmX291dGdvaW5nICE9IEJBVEFEVl9JRl9ERUZBVUxUKQotCQliYXRhZHZf aGFyZGlmX2ZyZWVfcmVmX25vdyhvcmlnX2lmaW5mby0+aWZfb3V0Z29pbmcpOworCQliYXRhZHZf aGFyZGlmX2ZyZWVfcmVmKG9yaWdfaWZpbmZvLT5pZl9vdXRnb2luZyk7CiAKIAkvKiB0aGlzIGlz IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCAqLwogCXJvdXRlciA9IHJjdV9kZXJl ZmVyZW5jZV9wcm90ZWN0ZWQob3JpZ19pZmluZm8tPnJvdXRlciwgdHJ1ZSk7CiAJaWYgKHJvdXRl cikKLQkJYmF0YWR2X25laWdoX25vZGVfZnJlZV9yZWZfbm93KHJvdXRlcik7Ci0Ja2ZyZWUob3Jp Z19pZmluZm8pOworCQliYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZihyb3V0ZXIpOworCisJa2Zy ZWVfcmN1KG9yaWdfaWZpbmZvLCByY3UpOwogfQogCiAvKioKQEAgLTU2MCw3ICs1NDcsNyBAQCBz dGF0aWMgdm9pZCBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpy Y3UpCiB2b2lkIGJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X29yaWdf aWZpbmZvICpvcmlnX2lmaW5mbykKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmb3JpZ19p ZmluZm8tPnJlZmNvdW50KSkKLQkJY2FsbF9yY3UoJm9yaWdfaWZpbmZvLT5yY3UsIGJhdGFkdl9v cmlnX2lmaW5mb19mcmVlX3JjdSk7CisJCWJhdGFkdl9vcmlnX2lmaW5mb19yZWxlYXNlKG9yaWdf aWZpbmZvKTsKIH0KIAogLyoqCi0tIAoyLjEuMAoKCkZyb20gYzAxZTNiYzI0NDIzNGFiMGI5OTc0 NmRjMDU2YTJlZGJiZDZhNzQ3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3ZlbiBF Y2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KRGF0ZTogVHVlLCA1IEphbiAyMDE2IDEyOjA2 OjI0ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyMi8yNF0gYmF0bWFuLWFkdjogRHJvcCBpbW1lZGlh dGUgbmVpZ2hfaWZpbmZvIGZyZWUgZnVuY3Rpb24KClsgVXBzdHJlYW0gY29tbWl0IGFlM2UxZTM2 ZTNjYjZjNjg2YTdhMjcyNWFmMjBjYTg2YWE0NmQ2MmEgXQoKSXQgaXMgbm90IGFsbG93ZWQgdG8g ZnJlZSB0aGUgbWVtb3J5IG9mIGFuIG9iamVjdCB3aGljaCBpcyBwYXJ0IG9mIGEgbGlzdAp3aGlj aCBpcyBwcm90ZWN0ZWQgYnkgcmN1LXJlYWQtc2lkZS1jcml0aWNhbCBzZWN0aW9ucyB3aXRob3V0 IG1ha2luZyBzdXJlCnRoYXQgbm8gb3RoZXIgY29udGV4dCBpcyBhY2Nlc3NpbmcgdGhlIG9iamVj dCBhbnltb3JlLiBUaGlzIHVzdWFsbHkgaGFwcGVucwpieSByZW1vdmluZyB0aGUgcmVmZXJlbmNl cyB0byB0aGlzIG9iamVjdCBhbmQgdGhlbiB3YWl0aW5nIHVudGlsIHRoZSByY3UKZ3JhY2UgcGVy aW9kIGlzIG92ZXIgYW5kIG5vIG9uZSAoYWxsb3dlZGx5KSBhY2Nlc3NlcyBpdCBhbnltb3JlLgoK QnV0IHRoZSBfbm93IGZ1bmN0aW9ucyBpZ25vcmUgdGhpcyBjb21wbGV0ZWx5LiBUaGV5IGZyZWUg dGhlIG9iamVjdApkaXJlY3RseSBldmVuIHdoZW4gYSBkaWZmZXJlbnQgY29udGV4dCBzdGlsbCB0 cmllcyB0byBhY2Nlc3MgaXQuIFRoaXMgaGFzCnRvIGJlIGF2b2lkZWQgYW5kIHRodXMgdGhlc2Ug ZnVuY3Rpb25zIG11c3QgYmUgcmVtb3ZlZCBhbmQgYWxsIGZ1bmN0aW9ucwpoYXZlIHRvIHVzZSBi YXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmLgoKRml4ZXM6IDg5NjUyMzMxYzAwZiAoImJhdG1h bi1hZHY6IHNwbGl0IHRxIGluZm9ybWF0aW9uIGluIG5laWdoX25vZGUgc3RydWN0IikKU2lnbmVk LW9mZi1ieTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KU2lnbmVkLW9mZi1i eTogTWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNpZ25lZC1vZmYt Ynk6IEFudG9uaW8gUXVhcnR1bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9iYXRtYW4tYWR2 L29yaWdpbmF0b3IuYyB8IDM0ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5h dG9yLmMKaW5kZXggYThlNjhlYi4uMGMyN2YwNyAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYv b3JpZ2luYXRvci5jCisrKyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwpAQCAtMTYzLDQy ICsxNjMsMjggQEAgZXJyOgogfQogCiAvKioKLSAqIGJhdGFkdl9uZWlnaF9pZmluZm9fZnJlZV9y Y3UgLSBmcmVlIHRoZSBuZWlnaF9pZmluZm8gb2JqZWN0Ci0gKiBAcmN1OiByY3UgcG9pbnRlciBv ZiB0aGUgbmVpZ2hfaWZpbmZvIG9iamVjdAotICovCi1zdGF0aWMgdm9pZCBiYXRhZHZfbmVpZ2hf aWZpbmZvX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQotewotCXN0cnVjdCBiYXRhZHZf bmVpZ2hfaWZpbmZvICpuZWlnaF9pZmluZm87Ci0KLQluZWlnaF9pZmluZm8gPSBjb250YWluZXJf b2YocmN1LCBzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbywgcmN1KTsKLQotCWlmIChuZWlnaF9p ZmluZm8tPmlmX291dGdvaW5nICE9IEJBVEFEVl9JRl9ERUZBVUxUKQotCQliYXRhZHZfaGFyZGlm X2ZyZWVfcmVmX25vdyhuZWlnaF9pZmluZm8tPmlmX291dGdvaW5nKTsKLQotCWtmcmVlKG5laWdo X2lmaW5mbyk7Ci19Ci0KLS8qKgotICogYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX25vdyAtIGRl Y3JlbWVudCB0aGUgcmVmY291bnRlciBhbmQgcG9zc2libHkgZnJlZQotICogIHRoZSBuZWlnaF9p ZmluZm8gKHdpdGhvdXQgcmN1IGNhbGxiYWNrKQorICogYmF0YWR2X25laWdoX2lmaW5mb19yZWxl YXNlIC0gcmVsZWFzZSBuZWlnaF9pZmluZm8gZnJvbSBsaXN0cyBhbmQgcXVldWUgZm9yCisgKiAg ZnJlZSBhZnRlciByY3UgZ3JhY2UgcGVyaW9kCiAgKiBAbmVpZ2hfaWZpbmZvOiB0aGUgbmVpZ2hf aWZpbmZvIG9iamVjdCB0byByZWxlYXNlCiAgKi8KIHN0YXRpYyB2b2lkCi1iYXRhZHZfbmVpZ2hf aWZpbmZvX2ZyZWVfcmVmX25vdyhzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hfaWZp bmZvKQorYmF0YWR2X25laWdoX2lmaW5mb19yZWxlYXNlKHN0cnVjdCBiYXRhZHZfbmVpZ2hfaWZp bmZvICpuZWlnaF9pZmluZm8pCiB7Ci0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm5laWdoX2lm aW5mby0+cmVmY291bnQpKQotCQliYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmN1KCZuZWlnaF9p ZmluZm8tPnJjdSk7CisJaWYgKG5laWdoX2lmaW5mby0+aWZfb3V0Z29pbmcgIT0gQkFUQURWX0lG X0RFRkFVTFQpCisJCWJhdGFkdl9oYXJkaWZfZnJlZV9yZWYobmVpZ2hfaWZpbmZvLT5pZl9vdXRn b2luZyk7CisKKwlrZnJlZV9yY3UobmVpZ2hfaWZpbmZvLCByY3UpOwogfQogCiAvKioKLSAqIGJh dGFkdl9uZWlnaF9pZmluZm9fZnJlZV9yZWYgLSBkZWNyZW1lbnQgdGhlIHJlZmNvdW50ZXIgYW5k IHBvc3NpYmx5IGZyZWUKKyAqIGJhdGFkdl9uZWlnaF9pZmluZm9fZnJlZV9yZWYgLSBkZWNyZW1l bnQgdGhlIHJlZmNvdW50ZXIgYW5kIHBvc3NpYmx5IHJlbGVhc2UKICAqICB0aGUgbmVpZ2hfaWZp bmZvCiAgKiBAbmVpZ2hfaWZpbmZvOiB0aGUgbmVpZ2hfaWZpbmZvIG9iamVjdCB0byByZWxlYXNl CiAgKi8KIHZvaWQgYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X25l aWdoX2lmaW5mbyAqbmVpZ2hfaWZpbmZvKQogewogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZu ZWlnaF9pZmluZm8tPnJlZmNvdW50KSkKLQkJY2FsbF9yY3UoJm5laWdoX2lmaW5mby0+cmN1LCBi YXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmN1KTsKKwkJYmF0YWR2X25laWdoX2lmaW5mb19yZWxl YXNlKG5laWdoX2lmaW5mbyk7CiB9CiAKIC8qKgpAQCAtMjE3LDcgKzIwMyw3IEBAIHN0YXRpYyB2 b2lkIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQogCiAJ aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShuZWlnaF9pZmluZm8sIG5vZGVfdG1wLAogCQkJCSAg Jm5laWdoX25vZGUtPmlmaW5mb19saXN0LCBsaXN0KSB7Ci0JCWJhdGFkdl9uZWlnaF9pZmluZm9f ZnJlZV9yZWZfbm93KG5laWdoX2lmaW5mbyk7CisJCWJhdGFkdl9uZWlnaF9pZmluZm9fZnJlZV9y ZWYobmVpZ2hfaWZpbmZvKTsKIAl9CiAKIAlpZiAoYmFvLT5iYXRfbmVpZ2hfZnJlZSkKLS0gCjIu MS4wCgoKRnJvbSA5NDZiODk3MjY2MWRiY2VjZTgzNzNlNTY1MTY2NWZhZDEwZTFjYjFlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdmVuIEVja2VsbWFubiA8c3ZlbkBuYXJmYXRpb24u b3JnPgpEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMTI6MDY6MjUgKzAxMDAKU3ViamVjdDogW1BBVENI IDIzLzI0XSBiYXRtYW4tYWR2OiBEcm9wIGltbWVkaWF0ZSBiYXRhZHZfaGFyZF9pZmFjZSBmcmVl CiBmdW5jdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgYjRkOTIyY2ZjOWMwODMxOGVlYjc3ZDUzYjc2 MzM3NDBlNmIwZWZiMCBdCgpJdCBpcyBub3QgYWxsb3dlZCB0byBmcmVlIHRoZSBtZW1vcnkgb2Yg YW4gb2JqZWN0IHdoaWNoIGlzIHBhcnQgb2YgYSBsaXN0CndoaWNoIGlzIHByb3RlY3RlZCBieSBy Y3UtcmVhZC1zaWRlLWNyaXRpY2FsIHNlY3Rpb25zIHdpdGhvdXQgbWFraW5nIHN1cmUKdGhhdCBu byBvdGhlciBjb250ZXh0IGlzIGFjY2Vzc2luZyB0aGUgb2JqZWN0IGFueW1vcmUuIFRoaXMgdXN1 YWxseSBoYXBwZW5zCmJ5IHJlbW92aW5nIHRoZSByZWZlcmVuY2VzIHRvIHRoaXMgb2JqZWN0IGFu ZCB0aGVuIHdhaXRpbmcgdW50aWwgdGhlIHJjdQpncmFjZSBwZXJpb2QgaXMgb3ZlciBhbmQgbm8g b25lIChhbGxvd2VkbHkpIGFjY2Vzc2VzIGl0IGFueW1vcmUuCgpCdXQgdGhlIF9ub3cgZnVuY3Rp b25zIGlnbm9yZSB0aGlzIGNvbXBsZXRlbHkuIFRoZXkgZnJlZSB0aGUgb2JqZWN0CmRpcmVjdGx5 IGV2ZW4gd2hlbiBhIGRpZmZlcmVudCBjb250ZXh0IHN0aWxsIHRyaWVzIHRvIGFjY2VzcyBpdC4g VGhpcyBoYXMKdG8gYmUgYXZvaWRlZCBhbmQgdGh1cyB0aGVzZSBmdW5jdGlvbnMgbXVzdCBiZSBy ZW1vdmVkIGFuZCBhbGwgZnVuY3Rpb25zCmhhdmUgdG8gdXNlIGJhdGFkdl9oYXJkaWZfZnJlZV9y ZWYuCgpGaXhlczogODk2NTIzMzFjMDBmICgiYmF0bWFuLWFkdjogc3BsaXQgdHEgaW5mb3JtYXRp b24gaW4gbmVpZ2hfbm9kZSBzdHJ1Y3QiKQpTaWduZWQtb2ZmLWJ5OiBTdmVuIEVja2VsbWFubiA8 c3ZlbkBuYXJmYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBMaW5kbmVyIDxtYXJla2xp bmRuZXJAbmVvbWFpbGJveC5jaD4KU2lnbmVkLW9mZi1ieTogQW50b25pbyBRdWFydHVsbGkgPGFA dW5zdGFibGUuY2M+Ci0tLQogbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuaCB8IDEyIC0t LS0tLS0tLS0tLQogbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jICAgICB8IDE0ICsrKysrKyst LS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuaCBiL25ldC9iYXRt YW4tYWR2L2hhcmQtaW50ZXJmYWNlLmgKaW5kZXggNWEzMTQyMC4uN2IxMmVhOCAxMDA2NDQKLS0t IGEvbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuaAorKysgYi9uZXQvYmF0bWFuLWFkdi9o YXJkLWludGVyZmFjZS5oCkBAIC03NSwxOCArNzUsNiBAQCBiYXRhZHZfaGFyZGlmX2ZyZWVfcmVm KHN0cnVjdCBiYXRhZHZfaGFyZF9pZmFjZSAqaGFyZF9pZmFjZSkKIAkJY2FsbF9yY3UoJmhhcmRf aWZhY2UtPnJjdSwgYmF0YWR2X2hhcmRpZl9mcmVlX3JjdSk7CiB9CiAKLS8qKgotICogYmF0YWR2 X2hhcmRpZl9mcmVlX3JlZl9ub3cgLSBkZWNyZW1lbnQgdGhlIGhhcmQgaW50ZXJmYWNlIHJlZmNv dW50ZXIgYW5kCi0gKiAgcG9zc2libHkgZnJlZSBpdCAod2l0aG91dCByY3UgY2FsbGJhY2spCi0g KiBAaGFyZF9pZmFjZTogdGhlIGhhcmQgaW50ZXJmYWNlIHRvIGZyZWUKLSAqLwotc3RhdGljIGlu bGluZSB2b2lkCi1iYXRhZHZfaGFyZGlmX2ZyZWVfcmVmX25vdyhzdHJ1Y3QgYmF0YWR2X2hhcmRf aWZhY2UgKmhhcmRfaWZhY2UpCi17Ci0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmhhcmRfaWZh Y2UtPnJlZmNvdW50KSkKLQkJYmF0YWR2X2hhcmRpZl9mcmVlX3JjdSgmaGFyZF9pZmFjZS0+cmN1 KTsKLX0KLQogc3RhdGljIGlubGluZSBzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKgogYmF0YWR2 X3ByaW1hcnlfaWZfZ2V0X3NlbGVjdGVkKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpCiB7 CmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgYi9uZXQvYmF0bWFuLWFk di9vcmlnaW5hdG9yLmMKaW5kZXggMGMyN2YwNy4uZDlkMmNlZSAxMDA2NDQKLS0tIGEvbmV0L2Jh dG1hbi1hZHYvb3JpZ2luYXRvci5jCisrKyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwpA QCAtMTg5LDE2ICsxODksMTYgQEAgdm9pZCBiYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmKHN0 cnVjdCBiYXRhZHZfbmVpZ2hfaWZpbmZvICpuZWlnaF9pZmluZm8pCiAKIC8qKgogICogYmF0YWR2 X25laWdoX25vZGVfZnJlZV9yY3UgLSBmcmVlIHRoZSBuZWlnaF9ub2RlCi0gKiBAcmN1OiByY3Ug cG9pbnRlciBvZiB0aGUgbmVpZ2hfbm9kZQorICogYmF0YWR2X25laWdoX25vZGVfcmVsZWFzZSAt IHJlbGVhc2UgbmVpZ2hfbm9kZSBmcm9tIGxpc3RzIGFuZCBxdWV1ZSBmb3IKKyAqICBmcmVlIGFm dGVyIHJjdSBncmFjZSBwZXJpb2QKKyAqIEBuZWlnaF9ub2RlOiBuZWlnaCBuZWlnaGJvciB0byBm cmVlCiAgKi8KLXN0YXRpYyB2b2lkIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1KHN0cnVjdCBy Y3VfaGVhZCAqcmN1KQorc3RhdGljIHZvaWQgYmF0YWR2X25laWdoX25vZGVfcmVsZWFzZShzdHJ1 Y3QgYmF0YWR2X25laWdoX25vZGUgKm5laWdoX25vZGUpCiB7CiAJc3RydWN0IGhsaXN0X25vZGUg Km5vZGVfdG1wOwotCXN0cnVjdCBiYXRhZHZfbmVpZ2hfbm9kZSAqbmVpZ2hfbm9kZTsKIAlzdHJ1 Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hfaWZpbmZvOwogCXN0cnVjdCBiYXRhZHZfYWxn b19vcHMgKmJhbzsKIAotCW5laWdoX25vZGUgPSBjb250YWluZXJfb2YocmN1LCBzdHJ1Y3QgYmF0 YWR2X25laWdoX25vZGUsIHJjdSk7CiAJYmFvID0gbmVpZ2hfbm9kZS0+b3JpZ19ub2RlLT5iYXRf cHJpdi0+YmF0X2FsZ29fb3BzOwogCiAJaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShuZWlnaF9p ZmluZm8sIG5vZGVfdG1wLApAQCAtMjA5LDkgKzIwOSw5IEBAIHN0YXRpYyB2b2lkIGJhdGFkdl9u ZWlnaF9ub2RlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQogCWlmIChiYW8tPmJhdF9u ZWlnaF9mcmVlKQogCQliYW8tPmJhdF9uZWlnaF9mcmVlKG5laWdoX25vZGUpOwogCi0JYmF0YWR2 X2hhcmRpZl9mcmVlX3JlZl9ub3cobmVpZ2hfbm9kZS0+aWZfaW5jb21pbmcpOworCWJhdGFkdl9o YXJkaWZfZnJlZV9yZWYobmVpZ2hfbm9kZS0+aWZfaW5jb21pbmcpOwogCi0Ja2ZyZWUobmVpZ2hf bm9kZSk7CisJa2ZyZWVfcmN1KG5laWdoX25vZGUsIHJjdSk7CiB9CiAKIC8qKgpAQCAtMjIyLDcg KzIyMiw3IEBAIHN0YXRpYyB2b2lkIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1KHN0cnVjdCBy Y3VfaGVhZCAqcmN1KQogdm9pZCBiYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZihzdHJ1Y3QgYmF0 YWR2X25laWdoX25vZGUgKm5laWdoX25vZGUpCiB7CiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3Qo Jm5laWdoX25vZGUtPnJlZmNvdW50KSkKLQkJY2FsbF9yY3UoJm5laWdoX25vZGUtPnJjdSwgYmF0 YWR2X25laWdoX25vZGVfZnJlZV9yY3UpOworCQliYXRhZHZfbmVpZ2hfbm9kZV9yZWxlYXNlKG5l aWdoX25vZGUpOwogfQogCiAvKioKLS0gCjIuMS4wCgoKRnJvbSA0NjA1Yzk3NzFjMDM2ZTBiM2Yx YjM5ZTg5NTczMjIwZWEwZWJiZWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdmVu IEVja2VsbWFubiA8c3ZlbkBuYXJmYXRpb24ub3JnPgpEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMTI6 MDY6MjAgKzAxMDAKU3ViamVjdDogW1BBVENIIDI0LzI0XSBiYXRtYW4tYWR2OiBEcm9wIGltbWVk aWF0ZSBvcmlnX25vZGUgZnJlZSBmdW5jdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgNDJlZmY2YTYx N2UyM2I2OTFmOGU0NDY3ZjQ2ODdlZDcyNDVhOTJkYiBdCgpJdCBpcyBub3QgYWxsb3dlZCB0byBm cmVlIHRoZSBtZW1vcnkgb2YgYW4gb2JqZWN0IHdoaWNoIGlzIHBhcnQgb2YgYSBsaXN0CndoaWNo IGlzIHByb3RlY3RlZCBieSByY3UtcmVhZC1zaWRlLWNyaXRpY2FsIHNlY3Rpb25zIHdpdGhvdXQg bWFraW5nIHN1cmUKdGhhdCBubyBvdGhlciBjb250ZXh0IGlzIGFjY2Vzc2luZyB0aGUgb2JqZWN0 IGFueW1vcmUuIFRoaXMgdXN1YWxseSBoYXBwZW5zCmJ5IHJlbW92aW5nIHRoZSByZWZlcmVuY2Vz IHRvIHRoaXMgb2JqZWN0IGFuZCB0aGVuIHdhaXRpbmcgdW50aWwgdGhlIHJjdQpncmFjZSBwZXJp b2QgaXMgb3ZlciBhbmQgbm8gb25lIChhbGxvd2VkbHkpIGFjY2Vzc2VzIGl0IGFueW1vcmUuCgpC dXQgdGhlIF9ub3cgZnVuY3Rpb25zIGlnbm9yZSB0aGlzIGNvbXBsZXRlbHkuIFRoZXkgZnJlZSB0 aGUgb2JqZWN0CmRpcmVjdGx5IGV2ZW4gd2hlbiBhIGRpZmZlcmVudCBjb250ZXh0IHN0aWxsIHRy aWVzIHRvIGFjY2VzcyBpdC4gVGhpcyBoYXMKdG8gYmUgYXZvaWRlZCBhbmQgdGh1cyB0aGVzZSBm dW5jdGlvbnMgbXVzdCBiZSByZW1vdmVkIGFuZCBhbGwgZnVuY3Rpb25zCmhhdmUgdG8gdXNlIGJh dGFkdl9vcmlnX25vZGVfZnJlZV9yZWYuCgpGaXhlczogNzI4MjIyMjViZDQxICgiYmF0bWFuLWFk djogRml4IHJjdV9iYXJyaWVyKCkgbWlzcyBkdWUgdG8gZG91YmxlIGNhbGxfcmN1KCkgaW4gVFQg Y29kZSIpClNpZ25lZC1vZmYtYnk6IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+ ClNpZ25lZC1vZmYtYnk6IE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNo PgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIFF1YXJ0dWxsaSA8YUB1bnN0YWJsZS5jYz4KLS0tCiBu ZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgICAgICAgIHwgMTEgLS0tLS0tLS0tLS0KIG5ldC9i YXRtYW4tYWR2L29yaWdpbmF0b3IuaCAgICAgICAgfCAgMSAtCiBuZXQvYmF0bWFuLWFkdi90cmFu c2xhdGlvbi10YWJsZS5jIHwgMjggKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMyBmaWxl cyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9y LmMKaW5kZXggZDlkMmNlZS4uMTc4NTFkMyAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvb3Jp Z2luYXRvci5jCisrKyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwpAQCAtNjAxLDE3ICs2 MDEsNiBAQCB2b2lkIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9vcmln X25vZGUgKm9yaWdfbm9kZSkKIAkJYmF0YWR2X29yaWdfbm9kZV9yZWxlYXNlKG9yaWdfbm9kZSk7 CiB9CiAKLS8qKgotICogYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZl9ub3cgLSBkZWNyZW1lbnQg dGhlIG9yaWcgbm9kZSByZWZjb3VudGVyIGFuZAotICogcG9zc2libHkgZnJlZSBpdCAod2l0aG91 dCByY3UgY2FsbGJhY2spCi0gKiBAb3JpZ19ub2RlOiB0aGUgb3JpZyBub2RlIHRvIGZyZWUKLSAq Lwotdm9pZCBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmVmX25vdyhzdHJ1Y3QgYmF0YWR2X29yaWdf bm9kZSAqb3JpZ19ub2RlKQotewotCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZvcmlnX25vZGUt PnJlZmNvdW50KSkKLQkJYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JjdSgmb3JpZ19ub2RlLT5yY3Up OwotfQotCiB2b2lkIGJhdGFkdl9vcmlnaW5hdG9yX2ZyZWUoc3RydWN0IGJhdGFkdl9wcml2ICpi YXRfcHJpdikKIHsKIAlzdHJ1Y3QgYmF0YWR2X2hhc2h0YWJsZSAqaGFzaCA9IGJhdF9wcml2LT5v cmlnX2hhc2g7CmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmggYi9uZXQv YmF0bWFuLWFkdi9vcmlnaW5hdG9yLmgKaW5kZXggZmExOGY5Yi4uYTVjMzc4OCAxMDA2NDQKLS0t IGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5oCisrKyBiL25ldC9iYXRtYW4tYWR2L29yaWdp bmF0b3IuaApAQCAtMzgsNyArMzgsNiBAQCBpbnQgYmF0YWR2X29yaWdpbmF0b3JfaW5pdChzdHJ1 Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2KTsKIHZvaWQgYmF0YWR2X29yaWdpbmF0b3JfZnJlZShz dHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2KTsKIHZvaWQgYmF0YWR2X3B1cmdlX29yaWdfcmVm KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpOwogdm9pZCBiYXRhZHZfb3JpZ19ub2RlX2Zy ZWVfcmVmKHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUpOwotdm9pZCBiYXRhZHZf b3JpZ19ub2RlX2ZyZWVfcmVmX25vdyhzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3JpZ19ub2Rl KTsKIHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpiYXRhZHZfb3JpZ19ub2RlX25ldyhzdHJ1Y3Qg YmF0YWR2X3ByaXYgKmJhdF9wcml2LAogCQkJCQkgICAgICBjb25zdCB1OCAqYWRkcik7CiBzdHJ1 Y3QgYmF0YWR2X25laWdoX25vZGUgKgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvdHJhbnNs YXRpb24tdGFibGUuYyBiL25ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMKaW5kZXgg NzZmMTliYS4uODNiMGNhMiAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvdHJhbnNsYXRpb24t dGFibGUuYworKysgYi9uZXQvYmF0bWFuLWFkdi90cmFuc2xhdGlvbi10YWJsZS5jCkBAIC0yNDAs MjAgKzI0MCw2IEBAIGludCBiYXRhZHZfdHRfZ2xvYmFsX2hhc2hfY291bnQoc3RydWN0IGJhdGFk dl9wcml2ICpiYXRfcHJpdiwKIAlyZXR1cm4gY291bnQ7CiB9CiAKLXN0YXRpYyB2b2lkIGJhdGFk dl90dF9vcmlnX2xpc3RfZW50cnlfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpCi17Ci0J c3RydWN0IGJhdGFkdl90dF9vcmlnX2xpc3RfZW50cnkgKm9yaWdfZW50cnk7Ci0KLQlvcmlnX2Vu dHJ5ID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IGJhdGFkdl90dF9vcmlnX2xpc3RfZW50cnks IHJjdSk7Ci0KLQkvKiBXZSBhcmUgaW4gYW4gcmN1IGNhbGxiYWNrIGhlcmUsIHRoZXJlZm9yZSB3 ZSBjYW5ub3QgdXNlCi0JICogYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZigpIGFuZCBpdHMgY2Fs bF9yY3UoKToKLQkgKiBBbiByY3VfYmFycmllcigpIHdvdWxkbid0IHdhaXQgZm9yIHRoYXQgdG8g ZmluaXNoCi0JICovCi0JYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZl9ub3cob3JpZ19lbnRyeS0+ b3JpZ19ub2RlKTsKLQlrZnJlZShvcmlnX2VudHJ5KTsKLX0KLQogLyoqCiAgKiBiYXRhZHZfdHRf bG9jYWxfc2l6ZV9tb2QgLSBjaGFuZ2UgdGhlIHNpemUgYnkgdiBvZiB0aGUgbG9jYWwgdGFibGUg aWRlbnRpZmllZAogICogIGJ5IHZpZApAQCAtMzQ5LDEzICszMzUsMjUgQEAgc3RhdGljIHZvaWQg YmF0YWR2X3R0X2dsb2JhbF9zaXplX2RlYyhzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3JpZ19u b2RlLAogCWJhdGFkdl90dF9nbG9iYWxfc2l6ZV9tb2Qob3JpZ19ub2RlLCB2aWQsIC0xKTsKIH0K IAorLyoqCisgKiBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5X3JlbGVhc2UgLSByZWxlYXNlIHR0 IG9yaWcgZW50cnkgZnJvbSBsaXN0cyBhbmQKKyAqICBxdWV1ZSBmb3IgZnJlZSBhZnRlciByY3Ug Z3JhY2UgcGVyaW9kCisgKiBAb3JpZ19lbnRyeTogdHQgb3JpZyBlbnRyeSB0byBiZSBmcmVlJ2QK KyAqLworc3RhdGljIHZvaWQKK2JhdGFkdl90dF9vcmlnX2xpc3RfZW50cnlfcmVsZWFzZShzdHJ1 Y3QgYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeSAqb3JpZ19lbnRyeSkKK3sKKwliYXRhZHZfb3Jp Z19ub2RlX2ZyZWVfcmVmKG9yaWdfZW50cnktPm9yaWdfbm9kZSk7CisJa2ZyZWVfcmN1KG9yaWdf ZW50cnksIHJjdSk7Cit9CisKIHN0YXRpYyB2b2lkCiBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5 X2ZyZWVfcmVmKHN0cnVjdCBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5ICpvcmlnX2VudHJ5KQog ewogCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmb3JpZ19lbnRyeS0+cmVmY291bnQpKQogCQly ZXR1cm47CiAKLQljYWxsX3JjdSgmb3JpZ19lbnRyeS0+cmN1LCBiYXRhZHZfdHRfb3JpZ19saXN0 X2VudHJ5X2ZyZWVfcmN1KTsKKwliYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5X3JlbGVhc2Uob3Jp Z19lbnRyeSk7CiB9CiAKIC8qKgotLSAKMi4xLjAKCg== ----Next_Part(Tue_Jan_26_18_00_44_2016_358)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_43.mbox" RnJvbSBlZWRjNDZhOGE2OWE5NDVhYWUyMGZmNThlZmRjODUxNDk2MDgyYjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBIb3JtYW4gPHNpbW9uLmhvcm1hbkBuZXRyb25vbWUu Y29tPgpEYXRlOiBGcmksIDE4IERlYyAyMDE1IDE5OjQzOjE1ICswOTAwClN1YmplY3Q6IFtQQVRD SCAwMS80MF0gb3BlbnZzd2l0Y2g6IGNvcnJlY3QgZW5jb2Rpbmcgb2Ygc2V0IHR1bm5lbCBhY3Rp b24KIGF0dHJpYnV0ZXMKClsgVXBzdHJlYW0gY29tbWl0IGU5MDVlYWJjOTBhNWI3ODdkODcwOGRm MTY0NTQzZWUyOTViZWE1ZjIgXQoKSW4gYSBzZXQgYWN0aW9uIHR1bm5lbCBhdHRyaWJ1dGVzIHNo b3VsZCBiZSBlbmNvZGVkIGluIGEKbmVzdGVkIGFjdGlvbi4KCkkgbm90aWNlZCB0aGlzIGJlY2F1 c2Ugb3ZzLWRwY3RsIHdhcyByZXBvcnRpbmcgYW4gZXJyb3IKd2hlbiBkdW1waW5nIGZsb3dzIGR1 ZSB0byB0aGUgaW5jb3JyZWN0IGVuY29kaW5nIG9mIHR1bm5lbCBhdHRyaWJ1dGVzCmluIGEgc2V0 IGFjdGlvbi4KCkZpeGVzOiBmYzQwOTlmMTcyNDAgKCJvcGVudnN3aXRjaDogRml4IGVncmVzcyB0 dW5uZWwgaW5mby4iKQpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBIb3JtYW4gPHNpbW9uLmhvcm1hbkBu ZXRyb25vbWUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVt bG9mdC5uZXQ+Ci0tLQogbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIHwgNCArKystCiAx IGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIGIvbmV0L29wZW52c3dpdGNoL2Zsb3df bmV0bGluay5jCmluZGV4IDM4NTM2YzEuLjQ1NjM1MTEgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3 aXRjaC9mbG93X25ldGxpbmsuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMK QEAgLTIzODIsNyArMjM4Miw5IEBAIHN0YXRpYyBpbnQgc2V0X2FjdGlvbl90b19hdHRyKGNvbnN0 IHN0cnVjdCBubGF0dHIgKmEsIHN0cnVjdCBza19idWZmICpza2IpCiAJCWlmICghc3RhcnQpCiAJ CQlyZXR1cm4gLUVNU0dTSVpFOwogCi0JCWVyciA9IG92c19ubGFfcHV0X3R1bm5lbF9pbmZvKHNr YiwgdHVuX2luZm8pOworCQllcnIgPSAgaXB2NF90dW5fdG9fbmxhdHRyKHNrYiwgJnR1bl9pbmZv LT5rZXksCisJCQkJCSAgaXBfdHVubmVsX2luZm9fb3B0cyh0dW5faW5mbyksCisJCQkJCSAgdHVu X2luZm8tPm9wdGlvbnNfbGVuKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CiAJCW5sYV9u ZXN0X2VuZChza2IsIHN0YXJ0KTsKLS0gCjIuMS4wCgoKRnJvbSA0MDFjYjM2MzkxYTdmZGJjMzM2 NmQ0ZDJmMmRhMmJhOTgwYTAxYzljIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWph eSBQYW5kdXJhbmdhbiA8dmlqYXlwQHZpamF5cC5jYT4KRGF0ZTogRnJpLCAxOCBEZWMgMjAxNSAx NDozNDo1OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDIvNDBdID0/VVRGLTg/cT92ZXRoOj0yMGRv bj1FMj04MD05OXQ9MjBtb2RpZnk9MjBpcD01RnN1bT89CiA9P1VURi04P3E/bWVkOz0yMGRvaW5n PTIwc289MjB0cmVhdHM9MjBwYWNrZXRzPTIwd2l0aD0yMGJhZD0yMGNoZWNrc3Vtcz89CiA9P1VU Ri04P3E/PTIwYXM9MjBnb29kLj89Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cgpb IFVwc3RyZWFtIGNvbW1pdCBjZThjODM5Yjc0ZTMwMTc5OTZmYWQ0ZTFiN2JhMmUyNjI1ZWRlODJm IF0KClBhY2tldHMgdGhhdCBhcnJpdmUgZnJvbSByZWFsIGhhcmR3YXJlIGRldmljZXMgaGF2ZSBp cF9zdW1tZWQgPT0KQ0hFQ0tTVU1fVU5ORUNFU1NBUlkgaWYgdGhlIGhhcmR3YXJlIHZlcmlmaWVk IHRoZSBjaGVja3N1bXMsIG9yCkNIRUNLU1VNX05PTkUgaWYgdGhlIHBhY2tldCBpcyBiYWQgb3Ig aXQgd2FzIHVuYWJsZSB0byB2ZXJpZnkgaXQuIFRoZQpjdXJyZW50IHZlcnNpb24gb2YgdmV0aCB3 aWxsIHJlcGxhY2UgQ0hFQ0tTVU1fTk9ORSB3aXRoCkNIRUNLU1VNX1VOTkVDRVNTQVJZLCB3aGlj aCBjYXVzZXMgY29ycnVwdCBwYWNrZXRzIHJvdXRlZCBmcm9tIGhhcmR3YXJlIHRvCmEgdmV0aCBk ZXZpY2UgdG8gYmUgZGVsaXZlcmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4gVGhpcyBjYXVzZWQgYXBw bGljYXRpb25zCmF0IFR3aXR0ZXIgdG8gcmVjZWl2ZSBjb3JydXB0IGRhdGEgd2hlbiBuZXR3b3Jr IGhhcmR3YXJlIHdhcyBjb3JydXB0aW5nCnBhY2tldHMuCgpXZSBiZWxpZXZlIHRoaXMgd2FzIGFk ZGVkIGFzIGFuIG9wdGltaXphdGlvbiB0byBza2lwIGNvbXB1dGluZyBhbmQKdmVyaWZ5aW5nIGNo ZWNrc3VtcyBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGNvbnRhaW5lcnMuIEhvd2V2ZXIsIGxv Y2FsbHkKZ2VuZXJhdGVkIHBhY2tldHMgaGF2ZSBpcF9zdW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElB TCwgc28gdGhlIGNvZGUgYXMKd3JpdHRlbiBkb2VzIG5vdGhpbmcgZm9yIHRoZW0uIEFzIGZhciBh cyB3ZSBjYW4gdGVsbCwgYWZ0ZXIgcmVtb3ZpbmcgdGhpcwpjb2RlLCB0aGVzZSBwYWNrZXRzIGFy ZSB0cmFuc21pdHRlZCBmcm9tIG9uZSBzdGFjayB0byBhbm90aGVyIHVubW9kaWZpZWQKKHRjcGR1 bXAgc2hvd3MgaW52YWxpZCBjaGVja3N1bXMgb24gYm90aCBzaWRlcywgYXMgZXhwZWN0ZWQpLCBh bmQgdGhleSBhcmUKZGVsaXZlcmVkIGNvcnJlY3RseSB0byBhcHBsaWNhdGlvbnMuIFdlIGRpZG7i gJl0IHRlc3QgZXZlcnkgcG9zc2libGUgbmV0d29yawpjb25maWd1cmF0aW9uLCBidXQgd2UgdHJp ZWQgYSBmZXcgY29tbW9uIG9uZXMgc3VjaCBhcyBicmlkZ2luZyBjb250YWluZXJzLAp1c2luZyBO QVQgYmV0d2VlbiB0aGUgaG9zdCBhbmQgYSBjb250YWluZXIsIGFuZCByb3V0aW5nIGZyb20gaGFy ZHdhcmUKZGV2aWNlcyB0byBjb250YWluZXJzLiBXZSBoYXZlIGVmZmVjdGl2ZWx5IGRlcGxveWVk IHRoaXMgaW4gcHJvZHVjdGlvbiBhdApUd2l0dGVyIChieSBkaXNhYmxpbmcgUlggY2hlY2tzdW0g b2ZmbG9hZGluZyBvbiB2ZXRoIGRldmljZXMpLgoKVGhpcyBjb2RlIGRhdGVzIGJhY2sgdG8gdGhl IGZpcnN0IHZlcnNpb24gb2YgdGhlIGRyaXZlciwgY29tbWl0CjxlMzE0ZGJkYzFjMGRjNmE1NDhl Y2Y+ICgiW05FVF06IFZpcnR1YWwgZXRoZXJuZXQgZGV2aWNlIGRyaXZlciIpLCBzbyBJCnN1c3Bl Y3QgdGhpcyBidWcgb2NjdXJyZWQgbW9zdGx5IGJlY2F1c2UgdGhlIGRyaXZlciBBUEkgaGFzIGV2 b2x2ZWQKc2lnbmlmaWNhbnRseSBzaW5jZSB0aGVuLiBDb21taXQgPDBiNzk2NzUwM2RjOTc4NjRm MjgzYT4gKCJuZXQvdmV0aDogRml4CnBhY2tldCBjaGVja3N1bW1pbmciKSAoaW4gRGVjZW1iZXIg MjAxMCkgZml4ZWQgdGhpcyBmb3IgcGFja2V0cyB0aGF0IGdldApjcmVhdGVkIGxvY2FsbHkgYW5k IHNlbnQgdG8gaGFyZHdhcmUgZGV2aWNlcywgYnkgbm90IGNoYW5naW5nCkNIRUNLU1VNX1BBUlRJ QUwuIEhvd2V2ZXIsIHRoZSBzYW1lIGlzc3VlIHN0aWxsIG9jY3VycyBmb3IgcGFja2V0cyBjb21p bmcKaW4gZnJvbSBoYXJkd2FyZSBkZXZpY2VzLgoKQ28tYXV0aG9yZWQtYnk6IEV2YW4gSm9uZXMg PGVqQGV2YW5qb25lcy5jYT4KU2lnbmVkLW9mZi1ieTogRXZhbiBKb25lcyA8ZWpAZXZhbmpvbmVz LmNhPgpDYzogTmljb2xhcyBEaWNodGVsIDxuaWNvbGFzLmRpY2h0ZWxANndpbmQuY29tPgpDYzog UGhpbCBTdXR0ZXIgPHBoaWxAbndsLmNjPgpDYzogVG9zaGlha2kgTWFraXRhIDxtYWtpdGEudG9z aGlha2lAbGFiLm50dC5jby5qcD4KQ2M6IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4 LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKU2lnbmVkLW9mZi1ieTogVmlqYXkgUGFuZHVyYW5nYW4g PHZpamF5cEB2aWpheXAuY2E+CkFja2VkLWJ5OiBDb25nIFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJj ZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KLS0tCiBkcml2ZXJzL25ldC92ZXRoLmMgfCA2IC0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmV0aC5jIGIvZHJpdmVycy9u ZXQvdmV0aC5jCmluZGV4IDBlZjRhNWEuLmJhMjFkMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3ZldGguYworKysgYi9kcml2ZXJzL25ldC92ZXRoLmMKQEAgLTExNywxMiArMTE3LDYgQEAgc3Rh dGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0 X2RldmljZSAqZGV2KQogCQlrZnJlZV9za2Ioc2tiKTsKIAkJZ290byBkcm9wOwogCX0KLQkvKiBk b24ndCBjaGFuZ2UgaXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUwsIGFzIHRoYXQKLQkgKiB3 aWxsIGNhdXNlIGJhZCBjaGVja3N1bSBvbiBmb3J3YXJkZWQgcGFja2V0cwotCSAqLwotCWlmIChz a2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9OT05FICYmCi0JICAgIHJjdi0+ZmVhdHVyZXMgJiBO RVRJRl9GX1JYQ1NVTSkKLQkJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTsK IAogCWlmIChsaWtlbHkoZGV2X2ZvcndhcmRfc2tiKHJjdiwgc2tiKSA9PSBORVRfUlhfU1VDQ0VT UykpIHsKIAkJc3RydWN0IHBjcHVfdnN0YXRzICpzdGF0cyA9IHRoaXNfY3B1X3B0cihkZXYtPnZz dGF0cyk7Ci0tIAoyLjEuMAoKCkZyb20gNjk1MjkzMjI1YWRjMjdlYzkyZWRmZmIzZWEwMDM4NTA4 NzA0ZTllMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5kcmV5IFJ5YWJpbmluIDxh cnlhYmluaW5AdmlydHVvenpvLmNvbT4KRGF0ZTogTW9uLCAyMSBEZWMgMjAxNSAxMjo1NDo0NSAr MDMwMApTdWJqZWN0OiBbUEFUQ0ggMDMvNDBdIGlwdjYvYWRkcmxhYmVsOiBmaXggaXA2YWRkcmxi bF9nZXQoKQoKWyBVcHN0cmVhbSBjb21taXQgZTQ1OWRmZWViNjQwMDhiMmQyM2JkZjYwMGYwM2Iz NjA1ZGJiODE1MiBdCgppcDZhZGRybGJsX2dldCgpIGhhcyBuZXZlciB3b3JrZWQuIElmIGlwNmFk ZHJsYmxfaG9sZCgpIHN1Y2NlZWRlZCwKaXA2YWRkcmxibF9nZXQoKSB3aWxsIGV4aXQgd2l0aCAn LUVTUkNIJy4gSWYgaXA2YWRkcmxibF9ob2xkKCkgZmFpbGVkLAppcDZhZGRybGJsX2dldCgpIHdp bGwgdXNlIGFib3V0IHRvIGJlIGZyZWUgaXA2YWRkcmxibF9lbnRyeSBwb2ludGVyLgoKRml4IHRo aXMgYnkgaW52ZXJ0aW5nIGlwNmFkZHJsYmxfaG9sZCgpIGNoZWNrLgoKRml4ZXM6IDJhOGNjNmM4 OTAzOSAoIltJUFY2XSBBRERSQ09ORjogU3VwcG9ydCBSRkMzNDg0IGNvbmZpZ3VyYWJsZSBhZGRy ZXNzIHNlbGVjdGlvbiBwb2xpY3kgdGFibGUuIikKU2lnbmVkLW9mZi1ieTogQW5kcmV5IFJ5YWJp bmluIDxhcnlhYmluaW5AdmlydHVvenpvLmNvbT4KUmV2aWV3ZWQtYnk6IENvbmcgV2FuZyA8Y3dh bmdAdHdvcGVuc291cmNlLmNvbT4KQWNrZWQtYnk6IFlPU0hJRlVKSSBIaWRlYWtpIDx5b3NoZnVq aUBsaW51eC1pcHY2Lm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L2FkZHJsYWJlbC5jIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lw djYvYWRkcmxhYmVsLmMgYi9uZXQvaXB2Ni9hZGRybGFiZWwuYwppbmRleCA4ODIxMjRlLi5hOGY2 OTg2IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZGRybGFiZWwuYworKysgYi9uZXQvaXB2Ni9hZGRy bGFiZWwuYwpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0YXRpYyBpbnQgaXA2YWRkcmxibF9nZXQoc3Ry dWN0IHNrX2J1ZmYgKmluX3NrYiwgc3RydWN0IG5sbXNnaGRyICpubGgpCiAKIAlyY3VfcmVhZF9s b2NrKCk7CiAJcCA9IF9faXB2Nl9hZGRyX2xhYmVsKG5ldCwgYWRkciwgaXB2Nl9hZGRyX3R5cGUo YWRkciksIGlmYWwtPmlmYWxfaW5kZXgpOwotCWlmIChwICYmIGlwNmFkZHJsYmxfaG9sZChwKSkK KwlpZiAocCAmJiAhaXA2YWRkcmxibF9ob2xkKHApKQogCQlwID0gTlVMTDsKIAlsc2VxID0gaXA2 YWRkcmxibF90YWJsZS5zZXE7CiAJcmN1X3JlYWRfdW5sb2NrKCk7Ci0tIAoyLjEuMAoKCkZyb20g ZmYzYzU0NzVhNTRhOTJmYTA2YTQ0YmQzODcwY2IwMGIyYTNiYmQxYyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogV0FORyBDb25nIDx4aXlvdS53YW5nY29uZ0BnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMjEgRGVjIDIwMTUgMTA6NTU6NDUgLTA4MDAKU3ViamVjdDogW1BBVENIIDA0LzQwXSBh ZGRyY29uZjogYWx3YXlzIGluaXRpYWxpemUgc3lzY3RsIHRhYmxlIGRhdGEKClsgVXBzdHJlYW0g Y29tbWl0IDU0NDlhNWNhOWJjMjdkZDUxYTQ2MmRlN2NhMGIxY2Q4NjFjZDJiZDAgXQoKV2hlbiBz eXNjdGwgcGVyZm9ybXMgcmVzdHJpY3Qgd3JpdGVzLCBpdCBhbGxvd3MgdG8gd3JpdGUgZnJvbQph IG1pZGRsZSBwb3NpdGlvbiBvZiBhIHN5c2N0bCBmaWxlLCB3aGljaCByZXF1aXJlcyB1cyB0byBp bml0aWFsaXplCnRoZSB0YWJsZSBkYXRhIGJlZm9yZSBjYWxsaW5nIHByb2NfZG9zdHJpbmcoKSBm b3IgdGhlIHdyaXRlIGNhc2UuCgpGaXhlczogM2QxYmVjOTkzMjBkICgiaXB2NjogaW50cm9kdWNl IHNlY3JldF9zdGFibGUgdG8gaXB2Nl9kZXZjb25mIikKUmVwb3J0ZWQtYnk6IFNhc2hhIExldmlu IDxzYXNoYS5sZXZpbkBvcmFjbGUuY29tPgpBY2tlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2Eg PGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpUZXN0ZWQtYnk6IFNhc2hhIExldmluIDxzYXNo YS5sZXZpbkBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBDb25nIFdhbmcgPHhpeW91Lndhbmdj b25nQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZl bWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L2FkZHJjb25mLmMgfCAxMSArKysrLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9uZXQvaXB2Ni9hZGRyY29uZi5jIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCBkZGQzNTEx Li41NDYyYmZkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZGRyY29uZi5jCisrKyBiL25ldC9pcHY2 L2FkZHJjb25mLmMKQEAgLTUzNDksMTMgKzUzNDksMTAgQEAgc3RhdGljIGludCBhZGRyY29uZl9z eXNjdGxfc3RhYmxlX3NlY3JldChzdHJ1Y3QgY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSwKIAkJ Z290byBvdXQ7CiAJfQogCi0JaWYgKCF3cml0ZSkgewotCQllcnIgPSBzbnByaW50ZihzdHIsIHNp emVvZihzdHIpLCAiJXBJNiIsCi0JCQkgICAgICAgJnNlY3JldC0+c2VjcmV0KTsKLQkJaWYgKGVy ciA+PSBzaXplb2Yoc3RyKSkgewotCQkJZXJyID0gLUVJTzsKLQkJCWdvdG8gb3V0OwotCQl9CisJ ZXJyID0gc25wcmludGYoc3RyLCBzaXplb2Yoc3RyKSwgIiVwSTYiLCAmc2VjcmV0LT5zZWNyZXQp OworCWlmIChlcnIgPj0gc2l6ZW9mKHN0cikpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7 CiAJfQogCiAJZXJyID0gcHJvY19kb3N0cmluZygmbGN0bCwgd3JpdGUsIGJ1ZmZlciwgbGVucCwg cHBvcyk7Ci0tIAoyLjEuMAoKCkZyb20gZWQ3NjNhOTRkNzQ2ZGM0MjQ5OWZiNDZlNzFhNGJlZmUx N2U3NWMyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0JqPUMzPUI4 cm49MjBNb3JrPz0gPGJqb3JuQG1vcmsubm8+CkRhdGU6IFdlZCwgMjMgRGVjIDIwMTUgMTM6NDI6 NDMgKzAxMDAKU3ViamVjdDogW1BBVENIIDA1LzQwXSBuZXQ6IGNkY19uY206IGF2b2lkIGNoYW5n aW5nIFJYL1RYIGJ1ZmZlcnMgb24gTVRVCiBjaGFuZ2VzCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k aW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCAxZGZkZGZmNWZjZDg2OWZjYWIwYzUyZmFmYWUw OTlkZmE0MzVhOTM1IF0KCk5DTSBidWZmZXIgc2l6ZXMgYXJlIG5lZ290aWF0ZWQgd2l0aCB0aGUg ZGV2aWNlIGluZGVwZW5kZW50bHkgb2YKdGhlIG5ldHdvcmsgZGV2aWNlIE1UVS4gIFRoZSBSWCBi dWZmZXJzIGFyZSBhbGxvY2F0ZWQgYnkgdGhlCnVzYm5ldCBmcmFtZXdvcmsgYmFzZWQgb24gdGhl IHJ4X3VyYl9zaXplIHZhbHVlIHNldCBieSBjZGNfbmNtLiBBCnNpbmdsZSBSWCBidWZmZXIgY2Fu IGhvbGQgYSBudW1iZXIgb2YgTVRVIHNpemVkIHBhY2tldHMuCgpUaGUgZGVmYXVsdCB1c2JuZXQg Y2hhbmdlX210dSBuZG8gb25seSBtb2RpZmllcyByeF91cmJfc2l6ZSBpZiBpdAppcyBlcXVhbCB0 byBoYXJkX210dS4gIEFuZCB0aGUgY2RjX25jbSBkcml2ZXIgd2lsbCBzZXQgcnhfdXJiX3NpemUK YW5kIGhhcmRfbXR1IGluZGVwZW5kZW50bHkgb2YgZWFjaCBvdGhlciwgYmFzZWQgb24gZHdOdGJJ bk1heFNpemUKYW5kIGR3TnRiT3V0TWF4U2l6ZSByZXNwZWN0aXZlbHkuIEl0IHdhcyB0aGVyZWZv cmUgYXNzdW1lZCB0aGF0CnVzYm5ldF9jaGFuZ2VfbXR1KCkgd291bGQgbmV2ZXIgdG91Y2ggcnhf dXJiX3NpemUuICBUaGlzIGZhaWxlZCB0bwpjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBkd050Yklu TWF4U2l6ZSBhbmQgZHdOdGJPdXRNYXhTaXplIGhhcHBlbnMKdG8gYmUgZXF1YWwuCgpGaXggYnkg aW1wbGVtZW50aW5nIGFuIE5DTSBzcGVjaWZpYyBjaGFuZ2VfbXR1IG5kbywgbW9kaWZ5aW5nIHRo ZQpuZXRkZXYgTVRVIHdpdGhvdXQgdG91Y2hpbmcgdGhlIGJ1ZmZlciBzaXplIHNldHRpbmdzLgoK U2lnbmVkLW9mZi1ieTogQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC91 c2IvY2RjX21iaW0uYyAgfCAgMiArLQogZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYyAgIHwgMzEg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51eC91c2IvY2RjX25j bS5oIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2NkY19tYmltLmMgYi9kcml2ZXJzL25l dC91c2IvY2RjX21iaW0uYwppbmRleCBiNmVhNmZmLi5kODdiNGFjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC91c2IvY2RjX21iaW0uYworKysgYi9kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYwpA QCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgY2Rj X21iaW1fbmV0ZGV2X29wcyA9IHsKIAkubmRvX3N0b3AgICAgICAgICAgICAgPSB1c2JuZXRfc3Rv cCwKIAkubmRvX3N0YXJ0X3htaXQgICAgICAgPSB1c2JuZXRfc3RhcnRfeG1pdCwKIAkubmRvX3R4 X3RpbWVvdXQgICAgICAgPSB1c2JuZXRfdHhfdGltZW91dCwKLQkubmRvX2NoYW5nZV9tdHUgICAg ICAgPSB1c2JuZXRfY2hhbmdlX210dSwKKwkubmRvX2NoYW5nZV9tdHUgICAgICAgPSBjZGNfbmNt X2NoYW5nZV9tdHUsCiAJLm5kb19zZXRfbWFjX2FkZHJlc3MgID0gZXRoX21hY19hZGRyLAogCS5u ZG9fdmFsaWRhdGVfYWRkciAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLAogCS5uZG9fdmxhbl9yeF9h ZGRfdmlkICA9IGNkY19tYmltX3J4X2FkZF92aWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91 c2IvY2RjX25jbS5jIGIvZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYwppbmRleCBmYTQxYTZkLi5l Mjc4YTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jCisrKyBiL2RyaXZl cnMvbmV0L3VzYi9jZGNfbmNtLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9j dHlwZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+CiAjaW5jbHVkZSA8bGludXgv ZXRodG9vbC5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgogI2luY2x1ZGUgPGxpbnV4 L21paS5oPgpAQCAtNjg5LDYgKzY5MCwzMyBAQCBzdGF0aWMgdm9pZCBjZGNfbmNtX2ZyZWUoc3Ry dWN0IGNkY19uY21fY3R4ICpjdHgpCiAJa2ZyZWUoY3R4KTsKIH0KIAorLyogd2UgbmVlZCB0byBv dmVycmlkZSB0aGUgdXNibmV0IGNoYW5nZV9tdHUgbmRvIGZvciB0d28gcmVhc29uczoKKyAqICAt IHJlc3BlY3QgdGhlIG5lZ290aWF0ZWQgbWF4aW11bSBkYXRhZ3JhbSBzaXplCisgKiAgLSBhdm9p ZCB1bndhbnRlZCBjaGFuZ2VzIHRvIHJ4IGFuZCB0eCBidWZmZXJzCisgKi8KK2ludCBjZGNfbmNt X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCwgaW50IG5ld19tdHUpCit7CisJc3Ry dWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0KTsKKwlzdHJ1Y3QgY2RjX25jbV9jdHgg KmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYtPmRhdGFbMF07CisJaW50IG1heG10dSA9 IGN0eC0+bWF4X2RhdGFncmFtX3NpemUgLSBjZGNfbmNtX2V0aF9obGVuKGRldik7CisKKwlpZiAo bmV3X210dSA8PSAwIHx8IG5ld19tdHUgPiBtYXhtdHUpCisJCXJldHVybiAtRUlOVkFMOworCW5l dC0+bXR1ID0gbmV3X210dTsKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGNkY19u Y21fY2hhbmdlX210dSk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgY2Rj X25jbV9uZXRkZXZfb3BzID0geworCS5uZG9fb3BlbgkgICAgID0gdXNibmV0X29wZW4sCisJLm5k b19zdG9wCSAgICAgPSB1c2JuZXRfc3RvcCwKKwkubmRvX3N0YXJ0X3htaXQJICAgICA9IHVzYm5l dF9zdGFydF94bWl0LAorCS5uZG9fdHhfdGltZW91dAkgICAgID0gdXNibmV0X3R4X3RpbWVvdXQs CisJLm5kb19jaGFuZ2VfbXR1CSAgICAgPSBjZGNfbmNtX2NoYW5nZV9tdHUsCisJLm5kb19zZXRf bWFjX2FkZHJlc3MgPSBldGhfbWFjX2FkZHIsCisJLm5kb192YWxpZGF0ZV9hZGRyICAgPSBldGhf dmFsaWRhdGVfYWRkciwKK307CisKIGludCBjZGNfbmNtX2JpbmRfY29tbW9uKHN0cnVjdCB1c2Ju ZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHU4IGRhdGFfYWx0c2V0dGluZywg aW50IGRydmZsYWdzKQogewogCWNvbnN0IHN0cnVjdCB1c2JfY2RjX3VuaW9uX2Rlc2MgKnVuaW9u X2Rlc2MgPSBOVUxMOwpAQCAtODc0LDYgKzkwMiw5IEBAIGFkdmFuY2U6CiAJLyogYWRkIG91ciBz eXNmcyBhdHRycyAqLwogCWRldi0+bmV0LT5zeXNmc19ncm91cHNbMF0gPSAmY2RjX25jbV9zeXNm c19hdHRyX2dyb3VwOwogCisJLyogbXVzdCBoYW5kbGUgTVRVIGNoYW5nZXMgKi8KKwlkZXYtPm5l dC0+bmV0ZGV2X29wcyA9ICZjZGNfbmNtX25ldGRldl9vcHM7CisKIAlyZXR1cm4gMDsKIAogZXJy b3IyOgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvY2RjX25jbS5oIGIvaW5jbHVkZS9s aW51eC91c2IvY2RjX25jbS5oCmluZGV4IDFmNjUyNmMuLjNhMzc1ZDAgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvdXNiL2NkY19uY20uaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jZGNfbmNt LmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBzdHJ1Y3QgY2RjX25jbV9jdHggewogfTsKIAogdTggY2Rj X25jbV9zZWxlY3RfYWx0c2V0dGluZyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CitpbnQg Y2RjX25jbV9jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQsIGludCBuZXdfbXR1KTsK IGludCBjZGNfbmNtX2JpbmRfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9p bnRlcmZhY2UgKmludGYsIHU4IGRhdGFfYWx0c2V0dGluZywgaW50IGRydmZsYWdzKTsKIHZvaWQg Y2RjX25jbV91bmJpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAq aW50Zik7CiBzdHJ1Y3Qgc2tfYnVmZiAqY2RjX25jbV9maWxsX3R4X2ZyYW1lKHN0cnVjdCB1c2Ju ZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIHNpZ24pOwotLSAKMi4xLjAKCgpG cm9tIGRiNTRhOGMxYWVkYzQ4NjdhZTNiODU0YTA5N2NlNWExODc3OTU4OTcgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IFhpbiBMb25nIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KRGF0ZTog VHVlLCAyOSBEZWMgMjAxNSAxNzo0OToyNSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMDYvNDBdIHNj dHA6IHNjdHAgc2hvdWxkIHJlbGVhc2UgYXNzb2Mgd2hlbgogc2N0cF9tYWtlX2Fib3J0X3VzZXIg cmV0dXJuIE5VTEwgaW4gc2N0cF9jbG9zZQoKWyBVcHN0cmVhbSBjb21taXQgMDY4ZDhiZDMzOGU4 NTUyODZhZWE1NGU3MGQxYzEwMTU2OTI4NGIyMSBdCgpJbiBzY3RwX2Nsb3NlLCBzY3RwX21ha2Vf YWJvcnRfdXNlciBtYXkgcmV0dXJuIE5VTEwgYmVjYXVzZSBvZiBtZW1vcnkKYWxsb2NhdGlvbiBm YWlsdXJlLiBJZiB0aGlzIGhhcHBlbnMsIGl0IHdpbGwgYnlwYXNzIGFueSBzdGF0ZSBjaGFuZ2UK YW5kIG5ldmVyIGZyZWUgdGhlIGFzc29jLiBUaGUgYXNzb2MgaGFzIG5vIGNoYW5jZSB0byBiZSBm cmVlZCBhbmQgaXQKd2lsbCBiZSBrZXB0IGluIG1lbW9yeSB3aXRoIHRoZSBzdGF0ZSBpdCBoYWQg ZXZlbiBhZnRlciB0aGUgc29ja2V0IGlzCmNsb3NlZCBieSBzY3RwX2Nsb3NlKCkuCgpTbyBpZiBz Y3RwX21ha2VfYWJvcnRfdXNlciBmYWlscyB0byBhbGxvY2F0ZSBtZW1vcnksIHdlIHNob3VsZCBh Ym9ydAp0aGUgYXNvYyB2aWEgc2N0cF9wcmltaXRpdmVfQUJPUlQgYXMgd2VsbC4gSnVzdCBsaWtl IHRoZSBhbm5vdGF0aW9uIGluCnNjdHBfc2ZfY29va2llX3dhaXRfcHJtX2Fib3J0IGFuZCBzY3Rw X3NmX2RvXzlfMV9wcm1fYWJvcnQgc2FpZCwKIkV2ZW4gaWYgd2UgY2FuJ3Qgc2VuZCB0aGUgQUJP UlQgZHVlIHRvIGxvdyBtZW1vcnkgZGVsZXRlIHRoZSBUQ0IuClRoaXMgaXMgYSBkZXBhcnR1cmUg ZnJvbSBvdXIgdHlwaWNhbCBOT01FTSBoYW5kbGluZyIuCgpCdXQgdGhlbiB0aGUgY2h1bmsgaXMg TlVMTCAobG93IG1lbW9yeSkgYW5kIHRoZSBTQ1RQX0NNRF9SRVBMWSBjbWQgd291bGQKZGVyZWZl cmVuY2UgdGhlIGNodW5rIHBvaW50ZXIsIGFuZCBzeXN0ZW0gY3Jhc2guIFNvIHdlIHNob3VsZCBh ZGQKU0NUUF9DTURfUkVQTFkgY21kIG9ubHkgd2hlbiB0aGUgY2h1bmsgaXMgbm90IE5VTEwsIGp1 c3QgbGlrZSBvdGhlcgpwbGFjZXMgd2hlcmUgaXQgYWRkcyBTQ1RQX0NNRF9SRVBMWSBjbWQuCgpT aWduZWQtb2ZmLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+CkFja2VkLWJ5OiBN YXJjZWxvIFJpY2FyZG8gTGVpdG5lciA8bWFyY2Vsby5sZWl0bmVyQGdtYWlsLmNvbT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9z Y3RwL3NtX3N0YXRlZnVucy5jIHwgNiArKysrLS0KIG5ldC9zY3RwL3NvY2tldC5jICAgICAgIHwg MyArLS0KIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVm dW5zLmMKaW5kZXggZDdlYWE3My4uYzg5NTg2ZSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3Rh dGVmdW5zLmMKKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKQEAgLTQ4MjksNyArNDgyOSw4 IEBAIHNjdHBfZGlzcG9zaXRpb25fdCBzY3RwX3NmX2RvXzlfMV9wcm1fYWJvcnQoCiAKIAlyZXR2 YWwgPSBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7CiAKLQlzY3RwX2FkZF9jbWRfc2YoY29tbWFu ZHMsIFNDVFBfQ01EX1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0KSk7CisJaWYgKGFib3J0KQorCQlz Y3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBfQ01EX1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0 KSk7CiAKIAkvKiBFdmVuIGlmIHdlIGNhbid0IHNlbmQgdGhlIEFCT1JUIGR1ZSB0byBsb3cgbWVt b3J5IGRlbGV0ZSB0aGUKIAkgKiBUQ0IuICBUaGlzIGlzIGEgZGVwYXJ0dXJlIGZyb20gb3VyIHR5 cGljYWwgTk9NRU0gaGFuZGxpbmcuCkBAIC00OTY2LDcgKzQ5NjcsOCBAQCBzY3RwX2Rpc3Bvc2l0 aW9uX3Qgc2N0cF9zZl9jb29raWVfd2FpdF9wcm1fYWJvcnQoCiAJCQlTQ1RQX1RPKFNDVFBfRVZF TlRfVElNRU9VVF9UMV9JTklUKSk7CiAJcmV0dmFsID0gU0NUUF9ESVNQT1NJVElPTl9DT05TVU1F OwogCi0Jc2N0cF9hZGRfY21kX3NmKGNvbW1hbmRzLCBTQ1RQX0NNRF9SRVBMWSwgU0NUUF9DSFVO SyhhYm9ydCkpOworCWlmIChhYm9ydCkKKwkJc2N0cF9hZGRfY21kX3NmKGNvbW1hbmRzLCBTQ1RQ X0NNRF9SRVBMWSwgU0NUUF9DSFVOSyhhYm9ydCkpOwogCiAJc2N0cF9hZGRfY21kX3NmKGNvbW1h bmRzLCBTQ1RQX0NNRF9ORVdfU1RBVEUsCiAJCQlTQ1RQX1NUQVRFKFNDVFBfU1RBVEVfQ0xPU0VE KSk7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zb2NrZXQuYyBiL25ldC9zY3RwL3NvY2tldC5jCmlu ZGV4IDg0YjFiNTAuLjlkZWU4MDQgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NvY2tldC5jCisrKyBi L25ldC9zY3RwL3NvY2tldC5jCkBAIC0xNTEzLDggKzE1MTMsNyBAQCBzdGF0aWMgdm9pZCBzY3Rw X2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KQogCQkJc3RydWN0IHNjdHBfY2h1 bmsgKmNodW5rOwogCiAJCQljaHVuayA9IHNjdHBfbWFrZV9hYm9ydF91c2VyKGFzb2MsIE5VTEws IDApOwotCQkJaWYgKGNodW5rKQotCQkJCXNjdHBfcHJpbWl0aXZlX0FCT1JUKG5ldCwgYXNvYywg Y2h1bmspOworCQkJc2N0cF9wcmltaXRpdmVfQUJPUlQobmV0LCBhc29jLCBjaHVuayk7CiAJCX0g ZWxzZQogCQkJc2N0cF9wcmltaXRpdmVfU0hVVERPV04obmV0LCBhc29jLCBOVUxMKTsKIAl9Ci0t IAoyLjEuMAoKCkZyb20gMWVjOWUyMzUxNDNmNzY4OGI1YzY3ZjhiMWYyMWM0MWFhM2Q3YzA5NiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRmxvcmlhbiBXZXN0cGhhbCA8ZndAc3RybGVu LmRlPgpEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjI2OjMzICswMTAwClN1YmplY3Q6IFtQQVRD SCAwNy80MF0gY29ubmVjdG9yOiBidW1wIHNrYi0+dXNlcnMgYmVmb3JlIGNhbGxiYWNrIGludm9j YXRpb24KClsgVXBzdHJlYW0gY29tbWl0IDU1Mjg1YmYwOTQyN2M1YWJmNDNlZTFkNTRlODkyZjM1 MjA5MmIxZjEgXQoKRG1pdHJ5IHJlcG9ydHMgbWVtbGVhayB3aXRoIHN5c2thbGxlciBwcm9ncmFt LgpQcm9ibGVtIGlzIHRoYXQgY29ubmVjdG9yIGJ1bXBzIHNrYiB1c2Vjb3VudCBidXQgbWlnaHQg bm90IGludm9rZSBjYWxsYmFjay4KClNvIG1vdmUgc2tiX2dldCB0byB3aGVyZSB3ZSBpbnZva2Ug dGhlIGNhbGxiYWNrLgoKUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xl LmNvbT4KU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBXZXN0cGhhbCA8ZndAc3RybGVuLmRlPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJp dmVycy9jb25uZWN0b3IvY29ubmVjdG9yLmMgfCAxMSArKystLS0tLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2Nvbm5lY3Rvci9jb25uZWN0b3IuYyBiL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jCmlu ZGV4IDMwZjUyMjguLmMxOWU3ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5l Y3Rvci5jCisrKyBiL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jCkBAIC0xNzgsMjYgKzE3 OCwyMSBAQCBzdGF0aWMgaW50IGNuX2NhbGxfY2FsbGJhY2soc3RydWN0IHNrX2J1ZmYgKnNrYikK ICAqCiAgKiBJdCBjaGVja3Mgc2tiLCBuZXRsaW5rIGhlYWRlciBhbmQgbXNnIHNpemVzLCBhbmQg Y2FsbHMgY2FsbGJhY2sgaGVscGVyLgogICovCi1zdGF0aWMgdm9pZCBjbl9yeF9za2Ioc3RydWN0 IHNrX2J1ZmYgKl9fc2tiKQorc3RhdGljIHZvaWQgY25fcnhfc2tiKHN0cnVjdCBza19idWZmICpz a2IpCiB7CiAJc3RydWN0IG5sbXNnaGRyICpubGg7Ci0Jc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAlp bnQgbGVuLCBlcnI7CiAKLQlza2IgPSBza2JfZ2V0KF9fc2tiKTsKLQogCWlmIChza2ItPmxlbiA+ PSBOTE1TR19IRFJMRU4pIHsKIAkJbmxoID0gbmxtc2dfaGRyKHNrYik7CiAJCWxlbiA9IG5sbXNn X2xlbihubGgpOwogCiAJCWlmIChsZW4gPCAoaW50KXNpemVvZihzdHJ1Y3QgY25fbXNnKSB8fAog CQkgICAgc2tiLT5sZW4gPCBubGgtPm5sbXNnX2xlbiB8fAotCQkgICAgbGVuID4gQ09OTkVDVE9S X01BWF9NU0dfU0laRSkgewotCQkJa2ZyZWVfc2tiKHNrYik7CisJCSAgICBsZW4gPiBDT05ORUNU T1JfTUFYX01TR19TSVpFKQogCQkJcmV0dXJuOwotCQl9CiAKLQkJZXJyID0gY25fY2FsbF9jYWxs YmFjayhza2IpOworCQllcnIgPSBjbl9jYWxsX2NhbGxiYWNrKHNrYl9nZXQoc2tiKSk7CiAJCWlm IChlcnIgPCAwKQogCQkJa2ZyZWVfc2tiKHNrYik7CiAJfQotLSAKMi4xLjAKCgpGcm9tIGUzYjQ4 MjgzOTBmMjMxNjdhMjEwYWNjZWE2ZjY2NTU2MjExNzdhZTkgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFJhaW5lciBXZWlrdXNhdCA8cndlaWt1c2F0QG1vYmlsZWFjdGl2ZWRlZmVuc2Uu Y29tPgpEYXRlOiBTdW4sIDMgSmFuIDIwMTYgMTg6NTY6MzggKzAwMDAKU3ViamVjdDogW1BBVENI IDA4LzQwXSBhZl91bml4OiBGaXggc3BsaWNlLWJpbmQgZGVhZGxvY2sKClsgVXBzdHJlYW0gY29t bWl0IGM4NDVhY2IzMjRhYTg1YTM5NjUwYTE0ZTc2OTY5ODJjZWVhNzVkYzEgXQoKT24gMjAxNS8x MS8wNiwgRG1pdHJ5IFZ5dWtvdiByZXBvcnRlZCBhIGRlYWRsb2NrIGludm9sdmluZyB0aGUgc3Bs aWNlCnN5c3RlbSBjYWxsIGFuZCBBRl9VTklYIHNvY2tldHMsCgpodHRwOi8vbGlzdHMub3Blbndh bGwubmV0L25ldGRldi8yMDE1LzExLzA2LzI0CgpUaGUgc2l0dWF0aW9uIHdhcyBhbmFseXplZCBh cwoKKGEgd2hpbGUgYWdvKSBBOiBzb2NrZXRwYWlyKCkKQjogc3BsaWNlKCkgZnJvbSBhIHBpcGUg dG8gL21udC9yZWd1bGFyX2ZpbGUKCWRvZXMgc2Jfc3RhcnRfd3JpdGUoKSBvbiAvbW50CkM6IHRy eSB0byBmcmVlemUgL21udAoJd2FpdCBmb3IgQiB0byBmaW5pc2ggd2l0aCAvbW50CkE6IGJpbmQo KSB0cnkgdG8gYmluZCBvdXIgc29ja2V0IHRvIC9tbnQvbmV3X3NvY2tldF9uYW1lCglsb2NrIG91 ciBzb2NrZXQsIHNlZSBpdCBub3QgYm91bmQgeWV0CglkZWNpZGUgdGhhdCBpdCBuZWVkcyB0byBj cmVhdGUgc29tZXRoaW5nIGluIC9tbnQKCXRyeSB0byBkbyBzYl9zdGFydF93cml0ZSgpIG9uIC9t bnQsIGJsb2NrIChpdCdzCgl3YWl0aW5nIGZvciBDKS4KRDogc3BsaWNlKCkgZnJvbSB0aGUgc2Ft ZSBwaXBlIHRvIG91ciBzb2NrZXQKCWxvY2sgdGhlIHBpcGUsIHNlZSB0aGF0IHNvY2tldCBpcyBj b25uZWN0ZWQKCXRyeSB0byBsb2NrIHRoZSBzb2NrZXQsIGJsb2NrIHdhaXRpbmcgZm9yIEEKQjoJ Z2V0IGFyb3VuZCB0byBhY3R1YWxseSBmZWVkaW5nIGEgY2h1bmsgZnJvbQoJcGlwZSB0byBmaWxl LCB0cnkgdG8gbG9jayB0aGUgcGlwZS4gIERlYWRsb2NrLgoKb24gMjAxNS8xMS8xMCBieSBBbCBW aXJvLAoKaHR0cDovL2xpc3RzLm9wZW53YWxsLm5ldC9uZXRkZXYvMjAxNS8xMS8xMC80CgpUaGUg cGF0Y2ggZml4ZXMgdGhpcyBieSByZW1vdmluZyB0aGUga2Vybl9wYXRoX2NyZWF0ZSByZWxhdGVk IGNvZGUgZnJvbQp1bml4X21rbm9kIGFuZCBleGVjdXRpbmcgaXQgYXMgcGFydCBvZiB1bml4X2Jp bmQgcHJpb3IgYWNxdWlyaW5nIHRoZQpyZWFkbG9jayBvZiB0aGUgc29ja2V0IGluIHF1ZXN0aW9u LiBUaGlzIG1lYW5zIHRoYXQgQSAoYXMgdXNlZCBhYm92ZSkKd2lsbCBzYl9zdGFydF93cml0ZSBv biAvbW50IGJlZm9yZSBpdCBhY3F1aXJlcyB0aGUgcmVhZGxvY2ssIGhlbmNlLCBpdAp3b24ndCBp bmRpcmVjdGx5IGJsb2NrIEIgd2hpY2ggZmlyc3QgZGlkIGEgc2Jfc3RhcnRfd3JpdGUgYW5kIHRo ZW4Kd2FpdGVkIGZvciBhIHRocmVhZCB0cnlpbmcgdG8gYWNxdWlyZSB0aGUgcmVhZGxvY2suIENv bnNlcXVlbnRseSwgQQpiZWluZyBibG9ja2VkIGJ5IEMgd2FpdGluZyBmb3IgQiB3b24ndCBjYXVz ZSBhIGRlYWRsb2NrIGFueW1vcmUKKGVmZmVjdGl2ZWx5LCBib3RoIEEgYW5kIEIgYWNxdWlyZSB0 d28gbG9ja3MgaW4gb3Bwb3NpdGUgb3JkZXIgaW4gdGhlCnNpdHVhdGlvbiBkZXNjcmliZWQgYWJv dmUpLgoKRG1pdHJ5IFZ5dWtvdig8ZHZ5dWtvdkBnb29nbGUuY29tPikgdGVzdGVkIHRoZSBvcmln aW5hbCBwYXRjaC4KClNpZ25lZC1vZmYtYnk6IFJhaW5lciBXZWlrdXNhdCA8cndlaWt1c2F0QG1v YmlsZWFjdGl2ZWRlZmVuc2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3VuaXgvYWZfdW5peC5jIHwgNjYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0 L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IDBmYzZkYmEuLjBlN2Jm MmIgMTAwNjQ0Ci0tLSBhL25ldC91bml4L2FmX3VuaXguYworKysgYi9uZXQvdW5peC9hZl91bml4 LmMKQEAgLTk1MiwzMiArOTUyLDIwIEBAIGZhaWw6CiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRp YyBpbnQgdW5peF9ta25vZChjb25zdCBjaGFyICpzdW5fcGF0aCwgdW1vZGVfdCBtb2RlLCBzdHJ1 Y3QgcGF0aCAqcmVzKQorc3RhdGljIGludCB1bml4X21rbm9kKHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgc3RydWN0IHBhdGggKnBhdGgsIHVtb2RlX3QgbW9kZSwKKwkJICAgICAgc3RydWN0IHBhdGgg KnJlcykKIHsKLQlzdHJ1Y3QgZGVudHJ5ICpkZW50cnk7Ci0Jc3RydWN0IHBhdGggcGF0aDsKLQlp bnQgZXJyID0gMDsKLQkvKgotCSAqIEdldCB0aGUgcGFyZW50IGRpcmVjdG9yeSwgY2FsY3VsYXRl IHRoZSBoYXNoIGZvciBsYXN0Ci0JICogY29tcG9uZW50LgotCSAqLwotCWRlbnRyeSA9IGtlcm5f cGF0aF9jcmVhdGUoQVRfRkRDV0QsIHN1bl9wYXRoLCAmcGF0aCwgMCk7Ci0JZXJyID0gUFRSX0VS UihkZW50cnkpOwotCWlmIChJU19FUlIoZGVudHJ5KSkKLQkJcmV0dXJuIGVycjsKKwlpbnQgZXJy OwogCi0JLyoKLQkgKiBBbGwgcmlnaHQsIGxldCdzIGNyZWF0ZSBpdC4KLQkgKi8KLQllcnIgPSBz ZWN1cml0eV9wYXRoX21rbm9kKCZwYXRoLCBkZW50cnksIG1vZGUsIDApOworCWVyciA9IHNlY3Vy aXR5X3BhdGhfbWtub2QocGF0aCwgZGVudHJ5LCBtb2RlLCAwKTsKIAlpZiAoIWVycikgewotCQll cnIgPSB2ZnNfbWtub2QoZF9pbm9kZShwYXRoLmRlbnRyeSksIGRlbnRyeSwgbW9kZSwgMCk7CisJ CWVyciA9IHZmc19ta25vZChkX2lub2RlKHBhdGgtPmRlbnRyeSksIGRlbnRyeSwgbW9kZSwgMCk7 CiAJCWlmICghZXJyKSB7Ci0JCQlyZXMtPm1udCA9IG1udGdldChwYXRoLm1udCk7CisJCQlyZXMt Pm1udCA9IG1udGdldChwYXRoLT5tbnQpOwogCQkJcmVzLT5kZW50cnkgPSBkZ2V0KGRlbnRyeSk7 CiAJCX0KIAl9Ci0JZG9uZV9wYXRoX2NyZWF0ZSgmcGF0aCwgZGVudHJ5KTsKKwogCXJldHVybiBl cnI7CiB9CiAKQEAgLTk4OCwxMCArOTc2LDEyIEBAIHN0YXRpYyBpbnQgdW5peF9iaW5kKHN0cnVj dCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsIGludCBhZGRyX2xlbikKIAlz dHJ1Y3QgdW5peF9zb2NrICp1ID0gdW5peF9zayhzayk7CiAJc3RydWN0IHNvY2thZGRyX3VuICpz dW5hZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biAqKXVhZGRyOwogCWNoYXIgKnN1bl9wYXRoID0g c3VuYWRkci0+c3VuX3BhdGg7Ci0JaW50IGVycjsKKwlpbnQgZXJyLCBuYW1lX2VycjsKIAl1bnNp Z25lZCBpbnQgaGFzaDsKIAlzdHJ1Y3QgdW5peF9hZGRyZXNzICphZGRyOwogCXN0cnVjdCBobGlz dF9oZWFkICpsaXN0OworCXN0cnVjdCBwYXRoIHBhdGg7CisJc3RydWN0IGRlbnRyeSAqZGVudHJ5 OwogCiAJZXJyID0gLUVJTlZBTDsKIAlpZiAoc3VuYWRkci0+c3VuX2ZhbWlseSAhPSBBRl9VTklY KQpAQCAtMTAwNywxNCArOTk3LDM0IEBAIHN0YXRpYyBpbnQgdW5peF9iaW5kKHN0cnVjdCBzb2Nr ZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsIGludCBhZGRyX2xlbikKIAkJZ290byBv dXQ7CiAJYWRkcl9sZW4gPSBlcnI7CiAKKwluYW1lX2VyciA9IDA7CisJZGVudHJ5ID0gTlVMTDsK KwlpZiAoc3VuX3BhdGhbMF0pIHsKKwkJLyogR2V0IHRoZSBwYXJlbnQgZGlyZWN0b3J5LCBjYWxj dWxhdGUgdGhlIGhhc2ggZm9yIGxhc3QKKwkJICogY29tcG9uZW50LgorCQkgKi8KKwkJZGVudHJ5 ID0ga2Vybl9wYXRoX2NyZWF0ZShBVF9GRENXRCwgc3VuX3BhdGgsICZwYXRoLCAwKTsKKworCQlp ZiAoSVNfRVJSKGRlbnRyeSkpIHsKKwkJCS8qIGRlbGF5IHJlcG9ydCB1bnRpbCBhZnRlciAnYWxy ZWFkeSBib3VuZCcgY2hlY2sgKi8KKwkJCW5hbWVfZXJyID0gUFRSX0VSUihkZW50cnkpOworCQkJ ZGVudHJ5ID0gTlVMTDsKKwkJfQorCX0KKwogCWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmdS0+cmVhZGxvY2spOwogCWlmIChlcnIpCi0JCWdvdG8gb3V0OworCQlnb3RvIG91dF9wYXRo OwogCiAJZXJyID0gLUVJTlZBTDsKIAlpZiAodS0+YWRkcikKIAkJZ290byBvdXRfdXA7CiAKKwlp ZiAobmFtZV9lcnIpIHsKKwkJZXJyID0gbmFtZV9lcnIgPT0gLUVFWElTVCA/IC1FQUREUklOVVNF IDogbmFtZV9lcnI7CisJCWdvdG8gb3V0X3VwOworCX0KKwogCWVyciA9IC1FTk9NRU07CiAJYWRk ciA9IGttYWxsb2Moc2l6ZW9mKCphZGRyKSthZGRyX2xlbiwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFh ZGRyKQpAQCAtMTAyNSwxMSArMTAzNSwxMSBAQCBzdGF0aWMgaW50IHVuaXhfYmluZChzdHJ1Y3Qg c29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLCBpbnQgYWRkcl9sZW4pCiAJYWRk ci0+aGFzaCA9IGhhc2ggXiBzay0+c2tfdHlwZTsKIAlhdG9taWNfc2V0KCZhZGRyLT5yZWZjbnQs IDEpOwogCi0JaWYgKHN1bl9wYXRoWzBdKSB7Ci0JCXN0cnVjdCBwYXRoIHBhdGg7CisJaWYgKGRl bnRyeSkgeworCQlzdHJ1Y3QgcGF0aCB1X3BhdGg7CiAJCXVtb2RlX3QgbW9kZSA9IFNfSUZTT0NL IHwKIAkJICAgICAgIChTT0NLX0lOT0RFKHNvY2spLT5pX21vZGUgJiB+Y3VycmVudF91bWFzaygp KTsKLQkJZXJyID0gdW5peF9ta25vZChzdW5fcGF0aCwgbW9kZSwgJnBhdGgpOworCQllcnIgPSB1 bml4X21rbm9kKGRlbnRyeSwgJnBhdGgsIG1vZGUsICZ1X3BhdGgpOwogCQlpZiAoZXJyKSB7CiAJ CQlpZiAoZXJyID09IC1FRVhJU1QpCiAJCQkJZXJyID0gLUVBRERSSU5VU0U7CkBAIC0xMDM3LDkg KzEwNDcsOSBAQCBzdGF0aWMgaW50IHVuaXhfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1 Y3Qgc29ja2FkZHIgKnVhZGRyLCBpbnQgYWRkcl9sZW4pCiAJCQlnb3RvIG91dF91cDsKIAkJfQog CQlhZGRyLT5oYXNoID0gVU5JWF9IQVNIX1NJWkU7Ci0JCWhhc2ggPSBkX2JhY2tpbmdfaW5vZGUo cGF0aC5kZW50cnkpLT5pX2lubyAmIChVTklYX0hBU0hfU0laRS0xKTsKKwkJaGFzaCA9IGRfYmFj a2luZ19pbm9kZShkZW50cnkpLT5pX2lubyAmIChVTklYX0hBU0hfU0laRSAtIDEpOwogCQlzcGlu X2xvY2soJnVuaXhfdGFibGVfbG9jayk7Ci0JCXUtPnBhdGggPSBwYXRoOworCQl1LT5wYXRoID0g dV9wYXRoOwogCQlsaXN0ID0gJnVuaXhfc29ja2V0X3RhYmxlW2hhc2hdOwogCX0gZWxzZSB7CiAJ CXNwaW5fbG9jaygmdW5peF90YWJsZV9sb2NrKTsKQEAgLTEwNjIsNiArMTA3MiwxMCBAQCBvdXRf dW5sb2NrOgogCXNwaW5fdW5sb2NrKCZ1bml4X3RhYmxlX2xvY2spOwogb3V0X3VwOgogCW11dGV4 X3VubG9jaygmdS0+cmVhZGxvY2spOworb3V0X3BhdGg6CisJaWYgKGRlbnRyeSkKKwkJZG9uZV9w YXRoX2NyZWF0ZSgmcGF0aCwgZGVudHJ5KTsKKwogb3V0OgogCXJldHVybiBlcnI7CiB9Ci0tIAoy LjEuMAoKCkZyb20gNWJkMzM1YWQ0MzI1MDI5MjYyYzMyMTQzNmZkODNmOWQyZjkzMTBmNiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogd2lsbHkgdGFycmVhdSA8d0Axd3QuZXU+CkRhdGU6 IFN1biwgMTAgSmFuIDIwMTYgMDc6NTQ6NTYgKzAxMDAKU3ViamVjdDogW1BBVENIIDA5LzQwXSB1 bml4OiBwcm9wZXJseSBhY2NvdW50IGZvciBGRHMgcGFzc2VkIG92ZXIgdW5peCBzb2NrZXRzCgpb IFVwc3RyZWFtIGNvbW1pdCA3MTJmNGFhZDQwNmJiMWVkNjdmM2Y5OGQwNGMwNDQxOTFmMGZmNTkz IF0KCkl0IGlzIHBvc3NpYmxlIGZvciBhIHByb2Nlc3MgdG8gYWxsb2NhdGUgYW5kIGFjY3VtdWxh dGUgZmFyIG1vcmUgRkRzIHRoYW4KdGhlIHByb2Nlc3MnIGxpbWl0IGJ5IHNlbmRpbmcgdGhlbSBv dmVyIGEgdW5peCBzb2NrZXQgdGhlbiBjbG9zaW5nIHRoZW0KdG8ga2VlcCB0aGUgcHJvY2Vzcycg ZmQgY291bnQgbG93LgoKVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIHRoaXMgcHJvYmxlbSBieSBrZWVw aW5nIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgRkRzCmluIGZsaWdodCBwZXIgdXNlciBhbmQgcHJl dmVudGluZyBub24tcHJpdmlsZWdlZCBwcm9jZXNzZXMgZnJvbSBoYXZpbmcKbW9yZSBGRHMgaW4g ZmxpZ2h0IHRoYW4gdGhlaXIgY29uZmlndXJlZCBGRCBsaW1pdC4KClJlcG9ydGVkLWJ5OiBzb2Nr ZXRwYWlyQGdtYWlsLmNvbQpSZXBvcnRlZC1ieTogVGV0c3VvIEhhbmRhIDxwZW5ndWluLWtlcm5l bEBJLWxvdmUuU0FLVVJBLm5lLmpwPgpNaXRpZ2F0ZXM6IENWRS0yMDEzLTQzMTIgKExpbnV4IDIu MCspClN1Z2dlc3RlZC1ieTogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRp b24ub3JnPgpBY2tlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1 a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1 ZGUvbGludXgvc2NoZWQuaCB8ICAxICsKIG5ldC91bml4L2FmX3VuaXguYyAgICB8IDI0ICsrKysr KysrKysrKysrKysrKysrLS0tLQogbmV0L3VuaXgvZ2FyYmFnZS5jICAgIHwgMTMgKysrKysrKyst LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQu aAppbmRleCBiN2I5NTAxLi5mNDc3ZTg3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVk LmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC04MzAsNiArODMwLDcgQEAgc3RydWN0 IHVzZXJfc3RydWN0IHsKIAl1bnNpZ25lZCBsb25nIG1xX2J5dGVzOwkvKiBIb3cgbWFueSBieXRl cyBjYW4gYmUgYWxsb2NhdGVkIHRvIG1xdWV1ZT8gKi8KICNlbmRpZgogCXVuc2lnbmVkIGxvbmcg bG9ja2VkX3NobTsgLyogSG93IG1hbnkgcGFnZXMgb2YgbWxvY2tlZCBzaG0gPyAqLworCXVuc2ln bmVkIGxvbmcgdW5peF9pbmZsaWdodDsJLyogSG93IG1hbnkgZmlsZXMgaW4gZmxpZ2h0IGluIHVu aXggc29ja2V0cyAqLwogCiAjaWZkZWYgQ09ORklHX0tFWVMKIAlzdHJ1Y3Qga2V5ICp1aWRfa2V5 cmluZzsJLyogVUlEIHNwZWNpZmljIGtleXJpbmcgKi8KZGlmZiAtLWdpdCBhL25ldC91bml4L2Fm X3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCAwZTdiZjJiLi43OTI2ZGUxIDEwMDY0 NAotLS0gYS9uZXQvdW5peC9hZl91bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBAIC0x NTEyLDYgKzE1MTIsMjEgQEAgc3RhdGljIHZvaWQgdW5peF9kZXN0cnVjdF9zY20oc3RydWN0IHNr X2J1ZmYgKnNrYikKIAlzb2NrX3dmcmVlKHNrYik7CiB9CiAKKy8qCisgKiBUaGUgInVzZXItPnVu aXhfaW5mbGlnaHQiIHZhcmlhYmxlIGlzIHByb3RlY3RlZCBieSB0aGUgZ2FyYmFnZQorICogY29s bGVjdGlvbiBsb2NrLCBhbmQgd2UganVzdCByZWFkIGl0IGxvY2tsZXNzbHkgaGVyZS4gSWYgeW91 IGdvCisgKiBvdmVyIHRoZSBsaW1pdCwgdGhlcmUgbWlnaHQgYmUgYSB0aW55IHJhY2UgaW4gYWN0 dWFsbHkgbm90aWNpbmcKKyAqIGl0IGFjcm9zcyB0aHJlYWRzLiBUb3VnaC4KKyAqLworc3RhdGlj IGlubGluZSBib29sIHRvb19tYW55X3VuaXhfZmRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKK3sK KwlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBjdXJyZW50X3VzZXIoKTsKKworCWlmICh1bmxp a2VseSh1c2VyLT51bml4X2luZmxpZ2h0ID4gdGFza19ybGltaXQocCwgUkxJTUlUX05PRklMRSkp KQorCQlyZXR1cm4gIWNhcGFibGUoQ0FQX1NZU19SRVNPVVJDRSkgJiYgIWNhcGFibGUoQ0FQX1NZ U19BRE1JTik7CisJcmV0dXJuIGZhbHNlOworfQorCiAjZGVmaW5lIE1BWF9SRUNVUlNJT05fTEVW RUwgNAogCiBzdGF0aWMgaW50IHVuaXhfYXR0YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2Nt LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQpAQCAtMTUyMCw2ICsxNTM1LDkgQEAgc3RhdGljIGludCB1 bml4X2F0dGFjaF9mZHMoc3RydWN0IHNjbV9jb29raWUgKnNjbSwgc3RydWN0IHNrX2J1ZmYgKnNr YikKIAl1bnNpZ25lZCBjaGFyIG1heF9sZXZlbCA9IDA7CiAJaW50IHVuaXhfc29ja19jb3VudCA9 IDA7CiAKKwlpZiAodG9vX21hbnlfdW5peF9mZHMoY3VycmVudCkpCisJCXJldHVybiAtRVRPT01B TllSRUZTOworCiAJZm9yIChpID0gc2NtLT5mcC0+Y291bnQgLSAxOyBpID49IDA7IGktLSkgewog CQlzdHJ1Y3Qgc29jayAqc2sgPSB1bml4X2dldF9zb2NrZXQoc2NtLT5mcC0+ZnBbaV0pOwogCkBA IC0xNTQxLDEwICsxNTU5LDggQEAgc3RhdGljIGludCB1bml4X2F0dGFjaF9mZHMoc3RydWN0IHNj bV9jb29raWUgKnNjbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlpZiAoIVVOSVhDQihza2IpLmZw KQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWlmICh1bml4X3NvY2tfY291bnQpIHsKLQkJZm9yIChp ID0gc2NtLT5mcC0+Y291bnQgLSAxOyBpID49IDA7IGktLSkKLQkJCXVuaXhfaW5mbGlnaHQoc2Nt LT5mcC0+ZnBbaV0pOwotCX0KKwlmb3IgKGkgPSBzY20tPmZwLT5jb3VudCAtIDE7IGkgPj0gMDsg aS0tKQorCQl1bml4X2luZmxpZ2h0KHNjbS0+ZnAtPmZwW2ldKTsKIAlyZXR1cm4gbWF4X2xldmVs OwogfQogCmRpZmYgLS1naXQgYS9uZXQvdW5peC9nYXJiYWdlLmMgYi9uZXQvdW5peC9nYXJiYWdl LmMKaW5kZXggYTczYTIyNi4uOGZjZGMyMiAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvZ2FyYmFnZS5j CisrKyBiL25ldC91bml4L2dhcmJhZ2UuYwpAQCAtMTIwLDExICsxMjAsMTEgQEAgdm9pZCB1bml4 X2luZmxpZ2h0KHN0cnVjdCBmaWxlICpmcCkKIHsKIAlzdHJ1Y3Qgc29jayAqcyA9IHVuaXhfZ2V0 X3NvY2tldChmcCk7CiAKKwlzcGluX2xvY2soJnVuaXhfZ2NfbG9jayk7CisKIAlpZiAocykgewog CQlzdHJ1Y3QgdW5peF9zb2NrICp1ID0gdW5peF9zayhzKTsKIAotCQlzcGluX2xvY2soJnVuaXhf Z2NfbG9jayk7Ci0KIAkJaWYgKGF0b21pY19sb25nX2luY19yZXR1cm4oJnUtPmluZmxpZ2h0KSA9 PSAxKSB7CiAJCQlCVUdfT04oIWxpc3RfZW1wdHkoJnUtPmxpbmspKTsKIAkJCWxpc3RfYWRkX3Rh aWwoJnUtPmxpbmssICZnY19pbmZsaWdodF9saXN0KTsKQEAgLTEzMiwyNSArMTMyLDI4IEBAIHZv aWQgdW5peF9pbmZsaWdodChzdHJ1Y3QgZmlsZSAqZnApCiAJCQlCVUdfT04obGlzdF9lbXB0eSgm dS0+bGluaykpOwogCQl9CiAJCXVuaXhfdG90X2luZmxpZ2h0Kys7Ci0JCXNwaW5fdW5sb2NrKCZ1 bml4X2djX2xvY2spOwogCX0KKwlmcC0+Zl9jcmVkLT51c2VyLT51bml4X2luZmxpZ2h0Kys7CisJ c3Bpbl91bmxvY2soJnVuaXhfZ2NfbG9jayk7CiB9CiAKIHZvaWQgdW5peF9ub3RpbmZsaWdodChz dHJ1Y3QgZmlsZSAqZnApCiB7CiAJc3RydWN0IHNvY2sgKnMgPSB1bml4X2dldF9zb2NrZXQoZnAp OwogCisJc3Bpbl9sb2NrKCZ1bml4X2djX2xvY2spOworCiAJaWYgKHMpIHsKIAkJc3RydWN0IHVu aXhfc29jayAqdSA9IHVuaXhfc2socyk7CiAKLQkJc3Bpbl9sb2NrKCZ1bml4X2djX2xvY2spOwog CQlCVUdfT04obGlzdF9lbXB0eSgmdS0+bGluaykpOwogCiAJCWlmIChhdG9taWNfbG9uZ19kZWNf YW5kX3Rlc3QoJnUtPmluZmxpZ2h0KSkKIAkJCWxpc3RfZGVsX2luaXQoJnUtPmxpbmspOwogCQl1 bml4X3RvdF9pbmZsaWdodC0tOwotCQlzcGluX3VubG9jaygmdW5peF9nY19sb2NrKTsKIAl9CisJ ZnAtPmZfY3JlZC0+dXNlci0+dW5peF9pbmZsaWdodC0tOworCXNwaW5fdW5sb2NrKCZ1bml4X2dj X2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBzY2FuX2luZmxpZ2h0KHN0cnVjdCBzb2NrICp4LCB2 b2lkICgqZnVuYykoc3RydWN0IHVuaXhfc29jayAqKSwKLS0gCjIuMS4wCgoKRnJvbSBjOWRhMzZl N2FjMzU5ODdiNGZlMTUzYWQ0NzNhMTg2ZDFmYjUzZWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+ CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMDo0NjowMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTAv NDBdIGJyaWRnZTogT25seSBjYWxsIC9zYmluL2JyaWRnZS1zdHAgZm9yIHRoZSBpbml0aWFsCiBu ZXR3b3JrIG5hbWVzcGFjZQoKWyBVcHN0cmVhbSBjb21taXQgZmY2MjE5ODU1M2U0M2NkZmZhOWQ1 MzlmNjE2NWQzZTgzZjhhNDJiYyBdCgpbSSBzdG9sZSB0aGlzIHBhdGNoIGZyb20gRXJpYyBCaWVk ZXJtYW4uIEhlIHdyb3RlOl0KCj4gVGhlcmUgaXMgbm8gZGVmaW5lZCBtZWNoYW5pc20gdG8gcGFz cyBuZXR3b3JrIG5hbWVzcGFjZSBpbmZvcm1hdGlvbgo+IGludG8gL3NiaW4vYnJpZGdlLXN0cCB0 aGVyZWZvcmUgZG9uJ3QgZXZlbiB0cnkgdG8gaW52b2tlIGl0IGV4Y2VwdAo+IGZvciBicmlkZ2Ug ZGV2aWNlcyBpbiB0aGUgaW5pdGlhbCBuZXR3b3JrIG5hbWVzcGFjZS4KPgo+IEl0IGlzIHBvc3Np YmxlIGZvciB1bnByaXZpbGVnZWQgdXNlcnMgdG8gY2F1c2UgL3NiaW4vYnJpZGdlLXN0cCB0byBi ZQo+IGludm9rZWQgZm9yIGFueSBuZXR3b3JrIGRldmljZSBuYW1lIHdoaWNoIGlmIC9zYmluL2Jy aWRnZS1zdHAgZG9lcyBub3QKPiBndWFyZCBhZ2FpbnN0IHVucmVhc29uYWJsZSBhcmd1bWVudHMg b3IgYmVpbmcgaW52b2tlZCB0d2ljZSBvbiB0aGUKPiBzYW1lIG5ldHdvcmsgZGV2aWNlIGNvdWxk IGNhdXNlIHByb2JsZW1zLgoKW0hhbm5lczogY2hhbmdlZCBwYXRjaCB1c2luZyBuZXRuc19lcV0K CkNjOiBFcmljIFcuIEJpZWRlcm1hbiA8ZWJpZWRlcm1AeG1pc3Npb24uY29tPgpTaWduZWQtb2Zm LWJ5OiBFcmljIFcuIEJpZWRlcm1hbiA8ZWJpZWRlcm1AeG1pc3Npb24uY29tPgpTaWduZWQtb2Zm LWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBu ZXQvYnJpZGdlL2JyX3N0cF9pZi5jIHwgNSArKysrLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfc3RwX2lm LmMgYi9uZXQvYnJpZGdlL2JyX3N0cF9pZi5jCmluZGV4IDRjYTQ0OWEuLjQ5ZDhkMjggMTAwNjQ0 Ci0tLSBhL25ldC9icmlkZ2UvYnJfc3RwX2lmLmMKKysrIGIvbmV0L2JyaWRnZS9icl9zdHBfaWYu YwpAQCAtMTMwLDcgKzEzMCwxMCBAQCBzdGF0aWMgdm9pZCBicl9zdHBfc3RhcnQoc3RydWN0IG5l dF9icmlkZ2UgKmJyKQogCWNoYXIgKmVudnBbXSA9IHsgTlVMTCB9OwogCXN0cnVjdCBuZXRfYnJp ZGdlX3BvcnQgKnA7CiAKLQlyID0gY2FsbF91c2VybW9kZWhlbHBlcihCUl9TVFBfUFJPRywgYXJn diwgZW52cCwgVU1IX1dBSVRfUFJPQyk7CisJaWYgKG5ldF9lcShkZXZfbmV0KGJyLT5kZXYpLCAm aW5pdF9uZXQpKQorCQlyID0gY2FsbF91c2VybW9kZWhlbHBlcihCUl9TVFBfUFJPRywgYXJndiwg ZW52cCwgVU1IX1dBSVRfUFJPQyk7CisJZWxzZQorCQlyID0gLUVOT0VOVDsKIAogCXNwaW5fbG9j a19iaCgmYnItPmxvY2spOwogCi0tIAoyLjEuMAoKCkZyb20gYjAyNGI2YWQ2NTI1MTRmZTJiYWY3 MTY2ODYzM2IxN2FhZGE1ZWJmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUmFiaW4g VmluY2VudCA8cmFiaW5AcmFiLmluPgpEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMTY6MjM6MDcgKzAx MDAKU3ViamVjdDogW1BBVENIIDExLzQwXSBuZXQ6IGZpbHRlcjogbWFrZSBKSVRzIHplcm8gQSBm b3IgU0tGX0FEX0FMVV9YT1JfWAoKWyBVcHN0cmVhbSBjb21taXQgNTU3OTVlZjU0NjkyOTBmODlm MDRlMTJlNjYyZGVkNjA0OTA5ZTQ2MiBdCgpUaGUgU0tGX0FEX0FMVV9YT1JfWCBhbmNpbGxhcnkg aXMgbm90IGxpa2UgdGhlIG90aGVyIGFuY2lsbGFyeSBkYXRhCmluc3RydWN0aW9ucyBzaW5jZSBp dCBYT1JzIEEgd2l0aCBYIHdoaWxlIGFsbCB0aGUgb3RoZXJzIHJlcGxhY2UgQSB3aXRoCnNvbWUg bG9hZGVkIHZhbHVlLiAgQWxsIHRoZSBCUEYgSklUcyBmYWlsIHRvIGNsZWFyIEEgaWYgdGhpcyBp cyB1c2VkIGFzCnRoZSBmaXJzdCBpbnN0cnVjdGlvbiBpbiBhIGZpbHRlci4gIFRoaXMgd2FzIGZv dW5kIHVzaW5nIGFtZXJpY2FuIGZ1enp5CmxvcC4KCkFkZCBhIGhlbHBlciB0byBkZXRlcm1pbmUg aWYgQSBuZWVkcyB0byBiZSBjbGVhcmVkIGdpdmVuIHRoZSBmaXJzdAppbnN0cnVjdGlvbiBpbiBh IGZpbHRlciwgYW5kIHVzZSB0aGlzIGluIHRoZSBKSVRzLiAgRXhjZXB0IGZvciBBUk0sIHRoZQpy ZXN0IGhhdmUgb25seSBiZWVuIGNvbXBpbGUtdGVzdGVkLgoKRml4ZXM6IDM0ODA1OTMxMzFlMCAo Im5ldDogZmlsdGVyOiBnZXQgcmlkIG9mIEJQRl9TXyogZW51bSIpClNpZ25lZC1vZmYtYnk6IFJh YmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KQWNrZWQtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFu aWVsQGlvZ2VhcmJveC5uZXQ+CkFja2VkLWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJu ZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+Ci0tLQogYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYyAgICAgICB8IDE2ICstLS0tLS0tLS0t LS0tLS0KIGFyY2gvbWlwcy9uZXQvYnBmX2ppdC5jICAgICAgICAgfCAxNiArLS0tLS0tLS0tLS0t LS0tCiBhcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jIHwgMTMgKystLS0tLS0tLS0tLQog YXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wLmMgICB8IDE3ICsrLS0tLS0tLS0tLS0tLS0tCiBp bmNsdWRlL2xpbnV4L2ZpbHRlci5oICAgICAgICAgIHwgMTkgKysrKysrKysrKysrKysrKysrKwog NSBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9hcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRf MzIuYwppbmRleCBiOGVmYjhjLi40ZDI1ZmQwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9uZXQvYnBm X2ppdF8zMi5jCisrKyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMKQEAgLTE4MiwxOSArMTgy LDYgQEAgc3RhdGljIGlubGluZSBpbnQgbWVtX3dvcmRzX3VzZWQoc3RydWN0IGppdF9jdHggKmN0 eCkKIAlyZXR1cm4gZmxzKGN0eC0+c2VlbiAmIFNFRU5fTUVNKTsKIH0KIAotc3RhdGljIGlubGlu ZSBib29sIGlzX2xvYWRfdG9fYSh1MTYgaW5zdCkKLXsKLQlzd2l0Y2ggKGluc3QpIHsKLQljYXNl IEJQRl9MRCB8IEJQRl9XIHwgQlBGX0xFTjoKLQljYXNlIEJQRl9MRCB8IEJQRl9XIHwgQlBGX0FC UzoKLQljYXNlIEJQRl9MRCB8IEJQRl9IIHwgQlBGX0FCUzoKLQljYXNlIEJQRl9MRCB8IEJQRl9C IHwgQlBGX0FCUzoKLQkJcmV0dXJuIHRydWU7Ci0JZGVmYXVsdDoKLQkJcmV0dXJuIGZhbHNlOwot CX0KLX0KLQogc3RhdGljIHZvaWQgaml0X2ZpbGxfaG9sZSh2b2lkICphcmVhLCB1bnNpZ25lZCBp bnQgc2l6ZSkKIHsKIAl1MzIgKnB0cjsKQEAgLTIwNiw3ICsxOTMsNiBAQCBzdGF0aWMgdm9pZCBq aXRfZmlsbF9ob2xlKHZvaWQgKmFyZWEsIHVuc2lnbmVkIGludCBzaXplKQogc3RhdGljIHZvaWQg YnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIHsKIAl1MTYgcmVnX3NldCA9IHNh dmVkX3JlZ3MoY3R4KTsKLQl1MTYgZmlyc3RfaW5zdCA9IGN0eC0+c2tmLT5pbnNuc1swXS5jb2Rl OwogCXUxNiBvZmY7CiAKICNpZmRlZiBDT05GSUdfRlJBTUVfUE9JTlRFUgpAQCAtMjM2LDcgKzIy Miw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJ CWVtaXQoQVJNX01PVl9JKHJfWCwgMCksIGN0eCk7CiAKIAkvKiBkbyBub3QgbGVhayBrZXJuZWwg ZGF0YSB0byB1c2Vyc3BhY2UgKi8KLQlpZiAoKGZpcnN0X2luc3QgIT0gKEJQRl9SRVQgfCBCUEZf SykpICYmICEoaXNfbG9hZF90b19hKGZpcnN0X2luc3QpKSkKKwlpZiAoYnBmX25lZWRzX2NsZWFy X2EoJmN0eC0+c2tmLT5pbnNuc1swXSkpCiAJCWVtaXQoQVJNX01PVl9JKHJfQSwgMCksIGN0eCk7 CiAKIAkvKiBzdGFjayBzcGFjZSBmb3IgdGhlIEJQRl9NRU0gd29yZHMgKi8KZGlmZiAtLWdpdCBh L2FyY2gvbWlwcy9uZXQvYnBmX2ppdC5jIGIvYXJjaC9taXBzL25ldC9icGZfaml0LmMKaW5kZXgg MGM0YTEzMy4uMjZlOTQ3ZCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL25ldC9icGZfaml0LmMKKysr IGIvYXJjaC9taXBzL25ldC9icGZfaml0LmMKQEAgLTUyMSwxOSArNTIxLDYgQEAgc3RhdGljIGlu bGluZSB1MTYgYWxpZ25fc3AodW5zaWduZWQgaW50IG51bSkKIAlyZXR1cm4gbnVtOwogfQogCi1z dGF0aWMgYm9vbCBpc19sb2FkX3RvX2EodTE2IGluc3QpCi17Ci0Jc3dpdGNoIChpbnN0KSB7Ci0J Y2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9MRU46Ci0JY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQ Rl9BQlM6Ci0JY2FzZSBCUEZfTEQgfCBCUEZfSCB8IEJQRl9BQlM6Ci0JY2FzZSBCUEZfTEQgfCBC UEZfQiB8IEJQRl9BQlM6Ci0JCXJldHVybiB0cnVlOwotCWRlZmF1bHQ6Ci0JCXJldHVybiBmYWxz ZTsKLQl9Ci19Ci0KIHN0YXRpYyB2b2lkIHNhdmVfYnBmX2ppdF9yZWdzKHN0cnVjdCBqaXRfY3R4 ICpjdHgsIHVuc2lnbmVkIG9mZnNldCkKIHsKIAlpbnQgaSA9IDAsIHJlYWxfb2ZmID0gMDsKQEAg LTYxNCw3ICs2MDEsNiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9zdGFja19kZXB0aChzdHJ1 Y3Qgaml0X2N0eCAqY3R4KQogCiBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0 X2N0eCAqY3R4KQogewotCXUxNiBmaXJzdF9pbnN0ID0gY3R4LT5za2YtPmluc25zWzBdLmNvZGU7 CiAJaW50IHNwX29mZjsKIAogCS8qIENhbGN1bGF0ZSB0aGUgdG90YWwgb2Zmc2V0IGZvciB0aGUg c3RhY2sgcG9pbnRlciAqLwpAQCAtNjQxLDcgKzYyNyw3IEBAIHN0YXRpYyB2b2lkIGJ1aWxkX3By b2xvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJCWVtaXRfaml0X3JlZ19tb3ZlKHJfWCwgcl96 ZXJvLCBjdHgpOwogCiAJLyogRG8gbm90IGxlYWsga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlICov Ci0JaWYgKChmaXJzdF9pbnN0ICE9IChCUEZfUkVUIHwgQlBGX0spKSAmJiAhKGlzX2xvYWRfdG9f YShmaXJzdF9pbnN0KSkpCisJaWYgKGJwZl9uZWVkc19jbGVhcl9hKCZjdHgtPnNrZi0+aW5zbnNb MF0pKQogCQllbWl0X2ppdF9yZWdfbW92ZShyX0EsIHJfemVybywgY3R4KTsKIH0KIApkaWZmIC0t Z2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQv YnBmX2ppdF9jb21wLmMKaW5kZXggMTdjZWExOC4uMjY0YzQ3MyAxMDA2NDQKLS0tIGEvYXJjaC9w b3dlcnBjL25ldC9icGZfaml0X2NvbXAuYworKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRf Y29tcC5jCkBAIC03OCwxOCArNzgsOSBAQCBzdGF0aWMgdm9pZCBicGZfaml0X2J1aWxkX3Byb2xv Z3VlKHN0cnVjdCBicGZfcHJvZyAqZnAsIHUzMiAqaW1hZ2UsCiAJCVBQQ19MSShyX1gsIDApOwog CX0KIAotCXN3aXRjaCAoZmlsdGVyWzBdLmNvZGUpIHsKLQljYXNlIEJQRl9SRVQgfCBCUEZfSzoK LQljYXNlIEJQRl9MRCB8IEJQRl9XIHwgQlBGX0xFTjoKLQljYXNlIEJQRl9MRCB8IEJQRl9XIHwg QlBGX0FCUzoKLQljYXNlIEJQRl9MRCB8IEJQRl9IIHwgQlBGX0FCUzoKLQljYXNlIEJQRl9MRCB8 IEJQRl9CIHwgQlBGX0FCUzoKLQkJLyogZmlyc3QgaW5zdHJ1Y3Rpb24gc2V0cyBBIHJlZ2lzdGVy IChvciBpcyBSRVQgJ2NvbnN0YW50JykgKi8KLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJLyogbWFr ZSBzdXJlIHdlIGRvbnQgbGVhayBrZXJuZWwgaW5mb3JtYXRpb24gdG8gdXNlciAqLworCS8qIG1h a2Ugc3VyZSB3ZSBkb250IGxlYWsga2VybmVsIGluZm9ybWF0aW9uIHRvIHVzZXIgKi8KKwlpZiAo YnBmX25lZWRzX2NsZWFyX2EoJmZpbHRlclswXSkpCiAJCVBQQ19MSShyX0EsIDApOwotCX0KIH0K IAogc3RhdGljIHZvaWQgYnBmX2ppdF9idWlsZF9lcGlsb2d1ZSh1MzIgKmltYWdlLCBzdHJ1Y3Qg Y29kZWdlbl9jb250ZXh0ICpjdHgpCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL25ldC9icGZfaml0 X2NvbXAuYyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGY4YjlmNzEuLjE3 ZTcxZDIgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcC5jCisrKyBiL2Fy Y2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC00MjAsMjIgKzQyMCw5IEBAIHZvaWQgYnBm X2ppdF9jb21waWxlKHN0cnVjdCBicGZfcHJvZyAqZnApCiAJCX0KIAkJZW1pdF9yZWdfbW92ZShP Nywgcl9zYXZlZF9PNyk7CiAKLQkJc3dpdGNoIChmaWx0ZXJbMF0uY29kZSkgewotCQljYXNlIEJQ Rl9SRVQgfCBCUEZfSzoKLQkJY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9MRU46Ci0JCWNhc2Ug QlBGX0xEIHwgQlBGX1cgfCBCUEZfQUJTOgotCQljYXNlIEJQRl9MRCB8IEJQRl9IIHwgQlBGX0FC UzoKLQkJY2FzZSBCUEZfTEQgfCBCUEZfQiB8IEJQRl9BQlM6Ci0JCQkvKiBUaGUgZmlyc3QgaW5z dHJ1Y3Rpb24gc2V0cyB0aGUgQSByZWdpc3RlciAob3IgaXMKLQkJCSAqIGEgIlJFVCAnY29uc3Rh bnQnIikKLQkJCSAqLwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQkvKiBNYWtlIHN1cmUgd2Ug ZG9udCBsZWFrIGtlcm5lbCBpbmZvcm1hdGlvbiB0byB0aGUKLQkJCSAqIHVzZXIuCi0JCQkgKi8K KwkJLyogTWFrZSBzdXJlIHdlIGRvbnQgbGVhayBrZXJuZWwgaW5mb3JtYXRpb24gdG8gdGhlIHVz ZXIuICovCisJCWlmIChicGZfbmVlZHNfY2xlYXJfYSgmZmlsdGVyWzBdKSkKIAkJCWVtaXRfY2xl YXIocl9BKTsgLyogQSA9IDAgKi8KLQkJfQogCiAJCWZvciAoaSA9IDA7IGkgPCBmbGVuOyBpKysp IHsKIAkJCXVuc2lnbmVkIGludCBLID0gZmlsdGVyW2ldLms7CmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaAppbmRleCBmYTJjYWI5Li5k NDJhNWI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCisrKyBiL2luY2x1ZGUv bGludXgvZmlsdGVyLmgKQEAgLTQ1OSw2ICs0NTksMjUgQEAgc3RhdGljIGlubGluZSB2b2lkIGJw Zl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQogCiAjZGVmaW5lIEJQRl9BTkMJCUJJVCgx NSkKIAorc3RhdGljIGlubGluZSBib29sIGJwZl9uZWVkc19jbGVhcl9hKGNvbnN0IHN0cnVjdCBz b2NrX2ZpbHRlciAqZmlyc3QpCit7CisJc3dpdGNoIChmaXJzdC0+Y29kZSkgeworCWNhc2UgQlBG X1JFVCB8IEJQRl9LOgorCWNhc2UgQlBGX0xEIHwgQlBGX1cgfCBCUEZfTEVOOgorCQlyZXR1cm4g ZmFsc2U7CisKKwljYXNlIEJQRl9MRCB8IEJQRl9XIHwgQlBGX0FCUzoKKwljYXNlIEJQRl9MRCB8 IEJQRl9IIHwgQlBGX0FCUzoKKwljYXNlIEJQRl9MRCB8IEJQRl9CIHwgQlBGX0FCUzoKKwkJaWYg KGZpcnN0LT5rID09IFNLRl9BRF9PRkYgKyBTS0ZfQURfQUxVX1hPUl9YKQorCQkJcmV0dXJuIHRy dWU7CisJCXJldHVybiBmYWxzZTsKKworCWRlZmF1bHQ6CisJCXJldHVybiB0cnVlOworCX0KK30K Kwogc3RhdGljIGlubGluZSB1MTYgYnBmX2FuY19oZWxwZXIoY29uc3Qgc3RydWN0IHNvY2tfZmls dGVyICpmdGVzdCkKIHsKIAlCVUdfT04oZnRlc3QtPmNvZGUgJiBCUEZfQU5DKTsKLS0gCjIuMS4w CgoKRnJvbSA1Zjc5OTRhOGI0ZDVkZDYyYTFmZjM4ZTljODQ5MWQwNjIwODhlNzkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIEZhc3RhYmVuZCA8am9obi5mYXN0YWJlbmRAZ21h aWwuY29tPgpEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMDk6MTE6MzYgLTA4MDAKU3ViamVjdDogW1BB VENIIDEyLzQwXSBuZXQ6IHNjaGVkOiBmaXggbWlzc2luZyBmcmVlIHBlciBjcHUgb24gcXN0YXRz CgpbIFVwc3RyZWFtIGNvbW1pdCA3M2MyMGE4YjcyNDUyNzMxMjVjZmU5MmM0YjQ2ZTZmZGI1Njhh ODAxIF0KCldoZW4gYSBxZGlzYyBpcyB1c2luZyBwZXIgY3B1IHN0YXRzIChjdXJyZW50bHkganVz dCB0aGUgaW5ncmVzcwpxZGlzYykgb25seSB0aGUgYnN0YXRzIGFyZSBiZWluZyBmcmVlZC4gVGhp cyBhbHNvIGZyZWUncyB0aGUgcXN0YXRzLgoKRml4ZXM6IGIwYWI2ZjkyNzUyYjlmOWQ4ICgibmV0 OiBzY2hlZDogZW5hYmxlIHBlciBjcHUgcXN0YXRzIikKU2lnbmVkLW9mZi1ieTogSm9obiBGYXN0 YWJlbmQgPGpvaG4uci5mYXN0YWJlbmRAaW50ZWwuY29tPgpBY2tlZC1ieTogRXJpYyBEdW1hemV0 IDxlZHVtYXpldEBnb29nbGUuY29tPgpBY2tlZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxA aW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZl bWxvZnQubmV0PgotLS0KIG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jIHwgNCArKystCiAxIGZpbGUg Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0 L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwppbmRleCBlODJh MWFkLi4xNmJjODNiIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYworKysgYi9u ZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwpAQCAtNjU4LDggKzY1OCwxMCBAQCBzdGF0aWMgdm9pZCBx ZGlzY19yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiB7CiAJc3RydWN0IFFkaXNjICpx ZGlzYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgUWRpc2MsIHJjdV9oZWFkKTsKIAotCWlm IChxZGlzY19pc19wZXJjcHVfc3RhdHMocWRpc2MpKQorCWlmIChxZGlzY19pc19wZXJjcHVfc3Rh dHMocWRpc2MpKSB7CiAJCWZyZWVfcGVyY3B1KHFkaXNjLT5jcHVfYnN0YXRzKTsKKwkJZnJlZV9w ZXJjcHUocWRpc2MtPmNwdV9xc3RhdHMpOworCX0KIAogCWtmcmVlKChjaGFyICopIHFkaXNjIC0g cWRpc2MtPnBhZGRlZCk7CiB9Ci0tIAoyLjEuMAoKCkZyb20gNzFhMjUwNGJmYTU0YTE1NzM2NWZi N2E5ZGE2YWQ0MGU5OGRhNmQzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRnJhbmNl c2NvIFJ1Z2dlcmkgPGZydWdnZXJpQGFyaXN0YW5ldHdvcmtzLmNvbT4KRGF0ZTogV2VkLCA2IEph biAyMDE2IDAwOjE4OjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMy80MF0gbmV0OiBwb3NzaWJs ZSB1c2UgYWZ0ZXIgZnJlZSBpbiBkc3RfcmVsZWFzZQoKWyBVcHN0cmVhbSBjb21taXQgMDdhNWQz ODQ1MzU5OTA1MmFmZjA4NzdiMTZiYjljMTU4NWYwODYwOSBdCgpkc3RfcmVsZWFzZSBzaG91bGQg bm90IGFjY2VzcyBkc3QtPmZsYWdzIGFmdGVyIGRlY3JlbWVudGluZwpfX3JlZmNudCB0byAwLiBU aGUgZHN0X2VudHJ5IG1heSBiZSBpbiBkc3RfYnVzeV9saXN0IGFuZApkc3RfZ2NfdGFzayBtYXkg ZHN0X2Rlc3Ryb3kgaXQgYmVmb3JlIGRzdF9yZWxlYXNlIGdldHMgYSBjaGFuY2UKdG8gYWNjZXNz IGRzdC0+ZmxhZ3MuCgpGaXhlczogZDY5YmJmODhjOGQwICgibmV0OiBmaXggYSByYWNlIGluIGRz dF9yZWxlYXNlKCkiKQpGaXhlczogMjdiNzVjOTVmMTBkICgibmV0OiBhdm9pZCBSQ1UgZm9yIE5P Q0FDSEUgZHN0IikKU2lnbmVkLW9mZi1ieTogRnJhbmNlc2NvIFJ1Z2dlcmkgPGZydWdnZXJpQGFy aXN0YS5jb20+CkFja2VkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBu ZXQvY29yZS9kc3QuYyB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZHN0LmMgYi9uZXQvY29yZS9kc3Qu YwppbmRleCBkNmE1YTBiLi44ODUyMDIxIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kc3QuYworKysg Yi9uZXQvY29yZS9kc3QuYwpAQCAtMzAxLDEyICszMDEsMTMgQEAgdm9pZCBkc3RfcmVsZWFzZShz dHJ1Y3QgZHN0X2VudHJ5ICpkc3QpCiB7CiAJaWYgKGRzdCkgewogCQlpbnQgbmV3cmVmY250Owor CQl1bnNpZ25lZCBzaG9ydCBub2NhY2hlID0gZHN0LT5mbGFncyAmIERTVF9OT0NBQ0hFOwogCiAJ CW5ld3JlZmNudCA9IGF0b21pY19kZWNfcmV0dXJuKCZkc3QtPl9fcmVmY250KTsKIAkJaWYgKHVu bGlrZWx5KG5ld3JlZmNudCA8IDApKQogCQkJbmV0X3dhcm5fcmF0ZWxpbWl0ZWQoIiVzOiBkc3Q6 JXAgcmVmY250OiVkXG4iLAogCQkJCQkgICAgIF9fZnVuY19fLCBkc3QsIG5ld3JlZmNudCk7Ci0J CWlmICghbmV3cmVmY250ICYmIHVubGlrZWx5KGRzdC0+ZmxhZ3MgJiBEU1RfTk9DQUNIRSkpCisJ CWlmICghbmV3cmVmY250ICYmIHVubGlrZWx5KG5vY2FjaGUpKQogCQkJY2FsbF9yY3UoJmRzdC0+ cmN1X2hlYWQsIGRzdF9kZXN0cm95X3JjdSk7CiAJfQogfQotLSAKMi4xLjAKCgpGcm9tIGZlOTRk MTNkOTQzYzI1MDFjZDYxYzdlMDYxY2IzZDU1Njg5ZTEyMjIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFl1Y2h1bmcgQ2hlbmcgPHljaGVuZ0Bnb29nbGUuY29tPgpEYXRlOiBXZWQsIDYg SmFuIDIwMTYgMTI6NDI6MzggLTA4MDAKU3ViamVjdDogW1BBVENIIDE0LzQwXSB0Y3A6IGZpeCB6 ZXJvIGN3bmQgaW4gdGNwX2N3bmRfcmVkdWN0aW9uCgpbIFVwc3RyZWFtIGNvbW1pdCA4YjhhMzIx ZmY3MmM3ODVlZDVlOGI0Y2Y2ZWRhMjBiMzVkNDI3MzkwIF0KClBhdGNoIDM3NTk4MjRkYTg3YiAo InRjcDogUFJSIHVzZXMgQ1JCIG1vZGUgYnkgZGVmYXVsdCBhbmQgU1MgbW9kZQpjb25kaXRpb25h bGx5IikgaW50cm9kdWNlZCBhIGJ1ZyB0aGF0IGN3bmQgbWF5IGJlY29tZSAwIHdoZW4gYm90aApp bmZsaWdodCBhbmQgc25kY250IGFyZSAwIChjd25kID0gaW5mbGlnaHQgKyBzbmRjbnQpLiBUaGlz IG1heSBsZWFkCnRvIGEgZGl2LWJ5LXplcm8gaWYgdGhlIGNvbm5lY3Rpb24gc3RhcnRzIGFub3Ro ZXIgY3duZCByZWR1Y3Rpb24KcGhhc2UgYnkgc2V0dGluZyB0cC0+cHJpb3JfY3duZCB0byB0aGUg Y3VycmVudCBjd25kICgwKSBpbgp0Y3BfaW5pdF9jd25kX3JlZHVjdGlvbigpLgoKVG8gcHJldmVu dCB0aGlzIHdlIHNraXAgUFJSIG9wZXJhdGlvbiB3aGVuIG5vdGhpbmcgaXMgYWNrZWQgb3IKc2Fj a2VkLiBUaGVuIGN3bmQgbXVzdCBiZSBwb3NpdGl2ZSBpbiBhbGwgY2FzZXMgYXMgbG9uZyBhcyBz c3RocmVzaAppcyBwb3NpdGl2ZToKCjEpIFRoZSBwcm9wb3J0aW9uYWwgcmVkdWN0aW9uIG1vZGUK ICAgaW5mbGlnaHQgPiBzc3RocmVzaCA+IDAKCjIpIFRoZSByZWR1Y3Rpb24gYm91bmQgbW9kZQog IGEpIGluZmxpZ2h0ID09IHNzdGhyZXNoID4gMAoKICBiKSBpbmZsaWdodCA8IHNzdGhyZXNoCiAg ICAgc25kY250ID4gMCBzaW5jZSBuZXdseV9hY2tlZF9zYWNrZWQgPiAwIGFuZCBpbmZsaWdodCA8 IHNzdGhyZXNoCgpUaGVyZWZvcmUgaW4gYWxsIGNhc2VzIGluZmxpZ2h0IGFuZCBzbmRjbnQgY2Fu IG5vdCBib3RoIGJlIDAuCldlIGNoZWNrIGludmFsaWQgdHAtPnByaW9yX2N3bmQgdG8gYXZvaWQg cG90ZW50aWFsIGRpdjAgYnVncy4KCkluIHJlYWxpdHkgdGhpcyBidWcgaXMgdHJpZ2dlcmVkIG9u bHkgd2l0aCBhIHNlcXVlbmNlIG9mIGxlc3MgY29tbW9uCmV2ZW50cy4gIEZvciBleGFtcGxlLCB0 aGUgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGluZyBhbiBFQ04tdHJpZ2dlcmVkCmN3bmQgcmVkdWN0 aW9uIHdpdGggYW4gaW5mbGlnaHQgMCwgdGhlbiBpdCByZWNlaXZlcyByZW9yZGVyZWQvb2xkCkFD S3Mgb3IgRFNBQ0tzIGZyb20gcHJpb3IgdHJhbnNtaXNzaW9uICh3aGljaCBhY2tzIG5vdGhpbmcp LiBPciB0aGUKY29ubmVjdGlvbiBpcyBpbiBmYXN0IHJlY292ZXJ5IHN0YWdlIHRoYXQgbWFya3Mg ZXZlcnl0aGluZyBsb3N0LApidXQgZmFpbHMgdG8gcmV0cmFuc21pdCBkdWUgdG8gbG9jYWwgaXNz dWVzLCB0aGVuIHJlY2VpdmVzIGRhdGEKcGFja2V0cyBmcm9tIG90aGVyIGVuZCB3aGljaCBhY2tz IG5vdGhpbmcuCgpGaXhlczogMzc1OTgyNGRhODdiICgidGNwOiBQUlIgdXNlcyBDUkIgbW9kZSBi eSBkZWZhdWx0IGFuZCBTUyBtb2RlIGNvbmRpdGlvbmFsbHkiKQpSZXBvcnRlZC1ieTogT2xla3Nh bmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFsZW5rby5uYW1lPgpTaWduZWQtb2ZmLWJ5OiBZ dWNodW5nIENoZW5nIDx5Y2hlbmdAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogTmVhbCBDYXJk d2VsbCA8bmNhcmR3ZWxsQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8 ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZl bUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF9pbnB1dC5jIHwgMyArKysKIDEgZmls ZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5w dXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCmluZGV4IDBhMmI2MWQuLjA2NGYxYTAgMTAwNjQ0 Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBA IC0yNTI1LDYgKzI1MjUsOSBAQCBzdGF0aWMgdm9pZCB0Y3BfY3duZF9yZWR1Y3Rpb24oc3RydWN0 IHNvY2sgKnNrLCBjb25zdCBpbnQgcHJpb3JfdW5zYWNrZWQsCiAJaW50IG5ld2x5X2Fja2VkX3Nh Y2tlZCA9IHByaW9yX3Vuc2Fja2VkIC0KIAkJCQkgKHRwLT5wYWNrZXRzX291dCAtIHRwLT5zYWNr ZWRfb3V0KTsKIAorCWlmIChuZXdseV9hY2tlZF9zYWNrZWQgPD0gMCB8fCBXQVJOX09OX09OQ0Uo IXRwLT5wcmlvcl9jd25kKSkKKwkJcmV0dXJuOworCiAJdHAtPnBycl9kZWxpdmVyZWQgKz0gbmV3 bHlfYWNrZWRfc2Fja2VkOwogCWlmIChkZWx0YSA8IDApIHsKIAkJdTY0IGRpdmlkZW5kID0gKHU2 NCl0cC0+c25kX3NzdGhyZXNoICogdHAtPnBycl9kZWxpdmVyZWQgKwotLSAKMi4xLjAKCgpGcm9t IDFjMTc3M2RiOTI2ZmI2NGQ3ODMzZDNhMTMwZjczOGYyZmZjOTZlMjEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IE5pY29sYXMgRGljaHRlbCA8bmljb2xhcy5kaWNodGVsQDZ3aW5kLmNv bT4KRGF0ZTogVGh1LCA3IEphbiAyMDE2IDExOjI2OjUzICswMTAwClN1YmplY3Q6IFtQQVRDSCAx NS80MF0gdnhsYW46IGZpeCB0ZXN0IHdoaWNoIGRldGVjdCBkdXBsaWNhdGUgdnhsYW4gaWZhY2UK ClsgVXBzdHJlYW0gY29tbWl0IDA3YjliMzdjMjI3Y2I4ZDg4ZDQ3OGI0YTljNTYzNGZlZTUxNGVk ZTEgXQoKV2hlbiBhIHZ4bGFuIGludGVyZmFjZSBpcyBjcmVhdGVkLCB0aGUgZHJpdmVyIGNoZWNr cyB0aGF0IHRoZXJlIGlzIG5vdAphbm90aGVyIHZ4bGFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1l IHByb3BlcnRpZXMuIFRvIGRvIHRoaXMsIGl0IGNoZWNrcwp0aGUgZXhpc3RpbmcgdnhsYW4gdWRw IHNvY2tldC4gU2luY2UgY29tbWl0IDFjNTFhOTE1OWRkZSwgdGhlIGNyZWF0aW9uIG9mCnRoZSB2 eGxhbiBzb2NrZXQgaXMgZG9uZSBvbmx5IHdoZW4gdGhlIGludGVyZmFjZSBpcyBzZXQgdXAsIHRo dXMgaXQgYnJlYWtzCnRoYXQgdGVzdC4KCkV4YW1wbGU6CiQgaXAgbCBhIHZ4bGFuMTAgdHlwZSB2 eGxhbiBpZCAxMCBncm91cCAyMzkuMC4wLjEwIGRldiBldGgwIGRzdHBvcnQgMAokIGlwIGwgYSB2 eGxhbjExIHR5cGUgdnhsYW4gaWQgMTAgZ3JvdXAgMjM5LjAuMC4xMCBkZXYgZXRoMCBkc3Rwb3J0 IDAKJCBpcCAtYnIgbCB8IGdyZXAgdnhsYW4KdnhsYW4xMCAgICAgICAgICBET1dOICAgICAgICAg ICBmMjo1NToxYzo2YTpmYjowMCA8QlJPQURDQVNULE1VTFRJQ0FTVD4KdnhsYW4xMSAgICAgICAg ICBET1dOICAgICAgICAgICA3YTpjYjpiOTozODo1OTowZCA8QlJPQURDQVNULE1VTFRJQ0FTVD4K Ckluc3RlYWQgb2YgY2hlY2tpbmcgc29ja2V0cywgbGV0J3MgbG9vcCBvdmVyIHRoZSB2eGxhbiBp ZmFjZSBsaXN0LgoKRml4ZXM6IDFjNTFhOTE1OWRkZSAoInZ4bGFuOiBmaXggcmFjZSBjYXVzZWQg YnkgZHJvcHBpbmcgcnRubF91bmxvY2siKQpSZXBvcnRlZC1ieTogVGhvbWFzIEZhaXZyZSA8dGhv bWFzLmZhaXZyZUA2d2luZC5jb20+ClNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRGljaHRlbCA8bmlj b2xhcy5kaWNodGVsQDZ3aW5kLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxk YXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0L3Z4bGFuLmMgfCAxMiArKysrKysr KystLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4uYyBiL2RyaXZlcnMvbmV0L3Z4bGFuLmMKaW5k ZXggYzE1ODdlYy4uNDBiNWY4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4uYworKysg Yi9kcml2ZXJzL25ldC92eGxhbi5jCkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBzdGF0aWMgaW50IHZ4 bGFuX2Rldl9jb25maWd1cmUoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKIAkJCSAgICAgICBzdHJ1Y3QgdnhsYW5fY29uZmlnICpjb25mKQogewogCXN0cnVjdCB2 eGxhbl9uZXQgKnZuID0gbmV0X2dlbmVyaWMoc3JjX25ldCwgdnhsYW5fbmV0X2lkKTsKLQlzdHJ1 Y3QgdnhsYW5fZGV2ICp2eGxhbiA9IG5ldGRldl9wcml2KGRldik7CisJc3RydWN0IHZ4bGFuX2Rl diAqdnhsYW4gPSBuZXRkZXZfcHJpdihkZXYpLCAqdG1wOwogCXN0cnVjdCB2eGxhbl9yZHN0ICpk c3QgPSAmdnhsYW4tPmRlZmF1bHRfZHN0OwogCWludCBlcnI7CiAJYm9vbCB1c2VfaXB2NiA9IGZh bHNlOwpAQCAtMjcyNSw5ICsyNzI1LDE1IEBAIHN0YXRpYyBpbnQgdnhsYW5fZGV2X2NvbmZpZ3Vy ZShzdHJ1Y3QgbmV0ICpzcmNfbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmICghdnhs YW4tPmNmZy5hZ2VfaW50ZXJ2YWwpCiAJCXZ4bGFuLT5jZmcuYWdlX2ludGVydmFsID0gRkRCX0FH RV9ERUZBVUxUOwogCi0JaWYgKHZ4bGFuX2ZpbmRfdm5pKHNyY19uZXQsIGNvbmYtPnZuaSwgdXNl X2lwdjYgPyBBRl9JTkVUNiA6IEFGX0lORVQsCi0JCQkgICB2eGxhbi0+Y2ZnLmRzdF9wb3J0LCB2 eGxhbi0+ZmxhZ3MpKQorCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmdm4tPnZ4bGFuX2xpc3Qs IG5leHQpIHsKKwkJaWYgKHRtcC0+Y2ZnLnZuaSA9PSBjb25mLT52bmkgJiYKKwkJICAgICh0bXAt PmRlZmF1bHRfZHN0LnJlbW90ZV9pcC5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYgfHwKKwkJICAg ICB0bXAtPmNmZy5zYWRkci5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpID09IHVzZV9pcHY2ICYm CisJCSAgICB0bXAtPmNmZy5kc3RfcG9ydCA9PSB2eGxhbi0+Y2ZnLmRzdF9wb3J0ICYmCisJCSAg ICAodG1wLT5mbGFncyAmIFZYTEFOX0ZfUkNWX0ZMQUdTKSA9PQorCQkgICAgKHZ4bGFuLT5mbGFn cyAmIFZYTEFOX0ZfUkNWX0ZMQUdTKSkKIAkJcmV0dXJuIC1FRVhJU1Q7CisJfQogCiAJZGV2LT5l dGh0b29sX29wcyA9ICZ2eGxhbl9ldGh0b29sX29wczsKIAotLSAKMi4xLjAKCgpGcm9tIGI2OWQ3 NjFmNjkwMDUxOGZiOTBkMjk0ODhmYWM4ZjVkYmRhY2U3MjIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFNhc2hhIExldmluIDxzYXNoYS5sZXZpbkBvcmFjbGUuY29tPgpEYXRlOiBUaHUs IDcgSmFuIDIwMTYgMTQ6NTI6NDMgLTA1MDAKU3ViamVjdDogW1BBVENIIDE2LzQwXSBuZXQ6IHNj dHA6IHByZXZlbnQgd3JpdGVzIHRvIGNvb2tpZV9obWFjX2FsZyBmcm9tCiBhY2Nlc3NpbmcgaW52 YWxpZCBtZW1vcnkKClsgVXBzdHJlYW0gY29tbWl0IDMyMGYxYTRhMTc1ZTdjZDVkM2YwMDZmOTJi NGQ0ZDNlMmNiYjdiYjUgXQoKcHJvY19kb3N0cmluZygpIG5lZWRzIGFuIGluaXRpYWxpemVkIGRl c3RpbmF0aW9uIHN0cmluZywgd2hpbGUgdGhlIG9uZQpwcm92aWRlZCBpbiBwcm9jX3NjdHBfZG9f aG1hY19hbGcoKSBjb250YWlucyBzdGFjayBnYXJiYWdlLgoKVGh1cywgd3JpdGluZyB0byBjb29r aWVfaG1hY19hbGcgd291bGQgc3RybGVuKCkgdGhhdCBnYXJiYWdlIGFuZCBlbmQgdXAKYWNjZXNz aW5nIGludmFsaWQgbWVtb3J5LgoKRml4ZXM6IDNjNjgxOThlNyAoInNjdHA6IE1ha2UgaG1hYyBh bGdvcml0aG0gc2VsZWN0aW9uIGZvciBjb29raWUgZ2VuZXJhdGlvbiBkeW5hbWljIikKU2lnbmVk LW9mZi1ieTogU2FzaGEgTGV2aW4gPHNhc2hhLmxldmluQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvc2N0cC9z eXNjdGwuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3N5c2N0bC5jIGIvbmV0L3NjdHAvc3lzY3RsLmMK aW5kZXggMjZkNTBjNS4uM2UwZmM1MSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc3lzY3RsLmMKKysr IGIvbmV0L3NjdHAvc3lzY3RsLmMKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGF0aWMgaW50IHByb2Nf c2N0cF9kb19obWFjX2FsZyhzdHJ1Y3QgY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSwKIAlzdHJ1 Y3QgY3RsX3RhYmxlIHRibDsKIAlib29sIGNoYW5nZWQgPSBmYWxzZTsKIAljaGFyICpub25lID0g Im5vbmUiOwotCWNoYXIgdG1wWzhdOworCWNoYXIgdG1wWzhdID0gezB9OwogCWludCByZXQ7CiAK IAltZW1zZXQoJnRibCwgMCwgc2l6ZW9mKHN0cnVjdCBjdGxfdGFibGUpKTsKLS0gCjIuMS4wCgoK RnJvbSAxODhiZmRiODk3ZjcwZTAxMDQ5MWIyZWE2N2VkZGEzMzQxNjJiMmNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRh dGU6IEZyaSwgOCBKYW4gMjAxNiAwOTozNTo1MSAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTcvNDBd IGlwdjY6IHRjcDogYWRkIHJjdSBsb2NraW5nIGluIHRjcF92Nl9zZW5kX3N5bmFjaygpCgpbIFVw c3RyZWFtIGNvbW1pdCAzZTQwMDZmMGI4NmE1YWU1ZWIwZTgyMTVmOWE5ZTFkYjI0NTA2OTc3IF0K CldoZW4gZmlyc3QgU1lOQUNLIGlzIHNlbnQsIHdlIGFscmVhZHkgaG9sZCByY3VfcmVhZF9sb2Nr KCksIGJ1dCB0aGlzCmlzIG5vdCB0cnVlIGlmIGEgU1lOQUNLIGlzIHJldHJhbnNtaXR0ZWQsIGFz IGEgdGltZXIgKHNvZnQpIGludGVycnVwdApkb2VzIG5vdCBob2xkIHJjdV9yZWFkX2xvY2soKQoK Rml4ZXM6IDQ1ZjZmYWQ4NGNjMzAgKCJpcHY2OiBhZGQgY29tcGxldGUgcmN1IHByb3RlY3Rpb24g YXJvdW5kIG5wLT5vcHQiKQpSZXBvcnRlZC1ieTogRGF2ZSBKb25lcyA8ZGF2ZWpAY29kZW1vbmtl eS5vcmcudWs+ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNv bT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0Pgot LS0KIG5ldC9pcHY2L3RjcF9pcHY2LmMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9p cHY2LmMKaW5kZXggODkzNWRjMS4uYTcxZmIyNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lw djYuYworKysgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC00NjIsOCArNDYyLDEwIEBAIHN0YXRp YyBpbnQgdGNwX3Y2X3NlbmRfc3luYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRy eSAqZHN0LAogCQkJZmw2LT5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKGlyZXEt PnBrdG9wdHMpKTsKIAogCQlza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCBxdWV1ZV9tYXBwaW5n KTsKKwkJcmN1X3JlYWRfbG9jaygpOwogCQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCBmbDYsIHJj dV9kZXJlZmVyZW5jZShucC0+b3B0KSwKIAkJCSAgICAgICBucC0+dGNsYXNzKTsKKwkJcmN1X3Jl YWRfdW5sb2NrKCk7CiAJCWVyciA9IG5ldF94bWl0X2V2YWwoZXJyKTsKIAl9CiAKLS0gCjIuMS4w CgoKRnJvbSA0ZTNjNmU4MzRlZGI2ZjNhNzI1MTc4YjNkZjBlOTYwNzQxNThiODFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOZWFsIENhcmR3ZWxsIDxuY2FyZHdlbGxAZ29vZ2xlLmNv bT4KRGF0ZTogTW9uLCAxMSBKYW4gMjAxNiAxMzo0Mjo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0gg MTgvNDBdIHRjcF95ZWFoOiBkb24ndCBzZXQgc3N0aHJlc2ggYmVsb3cgMgoKWyBVcHN0cmVhbSBj b21taXQgODNkMTVlNzBjNGQ4OTA5ZDcyMmMwZDY0NzQ3ZDhmYjQyZTM4YTQ4ZiBdCgpGb3IgdGNw X3llYWgsIHVzZSBhbiBzc3RocmVzaCBmbG9vciBvZiAyLCB0aGUgc2FtZSBmbG9vciB1c2VkIGJ5 IFJlbm8KYW5kIENVQklDLCBwZXIgUkZDIDU2ODEgKGVxdWF0aW9uIDQpLgoKdGNwX3llYWhfc3N0 aHJlc2goKSB3YXMgc29tZXRpbWVzIHJldHVybmluZyBhIDAgb3IgbmVnYXRpdmUgc3N0aHJlc2gK dmFsdWUgaWYgdGhlIGludGVuZGVkIHJlZHVjdGlvbiBpcyBhcyBiaWcgb3IgYmlnZ2VyIHRoYW4g dGhlIGN1cnJlbnQKY3duZC4gQ29uZ2VzdGlvbiBjb250cm9sIG1vZHVsZXMgc2hvdWxkIG5ldmVy IHJldHVybiBhIHplcm8gb3IKbmVnYXRpdmUgc3N0aHJlc2guIEEgemVybyBzc3RocmVzaCBnZW5l cmFsbHkgcmVzdWx0cyBpbiBhIHplcm8gY3duZCwKY2F1c2luZyB0aGUgY29ubmVjdGlvbiB0byBz dGFsbC4gQSBuZWdhdGl2ZSBzc3RocmVzaCB2YWx1ZSB3aWxsIGJlCmludGVycHJldGVkIGFzIGEg dTMyIGFuZCB3aWxsIHNldCBhIHRhcmdldCBjd25kIGZvciBQUlIgbmVhciA0CmJpbGxpb24uCgpP bGVrc2FuZHIgTmF0YWxlbmtvIHJlcG9ydGVkIHRoYXQgYSBzeXN0ZW0gdXNpbmcgdGNwX3llYWgg d2l0aCBFQ04KY291bGQgc2VlIGEgd2FybmluZyBhYm91dCBhIHByaW9yX2N3bmQgb2YgMCBpbgp0 Y3BfY3duZF9yZWR1Y3Rpb24oKS4gVGVzdGluZyB2ZXJpZmllZCB0aGF0IHRoaXMgd2FzIGR1ZSB0 bwp0Y3BfeWVhaF9zc3RocmVzaCgpIG1pc2JlaGF2aW5nIGluIHRoaXMgd2F5LgoKUmVwb3J0ZWQt Ynk6IE9sZWtzYW5kciBOYXRhbGVua28gPG9sZWtzYW5kckBuYXRhbGVua28ubmFtZT4KU2lnbmVk LW9mZi1ieTogTmVhbCBDYXJkd2VsbCA8bmNhcmR3ZWxsQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IFl1Y2h1bmcgQ2hlbmcgPHljaGVuZ0Bnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmlj IER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC90Y3BfeWVhaC5jIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvbmV0L2lwdjQvdGNwX3llYWguYyBiL25ldC9pcHY0L3RjcF95ZWFoLmMKaW5kZXggMTdk MzU2Ni4uM2U2YTQ3MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX3llYWguYworKysgYi9uZXQv aXB2NC90Y3BfeWVhaC5jCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIHUzMiB0Y3BfeWVhaF9z c3RocmVzaChzdHJ1Y3Qgc29jayAqc2spCiAJeWVhaC0+ZmFzdF9jb3VudCA9IDA7CiAJeWVhaC0+ cmVub19jb3VudCA9IG1heCh5ZWFoLT5yZW5vX2NvdW50Pj4xLCAyVSk7CiAKLQlyZXR1cm4gdHAt PnNuZF9jd25kIC0gcmVkdWN0aW9uOworCXJldHVybiBtYXhfdChpbnQsIHRwLT5zbmRfY3duZCAt IHJlZHVjdGlvbiwgMik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHRj cF95ZWFoIF9fcmVhZF9tb3N0bHkgPSB7Ci0tIAoyLjEuMAoKCkZyb20gNGE4MmU3MTg0NDU3ZjYz YTQ4ZWUzODc2MGViODQxMzNhMjc1NTk1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog SmFtYWwgSGFkaSBTYWxpbSA8amhzQG1vamF0YXR1LmNvbT4KRGF0ZTogU3VuLCAxMCBKYW4gMjAx NiAxMTo0NzowMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTkvNDBdIHNjaGVkLGNsc19mbG93ZXI6 IHNldCBrZXkgYWRkcmVzcyB0eXBlIHdoZW4gcHJlc2VudAoKWyBVcHN0cmVhbSBjb21taXQgNjY1 MzBiZGY4NWViMWQ3MmEwYzM5OTY2NWUwOWEyYzIyOTg1MDFjNiBdCgpvbmx5IHdoZW4gdXNlciBz cGFjZSBwYXNzZXMgdGhlIGFkZHJlc3NlcyBzaG91bGQgd2UgY29uc2lkZXIgdGhlaXIKcHJlc2Vu Y2UKClNpZ25lZC1vZmYtYnk6IEphbWFsIEhhZGkgU2FsaW0gPGpoc0Btb2phdGF0dS5jb20+CkFj a2VkLWJ5OiBKaXJpIFBpcmtvIDxqaXJpQHJlc251bGxpLnVzPgpTaWduZWQtb2ZmLWJ5OiBEYXZp ZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3NjaGVkL2Nsc19mbG93 ZXIuYyB8IDEwICsrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19mbG93ZXIuYyBiL25ldC9z Y2hlZC9jbHNfZmxvd2VyLmMKaW5kZXggNTc2OTI5NC4uOTViMDIxMiAxMDA2NDQKLS0tIGEvbmV0 L3NjaGVkL2Nsc19mbG93ZXIuYworKysgYi9uZXQvc2NoZWQvY2xzX2Zsb3dlci5jCkBAIC0yNTIs MjMgKzI1MiwyOCBAQCBzdGF0aWMgaW50IGZsX3NldF9rZXkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1 Y3QgbmxhdHRyICoqdGIsCiAJZmxfc2V0X2tleV92YWwodGIsIGtleS0+ZXRoLnNyYywgVENBX0ZM T1dFUl9LRVlfRVRIX1NSQywKIAkJICAgICAgIG1hc2stPmV0aC5zcmMsIFRDQV9GTE9XRVJfS0VZ X0VUSF9TUkNfTUFTSywKIAkJICAgICAgIHNpemVvZihrZXktPmV0aC5zcmMpKTsKKwogCWZsX3Nl dF9rZXlfdmFsKHRiLCAma2V5LT5iYXNpYy5uX3Byb3RvLCBUQ0FfRkxPV0VSX0tFWV9FVEhfVFlQ RSwKIAkJICAgICAgICZtYXNrLT5iYXNpYy5uX3Byb3RvLCBUQ0FfRkxPV0VSX1VOU1BFQywKIAkJ ICAgICAgIHNpemVvZihrZXktPmJhc2ljLm5fcHJvdG8pKTsKKwogCWlmIChrZXktPmJhc2ljLm5f cHJvdG8gPT0gaHRvbnMoRVRIX1BfSVApIHx8CiAJICAgIGtleS0+YmFzaWMubl9wcm90byA9PSBo dG9ucyhFVEhfUF9JUFY2KSkgewogCQlmbF9zZXRfa2V5X3ZhbCh0YiwgJmtleS0+YmFzaWMuaXBf cHJvdG8sIFRDQV9GTE9XRVJfS0VZX0lQX1BST1RPLAogCQkJICAgICAgICZtYXNrLT5iYXNpYy5p cF9wcm90bywgVENBX0ZMT1dFUl9VTlNQRUMsCiAJCQkgICAgICAgc2l6ZW9mKGtleS0+YmFzaWMu aXBfcHJvdG8pKTsKIAl9Ci0JaWYgKGtleS0+Y29udHJvbC5hZGRyX3R5cGUgPT0gRkxPV19ESVNT RUNUT1JfS0VZX0lQVjRfQUREUlMpIHsKKworCWlmICh0YltUQ0FfRkxPV0VSX0tFWV9JUFY0X1NS Q10gfHwgdGJbVENBX0ZMT1dFUl9LRVlfSVBWNF9EU1RdKSB7CisJCWtleS0+Y29udHJvbC5hZGRy X3R5cGUgPSBGTE9XX0RJU1NFQ1RPUl9LRVlfSVBWNF9BRERSUzsKIAkJZmxfc2V0X2tleV92YWwo dGIsICZrZXktPmlwdjQuc3JjLCBUQ0FfRkxPV0VSX0tFWV9JUFY0X1NSQywKIAkJCSAgICAgICAm bWFzay0+aXB2NC5zcmMsIFRDQV9GTE9XRVJfS0VZX0lQVjRfU1JDX01BU0ssCiAJCQkgICAgICAg c2l6ZW9mKGtleS0+aXB2NC5zcmMpKTsKIAkJZmxfc2V0X2tleV92YWwodGIsICZrZXktPmlwdjQu ZHN0LCBUQ0FfRkxPV0VSX0tFWV9JUFY0X0RTVCwKIAkJCSAgICAgICAmbWFzay0+aXB2NC5kc3Qs IFRDQV9GTE9XRVJfS0VZX0lQVjRfRFNUX01BU0ssCiAJCQkgICAgICAgc2l6ZW9mKGtleS0+aXB2 NC5kc3QpKTsKLQl9IGVsc2UgaWYgKGtleS0+Y29udHJvbC5hZGRyX3R5cGUgPT0gRkxPV19ESVNT RUNUT1JfS0VZX0lQVjZfQUREUlMpIHsKKwl9IGVsc2UgaWYgKHRiW1RDQV9GTE9XRVJfS0VZX0lQ VjZfU1JDXSB8fCB0YltUQ0FfRkxPV0VSX0tFWV9JUFY2X0RTVF0pIHsKKwkJa2V5LT5jb250cm9s LmFkZHJfdHlwZSA9IEZMT1dfRElTU0VDVE9SX0tFWV9JUFY2X0FERFJTOwogCQlmbF9zZXRfa2V5 X3ZhbCh0YiwgJmtleS0+aXB2Ni5zcmMsIFRDQV9GTE9XRVJfS0VZX0lQVjZfU1JDLAogCQkJICAg ICAgICZtYXNrLT5pcHY2LnNyYywgVENBX0ZMT1dFUl9LRVlfSVBWNl9TUkNfTUFTSywKIAkJCSAg ICAgICBzaXplb2Yoa2V5LT5pcHY2LnNyYykpOwpAQCAtMjc2LDYgKzI4MSw3IEBAIHN0YXRpYyBp bnQgZmxfc2V0X2tleShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJCSAg ICAgICAmbWFzay0+aXB2Ni5kc3QsIFRDQV9GTE9XRVJfS0VZX0lQVjZfRFNUX01BU0ssCiAJCQkg ICAgICAgc2l6ZW9mKGtleS0+aXB2Ni5kc3QpKTsKIAl9CisKIAlpZiAoa2V5LT5iYXNpYy5pcF9w cm90byA9PSBJUFBST1RPX1RDUCkgewogCQlmbF9zZXRfa2V5X3ZhbCh0YiwgJmtleS0+dHAuc3Jj LCBUQ0FfRkxPV0VSX0tFWV9UQ1BfU1JDLAogCQkJICAgICAgICZtYXNrLT50cC5zcmMsIFRDQV9G TE9XRVJfVU5TUEVDLAotLSAKMi4xLjAKCgpGcm9tIGU0MzViOGFiOGU0NWE2YTgwNzU0NzYzYzBm YWYyMDdmZjk3NGE1ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gRmFzdGFi ZW5kIDxqb2huLmZhc3RhYmVuZEBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTAgSmFuIDIwMTYgMjE6 Mzg6NDQgLTA4MDAKU3ViamVjdDogW1BBVENIIDIwLzQwXSBuZXQ6IHBrdGdlbjogZml4IG51bGwg cHRyIGRlcmVmIGluIHNrYiBhbGxvY2F0aW9uCgpbIFVwc3RyZWFtIGNvbW1pdCAzZGUwMzU5NmRm ZWVlNDhiYzgwM2MxZDFhNmRhZjYwYTQ1OTkyOWYzIF0KCkZpeCBwb3NzaWJsZSBudWxsIHBvaW50 ZXIgZGVyZWZlcmVuY2UgdGhhdCBtYXkgb2NjdXIgd2hlbiBjYWxsaW5nCnNrYl9yZXNlcnZlKCkg b24gYSBudWxsIHNrYi4KCkZpeGVzOiA4NzljNzIyMGU4MiAoIm5ldDogcGt0Z2VuOiBPYnNlcnZl IG5lZWRlZF9oZWFkcm9vbSBvZiB0aGUgZGV2aWNlIikKU2lnbmVkLW9mZi1ieTogSm9obiBGYXN0 YWJlbmQgPGpvaG4uci5mYXN0YWJlbmRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBT LiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2NvcmUvcGt0Z2VuLmMgfCA0 ICsrKy0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9uZXQvY29yZS9wa3RnZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jCmluZGV4IGRl OGQ1Y2MuLjRkYTRkNTEgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdlbi5jCisrKyBiL25ldC9j b3JlL3BrdGdlbi5jCkBAIC0yNzg3LDcgKzI3ODcsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYg KnBrdGdlbl9hbGxvY19za2Ioc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9IGVsc2UgewogCQkg c2tiID0gX19uZXRkZXZfYWxsb2Nfc2tiKGRldiwgc2l6ZSwgR0ZQX05PV0FJVCk7CiAJfQotCXNr Yl9yZXNlcnZlKHNrYiwgTExfUkVTRVJWRURfU1BBQ0UoZGV2KSk7CisKKwlpZiAobGlrZWx5KHNr YikpCisJCXNrYl9yZXNlcnZlKHNrYiwgTExfUkVTRVJWRURfU1BBQ0UoZGV2KSk7CiAKIAlyZXR1 cm4gc2tiOwogfQotLSAKMi4xLjAKCgpGcm9tIGFiZDNhMTQ0OGFlOTMzMGQyMmY3ZmQxODgzZmNh NmI0MDdmMTIyMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9NaWNo YWw9MjBLdWJlPUM0PThEZWs/PSA8bWt1YmVjZWtAc3VzZS5jej4KRGF0ZTogTW9uLCAxMSBKYW4g MjAxNiAwNzo1MDozMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMjEvNDBdIHVkcDogZGlzYWxsb3cg VUZPIGZvciBzb2NrZXRzIHdpdGggU09fTk9fQ0hFQ0sgb3B0aW9uCgpbIFVwc3RyZWFtIGNvbW1p dCA0MGJhMzMwMjI3YWQwMGI4YzBjZGYyZjQyNTczNmZmOTU0OWNjNDIzIF0KCkNvbW1pdCBhY2Y4 ZGQwYTlkMGIgKCJ1ZHA6IG9ubHkgYWxsb3cgVUZPIGZvciBwYWNrZXRzIGZyb20gU09DS19ER1JB TQpzb2NrZXRzIikgZGlzYWxsb3dzIFVGTyBmb3IgcGFja2V0cyBzZW50IGZyb20gcmF3IHNvY2tl dHMuIFdlIG5lZWQgdG8gZG8KdGhlIHNhbWUgYWxzbyBmb3IgU09DS19ER1JBTSBzb2NrZXRzIHdp dGggU09fTk9fQ0hFQ0sgb3B0aW9ucywgZXZlbiBpZgpmb3IgYSBiaXQgZGlmZmVyZW50IHJlYXNv bjogd2hpbGUgc3VjaCBzb2NrZXQgd291bGQgb3ZlcnJpZGUgdGhlCkNIRUNLU1VNX1BBUlRJQUwg c2V0IGJ5IGlwX3Vmb19hcHBlbmRfZGF0YSgpLCBnc29fc2l6ZSBpcyBzdGlsbCBzZXQgYW5kCmJh ZCBvZmZsb2FkaW5nIGZsYWdzIHdhcm5pbmcgaXMgdHJpZ2dlcmVkIGluIF9fc2tiX2dzb19zZWdt ZW50KCkuCgpJbiB0aGUgSVB2NiBjYXNlLCBTT19OT19DSEVDSyBvcHRpb24gaXMgaWdub3JlZCBi dXQgd2UgbmVlZCB0byBkaXNhbGxvdwpVRk8gZm9yIHBhY2tldHMgc2VudCBieSBzb2NrZXRzIHdp dGggVURQX05PX0NIRUNLNl9UWCBvcHRpb24uCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgS3ViZWNl ayA8bWt1YmVjZWtAc3VzZS5jej4KVGVzdGVkLWJ5OiBTaGFubm9uIE5lbHNvbiA8c2hhbm5vbi5u ZWxzb25AaW50ZWwuY29tPgpBY2tlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0Bz dHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvaXBfb3V0cHV0LmMgIHwgMiArLQogbmV0L2lw djYvaXA2X291dHB1dC5jIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMgYi9uZXQv aXB2NC9pcF9vdXRwdXQuYwppbmRleCAwMTM4ZmFkLi4zMTRmMjZlIDEwMDY0NAotLS0gYS9uZXQv aXB2NC9pcF9vdXRwdXQuYworKysgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYwpAQCAtOTE4LDcgKzkx OCw3IEBAIHN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29jayAqc2ssCiAJaWYg KCgobGVuZ3RoID4gbXR1KSB8fCAoc2tiICYmIHNrYl9pc19nc28oc2tiKSkpICYmCiAJICAgIChz ay0+c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApICYmCiAJICAgIChydC0+ZHN0LmRldi0+ZmVh dHVyZXMgJiBORVRJRl9GX1VGTykgJiYgIXJ0LT5kc3QuaGVhZGVyX2xlbiAmJgotCSAgICAoc2st PnNrX3R5cGUgPT0gU09DS19ER1JBTSkpIHsKKwkgICAgKHNrLT5za190eXBlID09IFNPQ0tfREdS QU0pICYmICFzay0+c2tfbm9fY2hlY2tfdHgpIHsKIAkJZXJyID0gaXBfdWZvX2FwcGVuZF9kYXRh KHNrLCBxdWV1ZSwgZ2V0ZnJhZywgZnJvbSwgbGVuZ3RoLAogCQkJCQkgaGhfbGVuLCBmcmFnaGVh ZGVybGVuLCB0cmFuc2hkcmxlbiwKIAkJCQkJIG1heGZyYWdsZW4sIGZsYWdzKTsKZGlmZiAtLWdp dCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCBm ODRlYzRlLi5mYjc5NzNhIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKKysrIGIv bmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCBlbXNnc2l6ZToKIAkg ICAgIChza2IgJiYgc2tiX2lzX2dzbyhza2IpKSkgJiYKIAkgICAgKHNrLT5za19wcm90b2NvbCA9 PSBJUFBST1RPX1VEUCkgJiYKIAkgICAgKHJ0LT5kc3QuZGV2LT5mZWF0dXJlcyAmIE5FVElGX0Zf VUZPKSAmJgotCSAgICAoc2stPnNrX3R5cGUgPT0gU09DS19ER1JBTSkpIHsKKwkgICAgKHNrLT5z a190eXBlID09IFNPQ0tfREdSQU0pICYmICF1ZHBfZ2V0X25vX2NoZWNrNl90eChzaykpIHsKIAkJ ZXJyID0gaXA2X3Vmb19hcHBlbmRfZGF0YShzaywgcXVldWUsIGdldGZyYWcsIGZyb20sIGxlbmd0 aCwKIAkJCQkJICBoaF9sZW4sIGZyYWdoZWFkZXJsZW4sCiAJCQkJCSAgdHJhbnNoZHJsZW4sIG10 dSwgZmxhZ3MsIGZsNik7Ci0tIAoyLjEuMAoKCkZyb20gODVlNmIwYjVmNWQ1ZTllNzUwNTFhOWU3 YzY4NzFiNTNlZjA5ZDg0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS29uc3RhbnRp biBLaGxlYm5pa292IDxrb2N0OWlAZ21haWwuY29tPgpEYXRlOiBGcmksIDggSmFuIDIwMTYgMTU6 MjE6NDYgKzAzMDAKU3ViamVjdDogW1BBVENIIDIyLzQwXSBuZXQ6IHByZXNlcnZlIElQIGNvbnRy b2wgYmxvY2sgZHVyaW5nIEdTTyBzZWdtZW50YXRpb24KClsgVXBzdHJlYW0gY29tbWl0IDkyMDdm OWQ0NWIwYWQwNzFiYWExMjhlODQ2ZDdlN2VkODUwMTZkZjMgXQoKU2tiX2dzb19zZWdtZW50KCkg dXNlcyBza2IgY29udHJvbCBibG9jayBkdXJpbmcgc2VnbWVudGF0aW9uLgpUaGlzIHBhdGNoIGFk ZHMgMzItYnl0ZXMgcm9vbSBmb3IgcHJldmlvdXMgY29udHJvbCBibG9jayB3aGljaAp3aWxsIGJl IGNvcGllZCBpbnRvIGFsbCByZXN1bHRpbmcgc2VnbWVudHMuCgpUaGlzIHBhdGNoIGZpeGVzIGtl cm5lbCBjcmFzaCBkdXJpbmcgZnJhZ21lbnRpbmcgZm9yd2FyZGVkIHBhY2tldHMuCkZyYWdtZW50 YXRpb24gcmVxdWlyZXMgdmFsaWQgSVAgQ0IgaW4gc2tiIGZvciBjbGVhcmluZyBpcCBvcHRpb25z LgpBbHNvIHBhdGNoIHJlbW92ZXMgY3VzdG9tIHNhdmUvcmVzdG9yZSBpbiBvdnMgY29kZSwgbm93 IGl0J3MgcmVkdW5kYW50LgoKU2lnbmVkLW9mZi1ieTogS29uc3RhbnRpbiBLaGxlYm5pa292IDxr b2N0OWlAZ21haWwuY29tPgpMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3IvQ0FMWUdOaVAt ME1aLUZFeFYySHV0VHZFOVUtUVF0a0tTb0UtLUtOPUpRRTVTVFlzakFBQG1haWwuZ21haWwuY29t ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0t CiBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oICAgICB8IDMgKystCiBuZXQvY29yZS9kZXYuYyAgICAg ICAgICAgICB8IDUgKysrKysKIG5ldC9pcHY0L2lwX291dHB1dC5jICAgICAgIHwgMSArCiBuZXQv b3BlbnZzd2l0Y2gvZGF0YXBhdGguYyB8IDUgKy0tLS0KIG5ldC94ZnJtL3hmcm1fb3V0cHV0LmMg ICAgIHwgMiArKwogNSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4 L3NrYnVmZi5oCmluZGV4IDQzOTg0MTEuLjIzY2UzMDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvc2tidWZmLmgKKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzQzNyw3ICszNDM3 LDggQEAgc3RydWN0IHNrYl9nc29fY2IgewogCWludAllbmNhcF9sZXZlbDsKIAlfX3UxNgljc3Vt X3N0YXJ0OwogfTsKLSNkZWZpbmUgU0tCX0dTT19DQihza2IpICgoc3RydWN0IHNrYl9nc29fY2Ig Kikoc2tiKS0+Y2IpCisjZGVmaW5lIFNLQl9TR09fQ0JfT0ZGU0VUCTMyCisjZGVmaW5lIFNLQl9H U09fQ0Ioc2tiKSAoKHN0cnVjdCBza2JfZ3NvX2NiICopKChza2IpLT5jYiArIFNLQl9TR09fQ0Jf T0ZGU0VUKSkKIAogc3RhdGljIGlubGluZSBpbnQgc2tiX3RubF9oZWFkZXJfbGVuKGNvbnN0IHN0 cnVjdCBza19idWZmICppbm5lcl9za2IpCiB7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBi L25ldC9jb3JlL2Rldi5jCmluZGV4IGMxNDc0OGQuLjYzNjljNDUgMTAwNjQ0Ci0tLSBhL25ldC9j b3JlL2Rldi5jCisrKyBiL25ldC9jb3JlL2Rldi5jCkBAIC0yNTM5LDYgKzI1MzksOCBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgc2tiX25lZWRzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsIGJvb2wg dHhfcGF0aCkKICAqCiAgKglJdCBtYXkgcmV0dXJuIE5VTEwgaWYgdGhlIHNrYiByZXF1aXJlcyBu byBzZWdtZW50YXRpb24uICBUaGlzIGlzCiAgKglvbmx5IHBvc3NpYmxlIHdoZW4gR1NPIGlzIHVz ZWQgZm9yIHZlcmlmeWluZyBoZWFkZXIgaW50ZWdyaXR5LgorICoKKyAqCVNlZ21lbnRhdGlvbiBw cmVzZXJ2ZXMgU0tCX1NHT19DQl9PRkZTRVQgYnl0ZXMgb2YgcHJldmlvdXMgc2tiIGNiLgogICov CiBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZ3NvX3NlZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwK IAkJCQkgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzLCBib29sIHR4X3BhdGgpCkBAIC0yNTUz LDYgKzI1NTUsOSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZ3NvX3NlZ21lbnQoc3RydWN0IHNr X2J1ZmYgKnNrYiwKIAkJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCisJQlVJTERfQlVHX09O KFNLQl9TR09fQ0JfT0ZGU0VUICsKKwkJICAgICBzaXplb2YoKlNLQl9HU09fQ0Ioc2tiKSkgPiBz aXplb2Yoc2tiLT5jYikpOworCiAJU0tCX0dTT19DQihza2IpLT5tYWNfb2Zmc2V0ID0gc2tiX2hl YWRyb29tKHNrYik7CiAJU0tCX0dTT19DQihza2IpLT5lbmNhcF9sZXZlbCA9IDA7CiAKZGlmZiAt LWdpdCBhL25ldC9pcHY0L2lwX291dHB1dC5jIGIvbmV0L2lwdjQvaXBfb3V0cHV0LmMKaW5kZXgg MzE0ZjI2ZS4uYjk0NWYxZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMKKysrIGIv bmV0L2lwdjQvaXBfb3V0cHV0LmMKQEAgLTI0MCw2ICsyNDAsNyBAQCBzdGF0aWMgaW50IGlwX2Zp bmlzaF9vdXRwdXRfZ3NvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkg KiBmcm9tIGhvc3QgbmV0d29yayBzdGFjay4KIAkgKi8KIAlmZWF0dXJlcyA9IG5ldGlmX3NrYl9m ZWF0dXJlcyhza2IpOworCUJVSUxEX0JVR19PTihzaXplb2YoKklQQ0Ioc2tiKSkgPiBTS0JfU0dP X0NCX09GRlNFVCk7CiAJc2VncyA9IHNrYl9nc29fc2VnbWVudChza2IsIGZlYXR1cmVzICYgfk5F VElGX0ZfR1NPX01BU0spOwogCWlmIChJU19FUlJfT1JfTlVMTChzZWdzKSkgewogCQlrZnJlZV9z a2Ioc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jIGIvbmV0L29w ZW52c3dpdGNoL2RhdGFwYXRoLmMKaW5kZXggYzVkMDhlZS4uNmU5YTIyMiAxMDA2NDQKLS0tIGEv bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMKKysrIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRo LmMKQEAgLTMzNywxMiArMzM3LDEwIEBAIHN0YXRpYyBpbnQgcXVldWVfZ3NvX3BhY2tldHMoc3Ry dWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAl1bnNpZ25lZCBzaG9ydCBn c29fdHlwZSA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5cGU7CiAJc3RydWN0IHN3X2Zsb3dfa2V5 IGxhdGVyX2tleTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2VncywgKm5za2I7Ci0Jc3RydWN0IG92c19z a2JfY2Igb3ZzX2NiOwogCWludCBlcnI7CiAKLQlvdnNfY2IgPSAqT1ZTX0NCKHNrYik7CisJQlVJ TERfQlVHX09OKHNpemVvZigqT1ZTX0NCKHNrYikpID4gU0tCX1NHT19DQl9PRkZTRVQpOwogCXNl Z3MgPSBfX3NrYl9nc29fc2VnbWVudChza2IsIE5FVElGX0ZfU0csIGZhbHNlKTsKLQkqT1ZTX0NC KHNrYikgPSBvdnNfY2I7CiAJaWYgKElTX0VSUihzZWdzKSkKIAkJcmV0dXJuIFBUUl9FUlIoc2Vn cyk7CiAJaWYgKHNlZ3MgPT0gTlVMTCkKQEAgLTM2MCw3ICszNTgsNiBAQCBzdGF0aWMgaW50IHF1 ZXVlX2dzb19wYWNrZXRzKHN0cnVjdCBkYXRhcGF0aCAqZHAsIHN0cnVjdCBza19idWZmICpza2Is CiAJLyogUXVldWUgYWxsIG9mIHRoZSBzZWdtZW50cy4gKi8KIAlza2IgPSBzZWdzOwogCWRvIHsK LQkJKk9WU19DQihza2IpID0gb3ZzX2NiOwogCQlpZiAoZ3NvX3R5cGUgJiBTS0JfR1NPX1VEUCAm JiBza2IgIT0gc2VncykKIAkJCWtleSA9ICZsYXRlcl9rZXk7CiAKZGlmZiAtLWdpdCBhL25ldC94 ZnJtL3hmcm1fb3V0cHV0LmMgYi9uZXQveGZybS94ZnJtX291dHB1dC5jCmluZGV4IDY4YWRhMmMu LjQ0M2Y3OGMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKKysrIGIvbmV0L3hm cm0veGZybV9vdXRwdXQuYwpAQCAtMTY1LDYgKzE2NSw4IEBAIHN0YXRpYyBpbnQgeGZybV9vdXRw dXRfZ3NvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qg c2tfYnVmZiAqc2VnczsKIAorCUJVSUxEX0JVR19PTihzaXplb2YoKklQQ0Ioc2tiKSkgPiBTS0Jf U0dPX0NCX09GRlNFVCk7CisJQlVJTERfQlVHX09OKHNpemVvZigqSVA2Q0Ioc2tiKSkgPiBTS0Jf U0dPX0NCX09GRlNFVCk7CiAJc2VncyA9IHNrYl9nc29fc2VnbWVudChza2IsIDApOwogCWtmcmVl X3NrYihza2IpOwogCWlmIChJU19FUlIoc2VncykpCi0tIAoyLjEuMAoKCkZyb20gOWIzZDkxM2Nm MjBiZTg5ZjBjMzhkODMxODA3NWYwYWE3YjI2MGQ1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogS2FybCBIZWlzcyA8a2hlaXNzQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMSBKYW4gMjAx NiAwODoyODo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMjMvNDBdIGJvbmRpbmc6IFByZXZlbnQg SVB2NiBsaW5rIGxvY2FsIGFkZHJlc3Mgb24gZW5zbGF2ZWQKIGRldmljZXMKClsgVXBzdHJlYW0g Y29tbWl0IDAzZDg0YTVmODNhNjdlNjkyYWYwMGEzZDM5MDFlNzgyMGUzZTg0ZDUgXQoKQ29tbWl0 IDFmNzE4ZjBmNGY5NyAoImJvbmRpbmc6IHBvcHVsYXRlIG5laWdoYm91cidzIHByaXZhdGUgb24g ZW5zbGF2ZSIpCnVuZG9lcyB0aGUgZml4IHByb3ZpZGVkIGJ5IGNvbW1pdCBjMmVkYWNmODBlMTUg KCJib25kaW5nIC8gaXB2Njogbm8gYWRkcmNvbmYKZm9yIHNsYXZlcyBzZXBhcmF0ZWx5IGZyb20g bWFzdGVyIikgYnkgZWZmZWN0aXZlbHkgc2V0dGluZyB0aGUgc2xhdmUgZmxhZwphZnRlciB0aGUg c2xhdmUgaGFzIGJlZW4gb3BlbmVkLiAgSWYgdGhlIHNsYXZlIGNvbWVzIHVwIHF1aWNrbHkgZW5v dWdoLCBpdAp3aWxsIGdvIHRocm91Z2ggdGhlIElQdjYgYWRkcmNvbmYgYmVmb3JlIHRoZSBzbGF2 ZSBmbGFnIGhhcyBiZWVuIHNldCBhbmQKd2lsbCBnZXQgYSBsaW5rIGxvY2FsIElQdjYgYWRkcmVz cy4KCkluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGFkZHJjb25mIGtub3dzIHRvIGlnbm9yZSB0aGUg c2xhdmUgZGV2aWNlcyBvbiBzdGF0ZQpjaGFuZ2UsIHNldCBJRkZfU0xBVkUgYmVmb3JlIGRldl9v cGVuKCkgZHVyaW5nIGJvbmRpbmcgZW5zbGF2ZW1lbnQuCgpGaXhlczogMWY3MThmMGY0Zjk3ICgi Ym9uZGluZzogcG9wdWxhdGUgbmVpZ2hib3VyJ3MgcHJpdmF0ZSBvbiBlbnNsYXZlIikKU2lnbmVk LW9mZi1ieTogS2FybCBIZWlzcyA8a2hlaXNzQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogSmF5 IFZvc2J1cmdoIDxqYXkudm9zYnVyZ2hAY2Fub25pY2FsLmNvbT4KUmV2aWV3ZWQtYnk6IEphcm9k IFdpbHNvbiA8amFyb2RAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogQW5keSBHb3Nwb2RhcmVr IDxnb3Nwb0BjdW11bHVzbmV0d29ya3MuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21h aW4uYyB8IDUgKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJp dmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwppbmRleCBiY2Q3YmRkLi41MDk0NDBjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0 L2JvbmRpbmcvYm9uZF9tYWluLmMKQEAgLTEyMDcsNyArMTIwNyw2IEBAIHN0YXRpYyBpbnQgYm9u ZF9tYXN0ZXJfdXBwZXJfZGV2X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LAogCWVy ciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2xpbmtfcHJpdmF0ZShzbGF2ZV9kZXYsIGJvbmRf ZGV2LCBzbGF2ZSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKLQlzbGF2ZV9kZXYtPmZsYWdz IHw9IElGRl9TTEFWRTsKIAlydG1zZ19pZmluZm8oUlRNX05FV0xJTkssIHNsYXZlX2RldiwgSUZG X1NMQVZFLCBHRlBfS0VSTkVMKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE0NjUsNiArMTQ2NCw5IEBA IGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0 X2RldmljZSAqc2xhdmVfZGV2KQogCQl9CiAJfQogCisJLyogc2V0IHNsYXZlIGZsYWcgYmVmb3Jl IG9wZW4gdG8gcHJldmVudCBJUHY2IGFkZHJjb25mICovCisJc2xhdmVfZGV2LT5mbGFncyB8PSBJ RkZfU0xBVkU7CisKIAkvKiBvcGVuIHRoZSBzbGF2ZSBzaW5jZSB0aGUgYXBwbGljYXRpb24gY2xv c2VkIGl0ICovCiAJcmVzID0gZGV2X29wZW4oc2xhdmVfZGV2KTsKIAlpZiAocmVzKSB7CkBAIC0x NzI1LDYgKzE3MjcsNyBAQCBlcnJfY2xvc2U6CiAJZGV2X2Nsb3NlKHNsYXZlX2Rldik7CiAKIGVy cl9yZXN0b3JlX21hYzoKKwlzbGF2ZV9kZXYtPmZsYWdzICY9IH5JRkZfU0xBVkU7CiAJaWYgKCFi b25kLT5wYXJhbXMuZmFpbF9vdmVyX21hYyB8fAogCSAgICBCT05EX01PREUoYm9uZCkgIT0gQk9O RF9NT0RFX0FDVElWRUJBQ0tVUCkgewogCQkvKiBYWFggVE9ETyAtIGZvbSBmb2xsb3cgbW9kZSBu ZWVkcyB0byBjaGFuZ2UgbWFzdGVyJ3MKLS0gCjIuMS4wCgoKRnJvbSBkNjViZDdlYzA4NjZjNWNl YjgwOTkxMzIyZDAxMWQyZDQwZmVhMzY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBM YXJzIFBlcnNzb24gPGxhcnMucGVyc3NvbkBheGlzLmNvbT4KRGF0ZTogVHVlLCAxMiBKYW4gMjAx NiAxNToyODoxMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMjQvNDBdIGR3Y19ldGhfcW9zOiBGaXgg ZG1hIGFkZHJlc3MgZm9yIG11bHRpLWZyYWdtZW50IHNrYnMKClsgVXBzdHJlYW0gY29tbWl0IGQ0 NjE4NzMyNzIxNjlhM2ZjM2E4ZDE1NWQ3YjFjOTJlOWQ5N2I0MTkgXQoKVGhlIG9mZnNldCBpbnNp ZGUgdGhlIGZyYWdtZW50IHdhcyBub3QgdXNlZCBmb3IgdGhlIGRtYSBhZGRyZXNzIGFuZApzaWxl bnQgZGF0YSBjb3JydXB0aW9uIHJlc3VsdGVkIGJlY2F1c2UgVFNPIG1ha2VzIHRoZSBjaGVja3N1 bSBtYXRjaC4KCkZpeGVzOiAwNzc3NDJkYWMyYzcgKCJkd2NfZXRoX3FvczogQWRkIHN1cHBvcnQg Zm9yIFN5bm9wc3lzIERXQyBFdGhlcm5ldCBRb1MiKQpTaWduZWQtb2ZmLWJ5OiBMYXJzIFBlcnNz b24gPGxhcnBlckBheGlzLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZl bUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N5bm9wc3lzL2R3Y19l dGhfcW9zLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zeW5vcHN5cy9kd2NfZXRo X3Fvcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMvZHdjX2V0aF9xb3MuYwppbmRl eCA4NWIzMzI2Li4zNzY0MGUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zeW5v cHN5cy9kd2NfZXRoX3Fvcy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N5bm9wc3lzL2R3 Y19ldGhfcW9zLmMKQEAgLTIxMDcsNyArMjEwNyw3IEBAIHN0YXRpYyBpbnQgZHdjZXFvc190eF9m cmFncyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2xvY2FsICpscCwKIAkJCWRkID0g JmxwLT50eF9kZXNjc1tscC0+dHhfbmV4dF07CiAKIAkJCS8qIFNldCBETUEgRGVzY3JpcHRvciBm aWVsZHMgKi8KLQkJCWRkLT5kZXMwID0gZG1hX2hhbmRsZTsKKwkJCWRkLT5kZXMwID0gZG1hX2hh bmRsZSArIGNvbnN1bWVkX3NpemU7CiAJCQlkZC0+ZGVzMSA9IDA7CiAJCQlkZC0+ZGVzMiA9IGRt YV9zaXplOwogCi0tIAoyLjEuMAoKCkZyb20gODdmMTI1ZWE2ZDE4ZGU0YzExZmY3NmNiMTY3OGRm YWU2ZTYwZGQ4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxl ZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBUdWUsIDEyIEphbiAyMDE2IDA4OjU4OjAwIC0wODAw ClN1YmplY3Q6IFtQQVRDSCAyNS80MF0gcGhvbmV0OiBwcm9wZXJseSB1bnNoYXJlIHNrYnMgaW4g cGhvbmV0X3JjdigpCgpbIFVwc3RyZWFtIGNvbW1pdCA3YWFlZDU3YzVjMjg5MDYzNGNmYWRmNzI1 MTczYzdjNjhlYTRjYjRmIF0KCkl2YXlsbyBEaW1pdHJvdiByZXBvcnRlZCBhIHJlZ3Jlc3Npb24g Y2F1c2VkIGJ5IGNvbW1pdCA3ODY2YTYyMTA0M2YKKCJkZXY6IGFkZCBwZXIgbmV0X2RldmljZSBw YWNrZXQgdHlwZSBjaGFpbnMiKS4KCnNrYi0+ZGV2IGJlY29tZXMgTlVMTCBhbmQgd2UgY3Jhc2gg aW4gX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKCkuCgpCZWZvcmUgYWJvdmUgY29tbWl0LCBkaWZm ZXJlbnQga2luZCBvZiBidWdzIG9yIGNvcnJ1cHRpb25zIGNvdWxkIGhhcHBlbgp3aXRob3V0IG1h am9yIGNyYXNoLgoKQnV0IHRoZSByb290IGNhdXNlIGlzIHRoYXQgcGhvbmV0X3JjdigpIGNhbiBx dWV1ZSBza2Igd2l0aG91dCBjaGVja2luZwppZiBza2IgaXMgc2hhcmVkIG9yIG5vdC4KCk1hbnkg dGhhbmtzIHRvIEl2YXlsbyBEaW1pdHJvdiBmb3IgaGlzIGhlbHAsIGRpYWdub3NpcyBhbmQgdGVz dHMuCgpSZXBvcnRlZC1ieTogSXZheWxvIERpbWl0cm92IDxpdm8uZy5kaW1pdHJvdi43NUBnbWFp bC5jb20+ClRlc3RlZC1ieTogSXZheWxvIERpbWl0cm92IDxpdm8uZy5kaW1pdHJvdi43NUBnbWFp bC5jb20+ClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4K Q2M6IFJlbWkgRGVuaXMtQ291cm1vbnQgPGNvdXJtaXNjaEBnbWFpbC5jb20+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvcGhvbmV0 L2FmX3Bob25ldC5jIHwgNCArKysrCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvbmV0L3Bob25ldC9hZl9waG9uZXQuYyBiL25ldC9waG9uZXQvYWZfcGhvbmV0 LmMKaW5kZXggMTBkNDJmMy4uZjkyNTc1MyAxMDA2NDQKLS0tIGEvbmV0L3Bob25ldC9hZl9waG9u ZXQuYworKysgYi9uZXQvcGhvbmV0L2FmX3Bob25ldC5jCkBAIC0zNzcsNiArMzc3LDEwIEBAIHN0 YXRpYyBpbnQgcGhvbmV0X3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LAogCXN0cnVjdCBzb2NrYWRkcl9wbiBzYTsKIAl1MTYgbGVuOwogCisJc2tiID0gc2ti X3NoYXJlX2NoZWNrKHNrYiwgR0ZQX0FUT01JQyk7CisJaWYgKCFza2IpCisJCXJldHVybiBORVRf UlhfRFJPUDsKKwogCS8qIGNoZWNrIHdlIGhhdmUgYXQgbGVhc3QgYSBmdWxsIFBob25ldCBoZWFk ZXIgKi8KIAlpZiAoIXBza2JfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgcGhvbmV0aGRyKSkpCiAJ CWdvdG8gb3V0OwotLSAKMi4xLjAKCgpGcm9tIGJkNWQ2MjgzMmI5MDYyOWUwMDIzMWFjZWU4ZTQz NmQ0Njc5NDlkNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFJhYmluIFZpbmNlbnQg PHJhYmluQHJhYi5pbj4KRGF0ZTogVHVlLCAxMiBKYW4gMjAxNiAyMDoxNzowOCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMjYvNDBdIG5ldDogYnBmOiByZWplY3QgaW52YWxpZCBzaGlmdHMKClsgVXBz dHJlYW0gY29tbWl0IDIyOTM5NGU4ZTYyYTQxOTFkNTkyODQyY2Y2N2U4MGM2MmE0OTI5MzcgXQoK T24gQVJNNjQsIGEgQlVHKCkgaXMgdHJpZ2dlcmVkIGluIHRoZSBlQlBGIEpJVCBpZiBhIGZpbHRl ciB3aXRoIGEKY29uc3RhbnQgc2hpZnQgdGhhdCBjYW4ndCBiZSBlbmNvZGVkIGluIHRoZSBpbW1l ZGlhdGUgZmllbGQgb2YgdGhlClVCRk0vU0JGTSBpbnN0cnVjdGlvbnMgaXMgcGFzc2VkIHRvIHRo ZSBKSVQuICBTaW5jZSB0aGVzZSBzaGlmdHMKYW1vdW50cywgd2hpY2ggYXJlIG5lZ2F0aXZlIG9y ID49IHJlZ3NpemUsIGFyZSBpbnZhbGlkLCByZWplY3QgdGhlbSBpbgp0aGUgZUJQRiB2ZXJpZmll ciBhbmQgdGhlIGNsYXNzaWMgQlBGIGZpbHRlciBjaGVja2VyLCBmb3IgYWxsCmFyY2hpdGVjdHVy ZXMuCgpTaWduZWQtb2ZmLWJ5OiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+CkFja2VkLWJ5 OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3JnPgpBY2tlZC1ieTogRGFuaWVsIEJv cmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGtlcm5lbC9icGYvdmVyaWZpZXIuYyB8IDEw ICsrKysrKysrKysKIG5ldC9jb3JlL2ZpbHRlci5jICAgICB8ICA1ICsrKysrCiAyIGZpbGVzIGNo YW5nZWQsIDE1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVy LmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggYjA3NGIyMy4uMzZjNmVmZSAxMDA2NDQK LS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpA QCAtMTA1OCw2ICsxMDU4LDE2IEBAIHN0YXRpYyBpbnQgY2hlY2tfYWx1X29wKHN0cnVjdCByZWdf c3RhdGUgKnJlZ3MsIHN0cnVjdCBicGZfaW5zbiAqaW5zbikKIAkJCXJldHVybiAtRUlOVkFMOwog CQl9CiAKKwkJaWYgKChvcGNvZGUgPT0gQlBGX0xTSCB8fCBvcGNvZGUgPT0gQlBGX1JTSCB8fAor CQkgICAgIG9wY29kZSA9PSBCUEZfQVJTSCkgJiYgQlBGX1NSQyhpbnNuLT5jb2RlKSA9PSBCUEZf SykgeworCQkJaW50IHNpemUgPSBCUEZfQ0xBU1MoaW5zbi0+Y29kZSkgPT0gQlBGX0FMVTY0ID8g NjQgOiAzMjsKKworCQkJaWYgKGluc24tPmltbSA8IDAgfHwgaW5zbi0+aW1tID49IHNpemUpIHsK KwkJCQl2ZXJib3NlKCJpbnZhbGlkIHNoaWZ0ICVkXG4iLCBpbnNuLT5pbW0pOworCQkJCXJldHVy biAtRUlOVkFMOworCQkJfQorCQl9CisKIAkJLyogcGF0dGVybiBtYXRjaCAnYnBmX2FkZCBSeCwg aW1tJyBpbnN0cnVjdGlvbiAqLwogCQlpZiAob3Bjb2RlID09IEJQRl9BREQgJiYgQlBGX0NMQVNT KGluc24tPmNvZGUpID09IEJQRl9BTFU2NCAmJgogCQkgICAgcmVnc1tpbnNuLT5kc3RfcmVnXS50 eXBlID09IEZSQU1FX1BUUiAmJgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQv Y29yZS9maWx0ZXIuYwppbmRleCBiYjE4YzM2Li40OWI0NDg3IDEwMDY0NAotLS0gYS9uZXQvY29y ZS9maWx0ZXIuYworKysgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtNzgxLDYgKzc4MSwxMSBAQCBz dGF0aWMgaW50IGJwZl9jaGVja19jbGFzc2ljKGNvbnN0IHN0cnVjdCBzb2NrX2ZpbHRlciAqZmls dGVyLAogCQkJaWYgKGZ0ZXN0LT5rID09IDApCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlicmVh azsKKwkJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOgorCQljYXNlIEJQRl9BTFUgfCBC UEZfUlNIIHwgQlBGX0s6CisJCQlpZiAoZnRlc3QtPmsgPj0gMzIpCisJCQkJcmV0dXJuIC1FSU5W QUw7CisJCQlicmVhazsKIAkJY2FzZSBCUEZfTEQgfCBCUEZfTUVNOgogCQljYXNlIEJQRl9MRFgg fCBCUEZfTUVNOgogCQljYXNlIEJQRl9TVDoKLS0gCjIuMS4wCgoKRnJvbSBhMDFhZTFkNGVmNzJj MTMwZDRkNWQ2ZTE5ZGM5NmYzOGM4Yjg4OWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IEZyaSwgMTUgSmFuIDIw MTYgMDQ6NTY6NTYgLTA4MDAKU3ViamVjdDogW1BBVENIIDI3LzQwXSBpcHY2OiB1cGRhdGUgc2ti LT5jc3VtIHdoZW4gQ0UgbWFyayBpcyBwcm9wYWdhdGVkCgpbIFVwc3RyZWFtIGNvbW1pdCAzNGFl NmExYWEwNTQwZjBmNzgxZGQyNjUzNjYwMzYzNTVmZGM4OTMwIF0KCldoZW4gYSB0dW5uZWwgZGVj YXBzdWxhdGVzIHRoZSBvdXRlciBoZWFkZXIsIGl0IGhhcyB0byBjb21wbHkKd2l0aCBSRkMgNjA4 MCBhbmQgZXZlbnR1YWxseSBwcm9wYWdhdGUgQ0UgbWFyayBpbnRvIGlubmVyIGhlYWRlci4KCkl0 IHR1cm5zIG91dCBJUDZfRUNOX3NldF9jZSgpIGRvZXMgbm90IGNvcnJlY3RseSB1cGRhdGUgc2ti LT5jc3VtCmZvciBDSEVDS1NVTV9DT01QTEVURSBwYWNrZXRzLCB0cmlnZ2VyaW5nIGluZmFtb3Vz ICJodyBjc3VtIGZhaWx1cmUiCm1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuCgpTaWduZWQtb2Zm LWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkFja2VkLWJ5OiBIZXJiZXJ0 IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMu IE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pbmV0X2Vjbi5o ICAgICAgIHwgMTkgKysrKysrKysrKysrKysrKy0tLQogbmV0L2lwdjYveGZybTZfbW9kZV90dW5u ZWwuYyB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaW5ldF9lY24uaCBiL2luY2x1ZGUvbmV0 L2luZXRfZWNuLmgKaW5kZXggODRiMjA4My4uMGRjMGE1MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9u ZXQvaW5ldF9lY24uaAorKysgYi9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oCkBAIC0xMTEsMTEgKzEx MSwyNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXB2NF9jb3B5X2RzY3AodW5zaWduZWQgaW50IGRz Y3AsIHN0cnVjdCBpcGhkciAqaW5uZXIpCiAKIHN0cnVjdCBpcHY2aGRyOwogCi1zdGF0aWMgaW5s aW5lIGludCBJUDZfRUNOX3NldF9jZShzdHJ1Y3QgaXB2NmhkciAqaXBoKQorLyogTm90ZToKKyAq IElQX0VDTl9zZXRfY2UoKSBoYXMgdG8gdHdlYWsgSVBWNCBjaGVja3N1bSB3aGVuIHNldHRpbmcg Q0UsCisgKiBtZWFuaW5nIGJvdGggY2hhbmdlcyBoYXZlIG5vIGVmZmVjdCBvbiBza2ItPmNzdW0g aWYvd2hlbiBDSEVDS1NVTV9DT01QTEVURQorICogSW4gSVB2NiBjYXNlLCBubyBjaGVja3N1bSBj b21wZW5zYXRlcyB0aGUgY2hhbmdlIGluIElQdjYgaGVhZGVyLAorICogc28gd2UgaGF2ZSB0byB1 cGRhdGUgc2tiLT5jc3VtLgorICovCitzdGF0aWMgaW5saW5lIGludCBJUDZfRUNOX3NldF9jZShz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2NmhkciAqaXBoKQogeworCV9fYmUzMiBmcm9t LCB0bzsKKwogCWlmIChJTkVUX0VDTl9pc19ub3RfZWN0KGlwdjZfZ2V0X2RzZmllbGQoaXBoKSkp CiAJCXJldHVybiAwOwotCSooX19iZTMyKilpcGggfD0gaHRvbmwoSU5FVF9FQ05fQ0UgPDwgMjAp OworCisJZnJvbSA9ICooX19iZTMyICopaXBoOworCXRvID0gZnJvbSB8IGh0b25sKElORVRfRUNO X0NFIDw8IDIwKTsKKwkqKF9fYmUzMiAqKWlwaCA9IHRvOworCWlmIChza2ItPmlwX3N1bW1lZCA9 PSBDSEVDS1NVTV9DT01QTEVURSkKKwkJc2tiLT5jc3VtID0gY3N1bV9hZGQoY3N1bV9zdWIoc2ti LT5jc3VtLCBmcm9tKSwgdG8pOwogCXJldHVybiAxOwogfQogCkBAIC0xNDIsNyArMTU1LDcgQEAg c3RhdGljIGlubGluZSBpbnQgSU5FVF9FQ05fc2V0X2NlKHN0cnVjdCBza19idWZmICpza2IpCiAJ Y2FzZSBjcHVfdG9fYmUxNihFVEhfUF9JUFY2KToKIAkJaWYgKHNrYl9uZXR3b3JrX2hlYWRlcihz a2IpICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSA8PQogCQkgICAgc2tiX3RhaWxfcG9pbnRlcihz a2IpKQotCQkJcmV0dXJuIElQNl9FQ05fc2V0X2NlKGlwdjZfaGRyKHNrYikpOworCQkJcmV0dXJu IElQNl9FQ05fc2V0X2NlKHNrYiwgaXB2Nl9oZHIoc2tiKSk7CiAJCWJyZWFrOwogCX0KIApkaWZm IC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfbW9kZV90dW5uZWwuYyBiL25ldC9pcHY2L3hmcm02X21v ZGVfdHVubmVsLmMKaW5kZXggZjdmYmRiYS4uMzcyODU1ZSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYv eGZybTZfbW9kZV90dW5uZWwuYworKysgYi9uZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5lbC5jCkBA IC0yMyw3ICsyMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcGlwNl9lY25fZGVjYXBzdWxhdGUo c3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaXB2NmhkciAqaW5uZXJfaXBoID0gaXBpcHY2 X2hkcihza2IpOwogCiAJaWYgKElORVRfRUNOX2lzX2NlKFhGUk1fTU9ERV9TS0JfQ0Ioc2tiKS0+ dG9zKSkKLQkJSVA2X0VDTl9zZXRfY2UoaW5uZXJfaXBoKTsKKwkJSVA2X0VDTl9zZXRfY2Uoc2ti LCBpbm5lcl9pcGgpOwogfQogCiAvKiBBZGQgZW5jYXBzdWxhdGlvbiBoZWFkZXIuCi0tIAoyLjEu MAoKCkZyb20gOWViZDc5NTM3NjM1MDc4YzgzYzNiNzgxODQyZGY2OWI0MGU0Njc1ZSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmlrb2xheSBBbGVrc2FuZHJvdiA8bmlrb2xheUBjdW11 bHVzbmV0d29ya3MuY29tPgpEYXRlOiBGcmksIDE1IEphbiAyMDE2IDE5OjAzOjU0ICswMTAwClN1 YmplY3Q6IFtQQVRDSCAyOC80MF0gYnJpZGdlOiBmaXggbG9ja2RlcCBhZGRyX2xpc3RfbG9jayBm YWxzZSBwb3NpdGl2ZSBzcGxhdAoKWyBVcHN0cmVhbSBjb21taXQgYzY4OTRkZWM4ZWE5YWUwNTc0 NzEyNGRjZTk4YjNiNWMyZTY5YjE2OCBdCgpBZnRlciBwcm9taXNjIG1vZGUgbWFuYWdlbWVudCB3 YXMgaW50cm9kdWNlZCBhIGJyaWRnZSBkZXZpY2UgY291bGQgZG8KZGV2X3NldF9wcm9taXNjdWl0 eSBmcm9tIGl0cyBuZG9fY2hhbmdlX3J4X2ZsYWdzKCkgY2FsbGJhY2sgd2hpY2ggaW4KdHVybiBj YW4gYmUgY2FsbGVkIGFmdGVyIHRoZSBicmlkZ2UncyBhZGRyX2xpc3RfbG9jayBoYXMgYmVlbiB0 YWtlbgooZS5nLiBieSBkZXZfdWNfYWRkKS4gVGhpcyBjYXVzZXMgYSBmYWxzZSBwb3NpdGl2ZSBs b2NrZGVwIHNwbGF0IGJlY2F1c2UKdGhlIHBvcnQgaW50ZXJmYWNlcycgYWRkcl9saXN0X2xvY2sg aXMgdGFrZW4gd2hlbiBicl9tYW5hZ2VfcHJvbWlzYygpCnJ1bnMgYWZ0ZXIgdGhlIGJyaWRnZSdz IGFkZHIgbGlzdCBsb2NrIHdhcyBhbHJlYWR5IHRha2VuLgpUbyByZW1vdmUgdGhlIGZhbHNlIHBv c2l0aXZlIGludHJvZHVjZSBhIGN1c3RvbSBicmlkZ2UgYWRkcl9saXN0X2xvY2sKY2xhc3MgYW5k IHNldCBpdCBvbiBicmlkZ2UgaW5pdC4KQSBzaW1wbGUgd2F5IHRvIHJlcHJvZHVjZSB0aGlzIGlz IHdpdGggdGhlIGZvbGxvd2luZzoKJCBicmN0bCBhZGRiciBicjAKJCBpcCBsIGFkZCBsIGJyMCBi cjAuMTAwIHR5cGUgdmxhbiBpZCAxMDAKJCBpcCBsIHNldCBicjAgdXAKJCBpcCBsIHNldCBicjAu MTAwIHVwCiQgZWNobyAxID4gL3N5cy9jbGFzcy9uZXQvYnIwL2JyaWRnZS92bGFuX2ZpbHRlcmlu ZwokIGJyY3RsIGFkZGlmIGJyMCBldGgwClNwbGF0OgpbICAgNDMuNjg0MzI1XSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KWyAgIDQzLjY4NDQ4NV0gWyBJTkZP OiBwb3NzaWJsZSByZWN1cnNpdmUgbG9ja2luZyBkZXRlY3RlZCBdClsgICA0My42ODQ2MzZdIDQu NC4wLXJjOCsgIzU0IE5vdCB0YWludGVkClsgICA0My42ODQ3NTVdIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpbICAgNDMuNjg0OTA2XSBicmN0bC8xMTg3IGlz IHRyeWluZyB0byBhY3F1aXJlIGxvY2s6ClsgICA0My42ODUwNDddICAoX3htaXRfRVRIRVIpeysu Li4uLn0sIGF0OiBbPGZmZmZmZmZmODE1MDE2OWU+XSBkZXZfc2V0X3J4X21vZGUrMHgxZS8weDQw ClsgICA0My42ODU0NjBdICBidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRpbmcgbG9jazoKWyAgIDQz LjY4NTYxOF0gIChfeG1pdF9FVEhFUil7Ky4uLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4MTUwNzJhNz5d IGRldl91Y19hZGQrMHgyNy8weDgwClsgICA0My42ODYwMTVdICBvdGhlciBpbmZvIHRoYXQgbWln aHQgaGVscCB1cyBkZWJ1ZyB0aGlzOgpbICAgNDMuNjg2MzE2XSAgUG9zc2libGUgdW5zYWZlIGxv Y2tpbmcgc2NlbmFyaW86CgpbICAgNDMuNjg2NzQzXSAgICAgICAgQ1BVMApbICAgNDMuNjg2OTY3 XSAgICAgICAgLS0tLQpbICAgNDMuNjg3MTk3XSAgIGxvY2soX3htaXRfRVRIRVIpOwpbICAgNDMu Njg3NTQ0XSAgIGxvY2soX3htaXRfRVRIRVIpOwpbICAgNDMuNjg3ODg2XSAqKiogREVBRExPQ0sg KioqCgpbICAgNDMuNjg4NDM4XSAgTWF5IGJlIGR1ZSB0byBtaXNzaW5nIGxvY2sgbmVzdGluZyBu b3RhdGlvbgoKWyAgIDQzLjY4ODg4Ml0gMiBsb2NrcyBoZWxkIGJ5IGJyY3RsLzExODc6ClsgICA0 My42ODkxMzRdICAjMDogIChydG5sX211dGV4KXsrLisuKy59LCBhdDogWzxmZmZmZmZmZjgxNTEw MzE3Pl0gcnRubF9sb2NrKzB4MTcvMHgyMApbICAgNDMuNjg5ODUyXSAgIzE6ICAoX3htaXRfRVRI RVIpeysuLi4uLn0sIGF0OiBbPGZmZmZmZmZmODE1MDcyYTc+XSBkZXZfdWNfYWRkKzB4MjcvMHg4 MApbICAgNDMuNjkwNTc1XSBzdGFjayBiYWNrdHJhY2U6ClsgICA0My42OTA5NzBdIENQVTogMCBQ SUQ6IDExODcgQ29tbTogYnJjdGwgTm90IHRhaW50ZWQgNC40LjAtcmM4KyAjNTQKWyAgIDQzLjY5 MTI3MF0gSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5 NiksIEJJT1MgMS44LjEtMjAxNTAzMThfMTgzMzU4LSAwNC8wMS8yMDE0ClsgICA0My42OTE3NzBd ICBmZmZmZmZmZjgyNmEyNWMwIGZmZmY4ODAwMzY5ZmI4ZTAgZmZmZmZmZmY4MTM2MGNlYiBmZmZm ZmZmZjgyNmEyNWMwClsgICA0My42OTI0MjVdICBmZmZmODgwMDM2OWZiOWI4IGZmZmZmZmZmODEw ZDA0NjYgZmZmZjg4MDAzNjlmYjk2OCBmZmZmZmZmZjgxNTM3MTM5ClsgICA0My42OTMwNzFdICBm ZmZmODgwMDNhMDhjODgwIDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDBmZmZmZmZmZiAwMDAwMDAw MDAyMDgwMDIwClsgICA0My42OTM3MDldIENhbGwgVHJhY2U6ClsgICA0My42OTM5MzFdICBbPGZm ZmZmZmZmODEzNjBjZWI+XSBkdW1wX3N0YWNrKzB4NGIvMHg3MApbICAgNDMuNjk0MTk5XSAgWzxm ZmZmZmZmZjgxMGQwNDY2Pl0gX19sb2NrX2FjcXVpcmUrMHgxZTQ2LzB4MWU5MApbICAgNDMuNjk0 NDgzXSAgWzxmZmZmZmZmZjgxNTM3MTM5Pl0gPyBuZXRsaW5rX2Jyb2FkY2FzdF9maWx0ZXJlZCsw eDEzOS8weDNlMApbICAgNDMuNjk0Nzg5XSAgWzxmZmZmZmZmZjgxNTNiNWRhPl0gPyBubG1zZ19u b3RpZnkrMHg1YS8weGMwClsgICA0My42OTUwNjRdICBbPGZmZmZmZmZmODEwZDEwZjU+XSBsb2Nr X2FjcXVpcmUrMHhlNS8weDFmMApbICAgNDMuNjk1MzQwXSAgWzxmZmZmZmZmZjgxNTAxNjllPl0g PyBkZXZfc2V0X3J4X21vZGUrMHgxZS8weDQwClsgICA0My42OTU2MjNdICBbPGZmZmZmZmZmODE1 ZWRlYTU+XSBfcmF3X3NwaW5fbG9ja19iaCsweDQ1LzB4ODAKWyAgIDQzLjY5NTkwMV0gIFs8ZmZm ZmZmZmY4MTUwMTY5ZT5dID8gZGV2X3NldF9yeF9tb2RlKzB4MWUvMHg0MApbICAgNDMuNjk2MTgw XSAgWzxmZmZmZmZmZjgxNTAxNjllPl0gZGV2X3NldF9yeF9tb2RlKzB4MWUvMHg0MApbICAgNDMu Njk2NDYwXSAgWzxmZmZmZmZmZjgxNTAxODljPl0gZGV2X3NldF9wcm9taXNjdWl0eSsweDNjLzB4 NTAKWyAgIDQzLjY5Njc1MF0gIFs8ZmZmZmZmZmZhMDU4Njg0NT5dIGJyX3BvcnRfc2V0X3Byb21p c2MrMHgyNS8weDUwIFticmlkZ2VdClsgICA0My42OTcwNTJdICBbPGZmZmZmZmZmYTA1ODY5YWE+ XSBicl9tYW5hZ2VfcHJvbWlzYysweDhhLzB4ZTAgW2JyaWRnZV0KWyAgIDQzLjY5NzM0OF0gIFs8 ZmZmZmZmZmZhMDU4MjZlZT5dIGJyX2Rldl9jaGFuZ2VfcnhfZmxhZ3MrMHgxZS8weDIwIFticmlk Z2VdClsgICA0My42OTc2NTVdICBbPGZmZmZmZmZmODE1MDE1MzI+XSBfX2Rldl9zZXRfcHJvbWlz Y3VpdHkrMHgxMzIvMHgxZjAKWyAgIDQzLjY5Nzk0M10gIFs8ZmZmZmZmZmY4MTUwMTY3Mj5dIF9f ZGV2X3NldF9yeF9tb2RlKzB4ODIvMHg5MApbICAgNDMuNjk4MjIzXSAgWzxmZmZmZmZmZjgxNTA3 MmRlPl0gZGV2X3VjX2FkZCsweDVlLzB4ODAKWyAgIDQzLjY5ODQ5OF0gIFs8ZmZmZmZmZmZhMDVi M2M2Mj5dIHZsYW5fZGV2aWNlX2V2ZW50KzB4NTQyLzB4NjUwIFs4MDIxcV0KWyAgIDQzLjY5ODc5 OF0gIFs8ZmZmZmZmZmY4MTA5ODg2ZD5dIG5vdGlmaWVyX2NhbGxfY2hhaW4rMHg1ZC8weDgwClsg ICA0My42OTkwODNdICBbPGZmZmZmZmZmODEwOTg4YjY+XSByYXdfbm90aWZpZXJfY2FsbF9jaGFp bisweDE2LzB4MjAKWyAgIDQzLjY5OTM3NF0gIFs8ZmZmZmZmZmY4MTRmNDU2ZT5dIGNhbGxfbmV0 ZGV2aWNlX25vdGlmaWVyc19pbmZvKzB4NmUvMHg4MApbICAgNDMuNjk5Njc4XSAgWzxmZmZmZmZm ZjgxNGY0NTk2Pl0gY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKzB4MTYvMHgyMApbICAgNDMuNjk5 OTczXSAgWzxmZmZmZmZmZmEwNTg3MmJlPl0gYnJfYWRkX2lmKzB4NDdlLzB4NGMwIFticmlkZ2Vd ClsgICA0My43MDAyNTldICBbPGZmZmZmZmZmYTA1ODgwMWU+XSBhZGRfZGVsX2lmKzB4NmUvMHg4 MCBbYnJpZGdlXQpbICAgNDMuNzAwNTQ4XSAgWzxmZmZmZmZmZmEwNTg4YjVmPl0gYnJfZGV2X2lv Y3RsKzB4YWYvMHhjMCBbYnJpZGdlXQpbICAgNDMuNzAwODM2XSAgWzxmZmZmZmZmZjgxNTFhN2Fj Pl0gZGV2X2lmc2lvYysweDMwYy8weDNjMApbICAgNDMuNzAxMTA2XSAgWzxmZmZmZmZmZjgxNTFh YWM5Pl0gZGV2X2lvY3RsKzB4ZjkvMHg2ZjAKWyAgIDQzLjcwMTM3OV0gIFs8ZmZmZmZmZmY4MTI1 NDM0NT5dID8gbW50cHV0X25vX2V4cGlyZSsweDUvMHg0NTAKWyAgIDQzLjcwMTY2NV0gIFs8ZmZm ZmZmZmY4MTI1NDNlZT5dID8gbW50cHV0X25vX2V4cGlyZSsweGFlLzB4NDUwClsgICA0My43MDE5 NDddICBbPGZmZmZmZmZmODE0ZDdiMDI+XSBzb2NrX2RvX2lvY3RsKzB4NDIvMHg1MApbICAgNDMu NzAyMjE5XSAgWzxmZmZmZmZmZjgxNGQ4MTc1Pl0gc29ja19pb2N0bCsweDFlNS8weDI5MApbICAg NDMuNzAyNTAwXSAgWzxmZmZmZmZmZjgxMjQyZDBiPl0gZG9fdmZzX2lvY3RsKzB4MmNiLzB4NWMw ClsgICA0My43MDI3NzFdICBbPGZmZmZmZmZmODEyNDMwNzk+XSBTeVNfaW9jdGwrMHg3OS8weDkw ClsgICA0My43MDMwMzNdICBbPGZmZmZmZmZmODE1ZWViYjY+XSBlbnRyeV9TWVNDQUxMXzY0X2Zh c3RwYXRoKzB4MTYvMHg3YQoKQ0M6IFZsYWQgWWFzZXZpY2ggPHZ5YXNldmljQHJlZGhhdC5jb20+ CkNDOiBTdGVwaGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+CkNDOiBC cmlkZ2UgbGlzdCA8YnJpZGdlQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnPgpDQzogQW5keSBH b3Nwb2RhcmVrIDxnb3Nwb0BjdW11bHVzbmV0d29ya3MuY29tPgpDQzogUm9vcGEgUHJhYmh1IDxy b29wYUBjdW11bHVzbmV0d29ya3MuY29tPgpGaXhlczogMjc5NmQwYzY0OGM5ICgiYnJpZGdlOiBB dXRvbWF0aWNhbGx5IG1hbmFnZSBwb3J0IHByb21pc2N1b3VzIG1vZGUuIikKUmVwb3J0ZWQtYnk6 IEFuZHkgR29zcG9kYXJlayA8Z29zcG9AY3VtdWx1c25ldHdvcmtzLmNvbT4KU2lnbmVkLW9mZi1i eTogTmlrb2xheSBBbGVrc2FuZHJvdiA8bmlrb2xheUBjdW11bHVzbmV0d29ya3MuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0 L2JyaWRnZS9icl9kZXZpY2UuYyB8IDggKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX2RldmljZS5jIGIvbmV0L2JyaWRn ZS9icl9kZXZpY2UuYwppbmRleCA2ZWQyZmViLi45NzgwNjAzIDEwMDY0NAotLS0gYS9uZXQvYnJp ZGdlL2JyX2RldmljZS5jCisrKyBiL25ldC9icmlkZ2UvYnJfZGV2aWNlLmMKQEAgLTI4LDYgKzI4 LDggQEAKIGNvbnN0IHN0cnVjdCBuZl9icl9vcHMgX19yY3UgKm5mX2JyX29wcyBfX3JlYWRfbW9z dGx5OwogRVhQT1JUX1NZTUJPTF9HUEwobmZfYnJfb3BzKTsKIAorc3RhdGljIHN0cnVjdCBsb2Nr X2NsYXNzX2tleSBicmlkZ2VfbmV0ZGV2X2FkZHJfbG9ja19rZXk7CisKIC8qIG5ldCBkZXZpY2Ug dHJhbnNtaXQgYWx3YXlzIGNhbGxlZCB3aXRoIEJIIGRpc2FibGVkICovCiBuZXRkZXZfdHhfdCBi cl9kZXZfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQog ewpAQCAtODcsNiArODksMTEgQEAgb3V0OgogCXJldHVybiBORVRERVZfVFhfT0s7CiB9CiAKK3N0 YXRpYyB2b2lkIGJyX3NldF9sb2NrZGVwX2NsYXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7 CisJbG9ja2RlcF9zZXRfY2xhc3MoJmRldi0+YWRkcl9saXN0X2xvY2ssICZicmlkZ2VfbmV0ZGV2 X2FkZHJfbG9ja19rZXkpOworfQorCiBzdGF0aWMgaW50IGJyX2Rldl9pbml0KHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IG5ldF9icmlkZ2UgKmJyID0gbmV0ZGV2X3ByaXYoZGV2 KTsKQEAgLTk5LDYgKzEwNiw3IEBAIHN0YXRpYyBpbnQgYnJfZGV2X2luaXQoc3RydWN0IG5ldF9k ZXZpY2UgKmRldikKIAllcnIgPSBicl92bGFuX2luaXQoYnIpOwogCWlmIChlcnIpCiAJCWZyZWVf cGVyY3B1KGJyLT5zdGF0cyk7CisJYnJfc2V0X2xvY2tkZXBfY2xhc3MoZGV2KTsKIAogCXJldHVy biBlcnI7CiB9Ci0tIAoyLjEuMAoKCkZyb20gMzk4NTI4MGI4NjBiNzRjODJkYWQ4NGEwMThjZmY1 Zjk0NWM1MWFlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQmVuIEh1dGNoaW5ncyA8 YmVuQGRlY2FkZW50Lm9yZy51az4KRGF0ZTogU3VuLCAxIE5vdiAyMDE1IDE2OjIxOjI0ICswMDAw ClN1YmplY3Q6IFtQQVRDSCAyOS80MF0gaXNkbl9wcHA6IEFkZCBjaGVja3MgZm9yIGFsbG9jYXRp b24gZmFpbHVyZSBpbgogaXNkbl9wcHBfb3BlbigpCgpbIFVwc3RyZWFtIGNvbW1pdCAwYmFhNTdk OGRjMzJkYjc4MzY5ZDhiNTE3NmVmNTZjNWUyZTE4YWIzIF0KCkNvbXBpbGUtdGVzdGVkIG9ubHku CgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQub3JnLnVrPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJp dmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jIHwgNiArKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2IGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMgYi9k cml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMKaW5kZXggYzQxOThmYS4uODZmOWFiZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jCisrKyBiL2RyaXZlcnMvaXNkbi9pNGwv aXNkbl9wcHAuYwpAQCAtMzAxLDYgKzMwMSw4IEBAIGlzZG5fcHBwX29wZW4oaW50IG1pbiwgc3Ry dWN0IGZpbGUgKmZpbGUpCiAJaXMtPmNvbXBmbGFncyA9IDA7CiAKIAlpcy0+cmVzZXQgPSBpc2Ru X3BwcF9jY3BfcmVzZXRfYWxsb2MoaXMpOworCWlmICghaXMtPnJlc2V0KQorCQlyZXR1cm4gLUVO T01FTTsKIAogCWlzLT5scCA9IE5VTEw7CiAJaXMtPm1wX3NlcW5vID0gMDsgICAgICAgLyogTVAg c2VxdWVuY2UgbnVtYmVyICovCkBAIC0zMjAsNiArMzIyLDEwIEBAIGlzZG5fcHBwX29wZW4oaW50 IG1pbiwgc3RydWN0IGZpbGUgKmZpbGUpCiAJICogVkogaGVhZGVyIGNvbXByZXNzaW9uIGluaXQK IAkgKi8KIAlpcy0+c2xjb21wID0gc2xoY19pbml0KDE2LCAxNik7CS8qIG5vdCBuZWNlc3Nhcnkg Zm9yIDIuIGxpbmsgaW4gYnVuZGxlICovCisJaWYgKCFpcy0+c2xjb21wKSB7CisJCWlzZG5fcHBw X2NjcF9yZXNldF9mcmVlKGlzKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQogI2VuZGlmCiAjaWZk ZWYgQ09ORklHX0lQUFBfRklMVEVSCiAJaXMtPnBhc3NfZmlsdGVyID0gTlVMTDsKLS0gCjIuMS4w CgoKRnJvbSAxYmUxNDU3NTBmODUzMDI1MzBlMGI2NTA0ZWZmNjIzZGM5ZDkzYTM1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQub3JnLnVr PgpEYXRlOiBTdW4sIDEgTm92IDIwMTUgMTY6MjI6NTMgKzAwMDAKU3ViamVjdDogW1BBVENIIDMw LzQwXSBwcHAsIHNsaXA6IFZhbGlkYXRlIFZKIGNvbXByZXNzaW9uIHNsb3QgcGFyYW1ldGVycwog Y29tcGxldGVseQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo YXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKWyBVcHN0cmVhbSBj b21taXQgNGFiNDJkNzhlMzdhMjk0YWM3YmM1NjkwMWQ1NjNjNjQyZTAzYzRhZSBdCgpDdXJyZW50 bHkgc2xoY19pbml0KCkgdHJlYXRzIG91dC1vZi1yYW5nZSB2YWx1ZXMgb2YgcnNsb3RzIGFuZCB0 c2xvdHMKYXMgZXF1aXZhbGVudCB0byAwLCBleGNlcHQgdGhhdCBpZiB0c2xvdHMgaXMgdG9vIGxh cmdlIGl0IHdpbGwKZGVyZWZlcmVuY2UgYSBudWxsIHBvaW50ZXIgKENWRS0yMDE1LTc3OTkpLgoK QWRkIGEgcmFuZ2UtY2hlY2sgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gYW5kIG1ha2UgaXQg cmV0dXJuIGFuCkVSUl9QVFIoKSBvbiBlcnJvciBpbnN0ZWFkIG9mIE5VTEwuICBDaGFuZ2UgdGhl IGNhbGxlcnMgYWNjb3JkaW5nbHkuCgpDb21waWxlLXRlc3RlZCBvbmx5LgoKUmVwb3J0ZWQtYnk6 IOmDreawuOWImiA8Z3VveW9uZ2dhbmdAMzYwLmNuPgpSZWZlcmVuY2VzOiBodHRwOi8vYXJ0aWNs ZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5zZWN1cml0eS5vc3MuZ2VuZXJhbC8xNzkwOApTaWduZWQt b2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQub3JnLnVrPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9pc2Ru L2k0bC9pc2RuX3BwcC5jICAgfCAxMCArKysrLS0tLS0tCiBkcml2ZXJzL25ldC9wcHAvcHBwX2dl bmVyaWMuYyB8ICA2ICsrLS0tLQogZHJpdmVycy9uZXQvc2xpcC9zbGhjLmMgICAgICAgfCAxMiAr KysrKysrKy0tLS0KIGRyaXZlcnMvbmV0L3NsaXAvc2xpcC5jICAgICAgIHwgIDIgKy0KIDQgZmls ZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3Bw cC5jCmluZGV4IDg2ZjlhYmUuLjljMWU4YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9pNGwv aXNkbl9wcHAuYworKysgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMKQEAgLTMyMiw5ICsz MjIsOSBAQCBpc2RuX3BwcF9vcGVuKGludCBtaW4sIHN0cnVjdCBmaWxlICpmaWxlKQogCSAqIFZK IGhlYWRlciBjb21wcmVzc2lvbiBpbml0CiAJICovCiAJaXMtPnNsY29tcCA9IHNsaGNfaW5pdCgx NiwgMTYpOwkvKiBub3QgbmVjZXNzYXJ5IGZvciAyLiBsaW5rIGluIGJ1bmRsZSAqLwotCWlmICgh aXMtPnNsY29tcCkgeworCWlmIChJU19FUlIoaXMtPnNsY29tcCkpIHsKIAkJaXNkbl9wcHBfY2Nw X3Jlc2V0X2ZyZWUoaXMpOwotCQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJuIFBUUl9FUlIoaXMt PnNsY29tcCk7CiAJfQogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0lQUFBfRklMVEVSCkBAIC01NzMs MTAgKzU3Myw4IEBAIGlzZG5fcHBwX2lvY3RsKGludCBtaW4sIHN0cnVjdCBmaWxlICpmaWxlLCB1 bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAkJCWlzLT5tYXhjaWQgPSB2YWw7 CiAjaWZkZWYgQ09ORklHX0lTRE5fUFBQX1ZKCiAJCQlzbHRtcCA9IHNsaGNfaW5pdCgxNiwgdmFs KTsKLQkJCWlmICghc2x0bXApIHsKLQkJCQlwcmludGsoS0VSTl9FUlIgImlwcHAsIGNhbid0IHJl YWxsb2Mgc2xoYyBzdHJ1Y3RcbiIpOwotCQkJCXJldHVybiAtRU5PTUVNOwotCQkJfQorCQkJaWYg KElTX0VSUihzbHRtcCkpCisJCQkJcmV0dXJuIFBUUl9FUlIoc2x0bXApOwogCQkJaWYgKGlzLT5z bGNvbXApCiAJCQkJc2xoY19mcmVlKGlzLT5zbGNvbXApOwogCQkJaXMtPnNsY29tcCA9IHNsdG1w OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMgYi9kcml2ZXJzL25l dC9wcHAvcHBwX2dlbmVyaWMuYwppbmRleCBlZDAwNDQ2Li45YTg2M2M2IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYworKysgYi9kcml2ZXJzL25ldC9wcHAvcHBwX2dl bmVyaWMuYwpAQCAtNzIxLDEwICs3MjEsOCBAQCBzdGF0aWMgbG9uZyBwcHBfaW9jdGwoc3RydWN0 IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQkJdmFs ICY9IDB4ZmZmZjsKIAkJfQogCQl2aiA9IHNsaGNfaW5pdCh2YWwyKzEsIHZhbCsxKTsKLQkJaWYg KCF2aikgewotCQkJbmV0ZGV2X2VycihwcHAtPmRldiwKLQkJCQkgICAiUFBQOiBubyBtZW1vcnkg KFZKIGNvbXByZXNzb3IpXG4iKTsKLQkJCWVyciA9IC1FTk9NRU07CisJCWlmIChJU19FUlIodmop KSB7CisJCQllcnIgPSBQVFJfRVJSKHZqKTsKIAkJCWJyZWFrOwogCQl9CiAJCXBwcF9sb2NrKHBw cCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbGlwL3NsaGMuYyBiL2RyaXZlcnMvbmV0L3Ns aXAvc2xoYy5jCmluZGV4IDA3OWY3YWQuLjI3ZWQyNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3NsaXAvc2xoYy5jCisrKyBiL2RyaXZlcnMvbmV0L3NsaXAvc2xoYy5jCkBAIC04NCw4ICs4NCw5 IEBAIHN0YXRpYyBsb25nIGRlY29kZSh1bnNpZ25lZCBjaGFyICoqY3BwKTsKIHN0YXRpYyB1bnNp Z25lZCBjaGFyICogcHV0MTYodW5zaWduZWQgY2hhciAqY3AsIHVuc2lnbmVkIHNob3J0IHgpOwog c3RhdGljIHVuc2lnbmVkIHNob3J0IHB1bGwxNih1bnNpZ25lZCBjaGFyICoqY3BwKTsKIAotLyog SW5pdGlhbGl6ZSBjb21wcmVzc2lvbiBkYXRhIHN0cnVjdHVyZQorLyogQWxsb2NhdGUgY29tcHJl c3Npb24gZGF0YSBzdHJ1Y3R1cmUKICAqCXNsb3RzIG11c3QgYmUgaW4gcmFuZ2UgMCB0byAyNTUg KHplcm8gbWVhbmluZyBubyBjb21wcmVzc2lvbikKKyAqIFJldHVybnMgcG9pbnRlciB0byBzdHJ1 Y3R1cmUgb3IgRVJSX1BUUigpIG9uIGVycm9yLgogICovCiBzdHJ1Y3Qgc2xjb21wcmVzcyAqCiBz bGhjX2luaXQoaW50IHJzbG90cywgaW50IHRzbG90cykKQEAgLTk0LDExICs5NSwxNCBAQCBzbGhj X2luaXQoaW50IHJzbG90cywgaW50IHRzbG90cykKIAlyZWdpc3RlciBzdHJ1Y3QgY3N0YXRlICp0 czsKIAlzdHJ1Y3Qgc2xjb21wcmVzcyAqY29tcDsKIAorCWlmIChyc2xvdHMgPCAwIHx8IHJzbG90 cyA+IDI1NSB8fCB0c2xvdHMgPCAwIHx8IHRzbG90cyA+IDI1NSkKKwkJcmV0dXJuIEVSUl9QVFIo LUVJTlZBTCk7CisKIAljb21wID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNsY29tcHJlc3MpLCBH RlBfS0VSTkVMKTsKIAlpZiAoISBjb21wKQogCQlnb3RvIG91dF9mYWlsOwogCi0JaWYgKCByc2xv dHMgPiAwICAmJiAgcnNsb3RzIDwgMjU2ICkgeworCWlmIChyc2xvdHMgPiAwKSB7CiAJCXNpemVf dCByc2l6ZSA9IHJzbG90cyAqIHNpemVvZihzdHJ1Y3QgY3N0YXRlKTsKIAkJY29tcC0+cnN0YXRl ID0ga3phbGxvYyhyc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghIGNvbXAtPnJzdGF0ZSkKQEAg LTEwNiw3ICsxMTAsNyBAQCBzbGhjX2luaXQoaW50IHJzbG90cywgaW50IHRzbG90cykKIAkJY29t cC0+cnNsb3RfbGltaXQgPSByc2xvdHMgLSAxOwogCX0KIAotCWlmICggdHNsb3RzID4gMCAgJiYg IHRzbG90cyA8IDI1NiApIHsKKwlpZiAodHNsb3RzID4gMCkgewogCQlzaXplX3QgdHNpemUgPSB0 c2xvdHMgKiBzaXplb2Yoc3RydWN0IGNzdGF0ZSk7CiAJCWNvbXAtPnRzdGF0ZSA9IGt6YWxsb2Mo dHNpemUsIEdGUF9LRVJORUwpOwogCQlpZiAoISBjb21wLT50c3RhdGUpCkBAIC0xNDEsNyArMTQ1 LDcgQEAgb3V0X2ZyZWUyOgogb3V0X2ZyZWU6CiAJa2ZyZWUoY29tcCk7CiBvdXRfZmFpbDoKLQly ZXR1cm4gTlVMTDsKKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIH0KIAogCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC9zbGlwL3NsaXAuYyBiL2RyaXZlcnMvbmV0L3NsaXAvc2xpcC5jCmluZGV4 IDA1Mzg3YjEuLmExN2Q4NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NsaXAvc2xpcC5jCisr KyBiL2RyaXZlcnMvbmV0L3NsaXAvc2xpcC5jCkBAIC0xNjQsNyArMTY0LDcgQEAgc3RhdGljIGlu dCBzbF9hbGxvY19idWZzKHN0cnVjdCBzbGlwICpzbCwgaW50IG10dSkKIAlpZiAoY2J1ZmYgPT0g TlVMTCkKIAkJZ290byBlcnJfZXhpdDsKIAlzbGNvbXAgPSBzbGhjX2luaXQoMTYsIDE2KTsKLQlp ZiAoc2xjb21wID09IE5VTEwpCisJaWYgKElTX0VSUihzbGNvbXApKQogCQlnb3RvIGVycl9leGl0 OwogI2VuZGlmCiAJc3Bpbl9sb2NrX2JoKCZzbC0+bG9jayk7Ci0tIAoyLjEuMAoKCkZyb20gMjll MTY2NDAxOGNiOWJkMjk0MDY3YjcyOTZkOGFmYTlmOTAzOWFiOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KRGF0ZTogVGh1 LCAxNCBKYW4gMjAxNiAxNToyODoxOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMzEvNDBdIGJhdG1h bi1hZHY6IEF2b2lkIHJlY3Vyc2l2ZSBjYWxsX3JjdSBmb3IKIGJhdGFkdl9ibGFfY2xhaW0KClsg VXBzdHJlYW0gY29tbWl0IDYzYjM5OTI3MjI5NGU3YTkzOWNkZTQxNzkyZGNhMzhjNTQ5ZjA0ODQg XQoKVGhlIGJhdGFkdl9jbGFpbV9mcmVlX3JlZiBmdW5jdGlvbiB1c2VzIGNhbGxfcmN1IHRvIGRl bGF5IHRoZSBmcmVlIG9mIHRoZQpiYXRhZHZfYmxhX2NsYWltIG9iamVjdCB1bnRpbCBubyAoYWxy ZWFkeSBzdGFydGVkKSByY3VfcmVhZF9sb2NrIGlzIGVuYWJsZWQKYW55bW9yZS4gVGhpcyBtYWtl cyBzdXJlIHRoYXQgbm8gY29udGV4dCBpcyBzdGlsbCB0cnlpbmcgdG8gYWNjZXNzIHRoZQpvYmpl Y3Qgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQuIEJ1dCBiYXRhZHZfYmxhX2NsYWltIGFsc28gY29u dGFpbnMgYQpyZWZlcmVuY2UgdG8gYmFja2JvbmVfZ3cgd2hpY2ggbXVzdCBiZSByZW1vdmVkLgoK VGhlIHJlZmVyZW5jZSBkcm9wIG9mIGJhY2tib25lX2d3IHdhcyBkb25lIGluIHRoZSBjYWxsX3Jj dSBmdW5jdGlvbgpiYXRhZHZfY2xhaW1fZnJlZV9yY3UgYnV0IHNob3VsZCBhY3R1YWxseSBiZSBk b25lIGluIHRoZQpiYXRhZHZfY2xhaW1fcmVsZWFzZSBmdW5jdGlvbiB0byBhdm9pZCBuZXN0ZWQg Y2FsbF9yY3VzLiBUaGlzIGlzIGltcG9ydGFudApiZWNhdXNlIHJjdV9iYXJyaWVyIChlLmcuIGJh dGFkdl9zb2Z0aWZfZnJlZSBvciBiYXRhZHZfZXhpdCkgd2lsbCBub3QKZGV0ZWN0IHRoZSBpbm5l ciBjYWxsX3JjdSBhcyByZWxldmFudCBmb3IgaXRzIGV4ZWN1dGlvbi4gT3RoZXJ3aXNlIHRoaXMK YmFycmllciB3aWxsIG1vc3QgbGlrZWx5IGJlIGluc2VydGVkIGluIHRoZSBxdWV1ZSBiZWZvcmUg dGhlIGNhbGxiYWNrIG9mCnRoZSBmaXJzdCBjYWxsX3JjdSB3YXMgZXhlY3V0ZWQuIFRoZSBjYWxs ZXIgb2YgcmN1X2JhcnJpZXIgd2lsbCB0aGVyZWZvcmUKY29udGludWUgdG8gcnVuIGJlZm9yZSB0 aGUgaW5uZXIgY2FsbF9yY3UgY2FsbGJhY2sgZmluaXNoZWQuCgpGaXhlczogMjM3MjEzODdjNDA5 ICgiYmF0bWFuLWFkdjogYWRkIGJhc2ljIGJyaWRnZSBsb29wIGF2b2lkYW5jZSBjb2RlIikKU2ln bmVkLW9mZi1ieTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KQWNrZWQtYnk6 IFNpbW9uIFd1bmRlcmxpY2ggPHN3QHNpbW9ud3VuZGVybGljaC5kZT4KU2lnbmVkLW9mZi1ieTog TWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNpZ25lZC1vZmYtYnk6 IEFudG9uaW8gUXVhcnR1bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9iYXRtYW4tYWR2L2Jy aWRnZV9sb29wX2F2b2lkYW5jZS5jIHwgMTAgKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFk di9icmlkZ2VfbG9vcF9hdm9pZGFuY2UuYyBiL25ldC9iYXRtYW4tYWR2L2JyaWRnZV9sb29wX2F2 b2lkYW5jZS5jCmluZGV4IDE5MWE3MDIuLmY1ZDJmZTUgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4t YWR2L2JyaWRnZV9sb29wX2F2b2lkYW5jZS5jCisrKyBiL25ldC9iYXRtYW4tYWR2L2JyaWRnZV9s b29wX2F2b2lkYW5jZS5jCkBAIC0xMjcsMjEgKzEyNywxNyBAQCBiYXRhZHZfYmFja2JvbmVfZ3df ZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9ibGFfYmFja2JvbmVfZ3cgKmJhY2tib25lX2d3KQogfQog CiAvKiBmaW5hbGx5IGRlaW5pdGlhbGl6ZSB0aGUgY2xhaW0gKi8KLXN0YXRpYyB2b2lkIGJhdGFk dl9jbGFpbV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKK3N0YXRpYyB2b2lkIGJhdGFk dl9jbGFpbV9yZWxlYXNlKHN0cnVjdCBiYXRhZHZfYmxhX2NsYWltICpjbGFpbSkKIHsKLQlzdHJ1 Y3QgYmF0YWR2X2JsYV9jbGFpbSAqY2xhaW07Ci0KLQljbGFpbSA9IGNvbnRhaW5lcl9vZihyY3Us IHN0cnVjdCBiYXRhZHZfYmxhX2NsYWltLCByY3UpOwotCiAJYmF0YWR2X2JhY2tib25lX2d3X2Zy ZWVfcmVmKGNsYWltLT5iYWNrYm9uZV9ndyk7Ci0Ja2ZyZWUoY2xhaW0pOworCWtmcmVlX3JjdShj bGFpbSwgcmN1KTsKIH0KIAogLyogZnJlZSBhIGNsYWltLCBjYWxsIGNsYWltX2ZyZWVfcmN1IGlm IGl0cyB0aGUgbGFzdCByZWZlcmVuY2UgKi8KIHN0YXRpYyB2b2lkIGJhdGFkdl9jbGFpbV9mcmVl X3JlZihzdHJ1Y3QgYmF0YWR2X2JsYV9jbGFpbSAqY2xhaW0pCiB7CiAJaWYgKGF0b21pY19kZWNf YW5kX3Rlc3QoJmNsYWltLT5yZWZjb3VudCkpCi0JCWNhbGxfcmN1KCZjbGFpbS0+cmN1LCBiYXRh ZHZfY2xhaW1fZnJlZV9yY3UpOworCQliYXRhZHZfY2xhaW1fcmVsZWFzZShjbGFpbSk7CiB9CiAK IC8qKgotLSAKMi4xLjAKCgpGcm9tIDI5YWNjNTczODEwMTQ2ZDA5OTVjNTZmNzgyMzE5MWJlNGYw OGQ2MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNrZWxtYW5uIDxzdmVu QG5hcmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjoxOSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMzIvNDBdIGJhdG1hbi1hZHY6IEF2b2lkIHJlY3Vyc2l2ZSBjYWxsX3JjdSBm b3IgYmF0YWR2X25jX25vZGUKClsgVXBzdHJlYW0gY29tbWl0IDQ0ZThlN2U5MWQ2YzdjN2FiMTk2 ODg3NTBmNzI1NzI5MjY0MGQxYTAgXQoKVGhlIGJhdGFkdl9uY19ub2RlX2ZyZWVfcmVmIGZ1bmN0 aW9uIHVzZXMgY2FsbF9yY3UgdG8gZGVsYXkgdGhlIGZyZWUgb2YgdGhlCmJhdGFkdl9uY19ub2Rl IG9iamVjdCB1bnRpbCBubyAoYWxyZWFkeSBzdGFydGVkKSByY3VfcmVhZF9sb2NrIGlzIGVuYWJs ZWQKYW55bW9yZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gY29udGV4dCBpcyBzdGlsbCB0cnlp bmcgdG8gYWNjZXNzIHRoZQpvYmplY3Qgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQuIEJ1dCBiYXRh ZHZfbmNfbm9kZSBhbHNvIGNvbnRhaW5zIGEKcmVmZXJlbmNlIHRvIG9yaWdfbm9kZSB3aGljaCBt dXN0IGJlIHJlbW92ZWQuCgpUaGUgcmVmZXJlbmNlIGRyb3Agb2Ygb3JpZ19ub2RlIHdhcyBkb25l IGluIHRoZSBjYWxsX3JjdSBmdW5jdGlvbgpiYXRhZHZfbmNfbm9kZV9mcmVlX3JjdSBidXQgc2hv dWxkIGFjdHVhbGx5IGJlIGRvbmUgaW4gdGhlCmJhdGFkdl9uY19ub2RlX3JlbGVhc2UgZnVuY3Rp b24gdG8gYXZvaWQgbmVzdGVkIGNhbGxfcmN1cy4gVGhpcyBpcwppbXBvcnRhbnQgYmVjYXVzZSBy Y3VfYmFycmllciAoZS5nLiBiYXRhZHZfc29mdGlmX2ZyZWUgb3IgYmF0YWR2X2V4aXQpIHdpbGwK bm90IGRldGVjdCB0aGUgaW5uZXIgY2FsbF9yY3UgYXMgcmVsZXZhbnQgZm9yIGl0cyBleGVjdXRp b24uIE90aGVyd2lzZSB0aGlzCmJhcnJpZXIgd2lsbCBtb3N0IGxpa2VseSBiZSBpbnNlcnRlZCBp biB0aGUgcXVldWUgYmVmb3JlIHRoZSBjYWxsYmFjayBvZgp0aGUgZmlyc3QgY2FsbF9yY3Ugd2Fz IGV4ZWN1dGVkLiBUaGUgY2FsbGVyIG9mIHJjdV9iYXJyaWVyIHdpbGwgdGhlcmVmb3JlCmNvbnRp bnVlIHRvIHJ1biBiZWZvcmUgdGhlIGlubmVyIGNhbGxfcmN1IGNhbGxiYWNrIGZpbmlzaGVkLgoK Rml4ZXM6IGQ1NmIxNzA1ZTI4YyAoImJhdG1hbi1hZHY6IG5ldHdvcmsgY29kaW5nIC0gZGV0ZWN0 IGNvZGluZyBub2RlcyBhbmQgcmVtb3ZlIHRoZXNlIGFmdGVyIHRpbWVvdXQiKQpTaWduZWQtb2Zm LWJ5OiBTdmVuIEVja2VsbWFubiA8c3ZlbkBuYXJmYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBN YXJlayBMaW5kbmVyIDxtYXJla2xpbmRuZXJAbmVvbWFpbGJveC5jaD4KU2lnbmVkLW9mZi1ieTog QW50b25pbyBRdWFydHVsbGkgPGFAdW5zdGFibGUuY2M+Ci0tLQogbmV0L2JhdG1hbi1hZHYvbmV0 d29yay1jb2RpbmcuYyB8IDE5ICsrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4 IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4t YWR2L25ldHdvcmstY29kaW5nLmMgYi9uZXQvYmF0bWFuLWFkdi9uZXR3b3JrLWNvZGluZy5jCmlu ZGV4IGY1Mjc2YmUuLmQwOTU2ZjcgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L25ldHdvcmst Y29kaW5nLmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvbmV0d29yay1jb2RpbmcuYwpAQCAtMjAzLDI4 ICsyMDMsMjUgQEAgdm9pZCBiYXRhZHZfbmNfaW5pdF9vcmlnKHN0cnVjdCBiYXRhZHZfb3JpZ19u b2RlICpvcmlnX25vZGUpCiB9CiAKIC8qKgotICogYmF0YWR2X25jX25vZGVfZnJlZV9yY3UgLSBy Y3UgY2FsbGJhY2sgdG8gZnJlZSBhbiBuYyBub2RlIGFuZCByZW1vdmUKLSAqICBpdHMgcmVmY291 bnQgb24gdGhlIG9yaWdfbm9kZQotICogQHJjdTogcmN1IHBvaW50ZXIgb2YgdGhlIG5jIG5vZGUK KyAqIGJhdGFkdl9uY19ub2RlX3JlbGVhc2UgLSByZWxlYXNlIG5jX25vZGUgZnJvbSBsaXN0cyBh bmQgcXVldWUgZm9yIGZyZWUgYWZ0ZXIKKyAqICByY3UgZ3JhY2UgcGVyaW9kCisgKiBAbmNfbm9k ZTogdGhlIG5jIG5vZGUgdG8gZnJlZQogICovCi1zdGF0aWMgdm9pZCBiYXRhZHZfbmNfbm9kZV9m cmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKK3N0YXRpYyB2b2lkIGJhdGFkdl9uY19ub2Rl X3JlbGVhc2Uoc3RydWN0IGJhdGFkdl9uY19ub2RlICpuY19ub2RlKQogewotCXN0cnVjdCBiYXRh ZHZfbmNfbm9kZSAqbmNfbm9kZTsKLQotCW5jX25vZGUgPSBjb250YWluZXJfb2YocmN1LCBzdHJ1 Y3QgYmF0YWR2X25jX25vZGUsIHJjdSk7CiAJYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZihuY19u b2RlLT5vcmlnX25vZGUpOwotCWtmcmVlKG5jX25vZGUpOworCWtmcmVlX3JjdShuY19ub2RlLCBy Y3UpOwogfQogCiAvKioKLSAqIGJhdGFkdl9uY19ub2RlX2ZyZWVfcmVmIC0gZGVjcmVtZW50cyB0 aGUgbmMgbm9kZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseQotICogZnJlZXMgaXQKKyAqIGJhdGFk dl9uY19ub2RlX2ZyZWVfcmVmIC0gZGVjcmVtZW50IHRoZSBuYyBub2RlIHJlZmNvdW50ZXIgYW5k IHBvc3NpYmx5CisgKiAgcmVsZWFzZSBpdAogICogQG5jX25vZGU6IHRoZSBuYyBub2RlIHRvIGZy ZWUKICAqLwogc3RhdGljIHZvaWQgYmF0YWR2X25jX25vZGVfZnJlZV9yZWYoc3RydWN0IGJhdGFk dl9uY19ub2RlICpuY19ub2RlKQogewogCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZuY19ub2Rl LT5yZWZjb3VudCkpCi0JCWNhbGxfcmN1KCZuY19ub2RlLT5yY3UsIGJhdGFkdl9uY19ub2RlX2Zy ZWVfcmN1KTsKKwkJYmF0YWR2X25jX25vZGVfcmVsZWFzZShuY19ub2RlKTsKIH0KIAogLyoqCi0t IAoyLjEuMAoKCkZyb20gNzE2MWQ0MjllOWRlYjBlOGQ1YzU1MDdjZDc0YjIxYzlhMDhhZDI0NSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0 aW9uLm9yZz4KRGF0ZTogVHVlLCA1IEphbiAyMDE2IDEyOjA2OjIxICswMTAwClN1YmplY3Q6IFtQ QVRDSCAzMy80MF0gYmF0bWFuLWFkdjogRHJvcCBpbW1lZGlhdGUgYmF0YWR2X29yaWdfaWZpbmZv IGZyZWUKIGZ1bmN0aW9uCgpbIFVwc3RyZWFtIGNvbW1pdCBkZWVkOTY2MDVmNTY5NWNiOTQ1ZTBi M2Q3OTQyOTU4MTg1N2EyYjlkIF0KCkl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgdGhlIG1lbW9y eSBvZiBhbiBvYmplY3Qgd2hpY2ggaXMgcGFydCBvZiBhIGxpc3QKd2hpY2ggaXMgcHJvdGVjdGVk IGJ5IHJjdS1yZWFkLXNpZGUtY3JpdGljYWwgc2VjdGlvbnMgd2l0aG91dCBtYWtpbmcgc3VyZQp0 aGF0IG5vIG90aGVyIGNvbnRleHQgaXMgYWNjZXNzaW5nIHRoZSBvYmplY3QgYW55bW9yZS4gVGhp cyB1c3VhbGx5IGhhcHBlbnMKYnkgcmVtb3ZpbmcgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBvYmpl Y3QgYW5kIHRoZW4gd2FpdGluZyB1bnRpbCB0aGUgcmN1CmdyYWNlIHBlcmlvZCBpcyBvdmVyIGFu ZCBubyBvbmUgKGFsbG93ZWRseSkgYWNjZXNzZXMgaXQgYW55bW9yZS4KCkJ1dCB0aGUgX25vdyBm dW5jdGlvbnMgaWdub3JlIHRoaXMgY29tcGxldGVseS4gVGhleSBmcmVlIHRoZSBvYmplY3QKZGly ZWN0bHkgZXZlbiB3aGVuIGEgZGlmZmVyZW50IGNvbnRleHQgc3RpbGwgdHJpZXMgdG8gYWNjZXNz IGl0LiBUaGlzIGhhcwp0byBiZSBhdm9pZGVkIGFuZCB0aHVzIHRoZXNlIGZ1bmN0aW9ucyBtdXN0 IGJlIHJlbW92ZWQgYW5kIGFsbCBmdW5jdGlvbnMKaGF2ZSB0byB1c2UgYmF0YWR2X29yaWdfaWZp bmZvX2ZyZWVfcmVmLgoKRml4ZXM6IDczNTFhNDgyMmQ0MiAoImJhdG1hbi1hZHY6IHNwbGl0IG91 dCByb3V0ZXIgZnJvbSBvcmlnX25vZGUiKQpTaWduZWQtb2ZmLWJ5OiBTdmVuIEVja2VsbWFubiA8 c3ZlbkBuYXJmYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBMaW5kbmVyIDxtYXJla2xp bmRuZXJAbmVvbWFpbGJveC5jaD4KU2lnbmVkLW9mZi1ieTogQW50b25pbyBRdWFydHVsbGkgPGFA dW5zdGFibGUuY2M+Ci0tLQogbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jIHwgNTkgKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MzEgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1h bi1hZHYvb3JpZ2luYXRvci5jIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IDc0 ODZkZjkuLmEwNzI4OTQgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwor KysgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKQEAgLTU1Myw3NiArNTUzLDc5IEBAIHN0 YXRpYyB2b2lkIGJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJj dSkKIH0KIAogLyoqCi0gKiBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYgLSBkZWNyZW1lbnQg dGhlIHJlZmNvdW50ZXIgYW5kIHBvc3NpYmx5IGZyZWUKLSAqICB0aGUgb3JpZ19pZmluZm8gKHdp dGhvdXQgcmN1IGNhbGxiYWNrKQorICogYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVmIC0gZGVj cmVtZW50IHRoZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseSByZWxlYXNlCisgKiAgdGhlIG9yaWdf aWZpbmZvCiAgKiBAb3JpZ19pZmluZm86IHRoZSBvcmlnX2lmaW5mbyBvYmplY3QgdG8gcmVsZWFz ZQogICovCi1zdGF0aWMgdm9pZAotYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVmX25vdyhzdHJ1 Y3QgYmF0YWR2X29yaWdfaWZpbmZvICpvcmlnX2lmaW5mbykKK3ZvaWQgYmF0YWR2X29yaWdfaWZp bmZvX2ZyZWVfcmVmKHN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvKQogewog CWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZvcmlnX2lmaW5mby0+cmVmY291bnQpKQotCQliYXRh ZHZfb3JpZ19pZmluZm9fZnJlZV9yY3UoJm9yaWdfaWZpbmZvLT5yY3UpOworCQljYWxsX3JjdSgm b3JpZ19pZmluZm8tPnJjdSwgYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmN1KTsKIH0KIAogLyoq Ci0gKiBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYgLSBkZWNyZW1lbnQgdGhlIHJlZmNvdW50 ZXIgYW5kIHBvc3NpYmx5IGZyZWUKLSAqICB0aGUgb3JpZ19pZmluZm8KLSAqIEBvcmlnX2lmaW5m bzogdGhlIG9yaWdfaWZpbmZvIG9iamVjdCB0byByZWxlYXNlCisgKiBiYXRhZHZfb3JpZ19ub2Rl X2ZyZWVfcmN1IC0gZnJlZSB0aGUgb3JpZ19ub2RlCisgKiBAcmN1OiByY3UgcG9pbnRlciBvZiB0 aGUgb3JpZ19ub2RlCiAgKi8KLXZvaWQgYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVmKHN0cnVj dCBiYXRhZHZfb3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvKQorc3RhdGljIHZvaWQgYmF0YWR2X29y aWdfbm9kZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIHsKLQlpZiAoYXRvbWljX2Rl Y19hbmRfdGVzdCgmb3JpZ19pZmluZm8tPnJlZmNvdW50KSkKLQkJY2FsbF9yY3UoJm9yaWdfaWZp bmZvLT5yY3UsIGJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JjdSk7CisJc3RydWN0IGJhdGFkdl9v cmlnX25vZGUgKm9yaWdfbm9kZTsKKworCW9yaWdfbm9kZSA9IGNvbnRhaW5lcl9vZihyY3UsIHN0 cnVjdCBiYXRhZHZfb3JpZ19ub2RlLCByY3UpOworCisJYmF0YWR2X21jYXN0X3B1cmdlX29yaWco b3JpZ19ub2RlKTsKKworCWJhdGFkdl9mcmFnX3B1cmdlX29yaWcob3JpZ19ub2RlLCBOVUxMKTsK KworCWlmIChvcmlnX25vZGUtPmJhdF9wcml2LT5iYXRfYWxnb19vcHMtPmJhdF9vcmlnX2ZyZWUp CisJCW9yaWdfbm9kZS0+YmF0X3ByaXYtPmJhdF9hbGdvX29wcy0+YmF0X29yaWdfZnJlZShvcmln X25vZGUpOworCisJa2ZyZWUob3JpZ19ub2RlLT50dF9idWZmKTsKKwlrZnJlZShvcmlnX25vZGUp OwogfQogCi1zdGF0aWMgdm9pZCBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmN1KHN0cnVjdCByY3Vf aGVhZCAqcmN1KQorLyoqCisgKiBiYXRhZHZfb3JpZ19ub2RlX3JlbGVhc2UgLSByZWxlYXNlIG9y aWdfbm9kZSBmcm9tIGxpc3RzIGFuZCBxdWV1ZSBmb3IKKyAqICBmcmVlIGFmdGVyIHJjdSBncmFj ZSBwZXJpb2QKKyAqIEBvcmlnX25vZGU6IHRoZSBvcmlnIG5vZGUgdG8gZnJlZQorICovCitzdGF0 aWMgdm9pZCBiYXRhZHZfb3JpZ19ub2RlX3JlbGVhc2Uoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUg Km9yaWdfbm9kZSkKIHsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZV90bXA7CiAJc3RydWN0IGJh dGFkdl9uZWlnaF9ub2RlICpuZWlnaF9ub2RlOwotCXN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpv cmlnX25vZGU7CiAJc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb3JpZ19pZmluZm87CiAKLQlv cmlnX25vZGUgPSBjb250YWluZXJfb2YocmN1LCBzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSwgcmN1 KTsKLQogCXNwaW5fbG9ja19iaCgmb3JpZ19ub2RlLT5uZWlnaF9saXN0X2xvY2spOwogCiAJLyog Zm9yIGFsbCBuZWlnaGJvcnMgdG93YXJkcyB0aGlzIG9yaWdpbmF0b3IgLi4uICovCiAJaGxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShuZWlnaF9ub2RlLCBub2RlX3RtcCwKIAkJCQkgICZvcmlnX25v ZGUtPm5laWdoX2xpc3QsIGxpc3QpIHsKIAkJaGxpc3RfZGVsX3JjdSgmbmVpZ2hfbm9kZS0+bGlz dCk7Ci0JCWJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmX25vdyhuZWlnaF9ub2RlKTsKKwkJYmF0 YWR2X25laWdoX25vZGVfZnJlZV9yZWYobmVpZ2hfbm9kZSk7CiAJfQogCiAJaGxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShvcmlnX2lmaW5mbywgbm9kZV90bXAsCiAJCQkJICAmb3JpZ19ub2RlLT5p ZmluZm9fbGlzdCwgbGlzdCkgewogCQlobGlzdF9kZWxfcmN1KCZvcmlnX2lmaW5mby0+bGlzdCk7 Ci0JCWJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZl9ub3cob3JpZ19pZmluZm8pOworCQliYXRh ZHZfb3JpZ19pZmluZm9fZnJlZV9yZWYob3JpZ19pZmluZm8pOwogCX0KIAlzcGluX3VubG9ja19i aCgmb3JpZ19ub2RlLT5uZWlnaF9saXN0X2xvY2spOwogCi0JYmF0YWR2X21jYXN0X3B1cmdlX29y aWcob3JpZ19ub2RlKTsKLQogCS8qIEZyZWUgbmNfbm9kZXMgKi8KIAliYXRhZHZfbmNfcHVyZ2Vf b3JpZyhvcmlnX25vZGUtPmJhdF9wcml2LCBvcmlnX25vZGUsIE5VTEwpOwogCi0JYmF0YWR2X2Zy YWdfcHVyZ2Vfb3JpZyhvcmlnX25vZGUsIE5VTEwpOwotCi0JaWYgKG9yaWdfbm9kZS0+YmF0X3By aXYtPmJhdF9hbGdvX29wcy0+YmF0X29yaWdfZnJlZSkKLQkJb3JpZ19ub2RlLT5iYXRfcHJpdi0+ YmF0X2FsZ29fb3BzLT5iYXRfb3JpZ19mcmVlKG9yaWdfbm9kZSk7Ci0KLQlrZnJlZShvcmlnX25v ZGUtPnR0X2J1ZmYpOwotCWtmcmVlKG9yaWdfbm9kZSk7CisJY2FsbF9yY3UoJm9yaWdfbm9kZS0+ cmN1LCBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmN1KTsKIH0KIAogLyoqCiAgKiBiYXRhZHZfb3Jp Z19ub2RlX2ZyZWVfcmVmIC0gZGVjcmVtZW50IHRoZSBvcmlnIG5vZGUgcmVmY291bnRlciBhbmQg cG9zc2libHkKLSAqIHNjaGVkdWxlIGFuIHJjdSBjYWxsYmFjayBmb3IgZnJlZWluZyBpdAorICog IHJlbGVhc2UgaXQKICAqIEBvcmlnX25vZGU6IHRoZSBvcmlnIG5vZGUgdG8gZnJlZQogICovCiB2 b2lkIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9y aWdfbm9kZSkKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmb3JpZ19ub2RlLT5yZWZjb3Vu dCkpCi0JCWNhbGxfcmN1KCZvcmlnX25vZGUtPnJjdSwgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3Jj dSk7CisJCWJhdGFkdl9vcmlnX25vZGVfcmVsZWFzZShvcmlnX25vZGUpOwogfQogCiAvKioKLS0g CjIuMS4wCgoKRnJvbSA0MzQzYjNjMGY2ODA0ZjIxOTJkMjBlMjJmOTIzZTQ2YWQwMWRkYjY2IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdmVuIEVja2VsbWFubiA8c3ZlbkBuYXJmYXRp b24ub3JnPgpEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMTI6MDY6MjIgKzAxMDAKU3ViamVjdDogW1BB VENIIDM0LzQwXSBiYXRtYW4tYWR2OiBEcm9wIGltbWVkaWF0ZSBiYXRhZHZfbmVpZ2hfbm9kZSBm cmVlCiBmdW5jdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgMmJhYTc1M2MyNzZmMjdmOGU4NDQ2Mzc1 NjFhZDU5Nzg2N2FhNmZiNiBdCgpJdCBpcyBub3QgYWxsb3dlZCB0byBmcmVlIHRoZSBtZW1vcnkg b2YgYW4gb2JqZWN0IHdoaWNoIGlzIHBhcnQgb2YgYSBsaXN0CndoaWNoIGlzIHByb3RlY3RlZCBi eSByY3UtcmVhZC1zaWRlLWNyaXRpY2FsIHNlY3Rpb25zIHdpdGhvdXQgbWFraW5nIHN1cmUKdGhh dCBubyBvdGhlciBjb250ZXh0IGlzIGFjY2Vzc2luZyB0aGUgb2JqZWN0IGFueW1vcmUuIFRoaXMg dXN1YWxseSBoYXBwZW5zCmJ5IHJlbW92aW5nIHRoZSByZWZlcmVuY2VzIHRvIHRoaXMgb2JqZWN0 IGFuZCB0aGVuIHdhaXRpbmcgdW50aWwgdGhlIHJjdQpncmFjZSBwZXJpb2QgaXMgb3ZlciBhbmQg bm8gb25lIChhbGxvd2VkbHkpIGFjY2Vzc2VzIGl0IGFueW1vcmUuCgpCdXQgdGhlIF9ub3cgZnVu Y3Rpb25zIGlnbm9yZSB0aGlzIGNvbXBsZXRlbHkuIFRoZXkgZnJlZSB0aGUgb2JqZWN0CmRpcmVj dGx5IGV2ZW4gd2hlbiBhIGRpZmZlcmVudCBjb250ZXh0IHN0aWxsIHRyaWVzIHRvIGFjY2VzcyBp dC4gVGhpcyBoYXMKdG8gYmUgYXZvaWRlZCBhbmQgdGh1cyB0aGVzZSBmdW5jdGlvbnMgbXVzdCBi ZSByZW1vdmVkIGFuZCBhbGwgZnVuY3Rpb25zCmhhdmUgdG8gdXNlIGJhdGFkdl9uZWlnaF9ub2Rl X2ZyZWVfcmVmLgoKRml4ZXM6IDg5NjUyMzMxYzAwZiAoImJhdG1hbi1hZHY6IHNwbGl0IHRxIGlu Zm9ybWF0aW9uIGluIG5laWdoX25vZGUgc3RydWN0IikKU2lnbmVkLW9mZi1ieTogU3ZlbiBFY2tl bG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogTWFyZWsgTGluZG5lciA8 bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNpZ25lZC1vZmYtYnk6IEFudG9uaW8gUXVhcnR1 bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYyB8IDMz ICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGlu c2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2 L29yaWdpbmF0b3IuYyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwppbmRleCBhMDcyODk0 Li5hOGU2OGViIDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKKysrIGIv bmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCkBAIC0yMjksMjAgKzIyOSw4IEBAIHN0YXRpYyB2 b2lkIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQogfQog CiAvKioKLSAqIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmX25vdyAtIGRlY3JlbWVudCB0aGUg bmVpZ2hib3JzIHJlZmNvdW50ZXIKLSAqICBhbmQgcG9zc2libHkgZnJlZSBpdCAod2l0aG91dCBy Y3UgY2FsbGJhY2spCi0gKiBAbmVpZ2hfbm9kZTogbmVpZ2ggbmVpZ2hib3IgdG8gZnJlZQotICov Ci1zdGF0aWMgdm9pZAotYmF0YWR2X25laWdoX25vZGVfZnJlZV9yZWZfbm93KHN0cnVjdCBiYXRh ZHZfbmVpZ2hfbm9kZSAqbmVpZ2hfbm9kZSkKLXsKLQlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgm bmVpZ2hfbm9kZS0+cmVmY291bnQpKQotCQliYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JjdSgmbmVp Z2hfbm9kZS0+cmN1KTsKLX0KLQotLyoqCiAgKiBiYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZiAt IGRlY3JlbWVudCB0aGUgbmVpZ2hib3JzIHJlZmNvdW50ZXIKLSAqICBhbmQgcG9zc2libHkgZnJl ZSBpdAorICogIGFuZCBwb3NzaWJseSByZWxlYXNlIGl0CiAgKiBAbmVpZ2hfbm9kZTogbmVpZ2gg bmVpZ2hib3IgdG8gZnJlZQogICovCiB2b2lkIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmKHN0 cnVjdCBiYXRhZHZfbmVpZ2hfbm9kZSAqbmVpZ2hfbm9kZSkKQEAgLTUzMiwyNCArNTIwLDIzIEBA IG91dDoKIH0KIAogLyoqCi0gKiBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yY3UgLSBmcmVlIHRo ZSBvcmlnX2lmaW5mbyBvYmplY3QKLSAqIEByY3U6IHJjdSBwb2ludGVyIG9mIHRoZSBvcmlnX2lm aW5mbyBvYmplY3QKKyAqIGJhdGFkdl9vcmlnX2lmaW5mb19yZWxlYXNlIC0gcmVsZWFzZSBvcmln X2lmaW5mbyBmcm9tIGxpc3RzIGFuZCBxdWV1ZSBmb3IKKyAqICBmcmVlIGFmdGVyIHJjdSBncmFj ZSBwZXJpb2QKKyAqIEBvcmlnX2lmaW5mbzogdGhlIG9yaWdfaWZpbmZvIG9iamVjdCB0byByZWxl YXNlCiAgKi8KLXN0YXRpYyB2b2lkIGJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3JjdShzdHJ1Y3Qg cmN1X2hlYWQgKnJjdSkKK3N0YXRpYyB2b2lkIGJhdGFkdl9vcmlnX2lmaW5mb19yZWxlYXNlKHN0 cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvKQogewotCXN0cnVjdCBiYXRhZHZf b3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvOwogCXN0cnVjdCBiYXRhZHZfbmVpZ2hfbm9kZSAqcm91 dGVyOwogCi0Jb3JpZ19pZmluZm8gPSBjb250YWluZXJfb2YocmN1LCBzdHJ1Y3QgYmF0YWR2X29y aWdfaWZpbmZvLCByY3UpOwotCiAJaWYgKG9yaWdfaWZpbmZvLT5pZl9vdXRnb2luZyAhPSBCQVRB RFZfSUZfREVGQVVMVCkKLQkJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZl9ub3cob3JpZ19pZmluZm8t PmlmX291dGdvaW5nKTsKKwkJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZihvcmlnX2lmaW5mby0+aWZf b3V0Z29pbmcpOwogCiAJLyogdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmpl Y3QgKi8KIAlyb3V0ZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKG9yaWdfaWZpbmZvLT5y b3V0ZXIsIHRydWUpOwogCWlmIChyb3V0ZXIpCi0JCWJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVm X25vdyhyb3V0ZXIpOwotCWtmcmVlKG9yaWdfaWZpbmZvKTsKKwkJYmF0YWR2X25laWdoX25vZGVf ZnJlZV9yZWYocm91dGVyKTsKKworCWtmcmVlX3JjdShvcmlnX2lmaW5mbywgcmN1KTsKIH0KIAog LyoqCkBAIC01NjAsNyArNTQ3LDcgQEAgc3RhdGljIHZvaWQgYmF0YWR2X29yaWdfaWZpbmZvX2Zy ZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQogdm9pZCBiYXRhZHZfb3JpZ19pZmluZm9fZnJl ZV9yZWYoc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb3JpZ19pZmluZm8pCiB7CiAJaWYgKGF0 b21pY19kZWNfYW5kX3Rlc3QoJm9yaWdfaWZpbmZvLT5yZWZjb3VudCkpCi0JCWNhbGxfcmN1KCZv cmlnX2lmaW5mby0+cmN1LCBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yY3UpOworCQliYXRhZHZf b3JpZ19pZmluZm9fcmVsZWFzZShvcmlnX2lmaW5mbyk7CiB9CiAKIC8qKgotLSAKMi4xLjAKCgpG cm9tIDg1ZTczZmM5YjEzZjM0ZDU0NTcyMzRkOGU1NDEyNThkMWU4Mjk5ZmYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+CkRh dGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjoyNCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMzUvNDBd IGJhdG1hbi1hZHY6IERyb3AgaW1tZWRpYXRlIG5laWdoX2lmaW5mbyBmcmVlIGZ1bmN0aW9uCgpb IFVwc3RyZWFtIGNvbW1pdCBhZTNlMWUzNmUzY2I2YzY4NmE3YTI3MjVhZjIwY2E4NmFhNDZkNjJh IF0KCkl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgdGhlIG1lbW9yeSBvZiBhbiBvYmplY3Qgd2hp Y2ggaXMgcGFydCBvZiBhIGxpc3QKd2hpY2ggaXMgcHJvdGVjdGVkIGJ5IHJjdS1yZWFkLXNpZGUt Y3JpdGljYWwgc2VjdGlvbnMgd2l0aG91dCBtYWtpbmcgc3VyZQp0aGF0IG5vIG90aGVyIGNvbnRl eHQgaXMgYWNjZXNzaW5nIHRoZSBvYmplY3QgYW55bW9yZS4gVGhpcyB1c3VhbGx5IGhhcHBlbnMK YnkgcmVtb3ZpbmcgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBvYmplY3QgYW5kIHRoZW4gd2FpdGlu ZyB1bnRpbCB0aGUgcmN1CmdyYWNlIHBlcmlvZCBpcyBvdmVyIGFuZCBubyBvbmUgKGFsbG93ZWRs eSkgYWNjZXNzZXMgaXQgYW55bW9yZS4KCkJ1dCB0aGUgX25vdyBmdW5jdGlvbnMgaWdub3JlIHRo aXMgY29tcGxldGVseS4gVGhleSBmcmVlIHRoZSBvYmplY3QKZGlyZWN0bHkgZXZlbiB3aGVuIGEg ZGlmZmVyZW50IGNvbnRleHQgc3RpbGwgdHJpZXMgdG8gYWNjZXNzIGl0LiBUaGlzIGhhcwp0byBi ZSBhdm9pZGVkIGFuZCB0aHVzIHRoZXNlIGZ1bmN0aW9ucyBtdXN0IGJlIHJlbW92ZWQgYW5kIGFs bCBmdW5jdGlvbnMKaGF2ZSB0byB1c2UgYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JlZi4KCkZp eGVzOiA4OTY1MjMzMWMwMGYgKCJiYXRtYW4tYWR2OiBzcGxpdCB0cSBpbmZvcm1hdGlvbiBpbiBu ZWlnaF9ub2RlIHN0cnVjdCIpClNpZ25lZC1vZmYtYnk6IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5h cmZhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBu ZW9tYWlsYm94LmNoPgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIFF1YXJ0dWxsaSA8YUB1bnN0YWJs ZS5jYz4KLS0tCiBuZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgfCAzNCArKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwg MjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5j IGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IGE4ZTY4ZWIuLjBjMjdmMDcgMTAw NjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYworKysgYi9uZXQvYmF0bWFuLWFk di9vcmlnaW5hdG9yLmMKQEAgLTE2Myw0MiArMTYzLDI4IEBAIGVycjoKIH0KIAogLyoqCi0gKiBi YXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmN1IC0gZnJlZSB0aGUgbmVpZ2hfaWZpbmZvIG9iamVj dAotICogQHJjdTogcmN1IHBvaW50ZXIgb2YgdGhlIG5laWdoX2lmaW5mbyBvYmplY3QKLSAqLwot c3RhdGljIHZvaWQgYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQg KnJjdSkKLXsKLQlzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hfaWZpbmZvOwotCi0J bmVpZ2hfaWZpbmZvID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IGJhdGFkdl9uZWlnaF9pZmlu Zm8sIHJjdSk7Ci0KLQlpZiAobmVpZ2hfaWZpbmZvLT5pZl9vdXRnb2luZyAhPSBCQVRBRFZfSUZf REVGQVVMVCkKLQkJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZl9ub3cobmVpZ2hfaWZpbmZvLT5pZl9v dXRnb2luZyk7Ci0KLQlrZnJlZShuZWlnaF9pZmluZm8pOwotfQotCi0vKioKLSAqIGJhdGFkdl9u ZWlnaF9pZmluZm9fZnJlZV9ub3cgLSBkZWNyZW1lbnQgdGhlIHJlZmNvdW50ZXIgYW5kIHBvc3Np Ymx5IGZyZWUKLSAqICB0aGUgbmVpZ2hfaWZpbmZvICh3aXRob3V0IHJjdSBjYWxsYmFjaykKKyAq IGJhdGFkdl9uZWlnaF9pZmluZm9fcmVsZWFzZSAtIHJlbGVhc2UgbmVpZ2hfaWZpbmZvIGZyb20g bGlzdHMgYW5kIHF1ZXVlIGZvcgorICogIGZyZWUgYWZ0ZXIgcmN1IGdyYWNlIHBlcmlvZAogICog QG5laWdoX2lmaW5mbzogdGhlIG5laWdoX2lmaW5mbyBvYmplY3QgdG8gcmVsZWFzZQogICovCiBz dGF0aWMgdm9pZAotYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JlZl9ub3coc3RydWN0IGJhdGFk dl9uZWlnaF9pZmluZm8gKm5laWdoX2lmaW5mbykKK2JhdGFkdl9uZWlnaF9pZmluZm9fcmVsZWFz ZShzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hfaWZpbmZvKQogewotCWlmIChhdG9t aWNfZGVjX2FuZF90ZXN0KCZuZWlnaF9pZmluZm8tPnJlZmNvdW50KSkKLQkJYmF0YWR2X25laWdo X2lmaW5mb19mcmVlX3JjdSgmbmVpZ2hfaWZpbmZvLT5yY3UpOworCWlmIChuZWlnaF9pZmluZm8t PmlmX291dGdvaW5nICE9IEJBVEFEVl9JRl9ERUZBVUxUKQorCQliYXRhZHZfaGFyZGlmX2ZyZWVf cmVmKG5laWdoX2lmaW5mby0+aWZfb3V0Z29pbmcpOworCisJa2ZyZWVfcmN1KG5laWdoX2lmaW5m bywgcmN1KTsKIH0KIAogLyoqCi0gKiBiYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmIC0gZGVj cmVtZW50IHRoZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseSBmcmVlCisgKiBiYXRhZHZfbmVpZ2hf aWZpbmZvX2ZyZWVfcmVmIC0gZGVjcmVtZW50IHRoZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseSBy ZWxlYXNlCiAgKiAgdGhlIG5laWdoX2lmaW5mbwogICogQG5laWdoX2lmaW5mbzogdGhlIG5laWdo X2lmaW5mbyBvYmplY3QgdG8gcmVsZWFzZQogICovCiB2b2lkIGJhdGFkdl9uZWlnaF9pZmluZm9f ZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9uZWlnaF9pZmluZm8gKm5laWdoX2lmaW5mbykKIHsKIAlp ZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbmVpZ2hfaWZpbmZvLT5yZWZjb3VudCkpCi0JCWNhbGxf cmN1KCZuZWlnaF9pZmluZm8tPnJjdSwgYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JjdSk7CisJ CWJhdGFkdl9uZWlnaF9pZmluZm9fcmVsZWFzZShuZWlnaF9pZmluZm8pOwogfQogCiAvKioKQEAg LTIxNyw3ICsyMDMsNyBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JjdShz dHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIAogCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobmVpZ2hf aWZpbmZvLCBub2RlX3RtcCwKIAkJCQkgICZuZWlnaF9ub2RlLT5pZmluZm9fbGlzdCwgbGlzdCkg ewotCQliYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmX25vdyhuZWlnaF9pZmluZm8pOworCQli YXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmKG5laWdoX2lmaW5mbyk7CiAJfQogCiAJaWYgKGJh by0+YmF0X25laWdoX2ZyZWUpCi0tIAoyLjEuMAoKCkZyb20gOTRiNmE4M2EwMzM5MDA3ZWI0MjVh OWEwNzVlNDU1MjEyNTZlMzIxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3ZlbiBF Y2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KRGF0ZTogVHVlLCA1IEphbiAyMDE2IDEyOjA2 OjI1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAzNi80MF0gYmF0bWFuLWFkdjogRHJvcCBpbW1lZGlh dGUgYmF0YWR2X2hhcmRfaWZhY2UgZnJlZQogZnVuY3Rpb24KClsgVXBzdHJlYW0gY29tbWl0IGI0 ZDkyMmNmYzljMDgzMThlZWI3N2Q1M2I3NjMzNzQwZTZiMGVmYjAgXQoKSXQgaXMgbm90IGFsbG93 ZWQgdG8gZnJlZSB0aGUgbWVtb3J5IG9mIGFuIG9iamVjdCB3aGljaCBpcyBwYXJ0IG9mIGEgbGlz dAp3aGljaCBpcyBwcm90ZWN0ZWQgYnkgcmN1LXJlYWQtc2lkZS1jcml0aWNhbCBzZWN0aW9ucyB3 aXRob3V0IG1ha2luZyBzdXJlCnRoYXQgbm8gb3RoZXIgY29udGV4dCBpcyBhY2Nlc3NpbmcgdGhl IG9iamVjdCBhbnltb3JlLiBUaGlzIHVzdWFsbHkgaGFwcGVucwpieSByZW1vdmluZyB0aGUgcmVm ZXJlbmNlcyB0byB0aGlzIG9iamVjdCBhbmQgdGhlbiB3YWl0aW5nIHVudGlsIHRoZSByY3UKZ3Jh Y2UgcGVyaW9kIGlzIG92ZXIgYW5kIG5vIG9uZSAoYWxsb3dlZGx5KSBhY2Nlc3NlcyBpdCBhbnlt b3JlLgoKQnV0IHRoZSBfbm93IGZ1bmN0aW9ucyBpZ25vcmUgdGhpcyBjb21wbGV0ZWx5LiBUaGV5 IGZyZWUgdGhlIG9iamVjdApkaXJlY3RseSBldmVuIHdoZW4gYSBkaWZmZXJlbnQgY29udGV4dCBz dGlsbCB0cmllcyB0byBhY2Nlc3MgaXQuIFRoaXMgaGFzCnRvIGJlIGF2b2lkZWQgYW5kIHRodXMg dGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgcmVtb3ZlZCBhbmQgYWxsIGZ1bmN0aW9ucwpoYXZlIHRv IHVzZSBiYXRhZHZfaGFyZGlmX2ZyZWVfcmVmLgoKRml4ZXM6IDg5NjUyMzMxYzAwZiAoImJhdG1h bi1hZHY6IHNwbGl0IHRxIGluZm9ybWF0aW9uIGluIG5laWdoX25vZGUgc3RydWN0IikKU2lnbmVk LW9mZi1ieTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KU2lnbmVkLW9mZi1i eTogTWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNpZ25lZC1vZmYt Ynk6IEFudG9uaW8gUXVhcnR1bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9iYXRtYW4tYWR2 L2hhcmQtaW50ZXJmYWNlLmggfCAxMiAtLS0tLS0tLS0tLS0KIG5ldC9iYXRtYW4tYWR2L29yaWdp bmF0b3IuYyAgICAgfCAxNCArKysrKysrLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2Vy dGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L2hh cmQtaW50ZXJmYWNlLmggYi9uZXQvYmF0bWFuLWFkdi9oYXJkLWludGVyZmFjZS5oCmluZGV4IDVh MzE0MjAuLjdiMTJlYTggMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L2hhcmQtaW50ZXJmYWNl LmgKKysrIGIvbmV0L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuaApAQCAtNzUsMTggKzc1LDYg QEAgYmF0YWR2X2hhcmRpZl9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKmhhcmRf aWZhY2UpCiAJCWNhbGxfcmN1KCZoYXJkX2lmYWNlLT5yY3UsIGJhdGFkdl9oYXJkaWZfZnJlZV9y Y3UpOwogfQogCi0vKioKLSAqIGJhdGFkdl9oYXJkaWZfZnJlZV9yZWZfbm93IC0gZGVjcmVtZW50 IHRoZSBoYXJkIGludGVyZmFjZSByZWZjb3VudGVyIGFuZAotICogIHBvc3NpYmx5IGZyZWUgaXQg KHdpdGhvdXQgcmN1IGNhbGxiYWNrKQotICogQGhhcmRfaWZhY2U6IHRoZSBoYXJkIGludGVyZmFj ZSB0byBmcmVlCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotYmF0YWR2X2hhcmRpZl9mcmVlX3Jl Zl9ub3coc3RydWN0IGJhdGFkdl9oYXJkX2lmYWNlICpoYXJkX2lmYWNlKQotewotCWlmIChhdG9t aWNfZGVjX2FuZF90ZXN0KCZoYXJkX2lmYWNlLT5yZWZjb3VudCkpCi0JCWJhdGFkdl9oYXJkaWZf ZnJlZV9yY3UoJmhhcmRfaWZhY2UtPnJjdSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IGJh dGFkdl9oYXJkX2lmYWNlICoKIGJhdGFkdl9wcmltYXJ5X2lmX2dldF9zZWxlY3RlZChzdHJ1Y3Qg YmF0YWR2X3ByaXYgKmJhdF9wcml2KQogewpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvb3Jp Z2luYXRvci5jIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IDBjMjdmMDcuLmQ5 ZDJjZWUgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYworKysgYi9uZXQv YmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKQEAgLTE4OSwxNiArMTg5LDE2IEBAIHZvaWQgYmF0YWR2 X25laWdoX2lmaW5mb19mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hf aWZpbmZvKQogCiAvKioKICAqIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1IC0gZnJlZSB0aGUg bmVpZ2hfbm9kZQotICogQHJjdTogcmN1IHBvaW50ZXIgb2YgdGhlIG5laWdoX25vZGUKKyAqIGJh dGFkdl9uZWlnaF9ub2RlX3JlbGVhc2UgLSByZWxlYXNlIG5laWdoX25vZGUgZnJvbSBsaXN0cyBh bmQgcXVldWUgZm9yCisgKiAgZnJlZSBhZnRlciByY3UgZ3JhY2UgcGVyaW9kCisgKiBAbmVpZ2hf bm9kZTogbmVpZ2ggbmVpZ2hib3IgdG8gZnJlZQogICovCi1zdGF0aWMgdm9pZCBiYXRhZHZfbmVp Z2hfbm9kZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKK3N0YXRpYyB2b2lkIGJhdGFk dl9uZWlnaF9ub2RlX3JlbGVhc2Uoc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpuZWlnaF9ub2Rl KQogewogCXN0cnVjdCBobGlzdF9ub2RlICpub2RlX3RtcDsKLQlzdHJ1Y3QgYmF0YWR2X25laWdo X25vZGUgKm5laWdoX25vZGU7CiAJc3RydWN0IGJhdGFkdl9uZWlnaF9pZmluZm8gKm5laWdoX2lm aW5mbzsKIAlzdHJ1Y3QgYmF0YWR2X2FsZ29fb3BzICpiYW87CiAKLQluZWlnaF9ub2RlID0gY29u dGFpbmVyX29mKHJjdSwgc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlLCByY3UpOwogCWJhbyA9IG5l aWdoX25vZGUtPm9yaWdfbm9kZS0+YmF0X3ByaXYtPmJhdF9hbGdvX29wczsKIAogCWhsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUobmVpZ2hfaWZpbmZvLCBub2RlX3RtcCwKQEAgLTIwOSw5ICsyMDks OSBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hl YWQgKnJjdSkKIAlpZiAoYmFvLT5iYXRfbmVpZ2hfZnJlZSkKIAkJYmFvLT5iYXRfbmVpZ2hfZnJl ZShuZWlnaF9ub2RlKTsKIAotCWJhdGFkdl9oYXJkaWZfZnJlZV9yZWZfbm93KG5laWdoX25vZGUt PmlmX2luY29taW5nKTsKKwliYXRhZHZfaGFyZGlmX2ZyZWVfcmVmKG5laWdoX25vZGUtPmlmX2lu Y29taW5nKTsKIAotCWtmcmVlKG5laWdoX25vZGUpOworCWtmcmVlX3JjdShuZWlnaF9ub2RlLCBy Y3UpOwogfQogCiAvKioKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfbmVp Z2hfbm9kZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIHZvaWQgYmF0YWR2X25laWdo X25vZGVfZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpuZWlnaF9ub2RlKQogewog CWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZuZWlnaF9ub2RlLT5yZWZjb3VudCkpCi0JCWNhbGxf cmN1KCZuZWlnaF9ub2RlLT5yY3UsIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1KTsKKwkJYmF0 YWR2X25laWdoX25vZGVfcmVsZWFzZShuZWlnaF9ub2RlKTsKIH0KIAogLyoqCi0tIAoyLjEuMAoK CkZyb20gM2ZmOTc2ZWVjODg2MGMxMzhjZTYxMjI1YWMwY2QwMmFjMWI4Y2Q0YSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4K RGF0ZTogVHVlLCA1IEphbiAyMDE2IDEyOjA2OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCAzNy80 MF0gYmF0bWFuLWFkdjogRHJvcCBpbW1lZGlhdGUgb3JpZ19ub2RlIGZyZWUgZnVuY3Rpb24KClsg VXBzdHJlYW0gY29tbWl0IDQyZWZmNmE2MTdlMjNiNjkxZjhlNDQ2N2Y0Njg3ZWQ3MjQ1YTkyZGIg XQoKSXQgaXMgbm90IGFsbG93ZWQgdG8gZnJlZSB0aGUgbWVtb3J5IG9mIGFuIG9iamVjdCB3aGlj aCBpcyBwYXJ0IG9mIGEgbGlzdAp3aGljaCBpcyBwcm90ZWN0ZWQgYnkgcmN1LXJlYWQtc2lkZS1j cml0aWNhbCBzZWN0aW9ucyB3aXRob3V0IG1ha2luZyBzdXJlCnRoYXQgbm8gb3RoZXIgY29udGV4 dCBpcyBhY2Nlc3NpbmcgdGhlIG9iamVjdCBhbnltb3JlLiBUaGlzIHVzdWFsbHkgaGFwcGVucwpi eSByZW1vdmluZyB0aGUgcmVmZXJlbmNlcyB0byB0aGlzIG9iamVjdCBhbmQgdGhlbiB3YWl0aW5n IHVudGlsIHRoZSByY3UKZ3JhY2UgcGVyaW9kIGlzIG92ZXIgYW5kIG5vIG9uZSAoYWxsb3dlZGx5 KSBhY2Nlc3NlcyBpdCBhbnltb3JlLgoKQnV0IHRoZSBfbm93IGZ1bmN0aW9ucyBpZ25vcmUgdGhp cyBjb21wbGV0ZWx5LiBUaGV5IGZyZWUgdGhlIG9iamVjdApkaXJlY3RseSBldmVuIHdoZW4gYSBk aWZmZXJlbnQgY29udGV4dCBzdGlsbCB0cmllcyB0byBhY2Nlc3MgaXQuIFRoaXMgaGFzCnRvIGJl IGF2b2lkZWQgYW5kIHRodXMgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgcmVtb3ZlZCBhbmQgYWxs IGZ1bmN0aW9ucwpoYXZlIHRvIHVzZSBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmVmLgoKRml4ZXM6 IDcyODIyMjI1YmQ0MSAoImJhdG1hbi1hZHY6IEZpeCByY3VfYmFycmllcigpIG1pc3MgZHVlIHRv IGRvdWJsZSBjYWxsX3JjdSgpIGluIFRUIGNvZGUiKQpTaWduZWQtb2ZmLWJ5OiBTdmVuIEVja2Vs bWFubiA8c3ZlbkBuYXJmYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBNYXJlayBMaW5kbmVyIDxt YXJla2xpbmRuZXJAbmVvbWFpbGJveC5jaD4KU2lnbmVkLW9mZi1ieTogQW50b25pbyBRdWFydHVs bGkgPGFAdW5zdGFibGUuY2M+Ci0tLQogbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jICAgICAg ICB8IDExIC0tLS0tLS0tLS0tCiBuZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmggICAgICAgIHwg IDEgLQogbmV0L2JhdG1hbi1hZHYvdHJhbnNsYXRpb24tdGFibGUuYyB8IDI4ICsrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMjcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jIGIv bmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IGQ5ZDJjZWUuLjE3ODUxZDMgMTAwNjQ0 Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYworKysgYi9uZXQvYmF0bWFuLWFkdi9v cmlnaW5hdG9yLmMKQEAgLTYwMSwxNyArNjAxLDYgQEAgdm9pZCBiYXRhZHZfb3JpZ19ub2RlX2Zy ZWVfcmVmKHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUpCiAJCWJhdGFkdl9vcmln X25vZGVfcmVsZWFzZShvcmlnX25vZGUpOwogfQogCi0vKioKLSAqIGJhdGFkdl9vcmlnX25vZGVf ZnJlZV9yZWZfbm93IC0gZGVjcmVtZW50IHRoZSBvcmlnIG5vZGUgcmVmY291bnRlciBhbmQKLSAq IHBvc3NpYmx5IGZyZWUgaXQgKHdpdGhvdXQgcmN1IGNhbGxiYWNrKQotICogQG9yaWdfbm9kZTog dGhlIG9yaWcgbm9kZSB0byBmcmVlCi0gKi8KLXZvaWQgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3Jl Zl9ub3coc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSkKLXsKLQlpZiAoYXRvbWlj X2RlY19hbmRfdGVzdCgmb3JpZ19ub2RlLT5yZWZjb3VudCkpCi0JCWJhdGFkdl9vcmlnX25vZGVf ZnJlZV9yY3UoJm9yaWdfbm9kZS0+cmN1KTsKLX0KLQogdm9pZCBiYXRhZHZfb3JpZ2luYXRvcl9m cmVlKHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYpCiB7CiAJc3RydWN0IGJhdGFkdl9oYXNo dGFibGUgKmhhc2ggPSBiYXRfcHJpdi0+b3JpZ19oYXNoOwpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1h bi1hZHYvb3JpZ2luYXRvci5oIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5oCmluZGV4IGZh MThmOWIuLmE1YzM3ODggMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuaAor KysgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmgKQEAgLTM4LDcgKzM4LDYgQEAgaW50IGJh dGFkdl9vcmlnaW5hdG9yX2luaXQoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdik7CiB2b2lk IGJhdGFkdl9vcmlnaW5hdG9yX2ZyZWUoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdik7CiB2 b2lkIGJhdGFkdl9wdXJnZV9vcmlnX3JlZihzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2KTsK IHZvaWQgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAq b3JpZ19ub2RlKTsKLXZvaWQgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZl9ub3coc3RydWN0IGJh dGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSk7CiBzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqYmF0 YWR2X29yaWdfbm9kZV9uZXcoc3RydWN0IGJhdGFkdl9wcml2ICpiYXRfcHJpdiwKIAkJCQkJICAg ICAgY29uc3QgdTggKmFkZHIpOwogc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICoKZGlmZiAtLWdp dCBhL25ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMgYi9uZXQvYmF0bWFuLWFkdi90 cmFuc2xhdGlvbi10YWJsZS5jCmluZGV4IDQyMjhiMTAuLjkwMGU5NGIgMTAwNjQ0Ci0tLSBhL25l dC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxlLmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvdHJh bnNsYXRpb24tdGFibGUuYwpAQCAtMjM4LDIwICsyMzgsNiBAQCBpbnQgYmF0YWR2X3R0X2dsb2Jh bF9oYXNoX2NvdW50KHN0cnVjdCBiYXRhZHZfcHJpdiAqYmF0X3ByaXYsCiAJcmV0dXJuIGNvdW50 OwogfQogCi1zdGF0aWMgdm9pZCBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5X2ZyZWVfcmN1KHN0 cnVjdCByY3VfaGVhZCAqcmN1KQotewotCXN0cnVjdCBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5 ICpvcmlnX2VudHJ5OwotCi0Jb3JpZ19lbnRyeSA9IGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBi YXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5LCByY3UpOwotCi0JLyogV2UgYXJlIGluIGFuIHJjdSBj YWxsYmFjayBoZXJlLCB0aGVyZWZvcmUgd2UgY2Fubm90IHVzZQotCSAqIGJhdGFkdl9vcmlnX25v ZGVfZnJlZV9yZWYoKSBhbmQgaXRzIGNhbGxfcmN1KCk6Ci0JICogQW4gcmN1X2JhcnJpZXIoKSB3 b3VsZG4ndCB3YWl0IGZvciB0aGF0IHRvIGZpbmlzaAotCSAqLwotCWJhdGFkdl9vcmlnX25vZGVf ZnJlZV9yZWZfbm93KG9yaWdfZW50cnktPm9yaWdfbm9kZSk7Ci0Ja2ZyZWUob3JpZ19lbnRyeSk7 Ci19Ci0KIC8qKgogICogYmF0YWR2X3R0X2xvY2FsX3NpemVfbW9kIC0gY2hhbmdlIHRoZSBzaXpl IGJ5IHYgb2YgdGhlIGxvY2FsIHRhYmxlIGlkZW50aWZpZWQKICAqICBieSB2aWQKQEAgLTM0Nywx MyArMzMzLDI1IEBAIHN0YXRpYyB2b2lkIGJhdGFkdl90dF9nbG9iYWxfc2l6ZV9kZWMoc3RydWN0 IGJhdGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSwKIAliYXRhZHZfdHRfZ2xvYmFsX3NpemVfbW9k KG9yaWdfbm9kZSwgdmlkLCAtMSk7CiB9CiAKKy8qKgorICogYmF0YWR2X3R0X29yaWdfbGlzdF9l bnRyeV9yZWxlYXNlIC0gcmVsZWFzZSB0dCBvcmlnIGVudHJ5IGZyb20gbGlzdHMgYW5kCisgKiAg cXVldWUgZm9yIGZyZWUgYWZ0ZXIgcmN1IGdyYWNlIHBlcmlvZAorICogQG9yaWdfZW50cnk6IHR0 IG9yaWcgZW50cnkgdG8gYmUgZnJlZSdkCisgKi8KK3N0YXRpYyB2b2lkCitiYXRhZHZfdHRfb3Jp Z19saXN0X2VudHJ5X3JlbGVhc2Uoc3RydWN0IGJhdGFkdl90dF9vcmlnX2xpc3RfZW50cnkgKm9y aWdfZW50cnkpCit7CisJYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZihvcmlnX2VudHJ5LT5vcmln X25vZGUpOworCWtmcmVlX3JjdShvcmlnX2VudHJ5LCByY3UpOworfQorCiBzdGF0aWMgdm9pZAog YmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeV9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X3R0X29yaWdf bGlzdF9lbnRyeSAqb3JpZ19lbnRyeSkKIHsKIAlpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJm9y aWdfZW50cnktPnJlZmNvdW50KSkKIAkJcmV0dXJuOwogCi0JY2FsbF9yY3UoJm9yaWdfZW50cnkt PnJjdSwgYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeV9mcmVlX3JjdSk7CisJYmF0YWR2X3R0X29y aWdfbGlzdF9lbnRyeV9yZWxlYXNlKG9yaWdfZW50cnkpOwogfQogCiAvKioKLS0gCjIuMS4wCgoK RnJvbSBhYjM5MmNiNWI3N2VkMjhjOGI3ZWRkNWM3ZmE1ZDIyZjdlNTM1ZmM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEb3JvbiBUc3VyIDxkb3JvbnRAbWVsbGFub3guY29tPgpEYXRl OiBTdW4sIDE3IEphbiAyMDE2IDExOjI1OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRDSCAzOC80MF0g bmV0L21seDVfY29yZTogRml4IHRyaW1taW5nIGRvd24gSVJRIG51bWJlcgoKWyBVcHN0cmVhbSBj b21taXQgMGI2ZTI2Y2U4OTM5MTMyN2Q5NTVhNzU2YTc4MjMyNzIyMzhlYjg2NyBdCgpXaXRoIHNl dmVyYWwgQ29ubmVjdFgtNCBjYXJkcyBpbnN0YWxsZWQgb24gYSBzZXJ2ZXIsIG9uZSBtYXkgcmVj ZWl2ZQppcnFuID4gMjU1IGZyb20gdGhlIGtlcm5lbCBBUEksIHdoaWNoIHdlIG1pc3Rha2VubHkg dHJpbSB0byA4Yml0LgoKVGhpcyBjYXVzZXMgRVEgY3JlYXRpb24gZmFpbHVyZSB3aXRoIHRoZSBm b2xsb3dpbmcgc3RhY2sgdHJhY2U6Cls8ZmZmZmZmZmY4MTJhMTFmND5dIGR1bXBfc3RhY2srMHg0 OC8weDY0Cls8ZmZmZmZmZmY4MTBhY2UyMT5dIF9fc2V0dXBfaXJxKzB4M2ExLzB4NGYwCls8ZmZm ZmZmZmY4MTBhZDdlMD5dIHJlcXVlc3RfdGhyZWFkZWRfaXJxKzB4MTIwLzB4MTgwCls8ZmZmZmZm ZmZhMDkyMzY2MD5dID8gbWx4NV9lcV9pbnQrMHg0NTAvMHg0NTAgW21seDVfY29yZV0KWzxmZmZm ZmZmZmEwOTIyZjY0Pl0gbWx4NV9jcmVhdGVfbWFwX2VxKzB4MWU0LzB4MmIwIFttbHg1X2NvcmVd Cls8ZmZmZmZmZmZhMDkxZGUwMT5dIGFsbG9jX2NvbXBfZXFzKzB4YjEvMHgxODAgW21seDVfY29y ZV0KWzxmZmZmZmZmZmEwOTFlYTk5Pl0gbWx4NV9kZXZfaW5pdCsweDVlOS8weDZlMCBbbWx4NV9j b3JlXQpbPGZmZmZmZmZmYTA5MWVjMjk+XSBpbml0X29uZSsweDk5LzB4MWMwIFttbHg1X2NvcmVd Cls8ZmZmZmZmZmY4MTJlMmFmYz5dIGxvY2FsX3BjaV9wcm9iZSsweDRjLzB4YTAKCkZpeGluZyBp dCBieSBjaGFuZ2luZyBvZiB0aGUgaXJxbiB0eXBlIGZyb20gdTggdG8gdW5zaWduZWQgaW50IHRv CnN1cHBvcnQgdmFsdWVzID4gMjU1CgpGaXhlczogNjFkMGU3M2UwYTVhICgnbmV0L21seDVfY29y ZTogVXNlIHRoZSB0aGUgcmVhbCBpcnFuIGluIGVxLT5pcnFuJykKUmVwb3J0ZWQtYnk6IEppcmkg UGlya28gPGppcmlAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBEb3JvbiBUc3VyIDxkb3Jv bnRAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXRhbiBCYXJhayA8bWF0YW5iQG1lbGxh bm94LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMgICAgICAgICAgICAgICAg ICAgfCAyICstCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFp bi5jIHwgNiArKystLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9t YWluLmMgICAgfCAzICsrLQogaW5jbHVkZS9saW51eC9tbHg1L2NxLmggICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDIgKy0KIGluY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaCAgICAgICAgICAg ICAgICAgICAgICAgfCA1ICsrKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUv Y3EuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L2NxLmMKaW5kZXggMmQwZGJiZi4uNTU4 YzFlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvY3EuYworKysgYi9k cml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9jcS5jCkBAIC03NTYsNyArNzU2LDcgQEAgc3RydWN0 IGliX2NxICptbHg1X2liX2NyZWF0ZV9jcShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwKIAlpbnQg dW5pbml0aWFsaXplZF92YXIoaW5kZXgpOwogCWludCB1bmluaXRpYWxpemVkX3Zhcihpbmxlbik7 CiAJaW50IGNxZV9zaXplOwotCWludCBpcnFuOworCXVuc2lnbmVkIGludCBpcnFuOwogCWludCBl cW47CiAJaW50IGVycjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbl9tYWluLmMKaW5kZXggNDQzNjMyZC4uMzk0NzQ0YiAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYworKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCkBAIC03NDYsNyAr NzQ2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9jcmVhdGVfY3Eoc3RydWN0IG1seDVlX2NoYW5uZWwg KmMsCiAJc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBwcml2LT5tZGV2OwogCXN0cnVjdCBt bHg1X2NvcmVfY3EgKm1jcSA9ICZjcS0+bWNxOwogCWludCBlcW5fbm90X3VzZWQ7Ci0JaW50IGly cW47CisJdW5zaWduZWQgaW50IGlycW47CiAJaW50IGVycjsKIAl1MzIgaTsKIApAQCAtODAwLDcg KzgwMCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfZW5hYmxlX2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3Es IHN0cnVjdCBtbHg1ZV9jcV9wYXJhbSAqcGFyYW0pCiAJdm9pZCAqaW47CiAJdm9pZCAqY3FjOwog CWludCBpbmxlbjsKLQlpbnQgaXJxbl9ub3RfdXNlZDsKKwl1bnNpZ25lZCBpbnQgaXJxbl9ub3Rf dXNlZDsKIAlpbnQgZXFuOwogCWludCBlcnI7CiAKQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHN0YXRp YyBpbnQgbWx4NWVfY3JlYXRlX2Ryb3BfY3Eoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsCiAJc3Ry dWN0IG1seDVfY29yZV9kZXYgKm1kZXYgPSBwcml2LT5tZGV2OwogCXN0cnVjdCBtbHg1X2NvcmVf Y3EgKm1jcSA9ICZjcS0+bWNxOwogCWludCBlcW5fbm90X3VzZWQ7Ci0JaW50IGlycW47CisJdW5z aWduZWQgaW50IGlycW47CiAJaW50IGVycjsKIAogCWVyciA9IG1seDVfY3F3cV9jcmVhdGUobWRl diwgJnBhcmFtLT53cSwgcGFyYW0tPmNxYywgJmNxLT53cSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jCmluZGV4IDAzYWFiZGQuLmFmOTU5M2IgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMK KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwpAQCAt NTIwLDcgKzUyMCw4IEBAIHN0YXRpYyB2b2lkIG1seDVfaXJxX2NsZWFyX2FmZmluaXR5X2hpbnRz KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICptZGV2KQogCQltbHg1X2lycV9jbGVhcl9hZmZpbml0eV9o aW50KG1kZXYsIGkpOwogfQogCi1pbnQgbWx4NV92ZWN0b3IyZXFuKHN0cnVjdCBtbHg1X2NvcmVf ZGV2ICpkZXYsIGludCB2ZWN0b3IsIGludCAqZXFuLCBpbnQgKmlycW4pCitpbnQgbWx4NV92ZWN0 b3IyZXFuKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCB2ZWN0b3IsIGludCAqZXFuLAor CQkgICAgdW5zaWduZWQgaW50ICppcnFuKQogewogCXN0cnVjdCBtbHg1X2VxX3RhYmxlICp0YWJs ZSA9ICZkZXYtPnByaXYuZXFfdGFibGU7CiAJc3RydWN0IG1seDVfZXEgKmVxLCAqbjsKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvbWx4NS9jcS5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2NxLmgK aW5kZXggYWJjNDc2Ny4uYjJjOWZhZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbHg1L2Nx LmgKKysrIGIvaW5jbHVkZS9saW51eC9tbHg1L2NxLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0 IG1seDVfY29yZV9jcSB7CiAJYXRvbWljX3QJCXJlZmNvdW50OwogCXN0cnVjdCBjb21wbGV0aW9u CWZyZWU7CiAJdW5zaWduZWQJCXZlY3RvcjsKLQlpbnQJCQlpcnFuOworCXVuc2lnbmVkIGludAkJ aXJxbjsKIAl2b2lkICgqY29tcCkJCShzdHJ1Y3QgbWx4NV9jb3JlX2NxICopOwogCXZvaWQgKCpl dmVudCkJCShzdHJ1Y3QgbWx4NV9jb3JlX2NxICosIGVudW0gbWx4NV9ldmVudCk7CiAJc3RydWN0 IG1seDVfdWFyCSAgICAgICAqdWFyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbHg1L2Ry aXZlci5oIGIvaW5jbHVkZS9saW51eC9tbHg1L2RyaXZlci5oCmluZGV4IDhiNmQ2ZjIuLjJiMDEz ZGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbWx4NS9kcml2ZXIuaAorKysgYi9pbmNsdWRl L2xpbnV4L21seDUvZHJpdmVyLmgKQEAgLTMwMyw3ICszMDMsNyBAQCBzdHJ1Y3QgbWx4NV9lcSB7 CiAJdTMyCQkJY29uc19pbmRleDsKIAlzdHJ1Y3QgbWx4NV9idWYJCWJ1ZjsKIAlpbnQJCQlzaXpl OwotCXU4CQkJaXJxbjsKKwl1bnNpZ25lZCBpbnQJCWlycW47CiAJdTgJCQllcW47CiAJaW50CQkJ bmVudDsKIAl1NjQJCQltYXNrOwpAQCAtNzM4LDcgKzczOCw4IEBAIGludCBtbHg1X2NyZWF0ZV9t YXBfZXEoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgc3RydWN0IG1seDVfZXEgKmVxLCB1OCB2 ZWNpZHgsCiBpbnQgbWx4NV9kZXN0cm95X3VubWFwX2VxKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpk ZXYsIHN0cnVjdCBtbHg1X2VxICplcSk7CiBpbnQgbWx4NV9zdGFydF9lcXMoc3RydWN0IG1seDVf Y29yZV9kZXYgKmRldik7CiBpbnQgbWx4NV9zdG9wX2VxcyhzdHJ1Y3QgbWx4NV9jb3JlX2RldiAq ZGV2KTsKLWludCBtbHg1X3ZlY3RvcjJlcW4oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgaW50 IHZlY3RvciwgaW50ICplcW4sIGludCAqaXJxbik7CitpbnQgbWx4NV92ZWN0b3IyZXFuKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICpkZXYsIGludCB2ZWN0b3IsIGludCAqZXFuLAorCQkgICAgdW5zaWdu ZWQgaW50ICppcnFuKTsKIGludCBtbHg1X2NvcmVfYXR0YWNoX21jZyhzdHJ1Y3QgbWx4NV9jb3Jl X2RldiAqZGV2LCB1bmlvbiBpYl9naWQgKm1naWQsIHUzMiBxcG4pOwogaW50IG1seDVfY29yZV9k ZXRhY2hfbWNnKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHVuaW9uIGliX2dpZCAqbWdpZCwg dTMyIHFwbik7CiAKLS0gCjIuMS4wCgoKRnJvbSBlYzNlMjg2MzJiZTVjYWI4ZDY4N2IxYmM3YjE2 MmU0OTcwY2ZiNjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJZG8gU2NoaW1tZWwg PGlkb3NjaEBtZWxsYW5veC5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTc6MzA6MjIgKzAy MDAKU3ViamVjdDogW1BBVENIIDM5LzQwXSB0ZWFtOiBSZXBsYWNlIHJjdV9yZWFkX2xvY2sgd2l0 aCBhIG11dGV4IGluCiB0ZWFtX3ZsYW5fcnhfa2lsbF92aWQKClsgVXBzdHJlYW0gY29tbWl0IDYw YTY1MzFiZmU0OTU1NTU4MWNjZDY1ZjY2YTM1MGNjNTY5M2ZjZGUgXQoKV2UgY2FuJ3QgYmUgd2l0 aGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB3aGVuIGRlbGV0aW5nClZMQU5z LCBhcyB1bmRlcmx5aW5nIGRyaXZlcnMgbWlnaHQgc2xlZXAgZHVyaW5nIHRoZSBoYXJkd2FyZSBv cGVyYXRpb24uClRoZXJlZm9yZSwgcmVwbGFjZSB0aGUgUkNVIGNyaXRpY2FsIHNlY3Rpb24gd2l0 aCBhIG11dGV4LiBUaGlzIGlzCmNvbnNpc3RlbnQgd2l0aCB0ZWFtX3ZsYW5fcnhfYWRkX3ZpZC4K CkZpeGVzOiAzZDI0OWQ0Y2E3ZDAgKCJuZXQ6IGludHJvZHVjZSBldGhlcm5ldCB0ZWFtaW5nIGRl dmljZSIpCkFja2VkLWJ5OiBKaXJpIFBpcmtvIDxqaXJpQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9m Zi1ieTogSWRvIFNjaGltbWVsIDxpZG9zY2hAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvdGVh bS90ZWFtLmMgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW0uYyBiL2RyaXZl cnMvbmV0L3RlYW0vdGVhbS5jCmluZGV4IDY1MWQzNWUuLjU5ZmVmY2EgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3RlYW0vdGVhbS5jCisrKyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbS5jCkBAIC0x ODQ1LDEwICsxODQ1LDEwIEBAIHN0YXRpYyBpbnQgdGVhbV92bGFuX3J4X2tpbGxfdmlkKHN0cnVj dCBuZXRfZGV2aWNlICpkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZCkKIAlzdHJ1Y3QgdGVhbSAq dGVhbSA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IHRlYW1fcG9ydCAqcG9ydDsKIAotCXJj dV9yZWFkX2xvY2soKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwb3J0LCAmdGVhbS0+cG9y dF9saXN0LCBsaXN0KQorCW11dGV4X2xvY2soJnRlYW0tPmxvY2spOworCWxpc3RfZm9yX2VhY2hf ZW50cnkocG9ydCwgJnRlYW0tPnBvcnRfbGlzdCwgbGlzdCkKIAkJdmxhbl92aWRfZGVsKHBvcnQt PmRldiwgcHJvdG8sIHZpZCk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CisJbXV0ZXhfdW5sb2NrKCZ0 ZWFtLT5sb2NrKTsKIAogCXJldHVybiAwOwogfQotLSAKMi4xLjAKCgpGcm9tIDZlOGM0ZTAyOWQ4 MTg0NzE1ZDk0ODU5NDY5ZDMwNGE1YjYwZWFlMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IERhbiBTdHJlZXRtYW4gPGRhbi5zdHJlZXRtYW5AY2Fub25pY2FsLmNvbT4KRGF0ZTogVGh1 LCAyOSBPY3QgMjAxNSAwOTo1MToxNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggNDAvNDBdIHhmcm06 IGRzdF9lbnRyaWVzX2luaXQoKSBwZXItbmV0IGRzdF9vcHMKClsgVXBzdHJlYW0gY29tbWl0IGE4 YTU3MmE2YjVmMmE3OTI4MGQ2ZTMwMmNiM2MxY2IxZmJhZWIzZTggXQoKUmVtb3ZlIHRoZSBkc3Rf ZW50cmllc19pbml0L2Rlc3Ryb3kgY2FsbHMgZm9yIHhmcm00IGFuZCB4ZnJtNiBkc3Rfb3BzCnRl bXBsYXRlczsgdGhlaXIgZHN0X2VudHJpZXMgY291bnRlcnMgd2lsbCBuZXZlciBiZSB1c2VkLiAg TW92ZSB0aGUKeGZybSBkc3Rfb3BzIGluaXRpYWxpemF0aW9uIGZyb20gdGhlIGNvbW1vbiB4ZnJt L3hmcm1fcG9saWN5LmMgdG8KeGZybTQveGZybTRfcG9saWN5LmMgYW5kIHhmcm02L3hmcm02X3Bv bGljeS5jLCBhbmQgY2FsbCBkc3RfZW50cmllc19pbml0CmFuZCBkc3RfZW50cmllc19kZXN0cm95 IGZvciBlYWNoIG5ldCBuYW1lc3BhY2UuCgpUaGUgaXB2NCBhbmQgaXB2NiB4ZnJtcyBlYWNoIGNy ZWF0ZSBkc3Rfb3BzIHRlbXBsYXRlLCBhbmQgcGVyZm9ybQpkc3RfZW50cmllc19pbml0IG9uIHRo ZSB0ZW1wbGF0ZXMuICBUaGUgdGVtcGxhdGUgdmFsdWVzIGFyZSBjb3BpZWQgdG8gZWFjaApuZXQg bmFtZXNwYWNlJ3MgeGZybS54ZnJtKl9kc3Rfb3BzLiAgVGhlIHByb2JsZW0gdGhlcmUgaXMgdGhl IGRzdF9vcHMKcGNwdWNfZW50cmllcyBmaWVsZCBpcyBhIHBlcmNwdSBjb3VudGVyIGFuZCBjYW5u b3QgYmUgdXNlZCBjb3JyZWN0bHkgYnkKc2ltcGx5IGNvcHlpbmcgaXQgdG8gYW5vdGhlciBvYmpl Y3QuCgpUaGUgcmVzdWx0IG9mIHRoaXMgaXMgYSB2ZXJ5IHN1YnRsZSBidWc7IGNoYW5nZXMgdG8g dGhlIGRzdCBlbnRyaWVzCmNvdW50ZXIgZnJvbSBvbmUgbmV0IG5hbWVzcGFjZSBtYXkgc29tZXRp bWVzIGdldCBhcHBsaWVkIHRvIGEgZGlmZmVyZW50Cm5ldCBuYW1lc3BhY2UgZHN0IGVudHJpZXMg Y291bnRlci4gIFRoaXMgaXMgYmVjYXVzZSBvZiBob3cgdGhlIHBlcmNwdQpjb3VudGVyIHdvcmtz OyBpdCBoYXMgYSBtYWluIGNvdW50IGZpZWxkIGFzIHdlbGwgYXMgYSBwb2ludGVyIHRvIHRoZQpw ZXJjcHUgdmFyaWFibGVzLiAgRWFjaCBuZXQgbmFtZXNwYWNlIG1haW50YWlucyBpdHMgb3duIG1h aW4gY291bnQKdmFyaWFibGUsIGJ1dCBhbGwgcG9pbnQgdG8gb25lIHNldCBvZiBwZXJjcHUgdmFy aWFibGVzLiAgV2hlbiBhbnkgbmV0Cm5hbWVzcGFjZSBoYXBwZW5zIHRvIGNoYW5nZSBvbmUgb2Yg dGhlIHBlcmNwdSB2YXJpYWJsZXMgdG8gb3V0c2lkZSBpdHMKc21hbGwgYmF0Y2ggcmFuZ2UsIGl0 cyBjb3VudCBpcyBtb3ZlZCB0byB0aGUgbmV0IG5hbWVzcGFjZSdzIG1haW4gY291bnQKdmFyaWFi bGUuICBTbyB3aXRoIG11bHRpcGxlIG5ldCBuYW1lc3BhY2VzIG9wZXJhdGluZyBjb25jdXJyZW50 bHksIHRoZQpkc3Rfb3BzIGVudHJpZXMgY291bnRlciBjYW4gc3RyYXkgZnJvbSB0aGUgYWN0dWFs IHZhbHVlIHRoYXQgaXQgc2hvdWxkCmJlOyBpZiBjb3VudHMgYXJlIGNvbnNpc3RlbnRseSBtb3Zl ZCBmcm9tIG9uZSBuZXQgbmFtZXNwYWNlIHRvIGFub3RoZXIKKHdoaWNoIG15IHRlc3Rpbmcgc2hv d2VkIGlzIGxpa2VseSksIHRoZW4gb25lIG5ldCBuYW1lc3BhY2Ugd2luZHMgdXAKd2l0aCBhIG5l Z2F0aXZlIGRzdF9vcHMgY291bnQgd2hpbGUgYW5vdGhlciB3aW5kcyB1cCB3aXRoIGEgY29udGlu dWFsbHkKaW5jcmVhc2luZyBjb3VudCwgZXZlbnR1YWxseSByZWFjaGluZyBpdHMgZ2NfdGhyZXNo IGxpbWl0LCB3aGljaCBjYXVzZXMKYWxsIG5ldyB0cmFmZmljIG9uIHRoZSBuZXQgbmFtZXNwYWNl IHRvIGZhaWwgd2l0aCAtRU5PQlVGUy4KClNpZ25lZC1vZmYtYnk6IERhbiBTdHJlZXRtYW4gPGRh bi5zdHJlZXRtYW5AY2Fub25pY2FsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuIFN0cmVldG1hbiA8 ZGRzdHJlZXRAaWVlZS5vcmc+ClNpZ25lZC1vZmYtYnk6IFN0ZWZmZW4gS2xhc3NlcnQgPHN0ZWZm ZW4ua2xhc3NlcnRAc2VjdW5ldC5jb20+Ci0tLQogbmV0L2lwdjQveGZybTRfcG9saWN5LmMgfCA0 NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIG5ldC9pcHY2L3hm cm02X3BvbGljeS5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tLQogbmV0L3hmcm0veGZybV9wb2xpY3kuYyAgfCAzOCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA2 MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9wb2xpY3kuYyBiL25l dC9pcHY0L3hmcm00X3BvbGljeS5jCmluZGV4IGMxMGE5ZWUuLjEyNmZmOTAgMTAwNjQ0Ci0tLSBh L25ldC9pcHY0L3hmcm00X3BvbGljeS5jCisrKyBiL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCkBA IC0yMzYsNyArMjM2LDcgQEAgc3RhdGljIHZvaWQgeGZybTRfZHN0X2lmZG93bihzdHJ1Y3QgZHN0 X2VudHJ5ICpkc3QsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJeGZybV9kc3RfaWZkb3duKGRz dCwgZGV2KTsKIH0KIAotc3RhdGljIHN0cnVjdCBkc3Rfb3BzIHhmcm00X2RzdF9vcHMgPSB7Citz dGF0aWMgc3RydWN0IGRzdF9vcHMgeGZybTRfZHN0X29wc190ZW1wbGF0ZSA9IHsKIAkuZmFtaWx5 ID0JCUFGX0lORVQsCiAJLmdjID0JCQl4ZnJtNF9nYXJiYWdlX2NvbGxlY3QsCiAJLnVwZGF0ZV9w bXR1ID0JCXhmcm00X3VwZGF0ZV9wbXR1LApAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBzdHJ1 Y3QgZHN0X29wcyB4ZnJtNF9kc3Rfb3BzID0gewogCiBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5 X2FmaW5mbyB4ZnJtNF9wb2xpY3lfYWZpbmZvID0gewogCS5mYW1pbHkgPSAJCUFGX0lORVQsCi0J LmRzdF9vcHMgPQkJJnhmcm00X2RzdF9vcHMsCisJLmRzdF9vcHMgPQkJJnhmcm00X2RzdF9vcHNf dGVtcGxhdGUsCiAJLmRzdF9sb29rdXAgPQkJeGZybTRfZHN0X2xvb2t1cCwKIAkuZ2V0X3NhZGRy ID0JCXhmcm00X2dldF9zYWRkciwKIAkuZGVjb2RlX3Nlc3Npb24gPQlfZGVjb2RlX3Nlc3Npb240 LApAQCAtMjcyLDcgKzI3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHhmcm00X3BvbGlj eV90YWJsZVtdID0gewogCXsgfQogfTsKIAotc3RhdGljIGludCBfX25ldF9pbml0IHhmcm00X25l dF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtNF9uZXRf c3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KQogewogCXN0cnVjdCBjdGxfdGFibGUgKnRhYmxl OwogCXN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpoZHI7CkBAIC0zMDAsNyArMzAwLDcgQEAgZXJy X2FsbG9jOgogCXJldHVybiAtRU5PTUVNOwogfQogCi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhm cm00X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZy bTRfbmV0X3N5c2N0bF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAlzdHJ1Y3QgY3RsX3RhYmxl ICp0YWJsZTsKIApAQCAtMzEyLDEyICszMTIsNDQgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB4 ZnJtNF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiAJaWYgKCFuZXRfZXEobmV0LCAmaW5pdF9u ZXQpKQogCQlrZnJlZSh0YWJsZSk7CiB9CisjZWxzZSAvKiBDT05GSUdfU1lTQ1RMICovCitzdGF0 aWMgaW50IGlubGluZSB4ZnJtNF9uZXRfc3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpbmxpbmUgeGZybTRfbmV0X3N5c2N0bF9leGl0 KHN0cnVjdCBuZXQgKm5ldCkKK3sKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IF9fbmV0X2luaXQg eGZybTRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KQoreworCWludCByZXQ7CisKKwltZW1jcHko Jm5ldC0+eGZybS54ZnJtNF9kc3Rfb3BzLCAmeGZybTRfZHN0X29wc190ZW1wbGF0ZSwKKwkgICAg ICAgc2l6ZW9mKHhmcm00X2RzdF9vcHNfdGVtcGxhdGUpKTsKKwlyZXQgPSBkc3RfZW50cmllc19p bml0KCZuZXQtPnhmcm0ueGZybTRfZHN0X29wcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCXJldCA9IHhmcm00X25ldF9zeXNjdGxfaW5pdChuZXQpOworCWlmIChyZXQpCisJCWRzdF9l bnRyaWVzX2Rlc3Ryb3koJm5ldC0+eGZybS54ZnJtNF9kc3Rfb3BzKTsKKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybTRfbmV0X2V4aXQoc3RydWN0IG5ldCAq bmV0KQoreworCXhmcm00X25ldF9zeXNjdGxfZXhpdChuZXQpOworCWRzdF9lbnRyaWVzX2Rlc3Ry b3koJm5ldC0+eGZybS54ZnJtNF9kc3Rfb3BzKTsKK30KIAogc3RhdGljIHN0cnVjdCBwZXJuZXRf b3BlcmF0aW9ucyBfX25ldF9pbml0ZGF0YSB4ZnJtNF9uZXRfb3BzID0gewogCS5pbml0CT0geGZy bTRfbmV0X2luaXQsCiAJLmV4aXQJPSB4ZnJtNF9uZXRfZXhpdCwKIH07Ci0jZW5kaWYKIAogc3Rh dGljIHZvaWQgX19pbml0IHhmcm00X3BvbGljeV9pbml0KHZvaWQpCiB7CkBAIC0zMjYsMTMgKzM1 OCw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB4ZnJtNF9wb2xpY3lfaW5pdCh2b2lkKQogCiB2b2lk IF9faW5pdCB4ZnJtNF9pbml0KHZvaWQpCiB7Ci0JZHN0X2VudHJpZXNfaW5pdCgmeGZybTRfZHN0 X29wcyk7Ci0KIAl4ZnJtNF9zdGF0ZV9pbml0KCk7CiAJeGZybTRfcG9saWN5X2luaXQoKTsKIAl4 ZnJtNF9wcm90b2NvbF9pbml0KCk7Ci0jaWZkZWYgQ09ORklHX1NZU0NUTAogCXJlZ2lzdGVyX3Bl cm5ldF9zdWJzeXMoJnhmcm00X25ldF9vcHMpOwotI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL25l dC9pcHY2L3hmcm02X3BvbGljeS5jIGIvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKaW5kZXggZGE1 NWUwYy4uZDUxYTE4ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKKysrIGIv bmV0L2lwdjYveGZybTZfcG9saWN5LmMKQEAgLTI4MSw3ICsyODEsNyBAQCBzdGF0aWMgdm9pZCB4 ZnJtNl9kc3RfaWZkb3duKHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKIAl4ZnJtX2RzdF9pZmRvd24oZHN0LCBkZXYpOwogfQogCi1zdGF0aWMgc3RydWN0IGRz dF9vcHMgeGZybTZfZHN0X29wcyA9IHsKK3N0YXRpYyBzdHJ1Y3QgZHN0X29wcyB4ZnJtNl9kc3Rf b3BzX3RlbXBsYXRlID0gewogCS5mYW1pbHkgPQkJQUZfSU5FVDYsCiAJLmdjID0JCQl4ZnJtNl9n YXJiYWdlX2NvbGxlY3QsCiAJLnVwZGF0ZV9wbXR1ID0JCXhmcm02X3VwZGF0ZV9wbXR1LApAQCAt Mjk1LDcgKzI5NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHN0X29wcyB4ZnJtNl9kc3Rfb3BzID0gewog CiBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5X2FmaW5mbyB4ZnJtNl9wb2xpY3lfYWZpbmZvID0g ewogCS5mYW1pbHkgPQkJQUZfSU5FVDYsCi0JLmRzdF9vcHMgPQkJJnhmcm02X2RzdF9vcHMsCisJ LmRzdF9vcHMgPQkJJnhmcm02X2RzdF9vcHNfdGVtcGxhdGUsCiAJLmRzdF9sb29rdXAgPQkJeGZy bTZfZHN0X2xvb2t1cCwKIAkuZ2V0X3NhZGRyID0JCXhmcm02X2dldF9zYWRkciwKIAkuZGVjb2Rl X3Nlc3Npb24gPQlfZGVjb2RlX3Nlc3Npb242LApAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBz dHJ1Y3QgY3RsX3RhYmxlIHhmcm02X3BvbGljeV90YWJsZVtdID0gewogCXsgfQogfTsKIAotc3Rh dGljIGludCBfX25ldF9pbml0IHhmcm02X25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRp YyBpbnQgX19uZXRfaW5pdCB4ZnJtNl9uZXRfc3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KQog ewogCXN0cnVjdCBjdGxfdGFibGUgKnRhYmxlOwogCXN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpo ZHI7CkBAIC0zNTUsNyArMzU1LDcgQEAgZXJyX2FsbG9jOgogCXJldHVybiAtRU5PTUVNOwogfQog Ci1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm02X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkK K3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybTZfbmV0X3N5c2N0bF9leGl0KHN0cnVjdCBuZXQg Km5ldCkKIHsKIAlzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZTsKIApAQCAtMzY3LDI0ICszNjcsNTIg QEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB4ZnJtNl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQp CiAJaWYgKCFuZXRfZXEobmV0LCAmaW5pdF9uZXQpKQogCQlrZnJlZSh0YWJsZSk7CiB9CisjZWxz ZSAvKiBDT05GSUdfU1lTQ1RMICovCitzdGF0aWMgaW50IGlubGluZSB4ZnJtNl9uZXRfc3lzY3Rs X2luaXQoc3RydWN0IG5ldCAqbmV0KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBp bmxpbmUgeGZybTZfbmV0X3N5c2N0bF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKK3sKK30KKyNlbmRp ZgorCitzdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybTZfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0 KQoreworCWludCByZXQ7CisKKwltZW1jcHkoJm5ldC0+eGZybS54ZnJtNl9kc3Rfb3BzLCAmeGZy bTZfZHN0X29wc190ZW1wbGF0ZSwKKwkgICAgICAgc2l6ZW9mKHhmcm02X2RzdF9vcHNfdGVtcGxh dGUpKTsKKwlyZXQgPSBkc3RfZW50cmllc19pbml0KCZuZXQtPnhmcm0ueGZybTZfZHN0X29wcyk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHhmcm02X25ldF9zeXNjdGxfaW5p dChuZXQpOworCWlmIChyZXQpCisJCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJm5ldC0+eGZybS54ZnJt Nl9kc3Rfb3BzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQg eGZybTZfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KQoreworCXhmcm02X25ldF9zeXNjdGxfZXhp dChuZXQpOworCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJm5ldC0+eGZybS54ZnJtNl9kc3Rfb3BzKTsK K30KIAogc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyB4ZnJtNl9uZXRfb3BzID0gewog CS5pbml0CT0geGZybTZfbmV0X2luaXQsCiAJLmV4aXQJPSB4ZnJtNl9uZXRfZXhpdCwKIH07Ci0j ZW5kaWYKIAogaW50IF9faW5pdCB4ZnJtNl9pbml0KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCWRz dF9lbnRyaWVzX2luaXQoJnhmcm02X2RzdF9vcHMpOwotCiAJcmV0ID0geGZybTZfcG9saWN5X2lu aXQoKTsKLQlpZiAocmV0KSB7Ci0JCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJnhmcm02X2RzdF9vcHMp OworCWlmIChyZXQpCiAJCWdvdG8gb3V0OwotCX0KIAlyZXQgPSB4ZnJtNl9zdGF0ZV9pbml0KCk7 CiAJaWYgKHJldCkKIAkJZ290byBvdXRfcG9saWN5OwpAQCAtMzkzLDkgKzQyMSw3IEBAIGludCBf X2luaXQgeGZybTZfaW5pdCh2b2lkKQogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3N0YXRlOwogCi0j aWZkZWYgQ09ORklHX1NZU0NUTAogCXJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoJnhmcm02X25ldF9v cHMpOwotI2VuZGlmCiBvdXQ6CiAJcmV0dXJuIHJldDsKIG91dF9zdGF0ZToKQEAgLTQwNywxMSAr NDMzLDggQEAgb3V0X3BvbGljeToKIAogdm9pZCB4ZnJtNl9maW5pKHZvaWQpCiB7Ci0jaWZkZWYg Q09ORklHX1NZU0NUTAogCXVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cygmeGZybTZfbmV0X29wcyk7 Ci0jZW5kaWYKIAl4ZnJtNl9wcm90b2NvbF9maW5pKCk7CiAJeGZybTZfcG9saWN5X2ZpbmkoKTsK IAl4ZnJtNl9zdGF0ZV9maW5pKCk7Ci0JZHN0X2VudHJpZXNfZGVzdHJveSgmeGZybTZfZHN0X29w cyk7CiB9CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZy bV9wb2xpY3kuYwppbmRleCA5NGFmM2QwLi5iYWNkMzBiIDEwMDY0NAotLS0gYS9uZXQveGZybS94 ZnJtX3BvbGljeS5jCisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKQEAgLTI4MDcsNyArMjgw Nyw2IEBAIHN0YXRpYyBzdHJ1Y3QgbmVpZ2hib3VyICp4ZnJtX25laWdoX2xvb2t1cChjb25zdCBz dHJ1Y3QgZHN0X2VudHJ5ICpkc3QsCiAKIGludCB4ZnJtX3BvbGljeV9yZWdpc3Rlcl9hZmluZm8o c3RydWN0IHhmcm1fcG9saWN5X2FmaW5mbyAqYWZpbmZvKQogewotCXN0cnVjdCBuZXQgKm5ldDsK IAlpbnQgZXJyID0gMDsKIAlpZiAodW5saWtlbHkoYWZpbmZvID09IE5VTEwpKQogCQlyZXR1cm4g LUVJTlZBTDsKQEAgLTI4MzgsMjYgKzI4MzcsNiBAQCBpbnQgeGZybV9wb2xpY3lfcmVnaXN0ZXJf YWZpbmZvKHN0cnVjdCB4ZnJtX3BvbGljeV9hZmluZm8gKmFmaW5mbykKIAl9CiAJc3Bpbl91bmxv Y2soJnhmcm1fcG9saWN5X2FmaW5mb19sb2NrKTsKIAotCXJ0bmxfbG9jaygpOwotCWZvcl9lYWNo X25ldChuZXQpIHsKLQkJc3RydWN0IGRzdF9vcHMgKnhmcm1fZHN0X29wczsKLQotCQlzd2l0Y2gg KGFmaW5mby0+ZmFtaWx5KSB7Ci0JCWNhc2UgQUZfSU5FVDoKLQkJCXhmcm1fZHN0X29wcyA9ICZu ZXQtPnhmcm0ueGZybTRfZHN0X29wczsKLQkJCWJyZWFrOwotI2lmIElTX0VOQUJMRUQoQ09ORklH X0lQVjYpCi0JCWNhc2UgQUZfSU5FVDY6Ci0JCQl4ZnJtX2RzdF9vcHMgPSAmbmV0LT54ZnJtLnhm cm02X2RzdF9vcHM7Ci0JCQlicmVhazsKLSNlbmRpZgotCQlkZWZhdWx0OgotCQkJQlVHKCk7Ci0J CX0KLQkJKnhmcm1fZHN0X29wcyA9ICphZmluZm8tPmRzdF9vcHM7Ci0JfQotCXJ0bmxfdW5sb2Nr KCk7Ci0KIAlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTCh4ZnJtX3BvbGljeV9yZWdpc3Rl cl9hZmluZm8pOwpAQCAtMjg5MywyMiArMjg3Miw2IEBAIGludCB4ZnJtX3BvbGljeV91bnJlZ2lz dGVyX2FmaW5mbyhzdHJ1Y3QgeGZybV9wb2xpY3lfYWZpbmZvICphZmluZm8pCiB9CiBFWFBPUlRf U1lNQk9MKHhmcm1fcG9saWN5X3VucmVnaXN0ZXJfYWZpbmZvKTsKIAotc3RhdGljIHZvaWQgX19u ZXRfaW5pdCB4ZnJtX2RzdF9vcHNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCi17Ci0Jc3RydWN0IHhm cm1fcG9saWN5X2FmaW5mbyAqYWZpbmZvOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCWFmaW5mbyA9 IHJjdV9kZXJlZmVyZW5jZSh4ZnJtX3BvbGljeV9hZmluZm9bQUZfSU5FVF0pOwotCWlmIChhZmlu Zm8pCi0JCW5ldC0+eGZybS54ZnJtNF9kc3Rfb3BzID0gKmFmaW5mby0+ZHN0X29wczsKLSNpZiBJ U19FTkFCTEVEKENPTkZJR19JUFY2KQotCWFmaW5mbyA9IHJjdV9kZXJlZmVyZW5jZSh4ZnJtX3Bv bGljeV9hZmluZm9bQUZfSU5FVDZdKTsKLQlpZiAoYWZpbmZvKQotCQluZXQtPnhmcm0ueGZybTZf ZHN0X29wcyA9ICphZmluZm8tPmRzdF9vcHM7Ci0jZW5kaWYKLQlyY3VfcmVhZF91bmxvY2soKTsK LX0KLQogc3RhdGljIGludCB4ZnJtX2Rldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRo aXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cikKIHsKIAlzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7CkBAIC0zMDU3LDcgKzMw MjAsNiBAQCBzdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpu ZXQpCiAJcnYgPSB4ZnJtX3BvbGljeV9pbml0KG5ldCk7CiAJaWYgKHJ2IDwgMCkKIAkJZ290byBv dXRfcG9saWN5OwotCXhmcm1fZHN0X29wc19pbml0KG5ldCk7CiAJcnYgPSB4ZnJtX3N5c2N0bF9p bml0KG5ldCk7CiAJaWYgKHJ2IDwgMCkKIAkJZ290byBvdXRfc3lzY3RsOwotLSAKMi4xLjAKCg== ----Next_Part(Tue_Jan_26_18_00_44_2016_358)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_41.mbox" RnJvbSAyODBiYmMwMTY0MDIyZDcwMDk2N2FjMWRhMjBkNDhjMTRiY2M1NDViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWpheSBQYW5kdXJhbmdhbiA8dmlqYXlwQHZpamF5cC5jYT4K RGF0ZTogRnJpLCAxOCBEZWMgMjAxNSAxNDozNDo1OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDEv MzldID0/VVRGLTg/cT92ZXRoOj0yMGRvbj1FMj04MD05OXQ9MjBtb2RpZnk9MjBpcD01RnN1bT89 CiA9P1VURi04P3E/bWVkOz0yMGRvaW5nPTIwc289MjB0cmVhdHM9MjBwYWNrZXRzPTIwd2l0aD0y MGJhZD0yMGNoZWNrc3Vtcz89CiA9P1VURi04P3E/PTIwYXM9MjBnb29kLj89Ck1JTUUtVmVyc2lv bjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRy YW5zZmVyLUVuY29kaW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCBjZThjODM5Yjc0ZTMwMTc5 OTZmYWQ0ZTFiN2JhMmUyNjI1ZWRlODJmIF0KClBhY2tldHMgdGhhdCBhcnJpdmUgZnJvbSByZWFs IGhhcmR3YXJlIGRldmljZXMgaGF2ZSBpcF9zdW1tZWQgPT0KQ0hFQ0tTVU1fVU5ORUNFU1NBUlkg aWYgdGhlIGhhcmR3YXJlIHZlcmlmaWVkIHRoZSBjaGVja3N1bXMsIG9yCkNIRUNLU1VNX05PTkUg aWYgdGhlIHBhY2tldCBpcyBiYWQgb3IgaXQgd2FzIHVuYWJsZSB0byB2ZXJpZnkgaXQuIFRoZQpj dXJyZW50IHZlcnNpb24gb2YgdmV0aCB3aWxsIHJlcGxhY2UgQ0hFQ0tTVU1fTk9ORSB3aXRoCkNI RUNLU1VNX1VOTkVDRVNTQVJZLCB3aGljaCBjYXVzZXMgY29ycnVwdCBwYWNrZXRzIHJvdXRlZCBm cm9tIGhhcmR3YXJlIHRvCmEgdmV0aCBkZXZpY2UgdG8gYmUgZGVsaXZlcmVkIHRvIHRoZSBhcHBs aWNhdGlvbi4gVGhpcyBjYXVzZWQgYXBwbGljYXRpb25zCmF0IFR3aXR0ZXIgdG8gcmVjZWl2ZSBj b3JydXB0IGRhdGEgd2hlbiBuZXR3b3JrIGhhcmR3YXJlIHdhcyBjb3JydXB0aW5nCnBhY2tldHMu CgpXZSBiZWxpZXZlIHRoaXMgd2FzIGFkZGVkIGFzIGFuIG9wdGltaXphdGlvbiB0byBza2lwIGNv bXB1dGluZyBhbmQKdmVyaWZ5aW5nIGNoZWNrc3VtcyBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVu IGNvbnRhaW5lcnMuIEhvd2V2ZXIsIGxvY2FsbHkKZ2VuZXJhdGVkIHBhY2tldHMgaGF2ZSBpcF9z dW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCwgc28gdGhlIGNvZGUgYXMKd3JpdHRlbiBkb2VzIG5v dGhpbmcgZm9yIHRoZW0uIEFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgYWZ0ZXIgcmVtb3ZpbmcgdGhp cwpjb2RlLCB0aGVzZSBwYWNrZXRzIGFyZSB0cmFuc21pdHRlZCBmcm9tIG9uZSBzdGFjayB0byBh bm90aGVyIHVubW9kaWZpZWQKKHRjcGR1bXAgc2hvd3MgaW52YWxpZCBjaGVja3N1bXMgb24gYm90 aCBzaWRlcywgYXMgZXhwZWN0ZWQpLCBhbmQgdGhleSBhcmUKZGVsaXZlcmVkIGNvcnJlY3RseSB0 byBhcHBsaWNhdGlvbnMuIFdlIGRpZG7igJl0IHRlc3QgZXZlcnkgcG9zc2libGUgbmV0d29yawpj b25maWd1cmF0aW9uLCBidXQgd2UgdHJpZWQgYSBmZXcgY29tbW9uIG9uZXMgc3VjaCBhcyBicmlk Z2luZyBjb250YWluZXJzLAp1c2luZyBOQVQgYmV0d2VlbiB0aGUgaG9zdCBhbmQgYSBjb250YWlu ZXIsIGFuZCByb3V0aW5nIGZyb20gaGFyZHdhcmUKZGV2aWNlcyB0byBjb250YWluZXJzLiBXZSBo YXZlIGVmZmVjdGl2ZWx5IGRlcGxveWVkIHRoaXMgaW4gcHJvZHVjdGlvbiBhdApUd2l0dGVyIChi eSBkaXNhYmxpbmcgUlggY2hlY2tzdW0gb2ZmbG9hZGluZyBvbiB2ZXRoIGRldmljZXMpLgoKVGhp cyBjb2RlIGRhdGVzIGJhY2sgdG8gdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIGRyaXZlciwgY29t bWl0CjxlMzE0ZGJkYzFjMGRjNmE1NDhlY2Y+ICgiW05FVF06IFZpcnR1YWwgZXRoZXJuZXQgZGV2 aWNlIGRyaXZlciIpLCBzbyBJCnN1c3BlY3QgdGhpcyBidWcgb2NjdXJyZWQgbW9zdGx5IGJlY2F1 c2UgdGhlIGRyaXZlciBBUEkgaGFzIGV2b2x2ZWQKc2lnbmlmaWNhbnRseSBzaW5jZSB0aGVuLiBD b21taXQgPDBiNzk2NzUwM2RjOTc4NjRmMjgzYT4gKCJuZXQvdmV0aDogRml4CnBhY2tldCBjaGVj a3N1bW1pbmciKSAoaW4gRGVjZW1iZXIgMjAxMCkgZml4ZWQgdGhpcyBmb3IgcGFja2V0cyB0aGF0 IGdldApjcmVhdGVkIGxvY2FsbHkgYW5kIHNlbnQgdG8gaGFyZHdhcmUgZGV2aWNlcywgYnkgbm90 IGNoYW5naW5nCkNIRUNLU1VNX1BBUlRJQUwuIEhvd2V2ZXIsIHRoZSBzYW1lIGlzc3VlIHN0aWxs IG9jY3VycyBmb3IgcGFja2V0cyBjb21pbmcKaW4gZnJvbSBoYXJkd2FyZSBkZXZpY2VzLgoKQ28t YXV0aG9yZWQtYnk6IEV2YW4gSm9uZXMgPGVqQGV2YW5qb25lcy5jYT4KU2lnbmVkLW9mZi1ieTog RXZhbiBKb25lcyA8ZWpAZXZhbmpvbmVzLmNhPgpDYzogTmljb2xhcyBEaWNodGVsIDxuaWNvbGFz LmRpY2h0ZWxANndpbmQuY29tPgpDYzogUGhpbCBTdXR0ZXIgPHBoaWxAbndsLmNjPgpDYzogVG9z aGlha2kgTWFraXRhIDxtYWtpdGEudG9zaGlha2lAbGFiLm50dC5jby5qcD4KQ2M6IG5ldGRldkB2 Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKU2lnbmVkLW9m Zi1ieTogVmlqYXkgUGFuZHVyYW5nYW4gPHZpamF5cEB2aWpheXAuY2E+CkFja2VkLWJ5OiBDb25n IFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC92ZXRoLmMgfCA2IC0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvdmV0aC5jIGIvZHJpdmVycy9uZXQvdmV0aC5jCmluZGV4IGM4MTg2ZmYuLjJlNjFhNzkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZldGguYworKysgYi9kcml2ZXJzL25ldC92ZXRoLmMK QEAgLTExNywxMiArMTE3LDYgQEAgc3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlrZnJlZV9za2Ioc2tiKTsK IAkJZ290byBkcm9wOwogCX0KLQkvKiBkb24ndCBjaGFuZ2UgaXBfc3VtbWVkID09IENIRUNLU1VN X1BBUlRJQUwsIGFzIHRoYXQKLQkgKiB3aWxsIGNhdXNlIGJhZCBjaGVja3N1bSBvbiBmb3J3YXJk ZWQgcGFja2V0cwotCSAqLwotCWlmIChza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9OT05FICYm Ci0JICAgIHJjdi0+ZmVhdHVyZXMgJiBORVRJRl9GX1JYQ1NVTSkKLQkJc2tiLT5pcF9zdW1tZWQg PSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTsKIAogCWlmIChsaWtlbHkoZGV2X2ZvcndhcmRfc2tiKHJj diwgc2tiKSA9PSBORVRfUlhfU1VDQ0VTUykpIHsKIAkJc3RydWN0IHBjcHVfdnN0YXRzICpzdGF0 cyA9IHRoaXNfY3B1X3B0cihkZXYtPnZzdGF0cyk7Ci0tIAoyLjEuMAoKCkZyb20gYjlkODYwMzU3 MzIxOTNjY2JiM2JhMjBkOTgxMGRhMDU4ZDE2ZmY3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogQW5kcmV5IFJ5YWJpbmluIDxhcnlhYmluaW5AdmlydHVvenpvLmNvbT4KRGF0ZTogTW9u LCAyMSBEZWMgMjAxNSAxMjo1NDo0NSArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMzldIGlwdjYv YWRkcmxhYmVsOiBmaXggaXA2YWRkcmxibF9nZXQoKQoKWyBVcHN0cmVhbSBjb21taXQgZTQ1OWRm ZWViNjQwMDhiMmQyM2JkZjYwMGYwM2IzNjA1ZGJiODE1MiBdCgppcDZhZGRybGJsX2dldCgpIGhh cyBuZXZlciB3b3JrZWQuIElmIGlwNmFkZHJsYmxfaG9sZCgpIHN1Y2NlZWRlZCwKaXA2YWRkcmxi bF9nZXQoKSB3aWxsIGV4aXQgd2l0aCAnLUVTUkNIJy4gSWYgaXA2YWRkcmxibF9ob2xkKCkgZmFp bGVkLAppcDZhZGRybGJsX2dldCgpIHdpbGwgdXNlIGFib3V0IHRvIGJlIGZyZWUgaXA2YWRkcmxi bF9lbnRyeSBwb2ludGVyLgoKRml4IHRoaXMgYnkgaW52ZXJ0aW5nIGlwNmFkZHJsYmxfaG9sZCgp IGNoZWNrLgoKRml4ZXM6IDJhOGNjNmM4OTAzOSAoIltJUFY2XSBBRERSQ09ORjogU3VwcG9ydCBS RkMzNDg0IGNvbmZpZ3VyYWJsZSBhZGRyZXNzIHNlbGVjdGlvbiBwb2xpY3kgdGFibGUuIikKU2ln bmVkLW9mZi1ieTogQW5kcmV5IFJ5YWJpbmluIDxhcnlhYmluaW5AdmlydHVvenpvLmNvbT4KUmV2 aWV3ZWQtYnk6IENvbmcgV2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KQWNrZWQtYnk6IFlP U0hJRlVKSSBIaWRlYWtpIDx5b3NoZnVqaUBsaW51eC1pcHY2Lm9yZz4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L2FkZHJs YWJlbC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmxhYmVsLmMgYi9uZXQvaXB2Ni9hZGRybGFi ZWwuYwppbmRleCA4ODIxMjRlLi5hOGY2OTg2IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZGRybGFi ZWwuYworKysgYi9uZXQvaXB2Ni9hZGRybGFiZWwuYwpAQCAtNTUyLDcgKzU1Miw3IEBAIHN0YXRp YyBpbnQgaXA2YWRkcmxibF9nZXQoc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwgc3RydWN0IG5sbXNn aGRyICpubGgpCiAKIAlyY3VfcmVhZF9sb2NrKCk7CiAJcCA9IF9faXB2Nl9hZGRyX2xhYmVsKG5l dCwgYWRkciwgaXB2Nl9hZGRyX3R5cGUoYWRkciksIGlmYWwtPmlmYWxfaW5kZXgpOwotCWlmIChw ICYmIGlwNmFkZHJsYmxfaG9sZChwKSkKKwlpZiAocCAmJiAhaXA2YWRkcmxibF9ob2xkKHApKQog CQlwID0gTlVMTDsKIAlsc2VxID0gaXA2YWRkcmxibF90YWJsZS5zZXE7CiAJcmN1X3JlYWRfdW5s b2NrKCk7Ci0tIAoyLjEuMAoKCkZyb20gNjk1ZjhjNTEwM2VhZjMxMjg4Y2M1ZDMxMDdhNzlhZDll ZDNkYjY2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogV0FORyBDb25nIDx4aXlvdS53 YW5nY29uZ0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjEgRGVjIDIwMTUgMTA6NTU6NDUgLTA4MDAK U3ViamVjdDogW1BBVENIIDAzLzM5XSBhZGRyY29uZjogYWx3YXlzIGluaXRpYWxpemUgc3lzY3Rs IHRhYmxlIGRhdGEKClsgVXBzdHJlYW0gY29tbWl0IDU0NDlhNWNhOWJjMjdkZDUxYTQ2MmRlN2Nh MGIxY2Q4NjFjZDJiZDAgXQoKV2hlbiBzeXNjdGwgcGVyZm9ybXMgcmVzdHJpY3Qgd3JpdGVzLCBp dCBhbGxvd3MgdG8gd3JpdGUgZnJvbQphIG1pZGRsZSBwb3NpdGlvbiBvZiBhIHN5c2N0bCBmaWxl LCB3aGljaCByZXF1aXJlcyB1cyB0byBpbml0aWFsaXplCnRoZSB0YWJsZSBkYXRhIGJlZm9yZSBj YWxsaW5nIHByb2NfZG9zdHJpbmcoKSBmb3IgdGhlIHdyaXRlIGNhc2UuCgpGaXhlczogM2QxYmVj OTkzMjBkICgiaXB2NjogaW50cm9kdWNlIHNlY3JldF9zdGFibGUgdG8gaXB2Nl9kZXZjb25mIikK UmVwb3J0ZWQtYnk6IFNhc2hhIExldmluIDxzYXNoYS5sZXZpbkBvcmFjbGUuY29tPgpBY2tlZC1i eTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpUZXN0 ZWQtYnk6IFNhc2hhIExldmluIDxzYXNoYS5sZXZpbkBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5 OiBDb25nIFdhbmcgPHhpeW91Lndhbmdjb25nQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2 aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L2FkZHJjb25m LmMgfCAxMSArKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZGRyY29uZi5jIGIvbmV0L2lwdjYv YWRkcmNvbmYuYwppbmRleCBhMmQ2ODUwLi5mNDc5NWIwIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9h ZGRyY29uZi5jCisrKyBiL25ldC9pcHY2L2FkZHJjb25mLmMKQEAgLTUyNjcsMTMgKzUyNjcsMTAg QEAgc3RhdGljIGludCBhZGRyY29uZl9zeXNjdGxfc3RhYmxlX3NlY3JldChzdHJ1Y3QgY3RsX3Rh YmxlICpjdGwsIGludCB3cml0ZSwKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKCF3cml0ZSkgewot CQllcnIgPSBzbnByaW50ZihzdHIsIHNpemVvZihzdHIpLCAiJXBJNiIsCi0JCQkgICAgICAgJnNl Y3JldC0+c2VjcmV0KTsKLQkJaWYgKGVyciA+PSBzaXplb2Yoc3RyKSkgewotCQkJZXJyID0gLUVJ TzsKLQkJCWdvdG8gb3V0OwotCQl9CisJZXJyID0gc25wcmludGYoc3RyLCBzaXplb2Yoc3RyKSwg IiVwSTYiLCAmc2VjcmV0LT5zZWNyZXQpOworCWlmIChlcnIgPj0gc2l6ZW9mKHN0cikpIHsKKwkJ ZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CiAJfQogCiAJZXJyID0gcHJvY19kb3N0cmluZygmbGN0 bCwgd3JpdGUsIGJ1ZmZlciwgbGVucCwgcHBvcyk7Ci0tIAoyLjEuMAoKCkZyb20gOTIwZmU2Nzky YTE0OWRiYmQ0NDNhNWVhYThjYmFjMjQ2ZjRhMjRkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogPT9VVEYtOD9xP0JqPUMzPUI4cm49MjBNb3JrPz0gPGJqb3JuQG1vcmsubm8+CkRhdGU6 IFdlZCwgMjMgRGVjIDIwMTUgMTM6NDI6NDMgKzAxMDAKU3ViamVjdDogW1BBVENIIDA0LzM5XSBu ZXQ6IGNkY19uY206IGF2b2lkIGNoYW5naW5nIFJYL1RYIGJ1ZmZlcnMgb24gTVRVCiBjaGFuZ2Vz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCAxZGZk ZGZmNWZjZDg2OWZjYWIwYzUyZmFmYWUwOTlkZmE0MzVhOTM1IF0KCk5DTSBidWZmZXIgc2l6ZXMg YXJlIG5lZ290aWF0ZWQgd2l0aCB0aGUgZGV2aWNlIGluZGVwZW5kZW50bHkgb2YKdGhlIG5ldHdv cmsgZGV2aWNlIE1UVS4gIFRoZSBSWCBidWZmZXJzIGFyZSBhbGxvY2F0ZWQgYnkgdGhlCnVzYm5l dCBmcmFtZXdvcmsgYmFzZWQgb24gdGhlIHJ4X3VyYl9zaXplIHZhbHVlIHNldCBieSBjZGNfbmNt LiBBCnNpbmdsZSBSWCBidWZmZXIgY2FuIGhvbGQgYSBudW1iZXIgb2YgTVRVIHNpemVkIHBhY2tl dHMuCgpUaGUgZGVmYXVsdCB1c2JuZXQgY2hhbmdlX210dSBuZG8gb25seSBtb2RpZmllcyByeF91 cmJfc2l6ZSBpZiBpdAppcyBlcXVhbCB0byBoYXJkX210dS4gIEFuZCB0aGUgY2RjX25jbSBkcml2 ZXIgd2lsbCBzZXQgcnhfdXJiX3NpemUKYW5kIGhhcmRfbXR1IGluZGVwZW5kZW50bHkgb2YgZWFj aCBvdGhlciwgYmFzZWQgb24gZHdOdGJJbk1heFNpemUKYW5kIGR3TnRiT3V0TWF4U2l6ZSByZXNw ZWN0aXZlbHkuIEl0IHdhcyB0aGVyZWZvcmUgYXNzdW1lZCB0aGF0CnVzYm5ldF9jaGFuZ2VfbXR1 KCkgd291bGQgbmV2ZXIgdG91Y2ggcnhfdXJiX3NpemUuICBUaGlzIGZhaWxlZCB0bwpjb25zaWRl ciB0aGUgY2FzZSB3aGVyZSBkd050YkluTWF4U2l6ZSBhbmQgZHdOdGJPdXRNYXhTaXplIGhhcHBl bnMKdG8gYmUgZXF1YWwuCgpGaXggYnkgaW1wbGVtZW50aW5nIGFuIE5DTSBzcGVjaWZpYyBjaGFu Z2VfbXR1IG5kbywgbW9kaWZ5aW5nIHRoZQpuZXRkZXYgTVRVIHdpdGhvdXQgdG91Y2hpbmcgdGhl IGJ1ZmZlciBzaXplIHNldHRpbmdzLgoKU2lnbmVkLW9mZi1ieTogQmrDuHJuIE1vcmsgPGJqb3Ju QG1vcmsubm8+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0 Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYyAgfCAgMiArLQogZHJpdmVycy9u ZXQvdXNiL2NkY19uY20uYyAgIHwgMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog aW5jbHVkZS9saW51eC91c2IvY2RjX25jbS5oIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAzMyBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNi L2NkY19tYmltLmMgYi9kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYwppbmRleCBlNGI3YTQ3Li41 ZWZhYTlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91c2IvY2RjX21iaW0uYworKysgYi9kcml2 ZXJzL25ldC91c2IvY2RjX21iaW0uYwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgbmV0X2RldmljZV9vcHMgY2RjX21iaW1fbmV0ZGV2X29wcyA9IHsKIAkubmRvX3N0b3Ag ICAgICAgICAgICAgPSB1c2JuZXRfc3RvcCwKIAkubmRvX3N0YXJ0X3htaXQgICAgICAgPSB1c2Ju ZXRfc3RhcnRfeG1pdCwKIAkubmRvX3R4X3RpbWVvdXQgICAgICAgPSB1c2JuZXRfdHhfdGltZW91 dCwKLQkubmRvX2NoYW5nZV9tdHUgICAgICAgPSB1c2JuZXRfY2hhbmdlX210dSwKKwkubmRvX2No YW5nZV9tdHUgICAgICAgPSBjZGNfbmNtX2NoYW5nZV9tdHUsCiAJLm5kb19zZXRfbWFjX2FkZHJl c3MgID0gZXRoX21hY19hZGRyLAogCS5uZG9fdmFsaWRhdGVfYWRkciAgICA9IGV0aF92YWxpZGF0 ZV9hZGRyLAogCS5uZG9fdmxhbl9yeF9hZGRfdmlkICA9IGNkY19tYmltX3J4X2FkZF92aWQsCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jIGIvZHJpdmVycy9uZXQvdXNiL2Nk Y19uY20uYwppbmRleCA4MDY3YjhmLi4wYjQ4MWMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC91 c2IvY2RjX25jbS5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMKQEAgLTQxLDYgKzQx LDcgQEAKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNsdWRlIDxsaW51eC9uZXRkZXZp Y2UuaD4KICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V0aGVyZGV2 aWNlLmg+CiAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgogI2luY2x1ZGUgPGxpbnV4L3dvcmtx dWV1ZS5oPgogI2luY2x1ZGUgPGxpbnV4L21paS5oPgpAQCAtNjg3LDYgKzY4OCwzMyBAQCBzdGF0 aWMgdm9pZCBjZGNfbmNtX2ZyZWUoc3RydWN0IGNkY19uY21fY3R4ICpjdHgpCiAJa2ZyZWUoY3R4 KTsKIH0KIAorLyogd2UgbmVlZCB0byBvdmVycmlkZSB0aGUgdXNibmV0IGNoYW5nZV9tdHUgbmRv IGZvciB0d28gcmVhc29uczoKKyAqICAtIHJlc3BlY3QgdGhlIG5lZ290aWF0ZWQgbWF4aW11bSBk YXRhZ3JhbSBzaXplCisgKiAgLSBhdm9pZCB1bndhbnRlZCBjaGFuZ2VzIHRvIHJ4IGFuZCB0eCBi dWZmZXJzCisgKi8KK2ludCBjZGNfbmNtX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKm5l dCwgaW50IG5ld19tdHUpCit7CisJc3RydWN0IHVzYm5ldCAqZGV2ID0gbmV0ZGV2X3ByaXYobmV0 KTsKKwlzdHJ1Y3QgY2RjX25jbV9jdHggKmN0eCA9IChzdHJ1Y3QgY2RjX25jbV9jdHggKilkZXYt PmRhdGFbMF07CisJaW50IG1heG10dSA9IGN0eC0+bWF4X2RhdGFncmFtX3NpemUgLSBjZGNfbmNt X2V0aF9obGVuKGRldik7CisKKwlpZiAobmV3X210dSA8PSAwIHx8IG5ld19tdHUgPiBtYXhtdHUp CisJCXJldHVybiAtRUlOVkFMOworCW5ldC0+bXR1ID0gbmV3X210dTsKKwlyZXR1cm4gMDsKK30K K0VYUE9SVF9TWU1CT0xfR1BMKGNkY19uY21fY2hhbmdlX210dSk7CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgbmV0X2RldmljZV9vcHMgY2RjX25jbV9uZXRkZXZfb3BzID0geworCS5uZG9fb3Blbgkg ICAgID0gdXNibmV0X29wZW4sCisJLm5kb19zdG9wCSAgICAgPSB1c2JuZXRfc3RvcCwKKwkubmRv X3N0YXJ0X3htaXQJICAgICA9IHVzYm5ldF9zdGFydF94bWl0LAorCS5uZG9fdHhfdGltZW91dAkg ICAgID0gdXNibmV0X3R4X3RpbWVvdXQsCisJLm5kb19jaGFuZ2VfbXR1CSAgICAgPSBjZGNfbmNt X2NoYW5nZV9tdHUsCisJLm5kb19zZXRfbWFjX2FkZHJlc3MgPSBldGhfbWFjX2FkZHIsCisJLm5k b192YWxpZGF0ZV9hZGRyICAgPSBldGhfdmFsaWRhdGVfYWRkciwKK307CisKIGludCBjZGNfbmNt X2JpbmRfY29tbW9uKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmlu dGYsIHU4IGRhdGFfYWx0c2V0dGluZykKIHsKIAljb25zdCBzdHJ1Y3QgdXNiX2NkY191bmlvbl9k ZXNjICp1bmlvbl9kZXNjID0gTlVMTDsKQEAgLTg2MSw2ICs4ODksOSBAQCBhZHZhbmNlOgogCS8q IGFkZCBvdXIgc3lzZnMgYXR0cnMgKi8KIAlkZXYtPm5ldC0+c3lzZnNfZ3JvdXBzWzBdID0gJmNk Y19uY21fc3lzZnNfYXR0cl9ncm91cDsKIAorCS8qIG11c3QgaGFuZGxlIE1UVSBjaGFuZ2VzICov CisJZGV2LT5uZXQtPm5ldGRldl9vcHMgPSAmY2RjX25jbV9uZXRkZXZfb3BzOworCiAJcmV0dXJu IDA7CiAKIGVycm9yMjoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL2NkY19uY20uaCBi L2luY2x1ZGUvbGludXgvdXNiL2NkY19uY20uaAppbmRleCA3YzliNDg0Li5lNzgyN2FlIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9jZGNfbmNtLmgKKysrIGIvaW5jbHVkZS9saW51eC91 c2IvY2RjX25jbS5oCkBAIC0xMzMsNiArMTMzLDcgQEAgc3RydWN0IGNkY19uY21fY3R4IHsKIH07 CiAKIHU4IGNkY19uY21fc2VsZWN0X2FsdHNldHRpbmcoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmlu dGYpOworaW50IGNkY19uY21fY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0LCBpbnQg bmV3X210dSk7CiBpbnQgY2RjX25jbV9iaW5kX2NvbW1vbihzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0 cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCB1OCBkYXRhX2FsdHNldHRpbmcpOwogdm9pZCBjZGNf bmNtX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRm KTsKIHN0cnVjdCBza19idWZmICpjZGNfbmNtX2ZpbGxfdHhfZnJhbWUoc3RydWN0IHVzYm5ldCAq ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBfX2xlMzIgc2lnbik7Ci0tIAoyLjEuMAoKCkZyb20g N2MxNGNmOTQzNDQ1MmY3NGNmMjhjN2Y5OWY2OTA3YmY3NTA3MmJjZSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogWGluIExvbmcgPGx1Y2llbi54aW5AZ21haWwuY29tPgpEYXRlOiBUdWUs IDI5IERlYyAyMDE1IDE3OjQ5OjI1ICswODAwClN1YmplY3Q6IFtQQVRDSCAwNS8zOV0gc2N0cDog c2N0cCBzaG91bGQgcmVsZWFzZSBhc3NvYyB3aGVuCiBzY3RwX21ha2VfYWJvcnRfdXNlciByZXR1 cm4gTlVMTCBpbiBzY3RwX2Nsb3NlCgpbIFVwc3RyZWFtIGNvbW1pdCAwNjhkOGJkMzM4ZTg1NTI4 NmFlYTU0ZTcwZDFjMTAxNTY5Mjg0YjIxIF0KCkluIHNjdHBfY2xvc2UsIHNjdHBfbWFrZV9hYm9y dF91c2VyIG1heSByZXR1cm4gTlVMTCBiZWNhdXNlIG9mIG1lbW9yeQphbGxvY2F0aW9uIGZhaWx1 cmUuIElmIHRoaXMgaGFwcGVucywgaXQgd2lsbCBieXBhc3MgYW55IHN0YXRlIGNoYW5nZQphbmQg bmV2ZXIgZnJlZSB0aGUgYXNzb2MuIFRoZSBhc3NvYyBoYXMgbm8gY2hhbmNlIHRvIGJlIGZyZWVk IGFuZCBpdAp3aWxsIGJlIGtlcHQgaW4gbWVtb3J5IHdpdGggdGhlIHN0YXRlIGl0IGhhZCBldmVu IGFmdGVyIHRoZSBzb2NrZXQgaXMKY2xvc2VkIGJ5IHNjdHBfY2xvc2UoKS4KClNvIGlmIHNjdHBf bWFrZV9hYm9ydF91c2VyIGZhaWxzIHRvIGFsbG9jYXRlIG1lbW9yeSwgd2Ugc2hvdWxkIGFib3J0 CnRoZSBhc29jIHZpYSBzY3RwX3ByaW1pdGl2ZV9BQk9SVCBhcyB3ZWxsLiBKdXN0IGxpa2UgdGhl IGFubm90YXRpb24gaW4Kc2N0cF9zZl9jb29raWVfd2FpdF9wcm1fYWJvcnQgYW5kIHNjdHBfc2Zf ZG9fOV8xX3BybV9hYm9ydCBzYWlkLAoiRXZlbiBpZiB3ZSBjYW4ndCBzZW5kIHRoZSBBQk9SVCBk dWUgdG8gbG93IG1lbW9yeSBkZWxldGUgdGhlIFRDQi4KVGhpcyBpcyBhIGRlcGFydHVyZSBmcm9t IG91ciB0eXBpY2FsIE5PTUVNIGhhbmRsaW5nIi4KCkJ1dCB0aGVuIHRoZSBjaHVuayBpcyBOVUxM IChsb3cgbWVtb3J5KSBhbmQgdGhlIFNDVFBfQ01EX1JFUExZIGNtZCB3b3VsZApkZXJlZmVyZW5j ZSB0aGUgY2h1bmsgcG9pbnRlciwgYW5kIHN5c3RlbSBjcmFzaC4gU28gd2Ugc2hvdWxkIGFkZApT Q1RQX0NNRF9SRVBMWSBjbWQgb25seSB3aGVuIHRoZSBjaHVuayBpcyBub3QgTlVMTCwganVzdCBs aWtlIG90aGVyCnBsYWNlcyB3aGVyZSBpdCBhZGRzIFNDVFBfQ01EX1JFUExZIGNtZC4KClNpZ25l ZC1vZmYtYnk6IFhpbiBMb25nIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KQWNrZWQtYnk6IE1hcmNl bG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3NjdHAv c21fc3RhdGVmdW5zLmMgfCA2ICsrKystLQogbmV0L3NjdHAvc29ja2V0LmMgICAgICAgfCAzICst LQogMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMu YwppbmRleCAzZWUyN2I3Li5lNmJiOThlIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1 bnMuYworKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwpAQCAtNDgyOSw3ICs0ODI5LDggQEAg c2N0cF9kaXNwb3NpdGlvbl90IHNjdHBfc2ZfZG9fOV8xX3BybV9hYm9ydCgKIAogCXJldHZhbCA9 IFNDVFBfRElTUE9TSVRJT05fQ09OU1VNRTsKIAotCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywg U0NUUF9DTURfUkVQTFksIFNDVFBfQ0hVTksoYWJvcnQpKTsKKwlpZiAoYWJvcnQpCisJCXNjdHBf YWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfUkVQTFksIFNDVFBfQ0hVTksoYWJvcnQpKTsK IAogCS8qIEV2ZW4gaWYgd2UgY2FuJ3Qgc2VuZCB0aGUgQUJPUlQgZHVlIHRvIGxvdyBtZW1vcnkg ZGVsZXRlIHRoZQogCSAqIFRDQi4gIFRoaXMgaXMgYSBkZXBhcnR1cmUgZnJvbSBvdXIgdHlwaWNh bCBOT01FTSBoYW5kbGluZy4KQEAgLTQ5NjYsNyArNDk2Nyw4IEBAIHNjdHBfZGlzcG9zaXRpb25f dCBzY3RwX3NmX2Nvb2tpZV93YWl0X3BybV9hYm9ydCgKIAkJCVNDVFBfVE8oU0NUUF9FVkVOVF9U SU1FT1VUX1QxX0lOSVQpKTsKIAlyZXR2YWwgPSBTQ1RQX0RJU1BPU0lUSU9OX0NPTlNVTUU7CiAK LQlzY3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBfQ01EX1JFUExZLCBTQ1RQX0NIVU5LKGFi b3J0KSk7CisJaWYgKGFib3J0KQorCQlzY3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBfQ01E X1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0KSk7CiAKIAlzY3RwX2FkZF9jbWRfc2YoY29tbWFuZHMs IFNDVFBfQ01EX05FV19TVEFURSwKIAkJCVNDVFBfU1RBVEUoU0NUUF9TVEFURV9DTE9TRUQpKTsK ZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NvY2tldC5jIGIvbmV0L3NjdHAvc29ja2V0LmMKaW5kZXgg YTYzYzJjOC4uNzZlNmVjNiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc29ja2V0LmMKKysrIGIvbmV0 L3NjdHAvc29ja2V0LmMKQEAgLTE1MTMsOCArMTUxMyw3IEBAIHN0YXRpYyB2b2lkIHNjdHBfY2xv c2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiAJCQlzdHJ1Y3Qgc2N0cF9jaHVuayAq Y2h1bms7CiAKIAkJCWNodW5rID0gc2N0cF9tYWtlX2Fib3J0X3VzZXIoYXNvYywgTlVMTCwgMCk7 Ci0JCQlpZiAoY2h1bmspCi0JCQkJc2N0cF9wcmltaXRpdmVfQUJPUlQobmV0LCBhc29jLCBjaHVu ayk7CisJCQlzY3RwX3ByaW1pdGl2ZV9BQk9SVChuZXQsIGFzb2MsIGNodW5rKTsKIAkJfSBlbHNl CiAJCQlzY3RwX3ByaW1pdGl2ZV9TSFVURE9XTihuZXQsIGFzb2MsIE5VTEwpOwogCX0KLS0gCjIu MS4wCgoKRnJvbSA0YjE0ZmIzYzViOTcyODZlNmRlNGIzYTAxNTUzMmM0YjZjMTc3M2I3IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+ CkRhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MjY6MzMgKzAxMDAKU3ViamVjdDogW1BBVENIIDA2 LzM5XSBjb25uZWN0b3I6IGJ1bXAgc2tiLT51c2VycyBiZWZvcmUgY2FsbGJhY2sgaW52b2NhdGlv bgoKWyBVcHN0cmVhbSBjb21taXQgNTUyODViZjA5NDI3YzVhYmY0M2VlMWQ1NGU4OTJmMzUyMDky YjFmMSBdCgpEbWl0cnkgcmVwb3J0cyBtZW1sZWFrIHdpdGggc3lza2FsbGVyIHByb2dyYW0uClBy b2JsZW0gaXMgdGhhdCBjb25uZWN0b3IgYnVtcHMgc2tiIHVzZWNvdW50IGJ1dCBtaWdodCBub3Qg aW52b2tlIGNhbGxiYWNrLgoKU28gbW92ZSBza2JfZ2V0IHRvIHdoZXJlIHdlIGludm9rZSB0aGUg Y2FsbGJhY2suCgpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29t PgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJz L2Nvbm5lY3Rvci9jb25uZWN0b3IuYyB8IDExICsrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY29u bmVjdG9yL2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9jb25uZWN0b3IvY29ubmVjdG9yLmMKaW5kZXgg MzBmNTIyOC4uYzE5ZTdmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jb25uZWN0b3IvY29ubmVjdG9y LmMKKysrIGIvZHJpdmVycy9jb25uZWN0b3IvY29ubmVjdG9yLmMKQEAgLTE3OCwyNiArMTc4LDIx IEBAIHN0YXRpYyBpbnQgY25fY2FsbF9jYWxsYmFjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogICoK ICAqIEl0IGNoZWNrcyBza2IsIG5ldGxpbmsgaGVhZGVyIGFuZCBtc2cgc2l6ZXMsIGFuZCBjYWxs cyBjYWxsYmFjayBoZWxwZXIuCiAgKi8KLXN0YXRpYyB2b2lkIGNuX3J4X3NrYihzdHJ1Y3Qgc2tf YnVmZiAqX19za2IpCitzdGF0aWMgdm9pZCBjbl9yeF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikK IHsKIAlzdHJ1Y3Qgbmxtc2doZHIgKm5saDsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwogCWludCBs ZW4sIGVycjsKIAotCXNrYiA9IHNrYl9nZXQoX19za2IpOwotCiAJaWYgKHNrYi0+bGVuID49IE5M TVNHX0hEUkxFTikgewogCQlubGggPSBubG1zZ19oZHIoc2tiKTsKIAkJbGVuID0gbmxtc2dfbGVu KG5saCk7CiAKIAkJaWYgKGxlbiA8IChpbnQpc2l6ZW9mKHN0cnVjdCBjbl9tc2cpIHx8CiAJCSAg ICBza2ItPmxlbiA8IG5saC0+bmxtc2dfbGVuIHx8Ci0JCSAgICBsZW4gPiBDT05ORUNUT1JfTUFY X01TR19TSVpFKSB7Ci0JCQlrZnJlZV9za2Ioc2tiKTsKKwkJICAgIGxlbiA+IENPTk5FQ1RPUl9N QVhfTVNHX1NJWkUpCiAJCQlyZXR1cm47Ci0JCX0KIAotCQllcnIgPSBjbl9jYWxsX2NhbGxiYWNr KHNrYik7CisJCWVyciA9IGNuX2NhbGxfY2FsbGJhY2soc2tiX2dldChza2IpKTsKIAkJaWYgKGVy ciA8IDApCiAJCQlrZnJlZV9za2Ioc2tiKTsKIAl9Ci0tIAoyLjEuMAoKCkZyb20gZjk3N2JiMWE4 ZmM2MmJhOTY3MmIzOGU0ZDRmMDc5MGE3YjQ5YzU4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogd2lsbHkgdGFycmVhdSA8d0Axd3QuZXU+CkRhdGU6IFN1biwgMTAgSmFuIDIwMTYgMDc6 NTQ6NTYgKzAxMDAKU3ViamVjdDogW1BBVENIIDA3LzM5XSB1bml4OiBwcm9wZXJseSBhY2NvdW50 IGZvciBGRHMgcGFzc2VkIG92ZXIgdW5peCBzb2NrZXRzCgpbIFVwc3RyZWFtIGNvbW1pdCA3MTJm NGFhZDQwNmJiMWVkNjdmM2Y5OGQwNGMwNDQxOTFmMGZmNTkzIF0KCkl0IGlzIHBvc3NpYmxlIGZv ciBhIHByb2Nlc3MgdG8gYWxsb2NhdGUgYW5kIGFjY3VtdWxhdGUgZmFyIG1vcmUgRkRzIHRoYW4K dGhlIHByb2Nlc3MnIGxpbWl0IGJ5IHNlbmRpbmcgdGhlbSBvdmVyIGEgdW5peCBzb2NrZXQgdGhl biBjbG9zaW5nIHRoZW0KdG8ga2VlcCB0aGUgcHJvY2VzcycgZmQgY291bnQgbG93LgoKVGhpcyBj aGFuZ2UgYWRkcmVzc2VzIHRoaXMgcHJvYmxlbSBieSBrZWVwaW5nIHRyYWNrIG9mIHRoZSBudW1i ZXIgb2YgRkRzCmluIGZsaWdodCBwZXIgdXNlciBhbmQgcHJldmVudGluZyBub24tcHJpdmlsZWdl ZCBwcm9jZXNzZXMgZnJvbSBoYXZpbmcKbW9yZSBGRHMgaW4gZmxpZ2h0IHRoYW4gdGhlaXIgY29u ZmlndXJlZCBGRCBsaW1pdC4KClJlcG9ydGVkLWJ5OiBzb2NrZXRwYWlyQGdtYWlsLmNvbQpSZXBv cnRlZC1ieTogVGV0c3VvIEhhbmRhIDxwZW5ndWluLWtlcm5lbEBJLWxvdmUuU0FLVVJBLm5lLmpw PgpNaXRpZ2F0ZXM6IENWRS0yMDEzLTQzMTIgKExpbnV4IDIuMCspClN1Z2dlc3RlZC1ieTogTGlu dXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpBY2tlZC1ieTogSGFu bmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2Zm LWJ5OiBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWls bGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbGludXgvc2NoZWQuaCB8ICAx ICsKIG5ldC91bml4L2FmX3VuaXguYyAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQog bmV0L3VuaXgvZ2FyYmFnZS5jICAgIHwgMTMgKysrKysrKystLS0tLQogMyBmaWxlcyBjaGFuZ2Vk LCAyOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaAppbmRleCA2MWY0ZjJkLi45MTI4 YjRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKKysrIGIvaW5jbHVkZS9saW51 eC9zY2hlZC5oCkBAIC04MDIsNiArODAyLDcgQEAgc3RydWN0IHVzZXJfc3RydWN0IHsKIAl1bnNp Z25lZCBsb25nIG1xX2J5dGVzOwkvKiBIb3cgbWFueSBieXRlcyBjYW4gYmUgYWxsb2NhdGVkIHRv IG1xdWV1ZT8gKi8KICNlbmRpZgogCXVuc2lnbmVkIGxvbmcgbG9ja2VkX3NobTsgLyogSG93IG1h bnkgcGFnZXMgb2YgbWxvY2tlZCBzaG0gPyAqLworCXVuc2lnbmVkIGxvbmcgdW5peF9pbmZsaWdo dDsJLyogSG93IG1hbnkgZmlsZXMgaW4gZmxpZ2h0IGluIHVuaXggc29ja2V0cyAqLwogCiAjaWZk ZWYgQ09ORklHX0tFWVMKIAlzdHJ1Y3Qga2V5ICp1aWRfa2V5cmluZzsJLyogVUlEIHNwZWNpZmlj IGtleXJpbmcgKi8KZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2Fm X3VuaXguYwppbmRleCBhMzk4ZjYyLi5jYjNhMDFhIDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91 bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBAIC0xNDgxLDYgKzE0ODEsMjEgQEAgc3Rh dGljIHZvaWQgdW5peF9kZXN0cnVjdF9zY20oc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzb2NrX3dm cmVlKHNrYik7CiB9CiAKKy8qCisgKiBUaGUgInVzZXItPnVuaXhfaW5mbGlnaHQiIHZhcmlhYmxl IGlzIHByb3RlY3RlZCBieSB0aGUgZ2FyYmFnZQorICogY29sbGVjdGlvbiBsb2NrLCBhbmQgd2Ug anVzdCByZWFkIGl0IGxvY2tsZXNzbHkgaGVyZS4gSWYgeW91IGdvCisgKiBvdmVyIHRoZSBsaW1p dCwgdGhlcmUgbWlnaHQgYmUgYSB0aW55IHJhY2UgaW4gYWN0dWFsbHkgbm90aWNpbmcKKyAqIGl0 IGFjcm9zcyB0aHJlYWRzLiBUb3VnaC4KKyAqLworc3RhdGljIGlubGluZSBib29sIHRvb19tYW55 X3VuaXhfZmRzKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKK3sKKwlzdHJ1Y3QgdXNlcl9zdHJ1Y3Qg KnVzZXIgPSBjdXJyZW50X3VzZXIoKTsKKworCWlmICh1bmxpa2VseSh1c2VyLT51bml4X2luZmxp Z2h0ID4gdGFza19ybGltaXQocCwgUkxJTUlUX05PRklMRSkpKQorCQlyZXR1cm4gIWNhcGFibGUo Q0FQX1NZU19SRVNPVVJDRSkgJiYgIWNhcGFibGUoQ0FQX1NZU19BRE1JTik7CisJcmV0dXJuIGZh bHNlOworfQorCiAjZGVmaW5lIE1BWF9SRUNVUlNJT05fTEVWRUwgNAogCiBzdGF0aWMgaW50IHVu aXhfYXR0YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nvb2tpZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti KQpAQCAtMTQ4OSw2ICsxNTA0LDkgQEAgc3RhdGljIGludCB1bml4X2F0dGFjaF9mZHMoc3RydWN0 IHNjbV9jb29raWUgKnNjbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAl1bnNpZ25lZCBjaGFyIG1h eF9sZXZlbCA9IDA7CiAJaW50IHVuaXhfc29ja19jb3VudCA9IDA7CiAKKwlpZiAodG9vX21hbnlf dW5peF9mZHMoY3VycmVudCkpCisJCXJldHVybiAtRVRPT01BTllSRUZTOworCiAJZm9yIChpID0g c2NtLT5mcC0+Y291bnQgLSAxOyBpID49IDA7IGktLSkgewogCQlzdHJ1Y3Qgc29jayAqc2sgPSB1 bml4X2dldF9zb2NrZXQoc2NtLT5mcC0+ZnBbaV0pOwogCkBAIC0xNTEwLDEwICsxNTI4LDggQEAg c3RhdGljIGludCB1bml4X2F0dGFjaF9mZHMoc3RydWN0IHNjbV9jb29raWUgKnNjbSwgc3RydWN0 IHNrX2J1ZmYgKnNrYikKIAlpZiAoIVVOSVhDQihza2IpLmZwKQogCQlyZXR1cm4gLUVOT01FTTsK IAotCWlmICh1bml4X3NvY2tfY291bnQpIHsKLQkJZm9yIChpID0gc2NtLT5mcC0+Y291bnQgLSAx OyBpID49IDA7IGktLSkKLQkJCXVuaXhfaW5mbGlnaHQoc2NtLT5mcC0+ZnBbaV0pOwotCX0KKwlm b3IgKGkgPSBzY20tPmZwLT5jb3VudCAtIDE7IGkgPj0gMDsgaS0tKQorCQl1bml4X2luZmxpZ2h0 KHNjbS0+ZnAtPmZwW2ldKTsKIAlyZXR1cm4gbWF4X2xldmVsOwogfQogCmRpZmYgLS1naXQgYS9u ZXQvdW5peC9nYXJiYWdlLmMgYi9uZXQvdW5peC9nYXJiYWdlLmMKaW5kZXggYTczYTIyNi4uOGZj ZGMyMiAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvZ2FyYmFnZS5jCisrKyBiL25ldC91bml4L2dhcmJh Z2UuYwpAQCAtMTIwLDExICsxMjAsMTEgQEAgdm9pZCB1bml4X2luZmxpZ2h0KHN0cnVjdCBmaWxl ICpmcCkKIHsKIAlzdHJ1Y3Qgc29jayAqcyA9IHVuaXhfZ2V0X3NvY2tldChmcCk7CiAKKwlzcGlu X2xvY2soJnVuaXhfZ2NfbG9jayk7CisKIAlpZiAocykgewogCQlzdHJ1Y3QgdW5peF9zb2NrICp1 ID0gdW5peF9zayhzKTsKIAotCQlzcGluX2xvY2soJnVuaXhfZ2NfbG9jayk7Ci0KIAkJaWYgKGF0 b21pY19sb25nX2luY19yZXR1cm4oJnUtPmluZmxpZ2h0KSA9PSAxKSB7CiAJCQlCVUdfT04oIWxp c3RfZW1wdHkoJnUtPmxpbmspKTsKIAkJCWxpc3RfYWRkX3RhaWwoJnUtPmxpbmssICZnY19pbmZs aWdodF9saXN0KTsKQEAgLTEzMiwyNSArMTMyLDI4IEBAIHZvaWQgdW5peF9pbmZsaWdodChzdHJ1 Y3QgZmlsZSAqZnApCiAJCQlCVUdfT04obGlzdF9lbXB0eSgmdS0+bGluaykpOwogCQl9CiAJCXVu aXhfdG90X2luZmxpZ2h0Kys7Ci0JCXNwaW5fdW5sb2NrKCZ1bml4X2djX2xvY2spOwogCX0KKwlm cC0+Zl9jcmVkLT51c2VyLT51bml4X2luZmxpZ2h0Kys7CisJc3Bpbl91bmxvY2soJnVuaXhfZ2Nf bG9jayk7CiB9CiAKIHZvaWQgdW5peF9ub3RpbmZsaWdodChzdHJ1Y3QgZmlsZSAqZnApCiB7CiAJ c3RydWN0IHNvY2sgKnMgPSB1bml4X2dldF9zb2NrZXQoZnApOwogCisJc3Bpbl9sb2NrKCZ1bml4 X2djX2xvY2spOworCiAJaWYgKHMpIHsKIAkJc3RydWN0IHVuaXhfc29jayAqdSA9IHVuaXhfc2so cyk7CiAKLQkJc3Bpbl9sb2NrKCZ1bml4X2djX2xvY2spOwogCQlCVUdfT04obGlzdF9lbXB0eSgm dS0+bGluaykpOwogCiAJCWlmIChhdG9taWNfbG9uZ19kZWNfYW5kX3Rlc3QoJnUtPmluZmxpZ2h0 KSkKIAkJCWxpc3RfZGVsX2luaXQoJnUtPmxpbmspOwogCQl1bml4X3RvdF9pbmZsaWdodC0tOwot CQlzcGluX3VubG9jaygmdW5peF9nY19sb2NrKTsKIAl9CisJZnAtPmZfY3JlZC0+dXNlci0+dW5p eF9pbmZsaWdodC0tOworCXNwaW5fdW5sb2NrKCZ1bml4X2djX2xvY2spOwogfQogCiBzdGF0aWMg dm9pZCBzY2FuX2luZmxpZ2h0KHN0cnVjdCBzb2NrICp4LCB2b2lkICgqZnVuYykoc3RydWN0IHVu aXhfc29jayAqKSwKLS0gCjIuMS4wCgoKRnJvbSA1M2IwMTRkOWM1M2Q1MTg0YmVlNTc1ZTM1ZDE4 MTJhOWI1ZjM4ZmRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYW5uZXMgRnJlZGVy aWMgU293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAx NiAxMDo0NjowMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDgvMzldIGJyaWRnZTogT25seSBjYWxs IC9zYmluL2JyaWRnZS1zdHAgZm9yIHRoZSBpbml0aWFsCiBuZXR3b3JrIG5hbWVzcGFjZQoKWyBV cHN0cmVhbSBjb21taXQgZmY2MjE5ODU1M2U0M2NkZmZhOWQ1MzlmNjE2NWQzZTgzZjhhNDJiYyBd CgpbSSBzdG9sZSB0aGlzIHBhdGNoIGZyb20gRXJpYyBCaWVkZXJtYW4uIEhlIHdyb3RlOl0KCj4g VGhlcmUgaXMgbm8gZGVmaW5lZCBtZWNoYW5pc20gdG8gcGFzcyBuZXR3b3JrIG5hbWVzcGFjZSBp bmZvcm1hdGlvbgo+IGludG8gL3NiaW4vYnJpZGdlLXN0cCB0aGVyZWZvcmUgZG9uJ3QgZXZlbiB0 cnkgdG8gaW52b2tlIGl0IGV4Y2VwdAo+IGZvciBicmlkZ2UgZGV2aWNlcyBpbiB0aGUgaW5pdGlh bCBuZXR3b3JrIG5hbWVzcGFjZS4KPgo+IEl0IGlzIHBvc3NpYmxlIGZvciB1bnByaXZpbGVnZWQg dXNlcnMgdG8gY2F1c2UgL3NiaW4vYnJpZGdlLXN0cCB0byBiZQo+IGludm9rZWQgZm9yIGFueSBu ZXR3b3JrIGRldmljZSBuYW1lIHdoaWNoIGlmIC9zYmluL2JyaWRnZS1zdHAgZG9lcyBub3QKPiBn dWFyZCBhZ2FpbnN0IHVucmVhc29uYWJsZSBhcmd1bWVudHMgb3IgYmVpbmcgaW52b2tlZCB0d2lj ZSBvbiB0aGUKPiBzYW1lIG5ldHdvcmsgZGV2aWNlIGNvdWxkIGNhdXNlIHByb2JsZW1zLgoKW0hh bm5lczogY2hhbmdlZCBwYXRjaCB1c2luZyBuZXRuc19lcV0KCkNjOiBFcmljIFcuIEJpZWRlcm1h biA8ZWJpZWRlcm1AeG1pc3Npb24uY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIFcuIEJpZWRlcm1h biA8ZWJpZWRlcm1AeG1pc3Npb24uY29tPgpTaWduZWQtb2ZmLWJ5OiBIYW5uZXMgRnJlZGVyaWMg U293YSA8aGFubmVzQHN0cmVzc2luZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMu IE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvYnJpZGdlL2JyX3N0cF9pZi5j IHwgNSArKysrLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfc3RwX2lmLmMgYi9uZXQvYnJpZGdlL2JyX3N0 cF9pZi5jCmluZGV4IDc4MzJkMDcuLmNlNjU4YWIgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJf c3RwX2lmLmMKKysrIGIvbmV0L2JyaWRnZS9icl9zdHBfaWYuYwpAQCAtMTI4LDcgKzEyOCwxMCBA QCBzdGF0aWMgdm9pZCBicl9zdHBfc3RhcnQoc3RydWN0IG5ldF9icmlkZ2UgKmJyKQogCWNoYXIg KmFyZ3ZbXSA9IHsgQlJfU1RQX1BST0csIGJyLT5kZXYtPm5hbWUsICJzdGFydCIsIE5VTEwgfTsK IAljaGFyICplbnZwW10gPSB7IE5VTEwgfTsKIAotCXIgPSBjYWxsX3VzZXJtb2RlaGVscGVyKEJS X1NUUF9QUk9HLCBhcmd2LCBlbnZwLCBVTUhfV0FJVF9QUk9DKTsKKwlpZiAobmV0X2VxKGRldl9u ZXQoYnItPmRldiksICZpbml0X25ldCkpCisJCXIgPSBjYWxsX3VzZXJtb2RlaGVscGVyKEJSX1NU UF9QUk9HLCBhcmd2LCBlbnZwLCBVTUhfV0FJVF9QUk9DKTsKKwllbHNlCisJCXIgPSAtRU5PRU5U OwogCiAJc3Bpbl9sb2NrX2JoKCZici0+bG9jayk7CiAKLS0gCjIuMS4wCgoKRnJvbSBmZTFiOGM3 ZTcxNGM3NjYzMjFiYjJhNGFhMmE4OGNjYmYzYmRmMTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+CkRhdGU6IFR1ZSwgNSBKYW4gMjAx NiAxNjoyMzowNyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDkvMzldIG5ldDogZmlsdGVyOiBtYWtl IEpJVHMgemVybyBBIGZvciBTS0ZfQURfQUxVX1hPUl9YCgpbIFVwc3RyZWFtIGNvbW1pdCA1NTc5 NWVmNTQ2OTI5MGY4OWYwNGUxMmU2NjJkZWQ2MDQ5MDllNDYyIF0KClRoZSBTS0ZfQURfQUxVX1hP Ul9YIGFuY2lsbGFyeSBpcyBub3QgbGlrZSB0aGUgb3RoZXIgYW5jaWxsYXJ5IGRhdGEKaW5zdHJ1 Y3Rpb25zIHNpbmNlIGl0IFhPUnMgQSB3aXRoIFggd2hpbGUgYWxsIHRoZSBvdGhlcnMgcmVwbGFj ZSBBIHdpdGgKc29tZSBsb2FkZWQgdmFsdWUuICBBbGwgdGhlIEJQRiBKSVRzIGZhaWwgdG8gY2xl YXIgQSBpZiB0aGlzIGlzIHVzZWQgYXMKdGhlIGZpcnN0IGluc3RydWN0aW9uIGluIGEgZmlsdGVy LiAgVGhpcyB3YXMgZm91bmQgdXNpbmcgYW1lcmljYW4gZnV6enkKbG9wLgoKQWRkIGEgaGVscGVy IHRvIGRldGVybWluZSBpZiBBIG5lZWRzIHRvIGJlIGNsZWFyZWQgZ2l2ZW4gdGhlIGZpcnN0Cmlu c3RydWN0aW9uIGluIGEgZmlsdGVyLCBhbmQgdXNlIHRoaXMgaW4gdGhlIEpJVHMuICBFeGNlcHQg Zm9yIEFSTSwgdGhlCnJlc3QgaGF2ZSBvbmx5IGJlZW4gY29tcGlsZS10ZXN0ZWQuCgpGaXhlczog MzQ4MDU5MzEzMWUwICgibmV0OiBmaWx0ZXI6IGdldCByaWQgb2YgQlBGX1NfKiBlbnVtIikKU2ln bmVkLW9mZi1ieTogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgpBY2tlZC1ieTogRGFuaWVs IEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3Zv aXRvdiA8YXN0QGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2 ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBhcmNoL2FybS9uZXQvYnBmX2ppdF8zMi5jICAgICAgIHwg MTYgKy0tLS0tLS0tLS0tLS0tLQogYXJjaC9taXBzL25ldC9icGZfaml0LmMgICAgICAgICB8IDE2 ICstLS0tLS0tLS0tLS0tLS0KIGFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgfCAxMyAr Ky0tLS0tLS0tLS0tCiBhcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXAuYyAgIHwgMTcgKystLS0t LS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvZmlsdGVyLmggICAgICAgICAgfCAxOSArKysrKysr KysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDU2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMgYi9hcmNoL2Fy bS9uZXQvYnBmX2ppdF8zMi5jCmluZGV4IGUwZTIzNTguLjVmZTk0OWIgMTAwNjQ0Ci0tLSBhL2Fy Y2gvYXJtL25ldC9icGZfaml0XzMyLmMKKysrIGIvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYwpA QCAtMTYyLDE5ICsxNjIsNiBAQCBzdGF0aWMgaW5saW5lIGludCBtZW1fd29yZHNfdXNlZChzdHJ1 Y3Qgaml0X2N0eCAqY3R4KQogCXJldHVybiBmbHMoY3R4LT5zZWVuICYgU0VFTl9NRU0pOwogfQog Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNfbG9hZF90b19hKHUxNiBpbnN0KQotewotCXN3aXRjaCAo aW5zdCkgewotCWNhc2UgQlBGX0xEIHwgQlBGX1cgfCBCUEZfTEVOOgotCWNhc2UgQlBGX0xEIHwg QlBGX1cgfCBCUEZfQUJTOgotCWNhc2UgQlBGX0xEIHwgQlBGX0ggfCBCUEZfQUJTOgotCWNhc2Ug QlBGX0xEIHwgQlBGX0IgfCBCUEZfQUJTOgotCQlyZXR1cm4gdHJ1ZTsKLQlkZWZhdWx0OgotCQly ZXR1cm4gZmFsc2U7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBqaXRfZmlsbF9ob2xlKHZvaWQgKmFy ZWEsIHVuc2lnbmVkIGludCBzaXplKQogewogCXUzMiAqcHRyOwpAQCAtMTg2LDcgKzE3Myw2IEBA IHN0YXRpYyB2b2lkIGppdF9maWxsX2hvbGUodm9pZCAqYXJlYSwgdW5zaWduZWQgaW50IHNpemUp CiBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KQogewogCXUx NiByZWdfc2V0ID0gc2F2ZWRfcmVncyhjdHgpOwotCXUxNiBmaXJzdF9pbnN0ID0gY3R4LT5za2Yt Pmluc25zWzBdLmNvZGU7CiAJdTE2IG9mZjsKIAogI2lmZGVmIENPTkZJR19GUkFNRV9QT0lOVEVS CkBAIC0yMTYsNyArMjAyLDcgQEAgc3RhdGljIHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGpp dF9jdHggKmN0eCkKIAkJZW1pdChBUk1fTU9WX0kocl9YLCAwKSwgY3R4KTsKIAogCS8qIGRvIG5v dCBsZWFrIGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZSAqLwotCWlmICgoZmlyc3RfaW5zdCAhPSAo QlBGX1JFVCB8IEJQRl9LKSkgJiYgIShpc19sb2FkX3RvX2EoZmlyc3RfaW5zdCkpKQorCWlmIChi cGZfbmVlZHNfY2xlYXJfYSgmY3R4LT5za2YtPmluc25zWzBdKSkKIAkJZW1pdChBUk1fTU9WX0ko cl9BLCAwKSwgY3R4KTsKIAogCS8qIHN0YWNrIHNwYWNlIGZvciB0aGUgQlBGX01FTSB3b3JkcyAq LwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL25ldC9icGZfaml0LmMgYi9hcmNoL21pcHMvbmV0L2Jw Zl9qaXQuYwppbmRleCBlMjNmZGYyLi5kNmQyN2Q1IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbmV0 L2JwZl9qaXQuYworKysgYi9hcmNoL21pcHMvbmV0L2JwZl9qaXQuYwpAQCAtNTU2LDE5ICs1NTYs NiBAQCBzdGF0aWMgaW5saW5lIHUxNiBhbGlnbl9zcCh1bnNpZ25lZCBpbnQgbnVtKQogCXJldHVy biBudW07CiB9CiAKLXN0YXRpYyBib29sIGlzX2xvYWRfdG9fYSh1MTYgaW5zdCkKLXsKLQlzd2l0 Y2ggKGluc3QpIHsKLQljYXNlIEJQRl9MRCB8IEJQRl9XIHwgQlBGX0xFTjoKLQljYXNlIEJQRl9M RCB8IEJQRl9XIHwgQlBGX0FCUzoKLQljYXNlIEJQRl9MRCB8IEJQRl9IIHwgQlBGX0FCUzoKLQlj YXNlIEJQRl9MRCB8IEJQRl9CIHwgQlBGX0FCUzoKLQkJcmV0dXJuIHRydWU7Ci0JZGVmYXVsdDoK LQkJcmV0dXJuIGZhbHNlOwotCX0KLX0KLQogc3RhdGljIHZvaWQgc2F2ZV9icGZfaml0X3JlZ3Mo c3RydWN0IGppdF9jdHggKmN0eCwgdW5zaWduZWQgb2Zmc2V0KQogewogCWludCBpID0gMCwgcmVh bF9vZmYgPSAwOwpAQCAtNjg2LDcgKzY3Myw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3N0 YWNrX2RlcHRoKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAKIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xv Z3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiB7Ci0JdTE2IGZpcnN0X2luc3QgPSBjdHgtPnNrZi0+ aW5zbnNbMF0uY29kZTsKIAlpbnQgc3Bfb2ZmOwogCiAJLyogQ2FsY3VsYXRlIHRoZSB0b3RhbCBv ZmZzZXQgZm9yIHRoZSBzdGFjayBwb2ludGVyICovCkBAIC03MDAsNyArNjg2LDcgQEAgc3RhdGlj IHZvaWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIAkJZW1pdF9qaXRfcmVn X21vdmUocl9YLCByX3plcm8sIGN0eCk7CiAKIAkvKiBEbyBub3QgbGVhayBrZXJuZWwgZGF0YSB0 byB1c2Vyc3BhY2UgKi8KLQlpZiAoKGZpcnN0X2luc3QgIT0gKEJQRl9SRVQgfCBCUEZfSykpICYm ICEoaXNfbG9hZF90b19hKGZpcnN0X2luc3QpKSkKKwlpZiAoYnBmX25lZWRzX2NsZWFyX2EoJmN0 eC0+c2tmLT5pbnNuc1swXSkpCiAJCWVtaXRfaml0X3JlZ19tb3ZlKHJfQSwgcl96ZXJvLCBjdHgp OwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJj aC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYwppbmRleCAxN2NlYTE4Li4yNjRjNDczIDEwMDY0 NAotLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCisrKyBiL2FyY2gvcG93ZXJw Yy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTc4LDE4ICs3OCw5IEBAIHN0YXRpYyB2b2lkIGJwZl9q aXRfYnVpbGRfcHJvbG9ndWUoc3RydWN0IGJwZl9wcm9nICpmcCwgdTMyICppbWFnZSwKIAkJUFBD X0xJKHJfWCwgMCk7CiAJfQogCi0Jc3dpdGNoIChmaWx0ZXJbMF0uY29kZSkgewotCWNhc2UgQlBG X1JFVCB8IEJQRl9LOgotCWNhc2UgQlBGX0xEIHwgQlBGX1cgfCBCUEZfTEVOOgotCWNhc2UgQlBG X0xEIHwgQlBGX1cgfCBCUEZfQUJTOgotCWNhc2UgQlBGX0xEIHwgQlBGX0ggfCBCUEZfQUJTOgot CWNhc2UgQlBGX0xEIHwgQlBGX0IgfCBCUEZfQUJTOgotCQkvKiBmaXJzdCBpbnN0cnVjdGlvbiBz ZXRzIEEgcmVnaXN0ZXIgKG9yIGlzIFJFVCAnY29uc3RhbnQnKSAqLwotCQlicmVhazsKLQlkZWZh dWx0OgotCQkvKiBtYWtlIHN1cmUgd2UgZG9udCBsZWFrIGtlcm5lbCBpbmZvcm1hdGlvbiB0byB1 c2VyICovCisJLyogbWFrZSBzdXJlIHdlIGRvbnQgbGVhayBrZXJuZWwgaW5mb3JtYXRpb24gdG8g dXNlciAqLworCWlmIChicGZfbmVlZHNfY2xlYXJfYSgmZmlsdGVyWzBdKSkKIAkJUFBDX0xJKHJf QSwgMCk7Ci0JfQogfQogCiBzdGF0aWMgdm9pZCBicGZfaml0X2J1aWxkX2VwaWxvZ3VlKHUzMiAq aW1hZ2UsIHN0cnVjdCBjb2RlZ2VuX2NvbnRleHQgKmN0eCkKZGlmZiAtLWdpdCBhL2FyY2gvc3Bh cmMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wLmMKaW5k ZXggNzkzMWVlZS4uODEwOWU5MiAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9j b21wLmMKKysrIGIvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTQyMCwyMiArNDIw LDkgQEAgdm9pZCBicGZfaml0X2NvbXBpbGUoc3RydWN0IGJwZl9wcm9nICpmcCkKIAkJfQogCQll bWl0X3JlZ19tb3ZlKE83LCByX3NhdmVkX083KTsKIAotCQlzd2l0Y2ggKGZpbHRlclswXS5jb2Rl KSB7Ci0JCWNhc2UgQlBGX1JFVCB8IEJQRl9LOgotCQljYXNlIEJQRl9MRCB8IEJQRl9XIHwgQlBG X0xFTjoKLQkJY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9BQlM6Ci0JCWNhc2UgQlBGX0xEIHwg QlBGX0ggfCBCUEZfQUJTOgotCQljYXNlIEJQRl9MRCB8IEJQRl9CIHwgQlBGX0FCUzoKLQkJCS8q IFRoZSBmaXJzdCBpbnN0cnVjdGlvbiBzZXRzIHRoZSBBIHJlZ2lzdGVyIChvciBpcwotCQkJICog YSAiUkVUICdjb25zdGFudCciKQotCQkJICovCi0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCS8q IE1ha2Ugc3VyZSB3ZSBkb250IGxlYWsga2VybmVsIGluZm9ybWF0aW9uIHRvIHRoZQotCQkJICog dXNlci4KLQkJCSAqLworCQkvKiBNYWtlIHN1cmUgd2UgZG9udCBsZWFrIGtlcm5lbCBpbmZvcm1h dGlvbiB0byB0aGUgdXNlci4gKi8KKwkJaWYgKGJwZl9uZWVkc19jbGVhcl9hKCZmaWx0ZXJbMF0p KQogCQkJZW1pdF9jbGVhcihyX0EpOyAvKiBBID0gMCAqLwotCQl9CiAKIAkJZm9yIChpID0gMDsg aSA8IGZsZW47IGkrKykgewogCQkJdW5zaWduZWQgaW50IEsgPSBmaWx0ZXJbaV0uazsKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmggYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCmlu ZGV4IGZhMTFiM2EuLjFjZTZlMTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZmlsdGVyLmgK KysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaApAQCAtNDI4LDYgKzQyOCwyNSBAQCBzdGF0aWMg aW5saW5lIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApCiAKICNkZWZpbmUg QlBGX0FOQwkJQklUKDE1KQogCitzdGF0aWMgaW5saW5lIGJvb2wgYnBmX25lZWRzX2NsZWFyX2Eo Y29uc3Qgc3RydWN0IHNvY2tfZmlsdGVyICpmaXJzdCkKK3sKKwlzd2l0Y2ggKGZpcnN0LT5jb2Rl KSB7CisJY2FzZSBCUEZfUkVUIHwgQlBGX0s6CisJY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9M RU46CisJCXJldHVybiBmYWxzZTsKKworCWNhc2UgQlBGX0xEIHwgQlBGX1cgfCBCUEZfQUJTOgor CWNhc2UgQlBGX0xEIHwgQlBGX0ggfCBCUEZfQUJTOgorCWNhc2UgQlBGX0xEIHwgQlBGX0IgfCBC UEZfQUJTOgorCQlpZiAoZmlyc3QtPmsgPT0gU0tGX0FEX09GRiArIFNLRl9BRF9BTFVfWE9SX1gp CisJCQlyZXR1cm4gdHJ1ZTsKKwkJcmV0dXJuIGZhbHNlOworCisJZGVmYXVsdDoKKwkJcmV0dXJu IHRydWU7CisJfQorfQorCiBzdGF0aWMgaW5saW5lIHUxNiBicGZfYW5jX2hlbHBlcihjb25zdCBz dHJ1Y3Qgc29ja19maWx0ZXIgKmZ0ZXN0KQogewogCUJVR19PTihmdGVzdC0+Y29kZSAmIEJQRl9B TkMpOwotLSAKMi4xLjAKCgpGcm9tIGEzMjMxNTc5MTNiOWY2NGVlOGY2OGM1YmI3YWVmOTM0ZDJl NmVmNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gRmFzdGFiZW5kIDxqb2hu LmZhc3RhYmVuZEBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAwOToxMTozNiAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggMTAvMzldIG5ldDogc2NoZWQ6IGZpeCBtaXNzaW5nIGZyZWUgcGVy IGNwdSBvbiBxc3RhdHMKClsgVXBzdHJlYW0gY29tbWl0IDczYzIwYThiNzI0NTI3MzEyNWNmZTky YzRiNDZlNmZkYjU2OGE4MDEgXQoKV2hlbiBhIHFkaXNjIGlzIHVzaW5nIHBlciBjcHUgc3RhdHMg KGN1cnJlbnRseSBqdXN0IHRoZSBpbmdyZXNzCnFkaXNjKSBvbmx5IHRoZSBic3RhdHMgYXJlIGJl aW5nIGZyZWVkLiBUaGlzIGFsc28gZnJlZSdzIHRoZSBxc3RhdHMuCgpGaXhlczogYjBhYjZmOTI3 NTJiOWY5ZDggKCJuZXQ6IHNjaGVkOiBlbmFibGUgcGVyIGNwdSBxc3RhdHMiKQpTaWduZWQtb2Zm LWJ5OiBKb2huIEZhc3RhYmVuZCA8am9obi5yLmZhc3RhYmVuZEBpbnRlbC5jb20+CkFja2VkLWJ5 OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkFja2VkLWJ5OiBEYW5pZWwgQm9y a21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgfCA0 ICsrKy0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJp Yy5jCmluZGV4IGI0NTMyNzAuLjNjNmY2Yjc3IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2dl bmVyaWMuYworKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYwpAQCAtNjY2LDggKzY2NiwxMCBA QCBzdGF0aWMgdm9pZCBxZGlzY19yY3VfZnJlZShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiB7CiAJ c3RydWN0IFFkaXNjICpxZGlzYyA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgUWRpc2MsIHJj dV9oZWFkKTsKIAotCWlmIChxZGlzY19pc19wZXJjcHVfc3RhdHMocWRpc2MpKQorCWlmIChxZGlz Y19pc19wZXJjcHVfc3RhdHMocWRpc2MpKSB7CiAJCWZyZWVfcGVyY3B1KHFkaXNjLT5jcHVfYnN0 YXRzKTsKKwkJZnJlZV9wZXJjcHUocWRpc2MtPmNwdV9xc3RhdHMpOworCX0KIAogCWtmcmVlKChj aGFyICopIHFkaXNjIC0gcWRpc2MtPnBhZGRlZCk7CiB9Ci0tIAoyLjEuMAoKCkZyb20gNjUxZTY0 NjVkZjQ3YzYzMzZlNjc0NGE4MmUwYTFiYWRlYmIzZjRjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogRnJhbmNlc2NvIFJ1Z2dlcmkgPGZydWdnZXJpQGFyaXN0YW5ldHdvcmtzLmNvbT4K RGF0ZTogV2VkLCA2IEphbiAyMDE2IDAwOjE4OjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAxMS8z OV0gbmV0OiBwb3NzaWJsZSB1c2UgYWZ0ZXIgZnJlZSBpbiBkc3RfcmVsZWFzZQoKWyBVcHN0cmVh bSBjb21taXQgMDdhNWQzODQ1MzU5OTA1MmFmZjA4NzdiMTZiYjljMTU4NWYwODYwOSBdCgpkc3Rf cmVsZWFzZSBzaG91bGQgbm90IGFjY2VzcyBkc3QtPmZsYWdzIGFmdGVyIGRlY3JlbWVudGluZwpf X3JlZmNudCB0byAwLiBUaGUgZHN0X2VudHJ5IG1heSBiZSBpbiBkc3RfYnVzeV9saXN0IGFuZApk c3RfZ2NfdGFzayBtYXkgZHN0X2Rlc3Ryb3kgaXQgYmVmb3JlIGRzdF9yZWxlYXNlIGdldHMgYSBj aGFuY2UKdG8gYWNjZXNzIGRzdC0+ZmxhZ3MuCgpGaXhlczogZDY5YmJmODhjOGQwICgibmV0OiBm aXggYSByYWNlIGluIGRzdF9yZWxlYXNlKCkiKQpGaXhlczogMjdiNzVjOTVmMTBkICgibmV0OiBh dm9pZCBSQ1UgZm9yIE5PQ0FDSEUgZHN0IikKU2lnbmVkLW9mZi1ieTogRnJhbmNlc2NvIFJ1Z2dl cmkgPGZydWdnZXJpQGFyaXN0YS5jb20+CkFja2VkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0 QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBuZXQvY29yZS9kc3QuYyB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZHN0LmMg Yi9uZXQvY29yZS9kc3QuYwppbmRleCBmOGRiNDAzLi41NDAwNjZjIDEwMDY0NAotLS0gYS9uZXQv Y29yZS9kc3QuYworKysgYi9uZXQvY29yZS9kc3QuYwpAQCAtMjgyLDEwICsyODIsMTEgQEAgdm9p ZCBkc3RfcmVsZWFzZShzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QpCiB7CiAJaWYgKGRzdCkgewogCQlp bnQgbmV3cmVmY250OworCQl1bnNpZ25lZCBzaG9ydCBub2NhY2hlID0gZHN0LT5mbGFncyAmIERT VF9OT0NBQ0hFOwogCiAJCW5ld3JlZmNudCA9IGF0b21pY19kZWNfcmV0dXJuKCZkc3QtPl9fcmVm Y250KTsKIAkJV0FSTl9PTihuZXdyZWZjbnQgPCAwKTsKLQkJaWYgKCFuZXdyZWZjbnQgJiYgdW5s aWtlbHkoZHN0LT5mbGFncyAmIERTVF9OT0NBQ0hFKSkKKwkJaWYgKCFuZXdyZWZjbnQgJiYgdW5s aWtlbHkobm9jYWNoZSkpCiAJCQljYWxsX3JjdSgmZHN0LT5yY3VfaGVhZCwgZHN0X2Rlc3Ryb3lf cmN1KTsKIAl9CiB9Ci0tIAoyLjEuMAoKCkZyb20gN2NjZmJkYzQxYTE3N2FmZGY2NGYxZDIyZDcw NTNhMGI0MDZkMDg4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTmljb2xhcyBEaWNo dGVsIDxuaWNvbGFzLmRpY2h0ZWxANndpbmQuY29tPgpEYXRlOiBUaHUsIDcgSmFuIDIwMTYgMTE6 MjY6NTMgKzAxMDAKU3ViamVjdDogW1BBVENIIDEyLzM5XSB2eGxhbjogZml4IHRlc3Qgd2hpY2gg ZGV0ZWN0IGR1cGxpY2F0ZSB2eGxhbiBpZmFjZQoKWyBVcHN0cmVhbSBjb21taXQgMDdiOWIzN2My MjdjYjhkODhkNDc4YjRhOWM1NjM0ZmVlNTE0ZWRlMSBdCgpXaGVuIGEgdnhsYW4gaW50ZXJmYWNl IGlzIGNyZWF0ZWQsIHRoZSBkcml2ZXIgY2hlY2tzIHRoYXQgdGhlcmUgaXMgbm90CmFub3RoZXIg dnhsYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgcHJvcGVydGllcy4gVG8gZG8gdGhpcywgaXQg Y2hlY2tzCnRoZSBleGlzdGluZyB2eGxhbiB1ZHAgc29ja2V0LiBTaW5jZSBjb21taXQgMWM1MWE5 MTU5ZGRlLCB0aGUgY3JlYXRpb24gb2YKdGhlIHZ4bGFuIHNvY2tldCBpcyBkb25lIG9ubHkgd2hl biB0aGUgaW50ZXJmYWNlIGlzIHNldCB1cCwgdGh1cyBpdCBicmVha3MKdGhhdCB0ZXN0LgoKRXhh bXBsZToKJCBpcCBsIGEgdnhsYW4xMCB0eXBlIHZ4bGFuIGlkIDEwIGdyb3VwIDIzOS4wLjAuMTAg ZGV2IGV0aDAgZHN0cG9ydCAwCiQgaXAgbCBhIHZ4bGFuMTEgdHlwZSB2eGxhbiBpZCAxMCBncm91 cCAyMzkuMC4wLjEwIGRldiBldGgwIGRzdHBvcnQgMAokIGlwIC1iciBsIHwgZ3JlcCB2eGxhbgp2 eGxhbjEwICAgICAgICAgIERPV04gICAgICAgICAgIGYyOjU1OjFjOjZhOmZiOjAwIDxCUk9BRENB U1QsTVVMVElDQVNUPgp2eGxhbjExICAgICAgICAgIERPV04gICAgICAgICAgIDdhOmNiOmI5OjM4 OjU5OjBkIDxCUk9BRENBU1QsTVVMVElDQVNUPgoKSW5zdGVhZCBvZiBjaGVja2luZyBzb2NrZXRz LCBsZXQncyBsb29wIG92ZXIgdGhlIHZ4bGFuIGlmYWNlIGxpc3QuCgpGaXhlczogMWM1MWE5MTU5 ZGRlICgidnhsYW46IGZpeCByYWNlIGNhdXNlZCBieSBkcm9wcGluZyBydG5sX3VubG9jayIpClJl cG9ydGVkLWJ5OiBUaG9tYXMgRmFpdnJlIDx0aG9tYXMuZmFpdnJlQDZ3aW5kLmNvbT4KU2lnbmVk LW9mZi1ieTogTmljb2xhcyBEaWNodGVsIDxuaWNvbGFzLmRpY2h0ZWxANndpbmQuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJp dmVycy9uZXQvdnhsYW4uYyB8IDEyICsrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5z ZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxh bi5jIGIvZHJpdmVycy9uZXQvdnhsYW4uYwppbmRleCAwMDg1YjhkLi45NDBmNzhlIDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC92eGxhbi5jCisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuLmMKQEAgLTI1 ODEsNyArMjU4MSw3IEBAIHN0YXRpYyBpbnQgdnhsYW5fbmV3bGluayhzdHJ1Y3QgbmV0ICpzcmNf bmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJIHN0cnVjdCBubGF0dHIgKnRiW10sIHN0 cnVjdCBubGF0dHIgKmRhdGFbXSkKIHsKIAlzdHJ1Y3QgdnhsYW5fbmV0ICp2biA9IG5ldF9nZW5l cmljKHNyY19uZXQsIHZ4bGFuX25ldF9pZCk7Ci0Jc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4gPSBu ZXRkZXZfcHJpdihkZXYpOworCXN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuID0gbmV0ZGV2X3ByaXYo ZGV2KSwgKnRtcDsKIAlzdHJ1Y3QgdnhsYW5fcmRzdCAqZHN0ID0gJnZ4bGFuLT5kZWZhdWx0X2Rz dDsKIAlfX3UzMiB2bmk7CiAJaW50IGVycjsKQEAgLTI3MTQsOSArMjcxNCwxMyBAQCBzdGF0aWMg aW50IHZ4bGFuX25ld2xpbmsoc3RydWN0IG5ldCAqc3JjX25ldCwgc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKIAlpZiAoZGF0YVtJRkxBX1ZYTEFOX1JFTUNTVU1fTk9QQVJUSUFMXSkKIAkJdnhsYW4t PmZsYWdzIHw9IFZYTEFOX0ZfUkVNQ1NVTV9OT1BBUlRJQUw7CiAKLQlpZiAodnhsYW5fZmluZF92 bmkoc3JjX25ldCwgdm5pLCB1c2VfaXB2NiA/IEFGX0lORVQ2IDogQUZfSU5FVCwKLQkJCSAgIHZ4 bGFuLT5kc3RfcG9ydCwgdnhsYW4tPmZsYWdzKSkgewotCQlwcl9pbmZvKCJkdXBsaWNhdGUgVk5J ICV1XG4iLCB2bmkpOworCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wLCAmdm4tPnZ4bGFuX2xpc3Qs IG5leHQpIHsKKwkJaWYgKHRtcC0+ZGVmYXVsdF9kc3QucmVtb3RlX3ZuaSA9PSB2bmkgJiYKKwkJ ICAgICh0bXAtPmRlZmF1bHRfZHN0LnJlbW90ZV9pcC5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYg fHwKKwkJICAgICB0bXAtPnNhZGRyLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgPT0gdXNlX2lw djYgJiYKKwkJICAgIHRtcC0+ZHN0X3BvcnQgPT0gdnhsYW4tPmRzdF9wb3J0ICYmCisJCSAgICAo dG1wLT5mbGFncyAmIFZYTEFOX0ZfUkNWX0ZMQUdTKSA9PQorCQkgICAgKHZ4bGFuLT5mbGFncyAm IFZYTEFOX0ZfUkNWX0ZMQUdTKSkKIAkJcmV0dXJuIC1FRVhJU1Q7CiAJfQogCi0tIAoyLjEuMAoK CkZyb20gOTVjMzRmZWNlODExOTM3MjUzM2FhZjg5MGFjOWZiNzY5ZjU3NmFmMiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogU2FzaGEgTGV2aW4gPHNhc2hhLmxldmluQG9yYWNsZS5jb20+ CkRhdGU6IFRodSwgNyBKYW4gMjAxNiAxNDo1Mjo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTMv MzldIG5ldDogc2N0cDogcHJldmVudCB3cml0ZXMgdG8gY29va2llX2htYWNfYWxnIGZyb20KIGFj Y2Vzc2luZyBpbnZhbGlkIG1lbW9yeQoKWyBVcHN0cmVhbSBjb21taXQgMzIwZjFhNGExNzVlN2Nk NWQzZjAwNmY5MmI0ZDRkM2UyY2JiN2JiNSBdCgpwcm9jX2Rvc3RyaW5nKCkgbmVlZHMgYW4gaW5p dGlhbGl6ZWQgZGVzdGluYXRpb24gc3RyaW5nLCB3aGlsZSB0aGUgb25lCnByb3ZpZGVkIGluIHBy b2Nfc2N0cF9kb19obWFjX2FsZygpIGNvbnRhaW5zIHN0YWNrIGdhcmJhZ2UuCgpUaHVzLCB3cml0 aW5nIHRvIGNvb2tpZV9obWFjX2FsZyB3b3VsZCBzdHJsZW4oKSB0aGF0IGdhcmJhZ2UgYW5kIGVu ZCB1cAphY2Nlc3NpbmcgaW52YWxpZCBtZW1vcnkuCgpGaXhlczogM2M2ODE5OGU3ICgic2N0cDog TWFrZSBobWFjIGFsZ29yaXRobSBzZWxlY3Rpb24gZm9yIGNvb2tpZSBnZW5lcmF0aW9uIGR5bmFt aWMiKQpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGEubGV2aW5Ab3JhY2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0K IG5ldC9zY3RwL3N5c2N0bC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc3lzY3RsLmMgYi9uZXQvc2N0 cC9zeXNjdGwuYwppbmRleCAyNmQ1MGM1Li4zZTBmYzUxIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9z eXNjdGwuYworKysgYi9uZXQvc2N0cC9zeXNjdGwuYwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRp YyBpbnQgcHJvY19zY3RwX2RvX2htYWNfYWxnKHN0cnVjdCBjdGxfdGFibGUgKmN0bCwgaW50IHdy aXRlLAogCXN0cnVjdCBjdGxfdGFibGUgdGJsOwogCWJvb2wgY2hhbmdlZCA9IGZhbHNlOwogCWNo YXIgKm5vbmUgPSAibm9uZSI7Ci0JY2hhciB0bXBbOF07CisJY2hhciB0bXBbOF0gPSB7MH07CiAJ aW50IHJldDsKIAogCW1lbXNldCgmdGJsLCAwLCBzaXplb2Yoc3RydWN0IGN0bF90YWJsZSkpOwot LSAKMi4xLjAKCgpGcm9tIGYyOGZiOWRjZDYyYmI3MmNhZmRmMjcyMzZkZjk5MTA4ZTYwODEyMDIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29v Z2xlLmNvbT4KRGF0ZTogRnJpLCA4IEphbiAyMDE2IDA5OjM1OjUxIC0wODAwClN1YmplY3Q6IFtQ QVRDSCAxNC8zOV0gaXB2NjogdGNwOiBhZGQgcmN1IGxvY2tpbmcgaW4gdGNwX3Y2X3NlbmRfc3lu YWNrKCkKClsgVXBzdHJlYW0gY29tbWl0IDNlNDAwNmYwYjg2YTVhZTVlYjBlODIxNWY5YTllMWRi MjQ1MDY5NzcgXQoKV2hlbiBmaXJzdCBTWU5BQ0sgaXMgc2VudCwgd2UgYWxyZWFkeSBob2xkIHJj dV9yZWFkX2xvY2soKSwgYnV0IHRoaXMKaXMgbm90IHRydWUgaWYgYSBTWU5BQ0sgaXMgcmV0cmFu c21pdHRlZCwgYXMgYSB0aW1lciAoc29mdCkgaW50ZXJydXB0CmRvZXMgbm90IGhvbGQgcmN1X3Jl YWRfbG9jaygpCgpGaXhlczogNDVmNmZhZDg0Y2MzMCAoImlwdjY6IGFkZCBjb21wbGV0ZSByY3Ug cHJvdGVjdGlvbiBhcm91bmQgbnAtPm9wdCIpClJlcG9ydGVkLWJ5OiBEYXZlIEpvbmVzIDxkYXZl akBjb2RlbW9ua2V5Lm9yZy51az4KU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpl dEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVt bG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjYvdGNwX2lwdjYuYyB8IDIgKysKIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni90Y3BfaXB2Ni5jIGIvbmV0 L2lwdjYvdGNwX2lwdjYuYwppbmRleCBjMTkzOGFkLi5jMTE0N2FjIDEwMDY0NAotLS0gYS9uZXQv aXB2Ni90Y3BfaXB2Ni5jCisrKyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKQEAgLTQ2NSw4ICs0NjUs MTAgQEAgc3RhdGljIGludCB0Y3BfdjZfc2VuZF9zeW5hY2soc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3QgZHN0X2VudHJ5ICpkc3QsCiAJCQlmbDYtPmZsb3dsYWJlbCA9IGlwNl9mbG93bGFiZWwoaXB2 Nl9oZHIoaXJlcS0+cGt0b3B0cykpOwogCiAJCXNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIHF1 ZXVlX21hcHBpbmcpOworCQlyY3VfcmVhZF9sb2NrKCk7CiAJCWVyciA9IGlwNl94bWl0KHNrLCBz a2IsIGZsNiwgcmN1X2RlcmVmZXJlbmNlKG5wLT5vcHQpLAogCQkJICAgICAgIG5wLT50Y2xhc3Mp OworCQlyY3VfcmVhZF91bmxvY2soKTsKIAkJZXJyID0gbmV0X3htaXRfZXZhbChlcnIpOwogCX0K IAotLSAKMi4xLjAKCgpGcm9tIDc1MDAxZDZkZjlhZWQxODM4Y2UwZjlmM2MzZTgzNzQ0OWEyNDJk YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE5lYWwgQ2FyZHdlbGwgPG5jYXJkd2Vs bEBnb29nbGUuY29tPgpEYXRlOiBNb24sIDExIEphbiAyMDE2IDEzOjQyOjQzIC0wNTAwClN1Ympl Y3Q6IFtQQVRDSCAxNS8zOV0gdGNwX3llYWg6IGRvbid0IHNldCBzc3RocmVzaCBiZWxvdyAyCgpb IFVwc3RyZWFtIGNvbW1pdCA4M2QxNWU3MGM0ZDg5MDlkNzIyYzBkNjQ3NDdkOGZiNDJlMzhhNDhm IF0KCkZvciB0Y3BfeWVhaCwgdXNlIGFuIHNzdGhyZXNoIGZsb29yIG9mIDIsIHRoZSBzYW1lIGZs b29yIHVzZWQgYnkgUmVubwphbmQgQ1VCSUMsIHBlciBSRkMgNTY4MSAoZXF1YXRpb24gNCkuCgp0 Y3BfeWVhaF9zc3RocmVzaCgpIHdhcyBzb21ldGltZXMgcmV0dXJuaW5nIGEgMCBvciBuZWdhdGl2 ZSBzc3RocmVzaAp2YWx1ZSBpZiB0aGUgaW50ZW5kZWQgcmVkdWN0aW9uIGlzIGFzIGJpZyBvciBi aWdnZXIgdGhhbiB0aGUgY3VycmVudApjd25kLiBDb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlcyBz aG91bGQgbmV2ZXIgcmV0dXJuIGEgemVybyBvcgpuZWdhdGl2ZSBzc3RocmVzaC4gQSB6ZXJvIHNz dGhyZXNoIGdlbmVyYWxseSByZXN1bHRzIGluIGEgemVybyBjd25kLApjYXVzaW5nIHRoZSBjb25u ZWN0aW9uIHRvIHN0YWxsLiBBIG5lZ2F0aXZlIHNzdGhyZXNoIHZhbHVlIHdpbGwgYmUKaW50ZXJw cmV0ZWQgYXMgYSB1MzIgYW5kIHdpbGwgc2V0IGEgdGFyZ2V0IGN3bmQgZm9yIFBSUiBuZWFyIDQK YmlsbGlvbi4KCk9sZWtzYW5kciBOYXRhbGVua28gcmVwb3J0ZWQgdGhhdCBhIHN5c3RlbSB1c2lu ZyB0Y3BfeWVhaCB3aXRoIEVDTgpjb3VsZCBzZWUgYSB3YXJuaW5nIGFib3V0IGEgcHJpb3JfY3du ZCBvZiAwIGluCnRjcF9jd25kX3JlZHVjdGlvbigpLiBUZXN0aW5nIHZlcmlmaWVkIHRoYXQgdGhp cyB3YXMgZHVlIHRvCnRjcF95ZWFoX3NzdGhyZXNoKCkgbWlzYmVoYXZpbmcgaW4gdGhpcyB3YXku CgpSZXBvcnRlZC1ieTogT2xla3NhbmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFsZW5rby5u YW1lPgpTaWduZWQtb2ZmLWJ5OiBOZWFsIENhcmR3ZWxsIDxuY2FyZHdlbGxAZ29vZ2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogWXVjaHVuZyBDaGVuZyA8eWNoZW5nQGdvb2dsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L3RjcF95 ZWFoLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfeWVhaC5jIGIvbmV0L2lwdjQvdGNwX3llYWgu YwppbmRleCAxN2QzNTY2Li4zZTZhNDcyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfeWVhaC5j CisrKyBiL25ldC9pcHY0L3RjcF95ZWFoLmMKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgdTMy IHRjcF95ZWFoX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzaykKIAl5ZWFoLT5mYXN0X2NvdW50ID0g MDsKIAl5ZWFoLT5yZW5vX2NvdW50ID0gbWF4KHllYWgtPnJlbm9fY291bnQ+PjEsIDJVKTsKIAot CXJldHVybiB0cC0+c25kX2N3bmQgLSByZWR1Y3Rpb247CisJcmV0dXJuIG1heF90KGludCwgdHAt PnNuZF9jd25kIC0gcmVkdWN0aW9uLCAyKTsKIH0KIAogc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2Vz dGlvbl9vcHMgdGNwX3llYWggX19yZWFkX21vc3RseSA9IHsKLS0gCjIuMS4wCgoKRnJvbSA5MDVk NWNiNGY1MDcyMzYzMjEyYzQ2NDZkZjAyNDkyOWZhNjkxODJjIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiA9P1VURi04P3E/TWljaGFsPTIwS3ViZT1DND04RGVrPz0gPG1rdWJlY2VrQHN1 c2UuY3o+CkRhdGU6IE1vbiwgMTEgSmFuIDIwMTYgMDc6NTA6MzAgKzAxMDAKU3ViamVjdDogW1BB VENIIDE2LzM5XSB1ZHA6IGRpc2FsbG93IFVGTyBmb3Igc29ja2V0cyB3aXRoIFNPX05PX0NIRUNL IG9wdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgNDBiYTMzMDIyN2FkMDBiOGMwY2RmMmY0MjU3MzZm Zjk1NDljYzQyMyBdCgpDb21taXQgYWNmOGRkMGE5ZDBiICgidWRwOiBvbmx5IGFsbG93IFVGTyBm b3IgcGFja2V0cyBmcm9tIFNPQ0tfREdSQU0Kc29ja2V0cyIpIGRpc2FsbG93cyBVRk8gZm9yIHBh Y2tldHMgc2VudCBmcm9tIHJhdyBzb2NrZXRzLiBXZSBuZWVkIHRvIGRvCnRoZSBzYW1lIGFsc28g Zm9yIFNPQ0tfREdSQU0gc29ja2V0cyB3aXRoIFNPX05PX0NIRUNLIG9wdGlvbnMsIGV2ZW4gaWYK Zm9yIGEgYml0IGRpZmZlcmVudCByZWFzb246IHdoaWxlIHN1Y2ggc29ja2V0IHdvdWxkIG92ZXJy aWRlIHRoZQpDSEVDS1NVTV9QQVJUSUFMIHNldCBieSBpcF91Zm9fYXBwZW5kX2RhdGEoKSwgZ3Nv X3NpemUgaXMgc3RpbGwgc2V0IGFuZApiYWQgb2ZmbG9hZGluZyBmbGFncyB3YXJuaW5nIGlzIHRy aWdnZXJlZCBpbiBfX3NrYl9nc29fc2VnbWVudCgpLgoKSW4gdGhlIElQdjYgY2FzZSwgU09fTk9f Q0hFQ0sgb3B0aW9uIGlzIGlnbm9yZWQgYnV0IHdlIG5lZWQgdG8gZGlzYWxsb3cKVUZPIGZvciBw YWNrZXRzIHNlbnQgYnkgc29ja2V0cyB3aXRoIFVEUF9OT19DSEVDSzZfVFggb3B0aW9uLgoKU2ln bmVkLW9mZi1ieTogTWljaGFsIEt1YmVjZWsgPG1rdWJlY2VrQHN1c2UuY3o+ClRlc3RlZC1ieTog U2hhbm5vbiBOZWxzb24gPHNoYW5ub24ubmVsc29uQGludGVsLmNvbT4KQWNrZWQtYnk6IEhhbm5l cyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY0L2lw X291dHB1dC5jICB8IDIgKy0KIG5ldC9pcHY2L2lwNl9vdXRwdXQuYyB8IDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25l dC9pcHY0L2lwX291dHB1dC5jIGIvbmV0L2lwdjQvaXBfb3V0cHV0LmMKaW5kZXggYzY1YjkzYS4u ZmUxNmY0MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjQv aXBfb3V0cHV0LmMKQEAgLTg5Myw3ICs4OTMsNyBAQCBzdGF0aWMgaW50IF9faXBfYXBwZW5kX2Rh dGEoc3RydWN0IHNvY2sgKnNrLAogCWlmICgoKGxlbmd0aCA+IG10dSkgfHwgKHNrYiAmJiBza2Jf aXNfZ3NvKHNrYikpKSAmJgogCSAgICAoc2stPnNrX3Byb3RvY29sID09IElQUFJPVE9fVURQKSAm JgogCSAgICAocnQtPmRzdC5kZXYtPmZlYXR1cmVzICYgTkVUSUZfRl9VRk8pICYmICFydC0+ZHN0 LmhlYWRlcl9sZW4gJiYKLQkgICAgKHNrLT5za190eXBlID09IFNPQ0tfREdSQU0pKSB7CisJICAg IChzay0+c2tfdHlwZSA9PSBTT0NLX0RHUkFNKSAmJiAhc2stPnNrX25vX2NoZWNrX3R4KSB7CiAJ CWVyciA9IGlwX3Vmb19hcHBlbmRfZGF0YShzaywgcXVldWUsIGdldGZyYWcsIGZyb20sIGxlbmd0 aCwKIAkJCQkJIGhoX2xlbiwgZnJhZ2hlYWRlcmxlbiwgdHJhbnNoZHJsZW4sCiAJCQkJCSBtYXhm cmFnbGVuLCBmbGFncyk7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9uZXQv aXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggYmMwOWNiOS4uZjUwMjI4YiAxMDA2NDQKLS0tIGEvbmV0 L2lwdjYvaXA2X291dHB1dC5jCisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtMTMyOSw3 ICsxMzI5LDcgQEAgZW1zZ3NpemU6CiAJICAgICAoc2tiICYmIHNrYl9pc19nc28oc2tiKSkpICYm CiAJICAgIChzay0+c2tfcHJvdG9jb2wgPT0gSVBQUk9UT19VRFApICYmCiAJICAgIChydC0+ZHN0 LmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1VGTykgJiYKLQkgICAgKHNrLT5za190eXBlID09IFNP Q0tfREdSQU0pKSB7CisJICAgIChzay0+c2tfdHlwZSA9PSBTT0NLX0RHUkFNKSAmJiAhdWRwX2dl dF9ub19jaGVjazZfdHgoc2spKSB7CiAJCWVyciA9IGlwNl91Zm9fYXBwZW5kX2RhdGEoc2ssIHF1 ZXVlLCBnZXRmcmFnLCBmcm9tLCBsZW5ndGgsCiAJCQkJCSAgaGhfbGVuLCBmcmFnaGVhZGVybGVu LAogCQkJCQkgIHRyYW5zaGRybGVuLCBtdHUsIGZsYWdzLCBydCk7Ci0tIAoyLjEuMAoKCkZyb20g NWQ1ODVjY2FjNjhlNTE0MGJhOGQwN2Q0OTU2NmE5YTc5NjNhNjEzNCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogS29uc3RhbnRpbiBLaGxlYm5pa292IDxrb2N0OWlAZ21haWwuY29tPgpE YXRlOiBGcmksIDggSmFuIDIwMTYgMTU6MjE6NDYgKzAzMDAKU3ViamVjdDogW1BBVENIIDE3LzM5 XSBuZXQ6IHByZXNlcnZlIElQIGNvbnRyb2wgYmxvY2sgZHVyaW5nIEdTTyBzZWdtZW50YXRpb24K ClsgVXBzdHJlYW0gY29tbWl0IDkyMDdmOWQ0NWIwYWQwNzFiYWExMjhlODQ2ZDdlN2VkODUwMTZk ZjMgXQoKU2tiX2dzb19zZWdtZW50KCkgdXNlcyBza2IgY29udHJvbCBibG9jayBkdXJpbmcgc2Vn bWVudGF0aW9uLgpUaGlzIHBhdGNoIGFkZHMgMzItYnl0ZXMgcm9vbSBmb3IgcHJldmlvdXMgY29u dHJvbCBibG9jayB3aGljaAp3aWxsIGJlIGNvcGllZCBpbnRvIGFsbCByZXN1bHRpbmcgc2VnbWVu dHMuCgpUaGlzIHBhdGNoIGZpeGVzIGtlcm5lbCBjcmFzaCBkdXJpbmcgZnJhZ21lbnRpbmcgZm9y d2FyZGVkIHBhY2tldHMuCkZyYWdtZW50YXRpb24gcmVxdWlyZXMgdmFsaWQgSVAgQ0IgaW4gc2ti IGZvciBjbGVhcmluZyBpcCBvcHRpb25zLgpBbHNvIHBhdGNoIHJlbW92ZXMgY3VzdG9tIHNhdmUv cmVzdG9yZSBpbiBvdnMgY29kZSwgbm93IGl0J3MgcmVkdW5kYW50LgoKU2lnbmVkLW9mZi1ieTog S29uc3RhbnRpbiBLaGxlYm5pa292IDxrb2N0OWlAZ21haWwuY29tPgpMaW5rOiBodHRwOi8vbGtt bC5rZXJuZWwub3JnL3IvQ0FMWUdOaVAtME1aLUZFeFYySHV0VHZFOVUtUVF0a0tTb0UtLUtOPUpR RTVTVFlzakFBQG1haWwuZ21haWwuY29tClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL2xpbnV4L3NrYnVmZi5oICAgICB8IDMg KystCiBuZXQvY29yZS9kZXYuYyAgICAgICAgICAgICB8IDUgKysrKysKIG5ldC9pcHY0L2lwX291 dHB1dC5jICAgICAgIHwgMSArCiBuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYyB8IDUgKy0tLS0K IG5ldC94ZnJtL3hmcm1fb3V0cHV0LmMgICAgIHwgMiArKwogNSBmaWxlcyBjaGFuZ2VkLCAxMSBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv c2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IDQzMDdlMjAuLjFmMTdhYmUg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKKysrIGIvaW5jbHVkZS9saW51eC9z a2J1ZmYuaApAQCAtMzMyMCw3ICszMzIwLDggQEAgc3RydWN0IHNrYl9nc29fY2IgewogCWludAll bmNhcF9sZXZlbDsKIAlfX3UxNgljc3VtX3N0YXJ0OwogfTsKLSNkZWZpbmUgU0tCX0dTT19DQihz a2IpICgoc3RydWN0IHNrYl9nc29fY2IgKikoc2tiKS0+Y2IpCisjZGVmaW5lIFNLQl9TR09fQ0Jf T0ZGU0VUCTMyCisjZGVmaW5lIFNLQl9HU09fQ0Ioc2tiKSAoKHN0cnVjdCBza2JfZ3NvX2NiICop KChza2IpLT5jYiArIFNLQl9TR09fQ0JfT0ZGU0VUKSkKIAogc3RhdGljIGlubGluZSBpbnQgc2ti X3RubF9oZWFkZXJfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICppbm5lcl9za2IpCiB7CmRpZmYg LS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IGE0MmIyMzIuLjE4 NWEzMzkgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCisrKyBiL25ldC9jb3JlL2Rldi5jCkBA IC0yNDc5LDYgKzI0NzksOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX25lZWRzX2NoZWNrKHN0 cnVjdCBza19idWZmICpza2IsIGJvb2wgdHhfcGF0aCkKICAqCiAgKglJdCBtYXkgcmV0dXJuIE5V TEwgaWYgdGhlIHNrYiByZXF1aXJlcyBubyBzZWdtZW50YXRpb24uICBUaGlzIGlzCiAgKglvbmx5 IHBvc3NpYmxlIHdoZW4gR1NPIGlzIHVzZWQgZm9yIHZlcmlmeWluZyBoZWFkZXIgaW50ZWdyaXR5 LgorICoKKyAqCVNlZ21lbnRhdGlvbiBwcmVzZXJ2ZXMgU0tCX1NHT19DQl9PRkZTRVQgYnl0ZXMg b2YgcHJldmlvdXMgc2tiIGNiLgogICovCiBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZ3NvX3NlZ21l bnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVz LCBib29sIHR4X3BhdGgpCkBAIC0yNDkzLDYgKzI0OTUsOSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqX19z a2JfZ3NvX3NlZ21lbnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCXJldHVybiBFUlJfUFRSKGVy cik7CiAJfQogCisJQlVJTERfQlVHX09OKFNLQl9TR09fQ0JfT0ZGU0VUICsKKwkJICAgICBzaXpl b2YoKlNLQl9HU09fQ0Ioc2tiKSkgPiBzaXplb2Yoc2tiLT5jYikpOworCiAJU0tCX0dTT19DQihz a2IpLT5tYWNfb2Zmc2V0ID0gc2tiX2hlYWRyb29tKHNrYik7CiAJU0tCX0dTT19DQihza2IpLT5l bmNhcF9sZXZlbCA9IDA7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX291dHB1dC5jIGIvbmV0 L2lwdjQvaXBfb3V0cHV0LmMKaW5kZXggZmUxNmY0MS4uNTE1NzNmOCAxMDA2NDQKLS0tIGEvbmV0 L2lwdjQvaXBfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjQvaXBfb3V0cHV0LmMKQEAgLTIzNSw2ICsy MzUsNyBAQCBzdGF0aWMgaW50IGlwX2ZpbmlzaF9vdXRwdXRfZ3NvKHN0cnVjdCBzb2NrICpzaywg c3RydWN0IHNrX2J1ZmYgKnNrYikKIAkgKiBmcm9tIGhvc3QgbmV0d29yayBzdGFjay4KIAkgKi8K IAlmZWF0dXJlcyA9IG5ldGlmX3NrYl9mZWF0dXJlcyhza2IpOworCUJVSUxEX0JVR19PTihzaXpl b2YoKklQQ0Ioc2tiKSkgPiBTS0JfU0dPX0NCX09GRlNFVCk7CiAJc2VncyA9IHNrYl9nc29fc2Vn bWVudChza2IsIGZlYXR1cmVzICYgfk5FVElGX0ZfR1NPX01BU0spOwogCWlmIChJU19FUlJfT1Jf TlVMTChzZWdzKSkgewogCQlrZnJlZV9za2Ioc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3 aXRjaC9kYXRhcGF0aC5jIGIvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMKaW5kZXggMjdlMTQ5 Ni4uYjNmZTAyYSAxMDA2NDQKLS0tIGEvbmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMKKysrIGIv bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMKQEAgLTMzNywxMiArMzM3LDEwIEBAIHN0YXRpYyBp bnQgcXVldWVfZ3NvX3BhY2tldHMoc3RydWN0IGRhdGFwYXRoICpkcCwgc3RydWN0IHNrX2J1ZmYg KnNrYiwKIAl1bnNpZ25lZCBzaG9ydCBnc29fdHlwZSA9IHNrYl9zaGluZm8oc2tiKS0+Z3NvX3R5 cGU7CiAJc3RydWN0IHN3X2Zsb3dfa2V5IGxhdGVyX2tleTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2Vn cywgKm5za2I7Ci0Jc3RydWN0IG92c19za2JfY2Igb3ZzX2NiOwogCWludCBlcnI7CiAKLQlvdnNf Y2IgPSAqT1ZTX0NCKHNrYik7CisJQlVJTERfQlVHX09OKHNpemVvZigqT1ZTX0NCKHNrYikpID4g U0tCX1NHT19DQl9PRkZTRVQpOwogCXNlZ3MgPSBfX3NrYl9nc29fc2VnbWVudChza2IsIE5FVElG X0ZfU0csIGZhbHNlKTsKLQkqT1ZTX0NCKHNrYikgPSBvdnNfY2I7CiAJaWYgKElTX0VSUihzZWdz KSkKIAkJcmV0dXJuIFBUUl9FUlIoc2Vncyk7CiAJaWYgKHNlZ3MgPT0gTlVMTCkKQEAgLTM2MCw3 ICszNTgsNiBAQCBzdGF0aWMgaW50IHF1ZXVlX2dzb19wYWNrZXRzKHN0cnVjdCBkYXRhcGF0aCAq ZHAsIHN0cnVjdCBza19idWZmICpza2IsCiAJLyogUXVldWUgYWxsIG9mIHRoZSBzZWdtZW50cy4g Ki8KIAlza2IgPSBzZWdzOwogCWRvIHsKLQkJKk9WU19DQihza2IpID0gb3ZzX2NiOwogCQlpZiAo Z3NvX3R5cGUgJiBTS0JfR1NPX1VEUCAmJiBza2IgIT0gc2VncykKIAkJCWtleSA9ICZsYXRlcl9r ZXk7CiAKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMgYi9uZXQveGZybS94ZnJt X291dHB1dC5jCmluZGV4IGZiY2VkYmUuLjUwOTdkY2UgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hm cm1fb3V0cHV0LmMKKysrIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuYwpAQCAtMTUzLDYgKzE1Myw4 IEBAIHN0YXRpYyBpbnQgeGZybV9vdXRwdXRfZ3NvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNr X2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2VnczsKIAorCUJVSUxEX0JVR19PTihz aXplb2YoKklQQ0Ioc2tiKSkgPiBTS0JfU0dPX0NCX09GRlNFVCk7CisJQlVJTERfQlVHX09OKHNp emVvZigqSVA2Q0Ioc2tiKSkgPiBTS0JfU0dPX0NCX09GRlNFVCk7CiAJc2VncyA9IHNrYl9nc29f c2VnbWVudChza2IsIDApOwogCWtmcmVlX3NrYihza2IpOwogCWlmIChJU19FUlIoc2VncykpCi0t IAoyLjEuMAoKCkZyb20gMDA2NGZiNDMyNzczMGI2ZjFhMzAwMmQ3NDMwMTA4YjdhNmZhOGU1ZCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS2FybCBIZWlzcyA8a2hlaXNzQGdtYWlsLmNv bT4KRGF0ZTogTW9uLCAxMSBKYW4gMjAxNiAwODoyODo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0gg MTgvMzldIGJvbmRpbmc6IFByZXZlbnQgSVB2NiBsaW5rIGxvY2FsIGFkZHJlc3Mgb24gZW5zbGF2 ZWQKIGRldmljZXMKClsgVXBzdHJlYW0gY29tbWl0IDAzZDg0YTVmODNhNjdlNjkyYWYwMGEzZDM5 MDFlNzgyMGUzZTg0ZDUgXQoKQ29tbWl0IDFmNzE4ZjBmNGY5NyAoImJvbmRpbmc6IHBvcHVsYXRl IG5laWdoYm91cidzIHByaXZhdGUgb24gZW5zbGF2ZSIpCnVuZG9lcyB0aGUgZml4IHByb3ZpZGVk IGJ5IGNvbW1pdCBjMmVkYWNmODBlMTUgKCJib25kaW5nIC8gaXB2Njogbm8gYWRkcmNvbmYKZm9y IHNsYXZlcyBzZXBhcmF0ZWx5IGZyb20gbWFzdGVyIikgYnkgZWZmZWN0aXZlbHkgc2V0dGluZyB0 aGUgc2xhdmUgZmxhZwphZnRlciB0aGUgc2xhdmUgaGFzIGJlZW4gb3BlbmVkLiAgSWYgdGhlIHNs YXZlIGNvbWVzIHVwIHF1aWNrbHkgZW5vdWdoLCBpdAp3aWxsIGdvIHRocm91Z2ggdGhlIElQdjYg YWRkcmNvbmYgYmVmb3JlIHRoZSBzbGF2ZSBmbGFnIGhhcyBiZWVuIHNldCBhbmQKd2lsbCBnZXQg YSBsaW5rIGxvY2FsIElQdjYgYWRkcmVzcy4KCkluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGFkZHJj b25mIGtub3dzIHRvIGlnbm9yZSB0aGUgc2xhdmUgZGV2aWNlcyBvbiBzdGF0ZQpjaGFuZ2UsIHNl dCBJRkZfU0xBVkUgYmVmb3JlIGRldl9vcGVuKCkgZHVyaW5nIGJvbmRpbmcgZW5zbGF2ZW1lbnQu CgpGaXhlczogMWY3MThmMGY0Zjk3ICgiYm9uZGluZzogcG9wdWxhdGUgbmVpZ2hib3VyJ3MgcHJp dmF0ZSBvbiBlbnNsYXZlIikKU2lnbmVkLW9mZi1ieTogS2FybCBIZWlzcyA8a2hlaXNzQGdtYWls LmNvbT4KU2lnbmVkLW9mZi1ieTogSmF5IFZvc2J1cmdoIDxqYXkudm9zYnVyZ2hAY2Fub25pY2Fs LmNvbT4KUmV2aWV3ZWQtYnk6IEphcm9kIFdpbHNvbiA8amFyb2RAcmVkaGF0LmNvbT4KU2lnbmVk LW9mZi1ieTogQW5keSBHb3Nwb2RhcmVrIDxnb3Nwb0BjdW11bHVzbmV0d29ya3MuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJp dmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyB8IDUgKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA0 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9i b25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYwppbmRl eCAxNmQ4N2JmLi43MmJhNzc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRf bWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMKQEAgLTExOTQsNyAr MTE5NCw2IEBAIHN0YXRpYyBpbnQgYm9uZF9tYXN0ZXJfdXBwZXJfZGV2X2xpbmsoc3RydWN0IG5l dF9kZXZpY2UgKmJvbmRfZGV2LAogCWVyciA9IG5ldGRldl9tYXN0ZXJfdXBwZXJfZGV2X2xpbmtf cHJpdmF0ZShzbGF2ZV9kZXYsIGJvbmRfZGV2LCBzbGF2ZSk7CiAJaWYgKGVycikKIAkJcmV0dXJu IGVycjsKLQlzbGF2ZV9kZXYtPmZsYWdzIHw9IElGRl9TTEFWRTsKIAlydG1zZ19pZmluZm8oUlRN X05FV0xJTkssIHNsYXZlX2RldiwgSUZGX1NMQVZFLCBHRlBfS0VSTkVMKTsKIAlyZXR1cm4gMDsK IH0KQEAgLTE0NTIsNiArMTQ1MSw5IEBAIGludCBib25kX2Vuc2xhdmUoc3RydWN0IG5ldF9kZXZp Y2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KQogCQl9CiAJfQogCisJ Lyogc2V0IHNsYXZlIGZsYWcgYmVmb3JlIG9wZW4gdG8gcHJldmVudCBJUHY2IGFkZHJjb25mICov CisJc2xhdmVfZGV2LT5mbGFncyB8PSBJRkZfU0xBVkU7CisKIAkvKiBvcGVuIHRoZSBzbGF2ZSBz aW5jZSB0aGUgYXBwbGljYXRpb24gY2xvc2VkIGl0ICovCiAJcmVzID0gZGV2X29wZW4oc2xhdmVf ZGV2KTsKIAlpZiAocmVzKSB7CkBAIC0xNzEyLDYgKzE3MTQsNyBAQCBlcnJfY2xvc2U6CiAJZGV2 X2Nsb3NlKHNsYXZlX2Rldik7CiAKIGVycl9yZXN0b3JlX21hYzoKKwlzbGF2ZV9kZXYtPmZsYWdz ICY9IH5JRkZfU0xBVkU7CiAJaWYgKCFib25kLT5wYXJhbXMuZmFpbF9vdmVyX21hYyB8fAogCSAg ICBCT05EX01PREUoYm9uZCkgIT0gQk9ORF9NT0RFX0FDVElWRUJBQ0tVUCkgewogCQkvKiBYWFgg VE9ETyAtIGZvbSBmb2xsb3cgbW9kZSBuZWVkcyB0byBjaGFuZ2UgbWFzdGVyJ3MKLS0gCjIuMS4w CgoKRnJvbSAwYTlmMjAxOWJhMmM1NjAyZTMzZDNkYmY4NjExZTk5MTdjNzlhM2U2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ CkRhdGU6IFR1ZSwgMTIgSmFuIDIwMTYgMDg6NTg6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIIDE5 LzM5XSBwaG9uZXQ6IHByb3Blcmx5IHVuc2hhcmUgc2ticyBpbiBwaG9uZXRfcmN2KCkKClsgVXBz dHJlYW0gY29tbWl0IDdhYWVkNTdjNWMyODkwNjM0Y2ZhZGY3MjUxNzNjN2M2OGVhNGNiNGYgXQoK SXZheWxvIERpbWl0cm92IHJlcG9ydGVkIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgY29tbWl0IDc4 NjZhNjIxMDQzZgooImRldjogYWRkIHBlciBuZXRfZGV2aWNlIHBhY2tldCB0eXBlIGNoYWlucyIp LgoKc2tiLT5kZXYgYmVjb21lcyBOVUxMIGFuZCB3ZSBjcmFzaCBpbiBfX25ldGlmX3JlY2VpdmVf c2tiX2NvcmUoKS4KCkJlZm9yZSBhYm92ZSBjb21taXQsIGRpZmZlcmVudCBraW5kIG9mIGJ1Z3Mg b3IgY29ycnVwdGlvbnMgY291bGQgaGFwcGVuCndpdGhvdXQgbWFqb3IgY3Jhc2guCgpCdXQgdGhl IHJvb3QgY2F1c2UgaXMgdGhhdCBwaG9uZXRfcmN2KCkgY2FuIHF1ZXVlIHNrYiB3aXRob3V0IGNo ZWNraW5nCmlmIHNrYiBpcyBzaGFyZWQgb3Igbm90LgoKTWFueSB0aGFua3MgdG8gSXZheWxvIERp bWl0cm92IGZvciBoaXMgaGVscCwgZGlhZ25vc2lzIGFuZCB0ZXN0cy4KClJlcG9ydGVkLWJ5OiBJ dmF5bG8gRGltaXRyb3YgPGl2by5nLmRpbWl0cm92Ljc1QGdtYWlsLmNvbT4KVGVzdGVkLWJ5OiBJ dmF5bG8gRGltaXRyb3YgPGl2by5nLmRpbWl0cm92Ljc1QGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1i eTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogUmVtaSBEZW5pcy1Db3Vy bW9udCA8Y291cm1pc2NoQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVy IDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9waG9uZXQvYWZfcGhvbmV0LmMgfCA0ICsr KysKIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvcGhv bmV0L2FmX3Bob25ldC5jIGIvbmV0L3Bob25ldC9hZl9waG9uZXQuYwppbmRleCAzMmFiODdkLi4x MWQwYjI5IDEwMDY0NAotLS0gYS9uZXQvcGhvbmV0L2FmX3Bob25ldC5jCisrKyBiL25ldC9waG9u ZXQvYWZfcGhvbmV0LmMKQEAgLTM3Nyw2ICszNzcsMTAgQEAgc3RhdGljIGludCBwaG9uZXRfcmN2 KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJc3RydWN0IHNv Y2thZGRyX3BuIHNhOwogCXUxNiBsZW47CiAKKwlza2IgPSBza2Jfc2hhcmVfY2hlY2soc2tiLCBH RlBfQVRPTUlDKTsKKwlpZiAoIXNrYikKKwkJcmV0dXJuIE5FVF9SWF9EUk9QOworCiAJLyogY2hl Y2sgd2UgaGF2ZSBhdCBsZWFzdCBhIGZ1bGwgUGhvbmV0IGhlYWRlciAqLwogCWlmICghcHNrYl9w dWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBwaG9uZXRoZHIpKSkKIAkJZ290byBvdXQ7Ci0tIAoyLjEu MAoKCkZyb20gNzljNGM4NWJkOTc5NWViNmJiNDk5MjMxNjRjZDBhZWYwOWE1OTNkNSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgpEYXRl OiBUdWUsIDEyIEphbiAyMDE2IDIwOjE3OjA4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAyMC8zOV0g bmV0OiBicGY6IHJlamVjdCBpbnZhbGlkIHNoaWZ0cwoKWyBVcHN0cmVhbSBjb21taXQgMjI5Mzk0 ZThlNjJhNDE5MWQ1OTI4NDJjZjY3ZTgwYzYyYTQ5MjkzNyBdCgpPbiBBUk02NCwgYSBCVUcoKSBp cyB0cmlnZ2VyZWQgaW4gdGhlIGVCUEYgSklUIGlmIGEgZmlsdGVyIHdpdGggYQpjb25zdGFudCBz aGlmdCB0aGF0IGNhbid0IGJlIGVuY29kZWQgaW4gdGhlIGltbWVkaWF0ZSBmaWVsZCBvZiB0aGUK VUJGTS9TQkZNIGluc3RydWN0aW9ucyBpcyBwYXNzZWQgdG8gdGhlIEpJVC4gIFNpbmNlIHRoZXNl IHNoaWZ0cwphbW91bnRzLCB3aGljaCBhcmUgbmVnYXRpdmUgb3IgPj0gcmVnc2l6ZSwgYXJlIGlu dmFsaWQsIHJlamVjdCB0aGVtIGluCnRoZSBlQlBGIHZlcmlmaWVyIGFuZCB0aGUgY2xhc3NpYyBC UEYgZmlsdGVyIGNoZWNrZXIsIGZvciBhbGwKYXJjaGl0ZWN0dXJlcy4KClNpZ25lZC1vZmYtYnk6 IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRv diA8YXN0QGtlcm5lbC5vcmc+CkFja2VkLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dl YXJib3gubmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9m dC5uZXQ+Ci0tLQoga2VybmVsL2JwZi92ZXJpZmllci5jIHwgMTAgKysrKysrKysrKwogbmV0L2Nv cmUvZmlsdGVyLmMgICAgIHwgIDUgKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVy aWZpZXIuYwppbmRleCA0N2RjZDNhLi4xNDFkNTYyIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3Zl cmlmaWVyLmMKKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0xMDE5LDYgKzEwMTksMTYg QEAgc3RhdGljIGludCBjaGVja19hbHVfb3Aoc3RydWN0IHJlZ19zdGF0ZSAqcmVncywgc3RydWN0 IGJwZl9pbnNuICppbnNuKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAorCQlpZiAoKG9wY29k ZSA9PSBCUEZfTFNIIHx8IG9wY29kZSA9PSBCUEZfUlNIIHx8CisJCSAgICAgb3Bjb2RlID09IEJQ Rl9BUlNIKSAmJiBCUEZfU1JDKGluc24tPmNvZGUpID09IEJQRl9LKSB7CisJCQlpbnQgc2l6ZSA9 IEJQRl9DTEFTUyhpbnNuLT5jb2RlKSA9PSBCUEZfQUxVNjQgPyA2NCA6IDMyOworCisJCQlpZiAo aW5zbi0+aW1tIDwgMCB8fCBpbnNuLT5pbW0gPj0gc2l6ZSkgeworCQkJCXZlcmJvc2UoImludmFs aWQgc2hpZnQgJWRcbiIsIGluc24tPmltbSk7CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQl9CisJ CX0KKwogCQkvKiBwYXR0ZXJuIG1hdGNoICdicGZfYWRkIFJ4LCBpbW0nIGluc3RydWN0aW9uICov CiAJCWlmIChvcGNvZGUgPT0gQlBGX0FERCAmJiBCUEZfQ0xBU1MoaW5zbi0+Y29kZSkgPT0gQlBG X0FMVTY0ICYmCiAJCSAgICByZWdzW2luc24tPmRzdF9yZWddLnR5cGUgPT0gRlJBTUVfUFRSICYm CmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jCmluZGV4 IDBmYTI2MTMuLjIzOGJiM2YgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2ZpbHRlci5jCisrKyBiL25l dC9jb3JlL2ZpbHRlci5jCkBAIC03NzUsNiArNzc1LDExIEBAIGludCBicGZfY2hlY2tfY2xhc3Np Yyhjb25zdCBzdHJ1Y3Qgc29ja19maWx0ZXIgKmZpbHRlciwgdW5zaWduZWQgaW50IGZsZW4pCiAJ CQlpZiAoZnRlc3QtPmsgPT0gMCkKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJyZWFrOworCQlj YXNlIEJQRl9BTFUgfCBCUEZfTFNIIHwgQlBGX0s6CisJCWNhc2UgQlBGX0FMVSB8IEJQRl9SU0gg fCBCUEZfSzoKKwkJCWlmIChmdGVzdC0+ayA+PSAzMikKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJ CWJyZWFrOwogCQljYXNlIEJQRl9MRCB8IEJQRl9NRU06CiAJCWNhc2UgQlBGX0xEWCB8IEJQRl9N RU06CiAJCWNhc2UgQlBGX1NUOgotLSAKMi4xLjAKCgpGcm9tIGNjZmY1ZDExNjZiODU3Nzk5Mjcw ZTJhNjljNDdiOWM1MjYwOWEwYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMg RHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogRnJpLCAxNSBKYW4gMjAxNiAwNDo1 Njo1NiAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMjEvMzldIGlwdjY6IHVwZGF0ZSBza2ItPmNzdW0g d2hlbiBDRSBtYXJrIGlzIHByb3BhZ2F0ZWQKClsgVXBzdHJlYW0gY29tbWl0IDM0YWU2YTFhYTA1 NDBmMGY3ODFkZDI2NTM2NjAzNjM1NWZkYzg5MzAgXQoKV2hlbiBhIHR1bm5lbCBkZWNhcHN1bGF0 ZXMgdGhlIG91dGVyIGhlYWRlciwgaXQgaGFzIHRvIGNvbXBseQp3aXRoIFJGQyA2MDgwIGFuZCBl dmVudHVhbGx5IHByb3BhZ2F0ZSBDRSBtYXJrIGludG8gaW5uZXIgaGVhZGVyLgoKSXQgdHVybnMg b3V0IElQNl9FQ05fc2V0X2NlKCkgZG9lcyBub3QgY29ycmVjdGx5IHVwZGF0ZSBza2ItPmNzdW0K Zm9yIENIRUNLU1VNX0NPTVBMRVRFIHBhY2tldHMsIHRyaWdnZXJpbmcgaW5mYW1vdXMgImh3IGNz dW0gZmFpbHVyZSIKbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy4KClNpZ25lZC1vZmYtYnk6IEVy aWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IEhlcmJlcnQgWHUgPGhl cmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVy IDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbmV0L2luZXRfZWNuLmggICAgICAg fCAxOSArKysrKysrKysrKysrKysrLS0tCiBuZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5lbC5jIHwg IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oIGIvaW5jbHVkZS9uZXQvaW5ldF9l Y24uaAppbmRleCA4NGIyMDgzLi4wZGMwYTUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0 X2Vjbi5oCisrKyBiL2luY2x1ZGUvbmV0L2luZXRfZWNuLmgKQEAgLTExMSwxMSArMTExLDI0IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBpcHY0X2NvcHlfZHNjcCh1bnNpZ25lZCBpbnQgZHNjcCwgc3Ry dWN0IGlwaGRyICppbm5lcikKIAogc3RydWN0IGlwdjZoZHI7CiAKLXN0YXRpYyBpbmxpbmUgaW50 IElQNl9FQ05fc2V0X2NlKHN0cnVjdCBpcHY2aGRyICppcGgpCisvKiBOb3RlOgorICogSVBfRUNO X3NldF9jZSgpIGhhcyB0byB0d2VhayBJUFY0IGNoZWNrc3VtIHdoZW4gc2V0dGluZyBDRSwKKyAq IG1lYW5pbmcgYm90aCBjaGFuZ2VzIGhhdmUgbm8gZWZmZWN0IG9uIHNrYi0+Y3N1bSBpZi93aGVu IENIRUNLU1VNX0NPTVBMRVRFCisgKiBJbiBJUHY2IGNhc2UsIG5vIGNoZWNrc3VtIGNvbXBlbnNh dGVzIHRoZSBjaGFuZ2UgaW4gSVB2NiBoZWFkZXIsCisgKiBzbyB3ZSBoYXZlIHRvIHVwZGF0ZSBz a2ItPmNzdW0uCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IElQNl9FQ05fc2V0X2NlKHN0cnVjdCBz a19idWZmICpza2IsIHN0cnVjdCBpcHY2aGRyICppcGgpCiB7CisJX19iZTMyIGZyb20sIHRvOwor CiAJaWYgKElORVRfRUNOX2lzX25vdF9lY3QoaXB2Nl9nZXRfZHNmaWVsZChpcGgpKSkKIAkJcmV0 dXJuIDA7Ci0JKihfX2JlMzIqKWlwaCB8PSBodG9ubChJTkVUX0VDTl9DRSA8PCAyMCk7CisKKwlm cm9tID0gKihfX2JlMzIgKilpcGg7CisJdG8gPSBmcm9tIHwgaHRvbmwoSU5FVF9FQ05fQ0UgPDwg MjApOworCSooX19iZTMyICopaXBoID0gdG87CisJaWYgKHNrYi0+aXBfc3VtbWVkID09IENIRUNL U1VNX0NPTVBMRVRFKQorCQlza2ItPmNzdW0gPSBjc3VtX2FkZChjc3VtX3N1Yihza2ItPmNzdW0s IGZyb20pLCB0byk7CiAJcmV0dXJuIDE7CiB9CiAKQEAgLTE0Miw3ICsxNTUsNyBAQCBzdGF0aWMg aW5saW5lIGludCBJTkVUX0VDTl9zZXRfY2Uoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAljYXNlIGNw dV90b19iZTE2KEVUSF9QX0lQVjYpOgogCQlpZiAoc2tiX25ldHdvcmtfaGVhZGVyKHNrYikgKyBz aXplb2Yoc3RydWN0IGlwdjZoZHIpIDw9CiAJCSAgICBza2JfdGFpbF9wb2ludGVyKHNrYikpCi0J CQlyZXR1cm4gSVA2X0VDTl9zZXRfY2UoaXB2Nl9oZHIoc2tiKSk7CisJCQlyZXR1cm4gSVA2X0VD Tl9zZXRfY2Uoc2tiLCBpcHY2X2hkcihza2IpKTsKIAkJYnJlYWs7CiAJfQogCmRpZmYgLS1naXQg YS9uZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5lbC5jIGIvbmV0L2lwdjYveGZybTZfbW9kZV90dW5u ZWwuYwppbmRleCA5MDFlZjZmLi41MjY2YWQyIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni94ZnJtNl9t b2RlX3R1bm5lbC5jCisrKyBiL25ldC9pcHY2L3hmcm02X21vZGVfdHVubmVsLmMKQEAgLTI0LDcg KzI0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGlwaXA2X2Vjbl9kZWNhcHN1bGF0ZShzdHJ1Y3Qg c2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpcHY2aGRyICppbm5lcl9pcGggPSBpcGlwdjZfaGRyKHNr Yik7CiAKIAlpZiAoSU5FVF9FQ05faXNfY2UoaXB2Nl9nZXRfZHNmaWVsZChvdXRlcl9pcGgpKSkK LQkJSVA2X0VDTl9zZXRfY2UoaW5uZXJfaXBoKTsKKwkJSVA2X0VDTl9zZXRfY2Uoc2tiLCBpbm5l cl9pcGgpOwogfQogCiAvKiBBZGQgZW5jYXBzdWxhdGlvbiBoZWFkZXIuCi0tIAoyLjEuMAoKCkZy b20gZTVmOTZlNTE5YjA2NWFhZDkzMDE1Nzk4N2Y4MzRhNmRmYmUzZGQyMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogTmlrb2xheSBBbGVrc2FuZHJvdiA8bmlrb2xheUBjdW11bHVzbmV0 d29ya3MuY29tPgpEYXRlOiBGcmksIDE1IEphbiAyMDE2IDE5OjAzOjU0ICswMTAwClN1YmplY3Q6 IFtQQVRDSCAyMi8zOV0gYnJpZGdlOiBmaXggbG9ja2RlcCBhZGRyX2xpc3RfbG9jayBmYWxzZSBw b3NpdGl2ZSBzcGxhdAoKWyBVcHN0cmVhbSBjb21taXQgYzY4OTRkZWM4ZWE5YWUwNTc0NzEyNGRj ZTk4YjNiNWMyZTY5YjE2OCBdCgpBZnRlciBwcm9taXNjIG1vZGUgbWFuYWdlbWVudCB3YXMgaW50 cm9kdWNlZCBhIGJyaWRnZSBkZXZpY2UgY291bGQgZG8KZGV2X3NldF9wcm9taXNjdWl0eSBmcm9t IGl0cyBuZG9fY2hhbmdlX3J4X2ZsYWdzKCkgY2FsbGJhY2sgd2hpY2ggaW4KdHVybiBjYW4gYmUg Y2FsbGVkIGFmdGVyIHRoZSBicmlkZ2UncyBhZGRyX2xpc3RfbG9jayBoYXMgYmVlbiB0YWtlbgoo ZS5nLiBieSBkZXZfdWNfYWRkKS4gVGhpcyBjYXVzZXMgYSBmYWxzZSBwb3NpdGl2ZSBsb2NrZGVw IHNwbGF0IGJlY2F1c2UKdGhlIHBvcnQgaW50ZXJmYWNlcycgYWRkcl9saXN0X2xvY2sgaXMgdGFr ZW4gd2hlbiBicl9tYW5hZ2VfcHJvbWlzYygpCnJ1bnMgYWZ0ZXIgdGhlIGJyaWRnZSdzIGFkZHIg bGlzdCBsb2NrIHdhcyBhbHJlYWR5IHRha2VuLgpUbyByZW1vdmUgdGhlIGZhbHNlIHBvc2l0aXZl IGludHJvZHVjZSBhIGN1c3RvbSBicmlkZ2UgYWRkcl9saXN0X2xvY2sKY2xhc3MgYW5kIHNldCBp dCBvbiBicmlkZ2UgaW5pdC4KQSBzaW1wbGUgd2F5IHRvIHJlcHJvZHVjZSB0aGlzIGlzIHdpdGgg dGhlIGZvbGxvd2luZzoKJCBicmN0bCBhZGRiciBicjAKJCBpcCBsIGFkZCBsIGJyMCBicjAuMTAw IHR5cGUgdmxhbiBpZCAxMDAKJCBpcCBsIHNldCBicjAgdXAKJCBpcCBsIHNldCBicjAuMTAwIHVw CiQgZWNobyAxID4gL3N5cy9jbGFzcy9uZXQvYnIwL2JyaWRnZS92bGFuX2ZpbHRlcmluZwokIGJy Y3RsIGFkZGlmIGJyMCBldGgwClNwbGF0OgpbICAgNDMuNjg0MzI1XSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KWyAgIDQzLjY4NDQ4NV0gWyBJTkZPOiBwb3Nz aWJsZSByZWN1cnNpdmUgbG9ja2luZyBkZXRlY3RlZCBdClsgICA0My42ODQ2MzZdIDQuNC4wLXJj OCsgIzU0IE5vdCB0YWludGVkClsgICA0My42ODQ3NTVdIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpbICAgNDMuNjg0OTA2XSBicmN0bC8xMTg3IGlzIHRyeWlu ZyB0byBhY3F1aXJlIGxvY2s6ClsgICA0My42ODUwNDddICAoX3htaXRfRVRIRVIpeysuLi4uLn0s IGF0OiBbPGZmZmZmZmZmODE1MDE2OWU+XSBkZXZfc2V0X3J4X21vZGUrMHgxZS8weDQwClsgICA0 My42ODU0NjBdICBidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRpbmcgbG9jazoKWyAgIDQzLjY4NTYx OF0gIChfeG1pdF9FVEhFUil7Ky4uLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4MTUwNzJhNz5dIGRldl91 Y19hZGQrMHgyNy8weDgwClsgICA0My42ODYwMTVdICBvdGhlciBpbmZvIHRoYXQgbWlnaHQgaGVs cCB1cyBkZWJ1ZyB0aGlzOgpbICAgNDMuNjg2MzE2XSAgUG9zc2libGUgdW5zYWZlIGxvY2tpbmcg c2NlbmFyaW86CgpbICAgNDMuNjg2NzQzXSAgICAgICAgQ1BVMApbICAgNDMuNjg2OTY3XSAgICAg ICAgLS0tLQpbICAgNDMuNjg3MTk3XSAgIGxvY2soX3htaXRfRVRIRVIpOwpbICAgNDMuNjg3NTQ0 XSAgIGxvY2soX3htaXRfRVRIRVIpOwpbICAgNDMuNjg3ODg2XSAqKiogREVBRExPQ0sgKioqCgpb ICAgNDMuNjg4NDM4XSAgTWF5IGJlIGR1ZSB0byBtaXNzaW5nIGxvY2sgbmVzdGluZyBub3RhdGlv bgoKWyAgIDQzLjY4ODg4Ml0gMiBsb2NrcyBoZWxkIGJ5IGJyY3RsLzExODc6ClsgICA0My42ODkx MzRdICAjMDogIChydG5sX211dGV4KXsrLisuKy59LCBhdDogWzxmZmZmZmZmZjgxNTEwMzE3Pl0g cnRubF9sb2NrKzB4MTcvMHgyMApbICAgNDMuNjg5ODUyXSAgIzE6ICAoX3htaXRfRVRIRVIpeysu Li4uLn0sIGF0OiBbPGZmZmZmZmZmODE1MDcyYTc+XSBkZXZfdWNfYWRkKzB4MjcvMHg4MApbICAg NDMuNjkwNTc1XSBzdGFjayBiYWNrdHJhY2U6ClsgICA0My42OTA5NzBdIENQVTogMCBQSUQ6IDEx ODcgQ29tbTogYnJjdGwgTm90IHRhaW50ZWQgNC40LjAtcmM4KyAjNTQKWyAgIDQzLjY5MTI3MF0g SGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5NiksIEJJ T1MgMS44LjEtMjAxNTAzMThfMTgzMzU4LSAwNC8wMS8yMDE0ClsgICA0My42OTE3NzBdICBmZmZm ZmZmZjgyNmEyNWMwIGZmZmY4ODAwMzY5ZmI4ZTAgZmZmZmZmZmY4MTM2MGNlYiBmZmZmZmZmZjgy NmEyNWMwClsgICA0My42OTI0MjVdICBmZmZmODgwMDM2OWZiOWI4IGZmZmZmZmZmODEwZDA0NjYg ZmZmZjg4MDAzNjlmYjk2OCBmZmZmZmZmZjgxNTM3MTM5ClsgICA0My42OTMwNzFdICBmZmZmODgw MDNhMDhjODgwIDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDBmZmZmZmZmZiAwMDAwMDAwMDAyMDgw MDIwClsgICA0My42OTM3MDldIENhbGwgVHJhY2U6ClsgICA0My42OTM5MzFdICBbPGZmZmZmZmZm ODEzNjBjZWI+XSBkdW1wX3N0YWNrKzB4NGIvMHg3MApbICAgNDMuNjk0MTk5XSAgWzxmZmZmZmZm ZjgxMGQwNDY2Pl0gX19sb2NrX2FjcXVpcmUrMHgxZTQ2LzB4MWU5MApbICAgNDMuNjk0NDgzXSAg WzxmZmZmZmZmZjgxNTM3MTM5Pl0gPyBuZXRsaW5rX2Jyb2FkY2FzdF9maWx0ZXJlZCsweDEzOS8w eDNlMApbICAgNDMuNjk0Nzg5XSAgWzxmZmZmZmZmZjgxNTNiNWRhPl0gPyBubG1zZ19ub3RpZnkr MHg1YS8weGMwClsgICA0My42OTUwNjRdICBbPGZmZmZmZmZmODEwZDEwZjU+XSBsb2NrX2FjcXVp cmUrMHhlNS8weDFmMApbICAgNDMuNjk1MzQwXSAgWzxmZmZmZmZmZjgxNTAxNjllPl0gPyBkZXZf c2V0X3J4X21vZGUrMHgxZS8weDQwClsgICA0My42OTU2MjNdICBbPGZmZmZmZmZmODE1ZWRlYTU+ XSBfcmF3X3NwaW5fbG9ja19iaCsweDQ1LzB4ODAKWyAgIDQzLjY5NTkwMV0gIFs8ZmZmZmZmZmY4 MTUwMTY5ZT5dID8gZGV2X3NldF9yeF9tb2RlKzB4MWUvMHg0MApbICAgNDMuNjk2MTgwXSAgWzxm ZmZmZmZmZjgxNTAxNjllPl0gZGV2X3NldF9yeF9tb2RlKzB4MWUvMHg0MApbICAgNDMuNjk2NDYw XSAgWzxmZmZmZmZmZjgxNTAxODljPl0gZGV2X3NldF9wcm9taXNjdWl0eSsweDNjLzB4NTAKWyAg IDQzLjY5Njc1MF0gIFs8ZmZmZmZmZmZhMDU4Njg0NT5dIGJyX3BvcnRfc2V0X3Byb21pc2MrMHgy NS8weDUwIFticmlkZ2VdClsgICA0My42OTcwNTJdICBbPGZmZmZmZmZmYTA1ODY5YWE+XSBicl9t YW5hZ2VfcHJvbWlzYysweDhhLzB4ZTAgW2JyaWRnZV0KWyAgIDQzLjY5NzM0OF0gIFs8ZmZmZmZm ZmZhMDU4MjZlZT5dIGJyX2Rldl9jaGFuZ2VfcnhfZmxhZ3MrMHgxZS8weDIwIFticmlkZ2VdClsg ICA0My42OTc2NTVdICBbPGZmZmZmZmZmODE1MDE1MzI+XSBfX2Rldl9zZXRfcHJvbWlzY3VpdHkr MHgxMzIvMHgxZjAKWyAgIDQzLjY5Nzk0M10gIFs8ZmZmZmZmZmY4MTUwMTY3Mj5dIF9fZGV2X3Nl dF9yeF9tb2RlKzB4ODIvMHg5MApbICAgNDMuNjk4MjIzXSAgWzxmZmZmZmZmZjgxNTA3MmRlPl0g ZGV2X3VjX2FkZCsweDVlLzB4ODAKWyAgIDQzLjY5ODQ5OF0gIFs8ZmZmZmZmZmZhMDViM2M2Mj5d IHZsYW5fZGV2aWNlX2V2ZW50KzB4NTQyLzB4NjUwIFs4MDIxcV0KWyAgIDQzLjY5ODc5OF0gIFs8 ZmZmZmZmZmY4MTA5ODg2ZD5dIG5vdGlmaWVyX2NhbGxfY2hhaW4rMHg1ZC8weDgwClsgICA0My42 OTkwODNdICBbPGZmZmZmZmZmODEwOTg4YjY+XSByYXdfbm90aWZpZXJfY2FsbF9jaGFpbisweDE2 LzB4MjAKWyAgIDQzLjY5OTM3NF0gIFs8ZmZmZmZmZmY4MTRmNDU2ZT5dIGNhbGxfbmV0ZGV2aWNl X25vdGlmaWVyc19pbmZvKzB4NmUvMHg4MApbICAgNDMuNjk5Njc4XSAgWzxmZmZmZmZmZjgxNGY0 NTk2Pl0gY2FsbF9uZXRkZXZpY2Vfbm90aWZpZXJzKzB4MTYvMHgyMApbICAgNDMuNjk5OTczXSAg WzxmZmZmZmZmZmEwNTg3MmJlPl0gYnJfYWRkX2lmKzB4NDdlLzB4NGMwIFticmlkZ2VdClsgICA0 My43MDAyNTldICBbPGZmZmZmZmZmYTA1ODgwMWU+XSBhZGRfZGVsX2lmKzB4NmUvMHg4MCBbYnJp ZGdlXQpbICAgNDMuNzAwNTQ4XSAgWzxmZmZmZmZmZmEwNTg4YjVmPl0gYnJfZGV2X2lvY3RsKzB4 YWYvMHhjMCBbYnJpZGdlXQpbICAgNDMuNzAwODM2XSAgWzxmZmZmZmZmZjgxNTFhN2FjPl0gZGV2 X2lmc2lvYysweDMwYy8weDNjMApbICAgNDMuNzAxMTA2XSAgWzxmZmZmZmZmZjgxNTFhYWM5Pl0g ZGV2X2lvY3RsKzB4ZjkvMHg2ZjAKWyAgIDQzLjcwMTM3OV0gIFs8ZmZmZmZmZmY4MTI1NDM0NT5d ID8gbW50cHV0X25vX2V4cGlyZSsweDUvMHg0NTAKWyAgIDQzLjcwMTY2NV0gIFs8ZmZmZmZmZmY4 MTI1NDNlZT5dID8gbW50cHV0X25vX2V4cGlyZSsweGFlLzB4NDUwClsgICA0My43MDE5NDddICBb PGZmZmZmZmZmODE0ZDdiMDI+XSBzb2NrX2RvX2lvY3RsKzB4NDIvMHg1MApbICAgNDMuNzAyMjE5 XSAgWzxmZmZmZmZmZjgxNGQ4MTc1Pl0gc29ja19pb2N0bCsweDFlNS8weDI5MApbICAgNDMuNzAy NTAwXSAgWzxmZmZmZmZmZjgxMjQyZDBiPl0gZG9fdmZzX2lvY3RsKzB4MmNiLzB4NWMwClsgICA0 My43MDI3NzFdICBbPGZmZmZmZmZmODEyNDMwNzk+XSBTeVNfaW9jdGwrMHg3OS8weDkwClsgICA0 My43MDMwMzNdICBbPGZmZmZmZmZmODE1ZWViYjY+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRo KzB4MTYvMHg3YQoKQ0M6IFZsYWQgWWFzZXZpY2ggPHZ5YXNldmljQHJlZGhhdC5jb20+CkNDOiBT dGVwaGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+CkNDOiBCcmlkZ2Ug bGlzdCA8YnJpZGdlQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnPgpDQzogQW5keSBHb3Nwb2Rh cmVrIDxnb3Nwb0BjdW11bHVzbmV0d29ya3MuY29tPgpDQzogUm9vcGEgUHJhYmh1IDxyb29wYUBj dW11bHVzbmV0d29ya3MuY29tPgpGaXhlczogMjc5NmQwYzY0OGM5ICgiYnJpZGdlOiBBdXRvbWF0 aWNhbGx5IG1hbmFnZSBwb3J0IHByb21pc2N1b3VzIG1vZGUuIikKUmVwb3J0ZWQtYnk6IEFuZHkg R29zcG9kYXJlayA8Z29zcG9AY3VtdWx1c25ldHdvcmtzLmNvbT4KU2lnbmVkLW9mZi1ieTogTmlr b2xheSBBbGVrc2FuZHJvdiA8bmlrb2xheUBjdW11bHVzbmV0d29ya3MuY29tPgpTaWduZWQtb2Zm LWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2JyaWRn ZS9icl9kZXZpY2UuYyB8IDggKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX2RldmljZS5jIGIvbmV0L2JyaWRnZS9icl9k ZXZpY2UuYwppbmRleCA0ZmY3N2ExLi4zZDZjOGUyIDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2Jy X2RldmljZS5jCisrKyBiL25ldC9icmlkZ2UvYnJfZGV2aWNlLmMKQEAgLTI4LDYgKzI4LDggQEAK IGNvbnN0IHN0cnVjdCBuZl9icl9vcHMgX19yY3UgKm5mX2JyX29wcyBfX3JlYWRfbW9zdGx5Owog RVhQT1JUX1NZTUJPTF9HUEwobmZfYnJfb3BzKTsKIAorc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNz X2tleSBicmlkZ2VfbmV0ZGV2X2FkZHJfbG9ja19rZXk7CisKIC8qIG5ldCBkZXZpY2UgdHJhbnNt aXQgYWx3YXlzIGNhbGxlZCB3aXRoIEJIIGRpc2FibGVkICovCiBuZXRkZXZfdHhfdCBicl9kZXZf eG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpAQCAt ODcsNiArODksMTEgQEAgb3V0OgogCXJldHVybiBORVRERVZfVFhfT0s7CiB9CiAKK3N0YXRpYyB2 b2lkIGJyX3NldF9sb2NrZGVwX2NsYXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJbG9j a2RlcF9zZXRfY2xhc3MoJmRldi0+YWRkcl9saXN0X2xvY2ssICZicmlkZ2VfbmV0ZGV2X2FkZHJf bG9ja19rZXkpOworfQorCiBzdGF0aWMgaW50IGJyX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYpCiB7CiAJc3RydWN0IG5ldF9icmlkZ2UgKmJyID0gbmV0ZGV2X3ByaXYoZGV2KTsKQEAg LTk5LDYgKzEwNiw3IEBAIHN0YXRpYyBpbnQgYnJfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2Ug KmRldikKIAllcnIgPSBicl92bGFuX2luaXQoYnIpOwogCWlmIChlcnIpCiAJCWZyZWVfcGVyY3B1 KGJyLT5zdGF0cyk7CisJYnJfc2V0X2xvY2tkZXBfY2xhc3MoZGV2KTsKIAogCXJldHVybiBlcnI7 CiB9Ci0tIAoyLjEuMAoKCkZyb20gMTgxODg0YjAzY2ZiYzgzMTgzNmNkZjhiMGM0YWVmMjUwNDAx MzJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpl dEBnb29nbGUuY29tPgpEYXRlOiBTYXQsIDE5IFNlcCAyMDE1IDA5OjA4OjM0IC0wNzAwClN1Ympl Y3Q6IFtQQVRDSCAyMy8zOV0gdGNwL2RjY3A6IGZpeCB0aW1ld2FpdCByYWNlcyBpbiB0aW1lciBo YW5kbGluZwoKWyBVcHN0cmVhbSBjb21taXQgZWQyZTkyMzk0NTg5MmE4MzcyYWI3MGQyZjYxZDM2 NGIwYjZkOTA1NCBdCgpXaGVuIGNyZWF0aW5nIGEgdGltZXdhaXQgc29ja2V0LCB3ZSBuZWVkIHRv IGFybSB0aGUgdGltZXIgYmVmb3JlCmFsbG93aW5nIG90aGVyIGNwdXMgdG8gZmluZCBpdC4gVGhl IHNpZ25hbCBhbGxvd2luZyBjcHVzIHRvIGZpbmQKdGhlIHNvY2tldCBpcyBzZXR0aW5nIHR3X3Jl ZmNudCB0byBub24gemVybyB2YWx1ZS4KCkFzIHdlIHNldCB0d19yZWZjbnQgaW4gX19pbmV0X3R3 c2tfaGFzaGRhbmNlKCksIHdlIHRoZXJlZm9yZSBuZWVkIHRvCmNhbGwgaW5ldF90d3NrX3NjaGVk dWxlKCkgZmlyc3QuCgpUaGlzIGFsc28gbWVhbnMgd2UgbmVlZCB0byByZW1vdmUgdHdfcmVmY250 IGNoYW5nZXMgZnJvbQppbmV0X3R3c2tfc2NoZWR1bGUoKSBhbmQgbGV0IHRoZSBjYWxsZXIgaGFu ZGxlIGl0LgoKTm90ZSB0aGF0IGJlY2F1c2Ugd2UgdXNlIG1vZF90aW1lcl9waW5uZWQoKSwgd2Ug aGF2ZSB0aGUgZ3VhcmFudGVlCnRoZSB0aW1lciB3b250IGV4cGlyZSBiZWZvcmUgd2Ugc2V0IHR3 X3JlZmNudCBhcyB3ZSBydW4gaW4gQkggY29udGV4dC4KClRvIG1ha2UgdGhpbmdzIG1vcmUgcmVh ZGFibGUgSSBpbnRyb2R1Y2VkIGluZXRfdHdza19yZXNjaGVkdWxlKCkgaGVscGVyLgoKV2hlbiBy ZWFybWluZyB0aGUgdGltZXIsIHdlIGNhbiB1c2UgbW9kX3RpbWVyX3BlbmRpbmcoKSB0byBtYWtl IHN1cmUKd2UgZG8gbm90IHJlYXJtIGEgY2FuY2VsZWQgdGltZXIuCgpOb3RlOiBUaGlzIGJ1ZyBj YW4gcG9zc2libHkgdHJpZ2dlciBpZiBwYWNrZXRzIG9mIGEgZmxvdyBjYW4gaGl0Cm11bHRpcGxl IGNwdXMuIFRoaXMgZG9lcyBub3Qgbm9ybWFsbHkgaGFwcGVuLCB1bmxlc3MgZmxvdyBzdGVlcmlu ZwppcyBicm9rZW4gc29tZWhvdy4gVGhpcyBleHBsYWlucyB0aGlzIGJ1ZyB3YXMgc3BvdHRlZCB+ NSBtb250aHMgYWZ0ZXIKaXRzIGludHJvZHVjdGlvbi4KCkEgc2ltaWxhciBmaXggaXMgbmVlZGVk IGZvciBTWU5fUkVDViBzb2NrZXRzIGluIHJlcXNrX3F1ZXVlX2hhc2hfcmVxKCksCmJ1dCB3aWxs IGJlIHByb3ZpZGVkIGluIGEgc2VwYXJhdGUgcGF0Y2ggZm9yIHByb3BlciB0cmFja2luZy4KCkZp eGVzOiA3ODlmNTU4Y2ZiMzYgKCJ0Y3AvZGNjcDogZ2V0IHJpZCBvZiBjZW50cmFsIHRpbWV3YWl0 IHRpbWVyIikKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29t PgpSZXBvcnRlZC1ieTogWWluZyBDYWkgPHljYWlAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGluY2x1ZGUvbmV0L2lu ZXRfdGltZXdhaXRfc29jay5oIHwgMTQgKysrKysrKysrKysrKy0KIG5ldC9kY2NwL21pbmlzb2Nr cy5jICAgICAgICAgICAgIHwgIDQgKystLQogbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2NrLmMg ICAgfCAxNiArKysrKysrKysrLS0tLS0tCiBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMgICAgICAg ICB8IDEzICsrKysrKy0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwg MTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaW5ldF90aW1ld2FpdF9z b2NrLmggYi9pbmNsdWRlL25ldC9pbmV0X3RpbWV3YWl0X3NvY2suaAppbmRleCAzNjBjNDgwLi45 NWE1YTc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0X3RpbWV3YWl0X3NvY2suaAorKysg Yi9pbmNsdWRlL25ldC9pbmV0X3RpbWV3YWl0X3NvY2suaApAQCAtMTEyLDcgKzExMiwxOSBAQCBz dHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICppbmV0X3R3c2tfYWxsb2MoY29uc3Qgc3RydWN0IHNv Y2sgKnNrLAogdm9pZCBfX2luZXRfdHdza19oYXNoZGFuY2Uoc3RydWN0IGluZXRfdGltZXdhaXRf c29jayAqdHcsIHN0cnVjdCBzb2NrICpzaywKIAkJCSAgIHN0cnVjdCBpbmV0X2hhc2hpbmZvICpo YXNoaW5mbyk7CiAKLXZvaWQgaW5ldF90d3NrX3NjaGVkdWxlKHN0cnVjdCBpbmV0X3RpbWV3YWl0 X3NvY2sgKnR3LCBjb25zdCBpbnQgdGltZW8pOwordm9pZCBfX2luZXRfdHdza19zY2hlZHVsZShz dHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgaW50IHRpbWVvLAorCQkJICBib29sIHJlYXJt KTsKKworc3RhdGljIHZvaWQgaW5saW5lIGluZXRfdHdza19zY2hlZHVsZShzdHJ1Y3QgaW5ldF90 aW1ld2FpdF9zb2NrICp0dywgaW50IHRpbWVvKQoreworCV9faW5ldF90d3NrX3NjaGVkdWxlKHR3 LCB0aW1lbywgZmFsc2UpOworfQorCitzdGF0aWMgdm9pZCBpbmxpbmUgaW5ldF90d3NrX3Jlc2No ZWR1bGUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIGludCB0aW1lbykKK3sKKwlfX2lu ZXRfdHdza19zY2hlZHVsZSh0dywgdGltZW8sIHRydWUpOworfQorCiB2b2lkIGluZXRfdHdza19k ZXNjaGVkdWxlKHN0cnVjdCBpbmV0X3RpbWV3YWl0X3NvY2sgKnR3KTsKIAogdm9pZCBpbmV0X3R3 c2tfcHVyZ2Uoc3RydWN0IGluZXRfaGFzaGluZm8gKmhhc2hpbmZvLApkaWZmIC0tZ2l0IGEvbmV0 L2RjY3AvbWluaXNvY2tzLmMgYi9uZXQvZGNjcC9taW5pc29ja3MuYwppbmRleCAzMGFkZGVlLi44 MzhmNTI0IDEwMDY0NAotLS0gYS9uZXQvZGNjcC9taW5pc29ja3MuYworKysgYi9uZXQvZGNjcC9t aW5pc29ja3MuYwpAQCAtNDgsOCArNDgsNiBAQCB2b2lkIGRjY3BfdGltZV93YWl0KHN0cnVjdCBz b2NrICpzaywgaW50IHN0YXRlLCBpbnQgdGltZW8pCiAJCQl0dy0+dHdfaXB2Nm9ubHkgPSBzay0+ c2tfaXB2Nm9ubHk7CiAJCX0KICNlbmRpZgotCQkvKiBMaW5rYWdlIHVwZGF0ZXMuICovCi0JCV9f aW5ldF90d3NrX2hhc2hkYW5jZSh0dywgc2ssICZkY2NwX2hhc2hpbmZvKTsKIAogCQkvKiBHZXQg dGhlIFRJTUVfV0FJVCB0aW1lb3V0IGZpcmluZy4gKi8KIAkJaWYgKHRpbWVvIDwgcnRvKQpAQCAt NjAsNiArNTgsOCBAQCB2b2lkIGRjY3BfdGltZV93YWl0KHN0cnVjdCBzb2NrICpzaywgaW50IHN0 YXRlLCBpbnQgdGltZW8pCiAJCQl0aW1lbyA9IERDQ1BfVElNRVdBSVRfTEVOOwogCiAJCWluZXRf dHdza19zY2hlZHVsZSh0dywgdGltZW8pOworCQkvKiBMaW5rYWdlIHVwZGF0ZXMuICovCisJCV9f aW5ldF90d3NrX2hhc2hkYW5jZSh0dywgc2ssICZkY2NwX2hhc2hpbmZvKTsKIAkJaW5ldF90d3Nr X3B1dCh0dyk7CiAJfSBlbHNlIHsKIAkJLyogU29ycnksIGlmIHdlJ3JlIG91dCBvZiBtZW1vcnks IGp1c3QgQ0xPU0UgdGhpcwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF90aW1ld2FpdF9zb2Nr LmMgYi9uZXQvaXB2NC9pbmV0X3RpbWV3YWl0X3NvY2suYwppbmRleCAwMGVjOGQ1Li5iYjk2YzFj IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X3RpbWV3YWl0X3NvY2suYworKysgYi9uZXQvaXB2 NC9pbmV0X3RpbWV3YWl0X3NvY2suYwpAQCAtMTUzLDEzICsxNTMsMTUgQEAgdm9pZCBfX2luZXRf dHdza19oYXNoZGFuY2Uoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIHN0cnVjdCBzb2Nr ICpzaywKIAkvKgogCSAqIFN0ZXAgMjogSGFzaCBUVyBpbnRvIHRjcCBlaGFzaCBjaGFpbi4KIAkg KiBOb3RlcyA6Ci0JICogLSB0d19yZWZjbnQgaXMgc2V0IHRvIDMgYmVjYXVzZSA6CisJICogLSB0 d19yZWZjbnQgaXMgc2V0IHRvIDQgYmVjYXVzZSA6CiAJICogLSBXZSBoYXZlIG9uZSByZWZlcmVu Y2UgZnJvbSBiaGFzaCBjaGFpbi4KIAkgKiAtIFdlIGhhdmUgb25lIHJlZmVyZW5jZSBmcm9tIGVo YXNoIGNoYWluLgorCSAqIC0gV2UgaGF2ZSBvbmUgcmVmZXJlbmNlIGZyb20gdGltZXIuCisJICog LSBPbmUgcmVmZXJlbmNlIGZvciBvdXJzZWxmIChvdXIgY2FsbGVyIHdpbGwgcmVsZWFzZSBpdCku CiAJICogV2UgY2FuIHVzZSBhdG9taWNfc2V0KCkgYmVjYXVzZSBwcmlvciBzcGluX2xvY2soKS9z cGluX3VubG9jaygpCiAJICogY29tbWl0dGVkIGludG8gbWVtb3J5IGFsbCB0dyBmaWVsZHMuCiAJ ICovCi0JYXRvbWljX3NldCgmdHctPnR3X3JlZmNudCwgMSArIDEgKyAxKTsKKwlhdG9taWNfc2V0 KCZ0dy0+dHdfcmVmY250LCA0KTsKIAlpbmV0X3R3c2tfYWRkX25vZGVfcmN1KHR3LCAmZWhlYWQt PmNoYWluKTsKIAogCS8qIFN0ZXAgMzogUmVtb3ZlIFNLIGZyb20gaGFzaCBjaGFpbiAqLwpAQCAt MjQzLDcgKzI0NSw3IEBAIHZvaWQgaW5ldF90d3NrX2Rlc2NoZWR1bGUoc3RydWN0IGluZXRfdGlt ZXdhaXRfc29jayAqdHcpCiB9CiBFWFBPUlRfU1lNQk9MKGluZXRfdHdza19kZXNjaGVkdWxlKTsK IAotdm9pZCBpbmV0X3R3c2tfc2NoZWR1bGUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcs IGNvbnN0IGludCB0aW1lbykKK3ZvaWQgX19pbmV0X3R3c2tfc2NoZWR1bGUoc3RydWN0IGluZXRf dGltZXdhaXRfc29jayAqdHcsIGludCB0aW1lbywgYm9vbCByZWFybSkKIHsKIAkvKiB0aW1lb3V0 IDo9IFJUTyAqIDMuNQogCSAqCkBAIC0yNzEsMTIgKzI3MywxNCBAQCB2b2lkIGluZXRfdHdza19z Y2hlZHVsZShzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgY29uc3QgaW50IHRpbWVvKQog CSAqLwogCiAJdHctPnR3X2tpbGwgPSB0aW1lbyA8PSA0KkhaOwotCWlmICghbW9kX3RpbWVyX3Bp bm5lZCgmdHctPnR3X3RpbWVyLCBqaWZmaWVzICsgdGltZW8pKSB7Ci0JCWF0b21pY19pbmMoJnR3 LT50d19yZWZjbnQpOworCWlmICghcmVhcm0pIHsKKwkJQlVHX09OKG1vZF90aW1lcl9waW5uZWQo JnR3LT50d190aW1lciwgamlmZmllcyArIHRpbWVvKSk7CiAJCWF0b21pY19pbmMoJnR3LT50d19k ci0+dHdfY291bnQpOworCX0gZWxzZSB7CisJCW1vZF90aW1lcl9wZW5kaW5nKCZ0dy0+dHdfdGlt ZXIsIGppZmZpZXMgKyB0aW1lbyk7CiAJfQogfQotRVhQT1JUX1NZTUJPTF9HUEwoaW5ldF90d3Nr X3NjaGVkdWxlKTsKK0VYUE9SVF9TWU1CT0xfR1BMKF9faW5ldF90d3NrX3NjaGVkdWxlKTsKIAog dm9pZCBpbmV0X3R3c2tfcHVyZ2Uoc3RydWN0IGluZXRfaGFzaGluZm8gKmhhc2hpbmZvLAogCQkg ICAgIHN0cnVjdCBpbmV0X3RpbWV3YWl0X2RlYXRoX3JvdyAqdHdkciwgaW50IGZhbWlseSkKZGlm ZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9taW5pc29ja3MuYyBiL25ldC9pcHY0L3RjcF9taW5pc29j a3MuYwppbmRleCAxN2U3MzM5Li5mZWMyOTA3IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfbWlu aXNvY2tzLmMKKysrIGIvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jCkBAIC0xNjMsOSArMTYzLDkg QEAga2lsbF93aXRoX3JzdDoKIAkJaWYgKHRjcF9kZWF0aF9yb3cuc3lzY3RsX3R3X3JlY3ljbGUg JiYKIAkJICAgIHRjcHR3LT50d190c19yZWNlbnRfc3RhbXAgJiYKIAkJICAgIHRjcF90d19yZW1l bWJlcl9zdGFtcCh0dykpCi0JCQlpbmV0X3R3c2tfc2NoZWR1bGUodHcsIHR3LT50d190aW1lb3V0 KTsKKwkJCWluZXRfdHdza19yZXNjaGVkdWxlKHR3LCB0dy0+dHdfdGltZW91dCk7CiAJCWVsc2UK LQkJCWluZXRfdHdza19zY2hlZHVsZSh0dywgVENQX1RJTUVXQUlUX0xFTik7CisJCQlpbmV0X3R3 c2tfcmVzY2hlZHVsZSh0dywgVENQX1RJTUVXQUlUX0xFTik7CiAJCXJldHVybiBUQ1BfVFdfQUNL OwogCX0KIApAQCAtMjAzLDcgKzIwMyw3IEBAIGtpbGw6CiAJCQkJcmV0dXJuIFRDUF9UV19TVUND RVNTOwogCQkJfQogCQl9Ci0JCWluZXRfdHdza19zY2hlZHVsZSh0dywgVENQX1RJTUVXQUlUX0xF Tik7CisJCWluZXRfdHdza19yZXNjaGVkdWxlKHR3LCBUQ1BfVElNRVdBSVRfTEVOKTsKIAogCQlp ZiAodG1wX29wdC5zYXdfdHN0YW1wKSB7CiAJCQl0Y3B0dy0+dHdfdHNfcmVjZW50CSAgPSB0bXBf b3B0LnJjdl90c3ZhbDsKQEAgLTI1Myw3ICsyNTMsNyBAQCBraWxsOgogCQkgKiBEbyBub3QgcmVz Y2hlZHVsZSBpbiB0aGUgbGFzdCBjYXNlLgogCQkgKi8KIAkJaWYgKHBhd3NfcmVqZWN0IHx8IHRo LT5hY2spCi0JCQlpbmV0X3R3c2tfc2NoZWR1bGUodHcsIFRDUF9USU1FV0FJVF9MRU4pOworCQkJ aW5ldF90d3NrX3Jlc2NoZWR1bGUodHcsIFRDUF9USU1FV0FJVF9MRU4pOwogCiAJCXJldHVybiB0 Y3BfdGltZXdhaXRfY2hlY2tfb293X3JhdGVfbGltaXQoCiAJCQl0dywgc2tiLCBMSU5VWF9NSUJf VENQQUNLU0tJUFBFRFRJTUVXQUlUKTsKQEAgLTMyNCw5ICszMjQsNiBAQCB2b2lkIHRjcF90aW1l X3dhaXQoc3RydWN0IHNvY2sgKnNrLCBpbnQgc3RhdGUsIGludCB0aW1lbykKIAkJfSB3aGlsZSAo MCk7CiAjZW5kaWYKIAotCQkvKiBMaW5rYWdlIHVwZGF0ZXMuICovCi0JCV9faW5ldF90d3NrX2hh c2hkYW5jZSh0dywgc2ssICZ0Y3BfaGFzaGluZm8pOwotCiAJCS8qIEdldCB0aGUgVElNRV9XQUlU IHRpbWVvdXQgZmlyaW5nLiAqLwogCQlpZiAodGltZW8gPCBydG8pCiAJCQl0aW1lbyA9IHJ0bzsK QEAgLTM0MCw2ICszMzcsOCBAQCB2b2lkIHRjcF90aW1lX3dhaXQoc3RydWN0IHNvY2sgKnNrLCBp bnQgc3RhdGUsIGludCB0aW1lbykKIAkJfQogCiAJCWluZXRfdHdza19zY2hlZHVsZSh0dywgdGlt ZW8pOworCQkvKiBMaW5rYWdlIHVwZGF0ZXMuICovCisJCV9faW5ldF90d3NrX2hhc2hkYW5jZSh0 dywgc2ssICZ0Y3BfaGFzaGluZm8pOwogCQlpbmV0X3R3c2tfcHV0KHR3KTsKIAl9IGVsc2Ugewog CQkvKiBTb3JyeSwgaWYgd2UncmUgb3V0IG9mIG1lbW9yeSwganVzdCBDTE9TRSB0aGlzCi0tIAoy LjEuMAoKCkZyb20gMTZmNTM4MjA5NjQ0Yjc4NWUyNWNmMjUzOTUyMDJlNDY3OTc4ZjA3MiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUmFhbmFuIEF2YXJnaWwgPHJhYW5hbi5hdmFyZ2ls QGludGVsLmNvbT4KRGF0ZTogVGh1LCAxIE9jdCAyMDE1IDA0OjQ4OjUzIC0wNzAwClN1YmplY3Q6 IFtQQVRDSCAyNC8zOV0gdGNwL2RjY3A6IGZpeCBvbGQgc3R5bGUgZGVjbGFyYXRpb25zCk1JTUUt VmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250 ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCA4Njk1YTE0NGRh OWU1MDBhNWE2MGZhMzRjMDY2OTQzNDZlYzEwNDhmIF0KCknigJltIHVzaW5nIHRoZSBjb21waWxh dGlvbiBmbGFnIC1XZXJyb3I9b2xkLXN0eWxlLWRlY2xhcmF0aW9uLCB3aGljaApyZXF1aXJlcyB0 aGF0IHRoZSDigJxpbmxpbmXigJ0gd29yZCB3b3VsZCBjb21lIGF0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGNvZGUKbGluZS4KCiQgbWFrZSBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUv ZTEwMDBlLmtvCi4uLgppbmNsdWRlL25ldC9pbmV0X3RpbWV3YWl0X3NvY2suaDoxMTY6MTogZXJy b3I6IOKAmGlubGluZeKAmSBpcyBub3QgYXQKYmVnaW5uaW5nIG9mIGRlY2xhcmF0aW9uIFstV2Vy cm9yPW9sZC1zdHlsZS1kZWNsYXJhdGlvbl0Kc3RhdGljIHZvaWQgaW5saW5lIGluZXRfdHdza19z Y2hlZHVsZShzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgaW50CnRpbWVvKQoKaW5jbHVk ZS9uZXQvaW5ldF90aW1ld2FpdF9zb2NrLmg6MTIxOjE6IGVycm9yOiDigJhpbmxpbmXigJkgaXMg bm90IGF0CmJlZ2lubmluZyBvZiBkZWNsYXJhdGlvbiBbLVdlcnJvcj1vbGQtc3R5bGUtZGVjbGFy YXRpb25dCnN0YXRpYyB2b2lkIGlubGluZSBpbmV0X3R3c2tfcmVzY2hlZHVsZShzdHJ1Y3QgaW5l dF90aW1ld2FpdF9zb2NrICp0dywKaW50IHRpbWVvKQoKRml4ZXM6IGVkMmU5MjM5NDU4OSAoInRj cC9kY2NwOiBmaXggdGltZXdhaXQgcmFjZXMgaW4gdGltZXIgaGFuZGxpbmciKQpTaWduZWQtb2Zm LWJ5OiBSYWFuYW4gQXZhcmdpbCA8cmFhbmFuLmF2YXJnaWxAaW50ZWwuY29tPgpTaWduZWQtb2Zm LWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pbmV0 X3RpbWV3YWl0X3NvY2suaCB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0X3RpbWV3YWl0 X3NvY2suaCBiL2luY2x1ZGUvbmV0L2luZXRfdGltZXdhaXRfc29jay5oCmluZGV4IDk1YTVhNzcu Ljc2ODJjYjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2luZXRfdGltZXdhaXRfc29jay5oCisr KyBiL2luY2x1ZGUvbmV0L2luZXRfdGltZXdhaXRfc29jay5oCkBAIC0xMTUsMTIgKzExNSwxMiBA QCB2b2lkIF9faW5ldF90d3NrX2hhc2hkYW5jZShzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0 dywgc3RydWN0IHNvY2sgKnNrLAogdm9pZCBfX2luZXRfdHdza19zY2hlZHVsZShzdHJ1Y3QgaW5l dF90aW1ld2FpdF9zb2NrICp0dywgaW50IHRpbWVvLAogCQkJICBib29sIHJlYXJtKTsKIAotc3Rh dGljIHZvaWQgaW5saW5lIGluZXRfdHdza19zY2hlZHVsZShzdHJ1Y3QgaW5ldF90aW1ld2FpdF9z b2NrICp0dywgaW50IHRpbWVvKQorc3RhdGljIGlubGluZSB2b2lkIGluZXRfdHdza19zY2hlZHVs ZShzdHJ1Y3QgaW5ldF90aW1ld2FpdF9zb2NrICp0dywgaW50IHRpbWVvKQogewogCV9faW5ldF90 d3NrX3NjaGVkdWxlKHR3LCB0aW1lbywgZmFsc2UpOwogfQogCi1zdGF0aWMgdm9pZCBpbmxpbmUg aW5ldF90d3NrX3Jlc2NoZWR1bGUoc3RydWN0IGluZXRfdGltZXdhaXRfc29jayAqdHcsIGludCB0 aW1lbykKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbmV0X3R3c2tfcmVzY2hlZHVsZShzdHJ1Y3QgaW5l dF90aW1ld2FpdF9zb2NrICp0dywgaW50IHRpbWVvKQogewogCV9faW5ldF90d3NrX3NjaGVkdWxl KHR3LCB0aW1lbywgdHJ1ZSk7CiB9Ci0tIAoyLjEuMAoKCkZyb20gNzVjZmY2ZWI2MDhjNjFmMWFi NzA3ZGY5YmRjMzY5NmI2NWM2NGI2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQmVu IEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KRGF0ZTogU3VuLCAxIE5vdiAyMDE1IDE2 OjIxOjI0ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyNS8zOV0gaXNkbl9wcHA6IEFkZCBjaGVja3Mg Zm9yIGFsbG9jYXRpb24gZmFpbHVyZSBpbgogaXNkbl9wcHBfb3BlbigpCgpbIFVwc3RyZWFtIGNv bW1pdCAwYmFhNTdkOGRjMzJkYjc4MzY5ZDhiNTE3NmVmNTZjNWUyZTE4YWIzIF0KCkNvbXBpbGUt dGVzdGVkIG9ubHkuCgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQu b3JnLnVrPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+Ci0tLQogZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jIHwgNiArKysrKysKIDEgZmlsZSBj aGFuZ2VkLCA2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lz ZG5fcHBwLmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMKaW5kZXggYzQxOThmYS4uODZm OWFiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jCisrKyBiL2RyaXZl cnMvaXNkbi9pNGwvaXNkbl9wcHAuYwpAQCAtMzAxLDYgKzMwMSw4IEBAIGlzZG5fcHBwX29wZW4o aW50IG1pbiwgc3RydWN0IGZpbGUgKmZpbGUpCiAJaXMtPmNvbXBmbGFncyA9IDA7CiAKIAlpcy0+ cmVzZXQgPSBpc2RuX3BwcF9jY3BfcmVzZXRfYWxsb2MoaXMpOworCWlmICghaXMtPnJlc2V0KQor CQlyZXR1cm4gLUVOT01FTTsKIAogCWlzLT5scCA9IE5VTEw7CiAJaXMtPm1wX3NlcW5vID0gMDsg ICAgICAgLyogTVAgc2VxdWVuY2UgbnVtYmVyICovCkBAIC0zMjAsNiArMzIyLDEwIEBAIGlzZG5f cHBwX29wZW4oaW50IG1pbiwgc3RydWN0IGZpbGUgKmZpbGUpCiAJICogVkogaGVhZGVyIGNvbXBy ZXNzaW9uIGluaXQKIAkgKi8KIAlpcy0+c2xjb21wID0gc2xoY19pbml0KDE2LCAxNik7CS8qIG5v dCBuZWNlc3NhcnkgZm9yIDIuIGxpbmsgaW4gYnVuZGxlICovCisJaWYgKCFpcy0+c2xjb21wKSB7 CisJCWlzZG5fcHBwX2NjcF9yZXNldF9mcmVlKGlzKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQog I2VuZGlmCiAjaWZkZWYgQ09ORklHX0lQUFBfRklMVEVSCiAJaXMtPnBhc3NfZmlsdGVyID0gTlVM TDsKLS0gCjIuMS4wCgoKRnJvbSA3NjFlOTEwNDgxNmI2ZjFlM2FlZWRjODM4ZWZiZDU0Y2QwNzRh YmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVj YWRlbnQub3JnLnVrPgpEYXRlOiBTdW4sIDEgTm92IDIwMTUgMTY6MjI6NTMgKzAwMDAKU3ViamVj dDogW1BBVENIIDI2LzM5XSBwcHAsIHNsaXA6IFZhbGlkYXRlIFZKIGNvbXByZXNzaW9uIHNsb3Qg cGFyYW1ldGVycwogY29tcGxldGVseQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK WyBVcHN0cmVhbSBjb21taXQgNGFiNDJkNzhlMzdhMjk0YWM3YmM1NjkwMWQ1NjNjNjQyZTAzYzRh ZSBdCgpDdXJyZW50bHkgc2xoY19pbml0KCkgdHJlYXRzIG91dC1vZi1yYW5nZSB2YWx1ZXMgb2Yg cnNsb3RzIGFuZCB0c2xvdHMKYXMgZXF1aXZhbGVudCB0byAwLCBleGNlcHQgdGhhdCBpZiB0c2xv dHMgaXMgdG9vIGxhcmdlIGl0IHdpbGwKZGVyZWZlcmVuY2UgYSBudWxsIHBvaW50ZXIgKENWRS0y MDE1LTc3OTkpLgoKQWRkIGEgcmFuZ2UtY2hlY2sgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24g YW5kIG1ha2UgaXQgcmV0dXJuIGFuCkVSUl9QVFIoKSBvbiBlcnJvciBpbnN0ZWFkIG9mIE5VTEwu ICBDaGFuZ2UgdGhlIGNhbGxlcnMgYWNjb3JkaW5nbHkuCgpDb21waWxlLXRlc3RlZCBvbmx5LgoK UmVwb3J0ZWQtYnk6IOmDreawuOWImiA8Z3VveW9uZ2dhbmdAMzYwLmNuPgpSZWZlcmVuY2VzOiBo dHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5zZWN1cml0eS5vc3MuZ2VuZXJhbC8x NzkwOApTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQub3JnLnVrPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQog ZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jICAgfCAxMCArKysrLS0tLS0tCiBkcml2ZXJzL25l dC9wcHAvcHBwX2dlbmVyaWMuYyB8ICA2ICsrLS0tLQogZHJpdmVycy9uZXQvc2xpcC9zbGhjLmMg ICAgICAgfCAxMiArKysrKysrKy0tLS0KIGRyaXZlcnMvbmV0L3NsaXAvc2xpcC5jICAgICAgIHwg IDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jIGIvZHJpdmVycy9pc2Ru L2k0bC9pc2RuX3BwcC5jCmluZGV4IDg2ZjlhYmUuLjljMWU4YWQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaXNkbi9pNGwvaXNkbl9wcHAuYworKysgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMK QEAgLTMyMiw5ICszMjIsOSBAQCBpc2RuX3BwcF9vcGVuKGludCBtaW4sIHN0cnVjdCBmaWxlICpm aWxlKQogCSAqIFZKIGhlYWRlciBjb21wcmVzc2lvbiBpbml0CiAJICovCiAJaXMtPnNsY29tcCA9 IHNsaGNfaW5pdCgxNiwgMTYpOwkvKiBub3QgbmVjZXNzYXJ5IGZvciAyLiBsaW5rIGluIGJ1bmRs ZSAqLwotCWlmICghaXMtPnNsY29tcCkgeworCWlmIChJU19FUlIoaXMtPnNsY29tcCkpIHsKIAkJ aXNkbl9wcHBfY2NwX3Jlc2V0X2ZyZWUoaXMpOwotCQlyZXR1cm4gLUVOT01FTTsKKwkJcmV0dXJu IFBUUl9FUlIoaXMtPnNsY29tcCk7CiAJfQogI2VuZGlmCiAjaWZkZWYgQ09ORklHX0lQUFBfRklM VEVSCkBAIC01NzMsMTAgKzU3Myw4IEBAIGlzZG5fcHBwX2lvY3RsKGludCBtaW4sIHN0cnVjdCBm aWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIAkJCWlzLT5t YXhjaWQgPSB2YWw7CiAjaWZkZWYgQ09ORklHX0lTRE5fUFBQX1ZKCiAJCQlzbHRtcCA9IHNsaGNf aW5pdCgxNiwgdmFsKTsKLQkJCWlmICghc2x0bXApIHsKLQkJCQlwcmludGsoS0VSTl9FUlIgImlw cHAsIGNhbid0IHJlYWxsb2Mgc2xoYyBzdHJ1Y3RcbiIpOwotCQkJCXJldHVybiAtRU5PTUVNOwot CQkJfQorCQkJaWYgKElTX0VSUihzbHRtcCkpCisJCQkJcmV0dXJuIFBUUl9FUlIoc2x0bXApOwog CQkJaWYgKGlzLT5zbGNvbXApCiAJCQkJc2xoY19mcmVlKGlzLT5zbGNvbXApOwogCQkJaXMtPnNs Y29tcCA9IHNsdG1wOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMg Yi9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYwppbmRleCA5ZDE1NTY2Li5jZmU0OWEwIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC9wcHAvcHBwX2dlbmVyaWMuYworKysgYi9kcml2ZXJzL25l dC9wcHAvcHBwX2dlbmVyaWMuYwpAQCAtNzE1LDEwICs3MTUsOCBAQCBzdGF0aWMgbG9uZyBwcHBf aW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcg YXJnKQogCQkJdmFsICY9IDB4ZmZmZjsKIAkJfQogCQl2aiA9IHNsaGNfaW5pdCh2YWwyKzEsIHZh bCsxKTsKLQkJaWYgKCF2aikgewotCQkJbmV0ZGV2X2VycihwcHAtPmRldiwKLQkJCQkgICAiUFBQ OiBubyBtZW1vcnkgKFZKIGNvbXByZXNzb3IpXG4iKTsKLQkJCWVyciA9IC1FTk9NRU07CisJCWlm IChJU19FUlIodmopKSB7CisJCQllcnIgPSBQVFJfRVJSKHZqKTsKIAkJCWJyZWFrOwogCQl9CiAJ CXBwcF9sb2NrKHBwcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbGlwL3NsaGMuYyBiL2Ry aXZlcnMvbmV0L3NsaXAvc2xoYy5jCmluZGV4IDA3OWY3YWQuLjI3ZWQyNTIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3NsaXAvc2xoYy5jCisrKyBiL2RyaXZlcnMvbmV0L3NsaXAvc2xoYy5jCkBA IC04NCw4ICs4NCw5IEBAIHN0YXRpYyBsb25nIGRlY29kZSh1bnNpZ25lZCBjaGFyICoqY3BwKTsK IHN0YXRpYyB1bnNpZ25lZCBjaGFyICogcHV0MTYodW5zaWduZWQgY2hhciAqY3AsIHVuc2lnbmVk IHNob3J0IHgpOwogc3RhdGljIHVuc2lnbmVkIHNob3J0IHB1bGwxNih1bnNpZ25lZCBjaGFyICoq Y3BwKTsKIAotLyogSW5pdGlhbGl6ZSBjb21wcmVzc2lvbiBkYXRhIHN0cnVjdHVyZQorLyogQWxs b2NhdGUgY29tcHJlc3Npb24gZGF0YSBzdHJ1Y3R1cmUKICAqCXNsb3RzIG11c3QgYmUgaW4gcmFu Z2UgMCB0byAyNTUgKHplcm8gbWVhbmluZyBubyBjb21wcmVzc2lvbikKKyAqIFJldHVybnMgcG9p bnRlciB0byBzdHJ1Y3R1cmUgb3IgRVJSX1BUUigpIG9uIGVycm9yLgogICovCiBzdHJ1Y3Qgc2xj b21wcmVzcyAqCiBzbGhjX2luaXQoaW50IHJzbG90cywgaW50IHRzbG90cykKQEAgLTk0LDExICs5 NSwxNCBAQCBzbGhjX2luaXQoaW50IHJzbG90cywgaW50IHRzbG90cykKIAlyZWdpc3RlciBzdHJ1 Y3QgY3N0YXRlICp0czsKIAlzdHJ1Y3Qgc2xjb21wcmVzcyAqY29tcDsKIAorCWlmIChyc2xvdHMg PCAwIHx8IHJzbG90cyA+IDI1NSB8fCB0c2xvdHMgPCAwIHx8IHRzbG90cyA+IDI1NSkKKwkJcmV0 dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKIAljb21wID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNs Y29tcHJlc3MpLCBHRlBfS0VSTkVMKTsKIAlpZiAoISBjb21wKQogCQlnb3RvIG91dF9mYWlsOwog Ci0JaWYgKCByc2xvdHMgPiAwICAmJiAgcnNsb3RzIDwgMjU2ICkgeworCWlmIChyc2xvdHMgPiAw KSB7CiAJCXNpemVfdCByc2l6ZSA9IHJzbG90cyAqIHNpemVvZihzdHJ1Y3QgY3N0YXRlKTsKIAkJ Y29tcC0+cnN0YXRlID0ga3phbGxvYyhyc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghIGNvbXAt PnJzdGF0ZSkKQEAgLTEwNiw3ICsxMTAsNyBAQCBzbGhjX2luaXQoaW50IHJzbG90cywgaW50IHRz bG90cykKIAkJY29tcC0+cnNsb3RfbGltaXQgPSByc2xvdHMgLSAxOwogCX0KIAotCWlmICggdHNs b3RzID4gMCAgJiYgIHRzbG90cyA8IDI1NiApIHsKKwlpZiAodHNsb3RzID4gMCkgewogCQlzaXpl X3QgdHNpemUgPSB0c2xvdHMgKiBzaXplb2Yoc3RydWN0IGNzdGF0ZSk7CiAJCWNvbXAtPnRzdGF0 ZSA9IGt6YWxsb2ModHNpemUsIEdGUF9LRVJORUwpOwogCQlpZiAoISBjb21wLT50c3RhdGUpCkBA IC0xNDEsNyArMTQ1LDcgQEAgb3V0X2ZyZWUyOgogb3V0X2ZyZWU6CiAJa2ZyZWUoY29tcCk7CiBv dXRfZmFpbDoKLQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIH0KIAog CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbGlwL3NsaXAuYyBiL2RyaXZlcnMvbmV0L3NsaXAv c2xpcC5jCmluZGV4IDA1Mzg3YjEuLmExN2Q4NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Ns aXAvc2xpcC5jCisrKyBiL2RyaXZlcnMvbmV0L3NsaXAvc2xpcC5jCkBAIC0xNjQsNyArMTY0LDcg QEAgc3RhdGljIGludCBzbF9hbGxvY19idWZzKHN0cnVjdCBzbGlwICpzbCwgaW50IG10dSkKIAlp ZiAoY2J1ZmYgPT0gTlVMTCkKIAkJZ290byBlcnJfZXhpdDsKIAlzbGNvbXAgPSBzbGhjX2luaXQo MTYsIDE2KTsKLQlpZiAoc2xjb21wID09IE5VTEwpCisJaWYgKElTX0VSUihzbGNvbXApKQogCQln b3RvIGVycl9leGl0OwogI2VuZGlmCiAJc3Bpbl9sb2NrX2JoKCZzbC0+bG9jayk7Ci0tIAoyLjEu MAoKCkZyb20gNmMyNWIwNTdmMjRiODBhZTYwMmNjOWJhOWVjOTc4ODJiMjZkODRhYSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9y Zz4KRGF0ZTogVGh1LCAxNCBKYW4gMjAxNiAxNToyODoxOSArMDEwMApTdWJqZWN0OiBbUEFUQ0gg MjcvMzldIGJhdG1hbi1hZHY6IEF2b2lkIHJlY3Vyc2l2ZSBjYWxsX3JjdSBmb3IKIGJhdGFkdl9i bGFfY2xhaW0KClsgVXBzdHJlYW0gY29tbWl0IDYzYjM5OTI3MjI5NGU3YTkzOWNkZTQxNzkyZGNh MzhjNTQ5ZjA0ODQgXQoKVGhlIGJhdGFkdl9jbGFpbV9mcmVlX3JlZiBmdW5jdGlvbiB1c2VzIGNh bGxfcmN1IHRvIGRlbGF5IHRoZSBmcmVlIG9mIHRoZQpiYXRhZHZfYmxhX2NsYWltIG9iamVjdCB1 bnRpbCBubyAoYWxyZWFkeSBzdGFydGVkKSByY3VfcmVhZF9sb2NrIGlzIGVuYWJsZWQKYW55bW9y ZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gY29udGV4dCBpcyBzdGlsbCB0cnlpbmcgdG8gYWNj ZXNzIHRoZQpvYmplY3Qgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQuIEJ1dCBiYXRhZHZfYmxhX2Ns YWltIGFsc28gY29udGFpbnMgYQpyZWZlcmVuY2UgdG8gYmFja2JvbmVfZ3cgd2hpY2ggbXVzdCBi ZSByZW1vdmVkLgoKVGhlIHJlZmVyZW5jZSBkcm9wIG9mIGJhY2tib25lX2d3IHdhcyBkb25lIGlu IHRoZSBjYWxsX3JjdSBmdW5jdGlvbgpiYXRhZHZfY2xhaW1fZnJlZV9yY3UgYnV0IHNob3VsZCBh Y3R1YWxseSBiZSBkb25lIGluIHRoZQpiYXRhZHZfY2xhaW1fcmVsZWFzZSBmdW5jdGlvbiB0byBh dm9pZCBuZXN0ZWQgY2FsbF9yY3VzLiBUaGlzIGlzIGltcG9ydGFudApiZWNhdXNlIHJjdV9iYXJy aWVyIChlLmcuIGJhdGFkdl9zb2Z0aWZfZnJlZSBvciBiYXRhZHZfZXhpdCkgd2lsbCBub3QKZGV0 ZWN0IHRoZSBpbm5lciBjYWxsX3JjdSBhcyByZWxldmFudCBmb3IgaXRzIGV4ZWN1dGlvbi4gT3Ro ZXJ3aXNlIHRoaXMKYmFycmllciB3aWxsIG1vc3QgbGlrZWx5IGJlIGluc2VydGVkIGluIHRoZSBx dWV1ZSBiZWZvcmUgdGhlIGNhbGxiYWNrIG9mCnRoZSBmaXJzdCBjYWxsX3JjdSB3YXMgZXhlY3V0 ZWQuIFRoZSBjYWxsZXIgb2YgcmN1X2JhcnJpZXIgd2lsbCB0aGVyZWZvcmUKY29udGludWUgdG8g cnVuIGJlZm9yZSB0aGUgaW5uZXIgY2FsbF9yY3UgY2FsbGJhY2sgZmluaXNoZWQuCgpGaXhlczog MjM3MjEzODdjNDA5ICgiYmF0bWFuLWFkdjogYWRkIGJhc2ljIGJyaWRnZSBsb29wIGF2b2lkYW5j ZSBjb2RlIikKU2lnbmVkLW9mZi1ieTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9y Zz4KQWNrZWQtYnk6IFNpbW9uIFd1bmRlcmxpY2ggPHN3QHNpbW9ud3VuZGVybGljaC5kZT4KU2ln bmVkLW9mZi1ieTogTWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNp Z25lZC1vZmYtYnk6IEFudG9uaW8gUXVhcnR1bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9i YXRtYW4tYWR2L2JyaWRnZV9sb29wX2F2b2lkYW5jZS5jIHwgMTAgKysrLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9u ZXQvYmF0bWFuLWFkdi9icmlkZ2VfbG9vcF9hdm9pZGFuY2UuYyBiL25ldC9iYXRtYW4tYWR2L2Jy aWRnZV9sb29wX2F2b2lkYW5jZS5jCmluZGV4IGFjNGI5NmUuLmJkMzM1N2UgMTAwNjQ0Ci0tLSBh L25ldC9iYXRtYW4tYWR2L2JyaWRnZV9sb29wX2F2b2lkYW5jZS5jCisrKyBiL25ldC9iYXRtYW4t YWR2L2JyaWRnZV9sb29wX2F2b2lkYW5jZS5jCkBAIC0xMTIsMjEgKzExMiwxNyBAQCBiYXRhZHZf YmFja2JvbmVfZ3dfZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9ibGFfYmFja2JvbmVfZ3cgKmJhY2ti b25lX2d3KQogfQogCiAvKiBmaW5hbGx5IGRlaW5pdGlhbGl6ZSB0aGUgY2xhaW0gKi8KLXN0YXRp YyB2b2lkIGJhdGFkdl9jbGFpbV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKK3N0YXRp YyB2b2lkIGJhdGFkdl9jbGFpbV9yZWxlYXNlKHN0cnVjdCBiYXRhZHZfYmxhX2NsYWltICpjbGFp bSkKIHsKLQlzdHJ1Y3QgYmF0YWR2X2JsYV9jbGFpbSAqY2xhaW07Ci0KLQljbGFpbSA9IGNvbnRh aW5lcl9vZihyY3UsIHN0cnVjdCBiYXRhZHZfYmxhX2NsYWltLCByY3UpOwotCiAJYmF0YWR2X2Jh Y2tib25lX2d3X2ZyZWVfcmVmKGNsYWltLT5iYWNrYm9uZV9ndyk7Ci0Ja2ZyZWUoY2xhaW0pOwor CWtmcmVlX3JjdShjbGFpbSwgcmN1KTsKIH0KIAogLyogZnJlZSBhIGNsYWltLCBjYWxsIGNsYWlt X2ZyZWVfcmN1IGlmIGl0cyB0aGUgbGFzdCByZWZlcmVuY2UgKi8KIHN0YXRpYyB2b2lkIGJhdGFk dl9jbGFpbV9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X2JsYV9jbGFpbSAqY2xhaW0pCiB7CiAJaWYg KGF0b21pY19kZWNfYW5kX3Rlc3QoJmNsYWltLT5yZWZjb3VudCkpCi0JCWNhbGxfcmN1KCZjbGFp bS0+cmN1LCBiYXRhZHZfY2xhaW1fZnJlZV9yY3UpOworCQliYXRhZHZfY2xhaW1fcmVsZWFzZShj bGFpbSk7CiB9CiAKIC8qKgotLSAKMi4xLjAKCgpGcm9tIGZjNmYyMmNmNGQ5NDI4NDBkYmUxN2Ni MDUxNjlmODA4NGI5ODU1NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNr ZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjox OSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMjgvMzldIGJhdG1hbi1hZHY6IEF2b2lkIHJlY3Vyc2l2 ZSBjYWxsX3JjdSBmb3IgYmF0YWR2X25jX25vZGUKClsgVXBzdHJlYW0gY29tbWl0IDQ0ZThlN2U5 MWQ2YzdjN2FiMTk2ODg3NTBmNzI1NzI5MjY0MGQxYTAgXQoKVGhlIGJhdGFkdl9uY19ub2RlX2Zy ZWVfcmVmIGZ1bmN0aW9uIHVzZXMgY2FsbF9yY3UgdG8gZGVsYXkgdGhlIGZyZWUgb2YgdGhlCmJh dGFkdl9uY19ub2RlIG9iamVjdCB1bnRpbCBubyAoYWxyZWFkeSBzdGFydGVkKSByY3VfcmVhZF9s b2NrIGlzIGVuYWJsZWQKYW55bW9yZS4gVGhpcyBtYWtlcyBzdXJlIHRoYXQgbm8gY29udGV4dCBp cyBzdGlsbCB0cnlpbmcgdG8gYWNjZXNzIHRoZQpvYmplY3Qgd2hpY2ggc2hvdWxkIGJlIHJlbW92 ZWQuIEJ1dCBiYXRhZHZfbmNfbm9kZSBhbHNvIGNvbnRhaW5zIGEKcmVmZXJlbmNlIHRvIG9yaWdf bm9kZSB3aGljaCBtdXN0IGJlIHJlbW92ZWQuCgpUaGUgcmVmZXJlbmNlIGRyb3Agb2Ygb3JpZ19u b2RlIHdhcyBkb25lIGluIHRoZSBjYWxsX3JjdSBmdW5jdGlvbgpiYXRhZHZfbmNfbm9kZV9mcmVl X3JjdSBidXQgc2hvdWxkIGFjdHVhbGx5IGJlIGRvbmUgaW4gdGhlCmJhdGFkdl9uY19ub2RlX3Jl bGVhc2UgZnVuY3Rpb24gdG8gYXZvaWQgbmVzdGVkIGNhbGxfcmN1cy4gVGhpcyBpcwppbXBvcnRh bnQgYmVjYXVzZSByY3VfYmFycmllciAoZS5nLiBiYXRhZHZfc29mdGlmX2ZyZWUgb3IgYmF0YWR2 X2V4aXQpIHdpbGwKbm90IGRldGVjdCB0aGUgaW5uZXIgY2FsbF9yY3UgYXMgcmVsZXZhbnQgZm9y IGl0cyBleGVjdXRpb24uIE90aGVyd2lzZSB0aGlzCmJhcnJpZXIgd2lsbCBtb3N0IGxpa2VseSBi ZSBpbnNlcnRlZCBpbiB0aGUgcXVldWUgYmVmb3JlIHRoZSBjYWxsYmFjayBvZgp0aGUgZmlyc3Qg Y2FsbF9yY3Ugd2FzIGV4ZWN1dGVkLiBUaGUgY2FsbGVyIG9mIHJjdV9iYXJyaWVyIHdpbGwgdGhl cmVmb3JlCmNvbnRpbnVlIHRvIHJ1biBiZWZvcmUgdGhlIGlubmVyIGNhbGxfcmN1IGNhbGxiYWNr IGZpbmlzaGVkLgoKRml4ZXM6IGQ1NmIxNzA1ZTI4YyAoImJhdG1hbi1hZHY6IG5ldHdvcmsgY29k aW5nIC0gZGV0ZWN0IGNvZGluZyBub2RlcyBhbmQgcmVtb3ZlIHRoZXNlIGFmdGVyIHRpbWVvdXQi KQpTaWduZWQtb2ZmLWJ5OiBTdmVuIEVja2VsbWFubiA8c3ZlbkBuYXJmYXRpb24ub3JnPgpTaWdu ZWQtb2ZmLWJ5OiBNYXJlayBMaW5kbmVyIDxtYXJla2xpbmRuZXJAbmVvbWFpbGJveC5jaD4KU2ln bmVkLW9mZi1ieTogQW50b25pbyBRdWFydHVsbGkgPGFAdW5zdGFibGUuY2M+Ci0tLQogbmV0L2Jh dG1hbi1hZHYvbmV0d29yay1jb2RpbmcuYyB8IDE5ICsrKysrKysrLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L25ldC9iYXRtYW4tYWR2L25ldHdvcmstY29kaW5nLmMgYi9uZXQvYmF0bWFuLWFkdi9uZXR3b3Jr LWNvZGluZy5jCmluZGV4IGE0NDkxOTVjLi4yZmJkM2E2IDEwMDY0NAotLS0gYS9uZXQvYmF0bWFu LWFkdi9uZXR3b3JrLWNvZGluZy5jCisrKyBiL25ldC9iYXRtYW4tYWR2L25ldHdvcmstY29kaW5n LmMKQEAgLTE3NSwyOCArMTc1LDI1IEBAIHZvaWQgYmF0YWR2X25jX2luaXRfb3JpZyhzdHJ1Y3Qg YmF0YWR2X29yaWdfbm9kZSAqb3JpZ19ub2RlKQogfQogCiAvKioKLSAqIGJhdGFkdl9uY19ub2Rl X2ZyZWVfcmN1IC0gcmN1IGNhbGxiYWNrIHRvIGZyZWUgYW4gbmMgbm9kZSBhbmQgcmVtb3ZlCi0g KiAgaXRzIHJlZmNvdW50IG9uIHRoZSBvcmlnX25vZGUKLSAqIEByY3U6IHJjdSBwb2ludGVyIG9m IHRoZSBuYyBub2RlCisgKiBiYXRhZHZfbmNfbm9kZV9yZWxlYXNlIC0gcmVsZWFzZSBuY19ub2Rl IGZyb20gbGlzdHMgYW5kIHF1ZXVlIGZvciBmcmVlIGFmdGVyCisgKiAgcmN1IGdyYWNlIHBlcmlv ZAorICogQG5jX25vZGU6IHRoZSBuYyBub2RlIHRvIGZyZWUKICAqLwotc3RhdGljIHZvaWQgYmF0 YWR2X25jX25vZGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpCitzdGF0aWMgdm9pZCBi YXRhZHZfbmNfbm9kZV9yZWxlYXNlKHN0cnVjdCBiYXRhZHZfbmNfbm9kZSAqbmNfbm9kZSkKIHsK LQlzdHJ1Y3QgYmF0YWR2X25jX25vZGUgKm5jX25vZGU7Ci0KLQluY19ub2RlID0gY29udGFpbmVy X29mKHJjdSwgc3RydWN0IGJhdGFkdl9uY19ub2RlLCByY3UpOwogCWJhdGFkdl9vcmlnX25vZGVf ZnJlZV9yZWYobmNfbm9kZS0+b3JpZ19ub2RlKTsKLQlrZnJlZShuY19ub2RlKTsKKwlrZnJlZV9y Y3UobmNfbm9kZSwgcmN1KTsKIH0KIAogLyoqCi0gKiBiYXRhZHZfbmNfbm9kZV9mcmVlX3JlZiAt IGRlY3JlbWVudHMgdGhlIG5jIG5vZGUgcmVmY291bnRlciBhbmQgcG9zc2libHkKLSAqIGZyZWVz IGl0CisgKiBiYXRhZHZfbmNfbm9kZV9mcmVlX3JlZiAtIGRlY3JlbWVudCB0aGUgbmMgbm9kZSBy ZWZjb3VudGVyIGFuZCBwb3NzaWJseQorICogIHJlbGVhc2UgaXQKICAqIEBuY19ub2RlOiB0aGUg bmMgbm9kZSB0byBmcmVlCiAgKi8KIHN0YXRpYyB2b2lkIGJhdGFkdl9uY19ub2RlX2ZyZWVfcmVm KHN0cnVjdCBiYXRhZHZfbmNfbm9kZSAqbmNfbm9kZSkKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRf dGVzdCgmbmNfbm9kZS0+cmVmY291bnQpKQotCQljYWxsX3JjdSgmbmNfbm9kZS0+cmN1LCBiYXRh ZHZfbmNfbm9kZV9mcmVlX3JjdSk7CisJCWJhdGFkdl9uY19ub2RlX3JlbGVhc2UobmNfbm9kZSk7 CiB9CiAKIC8qKgotLSAKMi4xLjAKCgpGcm9tIGFkMDQ5MTg5MTc3M2ZmZTk5MmY3ZWZkNjI1MGIz M2ExNGRiZTdhZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNrZWxtYW5u IDxzdmVuQG5hcmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjoyMSArMDEw MApTdWJqZWN0OiBbUEFUQ0ggMjkvMzldIGJhdG1hbi1hZHY6IERyb3AgaW1tZWRpYXRlIGJhdGFk dl9vcmlnX2lmaW5mbyBmcmVlCiBmdW5jdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgZGVlZDk2NjA1 ZjU2OTVjYjk0NWUwYjNkNzk0Mjk1ODE4NTdhMmI5ZCBdCgpJdCBpcyBub3QgYWxsb3dlZCB0byBm cmVlIHRoZSBtZW1vcnkgb2YgYW4gb2JqZWN0IHdoaWNoIGlzIHBhcnQgb2YgYSBsaXN0CndoaWNo IGlzIHByb3RlY3RlZCBieSByY3UtcmVhZC1zaWRlLWNyaXRpY2FsIHNlY3Rpb25zIHdpdGhvdXQg bWFraW5nIHN1cmUKdGhhdCBubyBvdGhlciBjb250ZXh0IGlzIGFjY2Vzc2luZyB0aGUgb2JqZWN0 IGFueW1vcmUuIFRoaXMgdXN1YWxseSBoYXBwZW5zCmJ5IHJlbW92aW5nIHRoZSByZWZlcmVuY2Vz IHRvIHRoaXMgb2JqZWN0IGFuZCB0aGVuIHdhaXRpbmcgdW50aWwgdGhlIHJjdQpncmFjZSBwZXJp b2QgaXMgb3ZlciBhbmQgbm8gb25lIChhbGxvd2VkbHkpIGFjY2Vzc2VzIGl0IGFueW1vcmUuCgpC dXQgdGhlIF9ub3cgZnVuY3Rpb25zIGlnbm9yZSB0aGlzIGNvbXBsZXRlbHkuIFRoZXkgZnJlZSB0 aGUgb2JqZWN0CmRpcmVjdGx5IGV2ZW4gd2hlbiBhIGRpZmZlcmVudCBjb250ZXh0IHN0aWxsIHRy aWVzIHRvIGFjY2VzcyBpdC4gVGhpcyBoYXMKdG8gYmUgYXZvaWRlZCBhbmQgdGh1cyB0aGVzZSBm dW5jdGlvbnMgbXVzdCBiZSByZW1vdmVkIGFuZCBhbGwgZnVuY3Rpb25zCmhhdmUgdG8gdXNlIGJh dGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZi4KCkZpeGVzOiA3MzUxYTQ4MjJkNDIgKCJiYXRtYW4t YWR2OiBzcGxpdCBvdXQgcm91dGVyIGZyb20gb3JpZ19ub2RlIikKU2lnbmVkLW9mZi1ieTogU3Zl biBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogTWFyZWsgTGlu ZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNpZ25lZC1vZmYtYnk6IEFudG9uaW8g UXVhcnR1bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3Iu YyB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0 b3IuYwppbmRleCBkZmFlOTc0Li44MzI3ZjQ2IDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi9v cmlnaW5hdG9yLmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCkBAIC01MTYsNzYg KzUxNiw3OSBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yY3Uoc3RydWN0 IHJjdV9oZWFkICpyY3UpCiB9CiAKIC8qKgotICogYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVm IC0gZGVjcmVtZW50IHRoZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseSBmcmVlCi0gKiAgdGhlIG9y aWdfaWZpbmZvICh3aXRob3V0IHJjdSBjYWxsYmFjaykKKyAqIGJhdGFkdl9vcmlnX2lmaW5mb19m cmVlX3JlZiAtIGRlY3JlbWVudCB0aGUgcmVmY291bnRlciBhbmQgcG9zc2libHkgcmVsZWFzZQor ICogIHRoZSBvcmlnX2lmaW5mbwogICogQG9yaWdfaWZpbmZvOiB0aGUgb3JpZ19pZmluZm8gb2Jq ZWN0IHRvIHJlbGVhc2UKICAqLwotc3RhdGljIHZvaWQKLWJhdGFkdl9vcmlnX2lmaW5mb19mcmVl X3JlZl9ub3coc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb3JpZ19pZmluZm8pCit2b2lkIGJh dGFkdl9vcmlnX2lmaW5mb19mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X29yaWdfaWZpbmZvICpvcmln X2lmaW5mbykKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmb3JpZ19pZmluZm8tPnJlZmNv dW50KSkKLQkJYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmN1KCZvcmlnX2lmaW5mby0+cmN1KTsK KwkJY2FsbF9yY3UoJm9yaWdfaWZpbmZvLT5yY3UsIGJhdGFkdl9vcmlnX2lmaW5mb19mcmVlX3Jj dSk7CiB9CiAKIC8qKgotICogYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVmIC0gZGVjcmVtZW50 IHRoZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseSBmcmVlCi0gKiAgdGhlIG9yaWdfaWZpbmZvCi0g KiBAb3JpZ19pZmluZm86IHRoZSBvcmlnX2lmaW5mbyBvYmplY3QgdG8gcmVsZWFzZQorICogYmF0 YWR2X29yaWdfbm9kZV9mcmVlX3JjdSAtIGZyZWUgdGhlIG9yaWdfbm9kZQorICogQHJjdTogcmN1 IHBvaW50ZXIgb2YgdGhlIG9yaWdfbm9kZQogICovCi12b2lkIGJhdGFkdl9vcmlnX2lmaW5mb19m cmVlX3JlZihzdHJ1Y3QgYmF0YWR2X29yaWdfaWZpbmZvICpvcmlnX2lmaW5mbykKK3N0YXRpYyB2 b2lkIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpCiB7Ci0J aWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm9yaWdfaWZpbmZvLT5yZWZjb3VudCkpCi0JCWNhbGxf cmN1KCZvcmlnX2lmaW5mby0+cmN1LCBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yY3UpOworCXN0 cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGU7CisKKwlvcmlnX25vZGUgPSBjb250YWlu ZXJfb2YocmN1LCBzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSwgcmN1KTsKKworCWJhdGFkdl9tY2Fz dF9wdXJnZV9vcmlnKG9yaWdfbm9kZSk7CisKKwliYXRhZHZfZnJhZ19wdXJnZV9vcmlnKG9yaWdf bm9kZSwgTlVMTCk7CisKKwlpZiAob3JpZ19ub2RlLT5iYXRfcHJpdi0+YmF0X2FsZ29fb3BzLT5i YXRfb3JpZ19mcmVlKQorCQlvcmlnX25vZGUtPmJhdF9wcml2LT5iYXRfYWxnb19vcHMtPmJhdF9v cmlnX2ZyZWUob3JpZ19ub2RlKTsKKworCWtmcmVlKG9yaWdfbm9kZS0+dHRfYnVmZik7CisJa2Zy ZWUob3JpZ19ub2RlKTsKIH0KIAotc3RhdGljIHZvaWQgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3Jj dShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKKy8qKgorICogYmF0YWR2X29yaWdfbm9kZV9yZWxlYXNl IC0gcmVsZWFzZSBvcmlnX25vZGUgZnJvbSBsaXN0cyBhbmQgcXVldWUgZm9yCisgKiAgZnJlZSBh ZnRlciByY3UgZ3JhY2UgcGVyaW9kCisgKiBAb3JpZ19ub2RlOiB0aGUgb3JpZyBub2RlIHRvIGZy ZWUKKyAqLworc3RhdGljIHZvaWQgYmF0YWR2X29yaWdfbm9kZV9yZWxlYXNlKHN0cnVjdCBiYXRh ZHZfb3JpZ19ub2RlICpvcmlnX25vZGUpCiB7CiAJc3RydWN0IGhsaXN0X25vZGUgKm5vZGVfdG1w OwogCXN0cnVjdCBiYXRhZHZfbmVpZ2hfbm9kZSAqbmVpZ2hfbm9kZTsKLQlzdHJ1Y3QgYmF0YWR2 X29yaWdfbm9kZSAqb3JpZ19ub2RlOwogCXN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm9yaWdf aWZpbmZvOwogCi0Jb3JpZ19ub2RlID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IGJhdGFkdl9v cmlnX25vZGUsIHJjdSk7Ci0KIAlzcGluX2xvY2tfYmgoJm9yaWdfbm9kZS0+bmVpZ2hfbGlzdF9s b2NrKTsKIAogCS8qIGZvciBhbGwgbmVpZ2hib3JzIHRvd2FyZHMgdGhpcyBvcmlnaW5hdG9yIC4u LiAqLwogCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobmVpZ2hfbm9kZSwgbm9kZV90bXAsCiAJ CQkJICAmb3JpZ19ub2RlLT5uZWlnaF9saXN0LCBsaXN0KSB7CiAJCWhsaXN0X2RlbF9yY3UoJm5l aWdoX25vZGUtPmxpc3QpOwotCQliYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZl9ub3cobmVpZ2hf bm9kZSk7CisJCWJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmKG5laWdoX25vZGUpOwogCX0KIAog CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob3JpZ19pZmluZm8sIG5vZGVfdG1wLAogCQkJCSAg Jm9yaWdfbm9kZS0+aWZpbmZvX2xpc3QsIGxpc3QpIHsKIAkJaGxpc3RfZGVsX3JjdSgmb3JpZ19p ZmluZm8tPmxpc3QpOwotCQliYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9yZWZfbm93KG9yaWdfaWZp bmZvKTsKKwkJYmF0YWR2X29yaWdfaWZpbmZvX2ZyZWVfcmVmKG9yaWdfaWZpbmZvKTsKIAl9CiAJ c3Bpbl91bmxvY2tfYmgoJm9yaWdfbm9kZS0+bmVpZ2hfbGlzdF9sb2NrKTsKIAotCWJhdGFkdl9t Y2FzdF9wdXJnZV9vcmlnKG9yaWdfbm9kZSk7Ci0KIAkvKiBGcmVlIG5jX25vZGVzICovCiAJYmF0 YWR2X25jX3B1cmdlX29yaWcob3JpZ19ub2RlLT5iYXRfcHJpdiwgb3JpZ19ub2RlLCBOVUxMKTsK IAotCWJhdGFkdl9mcmFnX3B1cmdlX29yaWcob3JpZ19ub2RlLCBOVUxMKTsKLQotCWlmIChvcmln X25vZGUtPmJhdF9wcml2LT5iYXRfYWxnb19vcHMtPmJhdF9vcmlnX2ZyZWUpCi0JCW9yaWdfbm9k ZS0+YmF0X3ByaXYtPmJhdF9hbGdvX29wcy0+YmF0X29yaWdfZnJlZShvcmlnX25vZGUpOwotCi0J a2ZyZWUob3JpZ19ub2RlLT50dF9idWZmKTsKLQlrZnJlZShvcmlnX25vZGUpOworCWNhbGxfcmN1 KCZvcmlnX25vZGUtPnJjdSwgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JjdSk7CiB9CiAKIC8qKgog ICogYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZiAtIGRlY3JlbWVudCB0aGUgb3JpZyBub2RlIHJl ZmNvdW50ZXIgYW5kIHBvc3NpYmx5Ci0gKiBzY2hlZHVsZSBhbiByY3UgY2FsbGJhY2sgZm9yIGZy ZWVpbmcgaXQKKyAqICByZWxlYXNlIGl0CiAgKiBAb3JpZ19ub2RlOiB0aGUgb3JpZyBub2RlIHRv IGZyZWUKICAqLwogdm9pZCBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmVmKHN0cnVjdCBiYXRhZHZf b3JpZ19ub2RlICpvcmlnX25vZGUpCiB7CiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm9yaWdf bm9kZS0+cmVmY291bnQpKQotCQljYWxsX3JjdSgmb3JpZ19ub2RlLT5yY3UsIGJhdGFkdl9vcmln X25vZGVfZnJlZV9yY3UpOworCQliYXRhZHZfb3JpZ19ub2RlX3JlbGVhc2Uob3JpZ19ub2RlKTsK IH0KIAogLyoqCi0tIAoyLjEuMAoKCkZyb20gNTIwNjdkNjEyMjEzN2E5MWQyNjU4OGMxMDQwMTdl ODI3ZDFmNTkyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3ZlbiBFY2tlbG1hbm4g PHN2ZW5AbmFyZmF0aW9uLm9yZz4KRGF0ZTogVHVlLCA1IEphbiAyMDE2IDEyOjA2OjIyICswMTAw ClN1YmplY3Q6IFtQQVRDSCAzMC8zOV0gYmF0bWFuLWFkdjogRHJvcCBpbW1lZGlhdGUgYmF0YWR2 X25laWdoX25vZGUgZnJlZQogZnVuY3Rpb24KClsgVXBzdHJlYW0gY29tbWl0IDJiYWE3NTNjMjc2 ZjI3ZjhlODQ0NjM3NTYxYWQ1OTc4NjdhYTZmYjYgXQoKSXQgaXMgbm90IGFsbG93ZWQgdG8gZnJl ZSB0aGUgbWVtb3J5IG9mIGFuIG9iamVjdCB3aGljaCBpcyBwYXJ0IG9mIGEgbGlzdAp3aGljaCBp cyBwcm90ZWN0ZWQgYnkgcmN1LXJlYWQtc2lkZS1jcml0aWNhbCBzZWN0aW9ucyB3aXRob3V0IG1h a2luZyBzdXJlCnRoYXQgbm8gb3RoZXIgY29udGV4dCBpcyBhY2Nlc3NpbmcgdGhlIG9iamVjdCBh bnltb3JlLiBUaGlzIHVzdWFsbHkgaGFwcGVucwpieSByZW1vdmluZyB0aGUgcmVmZXJlbmNlcyB0 byB0aGlzIG9iamVjdCBhbmQgdGhlbiB3YWl0aW5nIHVudGlsIHRoZSByY3UKZ3JhY2UgcGVyaW9k IGlzIG92ZXIgYW5kIG5vIG9uZSAoYWxsb3dlZGx5KSBhY2Nlc3NlcyBpdCBhbnltb3JlLgoKQnV0 IHRoZSBfbm93IGZ1bmN0aW9ucyBpZ25vcmUgdGhpcyBjb21wbGV0ZWx5LiBUaGV5IGZyZWUgdGhl IG9iamVjdApkaXJlY3RseSBldmVuIHdoZW4gYSBkaWZmZXJlbnQgY29udGV4dCBzdGlsbCB0cmll cyB0byBhY2Nlc3MgaXQuIFRoaXMgaGFzCnRvIGJlIGF2b2lkZWQgYW5kIHRodXMgdGhlc2UgZnVu Y3Rpb25zIG11c3QgYmUgcmVtb3ZlZCBhbmQgYWxsIGZ1bmN0aW9ucwpoYXZlIHRvIHVzZSBiYXRh ZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZi4KCkZpeGVzOiA4OTY1MjMzMWMwMGYgKCJiYXRtYW4tYWR2 OiBzcGxpdCB0cSBpbmZvcm1hdGlvbiBpbiBuZWlnaF9ub2RlIHN0cnVjdCIpClNpZ25lZC1vZmYt Ynk6IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IE1h cmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgpTaWduZWQtb2ZmLWJ5OiBB bnRvbmlvIFF1YXJ0dWxsaSA8YUB1bnN0YWJsZS5jYz4KLS0tCiBuZXQvYmF0bWFuLWFkdi9vcmln aW5hdG9yLmMgfCAzMyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9u ZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgYi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMK aW5kZXggODMyN2Y0Ni4uYzgxNmM2NiAxMDA2NDQKLS0tIGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2lu YXRvci5jCisrKyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwpAQCAtMjEwLDIwICsyMTAs OCBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hl YWQgKnJjdSkKIH0KIAogLyoqCi0gKiBiYXRhZHZfbmVpZ2hfbm9kZV9mcmVlX3JlZl9ub3cgLSBk ZWNyZW1lbnQgdGhlIG5laWdoYm9ycyByZWZjb3VudGVyCi0gKiAgYW5kIHBvc3NpYmx5IGZyZWUg aXQgKHdpdGhvdXQgcmN1IGNhbGxiYWNrKQotICogQG5laWdoX25vZGU6IG5laWdoIG5laWdoYm9y IHRvIGZyZWUKLSAqLwotc3RhdGljIHZvaWQKLWJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmX25v dyhzdHJ1Y3QgYmF0YWR2X25laWdoX25vZGUgKm5laWdoX25vZGUpCi17Ci0JaWYgKGF0b21pY19k ZWNfYW5kX3Rlc3QoJm5laWdoX25vZGUtPnJlZmNvdW50KSkKLQkJYmF0YWR2X25laWdoX25vZGVf ZnJlZV9yY3UoJm5laWdoX25vZGUtPnJjdSk7Ci19Ci0KLS8qKgogICogYmF0YWR2X25laWdoX25v ZGVfZnJlZV9yZWYgLSBkZWNyZW1lbnQgdGhlIG5laWdoYm9ycyByZWZjb3VudGVyCi0gKiAgYW5k IHBvc3NpYmx5IGZyZWUgaXQKKyAqICBhbmQgcG9zc2libHkgcmVsZWFzZSBpdAogICogQG5laWdo X25vZGU6IG5laWdoIG5laWdoYm9yIHRvIGZyZWUKICAqLwogdm9pZCBiYXRhZHZfbmVpZ2hfbm9k ZV9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X25laWdoX25vZGUgKm5laWdoX25vZGUpCkBAIC00OTUs MjQgKzQ4MywyMyBAQCBiYXRhZHZfbmVpZ2hfbm9kZV9nZXQoY29uc3Qgc3RydWN0IGJhdGFkdl9v cmlnX25vZGUgKm9yaWdfbm9kZSwKIH0KIAogLyoqCi0gKiBiYXRhZHZfb3JpZ19pZmluZm9fZnJl ZV9yY3UgLSBmcmVlIHRoZSBvcmlnX2lmaW5mbyBvYmplY3QKLSAqIEByY3U6IHJjdSBwb2ludGVy IG9mIHRoZSBvcmlnX2lmaW5mbyBvYmplY3QKKyAqIGJhdGFkdl9vcmlnX2lmaW5mb19yZWxlYXNl IC0gcmVsZWFzZSBvcmlnX2lmaW5mbyBmcm9tIGxpc3RzIGFuZCBxdWV1ZSBmb3IKKyAqICBmcmVl IGFmdGVyIHJjdSBncmFjZSBwZXJpb2QKKyAqIEBvcmlnX2lmaW5mbzogdGhlIG9yaWdfaWZpbmZv IG9iamVjdCB0byByZWxlYXNlCiAgKi8KLXN0YXRpYyB2b2lkIGJhdGFkdl9vcmlnX2lmaW5mb19m cmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKK3N0YXRpYyB2b2lkIGJhdGFkdl9vcmlnX2lm aW5mb19yZWxlYXNlKHN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvKQogewot CXN0cnVjdCBiYXRhZHZfb3JpZ19pZmluZm8gKm9yaWdfaWZpbmZvOwogCXN0cnVjdCBiYXRhZHZf bmVpZ2hfbm9kZSAqcm91dGVyOwogCi0Jb3JpZ19pZmluZm8gPSBjb250YWluZXJfb2YocmN1LCBz dHJ1Y3QgYmF0YWR2X29yaWdfaWZpbmZvLCByY3UpOwotCiAJaWYgKG9yaWdfaWZpbmZvLT5pZl9v dXRnb2luZyAhPSBCQVRBRFZfSUZfREVGQVVMVCkKLQkJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZl9u b3cob3JpZ19pZmluZm8tPmlmX291dGdvaW5nKTsKKwkJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZihv cmlnX2lmaW5mby0+aWZfb3V0Z29pbmcpOwogCiAJLyogdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVu Y2UgdG8gdGhpcyBvYmplY3QgKi8KIAlyb3V0ZXIgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVk KG9yaWdfaWZpbmZvLT5yb3V0ZXIsIHRydWUpOwogCWlmIChyb3V0ZXIpCi0JCWJhdGFkdl9uZWln aF9ub2RlX2ZyZWVfcmVmX25vdyhyb3V0ZXIpOwotCWtmcmVlKG9yaWdfaWZpbmZvKTsKKwkJYmF0 YWR2X25laWdoX25vZGVfZnJlZV9yZWYocm91dGVyKTsKKworCWtmcmVlX3JjdShvcmlnX2lmaW5m bywgcmN1KTsKIH0KIAogLyoqCkBAIC01MjMsNyArNTEwLDcgQEAgc3RhdGljIHZvaWQgYmF0YWR2 X29yaWdfaWZpbmZvX2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQogdm9pZCBiYXRhZHZf b3JpZ19pZmluZm9fZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9vcmlnX2lmaW5mbyAqb3JpZ19pZmlu Zm8pCiB7CiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm9yaWdfaWZpbmZvLT5yZWZjb3VudCkp Ci0JCWNhbGxfcmN1KCZvcmlnX2lmaW5mby0+cmN1LCBiYXRhZHZfb3JpZ19pZmluZm9fZnJlZV9y Y3UpOworCQliYXRhZHZfb3JpZ19pZmluZm9fcmVsZWFzZShvcmlnX2lmaW5mbyk7CiB9CiAKIC8q KgotLSAKMi4xLjAKCgpGcm9tIDY2Mzc1NzQzNWQ2OWVjYjE4ZDQzMDE0ZWMzM2Q0YTRhNTNkMWNj Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNrZWxtYW5uIDxzdmVuQG5h cmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjoyNCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMzEvMzldIGJhdG1hbi1hZHY6IERyb3AgaW1tZWRpYXRlIG5laWdoX2lmaW5mbyBm cmVlIGZ1bmN0aW9uCgpbIFVwc3RyZWFtIGNvbW1pdCBhZTNlMWUzNmUzY2I2YzY4NmE3YTI3MjVh ZjIwY2E4NmFhNDZkNjJhIF0KCkl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgdGhlIG1lbW9yeSBv ZiBhbiBvYmplY3Qgd2hpY2ggaXMgcGFydCBvZiBhIGxpc3QKd2hpY2ggaXMgcHJvdGVjdGVkIGJ5 IHJjdS1yZWFkLXNpZGUtY3JpdGljYWwgc2VjdGlvbnMgd2l0aG91dCBtYWtpbmcgc3VyZQp0aGF0 IG5vIG90aGVyIGNvbnRleHQgaXMgYWNjZXNzaW5nIHRoZSBvYmplY3QgYW55bW9yZS4gVGhpcyB1 c3VhbGx5IGhhcHBlbnMKYnkgcmVtb3ZpbmcgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBvYmplY3Qg YW5kIHRoZW4gd2FpdGluZyB1bnRpbCB0aGUgcmN1CmdyYWNlIHBlcmlvZCBpcyBvdmVyIGFuZCBu byBvbmUgKGFsbG93ZWRseSkgYWNjZXNzZXMgaXQgYW55bW9yZS4KCkJ1dCB0aGUgX25vdyBmdW5j dGlvbnMgaWdub3JlIHRoaXMgY29tcGxldGVseS4gVGhleSBmcmVlIHRoZSBvYmplY3QKZGlyZWN0 bHkgZXZlbiB3aGVuIGEgZGlmZmVyZW50IGNvbnRleHQgc3RpbGwgdHJpZXMgdG8gYWNjZXNzIGl0 LiBUaGlzIGhhcwp0byBiZSBhdm9pZGVkIGFuZCB0aHVzIHRoZXNlIGZ1bmN0aW9ucyBtdXN0IGJl IHJlbW92ZWQgYW5kIGFsbCBmdW5jdGlvbnMKaGF2ZSB0byB1c2UgYmF0YWR2X25laWdoX2lmaW5m b19mcmVlX3JlZi4KCkZpeGVzOiA4OTY1MjMzMWMwMGYgKCJiYXRtYW4tYWR2OiBzcGxpdCB0cSBp bmZvcm1hdGlvbiBpbiBuZWlnaF9ub2RlIHN0cnVjdCIpClNpZ25lZC1vZmYtYnk6IFN2ZW4gRWNr ZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IE1hcmVrIExpbmRuZXIg PG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIFF1YXJ0 dWxsaSA8YUB1bnN0YWJsZS5jYz4KLS0tCiBuZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgfCAz NCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAg aW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1h ZHYvb3JpZ2luYXRvci5jIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IGM4MTZj NjYuLjIzZGI5NmYgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYworKysg Yi9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMKQEAgLTE1MCw0MiArMTUwLDI4IEBAIGVycjoK IH0KIAogLyoqCi0gKiBiYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmN1IC0gZnJlZSB0aGUgbmVp Z2hfaWZpbmZvIG9iamVjdAotICogQHJjdTogcmN1IHBvaW50ZXIgb2YgdGhlIG5laWdoX2lmaW5m byBvYmplY3QKLSAqLwotc3RhdGljIHZvaWQgYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JjdShz dHJ1Y3QgcmN1X2hlYWQgKnJjdSkKLXsKLQlzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVp Z2hfaWZpbmZvOwotCi0JbmVpZ2hfaWZpbmZvID0gY29udGFpbmVyX29mKHJjdSwgc3RydWN0IGJh dGFkdl9uZWlnaF9pZmluZm8sIHJjdSk7Ci0KLQlpZiAobmVpZ2hfaWZpbmZvLT5pZl9vdXRnb2lu ZyAhPSBCQVRBRFZfSUZfREVGQVVMVCkKLQkJYmF0YWR2X2hhcmRpZl9mcmVlX3JlZl9ub3cobmVp Z2hfaWZpbmZvLT5pZl9vdXRnb2luZyk7Ci0KLQlrZnJlZShuZWlnaF9pZmluZm8pOwotfQotCi0v KioKLSAqIGJhdGFkdl9uZWlnaF9pZmluZm9fZnJlZV9ub3cgLSBkZWNyZW1lbnQgdGhlIHJlZmNv dW50ZXIgYW5kIHBvc3NpYmx5IGZyZWUKLSAqICB0aGUgbmVpZ2hfaWZpbmZvICh3aXRob3V0IHJj dSBjYWxsYmFjaykKKyAqIGJhdGFkdl9uZWlnaF9pZmluZm9fcmVsZWFzZSAtIHJlbGVhc2UgbmVp Z2hfaWZpbmZvIGZyb20gbGlzdHMgYW5kIHF1ZXVlIGZvcgorICogIGZyZWUgYWZ0ZXIgcmN1IGdy YWNlIHBlcmlvZAogICogQG5laWdoX2lmaW5mbzogdGhlIG5laWdoX2lmaW5mbyBvYmplY3QgdG8g cmVsZWFzZQogICovCiBzdGF0aWMgdm9pZAotYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JlZl9u b3coc3RydWN0IGJhdGFkdl9uZWlnaF9pZmluZm8gKm5laWdoX2lmaW5mbykKK2JhdGFkdl9uZWln aF9pZmluZm9fcmVsZWFzZShzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hfaWZpbmZv KQogewotCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZuZWlnaF9pZmluZm8tPnJlZmNvdW50KSkK LQkJYmF0YWR2X25laWdoX2lmaW5mb19mcmVlX3JjdSgmbmVpZ2hfaWZpbmZvLT5yY3UpOworCWlm IChuZWlnaF9pZmluZm8tPmlmX291dGdvaW5nICE9IEJBVEFEVl9JRl9ERUZBVUxUKQorCQliYXRh ZHZfaGFyZGlmX2ZyZWVfcmVmKG5laWdoX2lmaW5mby0+aWZfb3V0Z29pbmcpOworCisJa2ZyZWVf cmN1KG5laWdoX2lmaW5mbywgcmN1KTsKIH0KIAogLyoqCi0gKiBiYXRhZHZfbmVpZ2hfaWZpbmZv X2ZyZWVfcmVmIC0gZGVjcmVtZW50IHRoZSByZWZjb3VudGVyIGFuZCBwb3NzaWJseSBmcmVlCisg KiBiYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmIC0gZGVjcmVtZW50IHRoZSByZWZjb3VudGVy IGFuZCBwb3NzaWJseSByZWxlYXNlCiAgKiAgdGhlIG5laWdoX2lmaW5mbwogICogQG5laWdoX2lm aW5mbzogdGhlIG5laWdoX2lmaW5mbyBvYmplY3QgdG8gcmVsZWFzZQogICovCiB2b2lkIGJhdGFk dl9uZWlnaF9pZmluZm9fZnJlZV9yZWYoc3RydWN0IGJhdGFkdl9uZWlnaF9pZmluZm8gKm5laWdo X2lmaW5mbykKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbmVpZ2hfaWZpbmZvLT5yZWZj b3VudCkpCi0JCWNhbGxfcmN1KCZuZWlnaF9pZmluZm8tPnJjdSwgYmF0YWR2X25laWdoX2lmaW5m b19mcmVlX3JjdSk7CisJCWJhdGFkdl9uZWlnaF9pZmluZm9fcmVsZWFzZShuZWlnaF9pZmluZm8p OwogfQogCiAvKioKQEAgLTIwMiw3ICsxODgsNyBAQCBzdGF0aWMgdm9pZCBiYXRhZHZfbmVpZ2hf bm9kZV9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIAogCWhsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUobmVpZ2hfaWZpbmZvLCBub2RlX3RtcCwKIAkJCQkgICZuZWlnaF9ub2RlLT5pZmlu Zm9fbGlzdCwgbGlzdCkgewotCQliYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmX25vdyhuZWln aF9pZmluZm8pOworCQliYXRhZHZfbmVpZ2hfaWZpbmZvX2ZyZWVfcmVmKG5laWdoX2lmaW5mbyk7 CiAJfQogCWJhdGFkdl9oYXJkaWZfZnJlZV9yZWZfbm93KG5laWdoX25vZGUtPmlmX2luY29taW5n KTsKIAotLSAKMi4xLjAKCgpGcm9tIGNjOWYyNTkzMjA1Y2Y2NTYzZDFiMjE0NTgxYWI0YmYxZjA5 MTliYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNrZWxtYW5uIDxzdmVu QG5hcmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjoyNSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMzIvMzldIGJhdG1hbi1hZHY6IERyb3AgaW1tZWRpYXRlIGJhdGFkdl9oYXJk X2lmYWNlIGZyZWUKIGZ1bmN0aW9uCgpbIFVwc3RyZWFtIGNvbW1pdCBiNGQ5MjJjZmM5YzA4MzE4 ZWViNzdkNTNiNzYzMzc0MGU2YjBlZmIwIF0KCkl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgdGhl IG1lbW9yeSBvZiBhbiBvYmplY3Qgd2hpY2ggaXMgcGFydCBvZiBhIGxpc3QKd2hpY2ggaXMgcHJv dGVjdGVkIGJ5IHJjdS1yZWFkLXNpZGUtY3JpdGljYWwgc2VjdGlvbnMgd2l0aG91dCBtYWtpbmcg c3VyZQp0aGF0IG5vIG90aGVyIGNvbnRleHQgaXMgYWNjZXNzaW5nIHRoZSBvYmplY3QgYW55bW9y ZS4gVGhpcyB1c3VhbGx5IGhhcHBlbnMKYnkgcmVtb3ZpbmcgdGhlIHJlZmVyZW5jZXMgdG8gdGhp cyBvYmplY3QgYW5kIHRoZW4gd2FpdGluZyB1bnRpbCB0aGUgcmN1CmdyYWNlIHBlcmlvZCBpcyBv dmVyIGFuZCBubyBvbmUgKGFsbG93ZWRseSkgYWNjZXNzZXMgaXQgYW55bW9yZS4KCkJ1dCB0aGUg X25vdyBmdW5jdGlvbnMgaWdub3JlIHRoaXMgY29tcGxldGVseS4gVGhleSBmcmVlIHRoZSBvYmpl Y3QKZGlyZWN0bHkgZXZlbiB3aGVuIGEgZGlmZmVyZW50IGNvbnRleHQgc3RpbGwgdHJpZXMgdG8g YWNjZXNzIGl0LiBUaGlzIGhhcwp0byBiZSBhdm9pZGVkIGFuZCB0aHVzIHRoZXNlIGZ1bmN0aW9u cyBtdXN0IGJlIHJlbW92ZWQgYW5kIGFsbCBmdW5jdGlvbnMKaGF2ZSB0byB1c2UgYmF0YWR2X2hh cmRpZl9mcmVlX3JlZi4KCkZpeGVzOiA4OTY1MjMzMWMwMGYgKCJiYXRtYW4tYWR2OiBzcGxpdCB0 cSBpbmZvcm1hdGlvbiBpbiBuZWlnaF9ub2RlIHN0cnVjdCIpClNpZ25lZC1vZmYtYnk6IFN2ZW4g RWNrZWxtYW5uIDxzdmVuQG5hcmZhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IE1hcmVrIExpbmRu ZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIFF1 YXJ0dWxsaSA8YUB1bnN0YWJsZS5jYz4KLS0tCiBuZXQvYmF0bWFuLWFkdi9oYXJkLWludGVyZmFj ZS5oIHwgMTIgLS0tLS0tLS0tLS0tCiBuZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMgICAgIHwg MTYgKysrKysrKy0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L2hhcmQtaW50ZXJmYWNl LmggYi9uZXQvYmF0bWFuLWFkdi9oYXJkLWludGVyZmFjZS5oCmluZGV4IDE5MThjZDUuLmI2YmZm OWMgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L2hhcmQtaW50ZXJmYWNlLmgKKysrIGIvbmV0 L2JhdG1hbi1hZHYvaGFyZC1pbnRlcmZhY2UuaApAQCAtNjQsMTggKzY0LDYgQEAgYmF0YWR2X2hh cmRpZl9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X2hhcmRfaWZhY2UgKmhhcmRfaWZhY2UpCiAJCWNh bGxfcmN1KCZoYXJkX2lmYWNlLT5yY3UsIGJhdGFkdl9oYXJkaWZfZnJlZV9yY3UpOwogfQogCi0v KioKLSAqIGJhdGFkdl9oYXJkaWZfZnJlZV9yZWZfbm93IC0gZGVjcmVtZW50IHRoZSBoYXJkIGlu dGVyZmFjZSByZWZjb3VudGVyIGFuZAotICogIHBvc3NpYmx5IGZyZWUgaXQgKHdpdGhvdXQgcmN1 IGNhbGxiYWNrKQotICogQGhhcmRfaWZhY2U6IHRoZSBoYXJkIGludGVyZmFjZSB0byBmcmVlCi0g Ki8KLXN0YXRpYyBpbmxpbmUgdm9pZAotYmF0YWR2X2hhcmRpZl9mcmVlX3JlZl9ub3coc3RydWN0 IGJhdGFkdl9oYXJkX2lmYWNlICpoYXJkX2lmYWNlKQotewotCWlmIChhdG9taWNfZGVjX2FuZF90 ZXN0KCZoYXJkX2lmYWNlLT5yZWZjb3VudCkpCi0JCWJhdGFkdl9oYXJkaWZfZnJlZV9yY3UoJmhh cmRfaWZhY2UtPnJjdSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgc3RydWN0IGJhdGFkdl9oYXJkX2lm YWNlICoKIGJhdGFkdl9wcmltYXJ5X2lmX2dldF9zZWxlY3RlZChzdHJ1Y3QgYmF0YWR2X3ByaXYg KmJhdF9wcml2KQogewpkaWZmIC0tZ2l0IGEvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jIGIv bmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCmluZGV4IDIzZGI5NmYuLjM2ZGZhM2IgMTAwNjQ0 Ci0tLSBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYworKysgYi9uZXQvYmF0bWFuLWFkdi9v cmlnaW5hdG9yLmMKQEAgLTE3NSwyNCArMTc1LDIyIEBAIHZvaWQgYmF0YWR2X25laWdoX2lmaW5m b19mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X25laWdoX2lmaW5mbyAqbmVpZ2hfaWZpbmZvKQogfQog CiAvKioKLSAqIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmN1IC0gZnJlZSB0aGUgbmVpZ2hfbm9k ZQotICogQHJjdTogcmN1IHBvaW50ZXIgb2YgdGhlIG5laWdoX25vZGUKKyAqIGJhdGFkdl9uZWln aF9ub2RlX3JlbGVhc2UgLSByZWxlYXNlIG5laWdoX25vZGUgZnJvbSBsaXN0cyBhbmQgcXVldWUg Zm9yCisgKiAgZnJlZSBhZnRlciByY3UgZ3JhY2UgcGVyaW9kCisgKiBAbmVpZ2hfbm9kZTogbmVp Z2ggbmVpZ2hib3IgdG8gZnJlZQogICovCi1zdGF0aWMgdm9pZCBiYXRhZHZfbmVpZ2hfbm9kZV9m cmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKK3N0YXRpYyB2b2lkIGJhdGFkdl9uZWlnaF9u b2RlX3JlbGVhc2Uoc3RydWN0IGJhdGFkdl9uZWlnaF9ub2RlICpuZWlnaF9ub2RlKQogewogCXN0 cnVjdCBobGlzdF9ub2RlICpub2RlX3RtcDsKLQlzdHJ1Y3QgYmF0YWR2X25laWdoX25vZGUgKm5l aWdoX25vZGU7CiAJc3RydWN0IGJhdGFkdl9uZWlnaF9pZmluZm8gKm5laWdoX2lmaW5mbzsKIAot CW5laWdoX25vZGUgPSBjb250YWluZXJfb2YocmN1LCBzdHJ1Y3QgYmF0YWR2X25laWdoX25vZGUs IHJjdSk7Ci0KIAlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5laWdoX2lmaW5mbywgbm9kZV90 bXAsCiAJCQkJICAmbmVpZ2hfbm9kZS0+aWZpbmZvX2xpc3QsIGxpc3QpIHsKIAkJYmF0YWR2X25l aWdoX2lmaW5mb19mcmVlX3JlZihuZWlnaF9pZmluZm8pOwogCX0KLQliYXRhZHZfaGFyZGlmX2Zy ZWVfcmVmX25vdyhuZWlnaF9ub2RlLT5pZl9pbmNvbWluZyk7CisJYmF0YWR2X2hhcmRpZl9mcmVl X3JlZihuZWlnaF9ub2RlLT5pZl9pbmNvbWluZyk7CiAKLQlrZnJlZShuZWlnaF9ub2RlKTsKKwlr ZnJlZV9yY3UobmVpZ2hfbm9kZSwgcmN1KTsKIH0KIAogLyoqCkBAIC0yMDMsNyArMjAxLDcgQEAg c3RhdGljIHZvaWQgYmF0YWR2X25laWdoX25vZGVfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpy Y3UpCiB2b2lkIGJhdGFkdl9uZWlnaF9ub2RlX2ZyZWVfcmVmKHN0cnVjdCBiYXRhZHZfbmVpZ2hf bm9kZSAqbmVpZ2hfbm9kZSkKIHsKIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmbmVpZ2hfbm9k ZS0+cmVmY291bnQpKQotCQljYWxsX3JjdSgmbmVpZ2hfbm9kZS0+cmN1LCBiYXRhZHZfbmVpZ2hf bm9kZV9mcmVlX3JjdSk7CisJCWJhdGFkdl9uZWlnaF9ub2RlX3JlbGVhc2UobmVpZ2hfbm9kZSk7 CiB9CiAKIC8qKgotLSAKMi4xLjAKCgpGcm9tIDc1NWZjNWU1MWYxZWRjZDE0ZmJkOWFkZDk1NjRh MDQzYmUzZmJiZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN2ZW4gRWNrZWxtYW5u IDxzdmVuQG5hcmZhdGlvbi5vcmc+CkRhdGU6IFR1ZSwgNSBKYW4gMjAxNiAxMjowNjoyMCArMDEw MApTdWJqZWN0OiBbUEFUQ0ggMzMvMzldIGJhdG1hbi1hZHY6IERyb3AgaW1tZWRpYXRlIG9yaWdf bm9kZSBmcmVlIGZ1bmN0aW9uCgpbIFVwc3RyZWFtIGNvbW1pdCA0MmVmZjZhNjE3ZTIzYjY5MWY4 ZTQ0NjdmNDY4N2VkNzI0NWE5MmRiIF0KCkl0IGlzIG5vdCBhbGxvd2VkIHRvIGZyZWUgdGhlIG1l bW9yeSBvZiBhbiBvYmplY3Qgd2hpY2ggaXMgcGFydCBvZiBhIGxpc3QKd2hpY2ggaXMgcHJvdGVj dGVkIGJ5IHJjdS1yZWFkLXNpZGUtY3JpdGljYWwgc2VjdGlvbnMgd2l0aG91dCBtYWtpbmcgc3Vy ZQp0aGF0IG5vIG90aGVyIGNvbnRleHQgaXMgYWNjZXNzaW5nIHRoZSBvYmplY3QgYW55bW9yZS4g VGhpcyB1c3VhbGx5IGhhcHBlbnMKYnkgcmVtb3ZpbmcgdGhlIHJlZmVyZW5jZXMgdG8gdGhpcyBv YmplY3QgYW5kIHRoZW4gd2FpdGluZyB1bnRpbCB0aGUgcmN1CmdyYWNlIHBlcmlvZCBpcyBvdmVy IGFuZCBubyBvbmUgKGFsbG93ZWRseSkgYWNjZXNzZXMgaXQgYW55bW9yZS4KCkJ1dCB0aGUgX25v dyBmdW5jdGlvbnMgaWdub3JlIHRoaXMgY29tcGxldGVseS4gVGhleSBmcmVlIHRoZSBvYmplY3QK ZGlyZWN0bHkgZXZlbiB3aGVuIGEgZGlmZmVyZW50IGNvbnRleHQgc3RpbGwgdHJpZXMgdG8gYWNj ZXNzIGl0LiBUaGlzIGhhcwp0byBiZSBhdm9pZGVkIGFuZCB0aHVzIHRoZXNlIGZ1bmN0aW9ucyBt dXN0IGJlIHJlbW92ZWQgYW5kIGFsbCBmdW5jdGlvbnMKaGF2ZSB0byB1c2UgYmF0YWR2X29yaWdf bm9kZV9mcmVlX3JlZi4KCkZpeGVzOiA3MjgyMjIyNWJkNDEgKCJiYXRtYW4tYWR2OiBGaXggcmN1 X2JhcnJpZXIoKSBtaXNzIGR1ZSB0byBkb3VibGUgY2FsbF9yY3UoKSBpbiBUVCBjb2RlIikKU2ln bmVkLW9mZi1ieTogU3ZlbiBFY2tlbG1hbm4gPHN2ZW5AbmFyZmF0aW9uLm9yZz4KU2lnbmVkLW9m Zi1ieTogTWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+ClNpZ25lZC1v ZmYtYnk6IEFudG9uaW8gUXVhcnR1bGxpIDxhQHVuc3RhYmxlLmNjPgotLS0KIG5ldC9iYXRtYW4t YWR2L29yaWdpbmF0b3IuYyAgICAgICAgfCAxMSAtLS0tLS0tLS0tLQogbmV0L2JhdG1hbi1hZHYv b3JpZ2luYXRvci5oICAgICAgICB8ICAxIC0KIG5ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRh YmxlLmMgfCAyOCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9iYXRt YW4tYWR2L29yaWdpbmF0b3IuYyBiL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuYwppbmRleCAz NmRmYTNiLi43N2VhMWQ0IDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi9vcmlnaW5hdG9yLmMK KysrIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5jCkBAIC01NjIsMTcgKzU2Miw2IEBAIHZv aWQgYmF0YWR2X29yaWdfbm9kZV9mcmVlX3JlZihzdHJ1Y3QgYmF0YWR2X29yaWdfbm9kZSAqb3Jp Z19ub2RlKQogCQliYXRhZHZfb3JpZ19ub2RlX3JlbGVhc2Uob3JpZ19ub2RlKTsKIH0KIAotLyoq Ci0gKiBiYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmVmX25vdyAtIGRlY3JlbWVudCB0aGUgb3JpZyBu b2RlIHJlZmNvdW50ZXIgYW5kCi0gKiBwb3NzaWJseSBmcmVlIGl0ICh3aXRob3V0IHJjdSBjYWxs YmFjaykKLSAqIEBvcmlnX25vZGU6IHRoZSBvcmlnIG5vZGUgdG8gZnJlZQotICovCi12b2lkIGJh dGFkdl9vcmlnX25vZGVfZnJlZV9yZWZfbm93KHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmln X25vZGUpCi17Ci0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJm9yaWdfbm9kZS0+cmVmY291bnQp KQotCQliYXRhZHZfb3JpZ19ub2RlX2ZyZWVfcmN1KCZvcmlnX25vZGUtPnJjdSk7Ci19Ci0KIHZv aWQgYmF0YWR2X29yaWdpbmF0b3JfZnJlZShzdHJ1Y3QgYmF0YWR2X3ByaXYgKmJhdF9wcml2KQog ewogCXN0cnVjdCBiYXRhZHZfaGFzaHRhYmxlICpoYXNoID0gYmF0X3ByaXYtPm9yaWdfaGFzaDsK ZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L29yaWdpbmF0b3IuaCBiL25ldC9iYXRtYW4tYWR2 L29yaWdpbmF0b3IuaAppbmRleCBhYTRhNDM2Li4yOGI3NTFhIDEwMDY0NAotLS0gYS9uZXQvYmF0 bWFuLWFkdi9vcmlnaW5hdG9yLmgKKysrIGIvbmV0L2JhdG1hbi1hZHYvb3JpZ2luYXRvci5oCkBA IC0yNSw3ICsyNSw2IEBAIGludCBiYXRhZHZfb3JpZ2luYXRvcl9pbml0KHN0cnVjdCBiYXRhZHZf cHJpdiAqYmF0X3ByaXYpOwogdm9pZCBiYXRhZHZfb3JpZ2luYXRvcl9mcmVlKHN0cnVjdCBiYXRh ZHZfcHJpdiAqYmF0X3ByaXYpOwogdm9pZCBiYXRhZHZfcHVyZ2Vfb3JpZ19yZWYoc3RydWN0IGJh dGFkdl9wcml2ICpiYXRfcHJpdik7CiB2b2lkIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yZWYoc3Ry dWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSk7Ci12b2lkIGJhdGFkdl9vcmlnX25vZGVf ZnJlZV9yZWZfbm93KHN0cnVjdCBiYXRhZHZfb3JpZ19ub2RlICpvcmlnX25vZGUpOwogc3RydWN0 IGJhdGFkdl9vcmlnX25vZGUgKmJhdGFkdl9vcmlnX25vZGVfbmV3KHN0cnVjdCBiYXRhZHZfcHJp diAqYmF0X3ByaXYsCiAJCQkJCSAgICAgIGNvbnN0IHVpbnQ4X3QgKmFkZHIpOwogc3RydWN0IGJh dGFkdl9uZWlnaF9ub2RlICoKZGlmZiAtLWdpdCBhL25ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9u LXRhYmxlLmMgYi9uZXQvYmF0bWFuLWFkdi90cmFuc2xhdGlvbi10YWJsZS5jCmluZGV4IDRmMmE5 ZDIuLmRkZDYyYzkgMTAwNjQ0Ci0tLSBhL25ldC9iYXRtYW4tYWR2L3RyYW5zbGF0aW9uLXRhYmxl LmMKKysrIGIvbmV0L2JhdG1hbi1hZHYvdHJhbnNsYXRpb24tdGFibGUuYwpAQCAtMjE5LDIwICsy MTksNiBAQCBpbnQgYmF0YWR2X3R0X2dsb2JhbF9oYXNoX2NvdW50KHN0cnVjdCBiYXRhZHZfcHJp diAqYmF0X3ByaXYsCiAJcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgdm9pZCBiYXRhZHZfdHRf b3JpZ19saXN0X2VudHJ5X2ZyZWVfcmN1KHN0cnVjdCByY3VfaGVhZCAqcmN1KQotewotCXN0cnVj dCBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5ICpvcmlnX2VudHJ5OwotCi0Jb3JpZ19lbnRyeSA9 IGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5LCByY3Up OwotCi0JLyogV2UgYXJlIGluIGFuIHJjdSBjYWxsYmFjayBoZXJlLCB0aGVyZWZvcmUgd2UgY2Fu bm90IHVzZQotCSAqIGJhdGFkdl9vcmlnX25vZGVfZnJlZV9yZWYoKSBhbmQgaXRzIGNhbGxfcmN1 KCk6Ci0JICogQW4gcmN1X2JhcnJpZXIoKSB3b3VsZG4ndCB3YWl0IGZvciB0aGF0IHRvIGZpbmlz aAotCSAqLwotCWJhdGFkdl9vcmlnX25vZGVfZnJlZV9yZWZfbm93KG9yaWdfZW50cnktPm9yaWdf bm9kZSk7Ci0Ja2ZyZWUob3JpZ19lbnRyeSk7Ci19Ci0KIC8qKgogICogYmF0YWR2X3R0X2xvY2Fs X3NpemVfbW9kIC0gY2hhbmdlIHRoZSBzaXplIGJ5IHYgb2YgdGhlIGxvY2FsIHRhYmxlIGlkZW50 aWZpZWQKICAqICBieSB2aWQKQEAgLTMyOCwxMyArMzE0LDI1IEBAIHN0YXRpYyB2b2lkIGJhdGFk dl90dF9nbG9iYWxfc2l6ZV9kZWMoc3RydWN0IGJhdGFkdl9vcmlnX25vZGUgKm9yaWdfbm9kZSwK IAliYXRhZHZfdHRfZ2xvYmFsX3NpemVfbW9kKG9yaWdfbm9kZSwgdmlkLCAtMSk7CiB9CiAKKy8q KgorICogYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeV9yZWxlYXNlIC0gcmVsZWFzZSB0dCBvcmln IGVudHJ5IGZyb20gbGlzdHMgYW5kCisgKiAgcXVldWUgZm9yIGZyZWUgYWZ0ZXIgcmN1IGdyYWNl IHBlcmlvZAorICogQG9yaWdfZW50cnk6IHR0IG9yaWcgZW50cnkgdG8gYmUgZnJlZSdkCisgKi8K K3N0YXRpYyB2b2lkCitiYXRhZHZfdHRfb3JpZ19saXN0X2VudHJ5X3JlbGVhc2Uoc3RydWN0IGJh dGFkdl90dF9vcmlnX2xpc3RfZW50cnkgKm9yaWdfZW50cnkpCit7CisJYmF0YWR2X29yaWdfbm9k ZV9mcmVlX3JlZihvcmlnX2VudHJ5LT5vcmlnX25vZGUpOworCWtmcmVlX3JjdShvcmlnX2VudHJ5 LCByY3UpOworfQorCiBzdGF0aWMgdm9pZAogYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeV9mcmVl X3JlZihzdHJ1Y3QgYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeSAqb3JpZ19lbnRyeSkKIHsKIAlp ZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJm9yaWdfZW50cnktPnJlZmNvdW50KSkKIAkJcmV0dXJu OwogCi0JY2FsbF9yY3UoJm9yaWdfZW50cnktPnJjdSwgYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRy eV9mcmVlX3JjdSk7CisJYmF0YWR2X3R0X29yaWdfbGlzdF9lbnRyeV9yZWxlYXNlKG9yaWdfZW50 cnkpOwogfQogCiAvKioKLS0gCjIuMS4wCgoKRnJvbSBiNmUyZDJjYmQ2NWUxY2YzZWUzMDgwYjgw ZGRhYTk0MGRmYjZlNjM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJZG8gU2NoaW1t ZWwgPGlkb3NjaEBtZWxsYW5veC5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTc6MzA6MjIg KzAyMDAKU3ViamVjdDogW1BBVENIIDM0LzM5XSB0ZWFtOiBSZXBsYWNlIHJjdV9yZWFkX2xvY2sg d2l0aCBhIG11dGV4IGluCiB0ZWFtX3ZsYW5fcnhfa2lsbF92aWQKClsgVXBzdHJlYW0gY29tbWl0 IDYwYTY1MzFiZmU0OTU1NTU4MWNjZDY1ZjY2YTM1MGNjNTY5M2ZjZGUgXQoKV2UgY2FuJ3QgYmUg d2l0aGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB3aGVuIGRlbGV0aW5nClZM QU5zLCBhcyB1bmRlcmx5aW5nIGRyaXZlcnMgbWlnaHQgc2xlZXAgZHVyaW5nIHRoZSBoYXJkd2Fy ZSBvcGVyYXRpb24uClRoZXJlZm9yZSwgcmVwbGFjZSB0aGUgUkNVIGNyaXRpY2FsIHNlY3Rpb24g d2l0aCBhIG11dGV4LiBUaGlzIGlzCmNvbnNpc3RlbnQgd2l0aCB0ZWFtX3ZsYW5fcnhfYWRkX3Zp ZC4KCkZpeGVzOiAzZDI0OWQ0Y2E3ZDAgKCJuZXQ6IGludHJvZHVjZSBldGhlcm5ldCB0ZWFtaW5n IGRldmljZSIpCkFja2VkLWJ5OiBKaXJpIFBpcmtvIDxqaXJpQG1lbGxhbm94LmNvbT4KU2lnbmVk LW9mZi1ieTogSWRvIFNjaGltbWVsIDxpZG9zY2hAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQv dGVhbS90ZWFtLmMgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwg MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFtL3RlYW0uYyBiL2Ry aXZlcnMvbmV0L3RlYW0vdGVhbS5jCmluZGV4IDY5Mjg0NDguLjJiNDVkMDEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3RlYW0vdGVhbS5jCisrKyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbS5jCkBA IC0xODQ1LDEwICsxODQ1LDEwIEBAIHN0YXRpYyBpbnQgdGVhbV92bGFuX3J4X2tpbGxfdmlkKHN0 cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZCkKIAlzdHJ1Y3QgdGVh bSAqdGVhbSA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IHRlYW1fcG9ydCAqcG9ydDsKIAot CXJjdV9yZWFkX2xvY2soKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwb3J0LCAmdGVhbS0+ cG9ydF9saXN0LCBsaXN0KQorCW11dGV4X2xvY2soJnRlYW0tPmxvY2spOworCWxpc3RfZm9yX2Vh Y2hfZW50cnkocG9ydCwgJnRlYW0tPnBvcnRfbGlzdCwgbGlzdCkKIAkJdmxhbl92aWRfZGVsKHBv cnQtPmRldiwgcHJvdG8sIHZpZCk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CisJbXV0ZXhfdW5sb2Nr KCZ0ZWFtLT5sb2NrKTsKIAogCXJldHVybiAwOwogfQotLSAKMi4xLjAKCgpGcm9tIDAyNWFkZjZk NjA1N2YxZjRmNTM2NDAxMWEzNzIxMWU3NGI3NzE5M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEthcmwgSGVpc3MgPGtoZWlzc0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjQgU2VwIDIw MTUgMTI6MTU6MDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDM1LzM5XSBzY3RwOiBQcmV2ZW50IHNv ZnQgbG9ja3VwIHdoZW4gc2N0cF9hY2NlcHQoKSBpcyBjYWxsZWQKIGR1cmluZyBhIHRpbWVvdXQg ZXZlbnQKClsgVXBzdHJlYW0gY29tbWl0IDYzNTY4MmExNDQyN2QyNDFiYWI3YmJkZWViYjQ4YTdk N2I5MTYzOGUgXQoKQSBjYXNlIGNhbiBvY2N1ciB3aGVuIHNjdHBfYWNjZXB0KCkgaXMgY2FsbGVk IGJ5IHRoZSB1c2VyIGR1cmluZwphIGhlYXJ0YmVhdCB0aW1lb3V0IGV2ZW50IGFmdGVyIHRoZSA0 LXdheSBoYW5kc2hha2UuICBTaW5jZQpzY3RwX2Fzc29jX21pZ3JhdGUoKSBjaGFuZ2VzIGJvdGgg YXNzb2MtPmJhc2Uuc2sgYW5kIGFzc29jLT5lcCwgdGhlCmJoX3NvY2tfbG9jayBpbiBzY3RwX2dl bmVyYXRlX2hlYXJ0YmVhdF9ldmVudCgpIHdpbGwgYmUgdGFrZW4gd2l0aAp0aGUgbGlzdGVuaW5n IHNvY2tldCBidXQgcmVsZWFzZWQgd2l0aCB0aGUgbmV3IGFzc29jaWF0aW9uIHNvY2tldC4KVGhl IHJlc3VsdCBpcyBhIGRlYWRsb2NrIG9uIGFueSBmdXR1cmUgYXR0ZW1wdHMgdG8gdGFrZSB0aGUg bGlzdGVuaW5nCnNvY2tldCBsb2NrLgoKTm90ZSB0aGF0IHRoaXMgcmFjZSBjYW4gb2NjdXIgd2l0 aCBvdGhlciBTQ1RQIHRpbWVvdXRzIHRoYXQgdGFrZQp0aGUgYmhfbG9ja19zb2NrKCkgaW4gdGhl IGV2ZW50IHNjdHBfYWNjZXB0KCkgaXMgY2FsbGVkLgoKIEJVRzogc29mdCBsb2NrdXAgLSBDUFUj OSBzdHVjayBmb3IgNjdzISBbc3dhcHBlcjowXQogLi4uCiBSSVA6IDAwMTA6WzxmZmZmZmZmZjgx NTJkNDhlPl0gIFs8ZmZmZmZmZmY4MTUyZDQ4ZT5dIF9zcGluX2xvY2srMHgxZS8weDMwCiBSU1A6 IDAwMTg6ZmZmZjg4MDAyODMyM2IyMCAgRUZMQUdTOiAwMDAwMDIwNgogUkFYOiAwMDAwMDAwMDAw MDAwMDAyIFJCWDogZmZmZjg4MDAyODMyM2IyMCBSQ1g6IDAwMDAwMDAwMDAwMDAwMDAKIFJEWDog MDAwMDAwMDAwMDAwMDAwMCBSU0k6IGZmZmY4ODAwMjgzMjNiZTAgUkRJOiBmZmZmODgwNDYzMmM0 YjQ4CiBSQlA6IGZmZmZmZmZmODEwMGJiOTMgUjA4OiAwMDAwMDAwMDAwMDAwMDAwIFIwOTogMDAw MDAwMDAwMDAwMDAwMAogUjEwOiBmZmZmODgwNjEwNjYyMjgwIFIxMTogMDAwMDAwMDAwMDAwMDEw MCBSMTI6IGZmZmY4ODAwMjgzMjNhYTAKIFIxMzogZmZmZjg4MDQzODNjMzg4MCBSMTQ6IGZmZmY4 ODAwMjgzMjNhOTAgUjE1OiBmZmZmZmZmZjgxNTM0MjI1CiBGUzogIDAwMDAwMDAwMDAwMDAwMDAo MDAwMCkgR1M6ZmZmZjg4MDAyODMyMDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwCiBD UzogIDAwMTAgRFM6IDAwMTggRVM6IDAwMTggQ1IwOiAwMDAwMDAwMDgwMDUwMDNiCiBDUjI6IDAw MDAwMDAwMDA2ZGY1MjggQ1IzOiAwMDAwMDAwMDAxYTg1MDAwIENSNDogMDAwMDAwMDAwMDAwMDZl MAogRFIwOiAwMDAwMDAwMDAwMDAwMDAwIERSMTogMDAwMDAwMDAwMDAwMDAwMCBEUjI6IDAwMDAw MDAwMDAwMDAwMDAKIERSMzogMDAwMDAwMDAwMDAwMDAwMCBEUjY6IDAwMDAwMDAwZmZmZjBmZjAg RFI3OiAwMDAwMDAwMDAwMDAwNDAwCiBQcm9jZXNzIHN3YXBwZXIgKHBpZDogMCwgdGhyZWFkaW5m byBmZmZmODgwNjE2YjcwMDAwLCB0YXNrIGZmZmY4ODA2MTZiNmNhYjApCiBTdGFjazoKIGZmZmY4 ODAwMjgzMjNjNDAgZmZmZmZmZmZhMDFjMjU4MiBmZmZmODgwNjE0Y2ZiMDIwIDAwMDAwMDAwMDAw MDAwMDAKIDxkPiAwMTAwMDAwMDAwMDAwMDAwIDAwMDAwMDE0MzgzYTZjNDQgZmZmZjg4MDQzODNj Mzg4MCBmZmZmODgwNjE0ZTkzYzAwCiA8ZD4gZmZmZjg4MDYxNGU5M2MwMCAwMDAwMDAwMDAwMDAw MDAwIGZmZmY4ODA0NjMyYzRiMDAgZmZmZjg4MDQzODNjMzhiOAogQ2FsbCBUcmFjZToKIDxJUlE+ CiBbPGZmZmZmZmZmYTAxYzI1ODI+XSA/IHNjdHBfcmN2KzB4NDkyLzB4YTEwIFtzY3RwXQogWzxm ZmZmZmZmZjgxNDhjNTU5Pl0gPyBuZl9pdGVyYXRlKzB4NjkvMHhiMAogWzxmZmZmZmZmZjgxNDk3 NGEwPl0gPyBpcF9sb2NhbF9kZWxpdmVyX2ZpbmlzaCsweDAvMHgyZDAKIFs8ZmZmZmZmZmY4MTQ4 YzcxNj5dID8gbmZfaG9va19zbG93KzB4NzYvMHgxMjAKIFs8ZmZmZmZmZmY4MTQ5NzRhMD5dID8g aXBfbG9jYWxfZGVsaXZlcl9maW5pc2grMHgwLzB4MmQwCiBbPGZmZmZmZmZmODE0OTc1N2Q+XSA/ IGlwX2xvY2FsX2RlbGl2ZXJfZmluaXNoKzB4ZGQvMHgyZDAKIFs8ZmZmZmZmZmY4MTQ5NzgwOD5d ID8gaXBfbG9jYWxfZGVsaXZlcisweDk4LzB4YTAKIFs8ZmZmZmZmZmY4MTQ5NmNjZD5dID8gaXBf cmN2X2ZpbmlzaCsweDEyZC8weDQ0MAogWzxmZmZmZmZmZjgxNDk3MjU1Pl0gPyBpcF9yY3YrMHgy NzUvMHgzNTAKIFs8ZmZmZmZmZmY4MTQ1Y2ZlYj5dID8gX19uZXRpZl9yZWNlaXZlX3NrYisweDRh Yi8weDc1MAogLi4uCgpXaXRoIGxvY2tkZXAgZGVidWdnaW5nOgoKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIFsgQlVHOiBiYWQgdW5sb2NrIGJhbGFuY2UgZGV0ZWN0ZWQh IF0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENzbFJ4LzEyMDg3IGlz IHRyeWluZyB0byByZWxlYXNlIGxvY2sgKHNsb2NrLUFGX0lORVQpIGF0OgogWzxmZmZmZmZmZmEw MWJjYWUwPl0gc2N0cF9nZW5lcmF0ZV90aW1lb3V0X2V2ZW50KzB4NDAvMHhlMCBbc2N0cF0KIGJ1 dCB0aGVyZSBhcmUgbm8gbW9yZSBsb2NrcyB0byByZWxlYXNlIQoKIG90aGVyIGluZm8gdGhhdCBt aWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6CiAyIGxvY2tzIGhlbGQgYnkgQ3NsUngvMTIwODc6CiAj MDogICgmYXNvYy0+dGltZXJzW2ldKXsrLi0uLi59LCBhdDogWzxmZmZmZmZmZjgxMDhjZTFmPl0g cnVuX3RpbWVyX3NvZnRpcnErMHgxNmYvMHgzZTAKICMxOiAgKHNsb2NrLUFGX0lORVQpeysuLS4u Ln0sIGF0OiBbPGZmZmZmZmZmYTAxYmNhYzM+XSBzY3RwX2dlbmVyYXRlX3RpbWVvdXRfZXZlbnQr MHgyMy8weGUwIFtzY3RwXQoKRW5zdXJlIHRoZSBzb2NrZXQgdGFrZW4gaXMgYWxzbyB0aGUgc2Ft ZSBvbmUgdGhhdCBpcyByZWxlYXNlZCBieQpzYXZpbmcgYSBjb3B5IG9mIHRoZSBzb2NrZXQgYmVm b3JlIGVudGVyaW5nIHRoZSB0aW1lb3V0IGV2ZW50CmNyaXRpY2FsIHNlY3Rpb24uCgpTaWduZWQt b2ZmLWJ5OiBLYXJsIEhlaXNzIDxraGVpc3NAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZp ZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L3NjdHAvc21fc2lkZWVm ZmVjdC5jIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jIGIvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5j CmluZGV4IGZlZjJhY2QuLmVjYWU1NTYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3NpZGVlZmZl Y3QuYworKysgYi9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKQEAgLTI0NCwxMiArMjQ0LDEzIEBA IHZvaWQgc2N0cF9nZW5lcmF0ZV90M19ydHhfZXZlbnQodW5zaWduZWQgbG9uZyBwZWVyKQogCWlu dCBlcnJvcjsKIAlzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCA9IChzdHJ1Y3Qgc2N0 cF90cmFuc3BvcnQgKikgcGVlcjsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyA9IHRy YW5zcG9ydC0+YXNvYzsKLQlzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChhc29jLT5iYXNlLnNr KTsKKwlzdHJ1Y3Qgc29jayAqc2sgPSBhc29jLT5iYXNlLnNrOworCXN0cnVjdCBuZXQgKm5ldCA9 IHNvY2tfbmV0KHNrKTsKIAogCS8qIENoZWNrIHdoZXRoZXIgYSB0YXNrIGlzIGluIHRoZSBzb2Nr LiAgKi8KIAotCWJoX2xvY2tfc29jayhhc29jLT5iYXNlLnNrKTsKLQlpZiAoc29ja19vd25lZF9i eV91c2VyKGFzb2MtPmJhc2Uuc2spKSB7CisJYmhfbG9ja19zb2NrKHNrKTsKKwlpZiAoc29ja19v d25lZF9ieV91c2VyKHNrKSkgewogCQlwcl9kZWJ1ZygiJXM6IHNvY2sgaXMgYnVzeVxuIiwgX19m dW5jX18pOwogCiAJCS8qIFRyeSBhZ2FpbiBsYXRlci4gICovCkBAIC0yNzIsMTAgKzI3MywxMCBA QCB2b2lkIHNjdHBfZ2VuZXJhdGVfdDNfcnR4X2V2ZW50KHVuc2lnbmVkIGxvbmcgcGVlcikKIAkJ CSAgIHRyYW5zcG9ydCwgR0ZQX0FUT01JQyk7CiAKIAlpZiAoZXJyb3IpCi0JCWFzb2MtPmJhc2Uu c2stPnNrX2VyciA9IC1lcnJvcjsKKwkJc2stPnNrX2VyciA9IC1lcnJvcjsKIAogb3V0X3VubG9j azoKLQliaF91bmxvY2tfc29jayhhc29jLT5iYXNlLnNrKTsKKwliaF91bmxvY2tfc29jayhzayk7 CiAJc2N0cF90cmFuc3BvcnRfcHV0KHRyYW5zcG9ydCk7CiB9CiAKQEAgLTI4NSwxMSArMjg2LDEy IEBAIG91dF91bmxvY2s6CiBzdGF0aWMgdm9pZCBzY3RwX2dlbmVyYXRlX3RpbWVvdXRfZXZlbnQo c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQkJCXNjdHBfZXZlbnRfdGltZW91dF90 IHRpbWVvdXRfdHlwZSkKIHsKLQlzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChhc29jLT5iYXNl LnNrKTsKKwlzdHJ1Y3Qgc29jayAqc2sgPSBhc29jLT5iYXNlLnNrOworCXN0cnVjdCBuZXQgKm5l dCA9IHNvY2tfbmV0KHNrKTsKIAlpbnQgZXJyb3IgPSAwOwogCi0JYmhfbG9ja19zb2NrKGFzb2Mt PmJhc2Uuc2spOwotCWlmIChzb2NrX293bmVkX2J5X3VzZXIoYXNvYy0+YmFzZS5zaykpIHsKKwli aF9sb2NrX3NvY2soc2spOworCWlmIChzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CiAJCXByX2Rl YnVnKCIlczogc29jayBpcyBidXN5OiB0aW1lciAlZFxuIiwgX19mdW5jX18sCiAJCQkgdGltZW91 dF90eXBlKTsKIApAQCAtMzEyLDEwICszMTQsMTAgQEAgc3RhdGljIHZvaWQgc2N0cF9nZW5lcmF0 ZV90aW1lb3V0X2V2ZW50KHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJICAgKHZv aWQgKil0aW1lb3V0X3R5cGUsIEdGUF9BVE9NSUMpOwogCiAJaWYgKGVycm9yKQotCQlhc29jLT5i YXNlLnNrLT5za19lcnIgPSAtZXJyb3I7CisJCXNrLT5za19lcnIgPSAtZXJyb3I7CiAKIG91dF91 bmxvY2s6Ci0JYmhfdW5sb2NrX3NvY2soYXNvYy0+YmFzZS5zayk7CisJYmhfdW5sb2NrX3NvY2so c2spOwogCXNjdHBfYXNzb2NpYXRpb25fcHV0KGFzb2MpOwogfQogCkBAIC0zNjUsMTAgKzM2Nywx MSBAQCB2b2lkIHNjdHBfZ2VuZXJhdGVfaGVhcnRiZWF0X2V2ZW50KHVuc2lnbmVkIGxvbmcgZGF0 YSkKIAlpbnQgZXJyb3IgPSAwOwogCXN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0g KHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqKSBkYXRhOwogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9u ICphc29jID0gdHJhbnNwb3J0LT5hc29jOwotCXN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KGFz b2MtPmJhc2Uuc2spOworCXN0cnVjdCBzb2NrICpzayA9IGFzb2MtPmJhc2Uuc2s7CisJc3RydWN0 IG5ldCAqbmV0ID0gc29ja19uZXQoc2spOwogCi0JYmhfbG9ja19zb2NrKGFzb2MtPmJhc2Uuc2sp OwotCWlmIChzb2NrX293bmVkX2J5X3VzZXIoYXNvYy0+YmFzZS5zaykpIHsKKwliaF9sb2NrX3Nv Y2soc2spOworCWlmIChzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CiAJCXByX2RlYnVnKCIlczog c29jayBpcyBidXN5XG4iLCBfX2Z1bmNfXyk7CiAKIAkJLyogVHJ5IGFnYWluIGxhdGVyLiAgKi8K QEAgLTM4OSwxMCArMzkyLDEwIEBAIHZvaWQgc2N0cF9nZW5lcmF0ZV9oZWFydGJlYXRfZXZlbnQo dW5zaWduZWQgbG9uZyBkYXRhKQogCQkJICAgdHJhbnNwb3J0LCBHRlBfQVRPTUlDKTsKIAogCSBp ZiAoZXJyb3IpCi0JCSBhc29jLT5iYXNlLnNrLT5za19lcnIgPSAtZXJyb3I7CisJCXNrLT5za19l cnIgPSAtZXJyb3I7CiAKIG91dF91bmxvY2s6Ci0JYmhfdW5sb2NrX3NvY2soYXNvYy0+YmFzZS5z ayk7CisJYmhfdW5sb2NrX3NvY2soc2spOwogCXNjdHBfdHJhbnNwb3J0X3B1dCh0cmFuc3BvcnQp OwogfQogCkBAIC00MDMsMTAgKzQwNiwxMSBAQCB2b2lkIHNjdHBfZ2VuZXJhdGVfcHJvdG9fdW5y ZWFjaF9ldmVudCh1bnNpZ25lZCBsb25nIGRhdGEpCiB7CiAJc3RydWN0IHNjdHBfdHJhbnNwb3J0 ICp0cmFuc3BvcnQgPSAoc3RydWN0IHNjdHBfdHJhbnNwb3J0ICopIGRhdGE7CiAJc3RydWN0IHNj dHBfYXNzb2NpYXRpb24gKmFzb2MgPSB0cmFuc3BvcnQtPmFzb2M7Ci0Jc3RydWN0IG5ldCAqbmV0 ID0gc29ja19uZXQoYXNvYy0+YmFzZS5zayk7CisJc3RydWN0IHNvY2sgKnNrID0gYXNvYy0+YmFz ZS5zazsKKwlzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7CiAKLQliaF9sb2NrX3NvY2so YXNvYy0+YmFzZS5zayk7Ci0JaWYgKHNvY2tfb3duZWRfYnlfdXNlcihhc29jLT5iYXNlLnNrKSkg eworCWJoX2xvY2tfc29jayhzayk7CisJaWYgKHNvY2tfb3duZWRfYnlfdXNlcihzaykpIHsKIAkJ cHJfZGVidWcoIiVzOiBzb2NrIGlzIGJ1c3lcbiIsIF9fZnVuY19fKTsKIAogCQkvKiBUcnkgYWdh aW4gbGF0ZXIuICAqLwpAQCAtNDI3LDcgKzQzMSw3IEBAIHZvaWQgc2N0cF9nZW5lcmF0ZV9wcm90 b191bnJlYWNoX2V2ZW50KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJICAgYXNvYy0+c3RhdGUsIGFz b2MtPmVwLCBhc29jLCB0cmFuc3BvcnQsIEdGUF9BVE9NSUMpOwogCiBvdXRfdW5sb2NrOgotCWJo X3VubG9ja19zb2NrKGFzb2MtPmJhc2Uuc2spOworCWJoX3VubG9ja19zb2NrKHNrKTsKIAlzY3Rw X2Fzc29jaWF0aW9uX3B1dChhc29jKTsKIH0KIAotLSAKMi4xLjAKCgpGcm9tIDM4NmEwNDhhMmUw NTlmYTY5ZWRlMTBjNDYxM2MzYzZkOThhNDVhNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkRhdGU6IFRodSwgMTAgU2VwIDIwMTUg MTE6MTg6NTcgKzAxMDAKU3ViamVjdDogW1BBVENIIDM2LzM5XSB4ZW4tbmV0YmFjazogcmVzcGVj dCB1c2VyIHByb3ZpZGVkIG1heF9xdWV1ZXMKClsgVXBzdHJlYW0gY29tbWl0IDRjODJhYzNjMzcz NjNlOGM0ZGVkNmE1ZmUxZWM1ZmE3NTZiMzRkZjMgXQoKT3JpZ2luYWxseSB0aGF0IHBhcmFtZXRl ciB3YXMgYWx3YXlzIHJlc2V0IHRvIG51bV9vbmxpbmVfY3B1cyBkdXJpbmcKbW9kdWxlIGluaXRp YWxpc2F0aW9uLCB3aGljaCByZW5kZXJzIGl0IHVzZWxlc3MuCgpUaGUgZml4IGlzIHRvIG9ubHkg c2V0IG1heF9xdWV1ZXMgdG8gbnVtX29ubGluZV9jcHVzIHdoZW4gdXNlciBoYXMgbm90CnByb3Zp ZGVkIGEgdmFsdWUuCgpSZXBvcnRlZC1ieTogSm9obm55IFN0cm9tIDxqb2hubnkuc3Ryb21AbGlu dXhzb2x1dGlvbnMuZmk+ClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5j b20+ClJldmlld2VkLWJ5OiBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjaXRyaXguY29tPgpB Y2tlZC1ieTogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNvbT4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMv bmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYyB8IDcgKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC94 ZW4tbmV0YmFjay9uZXRiYWNrLmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMK aW5kZXggMDg2NmM1ZC4uNWU1YjYxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGJh Y2svbmV0YmFjay5jCisrKyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYwpAQCAt MjAwNyw4ICsyMDA3LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IG5ldGJhY2tfaW5pdCh2b2lkKQog CWlmICgheGVuX2RvbWFpbigpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCS8qIEFsbG93IGFzIG1h bnkgcXVldWVzIGFzIHRoZXJlIGFyZSBDUFVzLCBieSBkZWZhdWx0ICovCi0JeGVudmlmX21heF9x dWV1ZXMgPSBudW1fb25saW5lX2NwdXMoKTsKKwkvKiBBbGxvdyBhcyBtYW55IHF1ZXVlcyBhcyB0 aGVyZSBhcmUgQ1BVcyBpZiB1c2VyIGhhcyBub3QKKwkgKiBzcGVjaWZpZWQgYSB2YWx1ZS4KKwkg Ki8KKwlpZiAoeGVudmlmX21heF9xdWV1ZXMgPT0gMCkKKwkJeGVudmlmX21heF9xdWV1ZXMgPSBu dW1fb25saW5lX2NwdXMoKTsKIAogCWlmIChmYXRhbF9za2Jfc2xvdHMgPCBYRU5fTkVUQktfTEVH QUNZX1NMT1RTX01BWCkgewogCQlwcl9pbmZvKCJmYXRhbF9za2Jfc2xvdHMgdG9vIHNtYWxsICgl ZCksIGJ1bXAgaXQgdG8gWEVOX05FVEJLX0xFR0FDWV9TTE9UU19NQVggKCVkKVxuIiwKLS0gCjIu MS4wCgoKRnJvbSA4ZTM5ZGQyMGY3MzYyMDg1YjQwNDYwZTVmNDkzMGU4MzdhYjgyYTQzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpE YXRlOiBUaHUsIDEwIFNlcCAyMDE1IDExOjE4OjU4ICswMTAwClN1YmplY3Q6IFtQQVRDSCAzNy8z OV0geGVuLW5ldGZyb250OiByZXNwZWN0IHVzZXIgcHJvdmlkZWQgbWF4X3F1ZXVlcwoKWyBVcHN0 cmVhbSBjb21taXQgMzJhODQ0MDU2ZmQ0M2RkYTY0N2UxYzNjNmI5OTgzYmRmYTA0ZDE3ZCBdCgpP cmlnaW5hbGx5IHRoYXQgcGFyYW1ldGVyIHdhcyBhbHdheXMgcmVzZXQgdG8gbnVtX29ubGluZV9j cHVzIGR1cmluZwptb2R1bGUgaW5pdGlhbGlzYXRpb24sIHdoaWNoIHJlbmRlcnMgaXQgdXNlbGVz cy4KClRoZSBmaXggaXMgdG8gb25seSBzZXQgbWF4X3F1ZXVlcyB0byBudW1fb25saW5lX2NwdXMg d2hlbiB1c2VyIGhhcyBub3QKcHJvdmlkZWQgYSB2YWx1ZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBj aXRyaXguY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY2l0cml4 LmNvbT4KVGVzdGVkLWJ5OiBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjaXRyaXguY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQog ZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMgfCA3ICsrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv eGVuLW5ldGZyb250LmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwppbmRleCA1MmYwODFm Li4yYTAxYjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYworKysgYi9k cml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwpAQCAtMjE0MCw4ICsyMTQwLDExIEBAIHN0YXRpYyBp bnQgX19pbml0IG5ldGlmX2luaXQodm9pZCkKIAogCXByX2luZm8oIkluaXRpYWxpc2luZyBYZW4g dmlydHVhbCBldGhlcm5ldCBkcml2ZXJcbiIpOwogCi0JLyogQWxsb3cgYXMgbWFueSBxdWV1ZXMg YXMgdGhlcmUgYXJlIENQVXMsIGJ5IGRlZmF1bHQgKi8KLQl4ZW5uZXRfbWF4X3F1ZXVlcyA9IG51 bV9vbmxpbmVfY3B1cygpOworCS8qIEFsbG93IGFzIG1hbnkgcXVldWVzIGFzIHRoZXJlIGFyZSBD UFVzIGlmIHVzZXIgaGFzIG5vdAorCSAqIHNwZWNpZmllZCBhIHZhbHVlLgorCSAqLworCWlmICh4 ZW5uZXRfbWF4X3F1ZXVlcyA9PSAwKQorCQl4ZW5uZXRfbWF4X3F1ZXVlcyA9IG51bV9vbmxpbmVf Y3B1cygpOwogCiAJcmV0dXJuIHhlbmJ1c19yZWdpc3Rlcl9mcm9udGVuZCgmbmV0ZnJvbnRfZHJp dmVyKTsKIH0KLS0gCjIuMS4wCgoKRnJvbSBjMjQ3MzQ3ODdiMGI3MDYzMGViZWMzMzVkMGQzYWFj MTUzMjQ0MjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2UgSmluIDxqb2Uuamlu QG9yYWNsZS5jb20+CkRhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTM6Mzc6MTcgKzA4MDAKU3ViamVj dDogW1BBVENIIDM4LzM5XSB4ZW4tbmV0ZnJvbnQ6IHVwZGF0ZSBudW1fcXVldWVzIHRvIHJlYWwg Y3JlYXRlZAoKWyBVcHN0cmVhbSBjb21taXQgY2E4OGVhMTI0N2RmZWUwOTRlMjQ2N2EzNTc4ZWFl YzliZGYwODMzYSBdCgpTb21ldGltZXMgeGVubmV0X2NyZWF0ZV9xdWV1ZXMoKSBtYXkgZmFpbGVk IHRvIGNyZWF0ZWQgYWxsIHJlcXVlc3RlZApxdWV1ZXMsIHdlIG5lZWQgdG8gdXBkYXRlIG51bV9x dWV1ZXMgdG8gcmVhbCBjcmVhdGVkIHRvIGF2b2lkIE5VTEwKcG9pbnRlciBkZXJlZmVyZW5jZS4K ClNpZ25lZC1vZmYtYnk6IEpvZSBKaW4gPGpvZS5qaW5Ab3JhY2xlLmNvbT4KQ2M6IEJvcmlzIE9z dHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVr IFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRy aXguY29tPgpDYzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNvbT4KQ2M6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KUmV2aWV3ZWQtYnk6IEJvcmlzIE9z dHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC94ZW4tbmV0 ZnJvbnQuYyB8IDE0ICsrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hlbi1uZXRmcm9u dC5jIGIvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKaW5kZXggMmEwMWI2OC4uZmQ1MTYyNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKKysrIGIvZHJpdmVycy9uZXQv eGVuLW5ldGZyb250LmMKQEAgLTE3MTAsMTkgKzE3MTAsMTkgQEAgc3RhdGljIHZvaWQgeGVubmV0 X2Rlc3Ryb3lfcXVldWVzKHN0cnVjdCBuZXRmcm9udF9pbmZvICppbmZvKQogfQogCiBzdGF0aWMg aW50IHhlbm5ldF9jcmVhdGVfcXVldWVzKHN0cnVjdCBuZXRmcm9udF9pbmZvICppbmZvLAotCQkJ CXVuc2lnbmVkIGludCBudW1fcXVldWVzKQorCQkJCXVuc2lnbmVkIGludCAqbnVtX3F1ZXVlcykK IHsKIAl1bnNpZ25lZCBpbnQgaTsKIAlpbnQgcmV0OwogCi0JaW5mby0+cXVldWVzID0ga2NhbGxv YyhudW1fcXVldWVzLCBzaXplb2Yoc3RydWN0IG5ldGZyb250X3F1ZXVlKSwKKwlpbmZvLT5xdWV1 ZXMgPSBrY2FsbG9jKCpudW1fcXVldWVzLCBzaXplb2Yoc3RydWN0IG5ldGZyb250X3F1ZXVlKSwK IAkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIWluZm8tPnF1ZXVlcykKIAkJcmV0dXJuIC1F Tk9NRU07CiAKIAlydG5sX2xvY2soKTsKIAotCWZvciAoaSA9IDA7IGkgPCBudW1fcXVldWVzOyBp KyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgKm51bV9xdWV1ZXM7IGkrKykgewogCQlzdHJ1Y3QgbmV0 ZnJvbnRfcXVldWUgKnF1ZXVlID0gJmluZm8tPnF1ZXVlc1tpXTsKIAogCQlxdWV1ZS0+aWQgPSBp OwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgc3RhdGljIGludCB4ZW5uZXRfY3JlYXRlX3F1ZXVlcyhz dHJ1Y3QgbmV0ZnJvbnRfaW5mbyAqaW5mbywKIAkJaWYgKHJldCA8IDApIHsKIAkJCWRldl93YXJu KCZpbmZvLT5uZXRkZXYtPmRldiwKIAkJCQkgIm9ubHkgY3JlYXRlZCAlZCBxdWV1ZXNcbiIsIGkp OwotCQkJbnVtX3F1ZXVlcyA9IGk7CisJCQkqbnVtX3F1ZXVlcyA9IGk7CiAJCQlicmVhazsKIAkJ fQogCkBAIC0xNzQyLDExICsxNzQyLDExIEBAIHN0YXRpYyBpbnQgeGVubmV0X2NyZWF0ZV9xdWV1 ZXMoc3RydWN0IG5ldGZyb250X2luZm8gKmluZm8sCiAJCQluYXBpX2VuYWJsZSgmcXVldWUtPm5h cGkpOwogCX0KIAotCW5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMoaW5mby0+bmV0ZGV2LCBu dW1fcXVldWVzKTsKKwluZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVzKGluZm8tPm5ldGRldiwg Km51bV9xdWV1ZXMpOwogCiAJcnRubF91bmxvY2soKTsKIAotCWlmIChudW1fcXVldWVzID09IDAp IHsKKwlpZiAoKm51bV9xdWV1ZXMgPT0gMCkgewogCQlkZXZfZXJyKCZpbmZvLT5uZXRkZXYtPmRl diwgIm5vIHF1ZXVlc1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTE3OTIsNyArMTc5 Miw3IEBAIHN0YXRpYyBpbnQgdGFsa190b19uZXRiYWNrKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpk ZXYsCiAJaWYgKGluZm8tPnF1ZXVlcykKIAkJeGVubmV0X2Rlc3Ryb3lfcXVldWVzKGluZm8pOwog Ci0JZXJyID0geGVubmV0X2NyZWF0ZV9xdWV1ZXMoaW5mbywgbnVtX3F1ZXVlcyk7CisJZXJyID0g eGVubmV0X2NyZWF0ZV9xdWV1ZXMoaW5mbywgJm51bV9xdWV1ZXMpOwogCWlmIChlcnIgPCAwKQog CQlnb3RvIGRlc3Ryb3lfcmluZzsKIAotLSAKMi4xLjAKCgpGcm9tIGNlNjA4OGQzZWE2NjI4NjJk ZTY5Y2Y4YWQ1ZTdmZWViN2E0Yjc1ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERh biBTdHJlZXRtYW4gPGRhbi5zdHJlZXRtYW5AY2Fub25pY2FsLmNvbT4KRGF0ZTogVGh1LCAyOSBP Y3QgMjAxNSAwOTo1MToxNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMzkvMzldIHhmcm06IGRzdF9l bnRyaWVzX2luaXQoKSBwZXItbmV0IGRzdF9vcHMKClsgVXBzdHJlYW0gY29tbWl0IGE4YTU3MmE2 YjVmMmE3OTI4MGQ2ZTMwMmNiM2MxY2IxZmJhZWIzZTggXQoKUmVtb3ZlIHRoZSBkc3RfZW50cmll c19pbml0L2Rlc3Ryb3kgY2FsbHMgZm9yIHhmcm00IGFuZCB4ZnJtNiBkc3Rfb3BzCnRlbXBsYXRl czsgdGhlaXIgZHN0X2VudHJpZXMgY291bnRlcnMgd2lsbCBuZXZlciBiZSB1c2VkLiAgTW92ZSB0 aGUKeGZybSBkc3Rfb3BzIGluaXRpYWxpemF0aW9uIGZyb20gdGhlIGNvbW1vbiB4ZnJtL3hmcm1f cG9saWN5LmMgdG8KeGZybTQveGZybTRfcG9saWN5LmMgYW5kIHhmcm02L3hmcm02X3BvbGljeS5j LCBhbmQgY2FsbCBkc3RfZW50cmllc19pbml0CmFuZCBkc3RfZW50cmllc19kZXN0cm95IGZvciBl YWNoIG5ldCBuYW1lc3BhY2UuCgpUaGUgaXB2NCBhbmQgaXB2NiB4ZnJtcyBlYWNoIGNyZWF0ZSBk c3Rfb3BzIHRlbXBsYXRlLCBhbmQgcGVyZm9ybQpkc3RfZW50cmllc19pbml0IG9uIHRoZSB0ZW1w bGF0ZXMuICBUaGUgdGVtcGxhdGUgdmFsdWVzIGFyZSBjb3BpZWQgdG8gZWFjaApuZXQgbmFtZXNw YWNlJ3MgeGZybS54ZnJtKl9kc3Rfb3BzLiAgVGhlIHByb2JsZW0gdGhlcmUgaXMgdGhlIGRzdF9v cHMKcGNwdWNfZW50cmllcyBmaWVsZCBpcyBhIHBlcmNwdSBjb3VudGVyIGFuZCBjYW5ub3QgYmUg dXNlZCBjb3JyZWN0bHkgYnkKc2ltcGx5IGNvcHlpbmcgaXQgdG8gYW5vdGhlciBvYmplY3QuCgpU aGUgcmVzdWx0IG9mIHRoaXMgaXMgYSB2ZXJ5IHN1YnRsZSBidWc7IGNoYW5nZXMgdG8gdGhlIGRz dCBlbnRyaWVzCmNvdW50ZXIgZnJvbSBvbmUgbmV0IG5hbWVzcGFjZSBtYXkgc29tZXRpbWVzIGdl dCBhcHBsaWVkIHRvIGEgZGlmZmVyZW50Cm5ldCBuYW1lc3BhY2UgZHN0IGVudHJpZXMgY291bnRl ci4gIFRoaXMgaXMgYmVjYXVzZSBvZiBob3cgdGhlIHBlcmNwdQpjb3VudGVyIHdvcmtzOyBpdCBo YXMgYSBtYWluIGNvdW50IGZpZWxkIGFzIHdlbGwgYXMgYSBwb2ludGVyIHRvIHRoZQpwZXJjcHUg dmFyaWFibGVzLiAgRWFjaCBuZXQgbmFtZXNwYWNlIG1haW50YWlucyBpdHMgb3duIG1haW4gY291 bnQKdmFyaWFibGUsIGJ1dCBhbGwgcG9pbnQgdG8gb25lIHNldCBvZiBwZXJjcHUgdmFyaWFibGVz LiAgV2hlbiBhbnkgbmV0Cm5hbWVzcGFjZSBoYXBwZW5zIHRvIGNoYW5nZSBvbmUgb2YgdGhlIHBl cmNwdSB2YXJpYWJsZXMgdG8gb3V0c2lkZSBpdHMKc21hbGwgYmF0Y2ggcmFuZ2UsIGl0cyBjb3Vu dCBpcyBtb3ZlZCB0byB0aGUgbmV0IG5hbWVzcGFjZSdzIG1haW4gY291bnQKdmFyaWFibGUuICBT byB3aXRoIG11bHRpcGxlIG5ldCBuYW1lc3BhY2VzIG9wZXJhdGluZyBjb25jdXJyZW50bHksIHRo ZQpkc3Rfb3BzIGVudHJpZXMgY291bnRlciBjYW4gc3RyYXkgZnJvbSB0aGUgYWN0dWFsIHZhbHVl IHRoYXQgaXQgc2hvdWxkCmJlOyBpZiBjb3VudHMgYXJlIGNvbnNpc3RlbnRseSBtb3ZlZCBmcm9t IG9uZSBuZXQgbmFtZXNwYWNlIHRvIGFub3RoZXIKKHdoaWNoIG15IHRlc3Rpbmcgc2hvd2VkIGlz IGxpa2VseSksIHRoZW4gb25lIG5ldCBuYW1lc3BhY2Ugd2luZHMgdXAKd2l0aCBhIG5lZ2F0aXZl IGRzdF9vcHMgY291bnQgd2hpbGUgYW5vdGhlciB3aW5kcyB1cCB3aXRoIGEgY29udGludWFsbHkK aW5jcmVhc2luZyBjb3VudCwgZXZlbnR1YWxseSByZWFjaGluZyBpdHMgZ2NfdGhyZXNoIGxpbWl0 LCB3aGljaCBjYXVzZXMKYWxsIG5ldyB0cmFmZmljIG9uIHRoZSBuZXQgbmFtZXNwYWNlIHRvIGZh aWwgd2l0aCAtRU5PQlVGUy4KClNpZ25lZC1vZmYtYnk6IERhbiBTdHJlZXRtYW4gPGRhbi5zdHJl ZXRtYW5AY2Fub25pY2FsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuIFN0cmVldG1hbiA8ZGRzdHJl ZXRAaWVlZS5vcmc+ClNpZ25lZC1vZmYtYnk6IFN0ZWZmZW4gS2xhc3NlcnQgPHN0ZWZmZW4ua2xh c3NlcnRAc2VjdW5ldC5jb20+Ci0tLQogbmV0L2lwdjQveGZybTRfcG9saWN5LmMgfCA0NiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIG5ldC9pcHY2L3hmcm02X3Bv bGljeS5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogbmV0L3hmcm0veGZybV9wb2xpY3kuYyAgfCAzOCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA2MiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9wb2xpY3kuYyBiL25ldC9pcHY0 L3hmcm00X3BvbGljeS5jCmluZGV4IGJmZjY5NzQuLjc4NTI2MDggMTAwNjQ0Ci0tLSBhL25ldC9p cHY0L3hmcm00X3BvbGljeS5jCisrKyBiL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCkBAIC0yMzAs NyArMjMwLDcgQEAgc3RhdGljIHZvaWQgeGZybTRfZHN0X2lmZG93bihzdHJ1Y3QgZHN0X2VudHJ5 ICpkc3QsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJeGZybV9kc3RfaWZkb3duKGRzdCwgZGV2 KTsKIH0KIAotc3RhdGljIHN0cnVjdCBkc3Rfb3BzIHhmcm00X2RzdF9vcHMgPSB7CitzdGF0aWMg c3RydWN0IGRzdF9vcHMgeGZybTRfZHN0X29wc190ZW1wbGF0ZSA9IHsKIAkuZmFtaWx5ID0JCUFG X0lORVQsCiAJLmdjID0JCQl4ZnJtNF9nYXJiYWdlX2NvbGxlY3QsCiAJLnVwZGF0ZV9wbXR1ID0J CXhmcm00X3VwZGF0ZV9wbXR1LApAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHN0 X29wcyB4ZnJtNF9kc3Rfb3BzID0gewogCiBzdGF0aWMgc3RydWN0IHhmcm1fcG9saWN5X2FmaW5m byB4ZnJtNF9wb2xpY3lfYWZpbmZvID0gewogCS5mYW1pbHkgPSAJCUFGX0lORVQsCi0JLmRzdF9v cHMgPQkJJnhmcm00X2RzdF9vcHMsCisJLmRzdF9vcHMgPQkJJnhmcm00X2RzdF9vcHNfdGVtcGxh dGUsCiAJLmRzdF9sb29rdXAgPQkJeGZybTRfZHN0X2xvb2t1cCwKIAkuZ2V0X3NhZGRyID0JCXhm cm00X2dldF9zYWRkciwKIAkuZGVjb2RlX3Nlc3Npb24gPQlfZGVjb2RlX3Nlc3Npb240LApAQCAt MjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHhmcm00X3BvbGljeV90YWJs ZVtdID0gewogCXsgfQogfTsKIAotc3RhdGljIGludCBfX25ldF9pbml0IHhmcm00X25ldF9pbml0 KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtNF9uZXRfc3lzY3Rs X2luaXQoc3RydWN0IG5ldCAqbmV0KQogewogCXN0cnVjdCBjdGxfdGFibGUgKnRhYmxlOwogCXN0 cnVjdCBjdGxfdGFibGVfaGVhZGVyICpoZHI7CkBAIC0yOTQsNyArMjk0LDcgQEAgZXJyX2FsbG9j OgogCXJldHVybiAtRU5PTUVNOwogfQogCi1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm00X25l dF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybTRfbmV0 X3N5c2N0bF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAlzdHJ1Y3QgY3RsX3RhYmxlICp0YWJs ZTsKIApAQCAtMzA2LDEyICszMDYsNDQgQEAgc3RhdGljIHZvaWQgX19uZXRfZXhpdCB4ZnJtNF9u ZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiAJaWYgKCFuZXRfZXEobmV0LCAmaW5pdF9uZXQpKQog CQlrZnJlZSh0YWJsZSk7CiB9CisjZWxzZSAvKiBDT05GSUdfU1lTQ1RMICovCitzdGF0aWMgaW50 IGlubGluZSB4ZnJtNF9uZXRfc3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KQoreworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCBpbmxpbmUgeGZybTRfbmV0X3N5c2N0bF9leGl0KHN0cnVj dCBuZXQgKm5ldCkKK3sKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybTRf bmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KQoreworCWludCByZXQ7CisKKwltZW1jcHkoJm5ldC0+ eGZybS54ZnJtNF9kc3Rfb3BzLCAmeGZybTRfZHN0X29wc190ZW1wbGF0ZSwKKwkgICAgICAgc2l6 ZW9mKHhmcm00X2RzdF9vcHNfdGVtcGxhdGUpKTsKKwlyZXQgPSBkc3RfZW50cmllc19pbml0KCZu ZXQtPnhmcm0ueGZybTRfZHN0X29wcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJl dCA9IHhmcm00X25ldF9zeXNjdGxfaW5pdChuZXQpOworCWlmIChyZXQpCisJCWRzdF9lbnRyaWVz X2Rlc3Ryb3koJm5ldC0+eGZybS54ZnJtNF9kc3Rfb3BzKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybTRfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KQor eworCXhmcm00X25ldF9zeXNjdGxfZXhpdChuZXQpOworCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJm5l dC0+eGZybS54ZnJtNF9kc3Rfb3BzKTsKK30KIAogc3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0 aW9ucyBfX25ldF9pbml0ZGF0YSB4ZnJtNF9uZXRfb3BzID0gewogCS5pbml0CT0geGZybTRfbmV0 X2luaXQsCiAJLmV4aXQJPSB4ZnJtNF9uZXRfZXhpdCwKIH07Ci0jZW5kaWYKIAogc3RhdGljIHZv aWQgX19pbml0IHhmcm00X3BvbGljeV9pbml0KHZvaWQpCiB7CkBAIC0zMjAsMTMgKzM1Miw5IEBA IHN0YXRpYyB2b2lkIF9faW5pdCB4ZnJtNF9wb2xpY3lfaW5pdCh2b2lkKQogCiB2b2lkIF9faW5p dCB4ZnJtNF9pbml0KHZvaWQpCiB7Ci0JZHN0X2VudHJpZXNfaW5pdCgmeGZybTRfZHN0X29wcyk7 Ci0KIAl4ZnJtNF9zdGF0ZV9pbml0KCk7CiAJeGZybTRfcG9saWN5X2luaXQoKTsKIAl4ZnJtNF9w cm90b2NvbF9pbml0KCk7Ci0jaWZkZWYgQ09ORklHX1NZU0NUTAogCXJlZ2lzdGVyX3Blcm5ldF9z dWJzeXMoJnhmcm00X25ldF9vcHMpOwotI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2 L3hmcm02X3BvbGljeS5jIGIvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKaW5kZXggZjMzN2E5MC4u NGZiOTRmNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYveGZybTZfcG9saWN5LmMKKysrIGIvbmV0L2lw djYveGZybTZfcG9saWN5LmMKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgdm9pZCB4ZnJtNl9k c3RfaWZkb3duKHN0cnVjdCBkc3RfZW50cnkgKmRzdCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwK IAl4ZnJtX2RzdF9pZmRvd24oZHN0LCBkZXYpOwogfQogCi1zdGF0aWMgc3RydWN0IGRzdF9vcHMg eGZybTZfZHN0X29wcyA9IHsKK3N0YXRpYyBzdHJ1Y3QgZHN0X29wcyB4ZnJtNl9kc3Rfb3BzX3Rl bXBsYXRlID0gewogCS5mYW1pbHkgPQkJQUZfSU5FVDYsCiAJLmdjID0JCQl4ZnJtNl9nYXJiYWdl X2NvbGxlY3QsCiAJLnVwZGF0ZV9wbXR1ID0JCXhmcm02X3VwZGF0ZV9wbXR1LApAQCAtMzAzLDcg KzMwMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHN0X29wcyB4ZnJtNl9kc3Rfb3BzID0gewogCiBzdGF0 aWMgc3RydWN0IHhmcm1fcG9saWN5X2FmaW5mbyB4ZnJtNl9wb2xpY3lfYWZpbmZvID0gewogCS5m YW1pbHkgPQkJQUZfSU5FVDYsCi0JLmRzdF9vcHMgPQkJJnhmcm02X2RzdF9vcHMsCisJLmRzdF9v cHMgPQkJJnhmcm02X2RzdF9vcHNfdGVtcGxhdGUsCiAJLmRzdF9sb29rdXAgPQkJeGZybTZfZHN0 X2xvb2t1cCwKIAkuZ2V0X3NhZGRyID0JCXhmcm02X2dldF9zYWRkciwKIAkuZGVjb2RlX3Nlc3Np b24gPQlfZGVjb2RlX3Nlc3Npb242LApAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBzdHJ1Y3Qg Y3RsX3RhYmxlIHhmcm02X3BvbGljeV90YWJsZVtdID0gewogCXsgfQogfTsKIAotc3RhdGljIGlu dCBfX25ldF9pbml0IHhmcm02X25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRpYyBpbnQg X19uZXRfaW5pdCB4ZnJtNl9uZXRfc3lzY3RsX2luaXQoc3RydWN0IG5ldCAqbmV0KQogewogCXN0 cnVjdCBjdGxfdGFibGUgKnRhYmxlOwogCXN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpoZHI7CkBA IC0zNjQsNyArMzY0LDcgQEAgZXJyX2FsbG9jOgogCXJldHVybiAtRU5PTUVNOwogfQogCi1zdGF0 aWMgdm9pZCBfX25ldF9leGl0IHhmcm02X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKK3N0YXRp YyB2b2lkIF9fbmV0X2V4aXQgeGZybTZfbmV0X3N5c2N0bF9leGl0KHN0cnVjdCBuZXQgKm5ldCkK IHsKIAlzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZTsKIApAQCAtMzc2LDI0ICszNzYsNTIgQEAgc3Rh dGljIHZvaWQgX19uZXRfZXhpdCB4ZnJtNl9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiAJaWYg KCFuZXRfZXEobmV0LCAmaW5pdF9uZXQpKQogCQlrZnJlZSh0YWJsZSk7CiB9CisjZWxzZSAvKiBD T05GSUdfU1lTQ1RMICovCitzdGF0aWMgaW50IGlubGluZSB4ZnJtNl9uZXRfc3lzY3RsX2luaXQo c3RydWN0IG5ldCAqbmV0KQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpbmxpbmUg eGZybTZfbmV0X3N5c2N0bF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKK3sKK30KKyNlbmRpZgorCitz dGF0aWMgaW50IF9fbmV0X2luaXQgeGZybTZfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KQorewor CWludCByZXQ7CisKKwltZW1jcHkoJm5ldC0+eGZybS54ZnJtNl9kc3Rfb3BzLCAmeGZybTZfZHN0 X29wc190ZW1wbGF0ZSwKKwkgICAgICAgc2l6ZW9mKHhmcm02X2RzdF9vcHNfdGVtcGxhdGUpKTsK KwlyZXQgPSBkc3RfZW50cmllc19pbml0KCZuZXQtPnhmcm0ueGZybTZfZHN0X29wcyk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHhmcm02X25ldF9zeXNjdGxfaW5pdChuZXQp OworCWlmIChyZXQpCisJCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJm5ldC0+eGZybS54ZnJtNl9kc3Rf b3BzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybTZf bmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KQoreworCXhmcm02X25ldF9zeXNjdGxfZXhpdChuZXQp OworCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJm5ldC0+eGZybS54ZnJtNl9kc3Rfb3BzKTsKK30KIAog c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyB4ZnJtNl9uZXRfb3BzID0gewogCS5pbml0 CT0geGZybTZfbmV0X2luaXQsCiAJLmV4aXQJPSB4ZnJtNl9uZXRfZXhpdCwKIH07Ci0jZW5kaWYK IAogaW50IF9faW5pdCB4ZnJtNl9pbml0KHZvaWQpCiB7CiAJaW50IHJldDsKIAotCWRzdF9lbnRy aWVzX2luaXQoJnhmcm02X2RzdF9vcHMpOwotCiAJcmV0ID0geGZybTZfcG9saWN5X2luaXQoKTsK LQlpZiAocmV0KSB7Ci0JCWRzdF9lbnRyaWVzX2Rlc3Ryb3koJnhmcm02X2RzdF9vcHMpOworCWlm IChyZXQpCiAJCWdvdG8gb3V0OwotCX0KIAlyZXQgPSB4ZnJtNl9zdGF0ZV9pbml0KCk7CiAJaWYg KHJldCkKIAkJZ290byBvdXRfcG9saWN5OwpAQCAtNDAyLDkgKzQzMCw3IEBAIGludCBfX2luaXQg eGZybTZfaW5pdCh2b2lkKQogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3N0YXRlOwogCi0jaWZkZWYg Q09ORklHX1NZU0NUTAogCXJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoJnhmcm02X25ldF9vcHMpOwot I2VuZGlmCiBvdXQ6CiAJcmV0dXJuIHJldDsKIG91dF9zdGF0ZToKQEAgLTQxNiwxMSArNDQyLDgg QEAgb3V0X3BvbGljeToKIAogdm9pZCB4ZnJtNl9maW5pKHZvaWQpCiB7Ci0jaWZkZWYgQ09ORklH X1NZU0NUTAogCXVucmVnaXN0ZXJfcGVybmV0X3N1YnN5cygmeGZybTZfbmV0X29wcyk7Ci0jZW5k aWYKIAl4ZnJtNl9wcm90b2NvbF9maW5pKCk7CiAJeGZybTZfcG9saWN5X2ZpbmkoKTsKIAl4ZnJt Nl9zdGF0ZV9maW5pKCk7Ci0JZHN0X2VudHJpZXNfZGVzdHJveSgmeGZybTZfZHN0X29wcyk7CiB9 CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3BvbGljeS5jIGIvbmV0L3hmcm0veGZybV9wb2xp Y3kuYwppbmRleCA2MzhhZjA2Li40Y2QyMDc2IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3Bv bGljeS5jCisrKyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKQEAgLTI4MDYsNyArMjgwNiw2IEBA IHN0YXRpYyBzdHJ1Y3QgbmVpZ2hib3VyICp4ZnJtX25laWdoX2xvb2t1cChjb25zdCBzdHJ1Y3Qg ZHN0X2VudHJ5ICpkc3QsCiAKIGludCB4ZnJtX3BvbGljeV9yZWdpc3Rlcl9hZmluZm8oc3RydWN0 IHhmcm1fcG9saWN5X2FmaW5mbyAqYWZpbmZvKQogewotCXN0cnVjdCBuZXQgKm5ldDsKIAlpbnQg ZXJyID0gMDsKIAlpZiAodW5saWtlbHkoYWZpbmZvID09IE5VTEwpKQogCQlyZXR1cm4gLUVJTlZB TDsKQEAgLTI4MzcsMjYgKzI4MzYsNiBAQCBpbnQgeGZybV9wb2xpY3lfcmVnaXN0ZXJfYWZpbmZv KHN0cnVjdCB4ZnJtX3BvbGljeV9hZmluZm8gKmFmaW5mbykKIAl9CiAJc3Bpbl91bmxvY2soJnhm cm1fcG9saWN5X2FmaW5mb19sb2NrKTsKIAotCXJ0bmxfbG9jaygpOwotCWZvcl9lYWNoX25ldChu ZXQpIHsKLQkJc3RydWN0IGRzdF9vcHMgKnhmcm1fZHN0X29wczsKLQotCQlzd2l0Y2ggKGFmaW5m by0+ZmFtaWx5KSB7Ci0JCWNhc2UgQUZfSU5FVDoKLQkJCXhmcm1fZHN0X29wcyA9ICZuZXQtPnhm cm0ueGZybTRfZHN0X29wczsKLQkJCWJyZWFrOwotI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYp Ci0JCWNhc2UgQUZfSU5FVDY6Ci0JCQl4ZnJtX2RzdF9vcHMgPSAmbmV0LT54ZnJtLnhmcm02X2Rz dF9vcHM7Ci0JCQlicmVhazsKLSNlbmRpZgotCQlkZWZhdWx0OgotCQkJQlVHKCk7Ci0JCX0KLQkJ Knhmcm1fZHN0X29wcyA9ICphZmluZm8tPmRzdF9vcHM7Ci0JfQotCXJ0bmxfdW5sb2NrKCk7Ci0K IAlyZXR1cm4gZXJyOwogfQogRVhQT1JUX1NZTUJPTCh4ZnJtX3BvbGljeV9yZWdpc3Rlcl9hZmlu Zm8pOwpAQCAtMjg5MiwyMiArMjg3MSw2IEBAIGludCB4ZnJtX3BvbGljeV91bnJlZ2lzdGVyX2Fm aW5mbyhzdHJ1Y3QgeGZybV9wb2xpY3lfYWZpbmZvICphZmluZm8pCiB9CiBFWFBPUlRfU1lNQk9M KHhmcm1fcG9saWN5X3VucmVnaXN0ZXJfYWZpbmZvKTsKIAotc3RhdGljIHZvaWQgX19uZXRfaW5p dCB4ZnJtX2RzdF9vcHNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCi17Ci0Jc3RydWN0IHhmcm1fcG9s aWN5X2FmaW5mbyAqYWZpbmZvOwotCi0JcmN1X3JlYWRfbG9jaygpOwotCWFmaW5mbyA9IHJjdV9k ZXJlZmVyZW5jZSh4ZnJtX3BvbGljeV9hZmluZm9bQUZfSU5FVF0pOwotCWlmIChhZmluZm8pCi0J CW5ldC0+eGZybS54ZnJtNF9kc3Rfb3BzID0gKmFmaW5mby0+ZHN0X29wczsKLSNpZiBJU19FTkFC TEVEKENPTkZJR19JUFY2KQotCWFmaW5mbyA9IHJjdV9kZXJlZmVyZW5jZSh4ZnJtX3BvbGljeV9h ZmluZm9bQUZfSU5FVDZdKTsKLQlpZiAoYWZpbmZvKQotCQluZXQtPnhmcm0ueGZybTZfZHN0X29w cyA9ICphZmluZm8tPmRzdF9vcHM7Ci0jZW5kaWYKLQlyY3VfcmVhZF91bmxvY2soKTsKLX0KLQog c3RhdGljIGludCB4ZnJtX2Rldl9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVu c2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cikKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7CkBAIC0zMDU2LDcgKzMwMTksNiBA QCBzdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCiAJ cnYgPSB4ZnJtX3BvbGljeV9pbml0KG5ldCk7CiAJaWYgKHJ2IDwgMCkKIAkJZ290byBvdXRfcG9s aWN5OwotCXhmcm1fZHN0X29wc19pbml0KG5ldCk7CiAJcnYgPSB4ZnJtX3N5c2N0bF9pbml0KG5l dCk7CiAJaWYgKHJ2IDwgMCkKIAkJZ290byBvdXRfc3lzY3RsOwotLSAKMi4xLjAKCg== ----Next_Part(Tue_Jan_26_18_00_44_2016_358)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_318.mbox" RnJvbSA1MTQwZTA3YTUxMjc0Yjk1ZTk2YTkxNDBiMzE2MzAxMjM5ZjFlNmE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWpheSBQYW5kdXJhbmdhbiA8dmlqYXlwQHZpamF5cC5jYT4K RGF0ZTogRnJpLCAxOCBEZWMgMjAxNSAxNDozNDo1OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDEv MjRdID0/VVRGLTg/cT92ZXRoOj0yMGRvbj1FMj04MD05OXQ9MjBtb2RpZnk9MjBpcD01RnN1bT89 CiA9P1VURi04P3E/bWVkOz0yMGRvaW5nPTIwc289MjB0cmVhdHM9MjBwYWNrZXRzPTIwd2l0aD0y MGJhZD0yMGNoZWNrc3Vtcz89CiA9P1VURi04P3E/PTIwYXM9MjBnb29kLj89Ck1JTUUtVmVyc2lv bjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRy YW5zZmVyLUVuY29kaW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCBjZThjODM5Yjc0ZTMwMTc5 OTZmYWQ0ZTFiN2JhMmUyNjI1ZWRlODJmIF0KClBhY2tldHMgdGhhdCBhcnJpdmUgZnJvbSByZWFs IGhhcmR3YXJlIGRldmljZXMgaGF2ZSBpcF9zdW1tZWQgPT0KQ0hFQ0tTVU1fVU5ORUNFU1NBUlkg aWYgdGhlIGhhcmR3YXJlIHZlcmlmaWVkIHRoZSBjaGVja3N1bXMsIG9yCkNIRUNLU1VNX05PTkUg aWYgdGhlIHBhY2tldCBpcyBiYWQgb3IgaXQgd2FzIHVuYWJsZSB0byB2ZXJpZnkgaXQuIFRoZQpj dXJyZW50IHZlcnNpb24gb2YgdmV0aCB3aWxsIHJlcGxhY2UgQ0hFQ0tTVU1fTk9ORSB3aXRoCkNI RUNLU1VNX1VOTkVDRVNTQVJZLCB3aGljaCBjYXVzZXMgY29ycnVwdCBwYWNrZXRzIHJvdXRlZCBm cm9tIGhhcmR3YXJlIHRvCmEgdmV0aCBkZXZpY2UgdG8gYmUgZGVsaXZlcmVkIHRvIHRoZSBhcHBs aWNhdGlvbi4gVGhpcyBjYXVzZWQgYXBwbGljYXRpb25zCmF0IFR3aXR0ZXIgdG8gcmVjZWl2ZSBj b3JydXB0IGRhdGEgd2hlbiBuZXR3b3JrIGhhcmR3YXJlIHdhcyBjb3JydXB0aW5nCnBhY2tldHMu CgpXZSBiZWxpZXZlIHRoaXMgd2FzIGFkZGVkIGFzIGFuIG9wdGltaXphdGlvbiB0byBza2lwIGNv bXB1dGluZyBhbmQKdmVyaWZ5aW5nIGNoZWNrc3VtcyBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVu IGNvbnRhaW5lcnMuIEhvd2V2ZXIsIGxvY2FsbHkKZ2VuZXJhdGVkIHBhY2tldHMgaGF2ZSBpcF9z dW1tZWQgPT0gQ0hFQ0tTVU1fUEFSVElBTCwgc28gdGhlIGNvZGUgYXMKd3JpdHRlbiBkb2VzIG5v dGhpbmcgZm9yIHRoZW0uIEFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgYWZ0ZXIgcmVtb3ZpbmcgdGhp cwpjb2RlLCB0aGVzZSBwYWNrZXRzIGFyZSB0cmFuc21pdHRlZCBmcm9tIG9uZSBzdGFjayB0byBh bm90aGVyIHVubW9kaWZpZWQKKHRjcGR1bXAgc2hvd3MgaW52YWxpZCBjaGVja3N1bXMgb24gYm90 aCBzaWRlcywgYXMgZXhwZWN0ZWQpLCBhbmQgdGhleSBhcmUKZGVsaXZlcmVkIGNvcnJlY3RseSB0 byBhcHBsaWNhdGlvbnMuIFdlIGRpZG7igJl0IHRlc3QgZXZlcnkgcG9zc2libGUgbmV0d29yawpj b25maWd1cmF0aW9uLCBidXQgd2UgdHJpZWQgYSBmZXcgY29tbW9uIG9uZXMgc3VjaCBhcyBicmlk Z2luZyBjb250YWluZXJzLAp1c2luZyBOQVQgYmV0d2VlbiB0aGUgaG9zdCBhbmQgYSBjb250YWlu ZXIsIGFuZCByb3V0aW5nIGZyb20gaGFyZHdhcmUKZGV2aWNlcyB0byBjb250YWluZXJzLiBXZSBo YXZlIGVmZmVjdGl2ZWx5IGRlcGxveWVkIHRoaXMgaW4gcHJvZHVjdGlvbiBhdApUd2l0dGVyIChi eSBkaXNhYmxpbmcgUlggY2hlY2tzdW0gb2ZmbG9hZGluZyBvbiB2ZXRoIGRldmljZXMpLgoKVGhp cyBjb2RlIGRhdGVzIGJhY2sgdG8gdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIGRyaXZlciwgY29t bWl0CjxlMzE0ZGJkYzFjMGRjNmE1NDhlY2Y+ICgiW05FVF06IFZpcnR1YWwgZXRoZXJuZXQgZGV2 aWNlIGRyaXZlciIpLCBzbyBJCnN1c3BlY3QgdGhpcyBidWcgb2NjdXJyZWQgbW9zdGx5IGJlY2F1 c2UgdGhlIGRyaXZlciBBUEkgaGFzIGV2b2x2ZWQKc2lnbmlmaWNhbnRseSBzaW5jZSB0aGVuLiBD b21taXQgPDBiNzk2NzUwM2RjOTc4NjRmMjgzYT4gKCJuZXQvdmV0aDogRml4CnBhY2tldCBjaGVj a3N1bW1pbmciKSAoaW4gRGVjZW1iZXIgMjAxMCkgZml4ZWQgdGhpcyBmb3IgcGFja2V0cyB0aGF0 IGdldApjcmVhdGVkIGxvY2FsbHkgYW5kIHNlbnQgdG8gaGFyZHdhcmUgZGV2aWNlcywgYnkgbm90 IGNoYW5naW5nCkNIRUNLU1VNX1BBUlRJQUwuIEhvd2V2ZXIsIHRoZSBzYW1lIGlzc3VlIHN0aWxs IG9jY3VycyBmb3IgcGFja2V0cyBjb21pbmcKaW4gZnJvbSBoYXJkd2FyZSBkZXZpY2VzLgoKQ28t YXV0aG9yZWQtYnk6IEV2YW4gSm9uZXMgPGVqQGV2YW5qb25lcy5jYT4KU2lnbmVkLW9mZi1ieTog RXZhbiBKb25lcyA8ZWpAZXZhbmpvbmVzLmNhPgpDYzogTmljb2xhcyBEaWNodGVsIDxuaWNvbGFz LmRpY2h0ZWxANndpbmQuY29tPgpDYzogUGhpbCBTdXR0ZXIgPHBoaWxAbndsLmNjPgpDYzogVG9z aGlha2kgTWFraXRhIDxtYWtpdGEudG9zaGlha2lAbGFiLm50dC5jby5qcD4KQ2M6IG5ldGRldkB2 Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKU2lnbmVkLW9m Zi1ieTogVmlqYXkgUGFuZHVyYW5nYW4gPHZpamF5cEB2aWpheXAuY2E+CkFja2VkLWJ5OiBDb25n IFdhbmcgPGN3YW5nQHR3b3BlbnNvdXJjZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC92ZXRoLmMgfCA2IC0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvdmV0aC5jIGIvZHJpdmVycy9uZXQvdmV0aC5jCmluZGV4IDhhZDU5NjUuLjMyY2UxY2Qg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZldGguYworKysgYi9kcml2ZXJzL25ldC92ZXRoLmMK QEAgLTExNywxMiArMTE3LDYgQEAgc3RhdGljIG5ldGRldl90eF90IHZldGhfeG1pdChzdHJ1Y3Qg c2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlrZnJlZV9za2Ioc2tiKTsK IAkJZ290byBkcm9wOwogCX0KLQkvKiBkb24ndCBjaGFuZ2UgaXBfc3VtbWVkID09IENIRUNLU1VN X1BBUlRJQUwsIGFzIHRoYXQKLQkgKiB3aWxsIGNhdXNlIGJhZCBjaGVja3N1bSBvbiBmb3J3YXJk ZWQgcGFja2V0cwotCSAqLwotCWlmIChza2ItPmlwX3N1bW1lZCA9PSBDSEVDS1NVTV9OT05FICYm Ci0JICAgIHJjdi0+ZmVhdHVyZXMgJiBORVRJRl9GX1JYQ1NVTSkKLQkJc2tiLT5pcF9zdW1tZWQg PSBDSEVDS1NVTV9VTk5FQ0VTU0FSWTsKIAogCWlmIChsaWtlbHkoZGV2X2ZvcndhcmRfc2tiKHJj diwgc2tiKSA9PSBORVRfUlhfU1VDQ0VTUykpIHsKIAkJc3RydWN0IHBjcHVfdnN0YXRzICpzdGF0 cyA9IHRoaXNfY3B1X3B0cihkZXYtPnZzdGF0cyk7Ci0tIAoyLjEuMAoKCkZyb20gODQwNjRmMmVk MmM4MmVmOGU0ZGJjN2RlMjRjMzVmOGU3NTE2NmY5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogQW5kcmV5IFJ5YWJpbmluIDxhcnlhYmluaW5AdmlydHVvenpvLmNvbT4KRGF0ZTogTW9u LCAyMSBEZWMgMjAxNSAxMjo1NDo0NSArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMDIvMjRdIGlwdjYv YWRkcmxhYmVsOiBmaXggaXA2YWRkcmxibF9nZXQoKQoKWyBVcHN0cmVhbSBjb21taXQgZTQ1OWRm ZWViNjQwMDhiMmQyM2JkZjYwMGYwM2IzNjA1ZGJiODE1MiBdCgppcDZhZGRybGJsX2dldCgpIGhh cyBuZXZlciB3b3JrZWQuIElmIGlwNmFkZHJsYmxfaG9sZCgpIHN1Y2NlZWRlZCwKaXA2YWRkcmxi bF9nZXQoKSB3aWxsIGV4aXQgd2l0aCAnLUVTUkNIJy4gSWYgaXA2YWRkcmxibF9ob2xkKCkgZmFp bGVkLAppcDZhZGRybGJsX2dldCgpIHdpbGwgdXNlIGFib3V0IHRvIGJlIGZyZWUgaXA2YWRkcmxi bF9lbnRyeSBwb2ludGVyLgoKRml4IHRoaXMgYnkgaW52ZXJ0aW5nIGlwNmFkZHJsYmxfaG9sZCgp IGNoZWNrLgoKRml4ZXM6IDJhOGNjNmM4OTAzOSAoIltJUFY2XSBBRERSQ09ORjogU3VwcG9ydCBS RkMzNDg0IGNvbmZpZ3VyYWJsZSBhZGRyZXNzIHNlbGVjdGlvbiBwb2xpY3kgdGFibGUuIikKU2ln bmVkLW9mZi1ieTogQW5kcmV5IFJ5YWJpbmluIDxhcnlhYmluaW5AdmlydHVvenpvLmNvbT4KUmV2 aWV3ZWQtYnk6IENvbmcgV2FuZyA8Y3dhbmdAdHdvcGVuc291cmNlLmNvbT4KQWNrZWQtYnk6IFlP U0hJRlVKSSBIaWRlYWtpIDx5b3NoZnVqaUBsaW51eC1pcHY2Lm9yZz4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L2FkZHJs YWJlbC5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmxhYmVsLmMgYi9uZXQvaXB2Ni9hZGRybGFi ZWwuYwppbmRleCBmZDBkYzQ3Li43MGVmYmRkIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9hZGRybGFi ZWwuYworKysgYi9uZXQvaXB2Ni9hZGRybGFiZWwuYwpAQCAtNTU4LDcgKzU1OCw3IEBAIHN0YXRp YyBpbnQgaXA2YWRkcmxibF9nZXQoc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwgc3RydWN0IG5sbXNn aGRyICpubGgpCiAKIAlyY3VfcmVhZF9sb2NrKCk7CiAJcCA9IF9faXB2Nl9hZGRyX2xhYmVsKG5l dCwgYWRkciwgaXB2Nl9hZGRyX3R5cGUoYWRkciksIGlmYWwtPmlmYWxfaW5kZXgpOwotCWlmIChw ICYmIGlwNmFkZHJsYmxfaG9sZChwKSkKKwlpZiAocCAmJiAhaXA2YWRkcmxibF9ob2xkKHApKQog CQlwID0gTlVMTDsKIAlsc2VxID0gaXA2YWRkcmxibF90YWJsZS5zZXE7CiAJcmN1X3JlYWRfdW5s b2NrKCk7Ci0tIAoyLjEuMAoKCkZyb20gYWExY2U3MjZiZDE2MGY0YWExYjg5ZDRmYTY1ZDNhY2Mx NDE3MGM1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogWGluIExvbmcgPGx1Y2llbi54 aW5AZ21haWwuY29tPgpEYXRlOiBUdWUsIDI5IERlYyAyMDE1IDE3OjQ5OjI1ICswODAwClN1Ympl Y3Q6IFtQQVRDSCAwMy8yNF0gc2N0cDogc2N0cCBzaG91bGQgcmVsZWFzZSBhc3NvYyB3aGVuCiBz Y3RwX21ha2VfYWJvcnRfdXNlciByZXR1cm4gTlVMTCBpbiBzY3RwX2Nsb3NlCgpbIFVwc3RyZWFt IGNvbW1pdCAwNjhkOGJkMzM4ZTg1NTI4NmFlYTU0ZTcwZDFjMTAxNTY5Mjg0YjIxIF0KCkluIHNj dHBfY2xvc2UsIHNjdHBfbWFrZV9hYm9ydF91c2VyIG1heSByZXR1cm4gTlVMTCBiZWNhdXNlIG9m IG1lbW9yeQphbGxvY2F0aW9uIGZhaWx1cmUuIElmIHRoaXMgaGFwcGVucywgaXQgd2lsbCBieXBh c3MgYW55IHN0YXRlIGNoYW5nZQphbmQgbmV2ZXIgZnJlZSB0aGUgYXNzb2MuIFRoZSBhc3NvYyBo YXMgbm8gY2hhbmNlIHRvIGJlIGZyZWVkIGFuZCBpdAp3aWxsIGJlIGtlcHQgaW4gbWVtb3J5IHdp dGggdGhlIHN0YXRlIGl0IGhhZCBldmVuIGFmdGVyIHRoZSBzb2NrZXQgaXMKY2xvc2VkIGJ5IHNj dHBfY2xvc2UoKS4KClNvIGlmIHNjdHBfbWFrZV9hYm9ydF91c2VyIGZhaWxzIHRvIGFsbG9jYXRl IG1lbW9yeSwgd2Ugc2hvdWxkIGFib3J0CnRoZSBhc29jIHZpYSBzY3RwX3ByaW1pdGl2ZV9BQk9S VCBhcyB3ZWxsLiBKdXN0IGxpa2UgdGhlIGFubm90YXRpb24gaW4Kc2N0cF9zZl9jb29raWVfd2Fp dF9wcm1fYWJvcnQgYW5kIHNjdHBfc2ZfZG9fOV8xX3BybV9hYm9ydCBzYWlkLAoiRXZlbiBpZiB3 ZSBjYW4ndCBzZW5kIHRoZSBBQk9SVCBkdWUgdG8gbG93IG1lbW9yeSBkZWxldGUgdGhlIFRDQi4K VGhpcyBpcyBhIGRlcGFydHVyZSBmcm9tIG91ciB0eXBpY2FsIE5PTUVNIGhhbmRsaW5nIi4KCkJ1 dCB0aGVuIHRoZSBjaHVuayBpcyBOVUxMIChsb3cgbWVtb3J5KSBhbmQgdGhlIFNDVFBfQ01EX1JF UExZIGNtZCB3b3VsZApkZXJlZmVyZW5jZSB0aGUgY2h1bmsgcG9pbnRlciwgYW5kIHN5c3RlbSBj cmFzaC4gU28gd2Ugc2hvdWxkIGFkZApTQ1RQX0NNRF9SRVBMWSBjbWQgb25seSB3aGVuIHRoZSBj aHVuayBpcyBub3QgTlVMTCwganVzdCBsaWtlIG90aGVyCnBsYWNlcyB3aGVyZSBpdCBhZGRzIFND VFBfQ01EX1JFUExZIGNtZC4KClNpZ25lZC1vZmYtYnk6IFhpbiBMb25nIDxsdWNpZW4ueGluQGdt YWlsLmNvbT4KQWNrZWQtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRu ZXJAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVt bG9mdC5uZXQ+Ci0tLQogbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMgfCA2ICsrKystLQogbmV0L3Nj dHAvc29ja2V0LmMgICAgICAgfCAzICstLQogMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMg Yi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYwppbmRleCAzZWUyN2I3Li5lNmJiOThlIDEwMDY0NAot LS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYworKysgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMu YwpAQCAtNDgyOSw3ICs0ODI5LDggQEAgc2N0cF9kaXNwb3NpdGlvbl90IHNjdHBfc2ZfZG9fOV8x X3BybV9hYm9ydCgKIAogCXJldHZhbCA9IFNDVFBfRElTUE9TSVRJT05fQ09OU1VNRTsKIAotCXNj dHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfUkVQTFksIFNDVFBfQ0hVTksoYWJvcnQp KTsKKwlpZiAoYWJvcnQpCisJCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfUkVQ TFksIFNDVFBfQ0hVTksoYWJvcnQpKTsKIAogCS8qIEV2ZW4gaWYgd2UgY2FuJ3Qgc2VuZCB0aGUg QUJPUlQgZHVlIHRvIGxvdyBtZW1vcnkgZGVsZXRlIHRoZQogCSAqIFRDQi4gIFRoaXMgaXMgYSBk ZXBhcnR1cmUgZnJvbSBvdXIgdHlwaWNhbCBOT01FTSBoYW5kbGluZy4KQEAgLTQ5NjYsNyArNDk2 Nyw4IEBAIHNjdHBfZGlzcG9zaXRpb25fdCBzY3RwX3NmX2Nvb2tpZV93YWl0X3BybV9hYm9ydCgK IAkJCVNDVFBfVE8oU0NUUF9FVkVOVF9USU1FT1VUX1QxX0lOSVQpKTsKIAlyZXR2YWwgPSBTQ1RQ X0RJU1BPU0lUSU9OX0NPTlNVTUU7CiAKLQlzY3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBf Q01EX1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0KSk7CisJaWYgKGFib3J0KQorCQlzY3RwX2FkZF9j bWRfc2YoY29tbWFuZHMsIFNDVFBfQ01EX1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0KSk7CiAKIAlz Y3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBfQ01EX05FV19TVEFURSwKIAkJCVNDVFBfU1RB VEUoU0NUUF9TVEFURV9DTE9TRUQpKTsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NvY2tldC5jIGIv bmV0L3NjdHAvc29ja2V0LmMKaW5kZXggNDEzMGMxYi4uNzJkYTdkNSAxMDA2NDQKLS0tIGEvbmV0 L3NjdHAvc29ja2V0LmMKKysrIGIvbmV0L3NjdHAvc29ja2V0LmMKQEAgLTE1MTgsOCArMTUxOCw3 IEBAIHN0YXRpYyB2b2lkIHNjdHBfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQp CiAJCQlzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bms7CiAKIAkJCWNodW5rID0gc2N0cF9tYWtlX2Fi b3J0X3VzZXIoYXNvYywgTlVMTCwgMCk7Ci0JCQlpZiAoY2h1bmspCi0JCQkJc2N0cF9wcmltaXRp dmVfQUJPUlQobmV0LCBhc29jLCBjaHVuayk7CisJCQlzY3RwX3ByaW1pdGl2ZV9BQk9SVChuZXQs IGFzb2MsIGNodW5rKTsKIAkJfSBlbHNlCiAJCQlzY3RwX3ByaW1pdGl2ZV9TSFVURE9XTihuZXQs IGFzb2MsIE5VTEwpOwogCX0KLS0gCjIuMS4wCgoKRnJvbSBmOTg3YzczNjJkNTJlYzkyODY0MDU4 NWI0OTQ3NzhmOTdlOWI3YmE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGbG9yaWFu IFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+CkRhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MjY6MzMg KzAxMDAKU3ViamVjdDogW1BBVENIIDA0LzI0XSBjb25uZWN0b3I6IGJ1bXAgc2tiLT51c2VycyBi ZWZvcmUgY2FsbGJhY2sgaW52b2NhdGlvbgoKWyBVcHN0cmVhbSBjb21taXQgNTUyODViZjA5NDI3 YzVhYmY0M2VlMWQ1NGU4OTJmMzUyMDkyYjFmMSBdCgpEbWl0cnkgcmVwb3J0cyBtZW1sZWFrIHdp dGggc3lza2FsbGVyIHByb2dyYW0uClByb2JsZW0gaXMgdGhhdCBjb25uZWN0b3IgYnVtcHMgc2ti IHVzZWNvdW50IGJ1dCBtaWdodCBub3QgaW52b2tlIGNhbGxiYWNrLgoKU28gbW92ZSBza2JfZ2V0 IHRvIHdoZXJlIHdlIGludm9rZSB0aGUgY2FsbGJhY2suCgpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5 dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIFdlc3RwaGFs IDxmd0BzdHJsZW4uZGU+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2 ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL2Nvbm5lY3Rvci9jb25uZWN0b3IuYyB8IDExICsrKy0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY29ubmVjdG9yL2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9jb25u ZWN0b3IvY29ubmVjdG9yLmMKaW5kZXggZjYxMmQ2OC4uZmQ3NDMwZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9jb25uZWN0b3IvY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9jb25uZWN0b3IvY29ubmVj dG9yLmMKQEAgLTE3MiwyNiArMTcyLDIxIEBAIHN0YXRpYyBpbnQgY25fY2FsbF9jYWxsYmFjayhz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogICoKICAqIEl0IGNoZWNrcyBza2IsIG5ldGxpbmsgaGVhZGVy IGFuZCBtc2cgc2l6ZXMsIGFuZCBjYWxscyBjYWxsYmFjayBoZWxwZXIuCiAgKi8KLXN0YXRpYyB2 b2lkIGNuX3J4X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqX19za2IpCitzdGF0aWMgdm9pZCBjbl9yeF9z a2Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3Qgbmxtc2doZHIgKm5saDsKLQlzdHJ1 Y3Qgc2tfYnVmZiAqc2tiOwogCWludCBsZW4sIGVycjsKIAotCXNrYiA9IHNrYl9nZXQoX19za2Ip OwotCiAJaWYgKHNrYi0+bGVuID49IE5MTVNHX0hEUkxFTikgewogCQlubGggPSBubG1zZ19oZHIo c2tiKTsKIAkJbGVuID0gbmxtc2dfbGVuKG5saCk7CiAKIAkJaWYgKGxlbiA8IChpbnQpc2l6ZW9m KHN0cnVjdCBjbl9tc2cpIHx8CiAJCSAgICBza2ItPmxlbiA8IG5saC0+bmxtc2dfbGVuIHx8Ci0J CSAgICBsZW4gPiBDT05ORUNUT1JfTUFYX01TR19TSVpFKSB7Ci0JCQlrZnJlZV9za2Ioc2tiKTsK KwkJICAgIGxlbiA+IENPTk5FQ1RPUl9NQVhfTVNHX1NJWkUpCiAJCQlyZXR1cm47Ci0JCX0KIAot CQllcnIgPSBjbl9jYWxsX2NhbGxiYWNrKHNrYik7CisJCWVyciA9IGNuX2NhbGxfY2FsbGJhY2so c2tiX2dldChza2IpKTsKIAkJaWYgKGVyciA8IDApCiAJCQlrZnJlZV9za2Ioc2tiKTsKIAl9Ci0t IAoyLjEuMAoKCkZyb20gZDI0YTFjOGEyNWFjZDZiYzA2ZWQwMDM0YmM4ZGVkZDU4YjUzN2RiNCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogd2lsbHkgdGFycmVhdSA8d0Axd3QuZXU+CkRh dGU6IFN1biwgMTAgSmFuIDIwMTYgMDc6NTQ6NTYgKzAxMDAKU3ViamVjdDogW1BBVENIIDA1LzI0 XSB1bml4OiBwcm9wZXJseSBhY2NvdW50IGZvciBGRHMgcGFzc2VkIG92ZXIgdW5peCBzb2NrZXRz CgpbIFVwc3RyZWFtIGNvbW1pdCA3MTJmNGFhZDQwNmJiMWVkNjdmM2Y5OGQwNGMwNDQxOTFmMGZm NTkzIF0KCkl0IGlzIHBvc3NpYmxlIGZvciBhIHByb2Nlc3MgdG8gYWxsb2NhdGUgYW5kIGFjY3Vt dWxhdGUgZmFyIG1vcmUgRkRzIHRoYW4KdGhlIHByb2Nlc3MnIGxpbWl0IGJ5IHNlbmRpbmcgdGhl bSBvdmVyIGEgdW5peCBzb2NrZXQgdGhlbiBjbG9zaW5nIHRoZW0KdG8ga2VlcCB0aGUgcHJvY2Vz cycgZmQgY291bnQgbG93LgoKVGhpcyBjaGFuZ2UgYWRkcmVzc2VzIHRoaXMgcHJvYmxlbSBieSBr ZWVwaW5nIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgRkRzCmluIGZsaWdodCBwZXIgdXNlciBhbmQg cHJldmVudGluZyBub24tcHJpdmlsZWdlZCBwcm9jZXNzZXMgZnJvbSBoYXZpbmcKbW9yZSBGRHMg aW4gZmxpZ2h0IHRoYW4gdGhlaXIgY29uZmlndXJlZCBGRCBsaW1pdC4KClJlcG9ydGVkLWJ5OiBz b2NrZXRwYWlyQGdtYWlsLmNvbQpSZXBvcnRlZC1ieTogVGV0c3VvIEhhbmRhIDxwZW5ndWluLWtl cm5lbEBJLWxvdmUuU0FLVVJBLm5lLmpwPgpNaXRpZ2F0ZXM6IENWRS0yMDEzLTQzMTIgKExpbnV4 IDIuMCspClN1Z2dlc3RlZC1ieTogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5k YXRpb24ub3JnPgpBY2tlZC1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3Np bmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGlu Y2x1ZGUvbGludXgvc2NoZWQuaCB8ICAxICsKIG5ldC91bml4L2FmX3VuaXguYyAgICB8IDI0ICsr KysrKysrKysrKysrKysrKysrLS0tLQogbmV0L3VuaXgvZ2FyYmFnZS5jICAgIHwgMTYgKysrKysr KysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQuaCBiL2luY2x1ZGUvbGludXgv c2NoZWQuaAppbmRleCA1ZTM0NGJiLi4yYTBiY2M4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC03NTgsNiArNzU4LDcgQEAg c3RydWN0IHVzZXJfc3RydWN0IHsKIAl1bnNpZ25lZCBsb25nIG1xX2J5dGVzOwkvKiBIb3cgbWFu eSBieXRlcyBjYW4gYmUgYWxsb2NhdGVkIHRvIG1xdWV1ZT8gKi8KICNlbmRpZgogCXVuc2lnbmVk IGxvbmcgbG9ja2VkX3NobTsgLyogSG93IG1hbnkgcGFnZXMgb2YgbWxvY2tlZCBzaG0gPyAqLwor CXVuc2lnbmVkIGxvbmcgdW5peF9pbmZsaWdodDsJLyogSG93IG1hbnkgZmlsZXMgaW4gZmxpZ2h0 IGluIHVuaXggc29ja2V0cyAqLwogCiAjaWZkZWYgQ09ORklHX0tFWVMKIAlzdHJ1Y3Qga2V5ICp1 aWRfa2V5cmluZzsJLyogVUlEIHNwZWNpZmljIGtleXJpbmcgKi8KZGlmZiAtLWdpdCBhL25ldC91 bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCA3MjI5Nzk0Li4yMGQ3NTI2 IDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5j CkBAIC0xNDg2LDYgKzE0ODYsMjEgQEAgc3RhdGljIHZvaWQgdW5peF9kZXN0cnVjdF9zY20oc3Ry dWN0IHNrX2J1ZmYgKnNrYikKIAlzb2NrX3dmcmVlKHNrYik7CiB9CiAKKy8qCisgKiBUaGUgInVz ZXItPnVuaXhfaW5mbGlnaHQiIHZhcmlhYmxlIGlzIHByb3RlY3RlZCBieSB0aGUgZ2FyYmFnZQor ICogY29sbGVjdGlvbiBsb2NrLCBhbmQgd2UganVzdCByZWFkIGl0IGxvY2tsZXNzbHkgaGVyZS4g SWYgeW91IGdvCisgKiBvdmVyIHRoZSBsaW1pdCwgdGhlcmUgbWlnaHQgYmUgYSB0aW55IHJhY2Ug aW4gYWN0dWFsbHkgbm90aWNpbmcKKyAqIGl0IGFjcm9zcyB0aHJlYWRzLiBUb3VnaC4KKyAqLwor c3RhdGljIGlubGluZSBib29sIHRvb19tYW55X3VuaXhfZmRzKHN0cnVjdCB0YXNrX3N0cnVjdCAq cCkKK3sKKwlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBjdXJyZW50X3VzZXIoKTsKKworCWlm ICh1bmxpa2VseSh1c2VyLT51bml4X2luZmxpZ2h0ID4gdGFza19ybGltaXQocCwgUkxJTUlUX05P RklMRSkpKQorCQlyZXR1cm4gIWNhcGFibGUoQ0FQX1NZU19SRVNPVVJDRSkgJiYgIWNhcGFibGUo Q0FQX1NZU19BRE1JTik7CisJcmV0dXJuIGZhbHNlOworfQorCiAjZGVmaW5lIE1BWF9SRUNVUlNJ T05fTEVWRUwgNAogCiBzdGF0aWMgaW50IHVuaXhfYXR0YWNoX2ZkcyhzdHJ1Y3Qgc2NtX2Nvb2tp ZSAqc2NtLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQpAQCAtMTQ5NCw2ICsxNTA5LDkgQEAgc3RhdGlj IGludCB1bml4X2F0dGFjaF9mZHMoc3RydWN0IHNjbV9jb29raWUgKnNjbSwgc3RydWN0IHNrX2J1 ZmYgKnNrYikKIAl1bnNpZ25lZCBjaGFyIG1heF9sZXZlbCA9IDA7CiAJaW50IHVuaXhfc29ja19j b3VudCA9IDA7CiAKKwlpZiAodG9vX21hbnlfdW5peF9mZHMoY3VycmVudCkpCisJCXJldHVybiAt RVRPT01BTllSRUZTOworCiAJZm9yIChpID0gc2NtLT5mcC0+Y291bnQgLSAxOyBpID49IDA7IGkt LSkgewogCQlzdHJ1Y3Qgc29jayAqc2sgPSB1bml4X2dldF9zb2NrZXQoc2NtLT5mcC0+ZnBbaV0p OwogCkBAIC0xNTE1LDEwICsxNTMzLDggQEAgc3RhdGljIGludCB1bml4X2F0dGFjaF9mZHMoc3Ry dWN0IHNjbV9jb29raWUgKnNjbSwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlpZiAoIVVOSVhDQihz a2IpLmZwKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWlmICh1bml4X3NvY2tfY291bnQpIHsKLQkJ Zm9yIChpID0gc2NtLT5mcC0+Y291bnQgLSAxOyBpID49IDA7IGktLSkKLQkJCXVuaXhfaW5mbGln aHQoc2NtLT5mcC0+ZnBbaV0pOwotCX0KKwlmb3IgKGkgPSBzY20tPmZwLT5jb3VudCAtIDE7IGkg Pj0gMDsgaS0tKQorCQl1bml4X2luZmxpZ2h0KHNjbS0+ZnAtPmZwW2ldKTsKIAlyZXR1cm4gbWF4 X2xldmVsOwogfQogCmRpZmYgLS1naXQgYS9uZXQvdW5peC9nYXJiYWdlLmMgYi9uZXQvdW5peC9n YXJiYWdlLmMKaW5kZXggOTlmNzAxMi4uNjI0Nzc4NyAxMDA2NDQKLS0tIGEvbmV0L3VuaXgvZ2Fy YmFnZS5jCisrKyBiL25ldC91bml4L2dhcmJhZ2UuYwpAQCAtMTI1LDkgKzEyNSwxMiBAQCBzdHJ1 Y3Qgc29jayAqdW5peF9nZXRfc29ja2V0KHN0cnVjdCBmaWxlICpmaWxwKQogdm9pZCB1bml4X2lu ZmxpZ2h0KHN0cnVjdCBmaWxlICpmcCkKIHsKIAlzdHJ1Y3Qgc29jayAqcyA9IHVuaXhfZ2V0X3Nv Y2tldChmcCk7CisKKwlzcGluX2xvY2soJnVuaXhfZ2NfbG9jayk7CisKIAlpZiAocykgewogCQlz dHJ1Y3QgdW5peF9zb2NrICp1ID0gdW5peF9zayhzKTsKLQkJc3Bpbl9sb2NrKCZ1bml4X2djX2xv Y2spOworCiAJCWlmIChhdG9taWNfbG9uZ19pbmNfcmV0dXJuKCZ1LT5pbmZsaWdodCkgPT0gMSkg ewogCQkJQlVHX09OKCFsaXN0X2VtcHR5KCZ1LT5saW5rKSk7CiAJCQlsaXN0X2FkZF90YWlsKCZ1 LT5saW5rLCAmZ2NfaW5mbGlnaHRfbGlzdCk7CkBAIC0xMzUsMjIgKzEzOCwyNyBAQCB2b2lkIHVu aXhfaW5mbGlnaHQoc3RydWN0IGZpbGUgKmZwKQogCQkJQlVHX09OKGxpc3RfZW1wdHkoJnUtPmxp bmspKTsKIAkJfQogCQl1bml4X3RvdF9pbmZsaWdodCsrOwotCQlzcGluX3VubG9jaygmdW5peF9n Y19sb2NrKTsKIAl9CisJZnAtPmZfY3JlZC0+dXNlci0+dW5peF9pbmZsaWdodCsrOworCXNwaW5f dW5sb2NrKCZ1bml4X2djX2xvY2spOwogfQogCiB2b2lkIHVuaXhfbm90aW5mbGlnaHQoc3RydWN0 IGZpbGUgKmZwKQogewogCXN0cnVjdCBzb2NrICpzID0gdW5peF9nZXRfc29ja2V0KGZwKTsKKwor CXNwaW5fbG9jaygmdW5peF9nY19sb2NrKTsKKwogCWlmIChzKSB7CiAJCXN0cnVjdCB1bml4X3Nv Y2sgKnUgPSB1bml4X3NrKHMpOwotCQlzcGluX2xvY2soJnVuaXhfZ2NfbG9jayk7CisKIAkJQlVH X09OKGxpc3RfZW1wdHkoJnUtPmxpbmspKTsKIAkJaWYgKGF0b21pY19sb25nX2RlY19hbmRfdGVz dCgmdS0+aW5mbGlnaHQpKQogCQkJbGlzdF9kZWxfaW5pdCgmdS0+bGluayk7CiAJCXVuaXhfdG90 X2luZmxpZ2h0LS07Ci0JCXNwaW5fdW5sb2NrKCZ1bml4X2djX2xvY2spOwogCX0KKwlmcC0+Zl9j cmVkLT51c2VyLT51bml4X2luZmxpZ2h0LS07CisJc3Bpbl91bmxvY2soJnVuaXhfZ2NfbG9jayk7 CiB9CiAKIHN0YXRpYyB2b2lkIHNjYW5faW5mbGlnaHQoc3RydWN0IHNvY2sgKngsIHZvaWQgKCpm dW5jKShzdHJ1Y3QgdW5peF9zb2NrICopLAotLSAKMi4xLjAKCgpGcm9tIDk5Y2M1MDZiOTcxMzQy ZjY5ODNlOGUxMjMyNjYyMTBmZjE4NDczZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KRGF0ZTog VHVlLCA1IEphbiAyMDE2IDEwOjQ2OjAwICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNi8yNF0gYnJp ZGdlOiBPbmx5IGNhbGwgL3NiaW4vYnJpZGdlLXN0cCBmb3IgdGhlIGluaXRpYWwKIG5ldHdvcmsg bmFtZXNwYWNlCgpbIFVwc3RyZWFtIGNvbW1pdCBmZjYyMTk4NTUzZTQzY2RmZmE5ZDUzOWY2MTY1 ZDNlODNmOGE0MmJjIF0KCltJIHN0b2xlIHRoaXMgcGF0Y2ggZnJvbSBFcmljIEJpZWRlcm1hbi4g SGUgd3JvdGU6XQoKPiBUaGVyZSBpcyBubyBkZWZpbmVkIG1lY2hhbmlzbSB0byBwYXNzIG5ldHdv cmsgbmFtZXNwYWNlIGluZm9ybWF0aW9uCj4gaW50byAvc2Jpbi9icmlkZ2Utc3RwIHRoZXJlZm9y ZSBkb24ndCBldmVuIHRyeSB0byBpbnZva2UgaXQgZXhjZXB0Cj4gZm9yIGJyaWRnZSBkZXZpY2Vz IGluIHRoZSBpbml0aWFsIG5ldHdvcmsgbmFtZXNwYWNlLgo+Cj4gSXQgaXMgcG9zc2libGUgZm9y IHVucHJpdmlsZWdlZCB1c2VycyB0byBjYXVzZSAvc2Jpbi9icmlkZ2Utc3RwIHRvIGJlCj4gaW52 b2tlZCBmb3IgYW55IG5ldHdvcmsgZGV2aWNlIG5hbWUgd2hpY2ggaWYgL3NiaW4vYnJpZGdlLXN0 cCBkb2VzIG5vdAo+IGd1YXJkIGFnYWluc3QgdW5yZWFzb25hYmxlIGFyZ3VtZW50cyBvciBiZWlu ZyBpbnZva2VkIHR3aWNlIG9uIHRoZQo+IHNhbWUgbmV0d29yayBkZXZpY2UgY291bGQgY2F1c2Ug cHJvYmxlbXMuCgpbSGFubmVzOiBjaGFuZ2VkIHBhdGNoIHVzaW5nIG5ldG5zX2VxXQoKQ2M6IEVy aWMgVy4gQmllZGVybWFuIDxlYmllZGVybUB4bWlzc2lvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEVy aWMgVy4gQmllZGVybWFuIDxlYmllZGVybUB4bWlzc2lvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEhh bm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9icmlk Z2UvYnJfc3RwX2lmLmMgfCA1ICsrKystCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9zdHBfaWYuYyBiL25l dC9icmlkZ2UvYnJfc3RwX2lmLmMKaW5kZXggNzgzMmQwNy4uY2U2NThhYiAxMDA2NDQKLS0tIGEv bmV0L2JyaWRnZS9icl9zdHBfaWYuYworKysgYi9uZXQvYnJpZGdlL2JyX3N0cF9pZi5jCkBAIC0x MjgsNyArMTI4LDEwIEBAIHN0YXRpYyB2b2lkIGJyX3N0cF9zdGFydChzdHJ1Y3QgbmV0X2JyaWRn ZSAqYnIpCiAJY2hhciAqYXJndltdID0geyBCUl9TVFBfUFJPRywgYnItPmRldi0+bmFtZSwgInN0 YXJ0IiwgTlVMTCB9OwogCWNoYXIgKmVudnBbXSA9IHsgTlVMTCB9OwogCi0JciA9IGNhbGxfdXNl cm1vZGVoZWxwZXIoQlJfU1RQX1BST0csIGFyZ3YsIGVudnAsIFVNSF9XQUlUX1BST0MpOworCWlm IChuZXRfZXEoZGV2X25ldChici0+ZGV2KSwgJmluaXRfbmV0KSkKKwkJciA9IGNhbGxfdXNlcm1v ZGVoZWxwZXIoQlJfU1RQX1BST0csIGFyZ3YsIGVudnAsIFVNSF9XQUlUX1BST0MpOworCWVsc2UK KwkJciA9IC1FTk9FTlQ7CiAKIAlzcGluX2xvY2tfYmgoJmJyLT5sb2NrKTsKIAotLSAKMi4xLjAK CgpGcm9tIDJjZDc2YTE4OWVkMzZiMTI4NDVkOTZjODFmYjgyMDA2OTY1NDRmYzIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KRGF0ZTog VHVlLCA1IEphbiAyMDE2IDE2OjIzOjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNy8yNF0gbmV0 OiBmaWx0ZXI6IG1ha2UgSklUcyB6ZXJvIEEgZm9yIFNLRl9BRF9BTFVfWE9SX1gKClsgVXBzdHJl YW0gY29tbWl0IDU1Nzk1ZWY1NDY5MjkwZjg5ZjA0ZTEyZTY2MmRlZDYwNDkwOWU0NjIgXQoKVGhl IFNLRl9BRF9BTFVfWE9SX1ggYW5jaWxsYXJ5IGlzIG5vdCBsaWtlIHRoZSBvdGhlciBhbmNpbGxh cnkgZGF0YQppbnN0cnVjdGlvbnMgc2luY2UgaXQgWE9ScyBBIHdpdGggWCB3aGlsZSBhbGwgdGhl IG90aGVycyByZXBsYWNlIEEgd2l0aApzb21lIGxvYWRlZCB2YWx1ZS4gIEFsbCB0aGUgQlBGIEpJ VHMgZmFpbCB0byBjbGVhciBBIGlmIHRoaXMgaXMgdXNlZCBhcwp0aGUgZmlyc3QgaW5zdHJ1Y3Rp b24gaW4gYSBmaWx0ZXIuICBUaGlzIHdhcyBmb3VuZCB1c2luZyBhbWVyaWNhbiBmdXp6eQpsb3Au CgpBZGQgYSBoZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIEEgbmVlZHMgdG8gYmUgY2xlYXJlZCBnaXZl biB0aGUgZmlyc3QKaW5zdHJ1Y3Rpb24gaW4gYSBmaWx0ZXIsIGFuZCB1c2UgdGhpcyBpbiB0aGUg SklUcy4gIEV4Y2VwdCBmb3IgQVJNLCB0aGUKcmVzdCBoYXZlIG9ubHkgYmVlbiBjb21waWxlLXRl c3RlZC4KCkZpeGVzOiAzNDgwNTkzMTMxZTAgKCJuZXQ6IGZpbHRlcjogZ2V0IHJpZCBvZiBCUEZf U18qIGVudW0iKQpTaWduZWQtb2ZmLWJ5OiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+CkFj a2VkLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgpBY2tlZC1ieTog QWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2aWQg Uy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGFyY2gvYXJtL25ldC9icGZfaml0 XzMyLmMgICAgICAgfCAxNiArLS0tLS0tLS0tLS0tLS0tCiBhcmNoL21pcHMvbmV0L2JwZl9qaXQu YyAgICAgICAgIHwgMTYgKy0tLS0tLS0tLS0tLS0tLQogYXJjaC9wb3dlcnBjL25ldC9icGZfaml0 X2NvbXAuYyB8IDEzICsrLS0tLS0tLS0tLS0KIGFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcC5j ICAgfCAxNyArKy0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9saW51eC9maWx0ZXIuaCAgICAgICAg ICB8IDE5ICsrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9u cygrKSwgNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbmV0L2JwZl9qaXRf MzIuYyBiL2FyY2gvYXJtL25ldC9icGZfaml0XzMyLmMKaW5kZXggZjQxMmI1My4uYWNlNGRjMSAx MDA2NDQKLS0tIGEvYXJjaC9hcm0vbmV0L2JwZl9qaXRfMzIuYworKysgYi9hcmNoL2FybS9uZXQv YnBmX2ppdF8zMi5jCkBAIC0xNjEsMTkgKzE2MSw2IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbV93 b3Jkc191c2VkKHN0cnVjdCBqaXRfY3R4ICpjdHgpCiAJcmV0dXJuIGZscyhjdHgtPnNlZW4gJiBT RUVOX01FTSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc19sb2FkX3RvX2EodTE2IGluc3Qp Ci17Ci0Jc3dpdGNoIChpbnN0KSB7Ci0JY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9MRU46Ci0J Y2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9BQlM6Ci0JY2FzZSBCUEZfTEQgfCBCUEZfSCB8IEJQ Rl9BQlM6Ci0JY2FzZSBCUEZfTEQgfCBCUEZfQiB8IEJQRl9BQlM6Ci0JCXJldHVybiB0cnVlOwot CWRlZmF1bHQ6Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci19Ci0KIHN0YXRpYyB2b2lkIGppdF9maWxs X2hvbGUodm9pZCAqYXJlYSwgdW5zaWduZWQgaW50IHNpemUpCiB7CiAJdTMyICpwdHI7CkBAIC0x ODUsNyArMTcyLDYgQEAgc3RhdGljIHZvaWQgaml0X2ZpbGxfaG9sZSh2b2lkICphcmVhLCB1bnNp Z25lZCBpbnQgc2l6ZSkKIHN0YXRpYyB2b2lkIGJ1aWxkX3Byb2xvZ3VlKHN0cnVjdCBqaXRfY3R4 ICpjdHgpCiB7CiAJdTE2IHJlZ19zZXQgPSBzYXZlZF9yZWdzKGN0eCk7Ci0JdTE2IGZpcnN0X2lu c3QgPSBjdHgtPnNrZi0+aW5zbnNbMF0uY29kZTsKIAl1MTYgb2ZmOwogCiAjaWZkZWYgQ09ORklH X0ZSQU1FX1BPSU5URVIKQEAgLTIxNSw3ICsyMDEsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9s b2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KQogCQllbWl0KEFSTV9NT1ZfSShyX1gsIDApLCBjdHgp OwogCiAJLyogZG8gbm90IGxlYWsga2VybmVsIGRhdGEgdG8gdXNlcnNwYWNlICovCi0JaWYgKChm aXJzdF9pbnN0ICE9IChCUEZfUkVUIHwgQlBGX0spKSAmJiAhKGlzX2xvYWRfdG9fYShmaXJzdF9p bnN0KSkpCisJaWYgKGJwZl9uZWVkc19jbGVhcl9hKCZjdHgtPnNrZi0+aW5zbnNbMF0pKQogCQll bWl0KEFSTV9NT1ZfSShyX0EsIDApLCBjdHgpOwogCiAJLyogc3RhY2sgc3BhY2UgZm9yIHRoZSBC UEZfTUVNIHdvcmRzICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbmV0L2JwZl9qaXQuYyBiL2Fy Y2gvbWlwcy9uZXQvYnBmX2ppdC5jCmluZGV4IDlmZDY4MzQuLjlmZDgyZjQgMTAwNjQ0Ci0tLSBh L2FyY2gvbWlwcy9uZXQvYnBmX2ppdC5jCisrKyBiL2FyY2gvbWlwcy9uZXQvYnBmX2ppdC5jCkBA IC01NTYsMTkgKzU1Niw2IEBAIHN0YXRpYyBpbmxpbmUgdTE2IGFsaWduX3NwKHVuc2lnbmVkIGlu dCBudW0pCiAJcmV0dXJuIG51bTsKIH0KIAotc3RhdGljIGJvb2wgaXNfbG9hZF90b19hKHUxNiBp bnN0KQotewotCXN3aXRjaCAoaW5zdCkgewotCWNhc2UgQlBGX0xEIHwgQlBGX1cgfCBCUEZfTEVO OgotCWNhc2UgQlBGX0xEIHwgQlBGX1cgfCBCUEZfQUJTOgotCWNhc2UgQlBGX0xEIHwgQlBGX0gg fCBCUEZfQUJTOgotCWNhc2UgQlBGX0xEIHwgQlBGX0IgfCBCUEZfQUJTOgotCQlyZXR1cm4gdHJ1 ZTsKLQlkZWZhdWx0OgotCQlyZXR1cm4gZmFsc2U7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBzYXZl X2JwZl9qaXRfcmVncyhzdHJ1Y3Qgaml0X2N0eCAqY3R4LCB1bnNpZ25lZCBvZmZzZXQpCiB7CiAJ aW50IGkgPSAwLCByZWFsX29mZiA9IDA7CkBAIC02OTAsNyArNjc3LDYgQEAgc3RhdGljIHVuc2ln bmVkIGludCBnZXRfc3RhY2tfZGVwdGgoc3RydWN0IGppdF9jdHggKmN0eCkKIAogc3RhdGljIHZv aWQgYnVpbGRfcHJvbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eCkKIHsKLQl1MTYgZmlyc3RfaW5z dCA9IGN0eC0+c2tmLT5pbnNuc1swXS5jb2RlOwogCWludCBzcF9vZmY7CiAKIAkvKiBDYWxjdWxh dGUgdGhlIHRvdGFsIG9mZnNldCBmb3IgdGhlIHN0YWNrIHBvaW50ZXIgKi8KQEAgLTcwNCw3ICs2 OTAsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9wcm9sb2d1ZShzdHJ1Y3Qgaml0X2N0eCAqY3R4KQog CQllbWl0X2ppdF9yZWdfbW92ZShyX1gsIHJfemVybywgY3R4KTsKIAogCS8qIERvIG5vdCBsZWFr IGtlcm5lbCBkYXRhIHRvIHVzZXJzcGFjZSAqLwotCWlmICgoZmlyc3RfaW5zdCAhPSAoQlBGX1JF VCB8IEJQRl9LKSkgJiYgIShpc19sb2FkX3RvX2EoZmlyc3RfaW5zdCkpKQorCWlmIChicGZfbmVl ZHNfY2xlYXJfYSgmY3R4LT5za2YtPmluc25zWzBdKSkKIAkJZW1pdF9qaXRfcmVnX21vdmUocl9B LCByX3plcm8sIGN0eCk7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2pp dF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGNiYWUyZGYu LjZhMjkwODUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMKKysr IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYwpAQCAtNzgsMTggKzc4LDkgQEAgc3Rh dGljIHZvaWQgYnBmX2ppdF9idWlsZF9wcm9sb2d1ZShzdHJ1Y3QgYnBmX3Byb2cgKmZwLCB1MzIg KmltYWdlLAogCQlQUENfTEkocl9YLCAwKTsKIAl9CiAKLQlzd2l0Y2ggKGZpbHRlclswXS5jb2Rl KSB7Ci0JY2FzZSBCUEZfUkVUIHwgQlBGX0s6Ci0JY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9M RU46Ci0JY2FzZSBCUEZfTEQgfCBCUEZfVyB8IEJQRl9BQlM6Ci0JY2FzZSBCUEZfTEQgfCBCUEZf SCB8IEJQRl9BQlM6Ci0JY2FzZSBCUEZfTEQgfCBCUEZfQiB8IEJQRl9BQlM6Ci0JCS8qIGZpcnN0 IGluc3RydWN0aW9uIHNldHMgQSByZWdpc3RlciAob3IgaXMgUkVUICdjb25zdGFudCcpICovCi0J CWJyZWFrOwotCWRlZmF1bHQ6Ci0JCS8qIG1ha2Ugc3VyZSB3ZSBkb250IGxlYWsga2VybmVsIGlu Zm9ybWF0aW9uIHRvIHVzZXIgKi8KKwkvKiBtYWtlIHN1cmUgd2UgZG9udCBsZWFrIGtlcm5lbCBp bmZvcm1hdGlvbiB0byB1c2VyICovCisJaWYgKGJwZl9uZWVkc19jbGVhcl9hKCZmaWx0ZXJbMF0p KQogCQlQUENfTEkocl9BLCAwKTsKLQl9CiB9CiAKIHN0YXRpYyB2b2lkIGJwZl9qaXRfYnVpbGRf ZXBpbG9ndWUodTMyICppbWFnZSwgc3RydWN0IGNvZGVnZW5fY29udGV4dCAqY3R4KQpkaWZmIC0t Z2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3NwYXJjL25ldC9icGZf aml0X2NvbXAuYwppbmRleCBmMzNlN2M3Li41Y2YxNzBhIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJj L25ldC9icGZfaml0X2NvbXAuYworKysgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXAuYwpA QCAtNDIwLDIyICs0MjAsOSBAQCB2b2lkIGJwZl9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3Byb2cg KmZwKQogCQl9CiAJCWVtaXRfcmVnX21vdmUoTzcsIHJfc2F2ZWRfTzcpOwogCi0JCXN3aXRjaCAo ZmlsdGVyWzBdLmNvZGUpIHsKLQkJY2FzZSBCUEZfUkVUIHwgQlBGX0s6Ci0JCWNhc2UgQlBGX0xE IHwgQlBGX1cgfCBCUEZfTEVOOgotCQljYXNlIEJQRl9MRCB8IEJQRl9XIHwgQlBGX0FCUzoKLQkJ Y2FzZSBCUEZfTEQgfCBCUEZfSCB8IEJQRl9BQlM6Ci0JCWNhc2UgQlBGX0xEIHwgQlBGX0IgfCBC UEZfQUJTOgotCQkJLyogVGhlIGZpcnN0IGluc3RydWN0aW9uIHNldHMgdGhlIEEgcmVnaXN0ZXIg KG9yIGlzCi0JCQkgKiBhICJSRVQgJ2NvbnN0YW50JyIpCi0JCQkgKi8KLQkJCWJyZWFrOwotCQlk ZWZhdWx0OgotCQkJLyogTWFrZSBzdXJlIHdlIGRvbnQgbGVhayBrZXJuZWwgaW5mb3JtYXRpb24g dG8gdGhlCi0JCQkgKiB1c2VyLgotCQkJICovCisJCS8qIE1ha2Ugc3VyZSB3ZSBkb250IGxlYWsg a2VybmVsIGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyLiAqLworCQlpZiAoYnBmX25lZWRzX2NsZWFy X2EoJmZpbHRlclswXSkpCiAJCQllbWl0X2NsZWFyKHJfQSk7IC8qIEEgPSAwICovCi0JCX0KIAog CQlmb3IgKGkgPSAwOyBpIDwgZmxlbjsgaSsrKSB7CiAJCQl1bnNpZ25lZCBpbnQgSyA9IGZpbHRl cltpXS5rOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGlu dXgvZmlsdGVyLmgKaW5kZXggY2E5NWFiZC4uYzgwYjFhOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9s aW51eC9maWx0ZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCkBAIC00MjcsNiArNDI3 LDI1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpm cCkKIAogI2RlZmluZSBCUEZfQU5DCQlCSVQoMTUpCiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBicGZf bmVlZHNfY2xlYXJfYShjb25zdCBzdHJ1Y3Qgc29ja19maWx0ZXIgKmZpcnN0KQoreworCXN3aXRj aCAoZmlyc3QtPmNvZGUpIHsKKwljYXNlIEJQRl9SRVQgfCBCUEZfSzoKKwljYXNlIEJQRl9MRCB8 IEJQRl9XIHwgQlBGX0xFTjoKKwkJcmV0dXJuIGZhbHNlOworCisJY2FzZSBCUEZfTEQgfCBCUEZf VyB8IEJQRl9BQlM6CisJY2FzZSBCUEZfTEQgfCBCUEZfSCB8IEJQRl9BQlM6CisJY2FzZSBCUEZf TEQgfCBCUEZfQiB8IEJQRl9BQlM6CisJCWlmIChmaXJzdC0+ayA9PSBTS0ZfQURfT0ZGICsgU0tG X0FEX0FMVV9YT1JfWCkKKwkJCXJldHVybiB0cnVlOworCQlyZXR1cm4gZmFsc2U7CisKKwlkZWZh dWx0OgorCQlyZXR1cm4gdHJ1ZTsKKwl9Cit9CisKIHN0YXRpYyBpbmxpbmUgdTE2IGJwZl9hbmNf aGVscGVyKGNvbnN0IHN0cnVjdCBzb2NrX2ZpbHRlciAqZnRlc3QpCiB7CiAJQlVHX09OKGZ0ZXN0 LT5jb2RlICYgQlBGX0FOQyk7Ci0tIAoyLjEuMAoKCkZyb20gNDA0MDY4MjJjOWMxOWNhNzY1ODI1 N2U1ZTczMDk3NmI4Y2U5MTJkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiBG YXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCA1IEphbiAyMDE2 IDA5OjExOjM2IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwOC8yNF0gbmV0OiBzY2hlZDogZml4IG1p c3NpbmcgZnJlZSBwZXIgY3B1IG9uIHFzdGF0cwoKWyBVcHN0cmVhbSBjb21taXQgNzNjMjBhOGI3 MjQ1MjczMTI1Y2ZlOTJjNGI0NmU2ZmRiNTY4YTgwMSBdCgpXaGVuIGEgcWRpc2MgaXMgdXNpbmcg cGVyIGNwdSBzdGF0cyAoY3VycmVudGx5IGp1c3QgdGhlIGluZ3Jlc3MKcWRpc2MpIG9ubHkgdGhl IGJzdGF0cyBhcmUgYmVpbmcgZnJlZWQuIFRoaXMgYWxzbyBmcmVlJ3MgdGhlIHFzdGF0cy4KCkZp eGVzOiBiMGFiNmY5Mjc1MmI5ZjlkOCAoIm5ldDogc2NoZWQ6IGVuYWJsZSBwZXIgY3B1IHFzdGF0 cyIpClNpZ25lZC1vZmYtYnk6IEpvaG4gRmFzdGFiZW5kIDxqb2huLnIuZmFzdGFiZW5kQGludGVs LmNvbT4KQWNrZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KQWNrZWQt Ynk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvc2NoZWQvc2No X2dlbmVyaWMuYyB8IDQgKysrLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jIGIvbmV0L3Nj aGVkL3NjaF9nZW5lcmljLmMKaW5kZXggNmVmY2EzMC4uNTA3ZWRjZiAxMDA2NDQKLS0tIGEvbmV0 L3NjaGVkL3NjaF9nZW5lcmljLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMKQEAgLTY2 Niw4ICs2NjYsMTAgQEAgc3RhdGljIHZvaWQgcWRpc2NfcmN1X2ZyZWUoc3RydWN0IHJjdV9oZWFk ICpoZWFkKQogewogCXN0cnVjdCBRZGlzYyAqcWRpc2MgPSBjb250YWluZXJfb2YoaGVhZCwgc3Ry dWN0IFFkaXNjLCByY3VfaGVhZCk7CiAKLQlpZiAocWRpc2NfaXNfcGVyY3B1X3N0YXRzKHFkaXNj KSkKKwlpZiAocWRpc2NfaXNfcGVyY3B1X3N0YXRzKHFkaXNjKSkgewogCQlmcmVlX3BlcmNwdShx ZGlzYy0+Y3B1X2JzdGF0cyk7CisJCWZyZWVfcGVyY3B1KHFkaXNjLT5jcHVfcXN0YXRzKTsKKwl9 CiAKIAlrZnJlZSgoY2hhciAqKSBxZGlzYyAtIHFkaXNjLT5wYWRkZWQpOwogfQotLSAKMi4xLjAK CgpGcm9tIDQ4ZWFmYjQ4ZjA1Y2EyMDk2NWM4YThjNmEzNTRiZjY1ODMwOTk2ZGUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IEZyYW5jZXNjbyBSdWdnZXJpIDxmcnVnZ2VyaUBhcmlzdGFu ZXR3b3Jrcy5jb20+CkRhdGU6IFdlZCwgNiBKYW4gMjAxNiAwMDoxODo0OCAtMDgwMApTdWJqZWN0 OiBbUEFUQ0ggMDkvMjRdIG5ldDogcG9zc2libGUgdXNlIGFmdGVyIGZyZWUgaW4gZHN0X3JlbGVh c2UKClsgVXBzdHJlYW0gY29tbWl0IDA3YTVkMzg0NTM1OTkwNTJhZmYwODc3YjE2YmI5YzE1ODVm MDg2MDkgXQoKZHN0X3JlbGVhc2Ugc2hvdWxkIG5vdCBhY2Nlc3MgZHN0LT5mbGFncyBhZnRlciBk ZWNyZW1lbnRpbmcKX19yZWZjbnQgdG8gMC4gVGhlIGRzdF9lbnRyeSBtYXkgYmUgaW4gZHN0X2J1 c3lfbGlzdCBhbmQKZHN0X2djX3Rhc2sgbWF5IGRzdF9kZXN0cm95IGl0IGJlZm9yZSBkc3RfcmVs ZWFzZSBnZXRzIGEgY2hhbmNlCnRvIGFjY2VzcyBkc3QtPmZsYWdzLgoKRml4ZXM6IGQ2OWJiZjg4 YzhkMCAoIm5ldDogZml4IGEgcmFjZSBpbiBkc3RfcmVsZWFzZSgpIikKRml4ZXM6IDI3Yjc1Yzk1 ZjEwZCAoIm5ldDogYXZvaWQgUkNVIGZvciBOT0NBQ0hFIGRzdCIpClNpZ25lZC1vZmYtYnk6IEZy YW5jZXNjbyBSdWdnZXJpIDxmcnVnZ2VyaUBhcmlzdGEuY29tPgpBY2tlZC1ieTogRXJpYyBEdW1h emV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIg PGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2NvcmUvZHN0LmMgfCAzICsrLQogMSBmaWxl IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25l dC9jb3JlL2RzdC5jIGIvbmV0L2NvcmUvZHN0LmMKaW5kZXggYTgwZTkyMy4uNTc3NDZhMSAxMDA2 NDQKLS0tIGEvbmV0L2NvcmUvZHN0LmMKKysrIGIvbmV0L2NvcmUvZHN0LmMKQEAgLTI4MiwxMCAr MjgyLDExIEBAIHZvaWQgZHN0X3JlbGVhc2Uoc3RydWN0IGRzdF9lbnRyeSAqZHN0KQogewogCWlm IChkc3QpIHsKIAkJaW50IG5ld3JlZmNudDsKKwkJdW5zaWduZWQgc2hvcnQgbm9jYWNoZSA9IGRz dC0+ZmxhZ3MgJiBEU1RfTk9DQUNIRTsKIAogCQluZXdyZWZjbnQgPSBhdG9taWNfZGVjX3JldHVy bigmZHN0LT5fX3JlZmNudCk7CiAJCVdBUk5fT04obmV3cmVmY250IDwgMCk7Ci0JCWlmICghbmV3 cmVmY250ICYmIHVubGlrZWx5KGRzdC0+ZmxhZ3MgJiBEU1RfTk9DQUNIRSkpCisJCWlmICghbmV3 cmVmY250ICYmIHVubGlrZWx5KG5vY2FjaGUpKQogCQkJY2FsbF9yY3UoJmRzdC0+cmN1X2hlYWQs IGRzdF9kZXN0cm95X3JjdSk7CiAJfQogfQotLSAKMi4xLjAKCgpGcm9tIGY2YTkxOTRiZmQ1YzRm ZmJkMmE1MmY0ZmVkY2Q1NmJkMzM5ZjRlZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE5pY29sYXMgRGljaHRlbCA8bmljb2xhcy5kaWNodGVsQDZ3aW5kLmNvbT4KRGF0ZTogVGh1LCA3 IEphbiAyMDE2IDExOjI2OjUzICswMTAwClN1YmplY3Q6IFtQQVRDSCAxMC8yNF0gdnhsYW46IGZp eCB0ZXN0IHdoaWNoIGRldGVjdCBkdXBsaWNhdGUgdnhsYW4gaWZhY2UKClsgVXBzdHJlYW0gY29t bWl0IDA3YjliMzdjMjI3Y2I4ZDg4ZDQ3OGI0YTljNTYzNGZlZTUxNGVkZTEgXQoKV2hlbiBhIHZ4 bGFuIGludGVyZmFjZSBpcyBjcmVhdGVkLCB0aGUgZHJpdmVyIGNoZWNrcyB0aGF0IHRoZXJlIGlz IG5vdAphbm90aGVyIHZ4bGFuIGludGVyZmFjZSB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMuIFRv IGRvIHRoaXMsIGl0IGNoZWNrcwp0aGUgZXhpc3RpbmcgdnhsYW4gdWRwIHNvY2tldC4gU2luY2Ug Y29tbWl0IDFjNTFhOTE1OWRkZSwgdGhlIGNyZWF0aW9uIG9mCnRoZSB2eGxhbiBzb2NrZXQgaXMg ZG9uZSBvbmx5IHdoZW4gdGhlIGludGVyZmFjZSBpcyBzZXQgdXAsIHRodXMgaXQgYnJlYWtzCnRo YXQgdGVzdC4KCkV4YW1wbGU6CiQgaXAgbCBhIHZ4bGFuMTAgdHlwZSB2eGxhbiBpZCAxMCBncm91 cCAyMzkuMC4wLjEwIGRldiBldGgwIGRzdHBvcnQgMAokIGlwIGwgYSB2eGxhbjExIHR5cGUgdnhs YW4gaWQgMTAgZ3JvdXAgMjM5LjAuMC4xMCBkZXYgZXRoMCBkc3Rwb3J0IDAKJCBpcCAtYnIgbCB8 IGdyZXAgdnhsYW4KdnhsYW4xMCAgICAgICAgICBET1dOICAgICAgICAgICBmMjo1NToxYzo2YTpm YjowMCA8QlJPQURDQVNULE1VTFRJQ0FTVD4KdnhsYW4xMSAgICAgICAgICBET1dOICAgICAgICAg ICA3YTpjYjpiOTozODo1OTowZCA8QlJPQURDQVNULE1VTFRJQ0FTVD4KCkluc3RlYWQgb2YgY2hl Y2tpbmcgc29ja2V0cywgbGV0J3MgbG9vcCBvdmVyIHRoZSB2eGxhbiBpZmFjZSBsaXN0LgoKRml4 ZXM6IDFjNTFhOTE1OWRkZSAoInZ4bGFuOiBmaXggcmFjZSBjYXVzZWQgYnkgZHJvcHBpbmcgcnRu bF91bmxvY2siKQpSZXBvcnRlZC1ieTogVGhvbWFzIEZhaXZyZSA8dGhvbWFzLmZhaXZyZUA2d2lu ZC5jb20+ClNpZ25lZC1vZmYtYnk6IE5pY29sYXMgRGljaHRlbCA8bmljb2xhcy5kaWNodGVsQDZ3 aW5kLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIGRyaXZlcnMvbmV0L3Z4bGFuLmMgfCAxMiArKysrKysrKy0tLS0KIGluY2x1ZGUv bmV0L3Z4bGFuLmggfCAgNSArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCsp LCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuLmMgYi9kcml2 ZXJzL25ldC92eGxhbi5jCmluZGV4IDI4MjZjNTUuLjU5MjgyZGQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3Z4bGFuLmMKKysrIGIvZHJpdmVycy9uZXQvdnhsYW4uYwpAQCAtMjQzMyw3ICsyNDMz LDcgQEAgc3RhdGljIGludCB2eGxhbl9uZXdsaW5rKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5l dF9kZXZpY2UgKmRldiwKIAkJCSBzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpk YXRhW10pCiB7CiAJc3RydWN0IHZ4bGFuX25ldCAqdm4gPSBuZXRfZ2VuZXJpYyhuZXQsIHZ4bGFu X25ldF9pZCk7Ci0Jc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4gPSBuZXRkZXZfcHJpdihkZXYpOwor CXN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuID0gbmV0ZGV2X3ByaXYoZGV2KSwgKnRtcDsKIAlzdHJ1 Y3QgdnhsYW5fcmRzdCAqZHN0ID0gJnZ4bGFuLT5kZWZhdWx0X2RzdDsKIAlfX3UzMiB2bmk7CiAJ aW50IGVycjsKQEAgLTI1NTQsOSArMjU1NCwxMyBAQCBzdGF0aWMgaW50IHZ4bGFuX25ld2xpbmso c3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCSAgICBubGFfZ2V0X3U4 KGRhdGFbSUZMQV9WWExBTl9VRFBfWkVST19DU1VNNl9SWF0pKQogCQl2eGxhbi0+ZmxhZ3MgfD0g VlhMQU5fRl9VRFBfWkVST19DU1VNNl9SWDsKIAotCWlmICh2eGxhbl9maW5kX3ZuaShuZXQsIHZu aSwgdXNlX2lwdjYgPyBBRl9JTkVUNiA6IEFGX0lORVQsCi0JCQkgICB2eGxhbi0+ZHN0X3BvcnQp KSB7Ci0JCXByX2luZm8oImR1cGxpY2F0ZSBWTkkgJXVcbiIsIHZuaSk7CisJbGlzdF9mb3JfZWFj aF9lbnRyeSh0bXAsICZ2bi0+dnhsYW5fbGlzdCwgbmV4dCkgeworCQlpZiAodG1wLT5kZWZhdWx0 X2RzdC5yZW1vdGVfdm5pID09IHZuaSAmJgorCQkgICAgKHRtcC0+ZGVmYXVsdF9kc3QucmVtb3Rl X2lwLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNiB8fAorCQkgICAgIHRtcC0+c2FkZHIuc2Euc2Ff ZmFtaWx5ID09IEFGX0lORVQ2KSA9PSB1c2VfaXB2NiAmJgorCQkgICAgdG1wLT5kc3RfcG9ydCA9 PSB2eGxhbi0+ZHN0X3BvcnQgJiYKKwkJICAgICh0bXAtPmZsYWdzICYgVlhMQU5fRl9SQ1ZfRkxB R1MpID09CisJCSAgICAodnhsYW4tPmZsYWdzICYgVlhMQU5fRl9SQ1ZfRkxBR1MpKQogCQlyZXR1 cm4gLUVFWElTVDsKIAl9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3Z4bGFuLmggYi9pbmNs dWRlL25ldC92eGxhbi5oCmluZGV4IDkwMzQ2MWEuLjJmMzU3MmYgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbmV0L3Z4bGFuLmgKKysrIGIvaW5jbHVkZS9uZXQvdnhsYW4uaApAQCAtNDMsNiArNDMsMTEg QEAgc3RydWN0IHZ4bGFuX3NvY2sgewogI2RlZmluZSBWWExBTl9GX1VEUF9aRVJPX0NTVU02X1RY CTB4ODAKICNkZWZpbmUgVlhMQU5fRl9VRFBfWkVST19DU1VNNl9SWAkweDEwMAogCisvKiBGbGFn cyB0aGF0IGFyZSB1c2VkIGluIHRoZSByZWNlaXZlIHBhdGguIFRoZXNlIGZsYWdzIG11c3QgbWF0 Y2ggaW4KKyAqIG9yZGVyIGZvciBhIHNvY2tldCB0byBiZSBzaGFyZWFibGUKKyAqLworI2RlZmlu ZSBWWExBTl9GX1JDVl9GTEFHUwkJVlhMQU5fRl9VRFBfWkVST19DU1VNNl9SWAorCQkJCQkgCiBz dHJ1Y3QgdnhsYW5fc29jayAqdnhsYW5fc29ja19hZGQoc3RydWN0IG5ldCAqbmV0LCBfX2JlMTYg cG9ydCwKIAkJCQkgIHZ4bGFuX3Jjdl90ICpyY3YsIHZvaWQgKmRhdGEsCiAJCQkJICBib29sIG5v X3NoYXJlLCB1MzIgZmxhZ3MpOwotLSAKMi4xLjAKCgpGcm9tIDU4NmFiN2E2ZmRiYWVkN2VjNmU4 NWMxMzEwMTM1YTY2NzViN2U5NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFNhc2hh IExldmluIDxzYXNoYS5sZXZpbkBvcmFjbGUuY29tPgpEYXRlOiBUaHUsIDcgSmFuIDIwMTYgMTQ6 NTI6NDMgLTA1MDAKU3ViamVjdDogW1BBVENIIDExLzI0XSBuZXQ6IHNjdHA6IHByZXZlbnQgd3Jp dGVzIHRvIGNvb2tpZV9obWFjX2FsZyBmcm9tCiBhY2Nlc3NpbmcgaW52YWxpZCBtZW1vcnkKClsg VXBzdHJlYW0gY29tbWl0IDMyMGYxYTRhMTc1ZTdjZDVkM2YwMDZmOTJiNGQ0ZDNlMmNiYjdiYjUg XQoKcHJvY19kb3N0cmluZygpIG5lZWRzIGFuIGluaXRpYWxpemVkIGRlc3RpbmF0aW9uIHN0cmlu Zywgd2hpbGUgdGhlIG9uZQpwcm92aWRlZCBpbiBwcm9jX3NjdHBfZG9faG1hY19hbGcoKSBjb250 YWlucyBzdGFjayBnYXJiYWdlLgoKVGh1cywgd3JpdGluZyB0byBjb29raWVfaG1hY19hbGcgd291 bGQgc3RybGVuKCkgdGhhdCBnYXJiYWdlIGFuZCBlbmQgdXAKYWNjZXNzaW5nIGludmFsaWQgbWVt b3J5LgoKRml4ZXM6IDNjNjgxOThlNyAoInNjdHA6IE1ha2UgaG1hYyBhbGdvcml0aG0gc2VsZWN0 aW9uIGZvciBjb29raWUgZ2VuZXJhdGlvbiBkeW5hbWljIikKU2lnbmVkLW9mZi1ieTogU2FzaGEg TGV2aW4gPHNhc2hhLmxldmluQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvc2N0cC9zeXNjdGwuYyB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL25ldC9zY3RwL3N5c2N0bC5jIGIvbmV0L3NjdHAvc3lzY3RsLmMKaW5kZXggMmU5YWRhMS4u NWI2ZTc1NyAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc3lzY3RsLmMKKysrIGIvbmV0L3NjdHAvc3lz Y3RsLmMKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgaW50IHByb2Nfc2N0cF9kb19obWFjX2Fs ZyhzdHJ1Y3QgY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSwKIAlzdHJ1Y3QgY3RsX3RhYmxlIHRi bDsKIAlib29sIGNoYW5nZWQgPSBmYWxzZTsKIAljaGFyICpub25lID0gIm5vbmUiOwotCWNoYXIg dG1wWzhdOworCWNoYXIgdG1wWzhdID0gezB9OwogCWludCByZXQ7CiAKIAltZW1zZXQoJnRibCwg MCwgc2l6ZW9mKHN0cnVjdCBjdGxfdGFibGUpKTsKLS0gCjIuMS4wCgoKRnJvbSA2ZmNhYzRhYmJj OTAyZTExOWYzNWEyYjU0Y2I1ZDVjNTZkNjhjZjFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IEZyaSwgOCBKYW4g MjAxNiAwOTozNTo1MSAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTIvMjRdIGlwdjY6IHRjcDogYWRk IHJjdSBsb2NraW5nIGluIHRjcF92Nl9zZW5kX3N5bmFjaygpCgpbIFVwc3RyZWFtIGNvbW1pdCAz ZTQwMDZmMGI4NmE1YWU1ZWIwZTgyMTVmOWE5ZTFkYjI0NTA2OTc3IF0KCldoZW4gZmlyc3QgU1lO QUNLIGlzIHNlbnQsIHdlIGFscmVhZHkgaG9sZCByY3VfcmVhZF9sb2NrKCksIGJ1dCB0aGlzCmlz IG5vdCB0cnVlIGlmIGEgU1lOQUNLIGlzIHJldHJhbnNtaXR0ZWQsIGFzIGEgdGltZXIgKHNvZnQp IGludGVycnVwdApkb2VzIG5vdCBob2xkIHJjdV9yZWFkX2xvY2soKQoKRml4ZXM6IDQ1ZjZmYWQ4 NGNjMzAgKCJpcHY2OiBhZGQgY29tcGxldGUgcmN1IHByb3RlY3Rpb24gYXJvdW5kIG5wLT5vcHQi KQpSZXBvcnRlZC1ieTogRGF2ZSBKb25lcyA8ZGF2ZWpAY29kZW1vbmtleS5vcmcudWs+ClNpZ25l ZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9pcHY2L3Rj cF9pcHY2LmMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBiL25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggYjVh NGFjOC4uNzhkMTgwNiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvdGNwX2lwdjYuYworKysgYi9uZXQv aXB2Ni90Y3BfaXB2Ni5jCkBAIC01MDIsOCArNTAyLDEwIEBAIHN0YXRpYyBpbnQgdGNwX3Y2X3Nl bmRfc3luYWNrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCQkJZmw2 LT5mbG93bGFiZWwgPSBpcDZfZmxvd2xhYmVsKGlwdjZfaGRyKGlyZXEtPnBrdG9wdHMpKTsKIAog CQlza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCBxdWV1ZV9tYXBwaW5nKTsKKwkJcmN1X3JlYWRf bG9jaygpOwogCQllcnIgPSBpcDZfeG1pdChzaywgc2tiLCBmbDYsIHJjdV9kZXJlZmVyZW5jZShu cC0+b3B0KSwKIAkJCSAgICAgICBucC0+dGNsYXNzKTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CiAJ CWVyciA9IG5ldF94bWl0X2V2YWwoZXJyKTsKIAl9CiAKLS0gCjIuMS4wCgoKRnJvbSA5ODFmMmI4 NjEwZDA0ZDJkYjRmYTE0YWFiZTNhNjMwZWY2NTU2NDYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBOZWFsIENhcmR3ZWxsIDxuY2FyZHdlbGxAZ29vZ2xlLmNvbT4KRGF0ZTogTW9uLCAx MSBKYW4gMjAxNiAxMzo0Mjo0MyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMjRdIHRjcF95ZWFo OiBkb24ndCBzZXQgc3N0aHJlc2ggYmVsb3cgMgoKWyBVcHN0cmVhbSBjb21taXQgODNkMTVlNzBj NGQ4OTA5ZDcyMmMwZDY0NzQ3ZDhmYjQyZTM4YTQ4ZiBdCgpGb3IgdGNwX3llYWgsIHVzZSBhbiBz c3RocmVzaCBmbG9vciBvZiAyLCB0aGUgc2FtZSBmbG9vciB1c2VkIGJ5IFJlbm8KYW5kIENVQklD LCBwZXIgUkZDIDU2ODEgKGVxdWF0aW9uIDQpLgoKdGNwX3llYWhfc3N0aHJlc2goKSB3YXMgc29t ZXRpbWVzIHJldHVybmluZyBhIDAgb3IgbmVnYXRpdmUgc3N0aHJlc2gKdmFsdWUgaWYgdGhlIGlu dGVuZGVkIHJlZHVjdGlvbiBpcyBhcyBiaWcgb3IgYmlnZ2VyIHRoYW4gdGhlIGN1cnJlbnQKY3du ZC4gQ29uZ2VzdGlvbiBjb250cm9sIG1vZHVsZXMgc2hvdWxkIG5ldmVyIHJldHVybiBhIHplcm8g b3IKbmVnYXRpdmUgc3N0aHJlc2guIEEgemVybyBzc3RocmVzaCBnZW5lcmFsbHkgcmVzdWx0cyBp biBhIHplcm8gY3duZCwKY2F1c2luZyB0aGUgY29ubmVjdGlvbiB0byBzdGFsbC4gQSBuZWdhdGl2 ZSBzc3RocmVzaCB2YWx1ZSB3aWxsIGJlCmludGVycHJldGVkIGFzIGEgdTMyIGFuZCB3aWxsIHNl dCBhIHRhcmdldCBjd25kIGZvciBQUlIgbmVhciA0CmJpbGxpb24uCgpPbGVrc2FuZHIgTmF0YWxl bmtvIHJlcG9ydGVkIHRoYXQgYSBzeXN0ZW0gdXNpbmcgdGNwX3llYWggd2l0aCBFQ04KY291bGQg c2VlIGEgd2FybmluZyBhYm91dCBhIHByaW9yX2N3bmQgb2YgMCBpbgp0Y3BfY3duZF9yZWR1Y3Rp b24oKS4gVGVzdGluZyB2ZXJpZmllZCB0aGF0IHRoaXMgd2FzIGR1ZSB0bwp0Y3BfeWVhaF9zc3Ro cmVzaCgpIG1pc2JlaGF2aW5nIGluIHRoaXMgd2F5LgoKUmVwb3J0ZWQtYnk6IE9sZWtzYW5kciBO YXRhbGVua28gPG9sZWtzYW5kckBuYXRhbGVua28ubmFtZT4KU2lnbmVkLW9mZi1ieTogTmVhbCBD YXJkd2VsbCA8bmNhcmR3ZWxsQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFl1Y2h1bmcgQ2hl bmcgPHljaGVuZ0Bnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1h emV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2 ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC90Y3BfeWVhaC5jIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQv dGNwX3llYWguYyBiL25ldC9pcHY0L3RjcF95ZWFoLmMKaW5kZXggY2Q3MjczMi4uMjVhMjI5NyAx MDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX3llYWguYworKysgYi9uZXQvaXB2NC90Y3BfeWVhaC5j CkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIHUzMiB0Y3BfeWVhaF9zc3RocmVzaChzdHJ1Y3Qg c29jayAqc2spCiAJeWVhaC0+ZmFzdF9jb3VudCA9IDA7CiAJeWVhaC0+cmVub19jb3VudCA9IG1h eCh5ZWFoLT5yZW5vX2NvdW50Pj4xLCAyVSk7CiAKLQlyZXR1cm4gdHAtPnNuZF9jd25kIC0gcmVk dWN0aW9uOworCXJldHVybiBtYXhfdChpbnQsIHRwLT5zbmRfY3duZCAtIHJlZHVjdGlvbiwgMik7 CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHRjcF95ZWFoIF9fcmVhZF9t b3N0bHkgPSB7Ci0tIAoyLjEuMAoKCkZyb20gNzE1YmZiYjNjZjljYmJjNDAxMDQyNjg5OWEyMDVl OWVjZDJhMTJhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS2FybCBIZWlzcyA8a2hl aXNzQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMSBKYW4gMjAxNiAwODoyODo0MyAtMDUwMApTdWJq ZWN0OiBbUEFUQ0ggMTQvMjRdIGJvbmRpbmc6IFByZXZlbnQgSVB2NiBsaW5rIGxvY2FsIGFkZHJl c3Mgb24gZW5zbGF2ZWQKIGRldmljZXMKClsgVXBzdHJlYW0gY29tbWl0IDAzZDg0YTVmODNhNjdl NjkyYWYwMGEzZDM5MDFlNzgyMGUzZTg0ZDUgXQoKQ29tbWl0IDFmNzE4ZjBmNGY5NyAoImJvbmRp bmc6IHBvcHVsYXRlIG5laWdoYm91cidzIHByaXZhdGUgb24gZW5zbGF2ZSIpCnVuZG9lcyB0aGUg Zml4IHByb3ZpZGVkIGJ5IGNvbW1pdCBjMmVkYWNmODBlMTUgKCJib25kaW5nIC8gaXB2Njogbm8g YWRkcmNvbmYKZm9yIHNsYXZlcyBzZXBhcmF0ZWx5IGZyb20gbWFzdGVyIikgYnkgZWZmZWN0aXZl bHkgc2V0dGluZyB0aGUgc2xhdmUgZmxhZwphZnRlciB0aGUgc2xhdmUgaGFzIGJlZW4gb3BlbmVk LiAgSWYgdGhlIHNsYXZlIGNvbWVzIHVwIHF1aWNrbHkgZW5vdWdoLCBpdAp3aWxsIGdvIHRocm91 Z2ggdGhlIElQdjYgYWRkcmNvbmYgYmVmb3JlIHRoZSBzbGF2ZSBmbGFnIGhhcyBiZWVuIHNldCBh bmQKd2lsbCBnZXQgYSBsaW5rIGxvY2FsIElQdjYgYWRkcmVzcy4KCkluIG9yZGVyIHRvIGVuc3Vy ZSB0aGF0IGFkZHJjb25mIGtub3dzIHRvIGlnbm9yZSB0aGUgc2xhdmUgZGV2aWNlcyBvbiBzdGF0 ZQpjaGFuZ2UsIHNldCBJRkZfU0xBVkUgYmVmb3JlIGRldl9vcGVuKCkgZHVyaW5nIGJvbmRpbmcg ZW5zbGF2ZW1lbnQuCgpGaXhlczogMWY3MThmMGY0Zjk3ICgiYm9uZGluZzogcG9wdWxhdGUgbmVp Z2hib3VyJ3MgcHJpdmF0ZSBvbiBlbnNsYXZlIikKU2lnbmVkLW9mZi1ieTogS2FybCBIZWlzcyA8 a2hlaXNzQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogSmF5IFZvc2J1cmdoIDxqYXkudm9zYnVy Z2hAY2Fub25pY2FsLmNvbT4KUmV2aWV3ZWQtYnk6IEphcm9kIFdpbHNvbiA8amFyb2RAcmVkaGF0 LmNvbT4KU2lnbmVkLW9mZi1ieTogQW5keSBHb3Nwb2RhcmVrIDxnb3Nwb0BjdW11bHVzbmV0d29y a3MuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+Ci0tLQogZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX21haW4uYyB8IDUgKysrKy0KIDEgZmls ZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ib25kaW5nL2JvbmRfbWFpbi5jIGIvZHJpdmVycy9uZXQvYm9uZGluZy9ib25k X21haW4uYwppbmRleCAwODFkZDcwLi41NjYwNTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9i b25kaW5nL2JvbmRfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9tYWluLmMK QEAgLTExNTQsNyArMTE1NCw2IEBAIHN0YXRpYyBpbnQgYm9uZF9tYXN0ZXJfdXBwZXJfZGV2X2xp bmsoc3RydWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LAogCWVyciA9IG5ldGRldl9tYXN0ZXJfdXBw ZXJfZGV2X2xpbmtfcHJpdmF0ZShzbGF2ZV9kZXYsIGJvbmRfZGV2LCBzbGF2ZSk7CiAJaWYgKGVy cikKIAkJcmV0dXJuIGVycjsKLQlzbGF2ZV9kZXYtPmZsYWdzIHw9IElGRl9TTEFWRTsKIAlydG1z Z19pZmluZm8oUlRNX05FV0xJTkssIHNsYXZlX2RldiwgSUZGX1NMQVZFLCBHRlBfS0VSTkVMKTsK IAlyZXR1cm4gMDsKIH0KQEAgLTEzNjIsNiArMTM2MSw5IEBAIGludCBib25kX2Vuc2xhdmUoc3Ry dWN0IG5ldF9kZXZpY2UgKmJvbmRfZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqc2xhdmVfZGV2KQog CQl9CiAJfQogCisJLyogc2V0IHNsYXZlIGZsYWcgYmVmb3JlIG9wZW4gdG8gcHJldmVudCBJUHY2 IGFkZHJjb25mICovCisJc2xhdmVfZGV2LT5mbGFncyB8PSBJRkZfU0xBVkU7CisKIAkvKiBvcGVu IHRoZSBzbGF2ZSBzaW5jZSB0aGUgYXBwbGljYXRpb24gY2xvc2VkIGl0ICovCiAJcmVzID0gZGV2 X29wZW4oc2xhdmVfZGV2KTsKIAlpZiAocmVzKSB7CkBAIC0xNjE1LDYgKzE2MTcsNyBAQCBlcnJf Y2xvc2U6CiAJZGV2X2Nsb3NlKHNsYXZlX2Rldik7CiAKIGVycl9yZXN0b3JlX21hYzoKKwlzbGF2 ZV9kZXYtPmZsYWdzICY9IH5JRkZfU0xBVkU7CiAJaWYgKCFib25kLT5wYXJhbXMuZmFpbF9vdmVy X21hYyB8fAogCSAgICBCT05EX01PREUoYm9uZCkgIT0gQk9ORF9NT0RFX0FDVElWRUJBQ0tVUCkg ewogCQkvKiBYWFggVE9ETyAtIGZvbSBmb2xsb3cgbW9kZSBuZWVkcyB0byBjaGFuZ2UgbWFzdGVy J3MKLS0gCjIuMS4wCgoKRnJvbSBiOWVlMTQzZmI5MTI0ZjcxY2QwNDhmN2VhZGZiNmI5MTYwOWU3 ZDU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0 QGdvb2dsZS5jb20+CkRhdGU6IFR1ZSwgMTIgSmFuIDIwMTYgMDg6NTg6MDAgLTA4MDAKU3ViamVj dDogW1BBVENIIDE1LzI0XSBwaG9uZXQ6IHByb3Blcmx5IHVuc2hhcmUgc2ticyBpbiBwaG9uZXRf cmN2KCkKClsgVXBzdHJlYW0gY29tbWl0IDdhYWVkNTdjNWMyODkwNjM0Y2ZhZGY3MjUxNzNjN2M2 OGVhNGNiNGYgXQoKSXZheWxvIERpbWl0cm92IHJlcG9ydGVkIGEgcmVncmVzc2lvbiBjYXVzZWQg YnkgY29tbWl0IDc4NjZhNjIxMDQzZgooImRldjogYWRkIHBlciBuZXRfZGV2aWNlIHBhY2tldCB0 eXBlIGNoYWlucyIpLgoKc2tiLT5kZXYgYmVjb21lcyBOVUxMIGFuZCB3ZSBjcmFzaCBpbiBfX25l dGlmX3JlY2VpdmVfc2tiX2NvcmUoKS4KCkJlZm9yZSBhYm92ZSBjb21taXQsIGRpZmZlcmVudCBr aW5kIG9mIGJ1Z3Mgb3IgY29ycnVwdGlvbnMgY291bGQgaGFwcGVuCndpdGhvdXQgbWFqb3IgY3Jh c2guCgpCdXQgdGhlIHJvb3QgY2F1c2UgaXMgdGhhdCBwaG9uZXRfcmN2KCkgY2FuIHF1ZXVlIHNr YiB3aXRob3V0IGNoZWNraW5nCmlmIHNrYiBpcyBzaGFyZWQgb3Igbm90LgoKTWFueSB0aGFua3Mg dG8gSXZheWxvIERpbWl0cm92IGZvciBoaXMgaGVscCwgZGlhZ25vc2lzIGFuZCB0ZXN0cy4KClJl cG9ydGVkLWJ5OiBJdmF5bG8gRGltaXRyb3YgPGl2by5nLmRpbWl0cm92Ljc1QGdtYWlsLmNvbT4K VGVzdGVkLWJ5OiBJdmF5bG8gRGltaXRyb3YgPGl2by5nLmRpbWl0cm92Ljc1QGdtYWlsLmNvbT4K U2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogUmVt aSBEZW5pcy1Db3VybW9udCA8Y291cm1pc2NoQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2 aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9waG9uZXQvYWZfcGhv bmV0LmMgfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKCmRpZmYgLS1n aXQgYS9uZXQvcGhvbmV0L2FmX3Bob25ldC5jIGIvbmV0L3Bob25ldC9hZl9waG9uZXQuYwppbmRl eCA1YTk0MGRiLi5mMDIyOTIyIDEwMDY0NAotLS0gYS9uZXQvcGhvbmV0L2FmX3Bob25ldC5jCisr KyBiL25ldC9waG9uZXQvYWZfcGhvbmV0LmMKQEAgLTM3Nyw2ICszNzcsMTAgQEAgc3RhdGljIGlu dCBwaG9uZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYs CiAJc3RydWN0IHNvY2thZGRyX3BuIHNhOwogCXUxNiBsZW47CiAKKwlza2IgPSBza2Jfc2hhcmVf Y2hlY2soc2tiLCBHRlBfQVRPTUlDKTsKKwlpZiAoIXNrYikKKwkJcmV0dXJuIE5FVF9SWF9EUk9Q OworCiAJLyogY2hlY2sgd2UgaGF2ZSBhdCBsZWFzdCBhIGZ1bGwgUGhvbmV0IGhlYWRlciAqLwog CWlmICghcHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBwaG9uZXRoZHIpKSkKIAkJZ290byBv dXQ7Ci0tIAoyLjEuMAoKCkZyb20gZjA1ZWI1N2RlOGNkYTk3MTg1ZjA4ZGYzNmVlY2EwMGFhNDkw ZWE0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUmFiaW4gVmluY2VudCA8cmFiaW5A cmFiLmluPgpEYXRlOiBUdWUsIDEyIEphbiAyMDE2IDIwOjE3OjA4ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAxNi8yNF0gbmV0OiBicGY6IHJlamVjdCBpbnZhbGlkIHNoaWZ0cwoKWyBVcHN0cmVhbSBj b21taXQgMjI5Mzk0ZThlNjJhNDE5MWQ1OTI4NDJjZjY3ZTgwYzYyYTQ5MjkzNyBdCgpPbiBBUk02 NCwgYSBCVUcoKSBpcyB0cmlnZ2VyZWQgaW4gdGhlIGVCUEYgSklUIGlmIGEgZmlsdGVyIHdpdGgg YQpjb25zdGFudCBzaGlmdCB0aGF0IGNhbid0IGJlIGVuY29kZWQgaW4gdGhlIGltbWVkaWF0ZSBm aWVsZCBvZiB0aGUKVUJGTS9TQkZNIGluc3RydWN0aW9ucyBpcyBwYXNzZWQgdG8gdGhlIEpJVC4g IFNpbmNlIHRoZXNlIHNoaWZ0cwphbW91bnRzLCB3aGljaCBhcmUgbmVnYXRpdmUgb3IgPj0gcmVn c2l6ZSwgYXJlIGludmFsaWQsIHJlamVjdCB0aGVtIGluCnRoZSBlQlBGIHZlcmlmaWVyIGFuZCB0 aGUgY2xhc3NpYyBCUEYgZmlsdGVyIGNoZWNrZXIsIGZvciBhbGwKYXJjaGl0ZWN0dXJlcy4KClNp Z25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KQWNrZWQtYnk6IEFsZXhl aSBTdGFyb3ZvaXRvdiA8YXN0QGtlcm5lbC5vcmc+CkFja2VkLWJ5OiBEYW5pZWwgQm9ya21hbm4g PGRhbmllbEBpb2dlYXJib3gubmV0PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQoga2VybmVsL2JwZi92ZXJpZmllci5jIHwgMTAgKysrKysr KysrKwogbmV0L2NvcmUvZmlsdGVyLmMgICAgIHwgIDUgKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg MTUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tl cm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAwNTVhZTZhLi42N2Y1ZjE3IDEwMDY0NAotLS0gYS9r ZXJuZWwvYnBmL3ZlcmlmaWVyLmMKKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0xMDI1 LDYgKzEwMjUsMTYgQEAgc3RhdGljIGludCBjaGVja19hbHVfb3Aoc3RydWN0IHJlZ19zdGF0ZSAq cmVncywgc3RydWN0IGJwZl9pbnNuICppbnNuKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCX0KIAor CQlpZiAoKG9wY29kZSA9PSBCUEZfTFNIIHx8IG9wY29kZSA9PSBCUEZfUlNIIHx8CisJCSAgICAg b3Bjb2RlID09IEJQRl9BUlNIKSAmJiBCUEZfU1JDKGluc24tPmNvZGUpID09IEJQRl9LKSB7CisJ CQlpbnQgc2l6ZSA9IEJQRl9DTEFTUyhpbnNuLT5jb2RlKSA9PSBCUEZfQUxVNjQgPyA2NCA6IDMy OworCisJCQlpZiAoaW5zbi0+aW1tIDwgMCB8fCBpbnNuLT5pbW0gPj0gc2l6ZSkgeworCQkJCXZl cmJvc2UoImludmFsaWQgc2hpZnQgJWRcbiIsIGluc24tPmltbSk7CisJCQkJcmV0dXJuIC1FSU5W QUw7CisJCQl9CisJCX0KKwogCQkvKiBwYXR0ZXJuIG1hdGNoICdicGZfYWRkIFJ4LCBpbW0nIGlu c3RydWN0aW9uICovCiAJCWlmIChvcGNvZGUgPT0gQlBGX0FERCAmJiBCUEZfQ0xBU1MoaW5zbi0+ Y29kZSkgPT0gQlBGX0FMVTY0ICYmCiAJCSAgICByZWdzW2luc24tPmRzdF9yZWddLnR5cGUgPT0g RlJBTUVfUFRSICYmCmRpZmYgLS1naXQgYS9uZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2Zp bHRlci5jCmluZGV4IDY0N2IxMjIuLmU2Y2RlMTczIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0 ZXIuYworKysgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtNzI4LDYgKzcyOCwxMSBAQCBpbnQgYnBm X2NoZWNrX2NsYXNzaWMoY29uc3Qgc3RydWN0IHNvY2tfZmlsdGVyICpmaWx0ZXIsIHVuc2lnbmVk IGludCBmbGVuKQogCQkJaWYgKGZ0ZXN0LT5rID09IDApCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJ CQlicmVhazsKKwkJY2FzZSBCUEZfQUxVIHwgQlBGX0xTSCB8IEJQRl9LOgorCQljYXNlIEJQRl9B TFUgfCBCUEZfUlNIIHwgQlBGX0s6CisJCQlpZiAoZnRlc3QtPmsgPj0gMzIpCisJCQkJcmV0dXJu IC1FSU5WQUw7CisJCQlicmVhazsKIAkJY2FzZSBCUEZfTEQgfCBCUEZfTUVNOgogCQljYXNlIEJQ Rl9MRFggfCBCUEZfTUVNOgogCQljYXNlIEJQRl9TVDoKLS0gCjIuMS4wCgoKRnJvbSA1NjIwM2Zm NTBmMDYxY2E1MmU4NmFlOWRlNTVkYWRmNmMxNDEwZDYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IEZyaSwgMTUg SmFuIDIwMTYgMDQ6NTY6NTYgLTA4MDAKU3ViamVjdDogW1BBVENIIDE3LzI0XSBpcHY2OiB1cGRh dGUgc2tiLT5jc3VtIHdoZW4gQ0UgbWFyayBpcyBwcm9wYWdhdGVkCgpbIFVwc3RyZWFtIGNvbW1p dCAzNGFlNmExYWEwNTQwZjBmNzgxZGQyNjUzNjYwMzYzNTVmZGM4OTMwIF0KCldoZW4gYSB0dW5u ZWwgZGVjYXBzdWxhdGVzIHRoZSBvdXRlciBoZWFkZXIsIGl0IGhhcyB0byBjb21wbHkKd2l0aCBS RkMgNjA4MCBhbmQgZXZlbnR1YWxseSBwcm9wYWdhdGUgQ0UgbWFyayBpbnRvIGlubmVyIGhlYWRl ci4KCkl0IHR1cm5zIG91dCBJUDZfRUNOX3NldF9jZSgpIGRvZXMgbm90IGNvcnJlY3RseSB1cGRh dGUgc2tiLT5jc3VtCmZvciBDSEVDS1NVTV9DT01QTEVURSBwYWNrZXRzLCB0cmlnZ2VyaW5nIGlu ZmFtb3VzICJodyBjc3VtIGZhaWx1cmUiCm1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuCgpTaWdu ZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkFja2VkLWJ5OiBI ZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL25ldC9pbmV0 X2Vjbi5oICAgICAgIHwgMTkgKysrKysrKysrKysrKysrKy0tLQogbmV0L2lwdjYveGZybTZfbW9k ZV90dW5uZWwuYyB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaW5ldF9lY24uaCBiL2luY2x1 ZGUvbmV0L2luZXRfZWNuLmgKaW5kZXggODRiMjA4My4uMGRjMGE1MSAxMDA2NDQKLS0tIGEvaW5j bHVkZS9uZXQvaW5ldF9lY24uaAorKysgYi9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oCkBAIC0xMTEs MTEgKzExMSwyNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaXB2NF9jb3B5X2RzY3AodW5zaWduZWQg aW50IGRzY3AsIHN0cnVjdCBpcGhkciAqaW5uZXIpCiAKIHN0cnVjdCBpcHY2aGRyOwogCi1zdGF0 aWMgaW5saW5lIGludCBJUDZfRUNOX3NldF9jZShzdHJ1Y3QgaXB2NmhkciAqaXBoKQorLyogTm90 ZToKKyAqIElQX0VDTl9zZXRfY2UoKSBoYXMgdG8gdHdlYWsgSVBWNCBjaGVja3N1bSB3aGVuIHNl dHRpbmcgQ0UsCisgKiBtZWFuaW5nIGJvdGggY2hhbmdlcyBoYXZlIG5vIGVmZmVjdCBvbiBza2It PmNzdW0gaWYvd2hlbiBDSEVDS1NVTV9DT01QTEVURQorICogSW4gSVB2NiBjYXNlLCBubyBjaGVj a3N1bSBjb21wZW5zYXRlcyB0aGUgY2hhbmdlIGluIElQdjYgaGVhZGVyLAorICogc28gd2UgaGF2 ZSB0byB1cGRhdGUgc2tiLT5jc3VtLgorICovCitzdGF0aWMgaW5saW5lIGludCBJUDZfRUNOX3Nl dF9jZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXB2NmhkciAqaXBoKQogeworCV9fYmUz MiBmcm9tLCB0bzsKKwogCWlmIChJTkVUX0VDTl9pc19ub3RfZWN0KGlwdjZfZ2V0X2RzZmllbGQo aXBoKSkpCiAJCXJldHVybiAwOwotCSooX19iZTMyKilpcGggfD0gaHRvbmwoSU5FVF9FQ05fQ0Ug PDwgMjApOworCisJZnJvbSA9ICooX19iZTMyICopaXBoOworCXRvID0gZnJvbSB8IGh0b25sKElO RVRfRUNOX0NFIDw8IDIwKTsKKwkqKF9fYmUzMiAqKWlwaCA9IHRvOworCWlmIChza2ItPmlwX3N1 bW1lZCA9PSBDSEVDS1NVTV9DT01QTEVURSkKKwkJc2tiLT5jc3VtID0gY3N1bV9hZGQoY3N1bV9z dWIoc2tiLT5jc3VtLCBmcm9tKSwgdG8pOwogCXJldHVybiAxOwogfQogCkBAIC0xNDIsNyArMTU1 LDcgQEAgc3RhdGljIGlubGluZSBpbnQgSU5FVF9FQ05fc2V0X2NlKHN0cnVjdCBza19idWZmICpz a2IpCiAJY2FzZSBjcHVfdG9fYmUxNihFVEhfUF9JUFY2KToKIAkJaWYgKHNrYl9uZXR3b3JrX2hl YWRlcihza2IpICsgc2l6ZW9mKHN0cnVjdCBpcHY2aGRyKSA8PQogCQkgICAgc2tiX3RhaWxfcG9p bnRlcihza2IpKQotCQkJcmV0dXJuIElQNl9FQ05fc2V0X2NlKGlwdjZfaGRyKHNrYikpOworCQkJ cmV0dXJuIElQNl9FQ05fc2V0X2NlKHNrYiwgaXB2Nl9oZHIoc2tiKSk7CiAJCWJyZWFrOwogCX0K IApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfbW9kZV90dW5uZWwuYyBiL25ldC9pcHY2L3hm cm02X21vZGVfdHVubmVsLmMKaW5kZXggOTAxZWY2Zi4uNTI2NmFkMiAxMDA2NDQKLS0tIGEvbmV0 L2lwdjYveGZybTZfbW9kZV90dW5uZWwuYworKysgYi9uZXQvaXB2Ni94ZnJtNl9tb2RlX3R1bm5l bC5jCkBAIC0yNCw3ICsyNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpcGlwNl9lY25fZGVjYXBz dWxhdGUoc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaXB2NmhkciAqaW5uZXJfaXBoID0g aXBpcHY2X2hkcihza2IpOwogCiAJaWYgKElORVRfRUNOX2lzX2NlKGlwdjZfZ2V0X2RzZmllbGQo b3V0ZXJfaXBoKSkpCi0JCUlQNl9FQ05fc2V0X2NlKGlubmVyX2lwaCk7CisJCUlQNl9FQ05fc2V0 X2NlKHNrYiwgaW5uZXJfaXBoKTsKIH0KIAogLyogQWRkIGVuY2Fwc3VsYXRpb24gaGVhZGVyLgot LSAKMi4xLjAKCgpGcm9tIDQ1MDQ3NTdkYTBlMmFjMzE0OTA3NzJlNWI3N2VmMzBkODNlZmI1ZDcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJlbiBIdXRjaGluZ3MgPGJlbkBkZWNhZGVu dC5vcmcudWs+CkRhdGU6IFN1biwgMSBOb3YgMjAxNSAxNjoyMToyNCArMDAwMApTdWJqZWN0OiBb UEFUQ0ggMTgvMjRdIGlzZG5fcHBwOiBBZGQgY2hlY2tzIGZvciBhbGxvY2F0aW9uIGZhaWx1cmUg aW4KIGlzZG5fcHBwX29wZW4oKQoKWyBVcHN0cmVhbSBjb21taXQgMGJhYTU3ZDhkYzMyZGI3ODM2 OWQ4YjUxNzZlZjU2YzVlMmUxOGFiMyBdCgpDb21waWxlLXRlc3RlZCBvbmx5LgoKU2lnbmVkLW9m Zi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvaXNkbi9p NGwvaXNkbl9wcHAuYyB8IDYgKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jIGIvZHJpdmVycy9pc2Ru L2k0bC9pc2RuX3BwcC5jCmluZGV4IGM0MTk4ZmEuLjg2ZjlhYmUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvaXNkbi9pNGwvaXNkbl9wcHAuYworKysgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMK QEAgLTMwMSw2ICszMDEsOCBAQCBpc2RuX3BwcF9vcGVuKGludCBtaW4sIHN0cnVjdCBmaWxlICpm aWxlKQogCWlzLT5jb21wZmxhZ3MgPSAwOwogCiAJaXMtPnJlc2V0ID0gaXNkbl9wcHBfY2NwX3Jl c2V0X2FsbG9jKGlzKTsKKwlpZiAoIWlzLT5yZXNldCkKKwkJcmV0dXJuIC1FTk9NRU07CiAKIAlp cy0+bHAgPSBOVUxMOwogCWlzLT5tcF9zZXFubyA9IDA7ICAgICAgIC8qIE1QIHNlcXVlbmNlIG51 bWJlciAqLwpAQCAtMzIwLDYgKzMyMiwxMCBAQCBpc2RuX3BwcF9vcGVuKGludCBtaW4sIHN0cnVj dCBmaWxlICpmaWxlKQogCSAqIFZKIGhlYWRlciBjb21wcmVzc2lvbiBpbml0CiAJICovCiAJaXMt PnNsY29tcCA9IHNsaGNfaW5pdCgxNiwgMTYpOwkvKiBub3QgbmVjZXNzYXJ5IGZvciAyLiBsaW5r IGluIGJ1bmRsZSAqLworCWlmICghaXMtPnNsY29tcCkgeworCQlpc2RuX3BwcF9jY3BfcmVzZXRf ZnJlZShpcyk7CisJCXJldHVybiAtRU5PTUVNOworCX0KICNlbmRpZgogI2lmZGVmIENPTkZJR19J UFBQX0ZJTFRFUgogCWlzLT5wYXNzX2ZpbHRlciA9IE5VTEw7Ci0tIAoyLjEuMAoKCkZyb20gNGRj ZjY2YjZkYTAxMjg0YTM3OTMwN2VlNTU4ZmU3NmNkNGYwMGUxOSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogQmVuIEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KRGF0ZTogU3Vu LCAxIE5vdiAyMDE1IDE2OjIyOjUzICswMDAwClN1YmplY3Q6IFtQQVRDSCAxOS8yNF0gcHBwLCBz bGlwOiBWYWxpZGF0ZSBWSiBjb21wcmVzc2lvbiBzbG90IHBhcmFtZXRlcnMKIGNvbXBsZXRlbHkK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClsgVXBzdHJlYW0gY29tbWl0IDRhYjQy ZDc4ZTM3YTI5NGFjN2JjNTY5MDFkNTYzYzY0MmUwM2M0YWUgXQoKQ3VycmVudGx5IHNsaGNfaW5p dCgpIHRyZWF0cyBvdXQtb2YtcmFuZ2UgdmFsdWVzIG9mIHJzbG90cyBhbmQgdHNsb3RzCmFzIGVx dWl2YWxlbnQgdG8gMCwgZXhjZXB0IHRoYXQgaWYgdHNsb3RzIGlzIHRvbyBsYXJnZSBpdCB3aWxs CmRlcmVmZXJlbmNlIGEgbnVsbCBwb2ludGVyIChDVkUtMjAxNS03Nzk5KS4KCkFkZCBhIHJhbmdl LWNoZWNrIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIGFuZCBtYWtlIGl0IHJldHVybiBhbgpF UlJfUFRSKCkgb24gZXJyb3IgaW5zdGVhZCBvZiBOVUxMLiAgQ2hhbmdlIHRoZSBjYWxsZXJzIGFj Y29yZGluZ2x5LgoKQ29tcGlsZS10ZXN0ZWQgb25seS4KClJlcG9ydGVkLWJ5OiDpg63msLjliJog PGd1b3lvbmdnYW5nQDM2MC5jbj4KUmVmZXJlbmNlczogaHR0cDovL2FydGljbGUuZ21hbmUub3Jn L2dtYW5lLmNvbXAuc2VjdXJpdHkub3NzLmdlbmVyYWwvMTc5MDgKU2lnbmVkLW9mZi1ieTogQmVu IEh1dGNoaW5ncyA8YmVuQGRlY2FkZW50Lm9yZy51az4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4g TWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvaXNkbi9pNGwvaXNkbl9w cHAuYyAgIHwgMTAgKysrKy0tLS0tLQogZHJpdmVycy9uZXQvcHBwL3BwcF9nZW5lcmljLmMgfCAg NiArKy0tLS0KIGRyaXZlcnMvbmV0L3NsaXAvc2xoYy5jICAgICAgIHwgMTIgKysrKysrKystLS0t CiBkcml2ZXJzL25ldC9zbGlwL3NsaXAuYyAgICAgICB8ICAyICstCiA0IGZpbGVzIGNoYW5nZWQs IDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aXNkbi9pNGwvaXNkbl9wcHAuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9wcHAuYwppbmRleCA4 NmY5YWJlLi45YzFlOGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMK KysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jCkBAIC0zMjIsOSArMzIyLDkgQEAgaXNk bl9wcHBfb3BlbihpbnQgbWluLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAkgKiBWSiBoZWFkZXIgY29t cHJlc3Npb24gaW5pdAogCSAqLwogCWlzLT5zbGNvbXAgPSBzbGhjX2luaXQoMTYsIDE2KTsJLyog bm90IG5lY2Vzc2FyeSBmb3IgMi4gbGluayBpbiBidW5kbGUgKi8KLQlpZiAoIWlzLT5zbGNvbXAp IHsKKwlpZiAoSVNfRVJSKGlzLT5zbGNvbXApKSB7CiAJCWlzZG5fcHBwX2NjcF9yZXNldF9mcmVl KGlzKTsKLQkJcmV0dXJuIC1FTk9NRU07CisJCXJldHVybiBQVFJfRVJSKGlzLT5zbGNvbXApOwog CX0KICNlbmRpZgogI2lmZGVmIENPTkZJR19JUFBQX0ZJTFRFUgpAQCAtNTczLDEwICs1NzMsOCBA QCBpc2RuX3BwcF9pb2N0bChpbnQgbWluLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgaW50 IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCQlpcy0+bWF4Y2lkID0gdmFsOwogI2lmZGVmIENP TkZJR19JU0ROX1BQUF9WSgogCQkJc2x0bXAgPSBzbGhjX2luaXQoMTYsIHZhbCk7Ci0JCQlpZiAo IXNsdG1wKSB7Ci0JCQkJcHJpbnRrKEtFUk5fRVJSICJpcHBwLCBjYW4ndCByZWFsbG9jIHNsaGMg c3RydWN0XG4iKTsKLQkJCQlyZXR1cm4gLUVOT01FTTsKLQkJCX0KKwkJCWlmIChJU19FUlIoc2x0 bXApKQorCQkJCXJldHVybiBQVFJfRVJSKHNsdG1wKTsKIAkJCWlmIChpcy0+c2xjb21wKQogCQkJ CXNsaGNfZnJlZShpcy0+c2xjb21wKTsKIAkJCWlzLT5zbGNvbXAgPSBzbHRtcDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jIGIvZHJpdmVycy9uZXQvcHBwL3BwcF9n ZW5lcmljLmMKaW5kZXggNmQ2YzIwYy4uZmM3YjNkNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3BwcC9wcHBfZ2VuZXJpYy5jCisrKyBiL2RyaXZlcnMvbmV0L3BwcC9wcHBfZ2VuZXJpYy5jCkBA IC03MTMsMTAgKzcxMyw4IEBAIHN0YXRpYyBsb25nIHBwcF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmls ZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCQl2YWwgJj0gMHhmZmZm OwogCQl9CiAJCXZqID0gc2xoY19pbml0KHZhbDIrMSwgdmFsKzEpOwotCQlpZiAoIXZqKSB7Ci0J CQluZXRkZXZfZXJyKHBwcC0+ZGV2LAotCQkJCSAgICJQUFA6IG5vIG1lbW9yeSAoVkogY29tcHJl c3NvcilcbiIpOwotCQkJZXJyID0gLUVOT01FTTsKKwkJaWYgKElTX0VSUih2aikpIHsKKwkJCWVy ciA9IFBUUl9FUlIodmopOwogCQkJYnJlYWs7CiAJCX0KIAkJcHBwX2xvY2socHBwKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3NsaXAvc2xoYy5jIGIvZHJpdmVycy9uZXQvc2xpcC9zbGhjLmMK aW5kZXggMDc5ZjdhZC4uMjdlZDI1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2xpcC9zbGhj LmMKKysrIGIvZHJpdmVycy9uZXQvc2xpcC9zbGhjLmMKQEAgLTg0LDggKzg0LDkgQEAgc3RhdGlj IGxvbmcgZGVjb2RlKHVuc2lnbmVkIGNoYXIgKipjcHApOwogc3RhdGljIHVuc2lnbmVkIGNoYXIg KiBwdXQxNih1bnNpZ25lZCBjaGFyICpjcCwgdW5zaWduZWQgc2hvcnQgeCk7CiBzdGF0aWMgdW5z aWduZWQgc2hvcnQgcHVsbDE2KHVuc2lnbmVkIGNoYXIgKipjcHApOwogCi0vKiBJbml0aWFsaXpl IGNvbXByZXNzaW9uIGRhdGEgc3RydWN0dXJlCisvKiBBbGxvY2F0ZSBjb21wcmVzc2lvbiBkYXRh IHN0cnVjdHVyZQogICoJc2xvdHMgbXVzdCBiZSBpbiByYW5nZSAwIHRvIDI1NSAoemVybyBtZWFu aW5nIG5vIGNvbXByZXNzaW9uKQorICogUmV0dXJucyBwb2ludGVyIHRvIHN0cnVjdHVyZSBvciBF UlJfUFRSKCkgb24gZXJyb3IuCiAgKi8KIHN0cnVjdCBzbGNvbXByZXNzICoKIHNsaGNfaW5pdChp bnQgcnNsb3RzLCBpbnQgdHNsb3RzKQpAQCAtOTQsMTEgKzk1LDE0IEBAIHNsaGNfaW5pdChpbnQg cnNsb3RzLCBpbnQgdHNsb3RzKQogCXJlZ2lzdGVyIHN0cnVjdCBjc3RhdGUgKnRzOwogCXN0cnVj dCBzbGNvbXByZXNzICpjb21wOwogCisJaWYgKHJzbG90cyA8IDAgfHwgcnNsb3RzID4gMjU1IHx8 IHRzbG90cyA8IDAgfHwgdHNsb3RzID4gMjU1KQorCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK KwogCWNvbXAgPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc2xjb21wcmVzcyksIEdGUF9LRVJORUwp OwogCWlmICghIGNvbXApCiAJCWdvdG8gb3V0X2ZhaWw7CiAKLQlpZiAoIHJzbG90cyA+IDAgICYm ICByc2xvdHMgPCAyNTYgKSB7CisJaWYgKHJzbG90cyA+IDApIHsKIAkJc2l6ZV90IHJzaXplID0g cnNsb3RzICogc2l6ZW9mKHN0cnVjdCBjc3RhdGUpOwogCQljb21wLT5yc3RhdGUgPSBremFsbG9j KHJzaXplLCBHRlBfS0VSTkVMKTsKIAkJaWYgKCEgY29tcC0+cnN0YXRlKQpAQCAtMTA2LDcgKzEx MCw3IEBAIHNsaGNfaW5pdChpbnQgcnNsb3RzLCBpbnQgdHNsb3RzKQogCQljb21wLT5yc2xvdF9s aW1pdCA9IHJzbG90cyAtIDE7CiAJfQogCi0JaWYgKCB0c2xvdHMgPiAwICAmJiAgdHNsb3RzIDwg MjU2ICkgeworCWlmICh0c2xvdHMgPiAwKSB7CiAJCXNpemVfdCB0c2l6ZSA9IHRzbG90cyAqIHNp emVvZihzdHJ1Y3QgY3N0YXRlKTsKIAkJY29tcC0+dHN0YXRlID0ga3phbGxvYyh0c2l6ZSwgR0ZQ X0tFUk5FTCk7CiAJCWlmICghIGNvbXAtPnRzdGF0ZSkKQEAgLTE0MSw3ICsxNDUsNyBAQCBvdXRf ZnJlZTI6CiBvdXRfZnJlZToKIAlrZnJlZShjb21wKTsKIG91dF9mYWlsOgotCXJldHVybiBOVUxM OworCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogfQogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3NsaXAvc2xpcC5jIGIvZHJpdmVycy9uZXQvc2xpcC9zbGlwLmMKaW5kZXggMDUzODdiMS4u YTE3ZDg2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2xpcC9zbGlwLmMKKysrIGIvZHJpdmVy cy9uZXQvc2xpcC9zbGlwLmMKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IHNsX2FsbG9j X2J1ZnMoc3RydWN0IHNsaXAgKnNsLCBpbnQgbXR1KQogCWlmIChjYnVmZiA9PSBOVUxMKQogCQln b3RvIGVycl9leGl0OwogCXNsY29tcCA9IHNsaGNfaW5pdCgxNiwgMTYpOwotCWlmIChzbGNvbXAg PT0gTlVMTCkKKwlpZiAoSVNfRVJSKHNsY29tcCkpCiAJCWdvdG8gZXJyX2V4aXQ7CiAjZW5kaWYK IAlzcGluX2xvY2tfYmgoJnNsLT5sb2NrKTsKLS0gCjIuMS4wCgoKRnJvbSA2YmZlOTNhZTU5MzU4 ZjAyMTkzMDMzYjgzNWRlYTE0ZWE2YjZkMWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBJZG8gU2NoaW1tZWwgPGlkb3NjaEBtZWxsYW5veC5jb20+CkRhdGU6IE1vbiwgMTggSmFuIDIw MTYgMTc6MzA6MjIgKzAyMDAKU3ViamVjdDogW1BBVENIIDIwLzI0XSB0ZWFtOiBSZXBsYWNlIHJj dV9yZWFkX2xvY2sgd2l0aCBhIG11dGV4IGluCiB0ZWFtX3ZsYW5fcnhfa2lsbF92aWQKClsgVXBz dHJlYW0gY29tbWl0IDYwYTY1MzFiZmU0OTU1NTU4MWNjZDY1ZjY2YTM1MGNjNTY5M2ZjZGUgXQoK V2UgY2FuJ3QgYmUgd2l0aGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB3aGVu IGRlbGV0aW5nClZMQU5zLCBhcyB1bmRlcmx5aW5nIGRyaXZlcnMgbWlnaHQgc2xlZXAgZHVyaW5n IHRoZSBoYXJkd2FyZSBvcGVyYXRpb24uClRoZXJlZm9yZSwgcmVwbGFjZSB0aGUgUkNVIGNyaXRp Y2FsIHNlY3Rpb24gd2l0aCBhIG11dGV4LiBUaGlzIGlzCmNvbnNpc3RlbnQgd2l0aCB0ZWFtX3Zs YW5fcnhfYWRkX3ZpZC4KCkZpeGVzOiAzZDI0OWQ0Y2E3ZDAgKCJuZXQ6IGludHJvZHVjZSBldGhl cm5ldCB0ZWFtaW5nIGRldmljZSIpCkFja2VkLWJ5OiBKaXJpIFBpcmtvIDxqaXJpQG1lbGxhbm94 LmNvbT4KU2lnbmVkLW9mZi1ieTogSWRvIFNjaGltbWVsIDxpZG9zY2hAbWVsbGFub3guY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQog ZHJpdmVycy9uZXQvdGVhbS90ZWFtLmMgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWFt L3RlYW0uYyBiL2RyaXZlcnMvbmV0L3RlYW0vdGVhbS5jCmluZGV4IGViYzk1YTMuLjE2YzU4MDMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RlYW0vdGVhbS5jCisrKyBiL2RyaXZlcnMvbmV0L3Rl YW0vdGVhbS5jCkBAIC0xODQ4LDEwICsxODQ4LDEwIEBAIHN0YXRpYyBpbnQgdGVhbV92bGFuX3J4 X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIF9fYmUxNiBwcm90bywgdTE2IHZpZCkK IAlzdHJ1Y3QgdGVhbSAqdGVhbSA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IHRlYW1fcG9y dCAqcG9ydDsKIAotCXJjdV9yZWFkX2xvY2soKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShw b3J0LCAmdGVhbS0+cG9ydF9saXN0LCBsaXN0KQorCW11dGV4X2xvY2soJnRlYW0tPmxvY2spOwor CWxpc3RfZm9yX2VhY2hfZW50cnkocG9ydCwgJnRlYW0tPnBvcnRfbGlzdCwgbGlzdCkKIAkJdmxh bl92aWRfZGVsKHBvcnQtPmRldiwgcHJvdG8sIHZpZCk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CisJ bXV0ZXhfdW5sb2NrKCZ0ZWFtLT5sb2NrKTsKIAogCXJldHVybiAwOwogfQotLSAKMi4xLjAKCgpG cm9tIDNmNTUzNzAzNzE1NDFmOTIzNGMzZjBmZGVlZTdiM2FkZWIzY2Y4NWEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkRhdGU6IFRo dSwgMTAgU2VwIDIwMTUgMTE6MTg6NTcgKzAxMDAKU3ViamVjdDogW1BBVENIIDIxLzI0XSB4ZW4t bmV0YmFjazogcmVzcGVjdCB1c2VyIHByb3ZpZGVkIG1heF9xdWV1ZXMKClsgVXBzdHJlYW0gY29t bWl0IDRjODJhYzNjMzczNjNlOGM0ZGVkNmE1ZmUxZWM1ZmE3NTZiMzRkZjMgXQoKT3JpZ2luYWxs eSB0aGF0IHBhcmFtZXRlciB3YXMgYWx3YXlzIHJlc2V0IHRvIG51bV9vbmxpbmVfY3B1cyBkdXJp bmcKbW9kdWxlIGluaXRpYWxpc2F0aW9uLCB3aGljaCByZW5kZXJzIGl0IHVzZWxlc3MuCgpUaGUg Zml4IGlzIHRvIG9ubHkgc2V0IG1heF9xdWV1ZXMgdG8gbnVtX29ubGluZV9jcHVzIHdoZW4gdXNl ciBoYXMgbm90CnByb3ZpZGVkIGEgdmFsdWUuCgpSZXBvcnRlZC1ieTogSm9obm55IFN0cm9tIDxq b2hubnkuc3Ryb21AbGludXhzb2x1dGlvbnMuZmk+ClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdl aS5saXUyQGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJl bEBjaXRyaXguY29tPgpBY2tlZC1ieTogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4 LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0 PgotLS0KIGRyaXZlcnMvbmV0L3hlbi1uZXRiYWNrL25ldGJhY2suYyB8IDcgKysrKystLQogMSBm aWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC94ZW4tbmV0YmFjay9uZXRiYWNrLmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0 YmFjay9uZXRiYWNrLmMKaW5kZXggYzM5YWFjZS4uNjNmOTQxMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9uZXQveGVuLW5ldGJhY2svbmV0YmFjay5jCisrKyBiL2RyaXZlcnMvbmV0L3hlbi1uZXRiYWNr L25ldGJhY2suYwpAQCAtMjE4NSw4ICsyMTg1LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IG5ldGJh Y2tfaW5pdCh2b2lkKQogCWlmICgheGVuX2RvbWFpbigpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAot CS8qIEFsbG93IGFzIG1hbnkgcXVldWVzIGFzIHRoZXJlIGFyZSBDUFVzLCBieSBkZWZhdWx0ICov Ci0JeGVudmlmX21heF9xdWV1ZXMgPSBudW1fb25saW5lX2NwdXMoKTsKKwkvKiBBbGxvdyBhcyBt YW55IHF1ZXVlcyBhcyB0aGVyZSBhcmUgQ1BVcyBpZiB1c2VyIGhhcyBub3QKKwkgKiBzcGVjaWZp ZWQgYSB2YWx1ZS4KKwkgKi8KKwlpZiAoeGVudmlmX21heF9xdWV1ZXMgPT0gMCkKKwkJeGVudmlm X21heF9xdWV1ZXMgPSBudW1fb25saW5lX2NwdXMoKTsKIAogCWlmIChmYXRhbF9za2Jfc2xvdHMg PCBYRU5fTkVUQktfTEVHQUNZX1NMT1RTX01BWCkgewogCQlwcl9pbmZvKCJmYXRhbF9za2Jfc2xv dHMgdG9vIHNtYWxsICglZCksIGJ1bXAgaXQgdG8gWEVOX05FVEJLX0xFR0FDWV9TTE9UU19NQVgg KCVkKVxuIiwKLS0gCjIuMS4wCgoKRnJvbSAzOWNmY2ZjMDM3NDMzNmYzYzE1OTkzZjZmM2FlNGU0 M2Q3YjZiNTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgpEYXRlOiBUaHUsIDEwIFNlcCAyMDE1IDExOjE4OjU4ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAyMi8yNF0geGVuLW5ldGZyb250OiByZXNwZWN0IHVzZXIgcHJvdmlkZWQgbWF4 X3F1ZXVlcwoKWyBVcHN0cmVhbSBjb21taXQgMzJhODQ0MDU2ZmQ0M2RkYTY0N2UxYzNjNmI5OTgz YmRmYTA0ZDE3ZCBdCgpPcmlnaW5hbGx5IHRoYXQgcGFyYW1ldGVyIHdhcyBhbHdheXMgcmVzZXQg dG8gbnVtX29ubGluZV9jcHVzIGR1cmluZwptb2R1bGUgaW5pdGlhbGlzYXRpb24sIHdoaWNoIHJl bmRlcnMgaXQgdXNlbGVzcy4KClRoZSBmaXggaXMgdG8gb25seSBzZXQgbWF4X3F1ZXVlcyB0byBu dW1fb25saW5lX2NwdXMgd2hlbiB1c2VyIGhhcyBub3QKcHJvdmlkZWQgYSB2YWx1ZS4KClNpZ25l ZC1vZmYtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBEYXZpZCBWcmFiZWwg PGRhdmlkLnZyYWJlbEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogRGF2aWQgVnJhYmVsIDxkYXZp ZC52cmFiZWxAY2l0cml4LmNvbT4KVGVzdGVkLWJ5OiBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJl bEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVt bG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMgfCA3ICsrKysrLS0KIDEg ZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQu YwppbmRleCAyYTY0ZjI4Li4yYWI1NWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC94ZW4tbmV0 ZnJvbnQuYworKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYwpAQCAtMjM1MSw4ICsyMzUx LDExIEBAIHN0YXRpYyBpbnQgX19pbml0IG5ldGlmX2luaXQodm9pZCkKIAogCXByX2luZm8oIklu aXRpYWxpc2luZyBYZW4gdmlydHVhbCBldGhlcm5ldCBkcml2ZXJcbiIpOwogCi0JLyogQWxsb3cg YXMgbWFueSBxdWV1ZXMgYXMgdGhlcmUgYXJlIENQVXMsIGJ5IGRlZmF1bHQgKi8KLQl4ZW5uZXRf bWF4X3F1ZXVlcyA9IG51bV9vbmxpbmVfY3B1cygpOworCS8qIEFsbG93IGFzIG1hbnkgcXVldWVz IGFzIHRoZXJlIGFyZSBDUFVzIGlmIHVzZXIgaGFzIG5vdAorCSAqIHNwZWNpZmllZCBhIHZhbHVl LgorCSAqLworCWlmICh4ZW5uZXRfbWF4X3F1ZXVlcyA9PSAwKQorCQl4ZW5uZXRfbWF4X3F1ZXVl cyA9IG51bV9vbmxpbmVfY3B1cygpOwogCiAJcmV0dXJuIHhlbmJ1c19yZWdpc3Rlcl9mcm9udGVu ZCgmbmV0ZnJvbnRfZHJpdmVyKTsKIH0KLS0gCjIuMS4wCgoKRnJvbSA3ZjMzMWIyMTRlZjQ1YTEw ZjJmZWY0NGY5YzAzYWNkMTBiNGZlODgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBK b2UgSmluIDxqb2UuamluQG9yYWNsZS5jb20+CkRhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTM6Mzc6 MTcgKzA4MDAKU3ViamVjdDogW1BBVENIIDIzLzI0XSB4ZW4tbmV0ZnJvbnQ6IHVwZGF0ZSBudW1f cXVldWVzIHRvIHJlYWwgY3JlYXRlZAoKWyBVcHN0cmVhbSBjb21taXQgY2E4OGVhMTI0N2RmZWUw OTRlMjQ2N2EzNTc4ZWFlYzliZGYwODMzYSBdCgpTb21ldGltZXMgeGVubmV0X2NyZWF0ZV9xdWV1 ZXMoKSBtYXkgZmFpbGVkIHRvIGNyZWF0ZWQgYWxsIHJlcXVlc3RlZApxdWV1ZXMsIHdlIG5lZWQg dG8gdXBkYXRlIG51bV9xdWV1ZXMgdG8gcmVhbCBjcmVhdGVkIHRvIGF2b2lkIE5VTEwKcG9pbnRl ciBkZXJlZmVyZW5jZS4KClNpZ25lZC1vZmYtYnk6IEpvZSBKaW4gPGpvZS5qaW5Ab3JhY2xlLmNv bT4KQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+CkNjOiBL b25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBXZWkgTGl1 IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0 cml4LmNvbT4KQ2M6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KUmV2aWV3 ZWQtYnk6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2 ZXJzL25ldC94ZW4tbmV0ZnJvbnQuYyB8IDE0ICsrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3hlbi1uZXRmcm9udC5jIGIvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKaW5kZXggMmFi NTViNy4uOGY0NWJlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKKysr IGIvZHJpdmVycy9uZXQveGVuLW5ldGZyb250LmMKQEAgLTE3OTIsMTkgKzE3OTIsMTkgQEAgc3Rh dGljIHZvaWQgeGVubmV0X2Rlc3Ryb3lfcXVldWVzKHN0cnVjdCBuZXRmcm9udF9pbmZvICppbmZv KQogfQogCiBzdGF0aWMgaW50IHhlbm5ldF9jcmVhdGVfcXVldWVzKHN0cnVjdCBuZXRmcm9udF9p bmZvICppbmZvLAotCQkJCXVuc2lnbmVkIGludCBudW1fcXVldWVzKQorCQkJCXVuc2lnbmVkIGlu dCAqbnVtX3F1ZXVlcykKIHsKIAl1bnNpZ25lZCBpbnQgaTsKIAlpbnQgcmV0OwogCi0JaW5mby0+ cXVldWVzID0ga2NhbGxvYyhudW1fcXVldWVzLCBzaXplb2Yoc3RydWN0IG5ldGZyb250X3F1ZXVl KSwKKwlpbmZvLT5xdWV1ZXMgPSBrY2FsbG9jKCpudW1fcXVldWVzLCBzaXplb2Yoc3RydWN0IG5l dGZyb250X3F1ZXVlKSwKIAkJCSAgICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIWluZm8tPnF1ZXVl cykKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlydG5sX2xvY2soKTsKIAotCWZvciAoaSA9IDA7IGkg PCBudW1fcXVldWVzOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgKm51bV9xdWV1ZXM7IGkrKykg ewogCQlzdHJ1Y3QgbmV0ZnJvbnRfcXVldWUgKnF1ZXVlID0gJmluZm8tPnF1ZXVlc1tpXTsKIAog CQlxdWV1ZS0+aWQgPSBpOwpAQCAtMTgxNCw3ICsxODE0LDcgQEAgc3RhdGljIGludCB4ZW5uZXRf Y3JlYXRlX3F1ZXVlcyhzdHJ1Y3QgbmV0ZnJvbnRfaW5mbyAqaW5mbywKIAkJaWYgKHJldCA8IDAp IHsKIAkJCWRldl93YXJuKCZpbmZvLT5uZXRkZXYtPmRldiwKIAkJCQkgIm9ubHkgY3JlYXRlZCAl ZCBxdWV1ZXNcbiIsIGkpOwotCQkJbnVtX3F1ZXVlcyA9IGk7CisJCQkqbnVtX3F1ZXVlcyA9IGk7 CiAJCQlicmVhazsKIAkJfQogCkBAIC0xODI0LDExICsxODI0LDExIEBAIHN0YXRpYyBpbnQgeGVu bmV0X2NyZWF0ZV9xdWV1ZXMoc3RydWN0IG5ldGZyb250X2luZm8gKmluZm8sCiAJCQluYXBpX2Vu YWJsZSgmcXVldWUtPm5hcGkpOwogCX0KIAotCW5ldGlmX3NldF9yZWFsX251bV90eF9xdWV1ZXMo aW5mby0+bmV0ZGV2LCBudW1fcXVldWVzKTsKKwluZXRpZl9zZXRfcmVhbF9udW1fdHhfcXVldWVz KGluZm8tPm5ldGRldiwgKm51bV9xdWV1ZXMpOwogCiAJcnRubF91bmxvY2soKTsKIAotCWlmIChu dW1fcXVldWVzID09IDApIHsKKwlpZiAoKm51bV9xdWV1ZXMgPT0gMCkgewogCQlkZXZfZXJyKCZp bmZvLT5uZXRkZXYtPmRldiwgIm5vIHF1ZXVlc1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K QEAgLTE4NzQsNyArMTg3NCw3IEBAIHN0YXRpYyBpbnQgdGFsa190b19uZXRiYWNrKHN0cnVjdCB4 ZW5idXNfZGV2aWNlICpkZXYsCiAJaWYgKGluZm8tPnF1ZXVlcykKIAkJeGVubmV0X2Rlc3Ryb3lf cXVldWVzKGluZm8pOwogCi0JZXJyID0geGVubmV0X2NyZWF0ZV9xdWV1ZXMoaW5mbywgbnVtX3F1 ZXVlcyk7CisJZXJyID0geGVubmV0X2NyZWF0ZV9xdWV1ZXMoaW5mbywgJm51bV9xdWV1ZXMpOwog CWlmIChlcnIgPCAwKQogCQlnb3RvIGRlc3Ryb3lfcmluZzsKIAotLSAKMi4xLjAKCgpGcm9tIDli NmFkYzRlZDI5MTYyZDAyNjdiMTlmNjk2ZjQ2MzIyODZhMjNlYTAgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IERhbiBTdHJlZXRtYW4gPGRhbi5zdHJlZXRtYW5AY2Fub25pY2FsLmNvbT4K RGF0ZTogVGh1LCAyOSBPY3QgMjAxNSAwOTo1MToxNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMjQv MjRdIHhmcm06IGRzdF9lbnRyaWVzX2luaXQoKSBwZXItbmV0IGRzdF9vcHMKClsgVXBzdHJlYW0g Y29tbWl0IGE4YTU3MmE2YjVmMmE3OTI4MGQ2ZTMwMmNiM2MxY2IxZmJhZWIzZTggXQoKUmVtb3Zl IHRoZSBkc3RfZW50cmllc19pbml0L2Rlc3Ryb3kgY2FsbHMgZm9yIHhmcm00IGFuZCB4ZnJtNiBk c3Rfb3BzCnRlbXBsYXRlczsgdGhlaXIgZHN0X2VudHJpZXMgY291bnRlcnMgd2lsbCBuZXZlciBi ZSB1c2VkLiAgTW92ZSB0aGUKeGZybSBkc3Rfb3BzIGluaXRpYWxpemF0aW9uIGZyb20gdGhlIGNv bW1vbiB4ZnJtL3hmcm1fcG9saWN5LmMgdG8KeGZybTQveGZybTRfcG9saWN5LmMgYW5kIHhmcm02 L3hmcm02X3BvbGljeS5jLCBhbmQgY2FsbCBkc3RfZW50cmllc19pbml0CmFuZCBkc3RfZW50cmll c19kZXN0cm95IGZvciBlYWNoIG5ldCBuYW1lc3BhY2UuCgpUaGUgaXB2NCBhbmQgaXB2NiB4ZnJt cyBlYWNoIGNyZWF0ZSBkc3Rfb3BzIHRlbXBsYXRlLCBhbmQgcGVyZm9ybQpkc3RfZW50cmllc19p bml0IG9uIHRoZSB0ZW1wbGF0ZXMuICBUaGUgdGVtcGxhdGUgdmFsdWVzIGFyZSBjb3BpZWQgdG8g ZWFjaApuZXQgbmFtZXNwYWNlJ3MgeGZybS54ZnJtKl9kc3Rfb3BzLiAgVGhlIHByb2JsZW0gdGhl cmUgaXMgdGhlIGRzdF9vcHMKcGNwdWNfZW50cmllcyBmaWVsZCBpcyBhIHBlcmNwdSBjb3VudGVy IGFuZCBjYW5ub3QgYmUgdXNlZCBjb3JyZWN0bHkgYnkKc2ltcGx5IGNvcHlpbmcgaXQgdG8gYW5v dGhlciBvYmplY3QuCgpUaGUgcmVzdWx0IG9mIHRoaXMgaXMgYSB2ZXJ5IHN1YnRsZSBidWc7IGNo YW5nZXMgdG8gdGhlIGRzdCBlbnRyaWVzCmNvdW50ZXIgZnJvbSBvbmUgbmV0IG5hbWVzcGFjZSBt YXkgc29tZXRpbWVzIGdldCBhcHBsaWVkIHRvIGEgZGlmZmVyZW50Cm5ldCBuYW1lc3BhY2UgZHN0 IGVudHJpZXMgY291bnRlci4gIFRoaXMgaXMgYmVjYXVzZSBvZiBob3cgdGhlIHBlcmNwdQpjb3Vu dGVyIHdvcmtzOyBpdCBoYXMgYSBtYWluIGNvdW50IGZpZWxkIGFzIHdlbGwgYXMgYSBwb2ludGVy IHRvIHRoZQpwZXJjcHUgdmFyaWFibGVzLiAgRWFjaCBuZXQgbmFtZXNwYWNlIG1haW50YWlucyBp dHMgb3duIG1haW4gY291bnQKdmFyaWFibGUsIGJ1dCBhbGwgcG9pbnQgdG8gb25lIHNldCBvZiBw ZXJjcHUgdmFyaWFibGVzLiAgV2hlbiBhbnkgbmV0Cm5hbWVzcGFjZSBoYXBwZW5zIHRvIGNoYW5n ZSBvbmUgb2YgdGhlIHBlcmNwdSB2YXJpYWJsZXMgdG8gb3V0c2lkZSBpdHMKc21hbGwgYmF0Y2gg cmFuZ2UsIGl0cyBjb3VudCBpcyBtb3ZlZCB0byB0aGUgbmV0IG5hbWVzcGFjZSdzIG1haW4gY291 bnQKdmFyaWFibGUuICBTbyB3aXRoIG11bHRpcGxlIG5ldCBuYW1lc3BhY2VzIG9wZXJhdGluZyBj b25jdXJyZW50bHksIHRoZQpkc3Rfb3BzIGVudHJpZXMgY291bnRlciBjYW4gc3RyYXkgZnJvbSB0 aGUgYWN0dWFsIHZhbHVlIHRoYXQgaXQgc2hvdWxkCmJlOyBpZiBjb3VudHMgYXJlIGNvbnNpc3Rl bnRseSBtb3ZlZCBmcm9tIG9uZSBuZXQgbmFtZXNwYWNlIHRvIGFub3RoZXIKKHdoaWNoIG15IHRl c3Rpbmcgc2hvd2VkIGlzIGxpa2VseSksIHRoZW4gb25lIG5ldCBuYW1lc3BhY2Ugd2luZHMgdXAK d2l0aCBhIG5lZ2F0aXZlIGRzdF9vcHMgY291bnQgd2hpbGUgYW5vdGhlciB3aW5kcyB1cCB3aXRo IGEgY29udGludWFsbHkKaW5jcmVhc2luZyBjb3VudCwgZXZlbnR1YWxseSByZWFjaGluZyBpdHMg Z2NfdGhyZXNoIGxpbWl0LCB3aGljaCBjYXVzZXMKYWxsIG5ldyB0cmFmZmljIG9uIHRoZSBuZXQg bmFtZXNwYWNlIHRvIGZhaWwgd2l0aCAtRU5PQlVGUy4KClNpZ25lZC1vZmYtYnk6IERhbiBTdHJl ZXRtYW4gPGRhbi5zdHJlZXRtYW5AY2Fub25pY2FsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuIFN0 cmVldG1hbiA8ZGRzdHJlZXRAaWVlZS5vcmc+ClNpZ25lZC1vZmYtYnk6IFN0ZWZmZW4gS2xhc3Nl cnQgPHN0ZWZmZW4ua2xhc3NlcnRAc2VjdW5ldC5jb20+Ci0tLQogbmV0L2lwdjQveGZybTRfcG9s aWN5LmMgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIG5l dC9pcHY2L3hmcm02X3BvbGljeS5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogbmV0L3hmcm0veGZybV9wb2xpY3kuYyAgfCAzOCAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRp b25zKCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC94ZnJtNF9wb2xp Y3kuYyBiL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCmluZGV4IDYxNTZmNjguLjk0ZmMxNmQgMTAw NjQ0Ci0tLSBhL25ldC9pcHY0L3hmcm00X3BvbGljeS5jCisrKyBiL25ldC9pcHY0L3hmcm00X3Bv bGljeS5jCkBAIC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIHZvaWQgeGZybTRfZHN0X2lmZG93bihz dHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJeGZybV9kc3Rf aWZkb3duKGRzdCwgZGV2KTsKIH0KIAotc3RhdGljIHN0cnVjdCBkc3Rfb3BzIHhmcm00X2RzdF9v cHMgPSB7CitzdGF0aWMgc3RydWN0IGRzdF9vcHMgeGZybTRfZHN0X29wc190ZW1wbGF0ZSA9IHsK IAkuZmFtaWx5ID0JCUFGX0lORVQsCiAJLnByb3RvY29sID0JCWNwdV90b19iZTE2KEVUSF9QX0lQ KSwKIAkuZ2MgPQkJCXhmcm00X2dhcmJhZ2VfY29sbGVjdCwKQEAgLTI0NSw3ICsyNDUsNyBAQCBz dGF0aWMgc3RydWN0IGRzdF9vcHMgeGZybTRfZHN0X29wcyA9IHsKIAogc3RhdGljIHN0cnVjdCB4 ZnJtX3BvbGljeV9hZmluZm8geGZybTRfcG9saWN5X2FmaW5mbyA9IHsKIAkuZmFtaWx5ID0gCQlB Rl9JTkVULAotCS5kc3Rfb3BzID0JCSZ4ZnJtNF9kc3Rfb3BzLAorCS5kc3Rfb3BzID0JCSZ4ZnJt NF9kc3Rfb3BzX3RlbXBsYXRlLAogCS5kc3RfbG9va3VwID0JCXhmcm00X2RzdF9sb29rdXAsCiAJ LmdldF9zYWRkciA9CQl4ZnJtNF9nZXRfc2FkZHIsCiAJLmRlY29kZV9zZXNzaW9uID0JX2RlY29k ZV9zZXNzaW9uNCwKQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB4 ZnJtNF9wb2xpY3lfdGFibGVbXSA9IHsKIAl7IH0KIH07CiAKLXN0YXRpYyBpbnQgX19uZXRfaW5p dCB4ZnJtNF9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCitzdGF0aWMgaW50IF9fbmV0X2luaXQg eGZybTRfbmV0X3N5c2N0bF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAlzdHJ1Y3QgY3RsX3Rh YmxlICp0YWJsZTsKIAlzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGRyOwpAQCAtMjk1LDcgKzI5 NSw3IEBAIGVycl9hbGxvYzoKIAlyZXR1cm4gLUVOT01FTTsKIH0KIAotc3RhdGljIHZvaWQgX19u ZXRfZXhpdCB4ZnJtNF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCitzdGF0aWMgdm9pZCBfX25l dF9leGl0IHhmcm00X25ldF9zeXNjdGxfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiB7CiAJc3RydWN0 IGN0bF90YWJsZSAqdGFibGU7CiAKQEAgLTMwNywxMiArMzA3LDQ0IEBAIHN0YXRpYyB2b2lkIF9f bmV0X2V4aXQgeGZybTRfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KQogCWlmICghbmV0X2VxKG5l dCwgJmluaXRfbmV0KSkKIAkJa2ZyZWUodGFibGUpOwogfQorI2Vsc2UgLyogQ09ORklHX1NZU0NU TCAqLworc3RhdGljIGludCBpbmxpbmUgeGZybTRfbmV0X3N5c2N0bF9pbml0KHN0cnVjdCBuZXQg Km5ldCkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaW5saW5lIHhmcm00X25ldF9z eXNjdGxfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCit7Cit9CisjZW5kaWYKKworc3RhdGljIGludCBf X25ldF9pbml0IHhmcm00X25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKK3sKKwlpbnQgcmV0Owor CisJbWVtY3B5KCZuZXQtPnhmcm0ueGZybTRfZHN0X29wcywgJnhmcm00X2RzdF9vcHNfdGVtcGxh dGUsCisJICAgICAgIHNpemVvZih4ZnJtNF9kc3Rfb3BzX3RlbXBsYXRlKSk7CisJcmV0ID0gZHN0 X2VudHJpZXNfaW5pdCgmbmV0LT54ZnJtLnhmcm00X2RzdF9vcHMpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwlyZXQgPSB4ZnJtNF9uZXRfc3lzY3RsX2luaXQobmV0KTsKKwlpZiAocmV0 KQorCQlkc3RfZW50cmllc19kZXN0cm95KCZuZXQtPnhmcm0ueGZybTRfZHN0X29wcyk7CisKKwly ZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm00X25ldF9leGl0KHN0 cnVjdCBuZXQgKm5ldCkKK3sKKwl4ZnJtNF9uZXRfc3lzY3RsX2V4aXQobmV0KTsKKwlkc3RfZW50 cmllc19kZXN0cm95KCZuZXQtPnhmcm0ueGZybTRfZHN0X29wcyk7Cit9CiAKIHN0YXRpYyBzdHJ1 Y3QgcGVybmV0X29wZXJhdGlvbnMgX19uZXRfaW5pdGRhdGEgeGZybTRfbmV0X29wcyA9IHsKIAku aW5pdAk9IHhmcm00X25ldF9pbml0LAogCS5leGl0CT0geGZybTRfbmV0X2V4aXQsCiB9OwotI2Vu ZGlmCiAKIHN0YXRpYyB2b2lkIF9faW5pdCB4ZnJtNF9wb2xpY3lfaW5pdCh2b2lkKQogewpAQCAt MzIxLDEzICszNTMsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgeGZybTRfcG9saWN5X2luaXQodm9p ZCkKIAogdm9pZCBfX2luaXQgeGZybTRfaW5pdCh2b2lkKQogewotCWRzdF9lbnRyaWVzX2luaXQo Jnhmcm00X2RzdF9vcHMpOwotCiAJeGZybTRfc3RhdGVfaW5pdCgpOwogCXhmcm00X3BvbGljeV9p bml0KCk7CiAJeGZybTRfcHJvdG9jb2xfaW5pdCgpOwotI2lmZGVmIENPTkZJR19TWVNDVEwKIAly ZWdpc3Rlcl9wZXJuZXRfc3Vic3lzKCZ4ZnJtNF9uZXRfb3BzKTsKLSNlbmRpZgogfQogCmRpZmYg LS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9wb2xpY3kuYyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5j CmluZGV4IDVmOTgzNjQuLmQyNDI1Y2UgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X3BvbGlj eS5jCisrKyBiL25ldC9pcHY2L3hmcm02X3BvbGljeS5jCkBAIC0yODQsNyArMjg0LDcgQEAgc3Rh dGljIHZvaWQgeGZybTZfZHN0X2lmZG93bihzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QsIHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsCiAJeGZybV9kc3RfaWZkb3duKGRzdCwgZGV2KTsKIH0KIAotc3RhdGlj IHN0cnVjdCBkc3Rfb3BzIHhmcm02X2RzdF9vcHMgPSB7CitzdGF0aWMgc3RydWN0IGRzdF9vcHMg eGZybTZfZHN0X29wc190ZW1wbGF0ZSA9IHsKIAkuZmFtaWx5ID0JCUFGX0lORVQ2LAogCS5wcm90 b2NvbCA9CQljcHVfdG9fYmUxNihFVEhfUF9JUFY2KSwKIAkuZ2MgPQkJCXhmcm02X2dhcmJhZ2Vf Y29sbGVjdCwKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgc3RydWN0IGRzdF9vcHMgeGZybTZf ZHN0X29wcyA9IHsKIAogc3RhdGljIHN0cnVjdCB4ZnJtX3BvbGljeV9hZmluZm8geGZybTZfcG9s aWN5X2FmaW5mbyA9IHsKIAkuZmFtaWx5ID0JCUFGX0lORVQ2LAotCS5kc3Rfb3BzID0JCSZ4ZnJt Nl9kc3Rfb3BzLAorCS5kc3Rfb3BzID0JCSZ4ZnJtNl9kc3Rfb3BzX3RlbXBsYXRlLAogCS5kc3Rf bG9va3VwID0JCXhmcm02X2RzdF9sb29rdXAsCiAJLmdldF9zYWRkciA9CQl4ZnJtNl9nZXRfc2Fk ZHIsCiAJLmRlY29kZV9zZXNzaW9uID0JX2RlY29kZV9zZXNzaW9uNiwKQEAgLTMzMiw3ICszMzIs NyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSB4ZnJtNl9wb2xpY3lfdGFibGVbXSA9IHsKIAl7 IH0KIH07CiAKLXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtNl9uZXRfaW5pdChzdHJ1Y3QgbmV0 ICpuZXQpCitzdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybTZfbmV0X3N5c2N0bF9pbml0KHN0cnVj dCBuZXQgKm5ldCkKIHsKIAlzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZTsKIAlzdHJ1Y3QgY3RsX3Rh YmxlX2hlYWRlciAqaGRyOwpAQCAtMzYwLDcgKzM2MCw3IEBAIGVycl9hbGxvYzoKIAlyZXR1cm4g LUVOT01FTTsKIH0KIAotc3RhdGljIHZvaWQgX19uZXRfZXhpdCB4ZnJtNl9uZXRfZXhpdChzdHJ1 Y3QgbmV0ICpuZXQpCitzdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm02X25ldF9zeXNjdGxfZXhp dChzdHJ1Y3QgbmV0ICpuZXQpCiB7CiAJc3RydWN0IGN0bF90YWJsZSAqdGFibGU7CiAKQEAgLTM3 MiwyNCArMzcyLDUyIEBAIHN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybTZfbmV0X2V4aXQoc3Ry dWN0IG5ldCAqbmV0KQogCWlmICghbmV0X2VxKG5ldCwgJmluaXRfbmV0KSkKIAkJa2ZyZWUodGFi bGUpOwogfQorI2Vsc2UgLyogQ09ORklHX1NZU0NUTCAqLworc3RhdGljIGludCBpbmxpbmUgeGZy bTZfbmV0X3N5c2N0bF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKK3sKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHZvaWQgaW5saW5lIHhmcm02X25ldF9zeXNjdGxfZXhpdChzdHJ1Y3QgbmV0ICpuZXQp Cit7Cit9CisjZW5kaWYKKworc3RhdGljIGludCBfX25ldF9pbml0IHhmcm02X25ldF9pbml0KHN0 cnVjdCBuZXQgKm5ldCkKK3sKKwlpbnQgcmV0OworCisJbWVtY3B5KCZuZXQtPnhmcm0ueGZybTZf ZHN0X29wcywgJnhmcm02X2RzdF9vcHNfdGVtcGxhdGUsCisJICAgICAgIHNpemVvZih4ZnJtNl9k c3Rfb3BzX3RlbXBsYXRlKSk7CisJcmV0ID0gZHN0X2VudHJpZXNfaW5pdCgmbmV0LT54ZnJtLnhm cm02X2RzdF9vcHMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSB4ZnJtNl9u ZXRfc3lzY3RsX2luaXQobmV0KTsKKwlpZiAocmV0KQorCQlkc3RfZW50cmllc19kZXN0cm95KCZu ZXQtPnhmcm0ueGZybTZfZHN0X29wcyk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCBfX25ldF9leGl0IHhmcm02X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldCkKK3sKKwl4ZnJtNl9u ZXRfc3lzY3RsX2V4aXQobmV0KTsKKwlkc3RfZW50cmllc19kZXN0cm95KCZuZXQtPnhmcm0ueGZy bTZfZHN0X29wcyk7Cit9CiAKIHN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgeGZybTZf bmV0X29wcyA9IHsKIAkuaW5pdAk9IHhmcm02X25ldF9pbml0LAogCS5leGl0CT0geGZybTZfbmV0 X2V4aXQsCiB9OwotI2VuZGlmCiAKIGludCBfX2luaXQgeGZybTZfaW5pdCh2b2lkKQogewogCWlu dCByZXQ7CiAKLQlkc3RfZW50cmllc19pbml0KCZ4ZnJtNl9kc3Rfb3BzKTsKLQogCXJldCA9IHhm cm02X3BvbGljeV9pbml0KCk7Ci0JaWYgKHJldCkgewotCQlkc3RfZW50cmllc19kZXN0cm95KCZ4 ZnJtNl9kc3Rfb3BzKTsKKwlpZiAocmV0KQogCQlnb3RvIG91dDsKLQl9CiAJcmV0ID0geGZybTZf c3RhdGVfaW5pdCgpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3BvbGljeTsKQEAgLTM5OCw5ICs0 MjYsNyBAQCBpbnQgX19pbml0IHhmcm02X2luaXQodm9pZCkKIAlpZiAocmV0KQogCQlnb3RvIG91 dF9zdGF0ZTsKIAotI2lmZGVmIENPTkZJR19TWVNDVEwKIAlyZWdpc3Rlcl9wZXJuZXRfc3Vic3lz KCZ4ZnJtNl9uZXRfb3BzKTsKLSNlbmRpZgogb3V0OgogCXJldHVybiByZXQ7CiBvdXRfc3RhdGU6 CkBAIC00MTIsMTEgKzQzOCw4IEBAIG91dF9wb2xpY3k6CiAKIHZvaWQgeGZybTZfZmluaSh2b2lk KQogewotI2lmZGVmIENPTkZJR19TWVNDVEwKIAl1bnJlZ2lzdGVyX3Blcm5ldF9zdWJzeXMoJnhm cm02X25ldF9vcHMpOwotI2VuZGlmCiAJeGZybTZfcHJvdG9jb2xfZmluaSgpOwogCXhmcm02X3Bv bGljeV9maW5pKCk7CiAJeGZybTZfc3RhdGVfZmluaSgpOwotCWRzdF9lbnRyaWVzX2Rlc3Ryb3ko Jnhmcm02X2RzdF9vcHMpOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBi L25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggZjYyZmQyYy4uNDc2OTM4MiAxMDA2NDQKLS0t IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYworKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jCkBA IC0yODAxLDcgKzI4MDEsNiBAQCBzdGF0aWMgc3RydWN0IG5laWdoYm91ciAqeGZybV9uZWlnaF9s b29rdXAoY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0LAogCiBpbnQgeGZybV9wb2xpY3lfcmVn aXN0ZXJfYWZpbmZvKHN0cnVjdCB4ZnJtX3BvbGljeV9hZmluZm8gKmFmaW5mbykKIHsKLQlzdHJ1 Y3QgbmV0ICpuZXQ7CiAJaW50IGVyciA9IDA7CiAJaWYgKHVubGlrZWx5KGFmaW5mbyA9PSBOVUxM KSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0yODMyLDI2ICsyODMxLDYgQEAgaW50IHhmcm1fcG9s aWN5X3JlZ2lzdGVyX2FmaW5mbyhzdHJ1Y3QgeGZybV9wb2xpY3lfYWZpbmZvICphZmluZm8pCiAJ fQogCXNwaW5fdW5sb2NrKCZ4ZnJtX3BvbGljeV9hZmluZm9fbG9jayk7CiAKLQlydG5sX2xvY2so KTsKLQlmb3JfZWFjaF9uZXQobmV0KSB7Ci0JCXN0cnVjdCBkc3Rfb3BzICp4ZnJtX2RzdF9vcHM7 Ci0KLQkJc3dpdGNoIChhZmluZm8tPmZhbWlseSkgewotCQljYXNlIEFGX0lORVQ6Ci0JCQl4ZnJt X2RzdF9vcHMgPSAmbmV0LT54ZnJtLnhmcm00X2RzdF9vcHM7Ci0JCQlicmVhazsKLSNpZiBJU19F TkFCTEVEKENPTkZJR19JUFY2KQotCQljYXNlIEFGX0lORVQ2OgotCQkJeGZybV9kc3Rfb3BzID0g Jm5ldC0+eGZybS54ZnJtNl9kc3Rfb3BzOwotCQkJYnJlYWs7Ci0jZW5kaWYKLQkJZGVmYXVsdDoK LQkJCUJVRygpOwotCQl9Ci0JCSp4ZnJtX2RzdF9vcHMgPSAqYWZpbmZvLT5kc3Rfb3BzOwotCX0K LQlydG5sX3VubG9jaygpOwotCiAJcmV0dXJuIGVycjsKIH0KIEVYUE9SVF9TWU1CT0woeGZybV9w b2xpY3lfcmVnaXN0ZXJfYWZpbmZvKTsKQEAgLTI4ODcsMjIgKzI4NjYsNiBAQCBpbnQgeGZybV9w b2xpY3lfdW5yZWdpc3Rlcl9hZmluZm8oc3RydWN0IHhmcm1fcG9saWN5X2FmaW5mbyAqYWZpbmZv KQogfQogRVhQT1JUX1NZTUJPTCh4ZnJtX3BvbGljeV91bnJlZ2lzdGVyX2FmaW5mbyk7CiAKLXN0 YXRpYyB2b2lkIF9fbmV0X2luaXQgeGZybV9kc3Rfb3BzX2luaXQoc3RydWN0IG5ldCAqbmV0KQot ewotCXN0cnVjdCB4ZnJtX3BvbGljeV9hZmluZm8gKmFmaW5mbzsKLQotCXJjdV9yZWFkX2xvY2so KTsKLQlhZmluZm8gPSByY3VfZGVyZWZlcmVuY2UoeGZybV9wb2xpY3lfYWZpbmZvW0FGX0lORVRd KTsKLQlpZiAoYWZpbmZvKQotCQluZXQtPnhmcm0ueGZybTRfZHN0X29wcyA9ICphZmluZm8tPmRz dF9vcHM7Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNikKLQlhZmluZm8gPSByY3VfZGVyZWZl cmVuY2UoeGZybV9wb2xpY3lfYWZpbmZvW0FGX0lORVQ2XSk7Ci0JaWYgKGFmaW5mbykKLQkJbmV0 LT54ZnJtLnhmcm02X2RzdF9vcHMgPSAqYWZpbmZvLT5kc3Rfb3BzOwotI2VuZGlmCi0JcmN1X3Jl YWRfdW5sb2NrKCk7Ci19Ci0KIHN0YXRpYyBpbnQgeGZybV9kZXZfZXZlbnQoc3RydWN0IG5vdGlm aWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpCiB7CiAJc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2RldihwdHIpOwpA QCAtMzA1MCw3ICszMDEzLDYgQEAgc3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fbmV0X2luaXQo c3RydWN0IG5ldCAqbmV0KQogCXJ2ID0geGZybV9wb2xpY3lfaW5pdChuZXQpOwogCWlmIChydiA8 IDApCiAJCWdvdG8gb3V0X3BvbGljeTsKLQl4ZnJtX2RzdF9vcHNfaW5pdChuZXQpOwogCXJ2ID0g eGZybV9zeXNjdGxfaW5pdChuZXQpOwogCWlmIChydiA8IDApCiAJCWdvdG8gb3V0X3N5c2N0bDsK LS0gCjIuMS4wCgo= ----Next_Part(Tue_Jan_26_18_00_44_2016_358)----