<?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>149485</bug_id>
          
          <creation_ts>2015-09-22 16:50:10 -0700</creation_ts>
          <short_desc>[WK1] Null dereference loading Blink layout test fast/parser/xhtml-dom-character-data-modified-crash.html</short_desc>
          <delta_ts>2019-02-06 09:02:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>BlinkMergeCandidate, HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Honeycutt">jhoneycutt</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128162</commentid>
    <comment_count>0</comment_count>
      <attachid>261779</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-09-22 16:50:10 -0700</bug_when>
    <thetext>Created attachment 261779
crashing test

Null dereference loading Blink layout test parser/xhtml-dom-character-data-modified-crash.html.

Test added in https://codereview.chromium.org/1267283002.


Stack trace:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000

Application Specific Information:
CRASHING TEST: temp-tests/fast/parser/xhtml-dom-character-data-modified-crash.html
This process is running with libgmalloc.dylib (GuardMalloc) which may have forced the crash due to a memory access error.
 

Global Trace Buffer (reverse chronological seconds):
48.335848    CFNetwork                 	0x00007fff88d445cd Creating default cookie storage with process/bundle identifier
48.335848    CFNetwork                 	0x00007fff88d44565 Faulting in CFHTTPCookieStorage singleton
48.335855    CFNetwork                 	0x00007fff88ba7b49 Faulting in NSHTTPCookieStorage singleton

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000107361a52 WebCore::XMLDocumentParser::endElementNs() + 130 (XMLDocumentParserLibxml2.cpp:887)
1   libxml2.2.dylib               	0x00007fff8c5a1d16 xmlParseEndTag2 + 917
2   libxml2.2.dylib               	0x00007fff8c5a42fe xmlParseTryOrFinish + 3216
3   libxml2.2.dylib               	0x00007fff8c5a3479 xmlParseChunk + 905
4   com.apple.WebCore             	0x000000010736064b WebCore::XMLDocumentParser::doWrite(WTF::String const&amp;) + 475 (Vector.h:634)
5   com.apple.WebCore             	0x000000010735e590 WebCore::XMLDocumentParser::append(WTF::PassRefPtr&lt;WTF::StringImpl&gt;) + 208 (StdLibExtras.h:366)
6   com.apple.WebCore             	0x0000000106586565 WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter&amp;, char const*, unsigned long) + 117 (StdLibExtras.h:366)
7   com.apple.WebCore             	0x00000001065cf051 WebCore::DocumentLoader::commitData(char const*, unsigned long) + 657 (DocumentLoader.cpp:857)
8   com.apple.WebKitLegacy        	0x0000000108a3ea82 -[WebHTMLRepresentation receivedData:withDataSource:] + 98 (WebHTMLRepresentation.mm:198)
9   com.apple.WebKitLegacy        	0x0000000108a0d7a0 -[WebDataSource(WebInternal) _receivedData:] + 64 (WebDataSource.mm:242)
10  com.apple.WebKitLegacy        	0x0000000108a2af9d WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) + 109 (WebFrameLoaderClient.mm:1014)
11  com.apple.WebCore             	0x00000001065d0b01 WebCore::DocumentLoader::commitLoad(char const*, int) + 145 (DocumentLoader.h:225)
12  com.apple.WebCore             	0x00000001063fb250 WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*, unsigned int) + 160 (CachedResourceClientWalker.h:51)
13  com.apple.WebCore             	0x00000001063fb121 WebCore::CachedRawResource::addDataBuffer(WebCore::SharedBuffer&amp;) + 145 (CachedRawResource.cpp:70)
14  com.apple.WebCore             	0x0000000107175f8a WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int, WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, long long, WebCore::DataPayloadType) + 218 (SubresourceLoader.cpp:292)
15  com.apple.WebCore             	0x000000010717603c WebCore::SubresourceLoader::didReceiveBuffer(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, long long, WebCore::DataPayloadType) + 44 (StdLibExtras.h:366)
16  com.apple.WebCore             	0x000000010700ea7c WebCore::ResourceLoader::didReceiveBuffer(WebCore::ResourceHandle*, WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, int) + 44 (StdLibExtras.h:366)
17  com.apple.WebCore             	0x00000001072f2f6a -[WebCoreResourceHandleAsDelegate connection:didReceiveDataArray:] + 106 (StdLibExtras.h:366)
18  com.apple.CFNetwork           	0x00007fff88c5c622 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 69
19  com.apple.CFNetwork           	0x00007fff88c5c49e -[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:] + 233
20  com.apple.CFNetwork           	0x00007fff88c5c3a3 -[NSURLConnectionInternal _withActiveConnectionAndDelegate:] + 48
21  com.apple.CFNetwork           	0x00007fff88da98fc _NSURLConnectionDidReceiveDataArray(_CFURLConnection*, __CFArray const*, void const*) + 82
22  com.apple.CFNetwork           	0x00007fff88c5cc61 ___ZN27URLConnectionClient_Classic29_delegate_didReceiveDataArrayEv_block_invoke + 145
23  com.apple.CFNetwork           	0x00007fff88d3ad5f ___ZN27URLConnectionClient_Classic18_withDelegateAsyncEPKcU13block_pointerFvP16_CFURLConnectionPK33CFURLConnectionClientCurrent_VMaxE_block_invoke_2 + 100
24  libdispatch.dylib             	0x00007fff96096331 _dispatch_client_callout + 8
25  libdispatch.dylib             	0x00007fff960ac9ad _dispatch_block_invoke + 474
26  com.apple.CFNetwork           	0x00007fff88bb67f4 RunloopBlockContext::_invoke_block(void const*, void*) + 24
27  com.apple.CoreFoundation      	0x00007fff949aeff4 CFArrayApplyFunction + 68
28  com.apple.CFNetwork           	0x00007fff88bb66ed RunloopBlockContext::perform() + 137
29  com.apple.CFNetwork           	0x00007fff88bb64c4 MultiplexerSource::perform() + 282
30  com.apple.CFNetwork           	0x00007fff88bb62e6 MultiplexerSource::_perform(void*) + 72
31  com.apple.CoreFoundation      	0x00007fff949e2c01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
32  com.apple.CoreFoundation      	0x00007fff949d4b1c __CFRunLoopDoSources0 + 556
33  com.apple.CoreFoundation      	0x00007fff949d403f __CFRunLoopRun + 927
34  com.apple.CoreFoundation      	0x00007fff949d3a38 CFRunLoopRunSpecific + 296
35  DumpRenderTree                	0x0000000104bf0eb3 runTest(std::__1::basic_string&lt;char, std::__1::char_traits&lt;char&gt;, std::__1::allocator&lt;char&gt; &gt; const&amp;) + 2146 (DumpRenderTree.mm:2031)
36  DumpRenderTree                	0x0000000104bf041a dumpRenderTree(int, char const**) + 2928 (DumpRenderTree.mm:1288)
37  DumpRenderTree                	0x0000000104bf1a2a DumpRenderTreeMain(int, char const**) + 1471 (DumpRenderTree.mm:1424)
38  libdyld.dylib                 	0x00007fff93aa15ad start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128164</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-22 16:50:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/22811489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128165</commentid>
    <comment_count>2</comment_count>
      <attachid>261780</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2015-09-22 16:51:18 -0700</bug_when>
    <thetext>Created attachment 261780
subresource</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129763</commentid>
    <comment_count>3</comment_count>
      <attachid>262214</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-09-30 17:33:17 -0700</bug_when>
    <thetext>Created attachment 262214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129819</commentid>
    <comment_count>4</comment_count>
      <attachid>262214</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-09-30 21:27:38 -0700</bug_when>
    <thetext>Comment on attachment 262214
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:165
&gt;      Vector&lt;xmlChar&gt; empty;
&gt;      m_bufferedText.swap(empty);

Not sure I understand the value of this idiom over simpler ways of writing it, like this:

    m_bufferedText = { };

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:170
&gt; +    // Mutation event handlers executed by appendData() might detach this parser.
&gt; +    return !isStopped();

This comment is super-mysterious. We make this statement, but don’t establish its relevance, nor explain what the return value of the function means.

We should start by adding a comment somewhere that explains the meaning of the return value; I think it returns false if we should stop processing data. I think that’s a bit strange. In fact, why don’t the callers just check isStopped themselves? Why do we need a return value?

Then the comment here would say something like this:

    // We need to check again whether the parser is stopped, since mutation
    // event handlers executed by appendData might have detached this parser.

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:201
&gt; +        // Do not bail out if in a stopped state, but notify document that
&gt; +        // parsing has finished.

This comment is confusing. I think it’s referring to not looking at the return value of updateLeafTextNode, but the phrase “notify document that parsing has finished” seems to refer to code way further down in the function. I suggest just omitting the comment unless there’s something useful to say. Maybe:

    // No need to bail out if the parser is in a stopped state because ...

where you fill in the reason. But I think just omitting the comment is better than what you have here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130008</commentid>
    <comment_count>5</comment_count>
      <attachid>262279</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-01 12:49:55 -0700</bug_when>
    <thetext>Created attachment 262279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130166</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-10-01 23:16:42 -0700</bug_when>
    <thetext>Are we still expected to dispatch synchronous mutation events here? I thought that this was going away.

See bug 81920, bug 85161, bug 68729, bug 64532.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130239</commentid>
    <comment_count>7</comment_count>
      <attachid>262336</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-02 09:15:23 -0700</bug_when>
    <thetext>Created attachment 262336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130240</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-10-02 09:15:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Are we still expected to dispatch synchronous mutation events here? I
&gt; thought that this was going away.
&gt; 
&gt; See bug 81920, bug 85161, bug 68729, bug 64532.

To me it would seem a bit early to drop DOMCharacterDataModified. Even though, it is being phased out, Chrome still supports it for example (although they have a UseCounter on it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130241</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2015-10-02 09:18:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Are we still expected to dispatch synchronous mutation events here? I
&gt; thought that this was going away.
&gt; 
&gt; See bug 81920, bug 85161, bug 68729, bug 64532.

That I don&apos;t know. What&apos;s your opinion? I will CC Jon as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130266</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-10-02 11:17:14 -0700</bug_when>
    <thetext>I expect that someone else CC&apos;ed on the bug will know more about these discussions than myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130977</commentid>
    <comment_count>11</comment_count>
      <attachid>262336</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-06 09:18:26 -0700</bug_when>
    <thetext>Comment on attachment 262336
Patch

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

&gt; Source/WebCore/xml/parser/XMLDocumentParser.cpp:156
&gt; -void XMLDocumentParser::exitText()
&gt; +bool XMLDocumentParser::updateLeafTextNode()

Some day we should return and fix this confusing idiom. It’s not at all clear what the return value means, nor does it seem that callers need this function to do the checks for them. The caller could just check isStopped().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131781</commentid>
    <comment_count>12</comment_count>
      <attachid>262336</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-08 16:45:43 -0700</bug_when>
    <thetext>Comment on attachment 262336
Patch

Clearing flags on attachment: 262336

Committed r190760: &lt;http://trac.webkit.org/changeset/190760&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131782</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-08 16:45:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502814</commentid>
    <comment_count>14</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:02:38 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>261779</attachid>
            <date>2015-09-22 16:50:10 -0700</date>
            <delta_ts>2015-09-22 16:50:10 -0700</delta_ts>
            <desc>crashing test</desc>
            <filename>xhtml-dom-character-data-modified-crash.html</filename>
            <type>text/html</type>
            <size>185</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzY3JpcHQ+CmlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKfQo8
L3NjcmlwdD4KPGlmcmFtZSBzcmM9InJlc291cmNlcy94aHRtbC1vdmVyd3JpdGUtZnJhbWUueGh0
bWwiPjwvaWZyYW1lPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>261780</attachid>
            <date>2015-09-22 16:51:18 -0700</date>
            <delta_ts>2015-09-22 16:51:18 -0700</delta_ts>
            <desc>subresource</desc>
            <filename>xhtml-overwrite-frame.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>318</size>
            <attacher name="Jon Honeycutt">jhoneycutt</attacher>
            
              <data encoding="base64">PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8c2NyaXB0PgpmdW5j
dGlvbiBvdmVyd3JpdGUoKSB7CiAgICB2YXIgdGVzdFJ1bm5lciA9IHdpbmRvdy5wYXJlbnQudGVz
dFJ1bm5lcjsKICAgIHdpbmRvdy5mcmFtZUVsZW1lbnQub3V0ZXJIVE1MID0gIlBBU1MgKG5vIGNy
YXNoKSI7CiAgICBpZiAodGVzdFJ1bm5lcikKICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKfQoKZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVk
Iiwgb3ZlcndyaXRlKTsKPC9zY3JpcHQ+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262214</attachid>
            <date>2015-09-30 17:33:17 -0700</date>
            <delta_ts>2015-10-01 12:49:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149485-20150930173252.patch</filename>
            <type>text/plain</type>
            <size>9129</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIyYjM5YWRkYjVjMDY5
MmQ2YmRkY2JlZGFiNjEwNTQzMjUwNDNiZC4uMmNiYmNjMDMwZDM0OTg0YmI0M2FjMGZjMTllNmQ2
YWU4NWMzMmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA5LTMwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhY2VmdWxseSBoYW5k
bGUgWE1MRG9jdW1lbnRQYXJzZXIgYmVpbmcgZGV0YWNoZWQgYnkgbXV0YXRpb24gZXZlbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDg1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjgxMTQ4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L3BhcnNlci94aHRtbC1kb20tY2hh
cmFjdGVyLWRhdGEtbW9kaWZpZWQtY3Jhc2guaHRtbAorCisgICAgICAgICogeG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNl
cjo6Y3JlYXRlTGVhZlRleHROb2RlSWZOZWVkZWQpOgorICAgICAgICBSZW5hbWVkIGZyb20gZW50
ZXJUZXh0KCkgdG8gbWFrZSBpdCBtb3JlIGRlc2NyaXB0aXZlLiAKKworICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9kZSk6CisgICAgICAgIFJlbmFt
ZWQgZnJvbSBleGl0VGV4dCB0byBmaXJtIHVwIHRoaXMgc3RhZ2UuCisKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmQpOgorICAgICAgICBHcmFjZWZ1bGx5IGhhbmRsZSBz
dG9wcGVkIHN0YXRlcy4KKworICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmVu
dGVyVGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6
ZXhpdFRleHQpOiBEZWxldGVkLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlci5oOgorICAgICAgICBSZW5hbWUgZW50ZXJUZXh0IHRvIGNyZWF0ZUxlYWZUZXh0Tm9kZUlm
TmVlZGVkLgorICAgICAgICBSZW5hbWUgZXhpdFRleHQgdG8gdXBkYXRlTGVhZlRleHROb2RlLgor
CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMpOgorICAgICAgICAo
V2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6Y2RhdGFCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6Y29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6ZW5kRG9jdW1lbnQpOgorICAgICAgICBSZW5hbWUgZnVuY3Rpb24gY2FsbHMg
YW5kIGZpcm0gdXAgdXBkYXRlTGVhZlRleHROb2RlIHN0YWdlIGFjY29yZGluZ2x5LgorCiAyMDE1
LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbCBvdXQgcjE4ODMzMTogIk5ldHdvcmtQcm9jZXNzOiBETlMgcHJlZmV0Y2ggaGFw
cGVucyBpbiB0aGUgV2ViIFByb2Nlc3MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDIxNzg2ZWQ5NDk4MmFlZmQ3YTc0ZjcwOTczZmM2
NTc2NjRkYmU4NWIuLmE0NTE5ODhkYTgyNzBmYWUxYjY3N2NhZDZiMDQ2ZWFhZWYwZjg0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBA
IC0xMzYsMTAgKzEzNiwxMiBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihY
TUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZQogICAgICAgICBzdG9w
UGFyc2luZygpOwogfQogCi12b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbnRlclRleHQoKQordm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6Y3JlYXRlTGVhZlRleHROb2RlSWZOZWVkZWQoKQogeworICAg
IGlmIChtX2xlYWZUZXh0Tm9kZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgQVNTRVJUKG1fYnVm
ZmVyZWRUZXh0LnNpemUoKSA9PSAwKTsKLSAgICBBU1NFUlQoIW1fbGVhZlRleHROb2RlKTsKICAg
ICBtX2xlYWZUZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgp
LCAiIik7CiAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoKm1fbGVhZlRleHRO
b2RlKTsKIH0KQEAgLTE1MCwxOSArMTUyLDIyIEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IHhtbENoYXIqIHN0cmluZywgc2l6ZV90IHNpemUpCiB9CiAKIAotdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6ZXhpdFRleHQoKQorYm9vbCBYTUxEb2N1bWVudFBhcnNlcjo6dXBkYXRl
TGVhZlRleHROb2RlKCkKIHsKICAgICBpZiAoaXNTdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2xlYWZUZXh0Tm9kZSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIG1fbGVhZlRleHROb2RlLT5h
cHBlbmREYXRhKHRvU3RyaW5nKG1fYnVmZmVyZWRUZXh0LmRhdGEoKSwgbV9idWZmZXJlZFRleHQu
c2l6ZSgpKSk7CiAgICAgVmVjdG9yPHhtbENoYXI+IGVtcHR5OwogICAgIG1fYnVmZmVyZWRUZXh0
LnN3YXAoZW1wdHkpOwogCiAgICAgbV9sZWFmVGV4dE5vZGUgPSBudWxscHRyOworCisgICAgLy8g
TXV0YXRpb24gZXZlbnQgaGFuZGxlcnMgZXhlY3V0ZWQgYnkgYXBwZW5kRGF0YSgpIG1pZ2h0IGRl
dGFjaCB0aGlzIHBhcnNlci4KKyAgICByZXR1cm4gIWlzU3RvcHBlZCgpOwogfQogCiB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpkZXRhY2goKQpAQCAtMTkxLDcgKzE5Niw5IEBAIHZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6OmVuZCgpCiAgICAgaWYgKG1fc2F3RXJyb3IpCiAgICAgICAgIGluc2VydEVy
cm9yTWVzc2FnZUJsb2NrKCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGV4aXRUZXh0KCk7CisgICAg
ICAgIHVwZGF0ZUxlYWZUZXh0Tm9kZSgpOworICAgICAgICAvLyBEbyBub3QgYmFpbCBvdXQgaWYg
aW4gYSBzdG9wcGVkIHN0YXRlLCBidXQgbm90aWZ5IGRvY3VtZW50IHRoYXQKKyAgICAgICAgLy8g
cGFyc2luZyBoYXMgZmluaXNoZWQuCiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJD
aGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDhmNDNmOTA5ZTExODBjZGZl
MzYyYWNhN2ZlNjgwOTg0M2I0MDQ1NmUuLmUyODViNTU4ODRiNDcyZWFkNzBkNmZkYWU5MTI3MjI0
YjAyZmI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmgKQEAgLTE0Niw4ICsxNDYsOCBAQCBjbGFzcyBUZXh0OwogCiAgICAgICAgIHZvaWQgaW5z
ZXJ0RXJyb3JNZXNzYWdlQmxvY2soKTsKIAotICAgICAgICB2b2lkIGVudGVyVGV4dCgpOwotICAg
ICAgICB2b2lkIGV4aXRUZXh0KCk7CisgICAgICAgIHZvaWQgY3JlYXRlTGVhZlRleHROb2RlSWZO
ZWVkZWQoKTsKKyAgICAgICAgYm9vbCB1cGRhdGVMZWFmVGV4dE5vZGUoKTsKIAogICAgICAgICB2
b2lkIGRvV3JpdGUoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQgZG9FbmQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAppbmRleCBkYTYxYjk0YjZlMzhiMGY0Mzc1Y2YxYTYxNTUwM2Q3ODU5NzQzYzM5Li4zZGJh
MDE1MDQwZDU1ZjllODdjM2Q2Njc0YWNmYjQyMjA1YWQyZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC03
OTcsNyArNzk3LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29u
c3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGV4aXRUZXh0KCk7CisgICAgaWYgKCF1cGRhdGVMZWFmVGV4dE5vZGUoKSkK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZSA9IHRvQXRvbWlj
U3RyaW5nKHhtbExvY2FsTmFtZSk7CiAgICAgQXRvbWljU3RyaW5nIHVyaSA9IHRvQXRvbWljU3Ry
aW5nKHhtbFVSSSk7CkBAIC04NzcsNyArODc4LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
ZW5kRWxlbWVudE5zKCkKICAgICAvLyBiZWZvcmUgdGhlIGVuZCBvZiB0aGlzIG1ldGhvZC4KICAg
ICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgZXhpdFRleHQo
KTsKKyAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm47CiAKICAg
ICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSA9IG1fY3VycmVudE5vZGU7CiAgICAgbm9kZS0+
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC05NTEsOCArOTUzLDcgQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6Y2hhcmFjdGVycyhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX2xlYWZUZXh0Tm9kZSkKLSAgICAgICAgZW50
ZXJUZXh0KCk7CisgICAgY3JlYXRlTGVhZlRleHROb2RlSWZOZWVkZWQoKTsKICAgICBtX2J1ZmZl
cmVkVGV4dC5hcHBlbmQocywgbGVuKTsKIH0KIApAQCAtOTkxLDcgKzk5Miw4IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCB4bWxDaGFyKiB0YXJn
ZXQsIGNvbnN0IHhtbENoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBleGl0VGV4dCgp
OworICAgIGlmICghdXBkYXRlTGVhZlRleHROb2RlKCkpCisgICAgICAgIHJldHVybjsKIAogICAg
IC8vICMjIyBoYW5kbGUgZXhjZXB0aW9ucwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
MTAyNSw3ICsxMDI3LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2RhdGFCbG9jayhjb25z
dCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZXhp
dFRleHQoKTsKKyAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIG5ld05vZGUgPSBDREFUQVNlY3Rpb246OmNyZWF0ZShtX2N1cnJlbnROb2Rl
LT5kb2N1bWVudCgpLCB0b1N0cmluZyhzLCBsZW4pKTsKICAgICBtX2N1cnJlbnROb2RlLT5wYXJz
ZXJBcHBlbmRDaGlsZChXVEY6Om1vdmUobmV3Tm9kZSkpOwpAQCAtMTA0MSw3ICsxMDQ0LDggQEAg
dm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y29tbWVudChjb25zdCB4bWxDaGFyKiBzKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgZXhpdFRleHQoKTsKKyAgICBpZiAoIXVwZGF0ZUxlYWZU
ZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG5ld05vZGUgPSBDb21tZW50
OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwgdG9TdHJpbmcocykpOwogICAgIG1f
Y3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFdURjo6bW92ZShuZXdOb2RlKSk7CkBAIC0x
MDczLDcgKzEwNzcsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KGNv
bnN0IHhtbENoYXIqIHZlcnNpb24sIGNvbnN0IHhtbENoYXIqIGVuYwogCiB2b2lkIFhNTERvY3Vt
ZW50UGFyc2VyOjplbmREb2N1bWVudCgpCiB7Ci0gICAgZXhpdFRleHQoKTsKKyAgICB1cGRhdGVM
ZWFmVGV4dE5vZGUoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW50ZXJuYWxTdWJz
ZXQoY29uc3QgeG1sQ2hhciogbmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3Qg
eG1sQ2hhciogc3lzdGVtSUQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDQ1MzIwN2U5MTdlZmY4YzgxMDg2YzVlOGU1OGJh
NjhlMWYxYTA5OS4uZGM0MzdjZWJlN2ZmN2U2MTVhODE0NWRhYmY3ZTI2MjhhOGRjMDY2MiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTA5LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgR3JhY2VmdWxseSBoYW5kbGUgWE1MRG9jdW1lbnRQYXJzZXIg
YmVpbmcgZGV0YWNoZWQgYnkgbXV0YXRpb24gZXZlbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yMjgxMTQ4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvcGFyc2VyL3Jlc291cmNlcy94aHRtbC1vdmVyd3JpdGUtZnJhbWUueGh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1t
b2RpZmllZC1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2Vy
L3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC1jcmFzaC5odG1sOiBBZGRlZC4KKwog
MjAxNS0wOS0zMCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ29tcHV0ZSBkb2N1bWVudCBtYXJrZXIgcmVjdHMgYXQgdXNlIHRpbWUgaW5zdGVh
ZCBvZiBwYWludCB0aW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZXNv
dXJjZXMveGh0bWwtb3ZlcndyaXRlLWZyYW1lLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIvcmVzb3VyY2VzL3hodG1sLW92ZXJ3cml0ZS1mcmFtZS54aHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWU3
YzA5MTc0YmY3ODk0Zjg3YTYzZDVmOTBkNjY3NThjOGExNGQ2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVzb3VyY2VzL3hodG1sLW92ZXJ3cml0ZS1mcmFtZS54
aHRtbApAQCAtMCwwICsxLDEyIEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbCI+Cis8c2NyaXB0PgorZnVuY3Rpb24gb3ZlcndyaXRlKCkgeworICAgIHZhciB0ZXN0
UnVubmVyID0gd2luZG93LnBhcmVudC50ZXN0UnVubmVyOworICAgIHdpbmRvdy5mcmFtZUVsZW1l
bnQub3V0ZXJIVE1MID0gIlBBU1MgKG5vIGNyYXNoKSI7CisgICAgaWYgKHRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExp
c3RlbmVyKCJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLCBvdmVyd3JpdGUpOworPC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci94aHRtbC1kb20t
Y2hhcmFjdGVyLWRhdGEtbW9kaWZpZWQtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9wYXJzZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZTI0OGFmMTAwY2E1ZDgwNTUwZDBiYzU5MWQyMGUzNzdiZmM2
NjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIveGh0bWwtZG9t
LWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CitQQVNTIChubyBjcmFzaCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3ho
dG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9wYXJzZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWI1YmRlYzhjMTUwMWY1NzY3YzgwMDBmZThjOGI4NzkzNzgyNTU3NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0
ZXItZGF0YS1tb2RpZmllZC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3Njcmlw
dD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMveGh0bWwtb3ZlcndyaXRlLWZyYW1lLnhodG1sIj48
L2lmcmFtZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262279</attachid>
            <date>2015-10-01 12:49:55 -0700</date>
            <delta_ts>2015-10-02 09:15:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149485-20151001124929.patch</filename>
            <type>text/plain</type>
            <size>9222</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIyYjM5YWRkYjVjMDY5
MmQ2YmRkY2JlZGFiNjEwNTQzMjUwNDNiZC4uNWQwNTY5NTJlNDY3Y2RmNDQ4NTllZjY1OGFjZDUx
MDNmNTAxYTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA5LTMwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhY2VmdWxseSBoYW5k
bGUgWE1MRG9jdW1lbnRQYXJzZXIgYmVpbmcgZGV0YWNoZWQgYnkgbXV0YXRpb24gZXZlbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDg1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjgxMTQ4OT4KKworICAgICAgICBUaGlzIGlzIGEgbWVy
Z2Ugb2YgQmxpbmsgY2hhbmdlIDIwMDAyNiwKKyAgICAgICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xMjY3MjgzMDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9wYXJzZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRh
LW1vZGlmaWVkLWNyYXNoLmh0bWwKKworICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxl
YWZUZXh0Tm9kZUlmTmVlZGVkKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGVudGVyVGV4dCgpIHRv
IG1ha2UgaXQgbW9yZSBkZXNjcmlwdGl2ZS4gCisKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3Vt
ZW50UGFyc2VyOjp1cGRhdGVMZWFmVGV4dE5vZGUpOgorICAgICAgICBSZW5hbWVkIGZyb20gZXhp
dFRleHQgdG8gZmlybSB1cCB0aGlzIHN0YWdlLgorCisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6ZW5kKToKKyAgICAgICAgR3JhY2VmdWxseSBoYW5kbGUgc3RvcHBlZCBzdGF0
ZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjplbnRlclRleHQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmV4aXRUZXh0KTog
RGVsZXRlZC4KKworICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAg
ICAgICAgUmVuYW1lIGVudGVyVGV4dCB0byBjcmVhdGVMZWFmVGV4dE5vZGVJZk5lZWRlZC4KKyAg
ICAgICAgUmVuYW1lIGV4aXRUZXh0IHRvIHVwZGF0ZUxlYWZUZXh0Tm9kZS4KKworICAgICAgICAq
IHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TERvY3VtZW50UGFyc2VyOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3Vt
ZW50UGFyc2VyOjpwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6WE1M
RG9jdW1lbnRQYXJzZXI6OmNkYXRhQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6OmNvbW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6
OmVuZERvY3VtZW50KToKKyAgICAgICAgUmVuYW1lIGZ1bmN0aW9uIGNhbGxzIGFuZCBmaXJtIHVw
IHVwZGF0ZUxlYWZUZXh0Tm9kZSBzdGFnZSBhY2NvcmRpbmdseS4KKwogMjAxNS0wOS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGwg
b3V0IHIxODgzMzE6ICJOZXR3b3JrUHJvY2VzczogRE5TIHByZWZldGNoIGhhcHBlbnMgaW4gdGhl
IFdlYiBQcm9jZXNzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCAyMTc4NmVkOTQ5ODJhZWZkN2E3NGY3MDk3M2ZjNjU3NjY0ZGJlODVi
Li43OTc5YjZjMjg4ZDNhYjhmMGMyYzFjNDhjMWRmNGMwOTYxYzM3YmFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTM2LDEwICsx
MzYsMTIgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpF
cnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgVGUKICAgICAgICAgc3RvcFBhcnNpbmcoKTsK
IH0KIAotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW50ZXJUZXh0KCkKK3ZvaWQgWE1MRG9jdW1l
bnRQYXJzZXI6OmNyZWF0ZUxlYWZUZXh0Tm9kZUlmTmVlZGVkKCkKIHsKKyAgICBpZiAobV9sZWFm
VGV4dE5vZGUpCisgICAgICAgIHJldHVybjsKKwogICAgIEFTU0VSVChtX2J1ZmZlcmVkVGV4dC5z
aXplKCkgPT0gMCk7Ci0gICAgQVNTRVJUKCFtX2xlYWZUZXh0Tm9kZSk7CiAgICAgbV9sZWFmVGV4
dE5vZGUgPSBUZXh0OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwgIiIpOwogICAg
IG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKCptX2xlYWZUZXh0Tm9kZSk7CiB9CkBA
IC0xNTAsMTkgKzE1MiwyMiBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyB0b1N0cmluZyhjb25zdCB4
bWxDaGFyKiBzdHJpbmcsIHNpemVfdCBzaXplKQogfQogCiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmV4aXRUZXh0KCkKK2Jvb2wgWE1MRG9jdW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9k
ZSgpCiB7CiAgICAgaWYgKGlzU3RvcHBlZCgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghbV9sZWFmVGV4dE5vZGUpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBtX2xlYWZUZXh0Tm9kZS0+YXBwZW5kRGF0YSh0
b1N0cmluZyhtX2J1ZmZlcmVkVGV4dC5kYXRhKCksIG1fYnVmZmVyZWRUZXh0LnNpemUoKSkpOwot
ICAgIFZlY3Rvcjx4bWxDaGFyPiBlbXB0eTsKLSAgICBtX2J1ZmZlcmVkVGV4dC5zd2FwKGVtcHR5
KTsKKyAgICBtX2J1ZmZlcmVkVGV4dCA9IHsgfTsKIAogICAgIG1fbGVhZlRleHROb2RlID0gbnVs
bHB0cjsKKworICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgYWdhaW4gd2hldGhlciB0aGUgcGFyc2Vy
IGlzIHN0b3BwZWQsIHNpbmNlIG11dGF0aW9uCisgICAgLy8gZXZlbnQgaGFuZGxlcnMgZXhlY3V0
ZWQgYnkgYXBwZW5kRGF0YSBtaWdodCBoYXZlIGRldGFjaGVkIHRoaXMgcGFyc2VyLgorICAgIHJl
dHVybiAhaXNTdG9wcGVkKCk7CiB9CiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRldGFjaCgp
CkBAIC0xOTEsNyArMTk2LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5kKCkKICAgICBp
ZiAobV9zYXdFcnJvcikKICAgICAgICAgaW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKTsKICAgICBl
bHNlIHsKLSAgICAgICAgZXhpdFRleHQoKTsKKyAgICAgICAgdXBkYXRlTGVhZlRleHROb2RlKCk7
CiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1t
ZWRpYXRlbHkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlci5oCmluZGV4IDhmNDNmOTA5ZTExODBjZGZlMzYyYWNhN2ZlNjgwOTg0M2I0MDQ1
NmUuLmUyODViNTU4ODRiNDcyZWFkNzBkNmZkYWU5MTI3MjI0YjAyZmI4ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKQEAgLTE0Niw4ICsxNDYs
OCBAQCBjbGFzcyBUZXh0OwogCiAgICAgICAgIHZvaWQgaW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2so
KTsKIAotICAgICAgICB2b2lkIGVudGVyVGV4dCgpOwotICAgICAgICB2b2lkIGV4aXRUZXh0KCk7
CisgICAgICAgIHZvaWQgY3JlYXRlTGVhZlRleHROb2RlSWZOZWVkZWQoKTsKKyAgICAgICAgYm9v
bCB1cGRhdGVMZWFmVGV4dE5vZGUoKTsKIAogICAgICAgICB2b2lkIGRvV3JpdGUoY29uc3QgU3Ry
aW5nJik7CiAgICAgICAgIHZvaWQgZG9FbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCBkYTYxYjk0YjZl
MzhiMGY0Mzc1Y2YxYTYxNTUwM2Q3ODU5NzQzYzM5Li4zZGJhMDE1MDQwZDU1ZjllODdjM2Q2Njc0
YWNmYjQyMjA1YWQyZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC03OTcsNyArNzk3LDggQEAgdm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6c3RhcnRFbGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxO
YW1lLCBjb25zdCB4bWxDaGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGV4aXRUZXh0
KCk7CisgICAgaWYgKCF1cGRhdGVMZWFmVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZSA9IHRvQXRvbWljU3RyaW5nKHhtbExvY2FsTmFtZSk7
CiAgICAgQXRvbWljU3RyaW5nIHVyaSA9IHRvQXRvbWljU3RyaW5nKHhtbFVSSSk7CkBAIC04Nzcs
NyArODc4LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKICAgICAv
LyBiZWZvcmUgdGhlIGVuZCBvZiB0aGlzIG1ldGhvZC4KICAgICBSZWY8WE1MRG9jdW1lbnRQYXJz
ZXI+IHByb3RlY3QoKnRoaXMpOwogCi0gICAgZXhpdFRleHQoKTsKKyAgICBpZiAoIXVwZGF0ZUxl
YWZUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gbm9kZSA9IG1fY3VycmVudE5vZGU7CiAgICAgbm9kZS0+ZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCk7CkBAIC05NTEsOCArOTUzLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2hhcmFjdGVy
cyhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVuKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKCFtX2xlYWZUZXh0Tm9kZSkKLSAgICAgICAgZW50ZXJUZXh0KCk7CisgICAgY3JlYXRl
TGVhZlRleHROb2RlSWZOZWVkZWQoKTsKICAgICBtX2J1ZmZlcmVkVGV4dC5hcHBlbmQocywgbGVu
KTsKIH0KIApAQCAtOTkxLDcgKzk5Miw4IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NpbmdJbnN0cnVjdGlvbihjb25zdCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0IHhtbENoCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBleGl0VGV4dCgpOworICAgIGlmICghdXBkYXRlTGVh
ZlRleHROb2RlKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIC8vICMjIyBoYW5kbGUgZXhjZXB0
aW9ucwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTAyNSw3ICsxMDI3LDggQEAgdm9p
ZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2RhdGFCbG9jayhjb25zdCB4bWxDaGFyKiBzLCBpbnQgbGVu
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZXhpdFRleHQoKTsKKyAgICBpZiAoIXVw
ZGF0ZUxlYWZUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG5ld05vZGUg
PSBDREFUQVNlY3Rpb246OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVudCgpLCB0b1N0cmlu
ZyhzLCBsZW4pKTsKICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChXVEY6Om1v
dmUobmV3Tm9kZSkpOwpAQCAtMTA0MSw3ICsxMDQ0LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNl
cjo6Y29tbWVudChjb25zdCB4bWxDaGFyKiBzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgZXhpdFRleHQoKTsKKyAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIG5ld05vZGUgPSBDb21tZW50OjpjcmVhdGUobV9jdXJyZW50Tm9k
ZS0+ZG9jdW1lbnQoKSwgdG9TdHJpbmcocykpOwogICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFw
cGVuZENoaWxkKFdURjo6bW92ZShuZXdOb2RlKSk7CkBAIC0xMDczLDcgKzEwNzcsNyBAQCB2b2lk
IFhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KGNvbnN0IHhtbENoYXIqIHZlcnNpb24s
IGNvbnN0IHhtbENoYXIqIGVuYwogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmREb2N1bWVu
dCgpCiB7Ci0gICAgZXhpdFRleHQoKTsKKyAgICB1cGRhdGVMZWFmVGV4dE5vZGUoKTsKIH0KIAog
dm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW50ZXJuYWxTdWJzZXQoY29uc3QgeG1sQ2hhciogbmFt
ZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciogc3lzdGVtSUQpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMDQ1MzIwN2U5MTdlZmY4YzgxMDg2YzVlOGU1OGJhNjhlMWYxYTA5OS4uZGM0MzdjZWJl
N2ZmN2U2MTVhODE0NWRhYmY3ZTI2MjhhOGRjMDY2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDE1LTA5LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAg
R3JhY2VmdWxseSBoYW5kbGUgWE1MRG9jdW1lbnRQYXJzZXIgYmVpbmcgZGV0YWNoZWQgYnkgbXV0
YXRpb24gZXZlbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ5NDg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjgxMTQ4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcGFyc2VyL3Jl
c291cmNlcy94aHRtbC1vdmVyd3JpdGUtZnJhbWUueGh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC1jcmFzaC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXIt
ZGF0YS1tb2RpZmllZC1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxNS0wOS0zMCAgVGltb3RoeSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29tcHV0ZSBkb2N1
bWVudCBtYXJrZXIgcmVjdHMgYXQgdXNlIHRpbWUgaW5zdGVhZCBvZiBwYWludCB0aW1lCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZXNvdXJjZXMveGh0bWwtb3ZlcndyaXRl
LWZyYW1lLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVzb3VyY2VzL3hodG1sLW92
ZXJ3cml0ZS1mcmFtZS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWU3YzA5MTc0YmY3ODk0Zjg3YTYzZDVm
OTBkNjY3NThjOGExNGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIvcmVzb3VyY2VzL3hodG1sLW92ZXJ3cml0ZS1mcmFtZS54aHRtbApAQCAtMCwwICsxLDEyIEBA
Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gb3ZlcndyaXRlKCkgeworICAgIHZhciB0ZXN0UnVubmVyID0gd2luZG93LnBhcmVu
dC50ZXN0UnVubmVyOworICAgIHdpbmRvdy5mcmFtZUVsZW1lbnQub3V0ZXJIVE1MID0gIlBBU1Mg
KG5vIGNyYXNoKSI7CisgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01DaGFyYWN0ZXJE
YXRhTW9kaWZpZWQiLCBvdmVyd3JpdGUpOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci94aHRtbC1kb20tY2hhcmFjdGVyLWRhdGEtbW9kaWZp
ZWQtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIveGh0bWwtZG9t
LWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
ZTI0OGFmMTAwY2E1ZDgwNTUwZDBiYzU5MWQyMGUzNzdiZmM2NjNlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRhLW1vZGlm
aWVkLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTIChubyBjcmFzaCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0
YS1tb2RpZmllZC1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIveGh0bWwtZG9t
LWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI1YmRlYzhj
MTUwMWY1NzY3YzgwMDBmZThjOGI4NzkzNzgyNTU3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC1jcmFz
aC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMveGh0bWwtb3ZlcndyaXRlLWZyYW1lLnhodG1sIj48L2lmcmFtZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262336</attachid>
            <date>2015-10-02 09:15:23 -0700</date>
            <delta_ts>2015-10-08 16:45:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149485-20151002091456.patch</filename>
            <type>text/plain</type>
            <size>9177</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIyYjM5YWRkYjVjMDY5
MmQ2YmRkY2JlZGFiNjEwNTQzMjUwNDNiZC4uMzAxNDFkYjBhNmNmZTE1MzE0ZTBlMmJiM2JiMzU0
MmJiODI5ZThjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA5LTMwICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhY2VmdWxseSBoYW5k
bGUgWE1MRG9jdW1lbnRQYXJzZXIgYmVpbmcgZGV0YWNoZWQgYnkgbXV0YXRpb24gZXZlbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDg1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjgxMTQ4OT4KKworICAgICAgICBUaGlzIGlzIGEgbWVy
Z2Ugb2YgQmxpbmsgY2hhbmdlIDIwMDAyNiwKKyAgICAgICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNo
cm9taXVtLm9yZy8xMjY3MjgzMDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9wYXJzZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRh
LW1vZGlmaWVkLWNyYXNoLmh0bWwKKworICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUxl
YWZUZXh0Tm9kZSk6CisgICAgICAgIFJlbmFtZWQgZnJvbSBlbnRlclRleHQoKSB0byBtYWtlIGl0
IG1vcmUgZGVzY3JpcHRpdmUuIAorCisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNl
cjo6dXBkYXRlTGVhZlRleHROb2RlKToKKyAgICAgICAgUmVuYW1lZCBmcm9tIGV4aXRUZXh0IHRv
IGZpcm0gdXAgdGhpcyBzdGFnZS4KKworICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OmVuZCk6CisgICAgICAgIEdyYWNlZnVsbHkgaGFuZGxlIHN0b3BwZWQgc3RhdGVzLgorCisg
ICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZW50ZXJUZXh0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpleGl0VGV4dCk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIFJl
bmFtZSBlbnRlclRleHQgdG8gY3JlYXRlTGVhZlRleHROb2RlLgorICAgICAgICBSZW5hbWUgZXhp
dFRleHQgdG8gdXBkYXRlTGVhZlRleHROb2RlLgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQ
YXJzZXI6OnN0YXJ0RWxlbWVudE5zKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFy
c2VyOjplbmRFbGVtZW50TnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6
OmNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nl
c3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6
Y2RhdGFCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6Y29tbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6ZW5kRG9jdW1lbnQpOgor
ICAgICAgICBSZW5hbWUgZnVuY3Rpb24gY2FsbHMgYW5kIGZpcm0gdXAgdXBkYXRlTGVhZlRleHRO
b2RlIHN0YWdlIGFjY29yZGluZ2x5LgorCiAyMDE1LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjE4ODMzMTogIk5l
dHdvcmtQcm9jZXNzOiBETlMgcHJlZmV0Y2ggaGFwcGVucyBpbiB0aGUgV2ViIFByb2Nlc3MiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDIxNzg2ZWQ5NDk4MmFlZmQ3YTc0ZjcwOTczZmM2NTc2NjRkYmU4NWIuLmVmNGNiNDFiNGE4NzE1
MGYyMjdkMTYyMmRlY2NmODQ2OTM1MTQyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMzYsOCArMTM2LDExIEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmhhbmRsZUVycm9yKFhNTEVycm9yczo6RXJyb3JUeXBlIHR5cGUsIGNv
bnN0IGNoYXIqIG0sIFRlCiAgICAgICAgIHN0b3BQYXJzaW5nKCk7CiB9CiAKLXZvaWQgWE1MRG9j
dW1lbnRQYXJzZXI6OmVudGVyVGV4dCgpCit2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpjcmVhdGVM
ZWFmVGV4dE5vZGUoKQogeworICAgIGlmIChtX2xlYWZUZXh0Tm9kZSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgQVNTRVJUKG1fYnVmZmVyZWRUZXh0LnNpemUoKSA9PSAwKTsKICAgICBBU1NFUlQo
IW1fbGVhZlRleHROb2RlKTsKICAgICBtX2xlYWZUZXh0Tm9kZSA9IFRleHQ6OmNyZWF0ZShtX2N1
cnJlbnROb2RlLT5kb2N1bWVudCgpLCAiIik7CkBAIC0xNTAsMTkgKzE1MywyMyBAQCBzdGF0aWMg
aW5saW5lIFN0cmluZyB0b1N0cmluZyhjb25zdCB4bWxDaGFyKiBzdHJpbmcsIHNpemVfdCBzaXpl
KQogfQogCiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmV4aXRUZXh0KCkKK2Jvb2wgWE1MRG9j
dW1lbnRQYXJzZXI6OnVwZGF0ZUxlYWZUZXh0Tm9kZSgpCiB7CiAgICAgaWYgKGlzU3RvcHBlZCgp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9s
ZWFmVGV4dE5vZGUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAg
ICAvLyBUaGlzIG9wZXJhdGlvbiBtaWdodCBmaXJlIG11dGF0aW9uIGV2ZW50LCBzZWUgYmVsb3cu
CiAgICAgbV9sZWFmVGV4dE5vZGUtPmFwcGVuZERhdGEodG9TdHJpbmcobV9idWZmZXJlZFRleHQu
ZGF0YSgpLCBtX2J1ZmZlcmVkVGV4dC5zaXplKCkpKTsKLSAgICBWZWN0b3I8eG1sQ2hhcj4gZW1w
dHk7Ci0gICAgbV9idWZmZXJlZFRleHQuc3dhcChlbXB0eSk7CisgICAgbV9idWZmZXJlZFRleHQg
PSB7IH07CiAKICAgICBtX2xlYWZUZXh0Tm9kZSA9IG51bGxwdHI7CisKKyAgICAvLyBIZW5jZSwg
d2UgbmVlZCB0byBjaGVjayBhZ2FpbiB3aGV0aGVyIHRoZSBwYXJzZXIgaXMgc3RvcHBlZCwgc2lu
Y2UgbXV0YXRpb24KKyAgICAvLyBldmVudCBoYW5kbGVycyBleGVjdXRlZCBieSBhcHBlbmREYXRh
IG1pZ2h0IGhhdmUgZGV0YWNoZWQgdGhpcyBwYXJzZXIuCisgICAgcmV0dXJuICFpc1N0b3BwZWQo
KTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZGV0YWNoKCkKQEAgLTE5MSw3ICsxOTgs
NyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmQoKQogICAgIGlmIChtX3Nhd0Vycm9yKQog
ICAgICAgICBpbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpOwogICAgIGVsc2UgewotICAgICAgICBl
eGl0VGV4dCgpOworICAgICAgICB1cGRhdGVMZWFmVGV4dE5vZGUoKTsKICAgICAgICAgZG9jdW1l
bnQoKS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKaW5k
ZXggOGY0M2Y5MDllMTE4MGNkZmUzNjJhY2E3ZmU2ODA5ODQzYjQwNDU2ZS4uYWQ4NzZjYjk5OGI3
NjQyNTkxN2YyOTNiYzI2NzAyZTI1ZjM5NmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9w
YXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMTQ2LDggKzE0Niw4IEBAIGNsYXNzIFRleHQ7
CiAKICAgICAgICAgdm9pZCBpbnNlcnRFcnJvck1lc3NhZ2VCbG9jaygpOwogCi0gICAgICAgIHZv
aWQgZW50ZXJUZXh0KCk7Ci0gICAgICAgIHZvaWQgZXhpdFRleHQoKTsKKyAgICAgICAgdm9pZCBj
cmVhdGVMZWFmVGV4dE5vZGUoKTsKKyAgICAgICAgYm9vbCB1cGRhdGVMZWFmVGV4dE5vZGUoKTsK
IAogICAgICAgICB2b2lkIGRvV3JpdGUoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIHZvaWQgZG9F
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcAppbmRleCBkYTYxYjk0YjZlMzhiMGY0Mzc1Y2YxYTYxNTUwM2Q3ODU5
NzQzYzM5Li5jNDA5NjBjYjY4NjVmNzA2ZGNhZDdlYzcwMzc3NGFlMDgxNTU4MTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnht
bDIuY3BwCkBAIC03OTcsNyArNzk3LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6c3RhcnRF
bGVtZW50TnMoY29uc3QgeG1sQ2hhciogeG1sTG9jYWxOYW1lLCBjb25zdCB4bWxDaGEKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGV4aXRUZXh0KCk7CisgICAgaWYgKCF1cGRhdGVMZWFm
VGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFt
ZSA9IHRvQXRvbWljU3RyaW5nKHhtbExvY2FsTmFtZSk7CiAgICAgQXRvbWljU3RyaW5nIHVyaSA9
IHRvQXRvbWljU3RyaW5nKHhtbFVSSSk7CkBAIC04NzcsNyArODc4LDggQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKICAgICAvLyBiZWZvcmUgdGhlIGVuZCBvZiB0aGlz
IG1ldGhvZC4KICAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOwogCi0g
ICAgZXhpdFRleHQoKTsKKyAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CiAKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbm9kZSA9IG1fY3VycmVudE5vZGU7
CiAgICAgbm9kZS0+ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC05NTIsNyArOTU0LDcgQEAg
dm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2hhcmFjdGVycyhjb25zdCB4bWxDaGFyKiBzLCBpbnQg
bGVuKQogICAgIH0KIAogICAgIGlmICghbV9sZWFmVGV4dE5vZGUpCi0gICAgICAgIGVudGVyVGV4
dCgpOworICAgICAgICBjcmVhdGVMZWFmVGV4dE5vZGUoKTsKICAgICBtX2J1ZmZlcmVkVGV4dC5h
cHBlbmQocywgbGVuKTsKIH0KIApAQCAtOTkxLDcgKzk5Myw4IEBAIHZvaWQgWE1MRG9jdW1lbnRQ
YXJzZXI6OnByb2Nlc3NpbmdJbnN0cnVjdGlvbihjb25zdCB4bWxDaGFyKiB0YXJnZXQsIGNvbnN0
IHhtbENoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBleGl0VGV4dCgpOworICAgIGlm
ICghdXBkYXRlTGVhZlRleHROb2RlKCkpCisgICAgICAgIHJldHVybjsKIAogICAgIC8vICMjIyBo
YW5kbGUgZXhjZXB0aW9ucwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTAyNSw3ICsx
MDI4LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2RhdGFCbG9jayhjb25zdCB4bWxDaGFy
KiBzLCBpbnQgbGVuKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZXhpdFRleHQoKTsK
KyAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIG5ld05vZGUgPSBDREFUQVNlY3Rpb246OmNyZWF0ZShtX2N1cnJlbnROb2RlLT5kb2N1bWVu
dCgpLCB0b1N0cmluZyhzLCBsZW4pKTsKICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRD
aGlsZChXVEY6Om1vdmUobmV3Tm9kZSkpOwpAQCAtMTA0MSw3ICsxMDQ1LDggQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6Y29tbWVudChjb25zdCB4bWxDaGFyKiBzKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgZXhpdFRleHQoKTsKKyAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgp
KQorICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIG5ld05vZGUgPSBDb21tZW50OjpjcmVhdGUo
bV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwgdG9TdHJpbmcocykpOwogICAgIG1fY3VycmVudE5v
ZGUtPnBhcnNlckFwcGVuZENoaWxkKFdURjo6bW92ZShuZXdOb2RlKSk7CkBAIC0xMDczLDcgKzEw
NzgsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydERvY3VtZW50KGNvbnN0IHhtbENo
YXIqIHZlcnNpb24sIGNvbnN0IHhtbENoYXIqIGVuYwogCiB2b2lkIFhNTERvY3VtZW50UGFyc2Vy
OjplbmREb2N1bWVudCgpCiB7Ci0gICAgZXhpdFRleHQoKTsKKyAgICB1cGRhdGVMZWFmVGV4dE5v
ZGUoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW50ZXJuYWxTdWJzZXQoY29uc3Qg
eG1sQ2hhciogbmFtZSwgY29uc3QgeG1sQ2hhciogZXh0ZXJuYWxJRCwgY29uc3QgeG1sQ2hhciog
c3lzdGVtSUQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMDQ1MzIwN2U5MTdlZmY4YzgxMDg2YzVlOGU1OGJhNjhlMWYxYTA5
OS4uZGM0MzdjZWJlN2ZmN2U2MTVhODE0NWRhYmY3ZTI2MjhhOGRjMDY2MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTA5LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgR3JhY2VmdWxseSBoYW5kbGUgWE1MRG9jdW1lbnRQYXJzZXIgYmVpbmcgZGV0
YWNoZWQgYnkgbXV0YXRpb24gZXZlbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjgxMTQ4
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvcGFyc2VyL3Jlc291cmNlcy94aHRtbC1vdmVyd3JpdGUtZnJhbWUueGh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC1j
cmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcGFyc2VyL3hodG1sLWRv
bS1jaGFyYWN0ZXItZGF0YS1tb2RpZmllZC1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxNS0wOS0z
MCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Q29tcHV0ZSBkb2N1bWVudCBtYXJrZXIgcmVjdHMgYXQgdXNlIHRpbWUgaW5zdGVhZCBvZiBwYWlu
dCB0aW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9yZXNvdXJjZXMveGh0
bWwtb3ZlcndyaXRlLWZyYW1lLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvcmVzb3Vy
Y2VzL3hodG1sLW92ZXJ3cml0ZS1mcmFtZS54aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWU3YzA5MTc0YmY3
ODk0Zjg3YTYzZDVmOTBkNjY3NThjOGExNGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9wYXJzZXIvcmVzb3VyY2VzL3hodG1sLW92ZXJ3cml0ZS1mcmFtZS54aHRtbApAQCAt
MCwwICsxLDEyIEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+
Cis8c2NyaXB0PgorZnVuY3Rpb24gb3ZlcndyaXRlKCkgeworICAgIHZhciB0ZXN0UnVubmVyID0g
d2luZG93LnBhcmVudC50ZXN0UnVubmVyOworICAgIHdpbmRvdy5mcmFtZUVsZW1lbnQub3V0ZXJI
VE1MID0gIlBBU1MgKG5vIGNyYXNoKSI7CisgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJE
T01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiLCBvdmVyd3JpdGUpOworPC9zY3JpcHQ+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci94aHRtbC1kb20tY2hhcmFjdGVy
LWRhdGEtbW9kaWZpZWQtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZTI0OGFmMTAwY2E1ZDgwNTUwZDBiYzU5MWQyMGUzNzdiZmM2NjNlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIveGh0bWwtZG9tLWNoYXJhY3Rl
ci1kYXRhLW1vZGlmaWVkLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTIChu
byBjcmFzaCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3hodG1sLWRvbS1j
aGFyYWN0ZXItZGF0YS1tb2RpZmllZC1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9wYXJz
ZXIveGh0bWwtZG9tLWNoYXJhY3Rlci1kYXRhLW1vZGlmaWVkLWNyYXNoLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWI1YmRlYzhjMTUwMWY1NzY3YzgwMDBmZThjOGI4NzkzNzgyNTU3NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL3hodG1sLWRvbS1jaGFyYWN0ZXItZGF0YS1t
b2RpZmllZC1jcmFzaC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxpZnJh
bWUgc3JjPSJyZXNvdXJjZXMveGh0bWwtb3ZlcndyaXRlLWZyYW1lLnhodG1sIj48L2lmcmFtZT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>