From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: 'struct window' cleanup #4 Date: Mon, 02 Jul 2012 14:45:02 +0400 Message-ID: <4FF17BAE.7090200@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080807000508070706020408" X-Trace: dough.gmane.org 1341225940 15882 80.91.229.3 (2 Jul 2012 10:45:40 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 2 Jul 2012 10:45:40 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Jul 02 12:45:39 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Sle8O-00042P-5i for ged-emacs-devel@m.gmane.org; Mon, 02 Jul 2012 12:45:36 +0200 Original-Received: from localhost ([::1]:55574 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sle8N-0003Tn-7f for ged-emacs-devel@m.gmane.org; Mon, 02 Jul 2012 06:45:35 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sle8A-0003SN-MZ for emacs-devel@gnu.org; Mon, 02 Jul 2012 06:45:32 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sle84-0005bE-29 for emacs-devel@gnu.org; Mon, 02 Jul 2012 06:45:22 -0400 Original-Received: from forward14.mail.yandex.net ([95.108.130.92]:54987) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sle83-0005ao-4C for emacs-devel@gnu.org; Mon, 02 Jul 2012 06:45:15 -0400 Original-Received: from smtp11.mail.yandex.net (smtp11.mail.yandex.net [95.108.130.67]) by forward14.mail.yandex.net (Yandex) with ESMTP id 1589D1980E97 for ; Mon, 2 Jul 2012 14:45:09 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341225909; bh=2Ij0Hud2HIKHrC0OCr5AvduePPJAMLe18AUu4q0/0Og=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type; b=cJzihJW8/SrHi1Kjfz1LrepNKK/LZdl2c/qrGIFxgL2oPSswD2cdAnMVw+1CQIK+o OKf1D7xIfbG3JZqcWDAlQcIPyofsNzwja3iUQQZkpkCaMmtdpoAH4DdM6BcqJwrR9E DSEgZNkiuwmYViMz1JvLjekshpAYb4N7qXinb9AQ= Original-Received: from smtp11.mail.yandex.net (localhost [127.0.0.1]) by smtp11.mail.yandex.net (Yandex) with ESMTP id 032867E0524 for ; Mon, 2 Jul 2012 14:45:08 +0400 (MSK) Original-Received: from 171.gprs.mts.ru (171.gprs.mts.ru [213.87.133.171]) by smtp11.mail.yandex.net (nwsmtp/Yandex) with ESMTP id j7VWdKVu-j7Vu0doP; Mon, 2 Jul 2012 14:45:07 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341225908; bh=2Ij0Hud2HIKHrC0OCr5AvduePPJAMLe18AUu4q0/0Og=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=lId1t1OEkFHv/v0pX0TNj7CQ/uLUvH3zwdWDqiPmm2mPX4nWaN2PXewv713h3f4Zi l6QISzHTgsKF0L+NOwE4TNjVR0NIHBEy/qSIHnv/c9Q78+Z/Lfzh0S/RoHCgYVhgg0 xhcQvuEIMe+AcYf2UxzpXRmhmJ+XjIad4UkVOCdo= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.92 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:151348 Archived-At: This is a multi-part message in MIME format. --------------080807000508070706020408 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Do we have a consensus about type(s) of 'window_end_vpos', 'vscroll', 'hscroll' and 'min_hscroll' fields of 'struct window'? Now I'm just assuming that ptrdiff_t is safer. Eli, please review if possible. Dmitry --------------080807000508070706020408 Content-Type: text/plain; charset=UTF-8; name="window_cleanup_4.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="window_cleanup_4.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9kaXNwbmV3LmMnCi0tLSBzcmMvZGlzcG5ldy5jCTIw MTItMDYtMjggMDc6NTA6NTAgKzAwMDAKKysrIHNyYy9kaXNwbmV3LmMJMjAxMi0wNy0wMiAx MDoxMTo0OCArMDAwMApAQCAtNjQzLDkgKzY0Myw4IEBACiAKIAkgICAgICAvKiBXaW5kb3cg ZW5kIGlzIGludmFsaWQsIGlmIGluc2lkZSBvZiB0aGUgcm93cyB0aGF0CiAJCSBhcmUgaW52 YWxpZGF0ZWQgYmVsb3cuICAqLwotCSAgICAgIGlmIChJTlRFR0VSUCAody0+d2luZG93X2Vu ZF92cG9zKQotCQkgICYmIFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MpID49IGkpCi0J CXctPndpbmRvd19lbmRfdmFsaWQgPSBRbmlsOworCSAgICAgIGlmICh3LT53aW5kb3dfZW5k X3Zwb3MgPj0gaSkKKwkJdy0+d2luZG93X2VuZF92YWxpZCA9IDA7CiAKIAkgICAgICB3aGls ZSAoaSA8IG1hdHJpeC0+bnJvd3MpCiAJCW1hdHJpeC0+cm93c1tpKytdLmVuYWJsZWRfcCA9 IDA7CkBAIC05MDIsNyArOTAxLDcgQEAKIAkgIGVsc2UKIAkgICAgewogCSAgICAgIGNsZWFy X2dseXBoX21hdHJpeCAody0+Y3VycmVudF9tYXRyaXgpOwotCSAgICAgIHctPndpbmRvd19l bmRfdmFsaWQgPSBRbmlsOworCSAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogCSAg ICB9CiAJfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3dpbmRvdy5jJwotLS0gc3JjL3dp bmRvdy5jCTIwMTItMDYtMzAgMDk6MTM6NTQgKzAwMDAKKysrIHNyYy93aW5kb3cuYwkyMDEy LTA3LTAyIDEwOjExOjQ4ICswMDAwCkBAIC0xMzA3LDEyICsxMzA3LDEyIEBACiAgICAgIFRo ZSB1c2VyIGNhbiBjb21wdXRlIGl0IHdpdGggdmVydGljYWwtbW90aW9uIGlmIGhlIHdhbnRz IHRvLgogICAgICBJdCB3b3VsZCBiZSBuaWNlciB0byBkbyBpdCBhdXRvbWF0aWNhbGx5LAog ICAgICBidXQgdGhhdCdzIHNvIHNsb3cgdGhhdCBpdCB3b3VsZCBwcm9iYWJseSBib3RoZXIg cGVvcGxlLiAgKi8KLSAgaWYgKE5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQpKQorICBpZiAo IXctPndpbmRvd19lbmRfdmFsaWQpCiAgICAgcmV0dXJuIFFuaWw7CiAjZW5kaWYKIAogICBp ZiAoISBOSUxQICh1cGRhdGUpCi0gICAgICAmJiAhICghIE5JTFAgKHctPndpbmRvd19lbmRf dmFsaWQpCisgICAgICAmJiAhICh3LT53aW5kb3dfZW5kX3ZhbGlkCiAJICAgICYmIHctPmxh c3RfbW9kaWZpZWQgPj0gQlVGX01PRElGRiAoYikKIAkgICAgJiYgdy0+bGFzdF9vdmVybGF5 X21vZGlmaWVkID49IEJVRl9PVkVSTEFZX01PRElGRiAoYikpCiAgICAgICAmJiAhbm9uaW50 ZXJhY3RpdmUpCkBAIC0xMzU0LDcgKzEzNTQsNyBAQAogCXNldF9idWZmZXJfaW50ZXJuYWwg KG9sZF9idWZmZXIpOwogICAgIH0KICAgZWxzZQotICAgIFhTRVRJTlQgKHZhbHVlLCBCVUZf WiAoYikgLSBYRkFTVElOVCAody0+d2luZG93X2VuZF9wb3MpKTsKKyAgICBYU0VUSU5UICh2 YWx1ZSwgQlVGX1ogKGIpIC0gdy0+d2luZG93X2VuZF9wb3MpOwogCiAgIHJldHVybiB2YWx1 ZTsKIH0KQEAgLTE1MDcsNyArMTUwNyw3IEBACiAgIGIgPSBYQlVGRkVSICh3LT5idWZmZXIp OwogCiAgIC8qIEZhaWwgaWYgY3VycmVudCBtYXRyaXggaXMgbm90IHVwLXRvLWRhdGUuICAq LwotICBpZiAoTklMUCAody0+d2luZG93X2VuZF92YWxpZCkKKyAgaWYgKCF3LT53aW5kb3df ZW5kX3ZhbGlkCiAgICAgICB8fCBjdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkCiAgICAg ICB8fCBjdXJyZW50X2J1ZmZlci0+cHJldmVudF9yZWRpc3BsYXlfb3B0aW1pemF0aW9uc19w CiAgICAgICB8fCB3LT5sYXN0X21vZGlmaWVkIDwgQlVGX01PRElGRiAoYikKQEAgLTE4NDEs OSArMTg0MSw5IEBACiAgICAgICBuLT5waHlzX2N1cnNvcl93aWR0aCA9IC0xOwogICAgICAg bi0+bXVzdF9iZV91cGRhdGVkX3AgPSAwOwogICAgICAgbi0+cHNldWRvX3dpbmRvd19wID0g MDsKLSAgICAgIFhTRVRGQVNUSU5UIChuLT53aW5kb3dfZW5kX3Zwb3MsIDApOwotICAgICAg WFNFVEZBU1RJTlQgKG4tPndpbmRvd19lbmRfcG9zLCAwKTsKLSAgICAgIG4tPndpbmRvd19l bmRfdmFsaWQgPSBRbmlsOworICAgICAgbi0+d2luZG93X2VuZF92cG9zID0gMDsKKyAgICAg IG4tPndpbmRvd19lbmRfcG9zID0gMDsKKyAgICAgIG4tPndpbmRvd19lbmRfdmFsaWQgPSAw OwogICAgICAgbi0+ZnJvemVuX3dpbmRvd19zdGFydF9wID0gMDsKICAgICB9CiAKQEAgLTI3 NzMsNyArMjc3Myw3IEBACiAJICBwb3MgPSAqdm1vdGlvbiAoc3RhcnRwb3MsIC10b3AsIHcp OwogCiAJICBzZXRfbWFya2VyX2JvdGggKHctPnN0YXJ0LCB3LT5idWZmZXIsIHBvcy5idWZw b3MsIHBvcy5ieXRlcG9zKTsKLQkgIHctPndpbmRvd19lbmRfdmFsaWQgPSBRbmlsOworCSAg dy0+d2luZG93X2VuZF92YWxpZCA9IDA7CiAJICB3LT5zdGFydF9hdF9saW5lX2JlZyA9IChw b3MuYnl0ZXBvcyA9PSBCRUdWX0JZVEUKIAkJCQkgICAgfHwgRkVUQ0hfQllURSAocG9zLmJ5 dGVwb3MgLSAxKSA9PSAnXG4nKTsKIAkgIC8qIFdlIG5lZWQgdG8gZG8gdGhpcywgc28gdGhh dCB0aGUgd2luZG93LXNjcm9sbC1mdW5jdGlvbnMKQEAgLTI5ODksMTAgKzI5ODksMTAgQEAK ICAgICBYU0VUSU5UIChCVkFSIChiLCBkaXNwbGF5X2NvdW50KSwgWElOVCAoQlZBUiAoYiwg ZGlzcGxheV9jb3VudCkpICsgMSk7CiAgIEJWQVIgKGIsIGRpc3BsYXlfdGltZSkgPSBGY3Vy cmVudF90aW1lICgpOwogCi0gIFhTRVRGQVNUSU5UICh3LT53aW5kb3dfZW5kX3BvcywgMCk7 Ci0gIFhTRVRGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MsIDApOworICB3LT53aW5kb3df ZW5kX3BvcyA9IDA7CisgIHctPndpbmRvd19lbmRfdnBvcyA9IDA7CiAgIG1lbXNldCAoJnct Pmxhc3RfY3Vyc29yLCAwLCBzaXplb2Ygdy0+bGFzdF9jdXJzb3IpOwotICB3LT53aW5kb3df ZW5kX3ZhbGlkID0gUW5pbDsKKyAgdy0+d2luZG93X2VuZF92YWxpZCA9IDA7CiAgIGlmICgh KGtlZXBfbWFyZ2luc19wICYmIHNhbWVidWYpKQogICAgIHsgLyogSWYgd2UncmUgbm90IGFj dHVhbGx5IGNoYW5naW5nIHRoZSBidWZmZXIsIGRvbid0IHJlc2V0IGhzY3JvbGwgYW5kCiAJ IHZzY3JvbGwuICBUaGlzIGNhc2UgaGFwcGVucyBmb3IgZXhhbXBsZSB3aGVuIGNhbGxlZCBm cm9tCkBAIC0zMjg3LDggKzMyODcsNiBAQAogICB3LT5zdGFydCA9IEZtYWtlX21hcmtlciAo KTsKICAgdy0+cG9pbnRtID0gRm1ha2VfbWFya2VyICgpOwogICB3LT52ZXJ0aWNhbF9zY3Jv bGxfYmFyX3R5cGUgPSBRdDsKLSAgWFNFVEZBU1RJTlQgKHctPndpbmRvd19lbmRfcG9zLCAw KTsKLSAgWFNFVEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcywgMCk7CiAKICAgLyogSW5p dGlhbGl6ZSBub24tTGlzcCBkYXRhLiAgTm90ZSB0aGF0IGFsbG9jYXRlX3dpbmRvdyB6ZXJv ZXMgb3V0IGFsbAogICAgICBub24tTGlzcCBkYXRhLCBzbyBkbyBpdCBvbmx5IGZvciBzbG90 cyB3aGljaCBzaG91bGQgbm90IGJlIHplcm8uICAqLwpAQCAtMzI5Niw2ICszMjk0LDggQEAK ICAgdy0+cGh5c19jdXJzb3JfdHlwZSA9IC0xOwogICB3LT5waHlzX2N1cnNvcl93aWR0aCA9 IC0xOwogICB3LT5zZXF1ZW5jZV9udW1iZXIgPSArK3NlcXVlbmNlX251bWJlcjsKKyAgdy0+ d2luZG93X2VuZF9wb3MgPSAtMTsKKyAgdy0+d2luZG93X2VuZF92cG9zID0gLTE7CiAKICAg LyogUmVzZXQgd2luZG93X2xpc3QuICAqLwogICBWd2luZG93X2xpc3QgPSBRbmlsOwpAQCAt Mzc2Miw3ICszNzYyLDcgQEAKICAgICB9CiAKICAgbi0+YnVmZmVyID0gUXQ7Ci0gIG4tPndp bmRvd19lbmRfdmFsaWQgPSBRbmlsOworICBuLT53aW5kb3dfZW5kX3ZhbGlkID0gMDsKICAg bWVtc2V0ICgmbi0+bGFzdF9jdXJzb3IsIDAsIHNpemVvZiBuLT5sYXN0X2N1cnNvcik7CiAK ICAgLyogR2V0IHNwZWNpYWwgZ2VvbWV0cnkgc2V0dGluZ3MgZnJvbSByZWZlcmVuY2Ugd2lu ZG93LiAgKi8KQEAgLTUxNzQsNyArNTE3NCw3IEBACiAKICAgLyogU2V0IHRoZSBuZXcgd2lu ZG93IHN0YXJ0LiAgKi8KICAgc2V0X21hcmtlcl9ib3RoICh3LT5zdGFydCwgdy0+YnVmZmVy LCBjaGFycG9zLCBieXRlcG9zKTsKLSAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFuaWw7Cisg IHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogCiAgIHctPm9wdGlvbmFsX25ld19zdGFydCA9 IDE7CiAKQEAgLTYxMTUsNyArNjExNSw3IEBACiAgICAgICBhZGp1c3Rfd2luZG93X21hcmdp bnMgKHcpOwogCiAgICAgICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmN1cnJlbnRfbWF0cml4 KTsKLSAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSBRbmlsOworICAgICAgdy0+d2luZG93 X2VuZF92YWxpZCA9IDA7CiAKICAgICAgICsrd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQ7 CiAgICAgICBhZGp1c3RfZ2x5cGhzIChYRlJBTUUgKFdJTkRPV19GUkFNRSAodykpKTsKQEAg LTYxODQsNyArNjE4NCw3IEBACiAgICAgICBhZGp1c3Rfd2luZG93X21hcmdpbnMgKHcpOwog CiAgICAgICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmN1cnJlbnRfbWF0cml4KTsKLSAgICAg IHctPndpbmRvd19lbmRfdmFsaWQgPSBRbmlsOworICAgICAgdy0+d2luZG93X2VuZF92YWxp ZCA9IDA7CiAKICAgICAgICsrd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQ7CiAgICAgICBh ZGp1c3RfZ2x5cGhzIChYRlJBTUUgKFdJTkRPV19GUkFNRSAodykpKTsKCj09PSBtb2RpZmll ZCBmaWxlICdzcmMvd2luZG93LmgnCi0tLSBzcmMvd2luZG93LmgJMjAxMi0wNi0yOSAxMTo0 ODowOCArMDAwMAorKysgc3JjL3dpbmRvdy5oCTIwMTItMDctMDIgMTA6MTg6NDYgKzAwMDAK QEAgLTE2OCwxOCArMTY4LDYgQEAKICAgICAgICBubyBzY3JvbGwgYmFyLiAgQSB2YWx1ZSBv ZiB0IG1lYW5zIHVzZSBmcmFtZSB2YWx1ZS4gICovCiAgICAgTGlzcF9PYmplY3QgdmVydGlj YWxfc2Nyb2xsX2Jhcl90eXBlOwogCi0gICAgLyogWiAtIHRoZSBidWZmZXIgcG9zaXRpb24g b2YgdGhlIGxhc3QgZ2x5cGggaW4gdGhlIGN1cnJlbnQgbWF0cml4Ci0gICAgICAgb2YgVy4g IE9ubHkgdmFsaWQgaWYgV0lORE9XX0VORF9WQUxJRCBpcyBub3QgbmlsLiAgKi8KLSAgICBM aXNwX09iamVjdCB3aW5kb3dfZW5kX3BvczsKLSAgICAvKiBHbHlwaCBtYXRyaXggcm93IG9m IHRoZSBsYXN0IGdseXBoIGluIHRoZSBjdXJyZW50IG1hdHJpeAotICAgICAgIG9mIFcuICBP bmx5IHZhbGlkIGlmIFdJTkRPV19FTkRfVkFMSUQgaXMgbm90IG5pbC4gICovCi0gICAgTGlz cF9PYmplY3Qgd2luZG93X2VuZF92cG9zOwotICAgIC8qIHQgaWYgd2luZG93X2VuZF9wb3Mg aXMgdHJ1bHkgdmFsaWQuCi0gICAgICAgVGhpcyBpcyBuaWwgaWYgbm9udHJpdmlhbCByZWRp c3BsYXkgaXMgcHJlZW1wdGVkCi0gICAgICAgc2luY2UgaW4gdGhhdCBjYXNlIHRoZSBmcmFt ZSBpbWFnZSB0aGF0IHdpbmRvd19lbmRfcG9zCi0gICAgICAgZGlkIG5vdCBnZXQgb250byB0 aGUgZnJhbWUuICAqLwotICAgIExpc3BfT2JqZWN0IHdpbmRvd19lbmRfdmFsaWQ7Ci0KICAg ICAvKiBEaXNwbGF5LXRhYmxlIHRvIHVzZSBmb3IgZGlzcGxheWluZyBjaGFycyBpbiB0aGlz IHdpbmRvdy4KICAgICAgICBOaWwgbWVhbnMgdXNlIHRoZSBidWZmZXIncyBvd24gZGlzcGxh eS10YWJsZS4gICovCiAgICAgTGlzcF9PYmplY3QgZGlzcGxheV90YWJsZTsKQEAgLTE5OCwx MCArMTg2LDYgQEAKICAgICAgICBhcyBsb25nIGFzIHRoZSB3aW5kb3cgc2hvd3MgdGhhdCBi dWZmZXIuICAqLwogICAgIExpc3BfT2JqZWN0IGJhc2VfbGluZV9wb3M7CiAKLSAgICAvKiBJ ZiB3ZSBoYXZlIGhpZ2hsaWdodGVkIHRoZSByZWdpb24gKG9yIGFueSBwYXJ0IG9mIGl0KSwK LSAgICAgICB0aGlzIGlzIHRoZSBtYXJrIHBvc2l0aW9uIHRoYXQgd2UgdXNlZCwgYXMgYW4g aW50ZWdlci4gICovCi0gICAgTGlzcF9PYmplY3QgcmVnaW9uX3Nob3dpbmc7Ci0KICAgICAv KiBUaGUgY29sdW1uIG51bWJlciBjdXJyZW50bHkgZGlzcGxheWVkIGluIHRoaXMgd2luZG93 J3MgbW9kZSBsaW5lLAogICAgICAgIG9yIG5pbCBpZiBjb2x1bW4gbnVtYmVycyBhcmUgbm90 IGJlaW5nIGRpc3BsYXllZC4gICovCiAgICAgTGlzcF9PYmplY3QgY29sdW1uX251bWJlcl9k aXNwbGF5ZWQ7CkBAIC0yNTYsNiArMjQwLDE0IEBACiAgICAgICAgaXQgc2hvdWxkIGJlIHBv c2l0aXZlLiAqLwogICAgIHB0cmRpZmZfdCBsYXN0X3BvaW50OwogCisgICAgLyogWiAtIHRo ZSBidWZmZXIgcG9zaXRpb24gb2YgdGhlIGxhc3QgZ2x5cGggaW4gdGhlIGN1cnJlbnQgbWF0 cml4IG9mIFcuCisgICAgICAgU2hvdWxkIGJlIG5vbm5lZ2F0aXZlLCBhbmQgdmFsaWQgb25s eSBpZiB3aW5kb3dfZW5kX3ZhbGlkIGlzIG5vdCB6ZXJvLiAgKi8KKyAgICBwdHJkaWZmX3Qg d2luZG93X2VuZF9wb3M7CisKKyAgICAvKiBHbHlwaCBtYXRyaXggcm93IG9mIHRoZSBsYXN0 IGdseXBoIGluIHRoZSBjdXJyZW50IG1hdHJpeCBvZiBXLgorICAgICAgIFNob3VsZCBiZSBu b25uZWdhdGl2ZSwgYW5kIHZhbGlkIG9ubHkgaWYgd2luZG93X2VuZF92YWxpZCBpcyBub3Qg emVyby4gICovCisgICAgcHRyZGlmZl90IHdpbmRvd19lbmRfdnBvczsKKwogICAgIC8qIFNj YWxpbmcgZmFjdG9yIGZvciB0aGUgZ2x5cGhfbWF0cml4IHNpemUgY2FsY3VsYXRpb24gaW4g dGhpcyB3aW5kb3cuCiAgICAgICAgVXNlZCBpZiB3aW5kb3cgY29udGFpbnMgbWFueSBzbWFs bCBpbWFnZXMgb3IgdXNlcyBwcm9wb3J0aW9uYWwgZm9udHMsCiAgICAgICAgYXMgdGhlIG5v cm1hbCAgbWF5IHlpZWxkIGEgbWF0cml4IHdoaWNoIGlzIHRvbyBzbWFsbC4gICovCkBAIC0y ODksNiArMjgxLDkgQEAKICAgICAgICB3YXMgbGFzdCB1cGRhdGVkLiAgKi8KICAgICB1bnNp Z25lZCBsYXN0X2hhZF9zdGFyIDogMTsKIAorICAgIC8qIE5vbi16ZXJvIGlmIHdlIGhhdmUg aGlnaGxpZ2h0ZWQgdGhlIHJlZ2lvbiAob3IgYW55IHBhcnQgb2YgaXQpLiAgKi8KKyAgICB1 bnNpZ25lZCByZWdpb25fc2hvd2luZyA6IDE7CisKICAgICAvKiBOb24temVybyBtZWFucyBj dXJyZW50IHZhbHVlIG9mIGBzdGFydCcKICAgICAgICB3YXMgdGhlIGJlZ2lubmluZyBvZiBh IGxpbmUgd2hlbiBpdCB3YXMgY2hvc2VuLiAgKi8KICAgICB1bnNpZ25lZCBzdGFydF9hdF9s aW5lX2JlZyA6IDE7CkBAIC0zMzEsOSArMzI2LDE0IEBACiAgICAgICAgT3RoZXJ3aXNlIGRy YXcgdGhlbSBiZXR3ZWVuIG1hcmdpbiBhcmVhcyBhbmQgdGV4dC4gICovCiAgICAgdW5zaWdu ZWQgZnJpbmdlc19vdXRzaWRlX21hcmdpbnMgOiAxOwogCisgICAgLyogTm9uLXplcm8gaWYg d2luZG93X2VuZF9wb3MgaXMgdHJ1bHkgdmFsaWQuICBUaGlzIGlzIHplcm8gaWYKKyAgICAg ICBub250cml2aWFsIHJlZGlzcGxheSBpcyBwcmVlbXB0ZWQgc2luY2UgaW4gdGhhdCBjYXNl IHRoZQorICAgICAgIGZyYW1lIGltYWdlIHRoYXQgd2luZG93X2VuZF9wb3MgZGlkIG5vdCBn ZXQgb250byB0aGUgZnJhbWUuICAqLworICAgIHVuc2lnbmVkIHdpbmRvd19lbmRfdmFsaWQg OiAxOworCiAgICAgLyogQW1vdW50IGJ5IHdoaWNoIGxpbmVzIG9mIHRoaXMgd2luZG93IGFy ZSBzY3JvbGxlZCBpbgogICAgICAgIHktZGlyZWN0aW9uIChzbW9vdGggc2Nyb2xsaW5nKS4g ICovCi0gICAgaW50IHZzY3JvbGw7CisgICAgcHRyZGlmZl90IHZzY3JvbGw7CiAKICAgICAv KiBaX0JZVEUgLSB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGdseXBoIGluIHRo ZSBjdXJyZW50IG1hdHJpeCBvZiBXLgogICAgICAgIFNob3VsZCBiZSBub25uZWdhdGl2ZSwg YW5kIG9ubHkgdmFsaWQgaWYgd2luZG93X2VuZF92YWxpZCBpcyBub3QgbmlsLiAgKi8KCj09 PSBtb2RpZmllZCBmaWxlICdzcmMveGRpc3AuYycKLS0tIHNyYy94ZGlzcC5jCTIwMTItMDYt MjkgMTg6NTI6NTQgKzAwMDAKKysrIHNyYy94ZGlzcC5jCTIwMTItMDctMDIgMTA6MzM6MjIg KzAwMDAKQEAgLTI1MDQsMTEgKzI1MDQsMTEgQEAKIGNoZWNrX3dpbmRvd19lbmQgKHN0cnVj dCB3aW5kb3cgKncpCiB7CiAgIGlmICghTUlOSV9XSU5ET1dfUCAodykKLSAgICAgICYmICFO SUxQICh3LT53aW5kb3dfZW5kX3ZhbGlkKSkKKyAgICAgICYmIHctPndpbmRvd19lbmRfdmFs aWQpCiAgICAgewogICAgICAgc3RydWN0IGdseXBoX3JvdyAqcm93OwogICAgICAgZWFzc2Vy dCAoKHJvdyA9IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LAotCQkJCSAgWEZBU1RJ TlQgKHctPndpbmRvd19lbmRfdnBvcykpLAorCQkJCSAgdy0+d2luZG93X2VuZF92cG9zKSwK IAkJIXJvdy0+ZW5hYmxlZF9wCiAJCXx8IE1BVFJJWF9ST1dfRElTUExBWVNfVEVYVF9QIChy b3cpCiAJCXx8IE1BVFJJWF9ST1dfVlBPUyAocm93LCB3LT5jdXJyZW50X21hdHJpeCkgPT0g MCkpOwpAQCAtODg1MCw3ICs4ODUwLDcgQEAKICAgICAgICYmIGl0LT5jdXJyZW50X3ggPT0g aXQtPmxhc3RfdmlzaWJsZV94IC0gMQogICAgICAgJiYgaXQtPmMgIT0gJ1xuJwogICAgICAg JiYgaXQtPmMgIT0gJ1x0JwotICAgICAgJiYgaXQtPnZwb3MgPCBYRkFTVElOVCAoaXQtPnct PndpbmRvd19lbmRfdnBvcykpCisgICAgICAmJiBpdC0+dnBvcyA8IGl0LT53LT53aW5kb3df ZW5kX3Zwb3MpCiAgICAgewogICAgICAgaXQtPmNvbnRpbnVhdGlvbl9saW5lc193aWR0aCAr PSBpdC0+Y3VycmVudF94OwogICAgICAgaXQtPmN1cnJlbnRfeCA9IGl0LT5ocG9zID0gaXQt Pm1heF9hc2NlbnQgPSBpdC0+bWF4X2Rlc2NlbnQgPSAwOwpAQCAtMTEyMDIsNyArMTEyMDIs NyBAQAogCSAgICAgICE9IHctPmxhc3RfaGFkX3N0YXIpCiAJICB8fCAoKCFOSUxQIChWdHJh bnNpZW50X21hcmtfbW9kZSkKIAkgICAgICAgJiYgIU5JTFAgKEJWQVIgKFhCVUZGRVIgKHct PmJ1ZmZlciksIG1hcmtfYWN0aXZlKSkpCi0JICAgICAgIT0gIU5JTFAgKHctPnJlZ2lvbl9z aG93aW5nKSkpCisJICAgICAgIT0gdy0+cmVnaW9uX3Nob3dpbmcpKQogCXsKIAkgIHN0cnVj dCBidWZmZXIgKnByZXYgPSBjdXJyZW50X2J1ZmZlcjsKIAkgIHB0cmRpZmZfdCBjb3VudCA9 IFNQRUNQRExfSU5ERVggKCk7CkBAIC0xMTQwMCw3ICsxMTQwMCw3IEBACiAJICAgICAgIT0g dy0+bGFzdF9oYWRfc3RhcikKIAkgIHx8ICgoIU5JTFAgKFZ0cmFuc2llbnRfbWFya19tb2Rl KQogCSAgICAgICAmJiAhTklMUCAoQlZBUiAoWEJVRkZFUiAody0+YnVmZmVyKSwgbWFya19h Y3RpdmUpKSkKLQkgICAgICAhPSAhTklMUCAody0+cmVnaW9uX3Nob3dpbmcpKSkKKwkgICAg ICAhPSB3LT5yZWdpb25fc2hvd2luZykpCiAJewogCSAgc3RydWN0IGJ1ZmZlciAqcHJldiA9 IGN1cnJlbnRfYnVmZmVyOwogCSAgcHRyZGlmZl90IGNvdW50ID0gU1BFQ1BETF9JTkRFWCAo KTsKQEAgLTEyNzY2LDcgKzEyNzY2LDcgQEAKIHJlY29uc2lkZXJfY2xpcF9jaGFuZ2VzIChz dHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgYnVmZmVyICpiKQogewogICBpZiAoYi0+Y2xpcF9j aGFuZ2VkCi0JICAgJiYgIU5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQpCisJICAgJiYgdy0+ d2luZG93X2VuZF92YWxpZAogCSAgICYmIHctPmN1cnJlbnRfbWF0cml4LT5idWZmZXIgPT0g YgogCSAgICYmIHctPmN1cnJlbnRfbWF0cml4LT56diA9PSBCVUZfWlYgKGIpCiAJICAgJiYg dy0+Y3VycmVudF9tYXRyaXgtPmJlZ3YgPT0gQlVGX0JFR1YgKGIpKQpAQCAtMTI3NzgsNyAr MTI3NzgsNyBAQAogICAgICBiLT5jbGlwX2NoYW5nZWQgaGFzIGFscmVhZHkgYmVlbiBzZXQg dG8gMSwgd2UgY2FuIHNraXAgdGhpcwogICAgICBjaGVjay4gICovCiAgIGlmICghYi0+Y2xp cF9jaGFuZ2VkCi0gICAgICAmJiBCVUZGRVJQICh3LT5idWZmZXIpICYmICFOSUxQICh3LT53 aW5kb3dfZW5kX3ZhbGlkKSkKKyAgICAgICYmIEJVRkZFUlAgKHctPmJ1ZmZlcikgJiYgdy0+ d2luZG93X2VuZF92YWxpZCkKICAgICB7CiAgICAgICBwdHJkaWZmX3QgcHQ7CiAKQEAgLTEz MTAzLDEyICsxMzEwMyw5IEBACiAgIC8qIElmIHNob3dpbmcgdGhlIHJlZ2lvbiwgYW5kIG1h cmsgaGFzIGNoYW5nZWQsIHdlIG11c3QgcmVkaXNwbGF5CiAgICAgIHRoZSB3aG9sZSB3aW5k b3cuICBUaGUgYXNzaWdubWVudCB0byB0aGlzX2xpbmVfc3RhcnRfcG9zIHByZXZlbnRzCiAg ICAgIHRoZSBvcHRpbWl6YXRpb24gZGlyZWN0bHkgYmVsb3cgdGhpcyBpZi1zdGF0ZW1lbnQu ICAqLwotICBpZiAoKCghTklMUCAoVnRyYW5zaWVudF9tYXJrX21vZGUpCi0JJiYgIU5JTFAg KEJWQVIgKFhCVUZGRVIgKHctPmJ1ZmZlciksIG1hcmtfYWN0aXZlKSkpCi0gICAgICAgIT0g IU5JTFAgKHctPnJlZ2lvbl9zaG93aW5nKSkKLSAgICAgIHx8ICghTklMUCAody0+cmVnaW9u X3Nob3dpbmcpCi0JICAmJiAhRVEgKHctPnJlZ2lvbl9zaG93aW5nLAotCQkgIEZtYXJrZXJf cG9zaXRpb24gKEJWQVIgKFhCVUZGRVIgKHctPmJ1ZmZlciksIG1hcmspKSkpKQorICBpZiAo dy0+cmVnaW9uX3Nob3dpbmcKKyAgICAgIHx8ICghTklMUCAoVnRyYW5zaWVudF9tYXJrX21v ZGUpCisJICAmJiAhTklMUCAoQlZBUiAoWEJVRkZFUiAody0+YnVmZmVyKSwgbWFya19hY3Rp dmUpKSkpCiAgICAgQ0hBUlBPUyAodGhpc19saW5lX3N0YXJ0X3BvcykgPSAwOwogCiAgIC8q IE9wdGltaXplIHRoZSBjYXNlIHRoYXQgb25seSB0aGUgbGluZSBjb250YWluaW5nIHRoZSBj dXJzb3IgaW4gdGhlCkBAIC0xMzIyNCwxMyArMTMyMjEsMTMgQEAKIAkJIGFkanVzdGVkLiAg Ki8KIAkgICAgICBpZiAoKGl0LmdseXBoX3JvdyAtIDEpLT5kaXNwbGF5c190ZXh0X3ApCiAJ CXsKLQkJICBpZiAoWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykgPCB0aGlzX2xpbmVf dnBvcykKLQkJICAgIFhTRVRJTlQgKHctPndpbmRvd19lbmRfdnBvcywgdGhpc19saW5lX3Zw b3MpOworCQkgIGlmICh3LT53aW5kb3dfZW5kX3Zwb3MgPCB0aGlzX2xpbmVfdnBvcykKKwkJ ICAgIHctPndpbmRvd19lbmRfdnBvcyA9IHRoaXNfbGluZV92cG9zOwogCQl9Ci0JICAgICAg ZWxzZSBpZiAoWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykgPT0gdGhpc19saW5lX3Zw b3MKKwkgICAgICBlbHNlIGlmICh3LT53aW5kb3dfZW5kX3Zwb3MgPT0gdGhpc19saW5lX3Zw b3MKIAkJICAgICAgICYmIHRoaXNfbGluZV92cG9zID4gMCkKLQkJWFNFVElOVCAody0+d2lu ZG93X2VuZF92cG9zLCB0aGlzX2xpbmVfdnBvcyAtIDEpOwotCSAgICAgIHctPndpbmRvd19l bmRfdmFsaWQgPSBRbmlsOworCQl3LT53aW5kb3dfZW5kX3Zwb3MgPSB0aGlzX2xpbmVfdnBv cyAtIDE7CisJICAgICAgdy0+d2luZG93X2VuZF92YWxpZCA9IDA7CiAKIAkgICAgICAvKiBV cGRhdGUgaGludDogTm8gbmVlZCB0byB0cnkgdG8gc2Nyb2xsIGluIHVwZGF0ZV93aW5kb3cu ICAqLwogCSAgICAgIHctPmRlc2lyZWRfbWF0cml4LT5ub19zY3JvbGxpbmdfcCA9IDE7CkBA IC0xMzI3Niw3ICsxMzI3Myw3IEBACiAJICAgICAgICYmIChFUSAoc2VsZWN0ZWRfd2luZG93 LAogCQkgICAgICAgQlZBUiAoY3VycmVudF9idWZmZXIsIGxhc3Rfc2VsZWN0ZWRfd2luZG93 KSkKIAkJICAgfHwgaGlnaGxpZ2h0X25vbnNlbGVjdGVkX3dpbmRvd3MpCi0JICAgICAgICYm IE5JTFAgKHctPnJlZ2lvbl9zaG93aW5nKQorCSAgICAgICAmJiAhdy0+cmVnaW9uX3Nob3dp bmcKIAkgICAgICAgJiYgTklMUCAoVnNob3dfdHJhaWxpbmdfd2hpdGVzcGFjZSkKIAkgICAg ICAgJiYgIWN1cnNvcl9pbl9lY2hvX2FyZWEpCiAJewpAQCAtMTM2OTUsNyArMTM2OTIsNyBA QAogCiAgIGlmIChhY2N1cmF0ZV9wKQogICAgIHsKLSAgICAgIHctPndpbmRvd19lbmRfdmFs aWQgPSB3LT5idWZmZXI7CisgICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gMTsKICAgICAg IHctPnVwZGF0ZV9tb2RlX2xpbmUgPSAwOwogICAgIH0KIH0KQEAgLTE0OTM1LDYgKzE0OTMy LDEwIEBACiAgICAgIHB0cmRpZmZfdCwgdGh1cyB6ZXJvIG1lYW5zIGludmFsaWQgcG9zaXRp b24gaW4gYSBidWZmZXIuICAqLwogICBlYXNzZXJ0ICh3LT5sYXN0X3BvaW50ID4gMCk7CiAK KyAgLyogSnVzdCBpbml0aWFsaXplZCB3aW5kb3dzIHNob3VsZCBub3QgcGFzcyBoZXJlLiAg Ki8KKyAgZWFzc2VydCAody0+d2luZG93X2VuZF9wb3MgPj0gMCk7CisgIGVhc3NlcnQgKHct PndpbmRvd19lbmRfdnBvcyA+PSAwKTsKKwogICAvKiBIYW5kbGUgY2FzZSB3aGVyZSB0ZXh0 IGhhcyBub3QgY2hhbmdlZCwgb25seSBwb2ludCwgYW5kIGl0IGhhcwogICAgICBub3QgbW92 ZWQgb2ZmIHRoZSBmcmFtZS4gICovCiAgIGlmICgvKiBQb2ludCBtYXkgYmUgaW4gdGhpcyB3 aW5kb3cuICAqLwpAQCAtMTQ5NTMsNyArMTQ5NTQsNyBAQAogICAgICAgICAgc2V0IHRoZSBj dXJzb3IuICAqLwogICAgICAgJiYgISghTklMUCAoVnRyYW5zaWVudF9tYXJrX21vZGUpCiAJ ICAgJiYgIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBtYXJrX2FjdGl2ZSkpKQotICAg ICAgJiYgTklMUCAody0+cmVnaW9uX3Nob3dpbmcpCisgICAgICAmJiAhdy0+cmVnaW9uX3No b3dpbmcKICAgICAgICYmIE5JTFAgKFZzaG93X3RyYWlsaW5nX3doaXRlc3BhY2UpCiAgICAg ICAvKiBUaGlzIGNvZGUgaXMgbm90IHVzZWQgZm9yIG1pbmktYnVmZmVyIGZvciB0aGUgc2Fr ZSBvZiB0aGUgY2FzZQogCSBvZiByZWRpc3BsYXlpbmcgdG8gcmVwbGFjZSBhbiBlY2hvIGFy ZWEgbWVzc2FnZTsgc2luY2UgaW4KQEAgLTE0OTYyLDEzICsxNDk2Myw5IEBACiAJIHNpbmNl IHRoZSBoYW5kbGluZyBvZiB0aGlzX2xpbmVfc3RhcnRfcG9zLCBldGMuLCBpbiByZWRpc3Bs YXkKIAkgaGFuZGxlcyB0aGUgc2FtZSBjYXNlcy4gICovCiAgICAgICAmJiAhRVEgKHdpbmRv dywgbWluaWJ1Zl93aW5kb3cpCi0gICAgICAvKiBXaGVuIHNwbGl0dGluZyB3aW5kb3dzIG9y IGZvciBuZXcgd2luZG93cywgaXQgaGFwcGVucyB0aGF0Ci0JIHJlZGlzcGxheSBpcyBjYWxs ZWQgd2l0aCBhIG5pbCB3aW5kb3dfZW5kX3Zwb3Mgb3Igb25lIGJlaW5nCi0JIGxhcmdlciB0 aGFuIHRoZSB3aW5kb3cuICBUaGlzIHNob3VsZCByZWFsbHkgYmUgZml4ZWQgaW4KLQkgd2lu ZG93LmMuICBJIGRvbid0IGhhdmUgdGhpcyBvbiBteSBsaXN0LCBub3csIHNvIHdlIGRvCi0J IGFwcHJveGltYXRlbHkgdGhlIHNhbWUgYXMgdGhlIG9sZCByZWRpc3BsYXkgY29kZS4gIC0t Z2VyZC4gICovCi0gICAgICAmJiBJTlRFR0VSUCAody0+d2luZG93X2VuZF92cG9zKQotICAg ICAgJiYgWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykgPCB3LT5jdXJyZW50X21hdHJp eC0+bnJvd3MKKyAgICAgIC8qIFByZXZpb3VzbHksIHRoZXJlIHdhcyBHZXJkJ3MgY29tbWVu dCBzdWdnZXN0aW5nCisJIHRvIGZpeCB3aW5kb3cuYy4gIEkgYmVsaWV2ZSB0aGF0IGl0IGlz IGRvbmUuICAqLworICAgICAgJiYgdy0+d2luZG93X2VuZF92cG9zIDwgdy0+Y3VycmVudF9t YXRyaXgtPm5yb3dzCiAgICAgICAmJiAoRlJBTUVfV0lORE9XX1AgKGYpCiAJICB8fCAhb3Zl cmxheV9hcnJvd19pbl9jdXJyZW50X2J1ZmZlcl9wICgpKSkKICAgICB7CkBAIC0xNTI4MCw3 ICsxNTI3Nyw3IEBACiAgICAgICBzdGFydCA9IG1hcmtlcl9wb3NpdGlvbiAody0+c3RhcnQp IC0gQlVGX0JFR1YgKGJ1Zik7CiAgICAgICAvKiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgZ3Vh cmFudGVlZCB0byBiZSByaWdodC4gIEZvciB0aGUKIAkgbW9tZW50LCB3ZSdsbCBwcmV0ZW5k IGl0IGlzLiAgKi8KLSAgICAgIGVuZCA9IEJVRl9aIChidWYpIC0gWEZBU1RJTlQgKHctPndp bmRvd19lbmRfcG9zKSAtIEJVRl9CRUdWIChidWYpOworICAgICAgZW5kID0gQlVGX1ogKGJ1 ZikgLSB3LT53aW5kb3dfZW5kX3BvcyAtIEJVRl9CRUdWIChidWYpOwogCiAgICAgICBpZiAo ZW5kIDwgc3RhcnQpCiAJZW5kID0gc3RhcnQ7CkBAIC0xNTM5MCw3ICsxNTM4Nyw3IEBACiAg IHNldF9idWZmZXJfaW50ZXJuYWxfMSAoWEJVRkZFUiAody0+YnVmZmVyKSk7CiAKICAgY3Vy cmVudF9tYXRyaXhfdXBfdG9fZGF0ZV9wCi0gICAgPSAoIU5JTFAgKHctPndpbmRvd19lbmRf dmFsaWQpCisgICAgPSAody0+d2luZG93X2VuZF92YWxpZAogICAgICAgICYmICFjdXJyZW50 X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkCiAgICAgICAgJiYgIWN1cnJlbnRfYnVmZmVyLT5wcmV2 ZW50X3JlZGlzcGxheV9vcHRpbWl6YXRpb25zX3AKICAgICAgICAmJiB3LT5sYXN0X21vZGlm aWVkID49IE1PRElGRgpAQCAtMTU0MTQsNyArMTU0MTEsNyBAQAogICBzcGVjYmluZCAoUWlu aGliaXRfcG9pbnRfbW90aW9uX2hvb2tzLCBRdCk7CiAKICAgYnVmZmVyX3VuY2hhbmdlZF9w Ci0gICAgPSAoIU5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQpCisgICAgPSAody0+d2luZG93 X2VuZF92YWxpZAogICAgICAgICYmICFjdXJyZW50X2J1ZmZlci0+Y2xpcF9jaGFuZ2VkCiAg ICAgICAgJiYgdy0+bGFzdF9tb2RpZmllZCA+PSBNT0RJRkYKICAgICAgICAmJiB3LT5sYXN0 X292ZXJsYXlfbW9kaWZpZWQgPj0gT1ZFUkxBWV9NT0RJRkYpOwpAQCAtMTU0MjgsNyArMTU0 MjUsNyBAQAogICAgICAgaWYgKFhNQVJLRVIgKHctPnN0YXJ0KS0+YnVmZmVyID09IGN1cnJl bnRfYnVmZmVyKQogCWNvbXB1dGVfd2luZG93X3N0YXJ0X29uX2NvbnRpbnVhdGlvbl9saW5l ICh3KTsKIAotICAgICAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFuaWw7CisgICAgICB3LT53 aW5kb3dfZW5kX3ZhbGlkID0gMDsKICAgICB9CiAKICAgLyogU29tZSBzYW5pdHkgY2hlY2tz LiAgKi8KQEAgLTE1NTM5LDcgKzE1NTM2LDcgQEAKIAogICAgICAgdy0+Zm9yY2Vfc3RhcnQg PSAwOwogICAgICAgdy0+dnNjcm9sbCA9IDA7Ci0gICAgICB3LT53aW5kb3dfZW5kX3ZhbGlk ID0gUW5pbDsKKyAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogCiAgICAgICAvKiBG b3JnZXQgYW55IHJlY29yZGVkIGJhc2UgbGluZSBmb3IgbGluZSBudW1iZXIgZGlzcGxheS4g ICovCiAgICAgICBpZiAoIWJ1ZmZlcl91bmNoYW5nZWRfcCkKQEAgLTE1OTYyLDggKzE1OTU5 LDggQEAKICAgICAgbGluZS4pICAqLwogICBpZiAody0+Y3Vyc29yLnZwb3MgPCAwKQogICAg IHsKLSAgICAgIGlmICghTklMUCAody0+d2luZG93X2VuZF92YWxpZCkKLQkgICYmIFBUID49 IFogLSBYRkFTVElOVCAody0+d2luZG93X2VuZF9wb3MpKQorICAgICAgaWYgKHctPndpbmRv d19lbmRfdmFsaWQKKwkgICYmIFBUID49IFogLSB3LT53aW5kb3dfZW5kX3BvcykKIAl7CiAJ ICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmRlc2lyZWRfbWF0cml4KTsKIAkgIG1vdmVfaXRf YnlfbGluZXMgKCZpdCwgMSk7CkBAIC0xNjIwMiw2ICsxNjE5OSwxMCBAQAogICBzdHJ1Y3Qg Z2x5cGhfcm93ICpsYXN0X3RleHRfcm93ID0gTlVMTDsKICAgc3RydWN0IGZyYW1lICpmID0g WEZSQU1FICh3LT5mcmFtZSk7CiAKKyAgLyogSnVzdCBpbml0aWFsaXplZCB3aW5kb3dzIHNo b3VsZCBub3QgcGFzcyBoZXJlLiAgKi8KKyAgZWFzc2VydCAody0+d2luZG93X2VuZF9wb3Mg Pj0gMCk7CisgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKKwogICAvKiBN YWtlIFBPUyB0aGUgbmV3IHdpbmRvdyBzdGFydC4gICovCiAgIHNldF9tYXJrZXJfYm90aCAo dy0+c3RhcnQsIFFuaWwsIENIQVJQT1MgKHBvcyksIEJZVEVQT1MgKHBvcykpOwogCkBAIC0x NjI1Miw3ICsxNjI1Myw3IEBACiAgICAgfQogCiAgIC8qIElmIGJvdHRvbSBtb3ZlZCBvZmYg ZW5kIG9mIGZyYW1lLCBjaGFuZ2UgbW9kZSBsaW5lIHBlcmNlbnRhZ2UuICAqLwotICBpZiAo WEZBU1RJTlQgKHctPndpbmRvd19lbmRfcG9zKSA8PSAwCisgIGlmICh3LT53aW5kb3dfZW5k X3BvcyA8PSAwCiAgICAgICAmJiBaICE9IElUX0NIQVJQT1MgKGl0KSkKICAgICB3LT51cGRh dGVfbW9kZV9saW5lID0gMTsKIApAQCAtMTYyNjQsMjIgKzE2MjY1LDIyIEBACiAgICAgICBl YXNzZXJ0IChNQVRSSVhfUk9XX0RJU1BMQVlTX1RFWFRfUCAobGFzdF90ZXh0X3JvdykpOwog ICAgICAgdy0+d2luZG93X2VuZF9ieXRlcG9zCiAJPSBaX0JZVEUgLSBNQVRSSVhfUk9XX0VO RF9CWVRFUE9TIChsYXN0X3RleHRfcm93KTsKLSAgICAgIHctPndpbmRvd19lbmRfcG9zCi0J PSBtYWtlX251bWJlciAoWiAtIE1BVFJJWF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9y b3cpKTsKLSAgICAgIHctPndpbmRvd19lbmRfdnBvcwotCT0gbWFrZV9udW1iZXIgKE1BVFJJ WF9ST1dfVlBPUyAobGFzdF90ZXh0X3Jvdywgdy0+ZGVzaXJlZF9tYXRyaXgpKTsKLSAgICAg IGVhc3NlcnQgKE1BVFJJWF9ST1cgKHctPmRlc2lyZWRfbWF0cml4LCBYRkFTVElOVCAody0+ d2luZG93X2VuZF92cG9zKSkKKyAgICAgIHctPndpbmRvd19lbmRfcG9zID0gWiAtIE1BVFJJ WF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9yb3cpOworICAgICAgdy0+d2luZG93X2Vu ZF92cG9zID0gTUFUUklYX1JPV19WUE9TIChsYXN0X3RleHRfcm93LCB3LT5kZXNpcmVkX21h dHJpeCk7CisgICAgICBlYXNzZXJ0ICh3LT53aW5kb3dfZW5kX3BvcyA+PSAwKTsKKyAgICAg IGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKKyAgICAgIGVhc3NlcnQgKE1B VFJJWF9ST1cgKHctPmRlc2lyZWRfbWF0cml4LCB3LT53aW5kb3dfZW5kX3Zwb3MpCiAJICAg ICAgIC0+ZGlzcGxheXNfdGV4dF9wKTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICB3 LT53aW5kb3dfZW5kX2J5dGVwb3MgPSBaX0JZVEUgLSBaVl9CWVRFOwotICAgICAgdy0+d2lu ZG93X2VuZF9wb3MgPSBtYWtlX251bWJlciAoWiAtIFpWKTsKLSAgICAgIHctPndpbmRvd19l bmRfdnBvcyA9IG1ha2VfbnVtYmVyICgwKTsKKyAgICAgIHctPndpbmRvd19lbmRfcG9zID0g WiAtIFpWOworICAgICAgdy0+d2luZG93X2VuZF92cG9zID0gMDsKICAgICB9CiAKICAgLyog QnV0IHRoYXQgaXMgbm90IHZhbGlkIGluZm8gdW50aWwgcmVkaXNwbGF5IGZpbmlzaGVzLiAg Ki8KLSAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFuaWw7CisgIHctPndpbmRvd19lbmRfdmFs aWQgPSAwOwogICByZXR1cm4gMTsKIH0KIApAQCAtMTYzMTMsNiArMTYzMTQsMTAgQEAKICAg ICByZXR1cm4gMDsKICNlbmRpZgogCisgIC8qIEp1c3QgaW5pdGlhbGl6ZWQgd2luZG93cyBz aG91bGQgbm90IHBhc3MgaGVyZS4gICovCisgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfcG9z ID49IDApOworICBlYXNzZXJ0ICh3LT53aW5kb3dfZW5kX3Zwb3MgPj0gMCk7CisKICAgaWYg KC8qIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYW5kbGUgdGVybWluYWwgZnJhbWVzLiAgKi8K ICAgICAgICFGUkFNRV9XSU5ET1dfUCAoZikKICAgICAgIC8qIERvbid0IHRyeSB0byByZXVz ZSB0aGUgZGlzcGxheSBpZiB3aW5kb3dzIGhhdmUgYmVlbiBzcGxpdApAQCAtMTYzMjQsNyAr MTYzMjksNyBAQAogICAvKiBDYW4ndCBkbyB0aGlzIGlmIHJlZ2lvbiBtYXkgaGF2ZSBjaGFu Z2VkLiAgKi8KICAgaWYgKCghTklMUCAoVnRyYW5zaWVudF9tYXJrX21vZGUpCiAgICAgICAg JiYgIU5JTFAgKEJWQVIgKGN1cnJlbnRfYnVmZmVyLCBtYXJrX2FjdGl2ZSkpKQotICAgICAg fHwgIU5JTFAgKHctPnJlZ2lvbl9zaG93aW5nKQorICAgICAgfHwgdy0+cmVnaW9uX3Nob3dp bmcKICAgICAgIHx8ICFOSUxQIChWc2hvd190cmFpbGluZ193aGl0ZXNwYWNlKSkKICAgICBy ZXR1cm4gMDsKIApAQCAtMTY1MDMsMjkgKzE2NTA4LDI4IEBACiAJewogCSAgdy0+d2luZG93 X2VuZF9ieXRlcG9zCiAJICAgID0gWl9CWVRFIC0gTUFUUklYX1JPV19FTkRfQllURVBPUyAo bGFzdF9yZXVzZWRfdGV4dF9yb3cpOwotCSAgdy0+d2luZG93X2VuZF9wb3MKLQkgICAgPSBt YWtlX251bWJlciAoWiAtIE1BVFJJWF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfcmV1c2VkX3Rl eHRfcm93KSk7Ci0JICB3LT53aW5kb3dfZW5kX3Zwb3MKLQkgICAgPSBtYWtlX251bWJlciAo TUFUUklYX1JPV19WUE9TIChsYXN0X3JldXNlZF90ZXh0X3JvdywKLQkJCQkJICAgIHctPmN1 cnJlbnRfbWF0cml4KSk7CisJICB3LT53aW5kb3dfZW5kX3BvcyA9IFogLSBNQVRSSVhfUk9X X0VORF9DSEFSUE9TIChsYXN0X3JldXNlZF90ZXh0X3Jvdyk7CisJICB3LT53aW5kb3dfZW5k X3Zwb3MgPSBNQVRSSVhfUk9XX1ZQT1MgKGxhc3RfcmV1c2VkX3RleHRfcm93LCB3LT5jdXJy ZW50X21hdHJpeCk7CisJICBlYXNzZXJ0ICh3LT53aW5kb3dfZW5kX3BvcyA+PSAwKTsKKwkg IGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKIAl9CiAgICAgICBlbHNlIGlm IChsYXN0X3RleHRfcm93KQogCXsKIAkgIHctPndpbmRvd19lbmRfYnl0ZXBvcwogCSAgICA9 IFpfQllURSAtIE1BVFJJWF9ST1dfRU5EX0JZVEVQT1MgKGxhc3RfdGV4dF9yb3cpOwotCSAg dy0+d2luZG93X2VuZF9wb3MKLQkgICAgPSBtYWtlX251bWJlciAoWiAtIE1BVFJJWF9ST1df RU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9yb3cpKTsKLQkgIHctPndpbmRvd19lbmRfdnBvcwot CSAgICA9IG1ha2VfbnVtYmVyIChNQVRSSVhfUk9XX1ZQT1MgKGxhc3RfdGV4dF9yb3csIHct PmRlc2lyZWRfbWF0cml4KSk7CisJICB3LT53aW5kb3dfZW5kX3BvcyA9IFogLSBNQVRSSVhf Uk9XX0VORF9DSEFSUE9TIChsYXN0X3RleHRfcm93KTsKKwkgIHctPndpbmRvd19lbmRfdnBv cyA9IE1BVFJJWF9ST1dfVlBPUyAobGFzdF90ZXh0X3Jvdywgdy0+ZGVzaXJlZF9tYXRyaXgp OworCSAgZWFzc2VydCAody0+d2luZG93X2VuZF9wb3MgPj0gMCk7CisJICBlYXNzZXJ0ICh3 LT53aW5kb3dfZW5kX3Zwb3MgPj0gMCk7CiAJfQogICAgICAgZWxzZQogCXsKIAkgIC8qIFRo aXMgd2luZG93IG11c3QgYmUgY29tcGxldGVseSBlbXB0eS4gICovCiAJICB3LT53aW5kb3df ZW5kX2J5dGVwb3MgPSBaX0JZVEUgLSBaVl9CWVRFOwotCSAgdy0+d2luZG93X2VuZF9wb3Mg PSBtYWtlX251bWJlciAoWiAtIFpWKTsKLQkgIHctPndpbmRvd19lbmRfdnBvcyA9IG1ha2Vf bnVtYmVyICgwKTsKKwkgIHctPndpbmRvd19lbmRfcG9zID0gWiAtIFpWOworCSAgdy0+d2lu ZG93X2VuZF92cG9zID0gMDsKIAl9Ci0gICAgICB3LT53aW5kb3dfZW5kX3ZhbGlkID0gUW5p bDsKKyAgICAgIHctPndpbmRvd19lbmRfdmFsaWQgPSAwOwogCiAgICAgICAvKiBVcGRhdGUg aGludDogZG9uJ3QgdHJ5IHNjcm9sbGluZyBhZ2FpbiBpbiB1cGRhdGVfd2luZG93LiAgKi8K ICAgICAgIHctPmRlc2lyZWRfbWF0cml4LT5ub19zY3JvbGxpbmdfcCA9IDE7CkBAIC0xNjcw NiwxOCArMTY3MTAsMTYgQEAKIAl7CiAJICB3LT53aW5kb3dfZW5kX2J5dGVwb3MKIAkgICAg PSBaX0JZVEUgLSBNQVRSSVhfUk9XX0VORF9CWVRFUE9TIChsYXN0X3RleHRfcm93KTsKLQkg IHctPndpbmRvd19lbmRfcG9zCi0JICAgID0gbWFrZV9udW1iZXIgKFogLSBNQVRSSVhfUk9X X0VORF9DSEFSUE9TIChsYXN0X3RleHRfcm93KSk7Ci0JICB3LT53aW5kb3dfZW5kX3Zwb3MK LQkgICAgPSBtYWtlX251bWJlciAoTUFUUklYX1JPV19WUE9TIChsYXN0X3RleHRfcm93LCB3 LT5kZXNpcmVkX21hdHJpeCkpOworCSAgdy0+d2luZG93X2VuZF9wb3MgPSBaIC0gTUFUUklY X1JPV19FTkRfQ0hBUlBPUyAobGFzdF90ZXh0X3Jvdyk7CisJICB3LT53aW5kb3dfZW5kX3Zw b3MgPSBNQVRSSVhfUk9XX1ZQT1MgKGxhc3RfdGV4dF9yb3csIHctPmRlc2lyZWRfbWF0cml4 KTsKIAl9CiAgICAgICBlbHNlCi0JewotCSAgdy0+d2luZG93X2VuZF92cG9zCi0JICAgID0g bWFrZV9udW1iZXIgKFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MpIC0gbnJvd3Nfc2Ny b2xsZWQpOwotCX0KLQotICAgICAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFuaWw7CisJdy0+ d2luZG93X2VuZF92cG9zID0gdy0+d2luZG93X2VuZF92cG9zIC0gbnJvd3Nfc2Nyb2xsZWQ7 CisKKyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfcG9zID49IDApOworICAgICAgZWFz c2VydCAody0+d2luZG93X2VuZF92cG9zID49IDApOworCisgICAgICB3LT53aW5kb3dfZW5k X3ZhbGlkID0gMDsKICAgICAgIHctPmRlc2lyZWRfbWF0cml4LT5ub19zY3JvbGxpbmdfcCA9 IDE7CiAKICNpZmRlZiBHTFlQSF9ERUJVRwpAQCAtMTY4NTAsMTYgKzE2ODUyLDE2IEBACiAK ICAgLyogRGlzcGxheSBtdXN0IG5vdCBoYXZlIGJlZW4gcGF1c2VkLCBvdGhlcndpc2UgdGhl IGN1cnJlbnQgbWF0cml4CiAgICAgIGlzIG5vdCB1cCB0byBkYXRlLiAgKi8KLSAgZWFzc2Vy dCAoIU5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQpKTsKKyAgZWFzc2VydCAody0+d2luZG93 X2VuZF92YWxpZCk7CiAKICAgLyogQSB2YWx1ZSBvZiB3aW5kb3dfZW5kX3BvcyA+PSBFTkRf VU5DSEFOR0VEIG1lYW5zIHRoYXQgdGhlIHdpbmRvdwogICAgICBlbmQgaXMgaW4gdGhlIHJh bmdlIG9mIGNoYW5nZWQgdGV4dC4gIElmIHNvLCB0aGVyZSBpcyBubwogICAgICB1bmNoYW5n ZWQgcm93IGF0IHRoZSBlbmQgb2YgVydzIGN1cnJlbnQgbWF0cml4LiAgKi8KLSAgaWYgKFhG QVNUSU5UICh3LT53aW5kb3dfZW5kX3BvcykgPj0gRU5EX1VOQ0hBTkdFRCkKKyAgaWYgKHct PndpbmRvd19lbmRfcG9zID49IEVORF9VTkNIQU5HRUQpCiAgICAgcmV0dXJuIE5VTEw7CiAK ICAgLyogU2V0IHJvdyB0byB0aGUgbGFzdCByb3cgaW4gVydzIGN1cnJlbnQgbWF0cml4IGRp c3BsYXlpbmcgdGV4dC4gICovCi0gIHJvdyA9IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0 cml4LCBYRkFTVElOVCAody0+d2luZG93X2VuZF92cG9zKSk7CisgIHJvdyA9IE1BVFJJWF9S T1cgKHctPmN1cnJlbnRfbWF0cml4LCB3LT53aW5kb3dfZW5kX3Zwb3MpOwogCiAgIC8qIElm IG1hdHJpeCBpcyBlbnRpcmVseSBlbXB0eSwgbm8gdW5jaGFuZ2VkIHJvdyBleGlzdHMuICAq LwogICBpZiAoTUFUUklYX1JPV19ESVNQTEFZU19URVhUX1AgKHJvdykpCkBAIC0xNjg3MCw3 ICsxNjg3Miw3IEBACiAJIGJ1ZmZlciBwb3NpdGlvbnMgaW4gdGhlIGN1cnJlbnQgbWF0cml4 IHRvIGN1cnJlbnQgYnVmZmVyCiAJIHBvc2l0aW9ucyBmb3IgY2hhcmFjdGVycyBub3QgaW4g Y2hhbmdlZCB0ZXh0LiAgKi8KICAgICAgIHB0cmRpZmZfdCBaX29sZCA9Ci0JTUFUUklYX1JP V19FTkRfQ0hBUlBPUyAocm93KSArIFhGQVNUSU5UICh3LT53aW5kb3dfZW5kX3Bvcyk7CisJ TUFUUklYX1JPV19FTkRfQ0hBUlBPUyAocm93KSArIHctPndpbmRvd19lbmRfcG9zOwogICAg ICAgcHRyZGlmZl90IFpfQllURV9vbGQgPQogCU1BVFJJWF9ST1dfRU5EX0JZVEVQT1MgKHJv dykgKyB3LT53aW5kb3dfZW5kX2J5dGVwb3M7CiAgICAgICBwdHJkaWZmX3QgbGFzdF91bmNo YW5nZWRfcG9zLCBsYXN0X3VuY2hhbmdlZF9wb3Nfb2xkOwpAQCAtMTcxMDQsNiArMTcxMDYs MTAgQEAKICNkZWZpbmUgR0lWRV9VUChYKSByZXR1cm4gMAogI2VuZGlmCiAKKyAgLyogSnVz dCBpbml0aWFsaXplZCB3aW5kb3dzIHNob3VsZCBub3QgcGFzcyBoZXJlLiAgKi8KKyAgZWFz c2VydCAody0+d2luZG93X2VuZF9wb3MgPj0gMCk7CisgIGVhc3NlcnQgKHctPndpbmRvd19l bmRfdnBvcyA+PSAwKTsKKwogICBTRVRfVEVYVF9QT1NfRlJPTV9NQVJLRVIgKHN0YXJ0LCB3 LT5zdGFydCk7CiAKICAgLyogRG9uJ3QgdXNlIHRoaXMgZm9yIG1pbmktd2luZG93cyBiZWNh dXNlIHRoZXNlIGNhbiBzaG93CkBAIC0xNzE0Miw3ICsxNzE0OCw3IEBACiAgICAgR0lWRV9V UCAoNyk7CiAKICAgLyogVmVyaWZ5IHRoYXQgZGlzcGxheSB3YXNuJ3QgcGF1c2VkLiAgKi8K LSAgaWYgKE5JTFAgKHctPndpbmRvd19lbmRfdmFsaWQpKQorICBpZiAoIXctPndpbmRvd19l bmRfdmFsaWQpCiAgICAgR0lWRV9VUCAoOCk7CiAKICAgLyogQ2FuJ3QgdXNlIHRoaXMgaWYg aGlnaGxpZ2h0aW5nIGEgcmVnaW9uIGJlY2F1c2UgYSBjdXJzb3IgbW92ZW1lbnQKQEAgLTE3 MTU2LDcgKzE3MTYyLDcgQEAKICAgICBHSVZFX1VQICgxMSk7CiAKICAgLyogTGlrZXdpc2Ug aWYgc2hvd2luZyBhIHJlZ2lvbi4gICovCi0gIGlmICghTklMUCAody0+cmVnaW9uX3Nob3dp bmcpKQorICBpZiAody0+cmVnaW9uX3Nob3dpbmcpCiAgICAgR0lWRV9VUCAoMTApOwogCiAg IC8qIENhbid0IHVzZSB0aGlzIGlmIG92ZXJsYXkgYXJyb3cgcG9zaXRpb24gYW5kL29yIHN0 cmluZyBoYXZlCkBAIC0xNzIwNiw3ICsxNzIxMiw3IEBACiAgICAgIFRoaXMgY2FzZSBoYXBw ZW5zIHdpdGggc3RlYWx0aC1mb250aWZpY2F0aW9uLiAgTm90ZSB0aGF0IGFsdGhvdWdoCiAg ICAgIHRoZSBkaXNwbGF5IGlzIHVuY2hhbmdlZCwgZ2x5cGggcG9zaXRpb25zIGluIHRoZSBt YXRyaXggaGF2ZSB0bwogICAgICBiZSBhZGp1c3RlZCwgb2YgY291cnNlLiAgKi8KLSAgcm93 ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsIFhGQVNUSU5UICh3LT53aW5kb3df ZW5kX3Zwb3MpKTsKKyAgcm93ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsIHct PndpbmRvd19lbmRfdnBvcyk7CiAgIGlmIChNQVRSSVhfUk9XX0RJU1BMQVlTX1RFWFRfUCAo cm93KQogICAgICAgJiYgKChsYXN0X2NoYW5nZWRfY2hhcnBvcyA8IENIQVJQT1MgKHN0YXJ0 KQogCSAgICYmIENIQVJQT1MgKHN0YXJ0KSA9PSBCRUdWKQpAQCAtMTcyMTgsNyArMTcyMjQs NyBAQAogCiAgICAgICAvKiBDb21wdXRlIGhvdyBtYW55IGNoYXJzL2J5dGVzIGhhdmUgYmVl biBhZGRlZCB0byBvciByZW1vdmVkCiAJIGZyb20gdGhlIGJ1ZmZlci4gICovCi0gICAgICBa X29sZCA9IE1BVFJJWF9ST1dfRU5EX0NIQVJQT1MgKHJvdykgKyBYRkFTVElOVCAody0+d2lu ZG93X2VuZF9wb3MpOworICAgICAgWl9vbGQgPSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChy b3cpICsgdy0+d2luZG93X2VuZF9wb3M7CiAgICAgICBaX0JZVEVfb2xkID0gTUFUUklYX1JP V19FTkRfQllURVBPUyAocm93KSArIHctPndpbmRvd19lbmRfYnl0ZXBvczsKICAgICAgIFpf ZGVsdGEgPSBaIC0gWl9vbGQ7CiAgICAgICBaX2RlbHRhX2J5dGVzID0gWl9CWVRFIC0gWl9C WVRFX29sZDsKQEAgLTE3Mjg5LDggKzE3Mjk1LDggQEAKIAl7CiAJICAvKiBXZSBoYXZlIHRv IGNvbXB1dGUgdGhlIHdpbmRvdyBlbmQgYW5ldyBzaW5jZSB0ZXh0CiAJICAgICBjb3VsZCBo YXZlIGJlZW4gYWRkZWQvcmVtb3ZlZCBhZnRlciBpdC4gICovCi0JICB3LT53aW5kb3dfZW5k X3BvcwotCSAgICA9IG1ha2VfbnVtYmVyIChaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAo cm93KSk7CisJICB3LT53aW5kb3dfZW5kX3BvcyA9IFogLSBNQVRSSVhfUk9XX0VORF9DSEFS UE9TIChyb3cpOworCSAgZWFzc2VydCAody0+d2luZG93X2VuZF9wb3MgPj0gMCk7CiAJICB3 LT53aW5kb3dfZW5kX2J5dGVwb3MKIAkgICAgPSBaX0JZVEUgLSBNQVRSSVhfUk9XX0VORF9C WVRFUE9TIChyb3cpOwogCkBAIC0xNzMyNSw3ICsxNzMzMSw3IEBACiAKICAgLyogR2l2ZSB1 cCBpZiB0aGUgd2luZG93IGVuZHMgaW4gc3RyaW5ncy4gIE92ZXJsYXkgc3RyaW5ncwogICAg ICBhdCB0aGUgZW5kIGFyZSBkaWZmaWN1bHQgdG8gaGFuZGxlLCBzbyBkb24ndCB0cnkuICAq LwotICByb3cgPSBNQVRSSVhfUk9XIChjdXJyZW50X21hdHJpeCwgWEZBU1RJTlQgKHctPndp bmRvd19lbmRfdnBvcykpOworICByb3cgPSBNQVRSSVhfUk9XIChjdXJyZW50X21hdHJpeCwg dy0+d2luZG93X2VuZF92cG9zKTsKICAgaWYgKE1BVFJJWF9ST1dfU1RBUlRfQ0hBUlBPUyAo cm93KSA9PSBNQVRSSVhfUk9XX0VORF9DSEFSUE9TIChyb3cpKQogICAgIEdJVkVfVVAgKDIw KTsKIApAQCAtMTc2NjgsNyArMTc2NzQsNyBAQAogICAgICAgLyogU2V0IGxhc3Rfcm93IHRv IHRoZSBnbHlwaCByb3cgaW4gdGhlIGN1cnJlbnQgbWF0cml4IHdoZXJlIHRoZQogCSB3aW5k b3cgZW5kIGxpbmUgaXMgZm91bmQuICBJdCBoYXMgYmVlbiBtb3ZlZCB1cCBvciBkb3duIGlu CiAJIHRoZSBtYXRyaXggYnkgZHZwb3MuICAqLwotICAgICAgaW50IGxhc3RfdnBvcyA9IFhG QVNUSU5UICh3LT53aW5kb3dfZW5kX3Zwb3MpICsgZHZwb3M7CisgICAgICBwdHJkaWZmX3Qg bGFzdF92cG9zID0gdy0+d2luZG93X2VuZF92cG9zICsgZHZwb3M7CiAgICAgICBzdHJ1Y3Qg Z2x5cGhfcm93ICpsYXN0X3JvdyA9IE1BVFJJWF9ST1cgKGN1cnJlbnRfbWF0cml4LCBsYXN0 X3Zwb3MpOwogCiAgICAgICAvKiBJZiBsYXN0X3JvdyBpcyB0aGUgd2luZG93IGVuZCBsaW5l LCBpdCBzaG91bGQgZGlzcGxheSB0ZXh0LiAgKi8KQEAgLTE3NzI0LDIxICsxNzczMCwyMiBA QAogCQkJCQkgICBmaXJzdF91bmNoYW5nZWRfYXRfZW5kX3Jvdyk7CiAgICAgICBlYXNzZXJ0 IChyb3cgJiYgTUFUUklYX1JPV19ESVNQTEFZU19URVhUX1AgKHJvdykpOwogCi0gICAgICB3 LT53aW5kb3dfZW5kX3BvcyA9IG1ha2VfbnVtYmVyIChaIC0gTUFUUklYX1JPV19FTkRfQ0hB UlBPUyAocm93KSk7CisgICAgICB3LT53aW5kb3dfZW5kX3BvcyA9IFogLSBNQVRSSVhfUk9X X0VORF9DSEFSUE9TIChyb3cpOwogICAgICAgdy0+d2luZG93X2VuZF9ieXRlcG9zID0gWl9C WVRFIC0gTUFUUklYX1JPV19FTkRfQllURVBPUyAocm93KTsKLSAgICAgIHctPndpbmRvd19l bmRfdnBvcwotCT0gbWFrZV9udW1iZXIgKE1BVFJJWF9ST1dfVlBPUyAocm93LCB3LT5jdXJy ZW50X21hdHJpeCkpOworICAgICAgdy0+d2luZG93X2VuZF92cG9zID0gTUFUUklYX1JPV19W UE9TIChyb3csIHctPmN1cnJlbnRfbWF0cml4KTsKKyAgICAgIGVhc3NlcnQgKHctPndpbmRv d19lbmRfcG9zID49IDApOworICAgICAgZWFzc2VydCAody0+d2luZG93X2VuZF92cG9zID49 IDApOwogICAgICAgZWFzc2VydCAody0+d2luZG93X2VuZF9ieXRlcG9zID49IDApOwogICAg ICAgSUZfREVCVUcgKGRlYnVnX21ldGhvZF9hZGQgKHcsICJBIikpOwogICAgIH0KICAgZWxz ZSBpZiAobGFzdF90ZXh0X3Jvd19hdF9lbmQpCiAgICAgewotICAgICAgdy0+d2luZG93X2Vu ZF9wb3MKLQk9IG1ha2VfbnVtYmVyIChaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBPUyAobGFz dF90ZXh0X3Jvd19hdF9lbmQpKTsKKyAgICAgIHctPndpbmRvd19lbmRfcG9zID0gWiAtIE1B VFJJWF9ST1dfRU5EX0NIQVJQT1MgKGxhc3RfdGV4dF9yb3dfYXRfZW5kKTsKICAgICAgIHct PndpbmRvd19lbmRfYnl0ZXBvcwogCT0gWl9CWVRFIC0gTUFUUklYX1JPV19FTkRfQllURVBP UyAobGFzdF90ZXh0X3Jvd19hdF9lbmQpOwotICAgICAgdy0+d2luZG93X2VuZF92cG9zCi0J PSBtYWtlX251bWJlciAoTUFUUklYX1JPV19WUE9TIChsYXN0X3RleHRfcm93X2F0X2VuZCwg ZGVzaXJlZF9tYXRyaXgpKTsKKyAgICAgIHctPndpbmRvd19lbmRfdnBvcyA9IE1BVFJJWF9S T1dfVlBPUyAobGFzdF90ZXh0X3Jvd19hdF9lbmQsIGRlc2lyZWRfbWF0cml4KTsKKyAgICAg IGVhc3NlcnQgKHctPndpbmRvd19lbmRfcG9zID49IDApOworICAgICAgZWFzc2VydCAody0+ d2luZG93X2VuZF92cG9zID49IDApOwogICAgICAgZWFzc2VydCAody0+d2luZG93X2VuZF9i eXRlcG9zID49IDApOwogICAgICAgSUZfREVCVUcgKGRlYnVnX21ldGhvZF9hZGQgKHcsICJC IikpOwogICAgIH0KQEAgLTE3NzQ3LDEyICsxNzc1NCwxMiBAQAogICAgICAgLyogV2UgaGF2 ZSBkaXNwbGF5ZWQgZWl0aGVyIHRvIHRoZSBlbmQgb2YgdGhlIHdpbmRvdyBvciBhdCB0aGUK IAkgZW5kIG9mIHRoZSB3aW5kb3csIGkuZS4gdGhlIGxhc3Qgcm93IHdpdGggdGV4dCBpcyB0 byBiZSBmb3VuZAogCSBpbiB0aGUgZGVzaXJlZCBtYXRyaXguICAqLwotICAgICAgdy0+d2lu ZG93X2VuZF9wb3MKLQk9IG1ha2VfbnVtYmVyIChaIC0gTUFUUklYX1JPV19FTkRfQ0hBUlBP UyAobGFzdF90ZXh0X3JvdykpOworICAgICAgdy0+d2luZG93X2VuZF9wb3MgPSBaIC0gTUFU UklYX1JPV19FTkRfQ0hBUlBPUyAobGFzdF90ZXh0X3Jvdyk7CiAgICAgICB3LT53aW5kb3df ZW5kX2J5dGVwb3MKIAk9IFpfQllURSAtIE1BVFJJWF9ST1dfRU5EX0JZVEVQT1MgKGxhc3Rf dGV4dF9yb3cpOwotICAgICAgdy0+d2luZG93X2VuZF92cG9zCi0JPSBtYWtlX251bWJlciAo TUFUUklYX1JPV19WUE9TIChsYXN0X3RleHRfcm93LCBkZXNpcmVkX21hdHJpeCkpOworICAg ICAgdy0+d2luZG93X2VuZF92cG9zID0gTUFUUklYX1JPV19WUE9TIChsYXN0X3RleHRfcm93 LCBkZXNpcmVkX21hdHJpeCk7CisgICAgICBlYXNzZXJ0ICh3LT53aW5kb3dfZW5kX3BvcyA+ PSAwKTsKKyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBvcyA+PSAwKTsKICAgICAg IGVhc3NlcnQgKHctPndpbmRvd19lbmRfYnl0ZXBvcyA+PSAwKTsKICAgICB9CiAgIGVsc2Ug aWYgKGZpcnN0X3VuY2hhbmdlZF9hdF9lbmRfcm93ID09IE5VTEwKQEAgLTE3NzYyLDcgKzE3 NzY5LDcgQEAKICAgICAgIC8qIERpc3BsYXllZCB0byBlbmQgb2Ygd2luZG93LCBidXQgbm8g bGluZSBjb250YWluaW5nIHRleHQgd2FzCiAJIGRpc3BsYXllZC4gIExpbmVzIHdlcmUgZGVs ZXRlZCBhdCB0aGUgZW5kIG9mIHRoZSB3aW5kb3cuICAqLwogICAgICAgaW50IGZpcnN0X3Zw b3MgPSBXSU5ET1dfV0FOVFNfSEVBREVSX0xJTkVfUCAodykgPyAxIDogMDsKLSAgICAgIGlu dCB2cG9zID0gWEZBU1RJTlQgKHctPndpbmRvd19lbmRfdnBvcyk7CisgICAgICBpbnQgdnBv cyA9IHctPndpbmRvd19lbmRfdnBvczsKICAgICAgIHN0cnVjdCBnbHlwaF9yb3cgKmN1cnJl bnRfcm93ID0gY3VycmVudF9tYXRyaXgtPnJvd3MgKyB2cG9zOwogICAgICAgc3RydWN0IGds eXBoX3JvdyAqZGVzaXJlZF9yb3cgPSBkZXNpcmVkX21hdHJpeC0+cm93cyArIHZwb3M7CiAK QEAgLTE3NzgwLDIwICsxNzc4NywyMiBAQAogCX0KIAogICAgICAgZWFzc2VydCAocm93ICE9 IE5VTEwpOwotICAgICAgdy0+d2luZG93X2VuZF92cG9zID0gbWFrZV9udW1iZXIgKHZwb3Mg KyAxKTsKLSAgICAgIHctPndpbmRvd19lbmRfcG9zID0gbWFrZV9udW1iZXIgKFogLSBNQVRS SVhfUk9XX0VORF9DSEFSUE9TIChyb3cpKTsKKyAgICAgIHctPndpbmRvd19lbmRfdnBvcyA9 IHZwb3MgKyAxOworICAgICAgdy0+d2luZG93X2VuZF9wb3MgPSBaIC0gTUFUUklYX1JPV19F TkRfQ0hBUlBPUyAocm93KTsKICAgICAgIHctPndpbmRvd19lbmRfYnl0ZXBvcyA9IFpfQllU RSAtIE1BVFJJWF9ST1dfRU5EX0JZVEVQT1MgKHJvdyk7CisgICAgICBlYXNzZXJ0ICh3LT53 aW5kb3dfZW5kX3BvcyA+PSAwKTsKKyAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfdnBv cyA+PSAwKTsKICAgICAgIGVhc3NlcnQgKHctPndpbmRvd19lbmRfYnl0ZXBvcyA+PSAwKTsK ICAgICAgIElGX0RFQlVHIChkZWJ1Z19tZXRob2RfYWRkICh3LCAiQyIpKTsKICAgICB9CiAg IGVsc2UKICAgICBhYm9ydCAoKTsKIAotICBJRl9ERUJVRyAoZGVidWdfZW5kX3BvcyA9IFhG QVNUSU5UICh3LT53aW5kb3dfZW5kX3Bvcyk7Ci0JICAgIGRlYnVnX2VuZF92cG9zID0gWEZB U1RJTlQgKHctPndpbmRvd19lbmRfdnBvcykpOworICBJRl9ERUJVRyAoZGVidWdfZW5kX3Bv cyA9IHctPndpbmRvd19lbmRfcG9zOworCSAgICBkZWJ1Z19lbmRfdnBvcyA9IHctPndpbmRv d19lbmRfdnBvcyk7CiAKICAgLyogUmVjb3JkIHRoYXQgZGlzcGxheSBoYXMgbm90IGJlZW4g Y29tcGxldGVkLiAgKi8KLSAgdy0+d2luZG93X2VuZF92YWxpZCA9IFFuaWw7CisgIHctPndp bmRvd19lbmRfdmFsaWQgPSAwOwogICB3LT5kZXNpcmVkX21hdHJpeC0+bm9fc2Nyb2xsaW5n X3AgPSAxOwogICByZXR1cm4gMzsKIApAQCAtMTkxMzQsNyArMTkxNDMsNyBAQAogICAgIH0K IAogICAvKiBJcyBJVC0+dyBzaG93aW5nIHRoZSByZWdpb24/ICAqLwotICBpdC0+dy0+cmVn aW9uX3Nob3dpbmcgPSBpdC0+cmVnaW9uX2JlZ19jaGFycG9zID4gMCA/IFF0IDogUW5pbDsK KyAgaXQtPnctPnJlZ2lvbl9zaG93aW5nID0gaXQtPnJlZ2lvbl9iZWdfY2hhcnBvcyA+IDA7 CiAKICAgLyogQ2xlYXIgdGhlIHJlc3VsdCBnbHlwaCByb3cgYW5kIGVuYWJsZSBpdC4gICov CiAgIHByZXBhcmVfZGVzaXJlZF9yb3cgKHJvdyk7CkBAIC0yMTQwOSw3ICsyMTQxOCw3IEBA CiAJcHRyZGlmZl90IHBvcyA9IG1hcmtlcl9wb3NpdGlvbiAody0+c3RhcnQpOwogCXB0cmRp ZmZfdCB0b3RhbCA9IEJVRl9aViAoYikgLSBCVUZfQkVHViAoYik7CiAKLQlpZiAoWEZBU1RJ TlQgKHctPndpbmRvd19lbmRfcG9zKSA8PSBCVUZfWiAoYikgLSBCVUZfWlYgKGIpKQorCWlm ICh3LT53aW5kb3dfZW5kX3BvcyA8PSBCVUZfWiAoYikgLSBCVUZfWlYgKGIpKQogCSAgewog CSAgICBpZiAocG9zIDw9IEJVRl9CRUdWIChiKSkKIAkgICAgICByZXR1cm4gIkFsbCI7CkBA IC0yMTQzOCw3ICsyMTQ0Nyw3IEBACiAgICAgY2FzZSAnUCc6CiAgICAgICB7CiAJcHRyZGlm Zl90IHRvcHBvcyA9IG1hcmtlcl9wb3NpdGlvbiAody0+c3RhcnQpOwotCXB0cmRpZmZfdCBi b3Rwb3MgPSBCVUZfWiAoYikgLSBYRkFTVElOVCAody0+d2luZG93X2VuZF9wb3MpOworCXB0 cmRpZmZfdCBib3Rwb3MgPSBCVUZfWiAoYikgLSB3LT53aW5kb3dfZW5kX3BvczsKIAlwdHJk aWZmX3QgdG90YWwgPSBCVUZfWlYgKGIpIC0gQlVGX0JFR1YgKGIpOwogCiAJaWYgKGJvdHBv cyA+PSBCVUZfWlYgKGIpKQpAQCAtMjYzMTIsNyArMjYzMjEsNyBAQAogICAvKiBGaW5kIHRo ZSByb3dzIGNvcnJlc3BvbmRpbmcgdG8gU1RBUlRfQ0hBUlBPUyBhbmQgRU5EX0NIQVJQT1Mu ICAqLwogICByb3dzX2Zyb21fcG9zX3JhbmdlICh3LCBzdGFydF9jaGFycG9zLCBlbmRfY2hh cnBvcywgZGlzcF9zdHJpbmcsICZyMSwgJnIyKTsKICAgaWYgKHIxID09IE5VTEwpCi0gICAg cjEgPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50X21hdHJpeCwgWEZBU1RJTlQgKHctPndpbmRv d19lbmRfdnBvcykpOworICAgIHIxID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgs IHctPndpbmRvd19lbmRfdnBvcyk7CiAgIC8qIElmIHRoZSBiZWZvcmUtc3RyaW5nIG9yIGRp c3BsYXktc3RyaW5nIGNvbnRhaW5zIG5ld2xpbmVzLAogICAgICByb3dzX2Zyb21fcG9zX3Jh bmdlIHNraXBzIHRvIGl0cyBsYXN0IHJvdy4gIE1vdmUgYmFjay4gICovCiAgIGlmICghTklM UCAoYmVmb3JlX3N0cmluZykgfHwgIU5JTFAgKGRpc3Bfc3RyaW5nKSkKQEAgLTI2MzM0LDcg KzI2MzQzLDcgQEAKICAgICB9CiAgIGlmIChyMiA9PSBOVUxMKQogICAgIHsKLSAgICAgIHIy ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsIFhGQVNUSU5UICh3LT53aW5kb3df ZW5kX3Zwb3MpKTsKKyAgICAgIHIyID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgs IHctPndpbmRvd19lbmRfdnBvcyk7CiAgICAgICBobGluZm8tPm1vdXNlX2ZhY2VfcGFzdF9l bmQgPSAxOwogICAgIH0KICAgZWxzZSBpZiAoIU5JTFAgKGFmdGVyX3N0cmluZykpCkBAIC0y NjM0Miw3ICsyNjM1MSw3IEBACiAgICAgICAvKiBJZiB0aGUgYWZ0ZXItc3RyaW5nIGhhcyBu ZXdsaW5lcywgYWR2YW5jZSB0byBpdHMgbGFzdCByb3cuICAqLwogICAgICAgc3RydWN0IGds eXBoX3JvdyAqbmV4dDsKICAgICAgIHN0cnVjdCBnbHlwaF9yb3cgKmxhc3QKLQk9IE1BVFJJ WF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCBYRkFTVElOVCAody0+d2luZG93X2VuZF92cG9z KSk7CisJPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50X21hdHJpeCwgdy0+d2luZG93X2VuZF92 cG9zKTsKIAogICAgICAgZm9yIChuZXh0ID0gcjIgKyAxOwogCSAgIG5leHQgPD0gbGFzdApA QCAtMjc0MTAsNyArMjc0MTksNyBAQAogICAgICBBbmQgdmVyaWZ5IHRoZSBidWZmZXIncyB0 ZXh0IGhhcyBub3QgY2hhbmdlZC4gICovCiAgIGIgPSBYQlVGRkVSICh3LT5idWZmZXIpOwog ICBpZiAocGFydCA9PSBPTl9URVhUCi0gICAgICAmJiBFUSAody0+d2luZG93X2VuZF92YWxp ZCwgdy0+YnVmZmVyKQorICAgICAgJiYgdy0+d2luZG93X2VuZF92YWxpZAogICAgICAgJiYg dy0+bGFzdF9tb2RpZmllZCA9PSBCVUZfTU9ESUZGIChiKQogICAgICAgJiYgdy0+bGFzdF9v dmVybGF5X21vZGlmaWVkID09IEJVRl9PVkVSTEFZX01PRElGRiAoYikpCiAgICAgewpAQCAt Mjc2NDksNyArMjc2NTgsNyBAQAogCQkgIExpc3BfT2JqZWN0IGxpbTIgPQogCQkgICAgTklM UCAoQlZBUiAoWEJVRkZFUiAoYnVmZmVyKSwgYmlkaV9kaXNwbGF5X3Jlb3JkZXJpbmcpKQog CQkgICAgPyBtYWtlX251bWJlciAoQlVGX1ogKFhCVUZGRVIgKGJ1ZmZlcikpCi0JCQkJICAg LSBYRkFTVElOVCAody0+d2luZG93X2VuZF9wb3MpKQorCQkJCSAgIC0gdy0+d2luZG93X2Vu ZF9wb3MpCiAJCSAgICA6IFFuaWw7CiAKIAkJICBpZiAoTklMUCAob3ZlcmxheSkpCgo= --------------080807000508070706020408--