Return-Path: X-Original-To: apmail-httpd-dev-archive@www.apache.org Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C740A9932 for ; Mon, 8 Dec 2014 20:59:16 +0000 (UTC) Received: (qmail 929 invoked by uid 500); 8 Dec 2014 20:59:16 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 867 invoked by uid 500); 8 Dec 2014 20:59:16 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 857 invoked by uid 99); 8 Dec 2014 20:59:15 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Dec 2014 20:59:15 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of ylavic.dev@gmail.com designates 209.85.213.173 as permitted sender) Received: from [209.85.213.173] (HELO mail-ig0-f173.google.com) (209.85.213.173) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Dec 2014 20:59:11 +0000 Received: by mail-ig0-f173.google.com with SMTP id r2so3431473igi.0 for ; Mon, 08 Dec 2014 12:58:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=WlTy6ZhGKwJohZK3Aegvb582AGGMqM9Rf1pd4ydIOOU=; b=O1evvOwXVsRKswlJsjB3Pwc7WajgzktjEj8pxe2RfEPoql46XLNSUJG95coNrrP9V9 tHIrAszSGJl8hktQnTi+wbOMttSJSbcOCFDxBT82YX9G0juROeRfOR2luy4r5G9vf4sq 1iPbS/rbceBIqHSDQVkF0sBpIexQ/zqXb6bXEzQmR7mr2BUA+7l1buiApkgyPsjdUwIE s6HLZSERtutJi0O5pqYQEpHen0FUAUAQDg69ywXLf77rJyBxuhY/1nPZp1fS3vzaPnrN ZLKLk19qJm0Pz0C2kR/Hu+/KHxChvn8VKqJdE7F05AOMCRNEBU0VrGTToOctx4DLOGjt dQfQ== MIME-Version: 1.0 X-Received: by 10.107.134.212 with SMTP id q81mr12532056ioi.62.1418072330916; Mon, 08 Dec 2014 12:58:50 -0800 (PST) Received: by 10.42.255.7 with HTTP; Mon, 8 Dec 2014 12:58:50 -0800 (PST) In-Reply-To: References: <5485EF01.7040901@gknw.net> Date: Mon, 8 Dec 2014 21:58:50 +0100 Message-ID: Subject: Re: server/util_expr_(parse|scan) generated sources files From: Yann Ylavic To: httpd Content-Type: multipart/mixed; boundary=001a113eb8788cfd340509bab141 X-Virus-Checked: Checked by ClamAV on apache.org --001a113eb8788cfd340509bab141 Content-Type: text/plain; charset=UTF-8 On Mon, Dec 8, 2014 at 9:16 PM, Eric Covener wrote: > On Mon, Dec 8, 2014 at 3:12 PM, Yann Ylavic wrote: >> Reverted in r1643901. >> >> Someone with a bison version above 2.7.12-4996 should do this (mine is 2.5). > > Every system I try, it leaps from 2.4 to 3.0. Maybe best to just make > the jump forward now? FYI, just tried on an other system with bison-3.0.2 and flex-2.5.39 (they seem to work together on newer systems...). The diff on generated C files (attached) is even bigger, and these warnings threw during build : [...] flex -Pap_expr_yy -o /home/yle/src/ap/svn/httpd/trunk/server/util_expr_scan.c /home/yle/src/ap/svn/httpd/trunk/server/util_expr_scan.l server/util_expr_scan.l|413| warning, -s option given but default rule can be matched [...] server/util_expr_scan.c|2350 col 13| warning: 'yy_fatal_error' defined but not used [-Wunused-function] static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) ^ That would probably need more work/review... --001a113eb8788cfd340509bab141 Content-Type: text/plain; charset=US-ASCII; name="util_expr_with_bison-3.0.2_and_flex-2.5.39.diff" Content-Disposition: attachment; filename="util_expr_with_bison-3.0.2_and_flex-2.5.39.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i3gbjiay0 SW5kZXg6IHNlcnZlci91dGlsX2V4cHJfcGFyc2UuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZXJ2ZXIvdXRp bF9leHByX3BhcnNlLmMJKHJldmlzaW9uIDE2NDM5MDMpCisrKyBzZXJ2ZXIvdXRpbF9leHByX3Bh cnNlLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkgKzEsMTkgQEAKLS8qIEEgQmlzb24gcGFyc2Vy LCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjcuMTItNDk5Ni4gICovCisvKiBBIEJpc29uIHBhcnNlciwg bWFkZSBieSBHTlUgQmlzb24gMy4wLjIuICAqLwogCiAvKiBCaXNvbiBpbXBsZW1lbnRhdGlvbiBm b3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwotICAgCi0gICAgICBDb3B5cmlnaHQgKEMpIDE5ODQs IDE5ODktMTk5MCwgMjAwMC0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAg CisKKyAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTMgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQog ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gICAK KwogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAgIAorCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwogCkBAIC0yNiw3ICsyNiw3IEBACiAgICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hpY2gg d2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKICAgIEJpc29uIG91dHB1 dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCiAgICBM aWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLSAgIAorCiAgICBUaGlzIHNw ZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u IGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNk ZWZpbmUgWVlCSVNPTiAxCiAKIC8qIEJpc29uIHZlcnNpb24uICAqLwotI2RlZmluZSBZWUJJU09O X1ZFUlNJT04gIjIuNy4xMi00OTk2IgorI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjMuMC4yIgog CiAvKiBTa2VsZXRvbiBuYW1lLiAgKi8KICNkZWZpbmUgWVlTS0VMRVRPTl9OQU1FICJ5YWNjLmMi CkBAIC02MywyNSArNjMsMjIgQEAKICNkZWZpbmUgeXlwYXJzZSAgICAgICAgIGFwX2V4cHJfeXlw YXJzZQogI2RlZmluZSB5eWxleCAgICAgICAgICAgYXBfZXhwcl95eWxleAogI2RlZmluZSB5eWVy cm9yICAgICAgICAgYXBfZXhwcl95eWVycm9yCi0jZGVmaW5lIHl5bHZhbCAgICAgICAgICBhcF9l eHByX3l5bHZhbAotI2RlZmluZSB5eWNoYXIgICAgICAgICAgYXBfZXhwcl95eWNoYXIKICNkZWZp bmUgeXlkZWJ1ZyAgICAgICAgIGFwX2V4cHJfeXlkZWJ1ZwogI2RlZmluZSB5eW5lcnJzICAgICAg ICAgYXBfZXhwcl95eW5lcnJzCiAKKwogLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRl Y2xhcmF0aW9ucy4gICovCi0vKiBMaW5lIDM3MSBvZiB5YWNjLmMgICovCi0jbGluZSAzMSAidXRp bF9leHByX3BhcnNlLnkiCisjbGluZSAzMSAidXRpbF9leHByX3BhcnNlLnkiIC8qIHlhY2MuYzoz MzkgICovCiAKICNpbmNsdWRlICJ1dGlsX2V4cHJfcHJpdmF0ZS5oIgogCi0vKiBMaW5lIDM3MSBv ZiB5YWNjLmMgICovCi0jbGluZSA3OSAidXRpbF9leHByX3BhcnNlLmMiCisjbGluZSA3NiAidXRp bF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzozMzkgICovCiAKLSMgaWZuZGVmIFlZX05VTEwKKyMg aWZuZGVmIFlZX05VTExQVFIKICMgIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgMjAxMTAzTCA8 PSBfX2NwbHVzcGx1cwotIyAgIGRlZmluZSBZWV9OVUxMIG51bGxwdHIKKyMgICBkZWZpbmUgWVlf TlVMTFBUUiBudWxscHRyCiAjICBlbHNlCi0jICAgZGVmaW5lIFlZX05VTEwgMAorIyAgIGRlZmlu ZSBZWV9OVUxMUFRSIDAKICMgIGVuZGlmCiAjIGVuZGlmCiAKQEAgLTk3LDcgKzk0LDcgQEAKICAg IGJ5ICNpbmNsdWRlICJ1dGlsX2V4cHJfcGFyc2UuaCIuICAqLwogI2lmbmRlZiBZWV9BUF9FWFBS X1lZX1VUSUxfRVhQUl9QQVJTRV9IX0lOQ0xVREVECiAjIGRlZmluZSBZWV9BUF9FWFBSX1lZX1VU SUxfRVhQUl9QQVJTRV9IX0lOQ0xVREVECi0vKiBFbmFibGluZyB0cmFjZXMuICAqLworLyogRGVi dWcgdHJhY2VzLiAgKi8KICNpZm5kZWYgWVlERUJVRwogIyBkZWZpbmUgWVlERUJVRyAwCiAjZW5k aWYKQEAgLTEwNSw5MSArMTAyLDc1IEBACiBleHRlcm4gaW50IGFwX2V4cHJfeXlkZWJ1ZzsKICNl bmRpZgogCi0vKiBUb2tlbnMuICAqLworLyogVG9rZW4gdHlwZS4gICovCiAjaWZuZGVmIFlZVE9L RU5UWVBFCiAjIGRlZmluZSBZWVRPS0VOVFlQRQotICAgLyogUHV0IHRoZSB0b2tlbnMgaW50byB0 aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQgb3RoZXIgZGVidWdnZXJzCi0gICAgICBr bm93IGFib3V0IHRoZW0uICAqLwotICAgZW51bSB5eXRva2VudHlwZSB7Ci0gICAgIFRfVFJVRSA9 IDI1OCwKLSAgICAgVF9GQUxTRSA9IDI1OSwKLSAgICAgVF9FWFBSX0JPT0wgPSAyNjAsCi0gICAg IFRfRVhQUl9TVFJJTkcgPSAyNjEsCi0gICAgIFRfRVJST1IgPSAyNjIsCi0gICAgIFRfRElHSVQg PSAyNjMsCi0gICAgIFRfSUQgPSAyNjQsCi0gICAgIFRfU1RSSU5HID0gMjY1LAotICAgICBUX1JF R0VYID0gMjY2LAotICAgICBUX1JFR0VYX0kgPSAyNjcsCi0gICAgIFRfUkVHRVhfQkFDS1JFRiA9 IDI2OCwKLSAgICAgVF9PUF9VTkFSWSA9IDI2OSwKLSAgICAgVF9PUF9CSU5BUlkgPSAyNzAsCi0g ICAgIFRfU1RSX0JFR0lOID0gMjcxLAotICAgICBUX1NUUl9FTkQgPSAyNzIsCi0gICAgIFRfVkFS X0JFR0lOID0gMjczLAotICAgICBUX1ZBUl9FTkQgPSAyNzQsCi0gICAgIFRfT1BfRVEgPSAyNzUs Ci0gICAgIFRfT1BfTkUgPSAyNzYsCi0gICAgIFRfT1BfTFQgPSAyNzcsCi0gICAgIFRfT1BfTEUg PSAyNzgsCi0gICAgIFRfT1BfR1QgPSAyNzksCi0gICAgIFRfT1BfR0UgPSAyODAsCi0gICAgIFRf T1BfUkVHID0gMjgxLAotICAgICBUX09QX05SRSA9IDI4MiwKLSAgICAgVF9PUF9JTiA9IDI4MywK LSAgICAgVF9PUF9TVFJfRVEgPSAyODQsCi0gICAgIFRfT1BfU1RSX05FID0gMjg1LAotICAgICBU X09QX1NUUl9MVCA9IDI4NiwKLSAgICAgVF9PUF9TVFJfTEUgPSAyODcsCi0gICAgIFRfT1BfU1RS X0dUID0gMjg4LAotICAgICBUX09QX1NUUl9HRSA9IDI4OSwKLSAgICAgVF9PUF9DT05DQVQgPSAy OTAsCi0gICAgIFRfT1BfT1IgPSAyOTEsCi0gICAgIFRfT1BfQU5EID0gMjkyLAotICAgICBUX09Q X05PVCA9IDI5MwotICAgfTsKKyAgZW51bSB5eXRva2VudHlwZQorICB7CisgICAgVF9UUlVFID0g MjU4LAorICAgIFRfRkFMU0UgPSAyNTksCisgICAgVF9FWFBSX0JPT0wgPSAyNjAsCisgICAgVF9F WFBSX1NUUklORyA9IDI2MSwKKyAgICBUX0VSUk9SID0gMjYyLAorICAgIFRfRElHSVQgPSAyNjMs CisgICAgVF9JRCA9IDI2NCwKKyAgICBUX1NUUklORyA9IDI2NSwKKyAgICBUX1JFR0VYID0gMjY2 LAorICAgIFRfUkVHRVhfSSA9IDI2NywKKyAgICBUX1JFR0VYX0JBQ0tSRUYgPSAyNjgsCisgICAg VF9PUF9VTkFSWSA9IDI2OSwKKyAgICBUX09QX0JJTkFSWSA9IDI3MCwKKyAgICBUX1NUUl9CRUdJ TiA9IDI3MSwKKyAgICBUX1NUUl9FTkQgPSAyNzIsCisgICAgVF9WQVJfQkVHSU4gPSAyNzMsCisg ICAgVF9WQVJfRU5EID0gMjc0LAorICAgIFRfT1BfRVEgPSAyNzUsCisgICAgVF9PUF9ORSA9IDI3 NiwKKyAgICBUX09QX0xUID0gMjc3LAorICAgIFRfT1BfTEUgPSAyNzgsCisgICAgVF9PUF9HVCA9 IDI3OSwKKyAgICBUX09QX0dFID0gMjgwLAorICAgIFRfT1BfUkVHID0gMjgxLAorICAgIFRfT1Bf TlJFID0gMjgyLAorICAgIFRfT1BfSU4gPSAyODMsCisgICAgVF9PUF9TVFJfRVEgPSAyODQsCisg ICAgVF9PUF9TVFJfTkUgPSAyODUsCisgICAgVF9PUF9TVFJfTFQgPSAyODYsCisgICAgVF9PUF9T VFJfTEUgPSAyODcsCisgICAgVF9PUF9TVFJfR1QgPSAyODgsCisgICAgVF9PUF9TVFJfR0UgPSAy ODksCisgICAgVF9PUF9DT05DQVQgPSAyOTAsCisgICAgVF9PUF9PUiA9IDI5MSwKKyAgICBUX09Q X0FORCA9IDI5MiwKKyAgICBUX09QX05PVCA9IDI5MworICB9OwogI2VuZGlmCiAKLQorLyogVmFs dWUgdHlwZS4gICovCiAjaWYgISBkZWZpbmVkIFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVf SVNfREVDTEFSRUQKLXR5cGVkZWYgdW5pb24gWVlTVFlQRQordHlwZWRlZiB1bmlvbiBZWVNUWVBF IFlZU1RZUEU7Cit1bmlvbiBZWVNUWVBFCiB7Ci0vKiBMaW5lIDM4NyBvZiB5YWNjLmMgICovCi0j bGluZSAzNSAidXRpbF9leHByX3BhcnNlLnkiCisjbGluZSAzNSAidXRpbF9leHByX3BhcnNlLnki IC8qIHlhY2MuYzozNTUgICovCiAKICAgICBjaGFyICAgICAgKmNwVmFsOwogICAgIGFwX2V4cHJf dCAqZXhWYWw7CiAgICAgaW50ICAgICAgICBudW07CiAKLQotLyogTGluZSAzODcgb2YgeWFjYy5j ICAqLwotI2xpbmUgMTY3ICJ1dGlsX2V4cHJfcGFyc2UuYyIKLX0gWVlTVFlQRTsKKyNsaW5lIDE2 MSAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzozNTUgICovCit9OwogIyBkZWZpbmUgWVlT VFlQRV9JU19UUklWSUFMIDEKLSMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVzY2Vu dDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQgMQog I2VuZGlmCiAKIAotI2lmZGVmIFlZUEFSU0VfUEFSQU0KLSNpZiBkZWZpbmVkIF9fU1REQ19fIHx8 IGRlZmluZWQgX19jcGx1c3BsdXMKLWludCBhcF9leHByX3l5cGFyc2UgKHZvaWQgKllZUEFSU0Vf UEFSQU0pOwotI2Vsc2UKLWludCBhcF9leHByX3l5cGFyc2UgKCk7Ci0jZW5kaWYKLSNlbHNlIC8q ICEgWVlQQVJTRV9QQVJBTSAqLwotI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2Nw bHVzcGx1cworCiBpbnQgYXBfZXhwcl95eXBhcnNlIChhcF9leHByX3BhcnNlX2N0eF90ICpjdHgp OwotI2Vsc2UKLWludCBhcF9leHByX3l5cGFyc2UgKCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiAhIFlZ UEFSU0VfUEFSQU0gKi8KIAogI2VuZGlmIC8qICFZWV9BUF9FWFBSX1lZX1VUSUxfRVhQUl9QQVJT RV9IX0lOQ0xVREVEICAqLwogCiAvKiBDb3B5IHRoZSBzZWNvbmQgcGFydCBvZiB1c2VyIGRlY2xh cmF0aW9ucy4gICovCi0vKiBMaW5lIDM5MCBvZiB5YWNjLmMgICovCi0jbGluZSAxMDIgInV0aWxf ZXhwcl9wYXJzZS55IgorI2xpbmUgMTAyICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjM1 OCAgKi8KIAogI2luY2x1ZGUgInV0aWxfZXhwcl9wcml2YXRlLmgiCiAjZGVmaW5lIHl5c2Nhbm5l ciBjdHgtPnNjYW5uZXIKQEAgLTE5Niw4ICsxNzcsNyBAQCBpbnQgYXBfZXhwcl95eXBhcnNlIChh cF9leHByX3BhcnNlX2N0eF90ICpjdHgpOwogCiBpbnQgYXBfZXhwcl95eWxleChZWVNUWVBFICps dmFscCwgdm9pZCAqc2Nhbm5lcik7CiAKLS8qIExpbmUgMzkwIG9mIHlhY2MuYyAgKi8KLSNsaW5l IDIwMSAidXRpbF9leHByX3BhcnNlLmMiCisjbGluZSAxODEgInV0aWxfZXhwcl9wYXJzZS5jIiAv KiB5YWNjLmM6MzU4ICAqLwogCiAjaWZkZWYgc2hvcnQKICMgdW5kZWYgc2hvcnQKQEAgLTIxMSwx MSArMTkxLDggQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHl5dHlwZV91aW50ODsKIAogI2lmZGVm IFlZVFlQRV9JTlQ4CiB0eXBlZGVmIFlZVFlQRV9JTlQ4IHl5dHlwZV9pbnQ4OwotI2VsaWYgKGRl ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5l ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorI2Vsc2UKIHR5cGVkZWYgc2lnbmVk IGNoYXIgeXl0eXBlX2ludDg7Ci0jZWxzZQotdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDg7 CiAjZW5kaWYKIAogI2lmZGVmIFlZVFlQRV9VSU5UMTYKQEAgLTIzNSw4ICsyMTIsNyBAQCB0eXBl ZGVmIHNob3J0IGludCB5eXR5cGVfaW50MTY7CiAjICBkZWZpbmUgWVlTSVpFX1QgX19TSVpFX1RZ UEVfXwogIyBlbGlmIGRlZmluZWQgc2l6ZV90CiAjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0j IGVsaWYgISBkZWZpbmVkIFlZU0laRV9UICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQg X19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBf TVNDX1ZFUikKKyMgZWxpZiAhIGRlZmluZWQgWVlTSVpFX1QKICMgIGluY2x1ZGUgPHN0ZGRlZi5o PiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCiAjICBkZWZpbmUgWVlTSVpFX1Qg c2l6ZV90CiAjIGVsc2UKQEAgLTI1OCwxNCArMjM0LDMzIEBAIHR5cGVkZWYgc2hvcnQgaW50IHl5 dHlwZV9pbnQxNjsKICMgZW5kaWYKICNlbmRpZgogCi0jaWZuZGVmIF9fYXR0cmlidXRlX18KLS8q IFRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgaW4gZ2NjIHZlcnNpb25zIDIuNSBhbmQgbGF0ZXIu ICAqLwotIyBpZiAoISBkZWZpbmVkIF9fR05VQ19fIHx8IF9fR05VQ19fIDwgMiBcCi0gICAgICB8 fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpKQotIyAgZGVmaW5lIF9fYXR0 cmlidXRlX18oU3BlYykgLyogZW1wdHkgKi8KKyNpZm5kZWYgWVlfQVRUUklCVVRFCisjIGlmIChk ZWZpbmVkIF9fR05VQ19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAmJiAoMiA8IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSAyICYmIDk2IDw9 IF9fR05VQ19NSU5PUl9fKSkpICBcCisgICAgIHx8IGRlZmluZWQgX19TVU5QUk9fQyAmJiAweDUx MTAgPD0gX19TVU5QUk9fQworIyAgZGVmaW5lIFlZX0FUVFJJQlVURShTcGVjKSBfX2F0dHJpYnV0 ZV9fKFNwZWMpCisjIGVsc2UKKyMgIGRlZmluZSBZWV9BVFRSSUJVVEUoU3BlYykgLyogZW1wdHkg Ki8KICMgZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIFlZX0FUVFJJQlVURV9QVVJFCisjIGRlZmlu ZSBZWV9BVFRSSUJVVEVfUFVSRSAgIFlZX0FUVFJJQlVURSAoKF9fcHVyZV9fKSkKKyNlbmRpZgor CisjaWZuZGVmIFlZX0FUVFJJQlVURV9VTlVTRUQKKyMgZGVmaW5lIFlZX0FUVFJJQlVURV9VTlVT RUQgWVlfQVRUUklCVVRFICgoX191bnVzZWRfXykpCisjZW5kaWYKKworI2lmICFkZWZpbmVkIF9O b3JldHVybiBcCisgICAgICYmICghZGVmaW5lZCBfX1NURENfVkVSU0lPTl9fIHx8IF9fU1REQ19W RVJTSU9OX18gPCAyMDExMTIpCisjIGlmIGRlZmluZWQgX01TQ19WRVIgJiYgMTIwMCA8PSBfTVND X1ZFUgorIyAgZGVmaW5lIF9Ob3JldHVybiBfX2RlY2xzcGVjIChub3JldHVybikKKyMgZWxzZQor IyAgZGVmaW5lIF9Ob3JldHVybiBZWV9BVFRSSUJVVEUgKChfX25vcmV0dXJuX18pKQorIyBlbmRp ZgorI2VuZGlmCisKIC8qIFN1cHByZXNzIHVudXNlZC12YXJpYWJsZSB3YXJuaW5ncyBieSAidXNp bmciIEUuICAqLwogI2lmICEgZGVmaW5lZCBsaW50IHx8IGRlZmluZWQgX19HTlVDX18KICMgZGVm aW5lIFlZVVNFKEUpICgodm9pZCkgKEUpKQpAQCAtMjczLDI1ICsyNjgsMjYgQEAgdHlwZWRlZiBz aG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyBkZWZpbmUgWVlVU0UoRSkgLyogZW1wdHkgKi8KICNl bmRpZgogCi0KLS8qIElkZW50aXR5IGZ1bmN0aW9uLCB1c2VkIHRvIHN1cHByZXNzIHdhcm5pbmdz IGFib3V0IGNvbnN0YW50IGNvbmRpdGlvbnMuICAqLwotI2lmbmRlZiBsaW50Ci0jIGRlZmluZSBZ WUlEKE4pIChOKQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgNDA3IDw9IF9fR05VQ19fICogMTAw ICsgX19HTlVDX01JTk9SX18KKy8qIFN1cHByZXNzIGFuIGluY29ycmVjdCBkaWFnbm9zdGljIGFi b3V0IHl5bHZhbCBiZWluZyB1bmluaXRpYWxpemVkLiAgKi8KKyMgZGVmaW5lIFlZX0lHTk9SRV9N QVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMg cHVzaCIpIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XdW5pbml0 aWFsaXplZFwiIilcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21h eWJlLXVuaW5pdGlhbGl6ZWRcIiIpCisjIGRlZmluZSBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFM SVpFRF9FTkQgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwb3AiKQogI2Vsc2UKLSNp ZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBk ZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCi1zdGF0aWMgaW50Ci1ZWUlE IChpbnQgeXlpKQotI2Vsc2UKLXN0YXRpYyBpbnQKLVlZSUQgKHl5aSkKLSAgICBpbnQgeXlpOwor IyBkZWZpbmUgWVlfSU5JVElBTF9WQUxVRShWYWx1ZSkgVmFsdWUKICNlbmRpZgotewotICByZXR1 cm4geXlpOwotfQorI2lmbmRlZiBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgor IyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElBTElaRURfQkVHSU4KKyMgZGVmaW5lIFlZ X0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORAogI2VuZGlmCisjaWZuZGVmIFlZX0lOSVRJ QUxfVkFMVUUKKyMgZGVmaW5lIFlZX0lOSVRJQUxfVkFMVUUoVmFsdWUpIC8qIE5vdGhpbmcuICov CisjZW5kaWYKIAorCiAjaWYgISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NF CiAKIC8qIFRoZSBwYXJzZXIgaW52b2tlcyBhbGxvY2Egb3IgbWFsbG9jOyBkZWZpbmUgdGhlIG5l Y2Vzc2FyeSBzeW1ib2xzLiAgKi8KQEAgLTMwOSw4ICszMDUsNyBAQCB0eXBlZGVmIHNob3J0IGlu dCB5eXR5cGVfaW50MTY7CiAjICAgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQogIyAgIGVsc2UKICMg ICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0jICAgIGlmICEgZGVmaW5lZCBfQUxMT0NB X0ggJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp bmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu ZWQgX01TQ19WRVIpCisjICAgIGlmICEgZGVmaW5lZCBfQUxMT0NBX0ggJiYgISBkZWZpbmVkIEVY SVRfU1VDQ0VTUwogIyAgICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VS IE5BTUUgU1BBQ0UgKi8KICAgICAgIC8qIFVzZSBFWElUX1NVQ0NFU1MgYXMgYSB3aXRuZXNzIGZv ciBzdGRsaWIuaC4gICovCiAjICAgICBpZm5kZWYgRVhJVF9TVUNDRVNTCkBAIC0zMjIsOCArMzE3 LDggQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDE2OwogIyBlbmRpZgogCiAjIGlmZGVm IFlZU1RBQ0tfQUxMT0MKLSAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScgd2Fybmlu Zy4gICovCi0jICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAqLzsgfSB3 aGlsZSAoWVlJRCAoMCkpCisgICAvKiBQYWNpZnkgR0NDJ3MgJ2VtcHR5IGlmLWJvZHknIHdhcm5p bmcuICAqLworIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0g d2hpbGUgKDApCiAjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCiAgICAgLyogVGhlIE9T IG1pZ2h0IGd1YXJhbnRlZSBvbmx5IG9uZSBndWFyZCBwYWdlIGF0IHRoZSBib3R0b20gb2YgdGhl IHN0YWNrLAogICAgICAgIGFuZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21hbGwgYXMgNDA5NiBi eXRlcy4gIFNvIHdlIGNhbm5vdCBzYWZlbHkKQEAgLTMzOSw3ICszMzQsNyBAQCB0eXBlZGVmIHNo b3J0IGludCB5eXR5cGVfaW50MTY7CiAjICBlbmRpZgogIyAgaWYgKGRlZmluZWQgX19jcGx1c3Bs dXMgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUyBcCiAgICAgICAgJiYgISAoKGRlZmluZWQgWVlN QUxMT0MgfHwgZGVmaW5lZCBtYWxsb2MpIFwKLQkgICAgICYmIChkZWZpbmVkIFlZRlJFRSB8fCBk ZWZpbmVkIGZyZWUpKSkKKyAgICAgICAgICAgICAmJiAoZGVmaW5lZCBZWUZSRUUgfHwgZGVmaW5l ZCBmcmVlKSkpCiAjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5B TUUgU1BBQ0UgKi8KICMgICBpZm5kZWYgRVhJVF9TVUNDRVNTCiAjICAgIGRlZmluZSBFWElUX1NV Q0NFU1MgMApAQCAtMzQ3LDE1ICszNDIsMTMgQEAgdHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2lu dDE2OwogIyAgZW5kaWYKICMgIGlmbmRlZiBZWU1BTExPQwogIyAgIGRlZmluZSBZWU1BTExPQyBt YWxsb2MKLSMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBFWElUX1NVQ0NFU1Mg JiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwg ZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgIGlmICEgZGVmaW5l ZCBtYWxsb2MgJiYgISBkZWZpbmVkIEVYSVRfU1VDQ0VTUwogdm9pZCAqbWFsbG9jIChZWVNJWkVf VCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5k aWYKICMgIGlmbmRlZiBZWUZSRUUKICMgICBkZWZpbmUgWVlGUkVFIGZyZWUKLSMgICBpZiAhIGRl ZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgRVhJVF9TVUNDRVNTICYmIChkZWZpbmVkIF9fU1REQ19f IHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCi0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMg fHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQg RVhJVF9TVUNDRVNTCiB2b2lkIGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5B TUUgU1BBQ0UgKi8KICMgICBlbmRpZgogIyAgZW5kaWYKQEAgLTM2NSw3ICszNTgsNyBAQCB2b2lk IGZyZWUgKHZvaWQgKik7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQwogCiAjaWYgKCEg ZGVmaW5lZCB5eW92ZXJmbG93IFwKICAgICAgJiYgKCEgZGVmaW5lZCBfX2NwbHVzcGx1cyBcCi0J IHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkK KyAgICAgICAgIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RS SVZJQUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0 YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCkBAIC0zOTAsMTYgKzM4MywxNiBAQCB1bmlv biB5eWFsbG9jCiAgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUg bmV3IGxvY2F0aW9uIG9mIHRoZQogICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVy bHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKICAgIHN0YWNrLiAgKi8KLSMgZGVmaW5l IFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2tfYWxsb2MsIFN0YWNrKQkJCQlcCi0gICAgZG8JCQkJCQkJ CQlcCi0gICAgICB7CQkJCQkJCQkJXAotCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAotCVlZ Q09QWSAoJnl5cHRyLT5TdGFja19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7CQkJXAotCVN0YWNrID0g Jnl5cHRyLT5TdGFja19hbGxvYzsJCQkJCVwKLQl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBz aXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCi0JeXlwdHIgKz0geXluZXdi eXRlcyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAotICAgICAgfQkJCQkJCQkJCVwKLSAgICB3aGls ZSAoWVlJRCAoMCkpCisjIGRlZmluZSBZWVNUQUNLX1JFTE9DQVRFKFN0YWNrX2FsbG9jLCBTdGFj aykgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisgICAgICAgIFlZU0laRV9UIHl5bmV3Ynl0ZXM7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFlZQ09QWSAoJnl5cHRyLT5TdGFj a19hbGxvYywgU3RhY2ssIHl5c2l6ZSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFN0 YWNrID0gJnl5cHRyLT5TdGFja19hbGxvYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgIHl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNr KSArIFlZU1RBQ0tfR0FQX01BWElNVU07IFwKKyAgICAgICAgeXlwdHIgKz0geXluZXdieXRlcyAv IHNpemVvZiAoKnl5cHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIH0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICB3aGlsZSAoMCkKIAogI2VuZGlmCiAKQEAgLTQxOCw3ICs0MTEsNyBAQCB1bmlv biB5eWFsbG9jCiAgICAgICAgICAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykg ICBcCiAgICAgICAgICAgICAoRHN0KVt5eWldID0gKFNyYylbeXlpXTsgICAgICAgICAgICBcCiAg ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICB3 aGlsZSAoWVlJRCAoMCkpCisgICAgICB3aGlsZSAoMCkKICMgIGVuZGlmCiAjIGVuZGlmCiAjZW5k aWYgLyogIVlZQ09QWV9ORUVERUQgKi8KQEAgLTQyNiw3ICs0MTksNyBAQCB1bmlvbiB5eWFsbG9j CiAvKiBZWUZJTkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAq LwogI2RlZmluZSBZWUZJTkFMICAyOAogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJM RS4gICovCi0jZGVmaW5lIFlZTEFTVCAgIDEyOQorI2RlZmluZSBZWUxBU1QgICAxMzQKIAogLyog WVlOVE9LRU5TIC0tIE51bWJlciBvZiB0ZXJtaW5hbHMuICAqLwogI2RlZmluZSBZWU5UT0tFTlMg IDUwCkBAIC00MzMsMTggKzQyNiwyMCBAQCB1bmlvbiB5eWFsbG9jCiAvKiBZWU5OVFMgLS0gTnVt YmVyIG9mIG5vbnRlcm1pbmFscy4gICovCiAjZGVmaW5lIFlZTk5UUyAgMTQKIC8qIFlZTlJVTEVT IC0tIE51bWJlciBvZiBydWxlcy4gICovCi0jZGVmaW5lIFlZTlJVTEVTICA1MwotLyogWVlOUlVM RVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCi0jZGVmaW5lIFlZTlNUQVRFUyAgOTYKKyNkZWZp bmUgWVlOUlVMRVMgIDU0CisvKiBZWU5TVEFURVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICovCisj ZGVmaW5lIFlZTlNUQVRFUyAgOTgKIAotLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5 bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCisvKiBZWVRSQU5TTEFURVtZ WVhdIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWVggYXMgcmV0dXJuZWQKKyAg IGJ5IHl5bGV4LCB3aXRoIG91dC1vZi1ib3VuZHMgY2hlY2tpbmcuICAqLwogI2RlZmluZSBZWVVO REVGVE9LICAyCiAjZGVmaW5lIFlZTUFYVVRPSyAgIDI5OAogCi0jZGVmaW5lIFlZVFJBTlNMQVRF KFlZWCkJCQkJCQlcCisjZGVmaW5lIFlZVFJBTlNMQVRFKFlZWCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8 PSBZWU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKIAotLyogWVlUUkFO U0xBVEVbWVlMRVhdIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxF WC4gICovCisvKiBZWVRSQU5TTEFURVtUT0tFTi1OVU1dIC0tIFN5bWJvbCBudW1iZXIgY29ycmVz cG9uZGluZyB0byBUT0tFTi1OVU0KKyAgIGFzIHJldHVybmVkIGJ5IHl5bGV4LCB3aXRob3V0IG91 dC1vZi1ib3VuZHMgY2hlY2tpbmcuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXRy YW5zbGF0ZVtdID0KIHsKICAgICAgICAwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLApAQCAtNDgwLDQyICs0NzUsNyBAQCBzdGF0 aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gPQogfTsKIAogI2lmIFlZREVCVUcK LS8qIFlZUFJIU1tZWU5dIC0tIEluZGV4IG9mIHRoZSBmaXJzdCBSSFMgc3ltYm9sIG9mIHJ1bGUg bnVtYmVyIFlZTiBpbgotICAgWVlSSFMuICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5 eXByaHNbXSA9Ci17Ci0gICAgICAgMCwgICAgIDAsICAgICAzLCAgICAgNiwgICAgIDksICAgIDEx LCAgICAxMywgICAgMTUsICAgIDE4LCAgICAyMiwKLSAgICAgIDI2LCAgICAyOCwgICAgMzEsICAg IDM1LCAgICAzOSwgICAgNDEsICAgIDQ1LCAgICA0OSwgICAgNTMsICAgIDU3LAotICAgICAgNjEs ICAgIDY1LCAgICA2OSwgICAgNzMsICAgIDc3LCAgICA4MSwgICAgODUsICAgIDg5LCAgICA5Mywg ICAgOTcsCi0gICAgIDEwMSwgICAxMDMsICAgMTA3LCAgIDEwOSwgICAxMTMsICAgMTE2LCAgIDEx OCwgICAxMjAsICAgMTIyLCAgIDEyNCwKLSAgICAgMTI2LCAgIDEzMCwgICAxMzYsICAgMTM4LCAg IDE0MiwgICAxNDQsICAgMTQ2LCAgIDE0OCwgICAxNTIsICAgMTU1LAotICAgICAxNTcsICAgMTU5 LCAgIDE2MSwgICAxNjYKLX07Ci0KLS8qIFlZUkhTIC0tIEEgYC0xJy1zZXBhcmF0ZWQgbGlzdCBv ZiB0aGUgcnVsZXMnIFJIUy4gICovCi1zdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlyaHNbXSA9 Ci17Ci0gICAgICA1MSwgICAgIDAsICAgIC0xLCAgICAgNSwgICAgNTIsICAgIC0xLCAgICAgNiwg ICAgNTYsICAgIC0xLCAgICAgNywKLSAgICAgIC0xLCAgICAgMywgICAgLTEsICAgICA0LCAgICAt MSwgICAgMzgsICAgIDUyLCAgICAtMSwgICAgNTIsICAgIDM2LAotICAgICAgNTIsICAgIC0xLCAg ICA1MiwgICAgMzcsICAgIDUyLCAgICAtMSwgICAgNTMsICAgIC0xLCAgICAxNCwgICAgNTksCi0g ICAgICAtMSwgICAgNTksICAgIDE1LCAgICA1OSwgICAgLTEsICAgIDQ0LCAgICA1MiwgICAgNDUs ICAgIC0xLCAgICAgNywKLSAgICAgIC0xLCAgICA1OSwgICAgMjAsICAgIDU5LCAgICAtMSwgICAg NTksICAgIDIxLCAgICA1OSwgICAgLTEsICAgIDU5LAotICAgICAgMjIsICAgIDU5LCAgICAtMSwg ICAgNTksICAgIDIzLCAgICA1OSwgICAgLTEsICAgIDU5LCAgICAyNCwgICAgNTksCi0gICAgICAt MSwgICAgNTksICAgIDI1LCAgICA1OSwgICAgLTEsICAgIDU5LCAgICAyOSwgICAgNTksICAgIC0x LCAgICA1OSwKLSAgICAgIDMwLCAgICA1OSwgICAgLTEsICAgIDU5LCAgICAzMSwgICAgNTksICAg IC0xLCAgICA1OSwgICAgMzIsICAgIDU5LAotICAgICAgLTEsICAgIDU5LCAgICAzMywgICAgNTks ICAgIC0xLCAgICA1OSwgICAgMzQsICAgIDU5LCAgICAtMSwgICAgNTksCi0gICAgICAyOCwgICAg NTQsICAgIC0xLCAgICA1OSwgICAgMjYsICAgIDYwLCAgICAtMSwgICAgNTksICAgIDI3LCAgICA2 MCwKLSAgICAgIC0xLCAgICA2MiwgICAgLTEsICAgIDQ2LCAgICA1NSwgICAgNDcsICAgIC0xLCAg ICA1OSwgICAgLTEsICAgIDU1LAotICAgICAgNDgsICAgIDU5LCAgICAtMSwgICAgNTYsICAgIDU3 LCAgICAtMSwgICAgNTcsICAgIC0xLCAgICAgNywgICAgLTEsCi0gICAgICAxMCwgICAgLTEsICAg IDU4LCAgICAtMSwgICAgNjEsICAgIC0xLCAgICAxOCwgICAgIDksICAgIDE5LCAgICAtMSwKLSAg ICAgIDE4LCAgICAgOSwgICAgNDksICAgIDU2LCAgICAxOSwgICAgLTEsICAgICA4LCAgICAtMSwg ICAgNTksICAgIDM1LAotICAgICAgNTksICAgIC0xLCAgICA1OCwgICAgLTEsICAgIDYxLCAgICAt MSwgICAgNjMsICAgIC0xLCAgICAxNiwgICAgNTYsCi0gICAgICAxNywgICAgLTEsICAgIDE2LCAg ICAxNywgICAgLTEsICAgIDExLCAgICAtMSwgICAgMTIsICAgIC0xLCAgICAxMywKLSAgICAgIC0x LCAgICAgOSwgICAgNDQsICAgIDU5LCAgICA0NSwgICAgLTEsICAgICA5LCAgICA0NCwgICAgNTks ICAgIDQ1LAotICAgICAgLTEKLX07Ci0KLS8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3 aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICAqLworICAvKiBZWVJMSU5FW1lZTl0g LS0gU291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0 YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlybGluZVtdID0KIHsKICAgICAgICAwLCAgIDExMiwg ICAxMTIsICAgMTEzLCAgIDExNCwgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLApA QCAtNTIzLDcgKzQ4Myw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlybGluZVtdID0K ICAgICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0 MSwgICAxNDIsICAgMTQzLAogICAgICAxNDYsICAgMTQ3LCAgIDE1MCwgICAxNTEsICAgMTU0LCAg IDE1NSwgICAxNTYsICAgMTU5LCAgIDE2MCwgICAxNjEsCiAgICAgIDE2NCwgICAxNjUsICAgMTY4 LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgIDE3MiwgICAxNzMsICAgMTc0LCAgIDE3NywKLSAgICAg MTg2LCAgIDE5NywgICAyMDQsICAgMjA3CisgICAgIDE4NiwgICAxOTcsICAgMjA0LCAgIDIwNywg ICAyMDgKIH07CiAjZW5kaWYKIApAQCAtNTQ5LDEzICs1MDksMTMgQEAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IHl5dG5hbWVbXSA9CiAgICJcImxpc3RmdW5jdGlvblwiIiwgIlwic3RyaW5ncGFy dFwiIiwgIlwidmFyaWFibGVcIiIsICJcInJlYmFja3JlZlwiIiwKICAgIicoJyIsICInKSciLCAi J3snIiwgIid9JyIsICInLCciLCAiJzonIiwgIiRhY2NlcHQiLCAicm9vdCIsICJleHByIiwKICAg ImNvbXBhcmlzb24iLCAid29yZGxpc3QiLCAid29yZHMiLCAic3RyaW5nIiwgInN0cnBhcnQiLCAi dmFyIiwgIndvcmQiLAotICAicmVnZXgiLCAiYmFja3JlZiIsICJsc3RmdW5jY2FsbCIsICJzdHJm dW5jY2FsbCIsIFlZX05VTEwKKyAgInJlZ2V4IiwgImJhY2tyZWYiLCAibHN0ZnVuY2NhbGwiLCAi c3RyZnVuY2NhbGwiLCBZWV9OVUxMUFRSCiB9OwogI2VuZGlmCiAKICMgaWZkZWYgWVlQUklOVAot LyogWVlUT0tOVU1bWVlMRVgtTlVNXSAtLSBJbnRlcm5hbCB0b2tlbiBudW1iZXIgY29ycmVzcG9u ZGluZyB0bwotICAgdG9rZW4gWVlMRVgtTlVNLiAgKi8KKy8qIFlZVE9LTlVNW05VTV0gLS0gKEV4 dGVybmFsKSB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIChpbnRlcm5hbCkg c3ltYm9sIG51bWJlciBOVU0gKHdoaWNoIG11c3QgYmUgdGhhdCBvZiBhIHRva2VuKS4gICovCiBz dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KIHsKICAgICAgICAwLCAgIDI1 NiwgICAyNTcsICAgMjU4LCAgIDI1OSwgICAyNjAsICAgMjYxLCAgIDI2MiwgICAyNjMsICAgMjY0 LApAQCAtNTY2LDMxICs1MjYsMzUgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tu dW1bXSA9CiB9OwogIyBlbmRpZgogCi0vKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBz eW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5cGVfdWlu dDggeXlyMVtdID0KLXsKLSAgICAgICAwLCAgICA1MCwgICAgNTEsICAgIDUxLCAgICA1MSwgICAg NTIsICAgIDUyLCAgICA1MiwgICAgNTIsICAgIDUyLAotICAgICAgNTIsICAgIDUyLCAgICA1Miwg ICAgNTIsICAgIDUyLCAgICA1MywgICAgNTMsICAgIDUzLCAgICA1MywgICAgNTMsCi0gICAgICA1 MywgICAgNTMsICAgIDUzLCAgICA1MywgICAgNTMsICAgIDUzLCAgICA1MywgICAgNTMsICAgIDUz LCAgICA1MywKLSAgICAgIDU0LCAgICA1NCwgICAgNTUsICAgIDU1LCAgICA1NiwgICAgNTYsICAg IDU2LCAgICA1NywgICAgNTcsICAgIDU3LAotICAgICAgNTgsICAgIDU4LCAgICA1OSwgICAgNTks ICAgIDU5LCAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAgNjAsCi0gICAgICA2MCwgICAg NjEsICAgIDYyLCAgICA2MwotfTsKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTQxCiAKLS8qIFlZUjJb WVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1 bGUgWVlOLiAgKi8KLXN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KKyNkZWZpbmUg eXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQoWXlzdGF0ZSkgXAorICAoISEoKFl5c3RhdGUpID09ICgt NDEpKSkKKworI2RlZmluZSBZWVRBQkxFX05JTkYgLTEKKworI2RlZmluZSB5eXRhYmxlX3ZhbHVl X2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKKyAgMAorCisgIC8qIFlZUEFDVFtTVEFURS1OVU1d IC0tIEluZGV4IGluIFlZVEFCTEUgb2YgdGhlIHBvcnRpb24gZGVzY3JpYmluZworICAgICBTVEFU RS1OVU0uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5cGFjdFtdID0KIHsKLSAgICAg ICAwLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAg IDMsICAgICAzLAotICAgICAgIDEsICAgICAyLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywg ICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsCi0gICAgICAgMywgICAgIDMsICAgICAzLCAgICAg MywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywKLSAgICAgICAxLCAg ICAgMywgICAgIDEsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg ICAxLAotICAgICAgIDMsICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEs ICAgICAzLCAgICAgMiwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICA0LCAgICAgNAorICAg ICAgMjIsICAgIDQ4LCAgICA2MCwgICAtNDEsICAgIDE2LCAgIC00MSwgICAtNDEsICAgLTQxLCAg IC00MSwgICAtMjQsCisgICAgIC00MSwgICAxMDIsICAgICA4LCAgICAzMiwgICAgNDgsICAgIDQ4 LCAgIC0yMywgICAtNDEsICAgLTQxLCAgICA3NCwKKyAgICAgLTQxLCAgIC00MSwgICAtNDEsICAg LTQxLCAgICA1MCwgICAtNDEsICAgLTQxLCAgIC00MSwgICAtNDEsICAgMTAyLAorICAgICAgLTMs ICAgLTQxLCAgIDExNiwgICAgMjMsICAgLTQxLCAgICA4NywgICAgNDgsICAgIDQ4LCAgIDEwMiwg ICAxMDIsCisgICAgIDEwMiwgICAxMDIsICAgMTAyLCAgIDEwMiwgICAxMDIsICAgIDY4LCAgICA2 OCwgICAgLTYsICAgMTAyLCAgIDEwMiwKKyAgICAgMTAyLCAgIDEwMiwgICAxMDIsICAgMTAyLCAg IDEwMiwgICAtNDEsICAgLTQwLCAgIC0yOCwgICAtNDEsICAgLTQxLAorICAgICAgNjAsICAgLTQx LCAgIC0yMywgICAgMjgsICAgIC0zLCAgICAtMywgICAgLTMsICAgIC0zLCAgICAtMywgICAgLTMs CisgICAgICAtMywgICAtNDEsICAgLTQxLCAgIC00MSwgICAtNDEsICAgIDMwLCAgIDEwMiwgICAt NDEsICAgLTQxLCAgICAtMywKKyAgICAgIC0zLCAgICAtMywgICAgLTMsICAgIC0zLCAgICAtMywg ICAgLTMsICAgLTQxLCAgIDEwMiwgICAtNDEsICAgMTAzLAorICAgICAxMDIsICAgIDM2LCAgICAt MywgICAgLTMsICAgLTQxLCAgIC0yNiwgICAtNDEsICAgLTQxCiB9OwogCi0vKiBZWURFRkFDVFtT VEFURS1OQU1FXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVN LgotICAgUGVyZm9ybWVkIHdoZW4gWVlUQUJMRSBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVs c2UgdG8gZG8uICBaZXJvCi0gICBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbiBlcnJvci4gICovCisg IC8qIFlZREVGQUNUW1NUQVRFLU5VTV0gLS0gRGVmYXVsdCByZWR1Y3Rpb24gbnVtYmVyIGluIHN0 YXRlIFNUQVRFLU5VTS4KKyAgICAgUGVyZm9ybWVkIHdoZW4gWVlUQUJMRSBkb2VzIG5vdCBzcGVj aWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybworICAgICBtZWFucyB0aGUgZGVmYXVsdCBp cyBhbiBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQog ewogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDQsICAgICAwLCAgICAgNSwgICAgIDYsICAg IDE0LCAgICA0MiwgICAgIDAsCkBAIC01OTgsOTAgKzU2Miw2OCBAQCBzdGF0aWMgY29uc3QgeXl0 eXBlX3VpbnQ4IHl5ZGVmYWN0W10gPQogICAgICAgNDUsICAgIDQ2LCAgICAzNiwgICAgMzcsICAg ICAzLCAgICAzNSwgICAgMzgsICAgIDM5LCAgICAgMSwgICAgIDAsCiAgICAgICAxMSwgICAgNDgs ICAgICAwLCAgICAgMCwgICAgIDcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwK ICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg ICAzNCwgICAgIDAsICAgIDQ3LCAgICA0MCwgICAgIDAsCi0gICAgICAxMywgICAgIDgsICAgICA5 LCAgICAxMiwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAg IDQ5LCAgICA1MCwgICAgMjgsICAgIDI5LCAgICAgMCwgICAgIDAsICAgIDI3LCAgICAzMCwgICAg MjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDQzLCAgICA1Mywg ICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsCi0gICAgICA0MSwgICAgIDAsICAgIDMxLCAgICAg MCwgICAgNTIsICAgIDMzCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg IDM0LCAgICAgMCwgICAgMzIsICAgIDQ3LCAgICA0MCwKKyAgICAgICAwLCAgICAxMywgICAgIDgs ICAgICA5LCAgICAxMiwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAorICAgICAg MjAsICAgIDQ5LCAgICA1MCwgICAgMjgsICAgIDI5LCAgICAgMCwgICAgIDAsICAgIDI3LCAgICAz MCwgICAgMjEsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDQzLCAg ICA1NCwgICAgIDAsICAgIDUzLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMz LCAgICA0MSwgICAgIDAsICAgIDMxLCAgICA1MgogfTsKIAotLyogWVlERUZHT1RPW05URVJNLU5V TV0uICAqLwotc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5ZGVmZ290b1tdID0KKyAgLyogWVlQ R09UT1tOVEVSTS1OVU1dLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXBnb3RvW10g PQogewotICAgICAgLTEsICAgICA0LCAgICAxNiwgICAgMTcsICAgIDc2LCAgICA4OCwgICAgMjQs ICAgIDI1LCAgICAxOCwgICAgMTksCi0gICAgICA3MiwgICAgMjAsICAgIDc3LCAgICAyMQorICAg ICAtNDEsICAgLTQxLCAgICAzOSwgICAtNDEsICAgLTQxLCAgICAgMSwgICAtMTAsICAgLTIwLCAg ICAtMiwgICAgLTUsCisgICAgICAzNSwgICAgLTEsICAgLTQxLCAgIC00MQogfTsKIAotLyogWVlQ QUNUW1NUQVRFLU5VTV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmli aW5nCi0gICBTVEFURS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMzAKLXN0YXRpYyBj b25zdCB5eXR5cGVfaW50OCB5eXBhY3RbXSA9CisgIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAg Ki8KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eWRlZmdvdG9bXSA9CiB7Ci0gICAgICAgMiwg ICAgNjAsICAgICA3LCAgIC0zMCwgICAgMTMsICAgLTMwLCAgIC0zMCwgICAtMzAsICAgLTMwLCAg IC0yOSwKLSAgICAgLTMwLCAgICA0MywgICAgNzMsICAgIDEyLCAgICA2MCwgICAgNjAsICAgIC04 LCAgIC0zMCwgICAtMzAsICAgIDg1LAotICAgICAtMzAsICAgLTMwLCAgIC0zMCwgICAtMzAsICAg IDc5LCAgIC0zMCwgICAtMzAsICAgLTMwLCAgIC0zMCwgICAgNDMsCi0gICAgICAyNSwgICAtMzAs ICAgMTExLCAgIC0xNywgICAtMzAsICAgIDE3LCAgICA2MCwgICAgNjAsICAgIDQzLCAgICA0MywK LSAgICAgIDQzLCAgICA0MywgICAgNDMsICAgIDQzLCAgICA0MywgICAxMTQsICAgMTE0LCAgICAt NCwgICAgNDMsICAgIDQzLAotICAgICAgNDMsICAgIDQzLCAgICA0MywgICAgNDMsICAgIDQzLCAg IC0zMCwgICAtMTksICAgLTMwLCAgIC0zMCwgICAgIDcsCi0gICAgIC0zMCwgICAgLTgsICAgLTEw LCAgICAyNSwgICAgMjUsICAgIDI1LCAgICAyNSwgICAgMjUsICAgIDI1LCAgICAyNSwKLSAgICAg LTMwLCAgIC0zMCwgICAtMzAsICAgLTMwLCAgICAzMSwgICAgNDMsICAgLTMwLCAgIC0zMCwgICAg MjUsICAgIDI1LAotICAgICAgMjUsICAgIDI1LCAgICAyNSwgICAgMjUsICAgIDI1LCAgIC0zMCwg ICAgODMsICAgIDQzLCAgICAyNCwgICAgMjUsCi0gICAgIC0zMCwgICAgMjAsICAgLTMwLCAgICA0 MywgICAtMzAsICAgIDI1CisgICAgICAtMSwgICAgIDQsICAgIDE2LCAgICAxNywgICAgNzcsICAg IDU2LCAgICAyNCwgICAgMjUsICAgIDE4LCAgICAxOSwKKyAgICAgIDczLCAgICAyMCwgICAgNzgs ICAgIDIxCiB9OwogCi0vKiBZWVBHT1RPW05URVJNLU5VTV0uICAqLwotc3RhdGljIGNvbnN0IHl5 dHlwZV9pbnQ4IHl5cGdvdG9bXSA9Ci17Ci0gICAgIC0zMCwgICAtMzAsICAgICA0LCAgIC0zMCwg ICAtMzAsICAgLTMwLCAgICAtOSwgICAtMjAsICAgIC0yLCAgICAtNSwKLSAgICAgIDMzLCAgICAt MSwgICAtMzAsICAgLTMwCi19OwotCi0vKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1dXS4gIFdo YXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKLSAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0 IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0aGUgcnVsZSB3aGljaAotICAgbnVtYmVyIGlz IHRoZSBvcHBvc2l0ZS4gIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8KLSNkZWZp bmUgWVlUQUJMRV9OSU5GIC0xCisgIC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dIC0tIFdo YXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKKyAgICAgcG9zaXRpdmUsIHNoaWZ0IHRo YXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdob3NlCisgICAgIG51bWJl ciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiBz dGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dGFibGVbXSA9CiB7Ci0gICAgICAyNiwgICAgMjcs ICAgIDU4LCAgICAzMiwgICAgNTUsICAgIDc0LCAgICAzMCwgICAgIDEsICAgICAyLCAgICAgMywK LSAgICAgIDI2LCAgICAyNywgICAgNTUsICAgIDI4LCAgICAyMiwgICAgMjksICAgIDU0LCAgICAy MywgICAgMzQsICAgIDM1LAotICAgICAgMTAsICAgIDMzLCAgICAyNiwgICAgMjcsICAgIDU2LCAg ICAxMywgICAgODUsICAgIDM3LCAgICAzNiwgICAgMzcsCi0gICAgICAyNiwgICAgMjcsICAgIDU5 LCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwKLSAgICAg IDYxLCAgICA2MiwgICAgNzUsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAg ODMsICAgIDg0LAotICAgICAgODYsICAgICA4LCAgICAgOSwgICAgMzYsICAgIDM3LCAgICA1NCwg ICAgMTAsICAgIDI2LCAgICAyNywgICAgMTIsCi0gICAgICA1NCwgICAgMTMsICAgIDYwLCAgICAg NSwgICAgIDYsICAgIDk0LCAgICA1NSwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDg5LCAg ICA5MiwgICAgOTMsICAgIDEwLCAgICAxMSwgICAgODcsICAgIDEyLCAgICAgMCwgICAgMTMsICAg IDczLAotICAgICAgMjIsICAgICAwLCAgICA5MSwgICAgMjMsICAgIDI2LCAgICAyNywgICAgMTAs ICAgICAwLCAgICA5NSwgICAgMjMsCi0gICAgICAzMSwgICAgMTMsICAgIDEwLCAgICAyMywgICAg IDAsICAgICAwLCAgICAxMCwgICAgMTMsICAgIDE0LCAgICAgMCwKLSAgICAgIDM4LCAgICAxMywg ICAgOTAsICAgICAwLCAgICAxNSwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAot ICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUx LCAgICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgMjMsICAgICAwLCAgICAgMCwgICAgMTAsICAg IDcwLCAgICA3MSwgICAgIDAsICAgIDU3LCAgICAxMworICAgICAgMjYsICAgIDI3LCAgICAzMiwg ICAgNzUsICAgIDU1LCAgICA4NiwgICAgMzAsICAgIDU0LCAgICA4NywgICAgNTQsCisgICAgICAy NiwgICAgMjcsICAgIDU1LCAgICAzNiwgICAgMzcsICAgIDIyLCAgICAyOCwgICAgODgsICAgIDIz LCAgICA5NywKKyAgICAgIDI5LCAgICAxMCwgICAgMjYsICAgIDI3LCAgICA1NywgICAgMzEsICAg IDEzLCAgICAgMSwgICAgIDIsICAgICAzLAorICAgICAgMjYsICAgIDI3LCAgICA1NCwgICAgNjQs ICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCisgICAgICA3NiwgICAg MzMsICAgIDU5LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4 NSwKKyAgICAgIDg5LCAgICAgNSwgICAgIDYsICAgIDM0LCAgICAzNSwgICAgIDcsICAgICA4LCAg ICAgOSwgICAgMjYsICAgIDI3LAorICAgICAgMjMsICAgIDEwLCAgICAxMSwgICAgMTAsICAgIDEy LCAgICAzNywgICAgMTMsICAgIDIyLCAgICAxMywgICAgNTUsCisgICAgICAyMywgICAgOTIsICAg IDYwLCAgICAxMCwgICAgOTAsICAgIDYyLCAgICA2MywgICAgOTEsICAgIDEzLCAgICA3MSwKKyAg ICAgIDcyLCAgICA3NCwgICAgOTMsICAgIDk2LCAgICA4NywgICAgOTUsICAgIDE0LCAgICAyNiwg ICAgMjcsICAgIDM4LAorICAgICAgIDAsICAgICAwLCAgICAxNSwgICAgIDAsICAgIDM5LCAgICA0 MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAg ICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAgICA4 LCAgICAgOSwgICAgIDAsICAgIDIzLCAgICAgMCwgICAgMTAsICAgIDEwLCAgICAgMCwgICAgMTIs ICAgICAwLAorICAgICAgMTMsICAgIDEzLCAgICA5NCwgICAgMzYsICAgIDM3LCAgICAgMCwgICAg MjMsICAgICAwLCAgICAgMCwgICAgMTAsCisgICAgICAgMCwgICAgIDAsICAgIDYxLCAgICA1OCwg ICAgMTMKIH07CiAKLSNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQoWXlzdGF0ZSkgXAot ICAoISEoKFl5c3RhdGUpID09ICgtMzApKSkKLQotI2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vy cm9yKFl5dGFibGVfdmFsdWUpIFwKLSAgWVlJRCAoMCkKLQogc3RhdGljIGNvbnN0IHl5dHlwZV9p bnQ4IHl5Y2hlY2tbXSA9CiB7Ci0gICAgICAgMiwgICAgIDIsICAgIDE5LCAgICAxMiwgICAgMjQs ICAgICA5LCAgICAxMSwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgIDEyLCAgICAxMiwgICAg MzIsICAgICAwLCAgICAgNywgICAgNDQsICAgIDM1LCAgICAxMCwgICAgMTQsICAgIDE1LAotICAg ICAgMTMsICAgICA5LCAgICAyNCwgICAgMjQsICAgIDI5LCAgICAxOCwgICAgNDUsICAgIDM3LCAg ICAzNiwgICAgMzcsCi0gICAgICAzMiwgICAgMzIsICAgIDQ5LCAgICAzOCwgICAgMzksICAgIDQw LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKLSAgICAgIDM2LCAgICAzNywgICAgNDYsICAg IDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LAotICAgICAgNTks ICAgICA4LCAgICAgOSwgICAgMzYsICAgIDM3LCAgICAzNSwgICAgMTMsICAgIDU5LCAgICA1OSwg ICAgMTYsCi0gICAgICAzNSwgICAgMTgsICAgIDQ1LCAgICAgMywgICAgIDQsICAgIDQ1LCAgICA4 NiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDc1LCAgICA0NywgICAgNDgsICAgIDEzLCAg ICAxNCwgICAgNDQsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDQ2LAotICAgICAgIDcsICAgIC0x LCAgICA4NywgICAgMTAsICAgIDg2LCAgICA4NiwgICAgMTMsICAgIC0xLCAgICA5MywgICAgMTAs Ci0gICAgICAxNywgICAgMTgsICAgIDEzLCAgICAxMCwgICAgLTEsICAgIC0xLCAgICAxMywgICAg MTgsICAgIDM4LCAgICAtMSwKLSAgICAgIDE1LCAgICAxOCwgICAgMTksICAgIC0xLCAgICA0NCwg ICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgICAy NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsCi0gICAg ICAzNSwgICAgMTAsICAgIC0xLCAgICAtMSwgICAgMTMsICAgIDExLCAgICAxMiwgICAgLTEsICAg IDE3LCAgICAxOAorICAgICAgIDIsICAgICAyLCAgICAxMiwgICAgIDksICAgIDI0LCAgICA0NSwg ICAgMTEsICAgIDM1LCAgICA0OCwgICAgMzUsCisgICAgICAxMiwgICAgMTIsICAgIDMyLCAgICAz NiwgICAgMzcsICAgICA3LCAgICAgMCwgICAgNDUsICAgIDEwLCAgICA0NSwKKyAgICAgIDQ0LCAg ICAxMywgICAgMjQsICAgIDI0LCAgICAyOSwgICAgMTcsICAgIDE4LCAgICAgNSwgICAgIDYsICAg ICA3LAorICAgICAgMzIsICAgIDMyLCAgICAzNSwgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs ICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NiwgICAgIDksICAgIDE5LCAgICA0OCwgICAg NDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAgIDYwLCAgICAgMywg ICAgIDQsICAgIDE0LCAgICAxNSwgICAgIDcsICAgICA4LCAgICAgOSwgICAgNjAsICAgIDYwLAor ICAgICAgMTAsICAgIDEzLCAgICAxNCwgICAgMTMsICAgIDE2LCAgICAzNywgICAgMTgsICAgICA3 LCAgICAxOCwgICAgODksCisgICAgICAxMCwgICAgNzYsICAgIDQ5LCAgICAxMywgICAgNDQsICAg IDM2LCAgICAzNywgICAgNzYsICAgIDE4LCAgICAxMSwKKyAgICAgIDEyLCAgICA0NiwgICAgODcs ICAgIDQ3LCAgICA0OCwgICAgOTAsICAgIDM4LCAgICA4OSwgICAgODksICAgIDE1LAorICAgICAg LTEsICAgIC0xLCAgICA0NCwgICAgLTEsICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy NCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKKyAgICAgICA4LCAgICAgOSwgICAgLTEsICAgIDEw LCAgICAtMSwgICAgMTMsICAgIDEzLCAgICAtMSwgICAgMTYsICAgIC0xLAorICAgICAgMTgsICAg IDE4LCAgICAxOSwgICAgMzYsICAgIDM3LCAgICAtMSwgICAgMTAsICAgIC0xLCAgICAtMSwgICAg MTMsCisgICAgICAtMSwgICAgLTEsICAgIDQ1LCAgICAxNywgICAgMTgKIH07CiAKLS8qIFlZU1RP U1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRoZSkgYWNjZXNzaW5nCi0g ICBzeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLiAgKi8KKyAgLyogWVlTVE9TW1NUQVRFLU5VTV0g LS0gVGhlIChpbnRlcm5hbCBudW1iZXIgb2YgdGhlKSBhY2Nlc3NpbmcKKyAgICAgc3ltYm9sIG9m IHN0YXRlIFNUQVRFLU5VTS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1td ID0KIHsKICAgICAgICAwLCAgICAgNSwgICAgIDYsICAgICA3LCAgICA1MSwgICAgIDMsICAgICA0 LCAgICAgNywgICAgIDgsICAgICA5LApAQCAtNjg5LDM4ICs2MzEsNDYgQEAgc3RhdGljIGNvbnN0 IHl5dHlwZV91aW50OCB5eXN0b3NbXSA9CiAgICAgICA2MSwgICAgNjMsICAgICA3LCAgICAxMCwg ICAgNTYsICAgIDU3LCAgICA1OCwgICAgNjEsICAgICAwLCAgICA0NCwKICAgICAgIDU5LCAgICAx NywgICAgNTYsICAgICA5LCAgICA1MiwgICAgNTIsICAgIDM2LCAgICAzNywgICAgMTUsICAgIDIw LAogICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAg IDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs ICAgIDU3LCAgICA1OSwgICAgMTcsICAgIDE5LCAgICA0OSwKLSAgICAgIDQ1LCAgICA1MiwgICAg NTIsICAgIDU5LCAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAgNTksICAgIDU5LAotICAg ICAgMTEsICAgIDEyLCAgICA2MCwgICAgNjAsICAgICA5LCAgICA0NiwgICAgNTQsICAgIDYyLCAg ICA1OSwgICAgNTksCi0gICAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAgNTksICAgIDQ1 LCAgICA1NiwgICAgNDQsICAgIDU1LCAgICA1OSwKLSAgICAgIDE5LCAgICA1OSwgICAgNDcsICAg IDQ4LCAgICA0NSwgICAgNTkKKyAgICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwg ICAgNTcsICAgIDU1LCAgICA1OSwgICAgMTcsICAgIDE5LAorICAgICAgNDksICAgIDQ1LCAgICA1 MiwgICAgNTIsICAgIDU5LCAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAgNTksCisgICAg ICA1OSwgICAgMTEsICAgIDEyLCAgICA2MCwgICAgNjAsICAgICA5LCAgICA0NiwgICAgNTQsICAg IDYyLCAgICA1OSwKKyAgICAgIDU5LCAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAgNTks ICAgIDQ1LCAgICA0OCwgICAgNDUsICAgIDU2LAorICAgICAgNDQsICAgIDU1LCAgICA1OSwgICAg NTksICAgIDE5LCAgICA1OSwgICAgNDcsICAgIDQ1CiB9OwogCi0jZGVmaW5lIHl5ZXJyb2sJCSh5 eWVycnN0YXR1cyA9IDApCi0jZGVmaW5lIHl5Y2xlYXJpbgkoeXljaGFyID0gWVlFTVBUWSkKLSNk ZWZpbmUgWVlFTVBUWQkJKC0yKQotI2RlZmluZSBZWUVPRgkJMAorICAvKiBZWVIxW1lZTl0gLS0g U3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KK3N0YXRp YyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtdID0KK3sKKyAgICAgICAwLCAgICA1MCwgICAgNTEs ICAgIDUxLCAgICA1MSwgICAgNTIsICAgIDUyLCAgICA1MiwgICAgNTIsICAgIDUyLAorICAgICAg NTIsICAgIDUyLCAgICA1MiwgICAgNTIsICAgIDUyLCAgICA1MywgICAgNTMsICAgIDUzLCAgICA1 MywgICAgNTMsCisgICAgICA1MywgICAgNTMsICAgIDUzLCAgICA1MywgICAgNTMsICAgIDUzLCAg ICA1MywgICAgNTMsICAgIDUzLCAgICA1MywKKyAgICAgIDU0LCAgICA1NCwgICAgNTUsICAgIDU1 LCAgICA1NiwgICAgNTYsICAgIDU2LCAgICA1NywgICAgNTcsICAgIDU3LAorICAgICAgNTgsICAg IDU4LCAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAgNTksICAgIDU5LCAgICA1OSwgICAg NjAsCisgICAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjMKK307CiAKLSNkZWZpbmUg WVlBQ0NFUFQJZ290byB5eWFjY2VwdGxhYgotI2RlZmluZSBZWUFCT1JUCQlnb3RvIHl5YWJvcnRs YWIKLSNkZWZpbmUgWVlFUlJPUgkJZ290byB5eWVycm9ybGFiCisgIC8qIFlZUjJbWVlOXSAtLSBO dW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8K K3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMltdID0KK3sKKyAgICAgICAwLCAgICAgMiwg ICAgIDIsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDMsICAgICAzLAor ICAgICAgIDEsICAgICAyLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsICAgICAz LCAgICAgMywgICAgIDMsCisgICAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAg ICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywKKyAgICAgICAxLCAgICAgMywgICAgIDEs ICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAg IDMsICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAzLCAgICAg MiwgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICA0LCAgICAgNCwgICAgIDQKK307CiAKIAot LyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVy ZSB0ZW1wb3JhcmlseQotICAgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5p bmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4KLSAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxh bnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgSG93ZXZlciwKLSAgIFlZRkFJTCBhcHBlYXJz IHRvIGJlIGluIHVzZS4gIE5ldmVydGhlbGVzcywgaXQgaXMgZm9ybWFsbHkgZGVwcmVjYXRlZAot ICAgaW4gQmlzb24gMi40LjIncyBORVdTIGVudHJ5LCB3aGVyZSBhIHBsYW4gdG8gcGhhc2UgaXQg b3V0IGlzCi0gICBkaXNjdXNzZWQuICAqLworI2RlZmluZSB5eWVycm9rICAgICAgICAgKHl5ZXJy c3RhdHVzID0gMCkKKyNkZWZpbmUgeXljbGVhcmluICAgICAgICh5eWNoYXIgPSBZWUVNUFRZKQor I2RlZmluZSBZWUVNUFRZICAgICAgICAgKC0yKQorI2RlZmluZSBZWUVPRiAgICAgICAgICAgMAog Ci0jZGVmaW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgotI2lmIGRlZmluZWQgWVlGQUlMCi0gIC8q IFRoaXMgaXMgaGVyZSB0byBzdXBwcmVzcyB3YXJuaW5ncyBmcm9tIHRoZSBHQ0MgY3BwJ3MKLSAg ICAgLVd1bnVzZWQtbWFjcm9zLiAgTm9ybWFsbHkgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdCB3 YXJuaW5nLCBidXQKLSAgICAgc29tZSB1c2VycyBkbywgYW5kIHdlIHdhbnQgdG8gbWFrZSBpdCBl YXN5IGZvciB1c2VycyB0byByZW1vdmUKLSAgICAgWVlGQUlMIHVzZXMsIHdoaWNoIHdpbGwgcHJv ZHVjZSB3YXJuaW5ncyBmcm9tIEJpc29uIDIuNS4gICovCi0jZW5kaWYKKyNkZWZpbmUgWVlBQ0NF UFQgICAgICAgIGdvdG8geXlhY2NlcHRsYWIKKyNkZWZpbmUgWVlBQk9SVCAgICAgICAgIGdvdG8g eXlhYm9ydGxhYgorI2RlZmluZSBZWUVSUk9SICAgICAgICAgZ290byB5eWVycm9ybGFiCiAKKwog I2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCiAKICNkZWZpbmUgWVlCQUNL VVAoVG9rZW4sIFZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03 MzYsMjggKzY4NiwxNiBAQCBkbwogICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICB5eWVycm9yIChj dHgsIFlZXygic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpKTsgXAotICAgICAgWVlFUlJP UjsJCQkJCQkJXAotICAgIH0JCQkJCQkJCVwKLXdoaWxlIChZWUlEICgwKSkKKyAgICAgIFlZRVJS T1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAord2hpbGUgKDApCiAKIC8qIEVycm9yIHRva2VuIG51bWJlciAqLwotI2RlZmluZSBZ WVRFUlJPUgkxCi0jZGVmaW5lIFlZRVJSQ09ERQkyNTYKKyNkZWZpbmUgWVlURVJST1IgICAgICAg IDEKKyNkZWZpbmUgWVlFUlJDT0RFICAgICAgIDI1NgogCiAKLS8qIFRoaXMgbWFjcm8gaXMgcHJv dmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICovCi0jaWZuZGVmIFlZX0xPQ0FUSU9O X1BSSU5UCi0jIGRlZmluZSBZWV9MT0NBVElPTl9QUklOVChGaWxlLCBMb2MpICgodm9pZCkgMCkK LSNlbmRpZgogCi0KLS8qIFlZTEVYIC0tIGNhbGxpbmcgYHl5bGV4JyB3aXRoIHRoZSByaWdodCBh cmd1bWVudHMuICAqLwotI2lmZGVmIFlZTEVYX1BBUkFNCi0jIGRlZmluZSBZWUxFWCB5eWxleCAo Jnl5bHZhbCwgWVlMRVhfUEFSQU0pCi0jZWxzZQotIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2 YWwsIHl5c2Nhbm5lcikKLSNlbmRpZgotCiAvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3Rl ZC4gICovCiAjaWYgWVlERUJVRwogCkBAIC03NjYsNTIgKzcwNCw0NSBAQCBkbwogIyAgZGVmaW5l IFlZRlBSSU5URiBmcHJpbnRmCiAjIGVuZGlmCiAKLSMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQkJ CVwKLWRvIHsJCQkJCQlcCi0gIGlmICh5eWRlYnVnKQkJCQkJXAotICAgIFlZRlBSSU5URiBBcmdz OwkJCQlcCi19IHdoaWxlIChZWUlEICgwKSkKKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKSAgICAg ICAgICAgICAgICAgICAgICAgIFwKK2RvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICBZWUZQUklOVEYgQXJnczsgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKK30gd2hpbGUgKDApCiAKLSMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChUaXRsZSwgVHlwZSwg VmFsdWUsIExvY2F0aW9uKQkJCSAgXAotZG8gewkJCQkJCQkJCSAgXAotICBpZiAoeXlkZWJ1ZykJ CQkJCQkJCSAgXAotICAgIHsJCQkJCQkJCQkgIFwKLSAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAi JXMgIiwgVGl0bGUpOwkJCQkJICBcCi0gICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwJCQkJ CQkgIFwKLQkJICBUeXBlLCBWYWx1ZSwgY3R4KTsgXAotICAgICAgWVlGUFJJTlRGIChzdGRlcnIs ICJcbiIpOwkJCQkJCSAgXAotICAgIH0JCQkJCQkJCQkgIFwKLX0gd2hpbGUgKFlZSUQgKDApKQor LyogVGhpcyBtYWNybyBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKi8K KyNpZm5kZWYgWVlfTE9DQVRJT05fUFJJTlQKKyMgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZp bGUsIExvYykgKCh2b2lkKSAwKQorI2VuZGlmCiAKIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS4KLXwgUHJpbnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8Ci1gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRp dGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pICAgICAgICAgICAgICAgICAgICBcCitkbyB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRpdGxlKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgIHl5X3N5bWJvbF9wcmludCAoc3RkZXJyLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgVHlw ZSwgVmFsdWUsIGN0eCk7IFwKKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cit9IHdoaWxlICgwKQogCi0vKkFSR1NVU0VEKi8KLSNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk ZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl ZmluZWQgX01TQ19WRVIpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS4KK3wgUHJpbnQgdGhpcyBzeW1ib2wncyB2YWx1ZSBvbiBZWU9VVFBVVC4gIHwKK2AtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogc3RhdGljIHZvaWQKIHl5 X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUg Y29uc3QgKiBjb25zdCB5eXZhbHVlcCwgYXBfZXhwcl9wYXJzZV9jdHhfdCAqY3R4KQotI2Vsc2UK LXN0YXRpYyB2b2lkCi15eV9zeW1ib2xfdmFsdWVfcHJpbnQgKHl5b3V0cHV0LCB5eXR5cGUsIHl5 dmFsdWVwLCBjdHgpCi0gICAgRklMRSAqeXlvdXRwdXQ7Ci0gICAgaW50IHl5dHlwZTsKLSAgICBZ WVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7Ci0gICAgYXBfZXhwcl9wYXJzZV9jdHhfdCAq Y3R4OwotI2VuZGlmCiB7CiAgIEZJTEUgKnl5byA9IHl5b3V0cHV0OwogICBZWVVTRSAoeXlvKTsK KyAgWVlVU0UgKGN0eCk7CiAgIGlmICgheXl2YWx1ZXApCiAgICAgcmV0dXJuOwotICBZWVVTRSAo Y3R4KTsKICMgaWZkZWYgWVlQUklOVAogICBpZiAoeXl0eXBlIDwgWVlOVE9LRU5TKQogICAgIFlZ UFJJTlQgKHl5b3V0cHV0LCB5eXRva251bVt5eXR5cGVdLCAqeXl2YWx1ZXApOwotIyBlbHNlCi0g IFlZVVNFICh5eW91dHB1dCk7CiAjIGVuZGlmCiAgIFlZVVNFICh5eXR5cGUpOwogfQpAQCAtODIx LDIzICs3NTIsMTEgQEAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50 IHl5dHlwZSwKIHwgUHJpbnQgdGhpcyBzeW1ib2wgb24gWVlPVVRQVVQuICB8CiBgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm aW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp bmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKIHl5X3N5bWJvbF9wcmludCAoRklMRSAqeXlvdXRw dXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgYXBfZXhwcl9w YXJzZV9jdHhfdCAqY3R4KQotI2Vsc2UKLXN0YXRpYyB2b2lkCi15eV9zeW1ib2xfcHJpbnQgKHl5 b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCBjdHgpCi0gICAgRklMRSAqeXlvdXRwdXQ7Ci0gICAg aW50IHl5dHlwZTsKLSAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7Ci0gICAgYXBf ZXhwcl9wYXJzZV9jdHhfdCAqY3R4OwotI2VuZGlmCiB7Ci0gIGlmICh5eXR5cGUgPCBZWU5UT0tF TlMpCi0gICAgWVlGUFJJTlRGICh5eW91dHB1dCwgInRva2VuICVzICgiLCB5eXRuYW1lW3l5dHlw ZV0pOwotICBlbHNlCi0gICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIm50ZXJtICVzICgiLCB5eXRu YW1lW3l5dHlwZV0pOworICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiJXMgJXMgKCIsCisgICAgICAg ICAgICAgeXl0eXBlIDwgWVlOVE9LRU5TID8gInRva2VuIiA6ICJudGVybSIsIHl5dG5hbWVbeXl0 eXBlXSk7CiAKICAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZh bHVlcCwgY3R4KTsKICAgWVlGUFJJTlRGICh5eW91dHB1dCwgIikiKTsKQEAgLTg0OCwxNiArNzY3 LDggQEAgeXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFkK IHwgVE9QIChpbmNsdWRlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLSNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBk ZWZpbmVkIF9fQzk5X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRl ZmluZWQgX01TQ19WRVIpCiBzdGF0aWMgdm9pZAogeXlfc3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQx NiAqeXlib3R0b20sIHl5dHlwZV9pbnQxNiAqeXl0b3ApCi0jZWxzZQotc3RhdGljIHZvaWQKLXl5 X3N0YWNrX3ByaW50ICh5eWJvdHRvbSwgeXl0b3ApCi0gICAgeXl0eXBlX2ludDE2ICp5eWJvdHRv bTsKLSAgICB5eXR5cGVfaW50MTYgKnl5dG9wOwotI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3Rk ZXJyLCAiU3RhY2sgbm93Iik7CiAgIGZvciAoOyB5eWJvdHRvbSA8PSB5eXRvcDsgeXlib3R0b20r KykKQEAgLTg2OCwxMSArNzc5LDExIEBAIHl5X3N0YWNrX3ByaW50ICh5eXR5cGVfaW50MTYgKnl5 Ym90dG9tLCB5eXR5cGVfaW50CiAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKIH0KIAotIyBk ZWZpbmUgWVlfU1RBQ0tfUFJJTlQoQm90dG9tLCBUb3ApCQkJCVwKLWRvIHsJCQkJCQkJCVwKLSAg aWYgKHl5ZGVidWcpCQkJCQkJCVwKLSAgICB5eV9zdGFja19wcmludCAoKEJvdHRvbSksIChUb3Ap KTsJCQkJXAotfSB3aGlsZSAoWVlJRCAoMCkpCisjIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0 b20sIFRvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaWYgKHl5 ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgeXlfc3RhY2tfcHJpbnQgKChCb3R0b20pLCAoVG9wKSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorfSB3aGlsZSAoMCkKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KQEAgLTg3OSwzOSArNzkwLDMxIEBAIHl5X3N0YWNrX3By aW50ICh5eXR5cGVfaW50MTYgKnl5Ym90dG9tLCB5eXR5cGVfaW50CiB8IFJlcG9ydCB0aGF0IHRo ZSBZWVJVTEUgaXMgZ29pbmcgdG8gYmUgcmVkdWNlZC4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jaWYgKGRlZmluZWQgX19TVERDX18g fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8 fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIHZvaWQKLXl5X3JlZHVjZV9wcmludCAoWVlTVFlQ RSAqeXl2c3AsIGludCB5eXJ1bGUsIGFwX2V4cHJfcGFyc2VfY3R4X3QgKmN0eCkKLSNlbHNlCi1z dGF0aWMgdm9pZAoteXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlydWxlLCBjdHgpCi0gICAgWVlT VFlQRSAqeXl2c3A7Ci0gICAgaW50IHl5cnVsZTsKLSAgICBhcF9leHByX3BhcnNlX2N0eF90ICpj dHg7Ci0jZW5kaWYKK3l5X3JlZHVjZV9wcmludCAoeXl0eXBlX2ludDE2ICp5eXNzcCwgWVlTVFlQ RSAqeXl2c3AsIGludCB5eXJ1bGUsIGFwX2V4cHJfcGFyc2VfY3R4X3QgKmN0eCkKIHsKKyAgdW5z aWduZWQgbG9uZyBpbnQgeXlsbm8gPSB5eXJsaW5lW3l5cnVsZV07CiAgIGludCB5eW5yaHMgPSB5 eXIyW3l5cnVsZV07CiAgIGludCB5eWk7Ci0gIHVuc2lnbmVkIGxvbmcgaW50IHl5bG5vID0geXly bGluZVt5eXJ1bGVdOwogICBZWUZQUklOVEYgKHN0ZGVyciwgIlJlZHVjaW5nIHN0YWNrIGJ5IHJ1 bGUgJWQgKGxpbmUgJWx1KTpcbiIsCi0JICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7CisgICAgICAg ICAgICAgeXlydWxlIC0gMSwgeXlsbm8pOwogICAvKiBUaGUgc3ltYm9scyBiZWluZyByZWR1Y2Vk LiAgKi8KICAgZm9yICh5eWkgPSAwOyB5eWkgPCB5eW5yaHM7IHl5aSsrKQogICAgIHsKICAgICAg IFlZRlBSSU5URiAoc3RkZXJyLCAiICAgJCVkID0gIiwgeXlpICsgMSk7Ci0gICAgICB5eV9zeW1i b2xfcHJpbnQgKHN0ZGVyciwgeXlyaHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAotCQkgICAgICAg Jih5eXZzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCi0JCSAgICAgICAJCSAgICAgICAsIGN0eCk7 CisgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAg eXlzdG9zW3l5c3NwW3l5aSArIDEgLSB5eW5yaHNdXSwKKyAgICAgICAgICAgICAgICAgICAgICAg Jih5eXZzcFsoeXlpICsgMSkgLSAoeXlucmhzKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCBjdHgpOwogICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJc biIpOwogICAgIH0KIH0KIAotIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCi1kbyB7 CQkJCQlcCi0gIGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwg UnVsZSwgY3R4KTsgXAotfSB3aGlsZSAoWVlJRCAoMCkpCisjIGRlZmluZSBZWV9SRURVQ0VfUFJJ TlQoUnVsZSkgICAgICAgICAgXAorZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgaWYgKHl5ZGVidWcpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeXlf cmVkdWNlX3ByaW50ICh5eXNzcCwgeXl2c3AsIFJ1bGUsIGN0eCk7IFwKK30gd2hpbGUgKDApCiAK IC8qIE5vbnplcm8gbWVhbnMgcHJpbnQgcGFyc2UgdHJhY2UuICBJdCBpcyBsZWZ0IHVuaW5pdGlh bGl6ZWQgc28gdGhhdAogICAgbXVsdGlwbGUgcGFyc2VycyBjYW4gY29leGlzdC4gICovCkBAIC05 MjUsNyArODI4LDcgQEAgaW50IHl5ZGVidWc7CiAKIAogLyogWVlJTklUREVQVEggLS0gaW5pdGlh bCBzaXplIG9mIHRoZSBwYXJzZXIncyBzdGFja3MuICAqLwotI2lmbmRlZglZWUlOSVRERVBUSAor I2lmbmRlZiBZWUlOSVRERVBUSAogIyBkZWZpbmUgWVlJTklUREVQVEggMjAwCiAjZW5kaWYKIApA QCAtOTQ4LDE1ICs4NTEsOCBAQCBpbnQgeXlkZWJ1ZzsKICMgICBkZWZpbmUgeXlzdHJsZW4gc3Ry bGVuCiAjICBlbHNlCiAvKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCi0jaWYgKGRl ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5l ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogc3RhdGljIFlZU0laRV9UCiB5eXN0 cmxlbiAoY29uc3QgY2hhciAqeXlzdHIpCi0jZWxzZQotc3RhdGljIFlZU0laRV9UCi15eXN0cmxl biAoeXlzdHIpCi0gICAgY29uc3QgY2hhciAqeXlzdHI7Ci0jZW5kaWYKIHsKICAgWVlTSVpFX1Qg eXlsZW47CiAgIGZvciAoeXlsZW4gPSAwOyB5eXN0clt5eWxlbl07IHl5bGVuKyspCkBAIC05NzIs MTYgKzg2OCw4IEBAIHl5c3RybGVuIChjb25zdCBjaGFyICp5eXN0cikKICMgIGVsc2UKIC8qIENv cHkgWVlTUkMgdG8gWVlERVNULCByZXR1cm5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIHRlcm1pbmF0 aW5nICdcMCcgaW4KICAgIFlZREVTVC4gICovCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm aW5lZCBfX0M5OV9fRlVOQ19fIFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp bmVkIF9NU0NfVkVSKQogc3RhdGljIGNoYXIgKgogeXlzdHBjcHkgKGNoYXIgKnl5ZGVzdCwgY29u c3QgY2hhciAqeXlzcmMpCi0jZWxzZQotc3RhdGljIGNoYXIgKgoteXlzdHBjcHkgKHl5ZGVzdCwg eXlzcmMpCi0gICAgY2hhciAqeXlkZXN0OwotICAgIGNvbnN0IGNoYXIgKnl5c3JjOwotI2VuZGlm CiB7CiAgIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKICAgY29uc3QgY2hhciAqeXlzID0geXlzcmM7CkBA IC0xMDExLDI3ICs4OTksMjcgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAq eXlzdHIpCiAgICAgICBjaGFyIGNvbnN0ICp5eXAgPSB5eXN0cjsKIAogICAgICAgZm9yICg7OykK LQlzd2l0Y2ggKCorK3l5cCkKLQkgIHsKLQkgIGNhc2UgJ1wnJzoKLQkgIGNhc2UgJywnOgotCSAg ICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisgICAgICAgIHN3aXRjaCAoKisreXlwKQorICAg ICAgICAgIHsKKyAgICAgICAgICBjYXNlICdcJyc6CisgICAgICAgICAgY2FzZSAnLCc6CisgICAg ICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CiAKLQkgIGNhc2UgJ1xcJzoKLQkgICAg aWYgKCorK3l5cCAhPSAnXFwnKQotCSAgICAgIGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKLQkg ICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLQkgIGRlZmF1bHQ6Ci0JICAgIGlmICh5eXJlcykKLQkg ICAgICB5eXJlc1t5eW5dID0gKnl5cDsKLQkgICAgeXluKys7Ci0JICAgIGJyZWFrOworICAgICAg ICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKyAgICAgICAg ICAgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOworICAgICAgICAgICAgLyogRmFsbCB0aHJv dWdoLiAgKi8KKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHl5cmVzKQorICAg ICAgICAgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKKyAgICAgICAgICAgIHl5bisrOworICAgICAg ICAgICAgYnJlYWs7CiAKLQkgIGNhc2UgJyInOgotCSAgICBpZiAoeXlyZXMpCi0JICAgICAgeXly ZXNbeXluXSA9ICdcMCc7Ci0JICAgIHJldHVybiB5eW47Ci0JICB9CisgICAgICAgICAgY2FzZSAn Iic6CisgICAgICAgICAgICBpZiAoeXlyZXMpCisgICAgICAgICAgICAgIHl5cmVzW3l5bl0gPSAn XDAnOworICAgICAgICAgICAgcmV0dXJuIHl5bjsKKyAgICAgICAgICB9CiAgICAgZG9fbm90X3N0 cmlwX3F1b3RlczogOwogICAgIH0KIApAQCAtMTA1NCwxMSArOTQyLDExIEBAIHN0YXRpYyBpbnQK IHl5c3ludGF4X2Vycm9yIChZWVNJWkVfVCAqeXltc2dfYWxsb2MsIGNoYXIgKip5eW1zZywKICAg ICAgICAgICAgICAgICB5eXR5cGVfaW50MTYgKnl5c3NwLCBpbnQgeXl0b2tlbikKIHsKLSAgWVlT SVpFX1QgeXlzaXplMCA9IHl5dG5hbWVyciAoWVlfTlVMTCwgeXl0bmFtZVt5eXRva2VuXSk7Cisg IFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKFlZX05VTExQVFIsIHl5dG5hbWVbeXl0b2tl bl0pOwogICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOwogICBlbnVtIHsgWVlFUlJPUl9WRVJC T1NFX0FSR1NfTUFYSU1VTSA9IDUgfTsKICAgLyogSW50ZXJuYXRpb25hbGl6ZWQgZm9ybWF0IHN0 cmluZy4gKi8KLSAgY29uc3QgY2hhciAqeXlmb3JtYXQgPSBZWV9OVUxMOworICBjb25zdCBjaGFy ICp5eWZvcm1hdCA9IFlZX05VTExQVFI7CiAgIC8qIEFyZ3VtZW50cyBvZiB5eWZvcm1hdC4gKi8K ICAgY2hhciBjb25zdCAqeXlhcmdbWVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07CiAgIC8q IE51bWJlciBvZiByZXBvcnRlZCB0b2tlbnMgKG9uZSBmb3IgdGhlICJ1bmV4cGVjdGVkIiwgb25l IHBlcgpAQCAtMTA2NiwxMCArOTU0LDYgQEAgeXlzeW50YXhfZXJyb3IgKFlZU0laRV9UICp5eW1z Z19hbGxvYywgY2hhciAqKnl5bXMKICAgaW50IHl5Y291bnQgPSAwOwogCiAgIC8qIFRoZXJlIGFy ZSBtYW55IHBvc3NpYmlsaXRpZXMgaGVyZSB0byBjb25zaWRlcjoKLSAgICAgLSBBc3N1bWUgWVlG QUlMIGlzIG5vdCB1c2VkLiAgSXQncyB0b28gZmxhd2VkIHRvIGNvbnNpZGVyLiAgU2VlCi0gICAg ICAgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9iaXNvbi1wYXRjaGVzLzIwMDkt MTIvbXNnMDAwMjQuaHRtbD4KLSAgICAgICBmb3IgZGV0YWlscy4gIFlZRVJST1IgaXMgZmluZSBh cyBpdCBkb2VzIG5vdCBpbnZva2UgdGhpcwotICAgICAgIGZ1bmN0aW9uLgogICAgICAtIElmIHRo aXMgc3RhdGUgaXMgYSBjb25zaXN0ZW50IHN0YXRlIHdpdGggYSBkZWZhdWx0IGFjdGlvbiwgdGhl bgogICAgICAgIHRoZSBvbmx5IHdheSB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGlzIGlmIHRo ZSBkZWZhdWx0IGFjdGlvbgogICAgICAgIGlzIGFuIGVycm9yIGFjdGlvbi4gIEluIHRoYXQgY2Fz ZSwgZG9uJ3QgY2hlY2sgZm9yIGV4cGVjdGVkCkBAIC0xMTE5LDcgKzEwMDMsNyBAQCB5eXN5bnRh eF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXltcwogICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgIHl5YXJnW3l5Y291bnQrK10gPSB5eXRuYW1lW3l5eF07 CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgWVlTSVpFX1QgeXlzaXplMSA9 IHl5c2l6ZSArIHl5dG5hbWVyciAoWVlfTlVMTCwgeXl0bmFtZVt5eXhdKTsKKyAgICAgICAgICAg ICAgICAgIFlZU0laRV9UIHl5c2l6ZTEgPSB5eXNpemUgKyB5eXRuYW1lcnIgKFlZX05VTExQVFIs IHl5dG5hbWVbeXl4XSk7CiAgICAgICAgICAgICAgICAgICBpZiAoISAoeXlzaXplIDw9IHl5c2l6 ZTEKICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB5eXNpemUxIDw9IFlZU1RBQ0tfQUxMT0Nf TUFYSU1VTSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOwpAQCAtMTE4NiwyOCArMTA3 MCwxOCBAQCB5eXN5bnRheF9lcnJvciAoWVlTSVpFX1QgKnl5bXNnX2FsbG9jLCBjaGFyICoqeXlt cwogfCBSZWxlYXNlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB0byB0aGlzIHN5bWJvbC4gIHwKIGAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLS8qQVJH U1VTRUQqLwotI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBc Ci0gICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRp YyB2b2lkCiB5eWRlc3RydWN0IChjb25zdCBjaGFyICp5eW1zZywgaW50IHl5dHlwZSwgWVlTVFlQ RSAqeXl2YWx1ZXAsIGFwX2V4cHJfcGFyc2VfY3R4X3QgKmN0eCkKLSNlbHNlCi1zdGF0aWMgdm9p ZAoteXlkZXN0cnVjdCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIGN0eCkKLSAgICBjb25zdCBj aGFyICp5eW1zZzsKLSAgICBpbnQgeXl0eXBlOwotICAgIFlZU1RZUEUgKnl5dmFsdWVwOwotICAg IGFwX2V4cHJfcGFyc2VfY3R4X3QgKmN0eDsKLSNlbmRpZgogewogICBZWVVTRSAoeXl2YWx1ZXAp OwogICBZWVVTRSAoY3R4KTsKLQogICBpZiAoIXl5bXNnKQogICAgIHl5bXNnID0gIkRlbGV0aW5n IjsKICAgWVlfU1lNQk9MX1BSSU5UICh5eW1zZywgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlv bnApOwogCisgIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0JFR0lOCiAgIFlZVVNFICh5 eXR5cGUpOworICBZWV9JR05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9FTkQKIH0KIAogCkBAIC0x MjE3LDU3ICsxMDkxLDE5IEBAIHl5ZGVzdHJ1Y3QgKGNvbnN0IGNoYXIgKnl5bXNnLCBpbnQgeXl0 eXBlLCBZWVNUWVBFCiB8IHl5cGFyc2UuICB8CiBgLS0tLS0tLS0tLSovCiAKLSNpZmRlZiBZWVBB UlNFX1BBUkFNCi0jaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19f IFwKLSAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQogaW50 Ci15eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKQotI2Vsc2UKLWludAoteXlwYXJzZSAoWVlQ QVJTRV9QQVJBTSkKLSAgICB2b2lkICpZWVBBUlNFX1BBUkFNOwotI2VuZGlmCi0jZWxzZSAvKiAh IFlZUEFSU0VfUEFSQU0gKi8KLSNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5 X19GVU5DX18gXAotICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19W RVIpCi1pbnQKIHl5cGFyc2UgKGFwX2V4cHJfcGFyc2VfY3R4X3QgKmN0eCkKLSNlbHNlCi1pbnQK LXl5cGFyc2UgKGN0eCkKLSAgICBhcF9leHByX3BhcnNlX2N0eF90ICpjdHg7Ci0jZW5kaWYKLSNl bmRpZgogewogLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAogCi0j aWYgZGVmaW5lZCBfX0dOVUNfXyAmJiA0MDcgPD0gX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlO T1JfXwotLyogU3VwcHJlc3MgYW4gaW5jb3JyZWN0IGRpYWdub3N0aWMgYWJvdXQgeXlsdmFsIGJl aW5nIHVuaW5pdGlhbGl6ZWQuICAqLwotIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJFX1VOSU5JVElB TElaRURfQkVHSU4gXAotICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAotICAg IF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bmluaXRpYWxpemVkXCIiKVwK LSAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWF5YmUtdW5pbml0aWFs aXplZFwiIikKLSMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJWkVEX0VORCBcCi0g ICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpCi0jZWxzZQorLyogVGhlIHNlbWFudGlj IHZhbHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KIC8qIERlZmF1bHQgdmFsdWUgdXNl ZCBmb3IgaW5pdGlhbGl6YXRpb24sIGZvciBwYWNpZnlpbmcgb2xkZXIgR0NDcwogICAgb3Igbm9u LUdDQyBjb21waWxlcnMuICAqLwotc3RhdGljIFlZU1RZUEUgeXl2YWxfZGVmYXVsdDsKLSMgZGVm aW5lIFlZX0lOSVRJQUxfVkFMVUUoVmFsdWUpID0gVmFsdWUKLSNlbmRpZgotI2lmbmRlZiBZWV9J R05PUkVfTUFZQkVfVU5JTklUSUFMSVpFRF9CRUdJTgotIyBkZWZpbmUgWVlfSUdOT1JFX01BWUJF X1VOSU5JVElBTElaRURfQkVHSU4KLSMgZGVmaW5lIFlZX0lHTk9SRV9NQVlCRV9VTklOSVRJQUxJ WkVEX0VORAotI2VuZGlmCi0jaWZuZGVmIFlZX0lOSVRJQUxfVkFMVUUKLSMgZGVmaW5lIFlZX0lO SVRJQUxfVkFMVUUoVmFsdWUpIC8qIE5vdGhpbmcuICovCi0jZW5kaWYKK1lZX0lOSVRJQUxfVkFM VUUgKHN0YXRpYyBZWVNUWVBFIHl5dmFsX2RlZmF1bHQ7KQorWVlTVFlQRSB5eWx2YWwgWVlfSU5J VElBTF9WQUxVRSAoPSB5eXZhbF9kZWZhdWx0KTsKIAotLyogVGhlIHNlbWFudGljIHZhbHVlIG9m IHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KLVlZU1RZUEUgeXlsdmFsIFlZX0lOSVRJQUxfVkFM VUUoeXl2YWxfZGVmYXVsdCk7Ci0KICAgICAvKiBOdW1iZXIgb2Ygc3ludGF4IGVycm9ycyBzbyBm YXIuICAqLwogICAgIGludCB5eW5lcnJzOwogCkBAIC0xMjc2LDggKzExMTIsOCBAQCBpbnQgeXlj aGFyOwogICAgIGludCB5eWVycnN0YXR1czsKIAogICAgIC8qIFRoZSBzdGFja3MgYW5kIHRoZWly IHRvb2xzOgotICAgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMuCi0gICAgICAgYHl5dnMn OiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcy4KKyAgICAgICAneXlzcyc6IHJlbGF0ZWQgdG8g c3RhdGVzLgorICAgICAgICd5eXZzJzogcmVsYXRlZCB0byBzZW1hbnRpYyB2YWx1ZXMuCiAKICAg ICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocm91Z2ggc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFs bG93IHl5b3ZlcmZsb3cKICAgICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8K QEAgLTEzNDUsMjMgKzExODEsMjMgQEAgaW50IHl5Y2hhcjsKIAogI2lmZGVmIHl5b3ZlcmZsb3cK ICAgICAgIHsKLQkvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2su ICBVc2UgY29waWVzIG9mCi0JICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRo ZSByZWFsIG9uZXMgaW50bwotCSAgIG1lbW9yeS4gICovCi0JWVlTVFlQRSAqeXl2czEgPSB5eXZz OwotCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOworICAgICAgICAvKiBHaXZlIHVzZXIgYSBj aGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29waWVzIG9mCisgICAgICAgICAg IHRoZXNlIHNvIHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0aGUgcmVhbCBvbmVzIGludG8KKyAg ICAgICAgICAgbWVtb3J5LiAgKi8KKyAgICAgICAgWVlTVFlQRSAqeXl2czEgPSB5eXZzOworICAg ICAgICB5eXR5cGVfaW50MTYgKnl5c3MxID0geXlzczsKIAotCS8qIEVhY2ggc3RhY2sgcG9pbnRl ciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQotCSAgIGRhdGEgaW4gdXNl IGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKLQkgICBjb25kaXRp b25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0Ci0JICAg YmUgdW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCi0JeXlvdmVyZmxvdyAo WVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCi0JCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAo Knl5c3NwKSwKLQkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotCQkgICAg Jnl5c3RhY2tzaXplKTsKKyAgICAgICAgLyogRWFjaCBzdGFjayBwb2ludGVyIGFkZHJlc3MgaXMg Zm9sbG93ZWQgYnkgdGhlIHNpemUgb2YgdGhlCisgICAgICAgICAgIGRhdGEgaW4gdXNlIGluIHRo YXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKKyAgICAgICAgICAgY29uZGl0 aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLCBidXQgdGhhdCBtaWdodAorICAg ICAgICAgICBiZSB1bmRlZmluZWQgaWYgeXlvdmVyZmxvdyBpcyBhIG1hY3JvLiAgKi8KKyAgICAg ICAgeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCisgICAgICAgICAgICAgICAg ICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAorICAgICAgICAgICAgICAgICAg ICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKKyAgICAgICAgICAgICAgICAgICAg Jnl5c3RhY2tzaXplKTsKIAotCXl5c3MgPSB5eXNzMTsKLQl5eXZzID0geXl2czE7CisgICAgICAg IHl5c3MgPSB5eXNzMTsKKyAgICAgICAgeXl2cyA9IHl5dnMxOwogICAgICAgfQogI2Vsc2UgLyog bm8geXlvdmVyZmxvdyAqLwogIyBpZm5kZWYgWVlTVEFDS19SRUxPQ0FURQpAQCAtMTM2OSwyMiAr MTIwNSwyMiBAQCBpbnQgeXljaGFyOwogIyBlbHNlCiAgICAgICAvKiBFeHRlbmQgdGhlIHN0YWNr IG91ciBvd24gd2F5LiAgKi8KICAgICAgIGlmIChZWU1BWERFUFRIIDw9IHl5c3RhY2tzaXplKQot CWdvdG8geXlleGhhdXN0ZWRsYWI7CisgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAgICAg ICB5eXN0YWNrc2l6ZSAqPSAyOwogICAgICAgaWYgKFlZTUFYREVQVEggPCB5eXN0YWNrc2l6ZSkK LQl5eXN0YWNrc2l6ZSA9IFlZTUFYREVQVEg7CisgICAgICAgIHl5c3RhY2tzaXplID0gWVlNQVhE RVBUSDsKIAogICAgICAgewotCXl5dHlwZV9pbnQxNiAqeXlzczEgPSB5eXNzOwotCXVuaW9uIHl5 YWxsb2MgKnl5cHRyID0KLQkgICh1bmlvbiB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RB Q0tfQllURVMgKHl5c3RhY2tzaXplKSk7Ci0JaWYgKCEgeXlwdHIpCi0JICBnb3RvIHl5ZXhoYXVz dGVkbGFiOwotCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOwotCVlZU1RBQ0tf UkVMT0NBVEUgKHl5dnNfYWxsb2MsIHl5dnMpOworICAgICAgICB5eXR5cGVfaW50MTYgKnl5c3Mx ID0geXlzczsKKyAgICAgICAgdW5pb24geXlhbGxvYyAqeXlwdHIgPQorICAgICAgICAgICh1bmlv biB5eWFsbG9jICopIFlZU1RBQ0tfQUxMT0MgKFlZU1RBQ0tfQllURVMgKHl5c3RhY2tzaXplKSk7 CisgICAgICAgIGlmICghIHl5cHRyKQorICAgICAgICAgIGdvdG8geXlleGhhdXN0ZWRsYWI7Cisg ICAgICAgIFlZU1RBQ0tfUkVMT0NBVEUgKHl5c3NfYWxsb2MsIHl5c3MpOworICAgICAgICBZWVNU QUNLX1JFTE9DQVRFICh5eXZzX2FsbG9jLCB5eXZzKTsKICMgIHVuZGVmIFlZU1RBQ0tfUkVMT0NB VEUKLQlpZiAoeXlzczEgIT0geXlzc2EpCi0JICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKKyAgICAg ICAgaWYgKHl5c3MxICE9IHl5c3NhKQorICAgICAgICAgIFlZU1RBQ0tfRlJFRSAoeXlzczEpOwog ICAgICAgfQogIyBlbmRpZgogI2VuZGlmIC8qIG5vIHl5b3ZlcmZsb3cgKi8KQEAgLTEzOTMsMTAg KzEyMjksMTAgQEAgaW50IHl5Y2hhcjsKICAgICAgIHl5dnNwID0geXl2cyArIHl5c2l6ZSAtIDE7 CiAKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVs dVxuIiwKLQkJICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CisgICAgICAgICAg ICAgICAgICAodW5zaWduZWQgbG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CiAKICAgICAgIGlmICh5 eXNzICsgeXlzdGFja3NpemUgLSAxIDw9IHl5c3NwKQotCVlZQUJPUlQ7CisgICAgICAgIFlZQUJP UlQ7CiAgICAgfQogCiAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkVudGVyaW5nIHN0YXRlICVkXG4i LCB5eXN0YXRlKSk7CkBAIC0xNDI1LDcgKzEyNjEsNyBAQCB5eWJhY2t1cDoKICAgaWYgKHl5Y2hh ciA9PSBZWUVNUFRZKQogICAgIHsKICAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcg YSB0b2tlbjogIikpOwotICAgICAgeXljaGFyID0gWVlMRVg7CisgICAgICB5eWNoYXIgPSB5eWxl eCAoJnl5bHZhbCwgeXlzY2FubmVyKTsKICAgICB9CiAKICAgaWYgKHl5Y2hhciA8PSBZWUVPRikK QEAgLTE0OTAsNyArMTMyNiw3IEBAIHl5cmVkdWNlOgogICB5eWxlbiA9IHl5cjJbeXluXTsKIAog ICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2Yg dGhlIGFjdGlvbjoKLSAgICAgYCQkID0gJDEnLgorICAgICAnJCQgPSAkMScuCiAKICAgICAgT3Ro ZXJ3aXNlLCB0aGUgZm9sbG93aW5nIGxpbmUgc2V0cyBZWVZBTCB0byBnYXJiYWdlLgogICAgICBU aGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24KQEAgLTE1MDQsMjkzICsxMzQw LDI5MiBAQCB5eXJlZHVjZToKICAgc3dpdGNoICh5eW4pCiAgICAgewogICAgICAgICBjYXNlIDI6 Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTEyICJ1dGlsX2V4cHJfcGFyc2Uu eSIKLSAgICB7IGN0eC0+ZXhwciA9ICh5eXZzcFsoMikgLSAoMildLmV4VmFsKTsgfQorI2xpbmUg MTEyICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYgICovCisgICAgeyBjdHgtPmV4 cHIgPSAoeXl2c3BbMF0uZXhWYWwpOyB9CisjbGluZSAxMzQ2ICJ1dGlsX2V4cHJfcGFyc2UuYyIg LyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSAzOgotLyogTGluZSAxNzg3 IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDExMyAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyBjdHgt PmV4cHIgPSAoeXl2c3BbKDIpIC0gKDIpXS5leFZhbCk7IH0KKyNsaW5lIDExMyAidXRpbF9leHBy X3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgY3R4LT5leHByID0gKHl5dnNwWzBd LmV4VmFsKTsgfQorI2xpbmUgMTM1MiAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2 ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgNDoKLS8qIExpbmUgMTc4NyBvZiB5YWNjLmMgICov Ci0jbGluZSAxMTQgInV0aWxfZXhwcl9wYXJzZS55IgorI2xpbmUgMTE0ICJ1dGlsX2V4cHJfcGFy c2UueSIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgeyBZWUFCT1JUOyB9CisjbGluZSAxMzU4ICJ1 dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2Fz ZSA1OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDExNyAidXRpbF9leHByX3Bh cnNlLnkiCisjbGluZSAxMTcgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8K ICAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfVHJ1ZSwgICAgICAgIE5VTEws IE5VTEwsIGN0eCk7IH0KKyNsaW5lIDEzNjQgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6 MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDY6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5j ICAqLwotI2xpbmUgMTE4ICJ1dGlsX2V4cHJfcGFyc2UueSIKKyNsaW5lIDExOCAidXRpbF9leHBy X3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4 cHJfbWFrZShvcF9GYWxzZSwgICAgICAgTlVMTCwgTlVMTCwgY3R4KTsgfQorI2xpbmUgMTM3MCAi dXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNh c2UgNzoKLS8qIExpbmUgMTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAxMTkgInV0aWxfZXhwcl9w YXJzZS55IgotICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJfbWFrZShvcF9Ob3QsICAgICAg ICAgKHl5dnNwWygyKSAtICgyKV0uZXhWYWwpLCAgIE5VTEwsIGN0eCk7IH0KKyNsaW5lIDExOSAi dXRpbF9leHByX3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFs KSA9IGFwX2V4cHJfbWFrZShvcF9Ob3QsICAgICAgICAgKHl5dnNwWzBdLmV4VmFsKSwgICBOVUxM LCBjdHgpOyB9CisjbGluZSAxMzc2ICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2NDYg ICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSA4OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8K LSNsaW5lIDEyMCAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBf ZXhwcl9tYWtlKG9wX09yLCAgICAgICAgICAoeXl2c3BbKDEpIC0gKDMpXS5leFZhbCksICAgKHl5 dnNwWygzKSAtICgzKV0uZXhWYWwpLCAgIGN0eCk7IH0KKyNsaW5lIDEyMCAidXRpbF9leHByX3Bh cnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJf bWFrZShvcF9PciwgICAgICAgICAgKHl5dnNwWy0yXS5leFZhbCksICAgKHl5dnNwWzBdLmV4VmFs KSwgICBjdHgpOyB9CisjbGluZSAxMzgyICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2 NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSA5OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAg Ki8KLSNsaW5lIDEyMSAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0g YXBfZXhwcl9tYWtlKG9wX0FuZCwgICAgICAgICAoeXl2c3BbKDEpIC0gKDMpXS5leFZhbCksICAg KHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCAgIGN0eCk7IH0KKyNsaW5lIDEyMSAidXRpbF9leHBy X3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4 cHJfbWFrZShvcF9BbmQsICAgICAgICAgKHl5dnNwWy0yXS5leFZhbCksICAgKHl5dnNwWzBdLmV4 VmFsKSwgICBjdHgpOyB9CisjbGluZSAxMzg4ICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5j OjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDoKLS8qIExpbmUgMTc4NyBvZiB5YWNj LmMgICovCi0jbGluZSAxMjIgInV0aWxfZXhwcl9wYXJzZS55IgotICAgIHsgKHl5dmFsLmV4VmFs KSA9IGFwX2V4cHJfbWFrZShvcF9Db21wLCAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uZXhWYWwp LCAgIE5VTEwsIGN0eCk7IH0KKyNsaW5lIDEyMiAidXRpbF9leHByX3BhcnNlLnkiIC8qIHlhY2Mu YzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJfbWFrZShvcF9Db21wLCAg ICAgICAgKHl5dnNwWzBdLmV4VmFsKSwgICBOVUxMLCBjdHgpOyB9CisjbGluZSAxMzk0ICJ1dGls X2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSAx MToKLS8qIExpbmUgMTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAxMjMgInV0aWxfZXhwcl9wYXJz ZS55IgotICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJfdW5hcnlfb3BfbWFrZSggICAgICAg KHl5dnNwWygxKSAtICgyKV0uY3BWYWwpLCAgICh5eXZzcFsoMikgLSAoMildLmV4VmFsKSwgICBj dHgpOyB9CisjbGluZSAxMjMgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8K KyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX3VuYXJ5X29wX21ha2UoICAgICAgICh5eXZz cFstMV0uY3BWYWwpLCAgICh5eXZzcFswXS5leFZhbCksICAgY3R4KTsgfQorI2xpbmUgMTQwMCAi dXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNh c2UgMTI6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTI0ICJ1dGlsX2V4cHJf cGFyc2UueSIKLSAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX2JpbmFyeV9vcF9tYWtlKCh5 eXZzcFsoMikgLSAoMyldLmNwVmFsKSwgICAoeXl2c3BbKDEpIC0gKDMpXS5leFZhbCksICAgKHl5 dnNwWygzKSAtICgzKV0uZXhWYWwpLCAgIGN0eCk7IH0KKyNsaW5lIDEyNCAidXRpbF9leHByX3Bh cnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJf YmluYXJ5X29wX21ha2UoKHl5dnNwWy0xXS5jcFZhbCksICAgKHl5dnNwWy0yXS5leFZhbCksICAg KHl5dnNwWzBdLmV4VmFsKSwgICBjdHgpOyB9CisjbGluZSAxNDA2ICJ1dGlsX2V4cHJfcGFyc2Uu YyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzoKLS8qIExpbmUg MTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAxMjUgInV0aWxfZXhwcl9wYXJzZS55IgotICAgIHsg KHl5dmFsLmV4VmFsKSA9ICh5eXZzcFsoMikgLSAoMyldLmV4VmFsKTsgfQorI2xpbmUgMTI1ICJ1 dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYgICovCisgICAgeyAoeXl2YWwuZXhWYWwp ID0gKHl5dnNwWy0xXS5leFZhbCk7IH0KKyNsaW5lIDE0MTIgInV0aWxfZXhwcl9wYXJzZS5jIiAv KiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDE0OgotLyogTGluZSAxNzg3 IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEyNiAidXRpbF9leHByX3BhcnNlLnkiCisjbGluZSAxMjYg InV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICB7IFlZQUJPUlQ7IH0K KyNsaW5lIDE0MTggInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBi cmVhazsKIAogICBjYXNlIDE1OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEy OSAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtl KG9wX0VRLCAgICAgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0u ZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxMjkgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6 MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfRVEsICAgICAg KHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0MjQg InV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBj YXNlIDE2OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEzMCAidXRpbF9leHBy X3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX05FLCAgICAg ICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgp OyB9CisjbGluZSAxMzAgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAg ICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfTkUsICAgICAgKHl5dnNwWy0yXS5l eFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0MzAgInV0aWxfZXhwcl9w YXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDE3OgotLyog TGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEzMSAidXRpbF9leHByX3BhcnNlLnkiCi0g ICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0xULCAgICAgICh5eXZzcFsoMSkg LSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAx MzEgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5l eFZhbCkgPSBhcF9leHByX21ha2Uob3BfTFQsICAgICAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZz cFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0MzYgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5 YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDE4OgotLyogTGluZSAxNzg3IG9m IHlhY2MuYyAgKi8KLSNsaW5lIDEzMiAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwu ZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0xFLCAgICAgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFs KSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxMzIgInV0aWxfZXhw cl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9l eHByX21ha2Uob3BfTEUsICAgICAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCks IGN0eCk7IH0KKyNsaW5lIDE0NDIgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAg Ki8KICAgICBicmVhazsKIAogICBjYXNlIDE5OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8K LSNsaW5lIDEzMyAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBf ZXhwcl9tYWtlKG9wX0dULCAgICAgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygz KSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxMzMgInV0aWxfZXhwcl9wYXJzZS55IiAv KiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3Bf R1QsICAgICAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNs aW5lIDE0NDggInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVh azsKIAogICBjYXNlIDIwOgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEzNCAi dXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9w X0dFLCAgICAgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhW YWwpLCBjdHgpOyB9CisjbGluZSAxMzQgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0 NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfR0UsICAgICAgKHl5 dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0NTQgInV0 aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNl IDIxOgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEzNSAidXRpbF9leHByX3Bh cnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX1NUUl9FUSwgICh5 eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9 CisjbGluZSAxMzUgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7 ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfU1RSX0VRLCAgKHl5dnNwWy0yXS5leFZh bCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0NjAgInV0aWxfZXhwcl9wYXJz ZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDIyOgotLyogTGlu ZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEzNiAidXRpbF9leHByX3BhcnNlLnkiCi0gICAg eyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX1NUUl9ORSwgICh5eXZzcFsoMSkgLSAo MyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxMzYg InV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZh bCkgPSBhcF9leHByX21ha2Uob3BfU1RSX05FLCAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFsw XS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0NjYgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNj LmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDIzOgotLyogTGluZSAxNzg3IG9mIHlh Y2MuYyAgKi8KLSNsaW5lIDEzNyAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhW YWwpID0gYXBfZXhwcl9tYWtlKG9wX1NUUl9MVCwgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwg KHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxMzcgInV0aWxfZXhwcl9w YXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHBy X21ha2Uob3BfU1RSX0xULCAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0 eCk7IH0KKyNsaW5lIDE0NzIgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8K ICAgICBicmVhazsKIAogICBjYXNlIDI0OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNs aW5lIDEzOCAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhw cl9tYWtlKG9wX1NUUl9MRSwgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAt ICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxMzggInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5 YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfU1RS X0xFLCAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5l IDE0NzggInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsK IAogICBjYXNlIDI1OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDEzOSAidXRp bF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX1NU Ul9HVCwgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwp LCBjdHgpOyB9CisjbGluZSAxMzkgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAg Ki8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfU1RSX0dULCAgKHl5dnNw Wy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0ODQgInV0aWxf ZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDI2 OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE0MCAidXRpbF9leHByX3BhcnNl LnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX1NUUl9HRSwgICh5eXZz cFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9Cisj bGluZSAxNDAgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5 eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfU1RSX0dFLCAgKHl5dnNwWy0yXS5leFZhbCks ICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0OTAgInV0aWxfZXhwcl9wYXJzZS5j IiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDI3OgotLyogTGluZSAx Nzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE0MSAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAo eXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0lOLCAgICAgICh5eXZzcFsoMSkgLSAoMyld LmV4VmFsKSwgKHl5dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxNDEgInV0 aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkg PSBhcF9leHByX21ha2Uob3BfSU4sICAgICAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5l eFZhbCksIGN0eCk7IH0KKyNsaW5lIDE0OTYgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6 MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDI4OgotLyogTGluZSAxNzg3IG9mIHlhY2Mu YyAgKi8KLSNsaW5lIDE0MiAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwp ID0gYXBfZXhwcl9tYWtlKG9wX1JFRywgICAgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5 dnNwWygzKSAtICgzKV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxNDIgInV0aWxfZXhwcl9wYXJz ZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21h a2Uob3BfUkVHLCAgICAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7 IH0KKyNsaW5lIDE1MDIgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAg ICBicmVhazsKIAogICBjYXNlIDI5OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5l IDE0MyAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9t YWtlKG9wX05SRSwgICAgICh5eXZzcFsoMSkgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygzKSAtICgz KV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAxNDMgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNj LmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfTlJFLCAg ICAgKHl5dnNwWy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE1 MDggInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAog ICBjYXNlIDMwOgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE0NiAidXRpbF9l eHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gKHl5dnNwWygxKSAtICgxKV0uZXhW YWwpOyB9CisjbGluZSAxNDYgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8K KyAgICB7ICh5eXZhbC5leFZhbCkgPSAoeXl2c3BbMF0uZXhWYWwpOyB9CisjbGluZSAxNTE0ICJ1 dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2Fz ZSAzMToKLS8qIExpbmUgMTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAxNDcgInV0aWxfZXhwcl9w YXJzZS55IgotICAgIHsgKHl5dmFsLmV4VmFsKSA9ICh5eXZzcFsoMikgLSAoMyldLmV4VmFsKTsg fQorI2xpbmUgMTQ3ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYgICovCisgICAg eyAoeXl2YWwuZXhWYWwpID0gKHl5dnNwWy0xXS5leFZhbCk7IH0KKyNsaW5lIDE1MjAgInV0aWxf ZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDMy OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE1MCAidXRpbF9leHByX3BhcnNl LnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0xpc3RFbGVtZW50LCAo eXl2c3BbKDEpIC0gKDEpXS5leFZhbCksIE5VTEwsIGN0eCk7IH0KKyNsaW5lIDE1MCAidXRpbF9l eHByX3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFw X2V4cHJfbWFrZShvcF9MaXN0RWxlbWVudCwgKHl5dnNwWzBdLmV4VmFsKSwgTlVMTCwgY3R4KTsg fQorI2xpbmUgMTUyNiAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAg IGJyZWFrOwogCiAgIGNhc2UgMzM6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUg MTUxICJ1dGlsX2V4cHJfcGFyc2UueSIKLSAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21h a2Uob3BfTGlzdEVsZW1lbnQsICh5eXZzcFsoMykgLSAoMyldLmV4VmFsKSwgKHl5dnNwWygxKSAt ICgzKV0uZXhWYWwpLCAgIGN0eCk7IH0KKyNsaW5lIDE1MSAidXRpbF9leHByX3BhcnNlLnkiIC8q IHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJfbWFrZShvcF9M aXN0RWxlbWVudCwgKHl5dnNwWzBdLmV4VmFsKSwgKHl5dnNwWy0yXS5leFZhbCksICAgY3R4KTsg fQorI2xpbmUgMTUzMiAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAg IGJyZWFrOwogCiAgIGNhc2UgMzQ6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUg MTU0ICJ1dGlsX2V4cHJfcGFyc2UueSIKLSAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21h a2Uob3BfQ29uY2F0LCAoeXl2c3BbKDEpIC0gKDIpXS5leFZhbCksICh5eXZzcFsoMikgLSAoMild LmV4VmFsKSwgY3R4KTsgfQorI2xpbmUgMTU0ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5j OjE2NDYgICovCisgICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0NvbmNhdCwg KHl5dnNwWy0xXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDE1Mzgg InV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBj YXNlIDM1OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE1NSAidXRpbF9leHBy X3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gKHl5dnNwWygxKSAtICgxKV0uZXhWYWwp OyB9CisjbGluZSAxNTUgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAg ICB7ICh5eXZhbC5leFZhbCkgPSAoeXl2c3BbMF0uZXhWYWwpOyB9CisjbGluZSAxNTQ0ICJ1dGls X2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSAz NjoKLS8qIExpbmUgMTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAxNTYgInV0aWxfZXhwcl9wYXJz ZS55IgorI2xpbmUgMTU2ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYgICovCiAg ICAgeyBZWUFCT1JUOyB9CisjbGluZSAxNTUwICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5j OjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSAzNzoKLS8qIExpbmUgMTc4NyBvZiB5YWNj LmMgICovCi0jbGluZSAxNTkgInV0aWxfZXhwcl9wYXJzZS55IgotICAgIHsgKHl5dmFsLmV4VmFs KSA9IGFwX2V4cHJfbWFrZShvcF9TdHJpbmcsICh5eXZzcFsoMSkgLSAoMSldLmNwVmFsKSwgTlVM TCwgY3R4KTsgfQorI2xpbmUgMTU5ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYg ICovCisgICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX1N0cmluZywgKHl5dnNw WzBdLmNwVmFsKSwgTlVMTCwgY3R4KTsgfQorI2xpbmUgMTU1NiAidXRpbF9leHByX3BhcnNlLmMi IC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgMzg6Ci0vKiBMaW5lIDE3 ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTYwICJ1dGlsX2V4cHJfcGFyc2UueSIKLSAgICB7ICh5 eXZhbC5leFZhbCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5leFZhbCk7IH0KKyNsaW5lIDE2MCAidXRp bF9leHByX3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9 ICh5eXZzcFswXS5leFZhbCk7IH0KKyNsaW5lIDE1NjIgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5 YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDM5OgotLyogTGluZSAxNzg3IG9m IHlhY2MuYyAgKi8KLSNsaW5lIDE2MSAidXRpbF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwu ZXhWYWwpID0gKHl5dnNwWygxKSAtICgxKV0uZXhWYWwpOyB9CisjbGluZSAxNjEgInV0aWxfZXhw cl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkgPSAoeXl2 c3BbMF0uZXhWYWwpOyB9CisjbGluZSAxNTY4ICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5j OjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSA0MDoKLS8qIExpbmUgMTc4NyBvZiB5YWNj LmMgICovCi0jbGluZSAxNjQgInV0aWxfZXhwcl9wYXJzZS55IgotICAgIHsgKHl5dmFsLmV4VmFs KSA9IGFwX2V4cHJfdmFyX21ha2UoKHl5dnNwWygyKSAtICgzKV0uY3BWYWwpLCBjdHgpOyB9Cisj bGluZSAxNjQgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5 eXZhbC5leFZhbCkgPSBhcF9leHByX3Zhcl9tYWtlKCh5eXZzcFstMV0uY3BWYWwpLCBjdHgpOyB9 CisjbGluZSAxNTc0ICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAg YnJlYWs7CiAKICAgY2FzZSA0MToKLS8qIExpbmUgMTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAx NjUgInV0aWxfZXhwcl9wYXJzZS55IgotICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJfc3Ry X2Z1bmNfbWFrZSgoeXl2c3BbKDIpIC0gKDUpXS5jcFZhbCksICh5eXZzcFsoNCkgLSAoNSldLmV4 VmFsKSwgY3R4KTsgfQorI2xpbmUgMTY1ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2 NDYgICovCisgICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9zdHJfZnVuY19tYWtlKCh5eXZz cFstM10uY3BWYWwpLCAoeXl2c3BbLTFdLmV4VmFsKSwgY3R4KTsgfQorI2xpbmUgMTU4MCAidXRp bF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2Ug NDI6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTY4ICJ1dGlsX2V4cHJfcGFy c2UueSIKLSAgICB7ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfRGlnaXQsICAoeXl2 c3BbKDEpIC0gKDEpXS5jcFZhbCksIE5VTEwsIGN0eCk7IH0KKyNsaW5lIDE2OCAidXRpbF9leHBy X3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4 cHJfbWFrZShvcF9EaWdpdCwgICh5eXZzcFswXS5jcFZhbCksIE5VTEwsIGN0eCk7IH0KKyNsaW5l IDE1ODYgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsK IAogICBjYXNlIDQzOgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE2OSAidXRp bF9leHByX3BhcnNlLnkiCi0gICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0Nv bmNhdCwgKHl5dnNwWygxKSAtICgzKV0uZXhWYWwpLCAoeXl2c3BbKDMpIC0gKDMpXS5leFZhbCks ICAgY3R4KTsgfQorI2xpbmUgMTY5ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYg ICovCisgICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9tYWtlKG9wX0NvbmNhdCwgKHl5dnNw Wy0yXS5leFZhbCksICh5eXZzcFswXS5leFZhbCksICAgY3R4KTsgfQorI2xpbmUgMTU5MiAidXRp bF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2Ug NDQ6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTcwICJ1dGlsX2V4cHJfcGFy c2UueSIKLSAgICB7ICh5eXZhbC5leFZhbCkgPSAoeXl2c3BbKDEpIC0gKDEpXS5leFZhbCk7IH0K KyNsaW5lIDE3MCAidXRpbF9leHByX3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsg KHl5dmFsLmV4VmFsKSA9ICh5eXZzcFswXS5leFZhbCk7IH0KKyNsaW5lIDE1OTggInV0aWxfZXhw cl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBjYXNlIDQ1Ogot LyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE3MSAidXRpbF9leHByX3BhcnNlLnki Ci0gICAgeyAoeXl2YWwuZXhWYWwpID0gKHl5dnNwWygxKSAtICgxKV0uZXhWYWwpOyB9CisjbGlu ZSAxNzEgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZh bC5leFZhbCkgPSAoeXl2c3BbMF0uZXhWYWwpOyB9CisjbGluZSAxNjA0ICJ1dGlsX2V4cHJfcGFy c2UuYyIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSA0NjoKLS8qIExp bmUgMTc4NyBvZiB5YWNjLmMgICovCi0jbGluZSAxNzIgInV0aWxfZXhwcl9wYXJzZS55IgotICAg IHsgKHl5dmFsLmV4VmFsKSA9ICh5eXZzcFsoMSkgLSAoMSldLmV4VmFsKTsgfQorI2xpbmUgMTcy ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYgICovCisgICAgeyAoeXl2YWwuZXhW YWwpID0gKHl5dnNwWzBdLmV4VmFsKTsgfQorI2xpbmUgMTYxMCAidXRpbF9leHByX3BhcnNlLmMi IC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgNDc6Ci0vKiBMaW5lIDE3 ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTczICJ1dGlsX2V4cHJfcGFyc2UueSIKLSAgICB7ICh5 eXZhbC5leFZhbCkgPSAoeXl2c3BbKDIpIC0gKDMpXS5leFZhbCk7IH0KKyNsaW5lIDE3MyAidXRp bF9leHByX3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9 ICh5eXZzcFstMV0uZXhWYWwpOyB9CisjbGluZSAxNjE2ICJ1dGlsX2V4cHJfcGFyc2UuYyIgLyog eWFjYy5jOjE2NDYgICovCiAgICAgYnJlYWs7CiAKICAgY2FzZSA0ODoKLS8qIExpbmUgMTc4NyBv ZiB5YWNjLmMgICovCi0jbGluZSAxNzQgInV0aWxfZXhwcl9wYXJzZS55IgorI2xpbmUgMTc0ICJ1 dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5jOjE2NDYgICovCiAgICAgeyAoeXl2YWwuZXhWYWwp ID0gYXBfZXhwcl9tYWtlKG9wX1N0cmluZywgIiIsIE5VTEwsIGN0eCk7IH0KKyNsaW5lIDE2MjIg InV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVhazsKIAogICBj YXNlIDQ5OgotLyogTGluZSAxNzg3IG9mIHlhY2MuYyAgKi8KLSNsaW5lIDE3NyAidXRpbF9leHBy X3BhcnNlLnkiCisjbGluZSAxNzcgInV0aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAg Ki8KICAgICB7CiAgICAgICAgICAgICAgICAgYXBfcmVnZXhfdCAqcmVnZXg7Ci0gICAgICAgICAg ICAgICAgaWYgKChyZWdleCA9IGFwX3ByZWdjb21wKGN0eC0+cG9vbCwgKHl5dnNwWygxKSAtICgx KV0uY3BWYWwpLAorICAgICAgICAgICAgICAgIGlmICgocmVnZXggPSBhcF9wcmVnY29tcChjdHgt PnBvb2wsICh5eXZzcFswXS5jcFZhbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFQX1JFR19FWFRFTkRFRHxBUF9SRUdfTk9TVUIpKSA9PSBOVUxMKSB7CiAgICAg ICAgICAgICAgICAgICAgIGN0eC0+ZXJyb3IgPSAiRmFpbGVkIHRvIGNvbXBpbGUgcmVndWxhciBl eHByZXNzaW9uIjsKICAgICAgICAgICAgICAgICAgICAgWVlFUlJPUjsKQEAgLTE3OTcsMTQgKzE2 MzIsMTQgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICh5 eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfUmVnZXgsIHJlZ2V4LCBOVUxMLCBjdHgpOwog ICAgICAgICAgICAgfQorI2xpbmUgMTYzNiAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzox NjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgNTA6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5j ICAqLwotI2xpbmUgMTg2ICJ1dGlsX2V4cHJfcGFyc2UueSIKKyNsaW5lIDE4NiAidXRpbF9leHBy X3BhcnNlLnkiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIHsKICAgICAgICAgICAgICAgICBhcF9y ZWdleF90ICpyZWdleDsKLSAgICAgICAgICAgICAgICBpZiAoKHJlZ2V4ID0gYXBfcHJlZ2NvbXAo Y3R4LT5wb29sLCAoeXl2c3BbKDEpIC0gKDEpXS5jcFZhbCksCisgICAgICAgICAgICAgICAgaWYg KChyZWdleCA9IGFwX3ByZWdjb21wKGN0eC0+cG9vbCwgKHl5dnNwWzBdLmNwVmFsKSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBfUkVHX0VYVEVOREVEfEFQX1JF R19OT1NVQnxBUF9SRUdfSUNBU0UpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGN0 eC0+ZXJyb3IgPSAiRmFpbGVkIHRvIGNvbXBpbGUgcmVndWxhciBleHByZXNzaW9uIjsKICAgICAg ICAgICAgICAgICAgICAgWVlFUlJPUjsKQEAgLTE4MTEsMzMgKzE2NDYsMzkgQEAgeXlyZWR1Y2U6 CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICh5eXZhbC5leFZhbCkgPSBhcF9l eHByX21ha2Uob3BfUmVnZXgsIHJlZ2V4LCBOVUxMLCBjdHgpOwogICAgICAgICAgICAgfQorI2xp bmUgMTY1MCAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFr OwogCiAgIGNhc2UgNTE6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTk3ICJ1 dGlsX2V4cHJfcGFyc2UueSIKKyNsaW5lIDE5NyAidXRpbF9leHByX3BhcnNlLnkiIC8qIHlhY2Mu YzoxNjQ2ICAqLwogICAgIHsKICAgICAgICAgICAgICAgICBpbnQgKm4gPSBhcHJfcGFsbG9jKGN0 eC0+cG9vbCwgc2l6ZW9mKGludCkpOwotICAgICAgICAgICAgICAgICpuID0gKHl5dnNwWygxKSAt ICgxKV0ubnVtKTsKKyAgICAgICAgICAgICAgICAqbiA9ICh5eXZzcFswXS5udW0pOwogICAgICAg ICAgICAgICAgICh5eXZhbC5leFZhbCkgPSBhcF9leHByX21ha2Uob3BfUmVnZXhCYWNrcmVmLCBu LCBOVUxMLCBjdHgpOwogICAgICAgICAgICAgfQorI2xpbmUgMTY2MCAidXRpbF9leHByX3BhcnNl LmMiIC8qIHlhY2MuYzoxNjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgNTI6Ci0vKiBMaW5l IDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMjA0ICJ1dGlsX2V4cHJfcGFyc2UueSIKLSAgICB7 ICh5eXZhbC5leFZhbCkgPSBhcF9leHByX2xpc3RfZnVuY19tYWtlKCh5eXZzcFsoMSkgLSAoNCld LmNwVmFsKSwgKHl5dnNwWygzKSAtICg0KV0uZXhWYWwpLCBjdHgpOyB9CisjbGluZSAyMDQgInV0 aWxfZXhwcl9wYXJzZS55IiAvKiB5YWNjLmM6MTY0NiAgKi8KKyAgICB7ICh5eXZhbC5leFZhbCkg PSBhcF9leHByX2xpc3RfZnVuY19tYWtlKCh5eXZzcFstM10uY3BWYWwpLCAoeXl2c3BbLTFdLmV4 VmFsKSwgY3R4KTsgfQorI2xpbmUgMTY2NiAidXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzox NjQ2ICAqLwogICAgIGJyZWFrOwogCiAgIGNhc2UgNTM6Ci0vKiBMaW5lIDE3ODcgb2YgeWFjYy5j ICAqLwotI2xpbmUgMjA3ICJ1dGlsX2V4cHJfcGFyc2UueSIKLSAgICB7ICh5eXZhbC5leFZhbCkg PSBhcF9leHByX3N0cl9mdW5jX21ha2UoKHl5dnNwWygxKSAtICg0KV0uY3BWYWwpLCAoeXl2c3Bb KDMpIC0gKDQpXS5leFZhbCksIGN0eCk7IH0KKyNsaW5lIDIwNyAidXRpbF9leHByX3BhcnNlLnki IC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIHsgKHl5dmFsLmV4VmFsKSA9IGFwX2V4cHJfc3RyX2Z1 bmNfbWFrZSgoeXl2c3BbLTNdLmNwVmFsKSwgKHl5dnNwWy0xXS5leFZhbCksIGN0eCk7IH0KKyNs aW5lIDE2NzIgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICBicmVh azsKIAorICBjYXNlIDU0OgorI2xpbmUgMjA4ICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFjYy5j OjE2NDYgICovCisgICAgeyAoeXl2YWwuZXhWYWwpID0gYXBfZXhwcl9zdHJfZnVuY19tYWtlKCh5 eXZzcFstM10uY3BWYWwpLCAoeXl2c3BbLTFdLmV4VmFsKSwgY3R4KTsgfQorI2xpbmUgMTY3OCAi dXRpbF9leHByX3BhcnNlLmMiIC8qIHlhY2MuYzoxNjQ2ICAqLworICAgIGJyZWFrOwogCi0vKiBM aW5lIDE3ODcgb2YgeWFjYy5jICAqLwotI2xpbmUgMTg0MSAidXRpbF9leHByX3BhcnNlLmMiCisK KyNsaW5lIDE2ODIgInV0aWxfZXhwcl9wYXJzZS5jIiAvKiB5YWNjLmM6MTY0NiAgKi8KICAgICAg IGRlZmF1bHQ6IGJyZWFrOwogICAgIH0KICAgLyogVXNlciBzZW1hbnRpYyBhY3Rpb25zIHNvbWV0 aW1lcyBhbHRlciB5eWNoYXIsIGFuZCB0aGF0IHJlcXVpcmVzCkBAIC0xODU5LDcgKzE3MDAsNyBA QCB5eXJlZHVjZToKIAogICAqKyt5eXZzcCA9IHl5dmFsOwogCi0gIC8qIE5vdyBgc2hpZnQnIHRo ZSByZXN1bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCisgIC8qIE5v dyAnc2hpZnQnIHRoZSByZXN1bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0 YXRlCiAgICAgIHRoYXQgZ29lcyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNr IHRvIGFuZCB0aGUgcnVsZQogICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCiAKQEAgLTE4NzQs OSArMTcxNSw5IEBAIHl5cmVkdWNlOgogICBnb3RvIHl5bmV3c3RhdGU7CiAKIAotLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi18IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0 ZWN0aW5nIGVycm9yIHwKLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXllcnJsYWIgLS0g aGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0qLwogeXllcnJsYWI6CiAgIC8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGxhdGVzdCBs b29rYWhlYWQgdHJhbnNsYXRpb24uICBTZWUgY29tbWVudHMgYXQKICAgICAgdXNlciBzZW1hbnRp YyBhY3Rpb25zIGZvciB3aHkgdGhpcyBpcyBuZWNlc3NhcnkuICAqLwpAQCAtMTkyNywyMCArMTc2 OCwyMCBAQCB5eWVycmxhYjoKICAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCiAgICAgewogICAgICAg LyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRl ciBhbgotCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCisgICAgICAgICBlcnJvciwgZGlzY2FyZCBp dC4gICovCiAKICAgICAgIGlmICh5eWNoYXIgPD0gWVlFT0YpCi0JewotCSAgLyogUmV0dXJuIGZh aWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0LiAgKi8KLQkgIGlmICh5eWNoYXIgPT0gWVlFT0YpCi0J ICAgIFlZQUJPUlQ7Ci0JfQorICAgICAgICB7CisgICAgICAgICAgLyogUmV0dXJuIGZhaWx1cmUg aWYgYXQgZW5kIG9mIGlucHV0LiAgKi8KKyAgICAgICAgICBpZiAoeXljaGFyID09IFlZRU9GKQor ICAgICAgICAgICAgWVlBQk9SVDsKKyAgICAgICAgfQogICAgICAgZWxzZQotCXsKLQkgIHl5ZGVz dHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCi0JCSAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGN0 eCk7Ci0JICB5eWNoYXIgPSBZWUVNUFRZOwotCX0KKyAgICAgICAgeworICAgICAgICAgIHl5ZGVz dHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgeXl0b2tl biwgJnl5bHZhbCwgY3R4KTsKKyAgICAgICAgICB5eWNoYXIgPSBZWUVNUFRZOworICAgICAgICB9 CiAgICAgfQogCiAgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFm dGVyIHNoaWZ0aW5nIHRoZSBlcnJvcgpAQCAtMTk1OSw3ICsxODAwLDcgQEAgeXllcnJvcmxhYjoK ICAgaWYgKC8qQ09OU1RDT05EKi8gMCkKICAgICAgZ290byB5eWVycm9ybGFiOwogCi0gIC8qIERv IG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2Vy ZWQKKyAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5bWJvbHMgb2YgdGhlIHJ1bGUgd2hvc2UgYWN0 aW9uIHRyaWdnZXJlZAogICAgICB0aGlzIFlZRVJST1IuICAqLwogICBZWVBPUFNUQUNLICh5eWxl bik7CiAgIHl5bGVuID0gMDsKQEAgLTE5NzIsMjkgKzE4MTMsMjkgQEAgeXllcnJvcmxhYjoKIHwg eXllcnJsYWIxIC0tIGNvbW1vbiBjb2RlIGZvciBib3RoIHN5bnRheCBlcnJvciBhbmQgWVlFUlJP Ui4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKi8KIHl5ZXJybGFiMToKLSAgeXllcnJzdGF0dXMgPSAzOwkvKiBFYWNoIHJl YWwgdG9rZW4gc2hpZnRlZCBkZWNyZW1lbnRzIHRoaXMuICAqLworICB5eWVycnN0YXR1cyA9IDM7 ICAgICAgLyogRWFjaCByZWFsIHRva2VuIHNoaWZ0ZWQgZGVjcmVtZW50cyB0aGlzLiAgKi8KIAog ICBmb3IgKDs7KQogICAgIHsKICAgICAgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKICAgICAgIGlm ICgheXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQgKHl5bikpCi0JewotCSAgeXluICs9IFlZVEVSUk9S OwotCSAgaWYgKDAgPD0geXluICYmIHl5biA8PSBZWUxBU1QgJiYgeXljaGVja1t5eW5dID09IFlZ VEVSUk9SKQotCSAgICB7Ci0JICAgICAgeXluID0geXl0YWJsZVt5eW5dOwotCSAgICAgIGlmICgw IDwgeXluKQotCQlicmVhazsKLQkgICAgfQotCX0KKyAgICAgICAgeworICAgICAgICAgIHl5biAr PSBZWVRFUlJPUjsKKyAgICAgICAgICBpZiAoMCA8PSB5eW4gJiYgeXluIDw9IFlZTEFTVCAmJiB5 eWNoZWNrW3l5bl0gPT0gWVlURVJST1IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHl5 biA9IHl5dGFibGVbeXluXTsKKyAgICAgICAgICAgICAgaWYgKDAgPCB5eW4pCisgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgLyogUG9wIHRo ZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUgZXJyb3IgdG9rZW4u ICAqLwogICAgICAgaWYgKHl5c3NwID09IHl5c3MpCi0JWVlBQk9SVDsKKyAgICAgICAgWVlBQk9S VDsKIAogCiAgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAotCQkgIHl5c3Rvc1t5 eXN0YXRlXSwgeXl2c3AsIGN0eCk7CisgICAgICAgICAgICAgICAgICB5eXN0b3NbeXlzdGF0ZV0s IHl5dnNwLCBjdHgpOwogICAgICAgWVlQT1BTVEFDSyAoMSk7CiAgICAgICB5eXN0YXRlID0gKnl5 c3NwOwogICAgICAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKQEAgLTIwNDUsNyArMTg4 Niw3IEBAIHl5cmV0dXJuOgogICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcg bG9va2FoZWFkIiwKICAgICAgICAgICAgICAgICAgIHl5dG9rZW4sICZ5eWx2YWwsIGN0eCk7CiAg ICAgfQotICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBh Y3Rpb24gdHJpZ2dlcmVkCisgIC8qIERvIG5vdCByZWNsYWltIHRoZSBzeW1ib2xzIG9mIHRoZSBy dWxlIHdob3NlIGFjdGlvbiB0cmlnZ2VyZWQKICAgICAgdGhpcyBZWUFCT1JUIG9yIFlZQUNDRVBU LiAgKi8KICAgWVlQT1BTVEFDSyAoeXlsZW4pOwogICBZWV9TVEFDS19QUklOVCAoeXlzcywgeXlz c3ApOwpAQCAtMjA1Miw3ICsxODkzLDcgQEAgeXlyZXR1cm46CiAgIHdoaWxlICh5eXNzcCAhPSB5 eXNzKQogICAgIHsKICAgICAgIHl5ZGVzdHJ1Y3QgKCJDbGVhbnVwOiBwb3BwaW5nIiwKLQkJICB5 eXN0b3NbKnl5c3NwXSwgeXl2c3AsIGN0eCk7CisgICAgICAgICAgICAgICAgICB5eXN0b3NbKnl5 c3NwXSwgeXl2c3AsIGN0eCk7CiAgICAgICBZWVBPUFNUQUNLICgxKTsKICAgICB9CiAjaWZuZGVm IHl5b3ZlcmZsb3cKQEAgLTIwNjMsMTUgKzE5MDQsMTEgQEAgeXlyZXR1cm46CiAgIGlmICh5eW1z ZyAhPSB5eW1zZ2J1ZikKICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKICNlbmRpZgotICAvKiBN YWtlIHN1cmUgWVlJRCBpcyB1c2VkLiAgKi8KLSAgcmV0dXJuIFlZSUQgKHl5cmVzdWx0KTsKKyAg cmV0dXJuIHl5cmVzdWx0OwogfQorI2xpbmUgMjExICJ1dGlsX2V4cHJfcGFyc2UueSIgLyogeWFj Yy5jOjE5MDYgICovCiAKIAotLyogTGluZSAyMDUwIG9mIHlhY2MuYyAgKi8KLSNsaW5lIDIxMCAi dXRpbF9leHByX3BhcnNlLnkiCi0KLQogdm9pZCB5eWVycm9yKGFwX2V4cHJfcGFyc2VfY3R4X3Qg KmN0eCwgY29uc3QgY2hhciAqcykKIHsKICAgICAvKiBzIGlzIGFsbG9jYXRlZCBvbiB0aGUgc3Rh Y2sgKi8KSW5kZXg6IHNlcnZlci91dGlsX2V4cHJfcGFyc2UuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZXJ2 ZXIvdXRpbF9leHByX3BhcnNlLmgJKHJldmlzaW9uIDE2NDM5MDMpCisrKyBzZXJ2ZXIvdXRpbF9l eHByX3BhcnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkgKzEsMTkgQEAKLS8qIEEgQmlzb24g cGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjcuMTItNDk5Ni4gICovCisvKiBBIEJpc29uIHBh cnNlciwgbWFkZSBieSBHTlUgQmlzb24gMy4wLjIuICAqLwogCiAvKiBCaXNvbiBpbnRlcmZhY2Ug Zm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKLSAgIAotICAgICAgQ29weXJpZ2h0IChDKSAxOTg0 LCAxOTg5LTE5OTAsIDIwMDAtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAg IAorCisgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODktMTk5MCwgMjAwMC0yMDEzIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICAg CisKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gICAKKwogICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KIApAQCAtMjYsMTMgKzI2LDEzIEBACiAgICBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hp Y2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKICAgIEJpc29uIG91 dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCiAg ICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KLSAgIAorCiAgICBUaGlz IHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uIGluCiAgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAKICNpZm5kZWYgWVlfQVBfRVhQ Ul9ZWV9VVElMX0VYUFJfUEFSU0VfSF9JTkNMVURFRAogIyBkZWZpbmUgWVlfQVBfRVhQUl9ZWV9V VElMX0VYUFJfUEFSU0VfSF9JTkNMVURFRAotLyogRW5hYmxpbmcgdHJhY2VzLiAgKi8KKy8qIERl YnVnIHRyYWNlcy4gICovCiAjaWZuZGVmIFlZREVCVUcKICMgZGVmaW5lIFlZREVCVUcgMAogI2Vu ZGlmCkBAIC00MCw4NCArNDAsNjkgQEAKIGV4dGVybiBpbnQgYXBfZXhwcl95eWRlYnVnOwogI2Vu ZGlmCiAKLS8qIFRva2Vucy4gICovCisvKiBUb2tlbiB0eXBlLiAgKi8KICNpZm5kZWYgWVlUT0tF TlRZUEUKICMgZGVmaW5lIFlZVE9LRU5UWVBFCi0gICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRo ZSBzeW1ib2wgdGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKLSAgICAgIGtu b3cgYWJvdXQgdGhlbS4gICovCi0gICBlbnVtIHl5dG9rZW50eXBlIHsKLSAgICAgVF9UUlVFID0g MjU4LAotICAgICBUX0ZBTFNFID0gMjU5LAotICAgICBUX0VYUFJfQk9PTCA9IDI2MCwKLSAgICAg VF9FWFBSX1NUUklORyA9IDI2MSwKLSAgICAgVF9FUlJPUiA9IDI2MiwKLSAgICAgVF9ESUdJVCA9 IDI2MywKLSAgICAgVF9JRCA9IDI2NCwKLSAgICAgVF9TVFJJTkcgPSAyNjUsCi0gICAgIFRfUkVH RVggPSAyNjYsCi0gICAgIFRfUkVHRVhfSSA9IDI2NywKLSAgICAgVF9SRUdFWF9CQUNLUkVGID0g MjY4LAotICAgICBUX09QX1VOQVJZID0gMjY5LAotICAgICBUX09QX0JJTkFSWSA9IDI3MCwKLSAg ICAgVF9TVFJfQkVHSU4gPSAyNzEsCi0gICAgIFRfU1RSX0VORCA9IDI3MiwKLSAgICAgVF9WQVJf QkVHSU4gPSAyNzMsCi0gICAgIFRfVkFSX0VORCA9IDI3NCwKLSAgICAgVF9PUF9FUSA9IDI3NSwK LSAgICAgVF9PUF9ORSA9IDI3NiwKLSAgICAgVF9PUF9MVCA9IDI3NywKLSAgICAgVF9PUF9MRSA9 IDI3OCwKLSAgICAgVF9PUF9HVCA9IDI3OSwKLSAgICAgVF9PUF9HRSA9IDI4MCwKLSAgICAgVF9P UF9SRUcgPSAyODEsCi0gICAgIFRfT1BfTlJFID0gMjgyLAotICAgICBUX09QX0lOID0gMjgzLAot ICAgICBUX09QX1NUUl9FUSA9IDI4NCwKLSAgICAgVF9PUF9TVFJfTkUgPSAyODUsCi0gICAgIFRf T1BfU1RSX0xUID0gMjg2LAotICAgICBUX09QX1NUUl9MRSA9IDI4NywKLSAgICAgVF9PUF9TVFJf R1QgPSAyODgsCi0gICAgIFRfT1BfU1RSX0dFID0gMjg5LAotICAgICBUX09QX0NPTkNBVCA9IDI5 MCwKLSAgICAgVF9PUF9PUiA9IDI5MSwKLSAgICAgVF9PUF9BTkQgPSAyOTIsCi0gICAgIFRfT1Bf Tk9UID0gMjkzCi0gICB9OworICBlbnVtIHl5dG9rZW50eXBlCisgIHsKKyAgICBUX1RSVUUgPSAy NTgsCisgICAgVF9GQUxTRSA9IDI1OSwKKyAgICBUX0VYUFJfQk9PTCA9IDI2MCwKKyAgICBUX0VY UFJfU1RSSU5HID0gMjYxLAorICAgIFRfRVJST1IgPSAyNjIsCisgICAgVF9ESUdJVCA9IDI2MywK KyAgICBUX0lEID0gMjY0LAorICAgIFRfU1RSSU5HID0gMjY1LAorICAgIFRfUkVHRVggPSAyNjYs CisgICAgVF9SRUdFWF9JID0gMjY3LAorICAgIFRfUkVHRVhfQkFDS1JFRiA9IDI2OCwKKyAgICBU X09QX1VOQVJZID0gMjY5LAorICAgIFRfT1BfQklOQVJZID0gMjcwLAorICAgIFRfU1RSX0JFR0lO ID0gMjcxLAorICAgIFRfU1RSX0VORCA9IDI3MiwKKyAgICBUX1ZBUl9CRUdJTiA9IDI3MywKKyAg ICBUX1ZBUl9FTkQgPSAyNzQsCisgICAgVF9PUF9FUSA9IDI3NSwKKyAgICBUX09QX05FID0gMjc2 LAorICAgIFRfT1BfTFQgPSAyNzcsCisgICAgVF9PUF9MRSA9IDI3OCwKKyAgICBUX09QX0dUID0g Mjc5LAorICAgIFRfT1BfR0UgPSAyODAsCisgICAgVF9PUF9SRUcgPSAyODEsCisgICAgVF9PUF9O UkUgPSAyODIsCisgICAgVF9PUF9JTiA9IDI4MywKKyAgICBUX09QX1NUUl9FUSA9IDI4NCwKKyAg ICBUX09QX1NUUl9ORSA9IDI4NSwKKyAgICBUX09QX1NUUl9MVCA9IDI4NiwKKyAgICBUX09QX1NU Ul9MRSA9IDI4NywKKyAgICBUX09QX1NUUl9HVCA9IDI4OCwKKyAgICBUX09QX1NUUl9HRSA9IDI4 OSwKKyAgICBUX09QX0NPTkNBVCA9IDI5MCwKKyAgICBUX09QX09SID0gMjkxLAorICAgIFRfT1Bf QU5EID0gMjkyLAorICAgIFRfT1BfTk9UID0gMjkzCisgIH07CiAjZW5kaWYKIAotCisvKiBWYWx1 ZSB0eXBlLiAgKi8KICNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9J U19ERUNMQVJFRAotdHlwZWRlZiB1bmlvbiBZWVNUWVBFCit0eXBlZGVmIHVuaW9uIFlZU1RZUEUg WVlTVFlQRTsKK3VuaW9uIFlZU1RZUEUKIHsKLS8qIExpbmUgMjA1MyBvZiB5YWNjLmMgICovCi0j bGluZSAzNSAidXRpbF9leHByX3BhcnNlLnkiCisjbGluZSAzNSAidXRpbF9leHByX3BhcnNlLnki IC8qIHlhY2MuYzoxOTA5ICAqLwogCiAgICAgY2hhciAgICAgICpjcFZhbDsKICAgICBhcF9leHBy X3QgKmV4VmFsOwogICAgIGludCAgICAgICAgbnVtOwogCi0KLS8qIExpbmUgMjA1MyBvZiB5YWNj LmMgICovCi0jbGluZSAxMDIgInV0aWxfZXhwcl9wYXJzZS5oIgotfSBZWVNUWVBFOworI2xpbmUg OTkgInV0aWxfZXhwcl9wYXJzZS5oIiAvKiB5YWNjLmM6MTkwOSAgKi8KK307CiAjIGRlZmluZSBZ WVNUWVBFX0lTX1RSSVZJQUwgMQotIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8qIG9ic29sZXNj ZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAx CiAjZW5kaWYKIAogCi0jaWZkZWYgWVlQQVJTRV9QQVJBTQotI2lmIGRlZmluZWQgX19TVERDX18g fHwgZGVmaW5lZCBfX2NwbHVzcGx1cwotaW50IGFwX2V4cHJfeXlwYXJzZSAodm9pZCAqWVlQQVJT RV9QQVJBTSk7Ci0jZWxzZQotaW50IGFwX2V4cHJfeXlwYXJzZSAoKTsKLSNlbmRpZgotI2Vsc2Ug LyogISBZWVBBUlNFX1BBUkFNICovCi0jaWYgZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9f Y3BsdXNwbHVzCisKIGludCBhcF9leHByX3l5cGFyc2UgKGFwX2V4cHJfcGFyc2VfY3R4X3QgKmN0 eCk7Ci0jZWxzZQotaW50IGFwX2V4cHJfeXlwYXJzZSAoKTsKLSNlbmRpZgotI2VuZGlmIC8qICEg WVlQQVJTRV9QQVJBTSAqLwogCiAjZW5kaWYgLyogIVlZX0FQX0VYUFJfWVlfVVRJTF9FWFBSX1BB UlNFX0hfSU5DTFVERUQgICovCkluZGV4OiBzZXJ2ZXIvdXRpbF9leHByX3NjYW4uYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzZXJ2ZXIvdXRpbF9leHByX3NjYW4uYwkocmV2aXNpb24gMTY0MzkwMykKKysrIHNl cnZlci91dGlsX2V4cHJfc2Nhbi5jCSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQAogI2Rl ZmluZSBGTEVYX1NDQU5ORVIKICNkZWZpbmUgWVlfRkxFWF9NQUpPUl9WRVJTSU9OIDIKICNkZWZp bmUgWVlfRkxFWF9NSU5PUl9WRVJTSU9OIDUKLSNkZWZpbmUgWVlfRkxFWF9TVUJNSU5PUl9WRVJT SU9OIDM1CisjZGVmaW5lIFlZX0ZMRVhfU1VCTUlOT1JfVkVSU0lPTiAzOQogI2lmIFlZX0ZMRVhf U1VCTUlOT1JfVkVSU0lPTiA+IDAKICNkZWZpbmUgRkxFWF9CRVRBCiAjZW5kaWYKQEAgLTE3OSwx MSArMTc5LDE3IEBAIHR5cGVkZWYgdm9pZCogeXlzY2FuX3Q7CiB0eXBlZGVmIHN0cnVjdCB5eV9i dWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKICNlbmRpZgogCisjaWZuZGVmIFlZX1RZUEVE RUZfWVlfU0laRV9UCisjZGVmaW5lIFlZX1RZUEVERUZfWVlfU0laRV9UCit0eXBlZGVmIHNpemVf dCB5eV9zaXplX3Q7CisjZW5kaWYKKwogI2RlZmluZSBFT0JfQUNUX0NPTlRJTlVFX1NDQU4gMAog I2RlZmluZSBFT0JfQUNUX0VORF9PRl9GSUxFIDEKICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENI IDIKIAogICAgICNkZWZpbmUgWVlfTEVTU19MSU5FTk8obikKKyAgICAjZGVmaW5lIFlZX0xJTkVO T19SRVdJTkRfVE8ocHRyKQogICAgIAogLyogUmV0dXJuIGFsbCBidXQgdGhlIGZpcnN0ICJuIiBt YXRjaGVkIGNoYXJhY3RlcnMgYmFjayB0byB0aGUgaW5wdXQgc3RyZWFtLiAqLwogI2RlZmluZSB5 eWxlc3MobikgXApAQCAtMjAxLDExICsyMDcsNiBAQCB0eXBlZGVmIHN0cnVjdCB5eV9idWZmZXJf c3RhdGUgKllZX0JVRkZFUl9TVEFURTsKIAogI2RlZmluZSB1bnB1dChjKSB5eXVucHV0KCBjLCB5 eWctPnl5dGV4dF9wdHIgLCB5eXNjYW5uZXIgKQogCi0jaWZuZGVmIFlZX1RZUEVERUZfWVlfU0la RV9UCi0jZGVmaW5lIFlZX1RZUEVERUZfWVlfU0laRV9UCi10eXBlZGVmIHNpemVfdCB5eV9zaXpl X3Q7Ci0jZW5kaWYKLQogI2lmbmRlZiBZWV9TVFJVQ1RfWVlfQlVGRkVSX1NUQVRFCiAjZGVmaW5l IFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUKIHN0cnVjdCB5eV9idWZmZXJfc3RhdGUKQEAgLTIy Myw3ICsyMjQsNyBAQCBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlCiAJLyogTnVtYmVyIG9mIGNoYXJh Y3RlcnMgcmVhZCBpbnRvIHl5X2NoX2J1Ziwgbm90IGluY2x1ZGluZyBFT0IKIAkgKiBjaGFyYWN0 ZXJzLgogCSAqLwotCWludCB5eV9uX2NoYXJzOworCXl5X3NpemVfdCB5eV9uX2NoYXJzOwogCiAJ LyogV2hldGhlciB3ZSAib3duIiB0aGUgYnVmZmVyIC0gaS5lLiwgd2Uga25vdyB3ZSBjcmVhdGVk IGl0LAogCSAqIGFuZCBjYW4gcmVhbGxvYygpIGl0IHRvIGdyb3cgaXQsIGFuZCBzaG91bGQgZnJl ZSgpIGl0IHRvCkBAIC0zMDIsNyArMzAzLDcgQEAgc3RhdGljIHZvaWQgYXBfZXhwcl95eV9pbml0 X2J1ZmZlciAoWVlfQlVGRkVSX1NUQVQKIAogWVlfQlVGRkVSX1NUQVRFIGFwX2V4cHJfeXlfc2Nh bl9idWZmZXIgKGNoYXIgKmJhc2UseXlfc2l6ZV90IHNpemUgLHl5c2Nhbl90IHl5c2Nhbm5lciAp OwogWVlfQlVGRkVSX1NUQVRFIGFwX2V4cHJfeXlfc2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hhciAq eXlfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKLVlZX0JVRkZFUl9TVEFURSBhcF9leHByX3l5 X3NjYW5fYnl0ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMsaW50IGxlbiAseXlzY2FuX3QgeXlzY2Fu bmVyICk7CitZWV9CVUZGRVJfU1RBVEUgYXBfZXhwcl95eV9zY2FuX2J5dGVzICh5eWNvbnN0IGNo YXIgKmJ5dGVzLHl5X3NpemVfdCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCiB2b2lkICph cF9leHByX3l5YWxsb2MgKHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7CiB2b2lkICph cF9leHByX3l5cmVhbGxvYyAodm9pZCAqLHl5X3NpemVfdCAseXlzY2FuX3QgeXlzY2FubmVyICk7 CkBAIC0zMzQsNyArMzM1LDcgQEAgdm9pZCBhcF9leHByX3l5ZnJlZSAodm9pZCAqICx5eXNjYW5f dCB5eXNjYW5uZXIgKTsKIAogLyogQmVnaW4gdXNlciBzZWN0MyAqLwogCi0jZGVmaW5lIGFwX2V4 cHJfeXl3cmFwKG4pIDEKKyNkZWZpbmUgYXBfZXhwcl95eXdyYXAoeXlzY2FubmVyKSAxCiAjZGVm aW5lIFlZX1NLSVBfWVlXUkFQCiAKIHR5cGVkZWYgdW5zaWduZWQgY2hhciBZWV9DSEFSOwpAQCAt NjI2LDcgKzYyNyw3IEBAIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9jaGtbMzE5XSA9 CiAgICAgICAgICAgICBQRVJST1IoIlN0cmluZyB0b28gbG9uZyIpOyAgICAgICAgICAgICAgXAog ICAgIH0gd2hpbGUgKDApCiAKLSNsaW5lIDYzMCAidXRpbF9leHByX3NjYW4uYyIKKyNsaW5lIDYz MSAidXRpbF9leHByX3NjYW4uYyIKIAogI2RlZmluZSBJTklUSUFMIDAKICNkZWZpbmUgc3RyIDEK QEAgLTY2MCw4ICs2NjEsOCBAQCBzdHJ1Y3QgeXlndXRzX3QKICAgICBzaXplX3QgeXlfYnVmZmVy X3N0YWNrX21heDsgLyoqPCBjYXBhY2l0eSBvZiBzdGFjay4gKi8KICAgICBZWV9CVUZGRVJfU1RB VEUgKiB5eV9idWZmZXJfc3RhY2s7IC8qKjwgU3RhY2sgYXMgYW4gYXJyYXkuICovCiAgICAgY2hh ciB5eV9ob2xkX2NoYXI7Ci0gICAgaW50IHl5X25fY2hhcnM7Ci0gICAgaW50IHl5bGVuZ19yOwor ICAgIHl5X3NpemVfdCB5eV9uX2NoYXJzOworICAgIHl5X3NpemVfdCB5eWxlbmdfcjsKICAgICBj aGFyICp5eV9jX2J1Zl9wOwogICAgIGludCB5eV9pbml0OwogICAgIGludCB5eV9zdGFydDsKQEAg LTcxNCw3ICs3MTUsNyBAQCBGSUxFICphcF9leHByX3l5Z2V0X291dCAoeXlzY2FuX3QgeXlzY2Fu bmVyICk7CiAKIHZvaWQgYXBfZXhwcl95eXNldF9vdXQgIChGSUxFICogb3V0X3N0ciAseXlzY2Fu X3QgeXlzY2FubmVyICk7CiAKLWludCBhcF9leHByX3l5Z2V0X2xlbmcgKHl5c2Nhbl90IHl5c2Nh bm5lciApOworeXlfc2l6ZV90IGFwX2V4cHJfeXlnZXRfbGVuZyAoeXlzY2FuX3QgeXlzY2FubmVy ICk7CiAKIGNoYXIgKmFwX2V4cHJfeXlnZXRfdGV4dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAK QEAgLTcyMiw2ICs3MjMsMTAgQEAgaW50IGFwX2V4cHJfeXlnZXRfbGluZW5vICh5eXNjYW5fdCB5 eXNjYW5uZXIgKTsKIAogdm9pZCBhcF9leHByX3l5c2V0X2xpbmVubyAoaW50IGxpbmVfbnVtYmVy ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAoraW50IGFwX2V4cHJfeXlnZXRfY29sdW1uICAoeXlz Y2FuX3QgeXlzY2FubmVyICk7CisKK3ZvaWQgYXBfZXhwcl95eXNldF9jb2x1bW4gKGludCBjb2x1 bW5fbm8gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworCiBZWVNUWVBFICogYXBfZXhwcl95eWdldF9s dmFsICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKIAogdm9pZCBhcF9leHByX3l5c2V0X2x2YWwgKFlZ U1RZUEUgKiB5eWx2YWxfcGFyYW0gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwpAQCAtODcxLDM0ICs4 NzYsNiBAQCBZWV9ERUNMCiAJcmVnaXN0ZXIgaW50IHl5X2FjdDsKICAgICBzdHJ1Y3QgeXlndXRz X3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CiAKLSNsaW5lIDkzICJ1dGls X2V4cHJfc2Nhbi5sIgotCi0KLSAgY2hhciAgcmVnZXhfYnVmW01BWF9TVFJJTkdfTEVOXTsKLSAg Y2hhciAqcmVnZXhfcHRyID0gTlVMTDsKLSAgY2hhciAgcmVnZXhfZGVsID0gJ1wwJzsKLQotCi0g LyoKLSAgKiBTZXQgaW5pdGlhbCBzdGF0ZSBmb3Igc3RyaW5nIGV4cHJlc3Npb25zCi0gICovCi0g IGlmICh5eWV4dHJhLT5hdF9zdGFydCkgewotICAgIHl5ZXh0cmEtPmF0X3N0YXJ0ID0gMDsKLSAg ICBpZiAoeXlleHRyYS0+ZmxhZ3MgJiBBUF9FWFBSX0ZMQUdfU1RSSU5HX1JFU1VMVCkgewotICAg ICAgICBCRUdJTihzdHIpOwotICAgICAgICByZXR1cm4gVF9FWFBSX1NUUklORzsKLSAgICB9Ci0g ICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBUX0VYUFJfQk9PTDsKLSAgICB9Ci0gIH0KLQotCi0g LyoKLSAgKiBXaGl0ZXNwYWNlcwotICAqLwotI2xpbmUgOTAxICJ1dGlsX2V4cHJfc2Nhbi5jIgot CiAgICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOwogCiAJaWYgKCAheXlnLT55eV9pbml0ICkKQEAg LTkyNyw2ICs5MDQsMzUgQEAgWVlfREVDTAogCQlhcF9leHByX3l5X2xvYWRfYnVmZmVyX3N0YXRl KHl5c2Nhbm5lciApOwogCQl9CiAKKwl7CisjbGluZSA5MyAidXRpbF9leHByX3NjYW4ubCIKKwor CisgIGNoYXIgIHJlZ2V4X2J1ZltNQVhfU1RSSU5HX0xFTl07CisgIGNoYXIgKnJlZ2V4X3B0ciA9 IE5VTEw7CisgIGNoYXIgIHJlZ2V4X2RlbCA9ICdcMCc7CisKKworIC8qCisgICogU2V0IGluaXRp YWwgc3RhdGUgZm9yIHN0cmluZyBleHByZXNzaW9ucworICAqLworICBpZiAoeXlleHRyYS0+YXRf c3RhcnQpIHsKKyAgICB5eWV4dHJhLT5hdF9zdGFydCA9IDA7CisgICAgaWYgKHl5ZXh0cmEtPmZs YWdzICYgQVBfRVhQUl9GTEFHX1NUUklOR19SRVNVTFQpIHsKKyAgICAgICAgQkVHSU4oc3RyKTsK KyAgICAgICAgcmV0dXJuIFRfRVhQUl9TVFJJTkc7CisgICAgfQorICAgIGVsc2UgeworICAgICAg ICByZXR1cm4gVF9FWFBSX0JPT0w7CisgICAgfQorICB9CisKKworIC8qCisgICogV2hpdGVzcGFj ZXMKKyAgKi8KKyNsaW5lIDkzNSAidXRpbF9leHByX3NjYW4uYyIKKwogCXdoaWxlICggMSApCQkv KiBsb29wcyB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkICovCiAJCXsKIAkJeXlfY3AgPSB5 eWctPnl5X2NfYnVmX3A7CkBAIC05NDMsNyArOTQ5LDcgQEAgWVlfREVDTAogeXlfbWF0Y2g6CiAJ CWRvCiAJCQl7Ci0JCQlyZWdpc3RlciBZWV9DSEFSIHl5X2MgPSB5eV9lY1tZWV9TQ19UT19VSSgq eXlfY3ApXTsKKwkJCXJlZ2lzdGVyIFlZX0NIQVIgeXlfYyA9IHl5X2VjW1lZX1NDX1RPX1VJKCp5 eV9jcCldIDsKIAkJCWlmICggeXlfYWNjZXB0W3l5X2N1cnJlbnRfc3RhdGVdICkKIAkJCQl7CiAJ CQkJeXlnLT55eV9sYXN0X2FjY2VwdGluZ19zdGF0ZSA9IHl5X2N1cnJlbnRfc3RhdGU7CkBAIC0x NTM0LDcgKzE1NDAsNyBAQCBZWV9SVUxFX1NFVFVQCiAjbGluZSA0MTMgInV0aWxfZXhwcl9zY2Fu LmwiCiBZWV9GQVRBTF9FUlJPUiggImZsZXggc2Nhbm5lciBqYW1tZWQiICk7CiAJWVlfQlJFQUsK LSNsaW5lIDE1MzggInV0aWxfZXhwcl9zY2FuLmMiCisjbGluZSAxNTQ0ICJ1dGlsX2V4cHJfc2Nh bi5jIgogY2FzZSBZWV9TVEFURV9FT0YoSU5JVElBTCk6CiBjYXNlIFlZX1NUQVRFX0VPRihyZWdl eCk6CiAJeXl0ZXJtaW5hdGUoKTsKQEAgLTE2NjcsNiArMTY3Myw3IEBAIGNhc2UgWVlfU1RBVEVf RU9GKHJlZ2V4KToKIAkJCSJmYXRhbCBmbGV4IHNjYW5uZXIgaW50ZXJuYWwgZXJyb3ItLW5vIGFj dGlvbiBmb3VuZCIgKTsKIAl9IC8qIGVuZCBvZiBhY3Rpb24gc3dpdGNoICovCiAJCX0gLyogZW5k IG9mIHNjYW5uaW5nIG9uZSB0b2tlbiAqLworCX0gLyogZW5kIG9mIHVzZXIncyBkZWNsYXJhdGlv bnMgKi8KIH0gLyogZW5kIG9mIGFwX2V4cHJfeXlsZXggKi8KIAogLyogeXlfZ2V0X25leHRfYnVm ZmVyIC0gdHJ5IHRvIHJlYWQgaW4gYSBuZXcgYnVmZmVyCkBAIC0xNzIzLDcgKzE3MzAsNyBAQCBz dGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJZWxz ZQogCQl7Ci0JCQlpbnQgbnVtX3RvX3JlYWQgPQorCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0K IAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92 ZSAtIDE7CiAKIAkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKQEAgLTE3MzAsNyArMTczNyw3 IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAJ CQl7IC8qIE5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgYnVmZmVyIC0gZ3JvdyBpdC4gKi8KIAogCQkJ LyoganVzdCBhIHNob3J0ZXIgbmFtZSBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyICovCi0JCQlZWV9C VUZGRVJfU1RBVEUgYiA9IFlZX0NVUlJFTlRfQlVGRkVSOworCQkJWVlfQlVGRkVSX1NUQVRFIGIg PSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUU7CiAKIAkJCWludCB5eV9jX2J1Zl9wX29mZnNldCA9 CiAJCQkJKGludCkgKHl5Zy0+eXlfY19idWZfcCAtIGItPnl5X2NoX2J1Zik7CkBAIC0xNzM3LDcg KzE3NDQsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2Fu bmVyKQogCiAJCQlpZiAoIGItPnl5X2lzX291cl9idWZmZXIgKQogCQkJCXsKLQkJCQlpbnQgbmV3 X3NpemUgPSBiLT55eV9idWZfc2l6ZSAqIDI7CisJCQkJeXlfc2l6ZV90IG5ld19zaXplID0gYi0+ eXlfYnVmX3NpemUgKiAyOwogCiAJCQkJaWYgKCBuZXdfc2l6ZSA8PSAwICkKIAkJCQkJYi0+eXlf YnVmX3NpemUgKz0gYi0+eXlfYnVmX3NpemUgLyA4OwpAQCAtMTc2OCw3ICsxNzc1LDcgQEAgc3Rh dGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKIAogCQkvKiBS ZWFkIGluIG1vcmUgZGF0YS4gKi8KIAkJWVlfSU5QVVQoICgmWVlfQ1VSUkVOVF9CVUZGRVJfTFZB TFVFLT55eV9jaF9idWZbbnVtYmVyX3RvX21vdmVdKSwKLQkJCXl5Zy0+eXlfbl9jaGFycywgKHNp emVfdCkgbnVtX3RvX3JlYWQgKTsKKwkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsK IAogCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSB5eWctPnl5X25fY2hh cnM7CiAJCX0KQEAgLTE4NjUsNiArMTg3Miw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVm ZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9i YXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CiAJeXlfaXNfamFt ID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gMTIzKTsKIAorCSh2b2lkKXl5ZzsKIAlyZXR1cm4geXlf aXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CiAKQEAgLTE4OTMsNyArMTkwMSw3IEBA IHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJ ZWxzZQogCQkJeyAvKiBuZWVkIG1vcmUgaW5wdXQgKi8KLQkJCWludCBvZmZzZXQgPSB5eWctPnl5 X2NfYnVmX3AgLSB5eWctPnl5dGV4dF9wdHI7CisJCQl5eV9zaXplX3Qgb2Zmc2V0ID0geXlnLT55 eV9jX2J1Zl9wIC0geXlnLT55eXRleHRfcHRyOwogCQkJKyt5eWctPnl5X2NfYnVmX3A7CiAKIAkJ CXN3aXRjaCAoIHl5X2dldF9uZXh0X2J1ZmZlciggeXlzY2FubmVyICkgKQpAQCAtMjE3Myw3ICsy MTgxLDcgQEAgdm9pZCBhcF9leHByX3l5cG9wX2J1ZmZlcl9zdGF0ZSAoeXlzY2FuX3QgeXlzY2Fu bmUKICAqLwogc3RhdGljIHZvaWQgYXBfZXhwcl95eWVuc3VyZV9idWZmZXJfc3RhY2sgKHl5c2Nh bl90IHl5c2Nhbm5lcikKIHsKLQlpbnQgbnVtX3RvX2FsbG9jOworCXl5X3NpemVfdCBudW1fdG9f YWxsb2M7CiAgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlz Y2FubmVyOwogCiAJaWYgKCF5eWctPnl5X2J1ZmZlcl9zdGFjaykgewpAQCAtMjI3MSwxMiArMjI3 OSwxMiBAQCBZWV9CVUZGRVJfU1RBVEUgYXBfZXhwcl95eV9zY2FuX3N0cmluZyAoeXljb25zdCBj aAogICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCiAgKiBAcmV0dXJuIHRo ZSBuZXdseSBhbGxvY2F0ZWQgYnVmZmVyIHN0YXRlIG9iamVjdC4KICAqLwotWVlfQlVGRkVSX1NU QVRFIGFwX2V4cHJfeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIGludCAg X3l5Ynl0ZXNfbGVuICwgeXlzY2FuX3QgeXlzY2FubmVyKQorWVlfQlVGRkVSX1NUQVRFIGFwX2V4 cHJfeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5 Ynl0ZXNfbGVuICwgeXlzY2FuX3QgeXlzY2FubmVyKQogewogCVlZX0JVRkZFUl9TVEFURSBiOwog CWNoYXIgKmJ1ZjsKIAl5eV9zaXplX3QgbjsKLQlpbnQgaTsKKwl5eV9zaXplX3QgaTsKICAgICAK IAkvKiBHZXQgbWVtb3J5IGZvciBmdWxsIGJ1ZmZlciwgaW5jbHVkaW5nIHNwYWNlIGZvciB0cmFp bGluZyBFT0Incy4gKi8KIAluID0gX3l5Ynl0ZXNfbGVuICsgMjsKQEAgLTI0MTEsNyArMjQxOSw3 IEBAIEZJTEUgKmFwX2V4cHJfeXlnZXRfb3V0ICAoeXlzY2FuX3QgeXlzY2FubmVyKQogLyoqIEdl dCB0aGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLgogICogQHBhcmFtIHl5c2Nhbm5lciBU aGUgc2Nhbm5lciBvYmplY3QuCiAgKi8KLWludCBhcF9leHByX3l5Z2V0X2xlbmcgICh5eXNjYW5f dCB5eXNjYW5uZXIpCit5eV9zaXplX3QgYXBfZXhwcl95eWdldF9sZW5nICAoeXlzY2FuX3QgeXlz Y2FubmVyKQogewogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq KXl5c2Nhbm5lcjsKICAgICByZXR1cm4geXlsZW5nOwpAQCAtMjQ0Nyw3ICsyNDU1LDcgQEAgdm9p ZCBhcF9leHByX3l5c2V0X2xpbmVubyAoaW50ICBsaW5lX251bWJlciAsIHl5c2MKIAogICAgICAg ICAvKiBsaW5lbm8gaXMgb25seSB2YWxpZCBpZiBhbiBpbnB1dCBidWZmZXIgZXhpc3RzLiAqLwog ICAgICAgICBpZiAoISBZWV9DVVJSRU5UX0JVRkZFUiApCi0gICAgICAgICAgIHl5X2ZhdGFsX2Vy cm9yKCAiYXBfZXhwcl95eXNldF9saW5lbm8gY2FsbGVkIHdpdGggbm8gYnVmZmVyIiAsIHl5c2Nh bm5lcik7IAorICAgICAgICAgICBZWV9GQVRBTF9FUlJPUiggImFwX2V4cHJfeXlzZXRfbGluZW5v IGNhbGxlZCB3aXRoIG5vIGJ1ZmZlciIgKTsKICAgICAKICAgICB5eWxpbmVubyA9IGxpbmVfbnVt YmVyOwogfQpAQCAtMjY3Niw3ICsyNjg0LDcgQEAgdm9pZCBhcF9leHByX3l5ZnJlZSAodm9pZCAq IHB0ciAsIHl5c2Nhbl90IHl5c2Nhbm4KIAogI2RlZmluZSBZWVRBQkxFU19OQU1FICJ5eXRhYmxl cyIKIAotI2xpbmUgNDEzICJ1dGlsX2V4cHJfc2Nhbi5sIgorI2xpbmUgNDEyICJ1dGlsX2V4cHJf c2Nhbi5sIgogCiAKIAo= --001a113eb8788cfd340509bab141--