From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nathaniel Flath Subject: Re: [PATH] Speedups to org-table-recalculate Date: Sat, 18 Oct 2014 01:11:02 -0400 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=089e0115e8600c487f0505ab8215 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XfMID-0006CI-UT for emacs-orgmode@gnu.org; Sat, 18 Oct 2014 01:11:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XfMIC-0007gl-K7 for emacs-orgmode@gnu.org; Sat, 18 Oct 2014 01:11:05 -0400 Received: from mail-ob0-x232.google.com ([2607:f8b0:4003:c01::232]:58979) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XfMIC-0007fv-9k for emacs-orgmode@gnu.org; Sat, 18 Oct 2014 01:11:04 -0400 Received: by mail-ob0-f178.google.com with SMTP id wn1so1613504obc.23 for ; Fri, 17 Oct 2014 22:11:03 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Michael Brand Cc: org-mode List --089e0115e8600c487f0505ab8215 Content-Type: multipart/alternative; boundary=089e0115e8600c487b0505ab8213 --089e0115e8600c487b0505ab8213 Content-Type: text/plain; charset=UTF-8 Hi On Sat, Oct 11, 2014 at 12:16 PM, Michael Brand wrote: > Hi Nathaniel > > On Fri, Oct 10, 2014 at 9:43 PM, Nathaniel Flath > wrote: > > Mine is a pretty simple table (takes less than a second even in the > original > > case): > > Earlier I assumed that the issue is a very high number of messages > from the loops. Now your example table clarifies to me that the issue > is that already just one single message can take a significant time of > a message-less table recalculation (your 17 ms). > > Only with this I understand now why you want to remove also the > beginning/end processing messages. Good point as it should be > noticeable at least for org-table-iterate-buffer-tables in a buffer > with many tables where each one takes a short time to recalculate. > > I really wonder what the reason is that this > > (progn > (message "%d" (random)) ;; Prevent collapsing of message lines. > (time (message nil))) > > in a terminal (emacs -nw) shows most of the times only 0.05 to 0.10 ms > but in a window it shows most of the times 8 to 22 ms (here: GNU Emacs > 24.3.1 on Mac OS X 10.9). Which Emacs version and OS are you using? > I'm running 24.3.1 on Mac OS X 10.8.4. > > For your patch I suggest to remove only the first message and to add > the time check to all other messages. This should not make the patch > noticeably slower but would keep showing the progress for table > recalculations that last more than one second. To clean up the last > loop message from the mode line I suggest to check the end messages > against the very first log time in contrast to the next log time used > for the loop messages (variables "log_first" and "log_next" instead of > just "log"). > > I suggest you split your patch: One for "(when eqlist" and one for the > messages. The change with the messages will then become human readable > also with a simple line diff. OK, sounds reasonable. Patches are attached. > > > Original recalculation: (0 0 396224 0) > > > Version w/ time checks for per-field messages (still always printing at > > beginning/end of processing):(0 0 56929 0) > > > Version w/ time checks and removing all beginning/end of processing > > messages: (0 0 22077 0) > > > My patch: (0 0 17405 0) > > I could not reproduce a reliable difference between the last two. As > expected both did not log any message. Can you? > Rrunning more iterations they seemed to be mostly equal. Patches are attached. > > Michael > --089e0115e8600c487b0505ab8213 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hi

On Sat, Oct 11, 2014 at 12:16 PM, Michael Brand <m= ichael.ch.brand@gmail.com> wrote:
Hi Nathaniel

On Fri, Oct 10, 2014 at 9:43 PM, Nathaniel Flath <flat0103@gmail.com> wrote:
> Mine is a pretty simple table (takes less than a second even in the or= iginal
> case):

Earlier I assumed that the issue is a very high number of messages from the loops. Now your example table clarifies to me that the issue
is that already just one single message can take a significant time of
a message-less table recalculation (your 17 ms).

Only with this I understand now why you want to remove also the
beginning/end processing messages. Good point as it should be
noticeable at least for org-table-iterate-buffer-tables in a buffer
with many tables where each one takes a short time to recalculate.

I really wonder what the reason is that this

=C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 (message "%d" (random))=C2=A0 ;; Prevent col= lapsing of message lines.
=C2=A0 =C2=A0 =C2=A0 (time (message nil)))

in a terminal (emacs -nw) shows most of the times only 0.05 to 0.10 ms
but in a window it shows most of the times 8 to 22 ms (here: GNU Emacs
24.3.1 on Mac OS X 10.9). Which Emacs version and OS are you using?

I'm running 24.3.1 on Mac OS X=C2=A0 10.8.= 4.

For your patch I suggest to remove only the first message and to add
the time check to all other messages. This should not make the patch
noticeably slower but would keep showing the progress for table
recalculations that last more than one second. To clean up the last
loop message from the mode line I suggest to check the end messages
against the very first log time in contrast to the next log time used
for the loop messages (variables "log_first" and "log_next&q= uot; instead of
just "log").

I suggest you split your patch: One for "(when eqlist" and one fo= r the
messages. The change with the messages will then become human readable
also with a simple line diff.=C2=A0

OK, sou= nds reasonable.=C2=A0 Patches are attached.
=C2=A0

> Original recalculation:=C2=A0 (0 0 396224 0)

> Version w/ time checks for per-field messages (still always printing a= t
> beginning/end of processing):(0 0 56929 0)

> Version w/ time checks and removing all beginning/end of processing > messages: (0 0 22077 0)

> My patch:=C2=A0 (0 0 17405 0)

I could not reproduce a reliable difference between the last two. As=
expected both did not log any message. Can you?

Rrunning more iterations they seemed to be mostly equal.

<= /div>
Patches are attached.

Michael

--089e0115e8600c487b0505ab8213-- --089e0115e8600c487f0505ab8215 Content-Type: application/octet-stream; name="org-table-speedup-1.patch" Content-Disposition: attachment; filename="org-table-speedup-1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i1eibt1l0 ZGlmZiAtLWdpdCBhL2xpc3Avb3JnLXRhYmxlLmVsIGIvbGlzcC9vcmctdGFibGUuZWwKaW5kZXgg YmMzMmM0NS4uMDMzNTI4MCAxMDA2NDQKLS0tIGEvbGlzcC9vcmctdGFibGUuZWwKKysrIGIvbGlz cC9vcmctdGFibGUuZWwKQEAgLTQyLDcgKzQyLDcgQEAKIAkJICAoc3RyaW5nIGJhY2tlbmQgJm9w dGlvbmFsIGJvZHktb25seSBleHQtcGxpc3QpKQogKGRlY2xhcmUtZnVuY3Rpb24gYWEydSAiZXh0 OmFzY2lpLWFydC10by11bmljb2RlIiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIGNhbGMtZXZhbCAi Y2FsYyIgKHN0ciAmb3B0aW9uYWwgc2VwYXJhdG9yICZyZXN0IGFyZ3MpKQotCQkgIAorCiAoZGVm dmFyIG9yZ3RibC1tb2RlKSA7IGRlZmluZWQgYmVsb3cKIChkZWZ2YXIgb3JndGJsLW1vZGUtbWVu dSkgOyBkZWZpbmVkIHdoZW4gb3JndGJsIG1vZGUgZ2V0IGluaXRpYWxpemVkCiAoZGVmdmFyIGNv bnN0YW50cy11bml0LXN5c3RlbSkKQEAgLTI3NjgsNyArMjc2OCw3IEBAIG5vdCBvdmVyd3JpdGUg dGhlIHN0b3JlZCBvbmUuIgogCSAgICAodXNlci1lcnJvciAiSW52YWxpZCBmaWVsZCBzcGVjaWZp ZXIgXCIlc1wiIgogCQkJKG1hdGNoLXN0cmluZyAwIGZvcm0pKSkKIAkgIChzZXRxIGZvcm0gKHJl cGxhY2UtbWF0Y2ggcmVwbCB0IHQgZm9ybSkpKQotCQorCiAJKGlmIGxpc3BwCiAJICAgIChzZXRx IGV2IChjb25kaXRpb24tY2FzZSBuaWwKIAkJCSAoZXZhbCAoZXZhbCAocmVhZCBmb3JtKSkpCkBA IC0zMDc0LDExOSArMzA3NCwxMjAgQEAga25vd24gdGhhdCB0aGUgdGFibGUgd2lsbCBiZSByZWFs aWduZWQgYSBsaXR0bGUgbGF0ZXIgYW55d2F5LiIKIAkgICBzZWVuLWZpZWxkcyBsaHMxCiAJICAg YmVnIGVuZCBlbnRyeSBlcWxudW0gZXFsbmFtZSBlcWxuYW1lMSBlcWwgKGNudCAwKSBlcSBhIG5h bWUgbmFtZTEpCiAgICAgICA7OyBJbnNlcnQgY29uc3RhbnRzIGluIGFsbCBmb3JtdWxhcwotICAg ICAgKHNldHEgZXFsaXN0Ci0JICAgIChtYXBjYXIgKGxhbWJkYSAoeCkKLQkJICAgICAgKGlmIChz dHJpbmctbWF0Y2ggIl5ALT9JKyIgKGNhciB4KSkKLQkJCSAgKHVzZXItZXJyb3IgIkNhbid0IGFz c2lnbiB0byBobGluZSByZWxhdGl2ZSByZWZlcmVuY2UiKSkKLQkJICAgICAgKHdoZW4gKHN0cmlu Zy1tYXRjaCAiXFxgJFs8Pl0iIChjYXIgeCkpCi0JCQkoc2V0cSBsaHMxIChjYXIgeCkpCi0JCQko c2V0cSB4IChjb25zIChzdWJzdHJpbmcKLQkJCQkgICAgICAgKG9yZy10YWJsZS1mb3JtdWxhLWhh bmRsZS1maXJzdC9sYXN0LXJjCi0JCQkJCShjYXIgeCkpIDEpCi0JCQkJICAgICAgKGNkciB4KSkp Ci0JCQkoaWYgKGFzc29jIChjYXIgeCkgZXFsaXN0MSkKLQkJCSAgICAodXNlci1lcnJvciAiXCIl cz1cIiBmb3JtdWxhIHRyaWVzIHRvIG92ZXJ3cml0ZSBleGlzdGluZyBmb3JtdWxhIGZvciBjb2x1 bW4gJXMiCi0JCQkJICAgbGhzMSAoY2FyIHgpKSkpCi0JCSAgICAgIChjb25zCi0JCSAgICAgICAo b3JnLXRhYmxlLWZvcm11bGEtaGFuZGxlLWZpcnN0L2xhc3QtcmMgKGNhciB4KSkKLQkJICAgICAg IChvcmctdGFibGUtZm9ybXVsYS1zdWJzdGl0dXRlLW5hbWVzCi0JCQkob3JnLXRhYmxlLWZvcm11 bGEtaGFuZGxlLWZpcnN0L2xhc3QtcmMgKGNkciB4KSkpKSkKLQkJICAgIGVxbGlzdCkpCi0gICAg ICA7OyBTcGxpdCB0aGUgZXF1YXRpb24gbGlzdAotICAgICAgKHdoaWxlIChzZXRxIGVxIChwb3Ag ZXFsaXN0KSkKLQkoaWYgKDw9IChzdHJpbmctdG8tY2hhciAoY2FyIGVxKSkgPzkpCi0JICAgIChw dXNoIGVxIGVxbG51bSkKLQkgIChwdXNoIGVxIGVxbG5hbWUpKSkKLSAgICAgIChzZXRxIGVxbG51 bSAobnJldmVyc2UgZXFsbnVtKSBlcWxuYW1lIChucmV2ZXJzZSBlcWxuYW1lKSkKLSAgICAgIDs7 IEV4cGFuZCByYW5nZXMgaW4gbGhzIG9mIGZvcm11bGFzCi0gICAgICAoc2V0cSBlcWxuYW1lIChv cmctdGFibGUtZXhwYW5kLWxocy1yYW5nZXMgZXFsbmFtZSkpCi0KLSAgICAgIDs7IEdldCB0aGUg Y29ycmVjdCBsaW5lIHJhbmdlIHRvIHByb2Nlc3MKLSAgICAgIChpZiBhbGwKLQkgIChwcm9nbgot CSAgICAoc2V0cSBlbmQgKG1vdmUtbWFya2VyIChtYWtlLW1hcmtlcikgKDErIChvcmctdGFibGUt ZW5kKSkpKQotCSAgICAoZ290by1jaGFyIChzZXRxIGJlZyAob3JnLXRhYmxlLWJlZ2luKSkpCi0J ICAgIChpZiAocmUtc2VhcmNoLWZvcndhcmQgb3JnLXRhYmxlLWNhbGN1bGF0ZS1tYXJrLXJlZ2V4 cCBlbmQgdCkKLQkJOzsgVGhpcyBpcyBhIHRhYmxlIHdpdGggbWFya2VkIGxpbmVzLCBjb21wdXRl IHNlbGVjdGVkIGxpbmVzCi0JCShzZXRxIGxpbmUtcmUgb3JnLXRhYmxlLXJlY2FsY3VsYXRlLXJl Z2V4cCkKLQkgICAgICA7OyBNb3ZlIGZvcndhcmQgdG8gdGhlIGZpcnN0IG5vbi1oZWFkZXIgbGlu ZQotCSAgICAgIChpZiAoYW5kIChyZS1zZWFyY2gtZm9yd2FyZCBvcmctdGFibGUtZGF0YWxpbmUt cmVnZXhwIGVuZCB0KQotCQkgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIG9yZy10YWJsZS1obGlu ZS1yZWdleHAgZW5kIHQpCi0JCSAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgb3JnLXRhYmxlLWRh dGFsaW5lLXJlZ2V4cCBlbmQgdCkpCi0JCSAgKHNldHEgYmVnIChtYXRjaC1iZWdpbm5pbmcgMCkp Ci0JCW5pbCkpKSA7OyBqdXN0IGxlYXZlIGJlZyB3aGVyZSBpdCBpcwotCShzZXRxIGJlZyAocG9p bnQtYXQtYm9sKQotCSAgICAgIGVuZCAobW92ZS1tYXJrZXIgKG1ha2UtbWFya2VyKSAoMSsgKHBv aW50LWF0LWVvbCkpKSkpCi0gICAgICAoZ290by1jaGFyIGJlZykKLSAgICAgIChhbmQgYWxsICht ZXNzYWdlICJSZS1hcHBseWluZyBmb3JtdWxhcyB0byBmdWxsIHRhYmxlLi4uIikpCi0KLSAgICAg IDs7IEZpcnN0IGZpbmQgdGhlIG5hbWVkIGZpZWxkcywgYW5kIG1hcmsgdGhlbSB1bnRvdWNoYWJs ZS4KLSAgICAgIDs7IEFsc28gY2hlY2sgaWYgc2V2ZXJhbCBmaWVsZC9yYW5nZSBmb3JtdWxhcyB0 cnkgdG8gc2V0IHRoZSBzYW1lIGZpZWxkLgotICAgICAgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMg YmVnIGVuZCAnKG9yZy11bnRvdWNoYWJsZSB0KSkKLSAgICAgICh3aGlsZSAoc2V0cSBlcSAocG9w IGVxbG5hbWUpKQotCShzZXRxIG5hbWUgKGNhciBlcSkKLQkgICAgICBhIChhc3NvYyBuYW1lIG9y Zy10YWJsZS1uYW1lZC1maWVsZC1sb2NhdGlvbnMpKQotCShzZXRxIG5hbWUxIG5hbWUpCi0JKGlm IGEgKHNldHEgbmFtZTEgKGZvcm1hdCAiQCVkJCVkIiAob3JnLXRhYmxlLWxpbmUtdG8tZGxpbmUg KG50aCAxIGEpKQotCQkJCSAgKG50aCAyIGEpKSkpCi0JKHdoZW4gKG1lbWJlciBuYW1lMSBzZWVu LWZpZWxkcykKLQkgICh1c2VyLWVycm9yICJTZXZlcmFsIGZpZWxkL3JhbmdlIGZvcm11bGFzIHRy eSB0byBzZXQgJXMiIG5hbWUxKSkKLQkocHVzaCBuYW1lMSBzZWVuLWZpZWxkcykKLQotCShhbmQg KG5vdCBhKQotCSAgICAgKHN0cmluZy1tYXRjaCAiQFxcKFswLTldK1xcKVxcJFxcKFswLTldK1xc KSIgbmFtZSkKLQkgICAgIChzZXRxIGEgKGxpc3QgbmFtZQotCQkJICAgKGNvbmRpdGlvbi1jYXNl IG5pbAotCQkJICAgICAgIChhcmVmIG9yZy10YWJsZS1kbGluZXMKLQkJCQkgICAgIChzdHJpbmct dG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSBuYW1lKSkpCi0JCQkgICAgIChlcnJvciAodXNlci1l cnJvciAiSW52YWxpZCByb3cgbnVtYmVyIGluICVzIgotCQkJCQkgICBuYW1lKSkpCi0JCQkgICAo c3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIgbmFtZSkpKSkpCi0JKHdoZW4gKGFuZCBh IChvciBhbGwgKGVxdWFsIChudGggMSBhKSB0aGlzbGluZSkpKQotCSAgKG1lc3NhZ2UgIlJlLWFw cGx5aW5nIGZvcm11bGEgdG8gZmllbGQ6ICVzIiBuYW1lKQotCSAgKG9yZy1nb3RvLWxpbmUgKG50 aCAxIGEpKQotCSAgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAobnRoIDIgYSkpCi0JICAocHVzaCAo YXBwZW5kIGEgKGxpc3QgKGNkciBlcSkpKSBlcWxuYW1lMSkKLQkgIChvcmctdGFibGUtcHV0LWZp ZWxkLXByb3BlcnR5IDpvcmctdW50b3VjaGFibGUgdCkpKQotICAgICAgKHNldHEgZXFsbmFtZTEg KG5yZXZlcnNlIGVxbG5hbWUxKSkKLQotICAgICAgOzsgTm93IGV2YWx1YXRlIHRoZSBjb2x1bW4g Zm9ybXVsYXMsIGJ1dCBza2lwIGZpZWxkcyBjb3ZlcmVkIGJ5Ci0gICAgICA7OyBmaWVsZCBmb3Jt dWxhcwotICAgICAgKGdvdG8tY2hhciBiZWcpCi0gICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3 YXJkIGxpbmUtcmUgZW5kIHQpCi0JKHVubGVzcyAoc3RyaW5nLW1hdGNoICJeICpbX14hJC9dICok IiAob3JnLXRhYmxlLWdldC1maWVsZCAxKSkKLQkgIDs7IFVucHJvdGVjdGVkIGxpbmUsIHJlY2Fs Y3VsYXRlCi0JICAoYW5kIGFsbCAobWVzc2FnZSAiUmUtYXBwbHlpbmcgZm9ybXVsYXMgdG8gZnVs bCB0YWJsZS4uLihsaW5lICVkKSIKLQkJCSAgICAoc2V0cSBjbnQgKDErIGNudCkpKSkKLQkgIChz ZXRxIG9yZy1sYXN0LXJlY2FsYy1saW5lIChvcmctY3VycmVudC1saW5lKSkKLQkgIChzZXRxIGVx bCBlcWxudW0pCi0JICAod2hpbGUgKHNldHEgZW50cnkgKHBvcCBlcWwpKQotCSAgICAob3JnLWdv dG8tbGluZSBvcmctbGFzdC1yZWNhbGMtbGluZSkKLQkgICAgKG9yZy10YWJsZS1nb3RvLWNvbHVt biAoc3RyaW5nLXRvLW51bWJlciAoY2FyIGVudHJ5KSkgbmlsICdmb3JjZSkKLQkgICAgKHVubGVz cyAoZ2V0LXRleHQtcHJvcGVydHkgKHBvaW50KSA6b3JnLXVudG91Y2hhYmxlKQotCSAgICAgIChv cmctdGFibGUtZXZhbC1mb3JtdWxhIG5pbCAoY2RyIGVudHJ5KQotCQkJCSAgICAgICdub2FsaWdu ICdub2NzdCAnbm9zdG9yZSAnbm9hbmFseXNpcykpKSkpCi0KLSAgICAgIDs7IE5vdyBldmFsdWF0 ZSB0aGUgZmllbGQgZm9ybXVsYXMKLSAgICAgICh3aGlsZSAoc2V0cSBlcSAocG9wIGVxbG5hbWUx KSkKLQkobWVzc2FnZSAiUmUtYXBwbHlpbmcgZm9ybXVsYSB0byBmaWVsZDogJXMiIChjYXIgZXEp KQotCShvcmctZ290by1saW5lIChudGggMSBlcSkpCi0JKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAo bnRoIDIgZXEpKQotCShvcmctdGFibGUtZXZhbC1mb3JtdWxhIG5pbCAobnRoIDMgZXEpICdub2Fs aWduICdub2NzdAotCQkJCSdub3N0b3JlICdub2FuYWx5c2lzKSkKLQotICAgICAgKG9yZy1nb3Rv LWxpbmUgdGhpc2xpbmUpCi0gICAgICAob3JnLXRhYmxlLWdvdG8tY29sdW1uIHRoaXNjb2wpCi0g ICAgICAocmVtb3ZlLXRleHQtcHJvcGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSAnKG9y Zy11bnRvdWNoYWJsZSB0KSkKLSAgICAgIChvciBub2FsaWduIChhbmQgb3JnLXRhYmxlLW1heS1u ZWVkLXVwZGF0ZSAob3JnLXRhYmxlLWFsaWduKSkKLQkgIChhbmQgYWxsIChtZXNzYWdlICJSZS1h cHBseWluZyBmb3JtdWxhcyB0byAlZCBsaW5lcy4uLmRvbmUiIGNudCkpKQotCi0gICAgICA7OyBi YWNrIHRvIGluaXRpYWwgcG9zaXRpb24KLSAgICAgIChtZXNzYWdlICJSZS1hcHBseWluZyBmb3Jt dWxhcy4uLmRvbmUiKQotICAgICAgKG9yZy1nb3RvLWxpbmUgdGhpc2xpbmUpCi0gICAgICAob3Jn LXRhYmxlLWdvdG8tY29sdW1uIHRoaXNjb2wpCi0gICAgICAob3Igbm9hbGlnbiAoYW5kIG9yZy10 YWJsZS1tYXktbmVlZC11cGRhdGUgKG9yZy10YWJsZS1hbGlnbikpCi0JICAoYW5kIGFsbCAobWVz c2FnZSAiUmUtYXBwbHlpbmcgZm9ybXVsYXMuLi5kb25lIikpKSkpKQorICAgICAgKHdoZW4gZXFs aXN0CisJKHNldHEgZXFsaXN0CisJICAgICAgKG1hcGNhciAobGFtYmRhICh4KQorCQkJKGlmIChz dHJpbmctbWF0Y2ggIl5ALT9JKyIgKGNhciB4KSkKKwkJCSAgICAodXNlci1lcnJvciAiQ2FuJ3Qg YXNzaWduIHRvIGhsaW5lIHJlbGF0aXZlIHJlZmVyZW5jZSIpKQorCQkJKHdoZW4gKHN0cmluZy1t YXRjaCAiXFxgJFs8Pl0iIChjYXIgeCkpCisJCQkgIChzZXRxIGxoczEgKGNhciB4KSkKKwkJCSAg KHNldHEgeCAoY29ucyAoc3Vic3RyaW5nCisJCQkJCSAob3JnLXRhYmxlLWZvcm11bGEtaGFuZGxl LWZpcnN0L2xhc3QtcmMKKwkJCQkJICAoY2FyIHgpKSAxKQorCQkJCQkoY2RyIHgpKSkKKwkJCSAg KGlmIChhc3NvYyAoY2FyIHgpIGVxbGlzdDEpCisJCQkgICAgICAodXNlci1lcnJvciAiXCIlcz1c IiBmb3JtdWxhIHRyaWVzIHRvIG92ZXJ3cml0ZSBleGlzdGluZyBmb3JtdWxhIGZvciBjb2x1bW4g JXMiCisJCQkJCSAgbGhzMSAoY2FyIHgpKSkpCisJCQkoY29ucworCQkJIChvcmctdGFibGUtZm9y bXVsYS1oYW5kbGUtZmlyc3QvbGFzdC1yYyAoY2FyIHgpKQorCQkJIChvcmctdGFibGUtZm9ybXVs YS1zdWJzdGl0dXRlLW5hbWVzCisJCQkgIChvcmctdGFibGUtZm9ybXVsYS1oYW5kbGUtZmlyc3Qv bGFzdC1yYyAoY2RyIHgpKSkpKQorCQkgICAgICBlcWxpc3QpKQorCTs7IFNwbGl0IHRoZSBlcXVh dGlvbiBsaXN0CisJKHdoaWxlIChzZXRxIGVxIChwb3AgZXFsaXN0KSkKKwkgIChpZiAoPD0gKHN0 cmluZy10by1jaGFyIChjYXIgZXEpKSA/OSkKKwkgICAgICAocHVzaCBlcSBlcWxudW0pCisJICAg IChwdXNoIGVxIGVxbG5hbWUpKSkKKwkoc2V0cSBlcWxudW0gKG5yZXZlcnNlIGVxbG51bSkgZXFs bmFtZSAobnJldmVyc2UgZXFsbmFtZSkpCisJOzsgRXhwYW5kIHJhbmdlcyBpbiBsaHMgb2YgZm9y bXVsYXMKKwkoc2V0cSBlcWxuYW1lIChvcmctdGFibGUtZXhwYW5kLWxocy1yYW5nZXMgZXFsbmFt ZSkpCisKKwk7OyBHZXQgdGhlIGNvcnJlY3QgbGluZSByYW5nZSB0byBwcm9jZXNzCisJKGlmIGFs bAorCSAgICAocHJvZ24KKwkgICAgICAoc2V0cSBlbmQgKG1vdmUtbWFya2VyIChtYWtlLW1hcmtl cikgKDErIChvcmctdGFibGUtZW5kKSkpKQorCSAgICAgIChnb3RvLWNoYXIgKHNldHEgYmVnIChv cmctdGFibGUtYmVnaW4pKSkKKwkgICAgICAoaWYgKHJlLXNlYXJjaC1mb3J3YXJkIG9yZy10YWJs ZS1jYWxjdWxhdGUtbWFyay1yZWdleHAgZW5kIHQpCisJCSAgOzsgVGhpcyBpcyBhIHRhYmxlIHdp dGggbWFya2VkIGxpbmVzLCBjb21wdXRlIHNlbGVjdGVkIGxpbmVzCisJCSAgKHNldHEgbGluZS1y ZSBvcmctdGFibGUtcmVjYWxjdWxhdGUtcmVnZXhwKQorCQk7OyBNb3ZlIGZvcndhcmQgdG8gdGhl IGZpcnN0IG5vbi1oZWFkZXIgbGluZQorCQkoaWYgKGFuZCAocmUtc2VhcmNoLWZvcndhcmQgb3Jn LXRhYmxlLWRhdGFsaW5lLXJlZ2V4cCBlbmQgdCkKKwkJCSAocmUtc2VhcmNoLWZvcndhcmQgb3Jn LXRhYmxlLWhsaW5lLXJlZ2V4cCBlbmQgdCkKKwkJCSAocmUtc2VhcmNoLWZvcndhcmQgb3JnLXRh YmxlLWRhdGFsaW5lLXJlZ2V4cCBlbmQgdCkpCisJCSAgICAoc2V0cSBiZWcgKG1hdGNoLWJlZ2lu bmluZyAwKSkKKwkJICBuaWwpKSkgOzsganVzdCBsZWF2ZSBiZWcgd2hlcmUgaXQgaXMKKwkgIChz ZXRxIGJlZyAocG9pbnQtYXQtYm9sKQorCQllbmQgKG1vdmUtbWFya2VyIChtYWtlLW1hcmtlcikg KDErIChwb2ludC1hdC1lb2wpKSkpKQorCShnb3RvLWNoYXIgYmVnKQorCShhbmQgYWxsIChtZXNz YWdlICJSZS1hcHBseWluZyBmb3JtdWxhcyB0byBmdWxsIHRhYmxlLi4uIikpCisKKwk7OyBGaXJz dCBmaW5kIHRoZSBuYW1lZCBmaWVsZHMsIGFuZCBtYXJrIHRoZW0gdW50b3VjaGFibGUuCisJOzsg QWxzbyBjaGVjayBpZiBzZXZlcmFsIGZpZWxkL3JhbmdlIGZvcm11bGFzIHRyeSB0byBzZXQgdGhl IHNhbWUgZmllbGQuCisJKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgYmVnIGVuZCAnKG9yZy11bnRv dWNoYWJsZSB0KSkKKwkod2hpbGUgKHNldHEgZXEgKHBvcCBlcWxuYW1lKSkKKwkgIChzZXRxIG5h bWUgKGNhciBlcSkKKwkJYSAoYXNzb2MgbmFtZSBvcmctdGFibGUtbmFtZWQtZmllbGQtbG9jYXRp b25zKSkKKwkgIChzZXRxIG5hbWUxIG5hbWUpCisJICAoaWYgYSAoc2V0cSBuYW1lMSAoZm9ybWF0 ICJAJWQkJWQiIChvcmctdGFibGUtbGluZS10by1kbGluZSAobnRoIDEgYSkpCisJCQkJICAgIChu dGggMiBhKSkpKQorCSAgKHdoZW4gKG1lbWJlciBuYW1lMSBzZWVuLWZpZWxkcykKKwkgICAgKHVz ZXItZXJyb3IgIlNldmVyYWwgZmllbGQvcmFuZ2UgZm9ybXVsYXMgdHJ5IHRvIHNldCAlcyIgbmFt ZTEpKQorCSAgKHB1c2ggbmFtZTEgc2Vlbi1maWVsZHMpCisKKwkgIChhbmQgKG5vdCBhKQorCSAg ICAgICAoc3RyaW5nLW1hdGNoICJAXFwoWzAtOV0rXFwpXFwkXFwoWzAtOV0rXFwpIiBuYW1lKQor CSAgICAgICAoc2V0cSBhIChsaXN0IG5hbWUKKwkJCSAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAor CQkJCSAoYXJlZiBvcmctdGFibGUtZGxpbmVzCisJCQkJICAgICAgIChzdHJpbmctdG8tbnVtYmVy IChtYXRjaC1zdHJpbmcgMSBuYW1lKSkpCisJCQkgICAgICAgKGVycm9yICh1c2VyLWVycm9yICJJ bnZhbGlkIHJvdyBudW1iZXIgaW4gJXMiCisJCQkJCQkgIG5hbWUpKSkKKwkJCSAgICAgKHN0cmlu Zy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAyIG5hbWUpKSkpKQorCSAgKHdoZW4gKGFuZCBhIChv ciBhbGwgKGVxdWFsIChudGggMSBhKSB0aGlzbGluZSkpKQorCSAgICAobWVzc2FnZSAiUmUtYXBw bHlpbmcgZm9ybXVsYSB0byBmaWVsZDogJXMiIG5hbWUpCisJICAgIChvcmctZ290by1saW5lIChu dGggMSBhKSkKKwkgICAgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAobnRoIDIgYSkpCisJICAgIChw dXNoIChhcHBlbmQgYSAobGlzdCAoY2RyIGVxKSkpIGVxbG5hbWUxKQorCSAgICAob3JnLXRhYmxl LXB1dC1maWVsZC1wcm9wZXJ0eSA6b3JnLXVudG91Y2hhYmxlIHQpKSkKKwkoc2V0cSBlcWxuYW1l MSAobnJldmVyc2UgZXFsbmFtZTEpKQorCisJOzsgTm93IGV2YWx1YXRlIHRoZSBjb2x1bW4gZm9y bXVsYXMsIGJ1dCBza2lwIGZpZWxkcyBjb3ZlcmVkIGJ5CisJOzsgZmllbGQgZm9ybXVsYXMKKwko Z290by1jaGFyIGJlZykKKwkod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIGxpbmUtcmUgZW5kIHQp CisJICAodW5sZXNzIChzdHJpbmctbWF0Y2ggIl4gKltfXiEkL10gKiQiIChvcmctdGFibGUtZ2V0 LWZpZWxkIDEpKQorCSAgICA7OyBVbnByb3RlY3RlZCBsaW5lLCByZWNhbGN1bGF0ZQorCSAgICAo YW5kIGFsbCAobWVzc2FnZSAiUmUtYXBwbHlpbmcgZm9ybXVsYXMgdG8gZnVsbCB0YWJsZS4uLihs aW5lICVkKSIKKwkJCSAgICAgIChzZXRxIGNudCAoMSsgY250KSkpKQorCSAgICAoc2V0cSBvcmct bGFzdC1yZWNhbGMtbGluZSAob3JnLWN1cnJlbnQtbGluZSkpCisJICAgIChzZXRxIGVxbCBlcWxu dW0pCisJICAgICh3aGlsZSAoc2V0cSBlbnRyeSAocG9wIGVxbCkpCisJICAgICAgKG9yZy1nb3Rv LWxpbmUgb3JnLWxhc3QtcmVjYWxjLWxpbmUpCisJICAgICAgKG9yZy10YWJsZS1nb3RvLWNvbHVt biAoc3RyaW5nLXRvLW51bWJlciAoY2FyIGVudHJ5KSkgbmlsICdmb3JjZSkKKwkgICAgICAodW5s ZXNzIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpIDpvcmctdW50b3VjaGFibGUpCisJCShvcmct dGFibGUtZXZhbC1mb3JtdWxhIG5pbCAoY2RyIGVudHJ5KQorCQkJCQknbm9hbGlnbiAnbm9jc3Qg J25vc3RvcmUgJ25vYW5hbHlzaXMpKSkpKQorCisJOzsgTm93IGV2YWx1YXRlIHRoZSBmaWVsZCBm b3JtdWxhcworCSh3aGlsZSAoc2V0cSBlcSAocG9wIGVxbG5hbWUxKSkKKwkgIChtZXNzYWdlICJS ZS1hcHBseWluZyBmb3JtdWxhIHRvIGZpZWxkOiAlcyIgKGNhciBlcSkpCisJICAob3JnLWdvdG8t bGluZSAobnRoIDEgZXEpKQorCSAgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAobnRoIDIgZXEpKQor CSAgKG9yZy10YWJsZS1ldmFsLWZvcm11bGEgbmlsIChudGggMyBlcSkgJ25vYWxpZ24gJ25vY3N0 CisJCQkJICAnbm9zdG9yZSAnbm9hbmFseXNpcykpCisKKwkob3JnLWdvdG8tbGluZSB0aGlzbGlu ZSkKKwkob3JnLXRhYmxlLWdvdG8tY29sdW1uIHRoaXNjb2wpCisJKHJlbW92ZS10ZXh0LXByb3Bl cnRpZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkgJyhvcmctdW50b3VjaGFibGUgdCkpCisJKG9y IG5vYWxpZ24gKGFuZCBvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRlIChvcmctdGFibGUtYWxpZ24p KQorCSAgICAoYW5kIGFsbCAobWVzc2FnZSAiUmUtYXBwbHlpbmcgZm9ybXVsYXMgdG8gJWQgbGlu ZXMuLi5kb25lIiBjbnQpKSkKKworCTs7IGJhY2sgdG8gaW5pdGlhbCBwb3NpdGlvbgorCShtZXNz YWdlICJSZS1hcHBseWluZyBmb3JtdWxhcy4uLmRvbmUiKQorCShvcmctZ290by1saW5lIHRoaXNs aW5lKQorCShvcmctdGFibGUtZ290by1jb2x1bW4gdGhpc2NvbCkKKwkob3Igbm9hbGlnbiAoYW5k IG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgKG9yZy10YWJsZS1hbGlnbikpCisJICAgIChhbmQg YWxsIChtZXNzYWdlICJSZS1hcHBseWluZyBmb3JtdWxhcy4uLmRvbmUiKSkpKSkpKQogCiA7Ozsj IyNhdXRvbG9hZAogKGRlZnVuIG9yZy10YWJsZS1pdGVyYXRlICgmb3B0aW9uYWwgYXJnKQo= --089e0115e8600c487f0505ab8215 Content-Type: application/octet-stream; name="org-table-speedup-2.patch" Content-Disposition: attachment; filename="org-table-speedup-2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i1eibt2f1 ZGlmZiAtLWdpdCBhL2xpc3Avb3JnLXRhYmxlLmVsIGIvbGlzcC9vcmctdGFibGUuZWwKaW5kZXgg MDMzNTI4MC4uYzMwZjgwYyAxMDA2NDQKLS0tIGEvbGlzcC9vcmctdGFibGUuZWwKKysrIGIvbGlz cC9vcmctdGFibGUuZWwKQEAgLTMwNDcsNiArMzA0NywxNSBAQCBsaXN0LCAnbGl0ZXJhbCBpcyBm b3IgdGhlIGZvcm1hdCBzcGVjaWZpZXIgTC4iCiAJCShwdXNoIChjb25zIChtYXRjaC1zdHJpbmcg MSBlKSAobWF0Y2gtc3RyaW5nIDIgZSkpIGNzdCkpKQogCSAgICAoc2V0cSBvcmctdGFibGUtZm9y bXVsYS1jb25zdGFudHMtbG9jYWwgY3N0KSkpKSkpKQogCisoZGVmbWFjcm8gb3JnLXRhYmxlLWV4 ZWN1dGUtb25jZS1wZXItc2Vjb25kICh0MSAmcmVzdCBib2R5KQorICAiSWYgdGhlcmUgaGFzIGJl ZW4gbW9yZSB0aGFuIG9uZSBzZWNvbmQgc2luY2UgVDEsIGV4ZWN1dGUgQk9EWS4KK1VwZGF0ZXMg VDEgdG8gJ2N1cnJlbnQtdGltZScgaWYgdGhpcyBjb25kaXRpb24gaXMgbWV0LiIKKyAgYChsZXQg KChjdXJ0aW1lIChjdXJyZW50LXRpbWUpKSkKKyAgICAgKHdoZW4gKDwgMCAobnRoIDEgKHRpbWUt c3VidHJhY3QgY3VydGltZSAsdDEpKSkKKyAgICAgICAoc2V0cSAsdDEgY3VydGltZSkKKyAgICAg ICAsQGJvZHkKKyAgICAgICApKSkKKwogOzs7IyMjYXV0b2xvYWQKIChkZWZ1biBvcmctdGFibGUt cmVjYWxjdWxhdGUgKCZvcHRpb25hbCBhbGwgbm9hbGlnbikKICAgIlJlY2FsY3VsYXRlIHRoZSBj dXJyZW50IHRhYmxlIGxpbmUgYnkgYXBwbHlpbmcgYWxsIHN0b3JlZCBmb3JtdWxhcy4KQEAgLTMw NzEsNiArMzA4MCw4IEBAIGtub3duIHRoYXQgdGhlIHRhYmxlIHdpbGwgYmUgcmVhbGlnbmVkIGEg bGl0dGxlIGxhdGVyIGFueXdheS4iCiAJICAgKGxpbmUtcmUgb3JnLXRhYmxlLWRhdGFsaW5lLXJl Z2V4cCkKIAkgICAodGhpc2xpbmUgKG9yZy1jdXJyZW50LWxpbmUpKQogCSAgICh0aGlzY29sIChv cmctdGFibGUtY3VycmVudC1jb2x1bW4pKQorCSAgIChsb2ctZmlyc3QtdGltZSAoY3VycmVudC10 aW1lKSkKKwkgICAobG9nLWxhc3QtdGltZSBsb2ctZmlyc3QtdGltZSkKIAkgICBzZWVuLWZpZWxk cyBsaHMxCiAJICAgYmVnIGVuZCBlbnRyeSBlcWxudW0gZXFsbmFtZSBlcWxuYW1lMSBlcWwgKGNu dCAwKSBlcSBhIG5hbWUgbmFtZTEpCiAgICAgICA7OyBJbnNlcnQgY29uc3RhbnRzIGluIGFsbCBm b3JtdWxhcwpAQCAtMzExOSw3ICszMTMwLDYgQEAga25vd24gdGhhdCB0aGUgdGFibGUgd2lsbCBi ZSByZWFsaWduZWQgYSBsaXR0bGUgbGF0ZXIgYW55d2F5LiIKIAkgIChzZXRxIGJlZyAocG9pbnQt YXQtYm9sKQogCQllbmQgKG1vdmUtbWFya2VyIChtYWtlLW1hcmtlcikgKDErIChwb2ludC1hdC1l b2wpKSkpKQogCShnb3RvLWNoYXIgYmVnKQotCShhbmQgYWxsIChtZXNzYWdlICJSZS1hcHBseWlu ZyBmb3JtdWxhcyB0byBmdWxsIHRhYmxlLi4uIikpCiAKIAk7OyBGaXJzdCBmaW5kIHRoZSBuYW1l ZCBmaWVsZHMsIGFuZCBtYXJrIHRoZW0gdW50b3VjaGFibGUuCiAJOzsgQWxzbyBjaGVjayBpZiBz ZXZlcmFsIGZpZWxkL3JhbmdlIGZvcm11bGFzIHRyeSB0byBzZXQgdGhlIHNhbWUgZmllbGQuCkBA IC0zMTQ0LDcgKzMxNTQsNyBAQCBrbm93biB0aGF0IHRoZSB0YWJsZSB3aWxsIGJlIHJlYWxpZ25l ZCBhIGxpdHRsZSBsYXRlciBhbnl3YXkuIgogCQkJCQkJICBuYW1lKSkpCiAJCQkgICAgIChzdHJp bmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMiBuYW1lKSkpKSkKIAkgICh3aGVuIChhbmQgYSAo b3IgYWxsIChlcXVhbCAobnRoIDEgYSkgdGhpc2xpbmUpKSkKLQkgICAgKG1lc3NhZ2UgIlJlLWFw cGx5aW5nIGZvcm11bGEgdG8gZmllbGQ6ICVzIiBuYW1lKQorCSAgICAob3JnLXRhYmxlLWV4ZWN1 dGUtb25jZS1wZXItc2Vjb25kIGxvZy1sYXN0LXRpbWUgKG1lc3NhZ2UgIlJlLWFwcGx5aW5nIGZv cm11bGEgdG8gZmllbGQ6ICVzIiBuYW1lKSkKIAkgICAgKG9yZy1nb3RvLWxpbmUgKG50aCAxIGEp KQogCSAgICAob3JnLXRhYmxlLWdvdG8tY29sdW1uIChudGggMiBhKSkKIAkgICAgKHB1c2ggKGFw cGVuZCBhIChsaXN0IChjZHIgZXEpKSkgZXFsbmFtZTEpCkBAIC0zMTU3LDggKzMxNjcsOCBAQCBr bm93biB0aGF0IHRoZSB0YWJsZSB3aWxsIGJlIHJlYWxpZ25lZCBhIGxpdHRsZSBsYXRlciBhbnl3 YXkuIgogCSh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgbGluZS1yZSBlbmQgdCkKIAkgICh1bmxl c3MgKHN0cmluZy1tYXRjaCAiXiAqW19eISQvXSAqJCIgKG9yZy10YWJsZS1nZXQtZmllbGQgMSkp CiAJICAgIDs7IFVucHJvdGVjdGVkIGxpbmUsIHJlY2FsY3VsYXRlCi0JICAgIChhbmQgYWxsICht ZXNzYWdlICJSZS1hcHBseWluZyBmb3JtdWxhcyB0byBmdWxsIHRhYmxlLi4uKGxpbmUgJWQpIgot CQkJICAgICAgKHNldHEgY250ICgxKyBjbnQpKSkpCisJICAgIChhbmQgYWxsIChvcmctdGFibGUt ZXhlY3V0ZS1vbmNlLXBlci1zZWNvbmQgbG9nLWxhc3QtdGltZSAobWVzc2FnZSAiUmUtYXBwbHlp bmcgZm9ybXVsYXMgdG8gZnVsbCB0YWJsZS4uLihsaW5lICVkKSIKKwkJCQkJCQkJCSAoc2V0cSBj bnQgKDErIGNudCkpKSkpCiAJICAgIChzZXRxIG9yZy1sYXN0LXJlY2FsYy1saW5lIChvcmctY3Vy cmVudC1saW5lKSkKIAkgICAgKHNldHEgZXFsIGVxbG51bSkKIAkgICAgKHdoaWxlIChzZXRxIGVu dHJ5IChwb3AgZXFsKSkKQEAgLTMxNzAsNyArMzE4MCw5IEBAIGtub3duIHRoYXQgdGhlIHRhYmxl IHdpbGwgYmUgcmVhbGlnbmVkIGEgbGl0dGxlIGxhdGVyIGFueXdheS4iCiAKIAk7OyBOb3cgZXZh bHVhdGUgdGhlIGZpZWxkIGZvcm11bGFzCiAJKHdoaWxlIChzZXRxIGVxIChwb3AgZXFsbmFtZTEp KQotCSAgKG1lc3NhZ2UgIlJlLWFwcGx5aW5nIGZvcm11bGEgdG8gZmllbGQ6ICVzIiAoY2FyIGVx KSkKKwkgIChpZiAobm90IGFsbCkgKG1lc3NhZ2UgIlJlLWFwcGx5aW5nIGZvcm11bGEgdG8gZmll bGQ6ICVzIiAoY2FyIGVxKSkKKwkgICAgKG9yZy10YWJsZS1leGVjdXRlLW9uY2UtcGVyLXNlY29u ZCBsb2ctbGFzdC10aW1lIChtZXNzYWdlICJSZS1hcHBseWluZyBmb3JtdWxhIHRvIGZpZWxkOiAl cyIgKGNhciBlcSkpKSkKKwogCSAgKG9yZy1nb3RvLWxpbmUgKG50aCAxIGVxKSkKIAkgIChvcmct dGFibGUtZ290by1jb2x1bW4gKG50aCAyIGVxKSkKIAkgIChvcmctdGFibGUtZXZhbC1mb3JtdWxh IG5pbCAobnRoIDMgZXEpICdub2FsaWduICdub2NzdApAQCAtMzE4MCwxNCArMzE5MiwxNCBAQCBr bm93biB0aGF0IHRoZSB0YWJsZSB3aWxsIGJlIHJlYWxpZ25lZCBhIGxpdHRsZSBsYXRlciBhbnl3 YXkuIgogCShvcmctdGFibGUtZ290by1jb2x1bW4gdGhpc2NvbCkKIAkocmVtb3ZlLXRleHQtcHJv cGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSAnKG9yZy11bnRvdWNoYWJsZSB0KSkKIAko b3Igbm9hbGlnbiAoYW5kIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgKG9yZy10YWJsZS1hbGln bikpCi0JICAgIChhbmQgYWxsIChtZXNzYWdlICJSZS1hcHBseWluZyBmb3JtdWxhcyB0byAlZCBs aW5lcy4uLmRvbmUiIGNudCkpKQorCSAgICAoYW5kIGFsbCAob3JnLXRhYmxlLWV4ZWN1dGUtb25j ZS1wZXItc2Vjb25kIGxvZy1sYXN0LXRpbWUgKG1lc3NhZ2UgIlJlLWFwcGx5aW5nIGZvcm11bGFz IHRvICVkIGxpbmVzLi4uZG9uZSIgY250KSkpKQogCiAJOzsgYmFjayB0byBpbml0aWFsIHBvc2l0 aW9uCi0JKG1lc3NhZ2UgIlJlLWFwcGx5aW5nIGZvcm11bGFzLi4uZG9uZSIpCisJKG9yZy10YWJs ZS1leGVjdXRlLW9uY2UtcGVyLXNlY29uZCBsb2ctZmlyc3QtdGltZSAobWVzc2FnZSAiUmUtYXBw bHlpbmcgZm9ybXVsYXMuLi5kb25lIikpCiAJKG9yZy1nb3RvLWxpbmUgdGhpc2xpbmUpCiAJKG9y Zy10YWJsZS1nb3RvLWNvbHVtbiB0aGlzY29sKQogCShvciBub2FsaWduIChhbmQgb3JnLXRhYmxl LW1heS1uZWVkLXVwZGF0ZSAob3JnLXRhYmxlLWFsaWduKSkKLQkgICAgKGFuZCBhbGwgKG1lc3Nh Z2UgIlJlLWFwcGx5aW5nIGZvcm11bGFzLi4uZG9uZSIpKSkpKSkpCisJICAgIChhbmQgYWxsIChv cmctdGFibGUtZXhlY3V0ZS1vbmNlLXBlci1zZWNvbmQgbG9nLWZpcnN0LXRpbWUgKG1lc3NhZ2Ug IlJlLWFwcGx5aW5nIGZvcm11bGFzLi4uZG9uZSIpKSkpKSkpKQogCiA7OzsjIyNhdXRvbG9hZAog KGRlZnVuIG9yZy10YWJsZS1pdGVyYXRlICgmb3B0aW9uYWwgYXJnKQo= --089e0115e8600c487f0505ab8215--