<?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>64786</bug_id>
          
          <creation_ts>2011-07-19 01:48:05 -0700</creation_ts>
          <short_desc>The value of a number input form continues to increase/decrease even if we disable the input form.</short_desc>
          <delta_ts>2011-07-21 15:07:28 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jberlin</cc>
    
    <cc>loki</cc>
    
    <cc>ossy</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>439041</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 01:48:05 -0700</bug_when>
    <thetext>Assume the following html:

&lt;input type=&quot;number&quot; id=&quot;number&quot; value=&quot;2011&quot; onmouseup=&quot;moseup()&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function mouseup() {
    document.getElementById(&quot;number&quot;).disabled = &quot;disabled&quot;;
    setTimeout(function() {
        document.getElementById(&quot;number&quot;).disabled = undefined;
    }, 1000);
}
&lt;/script&gt;

Click the spin button of the number input form.

Expected behavior: The value becomes 2010.

Actual behavior: The value becomes 2010. After 1000ms, the value continues to decrease automatically as if we are still clicking the spin button. 

See also http://code.google.com/p/chromium/issues/detail?id=74960.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439048</commentid>
    <comment_count>1</comment_count>
      <attachid>101288</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 02:04:19 -0700</bug_when>
    <thetext>Created attachment 101288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439056</commentid>
    <comment_count>2</comment_count>
      <attachid>101288</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 02:22:47 -0700</bug_when>
    <thetext>Comment on attachment 101288
Patch

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

&gt; LayoutTests/ChangeLog:20
&gt; +        Reviewed by NOBODY (OOPS!).

This line should be in the next of the bug URL.

&gt; Source/WebCore/html/HTMLInputElement.cpp:795
&gt; +    else if (attr-&gt;name() == disabledAttr)
&gt; +        m_inputType-&gt;disabledAttributeChanged();
&gt; +    else if (attr-&gt;name() == readonlyAttr)
&gt; +        m_inputType-&gt;readonlyAttributeChanged();

This will make some regressions because HTMLFormControlElement::parseMappedAttribute() won&apos;t be called for disabled and readonly.

&gt; Source/WebCore/html/TextFieldInputType.cpp:248
&gt; +    m_innerSpinButton-&gt;stopRepeating();
&gt; +}
&gt; +
&gt; +void TextFieldInputType::readonlyAttributeChanged()
&gt; +{
&gt; +    m_innerSpinButton-&gt;stopRepeating();

m_innerSpinButton can be NULL.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:336
&gt; +void SpinButtonElement::stopRepeating()
&gt; +{
&gt; +    stopRepeatingTimer();
&gt; +}

How about calling stopRepeatingTimer() in repeatingTimerFired()? If we do so, we don&apos;t need to add disabledAttributeChanged() and readonlyAttribtueChanged().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439067</commentid>
    <comment_count>3</comment_count>
      <attachid>101293</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 03:01:17 -0700</bug_when>
    <thetext>Created attachment 101293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439071</commentid>
    <comment_count>4</comment_count>
      <attachid>101288</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 03:06:42 -0700</bug_when>
    <thetext>Comment on attachment 101288
Patch

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

&gt;&gt; LayoutTests/ChangeLog:20
&gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; This line should be in the next of the bug URL.

Done.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:795
&gt;&gt; +        m_inputType-&gt;readonlyAttributeChanged();
&gt; 
&gt; This will make some regressions because HTMLFormControlElement::parseMappedAttribute() won&apos;t be called for disabled and readonly.

Removed this method, going away this issue.

&gt;&gt; Source/WebCore/html/TextFieldInputType.cpp:248
&gt;&gt; +    m_innerSpinButton-&gt;stopRepeating();
&gt; 
&gt; m_innerSpinButton can be NULL.

Removed this method, going away this issue.

&gt;&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:336
&gt;&gt; +}
&gt; 
&gt; How about calling stopRepeatingTimer() in repeatingTimerFired()? If we do so, we don&apos;t need to add disabledAttributeChanged() and readonlyAttribtueChanged().

Great idea! But I think that stopRepeatingTimer() is necessary not only in repeatingTimerFired() but also in defaultEventHandler(). There is a possibility that &apos;mouseup&apos; event happens and then the input form gets enabled again, before the first repeatingTimerFired() is invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439072</commentid>
    <comment_count>5</comment_count>
      <attachid>101293</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 03:18:00 -0700</bug_when>
    <thetext>Comment on attachment 101293
Patch

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

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly-expected.txt:14
&gt; +PASS successfullyParsed is true
&gt; +
&gt; +TEST COMPLETE
&gt; +
&gt; +Test on a readonly number input form:
&gt; +delay = 1 ms
&gt; +PASS input.value is &quot;1234566&quot;

&quot;TEST COMPLETE&quot; followed by actual tests sounds very strange.
You had better use jsTestisAsync and finishJSTest().  See fast/forms/autofocus-keygen.html.

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:25
&gt; +var test_inputs;
&gt; +var test_delays;

We usually use camelCase for variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439075</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 03:24:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; How about calling stopRepeatingTimer() in repeatingTimerFired()? If we do so, we don&apos;t need to add disabledAttributeChanged() and readonlyAttribtueChanged().
&gt; 
&gt; Great idea! But I think that stopRepeatingTimer() is necessary not only in repeatingTimerFired() but also in defaultEventHandler(). There is a possibility that &apos;mouseup&apos; event happens and then the input form gets enabled again, before the first repeatingTimerFired() is invoked.

I see. But adding stopRepeatingTimer() in defaultEventHandler() looks inelegant. I think the idea of disabledAttributeChanged() and readonlyAttribtueChanged() was better.

BTW, when the input becomes disabled/readonly, is mouse capturing released correctly? (Is  setCapturingMouseEventsNode(0) called?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439097</commentid>
    <comment_count>7</comment_count>
      <attachid>101302</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 05:07:43 -0700</bug_when>
    <thetext>Created attachment 101302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439098</commentid>
    <comment_count>8</comment_count>
      <attachid>101288</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 05:07:52 -0700</bug_when>
    <thetext>Comment on attachment 101288
Patch

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

&gt;&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:795
&gt;&gt;&gt; +        m_inputType-&gt;readonlyAttributeChanged();
&gt;&gt; 
&gt;&gt; This will make some regressions because HTMLFormControlElement::parseMappedAttribute() won&apos;t be called for disabled and readonly.
&gt; 
&gt; Removed this method, going away this issue.

Added &quot;HTMLTextFormControlElement::parseMappedAttribute(attr)&quot; here.

&gt;&gt;&gt; Source/WebCore/html/TextFieldInputType.cpp:248
&gt;&gt;&gt; +    m_innerSpinButton-&gt;stopRepeating();
&gt;&gt; 
&gt;&gt; m_innerSpinButton can be NULL.
&gt; 
&gt; Removed this method, going away this issue.

Added &quot;if(m_innerSpinButton)&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439099</commentid>
    <comment_count>9</comment_count>
      <attachid>101293</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 05:08:12 -0700</bug_when>
    <thetext>Comment on attachment 101293
Patch

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

&gt;&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly-expected.txt:14
&gt;&gt; +PASS input.value is &quot;1234566&quot;
&gt; 
&gt; &quot;TEST COMPLETE&quot; followed by actual tests sounds very strange.
&gt; You had better use jsTestisAsync and finishJSTest().  See fast/forms/autofocus-keygen.html.

Done.

&gt;&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:25
&gt;&gt; +var test_delays;
&gt; 
&gt; We usually use camelCase for variables.

Sorry again... Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439101</commentid>
    <comment_count>10</comment_count>
      <attachid>101302</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 05:10:55 -0700</bug_when>
    <thetext>Comment on attachment 101302
Patch

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

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:313
&gt; +            releaseCapture();

releaseCapture() executes stopRepeatingTimer() even if m_capturing is false, but I think that it is acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439611</commentid>
    <comment_count>11</comment_count>
      <attachid>101302</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 20:33:52 -0700</bug_when>
    <thetext>Comment on attachment 101302
Patch

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

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:60
&gt; +        setTimeout(function() {
&gt; +            shouldBeEqualToString(&apos;input.value&apos;, &quot;1234566&quot;);
&gt; +            nextDelayTest();
&gt; +        }, 600);

Why do we wait for 600msec? 
I&apos;m afraid this test will be a very slow test.

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:65
&gt; +    input.readOnly = &quot;readonly&quot;;

The type of HTMLInputElement::readOnly is boolean, not string.

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:72
&gt; +    input.disabled = &quot;disabled&quot;;

The type of HTMLInputElement::disabled is boolean, not string.

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:81
&gt; +    input.disabled = undefined;
&gt; +    input.readOnly = undefined;

ditto.

&gt; Source/WebCore/ChangeLog:25
&gt; +        (WebCore::HTMLElement::releaseCapture): A virtual method.

&quot;A virtual method.&quot; isn&apos;t helpful.
We should write what is changed, reasons of the change, or a purpose of the function.

&gt; Source/WebCore/ChangeLog:31
&gt; +        (WebCore::InputType::disabledAttributeChanged): A virtual method.
&gt; +        (WebCore::InputType::readonlyAttributeChanged): A virtual method.

ditto.

&gt; Source/WebCore/html/HTMLElement.h:87
&gt; +    virtual void releaseCapture();
&gt; +

I don&apos;t think we need to add this function to HTMLElement.
TextFieldInputType can know m_innerSpinButton type is SpinButtonElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439624</commentid>
    <comment_count>12</comment_count>
      <attachid>101426</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 22:33:41 -0700</bug_when>
    <thetext>Created attachment 101426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439625</commentid>
    <comment_count>13</comment_count>
      <attachid>101302</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 22:34:10 -0700</bug_when>
    <thetext>Comment on attachment 101302
Patch

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

&gt;&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:60
&gt;&gt; +        }, 600);
&gt; 
&gt; Why do we wait for 600msec? 
&gt; I&apos;m afraid this test will be a very slow test.

The time from when the spin button is clicked till when the repeating starts is defined as initialAutoscrollTimerDelay(), and the velocity of the repeating is defined as autoscrollTimerDelay(). These values differ depending on platforms, and in Linux Chromium, initialAutoscrollTimerDelay is 250ms and autoscrollTimerDelay is 50ms. So, at least, 250ms + 50ms = 300ms is needed to fire the first repeating. I changed the 600ms to 500ms.

&gt;&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:65
&gt;&gt; +    input.readOnly = &quot;readonly&quot;;
&gt; 
&gt; The type of HTMLInputElement::readOnly is boolean, not string.

Done.

&gt;&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:72
&gt;&gt; +    input.disabled = &quot;disabled&quot;;
&gt; 
&gt; The type of HTMLInputElement::disabled is boolean, not string.

Done.

&gt;&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:81
&gt;&gt; +    input.readOnly = undefined;
&gt; 
&gt; ditto.

Done.

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        (WebCore::HTMLElement::releaseCapture): A virtual method.
&gt; 
&gt; &quot;A virtual method.&quot; isn&apos;t helpful.
&gt; We should write what is changed, reasons of the change, or a purpose of the function.

Done.

&gt;&gt; Source/WebCore/ChangeLog:31
&gt;&gt; +        (WebCore::InputType::readonlyAttributeChanged): A virtual method.
&gt; 
&gt; ditto.

Done.

&gt;&gt; Source/WebCore/html/HTMLElement.h:87
&gt;&gt; +
&gt; 
&gt; I don&apos;t think we need to add this function to HTMLElement.
&gt; TextFieldInputType can know m_innerSpinButton type is SpinButtonElement.

Removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439629</commentid>
    <comment_count>14</comment_count>
      <attachid>101426</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 22:48:13 -0700</bug_when>
    <thetext>Comment on attachment 101426
Patch

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

&gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:60
&gt; +        setTimeout(function() {
&gt; +            shouldBeEqualToString(&apos;input.value&apos;, &quot;1234566&quot;);
&gt; +            nextDelayTest();
&gt; +        }, 500);

We can know the first increment/decrement by &apos;input&apos; event. Can we avoid setTime() by &apos;input&apos; event handler?

&gt; Source/WebCore/html/TextFieldInputType.cpp:244
&gt; +    if (m_innerSpinButton)
&gt; +        static_cast&lt;SpinButtonElement*&gt;(innerSpinButtonElement())-&gt;releaseCapture();

We can avoid static_cast by changing the type of m_innerSpinButton from RefPtr&lt;HTMLElement&gt; to RefPtr&lt;SpinButtonElement&gt;.

&gt; Source/WebCore/html/TextFieldInputType.cpp:250
&gt; +        static_cast&lt;SpinButtonElement*&gt;(innerSpinButtonElement())-&gt;releaseCapture();

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439634</commentid>
    <comment_count>15</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 23:02:54 -0700</bug_when>
    <thetext>&gt; &gt; LayoutTests/fast/forms/spin-button-gets-disabled-or-readonly.html:60
&gt; &gt; +        setTimeout(function() {
&gt; &gt; +            shouldBeEqualToString(&apos;input.value&apos;, &quot;1234566&quot;);
&gt; &gt; +            nextDelayTest();
&gt; &gt; +        }, 500);
&gt; 
&gt; We can know the first increment/decrement by &apos;input&apos; event. Can we avoid setTime() by &apos;input&apos; event handler?

I guess that what we need to check is whether the second increment/decrement happens or not. How can we know it by watching the &apos;input&apos; event?

We need to distinguish the following two cases:

Actual behavior (without this patch):
(1) &apos;mousedown&apos; -&gt; &apos;mouseup&apos; -&gt; &apos;input&apos;  : the first &apos;input&apos; event
(2) the repeating timer is fired  : the second &apos;input&apos; event

Expected behavior:
(1) &apos;mousedown&apos; -&gt; &apos;mouseup&apos; -&gt; &apos;input&apos;  : the first &apos;input&apos; event
(2) nothing happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439637</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-19 23:06:38 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; I guess that what we need to check is whether the second increment/decrement happens or not. How can we know it by watching the &apos;input&apos; event?
&gt; 
&gt; We need to distinguish the following two cases:
&gt; 
&gt; Actual behavior (without this patch):
&gt; (1) &apos;mousedown&apos; -&gt; &apos;mouseup&apos; -&gt; &apos;input&apos;  : the first &apos;input&apos; event
&gt; (2) the repeating timer is fired  : the second &apos;input&apos; event
&gt; 
&gt; Expected behavior:
&gt; (1) &apos;mousedown&apos; -&gt; &apos;mouseup&apos; -&gt; &apos;input&apos;  : the first &apos;input&apos; event
&gt; (2) nothing happens.

Ok, let&apos;s use setTimeout(..., 51 or more) in the &apos;input&apos; handler.
Smaller timeout is safer than 600ms/500ms timeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439640</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-19 23:21:45 -0700</bug_when>
    <thetext>&gt; &gt; I guess that what we need to check is whether the second increment/decrement happens or not. How can we know it by watching the &apos;input&apos; event?
&gt; &gt; 
&gt; &gt; We need to distinguish the following two cases:
&gt; &gt; 
&gt; &gt; Actual behavior (without this patch):
&gt; &gt; (1) &apos;mousedown&apos; -&gt; &apos;mouseup&apos; -&gt; &apos;input&apos;  : the first &apos;input&apos; event
&gt; &gt; (2) the repeating timer is fired  : the second &apos;input&apos; event
&gt; &gt; 
&gt; &gt; Expected behavior:
&gt; &gt; (1) &apos;mousedown&apos; -&gt; &apos;mouseup&apos; -&gt; &apos;input&apos;  : the first &apos;input&apos; event
&gt; &gt; (2) nothing happens.
&gt; 
&gt; Ok, let&apos;s use setTimeout(..., 51 or more) in the &apos;input&apos; handler.
&gt; Smaller timeout is safer than 600ms/500ms timeout.

Sorry but I am confused... Why can we shorten the time by using setTimeout() in the &apos;input&apos; event?

(1) the &apos;mousedown&apos; event is triggered. 
(2) the &apos;mouseup&apos; event is triggered. 
(3) the &apos;input&apos; event is triggered. 
(4) the repeating timer is fired first. 
(5) the repeating timer is fired second. 

In my understanding, initialAutoscrollTimerDelay (250ms) is the time between (2) and (4), and autoscrollTimerDelay (50ms) is the time between (4) and (5). And the time between (2) and (3) is small enough. In this way, even if we use setTimeout() in the &apos;input&apos; event, I think that we cannot shorten the waiting time less than 250ms. 

In case where the delay is long, we may be able to shorten the time by using setTimeout() inside the setTimeout() in the &apos;mouseup&apos; event, but I am afraid that it degrades readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439658</commentid>
    <comment_count>18</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-20 00:15:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Sorry but I am confused... Why can we shorten the time by using setTimeout() in the &apos;input&apos; event?

I was confused with your test scenario and the original scenario in crbug.com/74960. In the original scenario, the input was disabled in &apos;input&apos; handler.  I&apos;m sorry for the confusion.

I thought we could use a shorter timeout by disabling the input in the second &apos;input&apos; event like:

1. mousedown
   1.1. &apos;input&apos; is dispatched
   1.2. start the repeating timer
2. wait for the next &apos;input&apos; event (actually 250msec)
3. repeatingTimerFired()
   3.1 the second &apos;input&apos; is fired
   3.2 Disable the input in the &apos;input&apos; handler
4. mouseup
5. re-enable the input
6. wait for 50msec
7. repeatingTimerFired() should not be called.  The value should not be changed since the last &apos;input&apos; event.

These steps look complicated, and not so faster.

Ok, let&apos;s keep your test code as is.  The test might have flaky timeouts in buildbots because of the slowness.  If it happened, I would remove the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439693</commentid>
    <comment_count>19</comment_count>
      <attachid>101442</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-20 02:19:39 -0700</bug_when>
    <thetext>Created attachment 101442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439694</commentid>
    <comment_count>20</comment_count>
      <attachid>101426</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-20 02:19:50 -0700</bug_when>
    <thetext>Comment on attachment 101426
Patch

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

&gt;&gt; Source/WebCore/html/TextFieldInputType.cpp:244
&gt;&gt; +        static_cast&lt;SpinButtonElement*&gt;(innerSpinButtonElement())-&gt;releaseCapture();
&gt; 
&gt; We can avoid static_cast by changing the type of m_innerSpinButton from RefPtr&lt;HTMLElement&gt; to RefPtr&lt;SpinButtonElement&gt;.

Done.

&gt;&gt; Source/WebCore/html/TextFieldInputType.cpp:250
&gt;&gt; +        static_cast&lt;SpinButtonElement*&gt;(innerSpinButtonElement())-&gt;releaseCapture();
&gt; 
&gt; ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439695</commentid>
    <comment_count>21</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-07-20 02:20:06 -0700</bug_when>
    <thetext>&gt; Ok, let&apos;s keep your test code as is.  The test might have flaky timeouts in buildbots because of the slowness.  If it happened, I would remove the test.

Thanks. 

&gt; &gt; Sorry but I am confused... Why can we shorten the time by using setTimeout() in the &apos;input&apos; event?
&gt; 
&gt; I was confused with your test scenario and the original scenario in crbug.com/74960. In the original scenario, the input was disabled in &apos;input&apos; handler.  I&apos;m sorry for the confusion.

It is possible to write a test with the &apos;input&apos; event, but I am using the &apos;mouseup&apos; event instead of the &apos;input&apos; event, because it would be a simpler way to test the change that we made in this patch. 

Please assume the following script:

&lt;input type=&quot;number&quot; id=&quot;input&quot; oninput=&quot;inputEventDispatched()&quot; /&gt;
&lt;script&gt;
var input = $(&quot;input&quot;);
var testDelays = [1, 10, 100];
...;
function nextDelayTest() {
    delay = testDelays.shift();
    initializeInputAttributes(input, 1234567);
    clickSpinDownButton(input);
    setTimeout(function() {
        shouldBeEqualToString(&apos;input.value&apos;, &quot;1234566&quot;);
        nextDelayTest();
    }, 500);
}

function inputEventDispatched() {
    input.readOnly = true;
    setTimeout(function() {
        input.readOnly = false;
    }, delay);
}
&lt;/script&gt;

For the previous WebKit code (without my patch), the above script will not work as we expect. This is because |input| is a global variable. In the previous WebKit code, the repeating timer is fired again and again, and the &apos;input&apos; event is triggered whenever the repeating timer is fired and the number is changed. Thus, even if we move on to the next delay test, inputEventDispatched() of the previous delay test still continues to be invoked, which unintentionally changes |input.readOnly| for the current delay test. To prevent this, we need to prepare an input form and the variable to refer to the input form for each delay test and for each readonly/disabled test, which would make the script messy. (Or we need to add or remove event handlers for the &apos;input&apos; event appropriately.)

On the other hand, in case of the &apos;mouseup&apos; event, the above problem does not happen since the &apos;mouseup&apos; event is not triggered when the repeating timer is fired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439698</commentid>
    <comment_count>22</comment_count>
      <attachid>101442</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-20 02:25:52 -0700</bug_when>
    <thetext>Comment on attachment 101442
Patch

ok.

Thank you for fixing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439704</commentid>
    <comment_count>23</comment_count>
      <attachid>101442</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 03:23:55 -0700</bug_when>
    <thetext>Comment on attachment 101442
Patch

Clearing flags on attachment: 101442

Committed r91353: &lt;http://trac.webkit.org/changeset/91353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439705</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 03:24:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439736</commentid>
    <comment_count>25</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2011-07-20 04:31:26 -0700</bug_when>
    <thetext>The test fails on Qt. See the followings:

Build info:
  http://build.webkit.org/builders/Qt%20Linux%20Release/builds/35575

Test difference:
  http://build.webkit.org/results/Qt%20Linux%20Release/r91353%20(35575)/fast/forms/spin-button-gets-disabled-or-readonly-pretty-diff.html

--- fast/forms/spin-button-gets-disabled-or-readonly-expected.txt 
+++ fast/forms/spin-button-gets-disabled-or-readonly-actual.txt 
@@ -8,19 +8,19 @@
 
 Test on a readonly number input form:
 delay = 1 ms
-PASS input.value is &quot;1234566&quot;
+FAIL input.value should be 1234566. Was 1234567.
 delay = 10 ms
-PASS input.value is &quot;1234566&quot;
+FAIL input.value should be 1234566. Was 1234567.
 delay = 100 ms
-PASS input.value is &quot;1234566&quot;
+FAIL input.value should be 1234566. Was 1234567.
 
 Test on a disabled number input form:
 delay = 1 ms
-PASS input.value is &quot;1234566&quot;
+FAIL input.value should be 1234566. Was 1234567.
 delay = 10 ms
-PASS input.value is &quot;1234566&quot;
+FAIL input.value should be 1234566. Was 1234567.
 delay = 100 ms
-PASS input.value is &quot;1234566&quot;
+FAIL input.value should be 1234566. Was 1234567.
 PASS successfullyParsed is true
 
 TEST COMPLETE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439738</commentid>
    <comment_count>26</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-20 04:34:45 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; The test fails on Qt. See the followings:

Qt seems to have no spinbutton implementation. (See LayoutTests/platform/qt/Skipped line 2007)
So, this failure is reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439740</commentid>
    <comment_count>27</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2011-07-20 04:38:37 -0700</bug_when>
    <thetext>&gt; Qt seems to have no spinbutton implementation. (See LayoutTests/platform/qt/Skipped line 2007)

Ohh, my bad, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440660</commentid>
    <comment_count>28</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-07-21 15:07:28 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; The test fails on Qt. See the followings:
&gt; 
&gt; Qt seems to have no spinbutton implementation. (See LayoutTests/platform/qt/Skipped line 2007)
&gt; So, this failure is reasonable.

In the future, could you make sure that any such tests are added to both the Qt and Windows skipped lists when the patch is originally landed?

I am just about to add it to the Windows skipped list, since Windows doesn&apos;t have a spinbutton implementation either.

Thanks!

Jessie</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101288</attachid>
            <date>2011-07-19 02:04:19 -0700</date>
            <delta_ts>2011-07-19 05:07:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64786-20110719180417.patch</filename>
            <type>text/plain</type>
            <size>14368</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTkzNjE4NzU2N2VhMjdmZjhmMjRi
NWM3NjZjMjY4OTJiYjY4NmYxLi42ZWRjYWQ5MzY3NGE1ZDMxOTJhYzYzZGYzZDMwMDQ3OTc3Nzlm
YzIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQg
Zm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRo
ZSBpbnB1dCBmb3JtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ3ODYKKworICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbnB1dCBmb3Jt
IGNvbnRpbnVlcyB0byBpbmNyZWFzZS9kZWNyZWFzZSBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlv
OgorICAgICAgICAoMSkgQ2xpY2sgdGhlIHNwaW4gYnV0dG9uIG9mIHRoZSBudW1iZXIgaW5wdXQg
Zm9ybS4KKyAgICAgICAgKDIpIEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0
aGUgbnVtYmVyIGlucHV0IGZvcm0uCisgICAgICAgICgzKSBFbmFibGUgdGhlIG51bWJlciBpbnB1
dCBmb3JtIGFmdGVyIHNvbWUgZGVsYXkgKGUuZy4gNTBtcykuCisKKyAgICAgICAgV2hhdCBpcyBo
YXBwZW5pbmcgYWJvdmUgaXMgYXMgZm9sbG93czoKKyAgICAgICAgKDEpIFdoZW4gdGhlICdtb3Vz
ZWRvd24nIGV2ZW50IGhhcHBlbnMsIHRoZSByZXBlYXRpbmcgdGltZXIgb2YgdGhlIHNwaW4gYnV0
dG9uIHN0YXJ0cy4KKyAgICAgICAgKDIpIElmIHRoZSBpbnB1dCBmb3JtIGlzIG5vdCBkaXNhYmxl
ZCwgdGhlIHJlcGVhdGluZyB0aW1lciBzdG9wcyBhdCB0aGUgJ21vdXNldXAnIGV2ZW50LgorICAg
ICAgICBIb3dldmVyLCBpZiB0aGUgaW5wdXQgZm9ybSBpcyBkaXNhYmxlZCwgdGhlICdtb3VzZXVw
JyBldmVudCBpcyBpZ25vcmVkLCBmYWlsaW5nIHRvIHN0b3AKKyAgICAgICAgdGhlIHJlcGVhdGlu
ZyB0aW1lci4KKyAgICAgICAgKDMpIFRoZSB2YWx1ZSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVj
cmVhc2UsIHNpbmNlIHRoZSByZXBlYXRpbmcgdGltZXIgaXMgc3RpbGwgd29ya2luZy4KKworICAg
ICAgICBUaGUgYWRkZWQgdGVzdCBjaGVja3MgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGNvbnRpbnVl
IHRvIGluY3JlYXNlL2RlY3JlYXNlIHdoZW4gd2UgZG8gdGhlIGFib3ZlIG9wZXJhdGlvbi4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBmYWlsaW5nIHRlc3QgZXhwZWN0YXRpb24gZm9y
IG9iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy5odG1sIGFmdGVyIHI5MTIyNS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9u
LWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ODJk
ZDY5MzE1MDQyYTI5ZDdjOTJkZmNjODgwMzEwY2EzZTU4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyAKK1RoaXMgdGVzdHMgaWYgdGhlIHZh
bHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gZG9lcyBub3QgY29udGludWUgdG8gaW5jcmVhc2Uv
ZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby4KKygxKSBDbGljayB0aGUgc3BpbiBi
dXR0b24gb2YgdGhlIGlucHV0IGZvcm0uCisoMikgSG9vayB0aGUgJ21vdXNldXAnIGV2ZW50IGFu
ZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5LgorVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgaW5wdXQgYW55IHZhbHVl
IGluIHRoZSBpbnB1dCBmb3JtIGFuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLiBB
dCB0aGlzIHBvaW50LCBjbGljayB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBxdWlja2x5IGFuZCBkbyBu
b3QgbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIHNwaW4tZG93biBidXR0b24gYWZ0ZXIgdGhlIGNs
aWNrLiBJZiB0aGUgdmFsdWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4K
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK1Rl
c3Qgb24gYSByZWFkb25seSBudW1iZXIgaW5wdXQgZm9ybToKK2RlbGF5ID0gMSBtcworUEFTUyBp
bnB1dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAgbXMKK1BBU1MgaW5wdXQudmFsdWUg
aXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwMCBtcworUEFTUyBpbnB1dC52YWx1ZSBpcyAiMTIzNDU2
NiIKKworVGVzdCBvbiBhIGRpc2FibGVkIG51bWJlciBpbnB1dCBmb3JtOgorZGVsYXkgPSAxIG1z
CitQQVNTIGlucHV0LnZhbHVlIGlzICIxMjM0NTY2IgorZGVsYXkgPSAxMCBtcworUEFTUyBpbnB1
dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAwIG1zCitQQVNTIGlucHV0LnZhbHVlIGlz
ICIxMjM0NTY2IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzOWIxMDFiMmZhZDIxMjZmMjFjNjY3ZmFiNWQ4MzBiMDlkMWQwZmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3It
cmVhZG9ubHkuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJyZWFkb25seU51bWJlciIgdHlwZT0i
bnVtYmVyIiBvbm1vdXNldXA9Im1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSIgLz4KKzxp
bnB1dCBpZD0iZGlzYWJsZWROdW1iZXIiIHR5cGU9Im51bWJlciIgb25tb3VzZXVwPSJtb3VzZXVw
RXZlbnRPbkRpc2FibGVkTnVtYmVyKCkiIC8+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzxwPgorVGhp
cyB0ZXN0cyBpZiB0aGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBkb2VzIG5vdCBjb250
aW51ZQordG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby48YnIv
PgorKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5wdXQgZm9ybS48YnIvPgorKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS48YnIv
PgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRlciBzb21lIGRlbGF5Ljxici8+CitUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBpbnB1dCBhbnkgdmFsdWUgaW4gdGhlIGlucHV0IGZvcm0K
K2FuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLgorQXQgdGhpcyBwb2ludCwgY2xp
Y2sgdGhlIHNwaW4tZG93biBidXR0b24gcXVpY2tseSBhbmQKK2RvIG5vdCBtb3ZlIHRoZSBjdXJz
b3IgZnJvbSB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBhZnRlciB0aGUgY2xpY2suCitJZiB0aGUgdmFs
dWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4KKzwvcD4KKzwvZGl2Pgor
PHNjcmlwdD4KK3ZhciB0ZXN0X2lucHV0czsKK3ZhciB0ZXN0X2RlbGF5czsKK3ZhciBpbnB1dDsK
K3ZhciBkZWxheTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgdGVzdF9pbnB1dHMgPSBbZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlYWRvbmx5TnVt
YmVyIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlZE51bWJlciIpXTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBuZXh0SW5wdXRUZXN0KCk7CisgICAgfSwg
MCk7Cit9CisKK2Z1bmN0aW9uIG5leHRJbnB1dFRlc3QoKSB7CisgICAgaWYgKHRlc3RfaW5wdXRz
Lmxlbmd0aCA9PSAwKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnB1dCA9IHRlc3RfaW5wdXRzLnNoaWZ0KCk7Cisg
ICAgICAgIHRlc3RfZGVsYXlzID0gWzEsIDEwLCAxMDBdOworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIGRlYnVnKCJUZXN0IG9uIGEgIiArIChpbnB1dC5pZCA9PSAicmVhZG9ubHlOdW1iZXIi
ID8gInJlYWRvbmx5IiA6ICJkaXNhYmxlZCIpICsgIiBudW1iZXIgaW5wdXQgZm9ybToiKTsKKyAg
ICAgICAgbmV4dERlbGF5VGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gbmV4dERlbGF5VGVz
dCgpIHsKKyAgICBpZiAodGVzdF9kZWxheXMubGVuZ3RoID09IDApIHsKKyAgICAgICAgbmV4dElu
cHV0VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGF5ID0gdGVzdF9kZWxheXMuc2hp
ZnQoKTsKKyAgICAgICAgaW5pdGlhbGl6ZUlucHV0QXR0cmlidXRlcyhpbnB1dCwgMTIzNDU2Nyk7
CisgICAgICAgIGRlYnVnKCJkZWxheSA9ICIgKyBkZWxheSArICIgbXMiKTsKKyAgICAgICAgY2xp
Y2tTcGluRG93bkJ1dHRvbihpbnB1dCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lucHV0LnZhbHVlJywgIjEyMzQ1
NjYiKTsKKyAgICAgICAgICAgIG5leHREZWxheVRlc3QoKTsKKyAgICAgICAgfSwgNjAwKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSB7CisgICAg
aW5wdXQucmVhZE9ubHkgPSAicmVhZG9ubHkiOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdW5kZWZpbmVkOworICAgIH0sIGRlbGF5KTsKK30K
KworZnVuY3Rpb24gbW91c2V1cEV2ZW50T25EaXNhYmxlZE51bWJlcigpIHsKKyAgICBpbnB1dC5k
aXNhYmxlZCA9ICJkaXNhYmxlZCI7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgaW5wdXQuZGlzYWJsZWQgPSB1bmRlZmluZWQ7CisgICAgfSwgZGVsYXkpOworfQorCitmdW5j
dGlvbiBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVzKGlucHV0LCB2YWx1ZSkgeworICAgIGlucHV0
LnZhbHVlID0gdmFsdWU7CisgICAgaW5wdXQuZGlzYWJsZWQgPSB1bmRlZmluZWQ7CisgICAgaW5w
dXQucmVhZE9ubHkgPSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGNsaWNrU3BpbkRvd25CdXR0
b24oaW5wdXQpIHsKKyAgICB2YXIgeCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRX
aWR0aCAtIDY7CisgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWln
aHQgLSA2OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhNThkODIwZmU3NDcxMzAwZDM1NGJjMzQxMGNiNmNlYTdhMGM2MTNmLi40YzJl
MDhhNTliNWM2YmQzYmFhODNmMjYzNGEzMzlhNTM3ZDhiYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDMgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4K
KworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBjb250aW51ZXMgdG8g
aW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3ODYKKworICAg
ICAgICBUaGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbnB1dCBmb3JtIGNvbnRpbnVlcyB0byBpbmNy
ZWFzZS9kZWNyZWFzZSBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAoMSkgQ2xp
Y2sgdGhlIHNwaW4gYnV0dG9uIG9mIHRoZSBpbnB1dCBmb3JtLgorICAgICAgICAoMikgSG9vayB0
aGUgJ21vdXNldXAnIGV2ZW50IGFuZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorICAgICAgICAo
MykgRW5hYmxlIHRoZSBpbnB1dCBmb3JtIGFmdGVyIHNvbWUgZGVsYXkgKGUuZy4gNTBtcykuCisK
KyAgICAgICAgV2hhdCBpcyBoYXBwZW5pbmcgYWJvdmUgaXMgYXMgZm9sbG93czoKKyAgICAgICAg
KDEpIFdoZW4gdGhlICdtb3VzZWRvd24nIGV2ZW50IGhhcHBlbnMsIHRoZSByZXBlYXRpbmcgdGlt
ZXIgb2YgdGhlIHNwaW4gYnV0dG9uIHN0YXJ0cy4KKyAgICAgICAgKDIpIElmIHRoZSBpbnB1dCBm
b3JtIGlzIG5vdCBkaXNhYmxlZCwgdGhlIHJlcGVhdGluZyB0aW1lciBzdG9wcyBhdCB0aGUgJ21v
dXNldXAnIGV2ZW50LgorICAgICAgICBIb3dldmVyLCBpZiB0aGUgaW5wdXQgZm9ybSBpcyBkaXNh
YmxlZCwgdGhlICdtb3VzZXVwJyBldmVudCBpcyBpZ25vcmVkLCBmYWlsaW5nIHRvIHN0b3AKKyAg
ICAgICAgdGhlIHJlcGVhdGluZyB0aW1lci4KKyAgICAgICAgKDMpIFRoZSB2YWx1ZSBjb250aW51
ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UsIHNpbmNlIHRoZSByZXBlYXRpbmcgdGltZXIgaXMgc3Rp
bGwgd29ya2luZy4KKworICAgICAgICBUaGlzIHBhdGNoIHN0b3BzIHRoZSByZXBlYXRpbmcgdGlt
ZXIgd2hlbiB0aGUgaW5wdXQgZm9ybSBnZXRzIGRpc2FibGVkIG9yIHJlYWRvbmx5LgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1sCisKKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpz
dG9wUmVwZWF0aW5nKTogQSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogQ2FsbHMgZGlz
YWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgd2hlbiAnZGlzYWJsZWQnIGF0dHJpYnV0ZSBnZXRzIGNo
YW5nZWQuIENhbGxzIHJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgpIHdoZW4gJ3JlYWRvbmx5JyBh
dHRyaWJ1dGUgZ2V0cyBjaGFuZ2VkLgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogQSB2
aXJ0dWFsIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cmVhZG9ubHlBdHRy
aWJ1dGVDaGFuZ2VkKTogQSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZS5oOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogU3Rv
cHMgdGhlIHJlcGVhdGluZyB0aW1lci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6cmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0aW1l
ci4KKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGluQnV0dG9uRWxlbWVudDo6c3RvcFJlcGVhdGluZyk6IFN0b3BzIHRoZSByZXBlYXRpbmcgdGlt
ZXIuCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisK
IDIwMTEtMDctMTggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDc0MgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAppbmRleCAzM2VlZjRkMWE3OGQwZGEyOTQ1NGE2ODUwNmUwMTExMWYx
MjI0ZjJlLi5lODY3YzFmNTU5NWI5NWRlZTViNGM0MWI1MDBhOWQwZmRmNjIyYzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtODU4LDYgKzg1OCwxMCBAQCBUZXh0RGlyZWN0
aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShib29s
JiBpc0F1dG8pIGNvbgogICAgIHJldHVybiBkaXJlY3Rpb25hbGl0eSgpOwogfQogCit2b2lkIEhU
TUxFbGVtZW50OjpzdG9wUmVwZWF0aW5nKCkKK3sKK30KKwogVGV4dERpcmVjdGlvbiBIVE1MRWxl
bWVudDo6ZGlyZWN0aW9uYWxpdHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUp
IGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAppbmRleCA5YzQwN2UxOGM1MjQzODg0YTJkZmRhNmNjOGM0ZTc5NDlhNDMxNDE2
Li5iMTE1OWI0OTAyOWUwMzI2MzhiYmMxMzhjNjAxNjk0NDk1OTIyOGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoKIAogICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoYm9vbCYgaXNBdXRvKSBj
b25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdG9wUmVwZWF0aW5nKCk7CisKIHByb3RlY3RlZDoK
ICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBiNjFhMGM1
OTUwODcwNGM5MGE5MTI3MzZkNTE5YzcyMGUzMTMyODk5Li45NDJiN2UzY2MyN2UxMTVhMWU2YzVi
ZWQwYTZhMGFmZWM3NThhMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTc4OSw2ICs3ODksMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIHNldE5lZWRzVmFsaWRpdHlD
aGVjaygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyIHx8IGF0
dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBzdGVwQXR0cikK
ICAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGRpc2FibGVkQXR0cikKKyAgICAgICAgbV9pbnB1dFR5cGUtPmRpc2FibGVkQXR0cmli
dXRlQ2hhbmdlZCgpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSByZWFkb25seUF0dHIp
CisgICAgICAgIG1faW5wdXRUeXBlLT5yZWFkb25seUF0dHJpYnV0ZUNoYW5nZWQoKTsKICNpZiBF
TkFCTEUoREFUQUxJU1QpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxpc3RBdHRyKQog
ICAgICAgICBtX2hhc05vbkVtcHR5TGlzdCA9ICFhdHRyLT5pc0VtcHR5KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5jcHAKaW5kZXggZDUwY2U2NmFjZTVlZjUwMzhjNWI5NzljNjQ2MzE0ZGUwYjYx
OGE5Ny4uNjA5MjQ2MGEwMDc4ZmUyNTMwZGU2NDE3Yzg3YTE0MDBmOTRlZmU1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtNjczLDYgKzY3MywxNCBAQCB2b2lkIElucHV0VHlwZTo6
bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKIH0KIAordm9pZCBJbnB1dFR5cGU6OmRpc2Fi
bGVkQXR0cmlidXRlQ2hhbmdlZCgpCit7Cit9CisKK3ZvaWQgSW5wdXRUeXBlOjpyZWFkb25seUF0
dHJpYnV0ZUNoYW5nZWQoKQoreworfQorCiBuYW1lc3BhY2UgSW5wdXRUeXBlTmFtZXMgewogCiAv
LyBUaGUgdHlwZSBuYW1lcyBtdXN0IGJlIGxvd2VyY2FzZWQgYmVjYXVzZSB0aGV5IHdpbGwgYmUg
dGhlIHJldHVybiB2YWx1ZXMgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDkzNzc5NjFh
OGQwNGY1MmFkN2MxOGMyYmI3OTA2ODBmYjYyYzhmODkuLjJkZjBlZjViOGY5NTg4ZDMyYWU3MmZi
NjMyYzIyNGI3YmNiZjQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMjI5LDYgKzIy
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgbXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCByZWFkb25seUF0dHJp
YnV0ZUNoYW5nZWQoKTsKIAogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3Ig
dGhlIHR5cGUsIGFuZCByZXR1cm4KICAgICAvLyB0aGUgZG91YmxlIHZhbHVlIGZvciB0aGUgcGFy
c2luZyByZXN1bHQgaWYgdGhlIHBhcnNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmNwcAppbmRleCAwN2FiMmUxOGU5YTZjYzcwZTU5NGUzNTgyYjVmMWI4ZDMxNTM0
MGJiLi5jZmFhODU4MzA4NGMyYTNiMjBlNDcwY2FjN2U1N2JmMTVkMDM4ZTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMzgsNiArMjM4LDE2IEBA
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAgICAgbV9j
b250YWluZXIuY2xlYXIoKTsKIH0KIAordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmRpc2FibGVk
QXR0cmlidXRlQ2hhbmdlZCgpCit7CisgICAgbV9pbm5lclNwaW5CdXR0b24tPnN0b3BSZXBlYXRp
bmcoKTsKK30KKwordm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnJlYWRvbmx5QXR0cmlidXRlQ2hh
bmdlZCgpCit7CisgICAgbV9pbm5lclNwaW5CdXR0b24tPnN0b3BSZXBlYXRpbmcoKTsKK30KKwog
Ym9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5o
CmluZGV4IGY2ZTlkMzA1MTAwYmQ3YWU3MzYxODQ3OWE5NTE4ZDI4NTM2Y2VhNzcuLjI2ZDgwZDZm
MzNkMTI4MzhkZTVjY2MwZGQxNDViNjQwZWM2ZGNkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNTgsNiArNTgsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgdmly
dHVhbCB2b2lkIHJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggZDkxYzBl
ZDJhZTU2ZTI4ZDMzZWZkNGI2NjY3NzYwZGI5MmRiMTRkZS4uMzdmN2IwYTUxMTAyY2Q3MDkzOWZi
ZjI2MDg0YTllMThmYjVhOTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0zMzAsNiArMzMwLDExIEBA
IHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50
KQogICAgICAgICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9
CiAKK3ZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnN0b3BSZXBlYXRpbmcoKQoreworICAgIHN0b3BS
ZXBlYXRpbmdUaW1lcigpOworfQorCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpzdGFydFJlcGVh
dGluZ1RpbWVyKCkKIHsKICAgICBtX3ByZXNzU3RhcnRpbmdTdGF0ZSA9IG1fdXBEb3duU3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oCmluZGV4IDZkNGEyYmYzZWQyMDhjYWY5MzIzYTA1YjI3YjJlZWQ3OGIyMDIyOTYu
LjA3NGMxMzAzZWE5NGYxY2FjNTA3YTA3NjQzODJkYTRjODY0NWVjMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBA
IC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0
b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICBVcERvd25TdGF0ZSB1cERvd25TdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXBEb3duU3RhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cFJlcGVhdGluZygpOwogCiBwcml2YXRlOgogICAgIFNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50
Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101293</attachid>
            <date>2011-07-19 03:01:17 -0700</date>
            <delta_ts>2011-07-19 22:33:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64786-20110719190115.patch</filename>
            <type>text/plain</type>
            <size>9309</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTkzNjE4NzU2N2VhMjdmZjhmMjRi
NWM3NjZjMjY4OTJiYjY4NmYxLi5lZGM0YmFlMzE2NGQ5YjI2NDg2YjQ5Yjk2ZmVkODE5OWJhMGVi
ODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQg
Zm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRo
ZSBpbnB1dCBmb3JtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbnB1dCBmb3JtIGNvbnRpbnVlcyB0byBpbmNy
ZWFzZS9kZWNyZWFzZSBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAoMSkgQ2xp
Y2sgdGhlIHNwaW4gYnV0dG9uIG9mIHRoZSBudW1iZXIgaW5wdXQgZm9ybS4KKyAgICAgICAgKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgbnVtYmVyIGlucHV0IGZv
cm0uCisgICAgICAgICgzKSBFbmFibGUgdGhlIG51bWJlciBpbnB1dCBmb3JtIGFmdGVyIHNvbWUg
ZGVsYXkgKGUuZy4gNTBtcykuCisKKyAgICAgICAgV2hhdCBpcyBoYXBwZW5pbmcgYWJvdmUgaXMg
YXMgZm9sbG93czoKKyAgICAgICAgKDEpIFdoZW4gdGhlICdtb3VzZWRvd24nIGV2ZW50IGhhcHBl
bnMsIHRoZSByZXBlYXRpbmcgdGltZXIgb2YgdGhlIHNwaW4gYnV0dG9uIHN0YXJ0cy4KKyAgICAg
ICAgKDIpIElmIHRoZSBpbnB1dCBmb3JtIGlzIG5vdCBkaXNhYmxlZCwgdGhlIHJlcGVhdGluZyB0
aW1lciBzdG9wcyBhdCB0aGUgJ21vdXNldXAnIGV2ZW50LgorICAgICAgICBIb3dldmVyLCBpZiB0
aGUgaW5wdXQgZm9ybSBpcyBkaXNhYmxlZCwgdGhlICdtb3VzZXVwJyBldmVudCBpcyBpZ25vcmVk
LCBmYWlsaW5nIHRvIHN0b3AKKyAgICAgICAgdGhlIHJlcGVhdGluZyB0aW1lci4KKyAgICAgICAg
KDMpIFRoZSB2YWx1ZSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UsIHNpbmNlIHRoZSBy
ZXBlYXRpbmcgdGltZXIgaXMgc3RpbGwgd29ya2luZy4KKworICAgICAgICBUaGUgYWRkZWQgdGVz
dCBjaGVja3MgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGNvbnRpbnVlIHRvIGluY3JlYXNlL2RlY3Jl
YXNlIHdoZW4gd2UgZG8gdGhlIGFib3ZlIG9wZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBmYWlsaW5nIHRlc3QgZXhwZWN0YXRpb24gZm9y
IG9iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy5odG1sIGFmdGVyIHI5MTIyNS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9u
LWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ODJk
ZDY5MzE1MDQyYTI5ZDdjOTJkZmNjODgwMzEwY2EzZTU4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyAKK1RoaXMgdGVzdHMgaWYgdGhlIHZh
bHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gZG9lcyBub3QgY29udGludWUgdG8gaW5jcmVhc2Uv
ZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby4KKygxKSBDbGljayB0aGUgc3BpbiBi
dXR0b24gb2YgdGhlIGlucHV0IGZvcm0uCisoMikgSG9vayB0aGUgJ21vdXNldXAnIGV2ZW50IGFu
ZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5LgorVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgaW5wdXQgYW55IHZhbHVl
IGluIHRoZSBpbnB1dCBmb3JtIGFuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLiBB
dCB0aGlzIHBvaW50LCBjbGljayB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBxdWlja2x5IGFuZCBkbyBu
b3QgbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIHNwaW4tZG93biBidXR0b24gYWZ0ZXIgdGhlIGNs
aWNrLiBJZiB0aGUgdmFsdWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4K
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKK1Rl
c3Qgb24gYSByZWFkb25seSBudW1iZXIgaW5wdXQgZm9ybToKK2RlbGF5ID0gMSBtcworUEFTUyBp
bnB1dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAgbXMKK1BBU1MgaW5wdXQudmFsdWUg
aXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwMCBtcworUEFTUyBpbnB1dC52YWx1ZSBpcyAiMTIzNDU2
NiIKKworVGVzdCBvbiBhIGRpc2FibGVkIG51bWJlciBpbnB1dCBmb3JtOgorZGVsYXkgPSAxIG1z
CitQQVNTIGlucHV0LnZhbHVlIGlzICIxMjM0NTY2IgorZGVsYXkgPSAxMCBtcworUEFTUyBpbnB1
dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAwIG1zCitQQVNTIGlucHV0LnZhbHVlIGlz
ICIxMjM0NTY2IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIzOWIxMDFiMmZhZDIxMjZmMjFjNjY3ZmFiNWQ4MzBiMDlkMWQwZmEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3It
cmVhZG9ubHkuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJyZWFkb25seU51bWJlciIgdHlwZT0i
bnVtYmVyIiBvbm1vdXNldXA9Im1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSIgLz4KKzxp
bnB1dCBpZD0iZGlzYWJsZWROdW1iZXIiIHR5cGU9Im51bWJlciIgb25tb3VzZXVwPSJtb3VzZXVw
RXZlbnRPbkRpc2FibGVkTnVtYmVyKCkiIC8+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzxwPgorVGhp
cyB0ZXN0cyBpZiB0aGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBkb2VzIG5vdCBjb250
aW51ZQordG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby48YnIv
PgorKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5wdXQgZm9ybS48YnIvPgorKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS48YnIv
PgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRlciBzb21lIGRlbGF5Ljxici8+CitUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBpbnB1dCBhbnkgdmFsdWUgaW4gdGhlIGlucHV0IGZvcm0K
K2FuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLgorQXQgdGhpcyBwb2ludCwgY2xp
Y2sgdGhlIHNwaW4tZG93biBidXR0b24gcXVpY2tseSBhbmQKK2RvIG5vdCBtb3ZlIHRoZSBjdXJz
b3IgZnJvbSB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBhZnRlciB0aGUgY2xpY2suCitJZiB0aGUgdmFs
dWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4KKzwvcD4KKzwvZGl2Pgor
PHNjcmlwdD4KK3ZhciB0ZXN0X2lucHV0czsKK3ZhciB0ZXN0X2RlbGF5czsKK3ZhciBpbnB1dDsK
K3ZhciBkZWxheTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgdGVzdF9pbnB1dHMgPSBbZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlYWRvbmx5TnVt
YmVyIiksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXNhYmxlZE51bWJlciIpXTsKKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBuZXh0SW5wdXRUZXN0KCk7CisgICAgfSwg
MCk7Cit9CisKK2Z1bmN0aW9uIG5leHRJbnB1dFRlc3QoKSB7CisgICAgaWYgKHRlc3RfaW5wdXRz
Lmxlbmd0aCA9PSAwKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnB1dCA9IHRlc3RfaW5wdXRzLnNoaWZ0KCk7Cisg
ICAgICAgIHRlc3RfZGVsYXlzID0gWzEsIDEwLCAxMDBdOworICAgICAgICBkZWJ1ZygiIik7Cisg
ICAgICAgIGRlYnVnKCJUZXN0IG9uIGEgIiArIChpbnB1dC5pZCA9PSAicmVhZG9ubHlOdW1iZXIi
ID8gInJlYWRvbmx5IiA6ICJkaXNhYmxlZCIpICsgIiBudW1iZXIgaW5wdXQgZm9ybToiKTsKKyAg
ICAgICAgbmV4dERlbGF5VGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gbmV4dERlbGF5VGVz
dCgpIHsKKyAgICBpZiAodGVzdF9kZWxheXMubGVuZ3RoID09IDApIHsKKyAgICAgICAgbmV4dElu
cHV0VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGF5ID0gdGVzdF9kZWxheXMuc2hp
ZnQoKTsKKyAgICAgICAgaW5pdGlhbGl6ZUlucHV0QXR0cmlidXRlcyhpbnB1dCwgMTIzNDU2Nyk7
CisgICAgICAgIGRlYnVnKCJkZWxheSA9ICIgKyBkZWxheSArICIgbXMiKTsKKyAgICAgICAgY2xp
Y2tTcGluRG93bkJ1dHRvbihpbnB1dCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lucHV0LnZhbHVlJywgIjEyMzQ1
NjYiKTsKKyAgICAgICAgICAgIG5leHREZWxheVRlc3QoKTsKKyAgICAgICAgfSwgNjAwKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSB7CisgICAg
aW5wdXQucmVhZE9ubHkgPSAicmVhZG9ubHkiOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgIGlucHV0LnJlYWRPbmx5ID0gdW5kZWZpbmVkOworICAgIH0sIGRlbGF5KTsKK30K
KworZnVuY3Rpb24gbW91c2V1cEV2ZW50T25EaXNhYmxlZE51bWJlcigpIHsKKyAgICBpbnB1dC5k
aXNhYmxlZCA9ICJkaXNhYmxlZCI7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgaW5wdXQuZGlzYWJsZWQgPSB1bmRlZmluZWQ7CisgICAgfSwgZGVsYXkpOworfQorCitmdW5j
dGlvbiBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVzKGlucHV0LCB2YWx1ZSkgeworICAgIGlucHV0
LnZhbHVlID0gdmFsdWU7CisgICAgaW5wdXQuZGlzYWJsZWQgPSB1bmRlZmluZWQ7CisgICAgaW5w
dXQucmVhZE9ubHkgPSB1bmRlZmluZWQ7Cit9CisKK2Z1bmN0aW9uIGNsaWNrU3BpbkRvd25CdXR0
b24oaW5wdXQpIHsKKyAgICB2YXIgeCA9IGlucHV0Lm9mZnNldExlZnQgKyBpbnB1dC5vZmZzZXRX
aWR0aCAtIDY7CisgICAgdmFyIHkgPSBpbnB1dC5vZmZzZXRUb3AgKyBpbnB1dC5vZmZzZXRIZWln
aHQgLSA2OworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhNThkODIwZmU3NDcxMzAwZDM1NGJjMzQxMGNiNmNlYTdhMGM2MTNmLi4yOGNh
MTU1YzU1YzQwNjczN2M0NTUwYTdlZmJlMTQwZGYyOTdjYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AZ29vZ2xlLmNvbT4K
KworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBjb250aW51ZXMgdG8g
aW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3ODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdmFsdWUgb2Yg
dGhlIG51bWJlciBpbnB1dCBmb3JtIGNvbnRpbnVlcyB0byBpbmNyZWFzZS9kZWNyZWFzZSBpbiB0
aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAoMSkgQ2xpY2sgdGhlIHNwaW4gYnV0dG9u
IG9mIHRoZSBpbnB1dCBmb3JtLgorICAgICAgICAoMikgSG9vayB0aGUgJ21vdXNldXAnIGV2ZW50
IGFuZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorICAgICAgICAoMykgRW5hYmxlIHRoZSBpbnB1
dCBmb3JtIGFmdGVyIHNvbWUgZGVsYXkgKGUuZy4gNTBtcykuCisKKyAgICAgICAgV2hhdCBpcyBo
YXBwZW5pbmcgYWJvdmUgaXMgYXMgZm9sbG93czoKKyAgICAgICAgKDEpIFdoZW4gdGhlICdtb3Vz
ZWRvd24nIGV2ZW50IGhhcHBlbnMsIHRoZSByZXBlYXRpbmcgdGltZXIgb2YgdGhlIHNwaW4gYnV0
dG9uIHN0YXJ0cy4KKyAgICAgICAgKDIpIElmIHRoZSBpbnB1dCBmb3JtIGlzIG5vdCBkaXNhYmxl
ZCwgdGhlIHJlcGVhdGluZyB0aW1lciBzdG9wcyBhdCB0aGUgJ21vdXNldXAnIGV2ZW50LgorICAg
ICAgICBIb3dldmVyLCBpZiB0aGUgaW5wdXQgZm9ybSBpcyBkaXNhYmxlZCwgdGhlICdtb3VzZXVw
JyBldmVudCBpcyBpZ25vcmVkLCBmYWlsaW5nIHRvIHN0b3AKKyAgICAgICAgdGhlIHJlcGVhdGlu
ZyB0aW1lci4KKyAgICAgICAgKDMpIFRoZSB2YWx1ZSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVj
cmVhc2UsIHNpbmNlIHRoZSByZXBlYXRpbmcgdGltZXIgaXMgc3RpbGwgd29ya2luZy4KKworICAg
ICAgICBUaGlzIHBhdGNoIHN0b3BzIHRoZSByZXBlYXRpbmcgdGltZXIgd2hlbiB0aGUgaW5wdXQg
Zm9ybSBpcyBkZXRlY3RlZCB0byBiZSBkaXNhYmxlZCBvciByZWFkb25seS4KKworICAgICAgICBU
ZXN0OiBmYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRt
bAorCisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpyZXBlYXRpbmdUaW1lckZp
cmVkKToKKwogMjAxMS0wNy0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzQyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAppbmRleCBkOTFjMGVkMmFlNTZlMjhkMzNlZmQ0YjY2Njc3NjBkYjkyZGIxNGRlLi5h
NTI3ZmU1N2Q0MjhhNzY5OWRkMTdiZDg3M2FiNzM0YWU3ZDkxZDhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAK
QEAgLTI3OSw2ICsyNzksNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1
dChzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpKTsK
ICAgICBpZiAoaW5wdXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJv
bCgpKSB7CisgICAgICAgIHN0b3BSZXBlYXRpbmdUaW1lcigpOwogICAgICAgICBpZiAoIWV2ZW50
LT5kZWZhdWx0SGFuZGxlZCgpKQogICAgICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICByZXR1cm47CkBAIC0zNDUsOCArMzQ2LDEwIEBA
IHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnN0b3BSZXBlYXRpbmdUaW1lcigpCiB2b2lkIFNwaW5C
dXR0b25FbGVtZW50OjpyZXBlYXRpbmdUaW1lckZpcmVkKFRpbWVyPFNwaW5CdXR0b25FbGVtZW50
PiopCiB7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5w
dXRFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpOwotICAgIGlmIChpbnB1dC0+ZGlzYWJs
ZWQoKSB8fCBpbnB1dC0+aXNSZWFkT25seUZvcm1Db250cm9sKCkpCisgICAgaWYgKGlucHV0LT5k
aXNhYmxlZCgpIHx8IGlucHV0LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkgeworICAgICAgICBz
dG9wUmVwZWF0aW5nVGltZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAvLyBPbiBN
YWMgT1MsIE5TU3RlcHBlciB1cGRhdGVzIHRoZSB2YWx1ZSBmb3IgdGhlIGJ1dHRvbiB1bmRlciB0
aGUgbW91c2UKICAgICAvLyBjdXJzb3IgcmVnYXJkbGVzcyBvZiB0aGUgYnV0dG9uIHByZXNzZWQg
YXQgdGhlIGJlZ2lubmluZy4gU28gdGhlCiAgICAgLy8gZm9sbG93aW5nIGNoZWNrIGlzIG5vdCBu
ZWVkZWQgZm9yIE1hYyBPUy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101302</attachid>
            <date>2011-07-19 05:07:43 -0700</date>
            <delta_ts>2011-07-20 02:19:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64786-20110719210741.patch</filename>
            <type>text/plain</type>
            <size>15982</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTkzNjE4NzU2N2VhMjdmZjhmMjRi
NWM3NjZjMjY4OTJiYjY4NmYxLi5lZGM0YmFlMzE2NGQ5YjI2NDg2YjQ5Yjk2ZmVkODE5OWJhMGVi
ODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQg
Zm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRo
ZSBpbnB1dCBmb3JtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbnB1dCBmb3JtIGNvbnRpbnVlcyB0byBpbmNy
ZWFzZS9kZWNyZWFzZSBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAoMSkgQ2xp
Y2sgdGhlIHNwaW4gYnV0dG9uIG9mIHRoZSBudW1iZXIgaW5wdXQgZm9ybS4KKyAgICAgICAgKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgbnVtYmVyIGlucHV0IGZv
cm0uCisgICAgICAgICgzKSBFbmFibGUgdGhlIG51bWJlciBpbnB1dCBmb3JtIGFmdGVyIHNvbWUg
ZGVsYXkgKGUuZy4gNTBtcykuCisKKyAgICAgICAgV2hhdCBpcyBoYXBwZW5pbmcgYWJvdmUgaXMg
YXMgZm9sbG93czoKKyAgICAgICAgKDEpIFdoZW4gdGhlICdtb3VzZWRvd24nIGV2ZW50IGhhcHBl
bnMsIHRoZSByZXBlYXRpbmcgdGltZXIgb2YgdGhlIHNwaW4gYnV0dG9uIHN0YXJ0cy4KKyAgICAg
ICAgKDIpIElmIHRoZSBpbnB1dCBmb3JtIGlzIG5vdCBkaXNhYmxlZCwgdGhlIHJlcGVhdGluZyB0
aW1lciBzdG9wcyBhdCB0aGUgJ21vdXNldXAnIGV2ZW50LgorICAgICAgICBIb3dldmVyLCBpZiB0
aGUgaW5wdXQgZm9ybSBpcyBkaXNhYmxlZCwgdGhlICdtb3VzZXVwJyBldmVudCBpcyBpZ25vcmVk
LCBmYWlsaW5nIHRvIHN0b3AKKyAgICAgICAgdGhlIHJlcGVhdGluZyB0aW1lci4KKyAgICAgICAg
KDMpIFRoZSB2YWx1ZSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UsIHNpbmNlIHRoZSBy
ZXBlYXRpbmcgdGltZXIgaXMgc3RpbGwgd29ya2luZy4KKworICAgICAgICBUaGUgYWRkZWQgdGVz
dCBjaGVja3MgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGNvbnRpbnVlIHRvIGluY3JlYXNlL2RlY3Jl
YXNlIHdoZW4gd2UgZG8gdGhlIGFib3ZlIG9wZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBmYWlsaW5nIHRlc3QgZXhwZWN0YXRpb24gZm9y
IG9iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy5odG1sIGFmdGVyIHI5MTIyNS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9u
LWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNWFk
MzhlZTc3ZGU0M2ZmNzZhZTA5NTIxNWRhMzNlZWQ2ZjAwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyAKK1RoaXMgdGVzdHMgaWYgdGhlIHZh
bHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gZG9lcyBub3QgY29udGludWUgdG8gaW5jcmVhc2Uv
ZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby4KKygxKSBDbGljayB0aGUgc3BpbiBi
dXR0b24gb2YgdGhlIGlucHV0IGZvcm0uCisoMikgSG9vayB0aGUgJ21vdXNldXAnIGV2ZW50IGFu
ZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5LgorVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgaW5wdXQgYW55IHZhbHVl
IGluIHRoZSBpbnB1dCBmb3JtIGFuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLiBB
dCB0aGlzIHBvaW50LCBjbGljayB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBxdWlja2x5IGFuZCBkbyBu
b3QgbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIHNwaW4tZG93biBidXR0b24gYWZ0ZXIgdGhlIGNs
aWNrLiBJZiB0aGUgdmFsdWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4K
KworCitUZXN0IG9uIGEgcmVhZG9ubHkgbnVtYmVyIGlucHV0IGZvcm06CitkZWxheSA9IDEgbXMK
K1BBU1MgaW5wdXQudmFsdWUgaXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwIG1zCitQQVNTIGlucHV0
LnZhbHVlIGlzICIxMjM0NTY2IgorZGVsYXkgPSAxMDAgbXMKK1BBU1MgaW5wdXQudmFsdWUgaXMg
IjEyMzQ1NjYiCisKK1Rlc3Qgb24gYSBkaXNhYmxlZCBudW1iZXIgaW5wdXQgZm9ybToKK2RlbGF5
ID0gMSBtcworUEFTUyBpbnB1dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAgbXMKK1BB
U1MgaW5wdXQudmFsdWUgaXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwMCBtcworUEFTUyBpbnB1dC52
YWx1ZSBpcyAiMTIzNDU2NiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQyOGY5OGJlZThmYTk5NzEwZTlhMWY3OGMwNjI5NDk2ZGIyODUwMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3It
cmVhZG9ubHkuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJyZWFkb25seU51bWJlciIgdHlwZT0i
bnVtYmVyIiBvbm1vdXNldXA9Im1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSIgLz4KKzxp
bnB1dCBpZD0iZGlzYWJsZWROdW1iZXIiIHR5cGU9Im51bWJlciIgb25tb3VzZXVwPSJtb3VzZXVw
RXZlbnRPbkRpc2FibGVkTnVtYmVyKCkiIC8+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzxwPgorVGhp
cyB0ZXN0cyBpZiB0aGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBkb2VzIG5vdCBjb250
aW51ZQordG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby48YnIv
PgorKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5wdXQgZm9ybS48YnIvPgorKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS48YnIv
PgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRlciBzb21lIGRlbGF5Ljxici8+CitUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBpbnB1dCBhbnkgdmFsdWUgaW4gdGhlIGlucHV0IGZvcm0K
K2FuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLgorQXQgdGhpcyBwb2ludCwgY2xp
Y2sgdGhlIHNwaW4tZG93biBidXR0b24gcXVpY2tseSBhbmQKK2RvIG5vdCBtb3ZlIHRoZSBjdXJz
b3IgZnJvbSB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBhZnRlciB0aGUgY2xpY2suCitJZiB0aGUgdmFs
dWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4KKzwvcD4KKzwvZGl2Pgor
PHNjcmlwdD4KK3ZhciB0ZXN0SW5wdXRzOwordmFyIHRlc3REZWxheXM7Cit2YXIgaW5wdXQ7Cit2
YXIgZGVsYXk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdGVzdElucHV0
cyA9IFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVhZG9ubHlOdW1iZXIiKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpc2FibGVkTnVtYmVyIildOworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIG5leHRJbnB1dFRlc3QoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rp
b24gbmV4dElucHV0VGVzdCgpIHsKKyAgICBpZiAodGVzdElucHV0cy5sZW5ndGggPT0gMCkgewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnB1dCA9IHRl
c3RJbnB1dHMuc2hpZnQoKTsKKyAgICAgICAgdGVzdERlbGF5cyA9IFsxLCAxMCwgMTAwXTsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiVGVzdCBvbiBhICIgKyAoaW5wdXQuaWQg
PT0gInJlYWRvbmx5TnVtYmVyIiA/ICJyZWFkb25seSIgOiAiZGlzYWJsZWQiKSArICIgbnVtYmVy
IGlucHV0IGZvcm06Iik7CisgICAgICAgIG5leHREZWxheVRlc3QoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIG5leHREZWxheVRlc3QoKSB7CisgICAgaWYgKHRlc3REZWxheXMubGVuZ3RoID09IDAp
IHsKKyAgICAgICAgbmV4dElucHV0VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGF5
ID0gdGVzdERlbGF5cy5zaGlmdCgpOworICAgICAgICBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVz
KGlucHV0LCAxMjM0NTY3KTsKKyAgICAgICAgZGVidWcoImRlbGF5ID0gIiArIGRlbGF5ICsgIiBt
cyIpOworICAgICAgICBjbGlja1NwaW5Eb3duQnV0dG9uKGlucHV0KTsKKyAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW5w
dXQudmFsdWUnLCAiMTIzNDU2NiIpOworICAgICAgICAgICAgbmV4dERlbGF5VGVzdCgpOworICAg
ICAgICB9LCA2MDApOworICAgIH0KK30KKworZnVuY3Rpb24gbW91c2V1cEV2ZW50T25SZWFkb25s
eU51bWJlcigpIHsKKyAgICBpbnB1dC5yZWFkT25seSA9ICJyZWFkb25seSI7CisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgaW5wdXQucmVhZE9ubHkgPSB1bmRlZmluZWQ7Cisg
ICAgfSwgZGVsYXkpOworfQorCitmdW5jdGlvbiBtb3VzZXVwRXZlbnRPbkRpc2FibGVkTnVtYmVy
KCkgeworICAgIGlucHV0LmRpc2FibGVkID0gImRpc2FibGVkIjsKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICBpbnB1dC5kaXNhYmxlZCA9IHVuZGVmaW5lZDsKKyAgICB9LCBk
ZWxheSk7Cit9CisKK2Z1bmN0aW9uIGluaXRpYWxpemVJbnB1dEF0dHJpYnV0ZXMoaW5wdXQsIHZh
bHVlKSB7CisgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTsKKyAgICBpbnB1dC5kaXNhYmxlZCA9IHVu
ZGVmaW5lZDsKKyAgICBpbnB1dC5yZWFkT25seSA9IHVuZGVmaW5lZDsKK30KKworZnVuY3Rpb24g
Y2xpY2tTcGluRG93bkJ1dHRvbihpbnB1dCkgeworICAgIHZhciB4ID0gaW5wdXQub2Zmc2V0TGVm
dCArIGlucHV0Lm9mZnNldFdpZHRoIC0gNjsKKyAgICB2YXIgeSA9IGlucHV0Lm9mZnNldFRvcCAr
IGlucHV0Lm9mZnNldEhlaWdodCAtIDY7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwg
eSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE1OGQ4MjBmZTc0NzEzMDBkMzU0YmMzNDEwY2I2
Y2VhN2EwYzYxM2YuLmUxZTRlNmU2NDhmYTc4OGI3MDMzM2FlNTZlNzU4YzVmYmJkMDNmOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wNy0xOSAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBnb29nbGUuY29tPgorCisgICAgICAgIFRoZSB2YWx1ZSBvZiBhIG51bWJlciBpbnB1dCBm
b3JtIGNvbnRpbnVlcyB0byBpbmNyZWFzZS9kZWNyZWFzZSBldmVuIGlmIHdlIGRpc2FibGUgdGhl
IGlucHV0IGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDc4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGlucHV0IGZvcm0gY29udGludWVzIHRvIGluY3Jl
YXNlL2RlY3JlYXNlIGluIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW86CisgICAgICAgICgxKSBDbGlj
ayB0aGUgc3BpbiBidXR0b24gb2YgdGhlIGlucHV0IGZvcm0uCisgICAgICAgICgyKSBIb29rIHRo
ZSAnbW91c2V1cCcgZXZlbnQgYW5kIGRpc2FibGUgdGhlIGlucHV0IGZvcm0uCisgICAgICAgICgz
KSBFbmFibGUgdGhlIGlucHV0IGZvcm0gYWZ0ZXIgc29tZSBkZWxheSAoZS5nLiA1MG1zKS4KKwor
ICAgICAgICBXaGF0IGlzIGhhcHBlbmluZyBhYm92ZSBpcyBhcyBmb2xsb3dzOgorICAgICAgICAo
MSkgV2hlbiB0aGUgJ21vdXNlZG93bicgZXZlbnQgaGFwcGVucywgdGhlIHJlcGVhdGluZyB0aW1l
ciBvZiB0aGUgc3BpbiBidXR0b24gc3RhcnRzLgorICAgICAgICAoMikgSWYgdGhlIGlucHV0IGZv
cm0gaXMgbm90IGRpc2FibGVkLCB0aGUgcmVwZWF0aW5nIHRpbWVyIHN0b3BzIGF0IHRoZSAnbW91
c2V1cCcgZXZlbnQuCisgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSBpbnB1dCBmb3JtIGlzIGRpc2Fi
bGVkLCB0aGUgJ21vdXNldXAnIGV2ZW50IGlzIGlnbm9yZWQsIGZhaWxpbmcgdG8gc3RvcAorICAg
ICAgICB0aGUgcmVwZWF0aW5nIHRpbWVyLgorICAgICAgICAoMykgVGhlIHZhbHVlIGNvbnRpbnVl
cyB0byBpbmNyZWFzZS9kZWNyZWFzZSwgc2luY2UgdGhlIHJlcGVhdGluZyB0aW1lciBpcyBzdGls
bCB3b3JraW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc3RvcHMgdGhlIHJlcGVhdGluZyB0aW1l
ciB3aGVuIHRoZSBpbnB1dCBmb3JtIGdldHMgZGlzYWJsZWQgb3IgcmVhZG9ubHkuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9mb3Jtcy9zcGluLWJ1dHRvbi1nZXRzLWRpc2FibGVkLW9yLXJlYWRvbmx5
Lmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKTogQSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKTogQ2FsbHMgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgd2hlbiAnZGlzYWJsZWQn
IGF0dHJpYnV0ZSBnZXRzIGNoYW5nZWQuIENhbGxzIHJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgp
IHdoZW4gJ3JlYWRvbmx5JyBhdHRyaWJ1dGUgZ2V0cyBjaGFuZ2VkLgorICAgICAgICAqIGh0bWwv
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6ZGlzYWJsZWRBdHRy
aWJ1dGVDaGFuZ2VkKTogQSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0
VHlwZTo6cmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKTogQSB2aXJ0dWFsIG1ldGhvZC4KKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRBdHRy
aWJ1dGVDaGFuZ2VkKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0aW1lciBhbmQgcmVsZWFzZXMgbW91
c2UgY2FwdHVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpyZWFk
b25seUF0dHJpYnV0ZUNoYW5nZWQpOiBTdG9wcyB0aGUgcmVwZWF0aW5nIHRpbWVyIGFuZCByZWxl
YXNlcyBtb3VzZSBjYXB0dXJpbmcuCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRldGFjaCk6IFJlcGxhc2VkIHRo
ZSBjb2RlIHdpdGggcmVsZWFzZUNhcHR1cmUoKS4KKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0
b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogUmVwbGFzZWQgdGhlIGNvZGUgd2l0aCBy
ZWxlYXNlQ2FwdHVyZSgpLgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnJl
bGVhc2VDYXB0dXJlKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0aW1lciBhbmQgcmVsZWFzZXMgbW91
c2UgY2FwdHVyaW5nLgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5oOgorCiAyMDExLTA3LTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3NDIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMzNlZWY0ZDFhNzhkMGRhMjk0NTRhNjg1
MDZlMDExMTFmMTIyNGYyZS4uMWY2ZjFlNjhkYzgxZDE5N2ViNTE2YTk1YzJhZmNmMjAxODg0ZTRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTg1OCw2ICs4NTgsMTAgQEAg
VGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRy
aWJ1dGUoYm9vbCYgaXNBdXRvKSBjb24KICAgICByZXR1cm4gZGlyZWN0aW9uYWxpdHkoKTsKIH0K
IAordm9pZCBIVE1MRWxlbWVudDo6cmVsZWFzZUNhcHR1cmUoKQoreworfQorCiBUZXh0RGlyZWN0
aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxp
dHlUZXh0Tm9kZSkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IDljNDA3ZTE4YzUyNDM4ODRhMmRmZGE2Y2M4YzRl
Nzk0OWE0MzE0MTYuLmZmYTRkZTMxYTcyYzAyNDAyMjU3ZjFhMDQ3MDhkYzEwMTQwYTAzNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTgzLDYgKzgzLDggQEAgcHVibGljOgogCiAg
ICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShib29s
JiBpc0F1dG8pIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VDYXB0dXJlKCk7CisK
IHByb3RlY3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApp
bmRleCBiNjFhMGM1OTUwODcwNGM5MGE5MTI3MzZkNTE5YzcyMGUzMTMyODk5Li42MDY0MGI1YTk1
ZDUyMzU2ZWQ3YWZjMjAxN2FmNTVkYjE4MzE1YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTc4OSw2ICs3ODksMTMgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIHNldE5l
ZWRzVmFsaWRpdHlDaGVjaygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdHRl
cm5BdHRyIHx8IGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyIHx8IGF0dHItPm5hbWUoKSA9
PSBzdGVwQXR0cikKICAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CisgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGRpc2FibGVkQXR0cikgeworICAgICAgICBtX2lucHV0VHlwZS0+
ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKKyAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSByZWFkb25seUF0dHIpIHsKKyAgICAgICAgbV9pbnB1dFR5cGUtPnJlYWRvbmx5
QXR0cmlidXRlQ2hhbmdlZCgpOworICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CisgICAgfQogI2lmIEVOQUJMRShEQVRBTElTVCkK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGlzdEF0dHIpCiAgICAgICAgIG1faGFzTm9u
RW1wdHlMaXN0ID0gIWF0dHItPmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApp
bmRleCBkNTBjZTY2YWNlNWVmNTAzOGM1Yjk3OWM2NDYzMTRkZTBiNjE4YTk3Li42MDkyNDYwYTAw
NzhmZTI1MzBkZTY0MTdjODdhMTQwMGY5NGVmZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCkBAIC02NzMsNiArNjczLDE0IEBAIHZvaWQgSW5wdXRUeXBlOjptdWx0aXBsZUF0dHJpYnV0
ZUNoYW5nZWQoKQogewogfQogCit2b2lkIElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFu
Z2VkKCkKK3sKK30KKwordm9pZCBJbnB1dFR5cGU6OnJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgp
Cit7Cit9CisKIG5hbWVzcGFjZSBJbnB1dFR5cGVOYW1lcyB7CiAKIC8vIFRoZSB0eXBlIG5hbWVz
IG11c3QgYmUgbG93ZXJjYXNlZCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB0aGUgcmV0dXJuIHZhbHVl
cyBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggOTM3Nzk2MWE4ZDA0ZjUyYWQ3YzE4YzJi
Yjc5MDY4MGZiNjJjOGY4OS4uMmRmMGVmNWI4Zjk1ODhkMzJhZTcyZmI2MzJjMjI0YjdiY2JmNDY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0yMjksNiArMjI5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpOwogICAgIHZpcnR1YWwgdm9pZCBtdWx0aXBs
ZUF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgpOwog
CiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0aGUgdHlwZSwgYW5kIHJl
dHVybgogICAgIC8vIHRoZSBkb3VibGUgdmFsdWUgZm9yIHRoZSBwYXJzaW5nIHJlc3VsdCBpZiB0
aGUgcGFyc2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmlu
ZGV4IDA3YWIyZTE4ZTlhNmNjNzBlNTk0ZTM1ODJiNWYxYjhkMzE1MzQwYmIuLmI5YTFjMzg1NzM1
MmI2NWYxZTBiN2I5NzU3Mzk3MmNkMjUxOGM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTIzOCw2ICsyMzgsMTggQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKICAgICBtX2NvbnRhaW5lci5jbGVhcigp
OwogfQogCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2Vk
KCkKK3sKKyAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCisgICAgICAgIG1faW5uZXJTcGluQnV0
dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVh
ZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCisg
ICAgICAgIG1faW5uZXJTcGluQnV0dG9uLT5yZWxlYXNlQ2FwdHVyZSgpOworfQorCiBib29sIFRl
eHRGaWVsZElucHV0VHlwZTo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAogewogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXgg
ZjZlOWQzMDUxMDBiZDdhZTczNjE4NDc5YTk1MThkMjg1MzZjZWE3Ny4uMjZkODBkNmYzM2QxMjgz
OGRlNWNjYzBkZDE0NWI2NDBlYzZkY2Q5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCkBAIC01OCw2ICs1OCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNDb250YWluZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIGlzVGV4dEZpZWxkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBkOTFjMGVkMmFlNTZl
MjhkMzNlZmQ0YjY2Njc3NjBkYjkyZGIxNGRlLi4yZjZhYjQzN2FiZTI0ZTZjMGRmMjI4ZGMwOGU1
MTMzNWIyNWE1NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTI1MiwxMyArMjUyLDcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBTcGluQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAog
CiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZXRhY2goKQogewotICAgIHN0b3BSZXBlYXRpbmdU
aW1lcigpOwotICAgIGlmIChtX2NhcHR1cmluZykgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7Ci0gICAgICAgICAgICBtX2NhcHR1
cmluZyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQorICAgIHJlbGVhc2VDYXB0dXJlKCk7CiAg
ICAgSFRNTERpdkVsZW1lbnQ6OmRldGFjaCgpOwogfQogCkBAIC0zMTUsMjEgKzMwOSwyNSBAQCB2
b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
ICAgICAgICAgICAgIG1fdXBEb3duU3RhdGUgPSBsb2NhbC55KCkgPCBib3gtPmhlaWdodCgpIC8g
MiA/IFVwIDogRG93bjsKICAgICAgICAgICAgIGlmIChtX3VwRG93blN0YXRlICE9IG9sZFVwRG93
blN0YXRlKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtX2NhcHR1cmluZykgewotICAgICAgICAgICAgICAg
IHN0b3BSZXBlYXRpbmdUaW1lcigpOwotICAgICAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwotICAgICAgICAgICAg
ICAgICAgICBtX2NhcHR1cmluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbGVhc2VDYXB0
dXJlKCk7CiAgICAgfQogCiAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKICAgICAg
ICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCit2b2lk
IFNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCit7CisgICAgc3RvcFJlcGVhdGlu
Z1RpbWVyKCk7CisgICAgaWYgKG1fY2FwdHVyaW5nKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKKyAgICAgICAgICAgIG1fY2Fw
dHVyaW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OnN0YXJ0UmVwZWF0aW5nVGltZXIoKQogewogICAgIG1fcHJlc3NTdGFydGluZ1N0YXRl
ID0gbV91cERvd25TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggNmQ0YTJiZjNlZDIwOGNhZjkzMjNhMDVi
MjdiMmVlZDc4YjIwMjI5Ni4uMzE5MzZjMTEyNzNmNGI2OGQ2NTAxZjEwNDNhMGY3ODlmYWJlMDVi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIFVwRG93
blN0YXRlIHVwRG93blN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV91cERvd25TdGF0ZTsgfQorICAg
IHZpcnR1YWwgdm9pZCByZWxlYXNlQ2FwdHVyZSgpOwogCiBwcml2YXRlOgogICAgIFNwaW5CdXR0
b25FbGVtZW50KERvY3VtZW50Kik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101426</attachid>
            <date>2011-07-19 22:33:41 -0700</date>
            <delta_ts>2011-07-20 02:19:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64786-20110720143339.patch</filename>
            <type>text/plain</type>
            <size>14753</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTkzNjE4NzU2N2VhMjdmZjhmMjRi
NWM3NjZjMjY4OTJiYjY4NmYxLi5lZGM0YmFlMzE2NGQ5YjI2NDg2YjQ5Yjk2ZmVkODE5OWJhMGVi
ODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQg
Zm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRo
ZSBpbnB1dCBmb3JtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbnB1dCBmb3JtIGNvbnRpbnVlcyB0byBpbmNy
ZWFzZS9kZWNyZWFzZSBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAoMSkgQ2xp
Y2sgdGhlIHNwaW4gYnV0dG9uIG9mIHRoZSBudW1iZXIgaW5wdXQgZm9ybS4KKyAgICAgICAgKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgbnVtYmVyIGlucHV0IGZv
cm0uCisgICAgICAgICgzKSBFbmFibGUgdGhlIG51bWJlciBpbnB1dCBmb3JtIGFmdGVyIHNvbWUg
ZGVsYXkgKGUuZy4gNTBtcykuCisKKyAgICAgICAgV2hhdCBpcyBoYXBwZW5pbmcgYWJvdmUgaXMg
YXMgZm9sbG93czoKKyAgICAgICAgKDEpIFdoZW4gdGhlICdtb3VzZWRvd24nIGV2ZW50IGhhcHBl
bnMsIHRoZSByZXBlYXRpbmcgdGltZXIgb2YgdGhlIHNwaW4gYnV0dG9uIHN0YXJ0cy4KKyAgICAg
ICAgKDIpIElmIHRoZSBpbnB1dCBmb3JtIGlzIG5vdCBkaXNhYmxlZCwgdGhlIHJlcGVhdGluZyB0
aW1lciBzdG9wcyBhdCB0aGUgJ21vdXNldXAnIGV2ZW50LgorICAgICAgICBIb3dldmVyLCBpZiB0
aGUgaW5wdXQgZm9ybSBpcyBkaXNhYmxlZCwgdGhlICdtb3VzZXVwJyBldmVudCBpcyBpZ25vcmVk
LCBmYWlsaW5nIHRvIHN0b3AKKyAgICAgICAgdGhlIHJlcGVhdGluZyB0aW1lci4KKyAgICAgICAg
KDMpIFRoZSB2YWx1ZSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UsIHNpbmNlIHRoZSBy
ZXBlYXRpbmcgdGltZXIgaXMgc3RpbGwgd29ya2luZy4KKworICAgICAgICBUaGUgYWRkZWQgdGVz
dCBjaGVja3MgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGNvbnRpbnVlIHRvIGluY3JlYXNlL2RlY3Jl
YXNlIHdoZW4gd2UgZG8gdGhlIGFib3ZlIG9wZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBmYWlsaW5nIHRlc3QgZXhwZWN0YXRpb24gZm9y
IG9iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy5odG1sIGFmdGVyIHI5MTIyNS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9u
LWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNWFk
MzhlZTc3ZGU0M2ZmNzZhZTA5NTIxNWRhMzNlZWQ2ZjAwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyAKK1RoaXMgdGVzdHMgaWYgdGhlIHZh
bHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gZG9lcyBub3QgY29udGludWUgdG8gaW5jcmVhc2Uv
ZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby4KKygxKSBDbGljayB0aGUgc3BpbiBi
dXR0b24gb2YgdGhlIGlucHV0IGZvcm0uCisoMikgSG9vayB0aGUgJ21vdXNldXAnIGV2ZW50IGFu
ZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5LgorVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgaW5wdXQgYW55IHZhbHVl
IGluIHRoZSBpbnB1dCBmb3JtIGFuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLiBB
dCB0aGlzIHBvaW50LCBjbGljayB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBxdWlja2x5IGFuZCBkbyBu
b3QgbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIHNwaW4tZG93biBidXR0b24gYWZ0ZXIgdGhlIGNs
aWNrLiBJZiB0aGUgdmFsdWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4K
KworCitUZXN0IG9uIGEgcmVhZG9ubHkgbnVtYmVyIGlucHV0IGZvcm06CitkZWxheSA9IDEgbXMK
K1BBU1MgaW5wdXQudmFsdWUgaXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwIG1zCitQQVNTIGlucHV0
LnZhbHVlIGlzICIxMjM0NTY2IgorZGVsYXkgPSAxMDAgbXMKK1BBU1MgaW5wdXQudmFsdWUgaXMg
IjEyMzQ1NjYiCisKK1Rlc3Qgb24gYSBkaXNhYmxlZCBudW1iZXIgaW5wdXQgZm9ybToKK2RlbGF5
ID0gMSBtcworUEFTUyBpbnB1dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAgbXMKK1BB
U1MgaW5wdXQudmFsdWUgaXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwMCBtcworUEFTUyBpbnB1dC52
YWx1ZSBpcyAiMTIzNDU2NiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkzMGQ0MThjMGQzOWEyZDc0MTM4MzM1MmZhY2VhZDM5NDExNzUwNDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3It
cmVhZG9ubHkuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJyZWFkb25seU51bWJlciIgdHlwZT0i
bnVtYmVyIiBvbm1vdXNldXA9Im1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSIgLz4KKzxp
bnB1dCBpZD0iZGlzYWJsZWROdW1iZXIiIHR5cGU9Im51bWJlciIgb25tb3VzZXVwPSJtb3VzZXVw
RXZlbnRPbkRpc2FibGVkTnVtYmVyKCkiIC8+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzxwPgorVGhp
cyB0ZXN0cyBpZiB0aGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBkb2VzIG5vdCBjb250
aW51ZQordG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby48YnIv
PgorKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5wdXQgZm9ybS48YnIvPgorKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS48YnIv
PgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRlciBzb21lIGRlbGF5Ljxici8+CitUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBpbnB1dCBhbnkgdmFsdWUgaW4gdGhlIGlucHV0IGZvcm0K
K2FuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLgorQXQgdGhpcyBwb2ludCwgY2xp
Y2sgdGhlIHNwaW4tZG93biBidXR0b24gcXVpY2tseSBhbmQKK2RvIG5vdCBtb3ZlIHRoZSBjdXJz
b3IgZnJvbSB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBhZnRlciB0aGUgY2xpY2suCitJZiB0aGUgdmFs
dWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4KKzwvcD4KKzwvZGl2Pgor
PHNjcmlwdD4KK3ZhciB0ZXN0SW5wdXRzOwordmFyIHRlc3REZWxheXM7Cit2YXIgaW5wdXQ7Cit2
YXIgZGVsYXk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdGVzdElucHV0
cyA9IFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVhZG9ubHlOdW1iZXIiKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpc2FibGVkTnVtYmVyIildOworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIG5leHRJbnB1dFRlc3QoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rp
b24gbmV4dElucHV0VGVzdCgpIHsKKyAgICBpZiAodGVzdElucHV0cy5sZW5ndGggPT0gMCkgewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnB1dCA9IHRl
c3RJbnB1dHMuc2hpZnQoKTsKKyAgICAgICAgdGVzdERlbGF5cyA9IFsxLCAxMCwgMTAwXTsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiVGVzdCBvbiBhICIgKyAoaW5wdXQuaWQg
PT0gInJlYWRvbmx5TnVtYmVyIiA/ICJyZWFkb25seSIgOiAiZGlzYWJsZWQiKSArICIgbnVtYmVy
IGlucHV0IGZvcm06Iik7CisgICAgICAgIG5leHREZWxheVRlc3QoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIG5leHREZWxheVRlc3QoKSB7CisgICAgaWYgKHRlc3REZWxheXMubGVuZ3RoID09IDAp
IHsKKyAgICAgICAgbmV4dElucHV0VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGF5
ID0gdGVzdERlbGF5cy5zaGlmdCgpOworICAgICAgICBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVz
KGlucHV0LCAxMjM0NTY3KTsKKyAgICAgICAgZGVidWcoImRlbGF5ID0gIiArIGRlbGF5ICsgIiBt
cyIpOworICAgICAgICBjbGlja1NwaW5Eb3duQnV0dG9uKGlucHV0KTsKKyAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW5w
dXQudmFsdWUnLCAiMTIzNDU2NiIpOworICAgICAgICAgICAgbmV4dERlbGF5VGVzdCgpOworICAg
ICAgICB9LCA1MDApOworICAgIH0KK30KKworZnVuY3Rpb24gbW91c2V1cEV2ZW50T25SZWFkb25s
eU51bWJlcigpIHsKKyAgICBpbnB1dC5yZWFkT25seSA9IHRydWU7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgaW5wdXQucmVhZE9ubHkgPSBmYWxzZTsKKyAgICB9LCBkZWxh
eSk7Cit9CisKK2Z1bmN0aW9uIG1vdXNldXBFdmVudE9uRGlzYWJsZWROdW1iZXIoKSB7CisgICAg
aW5wdXQuZGlzYWJsZWQgPSB0cnVlOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlucHV0LmRpc2FibGVkID0gZmFsc2U7CisgICAgfSwgZGVsYXkpOworfQorCitmdW5jdGlv
biBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVzKGlucHV0LCB2YWx1ZSkgeworICAgIGlucHV0LnZh
bHVlID0gdmFsdWU7CisgICAgaW5wdXQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICBpbnB1dC5yZWFk
T25seSA9IGZhbHNlOworfQorCitmdW5jdGlvbiBjbGlja1NwaW5Eb3duQnV0dG9uKGlucHV0KSB7
CisgICAgdmFyIHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGggLSA2Owor
ICAgIHZhciB5ID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC0gNjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTU4ZDgyMGZlNzQ3MTMwMGQzNTRiYzM0MTBjYjZjZWE3YTBjNjEzZi4uNmIwNjhjODZlYzAxYThh
MTM1MmRlMTM0ZmFhNzg2MmJiMmFkMWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisy
MDExLTA3LTE5ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+CisKKyAgICAgICAg
VGhlIHZhbHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gY29udGludWVzIHRvIGluY3JlYXNlL2Rl
Y3JlYXNlIGV2ZW4gaWYgd2UgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0Nzg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBudW1iZXIg
aW5wdXQgZm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2lu
ZyBzY2VuYXJpbzoKKyAgICAgICAgKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5w
dXQgZm9ybS4KKyAgICAgICAgKDIpIEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJs
ZSB0aGUgaW5wdXQgZm9ybS4KKyAgICAgICAgKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5IChlLmcuIDUwbXMpLgorCisgICAgICAgIFdoYXQgaXMgaGFwcGVuaW5nIGFi
b3ZlIGlzIGFzIGZvbGxvd3M6CisgICAgICAgICgxKSBXaGVuIHRoZSAnbW91c2Vkb3duJyBldmVu
dCBoYXBwZW5zLCB0aGUgcmVwZWF0aW5nIHRpbWVyIG9mIHRoZSBzcGluIGJ1dHRvbiBzdGFydHMu
CisgICAgICAgICgyKSBJZiB0aGUgaW5wdXQgZm9ybSBpcyBub3QgZGlzYWJsZWQsIHRoZSByZXBl
YXRpbmcgdGltZXIgc3RvcHMgYXQgdGhlICdtb3VzZXVwJyBldmVudC4KKyAgICAgICAgSG93ZXZl
ciwgaWYgdGhlIGlucHV0IGZvcm0gaXMgZGlzYWJsZWQsIHRoZSAnbW91c2V1cCcgZXZlbnQgaXMg
aWdub3JlZCwgZmFpbGluZyB0byBzdG9wCisgICAgICAgIHRoZSByZXBlYXRpbmcgdGltZXIuCisg
ICAgICAgICgzKSBUaGUgdmFsdWUgY29udGludWVzIHRvIGluY3JlYXNlL2RlY3JlYXNlLCBzaW5j
ZSB0aGUgcmVwZWF0aW5nIHRpbWVyIGlzIHN0aWxsIHdvcmtpbmcuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBzdG9wcyB0aGUgcmVwZWF0aW5nIHRpbWVyIHdoZW4gdGhlIGlucHV0IGZvcm0gZ2V0cyBk
aXNhYmxlZCBvciByZWFkb25seS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKTogQ2FsbHMgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgd2hl
biAnZGlzYWJsZWQnIGF0dHJpYnV0ZSBnZXRzIGNoYW5nZWQuIENhbGxzIHJlYWRvbmx5QXR0cmli
dXRlQ2hhbmdlZCgpIHdoZW4gJ3JlYWRvbmx5JyBhdHRyaWJ1dGUgZ2V0cyBjaGFuZ2VkLgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0aW1lciBhbmQg
cmVsZWFzZXMgbW91c2UgY2FwdHVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpy
ZWFkb25seUF0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZS5oOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnJlYWRvbmx5QXR0cmli
dXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZXRhY2gpOiBSZXBsYXNlZCB0aGUg
Y29kZSB3aXRoIHJlbGVhc2VDYXB0dXJlKCkuCisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0
aW1lciBhbmQgcmVsZWFzZXMgbW91c2UgY2FwdHVyaW5nLgorICAgICAgICAqIGh0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorCiAyMDExLTA3LTE4ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjQ3NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IGI2MWEwYzU5NTA4NzA0YzkwYTkxMjczNmQ1MTljNzIwZTMxMzI4OTkuLjYwNjQwYjVh
OTVkNTIzNTZlZDdhZmMyMDE3YWY1NWRiMTgzMTVhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNzg5LDYgKzc4OSwxMyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgc2V0
TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGF0
dGVybkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHByZWNpc2lvbkF0dHIgfHwgYXR0ci0+bmFtZSgp
ID09IHN0ZXBBdHRyKQogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKKyAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CisgICAgICAgIG1faW5wdXRUeXBl
LT5kaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOworICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHJlYWRvbmx5QXR0cikgeworICAgICAgICBtX2lucHV0VHlwZS0+cmVhZG9u
bHlBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKKyAgICB9CiAjaWYgRU5BQkxFKERBVEFMSVNU
KQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsaXN0QXR0cikKICAgICAgICAgbV9oYXNO
b25FbXB0eUxpc3QgPSAhYXR0ci0+aXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CmluZGV4IGQ1MGNlNjZhY2U1ZWY1MDM4YzViOTc5YzY0NjMxNGRlMGI2MThhOTcuLjYwOTI0NjBh
MDA3OGZlMjUzMGRlNjQxN2M4N2ExNDAwZjk0ZWZlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAKQEAgLTY3Myw2ICs2NzMsMTQgQEAgdm9pZCBJbnB1dFR5cGU6Om11bHRpcGxlQXR0cmli
dXRlQ2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNo
YW5nZWQoKQoreworfQorCit2b2lkIElucHV0VHlwZTo6cmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2Vk
KCkKK3sKK30KKwogbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogLy8gVGhlIHR5cGUgbmFt
ZXMgbXVzdCBiZSBsb3dlcmNhc2VkIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRoZSByZXR1cm4gdmFs
dWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA5Mzc3OTYxYThkMDRmNTJhZDdjMThj
MmJiNzkwNjgwZmI2MmM4Zjg5Li4yZGYwZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0
NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTIyOSw2ICsyMjksOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIG11bHRp
cGxlQXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJpYnV0
ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCk7
CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlLCBhbmQg
cmV0dXJuCiAgICAgLy8gdGhlIGRvdWJsZSB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcgcmVzdWx0IGlm
IHRoZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAK
aW5kZXggMDdhYjJlMThlOWE2Y2M3MGU1OTRlMzU4MmI1ZjFiOGQzMTUzNDBiYi4uZjc5ZDZiMTI0
NTExOWE1Zjc1Y2I5MDEwYzQ5NDBiOGFiYjRkMWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMjM4LDYgKzIzOCwxOCBAQCB2b2lkIFRleHRGaWVs
ZElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQogICAgIG1fY29udGFpbmVyLmNsZWFy
KCk7CiB9CiAKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5n
ZWQoKQoreworICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKKyAgICAgICAgc3RhdGljX2Nhc3Q8
U3BpbkJ1dHRvbkVsZW1lbnQqPihpbm5lclNwaW5CdXR0b25FbGVtZW50KCkpLT5yZWxlYXNlQ2Fw
dHVyZSgpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6cmVhZG9ubHlBdHRyaWJ1dGVD
aGFuZ2VkKCkKK3sKKyAgICBpZiAobV9pbm5lclNwaW5CdXR0b24pCisgICAgICAgIHN0YXRpY19j
YXN0PFNwaW5CdXR0b25FbGVtZW50Kj4oaW5uZXJTcGluQnV0dG9uRWxlbWVudCgpKS0+cmVsZWFz
ZUNhcHR1cmUoKTsKK30KKwogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFVzZUlucHV0
TWV0aG9kKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5oCmluZGV4IGY2ZTlkMzA1MTAwYmQ3YWU3MzYxODQ3OWE5NTE4ZDI4
NTM2Y2VhNzcuLjI2ZDgwZDZmMzNkMTI4MzhkZTVjY2MwZGQxNDViNjQwZWM2ZGNkOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNTgsNiArNTgsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveVNoYWRvd1N1YnRyZWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZWRBdHRyaWJ1dGVD
aGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgpOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKaW5kZXggZDkxYzBlZDJhZTU2ZTI4ZDMzZWZkNGI2NjY3NzYwZGI5MmRiMTRkZS4uMmY2
YWI0MzdhYmUyNGU2YzBkZjIyOGRjMDhlNTEzMzViMjVhNTY1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBA
IC0yNTIsMTMgKzI1Miw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU3BpbkJ1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIAogdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGV0YWNo
KCkKIHsKLSAgICBzdG9wUmVwZWF0aW5nVGltZXIoKTsKLSAgICBpZiAobV9jYXB0dXJpbmcpIHsK
LSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKLSAgICAg
ICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2Rl
KDApOwotICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
KyAgICByZWxlYXNlQ2FwdHVyZSgpOwogICAgIEhUTUxEaXZFbGVtZW50OjpkZXRhY2goKTsKIH0K
IApAQCAtMzE1LDIxICszMDksMjUgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBtX3VwRG93blN0YXRlID0gbG9j
YWwueSgpIDwgYm94LT5oZWlnaHQoKSAvIDIgPyBVcCA6IERvd247CiAgICAgICAgICAgICBpZiAo
bV91cERvd25TdGF0ZSAhPSBvbGRVcERvd25TdGF0ZSkKICAgICAgICAgICAgICAgICByZW5kZXJl
cigpLT5yZXBhaW50KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobV9jYXB0
dXJpbmcpIHsKLSAgICAgICAgICAgICAgICBzdG9wUmVwZWF0aW5nVGltZXIoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSgwKTsKLSAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICByZWxlYXNlQ2FwdHVyZSgpOwogICAgIH0KIAogICAgIGlmICghZXZlbnQt
PmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgIEhUTUxEaXZFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKIH0KIAordm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVsZWFzZUNhcHR1
cmUoKQoreworICAgIHN0b3BSZXBlYXRpbmdUaW1lcigpOworICAgIGlmIChtX2NhcHR1cmluZykg
eworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAg
ICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05v
ZGUoMCk7CisgICAgICAgICAgICBtX2NhcHR1cmluZyA9IGZhbHNlOworICAgICAgICB9CisgICAg
fQorfQorCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpzdGFydFJlcGVhdGluZ1RpbWVyKCkKIHsK
ICAgICBtX3ByZXNzU3RhcnRpbmdTdGF0ZSA9IG1fdXBEb3duU3RhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4
IDZkNGEyYmYzZWQyMDhjYWY5MzIzYTA1YjI3YjJlZWQ3OGIyMDIyOTYuLjMxOTM2YzExMjczZjRi
NjhkNjUwMWYxMDQzYTBmNzg5ZmFiZTA1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCkBAIC05OCw2ICs5OCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQqKTsKICAgICBVcERvd25TdGF0ZSB1cERvd25TdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdXBEb3duU3RhdGU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUNhcHR1cmUoKTsK
IAogcHJpdmF0ZToKICAgICBTcGluQnV0dG9uRWxlbWVudChEb2N1bWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101442</attachid>
            <date>2011-07-20 02:19:39 -0700</date>
            <delta_ts>2011-07-20 03:23:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64786-20110720181938.patch</filename>
            <type>text/plain</type>
            <size>15247</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyYTkzNjE4NzU2N2VhMjdmZjhmMjRi
NWM3NjZjMjY4OTJiYjY4NmYxLi5lZGM0YmFlMzE2NGQ5YjI2NDg2YjQ5Yjk2ZmVkODE5OWJhMGVi
ODkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDctMTkgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBUaGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQg
Zm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgZXZlbiBpZiB3ZSBkaXNhYmxlIHRo
ZSBpbnB1dCBmb3JtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjQ3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbnB1dCBmb3JtIGNvbnRpbnVlcyB0byBpbmNy
ZWFzZS9kZWNyZWFzZSBpbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvOgorICAgICAgICAoMSkgQ2xp
Y2sgdGhlIHNwaW4gYnV0dG9uIG9mIHRoZSBudW1iZXIgaW5wdXQgZm9ybS4KKyAgICAgICAgKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgbnVtYmVyIGlucHV0IGZv
cm0uCisgICAgICAgICgzKSBFbmFibGUgdGhlIG51bWJlciBpbnB1dCBmb3JtIGFmdGVyIHNvbWUg
ZGVsYXkgKGUuZy4gNTBtcykuCisKKyAgICAgICAgV2hhdCBpcyBoYXBwZW5pbmcgYWJvdmUgaXMg
YXMgZm9sbG93czoKKyAgICAgICAgKDEpIFdoZW4gdGhlICdtb3VzZWRvd24nIGV2ZW50IGhhcHBl
bnMsIHRoZSByZXBlYXRpbmcgdGltZXIgb2YgdGhlIHNwaW4gYnV0dG9uIHN0YXJ0cy4KKyAgICAg
ICAgKDIpIElmIHRoZSBpbnB1dCBmb3JtIGlzIG5vdCBkaXNhYmxlZCwgdGhlIHJlcGVhdGluZyB0
aW1lciBzdG9wcyBhdCB0aGUgJ21vdXNldXAnIGV2ZW50LgorICAgICAgICBIb3dldmVyLCBpZiB0
aGUgaW5wdXQgZm9ybSBpcyBkaXNhYmxlZCwgdGhlICdtb3VzZXVwJyBldmVudCBpcyBpZ25vcmVk
LCBmYWlsaW5nIHRvIHN0b3AKKyAgICAgICAgdGhlIHJlcGVhdGluZyB0aW1lci4KKyAgICAgICAg
KDMpIFRoZSB2YWx1ZSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UsIHNpbmNlIHRoZSBy
ZXBlYXRpbmcgdGltZXIgaXMgc3RpbGwgd29ya2luZy4KKworICAgICAgICBUaGUgYWRkZWQgdGVz
dCBjaGVja3MgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGNvbnRpbnVlIHRvIGluY3JlYXNlL2RlY3Jl
YXNlIHdoZW4gd2UgZG8gdGhlIGFib3ZlIG9wZXJhdGlvbi4KKworICAgICAgICAqIGZhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0xOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBmYWlsaW5nIHRlc3QgZXhwZWN0YXRpb24gZm9y
IG9iamVjdC1wcm90b3R5cGUtcHJvcGVydGllcy5odG1sIGFmdGVyIHI5MTIyNS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1y
ZWFkb25seS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9u
LWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNWFk
MzhlZTc3ZGU0M2ZmNzZhZTA5NTIxNWRhMzNlZWQ2ZjAwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9u
bHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyAKK1RoaXMgdGVzdHMgaWYgdGhlIHZh
bHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gZG9lcyBub3QgY29udGludWUgdG8gaW5jcmVhc2Uv
ZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby4KKygxKSBDbGljayB0aGUgc3BpbiBi
dXR0b24gb2YgdGhlIGlucHV0IGZvcm0uCisoMikgSG9vayB0aGUgJ21vdXNldXAnIGV2ZW50IGFu
ZCBkaXNhYmxlIHRoZSBpbnB1dCBmb3JtLgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5LgorVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgaW5wdXQgYW55IHZhbHVl
IGluIHRoZSBpbnB1dCBmb3JtIGFuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLiBB
dCB0aGlzIHBvaW50LCBjbGljayB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBxdWlja2x5IGFuZCBkbyBu
b3QgbW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIHNwaW4tZG93biBidXR0b24gYWZ0ZXIgdGhlIGNs
aWNrLiBJZiB0aGUgdmFsdWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4K
KworCitUZXN0IG9uIGEgcmVhZG9ubHkgbnVtYmVyIGlucHV0IGZvcm06CitkZWxheSA9IDEgbXMK
K1BBU1MgaW5wdXQudmFsdWUgaXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwIG1zCitQQVNTIGlucHV0
LnZhbHVlIGlzICIxMjM0NTY2IgorZGVsYXkgPSAxMDAgbXMKK1BBU1MgaW5wdXQudmFsdWUgaXMg
IjEyMzQ1NjYiCisKK1Rlc3Qgb24gYSBkaXNhYmxlZCBudW1iZXIgaW5wdXQgZm9ybToKK2RlbGF5
ID0gMSBtcworUEFTUyBpbnB1dC52YWx1ZSBpcyAiMTIzNDU2NiIKK2RlbGF5ID0gMTAgbXMKK1BB
U1MgaW5wdXQudmFsdWUgaXMgIjEyMzQ1NjYiCitkZWxheSA9IDEwMCBtcworUEFTUyBpbnB1dC52
YWx1ZSBpcyAiMTIzNDU2NiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc3Bpbi1idXR0b24tZ2V0cy1kaXNhYmxlZC1vci1yZWFkb25seS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjkzMGQ0MThjMGQzOWEyZDc0MTM4MzM1MmZhY2VhZDM5NDExNzUwNDkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NwaW4tYnV0dG9uLWdldHMtZGlzYWJsZWQtb3It
cmVhZG9ubHkuaHRtbApAQCAtMCwwICsxLDk2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJyZWFkb25seU51bWJlciIgdHlwZT0i
bnVtYmVyIiBvbm1vdXNldXA9Im1vdXNldXBFdmVudE9uUmVhZG9ubHlOdW1iZXIoKSIgLz4KKzxp
bnB1dCBpZD0iZGlzYWJsZWROdW1iZXIiIHR5cGU9Im51bWJlciIgb25tb3VzZXVwPSJtb3VzZXVw
RXZlbnRPbkRpc2FibGVkTnVtYmVyKCkiIC8+Cis8ZGl2IGlkPSJjb25zb2xlIj4KKzxwPgorVGhp
cyB0ZXN0cyBpZiB0aGUgdmFsdWUgb2YgYSBudW1iZXIgaW5wdXQgZm9ybSBkb2VzIG5vdCBjb250
aW51ZQordG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2luZyBzY2VuYXJpby48YnIv
PgorKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5wdXQgZm9ybS48YnIvPgorKDIp
IEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS48YnIv
PgorKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRlciBzb21lIGRlbGF5Ljxici8+CitUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBpbnB1dCBhbnkgdmFsdWUgaW4gdGhlIGlucHV0IGZvcm0K
K2FuZCB0aGVuIGNsaWNrIHRoZSBzcGluLWRvd24gYnV0dG9uLgorQXQgdGhpcyBwb2ludCwgY2xp
Y2sgdGhlIHNwaW4tZG93biBidXR0b24gcXVpY2tseSBhbmQKK2RvIG5vdCBtb3ZlIHRoZSBjdXJz
b3IgZnJvbSB0aGUgc3Bpbi1kb3duIGJ1dHRvbiBhZnRlciB0aGUgY2xpY2suCitJZiB0aGUgdmFs
dWUgZGVjcmVhc2VzIGJ5IGp1c3QgMSwgdGhpcyB0ZXN0IHBhc3Nlcy4KKzwvcD4KKzwvZGl2Pgor
PHNjcmlwdD4KK3ZhciB0ZXN0SW5wdXRzOwordmFyIHRlc3REZWxheXM7Cit2YXIgaW5wdXQ7Cit2
YXIgZGVsYXk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdGVzdElucHV0
cyA9IFtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVhZG9ubHlOdW1iZXIiKSwgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImRpc2FibGVkTnVtYmVyIildOworICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgICAgIG5leHRJbnB1dFRlc3QoKTsKKyAgICB9LCAwKTsKK30KKworZnVuY3Rp
b24gbmV4dElucHV0VGVzdCgpIHsKKyAgICBpZiAodGVzdElucHV0cy5sZW5ndGggPT0gMCkgewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnB1dCA9IHRl
c3RJbnB1dHMuc2hpZnQoKTsKKyAgICAgICAgdGVzdERlbGF5cyA9IFsxLCAxMCwgMTAwXTsKKyAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICBkZWJ1ZygiVGVzdCBvbiBhICIgKyAoaW5wdXQuaWQg
PT0gInJlYWRvbmx5TnVtYmVyIiA/ICJyZWFkb25seSIgOiAiZGlzYWJsZWQiKSArICIgbnVtYmVy
IGlucHV0IGZvcm06Iik7CisgICAgICAgIG5leHREZWxheVRlc3QoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIG5leHREZWxheVRlc3QoKSB7CisgICAgaWYgKHRlc3REZWxheXMubGVuZ3RoID09IDAp
IHsKKyAgICAgICAgbmV4dElucHV0VGVzdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlbGF5
ID0gdGVzdERlbGF5cy5zaGlmdCgpOworICAgICAgICBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVz
KGlucHV0LCAxMjM0NTY3KTsKKyAgICAgICAgZGVidWcoImRlbGF5ID0gIiArIGRlbGF5ICsgIiBt
cyIpOworICAgICAgICBjbGlja1NwaW5Eb3duQnV0dG9uKGlucHV0KTsKKyAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnaW5w
dXQudmFsdWUnLCAiMTIzNDU2NiIpOworICAgICAgICAgICAgbmV4dERlbGF5VGVzdCgpOworICAg
ICAgICB9LCA1MDApOworICAgIH0KK30KKworZnVuY3Rpb24gbW91c2V1cEV2ZW50T25SZWFkb25s
eU51bWJlcigpIHsKKyAgICBpbnB1dC5yZWFkT25seSA9IHRydWU7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgaW5wdXQucmVhZE9ubHkgPSBmYWxzZTsKKyAgICB9LCBkZWxh
eSk7Cit9CisKK2Z1bmN0aW9uIG1vdXNldXBFdmVudE9uRGlzYWJsZWROdW1iZXIoKSB7CisgICAg
aW5wdXQuZGlzYWJsZWQgPSB0cnVlOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlucHV0LmRpc2FibGVkID0gZmFsc2U7CisgICAgfSwgZGVsYXkpOworfQorCitmdW5jdGlv
biBpbml0aWFsaXplSW5wdXRBdHRyaWJ1dGVzKGlucHV0LCB2YWx1ZSkgeworICAgIGlucHV0LnZh
bHVlID0gdmFsdWU7CisgICAgaW5wdXQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICBpbnB1dC5yZWFk
T25seSA9IGZhbHNlOworfQorCitmdW5jdGlvbiBjbGlja1NwaW5Eb3duQnV0dG9uKGlucHV0KSB7
CisgICAgdmFyIHggPSBpbnB1dC5vZmZzZXRMZWZ0ICsgaW5wdXQub2Zmc2V0V2lkdGggLSA2Owor
ICAgIHZhciB5ID0gaW5wdXQub2Zmc2V0VG9wICsgaW5wdXQub2Zmc2V0SGVpZ2h0IC0gNjsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTU4ZDgyMGZlNzQ3MTMwMGQzNTRiYzM0MTBjYjZjZWE3YTBjNjEzZi4uNmIwNjhjODZlYzAxYThh
MTM1MmRlMTM0ZmFhNzg2MmJiMmFkMWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisy
MDExLTA3LTE5ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+CisKKyAgICAgICAg
VGhlIHZhbHVlIG9mIGEgbnVtYmVyIGlucHV0IGZvcm0gY29udGludWVzIHRvIGluY3JlYXNlL2Rl
Y3JlYXNlIGV2ZW4gaWYgd2UgZGlzYWJsZSB0aGUgaW5wdXQgZm9ybS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0Nzg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSBudW1iZXIg
aW5wdXQgZm9ybSBjb250aW51ZXMgdG8gaW5jcmVhc2UvZGVjcmVhc2UgaW4gdGhlIGZvbGxvd2lu
ZyBzY2VuYXJpbzoKKyAgICAgICAgKDEpIENsaWNrIHRoZSBzcGluIGJ1dHRvbiBvZiB0aGUgaW5w
dXQgZm9ybS4KKyAgICAgICAgKDIpIEhvb2sgdGhlICdtb3VzZXVwJyBldmVudCBhbmQgZGlzYWJs
ZSB0aGUgaW5wdXQgZm9ybS4KKyAgICAgICAgKDMpIEVuYWJsZSB0aGUgaW5wdXQgZm9ybSBhZnRl
ciBzb21lIGRlbGF5IChlLmcuIDUwbXMpLgorCisgICAgICAgIFdoYXQgaXMgaGFwcGVuaW5nIGFi
b3ZlIGlzIGFzIGZvbGxvd3M6CisgICAgICAgICgxKSBXaGVuIHRoZSAnbW91c2Vkb3duJyBldmVu
dCBoYXBwZW5zLCB0aGUgcmVwZWF0aW5nIHRpbWVyIG9mIHRoZSBzcGluIGJ1dHRvbiBzdGFydHMu
CisgICAgICAgICgyKSBJZiB0aGUgaW5wdXQgZm9ybSBpcyBub3QgZGlzYWJsZWQsIHRoZSByZXBl
YXRpbmcgdGltZXIgc3RvcHMgYXQgdGhlICdtb3VzZXVwJyBldmVudC4KKyAgICAgICAgSG93ZXZl
ciwgaWYgdGhlIGlucHV0IGZvcm0gaXMgZGlzYWJsZWQsIHRoZSAnbW91c2V1cCcgZXZlbnQgaXMg
aWdub3JlZCwgZmFpbGluZyB0byBzdG9wCisgICAgICAgIHRoZSByZXBlYXRpbmcgdGltZXIuCisg
ICAgICAgICgzKSBUaGUgdmFsdWUgY29udGludWVzIHRvIGluY3JlYXNlL2RlY3JlYXNlLCBzaW5j
ZSB0aGUgcmVwZWF0aW5nIHRpbWVyIGlzIHN0aWxsIHdvcmtpbmcuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBzdG9wcyB0aGUgcmVwZWF0aW5nIHRpbWVyIHdoZW4gdGhlIGlucHV0IGZvcm0gZ2V0cyBk
aXNhYmxlZCBvciByZWFkb25seS4KKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL3NwaW4tYnV0
dG9uLWdldHMtZGlzYWJsZWQtb3ItcmVhZG9ubHkuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKTogQ2FsbHMgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgd2hl
biAnZGlzYWJsZWQnIGF0dHJpYnV0ZSBnZXRzIGNoYW5nZWQuIENhbGxzIHJlYWRvbmx5QXR0cmli
dXRlQ2hhbmdlZCgpIHdoZW4gJ3JlYWRvbmx5JyBhdHRyaWJ1dGUgZ2V0cyBjaGFuZ2VkLgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0aW1lciBhbmQg
cmVsZWFzZXMgbW91c2UgY2FwdHVyaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpy
ZWFkb25seUF0dHJpYnV0ZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0lucHV0VHlw
ZS5oOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnJlYWRvbmx5QXR0cmli
dXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZXRhY2gpOiBSZXBsYXNlZCB0aGUg
Y29kZSB3aXRoIHJlbGVhc2VDYXB0dXJlKCkuCisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKTogU3RvcHMgdGhlIHJlcGVhdGluZyB0
aW1lciBhbmQgcmVsZWFzZXMgbW91c2UgY2FwdHVyaW5nLgorICAgICAgICAqIGh0bWwvc2hhZG93
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorCiAyMDExLTA3LTE4ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjQ3NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IGI2MWEwYzU5NTA4NzA0YzkwYTkxMjczNmQ1MTljNzIwZTMxMzI4OTkuLjYwNjQwYjVh
OTVkNTIzNTZlZDdhZmMyMDE3YWY1NWRiMTgzMTVhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNzg5LDYgKzc4OSwxMyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgc2V0
TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGF0
dGVybkF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHByZWNpc2lvbkF0dHIgfHwgYXR0ci0+bmFtZSgp
ID09IHN0ZXBBdHRyKQogICAgICAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKKyAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CisgICAgICAgIG1faW5wdXRUeXBl
LT5kaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKKyAgICAgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOworICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IHJlYWRvbmx5QXR0cikgeworICAgICAgICBtX2lucHV0VHlwZS0+cmVhZG9u
bHlBdHRyaWJ1dGVDaGFuZ2VkKCk7CisgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKKyAgICB9CiAjaWYgRU5BQkxFKERBVEFMSVNU
KQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBsaXN0QXR0cikKICAgICAgICAgbV9oYXNO
b25FbXB0eUxpc3QgPSAhYXR0ci0+aXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CmluZGV4IGQ1MGNlNjZhY2U1ZWY1MDM4YzViOTc5YzY0NjMxNGRlMGI2MThhOTcuLjYwOTI0NjBh
MDA3OGZlMjUzMGRlNjQxN2M4N2ExNDAwZjk0ZWZlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAKQEAgLTY3Myw2ICs2NzMsMTQgQEAgdm9pZCBJbnB1dFR5cGU6Om11bHRpcGxlQXR0cmli
dXRlQ2hhbmdlZCgpCiB7CiB9CiAKK3ZvaWQgSW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNo
YW5nZWQoKQoreworfQorCit2b2lkIElucHV0VHlwZTo6cmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2Vk
KCkKK3sKK30KKwogbmFtZXNwYWNlIElucHV0VHlwZU5hbWVzIHsKIAogLy8gVGhlIHR5cGUgbmFt
ZXMgbXVzdCBiZSBsb3dlcmNhc2VkIGJlY2F1c2UgdGhleSB3aWxsIGJlIHRoZSByZXR1cm4gdmFs
dWVzIG9mCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCA5Mzc3OTYxYThkMDRmNTJhZDdjMThj
MmJiNzkwNjgwZmI2MmM4Zjg5Li4yZGYwZWY1YjhmOTU4OGQzMmFlNzJmYjYzMmMyMjRiN2JjYmY0
NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTIyOSw2ICsyMjksOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CiAgICAgdmlydHVhbCB2b2lkIG11bHRp
cGxlQXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJpYnV0
ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCk7
CiAKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlLCBhbmQg
cmV0dXJuCiAgICAgLy8gdGhlIGRvdWJsZSB2YWx1ZSBmb3IgdGhlIHBhcnNpbmcgcmVzdWx0IGlm
IHRoZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAK
aW5kZXggMDdhYjJlMThlOWE2Y2M3MGU1OTRlMzU4MmI1ZjFiOGQzMTUzNDBiYi4uYjlhMWMzODU3
MzUyYjY1ZjFlMGI3Yjk3NTczOTcyY2QyNTE4YzliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtMjM4LDYgKzIzOCwxOCBAQCB2b2lkIFRleHRGaWVs
ZElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQogICAgIG1fY29udGFpbmVyLmNsZWFy
KCk7CiB9CiAKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5n
ZWQoKQoreworICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKKyAgICAgICAgbV9pbm5lclNwaW5C
dXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpy
ZWFkb25seUF0dHJpYnV0ZUNoYW5nZWQoKQoreworICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikK
KyAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbGVhc2VDYXB0dXJlKCk7Cit9CisKIGJvb2wg
VGV4dEZpZWxkSW5wdXRUeXBlOjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRl
eCBmNmU5ZDMwNTEwMGJkN2FlNzM2MTg0NzlhOTUxOGQyODUzNmNlYTc3Li5hMjU1M2RmYTc0ZWJl
ZWRjYjZhYTIxOGYyMDRkMDQxOTBhZWU1NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmgKQEAgLTM1LDYgKzM1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBTcGluQnV0dG9uRWxlbWVudDsKKwogLy8gVGhlIGNsYXNzIHJlcHJlc2VudHMgdHlw
ZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxkcy4KIC8vIEl0IHN1cHBvcnRzIG5vdCBv
bmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5cGUgYnV0IGFsc28gdHlwZT1udW1iZXIu
CiBjbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKQEAgLTU4LDYg
KzYwLDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0NvbnRhaW5lcigpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCk7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVk
QXR0cmlidXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCByZWFkb25seUF0dHJpYnV0ZUNo
YW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0RmllbGQoKSBjb25z
dDsKQEAgLTc2LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1f
aW5uZXJCbG9jazsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1faW5uZXJUZXh0OwogICAgIFJl
ZlB0cjxIVE1MRWxlbWVudD4gbV9wbGFjZWhvbGRlcjsKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IG1faW5uZXJTcGluQnV0dG9uOworICAgIFJlZlB0cjxTcGluQnV0dG9uRWxlbWVudD4gbV9pbm5l
clNwaW5CdXR0b247CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBSZWZQdHI8SFRNTEVs
ZW1lbnQ+IG1fc3BlZWNoQnV0dG9uOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCBkOTFjMGVk
MmFlNTZlMjhkMzNlZmQ0YjY2Njc3NjBkYjkyZGIxNGRlLi4yZjZhYjQzN2FiZTI0ZTZjMGRmMjI4
ZGMwOGU1MTMzNWIyNWE1NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTI1MiwxMyArMjUyLDcgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBTcGluQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZXRhY2goKQogewotICAgIHN0b3BSZXBl
YXRpbmdUaW1lcigpOwotICAgIGlmIChtX2NhcHR1cmluZykgewotICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7Ci0gICAgICAgICAgICBt
X2NhcHR1cmluZyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQorICAgIHJlbGVhc2VDYXB0dXJl
KCk7CiAgICAgSFRNTERpdkVsZW1lbnQ6OmRldGFjaCgpOwogfQogCkBAIC0zMTUsMjEgKzMwOSwy
NSBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKICAgICAgICAgICAgIG1fdXBEb3duU3RhdGUgPSBsb2NhbC55KCkgPCBib3gtPmhlaWdo
dCgpIC8gMiA/IFVwIDogRG93bjsKICAgICAgICAgICAgIGlmIChtX3VwRG93blN0YXRlICE9IG9s
ZFVwRG93blN0YXRlKQogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnQoKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtX2NhcHR1cmluZykgewotICAgICAgICAg
ICAgICAgIHN0b3BSZXBlYXRpbmdUaW1lcigpOwotICAgICAgICAgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+c2V0Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwotICAgICAg
ICAgICAgICAgICAgICBtX2NhcHR1cmluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlbGVh
c2VDYXB0dXJlKCk7CiAgICAgfQogCiAgICAgaWYgKCFldmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkK
ICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQog
Cit2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2FwdHVyZSgpCit7CisgICAgc3RvcFJl
cGVhdGluZ1RpbWVyKCk7CisgICAgaWYgKG1fY2FwdHVyaW5nKSB7CisgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsKKyAgICAgICAgICAg
IG1fY2FwdHVyaW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgU3BpbkJ1
dHRvbkVsZW1lbnQ6OnN0YXJ0UmVwZWF0aW5nVGltZXIoKQogewogICAgIG1fcHJlc3NTdGFydGlu
Z1N0YXRlID0gbV91cERvd25TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggNmQ0YTJiZjNlZDIwOGNhZjkz
MjNhMDViMjdiMmVlZDc4YjIwMjI5Ni4uMzE5MzZjMTEyNzNmNGI2OGQ2NTAxZjEwNDNhMGY3ODlm
YWJlMDViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTk4LDYgKzk4LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogICAg
IFVwRG93blN0YXRlIHVwRG93blN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV91cERvd25TdGF0ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQ2FwdHVyZSgpOwogCiBwcml2YXRlOgogICAgIFNw
aW5CdXR0b25FbGVtZW50KERvY3VtZW50Kik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>