From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11340 invoked by alias); 12 Nov 2013 02:37:25 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 11323 invoked by uid 89); 12 Nov 2013 02:37:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_50,KAM_STOCKGEN,RDNS_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: mail-ee0-f53.google.com Received: from Unknown (HELO mail-ee0-f53.google.com) (74.125.83.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Tue, 12 Nov 2013 02:37:18 +0000 Received: by mail-ee0-f53.google.com with SMTP id e51so2873300eek.12 for ; Mon, 11 Nov 2013 18:37:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=WY1GsmzGELCMpb+qA3bfsZbdYmNpCrWn3hEE9WlV3aQ=; b=guHZ1IwHrM2TnPgoaRGkOAffVa0jprr1z+FHjfTXddlGyMhUD9+WPS5Twy+YykrB1V cF441FEPMYK18mJjb/ptYkqlyKaCLCKepf5+vBq91G/ycmDfDONAZZhVrGDZguVC6ZgC TceXvLgo7uh1CHSHDSpX+4ipq/IEKsAZouaE0CDKnK5rxHCZJz1UYrYFRThDNg2LU4vx oWgu98huqwp9tYtHk8onH8A8vK0JfqbfAaV4HYiDgCnvoh8vF6zL0Ec5B3gzUYx39oB+ 0AWIdluKd9DnO4dUnyxOZf3OIrrEI+QDp/F21ccVyh0gy7WBZYxAMem93Ez7Rd9iQR8r 470A== X-Gm-Message-State: ALoCoQnxvr5LSHpEimmr4CiIwTkNqEjqpFZ2V+iY99rMxe7fMC49BBw9NK350Ggzl39F0Khc4sxgL9oeDG+Lpwf4QEWLTUXTuSetaDrYE44qQwdatWLA21D5L6ZmpZklTXWJMicn5AVq9wug6NHyQcCugH8h8PU9FtUQftZoUHBZwltAOm6yyCIuP+v/TVjDNRPCpLgLek/efCmSYkqtwuJRoO7XwclAxQ== MIME-Version: 1.0 X-Received: by 10.15.32.73 with SMTP id z49mr3846713eeu.27.1384223828210; Mon, 11 Nov 2013 18:37:08 -0800 (PST) Received: by 10.15.52.133 with HTTP; Mon, 11 Nov 2013 18:37:07 -0800 (PST) In-Reply-To: <87ehaq5nkr.fsf@fleche.redhat.com> References: <87r4hefx59.fsf@fleche.redhat.com> <871u995pbt.fsf@fleche.redhat.com> <87ehaq5nkr.fsf@fleche.redhat.com> Date: Tue, 12 Nov 2013 02:56:00 -0000 Message-ID: Subject: Re: [RFC] Debug Methods in GDB Python From: Siva Chandra To: Tom Tromey Cc: gdb-patches Content-Type: multipart/mixed; boundary=089e0160c5cc922d2d04eaf1b990 X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00304.txt.bz2 --089e0160c5cc922d2d04eaf1b990 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2989 Hi, I apologize for this long hiatus. I now have a new patch in response to Tom's last round of review. I am not very clear with some of his comments and have few questions in response. Also, Tom asked for docs with his last review. I have added a section to the doc which illustrates the debug method API/usage, but is in no way complete yet. 2013-11-11 Siva Chandra Reddy Add Debug methods support in GDB. * Makefile.in: Add entries for new files * data-directory/Makefile.in: Add entry for new Python file * eval.c: Invoke methods defined in extension methods. * ext-function.c: Support for working with functions/methods defined in an extension language. * ext-function.h: Support for working with functions/methods defined in an extension language. * python/lib/gdb/debugmethods.py: Python side of the support for debug methods in Python. * python/py-debugmethods.c: C side of the support for debug methods in Python. * python/py-objfile.c: Add 'debug_methods' attribute to gdb.Objfile. * python/python-internal.h: Add new function gdb.enable_debug_methods to the Python module 'gdb'. * python/python.c: Add new function gdb.enable_debug_methods to the Python module 'gdb'. * python/python.h: Add declarations of new functions. * valarith.c: Invoke operators defined in extension languages. * valops.c: Lookup methods defined in extension languages. * value.h: New signature for 'find_overload_match'. On Mon, Jul 22, 2013 at 1:47 PM, Tom Tromey wrote: > The "extension language" code here seems like a lot of work for no > real benefit. > > It's fine for the functions themselves, since we'd like to keep the API > to the Python layer reasonably thin. But for get_matching_ext_methods, > e.g., it is simple to follow the existing pattern: declare a function in > python.h and provide both with- and without-Python implementations. I am not sure I understand what is being said here. Could you kindly elaborate (pointing to an existing example)? > Silently ignoring errors doesn't seem right. > There are a few instances of this. > > I'm not really sure about the error-handling strategy in this function. They way I have looked at debug methods hook is as follows: "If there exists a Python implementation or replacement which matches better or is as good a match as the source implementation, then use the Python implementation. If there is any error looking up Python implementations, report the error but do not stop from executing an operation; proceed to use the source implementation." With that view, in the latest patch, I have modified to print the errors instead of silently ignoring them. Let me know if this does not seem to be a good strategy. > I'm curious if you ran this through the checker. I have not run it through the checker. --089e0160c5cc922d2d04eaf1b990 Content-Type: text/plain; charset=US-ASCII; name="dm_patch_v5.txt" Content-Disposition: attachment; filename="dm_patch_v5.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hnwj26i60 Content-length: 95657 ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5p bgppbmRleCA5NzVlZGJmLi4zNDU4NDI0IDEwMDY0NAotLS0gYS9nZGIvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC0yODcsNiArMjg3 LDcgQEAgU1VCRElSX1BZVEhPTl9PQlMgPSBcCiAJcHktYnJlYWtwb2ludC5v IFwKIAlweS1jbWQubyBcCiAJcHktY29udGludWVldmVudC5vIFwKKwlweS1k ZWJ1Z21ldGhvZHMubyBcCiAJcHktZXZlbnQubyBcCiAJcHktZXZ0cmVnaXN0 cnkubyBcCiAJcHktZXZ0cy5vIFwKQEAgLTMyMyw2ICszMjQsNyBAQCBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBc CiAJcHl0aG9uL3B5LWNtZC5jIFwKIAlweXRob24vcHktY29udGludWVldmVu dC5jIFwKKwlweXRob24vcHktZGVidWdtZXRob2RzLmMgXAogCXB5dGhvbi9w eS1ldmVudC5jIFwKIAlweXRob24vcHktZXZ0cmVnaXN0cnkuYyBcCiAJcHl0 aG9uL3B5LWV2dHMuYyBcCkBAIC03MzMsNyArNzM1LDcgQEAgU0ZJTEVTID0g YWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxw cmludC5jIGFkYS10YXNrcy5jIFwKIAlkd2FyZjJleHByLmMgZHdhcmYybG9j LmMgZHdhcmYycmVhZC5jIGR3YXJmMi1mcmFtZS5jIFwKIAlkd2FyZjItZnJh bWUtdGFpbGNhbGwuYyBcCiAJZWxmcmVhZC5jIGVudmlyb24uYyBldmFsLmMg ZXZlbnQtbG9vcC5jIGV2ZW50LXRvcC5jIFwKLQlleGNlcHRpb25zLmMgZXhw cHJpbnQuYyBcCisJZXhjZXB0aW9ucy5jIGV4cHByaW50LmMgZXh0LWZ1bmN0 aW9uLmMgXAogCWYtZXhwLnkgZi1sYW5nLmMgZi10eXBlcHJpbnQuYyBmLXZh bHByaW50LmMgZmlsZXN5c3RlbS5jIFwKIAlmaW5kY21kLmMgZmluZHZhci5j IGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZyYW1lLXVud2luZC5jIFwKIAlnZGJh cmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQuYyBnZGJfb2JzdGFjay5jIFwK QEAgLTgzNSw3ICs4MzcsNyBAQCByczYwMDAtdGRlcC5oIHJzNjAwMC1haXgt dGRlcC5oIFwKIGNvbW1vbi9nZGJfbG9jYWxlLmggY29tbW9uL2dkYl9kaXJl bnQuaCBhcmNoLXV0aWxzLmggdHJhZC1mcmFtZS5oIGdudS1uYXQuaCBcCiBs YW5ndWFnZS5oIG5ic2QtdGRlcC5oIHNvbGliLXN2cjQuaCBcCiBtYWNyb2V4 cC5oIHVpLWZpbGUuaCByZWdjYWNoZS5oIHRyYWNlcG9pbnQuaCBpMzg2LXRk ZXAuaCBcCi1pbmYtY2hpbGQuaCBwLWxhbmcuaCBldmVudC10b3AuaCBnZGJ0 eXBlcy5oIHVzZXItcmVncy5oIFwKK2luZi1jaGlsZC5oIHAtbGFuZy5oIGV2 ZW50LXRvcC5oIGV4dC1mdW5jdGlvbi5oIGdkYnR5cGVzLmggdXNlci1yZWdz LmggXAogcmVnZm9ybWF0cy9yZWdkZWYuaCBjb25maWcvYWxwaGEvbm0tb3Nm My5oICBjb25maWcvaTM4Ni9ubS1pMzg2Z251LmggXAogY29uZmlnL2kzODYv bm0tZmJzZC5oIFwKIGNvbmZpZy9ubS1udG8uaCBjb25maWcvc3BhcmMvbm0t c29sMi5oIGNvbmZpZy9ubS1saW51eC5oIFwKQEAgLTk1Nyw3ICs5NTksOCBA QCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZ T0JKKSBcCiAJaW5mZXJpb3IubyBvc2RhdGEubyBnZGJfdXNsZWVwLm8gcmVj b3JkLm8gcmVjb3JkLWZ1bGwubyBnY29yZS5vIFwKIAlnZGJfdmVjcy5vIGpp dC5vIHByb2dzcGFjZS5vIHNraXAubyBwcm9iZS5vIFwKIAljb21tb24tdXRp bHMubyBidWZmZXIubyBwdGlkLm8gZ2RiLWRsZmNuLm8gY29tbW9uLWFnZW50 Lm8gXAotCWZvcm1hdC5vIHJlZ2lzdHJ5Lm8gYnRyYWNlLm8gcmVjb3JkLWJ0 cmFjZS5vIHdhaXRzdGF0dXMubworCWZvcm1hdC5vIHJlZ2lzdHJ5Lm8gYnRy YWNlLm8gcmVjb3JkLWJ0cmFjZS5vIHdhaXRzdGF0dXMubyBcCisJZXh0LWZ1 bmN0aW9uLm8KIAogVFNPQlMgPSBpbmZsb3cubwogCkBAIC0yMTgxLDYgKzIx ODQsMTAgQEAgcHktY29udGludWVldmVudC5vOiAkKHNyY2RpcikvcHl0aG9u L3B5LWNvbnRpbnVlZXZlbnQuYwogCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZM QUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYwogCSQo UE9TVENPTVBJTEUpCiAKK3B5LWRlYnVnbWV0aG9kcy5vOiAkKHNyY2Rpcikv cHl0aG9uL3B5LWRlYnVnbWV0aG9kcy5jCisJJChDT01QSUxFKSAkKFBZVEhP Tl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZGVidWdtZXRob2RzLmMK KwkkKFBPU1RDT01QSUxFKQorCiBweS1ldmVudC5vOiAkKHNyY2RpcikvcHl0 aG9uL3B5LWV2ZW50LmMKIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykg JChzcmNkaXIpL3B5dGhvbi9weS1ldmVudC5jCiAJJChQT1NUQ09NUElMRSkK ZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBi L2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgppbmRleCAzZDA1MjEz Li5lOWU2YjJlIDEwMDY0NAotLS0gYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUuaW4KKysrIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu CkBAIC02MSw2ICs2MSw3IEBAIFBZVEhPTl9GSUxFUyA9IFwKIAlnZGIvdHlw ZXMucHkgXAogCWdkYi9wcmludGluZy5weSBcCiAJZ2RiL3Byb21wdC5weSBc CisJZ2RiL2RlYnVnbWV0aG9kcy5weSBcCiAJZ2RiL2NvbW1hbmQvX19pbml0 X18ucHkgXAogCWdkYi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkgXAogCWdk Yi9jb21tYW5kL3R5cGVfcHJpbnRlcnMucHkgXApkaWZmIC0tZ2l0IGEvZ2Ri L2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KaW5kZXgg YzY5NzRkNy4uNmVjNWI1ZCAxMDA2NDQKLS0tIGEvZ2RiL2RvYy9nZGIudGV4 aW5mbworKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCkBAIC0yMzQ3Miw2ICsy MzQ3Miw3IEBAIG9wdGlvbmFsIGFyZ3VtZW50cyB3aGlsZSBza2lwcGluZyBv dGhlcnMuICBFeGFtcGxlOgogKiBTZWxlY3RpbmcgUHJldHR5LVByaW50ZXJz OjogICBIb3cgR0RCIGNob29zZXMgYSBwcmV0dHktcHJpbnRlci4KICogV3Jp dGluZyBhIFByZXR0eS1QcmludGVyOjogICAgV3JpdGluZyBhIFByZXR0eS1Q cmludGVyLgogKiBUeXBlIFByaW50aW5nIEFQSTo6CQlQcmV0dHktcHJpbnRp bmcgdHlwZXMuCisqIERlYnVnIE1ldGhvZHMgSW4gUHl0aG9uOjogICAgIERl YnVnIE1ldGhvZHMgSW4gUHl0aG9uLgogKiBGcmFtZSBGaWx0ZXIgQVBJOjog ICAgICAgICAgICBGaWx0ZXJpbmcgRnJhbWVzLgogKiBGcmFtZSBEZWNvcmF0 b3IgQVBJOjogICAgICAgICBEZWNvcmF0aW5nIEZyYW1lcy4KICogV3JpdGlu ZyBhIEZyYW1lIEZpbHRlcjo6ICAgICAgV3JpdGluZyBhIEZyYW1lIEZpbHRl ci4KQEAgLTI0ODU1LDYgKzI0ODU2LDc1IEBAIGRvbmUgdGhlbiB0eXBlIHBy aW50ZXJzIHdvdWxkIGhhdmUgdG8gbWFrZSB1c2Ugb2YgdGhlIGV2ZW50IHN5 c3RlbSBpbgogb3JkZXIgdG8gYXZvaWQgaG9sZGluZyBpbmZvcm1hdGlvbiB0 aGF0IGNvdWxkIGJlY29tZSBzdGFsZSBhcyB0aGUKIGluZmVyaW9yIGNoYW5n ZWQuCiAKK0Bub2RlIERlYnVnIE1ldGhvZHMgSW4gUHl0aG9uCitAc3Vic3Vi c2VjdGlvbiBEZWJ1ZyBNZXRob2RzIEluIFB5dGhvbgorQGNpbmRleCBkZWJ1 ZyBtZXRob2RzIGluIFB5dGhvbgorCitEZWJ1ZyBtZXRob2RzIGFyZSwgYXMg dGhlIG5hbWUgc3VnZ2VzdHMsIG1ldGhvZCBkZWZpbml0aW9ucyBvbiBjbGFz c2VzCitidXQgZGVmaW5lZCBpbiBAdmFsdWV7R0RCTn0gUHl0aG9uIGluc3Rl YWQgb2YgdGhlIHNvdXJjZSBsYW5ndWFnZS4gIElmIGEKK3BhcnRpY3VsYXIg bWV0aG9kICh3aGljaCBjb3VsZCBiZSBhbiBvdmVybG9hZGVkIG9wZXJhdG9y KSBuZWVkcyB0byBiZQoraW52b2tlZCB0byBldmFsdWF0ZSBhIGNlcnRhaW4g ZXhwcmVzc2lvbiBpbiBAdmFsdWV7R0RCTn0sIHRoZW4KK0B2YWx1ZXtHREJO fSBpbnZva2VzIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1l dGhvZCBpZiB0aGUKK1B5dGhvbiBkZWZpbml0aW9uIGlzIGJldHRlciBvciBh cyBnb29kIGEgbWF0Y2ggYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mCit0aGUg bWV0aG9kIGluIHRoZSBzb3VyY2UgbGFuZ3VhZ2UuICBBIGJlbmVmaXQgb2Yg aGF2aW5nIGEgZGVidWcgbWV0aG9kCityZXBsYWNlbWVudCBmb3IgYSBzb3Vy Y2UgbGFuZ3VhZ2UgbWV0aG9kIGlzIHRoYXQgZXhwcmVzc2lvbnMgaW52b2x2 aW5nCit0aGUgbWV0aG9kIGNhbiBiZSBldmFsdWF0ZWQgaW4gQHZhbHVle0dE Qk59IHdpdGhvdXQgcnVubmluZyB0aGUgbWV0aG9kCitpbiB0aGUgaW5mZXJp b3IuICBBbm90aGVyIGJlbmVmaXQgaXMgd2l0aCByZWdhcmRzIHRvIG1ldGhv ZCB3aGljaAordHlwaWNhbGx5IGdldCBvcHRpbWl6ZWQgb3V0IGJ5IHRoZSBj b21waWxlci4gIFNpbmNlIGRlYnVnIG1ldGhvZHMgbGl2ZQoraW4gQHZhbHVl e0dEQk59IFB5dGhvbiBhbmQgbm90IGluIHRoZSBzb3VyY2UgbGFuZ3VhZ2Us IHRoZXkgYXJlIG5ldmVyCitvcHRpbWl6ZWQgb3V0LiAgTGFzdGx5LCBvbmUg Y291bGQgZGVmaW5lIGEgZGVidWcgbWV0aG9kIGluIEB2YWx1ZXtHREJOfQor UHl0aG9uIHdoaWNoIGRvZXMgbm90IGhhdmUgYW4gZXF1aXZhbGVudCBpbiB0 aGUgc291cmNlIGxhbmd1YWdlIQorCitUaGUgZGVidWcgbWV0aG9kIEFQSSBw cm92aWRlZCBpbiBAdmFsdWV7R0RCTn0gUHl0aG9uIGNhbiBiZSBpbGx1c3Ry YXRlZAord2l0aCB0aGUgZm9sbG93aW5nIGV4YW1wbGUuICBDb25zaWRlciBh IEMrKyBjb2RlIHNuaXBwZXQgYXMgZm9sbG93czoKKworQHNtYWxsZXhhbXBs ZQorY2xhc3MgQQorQHsKKyBwdWJsaWM6CisgIGludCBnZXRhKHZvaWQpCisg IEB7CisgICAgcmV0dXJuIGE7CisgIEB9CisKKyBwcml2YXRlOgorICBpbnQg YTsKK0B9OworQGVuZCBzbWFsbGV4YW1wbGUKKworSW4gdGhlIGFib3ZlIGV4 YW1wbGUsIHRoZSBtZXRob2QgQGNvZGV7Z2V0YX0gaW4gQGNvZGV7Y2xhc3Mg QX0sIG1pZ2h0CitnZXQgb3B0aW1pemVkIG91dCBpbiBhIGNsaWVudCBleGVj dXRhYmxlIGlmIEBjb2Rle2dldGF9IGlzIG5ldmVyIGNhbGxlZC4KK0hvd2V2 ZXIsIG9uZSBtaWdodCB3YW50IHRvIGNhbGwgQGNvZGV7Z2V0YX0gZnJvbSBA dmFsdWV7R0RCTn0gZm9yCitkZWJ1Z2dpbmcuICBGb3Igc3VjaCBjYXNlcywg d2UgY291bGQgaGF2ZSBhbiBlcXVpdmFsZW50IFB5dGhvbgoraW1wbGVtZW50 YXRpb24gYXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIEMrKyBtZXRob2QuICBU aGUgZGVidWcgbWV0aG9kCitjYW4gYmUgZGVmaW5lZCBpbiBQeXRob24gYXMg Zm9sbG93czoKKworQHNtYWxsZXhhbXBsZQorZGVmIEFfZ2V0YShvYmopOgor ICAiIiJGdW5jdGlvbiB3aGljaCBpbXBsZW1lbmVudHMgYSBQeXRob24gcmVw bGFjZW1lbnQgZm9yIEE6OmdldGEuCisgIEFyZ3M6CisgICAgb2JqOiBUaGlz IGlzIGVxdWl2YWxlbnQgb2YgdGhlIEMrKyAndGhpcycKKyAgIiIiCisgIHJl dHVybiBvYmpbJ2EnXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisKK2RtX0FfZ2V0YSA9IGdkYi5kZWJ1Z21ldGhvZHMu U2ltcGxlRGVidWdNZXRob2QoCisgICAgJ0FfZ2V0YScsICAgICAgICAgICAg ICAgICAgICAgICMgQSB1bmlxdWUgbmFtZSB0byB0aGUgZGVidWcgbWV0aG9k CisgICAgJ0RFRkFVTFRfREVCVUdfTUVUSE9EX0dST1VQJywgICMgQSBncm91 cCBuYW1lIGZvciB0aGUgZGVidWcgbWV0aG9kCisgICAgQV9nZXRhLCAgICAg ICAgICAgICAgICAgICAgICAgICMgVGhlIGZ1bmN0aW9uIGltcGxlbWVudGlu ZyB0aGUgZGVidWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIyBtZXRob2QKKyAgICAnXmRvcDo6QSQnLCAgICAgICAgICAgICAgICAg ICAgIyBUaGUgY2xhc3MgdG8gd2hpY2ggdGhpcyBkZWJ1ZworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1ldGhvZCBzaG91bGQgYmVs b25nLgorICAgICdeZ2V0YSQnICAgICAgICAgICAgICAgICAgICAgICAjIFRo ZSByZWdleCB3aGljaCBtYXRjaGVzIHRoZSBtZXRob2QKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGljaCB0aGlzIGRlYnVnIG1l dGhvZCBpcyByZXBsYWNpbmcuCispCisKK2dkYi5kZWJ1Z21ldGhvZHMucmVn aXN0ZXJfZGVidWdfbWV0aG9kcygKKyAgICBnZGIsICAgICAgICAgIyBSZWdp c3RlciB0aGUgZGVidWcgbWV0aG9kIGdsb2JhbGx5CisgICAgW2RtX0FfZ2V0 YV0gICMgVGhlIGxpc3Qgb2YgZGVidWcgbWV0aG9kcyB0byByZWdpc3Rlcgor KQorQGVuZCBzbWFsbGV4YW1wbGUKKworCiBAbm9kZSBGcmFtZSBGaWx0ZXIg QVBJCiBAc3Vic3Vic2VjdGlvbiBGaWx0ZXJpbmcgRnJhbWVzLgogQGNpbmRl eCBmcmFtZSBmaWx0ZXJzIGFwaQpkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBi L2dkYi9ldmFsLmMKaW5kZXggZTgzYmZkZi4uYjQzZDRkOSAxMDA2NDQKLS0t IGEvZ2RiL2V2YWwuYworKysgYi9nZGIvZXZhbC5jCkBAIC0yMiw2ICsyMiw3 IEBACiAjaW5jbHVkZSAic3ltdGFiLmgiCiAjaW5jbHVkZSAiZ2RidHlwZXMu aCIKICNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImV4dC1mdW5jdGlv bi5oIgogI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJ0YXJn ZXQuaCIKICNpbmNsdWRlICJmcmFtZS5oIgpAQCAtMTU5Niw3ICsxNTk3LDcg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9O X01FVEhPRCwgLyogbm90IG1ldGhvZCAqLwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsIE5VTEwsIC8qIHBhc3MgTlVMTCBzeW1ib2wg c2luY2UKIAkJCQkJICAgICAgc3ltYm9sIGlzIHVua25vd24gKi8KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmc3ltcCwgTlVMTCwg MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnN5 bXAsIE5VTEwsIE5VTEwsIDApOwogCiAgICAgICAgICAgLyogTm93IGZpeCB0 aGUgZXhwcmVzc2lvbiBiZWluZyBldmFsdWF0ZWQuICAqLwogICAgICAgICAg IGV4cC0+ZWx0c1tzYXZlX3BvczEgKyAyXS5zeW1ib2wgPSBzeW1wOwpAQCAt MTYyNiwxMSArMTYyNywxMiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKIAkgICAgICAvKiBMYW5ndWFn ZSBpcyBDKyssIGRvIHNvbWUgb3ZlcmxvYWQgcmVzb2x1dGlvbiBiZWZvcmUK IAkJIGV2YWx1YXRpb24uICAqLwogCSAgICAgIHN0cnVjdCB2YWx1ZSAqdmFs cCA9IE5VTEw7CisgICAgICAgICAgICAgIHN0cnVjdCBleHRfZm5fZGVzY3Jp cHRvciAqZXh0X2ZucCA9IE5VTEw7CiAKIAkgICAgICAodm9pZCkgZmluZF9v dmVybG9hZF9tYXRjaCAoJmFyZ3ZlY1sxXSwgbmFyZ3MsIHRzdHIsCiAJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhPRCwgLyogbWV0 aG9kICovCiAJCQkJCSAgJmFyZzIsICAvKiB0aGUgb2JqZWN0ICovCi0JCQkJ CSAgTlVMTCwgJnZhbHAsIE5VTEwsCisJCQkJCSAgTlVMTCwgJnZhbHAsIE5V TEwsICZleHRfZm5wLAogCQkJCQkgICZzdGF0aWNfbWVtZnVuY3AsIDApOwog CiAJICAgICAgaWYgKG9wID09IE9QX1NDT1BFICYmICFzdGF0aWNfbWVtZnVu Y3ApCkBAIC0xNjQwLDkgKzE2NDIsMjYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAJCQkgICAiYHRo aXMnIHBvaW50ZXIiKSwKIAkJCSBmdW5jdGlvbl9uYW1lKTsKIAkJfQotCSAg ICAgIGFyZ3ZlY1sxXSA9IGFyZzI7CS8qIHRoZSBgYHRoaXMnJyBwb2ludGVy ICovCi0JICAgICAgYXJndmVjWzBdID0gdmFscDsJLyogVXNlIHRoZSBtZXRo b2QgZm91bmQgYWZ0ZXIgb3ZlcmxvYWQKLQkJCQkgICByZXNvbHV0aW9uLiAg Ki8KKworICAgICAgICAgICAgICBpZiAoZXh0X2ZucCkKKyAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICBpZiAoZXh0X2ZuX2lzX21ldGhv ZCAoZXh0X2ZucCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdmFsdWUgKnJldF92YWw7CisKKyAgICAg ICAgICAgICAgICAgICAgICByZXRfdmFsID0gZXh0X2ZuX2ludm9rZV9tZXRo b2QgKGV4dF9mbnAsIGFyZzIsIGFyZ3ZlYyArIDIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXJn cyAtIDEpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXRfdmFsID09 IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciAoXygiRXJy b3IgaW52b2tpbmcgZGVidWcgbWV0aG9kIGZvciBtZXRob2QgJXMuIiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHN0cik7CisKKyAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0X3ZhbDsKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICBhcmd2ZWNbMV0gPSBhcmcyOyAgICAgLyogdGhlIGBgdGhpcycnIHBvaW50 ZXIgKi8KKyAgICAgICAgICAgICAgYXJndmVjWzBdID0gdmFscDsgICAgIC8q IFVzZSB0aGUgbWV0aG9kIGZvdW5kIGFmdGVyIG92ZXJsb2FkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uLiAg Ki8KIAkgICAgfQogCSAgZWxzZQogCSAgICAvKiBOb24tQysrIGNhc2UgLS0g b3Igbm8gb3ZlcmxvYWQgcmVzb2x1dGlvbi4gICovCkBAIC0xNzAxLDcgKzE3 MjAsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKIAkJCQkJICBOVUxMLCAgICAgICAgLyogbm8gbmVl ZCBmb3IgbmFtZSAqLwogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOT05fTUVUSE9ELCAgLyogbm90IG1ldGhvZCAqLwogCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBmdW5jdGlvbiwgLyog dGhlIGZ1bmN0aW9uICovCi0JCQkJCSAgTlVMTCwgJnN5bXAsIE5VTEwsIG5v X2FkbCk7CisJCQkJCSAgTlVMTCwgJnN5bXAsIE5VTEwsIE5VTEwsIG5vX2Fk bCk7CiAKIAkgICAgICBpZiAob3AgPT0gT1BfVkFSX1ZBTFVFKQogCQl7CmRp ZmYgLS1naXQgYS9nZGIvZXh0LWZ1bmN0aW9uLmMgYi9nZGIvZXh0LWZ1bmN0 aW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEx YzVkNQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9leHQtZnVuY3Rpb24uYwpA QCAtMCwwICsxLDE3MiBAQAorLyogU3VwcG9ydCBmb3IgZnVuY3Rpb25zIGRl ZmluZWQgaW4gZXh0ZW5zaW9uIGxhbmd1YWdlcy4KKworICAgQ29weXJpZ2h0 IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJkZWZzLmgiCisjaW5jbHVkZSAi Y2xlYW51cHMuaCIKKyNpbmNsdWRlICJleHQtZnVuY3Rpb24uaCIKKworI2lu Y2x1ZGUgImdkYl9hc3NlcnQuaCIKKyNpbmNsdWRlICJ2ZWMuaCIKKworc3Ry dWN0IGV4dF9mbl9kZXNjcmlwdG9yCisgIHsKKyAgICBjb25zdCBzdHJ1Y3Qg ZXh0X2Z1bmNfb3BzICpsYW5nOworCisgICAgaW50IGlzX21ldGhvZDsKKwor ICAgIHZvaWQgKmV4dF9vYmplY3Q7CisgIH07CisKK3R5cGVkZWYgc3RydWN0 IGV4dF9mdW5jX29wcyAqZXh0X2xhbmdfcDsKK0RFRl9WRUNfUCAoZXh0X2xh bmdfcCk7CitzdGF0aWMgVkVDIChleHRfbGFuZ19wKSAqZXh0X2xhbmdfdmVj ID0gTlVMTDsKKworLyogUmVnaXN0ZXJzIGFuIGV4dGVuc2lvbiBsYW5ndWFn ZSB3aXRoIEdEQi4gICovCisKK3ZvaWQKK3JlZ2lzdGVyX2V4dF9sYW5nIChz dHJ1Y3QgZXh0X2Z1bmNfb3BzICpsYW5nKQoreworICBpZiAoZXh0X2xhbmdf dmVjID09IE5VTEwpCisgICAgZXh0X2xhbmdfdmVjID0gVkVDX2FsbG9jIChl eHRfbGFuZ19wLCAxKTsKKyAgICAgIAorICBWRUNfc2FmZV9wdXNoIChleHRf bGFuZ19wLCBleHRfbGFuZ192ZWMsIGxhbmcpOworfQorCisvKiBSZXR1cm5z IGEgbmV3IGV4dF9mbl9kZXNjcmlwdG9yIG9iamVjdC4gIExBTkcgaXMgdGhl IGV4dGVudGlvbiBsYW5ndWFnZSB0aGUKKyAgIG5ldyBleHRlbnNpb24gZnVu Y3Rpb24gaXMgaW1wbGVtZW50ZWQgaW4uICBJU19NRVRIT0QgaW5kaWNhdGVz IHdoZXRoZXIgdGhlCisgICBuZXcgZXh0ZW5zaW9uIGZ1bmN0aW9uIGlzIGEg bWV0aG9kLiAgRVhUX09CSiBpcyB0aGUgZXh0ZW5zaW9uIGxhbmd1YWdlCisg ICBzcGVjaWZpYyBkYXRhIHRvIGJlIGVuY2Fwc3VsYXRlZCBpbiB0aGUgZXh0 X2ZuX2Rlc2NyaXB0b3IuICAqLworCitzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0 b3IgKgorbmV3X2V4dF9mdW5jdGlvbiAoY29uc3Qgc3RydWN0IGV4dF9mdW5j X29wcyAqbGFuZywgaW50IGlzX21ldGhvZCwgdm9pZCAqZXh0X29iaikKK3sK KyAgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4gPSBYQ05FVyAo c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yKTsKKworICBleHRfZm4tPmlzX21l dGhvZCA9IGlzX21ldGhvZDsKKyAgZXh0X2ZuLT5sYW5nID0gbGFuZzsKKyAg ZXh0X2ZuLT5leHRfb2JqZWN0ID0gZXh0X29iajsKKworICByZXR1cm4gZXh0 X2ZuOworfQorCisvKiBDbG9uZXMgRVhUX0ZOIGFuZCByZXR1cm5zIGEgbmV3 IGJ1dCBpZGVudGljYWwgZXh0X2ZuX2Rlc2NyaXB0b3IuICAqLworCitzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKgorZXh0X2ZuX2Nsb25lIChzdHJ1Y3Qg ZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbikKK3sKKyAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpuZXdfZXh0X2ZuOworICBjb25zdCBzdHJ1Y3QgZXh0 X2Z1bmNfb3BzICpsYW5nID0gZXh0X2ZuLT5sYW5nOworCisgIG5ld19leHRf Zm4gPSBuZXdfZXh0X2Z1bmN0aW9uIChsYW5nLCBleHRfZm4tPmlzX21ldGhv ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmctPmNs b25lX2V4dF9vYmplY3QgKGV4dF9mbi0+ZXh0X29iamVjdCkpOworCisgIHJl dHVybiBuZXdfZXh0X2ZuOworfQorCisvKiBJZiBhIG1ldGhvZCBvZiBuYW1l IE1FVEhPRCBpcyB0byBiZSBpbnZva2VkIG9uIGFuIG9iamVjdCBvZiB0eXBl IFRZUEUsIHRoZW4KKyAgIGFsbCBlbnRlbnNpb24gbGFuZ3VhZ2VzIGFyZSBz ZWFyY2hlZCBmb3IgaW1wbGVtZW50YXRpb25zIG9mIG1ldGhvZHMgd2l0aCAK KyAgIG5hbWUgTUVUSE9EIGluIHRoZSBleHRlbnNpb24gbGFuZ3VhZ2VzLiAg QWxsIG1hdGNoZXMgZm91bmQgYXJlIHJldHVybmVkIGFzCisgICBhIHZlY3Rv ciAnc3RydWN0IGVudF9mbl9kZXNjcmlwdG9yJyBvYmplY3RzLiAgSWYgbm8g bWF0Y2hpbmcgbWV0aG9kcyBhcmUKKyAgIGZvdW5kLCBOVUxMIGlzIHJldHVy bmVkLiAgKi8KKworVkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAqCitnZXRf bWF0Y2hpbmdfZXh0X21ldGhvZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBjaGFyICptZXRob2QpCit7CisgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3Jf cCkgKmV4dF9tZXRob2RzID0gTlVMTDsKKyAgZXh0X2xhbmdfcCBsYW5nOwor ICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoZXh0X2xh bmdfcCwgZXh0X2xhbmdfdmVjLCBpLCBsYW5nKTsgaSsrKQorICAgIHsKKyAg ICAgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKmxhbmdfbWV0aG9kcywg Km5ld192ZWM7CisKKyAgICAgIGxhbmdfbWV0aG9kcyA9IGxhbmctPmdldF9t YXRjaGluZ19leHRfbWV0aG9kcyAodHlwZSwgbWV0aG9kKTsKKyAgICAgIG5l d192ZWMgPSBWRUNfbWVyZ2UgKGV4dF9mbl9kZXNjcmlwdG9yX3AsIGV4dF9t ZXRob2RzLCBsYW5nX21ldGhvZHMpOworCisgICAgICBWRUNfZnJlZSAoZXh0 X2ZuX2Rlc2NyaXB0b3JfcCwgZXh0X21ldGhvZHMpOworICAgICAgVkVDX2Zy ZWUgKGV4dF9mbl9kZXNjcmlwdG9yX3AsIGxhbmdfbWV0aG9kcyk7CisgICAg ICBleHRfbWV0aG9kcyA9IG5ld192ZWM7CisgICAgfQorCisgIHJldHVybiBl eHRfbWV0aG9kczsKK30KKworLyogR2l2ZW4gYW4gZnVuY3Rpb24gRVhUX0ZO IGltcGxlbWVudGVkIGluIGFuIGV4dGVuc2lvbiBsYW5ndWFnZSwgcmV0dXJu cyBhbgorICAgYXJyYXkgb2YgdHlwZXMgb2YgdGhlIGFyZ3VtZW50cyB0aGUg ZnVuY3Rpb24gYWNjZXB0cy4gIFRoZSBsZW5ndGggb2YgdGhlCisgICBhcnJh eSBpcyByZXR1cm5lZCBpbiBOQVJHUy4gIFRoZSB0eXBlIG9mIHRoZSAndGhp cycgb2JqZWN0IGlzIHJldHVybmVkIGFzCisgICB0aGUgZmlyc3QgYXJndW1l bnQgaWYgRVhUX0ZOIGlzIGEgbWV0aG9kLiAgSWYgRVhUX0ZOIGRvZXMgbm90 IHRha2UgYW55CisgICBhcmd1bWVudHMsIHRoZW4gTlVMTCBpcyByZXR1cm5l ZCB3aXRoIDAgaW4gTkFSR1MuICAqLworCitzdHJ1Y3QgdHlwZSAqKgorZXh0 X2ZuX2dldF9hcmd0eXBlcyAoc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpl eHRfZm4sIGludCAqbmFyZ3MpCit7CisgIGdkYl9hc3NlcnQgKGV4dF9mbiAm JiBleHRfZm4tPmxhbmcgJiYgZXh0X2ZuLT5sYW5nLT5nZXRfZXh0X2ZuX2Fy Z3R5cGVzKTsKKworICByZXR1cm4gZXh0X2ZuLT5sYW5nLT5nZXRfZXh0X2Zu X2FyZ3R5cGVzIChleHRfZm4tPmV4dF9vYmplY3QsIG5hcmdzKTsKK30KKwor LyogSWYgRVhUX0ZOIGlzIGEgbWV0aG9kIGltcGxlbWVudGVkIGluIGFuIGV4 dGVuc2lvbiBsYW5ndWFnZSwgaW52b2tlcyAgaXQgYW5kCisgICByZXR1cm5z IHRoZSByZXN1bHRpbmcgdmFsdWUuICBUaGUgbWV0aG9kIGlzIGludm9rZWQg b24gT0JKIHdpdGggYXJndW1lbnRzCisgICBBUkdTLiAgTkFSR1MgaXMgdGhl IGxlbmd0aCBvZiB0aGUgQVJHUyBhcnJheS4gICovCisKK3N0cnVjdCB2YWx1 ZSAqCitleHRfZm5faW52b2tlX21ldGhvZCAoc3RydWN0IGV4dF9mbl9kZXNj cmlwdG9yICpleHRfZm4sIHN0cnVjdCB2YWx1ZSAqb2JqLAorICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncykK K3sKKyAgZ2RiX2Fzc2VydCAoZXh0X2ZuICYmIGV4dF9mbi0+aXNfbWV0aG9k ICYmIGV4dF9mbi0+bGFuZworICAgICAgICAgICAgICAmJiBleHRfZm4tPmxh bmctPmludm9rZV9tZXRob2QpOworCisgIHJldHVybiBleHRfZm4tPmxhbmct Pmludm9rZV9tZXRob2QgKGV4dF9mbi0+ZXh0X29iamVjdCwgb2JqLCBhcmdz LCBuYXJncyk7Cit9CisKKy8qIFJldHVybnMgdHJ1ZSBpZiBFWFRfRk4gaXMg YSBtZXRob2QsIDAgb3RoZXJ3aXNlLiAgKi8KKworaW50CitleHRfZm5faXNf bWV0aG9kIChzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKmV4dF9mbikKK3sK KyAgaWYgKGV4dF9mbiAhPSBOVUxMKQorICAgIHJldHVybiBleHRfZm4tPmlz X21ldGhvZDsKKworICByZXR1cm4gMDsKK30KKworLyogRnJlZXMgYSB2ZWN0 b3Igb2YgZXh0X2ZuX2Rlc2NyaXB0b3JzIFZFQy4gICovCisKK3N0YXRpYyB2 b2lkCitleHRfZm5fdmVjX2ZyZWUgKHZvaWQgKnZlYykKK3sKKyAgaW50IGk7 CisgIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZuOworICBWRUMg KGV4dF9mbl9kZXNjcmlwdG9yX3ApICp2ID0gKFZFQyAoZXh0X2ZuX2Rlc2Ny aXB0b3JfcCkgKikgdmVjOworCisgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRl IChleHRfZm5fZGVzY3JpcHRvcl9wLCB2LCBpLCBleHRfZm4pOyBpKyspCisg ICAgeworICAgICAgZXh0X2ZuLT5sYW5nLT5mcmVlX2V4dF9vYmogKGV4dF9m bi0+ZXh0X29iamVjdCk7CisgICAgICB4ZnJlZSAoZXh0X2ZuKTsKKyAgICB9 Cit9CisKKy8qIFJldHVybiBhIGNsZWFudXAgb2JqZWN0IHRvIGZyZWUgYSB2 ZWN0b3IgVkVDIG9mIGV4dGVuc2lvbiBmdW5jdGlvbgorICAgZGVzY3JpcHRv cnMuICAqLworCitzdHJ1Y3QgY2xlYW51cCAqCittYWtlX2V4dF9mbl92ZWNf Y2xlYW51cCAoVkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAqdmVjKQorewor ICByZXR1cm4gbWFrZV9jbGVhbnVwIChleHRfZm5fdmVjX2ZyZWUsICh2b2lk ICopIHZlYyk7Cit9CmRpZmYgLS1naXQgYS9nZGIvZXh0LWZ1bmN0aW9uLmgg Yi9nZGIvZXh0LWZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZGIwNTAwOQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9l eHQtZnVuY3Rpb24uaApAQCAtMCwwICsxLDc1IEBACisvKiBTdXBwb3J0IGZv ciBmdW5jdGlvbnMgZGVmaW5lZCBpbiBleHRlbnNpb24gbGFuZ3VhZ2VzLgor CisgICBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lmICFkZWZpbmVkIChF WFRfRlVOQ1RJT05fSCkKKyNkZWZpbmUgRVhUX0ZVTkNUSU9OX0gKKworI2lu Y2x1ZGUgInZlYy5oIgorCitzdHJ1Y3QgY2xlYW51cDsKK3N0cnVjdCB2YWx1 ZTsKK3N0cnVjdCB0eXBlOworc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yOwor Cit0eXBlZGVmIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqZXh0X2ZuX2Rl c2NyaXB0b3JfcDsKK0RFRl9WRUNfUCAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCk7 Cit0eXBlZGVmIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgZXh0X2ZuX3Zl YzsKKwordHlwZWRlZiBzdHJ1Y3QgdmFsdWUqIChpbnZva2VfbWV0aG9kX2Z0 eXBlKSAodm9pZCAqZXh0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHZhbHVlICoqLCBpbnQgbmFyZ3MpOworCit0eXBlZGVmIHZvaWQgKiAoY2xv bmVfZXh0X29ial9mdHlwZSkgKHZvaWQgKmV4dF9vYmopOworCit0eXBlZGVm IHZvaWQgKGZyZWVfZXh0X29ial9mdHlwZSkgKHZvaWQgKmV4dF9vYmopOwor Cit0eXBlZGVmIGV4dF9mbl92ZWMgKihnZXRfbWF0Y2hpbmdfZXh0X21ldGhv ZHNfZnR5cGUpIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm1ldGhvZCk7CisKK3R5cGVkZWYgc3RydWN0IHR5cGUqKiAoZ2V0 X2V4dF9mbl9hcmd0eXBlc19mdHlwZSkgKHZvaWQgKmV4dF9vYmosIGludCAq bmFyZ3MpOworCitzdHJ1Y3QgZXh0X2Z1bmNfb3BzCisgIHsKKyAgICBjbG9u ZV9leHRfb2JqX2Z0eXBlICpjbG9uZV9leHRfb2JqZWN0OworICAgIGZyZWVf ZXh0X29ial9mdHlwZSAqZnJlZV9leHRfb2JqOworICAgIGdldF9tYXRjaGlu Z19leHRfbWV0aG9kc19mdHlwZSAqZ2V0X21hdGNoaW5nX2V4dF9tZXRob2Rz OworICAgIGdldF9leHRfZm5fYXJndHlwZXNfZnR5cGUgKmdldF9leHRfZm5f YXJndHlwZXM7CisgICAgaW52b2tlX21ldGhvZF9mdHlwZSAqaW52b2tlX21l dGhvZDsKKyAgfTsKKworZXh0ZXJuIHZvaWQgcmVnaXN0ZXJfZXh0X2xhbmcg KHN0cnVjdCBleHRfZnVuY19vcHMgKmxhbmcpOworCitleHRlcm4gc3RydWN0 IHZhbHVlICpleHRfZm5faW52b2tlX21ldGhvZCAoc3RydWN0IGV4dF9mbl9k ZXNjcmlwdG9yICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHZhbHVlICosCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhbHVlICoqLCBp bnQgbmFyZ3MpOworCitleHRlcm4gc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9y ICpleHRfZm5fY2xvbmUgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqKTsK KworZXh0ZXJuIHN0cnVjdCBleHRfZm5fZGVzY3JpcHRvciAqbmV3X2V4dF9m dW5jdGlvbiAoCisgICAgY29uc3Qgc3RydWN0IGV4dF9mdW5jX29wcyAqbGFu ZywgaW50IGlzX21ldGhvZCwgdm9pZCAqZXh0X29iaik7CisKK2V4dGVybiBl eHRfZm5fdmVjICpnZXRfbWF0Y2hpbmdfZXh0X21ldGhvZHMgKHN0cnVjdCB0 eXBlICosIGNvbnN0IGNoYXIgKik7CisKK2V4dGVybiBzdHJ1Y3QgdHlwZSAq KmV4dF9mbl9nZXRfYXJndHlwZXMgKHN0cnVjdCBleHRfZm5fZGVzY3JpcHRv ciAqLCBpbnQgKik7CisKK2V4dGVybiBpbnQgZXh0X2ZuX2lzX21ldGhvZCAo c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICopOworCitleHRlcm4gc3RydWN0 IGNsZWFudXAqIG1ha2VfZXh0X2ZuX3ZlY19jbGVhbnVwIChWRUMgKGV4dF9m bl9kZXNjcmlwdG9yX3ApICp2ZWMpOworCisjZW5kaWYgLyogRVhUX0ZVTkNU SU9OX0ggKi8KZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9fX2lu aXRfXy5weSBiL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQppbmRl eCA2MWY1YjVlLi5kNGQ3YmE3IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL2xp Yi9nZGIvX19pbml0X18ucHkKKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL19f aW5pdF9fLnB5CkBAIC02Nyw2ICs2Nyw4IEBAIHByZXR0eV9wcmludGVycyA9 IFtdCiAKICMgSW5pdGlhbCB0eXBlIHByaW50ZXJzLgogdHlwZV9wcmludGVy cyA9IFtdCisjIEluaXRpYWwgZGVidWdfbWV0aG9kcy4KK2RlYnVnX21ldGhv ZHMgPSBbXQogIyBJbml0aWFsIGZyYW1lIGZpbHRlcnMuCiBmcmFtZV9maWx0 ZXJzID0ge30KIApkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Rl YnVnbWV0aG9kcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9kZWJ1Z21ldGhv ZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2 YWQ1NAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRob24vbGliL2dkYi9k ZWJ1Z21ldGhvZHMucHkKQEAgLTAsMCArMSwxMTggQEAKKyMgUHl0aG9uIHNp ZGUgb2YgdGhlIHN1cHBvcnQgZm9yIGRlYnVnIG1ldGhvZHMuCisjIENvcHly aWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKworIiIiVXRpbGl0aWVzIGZvciBkZWZpbmlu ZyBkZWJ1ZyBtZXRob2RzIiIiCisKK2ltcG9ydCBnZGIKK2ltcG9ydCByZQor CitERUZBVUxUX0RFQlVHX01FVEhPRF9HUk9VUCA9ICdERUZBVUxUX0RFQlVH X01FVEhPRF9HUk9VUCcKKworCitjbGFzcyBEZWJ1Z01ldGhvZChvYmplY3Qp OgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGFsbCBkZWJ1ZyBtZXRob2RzIGRl ZmluZWQgaW4gUHl0aG9uLgorCisgICAgQSBkZWJ1ZyBtZXRob2QgZGVmaW5l ZCBpbiBQeXRob24gc2hvdWxkIGJlIGRlcml2ZWQgZnJvbSB0aGlzIGNsYXNz LiAgVGhlCisgICAgZGVyaXZlZCBjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0 aGUgbWV0aG9kcyAnbWF0Y2gnLCAnZ2V0X2FyZ3R5cGVzJyBhbmQKKyAgICAn aW52b2tlJy4KKworICAgIEludGVybmFsbHksIEdEQiBmaXJzdCBpbnZva2Vz IHRoZSAnbWF0Y2gnIG1ldGhvZCB0byBtYXRjaCB0aGUgY2xhc3MgdHlwZQor ICAgIGFuZCB0aGUgbWV0aG9kIG5hbWUuICBJdCBuZXh0IGdldHMgdGhlIGFy Z3VtZW50IHR5cGVzIG9mIHRoZXNlIG1ldGhvZHMgdmlhCisgICAgdGhlICdn ZXRfYXJndHlwZXMnIG1ldGhvZCB0byBwZXJmb3JtIG92ZXJsb2FkIHJlc29s dXRpb24uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFt ZSwgZ3JvdXA9REVGQVVMVF9ERUJVR19NRVRIT0RfR1JPVVApOgorICAgICAg ICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG5hbWU6IEFuIGlk ZW50aWZ5aW5nIG5hbWUgZm9yIHRoZSBkZWJ1ZyBtZXRob2QuCisgICAgICAg ICAgICBncm91cDogVGhlIGdyb3VwIG5hbWUgb2YgdGhlIGdyb3VwIHRvIHdo aWNoIHRoZSBkZWJ1ZyBtZXRob2QKKyAgICAgICAgICAgICAgICAgICBiZWxv bmdzIHRvLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5uYW1lID0gbmFt ZQorICAgICAgICBzZWxmLmdyb3VwID0gZ3JvdXAKKyAgICAgICAgc2VsZi5l bmFibGVkID0gVHJ1ZQorCisgICAgZGVmIG1hdGNoKHNlbGYsIGNsYXNzX3R5 cGUsIG1ldGhvZF9uYW1lKToKKyAgICAgICAgIiIiTWF0Y2ggY2xhc3MgdHlw ZSBhbmQgbWV0aG9kIG5hbWUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGNsYXNzX3R5cGU6IFRoZSBjbGFzcyB0eXBlIHRvIG1hdGNoCisgICAg ICAgICAgICBtZXRob2RfbmFtZTogVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0 byBtYXRjaC4KKyAgICAgICAgIiIiCisgICAgICAgIGdkYi5HZGJFcnJvcign RVJST1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ21hdGNoXCcuJykK KworICAgIGRlZiBnZXRfYXJndHlwZXMoc2VsZiwgY2xhc3NfdHlwZSwgbWV0 aG9kX25hbWUpOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHR5cGVz LCBhcyBnZGIuVHlwZSBvYmplY3RzLCBvZiB0aGUgYXJndW1lbnRzIG9mCisg ICAgICAgICAgIHRoZSBkZWJ1ZyBtZXRob2QuCisKKyAgICAgICAgQXJnczog CisgICAgICAgICAgICBjbGFzc190eXBlOiBUaGUgZ2RiLlR5cGUgdmFsdWUg b2YgdGhlIGNsYXNzIG9uIHdoaWNoIHRoZSBtZXRob2QKKyAgICAgICAgICAg ICAgICAgICAgICAgIGlzIGRlZmluZWQuCisgICAgICAgICAgICBtZXRob2Rf bmFtZTogVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB3aG9zZSBhcmd1bWVudCB0 eXBlcyBhcmUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICBiZSByZXR1 cm5lZC4KKyAgICAgICAgIiIiCisgICAgICAgIGdkYi5HZGJFcnJvcignRVJS T1I6IEludm9raW5nIGFic3RyYWN0IG1ldGhvZCBcJ2dldF9hcmd0eXBlc1wn LicpCisKKyAgICBkZWYgaW52b2tlKHNlbGYsIG9iaiwgYXJncyk6CisgICAg ICAgICIiIkludm9rZSB0aGUgZGVidWcgbWV0aG9kLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBvYmo6IFRoZSBnZGIuVmFsdWUgb2YgdGhlIG9i amVjdCBvbiB3aGljaCB0aGUgbWV0aG9kIGlzIHRvIGJlCisgICAgICAgICAg ICAgICAgIGludm9rZWQuCisgICAgICAgICAgICBhcmdzOiBUaGUgdHVwbGUg b2YgYXJndW1lbnRzIHRvIHRoZSBtZXRob2QuCisgICAgICAgICIiIgorICAg ICAgICBnZGIuR2RiRXJyb3IoJ0VSUk9SOiBJbnZva2luZyBhYnN0cmFjdCBt ZXRob2QgXCdpbnZva2VcJy4nKQorCisKK2NsYXNzIFNpbXBsZURlYnVnTWV0 aG9kKERlYnVnTWV0aG9kKToKKyAgICAiIiJUaGlzIGlzIGEgdXRpbGl0eSBj bGFzcyB3aGljaCBkb2VzIG5hbWUgbWF0Y2ggYnkgY2xhc3MgbmFtZSBvZiB0 aGUKKyAgICBvYmplY3RzIG9uIHdoaWNoIHRoZSBkZWJ1ZyBtZXRob2RzIGFy ZSBkZWZpbmVkLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBu YW1lLCBncm91cCwgbWV0aG9kX2Z1bmN0aW9uLCBjbGFzc19tYXRjaGVyLAor ICAgICAgICAgICAgICAgICBtZXRob2RfbWF0Y2hlciwgKmFyZ3R5cGVzKToK KyAgICAgICAgRGVidWdNZXRob2QuX19pbml0X18oc2VsZiwgbmFtZSwgZ3Jv dXApCisgICAgICAgIHNlbGYuX21ldGhvZF9mdW5jdGlvbiA9IG1ldGhvZF9m dW5jdGlvbgorICAgICAgICBzZWxmLl9jbGFzc19tYXRjaGVyID0gY2xhc3Nf bWF0Y2hlcgorICAgICAgICBzZWxmLl9tZXRob2RfbWF0Y2hlciA9IG1ldGhv ZF9tYXRjaGVyCisgICAgICAgIHNlbGYuX2FyZ3R5cGVzID0gYXJndHlwZXMK KworICAgIGRlZiBtYXRjaChzZWxmLCBjbGFzc190eXBlLCBtZXRob2RfbmFt ZSk6CisgICAgICAgIGNtID0gcmUubWF0Y2goc2VsZi5fY2xhc3NfbWF0Y2hl ciwgc3RyKGNsYXNzX3R5cGUudW5xdWFsaWZpZWQoKS50YWcpKQorICAgICAg ICBtbSA9IHJlLm1hdGNoKHNlbGYuX21ldGhvZF9tYXRjaGVyLCBtZXRob2Rf bmFtZSkKKyAgICAgICAgaWYgY20gYW5kIG1tOgorICAgICAgICAgICAgcmV0 dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBG YWxzZQorCisgICAgZGVmIGdldF9hcmd0eXBlcyhzZWxmLCBjbGFzc190eXBl LCBtZXRob2RfbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9hcmd0eXBl cworCisgICAgZGVmIGludm9rZShzZWxmLCBvYmosIGFyZ3MpOgorICAgICAg ICByZXR1cm4gc2VsZi5fbWV0aG9kX2Z1bmN0aW9uKG9iaiwgKmFyZ3MpCisK KworZGVmIHJlZ2lzdGVyX2RlYnVnX21ldGhvZHMob2JqZmlsZSwgZGVidWdf bWV0aG9kcyk6CisgICAgZXhpc3RpbmdfbWV0aG9kX2xpc3QgPSBbXQorICAg IGZvciBuZXdfbWV0aG9kIGluIGRlYnVnX21ldGhvZHM6CisgICAgICAgIGZv ciBvbGRfbWV0aG9kIGluIG9iamZpbGUuZGVidWdfbWV0aG9kczoKKyAgICAg ICAgICAgIGlmIChuZXdfbWV0aG9kLmdyb3VwID09IG9sZF9tZXRob2QuZ3Jv dXAgYW5kCisgICAgICAgICAgICAgICAgbmV3X21ldGhvZC5uYW1lID09IG9s ZF9tZXRob2QubmFtZSk6CisgICAgICAgICAgICAgICAgcHJpbnQgKCdXQVJO SU5HOiBSZXBsYWNpbmcgZGVidWcgbWV0aG9kIHdpdGggbmFtZSAiJXMiIGlu ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwICIlcyIuJyAlIChv bGRfbWV0aG9kLm5hbWUsIG9sZF9tZXRob2QuZ3JvdXApKQorICAgICAgICAg ICAgICAgIGV4aXN0aW5nX21ldGhvZF9saXN0LmFwcGVuZChvbGRfbWV0aG9k KQorICAgIGZvciBvbGRfbWV0aG9kIGluIGV4aXN0aW5nX21ldGhvZF9saXN0 OgorICAgICAgICBvYmpmaWxlLmRlYnVnX21ldGhvZHMucmVtb3ZlKG9sZF9t ZXRob2QpCisgICAgb2JqZmlsZS5kZWJ1Z19tZXRob2RzLmV4dGVuZChkZWJ1 Z19tZXRob2RzKQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1kZWJ1Z21l dGhvZHMuYyBiL2dkYi9weXRob24vcHktZGVidWdtZXRob2RzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZlZTI2MAotLS0gL2Rl di9udWxsCisrKyBiL2dkYi9weXRob24vcHktZGVidWdtZXRob2RzLmMKQEAg LTAsMCArMSw1NjAgQEAKKy8qIFN1cHBvcnQgZm9yIGRlYnVnIG1ldGhvZHMg aW4gUHl0aG9uLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lu Y2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisjaW5j bHVkZSAiZXh0LWZ1bmN0aW9uLmgiCisjaW5jbHVkZSAib2JqZmlsZXMuaCIK KyNpbmNsdWRlICJ2YWx1ZS5oIgorI2luY2x1ZGUgImxhbmd1YWdlLmgiCisK KyNpbmNsdWRlICJweXRob24uaCIKKworI2lmZGVmIEhBVkVfUFlUSE9OCisj aW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisKK3N0cnVjdCBweV9leHRf b2JqZWN0Cit7CisgIC8qIEhvbGRzIGFuIGluc3RhbmNlIG9mIHRoZSBEZWJ1 Z01ldGhvZCBjbGFzcy4gICovCisgIFB5T2JqZWN0ICpvYmplY3Q7CisKKyAg LyogSG9sZHMgdGhlIHR5cGUgb2YgdGhlICd0aGlzJyBvYmplY3QuICAqLwor ICBQeU9iamVjdCAqbWF0Y2hfcHlfb2JqX3R5cGU7CisKKyAgLyogSG9sZHMg dGhlIG1hdGNoaW5nIG1ldGhvZCBuYW1lLiAgKi8KKyAgY29uc3QgY2hhciAq bWF0Y2hfbWV0aG9kOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmVuYWJs ZWRfZmllbGRfbmFtZSA9ICJlbmFibGVkIjsKK3N0YXRpYyBjb25zdCBjaGFy ICptYXRjaF9tZXRob2RfbmFtZSA9ICJtYXRjaCI7CitzdGF0aWMgY29uc3Qg Y2hhciAqZ2V0X2FyZ3R5cGVzX21ldGhvZF9uYW1lID0gImdldF9hcmd0eXBl cyI7CitzdGF0aWMgY29uc3QgY2hhciAqaW52b2tlX21ldGhvZF9uYW1lID0g Imludm9rZSI7CisKK3N0YXRpYyBQeU9iamVjdCAqbWF0Y2hfbWV0aG9kX3B5 c3RyaW5nID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X2FyZ3R5cGVz X21ldGhvZF9weXN0cmluZyA9IE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKmlu dm9rZV9tZXRob2RfcHlzdHJpbmcgPSBOVUxMOworCitzdGF0aWMgc3RydWN0 IGV4dF9mbl9kZXNjcmlwdG9yICpuZXdfcHl0aG9uX2V4dF9tZXRob2QgKFB5 T2JqZWN0ICppdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHlfb2JqX3R5 cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhvZCk7CisKKy8qIElt cGxlbWVudGF0aW9uIG9mIGZyZWVfZXh0X29ial9mdHlwZS4gICovCisKK3N0 YXRpYyB2b2lkCitweV9mcmVlX2V4dF9vYmplY3QgKHZvaWQgKmV4dF9vYmpl Y3QpCit7CisgIHN0cnVjdCBweV9leHRfb2JqZWN0ICpvID0gZXh0X29iamVj dDsKKworICBQeV9YREVDUkVGIChvLT5vYmplY3QpOworICBQeV9YREVDUkVG IChvLT5tYXRjaF9weV9vYmpfdHlwZSk7CisgIHhmcmVlIChvKTsKK30KKwor LyogSW1wbGVtZW50YXRpb24gb2YgY2xvbmVfZXh0X29ial9mdHlwZS4gICov CisKK3N0YXRpYyB2b2lkICoKK3B5X2Nsb25lX2V4dF9vYmplY3QgKHZvaWQg Km9iaikKK3sKKyAgc3RydWN0IHB5X2V4dF9vYmplY3QgKm5ld19vYmosICpv bGRfb2JqOworCisgIG9sZF9vYmogPSAoc3RydWN0IHB5X2V4dF9vYmplY3Qg Kikgb2JqOworCisgIG5ld19vYmogPSBYQ05FVyAoc3RydWN0IHB5X2V4dF9v YmplY3QpOworICBuZXdfb2JqLT5vYmplY3QgPSBvbGRfb2JqLT5vYmplY3Q7 CisgIG5ld19vYmotPm1hdGNoX3B5X29ial90eXBlID0gb2xkX29iai0+bWF0 Y2hfcHlfb2JqX3R5cGU7CisgIG5ld19vYmotPm1hdGNoX21ldGhvZCA9IG9s ZF9vYmotPm1hdGNoX21ldGhvZDsKKworICBQeV9YSU5DUkVGIChuZXdfb2Jq LT5vYmplY3QpOworICBQeV9YSU5DUkVGIChuZXdfb2JqLT5tYXRjaF9weV9v YmpfdHlwZSk7CisKKyAgcmV0dXJuICh2b2lkICopIG5ld19vYmo7Cit9CisK Ky8qIFJldHVybnMgdHJ1ZSBpZiBnZGIuVHlwZSBvYmplY3QgUFlfT0JKX1RZ UEUgaGFzIGEgbWV0aG9kIGRlZmluZWQgaW4gUHl0aG9uCisgICB3aXRoIG5h bWUgTUVUSE9EX05BTUUuICAqLworCitzdGF0aWMgaW50Citpc19tYXRjaGlu Z19kZWJ1Z19tZXRob2QgKFB5T2JqZWN0ICpkbV9vYmosIFB5T2JqZWN0ICpw eV9vYmpfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbWV0aG9kX25hbWUpCit7CisgIFB5T2JqZWN0ICptZXRob2RfbmFt ZV9weXN0cmluZzsKKyAgUHlPYmplY3QgKm1hdGNoX21ldGhvZCwgKmVuYWJs ZWRfZmllbGQsICptYXRjaF9yZXN1bHQ7CisgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwczsKKyAgaW50IGVuYWJsZWQsIG1hdGNoOworCisgIGlmIChtZXRo b2RfbmFtZSA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisgIGNsZWFudXBz ID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworCisgIGVu YWJsZWRfZmllbGQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nIChkbV9vYmos IGVuYWJsZWRfZmllbGRfbmFtZSk7CisgIGlmIChlbmFibGVkX2ZpZWxkID09 IE5VTEwpCisgICAgeworICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7Cisg ICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4g MDsKKyAgICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGVuYWJsZWRf ZmllbGQpOworCisgIGVuYWJsZWQgPSBQeU9iamVjdF9Jc1RydWUgKGVuYWJs ZWRfZmllbGQpOworICBpZiAoZW5hYmxlZCA9PSAtMSkKKyAgICB7CisgICAg ICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CisKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgaWYgKGVu YWJsZWQgPT0gMCkKKyAgICB7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51 cHMpOworICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgIG1hdGNoX21ldGhv ZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGRtX29iaiwgbWF0Y2hfbWV0 aG9kX25hbWUpOworICBpZiAobWF0Y2hfbWV0aG9kID09IE5VTEwpCisgICAg eworICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBkb19jbGVh bnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gMDsKKyAgICB9Cisg IG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKG1hdGNoX21ldGhvZCk7CisgIGlm ICghUHlDYWxsYWJsZV9DaGVjayAobWF0Y2hfbWV0aG9kKSkKKyAgICB7Cisg ICAgICB3YXJuaW5nIChfKCJBdHRyaWJ1dGUgJyVzJyBvZiBhIHJlZ2lzdGVy ZWQgUHl0aG9uIGRlYnVnIG1ldGhvZCBpcyBub3QgIgorICAgICAgICAgICAg ICAgICAiY2FsbGFibGUuICBJZ25vcmVkISIpLCBtYXRjaF9tZXRob2RfbmFt ZSk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICBy ZXR1cm4gMDsKKyAgICB9CisKKyAgbWV0aG9kX25hbWVfcHlzdHJpbmcgPSBQ eVN0cmluZ19Gcm9tU3RyaW5nIChtZXRob2RfbmFtZSk7CisgIGlmIChtZXRo b2RfbmFtZV9weXN0cmluZyA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5 X3ByaW50X3N0YWNrICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKKworICAgICAgcmV0dXJuIDA7CisgICAgfQorICBtYWtlX2NsZWFudXBf cHlfZGVjcmVmIChtZXRob2RfbmFtZV9weXN0cmluZyk7CisKKyAgbWF0Y2hf cmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MgKGRtX29iaiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1hdGNoX21ldGhvZF9weXN0cmluZywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHB5X29ial90eXBlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9k X25hbWVfcHlzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgaWYgKG1hdGNoX3Jlc3VsdCA9 PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwor ICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJu IDA7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChtYXRjaF9y ZXN1bHQpOworCisgIG1hdGNoID0gUHlPYmplY3RfSXNUcnVlIChtYXRjaF9y ZXN1bHQpOworICBpZiAobWF0Y2ggPT0gLTEpCisgICAgeworICAgICAgZ2Ri cHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51 cHMpOworCisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKKworICByZXR1cm4gbWF0Y2g7Cit9CisKKy8qIElt cGxlbWVudGF0aW9uIG9mIGdldF9tYXRjaGluZ19leHRfbWV0aG9kc19mdHlw ZS4KKyAgIFJldHVybiBhIG9mIHZlY3RvciBtZXRob2RzIHdpdGggbmFtZSBN RVRIT0RfTkFNRSBkZWZpbmVkIGluIFB5dGhvbiBmb3IKKyAgIG9iamVjdHMg b2YgdHlwZSBPQkpfVFlQRS4gIFJldHVybnMgTlVMTCBpZiBubyBtYXRjaGVz IGFyZSBmb3VuZC4gICovCisKK3N0YXRpYyBWRUMgKGV4dF9mbl9kZXNjcmlw dG9yX3ApICoKK3B5X2RlYnVnbWV0aG9kX25hbWVfbWF0Y2ggKHN0cnVjdCB0 eXBlICpvYmpfdHlwZSwgY29uc3QgY2hhciAqbWV0aG9kX25hbWUpCit7Cisg IHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAgc3RydWN0IG9iamZpbGUg Km9iamZpbGU7CisgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKm1ldGhv ZF92ZWMgPSBOVUxMOworICBQeU9iamVjdCAqcHlfdHlwZSwgKnB5X3Byb2dz cGFjZTsKKyAgUHlPYmplY3QgKnB5X2RlYnVnbWV0aG9kX2xpc3QgPSBOVUxM LCAqbGlzdF9pdGVyLCAqaXRlbTsKKworICBpZiAob2JqX3R5cGUgPT0gTlVM TCB8fCBtZXRob2RfbmFtZSA9PSBOVUxMKQorICAgIHJldHVybiBtZXRob2Rf dmVjOworCisgIHB5X3R5cGUgPSB0eXBlX3RvX3R5cGVfb2JqZWN0IChvYmpf dHlwZSk7CisgIGlmIChweV90eXBlID09IE5VTEwpCisgICAgcmV0dXJuIG1l dGhvZF92ZWM7CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5X3R5cGUp OworCisgIC8qIENyZWF0ZSBhbiBlbXB5dCBsaXN0IG9mIGRlYnVnIG1ldGhv ZHMuICAqLworICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gUHlMaXN0X05ldyAo MCk7CisgIGlmIChweV9kZWJ1Z21ldGhvZF9saXN0ID09IE5VTEwpCisgICAg cmV0dXJuIE5VTEw7CisKKyAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2Vu diAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisK KyAgLyogR2F0aGVyIGRlYnVnIG1ldGhvZHMgcmVnaXN0ZXJlZCB3aXRoIHRo ZSBvYmplY3QgZmlsZXMuICAqLworICBBTExfT0JKRklMRVMgKG9iamZpbGUp CisgICAgeworICAgICAgUHlPYmplY3QgKnB5X29iamZpbGUgPSBvYmpmaWxl X3RvX29iamZpbGVfb2JqZWN0IChvYmpmaWxlKTsKKyAgICAgIFB5T2JqZWN0 ICpvYmpmaWxlX2RtbGlzdCwgKnRlbXA7CisKKyAgICAgIGlmIChweV9vYmpm aWxlID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICBnZGJweV9wcmlu dF9zdGFjayAoKTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor CisgICAgICBvYmpmaWxlX2RtbGlzdCA9IG9iamZweV9nZXRfZGVidWdfbWV0 aG9kcyAocHlfb2JqZmlsZSwgTlVMTCk7CisgICAgICB0ZW1wID0gcHlfZGVi dWdtZXRob2RfbGlzdDsKKyAgICAgIHB5X2RlYnVnbWV0aG9kX2xpc3QgPSBQ eVNlcXVlbmNlX0NvbmNhdCAodGVtcCwgb2JqZmlsZV9kbWxpc3QpOworICAg ICAgaWYgKHB5X2RlYnVnbWV0aG9kX2xpc3QgPT0gTlVMTCkKKyAgICAgICAg cHlfZGVidWdtZXRob2RfbGlzdCA9IHRlbXA7CisgICAgICBlbHNlCisgICAg ICAgIFB5X0RFQ1JFRiAodGVtcCk7CisgICAgICBQeV9YREVDUkVGIChvYmpm aWxlX2RtbGlzdCk7CisgICAgfQorCisgIC8qIEdhdGhlciBkZWJ1ZyBtZXRo b2RzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgY3VycmVudCBwcm9ncmFtIHNwYWNl LiAgKi8KKyAgcHlfcHJvZ3NwYWNlID0gcHNwYWNlX3RvX3BzcGFjZV9vYmpl Y3QgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisgIGlmIChweV9wcm9nc3Bh Y2UgIT0gTlVMTCkKKyAgICB7CisgICAgICBQeU9iamVjdCAqdGVtcCA9IHB5 X2RlYnVnbWV0aG9kX2xpc3Q7CisgICAgICBQeU9iamVjdCAqcHNwYWNlX2Rt bGlzdCA9IHBzcHlfZ2V0X2RlYnVnX21ldGhvZHMgKHB5X3Byb2dzcGFjZSwg TlVMTCk7CisKKyAgICAgIHB5X2RlYnVnbWV0aG9kX2xpc3QgPSBQeVNlcXVl bmNlX0NvbmNhdCAodGVtcCwgcHNwYWNlX2RtbGlzdCk7CisgICAgICBpZiAo cHlfZGVidWdtZXRob2RfbGlzdCA9PSBOVUxMKQorICAgICAgICBweV9kZWJ1 Z21ldGhvZF9saXN0ID0gdGVtcDsKKyAgICAgIGVsc2UKKyAgICAgICAgUHlf REVDUkVGICh0ZW1wKTsKKyAgICAgIFB5X1hERUNSRUYgKHBzcGFjZV9kbWxp c3QpOworICAgIH0KKworICAvKiBHYXRoZXIgZGVidWcgbWV0aG9kcyByZWdp c3RlcmVkIGdsb2JhbGx5LiAgKi8KKyAgaWYgKGdkYl9weXRob25fbW9kdWxl ICE9IE5VTEwKKyAgICAgICYmIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKGdk Yl9weXRob25fbW9kdWxlLCAiZGVidWdfbWV0aG9kcyIpKQorICAgIHsKKyAg ICAgIFB5T2JqZWN0ICpnZGJfZG1saXN0OworICAgICAgUHlPYmplY3QgKnRl bXAgPSBweV9kZWJ1Z21ldGhvZF9saXN0OworCisgICAgICBnZGJfZG1saXN0 ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyAoZ2RiX3B5dGhvbl9tb2R1bGUs ICJkZWJ1Z19tZXRob2RzIik7CisgICAgICBpZiAoZ2RiX2RtbGlzdCAhPSBO VUxMICYmIFB5TGlzdF9DaGVjayAoZ2RiX2RtbGlzdCkpCisgICAgICAgIHsK KyAgICAgICAgICBweV9kZWJ1Z21ldGhvZF9saXN0ID0gUHlTZXF1ZW5jZV9D b25jYXQgKHRlbXAsIGdkYl9kbWxpc3QpOworICAgICAgICAgIGlmIChweV9k ZWJ1Z21ldGhvZF9saXN0ID09IE5VTEwpCisgICAgICAgICAgICBweV9kZWJ1 Z21ldGhvZF9saXN0ID0gdGVtcDsKKyAgICAgICAgICBlbHNlCisgICAgICAg ICAgICBQeV9ERUNSRUYgKHRlbXApOworICAgICAgICAgIFB5X1hERUNSRUYg KGdkYl9kbWxpc3QpOworICAgICAgICB9CisgICAgfQorCisgIGxpc3RfaXRl ciA9IFB5T2JqZWN0X0dldEl0ZXIgKHB5X2RlYnVnbWV0aG9kX2xpc3QpOwor ICBpZiAobGlzdF9pdGVyID09IE5VTEwpCisgICAgeworICAgICAgZ2RicHlf cHJpbnRfc3RhY2sgKCk7CisgICAgICBQeV9ERUNSRUYgKHB5X2RlYnVnbWV0 aG9kX2xpc3QpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAg ICAgIHJldHVybiBOVUxMOworICAgIH0KKworICB3aGlsZSAoKGl0ZW0gPSBQ eUl0ZXJfTmV4dCAobGlzdF9pdGVyKSkpCisgICAgeworICAgICAgaWYgKGlz X21hdGNoaW5nX2RlYnVnX21ldGhvZCAoaXRlbSwgcHlfdHlwZSwgbWV0aG9k X25hbWUpKQorICAgICAgICB7CisgICAgICAgICAgc3RydWN0IGV4dF9mbl9k ZXNjcmlwdG9yICpleHRfZm47CisKKyAgICAgICAgICBleHRfZm4gPSBuZXdf cHl0aG9uX2V4dF9tZXRob2QgKGl0ZW0sIHB5X3R5cGUsIG1ldGhvZF9uYW1l KTsKKyAgICAgICAgICBWRUNfc2FmZV9wdXNoIChleHRfZm5fZGVzY3JpcHRv cl9wLCBtZXRob2RfdmVjLCBleHRfZm4pOworICAgICAgICB9CisgICAgICBQ eV9ERUNSRUYgKGl0ZW0pOworICAgIH0KKyAgUHlfREVDUkVGIChsaXN0X2l0 ZXIpOworICAvKiBSZXBvcnQgYW55IGVycm9yIHRoYXQgY291bGQgaGF2ZSBv Y2N1cnJlZCB3aGlsZSBpdGVyYXRpbmcuICAqLworICBpZiAoUHlFcnJfT2Nj dXJyZWQgKCkpCisgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisKKyAgUHlf REVDUkVGIChweV9kZWJ1Z21ldGhvZF9saXN0KTsKKyAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKKworICByZXR1cm4gbWV0aG9kX3ZlYzsKK30KKworLyog SW1wbGVtZW50YXRpb24gb2YgZ2V0X2V4dF9mbl9hcmd0eXBlc19mdHlwZS4K KyAgIFJldHVybiBhbiBhcnJ5IG9mIGFyZ3VtZW50IHR5cGVzIGZvciBleHRl bnNpb24gZW5jYXBzdWxhdGVkIGluIEVYVF9PQkouCisgICBOQVJHUyBjb250 YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheS4gICovCisKK3N0YXRpYyBz dHJ1Y3QgdHlwZSAqKgorcHlfZXh0X2ZuX2dldF9hcmd0eXBlcyAodm9pZCAq ZXh0X29iaiwgaW50ICpuYXJncykKK3sKKyAgc3RydWN0IHB5X2V4dF9vYmpl Y3QgKmV4dF9vYmplY3QgPSAoc3RydWN0IHB5X2V4dF9vYmplY3QgKikgZXh0 X29iajsKKyAgUHlPYmplY3QgKmRlYnVnX21ldGhvZF9vYmogPSBleHRfb2Jq ZWN0LT5vYmplY3Q7CisgIFB5T2JqZWN0ICpnZXRfYXJndHlwZXNfbWV0aG9k OworICBQeU9iamVjdCAqcHlfYXJndHlwZV9saXN0LCAqbGlzdF9pdGVyLCAq aXRlbTsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworICBzdHJ1Y3Qg dHlwZSAqKnR5cGVfYXJyYXksICpvYmpfdHlwZTsKKyAgaW50IGkgPSAxOwor CisgIC8qIFNldCBuYXJncyB0byAwIHNvIHRoYXQgYW55IHByZW1hdHVyZSBy ZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uIHJldHVybnMKKyAgICAgMCBhcmcg dHlwZXMuICAqLworICAqbmFyZ3MgPSAwOworCisgIGNsZWFudXBzID0gZW5z dXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRf bGFuZ3VhZ2UpOworCisgIGdldF9hcmd0eXBlc19tZXRob2QgPSAgUHlPYmpl Y3RfR2V0QXR0clN0cmluZyAoZGVidWdfbWV0aG9kX29iaiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRf YXJndHlwZXNfbWV0aG9kX25hbWUpOworICBpZiAoZ2V0X2FyZ3R5cGVzX21l dGhvZCA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNr ICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAg cmV0dXJuIE5VTEw7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVm IChnZXRfYXJndHlwZXNfbWV0aG9kKTsKKworICBpZiAoIVB5Q2FsbGFibGVf Q2hlY2sgKGdldF9hcmd0eXBlc19tZXRob2QpKQorICAgIHsKKyAgICAgIHdh cm5pbmcgKF8oIkF0dHJpYnV0ZSAnJXMnIG9mIGEgcmVnaXN0ZXJlZCBQeXRo b24gZGVidWcgbWV0aG9kIGlzIG5vdCAiCisgICAgICAgICAgICAgICAgICJj YWxsYWJsZS4gIElnbm9yZWQhIiksIGdldF9hcmd0eXBlc19tZXRob2RfbmFt ZSk7CisgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICBy ZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgcHlfYXJndHlwZV9saXN0ID0gUHlP YmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MgKGRlYnVnX21ldGhvZF9vYmosCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnZXRfYXJndHlwZXNfbWV0aG9kX3B5c3RyaW5nLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X29iamVj dC0+bWF0Y2hfcHlfb2JqX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfb2JqZWN0LT5tYXRjaF9t ZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMKTsKKyAgaWYgKHB5X2FyZ3R5cGVfbGlzdCA9PSBO VUxMKQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworICAg ICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAgcmV0dXJuIE5V TEw7CisgICAgfQorICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChweV9hcmd0 eXBlX2xpc3QpOworCisgIGxpc3RfaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIg KHB5X2FyZ3R5cGVfbGlzdCk7CisgIGlmIChsaXN0X2l0ZXIgPT0gTlVMTCkK KyAgICB7CisgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyAgICAgIGRv X2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgICAgIHJldHVybiBOVUxMOwor ICAgIH0KKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAobGlzdF9pdGVyKTsK KworICAvKiBJbmNsdWRlIHRoZSAndGhpcycgYXJndW1lbnQgaW4gdGhlIHNp emUuICAqLworICB0eXBlX2FycmF5ID0gWENORVdWRUMgKHN0cnVjdCB0eXBl ICosIFB5TGlzdF9HRVRfU0laRSAocHlfYXJndHlwZV9saXN0KSArIDEpOwor ICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dCAobGlzdF9pdGVyKSkpCisg ICAgeworICAgICAgc3RydWN0IHR5cGUgKmFyZ190eXBlID0gdHlwZV9vYmpl Y3RfdG9fdHlwZSAoaXRlbSk7CisKKyAgICAgIFB5X0RFQ1JFRiAoaXRlbSk7 CisKKyAgICAgIGlmIChhcmdfdHlwZSA9PSBOVUxMKQorICAgICAgICB7Cisg ICAgICAgICAgaSA9IC0xOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CisKKyAgICAgIHR5cGVfYXJyYXlbaV0gPSBhcmdfdHlwZTsKKyAgICAgIGkr KzsKKyAgICB9CisgIGlmIChQeUVycl9PY2N1cnJlZCAoKSB8fCBpID09IC0x KQorICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworICAgICAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAgICAgIHhmcmVlICh0eXBlX2Fy cmF5KTsKKworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIC8qIEFk ZCB0aGUgdHlwZSBvZiAndGhpcycgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAg Ki8KKyAgb2JqX3R5cGUgPSB0eXBlX29iamVjdF90b190eXBlIChleHRfb2Jq ZWN0LT5tYXRjaF9weV9vYmpfdHlwZSk7CisgIHR5cGVfYXJyYXlbMF0gPSBt YWtlX2N2X3R5cGUgKDEsIDAsIGxvb2t1cF9wb2ludGVyX3R5cGUgKG9ial90 eXBlKSwgTlVMTCk7CisgICpuYXJncyA9IGk7CisKKyAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKKworICByZXR1cm4gdHlwZV9hcnJheTsKK30KKworLyog SW1wbGVtZW50YXRpb24gb2YgaW52b2tlX21ldGhvZF9mdHlwZS4KKyAgIElu dm9rZXMgYSBtZXRob2QgZGVmaW5lZCBpbiBQeXRob24uICBUaGUgdmFsdWUg cmV0dXJuZWQgYnkgdGhlIG1ldGhvZCBpcworICAgcmV0dXJuZWQuICBOVUxM IGlzIHJldHVybmVkIGluIGNhc2Ugb2YgZXJyb3JzLiAgKi8KKworc3RhdGlj IHN0cnVjdCB2YWx1ZSAqCitweV9leHRfZm5faW52b2tlX21ldGhvZCAodm9p ZCAqZXh0X29iaiwgc3RydWN0IHZhbHVlICpvYmosIHN0cnVjdCB2YWx1ZSAq KmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hcmdzKQor eworICBpbnQgaTsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworICBQ eU9iamVjdCAqcHlfdmFsdWVfb2JqLCAqcHlfYXJnX3R1cGxlLCAqcHlfcmVz dWx0LCAqZGVidWdfbWV0aG9kX29iajsKKyAgUHlPYmplY3QgKmludm9rZV9t ZXRob2Q7CisgIHN0cnVjdCB2YWx1ZSAqcmVzdWx0ID0gTlVMTDsKKworICBj bGVhbnVwcyA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNo ICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKKworICBkZWJ1Z19tZXRob2Rfb2Jq ID0gKChzdHJ1Y3QgcHlfZXh0X29iamVjdCAqKSBleHRfb2JqKS0+b2JqZWN0 OworCisgIGludm9rZV9tZXRob2QgPSAgUHlPYmplY3RfR2V0QXR0clN0cmlu ZyAoZGVidWdfbWV0aG9kX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnZva2VfbWV0aG9kX25hbWUpOworICBp ZiAoaW52b2tlX21ldGhvZCA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdkYnB5 X3ByaW50X3N0YWNrICgpOworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKKworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICBtYWtlX2NsZWFu dXBfcHlfZGVjcmVmIChpbnZva2VfbWV0aG9kKTsKKworICBpZiAoIVB5Q2Fs bGFibGVfQ2hlY2sgKGludm9rZV9tZXRob2QpKQorICAgIHsKKyAgICAgIHdh cm5pbmcgKF8oIkF0dHJpYnV0ZSAnJXMnIG9mIGEgcmVnaXN0ZXJlZCBQeXRo b24gZGVidWcgbWV0aG9kIGlzIG5vdCAiCisgICAgICAgICAgICAgICAgICJj YWxsYWJsZS4gIElnbm9yZWQhIiksIGludm9rZV9tZXRob2RfbmFtZSk7Cisg ICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4g TlVMTDsKKyAgICB9CisKKyAgcHlfdmFsdWVfb2JqID0gdmFsdWVfdG9fdmFs dWVfb2JqZWN0IChvYmopOworICBpZiAocHlfdmFsdWVfb2JqID09IE5VTEwp CisgICAgeworICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyAgICAg IHJldHVybiBOVUxMOworICAgIH0KKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3Jl ZiAocHlfdmFsdWVfb2JqKTsKKworICBweV9hcmdfdHVwbGUgPSBQeVR1cGxl X05ldyAobmFyZ3MpOworICBpZiAocHlfYXJnX3R1cGxlID09IE5VTEwpCisg ICAgeworICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7CisgICAgICBkb19j bGVhbnVwcyAoY2xlYW51cHMpOworCisgICAgICByZXR1cm4gTlVMTDsKKyAg ICB9CisgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5X2FyZ190dXBsZSk7 CisKKyAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisgICAgeworICAg ICAgUHlPYmplY3QgKnB5X3ZhbHVlX2FyZyA9IHZhbHVlX3RvX3ZhbHVlX29i amVjdCAoYXJnc1tpXSk7CisKKyAgICAgIGlmIChweV92YWx1ZV9hcmcgPT0g TlVMTCkKKyAgICAgICAgeworICAgICAgICAgIGdkYnB5X3ByaW50X3N0YWNr ICgpOworICAgICAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisgICAg ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgaWYgKFB5 VHVwbGVfU2V0SXRlbSAocHlfYXJnX3R1cGxlLCBpLCBweV92YWx1ZV9hcmcp KQorICAgICAgICB7CisgICAgICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7 CisgICAgICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKworICAgICAg ICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgIHB5X3Jl c3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzIChkZWJ1Z19tZXRo b2Rfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW52b2tlX21ldGhvZF9weXN0cmluZywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5X3ZhbHVlX29iaiwgcHlf YXJnX3R1cGxlLCBOVUxMKTsKKyAgaWYgKHB5X3Jlc3VsdCA9PSBOVUxMKQor ICAgIHsKKyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOyAKKyAgICAgIGRv X2NsZWFudXBzIChjbGVhbnVwcyk7CisKKyAgICAgIHJldHVybiBOVUxMOwor ICAgIH0KKyAgbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAocHlfcmVzdWx0KTsK KworICAvKiBDaGVjayB0aGF0IGEgZGVidWcgbWV0aG9kIGRpZCBub3QgcmV0 dXJuIE5vbmUuICAqLworICBpZiAocHlfcmVzdWx0ICE9IFB5X05vbmUpCisg ICAgeworICAgICAgcmVzdWx0ID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhv biAocHlfcmVzdWx0KTsKKyAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAg ICAgICAgeworICAgICAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOworICAg ICAgICB9CisgICAgfQorICBlbHNlCisgICAgcmVzdWx0ID0gYWxsb2NhdGVf dmFsdWUgKGxvb2t1cF90eXBlbmFtZSAocHl0aG9uX2xhbmd1YWdlLCBweXRo b25fZ2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidm9pZCIsIE5VTEwsIDApKTsKKworICBkb19jbGVh bnVwcyAoY2xlYW51cHMpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZXh0X2Z1bmNfb3BzIHB5dGhvbl9leHRfbGFuZyA9IHsK KyAgcHlfY2xvbmVfZXh0X29iamVjdCwKKyAgcHlfZnJlZV9leHRfb2JqZWN0 LAorICBweV9kZWJ1Z21ldGhvZF9uYW1lX21hdGNoLAorICBweV9leHRfZm5f Z2V0X2FyZ3R5cGVzLAorICBweV9leHRfZm5faW52b2tlX21ldGhvZAorfTsK KworLyogQ3JlYXRlcyBhIG5ldyBweXRob24gZXh0X2Z1bmN0aW9uX2Rlc2Ny aXB0b3IuICBERUJVR19NRVRIT0QgaXMgdGhlCisgICBkZWJ1ZyBtZXRob2Qg b2JqZWN0LiAgUFlfT0JKX1RZUEUgaXMgYSBnZGIuVHlwZSB2YWx1ZSBjb3Jy ZXNwb25kaW5nIHRvIHRoZQorICAgdHlwZSBvZiB0aGUgb2JqZWN0IG9uIHdo aWNoIHRoZSBkZWJ1ZyBtZXRob2Qgd2l0aCBuYW1lIE1FVEhPRCB3aWxsIGJl CisgICBpbnZva2VkLiAgKi8KKworc3RhdGljIHN0cnVjdCBleHRfZm5fZGVz Y3JpcHRvciAqCituZXdfcHl0aG9uX2V4dF9tZXRob2QgKFB5T2JqZWN0ICpk ZWJ1Z19tZXRob2QsIFB5T2JqZWN0ICpweV9vYmpfdHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG9kKQoreworICBzdHJ1 Y3QgcHlfZXh0X29iamVjdCAqZXh0X29iamVjdDsKKworICBleHRfb2JqZWN0 ID0gWENORVcgKHN0cnVjdCBweV9leHRfb2JqZWN0KTsKKyAgZXh0X29iamVj dC0+b2JqZWN0ID0gZGVidWdfbWV0aG9kOworICBleHRfb2JqZWN0LT5tYXRj aF9weV9vYmpfdHlwZSA9IHB5X29ial90eXBlOworICBleHRfb2JqZWN0LT5t YXRjaF9tZXRob2QgPSBtZXRob2Q7CisKKyAgUHlfWElOQ1JFRiAoZXh0X29i amVjdC0+b2JqZWN0KTsKKyAgUHlfWElOQ1JFRiAoZXh0X29iamVjdC0+bWF0 Y2hfcHlfb2JqX3R5cGUpOworCisgIHJldHVybiBuZXdfZXh0X2Z1bmN0aW9u ICgmcHl0aG9uX2V4dF9sYW5nLCAxLCBleHRfb2JqZWN0KTsKK30KKworLyog SW5pdGlhbGl6ZXMgdGhlIFB5dGhvbiBkZWJ1ZyBtZXRob2Qgc3VwcG9ydC4g ICovCisKK2ludAorZ2RicHlfaW5pdGlhbGl6ZV9kZWJ1Z21ldGhvZHMgKHZv aWQpCit7CisgIHJlZ2lzdGVyX2V4dF9sYW5nICgmcHl0aG9uX2V4dF9sYW5n KTsKKworICBtYXRjaF9tZXRob2RfcHlzdHJpbmcgPSBQeVN0cmluZ19Gcm9t U3RyaW5nIChtYXRjaF9tZXRob2RfbmFtZSk7CisgIGlmIChtYXRjaF9tZXRo b2RfcHlzdHJpbmcgPT0gTlVMTCkKKyAgICByZXR1cm4gLTE7CisKKyAgaW52 b2tlX21ldGhvZF9weXN0cmluZyA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKGlu dm9rZV9tZXRob2RfbmFtZSk7CisgIGlmIChpbnZva2VfbWV0aG9kX3B5c3Ry aW5nID09IE5VTEwpCisgICAgcmV0dXJuIC0xOworCisgIGdldF9hcmd0eXBl c19tZXRob2RfcHlzdHJpbmcgPSBQeVN0cmluZ19Gcm9tU3RyaW5nIChnZXRf YXJndHlwZXNfbWV0aG9kX25hbWUpOworICBpZiAoZ2V0X2FyZ3R5cGVzX21l dGhvZF9weXN0cmluZyA9PSBOVUxMKQorICAgIHJldHVybiAtMTsKKworICBy ZXR1cm4gMTsKK30KKworI2VuZGlmIC8qIEhBVkVfUFlUSE9OICovCmRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYyBiL2dkYi9weXRob24v cHktb2JqZmlsZS5jCmluZGV4IDliYmQ0YzIuLjRhYTBhMWEgMTAwNjQ0Ci0t LSBhL2dkYi9weXRob24vcHktb2JqZmlsZS5jCisrKyBiL2dkYi9weXRob24v cHktb2JqZmlsZS5jCkBAIC0zNyw2ICszNyw5IEBAIHR5cGVkZWYgc3RydWN0 CiAgIFB5T2JqZWN0ICpmcmFtZV9maWx0ZXJzOwogICAvKiBUaGUgdHlwZS1w cmludGVyIGxpc3QuICAqLwogICBQeU9iamVjdCAqdHlwZV9wcmludGVyczsK KworICAvKiBUaGUgZGVidWcgbWV0aG9kIGxpc3QuICAqLworICBQeU9iamVj dCAqZGVidWdfbWV0aG9kczsKIH0gb2JqZmlsZV9vYmplY3Q7CiAKIHN0YXRp YyBQeVR5cGVPYmplY3Qgb2JqZmlsZV9vYmplY3RfdHlwZQpAQCAtNjcsNiAr NzAsNyBAQCBvYmpmcHlfZGVhbGxvYyAoUHlPYmplY3QgKm8pCiAgIFB5X1hE RUNSRUYgKHNlbGYtPnByaW50ZXJzKTsKICAgUHlfWERFQ1JFRiAoc2VsZi0+ ZnJhbWVfZmlsdGVycyk7CiAgIFB5X1hERUNSRUYgKHNlbGYtPnR5cGVfcHJp bnRlcnMpOworICBQeV9YREVDUkVGIChzZWxmLT5kZWJ1Z19tZXRob2RzKTsK ICAgUHlfVFlQRSAoc2VsZiktPnRwX2ZyZWUgKHNlbGYpOwogfQogCkBAIC05 OSw2ICsxMDMsMTMgQEAgb2JqZnB5X25ldyAoUHlUeXBlT2JqZWN0ICp0eXBl LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzKQogCSAgUHlf REVDUkVGIChzZWxmKTsKIAkgIHJldHVybiBOVUxMOwogCX0KKworICAgICAg c2VsZi0+ZGVidWdfbWV0aG9kcyA9IFB5TGlzdF9OZXcgKDApOworICAgICAg aWYgKHNlbGYtPmRlYnVnX21ldGhvZHMgPT0gTlVMTCkKKwl7CisJICBQeV9E RUNSRUYgKHNlbGYpOworCSAgcmV0dXJuIE5VTEw7CisJfQogICAgIH0KICAg cmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwogfQpAQCAtMTkzLDYgKzIwNCwx NyBAQCBvYmpmcHlfZ2V0X3R5cGVfcHJpbnRlcnMgKFB5T2JqZWN0ICpvLCB2 b2lkICppZ25vcmUpCiAgIHJldHVybiBzZWxmLT50eXBlX3ByaW50ZXJzOwog fQogCisvKiBHZXQgdGhlICdkZWJ1Z19tZXRob2RzJyBhdHRyaWJ1dGUuICAq LworCitQeU9iamVjdCAqCitvYmpmcHlfZ2V0X2RlYnVnX21ldGhvZHMgKFB5 T2JqZWN0ICpvLCB2b2lkICppZ25vcmUpCit7CisgIG9iamZpbGVfb2JqZWN0 ICpzZWxmID0gKG9iamZpbGVfb2JqZWN0ICopIG87CisKKyAgUHlfSU5DUkVG IChzZWxmLT5kZWJ1Z19tZXRob2RzKTsKKyAgcmV0dXJuIHNlbGYtPmRlYnVn X21ldGhvZHM7Cit9CisKIC8qIFNldCB0aGUgJ3R5cGVfcHJpbnRlcnMnIGF0 dHJpYnV0ZS4gICovCiAKIHN0YXRpYyBpbnQKQEAgLTI5Miw2ICszMTQsMTMg QEAgb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCiAJICAgICAgcmV0dXJuIE5VTEw7CiAJICAgIH0KIAorCSAg b2JqZWN0LT5kZWJ1Z19tZXRob2RzID0gUHlMaXN0X05ldyAoMCk7CisJICBp ZiAob2JqZWN0LT5kZWJ1Z19tZXRob2RzID09IE5VTEwpCisJICAgIHsKKwkg ICAgICBQeV9ERUNSRUYgKG9iamVjdCk7CisJICAgICAgcmV0dXJuIE5VTEw7 CisJICAgIH0KKwogCSAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgb2Jq ZnB5X29iamZpbGVfZGF0YV9rZXksIG9iamVjdCk7CiAJfQogICAgIH0KQEAg LTMzMyw2ICszNjIsOCBAQCBzdGF0aWMgUHlHZXRTZXREZWYgb2JqZmlsZV9n ZXRzZXRbXSA9CiAgICAgb2JqZnB5X3NldF9mcmFtZV9maWx0ZXJzLCAiRnJh bWUgRmlsdGVycy4iLCBOVUxMIH0sCiAgIHsgInR5cGVfcHJpbnRlcnMiLCBv YmpmcHlfZ2V0X3R5cGVfcHJpbnRlcnMsIG9iamZweV9zZXRfdHlwZV9wcmlu dGVycywKICAgICAiVHlwZSBwcmludGVycy4iLCBOVUxMIH0sCisgIHsgImRl YnVnX21ldGhvZHMiLCBvYmpmcHlfZ2V0X2RlYnVnX21ldGhvZHMsIE5VTEws CisgICAgIkRlYnVnIG1ldGhvZHMuIiwgTlVMTCB9LAogICB7IE5VTEwgfQog fTsKIApkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYyBi L2dkYi9weXRob24vcHktcHJvZ3NwYWNlLmMKaW5kZXggOTEwYzZhMy4uZDQy NTE1OSAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwor KysgYi9nZGIvcHl0aG9uL3B5LXByb2dzcGFjZS5jCkBAIC0zOSw2ICszOSw5 IEBAIHR5cGVkZWYgc3RydWN0CiAgIFB5T2JqZWN0ICpmcmFtZV9maWx0ZXJz OwogICAvKiBUaGUgdHlwZS1wcmludGVyIGxpc3QuICAqLwogICBQeU9iamVj dCAqdHlwZV9wcmludGVyczsKKworICAvKiBUaGUgZGVidWcgbWV0aG9kIGxp c3QuICAqLworICBQeU9iamVjdCAqZGVidWdfbWV0aG9kczsKIH0gcHNwYWNl X29iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwc3BhY2Vfb2JqZWN0 X3R5cGUKQEAgLTc1LDYgKzc4LDcgQEAgcHNweV9kZWFsbG9jIChQeU9iamVj dCAqc2VsZikKICAgUHlfWERFQ1JFRiAocHNfc2VsZi0+cHJpbnRlcnMpOwog ICBQeV9YREVDUkVGIChwc19zZWxmLT5mcmFtZV9maWx0ZXJzKTsKICAgUHlf WERFQ1JFRiAocHNfc2VsZi0+dHlwZV9wcmludGVycyk7CisgIFB5X1hERUNS RUYgKHBzX3NlbGYtPmRlYnVnX21ldGhvZHMpOwogICBQeV9UWVBFIChzZWxm KS0+dHBfZnJlZSAoc2VsZik7CiB9CiAKQEAgLTEwNyw2ICsxMTEsMTMgQEAg cHNweV9uZXcgKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3Ms IFB5T2JqZWN0ICprZXl3b3JkcykKIAkgIFB5X0RFQ1JFRiAoc2VsZik7CiAJ ICByZXR1cm4gTlVMTDsKIAl9CisKKyAgICAgIHNlbGYtPmRlYnVnX21ldGhv ZHMgPSBQeUxpc3RfTmV3ICgwKTsKKyAgICAgIGlmIChzZWxmLT5kZWJ1Z19t ZXRob2RzID09IE5VTEwpCisJeworCSAgUHlfREVDUkVGIChzZWxmKTsKKwkg IHJldHVybiBOVUxMOworCX0KICAgICB9CiAgIHJldHVybiAoUHlPYmplY3Qg Kikgc2VsZjsKIH0KQEAgLTIwMSw2ICsyMTIsMTcgQEAgcHNweV9nZXRfdHlw ZV9wcmludGVycyAoUHlPYmplY3QgKm8sIHZvaWQgKmlnbm9yZSkKICAgcmV0 dXJuIHNlbGYtPnR5cGVfcHJpbnRlcnM7CiB9CiAKKy8qIEdldCB0aGUgJ2Rl YnVnX21ldGhvZHMnIGF0dHJpYnV0ZS4gICovCisKK1B5T2JqZWN0ICoKK3Bz cHlfZ2V0X2RlYnVnX21ldGhvZHMgKFB5T2JqZWN0ICpvLCB2b2lkICppZ25v cmUpCit7CisgIHBzcGFjZV9vYmplY3QgKnNlbGYgPSAocHNwYWNlX29iamVj dCAqKSBvOworCisgIFB5X0lOQ1JFRiAoc2VsZi0+ZGVidWdfbWV0aG9kcyk7 CisgIHJldHVybiBzZWxmLT5kZWJ1Z19tZXRob2RzOworfQorCiAvKiBTZXQg dGhlICd0eXBlX3ByaW50ZXJzJyBhdHRyaWJ1dGUuICAqLwogCiBzdGF0aWMg aW50CkBAIC0yODgsNiArMzEwLDEzIEBAIHBzcGFjZV90b19wc3BhY2Vfb2Jq ZWN0IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQogCSAgICAgIHJl dHVybiBOVUxMOwogCSAgICB9CiAKKwkgIG9iamVjdC0+ZGVidWdfbWV0aG9k cyA9IFB5TGlzdF9OZXcgKDApOworCSAgaWYgKG9iamVjdC0+ZGVidWdfbWV0 aG9kcyA9PSBOVUxMKQorCSAgICB7CisJICAgICAgUHlfREVDUkVGIChvYmpl Y3QpOworCSAgICAgIHJldHVybiBOVUxMOworCSAgICB9CisKIAkgIHNldF9w cm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgcHNweV9wc3BhY2VfZGF0YV9r ZXksIG9iamVjdCk7CiAJfQogICAgIH0KQEAgLTMyMCw2ICszNDksOCBAQCBz dGF0aWMgUHlHZXRTZXREZWYgcHNwYWNlX2dldHNldFtdID0KICAgICAiRnJh bWUgZmlsdGVycy4iLCBOVUxMIH0sCiAgIHsgInR5cGVfcHJpbnRlcnMiLCBw c3B5X2dldF90eXBlX3ByaW50ZXJzLCBwc3B5X3NldF90eXBlX3ByaW50ZXJz LAogICAgICJUeXBlIHByaW50ZXJzLiIsIE5VTEwgfSwKKyAgeyAiZGVidWdf bWV0aG9kcyIsIHBzcHlfZ2V0X2RlYnVnX21ldGhvZHMsIE5VTEwsCisgICAg IkRlYnVnIG1ldGhvZHMuIiwgTlVMTCB9LAogICB7IE5VTEwgfQogfTsKIApk aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaCBiL2dk Yi9weXRob24vcHl0aG9uLWludGVybmFsLmgKaW5kZXggN2Q4YzRhZC4uNjJl YjQ5YiAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwu aAorKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCkBAIC0zMTYs MTEgKzMxNiwxMyBAQCBQeU9iamVjdCAqcHNwYWNlX3RvX3BzcGFjZV9vYmpl Y3QgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICopCiAgICAgQ1BZQ0hFQ0tFUl9S RVRVUk5TX0JPUlJPV0VEX1JFRjsKIFB5T2JqZWN0ICpwc3B5X2dldF9wcmlu dGVycyAoUHlPYmplY3QgKiwgdm9pZCAqKTsKIFB5T2JqZWN0ICpwc3B5X2dl dF9mcmFtZV9maWx0ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOworUHlPYmpl Y3QgKnBzcHlfZ2V0X2RlYnVnX21ldGhvZHMgKFB5T2JqZWN0ICosIHZvaWQg Kik7CiAKIFB5T2JqZWN0ICpvYmpmaWxlX3RvX29iamZpbGVfb2JqZWN0IChz dHJ1Y3Qgb2JqZmlsZSAqKQogICAgIENQWUNIRUNLRVJfUkVUVVJOU19CT1JS T1dFRF9SRUY7CiBQeU9iamVjdCAqb2JqZnB5X2dldF9wcmludGVycyAoUHlP YmplY3QgKiwgdm9pZCAqKTsKIFB5T2JqZWN0ICpvYmpmcHlfZ2V0X2ZyYW1l X2ZpbHRlcnMgKFB5T2JqZWN0ICosIHZvaWQgKik7CitQeU9iamVjdCAqb2Jq ZnB5X2dldF9kZWJ1Z19tZXRob2RzIChQeU9iamVjdCAqLCB2b2lkICopOwog CiBQeU9iamVjdCAqZ2RiYXJjaF90b19hcmNoX29iamVjdCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpOwogCkBAIC00MDEsNiArNDAzLDggQEAgaW50IGdk YnB5X2luaXRpYWxpemVfbmV3X29iamZpbGVfZXZlbnQgKHZvaWQpCiAgIENQ WUNIRUNLRVJfTkVHQVRJVkVfUkVTVUxUX1NFVFNfRVhDRVBUSU9OOwogaW50 IGdkYnB5X2luaXRpYWxpemVfYXJjaCAodm9pZCkKICAgQ1BZQ0hFQ0tFUl9O RUdBVElWRV9SRVNVTFRfU0VUU19FWENFUFRJT047CitpbnQgZ2RicHlfaW5p dGlhbGl6ZV9kZWJ1Z21ldGhvZHMgKHZvaWQpCisgIENQWUNIRUNLRVJfTkVH QVRJVkVfUkVTVUxUX1NFVFNfRVhDRVBUSU9OOwogCiBzdHJ1Y3QgY2xlYW51 cCAqbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoUHlPYmplY3QgKnB5KTsKIHN0 cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfcHlfeGRlY3JlZiAoUHlPYmpl Y3QgKnB5KTsKZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMgYi9n ZGIvcHl0aG9uL3B5dGhvbi5jCmluZGV4IDdjZGY4YTcuLmY1YTAxMzIgMTAw NjQ0Ci0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKKysrIGIvZ2RiL3B5dGhv bi9weXRob24uYwpAQCAtMTY4Nyw3ICsxNjg3LDggQEAgbWVzc2FnZSA9PSBh biBlcnJvciBtZXNzYWdlIHdpdGhvdXQgYSBzdGFjayB3aWxsIGJlIHByaW50 ZWQuIiksCiAgICAgICB8fCBnZGJweV9pbml0aWFsaXplX2V4aXRlZF9ldmVu dCAoKSA8IDAKICAgICAgIHx8IGdkYnB5X2luaXRpYWxpemVfdGhyZWFkX2V2 ZW50ICgpIDwgMAogICAgICAgfHwgZ2RicHlfaW5pdGlhbGl6ZV9uZXdfb2Jq ZmlsZV9ldmVudCAoKSAgPCAwCi0gICAgICB8fCBnZGJweV9pbml0aWFsaXpl X2FyY2ggKCkgPCAwKQorICAgICAgfHwgZ2RicHlfaW5pdGlhbGl6ZV9hcmNo ICgpIDwgMAorICAgICAgfHwgZ2RicHlfaW5pdGlhbGl6ZV9kZWJ1Z21ldGhv ZHMgKCkgPCAwKQogICAgIGdvdG8gZmFpbDsKIAogICBvYnNlcnZlcl9hdHRh Y2hfYmVmb3JlX3Byb21wdCAoYmVmb3JlX3Byb21wdF9ob29rKTsKZGlmZiAt LWdpdCBhL2dkYi92YWxhcml0aC5jIGIvZ2RiL3ZhbGFyaXRoLmMKaW5kZXgg MThjMTRmYy4uZjEwNTIwMCAxMDA2NDQKLS0tIGEvZ2RiL3ZhbGFyaXRoLmMK KysrIGIvZ2RiL3ZhbGFyaXRoLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs dWRlIDxtYXRoLmg+CiAjaW5jbHVkZSAiaW5mY2FsbC5oIgogI2luY2x1ZGUg ImV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJleHQtZnVuY3Rpb24uaCIKIAog LyogRGVmaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBDIG9wZXJhdG9yICcvJyB0 cnVuY2F0ZXMgdG93YXJkcyB6ZXJvIGZvcgogICAgZGlmZmVyZW50bHkgc2ln bmVkIG9wZXJhbmRzICh0cnVuY2F0aW9uIGRpcmVjdGlvbiBpcyB1bmRlZmlu ZWQgaW4gQykuICAqLwpAQCAtMjg1LDIxICsyODYsMjcgQEAgdW5vcF91c2Vy X2RlZmluZWRfcCAoZW51bSBleHBfb3Bjb2RlIG9wLCBzdHJ1Y3QgdmFsdWUg KmFyZzEpCiAgICBleHBsaWNpdGx5LCBhbmQgcGVyZm9ybSBjb3JyZWN0IG92 ZXJsb2FkIHJlc29sdXRpb24gaW4gYWxsIG9mIHRoZSBhYm92ZQogICAgc2l0 dWF0aW9ucyBvciBjb21iaW5hdGlvbnMgdGhlcmVvZi4gICovCiAKLXN0YXRp YyBzdHJ1Y3QgdmFsdWUgKgorc3RhdGljIHZvaWQKIHZhbHVlX3VzZXJfZGVm aW5lZF9jcHBfb3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywg Y2hhciAqb3BlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdmFsdWUgKipzcmNfZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnN0YXRpY19tZW1mdW5jcCkK IHsKIAogICBzdHJ1Y3Qgc3ltYm9sICpzeW1wID0gTlVMTDsKICAgc3RydWN0 IHZhbHVlICp2YWxwID0gTlVMTDsKKyAgc3RydWN0IGV4dF9mbl9kZXNjcmlw dG9yICpleHRfZm5wID0gTlVMTDsKIAogICBmaW5kX292ZXJsb2FkX21hdGNo IChhcmdzLCBuYXJncywgb3BlcmF0b3IsIEJPVEggLyogY291bGQgYmUgbWV0 aG9kICovLAogICAgICAgICAgICAgICAgICAgICAgICAmYXJnc1swXSAvKiBv YmpwICovLAogICAgICAgICAgICAgICAgICAgICAgICBOVUxMIC8qIHBhc3Mg TlVMTCBzeW1ib2wgc2luY2Ugc3ltYm9sIGlzIHVua25vd24gKi8sCi0gICAg ICAgICAgICAgICAgICAgICAgICZ2YWxwLCAmc3ltcCwgc3RhdGljX21lbWZ1 bmNwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgJnZhbHAsICZzeW1w LCAmZXh0X2ZucCwgc3RhdGljX21lbWZ1bmNwLCAwKTsKIAogICBpZiAodmFs cCkKLSAgICByZXR1cm4gdmFscDsKKyAgICB7CisgICAgICAqc3JjX2ZuID0g dmFscDsKKyAgICAgIHJldHVybjsKKyAgICB9CiAKICAgaWYgKHN5bXApCiAg ICAgewpAQCAtMzA3LDcgKzMxNCwxNCBAQCB2YWx1ZV91c2VyX2RlZmluZWRf Y3BwX29wIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGNoYXIg Km9wZXJhdG9yLAogICAgICAgICAgZXhwZWN0IGEgcmVmZXJlbmNlIGFzIGl0 cyBmaXJzdCBhcmd1bWVudAogICAgICAgICAgcmF0aGVyIHRoZSBleHBsaWNp dCBzdHJ1Y3R1cmUuICAqLwogICAgICAgYXJnc1swXSA9IHZhbHVlX2luZCAo YXJnc1swXSk7Ci0gICAgICByZXR1cm4gdmFsdWVfb2ZfdmFyaWFibGUgKHN5 bXAsIDApOworICAgICAgKnNyY19mbiA9IHZhbHVlX29mX3ZhcmlhYmxlIChz eW1wLCAwKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgaWYgKGV4dF9m bnApCisgICAgeworICAgICAgKmV4dF9mbiA9IGV4dF9mbnA7CisgICAgICBy ZXR1cm47CiAgICAgfQogCiAgIGVycm9yIChfKCJDb3VsZCBub3QgZmluZCAl cy4iKSwgb3BlcmF0b3IpOwpAQCAtMzE2LDE5ICszMzAsMjIgQEAgdmFsdWVf dXNlcl9kZWZpbmVkX2NwcF9vcCAoc3RydWN0IHZhbHVlICoqYXJncywgaW50 IG5hcmdzLCBjaGFyICpvcGVyYXRvciwKIC8qIExvb2t1cCB1c2VyIGRlZmlu ZWQgb3BlcmF0b3IgTkFNRS4gIFJldHVybiBhIHZhbHVlIHJlcHJlc2VudGlu ZyB0aGUKICAgIGZ1bmN0aW9uLCBvdGhlcndpc2UgcmV0dXJuIE5VTEwuICAq LwogCi1zdGF0aWMgc3RydWN0IHZhbHVlICoKK3N0YXRpYyB2b2lkCiB2YWx1 ZV91c2VyX2RlZmluZWRfb3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIHN0cnVj dCB2YWx1ZSAqKmFyZ3MsIGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAg ICAgICAgIGludCAqc3RhdGljX21lbWZ1bmNwLCBpbnQgbmFyZ3MpCisgICAg ICAgICAgICAgICAgICAgICAgIGludCAqc3RhdGljX21lbWZ1bmNwLCBpbnQg bmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAq KnNyY19mbiwgc3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICoqZXh0X2ZuKQog ewogICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdCA9IE5VTEw7CiAKICAgaWYgKGN1 cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVz KQotICAgIHJlc3VsdCA9IHZhbHVlX3VzZXJfZGVmaW5lZF9jcHBfb3AgKGFy Z3MsIG5hcmdzLCBuYW1lLCBzdGF0aWNfbWVtZnVuY3ApOworICAgIHZhbHVl X3VzZXJfZGVmaW5lZF9jcHBfb3AgKGFyZ3MsIG5hcmdzLCBuYW1lLCBzcmNf Zm4sIGV4dF9mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGF0aWNfbWVtZnVuY3ApOwogICBlbHNlCi0gICAgcmVzdWx0ID0gdmFsdWVf c3RydWN0X2VsdCAoYXJncCwgYXJncywgbmFtZSwgc3RhdGljX21lbWZ1bmNw LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJ1Y3R1cmUi KTsKLQotICByZXR1cm4gcmVzdWx0OworICAgIHsKKyAgICAgIHJlc3VsdCA9 IHZhbHVlX3N0cnVjdF9lbHQgKGFyZ3AsIGFyZ3MsIG5hbWUsIHN0YXRpY19t ZW1mdW5jcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz dHJ1Y3R1cmUiKTsKKyAgICAgICpzcmNfZm4gPSByZXN1bHQ7CisgICAgfQog fQogCiAvKiBXZSBrbm93IGVpdGhlciBhcmcxIG9yIGFyZzIgaXMgYSBzdHJ1 Y3R1cmUsIHNvIHRyeSB0byBmaW5kIHRoZSByaWdodApAQCAtMzQ1LDYgKzM2 Miw3IEBAIHZhbHVlX3hfYmlub3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3Ry dWN0IHZhbHVlICphcmcyLCBlbnVtIGV4cF9vcGNvZGUgb3AsCiAJICAgICAg IGVudW0gZXhwX29wY29kZSBvdGhlcm9wLCBlbnVtIG5vc2lkZSBub3NpZGUp CiB7CiAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3ZlYzsKKyAgc3RydWN0IGV4dF9m bl9kZXNjcmlwdG9yICpleHRfZm4gPSBOVUxMOwogICBjaGFyICpwdHI7CiAg IGNoYXIgdHN0clsxM107CiAgIGludCBzdGF0aWNfbWVtZnVuY3A7CkBAIC0z NTksNiArMzc3LDcgQEAgdmFsdWVfeF9iaW5vcCAoc3RydWN0IHZhbHVlICph cmcxLCBzdHJ1Y3QgdmFsdWUgKmFyZzIsIGVudW0gZXhwX29wY29kZSBvcCwK ICAgICBlcnJvciAoXygiQ2FuJ3QgZG8gdGhhdCBiaW5hcnkgb3Agb24gdGhh dCB0eXBlIikpOwkvKiBGSVhNRSBiZSBleHBsaWNpdCAqLwogCiAgIGFyZ3Zl YyA9IChzdHJ1Y3QgdmFsdWUgKiopIGFsbG9jYSAoc2l6ZW9mIChzdHJ1Y3Qg dmFsdWUgKikgKiA0KTsKKyAgYXJndmVjWzBdID0gTlVMTDsKICAgYXJndmVj WzFdID0gdmFsdWVfYWRkciAoYXJnMSk7CiAgIGFyZ3ZlY1syXSA9IGFyZzI7 CiAgIGFyZ3ZlY1szXSA9IDA7CkBAIC00NzEsOCArNDkwLDggQEAgdmFsdWVf eF9iaW5vcCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QgdmFsdWUgKmFy ZzIsIGVudW0gZXhwX29wY29kZSBvcCwKICAgICAgIGVycm9yIChfKCJJbnZh bGlkIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWVkLiIpKTsKICAgICB9CiAK LSAgYXJndmVjWzBdID0gdmFsdWVfdXNlcl9kZWZpbmVkX29wICgmYXJnMSwg YXJndmVjICsgMSwgdHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc3RhdGljX21lbWZ1bmNwLCAyKTsKKyAgdmFsdWVfdXNl cl9kZWZpbmVkX29wICgmYXJnMSwgYXJndmVjICsgMSwgdHN0ciwgJnN0YXRp Y19tZW1mdW5jcCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmYXJn dmVjWzBdLCAmZXh0X2ZuKTsKIAogICBpZiAoYXJndmVjWzBdKQogICAgIHsK QEAgLTQ5Miw2ICs1MTEsMTkgQEAgdmFsdWVfeF9iaW5vcCAoc3RydWN0IHZh bHVlICphcmcxLCBzdHJ1Y3QgdmFsdWUgKmFyZzIsIGVudW0gZXhwX29wY29k ZSBvcCwKICAgICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGFy Z3ZlY1swXSwgMiAtIHN0YXRpY19tZW1mdW5jcCwKIAkJCQkgICAgYXJndmVj ICsgMSk7CiAgICAgfQorICBpZiAoZXh0X2ZuKQorICAgIHsKKyAgICAgIGlm IChleHRfZm5faXNfbWV0aG9kIChleHRfZm4pKQorICAgICAgICB7CisgICAg ICAgICAgc3RydWN0IHZhbHVlICpyZXRfdmFsID0gZXh0X2ZuX2ludm9rZV9t ZXRob2QgKGV4dF9mbiwgYXJnMSwgJmFyZzIsIDEpOworCisgICAgICAgICAg aWYgKHJldF92YWwgPT0gTlVMTCkKKyAgICAgICAgICAgICAgZXJyb3IgKF8o IkVycm9yIGludm9raW5nIGRlYnVnIG1ldGhvZCBpbXBsZW1lbnRhdGlvbiBm b3IgIgorICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kICVzIiksIHRz dHIpOworCisgICAgICAgICAgcmV0dXJuIHJldF92YWw7CisgICAgICAgIH0K KyAgICB9CiAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCiAgICAg ICAgICAgICAgICBfKCJtZW1iZXIgZnVuY3Rpb24gJXMgbm90IGZvdW5kIiks IHRzdHIpOwogI2lmZGVmIGxpbnQKQEAgLTUxMCw2ICs1NDIsNyBAQCB2YWx1 ZV94X3Vub3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBleHBfb3Bjb2Rl IG9wLCBlbnVtIG5vc2lkZSBub3NpZGUpCiB7CiAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodmFsdWVfdHlwZSAoYXJnMSkp OwogICBzdHJ1Y3QgdmFsdWUgKiphcmd2ZWM7CisgIHN0cnVjdCBleHRfZm5f ZGVzY3JpcHRvciAqZXh0X2ZuOwogICBjaGFyICpwdHI7CiAgIGNoYXIgdHN0 clsxM10sIG1hbmdsZV90c3RyWzEzXTsKICAgaW50IHN0YXRpY19tZW1mdW5j cCwgbmFyZ3M7CkBAIC01MjMsNiArNTU2LDcgQEAgdmFsdWVfeF91bm9wIChz dHJ1Y3QgdmFsdWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwgZW51bSBu b3NpZGUgbm9zaWRlKQogICAgIGVycm9yIChfKCJDYW4ndCBkbyB0aGF0IHVu YXJ5IG9wIG9uIHRoYXQgdHlwZSIpKTsJLyogRklYTUUgYmUgZXhwbGljaXQg Ki8KIAogICBhcmd2ZWMgPSAoc3RydWN0IHZhbHVlICoqKSBhbGxvY2EgKHNp emVvZiAoc3RydWN0IHZhbHVlICopICogNCk7CisgIGFyZ3ZlY1swXSA9IE5V TEw7CiAgIGFyZ3ZlY1sxXSA9IHZhbHVlX2FkZHIgKGFyZzEpOwogICBhcmd2 ZWNbMl0gPSAwOwogCkBAIC01NzQsOCArNjA4LDggQEAgdmFsdWVfeF91bm9w IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwgZW51 bSBub3NpZGUgbm9zaWRlKQogICAgICAgZXJyb3IgKF8oIkludmFsaWQgdW5h cnkgb3BlcmF0aW9uIHNwZWNpZmllZC4iKSk7CiAgICAgfQogCi0gIGFyZ3Zl Y1swXSA9IHZhbHVlX3VzZXJfZGVmaW5lZF9vcCAoJmFyZzEsIGFyZ3ZlYyAr IDEsIHRzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnN0YXRpY19tZW1mdW5jcCwgbmFyZ3MpOworICB2YWx1ZV91c2VyX2Rl ZmluZWRfb3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLCAmc3RhdGljX21l bWZ1bmNwLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAmYXJn dmVjWzBdLCAmZXh0X2ZuKTsKIAogICBpZiAoYXJndmVjWzBdKQogICAgIHsK QEAgLTU5NCw2ICs2MjgsMTkgQEAgdmFsdWVfeF91bm9wIChzdHJ1Y3QgdmFs dWUgKmFyZzEsIGVudW0gZXhwX29wY29kZSBvcCwgZW51bSBub3NpZGUgbm9z aWRlKQogCSAgcmV0dXJuIHZhbHVlX3plcm8gKHJldHVybl90eXBlLCBWQUxV RV9MVkFMIChhcmcxKSk7CiAJfQogICAgICAgcmV0dXJuIGNhbGxfZnVuY3Rp b25fYnlfaGFuZCAoYXJndmVjWzBdLCBuYXJncywgYXJndmVjICsgMSk7Cisg ICAgfSAKKyAgaWYgKGV4dF9mbikKKyAgICB7CisgICAgICBpZiAoZXh0X2Zu X2lzX21ldGhvZCAoZXh0X2ZuKSkKKyAgICAgICAgeworICAgICAgICAgIHN0 cnVjdCB2YWx1ZSAqcmV0X3ZhbCA9IGV4dF9mbl9pbnZva2VfbWV0aG9kIChl eHRfZm4sIGFyZzEsIE5VTEwsIDApOworCisgICAgICAgICAgaWYgKHJldF92 YWwgPT0gTlVMTCkKKyAgICAgICAgICAgICAgZXJyb3IgKF8oIkVycm9yIGlu dm9raW5nIGRlYnVnIG1ldGhvZCBpbXBsZW1lbnRhdGlvbiBmb3IgIgorICAg ICAgICAgICAgICAgICAgICAgICAibWV0aG9kICVzIiksIHRzdHIpOworCisg ICAgICAgICAgcmV0dXJuIHJldF92YWw7CisgICAgICAgIH0KICAgICB9CiAg IHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCiAgICAgICAgICAgICAg ICBfKCJtZW1iZXIgZnVuY3Rpb24gJXMgbm90IGZvdW5kIiksIHRzdHIpOwpk aWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCmluZGV4 IDhiZmY2ODYuLmUyNTgwZTQgMTAwNjQ0Ci0tLSBhL2dkYi92YWxvcHMuYwor KysgYi9nZGIvdmFsb3BzLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl ICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgInN5bXRhYi5oIgogI2luY2x1ZGUg ImV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJleHQtZnVuY3Rpb24uaCIKIAog ZXh0ZXJuIHVuc2lnbmVkIGludCBvdmVybG9hZF9kZWJ1ZzsKIC8qIExvY2Fs IGZ1bmN0aW9ucy4gICovCkBAIC03Miw4ICs3Myw4IEBAIGludCBmaW5kX29s b2FkX2NoYW1wX25hbWVzcGFjZV9sb29wIChzdHJ1Y3QgdmFsdWUgKiosIGlu dCwKIAkJCQkgICAgIGNvbnN0IGludCBub19hZGwpOwogCiBzdGF0aWMgaW50 IGZpbmRfb2xvYWRfY2hhbXAgKHN0cnVjdCB2YWx1ZSAqKiwgaW50LCBpbnQs IGludCwKLQkJCSAgICAgc3RydWN0IGZuX2ZpZWxkICosIHN0cnVjdCBzeW1i b2wgKiosCi0JCQkgICAgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqKik7CisJ CQkgICAgIHN0cnVjdCBmbl9maWVsZCAqLCBWRUMgKGV4dF9mbl9kZXNjcmlw dG9yX3ApICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBzeW1ib2wgKiosIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqKik7CiAKIHN0 YXRpYyBpbnQgb2xvYWRfbWV0aG9kX3N0YXRpYyAoaW50LCBzdHJ1Y3QgZm5f ZmllbGQgKiwgaW50KTsKIApAQCAtMTAwLDkgKzEwMSwxMCBAQCBzdGF0aWMg Q09SRV9BRERSIGFsbG9jYXRlX3NwYWNlX2luX2luZmVyaW9yIChpbnQpOwog CiBzdGF0aWMgc3RydWN0IHZhbHVlICpjYXN0X2ludG9fY29tcGxleCAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogCi1zdGF0aWMgc3RydWN0 IGZuX2ZpZWxkICpmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKios IGNvbnN0IGNoYXIgKiwKLQkJCQkJICBpbnQsIHN0cnVjdCB0eXBlICosIGlu dCAqLAotCQkJCQkgIHN0cnVjdCB0eXBlICoqLCBpbnQgKik7CitzdGF0aWMg dm9pZCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiosIGNvbnN0 IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwg c3RydWN0IHR5cGUgKiwgc3RydWN0IGZuX2ZpZWxkICoqLCBpbnQgKiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFQyAoZXh0X2ZuX2Rlc2Ny aXB0b3JfcCkgKiosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdHlwZSAqKiwgaW50ICopOwogCiB2b2lkIF9pbml0aWFsaXplX3Zh bG9wcyAodm9pZCk7CiAKQEAgLTIyNjEsNDAgKzIyNjMsNTggQEAgdmFsdWVf c3RydWN0X2VsdCAoc3RydWN0IHZhbHVlICoqYXJncCwgc3RydWN0IHZhbHVl ICoqYXJncywKICAgICAgIG1ldGhvZCBpcyBmb3VuZC4KICAgIEJPRkZTRVQg aXMgdGhlIG9mZnNldCBvZiB0aGUgYmFzZSBzdWJvYmplY3Qgd2hlcmUgdGhl IG1ldGhvZCBpcyBmb3VuZC4gICovCiAKLXN0YXRpYyBzdHJ1Y3QgZm5fZmll bGQgKgorc3RhdGljIHZvaWQKIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2 YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKLQkJICBpbnQgb2Zm c2V0LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50ICpudW1fZm5zLAorCQkgIGlu dCBvZmZzZXQsIHN0cnVjdCB0eXBlICp0eXBlLAorICAgICAgICAgICAgICAg ICAgc3RydWN0IGZuX2ZpZWxkICoqZm5fbGlzdCwgaW50ICpudW1fZm5zLAor ICAgICAgICAgICAgICAgICAgVkVDIChleHRfZm5fZGVzY3JpcHRvcl9wKSAq KmV4dF9mbl92ZWMsCiAJCSAgc3RydWN0IHR5cGUgKipiYXNldHlwZSwgaW50 ICpib2Zmc2V0KQogewogICBpbnQgaTsKLSAgc3RydWN0IGZuX2ZpZWxkICpm OwotICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAgc3RydWN0IGZuX2ZpZWxk ICpmID0gTlVMTDsKIAotICAqbnVtX2ZucyA9IDA7CisgIENIRUNLX1RZUEVE RUYgKHR5cGUpOwogCiAgIC8qIEZpcnN0IGNoZWNrIGluIG9iamVjdCBpdHNl bGYuICAqLwotICBmb3IgKGkgPSBUWVBFX05GTl9GSUVMRFMgKHR5cGUpIC0g MTsgaSA+PSAwOyBpLS0pCi0gICAgewotICAgICAgLyogcGFpOiBGSVhNRSBX aGF0IGFib3V0IG9wZXJhdG9ycyBhbmQgdHlwZSBjb252ZXJzaW9ucz8gICov Ci0gICAgICBjb25zdCBjaGFyICpmbl9maWVsZF9uYW1lID0gVFlQRV9GTl9G SUVMRExJU1RfTkFNRSAodHlwZSwgaSk7CiAKLSAgICAgIGlmIChmbl9maWVs ZF9uYW1lICYmIChzdHJjbXBfaXcgKGZuX2ZpZWxkX25hbWUsIG1ldGhvZCkg PT0gMCkpCi0JewotCSAgaW50IGxlbiA9IFRZUEVfRk5fRklFTERMSVNUX0xF TkdUSCAodHlwZSwgaSk7Ci0JICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBUWVBF X0ZOX0ZJRUxETElTVDEgKHR5cGUsIGkpOworICBpZiAoZm5fbGlzdCAmJiAh KCpmbl9saXN0KSkKKyAgICBmb3IgKGkgPSBUWVBFX05GTl9GSUVMRFMgKHR5 cGUpIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgICB7CisgICAgICAgIC8qIHBh aTogRklYTUUgV2hhdCBhYm91dCBvcGVyYXRvcnMgYW5kIHR5cGUgY29udmVy c2lvbnM/ICAqLworICAgICAgICBjb25zdCBjaGFyICpmbl9maWVsZF9uYW1l ID0gVFlQRV9GTl9GSUVMRExJU1RfTkFNRSAodHlwZSwgaSk7CisgIAorICAg ICAgICBpZiAoZm5fZmllbGRfbmFtZSAmJiAoc3RyY21wX2l3IChmbl9maWVs ZF9uYW1lLCBtZXRob2QpID09IDApKQorICAJeworICAJICBpbnQgbGVuID0g VFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0eXBlLCBpKTsKKyAgCSAgZiA9 IFRZUEVfRk5fRklFTERMSVNUMSAodHlwZSwgaSk7CisgICAgICAgICAgKmZu X2xpc3QgPSBmOworICAKKyAgCSAgKm51bV9mbnMgPSBsZW47CisgIAkgICpi YXNldHlwZSA9IHR5cGU7CisgIAkgICpib2Zmc2V0ID0gb2Zmc2V0OworICAK KyAgCSAgLyogUmVzb2x2ZSBhbnkgc3R1YiBtZXRob2RzLiAgKi8KKyAgCSAg Y2hlY2tfc3R1Yl9tZXRob2RfZ3JvdXAgKHR5cGUsIGkpOworICAKKyAgICAg ICAgICBicmVhazsKKyAgCX0KKyAgICAgIH0KIAotCSAgKm51bV9mbnMgPSBs ZW47Ci0JICAqYmFzZXR5cGUgPSB0eXBlOwotCSAgKmJvZmZzZXQgPSBvZmZz ZXQ7CisgIGlmIChleHRfZm5fdmVjKQorICAgIHsKKyAgICAgIFZFQyAoZXh0 X2ZuX2Rlc2NyaXB0b3JfcCkgKmVmX3ZlYyA9IE5VTEwsICpuZXdfdmVjID0g TlVMTDsKIAotCSAgLyogUmVzb2x2ZSBhbnkgc3R1YiBtZXRob2RzLiAgKi8K LQkgIGNoZWNrX3N0dWJfbWV0aG9kX2dyb3VwICh0eXBlLCBpKTsKKyAgICAg IGVmX3ZlYyA9IGdldF9tYXRjaGluZ19leHRfbWV0aG9kcyAodHlwZSwgbWV0 aG9kKTsKKyAgICAgIG5ld192ZWMgPSBWRUNfbWVyZ2UgKGV4dF9mbl9kZXNj cmlwdG9yX3AsICpleHRfZm5fdmVjLCBlZl92ZWMpOwogCi0JICByZXR1cm4g ZjsKLQl9CisgICAgICBWRUNfZnJlZSAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCwg KmV4dF9mbl92ZWMpOworICAgICAgVkVDX2ZyZWUgKGV4dF9mbl9kZXNjcmlw dG9yX3AsIGVmX3ZlYyk7CisgICAgICAqZXh0X2ZuX3ZlYyA9IG5ld192ZWM7 CiAgICAgfQogCi0gIC8qIE5vdCBmb3VuZCBpbiBvYmplY3QsIGNoZWNrIGlu IGJhc2Ugc3Vib2JqZWN0cy4gICovCisgIC8qIElmIHNvdXJjZSBtZXRob2Rz IGFyZSBub3QgZm91bmQgaW4gY3VycmVudCBjbGFzcywgbG9vayBmb3IgdGhl bSBpbiB0aGUKKyAgICAgYmFzZSBjbGFzc2VzLiAgV2UgaGF2ZSB0byBnbyB0 aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgdG8gZ2F0aGVyIGV4dGVuc2lvbgor ICAgICBtZXRob2RzIGFueXdheS4gICovCiAgIGZvciAoaSA9IFRZUEVfTl9C QVNFQ0xBU1NFUyAodHlwZSkgLSAxOyBpID49IDA7IGktLSkKICAgICB7CiAg ICAgICBpbnQgYmFzZV9vZmZzZXQ7CkBAIC0yMzExLDEzICsyMzMxLDExIEBA IGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0 IGNoYXIgKm1ldGhvZCwKIAl7CiAJICBiYXNlX29mZnNldCA9IFRZUEVfQkFT RUNMQVNTX0JJVFBPUyAodHlwZSwgaSkgLyA4OwogCX0KLSAgICAgIGYgPSBm aW5kX21ldGhvZF9saXN0IChhcmdwLCBtZXRob2QsIGJhc2Vfb2Zmc2V0ICsg b2Zmc2V0LAotCQkJICAgIFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSwgbnVt X2ZucywgCi0JCQkgICAgYmFzZXR5cGUsIGJvZmZzZXQpOwotICAgICAgaWYg KGYpCi0JcmV0dXJuIGY7CisgICAgICAKKyAgICAgIGZpbmRfbWV0aG9kX2xp c3QgKGFyZ3AsIG1ldGhvZCwgYmFzZV9vZmZzZXQgKyBvZmZzZXQsCisgICAg ICAgICAgICAgICAgICAgICAgICBUWVBFX0JBU0VDTEFTUyAodHlwZSwgaSks IGZuX2xpc3QsIG51bV9mbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBl eHRfZm5fdmVjLCBiYXNldHlwZSwgYm9mZnNldCk7CiAgICAgfQotICByZXR1 cm4gTlVMTDsKIH0KIAogLyogUmV0dXJuIHRoZSBsaXN0IG9mIG92ZXJsb2Fk ZWQgbWV0aG9kcyBvZiBhIHNwZWNpZmllZCBuYW1lLgpAQCAtMjMzMCw5ICsy MzQ4LDExIEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFy Z3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwKICAgICAgIG1ldGhvZC4KICAgIEJP RkZTRVQgaXMgdGhlIG9mZnNldCBvZiB0aGUgYmFzZSBzdWJvYmplY3Qgd2hp Y2ggZGVmaW5lcyB0aGUgbWV0aG9kLiAgKi8KIAotc3RhdGljIHN0cnVjdCBm bl9maWVsZCAqCitzdGF0aWMgdm9pZAogdmFsdWVfZmluZF9vbG9hZF9tZXRo b2RfbGlzdCAoc3RydWN0IHZhbHVlICoqYXJncCwgY29uc3QgY2hhciAqbWV0 aG9kLAotCQkJICAgICAgaW50IG9mZnNldCwgaW50ICpudW1fZm5zLCAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQsIHN0cnVj dCBmbl9maWVsZCAqKmZuX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgKm51bV9mbnMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWRUMgKGV4dF9mbl9kZXNjcmlwdG9yX3ApICoqZXh0X2ZuX3Zl YywKIAkJCSAgICAgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9m ZnNldCkKIHsKICAgc3RydWN0IHR5cGUgKnQ7CkBAIC0yMzU0LDggKzIzNzQs MzIgQEAgdmFsdWVfZmluZF9vbG9hZF9tZXRob2RfbGlzdCAoc3RydWN0IHZh bHVlICoqYXJncCwgY29uc3QgY2hhciAqbWV0aG9kLAogICAgIGVycm9yIChf KCJBdHRlbXB0IHRvIGV4dHJhY3QgYSBjb21wb25lbnQgb2YgYSAiCiAJICAg ICAidmFsdWUgdGhhdCBpcyBub3QgYSBzdHJ1Y3Qgb3IgdW5pb24iKSk7CiAK LSAgcmV0dXJuIGZpbmRfbWV0aG9kX2xpc3QgKGFyZ3AsIG1ldGhvZCwgMCwg dCwgbnVtX2ZucywgCi0JCQkgICBiYXNldHlwZSwgYm9mZnNldCk7CisgIC8q IENsZWFyIHRoZSBsaXN0cy4gICovCisgIGlmIChmbl9saXN0KQorICAgIHsK KyAgICAgICpmbl9saXN0ID0gTlVMTDsKKyAgICAgICpudW1fZm5zID0gMDsK KyAgICB9CisgIGlmIChleHRfZm5fdmVjKQorICAgICpleHRfZm5fdmVjID0g VkVDX2FsbG9jIChleHRfZm5fZGVzY3JpcHRvcl9wLCAxKTsKKworICBmaW5k X21ldGhvZF9saXN0IChhcmdwLCBtZXRob2QsIDAsIHQsIGZuX2xpc3QsIG51 bV9mbnMsIGV4dF9mbl92ZWMsCisgICAgICAgICAgICAgICAgICAgIGJhc2V0 eXBlLCBib2Zmc2V0KTsKK30KKworc3RhdGljIHN0cnVjdCB0eXBlICoKK3Zh bHVlX2hhc19pbmRpcmVjdF9keW5hbWljX3R5cGUgKHN0cnVjdCB2YWx1ZSAq b2JqKQoreworICBzdHJ1Y3QgdHlwZSAqc3R5cGUsICpkdHlwZSwgKmR0eXBl X2luZDsKKworICBzdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VU X1RZUEUgKHZhbHVlX3R5cGUgKG9iaikpKTsKKyAgZHR5cGVfaW5kID0gdmFs dWVfcnR0aV9pbmRpcmVjdF90eXBlIChvYmosIE5VTEwsIE5VTEwsIE5VTEwp OworICBkdHlwZSA9IGR0eXBlX2luZCA/IGNoZWNrX3R5cGVkZWYgKFRZUEVf VEFSR0VUX1RZUEUgKGR0eXBlX2luZCkpIDogc3R5cGU7CisKKyAgaWYgKGNs YXNzX3R5cGVzX3NhbWVfcCAoc3R5cGUsIGR0eXBlKSkKKyAgICByZXR1cm4g TlVMTDsKKyAgZWxzZQorICAgIHJldHVybiBkdHlwZV9pbmQ7CiB9CiAKIC8q IEdpdmVuIGFuIGFycmF5IG9mIGFyZ3VtZW50cyAoQVJHUykgKHdoaWNoIGlu Y2x1ZGVzIGFuCkBAIC0yNDAzLDYgKzI0NDcsNyBAQCBmaW5kX292ZXJsb2Fk X21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAJCSAg ICAgY29uc3QgY2hhciAqbmFtZSwgZW51bSBvbG9hZF9zZWFyY2hfdHlwZSBt ZXRob2QsCiAJCSAgICAgc3RydWN0IHZhbHVlICoqb2JqcCwgc3RydWN0IHN5 bWJvbCAqZnN5bSwKIAkJICAgICBzdHJ1Y3QgdmFsdWUgKip2YWxwLCBzdHJ1 Y3Qgc3ltYm9sICoqc3ltcCwgCisgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4sCiAJCSAgICAgaW50ICpz dGF0aWNwLCBjb25zdCBpbnQgbm9fYWRsKQogewogICBzdHJ1Y3QgdmFsdWUg Km9iaiA9IChvYmpwID8gKm9ianAgOiBOVUxMKTsKQEAgLTI0MTAsMTYgKzI0 NTUsMjQgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoq YXJncywgaW50IG5hcmdzLAogICAvKiBJbmRleCBvZiBiZXN0IG92ZXJsb2Fk ZWQgZnVuY3Rpb24uICAqLwogICBpbnQgZnVuY19vbG9hZF9jaGFtcCA9IC0x OwogICBpbnQgbWV0aG9kX29sb2FkX2NoYW1wID0gLTE7CisgIGludCBzcmNf bWV0aG9kX29sb2FkX2NoYW1wID0gLTE7CisgIGludCBzcmNfbWV0aG9kX29s b2FkX2NoYW1wX2JrcCA9IC0xOworICBpbnQgZXh0X21ldGhvZF9vbG9hZF9j aGFtcCA9IC0xOworICBpbnQgc3JjX2FuZF9leHRfZXF1YWwgPSAwOwogCiAg IC8qIFRoZSBtZWFzdXJlIGZvciB0aGUgY3VycmVudCBiZXN0IG1hdGNoLiAg Ki8KICAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICptZXRob2RfYmFkbmVzcyA9 IE5VTEw7CiAgIHN0cnVjdCBiYWRuZXNzX3ZlY3RvciAqZnVuY19iYWRuZXNz ID0gTlVMTDsKKyAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICpleHRfbWV0aG9k X2JhZG5lc3MgPSBOVUxMOworICBzdHJ1Y3QgYmFkbmVzc192ZWN0b3IgKnNy Y19tZXRob2RfYmFkbmVzcyA9IE5VTEw7CiAKICAgc3RydWN0IHZhbHVlICp0 ZW1wID0gb2JqOwogICAvKiBGb3IgbWV0aG9kcywgdGhlIGxpc3Qgb2Ygb3Zl cmxvYWRlZCBtZXRob2RzLiAgKi8KICAgc3RydWN0IGZuX2ZpZWxkICpmbnNf cHRyID0gTlVMTDsKICAgLyogRm9yIG5vbi1tZXRob2RzLCB0aGUgbGlzdCBv ZiBvdmVybG9hZGVkIGZ1bmN0aW9uIHN5bWJvbHMuICAqLwogICBzdHJ1Y3Qg c3ltYm9sICoqb2xvYWRfc3ltcyA9IE5VTEw7CisgIC8qIEZvciBleHRlbnNp b24gZnVuY3Rpb25zLCB0aGUgVkVDIG9mIGV4dGVuc2lvbiBmdW5jdGlvbiBk ZXNjcmlwdG9ycy4gICovCisgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkg KmV4dF9mbl92ZWMgPSBOVUxMOwogICAvKiBOdW1iZXIgb2Ygb3ZlcmxvYWRl ZCBpbnN0YW5jZXMgYmVpbmcgY29uc2lkZXJlZC4gICovCiAgIGludCBudW1f Zm5zID0gMDsKICAgc3RydWN0IHR5cGUgKmJhc2V0eXBlID0gTlVMTDsKQEAg LTI0MzEsNiArMjQ4NCw4IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVj dCB2YWx1ZSAqKmFyZ3MsIGludCBuYXJncywKICAgY29uc3QgY2hhciAqZnVu Y19uYW1lID0gTlVMTDsKICAgZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBt YXRjaF9xdWFsaXR5OwogICBlbnVtIG9sb2FkX2NsYXNzaWZpY2F0aW9uIG1l dGhvZF9tYXRjaF9xdWFsaXR5ID0gSU5DT01QQVRJQkxFOworICBlbnVtIG9s b2FkX2NsYXNzaWZpY2F0aW9uIHNyY19tZXRob2RfbWF0Y2hfcXVhbGl0eSA9 IElOQ09NUEFUSUJMRTsKKyAgZW51bSBvbG9hZF9jbGFzc2lmaWNhdGlvbiBl eHRfbWV0aG9kX21hdGNoX3F1YWxpdHkgPSBJTkNPTVBBVElCTEU7CiAgIGVu dW0gb2xvYWRfY2xhc3NpZmljYXRpb24gZnVuY19tYXRjaF9xdWFsaXR5ID0g SU5DT01QQVRJQkxFOwogCiAgIC8qIEdldCB0aGUgbGlzdCBvZiBvdmVybG9h ZGVkIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiAgKi8KQEAgLTI0NTksMTIgKzI1 MTQsMTIgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoq YXJncywgaW50IG5hcmdzLAogCX0KIAogICAgICAgLyogUmV0cmlldmUgdGhl IGxpc3Qgb2YgbWV0aG9kcyB3aXRoIHRoZSBuYW1lIE5BTUUuICAqLwotICAg ICAgZm5zX3B0ciA9IHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKCZ0 ZW1wLCBuYW1lLCAKLQkJCQkJICAgICAgMCwgJm51bV9mbnMsIAotCQkJCQkg ICAgICAmYmFzZXR5cGUsICZib2Zmc2V0KTsKKyAgICAgIHZhbHVlX2ZpbmRf b2xvYWRfbWV0aG9kX2xpc3QgKCZ0ZW1wLCBuYW1lLCAwLCAmZm5zX3B0ciwg Jm51bV9mbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBleHRfZm4gPyAmZXh0X2ZuX3ZlYyA6IE5VTEwsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmYmFzZXR5cGUsICZib2Zmc2V0KTsK ICAgICAgIC8qIElmIHRoaXMgaXMgYSBtZXRob2Qgb25seSBzZWFyY2gsIGFu ZCBubyBtZXRob2RzIHdlcmUgZm91bmQKICAgICAgICAgIHRoZSBzZWFyY2gg aGFzIGZhaWxkLiAgKi8KLSAgICAgIGlmIChtZXRob2QgPT0gTUVUSE9EICYm ICghZm5zX3B0ciB8fCAhbnVtX2ZucykpCisgICAgICBpZiAobWV0aG9kID09 IE1FVEhPRCAmJiAoIWZuc19wdHIgfHwgIW51bV9mbnMpICYmICFleHRfZm5f dmVjKQogCWVycm9yIChfKCJDb3VsZG4ndCBmaW5kIG1ldGhvZCAlcyVzJXMi KSwKIAkgICAgICAgb2JqX3R5cGVfbmFtZSwKIAkgICAgICAgKG9ial90eXBl X25hbWUgJiYgKm9ial90eXBlX25hbWUpID8gIjo6IiA6ICIiLApAQCAtMjQ3 NSwxOCArMjUzMCw4MiBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3Qg dmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAgICAgICBpZiAoZm5zX3B0cikK IAl7CiAJICBnZGJfYXNzZXJ0IChUWVBFX0RPTUFJTl9UWVBFIChmbnNfcHRy WzBdLnR5cGUpICE9IE5VTEwpOwotCSAgbWV0aG9kX29sb2FkX2NoYW1wID0g ZmluZF9vbG9hZF9jaGFtcCAoYXJncywgbmFyZ3MsIG1ldGhvZCwKLQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mbnMs IGZuc19wdHIsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvbG9hZF9zeW1zLCAmbWV0aG9kX2JhZG5lc3MpOwotCi0JICBt ZXRob2RfbWF0Y2hfcXVhbGl0eSA9Ci0JICAgICAgY2xhc3NpZnlfb2xvYWRf bWF0Y2ggKG1ldGhvZF9iYWRuZXNzLCBuYXJncywKLQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBm bnNfcHRyLAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXApKTsKLQotCSAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgbWV0aG9kX2JhZG5lc3MpOworCSAgc3JjX21l dGhvZF9vbG9hZF9jaGFtcCA9IGZpbmRfb2xvYWRfY2hhbXAgKGFyZ3MsIG5h cmdzLCBtZXRob2QsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtX2ZucywgZm5zX3B0ciwgTlVMTCwKKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbG9h ZF9zeW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmc3JjX21ldGhvZF9iYWRuZXNzKTsKKworCSAg c3JjX21ldGhvZF9tYXRjaF9xdWFsaXR5ID0KKwkgICAgICBjbGFzc2lmeV9v bG9hZF9tYXRjaCAoCisgICAgICAgICAgICAgICAgICBzcmNfbWV0aG9kX2Jh ZG5lc3MsIG5hcmdzLAorCSAgICAgICAgICBvbG9hZF9tZXRob2Rfc3RhdGlj IChtZXRob2QsIGZuc19wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzcmNfbWV0aG9kX29sb2FkX2NoYW1wKSk7CisKKwkg IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNyY19tZXRob2RfYmFkbmVzcyk7CiAJ fQogCisgICAgICBpZiAoZXh0X2ZuICYmIFZFQ19sZW5ndGggKGV4dF9mbl9k ZXNjcmlwdG9yX3AsIGV4dF9mbl92ZWMpKQorICAgICAgICB7CisgICAgICAg ICAgZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA9IGZpbmRfb2xvYWRfY2hhbXAg KGFyZ3MsIG5hcmdzLCBtZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIGV4dF9m bl92ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsICZleHRfbWV0aG9kX2JhZG5lc3MpOwor ICAgICAgICAgIGV4dF9tZXRob2RfbWF0Y2hfcXVhbGl0eSA9IGNsYXNzaWZ5 X29sb2FkX21hdGNoIChleHRfbWV0aG9kX2JhZG5lc3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hcmdzLCAwKTsKKyAgICAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVl LCBleHRfbWV0aG9kX2JhZG5lc3MpOworICAgICAgICAgIG1ha2VfZXh0X2Zu X3ZlY19jbGVhbnVwIChleHRfZm5fdmVjKTsKKyAgICAgICAgfQorCisgICAg ICBpZiAoc3JjX21ldGhvZF9vbG9hZF9jaGFtcCA+PSAwICYmIGV4dF9tZXRo b2Rfb2xvYWRfY2hhbXAgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgIHN3 aXRjaCAoY29tcGFyZV9iYWRuZXNzIChleHRfbWV0aG9kX2JhZG5lc3MsIHNy Y19tZXRob2RfYmFkbmVzcykpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGNhc2UgMDogLyogU3JjIG1ldGhvZCBhbmQgZXh0IG1ldGhvZCBhcmUg ZXF1YWxseSBnb29kLiAgKi8KKyAgICAgICAgICAgICAgICBzcmNfYW5kX2V4 dF9lcXVhbCA9IDE7CisgICAgICAgICAgICAgIGNhc2UgMTogLyogU3JjIG1l dGhvZCBhbmQgZXh0IG1ldGhvZCBhcmUgaW5jb21wYXRpYmxlICAqLworICAg ICAgICAgICAgICAgIC8qIGlmIGV4dCBtZXRob2QgbWF0Y2ggaXMgbm90IHN0 YW5kYXJkLCB0aGVuIGxldCBzb3VyY2UgbWV0aG9kCisgICAgICAgICAgICAg ICAgICAgd2luLiAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZXh0X21ldGhv ZF9tYXRjaF9xdWFsaXR5ICE9IFNUQU5EQVJEKQorICAgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgICBtZXRob2Rfb2xvYWRfY2hhbXAg PSBzcmNfbWV0aG9kX29sb2FkX2NoYW1wOworICAgICAgICAgICAgICAgICAg ICBtZXRob2RfYmFkbmVzcyA9IHNyY19tZXRob2RfYmFkbmVzczsKKyAgICAg ICAgICAgICAgICAgICAgZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA9IC0xOwor ICAgICAgICAgICAgICAgICAgICBtZXRob2RfbWF0Y2hfcXVhbGl0eSA9IHNy Y19tZXRob2RfbWF0Y2hfcXVhbGl0eTsKKyAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGNh c2UgMjogLyogRXh0IG1ldGhvZCBpcyBjaGFtcGlvbi4gICovCisgICAgICAg ICAgICAgICAgbWV0aG9kX29sb2FkX2NoYW1wID0gZXh0X21ldGhvZF9vbG9h ZF9jaGFtcDsKKyAgICAgICAgICAgICAgICBtZXRob2RfYmFkbmVzcyA9IGV4 dF9tZXRob2RfYmFkbmVzczsKKyAgICAgICAgICAgICAgICBzcmNfbWV0aG9k X29sb2FkX2NoYW1wX2JrcCA9IHNyY19tZXRob2Rfb2xvYWRfY2hhbXA7Cisg ICAgICAgICAgICAgICAgc3JjX21ldGhvZF9vbG9hZF9jaGFtcCA9IC0xOwor ICAgICAgICAgICAgICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0gZXh0X21l dGhvZF9tYXRjaF9xdWFsaXR5OworICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICBjYXNlIDM6IC8qIFNyYyBtZXRob2QgaXMgY2hhbXBp b24uICAqLworICAgICAgICAgICAgICAgIG1ldGhvZF9vbG9hZF9jaGFtcCA9 IHNyY19tZXRob2Rfb2xvYWRfY2hhbXA7CisgICAgICAgICAgICAgICAgbWV0 aG9kX2JhZG5lc3MgPSBzcmNfbWV0aG9kX2JhZG5lc3M7CisgICAgICAgICAg ICAgICAgZXh0X21ldGhvZF9vbG9hZF9jaGFtcCA9IC0xOworICAgICAgICAg ICAgICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0gc3JjX21ldGhvZF9tYXRj aF9xdWFsaXR5OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGVycm9yIChfKCJJbnRl cm5hbCBlcnJvcjogdW5leHBlY3RlZCBvdmVybG9hZCBjb21wYXJpc29uICIK KyAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0IikpOworICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoc3JjX21ldGhv ZF9vbG9hZF9jaGFtcCA+PSAwKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBtZXRob2Rfb2xvYWRfY2hhbXAgPSBzcmNfbWV0aG9kX29sb2FkX2No YW1wOworICAgICAgICAgICAgICBtZXRob2RfYmFkbmVzcyA9IHNyY19tZXRo b2RfYmFkbmVzczsKKyAgICAgICAgICAgICAgbWV0aG9kX21hdGNoX3F1YWxp dHkgPSBzcmNfbWV0aG9kX21hdGNoX3F1YWxpdHk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgaWYgKGV4dF9tZXRob2Rfb2xvYWRfY2hhbXAgPj0gMCkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbWV0aG9kX29sb2FkX2No YW1wID0gZXh0X21ldGhvZF9vbG9hZF9jaGFtcDsKKyAgICAgICAgICAgICAg bWV0aG9kX2JhZG5lc3MgPSBleHRfbWV0aG9kX2JhZG5lc3M7CisgICAgICAg ICAgICAgIG1ldGhvZF9tYXRjaF9xdWFsaXR5ID0gZXh0X21ldGhvZF9tYXRj aF9xdWFsaXR5OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQog CiAgIGlmIChtZXRob2QgPT0gTk9OX01FVEhPRCB8fCBtZXRob2QgPT0gQk9U SCkKQEAgLTI2MjksMjEgKzI3NDgsNiBAQCBmaW5kX292ZXJsb2FkX21hdGNo IChzdHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsCiAJCSBmdW5jX25h bWUpOwogICAgIH0KIAotICBpZiAoc3RhdGljcCAhPSBOVUxMKQotICAgICpz dGF0aWNwID0gb2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBmbnNfcHRy LCBtZXRob2Rfb2xvYWRfY2hhbXApOwotCi0gIGlmIChtZXRob2Rfb2xvYWRf Y2hhbXAgPj0gMCkKLSAgICB7Ci0gICAgICBpZiAoVFlQRV9GTl9GSUVMRF9W SVJUVUFMX1AgKGZuc19wdHIsIG1ldGhvZF9vbG9hZF9jaGFtcCkpCi0JKnZh bHAgPSB2YWx1ZV92aXJ0dWFsX2ZuX2ZpZWxkICgmdGVtcCwgZm5zX3B0ciwg bWV0aG9kX29sb2FkX2NoYW1wLAotCQkJCQliYXNldHlwZSwgYm9mZnNldCk7 Ci0gICAgICBlbHNlCi0JKnZhbHAgPSB2YWx1ZV9mbl9maWVsZCAoJnRlbXAs IGZuc19wdHIsIG1ldGhvZF9vbG9hZF9jaGFtcCwKLQkJCQliYXNldHlwZSwg Ym9mZnNldCk7Ci0gICAgfQotICBlbHNlCi0gICAgKnN5bXAgPSBvbG9hZF9z eW1zW2Z1bmNfb2xvYWRfY2hhbXBdOwotCiAgIGlmIChvYmpwKQogICAgIHsK ICAgICAgIHN0cnVjdCB0eXBlICp0ZW1wX3R5cGUgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlICh0ZW1wKSk7CkBAIC0yNjUzLDExICsyNzU3LDY2IEBA IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MsIGlu dCBuYXJncywKIAkgICYmIChUWVBFX0NPREUgKG9ianR5cGUpID09IFRZUEVf Q09ERV9QVFIKIAkgICAgICB8fCBUWVBFX0NPREUgKG9ianR5cGUpID09IFRZ UEVfQ09ERV9SRUYpKQogCXsKLQkgIHRlbXAgPSB2YWx1ZV9hZGRyICh0ZW1w KTsKKwkgICpvYmpwID0gdmFsdWVfYWRkciAodGVtcCk7CiAJfQotICAgICAg Km9ianAgPSB0ZW1wOworICAgICAgZWxzZQorICAgICAgICAqb2JqcCA9IHRl bXA7CiAgICAgfQogCisgIGlmIChzdGF0aWNwICE9IE5VTEwpCisgICAgKnN0 YXRpY3AgPSBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRob2QsIGZuc19wdHIs IG1ldGhvZF9vbG9hZF9jaGFtcCk7CisKKyAgaWYgKG1ldGhvZF9vbG9hZF9j aGFtcCA+PSAwKQorICAgIHsKKyAgICAgIGlmIChzcmNfbWV0aG9kX29sb2Fk X2NoYW1wID49IDApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoVFlQRV9G Tl9GSUVMRF9WSVJUVUFMX1AgKGZuc19wdHIsIG1ldGhvZF9vbG9hZF9jaGFt cCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0cnVjdCB0eXBl ICpkdHlwZTsKKyAgICAgIAorICAgICAgICAgICAgICBkdHlwZSA9IHZhbHVl X2hhc19pbmRpcmVjdF9keW5hbWljX3R5cGUgKGFyZ3NbMF0pOworICAgICAg ICAgICAgICBpZiAoZHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgYXJnc1swXSA9IHZhbHVlX2Nhc3QgKGR0eXBlLCBhcmdz WzBdKTsKKyAgICAgICAgICAgICAgICAgIGRvX2NsZWFudXBzIChhbGxfY2xl YW51cHMpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRfb3Zlcmxv YWRfbWF0Y2ggKGFyZ3MsIG5hcmdzLCBuYW1lLCBtZXRob2QsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqcCwg ZnN5bSwgdmFscCwgc3ltcCwgZXh0X2ZuLAorCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0aWNwLCBub19hZGwpOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICp2 YWxwID0gdmFsdWVfdmlydHVhbF9mbl9maWVsZCAoJnRlbXAsIGZuc19wdHIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZXRob2Rfb2xvYWRfY2hhbXAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNldHlwZSwgYm9mZnNl dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgKnZhbHAgPSB2YWx1ZV9mbl9maWVsZCAoJnRlbXAsIGZuc19wdHIsIG1l dGhvZF9vbG9hZF9jaGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJhc2V0eXBlLCBib2Zmc2V0KTsKKyAgICAgICAgfQorICAg ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYgKHNyY19hbmRfZXh0 X2VxdWFsIAorICAgICAgICAgICAgICAmJiBUWVBFX0ZOX0ZJRUxEX1ZJUlRV QUxfUCAoZm5zX3B0ciwgc3JjX21ldGhvZF9vbG9hZF9jaGFtcF9ia3ApKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqZHR5 cGU7CisgICAgICAKKyAgICAgICAgICAgICAgZHR5cGUgPSB2YWx1ZV9oYXNf aW5kaXJlY3RfZHluYW1pY190eXBlIChhcmdzWzBdKTsKKyAgICAgICAgICAg ICAgaWYgKGR0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgIGFyZ3NbMF0gPSB2YWx1ZV9jYXN0IChkdHlwZSwgYXJnc1swXSk7 CisgICAgICAgICAgICAgICAgICBkb19jbGVhbnVwcyAoYWxsX2NsZWFudXBz KTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX292ZXJsb2FkX21h dGNoIChhcmdzLCBuYXJncywgbmFtZSwgbWV0aG9kLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ianAsIGZzeW0s IHZhbHAsIHN5bXAsIGV4dF9mbiwKKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RhdGljcCwgbm9fYWRsKTsKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAqZXh0X2ZuID0gZXh0X2Zu X2Nsb25lIChWRUNfaW5kZXggKGV4dF9mbl9kZXNjcmlwdG9yX3AsIGV4dF9m bl92ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleHRfbWV0aG9kX29sb2FkX2NoYW1wKSk7CisgICAgICAgIH0K KyAgICB9CisgIGVsc2UKKyAgICAqc3ltcCA9IG9sb2FkX3N5bXNbZnVuY19v bG9hZF9jaGFtcF07CisKICAgZG9fY2xlYW51cHMgKGFsbF9jbGVhbnVwcyk7 CiAKICAgc3dpdGNoIChtYXRjaF9xdWFsaXR5KQpAQCAtMjc5MSw3ICsyOTUw LDcgQEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0 IHZhbHVlICoqYXJncywgaW50IG5hcmdzLAogICAgICsrbnVtX2ZuczsKIAog ICBuZXdfb2xvYWRfY2hhbXAgPSBmaW5kX29sb2FkX2NoYW1wIChhcmdzLCBu YXJncywgMCwgbnVtX2ZucywKLQkJCQkgICAgICBOVUxMLCBuZXdfb2xvYWRf c3ltcywKKwkJCQkgICAgICBOVUxMLCBOVUxMLCBuZXdfb2xvYWRfc3ltcywK IAkJCQkgICAgICAmbmV3X29sb2FkX2NoYW1wX2J2KTsKIAogICAvKiBDYXNl IDE6IFdlIGZvdW5kIGEgZ29vZCBtYXRjaC4gIEZyZWUgZWFybGllciBtYXRj aGVzIChpZiBhbnkpLApAQCAtMjgzOSwxMCArMjk5OCwxMiBAQCBmaW5kX29s b2FkX2NoYW1wX25hbWVzcGFjZV9sb29wIChzdHJ1Y3QgdmFsdWUgKiphcmdz LCBpbnQgbmFyZ3MsCiBzdGF0aWMgaW50CiBmaW5kX29sb2FkX2NoYW1wIChz dHJ1Y3QgdmFsdWUgKiphcmdzLCBpbnQgbmFyZ3MsIGludCBtZXRob2QsCiAJ CSAgaW50IG51bV9mbnMsIHN0cnVjdCBmbl9maWVsZCAqZm5zX3B0ciwKKyAg ICAgICAgICAgICAgICAgIFZFQyAoZXh0X2ZuX2Rlc2NyaXB0b3JfcCkgKmV4 dF9mbl92ZWMsCiAJCSAgc3RydWN0IHN5bWJvbCAqKm9sb2FkX3N5bXMsCiAJ CSAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICoqb2xvYWRfY2hhbXBfYnYpCiB7 CiAgIGludCBpeDsKKyAgaW50IGV4dF9mbl92ZWNfbiA9IDA7CiAgIC8qIEEg bWVhc3VyZSBvZiBob3cgZ29vZCBhbiBvdmVybG9hZGVkIGluc3RhbmNlIGlz LiAgKi8KICAgc3RydWN0IGJhZG5lc3NfdmVjdG9yICpidjsKICAgLyogSW5k ZXggb2YgYmVzdCBvdmVybG9hZGVkIGZ1bmN0aW9uLiAgKi8KQEAgLTI4NTIs MTggKzMwMTMsMjcgQEAgZmluZF9vbG9hZF9jaGFtcCAoc3RydWN0IHZhbHVl ICoqYXJncywgaW50IG5hcmdzLCBpbnQgbWV0aG9kLAogICAvKiAwID0+IG5v IGFtYmlndWl0eSwgMSA9PiB0d28gZ29vZCBmdW5jcywgMiA9PiBpbmNvbXBh cmFibGUgZnVuY3MuICAqLwogCiAgICpvbG9hZF9jaGFtcF9idiA9IE5VTEw7 CisgIGV4dF9mbl92ZWNfbiA9IGV4dF9mbl92ZWMgPyBWRUNfbGVuZ3RoIChl eHRfZm5fZGVzY3JpcHRvcl9wLCBleHRfZm5fdmVjKSA6IDA7CiAKICAgLyog Q29uc2lkZXIgZWFjaCBjYW5kaWRhdGUgaW4gdHVybi4gICovCi0gIGZvciAo aXggPSAwOyBpeCA8IG51bV9mbnM7IGl4KyspCisgIGZvciAoaXggPSAwOyAo aXggPCBudW1fZm5zKSB8fCAoaXggPCBleHRfZm5fdmVjX24pOyBpeCsrKQog ICAgIHsKICAgICAgIGludCBqajsKLSAgICAgIGludCBzdGF0aWNfb2Zmc2V0 ID0gb2xvYWRfbWV0aG9kX3N0YXRpYyAobWV0aG9kLCBmbnNfcHRyLCBpeCk7 CisgICAgICBpbnQgc3RhdGljX29mZnNldCA9IDA7CiAgICAgICBpbnQgbnBh cm1zOwogICAgICAgc3RydWN0IHR5cGUgKipwYXJtX3R5cGVzOworICAgICAg c3RydWN0IGV4dF9mbl9kZXNjcmlwdG9yICpleHRfZm4gPSBOVUxMOworCisg ICAgICBpZiAoZXh0X2ZuX3ZlYykKKyAgICAgICAgZXh0X2ZuID0gVkVDX2lu ZGV4IChleHRfZm5fZGVzY3JpcHRvcl9wLCBleHRfZm5fdmVjLCBpeCk7CiAK ICAgICAgIGlmIChtZXRob2QpCiAJewotCSAgbnBhcm1zID0gVFlQRV9ORklF TERTIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGZuc19wdHIsIGl4KSk7CisgICAg ICAgICAgaWYgKGZuc19wdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIHN0YXRpY19vZmZzZXQgPSBvbG9hZF9tZXRob2Rfc3RhdGljIChtZXRo b2QsIGZuc19wdHIsIGl4KTsKKwkgICAgICBucGFybXMgPSBUWVBFX05GSUVM RFMgKFRZUEVfRk5fRklFTERfVFlQRSAoZm5zX3B0ciwgaXgpKTsKKyAgICAg ICAgICAgIH0KIAl9CiAgICAgICBlbHNlCiAJewpAQCAtMjg3MiwxMyArMzA0 MiwyMCBAQCBmaW5kX29sb2FkX2NoYW1wIChzdHJ1Y3QgdmFsdWUgKiphcmdz LCBpbnQgbmFyZ3MsIGludCBtZXRob2QsCiAJfQogCiAgICAgICAvKiBQcmVw YXJlIGFycmF5IG9mIHBhcmFtZXRlciB0eXBlcy4gICovCi0gICAgICBwYXJt X3R5cGVzID0gKHN0cnVjdCB0eXBlICoqKSAKLQl4bWFsbG9jIChucGFybXMg KiAoc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSkpOwotICAgICAgZm9yIChqaiA9 IDA7IGpqIDwgbnBhcm1zOyBqaisrKQotCXBhcm1fdHlwZXNbampdID0gKG1l dGhvZAotCQkJICA/IChUWVBFX0ZOX0ZJRUxEX0FSR1MgKGZuc19wdHIsIGl4 KVtqal0udHlwZSkKLQkJCSAgOiBUWVBFX0ZJRUxEX1RZUEUgKFNZTUJPTF9U WVBFIChvbG9hZF9zeW1zW2l4XSksIAotCQkJCQkgICAgIGpqKSk7CisgICAg ICBpZiAoZm5zX3B0ciB8fCBvbG9hZF9zeW1zKQorICAgICAgICB7CisgICAg ICAgICAgcGFybV90eXBlcyA9IChzdHJ1Y3QgdHlwZSAqKikgCisgICAgICAg ICAgICB4bWFsbG9jIChucGFybXMgKiAoc2l6ZW9mIChzdHJ1Y3QgdHlwZSAq KSkpOworICAgICAgICAgIGZvciAoamogPSAwOyBqaiA8IG5wYXJtczsgamor KykKKyAgICAgICAgICAgIHBhcm1fdHlwZXNbampdID0gKG1ldGhvZAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoVFlQRV9GTl9GSUVMRF9B UkdTIChmbnNfcHRyLCBpeClbampdLnR5cGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6IFRZUEVfRklFTERfVFlQRSAoU1lNQk9MX1RZUEUg KG9sb2FkX3N5bXNbaXhdKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBqaikpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsK KyAgICAgICAgICBwYXJtX3R5cGVzID0gZXh0X2ZuX2dldF9hcmd0eXBlcyAo ZXh0X2ZuLCAmbnBhcm1zKTsKKyAgICAgICAgfQogCiAgICAgICAvKiBDb21w YXJlIHBhcmFtZXRlciB0eXBlcyB0byBzdXBwbGllZCBhcmd1bWVudCB0eXBl cy4gIFNraXAKICAgICAgICAgIFRISVMgZm9yIHN0YXRpYyBtZXRob2RzLiAg Ki8KZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKaW5k ZXggZGI5NjRlMy4uMzIxNjI0OSAxMDA2NDQKLS0tIGEvZ2RiL3ZhbHVlLmgK KysrIGIvZ2RiL3ZhbHVlLmgKQEAgLTMxLDYgKzMxLDcgQEAgc3RydWN0IHR5 cGU7CiBzdHJ1Y3QgdWlfZmlsZTsKIHN0cnVjdCBsYW5ndWFnZV9kZWZuOwog c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnM7CitzdHJ1Y3QgZXh0X2ZuX2Rl c2NyaXB0b3I7CiAKIC8qIFRoZSBzdHJ1Y3R1cmUgd2hpY2ggZGVmaW5lcyB0 aGUgdHlwZSBvZiBhIHZhbHVlLiAgSXQgc2hvdWxkIG5ldmVyCiAgICBiZSBw b3NzaWJsZSBmb3IgYSBwcm9ncmFtIGx2YWwgdmFsdWUgdG8gc3Vydml2ZSBv dmVyIGEgY2FsbCB0byB0aGUKQEAgLTY3MSw2ICs2NzIsNyBAQCBleHRlcm4g aW50IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3Ms IGludCBuYXJncywKIAkJCQllbnVtIG9sb2FkX3NlYXJjaF90eXBlIG1ldGhv ZCwKIAkJCQlzdHJ1Y3QgdmFsdWUgKipvYmpwLCBzdHJ1Y3Qgc3ltYm9sICpm c3ltLAogCQkJCXN0cnVjdCB2YWx1ZSAqKnZhbHAsIHN0cnVjdCBzeW1ib2wg KipzeW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZXh0X2ZuX2Rlc2NyaXB0b3IgKipleHRfZm4sCiAJCQkJaW50ICpzdGF0 aWNwLCBjb25zdCBpbnQgbm9fYWRsKTsKIAogZXh0ZXJuIHN0cnVjdCB2YWx1 ZSAqdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IGZpZWxk bm8pOwo= --089e0160c5cc922d2d04eaf1b990--