From unknown Sat Aug 16 23:40:22 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#69385 <69385@debbugs.gnu.org> To: bug#69385 <69385@debbugs.gnu.org> Subject: Status: 30.0.50; Long lines with bidi text slow down Emacs Reply-To: bug#69385 <69385@debbugs.gnu.org> Date: Sun, 17 Aug 2025 06:40:22 +0000 retitle 69385 30.0.50; Long lines with bidi text slow down Emacs reassign 69385 emacs submitter 69385 Stephen Berman severity 69385 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 11:25:20 2024 Received: (at submit) by debbugs.gnu.org; 25 Feb 2024 16:25:20 +0000 Received: from localhost ([127.0.0.1]:57212 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHJW-00030l-Ny for submit@debbugs.gnu.org; Sun, 25 Feb 2024 11:25:20 -0500 Received: from lists.gnu.org ([209.51.188.17]:57366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHHw-0002vg-98 for submit@debbugs.gnu.org; Sun, 25 Feb 2024 11:23:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reHHX-0000N6-5q for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 11:23:15 -0500 Received: from mout.gmx.net ([212.227.15.19]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reHHV-0008Bj-KG for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 11:23:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708878192; x=1709482992; i=stephen.berman@gmx.net; bh=hNxwrr5Pyb0dnNdo6gIKBhyQQ4kLl12SVhsrsuZZ+TE=; h=X-UI-Sender-Class:From:To:Subject:Date; b=WHoWh05B213ESQKCK3QJtajhY3+WDVXYsPCx1dXF/S/21dCXvebt6En/5NFYn6GK 3IGsyXIYS0fIb0uPJLSNMA5DvlbZQ467XbephLuytAaMC6XS8IVAAYG+gkHb9oem1 mr0aib4xWEnXol/qusfwQgc/hatCarBXNfov6kBS31/1jfLOo0LHPAvva4L6Ymjry kuDkeXGvgOlZjZHLqY7d79dmSwpcKJkVIAkIaVAIew/xKIf8o1lkZ5f+dWky8tfK1 kBdAlQRMWexVE82xAbw8P2sU0EBkc6pUXmf3h9m7jpzIhhfTa/IOrOVqvJJ0DIwRP bEE+KtoB+iQdUr7/oA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M3UUy-1rdjJd3ssk-000epq for ; Sun, 25 Feb 2024 17:23:11 +0100 From: Stephen Berman To: bug-gnu-emacs@gnu.org Subject: 30.0.50; Long lines with bidi text slow down Emacs X-Debbugs-Cc: Date: Sun, 25 Feb 2024 17:23:11 +0100 Message-ID: <878r381pjk.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:YQz+LgOaExCCyjHmAkA3AIwPPzlrMXtgPGZCYY7/mRkJZS7KRhJ lC1b1sFE1J/4lJr9mkdAKVerBTHt9LJ0UtV5ffhIzIFXWWvMed2f2cT+tb0ZHkDW+Vs0uOi kBdDiVmWW44e3Xcq3AhhWIrKf4A/n9UQPaQIzsZeghxfnAu/rDXWyHtPstkQPMIuJCkcnqZ wurGj8HKmIdZGXATi56MQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:eojok50pItM=;XlWyxlfcUTLedaSW6ZiXDEfQG2i Gd8arKydbvDQ2Si2DEbsQVwFwCy1fz2xdy+dbV6n0OPDTovZdqQqEjrgVCaZ2NI3WOSUit72n IPZQ8oMrRQjXtt4c/m8rtr5VNQcRFGRT5uqyzvyDeuAx7QcV3teEFdTNL3M9vgsj5waIzBxBV 6fgiBV5+bnXRaMWNK4KL3E4DoMR9UI2KzPqCHLyeWL4QDjQmbSs+1wK2hhAug3s2CHeOnpCGG 3xmry2VeLWVl59SKNxu3IP/fHuxxCbtytDPnNK88TyUZZX94jHh6ER/+9Gn97kaOhgL12vkom 1Z050Z4rUV12enEGPiPp+RZ6PF0BdFQl41qFZHxjKhmr8tKc+N0xHz5LvBYDhKlMT5DByhlJM OP+HOiTvl3dvEGZQU3V0Nmi6Giakjodqz8HL9+kZlwuzW/tRreNo/dgbRvuUG6Mmidc1G+fzq 7S8DEUwAsRfRmLDNnJ7blEHqwJ8NJaFLRlZexyxPy+kCII+OuWhpWfyrovv4tID3kqXEvnY5z NJazGAJmoznA54D/mZwss3Qcy5SB031pUgb192RWMZNMeusNi9+R+7rvOY2Ib6hHkMPj6i3j1 1aHlEJRR9OFh3mBLTVQZPyh05cOIb7W7GNxOjCakwFUpTLrhVgtpPvtJk0pd/TO9T2ot5EcD4 LACc3SXhmCWmqMtXbnC7pj13hzoz608ufrKB7ZiVqPnxTEE8vi5sfaI2WvooNhtlNep3wpHt0 22h+ffIQQliTcd4YZs4vWwMv5huBl+aUnv87ZZJZnM6JlbsE3Pes1V+kyzNX6breyi0/WYazr Tm1LxC1Gyg8XUp3KJWv24waPs73VlKpuZRgbzc7K0UPW8= Received-SPF: pass client-ip=212.227.15.19; envelope-from=stephen.berman@gmx.net; helo=mout.gmx.net X-Spam_score_int: 5 X-Spam_score: 0.5 X-Spam_bar: / X-Spam_report: (0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SBL_CSS=3.335, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 4.2 (++++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Displaying a buffer that contains a long line with bidirectional text greatly slows down Emacs. A simple reproduction is to copy the the Arabic example from etc/HELLO (`C-h h'), yank it into a buffer [...] Content analysis details: (4.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) -0.0 T_SCC_BODY_TEXT_LINE No description available. 2.0 SPOOFED_FREEMAIL No description available. X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Displaying a buffer that contains a long line with bidirectional text greatly slows down Emacs. A simple reproduction is to copy the the Arabic example from etc/HELLO (`C-h h'), yank it into a buffer [...] Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [209.51.188.17 listed in list.dnswl.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager Displaying a buffer that contains a long line with bidirectional text greatly slows down Emacs. A simple reproduction is to copy the the Arabic example from etc/HELLO (`C-h h'), yank it into a buffer (fundamental-mode suffices), add " Hello ", and then create a single line consisting of a large number of copies of these strings; on my machine 500 copies clearly shows the slowdown, and with 800 copies it is much worse. There is no slowdown with a line of the same length consisting only of RTL or only of LTR text, nor with the above test line when bidi-display-reordering is set to nil in the buffer (but then, of course, the Arabic is not displayed correctly). It seems that the long line optimizations added to Emacs 29 do not work with bidirectional text. (FTR, I encountered this issue with a program of mine that generates Emacs Lisp files containing such long lines with bidirectional text. These files are not intended for display but I was examining one and experienced the slowdown.) In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.18.0) of 2024-02-20 built on strobelfs2 Repository revision: d9afa1f30fdf9d00b447fea0a8343397333e172f Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101009 System Description: Linux From Scratch r12.0-112 Configured using: 'configure -C --with-xwidgets 'CFLAGS=-Og -g3' PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM XWIDGETS GTK3 ZLIB From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 12:25:20 2024 Received: (at 69385) by debbugs.gnu.org; 25 Feb 2024 17:25:20 +0000 Received: from localhost ([127.0.0.1]:32808 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reIFc-0005rV-B7 for submit@debbugs.gnu.org; Sun, 25 Feb 2024 12:25:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:59904) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reHyL-00053W-LV for 69385@debbugs.gnu.org; Sun, 25 Feb 2024 12:07:30 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reHxr-00020k-2I; Sun, 25 Feb 2024 12:06:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=zSJxns/J/Dhv1A+rC4x09niRjs3dQKx3begGZwpmhvs=; b=hPY5+hVVsdaV 3ZSjguy/EZDmKcqb59kj3hO4PzKdtENsWZJYflMvK4phibEVdGxsvTELw7v183mhKqIFsDyf19j+7 XSEEUT7VzELkx9SkXiFw60l7x0r0laai1KrB8bpgyAZssT+vtKzUxNsXtpCVSC8M56vBTJZzQ2w7c Tcq138r/TBMsMvVjQgUm4Q/FZik39jiewpUrCaSaSqgQVXAwPDJNSwEe47Is4lFi5MMYTnwhQkgKI DHHBLfukdIY+Dgi2CZoFvm32GsRbXZMYoS0bBMN+IghugwVEFKtB+lwR4XRVD7VdKOwDeGx8AwY9L kLVP7nEhGXMV1i8yUSW/VQ==; Date: Sun, 25 Feb 2024 19:06:55 +0200 Message-Id: <86msrowk0g.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <878r381pjk.fsf@gmx.net> (bug-gnu-emacs@gnu.org) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sun, 25 Feb 2024 17:23:11 +0100 > From: Stephen Berman via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" > > Displaying a buffer that contains a long line with bidirectional text > greatly slows down Emacs. A simple reproduction is to copy the the > Arabic example from etc/HELLO (`C-h h'), yank it into a buffer > (fundamental-mode suffices), add " Hello ", and then create a single > line consisting of a large number of copies of these strings; on my > machine 500 copies clearly shows the slowdown, and with 800 copies it is > much worse. It is not clear what exactly constitutes a slow-down in this recipe. You describe how to create a test buffer, but not what you do afterwards to demonstrate slow-down. Please fill the gaps. FTR, I tried C-f/C-b (no perceptible slow-down), C-v/M-v (likewise), and C-n/C-p (no slow-down at the beginning of buffer, considerable slow-down near the end: about 0.5 to 0.8 sec response time -- but this is a non-optimized build; your optimized build should see about 0.1 sec to 0.2 sec). Is this what you see? If not, please tell what did you do and what did you see, and please describe it in detail and with timings if possible. > There is no slowdown with a line of the same length consisting only of > RTL or only of LTR text, nor with the above test line when > bidi-display-reordering is set to nil in the buffer (but then, of > course, the Arabic is not displayed correctly). That's not what I see: setting bidi-display-reordering to nil doesn't affect the slow-down on my system in any perceptible way. > It seems that the long line optimizations added to Emacs 29 do not > work with bidirectional text. Long line optimizations don't kick in until the lines are longer than the value of long-line-threshold, by default 50000 characters. Since 800 copies of the Arabic greeting don't reach that threshold, the optimizations are not in effect at all in this case. > (FTR, I encountered this issue with a program of mine that generates > Emacs Lisp files containing such long lines with bidirectional text. > These files are not intended for display but I was examining one and > experienced the slowdown.) If your real-life cases are all with Arabic text, then the reason is likely not bidirectional reordering of RTL text by itself (although it does slow down redisplay to some degree), but the fact that all of the Arabic text gets shaped by HarfBuzz via composition-function-table, which involves calls from the C code of the display engine into Lisp, which then turns and calls back into C. This is relatively slow, but we have no choice: Arabic shaping requires that all Arabic characters be handed to the shaping engine for rendering, otherwise the display will either be illegible for Arabic speakers or at least look ugly in their eyes. For now, I see no bugs here. Maybe if you tell more we will arrive at something that is a real problem, but what I've read and saw until now is what I would expect in these cases. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 13:03:59 2024 Received: (at 69385) by debbugs.gnu.org; 25 Feb 2024 18:03:59 +0000 Received: from localhost ([127.0.0.1]:35350 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reIr0-0007oy-TA for submit@debbugs.gnu.org; Sun, 25 Feb 2024 13:03:59 -0500 Received: from mout.gmx.net ([212.227.17.20]:43989) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reIqy-0007oV-Fk for 69385@debbugs.gnu.org; Sun, 25 Feb 2024 13:03:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708884205; x=1709489005; i=stephen.berman@gmx.net; bh=2HjBl/JHQCZoKDB/OgQFpO19uG0AreP5UcSrxV4T6s8=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=XqBTwrNeLp53CFN6W3rGSkVFzpTpQpVJZvJbSMhbgjNOGYZ6R7dZkHaaIORDbti5 VvSwLKgV1K0KewIUZhHR57xBOtnBQUJ24sKg+3uobQbXRt2WzZO+xjlZ3me4f6f5s ARMUgMuF+lm8s1z2DtkX0jfWIvUWCI1TRUhaHb4r4W2R4Tzf9IeNaJS5Lj6iEOA0L oDOpT86jRZPLK+rt5rgb2zObU5zWFrnMVubYBuJhOTgNk4PD9jm15U0c1hupU8adU 1eQymb+4tS0aQa+hpI3gSMd4wJGE5nN3PtTCYBSKE6RQlM9c7pl7rFVXgM8S8c2ah FwByB1NT15sAQGOhIw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N9Mtg-1qszZx16SS-015LtZ; Sun, 25 Feb 2024 19:03:25 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86msrowk0g.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 25 Feb 2024 19:06:55 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> Date: Sun, 25 Feb 2024 19:03:24 +0100 Message-ID: <87zfvozaj7.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:moKfRDD42WGra31jzAosD/dUMkKrzTRLmISZ844Voz66jDClpQH 6pjbm+v77Xl+w7Dbkkv8UDvtavFrmxmNu35UhmoERoXlRoZXuyDxtX7w66piy+r0A3rVPt2 sHWa8oYBGlAoesOU3qaplS6z1nP7qCWj1DgGO6X0dVPHS7sX1Hm3gLd1N4lS5Ws15oG7pYt ZBgz+HT4mAUXyZcQZFoTw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:1xZFKul1Aho=;KOjlHoErzAk5Ds9Dbnvy2iNaQ0T A/QC5Gh6hnYC9vbaR1FQBC+8XwdyOSHUSC6WvQnVlyXocrfCAD/mwjskYGIL/Oq/zZ39oRROb yu7/OxmOS1VriQtBfy5gWX97vpSUXO1AC9Kva4uWzE1ANo0LKV6QQJCX+hqn+bKCqu1fvHO7j basxm6E/tdCFdfcro+h5X90n46H5MXmzWOVcNNPWtCkkITmzPBro7UMINmZjthYUm4zOPehjB 07I1VhzQvcBj5TJe1577gQiEHY05Ogbq1ZnplxB+CT8Nld4VNeD2GB9gf/k0C6DKAYyQxoc97 smtFCSwE20xhB3Ic3ffAM5uzaDOcp8AS2SJJs1XNKUe3fpTnu9I8Up5231gic8c297tSQBg93 8CYWFiScPvxsn90Phbu7NbNs7IiPJTr+9KyFga+YQph8bi8riLwhwRJxj+grDGS8gqvk19tWO QIFZmUhOfQ/EyxnwqF+gIu3tLQOwkbzwNKKGA3xYovanwA9e87C31LDU/Qjn6TE2IVvQ1AtPJ Rq+3S9eBICVYWTXzu+/IKoc4FQY4PBal5icKOAUP3mJEBvmg52lMDUHDqwlaycUwy5lH0Qd0L IdUzoOapUWEP1lmnBcYfOelz9fEDYtHLBxV32iJ2l2JJOonJiAdsZOxTcMcoqBflYoCQ2g8J9 atXORHn+VQV+4CubMhYwMyF6QQlkrBARWeH8tdZqmMVoNzfHF7tw6d8a0pHEVfoHMs9oJwjga 3JdeVLxHQJJI3g8MmSNbUZSEUmnJ3QvkSplE7Pk5E1CUWR1lFGnlM65GNC3P2NDndJLFUNqeR VxwZBKlqi22L870J/LLKmVYi2E1jC98VjpTUFs7GlRy4Y= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Sun, 25 Feb 2024 19:06:55 +0200 Eli Zaretskii wrote: >> Date: Sun, 25 Feb 2024 17:23:11 +0100 >> From: Stephen Berman via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> Displaying a buffer that contains a long line with bid [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Sun, 25 Feb 2024 19:06:55 +0200 Eli Zaretskii wrote: >> Date: Sun, 25 Feb 2024 17:23:11 +0100 >> From: Stephen Berman via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> Displaying a buffer that contains a long line with bid [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Sun, 25 Feb 2024 19:06:55 +0200 Eli Zaretskii wrote: >> Date: Sun, 25 Feb 2024 17:23:11 +0100 >> From: Stephen Berman via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> Displaying a buffer that contains a long line with bidirectional text >> greatly slows down Emacs. A simple reproduction is to copy the the >> Arabic example from etc/HELLO (`C-h h'), yank it into a buffer >> (fundamental-mode suffices), add " Hello ", and then create a single >> line consisting of a large number of copies of these strings; on my >> machine 500 copies clearly shows the slowdown, and with 800 copies it i= s >> much worse. > > It is not clear what exactly constitutes a slow-down in this recipe. > You describe how to create a test buffer, but not what you do > afterwards to demonstrate slow-down. Please fill the gaps. > > FTR, I tried C-f/C-b (no perceptible slow-down), C-v/M-v (likewise), > and C-n/C-p (no slow-down at the beginning of buffer, considerable > slow-down near the end: about 0.5 to 0.8 sec response time -- but this > is a non-optimized build; your optimized build should see about 0.1 > sec to 0.2 sec). Is this what you see? If not, please tell what did > you do and what did you see, and please describe it in detail and with > timings if possible. The first thing I tried, with both 500 and 800 copies, is M-> from point-min: with 500 it took ~4 seconds, with 800 ~10 seconds, and each time Emacs used 100% of one core for the duration (my machine has an i7-8700 processor with 6 cores/12 threads). After that even just invoking commands like `C-x 1' or `M-x' and entering something in the minibuffer shows a noticeable delay (several seconds) and 100% CPU. When I typed `C-n' at point-min in the 500 copy buffer and held down the key till the cursor froze, it took about a minute until it moved again (to point-max), during which the core used by Emacs stayed at 100%. >> There is no slowdown with a line of the same length consisting only of >> RTL or only of LTR text, nor with the above test line when >> bidi-display-reordering is set to nil in the buffer (but then, of >> course, the Arabic is not displayed correctly). > > That's not what I see: setting bidi-display-reordering to nil doesn't > affect the slow-down on my system in any perceptible way. Very strange: here, after setting bidi-display-reordering to nil, M-> and M-< are practically instantaneous and even holding down C-n or C-p traverses the entire buffer in a couple of seconds, with just a bit of stuttering. >> It seems that the long line optimizations added to Emacs 29 do not >> work with bidirectional text. > > Long line optimizations don't kick in until the lines are longer than > the value of long-line-threshold, by default 50000 characters. Since > 800 copies of the Arabic greeting don't reach that threshold, the > optimizations are not in effect at all in this case. Ah, ok. Then this is a different long-line issue. >> (FTR, I encountered this issue with a program of mine that generates >> Emacs Lisp files containing such long lines with bidirectional text. >> These files are not intended for display but I was examining one and >> experienced the slowdown.) > > If your real-life cases are all with Arabic text, then the reason is > likely not bidirectional reordering of RTL text by itself (although it > does slow down redisplay to some degree), but the fact that all of the > Arabic text gets shaped by HarfBuzz via composition-function-table, > which involves calls from the C code of the display engine into Lisp, > which then turns and calls back into C. This is relatively slow, but > we have no choice: Arabic shaping requires that all Arabic characters > be handed to the shaping engine for rendering, otherwise the display > will either be illegible for Arabic speakers or at least look ugly in > their eyes. I created a test buffer with 800 copies of the Hebrew HELLO text concatenated with " Hello " and found similar slowdowns with M-> and C-n as with the Arabic text. IIUC displaying the Hebrew script does not involve text shaping, or does it? > For now, I see no bugs here. Maybe if you tell more we will arrive at > something that is a real problem, but what I've read and saw until now > is what I would expect in these cases. I can try other tests if you can suggest any you think will help. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 14:31:56 2024 Received: (at 69385) by debbugs.gnu.org; 25 Feb 2024 19:31:56 +0000 Received: from localhost ([127.0.0.1]:41880 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reKE7-0003s1-RE for submit@debbugs.gnu.org; Sun, 25 Feb 2024 14:31:56 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54158) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reKE5-0003rg-NV for 69385@debbugs.gnu.org; Sun, 25 Feb 2024 14:31:54 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reKDb-0001Xg-6v; Sun, 25 Feb 2024 14:31:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=HvrZWXPcYqKZcnc1URy4/Vm0DrrJ6kw8Ss/JCVMZUY8=; b=OuLAR8wFU5HN qkOJ0nXWyUdY+7CraZqVI9v/YbogI5Jhx3hLQwRB3+gzbsR3IXS/CKEZNX2TZv3X6wgFn4fXAJ/M1 R0gMQCJ0YlTQ9HaB8YQqQnNquKQ9olB7GAqv0wRXZB525us1t2UsPe9RNnkmy8GOFOM7fFZztwBw8 P6mQguvec/KnCT1veszBQRqlSlbLw5Z99ZKIN442DxrE6wGGnWD9wb0IYURsUpZ6lI4JTPD5K+waN NpTSj2lM8SnOmk2F5xikXbTEn10jNxBeHTp632OyRbwI2+KPNEu2gWKUvdeVVqEgMZAj8yrW5dMfV KuENFSNbspFWP40msCINEQ==; Date: Sun, 25 Feb 2024 21:31:19 +0200 Message-Id: <86edd0wdbs.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87zfvozaj7.fsf@gmx.net> (message from Stephen Berman on Sun, 25 Feb 2024 19:03:24 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Sun, 25 Feb 2024 19:03:24 +0100 > > The first thing I tried, with both 500 and 800 copies, is M-> from > point-min: with 500 it took ~4 seconds, with 800 ~10 seconds, and each > time Emacs used 100% of one core for the duration (my machine has an > i7-8700 processor with 6 cores/12 threads). After that even just > invoking commands like `C-x 1' or `M-x' and entering something in the > minibuffer shows a noticeable delay (several seconds) and 100% CPU. > When I typed `C-n' at point-min in the 500 copy buffer and held down the > key till the cursor froze, it took about a minute until it moved again > (to point-max), during which the core used by Emacs stayed at 100%. To make sure we are testing the same: what is the value of point-max in that buffer? I see something around 30k characters after making 800 copies. > >> There is no slowdown with a line of the same length consisting only of > >> RTL or only of LTR text, nor with the above test line when > >> bidi-display-reordering is set to nil in the buffer (but then, of > >> course, the Arabic is not displayed correctly). > > > > That's not what I see: setting bidi-display-reordering to nil doesn't > > affect the slow-down on my system in any perceptible way. > > Very strange: here, after setting bidi-display-reordering to nil, M-> > and M-< are practically instantaneous and even holding down C-n or C-p > traverses the entire buffer in a couple of seconds, with just a bit of > stuttering. Then I don't know what is going on. Maybe you have a very weak CPU or something? Or maybe your version of HarfBuzz is somehow much slower? Just to be sure: this is in "emacs -Q", and you see the same with many different fonts used for Arabic, not just with a few of them? > > If your real-life cases are all with Arabic text, then the reason is > > likely not bidirectional reordering of RTL text by itself (although it > > does slow down redisplay to some degree), but the fact that all of the > > Arabic text gets shaped by HarfBuzz via composition-function-table, > > which involves calls from the C code of the display engine into Lisp, > > which then turns and calls back into C. This is relatively slow, but > > we have no choice: Arabic shaping requires that all Arabic characters > > be handed to the shaping engine for rendering, otherwise the display > > will either be illegible for Arabic speakers or at least look ugly in > > their eyes. > > I created a test buffer with 800 copies of the Hebrew HELLO text > concatenated with " Hello " and found similar slowdowns with M-> and C-n > as with the Arabic text. IIUC displaying the Hebrew script does not > involve text shaping, or does it? For the text in HELLO yes, it does: there are diacriticals (so-called "niqqud") there. But not all of the Hebrew text goes through the shaper, only the combinations with diacriticals, so it should be somewhat faster. And if you remove the diacriticals, Emacs will not use HarfBuzz at all for Hebrew. > > For now, I see no bugs here. Maybe if you tell more we will arrive at > > something that is a real problem, but what I've read and saw until now > > is what I would expect in these cases. > > I can try other tests if you can suggest any you think will help. I don't know what to suggest, because I see something very different, and have never seen what you describe. The only idea I have is to run this under perf, but interpreting the results is not easy. Can someone else reproduce Stephen's results? I'm quite surprised by what he describes, TBH. That's not the performance of the Emacs bidirectional display I'm used to see. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 25 15:40:21 2024 Received: (at 69385) by debbugs.gnu.org; 25 Feb 2024 20:40:21 +0000 Received: from localhost ([127.0.0.1]:46910 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reLIK-0007IN-Pc for submit@debbugs.gnu.org; Sun, 25 Feb 2024 15:40:21 -0500 Received: from mout.gmx.net ([212.227.15.19]:48761) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reLFO-0007A9-CQ for 69385@debbugs.gnu.org; Sun, 25 Feb 2024 15:37:19 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708893407; x=1709498207; i=stephen.berman@gmx.net; bh=iWynxYO70pQxxdvwDru5jUPJd2OrSpgGjWa5TzeCKWI=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=Vj3RzOsz2v7U7v2w+H1edBBBaTjP9DDm00nFaRUanhWo9L485ohKBTuUWAWRp9Qg x2ewseLc0f2V1UNXyNrT8GNdrA0/7GAoZ/0yjVo0IE7C0el2EKV0QD2byF3Wam1pe oigSgFIHr3iPRWi2ZF71vcjv/36xydJQySGJIBbKyEHU1TcZP9uN1JqwqgE7T49Bc l25v9ivQkqM694pgwVCiERMJM0KPCcwey55eLcpBE06enKBXZpREQHP286RGd/5Fw vac2CfBfJO/OQA0p8o5i/fpEMU2ysoapC+VCYuYoz8sefSyQDydo5hJp6gKhCB4wv C8epwhXrbDp8gOPyZA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MvK4Z-1qnCYQ0do9-00rFym; Sun, 25 Feb 2024 21:36:47 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86edd0wdbs.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 25 Feb 2024 21:31:19 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> Date: Sun, 25 Feb 2024 21:36:46 +0100 Message-ID: <87r0h0z3fl.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:wvDa+vGH+2qa5yyrg9x6Fm1edOCSM9FYJO2l0eRgvcxg/1HSngF kU5D4Znb4cWwzkf70Omp95Z+Mzl7MpBD7oJUQ9MwpspLhXzH+IQkN4z/sFL5s6CoUtNsMhg J/K7KfpWJfsCc6qatxcdGcQxb/lifoaVGXSJ5VpmLO/bwDYBO47xlQRfpgO0pWIDh0jItDB sF5o2AKShdWFZM3NuVktQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:2nKZ1RS0658=;JMsYOz8Y1toQe4IORmDvSAA+yMa kktjOsczvA68ygcUSNabpuhxxQ26VzryEyToy6nKQBx1Usk3pc7dgM86gz+aUxcw0A4P8dOFz /odDUWKhH6Dz4S1rNVyQ9MsT6DzZFhC5u9qEcwv3otq1sUWnXHxsx7yJ8SI7+vJpvSDA8FMRG 9g+yhBVFm2sQ+XlOxqNLy0sWprfBVzpYYGZJi1EHTDAeux40lDTL908p1WfIIMwc9HvI4Tpj4 No166ZwVdO0ko6xKVYSigcFQY0cB1V2S+qmOvj57df7XfX3pIT+H60OeqNPtumE/F4Sg7dvu4 GLZGx3e+OWDpU4F6H9Y5/Gprk/r2I7SNYcpKRqeiSTQpBDC06IxBAL1hqg36MeMq0E/4FP3Fr auS01H1l8HqItfTChk8lGYGik4FmD7ufmWOpvbbtgp0kjIN9rAbHoS8RjKSQK3p+N9q6BwF84 Sj8QP5NzZ42ds1dcoVvOR5vFsCngStJ4p2A37nNcS99B9r5TZVBadwfU28ns+wyxzWPMV273L WsIun7f7Y2kyhtqBsnRZQg61uQYjzdlW1TQAc0gE8k9uQER93ApIxzB066/wvwnMAg1chYZWV Rz+fMhdC6FXfrCLyT7PJn9JZ2/Cjg9ZnVbTejWc7bEhtVoKKqKmBKBHGt34UwkEXhgmzV1e+Y 1CqM+u4U+rrD7eMRN4k0yYdUUBjbVTzaSFECtebd8boEtNhdpK7b44Yq87xLbdycvnPlBB3oi 5alhYoEzlXOIQMT4Pq2SGs360Ft2lmhX+vMxyLhkDqbAt9rjWllbCWGovDJzC1OdBHwylJqe/ 4aIR/VJAI8qOB4fc+Mp8XPjGLeGWlVIw0ncR30cSR8mNc= X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Sun, 25 Feb 2024 21:31:19 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:03:24 +0100 >> >> The first thing I tried, with both 500 and 800 copies, is M-> from >> point-min: with 500 it took [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [212.227.15.19 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.9 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Sun, 25 Feb 2024 21:31:19 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:03:24 +0100 >> >> The first thing I tried, with both 500 and 800 copies, is M-> from >> point-min: with 500 it took [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.19 listed in list.dnswl.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.138 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [212.227.15.19 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Sun, 25 Feb 2024 21:31:19 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:03:24 +0100 >>=20 >> The first thing I tried, with both 500 and 800 copies, is M-> from >> point-min: with 500 it took ~4 seconds, with 800 ~10 seconds, and each >> time Emacs used 100% of one core for the duration (my machine has an >> i7-8700 processor with 6 cores/12 threads). After that even just >> invoking commands like `C-x 1' or `M-x' and entering something in the >> minibuffer shows a noticeable delay (several seconds) and 100% CPU. >> When I typed `C-n' at point-min in the 500 copy buffer and held down the >> key till the cursor froze, it took about a minute until it moved again >> (to point-max), during which the core used by Emacs stayed at 100%. > > To make sure we are testing the same: what is the value of point-max > in that buffer? I see something around 30k characters after making > 800 copies. With 800 repetitions of the Arabic text from etc/HELLO ("=D8=A7=D9=84=D8=B3= =D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9=83=D9=85") concatenated with " Hello " with no newlines, point-max is 16001. So the length of the whole line is 16000 characters, and for the initial string " Hello =D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9= =8A=D9=83=D9=85", M-=3D returns 20, so for 800 copies point-max is what I would expect. Do the Arabic characters in your font occupy two columns each? If the string I've tested is indeed that much shorter than what you've test, it's even more mysterious that I see such a slowdown and you don't... >> >> There is no slowdown with a line of the same length consisting only of >> >> RTL or only of LTR text, nor with the above test line when >> >> bidi-display-reordering is set to nil in the buffer (but then, of >> >> course, the Arabic is not displayed correctly). >> > >> > That's not what I see: setting bidi-display-reordering to nil doesn't >> > affect the slow-down on my system in any perceptible way. >>=20 >> Very strange: here, after setting bidi-display-reordering to nil, M-> >> and M-< are practically instantaneous and even holding down C-n or C-p >> traverses the entire buffer in a couple of seconds, with just a bit of >> stuttering. > > Then I don't know what is going on. Maybe you have a very weak CPU or > something? Or maybe your version of HarfBuzz is somehow much slower? My CPU is Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz, certainly not superfast but not superslow either, e.g. bootstrapping Emacs (without native compilation) takes just a few minutes (with native compilation it's a couple of minutes longer). My HarfBuzz is version 8.3.0. > Just to be sure: this is in "emacs -Q", and you see the same with many > different fonts used for Arabic, not just with a few of them? Yes, this is with -Q. The only fonts I've tried are Noto Naskh Arabic, DejaVu Sans, and Amiri. I'm not sure whether any other fonts I have installed support Arabic (I only have 294 fonts installed). >> > If your real-life cases are all with Arabic text, then the reason is >> > likely not bidirectional reordering of RTL text by itself (although it >> > does slow down redisplay to some degree), but the fact that all of the >> > Arabic text gets shaped by HarfBuzz via composition-function-table, >> > which involves calls from the C code of the display engine into Lisp, >> > which then turns and calls back into C. This is relatively slow, but >> > we have no choice: Arabic shaping requires that all Arabic characters >> > be handed to the shaping engine for rendering, otherwise the display >> > will either be illegible for Arabic speakers or at least look ugly in >> > their eyes. >>=20 >> I created a test buffer with 800 copies of the Hebrew HELLO text >> concatenated with " Hello " and found similar slowdowns with M-> and C-n >> as with the Arabic text. IIUC displaying the Hebrew script does not >> involve text shaping, or does it? > > For the text in HELLO yes, it does: there are diacriticals (so-called > "niqqud") there. But not all of the Hebrew text goes through the > shaper, only the combinations with diacriticals, so it should be > somewhat faster. And if you remove the diacriticals, Emacs will not > use HarfBuzz at all for Hebrew. Ok, I repeated the test with Hebrew without niqqud ("=D7=A9=D7=9C=D7=95=D7= =9D") and indeed, M-> and M-< are much quicker and even holding down C-n and C-p is quicker (it does freeze, but unfreezes more quickly). So it seems the bottleneck really is the shaping. >> > For now, I see no bugs here. Maybe if you tell more we will arrive at >> > something that is a real problem, but what I've read and saw until now >> > is what I would expect in these cases. >>=20 >> I can try other tests if you can suggest any you think will help. > > I don't know what to suggest, because I see something very different, > and have never seen what you describe. The only idea I have is to run > this under perf, but interpreting the results is not easy. I've never used perf, and don't even have it installed (I build the kernel myself but I haven't built perf, but I could do that -- though probably not in the very short term -- if it might be helpful). > Can someone else reproduce Stephen's results? I'm quite surprised by > what he describes, TBH. That's not the performance of the Emacs > bidirectional display I'm used to see. I also hope others chime in. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 07:36:05 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 12:36:05 +0000 Received: from localhost ([127.0.0.1]:60904 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reaDE-0001gl-MH for submit@debbugs.gnu.org; Mon, 26 Feb 2024 07:36:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:60364) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reaDD-0001g9-Ed for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 07:36:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reaAc-0000EN-Nd; Mon, 26 Feb 2024 07:33:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=v0q+un3WPKL0WaF3obNeizsE8OcUXICgX+F1fvA12V8=; b=LqasE+AxBzQHliLXePND mfiI5X8WZ9AEfIrw7PKufRZD8l07U80E8e19YMj39uEWVYfh7N9FyvSrbMHG3owuWN2O0r7I7C3O7 sTPPmydsy1GanOXesUz+rHyprk4lcvqbFViU2vC5BAAg0oVI2vMjhuyazIUTDa4fZFnMCPqMPySM0 wyZuqZ7kJYKMqCfLfEdZnjym6oA5758bs/u7ANKOhHeQ3rOtsJCpY5Ddrh0zQmS09wEfWrQoaNpc8 GhAyFvbyPCTYMzfryXy/73xzJoVvZcFVh6t8MnKR10oE/IHhLL2jYrP3xzbyh/uO0IZPL6MXeGWnC +8z4CYhJlIyGOw==; Date: Mon, 26 Feb 2024 14:33:18 +0200 Message-Id: <868r37wgkx.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87r0h0z3fl.fsf@gmx.net> (message from Stephen Berman on Sun, 25 Feb 2024 21:36:46 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Sun, 25 Feb 2024 21:36:46 +0100 > > > To make sure we are testing the same: what is the value of point-max > > in that buffer? I see something around 30k characters after making > > 800 copies. > > With 800 repetitions of the Arabic text from etc/HELLO ("السّلام عليكم") > concatenated with " Hello " with no newlines, point-max is 16001. So > the length of the whole line is 16000 characters, and for the initial > string " Hello السّلام عليكم", M-= returns 20, so for 800 copies > point-max is what I would expect. Do the Arabic characters in your font > occupy two columns each? No (and it doesn't matter, since I measured characters, not columns). It's just that I copied more from the Arabic line than you did: everything starting from the beginning of line. Never mind, that. > If the string I've tested is indeed that much shorter than what > you've test, it's even more mysterious that I see such a slowdown > and you don't... Yes. > > Then I don't know what is going on. Maybe you have a very weak CPU or > > something? Or maybe your version of HarfBuzz is somehow much slower? > > My CPU is Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz, certainly not > superfast but not superslow either, e.g. bootstrapping Emacs (without > native compilation) takes just a few minutes (with native compilation > it's a couple of minutes longer). My HarfBuzz is version 8.3.0. The CPU is fast. My HarfBuzz version is much older, but I doubt that HarfBuzz became so much slower for Arabic. So it's very strange. But maybe it's worth to try downgrading to an earlier version, just to be sure this is not the culprit? > > Just to be sure: this is in "emacs -Q", and you see the same with many > > different fonts used for Arabic, not just with a few of them? > > Yes, this is with -Q. The only fonts I've tried are Noto Naskh Arabic, > DejaVu Sans, and Amiri. Should be enough to draw conclusions, I think. > Ok, I repeated the test with Hebrew without niqqud ("שלום") and indeed, > M-> and M-< are much quicker and even holding down C-n and C-p is > quicker (it does freeze, but unfreezes more quickly). So it seems the > bottleneck really is the shaping. If, after starting Emacs, you set all the entries of Arabic characters in composition-function-table to nil (e.g., using set-char-table-range), do you see significant speedup? From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 09:20:05 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 14:20:06 +0000 Received: from localhost ([127.0.0.1]:38960 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebpt-0007L8-29 for submit@debbugs.gnu.org; Mon, 26 Feb 2024 09:20:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45498) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebpq-0007KN-RY for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 09:20:03 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rebpM-0003WT-6B; Mon, 26 Feb 2024 09:19:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=cZqOxbAeUiIIsOjO4Q2QcOFET2XgujDTHdxpkKouTek=; b=kImkEmD0rWSy STZp97kRqBB6T7BC2T9RnvZCEZYT+ohH7Ky+025OBVqv5Tqdm+hx97Ska9zBDMadOriGuzJ28qxmU +QD8+TT5hddFLx54fTP5JWA+diu8oL/hSMstX91zX7YI7fNiPyHEcuBL0W1uwyCz3fr+1d+YFK/RQ 4c7qI5YqFOK6LMb9CcoDa8B1yEyIik3HOQ2Kmv3C3yur9qMlqtMCs7jdHwL0QHwCYZeKUtjE7+nkp DxK6ete5ARv1Aj8HbVqTtp82VDytJIS+y92zBhpzfpLWZ5n2BRsBC0ZGGZzNIbq1mJPM0/cxNLhHY VmTj2sP0QPxAMbo0w9UEww==; Date: Mon, 26 Feb 2024 16:19:15 +0200 Message-Id: <86v86bux3w.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87zfvnfh4d.fsf@gmx.net> (message from Stephen Berman on Mon, 26 Feb 2024 15:13:38 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 15:13:38 +0100 > > On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: > > > The CPU is fast. My HarfBuzz version is much older, but I doubt that > > HarfBuzz became so much slower for Arabic. So it's very strange. But > > maybe it's worth to try downgrading to an earlier version, just to be > > sure this is not the culprit? > > That's not so straightforward on this system, where I build system > packages from source, so downgrading HarfBuzz may require also > rebuilding packages that depend on it. I have a somewhat older system > on this machine with HarfBuzz 7.1.0, so I can easily try that. What > version of HarfBuzz are you using? I have 2.4.0 here. > > If, after starting Emacs, you set all the entries of Arabic characters > > in composition-function-table to nil (e.g., using > > set-char-table-range), do you see significant speedup? > > Yes, there is a noticeable speedup when M-> and C-v, M-v, and even > holding down C-n and C-p is faster, though they still freeze after a few > seconds, but the freeze doesn't last as long as when it happens with the > shaped Arabic script. Also, probably unsurprisingly, the speed after > disabling shaping is still much slower than keeping shaping enabled but > setting bidi-display-reordering to nil. Is this with text from HELLO, or with some other Arabic text? The prominent effect of bidi-display-reordering is actually surprising, and not what I see here, with or without shaping. Very strange. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 09:23:55 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 14:23:55 +0000 Received: from localhost ([127.0.0.1]:39197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebtb-0007Y8-5y for submit@debbugs.gnu.org; Mon, 26 Feb 2024 09:23:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:55586) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebtZ-0007Xm-HG for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 09:23:53 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rebt4-0004UH-Mr; Mon, 26 Feb 2024 09:23:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=YADbqo4kj7XKlKnuXnGKRYg2PtJOo0bV4nJGgdW7w8s=; b=CK/1gfYSio6D PEr+0g4PUDleCU/tbTn4MpK9dEN0I+edeiEcUn0N4OwRdu5XWZErtohFbEWG9TgKMri4BUJdltoFX N2ZmNW6VxRY98wMlp+qzQSqLKO7hDrdB9V6T3BJ1R4dfPYt5tLrUA5ApOZVyXtB4WaUaVBuI+3efb JJzZhqSaOdElhvS0+Cuoa8Y78zpkyl9LVk7sYCP1jr8diG7jZS5GgRn8H9XlaNerS8OsVHGHBPAS1 aNQc36dA5LE4qlNRUaTkYDgbf4W6gCJSc6bPq7+sYnMhCWRpHFkorUeHEjA0uSdqaoMHAgdtL/gNk idCivw1rVdRWuDC0pxvq6g==; Date: Mon, 26 Feb 2024 16:22:59 +0200 Message-Id: <86ttlvuwxo.fsf@gnu.org> From: Eli Zaretskii To: stephen.berman@gmx.net In-Reply-To: <86v86bux3w.fsf@gnu.org> (message from Eli Zaretskii on Mon, 26 Feb 2024 16:19:15 +0200) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 16:19:15 +0200 > From: Eli Zaretskii > > > From: Stephen Berman > > Cc: 69385@debbugs.gnu.org > > Date: Mon, 26 Feb 2024 15:13:38 +0100 > > > > On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: > > > > > The CPU is fast. My HarfBuzz version is much older, but I doubt that > > > HarfBuzz became so much slower for Arabic. So it's very strange. But > > > maybe it's worth to try downgrading to an earlier version, just to be > > > sure this is not the culprit? > > > > That's not so straightforward on this system, where I build system > > packages from source, so downgrading HarfBuzz may require also > > rebuilding packages that depend on it. I have a somewhat older system > > on this machine with HarfBuzz 7.1.0, so I can easily try that. What > > version of HarfBuzz are you using? > > I have 2.4.0 here. Btw, another possibility could be that this is specific to the Cairo build. So maybe try a build without Cairo. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 09:40:16 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 14:40:16 +0000 Received: from localhost ([127.0.0.1]:40128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rec9Q-0008M9-0M for submit@debbugs.gnu.org; Mon, 26 Feb 2024 09:40:16 -0500 Received: from mout.gmx.net ([212.227.17.22]:33071) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rebwV-0007hk-HP for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 09:26:56 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708957584; x=1709562384; i=stephen.berman@gmx.net; bh=euGCdft0GeIGEVycamvoDXcgibAVdalqTyc2hrsrkIg=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=hPL0ItSZmFg+5mxh8UKIJ5JRU9zWFbdWHeoqU6jHCHYdVYzNMUYITHqYXeLFKK9G 0UA+g6rjfg3uqaBp0b9XDQ5C5wbSFhFpnFMSxvi8IykPz59+wzf1sm43Fu+ASXrps 99xS6+zbYY9SCZTjlqbzJ8/Y25ufGdlckeRZ+icN/Eyud+BqOjEnBU0teawxSb2X6 oL969W5b4kqMCTHg0bJNhdkeovOXGiWRavqL0zkq2NiNjN8l9bRHGFaSqJker2LHV QG6q8pUZoLUtY0R4CqmHUiCsinLvONw3G0Blr01XD/eWMqSkCd0eIusQ2VQbhvcyI B5D7VAe5dSRG6J71Cg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mf078-1qzCNF0EYc-00gZ4e; Mon, 26 Feb 2024 15:13:39 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <868r37wgkx.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 14:33:18 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> Date: Mon, 26 Feb 2024 15:13:38 +0100 Message-ID: <87zfvnfh4d.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:cWulJ/w7NFA0oDQYM/ZaB6pBgaQi7BouppQ3LM5UdbwhdiSFXVl Z4wzzWh4hcxNnNJ7l0baQEk1i/epo569llD5dUVfYr/QRvnjZUS0bCYaqX0BbmBya805nSx JI3xm/oIxykPPbX8jpTqiqVk2aX4yzaXvWRqJ7vUPvG2J0/tNE/2il6gT+telXoaP6o90El biYzZ4HU0ljpupf3HK02Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Vg3rOtvyx88=;sPKh4pMily9FMzTfdx8XkAYTiFh uQ+sdNfhKBAEuRwQIgVOdAFH7YfL2fZqdE6NYwtDdaBPE6rjHoNKoeAQiE52Lsh0WtuY+mPny MLNzxGqJmpJ4tKmg+gWkZ5PWdoYE0kGgUtA/lgQxoVcH2xtmtbRbpvxkugT1VmPiDRt8TrfJ/ IL7cnGL2OpoFeHSOWtv1PiRu42noUxUx0n86p13GGyuMt6emGbKoFkKDLqpTHFU9OgTv1+3sc XZV43lSRu+oJQlfEvfJ+aEPhdI3I0UgHX+UQ1MDsi8IP1Kpxd1Vj0F6enXi+ZAKy43e7yMI8S KZPEcg/hHxKJek499lNhw9+Ax5L7Gh0ya6SIorBW8PhLgILQTktEanNnozi6OHEwRk2NgPW2+ 18JUhaDJQ8xelyJK5xHe4KsQE4rdQd616xynuA++yIUXXT8KPlCq4sBqhwcOSWvMyWkYvsr/A lLpwf5bXq6NhksC4XXIBXaLKPNJP8O9mPMcANuvt/3uui5sUEoRnNAoNu8TtthPt7VXQYg7x+ Mf71LjdpNHWejAr1xW76vN5upkU5OuBH1WZvvgp7aS76HdRP6t7yvTBoJMeOxl0KJkFbXcgeF 7Wb3jbsnuE6h78H/iq/QB00TX5Ace+o8/wZxNyuU7LykYBu3ILnYiVxMwr2TKsW8xXX8XZ7Fs 6O4fd/ieGCWmGhBg0LtSzM0oaVGtB8O9MXH9JP5FcsBP8dRG0iD1wPL6J5lWcukPi+DIq/ZQk iL6tBMy6HNqZ2I3pWMnYCUVJld598GeCmn3P6D6wjE1eo1ZiUFZOcBIny5SQz/PKpiA29yWO2 OW47tP631LlNGvWKzoTcNIJM82vO21/SbLdM7GVzRIu2g= X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 21:36:46 +0100 [...] >> My CPU is Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz, certainly not >> superfast but not superslow [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 21:36:46 +0100 [...] >> My CPU is Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz, certainly not >> superfast but not superslow [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 21:36:46 +0100 [...]=20 >> My CPU is Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz, certainly not >> superfast but not superslow either, e.g. bootstrapping Emacs (without >> native compilation) takes just a few minutes (with native compilation >> it's a couple of minutes longer). My HarfBuzz is version 8.3.0. > > The CPU is fast. My HarfBuzz version is much older, but I doubt that > HarfBuzz became so much slower for Arabic. So it's very strange. But > maybe it's worth to try downgrading to an earlier version, just to be > sure this is not the culprit? That's not so straightforward on this system, where I build system packages from source, so downgrading HarfBuzz may require also rebuilding packages that depend on it. I have a somewhat older system on this machine with HarfBuzz 7.1.0, so I can easily try that. What version of HarfBuzz are you using? [...] >> Ok, I repeated the test with Hebrew without niqqud ("=D7=A9=D7=9C=D7=95= =D7=9D") and indeed, >> M-> and M-< are much quicker and even holding down C-n and C-p is >> quicker (it does freeze, but unfreezes more quickly). So it seems the >> bottleneck really is the shaping. > > If, after starting Emacs, you set all the entries of Arabic characters > in composition-function-table to nil (e.g., using > set-char-table-range), do you see significant speedup? Yes, there is a noticeable speedup when M-> and C-v, M-v, and even holding down C-n and C-p is faster, though they still freeze after a few seconds, but the freeze doesn't last as long as when it happens with the shaped Arabic script. Also, probably unsurprisingly, the speed after disabling shaping is still much slower than keeping shaping enabled but setting bidi-display-reordering to nil. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 10:18:29 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 15:18:29 +0000 Received: from localhost ([127.0.0.1]:43446 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reckO-00026o-Vm for submit@debbugs.gnu.org; Mon, 26 Feb 2024 10:18:29 -0500 Received: from mout.gmx.net ([212.227.17.20]:47945) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reckL-00026K-N9 for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 10:18:27 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708960674; x=1709565474; i=stephen.berman@gmx.net; bh=2YJ/u7VFdQwkEupKgG4le41d0G9LBJbYdbGrc3/kA8Q=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=GrRUytXNlB8K1CLaKe7ufkkKKcvjRB3n3ny5WuxbwsiJ8eN0rSjsa/Vl59PU1u7X x5PXTcTzNrluV+gY3LarePysZ5TZBkuy1pNHYcgKEVKi6PhlgJk08XxuwAX7uVJrx //y8vctsS3qa9A7egZnopqdkQ/9w3xhfrMMhJOr9WV2YlsSM5qCXpYaQAyv10Uaw0 AkC7i+kf28Rrx9UP6UjMGqexXlfFHJuYgsZ7bwsfj1x+6B7GIOh8prvKLDsJWuERy aTdM4KzErU+lICthcU8EV2vAsUQZRnUKioR7T9mHYSkBVAUisn4sfzqH9CwXE78lI O+76OS7kCuiRDUQGQg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mz9Z5-1qkCIr1LMp-00w9wP; Mon, 26 Feb 2024 16:17:54 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86ttlvuwxo.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 16:22:59 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> Date: Mon, 26 Feb 2024 16:17:53 +0100 Message-ID: <87r0gzfe5a.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:Oa7x7ww5HYHgJy6PDACR5sgAhDuMSAlotI5QHBWs23jz6pHIAaL dI4uNk5Nq2N82TXQ88nGRF0O3tW15Br+n6pzivBj7nDvMGTFJPpY6gbkJNeDMETLdZfpWjk JaxXfCQt7yXdD7rq9s+LLOwzqMnperBrvpSwSSREmD8VOZCd/jZslMI1b2p8WCIA8mZDSPq HMK+nWEbiHjZ+NgB5PBiw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ZOq+5odTtTM=;Ss4DV2sp8RMoLw+9pPW7p9KvL+z SpqsyyvIDj1/O+bxQmTMCzWNkbS4NED63km7pknn5d3EQENS7JBPo3x22RX6xGJuFrKkv+HC5 o3SqA85glve9SCKOn/7OxMjE59BhocFs7HozSvEjh+aE3Zvqo5JypW0Vr0N/q41+z9xvxJuXN WOrmjXlBq21qpfBco5dUcPQsyqFUGu1QZ/GprDbfWmo0gSYUz7CuOtd0L6FICm87YYQ75wMYl Uo5uzZ8IOwqMfI3zWrpD97OlrFD1Nl02G+y7r2pRytpZyIJIN5mETUrk1Nfti+eRpIWiXnjGZ XXZCkziT545GSYEqTBRz/sOnDOWQUCjrsg7VHr/HgQADg/cEJEpSjxUDyYaRxrj8UfBJXX9x2 NLpXs5KvEIgjaK5k+HslPxOu2j85Sza54SNfPOilyLjfWXBfwLV9dgN4HyFpITIrt9e2mlz11 7genTXcrU/of4AhyZpkvIs4zoUpFjrAnf1nYQ8BP84IXh+RUbRiFwyjpPhe2fTn45mlTHYv/a AY/KjcuhyXehRVq8xqaS70QBQkN79pmwWL9eN70CH14vdOeykwjUcp3EFdSEY2Y5gOApxlhH5 VY+OvpW8shlEcnoAPKBx1TKVBBzThSY1ZGSqlCEFbiqtLYwgC1kwV3gSX6utDdg05Bl2pXyy8 dZ83E9T0d2quUtdwwbpivNIiRJXM/PyaBnd9gBobL8Y//MglYECosc0yciVHold4YnhUeBRup PhCW8LJeDXiDx/iOVpmWJrDxiJi8JKXRbC7oximXuIly73sOPu1Cle9Sc317IafJSAzR5AsBW nKpdoXl+vtP2MUyHd1rLuOB+4el7sSmG6pGNI8qN9aICc= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 16:19:15 +0200 >> From: Eli Zaretskii >> >> > From: Stephen Berman >> > Cc: 69385@debbugs.gnu.org >> > Date: Mon, 26 Feb 2024 15:13:38 +0100 [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 16:19:15 +0200 >> From: Eli Zaretskii >> >> > From: Stephen Berman >> > Cc: 69385@debbugs.gnu.org >> > Date: Mon, 26 Feb 2024 15:13:38 +0100 [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.20 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.20 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 16:19:15 +0200 >> From: Eli Zaretskii >> >> > From: Stephen Berman >> > Cc: 69385@debbugs.gnu.org >> > Date: Mon, 26 Feb 2024 15:13:38 +0100 >> > >> > On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote= : >> > >> > > The CPU is fast. My HarfBuzz version is much older, but I doubt th= at >> > > HarfBuzz became so much slower for Arabic. So it's very strange. = But >> > > maybe it's worth to try downgrading to an earlier version, just to = be >> > > sure this is not the culprit? >> > >> > That's not so straightforward on this system, where I build system >> > packages from source, so downgrading HarfBuzz may require also >> > rebuilding packages that depend on it. I have a somewhat older syste= m >> > on this machine with HarfBuzz 7.1.0, so I can easily try that. What >> > version of HarfBuzz are you using? >> >> I have 2.4.0 here. > > Btw, another possibility could be that this is specific to the Cairo > build. So maybe try a build without Cairo. I did, and the slowdown seems just as bad as in the build with Cairo. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 10:25:18 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 15:25:18 +0000 Received: from localhost ([127.0.0.1]:43945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1recqz-0002Sy-3n for submit@debbugs.gnu.org; Mon, 26 Feb 2024 10:25:18 -0500 Received: from mout.gmx.net ([212.227.17.22]:55863) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reck6-00025X-Tg for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 10:18:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708960659; x=1709565459; i=stephen.berman@gmx.net; bh=KvHGxTFLwQ4dTU6RlKfiAgpQPuHzmbTgIpDZnkGDhIs=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=tvkMlNJnjrPteTVH32wuja1C6sBCHaB+68rvefY/WRkUkYtX2RdZaSOgdgi5d/Nw g072jOi3grfpllWQrjAdido0Excv7ZhfZmeUuGPFqmi5E7fAQsWp5kqsvUEFndSLg MP3Xz6oUZVU25W09S7ScMFMndSESbC4e6MaaZXjLn2a+gWJrS5kFvRCiX14atMztX ddSxPX+hf6Jhqb8JBDA3nitcufXqTQ4JBi0n7B1dA4fqlfzB+R6Zsb5ImOWRzj1SW 0ejkCYZYSVEDCADm2X24g0Fm9Ovi9e2iZEvLq91G1Rbwu9DBEGv0+nQgKlvTzxVky UteU67Q0caza/xZIbQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mjj87-1rCfNo1AMt-00lDV1; Mon, 26 Feb 2024 16:17:39 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86v86bux3w.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 16:19:15 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> Date: Mon, 26 Feb 2024 16:17:38 +0100 Message-ID: <87sf1ffe5p.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:ZJoqijE656tqlq0P1Vv2cE8EU9fTfjAhiTK+wduDfmaUtGLmVTQ YLX5yITeX2b/8levP1ni2dXkNUsM+jz8h7sFyK2w6Pacmr4GOyR3pegWavyRicR+vMxmykl K7jSV0O5zRk6+0ae0nLgQs3dLOvQ3ed5aRKmjbUkWo209oA0lPJhD9j7pzGfo7pTkTWZqMW 1ezEIDhxOrKoVnGd6eLig== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:qFmUs7n/lNA=;qELig0HLtjzmGtrkMn7APi33DqJ YzB68h7aU4BzNm1zh+IMpPf+s7oO2C9Mu88eYLtSnKwYqZi0l3kZRuAFck6L2dFKN8x1FpBLF x3nj18PRRJrj8QbI44Hxh+5EUhfMN9uT90p+p3bnY3NiemffiJAkzL8HliMlflKnzzM/5Oroa veGQK7zBlFrGT1ZmrgQEQSMbZoELnSMcVwlgaWVSzOQEvsu+S4SzTdLeJAIUIchWIAGy/L1R/ rFKIGn/sMXxtxw8ysZa+mBXJvbNbiUq1ndNAK2jk8gYImW/K8tncBXztaggmKI+MRSAXMvvvd Dkr2XJx/SoNLJa/8oZ9LHkQxjhAtd6oUdosF6kj4e6NmxITzIE8ylLeQOjTSh/UXVOfX+osyR nElQeGyB0CJx/2M2zwHdc8svGRlId4woSMboMGrWHEaPASRuXAriYZHvp2g0KGYqgbBhgYbRd vd58PGG6bxSIUZn4VtCcbhNBsj1XRjZvuMStVEMVWSdHyCENQTzXYlaQitloboLKSN7M6Zxf+ Ta6p+QZOp79BXN1XGYZCiBdELymYXoDJHLyfa1jcuBhUqrncKyRJtVhmVmQej3KZktPr9pLrJ MehfW2WRIqAMPMTj7xivk1J9mzAVw87gvou4PbnX4cdso7jmXvTWGfNIvKq3rGF4Mz9ojX5a1 o5xYD2AvZ6IOZergaRB5mfw8yhQxsnzKWLuGiak8J3DfVTF453eo7MfczS/6tCleCJU2X3Joo W8bgHRGYiv/9eEMr+res5eGd9VMewTu3RiofCgKxqw6ihaGvZf3ij0STq9KlJP3spuLSBNUlA xkFaXRaVZvnTvwJk1+p0QyYoepSNEvkcXeDtqn+OWgr68= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 16:19:15 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 15:13:38 +0100 >> >> On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: [...] >> > If, after starting Emacs, you [...] Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 16:19:15 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 15:13:38 +0100 >> >> On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: [...] >> > If, after starting Emacs, you [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.22 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 16:19:15 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 15:13:38 +0100 >> >> On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: [...] >> > If, after starting Emacs, you set all the entries of Arabic character= s >> > in composition-function-table to nil (e.g., using >> > set-char-table-range), do you see significant speedup? >> >> Yes, there is a noticeable speedup when M-> and C-v, M-v, and even >> holding down C-n and C-p is faster, though they still freeze after a fe= w >> seconds, but the freeze doesn't last as long as when it happens with th= e >> shaped Arabic script. Also, probably unsurprisingly, the speed after >> disabling shaping is still much slower than keeping shaping enabled but >> setting bidi-display-reordering to nil. > > Is this with text from HELLO, or with some other Arabic text? The > prominent effect of bidi-display-reordering is actually surprising, > and not what I see here, with or without shaping. Very strange. All my tests in this thread have been with the Arabic example text in HELLO, though the file with which I first noticed the slowdown contains much more and different Arabic text, as well as ASCII and non-ASCII characters without shaping. Here, the speed difference, when executing movement and other commands in a buffer with a long line of bidirectional text containing shaped Arabic, between bidi-display-reordering t and nil is like night and day. If it's not that way for you I can only assume it's due to another factor distinguishing our systems that hasn't yet been identified. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 11:10:17 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 16:10:17 +0000 Received: from localhost ([127.0.0.1]:46738 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1redYX-0004gE-6g for submit@debbugs.gnu.org; Mon, 26 Feb 2024 11:10:17 -0500 Received: from mout.gmx.net ([212.227.15.18]:42801) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1redOs-0004CE-Vx for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 11:00:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708963187; x=1709567987; i=stephen.berman@gmx.net; bh=QaVBkYYgstJLypR1ZpYohaEmjE4wX7UTGcXdy/b9Oss=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=ZavoouY9Ne3zLOEWCNwNr1YnpHCUtMmBp/mynUbTw39alSJ+EbvTjGyGS8f1BQLM Qc6Ibv37vyCQ95EsTJ3JnajQ4pWlnrSDM5qvW7xfdwUqSztose8ef7XGvW2NegqZ8 4mPZk+vBF0ZI0osmHUb0wFvR1OqFwKyUe9u9qFFQxwMnXnILfeOQpu/LVQkzP4fpi VyxNIqF/q18mglhy7pGHctUB/HPe/2gRiANueYvdHhEHBeKoaX409l0FZql4RMD/d DLKJ8ryEKY2DLCqY6WDwrNq7ZWKd7ZVFDrxwTzH7Cfbcm7snBRPAe8831zIPTgIIt 3t/xBsMtxWg1QTwtWw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M4JqV-1reuNG1xfl-000Nif; Mon, 26 Feb 2024 16:59:47 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86r0gzusrx.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 17:52:50 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> Date: Mon, 26 Feb 2024 16:59:46 +0100 Message-ID: <87msrnfc7h.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:p1XSAHhkVkUuT253GGY6KqOLkPlYdI+RyBve82khN/vxYz7VJkb eYsXF7IkeJAc83fGkf0+IEK9A/zgOGRCwUnp2SrnV/QzouV7tnoA02bxAPIgttLXZmDAQsL 7oUno+XK54Rct/lyJasfG/Bmgy57iiB50nSUId3KBq8Bx4FSvgBDPiKnnyw/NVDDJ4uJlvp 8T+LN38TUiyewBvwZLOpg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:sej5Z7/+dpo=;10jL/T26ukjDZ5N49j0iUs++4l6 NKn9xNNvDlzmexghzuG80V/z12IhF+n7JIbpRNddQrU+M77qqYIX9FzZF9z3f+CLDe/eb9obQ jtqcI54xcJ7k2Gzm5eael1NNy08P14hH0ew01isBMXhAOyPQJxQmP/sjWvVJs3F737y99FufA RSIPh40h2gpwGnYOJ/mNtMsY+GD+wHIdLfBG1LaWm2jyphZMaSbVFbVwbeDXUcvf0aBsxKT31 QVGV8ydPwfI4zdcTuXqih4s6imJx8aFU4LKYdVzcAslj64rah3CPUg9E+jsHd2y7ZZbxl2tPm AMjRe6E1FxNPZoAqUKChIrm5S/i6oN9IQWZ3HnI9rj20GQTO165iPdmjBqYUVG6+syK2ImDIA DbfefZ7decrDRDoNmOPgijxY5uWn1Cper+cy3lVZxcyWXADXG1Ok3D2yNF/L54kVxsSeIt2tk 1nI/cI+ub2dVW4dUrzf0+uTzZ/eqqwU2WOwOrFlCeWsBbscfkjA+ZgwRdsbSGIs47Cv1Far45 5MtWmqm5oz2YvT21eJoTKvxBP+n09F1UCs2cOmieaVfAjY8KJrguvXBlXpgz8kJj738vlkAM7 oBSMoXyZ7ofdFIwBVJKABoDMVMDp/PiOylJqENEKlkND6bnRbNUmAQHo3rTmyvbL9FgT1/ZHB SHE2Vb+dFiveMgCF2UXLtV4QJaZV8Ol8ReKuUs7L8alxFsXAMIL/HsBj/ERld2Fn17pGesY7t q9do+M46341YRMl/GS6v0fa+TebyncU02UXJlxflowAknqzWNW/CjyRoNdCy1DOk7RlVNMN5Y NM38nEF8iZfypIwzFKA77pAAfwRF3l6lYzj3AjoDBQxIg= Content-Transfer-Encoding: quoted-printable X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 17:52:50 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 16:17:53 +0100 >> >> On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: >> >> >> Cc: 69385@debbugs.gnu.org >> >> [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.9 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 17:52:50 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 16:17:53 +0100 >> >> On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: >> >> >> Cc: 69385@debbugs.gnu.org >> >> [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 17:52:50 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 16:17:53 +0100 >> >> On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: >> >> >> Cc: 69385@debbugs.gnu.org >> >> Date: Mon, 26 Feb 2024 16:19:15 +0200 >> >> From: Eli Zaretskii >> >> >> >> > From: Stephen Berman >> >> > Cc: 69385@debbugs.gnu.org >> >> > Date: Mon, 26 Feb 2024 15:13:38 +0100 >> >> > >> >> > On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wr= ote: >> >> > >> >> > > The CPU is fast. My HarfBuzz version is much older, but I doubt= that >> >> > > HarfBuzz became so much slower for Arabic. So it's very strange= . But >> >> > > maybe it's worth to try downgrading to an earlier version, just = to be >> >> > > sure this is not the culprit? >> >> > >> >> > That's not so straightforward on this system, where I build system >> >> > packages from source, so downgrading HarfBuzz may require also >> >> > rebuilding packages that depend on it. I have a somewhat older sy= stem >> >> > on this machine with HarfBuzz 7.1.0, so I can easily try that. Wh= at >> >> > version of HarfBuzz are you using? >> >> >> >> I have 2.4.0 here. >> > >> > Btw, another possibility could be that this is specific to the Cairo >> > build. So maybe try a build without Cairo. >> >> I did, and the slowdown seems just as bad as in the build with Cairo. > > Can you try the emacs-29 branch? I already did and see the same slowdown with it as with master. (Or did you mean try emacs-29 without Cairo? That I haven't done, but given I saw no noticeable difference on master, I wouldn't expect to see one on emacs-29 either.) Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 11:20:25 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 16:20:25 +0000 Received: from localhost ([127.0.0.1]:47261 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rediK-0007u7-Qe for submit@debbugs.gnu.org; Mon, 26 Feb 2024 11:20:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47736) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rediD-0007tW-Cd for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 11:20:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1redI8-0003dN-Se; Mon, 26 Feb 2024 10:53:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=5742KFMdIkcG5dDulWuiwflcekGk+Rm8mSL3Hgd+gPI=; b=KLYFFJCOSeGS /WFsLSEPmRruu679dMuqlUffMGDonAzBjLqfrqyK/7a8H3apB50sPs2oGBv3pWQWhE2pdH05SS6iW HBvpWl6khDcCV0PKxrxSjEjb6QnDZY18ZjOTPgTEjhMD+pAhBQUSELT98PHNfNkafJ2r20rFe8ATB MLVtyaNHMq/PZY66QANYl9GuX61zVC+QZ26q9UbtAFMjz80weaLduFB3yC/yJc6ndfbe07jfOWOxy Jspx/y+5flN+9SVHI8x0J53S/hBvM5pBl5pV6NrRzDsdkW9UurYeb/Des9zqYQMO4VFPIPfSToTRL Bxj0zijeKQ0iLtaQnPlo1Q==; Date: Mon, 26 Feb 2024 17:52:50 +0200 Message-Id: <86r0gzusrx.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87r0gzfe5a.fsf@gmx.net> (message from Stephen Berman on Mon, 26 Feb 2024 16:17:53 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 16:17:53 +0100 > > On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: > > >> Cc: 69385@debbugs.gnu.org > >> Date: Mon, 26 Feb 2024 16:19:15 +0200 > >> From: Eli Zaretskii > >> > >> > From: Stephen Berman > >> > Cc: 69385@debbugs.gnu.org > >> > Date: Mon, 26 Feb 2024 15:13:38 +0100 > >> > > >> > On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: > >> > > >> > > The CPU is fast. My HarfBuzz version is much older, but I doubt that > >> > > HarfBuzz became so much slower for Arabic. So it's very strange. But > >> > > maybe it's worth to try downgrading to an earlier version, just to be > >> > > sure this is not the culprit? > >> > > >> > That's not so straightforward on this system, where I build system > >> > packages from source, so downgrading HarfBuzz may require also > >> > rebuilding packages that depend on it. I have a somewhat older system > >> > on this machine with HarfBuzz 7.1.0, so I can easily try that. What > >> > version of HarfBuzz are you using? > >> > >> I have 2.4.0 here. > > > > Btw, another possibility could be that this is specific to the Cairo > > build. So maybe try a build without Cairo. > > I did, and the slowdown seems just as bad as in the build with Cairo. Can you try the emacs-29 branch? From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 12:08:20 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 17:08:20 +0000 Received: from localhost ([127.0.0.1]:49904 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reeSi-0001bR-DW for submit@debbugs.gnu.org; Mon, 26 Feb 2024 12:08:20 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38440) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reeSg-0001b3-8w for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 12:08:18 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1redyA-00048f-Ka; Mon, 26 Feb 2024 11:36:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=O2VGu3cEwA8SHcO1djTtRisgdZU1HwqitP/FOusPVyg=; b=fQnha6IzQNMm GSX91HTJzfDY70O/TTHUnPJlZS1HuJ7tnRGIHyzz+ShZfbcmRNFK2f31h865d8xuaFE+PioW6Ruk2 p/OBj7amCjR4CceFOq0Ukg3eSIamI+qeY+AAlzyM03HzK9j5ba+YvSIIK98QOtQTceH85LRNyUpIw 3hFe4QtuICzTX0z/wI4Hr6TI4iGYtHU6Wu26p8Bas182ux6HgTiacNVlN8+SjK5l8eatplOacF692 xTIgGS3Hnjgs4IztwTrmedm1mqI7I3vLm6iZ3MRg/Ckz8/XwLICe8ON9CeWZvomAiqP/iY1y9B1KL vbptytaLKGFxBUHu/QVpMg==; Date: Mon, 26 Feb 2024 18:36:42 +0200 Message-Id: <86o7c3uqqt.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87msrnfc7h.fsf@gmx.net> (message from Stephen Berman on Mon, 26 Feb 2024 16:59:46 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 16:59:46 +0100 > > On Mon, 26 Feb 2024 17:52:50 +0200 Eli Zaretskii wrote: > > >> From: Stephen Berman > >> Cc: 69385@debbugs.gnu.org > >> Date: Mon, 26 Feb 2024 16:17:53 +0100 > >> > >> On Mon, 26 Feb 2024 16:22:59 +0200 Eli Zaretskii wrote: > >> > >> >> Cc: 69385@debbugs.gnu.org > >> >> Date: Mon, 26 Feb 2024 16:19:15 +0200 > >> >> From: Eli Zaretskii > >> >> > >> >> > From: Stephen Berman > >> >> > Cc: 69385@debbugs.gnu.org > >> >> > Date: Mon, 26 Feb 2024 15:13:38 +0100 > >> >> > > >> >> > On Mon, 26 Feb 2024 14:33:18 +0200 Eli Zaretskii wrote: > >> >> > > >> >> > > The CPU is fast. My HarfBuzz version is much older, but I doubt that > >> >> > > HarfBuzz became so much slower for Arabic. So it's very strange. But > >> >> > > maybe it's worth to try downgrading to an earlier version, just to be > >> >> > > sure this is not the culprit? > >> >> > > >> >> > That's not so straightforward on this system, where I build system > >> >> > packages from source, so downgrading HarfBuzz may require also > >> >> > rebuilding packages that depend on it. I have a somewhat older system > >> >> > on this machine with HarfBuzz 7.1.0, so I can easily try that. What > >> >> > version of HarfBuzz are you using? > >> >> > >> >> I have 2.4.0 here. > >> > > >> > Btw, another possibility could be that this is specific to the Cairo > >> > build. So maybe try a build without Cairo. > >> > >> I did, and the slowdown seems just as bad as in the build with Cairo. > > > > Can you try the emacs-29 branch? > > I already did and see the same slowdown with it as with master. (Or did > you mean try emacs-29 without Cairo? That I haven't done, but given I > saw no noticeable difference on master, I wouldn't expect to see one on > emacs-29 either.) I meant the emacs-29 branch in general, regardless of the exact configuration. I'm out of ideas, sorry. The prominent effect of bidi-display-reordering is especially puzzling. Can you measure the time it takes to redraw the window after M->, with and without bidi-display-reordering? I'd like to have numbers here, not just impressions. For example, measure it with benchmark-run or something similar. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 12:12:39 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 17:12:39 +0000 Received: from localhost ([127.0.0.1]:50277 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reeWt-0001q8-7g for submit@debbugs.gnu.org; Mon, 26 Feb 2024 12:12:39 -0500 Received: from mout.gmx.net ([212.227.15.18]:53879) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reeWq-0001po-QL for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 12:12:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708967525; x=1709572325; i=stephen.berman@gmx.net; bh=NQtVDk+nEXUbkWsZQ7UMNnY8sLpYWeOvMUBMGX92dYQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=jM65Y7x386z6JrVcV7xhhzIlptgkodxrViFIQihFfHVZzxMGT/SNwiSlyeSk4PpL 7FFuKeyq/Ozie6SCbIO+24icZtrXs2oJK4WKnf3lhU21CotO6yqUtCll80I09l1dK xdg9vnG+DtUM6wczmLhLKmNUPyox6Pkpf+hg4RvTwcBPhUto0ohykKlNoNJLWt7ur tW4NUFaTPhbifb5rua9njh7K0FlVIlFdZydkB3q7sFw1744m3ndrfLTDZ1SK1LUQg mF5y/8Dv5suI/r0aq1cHM4OggsrevAt6TQgxUByk01l7ejynl32vmpEIPeOBhmIPJ w7OlfkbPw/mXAl+qeg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MUGi9-1rWdsc0iNX-00REPC; Mon, 26 Feb 2024 18:12:05 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86o7c3uqqt.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 18:36:42 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> Date: Mon, 26 Feb 2024 18:12:04 +0100 Message-ID: <87il2bf8uz.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:+OkCeH9dNB2GCCJ/ZHbZYJPSS4vZZqoF7G4oYgASrJxUwk3V1ll MXOlVLbLWXUm5h1jigYBIdweVllM5HNMhSt+/EYe4j1Ep9Oki6huBIvbcTTsgen8xfJSYnF KAY/0K9H2l5Y7iQ5whORjLQduJyQXRG3l/kWXCIpPhk1Rr7QHEBftqgrzdXRnWXxyRvYzCA Br8o318TpolyrGughW0iQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:qvC5R5fTMYY=;j+/MfSq+m7Lj8IBk+NqznXIC8aP QaDNyNMJaLu17RR8xVUu27k/pOGVa+4laeltB34fHRLc3N2nbuN3F7u677SMNUuaEU+B4yijB SSntLRalJuj5lyQAtU1FA4UOwiNQjbRFtYQm1avDyKQDaETfp/6XuY3id2ohd+sveVPV3gWCe KB3eTx/4EBG0bulF4gOAp1TzYx+EtMQG4lDX5g+VwacGFXyW0D7ZaF2bGjQssU1C7MhJHdHDB YlxrXSz4/vWJGNlN6XYHsoPtYfbNnGSF6wBqvndE2S8AyQFLLlqqIzZK91vemuW6+GZlkfKfQ EQg3w4asZCS6gwhtzD43c5um+PFJXNunwXNjCpymLlvbemqIGVkYVEl3T3guXRnpbxlU0r9mm VY3g0yMnn24v+u4KqBnJ3kb2VwiLjJcBZer3h6Nd1PvSs+Uj8iQowA8/IL13CaO3ywh3KFowh hrhwsdvWfCYixUW4cCVMAQ2Z1tGiyUETIC9XsGKlcoRhRkIpi0qlqro+GXkZQHbvGEwoyDJKq auJJy9Ja/WJoMajS6VegOOVShxEMTGskZeM6Z9Nr6USdME/Eb8aKO1dG+DhisEyRGT+/Zmj7m +tibZNI4xqI6Gja14uLAo5HEZUeQFf1iMEPQydl9dA7mLZkqdjkECi4PmT6jQImxXvWVmbusz iEf+QfEjeslnMsGEWPG8LokqNinsuOoSCt+SKw0vYpDFQWJf7Jsgx2zmwTZW82SK9gCgtQwRh /AhZSvVm1YEzDp4RR6uuxUiCUbGq+07WbMlsD3PdlTYCmAoW2Vf59WDCP2TSFxhgfj5b4hzai jiDX8fNlavAqmdhxaS9ql7zd0r6RuPEqwUanXbGIgOqJM= X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: [...] > Can you measure the time it takes to redraw the window after M->, with > and without bidi-display-reordering? I'd like to have numbers here, > not just impressions. For example, measure it wit [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.9 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: [...] > Can you measure the time it takes to redraw the window after M->, with > and without bidi-display-reordering? I'd like to have numbers here, > not just impressions. For example, measure it wit [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: [...] > Can you measure the time it takes to redraw the window after M->, with > and without bidi-display-reordering? I'd like to have numbers here, > not just impressions. For example, measure it with benchmark-run or > something similar. On master started with -Q in a buffer containing a single line consisting of 800 repetitions of "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9= =85 =D8=B9=D9=84=D9=8A=D9=83=D9=85 Hello " (in the buffer the string " Hello " was to the left of the Arabic string because I yanked the latter first), with bidi-display-reordering at its default value t and with point at point-min, running (benchmark-run nil (end-of-buffer)) returned: (5.249231941 1 0.014300497000000023) After moving point back to point-min and setting bidi-display-reordering to nil, running (benchmark-run nil (end-of-buffer)) again now returned: (0.034058467 0 0.0) Steve Berman=20 From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 14:19:04 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 19:19:04 +0000 Received: from localhost ([127.0.0.1]:59282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1regVE-0007vq-0d for submit@debbugs.gnu.org; Mon, 26 Feb 2024 14:19:04 -0500 Received: from eggs.gnu.org ([209.51.188.92]:51682) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1regVB-0007v5-G2 for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 14:19:02 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1regUg-0006ud-D8; Mon, 26 Feb 2024 14:18:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=cIyBnwu71Arkk/SsYZFa2SpchjiOMDsP+M0tncOraL0=; b=LtZiIs2L+71/GL8cO0sx 81+bahE+j5ZkTNkV0OCaB70VjFBYL5HJdYcvyvDPP5AS737pRe62xktWasWHyX0lwOfNRNlIEl5yi odGpHml/GJ8AQ7zLKWYCoEKjB1k+whLN2UtIzltmeaUqdJ0ehBRp1pgFQOVpXe5+JJyG/1MqHOon0 /nZy1QsI4Ppi3TYU5jkbvLLwsSIwpwWQb9/Tly+6jPhO9SryJb8OLFeRzMULoF3ycqbNgjTkgtxPv v8OF6+6ieBg34xkV0REx8g0H5pf52MhlUCB5+NJ4HqjR3kiZryf/8rQNqAYJ8pucMAX1YlMzX96N3 2X7aG1fpnqxXRg==; Date: Mon, 26 Feb 2024 21:18:25 +0200 Message-Id: <86bk83uj9a.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87il2bf8uz.fsf@gmx.net> (message from Stephen Berman on Mon, 26 Feb 2024 18:12:04 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 18:12:04 +0100 > > On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: > > [...] > > Can you measure the time it takes to redraw the window after M->, with > > and without bidi-display-reordering? I'd like to have numbers here, > > not just impressions. For example, measure it with benchmark-run or > > something similar. > > On master started with -Q in a buffer containing a single line > consisting of 800 repetitions of "السّلام عليكم Hello " Oh, I think I see what's going on. The buffer you create this way is rendered as a paragraph with right-to-left base direction, right? That is, it starts at the right side of the window, and C-f generally moves to the left, yes? By contrast, I thought you were doing this in a buffer whose bidi-paragraph-direction is set to left-to-right, or the text begins with Latin characters (as in "Arabic", the string the begins the Arabic line in HELLO). So now try your recipe, but set bidi-paragraph-direction to left-to-right, or prepend a single ASCII character to the long line (which will have the same effect on the base paragraph direction), and then repeat your experiment, including the timings. I think you will see a big difference. The reason is that, when a paragraph's direction is right-to-left, inserting a new glyph into glyph matrices pushes all the previous glyphs, thus reversing them on the fly. Whereas in LTR paragraphs a glyph is inserted by adding it to the end of the previous glyphs. And pushing is more expensive. So now I understand why resetting bidi-display-reordering had such a dramatic effect in your case: it makes the paragraph render LTR as its side effect, which avoids the costly pushing of glyphs. In a very long line, this cost is very high. I will see if we can do better in this matter. From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 26 16:47:55 2024 Received: (at 69385) by debbugs.gnu.org; 26 Feb 2024 21:47:55 +0000 Received: from localhost ([127.0.0.1]:41594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reipH-0001BC-5j for submit@debbugs.gnu.org; Mon, 26 Feb 2024 16:47:55 -0500 Received: from mout.gmx.net ([212.227.15.18]:36545) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reipF-0001Ap-4j for 69385@debbugs.gnu.org; Mon, 26 Feb 2024 16:47:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708984041; x=1709588841; i=stephen.berman@gmx.net; bh=t9YgE4kYSbMionO/nPgHO3RZBIf6y+MzuEZEWK2xqHQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=ZIvLvpnWAjgRpnYCxlEmyPZRYyrlzC7RPOqk08QHIErmt1rS5V+A5qTkR87+ktP9 sjadfeOY3or+8xd5plpS4kXDij4VgevFi6xPQIIfsECj2jWCFqwgjCyKDZ+9lo7kj Hg9qJdq6+A9wftjdCVaGX7rlDzt2ouzlcCrpqdytEv/PuIJy0gJ1Vc9ztZrZc4fa8 JvTUyBk02iZKqm6Oal5xtd9gpVMGSHcSIBmYZv+I2xZw2I6PA1CHNphB1EgAO4DSW EuItQEZ5zgtJAyz5S/u7TJx3T+F2IzyDAQI2YItGpLaXb8JGxh/BFhRs8GYvw2tEu 2hvP2wl4pZil2ZKtfA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.95.66]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M6llE-1rXakR2ErW-008NMx; Mon, 26 Feb 2024 22:47:21 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86bk83uj9a.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 26 Feb 2024 21:18:25 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> Date: Mon, 26 Feb 2024 22:47:21 +0100 Message-ID: <87a5nmgaom.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:jibFTTZTCKiJ2jVuvsHGjkZd5F3jbpuvyaohNZpjxf9fqV/bvrq jf6hGNnRnmgkwsCbwE4d6h/QGGPFqpEHr9bKsgnJrpqwvIc5fDUiQR2xmnjJDN96Wds7HcG pkoBlAJK5JaWunEQvea8mkZpUUrkrN2QjnNB5pWeeWCxKTGHCn9v6g2KrtLYvUw0+o7z3Uk pSe2PFljRg59JzEil0V3w== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:TsYgc0q7OKs=;BBz5yH6WKLqsNJmbsX5lfjR2aoj 2IkVTKnbzusaZNQtmpKYu7SBUfd6a6ibNvQBfBSkxLA+/knITO0wvwheFjbyOS7YktufLD4fX 7er6xXUWFkN6dQbzbDTDWUxpiPxC7/xNRTAVt+UidOJjfDAF+APQ/5vPOXgZSFMplga/5QMX3 keK9LLgJfi9I7/eWCT/EZTW4otlLttkSTL2OFcGIEhwTD5aUUvgEzo0qX8xIln+Rn991MvZ/A q2g4vIHNmwR60ZW4mAB3nygZGt8BRYr0oMttiqEjrMrTmEB36i4akpkRT9jia/Q0cfndfF0Ac Vp9H7mnK0rhMTrJA/GQ3Fal3d7Ru8TgoxXpDJHTwdYCDHpoX4huYyqAgiU8CyzxtExhqh7BG9 m4s8KF2exizlDJ5g+D9ih3iDcenaHmCpBZIHzQPIHBFdNyLNnWyybz3Nt/27MinViYvE0xCXs zYOZzy2p97ZtvYFqWv4CK6lbIL6BxQIoO/2HdbRoroAtLNHGB5v1NvukuMON5Q7jNt9ZAnX8i 4O53we2XyW6lzfvt+YqQaPHeAxAsZxM2dXASGxYHm7OD4ChUzckNmAhfNcmbfZYE1x89pn429 BNIvQMZOFLtWaI+qeaHhYFvVOusWYRkSPPdx8vshvSn3+Vzg2KWKOIs3gdBP72kWUYLhstwib 4+3OWOcnU339O2TkjRCrtMOOzze3YIjvywwSX2zAiDSytSb2UflnKX+1rfVAUalF51j0vVWPM azuySMlbhFXjxjstb8m0Yu1B28Dhm0LupTiNLzfeLmlnvXPJwfdNumdiTCzpUeiU9M0Ka/yPm 4ZIwjDRA0LILEWOIyd/pNgvxz+Qygtg6v3x6vmKzm2rk0= X-Spam-Score: 2.9 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 21:18:25 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 18:12:04 +0100 >> >> On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: >> >> [...] >> > Can you measure the tim [...] Content analysis details: (2.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.9 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Mon, 26 Feb 2024 21:18:25 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 18:12:04 +0100 >> >> On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: >> >> [...] >> > Can you measure the tim [...] Content analysis details: (1.9 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.18 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [94.134.95.66 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.15.18 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (stephen.berman[at]gmx.net) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On Mon, 26 Feb 2024 21:18:25 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 18:12:04 +0100 >>=20 >> On Mon, 26 Feb 2024 18:36:42 +0200 Eli Zaretskii wrote: >>=20 >> [...] >> > Can you measure the time it takes to redraw the window after M->, with >> > and without bidi-display-reordering? I'd like to have numbers here, >> > not just impressions. For example, measure it with benchmark-run or >> > something similar. >>=20 >> On master started with -Q in a buffer containing a single line >> consisting of 800 repetitions of "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7= =D9=85 =D8=B9=D9=84=D9=8A=D9=83=D9=85 Hello " > > Oh, I think I see what's going on. The buffer you create this way is > rendered as a paragraph with right-to-left base direction, right? > That is, it starts at the right side of the window, and C-f generally > moves to the left, yes? Correct. > By contrast, I thought you were doing this in > a buffer whose bidi-paragraph-direction is set to left-to-right, or > the text begins with Latin characters (as in "Arabic", the string the > begins the Arabic line in HELLO). > > So now try your recipe, but set bidi-paragraph-direction to > left-to-right, or prepend a single ASCII character to the long line > (which will have the same effect on the base paragraph direction), and > then repeat your experiment, including the timings. I think you will > see a big difference. I created the test buffer now by first typing "Hello" and the inserting " =D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9=83=D9=85= " on the right, so the base paragraph direction was LTR. Then I ran the benchmarks, and there is indeed a big difference, but one that I think will surprise you. First, the timing for the LTR run with bidi-display-reordering set to nil was: (0.035104007 0 0.0) This is, unsurprisingly, almost the same as the corresponding test run with RTL base paragraph direction, which was (0.034058467 0 0.0). In contrast, recall that with bidi-display-reordering at the default value t, the RTL test run was (5.249231941 1 0.014300497000000023), but now the LTR test run gave this: (10.613699099 1 0.012965359999999981) Again, the only difference between the buffers is the order of the strings and, consequently, the base paragraph direction. Both buffers consist of 800 copies of the strings and in both point-max is 16001. The -- in view of your below explanation -- unexpectedly large timing for the LTR buffer reminded me of the file in which I first encountered the slowdown, which consists of a number of Emacs Lisp sexps. The first group are all ASCII characters, so the base paragraph direction is LTR. Then there is a vector of 827 lists in a single line (remember, it's a generated file), each list containing three strings, one in Arabic script, one in English, one a transliteration of the Arabic which in many cases uses non-ASCII characters. The benchmark run for M-> in the buffer visiting this file was: (9.308704995000001 4 0.054923504999999984) The buffer size here is considerably larger than the buffers for my test runs; I couldn't remember it exactly, so I typed `M-: (point)' in the buffer, with the result 43901. It took a number of seconds for the result to be displayed, during which Emacs was unresponsive, so I then ran (benchmark-run nil (point)) in that buffer, with this result: (9.030000000000001e-07 0 0.0) I don't know what this result means, but the reported execution time bears no relation to actual elapsed time until the value of point was displayed. So I reran the benchmark and also manually timed it with a stopwatch. This is the result of the second benchmark: (3.1120000000000004e-06 0 0.0) However, the stopwatch showed fully 15 seconds. Maybe benchmark-run doesn't work for point for some reason. Given my doubts, I reran the benchmark on the test LTR buffer, but the reported execution time was only slightly different from before: (10.317616279000001 0 0.0) What do you make of these results? > The reason is that, when a paragraph's direction is right-to-left, > inserting a new glyph into glyph matrices pushes all the previous > glyphs, thus reversing them on the fly. Whereas in LTR paragraphs a > glyph is inserted by adding it to the end of the previous glyphs. And > pushing is more expensive. So now I understand why resetting > bidi-display-reordering had such a dramatic effect in your case: it > makes the paragraph render LTR as its side effect, which avoids the > costly pushing of glyphs. In a very long line, this cost is very > high. This sounds plausible, but my results seem to indicate there something else (or more) going on. > I will see if we can do better in this matter. I appreciate whatever you can do. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 27 03:53:00 2024 Received: (at 69385) by debbugs.gnu.org; 27 Feb 2024 08:53:00 +0000 Received: from localhost ([127.0.0.1]:35439 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1retCu-0001Fs-2O for submit@debbugs.gnu.org; Tue, 27 Feb 2024 03:53:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45396) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1retCs-0001FV-7r for 69385@debbugs.gnu.org; Tue, 27 Feb 2024 03:52:59 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1retCM-0003GN-MM; Tue, 27 Feb 2024 03:52:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=/g5IwfX8TIxj53iFC4f1O6mQzAPCACCZYZQUGMXn/5Q=; b=Ur/RfL+NtR4ofPTlFhkd XVwmaeswBzGmTNhJHSdQJAAkRm9TCrwTtqGZ34kgUGUAeaOSkEJPURLhbzlx0ZzHq5XmCQmhrj3yJ NFXbA2CQye20cam0wbLTW2jdZSoYP+ekn4Q0EPE6R7thyGh0OpzeYi9YGGqlnbN+Z/7iZeeCHhM+L Ygho05D6ggHVrSJauaXcFjNzv704dkrBxleFasnIizsPbDY+OgaSEQb4WQNDq5K0SxZN92FEXOEtn Sin4beK6PRamezrKMcieBE866K8Sq0qfy7mTziiBnCaWiYKJzIbf2wLmb561yVWwAADSNeMp9GtLz 5bK0pcW6+8hlaA==; Date: Tue, 27 Feb 2024 10:52:23 +0200 Message-Id: <86zfvmthko.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87a5nmgaom.fsf@gmx.net> (message from Stephen Berman on Mon, 26 Feb 2024 22:47:21 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <87a5nmgaom.fsf@gmx.net> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 22:47:21 +0100 > > I created the test buffer now by first typing "Hello" and the inserting > " السّلام عليكم " on the right, so the base paragraph direction was LTR. > Then I ran the benchmarks, and there is indeed a big difference, but one > that I think will surprise you. It doesn't, see below. > First, the timing for the LTR run with bidi-display-reordering set > to nil was: > > (0.035104007 0 0.0) > > This is, unsurprisingly, almost the same as the corresponding test run > with RTL base paragraph direction, which was (0.034058467 0 0.0). > > In contrast, recall that with bidi-display-reordering at the default > value t, the RTL test run was (5.249231941 1 0.014300497000000023), but > now the LTR test run gave this: > > (10.613699099 1 0.012965359999999981) Yes, that's the result of the fix I installed yesterday: it makes the display correct, but it costs more CPU, sometimes much more. To see why this is so costly, disable auto-composition-mode in the buffer, and compare the times with bidi-display-reordering nil and non-nil. With auto-composition-mode disabled, you see the effect of the reordering alone (because characters are still reordered for display, just not shaped correctly, as C-f will show you), and it should be quite small; at least, that's what I see here. The (mandatory) shaping of Arabic text is what takes most of the redisplay time in these cases. In particular, M-> does a recenter to show EOB nicely, and that is very expensive in this case; disable that recentering by using "(goto-char (point-max))" instead to see the difference. > The buffer size here is considerably larger than the buffers for my test > runs; I couldn't remember it exactly, so I typed `M-: (point)' in the > buffer, with the result 43901. It took a number of seconds for the > result to be displayed, during which Emacs was unresponsive, so I then > ran (benchmark-run nil (point)) in that buffer, with this result: > > (9.030000000000001e-07 0 0.0) > > I don't know what this result means, but the reported execution time > bears no relation to actual elapsed time until the value of point was > displayed. So I reran the benchmark and also manually timed it with a > stopwatch. This is the result of the second benchmark: > > (3.1120000000000004e-06 0 0.0) > > However, the stopwatch showed fully 15 seconds. Maybe benchmark-run > doesn't work for point for some reason. A Lisp program that just calls '(point)' doesn't include the redisplay caused by "M-:", which enters the minibuffer, and therefore triggers a fairly thorough redisplay of the window, and by display of the result. That's Emacs's MVC design in action for you. > This sounds plausible, but my results seem to indicate there something > else (or more) going on. Yes: that something is character composition, which in the case of Arabic text is quite expensive, because every chunk of Arabic text between SPACEs goes through the shaping engine. (This explains well why Emacs tries so hard to call the shaper only when absolutely necessary, contrary to HarfBuzz folks' opinions that we should pass all the text through the shaping engine, to get correct display with ligatures, kerning, and other niceties. They are right, of course, but with the way character composition was designed in Emacs, doing so would be prohibitive from the performance POV.) > > I will see if we can do better in this matter. > > I appreciate whatever you can do. >From what I've seen so far, it won't be easy, because it requires changes to some key logic in the display code. Hmm... From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 27 05:13:42 2024 Received: (at 69385) by debbugs.gnu.org; 27 Feb 2024 10:13:43 +0000 Received: from localhost ([127.0.0.1]:40343 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reuSy-0007rj-Tz for submit@debbugs.gnu.org; Tue, 27 Feb 2024 05:13:42 -0500 Received: from mout.gmx.net ([212.227.15.18]:50889) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reuSw-0007r5-LX for 69385@debbugs.gnu.org; Tue, 27 Feb 2024 05:13:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1709028786; x=1709633586; i=stephen.berman@gmx.net; bh=SkIcdWho6E1wcVBeS0Fdy/zc0hfvbmxYgdG35zi2+rE=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=sEf9eI0j2Vw47bjcioTjyH49ZojYdV7BiF/hW3cYlA7Q7lDp4UR+2hA7jm+dDgoa uGhrb+zSxBaT93Jry7UGevIxU6MS7kI4aggHPydlZvOUVvpBxdvxLnWp9DPw566Ax aIsTsQCp1fiJU/04XJOSDSp9AYSSRz4AeeO8k5xOUvx6Qtt7zY7oH+KFOEzfytKbl wckInuZCoTnVvULfrUJ/c0l89ptJNDUvPJy5yXq1nXhpxj3AwSjvpD33zv73O8bAm BoXfa+ZCRQxbTakA+R6Q5NxT79Jth9+tYie6DCjwih6lApo6qEdegrdAEc6AwU2ag BhMg71XNv8F/epVZuw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([88.130.49.173]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MDQiS-1rn7eW1qtC-00AUlW; Tue, 27 Feb 2024 11:13:06 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86zfvmthko.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 27 Feb 2024 10:52:23 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <87a5nmgaom.fsf@gmx.net> <86zfvmthko.fsf@gnu.org> Date: Tue, 27 Feb 2024 11:13:05 +0100 Message-ID: <87bk82mczy.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:gyEwVR7KM5IFtpxthEb4L19MpZJz8YXyC0szzMhlWRLor2JCAEo f4/XhOd5QSPyOfd/2PEGI7IdOjYR3t6yyFvkyvykXAmjdKzWe2UwONRMN+okUz6SydowRxZ e3W3aI/Sl+X4cTqZJ0wmZv7Apm8s0mQASuJBOIYjZQdz0sQoc2rNUihJEGBNLWBsnl+DnzO IK8XNGO06105scEgqjIKA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:1OXs5eLdjRs=;GgWdDCsrMztqzedidKzZ0uW82Bb 85M217BgqFSGPIe9PYCgQ0bkAC91AJAPuWGIpsRrf0XWZKT0vzXaAIGyGTpcxGPzP16E6WgYx 89wcBnXPjPb5Lq/Y8wYaYx4tCOVDmUo5BBr9phV4dlPIaXN1kvCPwEsYpxvGe+XKlJMSZMIgc teB5dh2t0mDKpqjyeqa8dxTVF9vgpqwtpxGWYVc35pw9vIZopjLbTcvqTG8dKOb1zXV2BQ9GI izQQMDVKht4+ZLEnT0VVF+BEcOhLI7FLvkMMoYk2vpnz9LlLgRxAn3o1gvC1jvXXxlLZBdYxl uKS6tHeoCUkrmtxjS2yxB3P2tVRjvvBuEIKQDqIOc5zzn73XCgKRM9tY0UkpeBdIimf/1YwD9 ULK65oIGIW6mf/YK8IIUzykXocyiLOKT21J873+bbdTpsw/Eyfn1TFjVk71083POHqKKT0VyU 3PgNW3VFspJJ/PHSTKa4kHDOI3RCXK+L7GH+wTWsrLs4RioW9CNqBdb284WGvM/8ciaXtgyE0 ECWRwJdCMA3znxdB7uT/+GujtjYKNFgKqrU3zMaEo+nOQbiL90oJ86Rf2Ypg3PSEP7fQLfsL3 1pFNvxxo1x6nOVxvfSBQLAeCE4WCv36Hkjf/q4gJYgg0k9tBpbgdYPWkL+weQBeDeLCADPN0h Q8hNCUublLKQVNQomygh8T5NuYZAkKHTOanMnOJdWhsHLGuxkgdh09vweGLk7li16nAjWSiow E4OOByUeqevMqclMN68Cenx4IwZtE+VXOr5u+PaM+F+PZHqMRrOGFcJScoUMMSqXuE5BQ1FsB abZYw2ZuMVHIhaPXwhnK6mGfXH37JGu162c61ZIxRysVw= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On Tue, 27 Feb 2024 10:52:23 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 22:47:21 +0100 >>=20 >> I created the test buffer now by first typing "Hello" and the inserting >> " =D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9=83=D9= =85 " on the right, so the base paragraph direction was LTR. >> Then I ran the benchmarks, and there is indeed a big difference, but one >> that I think will surprise you. > > It doesn't, see below. > >> First, the timing for the LTR run with bidi-display-reordering set >> to nil was: >>=20 >> (0.035104007 0 0.0) >>=20 >> This is, unsurprisingly, almost the same as the corresponding test run >> with RTL base paragraph direction, which was (0.034058467 0 0.0). >>=20 >> In contrast, recall that with bidi-display-reordering at the default >> value t, the RTL test run was (5.249231941 1 0.014300497000000023), but >> now the LTR test run gave this: >>=20 >> (10.613699099 1 0.012965359999999981) > > Yes, that's the result of the fix I installed yesterday: it makes the > display correct, but it costs more CPU, sometimes much more. My recollection is that I ran the benchmarks before updating master with your fix, but perhaps I misremember. So I just now ran the benchmarks for the default value of bidi-display-reordering again on emacs-29, which does not have your fix. Here is the result for the buffer with RTL base paragraph direction: (5.334990188 0 0.0) And for the buffer with LTR base paragraph direction: (10.537410334999999 1 0.011070665000000035) And I ran them again on master now, to be sure I'm testing with your fix; here are the respective results: (5.350407252 1 0.013722977000000025) (10.55348192 1 0.014691314999999983) So practically the same difference without and with your fix. > To see why this is so costly, disable auto-composition-mode in the > buffer, and compare the times with bidi-display-reordering nil and > non-nil. With auto-composition-mode disabled, you see the effect of > the reordering alone (because characters are still reordered for > display, just not shaped correctly, as C-f will show you), and it > should be quite small; at least, that's what I see here. The This I can confirm (on master with your fix); in the RTL buffer with bidi-display-reordering first t and then nil: (0.049796204999999996 0 0.0) (0.033475448 0 0.0) and likewise in the LRT buffer: (0.049654598 0 0.0) (0.033401513 0 0.0) > (mandatory) shaping of Arabic text is what takes most of the redisplay > time in these cases. In particular, M-> does a recenter to show EOB > nicely, and that is very expensive in this case; disable that > recentering by using "(goto-char (point-max))" instead to see the > difference. I guess by "does a recenter to show EOB nicely" you mean the call of (recenter -3) at the end of the code in end-of-buffer, because after calling (goto-char (point-max)) the last line is vertically centered in the window? >> The buffer size here is considerably larger than the buffers for my test >> runs; I couldn't remember it exactly, so I typed `M-: (point)' in the >> buffer, with the result 43901. It took a number of seconds for the >> result to be displayed, during which Emacs was unresponsive, so I then >> ran (benchmark-run nil (point)) in that buffer, with this result: >>=20 >> (9.030000000000001e-07 0 0.0) >>=20 >> I don't know what this result means, but the reported execution time >> bears no relation to actual elapsed time until the value of point was >> displayed. So I reran the benchmark and also manually timed it with a >> stopwatch. This is the result of the second benchmark: >>=20 >> (3.1120000000000004e-06 0 0.0) >>=20 >> However, the stopwatch showed fully 15 seconds. Maybe benchmark-run >> doesn't work for point for some reason. > > A Lisp program that just calls '(point)' doesn't include the redisplay > caused by "M-:", which enters the minibuffer, and therefore triggers a > fairly thorough redisplay of the window, and by display of the result. > That's Emacs's MVC design in action for you. Ah, ok; thanks for the explanation. >> This sounds plausible, but my results seem to indicate there something >> else (or more) going on. > > Yes: that something is character composition, which in the case of > Arabic text is quite expensive, because every chunk of Arabic text > between SPACEs goes through the shaping engine. > > (This explains well why Emacs tries so hard to call the shaper only > when absolutely necessary, contrary to HarfBuzz folks' opinions that > we should pass all the text through the shaping engine, to get correct > display with ligatures, kerning, and other niceties. They are right, > of course, but with the way character composition was designed in > Emacs, doing so would be prohibitive from the performance POV.) > >> > I will see if we can do better in this matter. >>=20 >> I appreciate whatever you can do. > >>>From what I've seen so far, it won't be easy, because it requires > changes to some key logic in the display code. Hmm... I'm afraid I can't help with the display code logic, but I'm happy to test any ideas you have. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Sun Mar 03 10:19:13 2024 Received: (at 69385) by debbugs.gnu.org; 3 Mar 2024 15:19:13 +0000 Received: from localhost ([127.0.0.1]:40903 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rgncO-0000kc-Kd for submit@debbugs.gnu.org; Sun, 03 Mar 2024 10:19:13 -0500 Received: from eggs.gnu.org ([209.51.188.92]:36790) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rgncM-0000kN-0c for 69385@debbugs.gnu.org; Sun, 03 Mar 2024 10:19:11 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rgnbn-0003iS-DZ; Sun, 03 Mar 2024 10:18:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=Uf6xj6fuko7jXhabk3uQvR9Tv4TsemJK6tbFpfxAbmk=; b=phv241yPcHmS Ne2wxiUA87V12GTKA5KojWys+xjNtL+zqegzpp+ARe8r4kdwWL3sa7a92kVCvq2bje6QNdOmOoEr1 MFnaO+zgTQlu8tT2Ebe/kefIYlASzVQo+1vfzVpohbn3jc1JDfswGQinos2q5oVbQdsW1+9L593bo 6zGDyef8CT8q+3IPPmd8bt+QB/FVVcIVzQZy1JZIqs+YOgrdrZOQuErJlIN1ny6CisCLKF5hqjTnD KOaMuCUgnZhkr76SZPr8nqzWTeS7LBz2HS9ZoFUS83M5INzHWDrdYT3ntLuMXGoSZ4HUz+amtttB7 Nt8jbbLaogO9Ly0gQQB92Q==; Date: Sun, 03 Mar 2024 17:18:31 +0200 Message-Id: <86edcrny2g.fsf@gnu.org> From: Eli Zaretskii To: stephen.berman@gmx.net In-Reply-To: <86bk83uj9a.fsf@gnu.org> (message from Eli Zaretskii on Mon, 26 Feb 2024 21:18:25 +0200) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Cc: 69385@debbugs.gnu.org > Date: Mon, 26 Feb 2024 21:18:25 +0200 > From: Eli Zaretskii > > The reason is that, when a paragraph's direction is right-to-left, > inserting a new glyph into glyph matrices pushes all the previous > glyphs, thus reversing them on the fly. Whereas in LTR paragraphs a > glyph is inserted by adding it to the end of the previous glyphs. And > pushing is more expensive. So now I understand why resetting > bidi-display-reordering had such a dramatic effect in your case: it > makes the paragraph render LTR as its side effect, which avoids the > costly pushing of glyphs. In a very long line, this cost is very > high. > > I will see if we can do better in this matter. Actually, the fact that glyphs are pushed is not the culprit here, since we only push as many glyphs as fit in a screen line, and that cannot be too many. The real culprit is the way we look for the next (actually, previous) composition that includes the given buffer position, when we scan characters backward (due to reordering). The current code causes us to scan all the way to BOB, which is especially painful with long lines without newlines. I've coded an optimization for that, see the patch below. Could you please try running with this patch for a week or two, and see if you can spot any problems? I hope you are editing those files with embedded Arabic frequently enough for these changes to be exercised. If you see no problems after a week or two, I will install this. Thanks. diff --git a/src/bidi.c b/src/bidi.c index 36d1a04..306b44a 100644 --- a/src/bidi.c +++ b/src/bidi.c @@ -754,6 +754,16 @@ bidi_cache_find_level_change (int level, int dir, bool before) return -1; } +ptrdiff_t +bidi_level_start (int level) +{ + ptrdiff_t slot = bidi_cache_find_level_change (level, -1, true); + + if (slot >= 0) + return bidi_cache[slot].charpos; + return -1; +} + static void bidi_cache_ensure_space (ptrdiff_t idx) { diff --git a/src/dispextern.h b/src/dispextern.h index 5387cb4..1c3232f 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3438,6 +3438,7 @@ #define TTY_CAP_STRIKE_THROUGH 0x20 extern void *bidi_shelve_cache (void); extern void bidi_unshelve_cache (void *, bool); extern ptrdiff_t bidi_find_first_overridden (struct bidi_it *); +extern ptrdiff_t bidi_level_start (int); /* Defined in xdisp.c */ diff --git a/src/xdisp.c b/src/xdisp.c index d03769e..140d711 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -4353,7 +4353,7 @@ compute_stop_pos (struct it *it) an automatic composition, limit the search of composable characters to that position. */ if (it->bidi_p && it->bidi_it.scan_dir < 0) - stoppos = -1; + stoppos = bidi_level_start (it->bidi_it.resolved_level) - 1; else if (!STRINGP (it->string) && it->cmp_it.stop_pos <= IT_CHARPOS (*it) && cmp_limit_pos > 0) @@ -8712,9 +8712,8 @@ set_iterator_to_next (struct it *it, bool reseat_p) ptrdiff_t stop = it->end_charpos; if (it->bidi_it.scan_dir < 0) - /* Now we are scanning backward and don't know - where to stop. */ - stop = -1; + /* Now we are scanning backward; figure out where to stop. */ + stop = bidi_level_start (it->bidi_it.resolved_level) - 1; composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it), IT_BYTEPOS (*it), stop, Qnil, true); } @@ -8745,7 +8744,7 @@ set_iterator_to_next (struct it *it, bool reseat_p) re-compute the stop position for composition. */ ptrdiff_t stop = it->end_charpos; if (it->bidi_it.scan_dir < 0) - stop = -1; + stop = bidi_level_start (it->bidi_it.resolved_level) - 1; composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it), IT_BYTEPOS (*it), stop, Qnil, true); @@ -9190,7 +9189,9 @@ get_visually_first_element (struct it *it) bytepos = IT_BYTEPOS (*it); } if (it->bidi_it.scan_dir < 0) - stop = -1; + stop = STRINGP (it->string) + ? -1 + : bidi_level_start (it->bidi_it.resolved_level) - 1; composition_compute_stop_pos (&it->cmp_it, charpos, bytepos, stop, it->string, true); } @@ -9694,9 +9695,10 @@ next_element_from_buffer (struct it *it) && PT < it->end_charpos) ? PT : it->end_charpos; } else - stop = it->bidi_it.scan_dir < 0 ? -1 : it->end_charpos; - if (CHAR_COMPOSED_P (it, IT_CHARPOS (*it), IT_BYTEPOS (*it), - stop) + stop = it->bidi_it.scan_dir < 0 + ? bidi_level_start (it->bidi_it.resolved_level) - 1 + : it->end_charpos; + if (CHAR_COMPOSED_P (it, IT_CHARPOS (*it), IT_BYTEPOS (*it), stop) && next_element_from_composition (it)) { return true; From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 04 08:29:32 2024 Received: (at 69385) by debbugs.gnu.org; 4 Mar 2024 13:29:32 +0000 Received: from localhost ([127.0.0.1]:42564 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rh8No-0002vs-B2 for submit@debbugs.gnu.org; Mon, 04 Mar 2024 08:29:32 -0500 Received: from mout.gmx.net ([212.227.17.22]:53457) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rh8Nj-0002vZ-LG for 69385@debbugs.gnu.org; Mon, 04 Mar 2024 08:29:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1709558931; x=1710163731; i=stephen.berman@gmx.net; bh=BLskbn02x0Xv977KM+MyCNEFX7ptfgPG6PYuknDEIe0=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=bGsFJpg/w0VynU/E6JaqK6VyWoyHJ0C4FlL7EgJa7nl/klwJg2kinwi6JcKtd23C RC+7x4TH1rfhyjR2m2a3a1TZJJb9RU6AETTo1xSOyGsv0UNjOucCbjWHt0ISg3+Tk L4WGbsZ1fRHQq6QfNRXR/gG3/B+b58SYJYWwK64jOn9LUrqtfxvONyBx6kcqp/TAy DnyBSTtDWPD7bDxNN4zrN6FbeQzAZ9HmJ9YCGFHNumZf97hU7G0OyQt3H0/HZt2c0 npOx0zkjV3TZQ5Nmfaglf5w1ySMtBC1aW9xLEYdJCXB9mSZioUC2cjrvBSIl7Zyjn 5/+5cha/JwsC0DHF7Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.94.42]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBUqF-1rZjau1pct-00D1HJ; Mon, 04 Mar 2024 14:28:51 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86edcrny2g.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 03 Mar 2024 17:18:31 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <86edcrny2g.fsf@gnu.org> Date: Mon, 04 Mar 2024 14:28:50 +0100 Message-ID: <87sf16azxp.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:zG1eVKUTF4eTQ5N05EbnQmMkGpCIXlQjET7wM+i/L9w+PUbx3qW CrfirL7kpTmAtPXlVqq4YeypdsVzfV1xoMngtdo+q0adcEdhDRYy8Rngrxa88UxHxZjiHjg EtWvtB76r0bXdRYeQxELXINQFfZHqhW4Pndyj092SJ/5ttbWy5DvjGTQ4BrlRLIjBpU+HxH P21AXKoEJpGAkL98WrpjA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:a0/Qh9iGhv4=;wZTxCZ2YEGpx5nS64QfD7YjvrgE C7xa+FohDFbD94cT2fO8Rcfx6vNToxvvKHdJQ4pfRbTHO0LEDkukCEMK1XH8DFcW5lPoP/hFg VNKCkoJzzwFWbfbkg1jpLZWjFNmTSgGdg0fqjUKR28TCPqfJ4rixSdDAVYHbmhqr2ISwA2+z4 SxauzSJXZRpyhCSb+3tltVQ6dfQ2CAt84q9V6dNXAOzWYMlC2/eavkwNeuRlTNv7cjDu1oJzy UAczN+SNalMxv7lU+XlZZB4EjP8eSzq9xwD1+pbmQ2pVF8wQE1FFUOwaZJZlo2ow2YLOfeR3u MqCB677jl7PpXRsXy8PY532V90T9qLFF7HNS+IA+LAPvo5UUAuvjN1IgRcT9d4QK8Gyg0ApLl WeQvpJ2oy8p8iCeHDxx5yDPpv9WnuKlTEGDtbXWXcOFIyLTQ2CoFYwIpqBJl3oKfyPLngpDu2 FxQ01pro2pA9k8/1G2pX97TU4DinN5TS7jWRfNqmLeLwn3xlmRBNS4Jyq4mhfx0ES/oUW4lsb VrOsRk+XMfSnu3d5DN/I10OHL3wcfLhQ/VgorOOr+M8GSJi+CT8AjlLg3Yes+BMrra5LOwKQW 2EQL4D2wNfFgSnUlwtztPH0UlCJENDyXiqUrQeHMAbCjq7JDmcKC9bBISSTLWzzs5p5yhFNGh cyzoWvSd3Mv4h9QUiv/rSqOHe/SzROOE7ZZj6VJ/W5bQIJm5b30IVdMDGAbWrqE1vW0Y1lX07 DJkhAg0z4Kqfb5wvSV9fuvYOXA5TYeMy+t8mwk0h/PrNvftUB14l5oQgAvUbaPBlVuNtvR+Vw b9e9owFHAwB/AgikRWjpfNempHA6ogE1CxQ0RCLAVdxyI= Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On Sun, 03 Mar 2024 17:18:31 +0200 Eli Zaretskii wrote: >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 26 Feb 2024 21:18:25 +0200 >> From: Eli Zaretskii >> >> The reason is that, when a paragraph's direction is right-to-left, >> inserting a new glyph into glyph matrices pushes all the previous >> glyphs, thus reversing them on the fly. Whereas in LTR paragraphs a >> glyph is inserted by adding it to the end of the previous glyphs. And >> pushing is more expensive. So now I understand why resetting >> bidi-display-reordering had such a dramatic effect in your case: it >> makes the paragraph render LTR as its side effect, which avoids the >> costly pushing of glyphs. In a very long line, this cost is very >> high. >> >> I will see if we can do better in this matter. > > Actually, the fact that glyphs are pushed is not the culprit here, > since we only push as many glyphs as fit in a screen line, and that > cannot be too many. > > The real culprit is the way we look for the next (actually, previous) > composition that includes the given buffer position, when we scan > characters backward (due to reordering). The current code causes us > to scan all the way to BOB, which is especially painful with long > lines without newlines. > > I've coded an optimization for that, see the patch below. Could you > please try running with this patch for a week or two, and see if you > can spot any problems? I applied the patch, rebuilt, started with -Q, made two test buffers using 800 concatenated copies of a bidirectional Arabic + English string, one with base paragraph direction RTL, one with LTR, and ran the end-of-buffer benchmark; here are the results: RTL with patch: (0.099171108 0 0.0) LTR with patch: (0.143149541 1 0.01330051900000001) Here for comparison my previous results without your patch: RTL without patch: (5.249231941 1 0.014300497000000023) LTR without patch: (10.613699099 1 0.012965359999999981) That's more than 50 times faster for the RTL test and more than 70 times faster for the LTR test -- impressive! > I hope you are editing those files with > embedded Arabic frequently enough for these changes to be exercised. As I mentioned previously, my real files are programmatically generated elisp files (so base paragraph direction LTR) not meant to be manually edited or even just viewed by users of the program, and I haven't edited them manually, and normally wouldn't. But I just now ran the end-of-buffer benchmark on one of them (the one I described previous, containing a vector of 827 lists of bidirectional strings in a single line), with this result: (0.849369497 4 0.05337466599999996) This was the timing without your patch: (9.308704995000001 4 0.054923504999999984) So for this file your patch yields "only" an almost 11 times faster benchmark. For navigation besides M-> and M-<, I find C-v, M-v, C-n, C-p in the buffer visiting this file still very slow (noticeably more than in the test buffers) and holding them down still freezes Emacs (with C-n and C-p for many seconds) and uses 100% of a CPU core; though, while I haven't tried timing these yet, my impression is that the freezes are not as long as the ones I observed without your patch. Also, there is still a marked delay when entering the minibuffer with M-x or M-: or when switching to another buffer with C-x b, though impressionistically no worse than the delays without your patch. I'll try to do more testing. > If you see no problems after a week or two, I will install this. Thanks. Steve Berman From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 04 09:44:11 2024 Received: (at 69385) by debbugs.gnu.org; 4 Mar 2024 14:44:11 +0000 Received: from localhost ([127.0.0.1]:42683 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rh9Y2-0007gn-OX for submit@debbugs.gnu.org; Mon, 04 Mar 2024 09:44:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54170) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rh9Y0-0007gY-Rx for 69385@debbugs.gnu.org; Mon, 04 Mar 2024 09:44:09 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rh9XR-00065Q-T0; Mon, 04 Mar 2024 09:43:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=vLA9ZKbAY3HpLpN5PZ5F0x2O9/nhubl5ZdqWuiusW/Q=; b=RGXo7K9cxLPS lhSsKf6bk7Z6GWxA+KuNsM+ognkyPQPTjXNiIzPf1Nlf+N4IobeX0mqPQa4SxI3yhzGhP6cd8YsfM UBclDz8q7L6Ghzpjmb5cPOBSH0NlShHHZdPcOXu8dNPgo0ShgomenJe4vNjhFuSX32PMWow7nPbaE VVLXtDxBlUq1TG67jlrfGCID+Tc5/dHuR88nB2dS0R0vi5EXKAiC+qAUQ7t7WjL7MoLl4NTp9NsZ5 MWaYgctPh/FxTV7BaOLr55d48toJcwToHfAmooL8np1t22BDT98mAf0TWas4od1rjZ7RMv7Iq2yOO SQZhISsR4OFmbJ7oDbmBIw==; Date: Mon, 04 Mar 2024 16:43:26 +0200 Message-Id: <86cysam50x.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <87sf16azxp.fsf@gmx.net> (message from Stephen Berman on Mon, 04 Mar 2024 14:28:50 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <86edcrny2g.fsf@gnu.org> <87sf16azxp.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Mon, 04 Mar 2024 14:28:50 +0100 > > On Sun, 03 Mar 2024 17:18:31 +0200 Eli Zaretskii wrote: > > I applied the patch, rebuilt, started with -Q, made two test buffers > using 800 concatenated copies of a bidirectional Arabic + English > string, one with base paragraph direction RTL, one with LTR, and ran the > end-of-buffer benchmark; here are the results: > > RTL with patch: (0.099171108 0 0.0) > LTR with patch: (0.143149541 1 0.01330051900000001) > > Here for comparison my previous results without your patch: > > RTL without patch: (5.249231941 1 0.014300497000000023) > LTR without patch: (10.613699099 1 0.012965359999999981) > > That's more than 50 times faster for the RTL test and more than 70 times > faster for the LTR test -- impressive! > > > I hope you are editing those files with > > embedded Arabic frequently enough for these changes to be exercised. > > As I mentioned previously, my real files are programmatically generated > elisp files (so base paragraph direction LTR) not meant to be manually > edited or even just viewed by users of the program, and I haven't edited > them manually, and normally wouldn't. But I just now ran the > end-of-buffer benchmark on one of them (the one I described previous, > containing a vector of 827 lists of bidirectional strings in a single > line), with this result: > > (0.849369497 4 0.05337466599999996) > > This was the timing without your patch: > > (9.308704995000001 4 0.054923504999999984) > > So for this file your patch yields "only" an almost 11 times faster > benchmark. For navigation besides M-> and M-<, I find C-v, M-v, C-n, > C-p in the buffer visiting this file still very slow (noticeably more > than in the test buffers) and holding them down still freezes Emacs > (with C-n and C-p for many seconds) and uses 100% of a CPU core; though, > while I haven't tried timing these yet, my impression is that the > freezes are not as long as the ones I observed without your patch. > Also, there is still a marked delay when entering the minibuffer with > M-x or M-: or when switching to another buffer with C-x b, though > impressionistically no worse than the delays without your patch. I'll > try to do more testing. Thanks for testing. The above matches what I see on my system. C-n and C-p is known to be problematic in long lines, but these changes speed them up as well, although perhaps not as well as the other commands. > > If you see no problems after a week or two, I will install this. > > Thanks. So I will wait for you to report any problems, and if no problems are seen, will install in a week or so. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 07 06:13:33 2024 Received: (at 69385) by debbugs.gnu.org; 7 Mar 2024 11:13:33 +0000 Received: from localhost ([127.0.0.1]:52663 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1riBgr-0004Rk-7I for submit@debbugs.gnu.org; Thu, 07 Mar 2024 06:13:33 -0500 Received: from mout.gmx.net ([212.227.15.15]:49633) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1riBgo-0004RJ-Ky for 69385@debbugs.gnu.org; Thu, 07 Mar 2024 06:13:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1709809973; x=1710414773; i=stephen.berman@gmx.net; bh=c58hu1+6eeCozltDugxeefVzNzXO9Vgr7sO6OQwe4X4=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=l6ASrEzDsT3Rp4JOtATgJdPgSSW9xXGY8G6xR1apMvXIFgbVT8u0XaedBSQZ2rjn udCehWBXla23Ioj2cJp0s4tpMPkQFq8TSh8g8QINHZMX9x+hdvRTtjhyUyjDzHAQm waJP6fbuigDErSSDEqste3yZSVKYSSvJAVTXPveCw0aCaN9E7hbrDrtICdwVGPTwe HO7i2ckW/9WjCVaq2L6McefDBg3Pvzr5UU0Y+ghkA1B+NeofLgXKjhAia5+cPB/9u 10oSMMvPg98ML3CQLBNH/btAvEVzGlpICQoz3Rxp4qGO4FJWtO6F0/B5jz0ZQ/pl5 ZJpEXSjbwanB4/y8PA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.94.231]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MQv8n-1rWSFX1TvT-00O1Af; Thu, 07 Mar 2024 12:12:52 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86cysam50x.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 04 Mar 2024 16:43:26 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <86edcrny2g.fsf@gnu.org> <87sf16azxp.fsf@gmx.net> <86cysam50x.fsf@gnu.org> Date: Thu, 07 Mar 2024 12:12:51 +0100 Message-ID: <871q8m8fd8.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Provags-ID: V03:K1:DolB2/m/YqfPTEkEXwlNbTqOJaVMoAJy4Xc1elphcitt3FDNElD kJtZvNMbW6YjrRS+EwF0tfcgVH42gxVTGJnX5A1ujmrd8eXBxShLLF/L+JsThDGOeGZNbO9 LoeyM93fLmaTZdAArFtsLBahgrDOX/OrniC8GdRBX0Ax342YsL0DCxXSo85xiwNvwusVDDC StDm9VWJNOXslMVFqPcMg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:2pfW8HmQWxE=;xdsrA8WHS8xStPnZz/PgjMbrtX3 hvLibThtrlPEUhkiWmju56YksofaYgOd58MnzatWrf5n8bAxgTPQZi0JHpSQkdS5TpC4iBhB1 h5dv47WXiCi9+iVsk0PtB+lsiiAA3wDp+B2JUhjaizcyDqF0F60xp9Z7Sl5CHacgoPa1hahpD i71cPIG17SmGEzJeA104SVeimGMc9rGJsSRpSBeKzLlJ3BytI4xbqsy411QpL2dFQ4wEgzWSx UBqukI0GnTIWSK4uPhSAf4AtbkpD22noJMj29M8YUuoWtwU38F87TgyIgzH19HQQbGPisTGMr 89PFbE7R9ptNv5GPg++K6h5VRtmY+Y6xpbY9aDe5CbRoLA6qMLWve04kFQTKhj4OvxxKSOg6E EiL55TaRYcD9pFETNbZiQuPN6zn8F9Kdx3FXhwEsLLG21nn9LwVtyAFnMyhsa00TJUi2lulu+ 9Dn6o9GpauQIjL2Gc0MCIfFNSdqeyv+deAIHFU9Qh1DAO6cGYWj5xG7ZYA8jI2+/SHhKga57r t9eus61oBtm2q/wHPN/vmMKVlNUI6FbdBQfzYBhiO05NshPWPyLw8DItuOXQ2YdD7VdI70nv1 KWNUnlmD7FZYnS8gxouYOIBhQqiTBxTy2eVDNI1XHttUpoytK511HGxGNohFk2OjcH2+FhM+7 de8hAOdygcMVyjonWtf0Ku7Sce4aolU2inEX5qmXNf60B1R8cau/BVmOe9vzn2hc43DZ/CgP0 r4ZOcBxjSvwbM5exGTIUh03NwNdDIJCApzGSJ1UzW6LP+rgyhow2AA2kfuJfn7qlSxW8Yj18W 8aV3u+g8lCJFYSvn0VCcr7uTgqJEo5Y28T/xR8ix5tX1k= X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Mon, 04 Mar 2024 16:43:26 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Mon, 04 Mar 2024 14:28:50 +0100 >> >> On Sun, 03 Mar 2024 17:18:31 +0200 Eli Zaretskii wrote: [...] >> > I hope you are editing those files with >> > embedded Arabic frequently enough for these changes to be exercised. >> >> As I mentioned previously, my real files are programmatically generated >> elisp files (so base paragraph direction LTR) not meant to be manually >> edited or even just viewed by users of the program, and I haven't edite= d >> them manually, and normally wouldn't. But I just now ran the >> end-of-buffer benchmark on one of them (the one I described previous, >> containing a vector of 827 lists of bidirectional strings in a single >> line), with this result: >> >> (0.849369497 4 0.05337466599999996) >> >> This was the timing without your patch: >> >> (9.308704995000001 4 0.054923504999999984) >> >> So for this file your patch yields "only" an almost 11 times faster >> benchmark. For navigation besides M-> and M-<, I find C-v, M-v, C-n, >> C-p in the buffer visiting this file still very slow (noticeably more >> than in the test buffers) and holding them down still freezes Emacs >> (with C-n and C-p for many seconds) and uses 100% of a CPU core; though= , >> while I haven't tried timing these yet, my impression is that the >> freezes are not as long as the ones I observed without your patch. >> Also, there is still a marked delay when entering the minibuffer with >> M-x or M-: or when switching to another buffer with C-x b, though >> impressionistically no worse than the delays without your patch. I'll >> try to do more testing. > > Thanks for testing. The above matches what I see on my system. C-n > and C-p is known to be problematic in long lines, but these changes > speed them up as well, although perhaps not as well as the other > commands. > >> > If you see no problems after a week or two, I will install this. >> >> Thanks. > > So I will wait for you to report any problems, and if no problems are > seen, will install in a week or so. I haven't yet run into any issues concerning your patch, but I have encountered a problem with another one of my generated files, which, though independent of your patch (the problem also happens in emacs-29), is an issue for bidirectional text in Emacs, so might be worth trying to handle better. If you want, I can open a separate bug to pursue this issue, but for now I'll summarize what I've observed so far. Most of the Arabic words in the problematic file are enclosed in the bidirectional control characters POP DIRECTIONAL FORMATTING (#x202c) and RIGHT-TO-LEFT EMBEDDING (#x202b). I did not add these characters, but I had copy-&-pasted most of the Arabic from a PDF file I did not create. I don't know if PDFs of Arabic text normally contain these control characters, but the consequences for Emacs were dramatic. When I simply visited this file in Emacs (started with -Q) there was an immediate slowdown, and in top I could see Emacs using 100% of a CPU thread. When I ran the end-of-buffer benchmark on this file, the result (with your patch) was: (27.962602113 2 0.0226042269999999977) However, the display of that result only appeared in the echo area after more than a minute (I timed it with a stopwatch). At that point the mode line showed the buffer at 4% from the top, and the display remained frozen afterwards. After several minutes during which Emacs consumed 100% CPU, and I had switched the focus away from the Emacs frame, the CPU consumption stopped, but as soon as I switch focus back to that frame, it went back to 100%. The display never changed from showing the buffer at 4%, apparently being in some kind of infinite loop. After about 15 minutes I started gdb, attached the Emacs process and produced a backtrace, which I've attached, in the hope it helps to diagnose the problem. The problem seems to be certainly related the the bidirectional control characters, because I made a copy of the file and removed all occurrences of these control characters from it, and then ran the end-of-buffer benchmark, getting this result (with your patch): (0.716104165 4 0.04223660400000001) And the display updated normally and CPU consumption was normal. Nevertheless, there seems to be something else besides the control characters involved in this issue, because as a futher test, I created a buffer consisting of more than 1000 copies of the test string concatenating the Arabic example in etc/HELLO and "Hello", and manually enclosed each Arabic word in the above control characters, but the benchmark result in this buffer was not significantly different from the result without the control characters (and similar to the above result for the copy of the problematic file without the control characters), and the display did not freeze. Steve Berman --=-=-= Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment Content-Transfer-Encoding: quoted-printable Content-Description: gdb backtrace steve [ ~ ]$ cd ~/build/emacs-master/ steve [ ~/build/emacs-master ]$ cd src/ steve [ ~/build/emacs-master/src ]$ gdb attach 5190 GNU gdb (GDB) 14.1 Copyright (C) 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-pc-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... attach: No such file or directory. Attaching to process 5190 [New LWP 5191] [New LWP 5192] [New LWP 5193] [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". 0x0000555dfeecedd0 in string_char_and_length ( p=3D0x555e01ec19f5 "a\" \"Wasser\") (\"=E2=80=AB=D9=85=D8=A7=D8=B4=D9= =8A=E2=80=AC =E2=80=AB=D8=B5=D8=AD=D9=8A=D8=AD=E2=80=AC\" \"ma-=C5=A1=C4=AB= =E1=B9=A3=E1=B8=A5=C4=AB=E1=B8=A5\" \"falsch\") (\"=D9=85=D9=82=D8=A7=D9= =86=D8=A9\" \"mag=C4=81na\" \"Armbanduhr (sg)\") (\"=E2=80=AB=D8=A7=D9=84= =D9=85=D8=AF=D9=8A=D9=86=D8=A9=E2=80=AC\" \"md=C4=ABna\" \"Stadt\") (\"=E2= =80=AB=D8=A7=D9=84=D9=85=D8=B1=D8=A7=D8=A9=E2=80=AC\" \"m=E1=B9=9Ba\" \"Fra= u\")"..., length=3Dlength@entry=3D0x7ffdd653c914) at /home/steve/src/emacs/emacs-master/src/character.h:375 375 int c =3D p[0]; SIGINT is used by the debugger. Are you sure you want to change it? (y or n) [answered Y; input not from te= rminal] DISPLAY =3D :0.0 TERM =3D dumb Breakpoint 1 at 0x555dfedf62b5: file /home/steve/src/emacs/emacs-master/src= /emacs.c, line 441. Breakpoint 2 at 0x555dfedba401: file /home/steve/src/emacs/emacs-master/src= /xterm.c, line 26955. (gdb) bt full #0 0x0000555dfeecedd0 in string_char_and_length (p=3D0x555e01ec19f5 "a\" \"Wasser\") (\"=E2=80=AB=D9=85=D8=A7=D8=B4=D9= =8A=E2=80=AC =E2=80=AB=D8=B5=D8=AD=D9=8A=D8=AD=E2=80=AC\" \"ma-=C5=A1=C4=AB= =E1=B9=A3=E1=B8=A5=C4=AB=E1=B8=A5\" \"falsch\") (\"=D9=85=D9=82=D8=A7=D9= =86=D8=A9\" \"mag=C4=81na\" \"Armbanduhr (sg)\") (\"=E2=80=AB=D8=A7=D9=84= =D9=85=D8=AF=D9=8A=D9=86=D8=A9=E2=80=AC\" \"md=C4=ABna\" \"Stadt\") (\"=E2= =80=AB=D8=A7=D9=84=D9=85=D8=B1=D8=A7=D8=A9=E2=80=AC\" \"m=E1=B9=9Ba\" \"Fra= u\")"..., length=3Dlength@entry=3D0x7ffdd653c914) at /home/steve/src/emacs/emacs-master/src/character.h:375 c =3D d =3D #1 0x0000555dfeecef2c in fetch_char_advance (charidx=3Dcharidx@entry=3D0x7ffdd653c998, byteidx=3Dbyteidx@entry=3D0x= 7ffdd653c990) at /home/steve/src/emacs/emacs-master/src/buffer.h:1652 chlen =3D 1 output =3D c =3D 715 b =3D 853 chp =3D #2 0x0000555dfeed1646 in composition_compute_stop_pos (cmp_it=3Dcmp_it@entry=3D0x7ffdd6548610, charpos=3D,=20 charpos@entry=3D712, bytepos=3D,=20 bytepos@entry=3D851, endpos=3D1212, string=3DXIL(0), include_static=3Di= nclude_static@entry=3Dfalse) at /home/steve/src/emacs/emacs-master/src/comp= osite.c:1111 start =3D 712 end =3D 93862197235720 c =3D prop =3D XIL(0x15b0840) val =3D #3 0x0000555dfed1a823 in compute_stop_pos (it=3Dit@entry=3D0x7ffdd6547d50) at /home/steve/src/emacs/emacs-master/src/xdisp.c:4364 stoppos =3D iv =3D 0x555e01417370 next_iv =3D object =3D limit =3D position =3D make_fixnum(712) charpos =3D 712 bytepos =3D 851 cmp_limit_pos =3D 816 #4 0x0000555dfed29110 in handle_stop_backwards (it=3Dit@entry=3D0x7ffdd6547d50, charpos=3D712) at /home/steve/src/emacs/emacs-master/src/xdisp.c:9547 bufp =3D where_we_are =3D 40034 save_current =3D { pos =3D { charpos =3D 40034, bytepos =3D 53054 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 } save_position =3D { charpos =3D , bytepos =3D } save_cmp_it =3D { stop_pos =3D 40036, id =3D -1, ch =3D -2, rule_idx =3D 0, lookback =3D 3, nglyphs =3D 4, reversed_p =3D false, parent_it =3D 0x7ffdd6547d50, charpos =3D 40037, nchars =3D 1, nbytes =3D 2, from =3D 0, to =3D 1, width =3D 1 } pos1 =3D { charpos =3D , bytepos =3D } next_stop =3D #5 0x0000555dfed30888 in next_element_from_buffer (it=3D0x7ffdd6547d50) at /home/steve/src/emacs/emacs-master/src/xdisp.c:9671 success_p =3D true #6 0x0000555dfed2f04d in get_next_display_element (it=3Dit@entry=3D0x7ffdd= 6547d50) at /home/steve/src/emacs/emacs-master/src/xdisp.c:8209 success_p =3D #7 0x0000555dfed31001 in move_it_in_display_line_to (it=3Dit@entry=3D0x7ffdd6547d50, to_charpos=3Dto_charpos@entry=3D-1, to= _x=3Dto_x@entry=3D-1, op=3Dop@entry=3D0) at /home/steve/src/emacs/emacs-mas= ter/src/xdisp.c:10000 x =3D i =3D ascent =3D 0 descent =3D 0 result =3D MOVE_UNDEFINED saved_glyph_row =3D wrap_it =3D { window =3D XIL(0x7fffffff), w =3D 0x7f4fe8869d9c , f =3D 0x7ffdd653cc90, method =3D GET_FROM_BUFFER, stop_charpos =3D 2147483647, prev_stop =3D 3129692744534274048, base_level_stop =3D 140728199269584, end_charpos =3D 93862224957552, medium_narrowing_begv =3D 140728199269696, medium_narrowing_zv =3D 93862227212832, large_narrowing_begv =3D 0, large_narrowing_zv =3D 0, s =3D 0x0, string_nchars =3D 139981180282385, multibyte_p =3D false, tab_line_p =3D false, header_line_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D false, ellipsis_p =3D true, avoid_cursor_p =3D false, dp =3D 0x0, dpvec =3D 0x7ffdd653cd40, dpend =3D 0x555dfee031fc , dpvec_char_len =3D 0, dpvec_face_id =3D 0, saved_face_id =3D -19160126, ctl_chars =3D {XIL(0x140), XIL(0x555e009cf588), XIL(0x7f4fd92963a= 0), make_fixnum(23465549106254), XIL(0), XIL(0), XIL(0x1e5b), XIL(0x555dfed= 8e64b), XIL(0), XIL(0), XIL(0x1e5b), XIL(0x555dfee6d1e3), XIL(0x555dfee4209= c), XIL(0x120), XIL(0), XIL(0)}, start =3D { pos =3D { charpos =3D 0, bytepos =3D 93862196864775 }, overlay_string_index =3D 2, string_pos =3D { charpos =3D 93862196683681, bytepos =3D 93862238029888 }, dpvec_index =3D 0 }, current =3D { pos =3D { charpos =3D 140728199273472, bytepos =3D 3129692744534274048 }, overlay_string_index =3D 10, string_pos =3D { charpos =3D 140728199273472, bytepos =3D 10 }, dpvec_index =3D -18595865 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 0, overlay_strings =3D {XIL(0x555e01742f88), XIL(0), XIL(0x1e5b), XI= L(0x555dfee6d1e3), make_fixnum(192), XIL(0x140), XIL(0), XIL(0), XIL(0), XI= L(0x555dfee6d1e3), XIL(0x555dfee4209c), XIL(0x140), XIL(0), XIL(0), XIL(0),= XIL(0x555dfee6e707)}, string_overlays =3D {make_fixnum(0), XIL(0x555dfee423a1), XIL(0x5= 55e015b0840), XIL(0), XIL(0x7ffdd653dce0), XIL(0x2b6ee6f826153000), make_fi= xnum(2), XIL(0x7ffdd653dce0), make_fixnum(2), XIL(0x555dfee43fe7), XIL(0), = XIL(0), XIL(0x555e01742f88), XIL(0x7ffdd653dd10), XIL(0xc), XIL(0x555dfee43= fe7)}, string =3D XIL(0), from_overlay =3D XIL(0), stack =3D {{ string =3D XIL(0x555e01742f88), string_nchars =3D -699150560, end_charpos =3D 4294967296, stop_charpos =3D 3, prev_stop =3D 4294967296, base_level_stop =3D 4607182418800017408, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 770, rule_idx =3D 93862195947083, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x302, charpos =3D 93862196859363, nchars =3D -18603876, nbytes =3D 21853, from =3D 288, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x555dfee6e707), y =3D make_fixnum(0), width =3D XIL(0x555dfee423a1), height =3D XIL(0x555e015b0840) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 140728199274000, bytepos =3D 3129692744534274048 }, current =3D { pos =3D { charpos =3D 10, bytepos =3D 140728199274000 }, overlay_string_index =3D 10, string_pos =3D { charpos =3D 93862196690919, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0x555e01742f88), area =3D RIGHT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D (unknown: 0xd653d050), multibyte_p =3D true, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D true, display_ellipsis_p =3D true, avoid_cursor_p =3D true, bidi_p =3D true, from_disp_prop_p =3D true, line_wrap =3D (unknown: 0xd653d290), voffset =3D 32765, space_width =3D XIL(0x4020000000000000), font_height =3D make_fixnum(34995296073782) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 4607182418800017432, stop_charpos =3D 0, prev_stop =3D 140728199270512, base_level_stop =3D 140728199270512, cmp_it =3D { stop_pos =3D 4294967296, id =3D 3, ch =3D 0, rule_idx =3D 4607182418800017408, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x3ff0000000000000, charpos =3D -4602678819172646912, nchars =3D 0, nbytes =3D -1068433408, from =3D 0, to =3D 1072693248, width =3D 0 }, face_id =3D 638922752, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x555e008eba30), y =3D XIL(0x555e008eba30), width =3D XIL(0x7f4fe86c8b00), height =3D XIL(0x555e008eba30) }, image_id =3D 60824584 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 93862224640560, bytepos =3D 139981178528230 }, current =3D { pos =3D { charpos =3D 93862236179456, bytepos =3D 93862236179456 }, overlay_string_index =3D -632, string_pos =3D { charpos =3D 11, bytepos =3D 93862236383136 }, dpvec_index =3D -699149680 }, from_overlay =3D XIL(0x7ffdd653d260), area =3D -562206449, method =3D 32591, paragraph_embedding =3D (unknown: 0x13ecc00), multibyte_p =3D false, string_from_display_prop_p =3D true, string_from_prefix_prop_p =3D true, display_ellipsis_p =3D true, avoid_cursor_p =3D true, bidi_p =3D false, from_disp_prop_p =3D true, line_wrap =3D (unknown: 0x26153000), voffset =3D -6408, space_width =3D XIL(0x555e013ecc00), font_height =3D XIL(0x555e00a18400) }, { string =3D XIL(0x1), string_nchars =3D -389616844, end_charpos =3D 93862236383136, stop_charpos =3D 93862247499248, prev_stop =3D 93862247499248, base_level_stop =3D 139981184293487, cmp_it =3D { stop_pos =3D 93862228119120, id =3D 139981184293732, ch =3D 0, rule_idx =3D 93862228985664, lookback =3D 0, nglyphs =3D -389358438, reversed_p =3D 79, parent_it =3D 0x0, charpos =3D 93862228985664, nchars =3D 0, nbytes =3D 0, from =3D -382242417, to =3D 32591, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0x4020000000000000), slice =3D { x =3D XIL(0x4044000000000000), y =3D XIL(0x7f4fe98f61c0), width =3D XIL(0x4034000000000000), height =3D XIL(0x3ff0000000000000) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0x4020000000000000) }, xwidget =3D { object =3D XIL(0x4020000000000000) } }, position =3D { charpos =3D 0, bytepos =3D 4607182418800017408 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 4607182418800017408, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0x3ff0000000000000) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 3129692744534274048, prev_stop =3D 0, base_level_stop =3D 93862228985664, cmp_it =3D { stop_pos =3D 0, id =3D 93862228985664, ch =3D 16, rule_idx =3D 0, lookback =3D 30, nglyphs =3D -384065531, reversed_p =3D 79, parent_it =3D 0x4010000000000000, charpos =3D 4629981891913580544, nchars =3D 0, nbytes =3D 1075838976, from =3D 0, to =3D 1078198272, width =3D 16 }, face_id =3D 17749344, u =3D { image =3D { object =3D XIL(0x555e012ecc90), slice =3D { x =3D make_fixnum(34995297597800), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0x4082100000000000) }, image_id =3D 93862228985664 }, stretch =3D { object =3D XIL(0x555e012ecc90) }, xwidget =3D { object =3D XIL(0x555e012ecc90) } }, position =3D { charpos =3D 4629137466983448576, bytepos =3D 4625196817309499392 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 1125917086973956 }, overlay_string_index =3D 4631952216750555136, string_pos =3D { charpos =3D 206158430208, bytepos =3D 133143986177 }, dpvec_index =3D 14 }, from_overlay =3D XIL(0xffffffffffffffff), area =3D 16, method =3D 578, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0x26153000), voffset =3D -6408, space_width =3D XIL(0), font_height =3D XIL(0x555e00d10740) }, { string =3D XIL(0x555e00f1a1c0), string_nchars =3D 13698880, end_charpos =3D 16, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 139981191755885, cmp_it =3D { stop_pos =3D 93862234902688, id =3D 93862247595984, ch =3D 0, rule_idx =3D 0, lookback =3D 93862203327856, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x140, charpos =3D 0, nchars =3D 32303200, nbytes =3D 21854, from =3D 1, to =3D 0, width =3D 32249505 }, face_id =3D 1856, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D make_fixnum(13423), y =3D XIL(0), width =3D XIL(0x555e01ece860), height =3D XIL(0xd1bf) }, image_id =3D 6398880 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 93862247536289 }, current =3D { pos =3D { charpos =3D 93862247589984, bytepos =3D 0 }, overlay_string_index =3D 93862247536289, string_pos =3D { charpos =3D 93862196800205, bytepos =3D 93862247536289 }, dpvec_index =3D 32303199 }, from_overlay =3D XIL(0x100000000), area =3D 24510832, method =3D 21854, paragraph_embedding =3D (unknown: 0xd653c750), multibyte_p =3D true, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D true, display_ellipsis_p =3D true, avoid_cursor_p =3D true, bidi_p =3D true, from_disp_prop_p =3D true, line_wrap =3D (unknown: 0x26153000), voffset =3D -6408, space_width =3D XIL(0x555dff4aa2a0), font_height =3D XIL(0) }}, sp =3D -1, selective =3D 2, what =3D 39552, face_id =3D 0, selective_display_ellipsis_p =3D false, ctl_arrow_p =3D false, face_box_p =3D false, start_of_box_run_p =3D false, end_of_box_run_p =3D false, overlay_strings_at_end_processed_p =3D false, ignore_overlay_strings_at_pos_p =3D false, glyph_not_available_p =3D false, starts_in_middle_of_char_p =3D true, face_before_selective_p =3D true, constrain_row_ascent_descent_p =3D true, line_number_produced_p =3D false, line_wrap =3D (WORD_WRAP | unknown: 0x555c), base_face_id =3D 32249505, c =3D 21854, len =3D 288, cmp_it =3D { stop_pos =3D 0, id =3D 93862203400864, ch =3D 39552, rule_idx =3D 0, lookback =3D 2, nglyphs =3D 11873716, reversed_p =3D 94, parent_it =3D 0x7ffdd6545590, charpos =3D 93862196802928, nchars =3D 53695, nbytes =3D 0, from =3D -699148832, to =3D 32765, width =3D 2 }, char_to_display =3D 0, glyphless_method =3D GLYPHLESS_DISPLAY_THIN_SPACE, image_id =3D 93862203400864, xwidget =3D 0x555dfee6d2a3 , slice =3D { x =3D XIL(0), y =3D XIL(0x100), width =3D XIL(0), height =3D XIL(0) }, space_width =3D XIL(0x100), voffset =3D -6393, tab_width =3D -282, font_height =3D XIL(0xb), object =3D XIL(0x9a80), position =3D { charpos =3D 0, bytepos =3D 93862238029893 }, truncation_pixel_width =3D -25006, continuation_pixel_width =3D 0, first_visible_x =3D 0, last_visible_x =3D 638922752, last_visible_y =3D 728688376, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D 40530, override_descent =3D 0, override_boff =3D 53695, glyph_row =3D 0x555dfed91191 , area =3D -699113528, nglyphs =3D 32765, pixel_width =3D -699113528, ascent =3D 32765, descent =3D 1, max_ascent =3D 0, max_descent =3D 0, phys_ascent =3D 0, phys_descent =3D -1, max_phys_ascent =3D 0, max_phys_descent =3D -19313843, current_x =3D 21853, wrap_prefix_width =3D -699113904, continuation_lines_width =3D 32765, eol_pos =3D { charpos =3D 93862196398651, bytepos =3D 0 }, current_y =3D 638922752, first_vpos =3D 728688376, vpos =3D 7, hpos =3D 0, lnum =3D 2748, lnum_bytepos =3D 2749, lnum_width =3D 22743109, lnum_pixel_width =3D 21854, pt_lnum =3D 93862238029888, stretch_adjust =3D -18795734, left_user_fringe_bitmap =3D 21853, right_user_fringe_bitmap =3D 0, left_user_fringe_face_id =3D 0, right_user_fringe_face_id =3D 0, bidi_p =3D false, bidi_it =3D { bytepos =3D 3129692744534274048, charpos =3D 7, ch =3D -699146776, nchars =3D 140728199273952, ch_len =3D 3339, type =3D 4252, type_after_wn =3D UNKNOWN_BT, orig_type =3D 4276079163, resolved_level =3D 93 ']', isolate_level =3D 85 'U', invalid_levels =3D 0, invalid_isolates =3D 139981011526752, prev =3D { charpos =3D 7, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, last_strong =3D { charpos =3D 93862203244384, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, next_for_neutral =3D { charpos =3D 65536, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, prev_for_neutral =3D { charpos =3D 0, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, next_for_ws =3D { charpos =3D 0, type =3D 3339, orig_type =3D UNKNOWN_BT }, bracket_pairing_pos =3D 4252, bracket_enclosed_type =3D UNKNOWN_BT, next_en_pos =3D 3237, next_en_type =3D 32253756, sos =3D (R2L | unknown: 0x555c), scan_dir =3D -699146860, disp_pos =3D 140728199273952, disp_prop =3D -699146776, stack_idx =3D 32765, level_stack =3D {{ next_for_neutral_pos =3D 97, next_for_neutral_type =3D 1, last_strong_type =3D 4, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 150, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 6, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862195442126, next_for_neutral_type =3D 2, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196888121, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227032888, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 46118720091616, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 2, level =3D 186 '\272', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227512104, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 93862196920518, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 7, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196920557, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196013788, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199272720, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196013904, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862196021611, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199272688, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 5, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196888121, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196021182, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 20, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 218 '\332', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227511472, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 186 '\272', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196022527, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 3, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199272688, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196013788, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 3, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139980923453572, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 7, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 46118720091616, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 46118720091616, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 12225320, next_for_neutral_type =3D 4, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862236158512, next_for_neutral_type =3D 6, last_strong_type =3D 4, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 34, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139980289868980, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139980923453572, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862236158512, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1575, next_for_neutral_type =3D 2, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1575, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 3, level =3D 9 '\t', flags =3D 225 '\341' }, { next_for_neutral_pos =3D 139981055056485, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 1, level =3D 155 '\233', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054792652, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 0, level =3D 62 '>', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 139981054502179, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 7, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862225451088, next_for_neutral_type =3D 7, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184593290, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 3, level =3D 65 'A', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 7, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 7, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862236350160, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184603390, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 7, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199273344, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 2, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 40531, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196515812, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 6, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 140728199273424, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 3, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199304592, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862195526737, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40529, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 256, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 20, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199273472, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 2, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199273424, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40528, next_for_neutral_type =3D 2, last_strong_type =3D 2, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199273904, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196052035, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 5, level =3D 172 '\254', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 93862196921941, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 147 '\223', flags =3D 150 '\226' }, { next_for_neutral_pos =3D 6, next_for_neutral_type =3D 7, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196926894, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862236154704, next_for_neutral_type =3D 6, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 5, level =3D 172 '\254', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 93862196890866, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 229 '\345', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862196916060, next_for_neutral_type =3D 3, last_strong_type =3D 4, prev_for_neutral_type =3D 6, level =3D 87 'W', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 28896, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197235720, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862197229629, next_for_neutral_type =3D 6, last_strong_type =3D 1, prev_for_neutral_type =3D 5, level =3D 2 '\002', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196890866, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 229 '\345', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199217153, next_for_neutral_type =3D 0, last_strong_type =3D 3, prev_for_neutral_type =3D 4, level =3D 238 '\356', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 41472, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862197229629, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196890866, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 229 '\345', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199217153, next_for_neutral_type =3D 0, last_strong_type =3D 3, prev_for_neutral_type =3D 4, level =3D 238 '\356', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 44928, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862237823907, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197235693, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 44928, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40529, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 44928, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862197235806, next_for_neutral_type =3D 6, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 2 '\002', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197246296, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862197252756, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 6, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 186 '\272', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862197235693, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40529, next_for_neutral_type =3D 2, last_strong_type =3D 2, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 162518, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862247360216, next_for_neutral_type =3D 1, last_strong_type =3D 2, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195472419, next_for_neutral_type =3D 6, last_strong_type =3D 7, prev_for_neutral_type =3D 6, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D -1, next_for_neutral_type =3D 5, last_strong_type =3D 6, prev_for_neutral_type =3D 2, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 162118, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 638922752, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227613808, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862227613808, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195645371, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199304592, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195474434, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199304592, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227511472, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227047680, next_for_neutral_type =3D 2, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195558096, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199304592, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 7, level =3D 255 '\377', flags =3D 255 '\377' }}, string =3D { lstring =3D XIL(0x2b6ee6f826153000), s =3D 0x8 , schars =3D 2, bufpos =3D 1, from_disp_str =3D false, unibyte =3D false }, w =3D 0x8, paragraph_dir =3D (R2L | unknown: 0xe0), separator_limit =3D 140728199304592, first_elt =3D false, new_paragraph =3D true, frame_window_p =3D true }, paragraph_embedding =3D (unknown: 0x8), min_width_property =3D XIL(0), min_width_start =3D 40530 } atpos_it =3D { window =3D XIL(0xe200000009), w =3D 0x0, f =3D 0x1c2, method =3D GET_FROM_DISPLAY_VECTOR, stop_charpos =3D 0, prev_stop =3D 40531, base_level_stop =3D 128849084672, end_charpos =3D 0, medium_narrowing_begv =3D 0, medium_narrowing_zv =3D 0, large_narrowing_begv =3D 4607182418800017408, large_narrowing_zv =3D 0, s =3D 0x0, string_nchars =3D 4607182418800017408, multibyte_p =3D false, tab_line_p =3D false, header_line_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D false, ellipsis_p =3D false, avoid_cursor_p =3D false, dp =3D 0x0, dpvec =3D 0x0, dpend =3D 0x555dfee6d1e3 , dpvec_char_len =3D -18603876, dpvec_face_id =3D 21853, saved_face_id =3D 352, ctl_chars =3D {XIL(0), XIL(0), XIL(0), XIL(0x555dfee6e707), make_= fixnum(0), XIL(0x555dfee423a1), XIL(0x555e015b0840), XIL(0), XIL(0x7ffdd653= ef00), XIL(0x2b6ee6f826153000), make_fixnum(2), XIL(0x555dfee6d1e3), XIL(0x= 555dfee4209c), XIL(0x120), XIL(0), XIL(0)}, start =3D { pos =3D { charpos =3D 0, bytepos =3D 93862196864775 }, overlay_string_index =3D 2, string_pos =3D { charpos =3D 93862196683681, bytepos =3D 93862238029888 }, dpvec_index =3D 0 }, current =3D { pos =3D { charpos =3D 140728199278448, bytepos =3D 3129692744534274048 }, overlay_string_index =3D 10, string_pos =3D { charpos =3D 140728199278448, bytepos =3D 10 }, dpvec_index =3D -18595865 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 0, overlay_strings =3D {XIL(0x555e01742f88), XIL(0x555dfee6e707), ma= ke_fixnum(0), XIL(0x555dfee423a1), XIL(0x555e015b0840), XIL(0), XIL(0x7ffdd= 653efe0), XIL(0x2b6ee6f826153000), make_fixnum(2), XIL(0x555dfee6d1e3), XIL= (0x555dfee4209c), XIL(0x140), XIL(0), XIL(0), XIL(0), XIL(0x555dfee6e707)}, string_overlays =3D {make_fixnum(0), XIL(0x555dfee423a1), XIL(0x5= 55e015b0840), XIL(0), XIL(0x7ffdd653f050), XIL(0x2b6ee6f826153000), make_fi= xnum(2), XIL(0x7ffdd653f050), make_fixnum(2), XIL(0x555dfee43fe7), XIL(0), = XIL(0), XIL(0x555e01742f88), XIL(0x7ffdd653f080), make_fixnum(2), XIL(0x555= dfee43fe7)}, string =3D XIL(0), from_overlay =3D XIL(0), stack =3D {{ string =3D XIL(0x555e01742f88), string_nchars =3D 352, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 93862196864775, cmp_it =3D { stop_pos =3D 2, id =3D 93862196683681, ch =3D 22743104, rule_idx =3D 0, lookback =3D 140728199278864, nglyphs =3D 638922752, reversed_p =3D 248, parent_it =3D 0xa, charpos =3D 93862196859363, nchars =3D -18603876, nbytes =3D 21853, from =3D 288, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x555dfee6e707), y =3D make_fixnum(0), width =3D XIL(0x555dfee423a1), height =3D XIL(0x555e015b0840) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 140728199278976, bytepos =3D 3129692744534274048 }, current =3D { pos =3D { charpos =3D 10, bytepos =3D 140728199278976 }, overlay_string_index =3D 10, string_pos =3D { charpos =3D 93862196690919, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0x555e01742f88), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D (unknown: 0xd1ff50), multibyte_p =3D false, string_from_display_prop_p =3D true, string_from_prefix_prop_p =3D true, display_ellipsis_p =3D true, avoid_cursor_p =3D true, bidi_p =3D false, from_disp_prop_p =3D true, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0x555e00d10740), font_height =3D XIL(0x7f4fe8c6ea4d) }, { string =3D XIL(0x555e01ef6390), string_nchars =3D 11664480, end_charpos =3D 93862226951264, stop_charpos =3D 139981184289605, prev_stop =3D 93862228986624, base_level_stop =3D 139981184290291, cmp_it =3D { stop_pos =3D 93862226475744, id =3D 93862228985664, ch =3D 0, rule_idx =3D 139981184750359, lookback =3D 93862228985664, nglyphs =3D 32465808, reversed_p =3D 94, parent_it =3D 0x0, charpos =3D 139981191864745, nchars =3D 0, nbytes =3D 1074790400, from =3D 0, to =3D 1074790400, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0x4030000000000000), slice =3D { x =3D XIL(0x4048000000000000), y =3D XIL(0), width =3D XIL(0x403c000000000000), height =3D XIL(0x555e00b1fc60) }, image_id =3D 139981190607116 }, stretch =3D { object =3D XIL(0x4030000000000000) }, xwidget =3D { object =3D XIL(0x4030000000000000) } }, position =3D { charpos =3D 93862228986624, bytepos =3D 139981184290291 }, current =3D { pos =3D { charpos =3D 93862225937520, bytepos =3D 93862228985664 }, overlay_string_index =3D 1, string_pos =3D { charpos =3D 139981184750359, bytepos =3D 4294967295 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0x1), area =3D 638922752, method =3D 728688376, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0xe8c3d878), voffset =3D 32591, space_width =3D XIL(0x7ffdd653e510), font_height =3D XIL(0x555e010cc210) }, { string =3D XIL(0x7ffdd653e600), string_nchars =3D 0, end_charpos =3D 140728199275984, stop_charpos =3D 139981184375602, prev_stop =3D 4607182418800017408, base_level_stop =3D 139981184293487, cmp_it =3D { stop_pos =3D 93862239763792, id =3D 139981184293732, ch =3D 0, rule_idx =3D 93862228985664, lookback =3D 0, nglyphs =3D -389358438, reversed_p =3D 79, parent_it =3D 0x7ffdd653e600, charpos =3D 93862228985664, nchars =3D 0, nbytes =3D 0, from =3D -382242417, to =3D 32591, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0x4020000000000000), slice =3D { x =3D XIL(0x4044000000000000), y =3D XIL(0x7f4fe98f61c0), width =3D XIL(0x4034000000000000), height =3D XIL(0x3ff0000000000000) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0x4020000000000000) }, xwidget =3D { object =3D XIL(0x4020000000000000) } }, position =3D { charpos =3D 0, bytepos =3D 4607182418800017408 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 4607182418800017408, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0x3ff0000000000000) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 3129692744534274048, prev_stop =3D 0, base_level_stop =3D 93862228985664, cmp_it =3D { stop_pos =3D 0, id =3D 93862228985664, ch =3D -19793941, rule_idx =3D 93862227512104, lookback =3D 8, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x5, charpos =3D 0, nchars =3D -19789744, nbytes =3D 21853, from =3D -19793941, to =3D 21853, width =3D 12225320 }, face_id =3D 12224688, u =3D { image =3D { object =3D XIL(0x28f), slice =3D { x =3D XIL(0x8), y =3D XIL(0), width =3D XIL(0x555dfed60e39), height =3D XIL(0x555dfed1f7eb) }, image_id =3D 93862227512104 }, stretch =3D { object =3D XIL(0x28f) }, xwidget =3D { object =3D XIL(0x28f) } }, position =3D { charpos =3D 8, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 5, bytepos =3D 0 }, overlay_string_index =3D 93862195497040, string_pos =3D { charpos =3D 93862195492843, bytepos =3D 93862227512104 }, dpvec_index =3D 12224688 }, from_overlay =3D XIL(0x28f), area =3D 8, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (WORD_WRAP | unknown: 0xfed60e38), voffset =3D 21853, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0x65), string_nchars =3D 672, end_charpos =3D 34359739040, stop_charpos =3D 48, prev_stop =3D 48, base_level_stop =3D 93862227511472, cmp_it =3D { stop_pos =3D 101, id =3D 140728199276576, ch =3D -632, rule_idx =3D 11, lookback =3D 8, nglyphs =3D -392806152, reversed_p =3D 79, parent_it =3D 0x555e00ba88b0, charpos =3D 139981011904783, nchars =3D 0, nbytes =3D 0, from =3D -393797650, to =3D 32591, width =3D 9911168 }, face_id =3D -393918965, u =3D { image =3D { object =3D XIL(0x3a0007900000010), slice =3D { x =3D XIL(0x7ffdd653e838), y =3D XIL(0xffffffff), width =3D XIL(0x555e00902180), height =3D XIL(0x3a00079) }, image_id =3D 93862227212832 }, stretch =3D { object =3D XIL(0x3a0007900000010) }, xwidget =3D { object =3D XIL(0x3a0007900000010) } }, position =3D { charpos =3D 139981574111231, bytepos =3D 93862227511472 }, current =3D { pos =3D { charpos =3D 4294967295, bytepos =3D 139981191351200 }, overlay_string_index =3D 93866510254079, string_pos =3D { charpos =3D 93862196425212, bytepos =3D 93862228070080 }, dpvec_index =3D -18963733 }, from_overlay =3D XIL(0xffffffff), area =3D 12783296, method =3D 21854, paragraph_embedding =3D (L2R | R2L | unknown: 0xfffffffc), multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0xb5fa20), voffset =3D 21854, space_width =3D XIL(0), font_height =3D make_fixnum(23465549230129) }}, sp =3D -1, selective =3D 93862195957896, what =3D 4294967295, face_id =3D 32591, selective_display_ellipsis_p =3D true, ctl_arrow_p =3D false, face_box_p =3D false, start_of_box_run_p =3D false, end_of_box_run_p =3D false, overlay_strings_at_end_processed_p =3D false, ignore_overlay_strings_at_pos_p =3D true, glyph_not_available_p =3D false, starts_in_middle_of_char_p =3D true, face_before_selective_p =3D false, constrain_row_ascent_descent_p =3D false, line_number_produced_p =3D false, line_wrap =3D (WORD_WRAP | unknown: 0x555c), base_face_id =3D -1, c =3D 32765, len =3D 1, cmp_it =3D { stop_pos =3D 0, id =3D 93862195968988, ch =3D 12224688, rule_idx =3D 93857920319596, lookback =3D 93866510254079, nglyphs =3D 60817529, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 11926048, nbytes =3D 21854, from =3D -19328888, to =3D 21853, width =3D 12224688 }, char_to_display =3D -19328703, glyphless_method =3D 21853, image_id =3D 140728199312184, xwidget =3D 0x1, slice =3D { x =3D XIL(0), y =3D XIL(0x555dfed93bdc), width =3D XIL(0x100000001), height =3D XIL(0x7ffd0000006c) }, space_width =3D XIL(0x1), voffset =3D 0, tab_width =3D 0, font_height =3D XIL(0x1), object =3D XIL(0x555dfed94b4d), position =3D { charpos =3D 9218868437227405311, bytepos =3D 93862195957896 }, truncation_pixel_width =3D 0, continuation_pixel_width =3D 0, first_visible_x =3D 0, last_visible_x =3D -19328826, last_visible_y =3D 21853, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D 638922752, override_descent =3D 728688376, override_boff =3D 108, glyph_row =3D 0x555dfed91191 , area =3D TEXT_AREA, nglyphs =3D 0, pixel_width =3D -699108552, ascent =3D 32765, descent =3D 1, max_ascent =3D 0, max_descent =3D 0, phys_ascent =3D 0, phys_descent =3D 1, max_phys_ascent =3D 0, max_phys_descent =3D -19313843, current_x =3D 21853, wrap_prefix_width =3D -699143208, continuation_lines_width =3D 32765, eol_pos =3D { charpos =3D 93862224752384, bytepos =3D 93862225051904 }, current_y =3D 638922752, first_vpos =3D 728688376, vpos =3D 11797024, hpos =3D 21854, lnum =3D 139981192813558, lnum_bytepos =3D 93862227083808, lnum_width =3D -380622904, lnum_pixel_width =3D 32591, pt_lnum =3D 0, stretch_adjust =3D 638922752, left_user_fringe_bitmap =3D 59128, right_user_fringe_bitmap =3D 11118, left_user_fringe_face_id =3D 256944, right_user_fringe_face_id =3D 32765, bidi_p =3D false, bidi_it =3D { bytepos =3D 1, charpos =3D 140728199277488, ch =3D 1, nchars =3D 140728199277328, ch_len =3D 139981181500455, type =3D 3595823872, type_after_wn =3D 32765, orig_type =3D 12245696, resolved_level =3D 94 '^', isolate_level =3D 85 'U', invalid_levels =3D 93862227887760, invalid_isolates =3D 139981180192118, prev =3D { charpos =3D 0, type =3D 3902286121, orig_type =3D 59 }, last_strong =3D { charpos =3D 0, type =3D 3595823989, orig_type =3D 32765 }, next_for_neutral =3D { charpos =3D 0, type =3D 27976, orig_type =3D UNKNOWN_BT }, prev_for_neutral =3D { charpos =3D 0, type =3D 11797024, orig_type =3D 21854 }, next_for_ws =3D { charpos =3D 8589934592, type =3D 4276568633, orig_type =3D 21853 }, bracket_pairing_pos =3D 140728199277744, bracket_enclosed_type =3D 11746104, next_en_pos =3D 46118720091616, next_en_type =3D 3656234464, sos =3D (L2R | unknown: 0x29f0), scan_dir =3D 12224688, disp_pos =3D 93862227512104, disp_prop =3D -638732832, stack_idx =3D 10737, level_stack =3D {{ next_for_neutral_pos =3D 93862196920518, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 7, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196920557, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 93862196888121, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227032888, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 46118720091616, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 2, level =3D 186 '\272', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227512104, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 93862196920518, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 7, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196920557, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196013788, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199277696, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196013904, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862196021611, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 7, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199277664, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 93862196888121, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196021182, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 20, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 218 '\332', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227511472, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 186 '\272', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196022527, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 1, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199277664, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196013788, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 3, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139980923453572, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 71712, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 237 '\355', flags =3D 217 '\331' }, { next_for_neutral_pos =3D 46118720091616, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 46118720091616, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227512104, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196020828, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 1, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862227511472, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139977279143937, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139980923453572, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 103273794941300736, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199278112, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 38207, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196515812, next_for_neutral_type =3D 3, last_strong_type =3D 2, prev_for_neutral_type =3D 3, level =3D 81 'Q', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199278192, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199309568, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862195526737, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196529611, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 256, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 20, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199278240, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 3, level =3D 210 '\322', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199278192, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 38190, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196052536, next_for_neutral_type =3D 3, last_strong_type =3D 4, prev_for_neutral_type =3D 2, level =3D 74 'J', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139980936314882, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862196021182, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 207 '\317', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 12, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 137 '\211', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196890866, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 229 '\345', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862196916060, next_for_neutral_type =3D 3, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 227 '\343', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 28896, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197235720, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862197229629, next_for_neutral_type =3D 6, last_strong_type =3D 1, prev_for_neutral_type =3D 1, level =3D 2 '\002', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196890866, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 229 '\345', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199217153, next_for_neutral_type =3D 0, last_strong_type =3D 3, prev_for_neutral_type =3D 4, level =3D 238 '\356', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 201 '\311', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 3, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981055058084, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 4, level =3D 168 '\250', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054792652, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 201 '\311', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054502179, next_for_neutral_type =3D 5, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862226348320, next_for_neutral_type =3D 3, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184593290, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 192 '\300', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 4, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862227874272, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184603390, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 3, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199278912, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 201 '\311', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981055058084, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 4, level =3D 168 '\250', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054792652, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 201 '\311', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054502179, next_for_neutral_type =3D 3, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 229 '\345', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862226348320, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184593290, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 192 '\300', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 4, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862227874272, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184603390, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 3, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199279136, next_for_neutral_type =3D 5, last_strong_type =3D 1, prev_for_neutral_type =3D 5, level =3D 61 '=3D', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862196962906, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 7, level =3D 255 '\377', flags =3D 255 '\377' }, { next_for_neutral_pos =3D 93862236156845, next_for_neutral_type =3D 5, last_strong_type =3D 1, prev_for_neutral_type =3D 5, level =3D 61 '=3D', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 446676598785, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 6, level =3D 62 '>', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 3, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 83 'S', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862202890184, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 3, level =3D 210 '\322', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 188 '\274', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196425212, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197382906, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 2, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199279136, next_for_neutral_type =3D 3, last_strong_type =3D 1, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862202890184, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 3, level =3D 210 '\322', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 637, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195434718, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 188 '\274', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195644137, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862236343821, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 2, level =3D 186 '\272', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195474434, next_for_neutral_type =3D 3, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199309568, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862227511472, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862229077232, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195558096, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }}, string =3D { lstring =3D XIL(0x2b6ee6f826153000), s =3D 0x0, schars =3D 2, bufpos =3D 1, from_disp_str =3D false, unibyte =3D false }, w =3D 0x1, paragraph_dir =3D (L2R | unknown: 0x27c), separator_limit =3D 140728199309568, first_elt =3D false, new_paragraph =3D true, frame_window_p =3D true }, paragraph_embedding =3D L2R, min_width_property =3D XIL(0x1), min_width_start =3D -1 } atx_it =3D { window =3D XIL(0x27d00000009), w =3D 0x0, f =3D 0x953c, method =3D GET_FROM_DISPLAY_VECTOR, stop_charpos =3D 0, prev_stop =3D 40531, base_level_stop =3D 373662155008, end_charpos =3D 0, medium_narrowing_begv =3D 0, medium_narrowing_zv =3D 93862225467760, large_narrowing_begv =3D 157330, large_narrowing_zv =3D 93862247617240, s =3D 0x555e015b0845 "", string_nchars =3D 157330, multibyte_p =3D false, tab_line_p =3D false, header_line_p =3D true, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D true, ellipsis_p =3D false, avoid_cursor_p =3D true, dp =3D 0x555dfeec8601 , dpvec =3D 0x99a4, dpend =3D 0x555dfeecba63 , dpvec_char_len =3D 0, dpvec_face_id =3D 2, saved_face_id =3D 157322, ctl_chars =3D {XIL(0x9e53), make_fixnum(39330), make_fixnum(39332= ), make_fixnum(39332), XIL(0x60f0), XIL(0x2b6ee6f826153000), make_fixnum(39= 332), XIL(0x7f4fde7d29c0), XIL(0x99a4), XIL(0x7f4fde96bce0), XIL(0), XIL(0x= 7f4fde7d2a95), XIL(0x555e012da190), XIL(0xb50), XIL(0x7f4fde96bc80), XIL(0x= b50)}, start =3D { pos =3D { charpos =3D 93862247338784, bytepos =3D 139981011893720 }, overlay_string_index =3D 139981013564544, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 18410 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 139981011894601 }, overlay_string_index =3D 4294967296, string_pos =3D { charpos =3D 30064771072, bytepos =3D 39332 }, dpvec_index =3D 2888 }, n_overlay_strings =3D -632, overlay_strings_charpos =3D 11, overlay_strings =3D {XIL(0), make_fixnum(4602), XIL(0), XIL(0x7f4= fde7d690f), XIL(0x7ffdd6542770), XIL(0), XIL(0x7ffdd65404a0), XIL(0x7ffdd65= 404a0), XIL(0), make_fixnum(34995296045335), XIL(0xffffffff00004800), XIL(0= x7ffdd6542770), XIL(0xffffff33), XIL(0x100000001), XIL(0x555e00004800), XIL= (0)}, string_overlays =3D {XIL(0x555e000000cf), XIL(0x7ffdd65400a8), XI= L(0), XIL(0xffffffffffffc739), XIL(0x555e01e907e0), XIL(0x7ffdd65404a0), XI= L(0x7ffdd6540070), XIL(0x7ffdd653f880), XIL(0), XIL(0x555dfed90f01), XIL(0x= 1), XIL(0x555dfed90f21), XIL(0x7ffdd6547328), XIL(0x555dfed91fe7), XIL(0xc)= , XIL(0x7f4fd9bc7995)}, string =3D XIL(0x645), from_overlay =3D make_fixnum(23465548987433), stack =3D {{ string =3D XIL(0), string_nchars =3D 638922752, end_charpos =3D 7, stop_charpos =3D 140728199312168, prev_stop =3D 1, base_level_stop =3D 3, cmp_it =3D { stop_pos =3D 107, id =3D 54, ch =3D 107, rule_idx =3D 93862195963232, lookback =3D 0, nglyphs =3D 40482, reversed_p =3D false, parent_it =3D 0xb9ad, charpos =3D 35964, nchars =3D 8235, nbytes =3D 0, from =3D 1, to =3D 0, width =3D 32049912 }, face_id =3D 32050000, u =3D { image =3D { object =3D XIL(0x555e01e90ba8), slice =3D { x =3D XIL(0x555e01e90c00), y =3D XIL(0x555e01e911d8), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0x555e01e90ba8) }, xwidget =3D { object =3D XIL(0x555e01e90ba8) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 32051584, nbytes =3D 21854, from =3D 32051408, to =3D 21854, width =3D 32051320 }, face_id =3D 32051144, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x110000), y =3D XIL(0), width =3D XIL(0x130000), height =3D XIL(0) }, image_id =3D 1376256 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 1507328 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 1638400 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 1769472, bytepos =3D 0 }, dpvec_index =3D 1900544 }, from_overlay =3D XIL(0), area =3D 2031616, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0x210000), voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0x230000) }, { string =3D XIL(0), string_nchars =3D 2424832, end_charpos =3D 0, stop_charpos =3D 2, prev_stop =3D 0, base_level_stop =3D 2686978, cmp_it =3D { stop_pos =3D 0, id =3D 24816, ch =3D 0, rule_idx =3D 0, lookback =3D 1, nglyphs =3D -19329279, reversed_p =3D 93, parent_it =3D 0x6, charpos =3D 93862195957647, nchars =3D 6, nbytes =3D 0, from =3D -19321410, to =3D 21853, width =3D 0 }, face_id =3D 24816, u =3D { image =3D { object =3D XIL(0x555e00000001), slice =3D { x =3D make_fixnum(23465549308951), y =3D XIL(0x1), width =3D XIL(0x555dfeecb958), height =3D XIL(0x555e00d56da5) }, image_id =3D 93862197252756 }, stretch =3D { object =3D XIL(0x555e00000001) }, xwidget =3D { object =3D XIL(0x555e00000001) } }, position =3D { charpos =3D 6, bytepos =3D 93862195957505 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 93862195957647 }, overlay_string_index =3D 93862229274016, string_pos =3D { charpos =3D 93862195965374, bytepos =3D 1 }, dpvec_index =3D -18040488 }, from_overlay =3D XIL(0x555e00000001), area =3D -18034028, method =3D 21853, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0xfeecb850), voffset =3D 21853, space_width =3D XIL(0xba8d40), font_height =3D make_fixnum(1) }, { string =3D XIL(0), string_nchars =3D -19329279, end_charpos =3D 154, stop_charpos =3D 93862195957647, prev_stop =3D 93862229274021, base_level_stop =3D 93862195965374, cmp_it =3D { stop_pos =3D 38, id =3D 93862197246383, ch =3D 1, rule_idx =3D 6, lookback =3D 0, nglyphs =3D 6, reversed_p =3D false, parent_it =3D 0x9a, charpos =3D 154, nchars =3D 24816, nbytes =3D 0, from =3D -19329279, to =3D 21853, width =3D 154 }, face_id =3D -19329137, u =3D { image =3D { object =3D make_fixnum(9), slice =3D { x =3D make_fixnum(23465548991343), y =3D XIL(0), width =3D XIL(0x180), height =3D XIL(0x555e00000001) }, image_id =3D 6 }, stretch =3D { object =3D make_fixnum(9) }, xwidget =3D { object =3D make_fixnum(9) } }, position =3D { charpos =3D 93862227512645, bytepos =3D 1 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 38 }, overlay_string_index =3D 154, string_pos =3D { charpos =3D 93862195549963, bytepos =3D 143274 }, dpvec_index =3D 1 }, from_overlay =3D XIL(0x7ffdd6549b20), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D (R2L | unknown: 0x1008be8), multibyte_p =3D true, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D make_fixnum(9), font_height =3D XIL(0x1) }, { string =3D XIL(0x1), string_nchars =3D 638922752, end_charpos =3D 93862227047680, stop_charpos =3D 1, prev_stop =3D 140728199324456, base_level_stop =3D 140728199322392, cmp_it =3D { stop_pos =3D 38, id =3D 140728199322224, ch =3D -699098504, rule_idx =3D 93862195960317, lookback =3D 1, nglyphs =3D -699098336, reversed_p =3D 253, parent_it =3D 0x555e00ba8d40, charpos =3D 4294967336, nchars =3D 12225325, nbytes =3D 21854, from =3D 142274, to =3D 1, width =3D 1 }, face_id =3D 1, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x2b6ee6f826153000), y =3D XIL(0xffffffff), width =3D XIL(0x7ffdd6549a58), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 4294967295, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 4294967295, bytepos =3D 93862195957505 }, overlay_string_index =3D 4294967295, string_pos =3D { charpos =3D 93862195957537, bytepos =3D 140728199322200 }, dpvec_index =3D -19324953 }, from_overlay =3D XIL(0), area =3D -19326467, method =3D 21853, paragraph_embedding =3D (L2R | R2L | unknown: 0xfffffffc), multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0xd6549b20), voffset =3D 32765, space_width =3D XIL(0x555e00ba8d40), font_height =3D XIL(0x100000029) }}, sp =3D -1, selective =3D 7890836056, what =3D 4294967295, face_id =3D 32765, selective_display_ellipsis_p =3D true, ctl_arrow_p =3D false, face_box_p =3D false, start_of_box_run_p =3D false, end_of_box_run_p =3D false, overlay_strings_at_end_processed_p =3D false, ignore_overlay_strings_at_pos_p =3D false, glyph_not_available_p =3D false, starts_in_middle_of_char_p =3D false, face_before_selective_p =3D false, constrain_row_ascent_descent_p =3D false, line_number_produced_p =3D false, line_wrap =3D TRUNCATE, base_face_id =3D -1, c =3D 0, len =3D 638922752, cmp_it =3D { stop_pos =3D 0, id =3D 93862195957896, ch =3D 1, rule_idx =3D 93862195957505, lookback =3D 140728898420735, nglyphs =3D -19329137, reversed_p =3D 93, parent_it =3D 0x1, charpos =3D 93862195965374, nchars =3D 1, nbytes =3D 0, from =3D 0, to =3D 21853, width =3D 3 }, char_to_display =3D 1, glyphless_method =3D GLYPHLESS_DISPLAY_THIN_SPACE, image_id =3D 1, xwidget =3D 0x2b6ee6f826153000, slice =3D { x =3D XIL(0), y =3D XIL(0x555dfed91088), width =3D XIL(0x1), height =3D XIL(0x555dfed90f01) }, space_width =3D XIL(0x7ffdd6545b88), voffset =3D 3983, tab_width =3D -295, font_height =3D XIL(0x1), object =3D make_fixnum(23465548991343), position =3D { charpos =3D 0, bytepos =3D 0 }, truncation_pixel_width =3D 3, continuation_pixel_width =3D 0, first_visible_x =3D 6, last_visible_x =3D 1, last_visible_y =3D 0, extra_line_spacing =3D 1, max_extra_line_spacing =3D 0, override_ascent =3D 1, override_descent =3D 0, override_boff =3D 0, glyph_row =3D 0x0, area =3D 40, nglyphs =3D 0, pixel_width =3D 1, ascent =3D 0, descent =3D 1, max_ascent =3D 0, max_descent =3D 23, phys_ascent =3D 23, phys_descent =3D 23, max_phys_ascent =3D 0, max_phys_descent =3D 0, current_x =3D 0, wrap_prefix_width =3D 0, continuation_lines_width =3D 0, eol_pos =3D { charpos =3D 0, bytepos =3D 25769803782 }, current_y =3D 1, first_vpos =3D 0, vpos =3D 0, hpos =3D 0, lnum =3D -1, lnum_bytepos =3D 0, lnum_width =3D -1, lnum_pixel_width =3D -1, pt_lnum =3D 0, stretch_adjust =3D -1, left_user_fringe_bitmap =3D 65535, right_user_fringe_bitmap =3D 65535, left_user_fringe_face_id =3D 0, right_user_fringe_face_id =3D 0, bidi_p =3D false, bidi_it =3D { bytepos =3D -1, charpos =3D 0, ch =3D 0, nchars =3D 4294967296, ch_len =3D 1, type =3D STRONG_L, type_after_wn =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT, resolved_level =3D 0 '\000', isolate_level =3D 0 '\000', invalid_levels =3D 0, invalid_isolates =3D 0, prev =3D { charpos =3D 4294967297, type =3D 450, orig_type =3D UNKNOWN_BT }, last_strong =3D { charpos =3D 1, type =3D 448, orig_type =3D UNKNOWN_BT }, next_for_neutral =3D { charpos =3D 98784247809, type =3D 447, orig_type =3D UNKNOWN_BT }, prev_for_neutral =3D { charpos =3D 23, type =3D 40531, orig_type =3D UNKNOWN_BT }, next_for_ws =3D { charpos =3D 1, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, bracket_pairing_pos =3D 4294967296, bracket_enclosed_type =3D STRONG_L, next_en_pos =3D 678, next_en_type =3D UNKNOWN_BT, sos =3D NEUTRAL_DIR, scan_dir =3D 0, disp_pos =3D 0, disp_prop =3D 40531, stack_idx =3D 0, level_stack =3D {{ next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 65536, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 7, level =3D 161 '\241', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 196608, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981011906116, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 10604528, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4095, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 242 '\362', flags =3D 0 '\000' }, { next_for_neutral_pos =3D -4096, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139979967905808, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 242 '\362', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 1, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196726590, next_for_neutral_type =3D 6, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6832, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 242 '\362', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 4, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195947083, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 68 'D', flags =3D 255 '\377' }, { next_for_neutral_pos =3D 139980932366077, next_for_neutral_type =3D 4, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195949734, next_for_neutral_type =3D 3, last_strong_type =3D 1, prev_for_neutral_type =3D 7, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195957896, next_for_neutral_type =3D 7, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195957896, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195957505, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862195957647, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195965374, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4294967295, next_for_neutral_type =3D 3, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40050, next_for_neutral_type =3D 2, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40482, next_for_neutral_type =3D 6, last_strong_type =3D 3, prev_for_neutral_type =3D 6, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40499, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 98784247831, next_for_neutral_type =3D 7, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40498, next_for_neutral_type =3D 6, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40497, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40492, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 40497, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199282832, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D -4294967264, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4020089390056, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862247337768, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199282856, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862247337856, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 196608, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 327680, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 458752, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 589824, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 720896, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 851968, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 983040, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1114112, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1245184, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1376256, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1507328, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1638400, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1769472, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1900544, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2031616, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2162688, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2293760, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2424832, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2555904, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2686976, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2818048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 2949120, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3080192, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3211264, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3342336, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3473408, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3604480, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3735552, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3866624, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3997696, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4128768, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4259840, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4390912, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4521984, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4653056, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4784128, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4915200, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5046272, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5177344, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5308416, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5439488, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5570560, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5701632, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5832704, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 5963776, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6094848, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6225920, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6356992, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6488064, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 6619136, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981011888508, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981013564640, next_for_neutral_type =3D 1, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981011888789, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 239 '\357', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 2896, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 150 '\226', flags =3D 222 '\336' }, { next_for_neutral_pos =3D 2896, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 239 '\357', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 139981011893720, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 150 '\226', flags =3D 222 '\336' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 14058, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981011894601, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199283872, next_for_neutral_type =3D 2, last_strong_type =3D 4, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 11, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 14058, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981013564640, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 139981011888789, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 2896, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 150 '\226', flags =3D 222 '\336' }, { next_for_neutral_pos =3D 2896, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 239 '\357', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 139981011893720, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 150 '\226', flags =3D 222 '\336' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 14058, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981011894601, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 239 '\357', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 140728199322200, next_for_neutral_type =3D 7, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 38, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195963154, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 7, level =3D 255 '\377', flags =3D 255 '\377' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199311992, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195963154, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 239 '\357', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 140728199322200, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199312104, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }}, string =3D { lstring =3D XIL(0), s =3D 0x0, schars =3D 93862195963533, bufpos =3D -1, from_disp_str =3D true, unibyte =3D false }, w =3D 0x0, paragraph_dir =3D (unknown: 0x26153000), separator_limit =3D 0, first_elt =3D false, new_paragraph =3D false, frame_window_p =3D false }, paragraph_embedding =3D L2R, min_width_property =3D XIL(0x8), min_width_start =3D 8 } ppos_it =3D { window =3D XIL(0x7ffdd6549020), w =3D 0x555d00000001, f =3D 0x0, method =3D GET_FROM_BUFFER, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, end_charpos =3D 0, medium_narrowing_begv =3D 93862247772984, medium_narrowing_zv =3D 93862247773072, large_narrowing_begv =3D 93862247773160, large_narrowing_zv =3D 93862247773248, s =3D 0x555e01efba18 "", string_nchars =3D 0, multibyte_p =3D false, tab_line_p =3D false, header_line_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D false, ellipsis_p =3D false, avoid_cursor_p =3D false, dp =3D 0x0, dpvec =3D 0x0, dpend =3D 0x0, dpvec_char_len =3D 0, dpvec_face_id =3D 0, saved_face_id =3D 0, ctl_chars =3D {XIL(0) }, start =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 93862247774656, string_pos =3D { charpos =3D 93862247774480, bytepos =3D 93862247774392 }, dpvec_index =3D 32487432 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 3129692744534274048, overlay_strings =3D {XIL(0x8), XIL(0x555dfed91191), XIL(0x1), XIL= (0x7ffdd654a5f8), XIL(0x1), XIL(0), XIL(0), XIL(0x555dfed94b4d), make_fixnu= m(169), XIL(0), XIL(0), XIL(0), XIL(0x700000007), XIL(0x9aef), XIL(0x700000= 007), XIL(0x9aed)}, string_overlays =3D {XIL(0x700000000), XIL(0x9aef), make_fixnum(7= 516192768), XIL(0x2b6ee6f826153000), XIL(0x1), XIL(0x2b6ee6f826153000), XIL= (0x555e00c267f0), XIL(0x7ffdd6540a30), XIL(0x555e00c267f0), XIL(0x7f4fe86c8= b00), XIL(0x555e00c267f0), XIL(0), XIL(0x4), make_fixnum(34995294530116), X= IL(0x3a014cf), XIL(0x3d6540a50)}, string =3D XIL(0x7ffdd6540a50), from_overlay =3D XIL(0x7ffdd6540970), stack =3D {{ string =3D XIL(0x3a000ad), string_nchars =3D 638922752, end_charpos =3D 4294967296, stop_charpos =3D 140728199285296, prev_stop =3D 4, base_level_stop =3D 140728199290160, cmp_it =3D { stop_pos =3D 93862232842992, id =3D 1, ch =3D 24386496, rule_idx =3D 139981184998947, lookback =3D 17, nglyphs =3D 355, reversed_p =3D false, parent_it =3D 0x11, charpos =3D 140728199285296, nchars =3D 1, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D -395991472, u =3D { image =3D { object =3D XIL(0x555e00c10d60), slice =3D { x =3D XIL(0x555e013775f0), y =3D XIL(0), width =3D XIL(0x3), height =3D XIL(0) }, image_id =3D 458752 }, stretch =3D { object =3D XIL(0x555e00c10d60) }, xwidget =3D { object =3D XIL(0x555e00c10d60) } }, position =3D { charpos =3D 60817581, bytepos =3D 140728199290160 }, current =3D { pos =3D { charpos =3D 1524713390084, bytepos =3D 17 }, overlay_string_index =3D 60817581, string_pos =3D { charpos =3D 140728199290161, bytepos =3D -8589934588 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D 1114112, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0x130000), voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0x150000) }, { string =3D XIL(0), string_nchars =3D 1507328, end_charpos =3D 0, stop_charpos =3D 1638400, prev_stop =3D 0, base_level_stop =3D 1769472, cmp_it =3D { stop_pos =3D 0, id =3D 1900544, ch =3D 0, rule_idx =3D 2031616, lookback =3D 0, nglyphs =3D 2162688, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 2293760, nchars =3D 0, nbytes =3D 0, from =3D 2424832, to =3D 0, width =3D 0 }, face_id =3D 2555904, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x290000), y =3D XIL(0), width =3D XIL(0x2b0000), height =3D XIL(0) }, image_id =3D 2949120 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 3080192 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 3211264 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 3342336, bytepos =3D 0 }, dpvec_index =3D 3473408 }, from_overlay =3D XIL(0), area =3D 3604480, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0x390000), voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0x3b0000) }, { string =3D XIL(0), string_nchars =3D -19329279, end_charpos =3D 0, stop_charpos =3D 93862195957647, prev_stop =3D 0, base_level_stop =3D 93862195965374, cmp_it =3D { stop_pos =3D 0, id =3D 4390912, ch =3D 1, rule_idx =3D 4521984, lookback =3D 0, nglyphs =3D 4653056, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 93862195957505, nchars =3D 0, nbytes =3D 0, from =3D -19329279, to =3D 21853, width =3D 0 }, face_id =3D -19329137, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D make_fixnum(23465548991343), y =3D XIL(0x1), width =3D XIL(0x510000), height =3D XIL(0x1) }, image_id =3D 5439488 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 5570560 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 5701632 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 93862195957505, bytepos =3D 0 }, dpvec_index =3D -19329137 }, from_overlay =3D XIL(0), area =3D -19321410, method =3D 21853, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0x5f0000), voffset =3D 0, space_width =3D XIL(0x1), font_height =3D XIL(0x610000) }, { string =3D XIL(0), string_nchars =3D 6488064, end_charpos =3D 0, stop_charpos =3D 93862195957505, prev_stop =3D 0, base_level_stop =3D 93862195957505, cmp_it =3D { stop_pos =3D 0, id =3D 93862195957647, ch =3D 0, rule_idx =3D 93862195965374, lookback =3D 1, nglyphs =3D -699134528, reversed_p =3D 253, parent_it =3D 0x7ffd00000001, charpos =3D 2327, nchars =3D 0, nbytes =3D 0, from =3D -18770972, to =3D 21853, width =3D 21641891 }, face_id =3D 638922752, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0x7ffdd6540e10), y =3D XIL(0x7ffdd6541100), width =3D XIL(0x7ffdd6549bc0), height =3D XIL(0x7ffdd6549bc0) }, image_id =3D 93862195526737 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 93862195957505 }, current =3D { pos =3D { charpos =3D 16384, bytepos =3D 93862195957647 }, overlay_string_index =3D 140728199322560, string_pos =3D { charpos =3D 93862195965374, bytepos =3D 0 }, dpvec_index =3D -699134400 }, from_overlay =3D XIL(0x555e00000001), area =3D -699134448, method =3D 32765, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (WORD_WRAP | unknown: 0x8f4), voffset =3D 0, space_width =3D XIL(0x8f7), font_height =3D XIL(0x555dfed90f01) }, { string =3D XIL(0x7ffd00000001), string_nchars =3D -19329279, end_charpos =3D 0, stop_charpos =3D 93862195957647, prev_stop =3D 9558, base_level_stop =3D 93862195965374, cmp_it =3D { stop_pos =3D 140724603453441, id =3D 18, ch =3D 1, rule_idx =3D 140728199289384, lookback =3D 93862232925424, nglyphs =3D -699134112, reversed_p =3D 253, parent_it =3D 0x52, charpos =3D 139981184304819, nchars =3D -388763520, nbytes =3D 32591, from =3D 82, to =3D 0, width =3D -699134176 }, face_id =3D 18, u =3D { image =3D { object =3D XIL(0x555e01e51533), slice =3D { x =3D XIL(0x7ffdd6541a28), y =3D XIL(0x100000029), width =3D XIL(0), height =3D XIL(0x555e010d24f0) }, image_id =3D 3129692744534274048 }, stretch =3D { object =3D XIL(0x555e01e51533) }, xwidget =3D { object =3D XIL(0x555e01e51533) } }, position =3D { charpos =3D 0, bytepos =3D 4 }, current =3D { pos =3D { charpos =3D 93866510254079, bytepos =3D 1 }, overlay_string_index =3D 93866510254079, string_pos =3D { charpos =3D 93862232928928, bytepos =3D 4 }, dpvec_index =3D -389106070 }, from_overlay =3D XIL(0x100000029), area =3D 638922752, method =3D 728688376, paragraph_embedding =3D (L2R | unknown: 0x28), multibyte_p =3D true, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D (unknown: 0xfed91088), voffset =3D 21853, space_width =3D XIL(0x1), font_height =3D XIL(0x555dfed90f01) }}, sp =3D -699108744, selective =3D 93862195957647, what =3D 4294967295, face_id =3D 0, selective_display_ellipsis_p =3D false, ctl_arrow_p =3D true, face_box_p =3D true, start_of_box_run_p =3D true, end_of_box_run_p =3D true, overlay_strings_at_end_processed_p =3D true, ignore_overlay_strings_at_pos_p =3D false, glyph_not_available_p =3D true, starts_in_middle_of_char_p =3D true, face_before_selective_p =3D false, constrain_row_ascent_descent_p =3D true, line_number_produced_p =3D true, line_wrap =3D (WORD_WRAP | unknown: 0x555c), base_face_id =3D -1, c =3D 0, len =3D 0, cmp_it =3D { stop_pos =3D 4294967299, id =3D 1, ch =3D 1, rule_idx =3D 3129692744534274048, lookback =3D 4294967295, nglyphs =3D -19328888, reversed_p =3D 93, parent_it =3D 0x1, charpos =3D 93862195957505, nchars =3D -699108632, nbytes =3D 32765, from =3D -19329137, to =3D 21853, width =3D 1 }, char_to_display =3D -19321410, glyphless_method =3D 21853, image_id =3D 0, xwidget =3D 0x0, slice =3D { x =3D XIL(0x600000003), y =3D XIL(0x1), width =3D XIL(0x1), height =3D XIL(0x555dfed919fd) }, space_width =3D XIL(0xd1bf), voffset =3D 24720, tab_width =3D -10668, font_height =3D XIL(0x555e00ba8b28), object =3D make_fixnum(1073741826), position =3D { charpos =3D 1, bytepos =3D 4294967319 }, truncation_pixel_width =3D 23, continuation_pixel_width =3D 0, first_visible_x =3D 0, last_visible_x =3D 0, last_visible_y =3D 0, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D 638922752, override_descent =3D 728688376, override_boff =3D 6, glyph_row =3D 0x7ffdd6545fc8, area =3D LEFT_MARGIN_AREA, nglyphs =3D 0, pixel_width =3D 0, ascent =3D 0, descent =3D 40531, max_ascent =3D 0, max_descent =3D 0, phys_ascent =3D 0, phys_descent =3D 0, max_phys_ascent =3D 0, max_phys_descent =3D -19329279, current_x =3D 21853, wrap_prefix_width =3D 1, continuation_lines_width =3D 0, eol_pos =3D { charpos =3D 93862195957537, bytepos =3D 140728199307208 }, current_y =3D -19323630, first_vpos =3D 21853, vpos =3D 0, hpos =3D 1, lnum =3D 1, lnum_bytepos =3D 1, lnum_width =3D 0, lnum_pixel_width =3D 0, pt_lnum =3D 0, stretch_adjust =3D 638922752, left_user_fringe_bitmap =3D 59128, right_user_fringe_bitmap =3D 11118, left_user_fringe_face_id =3D 41, right_user_fringe_face_id =3D 0, bidi_p =3D false, bidi_it =3D { bytepos =3D 140728199307208, charpos =3D 0, ch =3D 0, nchars =3D 0, ch_len =3D 40531, type =3D UNKNOWN_BT, type_after_wn =3D UNKNOWN_BT, orig_type =3D 4275644045, resolved_level =3D 93 ']', isolate_level =3D 85 'U', invalid_levels =3D 12884901891, invalid_isolates =3D 0, prev =3D { charpos =3D 0, type =3D 37, orig_type =3D UNKNOWN_BT }, last_strong =3D { charpos =3D 1, type =3D 36, orig_type =3D UNKNOWN_BT }, next_for_neutral =3D { charpos =3D 12884901889, type =3D WEAK_ES, orig_type =3D UNKNOWN_BT }, prev_for_neutral =3D { charpos =3D 3, type =3D 38, orig_type =3D UNKNOWN_BT }, next_for_ws =3D { charpos =3D 1, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, bracket_pairing_pos =3D 4294967296, bracket_enclosed_type =3D STRONG_L, next_en_pos =3D 38, next_en_type =3D UNKNOWN_BT, sos =3D NEUTRAL_DIR, scan_dir =3D 0, disp_pos =3D 0, disp_prop =3D 17638640, stack_idx =3D 21854, level_stack =3D {{ next_for_neutral_pos =3D 140728199287472, next_for_neutral_type =3D 3, last_strong_type =3D 2, prev_for_neutral_type =3D 1, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184304819, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 211 '\323', flags =3D 232 '\350' }, { next_for_neutral_pos =3D 83, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 19, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199290232, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 211 '\323', flags =3D 232 '\350' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 3, level =3D 13 '\r', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 7, level =3D 55 '7', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 193 '\301', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862232928688, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981185005162, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 7, level =3D 116 't', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862232842992, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 193 '\301', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862232842992, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199288096, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 83, next_for_neutral_type =3D 1, last_strong_type =3D 7, prev_for_neutral_type =3D 5, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1653562408961, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199287648, next_for_neutral_type =3D 1, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862235698672, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 7, level =3D 116 't', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 3, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862232927248, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862232928688, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 6, level =3D 13 '\r', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981012373914, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 4, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 3, level =3D 146 '\222', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981178222676, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862224901008, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D -1, next_for_neutral_type =3D 4, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 146 '\222', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 4096, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 0, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 1, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 80, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199288096, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981180192118, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 6, level =3D 215 '\327', flags =3D 232 '\350' }, { next_for_neutral_pos =3D 140728199288008, next_for_neutral_type =3D 0, last_strong_type =3D 3, prev_for_neutral_type =3D 2, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862224732544, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 7, level =3D 160 '\240', flags =3D 3 '\003' }, { next_for_neutral_pos =3D 140728199288320, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 65 'A', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 60823551, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 65 'A', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862224896704, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 3, prev_for_neutral_type =3D 3, level =3D 146 '\222', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981178224532, next_for_neutral_type =3D 2, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862224640560, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 3, level =3D 148 '\224', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 7, level =3D 147 '\223', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981178645310, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196859363, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 6, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 384, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196864775, next_for_neutral_type =3D 2, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196683681, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196859363, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 320, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196864775, next_for_neutral_type =3D 2, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196683681, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 1, level =3D 91 '[', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 150 '\226', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199291952, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196690919, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 1, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 118 'v', flags =3D 1 '\001' }, { next_for_neutral_pos =3D 93862195526737, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 2, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862225174992, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 7, level =3D 6 '\006', flags =3D 233 '\351' }, { next_for_neutral_pos =3D 9888368, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 2, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 139981057938996, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 2, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199288528, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199288560, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 139981057969343, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 140728199288560, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 139981057800206, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862225168288, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 147 '\223', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862232823648, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981012130025, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 139981180277953, next_for_neutral_type =3D 6, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 77996718, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 147 '\223', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862224957552, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862247320656, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 7, level =3D 255 '\377', flags =3D 127 '\177' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981180278524, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 147 '\223', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197246032, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 142, next_for_neutral_type =3D 7, last_strong_type =3D 7, prev_for_neutral_type =3D 7, level =3D 255 '\377', flags =3D 127 '\177' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 201 '\311', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 1, last_strong_type =3D 5, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981055058084, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 4, level =3D 168 '\250', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054792652, next_for_neutral_type =3D 0, last_strong_type =3D 2, prev_for_neutral_type =3D 5, level =3D 201 '\311', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981054502179, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862226348320, next_for_neutral_type =3D 1, last_strong_type =3D 5, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184593290, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 7, level =3D 192 '\300', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 5, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 4, last_strong_type =3D 6, prev_for_neutral_type =3D 4, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862227874272, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 139981184603390, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 3, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199289152, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197260939, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 3, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862197270107, next_for_neutral_type =3D 6, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 176093659137, next_for_neutral_type =3D 4, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 3, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 3, last_strong_type =3D 4, prev_for_neutral_type =3D 5, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862202890184, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 6, prev_for_neutral_type =3D 1, level =3D 188 '\274', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862196425212, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862197382906, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199289152, next_for_neutral_type =3D 4, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 3129692744534274048, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 4, level =3D 179 '\263', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140728199319584, next_for_neutral_type =3D 1, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 8, next_for_neutral_type =3D 0, last_strong_type =3D 5, prev_for_neutral_type =3D 4, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 140724603453441, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195526801, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 1, next_for_neutral_type =3D 0, last_strong_type =3D 1, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 93862195527283, next_for_neutral_type =3D 0, last_strong_type =3D 4, prev_for_neutral_type =3D 0, level =3D 84 'T', flags =3D 214 '\326' }, { next_for_neutral_pos =3D 93862195562312, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }}, string =3D { lstring =3D XIL(0x7ffdd6549020), s =3D 0x1 , schars =3D 8, bufpos =3D 8, from_disp_str =3D true, unibyte =3D false }, w =3D 0xcd6549020, paragraph_dir =3D (unknown: 0xd6545f58), separator_limit =3D 0, first_elt =3D false, new_paragraph =3D false, frame_window_p =3D false }, paragraph_embedding =3D NEUTRAL_DIR, min_width_property =3D XIL(0x9e53), min_width_start =3D 0 } wrap_data =3D 0x0 atpos_data =3D 0x0 atx_data =3D 0x0 ppos_data =3D may_wrap =3D false prev_method =3D GET_FROM_BUFFER closest_pos =3D 40531 prev_pos =3D 40035 saw_smaller_pos =3D false line_number_pending =3D false this_line_subject_to_line_prefix =3D 0 #8 0x0000555dfed330b5 in move_it_to (it=3Dit@entry=3D0x7ffdd6547d50, to_charpos=3Dto_charpos@entry=3D-1, to= _x=3Dto_x@entry=3D-1, to_y=3Dto_y@entry=3D-1, to_vpos=3D-452, op=3Dop@entry= =3D4) at /home/steve/src/emacs/emacs-master/src/xdisp.c:10661 skip =3D skip2 =3D line_height =3D line_start_x =3D 0 reached =3D 0 max_current_x =3D 0 backup_data =3D 0x0 #9 0x0000555dfed2de3d in move_it_by_lines (it=3Dit@entry=3D0x7ffdd6547d50, dvpos=3Ddvpos@entry=3D1) at /home/steve/src/emacs/emacs-master/src/xdisp.c:11234 #10 0x0000555dfed2e8ad in move_it_vertically_backward (it=3Dit@entry=3D0x7ffdd6547d50, dy=3D, dy@entry=3D289) at /home/steve/src/emacs/emacs-master/src/xdisp.c:11143 last_pos =3D { charpos =3D , bytepos =3D } last_y =3D -9841 last_vpos =3D -453 target_y =3D 289 y0 =3D y1 =3D line_height =3D nlines =3D h =3D it2 =3D { window =3D XIL(0x555e00ba8b2d), w =3D 0x555e00ba8b28, f =3D 0x555e00ba88b0, method =3D GET_FROM_BUFFER, stop_charpos =3D 40531, prev_stop =3D 457, base_level_stop =3D 457, end_charpos =3D 40531, medium_narrowing_begv =3D 0, medium_narrowing_zv =3D 0, large_narrowing_begv =3D 0, large_narrowing_zv =3D 0, s =3D 0x0, string_nchars =3D 0, multibyte_p =3D true, tab_line_p =3D false, header_line_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D false, ellipsis_p =3D false, avoid_cursor_p =3D false, dp =3D 0x555e016965f0, dpvec =3D 0x0, dpend =3D 0x0, dpvec_char_len =3D 0, dpvec_face_id =3D 0, saved_face_id =3D 26, ctl_chars =3D {XIL(0) }, start =3D { pos =3D { charpos =3D 40530, bytepos =3D 53695 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, current =3D { pos =3D { charpos =3D 40530, bytepos =3D 53695 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 40529, overlay_strings =3D {XIL(0) }, string_overlays =3D {XIL(0) }, string =3D XIL(0), from_overlay =3D XIL(0), stack =3D {{ string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }}, sp =3D 0, selective =3D 0, what =3D IT_CHARACTER, face_id =3D 0, selective_display_ellipsis_p =3D true, ctl_arrow_p =3D true, face_box_p =3D false, start_of_box_run_p =3D false, end_of_box_run_p =3D false, overlay_strings_at_end_processed_p =3D false, ignore_overlay_strings_at_pos_p =3D false, glyph_not_available_p =3D false, starts_in_middle_of_char_p =3D false, face_before_selective_p =3D false, constrain_row_ascent_descent_p =3D false, line_number_produced_p =3D false, line_wrap =3D WINDOW_WRAP, base_face_id =3D 0, c =3D 0, len =3D 1, cmp_it =3D { stop_pos =3D 40530, id =3D -1, ch =3D -2, rule_idx =3D 0, lookback =3D 4, nglyphs =3D 5, reversed_p =3D false, parent_it =3D 0x7ffdd6547d50, charpos =3D 451, nchars =3D 1, nbytes =3D 2, from =3D 0, to =3D 1, width =3D 1 }, char_to_display =3D 10, glyphless_method =3D GLYPHLESS_DISPLAY_THIN_SPACE, image_id =3D 0, xwidget =3D 0x0, slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, space_width =3D XIL(0), voffset =3D 0, tab_width =3D 8, font_height =3D XIL(0), object =3D XIL(0x555e015b0845), position =3D { charpos =3D 40529, bytepos =3D 53694 }, truncation_pixel_width =3D 0, continuation_pixel_width =3D 8, first_visible_x =3D 0, last_visible_x =3D 640, last_visible_y =3D 578, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D -1, override_descent =3D 0, override_boff =3D 0, glyph_row =3D 0x0, area =3D TEXT_AREA, nglyphs =3D 0, pixel_width =3D 0, ascent =3D 13, descent =3D 4, max_ascent =3D 0, max_descent =3D 0, phys_ascent =3D 13, phys_descent =3D 4, max_phys_ascent =3D 14, max_phys_descent =3D 9, current_x =3D 0, wrap_prefix_width =3D 0, continuation_lines_width =3D 0, eol_pos =3D { charpos =3D 0, bytepos =3D 0 }, current_y =3D 11112, first_vpos =3D 0, vpos =3D 458, hpos =3D 0, lnum =3D 0, lnum_bytepos =3D 0, lnum_width =3D 0, lnum_pixel_width =3D 0, pt_lnum =3D 0, stretch_adjust =3D 0, left_user_fringe_bitmap =3D 0, right_user_fringe_bitmap =3D 0, left_user_fringe_face_id =3D 0, right_user_fringe_face_id =3D 0, bidi_p =3D true, bidi_it =3D { bytepos =3D 53695, charpos =3D 40530, ch =3D 10, nchars =3D 1, ch_len =3D 1, type =3D NEUTRAL_B, type_after_wn =3D NEUTRAL_B, orig_type =3D NEUTRAL_B, resolved_level =3D 0 '\000', isolate_level =3D 0 '\000', invalid_levels =3D 0, invalid_isolates =3D 0, prev =3D { charpos =3D 40529, type =3D UNKNOWN_BT, orig_type =3D NEUTRAL_B }, last_strong =3D { charpos =3D 40524, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, next_for_neutral =3D { charpos =3D 40529, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, prev_for_neutral =3D { charpos =3D 40530, type =3D STRONG_L, orig_type =3D NEUTRAL_ON }, next_for_ws =3D { charpos =3D -1, type =3D UNKNOWN_BT, orig_type =3D UNKNOWN_BT }, bracket_pairing_pos =3D -1, bracket_enclosed_type =3D UNKNOWN_BT, next_en_pos =3D 0, next_en_type =3D UNKNOWN_BT, sos =3D L2R, scan_dir =3D 1, disp_pos =3D 40531, disp_prop =3D 0, stack_idx =3D 0, level_stack =3D {{ next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 3 '\003', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 5 '\005', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 7 '\a', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 9 '\t', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 11 '\v', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 13 '\r', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 15 '\017', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 17 '\021', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 19 '\023', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 21 '\025', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 23 '\027', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 25 '\031', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 27 '\033', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 29 '\035', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 31 '\037', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 33 '!', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 35 '#', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 37 '%', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 39 '\'', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 41 ')', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 43 '+', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 45 '-', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 47 '/', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 49 '1', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 51 '3', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 53 '5', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 55 '7', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 57 '9', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 59 ';', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 61 '=3D', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 63 '?', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 65 'A', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 67 'C', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 69 'E', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 71 'G', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 73 'I', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 75 'K', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 77 'M', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 79 'O', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 81 'Q', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 83 'S', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 85 'U', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 87 'W', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 89 'Y', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 91 '[', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 93 ']', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 95 '_', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 97 'a', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 99 'c', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 101 'e', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 103 'g', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 105 'i', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 107 'k', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 109 'm', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 111 'o', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' } }, string =3D { lstring =3D XIL(0), s =3D 0x0, schars =3D 0, bufpos =3D 0, from_disp_str =3D false, unibyte =3D false }, w =3D 0x555e00ba8b28, paragraph_dir =3D L2R, separator_limit =3D 40530, first_elt =3D false, new_paragraph =3D true, frame_window_p =3D true }, paragraph_embedding =3D L2R, min_width_property =3D XIL(0), min_width_start =3D 0 } it3 =3D { window =3D XIL(0x555e00ba8b2d), w =3D 0x555e00ba8b28, f =3D 0x555e00ba88b0, method =3D GET_FROM_BUFFER, stop_charpos =3D 40456, prev_stop =3D 40441, base_level_stop =3D 449, end_charpos =3D 40531, medium_narrowing_begv =3D 0, medium_narrowing_zv =3D 0, large_narrowing_begv =3D 0, large_narrowing_zv =3D 0, s =3D 0x0, string_nchars =3D 0, multibyte_p =3D true, tab_line_p =3D false, header_line_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D false, ellipsis_p =3D false, avoid_cursor_p =3D false, dp =3D 0x555e016965f0, dpvec =3D 0x0, dpend =3D 0x0, dpvec_char_len =3D 0, dpvec_face_id =3D 0, saved_face_id =3D 25, ctl_chars =3D {XIL(0) }, start =3D { pos =3D { charpos =3D 40530, bytepos =3D 53695 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, current =3D { pos =3D { charpos =3D 40449, bytepos =3D 53600 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 40442, overlay_strings =3D {XIL(0) }, string_overlays =3D {XIL(0) }, string =3D XIL(0), from_overlay =3D XIL(0), stack =3D {{ string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }}, sp =3D 0, selective =3D 0, what =3D IT_CHARACTER, face_id =3D 25, selective_display_ellipsis_p =3D true, ctl_arrow_p =3D true, face_box_p =3D false, start_of_box_run_p =3D false, end_of_box_run_p =3D false, overlay_strings_at_end_processed_p =3D false, ignore_overlay_strings_at_pos_p =3D false, glyph_not_available_p =3D false, starts_in_middle_of_char_p =3D false, face_before_selective_p =3D false, constrain_row_ascent_descent_p =3D false, line_number_produced_p =3D false, line_wrap =3D WINDOW_WRAP, base_face_id =3D 0, c =3D 120, len =3D 1, cmp_it =3D { stop_pos =3D 40483, id =3D -1, ch =3D 1605, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 5, reversed_p =3D false, parent_it =3D 0x7ffdd6547d50, charpos =3D 40483, nchars =3D 1, nbytes =3D 2, from =3D 0, to =3D 1, width =3D 1 }, char_to_display =3D 120, glyphless_method =3D GLYPHLESS_DISPLAY_THIN_SPACE, image_id =3D 0, xwidget =3D 0x0, slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, space_width =3D XIL(0), voffset =3D 0, tab_width =3D 8, font_height =3D XIL(0), object =3D XIL(0x555e015b0845), position =3D { charpos =3D 40449, bytepos =3D 53600 }, truncation_pixel_width =3D 0, continuation_pixel_width =3D 8, first_visible_x =3D 0, last_visible_x =3D 640, last_visible_y =3D 578, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D -1, override_descent =3D 0, override_boff =3D 0, glyph_row =3D 0x0, area =3D TEXT_AREA, nglyphs =3D 1, pixel_width =3D 8, ascent =3D 13, descent =3D 4, max_ascent =3D 0, max_descent =3D 0, phys_ascent =3D 7, phys_descent =3D 0, max_phys_ascent =3D 14, max_phys_descent =3D 9, current_x =3D 0, wrap_prefix_width =3D 0, continuation_lines_width =3D 636, eol_pos =3D { charpos =3D 0, bytepos =3D 0 }, current_y =3D 601, first_vpos =3D 0, vpos =3D 1, hpos =3D 0, lnum =3D 0, lnum_bytepos =3D 0, lnum_width =3D 0, lnum_pixel_width =3D 0, pt_lnum =3D 0, stretch_adjust =3D 0, left_user_fringe_bitmap =3D 0, right_user_fringe_bitmap =3D 0, left_user_fringe_face_id =3D 0, right_user_fringe_face_id =3D 0, bidi_p =3D true, bidi_it =3D { bytepos =3D 53600, charpos =3D 40449, ch =3D 120, nchars =3D 1, ch_len =3D 1, type =3D STRONG_L, type_after_wn =3D STRONG_L, orig_type =3D STRONG_L, resolved_level =3D 108 'l', isolate_level =3D 0 '\000', invalid_levels =3D 0, invalid_isolates =3D 0, prev =3D { charpos =3D 40448, type =3D STRONG_L, orig_type =3D STRONG_L }, last_strong =3D { charpos =3D 40448, type =3D STRONG_L, orig_type =3D STRONG_L }, next_for_neutral =3D { charpos =3D 40447, type =3D UNKNOWN_BT, orig_type =3D STRONG_L }, prev_for_neutral =3D { charpos =3D 40448, type =3D STRONG_L, orig_type =3D STRONG_L }, next_for_ws =3D { charpos =3D 40447, type =3D STRONG_L, orig_type =3D UNKNOWN_BT }, bracket_pairing_pos =3D -1, bracket_enclosed_type =3D UNKNOWN_BT, next_en_pos =3D 0, next_en_type =3D UNKNOWN_BT, sos =3D R2L, scan_dir =3D 1, disp_pos =3D 40531, disp_prop =3D 0, stack_idx =3D 54, level_stack =3D {{ next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 3 '\003', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 5 '\005', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 7 '\a', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 9 '\t', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 11 '\v', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 13 '\r', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 15 '\017', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 17 '\021', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 19 '\023', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 21 '\025', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 23 '\027', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 25 '\031', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 27 '\033', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 29 '\035', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 31 '\037', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 33 '!', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 35 '#', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 37 '%', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 39 '\'', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 41 ')', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 43 '+', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 45 '-', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 47 '/', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 49 '1', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 51 '3', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 53 '5', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 55 '7', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 57 '9', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 59 ';', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 61 '=3D', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 63 '?', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 65 'A', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 67 'C', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 69 'E', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 71 'G', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 73 'I', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 75 'K', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 77 'M', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 79 'O', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 81 'Q', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 83 'S', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 85 'U', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 87 'W', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 89 'Y', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 91 '[', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 93 ']', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 95 '_', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 97 'a', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 99 'c', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 101 'e', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 103 'g', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 105 'i', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 107 'k', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 109 'm', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 111 'o', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' } }, string =3D { lstring =3D XIL(0), s =3D 0x0, schars =3D 0, bufpos =3D 0, from_disp_str =3D false, unibyte =3D false }, w =3D 0x555e00ba8b28, paragraph_dir =3D L2R, separator_limit =3D -1, first_elt =3D false, new_paragraph =3D false, frame_window_p =3D true }, paragraph_embedding =3D L2R, min_width_property =3D XIL(0), min_width_start =3D 0 } it2data =3D 0x0 it3data =3D 0x0 start_pos =3D nchars_per_row =3D pos_limit =3D #11 0x0000555dfed50f77 in redisplay_window (window=3DXIL(0x555e00ba8b2d), just_this_one_p=3Djust_this_one_p@entry= =3Dtrue) at /home/steve/src/emacs/emacs-master/src/xdisp.c:20698 w =3D 0x555e00ba8b28 f =3D buffer =3D old =3D lpoint =3D { charpos =3D , bytepos =3D } opoint =3D { charpos =3D , bytepos =3D } startp =3D { charpos =3D , bytepos =3D } update_mode_line =3D true tem =3D it =3D { window =3D XIL(0x555e00ba8b2d), w =3D 0x555e00ba8b28, f =3D 0x555e00ba88b0, method =3D GET_FROM_BUFFER, stop_charpos =3D 716, prev_stop =3D 712, base_level_stop =3D 449, end_charpos =3D 40531, medium_narrowing_begv =3D 0, medium_narrowing_zv =3D 0, large_narrowing_begv =3D 0, large_narrowing_zv =3D 0, s =3D 0x0, string_nchars =3D 0, multibyte_p =3D true, tab_line_p =3D false, header_line_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, from_disp_prop_p =3D false, ellipsis_p =3D false, avoid_cursor_p =3D false, dp =3D 0x555e016965f0, dpvec =3D 0x0, dpend =3D 0x0, dpvec_char_len =3D 0, dpvec_face_id =3D 0, saved_face_id =3D 0, ctl_chars =3D {XIL(0) }, start =3D { pos =3D { charpos =3D 40530, bytepos =3D 53695 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, current =3D { pos =3D { charpos =3D 712, bytepos =3D 851 }, overlay_string_index =3D -1, string_pos =3D { charpos =3D -1, bytepos =3D -1 }, dpvec_index =3D -1 }, n_overlay_strings =3D 0, overlay_strings_charpos =3D 40042, overlay_strings =3D {XIL(0) }, string_overlays =3D {XIL(0) }, string =3D XIL(0), from_overlay =3D XIL(0), stack =3D {{ string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }, { string =3D XIL(0), string_nchars =3D 0, end_charpos =3D 0, stop_charpos =3D 0, prev_stop =3D 0, base_level_stop =3D 0, cmp_it =3D { stop_pos =3D 0, id =3D 0, ch =3D 0, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 0, reversed_p =3D false, parent_it =3D 0x0, charpos =3D 0, nchars =3D 0, nbytes =3D 0, from =3D 0, to =3D 0, width =3D 0 }, face_id =3D 0, u =3D { image =3D { object =3D XIL(0), slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, image_id =3D 0 }, stretch =3D { object =3D XIL(0) }, xwidget =3D { object =3D XIL(0) } }, position =3D { charpos =3D 0, bytepos =3D 0 }, current =3D { pos =3D { charpos =3D 0, bytepos =3D 0 }, overlay_string_index =3D 0, string_pos =3D { charpos =3D 0, bytepos =3D 0 }, dpvec_index =3D 0 }, from_overlay =3D XIL(0), area =3D LEFT_MARGIN_AREA, method =3D GET_FROM_BUFFER, paragraph_embedding =3D NEUTRAL_DIR, multibyte_p =3D false, string_from_display_prop_p =3D false, string_from_prefix_prop_p =3D false, display_ellipsis_p =3D false, avoid_cursor_p =3D false, bidi_p =3D false, from_disp_prop_p =3D false, line_wrap =3D TRUNCATE, voffset =3D 0, space_width =3D XIL(0), font_height =3D XIL(0) }}, sp =3D 0, selective =3D 0, what =3D IT_CHARACTER, face_id =3D 25, selective_display_ellipsis_p =3D true, ctl_arrow_p =3D true, face_box_p =3D false, start_of_box_run_p =3D false, end_of_box_run_p =3D false, overlay_strings_at_end_processed_p =3D false, ignore_overlay_strings_at_pos_p =3D false, glyph_not_available_p =3D false, starts_in_middle_of_char_p =3D false, face_before_selective_p =3D false, constrain_row_ascent_descent_p =3D false, line_number_produced_p =3D false, line_wrap =3D WINDOW_WRAP, base_face_id =3D 0, c =3D 34, len =3D 1, cmp_it =3D { stop_pos =3D 1212, id =3D -1, ch =3D -2, rule_idx =3D 0, lookback =3D 0, nglyphs =3D 4, reversed_p =3D false, parent_it =3D 0x7ffdd6547d50, charpos =3D 40037, nchars =3D 1, nbytes =3D 2, from =3D 0, to =3D 1, width =3D 1 }, char_to_display =3D 34, glyphless_method =3D GLYPHLESS_DISPLAY_THIN_SPACE, image_id =3D 0, xwidget =3D 0x0, slice =3D { x =3D XIL(0), y =3D XIL(0), width =3D XIL(0), height =3D XIL(0) }, space_width =3D XIL(0), voffset =3D 0, tab_width =3D 8, font_height =3D XIL(0), object =3D XIL(0x555e015b0845), position =3D { charpos =3D 712, bytepos =3D 851 }, truncation_pixel_width =3D 0, continuation_pixel_width =3D 8, first_visible_x =3D 0, last_visible_x =3D 640, last_visible_y =3D 578, extra_line_spacing =3D 0, max_extra_line_spacing =3D 0, override_ascent =3D -1, override_descent =3D 0, override_boff =3D 0, glyph_row =3D 0x0, area =3D TEXT_AREA, nglyphs =3D 1, pixel_width =3D 8, ascent =3D 13, descent =3D 4, max_ascent =3D 14, max_descent =3D 9, phys_ascent =3D 9, phys_descent =3D -5, max_phys_ascent =3D 14, max_phys_descent =3D 9, current_x =3D 568, wrap_prefix_width =3D 0, continuation_lines_width =3D 3185, eol_pos =3D { charpos =3D 0, bytepos =3D 0 }, current_y =3D -9841, first_vpos =3D 0, vpos =3D -453, hpos =3D 77, lnum =3D 0, lnum_bytepos =3D 0, lnum_width =3D 0, lnum_pixel_width =3D 0, pt_lnum =3D 0, stretch_adjust =3D 0, left_user_fringe_bitmap =3D 0, right_user_fringe_bitmap =3D 0, left_user_fringe_face_id =3D 0, right_user_fringe_face_id =3D 0, bidi_p =3D false, bidi_it =3D { bytepos =3D 53054, charpos =3D 40034, ch =3D 40, nchars =3D 1, ch_len =3D 1, type =3D STRONG_R, type_after_wn =3D NEUTRAL_ON, orig_type =3D NEUTRAL_ON, resolved_level =3D 107 'k', isolate_level =3D 0 '\000', invalid_levels =3D 0, invalid_isolates =3D 0, prev =3D { charpos =3D 40033, type =3D NEUTRAL_WS, orig_type =3D NEUTRAL_WS }, last_strong =3D { charpos =3D 40030, type =3D STRONG_L, orig_type =3D STRONG_L }, next_for_neutral =3D { charpos =3D 40036, type =3D STRONG_R, orig_type =3D RLE }, prev_for_neutral =3D { charpos =3D 40030, type =3D STRONG_L, orig_type =3D STRONG_L }, next_for_ws =3D { charpos =3D 39983, type =3D STRONG_L, orig_type =3D UNKNOWN_BT }, bracket_pairing_pos =3D 40034, bracket_enclosed_type =3D UNKNOWN_BT, next_en_pos =3D 0, next_en_type =3D UNKNOWN_BT, sos =3D R2L, scan_dir =3D -1, disp_pos =3D 40085, disp_prop =3D 0, stack_idx =3D 54, level_stack =3D {{ next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 1 '\001', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 3 '\003', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 5 '\005', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 7 '\a', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 9 '\t', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 11 '\v', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 13 '\r', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 15 '\017', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 17 '\021', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 19 '\023', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 21 '\025', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 23 '\027', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 25 '\031', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 27 '\033', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 29 '\035', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 31 '\037', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 33 '!', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 35 '#', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 37 '%', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 39 '\'', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 41 ')', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 43 '+', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 45 '-', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 47 '/', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 49 '1', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 51 '3', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 53 '5', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 55 '7', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 57 '9', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 59 ';', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 61 '=3D', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 63 '?', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 65 'A', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 67 'C', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 69 'E', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 71 'G', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 73 'I', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 75 'K', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 77 'M', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 79 'O', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 81 'Q', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 83 'S', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 85 'U', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 87 'W', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 89 'Y', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 91 '[', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 93 ']', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 95 '_', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 97 'a', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 99 'c', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 101 'e', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 103 'g', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 105 'i', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 107 'k', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 109 'm', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 111 'o', flags =3D 0 '\000' }, { next_for_neutral_pos =3D 0, next_for_neutral_type =3D 0, last_strong_type =3D 0, prev_for_neutral_type =3D 0, level =3D 0 '\000', flags =3D 0 '\000' } }, string =3D { lstring =3D XIL(0), s =3D 0x0, schars =3D 0, bufpos =3D 0, from_disp_str =3D false, unibyte =3D false }, w =3D 0x555e00ba8b28, paragraph_dir =3D L2R, separator_limit =3D -1, first_elt =3D false, new_paragraph =3D false, frame_window_p =3D true }, paragraph_embedding =3D L2R, min_width_property =3D XIL(0), min_width_start =3D 0 } current_matrix_up_to_date_p =3D used_current_matrix_p =3D false temp_scroll_step =3D false count =3D { bytes =3D } rc =3D centering_position =3D 289 last_line_misfit =3D false beg_unchanged =3D end_unchanged =3D frame_line_height =3D margin =3D 0 use_desired_matrix =3D itdata =3D force_start =3D #12 0x0000555dfed51a11 in redisplay_window_1 (window=3Dwindow@entry=3DXIL(0x555e00ba8b2d)) at /home/steve/src/emacs/emacs-master/src/xdisp.c:18020 #13 0x0000555dfee6d9d9 in internal_condition_case_1 (bfun=3Dbfun@entry=3D0x555dfed519e2 , arg=3DXIL(0x5= 55e00ba8b2d), handlers=3D, hfun=3Dhfun@entry=3D0x555dfed16cc= c ) at /home/steve/src/emacs/emacs-master/src/eval.c:1561 val =3D c =3D 0x555e0098b1e0 #14 0x0000555dfed41f6c in redisplay_internal () at /home/steve/src/emacs/emacs-master/src/xdisp.c:17509 mini_window =3D mini_frame =3D w =3D 0x555e00ba8b28 sw =3D fr =3D pending =3D false must_finish =3D match_p =3D tlbufpos =3D { charpos =3D 0, bytepos =3D 93862238029888 } tlendpos =3D { charpos =3D , bytepos =3D } number_of_visible_frames =3D 1 sf =3D 0x555e00ba88b0 polling_stopped_here =3D tail =3D frame =3D hscroll_retries =3D garbaged_frame_retries =3D consider_all_windows_p =3D update_miniwindow_p =3D count =3D { bytes =3D } retry_frame =3D #15 0x0000555dfed423b5 in redisplay () at /home/steve/src/emacs/emacs-master/src/xdisp.c:16562 #16 0x0000555dfee05740 in read_char (commandflag=3D1, map=3Dmap@entry=3DXIL(0x555e01519413), prev_event=3DX= IL(0), used_mouse_menu=3Dused_mouse_menu@entry=3D0x7ffdd654bc0b, end_time= =3Dend_time@entry=3D0x0) at /home/steve/src/emacs/emacs-master/src/keyboard.c:2686 echo_current =3D true c =3D local_getcjmp =3D {{ __jmpbuf =3D {1, 27636981458258969, 93862238029888, 0, 46118721= 390016, 93862247222787, -28850258421494759, -6135642403306222567}, __mask_was_saved =3D 0, __saved_mask =3D { __val =3D {0, 93862203400864, 93862196859555, 93862235650832,= 128, 0, 139980926107192, 46118722745832, 93862196801135, 139980932887488, = 93862196471598, 4294967296, 93862238029888, 0, 42960, 0} } }} save_jump =3D {{ __jmpbuf =3D {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved =3D 0, __saved_mask =3D { __val =3D {0 } } }} tem =3D save =3D previous_echo_area_message =3D XIL(0) also_record =3D XIL(0) reread =3D false recorded =3D false polling_stopped_here =3D false orig_kboard =3D 0x555e00a22280 jmpcount =3D { bytes =3D } #17 0x0000555dfee07009 in read_key_sequence (keybuf=3Dkeybuf@entry=3D0x7ffdd654bd30, prompt=3Dprompt@entry=3DXIL(0)= , dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, can_return_switch_= frame=3Dcan_return_switch_frame@entry=3Dtrue, fix_current_buffer=3Dfix_curr= ent_buffer@entry=3Dtrue, prevent_redisplay=3Dprevent_redisplay@entry=3Dfals= e, disable_text_conversion_p=3Dfalse) at /home/steve/src/emacs/emacs-master/src/keyboard.c:10707 interrupted_kboard =3D 0x555e00a22280 interrupted_frame =3D 0x555e00ba88b0 key =3D used_mouse_menu =3D false echo_local_start =3D 0 last_real_key_start =3D 0 keys_local_start =3D 0 new_binding =3D count =3D { bytes =3D } t =3D 0 echo_start =3D 0 keys_start =3D 0 current_binding =3D XIL(0x555e01519413) first_unbound =3D 31 mock_input =3D 0 used_mouse_menu_history =3D {false } fkey =3D { parent =3D XIL(0x7f4fd9297ae3), map =3D XIL(0x7f4fd9297ae3), start =3D 0, end =3D 0 } keytran =3D { parent =3D XIL(0x7f4fd9c70133), map =3D XIL(0x7f4fd9c70133), start =3D 0, end =3D 0 } indec =3D { parent =3D XIL(0x7f4fd9297ad3), map =3D XIL(0x7f4fd9297ad3), start =3D 0, end =3D 0 } shift_translated =3D false delayed_switch_frame =3D XIL(0) original_uppercase =3D XIL(0) original_uppercase_position =3D -1 dummyflag =3D false disabled_conversion =3D false starting_buffer =3D 0x555e015b0840 fake_prefixed_keys =3D XIL(0) first_event =3D XIL(0) second_event =3D #18 0x0000555dfee08590 in command_loop_1 () at /home/steve/src/emacs/emacs-master/src/keyboard.c:1428 cmd =3D keybuf =3D {XIL(0xab90), make_fixnum(6), XIL(0xa0), XIL(0x7ffdd654b= da0), make_fixnum(0), XIL(0x30), XIL(0x555dff4b0120), XIL(0x555dfee6d2a3), = XIL(0x7ffdd654bdf0), XIL(0x60), XIL(0), XIL(0), XIL(0), XIL(0x555dfee6e707)= , XIL(0xb), XIL(0xf900), XIL(0x30), XIL(0x555e0173d01d), XIL(0x6bd0), XIL(0= x2b6ee6f826153000), XIL(0x555e0143d7d3), XIL(0x60), XIL(0), XIL(0x555dfedfd= aa5), XIL(0), XIL(0x2b6ee6f826153000), XIL(0x60), XIL(0x7f4fd96b68f3), XIL(= 0), XIL(0x555dfee72300)} i =3D last_pt =3D prev_modiff =3D 2889 prev_buffer =3D 0x555e015b0840 #19 0x0000555dfee6d963 in internal_condition_case (bfun=3Dbfun@entry=3D0x555dfee083bd , handlers=3Dhandle= rs@entry=3DXIL(0x90), hfun=3Dhfun@entry=3D0x555dfedfd963 ) at /home/steve/src/emacs/emacs-master/src/eval.c:1537 val =3D c =3D 0x555e0098b0a0 #20 0x0000555dfedf803d in command_loop_2 (handlers=3Dhandlers@entry=3DXIL(0= x90)) at /home/steve/src/emacs/emacs-master/src/keyboard.c:1167 val =3D #21 0x0000555dfee6d8a1 in internal_catch (tag=3Dtag@entry=3DXIL(0x108f0), func=3Dfunc@entry=3D0x555dfedf8023 , arg=3Darg@entry=3DXIL(0x90)) at /home/steve/src/emacs/emacs-= master/src/eval.c:1217 val =3D c =3D 0x555e0098af60 #22 0x0000555dfedf8000 in command_loop () at /home/steve/src/emacs/emacs-master/src/keyboard.c:1145 #23 0x0000555dfedfd57a in recursive_edit_1 () at /home/steve/src/emacs/emacs-master/src/keyboard.c:753 count =3D { bytes =3D } val =3D #24 0x0000555dfedfd888 in Frecursive_edit () at /home/steve/src/emacs/emacs-master/src/keyboard.c:836 count =3D { bytes =3D } buffer =3D #25 0x0000555dfedf762a in main (argc=3D2, argv=3D0x7ffdd654c0d8) at /home/steve/src/emacs/emacs-master/src/emacs.c:2624 stack_bottom_variable =3D 0x7f4fde8d03ea <_nl_C_name> old_argc =3D no_loadup =3D false junk =3D 0x0 dname_arg =3D 0x0 ch_to_dir =3D 0x0 original_pwd =3D 0x0 dump_mode =3D skip_args =3D 0 temacs =3D 0x0 attempt_load_pdump =3D only_version =3D false rlim =3D { rlim_cur =3D 10022912, rlim_max =3D 18446744073709551615 } lc_all =3D sockfd =3D -1 module_assertions =3D Lisp Backtrace: "redisplay_internal (C function)" (0x0) (gdb) kill Kill the program being debugged? (y or n) y [Inferior 1 (process 5190) killed] (gdb)=20 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 07 06:25:52 2024 Received: (at 69385) by debbugs.gnu.org; 7 Mar 2024 11:25:52 +0000 Received: from localhost ([127.0.0.1]:52673 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1riBsm-00053V-94 for submit@debbugs.gnu.org; Thu, 07 Mar 2024 06:25:52 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33288) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1riBsj-00053B-KB for 69385@debbugs.gnu.org; Thu, 07 Mar 2024 06:25:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1riBs5-0008ET-FO; Thu, 07 Mar 2024 06:25:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=o7LKYwMPbBW9BGaUgFxF2975oEc8/pjNwx7iSrFg3dA=; b=aCr9lw/7LBcN gpM6+z5625b46dweqppKD9TOF6SjcugE96wtPOYF0mfi06nn2TNgluDrEOTpGXfNUvNVkSc1XpJjT aGSoFNunLupCnaODIm0+I4rxHQILCy1/puoaFI+tx5lQTQt9FTubfgP1TJxNKL38sskLk4SvkDKX3 R7Jev0V5KmVFTw1OxjkdgaHKSMfHXVdnGZSEuAOV6XCCytKwArNkUy35zLbq6PiPFtcu7nWYfJJEv ms91FwZTqxfCWldM3jhjpeoKzaowUwVYLGeKfzsVdCXliaxecENOzHNNrLhBrwt063KFRGrcQ/1zT 5vAKh4IQPtW/ZTHJmTz2Ag==; Date: Thu, 07 Mar 2024 13:25:03 +0200 Message-Id: <8634t22sj4.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <871q8m8fd8.fsf@gmx.net> (message from Stephen Berman on Thu, 07 Mar 2024 12:12:51 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <86edcrny2g.fsf@gnu.org> <87sf16azxp.fsf@gmx.net> <86cysam50x.fsf@gnu.org> <871q8m8fd8.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385 Cc: 69385@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Thu, 07 Mar 2024 12:12:51 +0100 > > Most of the Arabic words in the problematic file are enclosed in the > bidirectional control characters POP DIRECTIONAL FORMATTING (#x202c) and > RIGHT-TO-LEFT EMBEDDING (#x202b). I did not add these characters, but I > had copy-&-pasted most of the Arabic from a PDF file I did not create. > I don't know if PDFs of Arabic text normally contain these control > characters, but the consequences for Emacs were dramatic. When I simply > visited this file in Emacs (started with -Q) there was an immediate > slowdown, and in top I could see Emacs using 100% of a CPU thread. When > I ran the end-of-buffer benchmark on this file, the result (with your > patch) was: > > (27.962602113 2 0.0226042269999999977) > > However, the display of that result only appeared in the echo area after > more than a minute (I timed it with a stopwatch). At that point the > mode line showed the buffer at 4% from the top, and the display remained > frozen afterwards. After several minutes during which Emacs consumed > 100% CPU, and I had switched the focus away from the Emacs frame, the > CPU consumption stopped, but as soon as I switch focus back to that > frame, it went back to 100%. The display never changed from showing the > buffer at 4%, apparently being in some kind of infinite loop. After > about 15 minutes I started gdb, attached the Emacs process and produced > a backtrace, which I've attached, in the hope it helps to diagnose the > problem. > > The problem seems to be certainly related the the bidirectional control > characters, because I made a copy of the file and removed all > occurrences of these control characters from it, and then ran the > end-of-buffer benchmark, getting this result (with your patch): > > (0.716104165 4 0.04223660400000001) > > And the display updated normally and CPU consumption was normal. > > Nevertheless, there seems to be something else besides the control > characters involved in this issue, because as a futher test, I created a > buffer consisting of more than 1000 copies of the test string > concatenating the Arabic example in etc/HELLO and "Hello", and manually > enclosed each Arabic word in the above control characters, but the > benchmark result in this buffer was not significantly different from the > result without the control characters (and similar to the above result > for the copy of the problematic file without the control characters), > and the display did not freeze. Please submit a separate bug report, and please post an example of a problematic file with the report. Thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 21 04:30:12 2024 Received: (at 69385-done) by debbugs.gnu.org; 21 Mar 2024 08:30:12 +0000 Received: from localhost ([127.0.0.1]:34183 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnDoS-00038d-Do for submit@debbugs.gnu.org; Thu, 21 Mar 2024 04:30:12 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45450) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnDoR-00037I-8X for 69385-done@debbugs.gnu.org; Thu, 21 Mar 2024 04:30:11 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rnDnh-0007zd-BS; Thu, 21 Mar 2024 04:29:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=4in87kqHMyxmkp9LTJDRFLQm4ftpXlj424+s+kV3gtI=; b=q/Mu+YDX6WQv ObOFALfq7h6d5vpvC5LGH60JH7chrD1uRFbVJONYrTRBbDAlWfnbD7ewCzqHyan8CICecYHDs5bNV SM2jnarsb5e8i1QjUdvNnkqTRq3SyEEegzTni3Jpm44QKFiNHsa+hWVeaBkAWeqySyWYT6PkMQjwz bAk9YwiKbknWg0OWTiEa6WkF14BuvZUEZkHUtYbcjnEecbbzgP6o7uKiiTToFoomOH3dOblAyjxS1 liVXtUbEGGV14Dsj32JtmeHis5Bx8sDi/UmStMuVW98bBQw3N3GBL1glCUfUZadoXGMzHuSH4vTW9 bEG6fxkbi7jFf5KwZPa/JQ==; Date: Thu, 21 Mar 2024 10:29:12 +0200 Message-Id: <86jzlw2dk7.fsf@gnu.org> From: Eli Zaretskii To: Stephen Berman In-Reply-To: <871q8m8fd8.fsf@gmx.net> (message from Stephen Berman on Thu, 07 Mar 2024 12:12:51 +0100) Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <86edcrny2g.fsf@gnu.org> <87sf16azxp.fsf@gmx.net> <86cysam50x.fsf@gnu.org> <871q8m8fd8.fsf@gmx.net> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 69385-done Cc: 69385-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Stephen Berman > Cc: 69385@debbugs.gnu.org > Date: Thu, 07 Mar 2024 12:12:51 +0100 > > > So I will wait for you to report any problems, and if no problems are > > seen, will install in a week or so. > > I haven't yet run into any issues concerning your patch No further comments, so I assume the patch is indeed safe, and I have now installed it on the master branch. I'm therefore closing this bug. Thanks for testing the patch. From debbugs-submit-bounces@debbugs.gnu.org Thu Mar 21 11:09:02 2024 Received: (at 69385-done) by debbugs.gnu.org; 21 Mar 2024 15:09:02 +0000 Received: from localhost ([127.0.0.1]:37076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnK2P-0001os-DQ for submit@debbugs.gnu.org; Thu, 21 Mar 2024 11:09:02 -0400 Received: from mout.gmx.net ([212.227.15.15]:55593) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rnK2M-0001nR-Ob for 69385-done@debbugs.gnu.org; Thu, 21 Mar 2024 11:09:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net; s=s31663417; t=1711033692; x=1711638492; i=stephen.berman@gmx.net; bh=th5gVZd9DXVEjj7WOhGSTQ8nBwwJNk+JGsrpaPuoAnA=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=IG+WxIM9nHWAwiXTxRY9X2BVy+FjWECncN/D3TBP2Nd5UPNbG8oIqAUoX1pz6jbI tEWaIOTy64nKJbq623Uu4G4d4y7AZPW5q/JneXyOlAVdbNGke1zmZpQ+SRFnR0CXd MmDf/PuftzomhMCvSfbSmV03I8n8QFJv0HwUV/HNM4H/2hrJZNdaymGtaI5/4LN+Q e9r+FFz+xGsuBK5J5BXc9dxbaPow0iCk9zhKixZr0OWAKY/pi4UrPd7YFoHiaHaZH n8jX8dXKfropplasdDWiRhbYU891+2c32rk+1LNkEaxda2lkoZ6i8ABFmt4vMzkb5 ifYQ8eJlPXYu/GH7GQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from strobelfs2 ([94.134.94.58]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MEm2D-1rYnAN2GCZ-00GEhD; Thu, 21 Mar 2024 16:08:12 +0100 From: Stephen Berman To: Eli Zaretskii Subject: Re: bug#69385: 30.0.50; Long lines with bidi text slow down Emacs In-Reply-To: <86jzlw2dk7.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 21 Mar 2024 10:29:12 +0200") References: <878r381pjk.fsf@gmx.net> <86msrowk0g.fsf@gnu.org> <87zfvozaj7.fsf@gmx.net> <86edd0wdbs.fsf@gnu.org> <87r0h0z3fl.fsf@gmx.net> <868r37wgkx.fsf@gnu.org> <87zfvnfh4d.fsf@gmx.net> <86v86bux3w.fsf@gnu.org> <86ttlvuwxo.fsf@gnu.org> <87r0gzfe5a.fsf@gmx.net> <86r0gzusrx.fsf@gnu.org> <87msrnfc7h.fsf@gmx.net> <86o7c3uqqt.fsf@gnu.org> <87il2bf8uz.fsf@gmx.net> <86bk83uj9a.fsf@gnu.org> <86edcrny2g.fsf@gnu.org> <87sf16azxp.fsf@gmx.net> <86cysam50x.fsf@gnu.org> <871q8m8fd8.fsf@gmx.net> <86jzlw2dk7.fsf@gnu.org> Date: Thu, 21 Mar 2024 16:08:11 +0100 Message-ID: <87le6bsjvo.fsf@gmx.net> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:iZj3G7f7yxpw+HS+msKg0MuFLJdG6UyBmi5rXM+zG2ezXGN7iUJ GUml0SP1wTJ8+rnPKIalQdWugOU14PNnIW5zN2wG8czG5rnDeGI50gwE31wNO2A6ZdzMyZm FcM1uujpsJT30bfY3vPVi8v7ZdSYSaEFhJH8xoVhdgTlavGdgWZ8M5L8EyMchLaOom7+l6d vp7pUSyDEwdggKLSD8R5g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Na5UHfrWeAk=;UsmXoBEfqzyXIiYSzKqSsZiSkTJ MIjxejO6aADem8Z6wfXRGCx53UyzYqAV0xKhBJPLLSPatqF2aIUEVUCukwbHubW9c2NMgBebe HtrZRmAlbHVs0kX21xcvSdeJTdbqsOPIcieQKLlZNm6WeIl5DuX7BRpG9DZp1uHbgJEx/LlRp jZOwj41C/fyjfT7O2pOEmlbEJuEBjQ74lFnY4D3Sf1sEbSuREUWopZnROZ/g7eyT5hblUku+m /N/fRzSiyM34+0iYxtDcNZw2B8FH2rAX/atATrrx10hROV1xJqifcY4GuQuz4FY2twgsv8nOK BCafsAJ0WC9D4pXpSel+T/3nOGS2YHjXCUWmPtx6gOYlFo9ULQox7S3PQVbrmiyeOMEc83bdD bCZ3ZANVZAk1vqU5hx9RbOevTaf3Fn5bi7qNwllizwKyo/FY5fvGyCQFQrQuw+kVeCrpRjh4M w4bzhMgxdjcf/C9cWCyRFTZVzaTK7vHCP825uW1LtJThzX/8qAy1zDWWrl+pJFMXXVmaQCvSe ZRb/aZWVsqVXNSiZK42YsU6jo3Xg4t5dgpL+n8z0Ilf82ESTPxBFQ729B9ICmO/a/ybR3P75C QmDvlbORCFSaWdAl6Sh3gXTTn/geh5lEnDMxq2efPksVzSEdIPAYaGrpszo7VJ7VkWG804Fi6 Ng2XL9NaDwrrq32zZ6/b26qkujs62c2aWNArmU3PD+l2hGkCKqt2bx73SQyktLQq5pkUWUxVR TJPWEXsJPZWgiVen3OCX7rM8MbwNYohRpmWTD80b6XTK1KT1A9rpanFGH9QEAnyrvUZnS9Fxr vQ4pS0z2Npe4jcej/WWStWH32BVcOvt/PBwoq4WTjLiBU= Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 69385-done Cc: 69385-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) On Thu, 21 Mar 2024 10:29:12 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69385@debbugs.gnu.org >> Date: Thu, 07 Mar 2024 12:12:51 +0100 >> >> > So I will wait for you to report any problems, and if no problems are >> > seen, will install in a week or so. >> >> I haven't yet run into any issues concerning your patch > > No further comments, so I assume the patch is indeed safe, and I have > now installed it on the master branch. > > I'm therefore closing this bug. Thanks for testing the patch. Thanks for the optimization! Steve Berman From unknown Sat Aug 16 23:40:22 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 19 Apr 2024 11:24:24 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator