From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: Old topic(s) again [was: Re: Proposal: immediate strings] Date: Wed, 04 Jul 2012 12:27:26 +0400 Message-ID: <4FF3FE6E.8080202@yandex.ru> References: <4FBB51E7.6080601@yandex.ru> <4FC472E6.5020005@yandex.ru> <4FC47CE1.6050901@cs.ucla.edu> <4FC4D025.9020608@yandex.ru> <4FC4EA10.702@cs.ucla.edu> <4FC739B4.30408@yandex.ru> <4FC79DAD.5040904@cs.ucla.edu> <4FCEF52E.9090801@yandex.ru> <4FCEFB8F.8080106@cs.ucla.edu> <4FCF06EB.8030109@yandex.ru> <83ipf4wk00.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020806020809030402090504" X-Trace: dough.gmane.org 1341390325 19728 80.91.229.3 (4 Jul 2012 08:25:25 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 4 Jul 2012 08:25:25 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jul 04 10:25:25 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SmKtm-0000Zi-MC for ged-emacs-devel@m.gmane.org; Wed, 04 Jul 2012 10:25:23 +0200 Original-Received: from localhost ([::1]:36673 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmKtl-0004u0-L1 for ged-emacs-devel@m.gmane.org; Wed, 04 Jul 2012 04:25:21 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:43888) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmKtg-0004t0-2O for emacs-devel@gnu.org; Wed, 04 Jul 2012 04:25:19 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SmKtZ-0002rO-KJ for emacs-devel@gnu.org; Wed, 04 Jul 2012 04:25:15 -0400 Original-Received: from forward20.mail.yandex.net ([95.108.253.145]:56865) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SmKtY-0002py-Nx for emacs-devel@gnu.org; Wed, 04 Jul 2012 04:25:09 -0400 Original-Received: from smtp18.mail.yandex.net (smtp18.mail.yandex.net [95.108.252.18]) by forward20.mail.yandex.net (Yandex) with ESMTP id ED47F1042888 for ; Wed, 4 Jul 2012 12:25:05 +0400 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341390305; bh=J1s99PaW+cD0t5JmYb2+XxaUqUgUAL34+ozDvvZwPFk=; h=Message-ID:Date:From:MIME-Version:To:Subject:References: In-Reply-To:Content-Type; b=HkQXIl62+w6jT+MzrmuGTi8rq4F0duvGQV4pP5VZ0k/gcVT8om6HSg1qgAg5xhqEb +dhEPDfo2XuvMMj6/bmoQC1X3rg68w7bkaM1k2xVo3tRpbVriwBJ4V+SVnhts+GfBf DeVfy8V1ePO0zj7Ifm3hzihWErfON7iEqRdFEMkA= Original-Received: from smtp18.mail.yandex.net (localhost [127.0.0.1]) by smtp18.mail.yandex.net (Yandex) with ESMTP id D6F1A18A019A for ; Wed, 4 Jul 2012 12:25:05 +0400 (MSK) Original-Received: from 221.gprs.mts.ru (221.gprs.mts.ru [213.87.135.221]) by smtp18.mail.yandex.net (nwsmtp/Yandex) with ESMTP id P3VabYAA-P4VmsZir; Wed, 4 Jul 2012 12:25:04 +0400 X-Yandex-Rcpt-Suid: emacs-devel@gnu.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1341390305; bh=J1s99PaW+cD0t5JmYb2+XxaUqUgUAL34+ozDvvZwPFk=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: References:In-Reply-To:Content-Type; b=ZZ+6PrpF0jHprn225Aeh7iaMj4L405bw7oZUnw0qNfrXdgS5GdCrw2C3UUQ+E3g+q CqryVVu46jfF8zrtvtOvobhVqn41mKriJPMCmmgV7b3VQ4oQ/aTrZlJP2HGb396C/c ZFViONUgyrKxDyGXJ3c8kdSJxondAXjk5Ypd5jGc= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120614 Thunderbird/13.0.1 In-Reply-To: <83ipf4wk00.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.253.145 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:151408 Archived-At: This is a multi-part message in MIME format. --------------020806020809030402090504 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This feature is not thrown away, so I would like to get more comments around it. Dmitry --------------020806020809030402090504 Content-Type: text/plain; charset=UTF-8; name="immstr.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="immstr.patch" PT09IG1vZGlmaWVkIGZpbGUgJ2NvbmZpZ3VyZS5pbicKLS0tIGNvbmZpZ3VyZS5pbgkyMDEy LTA3LTA0IDA4OjA3OjI2ICswMDAwCisrKyBjb25maWd1cmUuaW4JMjAxMi0wNy0wNCAwODow OToxMyArMDAwMApAQCAtMzA4MCw2ICszMDgwLDI5IEBACiAgICAgIGRlY2xhcmF0aW9ucy4g IERlZmluZSBhcyBlbXB0eSBmb3Igbm8gZXF1aXZhbGVudC5dKQogZmkKIAorZG5sIERldGVy bWluZSB0aGUgYmFzaWMgdHlwZSBvZiBwdHJkaWZmX3QuCitBQ19DSEVDS19TSVpFT0YoW2lu dF0pCitBQ19DSEVDS19TSVpFT0YoW2xvbmddKQorQUNfQ0hFQ0tfU0laRU9GKFtsb25nIGxv bmddKQorQUNfQ0hFQ0tfU0laRU9GKFtwdHJkaWZmX3RdKQorQUNfTVNHX0NIRUNLSU5HKFtm b3IgdGhlIGJhc2ljIHR5cGUgb2YgcHRyZGlmZl90XSkKK2lmIHRlc3QgJGFjX2N2X3NpemVv Zl9pbnQgPSAkYWNfY3Zfc2l6ZW9mX3B0cmRpZmZfdDsgdGhlbgorICAgZW1hY3NfY3ZfdHlw ZV9wdHJkaWZmX3Q9ImludCIKK2VsaWYgdGVzdCAkYWNfY3Zfc2l6ZW9mX2xvbmcgPSAkYWNf Y3Zfc2l6ZW9mX3B0cmRpZmZfdDsgdGhlbgorICAgZW1hY3NfY3ZfdHlwZV9wdHJkaWZmX3Q9 ImxvbmciCitlbGlmIHRlc3QgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcgPSAkYWNfY3Zfc2l6 ZW9mX3B0cmRpZmZfdDsgdGhlbgorICAgZW1hY3NfY3ZfdHlwZV9wdHJkaWZmX3Q9Imxvbmcg bG9uZyIKK2Vsc2UKKyAgIGVtYWNzX2N2X3R5cGVfcHRyZGlmZl90PSJ1bmtub3duIgorZmkK K0FDX01TR19SRVNVTFQoWyRlbWFjc19jdl90eXBlX3B0cmRpZmZfdF0pCitpZiB0ZXN0ICRl bWFjc19jdl90eXBlX3B0cmRpZmZfdCAhPSAidW5rbm93biI7IHRoZW4KKyAgIEFDX0RFRklO RV9VTlFVT1RFRChbVFlQRV9QVFJESUZGX1RdLCBbJGVtYWNzX2N2X3R5cGVfcHRyZGlmZl90 XSwKKyAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIHRoZSBiYXNpYyB0eXBlIG9m IHB0cmRpZmZfdF0pCitlbHNlCisgICBBQ19NU0dfRVJST1IoW1VuYWJsZSB0byBmaW5kIHRo ZSBiYXNpYyB0eXBlIG9mIHB0cmRpZmZfdC5dKQorZmkKKwogZG5sIEZpeG1lOiBBQ19TWVNf UE9TSVhfVEVSTUlPUyBzaG91bGQgcHJvYmFibHkgYmUgdXNlZCwgYnV0IGl0J3Mgbm90IGNs ZWFyCiBkbmwgaG93IHRoZSB0dHkgY29kZSBpcyByZWxhdGVkIHRvIFBPU0lYIGFuZC9vciBv dGhlciB2ZXJzaW9ucyBvZiB0ZXJtaW9zLgogZG5sIFRoZSBmb2xsb3dpbmcgbG9va3MgbGlr ZSBhIHVzZWZ1bCBzdGFydC4KCj09PSBtb2RpZmllZCBmaWxlICdzcmMvYWxsb2MuYycKLS0t IHNyYy9hbGxvYy5jCTIwMTItMDctMDMgMTY6MzU6NTMgKzAwMDAKKysrIHNyYy9hbGxvYy5j CTIwMTItMDctMDQgMDg6MDk6MTMgKzAwMDAKQEAgLTE0NywyMCArMTQ3LDE0IEBACiAvKiBN YXJrLCB1bm1hcmssIHF1ZXJ5IG1hcmsgYml0IG9mIGEgTGlzcCBzdHJpbmcuICBTIG11c3Qg YmUgYSBwb2ludGVyCiAgICB0byBhIHN0cnVjdCBMaXNwX1N0cmluZy4gICovCiAKLSNkZWZp bmUgTUFSS19TVFJJTkcoUykJCSgoUyktPnNpemUgfD0gQVJSQVlfTUFSS19GTEFHKQotI2Rl ZmluZSBVTk1BUktfU1RSSU5HKFMpCSgoUyktPnNpemUgJj0gfkFSUkFZX01BUktfRkxBRykK LSNkZWZpbmUgU1RSSU5HX01BUktFRF9QKFMpCSgoKFMpLT5zaXplICYgQVJSQVlfTUFSS19G TEFHKSAhPSAwKQorI2RlZmluZSBNQVJLX1NUUklORyhTKQkJKChTKS0+dS5pbW0uZ2NtYXJr Yml0ID0gMSkKKyNkZWZpbmUgVU5NQVJLX1NUUklORyhTKQkoKFMpLT51LmltbS5nY21hcmti aXQgPSAwKQorI2RlZmluZSBTVFJJTkdfTUFSS0VEX1AoUykJKChTKS0+dS5pbW0uZ2NtYXJr Yml0KQogCiAjZGVmaW5lIFZFQ1RPUl9NQVJLKFYpCQkoKFYpLT5oZWFkZXIuc2l6ZSB8PSBB UlJBWV9NQVJLX0ZMQUcpCiAjZGVmaW5lIFZFQ1RPUl9VTk1BUksoVikJKChWKS0+aGVhZGVy LnNpemUgJj0gfkFSUkFZX01BUktfRkxBRykKICNkZWZpbmUgVkVDVE9SX01BUktFRF9QKFYp CSgoKFYpLT5oZWFkZXIuc2l6ZSAmIEFSUkFZX01BUktfRkxBRykgIT0gMCkKIAotLyogVmFs dWUgaXMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBTLCBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3Qg TGlzcF9TdHJpbmcuCi0gICBCZSBjYXJlZnVsIGR1cmluZyBHQywgYmVjYXVzZSBTLT5zaXpl IGNvbnRhaW5zIHRoZSBtYXJrIGJpdCBmb3IKLSAgIHN0cmluZ3MuICAqLwotCi0jZGVmaW5l IEdDX1NUUklOR19CWVRFUyhTKQkoU1RSSU5HX0JZVEVTIChTKSkKLQogLyogR2xvYmFsIHZh cmlhYmxlcy4gICovCiBzdHJ1Y3QgZW1hY3NfZ2xvYmFscyBnbG9iYWxzOwogCkBAIC0zOTQs NiArMzg4LDcgQEAKIHN0YXRpYyB2b2lkIG1hcmtfc3RhY2sgKHZvaWQpOwogc3RhdGljIGlu dCBsaXZlX3ZlY3Rvcl9wIChzdHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKIHN0YXRpYyBp bnQgbGl2ZV9idWZmZXJfcCAoc3RydWN0IG1lbV9ub2RlICosIHZvaWQgKik7CitzdGF0aWMg aW50IGxpdmVfc3RyaW5nX2RhdGFfcCAoc3RydWN0IExpc3BfU3RyaW5nICopOwogc3RhdGlj IGludCBsaXZlX3N0cmluZ19wIChzdHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKIHN0YXRp YyBpbnQgbGl2ZV9jb25zX3AgKHN0cnVjdCBtZW1fbm9kZSAqLCB2b2lkICopOwogc3RhdGlj IGludCBsaXZlX3N5bWJvbF9wIChzdHJ1Y3QgbWVtX25vZGUgKiwgdm9pZCAqKTsKQEAgLTE3 MDksNiArMTcwNCwzNyBAQAogCiBzdGF0aWMgRU1BQ1NfSU5UIHRvdGFsX3N0cmluZ19zaXpl OwogCisjaWZkZWYgR0NfU1RSSU5HX1NUQVRTCisKKy8qIEFsbCBvZiB0aGVzZSBjb3VudGVy cyBhcmUgaW52YWxpZCBiZXR3ZWVuIEdDcworICAgYmVjYXVzZSB0aGV5IGFyZSB1cGRhdGVk IGF0IHRoZSBzd2VlcCBwaGFzZS4gICovCisKKy8qIE51bWJlciBvZiBsaXZlIGltbWVkaWF0 ZSBzdHJpbmdzLiAgKi8KKworc3RhdGljIEVNQUNTX0lOVCB0b3RhbF9pbW1fc3RyaW5nczsK KworLyogQW1vdW50IG9mIGRhdGEgYnl0ZXMgdXNlZCBieSB0aGVtLiAgKi8KKworc3RhdGlj IEVNQUNTX0lOVCB0b3RhbF9pbW1fYnl0ZXM7CisKKy8qIE51bWJlciBvZiBpbnRlcnZhbHMg YXR0YWNoZWQgdG8gdGhlbS4gICovCisKK3N0YXRpYyBFTUFDU19JTlQgdG90YWxfaW1tX2lu dGVydmFsczsKKworLyogTnVtYmVyIG9mIGxpdmUgbm9ybWFsIHN0cmluZ3MuICAqLworCitz dGF0aWMgRU1BQ1NfSU5UIHRvdGFsX2RhdF9zdHJpbmdzOworCisvKiBBbW91bnQgb2YgZGF0 YSBieXRlcyB1c2VkIGJ5IHRoZW0uICAqLworCitzdGF0aWMgRU1BQ1NfSU5UIHRvdGFsX2Rh dF9ieXRlczsKKworLyogTnVtYmVyIG9mIGludGVydmFscyBhdHRhY2hlZCB0byB0aGVtLiAg Ki8KKworc3RhdGljIEVNQUNTX0lOVCB0b3RhbF9kYXRfaW50ZXJ2YWxzOworCisjZW5kaWYg LyogR0NfU1RSSU5HX1NUQVRTICovCisKIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIExpc3Bf U3RyaW5nIFMgd2hpY2ggaXMgb24gdGhlIGZyZWUtbGlzdAogICAgc3RyaW5nX2ZyZWVfbGlz dCwgcmV0dXJuIGEgcG9pbnRlciB0byBpdHMgc3VjY2Vzc29yIGluIHRoZQogICAgZnJlZS1s aXN0LiAgKi8KQEAgLTE3MjAsNyArMTc0Niw4IEBACiAgICBhIHBvaW50ZXIgdG8gdGhlIGB1 LmRhdGEnIG1lbWJlciBvZiBpdHMgc2RhdGEgc3RydWN0dXJlOyB0aGUKICAgIHN0cnVjdHVy ZSBzdGFydHMgYXQgYSBjb25zdGFudCBvZmZzZXQgaW4gZnJvbnQgb2YgdGhhdC4gICovCiAK LSNkZWZpbmUgU0RBVEFfT0ZfU1RSSU5HKFMpICgoc3RydWN0IHNkYXRhICopICgoUyktPmRh dGEgLSBTREFUQV9EQVRBX09GRlNFVCkpCisjZGVmaW5lIFNEQVRBX09GX1NUUklORyhTKSAo KFMpLT51LmltbS5pbW1iaXQgPyAoc3RydWN0IHNkYXRhICopIE5VTEwgXAorICA6ICgoc3Ry dWN0IHNkYXRhICopICgoUyktPnUuZGF0LmRhdGEgLSBTREFUQV9EQVRBX09GRlNFVCkpKQog CiAKICNpZmRlZiBHQ19DSEVDS19TVFJJTkdfT1ZFUlJVTgpAQCAtMTc5NywyNiArMTgyNCwz MiBAQAogICBlbXB0eV9tdWx0aWJ5dGVfc3RyaW5nID0gbWFrZV9wdXJlX3N0cmluZyAoIiIs IDAsIDAsIDEpOwogfQogCi0KICNpZmRlZiBHQ19DSEVDS19TVFJJTkdfQllURVMKIAogc3Rh dGljIGludCBjaGVja19zdHJpbmdfYnl0ZXNfY291bnQ7CiAKLSNkZWZpbmUgQ0hFQ0tfU1RS SU5HX0JZVEVTKFMpCVNUUklOR19CWVRFUyAoUykKLQotCi0vKiBMaWtlIEdDX1NUUklOR19C WVRFUywgYnV0IHdpdGggZGVidWdnaW5nIGNoZWNrLiAgKi8KKyNkZWZpbmUgQ0hFQ0tfU1RS SU5HX0JZVEVTKFMpIHN0cmluZ19ieXRlcyAoUykKIAogcHRyZGlmZl90CiBzdHJpbmdfYnl0 ZXMgKHN0cnVjdCBMaXNwX1N0cmluZyAqcykKIHsKLSAgcHRyZGlmZl90IG5ieXRlcyA9Ci0g ICAgKHMtPnNpemVfYnl0ZSA8IDAgPyBzLT5zaXplICYgfkFSUkFZX01BUktfRkxBRyA6IHMt PnNpemVfYnl0ZSk7Ci0KLSAgaWYgKCFQVVJFX1BPSU5URVJfUCAocykKLSAgICAgICYmIHMt PmRhdGEKLSAgICAgICYmIG5ieXRlcyAhPSBTREFUQV9OQllURVMgKFNEQVRBX09GX1NUUklO RyAocykpKQotICAgIGFib3J0ICgpOworICBwdHJkaWZmX3QgbmJ5dGVzOworCisgIGlmIChz LT51LmltbS5pbW1iaXQpCisgICAgeworICAgICAgbmJ5dGVzID0gcy0+dS5pbW0uc2l6ZV9i eXRlID09IFNUUklOR19VTklCWVRFX0lNTV9NQVJLID8KKwlzLT51LmltbS5zaXplIDogcy0+ dS5pbW0uc2l6ZV9ieXRlOworICAgICAgZWFzc2VydCAobmJ5dGVzIDwgU1RSSU5HX0lNTV9T SVpFKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBuYnl0ZXMgPSBzLT51LmRhdC5z aXplX2J5dGUgPT0gU1RSSU5HX1VOSUJZVEVfREFUX01BUksgPworCXMtPnUuZGF0LnNpemUg OiBzLT51LmRhdC5zaXplX2J5dGU7CisgICAgICBlYXNzZXJ0IChuYnl0ZXMgPj0gU1RSSU5H X0lNTV9TSVpFKTsKKyAgICAgIGlmICghUFVSRV9QT0lOVEVSX1AgKHMpICYmIHMtPnUuZGF0 LmRhdGEpCisJZWFzc2VydCAobmJ5dGVzID09IFNEQVRBX05CWVRFUyAoU0RBVEFfT0ZfU1RS SU5HIChzKSkpOworICAgIH0KKwogICByZXR1cm4gbmJ5dGVzOwogfQogCkBAIC0xODQxLDcg KzE4NzQsNyBAQAogCUNIRUNLX1NUUklOR19CWVRFUyAoZnJvbS0+c3RyaW5nKTsKIAogICAg ICAgaWYgKGZyb20tPnN0cmluZykKLQluYnl0ZXMgPSBHQ19TVFJJTkdfQllURVMgKGZyb20t PnN0cmluZyk7CisJbmJ5dGVzID0gc3RyaW5nX2J5dGVzIChmcm9tLT5zdHJpbmcpOwogICAg ICAgZWxzZQogCW5ieXRlcyA9IFNEQVRBX05CWVRFUyAoZnJvbSk7CiAKQEAgLTE5MjYsOCAr MTk1OSw5IEBACiAgICAgICBmb3IgKGkgPSBTVFJJTkdfQkxPQ0tfU0laRSAtIDE7IGkgPj0g MDsgLS1pKQogCXsKIAkgIHMgPSBiLT5zdHJpbmdzICsgaTsKLQkgIC8qIEV2ZXJ5IHN0cmlu ZyBvbiBhIGZyZWUgbGlzdCBzaG91bGQgaGF2ZSBOVUxMIGRhdGEgcG9pbnRlci4gICovCi0J ICBzLT5kYXRhID0gTlVMTDsKKwkgIC8qIEV2ZXJ5IHN0cmluZyBvbiBhIGZyZWUgbGlzdCBp cyBpbW1lZGlhdGUuICAqLworCSAgcy0+dS5pbW0uaW1tYml0ID0gMTsKKwkgIHMtPnUuaW1t LmdjbWFya2JpdCA9IDA7CiAJICBORVhUX0ZSRUVfTElTUF9TVFJJTkcgKHMpID0gc3RyaW5n X2ZyZWVfbGlzdDsKIAkgIHN0cmluZ19mcmVlX2xpc3QgPSBzOwogCX0KQEAgLTIwNDMsMTMg KzIwNzcsMTEgQEAKICAgTUFMTE9DX1VOQkxPQ0tfSU5QVVQ7CiAKICAgZGF0YS0+c3RyaW5n ID0gczsKLSAgcy0+ZGF0YSA9IFNEQVRBX0RBVEEgKGRhdGEpOworICBzLT51LmRhdC5kYXRh ID0gU0RBVEFfREFUQSAoZGF0YSk7CiAjaWZkZWYgR0NfQ0hFQ0tfU1RSSU5HX0JZVEVTCiAg IFNEQVRBX05CWVRFUyAoZGF0YSkgPSBuYnl0ZXM7CiAjZW5kaWYKLSAgcy0+c2l6ZSA9IG5j aGFyczsKLSAgcy0+c2l6ZV9ieXRlID0gbmJ5dGVzOwotICBzLT5kYXRhW25ieXRlc10gPSAn XDAnOworICBzLT51LmRhdC5kYXRhW25ieXRlc10gPSAnXDAnOwogI2lmZGVmIEdDX0NIRUNL X1NUUklOR19PVkVSUlVOCiAgIG1lbWNweSAoKGNoYXIgKikgZGF0YSArIG5lZWRlZCwgc3Ry aW5nX292ZXJydW5fY29va2llLAogCSAgR0NfU1RSSU5HX09WRVJSVU5fQ09PS0lFX1NJWkUp OwpAQCAtMjA3MCw2ICsyMTAyLDEyIEBACiAgIHRvdGFsX3N0cmluZ3MgPSB0b3RhbF9mcmVl X3N0cmluZ3MgPSAwOwogICB0b3RhbF9zdHJpbmdfc2l6ZSA9IDA7CiAKKyNpZmRlZiBHQ19T VFJJTkdfU1RBVFMKKyAgdG90YWxfaW1tX3N0cmluZ3MgPSB0b3RhbF9kYXRfc3RyaW5ncyA9 IDA7CisgIHRvdGFsX2ltbV9ieXRlcyA9IHRvdGFsX2RhdF9ieXRlcyA9IDA7CisgIHRvdGFs X2ltbV9pbnRlcnZhbHMgPSB0b3RhbF9kYXRfaW50ZXJ2YWxzID0gMDsKKyNlbmRpZgorCiAg IC8qIFNjYW4gc3RyaW5nc19ibG9ja3MsIGZyZWUgTGlzcF9TdHJpbmdzIHRoYXQgYXJlbid0 IG1hcmtlZC4gICovCiAgIGZvciAoYiA9IHN0cmluZ19ibG9ja3M7IGI7IGIgPSBuZXh0KQog ICAgIHsKQEAgLTIwODIsNDkgKzIxMjAsNjQgQEAKIAl7CiAJICBzdHJ1Y3QgTGlzcF9TdHJp bmcgKnMgPSBiLT5zdHJpbmdzICsgaTsKIAotCSAgaWYgKHMtPmRhdGEpCisJICBpZiAoU1RS SU5HX01BUktFRF9QIChzKSkKKwkgICAgewkgICAgICAKKwkgICAgICAvKiBTdHJpbmcgaXMg bGl2ZTsgdW5tYXJrIGl0IGFuZCBpdHMgaW50ZXJ2YWxzLiAgKi8KKwkgICAgICBVTk1BUktf U1RSSU5HIChzKTsKKworCSAgICAgIGlmICghTlVMTF9JTlRFUlZBTF9QIChzLT5pbnRlcnZh bHMpKQorCQlVTk1BUktfQkFMQU5DRV9JTlRFUlZBTFMgKHMtPmludGVydmFscyk7CisKKwkg ICAgICArK3RvdGFsX3N0cmluZ3M7CisJICAgICAgdG90YWxfc3RyaW5nX3NpemUgKz0gc3Ry aW5nX2J5dGVzIChzKTsKKyNpZmRlZiBHQ19TVFJJTkdfU1RBVFMKKwkgICAgICBpZiAocy0+ dS5pbW0uaW1tYml0KQorCQl7CisJCSAgdG90YWxfaW1tX3N0cmluZ3MrKzsKKwkJICB0b3Rh bF9pbW1fYnl0ZXMgKz0gc3RyaW5nX2J5dGVzIChzKTsKKwkJICBpZiAoIU5VTExfSU5URVJW QUxfUCAocy0+aW50ZXJ2YWxzKSkKKwkJICAgIHRvdGFsX2ltbV9pbnRlcnZhbHMrKzsKKwkJ fQorCSAgICAgIGVsc2UKKwkJeworCQkgIHRvdGFsX2RhdF9zdHJpbmdzKys7CisJCSAgdG90 YWxfZGF0X2J5dGVzICs9IHN0cmluZ19ieXRlcyAocyk7CisJCSAgaWYgKCFOVUxMX0lOVEVS VkFMX1AgKHMtPmludGVydmFscykpCisJCSAgICB0b3RhbF9kYXRfaW50ZXJ2YWxzKys7CisJ CX0KKyNlbmRpZiAvKiBHQ19TVFJJTkdfU1RBVFMgKi8KKwkgICAgfQorCSAgZWxzZQogCSAg ICB7Ci0JICAgICAgLyogU3RyaW5nIHdhcyBub3Qgb24gZnJlZS1saXN0IGJlZm9yZS4gICov Ci0JICAgICAgaWYgKFNUUklOR19NQVJLRURfUCAocykpCi0JCXsKLQkJICAvKiBTdHJpbmcg aXMgbGl2ZTsgdW5tYXJrIGl0IGFuZCBpdHMgaW50ZXJ2YWxzLiAgKi8KLQkJICBVTk1BUktf U1RSSU5HIChzKTsKLQotCQkgIGlmICghTlVMTF9JTlRFUlZBTF9QIChzLT5pbnRlcnZhbHMp KQotCQkgICAgVU5NQVJLX0JBTEFOQ0VfSU5URVJWQUxTIChzLT5pbnRlcnZhbHMpOwotCi0J CSAgKyt0b3RhbF9zdHJpbmdzOwotCQkgIHRvdGFsX3N0cmluZ19zaXplICs9IFNUUklOR19C WVRFUyAocyk7Ci0JCX0KKwkgICAgICBpZiAocy0+dS5pbW0uaW1tYml0KQorCQkvKiBGaWxs IGRhdGEgd2l0aCBzcGVjaWFsIHBhdHRlcm4uIFVzZWQKKwkJICAgYnkgR0MgdG8gZmluZCBk ZWFkIGltbWVkaWF0ZSBzdHJpbmdzLiAgKi8KKwkJbWVtc2V0IChzLT51LmltbS5kYXRhLCAw eGZmLCBTVFJJTkdfSU1NX1NJWkUpOwogCSAgICAgIGVsc2UKIAkJewotCQkgIC8qIFN0cmlu ZyBpcyBkZWFkLiAgUHV0IGl0IG9uIHRoZSBmcmVlLWxpc3QuICAqLwotCQkgIHN0cnVjdCBz ZGF0YSAqZGF0YSA9IFNEQVRBX09GX1NUUklORyAocyk7CisJCSAgaWYgKHMtPnUuZGF0LmRh dGEpCisJCSAgICB7CisJCSAgICAgIC8qIFN0cmluZyBpcyBkZWFkLiAgUHV0IGl0IG9uIHRo ZSBmcmVlLWxpc3QuICAqLworCQkgICAgICBzdHJ1Y3Qgc2RhdGEgKmRhdGEgPSBTREFUQV9P Rl9TVFJJTkcgKHMpOwogCi0JCSAgLyogU2F2ZSB0aGUgc2l6ZSBvZiBTIGluIGl0cyBzZGF0 YSBzbyB0aGF0IHdlIGtub3cKLQkJICAgICBob3cgbGFyZ2UgdGhhdCBpcy4gIFJlc2V0IHRo ZSBzZGF0YSdzIHN0cmluZwotCQkgICAgIGJhY2stcG9pbnRlciBzbyB0aGF0IHdlIGtub3cg aXQncyBmcmVlLiAgKi8KKwkJICAgICAgLyogU2F2ZSB0aGUgc2l6ZSBvZiBTIGluIGl0cyBz ZGF0YSBzbyB0aGF0IHdlIGtub3cKKwkJCSBob3cgbGFyZ2UgdGhhdCBpcy4gIFJlc2V0IHRo ZSBzZGF0YSdzIHN0cmluZworCQkJIGJhY2stcG9pbnRlciBzbyB0aGF0IHdlIGtub3cgaXQn cyBmcmVlLiAgKi8KICNpZmRlZiBHQ19DSEVDS19TVFJJTkdfQllURVMKLQkJICBpZiAoR0Nf U1RSSU5HX0JZVEVTIChzKSAhPSBTREFUQV9OQllURVMgKGRhdGEpKQotCQkgICAgYWJvcnQg KCk7CisJCSAgICAgIGlmIChzdHJpbmdfYnl0ZXMgKHMpICE9IFNEQVRBX05CWVRFUyAoZGF0 YSkpCisJCQlhYm9ydCAoKTsKICNlbHNlCi0JCSAgZGF0YS0+dS5uYnl0ZXMgPSBHQ19TVFJJ TkdfQllURVMgKHMpOworCQkgICAgICBkYXRhLT51Lm5ieXRlcyA9IHN0cmluZ19ieXRlcyAo cyk7CiAjZW5kaWYKLQkJICBkYXRhLT5zdHJpbmcgPSBOVUxMOwotCi0JCSAgLyogUmVzZXQg dGhlIHN0cmluZ3MncyBgZGF0YScgbWVtYmVyIHNvIHRoYXQgd2UKLQkJICAgICBrbm93IGl0 J3MgZnJlZS4gICovCi0JCSAgcy0+ZGF0YSA9IE5VTEw7Ci0KLQkJICAvKiBQdXQgdGhlIHN0 cmluZyBvbiB0aGUgZnJlZS1saXN0LiAgKi8KLQkJICBORVhUX0ZSRUVfTElTUF9TVFJJTkcg KHMpID0gc3RyaW5nX2ZyZWVfbGlzdDsKLQkJICBzdHJpbmdfZnJlZV9saXN0ID0gczsKLQkJ ICArK25mcmVlOworCQkgICAgICBkYXRhLT5zdHJpbmcgPSBOVUxMOworCisJCSAgICAgIC8q IFJlc2V0IHRoZSBzdHJpbmdzJ3MgYGRhdGEnIG1lbWJlciBzbyB0aGF0IHdlCisJCQkga25v dyBpdCdzIGZyZWUuICAqLworCQkgICAgICBzLT51LmRhdC5kYXRhID0gTlVMTDsKKwkJICAg IH0KIAkJfQotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICAvKiBTIHdhcyBvbiB0 aGUgZnJlZS1saXN0IGJlZm9yZS4gIFB1dCBpdCB0aGVyZSBhZ2Fpbi4gICovCisKKwkgICAg ICAvKiBQdXQgdGhlIHN0cmluZyBvbiB0aGUgZnJlZS1saXN0LiAgKi8KIAkgICAgICBORVhU X0ZSRUVfTElTUF9TVFJJTkcgKHMpID0gc3RyaW5nX2ZyZWVfbGlzdDsKIAkgICAgICBzdHJp bmdfZnJlZV9saXN0ID0gczsKIAkgICAgICArK25mcmVlOwpAQCAtMjIxNiwxMiArMjI2OSwx MiBAQAogCSAgLyogQ2hlY2sgdGhhdCB0aGUgc3RyaW5nIHNpemUgcmVjb3JkZWQgaW4gdGhl IHN0cmluZyBpcyB0aGUKIAkgICAgIHNhbWUgYXMgdGhlIG9uZSByZWNvcmRlZCBpbiB0aGUg c2RhdGEgc3RydWN0dXJlLiAqLwogCSAgaWYgKGZyb20tPnN0cmluZwotCSAgICAgICYmIEdD X1NUUklOR19CWVRFUyAoZnJvbS0+c3RyaW5nKSAhPSBTREFUQV9OQllURVMgKGZyb20pKQor CSAgICAgICYmIHN0cmluZ19ieXRlcyAoZnJvbS0+c3RyaW5nKSAhPSBTREFUQV9OQllURVMg KGZyb20pKQogCSAgICBhYm9ydCAoKTsKICNlbmRpZiAvKiBHQ19DSEVDS19TVFJJTkdfQllU RVMgKi8KIAogCSAgaWYgKGZyb20tPnN0cmluZykKLQkgICAgbmJ5dGVzID0gR0NfU1RSSU5H X0JZVEVTIChmcm9tLT5zdHJpbmcpOworCSAgICBuYnl0ZXMgPSBzdHJpbmdfYnl0ZXMgKGZy b20tPnN0cmluZyk7CiAJICBlbHNlCiAJICAgIG5ieXRlcyA9IFNEQVRBX05CWVRFUyAoZnJv bSk7CiAKQEAgLTIyNTcsNyArMjMxMCw3IEBACiAJCXsKIAkJICBlYXNzZXJ0ICh0YiAhPSBi IHx8IHRvIDwgZnJvbSk7CiAJCSAgbWVtbW92ZSAodG8sIGZyb20sIG5ieXRlcyArIEdDX1NU UklOR19FWFRSQSk7Ci0JCSAgdG8tPnN0cmluZy0+ZGF0YSA9IFNEQVRBX0RBVEEgKHRvKTsK KwkJICB0by0+c3RyaW5nLT51LmRhdC5kYXRhID0gU0RBVEFfREFUQSAodG8pOwogCQl9CiAK IAkgICAgICAvKiBBZHZhbmNlIHBhc3QgdGhlIHNkYXRhIHdlIGNvcGllZCB0by4gICovCkBA IC0yNDk3LDggKzI1NTAsMjUgQEAKICAgICByZXR1cm4gZW1wdHlfbXVsdGlieXRlX3N0cmlu ZzsKIAogICBzID0gYWxsb2NhdGVfc3RyaW5nICgpOworICBzLT51LmltbS5nY21hcmtiaXQg PSAwOworCisgIGlmIChuYnl0ZXMgPCBTVFJJTkdfSU1NX1NJWkUpCisgICAgeworICAgICAg cy0+dS5pbW0uaW1tYml0ID0gMTsKKyAgICAgIHMtPnUuaW1tLmRhdGFbbmJ5dGVzXSA9ICdc MCc7CisgICAgICBzLT51LmltbS5zaXplID0gbmNoYXJzOworICAgICAgcy0+dS5pbW0uc2l6 ZV9ieXRlID0gbmJ5dGVzOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHMtPnUuaW1t LmltbWJpdCA9IDA7CisgICAgICBzLT51LmRhdC5kYXRhID0gTlVMTDsKKyAgICAgIHMtPnUu ZGF0LnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51LmRhdC5zaXplX2J5dGUgPSBuYnl0ZXM7 CisgICAgICBhbGxvY2F0ZV9zdHJpbmdfZGF0YSAocywgbmNoYXJzLCBuYnl0ZXMpOworICAg IH0KKwogICBzLT5pbnRlcnZhbHMgPSBOVUxMX0lOVEVSVkFMOwotICBhbGxvY2F0ZV9zdHJp bmdfZGF0YSAocywgbmNoYXJzLCBuYnl0ZXMpOwogICBYU0VUU1RSSU5HIChzdHJpbmcsIHMp OwogICBzdHJpbmdfY2hhcnNfY29uc2VkICs9IG5ieXRlczsKICAgcmV0dXJuIHN0cmluZzsK QEAgLTQxOTYsNiArNDI2NiwyMiBAQAogICB4LT5jb2xvciA9IE1FTV9CTEFDSzsKIH0KIAor LyogTm9uLXplcm8gaWYgZGF0YSBvZiBTIGlzIHZhbGlkLiAgKi8KKworc3RhdGljIGlubGlu ZSBpbnQKK2xpdmVfc3RyaW5nX2RhdGFfcCAoc3RydWN0IExpc3BfU3RyaW5nICpzKQorewor ICBpZiAocy0+dS5pbW0uaW1tYml0KQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGNoYXIgKnA7 CisKKyAgICAgIGZvciAocCA9IHMtPnUuaW1tLmRhdGE7IHAgPCBzLT51LmltbS5kYXRhICsg U1RSSU5HX0lNTV9TSVpFOyBwKyspCisJaWYgKCpwICE9IDB4ZmYpCisJICByZXR1cm4gMTsK KyAgICAgIHJldHVybiAwOworICAgIH0KKyAgcmV0dXJuIHMtPnUuZGF0LmRhdGEgIT0gTlVM TDsKK30KIAogLyogVmFsdWUgaXMgbm9uLXplcm8gaWYgUCBpcyBhIHBvaW50ZXIgdG8gYSBs aXZlIExpc3Agc3RyaW5nIG9uCiAgICB0aGUgaGVhcC4gIE0gaXMgYSBwb2ludGVyIHRvIHRo ZSBtZW1fYmxvY2sgZm9yIFAuICAqLwpAQCAtNDIxMyw3ICs0Mjk5LDcgQEAKICAgICAgIHJl dHVybiAob2Zmc2V0ID49IDAKIAkgICAgICAmJiBvZmZzZXQgJSBzaXplb2YgYi0+c3RyaW5n c1swXSA9PSAwCiAJICAgICAgJiYgb2Zmc2V0IDwgKFNUUklOR19CTE9DS19TSVpFICogc2l6 ZW9mIGItPnN0cmluZ3NbMF0pCi0JICAgICAgJiYgKChzdHJ1Y3QgTGlzcF9TdHJpbmcgKikg cCktPmRhdGEgIT0gTlVMTCk7CisJICAgICAgJiYgbGl2ZV9zdHJpbmdfZGF0YV9wICgoc3Ry dWN0IExpc3BfU3RyaW5nICopIHApKTsKICAgICB9CiAgIGVsc2UKICAgICByZXR1cm4gMDsK QEAgLTUxNTksMTUgKzUyNDUsMjkgQEAKICAgc3RydWN0IExpc3BfU3RyaW5nICpzOwogCiAg IHMgPSAoc3RydWN0IExpc3BfU3RyaW5nICopIHB1cmVfYWxsb2MgKHNpemVvZiAqcywgTGlz cF9TdHJpbmcpOwotICBzLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZmluZF9zdHJpbmdf ZGF0YV9pbl9wdXJlIChkYXRhLCBuYnl0ZXMpOwotICBpZiAocy0+ZGF0YSA9PSBOVUxMKQot ICAgIHsKLSAgICAgIHMtPmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBwdXJlX2FsbG9jIChu Ynl0ZXMgKyAxLCAtMSk7Ci0gICAgICBtZW1jcHkgKHMtPmRhdGEsIGRhdGEsIG5ieXRlcyk7 Ci0gICAgICBzLT5kYXRhW25ieXRlc10gPSAnXDAnOwotICAgIH0KLSAgcy0+c2l6ZSA9IG5j aGFyczsKLSAgcy0+c2l6ZV9ieXRlID0gbXVsdGlieXRlID8gbmJ5dGVzIDogLTE7CisKKyAg aWYgKG5ieXRlcyA8IFNUUklOR19JTU1fU0laRSkKKyAgICB7CisgICAgICBtZW1jcHkgKHMt PnUuaW1tLmRhdGEsIGRhdGEsIG5ieXRlcyk7CisgICAgICBzLT51LmltbS5kYXRhW25ieXRl c10gPSAnXDAnOworICAgICAgcy0+dS5pbW0uaW1tYml0ID0gMTsKKyAgICAgIHMtPnUuaW1t LnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51LmltbS5zaXplX2J5dGUgPSBtdWx0aWJ5dGUg PyBuYnl0ZXMgOiBTVFJJTkdfVU5JQllURV9JTU1fTUFSSzsKKyAgICB9CisgIGVsc2UKKyAg ICB7CisgICAgICBzLT51LmRhdC5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZmluZF9zdHJp bmdfZGF0YV9pbl9wdXJlIChkYXRhLCBuYnl0ZXMpOworICAgICAgaWYgKHMtPnUuZGF0LmRh dGEgPT0gTlVMTCkKKwl7CisJICBzLT51LmRhdC5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikg cHVyZV9hbGxvYyAobmJ5dGVzICsgMSwgLTEpOworCSAgbWVtY3B5IChzLT51LmRhdC5kYXRh LCBkYXRhLCBuYnl0ZXMpOworCSAgcy0+dS5kYXQuZGF0YVtuYnl0ZXNdID0gJ1wwJzsKKwl9 CisgICAgICBzLT51LmltbS5pbW1iaXQgPSAwOworICAgICAgcy0+dS5kYXQuc2l6ZSA9IG5j aGFyczsKKyAgICAgIHMtPnUuZGF0LnNpemVfYnl0ZSA9IG11bHRpYnl0ZSA/IG5ieXRlcyA6 IFNUUklOR19VTklCWVRFX0RBVF9NQVJLOworICAgIH0KKwogICBzLT5pbnRlcnZhbHMgPSBO VUxMX0lOVEVSVkFMOwogICBYU0VUU1RSSU5HIChzdHJpbmcsIHMpOwogICByZXR1cm4gc3Ry aW5nOwpAQCAtNTE4NCw5ICs1Mjg0LDIzIEBACiAgIHB0cmRpZmZfdCBuY2hhcnMgPSBzdHJs ZW4gKGRhdGEpOwogCiAgIHMgPSAoc3RydWN0IExpc3BfU3RyaW5nICopIHB1cmVfYWxsb2Mg KHNpemVvZiAqcywgTGlzcF9TdHJpbmcpOwotICBzLT5zaXplID0gbmNoYXJzOwotICBzLT5z aXplX2J5dGUgPSAtMTsKLSAgcy0+ZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7CisK KyAgaWYgKG5jaGFycyA8IFNUUklOR19JTU1fU0laRSkKKyAgICB7CisgICAgICBtZW1jcHkg KHMtPnUuaW1tLmRhdGEsIGRhdGEsIG5jaGFycyk7CisgICAgICBzLT51LmltbS5kYXRhW25j aGFyc10gPSAnXDAnOworICAgICAgcy0+dS5pbW0uaW1tYml0ID0gMTsKKyAgICAgIHMtPnUu aW1tLnNpemUgPSBuY2hhcnM7CisgICAgICBzLT51LmltbS5zaXplX2J5dGUgPSBTVFJJTkdf VU5JQllURV9JTU1fTUFSSzsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBzLT51LmRh dC5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKKyAgICAgIHMtPnUuaW1tLmltbWJp dCA9IDA7CisgICAgICBzLT51LmRhdC5zaXplID0gbmNoYXJzOworICAgICAgcy0+dS5kYXQu c2l6ZV9ieXRlID0gU1RSSU5HX1VOSUJZVEVfREFUX01BUks7CisgICAgfQorCiAgIHMtPmlu dGVydmFscyA9IE5VTExfSU5URVJWQUw7CiAgIFhTRVRTVFJJTkcgKHN0cmluZywgcyk7CiAg IHJldHVybiBzdHJpbmc7CkBAIC02NTg3LDYgKzY3MDEsMzQgQEAKICAgcmV0dXJuIEZsaXN0 ICg4LCBjb25zZWQpOwogfQogCisjaWZkZWYgR0NfU1RSSU5HX1NUQVRTCisKK0RFRlVOICgi c3RyaW5nLXN0YXRzIiwgRnN0cmluZ19zdGF0cywgU3N0cmluZ19zdGF0cywgMCwgMCwgMCwK KyAgICAgICBkb2M6IC8qIFJldHVybiBhIGxpc3Qgb2YgY291bnRlcnMgdGhhdCBtZWFzdXJl cyBob3cgbXVjaAorc3RyaW5ncyBvZiBhIHBhcnRpY3VsYXIgaW50ZXJuYWwgc3RydWN0dXJl IGFyZSBhbGl2ZSBhZnRlciBsYXN0CitnYXJiYWdlIGNvbGxlY3Rpb24sIGFuZCBob3cgbWFu eSBieXRlcyBhcmUgaW4gdGhlbS4KK1RoZSBlbGVtZW50cyBvZiB0aGUgdmFsdWUgYXJlIGFy ZSBhcyBmb2xsb3dzOgorICAoSU1NLVNUUklOR1MgSU1NLUJZVEVTIElNTS1JTlRFUlZBTFMg REFULVNUUklOR1MgREFULUJZVEVTIERBVC1JTlRFUlZBTFMpCit3aGVyZSBJTU0tU1RSSU5H UyBpcyB0aGUgbnVtYmVyIG9mIGltbWVkaWF0ZSBzdHJpbmdzLCBJTU0tQllURVMgaXMgdGhl IHRvdGFsCitudW1iZXIgb2YgYnl0ZXMgaW4gdGhlbSwgYW5kIElNTS1JTlRFUlZBTFMgaXMg dGhlIG51bWJlciBvZiBpbW1lZGlhdGUgc3RyaW5nCit3aXRoIG5vbi1uaWwgdGV4dCBwcm9w ZXJ0aWVzLiBUaGUgcmVzdCB0aHJlZSBudW1iZXJzIGhhcyB0aGUgc2FtZSBtZWFuaW5nCitm b3Igbm9ybWFsIHN0cmluZ3MsIHJlc3BlY3RpdmVseS4gICovKQorICAodm9pZCkKK3sKKyAg TGlzcF9PYmplY3QgZGF0YVs2XTsKKworICBkYXRhWzBdID0gbWFrZV9udW1iZXIgKG1pbiAo TU9TVF9QT1NJVElWRV9GSVhOVU0sIHRvdGFsX2ltbV9zdHJpbmdzKSk7CisgIGRhdGFbMV0g PSBtYWtlX251bWJlciAobWluIChNT1NUX1BPU0lUSVZFX0ZJWE5VTSwgdG90YWxfaW1tX2J5 dGVzKSk7CisgIGRhdGFbMl0gPSBtYWtlX251bWJlciAobWluIChNT1NUX1BPU0lUSVZFX0ZJ WE5VTSwgdG90YWxfaW1tX2ludGVydmFscykpOworICBkYXRhWzNdID0gbWFrZV9udW1iZXIg KG1pbiAoTU9TVF9QT1NJVElWRV9GSVhOVU0sIHRvdGFsX2RhdF9zdHJpbmdzKSk7CisgIGRh dGFbNF0gPSBtYWtlX251bWJlciAobWluIChNT1NUX1BPU0lUSVZFX0ZJWE5VTSwgdG90YWxf ZGF0X2J5dGVzKSk7CisgIGRhdGFbNV0gPSBtYWtlX251bWJlciAobWluIChNT1NUX1BPU0lU SVZFX0ZJWE5VTSwgdG90YWxfZGF0X2ludGVydmFscykpOworCisgIHJldHVybiBGbGlzdCAo NiwgZGF0YSk7Cit9CisKKyNlbmRpZiAvKiBHQ19TVFJJTkdfU1RBVFMgKi8KKwogLyogRmlu ZCBhdCBtb3N0IEZJTkRfTUFYIHN5bWJvbHMgd2hpY2ggaGF2ZSBPQkogYXMgdGhlaXIgdmFs dWUgb3IKICAgIGZ1bmN0aW9uLiAgVGhpcyBpcyB1c2VkIGluIGdkYmluaXQncyBgeHdoaWNo c3ltYm9scycgY29tbWFuZC4gICovCiAKQEAgLTY4MTUsNyArNjk1Nyw5IEBACiAgIGRlZnN1 YnIgKCZTZ2FyYmFnZV9jb2xsZWN0KTsKICAgZGVmc3ViciAoJlNtZW1vcnlfbGltaXQpOwog ICBkZWZzdWJyICgmU21lbW9yeV91c2VfY291bnRzKTsKLQorI2lmZGVmIEdDX1NUUklOR19T VEFUUworICBkZWZzdWJyICgmU3N0cmluZ19zdGF0cyk7CisjZW5kaWYKICNpZiBHQ19NQVJL X1NUQUNLID09IEdDX1VTRV9HQ1BST1NfQ0hFQ0tfWk9NQklFUwogICBkZWZzdWJyICgmU2dj X3N0YXR1cyk7CiAjZW5kaWYKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZm5zLmMnCi0tLSBz cmMvZm5zLmMJMjAxMi0wNi0yOCAwNzo1MDoyNyArMDAwMAorKysgc3JjL2Zucy5jCTIwMTIt MDctMDQgMDg6MDk6MTMgKzAwMDAKQEAgLTIxNjYsOCArMjE2Niw4IEBACiAJICBpbnQgbGVu ID0gQ0hBUl9TVFJJTkcgKGNoYXJ2YWwsIHN0cik7CiAJICBwdHJkaWZmX3Qgc2l6ZV9ieXRl ID0gU0JZVEVTIChhcnJheSk7CiAKLQkgIGlmIChJTlRfTVVMVElQTFlfT1ZFUkZMT1cgKFND SEFSUyAoYXJyYXkpLCBsZW4pCi0JICAgICAgfHwgU0NIQVJTIChhcnJheSkgKiBsZW4gIT0g c2l6ZV9ieXRlKQorCSAgaWYgKElOVF9NVUxUSVBMWV9PVkVSRkxPVyAoc2l6ZSwgbGVuKQor CSAgICAgIHx8IHNpemUgKiBsZW4gIT0gc2l6ZV9ieXRlKQogCSAgICBlcnJvciAoIkF0dGVt cHQgdG8gY2hhbmdlIGJ5dGUgbGVuZ3RoIG9mIGEgc3RyaW5nIik7CiAJICBmb3IgKGlkeCA9 IDA7IGlkeCA8IHNpemVfYnl0ZTsgaWR4KyspCiAJICAgICpwKysgPSBzdHJbaWR4ICUgbGVu XTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvbGlzcC5oJwotLS0gc3JjL2xpc3AuaAkyMDEy LTA3LTAzIDIwOjM0OjQ3ICswMDAwCisrKyBzcmMvbGlzcC5oCTIwMTItMDctMDQgMDg6MDk6 MTMgKzAwMDAKQEAgLTY5LDcgKzY5LDggQEAKICAgICBCSVRTX1BFUl9TSE9SVCAgICAgPSBD SEFSX0JJVCAqIHNpemVvZiAoc2hvcnQpLAogICAgIEJJVFNfUEVSX0lOVCAgICAgICA9IENI QVJfQklUICogc2l6ZW9mIChpbnQpLAogICAgIEJJVFNfUEVSX0xPTkcgICAgICA9IENIQVJf QklUICogc2l6ZW9mIChsb25nIGludCksCi0gICAgQklUU19QRVJfRU1BQ1NfSU5UID0gQ0hB Ul9CSVQgKiBzaXplb2YgKEVNQUNTX0lOVCkKKyAgICBCSVRTX1BFUl9FTUFDU19JTlQgPSBD SEFSX0JJVCAqIHNpemVvZiAoRU1BQ1NfSU5UKSwKKyAgICBCSVRTX1BFUl9QVFJESUZGX1Qg PSBDSEFSX0JJVCAqIHNpemVvZiAocHRyZGlmZl90KQogICB9OwogCiAvKiBwcmludG1heF90 IGFuZCB1cHJpbnRtYXhfdCBhcmUgdHlwZXMgZm9yIHByaW50aW5nIGxhcmdlIGludGVnZXJz LgpAQCAtNTc2LDIzICs1NzcsNiBAQAogICAgZWFzc2VydCAoKElEWCkgPj0gMCAmJiAoSURY KSA8IEFTSVpFIChBUlJBWSkpLAlcCiAgICBBUkVGICgoQVJSQVkpLCAoSURYKSkgPSAoVkFM KSkKIAotLyogQ29udmVuaWVuY2UgbWFjcm9zIGZvciBkZWFsaW5nIHdpdGggTGlzcCBzdHJp bmdzLiAgKi8KLQotI2RlZmluZSBTREFUQShzdHJpbmcpCQkoWFNUUklORyAoc3RyaW5nKS0+ ZGF0YSArIDApCi0jZGVmaW5lIFNSRUYoc3RyaW5nLCBpbmRleCkJKFNEQVRBIChzdHJpbmcp W2luZGV4XSArIDApCi0jZGVmaW5lIFNTRVQoc3RyaW5nLCBpbmRleCwgbmV3KSAoU0RBVEEg KHN0cmluZylbaW5kZXhdID0gKG5ldykpCi0jZGVmaW5lIFNDSEFSUyhzdHJpbmcpCQkoWFNU UklORyAoc3RyaW5nKS0+c2l6ZSArIDApCi0jZGVmaW5lIFNCWVRFUyhzdHJpbmcpCQkoU1RS SU5HX0JZVEVTIChYU1RSSU5HIChzdHJpbmcpKSArIDApCi0KLS8qIEF2b2lkICJkaWZmZXIg aW4gc2lnbiIgd2FybmluZ3MuICAqLwotI2RlZmluZSBTU0RBVEEoeCkgICgoY2hhciAqKSBT REFUQSAoeCkpCi0KLSNkZWZpbmUgU1RSSU5HX1NFVF9DSEFSUyhzdHJpbmcsIG5ld3NpemUp IFwKLSAgICAoWFNUUklORyAoc3RyaW5nKS0+c2l6ZSA9IChuZXdzaXplKSkKLQotI2RlZmlu ZSBTVFJJTkdfQ09QWUlOKHN0cmluZywgaW5kZXgsIG5ldywgY291bnQpIFwKLSAgICBtZW1j cHkgKFNEQVRBIChzdHJpbmcpICsgaW5kZXgsIG5ldywgY291bnQpCi0KIC8qIFR5cGUgY2hl Y2tpbmcuICAqLwogCiAjZGVmaW5lIENIRUNLX1RZUEUob2ssIFF4eHhwLCB4KSBcCkBAIC02 NzgsMjQgKzY2Miw0MCBAQAogI2RlZmluZSBDRFJfU0FGRShjKQkJCQlcCiAgIChDT05TUCAo KGMpKSA/IFhDRFIgKChjKSkgOiBRbmlsKQogCisvKiBDb252ZW5pZW5jZSBtYWNyb3MgZm9y IGRlYWxpbmcgd2l0aCBMaXNwIHN0cmluZ3MuICAqLworCisjZGVmaW5lIFNEQVRBKHN0cmlu ZykJCShYU1RSSU5HIChzdHJpbmcpLT51LmltbS5pbW1iaXQgPyBcCisJCQkJIChYU1RSSU5H IChzdHJpbmcpLT51LmltbS5kYXRhKSA6IFwKKwkJCQkgKFhTVFJJTkcgKHN0cmluZyktPnUu ZGF0LmRhdGEpKQorI2RlZmluZSBTUkVGKHN0cmluZywgaW5kZXgpCShTREFUQSAoc3RyaW5n KVtpbmRleF0gKyAwKQorI2RlZmluZSBTU0VUKHN0cmluZywgaW5kZXgsIG5ldykgKFNEQVRB IChzdHJpbmcpW2luZGV4XSA9IChuZXcpKQorI2RlZmluZSBTQ0hBUlMoc3RyaW5nKQkJKFhT VFJJTkcgKHN0cmluZyktPnUuaW1tLmltbWJpdCA/IFwKKwkJCQkgKFhTVFJJTkcgKHN0cmlu ZyktPnUuaW1tLnNpemUpIDogXAorCQkJCSAoWFNUUklORyAoc3RyaW5nKS0+dS5kYXQuc2l6 ZSkpCisjZGVmaW5lIFNCWVRFUyhzdHJpbmcpCQkoc3RyaW5nX2J5dGVzIChYU1RSSU5HIChz dHJpbmcpKSkKKworLyogQXZvaWQgImRpZmZlciBpbiBzaWduIiB3YXJuaW5ncy4gICovCisj ZGVmaW5lIFNTREFUQSh4KSAgKChjaGFyICopIFNEQVRBICh4KSkKKworI2RlZmluZSBTVFJJ TkdfU0VUX0NIQVJTKHN0cmluZywgbmV3c2l6ZSkJXAorICAoWFNUUklORyAoc3RyaW5nKS0+ dS5pbW0uaW1tYml0ID8JCVwKKyAgIChYU1RSSU5HIChzdHJpbmcpLT51LmltbS5zaXplID0g KG5ld3NpemUpKSA6IFwKKyAgIChYU1RSSU5HIChzdHJpbmcpLT51LmRhdC5zaXplID0gKG5l d3NpemUpKSkKKworI2RlZmluZSBTVFJJTkdfQ09QWUlOKHN0cmluZywgaW5kZXgsIG5ldywg Y291bnQpCVwKKyAgbWVtY3B5IChTREFUQSAoc3RyaW5nKSArIGluZGV4LCBuZXcsIGNvdW50 KQorCisvKiBGb3IgdW5pYnl0ZSBpbW1lZGlhdGUgc3RyaW5nLCBTSVpFX0JZVEUgZmllbGQg aXMgYWx3YXlzIHNldCB0byB0aGlzLiAgKi8KKyNkZWZpbmUgU1RSSU5HX1VOSUJZVEVfSU1N X01BUksgKCgxIDw8IChCSVRTX1BFUl9DSEFSIC0gMSkpIC0gMSkKKworLyogRm9yIHVuaWJ5 dGUgbm9ybWFsIHN0cmluZywgU0laRV9CWVRFIGZpZWxkIGlzIGFsd2F5cyBzZXQgdG8gdGhp cy4gICovCisjZGVmaW5lIFNUUklOR19VTklCWVRFX0RBVF9NQVJLICgoMVVMIDw8IChCSVRT X1BFUl9QVFJESUZGX1QgLSAxKSkgLSAxKQorCiAvKiBOb256ZXJvIGlmIFNUUiBpcyBhIG11 bHRpYnl0ZSBzdHJpbmcuICAqLwotI2RlZmluZSBTVFJJTkdfTVVMVElCWVRFKFNUUikgIFwK LSAgKFhTVFJJTkcgKFNUUiktPnNpemVfYnl0ZSA+PSAwKQotCi0vKiBSZXR1cm4gdGhlIGxl bmd0aCBpbiBieXRlcyBvZiBTVFIuICAqLwotCi0jaWZkZWYgR0NfQ0hFQ0tfU1RSSU5HX0JZ VEVTCi0KLXN0cnVjdCBMaXNwX1N0cmluZzsKLWV4dGVybiBwdHJkaWZmX3Qgc3RyaW5nX2J5 dGVzIChzdHJ1Y3QgTGlzcF9TdHJpbmcgKik7Ci0jZGVmaW5lIFNUUklOR19CWVRFUyhTKSBz dHJpbmdfYnl0ZXMgKChTKSkKLQotI2Vsc2UgLyogbm90IEdDX0NIRUNLX1NUUklOR19CWVRF UyAqLwotCi0jZGVmaW5lIFNUUklOR19CWVRFUyhTVFIpICBcCi0gICgoU1RSKS0+c2l6ZV9i eXRlIDwgMCA/IChTVFIpLT5zaXplIDogKFNUUiktPnNpemVfYnl0ZSkKLQotI2VuZGlmIC8q IG5vdCBHQ19DSEVDS19TVFJJTkdfQllURVMgKi8KKyNkZWZpbmUgU1RSSU5HX01VTFRJQllU RShzdHJpbmcpCQkJCQlcCisgIChYU1RSSU5HIChzdHJpbmcpLT51LmltbS5pbW1iaXQgPwkJ CQkJXAorICAgKFhTVFJJTkcgKHN0cmluZyktPnUuaW1tLnNpemVfYnl0ZSAhPSBTVFJJTkdf VU5JQllURV9JTU1fTUFSSykgOglcCisgICAoWFNUUklORyAoc3RyaW5nKS0+dS5kYXQuc2l6 ZV9ieXRlICE9IFNUUklOR19VTklCWVRFX0RBVF9NQVJLKSkKIAogLyogQW4gdXBwZXIgYm91 bmQgb24gdGhlIG51bWJlciBvZiBieXRlcyBpbiBhIExpc3Agc3RyaW5nLCBub3QKICAgIGNv dW50aW5nIHRoZSB0ZXJtaW5hdGluZyBudWxsLiAgVGhpcyBhIHRpZ2h0IGVub3VnaCBib3Vu ZCB0bwpAQCAtNzA4LDIxICs3MDgsMzMgQEAKICAgIHdvdWxkIGV4cG9zZSBhbGxvYy5jIGlu dGVybmFsIGRldGFpbHMgdGhhdCB3ZSdkIHJhdGhlciBrZWVwCiAgICBwcml2YXRlLiAgVGhl IGNhc3QgdG8gcHRyZGlmZl90IGVuc3VyZXMgdGhhdCBTVFJJTkdfQllURVNfQk9VTkQgaXMK ICAgIHNpZ25lZC4gICovCi0jZGVmaW5lIFNUUklOR19CWVRFU19CT1VORCAgXAotICBtaW4g KE1PU1RfUE9TSVRJVkVfRklYTlVNLCAocHRyZGlmZl90KSBtaW4gKFNJWkVfTUFYLCBQVFJE SUZGX01BWCkgLSAxKQorI2RlZmluZSBTVFJJTkdfQllURVNfQk9VTkQJCQkJCQlcCisgIG1p biAoTU9TVF9QT1NJVElWRV9GSVhOVU0sCQkJCQkJXAorICAgICAgIChwdHJkaWZmX3QpIG1p biAoU0laRV9NQVgsIFNUUklOR19VTklCWVRFX0RBVF9NQVJLIC0gMSkgLSAxKQorCisvKiBN YXhpbXVtIGFtb3VudCBvZiBieXRlcywgaW5jbHVkaW5nICdcMCcsIGluIGFuIGltbWVkaWF0 ZSBzdHJpbmcuICAqLworI2RlZmluZSBTVFJJTkdfSU1NX1NJWkUgKHNpemVvZiAodm9pZCAq KSArIDIgKiBzaXplb2YgKFRZUEVfUFRSRElGRl9UKSAtIDIpCiAKIC8qIE1hcmsgU1RSIGFz IGEgdW5pYnl0ZSBzdHJpbmcuICAqLwogI2RlZmluZSBTVFJJTkdfU0VUX1VOSUJZVEUoU1RS KSAgXAotICBkbyB7IGlmIChFUSAoU1RSLCBlbXB0eV9tdWx0aWJ5dGVfc3RyaW5nKSkgIFwK LSAgICAgIChTVFIpID0gZW1wdHlfdW5pYnl0ZV9zdHJpbmc7ICBcCi0gICAgZWxzZSBYU1RS SU5HIChTVFIpLT5zaXplX2J5dGUgPSAtMTsgfSB3aGlsZSAoMCkKKyAgZG8geyBpZiAoRVEg KFNUUiwgZW1wdHlfbXVsdGlieXRlX3N0cmluZykpCQkJXAorICAgICAgKFNUUikgPSBlbXB0 eV91bmlieXRlX3N0cmluZzsJCQkJXAorICAgIGVsc2UgaWYgKFhTVFJJTkcgKFNUUiktPnUu aW1tLmltbWJpdCkJCQlcCisgICAgICBYU1RSSU5HIChTVFIpLT51LmltbS5zaXplX2J5dGUg PSBTVFJJTkdfVU5JQllURV9JTU1fTUFSSzsJXAorICAgIGVsc2UJCQkJCQkJXAorICAgICAg WFNUUklORyAoU1RSKS0+dS5kYXQuc2l6ZV9ieXRlID0gU1RSSU5HX1VOSUJZVEVfREFUX01B Uks7CVwKKyAgfSB3aGlsZSAoMCkKIAogLyogTWFyayBTVFIgYXMgYSBtdWx0aWJ5dGUgc3Ry aW5nLiAgQXNzdXJlIHRoYXQgU1RSIGNvbnRhaW5zIG9ubHkKICAgIEFTQ0lJIGNoYXJhY3Rl cnMgaW4gYWR2YW5jZS4gICovCi0jZGVmaW5lIFNUUklOR19TRVRfTVVMVElCWVRFKFNUUikg IFwKLSAgZG8geyBpZiAoRVEgKFNUUiwgZW1wdHlfdW5pYnl0ZV9zdHJpbmcpKSAgXAotICAg ICAgKFNUUikgPSBlbXB0eV9tdWx0aWJ5dGVfc3RyaW5nOyAgXAotICAgIGVsc2UgWFNUUklO RyAoU1RSKS0+c2l6ZV9ieXRlID0gWFNUUklORyAoU1RSKS0+c2l6ZTsgfSB3aGlsZSAoMCkK KyNkZWZpbmUgU1RSSU5HX1NFVF9NVUxUSUJZVEUoU1RSKQkJCQkgIFwKKyAgZG8geyBpZiAo RVEgKFNUUiwgZW1wdHlfdW5pYnl0ZV9zdHJpbmcpKQkJCSAgXAorICAgICAgKFNUUikgPSBl bXB0eV9tdWx0aWJ5dGVfc3RyaW5nOwkJCQkgIFwKKyAgICBlbHNlIGlmIChYU1RSSU5HIChT VFIpLT51LmltbS5pbW1iaXQpCQkJICBcCisgICAgICBYU1RSSU5HIChTVFIpLT51LmltbS5z aXplX2J5dGUgPSBYU1RSSU5HIChTVFIpLT51LmltbS5zaXplOyBcCisgICAgZWxzZQkJCQkJ CQkgIFwKKyAgICAgIFhTVFJJTkcgKFNUUiktPnUuZGF0LnNpemVfYnl0ZSA9IFhTVFJJTkcg KFNUUiktPnUuZGF0LnNpemU7IFwKKyAgfSB3aGlsZSAoMCkKIAogLyogR2V0IHRleHQgcHJv cGVydGllcy4gICovCiAjZGVmaW5lIFNUUklOR19JTlRFUlZBTFMoU1RSKSAgKFhTVFJJTkcg KFNUUiktPmludGVydmFscyArIDApCkBAIC03MzAsMTUgKzc0Miw1NCBAQAogLyogU2V0IHRl eHQgcHJvcGVydGllcy4gICovCiAjZGVmaW5lIFNUUklOR19TRVRfSU5URVJWQUxTKFNUUiwg SU5UKSAoWFNUUklORyAoU1RSKS0+aW50ZXJ2YWxzID0gKElOVCkpCiAKLS8qIEluIGEgc3Ry aW5nIG9yIHZlY3RvciwgdGhlIHNpZ24gYml0IG9mIHRoZSBgc2l6ZScgaXMgdGhlIGdjIG1h cmsgYml0ICovCi0KIHN0cnVjdCBMaXNwX1N0cmluZwotICB7Ci0gICAgcHRyZGlmZl90IHNp emU7Ci0gICAgcHRyZGlmZl90IHNpemVfYnl0ZTsKLSAgICBJTlRFUlZBTCBpbnRlcnZhbHM7 CQkvKiB0ZXh0IHByb3BlcnRpZXMgaW4gdGhpcyBzdHJpbmcgKi8KLSAgICB1bnNpZ25lZCBj aGFyICpkYXRhOwotICB9OworeworICAvKiBUZXh0IHByb3BlcnRpZXMgaW4gdGhpcyBzdHJp bmcuICBTaG91bGQgYmUgdGhlIGZpcnN0CisgICAgIG1lbWJlciBzaW5jZSBORVhUX0ZSRUVf TElTUF9TVFJJTkcgZnJvbSBhbGxvYy5jIHVzZXMgaXQuICAqLworICBJTlRFUlZBTCBpbnRl cnZhbHM7CisKKyAgdW5pb24geworICAgIC8qIEdDIG1hcmsgYml0IGFuZCBzdWJ0eXBlIGJp dCBhcmUgaW4gSU1NIGp1c3QgYnkgY29udmVudGlvbiAtIHdoZW4KKyAgICAgICBJTU1CSVQg aXMgMCwgdGhlIERBVCBmaWVsZCBpcyB1c2VkIGV4Y2VwdCBpdCdzIFVOVVNFRCBmaWVsZC4g ICovCisgICAgc3RydWN0IHsKKyAgICAgIHVuc2lnbmVkIGltbWJpdCA6IDE7CisgICAgICB1 bnNpZ25lZCBzaXplIDogQklUU19QRVJfQ0hBUiAtIDE7CisgICAgICB1bnNpZ25lZCBjaGFy IGRhdGFbU1RSSU5HX0lNTV9TSVpFXTsKKyAgICAgIHVuc2lnbmVkIHNpemVfYnl0ZSA6IEJJ VFNfUEVSX0NIQVIgLSAxOworICAgICAgdW5zaWduZWQgZ2NtYXJrYml0IDogMTsKKyAgICB9 IGltbTsKKworICAgIHN0cnVjdCB7CisgICAgICB1bnNpZ25lZCBpbW1iaXQgOiAxOworICAg ICAgdW5zaWduZWQgVFlQRV9QVFJESUZGX1Qgc2l6ZSA6IEJJVFNfUEVSX1BUUkRJRkZfVCAt IDE7CisgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgICAgdW5zaWduZWQgVFlQRV9Q VFJESUZGX1Qgc2l6ZV9ieXRlIDogQklUU19QRVJfUFRSRElGRl9UIC0gMTsKKyAgICAgIHVu c2lnbmVkIGdjbWFya2JpdCA6IDE7CisgICAgfSBkYXQ7CisgIH0gdTsKK307CisKKy8qIFJl dHVybiB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIFNUUi4gICovCisKKyNpZmRlZiBHQ19DSEVD S19TVFJJTkdfQllURVMKKworc3RydWN0IExpc3BfU3RyaW5nOworZXh0ZXJuIHB0cmRpZmZf dCBzdHJpbmdfYnl0ZXMgKHN0cnVjdCBMaXNwX1N0cmluZyAqKTsKKyNkZWZpbmUgU1RSSU5H X0JZVEVTKFMpIHN0cmluZ19ieXRlcyAoKFMpKQorCisjZWxzZSAvKiBub3QgR0NfQ0hFQ0tf U1RSSU5HX0JZVEVTICovCisKK3N0YXRpYyBpbmxpbmUKK3B0cmRpZmZfdCBzdHJpbmdfYnl0 ZXMgKHN0cnVjdCBMaXNwX1N0cmluZyAqcykKK3sKKyAgaWYgKHMtPnUuaW1tLmltbWJpdCkK KyAgICByZXR1cm4gcy0+dS5pbW0uc2l6ZV9ieXRlID09IFNUUklOR19VTklCWVRFX0lNTV9N QVJLID8KKyAgICAgIHMtPnUuaW1tLnNpemUgOiBzLT51LmltbS5zaXplX2J5dGU7CisgIHJl dHVybiBzLT51LmRhdC5zaXplX2J5dGUgPT0gU1RSSU5HX1VOSUJZVEVfREFUX01BUksgPwor ICAgIHMtPnUuZGF0LnNpemUgOiBzLT51LmRhdC5zaXplX2J5dGU7Cit9CisKKyNlbmRpZiAv KiBub3QgR0NfQ0hFQ0tfU1RSSU5HX0JZVEVTICovCiAKIC8qIEhlYWRlciBvZiB2ZWN0b3It bGlrZSBvYmplY3RzLiAgVGhpcyBkb2N1bWVudHMgdGhlIGxheW91dCBjb25zdHJhaW50cyBv bgogICAgdmVjdG9ycyBhbmQgcHNldWRvdmVjdG9ycyBvdGhlciB0aGFuIHN0cnVjdCBMaXNw X1N1YnIuICBJdCBhbHNvIHByZXZlbnRzCgo= --------------020806020809030402090504--