From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#13783: simplify data_start configuration for Emacs Date: Fri, 22 Feb 2013 17:36:13 -0800 Organization: UCLA Computer Science Department Message-ID: <51281D0D.4080602@cs.ucla.edu> References: <512729DD.7040903@cs.ucla.edu> <83d2vsmrc0.fsf@gnu.org> <5127DB79.6000202@cs.ucla.edu> <83vc9kkp82.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080709050008050603010502" X-Trace: ger.gmane.org 1361583416 27213 80.91.229.3 (23 Feb 2013 01:36:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 23 Feb 2013 01:36:56 +0000 (UTC) Cc: 13783@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Feb 23 02:37:17 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1U943A-0003oV-PD for geb-bug-gnu-emacs@m.gmane.org; Sat, 23 Feb 2013 02:37:17 +0100 Original-Received: from localhost ([::1]:49965 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U942p-0002Uk-KL for geb-bug-gnu-emacs@m.gmane.org; Fri, 22 Feb 2013 20:36:55 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:57287) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U942g-0002Ub-7x for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 20:36:52 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U942X-0004Px-Os for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 20:36:46 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:39509) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U942X-0004Ps-L3 for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 20:36:37 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1U943u-0008Cb-Eo for bug-gnu-emacs@gnu.org; Fri, 22 Feb 2013 20:38:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Feb 2013 01:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13783 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 13783-submit@debbugs.gnu.org id=B13783.136158348031520 (code B ref 13783); Sat, 23 Feb 2013 01:38:02 +0000 Original-Received: (at 13783) by debbugs.gnu.org; 23 Feb 2013 01:38:00 +0000 Original-Received: from localhost ([127.0.0.1]:44973 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U943p-0008CJ-Ou for submit@debbugs.gnu.org; Fri, 22 Feb 2013 20:38:00 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:46668) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1U943j-0008C7-7G for 13783@debbugs.gnu.org; Fri, 22 Feb 2013 20:37:55 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 194D0A60001; Fri, 22 Feb 2013 17:36:25 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yKtz74Z+eYw3; Fri, 22 Feb 2013 17:36:21 -0800 (PST) Original-Received: from [192.168.1.9] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 7932939E8008; Fri, 22 Feb 2013 17:36:21 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 In-Reply-To: <83vc9kkp82.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:71689 Archived-At: This is a multi-part message in MIME format. --------------080709050008050603010502 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 02/22/13 13:34, Eli Zaretskii wrote: >> From: Paul Eggert >> >> The patch omits data_start on hosts that use the system malloc, >> since data_start is now needed only on hosts where GNU Emacs >> supplies malloc. > > You mean, gmalloc? How does that come into play? With the patch, data_start is used only by vm-limit.c. And vm-limit.c is compiled only when using gmalloc, as its isn't valid when using a system malloc. > It seems like data_start and data_size derived from it matter only > when displaying memory usage warnings -- is that correct? Yes. > If so, why doesn't this matter when system malloc is used? When the system malloc is used Emacs can't warn about low memory, because it has no way of knowing when memory is low. > The MS-Windows build computes data_start and data_size inside > unexw32.c at dump time -- is that good enough? (I'm asking because > your change doesn't touch the Windows build.) Yes, it should be, but that points out a problem with the latest patch -- it should use DATA_START for MS platforms. Here's a further patch to fix that, and I'm attaching the resulting combined patch, relative to trunk bzr 111860. === modified file 'src/vm-limit.c' --- src/vm-limit.c 2013-02-22 19:26:07 +0000 +++ src/vm-limit.c 2013-02-23 01:28:04 +0000 @@ -22,6 +22,7 @@ #ifdef MSDOS #include +extern int etext; #endif /* Some systems need this before . */ @@ -38,12 +39,16 @@ /* Start of data. It is OK if this is approximate; it's used only as a heuristic. */ +#ifdef DATA_START +# define data_start ((char *) DATA_START) +#else extern char data_start[]; -#ifndef HAVE_DATA_START +# ifndef HAVE_DATA_START /* Initialize to nonzero, so that it's put into data and not bss. Link this file's object code first, so that this symbol is near the start of data. */ char data_start[1] = { 1 }; +# endif #endif /* --------------080709050008050603010502 Content-Type: text/plain; charset=UTF-8; name="data_start.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="data_start.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEzLTAyLTIx IDIyOjQyOjU2ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMy0wMi0yMiAwODoyMTo1NSArMDAw MApAQCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTIyICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KKworCVNpbXBsaWZ5IGRhdGFfc3RhcnQgY29uZmlndXJhdGlvbiAoQnVn IzEzNzgzKS4KKwkqIGNvbmZpZ3VyZS5hYyAoQ1JUX0RJUiwgTElCX1NUQU5EQVJELCBTVEFS VF9GSUxFUywgREFUQV9TVEFSVCkKKwkoTERfRklSU1RGTEFHLCBPUkRJTkFSWV9MSU5LLCBM SUJfR0NDKTogUmVtb3ZlLgorCShBQ19DSEVDS19IRUFERVJTX09OQ0UpOiBSZW1vdmUgc3lz L3Jlc291cmNlLmgsIGFzIGl0J3MKKwlub3QgYWx3YXlzIG5lZWRlZC4KKwkoSEFWRV9EQVRB X1NUQVJUKTogTmV3IG1hY3JvLgorCiAyMDEzLTAyLTIxICBQYXVsIEVnZ2VydCAgPGVnZ2Vy dEBjcy51Y2xhLmVkdT4KIAogCVBhcmFsbGVsaXplIGRvY3VtZW50YXRpb24gYnVpbGRzLgoK PT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NQUC1ERUZJTkVTJwotLS0gYWRtaW4vQ1BQLURF RklORVMJMjAxMi0xMi0xNCAxODo1OTowMCArMDAwMAorKysgYWRtaW4vQ1BQLURFRklORVMJ MjAxMy0wMi0yMiAwODoxMTowNSArMDAwMApAQCAtOTAsNyArOTAsNiBAQAogQlJPS0VOX1BU WV9SRUFEX0FGVEVSX0VBR0FJTgogQ0xBU0hfREVURUNUSU9OCiBEQVRBX1NFR19CSVRTCi1E QVRBX1NUQVJUCiBERUZBVUxUX1NPVU5EX0RFVklDRQogREVWSUNFX1NFUAogRElSRUNUT1JZ X1NFUApAQCAtNDA4LDcgKzQwNyw2IEBACiBOU0lHCiBOU0lHX01JTklNVU0KIE5VTExfREVW SUNFCi1PUkRJTkFSWV9MSU5LCiBQQUdFU0laRQogUFJFRkVSX1ZTVVNQCiBQVFlfSVRFUkFU SU9OCgo9PT0gbW9kaWZpZWQgZmlsZSAnYWRtaW4vQ2hhbmdlTG9nJwotLS0gYWRtaW4vQ2hh bmdlTG9nCTIwMTMtMDItMTEgMjM6Mzc6MTggKzAwMDAKKysrIGFkbWluL0NoYW5nZUxvZwky MDEzLTAyLTIyIDA4OjIxOjU1ICswMDAwCkBAIC0xLDMgKzEsOCBAQAorMjAxMy0wMi0yMiAg UGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlTaW1wbGlmeSBkYXRhX3N0 YXJ0IGNvbmZpZ3VyYXRpb24gKEJ1ZyMxMzc4MykuCisJKiBDUFAtREVGSU5FUyAoREFUQV9T VEFSVCwgT1JESU5BUllfTElOSyk6IFJlbW92ZS4KKwogMjAxMy0wMi0xMSAgUGF1bCBFZ2dl cnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CiAKIAlUdW5lIGJ5IHVzaW5nIG1lbWNociBhbmQg bWVtcmNoci4KCj09PSBtb2RpZmllZCBmaWxlICdjb25maWd1cmUuYWMnCi0tLSBjb25maWd1 cmUuYWMJMjAxMy0wMi0xNSAwNjozNTo1NCArMDAwMAorKysgY29uZmlndXJlLmFjCTIwMTMt MDItMjIgMDg6MTE6MDUgKzAwMDAKQEAgLTIzMCwxMiArMjMwLDYgQEAKICAgIGZpCiBmaQog Ci1DUlRfRElSPQotQUNfQVJHX1dJVEgoW2NydC1kaXJdLGRubAotW0FTX0hFTFBfU1RSSU5H KFstLXdpdGgtY3J0LWRpcj1ESVJdLFtkaXJlY3RvcnkgY29udGFpbmluZyBjcnRuLm8gZXRj LgotVGhlIGRlZmF1bHQgaXMgL3Vzci9saWIsIG9yIC91c3IvbGliNjQgb24gc29tZSBwbGF0 Zm9ybXMuXSldKQotQ1JUX0RJUj0iJHt3aXRoX2NydF9kaXJ9IgotCiBBQ19BUkdfV0lUSChn YW1ldXNlcixkbmwKIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdhbWV1c2VyPVVTRVJdLFt1 c2VyIGZvciBzaGFyZWQgZ2FtZSBzY29yZSBmaWxlc10pXSkKIHRlc3QgIlgke3dpdGhfZ2Ft ZXVzZXJ9IiAhPSBYICYmIHRlc3QgIiR7d2l0aF9nYW1ldXNlcn0iICE9IHllcyBcCkBAIC0x MDUxLDQyICsxMDQ1LDI5IEBACiAKIAogTElCX01BVEg9LWxtCi1MSUJfU1RBTkRBUkQ9Ci1T VEFSVF9GSUxFUz0KIGRubCBDdXJyZW50IHBvc3NpYmlsaXRpZXMgaGFuZGxlZCBieSBzZWQg KGFpeDQtMiAtPiBhaXgsCiBkbmwgZ251LWxpbnV4IC0+IGdudS9saW51eCwgZXRjLik6CiBk bmwgZ251LCBnbnUvbGludXgsIGdudS9rZnJlZWJzZCwgYWl4LCBjeWd3aW4sIGRhcndpbiwg aHB1eCwgaXJpeC4KIGRubCBBbmQgc3BlY2lhbCBjYXNlczogYmVya2VsZXktdW5peCwgdXNn LXVuaXgtdiwgbXMtZG9zLCB3aW5kb3dzLW50LgogU1lTVEVNX1RZUEU9YGVjaG8gJG9wc3lz IHwgc2VkIC1lICdzL1tbMC05XV0uKi8vJyAtZSAnc3wtfC98J2AKIAotZG5sIE5CIGRvIG5v dCB1c2UgQ1JUX0RJUiB1bnF1b3RlZCBoZXJlLCBzaW5jZSBpdCBtaWdodCBub3QgYmUgc2V0 IHlldC4KIGNhc2UgJG9wc3lzIGluCiAgIGN5Z3dpbiApCiAgICAgTElCX01BVEg9Ci0gICAg U1RBUlRfRklMRVM9J3ByZS1jcnQwLm8nCiAgICAgOzsKICAgZGFyd2luICkKICAgICAjIyBB ZGRpbmcgLWxtIGNvbmZ1c2VzIHRoZSBkeW5hbWljIGxpbmtlciwgc28gb21pdCBpdC4KICAg ICBMSUJfTUFUSD0KLSAgICBTVEFSVF9GSUxFUz0ncHJlLWNydDAubycKICAgICA7OwogICBm cmVlYnNkICkKLSAgICBMSUJfU1RBTkRBUkQ9Jy1sZ2NjIC1sYyAtbGdjYyAkKENSVF9ESVIp L2NydG4ubycKLSAgICBTVEFSVF9GSUxFUz0ncHJlLWNydDAubyAkKENSVF9ESVIpL2NydDEu byAkKENSVF9ESVIpL2NydGkubycKICAgICBTWVNURU1fVFlQRT1iZXJrZWxleS11bml4CiAg ICAgOzsKICAgZ251LWxpbnV4IHwgZ251LWtmcmVlYnNkICkKLSAgICBMSUJfU1RBTkRBUkQ9 Jy1sZ2NjIC1sYyAtbGdjYyAkKENSVF9ESVIpL2NydG4ubycKLSAgICBTVEFSVF9GSUxFUz0n cHJlLWNydDAubyAkKENSVF9ESVIpL2NydDEubyAkKENSVF9ESVIpL2NydGkubycKICAgICA7 OwogICBocHV4MTAtMjAgfCBocHV4MTEgKQotICAgIExJQl9TVEFOREFSRD0tbGMKLSAgICBT VEFSVF9GSUxFUz0ncHJlLWNydDAubyAkKENSVF9ESVIpL2NydDAubycKICAgICA7OwogICBk bmwgTkIgdGhpcyBtYXkgYmUgYWRqdXN0ZWQgYmVsb3cuCiAgIG5ldGJzZCB8IG9wZW5ic2Qg KQotICAgIExJQl9TVEFOREFSRD0nLWxnY2MgLWxjIC1sZ2NjICQoQ1JUX0RJUikvY3J0ZW5k Lm8nCi0gICAgU1RBUlRfRklMRVM9J3ByZS1jcnQwLm8gJChDUlRfRElSKS9jcnQwLm8gJChD UlRfRElSKS9jcnRiZWdpbi5vJwogICAgIFNZU1RFTV9UWVBFPWJlcmtlbGV5LXVuaXgKICAg ICA7OwogCkBAIC0xMDk3LDk2ICsxMDc4LDkgQEAKIGVzYWMKIAogQUNfU1VCU1QoTElCX01B VEgpCi1BQ19TVUJTVChTVEFSVF9GSUxFUykKIEFDX0RFRklORV9VTlFVT1RFRChTWVNURU1f VFlQRSwgIiRTWVNURU1fVFlQRSIsCiAgIFtUaGUgdHlwZSBvZiBzeXN0ZW0geW91IGFyZSBj b21waWxpbmcgZm9yOyBzZXRzIGBzeXN0ZW0tdHlwZScuXSkKIAotZG5sIE5vdCBhbGwgcGxh dGZvcm1zIHVzZSBjcnRuLm8gZmlsZXMuICBDaGVjayBpZiB0aGUgY3VycmVudCBvbmUgZG9l cy4KLWNydF9maWxlcz0KLQotZm9yIGZpbGUgaW4geCAkTElCX1NUQU5EQVJEICRTVEFSVF9G SUxFUzsgZG8KLSAgY2FzZSAiJGZpbGUiIGluCi0gICAgKkNSVF9ESVIqKSBjcnRfZmlsZXM9 IiRjcnRfZmlsZXMgYGVjaG8gJGZpbGUgfCBzZWQgLWUgJ3N8LiovfHwnYCIgOzsKLSAgZXNh YwotZG9uZQotCi1pZiB0ZXN0ICJ4JGNydF9maWxlcyIgIT0geDsgdGhlbgotCi0gICMjIElm IHVzZXIgc3BlY2lmaWVkIGEgY3J0LWRpciwgdXNlIHRoYXQgdW5jb25kaXRpb25hbGx5Lgot ICBjcnRfZ2NjPW5vCi0KLSAgaWYgdGVzdCAiWCRDUlRfRElSIiA9ICJYIjsgdGhlbgotCi0g ICAgQ1JUX0RJUj0vdXNyL2xpYiAgICAgICAgICAgICMgZGVmYXVsdAotCi0gICAgY2FzZSAi JGNhbm9uaWNhbCIgaW4KLSAgICAgIHg4Nl82NC0qLWxpbnV4LWdudSogfCBzMzkweC0qLWxp bnV4LWdudSopCi0gICAgICAjIyBPbiB4ODYtNjQgYW5kIHMzOTB4IEdOVS9MaW51eCBkaXN0 cmlidXRpb25zLCB0aGUgc3RhbmRhcmQgbGlicmFyeQotICAgICAgIyMgY2FuIGJlIGluIGEg dmFyaWV0eSBvZiBwbGFjZXMuICBXZSBvbmx5IHRyeSAvdXNyL2xpYjY0IGFuZCAvdXNyL2xp Yi4KLSAgICAgICMjIEZvciBhbnl0aGluZyBlbHNlIChlZyAvdXNyL2xpYjMyKSwgaXQgaXMg dXAgdGhlIHVzZXIgdG8gc3BlY2lmeQotICAgICAgIyMgdGhlIGxvY2F0aW9uIChidWcjNTY1 NSkuCi0gICAgICAjIyBUZXN0IGZvciBjcnRuLm8sIG5vdCBqdXN0IHRoZSBkaXJlY3Rvcnks IGJlY2F1c2Ugc29tZXRpbWVzIHRoZQotICAgICAgIyMgZGlyZWN0b3J5IGV4aXN0cyBidXQg ZG9lcyBub3QgaGF2ZSB0aGUgcmVsZXZhbnQgZmlsZXMgKGJ1ZyMxMjg3KS4KLSAgICAgICMj IEZJWE1FIGJldHRlciB0byB0ZXN0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSBzb21laG93 LgotICAgICAgdGVzdCAtZSAvdXNyL2xpYjY0L2NydG4ubyAmJiBDUlRfRElSPS91c3IvbGli NjQKLSAgICAgIDs7Ci0KLSAgICAgIHBvd2VycGM2NC0qLWxpbnV4LWdudSogfCBzcGFyYzY0 LSotbGludXgtZ251KikgQ1JUX0RJUj0vdXNyL2xpYjY0IDs7Ci0gICAgZXNhYwotCi0gICAg Y2FzZSAiJG9wc3lzIiBpbgotICAgICAgaHB1eDEwLTIwKSBDUlRfRElSPS9saWIgOzsKLSAg ICBlc2FjCi0KLSAgICB0ZXN0ICJ4JHtHQ0N9IiA9IHh5ZXMgJiYgY3J0X2djYz15ZXMKLQot ICBmaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENSVF9ESVIgPSAiIgotCi0gIGNy dF9taXNzaW5nPQotCi0gIGZvciBmaWxlIGluICRjcnRfZmlsZXM7IGRvCi0KLSAgICAjIyBJ ZiB3ZSdyZSB1c2luZyBnY2MsIHRyeSB0byBkZXRlcm1pbmUgaXQgYXV0b21hdGljYWxseSBi eSBhc2tpbmcKLSAgICAjIyBnY2MuICBbSWYgdGhpcyBkb2Vzbid0IHdvcmssIENSVF9ESVIg d2lsbCByZW1haW4gYXQgdGhlCi0gICAgIyMgc3lzdGVtLWRlcGVuZGVudCBkZWZhdWx0IGZy b20gYWJvdmUuXQotICAgIGlmIHRlc3QgJGNydF9nY2MgPSB5ZXMgJiYgdGVzdCAhIC1lICRD UlRfRElSLyRmaWxlOyB0aGVuCi0KLSAgICAgICBjcnRfZmlsZT1gJENDIC0tcHJpbnQtZmls ZS1uYW1lPSRmaWxlIDI+L2Rldi9udWxsYAotICAgICAgIGNhc2UgIiRjcnRfZmlsZSIgaW4K LSAgICAgICAgICovKikKLSAgICAgICAgICAgQ1JUX0RJUj1gQVNfRElSTkFNRShbIiRjcnRf ZmlsZSJdKWAKLSAgICAgICAgICAgOzsKLSAgICAgICBlc2FjCi0gICAgZmkKLQotICAgIGRu bCBXZSBleHBlY3QgYWxsIHRoZSBmaWxlcyB0byBiZSBpbiBhIHNpbmdsZSBkaXJlY3Rvcnks IHNvIGFmdGVyIHRoZQotICAgIGRubCBmaXJzdCB0aGVyZSBpcyBubyBwb2ludCBhc2tpbmcg Z2NjLgotICAgIGNydF9nY2M9bm8KLQotICAgIHRlc3QgLWUgJENSVF9ESVIvJGZpbGUgfHwg Y3J0X21pc3Npbmc9IiRjcnRfbWlzc2luZyAkZmlsZSIKLSAgZG9uZSAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAkY3J0X2ZpbGVzCi0KLSAgdGVzdCAieCRjcnRfbWlzc2luZyIgPSB4 IHx8IFwKLSAgICBBQ19NU0dfRVJST1IoW1JlcXVpcmVkIGZpbGUocykgbm90IGZvdW5kOiRj cnRfbWlzc2luZwotVHJ5IHVzaW5nIHRoZSAtLXdpdGgtY3J0LWRpciBvcHRpb24uXSkKLQot ZmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNydF9maWxlcyAhPSAiIgotCi1B Q19TVUJTVChDUlRfRElSKQotCi1jYXNlICRvcHN5cyBpbgotICBuZXRic2QgfCBvcGVuYnNk ICkKLSAgICBpZiB0ZXN0IC1mICRDUlRfRElSL2NydGkubzsgdGhlbgotCi0gICAgICAgIHRl c3QgLWYgJENSVF9ESVIvY3J0bi5vIHx8IFwKLSAgICAgICAgICBBQ19NU0dfRVJST1IoW1Jl cXVpcmVkIGZpbGUgbm90IGZvdW5kOiBjcnRuLm9dKQotCi0gICAgICAgIExJQl9TVEFOREFS RD0nLWxnY2MgLWxjIC1sZ2NjICQoQ1JUX0RJUikvY3J0ZW5kLm8gJChDUlRfRElSKS9jcnRu Lm8nCi0gICAgICAgIFNUQVJUX0ZJTEVTPSdwcmUtY3J0MC5vICQoQ1JUX0RJUikvY3J0MC5v ICQoQ1JUX0RJUikvY3J0aS5vICQoQ1JUX0RJUikvY3J0YmVnaW4ubycKLSAgICBmaQotICAg IDs7Ci1lc2FjCi0KIAogcHJlX1BLR19DT05GSUdfQ0ZMQUdTPSRDRkxBR1MKIHByZV9QS0df Q09ORklHX0xJQlM9JExJQlMKQEAgLTEzMDQsNyArMTE5OCw3IEBACiBBQ19DSEVDS19IRUFE RVJTX09OQ0UoCiAgIGxpbnV4L3ZlcnNpb24uaCBzeXMvc3lzdGVtaW5mby5oCiAgIGNvZmYu aCBwdHkuaAotICBzeXMvdmxpbWl0Lmggc3lzL3Jlc291cmNlLmgKKyAgc3lzL3Jlc291cmNl LmgKICAgc3lzL3V0c25hbWUuaCBwd2QuaCB1dG1wLmggdXRpbC5oKQogCiBBQ19NU0dfQ0hF Q0tJTkcoaWYgcGVyc29uYWxpdHkgTElOVVgzMiBjYW4gYmUgc2V0KQpAQCAtMTUyMSw4ICsx NDE1LDYgQEAKICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1JJHtHTlVTVEVQX1NZU1RFTV9IRUFE RVJTfSAke0dOVVNURVBfTE9DQUxfSEVBREVSU30iCiAgICAgIExERkxBR1M9IiRMREZMQUdT IC1MJHtHTlVTVEVQX1NZU1RFTV9MSUJSQVJJRVN9ICR7R05VU1RFUF9MT0NBTF9MSUJSQVJJ RVN9IgogICAgICBMSUJTX0dOVVNURVA9Ii1sZ251c3RlcC1ndWkgLWxnbnVzdGVwLWJhc2Ug LWxvYmpjIC1scHRocmVhZCIKLSAgICAgTElCX1NUQU5EQVJEPQotICAgICBTVEFSVF9GSUxF Uz0KICAgICAgZG5sIEdOVXN0ZXAgZGVmaW5lcyBCQVNFX05BVElWRV9PQkpDX0VYQ0VQVElP TlMgdG8gMCBvciAxLgogICAgICBkbmwgSWYgdGhleSBoYWQgY2hvc2VuIHRvIGVpdGhlciBk ZWZpbmUgaXQgb3Igbm90LCB3ZSBjb3VsZCBoYXZlCiAgICAgIGRubCBqdXN0IHVzZWQgQUNf Q0hFQ0tfREVDTCBoZXJlLgpAQCAtMTYxMSw3ICsxNTAzLDYgQEAKIEFDX1NVQlNUKG5zX3Nl bGZfY29udGFpbmVkKQogQUNfU1VCU1QoTlNfT0JKKQogQUNfU1VCU1QoTlNfT0JKQ19PQkop Ci1BQ19TVUJTVChMSUJfU1RBTkRBUkQpCiAKIEhBVkVfVzMyPW5vCiBXMzJfT0JKPQpAQCAt MTc1MSw2ICsxNjQyLDIwIEBACiBlbHNlCiAgIHRlc3QgIiRkb3VnX2xlYV9tYWxsb2MiICE9 ICJ5ZXMiICYmIEdNQUxMT0NfT0JKPWdtYWxsb2MubwogICBWTUxJTUlUX09CSj12bS1saW1p dC5vCisKKyAgQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL3ZsaW1pdC5oXSkKKyAgQUNfQ0FDSEVf Q0hFQ0soW2ZvciBkYXRhX3N0YXJ0XSwgW2VtYWNzX2N2X2RhdGFfc3RhcnRdLAorICAgIFtB Q19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorCSBbW2V4dGVybiBj aGFyIGRhdGFfc3RhcnRbXTsgY2hhciBjaDtdXSwKKwkgW1tyZXR1cm4gZGF0YV9zdGFydCA9 PSAmY2g7XV0pXSwKKyAgICAgICBbZW1hY3NfY3ZfZGF0YV9zdGFydD15ZXNdLAorICAgICAg IFtlbWFjc19jdl9kYXRhX3N0YXJ0PW5vXSldKQorICBpZiB0ZXN0ICRlbWFjc19jdl9kYXRh X3N0YXJ0ID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0RBVEFfU1RBUlRdLCAx LAorICAgICAgW0RlZmluZSB0byAxIGlmIGRhdGFfc3RhcnQgaXMgdGhlIGFkZHJlc3Mgb2Yg dGhlIHN0YXJ0CisgICAgICAgb2YgdGhlIG1haW4gZGF0YSBzZWdtZW50Ll0pCisgIGZpCiBm aQogQUNfU1VCU1QoR01BTExPQ19PQkopCiBBQ19TVUJTVChWTUxJTUlUX09CSikKQEAgLTM3 MzUsOSArMzY0MCw3IEBACiBlc2FjCiAKIAotZG5sIFVzZWQgaW4gdm0tbGltaXQuYwotQUhf VEVNUExBVEUoREFUQV9TVEFSVCwgW0FkZHJlc3Mgb2YgdGhlIHN0YXJ0IG9mIHRoZSBkYXRh IHNlZ21lbnQuXSkKLWRubCBVc2VkIGluIGxpc3AuaCwgZW1hY3MuYywgbWVtLWxpbWl0cy5o CitkbmwgVXNlZCBpbiBsaXNwLmgsIGVtYWNzLmMsIHZtLWxpbWl0LmMKIGRubCBORVdTLjE4 IGRlc2NyaWJlcyB0aGlzIGFzICJhIG51bWJlciB3aGljaCBjb250YWlucwogZG5sIHRoZSBo aWdoIGJpdHMgdG8gYmUgaW5jbHVzaXZlIG9yJ2VkIHdpdGggcG9pbnRlcnMgdGhhdCBhcmUg dW5wYWNrZWQuIgogQUhfVEVNUExBVEUoREFUQV9TRUdfQklUUywgW0V4dHJhIGJpdHMgdG8g YmUgb3InZCBpbiB3aXRoIGFueSBwb2ludGVycwpAQCAtMzc0NSwyMyArMzY0OCwxNSBAQAog ZG5sIGlmIEVtYWNzIHVzZXMgZmV3ZXIgdGhhbiAzMiBiaXRzIGZvciB0aGUgdmFsdWUgZmll bGQgb2YgYSBMSVNQX09CSkVDVC4KIAogY2FzZSAkb3BzeXMgaW4KLSAgZ251KQotICAgIGRu bCBsaWJjIGRlZmluZXMgZGF0YV9zdGFydC4KLSAgICBBQ19ERUZJTkUoREFUQV9TVEFSVCwg Wyh7IGV4dGVybiBpbnQgZGF0YV9zdGFydDsgKGNoYXIgKikgJmRhdGFfc3RhcnQ7IH0pXSkK LSAgICA7OwotCiAgIGFpeCopCiAgICAgZG5sIFRoaXMgd29ya3Mgd2l0aCAzMi1iaXQgZXhl Y3V0YWJsZXM7IEVtYWNzIGRvZXNuJ3Qgc3VwcG9ydCA2NC1iaXQuCi0gICAgQUNfREVGSU5F KERBVEFfU1RBUlQsIFsweDIwMDAwMDAwXSkKICAgICBBQ19ERUZJTkUoREFUQV9TRUdfQklU UywgWzB4MjAwMDAwMDBdKQogICAgIDs7CiAgIGhwdXgqKQogICAgIGRubCBUaGUgZGF0YSBz ZWdtZW50IG9uIHRoaXMgbWFjaGluZSBhbHdheXMgc3RhcnRzIGF0IGFkZHJlc3MgMHg0MDAw MDAwMC4KLSAgICBBQ19ERUZJTkUoREFUQV9TVEFSVCwgWzB4NDAwMDAwMDBdKQogICAgIEFD X0RFRklORShEQVRBX1NFR19CSVRTLCBbMHg0MDAwMDAwMF0pCiAgICAgOzsKICAgaXJpeDYt NSkKLSAgICBBQ19ERUZJTkUoREFUQV9TVEFSVCwgWzB4MTAwMDAwMDBdKQogICAgIEFDX0RF RklORShEQVRBX1NFR19CSVRTLCBbMHgxMDAwMDAwMF0pCiAgICAgOzsKIGVzYWMKQEAgLTQz MjEsODggKzQyMTYsNiBAQAogCiBBQ19TVUJTVChMRF9TV0lUQ0hfU1lTVEVNX1RFTUFDUykK IAotCi1MRF9GSVJTVEZMQUc9Ci1PUkRJTkFSWV9MSU5LPQotY2FzZSAiJG9wc3lzIiBpbgot ICAjIyBnbnU6IEdOVSBuZWVkcyBpdHMgb3duIGNydDAuCi0gIGFpeDQtMnxjeWd3aW58ZGFy d2lufGdudXxocHV4Knxpcml4Ni01fHNvbDIqfHVuaXh3YXJlKSBPUkRJTkFSWV9MSU5LPXll cyA7OwotCi0gICMjIE9uIHBvc3QgMS4zIHJlbGVhc2VzIG9mIE5ldEJTRCwgZ2NjIC1ub3N0 ZGxpYiBhbHNvIGNsZWFycyB0aGUKLSAgIyMgbGlicmFyeSBzZWFyY2ggcGFydGgsIGkuZS4g aXQgd29uJ3Qgc2VhcmNoIC91c3IvbGliIGZvciBsaWJjIGFuZAotICAjIyBmcmllbmRzLiAg VXNpbmcgLW5vc3RhcnRmaWxlcyBpbnN0ZWFkIGF2b2lkcyB0aGlzIHByb2JsZW0sIGFuZAot ICAjIyB3aWxsIGFsc28gd29yayBvbiBlYXJsaWVyIE5ldEJTRCByZWxlYXNlcy4KLSAgbmV0 YnNkfG9wZW5ic2QpIExEX0ZJUlNURkxBRz0iLW5vc3RhcnRmaWxlcyIgOzsKLQotICAjIyBw b3dlcnBjKjogTkFLQUpJIEhpcm95dWtpIDxuYWthamlAdHV0cnAudHV0LmFjLmpwPiBzYXlz Ci0gICMjICAgTWtMaW51eC9MaW51eFBQQyBuZWVkcyB0aGlzLgotICAjIyBzMzkweC0qIG9u bHkgc3VwcG9ydHMgb3BzeXMgPSBnbnUtbGludXggc28gaXQgY2FuIGJlIGFkZGVkIGhlcmUu Ci0gIGdudS0qKQotICAgIGNhc2UgIiRjYW5vbmljYWwiIGluCi0gICAgICBwb3dlcnBjKnxz MzkweC0qKSBMRF9GSVJTVEZMQUc9Ii1ub3N0ZGxpYiIgOzsKLSAgICBlc2FjCi0gICAgOzsK LWVzYWMKLQotCi1pZiB0ZXN0ICJ4JE9SRElOQVJZX0xJTksiID0gInh5ZXMiOyB0aGVuCi0K LSAgTERfRklSU1RGTEFHPSIiCi0gIEFDX0RFRklORShPUkRJTkFSWV9MSU5LLCAxLCBbRGVm aW5lIGlmIHRoZSBDIGNvbXBpbGVyIGlzIHRoZSBsaW5rZXIuXSkKLQotIyMgVGhlIHN5c3Rl bSBmaWxlcyBkZWZpbmluZyBuZWl0aGVyIE9SRElOQVJZX0xJTksgbm9yIExEX0ZJUlNURkxB RyBhcmU6Ci0jIyBmcmVlYnNkLCBnbnUtKiBub3Qgb24gcG93ZXJwYyp8czM5MHgqLgotZWxp ZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyIgJiYgdGVzdCAieCRMRF9GSVJTVEZMQUciID0gIngi OyB0aGVuCi0KLSAgIyMgVmVyc2lvbnMgb2YgR0NDID49IDIuMCBwdXQgdGhlaXIgbGlicmFy eSwgbGliZ2NjLmEsIGluIG9ic2N1cmUKLSAgIyMgcGxhY2VzIHRoYXQgYXJlIGRpZmZpY3Vs dCB0byBmaWd1cmUgb3V0IGF0IG1ha2UgdGltZS4gIEZvcnR1bmF0ZWx5LAotICAjIyB0aGVz ZSBzYW1lIHZlcnNpb25zIGFsbG93IHlvdSB0byBwYXNzIGFyYml0cmFyeSBmbGFncyBvbiB0 byB0aGUKLSAgIyMgbGlua2VyLCBzbyB0aGVyZSBpcyBubyByZWFzb24gbm90IHRvIHVzZSBp dCBhcyBhIGxpbmtlci4KLSAgIyMKLSAgIyMgV2VsbCwgaXQgaXMgbm90IHF1aXRlIHBlcmZl Y3QuICBUaGUgIi1ub3N0ZGxpYiIga2VlcHMgR0NDIGZyb20KLSAgIyMgc2VhcmNoaW5nIGZv ciBsaWJyYXJpZXMgaW4gaXRzIGludGVybmFsIGRpcmVjdG9yaWVzLCBzbyB3ZSBoYXZlIHRv Ci0gICMjIGFzayBHQ0MgZXhwbGljaXRseSB3aGVyZSB0byBmaW5kIGxpYmdjYy5hIChMSUJf R0NDIGJlbG93KS4KLSAgTERfRklSU1RGTEFHPSItbm9zdGRsaWIiCi1maQotCi0jIyBGSVhN RT8gV2hhdCBzZXR0aW5nIG9mIEVESVRfTERGTEFHUyBzaG91bGQgdGhpcyBoYXZlPwotdGVz dCAiJE5TX0lNUExfR05VU1RFUCIgPSAieWVzIiAmJiBMRF9GSVJTVEZMQUc9Ii1yZHluYW1p YyIKLQotQUNfU1VCU1QoTERfRklSU1RGTEFHKQotCi0KLSMjIEZJWE1FPyBUaGUgbG9naWMg aGVyZSBpcyBub3QgcHJlY2lzZWx5IHRoZSBzYW1lIGFzIHRoYXQgYWJvdmUuCi0jIyBUaGVy ZSBpcyBubyBjaGVjayBoZXJlIGZvciBhIHByZS1kZWZpbmVkIExEX0ZJUlNURkxBRy4KLSMj IFNob3VsZCB3ZSBvbmx5IGJlIHNldHRpbmcgTElCX0dDQyBpZiBMRCB+IC1ub3N0ZGxpYj8K LUxJQl9HQ0M9Ci1pZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyIgJiYgdGVzdCAieCRPUkRJTkFS WV9MSU5LIiAhPSAieHllcyI7IHRoZW4KLQotICBjYXNlICIkb3BzeXMiIGluCi0gICAgZnJl ZWJzZHxuZXRic2R8b3BlbmJzZCkgTElCX0dDQz0gOzsKLQotICAgIGdudS0qKQotICAgICAg IyMgYXJtaW43NkBnZW50b28ub3JnIHJlcG9ydGVkIHRoYXQgdGhlIGxnY2NfcyBmbGFnIGlz IG5lY2Vzc2FyeSB0bwotICAgICAgIyMgYnVpbGQgb24gQVJNIEVBQkkgdW5kZXIgR05VL0xp bnV4LiAgKEJ1ZyM1NTE4KQotICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgIGFybSop Ci0gICAgICAgIExJQl9HQ0M9Ii1sZ2NjX3MiCi0JOzsKLSAgICAgICopCi0gICAgICAgICMj IEZJWE1FPyBzL2dudS1saW51eC5oIHVzZWQgdG8gZGVmaW5lIExJQl9HQ0MgYXMgYmVsb3cs IHRoZW4KLSAgICAgICAgIyMgaW1tZWRpYXRlbHkgdW5kZWZpbmUgaXQgYWdhaW4gYW5kIHJl ZGVmaW5lIGl0IHRvIGVtcHR5LgotICAgICAgICAjIyBXYXMgdGhlIENfU1dJVENIX1hfU0lU RSBwYXJ0IHJlYWxseSBuZWNlc3Nhcnk/Ci0jIyAgICAgIExJQl9HQ0M9YCRDQyAkQ19TV0lU Q0hfWF9TSVRFIC1wcmludC1saWJnY2MtZmlsZS1uYW1lYAotICAgICAgICBMSUJfR0NDPQot CTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotCi0gICAgIyMgQXNrIEdDQyB3aGVyZSB0byBm aW5kIGxpYmdjYy5hLgotICAgICopIExJQl9HQ0M9YCRDQyAtcHJpbnQtbGliZ2NjLWZpbGUt bmFtZSAyPiAvZGV2L251bGxgIDs7Ci0gIGVzYWMKLWZpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG5sIGlmICRHQ0MKLUFDX1NVQlNUKExJQl9HQ0MpCi0KICMjIENvbW1vbiBm b3IgYWxsIHdpbmRvdyBzeXN0ZW1zCiBpZiB0ZXN0ICIkd2luZG93X3N5c3RlbSIgIT0gIm5v bmUiOyB0aGVuCiAgIEFDX0RFRklORShIQVZFX1dJTkRPV19TWVNURU0sIDEsIFtEZWZpbmUg aWYgeW91IGhhdmUgYSB3aW5kb3cgc3lzdGVtLl0pCgo9PT0gbW9kaWZpZWQgZmlsZSAnZXRj L0NoYW5nZUxvZycKLS0tIGV0Yy9DaGFuZ2VMb2cJMjAxMy0wMi0xOSAxNDo0NDowMyArMDAw MAorKysgZXRjL0NoYW5nZUxvZwkyMDEzLTAyLTIyIDA4OjIxOjU1ICswMDAwCkBAIC0xLDMg KzEsMTAgQEAKKzIwMTMtMDItMjIgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgorCisJU2ltcGxpZnkgZGF0YV9zdGFydCBjb25maWd1cmF0aW9uIChCdWcjMTM3ODMpLgor CSogUFJPQkxFTVMgKExJQlNfU1lTVEVNLCBMSUJTX01BQ0hJTkUsIExJQlNfU1RBTkRBUkQp OiBSZW1vdmUuCisJUmVtb3ZlIGxlZ2FjeS1zeXN0ZW1zIHNlY3Rpb24sIGFzIHRoaXMgc3R1 ZmYgaXMgbm8gbG9uZ2VyCisJYXBwbGljYWJsZSB3aXRoIGN1cnJlbnQgbGlua2luZyBzdHJh dGVnaWVzLgorCiAyMDEzLTAyLTE0ICBNaWNoYWVsIEFsYmludXMgIDxtaWNoYWVsLmFsYmlu dXNAZ214LmRlPgogCiAJKiBORVdTOiBUcmFtcCBtZXRob2RzICJzY3BjIiBhbmQgInJzeW5j YyIgYXJlIGRpc2NvbnRpbnVlZC4KCj09PSBtb2RpZmllZCBmaWxlICdldGMvUFJPQkxFTVMn Ci0tLSBldGMvUFJPQkxFTVMJMjAxMy0wMi0xMSAwMDozNTozNyArMDAwMAorKysgZXRjL1BS T0JMRU1TCTIwMTMtMDItMjIgMDg6MTE6MDUgKzAwMDAKQEAgLTQzMiwyMSArNDMyLDcgQEAK IGluc3RhbGxlZCBpbiB0aGUgc2hhcmVkIGxpYnJhcnksIGFuZCB0aGVuIHJlbGluayBFbWFj cy4KIAogSWYgeW91IGhhdmUgYWxyZWFkeSBpbnN0YWxsZWQgdGhlIG5hbWUgcmVzb2x2ZXIg aW4gdGhlIGZpbGUgbGlicmVzb2x2LmEsCi10aGVuIHlvdSBuZWVkIHRvIGNvbXBpbGUgRW1h Y3MgdG8gdXNlIHRoYXQgbGlicmFyeS4gIFRoZSBlYXNpZXN0IHdheSB0bwotZG8gdGhpcyBp cyB0byBhZGQgdG8gY29uZmlnLmggYSBkZWZpbml0aW9uIG9mIExJQlNfU1lTVEVNLCBMSUJT X01BQ0hJTkUKLW9yIExJQl9TVEFOREFSRCB3aGljaCB1c2VzIC1scmVzb2x2LiAgV2F0Y2gg b3V0ISAgSWYgeW91IHJlZGVmaW5lIGEgbWFjcm8KLXRoYXQgaXMgYWxyZWFkeSBpbiB1c2Ug aW4geW91ciBjb25maWd1cmF0aW9uIHRvIHN1cHBseSBzb21lIG90aGVyIGxpYnJhcmllcywK LWJlIGNhcmVmdWwgbm90IHRvIGxvc2UgdGhlIG90aGVycy4KLQotVGh1cywgeW91IGNvdWxk IHN0YXJ0IGJ5IGFkZGluZyB0aGlzIHRvIGNvbmZpZy5oOgotCi0jZGVmaW5lIExJQlNfU1lT VEVNIC1scmVzb2x2Ci0KLVRoZW4gaWYgdGhpcyBnaXZlcyB5b3UgYW4gZXJyb3IgZm9yIHJl ZGVmaW5pbmcgYSBtYWNybywgYW5kIHlvdSBzZWUgdGhhdAotY29uZmlnLmggYWxyZWFkeSBk ZWZpbmVzIExJQlNfU1lTVEVNIGFzIC1sZm9vIC1sYmFyIGF0IHNvbWUgb3RoZXIgcG9pbnQK LShwb3NzaWJseSBpbiBhbiBpbmNsdWRlZCBmaWxlKSB5b3UgY291bGQgY2hhbmdlIGl0IHRv IHNheSB0aGlzOgotCi0jZGVmaW5lIExJQlNfU1lTVEVNIC1scmVzb2x2IC1sZm9vIC1sYmFy Cit0aGVuIHlvdSBuZWVkIHRvIGNvbXBpbGUgRW1hY3MgdG8gdXNlIHRoYXQgbGlicmFyeS4K IAogKioqIEVtYWNzIGRvZXMgbm90IGtub3cgeW91ciBob3N0J3MgZnVsbHktcXVhbGlmaWVk IGRvbWFpbiBuYW1lLgogCkBAIC0zMTc5LDI1ICszMTY1LDYgQEAKIAogVGhpcyBwcm9ibGVt IHNlZW1zIHRvIGJlIGEgbWF0dGVyIG9mIGNvbmZpZ3VyaW5nIHRoZSBERUNzZXJ2ZXIgdG8g dXNlCiA3IGJpdCBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIDggYml0IGNoYXJhY3RlcnMuCi0K LSogQnVpbGQgcHJvYmxlbXMgb24gbGVnYWN5IHN5c3RlbXMKLQotKiogU3VuT1M6IEVtYWNz IGdldHMgZXJyb3IgbWVzc2FnZSBmcm9tIGxpbmtlciBvbiBTdW4uCi0KLUlmIHRoZSBlcnJv ciBtZXNzYWdlIHNheXMgdGhhdCBhIHN5bWJvbCBzdWNoIGFzIGBmNjg4ODFfdXNlZCcgb3IK LWBmZnBhX3VzZWQnIG9yIGBzdGFydF9mbG9hdCcgaXMgdW5kZWZpbmVkLCB0aGlzIHByb2Jh Ymx5IGluZGljYXRlcwotdGhhdCB5b3UgaGF2ZSBjb21waWxlZCBzb21lIGxpYnJhcmllcywg c3VjaCBhcyB0aGUgWCBsaWJyYXJpZXMsCi13aXRoIGEgZmxvYXRpbmcgcG9pbnQgb3B0aW9u IG90aGVyIHRoYW4gdGhlIGRlZmF1bHQuCi0KLUl0J3Mgbm90IHRlcnJpYmx5IGhhcmQgdG8g bWFrZSB0aGlzIHdvcmsgd2l0aCBzbWFsbCBjaGFuZ2VzIGluCi1jcnQwLmMgdG9nZXRoZXIg d2l0aCBsaW5raW5nIHdpdGggRmNydDEubywgV2NydDEubyBvciBNY3J0MS5vLgotSG93ZXZl ciwgdGhlIGVhc2llc3QgYXBwcm9hY2ggaXMgdG8gYnVpbGQgWGxpYiB3aXRoIHRoZSBkZWZh dWx0Ci1mbG9hdGluZyBwb2ludCBvcHRpb246IC1mc29mdC4KLQotKiogSFBVWCAxMC4yMDog RW1hY3MgY3Jhc2hlcyBkdXJpbmcgZHVtcGluZyBvbiB0aGUgSFBQQSBtYWNoaW5lLgotCi1U aGlzIHNlZW1zIHRvIGJlIGR1ZSB0byBhIEdDQyBidWc7IGl0IGlzIGZpeGVkIGluIEdDQyAy LjguMS4KLQogDAogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgogCgo9PT0gbW9k aWZpZWQgZmlsZSAnc3JjL0NoYW5nZUxvZycKLS0tIHNyYy9DaGFuZ2VMb2cJMjAxMy0wMi0y MiAxOToyMzoxMiArMDAwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEzLTAyLTIyIDIwOjEwOjU0 ICswMDAwCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTMtMDItMjIgIFBhdWwgRWdnZXJ0ICA8ZWdn ZXJ0QGNzLnVjbGEuZWR1PgogCisJU2ltcGxpZnkgZGF0YV9zdGFydCBjb25maWd1cmF0aW9u IChCdWcjMTM3ODMpLgorCVRoaXMgaXMgYSBmb2xsb3dvbiBzaW1wbGlmaWNhdGlvbiB0byB0 aGUgZml4IGZvciBCdWcjMTM2NTAuCisJKiBNYWtlZmlsZS5pbiAoTERfRklSU1RGTEFHLCBM SUJfR0NDLCBDUlRfRElSLCBMSUJfU1RBTkRBUkQpCisJKFNUQVJUX0ZJTEVTKTogUmVtb3Zl LiAgQWxsIHVzZXMgcmVtb3ZlZC4KKwkob3RoZXJvYmopOiBSZW1vdmUgJChWTUxJTUlUX09C SiksIGFzIGl0J3Mgbm93IGZpcnN0LgorCShBTExPQkpTKTogTW92ZSBoZXJlIGZyb20gYXV0 b2RlcHMubWssIGFuZCB3aXRoIFZNTElNSVRTX09CSiBmaXJzdC4KKwkoYnVpbGRvYmouaCk6 IFVzZSBpdC4KKwkoJChBTExPQkpTKSk6IERlcGVuZCBvbiBnbG9iYWxzLmguCisJKHRlbWFj cyQoRVhFRVhUKSk6IFVzZSAkKEFMTE9CSlMpLgorCSogYXV0b2RlcHMubWsgKEFMTE9CSlMp OiBNb3ZlIHRvIE1ha2VmaWxlLmluLgorCSogZGVwcy5tayAodm0tbGltaXQubyk6CisJKiBt YWtlZmlsZS53MzItaW4gKCQoQkxEKS92bS1saW1pdC4kKE8pKToKKwlEbyBub3QgZGVwZW5k IG9uIG1lbS1saW1pdHMuaC4KKwkqIGVtYWNzLmMgKF9fZG9fZ2xvYmFsX2N0b3JzLCBfX2Rv X2dsb2JhbF9jdG9yc19hdXgpCisJKF9fZG9fZ2xvYmFsX2R0b3JzLCBfX0NUT1JfTElTVF9f LCBfX0RUT1JfTElTVF9fKQorCVtfX0dOVUNfXyAmJiAhT1JESU5BUllfTElOS106IFJlbW92 ZS4KKwkqIG1lbS1saW1pdHMuaCwgcHJlLWNydDAuYzogUmVtb3ZlLgorCSogdW5leGFpeC5j LCB1bmV4Y29mZi5jOiBEb24ndCBpbmNsdWRlIG1lbS1saW1pdHMuaC4KKwkqIHVuZXhjb2Zm LmMgKGV0ZXh0KTogTmV3IGRlY2wuCisJKG1ha2VfaGRyKTogVXNlIGl0IGluc3RlYWQgb2Yg c3RhcnRfb2ZfZGF0YS4KKwkqIHZtLWxpbWl0LmM6IE1vdmUgbW9zdCBvZiBtZW0tbGltaXRz LmgncyBjb250ZW50cyBoZXJlLgorCShkYXRhX3N0YXJ0KTogTmV3IGRlY2wuICBJdCdzIE9L IGlmIHRoaXMgaXMgYXBwcm94aW1hdGUsCisJc28gc2ltcGxpZnktYXdheSBzb21lIHVubmVj ZXNzYXJ5IGV4YWN0bmVzcy4KKwkoUE9JTlRFUik6IFJlbW92ZTsgYWxsIHVzZXMgcmVtb3Zl ZC4KKwkoZGF0YV9zcGFjZV9zdGFydCk6IE5vdyBjaGFyICosIHRvIGF2b2lkIGNhc3RzLgor CShleGNlZWRzX2xpc3BfcHRyKTogTmV3IGZ1bmN0aW9uLCByZXBsYWNpbmcgdGhlIG9sZAor CUVYQ0VFRFNfTElTUF9QVFIgbWFjcm8uICBBbGwgdXNlcyBjaGFuZ2VkLgorCShjaGVja19t ZW1vcnlfbGltaXRzKTogU2ltcGxpZnkgYW5kIHJlbW92ZSBjYXN0cy4KKwkoc3RhcnRfb2Zf ZGF0YSkgWyFDQU5OT1RfRFVNUCB8fCAhU1lTVEVNX01BTExPQ106IFJlbW92ZS4KKwkobWVt b3J5X3dhcm5pbmdzKTogVXNlIGRhdGFfc3RhcnQgaW5zdGVhZCBvZiBzdGFydF9vZl9kYXRh LgorCiAJQXNzdW1lIEM4OSBvciBiZXR0ZXIuCiAJKiByYWxsb2MuYyAoU0laRSwgUE9JTlRF UiwgTklMKToKIAkqIHZtLWxpbWl0LmMgKFBPSU5URVIpOgoKPT09IG1vZGlmaWVkIGZpbGUg J3NyYy9NYWtlZmlsZS5pbicKLS0tIHNyYy9NYWtlZmlsZS5pbgkyMDEzLTAxLTAyIDE2OjEz OjA0ICswMDAwCisrKyBzcmMvTWFrZWZpbGUuaW4JMjAxMy0wMi0yMiAyMDoxMDo1NCArMDAw MApAQCAtMzYsNyArMzYsNiBAQAogQ0ZMQUdTID0gQENGTEFHU0AKIENQUEZMQUdTID0gQENQ UEZMQUdTQAogTERGTEFHUyA9IEBMREZMQUdTQAotTERfRklSU1RGTEFHPUBMRF9GSVJTVEZM QUdACiBFWEVFWFQgPSBARVhFRVhUQAogdmVyc2lvbiA9IEB2ZXJzaW9uQAogIyBTdWJzdGl0 dXRlIGFuIGFzc2lnbm1lbnQgZm9yIHRoZSBNQUtFIHZhcmlhYmxlLCBiZWNhdXNlCkBAIC0x MDIsMTAgKzEwMSw4IEBACiAjIyBTeXN0ZW0tc3BlY2lmaWMgTERGTEFHUy4KIExEX1NXSVRD SF9TWVNURU09QExEX1NXSVRDSF9TWVNURU1ACiAKLSMjIFRoaXMgaG9sZHMgYW55IHNwZWNp YWwgb3B0aW9ucyBmb3IgbGlua2luZyB0ZW1hY3Mgb25seSAoaWUsIG5vdAotIyMgdXNlZCBi eSBjb25maWd1cmUpLiAgTm90IHVzZWQgZWxzZXdoZXJlIGJlY2F1c2UgaXQgc29tZXRpbWVz Ci0jIyBjb250YWlucyBvcHRpb25zIHRoYXQgaGF2ZSB0byBkbyB3aXRoIHVzaW5nIEVtYWNz J3MgY3J0MCwKLSMjIHdoaWNoIGFyZSBvbmx5IGdvb2Qgd2l0aCB0ZW1hY3MuCisjIyBUaGlz IGhvbGRzIGFueSBzcGVjaWFsIG9wdGlvbnMgZm9yIGxpbmtpbmcgdGVtYWNzIG9ubHkgKGku ZS4sIG5vdAorIyMgdXNlZCBieSBjb25maWd1cmUpLgogTERfU1dJVENIX1NZU1RFTV9URU1B Q1M9QExEX1NXSVRDSF9TWVNURU1fVEVNQUNTQAogCiAjIyBGbGFncyB0byBwYXNzIHRvIGxk IG9ubHkgZm9yIHRlbWFjcy4KQEAgLTEyMCwxNCArMTE3LDYgQEAKICMjIFNvbWUgc3lzdGVt cyBkZWZpbmUgdGhpcyB0byByZXF1ZXN0IHNwZWNpYWwgbGlicmFyaWVzLgogTElCU19TWVNU RU09QExJQlNfU1lTVEVNQAogCi0jIyBXaGVyZSB0byBmaW5kIGxpYmdjYy5hLCBpZiB1c2lu ZyBnY2MgYW5kIG5lY2Vzc2FyeS4KLUxJQl9HQ0M9QExJQl9HQ0NACi0KLUNSVF9ESVI9QENS VF9ESVJACi0jIyBNYXkgdXNlICRDUlRfRElSLgotTElCX1NUQU5EQVJEPUBMSUJfU1RBTkRB UkRACi1TVEFSVF9GSUxFUyA9IEBTVEFSVF9GSUxFU0AKLQogIyMgLWxtLCBvciBlbXB0eS4K IExJQl9NQVRIPUBMSUJfTUFUSEAKIApAQCAtMzg5LDE3ICszNzgsMTYgQEAKIAogIyMgTGlz dCBvZiBvYmplY3QgZmlsZXMgdGhhdCBtYWtlLWRvY2ZpbGUgc2hvdWxkIG5vdCBiZSB0b2xk IGFib3V0Lgogb3RoZXJvYmo9ICQoVEVSTUNBUF9PQkopICQoUFJFX0FMTE9DX09CSikgJChH TUFMTE9DX09CSikgJChSQUxMT0NfT0JKKSBcCi0gICQoUE9TVF9BTExPQ19PQkopICQoVk1M SU1JVF9PQkopICQoV0lER0VUX09CSikgJChMSUJPQkpTKQorICAkKFBPU1RfQUxMT0NfT0JK KSAkKFdJREdFVF9PQkopICQoTElCT0JKUykKIAorIyMgQWxsIG9iamVjdCBmaWxlcyBsaW5r ZWQgaW50byB0ZW1hY3MuICAkKFZNTElNSVRfT0JKKSBzaG91bGQgYmUgZmlyc3QuCitBTExP QkpTID0gJChWTUxJTUlUX09CSikgJChvYmopICQob3RoZXJvYmopCiAKICMjIENvbmZpZ3Vy ZSBpbnNlcnRzIHRoZSBmaWxlIGxpc3AubWsgYXQgdGhpcyBwb2ludCwgZGVmaW5pbmcgJGxp c3AuCiBAbGlzcF9mcmFnQAogCiAKICMjIENvbnN0cnVjdCBmdWxsIHNldCBvZiBsaWJyYXJp ZXMgdG8gYmUgbGlua2VkLgotIyMgTm90ZSB0aGF0IFN1bk9TIG5lZWRzIC1sbSB0byBjb21l IGJlZm9yZSAtbGM7IG90aGVyd2lzZSwgeW91IGdldAotIyMgZHVwbGljYXRlZCBzeW1ib2xz LiAgSWYgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyB3ZXJlIGNvbXBpbGVkCi0jIyB3aXRoIEdD Qywgd2UgbWlnaHQgbmVlZCBMSUJfR0NDIGFnYWluIGFmdGVyIHRoZW0uCiBMSUJFUyA9ICQo TElCUykgJChXMzJfTElCUykgJChMSUJTX0dOVVNURVApICQoTElCWF9CQVNFKSAkKExJQklN QUdFKSBcCiAgICAkKExJQlhfT1RIRVIpICQoTElCU09VTkQpIFwKICAgICQoUlNWR19MSUJT KSAkKElNQUdFTUFHSUNLX0xJQlMpICQoTElCX0NMT0NLX0dFVFRJTUUpIFwKQEAgLTQwOSw3 ICszOTcsNyBAQAogICAgJChMSUJTX1RFUk1DQVApICQoR0VUTE9BREFWR19MSUJTKSAkKFNF VFRJTkdTX0xJQlMpICQoTElCU0VMSU5VWF9MSUJTKSBcCiAgICAkKEZSRUVUWVBFX0xJQlMp ICQoRk9OVENPTkZJR19MSUJTKSAkKExJQk9URl9MSUJTKSAkKE0xN05fRkxUX0xJQlMpIFwK ICAgICQoTElCQUNMX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCX1BUSFJFQUQpICQo TElCX1BUSFJFQURfU0lHTUFTSykgXAotICAgJChMSUJfR0NDKSAkKExJQl9NQVRIKSAkKExJ Ql9TVEFOREFSRCkgJChMSUJfR0NDKQorICAgJChMSUJfTUFUSCkKIAogYWxsOiBlbWFjcyQo RVhFRVhUKSAkKE9USEVSX0ZJTEVTKQogLlBIT05ZOiBhbGwKQEAgLTQ1Niw3ICs0NDQsNyBA QAogCWNkICQobGlic3JjKTsgJChNQUtFKSAkKE1GTEFHUykgbWFrZS1kb2NmaWxlJChFWEVF WFQpCiAKIGJ1aWxkb2JqLmg6IE1ha2VmaWxlCi0JZWNobyAiI2RlZmluZSBCVUlMRE9CSiBc IiQob2JqKSAkKG90aGVyb2JqKSAiICJcIiIgPiBidWlsZG9iai5oCisJZWNobyAiI2RlZmlu ZSBCVUlMRE9CSiBcIiQoQUxMT0JKUykgIiAiXCIiID4kQAogCiBnbG9iYWxzLmg6IGdsLXN0 YW1wOyBAdHJ1ZQogCkBAIC00NjgsMTUgKzQ1NiwxNSBAQAogCSQoc3JjZGlyKS8uLi9idWls ZC1hdXgvbW92ZS1pZi1jaGFuZ2UgZ2wtdG1wIGdsb2JhbHMuaAogCWVjaG8gdGltZXN0YW1w ID4gJEAKIAotJChvYmopICQob3RoZXJvYmopOiBnbG9iYWxzLmgKKyQoQUxMT0JKUyk6IGds b2JhbHMuaAogCiAkKGxpYikvbGliZ251LmE6ICQoY29uZmlnX2gpCiAJY2QgJChsaWIpICYm ICQoTUFLRSkgbGliZ251LmEKIAotdGVtYWNzJChFWEVFWFQpOiAkKFNUQVJUX0ZJTEVTKSBz dGFtcC1vbGR4bWVudSAkKG9iaikgJChvdGhlcm9iaikgXAordGVtYWNzJChFWEVFWFQpOiBz dGFtcC1vbGR4bWVudSAkKEFMTE9CSlMpIFwKIAkgICAgICAgICAkKGxpYikvbGliZ251LmEg JChXMzJfUkVTKQotCSQoQ0MpICQoTERfRklSU1RGTEFHKSAkKEFMTF9DRkxBR1MpICQoVEVN QUNTX0xERkxBR1MpICQoTERGTEFHUykgXAotCSAgLW8gdGVtYWNzICQoU1RBUlRfRklMRVMp ICQob2JqKSAkKG90aGVyb2JqKSAkKGxpYikvbGliZ251LmEgJChMSUJFUykgXAorCSQoQ0Mp ICQoQUxMX0NGTEFHUykgJChURU1BQ1NfTERGTEFHUykgJChMREZMQUdTKSBcCisJICAtbyB0 ZW1hY3MgJChBTExPQkpTKSAkKGxpYikvbGliZ251LmEgJChMSUJFUykgXAogCSAgJChXMzJf UkVTX0xJTkspCiAJdGVzdCAiJChDQU5OT1RfRFVNUCkiID0gInllcyIgfHwgXAogCSAgdGVz dCAiWCQoUEFYQ1RMKSIgPSBYIHx8ICQoUEFYQ1RMKSAtciB0ZW1hY3MkKEVYRUVYVCkKCj09 PSBtb2RpZmllZCBmaWxlICdzcmMvYXV0b2RlcHMubWsnCi0tLSBzcmMvYXV0b2RlcHMubWsJ MjAxMC0wNy0wOCAwMzozMTowNCArMDAwMAorKysgc3JjL2F1dG9kZXBzLm1rCTIwMTMtMDIt MjIgMjA6MTA6NTQgKzAwMDAKQEAgLTIsNSArMiw0IEBACiAKICMjIFRoaXMgaXMgaW5zZXJ0 ZWQgaW4gc3JjL01ha2VmaWxlIGlmIEFVVE9fREVQRU5EPXllcy4KIAotQUxMT0JKUz0kKFNU QVJUX0ZJTEVTKSAke29ian0gJHtvdGhlcm9ian0KIC1pbmNsdWRlICQoQUxMT0JKUzolLm89 JHtERVBESVJ9LyUuZCkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZGVwcy5taycKLS0tIHNy Yy9kZXBzLm1rCTIwMTMtMDEtMDIgMTY6MTM6MDQgKzAwMDAKKysrIHNyYy9kZXBzLm1rCTIw MTMtMDItMjIgMDg6MTE6MDUgKzAwMDAKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAgZGlzcGV4 dGVybi5oIGxpc3AuaCBnbG9iYWxzLmggJChjb25maWdfaCkgc3lzdGltZS5oIGNvZGluZy5o IGNvbXBvc2l0ZS5oCiBnbWFsbG9jLm86IGdtYWxsb2MuYyAkKGNvbmZpZ19oKQogcmFsbG9j Lm86IHJhbGxvYy5jIGxpc3AuaCAkKGNvbmZpZ19oKQotdm0tbGltaXQubzogdm0tbGltaXQu YyBtZW0tbGltaXRzLmggbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKQordm0tbGltaXQu bzogdm0tbGltaXQuYyBsaXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gpCiBtYXJrZXIubzog bWFya2VyLmMgYnVmZmVyLmggY2hhcmFjdGVyLmggbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZp Z19oKQogbWluaWJ1Zi5vOiBtaW5pYnVmLmMgc3ludGF4LmggZnJhbWUuaCB3aW5kb3cuaCBr ZXlib2FyZC5oIHN5c3RpbWUuaCBcCiAgICBidWZmZXIuaCBjb21tYW5kcy5oIGNoYXJhY3Rl ci5oIG1zZG9zLmggJChJTlRFUlZBTFNfSCkga2V5bWFwLmggXAoKPT09IG1vZGlmaWVkIGZp bGUgJ3NyYy9lbWFjcy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxMy0wMi0wNyAwNjoyMzo1NCAr MDAwMAorKysgc3JjL2VtYWNzLmMJMjAxMy0wMi0yMiAwODoxMTowNSArMDAwMApAQCAtNTIx LDMyICs1MjEsNiBAQAogc3RhdGljIGNoYXIgY29uc3QgZHVtcF90eltdID0gIlV0QzAiOwog I2VuZGlmCiAKLSNpZm5kZWYgT1JESU5BUllfTElOSwotLyogV2UgZG9uJ3QgaW5jbHVkZSBj cnRiZWdpbi5vIGFuZCBjcnRlbmQubyBpbiB0aGUgbGluaywKLSAgIHNvIHRoZXNlIGZ1bmN0 aW9ucyBhbmQgdmFyaWFibGVzIG1pZ2h0IGJlIG1pc3NlZC4KLSAgIFByb3ZpZGUgZHVtbXkg ZGVmaW5pdGlvbnMgdG8gYXZvaWQgZXJyb3IuCi0gICAoV2UgZG9uJ3QgaGF2ZSBhbnkgcmVh bCBjb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuKSAgKi8KLSNpZmRlZiBfX0dOVUNfXwot Ci0vKiBEZWZpbmUgYSBkdW1teSBmdW5jdGlvbiBGLiAgRGVjbGFyZSBGIHRvbywgdG8gcGFj aWZ5IGdjYwotICAgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotI2RlZmluZSBERUZJTkVf RFVNTVlfRlVOQ1RJT04oZikgXAotICB2b2lkIGYgKHZvaWQpIEFUVFJJQlVURV9DT05TVCBF WFRFUk5BTExZX1ZJU0lCTEU7IHZvaWQgZiAodm9pZCkge30KLQotI2lmbmRlZiBHQ0NfQ1RP UlNfSU5fTElCQwotREVGSU5FX0RVTU1ZX0ZVTkNUSU9OIChfX2RvX2dsb2JhbF9jdG9ycykK LURFRklORV9EVU1NWV9GVU5DVElPTiAoX19kb19nbG9iYWxfY3RvcnNfYXV4KQotREVGSU5F X0RVTU1ZX0ZVTkNUSU9OIChfX2RvX2dsb2JhbF9kdG9ycykKLS8qIEdOVS9MaW51eCBoYXMg YSBidWcgaW4gaXRzIGxpYnJhcnk7IGF2b2lkIGFuIGVycm9yLiAgKi8KLSNpZm5kZWYgR05V X0xJTlVYCi1jaGFyICogX19DVE9SX0xJU1RfX1syXSBFWFRFUk5BTExZX1ZJU0lCTEUgPSB7 IChjaGFyICopICgtMSksIDAgfTsKLSNlbmRpZgotY2hhciAqIF9fRFRPUl9MSVNUX19bMl0g RVhURVJOQUxMWV9WSVNJQkxFID0geyAoY2hhciAqKSAoLTEpLCAwIH07Ci0jZW5kaWYgLyog R0NDX0NUT1JTX0lOX0xJQkMgKi8KLURFRklORV9EVU1NWV9GVU5DVElPTiAoX19tYWluKQot I2VuZGlmIC8qIF9fR05VQ19fICovCi0jZW5kaWYgLyogT1JESU5BUllfTElOSyAqLwotCiAv KiBUZXN0IHdoZXRoZXIgdGhlIG5leHQgYXJndW1lbnQgaW4gQVJHViBtYXRjaGVzIFNTVFIg b3IgYSBwcmVmaXggb2YKICAgIExTVFIgKGF0IGxlYXN0IE1JTkxFTiBjaGFyYWN0ZXJzKS4g IElmIHNvLCB0aGVuIGlmIFZBTFBUUiBpcyBub24tbnVsbAogICAgKHRoZSBhcmd1bWVudCBp cyBzdXBwb3NlZCB0byBoYXZlIGEgdmFsdWUpIHN0b3JlIGluICpWQUxQVFIgZWl0aGVyCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL21ha2VmaWxlLnczMi1pbicKLS0tIHNyYy9tYWtlZmls ZS53MzItaW4JMjAxMy0wMi0xMyAwMDo1MDozOCArMDAwMAorKysgc3JjL21ha2VmaWxlLncz Mi1pbgkyMDEzLTAyLTIyIDA4OjExOjA1ICswMDAwCkBAIC0xNDkyLDcgKzE0OTIsNiBAQAog CiAkKEJMRCkvdm0tbGltaXQuJChPKSA6IFwKIAkkKFNSQykvdm0tbGltaXQuYyBcCi0JJChT UkMpL21lbS1saW1pdHMuaCBcCiAJJChTUkMpL3czMmhlYXAuaCBcCiAJJChOVF9JTkMpL3Vu aXN0ZC5oIFwKIAkkKENPTkZJR19IKSBcCgo9PT0gcmVtb3ZlZCBmaWxlICdzcmMvbWVtLWxp bWl0cy5oJwotLS0gc3JjL21lbS1saW1pdHMuaAkyMDEzLTAxLTAxIDA5OjExOjA1ICswMDAw CisrKyBzcmMvbWVtLWxpbWl0cy5oCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKQEAgLTEs NDMgKzAsMCBAQAotLyogSW5jbHVkZXMgZm9yIG1lbW9yeSBsaW1pdCB3YXJuaW5ncy4KLSAg IENvcHlyaWdodCAoQykgMTk5MCwgMTk5My0xOTk2LCAyMDAxLTIwMTMgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLAotICAgSW5jLgotCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1h Y3MuCi0KLUdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLShhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLUdOVSBFbWFjcyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLU1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0K LVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi1hbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0KLSNpZmRlZiBNU0RPUwotI2luY2x1 ZGUgPGRwbWkuaD4KLWV4dGVybiBpbnQgZXRleHQ7Ci0jZW5kaWYKLQotLyogU29tZSBzeXN0 ZW1zIG5lZWQgdGhpcyBiZWZvcmUgPHN5cy9yZXNvdXJjZS5oPi4gICovCi0jaW5jbHVkZSA8 c3lzL3R5cGVzLmg+Ci0KLSNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICi0jIGluY2x1ZGUg PHN5cy90aW1lLmg+Ci0jIGluY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotI2Vsc2UKLSMgaWYg SEFWRV9TWVNfVkxJTUlUX0gKLSMgIGluY2x1ZGUgPHN5cy92bGltaXQuaD4JLyogT2Jzb2xl dGUsIHNheXMgZ2xpYmMgKi8KLSMgZW5kaWYKLSNlbmRpZgotCi1leHRlcm4gY2hhciAqc3Rh cnRfb2ZfZGF0YSAodm9pZCkgQVRUUklCVVRFX0NPTlNUOwotI2lmIFVTRV9MU0JfVEFHIHx8 IFVJTlRQVFJfTUFYIDw9IFZBTF9NQVgKLSNkZWZpbmUgRVhDRUVEU19MSVNQX1BUUihwdHIp IDAKLSNlbHNlCi0jZGVmaW5lIEVYQ0VFRFNfTElTUF9QVFIocHRyKSBcCi0gICgoKHVpbnRw dHJfdCkgKHB0cikgJiB+REFUQV9TRUdfQklUUykgPj4gVkFMQklUUykKLSNlbmRpZgoKPT09 IHJlbW92ZWQgZmlsZSAnc3JjL3ByZS1jcnQwLmMnCi0tLSBzcmMvcHJlLWNydDAuYwkyMDEz LTAyLTEyIDE4OjMzOjQyICswMDAwCisrKyBzcmMvcHJlLWNydDAuYwkxOTcwLTAxLTAxIDAw OjAwOjAwICswMDAwCkBAIC0xLDEwICswLDAgQEAKLS8qIFRoaXMgZmlsZSBpcyBsb2FkZWQg YmVmb3JlIGNydDAubyBvbiBtYWNoaW5lcyB3aGVyZSB3ZSBkbyBub3QKLSAgIHJlbWFwIHBh cnQgb2YgdGhlIGRhdGEgc3BhY2UgaW50byB0ZXh0IHNwYWNlIGluIHVuZXhlYy4KLSAgIE9u IHRoZXNlIG1hY2hpbmVzLCB0aGVyZSBpcyBubyBwcm9ibGVtIHdpdGggc3RhbmRhcmQgY3J0 MC5vJ3MKLSAgIHRoYXQgbWFrZSBlbnZpcm9uIGFuIGluaXRpYWxpemVkIHZhcmlhYmxlLiAg SG93ZXZlciwgd2UgZG8KLSAgIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBsYWJlbCBkYXRhX3N0 YXJ0IGV4aXN0cyBhbnl3YXkuICAqLwotCi0vKiBDcmVhdGUgYSBsYWJlbCB0byBhcHBlYXIg YXQgdGhlIGJlZ2lubmluZyBvZiBkYXRhIHNwYWNlLgotICAgSXRzIHZhbHVlIGlzIG5vbnpl cm8gc28gdGhhdCBpdCBjYW5ub3QgYmUgcHV0IGludG8gYnNzLiAgKi8KLQotaW50IGRhdGFf c3RhcnQgPSAxOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy91bmV4YWl4LmMnCi0tLSBzcmMv dW5leGFpeC5jCTIwMTMtMDItMTUgMDY6MzU6NTQgKzAwMDAKKysrIHNyYy91bmV4YWl4LmMJ MjAxMy0wMi0yMiAwODoxMTowNSArMDAwMApAQCAtNTksOCArNTksNiBAQAogI2luY2x1ZGUg PHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CiAKLSNpbmNsdWRlICJtZW0tbGltaXRz LmgiCi0KIGV4dGVybiBjaGFyIF9kYXRhW107CiBleHRlcm4gY2hhciBfdGV4dFtdOwogCgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3VuZXhjb2ZmLmMnCi0tLSBzcmMvdW5leGNvZmYuYwky MDEzLTAxLTAyIDE2OjEzOjA0ICswMDAwCisrKyBzcmMvdW5leGNvZmYuYwkyMDEzLTAyLTIy IDE5OjQzOjE3ICswMDAwCkBAIC05OSw3ICs5OSw3IEBACiAKICNpbmNsdWRlIDxzeXMvZmls ZS5oPgogCi0jaW5jbHVkZSAibWVtLWxpbWl0cy5oIgorZXh0ZXJuIGludCBldGV4dFtdOwog CiBzdGF0aWMgbG9uZyBibG9ja19jb3B5X3N0YXJ0OwkJLyogT2xkIGV4ZWN1dGFibGUgc3Rh cnQgcG9pbnQgKi8KIHN0YXRpYyBzdHJ1Y3QgZmlsZWhkciBmX2hkcjsJCS8qIEZpbGUgaGVh ZGVyICovCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgcGFnZW1hc2sgPSBnZXRwYWdlc2l6ZSAo KSAtIDE7CiAKICAgLyogQWRqdXN0IHRleHQvZGF0YSBib3VuZGFyeS4gKi8KLSAgZGF0YV9z dGFydCA9IChpbnQpIHN0YXJ0X29mX2RhdGEgKCk7CisgIGRhdGFfc3RhcnQgPSAoaW50KSAo ZXRleHQgKyAxKTsKICAgZGF0YV9zdGFydCA9IEFERFJfQ09SUkVDVCAoZGF0YV9zdGFydCk7 CiAgIGRhdGFfc3RhcnQgPSBkYXRhX3N0YXJ0ICYgfnBhZ2VtYXNrOyAvKiAoRG93bikgdG8g cGFnZSBib3VuZGFyeS4gKi8KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy92bS1saW1pdC5j JwotLS0gc3JjL3ZtLWxpbWl0LmMJMjAxMy0wMi0yMiAxOToyMzoxMiArMDAwMAorKysgc3Jj L3ZtLWxpbWl0LmMJMjAxMy0wMi0yMyAwMToyODo1MCArMDAwMApAQCAtMTksNyArMTksMzcg QEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4gLyogZm9yICdl bnZpcm9uJywgb24gQUlYICovCiAjaW5jbHVkZSAibGlzcC5oIgotI2luY2x1ZGUgIm1lbS1s aW1pdHMuaCIKKworI2lmZGVmIE1TRE9TCisjaW5jbHVkZSA8ZHBtaS5oPgorZXh0ZXJuIGlu dCBldGV4dDsKKyNlbmRpZgorCisvKiBTb21lIHN5c3RlbXMgbmVlZCB0aGlzIGJlZm9yZSA8 c3lzL3Jlc291cmNlLmg+LiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmZGVm IEhBVkVfU1lTX1JFU09VUkNFX0gKKyMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgaW5jbHVk ZSA8c3lzL3Jlc291cmNlLmg+CisjZWxzZQorIyBpZiBIQVZFX1NZU19WTElNSVRfSAorIyAg aW5jbHVkZSA8c3lzL3ZsaW1pdC5oPgkvKiBPYnNvbGV0ZSwgc2F5cyBnbGliYyAqLworIyBl bmRpZgorI2VuZGlmCisKKy8qIFN0YXJ0IG9mIGRhdGEuICBJdCBpcyBPSyBpZiB0aGlzIGlz IGFwcHJveGltYXRlOyBpdCdzIHVzZWQgb25seSBhcworICAgYSBoZXVyaXN0aWMuICAqLwor I2lmZGVmIERBVEFfU1RBUlQKKyMgZGVmaW5lIGRhdGFfc3RhcnQgKChjaGFyICopIERBVEFf U1RBUlQpCisjZWxzZQorZXh0ZXJuIGNoYXIgZGF0YV9zdGFydFtdOworIyBpZm5kZWYgSEFW RV9EQVRBX1NUQVJUCisvKiBJbml0aWFsaXplIHRvIG5vbnplcm8sIHNvIHRoYXQgaXQncyBw dXQgaW50byBkYXRhIGFuZCBub3QgYnNzLgorICAgTGluayB0aGlzIGZpbGUncyBvYmplY3Qg Y29kZSBmaXJzdCwgc28gdGhhdCB0aGlzIHN5bWJvbCBpcyBuZWFyIHRoZQorICAgc3RhcnQg b2YgZGF0YS4gICovCitjaGFyIGRhdGFfc3RhcnRbMV0gPSB7IDEgfTsKKyMgZW5kaWYKKyNl bmRpZgogCiAvKgogICBMZXZlbCBudW1iZXIgb2Ygd2FybmluZ3MgYWxyZWFkeSBpc3N1ZWQu CkBAIC0zNSwxMiArNjUsMjAgQEAKICAgIDAgbWVhbnMgZG9uJ3QgaXNzdWUgdGhlbS4gICov CiBzdGF0aWMgdm9pZCAoKndhcm5fZnVuY3Rpb24pIChjb25zdCBjaGFyICopOwogCi0vKiBT dGFydCBvZiBkYXRhIHNwYWNlOyBjYW4gYmUgY2hhbmdlZCBieSBjYWxsaW5nIG1hbGxvY19p bml0LiAgKi8KLXN0YXRpYyB2b2lkICpkYXRhX3NwYWNlX3N0YXJ0OworLyogU3RhcnQgb2Yg ZGF0YSBzcGFjZTsgY2FuIGJlIGNoYW5nZWQgYnkgY2FsbGluZyBtZW1vcnlfd2FybmluZ3Mu ICAqLworc3RhdGljIGNoYXIgKmRhdGFfc3BhY2Vfc3RhcnQ7CiAKIC8qIE51bWJlciBvZiBi eXRlcyBvZiB3cml0YWJsZSBtZW1vcnkgd2UgY2FuIGV4cGVjdCB0byBiZSBhYmxlIHRvIGdl dC4gICovCiBzdGF0aWMgc2l6ZV90IGxpbV9kYXRhOwogDAorLyogUmV0dXJuIHRydWUgaWYg UFRSIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhcyBhbiBFbWFjcyBMaXNwIG9iamVjdC4gICov CitzdGF0aWMgYm9vbAorZXhjZWVkc19saXNwX3B0ciAodm9pZCAqcHRyKQoreworICByZXR1 cm4gKCEgVVNFX0xTQl9UQUcKKwkgICYmIFZBTF9NQVggPCBVSU5UUFRSX01BWAorCSAgJiYg KCh1aW50cHRyX3QpIHB0ciAmIH5EQVRBX1NFR19CSVRTKSA+PiBWQUxCSVRTICE9IDApOwor fQogCiAjaWZkZWYgSEFWRV9HRVRSTElNSVQKIApAQCAtMTIyLDEwICsxNjAsMTIgQEAKIHsK ICNpZmRlZiBSRUxfQUxMT0MKICAgZXh0ZXJuIHZvaWQgKigqcmVhbF9tb3JlY29yZSkgKHB0 cmRpZmZfdCk7CisjZWxzZQorICB2b2lkICooKnJlYWxfbW9yZWNvcmUpIChwdHJkaWZmX3Qp ID0gMDsKICNlbmRpZgogICBleHRlcm4gdm9pZCAqKCpfX21vcmVjb3JlKSAocHRyZGlmZl90 KTsKIAotICB2b2lkICpjcDsKKyAgY2hhciAqY3A7CiAgIHNpemVfdCBmaXZlX3BlcmNlbnQ7 CiAgIHNpemVfdCBkYXRhX3NpemU7CiAgIGVudW0gd2FybmxldmVsIG5ld193YXJubGV2ZWw7 CkBAIC0xMzUsMTMgKzE3NSw4IEBACiAgIGZpdmVfcGVyY2VudCA9IGxpbV9kYXRhIC8gMjA7 CiAKICAgLyogRmluZCBjdXJyZW50IGVuZCBvZiBtZW1vcnkgYW5kIGlzc3VlIHdhcm5pbmcg aWYgZ2V0dGluZyBuZWFyIG1heCAqLwotI2lmZGVmIFJFTF9BTExPQwotICBpZiAocmVhbF9t b3JlY29yZSkKLSAgICBjcCA9IChjaGFyICopICgqcmVhbF9tb3JlY29yZSkgKDApOwotICBl bHNlCi0jZW5kaWYKLSAgY3AgPSAoY2hhciAqKSAoKl9fbW9yZWNvcmUpICgwKTsKLSAgZGF0 YV9zaXplID0gKGNoYXIgKikgY3AgLSAoY2hhciAqKSBkYXRhX3NwYWNlX3N0YXJ0OworICBj cCA9IChyZWFsX21vcmVjb3JlID8gcmVhbF9tb3JlY29yZSA6IF9fbW9yZWNvcmUpICgwKTsK KyAgZGF0YV9zaXplID0gY3AgLSBkYXRhX3NwYWNlX3N0YXJ0OwogCiAgIGlmICghd2Fybl9m dW5jdGlvbikKICAgICByZXR1cm47CkBAIC0xODgsNDkgKzIyMywxMCBAQAogCXdhcm5sZXZl bCA9IHdhcm5lZF84NTsKICAgICB9CiAKLSAgaWYgKEVYQ0VFRFNfTElTUF9QVFIgKGNwKSkK KyAgaWYgKGV4Y2VlZHNfbGlzcF9wdHIgKGNwKSkKICAgICAoKndhcm5fZnVuY3Rpb24pICgi V2FybmluZzogbWVtb3J5IGluIHVzZSBleGNlZWRzIGxpc3AgcG9pbnRlciBzaXplIik7CiB9 CiAMCi0jaWYgIWRlZmluZWQgKENBTk5PVF9EVU1QKSB8fCAhZGVmaW5lZCAoU1lTVEVNX01B TExPQykKLS8qIFNvbWUgc3lzdGVtcyB0aGF0IGNhbm5vdCBkdW1wIGFsc28gY2Fubm90IGlt cGxlbWVudCB0aGVzZS4gICovCi0KLS8qCi0gKglSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhl IHN0YXJ0IG9mIHRoZSBkYXRhIHNlZ21lbnQgcHJpb3IgdG8KLSAqCWRvaW5nIGFuIHVuZXhl Yy4gIEFmdGVyIHVuZXhlYyB0aGUgcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZC4KLSAqCVNl ZSBjcnQwLmMgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gYW5kIGRlZmluaXRpb24gb2YgZGF0 YV9zdGFydC4KLSAqCi0gKglBcHBhcmVudGx5LCBvbiBCU0Qgc3lzdGVtcyB0aGlzIGlzIGV0 ZXh0IGF0IHN0YXJ0dXAuICBPbgotICoJVVNHIHN5c3RlbXMgKHN3YXBwaW5nKSB0aGlzIGlz IGhpZ2hseSBtbXUgZGVwZW5kZW50IGFuZAotICoJaXMgYWxzbyBkZXBlbmRlbnQgb24gd2hl dGhlciBvciBub3QgdGhlIHByb2dyYW0gaXMgcnVubmluZwotICoJd2l0aCBzaGFyZWQgdGV4 dC4gIEdlbmVyYWxseSB0aGVyZSBpcyBhIChwb3NzaWJseSBsYXJnZSkKLSAqCWdhcCBiZXR3 ZWVuIGVuZCBvZiB0ZXh0IGFuZCBzdGFydCBvZiBkYXRhIHdpdGggc2hhcmVkIHRleHQuCi0g KgotICovCi0KLWNoYXIgKgotc3RhcnRfb2ZfZGF0YSAodm9pZCkKLXsKLSNpZmRlZiBCU0Rf U1lTVEVNCi0gIGV4dGVybiBjaGFyIGV0ZXh0OwotICByZXR1cm4gKHZvaWQgKikgJmV0ZXh0 OwotI2VsaWYgZGVmaW5lZCBEQVRBX1NUQVJUCi0gIHJldHVybiAodm9pZCAqKSBEQVRBX1NU QVJUOwotI2VsaWYgZGVmaW5lZCBPUkRJTkFSWV9MSU5LCi0gIC8qCi0gICAqIFRoaXMgaXMg YSBoYWNrLiAgU2luY2Ugd2UncmUgbm90IGxpbmtpbmcgY3J0MC5jIG9yIHByZV9jcnQwLmMs Ci0gICAqIGRhdGFfc3RhcnQgaXNuJ3QgZGVmaW5lZC4gIFdlIHRha2UgdGhlIGFkZHJlc3Mg b2YgZW52aXJvbiwgd2hpY2gKLSAgICogaXMga25vd24gdG8gbGl2ZSBhdCBvciBuZWFyIHRo ZSBzdGFydCBvZiB0aGUgc3lzdGVtIGNydDAuYywgYW5kCi0gICAqIHdlIGRvbid0IHN3ZWF0 IHRoZSBoYW5kZnVsIG9mIGJ5dGVzIHRoYXQgbWlnaHQgbG9zZS4KLSAgICovCi0gIHJldHVy biAodm9pZCAqKSAmZW52aXJvbjsKLSNlbHNlCi0gIGV4dGVybiBpbnQgZGF0YV9zdGFydDsK LSAgcmV0dXJuICh2b2lkICopICZkYXRhX3N0YXJ0OwotI2VuZGlmCi19Ci0jZW5kaWYgLyog KG5vdCBDQU5OT1RfRFVNUCBvciBub3QgU1lTVEVNX01BTExPQykgKi8KLQwKIC8qIEVuYWJs ZSBtZW1vcnkgdXNhZ2Ugd2FybmluZ3MuCiAgICBTVEFSVCBzYXlzIHdoZXJlIHRoZSBlbmQg b2YgcHVyZSBzdG9yYWdlIGlzLgogICAgV0FSTkZVTiBzcGVjaWZpZXMgdGhlIGZ1bmN0aW9u IHRvIGNhbGwgdG8gaXNzdWUgYSB3YXJuaW5nLiAgKi8KQEAgLTI0MCwxMCArMjM2LDcgQEAK IHsKICAgZXh0ZXJuIHZvaWQgKCogX19hZnRlcl9tb3JlY29yZV9ob29rKSAodm9pZCk7ICAg ICAvKiBGcm9tIGdtYWxsb2MuYyAqLwogCi0gIGlmIChzdGFydCkKLSAgICBkYXRhX3NwYWNl X3N0YXJ0ID0gc3RhcnQ7Ci0gIGVsc2UKLSAgICBkYXRhX3NwYWNlX3N0YXJ0ID0gc3RhcnRf b2ZfZGF0YSAoKTsKKyAgZGF0YV9zcGFjZV9zdGFydCA9IHN0YXJ0ID8gc3RhcnQgOiBkYXRh X3N0YXJ0OwogCiAgIHdhcm5fZnVuY3Rpb24gPSB3YXJuZnVuOwogICBfX2FmdGVyX21vcmVj b3JlX2hvb2sgPSBjaGVja19tZW1vcnlfbGltaXRzOwoK --------------080709050008050603010502--