<?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>54312</bug_id>
          
          <creation_ts>2011-02-11 14:12:34 -0800</creation_ts>
          <short_desc>Allow controlling minimum DOMTimer interval on a per-page basis</short_desc>
          <delta_ts>2011-08-25 19:28: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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>54772</blocked>
    
    <blocked>55014</blocked>
    
    <blocked>55176</blocked>
    
    <blocked>67012</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>aroben</cc>
    
    <cc>buildbot</cc>
    
    <cc>davemoore</cc>
    
    <cc>dbates</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>kling</cc>
    
    <cc>manyoso</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350015</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 14:12:34 -0800</bug_when>
    <thetext>It is desirable to be able to control the minimum DOMTimer interval on a per-page basis. In particular, to avoid consuming excessive CPU and battery life on mobile devices, some ports would like to be able to increase the minimum interval to a large value, like 500 ms, when a tab is in the background, and reduce it when the tab is made visible again. When adding this support to WebCore, it&apos;s important to add hooks to the LayoutTestController so that automated tests can be written.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350091</commentid>
    <comment_count>1</comment_count>
      <attachid>82192</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 15:26:45 -0800</bug_when>
    <thetext>Created attachment 82192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350094</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 15:28:58 -0800</bug_when>
    <thetext>Note to reviewers: the style violations are in files that don&apos;t currently match WebKit style. The new code was made consistent with the preexisting code. The failures were:

Source/WebKit/gtk/webkit/webkitwebview.h:407:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitwebview.h:407:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/gtk/webkit/webkitwebview.h:410:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/gtk/webkit/webkitwebview.h:410:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitwebview.h:411:  Extra space between gdouble and interval_in_seconds  [whitespace/declaration] [3]
Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]

While I tested these changes in the Safari and Chromium DRT ports, the other ports&apos; changes were made blindly, so I&apos;m relying on the EWS and bots to catch errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350097</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-11 15:30:50 -0800</bug_when>
    <thetext>Attachment 82192 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebKit/gtk/webkit/webkitwebview.h:407:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitwebview.h:407:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/gtk/webkit/webkitwebview.h:410:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/gtk/webkit/webkitwebview.h:410:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitwebview.h:411:  Extra space between gdouble and interval_in_seconds  [whitespace/declaration] [3]
Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350100</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-11 15:32:08 -0800</bug_when>
    <thetext>Do we have to expose API for every port?  I&apos;m not sure everyone will want to expose setters for these things to embedders (even though I know we want to in chromium) - we should leave that choice to the various port maintainers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350109</commentid>
    <comment_count>5</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-11 15:41:10 -0800</bug_when>
    <thetext>Attachment 82192 did not build on gtk:
Build output: http://queues.webkit.org/results/7868739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350126</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 15:55:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Do we have to expose API for every port?  I&apos;m not sure everyone will want to expose setters for these things to embedders (even though I know we want to in chromium) - we should leave that choice to the various port maintainers.

In order to implement the new LayoutTestController method, the new APIs per port are needed. I thought it would be best to make the new tests work on all ports, but can understand that the port maintainers might need to decide when to add the new embedding APIs. If people CC&apos;d on the bug could weigh in one way or the other, that would be helpful. Minimally I&apos;ll do Chromium, Mac and Win (unless there are objections for the latter two).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350129</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-11 15:58:24 -0800</bug_when>
    <thetext>I&apos;m not sure if the GTK+ port wants to expose this (probably not at the moment), but if you have an extra moment, it&apos;d be great if you could expose the necessary functionality to the DRT through Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp, which is what we use to expose WebCore to the layout tests in order to test future APIs. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350132</commentid>
    <comment_count>8</comment_count>
      <attachid>82204</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 15:59:26 -0800</bug_when>
    <thetext>Created attachment 82204
Fixed GTK build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350133</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-11 16:00:56 -0800</bug_when>
    <thetext>Attachment 82204 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebKit/gtk/webkit/webkitwebview.h:407:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitwebview.h:407:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/gtk/webkit/webkitwebview.h:410:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebKit/gtk/webkit/webkitwebview.h:410:  The parameter name &quot;webView&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitwebview.h:411:  Extra space between gdouble and interval_in_seconds  [whitespace/declaration] [3]
Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350136</commentid>
    <comment_count>10</comment_count>
      <attachid>82204</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-11 16:03:49 -0800</bug_when>
    <thetext>Comment on attachment 82204
Fixed GTK build failure

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

&gt; Source/WebKit/win/WebView.cpp:738
&gt; +HRESULT STDMETHODCALLTYPE WebView::defaultMinimumTimerInterval(double* interval)
&gt; +{
&gt; +    *interval = Settings::defaultMinDOMTimerInterval();
&gt; +    return S_OK;
&gt; +}
&gt; +
&gt; +HRESULT STDMETHODCALLTYPE WebView::setMinimumTimerInterval(double interval)

No need for the &quot;STDMETHODCALLTYPE on either of these.

You should return E_POINTER if interval is null.

&gt; Source/WebKit/win/Interfaces/IWebView.idl:755
&gt; +    /*!
&gt; +        @method defaultMinimumTimerInterval
&gt; +        @discussion Returns the default minimum interval for DOMTimers on all pages, not
&gt; +        just the one associated with this receiver.
&gt; +        - (double)interval;
&gt; +    */
&gt; +    HRESULT defaultMinimumTimerInterval([out, retval] double* interval);
&gt; +
&gt; +    /*!
&gt; +        @method setMinimumTimerInterval
&gt; +        @discussion Sets the minimum interval for DOMTimers on the web page associated
&gt; +        with the receiver.
&gt; +        - (double)interval;
&gt; +    */
&gt; +    HRESULT setMinimumTimerInterval([in] double interval);

It would be a little better to add these to IWebViewPrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350137</commentid>
    <comment_count>11</comment_count>
      <attachid>82204</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-11 16:04:44 -0800</bug_when>
    <thetext>Comment on attachment 82204
Fixed GTK build failure

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

&gt; Source/WebCore/dom/Document.h:1138
&gt; +    virtual double getMinimumTimerInterval();

This method should be const.

&gt; Source/WebCore/dom/ScriptExecutionContext.h:156
&gt; +        void minimumTimerIntervalChanged(double oldMinimumTimerInterval);

I think this method needs a better name; it sounds like an internal method that would get called from a setter.

Maybe adjustMinimumTimerInterval()?

&gt; Source/WebCore/dom/ScriptExecutionContext.h:157
&gt; +        virtual double getMinimumTimerInterval();

This should be const. We normally don&apos;t use &apos;get&apos;.

&gt; Source/WebCore/page/DOMTimer.h:61
&gt; +        double intervalClampedToMinimum(int timeout, double minimumTimerInterval);

Should be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350143</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 16:17:59 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;m not sure if the GTK+ port wants to expose this (probably not at the moment), but if you have an extra moment, it&apos;d be great if you could expose the necessary functionality to the DRT through Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp, which is what we use to expose WebCore to the layout tests in order to test future APIs. Thanks!

I see. Sure, I&apos;ll add the needed methods to DumpRenderTreeSupportGtk.cpp instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350145</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 16:22:43 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 82204 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82204&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/win/WebView.cpp:738
&gt; &gt; +HRESULT STDMETHODCALLTYPE WebView::defaultMinimumTimerInterval(double* interval)
&gt; &gt; +{
&gt; &gt; +    *interval = Settings::defaultMinDOMTimerInterval();
&gt; &gt; +    return S_OK;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +HRESULT STDMETHODCALLTYPE WebView::setMinimumTimerInterval(double interval)
&gt; 
&gt; No need for the &quot;STDMETHODCALLTYPE on either of these.

Really? Shouldn&apos;t the definition match the declaration? The majority of the COM methods in WebView.h and .cpp seem to have STDMETHODCALLTYPE.

&gt; You should return E_POINTER if interval is null.

Thanks, will fix.

&gt; &gt; Source/WebKit/win/Interfaces/IWebView.idl:755
&gt; &gt; +    /*!
&gt; &gt; +        @method defaultMinimumTimerInterval
&gt; &gt; +        @discussion Returns the default minimum interval for DOMTimers on all pages, not
&gt; &gt; +        just the one associated with this receiver.
&gt; &gt; +        - (double)interval;
&gt; &gt; +    */
&gt; &gt; +    HRESULT defaultMinimumTimerInterval([out, retval] double* interval);
&gt; &gt; +
&gt; &gt; +    /*!
&gt; &gt; +        @method setMinimumTimerInterval
&gt; &gt; +        @discussion Sets the minimum interval for DOMTimers on the web page associated
&gt; &gt; +        with the receiver.
&gt; &gt; +        - (double)interval;
&gt; &gt; +    */
&gt; &gt; +    HRESULT setMinimumTimerInterval([in] double interval);
&gt; 
&gt; It would be a little better to add these to IWebViewPrivate.

Can do. Keep in mind that if the browser wants to use this functionality, rather than just DRT, that these methods will need to be called. Given that, should they live on IWebView or IWebViewPrivate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350148</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-11 16:26:53 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 82204 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82204&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1138
&gt; &gt; +    virtual double getMinimumTimerInterval();
&gt; 
&gt; This method should be const.

Will fix.

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:156
&gt; &gt; +        void minimumTimerIntervalChanged(double oldMinimumTimerInterval);
&gt; 
&gt; I think this method needs a better name; it sounds like an internal method that would get called from a setter.
&gt; 
&gt; Maybe adjustMinimumTimerInterval()?

Sure, that sounds fine. Will change here and in DOMTimer.

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:157
&gt; &gt; +        virtual double getMinimumTimerInterval();
&gt; 
&gt; This should be const. We normally don&apos;t use &apos;get&apos;.

Will fix.

&gt; &gt; Source/WebCore/page/DOMTimer.h:61
&gt; &gt; +        double intervalClampedToMinimum(int timeout, double minimumTimerInterval);
&gt; 
&gt; Should be const.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350187</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-11 18:01:08 -0800</bug_when>
    <thetext>Attachment 82204 did not build on win:
Build output: http://queues.webkit.org/results/7874811</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350206</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-11 18:54:41 -0800</bug_when>
    <thetext>Attachment 82204 did not build on win:
Build output: http://queues.webkit.org/results/7874829</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350223</commentid>
    <comment_count>17</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-11 20:18:38 -0800</bug_when>
    <thetext>Attachment 82204 did not build on qt:
Build output: http://queues.webkit.org/results/7874841</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350224</commentid>
    <comment_count>18</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-11 20:27:21 -0800</bug_when>
    <thetext>Attachment 82204 did not build on gtk:
Build output: http://queues.webkit.org/results/7874842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350929</commentid>
    <comment_count>19</comment_count>
      <attachid>82372</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-14 15:23:57 -0800</bug_when>
    <thetext>Created attachment 82372
Addressed code review feedback.

Addressed all code review feedback so far. On Mac, Win, Gtk and Qt ports, moved supporting APIs for LayoutTestController to private section or DumpRenderTreeSupport. Re-tested in Chromium and WebKit/Mac DRT ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350932</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 15:28:01 -0800</bug_when>
    <thetext>Attachment 82372 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350960</commentid>
    <comment_count>21</comment_count>
      <attachid>82372</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-14 16:20:23 -0800</bug_when>
    <thetext>Comment on attachment 82372
Addressed code review feedback.

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

&gt; Source/WebKit/chromium/public/WebSettings.h:113
&gt; +    WEBKIT_API static double defaultMinDOMTimerInterval();

why does WebKit need default getter/setters?  every Page has a Settings,
so we shouldn&apos;t need any other way to get/set this value.

&gt; Source/WebKit/chromium/public/WebSettings.h:115
&gt; +    virtual double minDOMTimerInterval() = 0;

it is unusual for WebSettings to provide a getter.  is that really needed?

also maybe &quot;DOMTimerInterval&quot; is not the best name for this given that this
will eventually be used to adjust the timer minimum timer interval for web
workers.  maybe instead of &quot;DOM&quot; you should say &quot;JavaScript&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350962</commentid>
    <comment_count>22</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-02-14 16:26:30 -0800</bug_when>
    <thetext>Attachment 82372 did not build on qt:
Build output: http://queues.webkit.org/results/7913648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350976</commentid>
    <comment_count>23</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-14 16:41:28 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 82372 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82372&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSettings.h:113
&gt; &gt; +    WEBKIT_API static double defaultMinDOMTimerInterval();
&gt; 
&gt; why does WebKit need default getter/setters?  every Page has a Settings,
&gt; so we shouldn&apos;t need any other way to get/set this value.

The reason is that the default value (0.004, for Chromium) is set from within WebKit code (WebKit.cpp), but the value will be adjusted on a per-page basis by Chromium code. If we provide the default value, then we don&apos;t need to store the &quot;saved&quot; value when the tab is hidden so that we can restore it when the tab is made visible. The using code is thereby made more robust.

The setter for the default value is only being provided for completeness. I could remove that API if you want.

&gt; &gt; Source/WebKit/chromium/public/WebSettings.h:115
&gt; &gt; +    virtual double minDOMTimerInterval() = 0;
&gt; 
&gt; it is unusual for WebSettings to provide a getter.  is that really needed?

Strictly, no. I added it only for completeness and would be happy to remove it.

&gt; also maybe &quot;DOMTimerInterval&quot; is not the best name for this given that this
&gt; will eventually be used to adjust the timer minimum timer interval for web
&gt; workers.  maybe instead of &quot;DOM&quot; you should say &quot;JavaScript&quot;?

This name was chosen to match that in the Settings class, and that one was essentially pre-existing. Given that in WebKit, DOMTimer instances are in fact used on worker threads, I&apos;d prefer to leave the name as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350986</commentid>
    <comment_count>24</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-14 16:45:32 -0800</bug_when>
    <thetext>Attachment 82372 did not build on win:
Build output: http://queues.webkit.org/results/7908736</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351000</commentid>
    <comment_count>25</comment_count>
      <attachid>82391</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-14 17:20:07 -0800</bug_when>
    <thetext>Created attachment 82391
Fixed qt and win build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351002</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 17:22:27 -0800</bug_when>
    <thetext>Attachment 82391 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351007</commentid>
    <comment_count>27</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-14 17:33:02 -0800</bug_when>
    <thetext>Attachment 82372 did not build on win:
Build output: http://queues.webkit.org/results/7912651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351049</commentid>
    <comment_count>28</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-14 18:59:42 -0800</bug_when>
    <thetext>Attachment 82391 did not build on win:
Build output: http://queues.webkit.org/results/7908768</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351050</commentid>
    <comment_count>29</comment_count>
      <attachid>82404</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-14 19:00:25 -0800</bug_when>
    <thetext>Created attachment 82404
Addressed review feedback

Addressed online and offline review feedback from Darin Fisher. Removed all methods from WebSettings except setMinDOMTimerInterval. Constants will be added to Chromium&apos;s webkit_glue and webkit_support namespaces to govern pages&apos; behavior in the browser and DRT. A temporary constant has been added to Tools/DumpRenderTree/chromium/WebViewHost.cpp until the Chromium changes land and are rolled forward. Retested in Chromium and DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351051</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 19:03:32 -0800</bug_when>
    <thetext>Attachment 82404 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351052</commentid>
    <comment_count>31</comment_count>
      <attachid>82405</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-14 19:07:01 -0800</bug_when>
    <thetext>Created attachment 82405
Minor Win port change

Minor change to remove STDMETHODCALLTYPE from new methods in WebView.cpp. Don&apos;t expect this to fix the EWS bot build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351054</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 19:10:40 -0800</bug_when>
    <thetext>Attachment 82405 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351058</commentid>
    <comment_count>33</comment_count>
      <attachid>82406</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-14 19:13:36 -0800</bug_when>
    <thetext>Created attachment 82406
Try to make Win bot notice IDL change

Whitespace-only change to WebKit.idl to try to make the Win EWS bot notice the IWebPagePrivate change in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351059</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-14 19:18:07 -0800</bug_when>
    <thetext>Attachment 82406 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 58 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351073</commentid>
    <comment_count>35</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-14 20:02:02 -0800</bug_when>
    <thetext>Attachment 82404 did not build on win:
Build output: http://queues.webkit.org/results/7907770</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351075</commentid>
    <comment_count>36</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-14 20:20:55 -0800</bug_when>
    <thetext>Attachment 82405 did not build on win:
Build output: http://queues.webkit.org/results/7905821</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351131</commentid>
    <comment_count>37</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-15 00:25:25 -0800</bug_when>
    <thetext>Attachment 82406 did not build on gtk:
Build output: http://queues.webkit.org/results/7907848</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351377</commentid>
    <comment_count>38</comment_count>
      <attachid>82481</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 10:08:24 -0800</bug_when>
    <thetext>Created attachment 82481
GTK build fix

GTK build fix; documented whitespace-only change to WebKit.idl for Win port, which I&apos;ll submit with this patch to keep the bots green and remove it immediately afterward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351378</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-15 10:10:58 -0800</bug_when>
    <thetext>Attachment 82481 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/page/DOMTimer.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 58 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351382</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-15 10:20:42 -0800</bug_when>
    <thetext>&gt; &gt; also maybe &quot;DOMTimerInterval&quot; is not the best name for this given that this
&gt; &gt; will eventually be used to adjust the timer minimum timer interval for web
&gt; &gt; workers.  maybe instead of &quot;DOM&quot; you should say &quot;JavaScript&quot;?
&gt; 
&gt; This name was chosen to match that in the Settings class, and that one was essentially pre-existing. Given that in WebKit, DOMTimer instances are in fact used on worker threads, I&apos;d prefer to leave the name as is.

I usually try to make the WebKit API make sense on its own, without knowledge of how it is implemented.  Keeping the publicly facing API consistent with WebCore can be beneficial to API maintainers, but it does nothing to help users of the API.  I think it makes sense to favor users.

Don&apos;t you agree that it sounds odd to use &quot;DOMTimer&quot; as a name to describe a WebWorker timer?  It looks like WindowTimers is the name that the HTML spec uses for this, and I&apos;m not sure that that name is any better than DOMTimer.  I&apos;m OK with sticking with DOMTimer in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351405</commentid>
    <comment_count>41</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 10:54:20 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; &gt; &gt; also maybe &quot;DOMTimerInterval&quot; is not the best name for this given that this
&gt; &gt; &gt; will eventually be used to adjust the timer minimum timer interval for web
&gt; &gt; &gt; workers.  maybe instead of &quot;DOM&quot; you should say &quot;JavaScript&quot;?
&gt; &gt; 
&gt; &gt; This name was chosen to match that in the Settings class, and that one was essentially pre-existing. Given that in WebKit, DOMTimer instances are in fact used on worker threads, I&apos;d prefer to leave the name as is.
&gt; 
&gt; I usually try to make the WebKit API make sense on its own, without knowledge of how it is implemented.  Keeping the publicly facing API consistent with WebCore can be beneficial to API maintainers, but it does nothing to help users of the API.  I think it makes sense to favor users.
&gt; 
&gt; Don&apos;t you agree that it sounds odd to use &quot;DOMTimer&quot; as a name to describe a WebWorker timer?  It looks like WindowTimers is the name that the HTML spec uses for this, and I&apos;m not sure that that name is any better than DOMTimer.  I&apos;m OK with sticking with DOMTimer in this case.

There&apos;s a comment at the top of WebSettings.h indicating that its methods mostly map 1:1 to those in the Settings class. I agree that the name &quot;DOMTimer&quot; doesn&apos;t capture the meaning for both the DOM&apos;s and workers&apos; timers, but am not convinced that changing it and introducing a discrepancy is worth it. If you feel strongly, my suggestion would be &quot;setMinimumTimerInterval&quot;, similar to the new method in LayoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351420</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-15 11:13:16 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; There&apos;s a comment at the top of WebSettings.h indicating that its methods mostly map 1:1 to those in the Settings class. I agree that the name &quot;DOMTimer&quot; doesn&apos;t capture the meaning for both the DOM&apos;s and workers&apos; timers, but am not convinced that changing it and introducing a discrepancy is worth it. If you feel strongly, my suggestion would be &quot;setMinimumTimerInterval&quot;, similar to the new method in LayoutTestController.

It is OK to leave it as is, although I like setMinimumTimerInterval too.

Not to beat this horse to death, but I will add that I think the comment at the top of WebSettings.h should be removed.  If someone were to change WebCore::Settings in some material way (e.g., renaming it), they would not think to update WebSettings.h.  The point of the WebKit API is to provide stable insulation around WebCore, so WebCore&apos;isms shouldn&apos;t leak to the public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351440</commentid>
    <comment_count>43</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 11:54:19 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt; There&apos;s a comment at the top of WebSettings.h indicating that its methods mostly map 1:1 to those in the Settings class. I agree that the name &quot;DOMTimer&quot; doesn&apos;t capture the meaning for both the DOM&apos;s and workers&apos; timers, but am not convinced that changing it and introducing a discrepancy is worth it. If you feel strongly, my suggestion would be &quot;setMinimumTimerInterval&quot;, similar to the new method in LayoutTestController.
&gt; 
&gt; It is OK to leave it as is, although I like setMinimumTimerInterval too.

OK. I&apos;ll rename it to setMinimumTimerInterval as I like that name better too in the long term. Will upload an updated patch once this one clears the EWS bots (most concerned about GTK).

&gt; Not to beat this horse to death, but I will add that I think the comment at the top of WebSettings.h should be removed.  If someone were to change WebCore::Settings in some material way (e.g., renaming it), they would not think to update WebSettings.h.  The point of the WebKit API is to provide stable insulation around WebCore, so WebCore&apos;isms shouldn&apos;t leak to the public.

I&apos;m happy to volunteer to remove the comment, but in a subsequent patch as that change is unrelated.

Still looking for an r+ on this so that we can proceed with the dependent Chromium changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351547</commentid>
    <comment_count>44</comment_count>
      <attachid>82481</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-15 13:55:14 -0800</bug_when>
    <thetext>Comment on attachment 82481
GTK build fix

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351586</commentid>
    <comment_count>45</comment_count>
      <attachid>82521</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 14:38:05 -0800</bug_when>
    <thetext>Created attachment 82521
Final patch

Final version of patch to be committed, incorporating Chromium API naming change. GTK EWS bot seems stuck, so am going ahead with landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351609</commentid>
    <comment_count>46</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 14:54:10 -0800</bug_when>
    <thetext>Committed r78620: &lt;http://trac.webkit.org/changeset/78620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351719</commentid>
    <comment_count>47</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 16:36:38 -0800</bug_when>
    <thetext>Committed r78643: &lt;http://trac.webkit.org/changeset/78643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351721</commentid>
    <comment_count>48</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-15 16:37:33 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; Committed r78643: &lt;http://trac.webkit.org/changeset/78643&gt;

Note: this removed the whitespace-only change in Source/WebKit/win/Interfaces/WebKit.idl introduced in http://trac.webkit.org/changeset/78620 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357235</commentid>
    <comment_count>49</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-24 11:53:52 -0800</bug_when>
    <thetext>fast/dom/timer-increase-then-decrease-min-interval.html turns out to be really flaky, especially in debug builds.  See http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;group=%40ToT%20-%20chromium.org&amp;tests=fast%2Fdom%2Ftimer-increase-then-decrease-min-interval.html.  Is there any way to test this functionality more reliably?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82192</attachid>
            <date>2011-02-11 15:26:45 -0800</date>
            <delta_ts>2011-02-11 15:59:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54312-20110211152643.patch</filename>
            <type>text/plain</type>
            <size>57372</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4Mzc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMTEtMDItMTEgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4gTmV3IEFQSXMgd2VyZSBuZWNlc3NhcmlseSBh
ZGRlZCB0bworICAgICAgICBhbGwgcG9ydHMgdG8gYWxsb3cgaW1wbGVtZW50aW5nIHRoaXMgbWV0
aG9kIGFuZCByZXNldHRpbmcgdGhlCisgICAgICAgIHN0YXRlIGZvciBlYWNoIG5ldyB0ZXN0LiBC
ZWNhdXNlIHRoZSBuZXcgc2V0dGluZ3MgYXJlbid0CisgICAgICAgIHBlcnNpc3RlbnQsIGEgZGVj
aXNpb24gd2FzIG1hZGUgZm9yIGVhY2ggcG9ydCB3aGV0aGVyIHRvIGV4cG9zZQorICAgICAgICB0
aGUgbmV3IEFQSXMgaW4gdGhlIHBvcnQncyBTZXR0aW5ncy1saWtlIG9iamVjdCwgb3IgdmlhIGEK
KyAgICAgICAgZGlmZmVyZW50IGNsYXNzIChnZW5lcmFsbHksIGluIHRoZSBjb25jZXB0IG9mIFdl
YlZpZXcpLgorCisgICAgICAgIElkZWFsbHkgY2hhbmdpbmcgdGhlIHBhZ2UncyBtaW5pbXVtIHRp
bWVyIGludGVydmFsIHdvdWxkIGFmZmVjdAorICAgICAgICBkZWRpY2F0ZWQgd29ya2VycywgYnV0
IHRoaXMgaXMgdG9vIG11Y2ggdG8gZG8gaW4gYW4gaW5pdGlhbCBwYXRjaCwKKyAgICAgICAgc28g
YSBGSVhNRSBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBUZXN0ZWQgd2l0aDoKKyAgICAgICAg
ICAtIFRoZSBuZXcgbGF5b3V0IHRlc3RzIG9uIHRoZSBXZWJLaXQgTWFjIGFuZCBDaHJvbWl1bSAo
TWFjLAorICAgICAgICAgICAgTGludXgpIERSVCBwb3J0cy4KKyAgICAgICAgICAtIEhvb2tlZCB1
cCB0aGUgbmV3IEFQSSBpbiBDaHJvbWl1bSBhbmQgcmFuIHNvbWUgc2ltcGxlIG1hbnVhbAorICAg
ICAgICAgICAgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldE1pbmltdW1UaW1l
ckludGVydmFsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogcGFnZS9ET01U
aW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9NVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVy
OjptaW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGlt
ZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bSk6CisgICAgICAgICogcGFnZS9ET01UaW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6bWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6bWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5oOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpU
aW1lckJhc2U6OmF1Z21lbnRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJC
YXNlOjphdWdtZW50UmVwZWF0SW50ZXJ2YWwpOgorCiAyMDExLTAyLTExICBNaWtlIFJlZWQgIDxy
ZWVkQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzk1LDYgKzc5NSw3IEBAIF9fWk43
V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWwKIF9fWk43V2ViQ29yZThTZXR0aW5n
czE4c2V0TWluaW11bUZvbnRTaXplRWkKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZG
b250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4
c2V0V2ViQXVkaW9FbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE5bWluRE9NVGltZXJJ
bnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOXNldFNob3dEZWJ1Z0JvcmRlcnNFYgog
X19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9t
aWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRhc3lGb250RmFtaWx5RVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKQEAgLTgyNCw2ICs4MjUsNyBAQCBfX1pON1dlYkNvcmU4U2V0
dGluZ3MyNXNldE5lZWRzTGVvcGFyZE1hCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRTaG91bGRQcmlu
dEJhY2tncm91bmRzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbkVSS05TXzRLVVJMRQorX19aTjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNnNldERlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXROZWVk
c1NpdGVTcGVjaWZpY1F1aXJrc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldEZUUERpcmVj
dG9yeVRlbXBsYXRlUGF0aEVSS04zV1RGNlN0cmluZ0UKQEAgLTgzMyw2ICs4MzUsNyBAQCBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyN3NldFNwYXRpYWxOYXZpZ2F0CiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MyOHNldEZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MjlzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
OXNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczI5
c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWxFZAogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlz
ZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMHNl
dEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMXNl
dEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRFYgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMzksNiArMjIzOSwxNCBAQCBLVVJMIERvY3VtZW50Ojp2aXJ0
dWFsQ29tcGxldGVVUkwoY29uc3QgCiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCk7CiB9CiAK
K2RvdWJsZSBEb2N1bWVudDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKQoreworICAgIFBhZ2Uq
IHAgPSBwYWdlKCk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsKKyAgICByZXR1cm4gcC0+c2V0dGlu
Z3MoKS0+bWluRE9NVGltZXJJbnRlcnZhbCgpOworfQorCiBFdmVudFRhcmdldCogRG9jdW1lbnQ6
OmVycm9yRXZlbnRUYXJnZXQoKQogewogICAgIHJldHVybiBkb21XaW5kb3coKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM1LDYgKzExMzUsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgY29uc3QgS1VSTCYgdmlydHVhbFVSTCgpIGNvbnN0OyAvLyBTYW1lIGFzIHVy
bCgpLCBidXQgbmVlZGVkIGZvciBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIGltcGxlbWVudCBp
dCB3aXRob3V0IGEgcGVyZm9ybWFuY2UgbG9zcyBmb3IgZGlyZWN0IGNhbGxzLgogICAgIHZpcnR1
YWwgS1VSTCB2aXJ0dWFsQ29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7IC8vIFNhbWUg
YXMgY29tcGxldGVVUkwoKSBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGFib3ZlLgogCisgICAgdmly
dHVhbCBkb3VibGUgZ2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsKKwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVUaXRsZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gNzgzNjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
ICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIkRPTVRp
bWVyLmgiCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJEYXRhYmFzZVRhc2suaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgpAQCAtNDA2LDYgKzQwOCwyNiBAQCBGaWxlVGhyZWFkKiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpmaWxlCiB9CiAjZW5kaWYKIAordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjptaW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVy
dmFsKQoreworICAgIGlmIChnZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgpICE9IG9sZE1pbmltdW1U
aW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6aXRlcmF0b3IgaXRlciA9
IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVuZCgpOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgICAg
IHRpbWVyLT5taW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQob2xkTWluaW11bVRpbWVySW50ZXJ2
YWwpOworICAgICAgICB9CisgICAgfQorfQorCitkb3VibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKQoreworICAgIC8vIFRoZSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uIHJldHVybnMgdGhlIERPTVRpbWVyJ3MgZGVmYXVsdAorICAgIC8vIG1pbmltdW0g
dGltZXIgaW50ZXJ2YWwuIEZJWE1FOiB0byBtYWtlIGl0IHdvcmsgd2l0aCBkZWRpY2F0ZWQKKyAg
ICAvLyB3b3JrZXJzLCB3ZSB3aWxsIGhhdmUgdG8gb3ZlcnJpZGUgaXQgaW4gdGhlIGFwcHJvcHJp
YXRlCisgICAgLy8gc3ViY2xhc3MsIGFuZCBwcm92aWRlIGEgd2F5IHRvIGVudW1lcmF0ZSBhIERv
Y3VtZW50J3MgZGVkaWNhdGVkCisgICAgLy8gd29ya2VycyBzbyB3ZSBjYW4gdXBkYXRlIHRoZW0g
YWxsLgorICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsK
K30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6flRhc2soKQogewogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiA3
ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHN0b3BGaWxlVGhyZWFkKCk7CiAjZW5kaWYKIAorICAgICAgICAvLyBJbnRlcnZh
bCBpcyBpbiBzZWNvbmRzLgorICAgICAgICB2b2lkIG1pbmltdW1UaW1lckludGVydmFsQ2hhbmdl
ZChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOworICAgICAgICB2aXJ0dWFsIGRvdWJs
ZSBnZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAv
LyBFeHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgc2NyaXB0
IGNvbnRleHQuCiAgICAgICAgIC8vIE5vdGU6IEl0IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhl
IHNlY3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlwdCBjb250ZXh0CkBAIC0xNzYsNyArMTgwLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faXRlcmF0aW5nQWN0aXZlRE9NT2Jq
ZWN0czsKICAgICAgICAgYm9vbCBtX2luRGVzdHJ1Y3RvcjsKIAotICAgICAgICBIYXNoTWFwPGlu
dCwgRE9NVGltZXIqPiBtX3RpbWVvdXRzOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBE
T01UaW1lcio+IFRpbWVvdXRNYXA7CisgICAgICAgIFRpbWVvdXRNYXAgbV90aW1lb3V0czsKIAog
I2lmIEVOQUJMRShCTE9CKQogICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJM
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyAr
MzksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IG1heFRpbWVy
TmVzdGluZ0xldmVsID0gNTsKIHN0YXRpYyBjb25zdCBkb3VibGUgb25lTWlsbGlzZWNvbmQgPSAw
LjAwMTsKLWRvdWJsZSBET01UaW1lcjo6c19taW5UaW1lckludGVydmFsID0gMC4wMTA7IC8vIDEw
IG1pbGxpc2Vjb25kcworZG91YmxlIERPTVRpbWVyOjpzX21pbkRlZmF1bHRUaW1lckludGVydmFs
ID0gMC4wMTA7IC8vIDEwIG1pbGxpc2Vjb25kcwogCiBzdGF0aWMgaW50IHRpbWVyTmVzdGluZ0xl
dmVsID0gMDsKIAogRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBi
b29sIHNpbmdsZVNob3QpCiAgICAgOiBTdXNwZW5kYWJsZVRpbWVyKGNvbnRleHQpCiAgICAgLCBt
X2FjdGlvbihhY3Rpb24pCisgICAgLCBtX29yaWdpbmFsVGltZW91dCh0aW1lb3V0KQogewogICAg
IHN0YXRpYyBpbnQgbGFzdFVzZWRUaW1lb3V0SWQgPSAwOwogICAgICsrbGFzdFVzZWRUaW1lb3V0
SWQ7CkBAIC01OCwxMCArNTksNyBAQCBET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4CiAKICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZFRpbWVvdXQobV90aW1l
b3V0SWQsIHRoaXMpOwogCi0gICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNvbmRzID0gbWF4KG9u
ZU1pbGxpc2Vjb25kLCB0aW1lb3V0ICogb25lTWlsbGlzZWNvbmQpOwotCi0gICAgaWYgKGludGVy
dmFsTWlsbGlzZWNvbmRzIDwgc19taW5UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49
IG1heFRpbWVyTmVzdGluZ0xldmVsKQotICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IHNf
bWluVGltZXJJbnRlcnZhbDsKKyAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBpbnRl
cnZhbENsYW1wZWRUb01pbmltdW0odGltZW91dCwgY29udGV4dC0+Z2V0TWluaW11bVRpbWVySW50
ZXJ2YWwoKSk7CiAgICAgaWYgKHNpbmdsZVNob3QpCiAgICAgICAgIHN0YXJ0T25lU2hvdChpbnRl
cnZhbE1pbGxpc2Vjb25kcyk7CiAgICAgZWxzZQpAQCAtMTA4LDEwICsxMDYsMTEgQEAgdm9pZCBE
T01UaW1lcjo6ZmlyZWQoKQogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0
aW1lcnMuCiAgICAgaWYgKGlzQWN0aXZlKCkpIHsKLSAgICAgICAgaWYgKHJlcGVhdEludGVydmFs
KCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IHNfbWluVGltZXJJbnRlcnZhbCkgeworICAgICAgICBk
b3VibGUgbWluaW11bUludGVydmFsID0gY29udGV4dC0+Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwo
KTsKKyAgICAgICAgaWYgKHJlcGVhdEludGVydmFsKCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IG1p
bmltdW1JbnRlcnZhbCkgewogICAgICAgICAgICAgbV9uZXN0aW5nTGV2ZWwrKzsKICAgICAgICAg
ICAgIGlmIChtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAg
ICAgICAgICBhdWdtZW50UmVwZWF0SW50ZXJ2YWwoc19taW5UaW1lckludGVydmFsIC0gcmVwZWF0
SW50ZXJ2YWwoKSk7CisgICAgICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKG1pbmlt
dW1JbnRlcnZhbCAtIHJlcGVhdEludGVydmFsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
Tm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMgYWZ0ZXIgdGhpcyBwb2ludCwgaXQgY2FuIGRl
bGV0ZSB0aGUgdGltZXIuCkBAIC0xNTAsNCArMTQ5LDIyIEBAIHZvaWQgRE9NVGltZXI6OnN0b3Ao
KQogICAgIG1fYWN0aW9uLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRE9NVGltZXI6Om1pbmltdW1UaW1l
ckludGVydmFsQ2hhbmdlZChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAg
aWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgIHJldHVy
bjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRlcnZhbENsYW1wZWRU
b01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAg
ICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKG1f
b3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdldE1pbmltdW1UaW1l
ckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBlZEludGVydmFs
IC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGltZXI6OmludGVy
dmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKQoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1heChvbmVNaWxsaXNl
Y29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlmIChpbnRlcnZhbE1pbGxp
c2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49IG1heFRp
bWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1pbmltdW1U
aW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vjb25kczsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAkocmV2aXNpb24g
NzgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIFNl
dHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIgb3duZWQg
Ynkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdApAQCAtNDYsMTgg
KzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgICAgICAv
LyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAwLjAwMSA9
PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lckludGVydmFsKCkgeyByZXR1
cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1pblRpbWVy
SW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9Cisg
ICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRoaXMgYWxsb3dzIHRoZSBt
aW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5nZWQgaW4gcmVzcG9uc2UK
KyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRvIHRoZSBiYWNrZ3JvdW5k
LgorICAgICAgICB2b2lkIG1pbmltdW1UaW1lckludGVydmFsQ2hhbmdlZChkb3VibGUgb2xkTWlu
aW11bVRpbWVySW50ZXJ2YWwpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NVGltZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRp
bWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpOwog
CisgICAgICAgIGRvdWJsZSBpbnRlcnZhbENsYW1wZWRUb01pbmltdW0oaW50IHRpbWVvdXQsIGRv
dWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCk7CisKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgbWlu
aW11bSBhbGxvd2FibGUgdGltZXIgc2V0dGluZyAoaW4gc2Vjb25kcywgMC4wMDEgPT0gMSBtcyku
CisgICAgICAgIC8vIFRoZXNlIGFyZSBvbmx5IG1vZGlmaWVkIHZpYSBzdGF0aWMgbWV0aG9kcyBp
biBTZXR0aW5ncy4KKyAgICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluVGltZXJJbnRlcnZh
bCgpIHsgcmV0dXJuIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7IH0KKyAgICAgICAgc3RhdGlj
IHZvaWQgc2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluRGVm
YXVsdFRpbWVySW50ZXJ2YWwgPSB2YWx1ZTsgfQorCiAgICAgICAgIGludCBtX3RpbWVvdXRJZDsK
ICAgICAgICAgaW50IG1fbmVzdGluZ0xldmVsOwogICAgICAgICBPd25QdHI8U2NoZWR1bGVkQWN0
aW9uPiBtX2FjdGlvbjsKLSAgICAgICAgc3RhdGljIGRvdWJsZSBzX21pblRpbWVySW50ZXJ2YWw7
CisgICAgICAgIGludCBtX29yaWdpbmFsVGltZW91dDsKKyAgICAgICAgc3RhdGljIGRvdWJsZSBz
X21pbkRlZmF1bHRUaW1lckludGVydmFsOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAgUGFn
ZTo6UGFnZShjb25zdCBQYWdlQ2xpZW50cyYgcGFnZUNsaWVudAogICAgICwgbV9jdXN0b21IVE1M
VG9rZW5pemVyQ2h1bmtTaXplKC0xKQogICAgICwgbV9jYW5TdGFydE1lZGlhKHRydWUpCiAgICAg
LCBtX3ZpZXdNb2RlKFZpZXdNb2RlV2luZG93ZWQpCisgICAgLCBtX21pbmltdW1UaW1lckludGVy
dmFsKFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpKQogewogICAgIGlmICgh
YWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC04
MzIsNiArODMzLDIxIEBAIGJvb2wgUGFnZTo6amF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkgY28K
ICAgICByZXR1cm4gbV9qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQ7CiB9CiAKK3ZvaWQgUGFnZTo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQorewor
ICAgIGRvdWJsZSBvbGRUaW1lckludGVydmFsID0gbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKKyAg
ICBtX21pbmltdW1UaW1lckludGVydmFsID0gbWluaW11bVRpbWVySW50ZXJ2YWw7CisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5taW5pbXVtVGltZXJJbnRl
cnZhbENoYW5nZWQob2xkVGltZXJJbnRlcnZhbCk7CisgICAgfQorfQorCitkb3VibGUgUGFnZTo6
bWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21pbmltdW1UaW1l
ckludGVydmFsOworfQorCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIFNwZWVjaElucHV0KiBQ
YWdlOjpzcGVlY2hJbnB1dCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNzgzNjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiAr
OTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBQYWdlIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZSk7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5n
czsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlRm9yY2VkU3R5bGVS
ZWNhbGNGb3JBbGxQYWdlcygpOwogCkBAIC0yOTgsNiArMjk5LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcigpOwogCisgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91
YmxlKTsKKyAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAg
ICAgICAgT3duUHRyPENocm9tZT4gbV9jaHJvbWU7CiAgICAgICAgIE93blB0cjxTZWxlY3Rpb25D
b250cm9sbGVyPiBtX2RyYWdDYXJldENvbnRyb2xsZXI7CiAKQEAgLTM4Niw2ICszOTAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKICAgICAg
ICAgVmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKKworICAgICAgICBkb3Vi
bGUgbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDkg
KzQzMywyNCBAQCB2b2lkIFNldHRpbmdzOjpzZXRET01QYXN0ZUFsbG93ZWQoYm9vbCBECiAgICAg
bV9pc0RPTVBhc3RlQWxsb3dlZCA9IERPTVBhc3RlQWxsb3dlZDsKIH0KIAordm9pZCBTZXR0aW5n
czo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAg
IERPTVRpbWVyOjpzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2Rv
dWJsZSBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVy
biBET01UaW1lcjo6ZGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoKTsKK30KKwogdm9pZCBTZXR0aW5n
czo6c2V0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgRE9NVGlt
ZXI6OnNldE1pblRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgIG1fcGFnZS0+c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCitkb3VibGUgU2V0dGluZ3M6Om1pbkRPTVRp
bWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBtX3BhZ2UtPm1pbmltdW1UaW1lckludGVydmFs
KCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldFVzZXNQYWdlQ2FjaGUoYm9vbCB1c2VzUGFnZUNh
Y2hlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw4ICsyMDMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERPTVBhc3RlQWxsb3dl
ZChib29sKTsKICAgICAgICAgYm9vbCBpc0RPTVBhc3RlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNET01QYXN0ZUFsbG93ZWQ7IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gSW50ZXJ2YWwgc3BlY2lmaWVkIGluIHNl
Y29uZHMuCisgICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNpZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0
aWMgZG91YmxlIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7CiAgICAgICAgIAorICAgICAg
ICB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gUGVyLXBhZ2U7IGluaXRp
YWxpemVkIHRvIGRlZmF1bHQgdmFsdWUuCisgICAgICAgIGRvdWJsZSBtaW5ET01UaW1lckludGVy
dmFsKCk7CisKICAgICAgICAgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOwogICAgICAgICBi
b29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXNQYWdlQ2FjaGU7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDggQEAg
cHVibGljOgogICAgIGRvdWJsZSBuZXh0RmlyZUludGVydmFsKCkgY29uc3Q7CiAgICAgZG91Ymxl
IHJlcGVhdEludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCi0g
ICAgdm9pZCBhdWdtZW50UmVwZWF0SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IHNldE5leHRGaXJl
VGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsg
fQorICAgIHZvaWQgYXVnbWVudEZpcmVJbnRlcnZhbChkb3VibGUgZGVsdGEpIHsgc2V0TmV4dEZp
cmVUaW1lKG1fbmV4dEZpcmVUaW1lICsgZGVsdGEpOyB9CisgICAgdm9pZCBhdWdtZW50UmVwZWF0
SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IGF1Z21lbnRGaXJlSW50ZXJ2YWwoZGVsdGEpOyBtX3Jl
cGVhdEludGVydmFsICs9IGRlbHRhOyB9CiAKICAgICBzdGF0aWMgdm9pZCBmaXJlVGltZXJzSW5O
ZXN0ZWRFdmVudExvb3AoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzgzNzgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcg
bWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpXZWJQYWdlKToKKwogMjAxMS0wMi0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA3ODM2
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCAKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShtX3BhZ2VHcm91cC0+aWRl
bnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwotICAgIFNldHRpbmdzOjpz
ZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1p
bkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgbV9kcmF3aW5nQXJlYSA9IERyYXdpbmdB
cmVhOjpjcmVhdGUodGhpcywgcGFyYW1ldGVycyk7CiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFt
ZTo6Y3JlYXRlTWFpbkZyYW1lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc4Mzc4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBv
biBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAg
ICAgICAgLSBBZGRlZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCwKKyAgICAgICAgICAg
IGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsLCBzZXRNaW5ET01UaW1lckludGVydmFsLCBhbmQK
KyAgICAgICAgICAgIG1pbkRPTVRpbWVySW50ZXJ2YWwuCisgICAgICAgICogc3JjL1dlYktpdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemUpOgorICAgICAgICAgIC0gQ2hhbmdlZCB0
byB1c2UgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsIHJhdGhlcgorICAg
ICAgICAgICAgdGhhbiBET01UaW1lciBkaXJlY3RseS4KKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OnNldERlZmF1bHRNaW5E
T01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpz
ZXRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBs
OjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBtZXRo
b2RzIG9uIFdlYlNldHRpbmdzLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKwog
MjAxMS0wMi0xMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEw
OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlv
bkVuYWJsZWQoYm9vbCkgPSAwOwogCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXREZWZh
dWx0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGRv
dWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRN
aW5ET01UaW1lckludGVydmFsKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIG1pbkRP
TVRpbWVySW50ZXJ2YWwoKSA9IDA7CisKKwogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygp
IHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAkocmV2aXNp
b24gNzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJLaXQuaCIKIAotI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNp
bmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQu
aCIKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdENsaWVudCogd2ViS2l0
Q2xpZQogICAgIC8vIGNvZGVkIHdlYnNpdGVzIG91dCB0aGVyZSB3aGljaCBkbyBjcmVhdGUgQ1BV
LXNwaW5uaW5nIGxvb3BzLiAgVXNpbmcKICAgICAvLyA0bXMgcHJldmVudHMgdGhlIENQVSBmcm9t
IHNwaW5uaW5nIHRvbyBidXNpbHkgYW5kIHByb3ZpZGVzIGEgYmFsYW5jZQogICAgIC8vIGJldHdl
ZW4gQ1BVIHNwaW5uaW5nIGFuZCB0aGUgc21hbGxlc3QgcG9zc2libGUgaW50ZXJ2YWwgdGltZXIu
Ci0gICAgV2ViQ29yZTo6RE9NVGltZXI6OnNldE1pblRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAg
IFdlYkNvcmU6OlNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7
CiAKICAgICAvLyBUaGVyZSBhcmUgc29tZSBjb2RlIHBhdGhzIChmb3IgZXhhbXBsZSwgcnVubmlu
ZyBXZWJLaXQgaW4gdGhlIGJyb3dzZXIKICAgICAvLyBwcm9jZXNzIGFuZCBjYWxsaW5nIGludG8g
TG9jYWxTdG9yYWdlIGJlZm9yZSBhbnl0aGluZyBlbHNlKSB3aGVyZSB0aGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24g
NzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNCArMzQ0LDI0IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRJbnRlcmFjdGl2ZUZvcm0KICAgICBtX3NldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1W
YWxpZGF0aW9uRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nczo6c2V0RGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIFNldHRpbmdz
OjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2RvdWJsZSBX
ZWJTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwordm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAg
IG1fc2V0dGluZ3MtPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCitkb3Vi
bGUgV2ViU2V0dGluZ3NJbXBsOjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4g
bV9zZXR0aW5ncy0+bWluRE9NVGltZXJJbnRlcnZhbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7CisgICAgdmly
dHVhbCBkb3VibGUgbWluRE9NVGltZXJJbnRlcnZhbCgpOwogCiBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
NzgzNzgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJh
c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMx
MgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2Qu
CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfc2V0X21pbmltdW1fdGltZXJfaW50ZXJ2YWwpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMTEtMDItMTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3ODMz
MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJl
dmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDk0LDYgKzUwOTQsMTIgQEAgR3RrTWVudSogd2Via2l0
X3dlYl92aWV3X2dldF9jb250ZXh0X21lbgogI2VuZGlmCiB9CiAKK3ZvaWQgd2Via2l0X3dlYl92
aWV3X3NldF9taW5pbXVtX3RpbWVyX2ludGVydmFsKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIGdk
b3VibGUgaW50ZXJ2YWxfaW5fc2Vjb25kcykKK3sKKyAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJW
aWV3KTsKKyAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbChpbnRl
cnZhbF9pbl9zZWNvbmRzKTsKK30KKwogdm9pZCB3ZWJWaWV3RW50ZXJGdWxsc2NyZWVuKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlLT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0MDMsMTMgQEAg
d2Via2l0X3dlYl92aWV3X2dldF9kb21fZG9jdW1lbnQgICAgICAgIAogV0VCS0lUX0FQSSBXZWJL
aXRWaWV3cG9ydEF0dHJpYnV0ZXMqCiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3ZpZXdwb3J0X2F0dHJp
YnV0ZXMgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAgKndlYlZpZXcpOwogCitXRUJLSVRf
QVBJIGdkb3VibGUKK3dlYmtpdF93ZWJfdmlld19taW5pbXVtX2RlZmF1bHRfdGltZXJfaW50ZXJ2
YWwgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViVmlldyk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X3dlYl92aWV3X3NldF9taW5pbXVtX3RpbWVyX2ludGVydmFsICAgICAgKFdlYktpdFdl
YlZpZXcgICAgICAgICp3ZWJWaWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgICAgICAgIGludGVydmFsX2luX3NlY29uZHMp
OworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDc4Mzc4KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFs
bG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBi
YXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQz
MTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVz
dENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9k
LgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lmg6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgorICAgICAgICAoK1tXZWJWaWV3
IGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbF0pOgorICAgICAgICAoLVtXZWJWaWV3IHNldE1p
bmltdW1UaW1lckludGVydmFsOl0pOgorCiAyMDExLTAyLTEwICBOYXRlIENoYXBpbiAgPGphcGhl
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjMsNiAr
NjYzLDIyIEBAIEBpbnRlcmZhY2UgV2ViVmlldyA6IE5TVmlldwogKi8KIC0gKE5TSW1hZ2UgKilt
YWluRnJhbWVJY29uOwogCisvKiEKKyAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRl
cnZhbAorICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGVmYXVsdCBtaW5pbXVtIHRpbWVyIGludGVy
dmFsLgorKi8KKysgKGRvdWJsZSlkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWw7CisKKy8qIQor
ICAgIEBtZXRob2Qgc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6CisgICAgQGRpc2N1c3Npb24gU2V0
cyB0aGUgbWluaW11bSBpbnRlcnZhbCBmb3IgRE9NVGltZXJzIGluIHRoaXMgV2ViVmlldy4gVGhp
cyBtZXRob2QgaXMKKyAgICBleHBvc2VkIGhlcmUgaW4gdGhlIE1hYyBwb3J0IHJhdGhlciB0aGFu
IHRocm91Z2ggV2ViUHJlZmVyZW5jZXMgKHdoaWNoIGdlbmVyYWxseQorICAgIGdvdmVybnMgU2V0
dGluZ3MpIGJlY2F1c2UgdGhpcyB2YWx1ZSBpcyBzb21ldGhpbmcgYWRqdXN0ZWQgYXQgcnVuIHRp
bWUsIG5vdCBzZXQKKyAgICBnbG9iYWxseSB2aWEgImRlZmF1bHRzIHdyaXRlIi4KKyAgICBAcGFy
YW0gaW50ZXJ2YWxJblNlY29uZHMgVGhlIG5ldyBtaW5pbXVtIHRpbWVyIGludGVydmFsLCBpbiBz
ZWNvbmRzLgorKi8KKy0gKHZvaWQpc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6KGRvdWJsZSlpbnRl
cnZhbEluU2Vjb25kczsKKwogQGVuZAogCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNyArNjk0LDcgQEAgLSAodm9pZClfY29t
bW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICAKICAgICAgICAgLy8gSW5pdGlh
bGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KICAgICAgICAgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjppbml0aWFsaXplKCk7Ci0gICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVy
dmFsKDAuMDA0KTsKKyAgICAgICAgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKDAuMDA0KTsKIAogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwog
ICAgIH0KQEAgLTQxMzMsNiArNDEzMywxNyBAQCAtIChOU1ZpZXcgKilwcmV2aW91c1ZhbGlkS2V5
VmlldwogICAgIHJldHVybiBbcHJldmlvdXNWaWV3IHByZXZpb3VzVmFsaWRLZXlWaWV3XTsKIH0K
IAorKyAoZG91YmxlKWRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAoreworICAgIHJldHVybiBT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKworLSAodm9pZClzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbDooZG91YmxlKWludGVydmFsSW5TZWNvbmRzCit7CisgICAgaWYg
KF9wcml2YXRlLT5wYWdlKQorICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS0+c2V0
TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbEluU2Vjb25kcyk7Cit9CisKIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYklCQWN0aW9ucykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3ODM3OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDItMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXIt
cGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5
b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwg
bWV0aG9kLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoUVdlYlNldHRp
bmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6bWlu
RE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorCiAyMDEx
LTAyLTExICBWaWF0Y2hlc2xhdiBPc3RhcGVua28gIDxvc3RhcGVua28udmlhdGNoZXNsYXZAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvciBBcm5lIFZlc3Riw7guCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDc4MzY4KQorKysgU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEy
NCw2ICsxMTI0LDI5IEBAIHZvaWQgUVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmEK
ICNlbmRpZgogfQogCit2b2lkIFFXZWJTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50
ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2RvdWJsZSBRV2ViU2V0dGluZ3M6OmRlZmF1
bHRNaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsKCk7Cit9CisKK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXRNaW5ET01U
aW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBpZiAoZC0+c2V0dGluZ3MpCisg
ICAgICAgIGQtPnNldHRpbmdzLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKK30K
KworZG91YmxlIFFXZWJTZXR0aW5nczo6bWluRE9NVGltZXJJbnRlcnZhbCgpCit7CisgICAgaWYg
KCFkLT5zZXR0aW5ncykKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KCk7CisgICAgcmV0dXJuIGQtPnNldHRpbmdzLT5taW5ET01UaW1lckludGVydmFsKCk7Cit9CisK
IC8qIQogICAgIFxmbiBRV2ViU2V0dGluZ3NQcml2YXRlKiBRV2ViU2V0dGluZ3M6OmhhbmRsZSgp
IGNvbnN0CiAgICAgXGludGVybmFsCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
aAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBlbmFibGVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBRU3RyaW5nJiBwYXRoID0gUVN0
cmluZygpKTsKIAorICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KGRvdWJsZSk7CisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgp
OworICAgIHZvaWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOworICAgIGRvdWJsZSBt
aW5ET01UaW1lckludGVydmFsKCk7CisKICAgICBpbmxpbmUgUVdlYlNldHRpbmdzUHJpdmF0ZSog
aGFuZGxlKCkgY29uc3QgeyByZXR1cm4gZDsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzgzNzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBv
biBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxl
bWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCBtZXRob2QuCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3LmlkbDoKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmRlZmF1bHRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJWaWV3OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6
CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAgICAgKiBXZWJWaWV3Lmg6
CisKIDIwMTEtMDItMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MjksNiArNzI5LDE4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6Y2xvc2UKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91Ymxl
KiBpbnRlcnZhbCkKK3sKKyAgICAqaW50ZXJ2YWwgPSBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRp
bWVySW50ZXJ2YWwoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwp
Cit7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVy
dmFsKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBXZWJWaWV3OjpyZXBhaW50KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHdpbmRvd1JlY3QsIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wg
aW1tZWRpYXRlLCBib29sIHJlcGFpbnRDb250ZW50T25seSkKIHsKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCkBAIC0yNjExLDcgKzI2MjMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OmluaXRXCiAjZW5kaWYKICAgICAgICAgV2ViS2l0U2V0QXBwbGljYXRp
b25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpOwogICAgICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmluaXRpYWxpemUoKTsKLSAgICAgICAgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwo
MC4wMDQpOworICAgICAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwo
MC4wMDQpOwogCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDEyIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9zZSgpOwogCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlZmF1bHRNaW5pbXVtVGltZXJJ
bnRlcnZhbCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBkb3VibGUgKmludGVydmFsKTsK
KworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCgKKyAgICAgICAgLyogW2luXSAqLyBkb3VibGUpOworCiAgICAgLy8gSVdlYklCQWN0
aW9ucwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRha2VTdHJpbmdV
UkxGcm9tKCAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXcuaWRs
CShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZp
ZXcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03MzcsNiArNzM3LDIyIEBAIGludGVyZmFjZSBJV2Vi
VmlldyA6IElVbmtub3duCiAgICAgICAgIGZyb20gZG9pbmcgYW55IG1vcmUgbG9hZGluZyBhbmQg
ZmlyaW5nIGFueSBmdXR1cmUgZGVsZWdhdGUgbWV0aG9kcy4KICAgICAqLwogICAgIEhSRVNVTFQg
Y2xvc2UoKTsKKworICAgIC8qIQorICAgICAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJ
bnRlcnZhbAorICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIHRoZSBkZWZhdWx0IG1pbmltdW0g
aW50ZXJ2YWwgZm9yIERPTVRpbWVycyBvbiBhbGwgcGFnZXMsIG5vdAorICAgICAgICBqdXN0IHRo
ZSBvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlp
bnRlcnZhbDsKKyAgICAqLworICAgIEhSRVNVTFQgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFs
KFtvdXQsIHJldHZhbF0gZG91YmxlKiBpbnRlcnZhbCk7CisKKyAgICAvKiEKKyAgICAgICAgQG1l
dGhvZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgICAgICBAZGlzY3Vzc2lvbiBTZXRzIHRo
ZSBtaW5pbXVtIGludGVydmFsIGZvciBET01UaW1lcnMgb24gdGhlIHdlYiBwYWdlIGFzc29jaWF0
ZWQKKyAgICAgICAgd2l0aCB0aGUgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlpbnRlcnZh
bDsKKyAgICAqLworICAgIEhSRVNVTFQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoW2luXSBkb3Vi
bGUgaW50ZXJ2YWwpOwogfQogCiAvKgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzgzNzgpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNz
ZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZh
bCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgc2V0
TWluaW11bVRpbWVySW50ZXJ2YWwgaW4KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgZm9y
IGFsbCBwb3J0cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJl
c2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBhZ2U6OnJlc2V0U2V0dGluZ3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCk6CisKIDIwMTEtMDItMTEgIFNhaWxlc2ggQWdyYXdhbCAgPHNhaWxA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDc4MzY4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI2LDYgKzE5MjYsMjAgQEAgc3RhdGljIGJvb2wg
c2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpTQ29udAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0
aWMgSlNWYWx1ZVJlZiBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGRvdWJsZSBtaW5p
bXVtID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsK
KyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TWluaW11bVRpbWVySW50
ZXJ2YWwobWluaW11bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKIHN0YXRpYyB2b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUo
SlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUob2JqZWN0KSk7CkBAIC0yMDczLDYgKzIwODcsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCBz
ZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2
YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIi
LCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAs
NiArMzEwLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3V2lk
dGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZpZXdIZWlnaHQ7CiAKKyAgICB2b2lk
IHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSk7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0
VGVzdENvbnRyb2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDc4MzY4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoInNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgJkxh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKTsKKyAgICBiaW5kTWV0aG9kKCJz
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VPcmllbnRhdGlv
biIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbik7CkBAIC0xNTkzLDMgKzE1OTQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6aGFzU3BlbGxpbmdNYQogICAgICAgICByZXR1cm47CiAgICAgcmVzdWx0LT5zZXQo
bV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGlu
Z01hcmtlckZvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9JbnQzMigp
KSk7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVy
dmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAx
IHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hl
bGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChhcmd1bWVu
dHNbMF0udG9Eb3VibGUoKSk7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDc4MzY4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtlclRl
eHRGb3JMaXN0SXRlbShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBoYXNTcGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0
aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICB2b2lkIHNldFdvcmtRdWV1
ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAko
cmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjYsOCArMTIyNiwxMCBAQCB2b2lkIFdlYlZp
ZXdIb3N0OjpyZXNldCgpCiAgICAgbV93aW5kb3dSZWN0ID0gV2ViUmVjdCgpOwogICAgIG1fcGFp
bnRSZWN0ID0gV2ViUmVjdCgpOwogCi0gICAgaWYgKG1fd2ViV2lkZ2V0KQorICAgIGlmIChtX3dl
YldpZGdldCkgewogICAgICAgICB3ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZXROYW1lKFdlYlN0
cmluZygpKTsKKyAgICAgICAgd2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lcklu
dGVydmFsKFdlYlNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpKTsKKyAgICB9
CiB9CiAKIHZvaWQgV2ViVmlld0hvc3Q6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQoYm9vbCBlbmFibGVkKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5k
ZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJl
bmRlclRyZWUuY3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOCw2ICs0MjgsNyBAQCBz
dGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsCiAgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKGluc3BlY3RvciksICJqYXZhc2NyaXB0LXByb2ZpbGluZy1lbmFibGVkIiwgRkFM
U0UsIE5VTEwpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF96b29tX2xldmVsKHdlYlZpZXcs
IDEuMCk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9taW5pbXVtX3RpbWVyX2ludGVydmFsKHdl
YlZpZXcsIHdlYmtpdF93ZWJfdmlld19taW5pbXVtX2RlZmF1bHRfdGltZXJfaW50ZXJ2YWwod2Vi
VmlldykpOwogCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlTGlzdHMoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg4MCwzICs4ODAsOSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRT
ZXJpYWxpemVICiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBpZiBuZWVkZWQgZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OC4KIH0KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1U
aW1lckludGVydmFsKQoreworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRf
bWluaW11bV90aW1lcl9pbnRlcnZhbCh3ZWJWaWV3LCBtaW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZp
c2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTAxNyw2ICsxMDE3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbd2ViVmlldyB1bmRvTWFuYWdlcl0gcmVtb3Zl
QWxsQWN0aW9uc107CiAgICAgW1dlYlZpZXcgX3JlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3Vw
Olt3ZWJWaWV3IGdyb3VwTmFtZV1dOwogICAgIFtbd2ViVmlldyB3aW5kb3ddIHNldEF1dG9kaXNw
bGF5Ok5PXTsKKyAgICBbd2ViVmlldyBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDpbV2ViVmlldyBk
ZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdXTsKIAogICAgIHJlc2V0RGVmYXVsdHNUb0NvbnNp
c3RlbnRWYWx1ZXMoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEwMDMsMyArMTAwMyw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNl
cmlhbGl6ZUgKIHsKICAgICBbV2ViVmlldyBfc2V0TG9hZFJlc291cmNlc1NlcmlhbGx5OnNlcmlh
bGl6ZV07CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBbW21haW5GcmFtZSB3
ZWJWaWV3XSBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDptaW5pbXVtVGltZXJJbnRlcnZhbF07Cit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAko
cmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSw4IEBAIHZvaWQgV2ViUGFnZTo6
cmVzZXRTZXR0aW5ncygpCiAgICAgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hl
KDApOyAvLyByZXNldCB0byBkZWZhdWx0CiAgICAgc2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hl
ZXRVcmwoUVVybCgpKTsgLy8gcmVzZXQgdG8gZGVmYXVsdAogCisgICAgc2V0dGluZ3MoKS0+c2V0
TWluRE9NVGltZXJJbnRlcnZhbChRV2ViU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKCkpOworCiAgICAgbV9wZW5kaW5nR2VvbG9jYXRpb25SZXF1ZXN0cy5jbGVhcigpOwogfQog
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM2LDUgKzgzNiwx
MCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRVUkxUb1JlZGlyCiAgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVSTFRvUmVkaXJlY3Qob3JpZ2luLCBkZXN0aW5hdGlvbik7
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFs
KGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5z
ZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKG1pbmltdW1UaW1lckludGVydmFsKTsK
K30KKwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0aCA9
IDgwMDsKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3SGVpZ2h0
ID0gNjAwOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RD
b250cm9sbGVyUXQuaAkocmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw2ICsyNTIs
OCBAQCBwdWJsaWMgc2xvdHM6CiAgICAgUVN0cmluZyBwYWdlUHJvcGVydHkoY29uc3QgUVN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcik7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVT
aGVldChjb25zdCBRU3RyaW5nJiBzb3VyY2VDb2RlKTsKIAorICAgIHZvaWQgc2V0TWluaW11bVRp
bWVySW50ZXJ2YWwoZG91YmxlKTsKKwogcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHByb2Nlc3NX
b3JrKCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDMsNiArODQzLDEwIEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBpZiAoRkFJTEVEKGZyYW1lLT53
ZWJWaWV3KCZ3ZWJWaWV3KSkpIAogICAgICAgICByZXR1cm47CiAKKyAgICBkb3VibGUgbWluaW11
bUludGVydmFsID0gMDsKKyAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPmRlZmF1bHRNaW5pbXVt
VGltZXJJbnRlcnZhbCgmbWluaW11bUludGVydmFsKSkpCisgICAgICAgIHdlYlZpZXctPnNldE1p
bmltdW1UaW1lckludGVydmFsKG1pbmltdW1JbnRlcnZhbCk7CisKICAgICB3ZWJWaWV3LT5zZXRQ
b2xpY3lEZWxlZ2F0ZSgwKTsKICAgICBwb2xpY3lEZWxlZ2F0ZS0+c2V0UGVybWlzc2l2ZShmYWxz
ZSk7CiAgICAgcG9saWN5RGVsZWdhdGUtPnNldENvbnRyb2xsZXJUb05vdGlmeURvbmUoMCk7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAJKHJldmlzaW9uIDc4MzY4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMCwzICsx
NDMwLDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCit7Cisg
ICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZp
ZXcoJndlYlZpZXcpKSkKKyAgICAgICAgcmV0dXJuOworICAgIHdlYlZpZXctPnNldE1pbmltdW1U
aW1lckludGVydmFsKG1pbmltdW1UaW1lckludGVydmFsKTsKK30KSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDc4Mzc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTEtMDItMTEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNv
bnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKwor
ICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQt
cGFydC0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5j
cmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAtIENo
YWluZWQgdGVzdHMgKHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIHJ1bi13ZWJraXQtdGVzdHMK
KyAgICAgICAgICAgIGhhcm5lc3Mgd2lsbCBydW4gdGhlbSBzZXF1ZW50aWFsbHksIHdoaWNoIGlz
IGEgcmVhc29uYWJseSBnb29kCisgICAgICAgICAgICBhc3N1bXB0aW9uKSB3aGljaCB2ZXJpZnkg
dGhhdCB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBpcworICAgICAgICAgICAgcmVzZXQgYmV0
d2VlbiB0ZXN0cy4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2
YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICAgLSBWZXJpZmllcyB0aGF0IGlu
Y3JlYXNpbmcgdGhlIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwgY2F1c2VzCisgICAgICAgICAgICBm
YXN0IHRpbWVycyB0byBydW4gc2xvd2x5LgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3Jl
YXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwu
aHRtbDogQWRkZWQuCisgICAgICAgICAgLSBWZXJpZmllcyB0aGF0IGRlY3JlYXNpbmcgdGhlIG1p
bmltdW0gdGltZXIgaW50ZXJ2YWwgY2F1c2VzCisgICAgICAgICAgICBwcmV2aW91c2x5IHNsb3dl
ZC1kb3duIHRpbWVycyB0byBiZSByZWV2YWx1YXRlZCBpbW1lZGlhdGVseS4KKwogMjAxMS0wMi0x
MSAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwt
YW5kLXJlc2V0LXBhcnQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVz
ZXQtcGFydC0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQt
cmVzZXQtcGFydC0xLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
IG1zZzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisK
K2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbG9nKCJUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIExheW91dFRlc3RDb250
cm9sbGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRl
biB0aGFuIHR3aWNlIGEgc2Vjb25kLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmlt
dW1UaW1lckludGVydmFsKDAuNSk7CisKKyAgICAvLyBQYXJ0IDIgb2YgdGhpcyB0ZXN0ICh3aGlj
aCB3aWxsIGxpa2VseSBiZSBleGVjdXRlZCBpbW1lZGlhdGVseQorICAgIC8vIGFmdGVyIHRoaXMg
b25lIGJ5IHRoZSBoYXJuZXNzKSB2ZXJpZmllcyB0aGF0IHRoZSBtaW5pbXVtIHRpbWVyCisgICAg
Ly8gaW50ZXJ2YWwgaXMgcmVzZXQgYmV0d2VlbiB0ZXN0cy4KKworICAgIGxvZygiUEFTUyIpOwor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4t
aW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1w
YXJ0LTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
dGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQt
Mi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQg
PSAwOworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAg
c2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGlt
ZW91dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVk
IHNvbWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVy
LmNwcC4KKyAgICBpZiAoY291bnQgPiAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxz
ZQorICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAg
ICAvLyBUaW1lcnMgc2hvdWxkIGJlIHJ1bm5pbmcgYXQgZnVsbCBzcGVlZCwgbm90IGF0IHRoZSB0
aHJvdHRsZWQKKyAgICAvLyByYXRlIHNldCBieSBwYXJ0IDEgb2YgdGhpcyB0ZXN0LgorCisgICAg
c2V0VGltZW91dChzbG93VGltZW91dEhhbmRsZXIsIDEwMDApOworICAgIHNldFRpbWVvdXQoZmFz
dFRpbWVvdXRIYW5kbGVyLCAxKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBA
CitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWlu
LWludGVydmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNn
KSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICBlbGVtZW50LnRleHRDb250ZW50ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZWxlbWVudCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJiciIpKTsKK30KKwordmFyIGNvdW50ID0gMDsKK2Z1bmN0aW9uIGZhc3RUaW1l
b3V0SGFuZGxlcigpIHsKKyAgICArK2NvdW50OworICAgIHNldFRpbWVvdXQoZmFzdFRpbWVvdXRI
YW5kbGVyLCAxKTsKK30KKworZnVuY3Rpb24gc2xvd1RpbWVvdXRIYW5kbGVyKCkgeworICAgIC8v
IE5vdGU6IHRoZSBjb3VudCB0aHJlc2hvbGQgaXMgdGllZCBzb21ld2hhdCB0byB0aGUKKyAgICAv
LyBtYXhUaW1lck5lc3RpbmdMZXZlbCBpbiBET01UaW1lci5jcHAuCisgICAgaWYgKGNvdW50IDwg
MTApCisgICAgICAgIGxvZygiUEFTUyIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlMIC0t
IHRpbWVvdXQgcmFuICIgKyBjb3VudCArICIgdGltZXMiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbG9nKCJUaGlzIHRlc3QgcmVx
dWlyZXMgdGhlIExheW91dFRlc3RDb250cm9sbGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgLy8gTWFrZSB0aW1lcnMgcnVuIG5v
IG1vcmUgb2Z0ZW4gdGhhbiB0d2ljZSBhIHNlY29uZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgwLjUpOworCisgICAgc2V0VGltZW91dChzbG93VGlt
ZW91dEhhbmRsZXIsIDEwMDApOworICAgIHNldFRpbWVvdXQoZmFzdFRpbWVvdXRIYW5kbGVyLCAx
KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2Ut
dGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVy
dmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Rp
bWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3Jl
YXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKwordmFyIGNvdW50ID0gMDsKK2Z1bmN0aW9u
IGZhc3RUaW1lb3V0SGFuZGxlcigpIHsKKyAgICArK2NvdW50OworICAgIHNldFRpbWVvdXQoZmFz
dFRpbWVvdXRIYW5kbGVyLCAxKTsKK30KKworZnVuY3Rpb24gc2xvd1RpbWVvdXRIYW5kbGVyKCkg
eworICAgIC8vIE5vdGU6IHRoZSBjb3VudCB0aHJlc2hvbGQgaXMgdGllZCBzb21ld2hhdCB0byB0
aGUKKyAgICAvLyBtYXhUaW1lck5lc3RpbmdMZXZlbCBpbiBET01UaW1lci5jcHAuCisgICAgaWYg
KGNvdW50ID4gMTApCisgICAgICAgIGxvZygiUEFTUyIpOworICAgIGVsc2UKKyAgICAgICAgbG9n
KCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBjb3VudCArICIgdGltZXMiKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbG9nKCJUaGlz
IHRlc3QgcmVxdWlyZXMgdGhlIExheW91dFRlc3RDb250cm9sbGVyIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgLy8gTWFrZSB0aW1l
cnMgcnVuIG5vIG1vcmUgb2Z0ZW4gdGhhbiBvbmNlIHBlciBzZWNvbmQuCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMS4wKTsKKworICAgIHNldFRpbWVv
dXQoc2xvd1RpbWVvdXRIYW5kbGVyLCA1MDApOworICAgIHNldFRpbWVvdXQoZmFzdFRpbWVvdXRI
YW5kbGVyLCAxKTsKKworICAgIC8vIEFsbG93IHRpbWVycyB0byBydW4gcXVpY2tseSBhZ2Fpbi4K
KyAgICAvLyBJZiB0aGlzIGRvZXNuJ3QgY2F1c2UgdGltZXJzIHRvIGdldCByZS1ldmFsdWF0ZWQg
aW1tZWRpYXRlbHksCisgICAgLy8gdGhlIGZhc3QgdGltZW91dCBoYW5kbGVyIHdvbid0IGdldCBj
YWxsZWQgZm9yIHVwIHRvIGEgc2Vjb25kLAorICAgIC8vIHdoaWNoIHdvdWxkIGxlYWQgdG8gcG9v
ciByZXNwb25zaXZlbmVzcy4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCgwLjAwNCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82204</attachid>
            <date>2011-02-11 15:59:26 -0800</date>
            <delta_ts>2011-02-14 15:23:53 -0800</delta_ts>
            <desc>Fixed GTK build failure</desc>
            <filename>bug-54312-20110211155925.patch</filename>
            <type>text/plain</type>
            <size>57371</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4Mzc4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMTEtMDItMTEgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4gTmV3IEFQSXMgd2VyZSBuZWNlc3NhcmlseSBh
ZGRlZCB0bworICAgICAgICBhbGwgcG9ydHMgdG8gYWxsb3cgaW1wbGVtZW50aW5nIHRoaXMgbWV0
aG9kIGFuZCByZXNldHRpbmcgdGhlCisgICAgICAgIHN0YXRlIGZvciBlYWNoIG5ldyB0ZXN0LiBC
ZWNhdXNlIHRoZSBuZXcgc2V0dGluZ3MgYXJlbid0CisgICAgICAgIHBlcnNpc3RlbnQsIGEgZGVj
aXNpb24gd2FzIG1hZGUgZm9yIGVhY2ggcG9ydCB3aGV0aGVyIHRvIGV4cG9zZQorICAgICAgICB0
aGUgbmV3IEFQSXMgaW4gdGhlIHBvcnQncyBTZXR0aW5ncy1saWtlIG9iamVjdCwgb3IgdmlhIGEK
KyAgICAgICAgZGlmZmVyZW50IGNsYXNzIChnZW5lcmFsbHksIGluIHRoZSBjb25jZXB0IG9mIFdl
YlZpZXcpLgorCisgICAgICAgIElkZWFsbHkgY2hhbmdpbmcgdGhlIHBhZ2UncyBtaW5pbXVtIHRp
bWVyIGludGVydmFsIHdvdWxkIGFmZmVjdAorICAgICAgICBkZWRpY2F0ZWQgd29ya2VycywgYnV0
IHRoaXMgaXMgdG9vIG11Y2ggdG8gZG8gaW4gYW4gaW5pdGlhbCBwYXRjaCwKKyAgICAgICAgc28g
YSBGSVhNRSBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBUZXN0ZWQgd2l0aDoKKyAgICAgICAg
ICAtIFRoZSBuZXcgbGF5b3V0IHRlc3RzIG9uIHRoZSBXZWJLaXQgTWFjIGFuZCBDaHJvbWl1bSAo
TWFjLAorICAgICAgICAgICAgTGludXgpIERSVCBwb3J0cy4KKyAgICAgICAgICAtIEhvb2tlZCB1
cCB0aGUgbmV3IEFQSSBpbiBDaHJvbWl1bSBhbmQgcmFuIHNvbWUgc2ltcGxlIG1hbnVhbAorICAg
ICAgICAgICAgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldE1pbmltdW1UaW1l
ckludGVydmFsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogcGFnZS9ET01U
aW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9NVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVy
OjptaW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGlt
ZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bSk6CisgICAgICAgICogcGFnZS9ET01UaW1lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6bWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6bWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5oOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpU
aW1lckJhc2U6OmF1Z21lbnRGaXJlSW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJC
YXNlOjphdWdtZW50UmVwZWF0SW50ZXJ2YWwpOgorCiAyMDExLTAyLTExICBNaWtlIFJlZWQgIDxy
ZWVkQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzk1LDYgKzc5NSw3IEBAIF9fWk43
V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWwKIF9fWk43V2ViQ29yZThTZXR0aW5n
czE4c2V0TWluaW11bUZvbnRTaXplRWkKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZG
b250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4
c2V0V2ViQXVkaW9FbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE5bWluRE9NVGltZXJJ
bnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOXNldFNob3dEZWJ1Z0JvcmRlcnNFYgog
X19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9t
aWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEZhbnRhc3lGb250RmFtaWx5RVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKQEAgLTgyNCw2ICs4MjUsNyBAQCBfX1pON1dlYkNvcmU4U2V0
dGluZ3MyNXNldE5lZWRzTGVvcGFyZE1hCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRTaG91bGRQcmlu
dEJhY2tncm91bmRzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbkVSS05TXzRLVVJMRQorX19aTjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNnNldERlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXROZWVk
c1NpdGVTcGVjaWZpY1F1aXJrc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldEZUUERpcmVj
dG9yeVRlbXBsYXRlUGF0aEVSS04zV1RGNlN0cmluZ0UKQEAgLTgzMyw2ICs4MzUsNyBAQCBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyN3NldFNwYXRpYWxOYXZpZ2F0CiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MyOHNldEZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MjlzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
OXNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczI5
c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWxFZAogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlz
ZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMHNl
dEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMXNl
dEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRFYgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMzksNiArMjIzOSwxNCBAQCBLVVJMIERvY3VtZW50Ojp2aXJ0
dWFsQ29tcGxldGVVUkwoY29uc3QgCiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCk7CiB9CiAK
K2RvdWJsZSBEb2N1bWVudDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKQoreworICAgIFBhZ2Uq
IHAgPSBwYWdlKCk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsKKyAgICByZXR1cm4gcC0+c2V0dGlu
Z3MoKS0+bWluRE9NVGltZXJJbnRlcnZhbCgpOworfQorCiBFdmVudFRhcmdldCogRG9jdW1lbnQ6
OmVycm9yRXZlbnRUYXJnZXQoKQogewogICAgIHJldHVybiBkb21XaW5kb3coKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM1LDYgKzExMzUsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgY29uc3QgS1VSTCYgdmlydHVhbFVSTCgpIGNvbnN0OyAvLyBTYW1lIGFzIHVy
bCgpLCBidXQgbmVlZGVkIGZvciBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIGltcGxlbWVudCBp
dCB3aXRob3V0IGEgcGVyZm9ybWFuY2UgbG9zcyBmb3IgZGlyZWN0IGNhbGxzLgogICAgIHZpcnR1
YWwgS1VSTCB2aXJ0dWFsQ29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7IC8vIFNhbWUg
YXMgY29tcGxldGVVUkwoKSBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGFib3ZlLgogCisgICAgdmly
dHVhbCBkb3VibGUgZ2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsKKwogICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVUaXRsZSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gNzgzNjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
ICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIkRPTVRp
bWVyLmgiCiAjaW5jbHVkZSAiRE9NVVJMLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJEYXRhYmFzZVRhc2suaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgpAQCAtNDA2LDYgKzQwOCwyNiBAQCBGaWxlVGhyZWFkKiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpmaWxlCiB9CiAjZW5kaWYKIAordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjptaW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVy
dmFsKQoreworICAgIGlmIChnZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgpICE9IG9sZE1pbmltdW1U
aW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6aXRlcmF0b3IgaXRlciA9
IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVuZCgpOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgICAg
IHRpbWVyLT5taW5pbXVtVGltZXJJbnRlcnZhbENoYW5nZWQob2xkTWluaW11bVRpbWVySW50ZXJ2
YWwpOworICAgICAgICB9CisgICAgfQorfQorCitkb3VibGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwoKQoreworICAgIC8vIFRoZSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uIHJldHVybnMgdGhlIERPTVRpbWVyJ3MgZGVmYXVsdAorICAgIC8vIG1pbmltdW0g
dGltZXIgaW50ZXJ2YWwuIEZJWE1FOiB0byBtYWtlIGl0IHdvcmsgd2l0aCBkZWRpY2F0ZWQKKyAg
ICAvLyB3b3JrZXJzLCB3ZSB3aWxsIGhhdmUgdG8gb3ZlcnJpZGUgaXQgaW4gdGhlIGFwcHJvcHJp
YXRlCisgICAgLy8gc3ViY2xhc3MsIGFuZCBwcm92aWRlIGEgd2F5IHRvIGVudW1lcmF0ZSBhIERv
Y3VtZW50J3MgZGVkaWNhdGVkCisgICAgLy8gd29ya2VycyBzbyB3ZSBjYW4gdXBkYXRlIHRoZW0g
YWxsLgorICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsK
K30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6flRhc2soKQogewogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiA3
ODM2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHN0b3BGaWxlVGhyZWFkKCk7CiAjZW5kaWYKIAorICAgICAgICAvLyBJbnRlcnZh
bCBpcyBpbiBzZWNvbmRzLgorICAgICAgICB2b2lkIG1pbmltdW1UaW1lckludGVydmFsQ2hhbmdl
ZChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOworICAgICAgICB2aXJ0dWFsIGRvdWJs
ZSBnZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAv
LyBFeHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgc2NyaXB0
IGNvbnRleHQuCiAgICAgICAgIC8vIE5vdGU6IEl0IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhl
IHNlY3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlwdCBjb250ZXh0CkBAIC0xNzYsNyArMTgwLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faXRlcmF0aW5nQWN0aXZlRE9NT2Jq
ZWN0czsKICAgICAgICAgYm9vbCBtX2luRGVzdHJ1Y3RvcjsKIAotICAgICAgICBIYXNoTWFwPGlu
dCwgRE9NVGltZXIqPiBtX3RpbWVvdXRzOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBE
T01UaW1lcio+IFRpbWVvdXRNYXA7CisgICAgICAgIFRpbWVvdXRNYXAgbV90aW1lb3V0czsKIAog
I2lmIEVOQUJMRShCTE9CKQogICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJM
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyAr
MzksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IG1heFRpbWVy
TmVzdGluZ0xldmVsID0gNTsKIHN0YXRpYyBjb25zdCBkb3VibGUgb25lTWlsbGlzZWNvbmQgPSAw
LjAwMTsKLWRvdWJsZSBET01UaW1lcjo6c19taW5UaW1lckludGVydmFsID0gMC4wMTA7IC8vIDEw
IG1pbGxpc2Vjb25kcworZG91YmxlIERPTVRpbWVyOjpzX21pbkRlZmF1bHRUaW1lckludGVydmFs
ID0gMC4wMTA7IC8vIDEwIG1pbGxpc2Vjb25kcwogCiBzdGF0aWMgaW50IHRpbWVyTmVzdGluZ0xl
dmVsID0gMDsKIAogRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBi
b29sIHNpbmdsZVNob3QpCiAgICAgOiBTdXNwZW5kYWJsZVRpbWVyKGNvbnRleHQpCiAgICAgLCBt
X2FjdGlvbihhY3Rpb24pCisgICAgLCBtX29yaWdpbmFsVGltZW91dCh0aW1lb3V0KQogewogICAg
IHN0YXRpYyBpbnQgbGFzdFVzZWRUaW1lb3V0SWQgPSAwOwogICAgICsrbGFzdFVzZWRUaW1lb3V0
SWQ7CkBAIC01OCwxMCArNTksNyBAQCBET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4CiAKICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZFRpbWVvdXQobV90aW1l
b3V0SWQsIHRoaXMpOwogCi0gICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNvbmRzID0gbWF4KG9u
ZU1pbGxpc2Vjb25kLCB0aW1lb3V0ICogb25lTWlsbGlzZWNvbmQpOwotCi0gICAgaWYgKGludGVy
dmFsTWlsbGlzZWNvbmRzIDwgc19taW5UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49
IG1heFRpbWVyTmVzdGluZ0xldmVsKQotICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IHNf
bWluVGltZXJJbnRlcnZhbDsKKyAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBpbnRl
cnZhbENsYW1wZWRUb01pbmltdW0odGltZW91dCwgY29udGV4dC0+Z2V0TWluaW11bVRpbWVySW50
ZXJ2YWwoKSk7CiAgICAgaWYgKHNpbmdsZVNob3QpCiAgICAgICAgIHN0YXJ0T25lU2hvdChpbnRl
cnZhbE1pbGxpc2Vjb25kcyk7CiAgICAgZWxzZQpAQCAtMTA4LDEwICsxMDYsMTEgQEAgdm9pZCBE
T01UaW1lcjo6ZmlyZWQoKQogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0
aW1lcnMuCiAgICAgaWYgKGlzQWN0aXZlKCkpIHsKLSAgICAgICAgaWYgKHJlcGVhdEludGVydmFs
KCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IHNfbWluVGltZXJJbnRlcnZhbCkgeworICAgICAgICBk
b3VibGUgbWluaW11bUludGVydmFsID0gY29udGV4dC0+Z2V0TWluaW11bVRpbWVySW50ZXJ2YWwo
KTsKKyAgICAgICAgaWYgKHJlcGVhdEludGVydmFsKCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IG1p
bmltdW1JbnRlcnZhbCkgewogICAgICAgICAgICAgbV9uZXN0aW5nTGV2ZWwrKzsKICAgICAgICAg
ICAgIGlmIChtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAg
ICAgICAgICBhdWdtZW50UmVwZWF0SW50ZXJ2YWwoc19taW5UaW1lckludGVydmFsIC0gcmVwZWF0
SW50ZXJ2YWwoKSk7CisgICAgICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKG1pbmlt
dW1JbnRlcnZhbCAtIHJlcGVhdEludGVydmFsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
Tm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMgYWZ0ZXIgdGhpcyBwb2ludCwgaXQgY2FuIGRl
bGV0ZSB0aGUgdGltZXIuCkBAIC0xNTAsNCArMTQ5LDIyIEBAIHZvaWQgRE9NVGltZXI6OnN0b3Ao
KQogICAgIG1fYWN0aW9uLmNsZWFyKCk7CiB9CiAKK3ZvaWQgRE9NVGltZXI6Om1pbmltdW1UaW1l
ckludGVydmFsQ2hhbmdlZChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAg
aWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgIHJldHVy
bjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRlcnZhbENsYW1wZWRU
b01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAg
ICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKG1f
b3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdldE1pbmltdW1UaW1l
ckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBlZEludGVydmFs
IC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGltZXI6OmludGVy
dmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKQoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1heChvbmVNaWxsaXNl
Y29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlmIChpbnRlcnZhbE1pbGxp
c2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49IG1heFRp
bWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1pbmltdW1U
aW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vjb25kczsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAkocmV2aXNpb24g
NzgzNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIFNl
dHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIgb3duZWQg
Ynkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdApAQCAtNDYsMTgg
KzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAgICAgICAv
LyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAwLjAwMSA9
PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lckludGVydmFsKCkgeyByZXR1
cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1pblRpbWVy
SW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9Cisg
ICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRoaXMgYWxsb3dzIHRoZSBt
aW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5nZWQgaW4gcmVzcG9uc2UK
KyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRvIHRoZSBiYWNrZ3JvdW5k
LgorICAgICAgICB2b2lkIG1pbmltdW1UaW1lckludGVydmFsQ2hhbmdlZChkb3VibGUgb2xkTWlu
aW11bVRpbWVySW50ZXJ2YWwpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRE9NVGltZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiwgaW50IHRp
bWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpOwog
CisgICAgICAgIGRvdWJsZSBpbnRlcnZhbENsYW1wZWRUb01pbmltdW0oaW50IHRpbWVvdXQsIGRv
dWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCk7CisKKyAgICAgICAgLy8gVGhlIGRlZmF1bHQgbWlu
aW11bSBhbGxvd2FibGUgdGltZXIgc2V0dGluZyAoaW4gc2Vjb25kcywgMC4wMDEgPT0gMSBtcyku
CisgICAgICAgIC8vIFRoZXNlIGFyZSBvbmx5IG1vZGlmaWVkIHZpYSBzdGF0aWMgbWV0aG9kcyBp
biBTZXR0aW5ncy4KKyAgICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluVGltZXJJbnRlcnZh
bCgpIHsgcmV0dXJuIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7IH0KKyAgICAgICAgc3RhdGlj
IHZvaWQgc2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluRGVm
YXVsdFRpbWVySW50ZXJ2YWwgPSB2YWx1ZTsgfQorCiAgICAgICAgIGludCBtX3RpbWVvdXRJZDsK
ICAgICAgICAgaW50IG1fbmVzdGluZ0xldmVsOwogICAgICAgICBPd25QdHI8U2NoZWR1bGVkQWN0
aW9uPiBtX2FjdGlvbjsKLSAgICAgICAgc3RhdGljIGRvdWJsZSBzX21pblRpbWVySW50ZXJ2YWw7
CisgICAgICAgIGludCBtX29yaWdpbmFsVGltZW91dDsKKyAgICAgICAgc3RhdGljIGRvdWJsZSBz
X21pbkRlZmF1bHRUaW1lckludGVydmFsOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAgUGFn
ZTo6UGFnZShjb25zdCBQYWdlQ2xpZW50cyYgcGFnZUNsaWVudAogICAgICwgbV9jdXN0b21IVE1M
VG9rZW5pemVyQ2h1bmtTaXplKC0xKQogICAgICwgbV9jYW5TdGFydE1lZGlhKHRydWUpCiAgICAg
LCBtX3ZpZXdNb2RlKFZpZXdNb2RlV2luZG93ZWQpCisgICAgLCBtX21pbmltdW1UaW1lckludGVy
dmFsKFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpKQogewogICAgIGlmICgh
YWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFzaFNldDxQYWdlKj47CkBAIC04
MzIsNiArODMzLDIxIEBAIGJvb2wgUGFnZTo6amF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkgY28K
ICAgICByZXR1cm4gbV9qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQ7CiB9CiAKK3ZvaWQgUGFnZTo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQorewor
ICAgIGRvdWJsZSBvbGRUaW1lckludGVydmFsID0gbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKKyAg
ICBtX21pbmltdW1UaW1lckludGVydmFsID0gbWluaW11bVRpbWVySW50ZXJ2YWw7CisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5taW5pbXVtVGltZXJJbnRl
cnZhbENoYW5nZWQob2xkVGltZXJJbnRlcnZhbCk7CisgICAgfQorfQorCitkb3VibGUgUGFnZTo6
bWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21pbmltdW1UaW1l
ckludGVydmFsOworfQorCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIFNwZWVjaElucHV0KiBQ
YWdlOjpzcGVlY2hJbnB1dCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNzgzNjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiAr
OTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBQYWdlIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZSk7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5n
czsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlRm9yY2VkU3R5bGVS
ZWNhbGNGb3JBbGxQYWdlcygpOwogCkBAIC0yOTgsNiArMjk5LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcigpOwogCisgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91
YmxlKTsKKyAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAg
ICAgICAgT3duUHRyPENocm9tZT4gbV9jaHJvbWU7CiAgICAgICAgIE93blB0cjxTZWxlY3Rpb25D
b250cm9sbGVyPiBtX2RyYWdDYXJldENvbnRyb2xsZXI7CiAKQEAgLTM4Niw2ICszOTAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKICAgICAg
ICAgVmlld3BvcnRBcmd1bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKKworICAgICAgICBkb3Vi
bGUgbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDkg
KzQzMywyNCBAQCB2b2lkIFNldHRpbmdzOjpzZXRET01QYXN0ZUFsbG93ZWQoYm9vbCBECiAgICAg
bV9pc0RPTVBhc3RlQWxsb3dlZCA9IERPTVBhc3RlQWxsb3dlZDsKIH0KIAordm9pZCBTZXR0aW5n
czo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAg
IERPTVRpbWVyOjpzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2Rv
dWJsZSBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVy
biBET01UaW1lcjo6ZGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoKTsKK30KKwogdm9pZCBTZXR0aW5n
czo6c2V0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgRE9NVGlt
ZXI6OnNldE1pblRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgIG1fcGFnZS0+c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCitkb3VibGUgU2V0dGluZ3M6Om1pbkRPTVRp
bWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBtX3BhZ2UtPm1pbmltdW1UaW1lckludGVydmFs
KCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldFVzZXNQYWdlQ2FjaGUoYm9vbCB1c2VzUGFnZUNh
Y2hlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw4ICsyMDMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERPTVBhc3RlQWxsb3dl
ZChib29sKTsKICAgICAgICAgYm9vbCBpc0RPTVBhc3RlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNET01QYXN0ZUFsbG93ZWQ7IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIHNl
dE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gSW50ZXJ2YWwgc3BlY2lmaWVkIGluIHNl
Y29uZHMuCisgICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNpZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0
aWMgZG91YmxlIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7CiAgICAgICAgIAorICAgICAg
ICB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gUGVyLXBhZ2U7IGluaXRp
YWxpemVkIHRvIGRlZmF1bHQgdmFsdWUuCisgICAgICAgIGRvdWJsZSBtaW5ET01UaW1lckludGVy
dmFsKCk7CisKICAgICAgICAgdm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOwogICAgICAgICBi
b29sIHVzZXNQYWdlQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX3VzZXNQYWdlQ2FjaGU7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDggQEAg
cHVibGljOgogICAgIGRvdWJsZSBuZXh0RmlyZUludGVydmFsKCkgY29uc3Q7CiAgICAgZG91Ymxl
IHJlcGVhdEludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCi0g
ICAgdm9pZCBhdWdtZW50UmVwZWF0SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IHNldE5leHRGaXJl
VGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsg
fQorICAgIHZvaWQgYXVnbWVudEZpcmVJbnRlcnZhbChkb3VibGUgZGVsdGEpIHsgc2V0TmV4dEZp
cmVUaW1lKG1fbmV4dEZpcmVUaW1lICsgZGVsdGEpOyB9CisgICAgdm9pZCBhdWdtZW50UmVwZWF0
SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IGF1Z21lbnRGaXJlSW50ZXJ2YWwoZGVsdGEpOyBtX3Jl
cGVhdEludGVydmFsICs9IGRlbHRhOyB9CiAKICAgICBzdGF0aWMgdm9pZCBmaXJlVGltZXJzSW5O
ZXN0ZWRFdmVudExvb3AoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzgzNzgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcg
bWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpXZWJQYWdlKToKKwogMjAxMS0wMi0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA3ODM2
OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCAKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZShtX3BhZ2VHcm91cC0+aWRl
bnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwotICAgIFNldHRpbmdzOjpz
ZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1p
bkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgbV9kcmF3aW5nQXJlYSA9IERyYXdpbmdB
cmVhOjpjcmVhdGUodGhpcywgcGFyYW1ldGVycyk7CiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFt
ZTo6Y3JlYXRlTWFpbkZyYW1lKHRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc4Mzc4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBv
biBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAg
ICAgICAgLSBBZGRlZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCwKKyAgICAgICAgICAg
IGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsLCBzZXRNaW5ET01UaW1lckludGVydmFsLCBhbmQK
KyAgICAgICAgICAgIG1pbkRPTVRpbWVySW50ZXJ2YWwuCisgICAgICAgICogc3JjL1dlYktpdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemUpOgorICAgICAgICAgIC0gQ2hhbmdlZCB0
byB1c2UgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsIHJhdGhlcgorICAg
ICAgICAgICAgdGhhbiBET01UaW1lciBkaXJlY3RseS4KKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OnNldERlZmF1bHRNaW5E
T01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpz
ZXRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBs
OjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBtZXRo
b2RzIG9uIFdlYlNldHRpbmdzLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKwog
MjAxMS0wMi0xMSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEw
OCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlv
bkVuYWJsZWQoYm9vbCkgPSAwOwogCisgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBzZXREZWZh
dWx0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOworICAgIFdFQktJVF9BUEkgc3RhdGljIGRv
dWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRN
aW5ET01UaW1lckludGVydmFsKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIG1pbkRP
TVRpbWVySW50ZXJ2YWwoKSA9IDA7CisKKwogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygp
IHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAkocmV2aXNp
b24gNzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJLaXQuaCIKIAotI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNp
bmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQu
aCIKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBpbml0aWFsaXplKFdlYktpdENsaWVudCogd2ViS2l0
Q2xpZQogICAgIC8vIGNvZGVkIHdlYnNpdGVzIG91dCB0aGVyZSB3aGljaCBkbyBjcmVhdGUgQ1BV
LXNwaW5uaW5nIGxvb3BzLiAgVXNpbmcKICAgICAvLyA0bXMgcHJldmVudHMgdGhlIENQVSBmcm9t
IHNwaW5uaW5nIHRvbyBidXNpbHkgYW5kIHByb3ZpZGVzIGEgYmFsYW5jZQogICAgIC8vIGJldHdl
ZW4gQ1BVIHNwaW5uaW5nIGFuZCB0aGUgc21hbGxlc3QgcG9zc2libGUgaW50ZXJ2YWwgdGltZXIu
Ci0gICAgV2ViQ29yZTo6RE9NVGltZXI6OnNldE1pblRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAg
IFdlYkNvcmU6OlNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7
CiAKICAgICAvLyBUaGVyZSBhcmUgc29tZSBjb2RlIHBhdGhzIChmb3IgZXhhbXBsZSwgcnVubmlu
ZyBXZWJLaXQgaW4gdGhlIGJyb3dzZXIKICAgICAvLyBwcm9jZXNzIGFuZCBjYWxsaW5nIGludG8g
TG9jYWxTdG9yYWdlIGJlZm9yZSBhbnl0aGluZyBlbHNlKSB3aGVyZSB0aGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24g
NzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNCArMzQ0LDI0IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRJbnRlcmFjdGl2ZUZvcm0KICAgICBtX3NldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1W
YWxpZGF0aW9uRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nczo6c2V0RGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIFNldHRpbmdz
OjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2RvdWJsZSBX
ZWJTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwordm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAg
IG1fc2V0dGluZ3MtPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCitkb3Vi
bGUgV2ViU2V0dGluZ3NJbXBsOjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4g
bV9zZXR0aW5ncy0+bWluRE9NVGltZXJJbnRlcnZhbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7CisgICAgdmly
dHVhbCBkb3VibGUgbWluRE9NVGltZXJJbnRlcnZhbCgpOwogCiBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
NzgzNzgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNyBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJh
c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMx
MgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2Qu
CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfc2V0X21pbmltdW1fdGltZXJfaW50ZXJ2YWwpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMTEtMDItMTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3ODMz
MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJl
dmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDk0LDYgKzUwOTQsMTIgQEAgR3RrTWVudSogd2Via2l0
X3dlYl92aWV3X2dldF9jb250ZXh0X21lbgogI2VuZGlmCiB9CiAKK3ZvaWQgd2Via2l0X3dlYl92
aWV3X3NldF9taW5pbXVtX3RpbWVyX2ludGVydmFsKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIGdk
b3VibGUgaW50ZXJ2YWxfaW5fc2Vjb25kcykKK3sKKyAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJW
aWV3KTsKKyAgICBwYWdlLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVy
dmFsX2luX3NlY29uZHMpOworfQorCiB2b2lkIHdlYlZpZXdFbnRlckZ1bGxzY3JlZW4oV2ViS2l0
V2ViVmlldyogd2ViVmlldywgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjp2aWRlb1RhZykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmgJKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDYgKzQwMywxMyBAQCB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2RvbV9kb2N1bWVudCAgICAgICAgCiBXRUJLSVRfQVBJIFdlYktp
dFZpZXdwb3J0QXR0cmlidXRlcyoKIHdlYmtpdF93ZWJfdmlld19nZXRfdmlld3BvcnRfYXR0cmli
dXRlcyAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViVmlldyk7CiAKK1dFQktJVF9B
UEkgZ2RvdWJsZQord2Via2l0X3dlYl92aWV3X21pbmltdW1fZGVmYXVsdF90aW1lcl9pbnRlcnZh
bCAgKFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJWaWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfd2ViX3ZpZXdfc2V0X21pbmltdW1fdGltZXJfaW50ZXJ2YWwgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgKndlYlZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgICAgICAgaW50ZXJ2YWxfaW5fc2Vjb25kcyk7
CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
NzgzNzgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJh
c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMx
MgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2Qu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1l
TmFtZTpncm91cE5hbWU6dXNlc0RvY3VtZW50Vmlld3M6XSk6CisgICAgICAgICgrW1dlYlZpZXcg
ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsXSk6CisgICAgICAgICgtW1dlYlZpZXcgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWw6XSk6CisKIDIwMTEtMDItMTAgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgJKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2Myw2ICs2
NjMsMjIgQEAgQGludGVyZmFjZSBXZWJWaWV3IDogTlNWaWV3CiAqLwogLSAoTlNJbWFnZSAqKW1h
aW5GcmFtZUljb247CiAKKy8qIQorICAgIEBtZXRob2QgZGVmYXVsdE1pbmltdW1UaW1lckludGVy
dmFsCisgICAgQHJlc3VsdCBSZXR1cm5zIHRoZSBkZWZhdWx0IG1pbmltdW0gdGltZXIgaW50ZXJ2
YWwuCisqLworKyAoZG91YmxlKWRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbDsKKworLyohCisg
ICAgQG1ldGhvZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDoKKyAgICBAZGlzY3Vzc2lvbiBTZXRz
IHRoZSBtaW5pbXVtIGludGVydmFsIGZvciBET01UaW1lcnMgaW4gdGhpcyBXZWJWaWV3LiBUaGlz
IG1ldGhvZCBpcworICAgIGV4cG9zZWQgaGVyZSBpbiB0aGUgTWFjIHBvcnQgcmF0aGVyIHRoYW4g
dGhyb3VnaCBXZWJQcmVmZXJlbmNlcyAod2hpY2ggZ2VuZXJhbGx5CisgICAgZ292ZXJucyBTZXR0
aW5ncykgYmVjYXVzZSB0aGlzIHZhbHVlIGlzIHNvbWV0aGluZyBhZGp1c3RlZCBhdCBydW4gdGlt
ZSwgbm90IHNldAorICAgIGdsb2JhbGx5IHZpYSAiZGVmYXVsdHMgd3JpdGUiLgorICAgIEBwYXJh
bSBpbnRlcnZhbEluU2Vjb25kcyBUaGUgbmV3IG1pbmltdW0gdGltZXIgaW50ZXJ2YWwsIGluIHNl
Y29uZHMuCisqLworLSAodm9pZClzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDooZG91YmxlKWludGVy
dmFsSW5TZWNvbmRzOworCiBAZW5kCiAKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5NCw3ICs2OTQsNyBAQCAtICh2b2lkKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFs
aXplIG91ciBwbGF0Zm9ybSBzdHJhdGVnaWVzLgogICAgICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmluaXRpYWxpemUoKTsKLSAgICAgICAgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2
YWwoMC4wMDQpOworICAgICAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2
YWwoMC4wMDQpOwogCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAg
ICAgfQpAQCAtNDEzMyw2ICs0MTMzLDE3IEBAIC0gKE5TVmlldyAqKXByZXZpb3VzVmFsaWRLZXlW
aWV3CiAgICAgcmV0dXJuIFtwcmV2aW91c1ZpZXcgcHJldmlvdXNWYWxpZEtleVZpZXddOwogfQog
CisrIChkb3VibGUpZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsCit7CisgICAgcmV0dXJuIFNl
dHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworfQorCistICh2b2lkKXNldE1p
bmltdW1UaW1lckludGVydmFsOihkb3VibGUpaW50ZXJ2YWxJblNlY29uZHMKK3sKKyAgICBpZiAo
X3ByaXZhdGUtPnBhZ2UpCisgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRN
aW5ET01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKK30KKwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViVmlldyAoV2ViSUJBY3Rpb25zKQpJbmRleDogU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc4Mzc4KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1w
YWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDMxMgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlv
dXRUZXN0Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBt
ZXRob2QuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoUVdlYlNl
dHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChRV2ViU2V0dGlu
Z3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjptaW5E
T01UaW1lckludGVydmFsKToKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmg6CisKIDIwMTEt
MDItMTEgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hlc2xhdkBub2tp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9yIEFybmUgVmVzdGLDuC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI0
LDYgKzExMjQsMjkgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYQog
I2VuZGlmCiB9CiAKK3ZvaWQgUVdlYlNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01U
aW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91YmxlIFFXZWJTZXR0aW5nczo6ZGVmYXVs
dE1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1p
bkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwordm9pZCBRV2ViU2V0dGluZ3M6OnNldE1pbkRPTVRp
bWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIGlmIChkLT5zZXR0aW5ncykKKyAg
ICAgICAgZC0+c2V0dGluZ3MtPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQor
Citkb3VibGUgUVdlYlNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICBpZiAo
IWQtPnNldHRpbmdzKQorICAgICAgICByZXR1cm4gZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwo
KTsKKyAgICByZXR1cm4gZC0+c2V0dGluZ3MtPm1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwog
LyohCiAgICAgXGZuIFFXZWJTZXR0aW5nc1ByaXZhdGUqIFFXZWJTZXR0aW5nczo6aGFuZGxlKCkg
Y29uc3QKICAgICBcaW50ZXJuYWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5o
CShyZXZpc2lvbiA3ODM2OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIGVuYWJsZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFFTdHJpbmcmIHBhdGggPSBRU3Ry
aW5nKCkpOwogCisgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwo
ZG91YmxlKTsKKyAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7
CisgICAgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7CisgICAgZG91YmxlIG1p
bkRPTVRpbWVySW50ZXJ2YWwoKTsKKwogICAgIGlubGluZSBRV2ViU2V0dGluZ3NQcml2YXRlKiBo
YW5kbGUoKSBjb25zdCB7IHJldHVybiBkOyB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiA3ODM3OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTAyLTExICBLZW5uZXRoIFJ1c3NlbGwg
IDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9u
IGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgQWRkZWQgbmVlZGVkIG1ldGhvZHMgdG8gaW1wbGVt
ZW50IExheW91dFRlc3RDb250cm9sbGVyJ3MgbmV3CisgICAgICAgIHNldE1pbmltdW1UaW1lcklu
dGVydmFsIG1ldGhvZC4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYlZpZXcuaWRsOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6ZGVmYXVsdE1pbmltdW1UaW1l
ckludGVydmFsKToKKyAgICAgICAgKFdlYlZpZXc6OnNldE1pbmltdW1UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgorICAgICAgICAqIFdlYlZpZXcuaDoK
KwogMjAxMS0wMi0wOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyOSw2ICs3MjksMTggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJWaWV3OjpjbG9zZQogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlZpZXc6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUq
IGludGVydmFsKQoreworICAgICppbnRlcnZhbCA9IFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbCgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlZpZXc6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkK
K3sKKyAgICBwYWdlKCktPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2
YWwpOworICAgIHJldHVybiBTX09LOworfQorCiB2b2lkIFdlYlZpZXc6OnJlcGFpbnQoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgd2luZG93UmVjdCwgYm9vbCBjb250ZW50Q2hhbmdlZCwgYm9vbCBp
bW1lZGlhdGUsIGJvb2wgcmVwYWludENvbnRlbnRPbmx5KQogewogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKQEAgLTI2MTEsNyArMjYyMyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViVmlldzo6aW5pdFcKICNlbmRpZgogICAgICAgICBXZWJLaXRTZXRBcHBsaWNhdGlv
bkNhY2hlUGF0aElmTmVjZXNzYXJ5KCk7CiAgICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aW5pdGlhbGl6ZSgpOwotICAgICAgICBTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgw
LjAwNCk7CisgICAgICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgw
LjAwNCk7CiAKICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNzgzNjgpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTIgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb3NlKCk7CiAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGRvdWJsZSAqaW50ZXJ2YWwpOwor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKAorICAgICAgICAvKiBbaW5dICovIGRvdWJsZSk7CisKICAgICAvLyBJV2ViSUJBY3Rp
b25zCiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGFrZVN0cmluZ1VS
TEZyb20oIApJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlldy5pZGwJ
KHJldmlzaW9uIDc4MzY4KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmll
dy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTczNyw2ICs3MzcsMjIgQEAgaW50ZXJmYWNlIElXZWJW
aWV3IDogSVVua25vd24KICAgICAgICAgZnJvbSBkb2luZyBhbnkgbW9yZSBsb2FkaW5nIGFuZCBm
aXJpbmcgYW55IGZ1dHVyZSBkZWxlZ2F0ZSBtZXRob2RzLgogICAgICovCiAgICAgSFJFU1VMVCBj
bG9zZSgpOworCisgICAgLyohCisgICAgICAgIEBtZXRob2QgZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsCisgICAgICAgIEBkaXNjdXNzaW9uIFJldHVybnMgdGhlIGRlZmF1bHQgbWluaW11bSBp
bnRlcnZhbCBmb3IgRE9NVGltZXJzIG9uIGFsbCBwYWdlcywgbm90CisgICAgICAgIGp1c3QgdGhl
IG9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyByZWNlaXZlci4KKyAgICAgICAgLSAoZG91YmxlKWlu
dGVydmFsOworICAgICovCisgICAgSFJFU1VMVCBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwo
W291dCwgcmV0dmFsXSBkb3VibGUqIGludGVydmFsKTsKKworICAgIC8qIQorICAgICAgICBAbWV0
aG9kIHNldE1pbmltdW1UaW1lckludGVydmFsCisgICAgICAgIEBkaXNjdXNzaW9uIFNldHMgdGhl
IG1pbmltdW0gaW50ZXJ2YWwgZm9yIERPTVRpbWVycyBvbiB0aGUgd2ViIHBhZ2UgYXNzb2NpYXRl
ZAorICAgICAgICB3aXRoIHRoZSByZWNlaXZlci4KKyAgICAgICAgLSAoZG91YmxlKWludGVydmFs
OworICAgICovCisgICAgSFJFU1VMVCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChbaW5dIGRvdWJs
ZSBpbnRlcnZhbCk7CiB9CiAKIC8qCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODM3OCkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDExLTAyLTExICBLZW5uZXRoIFJ1c3Nl
bGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFs
IG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgSW1wbGVtZW50ZWQgbmV3IG1ldGhvZCBzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbCBpbgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBmb3Ig
YWxsIHBvcnRzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoc2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjayk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVz
ZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViUGFnZTo6cmVzZXRTZXR0aW5ncyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVC
ZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmlt
dW1UaW1lckludGVydmFsKToKKwogMjAxMS0wMi0xMSAgU2FpbGVzaCBBZ3Jhd2FsICA8c2FpbEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjYsNiArMTkyNiwyMCBAQCBzdGF0aWMgYm9vbCBz
ZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgZG91YmxlIG1pbmlt
dW0gPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOwor
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNaW5pbXVtVGltZXJJbnRl
cnZhbChtaW5pbXVtKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKwogc3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShK
U09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0
ZShvYmplY3QpKTsKQEAgLTIwNzMsNiArMjA4Nyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91
dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNl
dEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlciIs
IHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCIsIHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgc2V0TW9j
a0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2
ICszMTAsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZpZXdXaWR0
aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Vmlld0hlaWdodDsKIAorICAgIHZvaWQg
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qgc3Rk
OjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgic2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOwogICAgIGJpbmRNZXRo
b2QoInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpOworICAgIGJpbmRNZXRob2QoInNl
dE1pbmltdW1UaW1lckludGVydmFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9u
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOwogICAg
IGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKTsKQEAgLTE1OTMsMyArMTU5NCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpoYXNTcGVsbGluZ01hCiAgICAgICAgIHJldHVybjsKICAgICByZXN1bHQtPnNldCht
X3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5n
TWFya2VyRm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCkp
KTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEg
fHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9zaGVs
bC0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGFyZ3VtZW50
c1swXS50b0RvdWJsZSgpKTsKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzgzNjgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzUsNiArMzM1LDggQEAgcHVibGljOgogICAgIHZvaWQgbWFya2VyVGV4
dEZvckxpc3RJdGVtKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2
b2lkIGhhc1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKIAorICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworCiBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRo
b2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIHZvaWQgc2V0V29ya1F1ZXVl
RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihmcm96ZW4pOyB9Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShy
ZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyNiw4ICsxMjI2LDEwIEBAIHZvaWQgV2ViVmll
d0hvc3Q6OnJlc2V0KCkKICAgICBtX3dpbmRvd1JlY3QgPSBXZWJSZWN0KCk7CiAgICAgbV9wYWlu
dFJlY3QgPSBXZWJSZWN0KCk7CiAKLSAgICBpZiAobV93ZWJXaWRnZXQpCisgICAgaWYgKG1fd2Vi
V2lkZ2V0KSB7CiAgICAgICAgIHdlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNldE5hbWUoV2ViU3Ry
aW5nKCkpOworICAgICAgICB3ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50
ZXJ2YWwoV2ViU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkpOworICAgIH0K
IH0KIAogdm9pZCBXZWJWaWV3SG9zdDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZChib29sIGVuYWJsZWQpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVu
ZGVyVHJlZS5jcHAJKHJldmlzaW9uIDc4MzY4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDYgKzQyOCw3IEBAIHN0
YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAgICBnX29iamVjdF9zZXQo
R19PQkpFQ1QoaW5zcGVjdG9yKSwgImphdmFzY3JpcHQtcHJvZmlsaW5nLWVuYWJsZWQiLCBGQUxT
RSwgTlVMTCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywg
MS4wKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X21pbmltdW1fdGltZXJfaW50ZXJ2YWwod2Vi
Vmlldywgd2Via2l0X3dlYl92aWV3X21pbmltdW1fZGVmYXVsdF90aW1lcl9pbnRlcnZhbCh3ZWJW
aWV3KSk7CiAKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVMaXN0cygpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDc4MzY4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODgwLDMgKzg4MCw5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNl
cmlhbGl6ZUgKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGlmIG5lZWRlZCBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4LgogfQorCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRp
bWVySW50ZXJ2YWwpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJf
ZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9t
aW5pbXVtX3RpbWVyX2ludGVydmFsKHdlYlZpZXcsIG1pbmltdW1UaW1lckludGVydmFsKTsKK30K
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlz
aW9uIDc4MzY4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDE3LDYgKzEwMTcsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgW1t3ZWJWaWV3IHVuZG9NYW5hZ2VyXSByZW1vdmVB
bGxBY3Rpb25zXTsKICAgICBbV2ViVmlldyBfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6
W3dlYlZpZXcgZ3JvdXBOYW1lXV07CiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gc2V0QXV0b2Rpc3Bs
YXk6Tk9dOworICAgIFt3ZWJWaWV3IHNldE1pbmltdW1UaW1lckludGVydmFsOltXZWJWaWV3IGRl
ZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbF1dOwogCiAgICAgcmVzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlcygpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTAwMywzICsxMDAzLDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2Vy
aWFsaXplSAogewogICAgIFtXZWJWaWV3IF9zZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6c2VyaWFs
aXplXTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50
ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIFtbbWFpbkZyYW1lIHdl
YlZpZXddIHNldE1pbmltdW1UaW1lckludGVydmFsOm1pbmltdW1UaW1lckludGVydmFsXTsKK30K
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShy
ZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVl
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDggQEAgdm9pZCBXZWJQYWdlOjpy
ZXNldFNldHRpbmdzKCkKICAgICBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUo
MCk7IC8vIHJlc2V0IHRvIGRlZmF1bHQKICAgICBzZXR0aW5ncygpLT5zZXRVc2VyU3R5bGVTaGVl
dFVybChRVXJsKCkpOyAvLyByZXNldCB0byBkZWZhdWx0CiAKKyAgICBzZXR0aW5ncygpLT5zZXRN
aW5ET01UaW1lckludGVydmFsKFFXZWJTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2
YWwoKSk7CisKICAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblJlcXVlc3RzLmNsZWFyKCk7CiB9CiAK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9s
bGVyUXQuY3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzYsNSArODM2LDEw
IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVSTFRvUmVkaXIKICAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6YWRkVVJMVG9SZWRpcmVjdChvcmlnaW4sIGRlc3RpbmF0aW9uKTsK
IH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwo
ZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNl
dHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwobWluaW11bVRpbWVySW50ZXJ2YWwpOwor
fQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWF4Vmlld1dpZHRoID0g
ODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQg
PSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw4
IEBAIHB1YmxpYyBzbG90czoKICAgICBRU3RyaW5nIHBhZ2VQcm9wZXJ0eShjb25zdCBRU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNo
ZWV0KGNvbnN0IFFTdHJpbmcmIHNvdXJjZUNvZGUpOwogCisgICAgdm9pZCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbChkb3VibGUpOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgcHJvY2Vzc1dv
cmsoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwCShyZXZpc2lvbiA3ODM2OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Myw2ICs4NDMsMTAgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIGlmIChGQUlMRUQoZnJhbWUtPndl
YlZpZXcoJndlYlZpZXcpKSkgCiAgICAgICAgIHJldHVybjsKIAorICAgIGRvdWJsZSBtaW5pbXVt
SW50ZXJ2YWwgPSAwOworICAgIGlmIChTVUNDRUVERUQod2ViVmlldy0+ZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsKCZtaW5pbXVtSW50ZXJ2YWwpKSkKKyAgICAgICAgd2ViVmlldy0+c2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwobWluaW11bUludGVydmFsKTsKKwogICAgIHdlYlZpZXctPnNldFBv
bGljeURlbGVnYXRlKDApOwogICAgIHBvbGljeURlbGVnYXRlLT5zZXRQZXJtaXNzaXZlKGZhbHNl
KTsKICAgICBwb2xpY3lEZWxlZ2F0ZS0+c2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZSgwKTsKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcAkocmV2aXNpb24gNzgzNjgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMwLDMgKzE0
MzAsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSAogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAg
ICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmll
dygmd2ViVmlldykpKQorICAgICAgICByZXR1cm47CisgICAgd2ViVmlldy0+c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwobWluaW11bVRpbWVySW50ZXJ2YWwpOworfQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
NzgzNzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNyBAQAorMjAxMS0wMi0xMSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29u
dHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisg
ICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1w
YXJ0LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNy
ZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWw6IEFkZGVkLgorICAgICAgICAgIC0gQ2hh
aW5lZCB0ZXN0cyAodGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcnVuLXdlYmtpdC10ZXN0cwor
ICAgICAgICAgICAgaGFybmVzcyB3aWxsIHJ1biB0aGVtIHNlcXVlbnRpYWxseSwgd2hpY2ggaXMg
YSByZWFzb25hYmx5IGdvb2QKKyAgICAgICAgICAgIGFzc3VtcHRpb24pIHdoaWNoIHZlcmlmeSB0
aGF0IHRoZSBtaW5pbXVtIHRpbWVyIGludGVydmFsIGlzCisgICAgICAgICAgICByZXNldCBiZXR3
ZWVuIHRlc3RzLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZh
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgaW5j
cmVhc2luZyB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIGZh
c3QgdGltZXJzIHRvIHJ1biBzbG93bHkuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgZGVjcmVhc2luZyB0aGUgbWlu
aW11bSB0aW1lciBpbnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIHByZXZpb3VzbHkgc2xvd2Vk
LWRvd24gdGltZXJzIHRvIGJlIHJlZXZhbHVhdGVkIGltbWVkaWF0ZWx5LgorCiAyMDExLTAyLTEx
ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5j
cmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1h
bmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNl
dC1wYXJ0LTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1p
bmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1y
ZXNldC1wYXJ0LTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0g
bXNnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRy
b2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVu
IHRoYW4gdHdpY2UgYSBzZWNvbmQuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11
bVRpbWVySW50ZXJ2YWwoMC41KTsKKworICAgIC8vIFBhcnQgMiBvZiB0aGlzIHRlc3QgKHdoaWNo
IHdpbGwgbGlrZWx5IGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5CisgICAgLy8gYWZ0ZXIgdGhpcyBv
bmUgYnkgdGhlIGhhcm5lc3MpIHZlcmlmaWVzIHRoYXQgdGhlIG1pbmltdW0gdGltZXIKKyAgICAv
LyBpbnRlcnZhbCBpcyByZXNldCBiZXR3ZWVuIHRlc3RzLgorCisgICAgbG9nKCJQQVNTIik7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBh
cnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90
aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWlu
LWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0y
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9
IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBz
ZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1l
b3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQg
c29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIu
Y3BwLgorICAgIGlmIChjb3VudCA+IDEwKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNl
CisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
IC8vIFRpbWVycyBzaG91bGQgYmUgcnVubmluZyBhdCBmdWxsIHNwZWVkLCBub3QgYXQgdGhlIHRo
cm90dGxlZAorICAgIC8vIHJhdGUgc2V0IGJ5IHBhcnQgMSBvZiB0aGlzIHRlc3QuCisKKyAgICBz
ZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0
VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4t
aW50ZXJ2YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1p
bmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cp
IHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVv
dXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhh
bmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8g
Tm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8v
IG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQgPCAx
MCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0g
dGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1
aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8g
bW9yZSBvZnRlbiB0aGFuIHR3aWNlIGEgc2Vjb25kLgorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldE1pbmltdW1UaW1lckludGVydmFsKDAuNSk7CisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1l
b3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10
aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2
YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGlt
ZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVh
c2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24g
ZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0
VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7
CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRo
ZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAo
Y291bnQgPiAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2co
IkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMg
dGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVy
cyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIG9uY2UgcGVyIHNlY29uZC4KKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgxLjApOworCisgICAgc2V0VGltZW91
dChzbG93VGltZW91dEhhbmRsZXIsIDUwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhh
bmRsZXIsIDEpOworCisgICAgLy8gQWxsb3cgdGltZXJzIHRvIHJ1biBxdWlja2x5IGFnYWluLgor
ICAgIC8vIElmIHRoaXMgZG9lc24ndCBjYXVzZSB0aW1lcnMgdG8gZ2V0IHJlLWV2YWx1YXRlZCBp
bW1lZGlhdGVseSwKKyAgICAvLyB0aGUgZmFzdCB0aW1lb3V0IGhhbmRsZXIgd29uJ3QgZ2V0IGNh
bGxlZCBmb3IgdXAgdG8gYSBzZWNvbmQsCisgICAgLy8gd2hpY2ggd291bGQgbGVhZCB0byBwb29y
IHJlc3BvbnNpdmVuZXNzLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1l
ckludGVydmFsKDAuMDA0KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82372</attachid>
            <date>2011-02-14 15:23:57 -0800</date>
            <delta_ts>2011-02-14 17:20:03 -0800</delta_ts>
            <desc>Addressed code review feedback.</desc>
            <filename>bug-54312-20110214152356.patch</filename>
            <type>text/plain</type>
            <size>57773</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4gTmV3IEFQSXMgd2VyZSBuZWNlc3NhcmlseSBh
ZGRlZCB0bworICAgICAgICBhbGwgcG9ydHMgdG8gYWxsb3cgaW1wbGVtZW50aW5nIHRoaXMgbWV0
aG9kIGFuZCByZXNldHRpbmcgdGhlCisgICAgICAgIHN0YXRlIGZvciBlYWNoIG5ldyB0ZXN0LiBC
ZWNhdXNlIHRoZSBuZXcgc2V0dGluZ3MgYXJlbid0CisgICAgICAgIHBlcnNpc3RlbnQsIGEgZGVj
aXNpb24gd2FzIG1hZGUgZm9yIGVhY2ggcG9ydCB3aGV0aGVyIHRvIGV4cG9zZQorICAgICAgICB0
aGUgbmV3IEFQSXMgaW4gdGhlIHBvcnQncyBTZXR0aW5ncy1saWtlIG9iamVjdCwgb3IgdmlhIGEK
KyAgICAgICAgZGlmZmVyZW50IGNsYXNzIChnZW5lcmFsbHksIGluIHRoZSBjb25jZXB0IG9mIFdl
YlZpZXcpLgorCisgICAgICAgIElkZWFsbHkgY2hhbmdpbmcgdGhlIHBhZ2UncyBtaW5pbXVtIHRp
bWVyIGludGVydmFsIHdvdWxkIGFmZmVjdAorICAgICAgICBkZWRpY2F0ZWQgd29ya2VycywgYnV0
IHRoaXMgaXMgdG9vIG11Y2ggdG8gZG8gaW4gYW4gaW5pdGlhbCBwYXRjaCwKKyAgICAgICAgc28g
YSBGSVhNRSBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBUZXN0ZWQgd2l0aDoKKyAgICAgICAg
ICAtIFRoZSBuZXcgbGF5b3V0IHRlc3RzIG9uIHRoZSBXZWJLaXQgTWFjIGFuZCBDaHJvbWl1bSAo
TWFjLAorICAgICAgICAgICAgTGludXgpIERSVCBwb3J0cy4KKyAgICAgICAgICAtIEhvb2tlZCB1
cCB0aGUgbmV3IEFQSSBpbiBDaHJvbWl1bSBhbmQgcmFuIHNvbWUgc2ltcGxlIG1hbnVhbAorICAg
ICAgICAgICAgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpET01UaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmFkanVz
dE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnRl
cnZhbENsYW1wZWRUb01pbmltdW0pOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpkZWZhdWx0TWluVGltZXJJbnRlcnZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6Om1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNl
OjphdWdtZW50RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVn
bWVudFJlcGVhdEludGVydmFsKToKKwogMjAxMS0wMi0xNCAgUHJhdGlrIFNvbGFua2kgIDxwc29s
YW5raUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlYWQgY29kZSBpbiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc4NTAxKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5NSw2
ICs3OTUsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlsCiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MxOHNldE1pbmltdW1Gb250U2l6ZUVpCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MxOHNldFdlYkF1ZGlvRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxOW1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93
RGVidWdCb3JkZXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1p
bHlFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50
YXN5Rm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBAIC04MjQsNiArODI1LDcgQEAg
X19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXROZWVkc0xlb3BhcmRNYQogX19aTjdXZWJDb3JlOFNl
dHRpbmdzMjVzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5n
czI1c2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19fWk43V2ViQ29yZThTZXR0aW5n
czI2ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZz
ZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI2c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMjdzZXRGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGhFUktOM1dURjZTdHJpbmdFCkBAIC04MzMs
NiArODM1LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRTcGF0aWFsTmF2aWdhdAogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjhzZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI5c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMjlzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEViCitfX1pON1dl
YkNvcmU4U2V0dGluZ3MyOXNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsRWQKIF9fWk43V2Vi
Q29yZThTZXR0aW5nczI5c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRFYgogX19aTjdXZWJD
b3JlOFNldHRpbmdzMzBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNFYgogX19aTjdXZWJD
b3JlOFNldHRpbmdzMzFzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkRWIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQzLDYgKzIyNDMsMTQgQEAgS1VS
TCBEb2N1bWVudDo6dmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IAogICAgIHJldHVybiBjb21wbGV0
ZVVSTCh1cmwpOwogfQogCitkb3VibGUgRG9jdW1lbnQ6Om1pbmltdW1UaW1lckludGVydmFsKCkg
Y29uc3QKK3sKKyAgICBQYWdlKiBwID0gcGFnZSgpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0
dXJuIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Om1pbmltdW1UaW1lckludGVydmFsKCk7CisgICAg
cmV0dXJuIHAtPnNldHRpbmdzKCktPm1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwogRXZlbnRU
YXJnZXQqIERvY3VtZW50OjplcnJvckV2ZW50VGFyZ2V0KCkKIHsKICAgICByZXR1cm4gZG9tV2lu
ZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzNSw2ICsxMTM1
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHZpcnR1YWxVUkwoKSBjb25z
dDsgLy8gU2FtZSBhcyB1cmwoKSwgYnV0IG5lZWRlZCBmb3IgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB0byBpbXBsZW1lbnQgaXQgd2l0aG91dCBhIHBlcmZvcm1hbmNlIGxvc3MgZm9yIGRpcmVjdCBj
YWxscy4KICAgICB2aXJ0dWFsIEtVUkwgdmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYp
IGNvbnN0OyAvLyBTYW1lIGFzIGNvbXBsZXRlVVJMKCkgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBh
Ym92ZS4KIAorICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7
CisKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlVGl0bGUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAJKHJldmlzaW9uIDc4NTAxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwu
aCIKKyNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVVSTC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCkBAIC00MSw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQu
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTQwNiw2ICs0MDgsMjYgQEAgRmlsZVRo
cmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKK3ZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9s
ZE1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIGlmIChtaW5pbXVtVGltZXJJbnRlcnZhbCgp
ICE9IG9sZE1pbmltdW1UaW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6
aXRlcmF0b3IgaXRlciA9IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVu
ZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29u
ZDsKKyAgICAgICAgICAgIHRpbWVyLT5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRNaW5p
bXVtVGltZXJJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2RvdWJsZSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgLy8g
VGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgRE9NVGltZXIncyBkZWZhdWx0
CisgICAgLy8gbWluaW11bSB0aW1lciBpbnRlcnZhbC4gRklYTUU6IHRvIG1ha2UgaXQgd29yayB3
aXRoIGRlZGljYXRlZAorICAgIC8vIHdvcmtlcnMsIHdlIHdpbGwgaGF2ZSB0byBvdmVycmlkZSBp
dCBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICAvLyBzdWJjbGFzcywgYW5kIHByb3ZpZGUgYSB3YXkg
dG8gZW51bWVyYXRlIGEgRG9jdW1lbnQncyBkZWRpY2F0ZWQKKyAgICAvLyB3b3JrZXJzIHNvIHdl
IGNhbiB1cGRhdGUgdGhlbSBhbGwuCisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbCgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjp+VGFz
aygpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgJKHJldmlzaW9uIDc4NTAxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RvcEZpbGVUaHJlYWQoKTsKICNlbmRpZgogCisg
ICAgICAgIC8vIEludGVydmFsIGlzIGluIHNlY29uZHMuCisgICAgICAgIHZvaWQgYWRqdXN0TWlu
aW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAg
ICAgdmlydHVhbCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3Jp
Z2luIGZvciB0aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5n
ZXJvdXMgdG8gY2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApA
QCAtMTc2LDcgKzE4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2l0
ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHM7CiAgICAgICAgIGJvb2wgbV9pbkRlc3RydWN0b3I7CiAK
LSAgICAgICAgSGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsKKyAgICAgICAgdHlw
ZWRlZiBIYXNoTWFwPGludCwgRE9NVGltZXIqPiBUaW1lb3V0TWFwOworICAgICAgICBUaW1lb3V0
TWFwIG1fdGltZW91dHM7CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgSGFzaFNldDxTdHJp
bmc+IG1fcHVibGljQmxvYlVSTHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2
aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTMgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGludCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiBzdGF0aWMgY29uc3QgZG91Ymxl
IG9uZU1pbGxpc2Vjb25kID0gMC4wMDE7Ci1kb3VibGUgRE9NVGltZXI6OnNfbWluVGltZXJJbnRl
cnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKK2RvdWJsZSBET01UaW1lcjo6c19taW5E
ZWZhdWx0VGltZXJJbnRlcnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKIAogc3RhdGlj
IGludCB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiAKIERPTVRpbWVyOjpET01UaW1lcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0
aW9uLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogICAgIDogU3VzcGVuZGFibGVUaW1l
cihjb250ZXh0KQogICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV9vcmlnaW5hbFRpbWVv
dXQodGltZW91dCkKIHsKICAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElkID0gMDsKICAg
ICArK2xhc3RVc2VkVGltZW91dElkOwpAQCAtNTgsMTAgKzU5LDcgQEAgRE9NVGltZXI6OkRPTVRp
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5hZGRUaW1lb3V0KG1fdGltZW91dElkLCB0aGlzKTsKIAotICAgIGRvdWJsZSBpbnRlcnZhbE1p
bGxpc2Vjb25kcyA9IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25k
KTsKLQotICAgIGlmIChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IHNfbWluVGltZXJJbnRlcnZhbCAm
JiBtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgaW50ZXJ2
YWxNaWxsaXNlY29uZHMgPSBzX21pblRpbWVySW50ZXJ2YWw7CisgICAgZG91YmxlIGludGVydmFs
TWlsbGlzZWNvbmRzID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKHRpbWVvdXQsIGNvbnRleHQt
Pm1pbmltdW1UaW1lckludGVydmFsKCkpOwogICAgIGlmIChzaW5nbGVTaG90KQogICAgICAgICBz
dGFydE9uZVNob3QoaW50ZXJ2YWxNaWxsaXNlY29uZHMpOwogICAgIGVsc2UKQEAgLTEwOCwxMCAr
MTA2LDExIEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZv
ciBub24tb25lLXNob3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlm
IChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkgPCBzX21pblRpbWVySW50ZXJ2
YWwpIHsKKyAgICAgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IGNvbnRleHQtPm1pbmltdW1U
aW1lckludGVydmFsKCk7CisgICAgICAgIGlmIChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdElu
dGVydmFsKCkgPCBtaW5pbXVtSW50ZXJ2YWwpIHsKICAgICAgICAgICAgIG1fbmVzdGluZ0xldmVs
Kys7CiAgICAgICAgICAgICBpZiAobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2
ZWwpCi0gICAgICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKHNfbWluVGltZXJJbnRl
cnZhbCAtIHJlcGVhdEludGVydmFsKCkpOworICAgICAgICAgICAgICAgIGF1Z21lbnRSZXBlYXRJ
bnRlcnZhbChtaW5pbXVtSW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMgcG9p
bnQsIGl0IGNhbiBkZWxldGUgdGhlIHRpbWVyLgpAQCAtMTUwLDQgKzE0OSwyMiBAQCB2b2lkIERP
TVRpbWVyOjpzdG9wKCkKICAgICBtX2FjdGlvbi5jbGVhcigpOwogfQogCit2b2lkIERPTVRpbWVy
OjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2
YWwpCit7CisgICAgaWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisg
ICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRl
cnZhbENsYW1wZWRUb01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lcklu
dGVydmFsKTsKKyAgICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVk
VG9NaW5pbXVtKG1fb3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPm1p
bmltdW1UaW1lckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBl
ZEludGVydmFsIC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGlt
ZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1U
aW1lckludGVydmFsKSBjb25zdAoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9
IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlm
IChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGlu
Z0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vj
b25kcyA9IG1pbmltdW1UaW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vj
b25kczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGlt
ZXIuaAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorICAgIGNsYXNzIFNldHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3Vz
cGVuZGFibGVUaW1lciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBu
ZXcgdGltZXIgb3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0
cyBpdApAQCAtNDYsMTggKzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KTsKIAotICAgICAgICAvLyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBz
ZWNvbmRzLCAwLjAwMSA9PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lcklu
dGVydmFsKCkgeyByZXR1cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHNldE1pblRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZh
bCA9IHZhbHVlOyB9CisgICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRo
aXMgYWxsb3dzIHRoZSBtaW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5n
ZWQgaW4gcmVzcG9uc2UKKyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRv
IHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICB2b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFs
KGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBET01UaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxTY2hlZHVsZWRB
Y3Rpb24+LCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGZpcmVkKCk7CiAKKyAgICAgICAgZG91YmxlIGludGVydmFsQ2xhbXBlZFRvTWluaW11bShp
bnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKSBjb25zdDsKKworICAgICAg
ICAvLyBUaGUgZGVmYXVsdCBtaW5pbXVtIGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNv
bmRzLCAwLjAwMSA9PSAxIG1zKS4KKyAgICAgICAgLy8gVGhlc2UgYXJlIG9ubHkgbW9kaWZpZWQg
dmlhIHN0YXRpYyBtZXRob2RzIGluIFNldHRpbmdzLgorICAgICAgICBzdGF0aWMgZG91YmxlIGRl
ZmF1bHRNaW5UaW1lckludGVydmFsKCkgeyByZXR1cm4gc19taW5EZWZhdWx0VGltZXJJbnRlcnZh
bDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChkb3Vi
bGUgdmFsdWUpIHsgc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9CisKICAgICAg
ICAgaW50IG1fdGltZW91dElkOwogICAgICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CiAgICAgICAg
IE93blB0cjxTY2hlZHVsZWRBY3Rpb24+IG1fYWN0aW9uOwotICAgICAgICBzdGF0aWMgZG91Ymxl
IHNfbWluVGltZXJJbnRlcnZhbDsKKyAgICAgICAgaW50IG1fb3JpZ2luYWxUaW1lb3V0OworICAg
ICAgICBzdGF0aWMgZG91YmxlIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3
ODUwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSw2ICsxNjEsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50
CiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCiAgICAgLCBtX2NhblN0
YXJ0TWVkaWEodHJ1ZSkKICAgICAsIG1fdmlld01vZGUoVmlld01vZGVXaW5kb3dlZCkKKyAgICAs
IG1fbWluaW11bVRpbWVySW50ZXJ2YWwoU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKCkpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBI
YXNoU2V0PFBhZ2UqPjsKQEAgLTgzMiw2ICs4MzMsMjEgQEAgYm9vbCBQYWdlOjpqYXZhU2NyaXB0
VVJMc0FyZUFsbG93ZWQoKSBjbwogICAgIHJldHVybiBtX2phdmFTY3JpcHRVUkxzQXJlQWxsb3dl
ZDsKIH0KIAordm9pZCBQYWdlOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11
bVRpbWVySW50ZXJ2YWwpCit7CisgICAgZG91YmxlIG9sZFRpbWVySW50ZXJ2YWwgPSBtX21pbmlt
dW1UaW1lckludGVydmFsOworICAgIG1fbWluaW11bVRpbWVySW50ZXJ2YWwgPSBtaW5pbXVtVGlt
ZXJJbnRlcnZhbDsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKKyAg
ICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPmFkanVzdE1pbmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOworICAgIH0K
K30KKworZG91YmxlIFBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKK30KKwogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCiBTcGVlY2hJbnB1dCogUGFnZTo6c3BlZWNoSW5wdXQoKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDc4NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgUGFnZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOworICAgICAgICBm
cmllbmQgY2xhc3MgU2V0dGluZ3M7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBz
Y2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKIApAQCAtMjk4LDYgKzI5OSw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIq
IHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAorICAgICAgICB2b2lkIHNldE1pbmlt
dW1UaW1lckludGVydmFsKGRvdWJsZSk7CisgICAgICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRl
cnZhbCgpIGNvbnN0OworCiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAg
ICBPd25QdHI8U2VsZWN0aW9uQ29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBA
IC0zODYsNiArMzkwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWaWV3TW9kZSBt
X3ZpZXdNb2RlOwogCiAgICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVu
dHM7CisKKyAgICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJl
dmlzaW9uIDc4NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzNCw5ICs0MzQsMjQgQEAgdm9pZCBTZXR0aW5nczo6c2V0RE9NUGFzdGVB
bGxvd2VkKGJvb2wgRAogICAgIG1faXNET01QYXN0ZUFsbG93ZWQgPSBET01QYXN0ZUFsbG93ZWQ7
CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJs
ZSBpbnRlcnZhbCkKK3sKKyAgICBET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwo
aW50ZXJ2YWwpOworfQorCitkb3VibGUgU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKCkKK3sKKyAgICByZXR1cm4gRE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKCk7
Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVy
dmFsKQogewotICAgIERPTVRpbWVyOjpzZXRNaW5UaW1lckludGVydmFsKGludGVydmFsKTsKKyAg
ICBtX3BhZ2UtPnNldE1pbmltdW1UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91Ymxl
IFNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5t
aW5pbXVtVGltZXJJbnRlcnZhbCgpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VzUGFnZUNh
Y2hlKGJvb2wgdXNlc1BhZ2VDYWNoZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlz
aW9uIDc4NTAxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDMsOCArMjAzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzZXRET01QYXN0ZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgaXNET01QYXN0ZUFsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CiAgICAgICAgIAotICAg
ICAgICBzdGF0aWMgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVy
dmFsIHNwZWNpZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0
TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vj
b25kcy4KKyAgICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgp
OwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7
IC8vIFBlci1wYWdlOyBpbml0aWFsaXplZCB0byBkZWZhdWx0IHZhbHVlLgorICAgICAgICBkb3Vi
bGUgbWluRE9NVGltZXJJbnRlcnZhbCgpOworCiAgICAgICAgIHZvaWQgc2V0VXNlc1BhZ2VDYWNo
ZShib29sKTsKICAgICAgICAgYm9vbCB1c2VzUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91
c2VzUGFnZUNhY2hlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24g
Nzg1MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCgp
IGNvbnN0OwogICAgIGRvdWJsZSByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
ZWF0SW50ZXJ2YWw7IH0KIAotICAgIHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBk
ZWx0YSkgeyBzZXROZXh0RmlyZVRpbWUobV9uZXh0RmlyZVRpbWUgKyBkZWx0YSk7IG1fcmVwZWF0
SW50ZXJ2YWwgKz0gZGVsdGE7IH0KKyAgICB2b2lkIGF1Z21lbnRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGRlbHRhKSB7IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgfQorICAg
IHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBhdWdtZW50RmlyZUlu
dGVydmFsKGRlbHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc4NTA5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFn
ZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTQzMTIKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisKIDIwMTEtMDItMTQgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWN0IHRvIGFjY2VsZXJhdGVkIGNvbXBv
c2l0aW5nIGNoYW5nZXMgYW5kIGFsbG9jYXRpb24gZmFpbHVyZXMgaW4gRHJhd2luZ0FyZWFJbXBs
OjpkaXNwbGF5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiA3ODUwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIFdl
YlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBtX3BhZ2UtPnNldEdy
b3VwTmFtZShtX3BhZ2VHcm91cC0+aWRlbnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZSgpOwotICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKKyAg
ICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAg
bV9kcmF3aW5nQXJlYSA9IERyYXdpbmdBcmVhOjpjcmVhdGUodGhpcywgcGFyYW1ldGVycyk7CiAg
ICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZTo6Y3JlYXRlTWFpbkZyYW1lKHRoaXMpOwpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTA5KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAx
MS0wMi0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWlu
aW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICogcHVi
bGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICAgLSBBZGRlZCBzZXREZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbCwKKyAgICAgICAgICAgIGRlZmF1bHRNaW5ET01UaW1lckludGVydmFsLCBzZXRN
aW5ET01UaW1lckludGVydmFsLCBhbmQKKyAgICAgICAgICAgIG1pbkRPTVRpbWVySW50ZXJ2YWwu
CisgICAgICAgICogc3JjL1dlYktpdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemUp
OgorICAgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01U
aW1lckludGVydmFsIHJhdGhlcgorICAgICAgICAgICAgdGhhbiBET01UaW1lciBkaXJlY3RseS4K
KyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRNaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAgICAg
ICAtIEltcGxlbWVudGVkIG5ldyBtZXRob2RzIG9uIFdlYlNldHRpbmdzLgorICAgICAgICAqIHNy
Yy9XZWJTZXR0aW5nc0ltcGwuaDoKKwogMjAxMS0wMi0xNCAgSmF5IFNvZmZpYW4gIDxqYXlzb2Zm
aWFuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9u
IDc4NTAxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCkgPSAwOwogCisgICAgV0VC
S0lUX0FQSSBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUp
OworICAgIFdFQktJVF9BUEkgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZh
bCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSkgPSAw
OworICAgIHZpcnR1YWwgZG91YmxlIG1pbkRPTVRpbWVySW50ZXJ2YWwoKSA9IDA7CisKKwogcHJv
dGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYktpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViS2l0LmNwcAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJLaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAotI2luY2x1ZGUgIkRP
TVRpbWVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBpbml0
aWFsaXplKFdlYktpdENsaWVudCogd2ViS2l0Q2xpZQogICAgIC8vIGNvZGVkIHdlYnNpdGVzIG91
dCB0aGVyZSB3aGljaCBkbyBjcmVhdGUgQ1BVLXNwaW5uaW5nIGxvb3BzLiAgVXNpbmcKICAgICAv
LyA0bXMgcHJldmVudHMgdGhlIENQVSBmcm9tIHNwaW5uaW5nIHRvbyBidXNpbHkgYW5kIHByb3Zp
ZGVzIGEgYmFsYW5jZQogICAgIC8vIGJldHdlZW4gQ1BVIHNwaW5uaW5nIGFuZCB0aGUgc21hbGxl
c3QgcG9zc2libGUgaW50ZXJ2YWwgdGltZXIuCi0gICAgV2ViQ29yZTo6RE9NVGltZXI6OnNldE1p
blRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgIFdlYkNvcmU6OlNldHRpbmdzOjpzZXREZWZhdWx0
TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAvLyBUaGVyZSBhcmUgc29tZSBjb2Rl
IHBhdGhzIChmb3IgZXhhbXBsZSwgcnVubmluZyBXZWJLaXQgaW4gdGhlIGJyb3dzZXIKICAgICAv
LyBwcm9jZXNzIGFuZCBjYWxsaW5nIGludG8gTG9jYWxTdG9yYWdlIGJlZm9yZSBhbnl0aGluZyBl
bHNlKSB3aGVyZSB0aGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDksNCArMzQ5
LDI0IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRJbnRlcmFjdGl2ZUZvcm0KICAgICBtX3Nl
dHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChlbmFibGVkKTsKIH0K
IAordm9pZCBXZWJTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91Ymxl
IGludGVydmFsKQoreworICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZh
bChpbnRlcnZhbCk7Cit9CisKK2RvdWJsZSBXZWJTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVy
SW50ZXJ2YWwoKQoreworICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50
ZXJ2YWwoKTsKK30KKwordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1pbkRPTVRpbWVySW50ZXJ2
YWwoZG91YmxlIGludGVydmFsKQoreworICAgIG1fc2V0dGluZ3MtPnNldE1pbkRPTVRpbWVySW50
ZXJ2YWwoaW50ZXJ2YWwpOworfQorCitkb3VibGUgV2ViU2V0dGluZ3NJbXBsOjptaW5ET01UaW1l
ckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gbV9zZXR0aW5ncy0+bWluRE9NVGltZXJJbnRlcnZh
bCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCShyZXZpc2lvbiA3ODUwMSkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDEsNiArMTAxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRC
cm93c2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEludGVyYWN0aXZlRm9y
bVZhbGlkYXRpb25FbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1l
ckludGVydmFsKGRvdWJsZSk7CisgICAgdmlydHVhbCBkb3VibGUgbWluRE9NVGltZXJJbnRlcnZh
bCgpOwogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1MDkpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wMi0xNCAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1l
ciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRo
b2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2QuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisKIDIwMTEtMDItMTEgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI3ODMzMS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDIsMyArNjQy
LDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaW5kU3RyaW4KICAgICByZXR1
cm4gY29yZSh3ZWJWaWV3KS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHRhcmdldFN0cmlu
ZyksIGZpbmRPcHRpb25zKTsKIH0KIAorZG91YmxlIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRl
ZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgY29yZSh3ZWJWaWV3KS0+c2V0dGluZ3MoKS0+c2V0TWlu
RE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
aAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKFdlYktpdFdlYlZp
ZXcqLCBjb25zdCBjaGFyKiB0ZXh0KTsKICAgICBzdGF0aWMgYm9vbCBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZShXZWJLaXRXZWJWaWV3KiwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBHZGtS
ZWN0YW5nbGUqKTsKICAgICBzdGF0aWMgYm9vbCBzZWxlY3RlZFJhbmdlKFdlYktpdFdlYlZpZXcq
LCBpbnQqIHN0YXJ0LCBpbnQqIGVuZCk7CisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluaW11
bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdlYlZpZXcKKyAgICBzdGF0
aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJWaWV3KiwgZG91YmxlKTsK
IAogICAgIC8vIEdDCiAgICAgc3RhdGljIHZvaWQgZ2NDb2xsZWN0SmF2YXNjcmlwdE9iamVjdHMo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTA5KQorKysgU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDIt
MTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0g
RE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVk
ZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAg
ICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgorICAgICAgICAoK1tXZWJW
aWV3IF9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdKToKKyAgICAgICAgKC1bV2ViVmlldyBf
c2V0TWluaW11bVRpbWVySW50ZXJ2YWw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oOgorCiAyMDExLTAyLTExICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA3ODUwMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjk0LDcgKzY5NCw3IEBAIC0g
KHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICAgICAgCiAgICAgICAg
IC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3JtIHN0cmF0ZWdpZXMuCiAgICAgICAgIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBTZXR0aW5nczo6c2V0TWluRE9N
VGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9u
ID0gdHJ1ZTsKICAgICB9CkBAIC0yNzM4LDYgKzI3MzgsMTcgQEAgKyAodm9pZClfc2V0TG9hZFJl
c291cmNlc1NlcmlhbGx5OihCT09MKQogICAgIHJlc291cmNlTG9hZFNjaGVkdWxlcigpLT5zZXRT
ZXJpYWxMb2FkaW5nRW5hYmxlZChzZXJpYWxpemUpOwogfQogCisrIChkb3VibGUpX2RlZmF1bHRN
aW5pbXVtVGltZXJJbnRlcnZhbAoreworICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1pbkRP
TVRpbWVySW50ZXJ2YWwoKTsKK30KKworLSAodm9pZClfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6
KGRvdWJsZSlpbnRlcnZhbEluU2Vjb25kcworeworICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkKKyAg
ICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwo
aW50ZXJ2YWxJblNlY29uZHMpOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBfV2ViU2Fm
ZUZvcndhcmRlcgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw2ICs1NzEsMjMgQEAgQ291bGQgYmUg
d29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAvLyBEZXByZWNhdGVkLiBVc2UgZmluZFN0cmluZy4K
IC0gKEJPT0wpc2VhcmNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9y
d2FyZCBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgc3Rh
cnRJblNlbGVjdGlvbjooQk9PTClzdGFydEluU2VsZWN0aW9uOwogCisvKiEKKyAgICBAbWV0aG9k
IGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgIEBkaXNjdXNzaW9uIFNob3VsZCBjb25z
aWRlciBtb3ZpbmcgdGhpcyB0byB0aGUgcHVibGljIEFQSS4KKyAgICBAcmVzdWx0IFJldHVybnMg
dGhlIGRlZmF1bHQgbWluaW11bSB0aW1lciBpbnRlcnZhbC4KKyovCisrIChkb3VibGUpX2RlZmF1
bHRNaW5pbXVtVGltZXJJbnRlcnZhbDsKKworLyohCisgICAgQG1ldGhvZCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbDoKKyAgICBAZGlzY3Vzc2lvbiBTZXRzIHRoZSBtaW5pbXVtIGludGVydmFsIGZv
ciBET01UaW1lcnMgaW4gdGhpcyBXZWJWaWV3LiBUaGlzIG1ldGhvZCBpcworICAgIGV4cG9zZWQg
aGVyZSBpbiB0aGUgTWFjIHBvcnQgcmF0aGVyIHRoYW4gdGhyb3VnaCBXZWJQcmVmZXJlbmNlcyAo
d2hpY2ggZ2VuZXJhbGx5CisgICAgZ292ZXJucyBTZXR0aW5ncykgYmVjYXVzZSB0aGlzIHZhbHVl
IGlzIHNvbWV0aGluZyBhZGp1c3RlZCBhdCBydW4gdGltZSwgbm90IHNldAorICAgIGdsb2JhbGx5
IHZpYSAiZGVmYXVsdHMgd3JpdGUiLiBTaG91bGQgY29uc2lkZXIgYWRkaW5nIHRoaXMgdG8gdGhl
IHB1YmxpYyBBUEkuCisgICAgQHBhcmFtIGludGVydmFsSW5TZWNvbmRzIFRoZSBuZXcgbWluaW11
bSB0aW1lciBpbnRlcnZhbCwgaW4gc2Vjb25kcy4KKyovCistICh2b2lkKV9zZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbDooZG91YmxlKWludGVydmFsSW5TZWNvbmRzOworCiBAZW5kCiAKIEBpbnRlcmZh
Y2UgV2ViVmlldyAoV2ViVmlld1ByaW50aW5nUHJpdmF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3ODUwOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXIt
cGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5
b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwg
bWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRlZmF1bHRNaW5pbXVt
VGltZXJJbnRlcnZhbCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0Lmg6CisKIDIwMTEtMDItMTQgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVu
YXJkQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDc4NTAxKQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk0Miw2ICs5NDIsMjEgQEAgUVN0cmluZ0xpc3QgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmNvbgogICAgIHJldHVybiBRU3RyaW5nTGlzdCgpOwogI2VuZGlmCiB9CisKK2RvdWJs
ZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkK
K3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9
CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmltdW1UaW1lckludGVydmFs
KFFXZWJQYWdlKiBwYWdlLCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgUGFnZSogY29yZVBhZ2Ug
PSBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSk7CisgICAgaWYgKCFjb3JlUGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29yZVBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50
ZXJ2YWwoaW50ZXJ2YWwpOworfQorCiAvLyBQcm92aWRlIGEgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aXRoIHByZXZpb3VzbHkgZXhwb3J0ZWQgcHJpdmF0ZSBzeW1ib2xzIGFzIG9mIFF0V2ViS2l0
IDQuNiByZWxlYXNlCiAKIHZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhRV2ViRnJhbWUqIGZyYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAkocmV2aXNpb24g
Nzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFFTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZShRV2ViRnJhbWUqKTsKICAgICBzdGF0
aWMgdm9pZCBhZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9yaWdpbiwgY29uc3QgUVN0
cmluZyYgZGVzdGluYXRpb24pOwogICAgIHN0YXRpYyBRU3RyaW5nTGlzdCBjb250ZXh0TWVudShR
V2ViUGFnZSopOworCisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2
YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdlYlZpZXcKKyAgICBzdGF0aWMgdm9pZCBzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbChRV2ViUGFnZSosIGRvdWJsZSk7CiB9OwogCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTA5KQorKysgU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGlt
ZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0
aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0
TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2Vi
Vmlld1ByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDExLTAyLTE0ICBC
cmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBCcmFkeSBFaWRzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzg1
MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYxMSw3ICsyNjExLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojppbml0
VwogI2VuZGlmCiAgICAgICAgIFdlYktpdFNldEFwcGxpY2F0aW9uQ2FjaGVQYXRoSWZOZWNlc3Nh
cnkoKTsKICAgICAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7Ci0gICAg
ICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICAgICAgU2V0
dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgICAgICBk
aWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5oCShyZXZpc2lvbiA3ODUwMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29y
a2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dERpc3BsYXlJc1N5bmNocm9ub3VzKCk7CiAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGRvdWJsZSAqaW50ZXJ2YWwpOwor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKAorICAgICAgICAvKiBbaW5dICovIGRvdWJsZSk7CisKICAgICAvLyBXZWJWaWV3CiAg
ICAgYm9vbCBzaG91bGRVc2VFbWJlZGRlZFZpZXcoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1By
aXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YlZpZXdQcml2YXRlLmlkbAkocmV2aXNpb24gNzg1MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw0ICsy
MzksMjEgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAgW2xvY2Fs
XSBIUkVTVUxUIHJlcG9ydEV4Y2VwdGlvbihbaW5dIEpTQ29udGV4dFJlZiBjb250ZXh0LCBbaW5d
IEpTVmFsdWVSZWYgZXhjZXB0aW9uKTsKIAogICAgIFtsb2NhbF0gSFJFU1VMVCBlbGVtZW50RnJv
bUpTKFtpbl0gSlNDb250ZXh0UmVmIGNvbnRleHQsIFtpbl0gSlNWYWx1ZVJlZiBub2RlT2JqZWN0
LCBbb3V0LCByZXR2YWxdIElET01FbGVtZW50KiogZWxlbWVudCk7CisKKworICAgIC8qIQorICAg
ICAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgICAgICBAZGlzY3Vz
c2lvbiBSZXR1cm5zIHRoZSBkZWZhdWx0IG1pbmltdW0gaW50ZXJ2YWwgZm9yIERPTVRpbWVycyBv
biBhbGwgcGFnZXMsIG5vdAorICAgICAgICBqdXN0IHRoZSBvbmUgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlpbnRlcnZhbDsKKyAgICAqLworICAgIEhS
RVNVTFQgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKFtvdXQsIHJldHZhbF0gZG91YmxlKiBp
bnRlcnZhbCk7CisKKyAgICAvKiEKKyAgICAgICAgQG1ldGhvZCBzZXRNaW5pbXVtVGltZXJJbnRl
cnZhbAorICAgICAgICBAZGlzY3Vzc2lvbiBTZXRzIHRoZSBtaW5pbXVtIGludGVydmFsIGZvciBE
T01UaW1lcnMgb24gdGhlIHdlYiBwYWdlIGFzc29jaWF0ZWQKKyAgICAgICAgd2l0aCB0aGUgcmVj
ZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlpbnRlcnZhbDsKKyAgICAqLworICAgIEhSRVNVTFQg
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoW2luXSBkb3VibGUgaW50ZXJ2YWwpOwogfQpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
Nzg1MDkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBA
QAorMjAxMS0wMi0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxp
bmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAg
IEltcGxlbWVudGVkIG5ldyBtZXRob2Qgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgaW4KKyAgICAg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgZm9yIGFsbCBwb3J0cy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldE1pbmltdW1U
aW1lckludGVydmFsQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0
YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1l
ckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNldCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVm
b3JlVGVzdGluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1U
aW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlBhZ2U6OnJlc2V0U2V0dGluZ3MpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJl
c2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisKIDIwMTEtMDIt
MTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4NTAxKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI2LDYgKzE5
MjYsMjAgQEAgc3RhdGljIGJvb2wgc2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpTQ29udAogICAgIHJl
dHVybiB0cnVlOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKKworICAgIGRvdWJsZSBtaW5pbXVtID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgTGF5
b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29u
dHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxl
ci0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobWluaW11bSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyB2b2lkIGxheW91dFRlc3RDb250
cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7CkBAIC0yMDczLDYgKzIwODcsNyBAQCBK
U1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgInNldElj
b25EYXRhYmFzZUVuYWJsZWQiLCBzZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5G
cmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCBzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tEZXZp
Y2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
Nzg1MDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZp
ZXdIZWlnaHQ7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSk7CisK
IHByaXZhdGU6CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4NTAxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcs
NiArMTQ3LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAg
IGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRJY29u
RGF0YWJhc2VFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VF
bmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
KTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAgIGJpbmRNZXRob2QoInNl
dE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25FcnJv
ciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOwogICAg
IGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJkxheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik7CkBAIC0xNTkzLDMgKzE1OTQsMTEg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYQogICAgICAgICByZXR1
cm47CiAgICAgcmVzdWx0LT5zZXQobV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2Vs
ZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBh
cmd1bWVudHNbMV0udG9JbnQzMigpKSk7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWluRE9N
VGltZXJJbnRlcnZhbChhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7Cit9CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDc4NTAxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBoYXNTcGVsbGluZ01hcmtlcihjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVy
dmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGljOgogICAg
IC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4K
ICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtRdWV1ZS5z
ZXRGcm96ZW4oZnJvemVuKTsgfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gNzg1MDEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMjYsOCAr
MTIyNiwxMCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpyZXNldCgpCiAgICAgbV93aW5kb3dSZWN0ID0g
V2ViUmVjdCgpOwogICAgIG1fcGFpbnRSZWN0ID0gV2ViUmVjdCgpOwogCi0gICAgaWYgKG1fd2Vi
V2lkZ2V0KQorICAgIGlmIChtX3dlYldpZGdldCkgewogICAgICAgICB3ZWJWaWV3KCktPm1haW5G
cmFtZSgpLT5zZXROYW1lKFdlYlN0cmluZygpKTsKKyAgICAgICAgd2ViVmlldygpLT5zZXR0aW5n
cygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKFdlYlNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbCgpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmlld0hvc3Q6OnNldFNlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGVkKQpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA3ODUwMSkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyOCw2ICs0MjgsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50
VmFsCiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKGluc3BlY3RvciksICJqYXZhc2NyaXB0LXBy
b2ZpbGluZy1lbmFibGVkIiwgRkFMU0UsIE5VTEwpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X3Nl
dF96b29tX2xldmVsKHdlYlZpZXcsIDEuMCk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh3ZWJWaWV3LCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpKTsKIAogICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cAkocmV2aXNpb24gNzg1MDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODAsMyArODgwLDkgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSAogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgaWYgbmVlZGVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTA3NTguCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1U
aW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1l
KTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVydmFs
KHdlYlZpZXcsIG1pbmltdW1UaW1lckludGVydmFsKTsKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDc4NTAxKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDE3LDYgKzEwMTcsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0
CiAgICAgW1t3ZWJWaWV3IHVuZG9NYW5hZ2VyXSByZW1vdmVBbGxBY3Rpb25zXTsKICAgICBbV2Vi
VmlldyBfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6W3dlYlZpZXcgZ3JvdXBOYW1lXV07
CiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgIFt3ZWJWaWV3
IF9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDpbV2ViVmlldyBfZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsXV07CiAKICAgICByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0JKHJldmlzaW9uIDc4NTAxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xh
eW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDMgKzEwMDMs
OCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVICiB7CiAgICAgW1dl
YlZpZXcgX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTpzZXJpYWxpemVdOwogfQorCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11
bVRpbWVySW50ZXJ2YWwpCit7CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldE1pbmltdW1U
aW1lckludGVydmFsOm1pbmltdW1UaW1lckludGVydmFsXTsKK30KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShyZXZpc2lvbiA3ODUwMSkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDUsNiArMjA1LDggQEAgdm9pZCBXZWJQYWdlOjpyZXNldFNldHRpbmdzKCkKICAg
ICBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUoMCk7IC8vIHJlc2V0IHRvIGRl
ZmF1bHQKICAgICBzZXR0aW5ncygpLT5zZXRVc2VyU3R5bGVTaGVldFVybChRVXJsKCkpOyAvLyBy
ZXNldCB0byBkZWZhdWx0CiAKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwodGhpcywgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRlZmF1bHRNaW5E
T01UaW1lckludGVydmFsKCkpOworCiAgICAgbV9wZW5kaW5nR2VvbG9jYXRpb25SZXF1ZXN0cy5j
bGVhcigpOwogfQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNzg1MDEpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODM2LDUgKzgzNiwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphZGRVUkxUb1JlZGly
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVSTFRvUmVkaXJlY3Qob3JpZ2luLCBk
ZXN0aW5hdGlvbik7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1U
aW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobV9kcnQtPndlYlBhZ2Uo
KSwgbWluaW11bVRpbWVySW50ZXJ2YWwpOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA3ODUwMSkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw4IEBAIHB1YmxpYyBzbG90czoKICAgICBRU3RyaW5n
IHBhZ2VQcm9wZXJ0eShjb25zdCBRU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVy
KTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFFTdHJpbmcmIHNvdXJjZUNvZGUp
OwogCisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpOworCiBwcml2YXRl
IHNsb3RzOgogICAgIHZvaWQgcHJvY2Vzc1dvcmsoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA3ODUwMSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg2Niw2ICs4NjYsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3Rh
dAogICAgIGlmICghd2ViVmlld1ByaXZhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGRvdWJs
ZSBtaW5pbXVtSW50ZXJ2YWwgPSAwOworICAgIGlmIChTVUNDRUVERUQod2ViVmlld1ByaXZhdGUt
PmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgmbWluaW11bUludGVydmFsKSkpCisgICAgICAg
IHdlYlZpZXdQcml2YXRlLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbChtaW5pbXVtSW50ZXJ2YWwp
OworCiAgICAgQ09NUHRyPElXZWJJbnNwZWN0b3I+IGluc3BlY3RvcjsKICAgICBpZiAoU1VDQ0VF
REVEKHdlYlZpZXdQcml2YXRlLT5pbnNwZWN0b3IoJmluc3BlY3RvcikpKQogICAgICAgICBpbnNw
ZWN0b3ItPnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKEZBTFNFKTsKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAkocmV2aXNpb24gNzg1MDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMwLDMgKzE0MzAsMTYgQEAg
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSAogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1U
aW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBDT01QdHI8
SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmll
dykpKQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3
UHJpdmF0ZShRdWVyeSwgd2ViVmlldyk7CisgICAgaWYgKCF2aWV3UHJpdmF0ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdmlld1ByaXZhdGUtPnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmlt
dW1UaW1lckludGVydmFsKTsKK30KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTA5KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDIt
MTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0g
RE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICAqIGZhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFs
LWFuZC1yZXNldC1wYXJ0LTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJl
c2V0LXBhcnQtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgICAtIENoYWluZWQgdGVzdHMgKHRoZSBh
c3N1bXB0aW9uIGlzIHRoYXQgdGhlIHJ1bi13ZWJraXQtdGVzdHMKKyAgICAgICAgICAgIGhhcm5l
c3Mgd2lsbCBydW4gdGhlbSBzZXF1ZW50aWFsbHksIHdoaWNoIGlzIGEgcmVhc29uYWJseSBnb29k
CisgICAgICAgICAgICBhc3N1bXB0aW9uKSB3aGljaCB2ZXJpZnkgdGhhdCB0aGUgbWluaW11bSB0
aW1lciBpbnRlcnZhbCBpcworICAgICAgICAgICAgcmVzZXQgYmV0d2VlbiB0ZXN0cy4KKyAgICAg
ICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRt
bDogQWRkZWQuCisgICAgICAgICAgLSBWZXJpZmllcyB0aGF0IGluY3JlYXNpbmcgdGhlIG1pbmlt
dW0gdGltZXIgaW50ZXJ2YWwgY2F1c2VzCisgICAgICAgICAgICBmYXN0IHRpbWVycyB0byBydW4g
c2xvd2x5LgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2Ut
bWluLWludGVydmFsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGlt
ZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAg
ICAgICAgLSBWZXJpZmllcyB0aGF0IGRlY3JlYXNpbmcgdGhlIG1pbmltdW0gdGltZXIgaW50ZXJ2
YWwgY2F1c2VzCisgICAgICAgICAgICBwcmV2aW91c2x5IHNsb3dlZC1kb3duIHRpbWVycyB0byBi
ZSByZWV2YWx1YXRlZCBpbW1lZGlhdGVseS4KKwogMjAxMS0wMi0xNCAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gdGVz
dCBleHBlY3RhdGlvbnMgdXBkYXRlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZh
bC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0x
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1y
ZXNldC1wYXJ0LTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1l
ci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFu
ZC1yZXNldC1wYXJ0LTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50
ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9m
dGVuIHRoYW4gdHdpY2UgYSBzZWNvbmQuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoMC41KTsKKworICAgIC8vIFBhcnQgMiBvZiB0aGlzIHRlc3QgKHdo
aWNoIHdpbGwgbGlrZWx5IGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5CisgICAgLy8gYWZ0ZXIgdGhp
cyBvbmUgYnkgdGhlIGhhcm5lc3MpIHZlcmlmaWVzIHRoYXQgdGhlIG1pbmltdW0gdGltZXIKKyAg
ICAvLyBpbnRlcnZhbCBpcyByZXNldCBiZXR3ZWVuIHRlc3RzLgorCisgICAgbG9nKCJQQVNTIik7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0
LXBhcnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0y
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2Ut
bWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFy
dC0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3Vu
dCA9IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAg
ICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dU
aW1lb3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRp
ZWQgc29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGlt
ZXIuY3BwLgorICAgIGlmIChjb3VudCA+IDEwKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBl
bHNlCisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVz
Iik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
ICAgIC8vIFRpbWVycyBzaG91bGQgYmUgcnVubmluZyBhdCBmdWxsIHNwZWVkLCBub3QgYXQgdGhl
IHRocm90dGxlZAorICAgIC8vIHJhdGUgc2V0IGJ5IHBhcnQgMSBvZiB0aGlzIHRlc3QuCisKKyAg
ICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChm
YXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNy
ZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1l
ci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyht
c2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRp
bWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91
dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAg
Ly8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAg
IC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQg
PCAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwg
LS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAo
IXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCBy
ZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4g
bm8gbW9yZSBvZnRlbiB0aGFuIHR3aWNlIGEgc2Vjb25kLgorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDAuNSk7CisKKyAgICBzZXRUaW1lb3V0KHNsb3dU
aW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIs
IDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50
ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
dGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVj
cmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rp
b24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChm
YXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIo
KSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRv
IHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBp
ZiAoY291bnQgPiAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBs
b2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRo
aXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRp
bWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIG9uY2UgcGVyIHNlY29uZC4KKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgxLjApOworCisgICAgc2V0VGlt
ZW91dChzbG93VGltZW91dEhhbmRsZXIsIDUwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91
dEhhbmRsZXIsIDEpOworCisgICAgLy8gQWxsb3cgdGltZXJzIHRvIHJ1biBxdWlja2x5IGFnYWlu
LgorICAgIC8vIElmIHRoaXMgZG9lc24ndCBjYXVzZSB0aW1lcnMgdG8gZ2V0IHJlLWV2YWx1YXRl
ZCBpbW1lZGlhdGVseSwKKyAgICAvLyB0aGUgZmFzdCB0aW1lb3V0IGhhbmRsZXIgd29uJ3QgZ2V0
IGNhbGxlZCBmb3IgdXAgdG8gYSBzZWNvbmQsCisgICAgLy8gd2hpY2ggd291bGQgbGVhZCB0byBw
b29yIHJlc3BvbnNpdmVuZXNzLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1U
aW1lckludGVydmFsKDAuMDA0KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82391</attachid>
            <date>2011-02-14 17:20:07 -0800</date>
            <delta_ts>2011-02-14 19:00:21 -0800</delta_ts>
            <desc>Fixed qt and win build failures</desc>
            <filename>bug-54312-20110214172006.patch</filename>
            <type>text/plain</type>
            <size>58265</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODQgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4gTmV3IEFQSXMgd2VyZSBuZWNlc3NhcmlseSBh
ZGRlZCB0bworICAgICAgICBhbGwgcG9ydHMgdG8gYWxsb3cgaW1wbGVtZW50aW5nIHRoaXMgbWV0
aG9kIGFuZCByZXNldHRpbmcgdGhlCisgICAgICAgIHN0YXRlIGZvciBlYWNoIG5ldyB0ZXN0LiBC
ZWNhdXNlIHRoZSBuZXcgc2V0dGluZ3MgYXJlbid0CisgICAgICAgIHBlcnNpc3RlbnQsIGEgZGVj
aXNpb24gd2FzIG1hZGUgZm9yIGVhY2ggcG9ydCB3aGV0aGVyIHRvIGV4cG9zZQorICAgICAgICB0
aGUgbmV3IEFQSXMgaW4gdGhlIHBvcnQncyBTZXR0aW5ncy1saWtlIG9iamVjdCwgb3IgdmlhIGEK
KyAgICAgICAgZGlmZmVyZW50IGNsYXNzIChnZW5lcmFsbHksIGluIHRoZSBjb25jZXB0IG9mIFdl
YlZpZXcpLgorCisgICAgICAgIElkZWFsbHkgY2hhbmdpbmcgdGhlIHBhZ2UncyBtaW5pbXVtIHRp
bWVyIGludGVydmFsIHdvdWxkIGFmZmVjdAorICAgICAgICBkZWRpY2F0ZWQgd29ya2VycywgYnV0
IHRoaXMgaXMgdG9vIG11Y2ggdG8gZG8gaW4gYW4gaW5pdGlhbCBwYXRjaCwKKyAgICAgICAgc28g
YSBGSVhNRSBoYXMgYmVlbiBhZGRlZC4KKworICAgICAgICBUZXN0ZWQgd2l0aDoKKyAgICAgICAg
ICAtIFRoZSBuZXcgbGF5b3V0IHRlc3RzIG9uIHRoZSBXZWJLaXQgTWFjIGFuZCBDaHJvbWl1bSAo
TWFjLAorICAgICAgICAgICAgTGludXgpIERSVCBwb3J0cy4KKyAgICAgICAgICAtIEhvb2tlZCB1
cCB0aGUgbmV3IEFQSSBpbiBDaHJvbWl1bSBhbmQgcmFuIHNvbWUgc2ltcGxlIG1hbnVhbAorICAg
ICAgICAgICAgdGVzdHMuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpET01UaW1lcik6CisgICAgICAgIChXZWJD
b3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmFkanVz
dE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnRl
cnZhbENsYW1wZWRUb01pbmltdW0pOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpkZWZhdWx0TWluVGltZXJJbnRlcnZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6Om1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5oOgorICAgICAgICAoV2ViQ29yZTo6VGltZXJCYXNl
OjphdWdtZW50RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVn
bWVudFJlcGVhdEludGVydmFsKToKKwogMjAxMS0wMi0xNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJp
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIENvcHkvcGFzdGUgZnJvbSBhIFdlYktpdCB3aW5kb3cg
dG8gYSBUZXh0RWRpdCB3aW5kb3cgbG9zZXMgZm9udHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29y
a2luZyBjb3B5KQpAQCAtNzk2LDYgKzc5Niw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0
Rml4ZWRGb250RmFtaWwKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0TWluaW11bUZvbnRTaXpl
RWkKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0
b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0V2ViQXVkaW9FbmFibGVkRWIK
K19fWk43V2ViQ29yZThTZXR0aW5nczE5bWluRE9NVGltZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MxOXNldFNob3dEZWJ1Z0JvcmRlcnNFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyMHNldEZhbnRhc3lGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UK
QEAgLTgyNSw2ICs4MjYsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldE5lZWRzTGVvcGFy
ZE1hCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRFYgog
X19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRTaG91bGRQcmludEJhY2tncm91bmRzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI1c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSS05TXzRLVVJMRQor
X19aTjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbEV2CiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyNnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrc0Vi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aEVSS04z
V1RGNlN0cmluZ0UKQEAgLTgzNCw2ICs4MzYsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3Nl
dFNwYXRpYWxOYXZpZ2F0CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyOHNldEZvcmNlRlRQRGlyZWN0
b3J5TGlzdGluZ3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlzZXRBY2NlbGVyYXRlZDJkQ2Fu
dmFzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyOXNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczI5c2V0RGVmYXVsdE1pbkRPTVRpbWVy
SW50ZXJ2YWxFZAogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlzZXRXZWJBcmNoaXZlRGVidWdNb2Rl
RW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMHNldEFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMXNldEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmRFYgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3ODUyMykK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
NDMsNiArMjI0MywxNCBAQCBLVVJMIERvY3VtZW50Ojp2aXJ0dWFsQ29tcGxldGVVUkwoY29uc3Qg
CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCk7CiB9CiAKK2RvdWJsZSBEb2N1bWVudDo6bWlu
aW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdAoreworICAgIFBhZ2UqIHAgPSBwYWdlKCk7CisgICAg
aWYgKCFwKQorICAgICAgICByZXR1cm4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRp
bWVySW50ZXJ2YWwoKTsKKyAgICByZXR1cm4gcC0+c2V0dGluZ3MoKS0+bWluRE9NVGltZXJJbnRl
cnZhbCgpOworfQorCiBFdmVudFRhcmdldCogRG9jdW1lbnQ6OmVycm9yRXZlbnRUYXJnZXQoKQog
ewogICAgIHJldHVybiBkb21XaW5kb3coKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTM1LDYgKzExMzUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgS1VS
TCYgdmlydHVhbFVSTCgpIGNvbnN0OyAvLyBTYW1lIGFzIHVybCgpLCBidXQgbmVlZGVkIGZvciBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIGltcGxlbWVudCBpdCB3aXRob3V0IGEgcGVyZm9ybWFu
Y2UgbG9zcyBmb3IgZGlyZWN0IGNhbGxzLgogICAgIHZpcnR1YWwgS1VSTCB2aXJ0dWFsQ29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7IC8vIFNhbWUgYXMgY29tcGxldGVVUkwoKSBmb3Ig
dGhlIHNhbWUgcmVhc29uIGFzIGFib3ZlLgogCisgICAgdmlydHVhbCBkb3VibGUgbWluaW11bVRp
bWVySW50ZXJ2YWwoKSBjb25zdDsKKwogICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0OwogCiAg
ICAgdm9pZCB1cGRhdGVUaXRsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJCbG9iLmgi
CiAjaW5jbHVkZSAiQmxvYlVSTC5oIgorI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAi
RE9NVVJMLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRhc2su
aCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgpAQCAtNDA2
LDYgKzQwOCwyNiBAQCBGaWxlVGhyZWFkKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpmaWxlCiB9
CiAjZW5kaWYKIAordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphZGp1c3RNaW5pbXVtVGlt
ZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAgaWYgKG1p
bmltdW1UaW1lckludGVydmFsKCkgIT0gb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpIHsKKyAgICAg
ICAgZm9yIChUaW1lb3V0TWFwOjppdGVyYXRvciBpdGVyID0gbV90aW1lb3V0cy5iZWdpbigpOyBp
dGVyICE9IG1fdGltZW91dHMuZW5kKCk7ICsraXRlcikgeworICAgICAgICAgICAgRE9NVGltZXIq
IHRpbWVyID0gaXRlci0+c2Vjb25kOworICAgICAgICAgICAgdGltZXItPmFkanVzdE1pbmltdW1U
aW1lckludGVydmFsKG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworZG91YmxlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Om1pbmltdW1UaW1lckludGVydmFs
KCkgY29uc3QKK3sKKyAgICAvLyBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRo
ZSBET01UaW1lcidzIGRlZmF1bHQKKyAgICAvLyBtaW5pbXVtIHRpbWVyIGludGVydmFsLiBGSVhN
RTogdG8gbWFrZSBpdCB3b3JrIHdpdGggZGVkaWNhdGVkCisgICAgLy8gd29ya2Vycywgd2Ugd2ls
bCBoYXZlIHRvIG92ZXJyaWRlIGl0IGluIHRoZSBhcHByb3ByaWF0ZQorICAgIC8vIHN1YmNsYXNz
LCBhbmQgcHJvdmlkZSBhIHdheSB0byBlbnVtZXJhdGUgYSBEb2N1bWVudCdzIGRlZGljYXRlZAor
ICAgIC8vIHdvcmtlcnMgc28gd2UgY2FuIHVwZGF0ZSB0aGVtIGFsbC4KKyAgICByZXR1cm4gU2V0
dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9CisKIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s6On5UYXNrKCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
NiArMTUyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzdG9wRmlsZVRo
cmVhZCgpOwogI2VuZGlmCiAKKyAgICAgICAgLy8gSW50ZXJ2YWwgaXMgaW4gc2Vjb25kcy4KKyAg
ICAgICAgdm9pZCBhZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRp
bWVySW50ZXJ2YWwpOworICAgICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZh
bCgpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBFeHBsaWNpdGx5IG92ZXJy
aWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgc2NyaXB0IGNvbnRleHQuCiAgICAgICAg
IC8vIE5vdGU6IEl0IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBv
ZiBhIHNjcmlwdCBjb250ZXh0CkBAIC0xNzYsNyArMTgwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0czsKICAgICAgICAgYm9v
bCBtX2luRGVzdHJ1Y3RvcjsKIAotICAgICAgICBIYXNoTWFwPGludCwgRE9NVGltZXIqPiBtX3Rp
bWVvdXRzOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBET01UaW1lcio+IFRpbWVvdXRN
YXA7CisgICAgICAgIFRpbWVvdXRNYXAgbV90aW1lb3V0czsKIAogI2lmIEVOQUJMRShCTE9CKQog
ICAgICAgICBIYXNoU2V0PFN0cmluZz4gbV9wdWJsaWNCbG9iVVJMczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NVGltZXIuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyArMzksMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgaW50IG1heFRpbWVyTmVzdGluZ0xldmVsID0gNTsK
IHN0YXRpYyBjb25zdCBkb3VibGUgb25lTWlsbGlzZWNvbmQgPSAwLjAwMTsKLWRvdWJsZSBET01U
aW1lcjo6c19taW5UaW1lckludGVydmFsID0gMC4wMTA7IC8vIDEwIG1pbGxpc2Vjb25kcworZG91
YmxlIERPTVRpbWVyOjpzX21pbkRlZmF1bHRUaW1lckludGVydmFsID0gMC4wMTA7IC8vIDEwIG1p
bGxpc2Vjb25kcwogCiBzdGF0aWMgaW50IHRpbWVyTmVzdGluZ0xldmVsID0gMDsKIAogRE9NVGlt
ZXI6OkRPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8
U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiAg
ICAgOiBTdXNwZW5kYWJsZVRpbWVyKGNvbnRleHQpCiAgICAgLCBtX2FjdGlvbihhY3Rpb24pCisg
ICAgLCBtX29yaWdpbmFsVGltZW91dCh0aW1lb3V0KQogewogICAgIHN0YXRpYyBpbnQgbGFzdFVz
ZWRUaW1lb3V0SWQgPSAwOwogICAgICsrbGFzdFVzZWRUaW1lb3V0SWQ7CkBAIC01OCwxMCArNTks
NyBAQCBET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAKICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmFkZFRpbWVvdXQobV90aW1lb3V0SWQsIHRoaXMpOwogCi0g
ICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNvbmRzID0gbWF4KG9uZU1pbGxpc2Vjb25kLCB0aW1l
b3V0ICogb25lTWlsbGlzZWNvbmQpOwotCi0gICAgaWYgKGludGVydmFsTWlsbGlzZWNvbmRzIDwg
c19taW5UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xl
dmVsKQotICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IHNfbWluVGltZXJJbnRlcnZhbDsK
KyAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSBpbnRlcnZhbENsYW1wZWRUb01pbmlt
dW0odGltZW91dCwgY29udGV4dC0+bWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CiAgICAgaWYgKHNp
bmdsZVNob3QpCiAgICAgICAgIHN0YXJ0T25lU2hvdChpbnRlcnZhbE1pbGxpc2Vjb25kcyk7CiAg
ICAgZWxzZQpAQCAtMTA4LDEwICsxMDYsMTEgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogCiAg
ICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYgKGlzQWN0
aXZlKCkpIHsKLSAgICAgICAgaWYgKHJlcGVhdEludGVydmFsKCkgJiYgcmVwZWF0SW50ZXJ2YWwo
KSA8IHNfbWluVGltZXJJbnRlcnZhbCkgeworICAgICAgICBkb3VibGUgbWluaW11bUludGVydmFs
ID0gY29udGV4dC0+bWluaW11bVRpbWVySW50ZXJ2YWwoKTsKKyAgICAgICAgaWYgKHJlcGVhdElu
dGVydmFsKCkgJiYgcmVwZWF0SW50ZXJ2YWwoKSA8IG1pbmltdW1JbnRlcnZhbCkgewogICAgICAg
ICAgICAgbV9uZXN0aW5nTGV2ZWwrKzsKICAgICAgICAgICAgIGlmIChtX25lc3RpbmdMZXZlbCA+
PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgICAgICAgICBhdWdtZW50UmVwZWF0SW50
ZXJ2YWwoc19taW5UaW1lckludGVydmFsIC0gcmVwZWF0SW50ZXJ2YWwoKSk7CisgICAgICAgICAg
ICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKG1pbmltdW1JbnRlcnZhbCAtIHJlcGVhdEludGVy
dmFsKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gTm8gYWNjZXNzIHRvIG1lbWJlciB2YXJp
YWJsZXMgYWZ0ZXIgdGhpcyBwb2ludCwgaXQgY2FuIGRlbGV0ZSB0aGUgdGltZXIuCkBAIC0xNTAs
NCArMTQ5LDIyIEBAIHZvaWQgRE9NVGltZXI6OnN0b3AoKQogICAgIG1fYWN0aW9uLmNsZWFyKCk7
CiB9CiAKK3ZvaWQgRE9NVGltZXI6OmFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBv
bGRNaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBpZiAobV9uZXN0aW5nTGV2ZWwgPCBtYXhU
aW1lck5lc3RpbmdMZXZlbCkKKyAgICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBwcmV2aW91c0Ns
YW1wZWRJbnRlcnZhbCA9IGludGVydmFsQ2xhbXBlZFRvTWluaW11bShtX29yaWdpbmFsVGltZW91
dCwgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOworICAgIGRvdWJsZSBuZXdDbGFtcGVkSW50ZXJ2
YWwgPSBpbnRlcnZhbENsYW1wZWRUb01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+bWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CisgICAgYXVnbWVudEZp
cmVJbnRlcnZhbChuZXdDbGFtcGVkSW50ZXJ2YWwgLSBwcmV2aW91c0NsYW1wZWRJbnRlcnZhbCk7
Cit9CisKK2RvdWJsZSBET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKGludCB0aW1l
b3V0LCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpIGNvbnN0Cit7CisgICAgZG91YmxlIGlu
dGVydmFsTWlsbGlzZWNvbmRzID0gbWF4KG9uZU1pbGxpc2Vjb25kLCB0aW1lb3V0ICogb25lTWls
bGlzZWNvbmQpOworCisgICAgaWYgKGludGVydmFsTWlsbGlzZWNvbmRzIDwgbWluaW11bVRpbWVy
SW50ZXJ2YWwgJiYgbV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAg
ICAgIGludGVydmFsTWlsbGlzZWNvbmRzID0gbWluaW11bVRpbWVySW50ZXJ2YWw7CisgICAgcmV0
dXJuIGludGVydmFsTWlsbGlzZWNvbmRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgU2V0dGluZ3M7CisKICAgICBjbGFzcyBE
T01UaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IFNldHRpbmdzOwogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RE9NVGltZXIoKTsKICAg
ICAgICAgLy8gQ3JlYXRlcyBhIG5ldyB0aW1lciBvd25lZCBieSBzcGVjaWZpZWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgc3RhcnRzIGl0CkBAIC00NiwxOCArNDksMjcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwogCi0gICAgICAgIC8vIFRoZSBsb3dlc3QgYWxsb3dhYmxl
IHRpbWVyIHNldHRpbmcgKGluIHNlY29uZHMsIDAuMDAxID09IDEgbXMpLgotICAgICAgICBzdGF0
aWMgZG91YmxlIG1pblRpbWVySW50ZXJ2YWwoKSB7IHJldHVybiBzX21pblRpbWVySW50ZXJ2YWw7
IH0KLSAgICAgICAgc3RhdGljIHZvaWQgc2V0TWluVGltZXJJbnRlcnZhbChkb3VibGUgdmFsdWUp
IHsgc19taW5UaW1lckludGVydmFsID0gdmFsdWU7IH0KKyAgICAgICAgLy8gQWRqdXN0IHRvIGEg
Y2hhbmdlIGluIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0J3MgbWluaW11bSB0aW1lciBpbnRl
cnZhbC4KKyAgICAgICAgLy8gVGhpcyBhbGxvd3MgdGhlIG1pbmltdW0gYWxsb3dhYmxlIGludGVy
dmFsIHRpbWUgdG8gYmUgY2hhbmdlZCBpbiByZXNwb25zZQorICAgICAgICAvLyB0byBldmVudHMg
bGlrZSBtb3ZpbmcgYSB0YWIgdG8gdGhlIGJhY2tncm91bmQuCisgICAgICAgIHZvaWQgYWRqdXN0
TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIERPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4sIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3Qp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsKIAorICAgICAgICBkb3VibGUgaW50ZXJ2
YWxDbGFtcGVkVG9NaW5pbXVtKGludCB0aW1lb3V0LCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2
YWwpIGNvbnN0OworCisgICAgICAgIC8vIFRoZSBkZWZhdWx0IG1pbmltdW0gYWxsb3dhYmxlIHRp
bWVyIHNldHRpbmcgKGluIHNlY29uZHMsIDAuMDAxID09IDEgbXMpLgorICAgICAgICAvLyBUaGVz
ZSBhcmUgb25seSBtb2RpZmllZCB2aWEgc3RhdGljIG1ldGhvZHMgaW4gU2V0dGluZ3MuCisgICAg
ICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoKSB7IHJldHVybiBzX21p
bkRlZmF1bHRUaW1lckludGVydmFsOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIHNldERlZmF1bHRN
aW5UaW1lckludGVydmFsKGRvdWJsZSB2YWx1ZSkgeyBzX21pbkRlZmF1bHRUaW1lckludGVydmFs
ID0gdmFsdWU7IH0KKwogICAgICAgICBpbnQgbV90aW1lb3V0SWQ7CiAgICAgICAgIGludCBtX25l
c3RpbmdMZXZlbDsKICAgICAgICAgT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gbV9hY3Rpb247Ci0g
ICAgICAgIHN0YXRpYyBkb3VibGUgc19taW5UaW1lckludGVydmFsOworICAgICAgICBpbnQgbV9v
cmlnaW5hbFRpbWVvdXQ7CisgICAgICAgIHN0YXRpYyBkb3VibGUgc19taW5EZWZhdWx0VGltZXJJ
bnRlcnZhbDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw3IEBAIFBhZ2U6OlBhZ2UoY29uc3QgUGFn
ZUNsaWVudHMmIHBhZ2VDbGllbnQKICAgICAsIG1fY3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6
ZSgtMSkKICAgICAsIG1fY2FuU3RhcnRNZWRpYSh0cnVlKQogICAgICwgbV92aWV3TW9kZShWaWV3
TW9kZVdpbmRvd2VkKQorICAgICwgbV9taW5pbXVtVGltZXJJbnRlcnZhbChTZXR0aW5nczo6ZGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKSkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAg
ICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpAQCAtODMyLDYgKzgzMywyMSBAQCBi
b29sIFBhZ2U6OmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpIGNvCiAgICAgcmV0dXJuIG1famF2
YVNjcmlwdFVSTHNBcmVBbGxvd2VkOwogfQogCit2b2lkIFBhZ2U6OnNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBkb3VibGUgb2xkVGlt
ZXJJbnRlcnZhbCA9IG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CisgICAgbV9taW5pbXVtVGltZXJJ
bnRlcnZhbCA9IG1pbmltdW1UaW1lckludGVydmFsOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dFdp
dGhXcmFwKGZhbHNlKSkgeworICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwob2xkVGlt
ZXJJbnRlcnZhbCk7CisgICAgfQorfQorCitkb3VibGUgUGFnZTo6bWluaW11bVRpbWVySW50ZXJ2
YWwoKSBjb25zdAoreworICAgIHJldHVybiBtX21pbmltdW1UaW1lckludGVydmFsOworfQorCiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIFNwZWVjaElucHV0KiBQYWdlOjpzcGVlY2hJbnB1dCgp
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBQYWdlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUGFnZSk7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyB2b2lkIHNjaGVkdWxlRm9yY2VkU3R5bGVSZWNhbGNGb3JBbGxQYWdlcygp
OwogCkBAIC0yOTgsNiArMjk5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOwogCisg
ICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKKyAgICAgICAgZG91
YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAgICAgICAgT3duUHRyPENocm9t
ZT4gbV9jaHJvbWU7CiAgICAgICAgIE93blB0cjxTZWxlY3Rpb25Db250cm9sbGVyPiBtX2RyYWdD
YXJldENvbnRyb2xsZXI7CiAKQEAgLTM4Niw2ICszOTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFZpZXdNb2RlIG1fdmlld01vZGU7CiAKICAgICAgICAgVmlld3BvcnRBcmd1bWVu
dHMgbV92aWV3cG9ydEFyZ3VtZW50czsKKworICAgICAgICBkb3VibGUgbV9taW5pbXVtVGltZXJJ
bnRlcnZhbDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM0LDkgKzQzNCwyNCBAQCB2b2lkIFNl
dHRpbmdzOjpzZXRET01QYXN0ZUFsbG93ZWQoYm9vbCBECiAgICAgbV9pc0RPTVBhc3RlQWxsb3dl
ZCA9IERPTVBhc3RlQWxsb3dlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRP
TVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIERPTVRpbWVyOjpzZXREZWZh
dWx0TWluVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2RvdWJsZSBTZXR0aW5nczo6ZGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBET01UaW1lcjo6ZGVmYXVs
dE1pblRpbWVySW50ZXJ2YWwoKTsKK30KKwogdm9pZCBTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJ
bnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgRE9NVGltZXI6OnNldE1pblRpbWVySW50
ZXJ2YWwoaW50ZXJ2YWwpOworICAgIG1fcGFnZS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoaW50
ZXJ2YWwpOworfQorCitkb3VibGUgU2V0dGluZ3M6Om1pbkRPTVRpbWVySW50ZXJ2YWwoKQorewor
ICAgIHJldHVybiBtX3BhZ2UtPm1pbmltdW1UaW1lckludGVydmFsKCk7CiB9CiAKIHZvaWQgU2V0
dGluZ3M6OnNldFVzZXNQYWdlQ2FjaGUoYm9vbCB1c2VzUGFnZUNhY2hlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw4ICsyMDMsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIHNldERPTVBhc3RlQWxsb3dlZChib29sKTsKICAgICAgICAg
Ym9vbCBpc0RPTVBhc3RlQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNET01QYXN0ZUFsbG93
ZWQ7IH0KICAgICAgICAgCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2
YWwoZG91YmxlKTsgLy8gSW50ZXJ2YWwgc3BlY2lmaWVkIGluIHNlY29uZHMuCisgICAgICAgIHN0
YXRpYyB2b2lkIHNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVy
dmFsIHNwZWNpZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsKCk7CiAgICAgICAgIAorICAgICAgICB2b2lkIHNldE1pbkRPTVRp
bWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gUGVyLXBhZ2U7IGluaXRpYWxpemVkIHRvIGRlZmF1bHQg
dmFsdWUuCisgICAgICAgIGRvdWJsZSBtaW5ET01UaW1lckludGVydmFsKCk7CisKICAgICAgICAg
dm9pZCBzZXRVc2VzUGFnZUNhY2hlKGJvb2wpOwogICAgICAgICBib29sIHVzZXNQYWdlQ2FjaGUo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNQYWdlQ2FjaGU7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaW1lci5oCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rp
bWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDggQEAgcHVibGljOgogICAgIGRvdWJs
ZSBuZXh0RmlyZUludGVydmFsKCkgY29uc3Q7CiAgICAgZG91YmxlIHJlcGVhdEludGVydmFsKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXBlYXRJbnRlcnZhbDsgfQogCi0gICAgdm9pZCBhdWdtZW50UmVw
ZWF0SW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGlt
ZSArIGRlbHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQorICAgIHZvaWQgYXVnbWVu
dEZpcmVJbnRlcnZhbChkb3VibGUgZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1fbmV4dEZpcmVU
aW1lICsgZGVsdGEpOyB9CisgICAgdm9pZCBhdWdtZW50UmVwZWF0SW50ZXJ2YWwoZG91YmxlIGRl
bHRhKSB7IGF1Z21lbnRGaXJlSW50ZXJ2YWwoZGVsdGEpOyBtX3JlcGVhdEludGVydmFsICs9IGRl
bHRhOyB9CiAKICAgICBzdGF0aWMgdm9pZCBmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMi0xNCAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBp
bnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdlKToKKwogMjAx
MS0wMi0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyAr
MTg0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIG1f
cGFnZS0+c2V0R3JvdXBOYW1lKG1fcGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpOwogCiAgICAgcGxh
dGZvcm1Jbml0aWFsaXplKCk7Ci0gICAgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwo
MC4wMDQpOworICAgIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAw
NCk7CiAKICAgICBtX2RyYXdpbmdBcmVhID0gRHJhd2luZ0FyZWE6OmNyZWF0ZSh0aGlzLCBwYXJh
bWV0ZXJzKTsKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lOjpjcmVhdGVNYWluRnJhbWUodGhp
cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1MjMpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI2IEBACisyMDExLTAyLTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250
cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgICAtIEFkZGVkIHNldERlZmF1
bHRNaW5ET01UaW1lckludGVydmFsLAorICAgICAgICAgICAgZGVmYXVsdE1pbkRPTVRpbWVySW50
ZXJ2YWwsIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwsIGFuZAorICAgICAgICAgICAgbWluRE9NVGlt
ZXJJbnRlcnZhbC4KKyAgICAgICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSBTZXR0aW5nczo6c2V0RGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwgcmF0aGVyCisgICAgICAgICAgICB0aGFuIERPTVRpbWVy
IGRpcmVjdGx5LgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6Om1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAgIC0gSW1wbGVtZW50ZWQgbmV3IG1ldGhvZHMgb24gV2ViU2V0dGluZ3MuCisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDExLTAyLTE0ICBKYXkgU29mZmlh
biAgPGpheXNvZmZpYW5AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
ZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDEyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKSA9IDA7
CiAKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKGRvdWJsZSk7CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5ET01U
aW1lckludGVydmFsKCk7CisgICAgdmlydHVhbCB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwo
ZG91YmxlKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgbWluRE9NVGltZXJJbnRlcnZhbCgpID0g
MDsKKworCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CiB9OwpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEw
ICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogCi0j
aW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpAQCAtNzEsNyArNzEsNyBA
QCB2b2lkIGluaXRpYWxpemUoV2ViS2l0Q2xpZW50KiB3ZWJLaXRDbGllCiAgICAgLy8gY29kZWQg
d2Vic2l0ZXMgb3V0IHRoZXJlIHdoaWNoIGRvIGNyZWF0ZSBDUFUtc3Bpbm5pbmcgbG9vcHMuICBV
c2luZwogICAgIC8vIDRtcyBwcmV2ZW50cyB0aGUgQ1BVIGZyb20gc3Bpbm5pbmcgdG9vIGJ1c2ls
eSBhbmQgcHJvdmlkZXMgYSBiYWxhbmNlCiAgICAgLy8gYmV0d2VlbiBDUFUgc3Bpbm5pbmcgYW5k
IHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnRlcnZhbCB0aW1lci4KLSAgICBXZWJDb3JlOjpET01U
aW1lcjo6c2V0TWluVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgV2ViQ29yZTo6U2V0dGluZ3M6
OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgIC8vIFRoZXJlIGFy
ZSBzb21lIGNvZGUgcGF0aHMgKGZvciBleGFtcGxlLCBydW5uaW5nIFdlYktpdCBpbiB0aGUgYnJv
d3NlcgogICAgIC8vIHByb2Nlc3MgYW5kIGNhbGxpbmcgaW50byBMb2NhbFN0b3JhZ2UgYmVmb3Jl
IGFueXRoaW5nIGVsc2UpIHdoZXJlIHRoZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0OSw0ICszNDksMjQgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEludGVyYWN0aXZlRm9y
bQogICAgIG1fc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGVu
YWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01U
aW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91YmxlIFdlYlNldHRpbmdzOjpkZWZhdWx0
TWluRE9NVGltZXJJbnRlcnZhbCgpCit7CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWlu
RE9NVGltZXJJbnRlcnZhbCgpOworfQorCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWluRE9N
VGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0TWlu
RE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2RvdWJsZSBXZWJTZXR0aW5nc0ltcGw6
Om1pbkRPTVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBtX3NldHRpbmdzLT5taW5ET01U
aW1lckludGVydmFsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDc4NTIz
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW50
ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5ET01U
aW1lckludGVydmFsKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0
dGluZ3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEx
LTAyLTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5p
bXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgQWRkZWQg
bmVlZGVkIG1ldGhvZHMgdG8gaW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyJ3MgbmV3Cisg
ICAgICAgIHNldE1pbmltdW1UaW1lckludGVydmFsIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKwogMjAx
MS0wMi0xNCAgQWxlamFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJ
KHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQyLDMgKzY0Miwx
MiBAQCBib29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZmluZFN0cmluCiAgICAgcmV0dXJu
IGNvcmUod2ViVmlldyktPmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOCh0YXJnZXRTdHJpbmcp
LCBmaW5kT3B0aW9ucyk7CiB9CiAKK2RvdWJsZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmRl
ZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpCit7CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZh
dWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZG91
YmxlIGludGVydmFsKQoreworICAgIGNvcmUod2ViVmlldyktPnNldHRpbmdzKCktPnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgJ
KHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDggQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNvbmZpcm1Db21wb3NpdGlvbihXZWJLaXRXZWJWaWV3
KiwgY29uc3QgY2hhciogdGV4dCk7CiAgICAgc3RhdGljIGJvb2wgZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UoV2ViS2l0V2ViVmlldyosIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgR2RrUmVj
dGFuZ2xlKik7CiAgICAgc3RhdGljIGJvb2wgc2VsZWN0ZWRSYW5nZShXZWJLaXRXZWJWaWV3Kiwg
aW50KiBzdGFydCwgaW50KiBlbmQpOworICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsKCk7IC8vIE5vdCByZWFsbHkgdGllZCB0byBXZWJWaWV3CisgICAgc3RhdGlj
IHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoV2ViS2l0V2ViVmlldyosIGRvdWJsZSk7CiAK
ICAgICAvLyBHQwogICAgIHN0YXRpYyB2b2lkIGdjQ29sbGVjdEphdmFzY3JpcHRPYmplY3RzKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDExLTAyLTE0
ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERP
TVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgQWRkZWQgbmVlZGVk
IG1ldGhvZHMgdG8gaW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyJ3MgbmV3CisgICAgICAg
IHNldE1pbmltdW1UaW1lckludGVydmFsIG1ldGhvZC4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJh
bWVOYW1lOmdyb3VwTmFtZTp1c2VzRG9jdW1lbnRWaWV3czpdKToKKyAgICAgICAgKCtbV2ViVmll
dyBfZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsXSk6CisgICAgICAgICgtW1dlYlZpZXcgX3Nl
dE1pbmltdW1UaW1lckludGVydmFsOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaDoKKwogMjAxMS0wMi0xMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5NCw3ICs2OTQsNyBAQCAtICh2
b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIAogICAgICAgICAv
LyBJbml0aWFsaXplIG91ciBwbGF0Zm9ybSBzdHJhdGVnaWVzLgogICAgICAgICBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAgICAgICAgU2V0dGluZ3M6OnNldE1pbkRPTVRp
bWVySW50ZXJ2YWwoMC4wMDQpOworICAgICAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRp
bWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9
IHRydWU7CiAgICAgfQpAQCAtMjczOCw2ICsyNzM4LDE3IEBAICsgKHZvaWQpX3NldExvYWRSZXNv
dXJjZXNTZXJpYWxseTooQk9PTCkKICAgICByZXNvdXJjZUxvYWRTY2hlZHVsZXIoKS0+c2V0U2Vy
aWFsTG9hZGluZ0VuYWJsZWQoc2VyaWFsaXplKTsKIH0KIAorKyAoZG91YmxlKV9kZWZhdWx0TWlu
aW11bVRpbWVySW50ZXJ2YWwKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01U
aW1lckludGVydmFsKCk7Cit9CisKKy0gKHZvaWQpX3NldE1pbmltdW1UaW1lckludGVydmFsOihk
b3VibGUpaW50ZXJ2YWxJblNlY29uZHMKK3sKKyAgICBpZiAoX3ByaXZhdGUtPnBhZ2UpCisgICAg
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGlu
dGVydmFsSW5TZWNvbmRzKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVG
b3J3YXJkZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmgJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNiArNTcxLDIzIEBAIENvdWxkIGJlIHdv
cnRoIGFkZGluZyB0byB0aGUgQVBJLgogLy8gRGVwcmVjYXRlZC4gVXNlIGZpbmRTdHJpbmcuCiAt
IChCT09MKXNlYXJjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndh
cmQgY2FzZVNlbnNpdGl2ZTooQk9PTCljYXNlRmxhZyB3cmFwOihCT09MKXdyYXBGbGFnIHN0YXJ0
SW5TZWxlY3Rpb246KEJPT0wpc3RhcnRJblNlbGVjdGlvbjsKIAorLyohCisgICAgQG1ldGhvZCBk
ZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwKKyAgICBAZGlzY3Vzc2lvbiBTaG91bGQgY29uc2lk
ZXIgbW92aW5nIHRoaXMgdG8gdGhlIHB1YmxpYyBBUEkuCisgICAgQHJlc3VsdCBSZXR1cm5zIHRo
ZSBkZWZhdWx0IG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisqLworKyAoZG91YmxlKV9kZWZhdWx0
TWluaW11bVRpbWVySW50ZXJ2YWw7CisKKy8qIQorICAgIEBtZXRob2Qgc2V0TWluaW11bVRpbWVy
SW50ZXJ2YWw6CisgICAgQGRpc2N1c3Npb24gU2V0cyB0aGUgbWluaW11bSBpbnRlcnZhbCBmb3Ig
RE9NVGltZXJzIGluIHRoaXMgV2ViVmlldy4gVGhpcyBtZXRob2QgaXMKKyAgICBleHBvc2VkIGhl
cmUgaW4gdGhlIE1hYyBwb3J0IHJhdGhlciB0aGFuIHRocm91Z2ggV2ViUHJlZmVyZW5jZXMgKHdo
aWNoIGdlbmVyYWxseQorICAgIGdvdmVybnMgU2V0dGluZ3MpIGJlY2F1c2UgdGhpcyB2YWx1ZSBp
cyBzb21ldGhpbmcgYWRqdXN0ZWQgYXQgcnVuIHRpbWUsIG5vdCBzZXQKKyAgICBnbG9iYWxseSB2
aWEgImRlZmF1bHRzIHdyaXRlIi4gU2hvdWxkIGNvbnNpZGVyIGFkZGluZyB0aGlzIHRvIHRoZSBw
dWJsaWMgQVBJLgorICAgIEBwYXJhbSBpbnRlcnZhbEluU2Vjb25kcyBUaGUgbmV3IG1pbmltdW0g
dGltZXIgaW50ZXJ2YWwsIGluIHNlY29uZHMuCisqLworLSAodm9pZClfc2V0TWluaW11bVRpbWVy
SW50ZXJ2YWw6KGRvdWJsZSlpbnRlcnZhbEluU2Vjb25kczsKKwogQGVuZAogCiBAaW50ZXJmYWNl
IFdlYlZpZXcgKFdlYlZpZXdQcmludGluZ1ByaXZhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBh
Z2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTU0MzEyCisKKyAgICAgICAgQWRkZWQgbmVlZGVkIG1ldGhvZHMgdG8gaW1wbGVtZW50IExheW91
dFRlc3RDb250cm9sbGVyJ3MgbmV3CisgICAgICAgIHNldE1pbmltdW1UaW1lckludGVydmFsIG1l
dGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkZWZhdWx0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmlt
dW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5oOgorCiAyMDExLTAyLTE0ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFy
ZEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NDIsNiArOTQyLDIxIEBAIFFTdHJpbmdMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0Ojpjb24KICAgICByZXR1cm4gUVN0cmluZ0xpc3QoKTsKICNlbmRpZgogfQorCitkb3VibGUg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpCit7
CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOworfQor
Cit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChR
V2ViUGFnZSogcGFnZSwgZG91YmxlIGludGVydmFsKQoreworICAgIFBhZ2UqIGNvcmVQYWdlID0g
UVdlYlBhZ2VQcml2YXRlOjpjb3JlKHBhZ2UpOworICAgIGlmICghY29yZVBhZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGNvcmVQYWdlLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVy
dmFsKGludGVydmFsKTsKK30KKwogLy8gUHJvdmlkZSBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
d2l0aCBwcmV2aW91c2x5IGV4cG9ydGVkIHByaXZhdGUgc3ltYm9scyBhcyBvZiBRdFdlYktpdCA0
LjYgcmVsZWFzZQogCiB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0X3Jlc3VtZUFjdGl2ZURPTU9iamVj
dHMoUVdlYkZyYW1lKiBmcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBRU3RyaW5nIHJlc3BvbnNlTWltZVR5cGUoUVdlYkZyYW1lKik7CiAgICAgc3RhdGlj
IHZvaWQgYWRkVVJMVG9SZWRpcmVjdChjb25zdCBRU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFFTdHJp
bmcmIGRlc3RpbmF0aW9uKTsKICAgICBzdGF0aWMgUVN0cmluZ0xpc3QgY29udGV4dE1lbnUoUVdl
YlBhZ2UqKTsKKworICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFs
KCk7IC8vIE5vdCByZWFsbHkgdGllZCB0byBXZWJWaWV3CisgICAgc3RhdGljIHZvaWQgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoUVdlYlBhZ2UqLCBkb3VibGUpOwogfTsKIAogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTAyLTE0ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVy
IGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgQWRkZWQgbmVlZGVkIG1ldGhv
ZHMgdG8gaW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyJ3MgbmV3CisgICAgICAgIHNldE1p
bmltdW1UaW1lckludGVydmFsIG1ldGhvZC4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYlZp
ZXdQcml2YXRlLmlkbDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6
OmluaXRXaXRoRnJhbWUpOgorICAgICAgICAoV2ViVmlldzo6ZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKFdlYlZpZXc6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAg
ICAgICAgKiBXZWJWaWV3Lmg6CisKIDIwMTEtMDItMTQgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWlu
c3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjExLDcgKzI2MTEsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmluaXRXCiAjZW5kaWYKICAgICAgICAgV2Vi
S2l0U2V0QXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpOwogICAgICAgICBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAgICAgICAgU2V0dGluZ3M6OnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgICAgICBTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRP
TVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlv
biA9IHRydWU7CiAgICAgIH0KQEAgLTY2MjAsMyArNjYyMCwxNyBAQCBQYWdlKiBjb3JlKElXZWJW
aWV3KiBpV2ViVmlldykKIAogICAgIHJldHVybiBwYWdlOwogfQorCitIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlZpZXc6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUqIGlu
dGVydmFsKQoreworICAgIGlmICghaW50ZXJ2YWwpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisgICAgKmludGVydmFsID0gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7
CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIHBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgcmV0
dXJuIFNfT0s7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA3ODUyMykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywx
MiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4
dERpc3BsYXlJc1N5bmNocm9ub3VzKCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIGRvdWJsZSAqaW50ZXJ2YWwpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldE1pbmltdW1UaW1lckludGVydmFsKAorICAgICAgICAvKiBbaW5dICov
IGRvdWJsZSk7CisKICAgICAvLyBXZWJWaWV3CiAgICAgYm9vbCBzaG91bGRVc2VFbWJlZGRlZFZp
ZXcoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkocmV2aXNpb24g
Nzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw0ICsyMzksMjEgQEAgaW50ZXJmYWNlIElXZWJWaWV3
UHJpdmF0ZSA6IElVbmtub3duCiAgICAgW2xvY2FsXSBIUkVTVUxUIHJlcG9ydEV4Y2VwdGlvbihb
aW5dIEpTQ29udGV4dFJlZiBjb250ZXh0LCBbaW5dIEpTVmFsdWVSZWYgZXhjZXB0aW9uKTsKIAog
ICAgIFtsb2NhbF0gSFJFU1VMVCBlbGVtZW50RnJvbUpTKFtpbl0gSlNDb250ZXh0UmVmIGNvbnRl
eHQsIFtpbl0gSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBbb3V0LCByZXR2YWxdIElET01FbGVtZW50
KiogZWxlbWVudCk7CisKKworICAgIC8qIQorICAgICAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVt
VGltZXJJbnRlcnZhbAorICAgICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIHRoZSBkZWZhdWx0IG1p
bmltdW0gaW50ZXJ2YWwgZm9yIERPTVRpbWVycyBvbiBhbGwgcGFnZXMsIG5vdAorICAgICAgICBq
dXN0IHRoZSBvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRv
dWJsZSlpbnRlcnZhbDsKKyAgICAqLworICAgIEhSRVNVTFQgZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKFtvdXQsIHJldHZhbF0gZG91YmxlKiBpbnRlcnZhbCk7CisKKyAgICAvKiEKKyAgICAg
ICAgQG1ldGhvZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgICAgICBAZGlzY3Vzc2lvbiBT
ZXRzIHRoZSBtaW5pbXVtIGludGVydmFsIGZvciBET01UaW1lcnMgb24gdGhlIHdlYiBwYWdlIGFz
c29jaWF0ZWQKKyAgICAgICAgd2l0aCB0aGUgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlp
bnRlcnZhbDsKKyAgICAqLworICAgIEhSRVNVTFQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoW2lu
XSBkb3VibGUgaW50ZXJ2YWwpOwogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0wMi0xNCAgS2VubmV0aCBSdXNz
ZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZh
bCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgc2V0
TWluaW11bVRpbWVySW50ZXJ2YWwgaW4KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgZm9y
IGFsbCBwb3J0cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdI
b3N0OjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJl
c2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYlBhZ2U6OnJlc2V0U2V0dGluZ3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRl
QmVmb3JlVGVzdGluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RD
b250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCk6CisKIDIwMTEtMDItMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MjYsNiArMTkyNiwyMCBAQCBzdGF0aWMgYm9vbCBz
ZXRHbG9iYWxGbGFnQ2FsbGJhY2soSlNDb250CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRp
YyBKU1ZhbHVlUmVmIHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgZG91YmxlIG1pbmlt
dW0gPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOwor
ICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNaW5pbXVtVGltZXJJbnRl
cnZhbChtaW5pbXVtKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKwogc3RhdGljIHZvaWQgbGF5b3V0VGVzdENvbnRyb2xsZXJPYmplY3RGaW5hbGl6ZShK
U09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0
ZShvYmplY3QpKTsKQEAgLTIwNzMsNiArMjA4Nyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91
dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsIHNl
dEljb25EYXRhYmFzZUVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZCIsIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlciIs
IHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7
ICJzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCIsIHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgc2V0TW9j
a0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2
ICszMTAsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZpZXdXaWR0
aDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Vmlld0hlaWdodDsKIAorICAgIHZvaWQg
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlcihjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qgc3Rk
OjpzdHJpbmcmIGV4cGVjdGVkUGl4ZWxIYXNoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgYmluZE1ldGhvZCgic2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24pOwogICAgIGJpbmRNZXRob2QoInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJsZWQpOwogICAgIGJpbmRNZXRo
b2QoInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQiLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpOworICAgIGJpbmRNZXRob2QoInNl
dE1pbmltdW1UaW1lckludGVydmFsIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9u
IiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOwogICAg
IGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKTsKQEAgLTE1OTMsMyArMTU5NCwxMSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpoYXNTcGVsbGluZ01hCiAgICAgICAgIHJldHVybjsKICAgICByZXN1bHQtPnNldCht
X3NoZWxsLT53ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5zZWxlY3Rpb25TdGFydEhhc1NwZWxsaW5n
TWFya2VyRm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGFyZ3VtZW50c1sxXS50b0ludDMyKCkp
KTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDEg
fHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpKQorICAgICAgICByZXR1cm47CisgICAgbV9zaGVs
bC0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGFyZ3VtZW50
c1swXS50b0RvdWJsZSgpKTsKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzg1MjMpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzUsNiArMzM1LDggQEAgcHVibGljOgogICAgIHZvaWQgbWFya2VyVGV4
dEZvckxpc3RJdGVtKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2
b2lkIGhhc1NwZWxsaW5nTWFya2VyKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKIAorICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworCiBwdWJsaWM6CiAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRo
b2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgogICAgIHZvaWQgc2V0V29ya1F1ZXVl
RnJvemVuKGJvb2wgZnJvemVuKSB7IG1fd29ya1F1ZXVlLnNldEZyb3plbihmcm96ZW4pOyB9Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShy
ZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyNiw4ICsxMjI2LDEwIEBAIHZvaWQgV2ViVmll
d0hvc3Q6OnJlc2V0KCkKICAgICBtX3dpbmRvd1JlY3QgPSBXZWJSZWN0KCk7CiAgICAgbV9wYWlu
dFJlY3QgPSBXZWJSZWN0KCk7CiAKLSAgICBpZiAobV93ZWJXaWRnZXQpCisgICAgaWYgKG1fd2Vi
V2lkZ2V0KSB7CiAgICAgICAgIHdlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNldE5hbWUoV2ViU3Ry
aW5nKCkpOworICAgICAgICB3ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50
ZXJ2YWwoV2ViU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkpOworICAgIH0K
IH0KIAogdm9pZCBXZWJWaWV3SG9zdDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZChib29sIGVuYWJsZWQpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVu
ZGVyVHJlZS5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDYgKzQyOCw3IEBAIHN0
YXRpYyB2b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAgICBnX29iamVjdF9zZXQo
R19PQkpFQ1QoaW5zcGVjdG9yKSwgImphdmFzY3JpcHQtcHJvZmlsaW5nLWVuYWJsZWQiLCBGQUxT
RSwgTlVMTCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywg
MS4wKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVy
dmFsKHdlYlZpZXcsIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1l
ckludGVydmFsKCkpOwogCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXNldE9yaWdp
bkFjY2Vzc1doaXRlTGlzdHMoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xh
eW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA3ODUyMykKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg4MCwzICs4ODAsOSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTZXJpYWxpemVICiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBpZiBuZWVkZWQgZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OC4KIH0KKwordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1p
bmltdW1UaW1lckludGVydmFsKQoreworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwod2ViVmlldywgbWluaW11bVRpbWVy
SW50ZXJ2YWwpOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNiArMTAxNyw3IEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbW3dlYlZpZXcgdW5kb01h
bmFnZXJdIHJlbW92ZUFsbEFjdGlvbnNdOwogICAgIFtXZWJWaWV3IF9yZW1vdmVBbGxVc2VyQ29u
dGVudEZyb21Hcm91cDpbd2ViVmlldyBncm91cE5hbWVdXTsKICAgICBbW3dlYlZpZXcgd2luZG93
XSBzZXRBdXRvZGlzcGxheTpOT107CisgICAgW3dlYlZpZXcgX3NldE1pbmltdW1UaW1lckludGVy
dmFsOltXZWJWaWV3IF9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdXTsKIAogICAgIHJlc2V0
RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNzg1
MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsMyArMTAwMyw4IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAgICBbV2ViVmlldyBfc2V0TG9hZFJlc291cmNl
c1NlcmlhbGx5OnNlcmlhbGl6ZV07CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAg
ICBbW21haW5GcmFtZSB3ZWJWaWV3XSBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6bWluaW11bVRp
bWVySW50ZXJ2YWxdOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRl
clRyZWVRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWVRdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsOCBA
QCB2b2lkIFdlYlBhZ2U6OnJlc2V0U2V0dGluZ3MoKQogICAgIFFXZWJTZXR0aW5nczo6c2V0TWF4
aW11bVBhZ2VzSW5DYWNoZSgwKTsgLy8gcmVzZXQgdG8gZGVmYXVsdAogICAgIHNldHRpbmdzKCkt
PnNldFVzZXJTdHlsZVNoZWV0VXJsKFFVcmwoKSk7IC8vIHJlc2V0IHRvIGRlZmF1bHQKIAorICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh0aGlzLCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkpOwor
CiAgICAgbV9wZW5kaW5nR2VvbG9jYXRpb25SZXF1ZXN0cy5jbGVhcigpOwogfQogCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0
Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM2LDUgKzgzNiwxMCBAQCB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjphZGRVUkxUb1JlZGlyCiAgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmFkZFVSTFRvUmVkaXJlY3Qob3JpZ2luLCBkZXN0aW5hdGlvbik7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBt
aW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
TWluaW11bVRpbWVySW50ZXJ2YWwobV9kcnQtPndlYlBhZ2UoKSwgbWluaW11bVRpbWVySW50ZXJ2
YWwpOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWF4Vmlld1dp
ZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdI
ZWlnaHQgPSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYg
KzI1Miw4IEBAIHB1YmxpYyBzbG90czoKICAgICBRU3RyaW5nIHBhZ2VQcm9wZXJ0eShjb25zdCBR
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAgICB2b2lkIGFkZFVzZXJT
dHlsZVNoZWV0KGNvbnN0IFFTdHJpbmcmIHNvdXJjZUNvZGUpOwogCisgICAgdm9pZCBzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbChkb3VibGUpOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgcHJv
Y2Vzc1dvcmsoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Niw2ICs4NjYsMTAgQEAgc3Rh
dGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIGlmICghd2ViVmlld1By
aXZhdGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGRvdWJsZSBtaW5pbXVtSW50ZXJ2YWwgPSAw
OworICAgIGlmIChTVUNDRUVERUQod2ViVmlld1ByaXZhdGUtPmRlZmF1bHRNaW5pbXVtVGltZXJJ
bnRlcnZhbCgmbWluaW11bUludGVydmFsKSkpCisgICAgICAgIHdlYlZpZXdQcml2YXRlLT5zZXRN
aW5pbXVtVGltZXJJbnRlcnZhbChtaW5pbXVtSW50ZXJ2YWwpOworCiAgICAgQ09NUHRyPElXZWJJ
bnNwZWN0b3I+IGluc3BlY3RvcjsKICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXdQcml2YXRlLT5p
bnNwZWN0b3IoJmluc3BlY3RvcikpKQogICAgICAgICBpbnNwZWN0b3ItPnNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKEZBTFNFKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9M
YXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gNzg1MjMpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDMwLDMgKzE0MzAsMTYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0U2VyaWFsaXplSAogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CisKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBt
aW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Cisg
ICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1cm47
CisKKyAgICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZShRdWVyeSwgd2ViVmll
dyk7CisgICAgaWYgKCF2aWV3UHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmlld1By
aXZhdGUtPnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmltdW1UaW1lckludGVydmFsKTsKK30K
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc4NTIzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24g
YSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFs
LWFuZC1yZXNldC1wYXJ0LTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgICAtIENoYWluZWQgdGVzdHMgKHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhl
IHJ1bi13ZWJraXQtdGVzdHMKKyAgICAgICAgICAgIGhhcm5lc3Mgd2lsbCBydW4gdGhlbSBzZXF1
ZW50aWFsbHksIHdoaWNoIGlzIGEgcmVhc29uYWJseSBnb29kCisgICAgICAgICAgICBhc3N1bXB0
aW9uKSB3aGljaCB2ZXJpZnkgdGhhdCB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBpcworICAg
ICAgICAgICAgcmVzZXQgYmV0d2VlbiB0ZXN0cy4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1p
bmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICAg
LSBWZXJpZmllcyB0aGF0IGluY3JlYXNpbmcgdGhlIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwgY2F1
c2VzCisgICAgICAgICAgICBmYXN0IHRpbWVycyB0byBydW4gc2xvd2x5LgorICAgICAgICAqIGZh
c3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNy
ZWFzZS1taW4taW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICAgLSBWZXJpZmllcyB0aGF0
IGRlY3JlYXNpbmcgdGhlIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwgY2F1c2VzCisgICAgICAgICAg
ICBwcmV2aW91c2x5IHNsb3dlZC1kb3duIHRpbWVycyB0byBiZSByZWV2YWx1YXRlZCBpbW1lZGlh
dGVseS4KKwogMjAxMS0wMi0xNCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMgdXBkYXRl
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFs
LWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2
YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gbXNnOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2co
IlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gdHdpY2UgYSBzZWNv
bmQuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC41
KTsKKworICAgIC8vIFBhcnQgMiBvZiB0aGlzIHRlc3QgKHdoaWNoIHdpbGwgbGlrZWx5IGJlIGV4
ZWN1dGVkIGltbWVkaWF0ZWx5CisgICAgLy8gYWZ0ZXIgdGhpcyBvbmUgYnkgdGhlIGhhcm5lc3Mp
IHZlcmlmaWVzIHRoYXQgdGhlIG1pbmltdW0gdGltZXIKKyAgICAvLyBpbnRlcnZhbCBpcyByZXNl
dCBiZXR3ZWVuIHRlc3RzLgorCisgICAgbG9nKCJQQVNTIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQt
cGFydC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90
aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4t
aW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNl
dC1wYXJ0LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVy
LWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9n
KG1zZykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBmYXN0
VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1l
b3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1lb3V0SGFuZGxlcigpIHsKKyAg
ICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQgc29tZXdoYXQgdG8gdGhlCisg
ICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIuY3BwLgorICAgIGlmIChjb3Vu
dCA+IDEwKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJ
TCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8vIFRpbWVycyBzaG91bGQg
YmUgcnVubmluZyBhdCBmdWxsIHNwZWVkLCBub3QgYXQgdGhlIHRocm90dGxlZAorICAgIC8vIHJh
dGUgc2V0IGJ5IHBhcnQgMSBvZiB0aGlzIHRlc3QuCisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1l
b3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEp
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2
YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3Jl
YXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRl
bnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwor
fQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAg
ICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitm
dW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRo
cmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xl
dmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQgPCAxMCkKKyAgICAgICAgbG9nKCJQ
QVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNv
dW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVz
dENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIHR3
aWNlIGEgc2Vjb25kLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lcklu
dGVydmFsKDAuNSk7CisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7
CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1p
bnRlcnZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
dGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1k
ZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10
aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUy
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQu
dGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVy
KCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEp
OworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhl
IGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVy
TmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQgPiAxMCkKKyAgICAg
ICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCBy
YW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUg
TGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRl
biB0aGFuIG9uY2UgcGVyIHNlY29uZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCgxLjApOworCisgICAgc2V0VGltZW91dChzbG93VGltZW91dEhhbmRs
ZXIsIDUwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworCisgICAg
Ly8gQWxsb3cgdGltZXJzIHRvIHJ1biBxdWlja2x5IGFnYWluLgorICAgIC8vIElmIHRoaXMgZG9l
c24ndCBjYXVzZSB0aW1lcnMgdG8gZ2V0IHJlLWV2YWx1YXRlZCBpbW1lZGlhdGVseSwKKyAgICAv
LyB0aGUgZmFzdCB0aW1lb3V0IGhhbmRsZXIgd29uJ3QgZ2V0IGNhbGxlZCBmb3IgdXAgdG8gYSBz
ZWNvbmQsCisgICAgLy8gd2hpY2ggd291bGQgbGVhZCB0byBwb29yIHJlc3BvbnNpdmVuZXNzLgor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDAuMDA0KTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82404</attachid>
            <date>2011-02-14 19:00:25 -0800</date>
            <delta_ts>2011-02-14 19:06:57 -0800</delta_ts>
            <desc>Addressed review feedback</desc>
            <filename>bug-54312-20110214190024.patch</filename>
            <type>text/plain</type>
            <size>57170</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICBJZGVhbGx5IGNoYW5naW5n
IHRoZSBwYWdlJ3MgbWluaW11bSB0aW1lciBpbnRlcnZhbCB3b3VsZCBhZmZlY3QKKyAgICAgICAg
ZGVkaWNhdGVkIHdvcmtlcnMsIGJ1dCB0aGlzIGlzIHRvbyBtdWNoIHRvIGRvIGluIGFuIGluaXRp
YWwgcGF0Y2gsCisgICAgICAgIHNvIGEgRklYTUUgaGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAg
VGVzdGVkIHdpdGg6CisgICAgICAgICAgLSBUaGUgbmV3IGxheW91dCB0ZXN0cyBvbiB0aGUgV2Vi
S2l0IE1hYyBhbmQgQ2hyb21pdW0gKE1hYywKKyAgICAgICAgICAgIExpbnV4KSBEUlQgcG9ydHMu
CisgICAgICAgICAgLSBIb29rZWQgdXAgdGhlIG5ldyBBUEkgaW4gQ2hyb21pdW0gYW5kIHJhbiBz
b21lIHNpbXBsZSBtYW51YWwKKyAgICAgICAgICAgIHRlc3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRpbWVy
SW50ZXJ2YWwpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9N
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKToKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZGVmYXVsdE1pblRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnNldERlZmF1bHRNaW5U
aW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptaW5pbXVtVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lckJhc2U6OmF1Z21lbnRSZXBlYXRJbnRlcnZhbCk6CisKIDIwMTEtMDItMTQg
IEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgZWZsIGJ1aWxk
IGZpeApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5Niw2ICs3OTYsNyBA
QCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlsCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MxOHNldE1pbmltdW1Gb250U2l6ZUVpCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldFdlYkF1ZGlvRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxOW1pbkRP
TVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93RGVidWdCb3Jk
ZXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dU
RjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50YXN5Rm9udEZh
bWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBAIC04MjUsNiArODI2LDcgQEAgX19aTjdXZWJD
b3JlOFNldHRpbmdzMjVzZXROZWVkc0xlb3BhcmRNYQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0U2hv
dWxkUHJpbnRCYWNrZ3JvdW5kc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19fWk43V2ViQ29yZThTZXR0aW5nczI2ZGVmYXVs
dE1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXREZWZhdWx0
VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczI2
c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRG
VFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGhFUktOM1dURjZTdHJpbmdFCkBAIC04MzQsNiArODM2LDcg
QEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRTcGF0aWFsTmF2aWdhdAogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjhzZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI5c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNl
dHRpbmdzMjlzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MyOXNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsRWQKIF9fWk43V2ViQ29yZThTZXR0
aW5nczI5c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMzBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMzFzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkRWIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQzLDYgKzIyNDMsMTQgQEAgS1VSTCBEb2N1bWVu
dDo6dmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IAogICAgIHJldHVybiBjb21wbGV0ZVVSTCh1cmwp
OwogfQogCitkb3VibGUgRG9jdW1lbnQ6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sK
KyAgICBQYWdlKiBwID0gcGFnZSgpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6Om1pbmltdW1UaW1lckludGVydmFsKCk7CisgICAgcmV0dXJuIHAt
PnNldHRpbmdzKCktPm1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwogRXZlbnRUYXJnZXQqIERv
Y3VtZW50OjplcnJvckV2ZW50VGFyZ2V0KCkKIHsKICAgICByZXR1cm4gZG9tV2luZG93KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzNSw2ICsxMTM1LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHZpcnR1YWxVUkwoKSBjb25zdDsgLy8gU2Ft
ZSBhcyB1cmwoKSwgYnV0IG5lZWRlZCBmb3IgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBpbXBs
ZW1lbnQgaXQgd2l0aG91dCBhIHBlcmZvcm1hbmNlIGxvc3MgZm9yIGRpcmVjdCBjYWxscy4KICAg
ICB2aXJ0dWFsIEtVUkwgdmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OyAv
LyBTYW1lIGFzIGNvbXBsZXRlVVJMKCkgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KIAor
ICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlVGl0bGUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNs
dWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVVSTC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTQwNiw2ICs0MDgsMjYgQEAgRmlsZVRocmVhZCogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKK3ZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1U
aW1lckludGVydmFsKQoreworICAgIGlmIChtaW5pbXVtVGltZXJJbnRlcnZhbCgpICE9IG9sZE1p
bmltdW1UaW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29uZDsKKyAgICAg
ICAgICAgIHRpbWVyLT5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2RvdWJsZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgLy8gVGhlIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgRE9NVGltZXIncyBkZWZhdWx0CisgICAgLy8g
bWluaW11bSB0aW1lciBpbnRlcnZhbC4gRklYTUU6IHRvIG1ha2UgaXQgd29yayB3aXRoIGRlZGlj
YXRlZAorICAgIC8vIHdvcmtlcnMsIHdlIHdpbGwgaGF2ZSB0byBvdmVycmlkZSBpdCBpbiB0aGUg
YXBwcm9wcmlhdGUKKyAgICAvLyBzdWJjbGFzcywgYW5kIHByb3ZpZGUgYSB3YXkgdG8gZW51bWVy
YXRlIGEgRG9jdW1lbnQncyBkZWRpY2F0ZWQKKyAgICAvLyB3b3JrZXJzIHNvIHdlIGNhbiB1cGRh
dGUgdGhlbSBhbGwuCisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbCgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjp+VGFzaygpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJl
dmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc3RvcEZpbGVUaHJlYWQoKTsKICNlbmRpZgogCisgICAgICAgIC8v
IEludGVydmFsIGlzIGluIHNlY29uZHMuCisgICAgICAgIHZvaWQgYWRqdXN0TWluaW11bVRpbWVy
SW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAgICAgdmlydHVh
bCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0
aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5nZXJvdXMgdG8g
Y2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApAQCAtMTc2LDcg
KzE4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHM7CiAgICAgICAgIGJvb2wgbV9pbkRlc3RydWN0b3I7CiAKLSAgICAgICAg
SGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsKKyAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPGludCwgRE9NVGltZXIqPiBUaW1lb3V0TWFwOworICAgICAgICBUaW1lb3V0TWFwIG1fdGlt
ZW91dHM7CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1fcHVi
bGljQmxvYlVSTHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gNzg1
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTMgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGlu
dCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiBzdGF0aWMgY29uc3QgZG91YmxlIG9uZU1pbGxp
c2Vjb25kID0gMC4wMDE7Ci1kb3VibGUgRE9NVGltZXI6OnNfbWluVGltZXJJbnRlcnZhbCA9IDAu
MDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKK2RvdWJsZSBET01UaW1lcjo6c19taW5EZWZhdWx0VGlt
ZXJJbnRlcnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKIAogc3RhdGljIGludCB0aW1l
ck5lc3RpbmdMZXZlbCA9IDA7CiAKIERPTVRpbWVyOjpET01UaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQg
dGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0
KQogICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV9vcmlnaW5hbFRpbWVvdXQodGltZW91
dCkKIHsKICAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElkID0gMDsKICAgICArK2xhc3RV
c2VkVGltZW91dElkOwpAQCAtNTgsMTAgKzU5LDcgQEAgRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRUaW1l
b3V0KG1fdGltZW91dElkLCB0aGlzKTsKIAotICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25k
cyA9IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKLQotICAg
IGlmIChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IHNfbWluVGltZXJJbnRlcnZhbCAmJiBtX25lc3Rp
bmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgaW50ZXJ2YWxNaWxsaXNl
Y29uZHMgPSBzX21pblRpbWVySW50ZXJ2YWw7CisgICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNv
bmRzID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKHRpbWVvdXQsIGNvbnRleHQtPm1pbmltdW1U
aW1lckludGVydmFsKCkpOwogICAgIGlmIChzaW5nbGVTaG90KQogICAgICAgICBzdGFydE9uZVNo
b3QoaW50ZXJ2YWxNaWxsaXNlY29uZHMpOwogICAgIGVsc2UKQEAgLTEwOCwxMCArMTA2LDExIEBA
IHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZvciBub24tb25l
LXNob3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChyZXBlYXRJ
bnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkgPCBzX21pblRpbWVySW50ZXJ2YWwpIHsKKyAg
ICAgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IGNvbnRleHQtPm1pbmltdW1UaW1lckludGVy
dmFsKCk7CisgICAgICAgIGlmIChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkg
PCBtaW5pbXVtSW50ZXJ2YWwpIHsKICAgICAgICAgICAgIG1fbmVzdGluZ0xldmVsKys7CiAgICAg
ICAgICAgICBpZiAobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCi0gICAg
ICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKHNfbWluVGltZXJJbnRlcnZhbCAtIHJl
cGVhdEludGVydmFsKCkpOworICAgICAgICAgICAgICAgIGF1Z21lbnRSZXBlYXRJbnRlcnZhbCht
aW5pbXVtSW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMgcG9pbnQsIGl0IGNh
biBkZWxldGUgdGhlIHRpbWVyLgpAQCAtMTUwLDQgKzE0OSwyMiBAQCB2b2lkIERPTVRpbWVyOjpz
dG9wKCkKICAgICBtX2FjdGlvbi5jbGVhcigpOwogfQogCit2b2lkIERPTVRpbWVyOjphZGp1c3RN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCit7Cisg
ICAgaWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgIHJl
dHVybjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRlcnZhbENsYW1w
ZWRUb01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsK
KyAgICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVt
KG1fb3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPm1pbmltdW1UaW1l
ckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBlZEludGVydmFs
IC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGltZXI6OmludGVy
dmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKSBjb25zdAoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1heChvbmVN
aWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlmIChpbnRlcnZh
bE1pbGxpc2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49
IG1heFRpbWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1p
bmltdW1UaW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vjb25kczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNs
YXNzIFNldHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVU
aW1lciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIg
b3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdApAQCAt
NDYsMTggKzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAg
ICAgICAvLyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAw
LjAwMSA9PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lckludGVydmFsKCkg
eyByZXR1cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1p
blRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZhbCA9IHZhbHVl
OyB9CisgICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRoaXMgYWxsb3dz
IHRoZSBtaW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5nZWQgaW4gcmVz
cG9uc2UKKyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRvIHRoZSBiYWNr
Z3JvdW5kLgorICAgICAgICB2b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBv
bGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBET01UaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+LCBp
bnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVk
KCk7CiAKKyAgICAgICAgZG91YmxlIGludGVydmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91
dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKSBjb25zdDsKKworICAgICAgICAvLyBUaGUg
ZGVmYXVsdCBtaW5pbXVtIGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAwLjAw
MSA9PSAxIG1zKS4KKyAgICAgICAgLy8gVGhlc2UgYXJlIG9ubHkgbW9kaWZpZWQgdmlhIHN0YXRp
YyBtZXRob2RzIGluIFNldHRpbmdzLgorICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5U
aW1lckludGVydmFsKCkgeyByZXR1cm4gc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbDsgfQorICAg
ICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChkb3VibGUgdmFsdWUp
IHsgc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9CisKICAgICAgICAgaW50IG1f
dGltZW91dElkOwogICAgICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CiAgICAgICAgIE93blB0cjxT
Y2hlZHVsZWRBY3Rpb24+IG1fYWN0aW9uOwotICAgICAgICBzdGF0aWMgZG91YmxlIHNfbWluVGlt
ZXJJbnRlcnZhbDsKKyAgICAgICAgaW50IG1fb3JpZ2luYWxUaW1lb3V0OworICAgICAgICBzdGF0
aWMgZG91YmxlIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3ODUyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsx
NjEsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50CiAgICAgLCBt
X2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCiAgICAgLCBtX2NhblN0YXJ0TWVkaWEo
dHJ1ZSkKICAgICAsIG1fdmlld01vZGUoVmlld01vZGVXaW5kb3dlZCkKKyAgICAsIG1fbWluaW11
bVRpbWVySW50ZXJ2YWwoU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkpCiB7
CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBh
Z2UqPjsKQEAgLTgzMiw2ICs4MzMsMjEgQEAgYm9vbCBQYWdlOjpqYXZhU2NyaXB0VVJMc0FyZUFs
bG93ZWQoKSBjbwogICAgIHJldHVybiBtX2phdmFTY3JpcHRVUkxzQXJlQWxsb3dlZDsKIH0KIAor
dm9pZCBQYWdlOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50
ZXJ2YWwpCit7CisgICAgZG91YmxlIG9sZFRpbWVySW50ZXJ2YWwgPSBtX21pbmltdW1UaW1lcklu
dGVydmFsOworICAgIG1fbWluaW11bVRpbWVySW50ZXJ2YWwgPSBtaW5pbXVtVGltZXJJbnRlcnZh
bDsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmFkanVz
dE1pbmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOworICAgIH0KK30KKworZG91
YmxlIFBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKK30KKwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiBTcGVl
Y2hJbnB1dCogUGFnZTo6c3BlZWNoSW5wdXQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUGFnZSB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOworICAgICAgICBmcmllbmQgY2xh
c3MgU2V0dGluZ3M7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKIApAQCAtMjk4LDYgKzI5OSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAorICAgICAgICB2b2lkIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSk7CisgICAgICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNv
bnN0OworCiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAgICBPd25QdHI8
U2VsZWN0aW9uQ29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBAIC0zODYsNiAr
MzkwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWaWV3TW9kZSBtX3ZpZXdNb2Rl
OwogCiAgICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CisKKyAg
ICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzNCw5ICs0MzQsMjQgQEAgdm9pZCBTZXR0aW5nczo6c2V0RE9NUGFzdGVBbGxvd2VkKGJv
b2wgRAogICAgIG1faXNET01QYXN0ZUFsbG93ZWQgPSBET01QYXN0ZUFsbG93ZWQ7CiB9CiAKK3Zv
aWQgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZh
bCkKK3sKKyAgICBET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwp
OworfQorCitkb3VibGUgU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkKK3sK
KyAgICByZXR1cm4gRE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKCk7Cit9CisKIHZv
aWQgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewot
ICAgIERPTVRpbWVyOjpzZXRNaW5UaW1lckludGVydmFsKGludGVydmFsKTsKKyAgICBtX3BhZ2Ut
PnNldE1pbmltdW1UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91YmxlIFNldHRpbmdz
OjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5taW5pbXVtVGlt
ZXJJbnRlcnZhbCgpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wg
dXNlc1BhZ2VDYWNoZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDc4NTIz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDMsOCArMjAzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRET01Q
YXN0ZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgaXNET01QYXN0ZUFsbG93ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNp
ZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KKyAg
ICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOwogICAgICAg
ICAKKyAgICAgICAgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIFBlci1w
YWdlOyBpbml0aWFsaXplZCB0byBkZWZhdWx0IHZhbHVlLgorICAgICAgICBkb3VibGUgbWluRE9N
VGltZXJJbnRlcnZhbCgpOworCiAgICAgICAgIHZvaWQgc2V0VXNlc1BhZ2VDYWNoZShib29sKTsK
ICAgICAgICAgYm9vbCB1c2VzUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzUGFnZUNh
Y2hlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gNzg1MjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0Owog
ICAgIGRvdWJsZSByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0SW50ZXJ2
YWw7IH0KIAotICAgIHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBz
ZXROZXh0RmlyZVRpbWUobV9uZXh0RmlyZVRpbWUgKyBkZWx0YSk7IG1fcmVwZWF0SW50ZXJ2YWwg
Kz0gZGVsdGE7IH0KKyAgICB2b2lkIGF1Z21lbnRGaXJlSW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7
IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgfQorICAgIHZvaWQgYXVn
bWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBhdWdtZW50RmlyZUludGVydmFsKGRl
bHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCiAgICAgc3RhdGljIHZvaWQgZmly
ZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4
NTI5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNv
bnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6V2ViUGFnZSk6CisKIDIwMTEtMDItMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUobV9w
YWdlR3JvdXAtPmlkZW50aWZpZXIoKSk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKLSAg
ICBTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgU2V0dGluZ3M6
OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgIG1fZHJhd2luZ0Fy
ZWEgPSBEcmF3aW5nQXJlYTo6Y3JlYXRlKHRoaXMsIHBhcmFtZXRlcnMpOwogICAgIG1fbWFpbkZy
YW1lID0gV2ViRnJhbWU6OmNyZWF0ZU1haW5GcmFtZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDItMTQgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGlt
ZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0
aW5ncy5oOgorICAgICAgICAgIC0gQWRkZWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbC4KKyAgICAg
ICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICAgLSBBZGRlZCBGSVhNRSB0byByZW1vdmUgc2V0dGluZyBvZiBwYWdlJ3MgZGVmYXVsdCB0
aW1lciBpbnRlcnZhbC4KKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRNaW5ET01UaW1lckludGVydmFsKToKKyAg
ICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgb24gV2ViU2V0dGluZ3MuCisgICAgICAg
ICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDExLTAyLTE0ICBKYXkgU29mZmlhbiAgPGph
eXNvZmZpYW5AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSkgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViS2l0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKLSNpbmNsdWRlICJE
T01UaW1lci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCkBAIC03MSw3ICs3MSw5IEBAIHZvaWQgaW5p
dGlhbGl6ZShXZWJLaXRDbGllbnQqIHdlYktpdENsaWUKICAgICAvLyBjb2RlZCB3ZWJzaXRlcyBv
dXQgdGhlcmUgd2hpY2ggZG8gY3JlYXRlIENQVS1zcGlubmluZyBsb29wcy4gIFVzaW5nCiAgICAg
Ly8gNG1zIHByZXZlbnRzIHRoZSBDUFUgZnJvbSBzcGlubmluZyB0b28gYnVzaWx5IGFuZCBwcm92
aWRlcyBhIGJhbGFuY2UKICAgICAvLyBiZXR3ZWVuIENQVSBzcGlubmluZyBhbmQgdGhlIHNtYWxs
ZXN0IHBvc3NpYmxlIGludGVydmFsIHRpbWVyLgotICAgIFdlYkNvcmU6OkRPTVRpbWVyOjpzZXRN
aW5UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgY2FsbCBv
bmNlIENocm9taXVtIGhhcyBiZWVuIGNoYW5nZWQgdG8gc2V0CisgICAgLy8gdGhpcyBmb3IgYWxs
IHBhZ2VzIHVzaW5nIHRoZSBuZXcgV2ViU2V0dGluZ3MgQVBJLgorICAgIFdlYkNvcmU6OlNldHRp
bmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAvLyBUaGVy
ZSBhcmUgc29tZSBjb2RlIHBhdGhzIChmb3IgZXhhbXBsZSwgcnVubmluZyBXZWJLaXQgaW4gdGhl
IGJyb3dzZXIKICAgICAvLyBwcm9jZXNzIGFuZCBjYWxsaW5nIGludG8gTG9jYWxTdG9yYWdlIGJl
Zm9yZSBhbnl0aGluZyBlbHNlKSB3aGVyZSB0aGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDksNCArMzQ5LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEludGVyYWN0aXZl
Rm9ybQogICAgIG1fc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVk
KGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWluRE9NVGltZXJJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0TWluRE9NVGltZXJJ
bnRlcnZhbChpbnRlcnZhbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKIAogcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpTZXR0aW5ncyogbV9zZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4
NTI5KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93
IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNp
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIK
KworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorCiAyMDExLTAyLTE0ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NDIsMyArNjQyLDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaW5k
U3RyaW4KICAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21V
VEY4KHRhcmdldFN0cmluZyksIGZpbmRPcHRpb25zKTsKIH0KIAorZG91YmxlIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1
cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgY29yZSh3ZWJWaWV3KS0+c2V0
dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpA
QCAtODksNiArODksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29uZmlybUNvbXBvc2l0
aW9uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiB0ZXh0KTsKICAgICBzdGF0aWMgYm9vbCBm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShXZWJLaXRXZWJWaWV3KiwgaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoLCBHZGtSZWN0YW5nbGUqKTsKICAgICBzdGF0aWMgYm9vbCBzZWxlY3RlZFJhbmdl
KFdlYktpdFdlYlZpZXcqLCBpbnQqIHN0YXJ0LCBpbnQqIGVuZCk7CisgICAgc3RhdGljIGRvdWJs
ZSBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdl
YlZpZXcKKyAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJW
aWV3KiwgZG91YmxlKTsKIAogICAgIC8vIEdDCiAgICAgc3RhdGljIHZvaWQgZ2NDb2xsZWN0SmF2
YXNjcmlwdE9iamVjdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRy
b2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAg
ICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xs
ZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAyLTExICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA3ODUyMykKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjk0
LDcgKzY5NCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAg
ICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3JtIHN0cmF0ZWdpZXMuCiAg
ICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBTZXR0
aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdzOjpz
ZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25lVGlt
ZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CkBAIC0yNzM4LDYgKzI3MzgsMTcgQEAgKyAo
dm9pZClfc2V0TG9hZFJlc291cmNlc1NlcmlhbGx5OihCT09MKQogICAgIHJlc291cmNlTG9hZFNj
aGVkdWxlcigpLT5zZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChzZXJpYWxpemUpOwogfQogCisrIChk
b3VibGUpX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAoreworICAgIHJldHVybiBTZXR0aW5n
czo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKworLSAodm9pZClfc2V0TWluaW11
bVRpbWVySW50ZXJ2YWw6KGRvdWJsZSlpbnRlcnZhbEluU2Vjb25kcworeworICAgIGlmIChfcHJp
dmF0ZS0+cGFnZSkKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNlY29uZHMpOworfQorCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBfV2ViU2FmZUZvcndhcmRlcgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw2ICs1NzEs
MjMgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAvLyBEZXByZWNhdGVkLiBV
c2UgZmluZFN0cmluZy4KIC0gKEJPT0wpc2VhcmNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJl
Y3Rpb246KEJPT0wpZm9yd2FyZCBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJP
T0wpd3JhcEZsYWcgc3RhcnRJblNlbGVjdGlvbjooQk9PTClzdGFydEluU2VsZWN0aW9uOwogCisv
KiEKKyAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgIEBkaXNjdXNz
aW9uIFNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byB0aGUgcHVibGljIEFQSS4KKyAgICBA
cmVzdWx0IFJldHVybnMgdGhlIGRlZmF1bHQgbWluaW11bSB0aW1lciBpbnRlcnZhbC4KKyovCisr
IChkb3VibGUpX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbDsKKworLyohCisgICAgQG1ldGhv
ZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDoKKyAgICBAZGlzY3Vzc2lvbiBTZXRzIHRoZSBtaW5p
bXVtIGludGVydmFsIGZvciBET01UaW1lcnMgaW4gdGhpcyBXZWJWaWV3LiBUaGlzIG1ldGhvZCBp
cworICAgIGV4cG9zZWQgaGVyZSBpbiB0aGUgTWFjIHBvcnQgcmF0aGVyIHRoYW4gdGhyb3VnaCBX
ZWJQcmVmZXJlbmNlcyAod2hpY2ggZ2VuZXJhbGx5CisgICAgZ292ZXJucyBTZXR0aW5ncykgYmVj
YXVzZSB0aGlzIHZhbHVlIGlzIHNvbWV0aGluZyBhZGp1c3RlZCBhdCBydW4gdGltZSwgbm90IHNl
dAorICAgIGdsb2JhbGx5IHZpYSAiZGVmYXVsdHMgd3JpdGUiLiBTaG91bGQgY29uc2lkZXIgYWRk
aW5nIHRoaXMgdG8gdGhlIHB1YmxpYyBBUEkuCisgICAgQHBhcmFtIGludGVydmFsSW5TZWNvbmRz
IFRoZSBuZXcgbWluaW11bSB0aW1lciBpbnRlcnZhbCwgaW4gc2Vjb25kcy4KKyovCistICh2b2lk
KV9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDooZG91YmxlKWludGVydmFsSW5TZWNvbmRzOworCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaW50aW5nUHJpdmF0ZSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0
byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11
bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIwMTEtMDItMTQgIEFsZXhpcyBNZW5h
cmQgIDxhbGV4aXMubWVuYXJkQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDc4NTIzKQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0Miw2ICs5NDIsMjEgQEAgUVN0cmluZ0xpc3QgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNvbgogICAgIHJldHVybiBRU3RyaW5nTGlzdCgpOwogI2Vu
ZGlmCiB9CisKK2RvdWJsZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1l
ckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmlt
dW1UaW1lckludGVydmFsKFFXZWJQYWdlKiBwYWdlLCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAg
UGFnZSogY29yZVBhZ2UgPSBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSk7CisgICAgaWYgKCFj
b3JlUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29yZVBhZ2UtPnNldHRpbmdzKCktPnNl
dE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCiAvLyBQcm92aWRlIGEgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzbHkgZXhwb3J0ZWQgcHJpdmF0ZSBzeW1ib2xz
IGFzIG9mIFF0V2ViS2l0IDQuNiByZWxlYXNlCiAKIHZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVz
dW1lQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIGZyYW1lKQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODks
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFFTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZShRV2ViRnJh
bWUqKTsKICAgICBzdGF0aWMgdm9pZCBhZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pOwogICAgIHN0YXRpYyBRU3RyaW5nTGlz
dCBjb250ZXh0TWVudShRV2ViUGFnZSopOworCisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWlu
aW11bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdlYlZpZXcKKyAgICBz
dGF0aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChRV2ViUGFnZSosIGRvdWJsZSk7CiB9
OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5n
IG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBB
ZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBu
ZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICog
SW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpkZWZh
dWx0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViVmlldzo6c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0wMi0xNCAgQnJpYW4g
V2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDc4NTIzKQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MTEs
NyArMjYxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICNl
bmRpZgogICAgICAgICBXZWJLaXRTZXRBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVjZXNzYXJ5KCk7
CiAgICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBT
ZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdz
OjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25l
VGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICAgfQpAQCAtNjYyMCwzICs2NjIwLDE3IEBA
IFBhZ2UqIGNvcmUoSVdlYlZpZXcqIGlXZWJWaWV3KQogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CisK
K0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSogaW50ZXJ2YWwpCit7CisgICAgaWYgKCFpbnRlcnZhbCkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqaW50ZXJ2YWwgPSBTZXR0aW5nczo6ZGVmYXVsdE1pbkRP
TVRpbWVySW50ZXJ2YWwoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgaW50ZXJ2
YWwpCit7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGlu
dGVydmFsKTsKKyAgICByZXR1cm4gU19PSzsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04MTMsNiArODEzLDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBuZXh0RGlzcGxheUlzU3luY2hyb25vdXMoKTsKIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZG91YmxlICppbnRlcnZhbCk7CisKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoCisg
ICAgICAgIC8qIFtpbl0gKi8gZG91YmxlKTsKKwogICAgIC8vIFdlYlZpZXcKICAgICBib29sIHNo
b3VsZFVzZUVtYmVkZGVkVmlldyhjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpIGNvbnN0Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZh
dGUuaWRsCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
SVdlYlZpZXdQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDQgKzIzOSwyMSBAQCBp
bnRlcmZhY2UgSVdlYlZpZXdQcml2YXRlIDogSVVua25vd24KICAgICBbbG9jYWxdIEhSRVNVTFQg
cmVwb3J0RXhjZXB0aW9uKFtpbl0gSlNDb250ZXh0UmVmIGNvbnRleHQsIFtpbl0gSlNWYWx1ZVJl
ZiBleGNlcHRpb24pOwogCiAgICAgW2xvY2FsXSBIUkVTVUxUIGVsZW1lbnRGcm9tSlMoW2luXSBK
U0NvbnRleHRSZWYgY29udGV4dCwgW2luXSBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIFtvdXQsIHJl
dHZhbF0gSURPTUVsZW1lbnQqKiBlbGVtZW50KTsKKworCisgICAgLyohCisgICAgICAgIEBtZXRo
b2QgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsCisgICAgICAgIEBkaXNjdXNzaW9uIFJldHVy
bnMgdGhlIGRlZmF1bHQgbWluaW11bSBpbnRlcnZhbCBmb3IgRE9NVGltZXJzIG9uIGFsbCBwYWdl
cywgbm90CisgICAgICAgIGp1c3QgdGhlIG9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyByZWNlaXZl
ci4KKyAgICAgICAgLSAoZG91YmxlKWludGVydmFsOworICAgICovCisgICAgSFJFU1VMVCBkZWZh
dWx0TWluaW11bVRpbWVySW50ZXJ2YWwoW291dCwgcmV0dmFsXSBkb3VibGUqIGludGVydmFsKTsK
KworICAgIC8qIQorICAgICAgICBAbWV0aG9kIHNldE1pbmltdW1UaW1lckludGVydmFsCisgICAg
ICAgIEBkaXNjdXNzaW9uIFNldHMgdGhlIG1pbmltdW0gaW50ZXJ2YWwgZm9yIERPTVRpbWVycyBv
biB0aGUgd2ViIHBhZ2UgYXNzb2NpYXRlZAorICAgICAgICB3aXRoIHRoZSByZWNlaXZlci4KKyAg
ICAgICAgLSAoZG91YmxlKWludGVydmFsOworICAgICovCisgICAgSFJFU1VMVCBzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChbaW5dIGRvdWJsZSBpbnRlcnZhbCk7CiB9CkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDExLTAy
LTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVt
IERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgSW1wbGVtZW50
ZWQgbmV3IG1ldGhvZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBpbgorICAgICAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciBmb3IgYWxsIHBvcnRzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0TWluaW11bVRpbWVySW50ZXJ2
YWxDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgor
ICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9n
dGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5n
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViUGFnZTo6cmVzZXRTZXR0aW5ncyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKwogMjAxMS0wMi0xNCAgRGlyayBQ
cmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWls
ZCBmaXguCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyNiw2ICsxOTI2LDIwIEBAIHN0
YXRpYyBib29sIHNldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAx
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBk
b3VibGUgbWluaW11bSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4
Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldE1pbmlt
dW1UaW1lckludGVydmFsKG1pbmltdW0pOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgdm9pZCBsYXlvdXRUZXN0Q29udHJvbGxlck9iamVj
dEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxl
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKG9iamVjdCkpOwpAQCAtMjA3Myw2ICsyMDg3LDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJzZXRJY29uRGF0YWJhc2VF
bmFibGVkIiwgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkIiwgc2V0SmF2YVNjcmlwdFByb2ZpbGlu
Z0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0
UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRlckNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgICAgIHsgInNldE1pbmltdW1UaW1lckludGVydmFsIiwgc2V0TWluaW11bVRpbWVySW50
ZXJ2YWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24iLCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDc4NTIzKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEwLDYgKzMxMCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4Vmlld1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3SGVpZ2h0Owog
CisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpOworCiBwcml2YXRlOgog
ICAgIExheW91dFRlc3RDb250cm9sbGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJM
LCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhhc2gpOwogCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICBiaW5kTWV0aG9k
KCJzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbik7CiAgICAgYmluZE1ldGhvZCgic2V0SWNvbkRhdGFiYXNlRW5h
YmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAg
ICAgYmluZE1ldGhvZCgic2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsICZMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCk7CisgICAgYmlu
ZE1ldGhvZCgic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1pbmltdW1UaW1lckludGVydmFsKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNl
T3JpZW50YXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tEZXZpY2VPcmllbnRh
dGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKICAgICBiaW5kTWV0aG9k
KCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwpAQCAtMTU5MywzICsxNTk0LDExIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWEKICAgICAgICAgcmV0dXJuOwogICAgIHJl
c3VsdC0+c2V0KG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvblN0YXJ0
SGFzU3BlbGxpbmdNYXJrZXJGb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgYXJndW1lbnRzWzFd
LnRvSW50MzIoKSkpOwogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2
YWwoYXJndW1lbnRzWzBdLnRvRG91YmxlKCkpOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3
ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgaGFzU3BlbGxpbmdNYXJrZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKIHB1YmxpYzoKICAgICAvLyBUaGUgZm9s
bG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBz
ZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZy
b3plbik7IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjI2LDggKzEyMjYsMTEgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6cmVzZXQoKQogICAgIG1fd2luZG93UmVjdCA9IFdlYlJlY3QoKTsK
ICAgICBtX3BhaW50UmVjdCA9IFdlYlJlY3QoKTsKIAotICAgIGlmIChtX3dlYldpZGdldCkKKyAg
ICBpZiAobV93ZWJXaWRnZXQpIHsKICAgICAgICAgd2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2V0
TmFtZShXZWJTdHJpbmcoKSk7CisgICAgICAgIC8vIEZJWE1FOiBjaGFuZ2UgdG8gdXNlIHdlYmtp
dF9zdXBwb3J0OjpGb3JlZ3JvdW5kVGFiVGltZXJJbnRlcnZhbCBvbmNlIHRoYXQgbGFuZHMuCisg
ICAgICAgIHdlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAw
NCk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdIb3N0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKGJvb2wgZW5hYmxlZCkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsNiAr
NDI4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgIGdf
b2JqZWN0X3NldChHX09CSkVDVChpbnNwZWN0b3IpLCAiamF2YXNjcmlwdC1wcm9maWxpbmctZW5h
YmxlZCIsIEZBTFNFLCBOVUxMKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZl
bCh3ZWJWaWV3LCAxLjApOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwod2ViVmlldywgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWZhdWx0
TWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CiAKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9u
IDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgwLDMgKzg4MCw5IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGlm
IG5lZWRlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNzU4
LgogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CisgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh3ZWJWaWV3LCBt
aW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxNyw2ICsxMDE3
LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbd2Vi
VmlldyB1bmRvTWFuYWdlcl0gcmVtb3ZlQWxsQWN0aW9uc107CiAgICAgW1dlYlZpZXcgX3JlbW92
ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwOlt3ZWJWaWV3IGdyb3VwTmFtZV1dOwogICAgIFtbd2Vi
VmlldyB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAgICBbd2ViVmlldyBfc2V0TWluaW11
bVRpbWVySW50ZXJ2YWw6W1dlYlZpZXcgX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbF1dOwog
CiAgICAgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpOwogCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShy
ZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwMywzICsxMDAzLDggQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSAogewogICAgIFtXZWJWaWV3IF9zZXRM
b2FkUmVzb3VyY2VzU2VyaWFsbHk6c2VyaWFsaXplXTsKIH0KKwordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKQoreworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9zZXRNaW5pbXVtVGltZXJJbnRlcnZh
bDptaW5pbXVtVGltZXJJbnRlcnZhbF07Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9x
dC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1
LDYgKzIwNSw4IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRTZXR0aW5ncygpCiAgICAgUVdlYlNldHRp
bmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hlKDApOyAvLyByZXNldCB0byBkZWZhdWx0CiAgICAg
c2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hlZXRVcmwoUVVybCgpKTsgLy8gcmVzZXQgdG8gZGVm
YXVsdAogCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmltdW1UaW1lckludGVy
dmFsKHRoaXMsIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkZWZhdWx0TWluaW11bVRpbWVySW50
ZXJ2YWwoKSk7CisKICAgICBtX3BlbmRpbmdHZW9sb2NhdGlvblJlcXVlc3RzLmNsZWFyKCk7CiB9
CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzYsNSArODM2
LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFkZFVSTFRvUmVkaXIKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6YWRkVVJMVG9SZWRpcmVjdChvcmlnaW4sIGRlc3RpbmF0aW9u
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChtX2RydC0+d2ViUGFnZSgpLCBtaW5pbXVt
VGltZXJJbnRlcnZhbCk7Cit9CisKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVy
OjptYXhWaWV3V2lkdGggPSA4MDA7CiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWF4Vmlld0hlaWdodCA9IDYwMDsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTIsNiArMjUyLDggQEAgcHVibGljIHNsb3RzOgogICAgIFFTdHJpbmcgcGFnZVByb3Bl
cnR5KGNvbnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpOwogICAgIHZv
aWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgUVN0cmluZyYgc291cmNlQ29kZSk7CiAKKyAgICB2
b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSk7CisKIHByaXZhdGUgc2xvdHM6CiAg
ICAgdm9pZCBwcm9jZXNzV29yaygpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY2LDYgKzg2
NiwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgaWYg
KCF3ZWJWaWV3UHJpdmF0ZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgZG91YmxlIG1pbmltdW1J
bnRlcnZhbCA9IDA7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3UHJpdmF0ZS0+ZGVmYXVsdE1p
bmltdW1UaW1lckludGVydmFsKCZtaW5pbXVtSW50ZXJ2YWwpKSkKKyAgICAgICAgd2ViVmlld1By
aXZhdGUtPnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmltdW1JbnRlcnZhbCk7CisKICAgICBD
T01QdHI8SVdlYkluc3BlY3Rvcj4gaW5zcGVjdG9yOwogICAgIGlmIChTVUNDRUVERUQod2ViVmll
d1ByaXZhdGUtPmluc3BlY3RvcigmaW5zcGVjdG9yKSkpCiAgICAgICAgIGluc3BlY3Rvci0+c2V0
SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoRkFMU0UpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lv
biA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzAsMyArMTQzMCwxNiBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVICiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dC4KIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIENPTVB0cjxJV2ViVmlldz4g
d2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViVmlld1ByaXZhdGU+IHZpZXdQcml2YXRlKFF1
ZXJ5LCB3ZWJWaWV3KTsKKyAgICBpZiAoIXZpZXdQcml2YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICB2aWV3UHJpdmF0ZS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobWluaW11bVRpbWVySW50
ZXJ2YWwpOworfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1MjkpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMS0wMi0xNCAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBp
bnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5j
cmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0
LXBhcnQtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0y
Lmh0bWw6IEFkZGVkLgorICAgICAgICAgIC0gQ2hhaW5lZCB0ZXN0cyAodGhlIGFzc3VtcHRpb24g
aXMgdGhhdCB0aGUgcnVuLXdlYmtpdC10ZXN0cworICAgICAgICAgICAgaGFybmVzcyB3aWxsIHJ1
biB0aGVtIHNlcXVlbnRpYWxseSwgd2hpY2ggaXMgYSByZWFzb25hYmx5IGdvb2QKKyAgICAgICAg
ICAgIGFzc3VtcHRpb24pIHdoaWNoIHZlcmlmeSB0aGF0IHRoZSBtaW5pbXVtIHRpbWVyIGludGVy
dmFsIGlzCisgICAgICAgICAgICByZXNldCBiZXR3ZWVuIHRlc3RzLgorICAgICAgICAqIGZhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sOiBBZGRlZC4K
KyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgaW5jcmVhc2luZyB0aGUgbWluaW11bSB0aW1lciBp
bnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIGZhc3QgdGltZXJzIHRvIHJ1biBzbG93bHkuCisg
ICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2
YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgICAtIFZl
cmlmaWVzIHRoYXQgZGVjcmVhc2luZyB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBjYXVzZXMK
KyAgICAgICAgICAgIHByZXZpb3VzbHkgc2xvd2VkLWRvd24gdGltZXJzIHRvIGJlIHJlZXZhbHVh
dGVkIGltbWVkaWF0ZWx5LgorCiAyMDExLTAyLTExICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1w
YXJ0LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Rp
bWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzIEBACitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5j
cmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0
LXBhcnQtMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2co
bXNnKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJiciIpKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAo
IXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCBy
ZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIE1h
a2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gdHdpY2UgYSBzZWNvbmQuCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC41KTsKKworICAgIC8v
IFBhcnQgMiBvZiB0aGlzIHRlc3QgKHdoaWNoIHdpbGwgbGlrZWx5IGJlIGV4ZWN1dGVkIGltbWVk
aWF0ZWx5CisgICAgLy8gYWZ0ZXIgdGhpcyBvbmUgYnkgdGhlIGhhcm5lc3MpIHZlcmlmaWVzIHRo
YXQgdGhlIG1pbmltdW0gdGltZXIKKyAgICAvLyBpbnRlcnZhbCBpcyByZXNldCBiZXR3ZWVuIHRl
c3RzLgorCisgICAgbG9nKCJQQVNTIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
UEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVu
dC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1l
bnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhhbmRs
ZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwg
MSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1lb3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3RlOiB0
aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQgc29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4VGlt
ZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIuY3BwLgorICAgIGlmIChjb3VudCA+IDEwKQorICAg
ICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0
IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRo
ZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8vIFRpbWVycyBzaG91bGQgYmUgcnVubmluZyBh
dCBmdWxsIHNwZWVkLCBub3QgYXQgdGhlIHRocm90dGxlZAorICAgIC8vIHJhdGUgc2V0IGJ5IHBh
cnQgMSBvZiB0aGlzIHRlc3QuCisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwg
MTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRl
cnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291
bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7Cisg
ICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93
VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0
aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRp
bWVyLmNwcC4KKyAgICBpZiAoY291bnQgPCAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAg
ZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1l
cyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewor
ICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisK
KyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIHR3aWNlIGEgc2Vjb25k
LgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDAuNSk7
CisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGlt
ZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4t
aW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MK
KworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3Jl
YXNlLW1pbi1pbnRlcnZhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNl
LW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
PSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQor
Cit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsr
Y291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5j
dGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVz
aG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVs
IGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQgPiAxMCkKKyAgICAgICAgbG9nKCJQQVNT
Iik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50
ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENv
bnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIG9uY2Ug
cGVyIHNlY29uZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNaW5pbXVtVGltZXJJbnRl
cnZhbCgxLjApOworCisgICAgc2V0VGltZW91dChzbG93VGltZW91dEhhbmRsZXIsIDUwMCk7Cisg
ICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworCisgICAgLy8gQWxsb3cgdGlt
ZXJzIHRvIHJ1biBxdWlja2x5IGFnYWluLgorICAgIC8vIElmIHRoaXMgZG9lc24ndCBjYXVzZSB0
aW1lcnMgdG8gZ2V0IHJlLWV2YWx1YXRlZCBpbW1lZGlhdGVseSwKKyAgICAvLyB0aGUgZmFzdCB0
aW1lb3V0IGhhbmRsZXIgd29uJ3QgZ2V0IGNhbGxlZCBmb3IgdXAgdG8gYSBzZWNvbmQsCisgICAg
Ly8gd2hpY2ggd291bGQgbGVhZCB0byBwb29yIHJlc3BvbnNpdmVuZXNzLgorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDAuMDA0KTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82405</attachid>
            <date>2011-02-14 19:07:01 -0800</date>
            <delta_ts>2011-02-14 19:13:32 -0800</delta_ts>
            <desc>Minor Win port change</desc>
            <filename>bug-54312-20110214190700.patch</filename>
            <type>text/plain</type>
            <size>57134</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICBJZGVhbGx5IGNoYW5naW5n
IHRoZSBwYWdlJ3MgbWluaW11bSB0aW1lciBpbnRlcnZhbCB3b3VsZCBhZmZlY3QKKyAgICAgICAg
ZGVkaWNhdGVkIHdvcmtlcnMsIGJ1dCB0aGlzIGlzIHRvbyBtdWNoIHRvIGRvIGluIGFuIGluaXRp
YWwgcGF0Y2gsCisgICAgICAgIHNvIGEgRklYTUUgaGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAg
VGVzdGVkIHdpdGg6CisgICAgICAgICAgLSBUaGUgbmV3IGxheW91dCB0ZXN0cyBvbiB0aGUgV2Vi
S2l0IE1hYyBhbmQgQ2hyb21pdW0gKE1hYywKKyAgICAgICAgICAgIExpbnV4KSBEUlQgcG9ydHMu
CisgICAgICAgICAgLSBIb29rZWQgdXAgdGhlIG5ldyBBUEkgaW4gQ2hyb21pdW0gYW5kIHJhbiBz
b21lIHNpbXBsZSBtYW51YWwKKyAgICAgICAgICAgIHRlc3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRpbWVy
SW50ZXJ2YWwpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9N
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKToKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZGVmYXVsdE1pblRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnNldERlZmF1bHRNaW5U
aW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptaW5pbXVtVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lckJhc2U6OmF1Z21lbnRSZXBlYXRJbnRlcnZhbCk6CisKIDIwMTEtMDItMTQg
IEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgZWZsIGJ1aWxk
IGZpeApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5Niw2ICs3OTYsNyBA
QCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlsCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MxOHNldE1pbmltdW1Gb250U2l6ZUVpCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldFdlYkF1ZGlvRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxOW1pbkRP
TVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93RGVidWdCb3Jk
ZXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dU
RjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50YXN5Rm9udEZh
bWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBAIC04MjUsNiArODI2LDcgQEAgX19aTjdXZWJD
b3JlOFNldHRpbmdzMjVzZXROZWVkc0xlb3BhcmRNYQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0U2hv
dWxkUHJpbnRCYWNrZ3JvdW5kc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19fWk43V2ViQ29yZThTZXR0aW5nczI2ZGVmYXVs
dE1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXREZWZhdWx0
VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczI2
c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRG
VFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGhFUktOM1dURjZTdHJpbmdFCkBAIC04MzQsNiArODM2LDcg
QEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRTcGF0aWFsTmF2aWdhdAogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjhzZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI5c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNl
dHRpbmdzMjlzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MyOXNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsRWQKIF9fWk43V2ViQ29yZThTZXR0
aW5nczI5c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMzBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMzFzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkRWIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQzLDYgKzIyNDMsMTQgQEAgS1VSTCBEb2N1bWVu
dDo6dmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IAogICAgIHJldHVybiBjb21wbGV0ZVVSTCh1cmwp
OwogfQogCitkb3VibGUgRG9jdW1lbnQ6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sK
KyAgICBQYWdlKiBwID0gcGFnZSgpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6Om1pbmltdW1UaW1lckludGVydmFsKCk7CisgICAgcmV0dXJuIHAt
PnNldHRpbmdzKCktPm1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwogRXZlbnRUYXJnZXQqIERv
Y3VtZW50OjplcnJvckV2ZW50VGFyZ2V0KCkKIHsKICAgICByZXR1cm4gZG9tV2luZG93KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzNSw2ICsxMTM1LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHZpcnR1YWxVUkwoKSBjb25zdDsgLy8gU2Ft
ZSBhcyB1cmwoKSwgYnV0IG5lZWRlZCBmb3IgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBpbXBs
ZW1lbnQgaXQgd2l0aG91dCBhIHBlcmZvcm1hbmNlIGxvc3MgZm9yIGRpcmVjdCBjYWxscy4KICAg
ICB2aXJ0dWFsIEtVUkwgdmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OyAv
LyBTYW1lIGFzIGNvbXBsZXRlVVJMKCkgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KIAor
ICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlVGl0bGUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNs
dWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVVSTC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTQwNiw2ICs0MDgsMjYgQEAgRmlsZVRocmVhZCogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKK3ZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1U
aW1lckludGVydmFsKQoreworICAgIGlmIChtaW5pbXVtVGltZXJJbnRlcnZhbCgpICE9IG9sZE1p
bmltdW1UaW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29uZDsKKyAgICAg
ICAgICAgIHRpbWVyLT5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2RvdWJsZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgLy8gVGhlIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgRE9NVGltZXIncyBkZWZhdWx0CisgICAgLy8g
bWluaW11bSB0aW1lciBpbnRlcnZhbC4gRklYTUU6IHRvIG1ha2UgaXQgd29yayB3aXRoIGRlZGlj
YXRlZAorICAgIC8vIHdvcmtlcnMsIHdlIHdpbGwgaGF2ZSB0byBvdmVycmlkZSBpdCBpbiB0aGUg
YXBwcm9wcmlhdGUKKyAgICAvLyBzdWJjbGFzcywgYW5kIHByb3ZpZGUgYSB3YXkgdG8gZW51bWVy
YXRlIGEgRG9jdW1lbnQncyBkZWRpY2F0ZWQKKyAgICAvLyB3b3JrZXJzIHNvIHdlIGNhbiB1cGRh
dGUgdGhlbSBhbGwuCisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbCgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjp+VGFzaygpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJl
dmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc3RvcEZpbGVUaHJlYWQoKTsKICNlbmRpZgogCisgICAgICAgIC8v
IEludGVydmFsIGlzIGluIHNlY29uZHMuCisgICAgICAgIHZvaWQgYWRqdXN0TWluaW11bVRpbWVy
SW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAgICAgdmlydHVh
bCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0
aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5nZXJvdXMgdG8g
Y2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApAQCAtMTc2LDcg
KzE4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHM7CiAgICAgICAgIGJvb2wgbV9pbkRlc3RydWN0b3I7CiAKLSAgICAgICAg
SGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsKKyAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPGludCwgRE9NVGltZXIqPiBUaW1lb3V0TWFwOworICAgICAgICBUaW1lb3V0TWFwIG1fdGlt
ZW91dHM7CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1fcHVi
bGljQmxvYlVSTHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gNzg1
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTMgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGlu
dCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiBzdGF0aWMgY29uc3QgZG91YmxlIG9uZU1pbGxp
c2Vjb25kID0gMC4wMDE7Ci1kb3VibGUgRE9NVGltZXI6OnNfbWluVGltZXJJbnRlcnZhbCA9IDAu
MDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKK2RvdWJsZSBET01UaW1lcjo6c19taW5EZWZhdWx0VGlt
ZXJJbnRlcnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKIAogc3RhdGljIGludCB0aW1l
ck5lc3RpbmdMZXZlbCA9IDA7CiAKIERPTVRpbWVyOjpET01UaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQg
dGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0
KQogICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV9vcmlnaW5hbFRpbWVvdXQodGltZW91
dCkKIHsKICAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElkID0gMDsKICAgICArK2xhc3RV
c2VkVGltZW91dElkOwpAQCAtNTgsMTAgKzU5LDcgQEAgRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRUaW1l
b3V0KG1fdGltZW91dElkLCB0aGlzKTsKIAotICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25k
cyA9IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKLQotICAg
IGlmIChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IHNfbWluVGltZXJJbnRlcnZhbCAmJiBtX25lc3Rp
bmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgaW50ZXJ2YWxNaWxsaXNl
Y29uZHMgPSBzX21pblRpbWVySW50ZXJ2YWw7CisgICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNv
bmRzID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKHRpbWVvdXQsIGNvbnRleHQtPm1pbmltdW1U
aW1lckludGVydmFsKCkpOwogICAgIGlmIChzaW5nbGVTaG90KQogICAgICAgICBzdGFydE9uZVNo
b3QoaW50ZXJ2YWxNaWxsaXNlY29uZHMpOwogICAgIGVsc2UKQEAgLTEwOCwxMCArMTA2LDExIEBA
IHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZvciBub24tb25l
LXNob3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChyZXBlYXRJ
bnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkgPCBzX21pblRpbWVySW50ZXJ2YWwpIHsKKyAg
ICAgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IGNvbnRleHQtPm1pbmltdW1UaW1lckludGVy
dmFsKCk7CisgICAgICAgIGlmIChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkg
PCBtaW5pbXVtSW50ZXJ2YWwpIHsKICAgICAgICAgICAgIG1fbmVzdGluZ0xldmVsKys7CiAgICAg
ICAgICAgICBpZiAobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCi0gICAg
ICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKHNfbWluVGltZXJJbnRlcnZhbCAtIHJl
cGVhdEludGVydmFsKCkpOworICAgICAgICAgICAgICAgIGF1Z21lbnRSZXBlYXRJbnRlcnZhbCht
aW5pbXVtSW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMgcG9pbnQsIGl0IGNh
biBkZWxldGUgdGhlIHRpbWVyLgpAQCAtMTUwLDQgKzE0OSwyMiBAQCB2b2lkIERPTVRpbWVyOjpz
dG9wKCkKICAgICBtX2FjdGlvbi5jbGVhcigpOwogfQogCit2b2lkIERPTVRpbWVyOjphZGp1c3RN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCit7Cisg
ICAgaWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgIHJl
dHVybjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRlcnZhbENsYW1w
ZWRUb01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsK
KyAgICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVt
KG1fb3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPm1pbmltdW1UaW1l
ckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBlZEludGVydmFs
IC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGltZXI6OmludGVy
dmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKSBjb25zdAoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1heChvbmVN
aWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlmIChpbnRlcnZh
bE1pbGxpc2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49
IG1heFRpbWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1p
bmltdW1UaW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vjb25kczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNs
YXNzIFNldHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVU
aW1lciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIg
b3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdApAQCAt
NDYsMTggKzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAg
ICAgICAvLyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAw
LjAwMSA9PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lckludGVydmFsKCkg
eyByZXR1cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1p
blRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZhbCA9IHZhbHVl
OyB9CisgICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRoaXMgYWxsb3dz
IHRoZSBtaW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5nZWQgaW4gcmVz
cG9uc2UKKyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRvIHRoZSBiYWNr
Z3JvdW5kLgorICAgICAgICB2b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBv
bGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBET01UaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+LCBp
bnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVk
KCk7CiAKKyAgICAgICAgZG91YmxlIGludGVydmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91
dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKSBjb25zdDsKKworICAgICAgICAvLyBUaGUg
ZGVmYXVsdCBtaW5pbXVtIGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAwLjAw
MSA9PSAxIG1zKS4KKyAgICAgICAgLy8gVGhlc2UgYXJlIG9ubHkgbW9kaWZpZWQgdmlhIHN0YXRp
YyBtZXRob2RzIGluIFNldHRpbmdzLgorICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5U
aW1lckludGVydmFsKCkgeyByZXR1cm4gc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbDsgfQorICAg
ICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChkb3VibGUgdmFsdWUp
IHsgc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9CisKICAgICAgICAgaW50IG1f
dGltZW91dElkOwogICAgICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CiAgICAgICAgIE93blB0cjxT
Y2hlZHVsZWRBY3Rpb24+IG1fYWN0aW9uOwotICAgICAgICBzdGF0aWMgZG91YmxlIHNfbWluVGlt
ZXJJbnRlcnZhbDsKKyAgICAgICAgaW50IG1fb3JpZ2luYWxUaW1lb3V0OworICAgICAgICBzdGF0
aWMgZG91YmxlIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3ODUyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsx
NjEsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50CiAgICAgLCBt
X2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCiAgICAgLCBtX2NhblN0YXJ0TWVkaWEo
dHJ1ZSkKICAgICAsIG1fdmlld01vZGUoVmlld01vZGVXaW5kb3dlZCkKKyAgICAsIG1fbWluaW11
bVRpbWVySW50ZXJ2YWwoU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkpCiB7
CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBh
Z2UqPjsKQEAgLTgzMiw2ICs4MzMsMjEgQEAgYm9vbCBQYWdlOjpqYXZhU2NyaXB0VVJMc0FyZUFs
bG93ZWQoKSBjbwogICAgIHJldHVybiBtX2phdmFTY3JpcHRVUkxzQXJlQWxsb3dlZDsKIH0KIAor
dm9pZCBQYWdlOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50
ZXJ2YWwpCit7CisgICAgZG91YmxlIG9sZFRpbWVySW50ZXJ2YWwgPSBtX21pbmltdW1UaW1lcklu
dGVydmFsOworICAgIG1fbWluaW11bVRpbWVySW50ZXJ2YWwgPSBtaW5pbXVtVGltZXJJbnRlcnZh
bDsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmFkanVz
dE1pbmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOworICAgIH0KK30KKworZG91
YmxlIFBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKK30KKwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiBTcGVl
Y2hJbnB1dCogUGFnZTo6c3BlZWNoSW5wdXQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUGFnZSB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOworICAgICAgICBmcmllbmQgY2xh
c3MgU2V0dGluZ3M7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKIApAQCAtMjk4LDYgKzI5OSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAorICAgICAgICB2b2lkIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSk7CisgICAgICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNv
bnN0OworCiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAgICBPd25QdHI8
U2VsZWN0aW9uQ29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBAIC0zODYsNiAr
MzkwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWaWV3TW9kZSBtX3ZpZXdNb2Rl
OwogCiAgICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CisKKyAg
ICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzNCw5ICs0MzQsMjQgQEAgdm9pZCBTZXR0aW5nczo6c2V0RE9NUGFzdGVBbGxvd2VkKGJv
b2wgRAogICAgIG1faXNET01QYXN0ZUFsbG93ZWQgPSBET01QYXN0ZUFsbG93ZWQ7CiB9CiAKK3Zv
aWQgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZh
bCkKK3sKKyAgICBET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwp
OworfQorCitkb3VibGUgU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkKK3sK
KyAgICByZXR1cm4gRE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKCk7Cit9CisKIHZv
aWQgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewot
ICAgIERPTVRpbWVyOjpzZXRNaW5UaW1lckludGVydmFsKGludGVydmFsKTsKKyAgICBtX3BhZ2Ut
PnNldE1pbmltdW1UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91YmxlIFNldHRpbmdz
OjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5taW5pbXVtVGlt
ZXJJbnRlcnZhbCgpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wg
dXNlc1BhZ2VDYWNoZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDc4NTIz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDMsOCArMjAzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRET01Q
YXN0ZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgaXNET01QYXN0ZUFsbG93ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNp
ZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KKyAg
ICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOwogICAgICAg
ICAKKyAgICAgICAgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIFBlci1w
YWdlOyBpbml0aWFsaXplZCB0byBkZWZhdWx0IHZhbHVlLgorICAgICAgICBkb3VibGUgbWluRE9N
VGltZXJJbnRlcnZhbCgpOworCiAgICAgICAgIHZvaWQgc2V0VXNlc1BhZ2VDYWNoZShib29sKTsK
ICAgICAgICAgYm9vbCB1c2VzUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzUGFnZUNh
Y2hlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gNzg1MjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0Owog
ICAgIGRvdWJsZSByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0SW50ZXJ2
YWw7IH0KIAotICAgIHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBz
ZXROZXh0RmlyZVRpbWUobV9uZXh0RmlyZVRpbWUgKyBkZWx0YSk7IG1fcmVwZWF0SW50ZXJ2YWwg
Kz0gZGVsdGE7IH0KKyAgICB2b2lkIGF1Z21lbnRGaXJlSW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7
IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgfQorICAgIHZvaWQgYXVn
bWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBhdWdtZW50RmlyZUludGVydmFsKGRl
bHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCiAgICAgc3RhdGljIHZvaWQgZmly
ZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4
NTI5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNv
bnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6V2ViUGFnZSk6CisKIDIwMTEtMDItMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUobV9w
YWdlR3JvdXAtPmlkZW50aWZpZXIoKSk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKLSAg
ICBTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgU2V0dGluZ3M6
OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgIG1fZHJhd2luZ0Fy
ZWEgPSBEcmF3aW5nQXJlYTo6Y3JlYXRlKHRoaXMsIHBhcmFtZXRlcnMpOwogICAgIG1fbWFpbkZy
YW1lID0gV2ViRnJhbWU6OmNyZWF0ZU1haW5GcmFtZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDItMTQgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGlt
ZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0
aW5ncy5oOgorICAgICAgICAgIC0gQWRkZWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbC4KKyAgICAg
ICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICAgLSBBZGRlZCBGSVhNRSB0byByZW1vdmUgc2V0dGluZyBvZiBwYWdlJ3MgZGVmYXVsdCB0
aW1lciBpbnRlcnZhbC4KKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRNaW5ET01UaW1lckludGVydmFsKToKKyAg
ICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgb24gV2ViU2V0dGluZ3MuCisgICAgICAg
ICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDExLTAyLTE0ICBKYXkgU29mZmlhbiAgPGph
eXNvZmZpYW5AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSkgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViS2l0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKLSNpbmNsdWRlICJE
T01UaW1lci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCkBAIC03MSw3ICs3MSw5IEBAIHZvaWQgaW5p
dGlhbGl6ZShXZWJLaXRDbGllbnQqIHdlYktpdENsaWUKICAgICAvLyBjb2RlZCB3ZWJzaXRlcyBv
dXQgdGhlcmUgd2hpY2ggZG8gY3JlYXRlIENQVS1zcGlubmluZyBsb29wcy4gIFVzaW5nCiAgICAg
Ly8gNG1zIHByZXZlbnRzIHRoZSBDUFUgZnJvbSBzcGlubmluZyB0b28gYnVzaWx5IGFuZCBwcm92
aWRlcyBhIGJhbGFuY2UKICAgICAvLyBiZXR3ZWVuIENQVSBzcGlubmluZyBhbmQgdGhlIHNtYWxs
ZXN0IHBvc3NpYmxlIGludGVydmFsIHRpbWVyLgotICAgIFdlYkNvcmU6OkRPTVRpbWVyOjpzZXRN
aW5UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgY2FsbCBv
bmNlIENocm9taXVtIGhhcyBiZWVuIGNoYW5nZWQgdG8gc2V0CisgICAgLy8gdGhpcyBmb3IgYWxs
IHBhZ2VzIHVzaW5nIHRoZSBuZXcgV2ViU2V0dGluZ3MgQVBJLgorICAgIFdlYkNvcmU6OlNldHRp
bmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAvLyBUaGVy
ZSBhcmUgc29tZSBjb2RlIHBhdGhzIChmb3IgZXhhbXBsZSwgcnVubmluZyBXZWJLaXQgaW4gdGhl
IGJyb3dzZXIKICAgICAvLyBwcm9jZXNzIGFuZCBjYWxsaW5nIGludG8gTG9jYWxTdG9yYWdlIGJl
Zm9yZSBhbnl0aGluZyBlbHNlKSB3aGVyZSB0aGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDksNCArMzQ5LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEludGVyYWN0aXZl
Rm9ybQogICAgIG1fc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVk
KGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWluRE9NVGltZXJJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0TWluRE9NVGltZXJJ
bnRlcnZhbChpbnRlcnZhbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKIAogcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpTZXR0aW5ncyogbV9zZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4
NTI5KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93
IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNp
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIK
KworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorCiAyMDExLTAyLTE0ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NDIsMyArNjQyLDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaW5k
U3RyaW4KICAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21V
VEY4KHRhcmdldFN0cmluZyksIGZpbmRPcHRpb25zKTsKIH0KIAorZG91YmxlIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1
cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgY29yZSh3ZWJWaWV3KS0+c2V0
dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpA
QCAtODksNiArODksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29uZmlybUNvbXBvc2l0
aW9uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiB0ZXh0KTsKICAgICBzdGF0aWMgYm9vbCBm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShXZWJLaXRXZWJWaWV3KiwgaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoLCBHZGtSZWN0YW5nbGUqKTsKICAgICBzdGF0aWMgYm9vbCBzZWxlY3RlZFJhbmdl
KFdlYktpdFdlYlZpZXcqLCBpbnQqIHN0YXJ0LCBpbnQqIGVuZCk7CisgICAgc3RhdGljIGRvdWJs
ZSBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdl
YlZpZXcKKyAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJW
aWV3KiwgZG91YmxlKTsKIAogICAgIC8vIEdDCiAgICAgc3RhdGljIHZvaWQgZ2NDb2xsZWN0SmF2
YXNjcmlwdE9iamVjdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRy
b2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAg
ICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xs
ZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAyLTExICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA3ODUyMykKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjk0
LDcgKzY5NCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAg
ICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3JtIHN0cmF0ZWdpZXMuCiAg
ICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBTZXR0
aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdzOjpz
ZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25lVGlt
ZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CkBAIC0yNzM4LDYgKzI3MzgsMTcgQEAgKyAo
dm9pZClfc2V0TG9hZFJlc291cmNlc1NlcmlhbGx5OihCT09MKQogICAgIHJlc291cmNlTG9hZFNj
aGVkdWxlcigpLT5zZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChzZXJpYWxpemUpOwogfQogCisrIChk
b3VibGUpX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAoreworICAgIHJldHVybiBTZXR0aW5n
czo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKworLSAodm9pZClfc2V0TWluaW11
bVRpbWVySW50ZXJ2YWw6KGRvdWJsZSlpbnRlcnZhbEluU2Vjb25kcworeworICAgIGlmIChfcHJp
dmF0ZS0+cGFnZSkKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNlY29uZHMpOworfQorCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBfV2ViU2FmZUZvcndhcmRlcgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw2ICs1NzEs
MjMgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAvLyBEZXByZWNhdGVkLiBV
c2UgZmluZFN0cmluZy4KIC0gKEJPT0wpc2VhcmNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJl
Y3Rpb246KEJPT0wpZm9yd2FyZCBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJP
T0wpd3JhcEZsYWcgc3RhcnRJblNlbGVjdGlvbjooQk9PTClzdGFydEluU2VsZWN0aW9uOwogCisv
KiEKKyAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgIEBkaXNjdXNz
aW9uIFNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byB0aGUgcHVibGljIEFQSS4KKyAgICBA
cmVzdWx0IFJldHVybnMgdGhlIGRlZmF1bHQgbWluaW11bSB0aW1lciBpbnRlcnZhbC4KKyovCisr
IChkb3VibGUpX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbDsKKworLyohCisgICAgQG1ldGhv
ZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDoKKyAgICBAZGlzY3Vzc2lvbiBTZXRzIHRoZSBtaW5p
bXVtIGludGVydmFsIGZvciBET01UaW1lcnMgaW4gdGhpcyBXZWJWaWV3LiBUaGlzIG1ldGhvZCBp
cworICAgIGV4cG9zZWQgaGVyZSBpbiB0aGUgTWFjIHBvcnQgcmF0aGVyIHRoYW4gdGhyb3VnaCBX
ZWJQcmVmZXJlbmNlcyAod2hpY2ggZ2VuZXJhbGx5CisgICAgZ292ZXJucyBTZXR0aW5ncykgYmVj
YXVzZSB0aGlzIHZhbHVlIGlzIHNvbWV0aGluZyBhZGp1c3RlZCBhdCBydW4gdGltZSwgbm90IHNl
dAorICAgIGdsb2JhbGx5IHZpYSAiZGVmYXVsdHMgd3JpdGUiLiBTaG91bGQgY29uc2lkZXIgYWRk
aW5nIHRoaXMgdG8gdGhlIHB1YmxpYyBBUEkuCisgICAgQHBhcmFtIGludGVydmFsSW5TZWNvbmRz
IFRoZSBuZXcgbWluaW11bSB0aW1lciBpbnRlcnZhbCwgaW4gc2Vjb25kcy4KKyovCistICh2b2lk
KV9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDooZG91YmxlKWludGVydmFsSW5TZWNvbmRzOworCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaW50aW5nUHJpdmF0ZSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0
byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11
bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIwMTEtMDItMTQgIEFsZXhpcyBNZW5h
cmQgIDxhbGV4aXMubWVuYXJkQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDc4NTIzKQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0Miw2ICs5NDIsMjEgQEAgUVN0cmluZ0xpc3QgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNvbgogICAgIHJldHVybiBRU3RyaW5nTGlzdCgpOwogI2Vu
ZGlmCiB9CisKK2RvdWJsZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1l
ckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmlt
dW1UaW1lckludGVydmFsKFFXZWJQYWdlKiBwYWdlLCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAg
UGFnZSogY29yZVBhZ2UgPSBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSk7CisgICAgaWYgKCFj
b3JlUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29yZVBhZ2UtPnNldHRpbmdzKCktPnNl
dE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCiAvLyBQcm92aWRlIGEgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzbHkgZXhwb3J0ZWQgcHJpdmF0ZSBzeW1ib2xz
IGFzIG9mIFF0V2ViS2l0IDQuNiByZWxlYXNlCiAKIHZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVz
dW1lQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIGZyYW1lKQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODks
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFFTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZShRV2ViRnJh
bWUqKTsKICAgICBzdGF0aWMgdm9pZCBhZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pOwogICAgIHN0YXRpYyBRU3RyaW5nTGlz
dCBjb250ZXh0TWVudShRV2ViUGFnZSopOworCisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWlu
aW11bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdlYlZpZXcKKyAgICBz
dGF0aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChRV2ViUGFnZSosIGRvdWJsZSk7CiB9
OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5n
IG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBB
ZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBu
ZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICog
SW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpkZWZh
dWx0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViVmlldzo6c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0wMi0xNCAgQnJpYW4g
V2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDc4NTIzKQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MTEs
NyArMjYxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICNl
bmRpZgogICAgICAgICBXZWJLaXRTZXRBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVjZXNzYXJ5KCk7
CiAgICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBT
ZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdz
OjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25l
VGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICAgfQpAQCAtNjYyMCwzICs2NjIwLDE3IEBA
IFBhZ2UqIGNvcmUoSVdlYlZpZXcqIGlXZWJWaWV3KQogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CisK
K0hSRVNVTFQgV2ViVmlldzo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSogaW50
ZXJ2YWwpCit7CisgICAgaWYgKCFpbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KyAgICAqaW50ZXJ2YWwgPSBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBXZWJWaWV3OjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRN
aW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKKyAgICByZXR1cm4gU19PSzsKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDEyIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0RGlzcGxheUlzU3luY2hyb25v
dXMoKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWZhdWx0TWlu
aW11bVRpbWVySW50ZXJ2YWwoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZG91YmxlICpp
bnRlcnZhbCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoCisgICAgICAgIC8qIFtpbl0gKi8gZG91YmxlKTsKKwogICAgIC8v
IFdlYlZpZXcKICAgICBib29sIHNob3VsZFVzZUVtYmVkZGVkVmlldyhjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJWaWV3UHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjM5LDQgKzIzOSwyMSBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQcml2YXRlIDogSVVua25vd24K
ICAgICBbbG9jYWxdIEhSRVNVTFQgcmVwb3J0RXhjZXB0aW9uKFtpbl0gSlNDb250ZXh0UmVmIGNv
bnRleHQsIFtpbl0gSlNWYWx1ZVJlZiBleGNlcHRpb24pOwogCiAgICAgW2xvY2FsXSBIUkVTVUxU
IGVsZW1lbnRGcm9tSlMoW2luXSBKU0NvbnRleHRSZWYgY29udGV4dCwgW2luXSBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsIFtvdXQsIHJldHZhbF0gSURPTUVsZW1lbnQqKiBlbGVtZW50KTsKKworCisg
ICAgLyohCisgICAgICAgIEBtZXRob2QgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsCisgICAg
ICAgIEBkaXNjdXNzaW9uIFJldHVybnMgdGhlIGRlZmF1bHQgbWluaW11bSBpbnRlcnZhbCBmb3Ig
RE9NVGltZXJzIG9uIGFsbCBwYWdlcywgbm90CisgICAgICAgIGp1c3QgdGhlIG9uZSBhc3NvY2lh
dGVkIHdpdGggdGhpcyByZWNlaXZlci4KKyAgICAgICAgLSAoZG91YmxlKWludGVydmFsOworICAg
ICovCisgICAgSFJFU1VMVCBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoW291dCwgcmV0dmFs
XSBkb3VibGUqIGludGVydmFsKTsKKworICAgIC8qIQorICAgICAgICBAbWV0aG9kIHNldE1pbmlt
dW1UaW1lckludGVydmFsCisgICAgICAgIEBkaXNjdXNzaW9uIFNldHMgdGhlIG1pbmltdW0gaW50
ZXJ2YWwgZm9yIERPTVRpbWVycyBvbiB0aGUgd2ViIHBhZ2UgYXNzb2NpYXRlZAorICAgICAgICB3
aXRoIHRoZSByZWNlaXZlci4KKyAgICAgICAgLSAoZG91YmxlKWludGVydmFsOworICAgICovCisg
ICAgSFJFU1VMVCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChbaW5dIGRvdWJsZSBpbnRlcnZhbCk7
CiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3ODUyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQxIEBACisyMDExLTAyLTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxv
dyBjb250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFz
aXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEy
CisKKyAgICAgICAgSW1wbGVtZW50ZWQgbmV3IG1ldGhvZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCBpbgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBmb3IgYWxsIHBvcnRzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
c2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVz
ZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0
ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5
b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1
bXBSZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGFnZTo6cmVzZXRTZXR0
aW5ncyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50
ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVy
UXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgor
ICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToK
KwogMjAxMS0wMi0xNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCBidWlsZCBmaXguCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkyNiw2ICsxOTI2LDIwIEBAIHN0YXRpYyBib29sIHNldEdsb2JhbEZsYWdDYWxsYmFjayhKU0Nv
bnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0TWluaW11bVRp
bWVySW50ZXJ2YWxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
aWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CisKKyAgICBkb3VibGUgbWluaW11bSA9IEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsK
KworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5
b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAg
IGNvbnRyb2xsZXItPnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmltdW0pOworCisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgdm9pZCBsYXlv
dXRUZXN0Q29udHJvbGxlck9iamVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRl
c3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwpAQCAtMjA3Myw2ICsy
MDg3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAg
ICB7ICJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkIiwg
c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3Bv
bmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1pbmltdW1UaW1lckludGVydmFs
Iiwgc2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Vmlld1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhWaWV3SGVpZ2h0OwogCisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChk
b3VibGUpOworCiBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250cm9sbGVyKGNvbnN0IHN0ZDo6
c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhlbEhh
c2gpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGwKICAgICBiaW5kTWV0aG9kKCJzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCAmTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbik7CiAgICAgYmluZE1ldGhv
ZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SWNv
bkRhdGFiYXNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCk7CisgICAgYmluZE1ldGhvZCgic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCAm
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKTsKICAgICBiaW5k
TWV0aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwpAQCAtMTU5Mywz
ICsxNTk0LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWEKICAg
ICAgICAgcmV0dXJuOwogICAgIHJlc3VsdC0+c2V0KG1fc2hlbGwtPndlYlZpZXcoKS0+bWFpbkZy
YW1lKCktPnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoYXJndW1lbnRzWzBdLnRv
SW50MzIoKSwgYXJndW1lbnRzWzFdLnRvSW50MzIoKSkpOwogfQorCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVy
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCkt
PnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoYXJndW1lbnRzWzBdLnRvRG91YmxlKCkpOworfQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaGFzU3BlbGxpbmdNYXJrZXIoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgdm9pZCBzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKIHB1
YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2VkIHRvIEph
dmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4pIHsgbV93
b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjI2LDggKzEyMjYsMTEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cmVzZXQoKQogICAgIG1fd2lu
ZG93UmVjdCA9IFdlYlJlY3QoKTsKICAgICBtX3BhaW50UmVjdCA9IFdlYlJlY3QoKTsKIAotICAg
IGlmIChtX3dlYldpZGdldCkKKyAgICBpZiAobV93ZWJXaWRnZXQpIHsKICAgICAgICAgd2ViVmll
dygpLT5tYWluRnJhbWUoKS0+c2V0TmFtZShXZWJTdHJpbmcoKSk7CisgICAgICAgIC8vIEZJWE1F
OiBjaGFuZ2UgdG8gdXNlIHdlYmtpdF9zdXBwb3J0OjpGb3JlZ3JvdW5kVGFiVGltZXJJbnRlcnZh
bCBvbmNlIHRoYXQgbGFuZHMuCisgICAgICAgIHdlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWlu
RE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdIb3N0Ojpz
ZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZW5hYmxlZCkKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gNzg1
MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjgsNiArNDI4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0c1Rv
Q29uc2lzdGVudFZhbAogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChpbnNwZWN0b3IpLCAiamF2
YXNjcmlwdC1wcm9maWxpbmctZW5hYmxlZCIsIEZBTFNFLCBOVUxMKTsKIAogICAgIHdlYmtpdF93
ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCAxLjApOworICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwod2ViVmlldywgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CiAKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwogCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJv
bGxlckd0ay5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgwLDMgKzg4
MCw5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGlmIG5lZWRlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUwNzU4LgogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCit7Cisg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3
KG1haW5GcmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCh3ZWJWaWV3LCBtaW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA3ODUyMykK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTAxNyw2ICsxMDE3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdAogICAgIFtbd2ViVmlldyB1bmRvTWFuYWdlcl0gcmVtb3ZlQWxsQWN0aW9uc107
CiAgICAgW1dlYlZpZXcgX3JlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwOlt3ZWJWaWV3IGdy
b3VwTmFtZV1dOwogICAgIFtbd2ViVmlldyB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAg
ICBbd2ViVmlldyBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6W1dlYlZpZXcgX2RlZmF1bHRNaW5p
bXVtVGltZXJJbnRlcnZhbF1dOwogCiAgICAgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVl
cygpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAw
MywzICsxMDAzLDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSAog
ewogICAgIFtXZWJWaWV3IF9zZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6c2VyaWFsaXplXTsKIH0K
Kwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91
YmxlIG1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9z
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbDptaW5pbXVtVGltZXJJbnRlcnZhbF07Cit9CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNpb24g
Nzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSw4IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRTZXR0
aW5ncygpCiAgICAgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hlKDApOyAvLyBy
ZXNldCB0byBkZWZhdWx0CiAgICAgc2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hlZXRVcmwoUVVy
bCgpKTsgLy8gcmVzZXQgdG8gZGVmYXVsdAogCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OnNldE1pbmltdW1UaW1lckludGVydmFsKHRoaXMsIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpk
ZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CisKICAgICBtX3BlbmRpbmdHZW9sb2NhdGlv
blJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MzYsNSArODM2LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFk
ZFVSTFRvUmVkaXIKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6YWRkVVJMVG9SZWRpcmVj
dChvcmlnaW4sIGRlc3RpbmF0aW9uKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQorewor
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChtX2Ry
dC0+d2ViUGFnZSgpLCBtaW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9CisKIGNvbnN0IHVuc2lnbmVk
IExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3V2lkdGggPSA4MDA7CiBjb25zdCB1bnNpZ25l
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWF4Vmlld0hlaWdodCA9IDYwMDsKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlz
aW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xs
ZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDggQEAgcHVibGljIHNsb3RzOgog
ICAgIFFTdHJpbmcgcGFnZVByb3BlcnR5KGNvbnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwgaW50
IHBhZ2VOdW1iZXIpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgUVN0cmluZyYg
c291cmNlQ29kZSk7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSk7
CisKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBwcm9jZXNzV29yaygpOwogCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDc4NTIz
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODY2LDYgKzg2NiwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0CiAgICAgaWYgKCF3ZWJWaWV3UHJpdmF0ZSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IDA7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJW
aWV3UHJpdmF0ZS0+ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCZtaW5pbXVtSW50ZXJ2YWwp
KSkKKyAgICAgICAgd2ViVmlld1ByaXZhdGUtPnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmlt
dW1JbnRlcnZhbCk7CisKICAgICBDT01QdHI8SVdlYkluc3BlY3Rvcj4gaW5zcGVjdG9yOwogICAg
IGlmIChTVUNDRUVERUQod2ViVmlld1ByaXZhdGUtPmluc3BlY3RvcigmaW5zcGVjdG9yKSkpCiAg
ICAgICAgIGluc3BlY3Rvci0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoRkFMU0UpOwpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRy
b2xsZXJXaW4uY3BwCShyZXZpc2lvbiA3ODUyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzAsMyAr
MTQzMCwxNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVICiB7CiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQorewor
ICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJW
aWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViVmlld1By
aXZhdGU+IHZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKKyAgICBpZiAoIXZpZXdQcml2YXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3UHJpdmF0ZS0+c2V0TWluaW11bVRpbWVySW50
ZXJ2YWwobWluaW11bVRpbWVySW50ZXJ2YWwpOworfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1Mjkp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBA
QAorMjAxMS0wMi0xNCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxp
bmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAg
ICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRl
cnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWw6IEFkZGVkLgorICAgICAgICAgIC0gQ2hhaW5lZCB0
ZXN0cyAodGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcnVuLXdlYmtpdC10ZXN0cworICAgICAg
ICAgICAgaGFybmVzcyB3aWxsIHJ1biB0aGVtIHNlcXVlbnRpYWxseSwgd2hpY2ggaXMgYSByZWFz
b25hYmx5IGdvb2QKKyAgICAgICAgICAgIGFzc3VtcHRpb24pIHdoaWNoIHZlcmlmeSB0aGF0IHRo
ZSBtaW5pbXVtIHRpbWVyIGludGVydmFsIGlzCisgICAgICAgICAgICByZXNldCBiZXR3ZWVuIHRl
c3RzLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgaW5jcmVhc2lu
ZyB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIGZhc3QgdGlt
ZXJzIHRvIHJ1biBzbG93bHkuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhl
bi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgZGVjcmVhc2luZyB0aGUgbWluaW11bSB0
aW1lciBpbnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIHByZXZpb3VzbHkgc2xvd2VkLWRvd24g
dGltZXJzIHRvIGJlIHJlZXZhbHVhdGVkIGltbWVkaWF0ZWx5LgorCiAyMDExLTAyLTExICBKZXJl
bXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5h
dGUgQ2hhcGluLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWlu
LWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQt
cGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0
LTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gbXNnOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gdHdp
Y2UgYSBzZWNvbmQuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50
ZXJ2YWwoMC41KTsKKworICAgIC8vIFBhcnQgMiBvZiB0aGlzIHRlc3QgKHdoaWNoIHdpbGwgbGlr
ZWx5IGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5CisgICAgLy8gYWZ0ZXIgdGhpcyBvbmUgYnkgdGhl
IGhhcm5lc3MpIHZlcmlmaWVzIHRoYXQgdGhlIG1pbmltdW0gdGltZXIKKyAgICAvLyBpbnRlcnZh
bCBpcyByZXNldCBiZXR3ZWVuIHRlc3RzLgorCisgICAgbG9nKCJQQVNTIik7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1h
bmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNy
ZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFs
LWFuZC1yZXNldC1wYXJ0LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5j
dGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBzZXRUaW1lb3V0
KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1lb3V0SGFuZGxl
cigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQgc29tZXdoYXQg
dG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIuY3BwLgorICAg
IGlmIChjb3VudCA+IDEwKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAg
IGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygi
VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8vIFRpbWVy
cyBzaG91bGQgYmUgcnVubmluZyBhdCBmdWxsIHNwZWVkLCBub3QgYXQgdGhlIHRocm90dGxlZAor
ICAgIC8vIHJhdGUgc2V0IGJ5IHBhcnQgMSBvZiB0aGlzIHRlc3QuCisKKyAgICBzZXRUaW1lb3V0
KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhh
bmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1p
bmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50
ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKwor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1t
aW4taW50ZXJ2YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Rp
bWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQu
dGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVy
KCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEp
OworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhl
IGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVy
TmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQgPCAxMCkKKyAgICAg
ICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCBy
YW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUg
TGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRl
biB0aGFuIHR3aWNlIGEgc2Vjb25kLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmlt
dW1UaW1lckludGVydmFsKDAuNSk7CisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxl
ciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3Jl
YXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1l
ci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWlu
dGVydmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1p
bmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cp
IHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAg
IGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZmFzdFRpbWVv
dXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhh
bmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIoKSB7CisgICAgLy8g
Tm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRvIHRoZQorICAgIC8v
IG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBpZiAoY291bnQgPiAx
MCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUwgLS0g
dGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1
aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRpbWVycyBydW4gbm8g
bW9yZSBvZnRlbiB0aGFuIG9uY2UgcGVyIHNlY29uZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgxLjApOworCisgICAgc2V0VGltZW91dChzbG93VGlt
ZW91dEhhbmRsZXIsIDUwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEp
OworCisgICAgLy8gQWxsb3cgdGltZXJzIHRvIHJ1biBxdWlja2x5IGFnYWluLgorICAgIC8vIElm
IHRoaXMgZG9lc24ndCBjYXVzZSB0aW1lcnMgdG8gZ2V0IHJlLWV2YWx1YXRlZCBpbW1lZGlhdGVs
eSwKKyAgICAvLyB0aGUgZmFzdCB0aW1lb3V0IGhhbmRsZXIgd29uJ3QgZ2V0IGNhbGxlZCBmb3Ig
dXAgdG8gYSBzZWNvbmQsCisgICAgLy8gd2hpY2ggd291bGQgbGVhZCB0byBwb29yIHJlc3BvbnNp
dmVuZXNzLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lckludGVydmFs
KDAuMDA0KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82406</attachid>
            <date>2011-02-14 19:13:36 -0800</date>
            <delta_ts>2011-02-15 10:08:20 -0800</delta_ts>
            <desc>Try to make Win bot notice IDL change</desc>
            <filename>bug-54312-20110214191335.patch</filename>
            <type>text/plain</type>
            <size>57472</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICBJZGVhbGx5IGNoYW5naW5n
IHRoZSBwYWdlJ3MgbWluaW11bSB0aW1lciBpbnRlcnZhbCB3b3VsZCBhZmZlY3QKKyAgICAgICAg
ZGVkaWNhdGVkIHdvcmtlcnMsIGJ1dCB0aGlzIGlzIHRvbyBtdWNoIHRvIGRvIGluIGFuIGluaXRp
YWwgcGF0Y2gsCisgICAgICAgIHNvIGEgRklYTUUgaGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAg
VGVzdGVkIHdpdGg6CisgICAgICAgICAgLSBUaGUgbmV3IGxheW91dCB0ZXN0cyBvbiB0aGUgV2Vi
S2l0IE1hYyBhbmQgQ2hyb21pdW0gKE1hYywKKyAgICAgICAgICAgIExpbnV4KSBEUlQgcG9ydHMu
CisgICAgICAgICAgLSBIb29rZWQgdXAgdGhlIG5ldyBBUEkgaW4gQ2hyb21pdW0gYW5kIHJhbiBz
b21lIHNpbXBsZSBtYW51YWwKKyAgICAgICAgICAgIHRlc3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRpbWVy
SW50ZXJ2YWwpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9N
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKToKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZGVmYXVsdE1pblRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnNldERlZmF1bHRNaW5U
aW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptaW5pbXVtVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lckJhc2U6OmF1Z21lbnRSZXBlYXRJbnRlcnZhbCk6CisKIDIwMTEtMDItMTQg
IEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgZWZsIGJ1aWxk
IGZpeApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5Niw2ICs3OTYsNyBA
QCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlsCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MxOHNldE1pbmltdW1Gb250U2l6ZUVpCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldFdlYkF1ZGlvRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxOW1pbkRP
TVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93RGVidWdCb3Jk
ZXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dU
RjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50YXN5Rm9udEZh
bWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBAIC04MjUsNiArODI2LDcgQEAgX19aTjdXZWJD
b3JlOFNldHRpbmdzMjVzZXROZWVkc0xlb3BhcmRNYQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0U2hv
dWxkUHJpbnRCYWNrZ3JvdW5kc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19fWk43V2ViQ29yZThTZXR0aW5nczI2ZGVmYXVs
dE1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXREZWZhdWx0
VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczI2
c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRG
VFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGhFUktOM1dURjZTdHJpbmdFCkBAIC04MzQsNiArODM2LDcg
QEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRTcGF0aWFsTmF2aWdhdAogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjhzZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI5c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNl
dHRpbmdzMjlzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MyOXNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsRWQKIF9fWk43V2ViQ29yZThTZXR0
aW5nczI5c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMzBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMzFzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkRWIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQzLDYgKzIyNDMsMTQgQEAgS1VSTCBEb2N1bWVu
dDo6dmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IAogICAgIHJldHVybiBjb21wbGV0ZVVSTCh1cmwp
OwogfQogCitkb3VibGUgRG9jdW1lbnQ6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sK
KyAgICBQYWdlKiBwID0gcGFnZSgpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6Om1pbmltdW1UaW1lckludGVydmFsKCk7CisgICAgcmV0dXJuIHAt
PnNldHRpbmdzKCktPm1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwogRXZlbnRUYXJnZXQqIERv
Y3VtZW50OjplcnJvckV2ZW50VGFyZ2V0KCkKIHsKICAgICByZXR1cm4gZG9tV2luZG93KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzNSw2ICsxMTM1LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHZpcnR1YWxVUkwoKSBjb25zdDsgLy8gU2Ft
ZSBhcyB1cmwoKSwgYnV0IG5lZWRlZCBmb3IgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0byBpbXBs
ZW1lbnQgaXQgd2l0aG91dCBhIHBlcmZvcm1hbmNlIGxvc3MgZm9yIGRpcmVjdCBjYWxscy4KICAg
ICB2aXJ0dWFsIEtVUkwgdmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OyAv
LyBTYW1lIGFzIGNvbXBsZXRlVVJMKCkgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KIAor
ICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAgICBT
dHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlVGl0bGUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwuaCIKKyNpbmNs
dWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVVSTC5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCkBAIC00MSw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTQwNiw2ICs0MDgsMjYgQEAgRmlsZVRocmVhZCogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKK3ZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1U
aW1lckludGVydmFsKQoreworICAgIGlmIChtaW5pbXVtVGltZXJJbnRlcnZhbCgpICE9IG9sZE1p
bmltdW1UaW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6aXRlcmF0b3Ig
aXRlciA9IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29uZDsKKyAgICAg
ICAgICAgIHRpbWVyLT5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2RvdWJsZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgLy8gVGhlIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgRE9NVGltZXIncyBkZWZhdWx0CisgICAgLy8g
bWluaW11bSB0aW1lciBpbnRlcnZhbC4gRklYTUU6IHRvIG1ha2UgaXQgd29yayB3aXRoIGRlZGlj
YXRlZAorICAgIC8vIHdvcmtlcnMsIHdlIHdpbGwgaGF2ZSB0byBvdmVycmlkZSBpdCBpbiB0aGUg
YXBwcm9wcmlhdGUKKyAgICAvLyBzdWJjbGFzcywgYW5kIHByb3ZpZGUgYSB3YXkgdG8gZW51bWVy
YXRlIGEgRG9jdW1lbnQncyBkZWRpY2F0ZWQKKyAgICAvLyB3b3JrZXJzIHNvIHdlIGNhbiB1cGRh
dGUgdGhlbSBhbGwuCisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbCgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjp+VGFzaygpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJl
dmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc3RvcEZpbGVUaHJlYWQoKTsKICNlbmRpZgogCisgICAgICAgIC8v
IEludGVydmFsIGlzIGluIHNlY29uZHMuCisgICAgICAgIHZvaWQgYWRqdXN0TWluaW11bVRpbWVy
SW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAgICAgdmlydHVh
bCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKKwogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3JpZ2luIGZvciB0
aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5nZXJvdXMgdG8g
Y2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApAQCAtMTc2LDcg
KzE4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHM7CiAgICAgICAgIGJvb2wgbV9pbkRlc3RydWN0b3I7CiAKLSAgICAgICAg
SGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsKKyAgICAgICAgdHlwZWRlZiBIYXNo
TWFwPGludCwgRE9NVGltZXIqPiBUaW1lb3V0TWFwOworICAgICAgICBUaW1lb3V0TWFwIG1fdGlt
ZW91dHM7CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IG1fcHVi
bGljQmxvYlVSTHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gNzg1
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTMgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGlu
dCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiBzdGF0aWMgY29uc3QgZG91YmxlIG9uZU1pbGxp
c2Vjb25kID0gMC4wMDE7Ci1kb3VibGUgRE9NVGltZXI6OnNfbWluVGltZXJJbnRlcnZhbCA9IDAu
MDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKK2RvdWJsZSBET01UaW1lcjo6c19taW5EZWZhdWx0VGlt
ZXJJbnRlcnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKIAogc3RhdGljIGludCB0aW1l
ck5lc3RpbmdMZXZlbCA9IDA7CiAKIERPTVRpbWVyOjpET01UaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQg
dGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogICAgIDogU3VzcGVuZGFibGVUaW1lcihjb250ZXh0
KQogICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV9vcmlnaW5hbFRpbWVvdXQodGltZW91
dCkKIHsKICAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElkID0gMDsKICAgICArK2xhc3RV
c2VkVGltZW91dElkOwpAQCAtNTgsMTAgKzU5LDcgQEAgRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRUaW1l
b3V0KG1fdGltZW91dElkLCB0aGlzKTsKIAotICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25k
cyA9IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKLQotICAg
IGlmIChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IHNfbWluVGltZXJJbnRlcnZhbCAmJiBtX25lc3Rp
bmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgaW50ZXJ2YWxNaWxsaXNl
Y29uZHMgPSBzX21pblRpbWVySW50ZXJ2YWw7CisgICAgZG91YmxlIGludGVydmFsTWlsbGlzZWNv
bmRzID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKHRpbWVvdXQsIGNvbnRleHQtPm1pbmltdW1U
aW1lckludGVydmFsKCkpOwogICAgIGlmIChzaW5nbGVTaG90KQogICAgICAgICBzdGFydE9uZVNo
b3QoaW50ZXJ2YWxNaWxsaXNlY29uZHMpOwogICAgIGVsc2UKQEAgLTEwOCwxMCArMTA2LDExIEBA
IHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZvciBub24tb25l
LXNob3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlmIChyZXBlYXRJ
bnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkgPCBzX21pblRpbWVySW50ZXJ2YWwpIHsKKyAg
ICAgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IGNvbnRleHQtPm1pbmltdW1UaW1lckludGVy
dmFsKCk7CisgICAgICAgIGlmIChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkg
PCBtaW5pbXVtSW50ZXJ2YWwpIHsKICAgICAgICAgICAgIG1fbmVzdGluZ0xldmVsKys7CiAgICAg
ICAgICAgICBpZiAobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCi0gICAg
ICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKHNfbWluVGltZXJJbnRlcnZhbCAtIHJl
cGVhdEludGVydmFsKCkpOworICAgICAgICAgICAgICAgIGF1Z21lbnRSZXBlYXRJbnRlcnZhbCht
aW5pbXVtSW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMgcG9pbnQsIGl0IGNh
biBkZWxldGUgdGhlIHRpbWVyLgpAQCAtMTUwLDQgKzE0OSwyMiBAQCB2b2lkIERPTVRpbWVyOjpz
dG9wKCkKICAgICBtX2FjdGlvbi5jbGVhcigpOwogfQogCit2b2lkIERPTVRpbWVyOjphZGp1c3RN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpCit7Cisg
ICAgaWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisgICAgICAgIHJl
dHVybjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRlcnZhbENsYW1w
ZWRUb01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsK
KyAgICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVt
KG1fb3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPm1pbmltdW1UaW1l
ckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBlZEludGVydmFs
IC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGltZXI6OmludGVy
dmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVy
dmFsKSBjb25zdAoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1heChvbmVN
aWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlmIChpbnRlcnZh
bE1pbGxpc2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGluZ0xldmVsID49
IG1heFRpbWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IG1p
bmltdW1UaW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vjb25kczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNs
YXNzIFNldHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVU
aW1lciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBuZXcgdGltZXIg
b3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0cyBpdApAQCAt
NDYsMTggKzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGNvbnRleHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKIAotICAg
ICAgICAvLyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAw
LjAwMSA9PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lckludGVydmFsKCkg
eyByZXR1cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIHNldE1p
blRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZhbCA9IHZhbHVl
OyB9CisgICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRoaXMgYWxsb3dz
IHRoZSBtaW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5nZWQgaW4gcmVz
cG9uc2UKKyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRvIHRoZSBiYWNr
Z3JvdW5kLgorICAgICAgICB2b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBv
bGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBET01UaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+LCBp
bnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpcmVk
KCk7CiAKKyAgICAgICAgZG91YmxlIGludGVydmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91
dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKSBjb25zdDsKKworICAgICAgICAvLyBUaGUg
ZGVmYXVsdCBtaW5pbXVtIGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNvbmRzLCAwLjAw
MSA9PSAxIG1zKS4KKyAgICAgICAgLy8gVGhlc2UgYXJlIG9ubHkgbW9kaWZpZWQgdmlhIHN0YXRp
YyBtZXRob2RzIGluIFNldHRpbmdzLgorICAgICAgICBzdGF0aWMgZG91YmxlIGRlZmF1bHRNaW5U
aW1lckludGVydmFsKCkgeyByZXR1cm4gc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbDsgfQorICAg
ICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChkb3VibGUgdmFsdWUp
IHsgc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9CisKICAgICAgICAgaW50IG1f
dGltZW91dElkOwogICAgICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CiAgICAgICAgIE93blB0cjxT
Y2hlZHVsZWRBY3Rpb24+IG1fYWN0aW9uOwotICAgICAgICBzdGF0aWMgZG91YmxlIHNfbWluVGlt
ZXJJbnRlcnZhbDsKKyAgICAgICAgaW50IG1fb3JpZ2luYWxUaW1lb3V0OworICAgICAgICBzdGF0
aWMgZG91YmxlIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3ODUyMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsx
NjEsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50CiAgICAgLCBt
X2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCiAgICAgLCBtX2NhblN0YXJ0TWVkaWEo
dHJ1ZSkKICAgICAsIG1fdmlld01vZGUoVmlld01vZGVXaW5kb3dlZCkKKyAgICAsIG1fbWluaW11
bVRpbWVySW50ZXJ2YWwoU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkpCiB7
CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBIYXNoU2V0PFBh
Z2UqPjsKQEAgLTgzMiw2ICs4MzMsMjEgQEAgYm9vbCBQYWdlOjpqYXZhU2NyaXB0VVJMc0FyZUFs
bG93ZWQoKSBjbwogICAgIHJldHVybiBtX2phdmFTY3JpcHRVUkxzQXJlQWxsb3dlZDsKIH0KIAor
dm9pZCBQYWdlOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50
ZXJ2YWwpCit7CisgICAgZG91YmxlIG9sZFRpbWVySW50ZXJ2YWwgPSBtX21pbmltdW1UaW1lcklu
dGVydmFsOworICAgIG1fbWluaW11bVRpbWVySW50ZXJ2YWwgPSBtaW5pbXVtVGltZXJJbnRlcnZh
bDsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKKyAgICAgICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmFkanVz
dE1pbmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOworICAgIH0KK30KKworZG91
YmxlIFBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKK30KKwogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiBTcGVl
Y2hJbnB1dCogUGFnZTo6c3BlZWNoSW5wdXQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlz
aW9uIDc4NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgUGFnZSB7
CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOworICAgICAgICBmcmllbmQgY2xh
c3MgU2V0dGluZ3M7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBzY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKIApAQCAtMjk4LDYgKzI5OSw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAorICAgICAgICB2b2lkIHNldE1pbmltdW1UaW1lcklu
dGVydmFsKGRvdWJsZSk7CisgICAgICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNv
bnN0OworCiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAgICBPd25QdHI8
U2VsZWN0aW9uQ29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBAIC0zODYsNiAr
MzkwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWaWV3TW9kZSBtX3ZpZXdNb2Rl
OwogCiAgICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CisKKyAg
ICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzNCw5ICs0MzQsMjQgQEAgdm9pZCBTZXR0aW5nczo6c2V0RE9NUGFzdGVBbGxvd2VkKGJv
b2wgRAogICAgIG1faXNET01QYXN0ZUFsbG93ZWQgPSBET01QYXN0ZUFsbG93ZWQ7CiB9CiAKK3Zv
aWQgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZh
bCkKK3sKKyAgICBET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwp
OworfQorCitkb3VibGUgU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkKK3sK
KyAgICByZXR1cm4gRE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKCk7Cit9CisKIHZv
aWQgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQogewot
ICAgIERPTVRpbWVyOjpzZXRNaW5UaW1lckludGVydmFsKGludGVydmFsKTsKKyAgICBtX3BhZ2Ut
PnNldE1pbmltdW1UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91YmxlIFNldHRpbmdz
OjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5taW5pbXVtVGlt
ZXJJbnRlcnZhbCgpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VzUGFnZUNhY2hlKGJvb2wg
dXNlc1BhZ2VDYWNoZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDc4NTIz
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDMsOCArMjAzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRET01Q
YXN0ZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgaXNET01QYXN0ZUFsbG93ZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CiAgICAgICAgIAotICAgICAgICBzdGF0
aWMgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVydmFsIHNwZWNp
ZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KKyAg
ICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpOwogICAgICAg
ICAKKyAgICAgICAgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIFBlci1w
YWdlOyBpbml0aWFsaXplZCB0byBkZWZhdWx0IHZhbHVlLgorICAgICAgICBkb3VibGUgbWluRE9N
VGltZXJJbnRlcnZhbCgpOworCiAgICAgICAgIHZvaWQgc2V0VXNlc1BhZ2VDYWNoZShib29sKTsK
ICAgICAgICAgYm9vbCB1c2VzUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91c2VzUGFnZUNh
Y2hlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24gNzg1MjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCgpIGNvbnN0Owog
ICAgIGRvdWJsZSByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0SW50ZXJ2
YWw7IH0KIAotICAgIHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBz
ZXROZXh0RmlyZVRpbWUobV9uZXh0RmlyZVRpbWUgKyBkZWx0YSk7IG1fcmVwZWF0SW50ZXJ2YWwg
Kz0gZGVsdGE7IH0KKyAgICB2b2lkIGF1Z21lbnRGaXJlSW50ZXJ2YWwoZG91YmxlIGRlbHRhKSB7
IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgfQorICAgIHZvaWQgYXVn
bWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBhdWdtZW50RmlyZUludGVydmFsKGRl
bHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCiAgICAgc3RhdGljIHZvaWQgZmly
ZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4
NTI5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNv
bnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6V2ViUGFnZSk6CisKIDIwMTEtMDItMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBXZWJQYWdlOjpXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgbV9wYWdlLT5zZXRHcm91cE5hbWUobV9w
YWdlR3JvdXAtPmlkZW50aWZpZXIoKSk7CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKLSAg
ICBTZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgU2V0dGluZ3M6
OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgIG1fZHJhd2luZ0Fy
ZWEgPSBEcmF3aW5nQXJlYTo6Y3JlYXRlKHRoaXMsIHBhcmFtZXRlcnMpOwogICAgIG1fbWFpbkZy
YW1lID0gV2ViRnJhbWU6OmNyZWF0ZU1haW5GcmFtZSh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDItMTQgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGlt
ZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0
aW5ncy5oOgorICAgICAgICAgIC0gQWRkZWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbC4KKyAgICAg
ICAgKiBzcmMvV2ViS2l0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgICAgLSBBZGRlZCBGSVhNRSB0byByZW1vdmUgc2V0dGluZyBvZiBwYWdlJ3MgZGVmYXVsdCB0
aW1lciBpbnRlcnZhbC4KKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRNaW5ET01UaW1lckludGVydmFsKToKKyAg
ICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgb24gV2ViU2V0dGluZ3MuCisgICAgICAg
ICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDExLTAyLTE0ICBKYXkgU29mZmlhbiAgPGph
eXNvZmZpYW5AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSkgPSAwOwog
CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYktpdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViS2l0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKLSNpbmNsdWRlICJE
T01UaW1lci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCkBAIC03MSw3ICs3MSw5IEBAIHZvaWQgaW5p
dGlhbGl6ZShXZWJLaXRDbGllbnQqIHdlYktpdENsaWUKICAgICAvLyBjb2RlZCB3ZWJzaXRlcyBv
dXQgdGhlcmUgd2hpY2ggZG8gY3JlYXRlIENQVS1zcGlubmluZyBsb29wcy4gIFVzaW5nCiAgICAg
Ly8gNG1zIHByZXZlbnRzIHRoZSBDUFUgZnJvbSBzcGlubmluZyB0b28gYnVzaWx5IGFuZCBwcm92
aWRlcyBhIGJhbGFuY2UKICAgICAvLyBiZXR3ZWVuIENQVSBzcGlubmluZyBhbmQgdGhlIHNtYWxs
ZXN0IHBvc3NpYmxlIGludGVydmFsIHRpbWVyLgotICAgIFdlYkNvcmU6OkRPTVRpbWVyOjpzZXRN
aW5UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgY2FsbCBv
bmNlIENocm9taXVtIGhhcyBiZWVuIGNoYW5nZWQgdG8gc2V0CisgICAgLy8gdGhpcyBmb3IgYWxs
IHBhZ2VzIHVzaW5nIHRoZSBuZXcgV2ViU2V0dGluZ3MgQVBJLgorICAgIFdlYkNvcmU6OlNldHRp
bmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAvLyBUaGVy
ZSBhcmUgc29tZSBjb2RlIHBhdGhzIChmb3IgZXhhbXBsZSwgcnVubmluZyBXZWJLaXQgaW4gdGhl
IGJyb3dzZXIKICAgICAvLyBwcm9jZXNzIGFuZCBjYWxsaW5nIGludG8gTG9jYWxTdG9yYWdlIGJl
Zm9yZSBhbnl0aGluZyBlbHNlKSB3aGVyZSB0aGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDksNCArMzQ5LDkgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEludGVyYWN0aXZl
Rm9ybQogICAgIG1fc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVk
KGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TWluRE9NVGltZXJJbnRl
cnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0TWluRE9NVGltZXJJ
bnRlcnZhbChpbnRlcnZhbCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDc4
NTIzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKIAogcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpTZXR0aW5ncyogbV9zZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4
NTI5KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93
IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNp
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIK
KworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENv
bnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorCiAyMDExLTAyLTE0ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NDIsMyArNjQyLDEyIEBAIGJvb2wgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmaW5k
U3RyaW4KICAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+ZmluZFN0cmluZyhTdHJpbmc6OmZyb21V
VEY4KHRhcmdldFN0cmluZyksIGZpbmRPcHRpb25zKTsKIH0KIAorZG91YmxlIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1
cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgY29yZSh3ZWJWaWV3KS0+c2V0
dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkod29ya2luZyBjb3B5KQpA
QCAtODksNiArODksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY29uZmlybUNvbXBvc2l0
aW9uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiB0ZXh0KTsKICAgICBzdGF0aWMgYm9vbCBm
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShXZWJLaXRXZWJWaWV3KiwgaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoLCBHZGtSZWN0YW5nbGUqKTsKICAgICBzdGF0aWMgYm9vbCBzZWxlY3RlZFJhbmdl
KFdlYktpdFdlYlZpZXcqLCBpbnQqIHN0YXJ0LCBpbnQqIGVuZCk7CisgICAgc3RhdGljIGRvdWJs
ZSBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdl
YlZpZXcKKyAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChXZWJLaXRXZWJW
aWV3KiwgZG91YmxlKTsKIAogICAgIC8vIEdDCiAgICAgc3RhdGljIHZvaWQgZ2NDb2xsZWN0SmF2
YXNjcmlwdE9iamVjdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQor
KysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRy
b2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAg
ICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xs
ZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOnVzZXNEb2N1bWVudFZpZXdzOl0pOgor
ICAgICAgICAoK1tXZWJWaWV3IF9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6XSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAyLTExICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA3ODUyMykKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjk0
LDcgKzY5NCw3IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAg
ICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3JtIHN0cmF0ZWdpZXMuCiAg
ICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBTZXR0
aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdzOjpz
ZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25lVGlt
ZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CkBAIC0yNzM4LDYgKzI3MzgsMTcgQEAgKyAo
dm9pZClfc2V0TG9hZFJlc291cmNlc1NlcmlhbGx5OihCT09MKQogICAgIHJlc291cmNlTG9hZFNj
aGVkdWxlcigpLT5zZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChzZXJpYWxpemUpOwogfQogCisrIChk
b3VibGUpX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAoreworICAgIHJldHVybiBTZXR0aW5n
czo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKworLSAodm9pZClfc2V0TWluaW11
bVRpbWVySW50ZXJ2YWw6KGRvdWJsZSlpbnRlcnZhbEluU2Vjb25kcworeworICAgIGlmIChfcHJp
dmF0ZS0+cGFnZSkKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCktPnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWxJblNlY29uZHMpOworfQorCiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBfV2ViU2FmZUZvcndhcmRlcgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3MSw2ICs1NzEs
MjMgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAvLyBEZXByZWNhdGVkLiBV
c2UgZmluZFN0cmluZy4KIC0gKEJPT0wpc2VhcmNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJl
Y3Rpb246KEJPT0wpZm9yd2FyZCBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJP
T0wpd3JhcEZsYWcgc3RhcnRJblNlbGVjdGlvbjooQk9PTClzdGFydEluU2VsZWN0aW9uOwogCisv
KiEKKyAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAgIEBkaXNjdXNz
aW9uIFNob3VsZCBjb25zaWRlciBtb3ZpbmcgdGhpcyB0byB0aGUgcHVibGljIEFQSS4KKyAgICBA
cmVzdWx0IFJldHVybnMgdGhlIGRlZmF1bHQgbWluaW11bSB0aW1lciBpbnRlcnZhbC4KKyovCisr
IChkb3VibGUpX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbDsKKworLyohCisgICAgQG1ldGhv
ZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbDoKKyAgICBAZGlzY3Vzc2lvbiBTZXRzIHRoZSBtaW5p
bXVtIGludGVydmFsIGZvciBET01UaW1lcnMgaW4gdGhpcyBXZWJWaWV3LiBUaGlzIG1ldGhvZCBp
cworICAgIGV4cG9zZWQgaGVyZSBpbiB0aGUgTWFjIHBvcnQgcmF0aGVyIHRoYW4gdGhyb3VnaCBX
ZWJQcmVmZXJlbmNlcyAod2hpY2ggZ2VuZXJhbGx5CisgICAgZ292ZXJucyBTZXR0aW5ncykgYmVj
YXVzZSB0aGlzIHZhbHVlIGlzIHNvbWV0aGluZyBhZGp1c3RlZCBhdCBydW4gdGltZSwgbm90IHNl
dAorICAgIGdsb2JhbGx5IHZpYSAiZGVmYXVsdHMgd3JpdGUiLiBTaG91bGQgY29uc2lkZXIgYWRk
aW5nIHRoaXMgdG8gdGhlIHB1YmxpYyBBUEkuCisgICAgQHBhcmFtIGludGVydmFsSW5TZWNvbmRz
IFRoZSBuZXcgbWluaW11bSB0aW1lciBpbnRlcnZhbCwgaW4gc2Vjb25kcy4KKyovCistICh2b2lk
KV9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDooZG91YmxlKWludGVydmFsSW5TZWNvbmRzOworCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaW50aW5nUHJpdmF0ZSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTQgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0
byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11
bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIwMTEtMDItMTQgIEFsZXhpcyBNZW5h
cmQgIDxhbGV4aXMubWVuYXJkQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRy
ZWFzIEtsaW5nLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDc4NTIzKQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0Miw2ICs5NDIsMjEgQEAgUVN0cmluZ0xpc3QgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNvbgogICAgIHJldHVybiBRU3RyaW5nTGlzdCgpOwogI2Vu
ZGlmCiB9CisKK2RvdWJsZSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1l
ckludGVydmFsKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmlt
dW1UaW1lckludGVydmFsKFFXZWJQYWdlKiBwYWdlLCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAg
UGFnZSogY29yZVBhZ2UgPSBRV2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSk7CisgICAgaWYgKCFj
b3JlUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29yZVBhZ2UtPnNldHRpbmdzKCktPnNl
dE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworfQorCiAvLyBQcm92aWRlIGEgYmFja3dh
cmQgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzbHkgZXhwb3J0ZWQgcHJpdmF0ZSBzeW1ib2xz
IGFzIG9mIFF0V2ViS2l0IDQuNiByZWxlYXNlCiAKIHZvaWQgUVdFQktJVF9FWFBPUlQgcXRfcmVz
dW1lQWN0aXZlRE9NT2JqZWN0cyhRV2ViRnJhbWUqIGZyYW1lKQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaAkocmV2aXNpb24gNzg1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODks
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFFTdHJpbmcgcmVzcG9uc2VNaW1lVHlwZShRV2ViRnJh
bWUqKTsKICAgICBzdGF0aWMgdm9pZCBhZGRVUkxUb1JlZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24pOwogICAgIHN0YXRpYyBRU3RyaW5nTGlz
dCBjb250ZXh0TWVudShRV2ViUGFnZSopOworCisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWlu
aW11bVRpbWVySW50ZXJ2YWwoKTsgLy8gTm90IHJlYWxseSB0aWVkIHRvIFdlYlZpZXcKKyAgICBz
dGF0aWMgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChRV2ViUGFnZSosIGRvdWJsZSk7CiB9
OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTI5KQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5n
IG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBB
ZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBsZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBu
ZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICog
SW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIChXZWJWaWV3OjpkZWZh
dWx0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViVmlldzo6c2V0TWluaW11bVRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0wMi0xNCAgQnJpYW4g
V2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QnJhZHkgRWlkc29uLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDc4NTIzKQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MTEs
NyArMjYxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6aW5pdFcKICNl
bmRpZgogICAgICAgICBXZWJLaXRTZXRBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVjZXNzYXJ5KCk7
CiAgICAgICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwotICAgICAgICBT
ZXR0aW5nczo6c2V0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgICAgIFNldHRpbmdz
OjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICAgICAgZGlkT25l
VGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICAgfQpAQCAtNjYyMCwzICs2NjIwLDE3IEBA
IFBhZ2UqIGNvcmUoSVdlYlZpZXcqIGlXZWJWaWV3KQogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CisK
K0hSRVNVTFQgV2ViVmlldzo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSogaW50
ZXJ2YWwpCit7CisgICAgaWYgKCFpbnRlcnZhbCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsK
KyAgICAqaW50ZXJ2YWwgPSBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBXZWJWaWV3OjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbChkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgcGFnZSgpLT5zZXR0aW5ncygpLT5zZXRN
aW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKKyAgICByZXR1cm4gU19PSzsKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDc4NTIzKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04MTMsNiArODEzLDEyIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0RGlzcGxheUlzU3luY2hyb25v
dXMoKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWZhdWx0TWlu
aW11bVRpbWVySW50ZXJ2YWwoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gZG91YmxlICpp
bnRlcnZhbCk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoCisgICAgICAgIC8qIFtpbl0gKi8gZG91YmxlKTsKKwogICAgIC8v
IFdlYlZpZXcKICAgICBib29sIHNob3VsZFVzZUVtYmVkZGVkVmlldyhjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJWaWV3UHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCShyZXZpc2lvbiA3ODUyMykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjM5LDQgKzIzOSwyMSBAQCBpbnRlcmZhY2UgSVdlYlZpZXdQcml2YXRlIDogSVVua25vd24K
ICAgICBbbG9jYWxdIEhSRVNVTFQgcmVwb3J0RXhjZXB0aW9uKFtpbl0gSlNDb250ZXh0UmVmIGNv
bnRleHQsIFtpbl0gSlNWYWx1ZVJlZiBleGNlcHRpb24pOwogCiAgICAgW2xvY2FsXSBIUkVTVUxU
IGVsZW1lbnRGcm9tSlMoW2luXSBKU0NvbnRleHRSZWYgY29udGV4dCwgW2luXSBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsIFtvdXQsIHJldHZhbF0gSURPTUVsZW1lbnQqKiBlbGVtZW50KTsKKworCisg
ICAgLyohCisgICAgICAgIEBtZXRob2QgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsCisgICAg
ICAgIEBkaXNjdXNzaW9uIFJldHVybnMgdGhlIGRlZmF1bHQgbWluaW11bSBpbnRlcnZhbCBmb3Ig
RE9NVGltZXJzIG9uIGFsbCBwYWdlcywgbm90CisgICAgICAgIGp1c3QgdGhlIG9uZSBhc3NvY2lh
dGVkIHdpdGggdGhpcyByZWNlaXZlci4KKyAgICAgICAgLSAoZG91YmxlKWludGVydmFsOworICAg
ICovCisgICAgSFJFU1VMVCBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoW291dCwgcmV0dmFs
XSBkb3VibGUqIGludGVydmFsKTsKKworICAgIC8qIQorICAgICAgICBAbWV0aG9kIHNldE1pbmlt
dW1UaW1lckludGVydmFsCisgICAgICAgIEBkaXNjdXNzaW9uIFNldHMgdGhlIG1pbmltdW0gaW50
ZXJ2YWwgZm9yIERPTVRpbWVycyBvbiB0aGUgd2ViIHBhZ2UgYXNzb2NpYXRlZAorICAgICAgICB3
aXRoIHRoZSByZWNlaXZlci4KKyAgICAgICAgLSAoZG91YmxlKWludGVydmFsOworICAgICovCisg
ICAgSFJFU1VMVCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChbaW5dIGRvdWJsZSBpbnRlcnZhbCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCShyZXZpc2lv
biA3ODUyMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMzAxLDMgKzMwMSw0IEBAIGxpYnJhcnkgV2ViS2l0CiAgICAgICAgIFtk
ZWZhdWx0XSBpbnRlcmZhY2UgSVdlYlVzZXJDb250ZW50VVJMUGF0dGVybjsKICAgICB9CiB9CisK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc4NTI5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTEtMDItMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGNv
bnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKwor
ICAgICAgICBJbXBsZW1lbnRlZCBuZXcgbWV0aG9kIHNldE1pbmltdW1UaW1lckludGVydmFsIGlu
CisgICAgICAgIExheW91dFRlc3RDb250cm9sbGVyIGZvciBhbGwgcG9ydHMuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzZXQpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChyZXNldERl
ZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsv
TGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRT
dGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJl
bmRlclRyZWVRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJQYWdlOjpyZXNldFNldHRpbmdz
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5o
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAg
ICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorCiAy
MDExLTAyLTE0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIGJ1aWxkIGZpeC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI2
LDYgKzE5MjYsMjAgQEAgc3RhdGljIGJvb2wgc2V0R2xvYmFsRmxhZ0NhbGxiYWNrKEpTQ29udAog
ICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAo
YXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKKworICAgIGRvdWJsZSBtaW5pbXVtID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29u
dHJvbGxlci0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobWluaW11bSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyB2b2lkIGxheW91dFRl
c3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSk7CkBAIC0yMDczLDYgKzIwODcs
NyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsg
InNldEljb25EYXRhYmFzZUVuYWJsZWQiLCBzZXRJY29uRGF0YWJhc2VFbmFibGVkQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQiLCBzZXRK
YXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVy
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCBz
ZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1v
Y2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heFZpZXdIZWlnaHQ7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJs
ZSk7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIoY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBleHBlY3RlZFBpeGVsSGFzaCk7
CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDcsNiArMTQ3LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bAogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lvbiIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRJY29uRGF0
YWJhc2VFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAgIGJpbmRNZXRo
b2QoInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0RldmljZU9yaWVudGF0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRp
b25FcnJvciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Ip
OwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik7CkBAIC0xNTkzLDMgKzE1
OTQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aGFzU3BlbGxpbmdNYQogICAgICAg
ICByZXR1cm47CiAgICAgcmVzdWx0LT5zZXQobV9zaGVsbC0+d2ViVmlldygpLT5tYWluRnJhbWUo
KS0+c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZvcihhcmd1bWVudHNbMF0udG9JbnQz
MigpLCBhcmd1bWVudHNbMV0udG9JbnQzMigpKSk7CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cisg
ICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fc2hlbGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0
TWluRE9NVGltZXJJbnRlcnZhbChhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7Cit9CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYgKzMzNSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBoYXNTcGVsbGluZ01hcmtlcihjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1l
ckludGVydmFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKwogcHVibGlj
OgogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNj
cmlwdC4KICAgICB2b2lkIHNldFdvcmtRdWV1ZUZyb3plbihib29sIGZyb3plbikgeyBtX3dvcmtR
dWV1ZS5zZXRGcm96ZW4oZnJvemVuKTsgfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MjYsOCArMTIyNiwxMSBAQCB2b2lkIFdlYlZpZXdIb3N0OjpyZXNldCgpCiAgICAgbV93aW5kb3dS
ZWN0ID0gV2ViUmVjdCgpOwogICAgIG1fcGFpbnRSZWN0ID0gV2ViUmVjdCgpOwogCi0gICAgaWYg
KG1fd2ViV2lkZ2V0KQorICAgIGlmIChtX3dlYldpZGdldCkgewogICAgICAgICB3ZWJWaWV3KCkt
Pm1haW5GcmFtZSgpLT5zZXROYW1lKFdlYlN0cmluZygpKTsKKyAgICAgICAgLy8gRklYTUU6IGNo
YW5nZSB0byB1c2Ugd2Via2l0X3N1cHBvcnQ6OkZvcmVncm91bmRUYWJUaW1lckludGVydmFsIG9u
Y2UgdGhhdCBsYW5kcy4KKyAgICAgICAgd2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01U
aW1lckludGVydmFsKDAuMDA0KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViVmlld0hvc3Q6OnNldFNl
bGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoYm9vbCBlbmFibGVkKQpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA3ODUyMykK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyOCw2ICs0MjgsNyBAQCBzdGF0aWMgdm9pZCByZXNldERlZmF1bHRzVG9Db25z
aXN0ZW50VmFsCiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKGluc3BlY3RvciksICJqYXZhc2Ny
aXB0LXByb2ZpbGluZy1lbmFibGVkIiwgRkFMU0UsIE5VTEwpOwogCiAgICAgd2Via2l0X3dlYl92
aWV3X3NldF96b29tX2xldmVsKHdlYlZpZXcsIDEuMCk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh3ZWJWaWV3LCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpKTsKIAogICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKCk7CiAKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAkocmV2aXNpb24gNzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5
b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODAsMyArODgwLDkg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXplSAogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgaWYgbmVlZGVkIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTA3NTguCiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1p
bmltdW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFp
bkZyYW1lKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lcklu
dGVydmFsKHdlYlZpZXcsIG1pbmltdW1UaW1lckludGVydmFsKTsKK30KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDc4NTIzKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDE3LDYgKzEwMTcsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3Rl
bnRTdGF0CiAgICAgW1t3ZWJWaWV3IHVuZG9NYW5hZ2VyXSByZW1vdmVBbGxBY3Rpb25zXTsKICAg
ICBbV2ViVmlldyBfcmVtb3ZlQWxsVXNlckNvbnRlbnRGcm9tR3JvdXA6W3dlYlZpZXcgZ3JvdXBO
YW1lXV07CiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgIFt3
ZWJWaWV3IF9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDpbV2ViVmlldyBfZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsXV07CiAKICAgICByZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCk7
CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDMg
KzEwMDMsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVICiB7CiAg
ICAgW1dlYlZpZXcgX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTpzZXJpYWxpemVdOwogfQorCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUg
bWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldE1p
bmltdW1UaW1lckludGVydmFsOm1pbmltdW1UaW1lckludGVydmFsXTsKK30KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCShyZXZpc2lvbiA3ODUy
MykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDggQEAgdm9pZCBXZWJQYWdlOjpyZXNldFNldHRpbmdz
KCkKICAgICBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUoMCk7IC8vIHJlc2V0
IHRvIGRlZmF1bHQKICAgICBzZXR0aW5ncygpLT5zZXRVc2VyU3R5bGVTaGVldFVybChRVXJsKCkp
OyAvLyByZXNldCB0byBkZWZhdWx0CiAKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
TWluaW11bVRpbWVySW50ZXJ2YWwodGhpcywgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRlZmF1
bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpKTsKKwogICAgIG1fcGVuZGluZ0dlb2xvY2F0aW9uUmVx
dWVzdHMuY2xlYXIoKTsKIH0KIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzNiw1ICs4MzYsMTAgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YWRkVVJM
VG9SZWRpcgogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjphZGRVUkxUb1JlZGlyZWN0KG9y
aWdpbiwgZGVzdGluYXRpb24pOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmltdW1UaW1lckludGVydmFsKG1fZHJ0LT53
ZWJQYWdlKCksIG1pbmltdW1UaW1lckludGVydmFsKTsKK30KKwogY29uc3QgdW5zaWduZWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0aCA9IDgwMDsKIGNvbnN0IHVuc2lnbmVkIExh
eW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3SGVpZ2h0ID0gNjAwOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24g
Nzg1MjMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw2ICsyNTIsOCBAQCBwdWJsaWMgc2xvdHM6CiAgICAg
UVN0cmluZyBwYWdlUHJvcGVydHkoY29uc3QgUVN0cmluZyYgcHJvcGVydHlOYW1lLCBpbnQgcGFn
ZU51bWJlcik7CiAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldChjb25zdCBRU3RyaW5nJiBzb3Vy
Y2VDb2RlKTsKIAorICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKKwog
cHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHByb2Nlc3NXb3JrKCk7CiAKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gNzg1MjMpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NjYsNiArODY2LDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lz
dGVudFN0YXQKICAgICBpZiAoIXdlYlZpZXdQcml2YXRlKQogICAgICAgICByZXR1cm47CiAKKyAg
ICBkb3VibGUgbWluaW11bUludGVydmFsID0gMDsKKyAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXdQ
cml2YXRlLT5kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoJm1pbmltdW1JbnRlcnZhbCkpKQor
ICAgICAgICB3ZWJWaWV3UHJpdmF0ZS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobWluaW11bUlu
dGVydmFsKTsKKwogICAgIENPTVB0cjxJV2ViSW5zcGVjdG9yPiBpbnNwZWN0b3I7CiAgICAgaWYg
KFNVQ0NFRURFRCh3ZWJWaWV3UHJpdmF0ZS0+aW5zcGVjdG9yKCZpbnNwZWN0b3IpKSkKICAgICAg
ICAgaW5zcGVjdG9yLT5zZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZChGQUxTRSk7CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAJKHJldmlzaW9uIDc4NTIzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMCwzICsxNDMw
LDE2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50LgogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCit7CisgICAg
Q09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXco
JndlYlZpZXcpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJWaWV3UHJpdmF0
ZT4gdmlld1ByaXZhdGUoUXVlcnksIHdlYlZpZXcpOworICAgIGlmICghdmlld1ByaXZhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIHZpZXdQcml2YXRlLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZh
bChtaW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODUyOSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisy
MDExLTAyLTE0ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBt
aW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgKiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFs
LWFuZC1yZXNldC1wYXJ0LTIuaHRtbDogQWRkZWQuCisgICAgICAgICAgLSBDaGFpbmVkIHRlc3Rz
ICh0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IHRoZSBydW4td2Via2l0LXRlc3RzCisgICAgICAgICAg
ICBoYXJuZXNzIHdpbGwgcnVuIHRoZW0gc2VxdWVudGlhbGx5LCB3aGljaCBpcyBhIHJlYXNvbmFi
bHkgZ29vZAorICAgICAgICAgICAgYXNzdW1wdGlvbikgd2hpY2ggdmVyaWZ5IHRoYXQgdGhlIG1p
bmltdW0gdGltZXIgaW50ZXJ2YWwgaXMKKyAgICAgICAgICAgIHJlc2V0IGJldHdlZW4gdGVzdHMu
CisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVy
dmFsLmh0bWw6IEFkZGVkLgorICAgICAgICAgIC0gVmVyaWZpZXMgdGhhdCBpbmNyZWFzaW5nIHRo
ZSBtaW5pbXVtIHRpbWVyIGludGVydmFsIGNhdXNlcworICAgICAgICAgICAgZmFzdCB0aW1lcnMg
dG8gcnVuIHNsb3dseS4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRl
Y3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0bWw6IEFkZGVk
LgorICAgICAgICAgIC0gVmVyaWZpZXMgdGhhdCBkZWNyZWFzaW5nIHRoZSBtaW5pbXVtIHRpbWVy
IGludGVydmFsIGNhdXNlcworICAgICAgICAgICAgcHJldmlvdXNseSBzbG93ZWQtZG93biB0aW1l
cnMgdG8gYmUgcmVldmFsdWF0ZWQgaW1tZWRpYXRlbHkuCisKIDIwMTEtMDItMTEgIEplcmVteSBP
cmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmF0ZSBD
aGFwaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50
ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0
LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGlt
ZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAg
IGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgLy8gTWFrZSB0aW1lcnMgcnVuIG5vIG1vcmUgb2Z0ZW4gdGhhbiB0d2ljZSBh
IHNlY29uZC4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCgwLjUpOworCisgICAgLy8gUGFydCAyIG9mIHRoaXMgdGVzdCAod2hpY2ggd2lsbCBsaWtlbHkg
YmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKKyAgICAvLyBhZnRlciB0aGlzIG9uZSBieSB0aGUgaGFy
bmVzcykgdmVyaWZpZXMgdGhhdCB0aGUgbWluaW11bSB0aW1lcgorICAgIC8vIGludGVydmFsIGlz
IHJlc2V0IGJldHdlZW4gdGVzdHMuCisKKyAgICBsb2coIlBBU1MiKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1y
ZXNldC1wYXJ0LTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGlt
ZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
dGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKwordmFyIGNvdW50ID0gMDsKK2Z1bmN0aW9u
IGZhc3RUaW1lb3V0SGFuZGxlcigpIHsKKyAgICArK2NvdW50OworICAgIHNldFRpbWVvdXQoZmFz
dFRpbWVvdXRIYW5kbGVyLCAxKTsKK30KKworZnVuY3Rpb24gc2xvd1RpbWVvdXRIYW5kbGVyKCkg
eworICAgIC8vIE5vdGU6IHRoZSBjb3VudCB0aHJlc2hvbGQgaXMgdGllZCBzb21ld2hhdCB0byB0
aGUKKyAgICAvLyBtYXhUaW1lck5lc3RpbmdMZXZlbCBpbiBET01UaW1lci5jcHAuCisgICAgaWYg
KGNvdW50ID4gMTApCisgICAgICAgIGxvZygiUEFTUyIpOworICAgIGVsc2UKKyAgICAgICAgbG9n
KCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBjb3VudCArICIgdGltZXMiKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbG9nKCJUaGlz
IHRlc3QgcmVxdWlyZXMgdGhlIExheW91dFRlc3RDb250cm9sbGVyIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgLy8gVGltZXJzIHNo
b3VsZCBiZSBydW5uaW5nIGF0IGZ1bGwgc3BlZWQsIG5vdCBhdCB0aGUgdGhyb3R0bGVkCisgICAg
Ly8gcmF0ZSBzZXQgYnkgcGFydCAxIG9mIHRoaXMgdGVzdC4KKworICAgIHNldFRpbWVvdXQoc2xv
d1RpbWVvdXRIYW5kbGVyLCAxMDAwKTsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxl
ciwgMSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3Jl
YXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZh
bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0
Q29udGVudCA9IG1zZzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KSk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7
CisgICAgKytjb3VudDsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9
CisKK2Z1bmN0aW9uIHNsb3dUaW1lb3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291
bnQgdGhyZXNob2xkIGlzIHRpZWQgc29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0
aW5nTGV2ZWwgaW4gRE9NVGltZXIuY3BwLgorICAgIGlmIChjb3VudCA8IDEwKQorICAgICAgICBs
b2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAi
ICsgY291bnQgKyAiIHRpbWVzIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlv
dXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKKworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRo
YW4gdHdpY2UgYSBzZWNvbmQuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRp
bWVySW50ZXJ2YWwoMC41KTsKKworICAgIHNldFRpbWVvdXQoc2xvd1RpbWVvdXRIYW5kbGVyLCAx
MDAwKTsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2Ut
bWluLWludGVydmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10
aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2
YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3Jl
YXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgewor
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxl
bWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhh
bmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxl
ciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1lb3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3Rl
OiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQgc29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4
VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIuY3BwLgorICAgIGlmIChjb3VudCA+IDEwKQor
ICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1l
b3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3Jl
IG9mdGVuIHRoYW4gb25jZSBwZXIgc2Vjb25kLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dE1pbmltdW1UaW1lckludGVydmFsKDEuMCk7CisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0
SGFuZGxlciwgNTAwKTsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7CisK
KyAgICAvLyBBbGxvdyB0aW1lcnMgdG8gcnVuIHF1aWNrbHkgYWdhaW4uCisgICAgLy8gSWYgdGhp
cyBkb2Vzbid0IGNhdXNlIHRpbWVycyB0byBnZXQgcmUtZXZhbHVhdGVkIGltbWVkaWF0ZWx5LAor
ICAgIC8vIHRoZSBmYXN0IHRpbWVvdXQgaGFuZGxlciB3b24ndCBnZXQgY2FsbGVkIGZvciB1cCB0
byBhIHNlY29uZCwKKyAgICAvLyB3aGljaCB3b3VsZCBsZWFkIHRvIHBvb3IgcmVzcG9uc2l2ZW5l
c3MuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC4w
MDQpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82481</attachid>
            <date>2011-02-15 10:08:24 -0800</date>
            <delta_ts>2011-02-15 14:38:01 -0800</delta_ts>
            <desc>GTK build fix</desc>
            <filename>bug-54312-20110215100823.patch</filename>
            <type>text/plain</type>
            <size>57898</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTEtMDItMTUgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICBJZGVhbGx5IGNoYW5naW5n
IHRoZSBwYWdlJ3MgbWluaW11bSB0aW1lciBpbnRlcnZhbCB3b3VsZCBhZmZlY3QKKyAgICAgICAg
ZGVkaWNhdGVkIHdvcmtlcnMsIGJ1dCB0aGlzIGlzIHRvbyBtdWNoIHRvIGRvIGluIGFuIGluaXRp
YWwgcGF0Y2gsCisgICAgICAgIHNvIGEgRklYTUUgaGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAg
VGVzdGVkIHdpdGg6CisgICAgICAgICAgLSBUaGUgbmV3IGxheW91dCB0ZXN0cyBvbiB0aGUgV2Vi
S2l0IE1hYyBhbmQgQ2hyb21pdW0gKE1hYywKKyAgICAgICAgICAgIExpbnV4KSBEUlQgcG9ydHMu
CisgICAgICAgICAgLSBIb29rZWQgdXAgdGhlIG5ldyBBUEkgaW4gQ2hyb21pdW0gYW5kIHJhbiBz
b21lIHNpbXBsZSBtYW51YWwKKyAgICAgICAgICAgIHRlc3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRpbWVy
SW50ZXJ2YWwpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9N
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKToKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZGVmYXVsdE1pblRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnNldERlZmF1bHRNaW5U
aW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptaW5pbXVtVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lckJhc2U6OmF1Z21lbnRSZXBlYXRJbnRlcnZhbCk6CisKIDIwMTEtMDItMTUg
IEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc4NTc4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc5Niw2
ICs3OTYsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlsCiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MxOHNldE1pbmltdW1Gb250U2l6ZUVpCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MxOHNldFdlYkF1ZGlvRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxOW1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTlzZXRTaG93
RGVidWdCb3JkZXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1p
bHlFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRGYW50
YXN5Rm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkBAIC04MjUsNiArODI2LDcgQEAg
X19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXROZWVkc0xlb3BhcmRNYQogX19aTjdXZWJDb3JlOFNl
dHRpbmdzMjVzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5n
czI1c2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19fWk43V2ViQ29yZThTZXR0aW5n
czI2ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZz
ZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI2c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMjdzZXRGVFBEaXJlY3RvcnlUZW1wbGF0ZVBhdGhFUktOM1dURjZTdHJpbmdFCkBAIC04MzQs
NiArODM2LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRTcGF0aWFsTmF2aWdhdAogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjhzZXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI5c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMjlzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZEViCitfX1pON1dl
YkNvcmU4U2V0dGluZ3MyOXNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsRWQKIF9fWk43V2Vi
Q29yZThTZXR0aW5nczI5c2V0V2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWRFYgogX19aTjdXZWJD
b3JlOFNldHRpbmdzMzBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNFYgogX19aTjdXZWJD
b3JlOFNldHRpbmdzMzFzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkRWIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNzg1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQzLDYgKzIyNDMsMTQgQEAgS1VS
TCBEb2N1bWVudDo6dmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IAogICAgIHJldHVybiBjb21wbGV0
ZVVSTCh1cmwpOwogfQogCitkb3VibGUgRG9jdW1lbnQ6Om1pbmltdW1UaW1lckludGVydmFsKCkg
Y29uc3QKK3sKKyAgICBQYWdlKiBwID0gcGFnZSgpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0
dXJuIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6Om1pbmltdW1UaW1lckludGVydmFsKCk7CisgICAg
cmV0dXJuIHAtPnNldHRpbmdzKCktPm1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwogRXZlbnRU
YXJnZXQqIERvY3VtZW50OjplcnJvckV2ZW50VGFyZ2V0KCkKIHsKICAgICByZXR1cm4gZG9tV2lu
ZG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNzg1NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzNSw2ICsxMTM1
LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHZpcnR1YWxVUkwoKSBjb25z
dDsgLy8gU2FtZSBhcyB1cmwoKSwgYnV0IG5lZWRlZCBmb3IgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB0byBpbXBsZW1lbnQgaXQgd2l0aG91dCBhIHBlcmZvcm1hbmNlIGxvc3MgZm9yIGRpcmVjdCBj
YWxscy4KICAgICB2aXJ0dWFsIEtVUkwgdmlydHVhbENvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYp
IGNvbnN0OyAvLyBTYW1lIGFzIGNvbXBsZXRlVVJMKCkgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBh
Ym92ZS4KIAorICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7
CisKICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlVGl0bGUo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAJKHJldmlzaW9uIDc4NTc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwu
aCIKKyNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVVSTC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCkBAIC00MSw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQu
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTQwNiw2ICs0MDgsMjYgQEAgRmlsZVRo
cmVhZCogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZmlsZQogfQogI2VuZGlmCiAKK3ZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9s
ZE1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIGlmIChtaW5pbXVtVGltZXJJbnRlcnZhbCgp
ICE9IG9sZE1pbmltdW1UaW1lckludGVydmFsKSB7CisgICAgICAgIGZvciAoVGltZW91dE1hcDo6
aXRlcmF0b3IgaXRlciA9IG1fdGltZW91dHMuYmVnaW4oKTsgaXRlciAhPSBtX3RpbWVvdXRzLmVu
ZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIERPTVRpbWVyKiB0aW1lciA9IGl0ZXItPnNlY29u
ZDsKKyAgICAgICAgICAgIHRpbWVyLT5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRNaW5p
bXVtVGltZXJJbnRlcnZhbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2RvdWJsZSBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Cit7CisgICAgLy8g
VGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgRE9NVGltZXIncyBkZWZhdWx0
CisgICAgLy8gbWluaW11bSB0aW1lciBpbnRlcnZhbC4gRklYTUU6IHRvIG1ha2UgaXQgd29yayB3
aXRoIGRlZGljYXRlZAorICAgIC8vIHdvcmtlcnMsIHdlIHdpbGwgaGF2ZSB0byBvdmVycmlkZSBp
dCBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICAvLyBzdWJjbGFzcywgYW5kIHByb3ZpZGUgYSB3YXkg
dG8gZW51bWVyYXRlIGEgRG9jdW1lbnQncyBkZWRpY2F0ZWQKKyAgICAvLyB3b3JrZXJzIHNvIHdl
IGNhbiB1cGRhdGUgdGhlbSBhbGwuCisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbCgpOworfQorCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjp+VGFz
aygpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgJKHJldmlzaW9uIDc4NTc4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1MiwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RvcEZpbGVUaHJlYWQoKTsKICNlbmRpZgogCisg
ICAgICAgIC8vIEludGVydmFsIGlzIGluIHNlY29uZHMuCisgICAgICAgIHZvaWQgYWRqdXN0TWlu
aW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lckludGVydmFsKTsKKyAgICAg
ICAgdmlydHVhbCBkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKKwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgLy8gRXhwbGljaXRseSBvdmVycmlkZSB0aGUgc2VjdXJpdHkgb3Jp
Z2luIGZvciB0aGlzIHNjcmlwdCBjb250ZXh0LgogICAgICAgICAvLyBOb3RlOiBJdCBpcyBkYW5n
ZXJvdXMgdG8gY2hhbmdlIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgYSBzY3JpcHQgY29udGV4dApA
QCAtMTc2LDcgKzE4MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2l0
ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHM7CiAgICAgICAgIGJvb2wgbV9pbkRlc3RydWN0b3I7CiAK
LSAgICAgICAgSGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gbV90aW1lb3V0czsKKyAgICAgICAgdHlw
ZWRlZiBIYXNoTWFwPGludCwgRE9NVGltZXIqPiBUaW1lb3V0TWFwOworICAgICAgICBUaW1lb3V0
TWFwIG1fdGltZW91dHM7CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICAgICAgSGFzaFNldDxTdHJp
bmc+IG1fcHVibGljQmxvYlVSTHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkocmV2
aXNpb24gNzg1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksMTMgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGludCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiBzdGF0aWMgY29uc3QgZG91Ymxl
IG9uZU1pbGxpc2Vjb25kID0gMC4wMDE7Ci1kb3VibGUgRE9NVGltZXI6OnNfbWluVGltZXJJbnRl
cnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKK2RvdWJsZSBET01UaW1lcjo6c19taW5E
ZWZhdWx0VGltZXJJbnRlcnZhbCA9IDAuMDEwOyAvLyAxMCBtaWxsaXNlY29uZHMKIAogc3RhdGlj
IGludCB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiAKIERPTVRpbWVyOjpET01UaW1lcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0
aW9uLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQogICAgIDogU3VzcGVuZGFibGVUaW1l
cihjb250ZXh0KQogICAgICwgbV9hY3Rpb24oYWN0aW9uKQorICAgICwgbV9vcmlnaW5hbFRpbWVv
dXQodGltZW91dCkKIHsKICAgICBzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElkID0gMDsKICAg
ICArK2xhc3RVc2VkVGltZW91dElkOwpAQCAtNTgsMTAgKzU5LDcgQEAgRE9NVGltZXI6OkRPTVRp
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogCiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5hZGRUaW1lb3V0KG1fdGltZW91dElkLCB0aGlzKTsKIAotICAgIGRvdWJsZSBpbnRlcnZhbE1p
bGxpc2Vjb25kcyA9IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25k
KTsKLQotICAgIGlmIChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IHNfbWluVGltZXJJbnRlcnZhbCAm
JiBtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKLSAgICAgICAgaW50ZXJ2
YWxNaWxsaXNlY29uZHMgPSBzX21pblRpbWVySW50ZXJ2YWw7CisgICAgZG91YmxlIGludGVydmFs
TWlsbGlzZWNvbmRzID0gaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKHRpbWVvdXQsIGNvbnRleHQt
Pm1pbmltdW1UaW1lckludGVydmFsKCkpOwogICAgIGlmIChzaW5nbGVTaG90KQogICAgICAgICBz
dGFydE9uZVNob3QoaW50ZXJ2YWxNaWxsaXNlY29uZHMpOwogICAgIGVsc2UKQEAgLTEwOCwxMCAr
MTA2LDExIEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZv
ciBub24tb25lLXNob3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGlm
IChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdEludGVydmFsKCkgPCBzX21pblRpbWVySW50ZXJ2
YWwpIHsKKyAgICAgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IGNvbnRleHQtPm1pbmltdW1U
aW1lckludGVydmFsKCk7CisgICAgICAgIGlmIChyZXBlYXRJbnRlcnZhbCgpICYmIHJlcGVhdElu
dGVydmFsKCkgPCBtaW5pbXVtSW50ZXJ2YWwpIHsKICAgICAgICAgICAgIG1fbmVzdGluZ0xldmVs
Kys7CiAgICAgICAgICAgICBpZiAobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2
ZWwpCi0gICAgICAgICAgICAgICAgYXVnbWVudFJlcGVhdEludGVydmFsKHNfbWluVGltZXJJbnRl
cnZhbCAtIHJlcGVhdEludGVydmFsKCkpOworICAgICAgICAgICAgICAgIGF1Z21lbnRSZXBlYXRJ
bnRlcnZhbChtaW5pbXVtSW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMgcG9p
bnQsIGl0IGNhbiBkZWxldGUgdGhlIHRpbWVyLgpAQCAtMTUwLDQgKzE0OSwyMiBAQCB2b2lkIERP
TVRpbWVyOjpzdG9wKCkKICAgICBtX2FjdGlvbi5jbGVhcigpOwogfQogCit2b2lkIERPTVRpbWVy
OjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2
YWwpCit7CisgICAgaWYgKG1fbmVzdGluZ0xldmVsIDwgbWF4VGltZXJOZXN0aW5nTGV2ZWwpCisg
ICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwgPSBpbnRl
cnZhbENsYW1wZWRUb01pbmltdW0obV9vcmlnaW5hbFRpbWVvdXQsIG9sZE1pbmltdW1UaW1lcklu
dGVydmFsKTsKKyAgICBkb3VibGUgbmV3Q2xhbXBlZEludGVydmFsID0gaW50ZXJ2YWxDbGFtcGVk
VG9NaW5pbXVtKG1fb3JpZ2luYWxUaW1lb3V0LCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPm1p
bmltdW1UaW1lckludGVydmFsKCkpOworICAgIGF1Z21lbnRGaXJlSW50ZXJ2YWwobmV3Q2xhbXBl
ZEludGVydmFsIC0gcHJldmlvdXNDbGFtcGVkSW50ZXJ2YWwpOworfQorCitkb3VibGUgRE9NVGlt
ZXI6OmludGVydmFsQ2xhbXBlZFRvTWluaW11bShpbnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1U
aW1lckludGVydmFsKSBjb25zdAoreworICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9
IG1heChvbmVNaWxsaXNlY29uZCwgdGltZW91dCAqIG9uZU1pbGxpc2Vjb25kKTsKKworICAgIGlm
IChpbnRlcnZhbE1pbGxpc2Vjb25kcyA8IG1pbmltdW1UaW1lckludGVydmFsICYmIG1fbmVzdGlu
Z0xldmVsID49IG1heFRpbWVyTmVzdGluZ0xldmVsKQorICAgICAgICBpbnRlcnZhbE1pbGxpc2Vj
b25kcyA9IG1pbmltdW1UaW1lckludGVydmFsOworICAgIHJldHVybiBpbnRlcnZhbE1pbGxpc2Vj
b25kczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGlt
ZXIuaAkocmV2aXNpb24gNzg1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorICAgIGNsYXNzIFNldHRpbmdzOworCiAgICAgY2xhc3MgRE9NVGltZXIgOiBwdWJsaWMgU3Vz
cGVuZGFibGVUaW1lciB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTZXR0aW5nczsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CiAgICAgICAgIC8vIENyZWF0ZXMgYSBu
ZXcgdGltZXIgb3duZWQgYnkgc3BlY2lmaWVkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0YXJ0
cyBpdApAQCAtNDYsMTggKzQ5LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KTsKIAotICAgICAgICAvLyBUaGUgbG93ZXN0IGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBz
ZWNvbmRzLCAwLjAwMSA9PSAxIG1zKS4KLSAgICAgICAgc3RhdGljIGRvdWJsZSBtaW5UaW1lcklu
dGVydmFsKCkgeyByZXR1cm4gc19taW5UaW1lckludGVydmFsOyB9Ci0gICAgICAgIHN0YXRpYyB2
b2lkIHNldE1pblRpbWVySW50ZXJ2YWwoZG91YmxlIHZhbHVlKSB7IHNfbWluVGltZXJJbnRlcnZh
bCA9IHZhbHVlOyB9CisgICAgICAgIC8vIEFkanVzdCB0byBhIGNoYW5nZSBpbiB0aGUgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCdzIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuCisgICAgICAgIC8vIFRo
aXMgYWxsb3dzIHRoZSBtaW5pbXVtIGFsbG93YWJsZSBpbnRlcnZhbCB0aW1lIHRvIGJlIGNoYW5n
ZWQgaW4gcmVzcG9uc2UKKyAgICAgICAgLy8gdG8gZXZlbnRzIGxpa2UgbW92aW5nIGEgdGFiIHRv
IHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICB2b2lkIGFkanVzdE1pbmltdW1UaW1lckludGVydmFs
KGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBET01UaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxTY2hlZHVsZWRB
Y3Rpb24+LCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGZpcmVkKCk7CiAKKyAgICAgICAgZG91YmxlIGludGVydmFsQ2xhbXBlZFRvTWluaW11bShp
bnQgdGltZW91dCwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKSBjb25zdDsKKworICAgICAg
ICAvLyBUaGUgZGVmYXVsdCBtaW5pbXVtIGFsbG93YWJsZSB0aW1lciBzZXR0aW5nIChpbiBzZWNv
bmRzLCAwLjAwMSA9PSAxIG1zKS4KKyAgICAgICAgLy8gVGhlc2UgYXJlIG9ubHkgbW9kaWZpZWQg
dmlhIHN0YXRpYyBtZXRob2RzIGluIFNldHRpbmdzLgorICAgICAgICBzdGF0aWMgZG91YmxlIGRl
ZmF1bHRNaW5UaW1lckludGVydmFsKCkgeyByZXR1cm4gc19taW5EZWZhdWx0VGltZXJJbnRlcnZh
bDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbChkb3Vi
bGUgdmFsdWUpIHsgc19taW5EZWZhdWx0VGltZXJJbnRlcnZhbCA9IHZhbHVlOyB9CisKICAgICAg
ICAgaW50IG1fdGltZW91dElkOwogICAgICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CiAgICAgICAg
IE93blB0cjxTY2hlZHVsZWRBY3Rpb24+IG1fYWN0aW9uOwotICAgICAgICBzdGF0aWMgZG91Ymxl
IHNfbWluVGltZXJJbnRlcnZhbDsKKyAgICAgICAgaW50IG1fb3JpZ2luYWxUaW1lb3V0OworICAg
ICAgICBzdGF0aWMgZG91YmxlIHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3
ODU3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSw2ICsxNjEsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50
CiAgICAgLCBtX2N1c3RvbUhUTUxUb2tlbml6ZXJDaHVua1NpemUoLTEpCiAgICAgLCBtX2NhblN0
YXJ0TWVkaWEodHJ1ZSkKICAgICAsIG1fdmlld01vZGUoVmlld01vZGVXaW5kb3dlZCkKKyAgICAs
IG1fbWluaW11bVRpbWVySW50ZXJ2YWwoU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKCkpCiB7CiAgICAgaWYgKCFhbGxQYWdlcykgewogICAgICAgICBhbGxQYWdlcyA9IG5ldyBI
YXNoU2V0PFBhZ2UqPjsKQEAgLTgzMiw2ICs4MzMsMjEgQEAgYm9vbCBQYWdlOjpqYXZhU2NyaXB0
VVJMc0FyZUFsbG93ZWQoKSBjbwogICAgIHJldHVybiBtX2phdmFTY3JpcHRVUkxzQXJlQWxsb3dl
ZDsKIH0KIAordm9pZCBQYWdlOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11
bVRpbWVySW50ZXJ2YWwpCit7CisgICAgZG91YmxlIG9sZFRpbWVySW50ZXJ2YWwgPSBtX21pbmlt
dW1UaW1lckludGVydmFsOworICAgIG1fbWluaW11bVRpbWVySW50ZXJ2YWwgPSBtaW5pbXVtVGlt
ZXJJbnRlcnZhbDsKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKKyAg
ICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPmFkanVzdE1pbmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOworICAgIH0K
K30KKworZG91YmxlIFBhZ2U6Om1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKK30KKwogI2lmIEVOQUJMRShJTlBVVF9TUEVF
Q0gpCiBTcGVlY2hJbnB1dCogUGFnZTo6c3BlZWNoSW5wdXQoKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmgJKHJldmlzaW9uIDc4NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgUGFnZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOworICAgICAgICBm
cmllbmQgY2xhc3MgU2V0dGluZ3M7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBz
Y2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjRm9yQWxsUGFnZXMoKTsKIApAQCAtMjk3LDYgKzI5OCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIq
IHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAorICAgICAgICB2b2lkIHNldE1pbmlt
dW1UaW1lckludGVydmFsKGRvdWJsZSk7CisgICAgICAgIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRl
cnZhbCgpIGNvbnN0OworCiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAg
ICBPd25QdHI8U2VsZWN0aW9uQ29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCkBA
IC0zODUsNiArMzg5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWaWV3TW9kZSBt
X3ZpZXdNb2RlOwogCiAgICAgICAgIFZpZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVu
dHM7CisKKyAgICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJl
dmlzaW9uIDc4NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzNCw5ICs0MzQsMjQgQEAgdm9pZCBTZXR0aW5nczo6c2V0RE9NUGFzdGVB
bGxvd2VkKGJvb2wgRAogICAgIG1faXNET01QYXN0ZUFsbG93ZWQgPSBET01QYXN0ZUFsbG93ZWQ7
CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKGRvdWJs
ZSBpbnRlcnZhbCkKK3sKKyAgICBET01UaW1lcjo6c2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwo
aW50ZXJ2YWwpOworfQorCitkb3VibGUgU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVy
dmFsKCkKK3sKKyAgICByZXR1cm4gRE9NVGltZXI6OmRlZmF1bHRNaW5UaW1lckludGVydmFsKCk7
Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlIGludGVy
dmFsKQogewotICAgIERPTVRpbWVyOjpzZXRNaW5UaW1lckludGVydmFsKGludGVydmFsKTsKKyAg
ICBtX3BhZ2UtPnNldE1pbmltdW1UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKworZG91Ymxl
IFNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5t
aW5pbXVtVGltZXJJbnRlcnZhbCgpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VzUGFnZUNh
Y2hlKGJvb2wgdXNlc1BhZ2VDYWNoZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlz
aW9uIDc4NTc4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDMsOCArMjAzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzZXRET01QYXN0ZUFsbG93ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgaXNET01QYXN0ZUFsbG93
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRE9NUGFzdGVBbGxvd2VkOyB9CiAgICAgICAgIAotICAg
ICAgICBzdGF0aWMgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7IC8vIEludGVy
dmFsIHNwZWNpZmllZCBpbiBzZWNvbmRzLgorICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0
TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vj
b25kcy4KKyAgICAgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgp
OwogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSk7
IC8vIFBlci1wYWdlOyBpbml0aWFsaXplZCB0byBkZWZhdWx0IHZhbHVlLgorICAgICAgICBkb3Vi
bGUgbWluRE9NVGltZXJJbnRlcnZhbCgpOworCiAgICAgICAgIHZvaWQgc2V0VXNlc1BhZ2VDYWNo
ZShib29sKTsKICAgICAgICAgYm9vbCB1c2VzUGFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91
c2VzUGFnZUNhY2hlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkocmV2aXNpb24g
Nzg1NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCgp
IGNvbnN0OwogICAgIGRvdWJsZSByZXBlYXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
ZWF0SW50ZXJ2YWw7IH0KIAotICAgIHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBk
ZWx0YSkgeyBzZXROZXh0RmlyZVRpbWUobV9uZXh0RmlyZVRpbWUgKyBkZWx0YSk7IG1fcmVwZWF0
SW50ZXJ2YWwgKz0gZGVsdGE7IH0KKyAgICB2b2lkIGF1Z21lbnRGaXJlSW50ZXJ2YWwoZG91Ymxl
IGRlbHRhKSB7IHNldE5leHRGaXJlVGltZShtX25leHRGaXJlVGltZSArIGRlbHRhKTsgfQorICAg
IHZvaWQgYXVnbWVudFJlcGVhdEludGVydmFsKGRvdWJsZSBkZWx0YSkgeyBhdWdtZW50RmlyZUlu
dGVydmFsKGRlbHRhKTsgbV9yZXBlYXRJbnRlcnZhbCArPSBkZWx0YTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc4NTgwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDItMTUgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXItcGFn
ZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTQzMTIKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisKIDIwMTEtMDItMTUgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CShyZXZpc2lvbiA3ODU3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBtX3BhZ2UtPnNldEdyb3VwTmFtZSht
X3BhZ2VHcm91cC0+aWRlbnRpZmllcigpKTsKIAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwot
ICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKKyAgICBTZXR0aW5n
czo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgbV9kcmF3aW5n
QXJlYSA9IERyYXdpbmdBcmVhOjpjcmVhdGUodGhpcywgcGFyYW1ldGVycyk7CiAgICAgbV9tYWlu
RnJhbWUgPSBXZWJGcmFtZTo6Y3JlYXRlTWFpbkZyYW1lKHRoaXMpOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NTgwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMi0xNSAg
S2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01U
aW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAgICAgICogcHVibGljL1dlYlNl
dHRpbmdzLmg6CisgICAgICAgICAgLSBBZGRlZCBzZXRNaW5ET01UaW1lckludGVydmFsLgorICAg
ICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFsaXplKToKKyAg
ICAgICAgICAtIEFkZGVkIEZJWE1FIHRvIHJlbW92ZSBzZXR0aW5nIG9mIHBhZ2UncyBkZWZhdWx0
IHRpbWVyIGludGVydmFsLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwpOgor
ICAgICAgICAgIC0gSW1wbGVtZW50ZWQgbmV3IG1ldGhvZCBvbiBXZWJTZXR0aW5ncy4KKyAgICAg
ICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisKIDIwMTEtMDEtMjYgIE1PUklUQSBIYWppbWUg
IDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdh
LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCShy
ZXZpc2lvbiA3ODU3OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKSA9IDA7
CiAKIHByb3RlY3RlZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViS2l0LmNwcAkocmV2aXNpb24gNzg1NzgpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKIAotI2luY2x1ZGUg
IkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKQEAgLTcxLDcgKzcxLDkgQEAgdm9pZCBp
bml0aWFsaXplKFdlYktpdENsaWVudCogd2ViS2l0Q2xpZQogICAgIC8vIGNvZGVkIHdlYnNpdGVz
IG91dCB0aGVyZSB3aGljaCBkbyBjcmVhdGUgQ1BVLXNwaW5uaW5nIGxvb3BzLiAgVXNpbmcKICAg
ICAvLyA0bXMgcHJldmVudHMgdGhlIENQVSBmcm9tIHNwaW5uaW5nIHRvbyBidXNpbHkgYW5kIHBy
b3ZpZGVzIGEgYmFsYW5jZQogICAgIC8vIGJldHdlZW4gQ1BVIHNwaW5uaW5nIGFuZCB0aGUgc21h
bGxlc3QgcG9zc2libGUgaW50ZXJ2YWwgdGltZXIuCi0gICAgV2ViQ29yZTo6RE9NVGltZXI6OnNl
dE1pblRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBjYWxs
IG9uY2UgQ2hyb21pdW0gaGFzIGJlZW4gY2hhbmdlZCB0byBzZXQKKyAgICAvLyB0aGlzIGZvciBh
bGwgcGFnZXMgdXNpbmcgdGhlIG5ldyBXZWJTZXR0aW5ncyBBUEkuCisgICAgV2ViQ29yZTo6U2V0
dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsKIAogICAgIC8vIFRo
ZXJlIGFyZSBzb21lIGNvZGUgcGF0aHMgKGZvciBleGFtcGxlLCBydW5uaW5nIFdlYktpdCBpbiB0
aGUgYnJvd3NlcgogICAgIC8vIHByb2Nlc3MgYW5kIGNhbGxpbmcgaW50byBMb2NhbFN0b3JhZ2Ug
YmVmb3JlIGFueXRoaW5nIGVsc2UpIHdoZXJlIHRoZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCShyZXZpc2lvbiA3ODU3OCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0OSw0ICszNDksOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SW50ZXJhY3Rp
dmVGb3JtCiAgICAgbV9zZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRNaW5ET01UaW1lcklu
dGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRNaW5ET01UaW1l
ckludGVydmFsKGludGVydmFsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkocmV2aXNpb24g
Nzg1NzgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOwogCiBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
Nzg1ODApCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0wMi0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJh
c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMx
MgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2Qu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWZhdWx0TWluaW11bVRpbWVy
SW50ZXJ2YWwpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmg6CisKIDIwMTEtMDItMTUgIENocmlzdGlhbiBEeXdhbiAgPGNocmlzdGlhbkBs
YW5lZG8uY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEd1c3Rhdm8gTm9yb25oYSBT
aWx2YS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gNzg1NzgpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
VHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3By
aXZhdGUuaCIKQEAgLTY0MiwzICs2NDMsMTIgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OmZpbmRTdHJpbgogICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT5maW5kU3RyaW5nKFN0cmlu
Zzo6ZnJvbVVURjgodGFyZ2V0U3RyaW5nKSwgZmluZE9wdGlvbnMpOwogfQogCitkb3VibGUgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKQorewor
ICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwor
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVydmFsKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBjb3JlKHdlYlZp
ZXcpLT5zZXR0aW5ncygpLT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKK30KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCShyZXZpc2lvbiA3ODU3OCkKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBjb25maXJt
Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqIHRleHQpOwogICAgIHN0YXRp
YyBib29sIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKFdlYktpdFdlYlZpZXcqLCBpbnQgbG9j
YXRpb24sIGludCBsZW5ndGgsIEdka1JlY3RhbmdsZSopOwogICAgIHN0YXRpYyBib29sIHNlbGVj
dGVkUmFuZ2UoV2ViS2l0V2ViVmlldyosIGludCogc3RhcnQsIGludCogZW5kKTsKKyAgICBzdGF0
aWMgZG91YmxlIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpOyAvLyBOb3QgcmVhbGx5IHRp
ZWQgdG8gV2ViVmlldworICAgIHN0YXRpYyB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKFdl
YktpdFdlYlZpZXcqLCBkb3VibGUpOwogCiAgICAgLy8gR0MKICAgICBzdGF0aWMgdm9pZCBnY0Nv
bGxlY3RKYXZhc2NyaXB0T2JqZWN0cygpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
Nzg1ODApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wMi0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxs
b3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJh
c2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMx
MgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0
Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2Qu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6dXNlc0RvY3VtZW50Vmll
d3M6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2RlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbF0p
OgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTEtMDEtMjYgIE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNzg1
NzgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTY5NCw3ICs2OTQsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hCiAgICAgICAgIAogICAgICAgICAvLyBJbml0aWFsaXplIG91ciBwbGF0Zm9ybSBzdHJh
dGVnaWVzLgogICAgICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAg
ICAgICAgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgICAgICBT
ZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgICAg
IGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQpAQCAtMjczOCw2ICsyNzM4
LDE3IEBAICsgKHZvaWQpX3NldExvYWRSZXNvdXJjZXNTZXJpYWxseTooQk9PTCkKICAgICByZXNv
dXJjZUxvYWRTY2hlZHVsZXIoKS0+c2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoc2VyaWFsaXplKTsK
IH0KIAorKyAoZG91YmxlKV9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwKK3sKKyAgICByZXR1
cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7Cit9CisKKy0gKHZvaWQp
X3NldE1pbmltdW1UaW1lckludGVydmFsOihkb3VibGUpaW50ZXJ2YWxJblNlY29uZHMKK3sKKyAg
ICBpZiAoX3ByaXZhdGUtPnBhZ2UpCisgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsSW5TZWNvbmRzKTsKK30KKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gX1dlYlNhZmVGb3J3YXJkZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgJKHJldmlzaW9uIDc4NTc4KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NzEsNiArNTcxLDIzIEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLy8gRGVw
cmVjYXRlZC4gVXNlIGZpbmRTdHJpbmcuCiAtIChCT09MKXNlYXJjaEZvcjooTlNTdHJpbmcgKilz
dHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndhcmQgY2FzZVNlbnNpdGl2ZTooQk9PTCljYXNlRmxh
ZyB3cmFwOihCT09MKXdyYXBGbGFnIHN0YXJ0SW5TZWxlY3Rpb246KEJPT0wpc3RhcnRJblNlbGVj
dGlvbjsKIAorLyohCisgICAgQG1ldGhvZCBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwKKyAg
ICBAZGlzY3Vzc2lvbiBTaG91bGQgY29uc2lkZXIgbW92aW5nIHRoaXMgdG8gdGhlIHB1YmxpYyBB
UEkuCisgICAgQHJlc3VsdCBSZXR1cm5zIHRoZSBkZWZhdWx0IG1pbmltdW0gdGltZXIgaW50ZXJ2
YWwuCisqLworKyAoZG91YmxlKV9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWw7CisKKy8qIQor
ICAgIEBtZXRob2Qgc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6CisgICAgQGRpc2N1c3Npb24gU2V0
cyB0aGUgbWluaW11bSBpbnRlcnZhbCBmb3IgRE9NVGltZXJzIGluIHRoaXMgV2ViVmlldy4gVGhp
cyBtZXRob2QgaXMKKyAgICBleHBvc2VkIGhlcmUgaW4gdGhlIE1hYyBwb3J0IHJhdGhlciB0aGFu
IHRocm91Z2ggV2ViUHJlZmVyZW5jZXMgKHdoaWNoIGdlbmVyYWxseQorICAgIGdvdmVybnMgU2V0
dGluZ3MpIGJlY2F1c2UgdGhpcyB2YWx1ZSBpcyBzb21ldGhpbmcgYWRqdXN0ZWQgYXQgcnVuIHRp
bWUsIG5vdCBzZXQKKyAgICBnbG9iYWxseSB2aWEgImRlZmF1bHRzIHdyaXRlIi4gU2hvdWxkIGNv
bnNpZGVyIGFkZGluZyB0aGlzIHRvIHRoZSBwdWJsaWMgQVBJLgorICAgIEBwYXJhbSBpbnRlcnZh
bEluU2Vjb25kcyBUaGUgbmV3IG1pbmltdW0gdGltZXIgaW50ZXJ2YWwsIGluIHNlY29uZHMuCisq
LworLSAodm9pZClfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6KGRvdWJsZSlpbnRlcnZhbEluU2Vj
b25kczsKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdQcmludGluZ1ByaXZh
dGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzg1ODApCisrKyBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE1
ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERP
TVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgQWRkZWQgbmVlZGVk
IG1ldGhvZHMgdG8gaW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVyJ3MgbmV3CisgICAgICAg
IHNldE1pbmltdW1UaW1lckludGVydmFsIG1ldGhvZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDExLTAxLTI2ICBN
T1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA3ODU3
OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDIsNiArOTQyLDIxIEBAIFFTdHJpbmdMaXN0
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb24KICAgICByZXR1cm4gUVN0cmluZ0xpc3QoKTsK
ICNlbmRpZgogfQorCitkb3VibGUgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmRlZmF1bHRNaW5p
bXVtVGltZXJJbnRlcnZhbCgpCit7CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbCgpOworfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbChRV2ViUGFnZSogcGFnZSwgZG91YmxlIGludGVydmFsKQorewor
ICAgIFBhZ2UqIGNvcmVQYWdlID0gUVdlYlBhZ2VQcml2YXRlOjpjb3JlKHBhZ2UpOworICAgIGlm
ICghY29yZVBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGNvcmVQYWdlLT5zZXR0aW5ncygp
LT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKwogLy8gUHJvdmlkZSBhIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91c2x5IGV4cG9ydGVkIHByaXZhdGUgc3lt
Ym9scyBhcyBvZiBRdFdlYktpdCA0LjYgcmVsZWFzZQogCiB2b2lkIFFXRUJLSVRfRVhQT1JUIHF0
X3Jlc3VtZUFjdGl2ZURPTU9iamVjdHMoUVdlYkZyYW1lKiBmcmFtZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmgJKHJldmlzaW9uIDc4NTc4KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiAr
MTg5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBRU3RyaW5nIHJlc3BvbnNlTWltZVR5cGUoUVdl
YkZyYW1lKik7CiAgICAgc3RhdGljIHZvaWQgYWRkVVJMVG9SZWRpcmVjdChjb25zdCBRU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKTsKICAgICBzdGF0aWMgUVN0cmlu
Z0xpc3QgY29udGV4dE1lbnUoUVdlYlBhZ2UqKTsKKworICAgIHN0YXRpYyBkb3VibGUgZGVmYXVs
dE1pbmltdW1UaW1lckludGVydmFsKCk7IC8vIE5vdCByZWFsbHkgdGllZCB0byBXZWJWaWV3Cisg
ICAgc3RhdGljIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoUVdlYlBhZ2UqLCBkb3VibGUp
OwogfTsKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODU4MCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIz
IEBACisyMDExLTAyLTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9s
bGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAg
ICAgQWRkZWQgbmVlZGVkIG1ldGhvZHMgdG8gaW1wbGVtZW50IExheW91dFRlc3RDb250cm9sbGVy
J3MgbmV3CisgICAgICAgIHNldE1pbmltdW1UaW1lckludGVydmFsIG1ldGhvZC4gSW5jbHVkZXMg
d2hpdGVzcGFjZS1vbmx5IGNoYW5nZSB0bworICAgICAgICBXZWJLaXQuaWRsIHRvIHRyaWdnZXIg
cHJvcGVyIHJlYnVpbGQgb24gYm90czsgd2lsbCBiZSByZW1vdmVkIGluCisgICAgICAgIHN1YnNl
cXVlbnQgY2hlY2tpbi4KKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlk
bDoKKyAgICAgICAgKiBJbnRlcmZhY2VzL1dlYktpdC5pZGw6CisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKyAgICAgICAgKFdlYlZpZXc6
OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJWaWV3OjpzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDExLTAxLTI2ICBN
T1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA3ODU3OCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEx
LDcgKzI2MTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmluaXRXCiAj
ZW5kaWYKICAgICAgICAgV2ViS2l0U2V0QXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgp
OwogICAgICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKLSAgICAgICAg
U2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgICAgICBTZXR0aW5n
czo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOwogCiAgICAgICAgIGRpZE9u
ZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgIH0KQEAgLTY2MjAsMyArNjYyMCwxNyBA
QCBQYWdlKiBjb3JlKElXZWJWaWV3KiBpV2ViVmlldykKIAogICAgIHJldHVybiBwYWdlOwogfQor
CitIUkVTVUxUIFdlYlZpZXc6OmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUqIGlu
dGVydmFsKQoreworICAgIGlmICghaW50ZXJ2YWwpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisgICAgKmludGVydmFsID0gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7
CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViVmlldzo6c2V0TWluaW11bVRpbWVy
SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQoreworICAgIHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0
TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5oCShyZXZpc2lvbiA3ODU3OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtODEzLDYgKzgxMywxMiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dERpc3BsYXlJc1N5bmNocm9u
b3VzKCk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVmYXVsdE1p
bmltdW1UaW1lckludGVydmFsKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGRvdWJsZSAq
aW50ZXJ2YWwpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE1p
bmltdW1UaW1lckludGVydmFsKAorICAgICAgICAvKiBbaW5dICovIGRvdWJsZSk7CisKICAgICAv
LyBXZWJWaWV3CiAgICAgYm9vbCBzaG91bGRVc2VFbWJlZGRlZFZpZXcoY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViVmlld1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAkocmV2aXNpb24gNzg1NzgpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTIzOSw0ICsyMzksMjEgQEAgaW50ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3du
CiAgICAgW2xvY2FsXSBIUkVTVUxUIHJlcG9ydEV4Y2VwdGlvbihbaW5dIEpTQ29udGV4dFJlZiBj
b250ZXh0LCBbaW5dIEpTVmFsdWVSZWYgZXhjZXB0aW9uKTsKIAogICAgIFtsb2NhbF0gSFJFU1VM
VCBlbGVtZW50RnJvbUpTKFtpbl0gSlNDb250ZXh0UmVmIGNvbnRleHQsIFtpbl0gSlNWYWx1ZVJl
ZiBub2RlT2JqZWN0LCBbb3V0LCByZXR2YWxdIElET01FbGVtZW50KiogZWxlbWVudCk7CisKKwor
ICAgIC8qIQorICAgICAgICBAbWV0aG9kIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbAorICAg
ICAgICBAZGlzY3Vzc2lvbiBSZXR1cm5zIHRoZSBkZWZhdWx0IG1pbmltdW0gaW50ZXJ2YWwgZm9y
IERPTVRpbWVycyBvbiBhbGwgcGFnZXMsIG5vdAorICAgICAgICBqdXN0IHRoZSBvbmUgYXNzb2Np
YXRlZCB3aXRoIHRoaXMgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlpbnRlcnZhbDsKKyAg
ICAqLworICAgIEhSRVNVTFQgZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKFtvdXQsIHJldHZh
bF0gZG91YmxlKiBpbnRlcnZhbCk7CisKKyAgICAvKiEKKyAgICAgICAgQG1ldGhvZCBzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbAorICAgICAgICBAZGlzY3Vzc2lvbiBTZXRzIHRoZSBtaW5pbXVtIGlu
dGVydmFsIGZvciBET01UaW1lcnMgb24gdGhlIHdlYiBwYWdlIGFzc29jaWF0ZWQKKyAgICAgICAg
d2l0aCB0aGUgcmVjZWl2ZXIuCisgICAgICAgIC0gKGRvdWJsZSlpbnRlcnZhbDsKKyAgICAqLwor
ICAgIEhSRVNVTFQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoW2luXSBkb3VibGUgaW50ZXJ2YWwp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkocmV2aXNp
b24gNzg1NzgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMwMSwzICszMDEsNCBAQCBsaWJyYXJ5IFdlYktpdAogICAgICAgICBb
ZGVmYXVsdF0gaW50ZXJmYWNlIElXZWJVc2VyQ29udGVudFVSTFBhdHRlcm47CiAgICAgfQogfQor
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3ODU4MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQxIEBACisyMDExLTAyLTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBj
b250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisK
KyAgICAgICAgSW1wbGVtZW50ZWQgbmV3IG1ldGhvZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBp
bgorICAgICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciBmb3IgYWxsIHBvcnRzLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0
TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlv
dXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xh
eW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc2V0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRE
ZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50
U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGFnZTo6cmVzZXRTZXR0aW5n
cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2
YWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAg
ICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKwog
MjAxMS0wMi0xNSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamkuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3ODU3OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTkyNiw2ICsxOTI2LDIwIEBAIHN0YXRpYyBib29sIHNldEdsb2JhbEZsYWdDYWxsYmFjayhK
U0NvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0TWluaW11
bVRpbWVySW50ZXJ2YWxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
ZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7Cisg
ICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CisKKyAgICBkb3VibGUgbWluaW11bSA9IEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgQVNTRVJUKCEqZXhjZXB0aW9u
KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwor
ICAgIGNvbnRyb2xsZXItPnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmltdW0pOworCisgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgdm9pZCBs
YXlvdXRUZXN0Q29udHJvbGxlck9iamVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsK
ICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91
dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpOwpAQCAtMjA3Myw2
ICsyMDg3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAg
ICAgICB7ICJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgc2V0SWNvbkRhdGFiYXNlRW5hYmxlZENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVk
Iiwgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNGaXJzdFJl
c3BvbmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1pbmltdW1UaW1lckludGVy
dmFsIiwgc2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmgJKHJldmlzaW9uIDc4NTc4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Vmlld1dpZHRoOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBtYXhWaWV3SGVpZ2h0OwogCisgICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bChkb3VibGUpOworCiBwcml2YXRlOgogICAgIExheW91dFRlc3RDb250cm9sbGVyKGNvbnN0IHN0
ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRQaXhl
bEhhc2gpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3ODU3OCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0
Q29udHJvbGwKICAgICBiaW5kTWV0aG9kKCJzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24iLCAmTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbik7CiAgICAgYmluZE1l
dGhvZCgic2V0SWNvbkRhdGFiYXNlRW5hYmxlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
SWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0SmF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCk7CisgICAgYmluZE1ldGhvZCgic2V0TWluaW11bVRpbWVySW50ZXJ2YWwi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwpAQCAtMTU5
MywzICsxNTk0LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Omhhc1NwZWxsaW5nTWEK
ICAgICAgICAgcmV0dXJuOwogICAgIHJlc3VsdC0+c2V0KG1fc2hlbGwtPndlYlZpZXcoKS0+bWFp
bkZyYW1lKCktPnNlbGVjdGlvblN0YXJ0SGFzU3BlbGxpbmdNYXJrZXJGb3IoYXJndW1lbnRzWzBd
LnRvSW50MzIoKSwgYXJndW1lbnRzWzFdLnRvSW50MzIoKSkpOwogfQorCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMSB8fCAhYXJndW1lbnRzWzBdLmlzTnVt
YmVyKCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdz
KCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoYXJndW1lbnRzWzBdLnRvRG91YmxlKCkpOworfQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA3ODU3OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICsz
MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaGFzU3BlbGxpbmdNYXJrZXIo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisgICAgdm9pZCBzZXRNaW5p
bXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisK
IHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2VkIHRv
IEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4pIHsg
bV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDc4NTc4KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjI2LDggKzEyMjYsMTEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cmVzZXQoKQogICAgIG1f
d2luZG93UmVjdCA9IFdlYlJlY3QoKTsKICAgICBtX3BhaW50UmVjdCA9IFdlYlJlY3QoKTsKIAot
ICAgIGlmIChtX3dlYldpZGdldCkKKyAgICBpZiAobV93ZWJXaWRnZXQpIHsKICAgICAgICAgd2Vi
VmlldygpLT5tYWluRnJhbWUoKS0+c2V0TmFtZShXZWJTdHJpbmcoKSk7CisgICAgICAgIC8vIEZJ
WE1FOiBjaGFuZ2UgdG8gdXNlIHdlYmtpdF9zdXBwb3J0OjpGb3JlZ3JvdW5kVGFiVGltZXJJbnRl
cnZhbCBvbmNlIHRoYXQgbGFuZHMuCisgICAgICAgIHdlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0
TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgfQogfQogCiB2b2lkIFdlYlZpZXdIb3N0
OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZW5hYmxlZCkKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24g
Nzg1NzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MjgsNiArNDI4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFZhbAogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChpbnNwZWN0b3IpLCAi
amF2YXNjcmlwdC1wcm9maWxpbmctZW5hYmxlZCIsIEZBTFNFLCBOVUxMKTsKIAogICAgIHdlYmtp
dF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCAxLjApOworICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwod2ViVmlldywgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CiAKICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpOwog
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDc4NTc4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgwLDMg
Kzg4MCw5IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGlmIG5lZWRlZCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwNzU4LgogfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVySW50ZXJ2YWwpCit7
CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92
aWV3KG1haW5GcmFtZSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbCh3ZWJWaWV3LCBtaW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA3ODU3
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxNyw2ICsxMDE3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9D
b25zaXN0ZW50U3RhdAogICAgIFtbd2ViVmlldyB1bmRvTWFuYWdlcl0gcmVtb3ZlQWxsQWN0aW9u
c107CiAgICAgW1dlYlZpZXcgX3JlbW92ZUFsbFVzZXJDb250ZW50RnJvbUdyb3VwOlt3ZWJWaWV3
IGdyb3VwTmFtZV1dOwogICAgIFtbd2ViVmlldyB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5PXTsK
KyAgICBbd2ViVmlldyBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6W1dlYlZpZXcgX2RlZmF1bHRN
aW5pbXVtVGltZXJJbnRlcnZhbF1dOwogCiAgICAgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZh
bHVlcygpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA3ODU3OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTAwMywzICsxMDAzLDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0U2VyaWFsaXpl
SAogewogICAgIFtXZWJWaWV3IF9zZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6c2VyaWFsaXplXTsK
IH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwo
ZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQoreworICAgIFtbbWFpbkZyYW1lIHdlYlZpZXdd
IF9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDptaW5pbXVtVGltZXJJbnRlcnZhbF07Cit9CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAkocmV2aXNp
b24gNzg1NzgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSw4IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRT
ZXR0aW5ncygpCiAgICAgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hlKDApOyAv
LyByZXNldCB0byBkZWZhdWx0CiAgICAgc2V0dGluZ3MoKS0+c2V0VXNlclN0eWxlU2hlZXRVcmwo
UVVybCgpKTsgLy8gcmVzZXQgdG8gZGVmYXVsdAogCisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldE1pbmltdW1UaW1lckludGVydmFsKHRoaXMsIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKSk7CisKICAgICBtX3BlbmRpbmdHZW9sb2Nh
dGlvblJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA3ODU3OCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzYsNSArODM2LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmFkZFVSTFRvUmVkaXIKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6YWRkVVJMVG9SZWRp
cmVjdChvcmlnaW4sIGRlc3RpbmF0aW9uKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQor
eworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCht
X2RydC0+d2ViUGFnZSgpLCBtaW5pbXVtVGltZXJJbnRlcnZhbCk7Cit9CisKIGNvbnN0IHVuc2ln
bmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3V2lkdGggPSA4MDA7CiBjb25zdCB1bnNp
Z25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWF4Vmlld0hlaWdodCA9IDYwMDsKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJl
dmlzaW9uIDc4NTc4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDggQEAgcHVibGljIHNsb3Rz
OgogICAgIFFTdHJpbmcgcGFnZVByb3BlcnR5KGNvbnN0IFFTdHJpbmcmIHByb3BlcnR5TmFtZSwg
aW50IHBhZ2VOdW1iZXIpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXQoY29uc3QgUVN0cmlu
ZyYgc291cmNlQ29kZSk7CiAKKyAgICB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJs
ZSk7CisKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBwcm9jZXNzV29yaygpOwogCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDc4
NTc4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODY2LDYgKzg2NiwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdU
b0NvbnNpc3RlbnRTdGF0CiAgICAgaWYgKCF3ZWJWaWV3UHJpdmF0ZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgZG91YmxlIG1pbmltdW1JbnRlcnZhbCA9IDA7CisgICAgaWYgKFNVQ0NFRURFRCh3
ZWJWaWV3UHJpdmF0ZS0+ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCZtaW5pbXVtSW50ZXJ2
YWwpKSkKKyAgICAgICAgd2ViVmlld1ByaXZhdGUtPnNldE1pbmltdW1UaW1lckludGVydmFsKG1p
bmltdW1JbnRlcnZhbCk7CisKICAgICBDT01QdHI8SVdlYkluc3BlY3Rvcj4gaW5zcGVjdG9yOwog
ICAgIGlmIChTVUNDRUVERUQod2ViVmlld1ByaXZhdGUtPmluc3BlY3RvcigmaW5zcGVjdG9yKSkp
CiAgICAgICAgIGluc3BlY3Rvci0+c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoRkFMU0Up
OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA3ODU3OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzAs
MyArMTQzMCwxNiBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTZXJpYWxpemVICiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KKwordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKQor
eworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53
ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViVmll
d1ByaXZhdGU+IHZpZXdQcml2YXRlKFF1ZXJ5LCB3ZWJWaWV3KTsKKyAgICBpZiAoIXZpZXdQcml2
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICB2aWV3UHJpdmF0ZS0+c2V0TWluaW11bVRpbWVy
SW50ZXJ2YWwobWluaW11bVRpbWVySW50ZXJ2YWwpOworfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzg1
ODApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NyBAQAorMjAxMS0wMi0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJv
bGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAg
ICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0
LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1p
bnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLmh0bWw6IEFkZGVkLgorICAgICAgICAgIC0gQ2hhaW5l
ZCB0ZXN0cyAodGhlIGFzc3VtcHRpb24gaXMgdGhhdCB0aGUgcnVuLXdlYmtpdC10ZXN0cworICAg
ICAgICAgICAgaGFybmVzcyB3aWxsIHJ1biB0aGVtIHNlcXVlbnRpYWxseSwgd2hpY2ggaXMgYSBy
ZWFzb25hYmx5IGdvb2QKKyAgICAgICAgICAgIGFzc3VtcHRpb24pIHdoaWNoIHZlcmlmeSB0aGF0
IHRoZSBtaW5pbXVtIHRpbWVyIGludGVydmFsIGlzCisgICAgICAgICAgICByZXNldCBiZXR3ZWVu
IHRlc3RzLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgaW5jcmVh
c2luZyB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIGZhc3Qg
dGltZXJzIHRvIHJ1biBzbG93bHkuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2Ut
dGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgICAtIFZlcmlmaWVzIHRoYXQgZGVjcmVhc2luZyB0aGUgbWluaW11
bSB0aW1lciBpbnRlcnZhbCBjYXVzZXMKKyAgICAgICAgICAgIHByZXZpb3VzbHkgc2xvd2VkLWRv
d24gdGltZXJzIHRvIGJlIHJlZXZhbHVhdGVkIGltbWVkaWF0ZWx5LgorCiAyMDExLTAyLTE1ICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZWJhc2VsaW5lIG9mIEd0ayByZXN1bHQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2Ut
bWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1y
ZXNldC1wYXJ0LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BB
U1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50
ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4t
aW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMy
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2
YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQu
dGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImJyIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBM
YXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgLy8gTWFrZSB0aW1lcnMgcnVu
IG5vIG1vcmUgb2Z0ZW4gdGhhbiB0d2ljZSBhIHNlY29uZC4KKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgwLjUpOworCisgICAgLy8gUGFydCAyIG9mIHRo
aXMgdGVzdCAod2hpY2ggd2lsbCBsaWtlbHkgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKKyAgICAv
LyBhZnRlciB0aGlzIG9uZSBieSB0aGUgaGFybmVzcykgdmVyaWZpZXMgdGhhdCB0aGUgbWluaW11
bSB0aW1lcgorICAgIC8vIGludGVydmFsIGlzIHJlc2V0IGJldHdlZW4gdGVzdHMuCisKKyAgICBs
b2coIlBBU1MiKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZh
bC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0y
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNTCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1y
ZXNldC1wYXJ0LTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1l
ci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFu
ZC1yZXNldC1wYXJ0LTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50
ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30K
KwordmFyIGNvdW50ID0gMDsKK2Z1bmN0aW9uIGZhc3RUaW1lb3V0SGFuZGxlcigpIHsKKyAgICAr
K2NvdW50OworICAgIHNldFRpbWVvdXQoZmFzdFRpbWVvdXRIYW5kbGVyLCAxKTsKK30KKworZnVu
Y3Rpb24gc2xvd1RpbWVvdXRIYW5kbGVyKCkgeworICAgIC8vIE5vdGU6IHRoZSBjb3VudCB0aHJl
c2hvbGQgaXMgdGllZCBzb21ld2hhdCB0byB0aGUKKyAgICAvLyBtYXhUaW1lck5lc3RpbmdMZXZl
bCBpbiBET01UaW1lci5jcHAuCisgICAgaWYgKGNvdW50ID4gMTApCisgICAgICAgIGxvZygiUEFT
UyIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlMIC0tIHRpbWVvdXQgcmFuICIgKyBjb3Vu
dCArICIgdGltZXMiKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgbG9nKCJUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIExheW91dFRlc3RD
b250cm9sbGVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworCisgICAgLy8gVGltZXJzIHNob3VsZCBiZSBydW5uaW5nIGF0IGZ1bGwgc3BlZWQs
IG5vdCBhdCB0aGUgdGhyb3R0bGVkCisgICAgLy8gcmF0ZSBzZXQgYnkgcGFydCAxIG9mIHRoaXMg
dGVzdC4KKworICAgIHNldFRpbWVvdXQoc2xvd1RpbWVvdXRIYW5kbGVyLCAxMDAwKTsKKyAgICBz
ZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWlu
dGVydmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVy
LWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9IDA7CitmdW5j
dGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBzZXRUaW1lb3V0
KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1lb3V0SGFuZGxl
cigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQgc29tZXdoYXQg
dG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIuY3BwLgorICAg
IGlmIChjb3VudCA8IDEwKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNlCisgICAgICAg
IGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxvZygi
VGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8vIE1ha2Ug
dGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gdHdpY2UgYSBzZWNvbmQuCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC41KTsKKworICAgIHNldFRp
bWVvdXQoc2xvd1RpbWVvdXRIYW5kbGVyLCAxMDAwKTsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1l
b3V0SGFuZGxlciwgMSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Rp
bWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3Jl
YXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVy
dmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFs
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IG1zZzsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciBjb3VudCA9
IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytjb3VudDsKKyAgICBz
ZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0aW9uIHNsb3dUaW1l
b3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNob2xkIGlzIHRpZWQg
c29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwgaW4gRE9NVGltZXIu
Y3BwLgorICAgIGlmIChjb3VudCA+IDEwKQorICAgICAgICBsb2coIlBBU1MiKTsKKyAgICBlbHNl
CisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQgKyAiIHRpbWVzIik7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlciIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAg
IC8vIE1ha2UgdGltZXJzIHJ1biBubyBtb3JlIG9mdGVuIHRoYW4gb25jZSBwZXIgc2Vjb25kLgor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDEuMCk7CisK
KyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgNTAwKTsKKyAgICBzZXRUaW1lb3V0
KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7CisKKyAgICAvLyBBbGxvdyB0aW1lcnMgdG8gcnVuIHF1
aWNrbHkgYWdhaW4uCisgICAgLy8gSWYgdGhpcyBkb2Vzbid0IGNhdXNlIHRpbWVycyB0byBnZXQg
cmUtZXZhbHVhdGVkIGltbWVkaWF0ZWx5LAorICAgIC8vIHRoZSBmYXN0IHRpbWVvdXQgaGFuZGxl
ciB3b24ndCBnZXQgY2FsbGVkIGZvciB1cCB0byBhIHNlY29uZCwKKyAgICAvLyB3aGljaCB3b3Vs
ZCBsZWFkIHRvIHBvb3IgcmVzcG9uc2l2ZW5lc3MuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC4wMDQpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82521</attachid>
            <date>2011-02-15 14:38:05 -0800</date>
            <delta_ts>2011-02-15 14:38:05 -0800</delta_ts>
            <desc>Final patch</desc>
            <filename>bug-54312-20110215143804.patch</filename>
            <type>text/plain</type>
            <size>57896</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTEtMDItMTUgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50
ZXJ2YWwgb24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBSZW5hbWVkIERPTVRpbWVyOjptaW5U
aW1lckludGVydmFsIGFuZCBzZXRNaW5UaW1lckludGVydmFsIHRvCisgICAgICAgIGRlZmF1bHRN
aW5UaW1lckludGVydmFsIGFuZCBzZXREZWZhdWx0TWluVGltZXJJbnRlcnZhbCwgbWFkZSB0aGVt
CisgICAgICAgIHByaXZhdGUgYW5kIGV4cG9zZWQgdGhlbSB2aWEgU2V0dGluZ3M6OmRlZmF1bHRN
aW5ET01UaW1lckludGVydmFsCisgICAgICAgIGFuZCBzZXREZWZhdWx0TWluRE9NVGltZXJJbnRl
cnZhbC4gQWRkZWQgbmV3CisgICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFs
IGFuZCBtaW5ET01UaW1lckludGVydmFsLgorCisgICAgICAgIFRoZSBzdG9yYWdlIGZvciB0aGUg
bWluaW11bSB0aW1lciBpbnRlcnZhbCBjdXJyZW50bHkgbGl2ZXMgaW4gdGhlCisgICAgICAgIFBh
Z2UsIHRob3VnaCB0aGlzIGNvdWxkIGJlIG1vdmVkIHRvIHRoZSBTZXR0aW5ncyBvYmplY3QgaWYK
KyAgICAgICAgZGVzaXJlZC4gVGhlIGFjY2Vzc29yIG1ldGhvZHMgb24gdGhlIFBhZ2UgYXJlIHBy
aXZhdGUgYW5kIGV4cG9zZWQKKyAgICAgICAgdG8gU2V0dGluZ3MgYnkgbWFraW5nIFNldHRpbmdz
IGEgZnJpZW5kLCBzbyB0aGUgYWJzdHJhY3Rpb24KKyAgICAgICAgYmFycmllciBpcyBjbGVhciBh
dCB0aGUgQVBJIGxldmVsLgorCisgICAgICAgIEFkanVzdGluZyB0aGUgaW50ZXJ2YWwgYm90aCB1
cHdhcmQgYW5kIGRvd253YXJkIG1heSBjYXVzZSB0aGUgZmlyZQorICAgICAgICB0aW1lcyBvZiB0
aGUgYWN0aXZlIHRpbWVycyBvbiB0aGUgcGFnZSB0byBiZSBhZGp1c3RlZCwgaWYgdGhleQorICAg
ICAgICB3b3VsZCBiZSBhZmZlY3RlZCBieSB0aGUgY2xhbXBpbmcgdmFsdWUuIFRoaXMgaXMgbmVl
ZGVkIHRvIHJlZHVjZQorICAgICAgICBsYXRlbmN5IHdoZW4gYnJpbmdpbmcgYSB0YWIgdG8gdGhl
IGZvcmVncm91bmQsIGluIHBhcnRpY3VsYXIgaWYKKyAgICAgICAgdGhlIG1pbmltdW0gdGltZXIg
aW50ZXJ2YWwgd2FzIGRlY3JlYXNlZCBmcm9tIGEgdmVyeSBoaWdoIHZhbHVlIHRvCisgICAgICAg
IGEgdmVyeSBsb3cgdmFsdWUuCisKKyAgICAgICAgQSBuZXcgbWV0aG9kLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCwgaGFzIGJlZW4gYWRkZWQgdG8KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIsIGltcGxlbWVudGVkIGluIGFsbCBwb3J0cyBvZiBEdW1wUmVuZGVyVHJlZSwKKyAgICAgICAg
YW5kIHVzZWQgaW4gbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICBJZGVhbGx5IGNoYW5naW5n
IHRoZSBwYWdlJ3MgbWluaW11bSB0aW1lciBpbnRlcnZhbCB3b3VsZCBhZmZlY3QKKyAgICAgICAg
ZGVkaWNhdGVkIHdvcmtlcnMsIGJ1dCB0aGlzIGlzIHRvbyBtdWNoIHRvIGRvIGluIGFuIGluaXRp
YWwgcGF0Y2gsCisgICAgICAgIHNvIGEgRklYTUUgaGFzIGJlZW4gYWRkZWQuCisKKyAgICAgICAg
VGVzdGVkIHdpdGg6CisgICAgICAgICAgLSBUaGUgbmV3IGxheW91dCB0ZXN0cyBvbiB0aGUgV2Vi
S2l0IE1hYyBhbmQgQ2hyb21pdW0gKE1hYywKKyAgICAgICAgICAgIExpbnV4KSBEUlQgcG9ydHMu
CisgICAgICAgICAgLSBIb29rZWQgdXAgdGhlIG5ldyBBUEkgaW4gQ2hyb21pdW0gYW5kIHJhbiBz
b21lIHNpbXBsZSBtYW51YWwKKyAgICAgICAgICAgIHRlc3RzLgorCisgICAgICAgIFRlc3RzOiBm
YXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5k
LXJlc2V0LXBhcnQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vdGltZXItaW5jcmVh
c2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjptaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRpbWVy
SW50ZXJ2YWwpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9N
VGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjphZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKToKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZGVmYXVsdE1pblRp
bWVySW50ZXJ2YWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnNldERlZmF1bHRNaW5U
aW1lckludGVydmFsKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptaW5pbXVtVGltZXJJbnRlcnZhbCk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjptaW5ET01UaW1lckludGVydmFsKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6YXVnbWVudEZpcmVJbnRlcnZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpUaW1lckJhc2U6OmF1Z21lbnRSZXBlYXRJbnRlcnZhbCk6CisKIDIwMTEtMDItMTUg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3ODYx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03
OTYsNiArNzk2LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRGaXhlZEZvbnRGYW1pbAog
X19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRNaW5pbXVtRm9udFNpemVFaQogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMThzZXRTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19a
TjdXZWJDb3JlOFNldHRpbmdzMThzZXRXZWJBdWRpb0VuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNl
dHRpbmdzMTltaW5ET01UaW1lckludGVydmFsRXYKIF9fWk43V2ViQ29yZThTZXR0aW5nczE5c2V0
U2hvd0RlYnVnQm9yZGVyc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250
RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczIwc2V0
RmFudGFzeUZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRQpAQCAtODI1LDYgKzgyNiw3
IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0TmVlZHNMZW9wYXJkTWEKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczI1c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MyNXNldFNob3VsZFByaW50QmFja2dyb3VuZHNFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MjVzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmU4U2V0
dGluZ3MyNmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsRXYKIF9fWk43V2ViQ29yZThTZXR0aW5n
czI2c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyNnNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI3c2V0RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRoRVJLTjNXVEY2U3RyaW5nRQpAQCAt
ODM0LDYgKzgzNiw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczI3c2V0U3BhdGlhbE5hdmlnYXQK
IF9fWk43V2ViQ29yZThTZXR0aW5nczI4c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5nc0ViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyOXNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkRWIKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI5c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRFYgorX19a
TjdXZWJDb3JlOFNldHRpbmdzMjlzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbEVkCiBfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyOXNldFdlYkFyY2hpdmVEZWJ1Z01vZGVFbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczMwc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczMxc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZEViCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0Myw2ICsyMjQzLDE0IEBA
IEtVUkwgRG9jdW1lbnQ6OnZpcnR1YWxDb21wbGV0ZVVSTChjb25zdCAKICAgICByZXR1cm4gY29t
cGxldGVVUkwodXJsKTsKIH0KIAorZG91YmxlIERvY3VtZW50OjptaW5pbXVtVGltZXJJbnRlcnZh
bCgpIGNvbnN0Cit7CisgICAgUGFnZSogcCA9IHBhZ2UoKTsKKyAgICBpZiAoIXApCisgICAgICAg
IHJldHVybiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjptaW5pbXVtVGltZXJJbnRlcnZhbCgpOwor
ICAgIHJldHVybiBwLT5zZXR0aW5ncygpLT5taW5ET01UaW1lckludGVydmFsKCk7Cit9CisKIEV2
ZW50VGFyZ2V0KiBEb2N1bWVudDo6ZXJyb3JFdmVudFRhcmdldCgpCiB7CiAgICAgcmV0dXJuIGRv
bVdpbmRvdygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDc4NjE0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMzUsNiAr
MTEzNSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBLVVJMJiB2aXJ0dWFsVVJMKCkg
Y29uc3Q7IC8vIFNhbWUgYXMgdXJsKCksIGJ1dCBuZWVkZWQgZm9yIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgdG8gaW1wbGVtZW50IGl0IHdpdGhvdXQgYSBwZXJmb3JtYW5jZSBsb3NzIGZvciBkaXJl
Y3QgY2FsbHMuCiAgICAgdmlydHVhbCBLVVJMIHZpcnR1YWxDb21wbGV0ZVVSTChjb25zdCBTdHJp
bmcmKSBjb25zdDsgLy8gU2FtZSBhcyBjb21wbGV0ZVVSTCgpIGZvciB0aGUgc2FtZSByZWFzb24g
YXMgYWJvdmUuCiAKKyAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNv
bnN0OworCiAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZVRp
dGxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwCShyZXZpc2lvbiA3ODYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJCbG9i
VVJMLmgiCisjaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJET01VUkwuaCIKICNpbmNs
dWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgpAQCAtNDEsNiArNDIs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJXb3JrZXJDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCkBAIC00MDYsNiArNDA4LDI2IEBAIEZp
bGVUaHJlYWQqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmZpbGUKIH0KICNlbmRpZgogCit2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFkanVzdE1pbmltdW1UaW1lckludGVydmFsKGRvdWJs
ZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBpZiAobWluaW11bVRpbWVySW50ZXJ2
YWwoKSAhPSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCkgeworICAgICAgICBmb3IgKFRpbWVvdXRN
YXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3RpbWVvdXRzLmJlZ2luKCk7IGl0ZXIgIT0gbV90aW1lb3V0
cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgICAgICBET01UaW1lciogdGltZXIgPSBpdGVyLT5z
ZWNvbmQ7CisgICAgICAgICAgICB0aW1lci0+YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwob2xk
TWluaW11bVRpbWVySW50ZXJ2YWwpOworICAgICAgICB9CisgICAgfQorfQorCitkb3VibGUgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6bWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdAoreworICAg
IC8vIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgdGhlIERPTVRpbWVyJ3MgZGVm
YXVsdAorICAgIC8vIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwuIEZJWE1FOiB0byBtYWtlIGl0IHdv
cmsgd2l0aCBkZWRpY2F0ZWQKKyAgICAvLyB3b3JrZXJzLCB3ZSB3aWxsIGhhdmUgdG8gb3ZlcnJp
ZGUgaXQgaW4gdGhlIGFwcHJvcHJpYXRlCisgICAgLy8gc3ViY2xhc3MsIGFuZCBwcm92aWRlIGEg
d2F5IHRvIGVudW1lcmF0ZSBhIERvY3VtZW50J3MgZGVkaWNhdGVkCisgICAgLy8gd29ya2VycyBz
byB3ZSBjYW4gdXBkYXRlIHRoZW0gYWxsLgorICAgIHJldHVybiBTZXR0aW5nczo6ZGVmYXVsdE1p
bkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6
flRhc2soKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCShyZXZpc2lvbiA3ODYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0b3BGaWxlVGhyZWFkKCk7CiAjZW5kaWYK
IAorICAgICAgICAvLyBJbnRlcnZhbCBpcyBpbiBzZWNvbmRzLgorICAgICAgICB2b2lkIGFkanVz
dE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBvbGRNaW5pbXVtVGltZXJJbnRlcnZhbCk7Cisg
ICAgICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CisKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIEV4cGxpY2l0bHkgb3ZlcnJpZGUgdGhlIHNlY3VyaXR5
IG9yaWdpbiBmb3IgdGhpcyBzY3JpcHQgY29udGV4dC4KICAgICAgICAgLy8gTm90ZTogSXQgaXMg
ZGFuZ2Vyb3VzIHRvIGNoYW5nZSB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIGEgc2NyaXB0IGNvbnRl
eHQKQEAgLTE3Niw3ICsxODAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
bV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzOwogICAgICAgICBib29sIG1faW5EZXN0cnVjdG9y
OwogCi0gICAgICAgIEhhc2hNYXA8aW50LCBET01UaW1lcio+IG1fdGltZW91dHM7CisgICAgICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gVGltZW91dE1hcDsKKyAgICAgICAgVGlt
ZW91dE1hcCBtX3RpbWVvdXRzOwogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX3B1YmxpY0Jsb2JVUkxzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAJ
KHJldmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBpbnQgbWF4VGltZXJOZXN0aW5nTGV2ZWwgPSA1Owogc3RhdGljIGNvbnN0IGRv
dWJsZSBvbmVNaWxsaXNlY29uZCA9IDAuMDAxOwotZG91YmxlIERPTVRpbWVyOjpzX21pblRpbWVy
SW50ZXJ2YWwgPSAwLjAxMDsgLy8gMTAgbWlsbGlzZWNvbmRzCitkb3VibGUgRE9NVGltZXI6OnNf
bWluRGVmYXVsdFRpbWVySW50ZXJ2YWwgPSAwLjAxMDsgLy8gMTAgbWlsbGlzZWNvbmRzCiAKIHN0
YXRpYyBpbnQgdGltZXJOZXN0aW5nTGV2ZWwgPSAwOwogCiBET01UaW1lcjo6RE9NVGltZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+
IGFjdGlvbiwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKICAgICA6IFN1c3BlbmRhYmxl
VGltZXIoY29udGV4dCkKICAgICAsIG1fYWN0aW9uKGFjdGlvbikKKyAgICAsIG1fb3JpZ2luYWxU
aW1lb3V0KHRpbWVvdXQpCiB7CiAgICAgc3RhdGljIGludCBsYXN0VXNlZFRpbWVvdXRJZCA9IDA7
CiAgICAgKytsYXN0VXNlZFRpbWVvdXRJZDsKQEAgLTU4LDEwICs1OSw3IEBAIERPTVRpbWVyOjpE
T01UaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXgKIAogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+YWRkVGltZW91dChtX3RpbWVvdXRJZCwgdGhpcyk7CiAKLSAgICBkb3VibGUgaW50ZXJ2
YWxNaWxsaXNlY29uZHMgPSBtYXgob25lTWlsbGlzZWNvbmQsIHRpbWVvdXQgKiBvbmVNaWxsaXNl
Y29uZCk7Ci0KLSAgICBpZiAoaW50ZXJ2YWxNaWxsaXNlY29uZHMgPCBzX21pblRpbWVySW50ZXJ2
YWwgJiYgbV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpCi0gICAgICAgIGlu
dGVydmFsTWlsbGlzZWNvbmRzID0gc19taW5UaW1lckludGVydmFsOworICAgIGRvdWJsZSBpbnRl
cnZhbE1pbGxpc2Vjb25kcyA9IGludGVydmFsQ2xhbXBlZFRvTWluaW11bSh0aW1lb3V0LCBjb250
ZXh0LT5taW5pbXVtVGltZXJJbnRlcnZhbCgpKTsKICAgICBpZiAoc2luZ2xlU2hvdCkKICAgICAg
ICAgc3RhcnRPbmVTaG90KGludGVydmFsTWlsbGlzZWNvbmRzKTsKICAgICBlbHNlCkBAIC0xMDgs
MTAgKzEwNiwxMSBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICAvLyBTaW1wbGUgY2Fz
ZSBmb3Igbm9uLW9uZS1zaG90IHRpbWVycy4KICAgICBpZiAoaXNBY3RpdmUoKSkgewotICAgICAg
ICBpZiAocmVwZWF0SW50ZXJ2YWwoKSAmJiByZXBlYXRJbnRlcnZhbCgpIDwgc19taW5UaW1lcklu
dGVydmFsKSB7CisgICAgICAgIGRvdWJsZSBtaW5pbXVtSW50ZXJ2YWwgPSBjb250ZXh0LT5taW5p
bXVtVGltZXJJbnRlcnZhbCgpOworICAgICAgICBpZiAocmVwZWF0SW50ZXJ2YWwoKSAmJiByZXBl
YXRJbnRlcnZhbCgpIDwgbWluaW11bUludGVydmFsKSB7CiAgICAgICAgICAgICBtX25lc3RpbmdM
ZXZlbCsrOwogICAgICAgICAgICAgaWYgKG1fbmVzdGluZ0xldmVsID49IG1heFRpbWVyTmVzdGlu
Z0xldmVsKQotICAgICAgICAgICAgICAgIGF1Z21lbnRSZXBlYXRJbnRlcnZhbChzX21pblRpbWVy
SW50ZXJ2YWwgLSByZXBlYXRJbnRlcnZhbCgpKTsKKyAgICAgICAgICAgICAgICBhdWdtZW50UmVw
ZWF0SW50ZXJ2YWwobWluaW11bUludGVydmFsIC0gcmVwZWF0SW50ZXJ2YWwoKSk7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBObyBhY2Nlc3MgdG8gbWVtYmVyIHZhcmlhYmxlcyBhZnRlciB0aGlz
IHBvaW50LCBpdCBjYW4gZGVsZXRlIHRoZSB0aW1lci4KQEAgLTE1MCw0ICsxNDksMjIgQEAgdm9p
ZCBET01UaW1lcjo6c3RvcCgpCiAgICAgbV9hY3Rpb24uY2xlYXIoKTsKIH0KIAordm9pZCBET01U
aW1lcjo6YWRqdXN0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG9sZE1pbmltdW1UaW1lcklu
dGVydmFsKQoreworICAgIGlmIChtX25lc3RpbmdMZXZlbCA8IG1heFRpbWVyTmVzdGluZ0xldmVs
KQorICAgICAgICByZXR1cm47CisgICAgZG91YmxlIHByZXZpb3VzQ2xhbXBlZEludGVydmFsID0g
aW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKG1fb3JpZ2luYWxUaW1lb3V0LCBvbGRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCk7CisgICAgZG91YmxlIG5ld0NsYW1wZWRJbnRlcnZhbCA9IGludGVydmFsQ2xh
bXBlZFRvTWluaW11bShtX29yaWdpbmFsVGltZW91dCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5taW5pbXVtVGltZXJJbnRlcnZhbCgpKTsKKyAgICBhdWdtZW50RmlyZUludGVydmFsKG5ld0Ns
YW1wZWRJbnRlcnZhbCAtIHByZXZpb3VzQ2xhbXBlZEludGVydmFsKTsKK30KKworZG91YmxlIERP
TVRpbWVyOjppbnRlcnZhbENsYW1wZWRUb01pbmltdW0oaW50IHRpbWVvdXQsIGRvdWJsZSBtaW5p
bXVtVGltZXJJbnRlcnZhbCkgY29uc3QKK3sKKyAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29u
ZHMgPSBtYXgob25lTWlsbGlzZWNvbmQsIHRpbWVvdXQgKiBvbmVNaWxsaXNlY29uZCk7CisKKyAg
ICBpZiAoaW50ZXJ2YWxNaWxsaXNlY29uZHMgPCBtaW5pbXVtVGltZXJJbnRlcnZhbCAmJiBtX25l
c3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCkKKyAgICAgICAgaW50ZXJ2YWxNaWxs
aXNlY29uZHMgPSBtaW5pbXVtVGltZXJJbnRlcnZhbDsKKyAgICByZXR1cm4gaW50ZXJ2YWxNaWxs
aXNlY29uZHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVRpbWVyLmgJKHJldmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1l
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKyAgICBjbGFzcyBTZXR0aW5nczsKKwogICAgIGNsYXNzIERPTVRpbWVyIDogcHVibGlj
IFN1c3BlbmRhYmxlVGltZXIgeworICAgICAgICBmcmllbmQgY2xhc3MgU2V0dGluZ3M7CiAgICAg
cHVibGljOgogICAgICAgICB2aXJ0dWFsIH5ET01UaW1lcigpOwogICAgICAgICAvLyBDcmVhdGVz
IGEgbmV3IHRpbWVyIG93bmVkIGJ5IHNwZWNpZmllZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBz
dGFydHMgaXQKQEAgLTQ2LDE4ICs0OSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCk7CiAKLSAgICAgICAgLy8gVGhlIGxvd2VzdCBhbGxvd2FibGUgdGltZXIgc2V0dGluZyAo
aW4gc2Vjb25kcywgMC4wMDEgPT0gMSBtcykuCi0gICAgICAgIHN0YXRpYyBkb3VibGUgbWluVGlt
ZXJJbnRlcnZhbCgpIHsgcmV0dXJuIHNfbWluVGltZXJJbnRlcnZhbDsgfQotICAgICAgICBzdGF0
aWMgdm9pZCBzZXRNaW5UaW1lckludGVydmFsKGRvdWJsZSB2YWx1ZSkgeyBzX21pblRpbWVySW50
ZXJ2YWwgPSB2YWx1ZTsgfQorICAgICAgICAvLyBBZGp1c3QgdG8gYSBjaGFuZ2UgaW4gdGhlIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQncyBtaW5pbXVtIHRpbWVyIGludGVydmFsLgorICAgICAgICAv
LyBUaGlzIGFsbG93cyB0aGUgbWluaW11bSBhbGxvd2FibGUgaW50ZXJ2YWwgdGltZSB0byBiZSBj
aGFuZ2VkIGluIHJlc3BvbnNlCisgICAgICAgIC8vIHRvIGV2ZW50cyBsaWtlIG1vdmluZyBhIHRh
YiB0byB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgdm9pZCBhZGp1c3RNaW5pbXVtVGltZXJJbnRl
cnZhbChkb3VibGUgb2xkTWluaW11bVRpbWVySW50ZXJ2YWwpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgRE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NPd25QdHI8U2NoZWR1
bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBmaXJlZCgpOwogCisgICAgICAgIGRvdWJsZSBpbnRlcnZhbENsYW1wZWRUb01pbmlt
dW0oaW50IHRpbWVvdXQsIGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkgY29uc3Q7CisKKyAg
ICAgICAgLy8gVGhlIGRlZmF1bHQgbWluaW11bSBhbGxvd2FibGUgdGltZXIgc2V0dGluZyAoaW4g
c2Vjb25kcywgMC4wMDEgPT0gMSBtcykuCisgICAgICAgIC8vIFRoZXNlIGFyZSBvbmx5IG1vZGlm
aWVkIHZpYSBzdGF0aWMgbWV0aG9kcyBpbiBTZXR0aW5ncy4KKyAgICAgICAgc3RhdGljIGRvdWJs
ZSBkZWZhdWx0TWluVGltZXJJbnRlcnZhbCgpIHsgcmV0dXJuIHNfbWluRGVmYXVsdFRpbWVySW50
ZXJ2YWw7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1pblRpbWVySW50ZXJ2YWwo
ZG91YmxlIHZhbHVlKSB7IHNfbWluRGVmYXVsdFRpbWVySW50ZXJ2YWwgPSB2YWx1ZTsgfQorCiAg
ICAgICAgIGludCBtX3RpbWVvdXRJZDsKICAgICAgICAgaW50IG1fbmVzdGluZ0xldmVsOwogICAg
ICAgICBPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBtX2FjdGlvbjsKLSAgICAgICAgc3RhdGljIGRv
dWJsZSBzX21pblRpbWVySW50ZXJ2YWw7CisgICAgICAgIGludCBtX29yaWdpbmFsVGltZW91dDsK
KyAgICAgICAgc3RhdGljIGRvdWJsZSBzX21pbkRlZmF1bHRUaW1lckludGVydmFsOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNp
b24gNzg2MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjEsNiArMTYxLDcgQEAgUGFnZTo6UGFnZShjb25zdCBQYWdlQ2xpZW50cyYgcGFnZUNs
aWVudAogICAgICwgbV9jdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplKC0xKQogICAgICwgbV9j
YW5TdGFydE1lZGlhKHRydWUpCiAgICAgLCBtX3ZpZXdNb2RlKFZpZXdNb2RlV2luZG93ZWQpCisg
ICAgLCBtX21pbmltdW1UaW1lckludGVydmFsKFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJ
bnRlcnZhbCgpKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBu
ZXcgSGFzaFNldDxQYWdlKj47CkBAIC04MzIsNiArODMzLDIxIEBAIGJvb2wgUGFnZTo6amF2YVNj
cmlwdFVSTHNBcmVBbGxvd2VkKCkgY28KICAgICByZXR1cm4gbV9qYXZhU2NyaXB0VVJMc0FyZUFs
bG93ZWQ7CiB9CiAKK3ZvaWQgUGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1p
bmltdW1UaW1lckludGVydmFsKQoreworICAgIGRvdWJsZSBvbGRUaW1lckludGVydmFsID0gbV9t
aW5pbXVtVGltZXJJbnRlcnZhbDsKKyAgICBtX21pbmltdW1UaW1lckludGVydmFsID0gbWluaW11
bVRpbWVySW50ZXJ2YWw7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpKSB7
CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRUaW1lckludGVydmFsKTsKKyAg
ICB9Cit9CisKK2RvdWJsZSBQYWdlOjptaW5pbXVtVGltZXJJbnRlcnZhbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7Cit9CisKICNpZiBFTkFCTEUoSU5QVVRf
U1BFRUNIKQogU3BlZWNoSW5wdXQqIFBhZ2U6OnNwZWVjaElucHV0KCkKIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCShyZXZpc2lvbiA3ODYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIFBhZ2UgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIFNldHRpbmdzOwogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZv
aWQgc2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsY0ZvckFsbFBhZ2VzKCk7CiAKQEAgLTI5Nyw2ICsy
OTgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgTWVkaWFDYW5TdGFydExpc3Rl
bmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CiAKKyAgICAgICAgdm9pZCBzZXRN
aW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpOworICAgICAgICBkb3VibGUgbWluaW11bVRpbWVy
SW50ZXJ2YWwoKSBjb25zdDsKKwogICAgICAgICBPd25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAg
ICAgICAgT3duUHRyPFNlbGVjdGlvbkNvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxlcjsK
IApAQCAtMzg1LDYgKzM4OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVmlld01v
ZGUgbV92aWV3TW9kZTsKIAogICAgICAgICBWaWV3cG9ydEFyZ3VtZW50cyBtX3ZpZXdwb3J0QXJn
dW1lbnRzOworCisgICAgICAgIGRvdWJsZSBtX21pbmltdW1UaW1lckludGVydmFsOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CShyZXZpc2lvbiA3ODYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzQsOSArNDM0LDI0IEBAIHZvaWQgU2V0dGluZ3M6OnNldERPTVBh
c3RlQWxsb3dlZChib29sIEQKICAgICBtX2lzRE9NUGFzdGVBbGxvd2VkID0gRE9NUGFzdGVBbGxv
d2VkOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbChk
b3VibGUgaW50ZXJ2YWwpCit7CisgICAgRE9NVGltZXI6OnNldERlZmF1bHRNaW5UaW1lckludGVy
dmFsKGludGVydmFsKTsKK30KKworZG91YmxlIFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJ
bnRlcnZhbCgpCit7CisgICAgcmV0dXJuIERPTVRpbWVyOjpkZWZhdWx0TWluVGltZXJJbnRlcnZh
bCgpOworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKGRvdWJsZSBp
bnRlcnZhbCkKIHsKLSAgICBET01UaW1lcjo6c2V0TWluVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7
CisgICAgbV9wYWdlLT5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisKK2Rv
dWJsZSBTZXR0aW5nczo6bWluRE9NVGltZXJJbnRlcnZhbCgpCit7CisgICAgcmV0dXJuIG1fcGFn
ZS0+bWluaW11bVRpbWVySW50ZXJ2YWwoKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0VXNlc1Bh
Z2VDYWNoZShib29sIHVzZXNQYWdlQ2FjaGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShy
ZXZpc2lvbiA3ODYxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAzLDggKzIwMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgc2V0RE9NUGFzdGVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGlzRE9NUGFzdGVB
bGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RPTVBhc3RlQWxsb3dlZDsgfQogICAgICAgICAK
LSAgICAgICAgc3RhdGljIHZvaWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbChkb3VibGUpOyAvLyBJ
bnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy4KKyAgICAgICAgc3RhdGljIHZvaWQgc2V0RGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoZG91YmxlKTsgLy8gSW50ZXJ2YWwgc3BlY2lmaWVkIGlu
IHNlY29uZHMuCisgICAgICAgIHN0YXRpYyBkb3VibGUgZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2
YWwoKTsKICAgICAgICAgCisgICAgICAgIHZvaWQgc2V0TWluRE9NVGltZXJJbnRlcnZhbChkb3Vi
bGUpOyAvLyBQZXItcGFnZTsgaW5pdGlhbGl6ZWQgdG8gZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAg
ZG91YmxlIG1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKKwogICAgICAgICB2b2lkIHNldFVzZXNQYWdl
Q2FjaGUoYm9vbCk7CiAgICAgICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc1BhZ2VDYWNoZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgJKHJldmlz
aW9uIDc4NjE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsOCBAQCBwdWJsaWM6CiAgICAgZG91YmxlIG5leHRGaXJlSW50ZXJ2
YWwoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZWF0SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBt
X3JlcGVhdEludGVydmFsOyB9CiAKLSAgICB2b2lkIGF1Z21lbnRSZXBlYXRJbnRlcnZhbChkb3Vi
bGUgZGVsdGEpIHsgc2V0TmV4dEZpcmVUaW1lKG1fbmV4dEZpcmVUaW1lICsgZGVsdGEpOyBtX3Jl
cGVhdEludGVydmFsICs9IGRlbHRhOyB9CisgICAgdm9pZCBhdWdtZW50RmlyZUludGVydmFsKGRv
dWJsZSBkZWx0YSkgeyBzZXROZXh0RmlyZVRpbWUobV9uZXh0RmlyZVRpbWUgKyBkZWx0YSk7IH0K
KyAgICB2b2lkIGF1Z21lbnRSZXBlYXRJbnRlcnZhbChkb3VibGUgZGVsdGEpIHsgYXVnbWVudEZp
cmVJbnRlcnZhbChkZWx0YSk7IG1fcmVwZWF0SW50ZXJ2YWwgKz0gZGVsdGE7IH0KIAogICAgIHN0
YXRpYyB2b2lkIGZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3ODYxNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAyLTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJA
Z29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5pbXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVy
LXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU0MzEyCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorCiAyMDExLTAyLTE1ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgV2Vi
UGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIG1fcGFnZS0+c2V0R3Jv
dXBOYW1lKG1fcGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpOwogCiAgICAgcGxhdGZvcm1Jbml0aWFs
aXplKCk7Ci0gICAgU2V0dGluZ3M6OnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAg
IFNldHRpbmdzOjpzZXREZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgwLjAwNCk7CiAKICAgICBt
X2RyYXdpbmdBcmVhID0gRHJhd2luZ0FyZWE6OmNyZWF0ZSh0aGlzLCBwYXJhbWV0ZXJzKTsKICAg
ICBtX21haW5GcmFtZSA9IFdlYkZyYW1lOjpjcmVhdGVNYWluRnJhbWUodGhpcyk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNzg2MTUpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEx
LTAyLTE1ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBjb250cm9sbGluZyBtaW5p
bXVtIERPTVRpbWVyIGludGVydmFsIG9uIGEgcGVyLXBhZ2UgYmFzaXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MzEyCisKKyAgICAgICAgKiBwdWJs
aWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgICAtIEFkZGVkIHNldE1pbmltdW1UaW1lckludGVy
dmFsLgorICAgICAgICAqIHNyYy9XZWJLaXQuY3BwOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplKToKKyAgICAgICAgICAtIEFkZGVkIEZJWE1FIHRvIHJlbW92ZSBzZXR0aW5nIG9mIHBhZ2Un
cyBkZWZhdWx0IHRpbWVyIGludGVydmFsLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldE1pbmltdW1UaW1lcklu
dGVydmFsKToKKyAgICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgb24gV2ViU2V0dGlu
Z3MuCisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDExLTAyLTE1ICBKb2No
ZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEplcmVteSBPcmxvdy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2V0dGluZ3MuaAkocmV2aXNpb24gNzg2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVu
YWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bChkb3VibGUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIH5XZWJTZXR0aW5ncygpIHsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCShyZXZpc2lvbiA3ODYxNCkKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdC5o
IgogCi0jaW5jbHVkZSAiRE9NVGltZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgpAQCAtNzEsNyAr
NzEsOSBAQCB2b2lkIGluaXRpYWxpemUoV2ViS2l0Q2xpZW50KiB3ZWJLaXRDbGllCiAgICAgLy8g
Y29kZWQgd2Vic2l0ZXMgb3V0IHRoZXJlIHdoaWNoIGRvIGNyZWF0ZSBDUFUtc3Bpbm5pbmcgbG9v
cHMuICBVc2luZwogICAgIC8vIDRtcyBwcmV2ZW50cyB0aGUgQ1BVIGZyb20gc3Bpbm5pbmcgdG9v
IGJ1c2lseSBhbmQgcHJvdmlkZXMgYSBiYWxhbmNlCiAgICAgLy8gYmV0d2VlbiBDUFUgc3Bpbm5p
bmcgYW5kIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnRlcnZhbCB0aW1lci4KLSAgICBXZWJDb3Jl
OjpET01UaW1lcjo6c2V0TWluVGltZXJJbnRlcnZhbCgwLjAwNCk7CisgICAgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIGNhbGwgb25jZSBDaHJvbWl1bSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHNldAorICAg
IC8vIHRoaXMgZm9yIGFsbCBwYWdlcyB1c2luZyB0aGUgbmV3IFdlYlNldHRpbmdzIEFQSS4KKyAg
ICBXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoMC4wMDQp
OwogCiAgICAgLy8gVGhlcmUgYXJlIHNvbWUgY29kZSBwYXRocyAoZm9yIGV4YW1wbGUsIHJ1bm5p
bmcgV2ViS2l0IGluIHRoZSBicm93c2VyCiAgICAgLy8gcHJvY2VzcyBhbmQgY2FsbGluZyBpbnRv
IExvY2FsU3RvcmFnZSBiZWZvcmUgYW55dGhpbmcgZWxzZSkgd2hlcmUgdGhlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHJldmlzaW9u
IDc4NjE0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDQgKzM0OSw5IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRJbnRlcmFjdGl2ZUZvcm0KICAgICBtX3NldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1W
YWxpZGF0aW9uRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBtX3NldHRpbmdz
LT5zZXRNaW5ET01UaW1lckludGVydmFsKGludGVydmFsKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuaAkocmV2aXNpb24gNzg2MTQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKIAogcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHJldmlzaW9uIDc4NjE1KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDItMTUgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwg
b24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBs
ZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVy
SW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVm
YXVsdE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oOgorCiAyMDExLTAyLTE1ICBDaHJpc3RpYW4gRHl3
YW4gIDxjaHJpc3RpYW5AbGFuZWRvLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBH
dXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJl
dmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUg
IndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCkBAIC02NDIsMyArNjQzLDEyIEBAIGJvb2wgRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpmaW5kU3RyaW4KICAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+
ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHRhcmdldFN0cmluZyksIGZpbmRPcHRpb25zKTsK
IH0KIAorZG91YmxlIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1l
ckludGVydmFsKCkKK3sKKyAgICByZXR1cm4gU2V0dGluZ3M6OmRlZmF1bHRNaW5ET01UaW1lcklu
dGVydmFsKCk7Cit9CisKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBkb3VibGUgaW50ZXJ2YWwpCit7
CisgICAgY29yZSh3ZWJWaWV3KS0+c2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChp
bnRlcnZhbCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAkocmV2aXNpb24gNzg2MTQp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uKFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiB0
ZXh0KTsKICAgICBzdGF0aWMgYm9vbCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShXZWJLaXRX
ZWJWaWV3KiwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBHZGtSZWN0YW5nbGUqKTsKICAgICBz
dGF0aWMgYm9vbCBzZWxlY3RlZFJhbmdlKFdlYktpdFdlYlZpZXcqLCBpbnQqIHN0YXJ0LCBpbnQq
IGVuZCk7CisgICAgc3RhdGljIGRvdWJsZSBkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKTsg
Ly8gTm90IHJlYWxseSB0aWVkIHRvIFdlYlZpZXcKKyAgICBzdGF0aWMgdm9pZCBzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChXZWJLaXRXZWJWaWV3KiwgZG91YmxlKTsKIAogICAgIC8vIEdDCiAgICAg
c3RhdGljIHZvaWQgZ2NDb2xsZWN0SmF2YXNjcmlwdE9iamVjdHMoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDc4NjE1KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDItMTUgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwg
b24gYSBwZXItcGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQzMTIKKworICAgICAgICBBZGRlZCBuZWVkZWQgbWV0aG9kcyB0byBpbXBs
ZW1lbnQgTGF5b3V0VGVzdENvbnRyb2xsZXIncyBuZXcKKyAgICAgICAgc2V0TWluaW11bVRpbWVy
SW50ZXJ2YWwgbWV0aG9kLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1l
OnVzZXNEb2N1bWVudFZpZXdzOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9kZWZhdWx0TWluaW11
bVRpbWVySW50ZXJ2YWxdKToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0TWluaW11bVRpbWVySW50
ZXJ2YWw6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDExLTAx
LTI2ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNyArNjk0LDcgQEAgLSAodm9pZClfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBv
dXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KICAgICAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bml0aWFsaXplKCk7Ci0gICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAu
MDA0KTsKKyAgICAgICAgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAu
MDA0KTsKIAogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgIH0K
QEAgLTI3MzgsNiArMjczOCwxNyBAQCArICh2b2lkKV9zZXRMb2FkUmVzb3VyY2VzU2VyaWFsbHk6
KEJPT0wpCiAgICAgcmVzb3VyY2VMb2FkU2NoZWR1bGVyKCktPnNldFNlcmlhbExvYWRpbmdFbmFi
bGVkKHNlcmlhbGl6ZSk7CiB9CiAKKysgKGRvdWJsZSlfZGVmYXVsdE1pbmltdW1UaW1lckludGVy
dmFsCit7CisgICAgcmV0dXJuIFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgp
OworfQorCistICh2b2lkKV9zZXRNaW5pbXVtVGltZXJJbnRlcnZhbDooZG91YmxlKWludGVydmFs
SW5TZWNvbmRzCit7CisgICAgaWYgKF9wcml2YXRlLT5wYWdlKQorICAgICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbEluU2Vjb25k
cyk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIF9XZWJTYWZlRm9yd2FyZGVyCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiA3
ODYxNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcxLDYgKzU3MSwyMyBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8g
dGhlIEFQSS4KIC8vIERlcHJlY2F0ZWQuIFVzZSBmaW5kU3RyaW5nLgogLSAoQk9PTClzZWFyY2hG
b3I6KE5TU3RyaW5nICopc3RyaW5nIGRpcmVjdGlvbjooQk9PTClmb3J3YXJkIGNhc2VTZW5zaXRp
dmU6KEJPT0wpY2FzZUZsYWcgd3JhcDooQk9PTCl3cmFwRmxhZyBzdGFydEluU2VsZWN0aW9uOihC
T09MKXN0YXJ0SW5TZWxlY3Rpb247CiAKKy8qIQorICAgIEBtZXRob2QgZGVmYXVsdE1pbmltdW1U
aW1lckludGVydmFsCisgICAgQGRpc2N1c3Npb24gU2hvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlz
IHRvIHRoZSBwdWJsaWMgQVBJLgorICAgIEByZXN1bHQgUmV0dXJucyB0aGUgZGVmYXVsdCBtaW5p
bXVtIHRpbWVyIGludGVydmFsLgorKi8KKysgKGRvdWJsZSlfZGVmYXVsdE1pbmltdW1UaW1lcklu
dGVydmFsOworCisvKiEKKyAgICBAbWV0aG9kIHNldE1pbmltdW1UaW1lckludGVydmFsOgorICAg
IEBkaXNjdXNzaW9uIFNldHMgdGhlIG1pbmltdW0gaW50ZXJ2YWwgZm9yIERPTVRpbWVycyBpbiB0
aGlzIFdlYlZpZXcuIFRoaXMgbWV0aG9kIGlzCisgICAgZXhwb3NlZCBoZXJlIGluIHRoZSBNYWMg
cG9ydCByYXRoZXIgdGhhbiB0aHJvdWdoIFdlYlByZWZlcmVuY2VzICh3aGljaCBnZW5lcmFsbHkK
KyAgICBnb3Zlcm5zIFNldHRpbmdzKSBiZWNhdXNlIHRoaXMgdmFsdWUgaXMgc29tZXRoaW5nIGFk
anVzdGVkIGF0IHJ1biB0aW1lLCBub3Qgc2V0CisgICAgZ2xvYmFsbHkgdmlhICJkZWZhdWx0cyB3
cml0ZSIuIFNob3VsZCBjb25zaWRlciBhZGRpbmcgdGhpcyB0byB0aGUgcHVibGljIEFQSS4KKyAg
ICBAcGFyYW0gaW50ZXJ2YWxJblNlY29uZHMgVGhlIG5ldyBtaW5pbXVtIHRpbWVyIGludGVydmFs
LCBpbiBzZWNvbmRzLgorKi8KKy0gKHZvaWQpX3NldE1pbmltdW1UaW1lckludGVydmFsOihkb3Vi
bGUpaW50ZXJ2YWxJblNlY29uZHM7CisKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChXZWJW
aWV3UHJpbnRpbmdQcml2YXRlKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjE1KQor
KysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMS0wMi0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgY29udHJv
bGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1wYWdlIGJhc2lzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDMxMgorCisgICAg
ICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlvdXRUZXN0Q29udHJvbGxl
cidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBtZXRob2QuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaDoK
KwogMjAxMS0wMS0yNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cAkocmV2aXNpb24gNzg2MTQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQyLDYgKzk0Miwy
MSBAQCBRU3RyaW5nTGlzdCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29uCiAgICAgcmV0dXJu
IFFTdHJpbmdMaXN0KCk7CiAjZW5kaWYKIH0KKworZG91YmxlIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwoKQoreworICAgIHJldHVybiBTZXR0aW5n
czo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKK30KKwordm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoUVdlYlBhZ2UqIHBhZ2UsIGRvdWJs
ZSBpbnRlcnZhbCkKK3sKKyAgICBQYWdlKiBjb3JlUGFnZSA9IFFXZWJQYWdlUHJpdmF0ZTo6Y29y
ZShwYWdlKTsKKyAgICBpZiAoIWNvcmVQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBjb3Jl
UGFnZS0+c2V0dGluZ3MoKS0+c2V0TWluRE9NVGltZXJJbnRlcnZhbChpbnRlcnZhbCk7Cit9CisK
IC8vIFByb3ZpZGUgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXNseSBleHBv
cnRlZCBwcml2YXRlIHN5bWJvbHMgYXMgb2YgUXRXZWJLaXQgNC42IHJlbGVhc2UKIAogdm9pZCBR
V0VCS0lUX0VYUE9SVCBxdF9yZXN1bWVBY3RpdmVET01PYmplY3RzKFFXZWJGcmFtZSogZnJhbWUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCShyZXZpc2lvbiA3ODYxNCkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTg5LDYgKzE4OSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUVN0cmluZyByZXNw
b25zZU1pbWVUeXBlKFFXZWJGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIGFkZFVSTFRvUmVkaXJl
Y3QoY29uc3QgUVN0cmluZyYgb3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbik7CiAg
ICAgc3RhdGljIFFTdHJpbmdMaXN0IGNvbnRleHRNZW51KFFXZWJQYWdlKik7CisKKyAgICBzdGF0
aWMgZG91YmxlIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgpOyAvLyBOb3QgcmVhbGx5IHRp
ZWQgdG8gV2ViVmlldworICAgIHN0YXRpYyB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKFFX
ZWJQYWdlKiwgZG91YmxlKTsKIH07CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2
aXNpb24gNzg2MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wMi0xNSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBhIHBlci1w
YWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NDMxMgorCisgICAgICAgIEFkZGVkIG5lZWRlZCBtZXRob2RzIHRvIGltcGxlbWVudCBMYXlv
dXRUZXN0Q29udHJvbGxlcidzIG5ldworICAgICAgICBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCBt
ZXRob2QuIEluY2x1ZGVzIHdoaXRlc3BhY2Utb25seSBjaGFuZ2UgdG8KKyAgICAgICAgV2ViS2l0
LmlkbCB0byB0cmlnZ2VyIHByb3BlciByZWJ1aWxkIG9uIGJvdHM7IHdpbGwgYmUgcmVtb3ZlZCBp
bgorICAgICAgICBzdWJzZXF1ZW50IGNoZWNraW4uCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lX
ZWJWaWV3UHJpdmF0ZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9XZWJLaXQuaWRsOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6Cisg
ICAgICAgIChXZWJWaWV3OjpkZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAo
V2ViVmlldzo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAqIFdlYlZpZXcuaDoK
KwogMjAxMS0wMS0yNiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
cmV2aXNpb24gNzg2MTQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYxMSw3ICsyNjExLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3Ojppbml0VwogI2VuZGlmCiAgICAgICAgIFdlYktpdFNldEFwcGxpY2F0aW9uQ2FjaGVQ
YXRoSWZOZWNlc3NhcnkoKTsKICAgICAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFs
aXplKCk7Ci0gICAgICAgIFNldHRpbmdzOjpzZXRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsK
KyAgICAgICAgU2V0dGluZ3M6OnNldERlZmF1bHRNaW5ET01UaW1lckludGVydmFsKDAuMDA0KTsK
IAogICAgICAgICBkaWRPbmVUaW1lSW5pdGlhbGl6YXRpb24gPSB0cnVlOwogICAgICB9CkBAIC02
NjIwLDMgKzY2MjAsMTcgQEAgUGFnZSogY29yZShJV2ViVmlldyogaVdlYlZpZXcpCiAKICAgICBy
ZXR1cm4gcGFnZTsKIH0KKworSFJFU1VMVCBXZWJWaWV3OjpkZWZhdWx0TWluaW11bVRpbWVySW50
ZXJ2YWwoZG91YmxlKiBpbnRlcnZhbCkKK3sKKyAgICBpZiAoIWludGVydmFsKQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOworICAgICppbnRlcnZhbCA9IFNldHRpbmdzOjpkZWZhdWx0TWluRE9N
VGltZXJJbnRlcnZhbCgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFdlYlZpZXc6
OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBwYWdlKCkt
PnNldHRpbmdzKCktPnNldE1pbkRPTVRpbWVySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgIHJldHVy
biBTX09LOworfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNzg2MTQpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxMyw2ICs4MTMsMTIg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRE
aXNwbGF5SXNTeW5jaHJvbm91cygpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZhbCgKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBkb3VibGUgKmludGVydmFsKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgKKyAgICAgICAgLyogW2luXSAqLyBk
b3VibGUpOworCiAgICAgLy8gV2ViVmlldwogICAgIGJvb2wgc2hvdWxkVXNlRW1iZWRkZWRWaWV3
KGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwJKHJldmlzaW9uIDc4
NjE0KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNCArMjM5LDIxIEBAIGludGVyZmFjZSBJV2ViVmlld1By
aXZhdGUgOiBJVW5rbm93bgogICAgIFtsb2NhbF0gSFJFU1VMVCByZXBvcnRFeGNlcHRpb24oW2lu
XSBKU0NvbnRleHRSZWYgY29udGV4dCwgW2luXSBKU1ZhbHVlUmVmIGV4Y2VwdGlvbik7CiAKICAg
ICBbbG9jYWxdIEhSRVNVTFQgZWxlbWVudEZyb21KUyhbaW5dIEpTQ29udGV4dFJlZiBjb250ZXh0
LCBbaW5dIEpTVmFsdWVSZWYgbm9kZU9iamVjdCwgW291dCwgcmV0dmFsXSBJRE9NRWxlbWVudCoq
IGVsZW1lbnQpOworCisKKyAgICAvKiEKKyAgICAgICAgQG1ldGhvZCBkZWZhdWx0TWluaW11bVRp
bWVySW50ZXJ2YWwKKyAgICAgICAgQGRpc2N1c3Npb24gUmV0dXJucyB0aGUgZGVmYXVsdCBtaW5p
bXVtIGludGVydmFsIGZvciBET01UaW1lcnMgb24gYWxsIHBhZ2VzLCBub3QKKyAgICAgICAganVz
dCB0aGUgb25lIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlY2VpdmVyLgorICAgICAgICAtIChkb3Vi
bGUpaW50ZXJ2YWw7CisgICAgKi8KKyAgICBIUkVTVUxUIGRlZmF1bHRNaW5pbXVtVGltZXJJbnRl
cnZhbChbb3V0LCByZXR2YWxdIGRvdWJsZSogaW50ZXJ2YWwpOworCisgICAgLyohCisgICAgICAg
IEBtZXRob2Qgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwKKyAgICAgICAgQGRpc2N1c3Npb24gU2V0
cyB0aGUgbWluaW11bSBpbnRlcnZhbCBmb3IgRE9NVGltZXJzIG9uIHRoZSB3ZWIgcGFnZSBhc3Nv
Y2lhdGVkCisgICAgICAgIHdpdGggdGhlIHJlY2VpdmVyLgorICAgICAgICAtIChkb3VibGUpaW50
ZXJ2YWw7CisgICAgKi8KKyAgICBIUkVTVUxUIHNldE1pbmltdW1UaW1lckludGVydmFsKFtpbl0g
ZG91YmxlIGludGVydmFsKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
V2ViS2l0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dl
YktpdC5pZGwJKHJldmlzaW9uIDc4NjE0KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9XZWJLaXQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsMyArMzAxLDQgQEAgbGlicmFyeSBX
ZWJLaXQKICAgICAgICAgW2RlZmF1bHRdIGludGVyZmFjZSBJV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOwogICAgIH0KIH0KKwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzg2MTUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0wMi0xNSAgS2VubmV0aCBSdXNzZWxsICA8
a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWxsb3cgY29udHJvbGxpbmcgbWluaW11bSBET01UaW1lciBpbnRlcnZhbCBvbiBh
IHBlci1wYWdlIGJhc2lzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NDMxMgorCisgICAgICAgIEltcGxlbWVudGVkIG5ldyBtZXRob2Qgc2V0TWluaW11
bVRpbWVySW50ZXJ2YWwgaW4KKyAgICAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIgZm9yIGFsbCBw
b3J0cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKHNldE1pbmltdW1UaW1lckludGVydmFsQ2FsbGJhY2spOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpy
ZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNwcDoK
KyAgICAgICAgKHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJlc2V0V2Vi
Vmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlBh
Z2U6OnJlc2V0U2V0dGluZ3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1p
bmltdW1UaW1lckludGVydmFsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRU
ZXN0Q29udHJvbGxlclF0Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcDoKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9s
bGVyV2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbCk6CisKIDIwMTEtMDItMTUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4
NjE0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTI2LDYgKzE5MjYsMjAgQEAgc3RhdGljIGJvb2wgc2V0R2xvYmFs
RmxhZ0NhbGxiYWNrKEpTQ29udAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgSlNWYWx1
ZVJlZiBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGRvdWJsZSBtaW5pbXVtID0gSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICBBU1NF
UlQoISpleGNlcHRpb24pOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwobWlu
aW11bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisK
IHN0YXRpYyB2b2lkIGxheW91dFRlc3RDb250cm9sbGVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RS
ZWYgb2JqZWN0KQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0
KSk7CkBAIC0yMDczLDYgKzIwODcsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6CiAgICAgICAgIHsgInNldEljb25EYXRhYmFzZUVuYWJsZWQiLCBzZXRJY29uRGF0
YWJhc2VFbmFibGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0SmF2YVNjcmlwdFBy
b2ZpbGluZ0VuYWJsZWQiLCBzZXRKYXZhU2NyaXB0UHJvZmlsaW5nRW5hYmxlZENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWlu
RnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwiLCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlv
bkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzg2MTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZpZXdIZWlnaHQ7CiAKKyAgICB2b2lkIHNldE1pbmlt
dW1UaW1lckludGVydmFsKGRvdWJsZSk7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIoY29uc3Qgc3RkOjpzdHJpbmcmIHRlc3RQYXRoT3JVUkwsIGNvbnN0IHN0ZDo6c3RyaW5n
JiBleHBlY3RlZFBpeGVsSGFzaCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4NjE0
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbiIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KTsKICAgICBiaW5kTWV0aG9kKCJzZXRJY29uRGF0YWJhc2VFbmFibGVkIiwgJkxheW91dFRlc3RD
b250cm9sbGVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRK
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRK
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50
ZXJ2YWwpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbik7CkBAIC0xNTkzLDMgKzE1OTQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
aGFzU3BlbGxpbmdNYQogICAgICAgICByZXR1cm47CiAgICAgcmVzdWx0LT5zZXQobV9zaGVsbC0+
d2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uU3RhcnRIYXNTcGVsbGluZ01hcmtlckZv
cihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBhcmd1bWVudHNbMV0udG9JbnQzMigpKSk7CiB9CisK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
cmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1
bWVudHNbMF0uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2hlbGwtPndlYlZp
ZXcoKS0+c2V0dGluZ3MoKS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoYXJndW1lbnRzWzBdLnRv
RG91YmxlKCkpOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3ODYxNCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNSw2ICszMzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrZXJUZXh0Rm9yTGlz
dEl0ZW0oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaGFz
U3BlbGxpbmdNYXJrZXIoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisg
ICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CisKIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJl
IG5vdCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4o
Ym9vbCBmcm96ZW4pIHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0KSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9u
IDc4NjE0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjI2LDggKzEyMjYsMTEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6
cmVzZXQoKQogICAgIG1fd2luZG93UmVjdCA9IFdlYlJlY3QoKTsKICAgICBtX3BhaW50UmVjdCA9
IFdlYlJlY3QoKTsKIAotICAgIGlmIChtX3dlYldpZGdldCkKKyAgICBpZiAobV93ZWJXaWRnZXQp
IHsKICAgICAgICAgd2ViVmlldygpLT5tYWluRnJhbWUoKS0+c2V0TmFtZShXZWJTdHJpbmcoKSk7
CisgICAgICAgIC8vIEZJWE1FOiBjaGFuZ2UgdG8gdXNlIHdlYmtpdF9zdXBwb3J0OjpGb3JlZ3Jv
dW5kVGFiVGltZXJJbnRlcnZhbCBvbmNlIHRoYXQgbGFuZHMuCisgICAgICAgIHdlYlZpZXcoKS0+
c2V0dGluZ3MoKS0+c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC4wMDQpOworICAgIH0KIH0KIAog
dm9pZCBXZWJWaWV3SG9zdDo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29s
IGVuYWJsZWQpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRlclRyZWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJl
ZS5jcHAJKHJldmlzaW9uIDc4NjE0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBS
ZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM1LDYgKzQzNSw3IEBAIHN0YXRpYyB2
b2lkIHJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWwKICAgICBnX29iamVjdF9zZXQoR19PQkpF
Q1QoaW5zcGVjdG9yKSwgImphdmFzY3JpcHQtcHJvZmlsaW5nLWVuYWJsZWQiLCBGQUxTRSwgTlVM
TCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2ViVmlldywgMS4wKTsK
KyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1pbmltdW1UaW1lckludGVydmFsKHdl
YlZpZXcsIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVy
dmFsKCkpOwogCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlTGlzdHMoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRl
c3RDb250cm9sbGVyR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA3ODYxNCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg4MCwzICs4ODAsOSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRT
ZXJpYWxpemVICiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBpZiBuZWVkZWQgZm9yIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDc1OC4KIH0KKwordm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlIG1pbmltdW1U
aW1lckludGVydmFsKQoreworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0azo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwod2ViVmlldywgbWluaW11bVRpbWVySW50ZXJ2
YWwpOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQkocmV2aXNpb24gNzg2MTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNiArMTAxNyw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbW3dlYlZpZXcgdW5kb01hbmFnZXJd
IHJlbW92ZUFsbEFjdGlvbnNdOwogICAgIFtXZWJWaWV3IF9yZW1vdmVBbGxVc2VyQ29udGVudEZy
b21Hcm91cDpbd2ViVmlldyBncm91cE5hbWVdXTsKICAgICBbW3dlYlZpZXcgd2luZG93XSBzZXRB
dXRvZGlzcGxheTpOT107CisgICAgW3dlYlZpZXcgX3NldE1pbmltdW1UaW1lckludGVydmFsOltX
ZWJWaWV3IF9kZWZhdWx0TWluaW11bVRpbWVySW50ZXJ2YWxdXTsKIAogICAgIHJlc2V0RGVmYXVs
dHNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNzg2MTQpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMDMsMyArMTAwMyw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFNlcmlhbGl6ZUgKIHsKICAgICBbV2ViVmlldyBfc2V0TG9hZFJlc291cmNlc1Nlcmlh
bGx5OnNlcmlhbGl6ZV07CiB9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmlt
dW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKK3sKKyAgICBbW21h
aW5GcmFtZSB3ZWJWaWV3XSBfc2V0TWluaW11bVRpbWVySW50ZXJ2YWw6bWluaW11bVRpbWVySW50
ZXJ2YWxdOworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRy
ZWVRdC5jcHAJKHJldmlzaW9uIDc4NjE0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVt
cFJlbmRlclRyZWVRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsOCBAQCB2b2lk
IFdlYlBhZ2U6OnJlc2V0U2V0dGluZ3MoKQogICAgIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11bVBh
Z2VzSW5DYWNoZSgwKTsgLy8gcmVzZXQgdG8gZGVmYXVsdAogICAgIHNldHRpbmdzKCktPnNldFVz
ZXJTdHlsZVNoZWV0VXJsKFFVcmwoKSk7IC8vIHJlc2V0IHRvIGRlZmF1bHQKIAorICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCh0aGlzLCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6ZGVmYXVsdE1pbmltdW1UaW1lckludGVydmFsKCkpOworCiAgICAg
bV9wZW5kaW5nR2VvbG9jYXRpb25SZXF1ZXN0cy5jbGVhcigpOwogfQogCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2
aXNpb24gNzg2MTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM2LDUgKzgzNiwxMCBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjphZGRVUkxUb1JlZGlyCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmFkZFVSTFRvUmVkaXJlY3Qob3JpZ2luLCBkZXN0aW5hdGlvbik7CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVt
VGltZXJJbnRlcnZhbCkKK3sKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TWluaW11
bVRpbWVySW50ZXJ2YWwobV9kcnQtPndlYlBhZ2UoKSwgbWluaW11bVRpbWVySW50ZXJ2YWwpOwor
fQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bWF4Vmlld1dpZHRoID0g
ODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQg
PSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oCShyZXZpc2lvbiA3ODYxNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw4
IEBAIHB1YmxpYyBzbG90czoKICAgICBRU3RyaW5nIHBhZ2VQcm9wZXJ0eShjb25zdCBRU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNo
ZWV0KGNvbnN0IFFTdHJpbmcmIHNvdXJjZUNvZGUpOwogCisgICAgdm9pZCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbChkb3VibGUpOworCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgcHJvY2Vzc1dv
cmsoKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwCShyZXZpc2lvbiA3ODYxNCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Niw2ICs4NjYsMTAgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIGlmICghd2ViVmlld1ByaXZhdGUp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGRvdWJsZSBtaW5pbXVtSW50ZXJ2YWwgPSAwOworICAg
IGlmIChTVUNDRUVERUQod2ViVmlld1ByaXZhdGUtPmRlZmF1bHRNaW5pbXVtVGltZXJJbnRlcnZh
bCgmbWluaW11bUludGVydmFsKSkpCisgICAgICAgIHdlYlZpZXdQcml2YXRlLT5zZXRNaW5pbXVt
VGltZXJJbnRlcnZhbChtaW5pbXVtSW50ZXJ2YWwpOworCiAgICAgQ09NUHRyPElXZWJJbnNwZWN0
b3I+IGluc3BlY3RvcjsKICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXdQcml2YXRlLT5pbnNwZWN0
b3IoJmluc3BlY3RvcikpKQogICAgICAgICBpbnNwZWN0b3ItPnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKEZBTFNFKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRU
ZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gNzg2MTQpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDMwLDMgKzE0MzAsMTYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0U2VyaWFsaXplSAogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CisKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVt
VGltZXJJbnRlcnZhbCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAgaWYg
KEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDT01QdHI8SVdlYlZpZXdQcml2YXRlPiB2aWV3UHJpdmF0ZShRdWVyeSwgd2ViVmlldyk7Cisg
ICAgaWYgKCF2aWV3UHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdmlld1ByaXZhdGUt
PnNldE1pbmltdW1UaW1lckludGVydmFsKG1pbmltdW1UaW1lckludGVydmFsKTsKK30KSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc4NjE1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDItMTUgIEtlbm5ldGggUnVzc2VsbCAgPGtickBn
b29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFsbG93IGNvbnRyb2xsaW5nIG1pbmltdW0gRE9NVGltZXIgaW50ZXJ2YWwgb24gYSBwZXIt
cGFnZSBiYXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTQzMTIKKworICAgICAgICAqIGZhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZh
bC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1y
ZXNldC1wYXJ0LTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1l
ci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgICAtIENoYWluZWQgdGVzdHMgKHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIHJ1bi13
ZWJraXQtdGVzdHMKKyAgICAgICAgICAgIGhhcm5lc3Mgd2lsbCBydW4gdGhlbSBzZXF1ZW50aWFs
bHksIHdoaWNoIGlzIGEgcmVhc29uYWJseSBnb29kCisgICAgICAgICAgICBhc3N1bXB0aW9uKSB3
aGljaCB2ZXJpZnkgdGhhdCB0aGUgbWluaW11bSB0aW1lciBpbnRlcnZhbCBpcworICAgICAgICAg
ICAgcmVzZXQgYmV0d2VlbiB0ZXN0cy4KKyAgICAgICAgKiBmYXN0L2RvbS90aW1lci1pbmNyZWFz
ZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS90
aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICAgLSBWZXJp
ZmllcyB0aGF0IGluY3JlYXNpbmcgdGhlIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwgY2F1c2VzCisg
ICAgICAgICAgICBmYXN0IHRpbWVycyB0byBydW4gc2xvd2x5LgorICAgICAgICAqIGZhc3QvZG9t
L3RpbWVyLWluY3JlYXNlLXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1t
aW4taW50ZXJ2YWwuaHRtbDogQWRkZWQuCisgICAgICAgICAgLSBWZXJpZmllcyB0aGF0IGRlY3Jl
YXNpbmcgdGhlIG1pbmltdW0gdGltZXIgaW50ZXJ2YWwgY2F1c2VzCisgICAgICAgICAgICBwcmV2
aW91c2x5IHNsb3dlZC1kb3duIHRpbWVycyB0byBiZSByZWV2YWx1YXRlZCBpbW1lZGlhdGVseS4K
KwogMjAxMS0wMi0xNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vdGltZXItaW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1p
bi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVz
ZXQtcGFydC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNT
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWludGVy
dmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtbWluLWlu
dGVydmFsLWFuZC1yZXNldC1wYXJ0LTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKSB7CisgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBlbGVtZW50LnRl
eHRDb250ZW50ID0gbXNnOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJi
ciIpKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5
b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIC8vIE1ha2UgdGltZXJzIHJ1biBu
byBtb3JlIG9mdGVuIHRoYW4gdHdpY2UgYSBzZWNvbmQuCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoMC41KTsKKworICAgIC8vIFBhcnQgMiBvZiB0aGlz
IHRlc3QgKHdoaWNoIHdpbGwgbGlrZWx5IGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5CisgICAgLy8g
YWZ0ZXIgdGhpcyBvbmUgYnkgdGhlIGhhcm5lc3MpIHZlcmlmaWVzIHRoYXQgdGhlIG1pbmltdW0g
dGltZXIKKyAgICAvLyBpbnRlcnZhbCBpcyByZXNldCBiZXR3ZWVuIHRlc3RzLgorCisgICAgbG9n
KCJQQVNTIik7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWlu
Y3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVzZXQtcGFydC0yLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwt
YW5kLXJlc2V0LXBhcnQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtYW5kLXJlc2V0LXBhcnQtMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQtcmVz
ZXQtcGFydC0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXIt
aW5jcmVhc2UtbWluLWludGVydmFsLWFuZC1yZXNldC1wYXJ0LTIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC1hbmQt
cmVzZXQtcGFydC0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1zZykgeworICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
IG1zZzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisK
K3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBmYXN0VGltZW91dEhhbmRsZXIoKSB7CisgICAgKytj
b3VudDsKKyAgICBzZXRUaW1lb3V0KGZhc3RUaW1lb3V0SGFuZGxlciwgMSk7Cit9CisKK2Z1bmN0
aW9uIHNsb3dUaW1lb3V0SGFuZGxlcigpIHsKKyAgICAvLyBOb3RlOiB0aGUgY291bnQgdGhyZXNo
b2xkIGlzIHRpZWQgc29tZXdoYXQgdG8gdGhlCisgICAgLy8gbWF4VGltZXJOZXN0aW5nTGV2ZWwg
aW4gRE9NVGltZXIuY3BwLgorICAgIGlmIChjb3VudCA+IDEwKQorICAgICAgICBsb2coIlBBU1Mi
KTsKKyAgICBlbHNlCisgICAgICAgIGxvZygiRkFJTCAtLSB0aW1lb3V0IHJhbiAiICsgY291bnQg
KyAiIHRpbWVzIik7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgIGxvZygiVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBMYXlvdXRUZXN0Q29u
dHJvbGxlciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKworICAgIC8vIFRpbWVycyBzaG91bGQgYmUgcnVubmluZyBhdCBmdWxsIHNwZWVkLCBu
b3QgYXQgdGhlIHRocm90dGxlZAorICAgIC8vIHJhdGUgc2V0IGJ5IHBhcnQgMSBvZiB0aGlzIHRl
c3QuCisKKyAgICBzZXRUaW1lb3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0
VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRl
cnZhbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS90
aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1lci1p
bmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS90aW1lci1pbmNyZWFzZS1taW4taW50ZXJ2YWwuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNlLW1pbi1pbnRlcnZhbC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAwOworZnVuY3Rp
b24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0VGltZW91dChm
YXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91dEhhbmRsZXIo
KSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNvbWV3aGF0IHRv
IHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNwcC4KKyAgICBp
ZiAoY291bnQgPCAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQorICAgICAgICBs
b2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsb2coIlRo
aXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBNYWtlIHRp
bWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIHR3aWNlIGEgc2Vjb25kLgorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldE1pbmltdW1UaW1lckludGVydmFsKDAuNSk7CisKKyAgICBzZXRUaW1l
b3V0KHNsb3dUaW1lb3V0SGFuZGxlciwgMTAwMCk7CisgICAgc2V0VGltZW91dChmYXN0VGltZW91
dEhhbmRsZXIsIDEpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS90aW1l
ci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFz
ZS1taW4taW50ZXJ2YWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vdGltZXItaW5jcmVhc2UtdGhlbi1kZWNyZWFzZS1taW4taW50ZXJ2YWwtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BBU1MKKworCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZh
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3RpbWVyLWluY3JlYXNl
LXRoZW4tZGVjcmVhc2UtbWluLWludGVydmFsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS90aW1lci1pbmNyZWFzZS10aGVuLWRlY3JlYXNlLW1pbi1pbnRlcnZhbC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBtc2c7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgY291bnQgPSAw
OworZnVuY3Rpb24gZmFzdFRpbWVvdXRIYW5kbGVyKCkgeworICAgICsrY291bnQ7CisgICAgc2V0
VGltZW91dChmYXN0VGltZW91dEhhbmRsZXIsIDEpOworfQorCitmdW5jdGlvbiBzbG93VGltZW91
dEhhbmRsZXIoKSB7CisgICAgLy8gTm90ZTogdGhlIGNvdW50IHRocmVzaG9sZCBpcyB0aWVkIHNv
bWV3aGF0IHRvIHRoZQorICAgIC8vIG1heFRpbWVyTmVzdGluZ0xldmVsIGluIERPTVRpbWVyLmNw
cC4KKyAgICBpZiAoY291bnQgPiAxMCkKKyAgICAgICAgbG9nKCJQQVNTIik7CisgICAgZWxzZQor
ICAgICAgICBsb2coIkZBSUwgLS0gdGltZW91dCByYW4gIiArIGNvdW50ICsgIiB0aW1lcyIpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsb2coIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgTGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAv
LyBNYWtlIHRpbWVycyBydW4gbm8gbW9yZSBvZnRlbiB0aGFuIG9uY2UgcGVyIHNlY29uZC4KKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRNaW5pbXVtVGltZXJJbnRlcnZhbCgxLjApOworCisg
ICAgc2V0VGltZW91dChzbG93VGltZW91dEhhbmRsZXIsIDUwMCk7CisgICAgc2V0VGltZW91dChm
YXN0VGltZW91dEhhbmRsZXIsIDEpOworCisgICAgLy8gQWxsb3cgdGltZXJzIHRvIHJ1biBxdWlj
a2x5IGFnYWluLgorICAgIC8vIElmIHRoaXMgZG9lc24ndCBjYXVzZSB0aW1lcnMgdG8gZ2V0IHJl
LWV2YWx1YXRlZCBpbW1lZGlhdGVseSwKKyAgICAvLyB0aGUgZmFzdCB0aW1lb3V0IGhhbmRsZXIg
d29uJ3QgZ2V0IGNhbGxlZCBmb3IgdXAgdG8gYSBzZWNvbmQsCisgICAgLy8gd2hpY2ggd291bGQg
bGVhZCB0byBwb29yIHJlc3BvbnNpdmVuZXNzLgorICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dE1pbmltdW1UaW1lckludGVydmFsKDAuMDA0KTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>