<?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>173302</bug_id>
          
          <creation_ts>2017-06-12 23:04:12 -0700</creation_ts>
          <short_desc>REGRESSION (r217997): mint.com header renders incorrectly when initially loaded</short_desc>
          <delta_ts>2017-06-14 08:40:58 -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>Animations</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>173166</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1318571</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-06-12 23:04:12 -0700</bug_when>
    <thetext>Load mint.com by typing it into the location field and pressing enter.

The header is white instead of being transparent. Hover over &quot;Log In&quot;.

Then reload the page. It renders correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318572</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-12 23:04:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/32731747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318738</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 12:13:53 -0700</bug_when>
    <thetext>It is likely that a CSS transition animation is getting suspended but not resumed properly when the page realizes it is visible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318745</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 12:40:00 -0700</bug_when>
    <thetext>Animations logging shows:
Created ImplicitAnimation 0x11fec1870 on renderer 0x11fea9840 for property background-color duration 0.40 delay 0.00
Created ImplicitAnimation 0x120810000 on renderer 0x11fea9840 for property border-bottom-color duration 0.40 delay 0.00
Created ImplicitAnimation 0x120810630 on renderer 0x11fe61420 for property color duration 0.25 delay 0.00</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318754</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 13:06:15 -0700</bug_when>
    <thetext>Better logging:
Created ImplicitAnimation 0x1139bcc60 on renderer 0x112d09528 for property background-color duration 0.40 delay 0.00
Created ImplicitAnimation 0x1139bccf0 on renderer 0x112d09528 for property border-bottom-color duration 0.40 delay 0.00
0x1139bcc60 AnimationState New -&gt; AnimationState::PausedNew
0x1139bccf0 AnimationState New -&gt; AnimationState::PausedNew
Created ImplicitAnimation 0x1139bc360 on renderer 0x112f68738 for property color duration 0.25 delay 0.00
0x1139bc360 AnimationState New -&gt; AnimationState::PausedNew
0x1139bcc60 AnimationState PausedNew -&gt; PausedWaitResponse
0x1139bccf0 AnimationState PausedNew -&gt; PausedWaitResponse
0x1139bc360 AnimationState PausedNew -&gt; PausedWaitResponse
CompositeAnimation::resumeAnimations() 2 transitions
-&gt; Transition 0x1139bcc60, hasStyle? 1
0x1139bcc60 - AnimationBase::updatePlayState(0) returns early, pause: 0, paused(): 0, isNew: 0
-&gt; Transition 0x1139bccf0, hasStyle? 1
0x1139bccf0 - AnimationBase::updatePlayState(0) returns early, pause: 0, paused(): 0, isNew: 0
CompositeAnimation::resumeAnimations() 1 transitions
-&gt; Transition 0x1139bc360, hasStyle? 1
0x1139bc360 - AnimationBase::updatePlayState(0) returns early, pause: 0, paused(): 0, isNew: 0


It looks like something at some point caused those ImplicitAnimations to switch from state PausedNew to PausedWaitResponse. As a result, when we later resume animations and call AnimationBase::updatePlayState(AnimPlayStatePlaying), that method returns early and fails to start the animation because of this check in updatePlayState():

    if (pause == paused() &amp;&amp; !isNew()) {
        WTFLogAlways(&quot;%p - AnimationBase::updatePlayState(%d) returns early, pause: %d, paused(): %d, isNew: %d&quot;, this, static_cast&lt;int&gt;(playState), pause, paused(), isNew());
        return;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318760</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 13:13:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Better logging:
&gt; Created ImplicitAnimation 0x1139bcc60 on renderer 0x112d09528 for property
&gt; background-color duration 0.40 delay 0.00
&gt; Created ImplicitAnimation 0x1139bccf0 on renderer 0x112d09528 for property
&gt; border-bottom-color duration 0.40 delay 0.00
&gt; 0x1139bcc60 AnimationState New -&gt; AnimationState::PausedNew
&gt; 0x1139bccf0 AnimationState New -&gt; AnimationState::PausedNew
&gt; Created ImplicitAnimation 0x1139bc360 on renderer 0x112f68738 for property
&gt; color duration 0.25 delay 0.00
&gt; 0x1139bc360 AnimationState New -&gt; AnimationState::PausedNew
&gt; 0x1139bcc60 AnimationState PausedNew -&gt; PausedWaitResponse
&gt; 0x1139bccf0 AnimationState PausedNew -&gt; PausedWaitResponse
&gt; 0x1139bc360 AnimationState PausedNew -&gt; PausedWaitResponse
&gt; CompositeAnimation::resumeAnimations() 2 transitions
&gt; -&gt; Transition 0x1139bcc60, hasStyle? 1
&gt; 0x1139bcc60 - AnimationBase::updatePlayState(0) returns early, pause: 0,
&gt; paused(): 0, isNew: 0
&gt; -&gt; Transition 0x1139bccf0, hasStyle? 1
&gt; 0x1139bccf0 - AnimationBase::updatePlayState(0) returns early, pause: 0,
&gt; paused(): 0, isNew: 0
&gt; CompositeAnimation::resumeAnimations() 1 transitions
&gt; -&gt; Transition 0x1139bc360, hasStyle? 1
&gt; 0x1139bc360 - AnimationBase::updatePlayState(0) returns early, pause: 0,
&gt; paused(): 0, isNew: 0
&gt; 
&gt; 
&gt; It looks like something at some point caused those ImplicitAnimations to
&gt; switch from state PausedNew to PausedWaitResponse. As a result, when we
&gt; later resume animations and call
&gt; AnimationBase::updatePlayState(AnimPlayStatePlaying), that method returns
&gt; early and fails to start the animation because of this check in
&gt; updatePlayState():
&gt; 
&gt;     if (pause == paused() &amp;&amp; !isNew()) {
&gt;         WTFLogAlways(&quot;%p - AnimationBase::updatePlayState(%d) returns early,
&gt; pause: %d, paused(): %d, isNew: %d&quot;, this, static_cast&lt;int&gt;(playState),
&gt; pause, paused(), isNew());
&gt;         return;
&gt;     }

Updating that if condition to use:
    if (pause == inPausedState() &amp;&amp; !isNew()) {

fixes the issue. Simon, do you know if this is the best way to fix this? All these various paused states on AnimationBase are very confusing for me :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318767</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 13:20:15 -0700</bug_when>
    <thetext>0x1138af630 AnimationState PausedNew -&gt; PausedWaitResponse (a)
1   0x1057ad9ab WebCore::ImplicitAnimation::reset(WebCore::RenderStyle const&amp;, WebCore::CompositeAnimation&amp;)
2   0x1057ad7fd WebCore::ImplicitAnimation::animate(WebCore::CompositeAnimation&amp;, WebCore::RenderElement*, WebCore::RenderStyle const*, WebCore::RenderStyle const&amp;, std::__1::unique_ptr&lt;WebCore::RenderStyle, std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;&amp;, bool&amp;)
3   0x1052cfe0c WebCore::CompositeAnimation::animate(WebCore::RenderElement&amp;, WebCore::RenderStyle const*, WebCore::RenderStyle const&amp;, std::__1::unique_ptr&lt;WebCore::RenderStyle, std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;&amp;)
4   0x1053590e8 WebCore::CSSAnimationController::updateAnimations(WebCore::RenderElement&amp;, WebCore::RenderStyle const&amp;, std::__1::unique_ptr&lt;WebCore::RenderStyle, std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;&amp;)
5   0x1062312f7 WebCore::Style::TreeResolver::createAnimatedElementUpdate(std::__1::unique_ptr&lt;WebCore::RenderStyle, std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;, WebCore::Element&amp;, WebCore::Style::Change)
6   0x106231041 WebCore::Style::TreeResolver::resolveElement(WebCore::Element&amp;)
7   0x1062318c7 WebCore::Style::TreeResolver::resolveComposedTree()
8   0x1062323e2 WebCore::Style::TreeResolver::resolve()
9   0x1054635c7 WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType)
10  0x10560e4c3 WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive()
11  0x105573d5b WebCore::FocusController::setActiveInternal(bool)
12  0x105573cf4 WebCore::FocusController::setActivityState(unsigned int)
13  0x105e5405e WebCore::Page::setActivityState(unsigned int)
14  0x103340a39 WebKit::WebPage::setActivityState(unsigned int, bool, WTF::Vector&lt;unsigned long long, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;)
15  0x103361ccb void IPC::handleMessage&lt;Messages::WebPage::SetActivityState, WebKit::WebPage, void (WebKit::WebPage::*)(unsigned int, bool, WTF::Vector&lt;unsigned long long, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned int, bool, WTF::Vector&lt;unsigned long long, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;))
16  0x1031c7ddd IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
17  0x1033c88c0 WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
18  0x1031872d1 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
19  0x103189e24 IPC::Connection::dispatchOneMessage()
20  0x108ac15ed WTF::RunLoop::performWork()
21  0x108ac1802 WTF::RunLoop::performWork(void*)
22  0x7fff9fd950b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
23  0x7fff9fd7839f __CFRunLoopDoSources0
24  0x7fff9fd7794f __CFRunLoopRun
25  0x7fff9fd772b9 CFRunLoopRunSpecific
26  0x7fff9f0be93b RunCurrentEventLoopInMode
27  0x7fff9f0be6de ReceiveNextEventCommon
28  0x7fff9f0be45c _BlockUntilNextEventMatchingListInModeWithFilter
29  0x7fff9d3a0e2b _DPSNextEvent
30  0x7fff9db28d7e -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
31  0x7fff9d395cc6 -[NSApplication run]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318774</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 13:24:11 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; 0x1138af630 AnimationState PausedNew -&gt; PausedWaitResponse (a)
&gt; 1   0x1057ad9ab WebCore::ImplicitAnimation::reset(WebCore::RenderStyle
&gt; const&amp;, WebCore::CompositeAnimation&amp;)
&gt; 2   0x1057ad7fd
&gt; WebCore::ImplicitAnimation::animate(WebCore::CompositeAnimation&amp;,
&gt; WebCore::RenderElement*, WebCore::RenderStyle const*, WebCore::RenderStyle
&gt; const&amp;, std::__1::unique_ptr&lt;WebCore::RenderStyle,
&gt; std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;&amp;, bool&amp;)
&gt; 3   0x1052cfe0c
&gt; WebCore::CompositeAnimation::animate(WebCore::RenderElement&amp;,
&gt; WebCore::RenderStyle const*, WebCore::RenderStyle const&amp;,
&gt; std::__1::unique_ptr&lt;WebCore::RenderStyle,
&gt; std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;&amp;)
&gt; 4   0x1053590e8
&gt; WebCore::CSSAnimationController::updateAnimations(WebCore::RenderElement&amp;,
&gt; WebCore::RenderStyle const&amp;, std::__1::unique_ptr&lt;WebCore::RenderStyle,
&gt; std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;&amp;)
&gt; 5   0x1062312f7
&gt; WebCore::Style::TreeResolver::createAnimatedElementUpdate(std::__1::
&gt; unique_ptr&lt;WebCore::RenderStyle,
&gt; std::__1::default_delete&lt;WebCore::RenderStyle&gt; &gt;, WebCore::Element&amp;,
&gt; WebCore::Style::Change)
&gt; 6   0x106231041
&gt; WebCore::Style::TreeResolver::resolveElement(WebCore::Element&amp;)
&gt; 7   0x1062318c7 WebCore::Style::TreeResolver::resolveComposedTree()
&gt; 8   0x1062323e2 WebCore::Style::TreeResolver::resolve()
&gt; 9   0x1054635c7
&gt; WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType)
&gt; 10  0x10560e4c3 WebCore::FrameView::updateLayoutAndStyleIfNeededRecursive()
&gt; 11  0x105573d5b WebCore::FocusController::setActiveInternal(bool)
&gt; 12  0x105573cf4 WebCore::FocusController::setActivityState(unsigned int)
&gt; 13  0x105e5405e WebCore::Page::setActivityState(unsigned int)
&gt; 14  0x103340a39 WebKit::WebPage::setActivityState(unsigned int, bool,
&gt; WTF::Vector&lt;unsigned long long, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;)
&gt; 15  0x103361ccb void IPC::handleMessage&lt;Messages::WebPage::SetActivityState,
&gt; WebKit::WebPage, void (WebKit::WebPage::*)(unsigned int, bool,
&gt; WTF::Vector&lt;unsigned long long, 0ul, WTF::CrashOnOverflow, 16ul&gt;
&gt; const&amp;)&gt;(IPC::Decoder&amp;, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned
&gt; int, bool, WTF::Vector&lt;unsigned long long, 0ul, WTF::CrashOnOverflow, 16ul&gt;
&gt; const&amp;))
&gt; 16  0x1031c7ddd IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;,
&gt; IPC::Decoder&amp;)
&gt; 17  0x1033c88c0 WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;,
&gt; IPC::Decoder&amp;)
&gt; 18  0x1031872d1
&gt; IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder,
&gt; std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
&gt; 19  0x103189e24 IPC::Connection::dispatchOneMessage()
&gt; 20  0x108ac15ed WTF::RunLoop::performWork()
&gt; 21  0x108ac1802 WTF::RunLoop::performWork(void*)
&gt; 22  0x7fff9fd950b1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
&gt; 23  0x7fff9fd7839f __CFRunLoopDoSources0
&gt; 24  0x7fff9fd7794f __CFRunLoopRun
&gt; 25  0x7fff9fd772b9 CFRunLoopRunSpecific
&gt; 26  0x7fff9f0be93b RunCurrentEventLoopInMode
&gt; 27  0x7fff9f0be6de ReceiveNextEventCommon
&gt; 28  0x7fff9f0be45c _BlockUntilNextEventMatchingListInModeWithFilter
&gt; 29  0x7fff9d3a0e2b _DPSNextEvent
&gt; 30  0x7fff9db28d7e -[NSApplication(NSEvent)
&gt; _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
&gt; 31  0x7fff9d395cc6 -[NSApplication run]

Issue seems to be because we sometimes call AnimationBase::updateStateMachine(AnimationStateInput::PlayStatePaused) on an animation that is already in AnimationState::PausedNew paused.

This seems to cause the state to become PausedWaitResponse :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318779</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-13 13:27:28 -0700</bug_when>
    <thetext>&gt; fixes the issue. Simon, do you know if this is the best way to fix this? All
&gt; these various paused states on AnimationBase are very confusing for me :/

Me too, hence my caveat on your other patch. I can&apos;t easily reason about whether your suggested change is correct.

I think pausedness should not be a set of parallel states, but a separate flag on the Animation, but that&apos;s too big to do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318781</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 13:28:24 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; &gt; fixes the issue. Simon, do you know if this is the best way to fix this? All
&gt; &gt; these various paused states on AnimationBase are very confusing for me :/
&gt; 
&gt; Me too, hence my caveat on your other patch. I can&apos;t easily reason about
&gt; whether your suggested change is correct.
&gt; 
&gt; I think pausedness should not be a set of parallel states, but a separate
&gt; flag on the Animation, but that&apos;s too big to do now.

The following more limited change also fixes the issue:
@@ -209,8 +209,10 @@ void ImplicitAnimation::reset(const RenderStyle&amp; to, CompositeAnimation&amp; composi
         Style::loadPendingResources(*m_toStyle, m_object-&gt;element()-&gt;document(), m_object-&gt;element());
 
     // Restart the transition
-    if (m_fromStyle &amp;&amp; m_toStyle)
-        updateStateMachine(compositeAnimation.isSuspended() ? AnimationStateInput::PlayStatePaused : AnimationStateInput::RestartAnimation, -1);
+    if (m_fromStyle &amp;&amp; m_toStyle) {
+        if (!compositeAnimation.isSuspended())
+            updateStateMachine(AnimationStateInput::RestartAnimation, -1);
+    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318795</commentid>
    <comment_count>10</comment_count>
      <attachid>312800</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 13:48:04 -0700</bug_when>
    <thetext>Created attachment 312800
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318796</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-13 13:48:57 -0700</bug_when>
    <thetext>Attachment 312800 did not pass style-queue:


ERROR: Source/WebCore/page/animation/ImplicitAnimation.cpp:212:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318904</commentid>
    <comment_count>12</comment_count>
      <attachid>312832</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-13 17:01:37 -0700</bug_when>
    <thetext>Created attachment 312832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319133</commentid>
    <comment_count>13</comment_count>
      <attachid>312832</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-14 08:40:56 -0700</bug_when>
    <thetext>Comment on attachment 312832
Patch

Clearing flags on attachment: 312832

Committed r218257: &lt;http://trac.webkit.org/changeset/218257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319135</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-14 08:40:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312800</attachid>
            <date>2017-06-13 13:48:04 -0700</date>
            <delta_ts>2017-06-13 17:01:35 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>173302_mint_animation_wip.patch</filename>
            <type>text/plain</type>
            <size>3306</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVz
dW1pbmctd2hlbi12aXNpYmxlLXdpdGgtc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxl
LXdpdGgtc3R5bGUtY2hhbmdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uYTUyNGJkMGUwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRo
LXN0eWxlLWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCBD
U1MgYW5pbWF0aW9ucyB0aGF0IGFyZSBjcmVhdGVkIHdoaWxlIHRoZSBwYWdlIGlzIGhpZGRlbiBh
cmUgcHJvcGVybHkgcmVzdW1lZCB3aGVuIHRoZSBwYWdlIGJlY29tZXMgdmlzaWJsZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmFuaW1hdGlvbnNBcmVT
dXNwZW5kZWQoKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoKSBpcyAwCitQQVNTIGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBiZWNh
bWUgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitU
RVNUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9u
LXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtd2l0
aC1zdHlsZS1jaGFuZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMzJkYzliZDcwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1h
dGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5n
ZS5odG1sCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKyN0ZXN0RGl2IHsKKyAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzBzIGxpbmVh
ciwgY29sb3IgMnMsIGxlZnQgNHMgbGluZWFyLCB0b3AgNHMgbGluZWFyOworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlkPSJ0ZXN0RGl2Ij5U
RVNUPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgQ1NTIGFuaW1hdGlv
bnMgdGhhdCBhcmUgY3JlYXRlZCB3aGlsZSB0aGUgcGFnZSBpcyBoaWRkZW4gYXJlIHByb3Blcmx5
IHJlc3VtZWQgd2hlbiB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUuIik7Citqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworZnVuY3Rpb24gcmVnaXN0ZXJBbmltYXRpb24oKQoreworICAgIHRlc3REaXYu
c3R5bGUudHJhbnNmb3JtID0gInJvdGF0ZSgxNzBkZWcpIHNjYWxlKDAuMjc4MTk0MTQxNDM0NzI4
NCkiOworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBpbnRlcm5hbHMuc3VzcGVuZEFu
aW1hdGlvbnMoKTsKKworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIHJlZ2lz
dGVyQW5pbWF0aW9uKCIxNzAiKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIC8vIENoYW5nZSBzdHlsZSB0byBtYWtlIHN1cmUgaXQgZG9lcyBub3QgbWFrZSB0
aGUgYW5pbWF0aW9uIGFjdGl2ZS4KKyAgICAgICAgICAgIHRlc3REaXYuc3R5bGUuYmFja2dyb3Vu
ZENvbG9yID0gImdyZWVuIjsKKyAgICAgICAgICAgIHRlc3REaXYub2Zmc2V0TGVmdDsKKworICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMuYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgp
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiaW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucygpIiwgIjAiKTsKKworICAgICAgICAgICAgaW50ZXJuYWxzLnJlc3VtZUFuaW1hdGlvbnMo
KTsKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJpbnRlcm5hbHMubnVtYmVyT2ZBY3Rp
dmVBbmltYXRpb25zKCkiLCAiMSIsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0sIDUwMCk7Cisg
ICAgfSwgMCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCmluZGV4IGY3
ZjQwMWE0ODIxLi5iNGZmYTAyOWYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIHZvaWQg
SW1wbGljaXRBbmltYXRpb246OnJlc2V0KGNvbnN0IFJlbmRlclN0eWxlJiB0bywgQ29tcG9zaXRl
QW5pbWF0aW9uJiBjb21wb3NpCiAgICAgICAgIFN0eWxlOjpsb2FkUGVuZGluZ1Jlc291cmNlcygq
bV90b1N0eWxlLCBtX29iamVjdC0+ZWxlbWVudCgpLT5kb2N1bWVudCgpLCBtX29iamVjdC0+ZWxl
bWVudCgpKTsKIAogICAgIC8vIFJlc3RhcnQgdGhlIHRyYW5zaXRpb24KLSAgICBpZiAobV9mcm9t
U3R5bGUgJiYgbV90b1N0eWxlKQotICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoY29tcG9zaXRl
QW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkgPyBBbmltYXRpb25TdGF0ZUlucHV0OjpQbGF5U3RhdGVQ
YXVzZWQgOiBBbmltYXRpb25TdGF0ZUlucHV0OjpSZXN0YXJ0QW5pbWF0aW9uLCAtMSk7CisgICAg
aWYgKG1fZnJvbVN0eWxlICYmIG1fdG9TdHlsZSAmJiAhY29tcG9zaXRlQW5pbWF0aW9uLmlzU3Vz
cGVuZGVkKCkpCisgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0
OjpSZXN0YXJ0QW5pbWF0aW9uLCAtMSk7CiAgICAgICAgIAogICAgIC8vIHNldCB0aGUgdHJhbnNm
b3JtIGFuaW1hdGlvbiBsaXN0CiAgICAgdmFsaWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312832</attachid>
            <date>2017-06-13 17:01:37 -0700</date>
            <delta_ts>2017-06-14 08:40:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173302-20170613170136.patch</filename>
            <type>text/plain</type>
            <size>11496</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyZDdmZmM3NjIxY2M1
MmMxMDIyZTVkMjU1MTczNjM0MDIzNWZmNy4uNDA4Y2E2OGEyMzFiNTJiNzE4MTBiMjM0Y2E4ODg5
ZTU1MjI0ZWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA2LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIxNzk5
Nyk6IG1pbnQuY29tIGhlYWRlciByZW5kZXJzIGluY29ycmVjdGx5IHdoZW4gaW5pdGlhbGx5IGxv
YWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcz
MzAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMjczMTc0Nz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjE3OTk3IHVwZGF0ZWQgSW1wbGljaXRB
bmltYXRpb246OnJlc2V0KCkgdG8gbm90IGNhbGwgdXBkYXRlU3RhdGVNYWNoaW5lKEFuaW1hdGlv
blN0YXRlSW5wdXQ6OlJlc3RhcnRBbmltYXRpb24pCisgICAgICAgIGlmIHRoZSBjb21wb3NpdGVB
bmltYXRpb24gaXMgc3VzcGVuZGVkLiBJZiB0aGUgY29tcG9zaXRlQW5pbWF0aW9uIGlzIHN1c3Bl
bmRlZCwgd2Ugd291bGQgY2FsbAorICAgICAgICB1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbWF0aW9u
U3RhdGVJbnB1dDo6QW5pbWF0aW9uU3RhdGVJbnB1dDo6UGxheVN0YXRlUGF1c2VkKSwgd2hpY2gg
d2FzIGV4cGVjdGVkIHRvIGJlIGEgbm8tb3AuCisgICAgICAgIFRoaXMgd2FzIG5lZWRlZCBiZWNh
dXNlIG90aGVyd2lzZSwgY2hhbmdpbmcgdGhlIHN0eWxlIG9mIHRoZSBhbmltYXRlZCBlbGVtZW50
IHdvdWxkIHJlc3RhcnQgdGhlIGFuaW1hdGlvbgorICAgICAgICBldmVuIHRob3VnaCBpdCB3YXMg
c3VwcG9zZWQgdG8gYmUgc3VzcGVuZGVkLiBPbmUgdGhpbmcgSSBkaWQgbm90IHJlYWxpemUgaXMg
dGhhdCBjYWxsaW5nCisgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlu
cHV0OjpBbmltYXRpb25TdGF0ZUlucHV0OjpQbGF5U3RhdGVQYXVzZWQpIG9uIGFuIGFuaW1hdGlv
biB0aGF0IGlzIGFscmVhZHkKKyAgICAgICAgaW4gUGF1c2VkTmV3IHN0YXRlLCB3aWxsIGNhdXNl
IGl0IHRvIG1vdmUgdG8gUGF1c2VkV2FpdFJlc3BvbnNlIHN0YXRlLiBUaGlzIGlzIGFuIGlzc3Vl
IGJlY2F1c2UgdXBvbiByZXN1bWluZworICAgICAgICB3ZSB3b3VsZCBjYWxsIEFuaW1hdGlvbkJh
c2U6OnVwZGF0ZVBsYXlTdGF0ZShBbmltUGxheVN0YXRlUGxheWluZykgd2hpY2ggd291bGQgcmV0
dXJuIGVhcmx5IGJlY2F1c2UKKyAgICAgICAgQW5pbWF0aW9uQmFzZTo6cGF1c2VkKCkgd291bGQg
cmV0dXJuIGZhbHNlLiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2Ugbm8gbG9uZ2VyIGNhbGwgdXBk
YXRlU3RhdGVNYWNoaW5lKFBsYXlTdGF0ZVBhdXNlZCkKKyAgICAgICAgaW4gSW1wbGljaXRBbmlt
YXRpb246OnJlc2V0KCkgd2hlbiB0aGUgY29tcG9zaXRlQW5pbWF0aW9uIGlzIHN1c3BlbmRlZCwg
c28gdGhhdCB0aGUgYW5pbWF0aW9uIHN0YXlzIGluCisgICAgICAgIFBhdXNlZE5ldyBzdGF0ZSB1
bnRpbCB3ZSByZXN1bWUuIFdoZW4gd2UgcmVzdW1lLCBBbmltYXRpb25CYXNlOjpwYXVzZWQoKSBy
ZXR1cm5zIGZhbHNlIGFuZCB3ZSBhY3R1YWxseSByZXN1bWUKKyAgICAgICAgdGhlIGFuaW1hdGlv
bi4KKworICAgICAgICBUZXN0czoKKyAgICAgICAgZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlv
bi1yZXN1bWluZy13aGVuLXZpc2libGUtd2l0aC1zdHlsZS1jaGFuZ2UuaHRtbAorICAgICAgICBm
YXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0
eWxlLWNoYW5nZTIuaHRtbAorCisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnJlc2V0KToK
KwogMjAxNy0wNi0xMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBsb2dnaW5nIGZvciBsYXlvdXQgdGVzdHMgd2hlbiByQUYgY2FsbGJhY2tzIGdldCBz
dXNwZW5kZWQgYW5kIHJlc3VtZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRleCBmN2Y0MDFhNDgyMWFjN2MyNjI1YjI1MTVl
YjMzM2JkMjZmNDA4MGI5Li5kZjZjZTI5OTBiNWQyZjEyOGE3NDJlMDM4MWFhMmVjNWMzMWZlZDA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmlt
YXRpb24uY3BwCkBAIC0yMDgsMTEgKzIwOCwxMSBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpy
ZXNldChjb25zdCBSZW5kZXJTdHlsZSYgdG8sIENvbXBvc2l0ZUFuaW1hdGlvbiYgY29tcG9zaQog
ICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+ZWxlbWVudCgpKQogICAgICAgICBTdHlsZTo6
bG9hZFBlbmRpbmdSZXNvdXJjZXMoKm1fdG9TdHlsZSwgbV9vYmplY3QtPmVsZW1lbnQoKS0+ZG9j
dW1lbnQoKSwgbV9vYmplY3QtPmVsZW1lbnQoKSk7CiAKLSAgICAvLyBSZXN0YXJ0IHRoZSB0cmFu
c2l0aW9uCi0gICAgaWYgKG1fZnJvbVN0eWxlICYmIG1fdG9TdHlsZSkKLSAgICAgICAgdXBkYXRl
U3RhdGVNYWNoaW5lKGNvbXBvc2l0ZUFuaW1hdGlvbi5pc1N1c3BlbmRlZCgpID8gQW5pbWF0aW9u
U3RhdGVJbnB1dDo6UGxheVN0YXRlUGF1c2VkIDogQW5pbWF0aW9uU3RhdGVJbnB1dDo6UmVzdGFy
dEFuaW1hdGlvbiwgLTEpOwotICAgICAgICAKLSAgICAvLyBzZXQgdGhlIHRyYW5zZm9ybSBhbmlt
YXRpb24gbGlzdAorICAgIC8vIFJlc3RhcnQgdGhlIHRyYW5zaXRpb24uCisgICAgaWYgKG1fZnJv
bVN0eWxlICYmIG1fdG9TdHlsZSAmJiAhY29tcG9zaXRlQW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkp
CisgICAgICAgIHVwZGF0ZVN0YXRlTWFjaGluZShBbmltYXRpb25TdGF0ZUlucHV0OjpSZXN0YXJ0
QW5pbWF0aW9uLCAtMSk7CisKKyAgICAvLyBTZXQgdGhlIHRyYW5zZm9ybSBhbmltYXRpb24gbGlz
dC4KICAgICB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwogICAgIGNoZWNrRm9yTWF0
Y2hpbmdGaWx0ZXJGdW5jdGlvbkxpc3RzKCk7CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YmU4NDUyM2NmODNiZmYyMGYxZDA1OTdhMWU0MzJlZGQ5ZjM2NzJmLi4xOGI5MmUw
YzVjMWUxMmIzZTVjYmI1YjQ2NDZmMWVmNDFmMzBkODU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTctMDYtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OIChyMjE3OTk3KTogbWludC5jb20gaGVhZGVyIHJlbmRlcnMgaW5jb3JyZWN0bHkg
d2hlbiBpbml0aWFsbHkgbG9hZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzMzMDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyNzMxNzQ3Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlv
dXQgdGVzdCBjb3ZlcmFnZS4gV2UgY2hhbmdlIHRoZSBzdHlsZSBvZiB0aGUgYW5pbWF0ZWQgZWxl
bWVudCB3aGlsZSB0aGUgYW5pbWF0aW9uIGlzIHBhdXNlZCwKKyAgICAgICAgYW5kIHRoZW4gd2Ug
cmVzdW1lIHRoZSBhbmltYXRpb25zLgorCisgICAgICAgICogZmFzdC9hbmltYXRpb24vY3NzLWFu
aW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtd2l0aC1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3Vt
aW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRo
LXN0eWxlLWNoYW5nZTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2FuaW1h
dGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5n
ZTIuaHRtbDogQWRkZWQuCisKIDIwMTctMDYtMTMgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYXJrZWQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9X
ZWJDcnlwdG9BUEkvaW1wb3J0X2V4cG9ydC90ZXN0X3JzYV9pbXBvcnRLZXkuaHR0cHMuaHRtbCBh
cyBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vY3NzLWFu
aW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtd2l0aC1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13
aGVuLXZpc2libGUtd2l0aC1zdHlsZS1jaGFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
YzdjMzA3NDA2NWIwZjNhZDZlOWRiNTBkZDQzZWJlYTg5ZWNkN2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4t
dmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAor
VGVzdHMgdGhhdCBDU1MgYW5pbWF0aW9ucyB0aGF0IGFyZSBjcmVhdGVkIHdoaWxlIHRoZSBwYWdl
IGlzIGhpZGRlbiBhcmUgcHJvcGVybHkgcmVzdW1lZCB3aGVuIHRoZSBwYWdlIGJlY29tZXMgdmlz
aWJsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N1c3BlbmQgYW5pbWF0aW9u
cworUEFTUyBpbnRlcm5hbHMuYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGlzIDAKK1BBU1MgaW50ZXJuYWxz
LmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5udW1iZXJP
ZkFjdGl2ZUFuaW1hdGlvbnMoKSBpcyAwCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRl
c3REaXYpLnRyYW5zZm9ybSBpcyBwYXVzZWRUcmFuc2Zvcm0KK1Jlc3VtZSBhbmltYXRpb25zCitQ
QVNTIGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKSBiZWNhbWUgMQorUEFTUyB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2KS50cmFuc2Zvcm0gIT0gcGF1c2VkVHJhbnNm
b3JtIGJlY2FtZSB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKK1RFU1QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL2Nz
cy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLXdpdGgtc3R5bGUtY2hhbmdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4t
dmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ODI2MjJmOWE2YWM0
MDdkMDFhZGNjNTMwMWYzNzY0YWExNjc2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRo
LXN0eWxlLWNoYW5nZS5odG1sCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyN0ZXN0RGl2IHsKKyAgICB0cmFuc2l0aW9uOiB0cmFuc2Zv
cm0gMzBzIGxpbmVhciwgY29sb3IgMnMsIGxlZnQgNHMgbGluZWFyLCB0b3AgNHMgbGluZWFyOwor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlk
PSJ0ZXN0RGl2Ij5URVNUPC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
Q1NTIGFuaW1hdGlvbnMgdGhhdCBhcmUgY3JlYXRlZCB3aGlsZSB0aGUgcGFnZSBpcyBoaWRkZW4g
YXJlIHByb3Blcmx5IHJlc3VtZWQgd2hlbiB0aGUgcGFnZSBiZWNvbWVzIHZpc2libGUuIik7Citq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcmVnaXN0ZXJBbmltYXRpb24oKQorewor
ICAgIHRlc3REaXYuc3R5bGUudHJhbnNmb3JtID0gInJvdGF0ZSgxNzBkZWcpIHNjYWxlKDAuMjc4
MTk0MTQxNDM0NzI4NCkiOworfQorCitmdW5jdGlvbiBjaGVja1RyYW5zZm9ybUFuZEZpbmlzaFRl
c3QoKQoreworICAgIHNob3VsZEJlY29tZUVxdWFsKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXN0RGl2KS50cmFuc2Zvcm0gIT0gcGF1c2VkVHJhbnNmb3JtIiwgInRydWUiLCBmaW5pc2hKU1Rl
c3QpOworfQorCitvbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBkZWJ1ZygiU3VzcGVuZCBhbmlt
YXRpb25zIik7CisgICAgaW50ZXJuYWxzLnN1c3BlbmRBbmltYXRpb25zKCk7CisKKyAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICByZWdpc3RlckFuaW1hdGlvbigiMTcwIik7Cisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRCZVRydWUo
ImludGVybmFscy5hbmltYXRpb25zQXJlU3VzcGVuZGVkKCkiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJpbnRlcm5hbHMubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkiLCAiMCIpOworCisgICAg
ICAgICAgICBwYXVzZWRUcmFuc2Zvcm0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0RGl2
KS50cmFuc2Zvcm07CisKKyAgICAgICAgICAgIC8vIENoYW5nZSBzdHlsZSB0byBtYWtlIHN1cmUg
aXQgZG9lcyBub3QgbWFrZSB0aGUgYW5pbWF0aW9uIGFjdGl2ZS4KKyAgICAgICAgICAgIHRlc3RE
aXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdyZWVuIjsKKyAgICAgICAgICAgIHRlc3REaXYu
b2Zmc2V0TGVmdDsKKworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMuYW5pbWF0
aW9uc0FyZVN1c3BlbmRlZCgpIik7CisgICAgICAgICAgICBzaG91bGRCZSgiaW50ZXJuYWxzLm51
bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIiwgIjAiKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1
dGVkU3R5bGUodGVzdERpdikudHJhbnNmb3JtIiwgInBhdXNlZFRyYW5zZm9ybSIpOworCisgICAg
ICAgICAgICAgICAgZGVidWcoIlJlc3VtZSBhbmltYXRpb25zIik7CisgICAgICAgICAgICAgICAg
aW50ZXJuYWxzLnJlc3VtZUFuaW1hdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZWNv
bWVFcXVhbCgiaW50ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIiwgIjEiLCBjaGVj
a1RyYW5zZm9ybUFuZEZpbmlzaFRlc3QpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9
LCA1MDApOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5n
LXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtd2l0
aC1zdHlsZS1jaGFuZ2UyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzQyNTk0NWYyNWYxMWZj
MDczMjE5ZDA3N2ZhY2YwMDdjMmQ2M2E4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9hbmltYXRpb24vY3NzLWFuaW1hdGlvbi1yZXN1bWluZy13aGVuLXZpc2libGUtd2l0aC1z
dHlsZS1jaGFuZ2UyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyB0aGF0IENT
UyBhbmltYXRpb25zIHRoYXQgYXJlIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgaGlkZGVuIGFy
ZSBwcm9wZXJseSByZXN1bWVkIHdoZW4gdGhlIHBhZ2UgYmVjb21lcyB2aXNpYmxlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMuYW5pbWF0aW9uc0FyZVN1
c3BlbmRlZCgpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5udW1iZXJPZkFjdGl2ZUFuaW1hdGlv
bnMoKSBpcyAxCitTdXNwZW5kIGFuaW1hdGlvbnMKK1BBU1MgaW50ZXJuYWxzLmFuaW1hdGlvbnNB
cmVTdXNwZW5kZWQoKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5hbmltYXRpb25zQXJlU3VzcGVu
ZGVkKCkgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpIGlz
IHRydWUKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdikudHJhbnNmb3JtIGlz
IHBhdXNlZFRyYW5zZm9ybQorUmVzdW1lIGFuaW1hdGlvbnMuLi4KK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUodGVzdERpdikudHJhbnNmb3JtICE9IHBhdXNlZFRyYW5zZm9ybSBiZWNhbWUg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitU
RVNUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2FuaW1hdGlvbi9jc3MtYW5pbWF0aW9u
LXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNoYW5nZTIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvYW5pbWF0aW9uL2Nzcy1hbmltYXRpb24tcmVzdW1pbmctd2hlbi12aXNpYmxlLXdp
dGgtc3R5bGUtY2hhbmdlMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZjM4ODk1MDM2ZjEwYTFjODcyZjk0
NjAyZmI1ZmYzNjM0NjhmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Fu
aW1hdGlvbi9jc3MtYW5pbWF0aW9uLXJlc3VtaW5nLXdoZW4tdmlzaWJsZS13aXRoLXN0eWxlLWNo
YW5nZTIuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c3R5bGU+CisjdGVzdERpdiB7CisgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwcyBs
aW5lYXIsIGNvbG9yIDJzLCBsZWZ0IDRzIGxpbmVhciwgdG9wIDRzIGxpbmVhcjsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0idGVzdERp
diI+VEVTVDwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IENTUyBhbmlt
YXRpb25zIHRoYXQgYXJlIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgaGlkZGVuIGFyZSBwcm9w
ZXJseSByZXN1bWVkIHdoZW4gdGhlIHBhZ2UgYmVjb21lcyB2aXNpYmxlLiIpOworanNUZXN0SXNB
c3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHJlZ2lzdGVyQW5pbWF0aW9uKCkKK3sKKyAgICB0ZXN0
RGl2LnN0eWxlLnRyYW5zZm9ybSA9ICJyb3RhdGUoMTcwZGVnKSBzY2FsZSgwLjI3ODE5NDE0MTQz
NDcyODQpIjsKK30KKworb25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgcmVnaXN0ZXJBbmltYXRpb24oIjE3MCIpOworCisgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJpbnRlcm5h
bHMuYW5pbWF0aW9uc0FyZVN1c3BlbmRlZCgpIik7CisgICAgICAgICAgICBzaG91bGRCZSgiaW50
ZXJuYWxzLm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIiwgIjEiKTsKKworICAgICAgICAgICAg
ZGVidWcoIlN1c3BlbmQgYW5pbWF0aW9ucyIpOworICAgICAgICAgICAgaW50ZXJuYWxzLnN1c3Bl
bmRBbmltYXRpb25zKCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmFuaW1hdGlvbnNBcmVTdXNwZW5k
ZWQoKSIpOworCisgICAgICAgICAgICAgICAgcGF1c2VkVHJhbnNmb3JtID0gd2luZG93LmdldENv
bXB1dGVkU3R5bGUodGVzdERpdikudHJhbnNmb3JtOworCisgICAgICAgICAgICAgICAgLy8gQ2hh
bmdlIHN0eWxlIHRvIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCBtYWtlIHRoZSBhbmltYXRpb24gYWN0
aXZlLgorICAgICAgICAgICAgICAgIHRlc3REaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImdy
ZWVuIjsKKyAgICAgICAgICAgICAgICB0ZXN0RGl2Lm9mZnNldExlZnQ7CisKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZVRydWUoImludGVybmFscy5hbmltYXRpb25zQXJlU3VzcGVuZGVkKCkiKTsK
KworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoKSIp
OworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGVzdERpdikudHJhbnNmb3JtIiwgInBhdXNlZFRyYW5zZm9ybSIpOworCisgICAgICAgICAgICAg
ICAgICAgIGRlYnVnKCJSZXN1bWUgYW5pbWF0aW9ucy4uLiIpOworICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbHMucmVzdW1lQW5pbWF0aW9ucygpOworICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZWNvbWVFcXVhbCgid2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdERpdikudHJhbnNmb3Jt
ICE9IHBhdXNlZFRyYW5zZm9ybSIsICJ0cnVlIiwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAg
ICAgICB9LCAxMDApOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0sIDUwMCk7CisgICAg
fSwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>