<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>176974</bug_id>
          
          <creation_ts>2008-12-05 14:23:19 +0000</creation_ts>
          <short_desc>High memory consumption when using Konsole for a longer time.</short_desc>
          <delta_ts>2012-08-29 07:05:48 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>konsole</product>
          <component>general</component>
          <version>2.1</version>
          <rep_platform>Ubuntu</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Flinkmann">dflinkmann</reporter>
          <assigned_to name="Konsole Bugs">konsole-bugs-null</assigned_to>
          <cc>aog2000a</cc>
    
    <cc>aros</cc>
    
    <cc>bartoschek</cc>
    
    <cc>faure</cc>
    
    <cc>jnelson-kde</cc>
    
    <cc>mick22</cc>
    
    <cc>robertknight</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>675847</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Flinkmann">dflinkmann</who>
    <bug_when>2008-12-05 14:23:19 +0000</bug_when>
    <thetext>Version:           2.1 (using KDE 4.1.3)
OS:                Linux
Installed from:    Ubuntu Packages

When using the Konsole with several tabs (in general 10 or more), the memory consumption is raising to a quite high volume (between 1 to 2 GByte). This cause the whole system to have random slow downs due to memory swapping. 

I already checked some other similar bug reports which are already closed and got the hint that I should switch all scrollback buffers to unlimited (and Reset the scrollback buffer in each tab), so that the the scrollback buffer is in a file instead of being hold in the RAM. This doesn&apos;t have any effect on my Konsole application. 

I generally have a running Konsole with uptimes around 2-4 month and I often have at least 10 (often even more) tabs open. 


The konsole binary in this example is running 4 days with 10 tabs. 

# ps -eo rss,args | grep konsole
1047032 /usr/bin/konsole

Snapshot of top: 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
27255 daniel    20   0 2181m 1.0g  15m R    8 50.4  34:04.47 konsole

# file /usr/bin/konsole
/usr/bin/konsole: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped

# ldd /usr/bin/konsole
        linux-gate.so.1 =&gt;  (0xb7f7b000)
        libkdeinit4_konsole.so =&gt; /usr/lib/libkdeinit4_konsole.so (0xb7e6d000)
        libc.so.6 =&gt; /lib/tls/i686/cmov/libc.so.6 (0xb7d0f000)
        libkpty.so.4 =&gt; /usr/lib/libkpty.so.4 (0xb7d04000)
        libkio.so.5 =&gt; /usr/lib/libkio.so.5 (0xb7a87000)
        libkdeui.so.5 =&gt; /usr/lib/libkdeui.so.5 (0xb771b000)
        libkdecore.so.5 =&gt; /usr/lib/libkdecore.so.5 (0xb7502000)
        libQtCore.so.4 =&gt; /usr/lib/libQtCore.so.4 (0xb72d4000)
        libQtDBus.so.4 =&gt; /usr/lib/libQtDBus.so.4 (0xb7266000)
        libknotifyconfig.so.4 =&gt; /usr/lib/libknotifyconfig.so.4 (0xb7254000)
        libX11.so.6 =&gt; /usr/lib/libX11.so.6 (0xb7165000)
        libXrender.so.1 =&gt; /usr/lib/libXrender.so.1 (0xb715b000)
        libQtGui.so.4 =&gt; /usr/lib/libQtGui.so.4 (0xb6858000)
        libstdc++.so.6 =&gt; /usr/lib/libstdc++.so.6 (0xb6769000)
        /lib/ld-linux.so.2 (0xb7f61000)
        libutil.so.1 =&gt; /lib/tls/i686/cmov/libutil.so.1 (0xb6764000)
        libz.so.1 =&gt; /usr/lib/libz.so.1 (0xb674e000)
        libstreamanalyzer.so.0 =&gt; /usr/lib/libstreamanalyzer.so.0 (0xb66e0000)
        libsolid.so.4 =&gt; /usr/lib/libsolid.so.4 (0xb6670000)
        libQtNetwork.so.4 =&gt; /usr/lib/libQtNetwork.so.4 (0xb656f000)
        libQtXml.so.4 =&gt; /usr/lib/libQtXml.so.4 (0xb652a000)
        libacl.so.1 =&gt; /lib/libacl.so.1 (0xb6522000)
        libattr.so.1 =&gt; /lib/libattr.so.1 (0xb651d000)
        libQtSvg.so.4 =&gt; /usr/lib/libQtSvg.so.4 (0xb64d0000)
        libm.so.6 =&gt; /lib/tls/i686/cmov/libm.so.6 (0xb64aa000)
        libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0xb649b000)
        libSM.so.6 =&gt; /usr/lib/libSM.so.6 (0xb6491000)
        libICE.so.6 =&gt; /usr/lib/libICE.so.6 (0xb6479000)
        libXtst.so.6 =&gt; /usr/lib/libXtst.so.6 (0xb6474000)
        libXcursor.so.1 =&gt; /usr/lib/libXcursor.so.1 (0xb646b000)
        libXfixes.so.3 =&gt; /usr/lib/libXfixes.so.3 (0xb6466000)
        libbz2.so.1.0 =&gt; /lib/libbz2.so.1.0 (0xb6454000)
        libgthread-2.0.so.0 =&gt; /usr/lib/libgthread-2.0.so.0 (0xb644e000)
        librt.so.1 =&gt; /lib/tls/i686/cmov/librt.so.1 (0xb6445000)
        libglib-2.0.so.0 =&gt; /usr/lib/libglib-2.0.so.0 (0xb638e000)
        libpthread.so.0 =&gt; /lib/tls/i686/cmov/libpthread.so.0 (0xb6375000)
        libdl.so.2 =&gt; /lib/tls/i686/cmov/libdl.so.2 (0xb6370000)
        libphonon.so.4 =&gt; /usr/lib/libphonon.so.4 (0xb632d000)
        libxcb-xlib.so.0 =&gt; /usr/lib/libxcb-xlib.so.0 (0xb632a000)
        libxcb.so.1 =&gt; /usr/lib/libxcb.so.1 (0xb6311000)
        libaudio.so.2 =&gt; /usr/lib/libaudio.so.2 (0xb62f9000)
        libpng12.so.0 =&gt; /usr/lib/libpng12.so.0 (0xb62d2000)
        libXi.so.6 =&gt; /usr/lib/libXi.so.6 (0xb62c8000)
        libXrandr.so.2 =&gt; /usr/lib/libXrandr.so.2 (0xb62c1000)
        libfreetype.so.6 =&gt; /usr/lib/libfreetype.so.6 (0xb624b000)
        libfontconfig.so.1 =&gt; /usr/lib/libfontconfig.so.1 (0xb621e000)
        libXext.so.6 =&gt; /usr/lib/libXext.so.6 (0xb620f000)
        libstreams.so.0 =&gt; /usr/lib/libstreams.so.0 (0xb61dc000)
        libxml2.so.2 =&gt; /usr/lib/libxml2.so.2 (0xb60a0000)
        libpcre.so.3 =&gt; /lib/libpcre.so.3 (0xb6076000)
        libXau.so.6 =&gt; /usr/lib/libXau.so.6 (0xb6073000)
        libXdmcp.so.6 =&gt; /usr/lib/libXdmcp.so.6 (0xb606d000)
        libXt.so.6 =&gt; /usr/lib/libXt.so.6 (0xb601c000)
        libexpat.so.1 =&gt; /usr/lib/libexpat.so.1 (0xb5ff5000)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710339</commentid>
    <comment_count>1</comment_count>
    <who name="Russ Brown">pickscrape</who>
    <bug_when>2009-02-03 00:48:44 +0000</bug_when>
    <thetext>*** This bug has been confirmed by popular vote. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735804</commentid>
    <comment_count>2</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-03-27 22:51:26 +0000</bug_when>
    <thetext>I can confirm this bug. Even if I do &quot;Clear Scrollback&quot; in all my ten open sessions, Konsole RSS size is still above 160MB which is absolutely insane, because a newly started Konsole with 10 bash sessions consume just 21MB of RAM (RSS value).

Probably there&apos;s a leak in a font rendering code however it&apos;s just a wild speculation.

I&apos;m running KDE 4.2.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735805</commentid>
    <comment_count>3</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-03-27 22:52:58 +0000</bug_when>
    <thetext>This bug status should be raised to Critical.

Memory leaks sometimes lead to successful exploits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735938</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-03-28 13:09:09 +0000</bug_when>
    <thetext>&gt; This bug status should be raised to Critical.
&gt; Memory leaks sometimes lead to successful exploits

That won&apos;t do - I&apos;d need actual evidence of a vulerability such as a working exploit first.

An application using leaking memory is enough of a nuisance in its own right - playing the security card won&apos;t get it fixed any faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766742</commentid>
    <comment_count>5</comment_count>
    <who name="Jon Nelson">jnelson-kde</who>
    <bug_when>2009-05-29 14:42:47 +0000</bug_when>
    <thetext>I&apos;d like to chime in here as well - this is a problem for me when openSUSE 11.1, and KDE 4.2.3.

currently, konsole (up for less than 24 hours) is consuming 86MB, more than 4x greater than the next highest consumer (excluding firefox).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771072</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-06 19:36:59 +0000</bug_when>
    <thetext>Please fix this bug. With 10 tabs open an a scrollback of 30.000, Konsole can consume up to 800 MB (RSS). This is insane.

It&apos;s unbelievable that this bug has been reported 6 months ago, been vote for by quite some people, and has not even been acknowledged by the developers.

10 tabs with 30.000 lines of scrollback, each line filled with say 100 characters, should need no more than say 10*30.000*100*2*1.5 = 85MB (if you allow for 16-bit characters and 50% data structure overhead). And this is already rather generous.

Currently, using a large scrollback will lead to extended swapping periods or can activate the OOM who will kill one of your processes (-&gt; data loss).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771081</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-06 19:44:57 +0000</bug_when>
    <thetext>Bug severity should be changed to &quot;Critical&quot;. The definition of &quot;Critical&quot; is as follows: crashes, loss of data, severe memory leak

I am not sure if this is a memory leak or just highly inefficient data structures, but as already said, once the OOM killer kicks in and kills a process, loss of data is likely. My Eclipse IDE gets killed regularky due to the high RAM usage of Konsole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771091</commentid>
    <comment_count>8</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-06 20:00:03 +0000</bug_when>
    <thetext>This bug is already in a confirmed state (NEW) ;)

And since developers of Konsole are unwilling to fix it, probably someone has to debug/valgring this bug on its own:

http://www.cprogramming.com/debugging/valgrind.html
http://www.faqs.org/docs/Linux-HOWTO/Valgrind-HOWTO.html

I dared not do that since running an application under valgrind slows down it probably tenfold so working with such a slow Konsole isn&apos;t what I could bare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771105</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-06 20:20:12 +0000</bug_when>
    <thetext>&gt; Please fix this bug. With 10 tabs open an a scrollback of 30.000,
&gt; Konsole can consume up to 800 MB (RSS). This is insane

The memory figure that is more useful is private writable memory.  Alternatively the &apos;memory&apos; figures quoted by ksysguard or gnome&apos;s system monitor are sensible.

&gt; 10 tabs with 30.000 lines of scrollback, each line filled with say 100
&gt; characters, should need no more than say 10*30.000*100*2*1.5 = 85MB (if you
&gt; allow for 16-bit characters and 50% data structure overhead)

Konsole currently uses 11 bytes per character.  2 bytes for the character, 1 for formatting/other flags and 4 for foreground color and 4 for background color.  Plus there is a certain amount of per-line overhead - I&apos;d guess about ~30 bytes.  Based on 30K lines of scrollback in 10 tabs with 100 characters per line that gives 324MB of expected memory usage.  If significantly more than that is being used there is probably a leak somewhere which requires investigation.

Leaks aside, this could be improved a lot, obviously, but I cannot promise when - if you want it sorted soon then get coding.

&gt; Bug severity should be changed to &quot;Critical&quot;.
&gt; The definition of &quot;Critical&quot; is as follows:
&gt; crashes, loss of data, severe memory leak

The severity of a bug is mostly determined by the number of times it gets reported, reflecting the number of people it affects.  I&apos;d imagine most people use the default setting of 1K lines scrollback or unlimited - in which case it does not affect them.

&gt; Currently, using a large scrollback will lead to extended swapping periods
&gt; or can activate the OOM who will kill one of your processes (-&gt; data loss).

Even when the memory usage is reduced, if you have 30K lines of output that you care about then there is still the problem that Konsole doesn&apos;t keep the output backed up on disk anywhere.  If you close a tab or exit the shell accidentally you will currently lose everything.  It would undoubtedly be useful if the terminal kept a log of its output somewhere persistent but in the meantime if you should be logging to a file or something less fragile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771106</commentid>
    <comment_count>10</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-06 20:22:23 +0000</bug_when>
    <thetext>&gt; And since developers of Konsole are unwilling to fix it,
&gt; probably someone has to debug/valgring this bug on its own:

Not so much unwilling as otherwise occupied.  You don&apos;t have to have a special badge and an initiation ceremony to contribute though.  Anyone is welcome to submit patches at reviewboard.kde.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771121</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-06 21:31:39 +0000</bug_when>
    <thetext>I can see that at least in the source the problem is acknowledged and marked as critical: http://websvn.kde.org/trunk/KDE/kdebase/apps/konsole/src/History.cpp?revision=863326&amp;view=markup

But as it seems there are at least 2 issues to be solved here:
(1) memory consumption does not decrease after clearing the history, closing the tab or changing the history type (memory leak!!!)

2. redundant way of storing the color per character; however that would be ok if there was a way to free up that memory again
 
Is it possible that (1) is just a simple bug caused by a missing destructor, missing delete or similar? If yes, fixing that would at least be a good short-term solution.

Improving (2) is obviously more complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771312</commentid>
    <comment_count>12</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-07 11:56:43 +0000</bug_when>
    <thetext>&gt; I can see that at least in the source the problem is acknowledged
&gt; and marked as critical

Those comments were written back in the KDE 3 days and I believe do not refer to a leak but just that if you set the number of scrollback lines to a very large number, open many tabs and fill all those buffers then a lot of memory will be used - see my calculations above.

&gt; Is it possible that (1) is just a simple bug caused by a 
&gt; missing destructor, missing delete or similar? 

I need to confirm that there is actually a leak first - not just a lot of memory being used as a result of many tabs and a large scrollback buffer in each.  I valgrinded a simple Konsole session with 1K scrollback opening tabs, filling the scrollback buffer and then closing the tab but did not see any relevant problems in the leak report.

It would be helpful if you could try as well using:

valgrind --leak-check=full --show-reachable=yes konsole --nofork</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771577</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-07 19:13:15 +0000</bug_when>
    <thetext>My valgrind run did not show any major leaks. But I am working on some improvements to reduce mem usage. If I come up with something useful, I&apos;ll send you the patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771746</commentid>
    <comment_count>14</comment_count>
      <attachid>34358</attachid>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 02:56:14 +0000</bug_when>
    <thetext>Created attachment 34358
Patch for konsole 4.2.4, reduces RAM usage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771747</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 02:57:48 +0000</bug_when>
    <thetext>Here&apos;s a patch that drastically reduces mem usage when a fixed size history is used. History lines are stored as an array of chars when possible (i.e. when color and rendition flag of all characters in the line are equal). When not (easily) possible, it falls back to the current way of storing history lines.

Memory usage has been cut down from about 171MB to 55MB for a konsole process with 5 tabs, 30000 lines scrollback, 65 chars per line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771813</commentid>
    <comment_count>16</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 09:17:04 +0000</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; I can see that at least in the source the problem is acknowledged
&gt; &gt; and marked as critical
&gt; 
&gt; Those comments were written back in the KDE 3 days and I believe do not refer
&gt; to a leak but just that if you set the number of scrollback lines to a very
&gt; large number, open many tabs and fill all those buffers then a lot of memory
&gt; will be used - see my calculations above.
&gt; 
&gt; &gt; Is it possible that (1) is just a simple bug caused by a 
&gt; &gt; missing destructor, missing delete or similar? 
&gt; 
&gt; I need to confirm that there is actually a leak first - not just a lot of
&gt; memory being used as a result of many tabs and a large scrollback buffer in
&gt; each.  I valgrinded a simple Konsole session with 1K scrollback opening tabs,
&gt; filling the scrollback buffer and then closing the tab but did not see any
&gt; relevant problems in the leak report.
&gt; 
&gt; It would be helpful if you could try as well using:
&gt; 
&gt; valgrind --leak-check=full --show-reachable=yes konsole --nofork

Robert, definitely there&apos;s a memory leak, since I&apos;ve already indicated that after closing all bash sessions in Konsole doesn&apos;t reduce Konsole&apos;s memory usage.

As a simple experiment, open an empty Konsole, set history Konsole&apos;s history scollback value to 30 thousands lines, observe its RSS value (15M in my case).

Then open 10 bash sessions, cat 50K lines file in each of them, then open a new bash session and close 10 &apos;old&apos; bash sessions. Something tells me that RSS value of Konsole process should be restored.

In my case I see 664MB of memory STILL occupied by Konsole. That&apos;s insane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771815</commentid>
    <comment_count>17</comment_count>
      <attachid>34360</attachid>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 09:19:15 +0000</bug_when>
    <thetext>Created attachment 34360
Proof screenshot.

$ ps fax

--- cut ---
21181 ?        Sl     0:11 /usr/bin/konsole
21496 pts/12   Ss     0:00  \_ /bin/bash
22275 pts/12   R+     0:00      \_ ps fax
--- cut ---

Konsole runs only a freshly started bash session (after closing 10 others).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771829</commentid>
    <comment_count>18</comment_count>
      <attachid>34361</attachid>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 09:52:08 +0000</bug_when>
    <thetext>Created attachment 34361
ms_print for Konsole 

valgrind --tool=massif konsole --nofork

ms_print massif.out

Probably someone can spot something wrong here (or probably I have to rebuild Konsole with debug symbols).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771851</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 10:50:10 +0000</bug_when>
    <thetext>Review request for above patch created: http://reviewboard.kde.org/r/802/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771856</commentid>
    <comment_count>20</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-08 11:12:11 +0000</bug_when>
    <thetext>Hi Michael,

Thanks for the patch.  Approach looks sensible.  Rather than having two separate types of line an alternative would be to have a formatting array for each line which specifies the start position and index into the character array for each change of format.  Something also worth noting is that QVector/QList objects have a high overhead per-instance (somewhere between 20-30 bytes IIRC) plus the memory allocator&apos;s own overhead - might be worth looking at QVarLengthArray instead.

reviewboard is being funny at the moment - I&apos;ll post comments later on.

Unfortunately KDE 4.3 is now in deep-freeze (small fixes only) but I should be able to get this in for 4.3.1.  More urgent though is tracking down actual memory leaks - as opposed to inefficiency.  It might be possible to push fixes for that into 4.3.0, I&apos;d have to check with the release team.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771892</commentid>
    <comment_count>21</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 12:08:44 +0000</bug_when>
    <thetext>I agree that the legacy format should be improved as well. If a user has only multi-color lines in the history, he&apos;ll get no improvement. The idea in the current solution is to keep the most frequent use case (single-color lines) as memory-efficient as possible. 

Once we completely get rid of the old-style storage format, e.g. by implementing a formatting array for multi-color lines as you suggested, the overhead of QVector/QList should be negligible as it is only per tab and not per history line. I might have a look into that.

Until the source tree is open again for new features, I&apos;ll run (and maybe improve) the changed version on my own system to test it further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771910</commentid>
    <comment_count>22</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 13:10:25 +0000</bug_when>
    <thetext>It&apos;s great that you are trying to reduce Konsole memory consumption but the root cause of the problem hasn&apos;t even been identified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771930</commentid>
    <comment_count>23</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-08 14:19:09 +0000</bug_when>
    <thetext>&gt; Then open 10 bash sessions, cat 50K lines file in each of them,
&gt; then open a new bash session and close 10 &apos;old&apos; bash sessions.
&gt; Something tells me that RSS value of Konsole process should be restored.

Repeat that process 3 or 4 times and see if the memory usage stays at the same figure it was after the first &apos;cycle&apos; or whether it goes up by the same amount each cycle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771949</commentid>
    <comment_count>24</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 15:00:12 +0000</bug_when>
    <thetext>OK.

1) Close all konsole applications/windows.

2) Run Konsole with the only session. Observe top values in xterm: 
21668 birdie    20   0 73764  15m  11m S  0.0  0.8   0:00.33 konsole

3) cat big_file; open a new session; close `cat big_file` session; top:
21668 birdie    20   0  136m  80m  11m S  0.0  4.2   0:01.71 konsole

4) repeat 3)
21668 birdie    20   0  136m  80m  12m S  0.0  4.2   0:02.98 konsole 

Strange, opening and consequently closing *one* bash session, makes konsole stay at the same RSS usage level.

* Let&apos;s check the case by opening by cat&apos;ting a big file in two konsole sessions:

21668 birdie    20   0  201m 144m  12m S  0.0  7.7   0:06.81 konsole

* And in three Konsole sessions:

21668 birdie    20   0  266m 209m  12m S  0.0 11.1   0:10.54 konsole

* And in four Konsole sessions:

21668 birdie    20   0  331m 274m  12m S  0.0 14.5   0:15.37 konsole 

So, unless there&apos;s &quot;Undo close tab&quot; feature in Konsole, there&apos;s a major memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771954</commentid>
    <comment_count>25</comment_count>
      <attachid>34367</attachid>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 15:10:32 +0000</bug_when>
    <thetext>Created attachment 34367
big_file :)

Every time when I cat this file Konsole&apos;s RSS value increases by 65MB. It contains 49 165 lines.

My Konsole terminal session has these parameters:
COLUMNS=158
LINES=57

History scroll back size is set to 32 768 lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771956</commentid>
    <comment_count>26</comment_count>
    <who name="David Faure">faure</who>
    <bug_when>2009-06-08 15:16:49 +0000</bug_when>
    <thetext>I confirm that the VmData of konsole does not decrease when closing a tab with a huge history, so there has to be a leak.
And I made a small malloc/free testcase to double-check my measurement tool: indeed, when free() is called, VmData and VMRSS decrease accordingly.

I don&apos;t know konsole enough to debug this, but I used gdb a bit and I do see a lot of destructors being called when closing tab: ~Screen and especially ~HistoryScrollBuffer which deletes _historyBuffer (and that took a really long time, so surely that was big). And yet VmData didn&apos;t change at all. Puzzling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771969</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 15:43:06 +0000</bug_when>
    <thetext>Can you try the test case also with new/delete? Is all memory freed with &quot;delete&quot; returned to the system? It depends on the implementation whether freed memory is returned to the OS, and when. And there might be a difference between malloc/free (might be based on mmap or brk) and new/delete.

Btw, mem usage of patched version (after the last step, 4 tabs open, big_file cat in each one): 
20512 mm  20   0  345m  61m  11m S    0  3.1   0:08.43 konsole</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771987</commentid>
    <comment_count>28</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 16:46:27 +0000</bug_when>
    <thetext>I&apos;m in a process of upgrading to Fedora 11 (its ISO image is already distributed on mirrors). As soon as I complete it, I will try your patches.

In my comment 24 &quot;consequently&quot; means &quot;subsequently&quot; :) Sorry for my English.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772033</commentid>
    <comment_count>29</comment_count>
    <who name="Matthew Woehlke">mwoehlke.floss</who>
    <bug_when>2009-06-08 18:55:12 +0000</bug_when>
    <thetext>I&apos;ve been away or I would have joined the conversation sooner. The current method stores each character as a 11-byte struct? (Comment #20 makes me think yes.) Also, I think konsole is optimizing the paint anyway, to combine chars with same format?

A possibility that occurs to me is to store each line as a packed array with run count and one or more runs, where a &quot;run&quot; looks like:
2: total bytes in run (for easy skipping to next run)
1: attributes present
1: format/flags (optional, if specified in &apos;attributes present&apos;)
4: foreground color (optional, if specified in &apos;attributes present&apos;)
4: background color (optional, if specified in &apos;attributes present&apos;)
2*k: char (k &gt;= 1, a wchar_t*, NUL omitted if possible)

This would minimize the space used to that needed to record the content (no overhead from storing text and formatting separately) and still allows the characters of a run to be passed directly to the paint function. The overhead for a line with no formatting (usual case) goes from 9*k bytes to 10 bytes.

Of course, one advantage to separating text and formatting is that copying text is easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772047</commentid>
    <comment_count>30</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-08 19:54:44 +0000</bug_when>
    <thetext>&gt; The current method stores each character as a 11-byte struct?

Yes and has done for years (or at least, since I inherited the code) 

&gt; Also, I think konsole is optimizing the paint anyway,
&gt; to combine chars with same format?

Yes

&gt; A possibility that occurs to me is to store each line as a packed
&gt; array with run count and one or more runs, where a &quot;run&quot; looks like

That would work as well - although as pointed out above there appears to be a leak somewhere which is more urgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772067</commentid>
    <comment_count>31</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 21:33:34 +0000</bug_when>
    <thetext>#29, yes that&apos;s about what was proposed in #20

Don&apos;t forget that attributes are always present, because the characters of a line have always at least 1 bg and fg color, even if that&apos;s the same for all of them.

Anyway, I have changed my original patch and implemented this. I&apos;ll post the 2nd version soon to the review board.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772076</commentid>
    <comment_count>32</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 22:05:20 +0000</bug_when>
    <thetext>Michale, have you measured the performance impact of your patch? Konsole is known to be the fastest X terminal emulator application and I hope it will remain so.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772082</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 22:25:23 +0000</bug_when>
    <thetext>I think it&apos;s negligible. It&apos;s only slightly slower.

User time to print 3x500k lines in 3 tabs (with a 30k lines history):
- old: 20.74s
- new: 21.62s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772084</commentid>
    <comment_count>34</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-08 22:31:03 +0000</bug_when>
    <thetext>That&apos;s impressive (considering memory savings), thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772089</commentid>
    <comment_count>35</comment_count>
    <who name="Matthew Woehlke">mwoehlke.floss</who>
    <bug_when>2009-06-08 22:42:57 +0000</bug_when>
    <thetext>&gt; #29, yes that&apos;s about what was proposed in #20

Was it? I understood that as separate arrays, whereas my suggestion was
everything packed into one unified buffer. (For that to be most useful,
however, you need to eliminate some abstraction and tie it pretty closely with
the painting code.)

&gt; Don&apos;t forget that attributes are always present

Of course. As a design point, I assume that the buffer always starts with a
full attribute block. (While you *could* optimize that out - most lines are the
same, after all - you&apos;re now looking at quite some performance overhead
searching backwards to find out what are the current attributes for not enough
gain.)

Personally, if I were doing the work, I think I would be doing something with
the &apos;everything is optional&apos; attribute bitmask. But really, you need the
storage to tie directly into the painting code if you&apos;re going to get maximum
efficiency out of that. And there are still trade-offs to each possible
approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772105</commentid>
    <comment_count>36</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-08 23:14:27 +0000</bug_when>
    <thetext>#35, 
the two approaches share that the format information is extracted from each character and only stored once for each block of consecutive chars that have the same attributes. That reduces the amount of space required per line roughly from 11*n+x to 2*n+x.

The difference is that my current solution does not use one big block but uses a QList to store a pointer to each line. This makes the implementation rather straightforward compared to a self-implemented buffer, which would be much more error-prone. What you basically need is a fixed-size FIFO to store the lines and that&apos;s easily achieved using a QList.

That might not be the most efficient way of storing the history, but it certainly makes a lot of difference to what there is now.

Konsole currently allocates one big block and puts everything there, but such an implementation is hard to maintain IMHO. I rather rely on existing data structures. When the size of the history changes, you have to allocate a new block and copy everything from the old to the new buffer. During this time, 2 buffers will be on the heap and thus increase the heap size, and there&apos;s no guarantee that this memory will ever be returned to the OS. 

There is certainly room for improvement if you want to squeeze out the last bits:
- convert everything to utf-8 (might save you another 50% in the best case)
- use any kind of compression for character data (e.g. RLE)
- store the actual raw output which was printed to konsole originally and re-interpret it when you need to paint it...
- etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772119</commentid>
    <comment_count>37</comment_count>
    <who name="Matthew Woehlke">mwoehlke.floss</who>
    <bug_when>2009-06-08 23:59:04 +0000</bug_when>
    <thetext>Short version:
Without actually testing it, I think the patch is good. There is maybe room for further tweaking, but for the &quot;level of invasiveness&quot; I would still push the current patch or something very similar for the short term. We all seem to agree on RLE&apos;ing the formatting and making the history into some sort of line-array.

Long version:
&gt; The difference is that my current solution does not use one big block but uses
&gt; a QList to store a pointer to each line.

My intent was still to use some array structure (e.g. QList) to store lines, just that each line is a compressed buffer containing both format and text in one memory block. There is a slight savings in memory, also there is savings from the only-what-changed format blocks. There is a penalty to extracting text hunks e.g. for copying, and you don&apos;t save a /whole/ lot by combining buffers. The improved efficiency painting is probably nice, but you can only take advantage of that with direct access to the format buffer from the paint routine. (And ideally you would want to apply that methodology /everywhere/, including the content of the tty. Preferably in such a way that you no longer even need to build the format block for the history buffer, because you already have it built from the tty. You could certainly build all of that onto the latest patch at a later date.)

&gt; There is certainly room for improvement if you want to squeeze out the last
&gt; bits:
&gt; - convert everything to utf-8 (might save you another 50% in the best case)

How is text handed off to Qt for painting, or put on the clipboard? Specifically, I wonder if you would lose anything converting to UTF-8, in which case IMO this should simply be done ;-). (But... later, probably.)

&gt; - use any kind of compression for character data (e.g. RLE)

Conversely, this would be horribly inefficient when you need to actually get the text. You would need to allocate buffers for decompression, decompress, etc. Probably not worth it?

&gt; - store the actual raw output which was printed to konsole originally and
&gt; re-interpret it when you need to paint it...

I actually considered that as well... but it wouldn&apos;t work very well. The main advantage would be if you could correctly re-flow text, but that breaks quickly (e.g. as soon as you throw anything tty-aware into the mix, /especiallly/ curses applications). And if you only store format-change codes, I think the ANSI format-change codes end up being just as many, or possibly /more/, bytes than simply storing the format changes.

Something else I noticed; I *think* Konsole remembers the difference between 16-color codes (ANSI), 256-color codes (xterm), and 24-bit color codes (Konsole). Which means that you should be able to pack most color changes into fewer than 4 bytes; even into 1 byte for both fg/bg if they&apos;re ANSI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772136</commentid>
    <comment_count>38</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-09 00:35:36 +0000</bug_when>
    <thetext>&gt; Michale, have you measured the performance impact of your patch?
&gt; Konsole is known to be the fastest X terminal emulator application
&gt; and I hope it will remain so.

Fast in what way?  The traditional test of a terminal is &apos;how long does it take to print X lines&apos;.  This has some use in terms of measuring the throughput of the back-end code but it doesn&apos;t make that much difference in day to day work.  Both Konsole and gnome-terminal &apos;cheat&apos; to do well in this by not drawing every line of the output but if a lot of output is received in succession then the updates are buffered and in the end only four or so re-draws of the screen are done in a second.  xterm by comparison appears to be a lot slower if you do this even though it can actually render the whole window much quicker because of the simple text rendering.

Other than keeping reviewers who want to benchmark Konsole happy, the one genuine reason to worry about &apos;printing X lines quickly&apos; speed is not slowing down an application too much if it happens to spew large amounts of output to the terminal.

For me the thing that really matters is having quick tab/screen switching and smooth scrolling even when the window is large.

&gt; User time to print 3x500k lines in 3 tabs (with a 30k lines history):
&gt; - old: 20.74s
&gt; - new: 21.62s

That&apos;s fine by me given the memory reductions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772140</commentid>
    <comment_count>39</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-09 00:39:07 +0000</bug_when>
    <thetext>#37

In this case, I fully agree with you. One heap allocation per line would be
more efficient. On the other hand, I guess at least 90% of all lines ever in a
history will not contain multiple colors, but that strongly depends on the use
case. If you can keep the per-line overhead for these lines equally small in
the combined buffer approach, that&apos;s fine. If not, a polymorph approach (like
in my first patch) using a minimal line type for single-color lines and a more
complex one for formatted lines might be better. Plus, we already have all code
necessary for that.

How about taking the compact line class of the second patch and use it for
multi-color lines, adding the minimal line class from the first patch and use
it for single-color lines, and create the final patch out of that? I volunteer
to do that, however, I won&apos;t invest the time in any other, maybe more elaborate
solution.

What does the maintainer think about that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773261</commentid>
    <comment_count>40</comment_count>
    <who name="David Faure">faure</who>
    <bug_when>2009-06-11 01:54:56 +0000</bug_when>
    <thetext>Yes I made a QVector-based testcase too (with the actual konsole data structures in them), and it works as expected. VmData shrinks as soon as it&apos;s deleted.

To answer my own &quot;puzzling&quot; remark above: this is because of implicit sharing; the items in the vector are copied from somewhere else which is still using them, and that&apos;s why the memory is not going down.
IMHO the discussion in this bug report is really mixing two problems. How to make the memory usage smaller is a good topic, but is unrelated to the actual bug, which is that the memory is not freed at all, something is keeping all that data somewhere...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773605</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-11 16:16:11 +0000</bug_when>
    <thetext>On my machine, VmData does not shrink. I have tested several applications, and the results are the same.

For example take &quot;kate&quot;:
1. Open some big files in the editor and watch VmData grow
2. Close the editing windows but leave kate open
3. VmData will never shrink

Other example: &quot;konsole&quot; - we all know about that already

Yet another example: &quot;dolphin&quot;
1. Open some windows or tabs and watch VmData grow
2. Close all but one
3. VmData will never shrink

Same with &quot;okular&quot;:
1. Open a large PDF file and note VmData
2. Open a small PDF file - okular should free the mem needed for the large PDF file
3. VmData does not shrink

So, the question is, why is VmData shrinking in your test app but not in all these apps. I actually doubt they are all affected by serious mem leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774233</commentid>
    <comment_count>42</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-12 15:23:48 +0000</bug_when>
    <thetext>Hi Michael,

I have been testing your patch for a couple of days and it is good to go into trunk soon but I would prefer to find the root cause of the memory &apos;leak&apos; first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774425</commentid>
    <comment_count>43</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-12 18:55:08 +0000</bug_when>
    <thetext>Michael, but what if they are all affected?

Jokes aside, glibc malloc()/free() implementation has very serious problems when dealing with a lot of small memory allocations - this is why Firefox for Linux uses its own memory allocator. See this bug: https://bugzilla.mozilla.org/show_bug.cgi?id=130157 and its duplicates.

Even Qt 4.5.x started to offer its own allocator - probably you have to retest all these applications after recompiling Qt with -ptmalloc configure flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774430</commentid>
    <comment_count>44</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-12 19:09:13 +0000</bug_when>
    <thetext>I discovered a problem with copy&amp;paste from the history in the current patch. I am working on resolving that.

As for the mem leak: I am not sure one exists. Valgrind shows some lost blocks, but they seem all related to QT&apos;s font classes. I can&apos;t find anything in the history code or in konsole itself.

The reason for VmData not shrinking (most of the time) upon mem being freed by &quot;free&quot; or &quot;delete&quot; is IMHO not caused by anything in the konsole code but rather is a normal consequence of heap fragmentation. And as I described in my last post, this can be observed in other applications, too.

If you are lucky enough to free the last block allocated on the heap, the system might be able to return everything until the end of the but-last block. Otherwise, nothing can be freed as this would require heap compaction. At least this is the case with small blocks in the brk() area. Large blocks are usually allcated using mmap and could be freed independently, but for the history that&apos;s not really useful, unless you want to use mallopt() and implement some sort of customized allocation and partitioned heap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774531</commentid>
    <comment_count>45</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-12 21:24:45 +0000</bug_when>
    <thetext>Michael, in comment #24 I clearly showed that there&apos;s a huge whatever-you-call-memory-not-returned-after-closing-a-tab-issue, and numerous people report the same and you still say that everything&apos;s fine?

It&apos;s all in the ways of God ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774609</commentid>
    <comment_count>46</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-12 23:46:10 +0000</bug_when>
    <thetext>Artem, don&apos;t get me wrong, I don&apos;t say that everything is ok with the current version. Its memory usage is very high, but I doubt there&apos;s a leak. If the memory usage stays constant after a certain number of actions, that is a good sign that there&apos;s no leak. Plus, valgrind also shows no leaks.

My conclusion was that it&apos;s all due to to heap fragmentation, and the link you posted gives exactly the same explanation. Even if you have multiple tabs, they all share the same heap. And if the heap gets fragmented, little memory can be returned to the OS. 

Meanwhile, the high memory consumption has been greatly reduced. In my tests with 6-8 tabs and 30.000 history, it now hardly ever reaches 100 MB. So just way for the patch to be included, I think you&apos;ll be satisfied then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775817</commentid>
    <comment_count>47</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-15 08:45:16 +0000</bug_when>
    <thetext>I have one more follow-up that substantiates the heap-fragmentation theory: I ran konsole with an alternative malloc implementation I took from http://mr.himki.net/OpenBSD_malloc_Linux.c

For comparison, here&apos;s the data size of konsole with two different implementations of malloc:

glibc malloc: 
- 1 tab (after startup): 20m
- 10 tabs (30k history): 107m
- 1 tab (closed all but one): 104m

OpenBSD mallloc ported to Linux:
- 1 tab (after startup): 20m
- 10 tabs (30k history): 121m
- 1 tab (closed all but one): 32m (!)


If you compile and preload this library (LD_PRELOAD=/path/malloc.so konsole), almost all memory is freed once you close a tab. This malloc obviously is able to handle the allocation/de-allocation sequence of konsole much better than glibc&apos;s, at the cost of a slightly higher maximum heap size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775839</commentid>
    <comment_count>48</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-15 09:39:16 +0000</bug_when>
    <thetext>Michael, thank you for this experiment!

I suppose this bug can potentially affect Konqueror and great many other KDE applications but as my surmise is now proved right (see comment #43) at least Konsole should have its own memory allocator.

With OpenBSD malloc allocator there can be a problem - when I ran Firefox under it, Firefox crashed quite frequently. Can you confirm that Konsole is stable for you?

And now I wonder if it is possible to preload OpenBSD allocator for all applications using libQt (by overriding libQt&apos;s malloc/free glibc usage).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775849</commentid>
    <comment_count>49</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-15 10:05:44 +0000</bug_when>
    <thetext>First of all, I wouldn&apos;t consider this a bug (unless crashes happen, but that might be a bug in Firefox), not in konsole nor in the allocator. There&apos;s always a tradeoff between execution speed and memory usage. I didn&apos;t benchmark the OpenBSD allocator against the glibc one in terms of speed. The glibc allocator presumably prefers speed (cache locality, multi-threading performance, etc.) over memory usage and I wouldn&apos;t be surprised if it&apos;s faster than the OpenBSD one. But there&apos;s probably room for improvement there.

Secondly, I am not sure whether applications should start developing their own allocators. Given the glibc allocator&apos;s inefficiencies in some cases (like this one), I&apos;d rather wait until this allocator gets improved. If that does not happen, the choice of allocator probably should go into the Linux distribution or in the core KDE libs. Many KDE applications are affected and therefore the effort shouldn&apos;t be repeated in every application.

It is certainly possible to put LD_PRELOAD into /etc/profile or your user profile, but then it will affect all applications. If you want the OpenBSD malloc to be used by QT applications only, I guess you&apos;d have to use some custom script to launch applications that does some ldd magic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775871</commentid>
    <comment_count>50</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-15 11:12:57 +0000</bug_when>
    <thetext>Hi Michael,

Perhaps we could use mmap() to do memory allocation for just the history buffer then?  With your current patch there is one buffer per line for the character data and one for the formatting data.  Perhaps an alternative would be to have two ring buffers, one for the character data and one for the formatting data.  I believe these buffers would then be large enough that they would be allocated using mmap() rather than from the memory zone glibc uses for smaller chunks of data?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775919</commentid>
    <comment_count>51</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-15 12:25:45 +0000</bug_when>
    <thetext>Two buffers are only allocated for multi-color lines. But you even need a total of three allocations for such lines: one for the actual HistoryLine object and another two for the two arrays (character data, format). Single color lines have only character data, so there are only two allocations in total. As we know now, this stresses the heap quite a lot.

In theory, it would be possible to use mallopt to force mmap allocations also for small buffers, but without an algorithm to fit multiple lines into one buffer we would waste a whole page per line. The default size at which glibc uses mmap for allocations is 1MB.

The general problem with one large buffer is, that you don&apos;t know in advance how much space you need for n lines of variable length. If the user wishes n lines of history, you would need to estimate how big the buffer must be. If it&apos;s too large, you waste space again. And if it&apos;s too small, you must reallocate+copy and I don&apos;t know about the implications on performance of such an approach.

A possible solution would be to use a variable-length list of fixed size buffers that are mmap-allocated. Each buffer contains a variable number of history lines and once such a buffer fills up, a new one is allocated and added to the list. If all lines of a buffer are removed from the history, you can unmap the whole buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775934</commentid>
    <comment_count>52</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-06-15 13:06:23 +0000</bug_when>
    <thetext>I&apos;m not a programmer at all, but here&apos;s my solution (probably a complete rubbish :) ).

Say a user have N lines of history enabled. Most users run their console maximized and have a known window width (shell variable $COLUMNS). Also most applications/user activity doesn&apos;t fill up the history instantly so we can safely allocate/mmap memory buffer = N*$COLUMNS*OVERHEAD/10 at a time. If a user reaches N/10 lines of history we allocate yet another buffer of E size.

If a user decides to close a tab, then we can easily munmap(E*N/10*allocated_buffers).

Of course, this approach doesn&apos;t take into consideration a possible resize operation of a Konsole window or font size changes. But in this case we can dynamically reallocate memory and change buffer size.

Another problem is that this approach doesn&apos;t take into consideration an endless history. But in this case we can allocate buffers by 10K lines at a time (or any other history lines number).

Just my $.02.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777357</commentid>
    <comment_count>53</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-18 01:27:41 +0000</bug_when>
    <thetext>I&apos;ve just posted yet another version of the patch to the review board. The patch now uses a custom heap (list of mmap&apos;ed blocks) to store the history, similar to what was proposed in comment 50.

The data size now decreases when the history is cleared or tabs are closed. As a bonus, memory consumption is a little lower, as we can allocate memory more efficiently on this custom heap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781561</commentid>
    <comment_count>54</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-06-25 09:25:04 +0000</bug_when>
    <thetext>Now that 4.3 has been branched off trunk, how are the chances of the latest patch getting merged into trunk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781764</commentid>
    <comment_count>55</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-25 17:33:23 +0000</bug_when>
    <thetext>SVN commit 987102 by knight:

Greatly reduce memory usage required by Konsole&apos;s scrollback buffer and improve releasing of scrollback memory to OS when no longer needed.

* Reduce amount of memory required for representing characters in scrollback buffer by not storing formatting data for each character.  Instead store UTF-16 characters and formatting ranges
* Allocate memory for scrollback buffer use a custom mmap-based memory pool - this allows the memory to be released to the OS sooner when freed.

There is a small performance cost when printing a large number of lines - see bug report for figures.

Patch by Michael Meier

REVIEW: http://reviewboard.kde.org/r/802/
BUG:176974



 M  +13 -0     Character.h  
 M  +283 -0    History.cpp  
 M  +145 -0    History.h  
 M  +1 -1      SessionController.cpp  
 M  +1 -1      SessionManager.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&amp;revision=987102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781765</commentid>
    <comment_count>56</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-06-25 17:35:26 +0000</bug_when>
    <thetext>Hi Michael,

Thank-you for your time on this.  I will test it a little more locally and it should be possible to backport this for a KDE 4.3.x point release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791525</commentid>
    <comment_count>57</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-13 18:53:17 +0000</bug_when>
    <thetext>Michael and Robert, thanks for working on this bug, but I have one request.

Can you please create the simplest code (say, one C++ file using Qt includes) which deliberately &quot;leaks&quot; memory using the same memory allocation/free as it&apos;s done in &quot;old&quot; Konsole from KDE 4? So, this code in its basic code just allocates say 250000 random sized objects then frees them, then we see that memory is *not* returned to the underlying OS.

I think Qt developers *should* know about this problem, because I suspect there can be other places where Qt &quot;leaks&quot; memory the same way, and there could be other applications which suffer from this Qt/glibc bug/feature/problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793338</commentid>
    <comment_count>58</comment_count>
    <who name="David Faure">faure</who>
    <bug_when>2009-07-16 14:48:12 +0000</bug_when>
    <thetext>Artem: I believe your conclusion is wrong. See what I said in comment #40: there is no such bug in Qt/glibc AFAICS, VmData does shrink when destructing the vector, as my testcase showed. The memory _is_ returned to the OS. From what I can see, the bug was in konsole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793343</commentid>
    <comment_count>59</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-16 15:01:24 +0000</bug_when>
    <thetext>However no one could spot a memory leak using valgrind. ;)

I suppose it won&apos;t hurt if someone wrote a testcase so that we could verify my hypothesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793449</commentid>
    <comment_count>60</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-16 18:03:51 +0000</bug_when>
    <thetext>David,

When I run unpatched Konsole under OpenBSD_malloc_Linux.c (which is located here http://mr.himki.net/index-alloc.html ) it returns _all_ the allocated scrollback memory when I close tab(s).

So, no matter how you call it this problem/bug/etc. definitely affects Qt and Qt based applications at least when Qt is running under Linux/glibc.

I&apos;m going to report these findings to Nokia/Qt software.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793719</commentid>
    <comment_count>61</comment_count>
    <who name="Robert Knight">robertknight</who>
    <bug_when>2009-07-17 01:45:39 +0000</bug_when>
    <thetext>&gt; I&apos;m going to report these findings to Nokia/Qt software.

To clarify, we do not know that Qt is doing anything &apos;wrong&apos; and nobody has yet done enough testing with Konsole or pieces of it to have a clear picture of what is going on.  Someone at Qt Software may be aware of a similar problem in another application though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793756</commentid>
    <comment_count>62</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-17 05:44:43 +0000</bug_when>
    <thetext>Robert,

Can you, please, create a simple C++ application like the one I&apos;ve outlined in comment #57?

My skills in C++ programming are almost non-existent. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793819</commentid>
    <comment_count>63</comment_count>
    <who name="David Faure">faure</who>
    <bug_when>2009-07-17 10:39:32 +0000</bug_when>
    <thetext>Artem: your findings point at a bug in glibc then, not at a bug in Qt :-)

About a testcase: I made one but it _was_ returning all the memory even with standard glibc malloc... so it wouldn&apos;t help you much, would it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793896</commentid>
    <comment_count>64</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-17 13:21:51 +0000</bug_when>
    <thetext>David, as it was mentioned earlier, Ulrich Drepper and other glibc developers treat this bug as a feature, please, read comments in this file:

http://sourceware.org/cgi-bin/cvsweb.cgi/libc/malloc/malloc.c?rev=1.200&amp;content-type=text/x-cvsweb-markup&amp;cvsroot=glibc

This only means that Qt developers should use their own memory allocator under linux for all memory allocations or at least for allocations which are not multiple of a page size (usually 4K).

And probably your testcase doesn&apos;t use/have the same scrollback history memory structure as konsole does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793901</commentid>
    <comment_count>65</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-17 13:32:27 +0000</bug_when>
    <thetext>There&apos;s one more problem that drives me mad.

Over time almost all KDE 4.x.x applications consume more and more memory even when I don&apos;t actively interact with them.

Most visible are:

Plasma (47m at startup here, up to 90m after a week of usage)
KWin (32m at startup, up to 70m after a week of usage with zero applications running, except those which are minimized to systray)

etc.

I never shut my PC down but almost every week or two I have to restart my KDE session to free some memory (and mind that I have 2GB of RAM). I don&apos;t have desktop effects (OpenGL) enabled.

I have no idea why no one is paying attention to this problem and it seems like developers each have 8GB of RAM installed on their PCs.

Of course, Konqueror is the worst of all, I&apos;ve recently filed a bug 200439 report against it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793907</commentid>
    <comment_count>66</comment_count>
    <who name="Artem S. Tashkinov">aros</who>
    <bug_when>2009-07-17 13:46:58 +0000</bug_when>
    <thetext>I&apos;m sorry for flooding but I&apos;ve just found a number of very good explanations why libc malloc doesn&apos;t return memory to the underlying OS more often than it does:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?admit=109447626+1247830987898+28353475&amp;threadId=110107 (Subject: Subject: free() not really freeing?)

and

http://www.linuxquestions.org:80/questions/programming-9/how-does-malloc-and-free-functions-work-262165/ (Subject: how does malloc() and free() functions work?)

and comment here:

http://digg.com/software/Firefox_Memory_Leak_Problem_Explored

(starting with &quot;(This is slightly expanded from the comment I made on an older Firefox memory thread on Digg today.)

The problem for many people is *NOT* a &quot;memory leak&quot;. It is a heap memory fragmentation problem. The following statements apply to Linux systems though I suspect they may be a consideration under Windows as well. Firefox is built on top of C++ and C, those use the GNU &quot;libc&quot; ANSI C standard malloc() and free() to allocate memory.&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794911</commentid>
    <comment_count>67</comment_count>
    <who name="Christoph Bartoschek">bartoschek</who>
    <bug_when>2009-07-19 11:34:18 +0000</bug_when>
    <thetext>Is it possible that the old implementation used 16 bytes per character on a 64bit machine due to alignment? This would explain some gap between the calculated data and reported data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808302</commentid>
    <comment_count>68</comment_count>
    <who name="Michael Meier">mick22</who>
    <bug_when>2009-08-07 22:36:32 +0000</bug_when>
    <thetext>I think the patch could now be merged into the 4.3.x branch. I&apos;ve been using it without problems for several weeks now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147694</commentid>
    <comment_count>69</comment_count>
    <who name="Jekyll Wu">adaptee</who>
    <bug_when>2011-07-31 12:37:11 +0000</bug_when>
    <thetext>*** Bug 228037 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292702</commentid>
    <comment_count>70</comment_count>
      <attachid>73539</attachid>
    <who name="Neil Skrypuch">kde</who>
    <bug_when>2012-08-29 07:05:48 +0000</bug_when>
    <thetext>Created attachment 73539
malloc() testing program

Just for posterity, the observed &quot;memory leak&quot; in comment 24 is not a memory leak and deserves a proper explanation.

Try the attached program:

g++ testmem.cpp
./a.out

You will want to run something like watch -n0.3 &quot;ps aux | grep a.out&quot; in another konsole while it&apos;s running.

For the non-developers, I&apos;ll explain what exactly happens here.

The program allocates half a gig of memory in a single chunk and writes to the memory (step 1), then frees it (step 2). This memory will be immediately returned to the system.

Next, it will allocate half a gig in 32k chunks and write to each chunk (step 3), then free each of the chunks (step 4). This memory is not immediately returned to the system.

Steps 5 and 6 are a repeat of steps 3 and 4, but they forcefully return the used memory to the system, and so you see the memory usage drop again.

So what happened, why wasn&apos;t the memory returned to the system after step 4, it must be a memory leak, right? Wrong. Run the program in valgrind and you&apos;ll find that there&apos;s no memory leak, and a cursory viewing of the source will support that observation.

First of all, it&apos;s important to note that memory allocations are (very) expensive operations, and a typical program does A LOT of them, and more specifically, the typical program does a lot of small memory allocations which last for only a small fraction of the lifetime of the program.

Consequently, it&apos;s a worthwhile practice to try and optimize for this very common use case of many short lived mallocs, and glibc&apos;s malloc implementation does exactly that. For memory allocations below a configurable size threshold, they are drawn from a pool of memory entries which are allocated as needed and cached for later usage, even after being free()d. This means that when we repeated the existing steps 3 and 4 in as steps 5 and 6, the 2nd round of malloc()s would be essentially free (and as you can see, there is no increase in memory usage), instead of being very expensive like the first time.

Memory allocations of a size larger than the configurable threshold are not drawn from a special pool and are not cached for later use, because such larger memory allocations are rarely made in any meaningful volume within the same program execution context and have a substantial memory cost associated (if they were to be kept around like the smaller chunks).

The malloc implementation in glibc is (very much by necessity) a very general malloc that performs well in a wide variety of uses both in terms of CPU time spent and memory usage. It is also a very tunable malloc implementation. Sometimes there are degenerate cases that a general implementation cannot handle well, and that&apos;s why functions like malloc_trim() exist.

In this case, it might be appropriate to call malloc_trim() after closing a tab/konsole with a large (or non-unlimited) scrollback buffer, as konsole can have relatively unusual bursty patterns of memory usage, which if allocated in small chunks, will not be returned to the system for awhile.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34358</attachid>
            <date>2009-06-08 02:56:14 +0000</date>
            <delta_ts>2009-06-08 02:56:14 +0000</delta_ts>
            <desc>Patch for konsole 4.2.4, reduces RAM usage</desc>
            <filename>konsole_qlist.patch</filename>
            <type>text/plain</type>
            <size>9873</size>
            <attacher name="Michael Meier">mick22</attacher>
            
              <data encoding="base64">ZGlmZiAtcnVwTiAvdG1wL3NyY19vcmlnL0hpc3RvcnkuY3BwIC90bXAvc3JjX21vZC9IaXN0b3J5
LmNwcAotLS0gL3RtcC9zcmNfb3JpZy9IaXN0b3J5LmNwcAkyMDA4LTA5LTI2IDE2OjU1OjUxLjAw
MDAwMDAwMCArMDIwMAorKysgL3RtcC9zcmNfbW9kL0hpc3RvcnkuY3BwCTIwMDktMDYtMDggMDI6
MzM6MzguNzY2ODA0MDAwICswMjAwCkBAIC01MjgsNiArNTI4LDE3NCBAQCB2b2lkIEhpc3RvcnlT
Y3JvbGxCbG9ja0FycmF5OjphZGRMaW5lKGJvCiB7CiB9CiAKKy8vIEhpc3RvcnkgU2Nyb2xsIFFM
aXN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitDb21wYWN0SGlzdG9y
eUxpbmU6OkNvbXBhY3RIaXN0b3J5TGluZShjb25zdCBUZXh0TGluZSYgbGluZSkgeworICAvL2tE
ZWJ1ZygpIDw8ICJuZXcgQ0hMIG9mIHNpemUgc3RvcmVkIGluIGNvbXBhY3QgZm9ybWF0IG9mIHNp
emUgIiA8PCBsaW5lLnNpemUoKTsKKyAgCisgIGxlbmd0aD1saW5lLnNpemUoKTsKKyAgaWYgKGxl
bmd0aCA+IDApeworICAgIGRhdGEgPSBuZXcgcXVpbnQxNltsaW5lLnNpemUoKV07CisgCisgICAg
Zm9yIChpbnQgaT0wOyBpPGxpbmUuc2l6ZSgpOyBpKyspIHsKKyAgICAgIGRhdGFbaV09bGluZVtp
XS5jaGFyYWN0ZXI7CisgICAgfQorICAgIHJlbmRpdGlvbiA9IGxpbmVbMF0ucmVuZGl0aW9uOwor
ICAgIGJnQ29sb3IgPSBsaW5lWzBdLmJhY2tncm91bmRDb2xvcjsKKyAgICBmZ0NvbG9yID0gbGlu
ZVswXS5mb3JlZ3JvdW5kQ29sb3I7CisgICB9Cit9CisKK0NvbXBhY3RIaXN0b3J5TGluZTo6fkNv
bXBhY3RIaXN0b3J5TGluZSgpIHsKKyAgLy9rRGVidWcoKSA8PCAifkNITCI7CisgIGlmIChsZW5n
dGg+MCkKKyAgICBkZWxldGVbXSBkYXRhOworfQorCit2b2lkIENvbXBhY3RIaXN0b3J5TGluZTo6
Z2V0Q2hhcmFjdGVyKGludCBpbmRleCwgQ2hhcmFjdGVyICZyKSB7CisKKyAgUV9BU1NFUlQoIGlu
ZGV4IDwgbGVuZ3RoICk7CisKKyAgci5jaGFyYWN0ZXI9ZGF0YVtpbmRleF07CisgIHIucmVuZGl0
aW9uID0gcmVuZGl0aW9uOworICByLmZvcmVncm91bmRDb2xvciA9IGZnQ29sb3I7CisgIHIuYmFj
a2dyb3VuZENvbG9yID0gYmdDb2xvcjsKK30KKwordm9pZCBDb21wYWN0SGlzdG9yeUxpbmU6Omdl
dENoYXJhY3RlcnMoQ2hhcmFjdGVyKiBhcnJheSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0Q29sdW1u
KSB7CisgIGZvciAoaW50IGk9c3RhcnRDb2x1bW47IGk8bGVuZ3RoOyBpKyspeworICAgIGdldENo
YXJhY3RlcihpLCBhcnJheVtpXSk7CisgIH0KK30KKworCitMZWdhY3lIaXN0b3J5TGluZTo6TGVn
YWN5SGlzdG9yeUxpbmUoY29uc3QgVGV4dExpbmUmIHRleHRsaW5lKSA6IAorICBsaW5lKHRleHRs
aW5lKQoreworICAvL2tEZWJ1ZygpIDw8ICJuZXcgQ0hMIG9mIHNpemUgc3RvcmVkIGluIGxlZ2Fj
eSBmb3JtYXQgb2Ygc2l6ZSAiIDw8IGxpbmUuc2l6ZSgpOworICAKK30KKworTGVnYWN5SGlzdG9y
eUxpbmU6On5MZWdhY3lIaXN0b3J5TGluZSgpIHsKKyAKK30KKwordm9pZCBMZWdhY3lIaXN0b3J5
TGluZTo6Z2V0Q2hhcmFjdGVyKGludCBpbmRleCwgQ2hhcmFjdGVyICZyKSB7CisgIHI9bGluZVtp
bmRleF07Cit9CisKKwordm9pZCBMZWdhY3lIaXN0b3J5TGluZTo6Z2V0Q2hhcmFjdGVycyhDaGFy
YWN0ZXIqIGFycmF5LCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRDb2x1bW4pIHsKKyAgaWYgKCBsZW5n
dGggPT0gMCApIHJldHVybjsKKworICBRX0FTU0VSVCggc3RhcnRDb2x1bW4gPD0gbGluZS5zaXpl
KCkgLSBsZW5ndGggKTsKKyAgICAKKyAgbWVtY3B5KGFycmF5LCBsaW5lLmNvbnN0RGF0YSgpICsg
c3RhcnRDb2x1bW4gLCBsZW5ndGggKiBzaXplb2YoQ2hhcmFjdGVyKSk7Cit9CisKK0hpc3RvcnlT
Y3JvbGxRTGlzdDo6SGlzdG9yeVNjcm9sbFFMaXN0KHVuc2lnbmVkIGludCBtYXhMaW5lQ291bnQp
CisgIDogSGlzdG9yeVNjcm9sbChuZXcgSGlzdG9yeVR5cGVRTGlzdChtYXhMaW5lQ291bnQpKQor
ICAgLF9oaXN0b3J5QnVmZmVyKCkKK3sKKyAgc2V0TWF4TmJMaW5lcyhtYXhMaW5lQ291bnQpOwor
ICBrRGVidWcoKSA8PCAiSFNDUUwgY29uc3RydWN0b3IgLSBxbGlzdCBzaXplOiAiIDw8IF9oaXN0
b3J5QnVmZmVyLnNpemUoKTsKK30KKworSGlzdG9yeVNjcm9sbFFMaXN0Ojp+SGlzdG9yeVNjcm9s
bFFMaXN0KCkKK3sKKyAgZm9yIChpbnQgaT0wOyBpPF9oaXN0b3J5QnVmZmVyLnNpemUoKTsgaSsr
KSB7CisgICAgZGVsZXRlIF9oaXN0b3J5QnVmZmVyW2ldOworICB9CisgIF9oaXN0b3J5QnVmZmVy
LmNsZWFyKCk7CisgIC8va0RlYnVnKCkgPDwgIkhTUUwgZGVsZXRlZCBpbiBkZXN0cnVjdG9yIjsK
K30KKworYm9vbCBIaXN0b3J5U2Nyb2xsUUxpc3Q6Omhhc0RpZmZlcmVudENvbG9ycyhjb25zdCBU
ZXh0TGluZSYgbGluZSkKK3sKKyAgLy8gY2hlY2sgaWYgbGluZSBoYXMgZGlmZmVyZW50IGNvbG9y
cyBvciByZW5kaXRpb24gZmxhZ3MgLS0gaWYgeWVzLCBzdG9yZSBhcyBhIGxlZ2FjeSBsaW5lIChR
VmVjdG9yPENoYXJhY3Rlcj4pLCBvdGhlcndpc2Ugc3RvcmUgaW4gYSBjb21wYWN0IGZvcm1hdAor
ICBib29sIGhhc0RpZmZlcmVudENvbG9yc09yRmxhZ3MgPSBmYWxzZTsKKyAgZm9yIChpbnQgaT0x
OyBpPGxpbmUuc2l6ZSgpICYmICFoYXNEaWZmZXJlbnRDb2xvcnNPckZsYWdzOyBpKyspIHsKKyAg
ICBDaGFyYWN0ZXIgciA9IGxpbmVbaV07CisgICAgaGFzRGlmZmVyZW50Q29sb3JzT3JGbGFncyA9
IGhhc0RpZmZlcmVudENvbG9yc09yRmxhZ3MgfHwgCisJci5iYWNrZ3JvdW5kQ29sb3IgIT0gbGlu
ZVswXS5iYWNrZ3JvdW5kQ29sb3IgfHwKKyAgICAJci5mb3JlZ3JvdW5kQ29sb3IgIT0gbGluZVsw
XS5mb3JlZ3JvdW5kQ29sb3IgfHwKKyAgICAgICAgci5yZW5kaXRpb24gIT0gbGluZVswXS5yZW5k
aXRpb247CisgIH0KKyAgcmV0dXJuIGhhc0RpZmZlcmVudENvbG9yc09yRmxhZ3M7Cit9CisKK3Zv
aWQgSGlzdG9yeVNjcm9sbFFMaXN0OjphZGRDZWxsc1ZlY3Rvcihjb25zdCBUZXh0TGluZSYgY2Vs
bHMpCit7CisgCisgIEhpc3RvcnlMaW5lQmFzZSAqbGluZTsKKyAgaWYgKCFoYXNEaWZmZXJlbnRD
b2xvcnMoY2VsbHMpKSB7CisgICAgbGluZSA9IG5ldyBDb21wYWN0SGlzdG9yeUxpbmUoY2VsbHMp
OworICB9IGVsc2UgeworICAgIGxpbmUgPSBuZXcgTGVnYWN5SGlzdG9yeUxpbmUoY2VsbHMpOyAK
KyAgfQorCisgIGlmIChfaGlzdG9yeUJ1ZmZlci5zaXplKCkgPiBfbWF4TGluZUNvdW50KSB7Cisg
ICAgSGlzdG9yeUxpbmVCYXNlICpyZW1vdmVkID0gX2hpc3RvcnlCdWZmZXIudGFrZUF0KDApOwor
ICAgIGRlbGV0ZSByZW1vdmVkOworICAgIC8va0RlYnVnKCkgPDwgInJlbW92ZWQgZmlyc3QgZWxl
bWVudCwgc2l6ZSBub3cgIiA8PCBfaGlzdG9yeUJ1ZmZlci5zaXplKCk7CisgIH0KKyAgX2hpc3Rv
cnlCdWZmZXIuYXBwZW5kKGxpbmUpOworfQorCit2b2lkIEhpc3RvcnlTY3JvbGxRTGlzdDo6YWRk
Q2VsbHMoY29uc3QgQ2hhcmFjdGVyIGFbXSwgaW50IGNvdW50KQoreworICBUZXh0TGluZSBuZXdM
aW5lKGNvdW50KTsKKyAgcUNvcHkoYSxhK2NvdW50LG5ld0xpbmUuYmVnaW4oKSk7CisKKyAgYWRk
Q2VsbHNWZWN0b3IobmV3TGluZSk7Cit9CisKK3ZvaWQgSGlzdG9yeVNjcm9sbFFMaXN0OjphZGRM
aW5lKGJvb2wgcHJldmlvdXNXcmFwcGVkKQoreworICBfaGlzdG9yeUJ1ZmZlci5sYXN0KCktPnNl
dFdyYXBwZWQocHJldmlvdXNXcmFwcGVkKTsKK30KKworaW50IEhpc3RvcnlTY3JvbGxRTGlzdDo6
Z2V0TGluZXMoKQoreworICByZXR1cm4gX2hpc3RvcnlCdWZmZXIuc2l6ZSgpOworfQorCitpbnQg
SGlzdG9yeVNjcm9sbFFMaXN0OjpnZXRMaW5lTGVuKGludCBsaW5lTnVtYmVyKQoreworICBRX0FT
U0VSVCggbGluZU51bWJlciA+PSAwICYmIGxpbmVOdW1iZXIgPCBfaGlzdG9yeUJ1ZmZlci5zaXpl
KCkgKTsKKworICByZXR1cm4gX2hpc3RvcnlCdWZmZXJbbGluZU51bWJlcl0tPmdldExlbmd0aCgp
OworICAKK30KKworCit2b2lkIEhpc3RvcnlTY3JvbGxRTGlzdDo6Z2V0Q2VsbHMoaW50IGxpbmVO
dW1iZXIsIGludCBzdGFydENvbHVtbiwgaW50IGNvdW50LCBDaGFyYWN0ZXIqIGJ1ZmZlcikKK3sK
KyAgaWYgKCBjb3VudCA9PSAwICkgcmV0dXJuOworCisgIFFfQVNTRVJUKCBsaW5lTnVtYmVyIDwg
X2hpc3RvcnlCdWZmZXIuc2l6ZSgpICk7CisKKyAgSGlzdG9yeUxpbmVCYXNlKiBsaW5lID0gX2hp
c3RvcnlCdWZmZXJbbGluZU51bWJlcl07CisKKyAgUV9BU1NFUlQoIHN0YXJ0Q29sdW1uIDw9IGxp
bmUtPmdldExlbmd0aCgpIC0gY291bnQgKTsKKyAgICAKKyAgbGluZS0+Z2V0Q2hhcmFjdGVycyhi
dWZmZXIsIGNvdW50LCBzdGFydENvbHVtbik7Cit9CisKK3ZvaWQgSGlzdG9yeVNjcm9sbFFMaXN0
OjpzZXRNYXhOYkxpbmVzKHVuc2lnbmVkIGludCBsaW5lQ291bnQpCit7CisgIF9tYXhMaW5lQ291
bnQgPSBsaW5lQ291bnQ7CisKKyAgd2hpbGUgKF9oaXN0b3J5QnVmZmVyLnNpemUoKSA+IChpbnQp
IGxpbmVDb3VudCkgeworICAgIGRlbGV0ZSBfaGlzdG9yeUJ1ZmZlci50YWtlQXQoMCk7CisgIH0K
K30KKworYm9vbCBIaXN0b3J5U2Nyb2xsUUxpc3Q6OmlzV3JhcHBlZExpbmUoaW50IGxpbmVOdW1i
ZXIpCit7CisgIHJldHVybiBfaGlzdG9yeUJ1ZmZlcltsaW5lTnVtYmVyXS0+aXNXcmFwcGVkKCk7
Cit9CisKKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gSGlzdG9yeSBUeXBlcwogLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpA
QCAtNjk4LDMgKzg2NiwzNyBAQCBpbnQgSGlzdG9yeVR5cGVGaWxlOjptYXhpbXVtTGluZUNvdW50
KCkgCiB7CiAgIHJldHVybiAwOwogfQorCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCisKK0hpc3RvcnlUeXBlUUxpc3Q6Okhpc3RvcnlUeXBlUUxpc3QodW5zaWduZWQgaW50IG5i
TGluZXMpCisgIDogbV9uYkxpbmVzKG5iTGluZXMpCit7Cit9CisKK2Jvb2wgSGlzdG9yeVR5cGVR
TGlzdDo6aXNFbmFibGVkKCkgY29uc3QKK3sKKyAgcmV0dXJuIHRydWU7Cit9CisKK2ludCBIaXN0
b3J5VHlwZVFMaXN0OjptYXhpbXVtTGluZUNvdW50KCkgY29uc3QKK3sKKyAgcmV0dXJuIG1fbmJM
aW5lczsKK30KKworSGlzdG9yeVNjcm9sbCogSGlzdG9yeVR5cGVRTGlzdDo6c2Nyb2xsKEhpc3Rv
cnlTY3JvbGwgKm9sZCkgY29uc3QKK3sKKyAgaWYgKG9sZCkKKyAgeworICAgIEhpc3RvcnlTY3Jv
bGxRTGlzdCAqb2xkQnVmZmVyID0gZHluYW1pY19jYXN0PEhpc3RvcnlTY3JvbGxRTGlzdCo+KG9s
ZCk7CisgICAgaWYgKG9sZEJ1ZmZlcikKKyAgICB7CisgICAgICAgb2xkQnVmZmVyLT5zZXRNYXhO
YkxpbmVzKG1fbmJMaW5lcyk7CisgICAgICAgcmV0dXJuIG9sZEJ1ZmZlcjsKKyAgICB9CisgICAg
ZGVsZXRlIG9sZDsKKyAgfQorICByZXR1cm4gbmV3IEhpc3RvcnlTY3JvbGxRTGlzdChtX25iTGlu
ZXMpOworfQpkaWZmIC1ydXBOIC90bXAvc3JjX29yaWcvSGlzdG9yeS5oIC90bXAvc3JjX21vZC9I
aXN0b3J5LmgKLS0tIC90bXAvc3JjX29yaWcvSGlzdG9yeS5oCTIwMDgtMDYtMDMgMTE6MzQ6MjQu
MDAwMDAwMDAwICswMjAwCisrKyAvdG1wL3NyY19tb2QvSGlzdG9yeS5oCTIwMDktMDYtMDggMDI6
MjQ6NTkuMTIyODAyMDAwICswMjAwCkBAIC0yNTUsNiArMjU1LDg3IEBAIHByb3RlY3RlZDoKIH07
CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KKy8vIFFMaXN0LWJhc2VkIGhpc3RvcnkgdXNpbmcgY29tcGFjdCBz
dG9yYWdlIHdoZW4gcG9zc2libGUgCisvLyAobGltaXRlZCB0byBhIGZpeGVkIG5iIG9mIGxpbmVz
KQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwordHlwZWRlZiBRVmVjdG9yPENoYXJhY3Rlcj4gVGV4dExpbmU7CisK
K2NsYXNzIEhpc3RvcnlMaW5lQmFzZSB7CitwdWJsaWM6ICAKKyAgSGlzdG9yeUxpbmVCYXNlKCl7
fTsKKyAgdmlydHVhbCB+SGlzdG9yeUxpbmVCYXNlKCkge307CisKKyAgdmlydHVhbCB2b2lkIGdl
dENoYXJhY3RlcnMoQ2hhcmFjdGVyKiBhcnJheSwgaW50IGxlbmd0aCwgaW50IHN0YXJ0Q29sdW1u
KSA9MDsKKyAgdmlydHVhbCB2b2lkIGdldENoYXJhY3RlcihpbnQgaW5kZXgsIENoYXJhY3RlciAm
cikgPTA7CisgIHZpcnR1YWwgaW50IGdldExlbmd0aCgpID0wOworICB2aXJ0dWFsIGJvb2wgaXNX
cmFwcGVkKCl7cmV0dXJuIHdyYXBwZWQ7fTsKKyAgdmlydHVhbCB2b2lkIHNldFdyYXBwZWQoYm9v
bCBpc1dyYXBwZWQpIHt3cmFwcGVkPWlzV3JhcHBlZDt9OworCitwcml2YXRlOgorICBib29sIHdy
YXBwZWQ7Cit9OworCitjbGFzcyBMZWdhY3lIaXN0b3J5TGluZSA6IHB1YmxpYyBIaXN0b3J5TGlu
ZUJhc2UgeworcHVibGljOgorICBMZWdhY3lIaXN0b3J5TGluZShjb25zdCBUZXh0TGluZSYgdGV4
dGxpbmUpOworICB2aXJ0dWFsIH5MZWdhY3lIaXN0b3J5TGluZSgpOworCisgIHZvaWQgZ2V0Q2hh
cmFjdGVycyhDaGFyYWN0ZXIqIGFycmF5LCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRDb2x1bW49MCk7
CisgIHZvaWQgZ2V0Q2hhcmFjdGVyKGludCBpbmRleCwgQ2hhcmFjdGVyICZyKTsKKyAgaW50IGdl
dExlbmd0aCgpe3JldHVybiBsaW5lLnNpemUoKTt9OworIAorcHJpdmF0ZToKKyAgVGV4dExpbmUg
bGluZTsKK307CisKK2NsYXNzIENvbXBhY3RIaXN0b3J5TGluZSA6IHB1YmxpYyBIaXN0b3J5TGlu
ZUJhc2UgeworCitwdWJsaWM6CisgIENvbXBhY3RIaXN0b3J5TGluZShjb25zdCBUZXh0TGluZSYg
bGluZSk7CisgIHZpcnR1YWwgfkNvbXBhY3RIaXN0b3J5TGluZSgpOworCisgIHZvaWQgZ2V0Q2hh
cmFjdGVycyhDaGFyYWN0ZXIqIGFycmF5LCBpbnQgbGVuZ3RoLCBpbnQgc3RhcnRDb2x1bW49MCk7
CisgIHZvaWQgZ2V0Q2hhcmFjdGVyKGludCBpbmRleCwgQ2hhcmFjdGVyICZyKTsKKyAgaW50IGdl
dExlbmd0aCgpe3JldHVybiBsZW5ndGg7fTsKKyAKK3ByaXZhdGU6CisKKyAgcXVpbnQxNiogZGF0
YTsKKyAgaW50IGxlbmd0aDsKKyAgcXVpbnQ4IHJlbmRpdGlvbjsKKyAgQ2hhcmFjdGVyQ29sb3Ig
ZmdDb2xvciwgYmdDb2xvcjsKK307CisKK2NsYXNzIEhpc3RvcnlTY3JvbGxRTGlzdCA6IHB1Ymxp
YyBIaXN0b3J5U2Nyb2xsCit7CitwdWJsaWM6CisgIHR5cGVkZWYgUUxpc3Q8SGlzdG9yeUxpbmVC
YXNlKj4gSGlzdG9yeUFycmF5OworCisgIEhpc3RvcnlTY3JvbGxRTGlzdCh1bnNpZ25lZCBpbnQg
bWF4TmJMaW5lcyA9IDEwMDApOworICB2aXJ0dWFsIH5IaXN0b3J5U2Nyb2xsUUxpc3QoKTsKKwor
ICB2aXJ0dWFsIGludCAgZ2V0TGluZXMoKTsKKyAgdmlydHVhbCBpbnQgIGdldExpbmVMZW4oaW50
IGxpbmVubyk7CisgIHZpcnR1YWwgdm9pZCBnZXRDZWxscyhpbnQgbGluZW5vLCBpbnQgY29sbm8s
IGludCBjb3VudCwgQ2hhcmFjdGVyIHJlc1tdKTsKKyAgdmlydHVhbCBib29sIGlzV3JhcHBlZExp
bmUoaW50IGxpbmVubyk7CisKKyAgdmlydHVhbCB2b2lkIGFkZENlbGxzKGNvbnN0IENoYXJhY3Rl
ciBhW10sIGludCBjb3VudCk7CisgIHZpcnR1YWwgdm9pZCBhZGRDZWxsc1ZlY3Rvcihjb25zdCBU
ZXh0TGluZSYgY2VsbHMpOworICB2aXJ0dWFsIHZvaWQgYWRkTGluZShib29sIHByZXZpb3VzV3Jh
cHBlZD1mYWxzZSk7CisKKyAgdm9pZCBzZXRNYXhOYkxpbmVzKHVuc2lnbmVkIGludCBuYkxpbmVz
KTsKKyAgdW5zaWduZWQgaW50IG1heE5iTGluZXMoKSB7IHJldHVybiBfbWF4TGluZUNvdW50OyB9
CisgCisKK3ByaXZhdGU6CisgIGJvb2wgaGFzRGlmZmVyZW50Q29sb3JzKGNvbnN0IFRleHRMaW5l
JiBsaW5lKTsKKworICBIaXN0b3J5QXJyYXkgX2hpc3RvcnlCdWZmZXI7CisgIGludCBfbWF4TGlu
ZUNvdW50OworICAKK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIEhpc3RvcnkgdHlwZQogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogCkBAIC0zNDAsNiArNDIxLDIxIEBAIHByb3RlY3RlZDoKICAgdW5zaWduZWQgaW50
IG1fbmJMaW5lczsKIH07CiAKK2NsYXNzIEhpc3RvcnlUeXBlUUxpc3QgOiBwdWJsaWMgSGlzdG9y
eVR5cGUKK3sKK3B1YmxpYzoKKyAgSGlzdG9yeVR5cGVRTGlzdCh1bnNpZ25lZCBpbnQgc2l6ZSk7
CisgIAorICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CisgIHZpcnR1YWwgaW50IG1h
eGltdW1MaW5lQ291bnQoKSBjb25zdDsKKworICB2aXJ0dWFsIEhpc3RvcnlTY3JvbGwqIHNjcm9s
bChIaXN0b3J5U2Nyb2xsICopIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgIHVuc2lnbmVkIGludCBt
X25iTGluZXM7Cit9OworCisKICNlbmRpZgogCiB9CmRpZmYgLXJ1cE4gL3RtcC9zcmNfb3JpZy9T
ZXNzaW9uQ29udHJvbGxlci5jcHAgL3RtcC9zcmNfbW9kL1Nlc3Npb25Db250cm9sbGVyLmNwcAot
LS0gL3RtcC9zcmNfb3JpZy9TZXNzaW9uQ29udHJvbGxlci5jcHAJMjAwOS0wNC0zMCAxMToxMTo1
MC4wMDAwMDAwMDAgKzAyMDAKKysrIC90bXAvc3JjX21vZC9TZXNzaW9uQ29udHJvbGxlci5jcHAJ
MjAwOS0wNi0wOCAwMjoyNzoxMi4wODI4MDMwMDAgKzAyMDAKQEAgLTg2Myw3ICs4NjMsNyBAQCB2
b2lkIFNlc3Npb25Db250cm9sbGVyOjpzY3JvbGxCYWNrT3B0aW9uCiAgICAgICAgICAgICBfc2Vz
c2lvbi0+c2V0SGlzdG9yeVR5cGUoIEhpc3RvcnlUeXBlTm9uZSgpICk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgIGNhc2UgSGlzdG9yeVNpemVEaWFsb2c6OkZpeGVkU2l6ZUhpc3Rvcnk6
Ci0gICAgICAgICAgICBfc2Vzc2lvbi0+c2V0SGlzdG9yeVR5cGUoIEhpc3RvcnlUeXBlQnVmZmVy
KGxpbmVzKSApOworICAgICAgICAgICAgX3Nlc3Npb24tPnNldEhpc3RvcnlUeXBlKCBIaXN0b3J5
VHlwZVFMaXN0KGxpbmVzKSApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlIEhp
c3RvcnlTaXplRGlhbG9nOjpVbmxpbWl0ZWRIaXN0b3J5OgogICAgICAgICAgICAgIF9zZXNzaW9u
LT5zZXRIaXN0b3J5VHlwZSggSGlzdG9yeVR5cGVGaWxlKCkgKTsKZGlmZiAtcnVwTiAvdG1wL3Ny
Y19vcmlnL1Nlc3Npb25NYW5hZ2VyLmNwcCAvdG1wL3NyY19tb2QvU2Vzc2lvbk1hbmFnZXIuY3Bw
Ci0tLSAvdG1wL3NyY19vcmlnL1Nlc3Npb25NYW5hZ2VyLmNwcAkyMDA5LTAxLTE3IDExOjU5OjMy
LjAwMDAwMDAwMCArMDEwMAorKysgL3RtcC9zcmNfbW9kL1Nlc3Npb25NYW5hZ2VyLmNwcAkyMDA5
LTA2LTA4IDAyOjI2OjUyLjQyNjgwMzAwMCArMDIwMApAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQg
U2Vzc2lvbk1hbmFnZXI6OmFwcGx5UHJvZmlsZShTZXNzaW8KICAgICAgICAgICAgIGNhc2UgUHJv
ZmlsZTo6Rml4ZWRTaXplSGlzdG9yeToKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIGludCBsaW5lcyA9IGluZm8tPnByb3BlcnR5PGludD4oUHJvZmlsZTo6SGlzdG9yeVNp
emUpOwotICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZXRIaXN0b3J5VHlwZSggSGlzdG9y
eVR5cGVCdWZmZXIobGluZXMpICk7CisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNldEhp
c3RvcnlUeXBlKCBIaXN0b3J5VHlwZVFMaXN0KGxpbmVzKSApOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUHJvZmlsZTo6VW5saW1p
dGVkSGlzdG9yeToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34360</attachid>
            <date>2009-06-08 09:19:15 +0000</date>
            <delta_ts>2009-06-08 09:19:15 +0000</delta_ts>
            <desc>Proof screenshot.</desc>
            <filename>konsole_rss.png</filename>
            <type>image/png</type>
            <size>37450</size>
            <attacher name="Artem S. Tashkinov">aros</attacher>
            
              <data encoding="base64">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
gg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34361</attachid>
            <date>2009-06-08 09:52:08 +0000</date>
            <delta_ts>2009-06-08 09:52:08 +0000</delta_ts>
            <desc>ms_print for Konsole </desc>
            <filename>massif.txt.bz2</filename>
            <type>application/octet-stream</type>
            <size>9150</size>
            <attacher name="Artem S. Tashkinov">aros</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34367</attachid>
            <date>2009-06-08 15:10:32 +0000</date>
            <delta_ts>2009-06-08 15:10:32 +0000</delta_ts>
            <desc>big_file :)</desc>
            <filename>big_file.bz2</filename>
            <type>application/octet-stream</type>
            <size>36970</size>
            <attacher name="Artem S. Tashkinov">aros</attacher>
            
              <data encoding="base64">QlpoOTFBWSZTWQBSN+0CUVtfgAAQUAf/8D/v34C/79/xYG68AAAAAAAPsOJ4AAAAHB4AAAAAAQgA
u8kkAAA8AAAQA4B4AABIAAAKAAAAAD4OgCRAD5SKCUkQaAAAoWwBvPKUpQClF4cgHABGI8nz5JJI
okkkkSYeQDuS+y2aSaBw8gGAAIZAMAAQyAYA8MOQDACGQDACGI+TgBDkAwA+AAAAAAAAAAAAAAAA
AAAAAAAAAAASqn5KGf5VKSqP1CaAyeoA0YgMTEDBqqef6qCf/qqpVGIGmmgAAaNA0AAGntVKlUGn
6T1TRgEaDJiYgYmAJphJ6qVI0T/9VSinqemgIaaaNoAAJppiAj9VU9KMf+pSpUBkwCYmjIyYAE0x
NApJUhMhNGSYjIAp4U1PKfqjxNHok/KT6/+NVra/m/0/+fm/UfxXvAQf1vm/R9r9tF5fK/Sv2F+p
fsr9pftr8L8ly8uXLly5cuXL7rly+Fy5cuXLly+y5cuX0XLly5cuXyuXLly+q5cuXLl9Vy5cuXL5
XLly5fRcuXLly5fZcuXL4XLly5cuXL7rly8uXLly5cuXL8lyLly5cuXLly5cvuuRcvhcuXLly5uf
kuec5znOc591znw5znOc59lznPo5znOc+VznOfVznOc+q5znOfLly5cvsuXLl9Fy5cuXLl8rly5c
vquXLly5fVcuXLly+Vy5cuX0XLly5cuX2XLly+Fy5cuXLly+65cvLly5cuXLly/Jci5cuXLly5cu
XN+bJYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMY
xjGMYxjGMYxjGMYxjGMYxjGMYxjGMYjEREREREYiIiIiIjEREREREYiIiIiIjERERGMYxjGMYxjG
MYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxksYxjGMYxjGMYxjGMYz8+/DfhvMbzfhvw34b8N
+G/DfhvzN+Tc3m5ubm5ubm5ub7tzc3w3Nzc3Nzc3N9m5ubm+jc3Nzc3NzfLc3Nzc31bm5ubm5vq3
Nzc3NzfLc3Nzc30bm5ubm5ub7Nzc3N8Nzc3Nzc3Nzfdubm83Nzc3Nzc3Nzfk3Mbm5ubm5ubm5ubm
+7cxub4bm5ubm5uXN+S5eXLly5cuXLm+65cvhcuXLly5c32XLly+i5cuXLlzfK5cuXL6rly5cub6
rly5cuXy3Nzc3N9m5ubm+jc3Nzc3NzfLc3Nzc31bm5ubm5vq3Nzc3NzfLc3Nzc30bm5ubm5ub7Nz
c3N8Nzc3Nzc3Nzfdubm83Nzc3Nzc3Nzfk3Mbm5ubm5ubm5ubvxqtbf8P0fH0/58v/3vp/+XqlVXz
erGfN83zfN83zfJ9j1ezEREREToRNERERE+iInBERET4IiJ7ERET2IiInwRETgiIiJ9ERNERERE6
ETBERERE7EERERERE6EE0ZmZmfM4APccgPMIDvB0DrA7ZmbzMzWZmZm7zMzdZmZm6zMzN3mZmszB
ET6IiaIiIiJ0ImCIiIiJ2IIiIiIiJfvYfvZmG4bhuG5lllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllk7O3zUIX1t39oSvthKf8X0Wvn8PS+n18qq9m2lVb9KvyRK0/2/D8CSvqZQhZQhfs0C
qfKn0e96Sqr0hKf8vJ9vm9L+3nR+K8PW9YSntCV8XyuNndzWNmsbNY2a1EyiZRMomUTKJlEyiZRM
omUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZ
RMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEy
iZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJl
EyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTK
JlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomU
TKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMo
mUTKJlEyiZRMomUTKJlF69vUTKJlEyiZRMomUTKJlEyiZRMomUTKJlEyiZRMomUTKJlF6qIXtZN5
t/XbyfJEp9cIhaEq80B8KPR5RVV7vTsmqFV7/jt0f39GbbjPaEq9oB5uRK8nqlCr1UIXooQvCotX
xqtbStX3zT5/V79nz5v9O/T+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAffY8339P+l9qJXPL+0JT6UiF+d+Rh+j/IfuP3H+g/c
fuP8R2JgiIiIidCJojMzM3mZmszMzN3mZm6zMzN1mZmbvMzNZmZmbzMzaIiIiJ0ImCIiIiJ2IIiI
iIiJ0IJoiIiInY4qqvuOQHmEB3g6B1gdszN5mZrMzMzd5mZuszMzdZkRE+CIicERERPoiJoiIiIn
QiYIiIiInYgiIiIjma/T/Hx+L8eqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqve973ve973ve973ve973v//u
LJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJfPvn8/n8/l8/n+H8XxwAenIDwQHYdA6B2EB4OQHpwAfGAD1nID
44APTkB4IDsOgdA7DwQHYdA6B2EB4OQHoAGAB9AD44APTkB4IDsOgdA7CA8HID04APjAB6zkB8cA
HpyA8EB2HQOgdh4IDsOgdA7CA8HID0ADAB+D6/Dv4pQq4CqfryhC+i/XCU/GEp90RC8PvAH6v+6h
C1H3vy8286P0SSv06U/Q+MXUfXPld+S/VCU+KJXmf1v9b/e971+O/b8PUCqeFCF/3o965QhfvX2q
EL6z0hKee80Svr8lCF5UiF4Xzoz1RK3siVn+HmAPclCr4qEL7TzXlX9HvX1SSrx9cJTXPnWvtkmS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSJIiIiIiIkiIiIiIiSIiIiIiJIiIiIiIk
iIiDJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJkySSSSSSSSSSS
SSSSSSSSS/N+e959V74veXw+P5L11UV/lIq+EJTenKELiqqU641jWNY1jWNY1jWplMplMplMplMp
lMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMpl
MplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplM
plMplMpmZSZMmTJkyZMmTMpMmTJkyZMmTJmUmTJkyZMmTJkzKTJkyZMmTJkyZlJkyZMmTMplMplM
plMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMplMp
lMplMplMplMplMplMplMplMplMrWNY1jWNY1jWNY8lCLK+kpKSkpKSkpKSkpKSkpKSkpKSkpKSkp
KSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkp
KSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKTFJjGMYxjGMUmMYxjGM
YxSYxjGMYxjFJjGMYxjGMUmMYxjFJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl+u/g/g/in8P6Nbbb
ff7IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAqqpa221/D99+vLN99+vfrf8NfR9E9p4SSSSeknEkkk8pJ0kkk+Uknwkknwkknykk
6SSSeUk4kkknpJ4SSSSe1iSSSST0sTiSSSz2s8ZZZZZZZZvfpm5zMzMzefTM1mZmZu/plllnxlll
llnwsssss+ckk8pJ0kkk+Uknwkknwkknykk6SSSeUk4kkknpJ4SSSSe1iSSSST3yceMeEkkntPae
EkkknpJxJJJPKSdJJJPlJJ8JJJ8JJJ8pJOkkknlJOJJJJ6SeEkkkntYkkkkk9LE4kkks9rPGWWZm
Zm9+mbnMzMzN59MzWZmZm7+mZm6zMzN19MzM3efT6fR5STpJJJ8pJPhJJPhJJPlJJ0kkk8pJxJJJ
PSTwkkkk9rEkkkj6fT6AHxwAenIDwQHYdA6B2EB4OQHpwAfGAD1nID44APTkB4IDsOgdA7DwQHYd
A6B2EB4OQHoAGAA43AB8cAHpyA8EB2HQOgdhAeDkB6cAHxgA9ZyA+OAD05AeCA7DoHQOw8EB2HQO
gdhAeDkB6cAHaKqqqJgYIiIiInYmCIiIiJ0ImiIiIifRETgiIjN3mZm6zMzN1mZmbvMzNZERET6I
iaIiIiJ0ImCIiIiJ2IIiIiIiJ0IJoiIzM+ZwAe45AeYQHeDoHWB2zM3mZmszMzN3mZm6zMzN1mZm
bvMzNZmZmH0RE0REREToRMERERETvNmZmZmZm4ONwB8fHAB6cgPBAdh0DoHYQHg5AenAB8YAPWcg
PjgA9OQHggOw6B0DsPBAdh0DoHYQHg5Kq9Kqqqiqqr5EYGERERER2JgiIiIidCJoiIiInmZmszMz
N3mZm6zMzN1mZET4IiJwRERE+iImiIiIidCJgiIiIidiCIiIiI5vc2bnMzMzPmcAHuOQHmEB3g6B
1gdszN5mZrBERE+CIiexERE9iIiJ8ERE4IiIifRETREREROhEwREREROxBERERERP8PoD0evr7+v
v7+/v7+/v7+/jgA9OQHggOw6B0DsIDwcgPTgA+MAHrOQHxwAenIDwQHYdA6B2HggOw6B0DsIDwcg
PQAMBVfTMwDW7u7u7vu8VVV6rlVV5pAdh0DoHYQHg5AenAB8YAPWcgPjgA9OQHggOw6B0DsPBAdh
0DoHYQHg5AegAYAH0APjgA9OQHggOw6B0DsIDwcgPTgA+MAHrOQHxwAenIDwQHYdA6B2HggOw6B0
DsIDwcgPQAMAD6AHxwAenIDwQHYdA6B2EB4OQHpwAfGAD1nID44APTkB4IDsOgdA7DwQHYdA6B2E
B4OQHoAGAB9AD44APTkB4IDsOgdA7CA8HID04APjAB6zkB8cAHpyA8EB2HQOgdh4IDsOgdA7CA8H
IK9VVVVZVVVd5jAZlrxu7u7u/HAB6cgPBAdh0DoHYQHg5AenAB8YAPWcgPjgA9OQHggOw6B0DsPB
Adh0DoHYVVXmrlVV6qqqqyqqq+gD1tYZVV3duKqr0uqqv1XiqvxHQOgdhAeDkB6cAHxgA9ZyA+OA
D05AeCA7DoHQOw8EB2HQOgdhAeDkB6ABgAONwAfHAB6cgPBAdh0DoHYQHg5AenAB8YAPWcgPjgA9
OQHggOw6B0DsPBAdh0DoHYQHg5AegAsqqqv8M+phmYzMf3YZmMzH+eGZjMx/h5UzWZMyZkzJmTMm
ZMyZkzJmTMmZMyZkS0lpLSWktJaS0lpLSWktJaS0lpLSWkpmTMmZMyZkzJmTMiWktJaS0lpLSWkt
JaS0lpLSWktJaS0lMyZkzJmTMmZMyZkS0lpLSWktJaS0lpLSWktJaS0lpLSWkpmTMmZMyZkzJmTM
iWktJaS0lpLSWktJaS0lpLSWktJaS0lMyZkzJmTMmZMyZkS0lpLSWktJaLSWi0Wi0Wi0Wi0Wi0Wk
tFotFotFotFotFotJaLRaLRaLRaLRaLRaS0Wi0Wi0Wi0Wi0Wi0lotFotFotFpLSWktJaS0lpLSWk
tJaS0lpLSWktJaRMyZkzJmTMmZMyZlJaS0lpLSWktJaS0lpLSWktJaS0lpLSJmTMmZMyZkzJmTMp
LSWktJaS0lpLSWk2kS0lpLSWktJaS0lpLSWktJaS0lpLSyZkzJmTMmZP/ZKqPs+z7H7ft+37ft+3
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
VB6wlPE9yJXnL1+CJXnUIH9JQhdfB6oSnrCU0SoMvhPJ7jMYAZMlCr6qr6pQhfBfqvU49lCF5RfF
50VJ9JIP2jX2oSmmhKfWiVolQe3s9flCV7L7lCF4gVTyXlCU+FJVV4lVXkoQvOY/msOmuWuMcsOM
csOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOM
csOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOM
csOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOM
csOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOM
csOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOM
csOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOMcsOM
csOMcsOMcsOMcsOMcsOMcsOtcYcY5Yda4w61xh1rjDrXGHWuMOtcYda4w61xh1rjDrXGHGOWHWuM
OtcYda4w61xh1rjDrXGHWuMOtcYda4w61xhxjlh1rjDrXGHWuMOtcYda4w61xh1rjDrXGHWuMOtc
YcY5Yda4w61xh1rjDrXGHWuMOtcYda4w61xh1rjDrXGHGOWHWuMOtcYda4w61xh1rjDrXGHGOWHG
OWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHG
OWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHG
OWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHGOWHG
OWHLXLcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY5YcY
5YcY5YcY5YcY5YqqjqqkvN5v1Eqo/O+xfBfA9IFU/iyhC1Qhe55aoQsaKqv1fS7IlY+89VVX/+Yo
KyTKayQBG4DAorMr8AQCCgz//gf9u/AX/fv+DAhvwwAgegGAEAAwAAAAAAAAAvuAAAAAAAAABjKB
wJoDPpRSm2U2ymS9JDOnuzopSGHhYAtJGAIZGDmDoMJpQ1E3sDhDqqYPeAAAAABoAAAUAAAEAAAQ
AFgAAAAAGDmmJgATABMAAJgACYFSqZNG/1Uqp6oAAAAAAAAAKlP1KpSA0JpkGTAmgwBGIwABU1JV
IiehoEYAACBppiaYAApShAEmCaJkwQTZFPRomaNNop6IFSmpJM/2pSio9TQAAAAAAANB/g5DY6HV
4sY2NXcbjc3NhuY1an5NmzZs1xox8aih/O+bezGSFbmVSjcyJmcLcyqA2ZJPiMYkBuZJN7fswVDG
FNfnP7Tr76z0/TfqPy36r9Z+u/KfsO9PSSSST7pOEkkk+aScpJJOtJJ7SST3pJJ0kk50kknxJONJ
JJPqT1pJJJO1kkkkkn3WThJJJbvW9a1rWta1vutbjWta1rW+a1rc61rWtbrWta3vWta1veta1rda
1rW+a1rc61rWtbrWta3vWta1veta1rda1rW50kknxJONJJJPqT1JJJJ2skkknJycn/rtdrsX6mGr
Vo1O1XJW82TDBj9H+3c6PzcTG84HR0zxPJ2Hn6OnLOW2zXbNv+VSVWnM5jONRRpUUOTHqnBMmibl
vc69Yu0cEfBJR3JKOCpZVJVcSQRorarWkoao6n7G09SZNypQ3q+pJw+xo4bYc5xsmckkRJE1SUMZ
WMlAYykoYZKmMSoYyqYyk1NA0VwMhaKwjkqXfSUOJwGqqSq1KUPI2GtFR4G40q3UlDYxxspKNHBK
BNwUquVUlVvpKGtJQ85qNar0mJvmTxHabzad0xXzVivSrfOh+yeCSjS3vnSUO6qSq9HmmPU9D3Pc
9z2vc9rvT0kkkk+6ThJJJPmknKSSTrSSe0kk96SSdJJOdJJJ8STjSSST6k9aSSSTtZJJJJJ9snCS
SSd63rWta1rWt91rca1rWta3zWtbnWta1rda1rW961rWt71rWtbrWta3zWtbnWta1rda1rW961rW
t71rWtbrWta3OtJJPiScaSSSfUnrSSSSdrSSSSSc79I/ZZsDPOV9BII8yfnSUPnSUO+qSq/EKVX7
nR3+Sck5lhoczrPSnspKGySji4vK/vPzn+pvdXsnwV7ZFGtUlVsmVSVWqd9UlVtSUPEZMNx3GLGM
e+4NWGNWnVlShq10zRq1pPAKVWtUlVpDuZWeg5GK/FWh2HNxv/CVH1nxMNBznCvSko0PSlAnEKVW
iuxPlMOabxod5vPEsGV2mRUNCwaGBfypKGt4smMsYqoYyxkLwVqcHJ2u5j7rWwijZq2Y+RVR2q/F
X1PtV9Y0PcrQ+19rGPqe1WpoatFjYw3mx/JXNKBPWbcXPfx0489+n3acNNczMzOyUVKd1dMssssi
IiIiIiIiIiIiLLIiIiIiIiIiIiIiyyIiIiIiIiIiIiIssiIiIiIiIiIiIiLLIiIiIiIiIiIiIiyy
IiIiIiIiIiIiIssiIiIiIiIiIiIiLLIiIiIiIiIiIiIiyyIiIiIiIiIiIiIssiIiIiIiIiIiIiLL
LLIiIiIiIiIiIiIsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
sssssssssssssssssssssssssssssssssssssssssssiIiIiIiIiIiIiyyIiIiIiIiIiIiIWWRER
ERERERERERFlkRERERERERERER9TDbDzfUJnGDEJmbZpj2ey2tZaJEiRIkSJEiRLLRIkSJEiRIkS
JZaJEiRIkSJEiRLLRIkSJEiRIkSJZaJEiRIkSJEiRLLRIkSJEiRIkSJZaJEiRIkSJEiRLLRIkSJE
iRIkSJZaJEiRIkSJEiRLLRIkSJEiRIkSJZay0SJEiRIkSJEstZay1lrLWWstZay1lrLWWstZay1l
rLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWstZay1
lrLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWstZay1lrLWWskSJEiRIkSJEstEi
RIkSJEiRIi2tEiRIkSJEiRIllokSJEiRIkSJEj/c++dn0j5x9FIk4zE0Y5pscntP4NTc/Ax2u5ox
jg1tbkOFPyP0T8x7PuafmPqNOGmmmkREfciOCIiIiPmREckRERHWRER7IiIj3kRER0RERzkRERHw
iI4yIiIiPpEesiIiIiOyxERERERH3LEcEREREd5Z6yyyyyyyyz7llnGWWWWWWWfMsss5yyyyyyzr
LLLLPeWWWWWe8sssss6yyyyz5lllnOWWWWWWdZZZZZ7yyyyyz3lllllnWWWWWc5ZEREfCIjjIiIi
I+kR60RERER2WIiIiIiI7Tl6zjeseiIiIjsjvI9ERERER9yI4IiIiI+ZERyREREdZERHsiIiPeRE
RHRERHOREREfCIjjIiIiI+kR6yIiIiI7LEREREREfcsRwREREWd5Z6yyyyyyyyz7llnGWWWWWWWf
Msss5yyyyyyzrLLLLPeWWWWWe8sssss6yyyyz5lllnOWWWWWWdZZZZZ7yyyyyz3lllllnWWWWWc5
ERER8IiOMiIiIj6RHrRERERHZYiIiIiIinLhyenKSSSdp6SSSSfUnCSSSfEk5SSSdJJPaSSe0kk6
SScpJJPiScJJJJ9SekkkknaJJJJJPqJwkkknaekkkkn1JwkkknxJOUkknSST2kkntJJOkknxJOUk
knSST2kkntJJOkknKSST4knCSSSfUnpJJJJ2iSSSSTvv1np27du3bt2nenpJJJJ90nCSSSfNJOUk
knWkk9pJJ70kk6SSc6SST4knGkkkn1J60kkknaySSSST7rJwkkkt3reta1rWta33WtxrWta1rfNa
1uda1rWt1rWtb3rWta3vWta1uta1rfNa1uda1rWt1rWtb3rWta3vWta1uta1rc6SST4knGkkkn1J
6kkkk7WSSSSSe05Tx6cOdx6z08ePH148dvHenpJJJJ90nCSSSfNJOUkknWkk9pJJ70kk6SSc6SST
4knGkkkn1J60kkknaySSSST7rJwkkkt3reta1rWta33WtxrWta1rfNa1uda1rWt1rWtb3rWta3vW
ta1uta1rfNa1uda1rWt1rWtb3rWta3vWta1uta1rc6SST4knGkkkn1J6kkkk7WSSSSTk9hyNT2Fe
eUo9x3Dc3MY2TtaN4FValSqvbSlVfwtx9BoVQ0NFpSa+KfkfzVvpzvJjyeTyeTyeT8n6T5mtmTZs
2ZMmTWta/J2Pbnt7j29vb29vb29tfU2cmzZsyZMmta17ns4k826fCdZoYdTqdTqdTicjqcJyOU0m
xsbGRkZGxpppX3ix04dOnTp06dOnzGmxkbGxsZGRkaaaaedVSqqvlVVr6a41rWMY1rWrsriqqqqq
+ZrZk2bNmTJk1rWq7LOuOuuuuuuuvma2ZNmzZkyZNa1r6fTjjMMOHDjjjjjiSTuOIiSSSSSIiJJJ
JJIiIkkkkkiIiSSSSSIiJJJJJIiIkkkkkiIiSST5vOSRERJJJLS0RFkktLfJh8j2ePSqqqrX1NnJ
s2bMmTJrWtVKsVVVVVVqypZZZkyZKqq2vat+h1tjrHU6nU6nE6nU6nI4zlMjY2NjIyMjTTTSuzp2
HTp06dOnTpp9RscjY2NjIyMjTTTSqpVVVVVdVVKqsYxVVVqxVVVVVa+ps5NmzZkyZNa1quzrsddd
ddddda+ps5NmzZkyZNa1qyNbMmMnYwyPIwyPGMZMZPJjJh4cOHE4cOHE4cOE0RE0RE0RE0RE0RE0
RE0RFnntO3b2cWdkWecntLdpaOPHjzeIiaIiaIiaIiaIiaIiaIiaIiaI8ec9u0taOyyOyycktadu
0eIiaIiaIiaIiaIiaIifIjiInI4iJxHERNERPgt8Nzt2jssjssnJLWna3jjx480RE0RE0RE0RE0R
E0RE0RE0RE0ePHnPbtLWjssjssnJLW57do8RE0RE0RE0RE0RE0RE0RE0RHE4cOHE4cOHHjk8mMmT
DyMjDssnJLWna3jjx483jx4miImiImiImiImiImiImiImiInnt2lrfSZx8Z2R8ZZOSWtO1o8RE0R
E0RE0RE0RE0RE0RE0RE3wRhhw4nDhw49OT1MZMmHkZGHZZOSWtO1vHHjx5vHjx5vlPlbx4iaIiaI
iaIiaIiaIiaIiaIjz5Ht8mlrNHZZHZZOSWtO3aPERNERNERNERNERNERNERNERJw4cOJw4cOPHJ5
MZMmHkZGHkZGPGMZMmPJk4eHDhxOHDhxPh8SR48RNERNERNERNERNERNERNERxhH4faPs+n4fh+H
4fh+HZVlSyyzJkyePHjx8ZJPW5SSSTvTWtbzczyeSqquoeIxHTsOlKUp9FNPcUsVFixYyMjIpSlI
sRERERH4zw8zxnmeZ5nGcZxnh4eHhJPSSSSTtprWuvHjxVVVWK1rWta1ZVlSyyzJkyVVVrY1rWta
1rsqypZZZkyZKqq+lmzGTJh2MjDyMjHjGMmTHkycPDhw4nDhw4kRE0RE0RE0RE0RE0RE0REIsst5
btLWjssjssnJLWna3m7LLLFllliyyyxZZZYssssWWWWLLLLFllljzJpNJkyMmTJlsy2tGWloazWY
eRkY48Y5MmPJk4nkcjkchyORzLFllliyyyxZZZYssssWWWWLLLLFllliz2ez252tLWizsizsk5LW
529j2WWWLLLLFllliyyyxZZZYssssWWWWLLLLFllliyyy3nt2527cWdkWdknJa0t2Oz2ez2PZZZY
ssssWWWWLLLLFllliyyyxZZZYssssez2ez252tLWizsizsk5zt2529j2WWWLLLLFlllj3Z2WW+BN
2WWWLLLLe3w3aWtFnZFnZJyWtLdotaWtFnZFnZJyWtLdprWlrfN47PjIs+Mk5LWlu0taWtFnZFnZ
JyWtLdvlc57fK9vb217e2vqamzZss8nk8lVVVVaya1rWta+Zs2cmzZ5LPJ5Kqq+6Tnx06dOR0p8F
KU00+o1GxsbHuPI8jyKUpSlKcjTTTTSIjvJllln4znOc5zw8PDw8ePE4SSST6k9JOX5HLl48ePHj
x49bxJJJO9Na1vNzudzvHjx48ePHrSSSSd6a1rfk3O53O8eKrWzZjJkwyOxhkeRjHjGTJjN2+Xnb
tLWiz4yLOyTktaW7fA527NLWiz4yLOyTktaW7S1pa0WdkWdknJa0t2lrS1os7Is7JOS1pbt8nO3a
WtFnxkWdknJa0t2lrS1os7Is7JOS1pbtLWlrfSZx2fGRZ8ZJyWtLdpa0taLOyLOyTktaW7S1pa0W
dkWdknJa0t2+gfd6en3ZPu+H3fd93tr5mzZybNnks8nkqq8ePHjxOdJJJ81rW41udzvNzvHiq+6T
p06dMjpSlKU0+Y2NjkbGx5HuPI8ilKUpSlMiIiIiPuWWesss5z8ZznOeHh4eHjx48TlJJJ8SThPH
jrxVVVVVZK1rWta+Zs2cmzZ5LPJ5KqqqqrJrWta1r5mzZybNnk7PJ5Kqq1s+pjJkwyOxhkeRJyWt
Ldpa0taLOyLOyTktaW7S1pa0WdkWdknJa0t2lrS1os7Is7JOS1pbtLWlrRZ2RZ2SclrS3aWtLW+h
x2fGRZ8ZJyWtLdpa0taLOyLOyTktaW7S1pa0WdkWdknJa0t2lrS1os7Is7JOS1pbtLWlrRZ2RZ2S
clrS3Trx4+HXk6666619ps2bMmzyeSzyVVVVVVa9TWta18TZs2ZMmTZZVVXxPZMPnp06dPR5HyUp
TTT7RsbGxkbHkeR7jyKUpSlKeHhzkRERHzLLLOMs5znPxnOeHh4eHjx48eJ7SSTpJMYxrqqqqqqr
yVrWta+02bNmTZ5PJZ5Kqq9KqqryfDWta19ps2bMmzyeTs8lVVa2fMxkyYZHYwzOyTktaW7S1pa0
WdkWdknJa0t2lrS1os7Is7JOS1pbtLWlrej2dkWdknJa0t28T2tLWizsizsk5LWlu0tae1o9nZFn
ZPJ7dpy3ty0tHsjsnJadpaW9x7I9k5LTtLS0dkdHGOOTjJxyccnDI4ZHGOOTjJ1j06669TrrrrXx
NmzZkyZNllVVe0nXXXXXVfEqq16mzZsyZMmzXZVV0cPPjwqOnDp06dPUfJ9FKafEbGxsZGRkbHuK
UpSlKeHh4e8iIiOssss4zjOMs9xSlKVVVVa+Gta16a1rGMa11VVVVVV6la1rXxNmzZkyZNllVVVV
VVeprWta+Js2bMmTJs7Kqq18OOOHY4ZHGOOOMccccXDw4eHGOOOMcccccMOGE5JOSSRxHE5JOSSR
xHE5JOSSRxHE5JOSSe48R4nJJySSOI4nJJySSbcRxOTjjHHHHHDDhhxjjjjHWPTrrrr4nXXWvU2b
NmTJk2asqqqqqq8T5pJzrWtxuNxrSebx4/Dej5z12jp06eHT5OnxHyfRpp6jY2NjIyMjY09xSlKU
pSlKfERER7yyyzjOM4yyPxnh4eFVVVVa+zWteNa1jGNa11VVVVVV8Sta16mzZsyZMmzVlVVVVVVf
E1rWvU2bNmTJk2a7KqtenHG4dOHhxjjjjHHHHHDDhxOSTkkk24jicknO4xxxw8OGHGOOOMcccccM
OHE5JOSSRxHE5JOSSfHx4jxOSTkknxceI8Tkk5JJ5x4jxOSTknHHDDhhxjjjjJI+GPTrrrrr7Sut
eTZs2ZMmTZrVqshVVVVVePu8TjWtbjcbjWknnjlw/Dcl4PqY6m86mpuOp1OpxOhvnU6HI1mxsbGR
kZGxpp2UpilKUpSlPtFKaeRsbGxkZGRsaadlKYqqqqqq+VaxrWsYxrWtdVVVVVVfaVrXk2bNmTJk
2a1arHXXXXXXXXX2nXWvJs2bMmTJs1q1WI1xxx5h04eHGOOOOSSRxHE5JOSSRxHE5JOSSRxHE5JO
SSRxHE5JOSSRxHE5JOSSRxHE5JOSTjzDw4eHGOOOMesY444eHDDjHHHGPJjHHHrD0cPDjHHHGPXX
jrrrrrrr5mtmTZs2ZMmTZrWrKnJxVVVVVV8zWzJs2bMmTJs1rZ7IiIiIiPueEcZZZZxmRkbGmmnu
KUpSlKUpT7kWcZZZZxnGcZZER+M8OuOuuuuuuuuvlrWNa1jGNa1rt27du3bt27fdLca1rcbjca0k
83iqqqqqr5mtmTZs2ZMmTZrWuytY444dOGHGOOOMeMY444eHDicknJJJtxHE5JOSSfDjxHicknPn
85JHiOJySckk+I48R4nJJySTxx4jxOSTkknjjxHicknJJPHHiPE5J5PjJPg8m+DxEjzyfCM+ufYr
zhSq3UNGGMK1jFLB5JQJ66ShgtSCew/SkoffRUP6GlJQ/I3J1VLDJSh8jH+6Sh+gCNk/c3m4YYqk
qv1qpKrBVDgNTaMONUlVupKH+6ShwpKH3VSVXhIo5SKOBiu+qSq/Skof6pKHmq/knZJKX9gEfjVS
VX60lD/VJQ5npTszsanOd1JQ9BEE1qyJKLoT/E1qlDyP2klSnoTWazKSjKijHQxKBPRSUNquE6Hi
FQ2MDdVSVXoqkqtjnP3n7TU5SKN9JQ8KShlJQ01M0OCfSNRDRJRiKVWxsOqQ6pompaxQR4UlDLYb
DamH0mR9FFQw2m0oqU+Y1TlSUMTacjpMlKlkypk9p8z+ifBjHvdqqSq/vFzDJ8L+p/mSof3V8x3X
8TinuTgnRWpXKlUNQKq4qaq4JJ6S81SoYpKGlQSnJX8H+CsJ1L8IVDY1aN6u84JvjfJSi/ON5qlA
m8c1fmsmxivOERsudUlVhZVJVY8aShlUlVskoyPadGGOCdFbFcIsK8xWKxWK9CqSqxJRomVMMTZW
UlDKpKrfVKHAKhrGBhqBVXG9hxLKShkcjgmGzulKMpKG8ioampgqhgcjYkEeJ3PwXYyChoYtLcY1
qKGrVNSQRqjJFH0DuJSq8TaXUxJRweKaE4VSVWicDeboVDRNgpVeUij5aHBRJGF8aSh66Sh/xXA6
nUmlUlV9p0q1elESRERH+M7cHyG+DzM2NVb42kqHYd87zuN6ei6SKOQUqvE8DQ9ipdUlGKwrgdDC
7E9icNaKhxEgm5OhsYxGUhMIkjI4UlD6ZFGUlDymDI8yJCfeMhEr3phomUlDSSUvUmqeBNhoiUZF
UcjvpKGq1jYUpdUIR4uRsaPA0dUoE+k3gqHxTaNKFKrDKmxe47o3xErdSqHcetOqFQ8qscE41cBv
KrI7FUCbgiPmeQUquww7C5nwMNDWdycx6JKUXeVKq/GqSq1IqG83xErQd0es90VQmlVJVaSVD9Qa
G889JQ7nQx8jmbkqhjWqSq2GqpR7zL+h3mx9Uij1HOdivA6DJ3E9BkfA1TcMV9ZvpKHqNFUlV4t2
MailUWh5HoO01LaSofYcU0OE4pifaaR5k8atiaHWOCSjQcW8eyqSq6PMrUqt5srxQqpe0SjE4NUa
hSqySJ2G+UoREINsIttmwhBtj8DYw+s30VDsSbk3m84Kw40lDxHSCqlpd4wgmH3UlDnUqMTvjjVy
qqhxpKGT/s6TYt0kQueKEjQeKfzTsVLimg0SUbDFbk0TvJ9iUCe8+8npTlSUPfIo4pQJ9w9puq76
pKr2q3S7ri0kifSran2nmLBojQbBSqyVUanZaxUqvsNE5CQT2mqvlV7yvMOVUlV9hdVRUH/x1VSV
XRO2RR6qKjtMqKMMqlHE9A1EI6SqjQKVX9T2ncrerKpKrwk9RW+VUfClUMNBgFVYWJ3lagVVoJBN
QEb1UlVqpuPKqSq6x5JKNStFJQw+g4nsVLgriP+1FD4GJkpQx5HE4Suo50lD1VSVXUSCaJKNRIJz
SGJgNxHYPrAqraKqfllSRG1UlV8p4q1OMUEZSUMVKHBJRpJKWHaZWK8DQcxuNx2Iiam6Nxqesbyt
8tpFG1zLBCU3J8Hxy0kkkkkkkkkktJJJJJJJJJJLSSSSSSSSSSS0kkkkkkkkkktJJJJJJJJJJLSS
SSSSSSSSS0kkkkkkkkkktJJJJJJJJJJLSSSSSSSSSSS0kkkkkkkkkkpaSSSSSSSSSSWlpaWlpaWl
paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWk0WlpaWlpaWlpaWlpaWlp
aWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaSSSSSSSSSWkkkkkkkkkklpJJJJJJJJJJSSSSSSSSSS1
mNj6+c503ysw+2e1SVWo4KoI4mBSq1tyZNqqVVzaGNFKg4plSKwrBiJlQK1qkqtk0klLje6FFTRN
9FQxOhhNyLgnqpVDB1JSq6TdESuw6OAykoapvSUdhwJ1LrSxJRvqkquJyV8VUlVxHExXI0OY7FJQ
1pKGVBKewtKuB2nIdHVjKsSgT3k4G5VJVdE0jgPvKroBVW5O2boiVtHOBJdqSjKglNjyK9R5pSj1
mybAVVykUcx1TG+koYFU9OVJEczgXCLbCJhs2QX1hxy2SKcaFvaEk0k0k0k0k0k0k0k0k0k1rQkm
kmkmkmkmkmkmkmkmkmtaEk0k0k0k0k0k0k0k0k0k1rQkmkmkmkmkmkmkmkmkmkmtaEk0k0k0k0k0
k0k0k0k0k1rQkmkmkmkmkmkmkmkmkmkmtaEk0k0k0k0k0k0k0k0k0k1rQkmkmkmkmkmkmkmkmkmk
mtaEk0k0k0k0k0k0k0k0k0k1rQkmkmkmkmkmkmkmkmkmkmtaFrQkmkmkmkmkmkmkmkmkmtaFrQta
FrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaF
rQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFr
QtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQtaFrQktpJpJpJpJ
pJpJpJpJpJrWhJNJNJNJNJNJNJNJNJNJNE8HntveRpk8mkmkmkmkmkmkmkmkmkmtaEk0k0k0k0k0
k0k0k0k2jRospoiqXwMV1L3p4JpVsbjmhCPjVJVc6pKrceNVUcj6Dzz/8xQVkmU1kz6SwWA5COX4
AgEFBn//A/7d+Av+/f8GBC33xwBjHxA4AQAO4AAAADQAAADbgAAAAAAAHoAZx1F4GaCx9AooFAoH
fQGOgUCoe49DgDs6DgBAOwebgGBtIWBaQYG3lttwPgAAAAAAAAAAAACAAAIAC+AAAAAFGBUqnlQP
/KlKnqgANAAAAGgAAqVTCN/qqlU9Q0NGhtNTIA0NANAMAVKn+pUlIP1T1AAAAAAAAACpqSlKjCP1
TQAGjBANBoDRppgFKUJoIATQTCaaE8kaNTTNTD0k00CpFCmn+plKU2p6eqAADRggGmmgBY/oYOTR
t8HJw+I6OnTmHSnDg/e2atXzSUP4n1cWUKGzHGgDdgl84AbMEtmrKiGMA/n9T/s5OTJl6r13dey+
y9t23uuTnZc7nc7nc9a1vi1uNa1rWtb2ta3Ota1rW7Wta3Wta1rdLWta3eta1uVrWtae0k4SSST4
k9JJJJPESSSSSfEThJJJPE9JJJJPiThJJJPaScpJJO0knSSSdJJJ2kk9pJykkk7SSdJJJ0kknaST
la1rWt71rW4Wta1rW+a1vS1rWta1vNZbJkyZMmTJkyb9z3PKf3KccXwpxxfD7STXdVVVVVVVXg6R
RQp/Z9j4m31MKeh4Ntvgez3Hx6ays55cc1z/2IkSSY7SnrCJGiSh7DgMNE5z7Bdw4J8aSjvpKOap
ZJSq4yoI0VsWqShqnQ/Y2PYMOCpQ3V99mfsvwudtjDnOAmckkRJE1szYSEtm220tmbCINpYzCTBI
Z44NFcTK0rKplYVzVLvpKHJxGsSlVrKUPM2NalR3nA0LgUobMhUY3oQTYlKrnJSq4JKGqpQ9BqNV
PWYNzDxO43NjvMV9VYr1K3Oo/YeNJRu+qpQ8pKVXpdsy9d6b4Xu33b8W+7fi3i3rWta1rWt8Wtxr
Wta1re1rW51rWta3a1rW61rWtbpa1rW71rWtyta1rW9pJwkkknxJ6SSSSeIkkkkk+InCSSSeJ6SS
SSfEnCSSSe0k5SSSdpJOkkk6SSTtJJ7STlJJJ2kk6SSTpJJO0knKWta1veta3C1rWta3zWt6Wta1
rWt5rLWta1rWtbl/CfbsIJ6CvWqgjtH6qlD6pKHhJSq/MlKr/R6k4jkMNDkdD1D3KlDako7Xof0P
1P7HB7j4q98SjtkpVbDCUqtR3yUqtolDxGGODuYY3MY9rJENGNGKrwJSq2kpVaKeZxMV+atDqPi/
hJUfJ82ORueqko0PVQgnElKrQuofQw7BuaHebvEYYu4yohosGhgH4xKHi2YxjKSGMYxB7FanFzdr
uY/c1ZUUfSSo7lfmr7n4K+Q0PgrQ/B+DGPue9WpoatFjYw3Nj8UncggR+Az19HeX3eXz0+TVVVVX
mJCSNn7w/aIiIssssssssssssssssssssiLLLLLLLLLLLLLLLLLLLLIiyyyyyyyyyyyyyyyyyyyy
IssssssssssssssssssssiLLLLLLLLLLLLLLLLLLLLIiyyyyyyyyyyyyyyyyyyyyIsssssssssss
siIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi
IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi
IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiyyyyyyyyyyyyyyyyyyyIssssssssssssssssssssRN
ZZZZZZZZZZZZZZZZZZZZEWWWWWWWWWWWWWWWWWWWWfcw2w1XeYmlQRgyUqWI1NSERLLWWstZay1l
rLWWstZaJZay1lrLWWstZay1lrLRLLWWstZay1lrLWWstZaJZay1lrLWWstZay1lrLRLLWWstZay
1lrLWWstZaJZay1lrLWWstZay1lrLRLLWWstZay1kiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJE
iRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJ
EiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEi1lrLWWstZay1lrLWWiWWstZay
1lrLWWstZayyEWWstZay1lrLWWstZay0Sy1lrLWWstZay1lrLWWj+8/qOP3T9w+upUpSyKRanaOT
H4z/hwdPmKe98GjGOLU1MjJ0njPGeU652TnPKcjnPWWWWWWWWWfCyzjLLLLLLLPZZZZzllllllnZ
ZZZZ1lllllnRZZZZZ3llllnJZZZZZZ7IiOCIiIiPhEeiIiIiI8IRERERER8IRwRERER4R6IiIiIj
4RHBERERHsiI5IiIiOyIiOiIiI6IiIjsiIj2REckRERHZERHREREdERER2RERyRZZZZZ7yyyzgss
sssss+ZZZ6LLLLLLLLPMsWWWWWWWWWWTR6x6yyyyyyyyzws9ZZZZZZZZZ8LLOMsssssss9lllnOW
WWWWWdllllnWWWWWWdFllllneWWWWcllllllnsiI4IiIiI+ER6IiIiIjwhERERERHwhHBERERHhH
oiIiIiPhEcEREREeyIjkiIiI7IiI6IiIjoiIiOyIiPZERyREREdkREdERER0RERHZERHJFllllnv
LLLOCyyyyyyz5llnossssssss8yxZZZZZZZZZZ5x69dzo9Okk9pJ4npJJJJ8ScJJJJ7STlJJJ2kk
6SSTpJJO0knKSST2knCSSSfEnpJJJJ4iSSSST4icJJJJ4npJJJJ8ScJJJJ7STlJJJ2kk6SSTpJJO
0kntJOUkknaSTpJJOkkk7SScpJJPaScJJJJ8SekkkkniJJJJJPHj1nrebzebzebzea3i3rWta1rW
t8WtxrWta1re1rW51rWta3a1rW61rWtbpa1rW71rWtyta1rT2knCSSSfEnpJJJJ4iSSSST4icJJJ
J4npJJJJ8ScJJJJ7STlJJJ2kk6SSTpJJO0kntJOUkknaSTpJJOkkk7SScrWta1veta3C1rWta3zW
t6Wta1rWt5rLWta1rWtbpwxeevWceo9TTTT5mmn1NPpZ6llllll1rfFrca1rWta3ta1uda1rWt2t
a1uta1rW6Wta1u9a1rcrWta09pJwkkknxJ6SSSSeIkkkkk+InCSSSeJ6SSSSfEnCSSSe0k5SSSdp
JOkkk6SSTtJJ7STlJJJ2kk6SSTpJJO0knK1rWtb3rWtwta1rWt81relrWta1reay1rWta1rW+0jk
+02+/htj7j7w7dsY2TuaNyFVagqq94Kqv9jges0pIaGi0VXkn6H8auC6POye09p7T2ntPZ73s8MY
tjGLWtkyZMnvaN03Nxubm5ubm222PVimMYta2TJkyaNpPD8yaNxUbjcdRuNxs2bPBSnClKcOHCli
xYz8hjyKjUajUajUaNGjwYYWYYYWcOFLFix4zGZmZmZX0r0qq444qqrK09TTTTTTMz5VXFVXHHFl
llnitPU00000zM+VYtjGLWtkyZMnrPVUpUUVFFKVJaWlpZFkSWlpaWlkWRJaWn2O3LSyLIktLTnb
lpZFkSWlpzty0siyJLS07ty0siyJLS0tLSyLIktLS0tLIsiS0tLS0siyJLS0xNOx2e0000zMr6V6
VVcccWWWWZNNGmmmmmZmZmMzOOONO53O522k9bNm43DcdRuNxuNmzZT6KeilKcOHCxYsWPDRoaNG
jRoxjFPop6KUpw4cLFixYzMZmZmZnjMxmZxxxmZmaaNNNNNMzK+lelVXHHFlllnhpo00000zMr6V
TGMWtbJkyZO0ZMWuW0XFnBecec5ztzztzm9llliyyyxZZZYssssWWWWLLLLFllliyyyxZZZYsss8
ztzzScdkcWR45PFpy05vZZZYssssWWWWLLLLFllliyyyxZZZYssssWWWWLLLLe087c52eOOzxxzz
nbnO3nJvZZZYssssWWWWLLLLFllliyyyxZZZYssssWWWWPM8zzPN28ctJZxFnETktOdvOTeyyyxZ
ZZYssssWWWWLLLLFllliyyyxZZZYssssWWWW9p525LOIs4iclpLcnjdnmeZYssssWWWWLLLLFlll
iyyyxZZZYssssWWWWLLLLe087c59r2fDx2fDjnnO3OdvOTeyyyxZZZYssssWWWWLLLLFllliyyyx
ZZZYssssWWWW9vHLSfBnZ6OLPRE5LSW5JvZZZYssssWWWWLLLLFllltZZZNERNERN8ZxxE0RE+af
HbnOzxx2eOOec7c5285HiImiIm+p9W8eImiImiImiImiImiImiImiPDx7bx7LSNZxFnETktJ285H
iImiImiImiImiImiImiImiImiImiIntPO3Odnjjs8cc8525zt5yPERNERN9N9FHjxE0RE0RE0RE0
RE0RE0RE0R6PThH4nxHxPqfifififh+H4eMzGZnHDh9b631vrexa1vTnWtaSTxEkzrrrTTTTxDqO
I8jyHkaNGjR9GKfZjGGMY4cOGjRo0WLCxYsWLFKU+zGMMYxw4cNGjRoqq9Kqqqqr6Uqq8dddZmZp
o0ssssqqzMxmZxxxppppZYsssssqq8ZmMzOOONNNNPqZXJxxyPDh2eOOec7c5285HiImiImiImiI
miImiImiImiImiImiInt45aSziLOInJaS3J4eIiaIiaIiaIiaIiaIiaIiaIib6s44iaIifNPjtOd
njx2eOOTztOdvOR4iJoiJoiJoiJoiJ+3HERNERNERNERNERPm+JaSyOLI4k5aS05uPCJ8aOIiaIi
aIiaIiaIiaIiaIiaIiaIifN8c+be3nnZx8OzjxznnbnO3PN4iJoiJoiJoiJoiJoiJoiJoiJoiJoi
J3tOduSyOLI4k5aS05uPDw8aIiaIiaIifQjiI8bw8PDx63pLSWRxZHEnLSWnLSWk+HZx6LI9EnLS
WnLSWksjiyOJOWktOfFt25y0lkeiyOJOXLWuW4dTicSnmeZ5nmeXl5Y9WGMY7cOutNNNNNNLOLLL
Kqq+VV6VXWddaaaafaT17+R5HkejyNHvGjGKU+iilKfZ06dNGjRo0fWfWeiyyyyIiPCERH2HTp00
aNGjMyuKqqqq+VV6VXXjrrMzNNNPTSyyyqqvpSqrOuutNNNNNNPSyyyyqqvpSqrx111ppppZVcnH
HI4eHIjiTlpLTnjW8S0nv2ceiyPRJy0lpz4u3OZaSyPRZHEnLSWnLSWksjiyOJOWktOWktJZHFkc
SctJactJaT27OPRZHok5aS05aS0lkcWRxJy0lpy0lpPgzs49FkeiTlpLTlpLSWRxZHEnLSWnLSWk
sjiyOLW4XLWuW4dnpOZzNy251NzbTbHhivSq6zrrTTTT6k005NLOrLKqq+FVXFddZ1pppp+RJ8/H
x5HkeR5HD3nvPefR9H0R8Ij0RHJ9hycmjRo0aNGjRwsWLFKUp8lKeilOn2dOmjRo0ZmZXVVVVXwq
q4rrrx1mZmmmmnGlllVVfKq9KrrOutNNNNNNNOLLLKqq+VV6VXXjrrTTTSz5D460nr5PrPR7lkex
Jy0lpy0lpLI4sjiTlpLTlpLSWRxZHEnLSWnLSWksjiyOJOWktOWktJ7dnHosj0SctJactJaSyOLI
4k5aS05aS0lkcWRxJy0lpy0lpPbs49FkeiTlpLTlpLSe3Zx6LI9EnLSWnLSWksjiyOJOWktOee27
W9977nvvd4zxXwqq4rrrOtNNNNNNNNLPZVVVe6qrjjis0000932Thr5HI8jseR0+Y0YxSnwUpThT
p0+zpo0aNGjRo0aOlixSlKfBSlOFOnT7OmjRo0dzMzK9nwqqr3VVcccV4zMzTTTTTrSqqq+FVXFd
dZ1pppp7NNNNNOveVVVXwqq4rrrxw7nc7ncyY8LlrXFmi4s4LW4XLS05aS0lkcWRxJy0lpy0lpLI
4sjiTlpLTlpLSe3Zx6LI9EnLSWnPC3iWk9+zj0WR6JOWktOWkt4lnhxZHE55uTxbx52lpZ4s4nLS
3LS0+nZ4s8TlpblpaWcWcTlpblSlSlRZUWUtUpUt1LnU1NTU5aaZ4r3VVcccVmmmmn3J5PJ5PJ5P
JnuzMr2VVcccVZ40008Ho9GR5HqPI8jyPI9jwxjFPcpSnDhwp9mjRo0aNGjRo0exSlKU9ylKcOHC
n2aNGjRmZmZXuqqr2VVcccVXjMzTTTTTT2ZVVXuqq444rNNNNNNNNNNPZVVVe6qrjjivGmmml301
rWfbLOJy1rdrWtazss7Jy1rdrWtazss7Jy1rdrWtazss7Jy1rdrWtb52eyz2TlrW7S0tZ2WdluS0
7S0tHZHZOS07S0tHZHZOS07S0tNuyOyclp2lpaLii4palSlzUuampqamnTTtpjljFcccVZmmmmmm
mmmmV8KquqrFrWxkydu53NpR48ZiNRqOI4jqOo0dGjsww5MMMLLLMMjZo0aNGjRo0aMe5SlKexSl
OHDhSx9mjRozMzMyvhVV1VVxxxVV4zNNNNNNM92VVeyqrjjirM000000000z3YxjHLGMWtbGTTud
zuY5lKlGoo7JyWnaWlo7I7JyWnaWlpt2R2TktO0tLR2R2TktO0tLR2R2TktO0tLR2R2TktO0tLR2
R2TktO0tLR2R2TktO0tLR2R2TktO0tLR2R2TkpS4NS5qampqaaejTTHDGMWtbGSzNNOJppppppmZ
8sriqrjjismTJ27lNpZ47HhFNnobjiNxuPEbj1NnobNGHBhhhZZZhkZHho0aNGjRo0Yx8FKU6UpT
hw4UsWPDRo4zMzMzM+WVxVVxxxVVXjNNNNNNMz4ZVdVVcccVZZmmnHjyeTyeTyeTx4+HjxXVVXHH
FWWZppxFepLR9vI7JyWnaWlo7I7JyWnaWlo7I7JyWnaWlo7I7JyWnb7XO0tHsjsnJadvpudpaPZH
ZOS07ec7S0eyOyclp29ztLR7I7JyWnaWlo7I7JyWnb43O0pRxFFxS1KlLmpc5mpqammnbw0xaqrj
jirLLM0np6mmmmmmmZnyk4SThw4S1rfYWWWWWWREfD6I4IiODg4Isss+w0aNGjRo0Yxj5KU4UpSy
yzDIyMjZ3GlNNNNNNNNNPiThJOHDhJJ5vN5vN5vN48ePiVxVVxxxVllmaaaaaaaZmfKsWxjFrWxk
yZNO5i5SpRqKLinJadpaWjsjsnJadpaWm3ZHZOS07S0t9jj2R7JyWnaWlo7I7JyWnaWlvhx7I9k5
LTtLS3jj2R7JyWnaWlvHHsj2TktO0tLeOPZHsnJadpbxbm9kdNGhljSwnoPvV5EpVbA0YYxWqsIe
dCCfYqUMU0lVHuP7qlD8gqH8jRUofocB6VSwyUofR/hUof3iqGw/0bm4wyJSq/zEpVZJUOJsNjkS
lVwVKH+FShxSUP3EpVeMSjnEo4mK8CUqv7qlD+ypQ7S/EdkkpfziqH5xKVX+VSh/ZUodD1Dx7e1s
dR4KlD00kE1LEJRdYf1NVSh5v2klSnQampkpRkSjHQyhBPSqUNi4nUeUKhsYOESlV6SUqtjof6P2
NTnEo3SUPFUoYqUNNTQ4pqia4paUlGSUqtDUdSQ6k0TUtQQjwVKGjU+wweoKhhubSipT6jUc0lDB
sczoZEqWGKw959T9C97siUqv6E5lh/0f+KVD+ivqf7Nx7RuOatSvvSqGpCquKmqvBJPSXYKoYSUN
FQlOZf7P6lYHWX74VDY1aN1fkcU3G9CUX6jc1oQTcdFfqsNjC9EIjYdJKVWJhKVWPJUoZJSq2pKM
H8DqYzGcU6lbI4kxHaVisVg9MSlVlJRoMUwwbKxUoZJSq3CocYVDUYGGqCqvccRipQwcjcYubvhU
YqUNwVDU1MiqGBzNlUEeR3v3jsZBQ0MWjgapKGJpKgjRMiUesd4qVXkbJ1mUlHF5DRcZKVWg4m5w
qlDRNiUqvOJR9NDikkjC9nzSUMiUP/lcTrOsmklKr8DqLUn/D16ZlXQaUlGitxqpUOw8DwNu83HS
JRyJSq8TwND3KlxpKMVhW50MHYPcNFKhyhQTYdDmYxMpVGRJIwcUlD2xKMiUPQYMHYoEPblUS/IZ
SqK+0YaDElDSSUvYmo8SbDRSUZFUdDxSUNVqtqqUuwpCPJ0NjR5GjsVQJ7TcFQ+Y2GkpSqwxGxdp
3jeqJXAVQ7z2DrBUPMuI5FxG5VYOyogm8Ij6nmSlV2GHYOh8TDQ1O8dB6aEovCqlVfmSlVqCobm9
UStB3j4nwUETSJSq0UqH+QaG56ElDvdRj6OhwSqGNZKVWxrVKPtO81PjEo9ZzOtXgdBh3E8zF9pq
OBhfcbqlD1mkSlV4mlUqosPQeZ3Go2UqHyOI0OZyGD7zQdo8i2DQ6xxpKNDk3HtJSq6narUqtzZX
klKpe6JRicWqtSUqsqqjsN5ShhiwZCoYZVKGDIVH5Gxh9xuSodiTgNzc4qw5RKHkOpKVS8BrKqMP
xSUOkVRg8FyVzKqHJJQw/4dRsOAlUGDyH5jsVLiNBpSUbDFcBoPAPlQgnwPoHqHNUofCJRyVQJ+I
95wLvJSq96uBcWVVR7Vap952DBoGxKVWspRqaSqVXyOxOUKCe81V8y+0rsHOSlV8h1pSoP/TriUq
uofCJR7JKjuMiUYZCo5GkQjpKUeklKr9D3nerdWSUqvFHsK3lKPilUMNBkCqsGJ4FakKq0hQTVVU
N4lKrVTgeclKrrjzpKNStKJQw9ZyPcqXFXIf8iUPiYslKHmcjil1jokoewlKrrhQTSko1hQTokMG
A4Edh8iFVbIVP5YlIjaSlV8zyVqcgQjElDFShxpKNFJSw7jDFeJodBwOB2QE1OA4Gp9g3K3LaJR0
HBEZs+g+P2EktLS0tLS0tLS0tJLS0tLS0tLS0tLSS0tLS0tLS0tLS0ktLS0tLS0tLS0tJLS0tLS0
tLS0tLSS0tLS0tLS0tLS0ktLS0tIkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkRJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaWlpaWlpaWlpJaWlpaWlpaWlpaSWlpaWlpaWlpaWklpaWlpaWlpaWlljNj+N
pPqyHtNJKVWo4qIRyMJSq4DY2kVVdGixpJIOQyJKwrBiJlKqWpKVWyaSSl8BUVMTgSoYOowmyLce
xKoYOsVKrocKoldh0cRipQ1G9JR1nEOwdbKSjeSlVyOavnEpVchyMVzNDodhJQ1SUMVCU9xaFxO4
5nU62MVlCCfaHE4RKVXUNBxH0KrqIVVwHccKolbDoqol3UlGKhKbHmV6zthUfYbDYhVXOJR0HWMb
qlDKKJOZuN6VQwzMbNkyfwtzkJEnNuHJzWtC1oWtC1oWtC1oWtC1oWtC1oSTWtC1oWtC1oWtC1oW
tC1oWtC1oSTWtC1oWtC1oWtC1oWtC1oWtC1oSTWtC1oWtC1oWtC1oWtC1oWtC1oSTWtC1oWtC1oW
tC1oWtC1oWtC1oSTWtC1oWtC1oWtC1oWtC1oWtC1oSTWtC1oWtC1oWtCS2kmkmkmkmkmkmkmkmkm
kmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkm
kmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkm
kmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkmkm
kmkmkmkmkmkmkmkmkmkmkmkmkmkmkmta2taFrQtaFrQtaFrQtaFrQtaEk1rQtaFrQtaFrQtaFrQt
aFrQtaHORpEnNuZ2tw7duHbtwtaFrQtaFrQtaFrQtaEk1rQtaFrQtaFrQtaFrQtaFrQtaHjJRUvi
YrqL7U8BoWxwOZSEfMlKrpJSq4HjSqOZ6jyP/zFBWSZTWcO9TpUFz9HfgCAQUGf/8D/t34C/79/w
YEL+GAPvuEQOAEABgAAAAKAAAAXcAAAAAAAAoAZgHAQBH0oFAooFO4Ax0CilIYAgCAIAgCDGAIEA
QIAgT0VgPAAAAAAAAAAAAAEAAAgAHgAAAAACHNMTAAmACYAATAAEwKlQI3+qqpQAAPUAAAAA0AFS
p/qUqVGNPVGJgEwAjAAmEwAKmpKkpmJT1PUBoaAAMjQDQAAUpQmggJk0AKemhoJpPU08Uw9JPRAq
VNKB/5UklRppoBoAAAAABoP1OY2Oo63i2NXecDg4No4MatT821q1fcqUP6T6XGxRQ2ZcaUDdkk+6
KBsySbNWSkMYU/r9J/5OTkwx6Xqdz1vY9rte5yc2Obm5ubmkn1JykkknxJOkkkniSTtJJO0kk8SS
dJJJb5rWtyta1rWt91rcLWta1rW91lrWta1rWt9WW51rWta1vVuNa1rWta31a3Ota1rWt8WtbrWt
a1reLWtbvWta1u1rWtbzSSfEk6SSSeJJO0kk7SSTxJJ0kkk+JJykkkn1Jwkkkk9RJVVVVVevxPw+
0/3OnffO3Tt3zt+hJPPXVUqqvsPlsixP9X+2/B9z/N8yfiPsPuut4nk7Tz9Tq55z22a7Ztt/upSq
5uiy5UpGkpQ9c3TJpTdewXcOFPiqkd6qRzkrKlKriiCNKtqtZShrTofubT1pk4IqG9t/Fmz7H8jn
Zsw5zjZM7WkiJItrDbCTJYYEg2wibbJbbMJNstMzxwaVcTSrSpOcld8KhycRqqUqtUVDyNjVJR3n
A0q4BUNmEUY3iQTapSq51KVXCUoaoqHnNRqL1GJvMngdxubTvmVfSrKvTVvOo/dPBVI3fRFQ8alK
r0O0x6noex7XwfB8Hvepwkkkk+pOUkkk+JJ0kkk8SSdpJJ2kkniSTpJJJ81rW5Wta1rW+61uFrWt
a1re6y1rWta1rW+rLc61rWta3q3Gta1rWtb6tbnWta1rW+LWt1rWta1vFrWt3rWta3a1rWt5pJPi
SdJJJPEknaSSdpJJ4kk6SSSfEk5SSST6k4SSSSeokkkkk636h+OMwTzqvUiCO1P2RUPpKUPNUpVf
lUpVf6PTTinIYaHI6T0p7kVDZVI7XnfpP2n9pwe6fGr30pHbUpVbJlSlVqnfUpVbKlDwGTHB3MMb
zGPaykhoxoxJ5qlKrapSq0i8jiZV+VWh1HxfziUfJ9zHKbnpVSND0xIJxqUqtFdSffMOxNzQ7zd4
Jhi7jJSGiwaGFPtVKHhbMZYyFDGMYqeurU43N2u5j5tbIpH3xKO6r8qvqfZV8o0PhVofY+xjH1Pf
VrNDVostjDc2Ptq6RIJ7Dl8+rnz59NttduHV05a7ZmZmdlUVKeFOvLLLLIiIiIiIiIiIiIiyyIiI
iIiIiIiIiIssiIiIiIiIiIiIiLLIiIiIiIiIiIiIiyyIiIiIiIiIiIiIssiIiIiIiIiIiIiLLIiI
iIiIiLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLIiyyyyyyyyyyyyyyyyyyyyIssssssssssssssssssssiLLLLLLLLLLLLLLLLLLLLIiyyyyy
yyyyyyyyyyyyyyyIssssssssssssssssssssiLLLLLLLLLLLLIiIiIiyyIiIiIiIiIiIiIssiIiI
iIiIiIiIiLLIiIiIiIiIiIiIiyyIiIiIiIiIiIiIssiIiIiIiIiIiIiFltEREREREREREREWWRER
ERERERERERH4M22Hm/AymkoRkZQqWUazUyMMkiRIkSJEiRIkSyRIkSJEiRIkSJZIkSJEiRIkSJEs
kSJEiRIkSJEiWSJEiRIkSJEiRLJEiRIkSJEiRIlkiRIkSJFrLWWstZayWWstZay1lrLWWstZay1k
stZay1lrLWWstZay1lrJZay1lrLWWstZay1lrLWSJZay1lrLWWstZay1lrLRLLWWstZay1lrLWWs
tZaJZay1lrLWWstZay1lrLRLLWWstZay1lrLWWstZaJZay1lrLWWstZay1lrLRLLWWstZay1lokS
JEskSJEiRIkSJEiWSJEiRIkSJEiRLJEiRIkSJEiRIlkiRIkSJEiRIkSyRIkSJEiRIkSIsREiRIkS
JEiRIlkiRIkSJEiRIkSP6j+A7PofcfqaWk4mJox0TY5vefwanB+Jjuu9oxji1juOodGP0j8p+U9H
2U/KfUU6KUiIiI+5EckREREfMiI6IiIiPMiIjsiIiO8iIiPCIiOsiIiI+ZZZZzllllllln3LLOMs
sssssss9yZZZZZZZZZZZ9yxZzlllllllnpZxlllllllln0ss5yyyyyyyz4WWWdZZZZZZZ4WWWWd5
ZZZZZ2WWWWWeZERHzIiOiIiIjzIiI7IiIjvIiIjwiIjrIiIiPhERzkREREfSI4yIiIiI9LERERER
EQs4xwRERERHuRwRERERH3IjkiIiIj5kRHRERER5kREdkRER3kRER4RER1kRERHzLLLOcsssssss
+5ZZxllllllllnuTLLLLLLLLLLPuWLOcsssssss9LOMssssssss+llnOWWWWWWWfCyyzrLLLLLLP
CyyyzvLLLLLOyyyyyzzIiI+ZER0REREeZERHZEREd5EREeEREdZERER8IiOciIiIj6RHGRERERHp
YiIiIiIj3nji3WcOkkkk904SSSSfdJykkknzSTpJJJ5pJO0kk70kk8SSdaSST4knOkkkn1JxpJJJ
PVkkkkkn3ROUkkk9ThJJJJ9ScpJJJ8STpJJJ4kk7SSTtJJPEknzSTpJJJ5pJO0kk70kk8SSdaSST
4knOkkkn1JxpJJJPVkkkkknr1wcPXr169evU9ThJJJJ9ScpJJJ8STpJJJ4kk7SSTtJJPEknSSST5
rWtyta1rWt91rcLWta1rW91lrWta1rWt9WW51rWta1vVuNa1rWta31a3Ota1rWt8WtbrWta1reLW
tbvWta1u1rWtbzSSfEk6SSSeJJO0kk7SSTxJJ0kkk+JJykkkn1Jwkkkk9RJJJJJ245fhlzxxnHR0
zM+mZ9M+ldKqqqqr5VOUkkk+JJ0kkk8SSdpJJ2kkniSTpJJLfNa1uVrWta1vutbha1rWta3usta1
rWta1vqy3Ota1rWt6txrWta1rW+rW51rWta1vi1rda1rWtbxa1rd61rWt2ta1reaST4knSSSTxJJ
2kknaSSeJJOkkknxJOUkkk+pOEkkknqJJJJJPxI6Pxbb9PYbH7h+ePHjhw7Z3NG4iqtVFVXvUVVf
wOB6jSFDQ0WiTxT8z+lXCujyY8nk8nk/M/NPyT80+VlnJZZZxxxVVX5J5Hrp6ej09PT09PU9T1LP
pZ1LLLOOOKqq8PUk+fj90eR6Oj0ej4PR8nqPUeo+SxY5FixY4cOFKUpp9xo8Ojw8PDw8PI8jyPks
WORYsWOHDhSlKeTNGZmZmZX0rpVVxxxVVWVnTMzM000+VlnJZZZxxxVVXis6ZmZmmmnyss5LLvnu
c583zfN832vt0tFkWSS0tLS32cdkWSS0tLS0WRZJLS0tLRZFkktLS0tFkWSS0tLS3cdkWSS0tLS3
cdkWSS0tLS0WRZJLS0tLRZFkktLfbztLRZFkktLfQ30eO3s92ZpppZ9LOpZZZxxxVVWTMZmZmmmm
aaaNNNOOOMzMz1JPOHqOHqHo9Ho9Ho9R6j1Fj6LHUWLFjhw4UpSnkY0MYxjGjRosfRY6ixYscOHC
lKUzNGZmZmZ5MzGZnHHGZmZmMzMzTTSz6WdSyyzjjiqqvDMZmZmmmln0s6lllnHHFVVZFWcccnkc
OR3HDkdzjnOdvOduPERNERNERNERNERNERNERNERNERNERHntOdvZxZ2RZ47TxLclo48PDxvCImi
ImiImiImiImiImiImiImiPDxzx2kt8vj3OyPcsnaSWnnaPERNERNERNERNERNERNERNERNERNERP
J7c5249nZx7OzntznO3PO0eIiaIiaIiaIiaIiaIiaIiaIiaIifRHERL1PdJaPcsjssnaSWnLeHiI
nwjiInRxETRETRETRETRETRETRETRET4T43OduPZ2cezs57c5ztzztHiImiImiImiImiImiImiIm
iImiImiInnjtJb4s49zsj3LJ2klpy0eIiaIiaIiaIiaIiERFiyyyxZZZY+GdnZZYssst8J8bnO3H
s7I7LJ2klpy3jdnmeZ5jzPMssfefe3s9lliyyyxZZZYssssWWWWLLLLFllliyyy3yT5bnOzcezs4
9nZz25znbnnab2WWWLLLLFllliyyyxZZZYssssWWWWLLLLFllliyyy3k7SWjssjssnJJbyc7eN2W
WWLLLLHy3yUez2WWLLLLFllliyyyxZZZYsyZMjJkyZGTJky0J2tzdyc34fh+J+J+J4000aaacccZ
mZ8Iqq6dqqrLLLPqWLLLM7du2ZmeSTdHsjtHh7Q8MYxj6jRY9Ro0aGjRo4cOGMYxSwpSlKWLFj1G
jRoaNGjhw4YxjFVXUqqqqqvpSqrydu3bMzMxlVVWWWZppo000444zMyqVVVVllnjTTRpppxxxmZn
0yzjjk4eHI4dnI47cccduedpvZZZYssssWWWWLLLLFllliyyyxZZZYssssWWWWLLLLeT25ztHFkc
WTkktOW8bs8zzPMWWWWLLLLFllliyyyxZZZYssssWWWWPvZ2dlliyyy3wnxuW5x49nHjs5POTtzz
tN7LLLFllliyyyxZZZYssssWWWWLLLLFllliyyyxZZZbnafHbnbkWekWcSclpLeHssssWWWWLLLL
FllliyyyxZZZYssssWWWWLLLLFlllvPbnwPPbz6eOz4EWeknJaS3Ds8zzPMWWWWLLLLFllliyyyx
ZZZYssssWWWWLLLPMeZ5nmebnaS0iziLOJOc7c528PZZZYssssWWWWLLLLfiJuyyyxZZZb4fG5LS
LOIs4k5LSW5LSWkWcRZxJyWktyWktIs4iziTktJbktJaRZxFnEnJaS3Pi5zx8XxfKfb7n3PuWfUs
WWWZ27dszM+pMziuKqrLLLPmWWdLLO2du2Zmfck9/rw8PDqOzHuY0aNFj6iwsWLHqOzs7MYxjGMd
RSlKWLFix9RYWLFj1HZ2dmMYxmZXJVVVVXyqulV28nbtmZmZnTKqrLLLPqWLLLM7du2ZmZmdKqqs
sss+pYsss8du3bMzKsrjk44cjw4cjs447ccnHHNz5vO3JaRZ6RZxJyWktz1uduNLSLPSLOJOS0lu
S0lp8OOz0iz0k5LSW5LSWkWcRZxJyWktz4c7clpFnpFnEnJaS3JaS0iziLOJOS0luS0lp8WcdnpF
npJyWktyWktIs4iziTktJbkWktIs4iziTktJbnwzvrH27e77cfb3fb7n3PuWfMss6WWdvHbtmZn0
MzjK7VVlllnxLLLOLO3bO2ZmeSS+Hhw8OR4Yxo0aLHzFix0WLHZ6js7MYxjGMY5FKUsWLFj5ixY6
LFjs9R2dmMYxmZldyqqqr4VVcV27eTtmZmZmcZVWWWWfMss6WWds7dszMzMziqqyyyz5llnSyzt4
7dszMqz6ccnHfZ3HyEWeknJaS3J8zx25LSLPSLOJOS0luWtJaRZxFnEnJaS3JaS0iziLOJOS0luS
0lpFnEWcSclpLclpLSLOIs4k5LSW5LSWkWcRZxJyWktyWktPhx2ekWeknJaS3JaS0iziLOJOS0lu
S0lp7x2ekWek47ccnHHJ28du3w8dvHk8nk8lnxLLLOLO3bO2ZmZmZleyyyyyz3lllnHHFZmZnvPU
Th57dHh4eHh3H0Y0fUWLHxFixY4WOzs9R2YxjGMYxjuKUsWLFj4ixYscLHZ2eo7MYxjMzMr2lVVV
7qquOOK8mZmZmZnbKssss+JZZZxZ27Z2zMz2ZmZnb3WWWWWfEsss4s7dvHbMzKs+XFpFnyEWcScl
pLclpLSLOIs4k5LSW5LSWkWcRZxJyWktz3nbktO47PSLPSTktJbnhPNJaRZxFnEnJaS3JaTxaLPH
HZ455Pbk5bzkkjxHE5JOSSfLjxHicknJJI4jicknJJI4jjpx06dOPHHu8ePHs8nk08lnvLLLOOOK
zMzMzMzLPdZZZZ7SyyzjjiqzMz1Do864eI7Ojw8PDw9o8jRo0WPeLFixw4cKeoxjGMYxjGPaLFix
Yse8WLFjhw4U9RjGMZmZmV7yqqvZVVxxxVeTMzMzMz2aWWWWe8sss444rMzMzMzM9lllllnvLLLO
OOK8ZmZXu6dOcPDo7JySckkjiOJySckkjiOJySckkjiOJySckkjiOJySctLSOI4nJLctLSzizict
LctLSzizictLctLS23FnE5aW5aWlnFnE5aW48cePHjx5Pd5PJ5LPaWWWcccVWZmZmZmaWfCyyzuW
WWcccVVZmek6Pj5+keHh4dnse55HvHkaLFj2ixYscOHClPUYxjGMYxjR7xYsWLHtFixY4cOFKeox
jGZmZmV8SqrtVVxxxVV5MzMzMzT3aWWWe0sss444qszMzMzM091lllntLLLOOOKrxmZZ7Op06jw6
jh046nTqcdTpaWcWcTlpblpaW24s4nLS3LS0s4s4nLS3LS0s4s4nLS3LS0s4s4nLS3LS0s4s4nLS
3LS0s4s4nLS3LS0s4s4nLS3LS0s4s4nLS3B9XPq+r6vq8nk+Hk8lncsss444qqzM4mZmZmmmny0s
5LLLOOOKqqzOnpOGHwjp6Pc9HZ6PR6PR9R6j4j1HkWO4sWLHDhwpSnkYxjGMYxo0fEWLFjuLFixw
4cKUp5GMcZmZmZmfMyuKquOOKqq8mZmZmaafDSyzuWWWcccVVZmcePHjx48ePJ5Ph5PJZ3LLLOOO
KqszOIs6dTp1Hh1HDpx1pblpaWcWcTlpblpaWcWcTlpblpaWcWcTlpblpaWcWcTlpblpafPs8WeJ
y0tz69uWlnizictLctLSzizictLctLSzizictLctLT47PFnictLc+HHj3ePHk8nk+Xks5LLLOOOK
qqzJ06ZmZmaaafKyzksss444qqs9vyyIiPCLLLPufhlnOWWWcOHClKU9RjGMYxjRo0fMWLHIsWLH
DhwpSlPUY8nTx48ePHjx48fKq4qq444qqnr169evXu93u+rW51rW5cuUkn4MudMzM000+VlnJZZZ
xxxVVX1fR89y0s+pZxOWluWlpZxZxOWluWlpbbizictLctLSzizictLc+fblpZ4s4nLS3Pbty0+D
s+CzxOWlufd8vby0+R72fIs+CctLc925afB2fBZ4nLS3LS08dnizxOWluWnicPFnHOyW5Gec+urx
qUqtkNGGMVaqyKzyiQT2IqGRawqPcf3RUPwJUP+jRFQ/M4J3SVhlFQ++/wiof3VVDZP9G5uMMVKV
X+VSlViVQ4m0bHKpSq4IqH+EVDjKUPnUpVeFKRzpSOJlXmqUqv7oqH9kVDtq+1OykUv6qqh+SpSq
/yiof2RUOh6U8NexsdJ5kVD0EoJrVlKKLqJ+s1RUPJ+9SVKdE1msyqkZSkY8TIkE9CKhtVxnUeKl
Q2MHBUpVeipSq2Ok/1P3mpzpSN5Sh4IqGIqGmpocaaimuRWiqRlSlVoajqojqppTUtZII8EVDS1P
YZHpJUMN5tVFSn0Gqc5ShibTmdJlCpZMDJ7z6H5l73YqUqv0i5lk/7P/Sqh+lX0P4m6e1N051aqv
rVVDURVXFTWrzSU9BdhVQxKUNKglOav4P1VYHWX4pVDY1aN6vwOKbxvSii/aNzWJBNx0q/ZZNjFe
dSI2jpUpVYWVKVWPFFQypSq2VSMj+Z1MZjONOqraTjFhO1VlWVYPQqUqsVSNEwWGJtViKhlSlVuS
ocVKhrGBhqoVV7jiMRUMjkbplc3fQoxFQ3CqGpqYqqGBzNkQR4ne/FOxhFDQyNHA1lKGU0RBGlMp
SPUO+lSq8TanWYqkcXimi41KVWicTc4VKhom1SlV5UpGG4kkYXzlKHrlKH+6tzqOqppUpVfWdKtZ
P+T02kOg0VSNKt41KqHWd87zuN06UpHKpSq8x+Joe6SupVIyrFW50MHYnuTRKochUE2ToczGUyqU
ZFPlioiNI5SlD3UpGKJPLKhWTBkdoKE/AYURXxTDRMlKGlIpetNU8Kmw0SpGSlHM8JShqta2klLs
ghHi5mxo8TR1yIJ7TeJUPuTaNEVKrDJNi/kd8byIrhSqHeexOsKoeirinKriNyDI7JSCbqRH0PRU
pVdhh2DofUYaGs706D00oovMRVV+VSlVqFUNzeRFaDvj6j+UpQmipSq0KqH+UNDc88pQ73UY+90O
EBGNalKrY1Qo+J3mp9VKR6jnOurzHQZO6TyMr4mqcDFfI3RUPUaKlKrwNKUqiw855HcajYqofWcU
0Oc5JifYaR2p41bE0OuOKqRocm49tSlV1O2rUg3NqvGVSpe6lIxONrVrUpVYio7FuSoYZWDFKhhh
KhgyhR+BsYfUbiqHZKcE3NzjVhyVKHiOqVSpeYawqMPnKUOlJRieauVXOqqHKUoZP+Tqmw4IVQYP
FPyTskrimg0VSNhlXBNE8xPlEgnwPwJ6U5oqHwpSOUiCfaPecKu+pSq99XCXFiKj21a0+s7Bg0Rt
UpVawUamkCqvkdlOQqCe81q++X8lXYOdSlV8h10SoP/jrVKVXUnwpSPXUUdxlKRhlCjkaKhHSCj0
VKVX5nvO+rerKlKrwo9areCj4qqhhoMkKqwZTzKtRFVaCoJqoI3VKVWqnA8qlKrrjyVSNVWiUoYe
o5HukrjVyH/FSh8VgwlQ8jkcSusdJSh66lKrrFQTRVI1FQTpRGJiHBR2HyEVVtCiTWpSq+c8KtTj
JBGSlDEVDdVI0VFLDtMMq8xocxwOB1qVGpwjganrG6reW1KR0HCkJTgm1uyxiSSSSSSSSSWkkkkk
kkkkklpJJJJJJJJJJaSSSSSSSSSSWkkkkkkkkkklpJJJJJJJJJJaSSSSSSS0tLS1pLS0tLS0tLS0
tLWktLS0tLS0tLS0tJa0tLS0tLS0tLS1pJLS0tLS0tLS0tLSS0tLS0tLS0tLS0ktLS0tLS0tLS0t
JLS0tLS0tLS0tLSS0tLS0tLS0tLS0ktLS0tJokkklpJJJJJJJJJJaSSSSSSSSSSWkkkkkkkkkklp
JJJJJJJJJJaSSSSSSSSSSWkkkkkkkkkklpJJJJJJJJjGMmUpHoWMuyiPYaVKVWo4lQRyMqUquCbT
ZJVV0aVjSkUOSYELFWDKkxSqWtSlVtTSkUveVRUxOAqhidRlTaS3T1Kqhg66VKrpOEiK7Do4jEVD
VN1UjrOJOwddiqRvUpVcjnV81SlVyHIyrmaHQ7EpQ1lKGVBKe0tJcTuOZ1OtjKsiQT4E4nBUpVdS
aRxH3EHUIqrgndOEiK2jpUJLuVSMqCU2POq9J20KPWbJsIqrnSkdB1pjeFQxCJMyczcbyCMMgpTC
x9LaTwePDx4ttCeLaSaSaSaSaSaSaSaSaSaSaS2kmkmkmkmkmkmkmkmkmkmktpJpJpJpJpJpJpJp
JpJpJpLaSaSaSaSaSaSaSaSaSaSaS2kmkmkmkmkmkmkmkmkmkmktpJpJpJpJpJpJpJpJpJpJpLaS
aSaSaSaSa1ra1oWtC1oWtCS2taFrQtaFrQtaFrQtaFrQtaFrQktrWha0LWha0LWha0LWha0LWha0
JLa1oWtC1oWtC1oWtC1oWtC1oWtCS2kmtaFrQtaFrQtaFrQtaFrQtaFrQkmtaFrQtaFrQtaFrQta
FrQtaFrQkmtaFrQtaFrQtaFrQtaFrQtaFrQkmtaFrQtaFrQtaFrQtaFrQtaFrQkmtaFrQtaFrQta
FrQtaFrQtaFrQkmtaFrQtaFrQtaFrQkmkmkmkmktpJpJpJpJpJpJpJpJpJpJpLaSaSaSaSaSaSaS
aSaSaSaS2kmkmkmkmkmkmkmkmkmkmktpJpJpJpJpJpJpJpJpJpJpLaSaSaSaSaSaSaSaSaSaSaTw
3jw8eLbTJ4mkmkmkmkmkmkmkmkmkmktpJpJpJpJpJpJpJpJpJpJvGW22bN9s823yG+0z57KWxwOc
EI+dSlV0qUquB4VSjmek8Z/+YoKyTKayPPsiEgAHSr8AQCCgz//gf8u+AX/fv8DAJD4PoBXwAu8A
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>73539</attachid>
            <date>2012-08-29 07:05:48 +0000</date>
            <delta_ts>2012-08-29 07:05:48 +0000</delta_ts>
            <desc>malloc() testing program</desc>
            <filename>testmem.cpp</filename>
            <type>application/octet-stream</type>
            <size>1120</size>
            <attacher name="Neil Skrypuch">kde</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5o
PgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KI2luY2x1ZGUgPGxpc3Q+
Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4odm9pZCkKewoJY29uc3QgaW50IG1lbXNp
emUgPSAxMDI0KjEwMjQqNTEyOwoJY29uc3QgaW50IGNodW5rc2l6ZSA9IDEwMjQqMzI7CgoJbGlz
dDxpbnQgKj4gdG1wMjsKCWludCAqdG1wID0gKGludCAqKSBtYWxsb2MobWVtc2l6ZSk7CgltZW1z
ZXQodG1wLCAweGZmLCBtZW1zaXplKTsKCXByaW50Zigic3RlcCAxOiArMC41R1xuIik7CglzbGVl
cCg1KTsKCWZyZWUodG1wKTsKCXByaW50Zigic3RlcCAyOiAtMC41R1xuIik7CglzbGVlcCg1KTsK
CglpbnQgaXRlcnMgPSBtZW1zaXplL2NodW5rc2l6ZTsKCWZvciAoaW50IGkgPSAwOyBpIDwgaXRl
cnM7IGkrKykKCXsKCQl0bXAyLnB1c2hfYmFjaygoaW50ICopIG1hbGxvYygxMDI0KjMyKSk7CgkJ
bWVtc2V0KHRtcDIuYmFjaygpLCAweGZmLCBjaHVua3NpemUpOwoJfQoJcHJpbnRmKCJzdGVwIDM6
ICswLjVHICgrdGlueSBsaXN0IG92ZXJoZWFkKVxuIik7CglzbGVlcCg1KTsKCglmb3IgKGxpc3Q8
aW50ICo+OjppdGVyYXRvciBpID0gdG1wMi5iZWdpbigpOyBpICE9IHRtcDIuZW5kKCk7IGkrKykK
CXsKCQlmcmVlKCppKTsKCX0KCXByaW50Zigic3RlcCA0OiBtZW1vcnkgZnJlZWQsIGJ1dCBubyBj
aGFuZ2UhXG4iKTsKCXNsZWVwKDUpOwoKCXRtcDIuY2xlYXIoKTsKCWZvciAoaW50IGkgPSAwOyBp
IDwgaXRlcnM7IGkrKykKCXsKCQl0bXAyLnB1c2hfYmFjaygoaW50ICopIG1hbGxvYygxMDI0KjMy
KSk7CgkJbWVtc2V0KHRtcDIuYmFjaygpLCAweGZmLCBjaHVua3NpemUpOwoJfQoJcHJpbnRmKCJz
dGVwIDU6IFwiZnJlZVwiIDAuNUcgYWxsb2NhdGlvblxuIik7CglzbGVlcCg1KTsKCglmb3IgKGxp
c3Q8aW50ICo+OjppdGVyYXRvciBpID0gdG1wMi5iZWdpbigpOyBpICE9IHRtcDIuZW5kKCk7IGkr
KykKCXsKCQlmcmVlKCppKTsKCX0KCXRtcDIuY2xlYXIoKTsKCW1hbGxvY190cmltKDApOwoJcHJp
bnRmKCJzdGVwIDY6IC0wLjVHXG4iKTsKCXNsZWVwKDUpOwp9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>