From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Gdobbins Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Add new lisp function length= with bytecode support Date: Tue, 14 Mar 2017 02:06:22 -0400 Message-ID: References: <64Kl8OYdaKer-3Ey7GHVD9He6bX8yYHaS_NjEwp7Wqc4Zb7xu8IQV3ExvjCLKlBWHVVr_HNUhd55i_BVXNHnpxjnXc6hPgWvWkc3bIO8e7s=@protonmail.com> <99375f4d-f627-8e29-2c1f-9d3bfdf3ddd1@gmail.com> <0mz3T7gRvLpYGD7MDAZGZjxUi5QdLAkXtZ7y8UX4a3tDMKu1KvlRZ2IYKRUlQh01TvDsPfG1Fl_l4MIlmBWtHW9A_nQ9liIx6Mz6vcT6lGw=@protonmail.com> <4pTgtp7P0udVYhXvmkdE96q4eNHNWW6ZQ1o7woPbQTJbXd5scmDTlaLrg4BtjD_YzTTX5qHyHhXUg3gX0jW5yenj-a2gnT0m8QiFQETB284=@protonmail.com> <3AD8FC51-ABB3-4FC7-A5EF-A30EBEA27E9E@raeburn.org> Reply-To: Gdobbins NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_95528651dd425653034a4146e644db08" X-Trace: blaine.gmane.org 1489471610 30177 195.159.176.226 (14 Mar 2017 06:06:50 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 14 Mar 2017 06:06:50 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Mar 14 07:06:46 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnfbT-0006eg-MP for ged-emacs-devel@m.gmane.org; Tue, 14 Mar 2017 07:06:40 +0100 Original-Received: from localhost ([::1]:56575 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnfbX-00044q-Sw for ged-emacs-devel@m.gmane.org; Tue, 14 Mar 2017 02:06:43 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnfbO-000442-Vb for emacs-devel@gnu.org; Tue, 14 Mar 2017 02:06:36 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnfbL-0004GU-Pr for emacs-devel@gnu.org; Tue, 14 Mar 2017 02:06:34 -0400 Original-Received: from mail3.protonmail.ch ([185.70.40.25]:63247) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cnfbL-0004Ex-9V for emacs-devel@gnu.org; Tue, 14 Mar 2017 02:06:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=default; t=1489471587; bh=gWZR3wJdiajBnwRHqbVAyc79Ymc2BMfiqXH3pSnwVDE=; h=To:From:Cc:Reply-To:Subject:In-Reply-To:References:Feedback-ID: From; b=nPpqoxY+gijvrXh3nEGVVYClHmgmF25tyFkAPflLQY98oUGZDgO0W/0JTJ8y8uuUV zIw3HbTPYeXTQv7EocPqQYsvJaBzpNHricas6rcVnVkcR7LDTAOEmO+XIeWw4OLLa2 zhdF5Wp+71yu3e8hIDSiU3D5Q/Km1pQf7tFpvV3I= In-Reply-To: Feedback-ID: 2scFH5skvFzgZJ7ILBOVugR__H-QecA1siOwz0AeO2iN_D48zTQMjBTq6Jy9M68A2__zFgy29E_J00dfSYIKuA==:Ext:ProtonMail X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 185.70.40.25 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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" Xref: news.gmane.org gmane.emacs.devel:213005 Archived-At: This is a multi-part message in MIME format. --b1_95528651dd425653034a4146e644db08 Content-Type: multipart/alternative; boundary="b2_95528651dd425653034a4146e644db08" --b2_95528651dd425653034a4146e644db08 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 PiBQbGVhc2UgbW92ZSBtb3N0IG9mIHRoYXQgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiAod2hpY2gg SSBndWVzcyB3aWxsIHRha2UgdGhlIGxpc3QsIHRoZSBvcCBhbmQgdGhlIHZhbHVlIHRvIHdoaWNo IHRvIGNvbXBhcmUgdGhlIGxpc3QpLgoKRG9uZSwgYnV0IHNpbmNlIHRoZSBkZWZhdWx0IGNhc2Ug b2YgdGhlIHN3aXRjaCBuZWVkcyB0aGUgYnl0ZWNvZGUgc3RyZWFtIGFuZCBleGVjdXRpb24gc3Rh Y2sgdG8gYmUgYXQgYSBkaWZmZXJlbnQgcG9pbnQgdGhhbiBhbGwgb2YgdGhlIG90aGVyIGNhc2Vz LCB0aGUgZnVuY3Rpb24gbmVlZHMgdGhlIHJlbGV2YW50IHBvaW50ZXJzLgoKPiBTaW1pbGFybHks IGhlcmUgKGFuZCBiZWxvdyksIEknbSB3b25kZXJpbmcgaWYgd2UgY2FuJ3QgcmVkdWNlIHRoZSBj b2RlIGR1cGxpY2F0aW9uLgoKVGhleSBhcmUgbm93IGRlZmluZWQgdmlhIGEgbWFjcm8uCgo+IEZ1 cnRoZXJtb3JlLCB5b3UgbWlnaHQgbGlrZSB0byBkZWNsYXJlIHRoZW0gc3RhdGljLCBzbyB0aGVj b21waWxlciBpcyBtb3JlIGxpa2VseSB0byBpbmxpbmUgdGhlbS4KCj4gRG9uJ3QgZXhwb3NlIHRo ZW0gaW4gbGlzcC5oLCBzaW5jZSB0aGV5J3JlIG9ubHkgdXNlZCBpbiBieXRlY29kZS5jLgoKRG9u ZS4KCgotLSBHcmFoYW0gRG9iYmlucw== --b2_95528651dd425653034a4146e644db08 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdj4mZ3Q7Jm5ic3A7UGxlYXNlIG1vdmUgbW9zdCBvZiB0aGF0IHRvIGEgc2VwYXJhdGUgZnVu Y3Rpb24gKHdoaWNoIEkgZ3Vlc3Mgd2lsbCB0YWtlIHRoZSBsaXN0LCB0aGUgb3AgYW5kIHRoZSB2 YWx1ZSB0byB3aGljaCB0byBjb21wYXJlIHRoZSBsaXN0KS48YnI+PC9kaXY+PGRpdj48YnI+PC9k aXY+PGRpdj5Eb25lLCBidXQgc2luY2UgdGhlIGRlZmF1bHQgY2FzZSBvZiB0aGUgc3dpdGNoIG5l ZWRzIHRoZSBieXRlY29kZSBzdHJlYW0gYW5kIGV4ZWN1dGlvbiBzdGFjayB0byBiZSBhdCBhIGRp ZmZlcmVudCBwb2ludCB0aGFuIGFsbCBvZiB0aGUgb3RoZXIgY2FzZXMsIHRoZSBmdW5jdGlvbiBu ZWVkcyB0aGUgcmVsZXZhbnQgcG9pbnRlcnMuPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ Jmd0OyZuYnNwO1NpbWlsYXJseSwgaGVyZSAoYW5kIGJlbG93KSwgSSdtIHdvbmRlcmluZyBpZiB3 ZSBjYW4ndCByZWR1Y2UgdGhlIGNvZGUgZHVwbGljYXRpb24uPGJyPjwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+VGhleSBhcmUgbm93IGRlZmluZWQgdmlhIGEgbWFjcm8uPGJyPjwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+Jmd0OyZuYnNwO0Z1cnRoZXJtb3JlLCB5b3UgbWlnaHQgbGlrZSB0byBk ZWNsYXJlIHRoZW0gc3RhdGljLCBzbyB0aGVjb21waWxlciBpcyBtb3JlIGxpa2VseSB0byBpbmxp bmUgdGhlbS48Yj48L2I+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Jmd0OyZuYnNwO0Rv bid0IGV4cG9zZSB0aGVtIGluIGxpc3AuaCwgc2luY2UgdGhleSdyZSBvbmx5IHVzZWQgaW4gYnl0 ZWNvZGUuYy48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5Eb25lLjwvZGl2PjxkaXY+PGJy PjwvZGl2PjxkaXYgY2xhc3M9InByb3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrICI+PGRpdiBjbGFz cz0icHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stdXNlciAiPi0tIEdyYWhhbSBEb2JiaW5zPGJy PjwvZGl2PjxkaXYgY2xhc3M9InByb3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrLXByb3RvbiBwcm90 b25tYWlsX3NpZ25hdHVyZV9ibG9jay1lbXB0eSI+PGJyPjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwv ZGl2Pg== --b2_95528651dd425653034a4146e644db08-- --b1_95528651dd425653034a4146e644db08 Content-Type: text/x-patch; name="0002-Optimize-bytecode-interpeter-for-numeric-comparisons.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0002-Optimize-bytecode-interpeter-for-numeric-comparisons.patch RnJvbSBhZjY5NmRkM2UzN2VhNDZlZTBhNTk2NzBiMDJiYWI1YTlmM2IzN2NlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmFoYW0gRG9iYmlucyA8Z2RvYmJpbnNAcHJvdG9ubWFpbC5j b20+CkRhdGU6IFR1ZSwgMTQgTWFyIDIwMTcgMDE6NTQ6MjkgLTA0MDAKU3ViamVjdDogW1BBVENI XSBPcHRpbWl6ZSBieXRlY29kZSBpbnRlcnBldGVyIGZvciBudW1lcmljIGNvbXBhcmlzb25zIG9m IGxpc3QKIGxlbmd0aAoKV2hlbiB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0ZXIgZW5jb3VudGVycyBh IGxlbmd0aCBieXRlY29kZSB3aXRoIGEgbGlzdAphcmd1bWVudCBmb2xsb3dlZCBieSBhIGNvbXBh cmlzb24gYnl0ZWNvZGUgaXQgZGVmZXJzIHRvIHRoZSBuZXcgc3BlY2lhbApwdXJwb3NlIGxlbmd0 aCBjb21wYXJpc29uIGZ1bmN0aW9ucy4KKiBzcmMvYnl0ZWNvZGUuYyAoZXhlY19ieXRlX2NvZGUs IGxlbmd0aF9CZXFsc2lnbiwgbGVuZ3RoX0JndHIsIGxlbmd0aF9CbHNzLApsZW5ndGhfQmxlcSwg bGVuZ3RoX0JnZXEsIGxlbmd0aF9CZXEsIGxlbmd0aF9jb21wYXJlKTogQ2hhbmdlIHRoZSBCbGVu Z3RoCmJ5dGVjb2RlIGNhc2UgYW5kIGFkZCB0aGUgbmV3IGZ1bmN0aW9ucy4KKiBsaXNwL2VtYWNz LWxpc3AvYnl0ZS1vcHQuZWwgKGJ5dGUtb3B0aW1pemUtYmluYXJ5LXByZWRpY2F0ZSwKYnl0ZS1v cHRpbWl6ZS1wcmVkaWNhdGUpOiBNYWtlIHRoZSBieXRlLWNvbXBpbGVyIHB1dCB0aGUgbGVuZ3Ro IGFuZApjb21wYXJpc29uIGJ5dGVjb2RlcyBuZXh0IHRvIGVhY2ggb3RoZXIgd2hlbiBwb3NzaWJs ZS4KLS0tCiBsaXNwL2VtYWNzLWxpc3AvYnl0ZS1vcHQuZWwgfCAgMzcgKysrKysrKysrLS0tLQog c3JjL2J5dGVjb2RlLmMgICAgICAgICAgICAgIHwgMTIzICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDE0OSBpbnNlcnRpb25zKCsp LCAxMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvYnl0ZS1vcHQu ZWwgYi9saXNwL2VtYWNzLWxpc3AvYnl0ZS1vcHQuZWwKaW5kZXggMDA0ZjJlMjg2NS4uZjNhMjRk OWQyNiAxMDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1saXNwL2J5dGUtb3B0LmVsCisrKyBiL2xpc3Av ZW1hY3MtbGlzcC9ieXRlLW9wdC5lbApAQCAtODYyLDE1ICs4NjIsMjMgQEAgYnl0ZS1vcHRpbWl6 ZS1sb2dtdW1ibGUKIAogKGRlZnVuIGJ5dGUtb3B0aW1pemUtYmluYXJ5LXByZWRpY2F0ZSAoZm9y bSkKICAgKGNvbmQKLSAgICgob3IgKG5vdCAobWFjcm9leHAtY29uc3QtcCAobnRoIDEgZm9ybSkp KQotICAgICAgICAobnRoY2RyIDMgZm9ybSkpIDs7IEluIGNhc2UgdGhlcmUgYXJlIG1vcmUgdGhh biAyIGFyZ3MuCi0gICAgZm9ybSkKLSAgICgobWFjcm9leHAtY29uc3QtcCAobnRoIDIgZm9ybSkp Ci0gICAgKGNvbmRpdGlvbi1jYXNlICgpCi0gICAgICAgIChsaXN0ICdxdW90ZSAoZXZhbCBmb3Jt KSkKLSAgICAgIChlcnJvciBmb3JtKSkpCi0gICAodCA7OyBUaGlzIGNhbiBlbmFibGUgc29tZSBs YXBjb2RlIG9wdGltaXphdGlvbnMuCi0gICAgKGxpc3QgKGNhciBmb3JtKSAobnRoIDIgZm9ybSkg KG50aCAxIGZvcm0pKSkpKQorICAgICgobnRoY2RyIDMgZm9ybSkgZm9ybSkKKyAgICAoKG5vdCAo bWFjcm9leHAtY29uc3QtcCAobnRoIDEgZm9ybSkpKQorICAgICAoaWYgKGFuZAorICAgICAgICAg IChtZW1xIChjYXIgZm9ybSkgJyg9IGVxIGVxdWFsKSkKKyAgICAgICAgICAoZXEgKGNhci1zYWZl IChjYWRyIGZvcm0pKSAnbGVuZ3RoKQorICAgICAgICAgIChtYWNyb2V4cC1jb25zdC1wIChudGgg MiBmb3JtKSkpCisgICAgICAgICAobGlzdCAoY2FyIGZvcm0pIChudGggMiBmb3JtKSAobnRoIDEg Zm9ybSkpCisgICAgICAgZm9ybSkpCisgICAgKChtYWNyb2V4cC1jb25zdC1wIChudGggMiBmb3Jt KSkKKyAgICAgKGNvbmRpdGlvbi1jYXNlICgpCisgICAgICAgICAobGlzdCAncXVvdGUgKGV2YWwg Zm9ybSkpCisgICAgICAgKGVycm9yIGZvcm0pKSkKKyAgICAoKGFuZCAobWVtcSAoY2FyIGZvcm0p ICcoPSBlcSBlcXVhbCkpCisgICAgICAgICAgKGVxIChjYXItc2FmZSAoY2FkZHIgZm9ybSkpICds ZW5ndGgpKQorICAgICBmb3JtKQorICAgICh0IDs7IFRoaXMgY2FuIGVuYWJsZSBzb21lIGxhcGNv ZGUgb3B0aW1pemF0aW9ucy4KKyAgICAgKGxpc3QgKGNhciBmb3JtKSAobnRoIDIgZm9ybSkgKG50 aCAxIGZvcm0pKSkpKQogCiAoZGVmdW4gYnl0ZS1vcHRpbWl6ZS1wcmVkaWNhdGUgKGZvcm0pCiAg IChsZXQgKChvayB0KQpAQCAtODgyLDcgKzg5MCwxNiBAQCBieXRlLW9wdGltaXplLXByZWRpY2F0 ZQogCShjb25kaXRpb24tY2FzZSAoKQogCSAgICAobGlzdCAncXVvdGUgKGV2YWwgZm9ybSkpCiAJ ICAoZXJyb3IgZm9ybSkpCi0JZm9ybSkpKQorICAgICAgKGxldCAoKHN3YXAgKGFzc29jIChjYXIg Zm9ybSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKCg8IC4gPikgKD4gLiA8KQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDw9IC4gPj0pICg+PSAuIDw9KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKD0gLiA9KSkpKSkKKyAgICAgICAgKGlmIChhbmQgc3dhcAorICAgICAgICAg ICAgICAgICAoPSAzIChsZW5ndGggZm9ybSkpCisgICAgICAgICAgICAgICAgIChlcSAoY2FyLXNh ZmUgKGNhZHIgZm9ybSkpICdsZW5ndGgpCisgICAgICAgICAgICAgICAgIChtYWNyb2V4cC1jb25z dC1wIChudGggMiBmb3JtKSkpCisgICAgICAgICAgICAobGlzdCAoY2RyIHN3YXApIChudGggMiBm b3JtKSAobnRoIDEgZm9ybSkpCisgICAgICAgICAgZm9ybSkpKSkpCiAKIChkZWZ1biBieXRlLW9w dGltaXplLWlkZW50aXR5IChmb3JtKQogICAoaWYgKGFuZCAoY2RyIGZvcm0pIChudWxsIChjZHIg KGNkciBmb3JtKSkpKQpkaWZmIC0tZ2l0IGEvc3JjL2J5dGVjb2RlLmMgYi9zcmMvYnl0ZWNvZGUu YwppbmRleCBlNzgxYTg3ZDE2Li45ZGVlNjllM2Y2IDEwMDY0NAotLS0gYS9zcmMvYnl0ZWNvZGUu YworKysgYi9zcmMvYnl0ZWNvZGUuYwpAQCAtMzEwLDYgKzMxMCwxMiBAQCBlbnVtIGJ5dGVfY29k ZV9vcAogCiAjZGVmaW5lIFRPUCAoKnRvcCkKIAorLyogTG9vayBhdCB0aGUgbmV4dCBieXRlIG9m IHRoZSBieXRlY29kZSBzdHJlYW0uICovCisKKyNkZWZpbmUgUEVFSyAoKnBjKQorCitzdGF0aWMg dm9pZCBsZW5ndGhfY29tcGFyZSAodW5zaWduZWQgY2hhciBjb25zdCAqKiwgTGlzcF9PYmplY3Qg KiosIGludCAqKTsKKwogREVGVU4gKCJieXRlLWNvZGUiLCBGYnl0ZV9jb2RlLCBTYnl0ZV9jb2Rl LCAzLCAzLCAwLAogICAgICAgIGRvYzogLyogRnVuY3Rpb24gdXNlZCBpbnRlcm5hbGx5IGluIGJ5 dGUtY29tcGlsZWQgY29kZS4KIFRoZSBmaXJzdCBhcmd1bWVudCwgQllURVNUUiwgaXMgYSBzdHJp bmcgb2YgYnl0ZSBjb2RlOwpAQCAtOTA3LDcgKzkxMywxMCBAQCBleGVjX2J5dGVfY29kZSAoTGlz cF9PYmplY3QgYnl0ZXN0ciwgTGlzcF9PYmplY3QgdmVjdG9yLCBMaXNwX09iamVjdCBtYXhkZXB0 aCwKIAkgIE5FWFQ7CiAKIAlDQVNFIChCbGVuZ3RoKToKLQkgIFRPUCA9IEZsZW5ndGggKFRPUCk7 CisJICBpZiAoQ09OU1AgKFRPUCkpCisJICAgIGxlbmd0aF9jb21wYXJlICgmcGMsICZ0b3AsICZv cCk7CisJICBlbHNlCisJICAgIFRPUCA9IEZsZW5ndGggKFRPUCk7CiAJICBORVhUOwogCiAJQ0FT RSAoQmFyZWYpOgpAQCAtMTUyMiwzICsxNTMxLDExNSBAQCBpbnRlZ2VyLCBpdCBpcyBpbmNyZW1l bnRlZCBlYWNoIHRpbWUgdGhhdCBzeW1ib2wncyBmdW5jdGlvbiBpcyBjYWxsZWQuICAqLyk7CiAg IH0KICNlbmRpZgogfQorCisvKiBUaGUgZm9sbG93aW5nIGFyZSB1c2VkIGFib3ZlIGluIHRoZSBC bGVuZ3RoIGNhc2UuIEVhY2ggYXNzdW1lcyBzMQorICAgaXMgYSBudW1iZXIgb3IgbWFya2VyIGFu ZCBzMiBpcyBhIGxpc3QuICovCisKKyNkZWZpbmUgREVGX0xFTkdUSF9DT01QQVJFKG5hbWUsIGFy aXRoX29wLCBsb29wX29wLCBsb29wX3JldCwgZmluX29wKVwKK3N0YXRpYyBMaXNwX09iamVjdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorbmFtZSAoTGlzcF9P YmplY3QgczEsIExpc3BfT2JqZWN0IHMyKSAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgTGlzcF9PYmplY3QgdmFsID0gUW5pbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgIENIRUNLX05VTUJFUl9PUl9GTE9BVF9DT0VSQ0VfTUFSS0VS IChzMSk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBpZiAoX19idWlsdGluX2V4cGVj dCAoRkxPQVRQIChzMSksIDApKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg IHMyID0gRmxlbmd0aChzMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgdmFsID0gYXJpdGhjb21wYXJlIChzMSwgczIsIGFyaXRoX29wKTsgICAgICAgICAg ICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpbnRwdHJfdCBuID0gWElO VCAoczEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGludHB0cl90 IGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg Rk9SX0VBQ0hfVEFJTCAoczIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICArK2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgIGlmIChpIGxvb3Bfb3AgbikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBsb29wX3JldCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgQ0hFQ0tfTElT VF9FTkQgKHMyLCBzMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBp ZiAoaSBmaW5fb3AgbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgdmFsID0gUXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgcmV0dXJuIHZhbDsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCitERUZfTEVOR1RIX0NPTVBBUkUg KGxlbmd0aF9CZXFsc2lnbiwgQVJJVEhfRVFVQUwsID4sIHJldHVybiB2YWw7LCA9PSkKK0RFRl9M RU5HVEhfQ09NUEFSRSAobGVuZ3RoX0JndHIsIEFSSVRIX0dSVFIsID49LCByZXR1cm4gdmFsOywg PCkKK0RFRl9MRU5HVEhfQ09NUEFSRSAobGVuZ3RoX0Jsc3MsIEFSSVRIX0xFU1MsID4sCisJCSAg ICB7CisJCSAgICAgIGlmICghIENPTlNQIChzMikpCisJCQlDSEVDS19MSVNUX0VORCAoczIsIHMy KTsKKwkJICAgICAgcmV0dXJuIFF0OworCQkgICAgfSwgJiYgMCAmJikKK0RFRl9MRU5HVEhfQ09N UEFSRSAobGVuZ3RoX0JsZXEsIEFSSVRIX0xFU1NfT1JfRVFVQUwsID49LAorCQkgICAgeworCQkg ICAgICBpZiAoISBDT05TUCAoczIpKQorCQkJQ0hFQ0tfTElTVF9FTkQgKHMyLCBzMik7CisJCSAg ICAgIHJldHVybiBRdDsKKwkJICAgIH0sICYmIDAgJiYpCitERUZfTEVOR1RIX0NPTVBBUkUgKGxl bmd0aF9CZ2VxLCBBUklUSF9HUlRSX09SX0VRVUFMLCA+LCByZXR1cm4gdmFsOywgPD0pCisKK3N0 YXRpYyBMaXNwX09iamVjdAorbGVuZ3RoX0JlcSAoTGlzcF9PYmplY3QgczEsIExpc3BfT2JqZWN0 IHMyKQoreworICBMaXNwX09iamVjdCB2YWwgPSBRbmlsOworCisgIGlmIChJTlRFR0VSUCAoczEp KQorICAgIHsKKyAgICAgIGludHB0cl90IG4gPSBYSU5UIChzMSk7CisgICAgICBpbnRwdHJfdCBp ID0gMDsKKyAgICAgIEZPUl9FQUNIX1RBSUwgKHMyKQorCXsKKwkgIGkrKzsKKwkgIGlmIChpID4g bikKKwkgICAgcmV0dXJuIHZhbDsKKwl9CisgICAgICBDSEVDS19MSVNUX0VORCAoczIsIHMyKTsK KyAgICAgIGlmIChpID09IG4pCisJdmFsID0gUXQ7CisgICAgfQorCisgIHJldHVybiB2YWw7Cit9 CisKK3N0YXRpYyB2b2lkCitsZW5ndGhfY29tcGFyZSAodW5zaWduZWQgY2hhciBjb25zdCAqUEVF SywgTGlzcF9PYmplY3QgKlRPUCwgaW50ICpvcCkKK3sKKyAgKm9wID0gKlBFRUsrKzsKKyAgTGlz cF9PYmplY3QgdjEgPSAqVE9QLS07CisgIHN3aXRjaCAoKm9wKQorICAgIHsKKyAgICBjYXNlIEJl cWxzaWduOgorICAgICAgKlRPUCA9IGxlbmd0aF9CZXFsc2lnbiAoKlRPUCwgdjEpOworICAgICAg YnJlYWs7CisKKyAgICBjYXNlIEJndHI6CisgICAgICAqVE9QID0gbGVuZ3RoX0JndHIgKCpUT1As IHYxKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBCbHNzOgorICAgICAgKlRPUCA9IGxlbmd0 aF9CbHNzICgqVE9QLCB2MSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgQmxlcToKKyAgICAg ICpUT1AgPSBsZW5ndGhfQmxlcSAoKlRPUCwgdjEpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNl IEJnZXE6CisgICAgICAqVE9QID0gbGVuZ3RoX0JnZXEgKCpUT1AsIHYxKTsKKyAgICAgIGJyZWFr OworCisgICAgY2FzZSBCZXE6CisgICAgY2FzZSBCZXF1YWw6CisgICAgICAqVE9QID0gbGVuZ3Ro X0JlcSAoKlRPUCwgdjEpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgKm9w ID0gKi0tUEVFSzsKKyAgICAgICsrVE9QOworICAgICAgKlRPUCA9IEZsZW5ndGggKCpUT1ApOwor ICAgIH0KK30KLS0gCjIuMTIuMAoK --b1_95528651dd425653034a4146e644db08--