<?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>155490</bug_id>
          
          <creation_ts>2016-03-15 03:57:09 -0700</creation_ts>
          <short_desc>[Fetch API] response-consume.html is crashing on Mac WK1 Debug builds</short_desc>
          <delta_ts>2016-03-17 04:25:01 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1174955</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-15 03:57:09 -0700</bug_when>
    <thetext>As shown in https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r198134%20(11545)/results.html, response-consume.html is often crashing.
This can be reproduced locally.

Crash log is:
ASSERTION FAILED: m_heap-&gt;vm()-&gt;currentThreadIsHoldingAPILock()
/Users/youenn/Documents/WebKit/Source/JavaScriptCore/heap/MarkedAllocator.cpp(146) : void *JSC::MarkedAllocator::allocateSlowCase(size_t)
1   0x10306b490 WTFCrash
2   0x102ca4ac9 JSC::MarkedAllocator::allocateSlowCase(unsigned long)
3   0x102122bea JSC::MarkedAllocator::allocate(unsigned long)
4   0x10220e839 JSC::MarkedSpace::allocateWithDestructor(unsigned long)
5   0x10220e7fc JSC::Heap::allocateWithDestructor(unsigned long)
6   0x102217e6a void* JSC::Heap::allocateObjectOfType&lt;JSC::JSString&gt;(unsigned long)
7   0x102217dc4 void* JSC::allocateCell&lt;JSC::JSString&gt;(JSC::Heap&amp;, unsigned long)
8   0x102217b1c void* JSC::allocateCell&lt;JSC::JSString&gt;(JSC::Heap&amp;)
9   0x1022177d0 JSC::JSString::create(JSC::VM&amp;, WTF::PassRefPtr&lt;WTF::StringImpl&gt;)
10  0x102217496 JSC::jsString(JSC::VM*, WTF::String const&amp;)
11  0x10240cc55 JSC::jsString(JSC::ExecState*, WTF::String const&amp;)
12  0x102c756ee JSC::LiteralParser&lt;unsigned char&gt;::parse(JSC::ParserState)
13  0x102a46b87 JSC::LiteralParser&lt;unsigned char&gt;::tryLiteralParse()
14  0x102bcd6bd JSC::JSONParse(JSC::ExecState*, WTF::String const&amp;)
15  0x108413220 WebCore::FetchBody::resolveAsJSON(WebCore::ScriptExecutionContext&amp;, WTF::String const&amp;, WebCore::DeferredWrapper&amp;&amp;)
16  0x108413b74 WebCore::FetchBody::loadedAsText(WebCore::ScriptExecutionContext&amp;, WTF::String&amp;&amp;)
17  0x108f62150 WebCore::FetchBodyOwner::loadedBlobAsText(WTF::String&amp;&amp;)
18  0x108f62704 WebCore::FetchBodyOwner::BlobLoader::didFinishLoadingAsText(WTF::String&amp;&amp;)
19  0x109f48c07 WebCore::FetchLoader::didFinishLoading(unsigned long, double)
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174957</commentid>
    <comment_count>1</comment_count>
      <attachid>274087</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-15 04:02:29 -0700</bug_when>
    <thetext>Created attachment 274087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174995</commentid>
    <comment_count>2</comment_count>
      <attachid>274087</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-15 09:39:02 -0700</bug_when>
    <thetext>Comment on attachment 274087
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=274087&amp;action=review

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:214
&gt; +    DOMRequestState::Scope scope(state);

This locks state.exec().  The other use of DOMRequestState in deserializeIDBValueDataToJSValue calls exec.vm().apiLock().lock() and exec.vm().apiLock().unlock() manually.  That sounds like it would fix the assertion better than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175006</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-15 10:36:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 274087 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274087&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:214
&gt; &gt; +    DOMRequestState::Scope scope(state);
&gt; 
&gt; This locks state.exec().  The other use of DOMRequestState in
&gt; deserializeIDBValueDataToJSValue calls exec.vm().apiLock().lock() and
&gt; exec.vm().apiLock().unlock() manually.  That sounds like it would fix the
&gt; assertion better than this.

I am not sure to see the difference between the two approaches.
Can you elaborate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175010</commentid>
    <comment_count>4</comment_count>
      <attachid>274087</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-15 10:49:46 -0700</bug_when>
    <thetext>Comment on attachment 274087
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=274087&amp;action=review

&gt;&gt;&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:214
&gt;&gt;&gt; +    DOMRequestState::Scope scope(state);
&gt;&gt; 
&gt;&gt; This locks state.exec().  The other use of DOMRequestState in deserializeIDBValueDataToJSValue calls exec.vm().apiLock().lock() and exec.vm().apiLock().unlock() manually.  That sounds like it would fix the assertion better than this.
&gt; 
&gt; I am not sure to see the difference between the two approaches.
&gt; Can you elaborate?

I was thinking a JSLockHolder locked something else, but looking into JSLockHolder::init I see these are indeed the same thing.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:217
&gt;      if (!value)
&gt;          promise.reject&lt;ExceptionCode&gt;(SYNTAX_ERR);

Don&apos;t we want to release the lock before this code?  I think scope needs its own scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175344</commentid>
    <comment_count>5</comment_count>
      <attachid>274188</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-16 07:24:11 -0700</bug_when>
    <thetext>Created attachment 274188
Removing use of DOMRequestState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175345</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-16 07:31:26 -0700</bug_when>
    <thetext>&gt; Don&apos;t we want to release the lock before this code?  I think scope needs its
&gt; own scope.

Right, it improves the code a bit.

Looking at DOMRequestState, it seems DOMRequestState::Scope is used nowhere in WebKit. I migrated JSON parsing in a dedicated promise resolution routine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175397</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-16 10:43:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Looking at DOMRequestState, it seems DOMRequestState::Scope is used nowhere
&gt; in WebKit. 
Let&apos;s delete it, then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175528</commentid>
    <comment_count>8</comment_count>
      <attachid>274188</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-16 15:20:47 -0700</bug_when>
    <thetext>Comment on attachment 274188
Removing use of DOMRequestState

View in context: https://bugs.webkit.org/attachment.cgi?id=274188&amp;action=review

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:249
&gt; +void FetchBody::loadedAsText(String&amp;&amp; text)
&gt;  {
&gt;      ASSERT(m_consumer);
&gt;      ASSERT(m_consumer-&gt;type == Consumer::Type::Text || m_consumer-&gt;type == Consumer::Type::JSON);
&gt;      if (m_consumer-&gt;type == Consumer::Type::Text)
&gt;          m_consumer-&gt;promise.resolve(text);
&gt;      else
&gt; -        resolveAsJSON(context, text, WTFMove(m_consumer-&gt;promise));
&gt; +        fulfillPromiseWithJSON(m_consumer-&gt;promise, text);
&gt;      m_consumer = Nullopt;
&gt;  }

The value is passed in as an rvalue reference, but no code paths move it; they all seem to copy it instead. Do we need to add some calls to WTFMove here?

&gt; Source/WebCore/bindings/js/JSDOMPromise.cpp:85
&gt; +static inline JSC::JSValue parseAsJSON(JSC::ExecState* state, const String&amp; data)
&gt; +{
&gt; +    JSC::JSLockHolder lock(state);
&gt; +    return JSC::JSONParse(state, data);
&gt; +}

I would have used a reference here instead of a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175677</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-17 03:41:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 274188 [details]
&gt; Removing use of DOMRequestState
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274188&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:249
&gt; &gt; +void FetchBody::loadedAsText(String&amp;&amp; text)
&gt; &gt;  {
&gt; &gt;      ASSERT(m_consumer);
&gt; &gt;      ASSERT(m_consumer-&gt;type == Consumer::Type::Text || m_consumer-&gt;type == Consumer::Type::JSON);
&gt; &gt;      if (m_consumer-&gt;type == Consumer::Type::Text)
&gt; &gt;          m_consumer-&gt;promise.resolve(text);
&gt; &gt;      else
&gt; &gt; -        resolveAsJSON(context, text, WTFMove(m_consumer-&gt;promise));
&gt; &gt; +        fulfillPromiseWithJSON(m_consumer-&gt;promise, text);
&gt; &gt;      m_consumer = Nullopt;
&gt; &gt;  }
&gt; 
&gt; The value is passed in as an rvalue reference, but no code paths move it;
&gt; they all seem to copy it instead. Do we need to add some calls to WTFMove
&gt; here?

Ideally promises should be able to take rvalues but they are not doing so.
loadedAsArrayBuffer is taking an rvalue as it will store the body data as ArrayBuffer if there is no pending promise.
loadedAsText takes an rvalue for consistency here, although other future clients may actually take ownership of text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175685</commentid>
    <comment_count>10</comment_count>
      <attachid>274188</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-17 04:24:56 -0700</bug_when>
    <thetext>Comment on attachment 274188
Removing use of DOMRequestState

Clearing flags on attachment: 274188

Committed r198326: &lt;http://trac.webkit.org/changeset/198326&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175686</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-17 04:25:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274087</attachid>
            <date>2016-03-15 04:02:29 -0700</date>
            <delta_ts>2016-03-16 07:23:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155490-20160315120216.patch</filename>
            <type>text/plain</type>
            <size>3112</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzBlZmExNDdjZmI5Y2U2
OTYzNjk2OGI4YjM2NWYwNjEyNWJkMWU1OS4uNmYxZmJjN2U5MmVmZDI3NGM5MmY0YjBiYmE2ZDI0
NjVjYWYzMTQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAzLTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gcmVzcG9uc2UtY29uc3VtZS5odG1sIGlzIGNyYXNoaW5nIG9uIE1hYyBXSzEgRGVidWcg
YnVpbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IHJlbW92aW5nIGNyYXNoIHRlc3QgZXhwZWN0YXRpb24uCisKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OnJlc29sdmVBc0pTT04pOiBVc2luZyBKUyBsb2NrIHdoZW4gcGFyc2luZyBKU09OLiAKKwogMjAx
Ni0wMy0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjE5NzcyNCk6IFtHVEtdIFdlYiBJbnNwZWN0b3I6IEltYWdlcyBi
ZWluZyBibG9ja2VkIGJ5IENTUCAyLjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcAppbmRleCAxZWZhMTk3YzM2NmI2Yzc1YjA5ODAzNGE5ODM1NWExNTEzOTcyYmNj
Li4xNmExMjU2ZjViMjZhZTAwM2YwZjBmNDgwYjZlYjU0ZWY4ZTk0NTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAgdm9p
ZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25lciwgQ29uc3VtZXI6
OlR5cGUgdHlwZSwgRGVmZXJyZWQKIHZvaWQgRmV0Y2hCb2R5OjpyZXNvbHZlQXNKU09OKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YSwgRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkKIHsKICAgICBET01SZXF1ZXN0U3RhdGUgc3RhdGUoJmNvbnRleHQp
OworICAgIERPTVJlcXVlc3RTdGF0ZTo6U2NvcGUgc2NvcGUoc3RhdGUpOwogICAgIEpTQzo6SlNW
YWx1ZSB2YWx1ZSA9IEpTQzo6SlNPTlBhcnNlKHN0YXRlLmV4ZWMoKSwgZGF0YSk7CiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oU1lOVEFYX0VS
Uik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYmU1ZWIyZDE2MWM0MjhiNzBkYjFkNmYxNzlhN2I1N2E5M2Q2Njg5Mi4uYWJm
NmMwYmU4ZDc3YWJlMDIxNmJiZmI5MWQ2OWMzYzllYjU3OGMxNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDE2LTAzLTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gcmVzcG9uc2UtY29uc3VtZS5odG1sIGlzIGNyYXNo
aW5nIG9uIE1hYyBXSzEgRGVidWcgYnVpbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IHJlbW92aW5nIGZldGNoIEFQ
SSByZXNwb25zZS1jb25zdW1lLmh0bWwgdGVzdCBjcmFzaCBleHBlY3RhdGlvbiBvbiBkZWJ1ZyBi
dWlsZC4KKwogMjAxNi0wMy0xNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTk3MTE0KTogQ3Jhc2ggaW4gV2ViQ29yZTo6TWVkaWFE
ZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxldGVQZXJtaXNzaW9uQ2hlY2sKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGZkOTk3YjhlNjE3OGEwZmIzMzAxYmJkOWQwZjg0ZDRjNjRjYjQ4M2QuLjhlNjE0YzFj
MGJhMjM5ODRmMDVmOWU4Nzc3ZmJhNDJlYjVlNzhlYjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MzIzLDkgKzMyMyw2IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2Jhc2ljL3NjaGVtZS1ibG9iLXdvcmtlci5odG1sIFsgRmFpbHVyCiAjIE5ldyBXM0MgcmVmIHRl
c3RzIHRoYXQgYXJlIGZhaWxpbmcuCiB3ZWJraXQub3JnL2IvMTQ4ODU2IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtdmlk
ZW8tZWxlbWVudC92aWRlb19pbml0aWFsbHlfcGF1c2VkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KIAotIyBGZXRjaCBBUEkgdGVzdHMKLVsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLmh0bWwgWyBQYXNz
IENyYXNoIF0KLQogIyBAc3VwcG9ydHMgVzNDIEZhaWx1cmVzCiB3ZWJraXQub3JnL2IvMTM3NTY2
IGNzczMvY29uZGl0aW9uYWwvdzNjL2F0LXN1cHBvcnRzLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMTM3NTY4IGNzczMvY29uZGl0aW9uYWwvdzNjL2F0LXN1cHBv
cnRzLTAxNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274188</attachid>
            <date>2016-03-16 07:24:11 -0700</date>
            <delta_ts>2016-03-17 04:24:56 -0700</delta_ts>
            <desc>Removing use of DOMRequestState</desc>
            <filename>bug-155490-20160316152356.patch</filename>
            <type>text/plain</type>
            <size>8289</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcxNTdhY2YyMTg0YjAy
MmRkM2ZlZGQ5ZDNjMTZkODgyMDQ0MWQxMi4uNmYzYzA4OWEzZDEyYmNlMDU0ZjhiZjZiNWYyMDFk
NTdlMDYxZGVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAzLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gcmVzcG9uc2UtY29uc3VtZS5odG1sIGlzIGNyYXNoaW5nIG9uIE1hYyBXSzEgRGVidWcg
YnVpbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTU0OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgIEVuc3VyZWQgdG8gbG9jayBzdGF0
ZSBiZWZvcmUgY2FsbGluZyBKU0M6SlNPTlBhcnNlLgorICAgICAgICBBZGRpbmcgZnVsZmlsbFBy
b21pc2VXaXRoSlNPTiByb3V0aW5lIHRvIGhhbmRsZSBpdC4KKyAgICAgICAgQXBwbGllZCBpdCB0
byBGZXRjaEJvZHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Ojpsb2FkZWRBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpyZXNv
bHZlQXNKU09OKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
OgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUFzSlNP
Tik6CisgICAgICAgIChXZWJDb3JlOjpmdWxmaWxsUHJvbWlzZVdpdGhKU09OKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKwogMjAxNi0wMy0xNiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTk1
NjYxKTogW0dUS10gdmVyeSBzbG93IHNjcm9sbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDFlZmExOTdjMzY2YjZjNzViMDk4MDM0YTk4MzU1YTE1
MTM5NzJiY2MuLjMxZGQwZWVlNzcyYTgyN2ZlMzI5ODI0ZjBlNzcyN2E2ODUzMzUxMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTM4LDcgKzM4LDYg
QEAKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1
ZGUgIkpTRE9NRm9ybURhdGEuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzUsMTEgKzEzNCw4IEBAIHZvaWQgRmV0Y2hCb2R5
Ojpqc29uKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkK
ICAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJlZChDb25zdW1lcjo6VHlwZTo6SlNPTiwg
cHJvbWlzZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghb3duZXIuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV90eXBlID09IFR5cGU6
OlRleHQpIHsKLSAgICAgICAgcmVzb2x2ZUFzSlNPTigqb3duZXIuc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBtX3RleHQsIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICBmdWxmaWxsUHJvbWlz
ZVdpdGhKU09OKHByb21pc2UsIG1fdGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1vdmUocHJvbWlzZSkpOwpA
QCAtMjA4LDE2ICsyMDQsNiBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZAogICAgIG93bmVyLmxv
YWRCbG9iKCptX2Jsb2IsIGxvYWRpbmdUeXBlKHR5cGUpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6
OnJlc29sdmVBc0pTT04oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQotewotICAgIERPTVJlcXVlc3RT
dGF0ZSBzdGF0ZSgmY29udGV4dCk7Ci0gICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gSlNDOjpKU09O
UGFyc2Uoc3RhdGUuZXhlYygpLCBkYXRhKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICBwcm9t
aXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihTWU5UQVhfRVJSKTsKLSAgICBlbHNlCi0gICAgICAg
IHByb21pc2UucmVzb2x2ZSh2YWx1ZSk7Ci19Ci0KIFZlY3RvcjxjaGFyPiBGZXRjaEJvZHk6OmV4
dHJhY3RGcm9tVGV4dCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpUZXh0
KTsKQEAgLTI1MSwxNCArMjM3LDE0IEBAIHZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc0FycmF5QnVm
ZmVyKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgbV9jb25zdW1lciA9IE51bGxv
cHQ7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc1RleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgU3RyaW5nJiYgdGV4dCkKK3ZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc1Rl
eHQoU3RyaW5nJiYgdGV4dCkKIHsKICAgICBBU1NFUlQobV9jb25zdW1lcik7CiAgICAgQVNTRVJU
KG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OlRleHQgfHwgbV9jb25zdW1lci0+
dHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6SlNPTik7CiAgICAgaWYgKG1fY29uc3VtZXItPnR5cGUg
PT0gQ29uc3VtZXI6OlR5cGU6OlRleHQpCiAgICAgICAgIG1fY29uc3VtZXItPnByb21pc2UucmVz
b2x2ZSh0ZXh0KTsKICAgICBlbHNlCi0gICAgICAgIHJlc29sdmVBc0pTT04oY29udGV4dCwgdGV4
dCwgV1RGTW92ZShtX2NvbnN1bWVyLT5wcm9taXNlKSk7CisgICAgICAgIGZ1bGZpbGxQcm9taXNl
V2l0aEpTT04obV9jb25zdW1lci0+cHJvbWlzZSwgdGV4dCk7CiAgICAgbV9jb25zdW1lciA9IE51
bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4
IDk2NWY4MDUwMDAwNjlmOTQ0ZjdiM2Y3Y2MwNTZiNGE4NDg1OWE0MGIuLmE1YjNjMDZjOGVlZTk1
YjYyZGQwYTA0YzRmZjg5ZDZhNTU5ZWRiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRp
bmdGYWlsZWQoKTsKICAgICB2b2lkIGxvYWRlZEFzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVm
ZmVyPiYmKTsKLSAgICB2b2lkIGxvYWRlZEFzVGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
U3RyaW5nJiYpOworICAgIHZvaWQgbG9hZGVkQXNUZXh0KFN0cmluZyYmKTsKIAogcHJpdmF0ZToK
ICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBUZXh0LCBCbG9iLCBGb3JtRGF0YSB9OwpAQCAt
ODYsNyArODYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgcHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJl
ZChDb25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJik7CiAgICAgdm9pZCBjb25zdW1lVGV4
dChDb25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHZvaWQgY29uc3VtZUJs
b2IoRmV0Y2hCb2R5T3duZXImLCBDb25zdW1lcjo6VHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYpOwot
ICAgIHZvaWQgcmVzb2x2ZUFzSlNPTihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiwgRGVmZXJyZWRXcmFwcGVyJiYpOwogICAgIHN0YXRpYyBGZXRjaExvYWRlcjo6VHlwZSBs
b2FkaW5nVHlwZShDb25zdW1lcjo6VHlwZSk7CiAKICAgICBUeXBlIG1fdHlwZSA9IFR5cGU6Ok5v
bmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CmluZGV4IDdkMjU0YzgxM2M4MTk4OWY1YjdkMmU0NDhlYTk3ODI4ZWYyNDQ4N2IuLjg2MGVlM2Zh
MjYyMDJkMzMyZjlkODcwYTc4NjZhMmE1YzhiOWM1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC02OSw5ICs2OSw3IEBAIHZvaWQg
RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKEJsb2ImIGJsb2IsIEZldGNoTG9hZGVyOjpUeXBlIHR5
cGUpCiAKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRlZEJsb2JBc1RleHQoU3RyaW5nJiYgdGV4
dCkKIHsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLQotICAgIG1fYm9k
eS5sb2FkZWRBc1RleHQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZSh0ZXh0KSk7
CisgICAgbV9ib2R5LmxvYWRlZEFzVGV4dChXVEZNb3ZlKHRleHQpKTsKIH0KIAogdm9pZCBGZXRj
aEJvZHlPd25lcjo6ZmluaXNoQmxvYkxvYWRpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NUHJvbWlzZS5jcHAKaW5kZXggOTg4NTI4ZDBhYmZiYmMzMDgyMTc3MzI4MTZkOWEz
ZTk1YTBhNjcwNC4uYmZjNWQ3ZjM3OWI0ZWJiZjZjNzM2ZjYwOWUwZmIwM2U0MmZkMzBkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
eGNlcHRpb24uaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTT05PYmplY3QuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKIApAQCAtNzcsNCArNzgsMTkgQEAgdm9pZCByZWplY3RQcm9taXNlV2l0aEV4
Y2VwdGlvbklmQW55KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmIGcK
ICAgICBEZWZlcnJlZFdyYXBwZXIoJnN0YXRlLCAmZ2xvYmFsT2JqZWN0LCAmcHJvbWlzZURlZmVy
cmVkKS5yZWplY3QoZXJyb3IpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBwYXJz
ZUFzSlNPTihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKK3sKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKyAgICByZXR1cm4gSlNDOjpKU09OUGFy
c2Uoc3RhdGUsIGRhdGEpOworfQorCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oRGVmZXJy
ZWRXcmFwcGVyJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGRhdGEpCit7CisgICAgSlNDOjpKU1Zh
bHVlIHZhbHVlID0gcGFyc2VBc0pTT04ocHJvbWlzZS5nbG9iYWxPYmplY3QoKS5nbG9iYWxFeGVj
KCksIGRhdGEpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2Vw
dGlvbkNvZGU+KFNZTlRBWF9FUlIpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KHZhbHVlKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCA3MzllZDhhOWRjMGU3MmQ4OWIzYWU3M2ViYWZkNjI4NTE1NjUzMjI2Li5iZWVkNjA2
YmQ3YTA0NWEyOGY0NzdlNzYxMjY2NDY2Mjg3ZjI2OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtNTUsNiArNTUsNyBAQCBwcml2YXRlOgogICAgIEpT
Qzo6U3Ryb25nPEpTQzo6SlNQcm9taXNlRGVmZXJyZWQ+IG1fZGVmZXJyZWQ7CiB9OwogCit2b2lk
IGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oRGVmZXJyZWRXcmFwcGVyJiwgY29uc3QgU3RyaW5nJik7
CiB2b2lkIHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBK
U0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKIAogaW5saW5lIEpT
Qzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSBwcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
UHJvbWlzZURlZmVycmVkKikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTIyMzczYTk3Njk1MzQzZThjYWQwMzZiMzFhY2M3
MTM4OWE0YjJmMy4uNDE5NzhhYzgwZTYzZjBlNTQwNmQyMWQ0YjBkMDg4NDk3YjU4NjIyOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTAzLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNoIEFQSV0gcmVzcG9uc2UtY29uc3Vt
ZS5odG1sIGlzIGNyYXNoaW5nIG9uIE1hYyBXSzEgRGVidWcgYnVpbGRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU0OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFJl
bW92ZWQgY3Jhc2ggZGVidWcgZXhwZWN0YXRpb24gb2YgcmVzcG9uc2UtY29uc3VtZS5odG1sCisK
IDIwMTYtMDMtMTUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgb3ZlcmZsb3c6IC13ZWJraXQtbWFycXVlZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTdj
YWM2MzU4ZWU5YTU3NjIyYmE1YjY5NjZmMzk4NjJlMjdkNjY0ZS4uMTI5MjIwNzc5ODcwNGMyZTc5
NGYzMmUzNmY3M2EzNjFhZGU5MjM2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMjQsOSArMzI0
LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvc2No
ZW1lLWJsb2Itd29ya2VyLmh0bWwgWyBGYWlsdXIKICMgTmV3IFczQyByZWYgdGVzdHMgdGhhdCBh
cmUgZmFpbGluZy4KIHdlYmtpdC5vcmcvYi8xNDg4NTYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS12aWRlby1lbGVtZW50
L3ZpZGVvX2luaXRpYWxseV9wYXVzZWQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIEZl
dGNoIEFQSSB0ZXN0cwotWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3Jlc3BvbnNlL3Jlc3BvbnNlLWNvbnN1bWUuaHRtbCBbIFBhc3MgQ3Jhc2ggXQot
CiAjIEBzdXBwb3J0cyBXM0MgRmFpbHVyZXMKIHdlYmtpdC5vcmcvYi8xMzc1NjYgY3NzMy9jb25k
aXRpb25hbC93M2MvYXQtc3VwcG9ydHMtMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xMzc1NjggY3NzMy9jb25kaXRpb25hbC93M2MvYXQtc3VwcG9ydHMtMDE0Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>