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#13419: make 'eabs' act more like a function Date: Sat, 12 Jan 2013 15:06:37 -0800 Organization: UCLA Computer Science Department Message-ID: <50F1EC7D.6050609@cs.ucla.edu> References: <50F10643.8000408@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020309010805080105070404" X-Trace: ger.gmane.org 1358032079 7577 80.91.229.3 (12 Jan 2013 23:07:59 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 12 Jan 2013 23:07:59 +0000 (UTC) Cc: 13419@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jan 13 00:08:16 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 1TuABT-00033A-QB for geb-bug-gnu-emacs@m.gmane.org; Sun, 13 Jan 2013 00:08:16 +0100 Original-Received: from localhost ([::1]:57380 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TuABD-0006zw-Mw for geb-bug-gnu-emacs@m.gmane.org; Sat, 12 Jan 2013 18:07:59 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:47899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TuAB5-0006uV-VL for bug-gnu-emacs@gnu.org; Sat, 12 Jan 2013 18:07:58 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TuAB1-0000Vq-PJ for bug-gnu-emacs@gnu.org; Sat, 12 Jan 2013 18:07:51 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:51902) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TuAB1-0000Vl-L9 for bug-gnu-emacs@gnu.org; Sat, 12 Jan 2013 18:07:47 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TuABG-0004E4-7u for bug-gnu-emacs@gnu.org; Sat, 12 Jan 2013 18:08: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, 12 Jan 2013 23:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13419 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 13419-submit@debbugs.gnu.org id=B13419.135803202516155 (code B ref 13419); Sat, 12 Jan 2013 23:08:02 +0000 Original-Received: (at 13419) by debbugs.gnu.org; 12 Jan 2013 23:07:05 +0000 Original-Received: from localhost ([127.0.0.1]:57361 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TuAAK-0004CV-1u for submit@debbugs.gnu.org; Sat, 12 Jan 2013 18:07:04 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:41870) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TuAAF-0004Bz-V8 for 13419@debbugs.gnu.org; Sat, 12 Jan 2013 18:07:02 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 345E4A60001; Sat, 12 Jan 2013 15:06:39 -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 lAOwiz4FTBiX; Sat, 12 Jan 2013 15:06:38 -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 237EE39E8008; Sat, 12 Jan 2013 15:06:38 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 In-Reply-To: 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:69686 Archived-At: This is a multi-part message in MIME format. --------------020309010805080105070404 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 01/12/2013 05:25 AM, Stefan Monnier wrote: > Do you really consider this code cleaner? The implementation's worse, but the use is nicer, since eabs is guaranteed to evaluate its argument just once. Anyway, here's a simpler implementation that also evaluates its argument just once: would you prefer this? #define eabs(x) imaxabs (x) (This is shorter and simpler than what's in Emacs now.) I've attached a complete patch based on this idea. It incorporates Eli's suggestion to implement imaxabs via abs rather than labs on 32-bit MS-Windows. (The idea is to avoid the need to build imaxabs.o on Windows.) --------------020309010805080105070404 Content-Type: text/plain; charset=UTF-8; name="eabs-imaxabs.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="eabs-imaxabs.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEzLTAxLTEy IDA1OjIxOjA2ICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMy0wMS0xMiAyMzowMjowMCArMDAw MApAQCAtMSw1ICsxLDkgQEAKIDIwMTMtMDEtMTIgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgogCisJTWFrZSBlYWJzIGFjdCBtb3JlIGxpa2UgYSBmdW5jdGlvbi4KKwkq IGxpYi9pbWF4YWJzLmMsIG00L2ltYXhhYnMubTQ6IE5ldyBmaWxlcywgZnJvbSBnbnVsaWIu CisJKiBsaWIvZ251bGliLm1rLCBtNC9nbnVsaWItY29tcC5tNDogUmVnZW5lcmF0ZS4KKwog CUVuYWJsZSBjb25zZXJ2YXRpdmUgc3RhY2sgc2Nhbm5pbmcgZm9yIGFsbCBhcmNoaXRlY3R1 cmVzLgogCVN1Z2dlc3RlZCBieSBTdGVmYW4gTW9ubmllciBpbgogCTxodHRwOi8vbGlzdHMu Z251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxMy0wMS9tc2cwMDE4My5odG1s Pi4KCj09PSBtb2RpZmllZCBmaWxlICdhZG1pbi9DaGFuZ2VMb2cnCi0tLSBhZG1pbi9DaGFu Z2VMb2cJMjAxMy0wMS0xMCAwMzo0MzowMiArMDAwMAorKysgYWRtaW4vQ2hhbmdlTG9nCTIw MTMtMDEtMTIgMjM6MDI6MDAgKzAwMDAKQEAgLTEsMyArMSw4IEBACisyMDEzLTAxLTEyICBQ YXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKworCU1ha2UgZWFicyBhY3QgbW9y ZSBsaWtlIGEgZnVuY3Rpb24uCisJKiBtZXJnZS1nbnVsaWIgKEdOVUxJQl9NT0RVTEVTKTog QWRkIGltYXhhYnMuCisKIDIwMTMtMDEtMDMgIEdsZW5uIE1vcnJpcyAgPHJnbUBnbnUub3Jn PgogCiAJKiBjaGVjay1kb2Mtc3RyaW5nczogVXBkYXRlIGZvciBDVlMtPmJ6ciwgbW92ZWQg bGlzcHJlZi8gZGlyZWN0b3J5LgoKPT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL21lcmdlLWdu dWxpYicKLS0tIGFkbWluL21lcmdlLWdudWxpYgkyMDEzLTAxLTAyIDE2OjEzOjA0ICswMDAw CisrKyBhZG1pbi9tZXJnZS1nbnVsaWIJMjAxMy0wMS0xMiAyMzowMjowMCArMDAwMApAQCAt MzAsNyArMzAsNyBAQAogICBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUg Y3J5cHRvL3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyCiAgIGR0b2FzdHIgZHRv dGltZXNwZWMgZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdAogICBmY250bC1oIGZp bGVtb2RlIGdldGxvYWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheQotICBp Z25vcmUtdmFsdWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxzdGF0CisgIGlnbm9yZS12YWx1ZSBp bWF4YWJzIGludHByb3BzIGxhcmdlZmlsZSBsc3RhdAogICBtYW55d2FybmluZ3MgbWt0aW1l IHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluawogICBzaWcyc3RyIHNv Y2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvCiAgIHN0cmZ0 aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdAoKPT09IG1vZGlmaWVk IGZpbGUgJ2xpYi9nbnVsaWIubWsnCi0tLSBsaWIvZ251bGliLm1rCTIwMTMtMDEtMDQgMDI6 MTc6NDkgKzAwMDAKKysrIGxpYi9nbnVsaWIubWsJMjAxMy0wMS0xMiAyMzowMjowMCArMDAw MApAQCAtMjEsNyArMjEsNyBAQAogIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMg dGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgogIwogIyBHZW5lcmF0ZWQgYnkgZ251bGliLXRv b2wuCi0jIFJlcHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxp Yj1saWJnbnUgLS1zb3VyY2UtYmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJhc2U9ZG9j IC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9YXQtaW50 ZXJuYWwgLS1hdm9pZD1lcnJubyAtLWF2b2lkPWZjaGRpciAtLWF2b2lkPWZjbnRsIC0tYXZv aWQ9ZnN0YXQgLS1hdm9pZD1tYWxsb2MtcG9zaXggLS1hdm9pZD1tc3ZjLWludmFsIC0tYXZv aWQ9bXN2Yy1ub3Rocm93IC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2b2lkPW9wZW5hdC1oIC0t YXZvaWQ9cmFpc2UgLS1hdm9pZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2b2lkPXNp Z3Byb2NtYXNrIC0tYXZvaWQ9c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0tbWFrZWZp bGUtbmFtZT1nbnVsaWIubWsgLS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1uby1saWJ0 b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBjLWN0eXBl IGMtc3RyY2FzZSBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUgY3J5cHRv L3NoYTEgY3J5cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGltZXNwZWMg ZHVwMiBlbnZpcm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdCBmY250bC1oIGZpbGVtb2RlIGdldGxv YWRhdmcgZ2V0b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFsdWUgaW50 cHJvcHMgbGFyZ2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVjdCBwdGhy ZWFkX3NpZ21hc2sgcHV0ZW52IHJlYWRsaW5rIHNpZzJzdHIgc29ja2xlbiBzdGF0LXRpbWUg c3RkYWxpZ24gc3RkYXJnIHN0ZGJvb2wgc3RkaW8gc3RyZnRpbWUgc3RydG9pbWF4IHN0cnRv dW1heCBzeW1saW5rIHN5c19zdGF0IHN5c190aW1lIHRpbWUgdGltZXItdGltZSB0aW1lc3Bl Yy1hZGQgdGltZXNwZWMtc3ViIHVuc2V0ZW52IHV0aW1lbnMgd2FybmluZ3MKKyMgUmVwcm9k dWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbGliPWxpYmdudSAtLXNv dXJjZS1iYXNlPWxpYiAtLW00LWJhc2U9bTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1iYXNl PXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1hdm9pZD1hdC1pbnRlcm5hbCAtLWF2b2lk PWVycm5vIC0tYXZvaWQ9ZmNoZGlyIC0tYXZvaWQ9ZmNudGwgLS1hdm9pZD1mc3RhdCAtLWF2 b2lkPW1hbGxvYy1wb3NpeCAtLWF2b2lkPW1zdmMtaW52YWwgLS1hdm9pZD1tc3ZjLW5vdGhy b3cgLS1hdm9pZD1vcGVuYXQtZGllIC0tYXZvaWQ9b3BlbmF0LWggLS1hdm9pZD1yYWlzZSAt LWF2b2lkPXNhdmUtY3dkIC0tYXZvaWQ9c2VsZWN0IC0tYXZvaWQ9c2lncHJvY21hc2sgLS1h dm9pZD1zeXNfdHlwZXMgLS1hdm9pZD10aHJlYWRsaWIgLS1tYWtlZmlsZS1uYW1lPWdudWxp Yi5tayAtLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNyby1w cmVmaXg9Z2wgLS1uby12Yy1maWxlcyBhbGxvY2Etb3B0IGMtY3R5cGUgYy1zdHJjYXNlIGNh cmVhZGxpbmthdCBjbG9zZS1zdHJlYW0gY3J5cHRvL21kNSBjcnlwdG8vc2hhMSBjcnlwdG8v c2hhMjU2IGNyeXB0by9zaGE1MTIgZHRvYXN0ciBkdG90aW1lc3BlYyBkdXAyIGVudmlyb24g ZXhlY2luZm8gZmFjY2Vzc2F0IGZjbnRsLWggZmlsZW1vZGUgZ2V0bG9hZGF2ZyBnZXRvcHQt Z251IGdldHRpbWUgZ2V0dGltZW9mZGF5IGlnbm9yZS12YWx1ZSBpbWF4YWJzIGludHByb3Bz IGxhcmdlZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWt0aW1lIHBzZWxlY3QgcHRocmVhZF9z aWdtYXNrIHB1dGVudiByZWFkbGluayBzaWcyc3RyIHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFs aWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXgg c3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRk IHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdhcm5pbmdzCiAKIAogTU9TVExZQ0xF QU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC0zNDMsNiArMzQzLDE1IEBACiAKICMj IGVuZCAgIGdudWxpYiBtb2R1bGUgaWdub3JlLXZhbHVlCiAKKyMjIGJlZ2luIGdudWxpYiBt b2R1bGUgaW1heGFicworCisKK0VYVFJBX0RJU1QgKz0gaW1heGFicy5jCisKK0VYVFJBX2xp YmdudV9hX1NPVVJDRVMgKz0gaW1heGFicy5jCisKKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUg aW1heGFicworCiAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGludHByb3BzCiAKIAoKPT09IGFk ZGVkIGZpbGUgJ2xpYi9pbWF4YWJzLmMnCi0tLSBsaWIvaW1heGFicy5jCTE5NzAtMDEtMDEg MDA6MDA6MDAgKzAwMDAKKysrIGxpYi9pbWF4YWJzLmMJMjAxMy0wMS0xMiAyMzowMjowMCAr MDAwMApAQCAtMCwwICsxLDI2IEBACisvKiBpbWF4YWJzKCkgZnVuY3Rpb246IGFic29sdXRl IHZhbHVlIG9mICdpbnRtYXhfdCcuCisgICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDktMjAx MyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1 ZGUgPGNvbmZpZy5oPgorCisvKiBTcGVjaWZpY2F0aW9uLiAgKi8KKyNpbmNsdWRlIDxpbnR0 eXBlcy5oPgorCitpbnRtYXhfdAoraW1heGFicyAoaW50bWF4X3QgeCkKK3sKKyAgcmV0dXJu ICh4ID49IDAgPyB4IDogLSB4KTsKK30KCj09PSBtb2RpZmllZCBmaWxlICdtNC9nbnVsaWIt Y29tcC5tNCcKLS0tIG00L2dudWxpYi1jb21wLm00CTIwMTMtMDEtMDQgMDI6MTc6NDkgKzAw MDAKKysrIG00L2dudWxpYi1jb21wLm00CTIwMTMtMDEtMTIgMjM6MDI6MDAgKzAwMDAKQEAg LTcyLDYgKzcyLDcgQEAKICAgIyBDb2RlIGZyb20gbW9kdWxlIGdldHRpbWVvZmRheToKICAg IyBDb2RlIGZyb20gbW9kdWxlIGdyb3VwLW1lbWJlcjoKICAgIyBDb2RlIGZyb20gbW9kdWxl IGlnbm9yZS12YWx1ZToKKyAgIyBDb2RlIGZyb20gbW9kdWxlIGltYXhhYnM6CiAgICMgQ29k ZSBmcm9tIG1vZHVsZSBpbmNsdWRlX25leHQ6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBpbnRw cm9wczoKICAgIyBDb2RlIGZyb20gbW9kdWxlIGludHR5cGVzLWluY29tcGxldGU6CkBAIC0y MTYsNiArMjE3LDEyIEBACiAgICAgZ2xfUFJFUkVRX0dFVFRJTUVPRkRBWQogICBmaQogICBn bF9TWVNfVElNRV9NT0RVTEVfSU5ESUNBVE9SKFtnZXR0aW1lb2ZkYXldKQorICBnbF9GVU5D X0lNQVhBQlMKKyAgaWYgdGVzdCAkYWNfY3ZfZnVuY19pbWF4YWJzID0gbm87IHRoZW4KKyAg ICBBQ19MSUJPQkooW2ltYXhhYnNdKQorICAgIGdsX1BSRVJFUV9JTUFYQUJTCisgIGZpCisg IGdsX0lOVFRZUEVTX01PRFVMRV9JTkRJQ0FUT1IoW2ltYXhhYnNdKQogICBnbF9JTlRUWVBF U19JTkNPTVBMRVRFCiAgIEFDX1JFUVVJUkUoW2dsX0xBUkdFRklMRV0pCiAgIGdsX0ZVTkNf TFNUQVQKQEAgLTY4Miw2ICs2ODksNyBAQAogICBsaWIvZ2V0dGltZW9mZGF5LmMKICAgbGli L2dyb3VwLW1lbWJlci5jCiAgIGxpYi9pZ25vcmUtdmFsdWUuaAorICBsaWIvaW1heGFicy5j CiAgIGxpYi9pbnRwcm9wcy5oCiAgIGxpYi9pbnR0eXBlcy5pbi5oCiAgIGxpYi9sc3RhdC5j CkBAIC03NjQsNiArNzcyLDcgQEAKICAgbTQvZ2V0dGltZW9mZGF5Lm00CiAgIG00L2dudWxp Yi1jb21tb24ubTQKICAgbTQvZ3JvdXAtbWVtYmVyLm00CisgIG00L2ltYXhhYnMubTQKICAg bTQvaW5jbHVkZV9uZXh0Lm00CiAgIG00L2ludHR5cGVzLm00CiAgIG00L2xhcmdlZmlsZS5t NAoKPT09IGFkZGVkIGZpbGUgJ200L2ltYXhhYnMubTQnCi0tLSBtNC9pbWF4YWJzLm00CTE5 NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIG00L2ltYXhhYnMubTQJMjAxMy0wMS0xMiAy MzowMjowMCArMDAwMApAQCAtMCwwICsxLDIwIEBACisjIGltYXhhYnMubTQgc2VyaWFsIDQK K2RubCBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDktMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRv IGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlm aWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitBQ19E RUZVTihbZ2xfRlVOQ19JTUFYQUJTXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfSU5UVFlQRVNf SF9ERUZBVUxUU10pCisKKyAgZG5sIE9uIE9TRi8xIDUuMSB3aXRoIGNjLCB0aGlzIGZ1bmN0 aW9uIGlzIGRlY2xhcmVkIGJ1dCBub3QgZGVmaW5lZC4KKyAgQUNfQ0hFQ0tfRlVOQ1NfT05D RShbaW1heGFic10pCisgIEFDX0NIRUNLX0RFQ0xTX09OQ0UoW2ltYXhhYnNdKQorICBpZiB0 ZXN0ICIkYWNfY3ZfaGF2ZV9kZWNsX2ltYXhhYnMiICE9IHllczsgdGhlbgorICAgIEhBVkVf REVDTF9JTUFYQUJTPTAKKyAgZmkKK10pCisKKyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvaW1h eGFicy5jLgorQUNfREVGVU4oW2dsX1BSRVJFUV9JTUFYQUJTXSwgWzpdKQoKPT09IG1vZGlm aWVkIGZpbGUgJ250L0NoYW5nZUxvZycKLS0tIG50L0NoYW5nZUxvZwkyMDEzLTAxLTExIDA5 OjMzOjU0ICswMDAwCisrKyBudC9DaGFuZ2VMb2cJMjAxMy0wMS0xMiAyMzowMjowMCArMDAw MApAQCAtMSwzICsxLDggQEAKKzIwMTMtMDEtMTIgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNz LnVjbGEuZWR1PgorCisJTWFrZSBlYWJzIGFjdCBtb3JlIGxpa2UgYSBmdW5jdGlvbi4KKwkq IGluYy9pbnR0eXBlcy5oIChpbWF4YWJzKSBbIV9fTUlOR1czMl9fXTogTmV3IG1hY3JvLgor CiAyMDEzLTAxLTExICBFbGkgWmFyZXRza2lpICA8ZWxpekBnbnUub3JnPgogCiAJKiBpbmMv dW5pc3RkLmggKE9fSUdOT1JFX0NUVFkpOiBEZWZpbmUsIGFzIGl0IGlzIHVuY29uZGl0aW9u YWxseQoKPT09IG1vZGlmaWVkIGZpbGUgJ250L2luYy9pbnR0eXBlcy5oJwotLS0gbnQvaW5j L2ludHR5cGVzLmgJMjAxMy0wMS0wMSAwOToxMTowNSArMDAwMAorKysgbnQvaW5jL2ludHR5 cGVzLmgJMjAxMy0wMS0xMiAyMzowMjowMCArMDAwMApAQCAtMjUsOSArMjUsMTEgQEAKICNl bHNlICAvKiAhX19NSU5HVzMyX18gKi8KICNpbmNsdWRlICJzdGRpbnQuaCIKICNpZmRlZiBf V0lONjQKKyNkZWZpbmUgaW1heGFicyBfYWJzNjQKICNkZWZpbmUgc3RydG91bWF4IF9zdHJ0 b3VpNjQKICNkZWZpbmUgc3RydG9pbWF4IF9zdHJ0b2k2NAogI2Vsc2UKKyNkZWZpbmUgaW1h eGFicyBhYnMKICNkZWZpbmUgc3RydG91bWF4IHN0cnRvdWwKICNkZWZpbmUgc3RydG9pbWF4 IHN0cnRvbAogI2VuZGlmCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL0NoYW5nZUxvZycKLS0t IHNyYy9DaGFuZ2VMb2cJMjAxMy0wMS0xMiAwNjoxNToxMiArMDAwMAorKysgc3JjL0NoYW5n ZUxvZwkyMDEzLTAxLTEyIDIzOjAyOjAwICswMDAwCkBAIC0xLDMgKzEsOCBAQAorMjAxMy0w MS0xMiAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlNYWtlIGVhYnMg YWN0IG1vcmUgbGlrZSBhIGZ1bmN0aW9uLgorCSogbGlzcC5oIChlYWJzKTogRXZhbHVhdGUg YXJnIGp1c3Qgb25jZS4KKwogMjAxMy0wMS0xMiAgRG1pdHJ5IEFudGlwb3YgIDxkbWFudGlw b3ZAeWFuZGV4LnJ1PgogCiAJKiBpbmRlbnQuYyAoRnZlcnRpY2FsX21vdGlvbik6IFJlbW92 ZSBub3ctaW5jb3JyZWN0IEdDUFJPcwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9saXNwLmgn Ci0tLSBzcmMvbGlzcC5oCTIwMTMtMDEtMTIgMDU6MjE6MDYgKzAwMDAKKysrIHNyYy9saXNw LmgJMjAxMy0wMS0xMiAyMzowMjowMCArMDAwMApAQCAtMzYyNiwxMiArMzYyNiwxMCBAQAog LyogU2V0IHVwIHRoZSBuYW1lIG9mIHRoZSBtYWNoaW5lIHdlJ3JlIHJ1bm5pbmcgb24uICAq LwogZXh0ZXJuIHZvaWQgaW5pdF9zeXN0ZW1fbmFtZSAodm9pZCk7CiAKLS8qIFdlIHVzZWQg dG8gdXNlIGBhYnMnLCBidXQgdGhhdCBjbGFzaGVzIHdpdGggc3lzdGVtIGhlYWRlcnMgb24g c29tZQotICAgcGxhdGZvcm1zLCBhbmQgdXNpbmcgYSBuYW1lIHJlc2VydmVkIGJ5IFN0YW5k YXJkIEMgaXMgYSBiYWQgaWRlYQotICAgYW55d2F5LiAgKi8KLSNpZiAhZGVmaW5lZCAoZWFi cykKLSNkZWZpbmUgZWFicyh4KSAgICAgICAgICgoeCkgPCAwID8gLSh4KSA6ICh4KSkKLSNl bmRpZgorLyogUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBYLCB3aXRob3V0IGV2YWx1 YXRpbmcgWCBtb3JlIHRoYW4gb25jZS4KKyAgIFggc2hvdWxkIGJlIGEgc2lnbmVkIGludGVn ZXIsIGFuZCBYJ3MgYWJzb2x1dGUgdmFsdWUgc2hvdWxkIG5vdAorICAgZXhjZWVkIHRoZSBt YXhpbXVtIGZvciBpdHMgcHJvbW90ZWQgdHlwZS4gICovCisjZGVmaW5lIGVhYnMoeCkgaW1h eGFicyAoeCkKIAogLyogUmV0dXJuIGEgZml4bnVtIG9yIGZsb2F0LCBkZXBlbmRpbmcgb24g d2hldGhlciBWQUwgZml0cyBpbiBhIExpc3AKICAgIGZpeG51bS4gICovCgo= --------------020309010805080105070404--