From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 115681 invoked by alias); 31 Mar 2015 04:38:14 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 115663 invoked by uid 89); 31 Mar 2015 04:38:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=3.5 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,KAM_FROM_URIBL_PCCC,SPF_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: fencepost.gnu.org Received: from fencepost.gnu.org (HELO fencepost.gnu.org) (208.118.235.10) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Tue, 31 Mar 2015 04:38:01 +0000 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59637) by fencepost.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1Ycnw6-0003vs-Ix for gcc-patches@gnu.org; Tue, 31 Mar 2015 00:37:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ycnvw-0007o4-MA for gcc-patches@gnu.org; Tue, 31 Mar 2015 00:37:58 -0400 Received: from mail-la0-x231.google.com ([2a00:1450:4010:c03::231]:35772) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ycnvv-0007nu-OZ for gcc-patches@gnu.org; Tue, 31 Mar 2015 00:37:48 -0400 Received: by lahf3 with SMTP id f3so3434168lah.2 for ; Mon, 30 Mar 2015 21:37:44 -0700 (PDT) X-Received: by 10.152.234.42 with SMTP id ub10mr8930105lac.55.1427776664584; Mon, 30 Mar 2015 21:37:44 -0700 (PDT) Received: from [192.168.123.200] ([77.41.78.126]) by mx.google.com with ESMTPSA id zo8sm2397590lbc.37.2015.03.30.21.37.43 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Mar 2015 21:37:43 -0700 (PDT) Message-ID: <551A2494.7010906@gmail.com> Date: Tue, 31 Mar 2015 04:38:00 -0000 From: Mikhail Maltsev User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Jeff Law , gcc-patches Subject: [PATCH, RFC]: Next stage1, refactoring: propagating rtx subclasses Content-Type: multipart/mixed; boundary="------------090107050809050009060203" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c03::231 X-IsSubscribed: yes X-SW-Source: 2015-03/txt/msg01606.txt.bz2 This is a multi-part message in MIME format. --------------090107050809050009060203 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-length: 2525 Hi! I'm currently working on the proposed task of replacing rtx objects (i.e. struct rtx_def) with derived classes. I would like to get some feedback on this work (it's far from being finished, but basically I would like to know, whether my modifications are appropriate, e.g. one may consider that this is "too much" for just refactoring, because sometimes they involve small modification of semantics). The attached patch is not well tested, i.e. I bootstrapped and regtested it only on x86_64, but I'll perform more extensive testing before submitting the next version. The key points I would like to ask about: 1. The original task was to replace the rtx type by rtx_insn *, where it is appropriate. But rtx_insn has several derived classes, such as rtx_code_label, for example. So I tried to use the most derived type when possible. Is it OK? 2. Not all of these "type promotions" can be done by just looking at function callers and callees (and some functions will only be generated during the build of some rare architecture) and checks already done in them. In a couple of cases I referred to comments and my general understanding of code semantics. In one case this actually caused a regression (in the patch it is fixed, of course), because of somewhat misleading comment (see "live_label_rtx" function added in patch for details) The question is - are such changes OK for refactoring (or it should strictly preserve semantics)? 3. In lra-constraints.c I added a new class rtx_usage_list, which, IMHO, allows to group the functions which work with usage list in a more explicit manner and make some conditions more self-explaining. I hope that Vladimir Makarov (in this case, because it concerns LRA) and other authors will not object against such "intrusion" into their code (or would rather tell me what should be fixed in my patch(es), instead of just refusing to apply it/them). In general, are such changes OK or should better be avoided? A couple of questions related to further work: 1. I noticed that emit_insn function, in fact, does two kinds of things: it can either add it's argument to the chain, or, if the argument is a pattern, it creates a new instruction based on that pattern. Shouldn't this logic be separated in the callers? 2. Are there any plans on implementing a better class hierarchy on AST's ("union tree_node" type). I see that C++ FE uses a huge number of macros (which check TREE_CODE and some boolean flags). Could this be improved somehow? -- Regards, Mikhail Maltsev --------------090107050809050009060203 Content-Type: text/plain; charset=windows-1251; name="as_insn.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="as_insn.patch" Content-length: 149951 ZGlmZiAtLWdpdCBhL2djYy9iYi1yZW9yZGVyLmMgYi9nY2MvYmItcmVvcmRl ci5jCmluZGV4IGMyYTNiZTMuLjcxNzlmYWEgMTAwNjQ0Ci0tLSBhL2djYy9i Yi1yZW9yZGVyLmMKKysrIGIvZ2NjL2JiLXJlb3JkZXIuYwpAQCAtMTc0NSw5 ICsxNzQ1LDExIEBAIHNldF9lZGdlX2Nhbl9mYWxsdGhydV9mbGFnICh2b2lk KQogCWNvbnRpbnVlOwogICAgICAgaWYgKCFhbnlfY29uZGp1bXBfcCAoQkJf RU5EIChiYikpKQogCWNvbnRpbnVlOwotICAgICAgaWYgKCFpbnZlcnRfanVt cCAoQkJfRU5EIChiYiksIEpVTVBfTEFCRUwgKEJCX0VORCAoYmIpKSwgMCkp CisKKyAgICAgIHJ0eF9qdW1wX2luc24gKmJiX2VuZF9qdW1wID0gYXNfYSA8 cnR4X2p1bXBfaW5zbiAqPiAoQkJfRU5EIChiYikpOworICAgICAgaWYgKCFp bnZlcnRfanVtcCAoYmJfZW5kX2p1bXAsIEpVTVBfTEFCRUwgKGJiX2VuZF9q dW1wKSwgMCkpCiAJY29udGludWU7Ci0gICAgICBpbnZlcnRfanVtcCAoQkJf RU5EIChiYiksIEpVTVBfTEFCRUwgKEJCX0VORCAoYmIpKSwgMCk7CisgICAg ICBpbnZlcnRfanVtcCAoYmJfZW5kX2p1bXAsIEpVTVBfTEFCRUwgKGJiX2Vu ZF9qdW1wKSwgMCk7CiAgICAgICBFREdFX1NVQ0MgKGJiLCAwKS0+ZmxhZ3Mg fD0gRURHRV9DQU5fRkFMTFRIUlU7CiAgICAgICBFREdFX1NVQ0MgKGJiLCAx KS0+ZmxhZ3MgfD0gRURHRV9DQU5fRkFMTFRIUlU7CiAgICAgfQpAQCAtMTkw Miw5ICsxOTA0LDE1IEBAIGZpeF91cF9mYWxsX3RocnVfZWRnZXMgKHZvaWQp CiAKIAkJICAgICAgZmFsbF90aHJ1X2xhYmVsID0gYmxvY2tfbGFiZWwgKGZh bGxfdGhydS0+ZGVzdCk7CiAKLQkJICAgICAgaWYgKG9sZF9qdW1wICYmIEpV TVBfUCAob2xkX2p1bXApICYmIGZhbGxfdGhydV9sYWJlbCkKLQkJCWludmVy dF93b3JrZWQgPSBpbnZlcnRfanVtcCAob2xkX2p1bXAsCi0JCQkJCQkgICAg IGZhbGxfdGhydV9sYWJlbCwwKTsKKwkJICAgICAgaWYgKG9sZF9qdW1wICYm IGZhbGxfdGhydV9sYWJlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnR4X2p1bXBfaW5zbiAqb2xk X2p1bXBfaW5zbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZHluX2Nhc3QgPHJ0eF9qdW1wX2luc24gKj4gKG9sZF9qdW1wKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZF9qdW1wX2luc24pCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52ZXJ0X3dvcmtlZCA9IGlu dmVydF9qdW1wIChvbGRfanVtcF9pbnNuLAorCQkJCQkJICAgICBmYWxsX3Ro cnVfbGFiZWwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCiAJ CSAgICAgIGlmIChpbnZlcnRfd29ya2VkKQogCQkJewogCQkJICBmYWxsX3Ro cnUtPmZsYWdzICY9IH5FREdFX0ZBTExUSFJVOwpAQCAtMjAyNCw3ICsyMDMy LDcgQEAgZml4X2Nyb3NzaW5nX2NvbmRpdGlvbmFsX2JyYW5jaGVzICh2b2lk KQogICBydHhfaW5zbiAqb2xkX2p1bXA7CiAgIHJ0eCBzZXRfc3JjOwogICBy dHggb2xkX2xhYmVsID0gTlVMTF9SVFg7Ci0gIHJ0eCBuZXdfbGFiZWw7Cisg IHJ0eF9jb2RlX2xhYmVsICpuZXdfbGFiZWw7CiAKICAgRk9SX0VBQ0hfQkJf Rk4gKGN1cl9iYiwgY2Z1bikKICAgICB7CkBAIC0yMDg4LDcgKzIwOTYsNyBA QCBmaXhfY3Jvc3NpbmdfY29uZGl0aW9uYWxfYnJhbmNoZXMgKHZvaWQpCiAJ ICAgICAgZWxzZQogCQl7CiAJCSAgYmFzaWNfYmxvY2sgbGFzdF9iYjsKLQkJ ICBydHhfaW5zbiAqbmV3X2p1bXA7CisJCSAgcnR4X2luc24gKm5ld19qdW1w LCAqb2xkX2xhYmVsX2luc247CiAKIAkJICAvKiBDcmVhdGUgbmV3IGJhc2lj IGJsb2NrIHRvIGJlIGRlc3QgZm9yCiAJCSAgICAgY29uZGl0aW9uYWwganVt cC4gICovCkBAIC0yMDk5LDkgKzIxMDcsOSBAQCBmaXhfY3Jvc3NpbmdfY29u ZGl0aW9uYWxfYnJhbmNoZXMgKHZvaWQpCiAJCSAgZW1pdF9sYWJlbCAobmV3 X2xhYmVsKTsKIAogCQkgIGdjY19hc3NlcnQgKEdFVF9DT0RFIChvbGRfbGFi ZWwpID09IExBQkVMX1JFRik7Ci0JCSAgb2xkX2xhYmVsID0gSlVNUF9MQUJF TCAob2xkX2p1bXApOwotCQkgIG5ld19qdW1wID0gZW1pdF9qdW1wX2luc24g KGdlbl9qdW1wIChvbGRfbGFiZWwpKTsKLQkJICBKVU1QX0xBQkVMIChuZXdf anVtcCkgPSBvbGRfbGFiZWw7CisJCSAgb2xkX2xhYmVsX2luc24gPSBKVU1Q X0xBQkVMX0FTX0lOU04gKG9sZF9qdW1wKTsKKwkJICBuZXdfanVtcCA9IGVt aXRfanVtcF9pbnNuIChnZW5fanVtcCAob2xkX2xhYmVsX2luc24pKTsKKwkJ ICBKVU1QX0xBQkVMIChuZXdfanVtcCkgPSBvbGRfbGFiZWxfaW5zbjsKIAog CQkgIGxhc3RfYmIgPSBFWElUX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pLT5w cmV2X2JiOwogCQkgIG5ld19iYiA9IGNyZWF0ZV9iYXNpY19ibG9jayAobmV3 X2xhYmVsLCBuZXdfanVtcCwgbGFzdF9iYik7CkBAIC0yMTE3LDcgKzIxMjUs NyBAQCBmaXhfY3Jvc3NpbmdfY29uZGl0aW9uYWxfYnJhbmNoZXMgKHZvaWQp CiAKIAkgICAgICAvKiBNYWtlIG9sZCBqdW1wIGJyYW5jaCB0byBuZXcgYmIu ICAqLwogCi0JICAgICAgcmVkaXJlY3RfanVtcCAob2xkX2p1bXAsIG5ld19s YWJlbCwgMCk7CisJICAgICAgcmVkaXJlY3RfanVtcCAoYXNfYSA8cnR4X2p1 bXBfaW5zbiAqPiAob2xkX2p1bXApLCBuZXdfbGFiZWwsIDApOwogCiAJICAg ICAgLyogUmVtb3ZlIGNyb3NzaW5nX2VkZ2UgYXMgcHJlZGVjZXNzb3Igb2Yg J2Rlc3QnLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL2J0LWxvYWQuYyBiL2dj Yy9idC1sb2FkLmMKaW5kZXggYzAyODI4MS4uMjI4MDEyNCAxMDA2NDQKLS0t IGEvZ2NjL2J0LWxvYWQuYworKysgYi9nY2MvYnQtbG9hZC5jCkBAIC0xMjEy LDcgKzEyMTIsNyBAQCBtb3ZlX2J0cl9kZWYgKGJhc2ljX2Jsb2NrIG5ld19k ZWZfYmIsIGludCBidHIsIGJ0cl9kZWYgZGVmLCBiaXRtYXAgbGl2ZV9yYW5n ZSwKICAgYnRyX21vZGUgPSBHRVRfTU9ERSAoU0VUX0RFU1QgKHNldCkpOwog ICBidHJfcnR4ID0gZ2VuX3J0eF9SRUcgKGJ0cl9tb2RlLCBidHIpOwogCi0g IG5ld19pbnNuID0gYXNfYSA8cnR4X2luc24gKj4gKGdlbl9tb3ZlX2luc24g KGJ0cl9ydHgsIHNyYykpOworICBuZXdfaW5zbiA9IGdlbl9tb3ZlX2luc24g KGJ0cl9ydHgsIHNyYyk7CiAKICAgLyogSW5zZXJ0IHRhcmdldCByZWdpc3Rl ciBpbml0aWFsaXphdGlvbiBhdCBoZWFkIG9mIGJhc2ljIGJsb2NrLiAgKi8K ICAgZGVmLT5pbnNuID0gZW1pdF9pbnNuX2FmdGVyIChuZXdfaW5zbiwgaW5z cCk7CmRpZmYgLS1naXQgYS9nY2MvYnVpbHRpbnMuYyBiL2djYy9idWlsdGlu cy5jCmluZGV4IDkyNjM3NzcuLjk0NTQ5MmUgMTAwNjQ0Ci0tLSBhL2djYy9i dWlsdGlucy5jCisrKyBiL2djYy9idWlsdGlucy5jCkBAIC0yMDAxLDcgKzIw MDEsNyBAQCBleHBhbmRfZXJybm9fY2hlY2sgKHRyZWUgZXhwLCBydHggdGFy Z2V0KQogICAvKiBUZXN0IHRoZSByZXN1bHQ7IGlmIGl0IGlzIE5hTiwgc2V0 IGVycm5vPUVET00gYmVjYXVzZQogICAgICB0aGUgYXJndW1lbnQgd2FzIG5v dCBpbiB0aGUgZG9tYWluLiAgKi8KICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1 bXAgKHRhcmdldCwgdGFyZ2V0LCBFUSwgMCwgR0VUX01PREUgKHRhcmdldCks Ci0JCQkgICBOVUxMX1JUWCwgTlVMTF9SVFgsIGxhYiwKKwkJCSAgIE5VTExf UlRYLCBOVUxMLCBsYWIsCiAJCQkgICAvKiBUaGUganVtcCBpcyB2ZXJ5IGxp a2VseS4gICovCiAJCQkgICBSRUdfQlJfUFJPQl9CQVNFIC0gKFJFR19CUl9Q Uk9CX0JBU0UgLyAyMDAwIC0gMSkpOwogCkBAIC01OTM4LDkgKzU5MzgsOSBA QCBleHBhbmRfYnVpbHRpbl9hY2Nfb25fZGV2aWNlICh0cmVlIGV4cCwgcnR4 IHRhcmdldCkKICAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgY29uc3QxX3J0 eCk7CiAgIHJ0eF9jb2RlX2xhYmVsICpkb25lX2xhYmVsID0gZ2VuX2xhYmVs X3J0eCAoKTsKICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHYsIHYxLCBF USwgZmFsc2UsIHZfbW9kZSwgTlVMTF9SVFgsCi0JCQkgICBOVUxMX1JUWCwg ZG9uZV9sYWJlbCwgUFJPQl9FVkVOKTsKKwkJCSAgIE5VTEwsIGRvbmVfbGFi ZWwsIFBST0JfRVZFTik7CiAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wICh2 LCB2MiwgRVEsIGZhbHNlLCB2X21vZGUsIE5VTExfUlRYLAotCQkJICAgTlVM TF9SVFgsIGRvbmVfbGFiZWwsIFBST0JfRVZFTik7CisJCQkgICBOVUxMLCBk b25lX2xhYmVsLCBQUk9CX0VWRU4pOwogICBlbWl0X21vdmVfaW5zbiAodGFy Z2V0LCBjb25zdDBfcnR4KTsKICAgZW1pdF9sYWJlbCAoZG9uZV9sYWJlbCk7 CiAKZGlmZiAtLWdpdCBhL2djYy9jZmdjbGVhbnVwLmMgYi9nY2MvY2ZnY2xl YW51cC5jCmluZGV4IGNlZTE1MmUuLjA1MTQ2YjYgMTAwNjQ0Ci0tLSBhL2dj Yy9jZmdjbGVhbnVwLmMKKysrIGIvZ2NjL2NmZ2NsZWFudXAuYwpAQCAtMTkw LDcgKzE5MCw4IEBAIHRyeV9zaW1wbGlmeV9jb25kanVtcCAoYmFzaWNfYmxv Y2sgY2JyYW5jaF9ibG9jaykKICAgICByZXR1cm4gZmFsc2U7CiAKICAgLyog SW52ZXJ0IHRoZSBjb25kaXRpb25hbCBicmFuY2guICAqLwotICBpZiAoIWlu dmVydF9qdW1wIChjYnJhbmNoX2luc24sIGJsb2NrX2xhYmVsIChqdW1wX2Rl c3RfYmxvY2spLCAwKSkKKyAgaWYgKCFpbnZlcnRfanVtcCAoYXNfYSA8cnR4 X2p1bXBfaW5zbiAqPiAoY2JyYW5jaF9pbnNuKSwKKyAgICAgICAgICAgICAg ICAgICAgYmxvY2tfbGFiZWwgKGp1bXBfZGVzdF9ibG9jayksIDApKQogICAg IHJldHVybiBmYWxzZTsKIAogICBpZiAoZHVtcF9maWxlKQpkaWZmIC0tZ2l0 IGEvZ2NjL2NmZ2V4cGFuZC5jIGIvZ2NjL2NmZ2V4cGFuZC5jCmluZGV4IDk3 ZTdhMjUuLmFlZGM0YjggMTAwNjQ0Ci0tLSBhL2djYy9jZmdleHBhbmQuYwor KysgYi9nY2MvY2ZnZXhwYW5kLmMKQEAgLTIwNTEsNyArMjA1MSw3IEBAIHN0 YXRpYyBoYXNoX21hcDxiYXNpY19ibG9jaywgcnR4X2NvZGVfbGFiZWwgKj4g KmxhYl9ydHhfZm9yX2JiOwogCiAvKiBSZXR1cm5zIHRoZSBsYWJlbF9ydHgg ZXhwcmVzc2lvbiBmb3IgYSBsYWJlbCBzdGFydGluZyBiYXNpYyBibG9jayBC Qi4gICovCiAKLXN0YXRpYyBydHgKK3N0YXRpYyBydHhfY29kZV9sYWJlbCAq CiBsYWJlbF9ydHhfZm9yX2JiIChiYXNpY19ibG9jayBiYiBBVFRSSUJVVEVf VU5VU0VEKQogewogICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2k7CkBAIC0y MDc4LDcgKzIwNzgsNyBAQCBsYWJlbF9ydHhfZm9yX2JiIChiYXNpY19ibG9j ayBiYiBBVFRSSUJVVEVfVU5VU0VEKQogICAgICAgaWYgKERFQ0xfTk9OTE9D QUwgKGxhYikpCiAJYnJlYWs7CiAKLSAgICAgIHJldHVybiBsYWJlbF9ydHgg KGxhYik7CisgICAgICByZXR1cm4gbGl2ZV9sYWJlbF9ydHggKGxhYik7CiAg ICAgfQogCiAgIHJ0eF9jb2RlX2xhYmVsICpsID0gZ2VuX2xhYmVsX3J0eCAo KTsKQEAgLTU1NzksNyArNTU3OSw3IEBAIGNvbnN0cnVjdF9pbml0X2Jsb2Nr ICh2b2lkKQogICAgIHsKICAgICAgIHRyZWUgbGFiZWwgPSBnaW1wbGVfYmxv Y2tfbGFiZWwgKGUtPmRlc3QpOwogCi0gICAgICBlbWl0X2p1bXAgKGxhYmVs X3J0eCAobGFiZWwpKTsKKyAgICAgIGVtaXRfanVtcCAobGl2ZV9sYWJlbF9y dHggKGxhYmVsKSk7CiAgICAgICBmbGFncyA9IDA7CiAgICAgfQogICBlbHNl CmRpZmYgLS1naXQgYS9nY2MvY2ZncnRsLmMgYi9nY2MvY2ZncnRsLmMKaW5k ZXggMGUyN2VkZC4uN2RhMjNlNyAxMDA2NDQKLS0tIGEvZ2NjL2NmZ3J0bC5j CisrKyBiL2djYy9jZmdydGwuYwpAQCAtMTAwMSwxOCArMTAwMSwxOCBAQCBy dGxfY2FuX21lcmdlX2Jsb2NrcyAoYmFzaWNfYmxvY2sgYSwgYmFzaWNfYmxv Y2sgYikKIC8qIFJldHVybiB0aGUgbGFiZWwgaW4gdGhlIGhlYWQgb2YgYmFz aWMgYmxvY2sgQkxPQ0suICBDcmVhdGUgb25lIGlmIGl0IGRvZXNuJ3QKICAg IGV4aXN0LiAgKi8KIAotcnR4CitydHhfY29kZV9sYWJlbCAqCiBibG9ja19s YWJlbCAoYmFzaWNfYmxvY2sgYmxvY2spCiB7CiAgIGlmIChibG9jayA9PSBF WElUX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pKQotICAgIHJldHVybiBOVUxM X1JUWDsKKyAgICByZXR1cm4gTlVMTDsKIAogICBpZiAoIUxBQkVMX1AgKEJC X0hFQUQgKGJsb2NrKSkpCiAgICAgewogICAgICAgQkJfSEVBRCAoYmxvY2sp ID0gZW1pdF9sYWJlbF9iZWZvcmUgKGdlbl9sYWJlbF9ydHggKCksIEJCX0hF QUQgKGJsb2NrKSk7CiAgICAgfQogCi0gIHJldHVybiBCQl9IRUFEIChibG9j ayk7CisgIHJldHVybiBhc19hIDxydHhfY29kZV9sYWJlbCAqPiAoQkJfSEVB RCAoYmxvY2spKTsKIH0KIAogLyogQXR0ZW1wdCB0byBwZXJmb3JtIGVkZ2Ug cmVkaXJlY3Rpb24gYnkgcmVwbGFjaW5nIHBvc3NpYmx5IGNvbXBsZXgganVt cApAQCAtMTExNCw3ICsxMTE0LDggQEAgdHJ5X3JlZGlyZWN0X2J5X3JlcGxh Y2luZ19qdW1wIChlZGdlIGUsIGJhc2ljX2Jsb2NrIHRhcmdldCwgYm9vbCBp bl9jZmdsYXlvdXQpCiAgICAgICBpZiAoZHVtcF9maWxlKQogCWZwcmludGYg KGR1bXBfZmlsZSwgIlJlZGlyZWN0aW5nIGp1bXAgJWkgZnJvbSAlaSB0byAl aS5cbiIsCiAJCSBJTlNOX1VJRCAoaW5zbiksIGUtPmRlc3QtPmluZGV4LCB0 YXJnZXQtPmluZGV4KTsKLSAgICAgIGlmICghcmVkaXJlY3RfanVtcCAoaW5z biwgYmxvY2tfbGFiZWwgKHRhcmdldCksIDApKQorICAgICAgaWYgKCFyZWRp cmVjdF9qdW1wIChhc19hIDxydHhfanVtcF9pbnNuICo+IChpbnNuKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfbGFiZWwgKHRhcmdldCks IDApKQogCXsKIAkgIGdjY19hc3NlcnQgKHRhcmdldCA9PSBFWElUX0JMT0NL X1BUUl9GT1JfRk4gKGNmdW4pKTsKIAkgIHJldHVybiBOVUxMOwpAQCAtMTI5 OCw3ICsxMjk5LDggQEAgcGF0Y2hfanVtcF9pbnNuIChydHhfaW5zbiAqaW5z biwgcnR4X2luc24gKm9sZF9sYWJlbCwgYmFzaWNfYmxvY2sgbmV3X2JiKQog CSAgLyogSWYgdGhlIHN1YnN0aXR1dGlvbiBkb2Vzbid0IHN1Y2NlZWQsIGRp ZS4gIFRoaXMgY2FuIGhhcHBlbgogCSAgICAgaWYgdGhlIGJhY2sgZW5kIGVt aXR0ZWQgdW5yZWNvZ25pemFibGUgaW5zdHJ1Y3Rpb25zIG9yIGlmCiAJICAg ICB0YXJnZXQgaXMgZXhpdCBibG9jayBvbiBzb21lIGFyY2hlcy4gICovCi0J ICBpZiAoIXJlZGlyZWN0X2p1bXAgKGluc24sIGJsb2NrX2xhYmVsIChuZXdf YmIpLCAwKSkKKwkgIGlmICghcmVkaXJlY3RfanVtcCAoYXNfYSA8cnR4X2p1 bXBfaW5zbiAqPiAoaW5zbiksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBibG9ja19sYWJlbCAobmV3X2JiKSwgMCkpCiAJICAgIHsKIAkgICAg ICBnY2NfYXNzZXJ0IChuZXdfYmIgPT0gRVhJVF9CTE9DS19QVFJfRk9SX0ZO IChjZnVuKSk7CiAJICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMyNiw3ICsx MzI4LDcgQEAgcmVkaXJlY3RfYnJhbmNoX2VkZ2UgKGVkZ2UgZSwgYmFzaWNf YmxvY2sgdGFyZ2V0KQogCiAgIGlmICghY3VycmVudGx5X2V4cGFuZGluZ190 b19ydGwpCiAgICAgewotICAgICAgaWYgKCFwYXRjaF9qdW1wX2luc24gKGlu c24sIG9sZF9sYWJlbCwgdGFyZ2V0KSkKKyAgICAgIGlmICghcGF0Y2hfanVt cF9pbnNuIChhc19hIDxydHhfanVtcF9pbnNuICo+IChpbnNuKSwgb2xkX2xh YmVsLCB0YXJnZXQpKQogCXJldHVybiBOVUxMOwogICAgIH0KICAgZWxzZQpA QCAtMTMzNCw3ICsxMzM2LDggQEAgcmVkaXJlY3RfYnJhbmNoX2VkZ2UgKGVk Z2UgZSwgYmFzaWNfYmxvY2sgdGFyZ2V0KQogICAgICAgIGp1bXBzIChpLmUu IG5vdCB5ZXQgc3BsaXQgYnkgZmluZF9tYW55X3N1Yl9iYXNpY19ibG9ja3Mp LgogICAgICAgIFJlZGlyZWN0IGFsbCBvZiB0aG9zZSB0aGF0IG1hdGNoIG91 ciBsYWJlbC4gICovCiAgICAgRk9SX0JCX0lOU05TIChzcmMsIGluc24pCi0g ICAgICBpZiAoSlVNUF9QIChpbnNuKSAmJiAhcGF0Y2hfanVtcF9pbnNuIChp bnNuLCBvbGRfbGFiZWwsIHRhcmdldCkpCisgICAgICBpZiAoSlVNUF9QIChp bnNuKSAmJiAhcGF0Y2hfanVtcF9pbnNuIChhc19hIDxydHhfanVtcF9pbnNu ICo+IChpbnNuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9sZF9sYWJlbCwgdGFyZ2V0KSkKIAlyZXR1cm4gTlVM TDsKIAogICBpZiAoZHVtcF9maWxlKQpAQCAtMTUyNSw3ICsxNTI4LDggQEAg Zm9yY2Vfbm9uZmFsbHRocnVfYW5kX3JlZGlyZWN0IChlZGdlIGUsIGJhc2lj X2Jsb2NrIHRhcmdldCwgcnR4IGp1bXBfbGFiZWwpCiAgICAgICBlZGdlIGIg PSB1bmNoZWNrZWRfbWFrZV9lZGdlIChlLT5zcmMsIHRhcmdldCwgMCk7CiAg ICAgICBib29sIHJlZGlyZWN0ZWQ7CiAKLSAgICAgIHJlZGlyZWN0ZWQgPSBy ZWRpcmVjdF9qdW1wIChCQl9FTkQgKGUtPnNyYyksIGJsb2NrX2xhYmVsICh0 YXJnZXQpLCAwKTsKKyAgICAgIHJlZGlyZWN0ZWQgPSByZWRpcmVjdF9qdW1w IChhc19hIDxydHhfanVtcF9pbnNuICo+IChCQl9FTkQgKGUtPnNyYykpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX2xhYmVs ICh0YXJnZXQpLCAwKTsKICAgICAgIGdjY19hc3NlcnQgKHJlZGlyZWN0ZWQp OwogCiAgICAgICBub3RlID0gZmluZF9yZWdfbm90ZSAoQkJfRU5EIChlLT5z cmMpLCBSRUdfQlJfUFJPQiwgTlVMTF9SVFgpOwpAQCAtMzc4MywxMCArMzc4 NywxMCBAQCBmaXh1cF9yZW9yZGVyX2NoYWluICh2b2lkKQogCSAgZV90YWtl biA9IGU7CiAKICAgICAgIGJiX2VuZF9pbnNuID0gQkJfRU5EIChiYik7Ci0g ICAgICBpZiAoSlVNUF9QIChiYl9lbmRfaW5zbikpCisgICAgICBpZiAocnR4 X2p1bXBfaW5zbiAqYmJfZW5kX2p1bXAgPSBkeW5fY2FzdCA8cnR4X2p1bXBf aW5zbiAqPiAoYmJfZW5kX2luc24pKQogCXsKLQkgIHJldF9sYWJlbCA9IEpV TVBfTEFCRUwgKGJiX2VuZF9pbnNuKTsKLQkgIGlmIChhbnlfY29uZGp1bXBf cCAoYmJfZW5kX2luc24pKQorCSAgcmV0X2xhYmVsID0gSlVNUF9MQUJFTCAo YmJfZW5kX2p1bXApOworCSAgaWYgKGFueV9jb25kanVtcF9wIChiYl9lbmRf anVtcCkpCiAJICAgIHsKIAkgICAgICAvKiBUaGlzIG1pZ2h0IGhhcHBlbiBp ZiB0aGUgY29uZGl0aW9uYWwganVtcCBoYXMgc2lkZQogCQkgZWZmZWN0cyBh bmQgY291bGQgdGhlcmVmb3JlIG5vdCBiZSBvcHRpbWl6ZWQgYXdheS4KQEAg LTM3OTQsMTAgKzM3OTgsMTAgQEAgZml4dXBfcmVvcmRlcl9jaGFpbiAodm9p ZCkKIAkJIHRvIHByZXZlbnQgcnRsX3ZlcmlmeV9mbG93X2luZm8gZnJvbSBj b21wbGFpbmluZy4gICovCiAJICAgICAgaWYgKCFlX2ZhbGwpCiAJCXsKLQkJ ICBnY2NfYXNzZXJ0ICghb25seWp1bXBfcCAoYmJfZW5kX2luc24pCi0JCQkg ICAgICB8fCByZXR1cm5qdW1wX3AgKGJiX2VuZF9pbnNuKQorCQkgIGdjY19h c3NlcnQgKCFvbmx5anVtcF9wIChiYl9lbmRfanVtcCkKKwkJCSAgICAgIHx8 IHJldHVybmp1bXBfcCAoYmJfZW5kX2p1bXApCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8fCAoZV90YWtlbi0+ZmxhZ3MgJiBFREdFX0NST1NT SU5HKSk7Ci0JCSAgZW1pdF9iYXJyaWVyX2FmdGVyIChiYl9lbmRfaW5zbik7 CisJCSAgZW1pdF9iYXJyaWVyX2FmdGVyIChiYl9lbmRfanVtcCk7CiAJCSAg Y29udGludWU7CiAJCX0KIApAQCAtMzgxOSwxMSArMzgyMywxMSBAQCBmaXh1 cF9yZW9yZGVyX2NoYWluICh2b2lkKQogCQkgZWRnZSBiYXNlZCBvbiBrbm93 biBvciBhc3N1bWVkIHByb2JhYmlsaXR5LiAgKi8KIAkgICAgICBlbHNlIGlm IChiYi0+YXV4ICE9IGVfdGFrZW4tPmRlc3QpCiAJCXsKLQkJICBydHggbm90 ZSA9IGZpbmRfcmVnX25vdGUgKGJiX2VuZF9pbnNuLCBSRUdfQlJfUFJPQiwg MCk7CisJCSAgcnR4IG5vdGUgPSBmaW5kX3JlZ19ub3RlIChiYl9lbmRfanVt cCwgUkVHX0JSX1BST0IsIDApOwogCiAJCSAgaWYgKG5vdGUKIAkJICAgICAg JiYgWElOVCAobm90ZSwgMCkgPCBSRUdfQlJfUFJPQl9CQVNFIC8gMgotCQkg ICAgICAmJiBpbnZlcnRfanVtcCAoYmJfZW5kX2luc24sCisJCSAgICAgICYm IGludmVydF9qdW1wIChiYl9lbmRfanVtcCwKIAkJCQkgICAgICAoZV9mYWxs LT5kZXN0CiAJCQkJICAgICAgID09IEVYSVRfQkxPQ0tfUFRSX0ZPUl9GTiAo Y2Z1bikKIAkJCQkgICAgICAgPyBOVUxMX1JUWApAQCAtMzg0Niw3ICszODUw LDcgQEAgZml4dXBfcmVvcmRlcl9jaGFpbiAodm9pZCkKIAogCSAgICAgIC8q IE90aGVyd2lzZSB3ZSBjYW4gdHJ5IHRvIGludmVydCB0aGUganVtcC4gIFRo aXMgd2lsbAogCQkgYmFzaWNhbGx5IG5ldmVyIGZhaWwsIGhvd2V2ZXIsIGtl ZXAgdXAgdGhlIHByZXRlbnNlLiAgKi8KLQkgICAgICBlbHNlIGlmIChpbnZl cnRfanVtcCAoYmJfZW5kX2luc24sCisJICAgICAgZWxzZSBpZiAoaW52ZXJ0 X2p1bXAgKGJiX2VuZF9qdW1wLAogCQkJCSAgICAoZV9mYWxsLT5kZXN0CiAJ CQkJICAgICA9PSBFWElUX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pCiAJCQkJ ICAgICA/IE5VTExfUlRYCkBAIC00OTY3LDcgKzQ5NzEsNyBAQCBydGxfbHZf YWRkX2NvbmRpdGlvbl90b19iYiAoYmFzaWNfYmxvY2sgZmlyc3RfaGVhZCAs CiAJCQkgICAgYmFzaWNfYmxvY2sgc2Vjb25kX2hlYWQgQVRUUklCVVRFX1VO VVNFRCwKIAkJCSAgICBiYXNpY19ibG9jayBjb25kX2JiLCB2b2lkICpjb21w X3J0eCkKIHsKLSAgcnR4IGxhYmVsOworICBydHhfY29kZV9sYWJlbCAqbGFi ZWw7CiAgIHJ0eF9pbnNuICpzZXEsICpqdW1wOwogICBydHggb3AwID0gWEVY UCAoKHJ0eCljb21wX3J0eCwgMCk7CiAgIHJ0eCBvcDEgPSBYRVhQICgocnR4 KWNvbXBfcnR4LCAxKTsKQEAgLTQ5ODMsOCArNDk4Nyw3IEBAIHJ0bF9sdl9h ZGRfY29uZGl0aW9uX3RvX2JiIChiYXNpY19ibG9jayBmaXJzdF9oZWFkICwK ICAgc3RhcnRfc2VxdWVuY2UgKCk7CiAgIG9wMCA9IGZvcmNlX29wZXJhbmQg KG9wMCwgTlVMTF9SVFgpOwogICBvcDEgPSBmb3JjZV9vcGVyYW5kIChvcDEs IE5VTExfUlRYKTsKLSAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMCwg b3AxLCBjb21wLCAwLAotCQkJICAgbW9kZSwgTlVMTF9SVFgsIE5VTExfUlRY LCBsYWJlbCwgLTEpOworICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAob3Aw LCBvcDEsIGNvbXAsIDAsIG1vZGUsIE5VTExfUlRYLCBOVUxMLCBsYWJlbCwg LTEpOwogICBqdW1wID0gZ2V0X2xhc3RfaW5zbiAoKTsKICAgSlVNUF9MQUJF TCAoanVtcCkgPSBsYWJlbDsKICAgTEFCRUxfTlVTRVMgKGxhYmVsKSsrOwpk aWZmIC0tZ2l0IGEvZ2NjL2NmZ3J0bC5oIGIvZ2NjL2NmZ3J0bC5oCmluZGV4 IDMyYzhmZjYuLmNkZjE0NzcgMTAwNjQ0Ci0tLSBhL2djYy9jZmdydGwuaAor KysgYi9nY2MvY2ZncnRsLmgKQEAgLTMzLDcgKzMzLDcgQEAgZXh0ZXJuIGJv b2wgY29udGFpbnNfbm9fYWN0aXZlX2luc25fcCAoY29uc3RfYmFzaWNfYmxv Y2spOwogZXh0ZXJuIGJvb2wgZm9yd2FyZGVyX2Jsb2NrX3AgKGNvbnN0X2Jh c2ljX2Jsb2NrKTsKIGV4dGVybiBib29sIGNhbl9mYWxsdGhydSAoYmFzaWNf YmxvY2ssIGJhc2ljX2Jsb2NrKTsKIGV4dGVybiBydHhfbm90ZSAqYmJfbm90 ZSAoYmFzaWNfYmxvY2spOwotZXh0ZXJuIHJ0eCBibG9ja19sYWJlbCAoYmFz aWNfYmxvY2spOworZXh0ZXJuIHJ0eF9jb2RlX2xhYmVsICpibG9ja19sYWJl bCAoYmFzaWNfYmxvY2spOwogZXh0ZXJuIGVkZ2UgdHJ5X3JlZGlyZWN0X2J5 X3JlcGxhY2luZ19qdW1wIChlZGdlLCBiYXNpY19ibG9jaywgYm9vbCk7CiBl eHRlcm4gdm9pZCBlbWl0X2JhcnJpZXJfYWZ0ZXJfYmIgKGJhc2ljX2Jsb2Nr IGJiKTsKIGV4dGVybiBiYXNpY19ibG9jayBmb3JjZV9ub25mYWxsdGhydV9h bmRfcmVkaXJlY3QgKGVkZ2UsIGJhc2ljX2Jsb2NrLCBydHgpOwpkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4 Ni9pMzg2LmMKaW5kZXggMjJiYzgxZi4uYjZjNzFiMiAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9pMzg2L2kzODYuYworKysgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni5jCkBAIC0zODQ0OCw3ICszODQ0OCw3IEBAIGl4ODZfZW1pdF9jbW92 ZSAocnR4IGRzdCwgcnR4IHNyYywgZW51bSBydHhfY29kZSBjb2RlLCBydHgg b3AxLCBydHggb3AyKQogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIHJ0 eCBub21vdmUgPSBnZW5fbGFiZWxfcnR4ICgpOworICAgICAgcnR4X2NvZGVf bGFiZWwgKm5vbW92ZSA9IGdlbl9sYWJlbF9ydHggKCk7CiAgICAgICBlbWl0 X2NtcF9hbmRfanVtcF9pbnNucyAob3AxLCBvcDIsIHJldmVyc2VfY29uZGl0 aW9uIChjb2RlKSwKIAkJCSAgICAgICBjb25zdDBfcnR4LCBHRVRfTU9ERSAo b3AxKSwgMSwgbm9tb3ZlKTsKICAgICAgIGVtaXRfbW92ZV9pbnNuIChkc3Qs IHNyYyk7CmRpZmYgLS1naXQgYS9nY2MvZG9qdW1wLmMgYi9nY2MvZG9qdW1w LmMKaW5kZXggYWQzNTZiYS4uNDJkYzQ3OSAxMDA2NDQKLS0tIGEvZ2NjL2Rv anVtcC5jCisrKyBiL2djYy9kb2p1bXAuYwpAQCAtNjEsMTAgKzYxLDEyIEBA IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBu b3Qgc2VlCiAjaW5jbHVkZSAidG1fcC5oIgogCiBzdGF0aWMgYm9vbCBwcmVm ZXJfYW5kX2JpdF90ZXN0IChtYWNoaW5lX21vZGUsIGludCk7Ci1zdGF0aWMg dm9pZCBkb19qdW1wX2J5X3BhcnRzX2dyZWF0ZXIgKHRyZWUsIHRyZWUsIGlu dCwgcnR4LCBydHgsIGludCk7Ci1zdGF0aWMgdm9pZCBkb19qdW1wX2J5X3Bh cnRzX2VxdWFsaXR5ICh0cmVlLCB0cmVlLCBydHgsIHJ0eCwgaW50KTsKLXN0 YXRpYyB2b2lkIGRvX2NvbXBhcmVfYW5kX2p1bXAJKHRyZWUsIHRyZWUsIGVu dW0gcnR4X2NvZGUsIGVudW0gcnR4X2NvZGUsIHJ0eCwKLQkJCQkgcnR4LCBp bnQpOworc3RhdGljIHZvaWQgZG9fanVtcF9ieV9wYXJ0c19ncmVhdGVyICh0 cmVlLCB0cmVlLCBpbnQsCisJCQkJICAgICAgcnR4X2NvZGVfbGFiZWwgKiwg cnR4X2NvZGVfbGFiZWwgKiwgaW50KTsKK3N0YXRpYyB2b2lkIGRvX2p1bXBf YnlfcGFydHNfZXF1YWxpdHkgKHRyZWUsIHRyZWUsIHJ0eF9jb2RlX2xhYmVs ICosCisJCQkJICAgICAgIHJ0eF9jb2RlX2xhYmVsICosIGludCk7CitzdGF0 aWMgdm9pZCBkb19jb21wYXJlX2FuZF9qdW1wCSh0cmVlLCB0cmVlLCBlbnVt IHJ0eF9jb2RlLCBlbnVtIHJ0eF9jb2RlLAorCQkJCSBydHhfY29kZV9sYWJl bCAqLCBydHhfY29kZV9sYWJlbCAqLCBpbnQpOwogCiAvKiBJbnZlcnQgcHJv YmFiaWxpdHkgaWYgdGhlcmUgaXMgYW55LiAgLTEgc3RhbmRzIGZvciB1bmtu b3duLiAgKi8KIApAQCAtMTQ2LDM0ICsxNDgsMzQgQEAgcmVzdG9yZV9wZW5k aW5nX3N0YWNrX2FkanVzdCAoc2F2ZWRfcGVuZGluZ19zdGFja19hZGp1c3Qg KnNhdmUpCiAMCiAvKiBFeHBhbmQgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMu ICAqLwogCi0vKiBHZW5lcmF0ZSBjb2RlIHRvIGV2YWx1YXRlIEVYUCBhbmQg anVtcCB0byBMQUJFTCBpZiB0aGUgdmFsdWUgaXMgemVyby4KLSAgIExBQkVM IGlzIGFuIHJ0eCBvZiBjb2RlIENPREVfTEFCRUwsIGluIHRoaXMgZnVuY3Rp b24gYW5kIGFsbCB0aGUKLSAgIGZ1bmN0aW9ucyBoZXJlLiAgKi8KKy8qIEdl bmVyYXRlIGNvZGUgdG8gZXZhbHVhdGUgRVhQIGFuZCBqdW1wIHRvIExBQkVM IGlmIHRoZSB2YWx1ZSBpcyB6ZXJvLiAgKi8KIAogdm9pZAotanVtcGlmbm90 ICh0cmVlIGV4cCwgcnR4IGxhYmVsLCBpbnQgcHJvYikKK2p1bXBpZm5vdCAo dHJlZSBleHAsIHJ0eF9jb2RlX2xhYmVsICpsYWJlbCwgaW50IHByb2IpCiB7 Ci0gIGRvX2p1bXAgKGV4cCwgbGFiZWwsIE5VTExfUlRYLCBpbnYgKHByb2Ip KTsKKyAgZG9fanVtcCAoZXhwLCBsYWJlbCwgTlVMTCwgaW52IChwcm9iKSk7 CiB9CiAKIHZvaWQKLWp1bXBpZm5vdF8xIChlbnVtIHRyZWVfY29kZSBjb2Rl LCB0cmVlIG9wMCwgdHJlZSBvcDEsIHJ0eCBsYWJlbCwgaW50IHByb2IpCitq dW1waWZub3RfMSAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSBvcDAsIHRy ZWUgb3AxLCBydHhfY29kZV9sYWJlbCAqbGFiZWwsCisJICAgICBpbnQgcHJv YikKIHsKLSAgZG9fanVtcF8xIChjb2RlLCBvcDAsIG9wMSwgbGFiZWwsIE5V TExfUlRYLCBpbnYgKHByb2IpKTsKKyAgZG9fanVtcF8xIChjb2RlLCBvcDAs IG9wMSwgbGFiZWwsIE5VTEwsIGludiAocHJvYikpOwogfQogCiAvKiBHZW5l cmF0ZSBjb2RlIHRvIGV2YWx1YXRlIEVYUCBhbmQganVtcCB0byBMQUJFTCBp ZiB0aGUgdmFsdWUgaXMgbm9uemVyby4gICovCiAKIHZvaWQKLWp1bXBpZiAo dHJlZSBleHAsIHJ0eCBsYWJlbCwgaW50IHByb2IpCitqdW1waWYgKHRyZWUg ZXhwLCBydHhfY29kZV9sYWJlbCAqbGFiZWwsIGludCBwcm9iKQogewotICBk b19qdW1wIChleHAsIE5VTExfUlRYLCBsYWJlbCwgcHJvYik7CisgIGRvX2p1 bXAgKGV4cCwgTlVMTCwgbGFiZWwsIHByb2IpOwogfQogCiB2b2lkCi1qdW1w aWZfMSAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSBvcDAsIHRyZWUgb3Ax LCBydHggbGFiZWwsIGludCBwcm9iKQoranVtcGlmXzEgKGVudW0gdHJlZV9j b2RlIGNvZGUsIHRyZWUgb3AwLCB0cmVlIG9wMSwKKwkgIHJ0eF9jb2RlX2xh YmVsICpsYWJlbCwgaW50IHByb2IpCiB7Ci0gIGRvX2p1bXBfMSAoY29kZSwg b3AwLCBvcDEsIE5VTExfUlRYLCBsYWJlbCwgcHJvYik7CisgIGRvX2p1bXBf MSAoY29kZSwgb3AwLCBvcDEsIE5VTEwsIGxhYmVsLCBwcm9iKTsKIH0KIAog LyogVXNlZCBpbnRlcm5hbGx5IGJ5IHByZWZlcl9hbmRfYml0X3Rlc3QuICAq LwpAQCAtMjI1LDcgKzIyNyw4IEBAIHByZWZlcl9hbmRfYml0X3Rlc3QgKG1h Y2hpbmVfbW9kZSBtb2RlLCBpbnQgYml0bnVtKQogCiB2b2lkCiBkb19qdW1w XzEgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgb3AwLCB0cmVlIG9wMSwK LQkgICBydHggaWZfZmFsc2VfbGFiZWwsIHJ0eCBpZl90cnVlX2xhYmVsLCBp bnQgcHJvYikKKwkgICBydHhfY29kZV9sYWJlbCAqaWZfZmFsc2VfbGFiZWws IHJ0eF9jb2RlX2xhYmVsICppZl90cnVlX2xhYmVsLAorCSAgIGludCBwcm9i KQogewogICBtYWNoaW5lX21vZGUgbW9kZTsKICAgcnR4X2NvZGVfbGFiZWwg KmRyb3BfdGhyb3VnaF9sYWJlbCA9IDA7CkBAIC0zNzgsMTUgKzM4MSwxNSBA QCBkb19qdW1wXzEgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgb3AwLCB0 cmVlIG9wMSwKICAgICAgICAgICAgIG9wMF9wcm9iID0gaW52IChvcDBfZmFs c2VfcHJvYik7CiAgICAgICAgICAgICBvcDFfcHJvYiA9IGludiAob3AxX2Zh bHNlX3Byb2IpOwogICAgICAgICAgIH0KLSAgICAgICAgaWYgKGlmX2ZhbHNl X2xhYmVsID09IE5VTExfUlRYKQorICAgICAgICBpZiAoaWZfZmFsc2VfbGFi ZWwgPT0gTlVMTCkKICAgICAgICAgICB7CiAgICAgICAgICAgICBkcm9wX3Ro cm91Z2hfbGFiZWwgPSBnZW5fbGFiZWxfcnR4ICgpOwotICAgICAgICAgICAg ZG9fanVtcCAob3AwLCBkcm9wX3Rocm91Z2hfbGFiZWwsIE5VTExfUlRYLCBv cDBfcHJvYik7Ci0gICAgICAgICAgICBkb19qdW1wIChvcDEsIE5VTExfUlRY LCBpZl90cnVlX2xhYmVsLCBvcDFfcHJvYik7CisgICAgICAgICAgICBkb19q dW1wIChvcDAsIGRyb3BfdGhyb3VnaF9sYWJlbCwgTlVMTCwgb3AwX3Byb2Ip OworICAgICAgICAgICAgZG9fanVtcCAob3AxLCBOVUxMLCBpZl90cnVlX2xh YmVsLCBvcDFfcHJvYik7CiAgICAgICAgICAgfQogICAgICAgICBlbHNlCiAg ICAgICAgICAgewotICAgICAgICAgICAgZG9fanVtcCAob3AwLCBpZl9mYWxz ZV9sYWJlbCwgTlVMTF9SVFgsIG9wMF9wcm9iKTsKKyAgICAgICAgICAgIGRv X2p1bXAgKG9wMCwgaWZfZmFsc2VfbGFiZWwsIE5VTEwsIG9wMF9wcm9iKTsK ICAgICAgICAgICAgIGRvX2p1bXAgKG9wMSwgaWZfZmFsc2VfbGFiZWwsIGlm X3RydWVfbGFiZWwsIG9wMV9wcm9iKTsKICAgICAgICAgICB9CiAgICAgICAg IGJyZWFrOwpAQCAtNDA1LDE4ICs0MDgsMTggQEAgZG9fanVtcF8xIChlbnVt IHRyZWVfY29kZSBjb2RlLCB0cmVlIG9wMCwgdHJlZSBvcDEsCiAgICAgICAg ICAgewogICAgICAgICAgICAgb3AwX3Byb2IgPSBwcm9iIC8gMjsKICAgICAg ICAgICAgIG9wMV9wcm9iID0gR0NPVl9DT01QVVRFX1NDQUxFICgocHJvYiAv IDIpLCBpbnYgKG9wMF9wcm9iKSk7Ci0gICAgICAgICAgfQotICAgICAgICBp ZiAoaWZfdHJ1ZV9sYWJlbCA9PSBOVUxMX1JUWCkKLSAgICAgICAgICB7Ci0g ICAgICAgICAgICBkcm9wX3Rocm91Z2hfbGFiZWwgPSBnZW5fbGFiZWxfcnR4 ICgpOwotICAgICAgICAgICAgZG9fanVtcCAob3AwLCBOVUxMX1JUWCwgZHJv cF90aHJvdWdoX2xhYmVsLCBvcDBfcHJvYik7Ci0gICAgICAgICAgICBkb19q dW1wIChvcDEsIGlmX2ZhbHNlX2xhYmVsLCBOVUxMX1JUWCwgb3AxX3Byb2Ip OwotICAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAg ICAgICAgICAgIGRvX2p1bXAgKG9wMCwgTlVMTF9SVFgsIGlmX3RydWVfbGFi ZWwsIG9wMF9wcm9iKTsKLSAgICAgICAgICAgIGRvX2p1bXAgKG9wMSwgaWZf ZmFsc2VfbGFiZWwsIGlmX3RydWVfbGFiZWwsIG9wMV9wcm9iKTsKLSAgICAg ICAgICB9CisJICB9CisJaWYgKGlmX3RydWVfbGFiZWwgPT0gTlVMTCkKKwkg IHsKKwkgICAgZHJvcF90aHJvdWdoX2xhYmVsID0gZ2VuX2xhYmVsX3J0eCAo KTsKKwkgICAgZG9fanVtcCAob3AwLCBOVUxMLCBkcm9wX3Rocm91Z2hfbGFi ZWwsIG9wMF9wcm9iKTsKKwkgICAgZG9fanVtcCAob3AxLCBpZl9mYWxzZV9s YWJlbCwgTlVMTCwgb3AxX3Byb2IpOworCSAgfQorCWVsc2UKKwkgIHsKKwkg ICAgZG9fanVtcCAob3AwLCBOVUxMLCBpZl90cnVlX2xhYmVsLCBvcDBfcHJv Yik7CisJICAgIGRvX2p1bXAgKG9wMSwgaWZfZmFsc2VfbGFiZWwsIGlmX3Ry dWVfbGFiZWwsIG9wMV9wcm9iKTsKKwkgIH0KICAgICAgICAgYnJlYWs7CiAg ICAgICB9CiAKQEAgLTQ0MywxNCArNDQ2LDE1IEBAIGRvX2p1bXBfMSAoZW51 bSB0cmVlX2NvZGUgY29kZSwgdHJlZSBvcDAsIHRyZWUgb3AxLAogICAgUFJP QiBpcyBwcm9iYWJpbGl0eSBvZiBqdW1wIHRvIGlmX3RydWVfbGFiZWwsIG9y IC0xIGlmIHVua25vd24uICAqLwogCiB2b2lkCi1kb19qdW1wICh0cmVlIGV4 cCwgcnR4IGlmX2ZhbHNlX2xhYmVsLCBydHggaWZfdHJ1ZV9sYWJlbCwgaW50 IHByb2IpCitkb19qdW1wICh0cmVlIGV4cCwgcnR4X2NvZGVfbGFiZWwgKmlm X2ZhbHNlX2xhYmVsLAorCSBydHhfY29kZV9sYWJlbCAqaWZfdHJ1ZV9sYWJl bCwgaW50IHByb2IpCiB7CiAgIGVudW0gdHJlZV9jb2RlIGNvZGUgPSBUUkVF X0NPREUgKGV4cCk7CiAgIHJ0eCB0ZW1wOwogICBpbnQgaTsKICAgdHJlZSB0 eXBlOwogICBtYWNoaW5lX21vZGUgbW9kZTsKLSAgcnR4X2NvZGVfbGFiZWwg KmRyb3BfdGhyb3VnaF9sYWJlbCA9IDA7CisgIHJ0eF9jb2RlX2xhYmVsICpk cm9wX3Rocm91Z2hfbGFiZWwgPSBOVUxMOwogCiAgIHN3aXRjaCAoY29kZSkK ICAgICB7CkBAIC00NTgsMTAgKzQ2MiwxMyBAQCBkb19qdW1wICh0cmVlIGV4 cCwgcnR4IGlmX2ZhbHNlX2xhYmVsLCBydHggaWZfdHJ1ZV9sYWJlbCwgaW50 IHByb2IpCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgSU5URUdFUl9DU1Q6 Ci0gICAgICB0ZW1wID0gaW50ZWdlcl96ZXJvcCAoZXhwKSA/IGlmX2ZhbHNl X2xhYmVsIDogaWZfdHJ1ZV9sYWJlbDsKLSAgICAgIGlmICh0ZW1wKQotICAg ICAgICBlbWl0X2p1bXAgKHRlbXApOwotICAgICAgYnJlYWs7CisgICAgICB7 CisJcnR4X2NvZGVfbGFiZWwgKmxhYiA9IGludGVnZXJfemVyb3AgKGV4cCkg PyBpZl9mYWxzZV9sYWJlbAorCQkJCQkJICA6IGlmX3RydWVfbGFiZWw7CisJ aWYgKGxhYikKKwkgIGVtaXRfanVtcCAobGFiKTsKKwlicmVhazsKKyAgICAg IH0KIAogI2lmIDAKICAgICAgIC8qIFRoaXMgaXMgbm90IHRydWUgd2l0aCAj cHJhZ21hIHdlYWsgICovCkBAIC01MTEsNyArNTE4LDcgQEAgZG9fanVtcCAo dHJlZSBleHAsIHJ0eCBpZl9mYWxzZV9sYWJlbCwgcnR4IGlmX3RydWVfbGFi ZWwsIGludCBwcm9iKQogCSAgfQogCiAgICAgICAgIGRvX3BlbmRpbmdfc3Rh Y2tfYWRqdXN0ICgpOwotCWRvX2p1bXAgKFRSRUVfT1BFUkFORCAoZXhwLCAw KSwgbGFiZWwxLCBOVUxMX1JUWCwgLTEpOworCWRvX2p1bXAgKFRSRUVfT1BF UkFORCAoZXhwLCAwKSwgbGFiZWwxLCBOVUxMLCAtMSk7CiAJZG9fanVtcCAo VFJFRV9PUEVSQU5EIChleHAsIDEpLCBpZl9mYWxzZV9sYWJlbCwgaWZfdHJ1 ZV9sYWJlbCwgcHJvYik7CiAgICAgICAgIGVtaXRfbGFiZWwgKGxhYmVsMSk7 CiAJZG9fanVtcCAoVFJFRV9PUEVSQU5EIChleHAsIDIpLCBpZl9mYWxzZV9s YWJlbCwgaWZfdHJ1ZV9sYWJlbCwgcHJvYik7CkBAIC01NTUsNyArNTYyLDcg QEAgZG9fanVtcCAodHJlZSBleHAsIHJ0eCBpZl9mYWxzZV9sYWJlbCwgcnR4 IGlmX3RydWVfbGFiZWwsIGludCBwcm9iKQogICAgICAgaWYgKGludGVnZXJf b25lcCAoVFJFRV9PUEVSQU5EIChleHAsIDEpKSkKIAl7CiAJICB0cmVlIGV4 cDAgPSBUUkVFX09QRVJBTkQgKGV4cCwgMCk7Ci0JICBydHggc2V0X2xhYmVs LCBjbHJfbGFiZWw7CisJICBydHhfY29kZV9sYWJlbCAqc2V0X2xhYmVsLCAq Y2xyX2xhYmVsOwogCSAgaW50IHNldGNscl9wcm9iID0gcHJvYjsKIAogCSAg LyogU3RyaXAgbmFycm93aW5nIGludGVncmFsIHR5cGUgY29udmVyc2lvbnMu ICAqLwpAQCAtNjg0LDExICs2OTEsMTIgQEAgZG9fanVtcCAodHJlZSBleHAs IHJ0eCBpZl9mYWxzZV9sYWJlbCwgcnR4IGlmX3RydWVfbGFiZWwsIGludCBw cm9iKQogCiBzdGF0aWMgdm9pZAogZG9fanVtcF9ieV9wYXJ0c19ncmVhdGVy X3J0eCAobWFjaGluZV9tb2RlIG1vZGUsIGludCB1bnNpZ25lZHAsIHJ0eCBv cDAsCi0JCQkgICAgICBydHggb3AxLCBydHggaWZfZmFsc2VfbGFiZWwsIHJ0 eCBpZl90cnVlX2xhYmVsLAorCQkJICAgICAgcnR4IG9wMSwgcnR4X2NvZGVf bGFiZWwgKmlmX2ZhbHNlX2xhYmVsLAorCQkJICAgICAgcnR4X2NvZGVfbGFi ZWwgKmlmX3RydWVfbGFiZWwsCiAJCQkgICAgICBpbnQgcHJvYikKIHsKICAg aW50IG53b3JkcyA9IChHRVRfTU9ERV9TSVpFIChtb2RlKSAvIFVOSVRTX1BF Ul9XT1JEKTsKLSAgcnR4IGRyb3BfdGhyb3VnaF9sYWJlbCA9IDA7CisgIHJ0 eF9jb2RlX2xhYmVsICpkcm9wX3Rocm91Z2hfbGFiZWwgPSAwOwogICBib29s IGRyb3BfdGhyb3VnaF9pZl90cnVlID0gZmFsc2UsIGRyb3BfdGhyb3VnaF9p Zl9mYWxzZSA9IGZhbHNlOwogICBlbnVtIHJ0eF9jb2RlIGNvZGUgPSBHVDsK ICAgaW50IGk7CkBAIC03MzUsNyArNzQzLDcgQEAgZG9fanVtcF9ieV9wYXJ0 c19ncmVhdGVyX3J0eCAobWFjaGluZV9tb2RlIG1vZGUsIGludCB1bnNpZ25l ZHAsIHJ0eCBvcDAsCiAKICAgICAgIC8qIEFsbCBidXQgaGlnaC1vcmRlciB3 b3JkIG11c3QgYmUgY29tcGFyZWQgYXMgdW5zaWduZWQuICAqLwogICAgICAg ZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMF93b3JkLCBvcDFfd29yZCwg Y29kZSwgKHVuc2lnbmVkcCB8fCBpID4gMCksCi0JCQkgICAgICAgd29yZF9t b2RlLCBOVUxMX1JUWCwgTlVMTF9SVFgsIGlmX3RydWVfbGFiZWwsCisJCQkg ICAgICAgd29yZF9tb2RlLCBOVUxMX1JUWCwgTlVMTCwgaWZfdHJ1ZV9sYWJl bCwKIAkJCSAgICAgICBwcm9iKTsKIAogICAgICAgLyogRW1pdCBvbmx5IG9u ZSBjb21wYXJpc29uIGZvciAwLiAgRG8gbm90IGVtaXQgdGhlIGxhc3QgY29u ZCBqdW1wLiAgKi8KQEAgLTc0NCw3ICs3NTIsNyBAQCBkb19qdW1wX2J5X3Bh cnRzX2dyZWF0ZXJfcnR4IChtYWNoaW5lX21vZGUgbW9kZSwgaW50IHVuc2ln bmVkcCwgcnR4IG9wMCwKIAogICAgICAgLyogQ29uc2lkZXIgbG93ZXIgd29y ZHMgb25seSBpZiB0aGVzZSBhcmUgZXF1YWwuICAqLwogICAgICAgZG9fY29t cGFyZV9ydHhfYW5kX2p1bXAgKG9wMF93b3JkLCBvcDFfd29yZCwgTkUsIHVu c2lnbmVkcCwgd29yZF9tb2RlLAotCQkJICAgICAgIE5VTExfUlRYLCBOVUxM X1JUWCwgaWZfZmFsc2VfbGFiZWwsIGludiAocHJvYikpOworCQkJICAgICAg IE5VTExfUlRYLCBOVUxMLCBpZl9mYWxzZV9sYWJlbCwgaW52IChwcm9iKSk7 CiAgICAgfQogCiAgIGlmICghZHJvcF90aHJvdWdoX2lmX2ZhbHNlKQpAQCAt NzYwLDcgKzc2OCw4IEBAIGRvX2p1bXBfYnlfcGFydHNfZ3JlYXRlcl9ydHgg KG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgdW5zaWduZWRwLCBydHggb3AwLAog CiBzdGF0aWMgdm9pZAogZG9fanVtcF9ieV9wYXJ0c19ncmVhdGVyICh0cmVl IHRyZWVvcDAsIHRyZWUgdHJlZW9wMSwgaW50IHN3YXAsCi0JCQkgIHJ0eCBp Zl9mYWxzZV9sYWJlbCwgcnR4IGlmX3RydWVfbGFiZWwsIGludCBwcm9iKQor CQkJICBydHhfY29kZV9sYWJlbCAqaWZfZmFsc2VfbGFiZWwsCisJCQkgIHJ0 eF9jb2RlX2xhYmVsICppZl90cnVlX2xhYmVsLCBpbnQgcHJvYikKIHsKICAg cnR4IG9wMCA9IGV4cGFuZF9ub3JtYWwgKHN3YXAgPyB0cmVlb3AxIDogdHJl ZW9wMCk7CiAgIHJ0eCBvcDEgPSBleHBhbmRfbm9ybWFsIChzd2FwID8gdHJl ZW9wMCA6IHRyZWVvcDEpOwpAQCAtNzczLDE3ICs3ODIsMTggQEAgZG9fanVt cF9ieV9wYXJ0c19ncmVhdGVyICh0cmVlIHRyZWVvcDAsIHRyZWUgdHJlZW9w MSwgaW50IHN3YXAsCiAMCiAvKiBKdW1wIGFjY29yZGluZyB0byB3aGV0aGVy IE9QMCBpcyAwLiAgV2UgYXNzdW1lIHRoYXQgT1AwIGhhcyBhbiBpbnRlZ2Vy CiAgICBtb2RlLCBNT0RFLCB0aGF0IGlzIHRvbyB3aWRlIGZvciB0aGUgYXZh aWxhYmxlIGNvbXBhcmUgaW5zbnMuICBFaXRoZXIKLSAgIEVpdGhlciAoYnV0 IG5vdCBib3RoKSBvZiBJRl9UUlVFX0xBQkVMIGFuZCBJRl9GQUxTRV9MQUJF TCBtYXkgYmUgTlVMTF9SVFgKKyAgIEVpdGhlciAoYnV0IG5vdCBib3RoKSBv ZiBJRl9UUlVFX0xBQkVMIGFuZCBJRl9GQUxTRV9MQUJFTCBtYXkgYmUgTlVM TAogICAgdG8gaW5kaWNhdGUgZHJvcCB0aHJvdWdoLiAgKi8KIAogc3RhdGlj IHZvaWQKIGRvX2p1bXBfYnlfcGFydHNfemVyb19ydHggKG1hY2hpbmVfbW9k ZSBtb2RlLCBydHggb3AwLAotCQkJICAgcnR4IGlmX2ZhbHNlX2xhYmVsLCBy dHggaWZfdHJ1ZV9sYWJlbCwgaW50IHByb2IpCisJCQkgICBydHhfY29kZV9s YWJlbCAqaWZfZmFsc2VfbGFiZWwsCisJCQkgICBydHhfY29kZV9sYWJlbCAq aWZfdHJ1ZV9sYWJlbCwgaW50IHByb2IpCiB7CiAgIGludCBud29yZHMgPSBH RVRfTU9ERV9TSVpFIChtb2RlKSAvIFVOSVRTX1BFUl9XT1JEOwogICBydHgg cGFydDsKICAgaW50IGk7Ci0gIHJ0eCBkcm9wX3Rocm91Z2hfbGFiZWwgPSAw OworICBydHhfY29kZV9sYWJlbCAqZHJvcF90aHJvdWdoX2xhYmVsID0gTlVM TDsKIAogICAvKiBUaGUgZmFzdGVzdCB3YXkgb2YgZG9pbmcgdGhpcyBjb21w YXJpc29uIG9uIGFsbW9zdCBhbnkgbWFjaGluZSBpcyB0bwogICAgICAib3Ii IGFsbCB0aGUgd29yZHMgYW5kIGNvbXBhcmUgdGhlIHJlc3VsdC4gIElmIGFs bCBoYXZlIHRvIGJlIGxvYWRlZApAQCAtODA2LDEyICs4MTYsMTIgQEAgZG9f anVtcF9ieV9wYXJ0c196ZXJvX3J0eCAobWFjaGluZV9tb2RlIG1vZGUsIHJ0 eCBvcDAsCiAKICAgLyogSWYgd2UgY291bGRuJ3QgZG8gdGhlICJvciIgc2lt cGx5LCBkbyB0aGlzIHdpdGggYSBzZXJpZXMgb2YgY29tcGFyZXMuICAqLwog ICBpZiAoISBpZl9mYWxzZV9sYWJlbCkKLSAgICBkcm9wX3Rocm91Z2hfbGFi ZWwgPSBpZl9mYWxzZV9sYWJlbCA9IGdlbl9sYWJlbF9ydHggKCk7CisgICAg aWZfZmFsc2VfbGFiZWwgPSBkcm9wX3Rocm91Z2hfbGFiZWwgPSBnZW5fbGFi ZWxfcnR4ICgpOwogCiAgIGZvciAoaSA9IDA7IGkgPCBud29yZHM7IGkrKykK ICAgICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAob3BlcmFuZF9zdWJ3b3Jk X2ZvcmNlIChvcDAsIGksIG1vZGUpLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdDBfcnR4LCBFUSwgMSwgd29yZF9tb2RlLCBOVUxMX1JU WCwKLQkJCSAgICAgaWZfZmFsc2VfbGFiZWwsIE5VTExfUlRYLCBwcm9iKTsK KwkJCSAgICAgaWZfZmFsc2VfbGFiZWwsIE5VTEwsIHByb2IpOwogCiAgIGlm IChpZl90cnVlX2xhYmVsKQogICAgIGVtaXRfanVtcCAoaWZfdHJ1ZV9sYWJl bCk7CkBAIC04MjcsMTAgKzgzNywxMSBAQCBkb19qdW1wX2J5X3BhcnRzX3pl cm9fcnR4IChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IG9wMCwKIAogc3RhdGlj IHZvaWQKIGRvX2p1bXBfYnlfcGFydHNfZXF1YWxpdHlfcnR4IChtYWNoaW5l X21vZGUgbW9kZSwgcnR4IG9wMCwgcnR4IG9wMSwKLQkJCSAgICAgICBydHgg aWZfZmFsc2VfbGFiZWwsIHJ0eCBpZl90cnVlX2xhYmVsLCBpbnQgcHJvYikK KwkJCSAgICAgICBydHhfY29kZV9sYWJlbCAqaWZfZmFsc2VfbGFiZWwsCisJ CQkgICAgICAgcnR4X2NvZGVfbGFiZWwgKmlmX3RydWVfbGFiZWwsIGludCBw cm9iKQogewogICBpbnQgbndvcmRzID0gKEdFVF9NT0RFX1NJWkUgKG1vZGUp IC8gVU5JVFNfUEVSX1dPUkQpOwotICBydHggZHJvcF90aHJvdWdoX2xhYmVs ID0gMDsKKyAgcnR4X2NvZGVfbGFiZWwgKmRyb3BfdGhyb3VnaF9sYWJlbCA9 IE5VTEw7CiAgIGludCBpOwogCiAgIGlmIChvcDEgPT0gY29uc3QwX3J0eCkK QEAgLTg1Myw3ICs4NjQsNyBAQCBkb19qdW1wX2J5X3BhcnRzX2VxdWFsaXR5 X3J0eCAobWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsCiAg ICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wZXJhbmRfc3Vid29yZF9m b3JjZSAob3AwLCBpLCBtb2RlKSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlIChvcDEsIGksIG1vZGUpLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUSwgMCwgd29yZF9tb2Rl LCBOVUxMX1JUWCwKLQkJCSAgICAgaWZfZmFsc2VfbGFiZWwsIE5VTExfUlRY LCBwcm9iKTsKKwkJCSAgICAgaWZfZmFsc2VfbGFiZWwsIE5VTEwsIHByb2Ip OwogCiAgIGlmIChpZl90cnVlX2xhYmVsKQogICAgIGVtaXRfanVtcCAoaWZf dHJ1ZV9sYWJlbCk7CkBAIC04NjUsOCArODc2LDkgQEAgZG9fanVtcF9ieV9w YXJ0c19lcXVhbGl0eV9ydHggKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggb3Aw LCBydHggb3AxLAogICAgd2l0aCBvbmUgaW5zbiwgdGVzdCB0aGUgY29tcGFy aXNvbiBhbmQganVtcCB0byB0aGUgYXBwcm9wcmlhdGUgbGFiZWwuICAqLwog CiBzdGF0aWMgdm9pZAotZG9fanVtcF9ieV9wYXJ0c19lcXVhbGl0eSAodHJl ZSB0cmVlb3AwLCB0cmVlIHRyZWVvcDEsIHJ0eCBpZl9mYWxzZV9sYWJlbCwK LQkJCSAgIHJ0eCBpZl90cnVlX2xhYmVsLCBpbnQgcHJvYikKK2RvX2p1bXBf YnlfcGFydHNfZXF1YWxpdHkgKHRyZWUgdHJlZW9wMCwgdHJlZSB0cmVlb3Ax LAorCQkJICAgcnR4X2NvZGVfbGFiZWwgKmlmX2ZhbHNlX2xhYmVsLAorCQkJ ICAgcnR4X2NvZGVfbGFiZWwgKmlmX3RydWVfbGFiZWwsIGludCBwcm9iKQog ewogICBydHggb3AwID0gZXhwYW5kX25vcm1hbCAodHJlZW9wMCk7CiAgIHJ0 eCBvcDEgPSBleHBhbmRfbm9ybWFsICh0cmVlb3AxKTsKQEAgLTk2MSwxMSAr OTczLDEyIEBAIHNwbGl0X2NvbXBhcmlzb24gKGVudW0gcnR4X2NvZGUgY29k ZSwgbWFjaGluZV9tb2RlIG1vZGUsCiAKIHZvaWQKIGRvX2NvbXBhcmVfcnR4 X2FuZF9qdW1wIChydHggb3AwLCBydHggb3AxLCBlbnVtIHJ0eF9jb2RlIGNv ZGUsIGludCB1bnNpZ25lZHAsCi0JCQkgbWFjaGluZV9tb2RlIG1vZGUsIHJ0 eCBzaXplLCBydHggaWZfZmFsc2VfbGFiZWwsCi0JCQkgcnR4IGlmX3RydWVf bGFiZWwsIGludCBwcm9iKQorCQkJIG1hY2hpbmVfbW9kZSBtb2RlLCBydHgg c2l6ZSwKKwkJCSBydHhfY29kZV9sYWJlbCAqaWZfZmFsc2VfbGFiZWwsCisJ CQkgcnR4X2NvZGVfbGFiZWwgKmlmX3RydWVfbGFiZWwsIGludCBwcm9iKQog ewogICBydHggdGVtOwotICBydHggZHVtbXlfbGFiZWwgPSBOVUxMOworICBy dHhfY29kZV9sYWJlbCAqZHVtbXlfbGFiZWwgPSBOVUxMOwogCiAgIC8qIFJl dmVyc2UgdGhlIGNvbXBhcmlzb24gaWYgdGhhdCBpcyBzYWZlIGFuZCB3ZSB3 YW50IHRvIGp1bXAgaWYgaXQgaXMKICAgICAgZmFsc2UuICBBbHNvIGNvbnZl cnQgdG8gdGhlIHJldmVyc2UgY29tcGFyaXNvbiBpZiB0aGUgdGFyZ2V0IGNh bgpAQCAtOTg3LDkgKzEwMDAsNyBAQCBkb19jb21wYXJlX3J0eF9hbmRfanVt cCAocnR4IG9wMCwgcnR4IG9wMSwgZW51bSBydHhfY29kZSBjb2RlLCBpbnQg dW5zaWduZWRwLAogICAgICAgaWYgKGNhbl9jb21wYXJlX3AgKHJjb2RlLCBt b2RlLCBjY3BfanVtcCkKIAkgIHx8IChjb2RlID09IE9SREVSRUQgJiYgISBj YW5fY29tcGFyZV9wIChPUkRFUkVELCBtb2RlLCBjY3BfanVtcCkpKQogCXsK LSAgICAgICAgICB0ZW0gPSBpZl90cnVlX2xhYmVsOwotICAgICAgICAgIGlm X3RydWVfbGFiZWwgPSBpZl9mYWxzZV9sYWJlbDsKLSAgICAgICAgICBpZl9m YWxzZV9sYWJlbCA9IHRlbTsKKwkgIHN0ZDo6c3dhcCAoaWZfdHJ1ZV9sYWJl bCwgaWZfZmFsc2VfbGFiZWwpOwogCSAgY29kZSA9IHJjb2RlOwogCSAgcHJv YiA9IGludiAocHJvYik7CiAJfQpAQCAtMTAwMCw5ICsxMDExLDcgQEAgZG9f Y29tcGFyZV9ydHhfYW5kX2p1bXAgKHJ0eCBvcDAsIHJ0eCBvcDEsIGVudW0g cnR4X2NvZGUgY29kZSwgaW50IHVuc2lnbmVkcCwKIAogICBpZiAoc3dhcF9j b21tdXRhdGl2ZV9vcGVyYW5kc19wIChvcDAsIG9wMSkpCiAgICAgewotICAg ICAgdGVtID0gb3AwOwotICAgICAgb3AwID0gb3AxOwotICAgICAgb3AxID0g dGVtOworICAgICAgc3RkOjpzd2FwIChvcDAsIG9wMSk7CiAgICAgICBjb2Rl ID0gc3dhcF9jb25kaXRpb24gKGNvZGUpOwogICAgIH0KIApAQCAtMTAxNCw4 ICsxMDIzLDkgQEAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHJ0eCBvcDAs IHJ0eCBvcDEsIGVudW0gcnR4X2NvZGUgY29kZSwgaW50IHVuc2lnbmVkcCwK ICAgICB7CiAgICAgICBpZiAoQ09OU1RBTlRfUCAodGVtKSkKIAl7Ci0JICBy dHggbGFiZWwgPSAodGVtID09IGNvbnN0MF9ydHggfHwgdGVtID09IENPTlNU MF9SVFggKG1vZGUpKQotCQkgICAgICA/IGlmX2ZhbHNlX2xhYmVsIDogaWZf dHJ1ZV9sYWJlbDsKKwkgIHJ0eF9jb2RlX2xhYmVsICpsYWJlbCA9ICh0ZW0g PT0gY29uc3QwX3J0eAorCQkJCSAgIHx8IHRlbSA9PSBDT05TVDBfUlRYICht b2RlKSkgPworCQkJCSAgICAgICBpZl9mYWxzZV9sYWJlbCA6IGlmX3RydWVf bGFiZWw7CiAJICBpZiAobGFiZWwpCiAJICAgIGVtaXRfanVtcCAobGFiZWwp OwogCSAgcmV0dXJuOwpAQCAtMTEzNCw3ICsxMTQ0LDcgQEAgZG9fY29tcGFy ZV9ydHhfYW5kX2p1bXAgKHJ0eCBvcDAsIHJ0eCBvcDEsIGVudW0gcnR4X2Nv ZGUgY29kZSwgaW50IHVuc2lnbmVkcCwKIAkJZmlyc3RfcHJvYiA9IFJFR19C Ul9QUk9CX0JBU0UgLSBSRUdfQlJfUFJPQl9CQVNFIC8gMTAwOwogCSAgICAg IGlmIChhbmRfdGhlbSkKIAkJewotCQkgIHJ0eCBkZXN0X2xhYmVsOworCQkg IHJ0eF9jb2RlX2xhYmVsICpkZXN0X2xhYmVsOwogCQkgIC8qIElmIHdlIG9u bHkganVtcCBpZiB0cnVlLCBqdXN0IGJ5cGFzcyB0aGUgc2Vjb25kIGp1bXAu ICAqLwogCQkgIGlmICghIGlmX2ZhbHNlX2xhYmVsKQogCQkgICAgewpAQCAt MTE0NSwxMyArMTE1NSwxMSBAQCBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAo cnR4IG9wMCwgcnR4IG9wMSwgZW51bSBydHhfY29kZSBjb2RlLCBpbnQgdW5z aWduZWRwLAogCQkgIGVsc2UKIAkJICAgIGRlc3RfbGFiZWwgPSBpZl9mYWxz ZV9sYWJlbDsKICAgICAgICAgICAgICAgICAgIGRvX2NvbXBhcmVfcnR4X2Fu ZF9qdW1wIChvcDAsIG9wMSwgZmlyc3RfY29kZSwgdW5zaWduZWRwLCBtb2Rl LAotCQkJCQkgICBzaXplLCBkZXN0X2xhYmVsLCBOVUxMX1JUWCwKLQkJCQkJ ICAgZmlyc3RfcHJvYik7CisJCQkJCSAgIHNpemUsIGRlc3RfbGFiZWwsIE5V TEwsIGZpcnN0X3Byb2IpOwogCQl9CiAgICAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAob3AwLCBv cDEsIGZpcnN0X2NvZGUsIHVuc2lnbmVkcCwgbW9kZSwKLQkJCQkJIHNpemUs IE5VTExfUlRYLCBpZl90cnVlX2xhYmVsLAotCQkJCQkgZmlyc3RfcHJvYik7 CisJCQkJCSBzaXplLCBOVUxMLCBpZl90cnVlX2xhYmVsLCBmaXJzdF9wcm9i KTsKIAkgICAgfQogCX0KIApAQCAtMTE3Nyw4ICsxMTg1LDkgQEAgZG9fY29t cGFyZV9ydHhfYW5kX2p1bXAgKHJ0eCBvcDAsIHJ0eCBvcDEsIGVudW0gcnR4 X2NvZGUgY29kZSwgaW50IHVuc2lnbmVkcCwKIAogc3RhdGljIHZvaWQKIGRv X2NvbXBhcmVfYW5kX2p1bXAgKHRyZWUgdHJlZW9wMCwgdHJlZSB0cmVlb3Ax LCBlbnVtIHJ0eF9jb2RlIHNpZ25lZF9jb2RlLAotCQkgICAgIGVudW0gcnR4 X2NvZGUgdW5zaWduZWRfY29kZSwgcnR4IGlmX2ZhbHNlX2xhYmVsLAotCQkg ICAgIHJ0eCBpZl90cnVlX2xhYmVsLCBpbnQgcHJvYikKKwkJICAgICBlbnVt IHJ0eF9jb2RlIHVuc2lnbmVkX2NvZGUsCisJCSAgICAgcnR4X2NvZGVfbGFi ZWwgKmlmX2ZhbHNlX2xhYmVsLAorCQkgICAgIHJ0eF9jb2RlX2xhYmVsICpp Zl90cnVlX2xhYmVsLCBpbnQgcHJvYikKIHsKICAgcnR4IG9wMCwgb3AxOwog ICB0cmVlIHR5cGU7CmRpZmYgLS1naXQgYS9nY2MvZG9qdW1wLmggYi9nY2Mv ZG9qdW1wLmgKaW5kZXggNzRkM2YzNy4uMWI2NGVhNyAxMDA2NDQKLS0tIGEv Z2NjL2RvanVtcC5oCisrKyBiL2djYy9kb2p1bXAuaApAQCAtNTcsMjAgKzU3 LDIzIEBAIGV4dGVybiB2b2lkIHNhdmVfcGVuZGluZ19zdGFja19hZGp1c3Qg KHNhdmVkX3BlbmRpbmdfc3RhY2tfYWRqdXN0ICopOwogZXh0ZXJuIHZvaWQg cmVzdG9yZV9wZW5kaW5nX3N0YWNrX2FkanVzdCAoc2F2ZWRfcGVuZGluZ19z dGFja19hZGp1c3QgKik7CiAKIC8qIEdlbmVyYXRlIGNvZGUgdG8gZXZhbHVh dGUgRVhQIGFuZCBqdW1wIHRvIExBQkVMIGlmIHRoZSB2YWx1ZSBpcyB6ZXJv LiAgKi8KLWV4dGVybiB2b2lkIGp1bXBpZm5vdCAodHJlZSwgcnR4LCBpbnQp OwotZXh0ZXJuIHZvaWQganVtcGlmbm90XzEgKGVudW0gdHJlZV9jb2RlLCB0 cmVlLCB0cmVlLCBydHgsIGludCk7CitleHRlcm4gdm9pZCBqdW1waWZub3Qg KHRyZWUgZXhwLCBydHhfY29kZV9sYWJlbCAqbGFiZWwsIGludCBwcm9iKTsK K2V4dGVybiB2b2lkIGp1bXBpZm5vdF8xIChlbnVtIHRyZWVfY29kZSwgdHJl ZSwgdHJlZSwgcnR4X2NvZGVfbGFiZWwgKiwgaW50KTsKIAogLyogR2VuZXJh dGUgY29kZSB0byBldmFsdWF0ZSBFWFAgYW5kIGp1bXAgdG8gTEFCRUwgaWYg dGhlIHZhbHVlIGlzIG5vbnplcm8uICAqLwotZXh0ZXJuIHZvaWQganVtcGlm ICh0cmVlLCBydHgsIGludCk7Ci1leHRlcm4gdm9pZCBqdW1waWZfMSAoZW51 bSB0cmVlX2NvZGUsIHRyZWUsIHRyZWUsIHJ0eCwgaW50KTsKK2V4dGVybiB2 b2lkIGp1bXBpZiAodHJlZSBleHAsIHJ0eF9jb2RlX2xhYmVsICpsYWJlbCwg aW50IHByb2IpOworZXh0ZXJuIHZvaWQganVtcGlmXzEgKGVudW0gdHJlZV9j b2RlLCB0cmVlLCB0cmVlLCBydHhfY29kZV9sYWJlbCAqLCBpbnQpOwogCiAv KiBHZW5lcmF0ZSBjb2RlIHRvIGV2YWx1YXRlIEVYUCBhbmQganVtcCB0byBJ Rl9GQUxTRV9MQUJFTCBpZgogICAgdGhlIHJlc3VsdCBpcyB6ZXJvLCBvciBJ Rl9UUlVFX0xBQkVMIGlmIHRoZSByZXN1bHQgaXMgb25lLiAgKi8KLWV4dGVy biB2b2lkIGRvX2p1bXAgKHRyZWUsIHJ0eCwgcnR4LCBpbnQpOwotZXh0ZXJu IHZvaWQgZG9fanVtcF8xIChlbnVtIHRyZWVfY29kZSwgdHJlZSwgdHJlZSwg cnR4LCBydHgsIGludCk7CitleHRlcm4gdm9pZCBkb19qdW1wICh0cmVlIGV4 cCwgcnR4X2NvZGVfbGFiZWwgKmlmX2ZhbHNlX2xhYmVsLAorCQkgICAgIHJ0 eF9jb2RlX2xhYmVsICppZl90cnVlX2xhYmVsLCBpbnQgcHJvYik7CitleHRl cm4gdm9pZCBkb19qdW1wXzEgKGVudW0gdHJlZV9jb2RlLCB0cmVlLCB0cmVl LCBydHhfY29kZV9sYWJlbCAqLAorCQkgICAgICAgcnR4X2NvZGVfbGFiZWwg KiwgaW50KTsKIAogZXh0ZXJuIHZvaWQgZG9fY29tcGFyZV9ydHhfYW5kX2p1 bXAgKHJ0eCwgcnR4LCBlbnVtIHJ0eF9jb2RlLCBpbnQsCi0JCQkJICAgICBt YWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBydHgsIGludCk7CisJCQkJICAgICBt YWNoaW5lX21vZGUsIHJ0eCwgcnR4X2NvZGVfbGFiZWwgKiwKKwkJCQkgICAg IHJ0eF9jb2RlX2xhYmVsICosIGludCk7CiAKIGV4dGVybiBib29sIHNwbGl0 X2NvbXBhcmlzb24gKGVudW0gcnR4X2NvZGUsIG1hY2hpbmVfbW9kZSwKIAkJ CSAgICAgIGVudW0gcnR4X2NvZGUgKiwgZW51bSBydHhfY29kZSAqKTsKZGlm ZiAtLWdpdCBhL2djYy9kc2UuYyBiL2djYy9kc2UuYwppbmRleCAyYmIyMGQ3 Li5lOTIzZWE2IDEwMDY0NAotLS0gYS9nY2MvZHNlLmMKKysrIGIvZ2NjL2Rz ZS5jCkBAIC05MDcsNyArOTA3LDcgQEAgZW1pdF9pbmNfZGVjX2luc25fYmVm b3JlIChydHggbWVtIEFUVFJJQlVURV9VTlVTRUQsCiAgICAgICBlbmRfc2Vx dWVuY2UgKCk7CiAgICAgfQogICBlbHNlCi0gICAgbmV3X2luc24gPSBhc19h IDxydHhfaW5zbiAqPiAoZ2VuX21vdmVfaW5zbiAoZGVzdCwgc3JjKSk7Cisg ICAgbmV3X2luc24gPSBnZW5fbW92ZV9pbnNuIChkZXN0LCBzcmMpOwogICBp bmZvLmZpcnN0ID0gbmV3X2luc247CiAgIGluZm8uZml4ZWRfcmVnc19saXZl ID0gaW5zbl9pbmZvLT5maXhlZF9yZWdzX2xpdmU7CiAgIGluZm8uZmFpbHVy ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZ2NjL2VtaXQtcnRsLmMgYi9nY2Mv ZW1pdC1ydGwuYwppbmRleCA0ODNlYWNiLi44YjEyYjEwIDEwMDY0NAotLS0g YS9nY2MvZW1pdC1ydGwuYworKysgYi9nY2MvZW1pdC1ydGwuYwpAQCAtNDQ2 MywxMyArNDQ2MywxNSBAQCBlbWl0X2JhcnJpZXJfYmVmb3JlIChydHggYmVm b3JlKQogCiAvKiBFbWl0IHRoZSBsYWJlbCBMQUJFTCBiZWZvcmUgdGhlIGlu c24gQkVGT1JFLiAgKi8KIAotcnR4X2luc24gKgotZW1pdF9sYWJlbF9iZWZv cmUgKHJ0eCBsYWJlbCwgcnR4X2luc24gKmJlZm9yZSkKK3J0eF9jb2RlX2xh YmVsICoKK2VtaXRfbGFiZWxfYmVmb3JlIChydHggdW5jYXN0X2xhYmVsLCBy dHhfaW5zbiAqYmVmb3JlKQogeworICBydHhfY29kZV9sYWJlbCAqbGFiZWwg PSBhc19hIDxydHhfY29kZV9sYWJlbCAqPiAodW5jYXN0X2xhYmVsKTsKKwog ICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChJTlNOX1VJRCAobGFiZWwpID09IDAp OwogICBJTlNOX1VJRCAobGFiZWwpID0gY3VyX2luc25fdWlkKys7CiAgIGFk ZF9pbnNuX2JlZm9yZSAobGFiZWwsIGJlZm9yZSwgTlVMTCk7Ci0gIHJldHVy biBhc19hIDxydHhfaW5zbiAqPiAobGFiZWwpOworICByZXR1cm4gbGFiZWw7 CiB9CiAMCiAvKiBIZWxwZXIgZm9yIGVtaXRfaW5zbl9hZnRlciwgaGFuZGxl cyBsaXN0cyBvZiBpbnN0cnVjdGlvbnMKQEAgLTUwOTAsMTMgKzUwOTIsMTUg QEAgZW1pdF9jYWxsX2luc24gKHJ0eCB4KQogCiAvKiBBZGQgdGhlIGxhYmVs IExBQkVMIHRvIHRoZSBlbmQgb2YgdGhlIGRvdWJseS1saW5rZWQgbGlzdC4g ICovCiAKLXJ0eF9pbnNuICoKLWVtaXRfbGFiZWwgKHJ0eCBsYWJlbCkKK3J0 eF9jb2RlX2xhYmVsICoKK2VtaXRfbGFiZWwgKHJ0eCB1bmNhc3RfbGFiZWwp CiB7CisgIHJ0eF9jb2RlX2xhYmVsICpsYWJlbCA9IGFzX2EgPHJ0eF9jb2Rl X2xhYmVsICo+ICh1bmNhc3RfbGFiZWwpOworCiAgIGdjY19jaGVja2luZ19h c3NlcnQgKElOU05fVUlEIChsYWJlbCkgPT0gMCk7CiAgIElOU05fVUlEIChs YWJlbCkgPSBjdXJfaW5zbl91aWQrKzsKLSAgYWRkX2luc24gKGFzX2EgPHJ0 eF9pbnNuICo+IChsYWJlbCkpOwotICByZXR1cm4gYXNfYSA8cnR4X2luc24g Kj4gKGxhYmVsKTsKKyAgYWRkX2luc24gKGxhYmVsKTsKKyAgcmV0dXJuIGxh YmVsOwogfQogCiAvKiBNYWtlIGFuIGluc24gb2YgY29kZSBKVU1QX1RBQkxF X0RBVEEKQEAgLTUzNTcsNyArNTM2MSw3IEBAIGVtaXQgKHJ0eCB4KQogICBz d2l0Y2ggKGNvZGUpCiAgICAgewogICAgIGNhc2UgQ09ERV9MQUJFTDoKLSAg ICAgIHJldHVybiBlbWl0X2xhYmVsICh4KTsKKyAgICAgIHJldHVybiBlbWl0 X2xhYmVsIChhc19hIDxydHhfY29kZV9sYWJlbCAqPiAoeCkpOwogICAgIGNh c2UgSU5TTjoKICAgICAgIHJldHVybiBlbWl0X2luc24gKHgpOwogICAgIGNh c2UgIEpVTVBfSU5TTjoKZGlmZiAtLWdpdCBhL2djYy9leGNlcHQuYyBiL2dj Yy9leGNlcHQuYwppbmRleCA4MzNlYzIxLi45MGZmYmQxIDEwMDY0NAotLS0g YS9nY2MvZXhjZXB0LmMKKysrIGIvZ2NjL2V4Y2VwdC5jCkBAIC0xMzU0LDcg KzEzNTQsNyBAQCBzamxqX2VtaXRfZGlzcGF0Y2hfdGFibGUgKHJ0eF9jb2Rl X2xhYmVsICpkaXNwYXRjaF9sYWJlbCwgaW50IG51bV9kaXNwYXRjaCkKICAg ICBpZiAobHAgJiYgbHAtPnBvc3RfbGFuZGluZ19wYWQpCiAgICAgICB7CiAJ cnR4X2luc24gKnNlcTI7Ci0JcnR4IGxhYmVsOworCXJ0eF9jb2RlX2xhYmVs ICpsYWJlbDsKIAogCXN0YXJ0X3NlcXVlbmNlICgpOwogCkBAIC0xMzY4LDcg KzEzNjgsNyBAQCBzamxqX2VtaXRfZGlzcGF0Y2hfdGFibGUgKHJ0eF9jb2Rl X2xhYmVsICpkaXNwYXRjaF9sYWJlbCwgaW50IG51bV9kaXNwYXRjaCkKIAkg ICAgdCA9IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCBkaXNw X2luZGV4KTsKIAkgICAgY2FzZV9lbHQgPSBidWlsZF9jYXNlX2xhYmVsICh0 LCBOVUxMLCB0X2xhYmVsKTsKIAkgICAgZGlzcGF0Y2hfbGFiZWxzLnF1aWNr X3B1c2ggKGNhc2VfZWx0KTsKLQkgICAgbGFiZWwgPSBsYWJlbF9ydHggKHRf bGFiZWwpOworCSAgICBsYWJlbCA9IGxpdmVfbGFiZWxfcnR4ICh0X2xhYmVs KTsKIAkgIH0KIAllbHNlCiAJICBsYWJlbCA9IGdlbl9sYWJlbF9ydHggKCk7 CmRpZmYgLS1naXQgYS9nY2MvZXhwbG93LmMgYi9nY2MvZXhwbG93LmMKaW5k ZXggZGU0NDZhOS4uNTdjYjc2NyAxMDA2NDQKLS0tIGEvZ2NjL2V4cGxvdy5j CisrKyBiL2djYy9leHBsb3cuYwpAQCAtOTg0LDcgKzk4NCw3IEBAIGVtaXRf c3RhY2tfc2F2ZSAoZW51bSBzYXZlX2xldmVsIHNhdmVfbGV2ZWwsIHJ0eCAq cHNhdmUpCiB7CiAgIHJ0eCBzYSA9ICpwc2F2ZTsKICAgLyogVGhlIGRlZmF1 bHQgaXMgdGhhdCB3ZSB1c2UgYSBtb3ZlIGluc24gYW5kIHNhdmUgaW4gYSBQ bW9kZSBvYmplY3QuICAqLwotICBydHggKCpmY24pIChydHgsIHJ0eCkgPSBn ZW5fbW92ZV9pbnNuOworICBydHhfaW5zbiAqICgqZmNuKSAocnR4LCBydHgp ID0gZ2VuX21vdmVfaW5zbjsKICAgbWFjaGluZV9tb2RlIG1vZGUgPSBTVEFD S19TQVZFQVJFQV9NT0RFIChzYXZlX2xldmVsKTsKIAogICAvKiBTZWUgaWYg dGhpcyBtYWNoaW5lIGhhcyBhbnl0aGluZyBzcGVjaWFsIHRvIGRvIGZvciB0 aGlzIGtpbmQgb2Ygc2F2ZS4gICovCkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2 b2lkCiBlbWl0X3N0YWNrX3Jlc3RvcmUgKGVudW0gc2F2ZV9sZXZlbCBzYXZl X2xldmVsLCBydHggc2EpCiB7CiAgIC8qIFRoZSBkZWZhdWx0IGlzIHRoYXQg d2UgdXNlIGEgbW92ZSBpbnNuLiAgKi8KLSAgcnR4ICgqZmNuKSAocnR4LCBy dHgpID0gZ2VuX21vdmVfaW5zbjsKKyAgcnR4X2luc24gKiAoKmZjbikgKHJ0 eCwgcnR4KSA9IGdlbl9tb3ZlX2luc247CiAKICAgLyogSWYgc3RhY2tfcmVh bGlnbl9kcmFwLCB0aGUgeDg2IGJhY2tlbmQgZW1pdHMgYSBwcm9sb2d1ZSB0 aGF0IGFsaWducyBib3RoCiAgICAgIFNUQUNLX1BPSU5URVIgYW5kIEhBUkRf RlJBTUVfUE9JTlRFUi4KZGlmZiAtLWdpdCBhL2djYy9leHBtZWQuYyBiL2dj Yy9leHBtZWQuYwppbmRleCBlMGIyNjE5Li5jY2ZiMjVhIDEwMDY0NAotLS0g YS9nY2MvZXhwbWVkLmMKKysrIGIvZ2NjL2V4cG1lZC5jCkBAIC01Nzk5LDgg KzU3OTksOCBAQCBlbWl0X3N0b3JlX2ZsYWdfZm9yY2UgKHJ0eCB0YXJnZXQs IGVudW0gcnR4X2NvZGUgY29kZSwgcnR4IG9wMCwgcnR4IG9wMSwKICAgICAg ICYmIG9wMSA9PSBjb25zdDBfcnR4KQogICAgIHsKICAgICAgIGxhYmVsID0g Z2VuX2xhYmVsX3J0eCAoKTsKLSAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9q dW1wICh0YXJnZXQsIGNvbnN0MF9ydHgsIEVRLCB1bnNpZ25lZHAsCi0JCQkg ICAgICAgbW9kZSwgTlVMTF9SVFgsIE5VTExfUlRYLCBsYWJlbCwgLTEpOwor ICAgICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHRhcmdldCwgY29uc3Qw X3J0eCwgRVEsIHVuc2lnbmVkcCwgbW9kZSwKKwkJCSAgICAgICBOVUxMX1JU WCwgTlVMTCwgbGFiZWwsIC0xKTsKICAgICAgIGVtaXRfbW92ZV9pbnNuICh0 YXJnZXQsIHRydWV2YWwpOwogICAgICAgZW1pdF9sYWJlbCAobGFiZWwpOwog ICAgICAgcmV0dXJuIHRhcmdldDsKQEAgLTU4MzcsOCArNTgzNyw4IEBAIGVt aXRfc3RvcmVfZmxhZ19mb3JjZSAocnR4IHRhcmdldCwgZW51bSBydHhfY29k ZSBjb2RlLCBydHggb3AwLCBydHggb3AxLAogCiAgIGVtaXRfbW92ZV9pbnNu ICh0YXJnZXQsIHRydWV2YWwpOwogICBsYWJlbCA9IGdlbl9sYWJlbF9ydHgg KCk7Ci0gIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChvcDAsIG9wMSwgY29k ZSwgdW5zaWduZWRwLCBtb2RlLCBOVUxMX1JUWCwKLQkJCSAgIE5VTExfUlRY LCBsYWJlbCwgLTEpOworICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAob3Aw LCBvcDEsIGNvZGUsIHVuc2lnbmVkcCwgbW9kZSwgTlVMTF9SVFgsIE5VTEws CisJCQkgICBsYWJlbCwgLTEpOwogCiAgIGVtaXRfbW92ZV9pbnNuICh0YXJn ZXQsIGZhbHNldmFsKTsKICAgZW1pdF9sYWJlbCAobGFiZWwpOwpAQCAtNTg1 NSw2ICs1ODU1LDYgQEAgZG9fY21wX2FuZF9qdW1wIChydHggYXJnMSwgcnR4 IGFyZzIsIGVudW0gcnR4X2NvZGUgb3AsIG1hY2hpbmVfbW9kZSBtb2RlLAog CQkgcnR4X2NvZGVfbGFiZWwgKmxhYmVsKQogewogICBpbnQgdW5zaWduZWRw ID0gKG9wID09IExUVSB8fCBvcCA9PSBMRVUgfHwgb3AgPT0gR1RVIHx8IG9w ID09IEdFVSk7Ci0gIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChhcmcxLCBh cmcyLCBvcCwgdW5zaWduZWRwLCBtb2RlLAotCQkJICAgTlVMTF9SVFgsIE5V TExfUlRYLCBsYWJlbCwgLTEpOworICBkb19jb21wYXJlX3J0eF9hbmRfanVt cCAoYXJnMSwgYXJnMiwgb3AsIHVuc2lnbmVkcCwgbW9kZSwgTlVMTF9SVFgs CisJCQkgICBOVUxMLCBsYWJlbCwgLTEpOwogfQpkaWZmIC0tZ2l0IGEvZ2Nj L2V4cHIuYyBiL2djYy9leHByLmMKaW5kZXggZGMxM2ExNC4uYTcwNjZiZSAx MDA2NDQKLS0tIGEvZ2NjL2V4cHIuYworKysgYi9nY2MvZXhwci5jCkBAIC0z NjUyLDcgKzM2NTIsNyBAQCBlbWl0X21vdmVfaW5zbiAocnR4IHgsIHJ0eCB5 KQogLyogR2VuZXJhdGUgdGhlIGJvZHkgb2YgYW4gaW5zdHJ1Y3Rpb24gdG8g Y29weSBZIGludG8gWC4KICAgIEl0IG1heSBiZSBhIGxpc3Qgb2YgaW5zbnMs IGlmIG9uZSBpbnNuIGlzbid0IGVub3VnaC4gICovCiAKLXJ0eAorcnR4X2lu c24gKgogZ2VuX21vdmVfaW5zbiAocnR4IHgsIHJ0eCB5KQogewogICBydHhf aW5zbiAqc2VxOwpAQCAtODEyMiw2ICs4MTIyLDcgQEAgZXhwYW5kX2V4cHJf cmVhbF8yIChzZXBvcHMgb3BzLCBydHggdGFyZ2V0LCBtYWNoaW5lX21vZGUg dG1vZGUsCiAJCSAgICBlbnVtIGV4cGFuZF9tb2RpZmllciBtb2RpZmllcikK IHsKICAgcnR4IG9wMCwgb3AxLCBvcDIsIHRlbXA7CisgIHJ0eF9jb2RlX2xh YmVsICpsYWI7CiAgIHRyZWUgdHlwZTsKICAgaW50IHVuc2lnbmVkcDsKICAg bWFjaGluZV9tb2RlIG1vZGU7CkBAIC04ODY0LDExICs4ODY1LDcgQEAgZXhw YW5kX2V4cHJfcmVhbF8yIChzZXBvcHMgb3BzLCBydHggdGFyZ2V0LCBtYWNo aW5lX21vZGUgdG1vZGUsCiAKICAgICAgIC8qIElmIG9wMSB3YXMgcGxhY2Vk IGluIHRhcmdldCwgc3dhcCBvcDAgYW5kIG9wMS4gICovCiAgICAgICBpZiAo dGFyZ2V0ICE9IG9wMCAmJiB0YXJnZXQgPT0gb3AxKQotCXsKLQkgIHRlbXAg PSBvcDA7Ci0JICBvcDAgPSBvcDE7Ci0JICBvcDEgPSB0ZW1wOwotCX0KKwlz dGQ6OnN3YXAgKG9wMCwgb3AxKTsKIAogICAgICAgLyogV2UgZ2VuZXJhdGUg YmV0dGVyIGNvZGUgYW5kIGF2b2lkIHByb2JsZW1zIHdpdGggb3AxIG1lbnRp b25pbmcKIAkgdGFyZ2V0IGJ5IGZvcmNpbmcgb3AxIGludG8gYSBwc2V1ZG8g aWYgaXQgaXNuJ3QgYSBjb25zdGFudC4gICovCkBAIC04OTM1LDEzICs4OTMy LDEzIEBAIGV4cGFuZF9leHByX3JlYWxfMiAoc2Vwb3BzIG9wcywgcnR4IHRh cmdldCwgbWFjaGluZV9tb2RlIHRtb2RlLAogCWlmICh0YXJnZXQgIT0gb3Aw KQogCSAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgb3AwKTsKIAotCXRlbXAg PSBnZW5fbGFiZWxfcnR4ICgpOworCWxhYiA9IGdlbl9sYWJlbF9ydHggKCk7 CiAJZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHRhcmdldCwgY21wb3AxLCBj b21wYXJpc29uX2NvZGUsCi0JCQkJIHVuc2lnbmVkcCwgbW9kZSwgTlVMTF9S VFgsIE5VTExfUlRYLCB0ZW1wLAorCQkJCSB1bnNpZ25lZHAsIG1vZGUsIE5V TExfUlRYLCBOVUxMLCBsYWIsCiAJCQkJIC0xKTsKICAgICAgIH0KICAgICAg IGVtaXRfbW92ZV9pbnNuICh0YXJnZXQsIG9wMSk7Ci0gICAgICBlbWl0X2xh YmVsICh0ZW1wKTsKKyAgICAgIGVtaXRfbGFiZWwgKGxhYik7CiAgICAgICBy ZXR1cm4gdGFyZ2V0OwogCiAgICAgY2FzZSBCSVRfTk9UX0VYUFI6CkBAIC05 MDE5LDM4ICs5MDE2LDM5IEBAIGV4cGFuZF9leHByX3JlYWxfMiAoc2Vwb3Bz IG9wcywgcnR4IHRhcmdldCwgbWFjaGluZV9tb2RlIHRtb2RlLAogICAgIGNh c2UgVU5HRV9FWFBSOgogICAgIGNhc2UgVU5FUV9FWFBSOgogICAgIGNhc2Ug TFRHVF9FWFBSOgotICAgICAgdGVtcCA9IGRvX3N0b3JlX2ZsYWcgKG9wcywK LQkJCSAgICBtb2RpZmllciAhPSBFWFBBTkRfU1RBQ0tfUEFSTSA/IHRhcmdl dCA6IE5VTExfUlRYLAotCQkJICAgIHRtb2RlICE9IFZPSURtb2RlID8gdG1v ZGUgOiBtb2RlKTsKLSAgICAgIGlmICh0ZW1wKQotCXJldHVybiB0ZW1wOwot Ci0gICAgICAvKiBVc2UgYSBjb21wYXJlIGFuZCBhIGp1bXAgZm9yIEJMS21v ZGUgY29tcGFyaXNvbnMsIG9yIGZvciBmdW5jdGlvbgotCSB0eXBlIGNvbXBh cmlzb25zIGlzIEhBVkVfY2Fub25pY2FsaXplX2Z1bmNwdHJfZm9yX2NvbXBh cmUuICAqLwotCi0gICAgICBpZiAoKHRhcmdldCA9PSAwCi0JICAgfHwgbW9k aWZpZXIgPT0gRVhQQU5EX1NUQUNLX1BBUk0KLQkgICB8fCAhIHNhZmVfZnJv bV9wICh0YXJnZXQsIHRyZWVvcDAsIDEpCi0JICAgfHwgISBzYWZlX2Zyb21f cCAodGFyZ2V0LCB0cmVlb3AxLCAxKQotCSAgIC8qIE1ha2Ugc3VyZSB3ZSBk b24ndCBoYXZlIGEgaGFyZCByZWcgKHN1Y2ggYXMgZnVuY3Rpb24ncyByZXR1 cm4KLQkgICAgICB2YWx1ZSkgbGl2ZSBhY3Jvc3MgYmFzaWMgYmxvY2tzLCBp ZiBub3Qgb3B0aW1pemluZy4gICovCi0JICAgfHwgKCFvcHRpbWl6ZSAmJiBS RUdfUCAodGFyZ2V0KQotCSAgICAgICAmJiBSRUdOTyAodGFyZ2V0KSA8IEZJ UlNUX1BTRVVET19SRUdJU1RFUikpKQotCXRhcmdldCA9IGdlbl9yZWdfcnR4 ICh0bW9kZSAhPSBWT0lEbW9kZSA/IHRtb2RlIDogbW9kZSk7CisgICAgICB7 CisJdGVtcCA9IGRvX3N0b3JlX2ZsYWcgKG9wcywKKwkJCSAgICAgIG1vZGlm aWVyICE9IEVYUEFORF9TVEFDS19QQVJNID8gdGFyZ2V0IDogTlVMTF9SVFgs CisJCQkgICAgICB0bW9kZSAhPSBWT0lEbW9kZSA/IHRtb2RlIDogbW9kZSk7 CisJaWYgKHRlbXApCisJICByZXR1cm4gdGVtcDsKIAotICAgICAgZW1pdF9t b3ZlX2luc24gKHRhcmdldCwgY29uc3QwX3J0eCk7CisJLyogVXNlIGEgY29t cGFyZSBhbmQgYSBqdW1wIGZvciBCTEttb2RlIGNvbXBhcmlzb25zLCBvciBm b3IgZnVuY3Rpb24KKwkgICB0eXBlIGNvbXBhcmlzb25zIGlzIEhBVkVfY2Fu b25pY2FsaXplX2Z1bmNwdHJfZm9yX2NvbXBhcmUuICAqLworCisJaWYgKCh0 YXJnZXQgPT0gMAorCSAgICAgfHwgbW9kaWZpZXIgPT0gRVhQQU5EX1NUQUNL X1BBUk0KKwkgICAgIHx8ICEgc2FmZV9mcm9tX3AgKHRhcmdldCwgdHJlZW9w MCwgMSkKKwkgICAgIHx8ICEgc2FmZV9mcm9tX3AgKHRhcmdldCwgdHJlZW9w MSwgMSkKKwkgICAgIC8qIE1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGEgaGFy ZCByZWcgKHN1Y2ggYXMgZnVuY3Rpb24ncyByZXR1cm4KKwkJdmFsdWUpIGxp dmUgYWNyb3NzIGJhc2ljIGJsb2NrcywgaWYgbm90IG9wdGltaXppbmcuICAq LworCSAgICAgfHwgKCFvcHRpbWl6ZSAmJiBSRUdfUCAodGFyZ2V0KQorCQkg JiYgUkVHTk8gKHRhcmdldCkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVIpKSkK KwkgIHRhcmdldCA9IGdlbl9yZWdfcnR4ICh0bW9kZSAhPSBWT0lEbW9kZSA/ IHRtb2RlIDogbW9kZSk7CiAKLSAgICAgIG9wMSA9IGdlbl9sYWJlbF9ydHgg KCk7Ci0gICAgICBqdW1waWZub3RfMSAoY29kZSwgdHJlZW9wMCwgdHJlZW9w MSwgb3AxLCAtMSk7CisJZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgY29uc3Qw X3J0eCk7CiAKLSAgICAgIGlmIChUWVBFX1BSRUNJU0lPTiAodHlwZSkgPT0g MSAmJiAhVFlQRV9VTlNJR05FRCAodHlwZSkpCi0JZW1pdF9tb3ZlX2luc24g KHRhcmdldCwgY29uc3RtMV9ydHgpOwotICAgICAgZWxzZQotCWVtaXRfbW92 ZV9pbnNuICh0YXJnZXQsIGNvbnN0MV9ydHgpOworCXJ0eF9jb2RlX2xhYmVs ICpsYWIxID0gZ2VuX2xhYmVsX3J0eCAoKTsKKwlqdW1waWZub3RfMSAoY29k ZSwgdHJlZW9wMCwgdHJlZW9wMSwgbGFiMSwgLTEpOwogCi0gICAgICBlbWl0 X2xhYmVsIChvcDEpOwotICAgICAgcmV0dXJuIHRhcmdldDsKKwlpZiAoVFlQ RV9QUkVDSVNJT04gKHR5cGUpID09IDEgJiYgIVRZUEVfVU5TSUdORUQgKHR5 cGUpKQorCSAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgY29uc3RtMV9ydHgp OworCWVsc2UKKwkgIGVtaXRfbW92ZV9pbnNuICh0YXJnZXQsIGNvbnN0MV9y dHgpOwogCisJZW1pdF9sYWJlbCAobGFiMSk7CisJcmV0dXJuIHRhcmdldDsK KyAgICAgIH0KICAgICBjYXNlIENPTVBMRVhfRVhQUjoKICAgICAgIC8qIEdl dCB0aGUgcnR4IGNvZGUgb2YgdGhlIG9wZXJhbmRzLiAgKi8KICAgICAgIG9w MCA9IGV4cGFuZF9ub3JtYWwgKHRyZWVvcDApOwpAQCAtOTI3Myw1OCArOTI3 MSw2MCBAQCBleHBhbmRfZXhwcl9yZWFsXzIgKHNlcG9wcyBvcHMsIHJ0eCB0 YXJnZXQsIG1hY2hpbmVfbW9kZSB0bW9kZSwKICAgICAgIH0KIAogICAgIGNh c2UgQ09ORF9FWFBSOgotICAgICAgLyogQSBDT05EX0VYUFIgd2l0aCBpdHMg dHlwZSBiZWluZyBWT0lEX1RZUEUgcmVwcmVzZW50cyBhCi0JIGNvbmRpdGlv bmFsIGp1bXAgYW5kIGlzIGhhbmRsZWQgaW4KLQkgZXhwYW5kX2dpbXBsZV9j b25kX2V4cHIuICAqLwotICAgICAgZ2NjX2Fzc2VydCAoIVZPSURfVFlQRV9Q ICh0eXBlKSk7Ci0KLSAgICAgIC8qIE5vdGUgdGhhdCBDT05EX0VYUFJzIHdo b3NlIHR5cGUgaXMgYSBzdHJ1Y3R1cmUgb3IgdW5pb24KLQkgYXJlIHJlcXVp cmVkIHRvIGJlIGNvbnN0cnVjdGVkIHRvIGNvbnRhaW4gYXNzaWdubWVudHMg b2YKLQkgYSB0ZW1wb3JhcnkgdmFyaWFibGUsIHNvIHRoYXQgd2UgY2FuIGV2 YWx1YXRlIHRoZW0gaGVyZQotCSBmb3Igc2lkZSBlZmZlY3Qgb25seS4gIElm IHR5cGUgaXMgdm9pZCwgd2UgbXVzdCBkbyBsaWtld2lzZS4gICovCi0KLSAg ICAgIGdjY19hc3NlcnQgKCFUUkVFX0FERFJFU1NBQkxFICh0eXBlKQotCQkg ICYmICFpZ25vcmUKLQkJICAmJiBUUkVFX1RZUEUgKHRyZWVvcDEpICE9IHZv aWRfdHlwZV9ub2RlCi0JCSAgJiYgVFJFRV9UWVBFICh0cmVlb3AyKSAhPSB2 b2lkX3R5cGVfbm9kZSk7Ci0KLSAgICAgIHRlbXAgPSBleHBhbmRfY29uZF9l eHByX3VzaW5nX2Ntb3ZlICh0cmVlb3AwLCB0cmVlb3AxLCB0cmVlb3AyKTsK LSAgICAgIGlmICh0ZW1wKQotCXJldHVybiB0ZW1wOwotCi0gICAgICAvKiBJ ZiB3ZSBhcmUgbm90IHRvIHByb2R1Y2UgYSByZXN1bHQsIHdlIGhhdmUgbm8g dGFyZ2V0LiAgT3RoZXJ3aXNlLAotCSBpZiBhIHRhcmdldCB3YXMgc3BlY2lm aWVkIHVzZSBpdDsgaXQgd2lsbCBub3QgYmUgdXNlZCBhcyBhbgotCSBpbnRl cm1lZGlhdGUgdGFyZ2V0IHVubGVzcyBpdCBpcyBzYWZlLiAgSWYgbm8gdGFy Z2V0LCB1c2UgYQotCSB0ZW1wb3JhcnkuICAqLwotCi0gICAgICBpZiAobW9k aWZpZXIgIT0gRVhQQU5EX1NUQUNLX1BBUk0KLQkgICYmIG9yaWdpbmFsX3Rh cmdldAotCSAgJiYgc2FmZV9mcm9tX3AgKG9yaWdpbmFsX3RhcmdldCwgdHJl ZW9wMCwgMSkKLQkgICYmIEdFVF9NT0RFIChvcmlnaW5hbF90YXJnZXQpID09 IG1vZGUKLQkgICYmICFNRU1fUCAob3JpZ2luYWxfdGFyZ2V0KSkKLQl0ZW1w ID0gb3JpZ2luYWxfdGFyZ2V0OwotICAgICAgZWxzZQotCXRlbXAgPSBhc3Np Z25fdGVtcCAodHlwZSwgMCwgMSk7Ci0KLSAgICAgIGRvX3BlbmRpbmdfc3Rh Y2tfYWRqdXN0ICgpOwotICAgICAgTk9fREVGRVJfUE9QOwotICAgICAgb3Aw ID0gZ2VuX2xhYmVsX3J0eCAoKTsKLSAgICAgIG9wMSA9IGdlbl9sYWJlbF9y dHggKCk7Ci0gICAgICBqdW1waWZub3QgKHRyZWVvcDAsIG9wMCwgLTEpOwot ICAgICAgc3RvcmVfZXhwciAodHJlZW9wMSwgdGVtcCwKLQkJICBtb2RpZmll ciA9PSBFWFBBTkRfU1RBQ0tfUEFSTSwKLQkJICBmYWxzZSk7Ci0KLSAgICAg IGVtaXRfanVtcF9pbnNuIChnZW5fanVtcCAob3AxKSk7Ci0gICAgICBlbWl0 X2JhcnJpZXIgKCk7Ci0gICAgICBlbWl0X2xhYmVsIChvcDApOwotICAgICAg c3RvcmVfZXhwciAodHJlZW9wMiwgdGVtcCwKLQkJICBtb2RpZmllciA9PSBF WFBBTkRfU1RBQ0tfUEFSTSwKLQkJICBmYWxzZSk7CisgICAgICB7CisJLyog QSBDT05EX0VYUFIgd2l0aCBpdHMgdHlwZSBiZWluZyBWT0lEX1RZUEUgcmVw cmVzZW50cyBhCisJICAgY29uZGl0aW9uYWwganVtcCBhbmQgaXMgaGFuZGxl ZCBpbgorCSAgIGV4cGFuZF9naW1wbGVfY29uZF9leHByLiAgKi8KKwlnY2Nf YXNzZXJ0ICghVk9JRF9UWVBFX1AgKHR5cGUpKTsKKworCS8qIE5vdGUgdGhh dCBDT05EX0VYUFJzIHdob3NlIHR5cGUgaXMgYSBzdHJ1Y3R1cmUgb3IgdW5p b24KKwkgICBhcmUgcmVxdWlyZWQgdG8gYmUgY29uc3RydWN0ZWQgdG8gY29u dGFpbiBhc3NpZ25tZW50cyBvZgorCSAgIGEgdGVtcG9yYXJ5IHZhcmlhYmxl LCBzbyB0aGF0IHdlIGNhbiBldmFsdWF0ZSB0aGVtIGhlcmUKKwkgICBmb3Ig c2lkZSBlZmZlY3Qgb25seS4gIElmIHR5cGUgaXMgdm9pZCwgd2UgbXVzdCBk byBsaWtld2lzZS4gICovCisKKwlnY2NfYXNzZXJ0ICghVFJFRV9BRERSRVNT QUJMRSAodHlwZSkKKwkJICAgICYmICFpZ25vcmUKKwkJICAgICYmIFRSRUVf VFlQRSAodHJlZW9wMSkgIT0gdm9pZF90eXBlX25vZGUKKwkJICAgICYmIFRS RUVfVFlQRSAodHJlZW9wMikgIT0gdm9pZF90eXBlX25vZGUpOworCisJdGVt cCA9IGV4cGFuZF9jb25kX2V4cHJfdXNpbmdfY21vdmUgKHRyZWVvcDAsIHRy ZWVvcDEsIHRyZWVvcDIpOworCWlmICh0ZW1wKQorCSAgcmV0dXJuIHRlbXA7 CiAKLSAgICAgIGVtaXRfbGFiZWwgKG9wMSk7Ci0gICAgICBPS19ERUZFUl9Q T1A7Ci0gICAgICByZXR1cm4gdGVtcDsKKwkvKiBJZiB3ZSBhcmUgbm90IHRv IHByb2R1Y2UgYSByZXN1bHQsIHdlIGhhdmUgbm8gdGFyZ2V0LiAgT3RoZXJ3 aXNlLAorCSAgIGlmIGEgdGFyZ2V0IHdhcyBzcGVjaWZpZWQgdXNlIGl0OyBp dCB3aWxsIG5vdCBiZSB1c2VkIGFzIGFuCisJICAgaW50ZXJtZWRpYXRlIHRh cmdldCB1bmxlc3MgaXQgaXMgc2FmZS4gIElmIG5vIHRhcmdldCwgdXNlIGEK KwkgICB0ZW1wb3JhcnkuICAqLworCisJaWYgKG1vZGlmaWVyICE9IEVYUEFO RF9TVEFDS19QQVJNCisJICAgICYmIG9yaWdpbmFsX3RhcmdldAorCSAgICAm JiBzYWZlX2Zyb21fcCAob3JpZ2luYWxfdGFyZ2V0LCB0cmVlb3AwLCAxKQor CSAgICAmJiBHRVRfTU9ERSAob3JpZ2luYWxfdGFyZ2V0KSA9PSBtb2RlCisJ ICAgICYmICFNRU1fUCAob3JpZ2luYWxfdGFyZ2V0KSkKKwkgIHRlbXAgPSBv cmlnaW5hbF90YXJnZXQ7CisJZWxzZQorCSAgdGVtcCA9IGFzc2lnbl90ZW1w ICh0eXBlLCAwLCAxKTsKKworCWRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0ICgp OworCU5PX0RFRkVSX1BPUDsKKwlydHhfY29kZV9sYWJlbCAqbGFiMCA9IGdl bl9sYWJlbF9ydHggKCk7CisJcnR4X2NvZGVfbGFiZWwgKmxhYjEgPSBnZW5f bGFiZWxfcnR4ICgpOworCWp1bXBpZm5vdCAodHJlZW9wMCwgbGFiMCwgLTEp OworCXN0b3JlX2V4cHIgKHRyZWVvcDEsIHRlbXAsCisJCSAgICBtb2RpZmll ciA9PSBFWFBBTkRfU1RBQ0tfUEFSTSwKKwkJICAgIGZhbHNlKTsKKworCWVt aXRfanVtcF9pbnNuIChnZW5fanVtcCAobGFiMSkpOworCWVtaXRfYmFycmll ciAoKTsKKwllbWl0X2xhYmVsIChsYWIwKTsKKwlzdG9yZV9leHByICh0cmVl b3AyLCB0ZW1wLAorCQkgICAgbW9kaWZpZXIgPT0gRVhQQU5EX1NUQUNLX1BB Uk0sCisJCSAgICBmYWxzZSk7CisKKwllbWl0X2xhYmVsIChsYWIxKTsKKwlP S19ERUZFUl9QT1A7CisJcmV0dXJuIHRlbXA7CisgICAgICB9CiAKICAgICBj YXNlIFZFQ19DT05EX0VYUFI6CiAgICAgICB0YXJnZXQgPSBleHBhbmRfdmVj X2NvbmRfZXhwciAodHlwZSwgdHJlZW9wMCwgdHJlZW9wMSwgdHJlZW9wMiwg dGFyZ2V0KTsKZGlmZiAtLWdpdCBhL2djYy9leHByLmggYi9nY2MvZXhwci5o CmluZGV4IDg2Nzg1MmUuLjZjNGFmYzQgMTAwNjQ0Ci0tLSBhL2djYy9leHBy LmgKKysrIGIvZ2NjL2V4cHIuaApAQCAtMjAzLDcgKzIwMyw3IEBAIGV4dGVy biBydHggc3RvcmVfYnlfcGllY2VzIChydHgsIHVuc2lnbmVkIEhPU1RfV0lE RV9JTlQsCiAKIC8qIEVtaXQgaW5zbnMgdG8gc2V0IFggZnJvbSBZLiAgKi8K IGV4dGVybiBydHhfaW5zbiAqZW1pdF9tb3ZlX2luc24gKHJ0eCwgcnR4KTsK LWV4dGVybiBydHggZ2VuX21vdmVfaW5zbiAocnR4LCBydHgpOworZXh0ZXJu IHJ0eF9pbnNuICpnZW5fbW92ZV9pbnNuIChydHgsIHJ0eCk7CiAKIC8qIEVt aXQgaW5zbnMgdG8gc2V0IFggZnJvbSBZLCB3aXRoIG5vIGZyaWxscy4gICov CiBleHRlcm4gcnR4X2luc24gKmVtaXRfbW92ZV9pbnNuXzEgKHJ0eCwgcnR4 KTsKZGlmZiAtLWdpdCBhL2djYy9mdW5jdGlvbi5jIGIvZ2NjL2Z1bmN0aW9u LmMKaW5kZXggMmMzZDE0Mi4uOTdlY2YzYSAxMDA2NDQKLS0tIGEvZ2NjL2Z1 bmN0aW9uLmMKKysrIGIvZ2NjL2Z1bmN0aW9uLmMKQEAgLTU3NjAsNyArNTc2 MCw3IEBAIGNvbnZlcnRfanVtcHNfdG9fcmV0dXJucyAoYmFzaWNfYmxvY2sg bGFzdF9iYiwgYm9vbCBzaW1wbGVfcCwKIAkgICAgZGVzdCA9IHNpbXBsZV9y ZXR1cm5fcnR4OwogCSAgZWxzZQogCSAgICBkZXN0ID0gcmV0X3J0eDsKLQkg IGlmICghcmVkaXJlY3RfanVtcCAoanVtcCwgZGVzdCwgMCkpCisJICBpZiAo IXJlZGlyZWN0X2p1bXAgKGFzX2EgPHJ0eF9qdW1wX2luc24gKj4gKGp1bXAp LCBkZXN0LCAwKSkKIAkgICAgewogI2lmZGVmIEhBVkVfc2ltcGxlX3JldHVy bgogCSAgICAgIGlmIChzaW1wbGVfcCkKZGlmZiAtLWdpdCBhL2djYy9nY3Nl LmMgYi9nY2MvZ2NzZS5jCmluZGV4IDM3YWFjNmEuLjIwZTc5ZTAgMTAwNjQ0 Ci0tLSBhL2djYy9nY3NlLmMKKysrIGIvZ2NjL2djc2UuYwpAQCAtMjIyNyw3 ICsyMjI3LDggQEAgcHJlX2luc2VydF9jb3B5X2luc24gKHN0cnVjdCBnY3Nl X2V4cHIgKmV4cHIsIHJ0eF9pbnNuICppbnNuKQogICBpbnQgcmVnbm8gPSBS RUdOTyAocmVnKTsKICAgaW50IGluZHggPSBleHByLT5iaXRtYXBfaW5kZXg7 CiAgIHJ0eCBwYXQgPSBQQVRURVJOIChpbnNuKTsKLSAgcnR4IHNldCwgZmly c3Rfc2V0LCBuZXdfaW5zbjsKKyAgcnR4IHNldCwgZmlyc3Rfc2V0OworICBy dHhfaW5zbiAqbmV3X2luc247CiAgIHJ0eCBvbGRfcmVnOwogICBpbnQgaTsK IApkaWZmIC0tZ2l0IGEvZ2NjL2lmY3Z0LmMgYi9nY2MvaWZjdnQuYwppbmRl eCBhM2UzZTVjLi5iZjc5MTIyIDEwMDY0NAotLS0gYS9nY2MvaWZjdnQuYwor KysgYi9nY2MvaWZjdnQuYwpAQCAtNDQ0NCw5ICs0NDQ0LDEwIEBAIGRlYWRf b3JfcHJlZGljYWJsZSAoYmFzaWNfYmxvY2sgdGVzdF9iYiwgYmFzaWNfYmxv Y2sgbWVyZ2VfYmIsCiAgICAgICBlbHNlCiAJbmV3X2Rlc3RfbGFiZWwgPSBi bG9ja19sYWJlbCAobmV3X2Rlc3QpOwogCisgICAgICBydHhfanVtcF9pbnNu ICpqdW1wX2luc24gPSBhc19hIDxydHhfanVtcF9pbnNuICo+IChqdW1wKTsK ICAgICAgIGlmIChyZXZlcnNlcAotCSAgPyAhIGludmVydF9qdW1wXzEgKGp1 bXAsIG5ld19kZXN0X2xhYmVsKQotCSAgOiAhIHJlZGlyZWN0X2p1bXBfMSAo anVtcCwgbmV3X2Rlc3RfbGFiZWwpKQorCSAgPyAhIGludmVydF9qdW1wXzEg KGp1bXBfaW5zbiwgbmV3X2Rlc3RfbGFiZWwpCisJICA6ICEgcmVkaXJlY3Rf anVtcF8xIChqdW1wX2luc24sIG5ld19kZXN0X2xhYmVsKSkKIAlnb3RvIGNh bmNlbDsKICAgICB9CiAKQEAgLTQ0NTcsNyArNDQ1OCw4IEBAIGRlYWRfb3Jf cHJlZGljYWJsZSAoYmFzaWNfYmxvY2sgdGVzdF9iYiwgYmFzaWNfYmxvY2sg bWVyZ2VfYmIsCiAKICAgaWYgKG90aGVyX2JiICE9IG5ld19kZXN0KQogICAg IHsKLSAgICAgIHJlZGlyZWN0X2p1bXBfMiAoanVtcCwgb2xkX2Rlc3QsIG5l d19kZXN0X2xhYmVsLCAwLCByZXZlcnNlcCk7CisgICAgICByZWRpcmVjdF9q dW1wXzIgKGFzX2EgPHJ0eF9qdW1wX2luc24gKj4gKGp1bXApLCBvbGRfZGVz dCwgbmV3X2Rlc3RfbGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgIDAs IHJldmVyc2VwKTsKIAogICAgICAgcmVkaXJlY3RfZWRnZV9zdWNjIChCUkFO Q0hfRURHRSAodGVzdF9iYiksIG5ld19kZXN0KTsKICAgICAgIGlmIChyZXZl cnNlcCkKZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5jIGIvZ2NjL2lu dGVybmFsLWZuLmMKaW5kZXggZTQwMjgyNS4uYWY5YmFmZiAxMDA2NDQKLS0t IGEvZ2NjL2ludGVybmFsLWZuLmMKKysrIGIvZ2NjL2ludGVybmFsLWZuLmMK QEAgLTQyMiw3ICs0MjIsNyBAQCBleHBhbmRfYXJpdGhfb3ZlcmZsb3dfcmVz dWx0X3N0b3JlICh0cmVlIGxocywgcnR4IHRhcmdldCwKICAgICAgIGxyZXMg PSBjb252ZXJ0X21vZGVzICh0Z3Rtb2RlLCBtb2RlLCByZXMsIHVucyk7CiAg ICAgICBnY2NfYXNzZXJ0IChHRVRfTU9ERV9QUkVDSVNJT04gKHRndG1vZGUp IDwgR0VUX01PREVfUFJFQ0lTSU9OIChtb2RlKSk7CiAgICAgICBkb19jb21w YXJlX3J0eF9hbmRfanVtcCAocmVzLCBjb252ZXJ0X21vZGVzIChtb2RlLCB0 Z3Rtb2RlLCBscmVzLCB1bnMpLAotCQkJICAgICAgIEVRLCB0cnVlLCBtb2Rl LCBOVUxMX1JUWCwgTlVMTF9SVFgsIGRvbmVfbGFiZWwsCisJCQkgICAgICAg RVEsIHRydWUsIG1vZGUsIE5VTExfUlRYLCBOVUxMLCBkb25lX2xhYmVsLAog CQkJICAgICAgIFBST0JfVkVSWV9MSUtFTFkpOwogICAgICAgd3JpdGVfY29t cGxleF9wYXJ0ICh0YXJnZXQsIGNvbnN0MV9ydHgsIHRydWUpOwogICAgICAg ZW1pdF9sYWJlbCAoZG9uZV9sYWJlbCk7CkBAIC01NjksNyArNTY5LDcgQEAg ZXhwYW5kX2FkZHN1Yl9vdmVyZmxvdyAobG9jYXRpb25fdCBsb2MsIHRyZWVf Y29kZSBjb2RlLCB0cmVlIGxocywKIAkgICAgICA6IENPTlNUX1NDQUxBUl9J TlRfUCAob3AxKSkpCiAJdGVtID0gb3AxOwogICAgICAgZG9fY29tcGFyZV9y dHhfYW5kX2p1bXAgKHJlcywgdGVtLCBjb2RlID09IFBMVVNfRVhQUiA/IEdF VSA6IExFVSwKLQkJCSAgICAgICB0cnVlLCBtb2RlLCBOVUxMX1JUWCwgTlVM TF9SVFgsIGRvbmVfbGFiZWwsCisJCQkgICAgICAgdHJ1ZSwgbW9kZSwgTlVM TF9SVFgsIE5VTEwsIGRvbmVfbGFiZWwsCiAJCQkgICAgICAgUFJPQl9WRVJZ X0xJS0VMWSk7CiAgICAgICBnb3RvIGRvX2Vycm9yX2xhYmVsOwogICAgIH0K QEAgLTU4NCw3ICs1ODQsNyBAQCBleHBhbmRfYWRkc3ViX292ZXJmbG93IChs b2NhdGlvbl90IGxvYywgdHJlZV9jb2RlIGNvZGUsIHRyZWUgbGhzLAogICAg ICAgcnR4IHRlbSA9IGV4cGFuZF9iaW5vcCAobW9kZSwgYWRkX29wdGFiLAog CQkJICAgICAgY29kZSA9PSBQTFVTX0VYUFIgPyByZXMgOiBvcDAsIHNnbiwK IAkJCSAgICAgIE5VTExfUlRYLCBmYWxzZSwgT1BUQUJfTElCX1dJREVOKTsK LSAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wICh0ZW0sIG9wMSwgR0VV LCB0cnVlLCBtb2RlLCBOVUxMX1JUWCwgTlVMTF9SVFgsCisgICAgICBkb19j b21wYXJlX3J0eF9hbmRfanVtcCAodGVtLCBvcDEsIEdFVSwgdHJ1ZSwgbW9k ZSwgTlVMTF9SVFgsIE5VTEwsCiAJCQkgICAgICAgZG9uZV9sYWJlbCwgUFJP Ql9WRVJZX0xJS0VMWSk7CiAgICAgICBnb3RvIGRvX2Vycm9yX2xhYmVsOwog ICAgIH0KQEAgLTYyNyw4ICs2MjcsOCBAQCBleHBhbmRfYWRkc3ViX292ZXJm bG93IChsb2NhdGlvbl90IGxvYywgdHJlZV9jb2RlIGNvZGUsIHRyZWUgbGhz LAogICAgICAgZWxzZSBpZiAocG9zX25lZyA9PSAzKQogCS8qIElmIEFSRzAg aXMgbm90IGtub3duIHRvIGJlIGFsd2F5cyBwb3NpdGl2ZSwgY2hlY2sgYXQg cnVudGltZS4gICovCiAJZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMCwg Y29uc3QwX3J0eCwgTFQsIGZhbHNlLCBtb2RlLCBOVUxMX1JUWCwKLQkJCQkg TlVMTF9SVFgsIGRvX2Vycm9yLCBQUk9CX1ZFUllfVU5MSUtFTFkpOwotICAg ICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMSwgb3AwLCBMRVUsIHRy dWUsIG1vZGUsIE5VTExfUlRYLCBOVUxMX1JUWCwKKwkJCQkgTlVMTCwgZG9f ZXJyb3IsIFBST0JfVkVSWV9VTkxJS0VMWSk7CisgICAgICBkb19jb21wYXJl X3J0eF9hbmRfanVtcCAob3AxLCBvcDAsIExFVSwgdHJ1ZSwgbW9kZSwgTlVM TF9SVFgsIE5VTEwsCiAJCQkgICAgICAgZG9uZV9sYWJlbCwgUFJPQl9WRVJZ X0xJS0VMWSk7CiAgICAgICBnb3RvIGRvX2Vycm9yX2xhYmVsOwogICAgIH0K QEAgLTY0Miw3ICs2NDIsNyBAQCBleHBhbmRfYWRkc3ViX292ZXJmbG93IChs b2NhdGlvbl90IGxvYywgdHJlZV9jb2RlIGNvZGUsIHRyZWUgbGhzLAogCQkJ ICBPUFRBQl9MSUJfV0lERU4pOwogICAgICAgcnR4IHRlbSA9IGV4cGFuZF9i aW5vcCAobW9kZSwgYWRkX29wdGFiLCBvcDEsIHNnbiwgTlVMTF9SVFgsIGZh bHNlLAogCQkJICAgICAgT1BUQUJfTElCX1dJREVOKTsKLSAgICAgIGRvX2Nv bXBhcmVfcnR4X2FuZF9qdW1wIChvcDAsIHRlbSwgTFRVLCB0cnVlLCBtb2Rl LCBOVUxMX1JUWCwgTlVMTF9SVFgsCisgICAgICBkb19jb21wYXJlX3J0eF9h bmRfanVtcCAob3AwLCB0ZW0sIExUVSwgdHJ1ZSwgbW9kZSwgTlVMTF9SVFgs IE5VTEwsCiAJCQkgICAgICAgZG9uZV9sYWJlbCwgUFJPQl9WRVJZX0xJS0VM WSk7CiAgICAgICBnb3RvIGRvX2Vycm9yX2xhYmVsOwogICAgIH0KQEAgLTY1 NSw3ICs2NTUsNyBAQCBleHBhbmRfYWRkc3ViX292ZXJmbG93IChsb2NhdGlv bl90IGxvYywgdHJlZV9jb2RlIGNvZGUsIHRyZWUgbGhzLAogICAgICAgcmVz ID0gZXhwYW5kX2Jpbm9wIChtb2RlLCBhZGRfb3B0YWIsIG9wMCwgb3AxLCBO VUxMX1JUWCwgZmFsc2UsCiAJCQkgIE9QVEFCX0xJQl9XSURFTik7CiAgICAg ICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAocmVzLCBjb25zdDBfcnR4LCBM VCwgZmFsc2UsIG1vZGUsIE5VTExfUlRYLAotCQkJICAgICAgIE5VTExfUlRY LCBkb19lcnJvciwgUFJPQl9WRVJZX1VOTElLRUxZKTsKKwkJCSAgICAgICBO VUxMLCBkb19lcnJvciwgUFJPQl9WRVJZX1VOTElLRUxZKTsKICAgICAgIHJ0 eCB0ZW0gPSBvcDE7CiAgICAgICAvKiBUaGUgb3BlcmF0aW9uIGlzIGNvbW11 dGF0aXZlLCBzbyB3ZSBjYW4gcGljayBvcGVyYW5kIHRvIGNvbXBhcmUKIAkg YWdhaW5zdC4gIEZvciBwcmVjIDw9IEJJVFNfUEVSX1dPUkQsIEkgdGhpbmsg cHJlZmVycmluZyBSRUcgb3BlcmFuZApAQCAtNjY4LDcgKzY2OCw3IEBAIGV4 cGFuZF9hZGRzdWJfb3ZlcmZsb3cgKGxvY2F0aW9uX3QgbG9jLCB0cmVlX2Nv ZGUgY29kZSwgdHJlZSBsaHMsCiAJICA/IChDT05TVF9TQ0FMQVJfSU5UX1Ag KG9wMSkgJiYgUkVHX1AgKG9wMCkpCiAJICA6IENPTlNUX1NDQUxBUl9JTlRf UCAob3AwKSkKIAl0ZW0gPSBvcDA7Ci0gICAgICBkb19jb21wYXJlX3J0eF9h bmRfanVtcCAocmVzLCB0ZW0sIEdFVSwgdHJ1ZSwgbW9kZSwgTlVMTF9SVFgs IE5VTExfUlRYLAorICAgICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHJl cywgdGVtLCBHRVUsIHRydWUsIG1vZGUsIE5VTExfUlRYLCBOVUxMLAogCQkJ ICAgICAgIGRvbmVfbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOwogICAgICAg Z290byBkb19lcnJvcl9sYWJlbDsKICAgICB9CkBAIC02OTgsMjYgKzY5OCwy NiBAQCBleHBhbmRfYWRkc3ViX292ZXJmbG93IChsb2NhdGlvbl90IGxvYywg dHJlZV9jb2RlIGNvZGUsIHRyZWUgbGhzLAogCSAgdGVtID0gZXhwYW5kX2Jp bm9wIChtb2RlLCAoKHBvc19uZWcgPT0gMSkgXiAoY29kZSA9PSBNSU5VU19F WFBSKSkKIAkJCQkgICAgPyBhbmRfb3B0YWIgOiBpb3Jfb3B0YWIsCiAJCQkg ICAgICBvcDAsIHJlcywgTlVMTF9SVFgsIGZhbHNlLCBPUFRBQl9MSUJfV0lE RU4pOwotCSAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHRlbSwgY29uc3Qw X3J0eCwgR0UsIGZhbHNlLCBtb2RlLCBOVUxMX1JUWCwKLQkJCQkgICBOVUxM X1JUWCwgZG9uZV9sYWJlbCwgUFJPQl9WRVJZX0xJS0VMWSk7CisJICBkb19j b21wYXJlX3J0eF9hbmRfanVtcCAodGVtLCBjb25zdDBfcnR4LCBHRSwgZmFs c2UsIG1vZGUsIE5VTEwsCisJCQkJICAgTlVMTCwgZG9uZV9sYWJlbCwgUFJP Ql9WRVJZX0xJS0VMWSk7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIHJ0eF9j b2RlX2xhYmVsICpkb19pb3JfbGFiZWwgPSBnZW5fbGFiZWxfcnR4ICgpOwog CSAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMSwgY29uc3QwX3J0eCwK IAkJCQkgICBjb2RlID09IE1JTlVTX0VYUFIgPyBHRSA6IExULCBmYWxzZSwg bW9kZSwKLQkJCQkgICBOVUxMX1JUWCwgTlVMTF9SVFgsIGRvX2lvcl9sYWJl bCwKKwkJCQkgICBOVUxMX1JUWCwgTlVMTCwgZG9faW9yX2xhYmVsLAogCQkJ CSAgIFBST0JfRVZFTik7CiAJICB0ZW0gPSBleHBhbmRfYmlub3AgKG1vZGUs IGFuZF9vcHRhYiwgb3AwLCByZXMsIE5VTExfUlRYLCBmYWxzZSwKIAkJCSAg ICAgIE9QVEFCX0xJQl9XSURFTik7CiAJICBkb19jb21wYXJlX3J0eF9hbmRf anVtcCAodGVtLCBjb25zdDBfcnR4LCBHRSwgZmFsc2UsIG1vZGUsIE5VTExf UlRYLAotCQkJCSAgIE5VTExfUlRYLCBkb25lX2xhYmVsLCBQUk9CX1ZFUllf TElLRUxZKTsKKwkJCQkgICBOVUxMLCBkb25lX2xhYmVsLCBQUk9CX1ZFUllf TElLRUxZKTsKIAkgIGVtaXRfanVtcCAoZG9fZXJyb3IpOwogCSAgZW1pdF9s YWJlbCAoZG9faW9yX2xhYmVsKTsKIAkgIHRlbSA9IGV4cGFuZF9iaW5vcCAo bW9kZSwgaW9yX29wdGFiLCBvcDAsIHJlcywgTlVMTF9SVFgsIGZhbHNlLAog CQkJICAgICAgT1BUQUJfTElCX1dJREVOKTsKIAkgIGRvX2NvbXBhcmVfcnR4 X2FuZF9qdW1wICh0ZW0sIGNvbnN0MF9ydHgsIEdFLCBmYWxzZSwgbW9kZSwg TlVMTF9SVFgsCi0JCQkJICAgTlVMTF9SVFgsIGRvbmVfbGFiZWwsIFBST0Jf VkVSWV9MSUtFTFkpOworCQkJCSAgIE5VTEwsIGRvbmVfbGFiZWwsIFBST0Jf VkVSWV9MSUtFTFkpOwogCX0KICAgICAgIGdvdG8gZG9fZXJyb3JfbGFiZWw7 CiAgICAgfQpAQCAtNzMwLDE0ICs3MzAsMTQgQEAgZXhwYW5kX2FkZHN1Yl9v dmVyZmxvdyAobG9jYXRpb25fdCBsb2MsIHRyZWVfY29kZSBjb2RlLCB0cmVl IGxocywKICAgICAgIHJlcyA9IGV4cGFuZF9iaW5vcCAobW9kZSwgc3ViX29w dGFiLCBvcDAsIG9wMSwgTlVMTF9SVFgsIGZhbHNlLAogCQkJICBPUFRBQl9M SUJfV0lERU4pOwogICAgICAgcnR4X2NvZGVfbGFiZWwgKm9wMF9nZXVfb3Ax ID0gZ2VuX2xhYmVsX3J0eCAoKTsKLSAgICAgIGRvX2NvbXBhcmVfcnR4X2Fu ZF9qdW1wIChvcDAsIG9wMSwgR0VVLCB0cnVlLCBtb2RlLCBOVUxMX1JUWCwg TlVMTF9SVFgsCisgICAgICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAob3Aw LCBvcDEsIEdFVSwgdHJ1ZSwgbW9kZSwgTlVMTF9SVFgsIE5VTEwsCiAJCQkg ICAgICAgb3AwX2dldV9vcDEsIFBST0JfRVZFTik7CiAgICAgICBkb19jb21w YXJlX3J0eF9hbmRfanVtcCAocmVzLCBjb25zdDBfcnR4LCBMVCwgZmFsc2Us IG1vZGUsIE5VTExfUlRYLAotCQkJICAgICAgIE5VTExfUlRYLCBkb25lX2xh YmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKKwkJCSAgICAgICBOVUxMLCBkb25l X2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKICAgICAgIGVtaXRfanVtcCAo ZG9fZXJyb3IpOwogICAgICAgZW1pdF9sYWJlbCAob3AwX2dldV9vcDEpOwog ICAgICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHJlcywgY29uc3QwX3J0 eCwgR0UsIGZhbHNlLCBtb2RlLCBOVUxMX1JUWCwKLQkJCSAgICAgICBOVUxM X1JUWCwgZG9uZV9sYWJlbCwgUFJPQl9WRVJZX0xJS0VMWSk7CisJCQkgICAg ICAgTlVMTCwgZG9uZV9sYWJlbCwgUFJPQl9WRVJZX0xJS0VMWSk7CiAgICAg ICBnb3RvIGRvX2Vycm9yX2xhYmVsOwogICAgIH0KIApAQCAtODE2LDEyICs4 MTYsMTIgQEAgZXhwYW5kX2FkZHN1Yl9vdmVyZmxvdyAobG9jYXRpb25fdCBs b2MsIHRyZWVfY29kZSBjb2RlLCB0cmVlIGxocywKICAgICAgIC8qIElmIHRo ZSBvcDEgaXMgbmVnYXRpdmUsIHdlIGhhdmUgdG8gdXNlIGEgZGlmZmVyZW50 IGNoZWNrLiAgKi8KICAgICAgIGlmIChwb3NfbmVnID09IDMpCiAJZG9fY29t cGFyZV9ydHhfYW5kX2p1bXAgKG9wMSwgY29uc3QwX3J0eCwgTFQsIGZhbHNl LCBtb2RlLCBOVUxMX1JUWCwKLQkJCQkgTlVMTF9SVFgsIHN1Yl9jaGVjaywg UFJPQl9FVkVOKTsKKwkJCQkgTlVMTCwgc3ViX2NoZWNrLCBQUk9CX0VWRU4p OwogCiAgICAgICAvKiBDb21wYXJlIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJh dGlvbiB3aXRoIG9uZSBvZiB0aGUgb3BlcmFuZHMuICAqLwogICAgICAgaWYg KHBvc19uZWcgJiAxKQogCWRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChyZXMs IG9wMCwgY29kZSA9PSBQTFVTX0VYUFIgPyBHRSA6IExFLAotCQkJCSBmYWxz ZSwgbW9kZSwgTlVMTF9SVFgsIE5VTExfUlRYLCBkb25lX2xhYmVsLAorCQkJ CSBmYWxzZSwgbW9kZSwgTlVMTF9SVFgsIE5VTEwsIGRvbmVfbGFiZWwsCiAJ CQkJIFBST0JfVkVSWV9MSUtFTFkpOwogCiAgICAgICAvKiBJZiB3ZSBnZXQg aGVyZSwgd2UgaGF2ZSB0byBwcmludCB0aGUgZXJyb3IuICAqLwpAQCAtODM1 LDcgKzgzNSw3IEBAIGV4cGFuZF9hZGRzdWJfb3ZlcmZsb3cgKGxvY2F0aW9u X3QgbG9jLCB0cmVlX2NvZGUgY29kZSwgdHJlZSBsaHMsCiAgICAgICAvKiBX ZSBoYXZlIGsgPSBhICsgYiBmb3IgYiA8IDAgaGVyZS4gIGsgPD0gYSBtdXN0 IGhvbGQuICAqLwogICAgICAgaWYgKHBvc19uZWcgJiAyKQogCWRvX2NvbXBh cmVfcnR4X2FuZF9qdW1wIChyZXMsIG9wMCwgY29kZSA9PSBQTFVTX0VYUFIg PyBMRSA6IEdFLAotCQkJCSBmYWxzZSwgbW9kZSwgTlVMTF9SVFgsIE5VTExf UlRYLCBkb25lX2xhYmVsLAorCQkJCSBmYWxzZSwgbW9kZSwgTlVMTF9SVFgs IE5VTEwsIGRvbmVfbGFiZWwsCiAJCQkJIFBST0JfVkVSWV9MSUtFTFkpOwog ICAgIH0KIApAQCAtOTMxLDcgKzkzMSw3IEBAIGV4cGFuZF9uZWdfb3ZlcmZs b3cgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGxocywgdHJlZSBhcmcxLCBib29s IGlzX3Vic2FuKQogCiAgICAgICAvKiBDb21wYXJlIHRoZSBvcGVyYW5kIHdp dGggdGhlIG1vc3QgbmVnYXRpdmUgdmFsdWUuICAqLwogICAgICAgcnR4IG1p bnYgPSBleHBhbmRfbm9ybWFsIChUWVBFX01JTl9WQUxVRSAoVFJFRV9UWVBF IChhcmcxKSkpOwotICAgICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9w MSwgbWludiwgTkUsIHRydWUsIG1vZGUsIE5VTExfUlRYLCBOVUxMX1JUWCwK KyAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChvcDEsIG1pbnYsIE5F LCB0cnVlLCBtb2RlLCBOVUxMX1JUWCwgTlVMTCwKIAkJCSAgICAgICBkb25l X2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKICAgICB9CiAKQEAgLTEwNjgs MTUgKzEwNjgsMTUgQEAgZXhwYW5kX211bF9vdmVyZmxvdyAobG9jYXRpb25f dCBsb2MsIHRyZWUgbGhzLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSwKIAkgIG9w cy5sb2NhdGlvbiA9IGxvYzsKIAkgIHJlcyA9IGV4cGFuZF9leHByX3JlYWxf MiAoJm9wcywgTlVMTF9SVFgsIG1vZGUsIEVYUEFORF9OT1JNQUwpOwogCSAg ZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMSwgY29uc3QwX3J0eCwgRVEs IHRydWUsIG1vZGUsIE5VTExfUlRYLAotCQkJCSAgIE5VTExfUlRYLCBkb25l X2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKKwkJCQkgICBOVUxMLCBkb25l X2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKIAkgIGdvdG8gZG9fZXJyb3Jf bGFiZWw7CiAJY2FzZSAzOgogCSAgcnR4X2NvZGVfbGFiZWwgKmRvX21haW5f bGFiZWw7CiAJICBkb19tYWluX2xhYmVsID0gZ2VuX2xhYmVsX3J0eCAoKTsK IAkgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChvcDAsIGNvbnN0MF9ydHgs IEdFLCBmYWxzZSwgbW9kZSwgTlVMTF9SVFgsCi0JCQkJICAgTlVMTF9SVFgs IGRvX21haW5fbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOworCQkJCSAgIE5V TEwsIGRvX21haW5fbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOwogCSAgZG9f Y29tcGFyZV9ydHhfYW5kX2p1bXAgKG9wMSwgY29uc3QwX3J0eCwgRVEsIHRy dWUsIG1vZGUsIE5VTExfUlRYLAotCQkJCSAgIE5VTExfUlRYLCBkb19tYWlu X2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKKwkJCQkgICBOVUxMLCBkb19t YWluX2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKIAkgIHdyaXRlX2NvbXBs ZXhfcGFydCAodGFyZ2V0LCBjb25zdDFfcnR4LCB0cnVlKTsKIAkgIGVtaXRf bGFiZWwgKGRvX21haW5fbGFiZWwpOwogCSAgZ290byBkb19tYWluOwpAQCAt MTExMywxNSArMTExMywxNSBAQCBleHBhbmRfbXVsX292ZXJmbG93IChsb2Nh dGlvbl90IGxvYywgdHJlZSBsaHMsIHRyZWUgYXJnMCwgdHJlZSBhcmcxLAog CSAgb3BzLmxvY2F0aW9uID0gbG9jOwogCSAgcmVzID0gZXhwYW5kX2V4cHJf cmVhbF8yICgmb3BzLCBOVUxMX1JUWCwgbW9kZSwgRVhQQU5EX05PUk1BTCk7 CiAJICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAob3AwLCBjb25zdDBfcnR4 LCBFUSwgdHJ1ZSwgbW9kZSwgTlVMTF9SVFgsCi0JCQkJICAgTlVMTF9SVFgs IGRvbmVfbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOworCQkJCSAgIE5VTEws IGRvbmVfbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOwogCSAgZG9fY29tcGFy ZV9ydHhfYW5kX2p1bXAgKG9wMCwgY29uc3RtMV9ydHgsIE5FLCB0cnVlLCBt b2RlLCBOVUxMX1JUWCwKLQkJCQkgICBOVUxMX1JUWCwgZG9fZXJyb3IsIFBS T0JfVkVSWV9VTkxJS0VMWSk7CisJCQkJICAgTlVMTCwgZG9fZXJyb3IsIFBS T0JfVkVSWV9VTkxJS0VMWSk7CiAJICBpbnQgcHJlYzsKIAkgIHByZWMgPSBH RVRfTU9ERV9QUkVDSVNJT04gKG1vZGUpOwogCSAgcnR4IHNnbjsKIAkgIHNn biA9IGltbWVkX3dpZGVfaW50X2NvbnN0ICh3aTo6bWluX3ZhbHVlIChwcmVj LCBTSUdORUQpLCBtb2RlKTsKIAkgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1w IChvcDEsIHNnbiwgRVEsIHRydWUsIG1vZGUsIE5VTExfUlRYLAotCQkJCSAg IE5VTExfUlRYLCBkb25lX2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKKwkJ CQkgICBOVUxMLCBkb25lX2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKIAkg IGdvdG8gZG9fZXJyb3JfbGFiZWw7CiAJY2FzZSAzOgogCSAgLyogUmVzdCBv ZiBoYW5kbGluZyBvZiB0aGlzIGNhc2UgYWZ0ZXIgcmVzIGlzIGNvbXB1dGVk LiAgKi8KQEAgLTExNjcsNyArMTE2Nyw3IEBAIGV4cGFuZF9tdWxfb3ZlcmZs b3cgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGxocywgdHJlZSBhcmcwLCB0cmVl IGFyZzEsCiAJICAgICAgdGVtID0gZXhwYW5kX2Jpbm9wIChtb2RlLCBhbmRf b3B0YWIsIG9wMCwgb3AxLCBOVUxMX1JUWCwgZmFsc2UsCiAJCQkJICBPUFRB Ql9MSUJfV0lERU4pOwogCSAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1w ICh0ZW0sIGNvbnN0MF9ydHgsIEVRLCB0cnVlLCBtb2RlLAotCQkJCSAgICAg ICBOVUxMX1JUWCwgTlVMTF9SVFgsIGRvbmVfbGFiZWwsCisJCQkJICAgICAg IE5VTExfUlRYLCBOVUxMLCBkb25lX2xhYmVsLAogCQkJCSAgICAgICBQUk9C X1ZFUllfTElLRUxZKTsKIAkgICAgICBnb3RvIGRvX2Vycm9yX2xhYmVsOwog CSAgICB9CkBAIC0xMTg1LDggKzExODUsNyBAQCBleHBhbmRfbXVsX292ZXJm bG93IChsb2NhdGlvbl90IGxvYywgdHJlZSBsaHMsIHRyZWUgYXJnMCwgdHJl ZSBhcmcxLAogCSAgdGVtID0gZXhwYW5kX2Jpbm9wIChtb2RlLCBhbmRfb3B0 YWIsIG9wMCwgb3AxLCBOVUxMX1JUWCwgZmFsc2UsCiAJCQkgICAgICBPUFRB Ql9MSUJfV0lERU4pOwogCSAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHRl bSwgY29uc3QwX3J0eCwgR0UsIGZhbHNlLCBtb2RlLCBOVUxMX1JUWCwKLQkJ CQkgICBOVUxMX1JUWCwgYWZ0ZXJfbmVnYXRlX2xhYmVsLAotCQkJCSAgIFBS T0JfVkVSWV9MSUtFTFkpOworCQkJCSAgIE5VTEwsIGFmdGVyX25lZ2F0ZV9s YWJlbCwgUFJPQl9WRVJZX0xJS0VMWSk7CiAJICAvKiBCb3RoIGFyZ3VtZW50 cyBuZWdhdGl2ZSBoZXJlLCBuZWdhdGUgdGhlbSBhbmQgY29udGludWUgd2l0 aAogCSAgICAgbm9ybWFsIHVuc2lnbmVkIG92ZXJmbG93IGNoZWNraW5nIG11 bHRpcGxpY2F0aW9uLiAgKi8KIAkgIGVtaXRfbW92ZV9pbnNuIChvcDAsIGV4 cGFuZF91bm9wIChtb2RlLCBuZWdfb3B0YWIsIG9wMCwKQEAgLTEyMDIsMTMg KzEyMDEsMTMgQEAgZXhwYW5kX211bF9vdmVyZmxvdyAobG9jYXRpb25fdCBs b2MsIHRyZWUgbGhzLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSwKIAkgIHRlbTIg PSBleHBhbmRfYmlub3AgKG1vZGUsIHhvcl9vcHRhYiwgb3AwLCBvcDEsIE5V TExfUlRYLCBmYWxzZSwKIAkJCSAgICAgICBPUFRBQl9MSUJfV0lERU4pOwog CSAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHRlbTIsIGNvbnN0MF9ydHgs IEdFLCBmYWxzZSwgbW9kZSwgTlVMTF9SVFgsCi0JCQkJICAgTlVMTF9SVFgs IGRvX21haW5fbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOworCQkJCSAgIE5V TEwsIGRvX21haW5fbGFiZWwsIFBST0JfVkVSWV9MSUtFTFkpOwogCSAgLyog T25lIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIGhlcmUsIHRoZSBvdGhlciBwb3Np dGl2ZS4gIFRoaXMKIAkgICAgIG92ZXJmbG93cyBhbHdheXMsIHVubGVzcyBv bmUgb2YgdGhlIGFyZ3VtZW50cyBpcyAwLiAgQnV0CiAJICAgICBpZiBlLmcu IHMyIGlzIDAsIChVKSBzMSAqIDAgZG9lc24ndCBvdmVyZmxvdywgd2hhdGV2 ZXIgczEKIAkgICAgIGlzLCB0aHVzIHdlIGNhbiBrZWVwIGRvX21haW4gY29k ZSBvcmluZyBpbiBvdmVyZmxvdyBhcyBpcy4gICovCiAJICBkb19jb21wYXJl X3J0eF9hbmRfanVtcCAodGVtLCBjb25zdDBfcnR4LCBFUSwgdHJ1ZSwgbW9k ZSwgTlVMTF9SVFgsCi0JCQkJICAgTlVMTF9SVFgsIGRvX21haW5fbGFiZWws IFBST0JfVkVSWV9MSUtFTFkpOworCQkJCSAgIE5VTEwsIGRvX21haW5fbGFi ZWwsIFBST0JfVkVSWV9MSUtFTFkpOwogCSAgd3JpdGVfY29tcGxleF9wYXJ0 ICh0YXJnZXQsIGNvbnN0MV9ydHgsIHRydWUpOwogCSAgZW1pdF9sYWJlbCAo ZG9fbWFpbl9sYWJlbCk7CiAJICBnb3RvIGRvX21haW47CkBAIC0xMjc0LDcg KzEyNzMsNyBAQCBleHBhbmRfbXVsX292ZXJmbG93IChsb2NhdGlvbl90IGxv YywgdHJlZSBsaHMsIHRyZWUgYXJnMCwgdHJlZSBhcmcxLAogCSAgICAvKiBG b3IgdGhlIHVuc2lnbmVkIG11bHRpcGxpY2F0aW9uLCB0aGVyZSB3YXMgb3Zl cmZsb3cgaWYKIAkgICAgICAgSElQQVJUIGlzIG5vbi16ZXJvLiAgKi8KIAkg ICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKGhpcGFydCwgY29uc3QwX3J0 eCwgRVEsIHRydWUsIG1vZGUsCi0JCQkJICAgICBOVUxMX1JUWCwgTlVMTF9S VFgsIGRvbmVfbGFiZWwsCisJCQkJICAgICBOVUxMX1JUWCwgTlVMTCwgZG9u ZV9sYWJlbCwKIAkJCQkgICAgIFBST0JfVkVSWV9MSUtFTFkpOwogCSAgZWxz ZQogCSAgICB7CkBAIC0xMjg0LDcgKzEyODMsNyBAQCBleHBhbmRfbXVsX292 ZXJmbG93IChsb2NhdGlvbl90IGxvYywgdHJlZSBsaHMsIHRyZWUgYXJnMCwg dHJlZSBhcmcxLAogCQkgdGhlIGhpZ2ggaGFsZi4gIFRoZXJlIHdhcyBvdmVy ZmxvdyBpZgogCQkgSElQQVJUIGlzIGRpZmZlcmVudCBmcm9tIFJFUyA8IDAg PyAtMSA6IDAuICAqLwogCSAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1w IChzaWduYml0LCBoaXBhcnQsIEVRLCB0cnVlLCBtb2RlLAotCQkJCSAgICAg ICBOVUxMX1JUWCwgTlVMTF9SVFgsIGRvbmVfbGFiZWwsCisJCQkJICAgICAg IE5VTExfUlRYLCBOVUxMLCBkb25lX2xhYmVsLAogCQkJCSAgICAgICBQUk9C X1ZFUllfTElLRUxZKTsKIAkgICAgfQogCX0KQEAgLTEzNzcsMTIgKzEzNzYs MTIgQEAgZXhwYW5kX211bF9vdmVyZmxvdyAobG9jYXRpb25fdCBsb2MsIHRy ZWUgbGhzLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSwKIAogCSAgaWYgKCFvcDBf c21hbGxfcCkKIAkgICAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHNpZ25i aXQwLCBoaXBhcnQwLCBORSwgdHJ1ZSwgaG1vZGUsCi0JCQkJICAgICBOVUxM X1JUWCwgTlVMTF9SVFgsIGxhcmdlX29wMCwKKwkJCQkgICAgIE5VTExfUlRY LCBOVUxMLCBsYXJnZV9vcDAsCiAJCQkJICAgICBQUk9CX1VOTElLRUxZKTsK IAogCSAgaWYgKCFvcDFfc21hbGxfcCkKIAkgICAgZG9fY29tcGFyZV9ydHhf YW5kX2p1bXAgKHNpZ25iaXQxLCBoaXBhcnQxLCBORSwgdHJ1ZSwgaG1vZGUs Ci0JCQkJICAgICBOVUxMX1JUWCwgTlVMTF9SVFgsIHNtYWxsX29wMF9sYXJn ZV9vcDEsCisJCQkJICAgICBOVUxMX1JUWCwgTlVMTCwgc21hbGxfb3AwX2xh cmdlX29wMSwKIAkJCQkgICAgIFBST0JfVU5MSUtFTFkpOwogCiAJICAvKiBJ ZiBib3RoIG9wMCBhbmQgb3AxIGFyZSBzaWduICghdW5zKSBvciB6ZXJvICh1 bnMpIGV4dGVuZGVkIGZyb20KQEAgLTE0MjgsNyArMTQyNyw3IEBAIGV4cGFu ZF9tdWxfb3ZlcmZsb3cgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGxocywgdHJl ZSBhcmcwLCB0cmVlIGFyZzEsCiAKIAkgIGlmICghb3AxX3NtYWxsX3ApCiAJ ICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChzaWduYml0MSwgaGlwYXJ0 MSwgTkUsIHRydWUsIGhtb2RlLAotCQkJCSAgICAgTlVMTF9SVFgsIE5VTExf UlRYLCBib3RoX29wc19sYXJnZSwKKwkJCQkgICAgIE5VTExfUlRYLCBOVUxM LCBib3RoX29wc19sYXJnZSwKIAkJCQkgICAgIFBST0JfVU5MSUtFTFkpOwog CiAJICAvKiBJZiBvcDEgaXMgc2lnbiAoIXVucykgb3IgemVybyAodW5zKSBl eHRlbmRlZCBmcm9tIGhtb2RlIHRvIG1vZGUsCkBAIC0xNDY1LDcgKzE0NjQs NyBAQCBleHBhbmRfbXVsX292ZXJmbG93IChsb2NhdGlvbl90IGxvYywgdHJl ZSBsaHMsIHRyZWUgYXJnMCwgdHJlZSBhcmcxLAogCQllbWl0X2p1bXAgKGFm dGVyX2hpcGFydF9uZWcpOwogCSAgICAgIGVsc2UgaWYgKGxhcmdlcl9zaWdu ICE9IC0xKQogCQlkb19jb21wYXJlX3J0eF9hbmRfanVtcCAoaGlwYXJ0LCBj b25zdDBfcnR4LCBHRSwgZmFsc2UsIGhtb2RlLAotCQkJCQkgTlVMTF9SVFgs IE5VTExfUlRYLCBhZnRlcl9oaXBhcnRfbmVnLAorCQkJCQkgTlVMTF9SVFgs IE5VTEwsIGFmdGVyX2hpcGFydF9uZWcsCiAJCQkJCSBQUk9CX0VWRU4pOwog CiAJICAgICAgdGVtID0gY29udmVydF9tb2RlcyAobW9kZSwgaG1vZGUsIGxv cGFydCwgMSk7CkBAIC0xNDgxLDcgKzE0ODAsNyBAQCBleHBhbmRfbXVsX292 ZXJmbG93IChsb2NhdGlvbl90IGxvYywgdHJlZSBsaHMsIHRyZWUgYXJnMCwg dHJlZSBhcmcxLAogCQllbWl0X2p1bXAgKGFmdGVyX2xvcGFydF9uZWcpOwog CSAgICAgIGVsc2UgaWYgKHNtYWxsZXJfc2lnbiAhPSAtMSkKIAkJZG9fY29t cGFyZV9ydHhfYW5kX2p1bXAgKGxvcGFydCwgY29uc3QwX3J0eCwgR0UsIGZh bHNlLCBobW9kZSwKLQkJCQkJIE5VTExfUlRYLCBOVUxMX1JUWCwgYWZ0ZXJf bG9wYXJ0X25lZywKKwkJCQkJIE5VTExfUlRYLCBOVUxMLCBhZnRlcl9sb3Bh cnRfbmVnLAogCQkJCQkgUFJPQl9FVkVOKTsKIAogCSAgICAgIHRlbSA9IGV4 cGFuZF9zaW1wbGVfYmlub3AgKG1vZGUsIE1JTlVTLCBsb3hoaSwgbGFyZ2Vy LCBOVUxMX1JUWCwKQEAgLTE1MTAsNyArMTUwOSw3IEBAIGV4cGFuZF9tdWxf b3ZlcmZsb3cgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGxocywgdHJlZSBhcmcw LCB0cmVlIGFyZzEsCiAJCQkJCSBocHJlYyAtIDEsIE5VTExfUlRYLCAwKTsK IAogCSAgZG9fY29tcGFyZV9ydHhfYW5kX2p1bXAgKHNpZ25iaXRsb3hoaSwg aGlwYXJ0bG94aGksIE5FLCB0cnVlLCBobW9kZSwKLQkJCQkgICBOVUxMX1JU WCwgTlVMTF9SVFgsIGRvX292ZXJmbG93LAorCQkJCSAgIE5VTExfUlRYLCBO VUxMLCBkb19vdmVyZmxvdywKIAkJCQkgICBQUk9CX1ZFUllfVU5MSUtFTFkp OwogCiAJICAvKiByZXMgPSAobG94aGkgPDwgKGJpdHNpemUgLyAyKSkgfCAo aG1vZGUpIGxvMHhsbzE7ICAqLwpAQCAtMTU0Niw3ICsxNTQ1LDcgQEAgZXhw YW5kX211bF9vdmVyZmxvdyAobG9jYXRpb25fdCBsb2MsIHRyZWUgbGhzLCB0 cmVlIGFyZzAsIHRyZWUgYXJnMSwKIAkJICB0ZW0gPSBleHBhbmRfc2ltcGxl X2Jpbm9wIChobW9kZSwgUExVUywgaGlwYXJ0MCwgY29uc3QxX3J0eCwKIAkJ CQkJICAgICBOVUxMX1JUWCwgMSwgT1BUQUJfRElSRUNUKTsKIAkJICBkb19j b21wYXJlX3J0eF9hbmRfanVtcCAodGVtLCBjb25zdDFfcnR4LCBHVFUsIHRy dWUsIGhtb2RlLAotCQkJCQkgICBOVUxMX1JUWCwgTlVMTF9SVFgsIGRvX2Vy cm9yLAorCQkJCQkgICBOVUxMX1JUWCwgTlVMTCwgZG9fZXJyb3IsCiAJCQkJ CSAgIFBST0JfVkVSWV9VTkxJS0VMWSk7CiAJCX0KIApAQCAtMTU1NSw3ICsx NTU0LDcgQEAgZXhwYW5kX211bF9vdmVyZmxvdyAobG9jYXRpb25fdCBsb2Ms IHRyZWUgbGhzLCB0cmVlIGFyZzAsIHRyZWUgYXJnMSwKIAkJICB0ZW0gPSBl eHBhbmRfc2ltcGxlX2Jpbm9wIChobW9kZSwgUExVUywgaGlwYXJ0MSwgY29u c3QxX3J0eCwKIAkJCQkJICAgICBOVUxMX1JUWCwgMSwgT1BUQUJfRElSRUNU KTsKIAkJICBkb19jb21wYXJlX3J0eF9hbmRfanVtcCAodGVtLCBjb25zdDFf cnR4LCBHVFUsIHRydWUsIGhtb2RlLAotCQkJCQkgICBOVUxMX1JUWCwgTlVM TF9SVFgsIGRvX2Vycm9yLAorCQkJCQkgICBOVUxMX1JUWCwgTlVMTCwgZG9f ZXJyb3IsCiAJCQkJCSAgIFBST0JfVkVSWV9VTkxJS0VMWSk7CiAJCX0KIApA QCAtMTU2NiwxOCArMTU2NSwxOCBAQCBleHBhbmRfbXVsX292ZXJmbG93IChs b2NhdGlvbl90IGxvYywgdHJlZSBsaHMsIHRyZWUgYXJnMCwgdHJlZSBhcmcx LAogCQllbWl0X2p1bXAgKGhpcGFydF9kaWZmZXJlbnQpOwogCSAgICAgIGVs c2UgaWYgKG9wMF9zaWduID09IDEgfHwgb3AxX3NpZ24gPT0gMSkKIAkJZG9f Y29tcGFyZV9ydHhfYW5kX2p1bXAgKGhpcGFydDAsIGhpcGFydDEsIE5FLCB0 cnVlLCBobW9kZSwKLQkJCQkJIE5VTExfUlRYLCBOVUxMX1JUWCwgaGlwYXJ0 X2RpZmZlcmVudCwKKwkJCQkJIE5VTExfUlRYLCBOVUxMLCBoaXBhcnRfZGlm ZmVyZW50LAogCQkJCQkgUFJPQl9FVkVOKTsKIAogCSAgICAgIGRvX2NvbXBh cmVfcnR4X2FuZF9qdW1wIChyZXMsIGNvbnN0MF9ydHgsIExULCBmYWxzZSwg bW9kZSwKLQkJCQkgICAgICAgTlVMTF9SVFgsIE5VTExfUlRYLCBkb19lcnJv ciwKKwkJCQkgICAgICAgTlVMTF9SVFgsIE5VTEwsIGRvX2Vycm9yLAogCQkJ CSAgICAgICBQUk9CX1ZFUllfVU5MSUtFTFkpOwogCSAgICAgIGVtaXRfanVt cCAoZG9uZV9sYWJlbCk7CiAKIAkgICAgICBlbWl0X2xhYmVsIChoaXBhcnRf ZGlmZmVyZW50KTsKIAogCSAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1w IChyZXMsIGNvbnN0MF9ydHgsIEdFLCBmYWxzZSwgbW9kZSwKLQkJCQkgICAg ICAgTlVMTF9SVFgsIE5VTExfUlRYLCBkb19lcnJvciwKKwkJCQkgICAgICAg TlVMTF9SVFgsIE5VTEwsIGRvX2Vycm9yLAogCQkJCSAgICAgICBQUk9CX1ZF UllfVU5MSUtFTFkpOwogCSAgICAgIGVtaXRfanVtcCAoZG9uZV9sYWJlbCk7 CiAJICAgIH0KQEAgLTE2MjMsNyArMTYyMiw3IEBAIGV4cGFuZF9tdWxfb3Zl cmZsb3cgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGxocywgdHJlZSBhcmcwLCB0 cmVlIGFyZzEsCiAgICAgewogICAgICAgcnR4X2NvZGVfbGFiZWwgKmFsbF9k b25lX2xhYmVsID0gZ2VuX2xhYmVsX3J0eCAoKTsKICAgICAgIGRvX2NvbXBh cmVfcnR4X2FuZF9qdW1wIChyZXMsIGNvbnN0MF9ydHgsIEdFLCBmYWxzZSwg bW9kZSwgTlVMTF9SVFgsCi0JCQkgICAgICAgTlVMTF9SVFgsIGFsbF9kb25l X2xhYmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKKwkJCSAgICAgICBOVUxMLCBh bGxfZG9uZV9sYWJlbCwgUFJPQl9WRVJZX0xJS0VMWSk7CiAgICAgICB3cml0 ZV9jb21wbGV4X3BhcnQgKHRhcmdldCwgY29uc3QxX3J0eCwgdHJ1ZSk7CiAg ICAgICBlbWl0X2xhYmVsIChhbGxfZG9uZV9sYWJlbCk7CiAgICAgfQpAQCAt MTYzNCwxMyArMTYzMywxMyBAQCBleHBhbmRfbXVsX292ZXJmbG93IChsb2Nh dGlvbl90IGxvYywgdHJlZSBsaHMsIHRyZWUgYXJnMCwgdHJlZSBhcmcxLAog ICAgICAgcnR4X2NvZGVfbGFiZWwgKmFsbF9kb25lX2xhYmVsID0gZ2VuX2xh YmVsX3J0eCAoKTsKICAgICAgIHJ0eF9jb2RlX2xhYmVsICpzZXRfbm9vdmYg PSBnZW5fbGFiZWxfcnR4ICgpOwogICAgICAgZG9fY29tcGFyZV9ydHhfYW5k X2p1bXAgKG9wMSwgY29uc3QwX3J0eCwgR0UsIGZhbHNlLCBtb2RlLCBOVUxM X1JUWCwKLQkJCSAgICAgICBOVUxMX1JUWCwgYWxsX2RvbmVfbGFiZWwsIFBS T0JfVkVSWV9MSUtFTFkpOworCQkJICAgICAgIE5VTEwsIGFsbF9kb25lX2xh YmVsLCBQUk9CX1ZFUllfTElLRUxZKTsKICAgICAgIHdyaXRlX2NvbXBsZXhf cGFydCAodGFyZ2V0LCBjb25zdDFfcnR4LCB0cnVlKTsKICAgICAgIGRvX2Nv bXBhcmVfcnR4X2FuZF9qdW1wIChvcDAsIGNvbnN0MF9ydHgsIEVRLCB0cnVl LCBtb2RlLCBOVUxMX1JUWCwKLQkJCSAgICAgICBOVUxMX1JUWCwgc2V0X25v b3ZmLCBQUk9CX1ZFUllfTElLRUxZKTsKKwkJCSAgICAgICBOVUxMLCBzZXRf bm9vdmYsIFBST0JfVkVSWV9MSUtFTFkpOwogICAgICAgZG9fY29tcGFyZV9y dHhfYW5kX2p1bXAgKG9wMCwgY29uc3RtMV9ydHgsIE5FLCB0cnVlLCBtb2Rl LCBOVUxMX1JUWCwKLQkJCSAgICAgICBOVUxMX1JUWCwgYWxsX2RvbmVfbGFi ZWwsIFBST0JfVkVSWV9VTkxJS0VMWSk7Ci0gICAgICBkb19jb21wYXJlX3J0 eF9hbmRfanVtcCAob3AxLCByZXMsIE5FLCB0cnVlLCBtb2RlLCBOVUxMX1JU WCwgTlVMTF9SVFgsCisJCQkgICAgICAgTlVMTCwgYWxsX2RvbmVfbGFiZWws IFBST0JfVkVSWV9VTkxJS0VMWSk7CisgICAgICBkb19jb21wYXJlX3J0eF9h bmRfanVtcCAob3AxLCByZXMsIE5FLCB0cnVlLCBtb2RlLCBOVUxMX1JUWCwg TlVMTCwKIAkJCSAgICAgICBhbGxfZG9uZV9sYWJlbCwgUFJPQl9WRVJZX1VO TElLRUxZKTsKICAgICAgIGVtaXRfbGFiZWwgKHNldF9ub292Zik7CiAgICAg ICB3cml0ZV9jb21wbGV4X3BhcnQgKHRhcmdldCwgY29uc3QwX3J0eCwgdHJ1 ZSk7CmRpZmYgLS1naXQgYS9nY2MvaXJhLmMgYi9nY2MvaXJhLmMKaW5kZXgg ZWEyYjY5Zi4uYmRmODFlNiAxMDA2NDQKLS0tIGEvZ2NjL2lyYS5jCisrKyBi L2djYy9pcmEuYwpAQCAtNDk5NCw3ICs0OTk0LDcgQEAgc3BsaXRfbGl2ZV9y YW5nZXNfZm9yX3Nocmlua193cmFwICh2b2lkKQogCiAgICAgICBpZiAobmV3 cmVnKQogCXsKLQkgIHJ0eCBuZXdfbW92ZSA9IGdlbl9tb3ZlX2luc24gKG5l d3JlZywgZGVzdCk7CisJICBydHhfaW5zbiAqbmV3X21vdmUgPSBnZW5fbW92 ZV9pbnNuIChuZXdyZWcsIGRlc3QpOwogCSAgZW1pdF9pbnNuX2FmdGVyIChu ZXdfbW92ZSwgYmJfbm90ZSAoY2FsbF9kb20pKTsKIAkgIGlmIChkdW1wX2Zp bGUpCiAJICAgIHsKZGlmZiAtLWdpdCBhL2djYy9pcy1hLmggYi9nY2MvaXMt YS5oCmluZGV4IDU4OTE3ZWIuLjRmYjlkZGUgMTAwNjQ0Ci0tLSBhL2djYy9p cy1hLmgKKysrIGIvZ2NjL2lzLWEuaApAQCAtNDYsNiArNDYsMTEgQEAgVFlQ RSBhc19hIDxUWVBFPiAocG9pbnRlcikKIAogICAgICAgZG9fc29tZXRoaW5n X3dpdGggKGFzX2EgPGNncmFwaF9ub2RlICo+ICpwdHIpOwogCitUWVBFIGFz c2VydF9hc19hIDxUWVBFPiAocG9pbnRlcikKKworICAgIExpa2UgYXNfYSA8 VFlQRT4gKHBvaW50ZXIpLCBidXQgdXNlcyBhc3NlcnRpb24sIHdoaWNoIGlz IGVuYWJsZWQgZXZlbiBpbgorICAgIG5vbi1jaGVja2luZyAocmVsZWFzZSkg YnVpbGQuCisKIFRZUEUgc2FmZV9hc19hIDxUWVBFPiAocG9pbnRlcikKIAog ICAgIExpa2UgYXNfYSA8VFlQRT4gKHBvaW50ZXIpLCBidXQgd2hlcmUgcG9p bnRlciBjb3VsZCBiZSBOVUxMLiAgVGhpcwpAQCAtMTkzLDYgKzE5OCwxNyBA QCBhc19hIChVICpwKQogICByZXR1cm4gaXNfYV9oZWxwZXIgPFQ+OjpjYXN0 IChwKTsKIH0KIAorLyogU2FtZSBhcyBhYm92ZSwgYnV0IGNoZWNrcyB0aGUg Y29uZGl0aW9uIGV2ZW4gaW4gcmVsZWFzZSBidWlsZC4gICovCisKK3RlbXBs YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIFQKK2Fzc2Vy dF9hc19hIChVICpwKQoreworICBnY2NfYXNzZXJ0IChpc19hIDxUPiAocCkp OworICByZXR1cm4gaXNfYV9oZWxwZXIgPFQ+OjpjYXN0IChwKTsKK30KKwor CiAvKiBTaW1pbGFyIHRvIGFzX2E8PiwgYnV0IHdoZXJlIHRoZSBwb2ludGVy IGNhbiBiZSBOVUxMLCBldmVuIGlmCiAgICBpc19hX2hlbHBlcjxUPiBkb2Vz bid0IGNoZWNrIGZvciBOVUxMLiAgKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL2p1 bXAuYyBiL2djYy9qdW1wLmMKaW5kZXggMzRiM2I3Yi4uMGNjMGJlNSAxMDA2 NDQKLS0tIGEvZ2NjL2p1bXAuYworKysgYi9nY2MvanVtcC5jCkBAIC0xNTgz LDcgKzE1ODMsNyBAQCByZWRpcmVjdF9qdW1wXzEgKHJ0eCBqdW1wLCBydHgg bmxhYmVsKQogICAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgd2hlbiB0cnlpbmcg dG8gcHJvZHVjZSByZXR1cm4gaW5zbnMpLiAgKi8KIAogaW50Ci1yZWRpcmVj dF9qdW1wIChydHgganVtcCwgcnR4IG5sYWJlbCwgaW50IGRlbGV0ZV91bnVz ZWQpCityZWRpcmVjdF9qdW1wIChydHhfanVtcF9pbnNuICpqdW1wLCBydHgg bmxhYmVsLCBpbnQgZGVsZXRlX3VudXNlZCkKIHsKICAgcnR4IG9sYWJlbCA9 IEpVTVBfTEFCRUwgKGp1bXApOwogCkBAIC0xNjE1LDcgKzE2MTUsNyBAQCBy ZWRpcmVjdF9qdW1wIChydHgganVtcCwgcnR4IG5sYWJlbCwgaW50IGRlbGV0 ZV91bnVzZWQpCiAgICBJZiBERUxFVEVfVU5VU0VEIGlzIHBvc2l0aXZlLCBk ZWxldGUgcmVsYXRlZCBpbnNuIHRvIE9MQUJFTCBpZiBpdHMgcmVmCiAgICBj b3VudCBoYXMgZHJvcHBlZCB0byB6ZXJvLiAgKi8KIHZvaWQKLXJlZGlyZWN0 X2p1bXBfMiAocnR4IGp1bXAsIHJ0eCBvbGFiZWwsIHJ0eCBubGFiZWwsIGlu dCBkZWxldGVfdW51c2VkLAorcmVkaXJlY3RfanVtcF8yIChydHhfanVtcF9p bnNuICpqdW1wLCBydHggb2xhYmVsLCBydHggbmxhYmVsLCBpbnQgZGVsZXRl X3VudXNlZCwKIAkJIGludCBpbnZlcnQpCiB7CiAgIHJ0eCBub3RlOwpAQCAt MTcwMyw3ICsxNzAzLDcgQEAgaW52ZXJ0X2V4cF8xIChydHggeCwgcnR4IGlu c24pCiAgICBpbnZlcnNpb24gYW5kIHJlZGlyZWN0aW9uLiAgKi8KIAogaW50 Ci1pbnZlcnRfanVtcF8xIChydHhfaW5zbiAqanVtcCwgcnR4IG5sYWJlbCkK K2ludmVydF9qdW1wXzEgKHJ0eF9qdW1wX2luc24gKmp1bXAsIHJ0eCBubGFi ZWwpCiB7CiAgIHJ0eCB4ID0gcGNfc2V0IChqdW1wKTsKICAgaW50IG9jaGFu Z2VzOwpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgaW52ZXJ0X2p1bXBfMSAocnR4 X2luc24gKmp1bXAsIHJ0eCBubGFiZWwpCiAgICBOTEFCRUwgaW5zdGVhZCBv ZiB3aGVyZSBpdCBqdW1wcyBub3cuICBSZXR1cm4gdHJ1ZSBpZiBzdWNjZXNz ZnVsLiAgKi8KIAogaW50Ci1pbnZlcnRfanVtcCAocnR4X2luc24gKmp1bXAs IHJ0eCBubGFiZWwsIGludCBkZWxldGVfdW51c2VkKQoraW52ZXJ0X2p1bXAg KHJ0eF9qdW1wX2luc24gKmp1bXAsIHJ0eCBubGFiZWwsIGludCBkZWxldGVf dW51c2VkKQogewogICBydHggb2xhYmVsID0gSlVNUF9MQUJFTCAoanVtcCk7 CiAKZGlmZiAtLWdpdCBhL2djYy9sb29wLXVucm9sbC5jIGIvZ2NjL2xvb3At dW5yb2xsLmMKaW5kZXggMmJlZmI2MS4uMmYzZmYzNSAxMDA2NDQKLS0tIGEv Z2NjL2xvb3AtdW5yb2xsLmMKKysrIGIvZ2NjL2xvb3AtdW5yb2xsLmMKQEAg LTc5NCwxMCArNzk0LDExIEBAIHNwbGl0X2VkZ2VfYW5kX2luc2VydCAoZWRn ZSBlLCBydHhfaW5zbiAqaW5zbnMpCiAgICBpbiBvcmRlciB0byBjcmVhdGUg YSBqdW1wLiAgKi8KIAogc3RhdGljIHJ0eF9pbnNuICoKLWNvbXBhcmVfYW5k X2p1bXBfc2VxIChydHggb3AwLCBydHggb3AxLCBlbnVtIHJ0eF9jb2RlIGNv bXAsIHJ0eCBsYWJlbCwgaW50IHByb2IsCi0JCSAgICAgIHJ0eF9pbnNuICpj aW5zbikKK2NvbXBhcmVfYW5kX2p1bXBfc2VxIChydHggb3AwLCBydHggb3Ax LCBlbnVtIHJ0eF9jb2RlIGNvbXAsCisJCSAgICAgIHJ0eF9jb2RlX2xhYmVs ICpsYWJlbCwgaW50IHByb2IsIHJ0eF9pbnNuICpjaW5zbikKIHsKLSAgcnR4 X2luc24gKnNlcSwgKmp1bXA7CisgIHJ0eF9pbnNuICpzZXE7CisgIHJ0eF9q dW1wX2luc24gKmp1bXA7CiAgIHJ0eCBjb25kOwogICBtYWNoaW5lX21vZGUg bW9kZTsKIApAQCAtODE2LDggKzgxNyw3IEBAIGNvbXBhcmVfYW5kX2p1bXBf c2VxIChydHggb3AwLCBydHggb3AxLCBlbnVtIHJ0eF9jb2RlIGNvbXAsIHJ0 eCBsYWJlbCwgaW50IHByb2IsCiAgICAgICBnY2NfYXNzZXJ0IChydHhfZXF1 YWxfcCAob3AwLCBYRVhQIChjb25kLCAwKSkpOwogICAgICAgZ2NjX2Fzc2Vy dCAocnR4X2VxdWFsX3AgKG9wMSwgWEVYUCAoY29uZCwgMSkpKTsKICAgICAg IGVtaXRfanVtcF9pbnNuIChjb3B5X2luc24gKFBBVFRFUk4gKGNpbnNuKSkp OwotICAgICAganVtcCA9IGdldF9sYXN0X2luc24gKCk7Ci0gICAgICBnY2Nf YXNzZXJ0IChKVU1QX1AgKGp1bXApKTsKKyAgICAgIGp1bXAgPSBhc3NlcnRf YXNfYSA8cnR4X2p1bXBfaW5zbiAqPiAoZ2V0X2xhc3RfaW5zbiAoKSk7CiAg ICAgICBKVU1QX0xBQkVMIChqdW1wKSA9IEpVTVBfTEFCRUwgKGNpbnNuKTsK ICAgICAgIExBQkVMX05VU0VTIChKVU1QX0xBQkVMIChqdW1wKSkrKzsKICAg ICAgIHJlZGlyZWN0X2p1bXAgKGp1bXAsIGxhYmVsLCAwKTsKQEAgLTgyOSw5 ICs4MjksOCBAQCBjb21wYXJlX2FuZF9qdW1wX3NlcSAocnR4IG9wMCwgcnR4 IG9wMSwgZW51bSBydHhfY29kZSBjb21wLCBydHggbGFiZWwsIGludCBwcm9i LAogICAgICAgb3AwID0gZm9yY2Vfb3BlcmFuZCAob3AwLCBOVUxMX1JUWCk7 CiAgICAgICBvcDEgPSBmb3JjZV9vcGVyYW5kIChvcDEsIE5VTExfUlRYKTsK ICAgICAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChvcDAsIG9wMSwgY29t cCwgMCwKLQkJCSAgICAgICBtb2RlLCBOVUxMX1JUWCwgTlVMTF9SVFgsIGxh YmVsLCAtMSk7Ci0gICAgICBqdW1wID0gZ2V0X2xhc3RfaW5zbiAoKTsKLSAg ICAgIGdjY19hc3NlcnQgKEpVTVBfUCAoanVtcCkpOworCQkJICAgICAgIG1v ZGUsIE5VTExfUlRYLCBOVUxMLCBsYWJlbCwgLTEpOworICAgICAganVtcCA9 IGFzc2VydF9hc19hIDxydHhfanVtcF9pbnNuICo+IChnZXRfbGFzdF9pbnNu ICgpKTsKICAgICAgIEpVTVBfTEFCRUwgKGp1bXApID0gbGFiZWw7CiAgICAg ICBMQUJFTF9OVVNFUyAobGFiZWwpKys7CiAgICAgfQpkaWZmIC0tZ2l0IGEv Z2NjL2xyYS1jb25zdHJhaW50cy5jIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5j CmluZGV4IDU3ZDczMWEuLmRiNDc2NWYgMTAwNjQ0Ci0tLSBhL2djYy9scmEt Y29uc3RyYWludHMuYworKysgYi9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKQEAg LTEwNjAsOSArMTA2MCw4IEBAIGVtaXRfc3BpbGxfbW92ZSAoYm9vbCB0b19w LCBydHggbWVtX3BzZXVkbywgcnR4IHZhbCkKIAkgIExSQV9TVUJSRUdfUCAo bWVtX3BzZXVkbykgPSAxOwogCX0KICAgICB9Ci0gIHJldHVybiBhc19hIDxy dHhfaW5zbiAqPiAodG9fcAotCQkJICAgID8gZ2VuX21vdmVfaW5zbiAobWVt X3BzZXVkbywgdmFsKQotCQkJICAgIDogZ2VuX21vdmVfaW5zbiAodmFsLCBt ZW1fcHNldWRvKSk7CisgIHJldHVybiB0b19wID8gZ2VuX21vdmVfaW5zbiAo bWVtX3BzZXVkbywgdmFsKQorCSAgICAgIDogZ2VuX21vdmVfaW5zbiAodmFs LCBtZW1fcHNldWRvKTsKIH0KIAogLyogUHJvY2VzcyBhIHNwZWNpYWwgY2Fz ZSBpbnNuIChyZWdpc3RlciBtb3ZlKSwgcmV0dXJuIHRydWUgaWYgd2UKQEAg LTQ1MDEsNiArNDUwMCwxMDcgQEAgc3RhdGljIGludCBjYWxsc19udW07CiAg ICBVU0FHRV9JTlNOUy4JICovCiBzdGF0aWMgaW50IGN1cnJfdXNhZ2VfaW5z bnNfY2hlY2s7CiAKK25hbWVzcGFjZQoreworCitjbGFzcyBydHhfdXNhZ2Vf bGlzdCBHVFkoKCkpIDogcHVibGljIHJ0eF9kZWYKK3sKK3B1YmxpYzoKKyAg LyogVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGVsZW1lbnQgaW4gYSBzaW5n bHktbGlua2VkIGxpc3QsIHdoaWNoOgorICAgICAxLiBFbmRzIHdpdGggbm9u LWRlYnVnIElOU04KKyAgICAgMi4gTWF5IGNvbnRhaW4gc2V2ZXJhbCBJTlNO X0xJU1Qgbm9kZXMgd2l0aCBERUJVR19JTlNOcyBhdHRhY2hlZCB0byB0aGVt CisKKyAgICAgSS5lLjogICBJTlNOX0xJU1QtLT4gSU5TTl9MSVNULS0+Li4t LT4gSU5TTgorICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgICAg ICAgICAgICBERUJVR19JTlNOICAgREVCVUdfSU5TTgorCisgICBTZWUgc3Ry dWN0IHVzYWdlX2luc25zIGZvciBkZXNjcmlwdGlvbiBvZiBob3cgaXQgaXMg dXNlZC4gICovCisKKyAgLyogR2V0IG5leHQgbm9kZSBvZiB0aGUgbGlzdC4g ICovCisgIHJ0eF91c2FnZV9saXN0ICpuZXh0ICgpIGNvbnN0OworCisgIC8q IEdldCB0aGUgY3VycmVudCBpbnN0cnVjdGlvbi4gICovCisgIHJ0eF9pbnNu ICppbnNuICgpOworCisgIC8qIENoZWNrLCBpZiBjdXJyZW50IElOU04gaXMg ZGVidWcgaW5mby4gICovCisgIGJvb2wgZGVidWdfcCAoKSBjb25zdDsKKwor ICAvKiBBZGQgZGVidWcgaW5mb3JtYXRpb24gdG8gdGhlIGNoYWluLiAgKi8K KyAgcnR4X3VzYWdlX2xpc3QgKnB1c2hfZnJvbnQgKHJ0eF9kZWJ1Z19pbnNu ICpkZWJ1Z19pbnNuKTsKK307CisKKy8qIElmIGN1cnJlbnQgbm9kZSBpcyBh biBJTlNOIHJldHVybiBpdC4gIE90aGVyd2lzZSBpdCBhcyBhbiBJTlNOX0xJ U1Qgbm9kZSwKKyAgIGluIHRoaXMgY2FzZSByZXR1cm4gdGhlIGF0dGFjaGVk IElOU04uICAqLworCitydHhfaW5zbiAqCitydHhfdXNhZ2VfbGlzdDo6aW5z biAoKQoreworICBpZiAocnR4X2luc24gKmFzX2luc24gPSBkeW5fY2FzdCA8 cnR4X2luc24gKj4gKHRoaXMpKQorICAgIHJldHVybiBhc19pbnNuOworICBy ZXR1cm4gc2FmZV9hc19hIDxydHhfZGVidWdfaW5zbiAqPiAoWEVYUCAodGhp cywgMCkpOworfQorCisvKiBHZXQgbmV4dCBub2RlLiAgKi8KKworcnR4X3Vz YWdlX2xpc3QgKgorcnR4X3VzYWdlX2xpc3Q6Om5leHQgKCkgY29uc3QKK3sK KyAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3QgPHJ0eF91c2FnZV9saXN0ICo+ IChYRVhQICh0aGlzLCAxKSk7Cit9CisKKy8qIENoZWNrLCBpZiBjdXJyZW50 IElOU04gaXMgZGVidWcgaW5mby4gICovCisKK2Jvb2wKK3J0eF91c2FnZV9s aXN0OjpkZWJ1Z19wICgpIGNvbnN0Cit7CisgIHJldHVybiBpc19hIDxjb25z dCBydHhfaW5zbl9saXN0ICo+ICh0aGlzKTsKK30KKworLyogQWRkIGRlYnVn IGluZm9ybWF0aW9uIHRvIHRoZSBjaGFpbi4gICovCisKK3J0eF91c2FnZV9s aXN0ICoKK3J0eF91c2FnZV9saXN0OjpwdXNoX2Zyb250IChydHhfZGVidWdf aW5zbiAqZGVidWdfaW5zbikKK3sKKyAgLyogPz8/IE1heWJlIGl0IHdvdWxk IGJlIGJldHRlciB0byBzdG9yZSBERUJVR19JTlNOcyBpbiBhIHNlcGFyYXRl CisgICAgIGhvbW9nZW5lb3VzIGxpc3QgKG9yIHZlYykgYW5kIHVzZSBhbm90 aGVyIHBvaW50ZXIgZm9yIGFjdHVhbCBJTlNOPworICAgICBUaGVuIHdlIHdv bid0IGhhdmUgdG8gdHJhdmVyc2UgdGhlIGxpc3QgYW5kIHNvbWUgY2hlY2tz IHdpbGwgYWxzbworICAgICBiZWNvbWUgc2ltcGxlci4gICovCisgIHJldHVy biByZWludGVycHJldF9jYXN0IDxydHhfdXNhZ2VfbGlzdCAqPgorICAgICAg ICAgICAgICAgIChnZW5fcnR4X0lOU05fTElTVCAoVk9JRG1vZGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbnNuLCB0 aGlzKSk7Cit9CisKK30gLy8gYW5vbiBuYW1lc3BhY2UKKworLyogSGVscGVy cyBmb3IgYXMtYSBjYXN0cy4gICovCisKK3RlbXBsYXRlIDw+Cit0ZW1wbGF0 ZSA8PgoraW5saW5lIGJvb2wKK2lzX2FfaGVscGVyIDxydHhfaW5zbl9saXN0 ICo+Ojp0ZXN0IChydHhfdXNhZ2VfbGlzdCAqbGlzdCkKK3sKKyAgcmV0dXJu IGxpc3QtPmNvZGUgPT0gSU5TTl9MSVNUOworfQorCit0ZW1wbGF0ZSA8Pgor dGVtcGxhdGUgPD4KK2lubGluZSBib29sCitpc19hX2hlbHBlciA8Y29uc3Qg cnR4X2luc25fbGlzdCAqPjo6dGVzdCAoY29uc3QgcnR4X3VzYWdlX2xpc3Qg Kmxpc3QpCit7CisgIHJldHVybiBsaXN0LT5jb2RlID09IElOU05fTElTVDsK K30KKworLyogcnR4X3VzYWdlX2xpc3QgaXMgZWl0aGVyIGFuIElOU05fTElT VCBub2RlIG9yIGFuIElOU04gKG5vIG90aGVyCisgICBvcHRpb25zKS4gIFRo ZXJlZm9yZSwgdGhpcyBjaGVjayBpcyB2YWxpZC4gICovCisKK3RlbXBsYXRl IDw+Cit0ZW1wbGF0ZSA8PgoraW5saW5lIGJvb2wKK2lzX2FfaGVscGVyIDxy dHhfaW5zbiAqPjo6dGVzdCAocnR4X3VzYWdlX2xpc3QgKmxpc3QpCit7Cisg IHJldHVybiBsaXN0LT5jb2RlICE9IElOU05fTElTVDsKK30KKwogLyogSW5m byBhYm91dCBsYXN0IHVzYWdlIG9mIHJlZ2lzdGVycyBpbiBFQkIgdG8gZG8g aW5oZXJpdGFuY2Uvc3BsaXQKICAgIHRyYW5zZm9ybWF0aW9uLiAgSW5oZXJp dGFuY2UgdHJhbnNmb3JtYXRpb24gaXMgZG9uZSBmcm9tIGEgc3BpbGxlZAog ICAgcHNldWRvIGFuZCBzcGxpdCB0cmFuc2Zvcm1hdGlvbnMgZnJvbSBhIGhh cmQgcmVnaXN0ZXIgb3IgYSBwc2V1ZG8KQEAgLTQ1MjYsMTcgKzQ2MjYsMTcg QEAgc3RydWN0IHVzYWdlX2luc25zCiAgICAgIHRvIHVzZSB0aGUgb3JpZ2lu YWwgcmVnIHZhbHVlIGFnYWluIGluIHRoZSBuZXh0IGluc25zIHdlIGNhbiB0 cnkKICAgICAgdG8gdXNlIHRoZSB2YWx1ZSBpbiBhIGhhcmQgcmVnaXN0ZXIg ZnJvbSBhIHJlbG9hZCBpbnNuIG9mIHRoZQogICAgICBjdXJyZW50IGluc24u ICAqLwotICBydHggaW5zbnM7CisgIHJ0eF91c2FnZV9saXN0ICppbnNuczsK IH07CiAKIC8qIE1hcDogcmVnbm8gLT4gY29ycmVzcG9uZGluZyBwc2V1ZG8g dXNhZ2UgaW5zbnMuICAqLwogc3RhdGljIHN0cnVjdCB1c2FnZV9pbnNucyAq dXNhZ2VfaW5zbnM7CiAKIHN0YXRpYyB2b2lkCi1zZXR1cF9uZXh0X3VzYWdl X2luc24gKGludCByZWdubywgcnR4IGluc24sIGludCByZWxvYWRzX251bSwg Ym9vbCBhZnRlcl9wKQorc2V0dXBfbmV4dF91c2FnZV9pbnNuIChpbnQgcmVn bm8sIHJ0eF9pbnNuICppbnNuLCBpbnQgcmVsb2Fkc19udW0sIGJvb2wgYWZ0 ZXJfcCkKIHsKICAgdXNhZ2VfaW5zbnNbcmVnbm9dLmNoZWNrID0gY3Vycl91 c2FnZV9pbnNuc19jaGVjazsKLSAgdXNhZ2VfaW5zbnNbcmVnbm9dLmluc25z ID0gaW5zbjsKKyAgdXNhZ2VfaW5zbnNbcmVnbm9dLmluc25zID0gcmVpbnRl cnByZXRfY2FzdCA8cnR4X3VzYWdlX2xpc3QgKj4gKGluc24pOwogICB1c2Fn ZV9pbnNuc1tyZWdub10ucmVsb2Fkc19udW0gPSByZWxvYWRzX251bTsKICAg dXNhZ2VfaW5zbnNbcmVnbm9dLmNhbGxzX251bSA9IGNhbGxzX251bTsKICAg dXNhZ2VfaW5zbnNbcmVnbm9dLmFmdGVyX3AgPSBhZnRlcl9wOwpAQCAtNDU0 NiwyMCArNDY0NiwxOSBAQCBzZXR1cF9uZXh0X3VzYWdlX2luc24gKGludCBy ZWdubywgcnR4IGluc24sIGludCByZWxvYWRzX251bSwgYm9vbCBhZnRlcl9w KQogICAgb3B0aW9uYWwgZGVidWcgaW5zbnMgZmluaXNoZWQgYnkgYSBub24t ZGVidWcgaW5zbiB1c2luZyBSRUdOTy4KICAgIFJFTE9BRFNfTlVNIGlzIGN1 cnJlbnQgbnVtYmVyIG9mIHJlbG9hZCBpbnNucyBwcm9jZXNzZWQgc28gZmFy LiAgKi8KIHN0YXRpYyB2b2lkCi1hZGRfbmV4dF91c2FnZV9pbnNuIChpbnQg cmVnbm8sIHJ0eCBpbnNuLCBpbnQgcmVsb2Fkc19udW0pCithZGRfbmV4dF91 c2FnZV9pbnNuIChpbnQgcmVnbm8sIHJ0eF9pbnNuICppbnNuLCBpbnQgcmVs b2Fkc19udW0pCiB7Ci0gIHJ0eCBuZXh0X3VzYWdlX2luc25zOworICBydHhf dXNhZ2VfbGlzdCAqbmV4dF91c2FnZV9pbnNuczsKKyAgcnR4X2RlYnVnX2lu c24gKmRlYnVnX2luc247CiAKICAgaWYgKHVzYWdlX2luc25zW3JlZ25vXS5j aGVjayA9PSBjdXJyX3VzYWdlX2luc25zX2NoZWNrCi0gICAgICAmJiAobmV4 dF91c2FnZV9pbnNucyA9IHVzYWdlX2luc25zW3JlZ25vXS5pbnNucykgIT0g TlVMTF9SVFgKLSAgICAgICYmIERFQlVHX0lOU05fUCAoaW5zbikpCisgICAg ICAmJiAobmV4dF91c2FnZV9pbnNucyA9IHVzYWdlX2luc25zW3JlZ25vXS5p bnNucykgIT0gTlVMTAorICAgICAgJiYgKGRlYnVnX2luc24gPSBkeW5fY2Fz dCA8cnR4X2RlYnVnX2luc24gKj4gKGluc24pKSAhPSBOVUxMKQogICAgIHsK ICAgICAgIC8qIENoZWNrIHRoYXQgd2UgZGlkIG5vdCBhZGQgdGhlIGRlYnVn IGluc24geWV0LgkqLwotICAgICAgaWYgKG5leHRfdXNhZ2VfaW5zbnMgIT0g aW5zbgotCSAgJiYgKEdFVF9DT0RFIChuZXh0X3VzYWdlX2luc25zKSAhPSBJ TlNOX0xJU1QKLQkgICAgICB8fCBYRVhQIChuZXh0X3VzYWdlX2luc25zLCAw KSAhPSBpbnNuKSkKLQl1c2FnZV9pbnNuc1tyZWdub10uaW5zbnMgPSBnZW5f cnR4X0lOU05fTElTVCAoVk9JRG1vZGUsIGluc24sCi0JCQkJCQkgICAgICBu ZXh0X3VzYWdlX2luc25zKTsKKyAgICAgIGlmIChuZXh0X3VzYWdlX2luc25z LT5pbnNuICgpICE9IGRlYnVnX2luc24pCisJdXNhZ2VfaW5zbnNbcmVnbm9d Lmluc25zID0KKyAgICAgICAgICAgICAgICB1c2FnZV9pbnNuc1tyZWdub10u aW5zbnMtPnB1c2hfZnJvbnQgKGRlYnVnX2luc24pOwogICAgIH0KICAgZWxz ZSBpZiAoTk9OREVCVUdfSU5TTl9QIChpbnNuKSkKICAgICBzZXR1cF9uZXh0 X3VzYWdlX2luc24gKHJlZ25vLCBpbnNuLCByZWxvYWRzX251bSwgZmFsc2Up OwpAQCAtNDU2OSwxNiArNDY2OCwxMyBAQCBhZGRfbmV4dF91c2FnZV9pbnNu IChpbnQgcmVnbm8sIHJ0eCBpbnNuLCBpbnQgcmVsb2Fkc19udW0pCiAKIC8q IFJldHVybiBmaXJzdCBub24tZGVidWcgaW5zbiBpbiBsaXN0IFVTQUdFX0lO U05TLiAgKi8KIHN0YXRpYyBydHhfaW5zbiAqCi1za2lwX3VzYWdlX2RlYnVn X2luc25zIChydHggdXNhZ2VfaW5zbnMpCitza2lwX3VzYWdlX2RlYnVnX2lu c25zIChydHhfdXNhZ2VfbGlzdCAqdXNhZ2VfaW5zbnMpCiB7Ci0gIHJ0eCBp bnNuOwotCiAgIC8qIFNraXAgZGVidWcgaW5zbnMuICAqLwotICBmb3IgKGlu c24gPSB1c2FnZV9pbnNuczsKLSAgICAgICBpbnNuICE9IE5VTExfUlRYICYm IEdFVF9DT0RFIChpbnNuKSA9PSBJTlNOX0xJU1Q7Ci0gICAgICAgaW5zbiA9 IFhFWFAgKGluc24sIDEpKQorICBmb3IgKDsgdXNhZ2VfaW5zbnMgIT0gTlVM TCAmJiB1c2FnZV9pbnNucy0+ZGVidWdfcCAoKTsKKyAgICAgICB1c2FnZV9p bnNucyA9IHVzYWdlX2luc25zLT5uZXh0ICgpKQogICAgIDsKLSAgcmV0dXJu IHNhZmVfYXNfYSA8cnR4X2luc24gKj4gKGluc24pOworICByZXR1cm4gc2Fm ZV9hc19hIDxydHhfaW5zbiAqPiAodXNhZ2VfaW5zbnMpOwogfQogCiAvKiBS ZXR1cm4gdHJ1ZSBpZiB3ZSBuZWVkIHNlY29uZGFyeSBtZW1vcnkgbW92ZXMg Zm9yIGluc24gaW4KQEAgLTQ1ODYsNyArNDY4Miw3IEBAIHNraXBfdXNhZ2Vf ZGVidWdfaW5zbnMgKHJ0eCB1c2FnZV9pbnNucykKICAgIGludG8gdGhlIGlu c24uICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX3NlY29uZGFyeV9tZW1vcnlf bmVlZGVkX3AgKGVudW0gcmVnX2NsYXNzIGluaGVyX2NsIEFUVFJJQlVURV9V TlVTRUQsCi0JCQkJIHJ0eCB1c2FnZV9pbnNucyBBVFRSSUJVVEVfVU5VU0VE KQorCQkJCSBydHhfdXNhZ2VfbGlzdCAqdXNhZ2VfaW5zbnMgQVRUUklCVVRF X1VOVVNFRCkKIHsKICNpZm5kZWYgU0VDT05EQVJZX01FTU9SWV9ORUVERUQK ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYzOSwxNSArNDczNSwxNiBAQCBzdGF0 aWMgYml0bWFwX2hlYWQgY2hlY2tfb25seV9yZWdzOwogICAgY2xhc3Mgb2Yg T1JJR0lOQUwgUkVHTk8uICAqLwogc3RhdGljIGJvb2wKIGluaGVyaXRfcmVs b2FkX3JlZyAoYm9vbCBkZWZfcCwgaW50IG9yaWdpbmFsX3JlZ25vLAotCQkg ICAgZW51bSByZWdfY2xhc3MgY2wsIHJ0eF9pbnNuICppbnNuLCBydHggbmV4 dF91c2FnZV9pbnNucykKKwkJICAgIGVudW0gcmVnX2NsYXNzIGNsLCBydHhf aW5zbiAqaW5zbiwKKyAgICAgICAgICAgICAgICAgICAgcnR4X3VzYWdlX2xp c3QgKm5leHRfdXNhZ2VfaW5zbnMpCiB7CiAgIGlmIChvcHRpbWl6ZV9mdW5j dGlvbl9mb3Jfc2l6ZV9wIChjZnVuKSkKICAgICByZXR1cm4gZmFsc2U7CiAK ICAgZW51bSByZWdfY2xhc3MgcmNsYXNzID0gbHJhX2dldF9hbGxvY25vX2Ns YXNzIChvcmlnaW5hbF9yZWdubyk7CiAgIHJ0eCBvcmlnaW5hbF9yZWcgPSBy ZWdub19yZWdfcnR4W29yaWdpbmFsX3JlZ25vXTsKLSAgcnR4IG5ld19yZWcs IHVzYWdlX2luc247Ci0gIHJ0eF9pbnNuICpuZXdfaW5zbnM7CisgIHJ0eCBu ZXdfcmVnOworICBydHhfaW5zbiAqdXNhZ2VfaW5zbiwgKm5ld19pbnNuczsK IAogICBscmFfYXNzZXJ0ICghIHVzYWdlX2luc25zW29yaWdpbmFsX3JlZ25v XS5hZnRlcl9wKTsKICAgaWYgKGxyYV9kdW1wX2ZpbGUgIT0gTlVMTCkKQEAg LTQ3NDYsMjIgKzQ4NDMsMjEgQEAgaW5oZXJpdF9yZWxvYWRfcmVnIChib29s IGRlZl9wLCBpbnQgb3JpZ2luYWxfcmVnbm8sCiAgIGVsc2UKICAgICBscmFf cHJvY2Vzc19uZXdfaW5zbnMgKGluc24sIG5ld19pbnNucywgTlVMTCwKIAkJ CSAgICJBZGQgaW5oZXJpdGFuY2U8LW9yaWdpbmFsIik7Ci0gIHdoaWxlIChu ZXh0X3VzYWdlX2luc25zICE9IE5VTExfUlRYKQorICB3aGlsZSAobmV4dF91 c2FnZV9pbnNucyAhPSBOVUxMKQogICAgIHsKLSAgICAgIGlmIChHRVRfQ09E RSAobmV4dF91c2FnZV9pbnNucykgIT0gSU5TTl9MSVNUKQorICAgICAgaWYg KCEgbmV4dF91c2FnZV9pbnNucy0+ZGVidWdfcCAoKSkKIAl7Ci0JICB1c2Fn ZV9pbnNuID0gbmV4dF91c2FnZV9pbnNuczsKLQkgIGxyYV9hc3NlcnQgKE5P TkRFQlVHX0lOU05fUCAodXNhZ2VfaW5zbikpOworCSAgdXNhZ2VfaW5zbiA9 IGFzc2VydF9hc19hIDxydHhfaW5zbiAqPiAobmV4dF91c2FnZV9pbnNucyk7 CisJICBscmFfYXNzZXJ0ICghIGlzX2EgPHJ0eF9kZWJ1Z19pbnNuICo+ICh1 c2FnZV9pbnNuKSk7CiAJICBuZXh0X3VzYWdlX2luc25zID0gTlVMTDsKIAl9 CiAgICAgICBlbHNlCiAJewotCSAgdXNhZ2VfaW5zbiA9IFhFWFAgKG5leHRf dXNhZ2VfaW5zbnMsIDApOwotCSAgbHJhX2Fzc2VydCAoREVCVUdfSU5TTl9Q ICh1c2FnZV9pbnNuKSk7Ci0JICBuZXh0X3VzYWdlX2luc25zID0gWEVYUCAo bmV4dF91c2FnZV9pbnNucywgMSk7CisJICB1c2FnZV9pbnNuID0gbmV4dF91 c2FnZV9pbnNucy0+aW5zbiAoKTsKKwkgIG5leHRfdXNhZ2VfaW5zbnMgPSBu ZXh0X3VzYWdlX2luc25zLT5uZXh0ICgpOwogCX0KLSAgICAgIGxyYV9zdWJz dGl0dXRlX3BzZXVkbyAoJnVzYWdlX2luc24sIG9yaWdpbmFsX3JlZ25vLCBu ZXdfcmVnKTsKLSAgICAgIGxyYV91cGRhdGVfaW5zbl9yZWdub19pbmZvIChh c19hIDxydHhfaW5zbiAqPiAodXNhZ2VfaW5zbikpOworICAgICAgbHJhX3N1 YnN0aXR1dGVfcHNldWRvX3dpdGhpbl9pbnNuICh1c2FnZV9pbnNuLCBvcmln aW5hbF9yZWdubywgbmV3X3JlZyk7CisgICAgICBscmFfdXBkYXRlX2luc25f cmVnbm9faW5mbyAodXNhZ2VfaW5zbik7CiAgICAgICBpZiAobHJhX2R1bXBf ZmlsZSAhPSBOVUxMKQogCXsKIAkgIGZwcmludGYgKGxyYV9kdW1wX2ZpbGUs CkBAIC00OTEzLDEzICs1MDA5LDEzIEBAIGNob29zZV9zcGxpdF9jbGFzcyAo ZW51bSByZWdfY2xhc3MgYWxsb2Nub19jbGFzcywKICAgIHRyYW5zZm9ybWF0 aW9uLiAgKi8KIHN0YXRpYyBib29sCiBzcGxpdF9yZWcgKGJvb2wgYmVmb3Jl X3AsIGludCBvcmlnaW5hbF9yZWdubywgcnR4X2luc24gKmluc24sCi0JICAg cnR4IG5leHRfdXNhZ2VfaW5zbnMpCisJICAgcnR4X3VzYWdlX2xpc3QgKm5l eHRfdXNhZ2VfaW5zbnMpCiB7CiAgIGVudW0gcmVnX2NsYXNzIHJjbGFzczsK ICAgcnR4IG9yaWdpbmFsX3JlZzsKICAgaW50IGhhcmRfcmVnbm8sIG5yZWdz OwotICBydHggbmV3X3JlZywgdXNhZ2VfaW5zbjsKLSAgcnR4X2luc24gKnJl c3RvcmUsICpzYXZlOworICBydHggbmV3X3JlZzsKKyAgcnR4X2luc24gKnJl c3RvcmUsICpzYXZlLCAqdXNhZ2VfaW5zbjsKICAgYm9vbCBhZnRlcl9wOwog ICBib29sIGNhbGxfc2F2ZV9wOwogCkBAIC01MDE2LDE0ICs1MTEyLDEzIEBA IHNwbGl0X3JlZyAoYm9vbCBiZWZvcmVfcCwgaW50IG9yaWdpbmFsX3JlZ25v LCBydHhfaW5zbiAqaW5zbiwKICAgICB7CiAgICAgICBpZiAoR0VUX0NPREUg KG5leHRfdXNhZ2VfaW5zbnMpICE9IElOU05fTElTVCkKIAl7Ci0JICB1c2Fn ZV9pbnNuID0gbmV4dF91c2FnZV9pbnNuczsKKwkgIHVzYWdlX2luc24gPSBh c19hIDxydHhfaW5zbiAqPiAobmV4dF91c2FnZV9pbnNucyk7CiAJICBicmVh azsKIAl9Ci0gICAgICB1c2FnZV9pbnNuID0gWEVYUCAobmV4dF91c2FnZV9p bnNucywgMCk7Ci0gICAgICBscmFfYXNzZXJ0IChERUJVR19JTlNOX1AgKHVz YWdlX2luc24pKTsKLSAgICAgIG5leHRfdXNhZ2VfaW5zbnMgPSBYRVhQIChu ZXh0X3VzYWdlX2luc25zLCAxKTsKLSAgICAgIGxyYV9zdWJzdGl0dXRlX3Bz ZXVkbyAoJnVzYWdlX2luc24sIG9yaWdpbmFsX3JlZ25vLCBuZXdfcmVnKTsK LSAgICAgIGxyYV91cGRhdGVfaW5zbl9yZWdub19pbmZvIChhc19hIDxydHhf aW5zbiAqPiAodXNhZ2VfaW5zbikpOworICAgICAgdXNhZ2VfaW5zbiA9IG5l eHRfdXNhZ2VfaW5zbnMtPmluc24gKCk7CisgICAgICBuZXh0X3VzYWdlX2lu c25zID0gbmV4dF91c2FnZV9pbnNucy0+bmV4dCAoKTsKKyAgICAgIGxyYV9z dWJzdGl0dXRlX3BzZXVkb193aXRoaW5faW5zbiAodXNhZ2VfaW5zbiwgb3Jp Z2luYWxfcmVnbm8sIG5ld19yZWcpOworICAgICAgbHJhX3VwZGF0ZV9pbnNu X3JlZ25vX2luZm8gKHVzYWdlX2luc24pOwogICAgICAgaWYgKGxyYV9kdW1w X2ZpbGUgIT0gTlVMTCkKIAl7CiAJICBmcHJpbnRmIChscmFfZHVtcF9maWxl LCAiICAgIFNwbGl0IHJldXNlIGNoYW5nZSAlZC0+JWQ6XG4iLApAQCAtNTAz MSw5ICs1MTI2LDkgQEAgc3BsaXRfcmVnIChib29sIGJlZm9yZV9wLCBpbnQg b3JpZ2luYWxfcmVnbm8sIHJ0eF9pbnNuICppbnNuLAogCSAgZHVtcF9pbnNu X3NsaW0gKGxyYV9kdW1wX2ZpbGUsIHVzYWdlX2luc24pOwogCX0KICAgICB9 Ci0gIGxyYV9hc3NlcnQgKE5PVEVfUCAodXNhZ2VfaW5zbikgfHwgTk9OREVC VUdfSU5TTl9QICh1c2FnZV9pbnNuKSk7CisgIGxyYV9hc3NlcnQgKCEgREVC VUdfSU5TTl9QICh1c2FnZV9pbnNuKSk7CiAgIGxyYV9hc3NlcnQgKHVzYWdl X2luc24gIT0gaW5zbiB8fCAoYWZ0ZXJfcCAmJiBiZWZvcmVfcCkpOwotICBs cmFfcHJvY2Vzc19uZXdfaW5zbnMgKGFzX2EgPHJ0eF9pbnNuICo+ICh1c2Fn ZV9pbnNuKSwKKyAgbHJhX3Byb2Nlc3NfbmV3X2luc25zICh1c2FnZV9pbnNu LAogCQkJIGFmdGVyX3AgPyBOVUxMIDogcmVzdG9yZSwKIAkJCSBhZnRlcl9w ID8gcmVzdG9yZSA6IE5VTEwsCiAJCQkgY2FsbF9zYXZlX3AKQEAgLTUwNjks MTggKzUxNjQsMTUgQEAgc3BsaXRfaWZfbmVjZXNzYXJ5IChpbnQgcmVnbm8s IG1hY2hpbmVfbW9kZSBtb2RlLAogewogICBib29sIHJlcyA9IGZhbHNlOwog ICBpbnQgaSwgbnJlZ3MgPSAxOwotICBydHggbmV4dF91c2FnZV9pbnNuczsK KyAgcnR4X3VzYWdlX2xpc3QgKm5leHRfdXNhZ2VfaW5zbnM7CiAKICAgaWYg KHJlZ25vIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSKQogICAgIG5yZWdzID0g aGFyZF9yZWdub19ucmVnc1tyZWdub11bbW9kZV07CiAgIGZvciAoaSA9IDA7 IGkgPCBucmVnczsgaSsrKQogICAgIGlmICh1c2FnZV9pbnNuc1tyZWdubyAr IGldLmNoZWNrID09IGN1cnJfdXNhZ2VfaW5zbnNfY2hlY2sKLQkmJiAobmV4 dF91c2FnZV9pbnNucyA9IHVzYWdlX2luc25zW3JlZ25vICsgaV0uaW5zbnMp ICE9IE5VTExfUlRYCisJJiYgKG5leHRfdXNhZ2VfaW5zbnMgPSB1c2FnZV9p bnNuc1tyZWdubyArIGldLmluc25zKSAhPSBOVUxMCiAJLyogVG8gYXZvaWQg cHJvY2Vzc2luZyB0aGUgcmVnaXN0ZXIgdHdpY2Ugb3IgbW9yZS4gICovCi0J JiYgKChHRVRfQ09ERSAobmV4dF91c2FnZV9pbnNucykgIT0gSU5TTl9MSVNU Ci0JICAgICAmJiBJTlNOX1VJRCAobmV4dF91c2FnZV9pbnNucykgPCBtYXhf dWlkKQotCSAgICB8fCAoR0VUX0NPREUgKG5leHRfdXNhZ2VfaW5zbnMpID09 IElOU05fTElTVAotCQkmJiAoSU5TTl9VSUQgKFhFWFAgKG5leHRfdXNhZ2Vf aW5zbnMsIDApKSA8IG1heF91aWQpKSkKKwkmJiAoSU5TTl9VSUQgKG5leHRf dXNhZ2VfaW5zbnMtPmluc24gKCkpIDwgbWF4X3VpZCkKIAkmJiBuZWVkX2Zv cl9zcGxpdF9wIChwb3RlbnRpYWxfcmVsb2FkX2hhcmRfcmVncywgcmVnbm8g KyBpKQogCSYmIHNwbGl0X3JlZyAoYmVmb3JlX3AsIHJlZ25vICsgaSwgaW5z biwgbmV4dF91c2FnZV9pbnNucykpCiAgICAgcmVzID0gdHJ1ZTsKQEAgLTUy MDksNyArNTMwMSw3IEBAIHN0cnVjdCB0b19pbmhlcml0CiAgIC8qIE9yaWdp bmFsIHJlZ25vLiAgKi8KICAgaW50IHJlZ25vOwogICAvKiBTdWJzZXF1ZW50 IGluc25zIHdoaWNoIGNhbiBpbmhlcml0IG9yaWdpbmFsIHJlZyB2YWx1ZS4g ICovCi0gIHJ0eCBpbnNuczsKKyAgcnR4X3VzYWdlX2xpc3QgKmluc25zOwog fTsKIAogLyogQXJyYXkgY29udGFpbmluZyBhbGwgaW5mbyBmb3IgZG9pbmcg aW5oZXJpdGFuY2UgZnJvbSB0aGUgY3VycmVudApAQCAtNTIyMiw3ICs1MzE0 LDcgQEAgc3RhdGljIGludCB0b19pbmhlcml0X251bTsKIC8qIEFkZCBpbmhl cml0YW5jZSBpbmZvIFJFR05PIGFuZCBJTlNOUy4gVGhlaXIgbWVhbmluZyBp cyBkZXNjcmliZWQgaW4KICAgIHN0cnVjdHVyZSB0b19pbmhlcml0LiAgKi8K IHN0YXRpYyB2b2lkCi1hZGRfdG9faW5oZXJpdCAoaW50IHJlZ25vLCBydHgg aW5zbnMpCithZGRfdG9faW5oZXJpdCAoaW50IHJlZ25vLCBydHhfdXNhZ2Vf bGlzdCAqaW5zbnMpCiB7CiAgIGludCBpOwogCkBAIC01MzAxLDcgKzUzOTMs OCBAQCBpbmhlcml0X2luX2ViYiAocnR4X2luc24gKmhlYWQsIHJ0eF9pbnNu ICp0YWlsKQogICBpbnQgaSwgc3JjX3JlZ25vLCBkc3RfcmVnbm8sIG5yZWdz OwogICBib29sIGNoYW5nZV9wLCBzdWNjX3AsIHVwZGF0ZV9yZWxvYWRzX251 bV9wOwogICBydHhfaW5zbiAqcHJldl9pbnNuLCAqbGFzdF9pbnNuOwotICBy dHggbmV4dF91c2FnZV9pbnNucywgc2V0OworICBydHhfdXNhZ2VfbGlzdCAq bmV4dF91c2FnZV9pbnNuczsKKyAgcnR4IHNldDsKICAgZW51bSByZWdfY2xh c3MgY2w7CiAgIHN0cnVjdCBscmFfaW5zbl9yZWcgKnJlZzsKICAgYmFzaWNf YmxvY2sgbGFzdF9wcm9jZXNzZWRfYmIsIGN1cnJfYmIgPSBOVUxMOwpAQCAt NTU2OSw3ICs1NjYyLDcgQEAgaW5oZXJpdF9pbl9lYmIgKHJ0eF9pbnNuICpo ZWFkLCBydHhfaW5zbiAqdGFpbCkKIAkJCSAgIHx8IHJlZ19yZW51bWJlcltz cmNfcmVnbm9dID49IDApCiAJCSAgICB7CiAJCSAgICAgIGJvb2wgYmVmb3Jl X3A7Ci0JCSAgICAgIHJ0eCB1c2VfaW5zbiA9IGN1cnJfaW5zbjsKKwkJICAg ICAgcnR4X2luc24gKnVzZV9pbnNuID0gY3Vycl9pbnNuOwogCiAJCSAgICAg IGJlZm9yZV9wID0gKEpVTVBfUCAoY3Vycl9pbnNuKQogCQkJCSAgfHwgKENB TExfUCAoY3Vycl9pbnNuKSAmJiByZWctPnR5cGUgPT0gT1BfSU4pKTsKZGlm ZiAtLWdpdCBhL2djYy9scmEuYyBiL2djYy9scmEuYwppbmRleCAyNjlhMGYx Li42ZDNjNzNlIDEwMDY0NAotLS0gYS9nY2MvbHJhLmMKKysrIGIvZ2NjL2xy YS5jCkBAIC0xODI1LDcgKzE4MjUsNyBAQCBscmFfc3Vic3RpdHV0ZV9wc2V1 ZG8gKHJ0eCAqbG9jLCBpbnQgb2xkX3JlZ25vLCBydHggbmV3X3JlZykKICAg Y29uc3QgY2hhciAqZm10OwogICBpbnQgaSwgajsKIAotICBpZiAoeCA9PSBO VUxMX1JUWCkKKyAgaWYgKHggPT0gTlVMTCkKICAgICByZXR1cm4gZmFsc2U7 CiAKICAgY29kZSA9IEdFVF9DT0RFICh4KTsKZGlmZiAtLWdpdCBhL2djYy9t b2R1bG8tc2NoZWQuYyBiL2djYy9tb2R1bG8tc2NoZWQuYwppbmRleCAyMmNk MjE2Li40YWZlNDNlIDEwMDY0NAotLS0gYS9nY2MvbW9kdWxvLXNjaGVkLmMK KysrIGIvZ2NjL21vZHVsby1zY2hlZC5jCkBAIC03OTAsOCArNzkwLDcgQEAg c2NoZWR1bGVfcmVnX21vdmVzIChwYXJ0aWFsX3NjaGVkdWxlX3B0ciBwcykK IAkgIG1vdmUtPm9sZF9yZWcgPSBvbGRfcmVnOwogCSAgbW92ZS0+bmV3X3Jl ZyA9IGdlbl9yZWdfcnR4IChHRVRfTU9ERSAocHJldl9yZWcpKTsKIAkgIG1v dmUtPm51bV9jb25zZWN1dGl2ZV9zdGFnZXMgPSBkaXN0YW5jZXNbMF0gJiYg ZGlzdGFuY2VzWzFdID8gMiA6IDE7Ci0JICBtb3ZlLT5pbnNuID0gYXNfYSA8 cnR4X2luc24gKj4gKGdlbl9tb3ZlX2luc24gKG1vdmUtPm5ld19yZWcsCi0J CQkJCQkJIGNvcHlfcnR4IChwcmV2X3JlZykpKTsKKwkgIG1vdmUtPmluc24g PSBnZW5fbW92ZV9pbnNuIChtb3ZlLT5uZXdfcmVnLCBjb3B5X3J0eCAocHJl dl9yZWcpKTsKIAkgIGJpdG1hcF9jbGVhciAobW92ZS0+dXNlcyk7CiAKIAkg IHByZXZfcmVnID0gbW92ZS0+bmV3X3JlZzsKZGlmZiAtLWdpdCBhL2djYy9v cHRhYnMuYyBiL2djYy9vcHRhYnMuYwppbmRleCBlOWRjNzk4Li45YTUxYmEz IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLmMKKysrIGIvZ2NjL29wdGFicy5j CkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBleHBhbmRfYmlub3BfZGlyZWN0bHkg KG1hY2hpbmVfbW9kZSBtb2RlLCBvcHRhYiBiaW5vcHRhYiwKICAgbWFjaGlu ZV9tb2RlIG1vZGUwLCBtb2RlMSwgdG1wX21vZGU7CiAgIHN0cnVjdCBleHBh bmRfb3BlcmFuZCBvcHNbM107CiAgIGJvb2wgY29tbXV0YXRpdmVfcDsKLSAg cnR4IHBhdDsKKyAgcnR4X2luc24gKnBhdDsKICAgcnR4IHhvcDAgPSBvcDAs IHhvcDEgPSBvcDE7CiAgIHJ0eCBzd2FwOwogCkBAIC0xNDk5LDggKzE0OTks OCBAQCBleHBhbmRfYmlub3BfZGlyZWN0bHkgKG1hY2hpbmVfbW9kZSBtb2Rl LCBvcHRhYiBiaW5vcHRhYiwKICAgICAgIC8qIElmIFBBVCBpcyBjb21wb3Nl ZCBvZiBtb3JlIHRoYW4gb25lIGluc24sIHRyeSB0byBhZGQgYW4gYXBwcm9w cmlhdGUKIAkgUkVHX0VRVUFMIG5vdGUgdG8gaXQuICBJZiB3ZSBjYW4ndCBi ZWNhdXNlIFRFTVAgY29uZmxpY3RzIHdpdGggYW4KIAkgb3BlcmFuZCwgY2Fs bCBleHBhbmRfYmlub3AgYWdhaW4sIHRoaXMgdGltZSB3aXRob3V0IGEgdGFy Z2V0LiAgKi8KLSAgICAgIGlmIChJTlNOX1AgKHBhdCkgJiYgTkVYVF9JTlNO IChhc19hIDxydHhfaW5zbiAqPiAocGF0KSkgIT0gTlVMTF9SVFgKLQkgICYm ICEgYWRkX2VxdWFsX25vdGUgKGFzX2EgPHJ0eF9pbnNuICo+IChwYXQpLCBv cHNbMF0udmFsdWUsCisgICAgICBpZiAoSU5TTl9QIChwYXQpICYmIE5FWFRf SU5TTiAocGF0KSAhPSBOVUxMX1JUWAorCSAgJiYgISBhZGRfZXF1YWxfbm90 ZSAocGF0LCBvcHNbMF0udmFsdWUsCiAJCQkgICAgICAgb3B0YWJfdG9fY29k ZSAoYmlub3B0YWIpLAogCQkJICAgICAgIG9wc1sxXS52YWx1ZSwgb3BzWzJd LnZhbHVlKSkKIAl7CkBAIC0zMDE2LDE1ICszMDE2LDE1IEBAIGV4cGFuZF91 bm9wX2RpcmVjdCAobWFjaGluZV9tb2RlIG1vZGUsIG9wdGFiIHVub3B0YWIs IHJ0eCBvcDAsIHJ0eCB0YXJnZXQsCiAgICAgICBzdHJ1Y3QgZXhwYW5kX29w ZXJhbmQgb3BzWzJdOwogICAgICAgZW51bSBpbnNuX2NvZGUgaWNvZGUgPSBv cHRhYl9oYW5kbGVyICh1bm9wdGFiLCBtb2RlKTsKICAgICAgIHJ0eF9pbnNu ICpsYXN0ID0gZ2V0X2xhc3RfaW5zbiAoKTsKLSAgICAgIHJ0eCBwYXQ7Cisg ICAgICBydHhfaW5zbiAqcGF0OwogCiAgICAgICBjcmVhdGVfb3V0cHV0X29w ZXJhbmQgKCZvcHNbMF0sIHRhcmdldCwgbW9kZSk7CiAgICAgICBjcmVhdGVf Y29udmVydF9vcGVyYW5kX2Zyb20gKCZvcHNbMV0sIG9wMCwgbW9kZSwgdW5z aWduZWRwKTsKICAgICAgIHBhdCA9IG1heWJlX2dlbl9pbnNuIChpY29kZSwg Miwgb3BzKTsKICAgICAgIGlmIChwYXQpCiAJewotCSAgaWYgKElOU05fUCAo cGF0KSAmJiBORVhUX0lOU04gKGFzX2EgPHJ0eF9pbnNuICo+IChwYXQpKSAh PSBOVUxMX1JUWAotCSAgICAgICYmICEgYWRkX2VxdWFsX25vdGUgKGFzX2Eg PHJ0eF9pbnNuICo+IChwYXQpLCBvcHNbMF0udmFsdWUsCisJICBpZiAoSU5T Tl9QIChwYXQpICYmIE5FWFRfSU5TTiAocGF0KSAhPSBOVUxMX1JUWAorCSAg ICAgICYmICEgYWRkX2VxdWFsX25vdGUgKHBhdCwgb3BzWzBdLnZhbHVlLAog CQkJCSAgIG9wdGFiX3RvX2NvZGUgKHVub3B0YWIpLAogCQkJCSAgIG9wc1sx XS52YWx1ZSwgTlVMTF9SVFgpKQogCSAgICB7CkBAIC0zNTA4LDcgKzM1MDgs NyBAQCBleHBhbmRfYWJzIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IG9wMCwg cnR4IHRhcmdldCwKICAgTk9fREVGRVJfUE9QOwogCiAgIGRvX2NvbXBhcmVf cnR4X2FuZF9qdW1wICh0YXJnZXQsIENPTlNUMF9SVFggKG1vZGUpLCBHRSwg MCwgbW9kZSwKLQkJCSAgIE5VTExfUlRYLCBOVUxMX1JUWCwgb3AxLCAtMSk7 CisJCQkgICBOVUxMX1JUWCwgTlVMTCwgb3AxLCAtMSk7CiAKICAgb3AwID0g ZXhwYW5kX3Vub3AgKG1vZGUsIHJlc3VsdF91bnNpZ25lZHAgPyBuZWdfb3B0 YWIgOiBuZWd2X29wdGFiLAogICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 LCB0YXJnZXQsIDApOwpAQCAtMzgxNyw3ICszODE3LDcgQEAgbWF5YmVfZW1p dF91bm9wX2luc24gKGVudW0gaW5zbl9jb2RlIGljb2RlLCBydHggdGFyZ2V0 LCBydHggb3AwLAogCQkgICAgICBlbnVtIHJ0eF9jb2RlIGNvZGUpCiB7CiAg IHN0cnVjdCBleHBhbmRfb3BlcmFuZCBvcHNbMl07Ci0gIHJ0eCBwYXQ7Cisg IHJ0eF9pbnNuICpwYXQ7CiAKICAgY3JlYXRlX291dHB1dF9vcGVyYW5kICgm b3BzWzBdLCB0YXJnZXQsIEdFVF9NT0RFICh0YXJnZXQpKTsKICAgY3JlYXRl X2lucHV0X29wZXJhbmQgKCZvcHNbMV0sIG9wMCwgR0VUX01PREUgKG9wMCkp OwpAQCAtMzgyNSwxMCArMzgyNSw5IEBAIG1heWJlX2VtaXRfdW5vcF9pbnNu IChlbnVtIGluc25fY29kZSBpY29kZSwgcnR4IHRhcmdldCwgcnR4IG9wMCwK ICAgaWYgKCFwYXQpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGlmIChJTlNO X1AgKHBhdCkgJiYgTkVYVF9JTlNOIChhc19hIDxydHhfaW5zbiAqPiAocGF0 KSkgIT0gTlVMTF9SVFgKKyAgaWYgKElOU05fUCAocGF0KSAmJiBORVhUX0lO U04gKHBhdCkgIT0gTlVMTF9SVFgKICAgICAgICYmIGNvZGUgIT0gVU5LTk9X TikKLSAgICBhZGRfZXF1YWxfbm90ZSAoYXNfYSA8cnR4X2luc24gKj4gKHBh dCksIG9wc1swXS52YWx1ZSwgY29kZSwgb3BzWzFdLnZhbHVlLAotCQkgICAg TlVMTF9SVFgpOworICAgIGFkZF9lcXVhbF9ub3RlIChwYXQsIG9wc1swXS52 YWx1ZSwgY29kZSwgb3BzWzFdLnZhbHVlLCBOVUxMX1JUWCk7CiAKICAgZW1p dF9pbnNuIChwYXQpOwogCkBAIC04MzcwLDEzICs4MzY5LDEzIEBAIG1heWJl X2xlZ2l0aW1pemVfb3BlcmFuZHMgKGVudW0gaW5zbl9jb2RlIGljb2RlLCB1 bnNpZ25lZCBpbnQgb3BubywKICAgIGFuZCBlbWl0IGFueSBuZWNlc3Nhcnkg c2V0LXVwIGNvZGUuICBSZXR1cm4gbnVsbCBhbmQgZW1pdCBubwogICAgY29k ZSBvbiBmYWlsdXJlLiAgKi8KIAotcnR4CitydHhfaW5zbiAqCiBtYXliZV9n ZW5faW5zbiAoZW51bSBpbnNuX2NvZGUgaWNvZGUsIHVuc2lnbmVkIGludCBu b3BzLAogCQlzdHJ1Y3QgZXhwYW5kX29wZXJhbmQgKm9wcykKIHsKICAgZ2Nj X2Fzc2VydCAobm9wcyA9PSAodW5zaWduZWQgaW50KSBpbnNuX2RhdGFbKGlu dCkgaWNvZGVdLm5fZ2VuZXJhdG9yX2FyZ3MpOwogICBpZiAoIW1heWJlX2xl Z2l0aW1pemVfb3BlcmFuZHMgKGljb2RlLCAwLCBub3BzLCBvcHMpKQotICAg IHJldHVybiBOVUxMX1JUWDsKKyAgICByZXR1cm4gTlVMTDsKIAogICBzd2l0 Y2ggKG5vcHMpCiAgICAgewpkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy5oIGIv Z2NjL29wdGFicy5oCmluZGV4IDE1MmFmODcuLjVjMzBjZTUgMTAwNjQ0Ci0t LSBhL2djYy9vcHRhYnMuaAorKysgYi9nY2Mvb3B0YWJzLmgKQEAgLTU0MSw4 ICs1NDEsOCBAQCBleHRlcm4gdm9pZCBjcmVhdGVfY29udmVydF9vcGVyYW5k X2Zyb21fdHlwZSAoc3RydWN0IGV4cGFuZF9vcGVyYW5kICpvcCwKIGV4dGVy biBib29sIG1heWJlX2xlZ2l0aW1pemVfb3BlcmFuZHMgKGVudW0gaW5zbl9j b2RlIGljb2RlLAogCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgb3BubywgdW5z aWduZWQgaW50IG5vcHMsCiAJCQkJICAgICAgIHN0cnVjdCBleHBhbmRfb3Bl cmFuZCAqb3BzKTsKLWV4dGVybiBydHggbWF5YmVfZ2VuX2luc24gKGVudW0g aW5zbl9jb2RlIGljb2RlLCB1bnNpZ25lZCBpbnQgbm9wcywKLQkJCSAgIHN0 cnVjdCBleHBhbmRfb3BlcmFuZCAqb3BzKTsKK2V4dGVybiBydHhfaW5zbiAq bWF5YmVfZ2VuX2luc24gKGVudW0gaW5zbl9jb2RlIGljb2RlLCB1bnNpZ25l ZCBpbnQgbm9wcywKKwkJCQkgc3RydWN0IGV4cGFuZF9vcGVyYW5kICpvcHMp OwogZXh0ZXJuIGJvb2wgbWF5YmVfZXhwYW5kX2luc24gKGVudW0gaW5zbl9j b2RlIGljb2RlLCB1bnNpZ25lZCBpbnQgbm9wcywKIAkJCSAgICAgICBzdHJ1 Y3QgZXhwYW5kX29wZXJhbmQgKm9wcyk7CiBleHRlcm4gYm9vbCBtYXliZV9l eHBhbmRfanVtcF9pbnNuIChlbnVtIGluc25fY29kZSBpY29kZSwgdW5zaWdu ZWQgaW50IG5vcHMsCmRpZmYgLS1naXQgYS9nY2MvcG9zdHJlbG9hZC1nY3Nl LmMgYi9nY2MvcG9zdHJlbG9hZC1nY3NlLmMKaW5kZXggODMwNDhiZC4uMjEy MjhhYyAxMDA2NDQKLS0tIGEvZ2NjL3Bvc3RyZWxvYWQtZ2NzZS5jCisrKyBi L2djYy9wb3N0cmVsb2FkLWdjc2UuYwpAQCAtMTExNSw4ICsxMTE1LDggQEAg ZWxpbWluYXRlX3BhcnRpYWxseV9yZWR1bmRhbnRfbG9hZCAoYmFzaWNfYmxv Y2sgYmIsIHJ0eF9pbnNuICppbnNuLAogCiAJICAvKiBNYWtlIHN1cmUgd2Ug Y2FuIGdlbmVyYXRlIGEgbW92ZSBmcm9tIHJlZ2lzdGVyIGF2YWlsX3JlZyB0 bwogCSAgICAgZGVzdC4gICovCi0JICBydHhfaW5zbiAqbW92ZSA9IGFzX2Eg PHJ0eF9pbnNuICo+Ci0JICAgIChnZW5fbW92ZV9pbnNuIChjb3B5X3J0eCAo ZGVzdCksIGNvcHlfcnR4IChhdmFpbF9yZWcpKSk7CisJICBydHhfaW5zbiAq bW92ZSA9IGdlbl9tb3ZlX2luc24gKGNvcHlfcnR4IChkZXN0KSwKKwkJCQkJ ICBjb3B5X3J0eCAoYXZhaWxfcmVnKSk7CiAJICBleHRyYWN0X2luc24gKG1v dmUpOwogCSAgaWYgKCEgY29uc3RyYWluX29wZXJhbmRzICgxLCBnZXRfcHJl ZmVycmVkX2FsdGVybmF0aXZlcyAoaW5zbiwKIAkJCQkJCQkJICAgcHJlZF9i YikpCmRpZmYgLS1naXQgYS9nY2MvcmVjb2cuYyBiL2djYy9yZWNvZy5jCmlu ZGV4IGE5ZDNiMWYuLjhmZWU1YTcgMTAwNjQ0Ci0tLSBhL2djYy9yZWNvZy5j CisrKyBiL2djYy9yZWNvZy5jCkBAIC0zMDY4LDcgKzMwNjgsNyBAQCBzcGxp dF9hbGxfaW5zbnNfbm9mbG93ICh2b2lkKQogI2lmZGVmIEhBVkVfcGVlcGhv bGUyCiBzdHJ1Y3QgcGVlcDJfaW5zbl9kYXRhCiB7Ci0gIHJ0eCBpbnNuOwor ICBydHhfaW5zbiAqaW5zbjsKICAgcmVnc2V0IGxpdmVfYmVmb3JlOwogfTsK IApAQCAtMzA4NCw3ICszMDg0LDcgQEAgaW50IHBlZXAyX2N1cnJlbnRfY291 bnQ7CiAvKiBBIG5vbi1pbnNuIG1hcmtlciBpbmRpY2F0aW5nIHRoZSBsYXN0 IGluc24gb2YgdGhlIGJsb2NrLgogICAgVGhlIGxpdmVfYmVmb3JlIHJlZ3Nl dCBmb3IgdGhpcyBlbGVtZW50IGlzIGNvcnJlY3QsIGluZGljYXRpbmcKICAg IERGX0xJVkVfT1VUIGZvciB0aGUgYmxvY2suICAqLwotI2RlZmluZSBQRUVQ Ml9FT0IJcGNfcnR4CisjZGVmaW5lIFBFRVAyX0VPQgkoc3RhdGljX2Nhc3Q8 cnR4X2luc24gKj4gKHBjX3J0eCkpCiAKIC8qIFdyYXAgTiB0byBmaXQgaW50 byB0aGUgcGVlcDJfaW5zbl9kYXRhIGJ1ZmZlci4gICovCiAKQEAgLTMyODcs NyArMzI4Nyw3IEBAIHBlZXAyX3JlaW5pdF9zdGF0ZSAocmVnc2V0IGxpdmUp CiAKICAgLyogSW5kaWNhdGUgdGhhdCBhbGwgc2xvdHMgZXhjZXB0IHRoZSBs YXN0IGhvbGRzIGludmFsaWQgZGF0YS4gICovCiAgIGZvciAoaSA9IDA7IGkg PCBNQVhfSU5TTlNfUEVSX1BFRVAyOyArK2kpCi0gICAgcGVlcDJfaW5zbl9k YXRhW2ldLmluc24gPSBOVUxMX1JUWDsKKyAgICBwZWVwMl9pbnNuX2RhdGFb aV0uaW5zbiA9IE5VTEw7CiAgIHBlZXAyX2N1cnJlbnRfY291bnQgPSAwOwog CiAgIC8qIEluZGljYXRlIHRoYXQgdGhlIGxhc3Qgc2xvdCBjb250YWlucyBs aXZlX2FmdGVyIGRhdGEuICAqLwpAQCAtMzMxNSw3ICszMzE1LDcgQEAgcGVl cDJfYXR0ZW1wdCAoYmFzaWNfYmxvY2sgYmIsIHJ0eCB1bmNhc3RfaW5zbiwg aW50IG1hdGNoX2xlbiwgcnR4X2luc24gKmF0dGVtcHQKIAogICAvKiBJZiB3 ZSBhcmUgc3BsaXR0aW5nIGFuIFJUWF9GUkFNRV9SRUxBVEVEX1AgaW5zbiwg ZG8gbm90IGFsbG93IGl0IHRvCiAgICAgIG1hdGNoIG1vcmUgdGhhbiBvbmUg aW5zbiwgb3IgdG8gYmUgc3BsaXQgaW50byBtb3JlIHRoYW4gb25lIGluc24u ICAqLwotICBvbGRfaW5zbiA9IGFzX2EgPHJ0eF9pbnNuICo+IChwZWVwMl9p bnNuX2RhdGFbcGVlcDJfY3VycmVudF0uaW5zbik7CisgIG9sZF9pbnNuID0g cGVlcDJfaW5zbl9kYXRhW3BlZXAyX2N1cnJlbnRdLmluc247CiAgIGlmIChS VFhfRlJBTUVfUkVMQVRFRF9QIChvbGRfaW5zbikpCiAgICAgewogICAgICAg Ym9vbCBhbnlfbm90ZSA9IGZhbHNlOwpAQCAtMzQwMyw3ICszNDAzLDcgQEAg cGVlcDJfYXR0ZW1wdCAoYmFzaWNfYmxvY2sgYmIsIHJ0eCB1bmNhc3RfaW5z biwgaW50IG1hdGNoX2xlbiwgcnR4X2luc24gKmF0dGVtcHQKICAgICAgIHJ0 eCBub3RlOwogCiAgICAgICBqID0gcGVlcDJfYnVmX3Bvc2l0aW9uIChwZWVw Ml9jdXJyZW50ICsgaSk7Ci0gICAgICBvbGRfaW5zbiA9IGFzX2EgPHJ0eF9p bnNuICo+IChwZWVwMl9pbnNuX2RhdGFbal0uaW5zbik7CisgICAgICBvbGRf aW5zbiA9IHBlZXAyX2luc25fZGF0YVtqXS5pbnNuOwogICAgICAgaWYgKCFD QUxMX1AgKG9sZF9pbnNuKSkKIAljb250aW51ZTsKICAgICAgIHdhc19jYWxs ID0gdHJ1ZTsKQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHBlZXAyX2F0dGVtcHQg KGJhc2ljX2Jsb2NrIGJiLCBydHggdW5jYXN0X2luc24sIGludCBtYXRjaF9s ZW4sIHJ0eF9pbnNuICphdHRlbXB0CiAgICAgICB3aGlsZSAoKytpIDw9IG1h dGNoX2xlbikKIAl7CiAJICBqID0gcGVlcDJfYnVmX3Bvc2l0aW9uIChwZWVw Ml9jdXJyZW50ICsgaSk7Ci0JICBvbGRfaW5zbiA9IGFzX2EgPHJ0eF9pbnNu ICo+IChwZWVwMl9pbnNuX2RhdGFbal0uaW5zbik7CisJICBvbGRfaW5zbiA9 IHBlZXAyX2luc25fZGF0YVtqXS5pbnNuOwogCSAgZ2NjX2Fzc2VydCAoIUNB TExfUCAob2xkX2luc24pKTsKIAl9CiAgICAgICBicmVhazsKQEAgLTM0NTQs NyArMzQ1NCw3IEBAIHBlZXAyX2F0dGVtcHQgKGJhc2ljX2Jsb2NrIGJiLCBy dHggdW5jYXN0X2luc24sIGludCBtYXRjaF9sZW4sIHJ0eF9pbnNuICphdHRl bXB0CiAgIGZvciAoaSA9IG1hdGNoX2xlbjsgaSA+PSAwOyAtLWkpCiAgICAg ewogICAgICAgaW50IGogPSBwZWVwMl9idWZfcG9zaXRpb24gKHBlZXAyX2N1 cnJlbnQgKyBpKTsKLSAgICAgIG9sZF9pbnNuID0gYXNfYSA8cnR4X2luc24g Kj4gKHBlZXAyX2luc25fZGF0YVtqXS5pbnNuKTsKKyAgICAgIG9sZF9pbnNu ID0gcGVlcDJfaW5zbl9kYXRhW2pdLmluc247CiAKICAgICAgIGFzX25vdGUg PSBmaW5kX3JlZ19ub3RlIChvbGRfaW5zbiwgUkVHX0FSR1NfU0laRSwgTlVM TCk7CiAgICAgICBpZiAoYXNfbm90ZSkKQEAgLTM0NjUsNyArMzQ2NSw3IEBA IHBlZXAyX2F0dGVtcHQgKGJhc2ljX2Jsb2NrIGJiLCBydHggdW5jYXN0X2lu c24sIGludCBtYXRjaF9sZW4sIHJ0eF9pbnNuICphdHRlbXB0CiAgIGVoX25v dGUgPSBmaW5kX3JlZ19ub3RlIChwZWVwMl9pbnNuX2RhdGFbaV0uaW5zbiwg UkVHX0VIX1JFR0lPTiwgTlVMTF9SVFgpOwogCiAgIC8qIFJlcGxhY2UgdGhl IG9sZCBzZXF1ZW5jZSB3aXRoIHRoZSBuZXcuICAqLwotICBydHhfaW5zbiAq cGVlcGluc24gPSBhc19hIDxydHhfaW5zbiAqPiAocGVlcDJfaW5zbl9kYXRh W2ldLmluc24pOworICBydHhfaW5zbiAqcGVlcGluc24gPSBwZWVwMl9pbnNu X2RhdGFbaV0uaW5zbjsKICAgbGFzdCA9IGVtaXRfaW5zbl9hZnRlcl9zZXRs b2MgKGF0dGVtcHQsCiAJCQkJIHBlZXAyX2luc25fZGF0YVtpXS5pbnNuLAog CQkJCSBJTlNOX0xPQ0FUSU9OIChwZWVwaW5zbikpOwpAQCAtMzU4Miw3ICsz NTgyLDcgQEAgcGVlcDJfdXBkYXRlX2xpZmUgKGJhc2ljX2Jsb2NrIGJiLCBp bnQgbWF0Y2hfbGVuLCBydHhfaW5zbiAqbGFzdCwKICAgIGFkZCBtb3JlIGlu c3RydWN0aW9ucyB0byB0aGUgYnVmZmVyLiAgKi8KIAogc3RhdGljIGJvb2wK LXBlZXAyX2ZpbGxfYnVmZmVyIChiYXNpY19ibG9jayBiYiwgcnR4IGluc24s IHJlZ3NldCBsaXZlKQorcGVlcDJfZmlsbF9idWZmZXIgKGJhc2ljX2Jsb2Nr IGJiLCBydHhfaW5zbiAqaW5zbiwgcmVnc2V0IGxpdmUpCiB7CiAgIGludCBw b3M7CiAKQEAgLTM2MDgsNyArMzYwOCw3IEBAIHBlZXAyX2ZpbGxfYnVmZmVy IChiYXNpY19ibG9jayBiYiwgcnR4IGluc24sIHJlZ3NldCBsaXZlKQogICBD T1BZX1JFR19TRVQgKHBlZXAyX2luc25fZGF0YVtwb3NdLmxpdmVfYmVmb3Jl LCBsaXZlKTsKICAgcGVlcDJfY3VycmVudF9jb3VudCsrOwogCi0gIGRmX3Np bXVsYXRlX29uZV9pbnNuX2ZvcndhcmRzIChiYiwgYXNfYSA8cnR4X2luc24g Kj4gKGluc24pLCBsaXZlKTsKKyAgZGZfc2ltdWxhdGVfb25lX2luc25fZm9y d2FyZHMgKGJiLCBpbnNuLCBsaXZlKTsKICAgcmV0dXJuIHRydWU7CiB9CiAK ZGlmZiAtLWdpdCBhL2djYy9yZWNvZy5oIGIvZ2NjL3JlY29nLmgKaW5kZXgg NDVlYTY3MS4uN2M5NTg4NSAxMDA2NDQKLS0tIGEvZ2NjL3JlY29nLmgKKysr IGIvZ2NjL3JlY29nLmgKQEAgLTI3OCw0MyArMjc4LDQzIEBAIHR5cGVkZWYg Y29uc3QgY2hhciAqICgqaW5zbl9vdXRwdXRfZm4pIChydHggKiwgcnR4X2lu c24gKik7CiAKIHN0cnVjdCBpbnNuX2dlbl9mbgogewotICB0eXBlZGVmIHJ0 eCAoKmYwKSAodm9pZCk7Ci0gIHR5cGVkZWYgcnR4ICgqZjEpIChydHgpOwot ICB0eXBlZGVmIHJ0eCAoKmYyKSAocnR4LCBydHgpOwotICB0eXBlZGVmIHJ0 eCAoKmYzKSAocnR4LCBydHgsIHJ0eCk7Ci0gIHR5cGVkZWYgcnR4ICgqZjQp IChydHgsIHJ0eCwgcnR4LCBydHgpOwotICB0eXBlZGVmIHJ0eCAoKmY1KSAo cnR4LCBydHgsIHJ0eCwgcnR4LCBydHgpOwotICB0eXBlZGVmIHJ0eCAoKmY2 KSAocnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7Ci0gIHR5cGVkZWYg cnR4ICgqZjcpIChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgp OwotICB0eXBlZGVmIHJ0eCAoKmY4KSAocnR4LCBydHgsIHJ0eCwgcnR4LCBy dHgsIHJ0eCwgcnR4LCBydHgpOwotICB0eXBlZGVmIHJ0eCAoKmY5KSAocnR4 LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7Ci0g IHR5cGVkZWYgcnR4ICgqZjEwKSAocnR4LCBydHgsIHJ0eCwgcnR4LCBydHgs IHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKLSAgdHlwZWRlZiBydHggKCpm MTEpIChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwg cnR4LCBydHgsIHJ0eCk7Ci0gIHR5cGVkZWYgcnR4ICgqZjEyKSAocnR4LCBy dHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBy dHgsIHJ0eCk7Ci0gIHR5cGVkZWYgcnR4ICgqZjEzKSAocnR4LCBydHgsIHJ0 eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0 eCwgcnR4KTsKLSAgdHlwZWRlZiBydHggKCpmMTQpIChydHgsIHJ0eCwgcnR4 LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4 LCBydHgsIHJ0eCk7Ci0gIHR5cGVkZWYgcnR4ICgqZjE1KSAocnR4LCBydHgs IHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgs IHJ0eCwgcnR4LCBydHgsIHJ0eCk7Ci0gIHR5cGVkZWYgcnR4ICgqZjE2KSAo cnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwg cnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKKyAgdHlwZWRl ZiBydHhfaW5zbiAqICgqZjApICh2b2lkKTsKKyAgdHlwZWRlZiBydHhfaW5z biAqICgqZjEpIChydHgpOworICB0eXBlZGVmIHJ0eF9pbnNuICogKCpmMikg KHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5zbiAqICgqZjMpIChydHgs IHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5zbiAqICgqZjQpIChydHgs IHJ0eCwgcnR4LCBydHgpOworICB0eXBlZGVmIHJ0eF9pbnNuICogKCpmNSkg KHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5z biAqICgqZjYpIChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKKyAg dHlwZWRlZiBydHhfaW5zbiAqICgqZjcpIChydHgsIHJ0eCwgcnR4LCBydHgs IHJ0eCwgcnR4LCBydHgpOworICB0eXBlZGVmIHJ0eF9pbnNuICogKCpmOCkg KHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKKyAg dHlwZWRlZiBydHhfaW5zbiAqICgqZjkpIChydHgsIHJ0eCwgcnR4LCBydHgs IHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5z biAqICgqZjEwKSAocnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4 LCBydHgsIHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5zbiAqICgqZjEx KSAocnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0 eCwgcnR4LCBydHgpOworICB0eXBlZGVmIHJ0eF9pbnNuICogKCpmMTIpIChy dHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBy dHgsIHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5zbiAqICgqZjEzKSAo cnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwg cnR4LCBydHgsIHJ0eCwgcnR4KTsKKyAgdHlwZWRlZiBydHhfaW5zbiAqICgq ZjE0KSAocnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgs IHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgpOworICB0eXBlZGVmIHJ0 eF9pbnNuICogKCpmMTUpIChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4 LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4 KTsKKyAgdHlwZWRlZiBydHhfaW5zbiAqICgqZjE2KSAocnR4LCBydHgsIHJ0 eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCwgcnR4LCBydHgsIHJ0 eCwgcnR4LCBydHgsIHJ0eCwgcnR4KTsKIAogICB0eXBlZGVmIGYwIHN0b3Jl ZF9mdW5jcHRyOwogCi0gIHJ0eCBvcGVyYXRvciAoKSAodm9pZCkgY29uc3Qg eyByZXR1cm4gKChmMClmdW5jKSAoKTsgfQotICBydHggb3BlcmF0b3IgKCkg KHJ0eCBhMCkgY29uc3QgeyByZXR1cm4gKChmMSlmdW5jKSAoYTApOyB9Ci0g IHJ0eCBvcGVyYXRvciAoKSAocnR4IGEwLCBydHggYTEpIGNvbnN0IHsgcmV0 dXJuICgoZjIpZnVuYykgKGEwLCBhMSk7IH0KLSAgcnR4IG9wZXJhdG9yICgp IChydHggYTAsIHJ0eCBhMSwgcnR4IGEyKSBjb25zdCB7IHJldHVybiAoKGYz KWZ1bmMpIChhMCwgYTEsIGEyKTsgfQotICBydHggb3BlcmF0b3IgKCkgKHJ0 eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMykgY29uc3QgeyByZXR1cm4g KChmNClmdW5jKSAoYTAsIGExLCBhMiwgYTMpOyB9Ci0gIHJ0eCBvcGVyYXRv ciAoKSAocnR4IGEwLCBydHggYTEsIHJ0eCBhMiwgcnR4IGEzLCBydHggYTQp IGNvbnN0IHsgcmV0dXJuICgoZjUpZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBh NCk7IH0KLSAgcnR4IG9wZXJhdG9yICgpIChydHggYTAsIHJ0eCBhMSwgcnR4 IGEyLCBydHggYTMsIHJ0eCBhNCwgcnR4IGE1KSBjb25zdCB7IHJldHVybiAo KGY2KWZ1bmMpIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KTsgfQotICBydHgg b3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywg cnR4IGE0LCBydHggYTUsIHJ0eCBhNikgY29uc3QgeyByZXR1cm4gKChmNylm dW5jKSAoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOyB9Ci0gIHJ0eCBv cGVyYXRvciAoKSAocnR4IGEwLCBydHggYTEsIHJ0eCBhMiwgcnR4IGEzLCBy dHggYTQsIHJ0eCBhNSwgcnR4IGE2LCBydHggYTcpIGNvbnN0IHsgcmV0dXJu ICgoZjgpZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7 IH0KLSAgcnR4IG9wZXJhdG9yICgpIChydHggYTAsIHJ0eCBhMSwgcnR4IGEy LCBydHggYTMsIHJ0eCBhNCwgcnR4IGE1LCBydHggYTYsIHJ0eCBhNywgcnR4 IGE4KSBjb25zdCB7IHJldHVybiAoKGY5KWZ1bmMpIChhMCwgYTEsIGEyLCBh MywgYTQsIGE1LCBhNiwgYTcsIGE4KTsgfQotICBydHggb3BlcmF0b3IgKCkg KHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBydHgg YTUsIHJ0eCBhNiwgcnR4IGE3LCBydHggYTgsIHJ0eCBhOSkgY29uc3QgeyBy ZXR1cm4gKChmMTApZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2 LCBhNywgYTgsIGE5KTsgfQotICBydHggb3BlcmF0b3IgKCkgKHJ0eCBhMCwg cnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBydHggYTUsIHJ0eCBh NiwgcnR4IGE3LCBydHggYTgsIHJ0eCBhOSwgcnR4IGExMCkgY29uc3QgeyBy ZXR1cm4gKChmMTEpZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2 LCBhNywgYTgsIGE5LCBhMTApOyB9Ci0gIHJ0eCBvcGVyYXRvciAoKSAocnR4 IGEwLCBydHggYTEsIHJ0eCBhMiwgcnR4IGEzLCBydHggYTQsIHJ0eCBhNSwg cnR4IGE2LCBydHggYTcsIHJ0eCBhOCwgcnR4IGE5LCBydHggYTEwLCBydHgg YTExKSBjb25zdCB7IHJldHVybiAoKGYxMilmdW5jKSAoYTAsIGExLCBhMiwg YTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExKTsgfQotICBy dHggb3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBh MywgcnR4IGE0LCBydHggYTUsIHJ0eCBhNiwgcnR4IGE3LCBydHggYTgsIHJ0 eCBhOSwgcnR4IGExMCwgcnR4IGExMSwgcnR4IGExMikgY29uc3QgeyByZXR1 cm4gKChmMTMpZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBh NywgYTgsIGE5LCBhMTAsIGExMSwgYTEyKTsgfQotICBydHggb3BlcmF0b3Ig KCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBy dHggYTUsIHJ0eCBhNiwgcnR4IGE3LCBydHggYTgsIHJ0eCBhOSwgcnR4IGEx MCwgcnR4IGExMSwgcnR4IGExMiwgcnR4IGExMykgY29uc3QgeyByZXR1cm4g KChmMTQpZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywg YTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMpOyB9Ci0gIHJ0eCBvcGVyYXRv ciAoKSAocnR4IGEwLCBydHggYTEsIHJ0eCBhMiwgcnR4IGEzLCBydHggYTQs IHJ0eCBhNSwgcnR4IGE2LCBydHggYTcsIHJ0eCBhOCwgcnR4IGE5LCBydHgg YTEwLCBydHggYTExLCBydHggYTEyLCBydHggYTEzLCBydHggYTE0KSBjb25z dCB7IHJldHVybiAoKGYxNSlmdW5jKSAoYTAsIGExLCBhMiwgYTMsIGE0LCBh NSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0KTsg fQotICBydHggb3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIs IHJ0eCBhMywgcnR4IGE0LCBydHggYTUsIHJ0eCBhNiwgcnR4IGE3LCBydHgg YTgsIHJ0eCBhOSwgcnR4IGExMCwgcnR4IGExMSwgcnR4IGExMiwgcnR4IGEx MywgcnR4IGExNCwgcnR4IGExNSkgY29uc3QgeyByZXR1cm4gKChmMTYpZnVu YykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBh MTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1KTsgfQorICBydHhfaW5zbiAq IG9wZXJhdG9yICgpICh2b2lkKSBjb25zdCB7IHJldHVybiAoKGYwKWZ1bmMp ICgpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0b3IgKCkgKHJ0eCBhMCkgY29u c3QgeyByZXR1cm4gKChmMSlmdW5jKSAoYTApOyB9CisgIHJ0eF9pbnNuICog b3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExKSBjb25zdCB7IHJldHVybiAo KGYyKWZ1bmMpIChhMCwgYTEpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0b3Ig KCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIpIGNvbnN0IHsgcmV0dXJuICgo ZjMpZnVuYykgKGEwLCBhMSwgYTIpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0 b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMykgY29uc3Qg eyByZXR1cm4gKChmNClmdW5jKSAoYTAsIGExLCBhMiwgYTMpOyB9CisgIHJ0 eF9pbnNuICogb3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIs IHJ0eCBhMywgcnR4IGE0KSBjb25zdCB7IHJldHVybiAoKGY1KWZ1bmMpIChh MCwgYTEsIGEyLCBhMywgYTQpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0b3Ig KCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBy dHggYTUpIGNvbnN0IHsgcmV0dXJuICgoZjYpZnVuYykgKGEwLCBhMSwgYTIs IGEzLCBhNCwgYTUpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0b3IgKCkgKHJ0 eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBydHggYTUs IHJ0eCBhNikgY29uc3QgeyByZXR1cm4gKChmNylmdW5jKSAoYTAsIGExLCBh MiwgYTMsIGE0LCBhNSwgYTYpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0b3Ig KCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBy dHggYTUsIHJ0eCBhNiwgcnR4IGE3KSBjb25zdCB7IHJldHVybiAoKGY4KWZ1 bmMpIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpOyB9CisgIHJ0 eF9pbnNuICogb3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIs IHJ0eCBhMywgcnR4IGE0LCBydHggYTUsIHJ0eCBhNiwgcnR4IGE3LCBydHgg YTgpIGNvbnN0IHsgcmV0dXJuICgoZjkpZnVuYykgKGEwLCBhMSwgYTIsIGEz LCBhNCwgYTUsIGE2LCBhNywgYTgpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0 b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0 LCBydHggYTUsIHJ0eCBhNiwgcnR4IGE3LCBydHggYTgsIHJ0eCBhOSkgY29u c3QgeyByZXR1cm4gKChmMTApZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwg YTUsIGE2LCBhNywgYTgsIGE5KTsgfQorICBydHhfaW5zbiAqIG9wZXJhdG9y ICgpIChydHggYTAsIHJ0eCBhMSwgcnR4IGEyLCBydHggYTMsIHJ0eCBhNCwg cnR4IGE1LCBydHggYTYsIHJ0eCBhNywgcnR4IGE4LCBydHggYTksIHJ0eCBh MTApIGNvbnN0IHsgcmV0dXJuICgoZjExKWZ1bmMpIChhMCwgYTEsIGEyLCBh MywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEwKTsgfQorICBydHhfaW5z biAqIG9wZXJhdG9yICgpIChydHggYTAsIHJ0eCBhMSwgcnR4IGEyLCBydHgg YTMsIHJ0eCBhNCwgcnR4IGE1LCBydHggYTYsIHJ0eCBhNywgcnR4IGE4LCBy dHggYTksIHJ0eCBhMTAsIHJ0eCBhMTEpIGNvbnN0IHsgcmV0dXJuICgoZjEy KWZ1bmMpIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBh OSwgYTEwLCBhMTEpOyB9CisgIHJ0eF9pbnNuICogb3BlcmF0b3IgKCkgKHJ0 eCBhMCwgcnR4IGExLCBydHggYTIsIHJ0eCBhMywgcnR4IGE0LCBydHggYTUs IHJ0eCBhNiwgcnR4IGE3LCBydHggYTgsIHJ0eCBhOSwgcnR4IGExMCwgcnR4 IGExMSwgcnR4IGExMikgY29uc3QgeyByZXR1cm4gKChmMTMpZnVuYykgKGEw LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGEx MSwgYTEyKTsgfQorICBydHhfaW5zbiAqIG9wZXJhdG9yICgpIChydHggYTAs IHJ0eCBhMSwgcnR4IGEyLCBydHggYTMsIHJ0eCBhNCwgcnR4IGE1LCBydHgg YTYsIHJ0eCBhNywgcnR4IGE4LCBydHggYTksIHJ0eCBhMTAsIHJ0eCBhMTEs IHJ0eCBhMTIsIHJ0eCBhMTMpIGNvbnN0IHsgcmV0dXJuICgoZjE0KWZ1bmMp IChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwgYTEw LCBhMTEsIGExMiwgYTEzKTsgfQorICBydHhfaW5zbiAqIG9wZXJhdG9yICgp IChydHggYTAsIHJ0eCBhMSwgcnR4IGEyLCBydHggYTMsIHJ0eCBhNCwgcnR4 IGE1LCBydHggYTYsIHJ0eCBhNywgcnR4IGE4LCBydHggYTksIHJ0eCBhMTAs IHJ0eCBhMTEsIHJ0eCBhMTIsIHJ0eCBhMTMsIHJ0eCBhMTQpIGNvbnN0IHsg cmV0dXJuICgoZjE1KWZ1bmMpIChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBh NiwgYTcsIGE4LCBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQpOyB9Cisg IHJ0eF9pbnNuICogb3BlcmF0b3IgKCkgKHJ0eCBhMCwgcnR4IGExLCBydHgg YTIsIHJ0eCBhMywgcnR4IGE0LCBydHggYTUsIHJ0eCBhNiwgcnR4IGE3LCBy dHggYTgsIHJ0eCBhOSwgcnR4IGExMCwgcnR4IGExMSwgcnR4IGExMiwgcnR4 IGExMywgcnR4IGExNCwgcnR4IGExNSkgY29uc3QgeyByZXR1cm4gKChmMTYp ZnVuYykgKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5 LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1KTsgfQogCiAgIC8vIFRo aXMgaXMgZm9yIGNvbXBhdGliaWxpdHkgb2YgY29kZSB0aGF0IGludm9rZXMg ZnVuY3Rpb25zIGxpa2UKICAgLy8gICAoKmZ1bmNwdHIpIChhcmcpCmRpZmYg LS1naXQgYS9nY2MvcnRsLmggYi9nY2MvcnRsLmgKaW5kZXggZTVlNDU2MC4u ZTg4ZjNjOCAxMDA2NDQKLS0tIGEvZ2NjL3J0bC5oCisrKyBiL2djYy9ydGwu aApAQCAtNjM2LDYgKzYzNiw4IEBAIGNsYXNzIEdUWSgoKSkgcnR4X25vdGUg OiBwdWJsaWMgcnR4X2luc24KIAogI2RlZmluZSBOVUxMX1JUWCAocnR4KSAw CiAKKyNkZWZpbmUgTlVMTF9JTlNOIChydHhfaW5zbiAqKSAwCisKIC8qIFRo ZSAibmV4dCIgYW5kICJwcmV2aW91cyIgUlRYLCByZWxhdGl2ZSB0byB0aGlz IG9uZS4gICovCiAKICNkZWZpbmUgUlRYX05FWFQoWCkgKHJ0eF9uZXh0W0dF VF9DT0RFIChYKV0gPT0gMCA/IE5VTEwJCQlcCkBAIC04MjcsNiArODI5LDE0 IEBAIGlzX2FfaGVscGVyIDxydHhfZGVidWdfaW5zbiAqPjo6dGVzdCAocnR4 IHJ0KQogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDw+CiBpbmxpbmUgYm9vbAor aXNfYV9oZWxwZXIgPHJ0eF9kZWJ1Z19pbnNuICo+Ojp0ZXN0IChydHhfaW5z biAqaW5zbikKK3sKKyAgcmV0dXJuIERFQlVHX0lOU05fUCAoaW5zbik7Cit9 CisKK3RlbXBsYXRlIDw+Cit0ZW1wbGF0ZSA8PgoraW5saW5lIGJvb2wKIGlz X2FfaGVscGVyIDxydHhfbm9uanVtcF9pbnNuICo+Ojp0ZXN0IChydHggcnQp CiB7CiAgIHJldHVybiBOT05KVU1QX0lOU05fUCAocnQpOwpAQCAtODQzLDYg Kzg1MywxNCBAQCBpc19hX2hlbHBlciA8cnR4X2p1bXBfaW5zbiAqPjo6dGVz dCAocnR4IHJ0KQogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDw+CiBpbmxpbmUg Ym9vbAoraXNfYV9oZWxwZXIgPHJ0eF9qdW1wX2luc24gKj46OnRlc3QgKHJ0 eF9pbnNuICppbnNuKQoreworICByZXR1cm4gSlVNUF9QIChpbnNuKTsKK30K KwordGVtcGxhdGUgPD4KK3RlbXBsYXRlIDw+CitpbmxpbmUgYm9vbAogaXNf YV9oZWxwZXIgPHJ0eF9jYWxsX2luc24gKj46OnRlc3QgKHJ0eCBydCkKIHsK ICAgcmV0dXJuIENBTExfUCAocnQpOwpAQCAtMjY2Miw3ICsyNjgwLDcgQEAg ZXh0ZXJuIHJ0eF9pbnNuICplbWl0X2RlYnVnX2luc25fYmVmb3JlIChydHgs IHJ0eCk7CiBleHRlcm4gcnR4X2luc24gKmVtaXRfZGVidWdfaW5zbl9iZWZv cmVfbm9sb2MgKHJ0eCwgcnR4KTsKIGV4dGVybiBydHhfaW5zbiAqZW1pdF9k ZWJ1Z19pbnNuX2JlZm9yZV9zZXRsb2MgKHJ0eCwgcnR4LCBpbnQpOwogZXh0 ZXJuIHJ0eF9iYXJyaWVyICplbWl0X2JhcnJpZXJfYmVmb3JlIChydHgpOwot ZXh0ZXJuIHJ0eF9pbnNuICplbWl0X2xhYmVsX2JlZm9yZSAocnR4LCBydHhf aW5zbiAqKTsKK2V4dGVybiBydHhfY29kZV9sYWJlbCAqZW1pdF9sYWJlbF9i ZWZvcmUgKHJ0eCAsIHJ0eF9pbnNuICopOwogZXh0ZXJuIHJ0eF9ub3RlICpl bWl0X25vdGVfYmVmb3JlIChlbnVtIGluc25fbm90ZSwgcnR4KTsKIGV4dGVy biBydHhfaW5zbiAqZW1pdF9pbnNuX2FmdGVyIChydHgsIHJ0eCk7CiBleHRl cm4gcnR4X2luc24gKmVtaXRfaW5zbl9hZnRlcl9ub2xvYyAocnR4LCBydHgs IGJhc2ljX2Jsb2NrKTsKQEAgLTI2ODMsNyArMjcwMSw3IEBAIGV4dGVybiBy dHhfaW5zbiAqZW1pdF9pbnNuIChydHgpOwogZXh0ZXJuIHJ0eF9pbnNuICpl bWl0X2RlYnVnX2luc24gKHJ0eCk7CiBleHRlcm4gcnR4X2luc24gKmVtaXRf anVtcF9pbnNuIChydHgpOwogZXh0ZXJuIHJ0eF9pbnNuICplbWl0X2NhbGxf aW5zbiAocnR4KTsKLWV4dGVybiBydHhfaW5zbiAqZW1pdF9sYWJlbCAocnR4 KTsKK2V4dGVybiBydHhfY29kZV9sYWJlbCAqZW1pdF9sYWJlbCAocnR4KTsK IGV4dGVybiBydHhfanVtcF90YWJsZV9kYXRhICplbWl0X2p1bXBfdGFibGVf ZGF0YSAocnR4KTsKIGV4dGVybiBydHhfYmFycmllciAqZW1pdF9iYXJyaWVy ICh2b2lkKTsKIGV4dGVybiBydHhfbm90ZSAqZW1pdF9ub3RlIChlbnVtIGlu c25fbm90ZSk7CkBAIC0zMzM2LDE0ICszMzU0LDE0IEBAIGV4dGVybiBpbnQg ZWhfcmV0dXJuanVtcF9wIChydHhfaW5zbiAqKTsKIGV4dGVybiBpbnQgb25s eWp1bXBfcCAoY29uc3QgcnR4X2luc24gKik7CiBleHRlcm4gaW50IG9ubHlf c2V0c19jYzBfcCAoY29uc3RfcnR4KTsKIGV4dGVybiBpbnQgc2V0c19jYzBf cCAoY29uc3RfcnR4KTsKLWV4dGVybiBpbnQgaW52ZXJ0X2p1bXBfMSAocnR4 X2luc24gKiwgcnR4KTsKLWV4dGVybiBpbnQgaW52ZXJ0X2p1bXAgKHJ0eF9p bnNuICosIHJ0eCwgaW50KTsKK2V4dGVybiBpbnQgaW52ZXJ0X2p1bXBfMSAo cnR4X2p1bXBfaW5zbiAqLCBydHgpOworZXh0ZXJuIGludCBpbnZlcnRfanVt cCAocnR4X2p1bXBfaW5zbiAqLCBydHgsIGludCk7CiBleHRlcm4gaW50IHJ0 eF9yZW51bWJlcmVkX2VxdWFsX3AgKGNvbnN0X3J0eCwgY29uc3RfcnR4KTsK IGV4dGVybiBpbnQgdHJ1ZV9yZWdudW0gKGNvbnN0X3J0eCk7CiBleHRlcm4g dW5zaWduZWQgaW50IHJlZ19vcl9zdWJyZWdubyAoY29uc3RfcnR4KTsKIGV4 dGVybiBpbnQgcmVkaXJlY3RfanVtcF8xIChydHgsIHJ0eCk7Ci1leHRlcm4g dm9pZCByZWRpcmVjdF9qdW1wXzIgKHJ0eCwgcnR4LCBydHgsIGludCwgaW50 KTsKLWV4dGVybiBpbnQgcmVkaXJlY3RfanVtcCAocnR4LCBydHgsIGludCk7 CitleHRlcm4gdm9pZCByZWRpcmVjdF9qdW1wXzIgKHJ0eF9qdW1wX2luc24g KiwgcnR4LCBydHgsIGludCwgaW50KTsKK2V4dGVybiBpbnQgcmVkaXJlY3Rf anVtcCAocnR4X2p1bXBfaW5zbiAqLCBydHgsIGludCk7CiBleHRlcm4gdm9p ZCByZWJ1aWxkX2p1bXBfbGFiZWxzIChydHhfaW5zbiAqKTsKIGV4dGVybiB2 b2lkIHJlYnVpbGRfanVtcF9sYWJlbHNfY2hhaW4gKHJ0eF9pbnNuICopOwog ZXh0ZXJuIHJ0eCByZXZlcnNlZF9jb21wYXJpc29uIChjb25zdF9ydHgsIG1h Y2hpbmVfbW9kZSk7CkBAIC0zNDI2LDcgKzM0NDQsNyBAQCBleHRlcm4gdm9p ZCBwcmludF9pbmxpbmVfcnR4IChGSUxFICosIGNvbnN0X3J0eCwgaW50KTsK ICAgIG5vdCBiZSBpbiBzY2hlZC12aXMuYyBidXQgaW4gcnRsLmMsIGJlY2F1 c2UgdGhleSBhcmUgbm90IG9ubHkgdXNlZAogICAgYnkgdGhlIHNjaGVkdWxl ciBhbnltb3JlIGJ1dCBmb3IgYWxsICJzbGltIiBSVEwgZHVtcGluZy4gICov CiBleHRlcm4gdm9pZCBkdW1wX3ZhbHVlX3NsaW0gKEZJTEUgKiwgY29uc3Rf cnR4LCBpbnQpOwotZXh0ZXJuIHZvaWQgZHVtcF9pbnNuX3NsaW0gKEZJTEUg KiwgY29uc3RfcnR4KTsKK2V4dGVybiB2b2lkIGR1bXBfaW5zbl9zbGltIChG SUxFICosIGNvbnN0IHJ0eF9pbnNuICopOwogZXh0ZXJuIHZvaWQgZHVtcF9y dGxfc2xpbSAoRklMRSAqLCBjb25zdCBydHhfaW5zbiAqLCBjb25zdCBydHhf aW5zbiAqLAogCQkJICAgaW50LCBpbnQpOwogZXh0ZXJuIHZvaWQgcHJpbnRf dmFsdWUgKHByZXR0eV9wcmludGVyICosIGNvbnN0X3J0eCwgaW50KTsKQEAg LTM0MzgsNyArMzQ1Niw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpzdHJfcGF0 dGVybl9zbGltIChjb25zdF9ydHgpOwogLyogSW4gc3RtdC5jICovCiBleHRl cm4gdm9pZCBleHBhbmRfbnVsbF9yZXR1cm4gKHZvaWQpOwogZXh0ZXJuIHZv aWQgZXhwYW5kX25ha2VkX3JldHVybiAodm9pZCk7Ci1leHRlcm4gdm9pZCBl bWl0X2p1bXAgKHJ0eCk7CitleHRlcm4gdm9pZCBlbWl0X2p1bXAgKHJ0eF9j b2RlX2xhYmVsICopOwogCiAvKiBJbiBleHByLmMgKi8KIGV4dGVybiBydHgg bW92ZV9ieV9waWVjZXMgKHJ0eCwgcnR4LCB1bnNpZ25lZCBIT1NUX1dJREVf SU5ULApkaWZmIC0tZ2l0IGEvZ2NjL3J0bGFuYWwuYyBiL2djYy9ydGxhbmFs LmMKaW5kZXggNzQzYWFkNi4uN2QxMGFiZSAxMDA2NDQKLS0tIGEvZ2NjL3J0 bGFuYWwuYworKysgYi9nY2MvcnRsYW5hbC5jCkBAIC0yOTE0LDE0ICsyOTE0 LDE0IEBAIHJ0eF9yZWZlcmVuY2VkX3AgKGNvbnN0X3J0eCB4LCBjb25zdF9y dHggYm9keSkKIGJvb2wKIHRhYmxlanVtcF9wIChjb25zdCBydHhfaW5zbiAq aW5zbiwgcnR4ICpsYWJlbHAsIHJ0eF9qdW1wX3RhYmxlX2RhdGEgKip0YWJs ZXApCiB7Ci0gIHJ0eCBsYWJlbCwgdGFibGU7CisgIHJ0eCB0YWJsZTsKIAog ICBpZiAoIUpVTVBfUCAoaW5zbikpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0g IGxhYmVsID0gSlVNUF9MQUJFTCAoaW5zbik7Ci0gIGlmIChsYWJlbCAhPSBO VUxMX1JUWCAmJiAhQU5ZX1JFVFVSTl9QIChsYWJlbCkKLSAgICAgICYmICh0 YWJsZSA9IE5FWFRfSU5TTiAoYXNfYSA8cnR4X2luc24gKj4gKGxhYmVsKSkp ICE9IE5VTExfUlRYCisgIHJ0eF9pbnNuICpsYWJlbCA9IEpVTVBfTEFCRUxf QVNfSU5TTiAoaW5zbik7CisgIGlmIChsYWJlbCAmJiAhQU5ZX1JFVFVSTl9Q IChsYWJlbCkKKyAgICAgICYmICh0YWJsZSA9IE5FWFRfSU5TTiAobGFiZWwp KSAhPSBOVUxMX1JUWAogICAgICAgJiYgSlVNUF9UQUJMRV9EQVRBX1AgKHRh YmxlKSkKICAgICB7CiAgICAgICBpZiAobGFiZWxwKQpkaWZmIC0tZ2l0IGEv Z2NjL3NjaGVkLWRlcHMuYyBiL2djYy9zY2hlZC1kZXBzLmMKaW5kZXggNTQz NDgzMS4uZTZmMTAwMyAxMDA2NDQKLS0tIGEvZ2NjL3NjaGVkLWRlcHMuYwor KysgYi9nY2Mvc2NoZWQtZGVwcy5jCkBAIC0yNjQ5LDcgKzI2NDksNyBAQCBz Y2hlZF9hbmFseXplXzIgKHN0cnVjdCBkZXBzX2Rlc2MgKmRlcHMsIHJ0eCB4 LCBydHhfaW5zbiAqaW5zbikKICAgICBjYXNlIE1FTToKICAgICAgIHsKIAkv KiBSZWFkaW5nIG1lbW9yeS4gICovCi0JcnR4IHU7CisJcnR4X2luc25fbGlz dCAqdTsKIAlydHhfaW5zbl9saXN0ICpwZW5kaW5nOwogCXJ0eF9leHByX2xp c3QgKnBlbmRpbmdfbWVtOwogCXJ0eCB0ID0geDsKQEAgLTI3MDAsMTEgKzI3 MDAsMTAgQEAgc2NoZWRfYW5hbHl6ZV8yIChzdHJ1Y3QgZGVwc19kZXNjICpk ZXBzLCBydHggeCwgcnR4X2luc24gKmluc24pCiAJCXBlbmRpbmdfbWVtID0g cGVuZGluZ19tZW0tPm5leHQgKCk7CiAJICAgICAgfQogCi0JICAgIGZvciAo dSA9IGRlcHMtPmxhc3RfcGVuZGluZ19tZW1vcnlfZmx1c2g7IHU7IHUgPSBY RVhQICh1LCAxKSkKLQkgICAgICBhZGRfZGVwZW5kZW5jZSAoaW5zbiwgYXNf YSA8cnR4X2luc24gKj4gKFhFWFAgKHUsIDApKSwKLQkJCSAgICAgIFJFR19E RVBfQU5USSk7CisJICAgIGZvciAodSA9IGRlcHMtPmxhc3RfcGVuZGluZ19t ZW1vcnlfZmx1c2g7IHU7IHUgPSB1LT5uZXh0ICgpKQorCSAgICAgIGFkZF9k ZXBlbmRlbmNlIChpbnNuLCB1LT5pbnNuICgpLCBSRUdfREVQX0FOVEkpOwog Ci0JICAgIGZvciAodSA9IGRlcHMtPnBlbmRpbmdfanVtcF9pbnNuczsgdTsg dSA9IFhFWFAgKHUsIDEpKQorCSAgICBmb3IgKHUgPSBkZXBzLT5wZW5kaW5n X2p1bXBfaW5zbnM7IHU7IHUgPSB1LT5uZXh0ICgpKQogCSAgICAgIGlmIChk ZXBzX21heV90cmFwX3AgKHgpKQogCQl7CiAJCSAgaWYgKChzY2hlZF9kZXBz X2luZm8tPmdlbmVyYXRlX3NwZWNfZGVwcykKQEAgLTI3MTMsMTEgKzI3MTIs MTAgQEAgc2NoZWRfYW5hbHl6ZV8yIChzdHJ1Y3QgZGVwc19kZXNjICpkZXBz LCBydHggeCwgcnR4X2luc24gKmluc24pCiAJCSAgICAgIGRzX3QgZHMgPSBz ZXRfZGVwX3dlYWsgKERFUF9BTlRJLCBCRUdJTl9DT05UUk9MLAogCQkJCQkg ICAgICBNQVhfREVQX1dFQUspOwogCQkgICAgICAKLQkJICAgICAgbm90ZV9k ZXAgKGFzX2EgPHJ0eF9pbnNuICo+IChYRVhQICh1LCAwKSksIGRzKTsKKwkJ ICAgICAgbm90ZV9kZXAgKHUtPmluc24gKCksIGRzKTsKIAkJICAgIH0KIAkJ ICBlbHNlCi0JCSAgICBhZGRfZGVwZW5kZW5jZSAoaW5zbiwgYXNfYSA8cnR4 X2luc24gKj4gKFhFWFAgKHUsIDApKSwKLQkJCQkgICAgUkVHX0RFUF9DT05U Uk9MKTsKKwkJICAgIGFkZF9kZXBlbmRlbmNlIChpbnNuLCB1LT5pbnNuICgp LCBSRUdfREVQX0NPTlRST0wpOwogCQl9CiAJICB9CiAKQEAgLTMwODgsNyAr MzA4Niw3IEBAIHNjaGVkX2FuYWx5emVfaW5zbiAoc3RydWN0IGRlcHNfZGVz YyAqZGVwcywgcnR4IHgsIHJ0eF9pbnNuICppbnNuKQogICBpZiAoREVCVUdf SU5TTl9QIChpbnNuKSkKICAgICB7CiAgICAgICBydHhfaW5zbiAqcHJldiA9 IGRlcHMtPmxhc3RfZGVidWdfaW5zbjsKLSAgICAgIHJ0eCB1OworICAgICAg cnR4X2luc25fbGlzdCAqdTsKIAogICAgICAgaWYgKCFkZXBzLT5yZWFkb25s eSkKIAlkZXBzLT5sYXN0X2RlYnVnX2luc24gPSBpbnNuOwpAQCAtMzEwMCw4 ICszMDk4LDggQEAgc2NoZWRfYW5hbHl6ZV9pbnNuIChzdHJ1Y3QgZGVwc19k ZXNjICpkZXBzLCBydHggeCwgcnR4X2luc24gKmluc24pCiAJCQkgICBSRUdf REVQX0FOVEksIGZhbHNlKTsKIAogICAgICAgaWYgKCFzZWxfc2NoZWRfcCAo KSkKLQlmb3IgKHUgPSBkZXBzLT5sYXN0X3BlbmRpbmdfbWVtb3J5X2ZsdXNo OyB1OyB1ID0gWEVYUCAodSwgMSkpCi0JICBhZGRfZGVwZW5kZW5jZSAoaW5z biwgYXNfYSA8cnR4X2luc24gKj4gKFhFWFAgKHUsIDApKSwgUkVHX0RFUF9B TlRJKTsKKwlmb3IgKHUgPSBkZXBzLT5sYXN0X3BlbmRpbmdfbWVtb3J5X2Zs dXNoOyB1OyB1ID0gdS0+bmV4dCAoKSkKKwkgIGFkZF9kZXBlbmRlbmNlIChp bnNuLCB1LT5pbnNuICgpLCBSRUdfREVQX0FOVEkpOwogCiAgICAgICBFWEVD VVRFX0lGX1NFVF9JTl9SRUdfU0VUIChyZWdfcGVuZGluZ191c2VzLCAwLCBp LCByc2kpCiAJewpkaWZmIC0tZ2l0IGEvZ2NjL3NjaGVkLXZpcy5jIGIvZ2Nj L3NjaGVkLXZpcy5jCmluZGV4IDMyZjdhN2MuLjMxNzk0ZTYgMTAwNjQ0Ci0t LSBhL2djYy9zY2hlZC12aXMuYworKysgYi9nY2Mvc2NoZWQtdmlzLmMKQEAg LTY3LDcgKzY3LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBD T1BZSU5HMy4gIElmIG5vdCBzZWUKICAgIHBvaW50ZXIsIHZpYSBzdHJfcGF0 dGVybl9zbGltLCBidXQgdGhpcyB1c2FnZSBpcyBkaXNjb3VyYWdlZC4gICov CiAKIC8qIEZvciBpbnNucyB3ZSBwcmludCBwYXR0ZXJucywgYW5kIGZvciBz b21lIHBhdHRlcm5zIHdlIHByaW50IGluc25zLi4uICAqLwotc3RhdGljIHZv aWQgcHJpbnRfaW5zbl93aXRoX25vdGVzIChwcmV0dHlfcHJpbnRlciAqLCBj b25zdF9ydHgpOworc3RhdGljIHZvaWQgcHJpbnRfaW5zbl93aXRoX25vdGVz IChwcmV0dHlfcHJpbnRlciAqLCBjb25zdCBydHhfaW5zbiAqKTsKIAogLyog VGhpcyByZWNvZ25pemVzIHJ0eCdlbiBjbGFzc2lmaWVkIGFzIGV4cHJlc3Np b25zLiAgVGhlc2UgYXJlIGFsd2F5cwogICAgcmVwcmVzZW50IHNvbWUgYWN0 aW9uIG9uIHZhbHVlcyBvciByZXN1bHRzIG9mIG90aGVyIGV4cHJlc3Npb24s IHRoYXQKQEAgLTY2OSw3ICs2NjksNyBAQCBwcmludF9wYXR0ZXJuIChwcmV0 dHlfcHJpbnRlciAqcHAsIGNvbnN0X3J0eCB4LCBpbnQgdmVyYm9zZSkKICAg IHdpdGggdGhlaXIgSU5TTl9VSURzLiAgKi8KIAogdm9pZAotcHJpbnRfaW5z biAocHJldHR5X3ByaW50ZXIgKnBwLCBjb25zdF9ydHggeCwgaW50IHZlcmJv c2UpCitwcmludF9pbnNuIChwcmV0dHlfcHJpbnRlciAqcHAsIGNvbnN0IHJ0 eF9pbnNuICp4LCBpbnQgdmVyYm9zZSkKIHsKICAgaWYgKHZlcmJvc2UpCiAg ICAgewpAQCAtNzg3LDcgKzc4Nyw3IEBAIHByaW50X2luc24gKHByZXR0eV9w cmludGVyICpwcCwgY29uc3RfcnR4IHgsIGludCB2ZXJib3NlKQogICAgbm90 ZSBhdHRhY2hlZCB0byB0aGUgaW5zdHJ1Y3Rpb24uICAqLwogCiBzdGF0aWMg dm9pZAotcHJpbnRfaW5zbl93aXRoX25vdGVzIChwcmV0dHlfcHJpbnRlciAq cHAsIGNvbnN0X3J0eCB4KQorcHJpbnRfaW5zbl93aXRoX25vdGVzIChwcmV0 dHlfcHJpbnRlciAqcHAsIGNvbnN0IHJ0eF9pbnNuICp4KQogewogICBwcF9z dHJpbmcgKHBwLCBwcmludF9ydHhfaGVhZCk7CiAgIHByaW50X2luc24gKHBw LCB4LCAxKTsKQEAgLTgyMyw3ICs4MjMsNyBAQCBkdW1wX3ZhbHVlX3NsaW0g KEZJTEUgKmYsIGNvbnN0X3J0eCB4LCBpbnQgdmVyYm9zZSkKIC8qIEVtaXQg YSBzbGltIGR1bXAgb2YgWCAoYW4gaW5zbikgdG8gdGhlIGZpbGUgRiwgaW5j bHVkaW5nIGFueSByZWdpc3RlcgogICAgbm90ZSBhdHRhY2hlZCB0byB0aGUg aW5zdHJ1Y3Rpb24uICAqLwogdm9pZAotZHVtcF9pbnNuX3NsaW0gKEZJTEUg KmYsIGNvbnN0X3J0eCB4KQorZHVtcF9pbnNuX3NsaW0gKEZJTEUgKmYsIGNv bnN0IHJ0eF9pbnNuICp4KQogewogICBwcmV0dHlfcHJpbnRlciBydGxfc2xp bV9wcDsKICAgcnRsX3NsaW1fcHAuYnVmZmVyLT5zdHJlYW0gPSBmOwpAQCAt ODkzLDkgKzg5Myw5IEBAIHN0cl9wYXR0ZXJuX3NsaW0gKGNvbnN0X3J0eCB4 KQogfQogCiAvKiBFbWl0IGEgc2xpbSBkdW1wIG9mIFggKGFuIGluc24pIHRv IHN0ZGVyci4gICovCi1leHRlcm4gdm9pZCBkZWJ1Z19pbnNuX3NsaW0gKGNv bnN0X3J0eCk7CitleHRlcm4gdm9pZCBkZWJ1Z19pbnNuX3NsaW0gKGNvbnN0 IHJ0eF9pbnNuICopOwogREVCVUdfRlVOQ1RJT04gdm9pZAotZGVidWdfaW5z bl9zbGltIChjb25zdF9ydHggeCkKK2RlYnVnX2luc25fc2xpbSAoY29uc3Qg cnR4X2luc24gKngpCiB7CiAgIGR1bXBfaW5zbl9zbGltIChzdGRlcnIsIHgp OwogfQpkaWZmIC0tZ2l0IGEvZ2NjL3N0bXQuYyBiL2djYy9zdG10LmMKaW5k ZXggNDVkYzQ1Zi4uYTY0MThmZiAxMDA2NDQKLS0tIGEvZ2NjL3N0bXQuYwor KysgYi9nY2Mvc3RtdC5jCkBAIC0xMzUsMTIgKzEzNSwxMyBAQCBzdGF0aWMg dm9pZCBiYWxhbmNlX2Nhc2Vfbm9kZXMgKGNhc2Vfbm9kZV9wdHIgKiwgY2Fz ZV9ub2RlX3B0cik7CiBzdGF0aWMgaW50IG5vZGVfaGFzX2xvd19ib3VuZCAo Y2FzZV9ub2RlX3B0ciwgdHJlZSk7CiBzdGF0aWMgaW50IG5vZGVfaGFzX2hp Z2hfYm91bmQgKGNhc2Vfbm9kZV9wdHIsIHRyZWUpOwogc3RhdGljIGludCBu b2RlX2lzX2JvdW5kZWQgKGNhc2Vfbm9kZV9wdHIsIHRyZWUpOwotc3RhdGlj IHZvaWQgZW1pdF9jYXNlX25vZGVzIChydHgsIGNhc2Vfbm9kZV9wdHIsIHJ0 eCwgaW50LCB0cmVlKTsKK3N0YXRpYyB2b2lkIGVtaXRfY2FzZV9ub2RlcyAo cnR4LCBjYXNlX25vZGVfcHRyLCBydHhfY29kZV9sYWJlbCAqLCBpbnQsIHRy ZWUpOwogDAogLyogUmV0dXJuIHRoZSBydHgtbGFiZWwgdGhhdCBjb3JyZXNw b25kcyB0byBhIExBQkVMX0RFQ0wsCi0gICBjcmVhdGluZyBpdCBpZiBuZWNl c3NhcnkuICAqLworICAgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgSWYg bGFiZWwgd2FzIGRlbGV0ZWQsIHRoZSBjb3JyZXNwb25kaW5nCisgICBub3Rl IChOT1RFX0lOU05fREVMRVRFRHtfREVCVUcsfV9MQUJFTCkgaW5zbiB3aWxs IGJlIHJldHVybmVkLiAgKi8KIAotcnR4CitydHhfaW5zbiAqCiBsYWJlbF9y dHggKHRyZWUgbGFiZWwpCiB7CiAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAo bGFiZWwpID09IExBQkVMX0RFQ0wpOwpAQCAtMTUzLDE1ICsxNTQsMTUgQEAg bGFiZWxfcnR4ICh0cmVlIGxhYmVsKQogCUxBQkVMX1BSRVNFUlZFX1AgKHIp ID0gMTsKICAgICB9CiAKLSAgcmV0dXJuIERFQ0xfUlRMIChsYWJlbCk7Cisg IHJldHVybiBhc19hIDxydHhfaW5zbiAqPiAoREVDTF9SVEwgKGxhYmVsKSk7 CiB9CiAKIC8qIEFzIGFib3ZlLCBidXQgYWxzbyBwdXQgaXQgb24gdGhlIGZv cmNlZC1yZWZlcmVuY2UgbGlzdCBvZiB0aGUKICAgIGZ1bmN0aW9uIHRoYXQg Y29udGFpbnMgaXQuICAqLwotcnR4CitydHhfaW5zbiAqCiBmb3JjZV9sYWJl bF9ydHggKHRyZWUgbGFiZWwpCiB7Ci0gIHJ0eF9pbnNuICpyZWYgPSBhc19h IDxydHhfaW5zbiAqPiAobGFiZWxfcnR4IChsYWJlbCkpOworICBydHhfaW5z biAqcmVmID0gbGFiZWxfcnR4IChsYWJlbCk7CiAgIHRyZWUgZnVuY3Rpb24g PSBkZWNsX2Z1bmN0aW9uX2NvbnRleHQgKGxhYmVsKTsKIAogICBnY2NfYXNz ZXJ0IChmdW5jdGlvbik7CkBAIC0xNzAsMTAgKzE3MSwxOCBAQCBmb3JjZV9s YWJlbF9ydHggKHRyZWUgbGFiZWwpCiAgIHJldHVybiByZWY7CiB9CiAKKy8q IEFzIGxhYmVsX3J0eCwgYnV0IGVuc3VyZXMgKGluIGNoZWNrIGJ1aWxkKSwg dGhhdCByZXR1cm5lZCB2YWx1ZSBpcworICAgYW4gZXhpc3RpbmcgbGFiZWwg KGkuZS4gcnR4IHdpdGggY29kZSBDT0RFX0xBQkVMKS4gICovCitydHhfY29k ZV9sYWJlbCAqCitsaXZlX2xhYmVsX3J0eCAodHJlZSBsYWJlbCkKK3sKKyAg cmV0dXJuIGFzX2EgPHJ0eF9jb2RlX2xhYmVsICo+IChsYWJlbF9ydHggKGxh YmVsKSk7Cit9CisKIC8qIEFkZCBhbiB1bmNvbmRpdGlvbmFsIGp1bXAgdG8g TEFCRUwgYXMgdGhlIG5leHQgc2VxdWVudGlhbCBpbnN0cnVjdGlvbi4gICov CiAKIHZvaWQKLWVtaXRfanVtcCAocnR4IGxhYmVsKQorZW1pdF9qdW1wIChy dHhfY29kZV9sYWJlbCAqbGFiZWwpCiB7CiAgIGRvX3BlbmRpbmdfc3RhY2tf YWRqdXN0ICgpOwogICBlbWl0X2p1bXBfaW5zbiAoZ2VuX2p1bXAgKGxhYmVs KSk7CkBAIC0xOTYsNyArMjA1LDcgQEAgZW1pdF9qdW1wIChydHggbGFiZWwp CiB2b2lkCiBleHBhbmRfbGFiZWwgKHRyZWUgbGFiZWwpCiB7Ci0gIHJ0eF9p bnNuICpsYWJlbF9yID0gYXNfYSA8cnR4X2luc24gKj4gKGxhYmVsX3J0eCAo bGFiZWwpKTsKKyAgcnR4X2NvZGVfbGFiZWwgKmxhYmVsX3IgPSBsaXZlX2xh YmVsX3J0eCAobGFiZWwpOwogCiAgIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0 ICgpOwogICBlbWl0X2xhYmVsIChsYWJlbF9yKTsKQEAgLTcxNyw3ICs3MjYs NyBAQCByZXNvbHZlX29wZXJhbmRfbmFtZV8xIChjaGFyICpwLCB0cmVlIG91 dHB1dHMsIHRyZWUgaW5wdXRzLCB0cmVlIGxhYmVscykKIHZvaWQKIGV4cGFu ZF9uYWtlZF9yZXR1cm4gKHZvaWQpCiB7Ci0gIHJ0eCBlbmRfbGFiZWw7Cisg IHJ0eF9jb2RlX2xhYmVsICplbmRfbGFiZWw7CiAKICAgY2xlYXJfcGVuZGlu Z19zdGFja19hZGp1c3QgKCk7CiAgIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0 ICgpOwpAQCAtNzMyLDEyICs3NDEsMTIgQEAgZXhwYW5kX25ha2VkX3JldHVy biAodm9pZCkKIC8qIEdlbmVyYXRlIGNvZGUgdG8ganVtcCB0byBMQUJFTCBp ZiBPUDAgYW5kIE9QMSBhcmUgZXF1YWwgaW4gbW9kZSBNT0RFLiBQUk9CCiAg ICBpcyB0aGUgcHJvYmFiaWxpdHkgb2YganVtcGluZyB0byBMQUJFTC4gICov CiBzdGF0aWMgdm9pZAotZG9fanVtcF9pZl9lcXVhbCAobWFjaGluZV9tb2Rl IG1vZGUsIHJ0eCBvcDAsIHJ0eCBvcDEsIHJ0eCBsYWJlbCwKK2RvX2p1bXBf aWZfZXF1YWwgKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggb3AwLCBydHggb3Ax LCBydHhfY29kZV9sYWJlbCAqbGFiZWwsCiAJCSAgaW50IHVuc2lnbmVkcCwg aW50IHByb2IpCiB7CiAgIGdjY19hc3NlcnQgKHByb2IgPD0gUkVHX0JSX1BS T0JfQkFTRSk7CiAgIGRvX2NvbXBhcmVfcnR4X2FuZF9qdW1wIChvcDAsIG9w MSwgRVEsIHVuc2lnbmVkcCwgbW9kZSwKLQkJCSAgIE5VTExfUlRYLCBOVUxM X1JUWCwgbGFiZWwsIHByb2IpOworCQkJICAgTlVMTF9SVFgsIE5VTEwsIGxh YmVsLCBwcm9iKTsKIH0KIAwKIC8qIERvIHRoZSBpbnNlcnRpb24gb2YgYSBj YXNlIGxhYmVsIGludG8gY2FzZV9saXN0LiAgVGhlIGxhYmVscyBhcmUKQEAg LTg5NCw4ICs5MDMsOCBAQCBleHBhbmRfc3dpdGNoX2FzX2RlY2lzaW9uX3Ry ZWVfcCAodHJlZSByYW5nZSwKIAogc3RhdGljIHZvaWQKIGVtaXRfY2FzZV9k ZWNpc2lvbl90cmVlICh0cmVlIGluZGV4X2V4cHIsIHRyZWUgaW5kZXhfdHlw ZSwKLQkJCSBzdHJ1Y3QgY2FzZV9ub2RlICpjYXNlX2xpc3QsIHJ0eCBkZWZh dWx0X2xhYmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWZh dWx0X3Byb2IpCisJCQkgY2FzZV9ub2RlX3B0ciBjYXNlX2xpc3QsIHJ0eF9j b2RlX2xhYmVsICpkZWZhdWx0X2xhYmVsLAorCQkJIGludCBkZWZhdWx0X3By b2IpCiB7CiAgIHJ0eCBpbmRleCA9IGV4cGFuZF9ub3JtYWwgKGluZGV4X2V4 cHIpOwogCkBAIC0xMTUzLDcgKzExNjIsNyBAQCB2b2lkCiBleHBhbmRfY2Fz ZSAoZ3N3aXRjaCAqc3RtdCkKIHsKICAgdHJlZSBtaW52YWwgPSBOVUxMX1RS RUUsIG1heHZhbCA9IE5VTExfVFJFRSwgcmFuZ2UgPSBOVUxMX1RSRUU7Ci0g IHJ0eCBkZWZhdWx0X2xhYmVsID0gTlVMTF9SVFg7CisgIHJ0eF9jb2RlX2xh YmVsICpkZWZhdWx0X2xhYmVsID0gTlVMTDsKICAgdW5zaWduZWQgaW50IGNv dW50LCB1bmlxOwogICBpbnQgaTsKICAgaW50IG5jYXNlcyA9IGdpbXBsZV9z d2l0Y2hfbnVtX2xhYmVscyAoc3RtdCk7CkBAIC0xMTg1LDcgKzExOTQsNyBA QCBleHBhbmRfY2FzZSAoZ3N3aXRjaCAqc3RtdCkKICAgZG9fcGVuZGluZ19z dGFja19hZGp1c3QgKCk7CiAKICAgLyogRmluZCB0aGUgZGVmYXVsdCBjYXNl IHRhcmdldCBsYWJlbC4gICovCi0gIGRlZmF1bHRfbGFiZWwgPSBsYWJlbF9y dHggKENBU0VfTEFCRUwgKGdpbXBsZV9zd2l0Y2hfZGVmYXVsdF9sYWJlbCAo c3RtdCkpKTsKKyAgZGVmYXVsdF9sYWJlbCA9IGxpdmVfbGFiZWxfcnR4IChD QVNFX0xBQkVMIChnaW1wbGVfc3dpdGNoX2RlZmF1bHRfbGFiZWwgKHN0bXQp KSk7CiAgIGVkZ2UgZGVmYXVsdF9lZGdlID0gRURHRV9TVUNDIChiYiwgMCk7 CiAgIGludCBkZWZhdWx0X3Byb2IgPSBkZWZhdWx0X2VkZ2UtPnByb2JhYmls aXR5OwogCkBAIC0xMzM1LDcgKzEzNDQsNyBAQCBleHBhbmRfc2psal9kaXNw YXRjaF90YWJsZSAocnR4IGRpc3BhdGNoX2luZGV4LAogICAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBuY2FzZXM7IGkrKykKICAgICAgICAgewogCSAgdHJl ZSBlbHQgPSBkaXNwYXRjaF90YWJsZVtpXTsKLQkgIHJ0eCBsYWIgPSBsYWJl bF9ydHggKENBU0VfTEFCRUwgKGVsdCkpOworCSAgcnR4X2NvZGVfbGFiZWwg KmxhYiA9IGxpdmVfbGFiZWxfcnR4IChDQVNFX0xBQkVMIChlbHQpKTsKIAkg IGRvX2p1bXBfaWZfZXF1YWwgKGluZGV4X21vZGUsIGluZGV4LCB6ZXJvLCBs YWIsIDAsIC0xKTsKIAkgIGZvcmNlX2V4cGFuZF9iaW5vcCAoaW5kZXhfbW9k ZSwgc3ViX29wdGFiLAogCQkJICAgICAgaW5kZXgsIENPTlNUMV9SVFggKGlu ZGV4X21vZGUpLApAQCAtMTYwNCw3ICsxNjEzLDcgQEAgbm9kZV9pc19ib3Vu ZGVkIChjYXNlX25vZGVfcHRyIG5vZGUsIHRyZWUgaW5kZXhfdHlwZSkKICAg IHRlc3RzIGZvciB0aGUgdmFsdWUgNTAsIHRoZW4gdGhpcyBub2RlIG5lZWQg bm90IHRlc3QgYW55dGhpbmcuICAqLwogCiBzdGF0aWMgdm9pZAotZW1pdF9j YXNlX25vZGVzIChydHggaW5kZXgsIGNhc2Vfbm9kZV9wdHIgbm9kZSwgcnR4 IGRlZmF1bHRfbGFiZWwsCitlbWl0X2Nhc2Vfbm9kZXMgKHJ0eCBpbmRleCwg Y2FzZV9ub2RlX3B0ciBub2RlLCBydHhfY29kZV9sYWJlbCAqZGVmYXVsdF9s YWJlbCwKIAkJIGludCBkZWZhdWx0X3Byb2IsIHRyZWUgaW5kZXhfdHlwZSkK IHsKICAgLyogSWYgSU5ERVggaGFzIGFuIHVuc2lnbmVkIHR5cGUsIHdlIG11 c3QgbWFrZSB1bnNpZ25lZCBicmFuY2hlcy4gICovCkBAIC0xNjMyLDcgKzE2 NDEsOCBAQCBlbWl0X2Nhc2Vfbm9kZXMgKHJ0eCBpbmRleCwgY2FzZV9ub2Rl X3B0ciBub2RlLCBydHggZGVmYXVsdF9sYWJlbCwKIAkJCWNvbnZlcnRfbW9k ZXMgKG1vZGUsIGltb2RlLAogCQkJCSAgICAgICBleHBhbmRfbm9ybWFsIChu b2RlLT5sb3cpLAogCQkJCSAgICAgICB1bnNpZ25lZHApLAotCQkJbGFiZWxf cnR4IChub2RlLT5jb2RlX2xhYmVsKSwgdW5zaWduZWRwLCBwcm9iYWJpbGl0 eSk7CisJCQlsaXZlX2xhYmVsX3J0eCAobm9kZS0+Y29kZV9sYWJlbCksCisJ CQl1bnNpZ25lZHAsIHByb2JhYmlsaXR5KTsKICAgICAgIC8qIFNpbmNlIHRo aXMgY2FzZSBpcyB0YWtlbiBhdCB0aGlzIHBvaW50LCByZWR1Y2UgaXRzIHdl aWdodCBmcm9tCiAgICAgICAgICBzdWJ0cmVlX3dlaWdodC4gICovCiAgICAg ICBzdWJ0cmVlX3Byb2IgLT0gcHJvYjsKQEAgLTE2OTksNyArMTcwOSw3IEBA IGVtaXRfY2FzZV9ub2RlcyAocnR4IGluZGV4LCBjYXNlX25vZGVfcHRyIG5v ZGUsIHJ0eCBkZWZhdWx0X2xhYmVsLAogCQkJCWNvbnZlcnRfbW9kZXMgKG1v ZGUsIGltb2RlLAogCQkJCQkgICAgICAgZXhwYW5kX25vcm1hbCAobm9kZS0+ cmlnaHQtPmxvdyksCiAJCQkJCSAgICAgICB1bnNpZ25lZHApLAotCQkJCWxh YmVsX3J0eCAobm9kZS0+cmlnaHQtPmNvZGVfbGFiZWwpLAorCQkJCWxpdmVf bGFiZWxfcnR4IChub2RlLT5yaWdodC0+Y29kZV9sYWJlbCksCiAJCQkJdW5z aWduZWRwLCBwcm9iYWJpbGl0eSk7CiAKIAkgICAgICAvKiBTZWUgaWYgdGhl IHZhbHVlIG1hdGNoZXMgd2hhdCB0aGUgbGVmdCBoYW5kIHNpZGUKQEAgLTE3 MTEsNyArMTcyMSw3IEBAIGVtaXRfY2FzZV9ub2RlcyAocnR4IGluZGV4LCBj YXNlX25vZGVfcHRyIG5vZGUsIHJ0eCBkZWZhdWx0X2xhYmVsLAogCQkJCWNv bnZlcnRfbW9kZXMgKG1vZGUsIGltb2RlLAogCQkJCQkgICAgICAgZXhwYW5k X25vcm1hbCAobm9kZS0+bGVmdC0+bG93KSwKIAkJCQkJICAgICAgIHVuc2ln bmVkcCksCi0JCQkJbGFiZWxfcnR4IChub2RlLT5sZWZ0LT5jb2RlX2xhYmVs KSwKKwkJCQlsaXZlX2xhYmVsX3J0eCAobm9kZS0+bGVmdC0+Y29kZV9sYWJl bCksCiAJCQkJdW5zaWduZWRwLCBwcm9iYWJpbGl0eSk7CiAJICAgIH0KIApA QCAtMTc5OCw3ICsxODA4LDcgQEAgZW1pdF9jYXNlX25vZGVzIChydHggaW5k ZXgsIGNhc2Vfbm9kZV9wdHIgbm9kZSwgcnR4IGRlZmF1bHRfbGFiZWwsCiAJ CQkgICAgICAgIChtb2RlLCBpbW9kZSwKIAkJCSAgICAgICAgIGV4cGFuZF9u b3JtYWwgKG5vZGUtPnJpZ2h0LT5sb3cpLAogCQkJICAgICAgICAgdW5zaWdu ZWRwKSwKLQkJCSAgICAgICAgbGFiZWxfcnR4IChub2RlLT5yaWdodC0+Y29k ZV9sYWJlbCksIHVuc2lnbmVkcCwgcHJvYmFiaWxpdHkpOworCQkJICAgICAg ICBsaXZlX2xhYmVsX3J0eCAobm9kZS0+cmlnaHQtPmNvZGVfbGFiZWwpLCB1 bnNpZ25lZHAsIHByb2JhYmlsaXR5KTsKICAgICAgICAgICAgIH0KIAkgIH0K IApAQCAtMTg0MCw3ICsxODUwLDcgQEAgZW1pdF9jYXNlX25vZGVzIChydHgg aW5kZXgsIGNhc2Vfbm9kZV9wdHIgbm9kZSwgcnR4IGRlZmF1bHRfbGFiZWws CiAJCQkgICAgICAgIChtb2RlLCBpbW9kZSwKIAkJCSAgICAgICAgIGV4cGFu ZF9ub3JtYWwgKG5vZGUtPmxlZnQtPmxvdyksCiAJCQkgICAgICAgICB1bnNp Z25lZHApLAotCQkJICAgICAgICBsYWJlbF9ydHggKG5vZGUtPmxlZnQtPmNv ZGVfbGFiZWwpLCB1bnNpZ25lZHAsIHByb2JhYmlsaXR5KTsKKwkJCSAgICAg ICAgbGl2ZV9sYWJlbF9ydHggKG5vZGUtPmxlZnQtPmNvZGVfbGFiZWwpLCB1 bnNpZ25lZHAsIHByb2JhYmlsaXR5KTsKICAgICAgICAgICAgIH0KIAl9CiAg ICAgfQpAQCAtMjA2Myw3ICsyMDczLDcgQEAgZW1pdF9jYXNlX25vZGVzIChy dHggaW5kZXgsIGNhc2Vfbm9kZV9wdHIgbm9kZSwgcnR4IGRlZmF1bHRfbGFi ZWwsCiAJCQkJICAgICAgIG1vZGUsIDEsIGRlZmF1bHRfbGFiZWwsIHByb2Jh YmlsaXR5KTsKIAkgICAgfQogCi0JICBlbWl0X2p1bXAgKGxhYmVsX3J0eCAo bm9kZS0+Y29kZV9sYWJlbCkpOworCSAgZW1pdF9qdW1wIChsaXZlX2xhYmVs X3J0eCAobm9kZS0+Y29kZV9sYWJlbCkpOwogCX0KICAgICB9CiB9CmRpZmYg LS1naXQgYS9nY2Mvc3RtdC5oIGIvZ2NjL3N0bXQuaAppbmRleCA2MjBiMGYx Li43YjE0MmNlIDEwMDY0NAotLS0gYS9nY2Mvc3RtdC5oCisrKyBiL2djYy9z dG10LmgKQEAgLTMxLDEzICszMSwxOCBAQCBleHRlcm4gdHJlZSByZXNvbHZl X2FzbV9vcGVyYW5kX25hbWVzICh0cmVlLCB0cmVlLCB0cmVlLCB0cmVlKTsK IGV4dGVybiB0cmVlIHRyZWVfb3ZlcmxhcHNfaGFyZF9yZWdfc2V0ICh0cmVl LCBIQVJEX1JFR19TRVQgKik7CiAjZW5kaWYKIAotLyogUmV0dXJuIHRoZSBD T0RFX0xBQkVMIHJ0eCBmb3IgYSBMQUJFTF9ERUNMLCBjcmVhdGluZyBpdCBp ZiBuZWNlc3NhcnkuICAqLwotZXh0ZXJuIHJ0eCBsYWJlbF9ydHggKHRyZWUp OworLyogUmV0dXJuIHRoZSBDT0RFX0xBQkVMIHJ0eCBmb3IgYSBMQUJFTF9E RUNMLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuCisgICBJZiBsYWJlbCB3 YXMgZGVsZXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm90ZQorICAgKE5PVEVf SU5TTl9ERUxFVEVEe19ERUJVRyx9X0xBQkVMKSBpbnNuIHdpbGwgYmUgcmV0 dXJuZWQuICAqLworZXh0ZXJuIHJ0eF9pbnNuICpsYWJlbF9ydHggKHRyZWUp OwogCiAvKiBBcyBsYWJlbF9ydHgsIGJ1dCBhZGRpdGlvbmFsbHkgdGhlIGxh YmVsIGlzIHBsYWNlZCBvbiB0aGUgZm9yY2VkIGxhYmVsCiAgICBsaXN0IG9m IGl0cyBjb250YWluaW5nIGZ1bmN0aW9uIChpLmUuIGl0IGlzIHRyZWF0ZWQg YXMgcmVhY2hhYmxlIGV2ZW4KICAgIGlmIGhvdyBpcyBub3Qgb2J2aW91cyku ICAqLwotZXh0ZXJuIHJ0eCBmb3JjZV9sYWJlbF9ydHggKHRyZWUpOworZXh0 ZXJuIHJ0eF9pbnNuICpmb3JjZV9sYWJlbF9ydHggKHRyZWUpOworCisvKiBB cyBsYWJlbF9ydHgsIGJ1dCBjaGVja3MgdGhhdCBsYWJlbCB3YXMgbm90IGRl bGV0ZWQuICAqLworZXh0ZXJuIHJ0eF9jb2RlX2xhYmVsICpsaXZlX2xhYmVs X3J0eCAodHJlZSk7CiAKIC8qIEV4cGFuZCBhIEdJTVBMRV9TV0lUQ0ggc3Rh dGVtZW50LiAgKi8KIGV4dGVybiB2b2lkIGV4cGFuZF9jYXNlIChnc3dpdGNo ICopOwpkaWZmIC0tZ2l0IGEvZ2NjL3N0b3JlLW1vdGlvbi5jIGIvZ2NjL3N0 b3JlLW1vdGlvbi5jCmluZGV4IDUzMDc2NmYuLjExZTJkZWMgMTAwNjQ0Ci0t LSBhL2djYy9zdG9yZS1tb3Rpb24uYworKysgYi9nY2Mvc3RvcmUtbW90aW9u LmMKQEAgLTgxMyw3ICs4MTMsNyBAQCBpbnNlcnRfc3RvcmUgKHN0cnVjdCBz dF9leHByICogZXhwciwgZWRnZSBlKQogICAgIHJldHVybiAwOwogCiAgIHJl ZyA9IGV4cHItPnJlYWNoaW5nX3JlZzsKLSAgaW5zbiA9IGFzX2EgPHJ0eF9p bnNuICo+IChnZW5fbW92ZV9pbnNuIChjb3B5X3J0eCAoZXhwci0+cGF0dGVy biksIHJlZykpOworICBpbnNuID0gZ2VuX21vdmVfaW5zbiAoY29weV9ydHgg KGV4cHItPnBhdHRlcm4pLCByZWcpOwogCiAgIC8qIElmIHdlIGFyZSBpbnNl cnRpbmcgdGhpcyBleHByZXNzaW9uIG9uIEFMTCBwcmVkZWNlc3NvciBlZGdl cyBvZiBhIEJCLAogICAgICBpbnNlcnQgaXQgYXQgdGhlIHN0YXJ0IG9mIHRo ZSBCQiwgYW5kIHJlc2V0IHRoZSBpbnNlcnQgYml0cyBvbiB0aGUgb3RoZXIK QEAgLTk1NCw3ICs5NTQsNyBAQCByZXBsYWNlX3N0b3JlX2luc24gKHJ0eCBy ZWcsIHJ0eF9pbnNuICpkZWwsIGJhc2ljX2Jsb2NrIGJiLAogICBydHggbWVt LCBub3RlLCBzZXQsIHB0cjsKIAogICBtZW0gPSBzbWV4cHItPnBhdHRlcm47 Ci0gIGluc24gPSBhc19hIDxydHhfaW5zbiAqPiAoZ2VuX21vdmVfaW5zbiAo cmVnLCBTRVRfU1JDIChzaW5nbGVfc2V0IChkZWwpKSkpOworICBpbnNuID0g Z2VuX21vdmVfaW5zbiAocmVnLCBTRVRfU1JDIChzaW5nbGVfc2V0IChkZWwp KSk7CiAKICAgZm9yIChwdHIgPSBzbWV4cHItPmFudGljX3N0b3JlczsgcHRy OyBwdHIgPSBYRVhQIChwdHIsIDEpKQogICAgIGlmIChYRVhQIChwdHIsIDAp ID09IGRlbCkK --------------090107050809050009060203--