<?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>174111</bug_id>
          
          <creation_ts>2017-07-03 17:27:13 -0700</creation_ts>
          <short_desc>[WK2] ResourceLoadStatistics should batch its writes</short_desc>
          <delta_ts>2017-07-06 14:59:35 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174062</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174203</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325345</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-03 17:27:13 -0700</bug_when>
    <thetext>Currently the ResourceLoadStatistics code writes its data file whenever it changes state. This causes it to make frequent writes to disk, which uses CPU and energy.

Instead, we should batch writes so they only happen on a set interval.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325346</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-03 17:28:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/33115894&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325755</commentid>
    <comment_count>2</comment_count>
      <attachid>314652</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-05 14:02:16 -0700</bug_when>
    <thetext>Created attachment 314652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325791</commentid>
    <comment_count>3</comment_count>
      <attachid>314652</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-05 15:11:03 -0700</bug_when>
    <thetext>Comment on attachment 314652
Patch

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

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:62
&gt; +constexpr Seconds timeBetweenSyncs = Seconds::fromMinutes(5);

constexpr Seconds timeBetweenSyncs { 5_min };

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:174
&gt; +        if (WallTime::now() - m_lastStatisticsFileSyncTime &lt; timeBetweenSyncs)

m_lastStatisticsFileSyncTime may be a *read* time, right? If so, should we really use this for this purpose?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325792</commentid>
    <comment_count>4</comment_count>
      <attachid>314652</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-05 15:13:14 -0700</bug_when>
    <thetext>Comment on attachment 314652
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:174
&gt;&gt; +        if (WallTime::now() - m_lastStatisticsFileSyncTime &lt; timeBetweenSyncs)
&gt; 
&gt; m_lastStatisticsFileSyncTime may be a *read* time, right? If so, should we really use this for this purpose?

If not, I would suggest having a lastWriteTime and use MonotonicTime for this new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325829</commentid>
    <comment_count>5</comment_count>
      <attachid>314652</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-05 16:50:50 -0700</bug_when>
    <thetext>Comment on attachment 314652
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:62
&gt;&gt; +constexpr Seconds timeBetweenSyncs = Seconds::fromMinutes(5);
&gt; 
&gt; constexpr Seconds timeBetweenSyncs { 5_min };

Cool!

&gt;&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:174
&gt;&gt;&gt; +        if (WallTime::now() - m_lastStatisticsFileSyncTime &lt; timeBetweenSyncs)
&gt;&gt; 
&gt;&gt; m_lastStatisticsFileSyncTime may be a *read* time, right? If so, should we really use this for this purpose?
&gt; 
&gt; If not, I would suggest having a lastWriteTime and use MonotonicTime for this new one.

Yes -- I&apos;ll add an additional Monotonic timestamp and check that before writing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325830</commentid>
    <comment_count>6</comment_count>
      <attachid>314668</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-05 16:52:02 -0700</bug_when>
    <thetext>Created attachment 314668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325837</commentid>
    <comment_count>7</comment_count>
      <attachid>314668</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-05 17:02:48 -0700</bug_when>
    <thetext>Comment on attachment 314668
Patch

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

General question about the design, is this OK to ignore a write request when it is too early *without* scheduling a write? We&apos;re basically relying on the fact that something later we cause a write to occur again so that the current data gets dumped to disk.
In the network cache, we use a timer to schedule the write to avoid this problem.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:63
&gt; +constexpr Seconds timeBetweenSyncs { 5_min };

minimumStatisticsFileWriteInterval ?

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:175
&gt; +        if (MonotonicTime::now() - m_lastWriteTime &lt; timeBetweenSyncs)

Wouldn&apos;t it make more sense to have this check in writeStoreToDisk() or is there some reason we do not want to throttle the other call site of writeStoreToDisk() ?

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:152
&gt; +    WTF::MonotonicTime m_lastWriteTime;

For consistency with the other member, I would call this: m_lastStatisticsWriteTime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325838</commentid>
    <comment_count>8</comment_count>
      <attachid>314668</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-05 17:05:08 -0700</bug_when>
    <thetext>Comment on attachment 314668
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:63
&gt;&gt; +constexpr Seconds timeBetweenSyncs { 5_min };
&gt; 
&gt; minimumStatisticsFileWriteInterval ?

Sure.

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:175
&gt;&gt; +        if (MonotonicTime::now() - m_lastWriteTime &lt; timeBetweenSyncs)
&gt; 
&gt; Wouldn&apos;t it make more sense to have this check in writeStoreToDisk() or is there some reason we do not want to throttle the other call site of writeStoreToDisk() ?

Sure -- that&apos;s a good idea.

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:152
&gt;&gt; +    WTF::MonotonicTime m_lastWriteTime;
&gt; 
&gt; For consistency with the other member, I would call this: m_lastStatisticsWriteTime.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326053</commentid>
    <comment_count>9</comment_count>
      <attachid>314726</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 09:26:34 -0700</bug_when>
    <thetext>Created attachment 314726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326059</commentid>
    <comment_count>10</comment_count>
      <attachid>314726</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 09:35:49 -0700</bug_when>
    <thetext>Comment on attachment 314726
Patch

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

r=me with changes.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:40
&gt; +#include &lt;WebCore/Timer.h&gt;

This does not look needed. Also, we should never be using a WebCore Timer in the UIProcess.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:376
&gt; +            Seconds delayUntil = minimumStatisticsFileWriteInterval - timeSinceLastWrite + 1_s;

Why the  + 1_s ?

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:377
&gt; +            m_statisticsQueue-&gt;dispatchAfter(delayUntil, [this] {

I would capture protectedThis here.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:380
&gt; +            m_doesHaveDelayedWrite = true;

Can we move this before the dispatch just to nbc on the safe side?

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:398
&gt; +    m_doesHaveDelayedWrite = false;

What would you think of m_didScheduleWrite ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326081</commentid>
    <comment_count>11</comment_count>
      <attachid>314726</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-07-06 10:09:30 -0700</bug_when>
    <thetext>Comment on attachment 314726
Patch

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

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:64
&gt; +constexpr Seconds minimumStatisticsFileWriteInterval { 5_min };

Does this mean that if someone opens the browser, does some things, and closes it in less than 5 min, then it won&apos;t be written to disk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326087</commentid>
    <comment_count>12</comment_count>
      <attachid>314726</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 10:17:01 -0700</bug_when>
    <thetext>Comment on attachment 314726
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:64
&gt;&gt; +constexpr Seconds minimumStatisticsFileWriteInterval { 5_min };
&gt; 
&gt; Does this mean that if someone opens the browser, does some things, and closes it in less than 5 min, then it won&apos;t be written to disk?

This is a fair point. WebResourceLoadStatisticsStore::applicationWillTerminate() is supposed to take care of this. However, we cannot really afford to wait for up to 5 minutes in WebResourceLoadStatisticsStore::applicationWillTerminate(). We should probably add some logic in WebResourceLoadStatisticsStore::applicationWillTerminate() to dump to disk if m_doesHaveDelayedWrite is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326088</commentid>
    <comment_count>13</comment_count>
      <attachid>314726</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 10:19:11 -0700</bug_when>
    <thetext>Comment on attachment 314726
Patch

reversing r+ as I think we should address Alex&apos;s feedback in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326094</commentid>
    <comment_count>14</comment_count>
      <attachid>314726</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 10:25:15 -0700</bug_when>
    <thetext>Comment on attachment 314726
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:64
&gt;&gt;&gt; +constexpr Seconds minimumStatisticsFileWriteInterval { 5_min };
&gt;&gt; 
&gt;&gt; Does this mean that if someone opens the browser, does some things, and closes it in less than 5 min, then it won&apos;t be written to disk?
&gt; 
&gt; This is a fair point. WebResourceLoadStatisticsStore::applicationWillTerminate() is supposed to take care of this. However, we cannot really afford to wait for up to 5 minutes in WebResourceLoadStatisticsStore::applicationWillTerminate(). We should probably add some logic in WebResourceLoadStatisticsStore::applicationWillTerminate() to dump to disk if m_doesHaveDelayedWrite is true.

Yes -- putting the 5 minute check only in the cases driven by the statistics processing loop might be better. That way, &apos;applicationWillTerminate&apos; does the right thing when we shut down.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:176
&gt;          writeStoreToDisk();

... so I think we should check before this &apos;writeStoreToDisk&apos;...

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:223
&gt;              writeStoreToDisk();

... and before this &apos;writeStoreToDisk&apos; (or just get rid of it, because this doesn&apos;t seem to be used anywhere).

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:376
&gt;&gt; +            Seconds delayUntil = minimumStatisticsFileWriteInterval - timeSinceLastWrite + 1_s;
&gt; 
&gt; Why the  + 1_s ?

I was worried about the math calculating a value just under 5 minutes, and not meeting the 5 minute criteria when this delayed write fired (e.g., we *just* missed the last 5 minute mark, and might land just under the 5 minute mark at the next write attempt.)

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:380
&gt;&gt; +            m_doesHaveDelayedWrite = true;
&gt; 
&gt; Can we move this before the dispatch just to nbc on the safe side?

Yes.

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:398
&gt;&gt; +    m_doesHaveDelayedWrite = false;
&gt; 
&gt; What would you think of m_didScheduleWrite ?

Sure -- that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326191</commentid>
    <comment_count>15</comment_count>
      <attachid>314758</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:29:43 -0700</bug_when>
    <thetext>Created attachment 314758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326193</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:31:21 -0700</bug_when>
    <thetext>I did testing with the five-minute delay timer, and found that terminating the process did kill the pending queue, or at least the presence of the pending block did not prevent application termination.

Some (silly) logging below:
&gt;&gt;&gt;&gt;&gt;&gt; I&apos;m not gonna save for another 278.128 seconds.
###### I&apos;m terminating, but I&apos;m still supposed to wait another 277.429 seconds.
!!!!!!! Totally terminating, with another 277.429 seconds to go. But I&apos;m writing anyway and exiting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326194</commentid>
    <comment_count>17</comment_count>
      <attachid>314758</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:32:45 -0700</bug_when>
    <thetext>Comment on attachment 314758
Patch

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

&gt; Source/WebKit2/ChangeLog:14
&gt; +        knowledge in multiple places.

I should also mention here that the termination handler was not generating a write, so I fixed that as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326198</commentid>
    <comment_count>18</comment_count>
      <attachid>314758</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 14:43:51 -0700</bug_when>
    <thetext>Comment on attachment 314758
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:316
&gt; +        writeStoreToDisk();

Shouldn&apos;t we only do this only if there is a pending write? (i.e. if m_didScheduleWrite is true) ?

&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:-110
&gt; -    WTF::Function&lt;void()&gt; m_writePersistentStoreHandler;

This was completely unused? :S</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326201</commentid>
    <comment_count>19</comment_count>
      <attachid>314758</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:52:15 -0700</bug_when>
    <thetext>Comment on attachment 314758
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:316
&gt;&gt; +        writeStoreToDisk();
&gt; 
&gt; Shouldn&apos;t we only do this only if there is a pending write? (i.e. if m_didScheduleWrite is true) ?

That&apos;s a good point. I&apos;ll adjust that before landing. No point wasting a write on exit if we don&apos;t need it.

&gt;&gt; Source/WebKit2/UIProcess/Storage/ResourceLoadStatisticsStore.h:-110
&gt;&gt; -    WTF::Function&lt;void()&gt; m_writePersistentStoreHandler;
&gt; 
&gt; This was completely unused? :S

I know. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326203</commentid>
    <comment_count>20</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-06 14:59:35 -0700</bug_when>
    <thetext>Committed r219220: &lt;http://trac.webkit.org/changeset/219220&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314652</attachid>
            <date>2017-07-05 14:02:16 -0700</date>
            <delta_ts>2017-07-05 16:52:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174111-20170705140216.patch</filename>
            <type>text/plain</type>
            <size>3732</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTE1NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTA3LTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3Mgc2hvdWxkIGJhdGNoIGl0cyB3cml0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDExMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzMxMTU4OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2aXNlIHRoZSBkYXRhIHdyaXRpbmcgb3BlcmF0aW9uIHRvIG9ubHkgd3JpdGUgb24g
YSBzcGVjaWZpYyBpbnRlcnZhbCAoY3VycmVudGx5CisgICAgICAgIHNldCB0byA1IG1pbnV0ZXMp
LgorCisgICAgICAgIEFsc28gbWFrZSAnd3JpdGVTdG9yZVRvRGlzaycgc2ltcGxlciB0byB1c2Ug
YnkgbW92aW5nIHRoZSBkZWxldGluZyAoYmVmb3JlIHdyaXRlKSBhbmQKKyAgICAgICAgY3JlYXRp
bmcgKGFmdGVyIHdyaXRlKSBvZiB0aGUgRmlsZU1vbml0b3IgaW50byB0aGUgbWV0aG9kLCByYXRo
ZXIgdGhhbiByZXF1aXJpbmcgdGhpcworICAgICAgICBrbm93bGVkZ2UgaW4gbXVsdGlwbGUgcGxh
Y2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6IFJlbW92ZSB0aGUgc3RvcAorICAgICAg
ICBhbmQgc3RhcnQgbW9uaXRvcmluZyBpbnRvICd3cml0ZVN0b3JlVG9EaXNrJy4gQWxzbyBjaGVj
ayBpZiBlbm91Z2ggdGltZSBoYXMgZWxhcHNlZCBzaW5jZQorICAgICAgICB0aGUgbGFzdCB3cml0
ZSB0byBjb21taXQgdG8gZGlzay4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKTogUmVtb3Zl
IHRoZQorICAgICAgICBzdG9wIGFuZCBzdGFydCBtb25pdG9yaW5nIGludG8gJ3dyaXRlU3RvcmVU
b0Rpc2snLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OndyaXRlU3RvcmVUb0Rpc2spOiBBZGQgdGhlIHN0b3AgYW5kIHN0YXJ0IG1vbml0b3JpbmcKKyAg
ICAgICAgY29tbWFuZHMgaGVyZSwgc28gY2FsbGVycyBkb24ndCBoYXZlIHRvIGtub3cgdG8gZG8g
c28uCisKIDIwMTctMDctMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWdyZXNzaW9uKHIyMTg4MjEpOiBCYWQgY2FzdCB0byBXZWJLaXQ6OkRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50IGluIFdLV2ViVmlldydzIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRl
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MTQ0KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IGlubGluZSBTdHJpbgogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpwcmltYXJ5
RG9tYWluKHZhbHVlKTsKIH0KIAorY29uc3RleHByIFNlY29uZHMgdGltZUJldHdlZW5TeW5jcyA9
IFNlY29uZHM6OmZyb21NaW51dGVzKDUpOworCiBzdGF0aWMgYm9vbCBub3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91bGRDbGFzc2lm
eVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCA9IHRydWU7CiBzdGF0aWMgYXV0byBz
aG91bGRTdWJtaXRUZWxlbWV0cnkgPSB0cnVlOwpAQCAtMTY5LDExICsxNzEsMTAgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBybwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBzdG9wTW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CisgICAg
ICAgIGlmIChXYWxsVGltZTo6bm93KCkgLSBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lIDwg
dGltZUJldHdlZW5TeW5jcykKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB3cml0ZVN0
b3JlVG9EaXNrKCk7Ci0KLSAgICAgICAgc3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2Uo
KTsKICAgICB9KTsKIH0KIApAQCAtMjIwLDkgKzIyMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZWcKICAgICB9KTsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS0+c2V0V3JpdGVQZXJzaXN0ZW50U3RvcmVDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpXSB7Ci0g
ICAgICAgICAgICBzdG9wTW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CiAgICAgICAgICAg
ICB3cml0ZVN0b3JlVG9EaXNrKCk7Ci0gICAgICAgICAgICBzdGFydE1vbml0b3JpbmdTdGF0aXN0
aWNzU3RvcmFnZSgpOwogICAgICAgICB9KTsKICAgICB9KTsKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS0+c2V0R3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhQ2FsbGJhY2so
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewpAQCAtMzcxLDcgKzM3MCw5
IEBAIFN0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKCkKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAKKworICAgIHN0b3BNb25pdG9yaW5nU3RhdGlz
dGljc1N0b3JhZ2UoKTsKKwogICAgIHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlm
TmVlZGVkKCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVy
RnJvbURhdGEoKTsKQEAgLTM4MCw2ICszODEsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6d3JpCiAgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCBy
ZXNvdXJjZUxvZyk7CiAKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0gV2FsbFRp
bWU6Om5vdygpOworCisgICAgc3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKTsKIH0K
IAogc3RhdGljIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuQW5kTG9ja0ZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314668</attachid>
            <date>2017-07-05 16:52:02 -0700</date>
            <delta_ts>2017-07-06 09:26:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174111-20170705165201.patch</filename>
            <type>text/plain</type>
            <size>4803</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTE1NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTA3LTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3Mgc2hvdWxkIGJhdGNoIGl0cyB3cml0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDExMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzMxMTU4OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2aXNlIHRoZSBkYXRhIHdyaXRpbmcgb3BlcmF0aW9uIHRvIG9ubHkgd3JpdGUgb24g
YSBzcGVjaWZpYyBpbnRlcnZhbCAoY3VycmVudGx5CisgICAgICAgIHNldCB0byA1IG1pbnV0ZXMp
LgorCisgICAgICAgIEFsc28gbWFrZSAnd3JpdGVTdG9yZVRvRGlzaycgc2ltcGxlciB0byB1c2Ug
YnkgbW92aW5nIHRoZSBkZWxldGluZyAoYmVmb3JlIHdyaXRlKSBhbmQKKyAgICAgICAgY3JlYXRp
bmcgKGFmdGVyIHdyaXRlKSBvZiB0aGUgRmlsZU1vbml0b3IgaW50byB0aGUgbWV0aG9kLCByYXRo
ZXIgdGhhbiByZXF1aXJpbmcgdGhpcworICAgICAgICBrbm93bGVkZ2UgaW4gbXVsdGlwbGUgcGxh
Y2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6IFJlbW92ZSB0aGUgc3RvcAorICAgICAg
ICBhbmQgc3RhcnQgbW9uaXRvcmluZyBpbnRvICd3cml0ZVN0b3JlVG9EaXNrJy4gQWxzbyBjaGVj
ayBpZiBlbm91Z2ggdGltZSBoYXMgZWxhcHNlZCBzaW5jZQorICAgICAgICB0aGUgbGFzdCB3cml0
ZSB0byBjb21taXQgdG8gZGlzay4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKTogUmVtb3Zl
IHRoZQorICAgICAgICBzdG9wIGFuZCBzdGFydCBtb25pdG9yaW5nIGludG8gJ3dyaXRlU3RvcmVU
b0Rpc2snLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OndyaXRlU3RvcmVUb0Rpc2spOiBBZGQgdGhlIHN0b3AgYW5kIHN0YXJ0IG1vbml0b3JpbmcKKyAg
ICAgICAgY29tbWFuZHMgaGVyZSwgc28gY2FsbGVycyBkb24ndCBoYXZlIHRvIGtub3cgdG8gZG8g
c28uCisKIDIwMTctMDctMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWdyZXNzaW9uKHIyMTg4MjEpOiBCYWQgY2FzdCB0byBXZWJLaXQ6OkRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50IGluIFdLV2ViVmlldydzIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRl
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjE5MTQ0KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRD
b3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0
Zi9TZWNvbmRzLmg+CkBAIC01OSw2ICs2MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyBpbmxpbmUgU3RyaW4KICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6cHJpbWFy
eURvbWFpbih2YWx1ZSk7CiB9CiAKK2NvbnN0ZXhwciBTZWNvbmRzIHRpbWVCZXR3ZWVuU3luY3Mg
eyA1X21pbiB9OworCiBzdGF0aWMgYm9vbCBub3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9y
ZURhdGFSZWNvcmRzUmVtb3ZhbCA9IHRydWU7CiBzdGF0aWMgYXV0byBzaG91bGRTdWJtaXRUZWxl
bWV0cnkgPSB0cnVlOwpAQCAtMTY5LDExICsxNzIsMTAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnBybwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdG9wTW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CisgICAgICAgIGlmIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fbGFzdFdyaXRlVGltZSA8IHRpbWVCZXR3ZWVuU3luY3MpCisgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOwotCi0gICAgICAg
IHN0YXJ0TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CiAgICAgfSk7CiB9CiAKQEAgLTIy
MCw5ICsyMjIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVnCiAg
ICAgfSk7CiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnNldFdyaXRlUGVyc2lz
dGVudFN0b3JlQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
ewogICAgICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKV0gewotICAgICAgICAgICAgc3RvcE1vbml0b3Jp
bmdTdGF0aXN0aWNzU3RvcmFnZSgpOwogICAgICAgICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOwot
ICAgICAgICAgICAgc3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnNldEdyYW5k
ZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YUNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKQEAgLTM3MSw3ICszNzEsOSBAQCBTdHJpbmcgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpwCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6d3JpdGVTdG9yZVRvRGlzaygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgCisKKyAgICBzdG9wTW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CisKICAgICBz
eW5jV2l0aEV4aXN0aW5nU3RhdGlzdGljc1N0b3JhZ2VJZk5lZWRlZCgpOwogCiAgICAgYXV0byBl
bmNvZGVyID0gY29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CkBAIC0zODAsNiAr
MzgyLDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaQogICAgIHdy
aXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgcmVzb3VyY2VMb2cpOwogCiAgICAgbV9s
YXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IFdhbGxUaW1lOjpub3coKTsKKyAgICBtX2xhc3RX
cml0ZVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKworICAgIHN0YXJ0TW9uaXRvcmluZ1N0
YXRpc3RpY3NTdG9yYWdlKCk7CiB9CiAKIHN0YXRpYyBQbGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFu
ZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMTkxNDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDYgKzQwLDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1vbm90b25p
Y1RpbWU7CiBjbGFzcyBXYWxsVGltZTsKIGNsYXNzIFdvcmtRdWV1ZTsKIH0KQEAgLTE0OCw2ICsx
NDksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpGaWxlTW9uaXRvcj4gbV9zdGF0
aXN0aWNzU3RvcmFnZU1vbml0b3I7CiAgICAgU3RyaW5nIG1fc3RhdGlzdGljc1N0b3JhZ2VQYXRo
OwogICAgIFdURjo6V2FsbFRpbWUgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZTsKKyAgICBX
VEY6Ok1vbm90b25pY1RpbWUgbV9sYXN0V3JpdGVUaW1lOwogICAgIGJvb2wgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcjsKICAgICBS
dW5Mb29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fdGVsZW1ldHJ5
UmVwZWF0ZWRUaW1lcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314726</attachid>
            <date>2017-07-06 09:26:34 -0700</date>
            <delta_ts>2017-07-06 14:29:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174111-20170706092634.patch</filename>
            <type>text/plain</type>
            <size>5610</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTE4NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTA3LTA1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3Mgc2hvdWxkIGJhdGNoIGl0cyB3cml0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDExMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzMxMTU4OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2aXNlIHRoZSBkYXRhIHdyaXRpbmcgb3BlcmF0aW9uIHRvIG9ubHkgd3JpdGUgb24g
YSBzcGVjaWZpYyBpbnRlcnZhbCAoY3VycmVudGx5CisgICAgICAgIHNldCB0byA1IG1pbnV0ZXMp
LgorCisgICAgICAgIEFsc28gbWFrZSAnd3JpdGVTdG9yZVRvRGlzaycgc2ltcGxlciB0byB1c2Ug
YnkgbW92aW5nIHRoZSBkZWxldGluZyAoYmVmb3JlIHdyaXRlKSBhbmQKKyAgICAgICAgY3JlYXRp
bmcgKGFmdGVyIHdyaXRlKSBvZiB0aGUgRmlsZU1vbml0b3IgaW50byB0aGUgbWV0aG9kLCByYXRo
ZXIgdGhhbiByZXF1aXJpbmcgdGhpcworICAgICAgICBrbm93bGVkZ2UgaW4gbXVsdGlwbGUgcGxh
Y2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcyk6IFJlbW92ZSB0aGUgc3RvcAorICAgICAg
ICBhbmQgc3RhcnQgbW9uaXRvcmluZyBpbnRvICd3cml0ZVN0b3JlVG9EaXNrJy4gQWxzbyBjaGVj
ayBpZiBlbm91Z2ggdGltZSBoYXMgZWxhcHNlZCBzaW5jZQorICAgICAgICB0aGUgbGFzdCB3cml0
ZSB0byBjb21taXQgdG8gZGlzay4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKTogUmVtb3Zl
IHRoZQorICAgICAgICBzdG9wIGFuZCBzdGFydCBtb25pdG9yaW5nIGludG8gJ3dyaXRlU3RvcmVU
b0Rpc2snLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OndyaXRlU3RvcmVUb0Rpc2spOiBBZGQgdGhlIHN0b3AgYW5kIHN0YXJ0IG1vbml0b3JpbmcKKyAg
ICAgICAgY29tbWFuZHMgaGVyZSwgc28gY2FsbGVycyBkb24ndCBoYXZlIHRvIGtub3cgdG8gZG8g
c28uCisKIDIwMTctMDctMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFsbG93IG5hdmlnYXRpb25zIGluIHN1YmZyYW1lcyB0byBnZXQgYSBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IG9mICJTaG91bGRBbGxvdyIuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAkocmV2aXNpb24gMjE5MTg0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDkg
KzM3LDExIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9LZXllZENvZGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3Jvc3NU
aHJlYWRDb3BpZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CkBAIC01OSw2ICs2MSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0YXRpYyBpbmxpbmUgU3RyaW4KICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
cHJpbWFyeURvbWFpbih2YWx1ZSk7CiB9CiAKK2NvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1TdGF0
aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwgeyA1X21pbiB9OworCiBzdGF0aWMgYm9vbCBub3RpZnlQ
YWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCA9IHRydWU7CiBzdGF0
aWMgYXV0byBzaG91bGRTdWJtaXRUZWxlbWV0cnkgPSB0cnVlOwpAQCAtMTY5LDExICsxNzMsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogCi0gICAgICAgIHN0b3BNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2Uo
KTsKLQogICAgICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7Ci0KLSAgICAgICAgc3RhcnRNb25pdG9y
aW5nU3RhdGlzdGljc1N0b3JhZ2UoKTsKICAgICB9KTsKIH0KIApAQCAtMjIwLDkgKzIyMCw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWcKICAgICB9KTsKICAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0V3JpdGVQZXJzaXN0ZW50U3RvcmVDYWxs
YmFjayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIG1f
c3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3Rl
ZFRoaXMuY29weVJlZigpXSB7Ci0gICAgICAgICAgICBzdG9wTW9uaXRvcmluZ1N0YXRpc3RpY3NT
dG9yYWdlKCk7CiAgICAgICAgICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7Ci0gICAgICAgICAgICBz
dGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSgpOwogICAgICAgICB9KTsKICAgICB9KTsK
ICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+c2V0R3JhbmRmYXRoZXJFeGlzdGlu
Z1dlYnNpdGVEYXRhQ2FsbGJhY2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gewpAQCAtMzcyLDYgKzM3MCwyMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6d3JpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCisgICAg
YXV0byB0aW1lU2luY2VMYXN0V3JpdGUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIG1fbGFzdFN0
YXRpc3RpY3NXcml0ZVRpbWU7CisgICAgaWYgKHRpbWVTaW5jZUxhc3RXcml0ZSA8IG1pbmltdW1T
dGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwpIHsKKyAgICAgICAgaWYgKCFtX2RvZXNIYXZlRGVs
YXllZFdyaXRlKSB7CisgICAgICAgICAgICBTZWNvbmRzIGRlbGF5VW50aWwgPSBtaW5pbXVtU3Rh
dGlzdGljc0ZpbGVXcml0ZUludGVydmFsIC0gdGltZVNpbmNlTGFzdFdyaXRlICsgMV9zOworICAg
ICAgICAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoQWZ0ZXIoZGVsYXlVbnRpbCwgW3Ro
aXNdIHsKKyAgICAgICAgICAgICAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIG1fZG9lc0hhdmVEZWxheWVkV3JpdGUgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc3RvcE1vbml0b3JpbmdTdGF0aXN0
aWNzU3RvcmFnZSgpOworCiAgICAgc3luY1dpdGhFeGlzdGluZ1N0YXRpc3RpY3NTdG9yYWdlSWZO
ZWVkZWQoKTsKIAogICAgIGF1dG8gZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0ZUVuY29kZXJG
cm9tRGF0YSgpOwpAQCAtMzgwLDYgKzM5MiwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6d3JpCiAgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCBy
ZXNvdXJjZUxvZyk7CiAKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0gV2FsbFRp
bWU6Om5vdygpOworICAgIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKKworICAgIHN0YXJ0TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7CisgICAg
bV9kb2VzSGF2ZURlbGF5ZWRXcml0ZSA9IGZhbHNlOwogfQogCiBzdGF0aWMgUGxhdGZvcm1GaWxl
SGFuZGxlIG9wZW5BbmRMb2NrRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBt
b2RlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjE5MTg0KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTUgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsK
K2NsYXNzIE1vbm90b25pY1RpbWU7CiBjbGFzcyBXYWxsVGltZTsKIGNsYXNzIFdvcmtRdWV1ZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmlsZU1vbml0b3I7CiBjbGFzcyBLZXll
ZERlY29kZXI7CiBjbGFzcyBLZXllZEVuY29kZXI7Ci1jbGFzcyBGaWxlTW9uaXRvcjsKIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogfQogCkBAIC0xNDgsOSArMTQ5LDExIEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX3N0YXRpc3RpY3NTdG9yYWdl
TW9uaXRvcjsKICAgICBTdHJpbmcgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGg7CiAgICAgV1RGOjpX
YWxsVGltZSBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lOwotICAgIGJvb2wgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CisgICAgV1RGOjpNb25vdG9uaWNUaW1l
IG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3RlbGVtZXRyeU9uZVNob3RUaW1lcjsKICAgICBSdW5M
b29wOjpUaW1lcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fdGVsZW1ldHJ5UmVw
ZWF0ZWRUaW1lcjsKKyAgICBib29sIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9kb2VzSGF2ZURlbGF5ZWRXcml0ZSB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314758</attachid>
            <date>2017-07-06 14:29:43 -0700</date>
            <delta_ts>2017-07-06 14:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174111-20170706142942.patch</filename>
            <type>text/plain</type>
            <size>8778</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA3LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3Mgc2hvdWxkIGJhdGNoIGl0cyB3cml0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDExMQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzMxMTU4OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmV2aXNlIHRoZSBkYXRhIHdyaXRpbmcgb3BlcmF0aW9uIHRvIG9ubHkgd3JpdGUgb24g
YSBzcGVjaWZpYyBpbnRlcnZhbCAoY3VycmVudGx5CisgICAgICAgIHNldCB0byA1IG1pbnV0ZXMp
LgorCisgICAgICAgIEFsc28gbWFrZSAnd3JpdGVTdG9yZVRvRGlzaycgc2ltcGxlciB0byB1c2Ug
YnkgbW92aW5nIHRoZSBkZWxldGluZyAoYmVmb3JlIHdyaXRlKSBhbmQKKyAgICAgICAgY3JlYXRp
bmcgKGFmdGVyIHdyaXRlKSBvZiB0aGUgRmlsZU1vbml0b3IgaW50byB0aGUgbWV0aG9kLCByYXRo
ZXIgdGhhbiByZXF1aXJpbmcgdGhpcworICAgICAgICBrbm93bGVkZ2UgaW4gbXVsdGlwbGUgcGxh
Y2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRXcml0ZVBlcnNpc3RlbnRTdG9yZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKTogUmVtb3ZlIHRoZSBzdG9wCisgICAgICAgIGFuZCBzdGFydCBtb25pdG9y
aW5nIGludG8gJ3dyaXRlU3RvcmVUb0Rpc2snLiBBbHNvIGNoZWNrIGlmIGVub3VnaCB0aW1lIGhh
cyBlbGFwc2VkIHNpbmNlCisgICAgICAgIHRoZSBsYXN0IHdyaXRlIHRvIGNvbW1pdCB0byBkaXNr
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lz
dGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOiBSZW1vdmUgdGhlCisgICAgICAgIHN0b3Ag
YW5kIHN0YXJ0IG1vbml0b3JpbmcgaW50byAnd3JpdGVTdG9yZVRvRGlzaycuCisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzayk6
IEFkZCB0aGUgc3RvcCBhbmQgc3RhcnQgbW9uaXRvcmluZworICAgICAgICBjb21tYW5kcyBoZXJl
LCBzbyBjYWxsZXJzIGRvbid0IGhhdmUgdG8ga25vdyB0byBkbyBzby4KKwogMjAxNy0wNy0wNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHVuZGVyIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKFdURjo6
U3RyaW5nIGNvbnN0JikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyMTky
MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZENvcGllci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KQEAgLTU5LDYgKzYwLDggQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RhdGljIGlubGluZSBTdHJpbgogICAgIHJldHVybiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpwcmltYXJ5RG9tYWluKHZhbHVlKTsKIH0KIAorY29uc3RleHByIFNlY29uZHMgbWlu
aW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRlcnZhbCB7IDVfbWluIH07CisKIHN0YXRpYyBib29s
IG5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgPSBmYWxzZTsKIHN0YXRpYyBi
b29sIHNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdHJ1
ZTsKIHN0YXRpYyBhdXRvIHNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHRydWU7CkBAIC0xMDUsMTMg
KzEwOCw2IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3UKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcygp
OwogICAgIH0pOwotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXRXcml0ZVBl
cnNpc3RlbnRTdG9yZUNhbGxiYWNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKLSAgICAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCldIHsKLSAgICAgICAgICAgIHN0b3BNb25p
dG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKTsKLSAgICAgICAgICAgIHdyaXRlU3RvcmVUb0Rpc2so
KTsKLSAgICAgICAgICAgIHN0YXJ0TW9uaXRvcmluZ1N0YXRpc3RpY3NTdG9yYWdlKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXRH
cmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGFDYWxsYmFjayhbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRl
RGF0YSgpOwogICAgIH0pOwpAQCAtMjA1LDExICsyMDEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cHJvCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0b3BNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKTsKLQotICAgICAgICB3cml0ZVN0
b3JlVG9EaXNrKCk7Ci0KLSAgICAgICAgc3RhcnRNb25pdG9yaW5nU3RhdGlzdGljc1N0b3JhZ2Uo
KTsKKyAgICAgICAgc2NoZWR1bGVPcldyaXRlU3RvcmVUb0Rpc2soKTsKICAgICB9KTsKIH0KIApA
QCAtMzE5LDcgKzMxMSwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cHJvCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXBwbGljYXRpb25XaWxs
VGVybWluYXRlKCkKIHsKICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbJnNlbWFwaG9yZV0geworICAgIG1fc3RhdGlzdGljc1F1
ZXVlLT5kaXNwYXRjaChbJnNlbWFwaG9yZSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSB7CisgICAgICAgIC8vIFdyaXRlIGZpbmFsIGZpbGUgc3RhdGUgdG8gZGlzay4KKyAg
ICAgICAgd3JpdGVTdG9yZVRvRGlzaygpOworCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBhbnkgb25n
b2luZyB3b3JrIGluIG91ciBxdWV1ZSBpcyBmaW5pc2hlZCBiZWZvcmUgd2UgdGVybWluYXRlLgog
ICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgfSk7CkBAIC0zNDUsNiArMzQwLDggQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAorICAgIHN0b3BNb25pdG9yaW5nU3RhdGlzdGljc1N0
b3JhZ2UoKTsKKwogICAgIHN5bmNXaXRoRXhpc3RpbmdTdGF0aXN0aWNzU3RvcmFnZUlmTmVlZGVk
KCk7CiAKICAgICBhdXRvIGVuY29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURh
dGEoKTsKQEAgLTM1Myw2ICszNTAsMjkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OndyaQogICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgcmVzb3Vy
Y2VMb2cpOwogCiAgICAgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGltZSA9IFdhbGxUaW1lOjpu
b3coKTsKKyAgICBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CisKKyAgICBzdGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSgpOworICAgIG1fZGlk
U2NoZWR1bGVXcml0ZSA9IGZhbHNlOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2NoZWR1bGVPcldyaXRlU3RvcmVUb0Rpc2soKQoreworICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byB0aW1lU2luY2VMYXN0V3JpdGUgPSBNb25vdG9u
aWNUaW1lOjpub3coKSAtIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7CisgICAgaWYgKHRpbWVT
aW5jZUxhc3RXcml0ZSA8IG1pbmltdW1TdGF0aXN0aWNzRmlsZVdyaXRlSW50ZXJ2YWwpIHsKKyAg
ICAgICAgaWYgKCFtX2RpZFNjaGVkdWxlV3JpdGUpIHsKKyAgICAgICAgICAgIG1fZGlkU2NoZWR1
bGVXcml0ZSA9IHRydWU7CisgICAgICAgICAgICBTZWNvbmRzIGRlbGF5VW50aWwgPSBtaW5pbXVt
U3RhdGlzdGljc0ZpbGVXcml0ZUludGVydmFsIC0gdGltZVNpbmNlTGFzdFdyaXRlICsgMV9zOwor
ICAgICAgICAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoQWZ0ZXIoZGVsYXlVbnRpbCwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgICAg
IHdyaXRlU3RvcmVUb0Rpc2soKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB3cml0ZVN0b3JlVG9EaXNrKCk7CiB9CiAKIHN0YXRpYyBQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkFuZExvY2tGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG1vZGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMTkyMTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE0ICs0MCwxNSBAQAogI2VuZGlmCiAKIG5hbWVz
cGFjZSBXVEYgeworY2xhc3MgTW9ub3RvbmljVGltZTsKIGNsYXNzIFdhbGxUaW1lOwogY2xhc3Mg
V29ya1F1ZXVlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGaWxlTW9uaXRvcjsK
IGNsYXNzIEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKLWNsYXNzIEZpbGVNb25p
dG9yOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiB9CiAKQEAgLTEyMiw2ICsxMjMs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7
CiAKICAgICB2b2lkIHdyaXRlU3RvcmVUb0Rpc2soKTsKKyAgICB2b2lkIHNjaGVkdWxlT3JXcml0
ZVN0b3JlVG9EaXNrKCk7CiAgICAgdm9pZCB3cml0ZUVuY29kZXJUb0Rpc2soV2ViQ29yZTo6S2V5
ZWRFbmNvZGVyJiwgY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6S2V5ZWREZWNvZGVyPiBjcmVhdGVEZWNvZGVyRnJvbURpc2soY29uc3QgU3Ry
aW5nJiBwYXRoKSBjb25zdDsKICAgICBXYWxsVGltZSBzdGF0aXN0aWNzRmlsZU1vZGlmaWNhdGlv
blRpbWUoY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3Q7CkBAIC0xNDgsOCArMTUwLDEwIEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX3N0YXRpc3RpY3NTdG9y
YWdlTW9uaXRvcjsKICAgICBjb25zdCBTdHJpbmcgbV9zdGF0aXN0aWNzU3RvcmFnZVBhdGg7CiAg
ICAgV1RGOjpXYWxsVGltZSBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lOworICAgIFdURjo6
TW9ub3RvbmljVGltZSBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lOwogICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV90ZWxlbWV0cnlPbmVTaG90VGlt
ZXI7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBt
X3RlbGVtZXRyeVJlcGVhdGVkVGltZXI7CisgICAgYm9vbCBtX2RpZFNjaGVkdWxlV3JpdGUgeyBm
YWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NiwxMSArMTc2LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFNobwogICAgIG1fc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVy
ID0gV1RGTW92ZShoYW5kbGVyKTsKIH0KICAgICAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzZXRXcml0ZVBlcnNpc3RlbnRTdG9yZUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIGhhbmRsZXIpCi17Ci0gICAgbV93cml0ZVBlcnNpc3RlbnRTdG9yZUhhbmRsZXIgPSBX
VEZNb3ZlKGhhbmRsZXIpOwotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0R3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgaGFuZGxlcikKIHsKICAgICBtX2dyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0
YUhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgJKHJldmlzaW9uIDIxOTIxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9y
YWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkUGFydGl0aW9uQ29va2ll
c0NhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
c1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFy
Rmlyc3QpPiYmKTsKLSAgICB2b2lkIHNldFdyaXRlUGVyc2lzdGVudFN0b3JlQ2FsbGJhY2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0RGVsZXRlUGVyc2lzdGVudFN0b3Jl
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRo
ZXJFeGlzdGluZ1dlYnNpdGVEYXRhQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0RmlyZVRlbGVtZXRyeUNhbGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGhhbmRsZXIpOwpAQCAtMTA3LDcgKzEwNiw2IEBAIHByaXZhdGU6CiAKICAgICBXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4gbV9kYXRhQWRkZWRIYW5kbGVyOwogICAgIFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgYm9vbCBjbGVhckZp
cnN0KT4gbV9zaG91bGRQYXJ0aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXI7Ci0gICAgV1RG
OjpGdW5jdGlvbjx2b2lkKCk+IG1fd3JpdGVQZXJzaXN0ZW50U3RvcmVIYW5kbGVyOwogICAgIFdU
Rjo6RnVuY3Rpb248dm9pZCgpPiBtX2dyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YUhhbmRs
ZXI7CiAgICAgV1RGOjpGdW5jdGlvbjx2b2lkKCk+IG1fZGVsZXRlUGVyc2lzdGVudFN0b3JlSGFu
ZGxlcjsKICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9maXJlVGVsZW1ldHJ5SGFuZGxlcjsK
</data>
<flag name="review"
          id="335616"
          type_id="1"
          status="+"
          setter="cdumez"
    />
    <flag name="commit-queue"
          id="335617"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>