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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>34081</bug_id>
          
          <creation_ts>2010-01-25 04:01:12 -0800</creation_ts>
          <short_desc>[Qt] QtWebkit apps crash on exit on Symbian^3 onwards</short_desc>
          <delta_ts>2010-03-29 04:04:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>S60 Hardware</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>27065</blocked>
    
    <blocked>34751</blocked>
    
    <blocked>35784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Janne Koskinen">koshuin</reporter>
          <assigned_to name="Janne Koskinen">koshuin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>184235</commentid>
    <comment_count>0</comment_count>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-01-25 04:01:12 -0800</bug_when>
    <thetext>Symbian^3 is the first version to implement global destructors and there is kern-exec 3 crash coming when running the destructors (see attached call-stack).

There is something really fishy going on with __cxa_finalize as you can see we end up calling WebCore::threadGlobalData() construction during the destruction which leads to crash on WTF::isMainThread() where there is no instance of QtCoreApp anymore.
Offending call is ThreadingQt.cpp::IsMainThread() { ... QCoreApplication::instance()-&gt;thread()}

Symbian does a lazy unloading of DLLs and the crash happens long after the application has exited (~30sec) and nothing is alive at that point. So my suggested hotfix for this one is to have:

bool isMainThread()
{
+    if (QCoreApplication::instance() == 0)
+        return true;
    return QThread::currentThread() == QCoreApplication::instance()-&gt;thread();
}

Above has been tested and it works. I&apos;d still like to see the root cause why this is happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184236</commentid>
    <comment_count>1</comment_count>
      <attachid>47334</attachid>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-01-25 04:02:16 -0800</bug_when>
    <thetext>Created attachment 47334
call-stack of the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194021</commentid>
    <comment_count>2</comment_count>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-02-26 00:17:52 -0800</bug_when>
    <thetext>Now that I got enviroment to work on found the reason for the crash. fix might take some time....

Problem is that when we exit the application we delete the ThreadGlobalData while in main:

Thread [Thread id: 7392] (Suspended: Breakpoint hit.)	
	21 WebCore::ThreadGlobalData::~ThreadGlobalData() X:\qt\src\3rdparty\webkit\WebCore\platform\ThreadGlobalData.cpp:88 0x07f9a780	
	20 WTF::ThreadSpecific&lt;WebCore::ThreadGlobalData&gt;::destroy() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:226 0x07f9a0ec	
	19 WTF::ThreadSpecific&lt;WebCore::ThreadGlobalData&gt;::Data::~Data() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:83 0x07f9a552	
	18 0x7F9A50C( QtWebKit.dll )()  0x07f9a50c	
	17 QThreadStorage&lt;WTF::ThreadSpecific&lt;WebCore::ThreadGlobalData&gt;::Data *&gt;::deleteData() X:\qt\src\corelib\thread\qthreadstorage.h:133 0x07f9a4cd	
	16 QThreadStorageData::finish() X:\qt\src\corelib\thread\qthreadstorage.cpp:185 0x035417d3	
	15 QCoreApplicationPrivate::~QCoreApplicationPrivate() X:\qt\src\corelib\kernel\qcoreapplication.cpp:289 0x034dea2c	
	14 QApplicationPrivate::~QApplicationPrivate() X:\qt\src\gui\kernel\qapplication.cpp:192 0x03f7a8de	
	13 0x3F887AC( QtGui.dll )()  0x03f887ac	
	12 QScopedPointerDeleter&lt;QObjectData&gt;::cleanup() X:\qt\src\corelib\tools\qscopedpointer.h:63 0x034f5428	
	11 QScopedPointer&lt;QObjectData, QScopedPointerDeleter&lt;QObjectData&gt;&gt;::~QScopedPointer() X:\qt\src\corelib\tools\qscopedpointer.h:100 0x034f53f5	
	10 QObject::~QObject() X:\qt\src\corelib\kernel\qobject.cpp:984 0x034f5b41	
	9 QCoreApplication::~QCoreApplication() X:\qt\src\corelib\kernel\qcoreapplication.cpp:618 0x034df624	
	8 QApplication::~QApplication() X:\qt\src\gui\kernel\qapplication.cpp:1115 0x03f7c6ea	
	7 main() X:\webviewclient\main.cpp:56 0x00401150	
	6 QtMainWrapper() X:\qt\src\s60main\qts60main_mcrt0.cpp:86 0x00403201	
	5 E32Main() X:\qt\src\s60main\qts60main.cpp:56 0x00402d7c	
	4 _E32Startup() M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_exe.cpp:87 0x004024dc	
	3 DThread::EpocThreadFunction() V:\sf\os\KERNELHWSRV\KERNEL\EKA\KERNEL\win32\ckernel.cpp:84 0x0915ac33	
	2 NThread::StartThread() V:\sf\os\KERNELHWSRV\KERNEL\EKA\nkern\win32\ncthrd.cpp:187 0x091595c7	
	1 0x7C80B50B( KERNEL32.dll )()  0x7c80b50b	

And now that we hit the global destructors we get:

Thread [Thread id: 7392] (Suspended: Breakpoint hit.)	
	21 WTF::ThreadSpecific&lt;WebCore::ThreadGlobalData&gt;::operator WebCore::ThreadGlobalData *() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:251 0x07f9a255	
	20 WTF::ThreadSpecific&lt;WebCore::ThreadGlobalData&gt;::operator *() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:267 0x07f9a209	
	19 WebCore::threadGlobalData() X:\qt\src\3rdparty\webkit\WebCore\platform\ThreadGlobalData.cpp:58 0x07f9a1c2	
	18 WebCore::stringTable() X:\qt\src\3rdparty\webkit\WebCore\platform\text\AtomicString.cpp:45 0x07ff1698	
	17 WebCore::AtomicString::remove() X:\qt\src\3rdparty\webkit\WebCore\platform\text\AtomicString.cpp:229 0x07ff1b3c	
	16 WebCore::StringImpl::~StringImpl() X:\qt\src\3rdparty\webkit\WebCore\platform\text\StringImpl.cpp:104 0x07ffaf39	
	15 0x790B5AC( QtWebKit.dll )()  0x0790b5ac	
	14 WTF::RefCounted&lt;WebCore::StringImpl&gt;::deref() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\RefCounted.h:110 0x0790b567	
	13 WTF::derefIfNotNull&lt;WebCore::StringImpl&gt;() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\PassRefPtr.h:43 0x0790b531	
	12 WTF::RefPtr&lt;WebCore::StringImpl&gt;::~RefPtr() X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\RefPtr.h:53 0x0790b195	
	11 0x790B169( QtWebKit.dll )()  0x0790b169	
	10 0x790D7A9( QtWebKit.dll )()  0x0790d7a9	
	9 __destroy_global_chain() M:\sf\os\kernelhwsrv\kernel\eka\include\win32atx.h:96 0x08239d56	
	8 invokeTable() M:\sf\os\kernelhwsrv\kernel\eka\include\win32crt.h:74 0x0823a5f3	
	7 _E32Dll() M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_dll.cpp:73 0x0823a66b	
	6 CallStaticEntryPoints() V:\sf\os\kernelhwsrv\kernel\eka\euser\us_func.cpp:767 0x60014ae0	
	5 User::Exit() V:\sf\os\kernelhwsrv\kernel\eka\euser\us_func.cpp:806 0x60014b56	
	4 _E32Startup() M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_exe.cpp:93 0x004024f9	
	3 DThread::EpocThreadFunction() V:\sf\os\KERNELHWSRV\KERNEL\EKA\KERNEL\win32\ckernel.cpp:84 0x0915ac33	
	2 NThread::StartThread() V:\sf\os\KERNELHWSRV\KERNEL\EKA\nkern\win32\ncthrd.cpp:187 0x091595c7	
	1 0x7C80B50B( KERNEL32.dll )()  0x7c80b50b	

This is because of
static inline HashSet&lt;StringImpl*&gt;&amp; stringTable()
{
    return threadGlobalData().atomicStringTable();
}
ends up constructing the threadGlobalData as there isn&apos;t one anymore as it was already deleted in main.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199580</commentid>
    <comment_count>3</comment_count>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-03-15 01:56:03 -0700</bug_when>
    <thetext>So what do you guys think about this ? The issue in short is that we use StringImpl as globals when it has a dependency into TLS. Either StringImpl must not be declared as global or the dependency to TLS must be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200075</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-03-16 02:42:18 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; So what do you guys think about this ? The issue in short is that we use
&gt; StringImpl as globals when it has a dependency into TLS. Either StringImpl must
&gt; not be declared as global or the dependency to TLS must be removed.

Interesting. Actually I fixed the free method of ThreadGlobalData on Qt, since it was leaking when Workers (runs JavaSCript in a thread) were involved.

WebKit has a policy to avoid global constructors and destructors at all. Global objects must be created with placement new (ugly) or they must be pointers to the global objects.

This is also a common method:

static object&amp; get_object() {
    static object o;
    return &amp;o;
}

According to the back-trace a string destructor caused the error:

    12 WTF::RefPtr&lt;WebCore::StringImpl&gt;::~RefPtr()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\RefPtr.h:53 0x0790b195

I think someone just defined a plain AtomicString somewhere (probably Qt only). Since such atomic strings are part of the StringTable, they have already been freed. But the C++ doesn&apos;t know about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200648</commentid>
    <comment_count>5</comment_count>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-03-17 03:25:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; I think someone just defined a plain AtomicString somewhere (probably Qt only).
&gt; Since such atomic strings are part of the StringTable, they have already been
&gt; freed. But the C++ doesn&apos;t know about that.

Thanks. Based on our IRC discussion I enabled SKIP_STATIC_CONSTRUCTORS_ON_GCC for Symbian but it didn&apos;t have the desired effect. When enabled QtWebkit stops linking on Symbian. All QualifiedNames become undefined e.g.

   mwldsym2.exe: Undefined symbol: &apos;class WebCore::QualifiedName const WebCore::
HTMLNames::aria_valuenowAttr (?aria_valuenowAttr@HTMLNames@WebCore@@3VQualifiedN
ame@2@B)&apos;
   mwldsym2.exe: referenced from &apos;void WebCore::Element::updateAfterAttributeCha
nged(class WebCore::Attribute *) (?updateAfterAttributeChanged@Element@WebCore@@
IAEXPAVAttribute@2@@Z)&apos; in Element.cpp:587
   mwldsym2.exe: Undefined symbol: &apos;class WebCore::QualifiedName const WebCore::
HTMLNames::labelTag (?labelTag@HTMLNames@WebCore@@3VQualifiedName@2@B)&apos;
   mwldsym2.exe: referenced from &apos;class WTF::HashSet&lt;class WebCore::AtomicString
Impl *, struct WTF::PtrHash&lt;class WebCore::AtomicStringImpl *&gt;, struct WTF::Hash
Traits&lt;class WebCore::AtomicStringImpl *&gt; &gt; * WebCore::inlineTagList(void) (?inl
ineTagList@WebCore@@YAPAV?$HashSet@PAVAtomicStringImpl@WebCore@@U?$PtrHash@PAVAt
omicStringImpl@WebCore@@@WTF@@U?$HashTraits@PAVAtomicStringImpl@WebCore@@@4@@WTF
@@XZ)&apos; in HTMLElement.cpp:838

I&apos;ll keep digging :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203101</commentid>
    <comment_count>6</comment_count>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-03-23 10:36:20 -0700</bug_when>
    <thetext>Addition to be blocker for webkit release. Today I compiled the whole thing for ARM with SKIP_STATIC_CONSTRUCTORS_ON_GCC enabled and it seems to do the trick. It is only WINSCW that won&apos;t work, I&apos;ll prepare a patch tomorrow once I&apos;ve tested a range of devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204535</commentid>
    <comment_count>7</comment_count>
      <attachid>51735</attachid>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-03-26 06:21:52 -0700</bug_when>
    <thetext>Created attachment 51735
proposed fix for webcore/config.h

Patch tested on Symbian^3 based OEM hardware.
Emulator will still continue crashing on exit but I think that should be ok. I tried emulator using same defines as for Windows build but
the WINSCW compiler seems to be too picky about the extern - keyword for class declarations. I think this is good compromise If wanted the workaround in bugreport comments can be applied for emulator environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204550</commentid>
    <comment_count>8</comment_count>
      <attachid>51735</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2010-03-26 07:08:23 -0700</bug_when>
    <thetext>Comment on attachment 51735
proposed fix for webcore/config.h

Looks good to me. r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204646</commentid>
    <comment_count>9</comment_count>
      <attachid>51735</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-26 10:04:14 -0700</bug_when>
    <thetext>Comment on attachment 51735
proposed fix for webcore/config.h

Clearing flags on attachment: 51735

Committed r56631: &lt;http://trac.webkit.org/changeset/56631&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204647</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-26 10:04:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205123</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-28 02:38:15 -0700</bug_when>
    <thetext>Shall I also backport this patch to Qt 4.6?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205248</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-28 14:45:43 -0700</bug_when>
    <thetext>Revision r56631 cherry-picked into qtwebkit-2.0 with commit 88e5ac629c848e7a8fcaa9fa8b4181630c6836c0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205328</commentid>
    <comment_count>13</comment_count>
    <who name="Janne Koskinen">koshuin</who>
    <bug_when>2010-03-29 01:24:36 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Shall I also backport this patch to Qt 4.6?

Yes I think it should be backported due to significant impact on WSD size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205392</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-03-29 04:04:31 -0700</bug_when>
    <thetext>Cherry-picked into qtwebkit-4.6 with commit 9e0708dd02ed0feb22ba815c9def7fdfc53dd68e</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47334</attachid>
            <date>2010-01-25 04:02:16 -0800</date>
            <delta_ts>2010-01-25 04:02:16 -0800</delta_ts>
            <desc>call-stack of the crash</desc>
            <filename>CallStack.txt</filename>
            <type>text/plain</type>
            <size>14004</size>
            <attacher name="Janne Koskinen">koshuin</attacher>
            
              <data encoding="base64">WzAwNDE2YWEwXSA9IDAwNzA2MzQ4IEhjcC4gDQpbMDA0MTZhYTRdID0gM2ZmOTMzY2MgLjMuPyAN
ClswMDQxNmFhOF0gPSA3M2JlODAwMCAuLi5zIFsrIDB4MDAwMF0gX0UzMlN0YXJ0dXANClswMDQx
NmFhY10gPSA3NDA1MThkMSAuLi50IFsrIDB4MDAxNV0gUVRocmVhZERhdGE6OmN1cnJlbnQoKQ0K
WzAwNDE2YWIwXSA9IDAwNzA0YjkwIC5LcC4gDQpbMDA0MTZhYjRdID0gODA5NWZhZGQgLi4uLiBb
KyAweDAwMTldIG1hbGxvYw0KWzAwNDE2YWI4XSA9IDAwNzA2MzQ4IEhjcC4gDQpbMDA0MTZhYmNd
ID0gMDA3MDYzNDggSGNwLiANClswMDQxNmFjMF0gPSAwMDcwNGJlMCAuS3AuIA0KWzAwNDE2YWM0
XSA9IDc0MDUwOGEzIC4uLnQgWysgMHgwMDA3XSBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkNClsw
MDQxNmFjOF0gPSAwMDcwNjM0OCBIY3AuIA0KWzAwNDE2YWNjXSA9IDc0OTBiOTlmIC4uLnQgWysg
MHgwMDA3XSBXVEY6OmlzTWFpblRocmVhZCgpDQoNCiA+Pj4+IEN1cnJlbnQgU3RhY2sgUG9pbnRl
ciA+Pj4+IA0KDQpbMDA0MTZhZDBdID0gMDA3MDYzNDggSGNwLiANClswMDQxNmFkNF0gPSA3NGE4
MGExYiAuLi50IFsrIDB4MDAxNV0gV2ViQ29yZTo6VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMo
KQ0KWzAwNDE2YWQ4XSA9IDAwNzA0YjkwIC5LcC4gDQpbMDA0MTZhZGNdID0gNzRhODA4NWYgXy4u
dCBbKyAweDAwNDNdIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEo
KQ0KWzAwNDE2YWUwXSA9IDAwNzQ0YjA4IC5LdC4gDQpbMDA0MTZhZTRdID0gMDA3MDRiOTAgLktw
LiANClswMDQxNmFlOF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2YWVjXSA9IDc0YTgwOGQ1IC4u
LnQgWysgMHgwMDcxXSBXZWJDb3JlOjp0aHJlYWRHbG9iYWxEYXRhKCkNClswMDQxNmFmMF0gPSAw
MDc1YmM1OCBYLnUuIA0KWzAwNDE2YWY0XSA9IDNmZjgyZTg0IC4uLj8gDQpbMDA0MTZhZjhdID0g
M2ZmODFjMDggLi4uPyANClswMDQxNmFmY10gPSA3NGE5ZDA1ZCBdLi50IFsrID8/Pz8/P10gcXR3
ZWJraXQuZGxsLm1hcA0KWzAwNDE2YjAwXSA9IDAwNzViYzU4IFgudS4gDQpbMDA0MTZiMDRdID0g
NzRhOWNkZDMgLi4udCBbKyAweDAwMDddIFdlYkNvcmU6OkF0b21pY1N0cmluZzo6cmVtb3ZlKFdl
YkNvcmU6OlN0cmluZ0ltcGwqKQ0KWzAwNDE2YjA4XSA9IDAwNzViYzU4IFgudS4gDQpbMDA0MTZi
MGNdID0gNzRhOWYxYmYgLi4udCBbKyAweDAwMTNdIFdlYkNvcmU6OlN0cmluZ0ltcGw6On5TdHJp
bmdJbXBsKCkNClswMDQxNmIxMF0gPSAwMDc1YmM1OCBYLnUuIA0KWzAwNDE2YjE0XSA9IDc0YmI1
ZmQxIC5fLnQgWysgMHgwMDE3XSBXVEY6OlJlZkNvdW50ZWQ8V2ViQ29yZTo6U3RyaW5nSW1wbD46
OmRlcmVmKCkNClswMDQxNmIxOF0gPSAwMDc1YmM4OCAuLnUuIA0KWzAwNDE2YjFjXSA9IDc0YmJi
YjhkIC4uLnQgWysgMHgwMDBiXSBXVEY6OmRlcmVmSWZOb3ROdWxsPFdlYkNvcmU6OlN0cmluZ0lt
cGw+KFQxKikNClswMDQxNmIyMF0gPSAwMDc1YmM4OCAuLnUuIA0KWzAwNDE2YjI0XSA9IDc0YmM4
YzU1IFUuLnQgWysgMHgwMDBiXSBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTdHJpbmdJbXBsPjo6flJl
ZlB0cigpDQpbMDA0MTZiMjhdID0gMDA3NWJjODAgLi51LiANClswMDQxNmIyY10gPSA3NGI5ZDRl
NyAuLi50IFsrIDB4MDAwN10gV2ViQ29yZTo6U3RyaW5nOjp+U3RyaW5nKCkNClswMDQxNmIzMF0g
PSAwMDc1YmM4MCAuLnUuIA0KWzAwNDE2YjM0XSA9IDc0YjdkNmZmIC4uLnQgWysgMHgwMDA3XSBX
ZWJDb3JlOjpBdG9taWNTdHJpbmc6On5BdG9taWNTdHJpbmcoKQ0KWzAwNDE2YjM4XSA9IDAwNzVi
YzgwIC4udS4gDQpbMDA0MTZiM2NdID0gNzRiYjYyOGQgLmIudCBbKyAweDAwMzFdIFdURjo6UmVm
Q291bnRlZDxXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbD46OmRlcmVm
KCkNClswMDQxNmI0MF0gPSAzZmY3YmNkNCAuLi4/IA0KWzAwNDE2YjQ0XSA9IDc0OTZhZTkzIC4u
LnQgWysgMHgwMDIxXSBXZWJDb3JlOjpRdWFsaWZpZWROYW1lOjpkZXJlZigpDQpbMDA0MTZiNDhd
ID0gM2ZmN2JjZDQgLi4uPyANClswMDQxNmI0Y10gPSA3NGI3ZjZhZiAuLi50IFsrIDB4MDAwOV0g
V2ViQ29yZTo6UXVhbGlmaWVkTmFtZTo6flF1YWxpZmllZE5hbWUoKQ0KWzAwNDE2YjUwXSA9IDNm
ZjgyNjhjIC4mLj8gDQpbMDA0MTZiNTRdID0gNzRiMzU5ZmMgLlkudCBbKyAweDAwMWNdIF9fY3hh
X2ZpbmFsaXplDQpbMDA0MTZiNThdID0gMDAwMDAwMmUgLi4uLiANClswMDQxNmI1Y10gPSAwMDQx
NmI4MCAua0EuIA0KWzAwNDE2YjYwXSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZiNjRdID0gNzRi
MzU5ODggLlkudCBbKyAweDAwMzBdIF9FMzJEbGxfQm9keQ0KWzAwNDE2YjY4XSA9IDAwMDAwMDJl
IC4uLi4gDQpbMDA0MTZiNmNdID0gODA0NDZmYWYgLm9ELiBbKyAweDAwNDVdIFVzZXI6OkV4aXQo
aW50KQ0KWzAwNDE2YjcwXSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZiNzRdID0gODA5N2MyNzgg
eC4uLiBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmI3OF0gPSAwMDAwMDExMiAuLi4uIA0KWzAw
NDE2YjdjXSA9IDAwMDAwMDUwIFAuLi4gDQpbMDA0MTZiODBdID0gODA5MzA1MTggLi4uLiBbKyAw
eDAwMDBdIF9FMzJEbGwNClswMDQxNmI4NF0gPSA4MDk0NTNhOCAuUy4uIFsrIDB4MDAwMF0gX0Uz
MkRsbA0KWzAwNDE2Yjg4XSA9IDgwOTdjMjc4IHguLi4gWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0
MTZiOGNdID0gODA5NTYwNzggeGAuLiBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmI5MF0gPSA4
MGJjMjI2OCBoIi4uIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2Yjk0XSA9IDgwNzQzMGQ4IC4w
dC4gWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZiOThdID0gODEyYjUyYjggLlIrLiBbKyAweDAw
MDBdIF9FMzJEbGwNClswMDQxNmI5Y10gPSA4MGZiYmI3OCB4Li4uIFsrIDB4MDAwMF0gX0UzMkRs
bA0KWzAwNDE2YmEwXSA9IDgxMDk0OGM4IC5ILi4gWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZi
YTRdID0gNzE5ZjAwMDAgLi4ucSBbKyAweDNlNjgwXSAuQVJNLmV4aWR4JCRMaW1pdA0KWzAwNDE2
YmE4XSA9IDcwZjAwMDAwIC4uLnAgWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZiYWNdID0gNzMx
YzAwMDAgLi4ucyBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmJiMF0gPSA3NDAwMDAwMCAuLi50
IFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmI0XSA9IDgxMDg0NmM4IC5GLi4gWysgMHgwMDAw
XSBfRTMyRGxsDQpbMDA0MTZiYjhdID0gODExYTFjYzggLi4uLiBbKyAweDAwMDBdIF9FMzJEbGwN
ClswMDQxNmJiY10gPSA4MGZiNTIwOCAuUi4uIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmMw
XSA9IDgxMDgzM2U4IC4zLi4gWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZiYzRdID0gODBmNTU3
NjggaFcuLiBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmJjOF0gPSA3MTcyODAwMCAuLnJxIFsr
IDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmNjXSA9IDcxNzMwMDAwIC4uc3EgWysgMHgwMDAwXSBf
RTMyRGxsDQpbMDA0MTZiZDBdID0gODEwY2U2MzggOC4uLiBbKyAweDAwMDBdIF9FMzJEbGwNClsw
MDQxNmJkNF0gPSA4MTIxMTk2OCBoLiEuIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmQ4XSA9
IDgxMjcxZjk4IC4uJy4gWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZiZGNdID0gNzE3NDAwMDAg
Li50cSBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmJlMF0gPSA3MTc0ODAwMCAuLnRxIFsrIDB4
MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmU0XSA9IDcxNzUwMDAwIC4udXEgWysgMHgwMDAwXSBfRTMy
RGxsDQpbMDA0MTZiZThdID0gNzE3MzgwMDAgLi5zcSBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQx
NmJlY10gPSA3MTcxODAwMCAuLnFxIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmYwXSA9IDcx
ZGMwMDAwIC4uLnEgWysgMHgzY2VmODRdIC5BUk0uZXhpZHgkJExpbWl0DQpbMDA0MTZiZjRdID0g
NzEwZTgwMDAgLi4ucSBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmJmOF0gPSA4MTJmNmIyOCAo
ay8uIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YmZjXSA9IDcxZGM4MDAwIC4uLnEgWysgMHgz
ZDZmODRdIC5BUk0uZXhpZHgkJExpbWl0DQpbMDA0MTZjMDBdID0gODExZmE5YjggLi4uLiBbKyAw
eDAwMDBdIF9FMzJEbGwNClswMDQxNmMwNF0gPSA4MTFmMGViOCAuLi4uIFsrIDB4MDAwMF0gX0Uz
MkRsbA0KWzAwNDE2YzA4XSA9IDcxZGQ4MDAwIC4uLnEgWysgMHgzZTZmODRdIC5BUk0uZXhpZHgk
JExpbWl0DQpbMDA0MTZjMGNdID0gNzFkZDAwMDAgLi4ucSBbKyAweDNkZWY4NF0gLkFSTS5leGlk
eCQkTGltaXQNClswMDQxNmMxMF0gPSA3MWRlODAwMCAuLi5xIFsrIDB4MDAwMF0gZ0xpYmRsVExT
Q2xlYW51cA0KWzAwNDE2YzE0XSA9IDcxZGUwMDAwIC4uLnEgWysgMHgzZWVmODRdIC5BUk0uZXhp
ZHgkJExpbWl0DQpbMDA0MTZjMThdID0gNzFkYjAwMDAgLi4ucSBbKyAweDNiZWY4NF0gLkFSTS5l
eGlkeCQkTGltaXQNClswMDQxNmMxY10gPSA4MGJjMGEyOCAoLi4uIFsrIDB4MDAwMF0gX0UzMkRs
bA0KWzAwNDE2YzIwXSA9IDcxYjAwMDAwIC4uLnEgWysgMHgxNGU2ODBdIC5BUk0uZXhpZHgkJExp
bWl0DQpbMDA0MTZjMjRdID0gNzQ1NjAwMDAgLi5WdCBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQx
NmMyOF0gPSA3M2E3MDAwMCAuLi5zIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YzJjXSA9IDc0
ZTI4MDAwIC4uLnQgWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZjMzBdID0gNzNmYTAwMDAgLi4u
cyBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmMzNF0gPSA3MjliMDAwMCAuLi5yIFsrIDB4MDAw
MF0gX0UzMkRsbA0KWzAwNDE2YzM4XSA9IDc0OGQ4MDAwIC4uLnQgWysgMHgwMDAwXSBfRTMyRGxs
DQpbMDA0MTZjM2NdID0gNzNmMTAwMDAgLi4ucyBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmM0
MF0gPSA3MzlmODAwMCAuLi5zIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YzQ0XSA9IDczZmI4
MDAwIC4uLnMgWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZjNDhdID0gNzI5ZTgwMDAgLi4uciBb
KyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmM0Y10gPSA3MzllMDAwMCAuLi5zIFsrIDB4MDAwMF0g
X0UzMkRsbA0KWzAwNDE2YzUwXSA9IDcxYWYwMDAwIC4uLnEgWysgMHgwMDAwXSBfRTMyRGxsDQpb
MDA0MTZjNTRdID0gNzBmMzgwMDAgLi4ucCBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmM1OF0g
PSA3MGViMDAwMCAuLi5wIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YzVjXSA9IDcwZWE4MDAw
IC4uLnAgWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZjNjBdID0gNzE5ZDAwMDAgLi4ucSBbKyAw
eDFlNjgwXSAuQVJNLmV4aWR4JCRMaW1pdA0KWzAwNDE2YzY0XSA9IDcxOWUwMDAwIC4uLnEgWysg
MHgyZTY4MF0gLkFSTS5leGlkeCQkTGltaXQNClswMDQxNmM2OF0gPSA3MTlkODAwMCAuLi5xIFsr
IDB4MjY2ODBdIC5BUk0uZXhpZHgkJExpbWl0DQpbMDA0MTZjNmNdID0gNzE5ZTgwMDAgLi4ucSBb
KyAweDM2NjgwXSAuQVJNLmV4aWR4JCRMaW1pdA0KWzAwNDE2YzcwXSA9IDcxOWM4MDAwIC4uLnEg
WysgMHgxNjY4MF0gLkFSTS5leGlkeCQkTGltaXQNClswMDQxNmM3NF0gPSA3MTk0ODAwMCAuLi5x
IFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2Yzc4XSA9IDcxYmMwMDAwIC4uLnEgWysgMHgwMDAw
XSBfRTMyRGxsDQpbMDA0MTZjN2NdID0gNzFiYjgwMDAgLi4ucSBbKyAweDAwMDBdIF9FMzJEbGwN
ClswMDQxNmM4MF0gPSA3M2EwODAwMCAuLi5zIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2Yzg0
XSA9IDcyYWI4MDAwIC4uLnIgWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZjODhdID0gNzJhMTgw
MDAgLi4uciBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmM4Y10gPSA3NDI4ODAwMCAuLih0IFsr
IDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YzkwXSA9IDczYmY4MDAwIC4uLnMgWysgMHgwMDAwXSBf
RTMyRGxsDQpbMDA0MTZjOTRdID0gNzExNDgwMDAgLi4ucSBbKyAweDAwMDBdIF9FMzJEbGwNClsw
MDQxNmM5OF0gPSA3MDk4ODAwMCAuLi5wIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2YzljXSA9
IDcxZDUwMDAwIC4uLnEgWysgMHgzNWVmODRdIC5BUk0uZXhpZHgkJExpbWl0DQpbMDA0MTZjYTBd
ID0gODExYTk4NDggSC4uLiBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmNhNF0gPSA3M2FmMDAw
MCAuLi5zIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAwNDE2Y2E4XSA9IDcyYTIwMDAwIC4uLnIgWysg
MHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZjYWNdID0gNzFmMzgwMDAgLi4ucSBbKyAweDAwMDBdIF9F
MzJEbGwNClswMDQxNmNiMF0gPSA3MWYzMDAwMCAuLi5xIFsrIDB4MDAwMF0gX0UzMkRsbA0KWzAw
NDE2Y2I0XSA9IDcxZjQwMDAwIC4uLnEgWysgMHgwMDAwXSBfRTMyRGxsDQpbMDA0MTZjYjhdID0g
NzFmMjAwMDAgLi4ucSBbKyAweDAwMDBdIF9FMzJEbGwNClswMDQxNmNiY10gPSA3M2JlODAwMCAu
Li5zIFsrIDB4MDAwMF0gX0UzMlN0YXJ0dXANClswMDQxNmNjMF0gPSAwMDc0NGY1OCBYT3QuIA0K
WzAwNDE2Y2M0XSA9IDgwOTVmYjE5IC4uLi4gWysgMHgwMDA3XSBmcmVlDQpbMDA0MTZjYzhdID0g
MDA3NDRmNTggWE90LiANClswMDQxNmNjY10gPSA3NDkwYjNlZiAuLi50IFsrIDB4MDAwN10gV1RG
OjpmYXN0RnJlZSh2b2lkKikNClswMDQxNmNkMF0gPSAwMDcwMDAwMCAuLnAuIA0KWzAwNDE2Y2Q0
XSA9IDAwZDQ0ZmE4IC5PLi4gDQpbMDA0MTZjZDhdID0gMDA3MDAwMDAgLi5wLiANClswMDQxNmNk
Y10gPSAwMDc0NGM2MCBgTHQuIA0KWzAwNDE2Y2UwXSA9IDAwNzQ0YzYwIGBMdC4gDQpbMDA0MTZj
ZTRdID0gMDA3NDY1MTAgLmV0LiANClswMDQxNmNlOF0gPSAwMDcwMDAwMCAuLnAuIA0KWzAwNDE2
Y2VjXSA9IDAwNzQ0YzM4IDhMdC4gDQpbMDA0MTZjZjBdID0gMDA3MDAwMDAgLi5wLiANClswMDQx
NmNmNF0gPSAwMDc0NGJlOCAuS3QuIA0KWzAwNDE2Y2Y4XSA9IDAwNzAwMDAwIC4ucC4gDQpbMDA0
MTZjZmNdID0gMDBmM2E0MTAgLi4uLiANClswMDQxNmQwMF0gPSAwMGYzYTQxMCAuLi4uIA0KWzAw
NDE2ZDA0XSA9IDAwZjNhNDEwIC4uLi4gDQpbMDA0MTZkMDhdID0gMDBmM2E2ZDAgLi4uLiANClsw
MDQxNmQwY10gPSA4MDQ0NTZmNyAuVkQuIFsrIDB4MDAxN10gVXNlcjo6RnJlZSh2b2lkKikNClsw
MDQxNmQxMF0gPSAwMDcwYzgzNCA0LnAuIA0KWzAwNDE2ZDE0XSA9IDc0MDgzZmM1IC4/LnQgWysg
MHgwMDA3XSBRQmFzaWNBdG9taWNJbnQ6OmRlcmVmKCkNClswMDQxNmQxOF0gPSAwMDcwYzgzNCA0
LnAuIA0KWzAwNDE2ZDFjXSA9IDc0MDkzMWRmIC4xLnQgWysgMHgwMDBmXSBRTGlzdDxRT2JqZWN0
Kj46On5RTGlzdCgpDQpbMDA0MTZkMjBdID0gMDA3MGM4MjggKC5wLiANClswMDQxNmQyNF0gPSA3
NDA0MDE0NSBFLi50IFsrIDB4MDAwZF0gUU9iamVjdERhdGE6On5RT2JqZWN0RGF0YV9fc3ViX29i
amVjdCgpDQpbMDA0MTZkMjhdID0gMDA3MGM4MjggKC5wLiANClswMDQxNmQyY10gPSA3NDA0MjAz
YiA7Li50IFsrIDB4MDA5OV0gUU9iamVjdFByaXZhdGU6On5RT2JqZWN0UHJpdmF0ZSgpDQpbMDA0
MTZkMzBdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmQzNF0gPSAwMDcwYzgyOCAoLnAuIA0KWzAw
NDE2ZDM4XSA9IDAwMDAwMDAyIC4uLi4gDQpbMDA0MTZkM2NdID0gMDAwMDAwMDAgLi4uLiANClsw
MDQxNmQ0MF0gPSAwMDcwMDAwMCAuLnAuIA0KWzAwNDE2ZDQ0XSA9IDAwNzBjODI4ICgucC4gDQpb
MDA0MTZkNDhdID0gMDA3MGM4MjggKC5wLiANClswMDQxNmQ0Y10gPSAwMDcwYzgyOCAoLnAuIA0K
WzAwNDE2ZDUwXSA9IDAwNDE2ZDg0IC5tQS4gDQpbMDA0MTZkNTRdID0gODA0NDU2ZjcgLlZELiBb
KyAweDAwMTddIFVzZXI6OkZyZWUodm9pZCopDQpbMDA0MTZkNThdID0gMDA0MTZlMjQgJG5BLiAN
ClswMDQxNmQ1Y10gPSA3MGYwMDE5YiAuLi5wIFsrIDB4MDAwN10gb3BlcmF0b3IgZGVsZXRlICh2
b2lkKikNClswMDQxNmQ2MF0gPSAwMDQxNmUyNCAkbkEuIA0KWzAwNDE2ZDY0XSA9IDc0NjBhZjk1
IC4uYHQgWysgMHgwMDBmXSBRQXBwbGljYXRpb25Qcml2YXRlOjp+UUFwcGxpY2F0aW9uUHJpdmF0
ZV9fZGVhbGxvY2F0aW5nKCkNClswMDQxNmQ2OF0gPSAwMDQxNmUyNCAkbkEuIA0KWzAwNDE2ZDZj
XSA9IDc0MDg4ZWY5IC4uLnQgWysgMHgwMDExXSBRU2NvcGVkUG9pbnRlcjxRT2JqZWN0RGF0YSwg
UVNjb3BlZFBvaW50ZXJEZWxldGVyPFFPYmplY3REYXRhPj46On5RU2NvcGVkUG9pbnRlcigpDQpb
MDA0MTZkNzBdID0gMDA3MGM4NjggaC5wLiANClswMDQxNmQ3NF0gPSA3NDA0MTA5YiAuLi50IFsr
IDB4MDI0ZF0gUU9iamVjdDo6flFPYmplY3QoKQ0KWzAwNDE2ZDc4XSA9IDAwNzAwMDAwIC4ucC4g
DQpbMDA0MTZkN2NdID0gMDA3MGNlZTAgLi5wLiANClswMDQxNmQ4MF0gPSAwMDAwMDAwMCAuLi4u
IA0KWzAwNDE2ZDg0XSA9IDNmZjkzNDMwIDA0Lj8gDQpbMDA0MTZkODhdID0gMDA0MTZlMjAgLm5B
LiANClswMDQxNmQ4Y10gPSAwMDQxNmUyMCAubkEuIA0KWzAwNDE2ZDkwXSA9IDAwMDAwMDAwIC4u
Li4gDQpbMDA0MTZkOTRdID0gM2ZmOTMyNDAgQDIuPyANClswMDQxNmQ5OF0gPSAwMDQxNmUyMCAu
bkEuIA0KWzAwNDE2ZDljXSA9IDc0MDNhYzQ5IEkuLnQgWysgMHgwMDRmXSBRQ29yZUFwcGxpY2F0
aW9uOjp+UUNvcmVBcHBsaWNhdGlvbigpDQpbMDA0MTZkYTBdID0gMDA3MGM4MjggKC5wLiANClsw
MDQxNmRhNF0gPSAzZmY4ZTIyNCAkLi4/IA0KWzAwNDE2ZGE4XSA9IDAwMDAwMDAwIC4uLi4gDQpb
MDA0MTZkYWNdID0gNzQ2MDhlNTUgVS5gdCBbKyAweDAzMjFdIFFBcHBsaWNhdGlvbjo6flFBcHBs
aWNhdGlvbigpDQpbMDA0MTZkYjBdID0gNzQxNmY0Y2MgLi4udCBbKyAweDMwNjg0NF0gLkFSTS5l
eGlkeCQkTGltaXQNClswMDQxNmRiNF0gPSAwMDcxMDI3MCBwLnEuIA0KWzAwNDE2ZGI4XSA9IDNm
ZjkzNDMwIDA0Lj8gDQpbMDA0MTZkYmNdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmRjMF0gPSAz
ZmY5MzI0YyBMMi4/IA0KWzAwNDE2ZGM0XSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZkYzhdID0g
MDAwMDAwMDEgLi4uLiANClswMDQxNmRjY10gPSA3M2JlYzA0MSBBLi5zIFsrIDB4MDJkZF0gbWFp
bg0KWzAwNDE2ZGQwXSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZkZDRdID0gODA0NTVmN2Ige19F
LiBbKyAweDAyMDFdIFJIZWFwOjpSZUFsbG9jKHZvaWQqLCBpbnQsIGludCkNClswMDQxNmRkOF0g
PSA3NDE2ZjVjYyAuLi50IFsrIDB4MzA2OTQ0XSAuQVJNLmV4aWR4JCRMaW1pdA0KWzAwNDE2ZGRj
XSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZkZTBdID0gNzQ4OTVmZTggLl8udCANClswMDQxNmRl
NF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZGU4XSA9IDAwNzJjZTY4IGguci4gDQpbMDA0MTZk
ZWNdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmRmMF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2
ZGY0XSA9IDAwNzY5YWE4IC4udi4gDQpbMDA0MTZkZjhdID0gMDAwMDAwMDAgLi4uLiANClswMDQx
NmRmY10gPSAwMDcyZDNiOCAuLnIuIA0KWzAwNDE2ZTAwXSA9IDAwNzJkZGM4IC4uci4gDQpbMDA0
MTZlMDRdID0gMDA3MmFiZjAgLi5yLiANClswMDQxNmUwOF0gPSAwMDcyZmZiMCAuLnIuIA0KWzAw
NDE2ZTBjXSA9IDAwNzJkNDkwIC4uci4gDQpbMDA0MTZlMTBdID0gMDA3NzEyYTAgLi53LiANClsw
MDQxNmUxNF0gPSAwMDc3MTMyOCAoLncuIA0KWzAwNDE2ZTE4XSA9IDAyNzAwYTAxIC4ucC4gDQpb
MDA0MTZlMWNdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmUyMF0gPSA3NDE2ZjVjYyAuLi50IFsr
IDB4MzA2OTQ0XSAuQVJNLmV4aWR4JCRMaW1pdA0KWzAwNDE2ZTI0XSA9IDAwMDAwMDAwIC4uLi4g
DQpbMDA0MTZlMjhdID0gMDA3MTM5MjggKDlxLiANClswMDQxNmUyY10gPSAwMDc3ZjlmMCAuLncu
IA0KWzAwNDE2ZTMwXSA9IDAwNzdmOWM4IC4udy4gDQpbMDA0MTZlMzRdID0gMDA3MTZkYjggLm1x
LiANClswMDQxNmUzOF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZTNjXSA9IDAyNzAwOWM4IC4u
cC4gDQpbMDA0MTZlNDBdID0gODAwMDAwMDAgLi4uLiANClswMDQxNmU0NF0gPSA4MDkzM2RlZiAu
PS4uIFsrIDB4MDAwZl0gQ0xvY2FsU3lzdGVtSW50ZXJmYWNlOjpBbGxvYyh1bnNpZ25lZCkNClsw
MDQxNmU0OF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZTRjXSA9IDAwNzEwMjcwIHAucS4gDQpb
MDA0MTZlNTBdID0gMDA3M2Y3YTggLi5zLiANClswMDQxNmU1NF0gPSAwMjcwMDljOCAuLnAuIA0K
WzAwNDE2ZTU4XSA9IDAwNzAwMDAwIC4ucC4gDQpbMDA0MTZlNWNdID0gMDA3MGM3MDggLi5wLiAN
ClswMDQxNmU2MF0gPSAwMDcwYzcwOCAuLnAuIA0KWzAwNDE2ZTY0XSA9IDAwMDAwMDAwIC4uLi4g
DQpbMDA0MTZlNjhdID0gMDA3MDAwMDAgLi5wLiANClswMDQxNmU2Y10gPSAwMDcwYzY5OCAuLnAu
IA0KWzAwNDE2ZTcwXSA9IDAwNzAwMDAwIC4ucC4gDQpbMDA0MTZlNzRdID0gMDA3MGMyMzAgMC5w
LiANClswMDQxNmU3OF0gPSAwMDcwYzIzMCAwLnAuIA0KWzAwNDE2ZTdjXSA9IDAwNDE2ZWEwIC5u
QS4gDQpbMDA0MTZlODBdID0gMDA3MGMyMzQgNC5wLiANClswMDQxNmU4NF0gPSA4MDQ0NTZmNyAu
VkQuIFsrIDB4MDAxN10gVXNlcjo6RnJlZSh2b2lkKikNClswMDQxNmU4OF0gPSAwMDcwYzIzMCAw
LnAuIA0KWzAwNDE2ZThjXSA9IDgwNDJmM2Q1IC4uQi4gWysgMHgwMDA3XSBvcGVyYXRvciBkZWxl
dGUgKHZvaWQqKQ0KWzAwNDE2ZTkwXSA9IDAwNzBjMjMwIDAucC4gDQpbMDA0MTZlOTRdID0gODA0
NDFiZjEgLi5ELiBbKyAweDAwMmZdIENUcmFwQ2xlYW51cDo6fkNUcmFwQ2xlYW51cF9fZGVhbGxv
Y2F0aW5nKCkNClswMDQxNmU5OF0gPSAwMDcwYzIzMCAwLnAuIA0KWzAwNDE2ZTljXSA9IDczYmVl
YjY0IGQuLnMgWysgMHgwMDcwXSBFMzJNYWluKCkNClswMDQxNmVhMF0gPSAwMDAwMDAwMCAuLi4u
IA0KWzAwNDE2ZWE0XSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZlYThdID0gMDAwMDAwMDAgLi4u
LiANClswMDQxNmVhY10gPSA3M2JlODAwMCAuLi5zIFsrIDB4MDAwMF0gX0UzMlN0YXJ0dXANClsw
MDQxNmViMF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZWI0XSA9IDczYmVlYWM0IC4uLnMgWysg
MHgwMDRjXSBDYWxsVGhyZFByb2NFbnRyeQ0KWzAwNDE2ZWI4XSA9IDAwMDAwMDAwIC4uLi4gDQpb
MDA0MTZlYmNdID0gODA0MzBhN2Igey5DLiBbKyAweDAwMDFdIF9fQVJNOjpkZWZhdWx0X3VuZXhw
ZWN0ZWRfaGFuZGxlcigpDQpbMDA0MTZlYzBdID0gODA0MmY3NjkgaS5CLiBbKyAweDAwMDFdIF9f
ZGVmYXVsdF90ZXJtaW5hdGVfaGFuZGxlcigpDQpbMDA0MTZlYzRdID0gMDAwMDAwMDAgLi4uLiAN
ClswMDQxNmVjOF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZWNjXSA9IDAwMDAwMDAwIC4uLi4g
DQpbMDA0MTZlZDBdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmVkNF0gPSAwMDQxNmVkOCAubkEu
IA0KWzAwNDE2ZWQ4XSA9IDAwNzAwMDAwIC4ucC4gDQpbMDA0MTZlZGNdID0gMDA3MDAwMDAgLi5w
LiANClswMDQxNmVlMF0gPSAwMDcwMDAyYyAsLnAuIA0KWzAwNDE2ZWU0XSA9IDAwNzAwMDAwIC4u
cC4gDQpbMDA0MTZlZThdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmVlY10gPSAwMDAwMDAxOCAu
Li4uIA0KWzAwNDE2ZWYwXSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZlZjRdID0gMDAwMDAwMDAg
Li4uLiANClswMDQxNmVmOF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZWZjXSA9IDAwMDAwMDE4
IC4uLi4gDQpbMDA0MTZmMDBdID0gODA0NTVkN2Ige11FLiBbKyAweDAwMDFdIFJIZWFwOjpSZUFs
bG9jKHZvaWQqLCBpbnQsIGludCkNClswMDQxNmYwNF0gPSA4MDQ0NTczNyA3V0QuIFsrIDB4MDAx
Yl0gVXNlcjo6UmVBbGxvYyh2b2lkKiwgaW50LCBpbnQpDQpbMDA0MTZmMDhdID0gMDAwMDAwMDAg
Li4uLiANClswMDQxNmYwY10gPSAwMDQxNmZlMCAub0EuIA0KWzAwNDE2ZjEwXSA9IDAwMDAwMDAy
IC4uLi4gDQpbMDA0MTZmMTRdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmYxOF0gPSAwMDQxNmY0
MCBAb0EuIA0KWzAwNDE2ZjFjXSA9IDgwNDUxYmM3IC4uRS4gWysgMHgwMDQxXSBSQXJyYXlCYXNl
OjpJbnNlcnQoY29uc3Qgdm9pZCosIGludCkNClswMDQxNmYyMF0gPSAwMDAwMDAwMSAuLi4uIA0K
WzAwNDE2ZjI0XSA9IDAwNDE2ZmQwIC5vQS4gDQpbMDA0MTZmMjhdID0gMDA0MTZmZTAgLm9BLiAN
ClswMDQxNmYyY10gPSBmZmZmZmZmZiAuLi4uIA0KWzAwNDE2ZjMwXSA9IDAwNzAwMDAwIC4ucC4g
DQpbMDA0MTZmMzRdID0gODA0NTk2NTMgUy5FLiBbKyAweDAwNmRdIFRMb2NhbFRocmVhZERhdGE6
OkRsbFNldFRscyhpbnQsIGludCwgdm9pZCopDQpbMDA0MTZmMzhdID0gMDA0MTZmZTAgLm9BLiAN
ClswMDQxNmYzY10gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZjQwXSA9IGZmZmZmZmZmIC4uLi4g
DQpbMDA0MTZmNDRdID0gZmZmZmZmZmYgLi4uLiANClswMDQxNmY0OF0gPSA3M2JlZThkNCAuLi5z
IFsrIDB4MDAwMF0gZ2xvYmFsRGVzdHJ1Y3RvckZ1bmMNClswMDQxNmY0Y10gPSAwMDQxNmZkMCAu
b0EuIA0KWzAwNDE2ZjUwXSA9IGZmZmZmZmZmIC4uLi4gDQpbMDA0MTZmNTRdID0gZmZmZmZmZmYg
Li4uLiANClswMDQxNmY1OF0gPSA4MDQzMjVjMCAuJUMuIFsrIDB4MDAwOF0gdnRhYmxlIGZvciBY
TGVhdmVFeGNlcHRpb24NClswMDQxNmY1Y10gPSA3M2JlZThkNCAuLi5zIFsrIDB4MDAwMF0gZ2xv
YmFsRGVzdHJ1Y3RvckZ1bmMNClswMDQxNmY2MF0gPSA3M2JlODAwMCAuLi5zIFsrIDB4MDAwMF0g
X0UzMlN0YXJ0dXANClswMDQxNmY2NF0gPSAwMDAwMDAwMCAuLi4uIA0KWzAwNDE2ZjY4XSA9IDAw
MDAwMDAwIC4uLi4gDQpbMDA0MTZmNmNdID0gMDA0MTZmOTAgLm9BLiANClswMDQxNmY3MF0gPSAw
MDAwMDAwMCAuLi4uIA0KWzAwNDE2Zjc0XSA9IDAwMDE0MDAwIC5ALi4gDQpbMDA0MTZmNzhdID0g
NzNiZTgwMDAgLi4ucyBbKyAweDAwMDBdIF9FMzJTdGFydHVwDQpbMDA0MTZmN2NdID0gNzNiZWU5
MjggKC4ucyBbKyAweDAwM2NdIFJ1blRocmVhZA0KWzAwNDE2ZjgwXSA9IDAwMDAwMDAwIC4uLi4g
DQpbMDA0MTZmODRdID0gMDA0MTcwMDAgLnBBLiANClswMDQxNmY4OF0gPSAwMDAxNDAwMCAuQC4u
IA0KWzAwNDE2ZjhjXSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZmOTBdID0gMDAwMDAwMDAgLi4u
LiANClswMDQxNmY5NF0gPSAwMDAwMDAwMyAuLi4uIA0KWzAwNDE2Zjk4XSA9IDczYmU4MDAwIC4u
LnMgWysgMHgwMDAwXSBfRTMyU3RhcnR1cA0KWzAwNDE2ZjljXSA9IDAwMDAwMDAwIC4uLi4gDQpb
MDA0MTZmYTBdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmZhNF0gPSAwMDAwMDAwMCAuLi4uIA0K
WzAwNDE2ZmE4XSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZmYWNdID0gMDAwMTQwMDAgLkAuLiAN
ClswMDQxNmZiMF0gPSBmZmZmZmZmYiAuLi4uIA0KWzAwNDE2ZmI0XSA9IDEwMDAwMDA0IC4uLi4g
DQpbMDA0MTZmYjhdID0gODAwOGZmZTQgLi4uLiBbKyA/Pz8/Pz9dIF9yYXB1X2VrZXJuLmV4ZQ0K
WzAwNDE2ZmJjXSA9IDAwMDAwMDQwIEAuLi4gDQpbMDA0MTZmYzBdID0gMDAwMDAwMDAgLi4uLiAN
ClswMDQxNmZjNF0gPSAwMDAxNDAwMCAuQC4uIA0KWzAwNDE2ZmM4XSA9IDAyMDAwMDAwIC4uLi4g
DQpbMDA0MTZmY2NdID0gMDAwMDAwMDAgLi4uLiANClswMDQxNmZkMF0gPSAwMDcwMDAwMCAuLnAu
IA0KWzAwNDE2ZmQ0XSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZmZDhdID0gMDAwMDAwMDAgLi4u
LiANClswMDQxNmZkY10gPSAwMDcwMDAwMCAuLnAuIA0KWzAwNDE2ZmUwXSA9IDAwMDAwMDBjIC4u
Li4gDQpbMDA0MTZmZTRdID0gMDBjZWRmMzggOC4uLiANClswMDQxNmZlOF0gPSAwMDAwMDAwYyAu
Li4uIA0KWzAwNDE2ZmVjXSA9IDAwMDAwMDAwIC4uLi4gDQpbMDA0MTZmZjBdID0gMDAwMDAwMGMg
Li4uLiANClswMDQxNmZmNF0gPSAwMDAwMDAwMiAuLi4uIA0KWzAwNDE2ZmY4XSA9IDAwMDAwMDAw
IC4uLi4gDQpbMDA0MTZmZmNdID0gMDAwMDAwMDAgLi4uLiANCg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51735</attachid>
            <date>2010-03-26 06:21:52 -0700</date>
            <delta_ts>2010-03-26 10:04:14 -0700</delta_ts>
            <desc>proposed fix for webcore/config.h</desc>
            <filename>crashonexit.patch</filename>
            <type>text/plain</type>
            <size>1065</size>
            <attacher name="Janne Koskinen">koshuin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDAzOTA0NC4uYjU4MjVmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wMy0yNiAgSmFubmUgS29za2lu
ZW4gIDxqYW5uZS5wLmtvc2tpbmVuQGRpZ2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCB1bmRlZmluZSBTS0lQX1NUQVRJQ19DT05T
VFJVQ1RPUlNfT05fR0NDIGZvciBTeW1iaWFuIEhXIHRhcmdldHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDA4MQorCisgICAgICAgIERlZmluaW5n
IFN0cmluZ0ltcGwgaW5zdGFuY2VzIGFzIGdsb2JhbHMgd2lsbCBjYXVzZSBhIGNyYXNoIG9uIHBy
b2Nlc3MgZXhpdCBhcyAKKyAgICAgICAgU3RyaW5nSW1wbDo6UmVtb3ZlIGV4cGVjdHMgVExTIHdo
aWNoIHdhcyBhbHJlYWR5IGRlbGV0ZWQgYXQgdGltZSBvZiBleGl0aW5nIG1haW4gYW5kIGVuZHMg
dXAKKyAgICAgICAgY29uc3RydWN0aW5nIG9uZSBleGl0aW5nIHRocmVhZC4KKworICAgICAgICAq
IGNvbmZpZy5oOgorCiAyMDEwLTAzLTI2ICBRaSBaaGFuZyAgPHFpLjIuemhhbmdAbm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2NvbmZpZy5oIGIvV2ViQ29yZS9jb25maWcuaAppbmRleCAyODA1YTg5Li5lOWQ2ODhiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2NvbmZpZy5oCisrKyBiL1dlYkNvcmUvY29uZmlnLmgKQEAgLTE3
NSw3ICsxNzUsOSBAQAogI2lmIE9TKFNZTUJJQU4pCiAjdW5kZWYgV0lOMzIKICN1bmRlZiBfV0lO
MzIKKyNpZiBDT01QSUxFUihXSU5TQ1cpCiAjdW5kZWYgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JT
X09OX0dDQworI2VuZGlmCiAjZGVmaW5lIFVTRV9TWVNURU1fTUFMTE9DIDEKICNkZWZpbmUgVV9I
QVZFX0lOVDhfVCAwCiAjZGVmaW5lIFVfSEFWRV9JTlQxNl9UIDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>